<?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>149053</bug_id>
          
          <creation_ts>2015-09-10 18:24:12 -0700</creation_ts>
          <short_desc>Add a graphics benchmark</short_desc>
          <delta_ts>2015-10-12 18:50:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Animations</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>149691</dependson>
    
    <dependson>150052</dependson>
    
    <dependson>150053</dependson>
    
    <dependson>150054</dependson>
    
    <dependson>150055</dependson>
    
    <dependson>150059</dependson>
    
    <dependson>150060</dependson>
    
    <dependson>150066</dependson>
    
    <dependson>150067</dependson>
    
    <dependson>150071</dependson>
    
    <dependson>150073</dependson>
    
    <dependson>150075</dependson>
    
    <dependson>150076</dependson>
    
    <dependson>150078</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jonlee</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1125114</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-10 18:24:12 -0700</bug_when>
    <thetext>The goals are:

-- Can be publicly released.
-- Can track its results with the Perf Monitor.
-- Can be expanded to include new tests easily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125320</commentid>
    <comment_count>1</comment_count>
      <attachid>261037</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-11 17:28:40 -0700</bug_when>
    <thetext>Created attachment 261037
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126449</commentid>
    <comment_count>2</comment_count>
      <attachid>261323</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-16 13:46:45 -0700</bug_when>
    <thetext>Created attachment 261323
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126452</commentid>
    <comment_count>3</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-16 13:51:40 -0700</bug_when>
    <thetext>Added options to
1. Fix the test particles after the warmup period.
2. Use the measured FPS instead of using the Kalman&apos;s filtered FPS.

Use the Student&apos;s t distribution to calculate the confidence interval delta for the sampled data at 95% confidence level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126472</commentid>
    <comment_count>4</comment_count>
      <attachid>261323</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-09-16 14:40:04 -0700</bug_when>
    <thetext>Comment on attachment 261323
Patch

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

&gt; PerformanceTests/ChangeLog:45
&gt; +        * Animometer/bouncing-canvas-images.html: Added.
&gt; +        * Animometer/bouncing-canvas-shapes.html: Added.
&gt; +        * Animometer/bouncing-images.html: Added.
&gt; +        * Animometer/bouncing-shapes.html: Added.
&gt; +        * Animometer/bouncing-svg-images.html: Added.
&gt; +        * Animometer/bouncing-svg-shapes.html: Added.

I think the tests should go into their own subdirectory, and be as self-contained as possible. We might end up with multiple sets of tests eventually.

&gt; PerformanceTests/Animometer/bouncing-canvas-images.html:12
&gt; +  &lt;script src=&quot;resources/main.js&quot;&gt;&lt;/script&gt;
&gt; +  &lt;script src=&quot;resources/statistics.js&quot;&gt;&lt;/script&gt;

I don&apos;t think tests should pull in main.js.

You may want a utilities.js for tests. I don&apos;t know why they need statistics.js.

&gt; PerformanceTests/Animometer/bouncing-svg-images.html:4
&gt; +  &lt;link rel=&quot;stylesheet&quot; href=&quot;resources/benchmark.css&quot;&gt;

I don&apos;t think tests should pull in any CSS from the harness.

&gt; PerformanceTests/Animometer/resources/benchmark.js:63
&gt; +        var currentTime = new Date().getTime();

performance.now()?

&gt; PerformanceTests/Animometer/resources/benchmark.js:134
&gt; +Benchmark.prototype = {
&gt; +    parseParameters : function() {
&gt; +        var query = window.location.search.substr(1);
&gt; +        var result = {};
&gt; +        query.split(&quot;&amp;&quot;).forEach(function(part) {
&gt; +            var item = part.split(&quot;=&quot;);
&gt; +            result[item[0]] = decodeURIComponent(item[1]);
&gt; +        });
&gt; +      return result;
&gt; +    },
&gt; +    // Called from the load event listener or from this.run()

I think this should go into its own file. Separate &quot;harness&quot; code from &quot;benchmark&quot; code.

&gt; PerformanceTests/Animometer/resources/bouncing-canvas-images.js:9
&gt; +function BouncingCanvasImage(stage) {
&gt; +    BouncingParticle.call(this, stage);
&gt; +    this._context = stage.context;
&gt; +    this._imageElement = stage.imageElement;
&gt; +}
&gt; +
&gt; +BouncingCanvasImage.prototype = Object.create(BouncingParticle.prototype);
&gt; +BouncingCanvasImage.prototype.constructor = BouncingCanvasImage;
&gt; +

Each of these files should go into a directory along with its html and resources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127358</commentid>
    <comment_count>5</comment_count>
      <attachid>261567</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-18 20:53:14 -0700</bug_when>
    <thetext>Created attachment 261567
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127366</commentid>
    <comment_count>6</comment_count>
      <attachid>261323</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-18 21:24:13 -0700</bug_when>
    <thetext>Comment on attachment 261323
Patch

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

&gt;&gt; PerformanceTests/Animometer/bouncing-canvas-images.html:12
&gt;&gt; +  &lt;script src=&quot;resources/statistics.js&quot;&gt;&lt;/script&gt;
&gt; 
&gt; I don&apos;t think tests should pull in main.js.
&gt; 
&gt; You may want a utilities.js for tests. I don&apos;t know why they need statistics.js.

I restructured the test in the following hierarchy:

resources/  (includes the shared resources and scripts between the runner and the tests)
runner/ (includes the test harness and its resources)
   animometer.html (the  test harness page)
   resources/  (includes the resources and scripts which are used by the  test harness)
tests/
   resources/ (includes the shared resources and the scripts which are needed to run the benchmark for every individual test)
   bouncing-particles/ (includes all the bouncing particles based test pages)
      resources/ (includes all the scripts which are used by the bouncing particles based test pages)
   text/ (includes all the text based test pages)
      resources/ (includes all the scripts which are used by the text based test pages)

&gt;&gt; PerformanceTests/Animometer/bouncing-svg-images.html:4
&gt;&gt; +  &lt;link rel=&quot;stylesheet&quot; href=&quot;resources/benchmark.css&quot;&gt;
&gt; 
&gt; I don&apos;t think tests should pull in any CSS from the harness.

There two css files right now:

Animometer/tests/resources/benchmark.css (which is used by all the tests)
Animometer/runner/resources/animometer.css (which us used by the test harness)

&gt;&gt; PerformanceTests/Animometer/resources/benchmark.js:63
&gt;&gt; +        var currentTime = new Date().getTime();
&gt; 
&gt; performance.now()?

Done.

&gt;&gt; PerformanceTests/Animometer/resources/benchmark.js:134
&gt;&gt; +    // Called from the load event listener or from this.run()
&gt; 
&gt; I think this should go into its own file. Separate &quot;harness&quot; code from &quot;benchmark&quot; code.

Done. It is moved to Animometer/tests/resources/utilities.js.

&gt;&gt; PerformanceTests/Animometer/resources/bouncing-canvas-images.js:9
&gt;&gt; +
&gt; 
&gt; Each of these files should go into a directory along with its html and resources.

All the bouncing particles based tests are now in the directory Animometer/tests/bouncing-particles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127367</commentid>
    <comment_count>7</comment_count>
      <attachid>261571</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-18 21:25:28 -0700</bug_when>
    <thetext>Created attachment 261571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127682</commentid>
    <comment_count>8</comment_count>
      <attachid>261666</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-21 11:26:29 -0700</bug_when>
    <thetext>Created attachment 261666
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127683</commentid>
    <comment_count>9</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-21 11:27:53 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created attachment 261666 [details]
&gt; Patch

This patch forces repainting all the text in the layering-text.html test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128173</commentid>
    <comment_count>10</comment_count>
      <attachid>261783</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-22 17:27:22 -0700</bug_when>
    <thetext>Created attachment 261783
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128175</commentid>
    <comment_count>11</comment_count>
      <attachid>261784</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-22 17:30:20 -0700</bug_when>
    <thetext>Created attachment 261784
results-worst-5-percent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128178</commentid>
    <comment_count>12</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-22 17:36:56 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created attachment 261783 [details]
&gt; Patch

This patch include the worst 5% measurement. It shows how smooth the test is running. The bigger the difference between its value and the average is, the more jagged the rendering will be. The final score should be penalized by this how big this difference is for every individual test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128407</commentid>
    <comment_count>13</comment_count>
      <attachid>261849</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-23 16:56:28 -0700</bug_when>
    <thetext>Created attachment 261849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128408</commentid>
    <comment_count>14</comment_count>
      <attachid>261849</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-23 17:01:21 -0700</bug_when>
    <thetext>Comment on attachment 261849
Patch

This patch adds a score column for every test. See the picture results-individual-scores.png. The test score calculation is:

test_score = geometric_mean([sample_mean, average_worst_5_percent]).

I fixed also the final score calculation to be:

final_score = geometric_mean(test_scores)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128409</commentid>
    <comment_count>15</comment_count>
      <attachid>261850</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-23 17:03:18 -0700</bug_when>
    <thetext>Created attachment 261850
results-individual-scores</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128423</commentid>
    <comment_count>16</comment_count>
      <attachid>261856</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-23 18:14:30 -0700</bug_when>
    <thetext>Created attachment 261856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128427</commentid>
    <comment_count>17</comment_count>
      <attachid>261858</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-23 18:35:21 -0700</bug_when>
    <thetext>Created attachment 261858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128833</commentid>
    <comment_count>18</comment_count>
      <attachid>261858</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-09-25 18:10:11 -0700</bug_when>
    <thetext>Comment on attachment 261858
Patch

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

This patch is way too huge to review. I&apos;m not sure what most things do. The best I can do is give some comments and rubber-stamp.

If you want to address the comments and then split it into smaller patches, then we can probably do a more careful review.

&gt; PerformanceTests/Animometer/resources/algorithm.js:19
&gt; +    _parentIndex : function(i) {
&gt; +        return i &gt; 0 ? Math.floor((i - 1) / 2) : -1;
&gt; +    },
&gt; +    _leftIndex : function(i) {

In general, WebKit&apos;s JS programming style is to not put a space between the symbol name and the definition. And to put the { on the next line.

_parentIndex: function(i)
{

},

Then a blank line to the next thing in the prototype.

(I won&apos;t repeat this comment, but it obviously applies to all files)

&gt; PerformanceTests/Animometer/resources/algorithm.js:25
&gt; +    // Returns the child index that may violate the heap property at index i

Remember to end comments with a .
(I won&apos;t repeat this everywhere)

&gt; PerformanceTests/Animometer/resources/algorithm.js:39
&gt; +        return !this._size ? NaN : this._values[0];

This would make more sense as
return this._size ? this._values[0] : NaN;

&gt; PerformanceTests/Animometer/resources/main.js:47
&gt; +    width : function() {
&gt; +        return this.left + this.right;
&gt; +    },
&gt; +    height : function() {
&gt; +        return this.top + this.bottom;
&gt; +    }

You could make these getters.

get width()
{
  return this.left + this.right;
}

Then you can just use point.width rather than insets.width().

Same applies to the Point class, and other stuff in the patch.

&gt; PerformanceTests/Animometer/resources/main.js:80
&gt; +SimplePromise.prototype.then = function (callback) {
&gt; +    if (this._callback)
&gt; +        throw &quot;SimplePromise doesn&apos;t support multiple calls to then&quot;;
&gt; +    this._callback = callback;
&gt; +    this._chainedPromise = new SimplePromise;
&gt; +    
&gt; +    if (this._resolved)
&gt; +        this.resolve(this._resolvedValue);
&gt; +
&gt; +    return this._chainedPromise;
&gt; +}
&gt; +
&gt; +SimplePromise.prototype.resolve = function (value) {
&gt; +    if (!this._callback) {
&gt; +        this._resolved = true;
&gt; +        this._resolvedValue = value;
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    var result = this._callback(value);
&gt; +    if (result instanceof SimplePromise) {
&gt; +        var chainedPromise = this._chainedPromise;
&gt; +        result.then(function (result) { chainedPromise.resolve(result); });
&gt; +    } else
&gt; +        this._chainedPromise.resolve(result);
&gt; +}

Could you use the system Promises if they exist?

&gt; PerformanceTests/Animometer/resources/main.js:103
&gt; +function ProgressBar(element, ranges) {
&gt; +    this.element = element;
&gt; +    this.ranges = ranges;
&gt; +    this.currentRange = 0;
&gt; +}
&gt; +
&gt; +ProgressBar.prototype = {
&gt; +    _progressToPercent : function(progress) {
&gt; +        return progress * (100 / this.ranges);
&gt; +    },
&gt; +    incRange : function() {
&gt; +        ++this.currentRange;
&gt; +    },
&gt; +    setPos : function(progress) {
&gt; +        this.element.style.width = this._progressToPercent(this.currentRange + progress) + &quot;%&quot;;
&gt; +    }
&gt; +}

This is a pretty weird class.

It&apos;s not really a progress bar. It&apos;s something that sets the width of a specified element.

&gt; PerformanceTests/Animometer/resources/main.js:115
&gt; +        for (var title = 0; title &lt; titles.length; ++title) {

You can write this as:

titles.forEach(function (title) {
  // no need to call titles[title] any more

});

&gt; PerformanceTests/Animometer/resources/main.js:117
&gt; +            th.innerHTML = titles[title].text;

Use textContent instead.
th.textContent = title.text;

&gt; PerformanceTests/Animometer/resources/main.js:139
&gt; +            for (var i = 0, len = queue.length; i &lt; len; ++i) {

Seems like this could be a forEach too.

&gt; PerformanceTests/Animometer/resources/main.js:156
&gt; +                for (var i = 0; i &lt; list.length; ++i)

And this.

&gt; PerformanceTests/Animometer/resources/main.js:170
&gt; +    _showSamples : function(row, testName, axises, samples, samplingTimeOffset) {

Should be axes not axises.

&gt; PerformanceTests/Animometer/resources/main.js:176
&gt; +            window.showGraph(testName, axises, samples, samplingTimeOffset);

Seems strange that you install showGraph on the global object. Isn&apos;t there a controller object of some kind?

&gt; PerformanceTests/Animometer/resources/main.js:179
&gt; +        button.textContent = &quot;Click...&quot;;

Maybe the label should be &quot;Show Graph&quot;, or &quot;Graph&quot;

&gt; PerformanceTests/Animometer/resources/main.js:197
&gt; +        for (var measure = 0; measure &lt; sampler.experiments.length; ++measure) {
&gt; +            this._showValue(row, testName, sampler.experiments[measure].mean());
&gt; +            this._showValue(row, testName, sampler.experiments[measure].confidenceIntervalDelta(95));
&gt; +            this._showValue(row, testName, sampler.experiments[measure].concern(5));
&gt; +            this._showValue(row, testName, sampler.experiments[measure].standardDeviation());
&gt; +            this._showValue(row, testName, sampler.experiments[measure].percentage());
&gt; +            axises.push(titles[measure + 1].text);
&gt; +        }

It&apos;s a shame you can&apos;t replace this with a forEach, because you use the loop counter to look up the title.

As for the delta and concern values, I suggest these be extracted out into some form of global constant at the top of the file.

this._showValue(row, testName, sampler.experiments[measure].concern(INITIAL_CONCERN));

This same comment applies in a few places.

&gt; PerformanceTests/Animometer/resources/main.js:210
&gt; +        for (var testName in suiteSamplers) {

Definitely use suiteSamplers.forEach(function (testName) {.... here.

You&apos;ll have to .bind(this), but I still think this is a better overall style.

&gt; PerformanceTests/Animometer/resources/main.js:229
&gt; +            for (var suiteName in iterationsSamplers[i]) {

And again.

&gt; PerformanceTests/Animometer/runner/resources/animometer.css:16
&gt; +main {
&gt; +    display: block;
&gt; +    position: absolute;
&gt; +    width: 800px;
&gt; +    height: 600px;
&gt; +    top: 50%;
&gt; +    left: 50%;
&gt; +    margin-top: -321px;
&gt; +    margin-left: -421px;
&gt; +    padding: 15px;

Seems like you&apos;re doing this to center the main element in the page. Just use flexbox.

html, body {
  height: 100%;
}

body {
  display: flex;
  align-items: center;
  justify-content: center;
}

main {
  width: 800px;
  height: 600px;
}

&gt; PerformanceTests/Animometer/runner/resources/animometer.js:105
&gt; +    graph(&quot;#graphContainer&quot;, new Point(700, 400), new Insets(20, 50, 20, 50), axises, samples, samplingTimeOffset);

This code seems very dependent on the sizes given in the CSS file.

&gt; PerformanceTests/Animometer/runner/resources/benchmark-runner.js:72
&gt; +    frame.style.width = &quot;800px&quot;;
&gt; +    frame.style.height = &quot;600px&quot;;
&gt; +    frame.style.border = &quot;0px none&quot;;
&gt; +    frame.style.position = &quot;absolute&quot;;

Same here. Why can&apos;t you do this in the CSS?

&gt; PerformanceTests/Animometer/runner/resources/benchmark-runner.js:151
&gt; +    var self = this;
&gt; +    return state.prepareCurrentTest(this, this._frame).then(function(prepareReturnValue) {
&gt; +        return self._runTestAndRecordResults(state);
&gt; +    });

Use bind.

return state.prepareCurrentTest(this, this._frame).then(function(prepareReturnValue) {
   return this._runTestAndRecordResults(state);
 }.bind(this));

&gt; PerformanceTests/Animometer/runner/resources/graph.js:3
&gt; +    var element = element = document.querySelector(selector);

Did you mean to have that second element there?

&gt; PerformanceTests/Animometer/runner/resources/graph.js:5
&gt; +    while (element.firstChild)
&gt; +        element.removeChild(element.firstChild);

Why not call element.textContent = null; ?

&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js:40
&gt; +    var imageSrc = options[&quot;imageSrc&quot;] || &quot;resources/yin-yang.svg&quot;;
&gt; +    
&gt; +    var imageElements = document.getElementsByClassName(&quot;hidden&quot;);
&gt; +    console.assert(imageElements.length);
&gt; +        
&gt; +    for (var i = 0; i &lt; imageElements.length; ++i) {
&gt; +        if (imageElements[i].getAttribute(&quot;src&quot;) == imageSrc) {
&gt; +            this.imageElement = imageElements[i];
&gt; +            break;
&gt; +        }                                   
&gt; +    }

I think you could probably do this with a single document.querySelector that looks for .hidden and the attribute selector.

You also don&apos;t want the console.log.

&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js:25
&gt; +    default:
&gt; +        this._context.fillStyle = this._color0;
&gt; +        break;
&gt; +

Don&apos;t put the default case first.

&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js:142
&gt; +window.benchmarkClient.create = function(suite, test, options, recordTable, progressBar) {
&gt; +    window.benchmark = new BouncingCanvasShapesBenchmark(suite, test, options, recordTable, progressBar);
&gt; +}

Again, I feel like it would be better to have a single global controller object, and everything else hanging off it.

&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-particles.js:94
&gt; +    this.svgNamespace = &quot;http://www.w3.org/2000/svg&quot;;
&gt; +    this.xlinkNamespace = &quot;http://www.w3.org/1999/xlink&quot;;

These should be globals.

The way you&apos;re doing it here means you&apos;re allocating the string for every instance.

&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-particles.js:116
&gt; +    for(var i = 0; i &lt; this._particles.length; ++i)

forEach opportunity

&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-shapes.js:10
&gt; +    default:
&gt; +        this.element.style.backgroundColor = stage.randomColor();
&gt; +        break;

Don&apos;t put default at the start of the switch.

&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:7
&gt; +    default:

Another default first.

&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:21
&gt; +    switch (stage.clip) {
&gt; +    case &quot;star&quot;:
&gt; +        stage.ensureClipStarIsCreated();    
&gt; +        this.element.setAttribute(&quot;clip-path&quot;, &quot;url(#star-clip)&quot;);
&gt; +        break;
&gt; +    }

There isn&apos;t a point having a switch with only one case and no default. Just make it a conditional.

&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:98
&gt; +    if (typeof this._gadientsCount === &quot;undefined&quot;)
&gt; +        this._gadientsCount = 0;    

Typo.

&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:99
&gt; +    gradient.setAttribute(&quot;id&quot;, &quot;gadient-&quot; + ++this._gadientsCount);

And here.

&gt; PerformanceTests/Animometer/tests/resources/benchmark.js:65
&gt; +        if (typeof this._referenceTime === &quot;undefined&quot;)

In cases like this, I think it&apos;s ok to simply ask

if (!this._referenceTime)

You can probably initialise it to zero in the constructor to be even more safe.

&gt; PerformanceTests/Animometer/tests/resources/math.js:131
&gt; +function Controller(K, ysp, ulow, uhigh) {

This is a very generic name. What does it actually do?

&gt; PerformanceTests/Animometer/tests/resources/utilities.js:7
&gt; +            if (value[0] == &apos;\&apos;&apos; )

I think you can simply do:

if (value[0] == &quot;&apos;&quot;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129053</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-09-28 12:02:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/22882991&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129605</commentid>
    <comment_count>20</comment_count>
      <attachid>262169</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-30 09:46:08 -0700</bug_when>
    <thetext>Created attachment 262169
[shared]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129606</commentid>
    <comment_count>21</comment_count>
      <attachid>262170</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-30 09:47:34 -0700</bug_when>
    <thetext>Created attachment 262170
[benchmark]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129607</commentid>
    <comment_count>22</comment_count>
      <attachid>262171</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-30 09:47:58 -0700</bug_when>
    <thetext>Created attachment 262171
[stage]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129608</commentid>
    <comment_count>23</comment_count>
      <attachid>262172</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-30 09:48:40 -0700</bug_when>
    <thetext>Created attachment 262172
[bouncing-css-particles]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129609</commentid>
    <comment_count>24</comment_count>
      <attachid>262173</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-30 09:49:06 -0700</bug_when>
    <thetext>Created attachment 262173
[bouncing-canvas-particles]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129610</commentid>
    <comment_count>25</comment_count>
      <attachid>262174</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-30 09:49:26 -0700</bug_when>
    <thetext>Created attachment 262174
[bouncing-svg-particles]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129611</commentid>
    <comment_count>26</comment_count>
      <attachid>262175</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-30 09:49:59 -0700</bug_when>
    <thetext>Created attachment 262175
[text]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129612</commentid>
    <comment_count>27</comment_count>
      <attachid>262176</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-30 09:50:20 -0700</bug_when>
    <thetext>Created attachment 262176
[template]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129613</commentid>
    <comment_count>28</comment_count>
      <attachid>262177</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-30 09:50:40 -0700</bug_when>
    <thetext>Created attachment 262177
[runner]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129616</commentid>
    <comment_count>29</comment_count>
      <attachid>262179</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-30 09:52:09 -0700</bug_when>
    <thetext>Created attachment 262179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129703</commentid>
    <comment_count>30</comment_count>
      <attachid>262175</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-09-30 16:07:02 -0700</bug_when>
    <thetext>Comment on attachment 262175
[text]

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

&gt; PerformanceTests/Animometer/tests/text/resources/layering-text.js:42
&gt; +    &quot;&lt;div id=&apos;id_00&apos; class=&apos;text-layer&apos;&gt;&quot;,
&gt; +        &quot;&lt;h2 id=&apos;id_01&apos;&gt;Customized styles&lt;/h2&gt;&quot;,
&gt; +        &quot;&lt;p id=&apos;id_02&apos;&gt;If you want formatting choices that are not available from the built-in styles, Quick Style sets, and themes, you can create custom styles to suit your needs.&lt;/p&gt;&quot;,
&gt; +        &quot;&lt;p id=&apos;id_03&apos;&gt;The easiest way to create a custom style is to modify a built-in style and then save it as a new style.&lt;/p&gt;&quot;,
&gt; +        &quot;&lt;p id=&apos;id_04&apos;&gt;For example, you might want to format a paragraph of quoted material with a half-inch indent from the left and right margins, single spaced. There is no built-in style to accommodate this, but you can create a custom style by doing the following:&lt;/p&gt;&quot;,
&gt; +        &quot;&lt;ol type=&apos;1&apos; id=&apos;id_05&apos;&gt;&quot;,
&gt; +            &quot;&lt;li id=&apos;id_06&apos;&gt;&lt;p&gt;Click in the paragraph you want to format.&lt;/p&gt;&lt;/li&gt;&quot;,
&gt; +            &quot;&lt;li id=&apos;id_07&apos;&gt;&lt;p&gt;On the &lt;b&gt;Home&lt;/b&gt; tab, click the &lt;b&gt;Paragraph&lt;/b&gt; Dialog Box Launcher.&lt;/p&gt;&lt;/li&gt;&quot;,
&gt; +            &quot;&lt;li id=&apos;id_08&apos;&gt;&lt;p&gt;In the &lt;b&gt;Indentation&lt;/b&gt; section, type &lt;b class=&apos;ocpLiteral&apos;&gt;0.5&apos;&lt;/b&gt; in the &lt;b&gt;Left&lt;/b&gt; and &lt;b&gt;Right&lt;/b&gt; boxes.&lt;/p&gt;&lt;/li&gt;&quot;,
&gt; +            &quot;&lt;li id=&apos;id_09&apos;&gt;&lt;p&gt;In the &lt;b&gt;Spacing&lt;/b&gt; section, in the &lt;b&gt;Line spacing&lt;/b&gt; list, click &lt;b&gt;Single&lt;/b&gt;.&lt;/p&gt;&lt;/li&gt;&quot;,
&gt; +            &quot;&lt;li id=&apos;id_10&apos;&gt;&lt;p&gt;Click &lt;b&gt;OK&lt;/b&gt;.&lt;/p&gt;&lt;/li&gt;&quot;,
&gt; +            &quot;&lt;li id=&apos;id_11&apos;&gt;&lt;p&gt;Right-click in the paragraph, point to &lt;b&gt;Styles&lt;/b&gt;, and then click &lt;b&gt;Save Selection as a New Quick Style&lt;/b&gt;.&lt;/p&gt;&lt;/li&gt;&quot;,
&gt; +            &quot;&lt;li id=&apos;id_12&apos;&gt;&lt;p&gt;In the &lt;b&gt;Name&lt;/b&gt; box, type a name for the style, such as &lt;b&gt;Block quote&lt;/b&gt;. &lt;/p&gt;&lt;/li&gt;&quot;,
&gt; +            &quot;&lt;li id=&apos;id_13&apos;&gt;&lt;p&gt;If you want the style to be included in the gallery of styles on the &lt;b&gt;Home&lt;/b&gt; tab, and if you want the style to be a linked style, click &lt;b&gt;OK&lt;/b&gt;.&lt;/p&gt;&lt;/li&gt;&quot;,
&gt; +            &quot;&lt;li id=&apos;id_14&apos;&gt;&quot;,
&gt; +                &quot;&lt;p id=&apos;id_15&apos;&gt;If you don&apos;t want the style to be included in the gallery, or if you want the style to be either a paragraph or a character style, click &lt;b&gt;Modify&lt;/b&gt; and do one or both of the following:&lt;/p&gt;&quot;,
&gt; +                &quot;&lt;ul id=&apos;id_16&apos;&gt;&quot;,
&gt; +                    &quot;&lt;li id=&apos;id_17&apos;&gt;&lt;p&gt;At the bottom of the dialog box, clear the &lt;b&gt;Add to Quick Style&lt;/b&gt; list box.&lt;/p&gt;&lt;/li&gt;&quot;,
&gt; +                    &quot;&lt;li id=&apos;id_18&apos;&gt;&lt;p&gt;In the &lt;b&gt;Style type&lt;/b&gt; list, click &lt;b&gt;Paragraph&lt;/b&gt; or &lt;b&gt;Character&lt;/b&gt;.&lt;/p&gt;&lt;/li&gt;&quot;,
&gt; +                &quot;&lt;/ul&gt;&quot;,
&gt; +            &quot;&lt;/li&gt;&quot;,
&gt; +        &quot;&lt;/ol&gt;&quot;,
&gt; +        &quot;&lt;p id=&apos;id_19&apos;&gt;If you switch to a different Quick Style set, you may need to adjust the settings of your custom style. In the example here, if you create the Block quote style while the Word 2007 Quick Style set is applied, and then you switch to the Traditional Quick Style set, you can change the Block quote style to remove the first-line indentation that the Traditional Quick Style set introduces. To change a style, do the following:&lt;/p&gt;&quot;,
&gt; +        &quot;&lt;ol type=&apos;1&apos; id=&apos;id_20&apos;&gt;&quot;,
&gt; +            &quot;&lt;li id=&apos;id_21&apos;&gt;&lt;p&gt;On the &lt;b&gt;Home&lt;/b&gt; tab in the &lt;b&gt;Styles&lt;/b&gt; group, right-click &lt;b&gt;Block quote&lt;/b&gt;, and then click &lt;b&gt;Modify&lt;/b&gt;.&lt;/p&gt;&lt;/li&gt;&quot;,
&gt; +            &quot;&lt;li id=&apos;id_22&apos;&gt;&lt;p&gt;Click &lt;b&gt;Format&lt;/b&gt;, and then click &lt;b&gt;Paragraph&lt;/b&gt;.&lt;/p&gt;&lt;/li&gt;&quot;,
&gt; +            &quot;&lt;li id=&apos;id_23&apos;&gt;&lt;p&gt;In the &lt;b&gt;Indentation&lt;/b&gt; section, in the &lt;b&gt;Special&lt;/b&gt; list, click &lt;b&gt;(none)&lt;/b&gt;.&lt;/p&gt;&lt;/li&gt;&quot;,
&gt; +        &quot;&lt;/ol&gt;&quot;,
&gt; +        &quot;&lt;p id=&apos;id_24&apos;&gt;The more characteristics that you specify for the style, the less the style is affected by switching Quick Style sets or themes.&lt;/p&gt;&quot;,
&gt; +    &quot;&lt;/div&gt;&quot;

Can we use some text known to be free of copyright? Maybe Shakespeare? Are the id&apos;s important? This looks like an exported Word document.

&gt; PerformanceTests/Animometer/tests/text/resources/layering-text.js:47
&gt; +    var praseResult = {};

typo: praseResult

&gt; PerformanceTests/Animometer/tests/text/resources/layering-text.js:53
&gt; +    var spaceIndex = praseResult.tagStart.indexOf(&quot; &quot;);
&gt; +    praseResult.nodeName = praseResult.tagStart.substring(1, spaceIndex != -1 ? spaceIndex : praseResult.tagStart.length - 1);
&gt; +    praseResult.args = spaceIndex != -1 ? window.benchmarkClient.parseArguments(praseResult.tagStart.substring(spaceIndex + 1, praseResult.tagStart.length - 1)) : {};
&gt; +    var tagEnd = &quot;&lt;/&quot; + praseResult.nodeName + &quot;&gt;&quot;;                
&gt; +    praseResult.tagEnd = textItem.endsWith(tagEnd) ? tagEnd : &quot;&quot;;

Can we do this with DOM and not parsing? Could make a document fragment.

&gt; PerformanceTests/Animometer/tests/text/resources/layering-text.js:118
&gt; +    window.benchmarkClient.extendObject(textItemFlags, LayeringTextStage.textItemsFlags[this._textItemIndex]);

Odd to be calling into window.benchmarkClient here.

&gt; PerformanceTests/Animometer/tests/text/resources/layering-text.js:126
&gt; +    window.benchmarkClient.extendObject(textItemFlags, LayeringTextStage.textItemsFlags[this._textItemIndex]);    

And here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129727</commentid>
    <comment_count>31</comment_count>
      <attachid>262176</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-09-30 16:40:49 -0700</bug_when>
    <thetext>Comment on attachment 262176
[template]

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

&gt; PerformanceTests/Animometer/tests/template/template-canvas.html:7
&gt; +    &lt;script src=&quot;../../resources/main.js&quot;&gt;&lt;/script&gt;

Should refactor to not pull main.js into tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129730</commentid>
    <comment_count>32</comment_count>
      <attachid>262172</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-09-30 16:45:06 -0700</bug_when>
    <thetext>Comment on attachment 262172
[bouncing-css-particles]

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

&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-css-images.js:45
&gt; +    if (particle.element &amp;&amp; particle.element.parentNode &amp;&amp; particle.element.parentNode == this.element)
&gt; +        this.element.removeChild(particle.element);

Can this just be particle.element.remove()?

&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:63
&gt; +    if (particle.element &amp;&amp; particle.element.parentNode &amp;&amp; particle.element.parentNode == this.element)
&gt; +        this.element.removeChild(particle.element);

.remove()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129731</commentid>
    <comment_count>33</comment_count>
      <attachid>262173</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-09-30 16:50:45 -0700</bug_when>
    <thetext>Comment on attachment 262173
[bouncing-canvas-particles]

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

&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js:14
&gt; +    this._applyRotation();
&gt; +    this._context.drawImage(this._imageElement, 0, 0, this._size.x, this._size.y);

I think you should push and pop the context state around these lines.

&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js:48
&gt; +    window.benchmark = new BouncingCanvasImagesBenchmark(suite, test, options, recordTable, progressBar);

Odd to set window.benchmark. Why not return the benchmark?

&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js:55
&gt; +    this._applyFill();
&gt; +    this._applyRotation();
&gt; +    this._applyClipping();
&gt; +    this._drawShape();

You should push/pop around these too.

&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js:87
&gt; +    window.benchmark = new BouncingCanvasShapesBenchmark(suite, test, options, recordTable, progressBar);

Return it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129736</commentid>
    <comment_count>34</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-30 16:54:09 -0700</bug_when>
    <thetext>Can we not review/land multiple patches on a single bug please?  It&apos;s extremely confusing to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129744</commentid>
    <comment_count>35</comment_count>
      <attachid>262169</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-09-30 17:07:27 -0700</bug_when>
    <thetext>Comment on attachment 262169
[shared]

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

&gt; PerformanceTests/Animometer/resources/algorithm.js:32
&gt; +    _parentIndex: function(i)
&gt; +    {
&gt; +        return i &gt; 0 ? Math.floor((i - 1) / 2) : -1;
&gt; +    },
&gt; +    
&gt; +    _leftIndex: function(i)
&gt; +    {
&gt; +        return i * 2 + 1 &lt; this._size ? i * 2 + 1 : -1;
&gt; +    },
&gt; +    
&gt; +    _rightIndex: function(i)
&gt; +    {
&gt; +        return i * 2 + 2 &lt; this._size ? i * 2 + 2 : -1;
&gt; +    },

These expressions are a bit hard to parse in my head. Could you add () to make it more clear?

&gt; PerformanceTests/Animometer/resources/algorithm.js:44
&gt; +    {
&gt; +        var l = this._leftIndex(i);
&gt; +        var r = this._rightIndex(i);
&gt; +
&gt; +        if (l != -1 &amp;&amp; r != -1)
&gt; +            return this._compare(this._values[l], this._values[r]) &gt; 0 ? l : r;
&gt; +        
&gt; +        return l != -1 ? l : r;
&gt; +    },

Use left and right as variable names because l looks a lot like 1 :)

&gt; PerformanceTests/Animometer/resources/algorithm.js:80
&gt; +        // Fixes the heap poperty at index i given that parent is the only node that

Typo: property

&gt; PerformanceTests/Animometer/resources/algorithm.js:92
&gt; +        // Fixes the heap poperty at index i given that each of the left and the right

Same.

&gt; PerformanceTests/Animometer/resources/algorithm.js:121
&gt; +var Algorithm =
&gt; +{

Strangely, I think for these we do it all on one line.

&gt; PerformanceTests/Animometer/resources/main.js:9
&gt; +    // Used when the point object is used as a size object

Remember punctuation.

&gt; PerformanceTests/Animometer/resources/main.js:15
&gt; +    // Used when the point object is used as a size object    

Ditto.

&gt; PerformanceTests/Animometer/resources/main.js:24
&gt; +    get center()
&gt; +    {
&gt; +        return new Point(this.x / 2, this.y / 2);
&gt; +    },

It&apos;s weird that a Point can have a center, so you should comment that this happens when treating a Point as a Size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129759</commentid>
    <comment_count>36</comment_count>
      <attachid>262170</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-09-30 17:26:51 -0700</bug_when>
    <thetext>Comment on attachment 262170
[benchmark]

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

&gt; PerformanceTests/Animometer/tests/resources/benchmark.js:12
&gt; +    messages: [ &quot;Warming up&quot;, &quot;Sampling&quot;, &quot;Finished&quot; ]

You should put a comment here to say that it must be in the same order/index as the keywords above.

&gt; PerformanceTests/Animometer/tests/resources/math.js:229
&gt; +        // Current error
&gt; +        var e = this._ysp - y;
&gt; +
&gt; +        // Proportional term
&gt; +        var P = this._Kp * e;
&gt; +        
&gt; +        // Derivative term is the slope of the curve at the current time
&gt; +        var D = this._Kd * (e - this._eold) / h;
&gt; +
&gt; +        // Integral term is the area under the curve starting from the begining till the current time
&gt; +        this._I += this._Ki * ((e + this._eold) / 2) * h;
&gt; +
&gt; +        // pid controller value
&gt; +        var v = P + D + this._I;
&gt; +        
&gt; +        // Avoid spikes by applying actuator satuartion
&gt; +        var u = this._sat(v, this._ulow, this._uhigh);        

Punctuation. Plus a typo in saturation.

&gt; PerformanceTests/Animometer/tests/resources/math.js:271
&gt; +        // Update the transition matrix
&gt; +        this._matA[Matrix3.pos(0, 2)] = 1;
&gt; +
&gt; +        // Predicted state and covariance
&gt; +        var vecX_prd = Matrix3.multiplyVector3(this._matA, this._vecX_est);
&gt; +        var matP_prd = Matrix3.add(Matrix3.multiplyMatrix3(Matrix3.multiplyMatrix3(this._matA, this._matP_est), Matrix3.transpose(this._matA)), this._matQ);
&gt; +
&gt; +        // Estimation
&gt; +        var vecB = Vector3.multiplyMatrix3(this._vecH, Matrix3.transpose(matP_prd));
&gt; +        var S = Vector3.multiplyVector3(vecB, this._vecH) + this._R;
&gt; +
&gt; +        var vecGain = Vector3.scale(1/S, vecB);
&gt; +        
&gt; +        // Estimated state and covariance
&gt; +        this._vecX_est = Vector3.add(vecX_prd, Vector3.scale(current - Vector3.multiplyVector3(this._vecH, vecX_prd), vecGain));
&gt; +        this._matP_est = Matrix3.subtract(matP_prd, Matrix3.scale(Vector3.multiplyVector3(vecGain, this._vecH), matP_prd));
&gt; +
&gt; +        // Compute the estimated measurement

Punctuation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129764</commentid>
    <comment_count>37</comment_count>
      <attachid>262174</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-09-30 17:33:25 -0700</bug_when>
    <thetext>Comment on attachment 262174
[bouncing-svg-particles]

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

&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js:7
&gt; +    var attrs = { &apos;x&apos;: 0, &apos;y&apos;: 0, &apos;width&apos;: this._size.x, &apos;height&apos;: this._size.y };
&gt; +    var xlinkAttrs = { &apos;href&apos;: stage.imageSrc };

You don&apos;t need the &apos;&apos; around the keys here.

&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:21
&gt; +        var attrs = { &apos;x&apos;: 0, &apos;y&apos;: 0, &apos;width&apos;: this._size.x, &apos;height&apos;: this._size.y };

Or here.

&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:27
&gt; +        var attrs = { &apos;cx&apos;: this._size.x / 2, &apos;cy&apos;: this._size.y / 2, &apos;r&apos;: Math.min(this._size.x, this._size.y) / 2 };

Or here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129785</commentid>
    <comment_count>38</comment_count>
      <attachid>262169</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-09-30 18:15:43 -0700</bug_when>
    <thetext>Comment on attachment 262169
[shared]

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

&gt;&gt; PerformanceTests/Animometer/resources/algorithm.js:32
&gt;&gt; +    },
&gt; 
&gt; These expressions are a bit hard to parse in my head. Could you add () to make it more clear?

Done.

&gt;&gt; PerformanceTests/Animometer/resources/algorithm.js:44
&gt;&gt; +    },
&gt; 
&gt; Use left and right as variable names because l looks a lot like 1 :)

Done.

&gt;&gt; PerformanceTests/Animometer/resources/algorithm.js:80
&gt;&gt; +        // Fixes the heap poperty at index i given that parent is the only node that
&gt; 
&gt; Typo: property

Done.

&gt;&gt; PerformanceTests/Animometer/resources/algorithm.js:92
&gt;&gt; +        // Fixes the heap poperty at index i given that each of the left and the right
&gt; 
&gt; Same.

Done.

&gt;&gt; PerformanceTests/Animometer/resources/algorithm.js:121
&gt;&gt; +{
&gt; 
&gt; Strangely, I think for these we do it all on one line.

Done.

&gt;&gt; PerformanceTests/Animometer/resources/main.js:9
&gt;&gt; +    // Used when the point object is used as a size object
&gt; 
&gt; Remember punctuation.

Done.

&gt;&gt; PerformanceTests/Animometer/resources/main.js:15
&gt;&gt; +    // Used when the point object is used as a size object    
&gt; 
&gt; Ditto.

Done.

&gt;&gt; PerformanceTests/Animometer/resources/main.js:24
&gt;&gt; +    },
&gt; 
&gt; It&apos;s weird that a Point can have a center, so you should comment that this happens when treating a Point as a Size.

Done.

This patch was moved to https://bugs.webkit.org/show_bug.cgi?id=149691.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130032</commentid>
    <comment_count>39</comment_count>
      <attachid>262284</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-01 14:20:24 -0700</bug_when>
    <thetext>Created attachment 262284
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130034</commentid>
    <comment_count>40</comment_count>
      <attachid>262170</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-01 14:22:31 -0700</bug_when>
    <thetext>Comment on attachment 262170
[benchmark]

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

&gt;&gt; PerformanceTests/Animometer/tests/resources/math.js:229
&gt;&gt; +        var u = this._sat(v, this._ulow, this._uhigh);        
&gt; 
&gt; Punctuation. Plus a typo in saturation.

Done.

&gt;&gt; PerformanceTests/Animometer/tests/resources/math.js:271
&gt;&gt; +        // Compute the estimated measurement
&gt; 
&gt; Punctuation.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130036</commentid>
    <comment_count>41</comment_count>
      <attachid>262172</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-01 14:23:37 -0700</bug_when>
    <thetext>Comment on attachment 262172
[bouncing-css-particles]

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

&gt;&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-css-images.js:45
&gt;&gt; +        this.element.removeChild(particle.element);
&gt; 
&gt; Can this just be particle.element.remove()?

Done.

&gt;&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-css-shapes.js:63
&gt;&gt; +        this.element.removeChild(particle.element);
&gt; 
&gt; .remove()?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130038</commentid>
    <comment_count>42</comment_count>
      <attachid>262173</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-01 14:25:19 -0700</bug_when>
    <thetext>Comment on attachment 262173
[bouncing-canvas-particles]

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

&gt;&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-images.js:48
&gt;&gt; +    window.benchmark = new BouncingCanvasImagesBenchmark(suite, test, options, recordTable, progressBar);
&gt; 
&gt; Odd to set window.benchmark. Why not return the benchmark?

Done. It now return new BouncingCanvasImagesBenchmark and the caller sets the return value to window.benchmark.

&gt;&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js:55
&gt;&gt; +    this._drawShape();
&gt; 
&gt; You should push/pop around these too.

Done.

&gt;&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-canvas-shapes.js:87
&gt;&gt; +    window.benchmark = new BouncingCanvasShapesBenchmark(suite, test, options, recordTable, progressBar);
&gt; 
&gt; Return it?

Done. It now return new BouncingCanvasShapesBenchmark and the caller sets the return value to window.benchmark.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130040</commentid>
    <comment_count>43</comment_count>
      <attachid>262174</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-01 14:27:55 -0700</bug_when>
    <thetext>Comment on attachment 262174
[bouncing-svg-particles]

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

&gt;&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-images.js:7
&gt;&gt; +    var xlinkAttrs = { &apos;href&apos;: stage.imageSrc };
&gt; 
&gt; You don&apos;t need the &apos;&apos; around the keys here.

All &apos; &apos; were removed expect for &apos;stop-color&apos; in BouncingSvgShapesStage.prototype.createGradient.

&gt;&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:21
&gt;&gt; +        var attrs = { &apos;x&apos;: 0, &apos;y&apos;: 0, &apos;width&apos;: this._size.x, &apos;height&apos;: this._size.y };
&gt; 
&gt; Or here.

Done.

&gt;&gt; PerformanceTests/Animometer/tests/bouncing-particles/resources/bouncing-svg-shapes.js:27
&gt;&gt; +        var attrs = { &apos;cx&apos;: this._size.x / 2, &apos;cy&apos;: this._size.y / 2, &apos;r&apos;: Math.min(this._size.x, this._size.y) / 2 };
&gt; 
&gt; Or here.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130041</commentid>
    <comment_count>44</comment_count>
      <attachid>262175</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-01 14:30:32 -0700</bug_when>
    <thetext>Comment on attachment 262175
[text]

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

&gt;&gt; PerformanceTests/Animometer/tests/text/resources/layering-text.js:42
&gt;&gt; +    &quot;&lt;/div&gt;&quot;
&gt; 
&gt; Can we use some text known to be free of copyright? Maybe Shakespeare? Are the id&apos;s important? This looks like an exported Word document.

Done. I got some text from https://en.wikipedia.org/wiki/Benchmark_(computing).

&gt;&gt; PerformanceTests/Animometer/tests/text/resources/layering-text.js:47
&gt;&gt; +    var praseResult = {};
&gt; 
&gt; typo: praseResult

Fixed.

&gt;&gt; PerformanceTests/Animometer/tests/text/resources/layering-text.js:53
&gt;&gt; +    praseResult.tagEnd = textItem.endsWith(tagEnd) ? tagEnd : &quot;&quot;;
&gt; 
&gt; Can we do this with DOM and not parsing? Could make a document fragment.

Will do that later.

&gt;&gt; PerformanceTests/Animometer/tests/text/resources/layering-text.js:118
&gt;&gt; +    window.benchmarkClient.extendObject(textItemFlags, LayeringTextStage.textItemsFlags[this._textItemIndex]);
&gt; 
&gt; Odd to be calling into window.benchmarkClient here.

Done. extendObject() was moved to the Utilities object.

&gt;&gt; PerformanceTests/Animometer/tests/text/resources/layering-text.js:126
&gt;&gt; +    window.benchmarkClient.extendObject(textItemFlags, LayeringTextStage.textItemsFlags[this._textItemIndex]);    
&gt; 
&gt; And here.

Done. extendObject() was moved to the Utilities object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130042</commentid>
    <comment_count>45</comment_count>
      <attachid>262176</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-01 14:34:17 -0700</bug_when>
    <thetext>Comment on attachment 262176
[template]

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

&gt;&gt; PerformanceTests/Animometer/tests/template/template-canvas.html:7
&gt;&gt; +    &lt;script src=&quot;../../resources/main.js&quot;&gt;&lt;/script&gt;
&gt; 
&gt; Should refactor to not pull main.js into tests.

Done. The shared objects like Point, Insets, etc were moved to a new file called Animometer/resources/extensions.js. The Animator, the Benchmark and running the benchmark itself are in Animometer/tests/resources/main.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130112</commentid>
    <comment_count>46</comment_count>
      <attachid>262304</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-01 17:48:48 -0700</bug_when>
    <thetext>Created attachment 262304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130116</commentid>
    <comment_count>47</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-01 17:52:16 -0700</bug_when>
    <thetext>Now there three bugs with three separate patches:

https://bugs.webkit.org/show_bug.cgi?id=149691: has shared code between the runner and the test benchmark.
This bug: has the benchmark and the tests.
https://bugs.webkit.org/show_bug.cgi?id=149683: has the benchmark runner.

They can be landed separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130376</commentid>
    <comment_count>48</comment_count>
      <attachid>262368</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-02 17:16:56 -0700</bug_when>
    <thetext>Created attachment 262368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130382</commentid>
    <comment_count>49</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-02 17:26:21 -0700</bug_when>
    <thetext>Added two examples for other animation techniques: 

tests/examples/canvas-electrons.html
tests/examples/canvas-stars.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130384</commentid>
    <comment_count>50</comment_count>
      <attachid>262369</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-02 17:37:16 -0700</bug_when>
    <thetext>Created attachment 262369
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130385</commentid>
    <comment_count>51</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-02 17:38:36 -0700</bug_when>
    <thetext>The references to the statistics.js is removed. The confidence interval delta measurement is removed from the results table.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130388</commentid>
    <comment_count>52</comment_count>
      <attachid>262369</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-10-02 17:49:35 -0700</bug_when>
    <thetext>Comment on attachment 262369
Patch

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

&gt; PerformanceTests/ChangeLog:296
&gt; +        * Animometer/tests/resources/yin-yang.png: Added.
&gt; +        * Animometer/tests/resources/yin-yang.svg: Added.
&gt; +        These images are shared among all the tests.

Did you make these png images?

If not, are they BSD-licensed? Depending on the terms of their licenses, we may still need to include the credits.

&gt; PerformanceTests/Animometer/tests/resources/stage.css:2
&gt; +  height: 100%;

Wrong indentation. Use 4 spaces instead.

&gt; PerformanceTests/Animometer/tests/resources/yin-yang.svg:2
&gt; +  &lt;defs&gt;

Again, wrong indentation.
Use 4 spaces instead.

&gt; PerformanceTests/Animometer/tests/template/resources/template-canvas.js:6
&gt; +    // TODO: Fill in your object data.

We don&apos;t use TODO.
This since is a template, I don&apos;t think FIXME is appropriate either.
Just remove TODO: everywhere in this file.

&gt; PerformanceTests/Animometer/tests/template/resources/template-css.js:15
&gt; +    // TODO: Change objects in the stage.

Ditto about removing TODO:s in this file.

&gt; PerformanceTests/Animometer/tests/template/resources/template-svg.js:15
&gt; +    // TODO: Change objects in the stage.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130428</commentid>
    <comment_count>53</comment_count>
      <attachid>262378</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-02 20:35:48 -0700</bug_when>
    <thetext>Created attachment 262378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130430</commentid>
    <comment_count>54</comment_count>
      <attachid>262369</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-02 20:40:55 -0700</bug_when>
    <thetext>Comment on attachment 262369
Patch

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

&gt;&gt; PerformanceTests/ChangeLog:296
&gt;&gt; +        These images are shared among all the tests.
&gt; 
&gt; Did you make these png images?
&gt; 
&gt; If not, are they BSD-licensed? Depending on the terms of their licenses, we may still need to include the credits.

Yes. I made the SVG by hand and then took a screenshot from it and save it as PNG.

&gt;&gt; PerformanceTests/Animometer/tests/resources/stage.css:2
&gt;&gt; +  height: 100%;
&gt; 
&gt; Wrong indentation. Use 4 spaces instead.

Done.

&gt;&gt; PerformanceTests/Animometer/tests/resources/yin-yang.svg:2
&gt;&gt; +  &lt;defs&gt;
&gt; 
&gt; Again, wrong indentation.
&gt; Use 4 spaces instead.

Done.

&gt;&gt; PerformanceTests/Animometer/tests/template/resources/template-canvas.js:6
&gt;&gt; +    // TODO: Fill in your object data.
&gt; 
&gt; We don&apos;t use TODO.
&gt; This since is a template, I don&apos;t think FIXME is appropriate either.
&gt; Just remove TODO: everywhere in this file.

Done.

&gt;&gt; PerformanceTests/Animometer/tests/template/resources/template-css.js:15
&gt;&gt; +    // TODO: Change objects in the stage.
&gt; 
&gt; Ditto about removing TODO:s in this file.

Done.

&gt;&gt; PerformanceTests/Animometer/tests/template/resources/template-svg.js:15
&gt;&gt; +    // TODO: Change objects in the stage.
&gt; 
&gt; Ditto.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130710</commentid>
    <comment_count>55</comment_count>
      <attachid>262378</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2015-10-05 12:51:08 -0700</bug_when>
    <thetext>Comment on attachment 262378
Patch

rs=me, based on previous reviews, and that rniwa&apos;s comments were addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130724</commentid>
    <comment_count>56</comment_count>
      <attachid>262378</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-05 13:39:22 -0700</bug_when>
    <thetext>Comment on attachment 262378
Patch

Clearing flags on attachment: 262378

Committed r190575: &lt;http://trac.webkit.org/changeset/190575&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130725</commentid>
    <comment_count>57</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-05 13:39:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261037</attachid>
            <date>2015-09-11 17:28:40 -0700</date>
            <delta_ts>2015-09-16 13:46:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149053-20150911172833.patch</filename>
            <type>text/plain</type>
            <size>116517</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODk1OTgpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4NiBAQAorMjAxNS0wOS0xMCAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IFRoaXMgd29yayBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudC4gTWFueSBwYXJ0cyBvZiB0aGUg
Y29kZSB3YXMgY29waWVkCisgICAgICAgIGZyb20gc3BlZWRvbWV0ZXIgYmVuY2htYXJrLiBUaGUg
YmVuY2htYXJrIHJ1bm5lcidzIG5hbWUgaXMgImFuaW1vbWV0ZXIuaHRtbCIKKyAgICAgICAgYnV0
IHRoaXMgaXMgbm90IGZpbmFsIHlldCBhbmQgbW9zdCBwcm9iYWJseSBpcyBnb2luZyB0byBjaGFu
Z2UuIFRoZSBjc3MgCisgICAgICAgIGFuZCB0aGUgcGFnZSBsYXlvdXRzIHdpbGwgYmUgcmV2aXNl
ZCBmb3IgYmV0dGVyIGxvb2tpbmcuCisgICAgICAgIAorICAgICAgICBUaGUgcHVycG9zZSBvZiB0
aGlzIGJlbmNobWFyayBpcyB0byBtZWFzdXJlIHRoZSBhbmltYXRpb24gcGVyZm9ybWFuY2Ugb2YK
KyAgICAgICAgYSB3ZWIgYnJvd3NlciBpbiBhY2N1cmF0ZSB3YXkgYnV0IGF0IGZpbmUgZ3JhbnVs
YXIgbGV2ZWwuIFRoZSBkZXNpZ24gaXMKKyAgICAgICAgdG8gaGF2ZSBzZXBhcmF0ZSBhbmltYXRp
b25zOyBlYWNoIHN0cmVzcyB0ZXN0cyBvbmUgb2YgdGhlIGdyYXBoaWNzIHByaW1pdGl2ZXMKKyAg
ICAgICAgc28gd2UgY2FuIGlkZW50aWZ5IGJ1Z3MgYSBsb3QgZWFzaWVyLgorICAgICAgICAKKyAg
ICAgICAgSW5zdGVhZCBvZiBtZWFzdXJpbmcgdGhlIEZQUyBvZiB0aGUgYW5pbWF0aW9uLCB0aGUg
ImFuaW1vbWV0ZXIiIGJlbmNobWFyaworICAgICAgICB0cmllcyB0byBtZWFzdXJlIHRoZSB0ZXN0
IGNvbXBsZXhpdHkgd2hlbiByZW5kZXJpbmcgYXQgYSBzZXQtcG9pbnQgRlBTIHdoaWNoCisgICAg
ICAgIHNob3VsZCBiZSBsZXNzIHRoYW4gNjAgRlBTLiBUaGUgImFuaW1vbWV0ZXIiIHN0YXlzIGF0
IHRoZSBzZXQtcG9pbnQgRlBTCisgICAgICAgIGJ5IHVzaW5nIGEgY2xvc2VkLWxvb3AgY29udHJv
bCBzeXN0ZW0gUElEIGZ1bmN0aW9uLiBUaGUgZ2FpbiBvZiB0aGUgc3lzdGVtCisgICAgICAgIGlz
IHBhc3NlZCBhcyBhIHBhcmFtZXRlciB3aGVuIHJ1bm5pbmcgdGhlIHRlc3QuIE1lYXN1cmluZyB0
aGUgRlBTIGZhaXRoZnVsbHkKKyAgICAgICAgcmVzdWx0cyBpbiB2ZXJ5IGZsdWN0dWF0aW5nIHZh
bHVlcy4gU28gYSBLYWxtYW4gZmlsdGVyIGlzIHVzZWQgdG8gZ2l2ZSBhCisgICAgICAgIGJldHRl
ciBlc3RpbWF0ZSBmb3IgdGhlIGN1cnJlbnQgRlBTLgorICAgICAgICAKKyAgICAgICAgVGhlIGFu
aW1hdGlvbiBvZiB0aGUgdGVzdHMgaXMgZG9uZSBtYW51YWxseS4gcmVxdWVzdEFuaW1hdGlvbkZy
YW1lKCkgaXMKKyAgICAgICAgY2FsbGVkIHdpdGggYSBjYWxsYmFjay4gSW5zaWRlIHRoaXMgY2Fs
bGJhY2ssIHRoZSB0ZXN0IGlzIGFuaW1hdGluZyBieQorICAgICAgICBjaGFuZ2luZyB0aGUgcG9z
aXRpb25zIG9mIHRoZSBlbGVtZW50cyBpbnNpZGUgdGhlIHBhZ2UuIFRoZSB0ZXN0IGNvbXBsZXhp
dHkKKyAgICAgICAgbWF5IGNoYW5nZSBhbHNvIGlmIHRoZSBjdXJyZW50IEZQUyBpcyBub3QgZXF1
YWwgdG8gdGhlIGRlc2lyZWQgRlBTLgorCisgICAgICAgICogQW5pbW9tZXRlcjogQWRkZWQuCisg
ICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXM6IEFkZGVkLgorICAgICAgICAKKyAgICAgICAg
KiBBbmltb21ldGVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzczogQWRkZWQuCisgICAgICAgICog
QW5pbW9tZXRlci9hbmltb21ldGVyLmh0bWw6IEFkZGVkLgorICAgICAgICBUaGUgYmVuY2htYXJr
IHJ1bm5lciBwYWdlIGFuZCBjc3MuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVz
b3VyY2VzL2JlbmNobWFyay5jc3M6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvYm91bmNp
bmctY2FudmFzLWltYWdlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL2JvdW5j
aW5nLWNhbnZhcy1zaGFwZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci9ib3Vu
Y2luZy1pbWFnZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci9ib3VuY2luZy1z
aGFwZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci9ib3VuY2luZy1zdmctaW1h
Z2VzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvYm91bmNpbmctc3ZnLXNoYXBl
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgVGhlIHRlc3QgcGFnZXMgYW5kIHRoZWlyIGNzcy4gVGhl
IHNhbWUgdGVzdHMgYXJlIGRvbmUgYXMgSFRNTCBlbGVtZW50cywgU1ZHCisgICAgICAgIGVsZW1l
bnRzIG9yIGRyYXduIG9uIGEgY2FudmFzLgorCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJj
ZXMvbWFpbi5qczogQWRkZWQuCisgICAgICAgIChQb2ludCk6IEEgcG9pbnQgb2JqZWN0CisgICAg
ICAgIChJbnNldHMpOiBBbiBpbnNldHMgb2JqZWN0CisgICAgICAgIChTaW1wbGVQcm9taXNlKTog
QW4gaW1wbGVtZW50YXRpb24gZm9yIGEgcHJvbWlzZSBvYmplY3QgKGNvcGllZCBmb3JtIHNwZWVk
b21ldGVyKS4KKyAgICAgICAgKE1hdHJpeCk6IEEgbWF0cml4IG9iamVjdC4KKyAgICAgICAgKFZl
Y3RvcjMpOiBBIHZlY3RvciBvZiBzaXplIDMgb2JqZWN0LgorICAgICAgICAoTWF0cml4Myk6IEEg
bWF0cml4IG9mIHNpemUgM3gzIG9iamVjdC4KKyAgICAgICAgCisgICAgICAgIChDb250cm9sbGVy
KTogQ2xvc2VkLWxvb3AgY29udHJvbGxlciBmb3IgYSBzZXQtcG9pbnQgeS4KKyAgICAgICAgKENv
bnRyb2xsZXIucHJvdG90eXBlLl9zYXQpOiBMaW1pdHMgdGhlIG91dHB1dCB0byBhIGNlcnRhaW4g
cmFuZ2UuCisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS50dW5lKTogcHJvZHVjZXMgdGhl
IHBpZCBmb3IgdGhlIGJlbmNobWFyayB3aGljaCBpcyB0cmVhdGVkIGFzIGEgY2xvc2VkLWxvb3Ag
c3lzdGVtLgorICAgICAgICAKKyAgICAgICAgKFN0YXRpc3RpYyk6IE1lYXN1cmVzIHRoZSBtYXRo
ZW1hdGljYWwgbWVhbiBhbmQgc3RhbmRhcmQgZGV2aWF0aW9uIGZvciBhIHNldCBvZiBzYW1wbGVk
IG51bWJlcnMuIAorICAgICAgICAoU3RhdGlzdGljLnByb3RvdHlwZS5zdGFydFNhbXBsaW5nKTog
Q2FsbGVkIGFmdGVyIHdhcm1pbmcgdXAgcGVyaW9kLgorICAgICAgICAoU3RhdGlzdGljLnByb3Rv
dHlwZS5zYW1wbGUpOiBBZGQgYSBuZXcgZGF0YSBwb2ludC4KKyAgICAgICAgKFN0YXRpc3RpYy5w
cm90b3R5cGUubWVhbik6IFJldHVybnMgdGhlIG1hdGhlbWF0aWNhbCBtZWFuLgorICAgICAgICAo
U3RhdGlzdGljLnByb3RvdHlwZS5zdGFuZGFyZERldmlhdGlvbik6IFJldHVybnMgdGhlIG1hdGhl
bWF0aWNhbCBzdGFuZGFyZCBkZXZpYXRpb24uCisgICAgICAgIChTdGF0aXN0aWMucHJvdG90eXBl
LnBlcmNlbnRhZ2UpOiBSZXR1cm5zIHRoZSBwZXJjZW50YWdlIG9mIHRoZSBzdGFuZGFyZCBkZXZp
YXRpb24gZGl2aWRlZCB0byB0aGUgbWVhbi4KKyAgICAgICAgCisgICAgICAgIChTYW1wbGVyKTog
TWFuYWdlcyBzYW1wbGluZyBkaWZmZXJlbnQgZGF0YSBwb2ludHMuCisgICAgICAgIChTYW1wbGVy
LnByb3RvdHlwZS5zdGFydFNhbXBsaW5nKTogQ2FsbGVkIGFmdGVyIHdhcm1pbmcgdXAgcGVyaW9k
LgorICAgICAgICAoU2FtcGxlci5wcm90b3R5cGUuc2FtcGxlKTogQWRkIGEgbmV3IGRhdGEgdmVj
dG9yLgorCisgICAgICAgIChFc3RpbWF0b3IpOiBJbXBsZW1lbnQgS2FsbWFuIGZpbHRlciB0byBn
ZXQgYW4gZXN0aW1hdGUgZm9yIGEgc2FtcGxlZCBkYXRhIHBvaW50LgorICAgICAgICAoRXN0aW1h
dG9yLnByb3RvdHlwZS5lc3RpbWF0ZSk6IFJldHVybnMgYW4gZXN0aW1hdGUgZm9yIGZvciBhIHNh
bXBsZWQgZGF0YSBwb2ludC4KKyAgICAgICAgCisgICAgICAgIChQcm9ncmVzc0Jhcik6IE1hbmFn
ZXMgYSBwcm9ncmVzcyBiYXIgZWxlbWVudC4gVGhlIHByb2dyZXNzIGJhciBpcyBkaXZpZGVkIGlu
dG8gZXF1YWwgbGVuZ3RoIHJhbmdlcy4KKyAgICAgICAgKFByb2dyZXNzQmFyLnByb3RvdHlwZS5f
cHJvZ3Jlc3NUb1BlcmNlbnQpOiBDb252ZXJ0cyB0aGUgcHJvZ3Jlc3MgaW50byBhIHBlcmNlbnRh
Z2UuCisgICAgICAgIChQcm9ncmVzc0Jhci5wcm90b3R5cGUuaW5jUmFuZ2UpOiBNb3ZlcyB0byB0
aGUgbmV4dCByYW5nZSAoYSByYW5nZSBpcyB0aGUgcnVubmluZyB0aW1lIG9mIGEgc2luZ2xlIHRl
c3QpLgorICAgICAgICAoUHJvZ3Jlc3NCYXIucHJvdG90eXBlLnNldFBvcyk6IERyYXdzIHRoZSBj
dXJyZW50IHByb2dyZXNzIGluIHRoZSBjdXJyZW50IHJhbmdlLgorICAgICAgICAKKyAgICAgICAg
KFJlY29yZFRhYmxlKTogU2hvd3MgdGhlIHJlc3VsdHMgb2YgcnVubmluZyBhIGJlbmNobWFyayBp
biBhIHRhYnVsYXIgZm9ybS4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5jbGVhcik6
IENsZWFycyB0aGUgcmVzdWx0cyB0YWJsZS4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlw
ZS5fc2hvd1RpdGxlcyk6IFNob3dzIHRoZSBoZWFkZXIgdGl0bGVzIGFuZCBhcHBlbmRzIHRoZSBz
dWItdGl0bGVzIHRvIGEgcXVldWUuCisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3No
b3dIZWFkZXIpOiBTaG93cyB0aGUgdGFibGUgaGVhZGVyIHRpdGxlcy4KKyAgICAgICAgKFJlY29y
ZFRhYmxlLnByb3RvdHlwZS5fc2hvd1ZhbHVlKTogU2hvd3MgYSBudW1iZXIgdmFsdWUgaW4gdGhl
IHJlc3VsdHMgdGFibGUuCisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dTYW1w
bGVzKTogU2hvd3MgYSBidXR0b24gZm9yIHRoZSBzYW1wbGVkIGRhdGEgZ3JhcGguCisgICAgICAg
IChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dUZXN0KTogU2hvd3MgdGhlIHJlc3VsdHMgb2Yg
YSBzaW5nbGUgdGVzdC4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5fc2hvd1N1aXRl
KTogU2hvd3MgdGhlIHJlc3VsdHMgb2YgYSBzaW5nbGUgc3VpdGUuCisgICAgICAgIChSZWNvcmRU
YWJsZS5wcm90b3R5cGUuc2hvd0l0ZXJhdGlvbnMpOiBTaG93cyB0aGUgcmVzdWx0cyBvZiBhbGwg
dGhlIHN1aXRlcyBvZiB0aGUgaXRlcmF0aW9ucy4gCisgICAgICAgICAgICAgICAgCisgICAgICAg
ICogQW5pbW9tZXRlci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qczogQWRkZWQuCisgICAgICAgICh3
aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LndpbGxBZGRUZXN0RnJhbWUpOiBDYWxsZWQgYWZ0
ZXIgdGhlIHRlc3QgPGlmcmFtZT4gaXMgY3JlYXRlZC4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1h
cmtSdW5uZXJDbGllbnQuZGlkUnVuVGVzdCk6IENhbGxlZCBhZnRlciBydW5uaW5nIGEgdGVzdCBp
cyBmaW5pc2hlZC4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQud2lsbFN0
YXJ0Rmlyc3RJdGVyYXRpb24pOiBDYWxsZWQgYXQgdGhlIGJlZ2lubmluZyBiZWZvcmUgcnVubmlu
ZyBhbnkgdGVzdC4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQuZGlkUnVu
U3VpdGVzKTogQ2FsbGVkIGFmdGVyIHJ1bm5pbmcgYWxsIHRlc3RzIG9mIGEgc3VpdGUuCisgICAg
ICAgICh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LmRpZEZpbmlzaExhc3RJdGVyYXRpb24p
OiBDYWxsZWQgYWZ0ZXIgcnVubmluZyB0aGUgbGFzdCB0ZXN0LgorICAgICAgICAKKyAgICAgICAg
KHdpbmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQuYnJvd3Nlcik6CisgICAgICAgIChzaG93U2Vj
dGlvbik6IFNob3dzIGEgc2VjdGlvbiBpbiB0aGUgYW5pbW9tZXRlci5odG1sIHBhZ2UuCisgICAg
ICAgIChzdGFydFRlc3QpOiBDYWxsZWQgd2hlbiB0aGUgIlN0YXJ0IFRlc3QiIGJ1dHRvbiBpcyBj
bGlja2VkLgorICAgICAgICAoc2hvd1Jlc3VsdHMpOiBDYWxsZWQgYWZ0ZXIgZmluaXNoaW5nIGFs
bCB0aGUgdGVzdHMuCisgICAgICAgIChzaG93R3JhcGgpOiBDYWxsZWQgd2hlbiAiQ2xpY2suLi4i
IGJ1dHRvbiBpbiB0aGUgIlNhbXBsZXMiIGNvbHVtbiBvZiB0aGUgcmVzdWx0cyB0YWJsZSBpcyBj
bGlja2VkCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2JlbmNobWFy
ay1ydW5uZXIuanM6IEFkZGVkLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyU3RhdGUpOiBUcmFj
a3Mgb2YgdGhlIGN1cnJlbnQgcnVubmluZyA8c3VpdGUsIHRlc3Q+CisgICAgICAgIChCZW5jaG1h
cmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUuY3VycmVudFN1aXRlKTogcmV0dXJucyB0aGUgY3VycmVu
dCBydW5uaW5nIHN1aXRlLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBl
LmN1cnJlbnRUZXN0KTogcmV0dXJucyB0aGUgY3VycmVudCBydW5uaW5nIHRlc3QuCisgICAgICAg
IChCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUuaXNGaXJzdFRlc3QpOiByZXR1cm5zIHRy
dWUgaWYgd2UgYXJlIHJ1bm5pbmcgdGhlIGZpcnN0IHRlc3QgaW4gdGhlIGN1cnJlbnQgc3VpdGUu
CisgICAgICAgIChCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUubmV4dCk6IGFkdmFuY2Vz
IHRvIHRoZSBuZXh0IHRlc3QuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5
cGUucHJlcGFyZUN1cnJlbnRUZXN0KTogQ3JlYXRlcyBhIG5ldyA8aWZyYW1lPiBhbmQgd2FpdHMg
Zm9yIGl0IHRvIGxvYWQgYSB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKEJlbmNobWFya1J1bm5l
cik6IE1hbmFnZXMgcnVubmluZyB0aGUgdGVzdHMgYW5kIGNvbW11bmljYXRpbmcgd2l0aCB0aGUg
YmVuY2htYXJrUnVubmVyQ2xpZW50LgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlw
ZS53YWl0Rm9yRWxlbWVudCk6IFdhaXRzIGZvciBhbiBlbGVtZW50IHRvIGJlIGNyZWF0ZWQuCisg
ICAgICAgIChCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9hcHBlbmRGcmFtZSk6IENyZWF0ZXMg
YSBuZXcgPGlmcmFtZT4gZWxlbWVudC4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5
cGUuX3JlbW92ZUZyYW1lKTogUmVtb3ZlZCB0aGUgY3VycmVudCA8aWZyYW1lPiBlbGVtZW50Lgor
ICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcnVuVGVzdEFuZFJlY29yZFJlc3Vs
dHMpOiBSdW5zIHRoZSBjdXJyZW50IHRlc3QgYW5kIHNhdmVzIGl0cyByZXN1bHRzLgorICAgICAg
ICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5zdGVwKTogRWl0aGVyIHJ1bnMgdGhlIGN1cnJl
bnQgdGVzdCBpZiB0aGVyZSBpcyBvciBzdGFydCBhIG5ldyBpdGVyYXRpb24uCisgICAgICAgIChC
ZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLnJ1bkFsbFN0ZXBzKTogTG9vcHMgdG8gcnVuIGFsbCB0
aGUgdGVzdHMgYW5kIG1vdmUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgorICAgICAgICAodGhpcy5f
cnVuTmV4dEl0ZXJhdGlvbik6IFN0YXJ0cyBhIG5ldyBpdGVyYXRpb24gb3Igc2hvdyB0aGUgcmVz
dWx0cy4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUucnVuTXVsdGlwbGVJdGVy
YXRpb25zKTogTG9vcHMgdG8gcnVuIGFsbCB0aGUgaXRlcmF0aW9ucyBhbmQgc2hvdyB0aGUgcmVz
dWx0cworICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fZmluYWxpemUpOiBTdGFy
dHMgYSBuZXcgaXRlcmF0aW9uLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291
cmNlcy9iZW5jaG1hcmsuanM6IEFkZGVkLgorICAgICAgICAoQmVuY2htYXJrU3RhdGUpOiBUcmFj
a3MgdGhlIHN0YXRlIG9mIHRoZSBiZW5jaG1hcmsgdGVzdC4KKyAgICAgICAgKEJlbmNobWFya1N0
YXRlLnByb3RvdHlwZS5fdGltZU9mZnNldCk6IFJldHVybnMgdGhlIHRpbWVPZmZzZXQgb2YgYSBz
dGFnZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5fbWVzc2FnZSk6IFJldHVy
bnMgdGhlIG1lc3NhZ2Ugb2YgYSBzdGFnZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3Rv
dHlwZS51cGRhdGUpOiBTZXRzIHRoZSBjdXJyZW50VGltZU9mZnNldCB0byBhIG5ldyB2YWx1ZS4K
KyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5zYW1wbGluZ1RpbWVPZmZzZXQpOiBS
ZXR1cm5zIHRoZSB0aW1lT2Zmc2V0IG9mIHRoZSBzYW1wbGluZyBzdGFnZS4KKyAgICAgICAgKEJl
bmNobWFya1N0YXRlLnByb3RvdHlwZS5jdXJyZW50U3RhZ2UpOiBSZXR1cm5zIHRoZSBjdXJyZW50
IHN0YWdlIG9mIHRoZSBiZW5jaG1hcmsuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5
cGUuY3VycmVudE1lc3NhZ2UpOiBSZXR1cm5zIHRoZSBtZXNzYWdlIG9mIHRoZSBjdXJyZW50IHN0
YWdlIGFuZCB0aW1lT2Zmc2V0LgorICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBlLmN1
cnJlbnRQcm9ncmVzcyk6IFJldHVybnMgYSBwZXJjZW50YWdlIG9mIGhvdyBtdWNoIHRoZSBiZW5j
aG1hcmsgaXMgcnVubmluZy4KKyAgICAgICAgCisgICAgICAgIChBbmltYXRvcik6IE1hbmFnZXMg
YW5pbWF0aW5nIHRoZSB0ZXN0LgorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0KTog
Q2FsbGVkIGlmIGFuaW1hdGluZyB1c2luZyBzZXRJbnRlcnZhbCBpcyByZXF1ZXN0ZWQuCisgICAg
ICAgIChBbmltYXRvci5wcm90b3R5cGUudGltZURlbHRhKTogUmV0dXJucyB0aGUgY3VycmVudCB0
aW1lRGVsdGEgCisgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6IE1hbmFnZXMg
dGhlIHRlc3QgYW5pbWF0aW9uLgorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGVM
b29wKTogQ2FsbGVkIGlmIGFuaW1hdGluZyB1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaXMg
cmVxdWVzdGVkLiAKKyAgICAgICAgCisgICAgICAgIChCZW5jaG1hcmspOiBNYW5hZ2VzIHJ1bm5p
bmcgdGhlIHRlc3QgYmVuY2htYXJrIGFuZCByZWNvcmRpbmcgdGhlIHNhbXBsZWQgZGF0YS4KKyAg
ICAgICAgKEJlbmNobWFyay5wcm90b3R5cGUucGFyc2VQYXJhbWV0ZXJzKTogUGFyc2VzIHRoZSB0
ZXN0IHBhcmFtZXRlcnMuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnN0YXJ0KTogU3Rh
cnRzIHRoZSBiZW5jaG1hcmsuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnVwZGF0ZSk6
IENhbGxlZCBmcm9tIHRoZSBhbmltYXRvci5hbmltYXRlKCkgdG8gY2hhbmdlIHRoZSBjb21wbGV4
aXR5IG9mIHRoZSB0ZXN0LgorICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS5yZWNvcmQpOiBT
aG93cyB0aGUgY3VycmVudCAobm90IGZpbmFsKSByZXN1bHRzIG9mIHRoZSBiZW5jaG1hcmsuCisg
ICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnJlc29sdmVXaGVuRmluaXNoZWQpOiBTcGlucyB1
bnRpbCB0aGUgYmVuY2htYXJrIGlzIGZpbmlzaGVkIGFuZCByZXR1cm5zIGl0cyByZXN1bHRzLgor
ICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS5ydW4pOiBTdGFydHMgdGhlIHRlc3QsIHJ1bnMg
aXQsIHdhaXRzIHVudGlsIGl0IGlzIGZpbmlzaGVkIGFuZCByZXR1cm4gaXRzIHJlc3VsdHMuCisg
ICAgICAgICh3aW5kb3cucnVuQmVuY2htYXJrKTogQ2FsbGVkIGZyb20gdGhlIGJlbmNobWFyayBy
dW5uZXIgdGhyb3VnaCB0aGUgc3VpdGUgY29udHJvbGxlciBydW4tY2FsbGJhY2suIAorCisgICAg
ICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzOiBBZGRlZC4K
KyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVSb3RhdGVyKTogTWFuYWdlcyByb3RhdGluZyBhIEJv
dW5jaW5nUGFydGljbGUuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlUm90YXRlci5wcm90b3R5
cGUubmV4dCk6IE1vdmVzIHRoZSB0aW1lIGJ5IHRoZSBiZW5jaG1hcmsncyBjdXJyZW50IHRpbWVE
YXRhLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZVJvdGF0ZXIucHJvdG90eXBlLmRlZ3JlZSk6
IFJldHVybnMgdGhlIGN1cnJlbnQgcm90YXRpbmcgZGVncmVlLgorICAgICAgICAoQm91bmNpbmdQ
YXJ0aWNsZVJvdGF0ZXIucHJvdG90eXBlLnJvdGF0ZVopOiBSZXR1cm5zIENTUyBmb3JtYXR0ZWQg
dHJhbnNmb3JtIHJvdGF0ZVooKSB2YWx1ZS4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVSb3Rh
dGVyLnByb3RvdHlwZS5yb3RhdGUpOiBSZXR1cm5zIFNWRyBmb3JtYXR0ZWQgdHJhbnNmb3JtIHJv
dGF0ZSgpIHZhbHVlLiAgICAgICAgCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdQYXJ0aWNs
ZSk6IEJhc2UgY2xhc3MgZm9yIGEgYm91bmNpbmcgcGFydGljbGUuCisgICAgICAgIChCb3VuY2lu
Z1BhcnRpY2xlLnByb3RvdHlwZS5jZW50ZXIpOiBSZXR1cm5zIHRoZSBjZW50ZXIgcG9pbnQgb3Ig
dGhlIHBhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0
ZSk6IE1vdmVzIHRoZSBwYXJ0aWNsZSBiYXNlZCBvbiBpdHMgY3VycmVudCBwb3NpdGlvbiwgYW5n
bGUgYW5kIHZlbG9jaXR5LgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzQW5p
bWF0b3IpOiBBIHN1YiBjbGFzcyBvZiBBbmltYXRvci4KKyAgICAgICAgKEJvdW5jaW5nUGFydGlj
bGVzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBNYW5hZ2VzIGFuaW1hdGluZyB0aGUgYm91
bmNpbmcgcGFydGljbGVzIHRocm91Z2ggdGhlIHRlc3Qgc3RhZ2UuCisgICAgICAgIAorICAgICAg
ICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZSk6IFJlcHJlc2VudHMgdGhlIGNvbnRhaW5lciBvZiBh
bGwgdGhlIGJvdW5jaW5nIHBhcnRpY2xlcy4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzU3Rh
Z2UucHJvdG90eXBlLnNpemUpOiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBzdGFnZSBleGNsdWRp
bmcgdGhlIENTUyBwYWRkaW5nLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90
b3R5cGUucGFyc2VTaGFwZVBhcmFtdGVycyk6IEdldHMgdGhlIHNoYXBlIHBhcmFtZXRlcnMgZm9y
IHNoYXBlIGFuaW1hdGluZyB0ZXN0cy4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzU3RhZ2Uu
cHJvdG90eXBlLnJhbmRvbSk6IFJldHVybnMgYSByYW5kb20gZmxvYXQuCisgICAgICAgIChCb3Vu
Y2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5yYW5kb21JbnQpOiBSZXR1cm5zIGEgcmFuZG9t
IGludGVnZXIuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5yYW5k
b21Qb3NpdGlvbik6IFJldHVybnMgYSByYW5kb20gc3RhcnRpbmcgcG9zaXRpb24uCisgICAgICAg
IChCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5yYW5kb21WZWxvY2l0eSk6IFJldHVy
bnMgYSByYW5kb20gdmVsb2NpdHkuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnBy
b3RvdHlwZS5yYW5kb21BbmdsZSk6IFJldHVybnMgYSByYW5kb20gYW5nbGUuCisgICAgICAgIChC
b3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5yYW5kb21Db2xvcik6IFJldHVybnMgYSBy
YW5kb20gY29sb3Igbm90IHRvbyBkYXJrIGFuZCBub3QgdG9vIGxpZ2h0LgorICAgICAgICAoQm91
bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucmFuZG9tUm90YXRlcik6IFJldHVybnMgYSBy
YW5kb20gcm90YXRlci4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBl
LmFuaW1hdGUpOiBBbmltYXRlcyBhbGwgdGhlIHBhcnRpY2xlcy4KKyAgICAgICAgKEJvdW5jaW5n
UGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnR1bmUpOiBDaGFuZ2VzIHRoZSB0ZXN0IGJ5IGFkZGlu
ZyBvciByZW1vdmluZyBwYXJ0aWNsZXMuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0YWdl
LnByb3RvdHlwZS5jbGVhcik6IFJlbW92ZXMgYWxsIHRoZSBwYXJ0aWNsZXMuCisgICAgICAgIAor
ICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmspOiBSdW5zIHRoZSBiZW5jaG1hcmsg
Zm9yIGJvdW5jaW5nIHBhcnRpY2xlcyB0ZXN0LgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNC
ZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyBhbiBhbmltYXRvciBv
ZiB0eXBlIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IuCisgICAgICAgIChCb3VuY2luZ1BhcnRp
Y2xlc0JlbmNobWFyay5wcm90b3R5cGUudHVuZSk6IFR1bmVzIHRoZSB0ZXN0IHRocm91Z2ggdGhl
IGN1cnJlbnQgc3RhZ2UuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90
b3R5cGUuY2xlYXIpOiBDbGVhcnMgdGhlIHRlc3QgdGhyb3VnaCB0aGUgY3VycmVudCBzdGFnZS4K
KyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5zaG93UmVzdWx0
cyk6IFNob3dzIHRoZSByZXN1bHRzL3Byb2dyZXNzIHRocm91Z2ggaXRzIHJlY29yZFRhYmxlIGFu
ZCBwcm9ncmVzc0Jhci4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMv
Ym91bmNpbmctc2hhcGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nU2hhcGUpOiBBIHN1
YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdTaGFwZS5wcm90
b3R5cGUuX2NyZWF0ZVNwYW4pOiBDcmVhdGVzIGEgPHNwYW4+IGVsZW1lbnQgYW5kIHRha2VzIHRo
ZSBzaGFwZSBhbmQgY2xpcHBpbmcgY2xhc3NlcyBpbnRvIGNvbnNpZGVyYXRpb24uCisgICAgICAg
IChCb3VuY2luZ1NoYXBlLnByb3RvdHlwZS5fbW92ZSk6IE1vdmVzIHRoZSBwYXJ0aWNsZSB0byBh
IG5ldyBsb2NhdGlvbi4gQXBwbHkgdHJhbnNmb3JtIHNpbmNlIGl0IGRvZXMgbm90IHJlcXVpcmUg
bGF5b3V0LgorICAgICAgICAoQm91bmNpbmdTaGFwZS5wcm90b3R5cGUuYW5pbWF0ZSk6IFJvdGF0
ZXMgYW5kIG1vdmVzIHRoZSBzaGFwZSB0byBhIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgCisgICAg
ICAgIChCb3VuY2luZ1NoYXBlc1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNs
ZXNTdGFnZS4KKyAgICAgICAgKEJvdW5jaW5nU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBh
cnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNpbmdTaGFwZS4KKyAgICAg
ICAgKEJvdW5jaW5nU2hhcGVzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCk6
IFJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBmb3JtIHRoZSBwYXJlbnQgY2hpbGRy
ZW4gbGlzdC4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ1NoYXBlc0JlbmNobWFyayk6IEEg
c3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLgorICAgICAgICAoQm91bmNp
bmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdl
IG9mIHR5cGUgQm91bmNpbmdTaGFwZXNTdGFnZS4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtD
bGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJvdW5jaW5nU2hhcGVz
QmVuY2htYXJrLgorCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvYm91bmNpbmctaW1h
Z2VzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nSW1hZ2UpOiBBIHN1YiBjbGFzcyBvZiBC
b3VuY2luZ1BhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdJbWFnZS5wcm90b3R5cGUuX21vdmUp
OiBNb3ZlIHRoZSBwYXJ0aWNsZSB0byBhIG5ldyBsb2NhdGlvbi4gQXBwbHkgdHJhbnNmb3JtIHNp
bmNlIGl0IGRvZXMgbm90IHJlcXVpcmUgbGF5b3V0LgorICAgICAgICAoQm91bmNpbmdJbWFnZS5w
cm90b3R5cGUuYW5pbWF0ZSk6IFJvdGF0ZXMgYW5kIG1vdmVzIHRoZSBzaGFwZSB0byBhIG5ldyBs
b2NhdGlvbi4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0ltYWdlc1N0YWdlKTogQSBzdWIg
Y2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS4KKyAgICAgICAgKEJvdW5jaW5nSW1hZ2Vz
U3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlIGEgcGFydGljbGUgb2YgdHlw
ZSBCb3VuY2luZ0ltYWdlLgorICAgICAgICAoQm91bmNpbmdJbWFnZXNTdGFnZS5wcm90b3R5cGUu
cGFydGljbGVXaWxsQmVSZW1vdmVkKTogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQg
Zm9ybSB0aGUgcGFyZW50IGNoaWxkcmVuIGxpc3QuCisgICAgICAgIAorICAgICAgICAoQm91bmNp
bmdJbWFnZXNCZW5jaG1hcmspOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNo
bWFyay4KKyAgICAgICAgKEJvdW5jaW5nSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVT
dGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nSW1hZ2VzU3RhZ2UuCisgICAg
ICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsg
b2YgdHlwZSBCb3VuY2luZ0ltYWdlc0JlbmNobWFyay4KKyAgICAgICAgCisgICAgICAgICogQW5p
bW9tZXRlci9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qczogQWRkZWQuCisgICAg
ICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNs
ZS4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLl9kcmF3KTogRHJhd3Mg
YSBzaGFwZSBvbiB0aGUgY29udGV4dCBvZiBhIGNhbnZhcy4KKyAgICAgICAgKEJvdW5jaW5nQ2Fu
dmFzU2hhcGUucHJvdG90eXBlLmFuaW1hdGUpOiBNb3ZlcyB0aGUgQm91bmNpbmdDYW52YXNTaGFw
ZSB0byBhIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1No
YXBlc1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS4KKyAgICAg
ICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTog
Q3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNpbmdDYW52YXNTaGFwZS4KKyAgICAgICAg
CisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yKTogQSBzdWIgY2xhc3Mgb2Yg
Qm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVz
QW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBDbGVhcnMgdGhlIGNvbnRleHQgYmVmb3JlIHJl
ZHJhd2luZyB0aGUgcGFydGljbGVzLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nQ2FudmFz
U2hhcGVzQmVuY2htYXJrKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1h
cmsuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3Jl
YXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ0NhbnZhc1NoYXBlc1N0
YWdlLgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNy
ZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyBhbiBhbmltYXRvciBvZiB0eXBlIEJvdW5jaW5nQ2FudmFz
U2hhcGVzQW5pbWF0b3IuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6
IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFy
ay4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFn
ZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZSk6IEEgc3ViIGNsYXNz
IG9mIEJvdW5jaW5nUGFydGljbGUuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlLnByb3Rv
dHlwZS5fZHJhdyk6IERyYXdzIGFuIGltYWdlIG9uIHRoZSBjb250ZXh0IG9mIGEgY2FudmFzLgor
ICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IE1vdmVzIHRo
ZSBCb3VuY2luZ0NhbnZhc0ltYWdlIHRvIGEgbmV3IGxvY2F0aW9uLgorICAgICAgICAKKyAgICAg
ICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1Bh
cnRpY2xlc1N0YWdlLgorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS5wcm90b3R5
cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlwZSBCb3VuY2luZ0Nh
bnZhc0ltYWdlLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0
b3IpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLgorICAgICAgICAo
Qm91bmNpbmdDYW52YXNJbWFnZXNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6IENsZWFycyB0
aGUgY29udGV4dCBiZWZvcmUgcmVkcmF3aW5nIHRoZSBwYXJ0aWNsZXMuCisgICAgICAgIAorICAg
ICAgICAoQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmspOiBBIHN1YiBjbGFzcyBvZiBCb3Vu
Y2luZ1BhcnRpY2xlc0JlbmNobWFyay4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVu
Y2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJv
dW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlc0Jl
bmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBDcmVhdGVzIGFuIGFuaW1hdG9yIG9m
IHR5cGUgQm91bmNpbmdDYW52YXNJbWFnZXNBbmltYXRvci4KKyAgICAgICAgKHdpbmRvdy5iZW5j
aG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJvdW5jaW5n
Q2FudmFzSW1hZ2VzQmVuY2htYXJrLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Jl
c291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5n
U3ZnU2hhcGUpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlLgorICAgICAgICAoQm91
bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZUNpcmNsZSk6IFJldHVybnMgYSBuZXdseSBj
cmVhdGVkIFNWRyA8Y2lyY2xlPiBlbGVtZW50LgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZS5w
cm90b3R5cGUuX2NyZWF0ZVJlY3QpOiBSZXR1cm5zIGEgbmV3bHkgY3JlYXRlZCBTVkcgPHJlY3Q+
IGVsZW1lbnQuIAorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX21vdmUpOiBN
b3ZlIHRoZSBwYXJ0aWNsZSB0byBhIG5ldyBsb2NhdGlvbi4gQXBwbHkgdHJhbnNmb3JtIHNpbmNl
IGl0IGRvZXMgbm90IHJlcXVpcmUgbGF5b3V0LgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZS5w
cm90b3R5cGUuYW5pbWF0ZSk6IFJvdGF0ZXMgYW5kIG1vdmVzIHRoZSBzaGFwZSB0byBhIG5ldyBs
b2NhdGlvbi4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlKTogQSBz
dWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS4KKyAgICAgICAgKEJvdW5jaW5nU3Zn
U2hhcGVzU3RhZ2UucHJvdG90eXBlLmVuc3VyZUNsaXBTdGFySXNDcmVhdGVkKTogRW5zdXJlIHRo
ZSBhIDxjbGlwUGF0aD4gZWxlbWVudCB3aXRoIGlkPSJzdGFyLWNsaXAiIGlzIGNyZWF0ZWQuCisg
ICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5lbnN1cmVEZWZzSXNDcmVh
dGVkKTogRW5zdXJlIGEgPGRlZnM+IGVsZW1lbnQgaXMgY3JlYXRlZC4KKyAgICAgICAgKEJvdW5j
aW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZUdyYWRpZW50KTogQ3JlYXRlcyBhIDxs
aW5lYXJHcmFkaWVudD4gZWxlbWVudC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2Uu
cHJvdG90eXBlLl9jcmVhdGVEZWZzKTogQ3JlYXRlcyBhIG5ldyA8ZGVmcz4gZWxlbWVudC4KKyAg
ICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLl9jcmVhdGVDbGlwU3Rhcik6
IENyZWF0ZSBhIG5ldyA8Y2xpcFBhdGg+IGVsZW1lbnQgd2l0aCBpZD0ic3Rhci1jbGlwIi4KKyAg
ICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTog
Q3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNpbmdTdmdTaGFwZS4KKyAgICAgICAgKEJv
dW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCk6IFJl
bW92ZSB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGZvcm0gdGhlIHBhcmVudCBjaGlsZHJlbiBs
aXN0LgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrKTogQSBz
dWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuCisgICAgICAgIChCb3VuY2lu
Z1N2Z1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3Rh
Z2Ugb2YgdHlwZSBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLgorICAgICAgICAod2luZG93LmJlbmNo
bWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5cGUgQm91bmNpbmdT
dmdTaGFwZXNCZW5jaG1hcmsuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9ib3Vu
Y2luZy1zdmctaW1hZ2VzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnSW1hZ2UpOiBB
IHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdTdmdJbWFn
ZS5wcm90b3R5cGUuX21vdmUpOiBNb3ZlIHRoZSBwYXJ0aWNsZSB0byBhIG5ldyBsb2NhdGlvbi4g
QXBwbHkgdHJhbnNmb3JtIHNpbmNlIGl0IGRvZXMgbm90IHJlcXVpcmUgbGF5b3V0LgorICAgICAg
ICAoQm91bmNpbmdTdmdJbWFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IFJvdGF0ZXMgYW5kIG1vdmVz
IHRoZSBzaGFwZSB0byBhIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2lu
Z1N2Z0ltYWdlc1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS4K
KyAgICAgICAgKEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xl
KTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNpbmdTdmdJbWFnZS4KKyAgICAgICAg
KEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCk6
IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGZvcm0gdGhlIHBhcmVudCBjaGlsZHJl
biBsaXN0LgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrKTog
QSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuCisgICAgICAgIChCb3Vu
Y2luZ1N2Z0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEg
c3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlLgorICAgICAgICAod2luZG93LmJl
bmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5cGUgQm91bmNp
bmdTdmdJbWFnZXNCZW5jaG1hcmsuIAorCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMv
Z3JhcGguanM6IEFkZGVkLgorICAgICAgICAoZ3JhcGgpOiBEcmF3cyBhIGNoYXJ0IGZvciBhIHRl
c3Qgc2FtcGxlZCBkYXRhLiBJdCBzaG93cyB0d28geS1heGlzZXM6IG9uZSBmb3IgdGhlIHBhcnRp
Y2xlcyBhbmQgdGhlIHNlY29uZCBmb3IgRlBTLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21l
dGVyL3Jlc291cmNlcy95aW4teWFuZy5wbmc6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIv
cmVzb3VyY2VzL3lpbi15YW5nLnN2ZzogQWRkZWQuCisgICAgICAgIEltYWdlcyB1c2VkIGJ5IHRo
ZSBib3VuY2luZyBpbWFnZXMgdGVzdHMuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIv
cmVzb3VyY2VzL3Rlc3RzLmpzOiBBZGRlZC4KKyAgICAgICAgKHN1aXRlRnJvbU5hbWUpOiBSZXR1
cm5zIGEgc3VpdGUgZ2l2ZW4gaXRzIG5hbWUuCisgICAgICAgICh0ZXN0RnJvbU5hbWUpOiBSZXR1
cm5zIGEgdGVzdCBnaXZlbiBpdHMgc3VpdGUgYW5kIG5hbWUuCisKIDIwMTUtMDgtMjcgIENzYWJh
IE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbRUZMXSBSRUdSRVNT
SU9OKHIxODg3OTMpOiBJdCBtYWRlIDIwMCBsYXlvdXQgdGVzdHMgYW5kIEJpbmRpbmdzL2V2ZW50
LXRhcmdldC13cmFwcGVyLmh0bWwgcGVyZm9ybWFuY2UgdGVzdCBmYWlsCkluZGV4OiBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvYW5pbW9tZXRlci5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci9hbmltb21ldGVyLmh0bWwJKHJldmlzaW9uIDApCisrKyBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvYW5pbW9tZXRlci5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvYW5pbW9tZXRlci5jc3MiPgorICA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL21haW4uanMiIGRlZmVyPjwvc2NyaXB0PgorICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3Rlc3RzLmpzIiBkZWZlcj0iIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzIiBkZWZlcj48L3NjcmlwdD4KKyAgPHNj
cmlwdCBzcmM9InJlc291cmNlcy9hbmltb21ldGVyLmpzIiBkZWZlcj48L3NjcmlwdD4KKyAgPHNj
cmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2QzLzMuNS41
L2QzLm1pbi5qcyIgZGVmZXI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZ3Jh
cGguanMiIGRlZmVyPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxtYWluPgorICAgIDxz
ZWN0aW9uIGlkPSJob21lIiBjbGFzcz0ic2VsZWN0ZWQiPgorICAgICAgPHA+CisgICAgICAgIEFu
aW1vbWV0ZXIgaXMgYSBicm93c2VyIGJlbmNobWFyayB0aGF0IG1lYXN1cmVzIHRoZSBjb21wbGV4
aXR5IG9mIGFuIGFuaW1hdGlvbiBmb3IKKyAgICAgICAgd2hpY2ggYSBicm93c2VyIGNhbiBhY2hp
ZXZlIDUwIEZQUyAoZnJhbWUgcGVyIHNlY29uZCkuIEl0IHVzZXMgYWRhcHRpdmUgYW5pbWF0aW9u
cworICAgICAgICB0byB0dW5lIHRoZWlyIGNvbXBsZXhpdGllcyB0byBzdGF5IGNsb3NlIHRvIDUw
IEZQUy4KKyAgICAgIDwvcD4KKyAgICAgIDxkaXYgY2xhc3M9Im9wdGlvbnMiPgorICAgICAgICA8
ZGl2IGNsYXNzPSJjb2x1bW4iPgorICAgICAgICAgIDxsYWJlbD48aW5wdXQgaWQ9Imh0bWwtc3Vp
dGUiIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPiBIVE1MIGVsZW1lbnRzIHN1aXRlPC9sYWJlbD48
YnI+CisgICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD0iY2FudmFzLXN1aXRlIiB0eXBlPSJjaGVj
a2JveCIgY2hlY2tlZD4gQ2FudmFzIGRyYXdpbmdzIHN1aXRlPC9sYWJlbD48YnI+CisgICAgICAg
ICAgPGxhYmVsPjxpbnB1dCBpZD0ic3ZnLXN1aXRlIiB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD4g
U1ZHIGVsZW1lbnRzIHN1aXRlPC9sYWJlbD4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXY+
CisgICAgICAgICAgPGxhYmVsPlRlc3QgaW50ZXJ2YWw6IDxpbnB1dCB0eXBlPSJudW1iZXIiIGlk
PSJ0ZXN0LWludGVydmFsIiB2YWx1ZT0iMzAiPiBzZWNvbmRzPC9sYWJlbD4KKyAgICAgICAgICA8
bGFiZWw+RnJhbWUgcmF0ZTogPGlucHV0IHR5cGU9Im51bWJlciIgaWQ9ImZyYW1lLXJhdGUiIHZh
bHVlPSI1MCI+IGZwczwvbGFiZWw+ICAgICAgICAgIAorICAgICAgICA8L2Rpdj4KKyAgICAgIDwv
ZGl2PgorICAgICAgPGRpdiBjbGFzcz0iYnV0dG9ucyI+CisgICAgICAgIDxidXR0b24gb25jbGlj
az0ic3RhcnRUZXN0KCkiPlN0YXJ0IFRlc3Q8L2J1dHRvbj4KKyAgICAgIDwvZGl2PgorICAgIDwv
c2VjdGlvbj4KKyAgICA8c2VjdGlvbiBpZD0icnVubmluZyI+CisgICAgICA8ZGl2IGlkPSJ0ZXN0
Q29udGFpbmVyIj48L2Rpdj4KKyAgICAgIDxkaXYgaWQ9InByb2dyZXNzIj4KKyAgICAgICAgPGRp
diBpZD0icHJvZ3Jlc3MtY29tcGxldGVkIj48L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgICAgPGRp
diBpZD0icmVjb3JkIj4KKyAgICAgICAgPHRhYmxlIGNsYXNzPSJyZWNvcmQtdGFibGUiPjwvdGFi
bGU+CisgICAgICA8L2Rpdj4KKyAgICA8L3NlY3Rpb24+CisgICAgPHNlY3Rpb24gaWQ9InJlc3Vs
dHMiPgorICAgICAgPGgxPlJlc3VsdHM8L2gxPgorICAgICAgPHRhYmxlIGNsYXNzPSJyZXN1bHRz
LXRhYmxlIj48L3RhYmxlPgorICAgICAgPGRpdiBjbGFzcz0iYnV0dG9ucyI+CisgICAgICAgIDxi
dXR0b24gb25jbGljaz0ic3RhcnRUZXN0KCkiPlRlc3QgQWdhaW48L2J1dHRvbj4KKyAgICAgIDwv
ZGl2PgorICAgIDwvc2VjdGlvbj4gIAorICAgIDxzZWN0aW9uIGlkPSJncmFwaCI+CisgICAgICA8
aDE+R3JhcGg8L2gxPgorICAgICAgPGRpdiBpZD0iZ3JhcGhDb250YWluZXIiPjwvZGl2PgorICAg
ICAgPGRpdiBjbGFzcz0iYnV0dG9ucyI+CisgICAgICAgIDxidXR0b24gb25jbGljaz0ic2hvd1Jl
c3VsdHMoKSI+UmVzdWx0czwvYnV0dG9uPgorICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InN0YXJ0
VGVzdCgpIj5UZXN0IEFnYWluPC9idXR0b24+ICAgICAgICAKKyAgICAgIDwvZGl2PgorICAgIDwv
c2VjdGlvbj4gIAorICA8L21haW4+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0
bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvYm91bmNpbmct
Y2FudmFzLWltYWdlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlPgorICAgIGltZy5oaWRkZW4gewor
ICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOworICAg
IH0KKyAgPC9zdHlsZT4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIg
aHJlZj0icmVzb3VyY2VzL2JlbmNobWFyay5jc3MiPgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L21haW4uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JlbmNobWFyay5q
cyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVz
LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1jYW52YXMt
aW1hZ2VzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8aW1nIGNsYXNzPSJoaWRk
ZW4iIHNyYz0icmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI+CisgIDxpbWcgY2xhc3M9ImhpZGRlbiIg
c3JjPSJyZXNvdXJjZXMveWluLXlhbmcucG5nIj4KKyAgPGNhbnZhcyBpZD0ic3RhZ2UiPjwvY2Fu
dmFzPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sCShyZXZpc2lvbiAwKQor
KysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9
InJlc291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9tYWlu
LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9iZW5jaG1hcmsuanMiPjwv
c2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+
PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBl
cy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGNhbnZhcyBpZD0ic3RhZ2UiPjwv
Y2FudmFzPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL2JvdW5jaW5nLWltYWdlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci9ib3VuY2luZy1pbWFnZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci9ib3VuY2luZy1pbWFnZXMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHls
ZT4KKyAgICBpbWcgeworICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIH0KKyAgPC9zdHls
ZT4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0icmVzb3Vy
Y2VzL2JlbmNobWFyay5jc3MiPgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21haW4uanMiPjwv
c2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+
CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3Njcmlw
dD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1pbWFnZXMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9InN0YWdlIj48L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ib3VuY2luZy1zaGFwZXMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvYm91bmNpbmct
c2hhcGVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
Ym91bmNpbmctc2hhcGVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5
cGU9InRleHQvY3NzIiBocmVmPSJyZXNvdXJjZXMvYmVuY2htYXJrLmNzcyI+CisgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3Vu
Y2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Jv
dW5jaW5nLXNoYXBlcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0i
c3RhZ2UiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sCShyZXZpc2lvbiAw
KQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2JlbmNo
bWFyay5jc3MiPgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PiAK
KyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9iZW5jaG1hcmsuanMiPjwvc2NyaXB0PgorICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKyAgPHN2ZyBpZD0ic3RhZ2UiPjwvc3ZnPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL2JvdW5jaW5nLXN2Zy1zaGFwZXMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvYm91bmNpbmct
c3ZnLXNoYXBlcy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0icmVzb3VyY2VzL2JlbmNobWFyay5jc3MiPgorICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JlbmNo
bWFyay5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFy
dGljbGVzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1z
dmctc2hhcGVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8c3ZnIGlkPSJzdGFn
ZSI+PC9zdmc+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvYW5pbW9tZXRlci5jc3MJKHJldmlzaW9uIDApCisr
KyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjEzIEBACitib2R5IHsKKyAgICBiYWNrZ3JvdW5kLWNv
bG9yOiByZ2IoOTYsIDk2LCA5Nik7CisgICAgY29sb3I6IHJnYigyMzUsIDIzNSwgMjM1KTsKKyAg
ICBmb250LWZhbWlseTogIkhlbHZldGljYSBOZXVlIiwgSGVsdmV0aWNhLCBWZXJkYW5hLCBzYW5z
LXNlcmlmOworfQorCittYWluIHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgd2lkdGg6IDgwMHB4OworICAgIGhlaWdodDogNjAwcHg7CisgICAgdG9w
OiA1MCU7CisgICAgbGVmdDogNTAlOworICAgIG1hcmdpbi10b3A6IC0zMjFweDsKKyAgICBtYXJn
aW4tbGVmdDogLTQyMXB4OworICAgIHBhZGRpbmc6IDE1cHg7CisgICAgYm9yZGVyOiA2cHggc29s
aWQgcmdiKDIzNSwgMjM1LCAyMzUpOworICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7Cit9CisKK3Ag
eworICAgIGZvbnQtc2l6ZTogMTZweDsKKyAgICBsaW5lLWhlaWdodDogMjFweDsKK30KKworc2Vj
dGlvbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworc2VjdGlvbiA+IHAgeworICAgIG1hcmdp
bjogMTBweCAyMHB4OworfQorCitzZWN0aW9uI2hvbWUgPiBwIHsKKyAgICBtYXJnaW46IDAgYXV0
bzsKKyAgICB3aWR0aDogNzAlOworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKK30KKworc2VjdGlv
biNob21lID4gcDpmaXJzdC1jaGlsZCB7CisgICAgbWFyZ2luLXRvcDogMTYwcHg7CisgICAgdGV4
dC1hbGlnbjogY2VudGVyOworfQorCitzZWN0aW9uLnNlbGVjdGVkIHsKKyAgICBkaXNwbGF5OiBi
bG9jazsKK30KKworI3Rlc3RDb250YWluZXIgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAg
ICB0b3A6IDE1cHg7CisgICAgbGVmdDogMTVweDsKKyAgICB3aWR0aDogODAwcHg7CisgICAgaGVp
Z2h0OiA2MDBweDsKK30KKworc2VjdGlvbiNydW5uaW5nID4gI3Byb2dyZXNzIHsKKyAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgYm90dG9tOiAtNnB4OworICAgIGxlZnQ6IDYwcHg7CisgICAg
cmlnaHQ6IDYwcHg7CisgICAgaGVpZ2h0OiA2cHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdi
KDEyOCwgMTI4LCAxMjgpOworICAgIGJvcmRlci1sZWZ0OiA2cHggc29saWQgcmdiKDQ2LCA1MSwg
NTUpOworICAgIGJvcmRlci1yaWdodDogNnB4IHNvbGlkIHJnYig0NiwgNTEsIDU1KTsKK30KKwor
c2VjdGlvbiNydW5uaW5nICNwcm9ncmVzcy1jb21wbGV0ZWQgeworICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDogMDsKKyAgICBoZWlnaHQ6IDZweDsKKyAgICB3
aWR0aDogMDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7Cit9CisK
K3NlY3Rpb24jcnVubmluZyA+ICNyZWNvcmQgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAg
ICBib3R0b206IC0xMzBweDsKKyAgICBsZWZ0OiAwcHg7CisgICAgcmlnaHQ6IDBweDsKKyAgICBo
ZWlnaHQ6IDc1cHg7CisgICAgY29sb3I6IHJnYigxMjgsIDEyOCwgMTI4KTsKKyAgICBwYWRkaW5n
OiAxNXB4OworICAgIGJvcmRlcjogNnB4IHNvbGlkIHJnYigyMzUsIDIzNSwgMjM1KTsKKyAgICBi
b3JkZXItcmFkaXVzOiAyMHB4OworfQorCitzZWN0aW9uI3J1bm5pbmcgPiAjcmVjb3JkID4gdGFi
bGUsCitzZWN0aW9uI3Jlc3VsdHMgPiB0YWJsZSB7CisgICAgd2lkdGg6IDEwMCU7Cit9CisKK3Nl
Y3Rpb24jcnVubmluZyA+ICNyZWNvcmQgPiB0YWJsZSB0ZCwgdGgsCitzZWN0aW9uI3Jlc3VsdHMg
PiB0YWJsZSB0ZCwgdGggeworICAgIGZvbnQtc2l6ZTogMTRweDsKKyAgICBib3JkZXI6IDFweCBz
b2xpZCAjOThiZjIxOworICAgIHBhZGRpbmc6IDNweCA3cHggMnB4IDdweDsKK30KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK3NlY3Rpb24jcnVubmluZyA+ICNy
ZWNvcmQgPiB0YWJsZSB0ci5hbHQsIHRkCitzZWN0aW9uI3Jlc3VsdHMgPiB0YWJsZSB0ci5hbHQs
IHRkIHsKKyAgICBjb2xvcjogIzAwMDAwMDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUFGMkQz
OworfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitzZWN0
aW9uI3J1bm5pbmcgPiAjcmVjb3JkID4gdGFibGUgdGgsCitzZWN0aW9uI3Jlc3VsdHMgPiB0YWJs
ZSB0aCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogI0E3Qzk0MjsgCisgICAgdGV4dC1hbGlnbjog
Y2VudGVyOworfQorCisub3B0aW9ucyB7CisgICAgbWFyZ2luOjAgYXV0bzsgICAgCisgICAgbWFy
Z2luLXRvcDogMzBweDsKKyAgICB3aWR0aDogNTAwcHg7CisgICAgYWxpZ246IGNlbnRlcjsKK30K
KworLmNvbHVtbiB7CisgICAgd2lkdGg6IDUwJTsKKyAgICBmbG9hdDpsZWZ0OworICAgIHBhZGRp
bmc6NXB4OworfQorCitpbnB1dFt0eXBlPSJudW1iZXIiXSB7CisgICB3aWR0aDo1MHB4OworfQor
CisuYnV0dG9ucyB7CisgICAgbWFyZ2luLXRvcDogMTBweDsKKyAgICB0ZXh0LWFsaWduOiBjZW50
ZXI7CisgICAgY2xlYXI6IGJvdGg7Cit9CisKK2J1dHRvbiB7CisgICAgLXdlYmtpdC1hcHBlYXJh
bmNlOiBub25lOworICAgIGJvcmRlcjogM3B4IHNvbGlkIHJnYigyMzUsIDIzNSwgMjM1KTsKKyAg
ICBib3JkZXItcmFkaXVzOiAxMHB4OworICAgIG1pbi13aWR0aDogMjAwcHg7CisgICAgcGFkZGlu
ZzogNXB4IDIwcHg7CisgICAgbWFyZ2luOiAwIDQwcHg7CisgICAgZm9udC1zaXplOiAyNXB4Owor
ICAgIGNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7CisgICAgYmFja2dyb3VuZC1jb2xvcjogdHJh
bnNwYXJlbnQ7CisKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOworfQorCitidXR0b246
YWN0aXZlIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7CisgICAg
Y29sb3I6IHJnYig0NiwgNTEsIDU1KTsKKyAgICBib3JkZXItY29sb3I6IHJnYigyMzUsIDIzNSwg
MjM1KSAhaW1wb3J0YW50OworfQorCitidXR0b246Zm9jdXMgeworICAgIG91dGxpbmU6IG5vbmU7
CisgICAgYm9yZGVyLWNvbG9yOiByZ2IoMjMyLCA3OSwgNzkpOworfQorCisuc21hbGwtYnV0dG9u
IHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgYm9yZGVyOiAxcHggc29saWQg
cmdiKDk2LCA5NiwgOTYpOworICAgIGJvcmRlci1yYWRpdXM6IDJweDsKKyAgICBwYWRkaW5nOiAx
cHggNHB4OworICAgIG1hcmdpbjogMCA0cHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNw
YXJlbnQ7CisgICAgY3Vyc29yOiBwb2ludGVyOworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAg
ICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOworfQorCisjZ3JhcGhDb250YWluZXIgeworICBm
b250OiAxMHB4IHNhbnMtc2VyaWY7CisgIGNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7ICAKK30K
KworLmF4aXMgcGF0aCwKKy5heGlzIGxpbmUgeworICBmaWxsOiBub25lOworICBzdHJva2U6IHJn
YigyMzUsIDIzNSwgMjM1KTsKKyAgc2hhcGUtcmVuZGVyaW5nOiBjcmlzcEVkZ2VzOworfQorCisu
bGVmdC1zYW1wbGVzIHsKKyAgZmlsbDogbm9uZTsKKyAgc3Ryb2tlOiBzdGVlbGJsdWU7CisgIHN0
cm9rZS13aWR0aDogMS41cHg7Cit9CisKKy5yaWdodC1zYW1wbGVzIHsKKyAgICBmaWxsOiBub25l
OworICAgIHN0cm9rZTogcmVkOworICAgIHN0cm9rZS13aWR0aDogMS41cHg7Cit9CisKKy5zbWFw
bGUtdGltZSB7CisgICAgZmlsbDogbm9uZTsKKyAgICBzdHJva2U6IGdyZWVuOworICAgIHN0cm9r
ZS13aWR0aDogMS41cHg7Cit9CisKKy5sZWZ0LW1lYW4geworICAgIGZpbGw6IG5vbmU7CisgICAg
c3Ryb2tlOiB5ZWxsb3c7CisgICAgc3Ryb2tlLXdpZHRoOiAxLjVweDsKK30KKworLnJpZ2h0LW1l
YW4geworICAgIGZpbGw6IG5vbmU7CisgICAgc3Ryb2tlOiBtYWdlbnRhOworICAgIHN0cm9rZS13
aWR0aDogMS41cHg7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3Vy
Y2VzL2FuaW1vbWV0ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Jlc291cmNlcy9hbmltb21ldGVyLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9hbmltb21ldGVyLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTAyIEBACit3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50ID0geworICAgIGl0
ZXJhdGlvbkNvdW50OiAxLAorICAgIHRlc3RzQ291bnQ6IG51bGwsCisgICAgcHJvZ3Jlc3NCYXI6
IG51bGwsCisgICAgcmVjb3JkVGFibGU6IG51bGwsCisgICAgdGVzdEludGVydmFsOiAzMDAwMCwK
KyAgICBmcmFtZVJhdGU6IDUwLAorICAgIHNjb3JlOiAwLAorICAgIF9pdGVyYXRpb25zU2FtcGxl
cnM6IFtdLAorICAgIF9yZXN1bHRzVGFibGU6IG51bGwsCisgICAgX2lzQ2hyb21lOiAvQ2hyb21l
Ly50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmIC9Hb29nbGUgSW5jLy50ZXN0KG5hdmlnYXRv
ci52ZW5kb3IpLAorICAgIF9pc1NhZmFyaTogL1NhZmFyaS8udGVzdChuYXZpZ2F0b3IudXNlckFn
ZW50KSAmJiAvQXBwbGUgQ29tcHV0ZXIvLnRlc3QobmF2aWdhdG9yLnZlbmRvciksCisgICAgd2ls
bEFkZFRlc3RGcmFtZTogZnVuY3Rpb24gKGZyYW1lKSB7CisgICAgICAgIHZhciBtYWluID0gZG9j
dW1lbnQucXVlcnlTZWxlY3RvcigibWFpbiIpOworICAgICAgICB2YXIgc3R5bGUgPSBnZXRDb21w
dXRlZFN0eWxlKG1haW4pOworICAgICAgICBmcmFtZS5zdHlsZS5sZWZ0ID0gbWFpbi5vZmZzZXRM
ZWZ0ICsgcGFyc2VJbnQoc3R5bGUuYm9yZGVyTGVmdFdpZHRoKSArIHBhcnNlSW50KHN0eWxlLnBh
ZGRpbmdMZWZ0KSArICJweCI7CisgICAgICAgIGZyYW1lLnN0eWxlLnRvcCA9IG1haW4ub2Zmc2V0
VG9wICsgcGFyc2VJbnQoc3R5bGUuYm9yZGVyVG9wV2lkdGgpICsgcGFyc2VJbnQoc3R5bGUucGFk
ZGluZ1RvcCkgKyAicHgiOworICAgIH0sCisgICAgZGlkUnVuVGVzdDogZnVuY3Rpb24gKCkgewor
ICAgICAgICB0aGlzLnByb2dyZXNzQmFyLmluY1JhbmdlKCk7CisgICAgfSwKKyAgICB3aWxsU3Rh
cnRGaXJzdEl0ZXJhdGlvbjogZnVuY3Rpb24gKCkgeworICAgICAgICB0aGlzLl9pdGVyYXRpb25z
U2FtcGxlcnMgPSBbXTsKKyAgICAgICAgdGhpcy5fcmVzdWx0c1RhYmxlID0gbmV3IFJlY29yZFRh
YmxlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5yZXN1bHRzLXRhYmxlIilbMF0pOworICAg
ICAgICAKKyAgICAgICAgdGhpcy5wcm9ncmVzc0JhciA9IG5ldyBQcm9ncmVzc0Jhcihkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicHJvZ3Jlc3MtY29tcGxldGVkIiksIHRoaXMudGVzdHNDb3VudCk7
CisgICAgICAgIHRoaXMucmVjb3JkVGFibGUgPSBuZXcgUmVjb3JkVGFibGUoZG9jdW1lbnQucXVl
cnlTZWxlY3RvckFsbCgiLnJlY29yZC10YWJsZSIpWzBdKTsKKyAgICB9LAorICAgIGRpZFJ1blN1
aXRlczogZnVuY3Rpb24gKHN1aXRlc1NhbXBsZXJzKSB7CisgICAgICAgIHRoaXMuX2l0ZXJhdGlv
bnNTYW1wbGVycy5wdXNoKHN1aXRlc1NhbXBsZXJzKTsKKyAgICB9LAorICAgIGRpZEZpbmlzaExh
c3RJdGVyYXRpb246IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGhpcy5zY29yZSA9IHRoaXMuX3Jl
c3VsdHNUYWJsZS5zaG93SXRlcmF0aW9ucyh0aGlzLl9pdGVyYXRpb25zU2FtcGxlcnMsICIiKTsK
KyAgICAgICAgc2hvd1Jlc3VsdHMoKTsKKyAgICB9LAorICAgIGJyb3dzZXIgOiBmdW5jdGlvbigp
IHsKKyAgICAgICAgaWYgKHRoaXMuX2lzQ2hyb21lKQorICAgICAgICAgICAgcmV0dXJuICJDaHJv
bWUiOworICAgICAgICBpZiAodGhpcy5faXNTYWZhcmkpCisgICAgICAgICAgICByZXR1cm4gIlNh
ZmFyaSI7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNob3dTZWN0
aW9uKHNlY3Rpb25JZGVudGlmaWVyLCBwdXNoU3RhdGUpIHsKKyAgICB2YXIgY3VycmVudFNlY3Rp
b25FbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2VjdGlvbi5zZWxlY3RlZCIpOwor
ICAgIGNvbnNvbGUuYXNzZXJ0KGN1cnJlbnRTZWN0aW9uRWxlbWVudCk7CisKKyAgICB2YXIgbmV3
U2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWN0aW9uSWRlbnRpZmll
cik7CisgICAgY29uc29sZS5hc3NlcnQobmV3U2VjdGlvbkVsZW1lbnQpOworCisgICAgY3VycmVu
dFNlY3Rpb25FbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInNlbGVjdGVkIik7CisgICAgbmV3U2Vj
dGlvbkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQiKTsKKworICAgIGlmIChwdXNoU3Rh
dGUpCisgICAgICAgIGhpc3RvcnkucHVzaFN0YXRlKHtzZWN0aW9uOiBzZWN0aW9uSWRlbnRpZmll
cn0sIGRvY3VtZW50LnRpdGxlKTsKK30KKworZnVuY3Rpb24gc3RhcnRCZW5jaG1hcmsoKSB7Cisg
ICAgdmFyIGNoZWNrYm94ZXMgPSBbIAorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
aHRtbC1zdWl0ZSIpLCAKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcy1z
dWl0ZSIpLCAKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2Zy1zdWl0ZSIpCisg
ICAgXTsKKyAgICB2YXIgZW5hYmxlZFN1aXRlcyA9IFN1aXRlcy5maWx0ZXIoZnVuY3Rpb24gKHN1
aXRlLCBpbmRleCkgeyByZXR1cm4gIXN1aXRlLmRpc2FibGVkICYmIGNoZWNrYm94ZXNbaW5kZXhd
LmNoZWNrZWQ7IH0pOworICAgIHZhciB0ZXN0c0NvdW50ID0gZW5hYmxlZFN1aXRlcy5yZWR1Y2Uo
ZnVuY3Rpb24gKHRlc3RzQ291bnQsIHN1aXRlKSB7IHJldHVybiB0ZXN0c0NvdW50ICsgc3VpdGUu
dGVzdHMubGVuZ3RoOyB9LCAwKTsKKyAgICBiZW5jaG1hcmtSdW5uZXJDbGllbnQudGVzdHNDb3Vu
dCA9IGJlbmNobWFya1J1bm5lckNsaWVudC5pdGVyYXRpb25Db3VudCAqIHRlc3RzQ291bnQ7Cisg
ICAgYmVuY2htYXJrUnVubmVyQ2xpZW50LnRlc3RJbnRlcnZhbCA9IHBhcnNlSW50KGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LWludGVydmFsIikudmFsdWUpICogMTAwMDsKKyAgICBiZW5j
aG1hcmtSdW5uZXJDbGllbnQuZnJhbWVSYXRlID0gcGFyc2VJbnQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImZyYW1lLXJhdGUiKS52YWx1ZSk7CisgICAgdmFyIHJ1bm5lciA9IG5ldyBCZW5jaG1h
cmtSdW5uZXIoZW5hYmxlZFN1aXRlcywgYmVuY2htYXJrUnVubmVyQ2xpZW50KTsKKyAgICBydW5u
ZXIucnVuTXVsdGlwbGVJdGVyYXRpb25zKGJlbmNobWFya1J1bm5lckNsaWVudC5pdGVyYXRpb25D
b3VudCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICBzaG93U2VjdGlvbigicnVu
bmluZyIpOworICAgIHN0YXJ0QmVuY2htYXJrKCk7Cit9CisKK2Z1bmN0aW9uIHNob3dSZXN1bHRz
KHNjb3JlKSB7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcmVz
dWx0cyA+IGgxIik7CisgICAgZWxlbWVudC50ZXh0Q29udGVudCA9ICJSZXN1bHRzOiIKKyAgICAK
KyAgICB2YXIgYnJvd3NlciA9IGJlbmNobWFya1J1bm5lckNsaWVudC5icm93c2VyKCk7ICAgIAor
ICAgIGlmIChicm93c2VyLmxlbmd0aCkKKyAgICAgICAgZWxlbWVudC50ZXh0Q29udGVudCArPSAi
IFticm93c2VyID0gIiArIGJyb3dzZXIgKyAiXSI7CisKKyAgICB2YXIgc2NvcmUgPSBiZW5jaG1h
cmtSdW5uZXJDbGllbnQuc2NvcmUudG9GaXhlZCgyKTsKKyAgICBlbGVtZW50LnRleHRDb250ZW50
ICs9ICIgW1Njb3JlID0gIiArIHNjb3JlICsgIl0iOworICAgICAgICAKKyAgICBzaG93U2VjdGlv
bigicmVzdWx0cyIsIHRydWUpOworfQorCitmdW5jdGlvbiBzaG93R3JhcGgodGVzdE5hbWUsIGF4
aXNlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KSB7CisgICAgdmFyIGVsZW1lbnQgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZ3JhcGggPiBoMSIpOworICAgIGVsZW1lbnQudGV4dENv
bnRlbnQgPSAiR3JhcGg6IgorCisgICAgaWYgKHRlc3ROYW1lLmxlbmd0aCkKKyAgICAgICAgZWxl
bWVudC50ZXh0Q29udGVudCArPSAiIFt0ZXN0ID0gIiArIHRlc3ROYW1lICsgIl0iOworICAgICAg
ICAgICAgCisgICAgZ3JhcGgoIiNncmFwaENvbnRhaW5lciIsIG5ldyBQb2ludCg3MDAsIDQwMCks
IG5ldyBJbnNldHMoMjAsIDUwLCAyMCwgNTApLCBheGlzZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGlt
ZU9mZnNldCk7CisgICAgc2hvd1NlY3Rpb24oImdyYXBoIiwgdHJ1ZSk7ICAgIAorfQpJbmRleDog
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvYmVu
Y2htYXJrLXJ1bm5lci5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE5MyBAQAorZnVuY3Rpb24gQmVuY2htYXJrUnVubmVyU3RhdGUoc3VpdGVzKSB7CisgICAg
dGhpcy5fc3VpdGVzID0gc3VpdGVzOworICAgIHRoaXMuX3N1aXRlSW5kZXggPSAtMTsKKyAgICB0
aGlzLl90ZXN0SW5kZXggPSAwOworICAgIHRoaXMubmV4dCgpOworfQorCitCZW5jaG1hcmtSdW5u
ZXJTdGF0ZS5wcm90b3R5cGUuY3VycmVudFN1aXRlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJu
IHRoaXMuX3N1aXRlc1t0aGlzLl9zdWl0ZUluZGV4XTsKK30KKworQmVuY2htYXJrUnVubmVyU3Rh
dGUucHJvdG90eXBlLmN1cnJlbnRUZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHN1aXRlID0g
dGhpcy5jdXJyZW50U3VpdGUoKTsKKyAgICByZXR1cm4gc3VpdGUgPyBzdWl0ZS50ZXN0c1t0aGlz
Ll90ZXN0SW5kZXhdIDogbnVsbDsKK30KKworQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBl
LmlzRmlyc3RUZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuICF0aGlzLl90ZXN0SW5kZXg7
Cit9CisKK0JlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24oKSB7
CisgICAgdGhpcy5fdGVzdEluZGV4Kys7CisKKyAgICB2YXIgc3VpdGUgPSB0aGlzLl9zdWl0ZXNb
dGhpcy5fc3VpdGVJbmRleF07CisgICAgaWYgKHN1aXRlICYmIHRoaXMuX3Rlc3RJbmRleCA8IHN1
aXRlLnRlc3RzLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHRoaXM7CisKKyAgICB0aGlzLl90ZXN0
SW5kZXggPSAwOworICAgIGRvIHsKKyAgICAgICAgdGhpcy5fc3VpdGVJbmRleCsrOworICAgIH0g
d2hpbGUgKHRoaXMuX3N1aXRlSW5kZXggPCB0aGlzLl9zdWl0ZXMubGVuZ3RoICYmIHRoaXMuX3N1
aXRlc1t0aGlzLl9zdWl0ZUluZGV4XS5kaXNhYmxlZCk7CisKKyAgICByZXR1cm4gdGhpczsKK30K
KworQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLnByZXBhcmVDdXJyZW50VGVzdCA9IGZ1
bmN0aW9uKHJ1bm5lciwgZnJhbWUpIHsKKyAgICB2YXIgc3VpdGUgPSB0aGlzLmN1cnJlbnRTdWl0
ZSgpOworICAgIHZhciB0ZXN0ID0gdGhpcy5jdXJyZW50VGVzdCgpOworICAgIHZhciBwcm9taXNl
ID0gbmV3IFNpbXBsZVByb21pc2U7CisgICAgZnJhbWUub25sb2FkID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHN1aXRlLnByZXBhcmUocnVubmVyLCBmcmFtZS5jb250ZW50V2luZG93LCBmcmFtZS5j
b250ZW50RG9jdW1lbnQpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7IHByb21pc2UucmVzb2x2ZShy
ZXN1bHQpOyB9KTsKKyAgICB9CisgICAgZnJhbWUuc3JjID0gdGVzdC51cmw7CisgICAgcmV0dXJu
IHByb21pc2U7Cit9CisKK2Z1bmN0aW9uIEJlbmNobWFya1J1bm5lcihzdWl0ZXMsIGNsaWVudCkg
eworICAgIHRoaXMuX3N1aXRlcyA9IHN1aXRlczsKKyAgICB0aGlzLl9jbGllbnQgPSBjbGllbnQ7
Cit9CisKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUud2FpdEZvckVsZW1lbnQgPSBmdW5jdGlv
bihzZWxlY3RvcikgeworICAgIHZhciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7CisgICAg
dmFyIGNvbnRlbnREb2N1bWVudCA9IHRoaXMuX2ZyYW1lLmNvbnRlbnREb2N1bWVudDsKKworICAg
IGZ1bmN0aW9uIHJlc29sdmVJZlJlYWR5KCkgeworICAgICAgICB2YXIgZWxlbWVudCA9IGNvbnRl
bnREb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKKyAgICAgICAgaWYgKGVsZW1lbnQp
CisgICAgICAgICAgICByZXR1cm4gcHJvbWlzZS5yZXNvbHZlKGVsZW1lbnQpOworICAgICAgICBz
ZXRUaW1lb3V0KHJlc29sdmVJZlJlYWR5LCA1MCk7CisgICAgfQorCisgICAgcmVzb2x2ZUlmUmVh
ZHkoKTsKKyAgICByZXR1cm4gcHJvbWlzZTsKK30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlw
ZS5fYXBwZW5kRnJhbWUgPSBmdW5jdGlvbihzcmMpIHsKKyAgICB2YXIgZnJhbWUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBmcmFtZS5zdHlsZS53aWR0aCA9ICI4MDBw
eCI7CisgICAgZnJhbWUuc3R5bGUuaGVpZ2h0ID0gIjYwMHB4IjsKKyAgICBmcmFtZS5zdHlsZS5i
b3JkZXIgPSAiMHB4IG5vbmUiOworICAgIGZyYW1lLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRl
IjsKKyAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoInNjcm9sbGluZyIsICJubyIpOworCisgICAgdmFy
IG1hcmdpbkxlZnQgPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLm1h
cmdpbkxlZnQpOworICAgIHZhciBtYXJnaW5Ub3AgPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmJvZHkpLm1hcmdpblRvcCk7CisgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoID4g
ODAwICsgbWFyZ2luTGVmdCAmJiB3aW5kb3cuaW5uZXJIZWlnaHQgPiA2MDAgKyBtYXJnaW5Ub3Ap
IHsKKyAgICAgICAgZnJhbWUuc3R5bGUubGVmdCA9IG1hcmdpbkxlZnQgKyAicHgiOworICAgICAg
ICBmcmFtZS5zdHlsZS50b3AgPSBtYXJnaW5Ub3AgKyAicHgiOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGZyYW1lLnN0eWxlLmxlZnQgPSAiMHB4IjsKKyAgICAgICAgZnJhbWUuc3R5bGUudG9wID0g
IjBweCI7CisgICAgfQorCisgICAgaWYgKHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGllbnQud2ls
bEFkZFRlc3RGcmFtZSkKKyAgICAgICAgdGhpcy5fY2xpZW50LndpbGxBZGRUZXN0RnJhbWUoZnJh
bWUpOworCisgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZnJhbWUsIGRvY3VtZW50LmJv
ZHkuZmlyc3RDaGlsZCk7CisgICAgdGhpcy5fZnJhbWUgPSBmcmFtZTsKKyAgICByZXR1cm4gZnJh
bWU7Cit9CisKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3JlbW92ZUZyYW1lID0gZnVuY3Rp
b24oKSB7CisgICAgaWYgKHRoaXMuX2ZyYW1lKSB7CisgICAgICAgIHRoaXMuX2ZyYW1lLnBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fZnJhbWUpOworICAgICAgICB0aGlzLl9mcmFtZSA9IG51
bGw7CisgICAgfQorfQorCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9ydW5UZXN0QW5kUmVj
b3JkUmVzdWx0cyA9IGZ1bmN0aW9uKHN0YXRlKSB7CisgICAgdmFyIHByb21pc2UgPSBuZXcgU2lt
cGxlUHJvbWlzZTsKKyAgICB2YXIgc3VpdGUgPSBzdGF0ZS5jdXJyZW50U3VpdGUoKTsKKyAgICB2
YXIgdGVzdCA9IHN0YXRlLmN1cnJlbnRUZXN0KCk7CisgICAgCisgICAgaWYgKHRoaXMuX2NsaWVu
dCAmJiB0aGlzLl9jbGllbnQud2lsbFJ1blRlc3RUZXN0KQorICAgICAgICB0aGlzLl9jbGllbnQu
d2lsbFJ1blRlc3Qoc3VpdGUsIHRlc3QpOworCisgICAgdmFyIGNvbnRlbnRXaW5kb3cgPSB0aGlz
Ll9mcmFtZS5jb250ZW50V2luZG93OworICAgIHZhciBzZWxmID0gdGhpczsKKworICAgIHN1aXRl
LnJ1bihjb250ZW50V2luZG93LAorICAgICAgICAgICAgdGVzdCwgCisgICAgICAgICAgICB0aGlz
Ll9jbGllbnQudGVzdEludGVydmFsLCAKKyAgICAgICAgICAgIHRoaXMuX2NsaWVudC5mcmFtZVJh
dGUsIAorICAgICAgICAgICAgdGhpcy5fY2xpZW50LnJlY29yZFRhYmxlLCAKKyAgICAgICAgICAg
IHRoaXMuX2NsaWVudC5wcm9ncmVzc0JhcikudGhlbihmdW5jdGlvbihzYW1wbGVyKSB7CisgICAg
ICAgIHZhciBzYW1wbGVycyA9IHNlbGYuX3N1aXRlc1NhbXBsZXJzW3N1aXRlLm5hbWVdIHx8IFtd
OworICAgICAgICAKKyAgICAgICAgc2FtcGxlcnNbdGVzdC5uYW1lXSA9IHNhbXBsZXI7CisgICAg
ICAgIHNlbGYuX3N1aXRlc1NhbXBsZXJzW3N1aXRlLm5hbWVdID0gc2FtcGxlcnM7CisKKyAgICAg
ICAgaWYgKHNlbGYuX2NsaWVudCAmJiBzZWxmLl9jbGllbnQuZGlkUnVuVGVzdCkKKyAgICAgICAg
ICAgIHNlbGYuX2NsaWVudC5kaWRSdW5UZXN0KHN1aXRlLCB0ZXN0KTsKKyAgICAgICAgCisgICAg
ICAgIHN0YXRlLm5leHQoKTsKKyAgICAgICAgaWYgKHN0YXRlLmN1cnJlbnRTdWl0ZSgpICE9IHN1
aXRlKQorICAgICAgICAgICAgc2VsZi5fcmVtb3ZlRnJhbWUoKTsKKyAgICAgICAgcHJvbWlzZS5y
ZXNvbHZlKHN0YXRlKTsKKyAgICB9KTsKKyAgICAKKyAgICByZXR1cm4gcHJvbWlzZTsKK30KKwor
QmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5zdGVwID0gZnVuY3Rpb24oc3RhdGUpIHsKKyAgICBp
ZiAoIXN0YXRlKSB7CisgICAgICAgIHN0YXRlID0gbmV3IEJlbmNobWFya1J1bm5lclN0YXRlKHRo
aXMuX3N1aXRlcyk7CisgICAgICAgIHRoaXMuX3N1aXRlc1NhbXBsZXJzID0ge307CisgICAgfQor
CisgICAgdmFyIHN1aXRlID0gc3RhdGUuY3VycmVudFN1aXRlKCk7CisgICAgaWYgKCFzdWl0ZSkg
eworICAgICAgICB0aGlzLl9maW5hbGl6ZSgpOworICAgICAgICB2YXIgcHJvbWlzZSA9IG5ldyBT
aW1wbGVQcm9taXNlOworICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJu
IHByb21pc2U7CisgICAgfQorCisgICAgaWYgKHN0YXRlLmlzRmlyc3RUZXN0KCkpIHsKKyAgICAg
ICAgdGhpcy5fbWFzdXJlZFZhbHVlc0ZvckN1cnJlbnRTdWl0ZSA9IHt9OworICAgICAgICB0aGlz
Ll9hcHBlbmRGcmFtZSgpOworICAgIH0KKworICAgIHZhciBzZWxmID0gdGhpczsKKyAgICByZXR1
cm4gc3RhdGUucHJlcGFyZUN1cnJlbnRUZXN0KHRoaXMsIHRoaXMuX2ZyYW1lKS50aGVuKGZ1bmN0
aW9uKHByZXBhcmVSZXR1cm5WYWx1ZSkgeworICAgICAgICByZXR1cm4gc2VsZi5fcnVuVGVzdEFu
ZFJlY29yZFJlc3VsdHMoc3RhdGUpOworICAgIH0pOworfQorCitCZW5jaG1hcmtSdW5uZXIucHJv
dG90eXBlLnJ1bkFsbFN0ZXBzID0gZnVuY3Rpb24oc3RhcnRpbmdTdGF0ZSkgeworICAgIHZhciBu
ZXh0Q2FsbGVlID0gdGhpcy5ydW5BbGxTdGVwcy5iaW5kKHRoaXMpOworICAgIHRoaXMuc3RlcChz
dGFydGluZ1N0YXRlKS50aGVuKGZ1bmN0aW9uKG5leHRTdGF0ZSkgeworICAgICAgICBpZiAobmV4
dFN0YXRlKQorICAgICAgICAgICAgbmV4dENhbGxlZShuZXh0U3RhdGUpOworICAgIH0pOworfQor
CitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLnJ1bk11bHRpcGxlSXRlcmF0aW9ucyA9IGZ1bmN0
aW9uKGl0ZXJhdGlvbkNvdW50KSB7CisgICAgdmFyIHNlbGYgPSB0aGlzOworICAgIHZhciBjdXJy
ZW50SXRlcmF0aW9uID0gMDsKKworICAgIHRoaXMuX3J1bk5leHRJdGVyYXRpb24gPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgY3VycmVudEl0ZXJhdGlvbisrOworICAgICAgICBpZiAoY3VycmVudEl0
ZXJhdGlvbiA8IGl0ZXJhdGlvbkNvdW50KQorICAgICAgICAgICAgc2VsZi5ydW5BbGxTdGVwcygp
OworICAgICAgICBlbHNlIGlmICh0aGlzLl9jbGllbnQgJiYgdGhpcy5fY2xpZW50LmRpZEZpbmlz
aExhc3RJdGVyYXRpb24pCisgICAgICAgICAgICBzZWxmLl9jbGllbnQuZGlkRmluaXNoTGFzdEl0
ZXJhdGlvbigpOworICAgIH0KKworICAgIGlmIChzZWxmLl9jbGllbnQgJiYgc2VsZi5fY2xpZW50
LndpbGxTdGFydEZpcnN0SXRlcmF0aW9uKQorICAgICAgICBzZWxmLl9jbGllbnQud2lsbFN0YXJ0
Rmlyc3RJdGVyYXRpb24oaXRlcmF0aW9uQ291bnQpOworCisgICAgc2VsZi5ydW5BbGxTdGVwcygp
OworfQorCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9maW5hbGl6ZSA9IGZ1bmN0aW9uKCkg
eworICAgIHRoaXMuX3JlbW92ZUZyYW1lKCk7CisgICAgICAgIAorICAgIGlmICh0aGlzLl9jbGll
bnQgJiYgdGhpcy5fY2xpZW50LmRpZFJ1blN1aXRlcykKKyAgICAgICAgdGhpcy5fY2xpZW50LmRp
ZFJ1blN1aXRlcyh0aGlzLl9zdWl0ZXNTYW1wbGVycyk7CisKKyAgICBpZiAodGhpcy5fcnVuTmV4
dEl0ZXJhdGlvbikKKyAgICAgICAgdGhpcy5fcnVuTmV4dEl0ZXJhdGlvbigpOworfQpJbmRleDog
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvYmVuY2htYXJr
LmNzcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJj
ZXMvYmVuY2htYXJrLmNzcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACitodG1sIHsK
KyAgaGVpZ2h0OiAxMDAlOworfQorYm9keSB7CisgIHdpZHRoOiAxMDAlOworICBoZWlnaHQ6IDEw
MCU7CisgIG92ZXJmbG93OiBoaWRkZW47CisgIG1hcmdpbjogMDsKKyAgcGFkZGluZzogMDsKKyAg
YmFja2dyb3VuZC1jb2xvcjogI2VhZWFlYTsKK30KKworI3N0YWdlIHsKKyAgd2lkdGg6IDEwMCU7
CisgIGhlaWdodDogMTAwJTsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VhZWFlYTsKK30KKworLmNp
cmNsZSB7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAw
MDsKKyAgYm9yZGVyLXJhZGl1czogNTAlIDUwJTsKK30KKworLnJlY3QgeworICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7Cit9CisKKy5zdGFyIHsKKyAg
LXdlYmtpdC1jbGlwLXBhdGg6IHBvbHlnb24oNTAlIDAlLCAzOCUgMzglLCAwJSAzOCUsIDMwJSA2
MCUsIDE4JSAxMDAlLCA1MCUgNzUlLCA4MiUgMTAwJSwgNzAlIDYwJSwgMTAwJSAzOCUsIDYyJSAz
OCUpOworICAtbXMtY2xpcC1wYXRoOiBwb2x5Z29uKDUwJSAwJSwgMzglIDM4JSwgMCUgMzglLCAz
MCUgNjAlLCAxOCUgMTAwJSwgNTAlIDc1JSwgODIlIDEwMCUsIDcwJSA2MCUsIDEwMCUgMzglLCA2
MiUgMzglKTsgIAorICBjbGlwLXBhdGg6IHBvbHlnb24oNTAlIDAlLCAzOCUgMzglLCAwJSAzOCUs
IDMwJSA2MCUsIDE4JSAxMDAlLCA1MCUgNzUlLCA4MiUgMTAwJSwgNzAlIDYwJSwgMTAwJSAzOCUs
IDYyJSAzOCUpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNl
cy9iZW5jaG1hcmsuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Jlc291cmNlcy9iZW5jaG1hcmsuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2JlbmNobWFyay5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDIwNSBAQAorZnVuY3Rpb24gQmVuY2htYXJrU3RhdGUodGVzdEludGVydmFsKSB7CisgICAg
dGhpcy5fY3VycmVudFRpbWVPZmZzZXQgPSAwOworICAgIHRoaXMuX3N0YWdlSW50ZXJ2YWwgPSB0
ZXN0SW50ZXJ2YWwgLyBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQ7Cit9CisKK0JlbmNo
bWFya1N0YXRlLnN0YWdlcyA9IHsKKyAgICBXQVJNSU5HX1VQOiAwLAorICAgIFNBTVBMSU5HOiAx
LAorICAgIEZJTklTSEVEOiAyLAorICAgIG1lc3NhZ2VzOiBbICJXYXJtaW5nIHVwIiwgIlNhbXBs
aW5nIiwgIkZpbmlzaGVkIiBdCit9OworCitCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUgPSB7Cisg
ICAgX3RpbWVPZmZzZXQgOiBmdW5jdGlvbihzdGFnZSkgeworICAgICAgICByZXR1cm4gc3RhZ2Ug
KiB0aGlzLl9zdGFnZUludGVydmFsOworICAgIH0sCisgICAgX21lc3NhZ2UgOiBmdW5jdGlvbihz
dGFnZSwgdGltZU9mZnNldCkgeworICAgICAgICBpZiAoc3RhZ2UgPT0gQmVuY2htYXJrU3RhdGUu
c3RhZ2VzLkZJTklTSEVEKQorICAgICAgICAgICAgcmV0dXJuIEJlbmNobWFya1N0YXRlLnN0YWdl
cy5tZXNzYWdlc1tzdGFnZV07CisKKyAgICAgICAgcmV0dXJuIEJlbmNobWFya1N0YXRlLnN0YWdl
cy5tZXNzYWdlc1tzdGFnZV0gKyAiLi4uICgiCisgICAgICAgICAgICArIE1hdGguZmxvb3IoKHRp
bWVPZmZzZXQgLSB0aGlzLl90aW1lT2Zmc2V0KHN0YWdlKSkgLyAxMDAwKSArICIvIgorICAgICAg
ICAgICAgKyBNYXRoLmZsb29yKCh0aGlzLl90aW1lT2Zmc2V0KHN0YWdlICsgMSkgLSB0aGlzLl90
aW1lT2Zmc2V0KHN0YWdlKSkgLyAxMDAwKSArICIpIjsKKyAgICB9LAorICAgIHVwZGF0ZSA6IGZ1
bmN0aW9uKGN1cnJlbnRUaW1lT2Zmc2V0KSB7CisgICAgICAgIHRoaXMuX2N1cnJlbnRUaW1lT2Zm
c2V0ID0gY3VycmVudFRpbWVPZmZzZXQ7CisgICAgfSwKKyAgICBzYW1wbGluZ1RpbWVPZmZzZXQg
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWVPZmZzZXQoQmVuY2htYXJr
U3RhdGUuc3RhZ2VzLlNBTVBMSU5HKTsKKyAgICB9LAorICAgIGN1cnJlbnRTdGFnZSA6IGZ1bmN0
aW9uKCkgeworICAgICAgICBmb3IgKHZhciBzdGFnZSA9IEJlbmNobWFya1N0YXRlLnN0YWdlcy5X
QVJNSU5HX1VQOyBzdGFnZSA8IEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRDsgKytzdGFn
ZSkgeworICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IDwgdGhpcy5fdGlt
ZU9mZnNldChzdGFnZSArIDEpKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGFnZTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEOworICAg
IH0sCisgICAgY3VycmVudE1lc3NhZ2UgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX21lc3NhZ2UodGhpcy5jdXJyZW50U3RhZ2UoKSwgdGhpcy5fY3VycmVudFRpbWVPZmZzZXQp
OworICAgIH0sCisgICAgY3VycmVudFByb2dyZXNzIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLl9jdXJyZW50VGltZU9mZnNldCAvIHRoaXMuX3RpbWVPZmZzZXQoQmVuY2htYXJr
U3RhdGUuc3RhZ2VzLkZJTklTSEVEKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEFuaW1hdG9yKGJl
bmNobWFyaykgeworICAgIHRoaXMuX2JlbmNobWFyayA9IGJlbmNobWFyazsKKyAgICB0aGlzLl9m
cmFtZUNvdW50ID0gMDsKKyAgICB0aGlzLl9kcm9wRnJhbWVDb3VudCA9IDE7CisgICAgdGhpcy5f
bWVhc3VyZUZyYW1lQ291bnQgPSAzOyAKKyAgICB0aGlzLl90aW1lT2Zmc2V0ID0gMDsKKyAgICB0
aGlzLl9lc3RpbWF0b3IgPSBuZXcgRXN0aW1hdG9yKCk7Cit9CisKK0FuaW1hdG9yLnByb3RvdHlw
ZSA9IHsKKyAgICBzdGFydCA6IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLl9pbnRlcnZhbElk
ID0gc2V0SW50ZXJ2YWwodGhpcy5hbmltYXRlLmJpbmQodGhpcyksIDEpOworICAgIH0sCisgICAg
dGltZURlbHRhIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLl90aW1lT2Zmc2V0
IC0gdGhpcy5fc3RhcnRUaW1lT2Zmc2V0OworICAgIH0sCisgICAgYW5pbWF0ZSA6IGZ1bmN0aW9u
KCkgeworICAgICAgICB2YXIgY3VycmVudFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKKyAg
ICAgICAgCisgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fcmVmZXJlbmNlVGltZSA9PT0gInVuZGVm
aW5lZCIpCisgICAgICAgICAgICB0aGlzLl9yZWZlcmVuY2VUaW1lID0gY3VycmVudFRpbWU7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX3RpbWVPZmZzZXQgPSBjdXJyZW50VGltZSAt
IHRoaXMuX3JlZmVyZW5jZVRpbWU7CisKKyAgICAgICAgaWYgKCF0aGlzLl9mcmFtZUNvdW50KQor
ICAgICAgICAgICAgdGhpcy5fc3RhcnRUaW1lT2Zmc2V0ID0gdGhpcy5fdGltZU9mZnNldDsKKwor
ICAgICAgICAvLyBTdGFydCBtZWFzdXJpbmcgYWZ0ZXIgZHJvcHBpbmcgX2Ryb3BGcmFtZUNvdW50
IGZyYW1lcy4KKyAgICAgICAgaWYgKHRoaXMuX2ZyYW1lQ291bnQgPT0gdGhpcy5fZHJvcEZyYW1l
Q291bnQpCisgICAgICAgICAgICB0aGlzLl9tZWFzdXJlVGltZU9mZnNldCA9IHRoaXMuX3RpbWVP
ZmZzZXQ7CisKKyAgICAgICAgKyt0aGlzLl9mcmFtZUNvdW50OworCisgICAgICAgIC8vIERyb3Ag
X2Ryb3BGcmFtZUNvdW50IGZyYW1lcyBhbmQgbWVhc3VyZSB0aGUgYXZlcmFnZSBvZiBfbWVhc3Vy
ZUZyYW1lQ291bnQgZnJhbWVzLgorICAgICAgICBpZiAodGhpcy5fZnJhbWVDb3VudCA8IHRoaXMu
X2Ryb3BGcmFtZUNvdW50ICsgdGhpcy5fbWVhc3VyZUZyYW1lQ291bnQpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgICAgICAvLyBHZXQgdGhlIGF2ZXJhZ2UgRlBTIG9mIF9tZWFzdXJl
RnJhbWVDb3VudCBmcmFtZXMgb3ZlciBtZWFzdXJlVGltZURlbHRhLgorICAgICAgICB2YXIgbWVh
c3VyZVRpbWVEZWx0YSA9IHRoaXMuX3RpbWVPZmZzZXQgLSB0aGlzLl9tZWFzdXJlVGltZU9mZnNl
dDsKKyAgICAgICAgdmFyIG1lYXN1cmVGcmFtZVJhdGUgPSBNYXRoLmZsb29yKDEwMDAgLyAobWVh
c3VyZVRpbWVEZWx0YSAvIHRoaXMuX21lYXN1cmVGcmFtZUNvdW50KSk7CisgICAgICAgIAorICAg
ICAgICAvLyBVc2UgS2FsbWFuIGZpbHRlciB0byBnZXQgYSBtb3JlIG5vbi1mbHVjdHVhdGluZyBm
cmFtZSByYXRlLgorICAgICAgICB2YXIgZXN0aW1hdGVkRnJhbWVSYXRlID0gdGhpcy5fZXN0aW1h
dG9yLmVzdGltYXRlKG1lYXN1cmVUaW1lRGVsdGEsIG1lYXN1cmVGcmFtZVJhdGUpOworICAgICAg
ICAKKyAgICAgICAgLy8gQWRqdXN0IHRoZSB0ZXN0IHRvIHJlYWNoIHRoZSBkZXNpcmVkIEZQUy4K
KyAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2JlbmNobWFyay51cGRhdGUodGhpcy5fdGltZU9m
ZnNldCwgdGhpcy50aW1lRGVsdGEoKSwgZXN0aW1hdGVkRnJhbWVSYXRlKTsKKyAgICAgICAgCisg
ICAgICAgIGlmICghcmVzdWx0ICYmIHR5cGVvZiB0aGlzLl9pbnRlcnZhbElkICE9ICJ1bmRlZmlu
ZWQiKQorICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbElkKTsKKworICAg
ICAgICAvLyBTdGFydCB0aGUgbmV4dCBkcm9wL21lYXN1cmUgY3ljbGUuCisgICAgICAgIHRoaXMu
X2ZyYW1lQ291bnQgPSAwOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisgICAgYW5p
bWF0ZUxvb3AgOiBmdW5jdGlvbih0aW1lc3RhbXApIHsKKyAgICAgICAgaWYgKHRoaXMuYW5pbWF0
ZSgpKQorICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0ZUxvb3Au
YmluZCh0aGlzKSk7CisgICAgfQorfQorCitmdW5jdGlvbiBCZW5jaG1hcmsodGVzdEludGVydmFs
LCBmcmFtZVJhdGUpIHsKKyAgICB0aGlzLl9wYXJhbWV0ZXJzID0gdGhpcy5wYXJzZVBhcmFtZXRl
cnMoKTsKKyAgICB0aGlzLl9tZXRob2QgPSB0aGlzLl9wYXJhbWV0ZXJzWyJtZXRob2QiXSB8fCAi
cmVxdWVzdEFuaW1hdGlvbkZyYW1lIjsKKworICAgIHRoaXMuX3Rlc3RJbnRlcnZhbCA9IHRlc3RJ
bnRlcnZhbDsKKyAgICB0aGlzLl9yZWNvcmRJbnRlcnZhbCA9IDIwMDsgICAgCisgICAgdGhpcy5f
aXNTYW1wbGluZyA9IGZhbHNlOworCisgICAgdmFyIGdhaW4gPSBwYXJzZUludCh0aGlzLl9wYXJh
bWV0ZXJzWyJnYWluIl0pIHx8IDE7CisgICAgdmFyIGxvd1ZhbHVlID0gLXBhcnNlSW50KHRoaXMu
X3BhcmFtZXRlcnNbImFkZExpbWl0Il0pIHx8IDE7CisgICAgdmFyIGhpZ2hWYWx1ZSA9IHBhcnNl
SW50KHRoaXMuX3BhcmFtZXRlcnNbInJlbW92ZUxpbWl0Il0pIHx8IDE7CisgICAgCisgICAgdGhp
cy5fY29udHJvbGxlciA9IG5ldyBDb250cm9sbGVyKGdhaW4sIGZyYW1lUmF0ZSwgbG93VmFsdWUs
IGhpZ2hWYWx1ZSk7CisgICAgdGhpcy5fc2FtcGxlciA9IG5ldyBTYW1wbGVyKDIpOworfQorCitC
ZW5jaG1hcmsucHJvdG90eXBlID0geworICAgIHBhcnNlUGFyYW1ldGVycyA6IGZ1bmN0aW9uKCkg
eworICAgICAgICB2YXIgcXVlcnkgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cigxKTsK
KyAgICAgICAgdmFyIHJlc3VsdCA9IHt9OworICAgICAgICBxdWVyeS5zcGxpdCgiJiIpLmZvckVh
Y2goZnVuY3Rpb24ocGFydCkgeworICAgICAgICAgICAgdmFyIGl0ZW0gPSBwYXJ0LnNwbGl0KCI9
Iik7CisgICAgICAgICAgICByZXN1bHRbaXRlbVswXV0gPSBkZWNvZGVVUklDb21wb25lbnQoaXRl
bVsxXSk7CisgICAgICAgIH0pOworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorICAgIC8v
IENhbGxlZCBmcm9tIHRoZSBsb2FkIGV2ZW50IGxpc3RlbmVyIG9yIGZyb20gdGhpcy5ydW4oKQor
ICAgIHN0YXJ0IDogZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh0aGlzLl9tZXRob2QgPT0gInNl
dEludGVydmFsIikKKyAgICAgICAgICAgIHRoaXMuX2FuaW1hdG9yLnN0YXJ0KCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2FuaW1hdG9yLmFuaW1hdGVMb29wKCk7CisgICAgfSwK
KyAgICAvLyBDYWxsZWQgZnJvbSB0aGUgYW5pbWF0b3IgdG8gYWRqdXN0IHRoZSBjb21wbGV4aXR5
IG9mIHRoZSB0ZXN0CisgICAgdXBkYXRlIDogZnVuY3Rpb24odGltZU9mZnNldCwgdGltZURlbHRh
LCBmcmFtZVJhdGUpIHsKKyAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9zdGF0ZSA9PSAidW5kZWZp
bmVkIikKKyAgICAgICAgICAgIHRoaXMuX3N0YXRlID0gbmV3IEJlbmNobWFya1N0YXRlKHRoaXMu
X3Rlc3RJbnRlcnZhbCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX3N0YXRlLnVw
ZGF0ZSh0aW1lT2Zmc2V0KTsKKyAgICAgICAgCisgICAgICAgIHZhciBzdGFnZSA9IHRoaXMuX3N0
YXRlLmN1cnJlbnRTdGFnZSgpOworICAgICAgICBpZiAoc3RhZ2UgPT0gQmVuY2htYXJrU3RhdGUu
c3RhZ2VzLkZJTklTSEVEKSB7CisgICAgICAgICAgICB0aGlzLmNsZWFyKCk7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RhZ2UgPT0gQmVuY2ht
YXJrU3RhdGUuc3RhZ2VzLlNBTVBMSU5HICYmICF0aGlzLl9pc1NhbXBsaW5nKSB7CisgICAgICAg
ICAgICB0aGlzLl9zYW1wbGVyLnN0YXJ0U2FtcGxpbmcodGhpcy5fc3RhdGUuc2FtcGxpbmdUaW1l
T2Zmc2V0KCkpOworICAgICAgICAgICAgdGhpcy5faXNTYW1wbGluZyA9IHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgLy8gVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVu
IGZyYW1lUmF0ZSBhbmQgdGVzdCBjb21wbGV4aXR5IGlzIGludmVyc2UtcHJvcG9ydGlvbmFsIHNv
IHdlCisgICAgICAgIC8vIG5lZWQgdG8gdXNlIHRoZSBuZWdhdGl2ZSBvZiBDb250cm9sbGVyLnR1
bmUoKSB0byBjaGFuZ2UgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIHRlc3QKKyAgICAgICAgdmFyIGNv
bXBsZXhpdHkgPSB0aGlzLnR1bmUoLXRoaXMuX2NvbnRyb2xsZXIudHVuZShmcmFtZVJhdGUsIHRp
bWVEZWx0YSAvIDEwMDApKTsKKyAgICAgICAgdGhpcy5fc2FtcGxlci5zYW1wbGUodGltZU9mZnNl
dCwgW2NvbXBsZXhpdHksIGZyYW1lUmF0ZV0pOworICAgICAgICB0aGlzLnJlY29yZCh0aGlzLl90
aW1lT2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKyAgICByZWNvcmQgOiBm
dW5jdGlvbih0aW1lT2Zmc2V0KSB7CisgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fcmVjb3JkVGlt
ZU9mZnNldCA9PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHRoaXMuX3JlY29yZFRpbWVPZmZz
ZXQgPSB0aW1lT2Zmc2V0OworCisgICAgICAgIHZhciBzdGFnZSA9IHRoaXMuX3N0YXRlLmN1cnJl
bnRTdGFnZSgpOworICAgICAgICBpZiAoc3RhZ2UgIT0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJ
TklTSEVEICYmIHRpbWVPZmZzZXQgPCB0aGlzLl9yZWNvcmRUaW1lT2Zmc2V0ICsgdGhpcy5fcmVj
b3JkSW50ZXJ2YWwpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5zaG93UmVz
dWx0cyh0aGlzLl9zdGF0ZS5jdXJyZW50TWVzc2FnZSgpLCB0aGlzLl9zdGF0ZS5jdXJyZW50UHJv
Z3Jlc3MoKSk7CisgICAgICAgIHRoaXMuX3JlY29yZFRpbWVPZmZzZXQgPSB0aW1lT2Zmc2V0Owor
ICAgIH0sCisgICAgcnVuIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuc3RhcnQoKTsKKwor
ICAgICAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgICAgICB2YXIgc2Vs
ZiA9IHRoaXM7CisgICAgICAgIGZ1bmN0aW9uIHJlc29sdmVXaGVuRmluaXNoZWQoKSB7CisgICAg
ICAgICAgICBpZiAodHlwZW9mIHNlbGYuX3N0YXRlICE9ICJ1bmRlZmluZWQiICYmIChzZWxmLl9z
dGF0ZS5jdXJyZW50U3RhZ2UoKSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnJlc29sdmUoc2VsZi5fc2FtcGxlcik7Cisg
ICAgICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmVXaGVuRmluaXNoZWQuYmluZChzZWxmKSwgNTAp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXNvbHZlV2hlbkZpbmlzaGVkKCk7Cisg
ICAgICAgIHJldHVybiBwcm9taXNlOworICAgIH0KK30KKword2luZG93LmJlbmNobWFya0NsaWVu
dCA9IHt9OworCisvLyBUaGlzIGV2ZW50IGxpc3RlbmVyIHJ1bnMgdGhlIHRlc3QgaWYgaXQgaXMg
bG9hZGVkIG91dHNpZGUgdGhlIGJlbmNobWFyayBydW5uZXIuCit3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgIGlmICh3aW5kb3cuc2VsZiAhPT0gd2luZG93
LnRvcCkKKyAgICAgICAgcmV0dXJuOworICAgIHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRl
KG51bGwsIG51bGwsIDMwMDAwLCA1MCwgbnVsbCwgbnVsbCk7CisgICAgd2luZG93LmJlbmNobWFy
ay5zdGFydCgpOworfSk7CisKKy8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIHN1
aXRlIGNvbnRyb2xsZXIgcnVuLWNhbGxiYWNrIHdoZW4gcnVubmluZyB0aGUgYmVuY2htYXJrIHJ1
bm5lci4KK3dpbmRvdy5ydW5CZW5jaG1hcmsgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgdGVzdElu
dGVydmFsLCBmcmFtZVJhdGUsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIHdpbmRv
dy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKHN1aXRlLCB0ZXN0LCB0ZXN0SW50ZXJ2YWwsIGZyYW1l
UmF0ZSwgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICByZXR1cm4gd2luZG93LmJlbmNo
bWFyay5ydW4oKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJj
ZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMJKHJldmlz
aW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2JvdW5jaW5n
LWNhbnZhcy1pbWFnZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MiBAQAorZnVuY3Rp
b24gQm91bmNpbmdDYW52YXNJbWFnZShzdGFnZSkgeworICAgIEJvdW5jaW5nUGFydGljbGUuY2Fs
bCh0aGlzLCBzdGFnZSk7CisgICAgdGhpcy5fY29udGV4dCA9IHN0YWdlLmNvbnRleHQ7CisgICAg
dGhpcy5faW1hZ2VFbGVtZW50ID0gc3RhZ2UuaW1hZ2VFbGVtZW50OworfQorCitCb3VuY2luZ0Nh
bnZhc0ltYWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5wcm90
b3R5cGUpOworQm91bmNpbmdDYW52YXNJbWFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3Vu
Y2luZ0NhbnZhc0ltYWdlOworCitCb3VuY2luZ0NhbnZhc0ltYWdlLnByb3RvdHlwZS5fZHJhdyA9
IGZ1bmN0aW9uKCkgeworICAgIHZhciBjZW50ZXIgPSB0aGlzLmNlbnRlcigpOworCisgICAgdGhp
cy5fY29udGV4dC5zYXZlKCk7CisgICAgdGhpcy5fY29udGV4dC50cmFuc2xhdGUoY2VudGVyLngs
IGNlbnRlci55KTsKKyAgICB0aGlzLl9jb250ZXh0LnJvdGF0ZSh0aGlzLl9yb3RhdGVyLmRlZ3Jl
ZSgpICogTWF0aC5QSSAvIDE4MCk7CisgICAgdGhpcy5fY29udGV4dC50cmFuc2xhdGUoLXRoaXMu
X3NpemUueCAvIDIsIC10aGlzLl9zaXplLnkgLyAyKTsKKyAgICAKKyAgICB0aGlzLl9jb250ZXh0
LmRyYXdJbWFnZSh0aGlzLl9pbWFnZUVsZW1lbnQsIDAsIDAsIHRoaXMuX3NpemUueCwgdGhpcy5f
c2l6ZS55KTsKKyAgICB0aGlzLl9jb250ZXh0LnJlc3RvcmUoKTsKK30KKworQm91bmNpbmdDYW52
YXNJbWFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkgeworICAgIEJv
dW5jaW5nUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEpOwor
ICAgIHRoaXMuX2RyYXcoKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNJbWFnZXNTdGFn
ZShlbGVtZW50LCBwYXJhbWV0ZXJzKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxs
KHRoaXMsIGVsZW1lbnQsIHBhcmFtZXRlcnMpOworICAgIHRoaXMuY29udGV4dCA9IHRoaXMuZWxl
bWVudC5nZXRDb250ZXh0KCIyZCIpOworICAgIHZhciBpbWFnZVNyYyA9IHBhcmFtZXRlcnNbImlt
YWdlU3JjIl0gfHwgInJlc291cmNlcy95aW4teWFuZy5zdmciOworICAgIAorICAgIHZhciBpbWFn
ZUVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiaGlkZGVuIik7Cisg
ICAgY29uc29sZS5hc3NlcnQoaW1hZ2VFbGVtZW50cy5sZW5ndGgpOworICAgICAgICAKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGltYWdlRWxlbWVudHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
aWYgKGltYWdlRWxlbWVudHNbaV0uZ2V0QXR0cmlidXRlKCJzcmMiKSA9PSBpbWFnZVNyYykgewor
ICAgICAgICAgICAgdGhpcy5pbWFnZUVsZW1lbnQgPSBpbWFnZUVsZW1lbnRzW2ldOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAorICAgIH0KKworICAgIHRoaXMuaW1hZ2VFbGVtZW50ID0gdGhpcy5pbWFnZUVsZW1lbnQgfHwg
aW1hZ2VFbGVtZW50c1swXTsKK30KKworQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS5wcm90b3R5
cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0Jv
dW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdD
YW52YXNJbWFnZXNTdGFnZTsKKworQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS5wcm90b3R5cGUu
Y3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2Fu
dmFzSW1hZ2UodGhpcyk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0
b3IoYmVuY2htYXJrKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5jYWxsKHRoaXMs
IGJlbmNobWFyayk7CisgICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4
dDsKK30KKworQm91bmNpbmdDYW52YXNJbWFnZXNBbmltYXRvci5wcm90b3R5cGUgPSBPYmplY3Qu
Y3JlYXRlKEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2Fu
dmFzSW1hZ2VzQW5pbWF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNJ
bWFnZXNBbmltYXRvcjsKKworQm91bmNpbmdDYW52YXNJbWFnZXNBbmltYXRvci5wcm90b3R5cGUu
YW5pbWF0ZSA9IGZ1bmN0aW9uKCkgeworICAgIHRoaXMuX2NvbnRleHQuY2xlYXJSZWN0KDAsIDAs
IHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZSgpLngsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uu
c2l6ZSgpLnkpOworICAgIHJldHVybiBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlw
ZS5hbmltYXRlLmNhbGwodGhpcyk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzSW1hZ2Vz
QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCB0ZXN0SW50ZXJ2YWwsIGZyYW1lUmF0ZSwgcmVjb3JkVGFi
bGUsIHByb2dyZXNzQmFyKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0
aGlzLCBzdWl0ZSwgdGVzdCwgdGVzdEludGVydmFsLCBmcmFtZVJhdGUsIHJlY29yZFRhYmxlLCBw
cm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlw
ZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsK
K0JvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJv
dW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrOworCitCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNo
bWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgcmV0
dXJuIG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX3BhcmFtZXRl
cnMpOworfQorCitCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRl
QW5pbWF0b3IgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzSW1h
Z2VzQW5pbWF0b3IodGhpcyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0g
ZnVuY3Rpb24oc3VpdGUsIHRlc3QsIHRlc3RJbnRlcnZhbCwgZnJhbWVSYXRlLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICB3aW5kb3cuYmVuY2htYXJrID0gbmV3IEJvdW5jaW5nQ2Fu
dmFzSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCB0ZXN0SW50ZXJ2YWwsIGZyYW1lUmF0ZSwg
cmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1z
aGFwZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVz
b3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxNDIgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzU2hhcGUoc3RhZ2UpIHsKKyAgICBCb3Vu
Y2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworICAgIHRoaXMuX3NoYXBlID0gc3RhZ2Uu
c2hhcGU7CisgICAgdGhpcy5fZmlsbCA9IHN0YWdlLmZpbGw7CisgICAgdGhpcy5fY2xpcCA9IHN0
YWdlLmNsaXA7CisgICAgdGhpcy5fY29udGV4dCA9IHN0YWdlLmNvbnRleHQ7CisgICAgdGhpcy5f
Y29sb3IwID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsKKyAgICB0aGlzLl9jb2xvcjEgPSBzdGFnZS5y
YW5kb21Db2xvcigpOyAgICAKK30KKworQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFz
U2hhcGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNTaGFwZTsKKworQm91
bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUuX2RyYXcgPSBmdW5jdGlvbigpIHsKKyAgICAKKyAg
ICB0aGlzLl9jb250ZXh0LnNhdmUoKTsKKyAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSh0aGlz
Ll9wb3NpdGlvbi54LCB0aGlzLl9wb3NpdGlvbi55KTsKKworICAgIC8vIFNldHRpbmcgdGhlIGZp
bGwgc3R5bGUKKyAgICBzd2l0Y2ggKHRoaXMuX2ZpbGwpIHsKKyAgICBjYXNlICJzb2xpZCI6Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgdGhpcy5fY29udGV4dC5maWxsU3R5bGUgPSB0aGlzLl9jb2xv
cjA7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSAiZ3JhZGllbnQiOgorICAgICAgICB2YXIg
Z3JhZGllbnQgPSB0aGlzLl9jb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIDAsIHRoaXMu
X3NpemUud2lkdGgoKSwgMCk7CisgICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCB0aGlz
Ll9jb2xvcjApOworICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMSwgdGhpcy5fY29sb3Ix
KTsgCisgICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbFN0eWxlID0gZ3JhZGllbnQ7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIC8vIFJvdGF0aW9uIGFyb3VuZCB0aGUgY2VudGVyCisgICAg
aWYgKHRoaXMuX3NoYXBlICE9ICJjaXJjbGUiKSB7CisgICAgICAgIHRoaXMuX2NvbnRleHQudHJh
bnNsYXRlKHRoaXMuX3NpemUueCAvIDIsIHRoaXMuX3NpemUueSAvIDIpOworICAgICAgICB0aGlz
Ll9jb250ZXh0LnJvdGF0ZSh0aGlzLl9yb3RhdGVyLmRlZ3JlZSgpICogTWF0aC5QSSAvIDE4MCk7
CisgICAgICAgIHRoaXMuX2NvbnRleHQudHJhbnNsYXRlKC10aGlzLl9zaXplLnggLyAyLCAtdGhp
cy5fc2l6ZS55IC8gMik7CisgICAgfQorCisgICAgdmFyIGNsaXBQb2ludHMgPSBudWxsOworICAg
IAorICAgIHN3aXRjaCAodGhpcy5fY2xpcCkgeworICAgIGNhc2UgInN0YXIiOgorICAgICAgICBj
bGlwUG9pbnRzID0gIFsKKyAgICAgICAgICAgIG5ldyBQb2ludCgwLjUwLCAwLjAwKSwKKyAgICAg
ICAgICAgIG5ldyBQb2ludCgwLjM4LCAwLjM4KSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgwLjAw
LCAwLjM4KSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgwLjMwLCAwLjYwKSwKKyAgICAgICAgICAg
IG5ldyBQb2ludCgwLjE4LCAxLjAwKSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgwLjUwLCAwLjc1
KSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgwLjgyLCAxLjAwKSwKKyAgICAgICAgICAgIG5ldyBQ
b2ludCgwLjcwLCAwLjYwKSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgxLjAwLCAwLjM4KSwKKyAg
ICAgICAgICAgIG5ldyBQb2ludCgwLjYyLCAwLjM4KQorICAgICAgICBdOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgCisgICAgaWYgKGNsaXBQb2ludHMpIHsKKyAgICAgICAgdGhpcy5fY29u
dGV4dC5iZWdpblBhdGgoKTsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICBjbGlw
UG9pbnRzLmZvckVhY2goZnVuY3Rpb24ocG9pbnQsIGluZGV4KSB7CisgICAgICAgICAgICB2YXIg
cG9pbnQgPSBzZWxmLl9zaXplLm11bHRpcGx5KHBvaW50KTsKKyAgICAgICAgICAgIGlmICghaW5k
ZXgpCisgICAgICAgICAgICAgICAgc2VsZi5fY29udGV4dC5tb3ZlVG8ocG9pbnQueCwgcG9pbnQu
eSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2VsZi5fY29udGV4dC5saW5l
VG8ocG9pbnQueCwgcG9pbnQueSk7CisgICAgICAgIH0pOworICAgICAgICB0aGlzLl9jb250ZXh0
LmNsb3NlUGF0aCgpOworICAgICAgICB0aGlzLl9jb250ZXh0LmNsaXAoKTsKKyAgICB9CisKKyAg
ICAvLyBTaGFwZSBkcmF3aW5nCisgICAgdGhpcy5fY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICAK
KyAgICBzd2l0Y2ggKHRoaXMuX3NoYXBlKSB7CisgICAgY2FzZSAiY2lyY2xlIjoKKyAgICBkZWZh
dWx0OgorICAgICAgICB2YXIgY2VudGVyID0gdGhpcy5fc2l6ZS5jZW50ZXIoKTsKKyAgICAgICAg
dmFyIHJhZGl1cyA9IE1hdGgubWluKHRoaXMuX3NpemUueCwgdGhpcy5fc2l6ZS55KSAvIDI7Cisg
ICAgICAgIHRoaXMuX2NvbnRleHQuYXJjKGNlbnRlci54LCBjZW50ZXIueSwgcmFkaXVzLCAwLCBN
YXRoLlBJICogMiwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlICJy
ZWN0IjoKKyAgICAgICAgdGhpcy5fY29udGV4dC5yZWN0KDAsIDAsIHRoaXMuX3NpemUud2lkdGgo
KSwgdGhpcy5fc2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAg
ICB0aGlzLl9jb250ZXh0LmZpbGwoKTsKKyAgICB0aGlzLl9jb250ZXh0LnJlc3RvcmUoKTsKK30K
KworQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVE
ZWx0YSkgeworICAgIEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlz
LCB0aW1lRGVsdGEpOworICAgIHRoaXMuX2RyYXcoKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdD
YW52YXNTaGFwZXNTdGFnZShlbGVtZW50LCBwYXJhbWV0ZXJzKSB7CisgICAgQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIHBhcmFtZXRlcnMpOworICAgIHRoaXMucGFy
c2VTaGFwZVBhcmFtdGVycyhwYXJhbWV0ZXJzKTsKKyAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmVs
ZW1lbnQuZ2V0Q29udGV4dCgiMmQiKQorfQorCitCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlLnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUp
OworQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3Vu
Y2luZ0NhbnZhc1NoYXBlc1N0YWdlOworCitCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlLnByb3Rv
dHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcgQm91bmNp
bmdDYW52YXNTaGFwZSh0aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNTaGFwZXNB
bmltYXRvcihiZW5jaG1hcmspIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLmNhbGwo
dGhpcywgYmVuY2htYXJrKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJrLl9zdGFnZS5j
b250ZXh0OworfQorCitCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUpOworQm91bmNp
bmdDYW52YXNTaGFwZXNBbmltYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0Nh
bnZhc1NoYXBlc0FuaW1hdG9yOworCitCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yLnByb3Rv
dHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5fY29udGV4dC5jbGVhclJlY3Qo
MCwgMCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplKCkueCwgdGhpcy5fYmVuY2htYXJrLl9z
dGFnZS5zaXplKCkueSk7CisgICAgcmV0dXJuIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJv
dG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNT
aGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIHRlc3RJbnRlcnZhbCwgZnJhbWVSYXRlLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5j
YWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCB0ZXN0SW50ZXJ2YWwsIGZyYW1lUmF0ZSwgcmVjb3JkVGFi
bGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5
cGUpOworQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nQ2FudmFzU2hhcGVz
QmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAg
ICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UoZWxlbWVudCwgdGhpcy5fcGFy
YW1ldGVycyk7Cit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5j
cmVhdGVBbmltYXRvciA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52
YXNTaGFwZXNBbmltYXRvcih0aGlzKTsKK30KKword2luZG93LmJlbmNobWFya0NsaWVudC5jcmVh
dGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgdGVzdEludGVydmFsLCBmcmFtZVJhdGUsIHJlY29y
ZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIHdpbmRvdy5iZW5jaG1hcmsgPSBuZXcgQm91bmNp
bmdDYW52YXNTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIHRlc3RJbnRlcnZhbCwgZnJhbWVS
YXRlLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ib3VuY2luZy1pbWFnZXMuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ib3VuY2luZy1pbWFnZXMuanMJ
KHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2Jv
dW5jaW5nLWltYWdlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACitmdW5jdGlv
biBCb3VuY2luZ0ltYWdlKHN0YWdlKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRoaXMs
IHN0YWdlKTsKKworICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlt
ZyIpOworICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMuX3NpemUueCArICJweCI7
CisgICAgdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuX3NpemUueSArICJweCI7Cisg
ICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgic3JjIiwgc3RhZ2UuaW1hZ2VTcmMpOworICAg
IAorICAgIHN0YWdlLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTsKKyAgICB0aGlz
Lm1vdmUoKTsKK30KKworQm91bmNpbmdJbWFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJv
dW5jaW5nUGFydGljbGUucHJvdG90eXBlKTsKK0JvdW5jaW5nSW1hZ2UucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0gQm91bmNpbmdJbWFnZTsKKworQm91bmNpbmdJbWFnZS5wcm90b3R5cGUubW92ZSA9
IGZ1bmN0aW9uKCkgeworICAgIHRoaXMuZWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSAidHJhbnNs
YXRlKCIgKyB0aGlzLl9wb3NpdGlvbi54ICsgInB4LCIgKyB0aGlzLl9wb3NpdGlvbi55ICsgInB4
KSAiICsgdGhpcy5fcm90YXRlci5yb3RhdGVaKCk7Cit9CisgICAgCitCb3VuY2luZ0ltYWdlLnBy
b3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKSB7CisgICAgQm91bmNpbmdQYXJ0
aWNsZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7CisgICAgdGhpcy5t
b3ZlKCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nSW1hZ2VzU3RhZ2UoZWxlbWVudCwgcGFyYW1l
dGVycykgeworICAgIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBw
YXJhbWV0ZXJzKTsKKyAgICB0aGlzLmltYWdlU3JjID0gcGFyYW1ldGVyc1siaW1hZ2VTcmMiXSB8
fCAicmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7Cit9CisKK0JvdW5jaW5nSW1hZ2VzU3RhZ2UucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7
CitCb3VuY2luZ0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nSW1h
Z2VzU3RhZ2U7CisKK0JvdW5jaW5nSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xl
ID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0ltYWdlKHRoaXMpOworfQor
CitCb3VuY2luZ0ltYWdlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQgPSBm
dW5jdGlvbihwYXJ0aWNsZSkgeworICAgIGlmIChwYXJ0aWNsZS5lbGVtZW50ICYmIHBhcnRpY2xl
LmVsZW1lbnQucGFyZW50Tm9kZSAmJiBwYXJ0aWNsZS5lbGVtZW50LnBhcmVudE5vZGUgPT0gdGhp
cy5lbGVtZW50KQorICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQocGFydGljbGUuZWxl
bWVudCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0
LCB0ZXN0SW50ZXJ2YWwsIGZyYW1lUmF0ZSwgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7Cisg
ICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgdGVz
dEludGVydmFsLCBmcmFtZVJhdGUsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0Jv
dW5jaW5nSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQ
YXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nSW1hZ2VzQmVuY2htYXJrLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nSW1hZ2VzQmVuY2htYXJrOworCitCb3VuY2lu
Z0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50
KSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX3Bh
cmFtZXRlcnMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9u
KHN1aXRlLCB0ZXN0LCB0ZXN0SW50ZXJ2YWwsIGZyYW1lUmF0ZSwgcmVjb3JkVGFibGUsIHByb2dy
ZXNzQmFyKSB7CisgICAgd2luZG93LmJlbmNobWFyayA9IG5ldyBCb3VuY2luZ0ltYWdlc0JlbmNo
bWFyayhzdWl0ZSwgdGVzdCwgdGVzdEludGVydmFsLCBmcmFtZVJhdGUsIHJlY29yZFRhYmxlLCBw
cm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3Vy
Y2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcwkocmV2aXNpb24gMCkK
KysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvYm91bmNpbmctcGFydGlj
bGVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjE0IEBACitmdW5jdGlvbiBCb3VuY2lu
Z1BhcnRpY2xlUm90YXRlcihyb3RhdGVJbnRlcnZhbCkgeworICAgIHRoaXMuX3RpbWVEZWx0YSA9
IDA7CisgICAgdGhpcy5fcm90YXRlSW50ZXJ2YWwgPSByb3RhdGVJbnRlcnZhbDsKK30KKworQm91
bmNpbmdQYXJ0aWNsZVJvdGF0ZXIucHJvdG90eXBlID0geworICAgIG5leHQgOiBmdW5jdGlvbih0
aW1lRGVsdGEpIHsKKyAgICAgICAgdGhpcy5fdGltZURlbHRhID0gKHRoaXMuX3RpbWVEZWx0YSAr
IHRpbWVEZWx0YSkgJSB0aGlzLl9yb3RhdGVJbnRlcnZhbDsKKyAgICB9LAorICAgIGRlZ3JlZSA6
IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gKDM2MCAqIHRoaXMuX3RpbWVEZWx0YSkgLyB0
aGlzLl9yb3RhdGVJbnRlcnZhbDsKKyAgICB9LAorICAgIHJvdGF0ZVogOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgcmV0dXJuICJyb3RhdGVaKCIgKyBNYXRoLmZsb29yKHRoaXMuZGVncmVlKCkpICsg
ImRlZykiOworICAgIH0sCisgICAgcm90YXRlIDogZnVuY3Rpb24oKSB7ICAgIAorICAgICAgICBy
ZXR1cm4gInJvdGF0ZSgiICsgTWF0aC5mbG9vcih0aGlzLmRlZ3JlZSgpKSArICIpICI7CisgICAg
fQorfQorCitmdW5jdGlvbiBCb3VuY2luZ1BhcnRpY2xlKHN0YWdlKSB7CisgICAgdGhpcy5fc3Rh
Z2VTaXplID0gc3RhZ2Uuc2l6ZSgpOworICAgIHRoaXMuX3NpemUgPSBzdGFnZS5wYXJ0aWNsZVNp
emU7CisgICAgCisgICAgdGhpcy5fcG9zaXRpb24gPSBzdGFnZS5yYW5kb21Qb3NpdGlvbigpOwor
ICAgIHRoaXMuX2FuZ2xlID0gc3RhZ2UucmFuZG9tQW5nbGUoKTsKKyAgICB0aGlzLl92ZWxvY2l0
eSA9IHN0YWdlLnJhbmRvbVZlbG9jaXR5KCk7CisgICAgdGhpcy5fcm90YXRlciA9IHN0YWdlLnJh
bmRvbVJvdGF0ZXIoKTsKK30KKworQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUgPSB7CisgICAg
Y2VudGVyIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlvbi5hZGQo
dGhpcy5fc2l6ZS5jZW50ZXIoKSk7CisgICAgfSwKKyAgICBhbmltYXRlIDogZnVuY3Rpb24odGlt
ZURlbHRhKSB7CisgICAgICAgIHRoaXMuX3Bvc2l0aW9uID0gdGhpcy5fcG9zaXRpb24ubW92ZSh0
aGlzLl9hbmdsZSwgdGhpcy5fdmVsb2NpdHksIHRpbWVEZWx0YSk7CisgICAgICAgIHRoaXMuX3Jv
dGF0ZXIubmV4dCh0aW1lRGVsdGEpOworCisgICAgICAgIC8vIElmIHBhcnRpY2xlIGlzIGdvaW5n
IHRvIG1vdmUgb2ZmIHJpZ2h0IHNpZGUKKyAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uLnggKyB0
aGlzLl9zaXplLnggPiB0aGlzLl9zdGFnZVNpemUueCkgeworICAgICAgICAgICAgLy8gSWYgZGly
ZWN0aW9uIGlzIEVhc3QtU291dGgKKyAgICAgICAgICAgIGlmICh0aGlzLl9hbmdsZSA+PSAwICYm
IHRoaXMuX2FuZ2xlIDwgTWF0aC5QSSAvIDIpCisgICAgICAgICAgICAgICAgdGhpcy5fYW5nbGUg
PSBNYXRoLlBJIC0gdGhpcy5fYW5nbGU7CisgICAgICAgICAgICAvLyBJZiBhbmdsZSBpcyBFYXN0
LU5vcnRoCisgICAgICAgICAgICBlbHNlIGlmICh0aGlzLl9hbmdsZSA+IE1hdGguUEkgLyAyICog
MykKKyAgICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IHRoaXMuX2FuZ2xlIC0gKHRoaXMuX2Fu
Z2xlIC0gTWF0aC5QSSAvIDIgKiAzKSAqIDI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IC8vIElmIHBhcnRpY2xlIGlzIGdvaW5nIHRvIG1vdmUgb2ZmIGxlZnQgc2lkZQorICAgICAgICBp
ZiAodGhpcy5fcG9zaXRpb24ueCA8IDApIHsKKyAgICAgICAgICAgIC8vIElmIGFuZ2xlIGlzIFdl
c3QtU291dGgKKyAgICAgICAgICAgIGlmICh0aGlzLl9hbmdsZSA+IE1hdGguUEkgLyAyICYmIHRo
aXMuX2FuZ2xlIDwgTWF0aC5QSSkKKyAgICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IE1hdGgu
UEkgLSB0aGlzLl9hbmdsZTsKKyAgICAgICAgICAgIC8vIElmIGFuZ2xlIGlzIFdlc3QtTm9ydGgK
KyAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX2FuZ2xlID4gTWF0aC5QSSAmJiB0aGlzLl9hbmds
ZSA8IE1hdGguUEkgLyAyICogMykKKyAgICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IHRoaXMu
X2FuZ2xlICsgKE1hdGguUEkgLyAyICogMyAtIHRoaXMuX2FuZ2xlKSAqIDI7CisgICAgICAgIH0K
KworICAgICAgICAvLyBJZiBwYXJ0aWNsZSBpcyBnb2luZyB0byBtb3ZlIG9mZiBib3R0b20gc2lk
ZQorICAgICAgICBpZiAodGhpcy5fcG9zaXRpb24ueSArIHRoaXMuX3NpemUueSA+IHRoaXMuX3N0
YWdlU2l6ZS55KSB7CisgICAgICAgICAgICAvLyBJZiBkaXJlY3Rpb24gaXMgU291dGgKKyAgICAg
ICAgICAgIGlmICh0aGlzLl9hbmdsZSA+IDAgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJKQorICAg
ICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0gTWF0aC5QSSAqIDIgLSB0aGlzLl9hbmdsZTsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIElmIHBhcnRpY2xlIGlzIGdvaW5nIHRvIG1vdmUgb2ZmIHRv
cCBzaWRlCisgICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbi55IDwgMCkgeworICAgICAgICAgICAg
Ly8gSWYgZGlyZWN0aW9uIGlzIE5vcnRoCisgICAgICAgICAgICBpZiAodGhpcy5fYW5nbGUgPiBN
YXRoLlBJICYmIHRoaXMuX2FuZ2xlIDwgTWF0aC5QSSAqIDIpCisgICAgICAgICAgICAgICAgdGhp
cy5fYW5nbGUgPSB0aGlzLl9hbmdsZSAtICh0aGlzLl9hbmdsZSAtIE1hdGguUEkpICogMjsKKyAg
ICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvcihi
ZW5jaG1hcmspIHsKKyAgICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyayk7Cit9OworCitC
b3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQW5pbWF0
b3IucHJvdG90eXBlKTsKK0JvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0gQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvcjsKKworQm91bmNpbmdQYXJ0aWNsZXNB
bmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkgeworICAgIGlmICghQW5pbWF0
b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHRoaXMuX2JlbmNobWFyay5fc3RhZ2UuYW5pbWF0ZSh0aGlzLnRpbWVEZWx0YSgpKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdQYXJ0aWNsZXNTdGFnZShlbGVt
ZW50LCBwYXJhbWV0ZXJzKSB7CisgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDsKKyAgICB0aGlz
LnBhcnRpY2xlU2l6ZSA9IG5ldyBQb2ludChwYXJzZUludChwYXJhbWV0ZXJzWyJwYXJ0aWNsZVdp
ZHRoIl0pIHx8IDEwLCBwYXJzZUludChwYXJhbWV0ZXJzWyJwYXJ0aWNsZUhlaWdodCJdKSB8fCAx
MCk7CisgICAgdGhpcy5zdmdOYW1lc3BhY2UgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
OworICAgIHRoaXMueGxpbmtOYW1lc3BhY2UgPSAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayI7CisgICAgCisgICAgdGhpcy5fcGFydGljbGVzID0gW107CisKKyAgICB0aGlzLl9tYXhWZWxv
Y2l0eSA9IHBhcnNlSW50KHBhcmFtZXRlcnNbIm1heFZlbG9jaXR5Il0pIHx8IDUwMDsKKyAgICB0
aGlzLl9tYXhWZWxvY2l0eSA9IE1hdGgubWF4KHRoaXMuX21heFZlbG9jaXR5LCAxMDApOworfQor
CitCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSA9IHsKKyAgICBzaXplIDogZnVuY3Rp
b24oKSB7CisgICAgICAgIHZhciBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlz
LmVsZW1lbnQpOworICAgICAgICB2YXIgcGFkZGluZyA9IG5ldyBJbnNldHMoCisgICAgICAgICAg
ICBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nVG9wKSwKKyAgICAgICAgICAgIHBhcnNlRmxvYXQo
c3R5bGVzLnBhZGRpbmdSaWdodCksCisgICAgICAgICAgICBwYXJzZUZsb2F0KHN0eWxlcy5wYWRk
aW5nQm90dG9tKSwKKyAgICAgICAgICAgIHBhcnNlRmxvYXQoc3R5bGVzLnBhZGRpbmdUb3ApKTsK
KyAgICAgICAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLmVsZW1lbnQuY2xpZW50V2lkdGggLSBwYWRk
aW5nLndpZHRoKCksIHRoaXMuZWxlbWVudC5jbGllbnRIZWlnaHQgLSBwYWRkaW5nLmhlaWdodCgp
KTsKKyAgICB9LAorICAgIHBhcnNlU2hhcGVQYXJhbXRlcnMgOiBmdW5jdGlvbihwYXJhbWV0ZXJz
KSB7CisgICAgICAgIHRoaXMuc2hhcGUgPSBwYXJhbWV0ZXJzWyJzaGFwZSJdIHx8ICJjaXJjbGUi
OworICAgICAgICB0aGlzLmZpbGwgPSBwYXJhbWV0ZXJzWyJmaWxsIl0gfHwgInNvbGlkIjsKKyAg
ICAgICAgdGhpcy5jbGlwID0gcGFyYW1ldGVyc1siY2xpcCJdIHx8ICIiOworICAgIH0sCisgICAg
cmFuZG9tIDogZnVuY3Rpb24obWluLCBtYXgpIHsKKyAgICAgICAgcmV0dXJuIChNYXRoLnJhbmRv
bSgpICogKG1heCAtIG1pbikpICsgbWluOworICAgIH0sCisgICAgcmFuZG9tSW50IDogZnVuY3Rp
b24obWluLCBtYXgpIHsKKyAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy5yYW5kb20obWlu
LCBtYXgpKTsKKyAgICB9LAorICAgIHJhbmRvbVBvc2l0aW9uIDogZnVuY3Rpb24oKSB7CisgICAg
ICAgIHZhciBtYXggPSB0aGlzLnNpemUoKS5zdWJ0cmFjdCh0aGlzLnBhcnRpY2xlU2l6ZSk7Cisg
ICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy5yYW5kb21JbnQoMCwgbWF4LngpLCB0aGlzLnJh
bmRvbUludCgwLCBtYXgueSkpOworICAgIH0sCisgICAgcmFuZG9tVmVsb2NpdHkgOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucmFuZG9tKHRoaXMuX21heFZlbG9jaXR5IC8gOCwg
dGhpcy5fbWF4VmVsb2NpdHkpOworICAgIH0sCisgICAgcmFuZG9tQW5nbGUgOiBmdW5jdGlvbigp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMucmFuZG9tKDAsIE1hdGguUEkgKiAyKTsKKyAgICB9LAor
ICAgIHJhbmRvbUNvbG9yIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBtaW4gPSAzMjsKKyAg
ICAgICAgdmFyIG1heCA9IDI1NiAtIDMyOworICAgICAgICByZXR1cm4gIiMiCisgICAgICAgICAg
ICArIHRoaXMucmFuZG9tSW50KG1pbiwgbWF4KS50b1N0cmluZygxNikKKyAgICAgICAgICAgICsg
dGhpcy5yYW5kb21JbnQobWluLCBtYXgpLnRvU3RyaW5nKDE2KQorICAgICAgICAgICAgKyB0aGlz
LnJhbmRvbUludChtaW4sIG1heCkudG9TdHJpbmcoMTYpOworICAgIH0sCisgICAgcmFuZG9tUm90
YXRlciA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gbmV3IEJvdW5jaW5nUGFydGljbGVS
b3RhdGVyKHRoaXMucmFuZG9tKDEwMDAsIDEwMDAwKSk7CisgICAgfSwKKyAgICBhbmltYXRlIDog
ZnVuY3Rpb24odGltZURlbHRhKSB7CisgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLl9w
YXJ0aWNsZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLl9wYXJ0aWNsZXNbaV0uYW5p
bWF0ZSh0aW1lRGVsdGEpOworICAgIH0sCisgICAgdHVuZSA6IGZ1bmN0aW9uKGNvdW50KSB7Cisg
ICAgICAgIGNvdW50ID0gY291bnQgPiAwID8gTWF0aC5mbG9vcihjb3VudCkgOiBNYXRoLmNlaWwo
Y291bnQpOworCisgICAgICAgIGlmIChjb3VudCA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX3BhcnRpY2xlcy5sZW5ndGg7CisKKyAgICAgICAgaWYgKGNvdW50ID4gMCkgeworICAgICAg
ICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mKHRoaXMuY3JlYXRlUGFydGljbGUpID09ICJmdW5j
dGlvbiIpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAg
ICAgICAgICAgICAgIHRoaXMuX3BhcnRpY2xlcy5wdXNoKHRoaXMuY3JlYXRlUGFydGljbGUoKSk7
CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fcGFydGljbGVzLmxlbmd0aDsKKyAgICAgICAgfQor
CisgICAgICAgIGNvdW50ID0gTWF0aC5taW4oLWNvdW50LCB0aGlzLl9wYXJ0aWNsZXMubGVuZ3Ro
KTsKKyAgICAgICAgCisgICAgICAgIGlmICh0eXBlb2YodGhpcy5wYXJ0aWNsZVdpbGxCZVJlbW92
ZWQpID09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291
bnQ7ICsraSkKKyAgICAgICAgICAgICAgICB0aGlzLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCh0aGlz
Ll9wYXJ0aWNsZXNbdGhpcy5fcGFydGljbGVzLmxlbmd0aCAtIDEgLSBpXSk7CisgICAgICAgIH0K
KworICAgICAgICB0aGlzLl9wYXJ0aWNsZXMuc3BsaWNlKC1jb3VudCwgY291bnQpOworICAgICAg
ICByZXR1cm4gdGhpcy5fcGFydGljbGVzLmxlbmd0aDsKKyAgICB9LAorICAgIGNsZWFyIDogZnVu
Y3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLnR1bmUoLXRoaXMuX3BhcnRpY2xlcy5sZW5n
dGgpOworICAgIH0KK30KKworZnVuY3Rpb24gQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsoc3Vp
dGUsIHRlc3QsIHRlc3RJbnRlcnZhbCwgZnJhbWVSYXRlLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NC
YXIpIHsKKyAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCB0ZXN0SW50ZXJ2YWwsIGZyYW1lUmF0ZSk7
CisKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFnZSIpOwor
ICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsIGRvY3VtZW50LmJvZHkub2Zmc2V0V2lk
dGgpOworICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCBkb2N1bWVudC5ib2R5Lm9m
ZnNldEhlaWdodCk7CisKKyAgICB0aGlzLl9zdGFnZSA9IHRoaXMuY3JlYXRlU3RhZ2UoZWxlbWVu
dCk7CisgICAgdGhpcy5fYW5pbWF0b3IgPSB0aGlzLmNyZWF0ZUFuaW1hdG9yKCk7CisgICAgdGhp
cy5fc3VpdGUgPSBzdWl0ZTsKKyAgICB0aGlzLl90ZXN0ID0gdGVzdDsKKyAgICB0aGlzLl9yZWNv
cmRUYWJsZSA9IHJlY29yZFRhYmxlOworICAgIHRoaXMuX3Byb2dyZXNzQmFyID0gcHJvZ3Jlc3NC
YXI7Cit9CisKK0JvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUoQmVuY2htYXJrLnByb3RvdHlwZSk7CitCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyazsKKworQm91
bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rp
b24oKSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yKHRoaXMpOwor
fQorCitCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9u
KGNvdW50KSB7CisgICAgcmV0dXJuIHRoaXMuX3N0YWdlLnR1bmUoY291bnQpOworfQorCitCb3Vu
Y2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKKyAg
ICByZXR1cm4gdGhpcy5fc3RhZ2UuY2xlYXIoKTsKK30KKworQm91bmNpbmdQYXJ0aWNsZXNCZW5j
aG1hcmsucHJvdG90eXBlLnNob3dSZXN1bHRzID0gZnVuY3Rpb24obWVzc2FnZSwgcHJvZ3Jlc3Mp
IHsKKyAgICBpZiAoIXRoaXMuX3JlY29yZFRhYmxlIHx8ICF0aGlzLl9wcm9ncmVzc0JhciB8fCAh
dGhpcy5fc3VpdGUgfHwgIXRoaXMuX3Rlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIHZhciBp
dGVyYXRpb25TYW1wbGVycyA9IHt9OworICAgIGl0ZXJhdGlvblNhbXBsZXJzW3RoaXMuX3N1aXRl
Lm5hbWVdID0ge307CisgICAgaXRlcmF0aW9uU2FtcGxlcnNbdGhpcy5fc3VpdGUubmFtZV1bdGhp
cy5fdGVzdC5uYW1lXSA9IHRoaXMuX3NhbXBsZXI7CisgICAgdGhpcy5fcmVjb3JkVGFibGUuc2hv
d0l0ZXJhdGlvbnMoW2l0ZXJhdGlvblNhbXBsZXJzXSwgbWVzc2FnZSk7CisgICAgdGhpcy5fcHJv
Z3Jlc3NCYXIuc2V0UG9zKHByb2dyZXNzKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci9yZXNvdXJjZXMvYm91bmNpbmctc2hhcGVzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvYm91bmNpbmctc2hhcGVzLmpzCShyZXZp
c2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ib3VuY2lu
Zy1zaGFwZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorZnVuY3Rpb24gQm91
bmNpbmdTaGFwZShzdGFnZSkgeworICAgIEJvdW5jaW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFn
ZSk7CisKKyAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLl9jcmVhdGVTcGFuKHN0YWdlKTsKKyAgICAg
ICAgCisgICAgc3dpdGNoIChzdGFnZS5maWxsKSB7CisgICAgY2FzZSAic29saWQiOgorICAgIGRl
ZmF1bHQ6CisgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBzdGFn
ZS5yYW5kb21Db2xvcigpOworICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSAiZ3Jh
ZGllbnQiOgorICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZCA9ICJsaW5lYXIt
Z3JhZGllbnQoIiArIHN0YWdlLnJhbmRvbUNvbG9yKCkgKyAiLCAiICsgc3RhZ2UucmFuZG9tQ29s
b3IoKSArICIpIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgdGhpcy5fbW92ZSgpOwor
fQorCitCb3VuY2luZ1NoYXBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0
aWNsZS5wcm90b3R5cGUpOworQm91bmNpbmdTaGFwZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBC
b3VuY2luZ1NoYXBlOworCitCb3VuY2luZ1NoYXBlLnByb3RvdHlwZS5fY3JlYXRlU3BhbiA9IGZ1
bmN0aW9uKHN0YWdlKSB7CisgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
cGFuIik7CisgICAgc3Bhbi5jbGFzc05hbWUgPSBzdGFnZS5zaGFwZSArICIgIiArIHN0YWdlLmNs
aXA7CisgICAgc3Bhbi5zdHlsZS53aWR0aCA9IHRoaXMuX3NpemUueCArICJweCI7CisgICAgc3Bh
bi5zdHlsZS5oZWlnaHQgPSB0aGlzLl9zaXplLnkgKyAicHgiOworICAgIHN0YWdlLmVsZW1lbnQu
YXBwZW5kQ2hpbGQoc3Bhbik7CisgICAgcmV0dXJuIHNwYW47Cit9CisKK0JvdW5jaW5nU2hhcGUu
cHJvdG90eXBlLl9tb3ZlID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRy
YW5zZm9ybSA9ICJ0cmFuc2xhdGUoIiArIHRoaXMuX3Bvc2l0aW9uLnggKyAicHgsIiArIHRoaXMu
X3Bvc2l0aW9uLnkgKyAicHgpIiArIHRoaXMuX3JvdGF0ZXIucm90YXRlWigpOworfQorICAgIAor
Qm91bmNpbmdTaGFwZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkgewor
ICAgIEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVs
dGEpOworICAgIHRoaXMuX3JvdGF0ZXIubmV4dCh0aW1lRGVsdGEpOyAgICAKKyAgICB0aGlzLl9t
b3ZlKCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nU2hhcGVzU3RhZ2UoZWxlbWVudCwgcGFyYW1l
dGVycykgeworICAgIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBw
YXJhbWV0ZXJzKTsKKyAgICB0aGlzLnBhcnNlU2hhcGVQYXJhbXRlcnMocGFyYW1ldGVycyk7Cit9
CisKK0JvdW5jaW5nU2hhcGVzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2lu
Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7CitCb3VuY2luZ1NoYXBlc1N0YWdlLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU2hhcGVzU3RhZ2U7CisKK0JvdW5jaW5nU2hhcGVzU3Rh
Z2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5l
dyBCb3VuY2luZ1NoYXBlKHRoaXMpOworfQorCitCb3VuY2luZ1NoYXBlc1N0YWdlLnByb3RvdHlw
ZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQgPSBmdW5jdGlvbihwYXJ0aWNsZSkgeworICAgIGlmIChw
YXJ0aWNsZS5lbGVtZW50ICYmIHBhcnRpY2xlLmVsZW1lbnQucGFyZW50Tm9kZSAmJiBwYXJ0aWNs
ZS5lbGVtZW50LnBhcmVudE5vZGUgPT0gdGhpcy5lbGVtZW50KQorICAgICAgICB0aGlzLmVsZW1l
bnQucmVtb3ZlQ2hpbGQocGFydGljbGUuZWxlbWVudCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5n
U2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCB0ZXN0SW50ZXJ2YWwsIGZyYW1lUmF0ZSwgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsu
Y2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgdGVzdEludGVydmFsLCBmcmFtZVJhdGUsIHJlY29yZFRh
YmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nU2hhcGVzQmVuY2htYXJrLnByb3RvdHlw
ZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsK
K0JvdW5jaW5nU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5n
U2hhcGVzQmVuY2htYXJrOworCitCb3VuY2luZ1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3Jl
YXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1No
YXBlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX3BhcmFtZXRlcnMpOworfQorCit3aW5kb3cuYmVuY2ht
YXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCB0ZXN0SW50ZXJ2YWwsIGZy
YW1lUmF0ZSwgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgd2luZG93LmJlbmNobWFy
ayA9IG5ldyBCb3VuY2luZ1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgdGVzdEludGVydmFs
LCBmcmFtZVJhdGUsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ib3VuY2lu
Zy1zdmctaW1hZ2VzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNjEgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnSW1hZ2Uoc3RhZ2UpIHsKKyAgICBCb3Vu
Y2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworCisgICAgdGhpcy5lbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKHN0YWdlLnN2Z05hbWVzcGFjZSwgImltYWdlIik7CisgICAg
dGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgieCIsIDApOworICAgIHRoaXMuZWxlbWVudC5zZXRB
dHRyaWJ1dGUoInkiLCAwKTsgICAgCisgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgid2lk
dGgiLCB0aGlzLl9zaXplLngpOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImhlaWdo
dCIsIHRoaXMuX3NpemUueSk7CisgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZU5TKHN0YWdl
LnhsaW5rTmFtZXNwYWNlLCAiaHJlZiIsIHN0YWdlLmltYWdlU3JjKTsKKworICAgIHN0YWdlLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTsKKyAgICB0aGlzLl9tb3ZlKCk7ICAgIAor
fQorCitCb3VuY2luZ1N2Z0ltYWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQ
YXJ0aWNsZS5wcm90b3R5cGUpOworQm91bmNpbmdTdmdJbWFnZS5wcm90b3R5cGUuY29uc3RydWN0
b3IgPSBCb3VuY2luZ1N2Z0ltYWdlOworCitCb3VuY2luZ1N2Z0ltYWdlLnByb3RvdHlwZS5fbW92
ZSA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBjZW50ZXIgPSB0aGlzLmNlbnRlcigpOworICAgIHRo
aXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsIAorICAgICAgICAidHJhbnNsYXRl
KCIgKyBjZW50ZXIueCArICIsICIgKyBjZW50ZXIueSArICIpICIKKyAgICAgICAgKyB0aGlzLl9y
b3RhdGVyLnJvdGF0ZSgpCisgICAgICAgICsgInRyYW5zbGF0ZSgiICsgLXRoaXMuX3NpemUueCAv
IDIgKyAiLCAiICsgLXRoaXMuX3NpemUueSAvIDIgKyAiKSAiKTsKK30KKworQm91bmNpbmdTdmdJ
bWFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkgeworICAgIEJvdW5j
aW5nUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEpOworICAg
IHRoaXMuX21vdmUoKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdTdmdJbWFnZXNTdGFnZShlbGVt
ZW50LCBwYXJhbWV0ZXJzKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMs
IGVsZW1lbnQsIHBhcmFtZXRlcnMpOworICAgIHRoaXMuaW1hZ2VTcmMgPSBwYXJhbWV0ZXJzWyJp
bWFnZVNyYyJdIHx8ICJyZXNvdXJjZXMveWluLXlhbmcuc3ZnIjsKK30KKworQm91bmNpbmdTdmdJ
bWFnZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzU3Rh
Z2UucHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVj
dG9yID0gQm91bmNpbmdTdmdJbWFnZXNTdGFnZTsKKworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5w
cm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IEJv
dW5jaW5nU3ZnSW1hZ2UodGhpcyk7Cit9CisKK0JvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UucHJvdG90
eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xlKSB7CisgICAgaWYg
KHBhcnRpY2xlLmVsZW1lbnQgJiYgcGFydGljbGUuZWxlbWVudC5wYXJlbnROb2RlICYmIHBhcnRp
Y2xlLmVsZW1lbnQucGFyZW50Tm9kZSA9PSB0aGlzLmVsZW1lbnQpCisgICAgICAgIHRoaXMuZWxl
bWVudC5yZW1vdmVDaGlsZChwYXJ0aWNsZS5lbGVtZW50KTsKK30KKworZnVuY3Rpb24gQm91bmNp
bmdTdmdJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIHRlc3RJbnRlcnZhbCwgZnJhbWVSYXRl
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0JlbmNo
bWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCB0ZXN0SW50ZXJ2YWwsIGZyYW1lUmF0ZSwgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsu
cHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90
b3R5cGUpOworQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nU3ZnSW1hZ2VzQmVuY2ht
YXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICByZXR1
cm4gbmV3IEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UoZWxlbWVudCwgdGhpcy5fcGFyYW1ldGVycyk7
Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRl
c3QsIHRlc3RJbnRlcnZhbCwgZnJhbWVSYXRlLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsK
KyAgICB3aW5kb3cuYmVuY2htYXJrID0gbmV3IEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrKHN1
aXRlLCB0ZXN0LCB0ZXN0SW50ZXJ2YWwsIGZyYW1lUmF0ZSwgcmVjb3JkVGFibGUsIHByb2dyZXNz
QmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvYm91
bmNpbmctc3ZnLXNoYXBlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuanMJKHJldmlzaW9uIDApCisrKyBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNjEgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nU3Zn
U2hhcGUoc3RhZ2UpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOwor
ICAgIHRoaXMuX3NoYXBlID0gc3RhZ2Uuc2hhcGU7CisgICAgCisgICAgc3dpdGNoICh0aGlzLl9z
aGFwZSkgeworICAgIGNhc2UgImNpcmNsZSI6CisgICAgZGVmYXVsdDoKKyAgICAgICAgdGhpcy5l
bGVtZW50ID0gdGhpcy5fY3JlYXRlQ2lyY2xlKHN0YWdlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
ICAgIAorICAgIGNhc2UgInJlY3QiOgorICAgICAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLl9jcmVh
dGVSZWN0KHN0YWdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dpdGNoIChzdGFn
ZS5jbGlwKSB7CisgICAgY2FzZSAic3RhciI6CisgICAgICAgIHN0YWdlLmVuc3VyZUNsaXBTdGFy
SXNDcmVhdGVkKCk7ICAgIAorICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJjbGlw
LXBhdGgiLCAidXJsKCNzdGFyLWNsaXApIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IHN3aXRjaCAoc3RhZ2UuZmlsbCkgeworICAgIGNhc2UgInNvbGlkIjoKKyAgICBkZWZhdWx0Ogor
ICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJmaWxsIiwgc3RhZ2UucmFuZG9tQ29s
b3IoKSk7CisgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlICJncmFkaWVudCI6Cisg
ICAgICAgIHZhciBncmFkaWVudCA9IHN0YWdlLmNyZWF0ZUdyYWRpZW50KDIpOworICAgICAgICB0
aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJmaWxsIiwgInVybCgjIiArIGdyYWRpZW50LmdldEF0
dHJpYnV0ZSgiaWQiKSArICIpIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHRoaXMu
X21vdmUoKTsgICAgCit9CisKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZShCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ1N2Z1NoYXBlLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU3ZnU2hhcGU7CisKK0JvdW5jaW5nU3ZnU2hhcGUu
cHJvdG90eXBlLl9jcmVhdGVDaXJjbGUgPSBmdW5jdGlvbihzdGFnZSkgeworICAgIHZhciBjaXJj
bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3RhZ2Uuc3ZnTmFtZXNwYWNlLCAiY2lyY2xl
Iik7CisgICAgY2lyY2xlLnNldEF0dHJpYnV0ZSgiY3giLCB0aGlzLl9zaXplLnggLyAyKTsKKyAg
ICBjaXJjbGUuc2V0QXR0cmlidXRlKCJjeSIsIHRoaXMuX3NpemUueSAvIDIpOyAgICAKKyAgICBj
aXJjbGUuc2V0QXR0cmlidXRlKCJyIiwgTWF0aC5taW4odGhpcy5fc2l6ZS54LCB0aGlzLl9zaXpl
LnkpIC8gMik7CisgICAgc3RhZ2UuZWxlbWVudC5hcHBlbmRDaGlsZChjaXJjbGUpOworICAgIHJl
dHVybiBjaXJjbGU7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLl9jcmVhdGVSZWN0
ID0gZnVuY3Rpb24oc3RhZ2UpIHsKKyAgICB2YXIgcmVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUyhzdGFnZS5zdmdOYW1lc3BhY2UsICJyZWN0Iik7CisgICAgcmVjdC5zZXRBdHRyaWJ1dGUo
IngiLCAwKTsKKyAgICByZWN0LnNldEF0dHJpYnV0ZSgieSIsIDApOyAgICAKKyAgICByZWN0LnNl
dEF0dHJpYnV0ZSgid2lkdGgiLCB0aGlzLl9zaXplLngpOworICAgIHJlY3Quc2V0QXR0cmlidXRl
KCJoZWlnaHQiLCB0aGlzLl9zaXplLnkpOworICAgIHN0YWdlLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
cmVjdCk7ICAgIAorICAgIHJldHVybiByZWN0OworfQorCitCb3VuY2luZ1N2Z1NoYXBlLnByb3Rv
dHlwZS5fbW92ZSA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB0cmFuc2Zvcm07CisgICAgaWYgKHRo
aXMuX3NoYXBlID09ICJjaXJjbGUiKQorICAgICAgICB0cmFuc2Zvcm0gPSAidHJhbnNsYXRlKCIg
KyB0aGlzLl9wb3NpdGlvbi54ICsgIiwgIiArIHRoaXMuX3Bvc2l0aW9uLnkgKyAiKSI7CisgICAg
ZWxzZSB7CisgICAgICAgIHZhciBjZW50ZXIgPSB0aGlzLmNlbnRlcigpOworICAgICAgICB0cmFu
c2Zvcm0gID0gInRyYW5zbGF0ZSgiICsgY2VudGVyLnggKyAiLCAiICsgY2VudGVyLnkgKyAiKSAi
OworICAgICAgICB0cmFuc2Zvcm0gKz0gdGhpcy5fcm90YXRlci5yb3RhdGUoKTsKKyAgICAgICAg
dHJhbnNmb3JtICs9ICJ0cmFuc2xhdGUoIiArIC10aGlzLl9zaXplLndpZHRoKCkgLyAyICsgIiwg
IiArIC10aGlzLl9zaXplLmhlaWdodCgpIC8gMiArICIpIjsKKyAgICB9CisgICAgdGhpcy5lbGVt
ZW50LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwgdHJhbnNmb3JtKTsKK30KKworQm91bmNpbmdT
dmdTaGFwZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkgeworICAgIEJv
dW5jaW5nUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEpOwor
ICAgIHRoaXMuX21vdmUoKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdTdmdTaGFwZXNTdGFnZShl
bGVtZW50LCBwYXJhbWV0ZXJzKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRo
aXMsIGVsZW1lbnQsIHBhcmFtZXRlcnMpOworICAgIHRoaXMucGFyc2VTaGFwZVBhcmFtdGVycyhw
YXJhbWV0ZXJzKTsKK30KKworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nU3Zn
U2hhcGVzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdTaGFwZXNTdGFn
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAorQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuZW5zdXJlQ2xpcFN0
YXJJc0NyZWF0ZWQgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5lbGVtZW50LnF1ZXJ5
U2VsZWN0b3IoIiNzdGFyLWNsaXAiKSB8fCB0aGlzLl9jcmVhdGVDbGlwU3RhcigpOworfQorCitC
b3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5lbnN1cmVEZWZzSXNDcmVhdGVkID0gZnVu
Y3Rpb24oKSB7CisgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKCJkZWZzIikg
fHwgdGhpcy5fY3JlYXRlRGVmcygpOworfQorCitCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3Rv
dHlwZS5jcmVhdGVHcmFkaWVudCA9IGZ1bmN0aW9uKHN0b3BzKSB7CisgICAgdmFyIGdyYWRpZW50
ICA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0aGlzLnN2Z05hbWVzcGFjZSwgImxpbmVhckdy
YWRpZW50Iik7CisgICAgCisgICAgaWYgKHR5cGVvZiB0aGlzLl9nYWRpZW50c0NvdW50ID09PSAi
dW5kZWZpbmVkIikKKyAgICAgICAgdGhpcy5fZ2FkaWVudHNDb3VudCA9IDA7ICAgIAorICAgIGdy
YWRpZW50LnNldEF0dHJpYnV0ZSgiaWQiLCAiZ2FkaWVudC0iICsgKyt0aGlzLl9nYWRpZW50c0Nv
dW50KTsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0b3BzOyArK2kpIHsKKyAgICAg
ICAgdmFyIHN0b3AgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlModGhpcy5zdmdOYW1lc3BhY2Us
ICJzdG9wIik7CisgICAgICAgIHN0b3Auc2V0QXR0cmlidXRlKCJvZmZzZXQiLCBpICogMTAwIC8g
c3RvcHMgKyAiJSIpOworICAgICAgICBzdG9wLnNldEF0dHJpYnV0ZSgic3RvcC1jb2xvciIsIHRo
aXMucmFuZG9tQ29sb3IoKSk7CisgICAgICAgIGdyYWRpZW50LmFwcGVuZENoaWxkKHN0b3ApOwor
ICAgIH0KKworICAgIHRoaXMuZW5zdXJlRGVmc0lzQ3JlYXRlZCgpLmFwcGVuZENoaWxkKGdyYWRp
ZW50KTsKKyAgICByZXR1cm4gZ3JhZGllbnQ7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGVzU3RhZ2Uu
cHJvdG90eXBlLl9jcmVhdGVEZWZzID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGRlZnMgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlModGhpcy5zdmdOYW1lc3BhY2UsImRlZnMiKTsKKyAgICB0aGlz
LmVsZW1lbnQuaW5zZXJ0QmVmb3JlKGRlZnMsIHRoaXMuZWxlbWVudC5maXJzdENoaWxkKTsKKyAg
ICByZXR1cm4gZGVmczsKK30KKyAgICAKK0JvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBl
Ll9jcmVhdGVDbGlwU3RhciA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBjbGlwUGF0aCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUyh0aGlzLnN2Z05hbWVzcGFjZSwgImNsaXBQYXRoIik7CisgICAg
Y2xpcFBhdGguc2V0QXR0cmlidXRlKCJpZCIsICJzdGFyLWNsaXAiKTsKKyAgICBjbGlwUGF0aC5z
ZXRBdHRyaWJ1dGUoImNsaXBQYXRoVW5pdHMiLCAib2JqZWN0Qm91bmRpbmdCb3giKTsKKyAgICAK
KyAgICB2YXIgcGF0aCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0aGlzLnN2Z05hbWVzcGFj
ZSwgInBhdGgiKTsKKyAgICBwYXRoLnNldEF0dHJpYnV0ZSgiZCIsICJNLjUwLDBMLjM4LC4zOEww
LC4zOEwuMzAsLjYwTC4xOCwxTC41MCwuNzVMLjgyLDFMLjcwLC42MEwxLC4zOEwuNjIsLjM4eiIp
OworICAgIGNsaXBQYXRoLmFwcGVuZENoaWxkKHBhdGgpOworICAgIAorICAgIHRoaXMuZW5zdXJl
RGVmc0lzQ3JlYXRlZCgpLmFwcGVuZENoaWxkKGNsaXBQYXRoKTsKKyAgICByZXR1cm4gY2xpcFBh
dGg7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xl
ID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBlKHRoaXMpOwor
fQorCitCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92
ZWQgPSBmdW5jdGlvbihwYXJ0aWNsZSkgeworICAgIGlmICghcGFydGljbGUuZWxlbWVudCB8fCAh
cGFydGljbGUuZWxlbWVudC5wYXJlbnROb2RlIHx8IHBhcnRpY2xlLmVsZW1lbnQucGFyZW50Tm9k
ZSAhPSB0aGlzLmVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgdmFyIGZp
bGwgPSBwYXJ0aWNsZS5lbGVtZW50LmdldEF0dHJpYnV0ZSgiZmlsbCIpOworICAgIGlmIChmaWxs
LmluZGV4T2YoInVybCgjIikgPT0gMCkgeworICAgICAgICB2YXIgZ3JhZGllbnQgPSB0aGlzLmVs
ZW1lbnQucXVlcnlTZWxlY3RvcihmaWxsLnN1YnN0cmluZyg0LCBmaWxsLmxlbmd0aCAtIDEpKTsK
KyAgICAgICAgdGhpcy5lbnN1cmVEZWZzSXNDcmVhdGVkKCkucmVtb3ZlQ2hpbGQoZ3JhZGllbnQp
OworICAgIH0KKyAgICAKKyAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQocGFydGljbGUuZWxl
bWVudCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0
ZXN0LCB0ZXN0SW50ZXJ2YWwsIGZyYW1lUmF0ZSwgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7
CisgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwg
dGVzdEludGVydmFsLCBmcmFtZVJhdGUsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisK
K0JvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91
bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnU2hhcGVzQmVu
Y2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJr
OworCitCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBm
dW5jdGlvbihlbGVtZW50KSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdl
KGVsZW1lbnQsIHRoaXMuX3BhcmFtZXRlcnMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50
LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCB0ZXN0SW50ZXJ2YWwsIGZyYW1lUmF0ZSwg
cmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgd2luZG93LmJlbmNobWFyayA9IG5ldyBC
b3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgdGVzdEludGVydmFsLCBmcmFt
ZVJhdGUsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2dyYXBoLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZ3JhcGguanMJKHJldmlzaW9uIDApCisrKyBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2dyYXBoLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTQxIEBACitmdW5jdGlvbiBncmFwaChzZWxlY3Rvciwgc2l6ZSwgbWFy
Z2lucywgYXhpc2VzLCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQpIHsKKworICAgIHZhciBl
bGVtZW50ID0gZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOworICAg
IHdoaWxlIChlbGVtZW50LmZpcnN0Q2hpbGQpCisgICAgICAgIGVsZW1lbnQucmVtb3ZlQ2hpbGQo
ZWxlbWVudC5maXJzdENoaWxkKTsKKworICAgIHZhciB4ID0gZDMuc2NhbGUubGluZWFyKCkKKyAg
ICAgICAgICAgIC5yYW5nZShbMCwgc2l6ZS53aWR0aCgpXSkKKyAgICAgICAgICAgIC5kb21haW4o
ZDMuZXh0ZW50KHNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudGltZU9mZnNldDsgfSkp
OyAgICAgICAgICAgIAorCisgICAgdmFyIHlMZWZ0ID0gZDMuc2NhbGUubGluZWFyKCkKKyAgICAg
ICAgICAgIC5yYW5nZShbc2l6ZS5oZWlnaHQoKSwgMF0pCisgICAgICAgICAgICAuZG9tYWluKFsw
LCBkMy5tYXgoc2FtcGxlcywgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC52YWx1ZXNbMF07IH0pXSk7
CisKKyAgICB2YXIgeVJpZ2h0ID0gZDMuc2NhbGUubGluZWFyKCkKKyAgICAgICAgICAgIC5yYW5n
ZShbc2l6ZS5oZWlnaHQoKSwgMF0pCisgICAgICAgICAgICAuZG9tYWluKFswLCBkMy5tYXgoc2Ft
cGxlcywgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC52YWx1ZXNbMV07IH0pXSk7CisKKyAgICB2YXIg
eEF4aXMgPSBkMy5zdmcuYXhpcygpCisgICAgICAgICAgICAuc2NhbGUoeCkKKyAgICAgICAgICAg
IC5vcmllbnQoImJvdHRvbSIpOworCisgICAgdmFyIHlBeGlzTGVmdCA9IGQzLnN2Zy5heGlzKCkK
KyAgICAgICAgICAgIC5zY2FsZSh5TGVmdCkKKyAgICAgICAgICAgIC5vcmllbnQoImxlZnQiKTsK
KworICAgIHZhciB5QXhpc1JpZ2h0ID0gZDMuc3ZnLmF4aXMoKQorICAgICAgICAgICAgLnNjYWxl
KHlSaWdodCkKKyAgICAgICAgICAgIC5vcmllbnQoInJpZ2h0Iik7CisKKyAgICB2YXIgbGluZUxl
ZnQgPSBkMy5zdmcubGluZSgpCisgICAgICAgICAgICAueChmdW5jdGlvbihkKSB7IHJldHVybiB4
KGQudGltZU9mZnNldCk7IH0pCisgICAgICAgICAgICAueShmdW5jdGlvbihkKSB7IHJldHVybiB5
TGVmdChkLnZhbHVlc1swXSk7IH0pOworCisgICAgdmFyIGxpbmVSaWdodCA9IGQzLnN2Zy5saW5l
KCkKKyAgICAgICAgICAgIC54KGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHgoZC50aW1lT2Zmc2V0KTsg
fSkKKyAgICAgICAgICAgIC55KGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHlSaWdodChkLnZhbHVlc1sx
XSk7IH0pOworCisgICAgc2FtcGxlcy5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsKKyAgICAgICAgZC50
aW1lT2Zmc2V0ID0gK2QudGltZU9mZnNldDsKKyAgICAgICAgZC52YWx1ZXNbMF0gPSArZC52YWx1
ZXNbMF07CisgICAgICAgIGQudmFsdWVzWzFdID0gK2QudmFsdWVzWzFdOyAgICAgICAgCisgICAg
fSk7ICAgIAorCisgICAgdmFyIHNhbXBsZWRTYW1wbGVzID0gc2FtcGxlcy5maWx0ZXIoZnVuY3Rp
b24oZCkgeworICAgICAgICByZXR1cm4gZC50aW1lT2Zmc2V0ID49IHNhbXBsaW5nVGltZU9mZnNl
dDsKKyAgICB9KTsKKyAgICAKKyAgICB2YXIgbWVhbkxlZnQgPSBkMy5tZWFuKHNhbXBsZWRTYW1w
bGVzLCBmdW5jdGlvbihkKSB7CisgICAgICAgIHJldHVybiArZC52YWx1ZXNbMF07CisgICAgfSk7
CisKKyAgICB2YXIgbWVhblJpZ2h0ID0gZDMubWVhbihzYW1wbGVkU2FtcGxlcywgZnVuY3Rpb24o
ZCkgeworICAgICAgICByZXR1cm4gK2QudmFsdWVzWzFdOworICAgIH0pOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAorICAgIHZhciBzdmcgPSBkMy5zZWxlY3Qoc2VsZWN0b3IpLmFwcGVu
ZCgic3ZnIikKKyAgICAgICAgLmF0dHIoIndpZHRoIiwgc2l6ZS53aWR0aCgpICsgbWFyZ2lucy5s
ZWZ0ICsgbWFyZ2lucy5yaWdodCkKKyAgICAgICAgLmF0dHIoImhlaWdodCIsIHNpemUuaGVpZ2h0
KCkgKyBtYXJnaW5zLnRvcCArIG1hcmdpbnMuYm90dG9tKQorICAgICAgICAuYXBwZW5kKCJnIikK
KyAgICAgICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAidHJhbnNsYXRlKCIgKyBtYXJnaW5zLmxl
ZnQgKyAiLCIgKyBtYXJnaW5zLnRvcCArICIpIik7CisKKyAgICAvLyB4LWF4aXMKKyAgICBzdmcu
YXBwZW5kKCJnIikKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgInggYXhpcyIpCisgICAgICAgIC5h
dHRyKCJmaWxsIiwgInJnYigyMzUsIDIzNSwgMjM1KSIpCisgICAgICAgIC5hdHRyKCJ0cmFuc2Zv
cm0iLCAidHJhbnNsYXRlKDAsIiArIHNpemUuaGVpZ2h0KCkgKyAiKSIpCisgICAgICAgIC5jYWxs
KHhBeGlzKQorICAgICAgICAuYXBwZW5kKCJ0ZXh0IikKKyAgICAgICAgICAgIC5hdHRyKCJjbGFz
cyIsICJsYWJlbCIpCisgICAgICAgICAgICAuYXR0cigieCIsIHNpemUud2lkdGgoKSkKKyAgICAg
ICAgICAgIC5hdHRyKCJ5IiwgLTYpCisgICAgICAgICAgICAuYXR0cigiZmlsbCIsICJyZ2IoMjM1
LCAyMzUsIDIzNSkiKQorICAgICAgICAgICAgLnN0eWxlKCJ0ZXh0LWFuY2hvciIsICJlbmQiKQor
ICAgICAgICAgICAgLnRleHQoInRpbWUiKTsKKyAgICAgICAgICAgICAgICAgCisgICAgLy8geUxl
ZnQtYXhpcworICAgIHN2Zy5hcHBlbmQoImciKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAieSBh
eGlzIikKKyAgICAgICAgLmF0dHIoImZpbGwiLCAic3RlZWxibHVlIikKKyAgICAgICAgLmNhbGwo
eUF4aXNMZWZ0KQorICAgICAgICAuYXBwZW5kKCJ0ZXh0IikKKyAgICAgICAgICAgIC5hdHRyKCJj
bGFzcyIsICJsYWJlbCIpCisgICAgICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInJvdGF0ZSgt
OTApIikKKyAgICAgICAgICAgIC5hdHRyKCJ5IiwgNikKKyAgICAgICAgICAgIC5hdHRyKCJmaWxs
IiwgInN0ZWVsYmx1ZSIpCisgICAgICAgICAgICAuYXR0cigiZHkiLCAiLjcxZW0iKQorICAgICAg
ICAgICAgLnN0eWxlKCJ0ZXh0LWFuY2hvciIsICJlbmQiKQorICAgICAgICAgICAgLnRleHQoYXhp
c2VzWzBdKTsKKworICAgIC8vIHlSaWdodC1heGlzCisgICAgc3ZnLmFwcGVuZCgiZyIpCisgICAg
ICAgIC5hdHRyKCJjbGFzcyIsICJ5IGF4aXMiKQorICAgICAgICAuYXR0cigiZmlsbCIsICJyZWQi
KQorICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiICsgc2l6ZS53aWR0aCgp
ICsgIiwgMCkiKQorICAgICAgICAuY2FsbCh5QXhpc1JpZ2h0KQorICAgICAgICAuYXBwZW5kKCJ0
ZXh0IikKKyAgICAgICAgICAgIC5hdHRyKCJjbGFzcyIsICJsYWJlbCIpCisgICAgICAgICAgICAu
YXR0cigidHJhbnNmb3JtIiwgInJvdGF0ZSgtOTApIikKKyAgICAgICAgICAgIC5hdHRyKCJ5Iiwg
NikKKyAgICAgICAgICAgIC5hdHRyKCJmaWxsIiwgInJlZCIpCisgICAgICAgICAgICAuYXR0cigi
ZHkiLCAiLjcxZW0iKQorICAgICAgICAgICAgLnN0eWxlKCJ0ZXh0LWFuY2hvciIsICJlbmQiKQor
ICAgICAgICAgICAgLnRleHQoYXhpc2VzWzFdKTsKKworICAgIC8vIGxlZnQtbWVhbgorICAgIHN2
Zy5hcHBlbmQoInN2ZzpsaW5lIikKKyAgICAgICAgLmF0dHIoIngxIiwgeCgwKSkKKyAgICAgICAg
LmF0dHIoIngyIiwgc2l6ZS53aWR0aCgpKQorICAgICAgICAuYXR0cigieTEiLCB5TGVmdChtZWFu
TGVmdCkpCisgICAgICAgIC5hdHRyKCJ5MiIsIHlMZWZ0KG1lYW5MZWZ0KSkKKyAgICAgICAgLmF0
dHIoImNsYXNzIiwgImxlZnQtbWVhbiIpOworCisgICAgLy8gcmlnaHQtbWVhbgorICAgIHN2Zy5h
cHBlbmQoInN2ZzpsaW5lIikKKyAgICAgICAgLmF0dHIoIngxIiwgeCgwKSkKKyAgICAgICAgLmF0
dHIoIngyIiwgc2l6ZS53aWR0aCgpKQorICAgICAgICAuYXR0cigieTEiLCB5UmlnaHQobWVhblJp
Z2h0KSkKKyAgICAgICAgLmF0dHIoInkyIiwgeVJpZ2h0KG1lYW5SaWdodCkpCisgICAgICAgIC5h
dHRyKCJjbGFzcyIsICJyaWdodC1tZWFuIik7ICAgICAgICAKKworICAgIC8vIHNhbXBsaW5nVGlt
ZU9mZnNldAorICAgIHN2Zy5hcHBlbmQoImxpbmUiKQorICAgICAgICAuYXR0cigieDEiLCB4KHNh
bXBsaW5nVGltZU9mZnNldCkpCisgICAgICAgIC5hdHRyKCJ4MiIsIHgoc2FtcGxpbmdUaW1lT2Zm
c2V0KSkKKyAgICAgICAgLmF0dHIoInkxIiwgeUxlZnQoMCkpCisgICAgICAgIC5hdHRyKCJ5MiIs
IHlMZWZ0KHlBeGlzTGVmdC5zY2FsZSgpLmRvbWFpbigpWzFdKSkKKyAgICAgICAgLmF0dHIoImNs
YXNzIiwgInNtYXBsZS10aW1lIik7CisKKyAgICAvLyBsZWZ0LXNhbXBsZXMKKyAgICBzdmcuYXBw
ZW5kKCJwYXRoIikKKyAgICAgICAgLmRhdHVtKHNhbXBsZXMpCisgICAgICAgIC5hdHRyKCJjbGFz
cyIsICJsZWZ0LXNhbXBsZXMiKQorICAgICAgICAuYXR0cigiZCIsIGxpbmVMZWZ0KTsKKyAgICAg
ICAgCisgICAgLy8gcmlnaHQtc2FtcGxlcworICAgIHN2Zy5hcHBlbmQoInBhdGgiKQorICAgICAg
ICAuZGF0dW0oc2FtcGxlcykKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgInJpZ2h0LXNhbXBsZXMi
KQorICAgICAgICAuYXR0cigiZCIsIGxpbmVSaWdodCk7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL21haW4uanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9tYWluLmpzCShyZXZpc2lvbiAwKQorKysgUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9tYWluLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDU0IEBACitmdW5jdGlvbiBQb2ludCh4LCB5KSB7CisgICAgdGhpcy54ID0g
eDsKKyAgICB0aGlzLnkgPSB5OworfQorCitQb2ludC5wcm90b3R5cGUgPSB7CisgICAgd2lkdGgg
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMueDsKKyAgICB9LAorICAgIGhlaWdo
dCA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy55OworICAgIH0sCisgICAgY2Vu
dGVyIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy54IC8gMiwg
dGhpcy55IC8gMik7CisgICAgfSwKKyAgICBhZGQgOiBmdW5jdGlvbihvdGhlcikgeworICAgICAg
ICByZXR1cm4gbmV3IFBvaW50KHRoaXMueCArIG90aGVyLngsIHRoaXMueSArIG90aGVyLnkpOwor
ICAgIH0sICAgIAorICAgIHN1YnRyYWN0IDogZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgcmV0
dXJuIG5ldyBQb2ludCh0aGlzLnggLSBvdGhlci54LCB0aGlzLnkgLSBvdGhlci55KTsKKyAgICB9
LAorICAgIG11bHRpcGx5IDogZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQ
b2ludCh0aGlzLnggKiBvdGhlci54LCB0aGlzLnkgKiBvdGhlci55KTsKKyAgICB9LAorICAgIG1v
dmUgOiBmdW5jdGlvbihhbmdsZSwgdmVsb2NpdHksIHRpbWVEZWx0YSkgeworICAgICAgICB2YXIg
eCA9IHRoaXMueCArIE1hdGguY29zKGFuZ2xlKSAqIHZlbG9jaXR5ICogKHRpbWVEZWx0YSAvIDEw
MDApOworICAgICAgICB2YXIgeSA9IHRoaXMueSArIE1hdGguc2luKGFuZ2xlKSAqIHZlbG9jaXR5
ICogKHRpbWVEZWx0YSAvIDEwMDApOworICAgICAgICByZXR1cm4gbmV3IFBvaW50KHgsIHkpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gSW5zZXRzKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCkgewor
ICAgIHRoaXMudG9wID0gdG9wOworICAgIHRoaXMucmlnaHQgPSByaWdodDsKKyAgICB0aGlzLmJv
dHRvbSA9IGJvdHRvbTsKKyAgICB0aGlzLmxlZnQgPSBsZWZ0OworfQorCitJbnNldHMucHJvdG90
eXBlID0geworICAgIHdpZHRoIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLmxl
ZnQgKyB0aGlzLnJpZ2h0OworICAgIH0sCisgICAgaGVpZ2h0IDogZnVuY3Rpb24oKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLnRvcCArIHRoaXMuYm90dG9tOworICAgIH0KK30KKworZnVuY3Rpb24g
U2ltcGxlUHJvbWlzZSgpIHsKKyAgICB0aGlzLl9jaGFpbmVkUHJvbWlzZSA9IG51bGw7CisgICAg
dGhpcy5fY2FsbGJhY2sgPSBudWxsOworfQorCitTaW1wbGVQcm9taXNlLnByb3RvdHlwZS50aGVu
ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7CisgICAgaWYgKHRoaXMuX2NhbGxiYWNrKQorICAgICAg
ICB0aHJvdyAiU2ltcGxlUHJvbWlzZSBkb2Vzbid0IHN1cHBvcnQgbXVsdGlwbGUgY2FsbHMgdG8g
dGhlbiI7CisgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICB0aGlzLl9jaGFpbmVk
UHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgIAorICAgIGlmICh0aGlzLl9yZXNvbHZl
ZCkKKyAgICAgICAgdGhpcy5yZXNvbHZlKHRoaXMuX3Jlc29sdmVkVmFsdWUpOworCisgICAgcmV0
dXJuIHRoaXMuX2NoYWluZWRQcm9taXNlOworfQorCitTaW1wbGVQcm9taXNlLnByb3RvdHlwZS5y
ZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgaWYgKCF0aGlzLl9jYWxsYmFjaykgewor
ICAgICAgICB0aGlzLl9yZXNvbHZlZCA9IHRydWU7CisgICAgICAgIHRoaXMuX3Jlc29sdmVkVmFs
dWUgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciByZXN1bHQgPSB0
aGlzLl9jYWxsYmFjayh2YWx1ZSk7CisgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFNpbXBsZVBy
b21pc2UpIHsKKyAgICAgICAgdmFyIGNoYWluZWRQcm9taXNlID0gdGhpcy5fY2hhaW5lZFByb21p
c2U7CisgICAgICAgIHJlc3VsdC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsgY2hhaW5lZFByb21p
c2UucmVzb2x2ZShyZXN1bHQpOyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgdGhpcy5fY2hhaW5l
ZFByb21pc2UucmVzb2x2ZShyZXN1bHQpOworfQorCit2YXIgTWF0cml4ID0ge307CisKK01hdHJp
eC5pbml0ID0gZnVuY3Rpb24obSwgbiwgdikgeworICAgIHJldHVybiBBcnJheShtICogbikuZmls
bCh2KTsKK30KKworTWF0cml4Lnplcm9zID0gZnVuY3Rpb24obSwgbikgeworICAgIHJldHVybiBN
YXRyaXguaW5pdChtLCBuLCAwKTsKK30KKworTWF0cml4Lm9uZXMgPSBmdW5jdGlvbihtLCBuKSB7
CisgICAgcmV0dXJuIE1hdHJpeC5pbml0KG0sIG4sIDEpOworfQorCitNYXRyaXguaWRlbnRpdHkg
PSBmdW5jdGlvbihuKSB7CisgICAgdmFyIG91dCA9IG5ldyBNYXRyaXguemVyb3Mobiwgbik7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpCisgICAgICAgIG91dFtpICogbiArIGldID0g
MTsKKyAgICByZXR1cm4gb3V0OworfQorCitNYXRyaXguc3RyID0gZnVuY3Rpb24oQSwgbiwgbSkg
eworICAgIHZhciBvdXQgPSAobSA+IDEgJiYgbiA+IDEgPyAiTWF0cml4WyIgKyBuICsgIiwgIiAr
IG0gOiAiVmVjdG9yWyIgKyBtICogbikgKyAiXSA9IFsiOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbiAqIG07ICsraSkgeworICAgICAgICBvdXQgKz0gQVtpXTsKKyAgICAgICAgaWYgKGkgPCBu
ICogbSAtIDEpCisgICAgICAgICAgICBvdXQgKz0gIiwgIjsKKyAgICB9ICAgICAgIAorICAgIHJl
dHVybiBvdXQgKyAiXSI7Cit9OworCitNYXRyaXgucG9zID0gZnVuY3Rpb24obSwgaSwgaikgewor
ICAgIHJldHVybiBtICogaSArIGo7Cit9CisKK01hdHJpeC5hZGQgPSBmdW5jdGlvbihBLCBCLCBu
LCBtKSB7CisgICAgdmFyIG91dCA9IE1hdHJpeC56ZXJvcyhuLCBtKTsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG4gKiBtOyArK2kpCisgICAgICAgIG91dFtpXSA9IEFbaV0gKyBCW2ldOworICAg
IHJldHVybiBvdXQ7Cit9CisKK01hdHJpeC5zdWJ0cmFjdCA9IGZ1bmN0aW9uKEEsIEIsIG4sIG0p
IHsKKyAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIG0pOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbiAqIG07ICsraSkKKyAgICAgICAgb3V0W2ldID0gQVtpXSAtIEJbaV07CisgICAgcmV0
dXJuIG91dDsKK30KKworTWF0cml4LnNjYWxlID0gZnVuY3Rpb24ocywgQSwgbiwgbSkgeworICAg
IHZhciBvdXQgPSBNYXRyaXguemVyb3MobiwgbSk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBu
ICogbTsgKytpKQorICAgICAgICBvdXRbaV0gPSBzICogQVtpXTsKKyAgICByZXR1cm4gb3V0Owor
fQorCitNYXRyaXgudHJhbnNwb3NlID0gZnVuY3Rpb24oQSwgbiwgbSkgeworICAgIHZhciBvdXQg
PSBNYXRyaXguemVyb3MobSwgbik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsK
KyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBtOyArK2opCisgICAgICAgICAgICBvdXRbTWF0
cml4LnBvcyhuLCBpLCBqKV0gPSBBW01hdHJpeC5wb3MobSwgaiwgaSldOworICAgIH0gICAgICAg
CisgICAgcmV0dXJuIG91dDsKK30KKworTWF0cml4Lm11bHRpcGx5ID0gZnVuY3Rpb24oQSwgQiwg
biwgbSwgcCkgeworICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3MobiwgcCk7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwOyAr
K2opIHsKKyAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbTsgKytrKSB7CisgICAgICAg
ICAgICAgICAgb3V0W01hdHJpeC5wb3MocCwgaSwgaildICs9IEFbTWF0cml4LnBvcyhtLCBpLCBr
KV0gKiBCW01hdHJpeC5wb3MocCwgaywgaildOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiBvdXQ7Cit9CisKK3ZhciBWZWN0b3IzID0ge307CisKK1ZlY3RvcjMu
emVyb3MgPSBmdW5jdGlvbigpIHsgcmV0dXJuIE1hdHJpeC56ZXJvcygxLCAzKTsgfQorVmVjdG9y
My5vbmVzID0gZnVuY3Rpb24oKSB7IHJldHVybiBNYXRyaXgub25lcygxLCAzKTsgfQorVmVjdG9y
My5zdHIgPSBmdW5jdGlvbih2KSB7IHJldHVybiBNYXRyaXguc3RyKHYsIDEsIDMpOyB9CitWZWN0
b3IzLmFkZCA9IGZ1bmN0aW9uKHYsIHcpIHsgcmV0dXJuIE1hdHJpeC5hZGQodiwgdywgMSwgMyk7
IH0KK1ZlY3RvcjMuc3VidHJhY3QgPSBmdW5jdGlvbih2LCB3KSB7IHJldHVybiBNYXRyaXguc3Vi
dHJhY3QodiwgdywgMSwgMyk7IH0KK1ZlY3RvcjMuc2NhbGUgPSBmdW5jdGlvbihzLCB2KSB7IHJl
dHVybiBNYXRyaXguc2NhbGUocywgdiwgMSwgMyk7IH0KK1ZlY3RvcjMubXVsdGlwbHlNYXRyaXgz
ID0gZnVuY3Rpb24odiwgQSkgeyByZXR1cm4gTWF0cml4Lm11bHRpcGx5KHYsIEEsIDEsIDMsIDMp
OyB9CitWZWN0b3IzLm11bHRpcGx5VmVjdG9yMyA9IGZ1bmN0aW9uKHYsIHcpIHsKKyAgICB2YXIg
b3V0ID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7ICsraSkKKyAgICAgICAgb3V0ICs9
IHZbaV0gKiB3W2ldOworICAgIHJldHVybiBvdXQ7Cit9CisKK3ZhciBNYXRyaXgzID0ge307CisK
K01hdHJpeDMuemVyb3MgPSBmdW5jdGlvbigpIHsgcmV0dXJuIE1hdHJpeC56ZXJvcygzLCAzKTsg
fQorTWF0cml4My5pZGVudGl0eSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gTWF0cml4LmlkZW50aXR5
KDMsIDMpOyB9CitNYXRyaXgzLnN0ciA9IGZ1bmN0aW9uKEEpIHsgcmV0dXJuIE1hdHJpeC5zdHIo
QSwgMywgMyk7IH0KK01hdHJpeDMucG9zID0gZnVuY3Rpb24oaSwgaikgeyByZXR1cm4gTWF0cml4
LnBvcygzLCBpLCBqKTsgfQorTWF0cml4My5hZGQgPSBmdW5jdGlvbihBLCBCKSB7IHJldHVybiBN
YXRyaXguYWRkKEEsIEIsIDMsIDMpOyB9CitNYXRyaXgzLnN1YnRyYWN0ID0gZnVuY3Rpb24oQSwg
QikgeyByZXR1cm4gTWF0cml4LnN1YnRyYWN0KEEsIEIsIDMsIDMpOyB9CitNYXRyaXgzLnNjYWxl
ID0gZnVuY3Rpb24ocywgQSkgeyByZXR1cm4gTWF0cml4LnNjYWxlKHMsIEEsIDMsIDMpOyB9CitN
YXRyaXgzLnRyYW5zcG9zZSA9IGZ1bmN0aW9uKEEpIHsgcmV0dXJuIE1hdHJpeC50cmFuc3Bvc2Uo
QSwgMywgMyk7IH0KK01hdHJpeDMubXVsdGlwbHlNYXRyaXgzID0gZnVuY3Rpb24oQSwgQikgeyBy
ZXR1cm4gTWF0cml4Lm11bHRpcGx5KEEsIEIsIDMsIDMsIDMpOyB9CitNYXRyaXgzLm11bHRpcGx5
VmVjdG9yMyA9IGZ1bmN0aW9uKEEsIHYpIHsgcmV0dXJuIE1hdHJpeC5tdWx0aXBseShBLCB2LCAz
LCAzLCAxKTsgfQorCitmdW5jdGlvbiBDb250cm9sbGVyKEssIHlzcCwgdWxvdywgdWhpZ2gpIHsK
KyAgICB0aGlzLl95c3AgPSB5c3A7CisKKyAgICB0aGlzLl9UZCA9IDU7CisgICAgdGhpcy5fVGkg
PSAxNTsKKworICAgIHRoaXMuX0twID0gSzsKKyAgICB0aGlzLl9LZCA9IEsgLyB0aGlzLl9UZDsK
KyAgICB0aGlzLl9LaSA9IEsgLyB0aGlzLl9UaTsKKworICAgIHRoaXMuX2VvbGQgPSAwOworICAg
IHRoaXMuX0kgPSAwOworfQorCitDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKKyAgICBfc2F0IDog
ZnVuY3Rpb24odiwgbG93LCBoaWdoKSB7CisgICAgICAgIHJldHVybiB2IDwgbG93ID8gbG93IDog
KHYgPiBoaWdoID8gaGlnaCA6IHYpOworICAgIH0sCisgICAgdHVuZSA6IGZ1bmN0aW9uKHksIGgp
IHsKKyAgICAgICAgLy8gQ3VycmVudCBlcnJvcgorICAgICAgICB2YXIgZSA9IHRoaXMuX3lzcCAt
IHk7CisKKyAgICAgICAgLy8gUHJvcG9ydGlvbmFsIHRlcm0KKyAgICAgICAgdmFyIFAgPSB0aGlz
Ll9LcCAqIGU7CisgICAgICAgIAorICAgICAgICAvLyBEZXJpdmF0aXZlIHRlcm0gaXMgdGhlIHNs
b3BlIG9mIHRoZSBjdXJ2ZSBhdCB0aGUgY3VycmVudCB0aW1lCisgICAgICAgIHZhciBEID0gdGhp
cy5fS2QgKiAoZSAtIHRoaXMuX2VvbGQpIC8gaDsKKworICAgICAgICAvLyBJbnRlZ3JhbCB0ZXJt
IGlzIHRoZSBhcmVhIHVuZGVyIHRoZSBjdXJ2ZSBzdGFydGluZyBmcm9tIHRoZSBiZWdpbmluZyB0
aWxsIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgICAgdGhpcy5fSSArPSB0aGlzLl9LaSAqICgoZSAr
IHRoaXMuX2VvbGQpIC8gMikgKiBoOworCisgICAgICAgIC8vIHBpZCBjb250cm9sbGVyIHZhbHVl
CisgICAgICAgIHZhciB2ID0gUCArIEQgKyB0aGlzLl9JOworICAgICAgICAKKyAgICAgICAgLy8g
QXZvaWQgc3Bpa2VzIGJ5IGFwcGx5aW5nIGFjdHVhdG9yIHNhdHVhcnRpb24KKyAgICAgICAgdmFy
IHUgPSB0aGlzLl9zYXQodiwgdGhpcy5fdWxvdywgdGhpcy5fdWhpZ2gpOyAgICAgICAgCisKKyAg
ICAgICAgdGhpcy5fZW9sZCA9IGU7CisgICAgICAgIHJldHVybiB1OworICAgIH0KK30KKworZnVu
Y3Rpb24gU3RhdGlzdGljKCkgeworICAgIHRoaXMuX21lYW4gPSAwOworICAgIHRoaXMuX3Zhcmlh
bmNlID0gMDsKKyAgICB0aGlzLl9udW1iZXJPZlNhbXBsZXMgPSAwOworfQorCitTdGF0aXN0aWMu
cHJvdG90eXBlID0geworICAgIHN0YXJ0U2FtcGxpbmcgOiBmdW5jdGlvbigpIHsKKyAgICAgICAg
Ly8gQ2FsbGVkIGFmdGVyIGEgd2FybS11cCBwZXJpb2QKKyAgICAgICAgdGhpcy5fdmFyaWFuY2Ug
PSAwOworICAgICAgICB0aGlzLl9udW1iZXJPZlNhbXBsZXMgPSAxOworICAgIH0sCisgICAgc2Ft
cGxlIDogZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAgKyt0aGlzLl9udW1iZXJPZlNhbXBsZXM7
ICAgICAgICAKKyAgICAgICAgdmFyIG1lYW4gPSB0aGlzLl9tZWFuOworICAgICAgICB0aGlzLl9t
ZWFuID0gKCh0aGlzLl9udW1iZXJPZlNhbXBsZXMgLSAxKSAqIHRoaXMuX21lYW4gKyB2YWx1ZSkg
LyB0aGlzLl9udW1iZXJPZlNhbXBsZXM7CisgICAgICAgIHRoaXMuX3ZhcmlhbmNlID0gKCh0aGlz
Ll9udW1iZXJPZlNhbXBsZXMgLSAxKSAqIHRoaXMuX3ZhcmlhbmNlICsgKHZhbHVlIC0gbWVhbikg
KiAodmFsdWUgLSB0aGlzLl9tZWFuKSkgLyB0aGlzLl9udW1iZXJPZlNhbXBsZXM7CisgICAgfSwK
KyAgICBtZWFuIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLl9tZWFuOworICAg
IH0sCisgICAgc3RhbmRhcmREZXZpYXRpb24gOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJu
IE1hdGguc3FydCh0aGlzLl92YXJpYW5jZSk7CisgICAgfSwKKyAgICBwZXJjZW50YWdlIDogZnVu
Y3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLl9tZWFuID8gTWF0aC5zcXJ0KHRoaXMuX3Zh
cmlhbmNlKSAqIDEwMCAvIHRoaXMuX21lYW4gOiAwOworICAgIH0KK30KKworZnVuY3Rpb24gU2Ft
cGxlcihjb3VudCkgeworICAgIHRoaXMuc3RhdGlzdGljcyA9IFtdOworICAgIHdoaWxlIChjb3Vu
dC0tKQorICAgICAgICB0aGlzLnN0YXRpc3RpY3MucHVzaChuZXcgU3RhdGlzdGljKTsKKyAgICB0
aGlzLnNhbXBsZXMgPSBbXTsKKyAgICB0aGlzLnNhbXBsaW5nVGltZU9mZnNldCA9IDA7Cit9CisK
K1NhbXBsZXIucHJvdG90eXBlID0geworICAgIHN0YXJ0U2FtcGxpbmcgOiBmdW5jdGlvbihzYW1w
bGluZ1RpbWVPZmZzZXQpIHsKKyAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHRo
aXMuc3RhdGlzdGljcy5sZW5ndGg7ICsraW5kZXgpCisgICAgICAgICAgICB0aGlzLnN0YXRpc3Rp
Y3NbaW5kZXhdLnN0YXJ0U2FtcGxpbmcoKTsKKyAgICAgICAgdGhpcy5zYW1wbGluZ1RpbWVPZmZz
ZXQgPSBzYW1wbGluZ1RpbWVPZmZzZXQgLyAxMDAwOworICAgIH0sCisgICAgc2FtcGxlIDogZnVu
Y3Rpb24odGltZU9mZnNldCwgdmFsdWVzKSB7CisgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsg
aW5kZXggPCB0aGlzLnN0YXRpc3RpY3MubGVuZ3RoOyArK2luZGV4KQorICAgICAgICAgICAgdGhp
cy5zdGF0aXN0aWNzW2luZGV4XS5zYW1wbGUodmFsdWVzW2luZGV4XSk7CisgICAgICAgIHRoaXMu
c2FtcGxlcy5wdXNoKHsgdGltZU9mZnNldDogdGltZU9mZnNldCAvIDEwMDAsIHZhbHVlczogdmFs
dWVzIH0pOworICAgIH0KK30KKworZnVuY3Rpb24gRXN0aW1hdG9yKCkgeworICAgIHRoaXMuX21h
dEEgPSBNYXRyaXgzLmlkZW50aXR5KCk7CisgICAgCisgICAgdGhpcy5fdmVjSCA9IFZlY3RvcjMu
emVyb3MoKTsKKyAgICB0aGlzLl92ZWNIWzBdID0gMTsKKyAgICAKKyAgICB0aGlzLl9tYXRRID0g
TWF0cml4My5pZGVudGl0eSgpOworICAgIHRoaXMuX1IgPSAxMDAwOworICAgIAorICAgIHRoaXMu
X3ZlY1hfZXN0ID0gVmVjdG9yMy5vbmVzKCk7CisgICAgdGhpcy5fbWF0UF9lc3QgPSBNYXRyaXgz
Lnplcm9zKCk7Cit9CisKK0VzdGltYXRvci5wcm90b3R5cGUgPSB7CisgICAgZXN0aW1hdGUgOiBm
dW5jdGlvbih0aW1lRGVsdGEsIGN1cnJlbnQpIHsKKyAgICAgICAgLy8gVXBkYXRlIHRoZSB0cmFu
c2l0aW9uIG1hdHJpeAorICAgICAgICB0aGlzLl9tYXRBW01hdHJpeDMucG9zKDAsIDIpXSA9IDE7
CisKKyAgICAgICAgLy8gUHJlZGljdGVkIHN0YXRlIGFuZCBjb3ZhcmlhbmNlCisgICAgICAgIHZh
ciB2ZWNYX3ByZCA9IE1hdHJpeDMubXVsdGlwbHlWZWN0b3IzKHRoaXMuX21hdEEsIHRoaXMuX3Zl
Y1hfZXN0KTsKKyAgICAgICAgdmFyIG1hdFBfcHJkID0gTWF0cml4My5hZGQoTWF0cml4My5tdWx0
aXBseU1hdHJpeDMoTWF0cml4My5tdWx0aXBseU1hdHJpeDModGhpcy5fbWF0QSwgdGhpcy5fbWF0
UF9lc3QpLCBNYXRyaXgzLnRyYW5zcG9zZSh0aGlzLl9tYXRBKSksIHRoaXMuX21hdFEpOworCisg
ICAgICAgIC8vIEVzdGltYXRpb24KKyAgICAgICAgdmFyIHZlY0IgPSBWZWN0b3IzLm11bHRpcGx5
TWF0cml4Myh0aGlzLl92ZWNILCBNYXRyaXgzLnRyYW5zcG9zZShtYXRQX3ByZCkpOworICAgICAg
ICB2YXIgUyA9IFZlY3RvcjMubXVsdGlwbHlWZWN0b3IzKHZlY0IsIHRoaXMuX3ZlY0gpICsgdGhp
cy5fUjsKKworICAgICAgICB2YXIgdmVjR2FpbiA9IFZlY3RvcjMuc2NhbGUoMS9TLCB2ZWNCKTsK
KyAgICAgICAgCisgICAgICAgIC8vIEVzdGltYXRlZCBzdGF0ZSBhbmQgY292YXJpYW5jZQorICAg
ICAgICB0aGlzLl92ZWNYX2VzdCA9IFZlY3RvcjMuYWRkKHZlY1hfcHJkLCBWZWN0b3IzLnNjYWxl
KGN1cnJlbnQgLSBWZWN0b3IzLm11bHRpcGx5VmVjdG9yMyh0aGlzLl92ZWNILCB2ZWNYX3ByZCks
IHZlY0dhaW4pKTsKKyAgICAgICAgdGhpcy5fbWF0UF9lc3QgPSBNYXRyaXgzLnN1YnRyYWN0KG1h
dFBfcHJkLCBNYXRyaXgzLnNjYWxlKFZlY3RvcjMubXVsdGlwbHlWZWN0b3IzKHZlY0dhaW4sIHRo
aXMuX3ZlY0gpLCBtYXRQX3ByZCkpOworCisgICAgICAgIC8vIENvbXB1dGUgdGhlIGVzdGltYXRl
ZCBtZWFzdXJlbWVudAorICAgICAgICByZXR1cm4gVmVjdG9yMy5tdWx0aXBseVZlY3RvcjModGhp
cy5fdmVjSCwgIHRoaXMuX3ZlY1hfZXN0KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIFByb2dyZXNz
QmFyKGVsZW1lbnQsIHJhbmdlcykgeworICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7CisgICAg
dGhpcy5yYW5nZXMgPSByYW5nZXM7CisgICAgdGhpcy5jdXJyZW50UmFuZ2UgPSAwOworfQorCitQ
cm9ncmVzc0Jhci5wcm90b3R5cGUgPSB7CisgICAgX3Byb2dyZXNzVG9QZXJjZW50IDogZnVuY3Rp
b24ocHJvZ3Jlc3MpIHsKKyAgICAgICAgcmV0dXJuIHByb2dyZXNzICogKDEwMCAvIHRoaXMucmFu
Z2VzKTsKKyAgICB9LAorICAgIGluY1JhbmdlIDogZnVuY3Rpb24oKSB7CisgICAgICAgICsrdGhp
cy5jdXJyZW50UmFuZ2U7CisgICAgfSwKKyAgICBzZXRQb3MgOiBmdW5jdGlvbihwcm9ncmVzcykg
eworICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLl9wcm9ncmVzc1RvUGVy
Y2VudCh0aGlzLmN1cnJlbnRSYW5nZSArIHByb2dyZXNzKSArICIlIjsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIFJlY29yZFRhYmxlKGVsZW1lbnQpIHsKKyAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50
OworICAgIHRoaXMuY2xlYXIoKTsKK30KKworUmVjb3JkVGFibGUucHJvdG90eXBlID0geworICAg
IGNsZWFyIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgPSAi
IjsKKyAgICB9LAorICAgIF9zaG93VGl0bGVzIDogZnVuY3Rpb24ocm93LCBxdWV1ZSwgdGl0bGVz
LCBtZXNzYWdlKSB7CisgICAgICAgIGZvciAodmFyIHRpdGxlID0gMDsgdGl0bGUgPCB0aXRsZXMu
bGVuZ3RoOyArK3RpdGxlKSB7CisgICAgICAgICAgICB2YXIgdGggPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJ0aCIpOworICAgICAgICAgICAgdGguaW5uZXJIVE1MID0gdGl0bGVzW3RpdGxlXS50
ZXh0OworICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlICE9ICJ1bmRlZmluZWQiICYmIG1l
c3NhZ2UubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgdGguaW5uZXJIVE1MICs9ICI8YnI+WyIg
KyBtZXNzYWdlICsgIl0iOworICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiIjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmICgid2lkdGgiIGluIHRpdGxlc1t0aXRsZV0pCisgICAgICAg
ICAgICAgICAgdGgud2lkdGggPSB0aXRsZXNbdGl0bGVdLndpZHRoICsgIiUiOworICAgICAgICAg
ICAgcm93LmFwcGVuZENoaWxkKHRoKTsKKyAgICAgICAgICAgIHF1ZXVlLnB1c2goe2VsZW1lbnQ6
IHRoLCB0aXRsZXM6IHRpdGxlc1t0aXRsZV0uY2hpbGRyZW4gfSk7CisgICAgICAgIH0KKyAgICB9
LAorICAgIF9zaG93SGVhZGVyIDogZnVuY3Rpb24oc3VpdGVOYW1lLCB0aXRsZXMsIG1lc3NhZ2Up
IHsKKyAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisKKyAg
ICAgICAgdmFyIHF1ZXVlID0gW107CisgICAgICAgIHRoaXMuX3Nob3dUaXRsZXMocm93LCBxdWV1
ZSwgdGl0bGVzLCBtZXNzYWdlKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHJv
dyk7CisKKyAgICAgICAgd2hpbGUgKHF1ZXVlLmxlbmd0aCkgeworICAgICAgICAgICAgdmFyIHJv
dyA9IG51bGw7CisgICAgICAgICAgICB2YXIgbGlzdCA9IFtdOworCisgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMCwgbGVuID0gcXVldWUubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICB2YXIgZW50cnkgPSBxdWV1ZS5zaGlmdCgpOworCisgICAgICAgICAgICAgICAgaWYg
KCFlbnRyeS50aXRsZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIGxpc3QucHVzaChl
bnRyeS5lbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFyb3cpCisgICAgICAgICAgICAgICAgICAg
IHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworCisgICAgICAgICAgICAg
ICAgdGhpcy5fc2hvd1RpdGxlcyhyb3csIHF1ZXVlLCBlbnRyeS50aXRsZXMsICIiKTsKKyAgICAg
ICAgICAgICAgICBlbnRyeS5lbGVtZW50LmNvbFNwYW4gPSBlbnRyeS50aXRsZXMubGVuZ3RoOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocm93KSB7CisgICAgICAgICAgICAgICAg
dGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHJvdyk7CisgICAgICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgICAgICArK2xpc3Rb
aV0ucm93U3BhbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisgICAgX3Nob3dW
YWx1ZSA6IGZ1bmN0aW9uKHJvdywgdGVzdE5hbWUsIHZhbHVlKSB7CisgICAgICAgIHZhciB0ZCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgICAgIHRkLnRleHRDb250ZW50ID0g
dmFsdWUudG9GaXhlZCgyKTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxkKHRkKTsKKyAgICB9LAor
ICAgIF9zaG93U2FtcGxlcyA6IGZ1bmN0aW9uKHJvdywgdGVzdE5hbWUsIGF4aXNlcywgc2FtcGxl
cywgc2FtcGxpbmdUaW1lT2Zmc2V0KSB7CisgICAgICAgIHZhciB0ZCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInRkIik7CisgICAgICAgIHZhciBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgICAgICAgYnV0dG9uLmNsYXNzTmFtZSA9ICJzbWFsbC1idXR0b24iOwor
ICAgICAgICAgICAgCisgICAgICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgd2luZG93LnNob3dHcmFwaCh0ZXN0TmFtZSwgYXhpc2Vz
LCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQpOworICAgICAgICB9KTsKKyAgICAgICAgICAg
IAorICAgICAgICBidXR0b24udGV4dENvbnRlbnQgPSAiQ2xpY2suLi4iOworICAgICAgICB0ZC5h
cHBlbmRDaGlsZChidXR0b24pOworICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGQpOworICAgIH0s
CisgICAgX3Nob3dUZXN0IDogZnVuY3Rpb24odGVzdE5hbWUsIHRpdGxlcywgc2FtcGxlcikgewor
ICAgICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKyAgICAgICAg
dmFyIHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgdGQudGV4dENv
bnRlbnQgPSB0ZXN0TmFtZTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxkKHRkKTsKKyAgICAgICAg
CisgICAgICAgIHZhciBheGlzZXMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgbWVhc3VyZSA9IDA7
IG1lYXN1cmUgPCBzYW1wbGVyLnN0YXRpc3RpY3MubGVuZ3RoOyArK21lYXN1cmUpIHsKKyAgICAg
ICAgICAgIHRoaXMuX3Nob3dWYWx1ZShyb3csIHRlc3ROYW1lLCBzYW1wbGVyLnN0YXRpc3RpY3Nb
bWVhc3VyZV0ubWVhbigpKTsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dWYWx1ZShyb3csIHRlc3RO
YW1lLCBzYW1wbGVyLnN0YXRpc3RpY3NbbWVhc3VyZV0uc3RhbmRhcmREZXZpYXRpb24oKSk7Cisg
ICAgICAgICAgICB0aGlzLl9zaG93VmFsdWUocm93LCB0ZXN0TmFtZSwgc2FtcGxlci5zdGF0aXN0
aWNzW21lYXN1cmVdLnBlcmNlbnRhZ2UoKSk7CisgICAgICAgICAgICBheGlzZXMucHVzaCh0aXRs
ZXNbbWVhc3VyZSArIDFdLnRleHQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0aGlz
Ll9zaG93U2FtcGxlcyhyb3csIHRlc3ROYW1lLCBheGlzZXMsIHNhbXBsZXIuc2FtcGxlcywgc2Ft
cGxlci5zYW1wbGluZ1RpbWVPZmZzZXQpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hp
bGQocm93KTsKKyAgICB9LAorICAgIF9zaG93U3VpdGUgOiBmdW5jdGlvbihzdWl0ZSwgc3VpdGVT
YW1wbGVycykgeworICAgICAgICB2YXIgc2NvcmVzID0gW107ICAgICAgICAKKyAgICAgICAgZm9y
ICh2YXIgdGVzdE5hbWUgaW4gc3VpdGVTYW1wbGVycykgeworICAgICAgICAgICAgdmFyIHRlc3Qg
PSB0ZXN0RnJvbU5hbWUoc3VpdGUsIHRlc3ROYW1lKTsKKyAgICAgICAgICAgIHZhciBzYW1wbGVy
ID0gc3VpdGVTYW1wbGVyc1t0ZXN0TmFtZV07IAorICAgICAgICAgICAgdGhpcy5fc2hvd1Rlc3Qo
dGVzdE5hbWUsIHN1aXRlLnRpdGxlcywgc2FtcGxlcik7CisgICAgICAgICAgICBzY29yZXMucHVz
aChNYXRoLm1pbihzYW1wbGVyLnN0YXRpc3RpY3NbMF0ubWVhbigpICogdGVzdC53ZWlnaHQgLyB0
ZXN0Lm1heCwgMSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzY29yZXM7CisgICAgfSwK
KyAgICBzaG93SXRlcmF0aW9ucyA6IGZ1bmN0aW9uKGl0ZXJhdGlvbnNTYW1wbGVycywgbWVzc2Fn
ZSkgeworICAgICAgICB0aGlzLmNsZWFyKCk7CisgICAgICAgIAorICAgICAgICB2YXIgc2NvcmVz
ID0gW107CisgICAgICAgIHZhciB0aXRsZXMgPSBudWxsOworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGl0ZXJhdGlvbnNTYW1wbGVycy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgZm9y
ICh2YXIgc3VpdGVOYW1lIGluIGl0ZXJhdGlvbnNTYW1wbGVyc1tpXSkgeworICAgICAgICAgICAg
ICAgIHZhciBzdWl0ZSA9IHN1aXRlRnJvbU5hbWUoc3VpdGVOYW1lKTsKKyAgICAgICAgICAgICAg
ICBpZiAodGl0bGVzICE9IHN1aXRlLnRpdGxlcykgeworICAgICAgICAgICAgICAgICAgICB0aXRs
ZXMgPSBzdWl0ZS50aXRsZXM7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dIZWFkZXIo
c3VpdGVOYW1lLCB0aXRsZXMsIG1lc3NhZ2UpOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIHZhciBzdWl0ZVNjb3JlcyA9IHRoaXMuX3Nob3dTdWl0ZShzdWl0ZSwgaXRlcmF0
aW9uc1NhbXBsZXJzW2ldW3N1aXRlTmFtZV0pOworICAgICAgICAgICAgICAgIHNjb3Jlcy5wdXNo
LmFwcGx5KHNjb3Jlcywgc3VpdGVTY29yZXMpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIHZhciBzdW0gPSBzY29yZXMucmVkdWNlKGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEg
KyBiOyB9KTsKKyAgICAgICAgcmV0dXJuIHN1bSAqIDEwMCAvIHNjb3Jlcy5sZW5ndGg7CisgICAg
fQorfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy90ZXN0cy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3Rl
c3RzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291
cmNlcy90ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2MCBAQAordmFyIFRpdGxl
cyA9IFsKKyAgICB7CisgICAgICAgIHRleHQgOiAiVGVzdCBOYW1lIiwKKyAgICAgICAgd2lkdGgg
OiAzMiwKKyAgICAgICAgY2hpbGRyZW46IFtdCisgICAgfSwgeworICAgICAgICB0ZXh0IDogIlBh
cnRpY2xlcyIsCisgICAgICAgIHdpZHRoIDogMjcsCisgICAgICAgIGNoaWxkcmVuOiBbCisgICAg
ICAgICAgICB7IHRleHQ6ICAiQXZnLiIsIHdpZHRoOiA5LCBjaGlsZHJlbjogW10gfSwKKyAgICAg
ICAgICAgIHsgdGV4dDogICJTdGQuIiwgd2lkdGg6IDksIGNoaWxkcmVuOiBbXSB9LAorICAgICAg
ICAgICAgeyB0ZXh0OiAgICAgIiUiLCB3aWR0aDogOSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAg
IF0KKyAgICB9LCB7CisgICAgICAgIHRleHQgOiAiRlBTIiwKKyAgICAgICAgd2lkdGggOiAyNywg
ICAgICAgICAgICAKKyAgICAgICAgY2hpbGRyZW46IFsKKyAgICAgICAgICAgIHsgdGV4dDogICJB
dmcuIiwgd2lkdGg6IDksIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAgIlN0
ZC4iLCB3aWR0aDogOSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICAgICAi
JSIsIHdpZHRoOiA5LCBjaGlsZHJlbjogW10gfSwgCisgICAgICAgIF0KKyAgICB9LCB7CisgICAg
ICAgIHRleHQgOiAiU2FtcGxlcyIsCisgICAgICAgIHdpZHRoIDogMTQsCisgICAgICAgIGNoaWxk
cmVuOiBbXQorICAgIH0KK107CisKK3ZhciBTdWl0ZXMgPSBbXTsKKworU3VpdGVzLnB1c2goewor
ICAgIG5hbWU6ICJIVE1MIEJvdW5jaW5nIFBhcnRpY2xlcyIsCisgICAgcHJlcGFyZTogZnVuY3Rp
b24ocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0
dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgiI3N0YWdlIikudGhlbihmdW5jdGlvbiAoZWxlbWVu
dCkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sICAK
KyAgICBydW46IGZ1bmN0aW9uKGNvbnRlbnRXaW5kb3csIHRlc3QsIHRlc3RJbnRlcnZhbCwgZnJh
bWVSYXRlLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICAgICAgcmV0dXJuIGNvbnRl
bnRXaW5kb3cucnVuQmVuY2htYXJrKHRoaXMsIHRlc3QsIHRlc3RJbnRlcnZhbCwgZnJhbWVSYXRl
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIH0sCisgICAgdGl0bGVzIDogVGl0bGVz
LAorICAgIHRlc3RzOiBbCisgICAgICAgIHsgCisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1z
aGFwZXMuaHRtbD9tZXRob2Q9cmVxdWVzdEFuaW1hdGlvbkZyYW1lJmdhaW49MSZhZGRMaW1pdD0x
MDAmcmVtb3ZlTGltaXQ9NSZtYXhWZWxvY2l0eT01MDAmcGFydGljbGVXaWR0aD0xMiZwYXJ0aWNs
ZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUiLAorICAgICAgICAgICAgbmFtZTogImJvdW5jaW5nIGNp
cmNsZXMiLAorICAgICAgICAgICAgd2VpZ2h0OiAxLAorICAgICAgICAgICAgbWF4OiAyMDAwCisg
ICAgICAgIH0sIHsgCisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1zaGFwZXMuaHRtbD9tZXRo
b2Q9cmVxdWVzdEFuaW1hdGlvbkZyYW1lJmdhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9
NSZtYXhWZWxvY2l0eT01MDAmcGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFw
ZT1yZWN0JmNsaXA9c3RhciIsCisgICAgICAgICAgICBuYW1lOiAiYm91bmNpbmcgY2xpcHBlZCBy
ZWN0cyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDEwMDAKKyAg
ICAgICAgfSwgeyAKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXNoYXBlcy5odG1sP21ldGhv
ZD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUmZ2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01
Jm1heFZlbG9jaXR5PTUwMCZwYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBl
PWNpcmNsZSZmaWxsPWdyYWRpZW50IiwKKyAgICAgICAgICAgIG5hbWU6ICJib3VuY2luZyBncmFk
aWVudCBjaXJjbGVzIiwKKyAgICAgICAgICAgIHdlaWdodDogMSwKKyAgICAgICAgICAgIG1heDog
NTAwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLWltYWdlcy5odG1s
P21ldGhvZD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUmZ2Fpbj0wLjQmYWRkTGltaXQ9NSZyZW1vdmVM
aW1pdD0yJm1heFZlbG9jaXR5PTUwMCZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgw
JmltYWdlU3JjPXJlc291cmNlcy95aW4teWFuZy5zdmciLAorICAgICAgICAgICAgbmFtZTogImJv
dW5jaW5nIFNWRyBpbWFnZXMiLAorICAgICAgICAgICAgd2VpZ2h0OiAxLAorICAgICAgICAgICAg
bWF4OiAyMDAKKyAgICAgICAgfSwgeworICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctaW1hZ2Vz
Lmh0bWw/bWV0aG9kPXJlcXVlc3RBbmltYXRpb25GcmFtZSZnYWluPTEmYWRkTGltaXQ9MTAwJnJl
bW92ZUxpbWl0PTUmbWF4VmVsb2NpdHk9NTAwJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWln
aHQ9ODAmaW1hZ2VTcmM9cmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCisgICAgICAgICAgICBuYW1l
OiAiYm91bmNpbmcgUE5HIGltYWdlcyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAg
ICAgICBtYXg6IDIwMDAKKyAgICAgICAgfQorICAgIF0KK30pOworCitTdWl0ZXMucHVzaCh7Cisg
ICAgbmFtZTogIkNhbnZhcyBCb3VuY2luZyBQYXJ0aWNsZXMiLAorICAgIHByZXBhcmU6IGZ1bmN0
aW9uKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIHJl
dHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoIiNzdGFnZSIpLnRoZW4oZnVuY3Rpb24gKGVsZW1l
bnQpIHsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsKKyAgICB9LCAg
CisgICAgcnVuOiBmdW5jdGlvbihjb250ZW50V2luZG93LCB0ZXN0LCB0ZXN0SW50ZXJ2YWwsIGZy
YW1lUmF0ZSwgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgICAgIHJldHVybiBjb250
ZW50V2luZG93LnJ1bkJlbmNobWFyayh0aGlzLCB0ZXN0LCB0ZXN0SW50ZXJ2YWwsIGZyYW1lUmF0
ZSwgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICB9LAorICAgIHRpdGxlcyA6IFRpdGxl
cywKKyAgICB0ZXN0czogWworICAgICAgICB7IAorICAgICAgICAgICAgdXJsOiAiYm91bmNpbmct
Y2FudmFzLXNoYXBlcy5odG1sP21ldGhvZD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUmZ2Fpbj00JmFk
ZExpbWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAwJm1heFZlbG9jaXR5PTUwMCZwYXJ0aWNsZVdpZHRo
PTEyJnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCisgICAgICAgICAgICBuYW1lOiAi
Y2FudmFzIGJvdW5jaW5nIGNpcmNsZXMiLAorICAgICAgICAgICAgd2VpZ2h0OiAxLAorICAgICAg
ICAgICAgbWF4OiA0MDAwCisgICAgICAgIH0sIHsgCisgICAgICAgICAgICB1cmw6ICJib3VuY2lu
Zy1jYW52YXMtc2hhcGVzLmh0bWw/bWV0aG9kPXJlcXVlc3RBbmltYXRpb25GcmFtZSZnYWluPTQm
YWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMDAmbWF4VmVsb2NpdHk9NTAwJnBhcnRpY2xlV2lk
dGg9NDAmcGFydGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAorICAgICAgICAg
ICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBjbGlwcGVkIHJlY3RzIiwKKyAgICAgICAgICAgIHdl
aWdodDogMSwKKyAgICAgICAgICAgIG1heDogMTAwMAorICAgICAgICB9LCB7IAorICAgICAgICAg
ICAgdXJsOiAiYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP21ldGhvZD1yZXF1ZXN0QW5pbWF0
aW9uRnJhbWUmZ2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAwJm1heFZlbG9jaXR5
PTUwMCZwYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxs
PWdyYWRpZW50IiwKKyAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgZ3JhZGllbnQg
Y2lyY2xlcyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDEwMDAK
KyAgICAgICAgfSwgeyAKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLWNhbnZhcy1pbWFnZXMu
aHRtbD9tZXRob2Q9cmVxdWVzdEFuaW1hdGlvbkZyYW1lJmdhaW49MC40JmFkZExpbWl0PTUmcmVt
b3ZlTGltaXQ9MSZtYXhWZWxvY2l0eT01MDAmcGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdo
dD04MCZpbWFnZVNyYz1yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKKyAgICAgICAgICAgIG5hbWU6
ICJjYW52YXMgYm91bmNpbmcgU1ZHIGltYWdlcyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisg
ICAgICAgICAgICBtYXg6IDIwMAorICAgICAgICB9LCB7CisgICAgICAgICAgICB1cmw6ICJib3Vu
Y2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/bWV0aG9kPXJlcXVlc3RBbmltYXRpb25GcmFtZSZnYWlu
PTQmYWRkTGltaXQ9MTAwMCZyZW1vdmVMaW1pdD0xMDAwJm1heFZlbG9jaXR5PTUwMCZwYXJ0aWNs
ZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPXJlc291cmNlcy95aW4teWFuZy5w
bmciLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBQTkcgaW1hZ2VzIiwKKyAg
ICAgICAgICAgIHdlaWdodDogMSwKKyAgICAgICAgICAgIG1heDogNTAwMAorICAgICAgICB9Cisg
ICAgXQorfSk7CisKK1N1aXRlcy5wdXNoKHsKKyAgICBuYW1lOiAiU1ZHIEJvdW5jaW5nIFBhcnRp
Y2xlcyIsCisgICAgcHJlcGFyZTogZnVuY3Rpb24ocnVubmVyLCBjb250ZW50V2luZG93LCBjb250
ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgiI3N0
YWdlIikudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW1l
bnQ7CisgICAgICAgIH0pOworICAgIH0sICAKKyAgICBydW46IGZ1bmN0aW9uKGNvbnRlbnRXaW5k
b3csIHRlc3QsIHRlc3RJbnRlcnZhbCwgZnJhbWVSYXRlLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NC
YXIpIHsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRXaW5kb3cucnVuQmVuY2htYXJrKHRoaXMsIHRl
c3QsIHRlc3RJbnRlcnZhbCwgZnJhbWVSYXRlLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOwor
ICAgIH0sCisgICAgdGl0bGVzIDogVGl0bGVzLAorICAgIHRlc3RzOiBbCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHVybDogImJvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9tZXRob2Q9cmVxdWVzdEFu
aW1hdGlvbkZyYW1lJmdhaW49NiZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZtYXhWZWxv
Y2l0eT01MDAmcGFydGljbGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUi
LAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBjaXJjbGVzIiwKKyAgICAgICAgICAg
IHdlaWdodDogMSwKKyAgICAgICAgICAgIG1heDogNjAwMAorICAgICAgICB9LCB7CisgICAgICAg
ICAgICB1cmw6ICJib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/bWV0aG9kPXJlcXVlc3RBbmltYXRp
b25GcmFtZSZnYWluPTAuMiZhZGRMaW1pdD01JnJlbW92ZUxpbWl0PTEmbWF4VmVsb2NpdHk9NTAw
JnBhcnRpY2xlV2lkdGg9NDAmcGFydGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIi
LAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBjbGlwcGVkIHJlY3RzIiwKKyAgICAg
ICAgICAgIHdlaWdodDogMSwKKyAgICAgICAgICAgIG1heDogMTAwMAorICAgICAgICB9LCB7Cisg
ICAgICAgICAgICB1cmw6ICJib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/bWV0aG9kPXJlcXVlc3RB
bmltYXRpb25GcmFtZSZnYWluPTAuMiZhZGRMaW1pdD01JnJlbW92ZUxpbWl0PTEmbWF4VmVsb2Np
dHk9NTAwJnBhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZp
bGw9Z3JhZGllbnQiLAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBncmFkaWVudCBj
aXJjbGVzIiwKKyAgICAgICAgICAgIHdlaWdodDogMSwKKyAgICAgICAgICAgIG1heDogMTAwMAor
ICAgICAgICB9LCB7CisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw/
bWV0aG9kPXJlcXVlc3RBbmltYXRpb25GcmFtZSZnYWluPTAuNCZhZGRMaW1pdD01JnJlbW92ZUxp
bWl0PTImbWF4VmVsb2NpdHk9NTAwJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAm
aW1hZ2VTcmM9cmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICBuYW1lOiAiU1ZH
IGJvdW5jaW5nIFNWRyBpbWFnZXMiLAorICAgICAgICAgICAgd2VpZ2h0OiAxLAorICAgICAgICAg
ICAgbWF4OiAyMDAKKyAgICAgICAgfSwgeworICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctc3Zn
LWltYWdlcy5odG1sP21ldGhvZD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUmZ2Fpbj00JmFkZExpbWl0
PTEwMCZyZW1vdmVMaW1pdD01Jm1heFZlbG9jaXR5PTUwMCZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRp
Y2xlSGVpZ2h0PTgwJmltYWdlU3JjPXJlc291cmNlcy95aW4teWFuZy5wbmciLAorICAgICAgICAg
ICAgbmFtZTogIlNWRyBib3VuY2luZyBQTkcgaW1hZ2VzIiwgICAgICAgICAgICAKKyAgICAgICAg
ICAgIHdlaWdodDogMSwKKyAgICAgICAgICAgIG1heDogNDAwMAorICAgICAgICB9CisgICAgXQor
fSk7CisKK2Z1bmN0aW9uIHN1aXRlRnJvbU5hbWUobmFtZSkgeworICAgIHJldHVybiBTdWl0ZXMu
ZmluZChmdW5jdGlvbihzdWl0ZSkgeyByZXR1cm4gc3VpdGUubmFtZSA9PSBuYW1lOyB9KTsKK30K
KworZnVuY3Rpb24gdGVzdEZyb21OYW1lKHN1aXRlLCBuYW1lKSB7CisgICAgcmV0dXJuIHN1aXRl
LnRlc3RzLmZpbmQoZnVuY3Rpb24odGVzdCkgeyByZXR1cm4gdGVzdC5uYW1lID09IG5hbWU7IH0p
OworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy95aW4teWFu
Zy5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNl
cy95aW4teWFuZy5zdmcJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvcmVzb3VyY2VzL3lpbi15YW5nLnN2Zwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBA
Cis8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmlld0JveD0iMCAwIDIw
MCAyMDAiPg0KKyAgIDxkZWZzPg0KKyAgICAgICA8Y2xpcFBhdGggaWQ9InJpZ2h0LWhhbGYiPg0K
KyAgICAgICAgICAgPHJlY3QgeD0iMTAwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjIwMCIvPg0KKyAg
ICAgICA8L2NsaXBQYXRoPg0KKyAgIDwvZGVmcz4NCisgICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSIx
MDAiIHI9Ijk4IiBmaWxsPSJub25lIiBzdHJva2U9ImdyZWVuIiBzdHJva2Utd2lkdGg9IjIiLz4N
CisgICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSIxMDAiIHI9Ijk4IiBmaWxsPSJncmVlbiIgY2xpcC1w
YXRoPSJ1cmwoI3JpZ2h0LWhhbGYpIi8+DQorICAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iNTAiICBy
PSI0OSIgZmlsbD0iZ3JlZW4iLz4NCisgICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSIxNDgiIHI9IjQ5
IiBmaWxsPSJ3aGl0ZSIvPg0KKyAgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjUwIiAgcj0iMTAiIGZp
bGw9IndoaXRlIi8+ICAgIA0KKyAgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjE0OCIgcj0iMTAiIGZp
bGw9ImdyZWVuIi8+DQorPC9zdmc+DQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Jlc291cmNlcy95aW4teWFuZy5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBt
YXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwpJbmRleDog
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy95aW4teWFuZy5wbmcKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy95aW4teWFuZy5w
bmcJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2Vz
L3lpbi15YW5nLnBuZwkod29ya2luZyBjb3B5KQoKUHJvcGVydHkgY2hhbmdlcyBvbjogUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy95aW4teWFuZy5wbmcKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpB
ZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCitpbWFnZS9wbmcKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQoKaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdRQUFBQmtDQVlB
QUFCdzRwVlVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTgpBQUI2SmdBQWdJUUFBUG9B
QUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFt
cHdZCkFBQUNCR2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQSGc2ZUcxd2JXVjBZ
U0I0Yld4dWN6cDRQU0poWkc5aVpUcHUKY3pwdFpYUmhMeUlnZURwNGJYQjBhejBpV0UxUUlFTnZj
bVVnTlM0MExqQWlQZ29nSUNBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOQpJbWgwZEhBNkx5OTNk
M2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQZ29nSUNBZ0lD
QThjbVJtCk9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lD
QjRiV3h1Y3pwbGVHbG1QU0pvZEhSd09pOHYKYm5NdVlXUnZZbVV1WTI5dEwyVjRhV1l2TVM0d0x5
SUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZkR2xtWmowaWFIUjBjRG92TDI1egpMbUZrYjJKbExt
TnZiUzkwYVdabUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBRYVhobGJGbEVhVzFsYm5O
cGIyNCtNVEV3ClBDOWxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajRLSUNBZ0lDQWdJQ0FnUEdW
NGFXWTZVR2w0Wld4WVJHbHRaVzV6YVc5dVBqRXcKTlR3dlpYaHBaanBRYVhobGJGaEVhVzFsYm5O
cGIyNCtDaUFnSUNBZ0lDQWdJRHgwYVdabU9rOXlhV1Z1ZEdGMGFXOXVQakU4TDNScApabVk2VDNK
cFpXNTBZWFJwYjI0K0NpQWdJQ0FnSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ0lDQThMM0pr
WmpwU1JFWStDand2CmVEcDRiWEJ0WlhSaFBnb1VuQTIrQUFBTldFbEVRVlI0QWUxZGZXd1UxUlkv
dTZWQ1cwcXJpQ1FrVUNGUlFBSklDQWhSb2NURVlnMEUKVkVUOEN4QVNFU0l4d2g4YUJUSEJxRFVH
QSs4OURXRDR4dzlRaTBGalNFU3RpWkZXcVJIQ3E2RFFCSk5YcW56SVI0cllVczQ3dnpNTQpIWWJk
em03MzduenM5aVN6TTdzemV6L09iKzQ5NTU1Nzd6a3hDamt4ODNncDRodzVwdEtwVThQbzJMRkIx
TkpTUWlkT0ZOSzVjd1YwCjRRSlJlM3RNcTNIRERVekZ4VVFEQm5UU29FRWROR1JJRzFWVW5LQ0JB
MytYKzN2bCtEUVdpKzNYWjBQNllWVWtSSVVUQUdaS2NaYlQKb1VNVHFiNytGbXBzTEtDZmZ5YmFM
M3hzYnlkaXRzNnBsRGtlSjRwSkZRc0xpVzY3amVpdXU0anV2cnVUcGt6NWswYU4yaWRKL0ZzQQoy
cDFLVW5uMWpJQ3dsTnZhOXZQMjdlMjhhQkh6c0dITXc0Y3pQL2dnODczM01oY1hBd1l6UjBrSmMv
Lyt6QU1ITXMrYng1b244cFl5CjVCWFQzWlVWQm95Ull3OS84a2s3ejUvUDNLY1BjM1UxODZaTnpG
OTl4Yng0c1JrQXZJQXNLMk9PeDVrZmVJQzV0clpkeXlSbGM1YzMKWjc5TGhlZnc4ZU5IZWQyNnk5
b1NLaXVaMzNtSCtmUnB1U1ZVVThOY1VPQVBHRzZ3eXN1dGxvT3lvWXhTMWx3R1lqWWZPZkkvWHJH
QwpPUlpqZnVvcDVwOStVZ3owbzdXVmVkYXNZSUJ3QTFOVVpKVmp5UkxXTWpQUHpobGdoTmxEK2VU
SkpuN21HZWErZlptZmY1NFp6SGRTClF3UHppQkhoQU1NSkRsb3FEcnc4cUlQVUpkTEFTQVcyOElZ
Tm5UeGdBUFBLbGRjREFWQysrWWE1dERSOFlEaUJ3WXZVcng5TFhTNmgKVHBFRFJRbzlnK3ZyejZx
R0JFSHQ3SnJrNWxWQ3l3ZzdHRTVnb0FDTUhjdGFONmxqSklBUlptL2c5ZXN2cTJvSllaMk0wRzJG
c1p0eQpBcERzdXJDUStaVlhMcU91b1FWRkNsY2ltc2wvVlRDalZUUTNKNFBDK2owc0Fqd1owNzEr
UjJ1Wk5vMjF6bEwzVUFFakhKN0FYMy9kCnBtcnMyclhkQTRHN1VHMjlLaHlWK3hoZ291N0NnMUNB
SWdXcDRuZmY3VkFOYXZ0MnNMdDdRc3NKYXB5UkxaQlJIL0JBZUJFb0tGS0EKaGZ6NjY1MXE1b0NB
VG9YOEdvRm5pL25KMG9VNXBxYW1FendKQkJUSmVEVy85TkpsdnZOT2IzbGhBM1h3WU81MFZZbUFn
VnpCS0Y5NAo0eXNvZUFzVWpNbVRFNDh0YkFEY1o0elNFMVVrbDM3ckFzV2ZsaUk4cnRKdUNpM0RQ
ZUoyQStEOGZrbkdWRkVhYzJUeWtnQVVxL3ZLCnJrd1IvazVRNFFYVHVKZGE2d1FEMXp0MjVIN3Jj
SUlJbWJKdEd3UjlkclF2U2JoRTFUdVlFVklWNEFEQ3Bsd1Y1azRRM05mUXZpeVYKMlB3NGhWdGFt
blNja1lwcWE0UGdQRWQxVk81bWNycmZNVTZSQWJOUklTOTgzYUFqOEZRR2ZVNFE3R3ZJbW5Rcmtz
cnpqei9PL08yMwp6QmN2V2dldThWc3EvL1h6R1l6b1RabFpKS0VaYXB1Q09hU25CSXV1YVFhODhV
YnkwdUNlNmZ3eVNROUMzcko5Wlc2UVZNc21CRlM2ClF0ekpybTNiekRJSXJjQ0x3dFpTWUpCc2FE
aWJVZGNsZGQ2aUp2VHVyTFplak1GOTA3WXJkRTFlaEdjeWVhdXo4ZDl4NDFEcW5zMm4KeUIrSDZ1
UlNKbDJWemJSMTY4d3lCekxEaS9CTU5waWFTWnJvdWpCaDE1T1pSNTJ5eEV4ZnNza2xMNFk0Ny9j
QzB2VnlZT2J4MUttbQpaRjJYckNTN25vU1hzMm45K3RHMGFCSFJCQVBqR3F3bU5Fa05EZDZwcGZL
TWR5cm1ud0EwTDc0NFdubWNhdXE2MGdJRHdIUk1JODRXCjRiN3VGZXBkTFFSZEhnYU1zZ0luSlR5
RWwzTjBxUTVXaDVpaWZGZDczWElIZ0dDSlVTcnJ2bVJVMmF6cnBreTFEbVNiN3dORE55RDIKOTli
V285MjJFbUhkR0xYbll4MlNhY3BYMDRuTmZQY1ppL0ZlZmhseko4bVhyY3JOUFdxdk1xRlp1UUhO
UitPaUd3VDNkOWk1aE9mTwpWbkt0bGxWYk80MUdqRENqV1RsendmVk03RExvcFdzNDBObEp0SFBu
Tk9kdlZ3RVJwSmJTamgyRnRHQ0I4NzY1NjRjZUlpb3ROWmRlCkxxUjA1Z3pSbGkxaVUwbXdGVUwz
WjJCTGdMMEtIWTNKTk9YREZLNjdXL0w2RG8zcndvWDk5dnQxdFlYUTU1K1BwdnZ2SjdyeFJ2dWUK
K2ZPVFQ1cFBNK29wOXU5UHl2c3I5VkJBcENGVTArN2RoVlJkbmQzcWpSR0ZZdkhpN09ZUnRkVFBp
Z0g0NDQvUmJYVXhYNzU4cHRyVgo0Y09tTzZucjA4dkZoWEplM1pMWGZVdmIrZ3p2a3RWbFlZTmxR
UUhSN2Jkbi8vMGFQcHpvMVZlem4wK1VjdmpuSDZMRGh5ZWl5QllnCjJPMDZkYXAvVlZpMWltaldM
UC95QzN0TzJDa01ESVJrdDZQc0E4Zlc0MG1UL0MzMjVzMmtZeDUvY3cxbmJ1ZlBFMzMzbmFoYlBC
NHQKWks3dUFSK1AvZmsrMHVEQlJCOTgwRHMyc1ZuK3d3KzRtZ3RBcHRBdnZ4RGRjWWQ5eTcvejVN
bEV1M2IxZ2dLT056ZmpjMHBjM1ZWZwpDSTgzTmdpcXJDVGFJK1ljbUd6eW1UbzZpRTZmSGhaWDN5
RVZGY0d5QWkzbCsrL3pXOUQzNjBmQUlxNk9YSVlNQ1JZUTVJNFdpdTZyCnBvWlVCUSsrUlA2WFFK
enF4TldyemkycWNmbGZnRVE1UWlYKzdiZjhHOUZEYkp3OFdSaFhGMGRsWllsWUU5eHZHRHh1M1Vw
MDhDRFIKaWhYNUlmUWhRODZlTFlpcnY2a1M4NHV6amFBSjI5ZkdqVVIvL1VVeU5XQzFtbHdWL3Bj
dUViRG9vODYvNEU4cXpBU3p6cng1MW9GeQovdkVIcWFwKzdCaEpsNnNWb2JWcncxd0Q3N0toeXhK
SGJIMjhud3poRTFBQTNHcjZtalhYRnhTNmZWMGRpU1dicUxhV0NKVU9PY1VKCmJ2SFFmK1Vpb1h1
RHVSL2RIYm85ZEgvb0JzTkk2QVVFaTdqNktHeHJDMk1SelpZSjA4ZFFFS0FvUUdHQTRoQW02aU9k
bGF6d2pLdkQKU016dDVoT2gxVUMxaG9vZEZvSWNMeXZyakt2M1RnakdmQ04wRVJpRVlqRHFsa2RC
OEFMbHVmbm1qcmk2VW0xcENhSUk0Y2dUOHpJdwoyOEI4RXpTSlc5dTQrcldGK3BqUEJPRVBBMmRs
WlhCY3VIaVJnRVZjblF5anVVQzN6MmVDMEVmM0ZWUkxnUXk1NmFiZjQ0SkJQWTBlClRkVFVsTTl3
V0hVSEtKZzBDMEttV0JhSXZRQmtKMkcyRUo2amU4bWFsOEgwc3Q5a3RjeFA0K29MZmVMRVR2cnhS
NytMRU43OElPajkKVkluUk11KzVweE5Zb0lYSXhLSDRRdCs3Tjd3TUNxSmtXS3JrMStBUis2dUFn
WkFGeUtoUmpXcm4rZlhYSUtvZXpqeWg2THp3Z2o5bAo2OXVYYU9SSUJBZTRBZ2pSditpKys0aSsv
TktmQWtRbEY0em8vYkI5Z2ZjU3FRRWYya0kwWk1QTW1SMzB4UmY0clplY0hNajJBbkZNCkRqN3lT
SWNkTmlObTU0M3RDR0pMR1VkL1NsZVd6Ulh3ZG9aUk9XTVJHL2lSTGRNOXVzYno1dy9FaW90RjFl
M3FzbUJwM0VRUFAwejAKMFVkUllaVS81WVFHaE0xRzJhS3FLcUtpb2sxMjhwWlFsMi9TWkRiVC9Q
a2RPakN5Ny9hZUxRNWthenRlZVRuUmtpWG9yaElQZkdSdAphZlkyZlY2L01TRTZ2eHc5ZXUzR2Y2
L3RCYW5lOTl6MFNiU1NubmlDWmQ5Yk5OckcrKzhUVFo5T2hFVm1PSENOMzB4VE5oWldGQlVKCnQx
ZktBRVI0M2gxbHhYRkFOdHJDczg4bWYydHh6elNsK3Rhbjg1eVg0d0FBSmZVdzcxckROSFBlZXk4
NUdEWkQ4SXhKc3RNMWNVN0gKdFlhQ2d0QkVNdUZ1elBtTVNjWWdMZmd3OUdLTTVlZlFYTTVlK2FW
elB4M25NMWRheVd3TlVZU29PR0VrZUNyeVlnQ2VNVWxlK2FWNgpIK1Zhdmh3bFN5K3VsVG93Z3dl
MGJMalp5SlJSVVFha0p3N00wRXBrSnJHS3hMRzhid1kyelRURkQwVHM5S0pVbnZGS3cvUjltRWxl
CmUrMnl6QXpLYUxBSEpDK3lHU2VZbWJZSTkvK2pLdFF6Y1lKcDQyZkVUYXlib1NhK1IwM3ROZUVt
RnFBSTcyYW9FMkFUM2tsTkFPRk0KQXkwRjJoUmtDZzVjbTFaMzdmeFNGZHFKbmpQcFNQa0tLSm01
R3JjckZkVnpwcVlUU3dVM0c5Rk5vNUVoaW5OUG5mRkhGUXlVZSt0VwpielU3VWN2QWI3Qlh0YmFh
ZGNaL3BaVlk0U293WUt5dmp6SjcweTg3d253blkzaDN2Mk1BV0ZlSENHNGw0S0Z4a29TdGdDNjMz
c3FNClpwd1BkTzVjejZMS1pUdWdpNDJ1WUZDbDRYelNEWGtVVmZBMmJreS9kVUNJK3hIeXlBSEtR
dlZlT21sU2VPMWRwbDZBTVdQU0F3UmcKV0pIYUZ0cjg4dVVzOVYydEdhT2w1R3IzbGE0dzd3Smp0
UzhndURNUlVCWnEwNFJNeVRWQmo2aHlDSDdXbmRCMjNnczZzS1FOam9CUwpwZEhJb0gxOStLR3Bq
aUw0ZEZhdFNoME1hRk5XUkxhZTJhaHNacG82Qy9lczRNUVZGY3hyMWdUUHpFeExzR3RYNm1CZ25H
R3B0aE5NCjhkTklPc0tERW8za2hyRGNNTE5FVmE2ZzNJTUhld01DZVlFUitQSGpUYWk3RVNabUl4
RXAzQWExZlpXVU1HY2FLaW5UTnozZC8yUE0KZ1hDeVR0bVE2RG9LQWU2ZDRBb2ZaaUFBbHI1QmFD
Mk5qZW15eHYvbkFVWmxaZmRnb0ZYQWhJNjZTUjJkZFk3RXRSUjZpOFpjUWtXZQpmanE4WXhaMFU5
MjFERmlTTWRQMzFsdWRxRk1rbUorc2tGS0JvWWk1cEhQMDBNU2VleTVjd0VDQUo1TVowSjV3WUE0
Y2RlaEpNSzlrCmpBbjZkNm5NYkEybEJQL3ZzUmp6c21YQmRtVVlaeVJUYlJIYkE3SURVWEN3QWlm
ZEJRbEJNenVkL0tWeWM4UWMzYXpCVEtBbVQ1L08KL1BiYmVBUGxsaytFRVhpaVFWOTV1V1V1UjZB
VmxER1ZrRVRwVkQ3TXowcGx4VWdrYTRscmE5djVzY2VZb2JsQUFZQXg3OUFoODhoQQphQ050dDIw
SzhnM2RFdkpHV1ZDbTdxTGVoSm1wcHNvbURGaUtrQTBTYzcyZEVZa0hMUWZtbUFVTG1OOThFeUd3
bWMrY2tjZlNKQWhyCnRBYk1aNERwNklaS1M1bGg1c0NBN3RGSEVlZTlYZk5PRk1QRFZBWFRTT2Zx
aHAwMC9wUFZSNFhsMVpMQk12V0ZEdmZiKy9ZVjBJRUQKMWo1NmVGMkRCMVZzTXhzN2xtam9VR3ky
dHhaYTE5VVIvZjAzWEsyU09QWWtPbktFZFBNUlBDUmdVejRXVEdQcnNleDIxUTJXSTBjMgpTajcv
a2EwQW9kbzJGanBBM0dnTFFOaFpORmVPS2ZCcnEyNXR4WHNuSEViQ1I2RzZLQlJQYlBvLzBlTFUz
WlI0MVlFakYvWGpJdTRxCjRDRkI3dGZMc1ZNQUNQV0cvUDhEUm5xL2FNNk44cTBBQUFBQVNVVk9S
SzVDWUlJPQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261323</attachid>
            <date>2015-09-16 13:46:45 -0700</date>
            <delta_ts>2015-09-18 20:53:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149053-20150916134634.patch</filename>
            <type>text/plain</type>
            <size>124282</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODk4NzgpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5NCBAQAorMjAxNS0wOS0xNSAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IFRoaXMgd29yayBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudC4gTWFueSBwYXJ0cyBvZiB0aGUg
Y29kZSB3YXMgY29waWVkCisgICAgICAgIGZyb20gc3BlZWRvbWV0ZXIgYmVuY2htYXJrLiBUaGUg
YmVuY2htYXJrIHJ1bm5lcidzIG5hbWUgaXMgImFuaW1vbWV0ZXIuaHRtbCIKKyAgICAgICAgYnV0
IHRoaXMgaXMgbm90IGZpbmFsIHlldCBhbmQgbW9zdCBwcm9iYWJseSBpcyBnb2luZyB0byBjaGFu
Z2UuIFRoZSBjc3MgCisgICAgICAgIGFuZCB0aGUgcGFnZSBsYXlvdXRzIHdpbGwgYmUgcmV2aXNl
ZCBmb3IgYmV0dGVyIGxvb2tpbmcuCisgICAgICAgIAorICAgICAgICBUaGUgcHVycG9zZSBvZiB0
aGlzIGJlbmNobWFyayBpcyB0byBtZWFzdXJlIHRoZSBhbmltYXRpb24gcGVyZm9ybWFuY2Ugb2YK
KyAgICAgICAgYSB3ZWIgYnJvd3NlciBpbiBhY2N1cmF0ZSB3YXkgYnV0IGF0IGZpbmUgZ3JhbnVs
YXIgbGV2ZWwuIFRoZSBkZXNpZ24gaXMKKyAgICAgICAgdG8gaGF2ZSBzZXBhcmF0ZSBhbmltYXRp
b25zOyBlYWNoIHN0cmVzcyB0ZXN0cyBvbmUgb2YgdGhlIGdyYXBoaWNzIHByaW1pdGl2ZXMKKyAg
ICAgICAgc28gd2UgY2FuIGlkZW50aWZ5IGJ1Z3MgYSBsb3QgZWFzaWVyLgorICAgICAgICAKKyAg
ICAgICAgSW5zdGVhZCBvZiBtZWFzdXJpbmcgdGhlIEZQUyBvZiB0aGUgYW5pbWF0aW9uLCB0aGUg
ImFuaW1vbWV0ZXIiIGJlbmNobWFyaworICAgICAgICB0cmllcyB0byBtZWFzdXJlIHRoZSB0ZXN0
IGNvbXBsZXhpdHkgd2hlbiByZW5kZXJpbmcgYXQgYSBzZXQtcG9pbnQgRlBTIHdoaWNoCisgICAg
ICAgIHNob3VsZCBiZSBsZXNzIHRoYW4gNjAgRlBTLiBUaGUgImFuaW1vbWV0ZXIiIHN0YXlzIGF0
IHRoZSBzZXQtcG9pbnQgRlBTCisgICAgICAgIGJ5IHVzaW5nIGEgY2xvc2VkLWxvb3AgY29udHJv
bCBzeXN0ZW0gUElEIGZ1bmN0aW9uLiBUaGUgZ2FpbiBvZiB0aGUgc3lzdGVtCisgICAgICAgIGlz
IHBhc3NlZCBhcyBhIHBhcmFtZXRlciB3aGVuIHJ1bm5pbmcgdGhlIHRlc3QuIE1lYXN1cmluZyB0
aGUgRlBTIGZhaXRoZnVsbHkKKyAgICAgICAgcmVzdWx0cyBpbiB2ZXJ5IGZsdWN0dWF0aW5nIHZh
bHVlcy4gU28gYSBLYWxtYW4gZmlsdGVyIGlzIHVzZWQgdG8gZ2l2ZSBhCisgICAgICAgIGJldHRl
ciBlc3RpbWF0ZSBmb3IgdGhlIGN1cnJlbnQgRlBTLgorICAgICAgICAKKyAgICAgICAgVGhlIGFu
aW1hdGlvbiBvZiB0aGUgdGVzdHMgaXMgZG9uZSBtYW51YWxseS4gcmVxdWVzdEFuaW1hdGlvbkZy
YW1lKCkgaXMKKyAgICAgICAgY2FsbGVkIHdpdGggYSBjYWxsYmFjay4gSW5zaWRlIHRoaXMgY2Fs
bGJhY2ssIHRoZSB0ZXN0IGlzIGFuaW1hdGluZyBieQorICAgICAgICBjaGFuZ2luZyB0aGUgcG9z
aXRpb25zIG9mIHRoZSBlbGVtZW50cyBpbnNpZGUgdGhlIHBhZ2UuIFRoZSB0ZXN0IGNvbXBsZXhp
dHkKKyAgICAgICAgbWF5IGNoYW5nZSBhbHNvIGlmIHRoZSBjdXJyZW50IEZQUyBpcyBub3QgZXF1
YWwgdG8gdGhlIGRlc2lyZWQgRlBTLgorCisgICAgICAgICogQW5pbW9tZXRlcjogQWRkZWQuCisg
ICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXM6IEFkZGVkLgorICAgICAgICAKKyAgICAgICAg
KiBBbmltb21ldGVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzczogQWRkZWQuCisgICAgICAgICog
QW5pbW9tZXRlci9hbmltb21ldGVyLmh0bWw6IEFkZGVkLgorICAgICAgICBUaGUgYmVuY2htYXJr
IHJ1bm5lciBwYWdlIGFuZCBjc3MuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9i
ZW5jaG1hcmsuY3NzOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL2JvdW5jaW5nLWNhbnZh
cy1pbWFnZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci9ib3VuY2luZy1jYW52
YXMtc2hhcGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvYm91bmNpbmctaW1h
Z2VzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvYm91bmNpbmctc2hhcGVzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvYm91bmNpbmctc3ZnLWltYWdlcy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbDog
QWRkZWQuCisgICAgICAgIFRoZSB0ZXN0IHBhZ2VzIGFuZCB0aGVpciBjc3MuIFRoZSBzYW1lIHRl
c3RzIGFyZSBkb25lIGFzIEhUTUwgZWxlbWVudHMsIFNWRworICAgICAgICBlbGVtZW50cyBvciBk
cmF3biBvbiBhIGNhbnZhcy4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL21haW4u
anM6IEFkZGVkLgorICAgICAgICAoUG9pbnQpOiBBIHBvaW50IG9iamVjdAorICAgICAgICAoSW5z
ZXRzKTogQW4gaW5zZXRzIG9iamVjdAorICAgICAgICAoU2ltcGxlUHJvbWlzZSk6IEFuIGltcGxl
bWVudGF0aW9uIGZvciBhIHByb21pc2Ugb2JqZWN0IChjb3BpZWQgZm9ybSBzcGVlZG9tZXRlciku
CisgICAgICAgIChNYXRyaXgpOiBBIG1hdHJpeCBvYmplY3QuCisgICAgICAgIChWZWN0b3IzKTog
QSB2ZWN0b3Igb2Ygc2l6ZSAzIG9iamVjdC4KKyAgICAgICAgKE1hdHJpeDMpOiBBIG1hdHJpeCBv
ZiBzaXplIDN4MyBvYmplY3QuCisgICAgICAgIAorICAgICAgICAoQ29udHJvbGxlcik6IENsb3Nl
ZC1sb29wIGNvbnRyb2xsZXIgZm9yIGEgc2V0LXBvaW50IHkuCisgICAgICAgIChDb250cm9sbGVy
LnByb3RvdHlwZS5fc2F0KTogTGltaXRzIHRoZSBvdXRwdXQgdG8gYSBjZXJ0YWluIHJhbmdlLgor
ICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUudHVuZSk6IHByb2R1Y2VzIHRoZSBwaWQgZm9y
IHRoZSBiZW5jaG1hcmsgd2hpY2ggaXMgdHJlYXRlZCBhcyBhIGNsb3NlZC1sb29wIHN5c3RlbS4K
KyAgICAgICAgCisgICAgICAgIChFc3RpbWF0b3IpOiBJbXBsZW1lbnQgS2FsbWFuIGZpbHRlciB0
byBnZXQgYW4gZXN0aW1hdGUgZm9yIGEgc2FtcGxlZCBkYXRhIHBvaW50LgorICAgICAgICAoRXN0
aW1hdG9yLnByb3RvdHlwZS5lc3RpbWF0ZSk6IFJldHVybnMgYW4gZXN0aW1hdGUgZm9yIGZvciBh
IHNhbXBsZWQgZGF0YSBwb2ludC4KKworICAgICAgICAoT3B0aW9ucyk6IEJlbmNobWFyayBydW5u
aW5nIG9wdGlvbnMgYXMgdGhleSBhcmUgc2V0IGJ5IHRoZSB1c2VyLgorICAgICAgICAgICAgICAg
IAorICAgICAgICAoUHJvZ3Jlc3NCYXIpOiBNYW5hZ2VzIGEgcHJvZ3Jlc3MgYmFyIGVsZW1lbnQu
IFRoZSBwcm9ncmVzcyBiYXIgaXMgZGl2aWRlZCBpbnRvIGVxdWFsIGxlbmd0aCByYW5nZXMuCisg
ICAgICAgIChQcm9ncmVzc0Jhci5wcm90b3R5cGUuX3Byb2dyZXNzVG9QZXJjZW50KTogQ29udmVy
dHMgdGhlIHByb2dyZXNzIGludG8gYSBwZXJjZW50YWdlLgorICAgICAgICAoUHJvZ3Jlc3NCYXIu
cHJvdG90eXBlLmluY1JhbmdlKTogTW92ZXMgdG8gdGhlIG5leHQgcmFuZ2UgKGEgcmFuZ2UgaXMg
dGhlIHJ1bm5pbmcgdGltZSBvZiBhIHNpbmdsZSB0ZXN0KS4KKyAgICAgICAgKFByb2dyZXNzQmFy
LnByb3RvdHlwZS5zZXRQb3MpOiBEcmF3cyB0aGUgY3VycmVudCBwcm9ncmVzcyBpbiB0aGUgY3Vy
cmVudCByYW5nZS4KKyAgICAgICAgCisgICAgICAgIChSZWNvcmRUYWJsZSk6IFNob3dzIHRoZSBy
ZXN1bHRzIG9mIHJ1bm5pbmcgYSBiZW5jaG1hcmsgaW4gYSB0YWJ1bGFyIGZvcm0uCisgICAgICAg
IChSZWNvcmRUYWJsZS5wcm90b3R5cGUuY2xlYXIpOiBDbGVhcnMgdGhlIHJlc3VsdHMgdGFibGUu
CisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dUaXRsZXMpOiBTaG93cyB0aGUg
aGVhZGVyIHRpdGxlcyBhbmQgYXBwZW5kcyB0aGUgc3ViLXRpdGxlcyB0byBhIHF1ZXVlLgorICAg
ICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLl9zaG93SGVhZGVyKTogU2hvd3MgdGhlIHRhYmxl
IGhlYWRlciB0aXRsZXMuCisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dFbXB0
eSk6IFNob3dzIGFuIGVtcHR5IHRhYmxlIGNlbGwuCisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90
b3R5cGUuX3Nob3dWYWx1ZSk6IFNob3dzIGEgbnVtYmVyIHZhbHVlIGluIHRoZSByZXN1bHRzIHRh
YmxlLgorICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLl9zaG93U2FtcGxlcyk6IFNob3dz
IGEgYnV0dG9uIGZvciB0aGUgc2FtcGxlZCBkYXRhIGdyYXBoLgorICAgICAgICAoUmVjb3JkVGFi
bGUucHJvdG90eXBlLl9zaG93VGVzdCk6IFNob3dzIHRoZSByZXN1bHRzIG9mIGEgc2luZ2xlIHRl
c3QuCisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dTdWl0ZSk6IFNob3dzIHRo
ZSByZXN1bHRzIG9mIGEgc2luZ2xlIHN1aXRlLgorICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90
eXBlLnNob3dSZWNvcmQpOiAgICAgICAgCisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUu
c2hvd0l0ZXJhdGlvbnMpOiBTaG93cyB0aGUgcmVzdWx0cyBvZiBhbGwgdGhlIHN1aXRlcyBvZiB0
aGUgaXRlcmF0aW9ucy4gCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9zdGF0aXN0
aWNzLmpzOiBBZGRlZC4KKyAgICAgICAgKFN0YXRpc3RpYyk6IE1lYXN1cmVzIHRoZSBzYW1wbGUg
bWVhbiBhbmQgc3RhbmRhcmQgZGV2aWF0aW9uIGZvciBhIHNldCBkYXRhIHBvaW50cy4KKyAgICAg
ICAgKFN0YXRpc3RpYy5zYW1wbGVNZWFuKTogUmV0dXJucyB0aGUgc2FtcGxlIG1lYW4gZm9yIGEg
c2V0IG9mIGRhdGEgcG9pbnRzLgorICAgICAgICAoU3RhdGlzdGljLnNhbXBsZVN0YW5kYXJkRGV2
aWF0aW9uKTogUmV0dXJucyB0aGUgc2FtcGxlIHN0YW5kYXJkIGRldmlhdGlvbiBmb3IgYSBzZXQg
b2YgZGF0YSBwb2ludHMuCisgICAgICAgIChTdGF0aXN0aWMucHJvdG90eXBlLl9pbml0KTogQ2Fs
bGVkIHdoZW4gdGhlIG9iamVjdCBpcyBjcmVhdGVkIGFuZCB3aGVuIHN0YXJ0U2FtcGxpbmcoKSBp
cyBjYWxsZWQuCisgICAgICAgIChTdGF0aXN0aWMucHJvdG90eXBlLnN0YXJ0U2FtcGxpbmcpOiBD
YWxsZWQgYWZ0ZXIgd2FybWluZyB1cCBwZXJpb2QuIFJlc3RhcnRzIGNvbGxlY3Rpbmcgc2FtcGxl
ZCBkYXRhIHBvaW50cy4KKyAgICAgICAgKFN0YXRpc3RpYy5wcm90b3R5cGUuc2FtcGxlKTogQWRk
IGEgbmV3IGRhdGEgcG9pbnQuCisgICAgICAgIChTdGF0aXN0aWMucHJvdG90eXBlLm1lYW4pOiBS
ZXR1cm5zIHRoZSBzYW1wbGUgbWVhbiBmb3IgdGhlIGN1cnJlbnQgc2FtcGxlZCBkYXRhIHBvaW50
cy4KKyAgICAgICAgKFN0YXRpc3RpYy5wcm90b3R5cGUuc3RhbmRhcmREZXZpYXRpb24pOiBSZXR1
cm5zIHRoZSBzYW1wbGUgc3RhbmRhcmQgZGV2aWF0aW9uIGZvciB0aGUgY3VycmVudCBzYW1wbGVk
IGRhdGEgcG9pbnRzLgorICAgICAgICAoU3RhdGlzdGljLnByb3RvdHlwZS5wZXJjZW50YWdlKTog
UmV0dXJucyB0aGUgcGVyY2VudGFnZSBvZiB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uIGRpdmlkZWQg
dG8gdGhlIG1lYW4uCisgICAgICAgIChTdGF0aXN0aWMucHJvdG90eXBlLmNvbmZpZGVuY2VJbnRl
cnZhbERlbHRhKTogQ2FsY3VsYXRlcyB0aGUgY29uZmlkZW5jZSBkZWx0YSBmb3IgdGhlIGN1cnJl
bnQgc2FtcGxlZCBkYXRhIGdpdmVuIGEgY29uZmlkZW5jZSBsZXZlbC4KKyAgICAgICAgKFNhbXBs
ZXIpOiBNYW5hZ2VzIHNhbXBsaW5nIG11bHRpcGxlIGRhdGEgcG9pbnRzIGF0IHRoZSBzYW1lIHRp
bWUgb2Zmc2V0LgorICAgICAgICAoU2FtcGxlci5wcm90b3R5cGUuc3RhcnRTYW1wbGluZyk6IENh
bGxlZCBhZnRlciB3YXJtaW5nIHVwIHBlcmlvZC4gUmVzdGFydHMgY29sbGVjdGluZyBzYW1wbGVk
IGRhdGEgcG9pbnRzLgorICAgICAgICAoU2FtcGxlci5wcm90b3R5cGUuc2FtcGxlKTogQWRkIGEg
bmV3IGRhdGEgdmVjdG9yIGF0IGEgZ2l2ZW4gdGltZSBvZmZzZXQuCisKKyAgICAgICAgKiBBbmlt
b21ldGVyL3Jlc291cmNlcy9hbmltb21ldGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHdpbmRvdy5i
ZW5jaG1hcmtSdW5uZXJDbGllbnQud2lsbEFkZFRlc3RGcmFtZSk6IENhbGxlZCBhZnRlciB0aGUg
dGVzdCA8aWZyYW1lPiBpcyBjcmVhdGVkLgorICAgICAgICAod2luZG93LmJlbmNobWFya1J1bm5l
ckNsaWVudC5kaWRSdW5UZXN0KTogQ2FsbGVkIGFmdGVyIHJ1bm5pbmcgYSB0ZXN0IGlzIGZpbmlz
aGVkLgorICAgICAgICAod2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudC53aWxsU3RhcnRGaXJz
dEl0ZXJhdGlvbik6IENhbGxlZCBhdCB0aGUgYmVnaW5uaW5nIGJlZm9yZSBydW5uaW5nIGFueSB0
ZXN0LgorICAgICAgICAod2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudC5kaWRSdW5TdWl0ZXMp
OiBDYWxsZWQgYWZ0ZXIgcnVubmluZyBhbGwgdGVzdHMgb2YgYSBzdWl0ZS4KKyAgICAgICAgKHdp
bmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQuZGlkRmluaXNoTGFzdEl0ZXJhdGlvbik6IENhbGxl
ZCBhZnRlciBydW5uaW5nIHRoZSBsYXN0IHRlc3QuCisgICAgICAgIAorICAgICAgICAod2luZG93
LmJlbmNobWFya1J1bm5lckNsaWVudC5icm93c2VyKToKKyAgICAgICAgKHNob3dTZWN0aW9uKTog
U2hvd3MgYSBzZWN0aW9uIGluIHRoZSBhbmltb21ldGVyLmh0bWwgcGFnZS4KKyAgICAgICAgKHN0
YXJ0VGVzdCk6IENhbGxlZCB3aGVuIHRoZSAiU3RhcnQgVGVzdCIgYnV0dG9uIGlzIGNsaWNrZWQu
CisgICAgICAgIChzaG93UmVzdWx0cyk6IENhbGxlZCBhZnRlciBmaW5pc2hpbmcgYWxsIHRoZSB0
ZXN0cy4KKyAgICAgICAgKHNob3dHcmFwaCk6IENhbGxlZCB3aGVuICJDbGljay4uLiIgYnV0dG9u
IGluIHRoZSAiU2FtcGxlcyIgY29sdW1uIG9mIHRoZSByZXN1bHRzIHRhYmxlIGlzIGNsaWNrZWQK
KworICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanM6IEFk
ZGVkLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyU3RhdGUpOiBUcmFja3Mgb2YgdGhlIGN1cnJl
bnQgcnVubmluZyA8c3VpdGUsIHRlc3Q+CisgICAgICAgIChCZW5jaG1hcmtSdW5uZXJTdGF0ZS5w
cm90b3R5cGUuY3VycmVudFN1aXRlKTogcmV0dXJucyB0aGUgY3VycmVudCBydW5uaW5nIHN1aXRl
LgorICAgICAgICAoQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmN1cnJlbnRUZXN0KTog
cmV0dXJucyB0aGUgY3VycmVudCBydW5uaW5nIHRlc3QuCisgICAgICAgIChCZW5jaG1hcmtSdW5u
ZXJTdGF0ZS5wcm90b3R5cGUuaXNGaXJzdFRlc3QpOiByZXR1cm5zIHRydWUgaWYgd2UgYXJlIHJ1
bm5pbmcgdGhlIGZpcnN0IHRlc3QgaW4gdGhlIGN1cnJlbnQgc3VpdGUuCisgICAgICAgIChCZW5j
aG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUubmV4dCk6IGFkdmFuY2VzIHRvIHRoZSBuZXh0IHRl
c3QuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUucHJlcGFyZUN1cnJl
bnRUZXN0KTogQ3JlYXRlcyBhIG5ldyA8aWZyYW1lPiBhbmQgd2FpdHMgZm9yIGl0IHRvIGxvYWQg
YSB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKEJlbmNobWFya1J1bm5lcik6IE1hbmFnZXMgcnVu
bmluZyB0aGUgdGVzdHMgYW5kIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgYmVuY2htYXJrUnVubmVy
Q2xpZW50LgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS53YWl0Rm9yRWxlbWVu
dCk6IFdhaXRzIGZvciBhbiBlbGVtZW50IHRvIGJlIGNyZWF0ZWQuCisgICAgICAgIChCZW5jaG1h
cmtSdW5uZXIucHJvdG90eXBlLl9hcHBlbmRGcmFtZSk6IENyZWF0ZXMgYSBuZXcgPGlmcmFtZT4g
ZWxlbWVudC4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3JlbW92ZUZyYW1l
KTogUmVtb3ZlZCB0aGUgY3VycmVudCA8aWZyYW1lPiBlbGVtZW50LgorICAgICAgICAoQmVuY2ht
YXJrUnVubmVyLnByb3RvdHlwZS5fcnVuVGVzdEFuZFJlY29yZFJlc3VsdHMpOiBSdW5zIHRoZSBj
dXJyZW50IHRlc3QgYW5kIHNhdmVzIGl0cyByZXN1bHRzLgorICAgICAgICAoQmVuY2htYXJrUnVu
bmVyLnByb3RvdHlwZS5zdGVwKTogRWl0aGVyIHJ1bnMgdGhlIGN1cnJlbnQgdGVzdCBpZiB0aGVy
ZSBpcyBvciBzdGFydCBhIG5ldyBpdGVyYXRpb24uCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIu
cHJvdG90eXBlLnJ1bkFsbFN0ZXBzKTogTG9vcHMgdG8gcnVuIGFsbCB0aGUgdGVzdHMgYW5kIG1v
dmUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgorICAgICAgICAodGhpcy5fcnVuTmV4dEl0ZXJhdGlv
bik6IFN0YXJ0cyBhIG5ldyBpdGVyYXRpb24gb3Igc2hvdyB0aGUgcmVzdWx0cy4KKyAgICAgICAg
KEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUucnVuTXVsdGlwbGVJdGVyYXRpb25zKTogTG9vcHMg
dG8gcnVuIGFsbCB0aGUgaXRlcmF0aW9ucyBhbmQgc2hvdyB0aGUgcmVzdWx0cworICAgICAgICAo
QmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fZmluYWxpemUpOiBTdGFydHMgYSBuZXcgaXRlcmF0
aW9uLgorCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvYmVuY2htYXJrLmpzOiBBZGRl
ZC4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlKTogVHJhY2tzIHRoZSBzdGF0ZSBvZiB0aGUgYmVu
Y2htYXJrIHRlc3QuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuX3RpbWVPZmZz
ZXQpOiBSZXR1cm5zIHRoZSB0aW1lT2Zmc2V0IG9mIGEgc3RhZ2UuCisgICAgICAgIChCZW5jaG1h
cmtTdGF0ZS5wcm90b3R5cGUuX21lc3NhZ2UpOiBSZXR1cm5zIHRoZSBtZXNzYWdlIG9mIGEgc3Rh
Z2UuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUudXBkYXRlKTogU2V0cyB0aGUg
Y3VycmVudFRpbWVPZmZzZXQgdG8gYSBuZXcgdmFsdWUuCisgICAgICAgIChCZW5jaG1hcmtTdGF0
ZS5wcm90b3R5cGUuc2FtcGxpbmdUaW1lT2Zmc2V0KTogUmV0dXJucyB0aGUgdGltZU9mZnNldCBv
ZiB0aGUgc2FtcGxpbmcgc3RhZ2UuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUu
Y3VycmVudFN0YWdlKTogUmV0dXJucyB0aGUgY3VycmVudCBzdGFnZSBvZiB0aGUgYmVuY2htYXJr
LgorICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBlLmN1cnJlbnRNZXNzYWdlKTogUmV0
dXJucyB0aGUgbWVzc2FnZSBvZiB0aGUgY3VycmVudCBzdGFnZSBhbmQgdGltZU9mZnNldC4KKyAg
ICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5jdXJyZW50UHJvZ3Jlc3MpOiBSZXR1cm5z
IGEgcGVyY2VudGFnZSBvZiBob3cgbXVjaCB0aGUgYmVuY2htYXJrIGlzIHJ1bm5pbmcuCisgICAg
ICAgIAorICAgICAgICAoQW5pbWF0b3IpOiBNYW5hZ2VzIGFuaW1hdGluZyB0aGUgdGVzdC4KKyAg
ICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5zdGFydCk6IENhbGxlZCBpZiBhbmltYXRpbmcgdXNp
bmcgc2V0SW50ZXJ2YWwgaXMgcmVxdWVzdGVkLgorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBl
LnRpbWVEZWx0YSk6IFJldHVybnMgdGhlIGN1cnJlbnQgdGltZURlbHRhIAorICAgICAgICAoQW5p
bWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBNYW5hZ2VzIHRoZSB0ZXN0IGFuaW1hdGlvbi4KKyAg
ICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlTG9vcCk6IENhbGxlZCBpZiBhbmltYXRp
bmcgdXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGlzIHJlcXVlc3RlZC4gCisgICAgICAgIAor
ICAgICAgICAoQmVuY2htYXJrKTogTWFuYWdlcyBydW5uaW5nIHRoZSB0ZXN0IGJlbmNobWFyayBh
bmQgcmVjb3JkaW5nIHRoZSBzYW1wbGVkIGRhdGEuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90
eXBlLnBhcnNlUGFyYW1ldGVycyk6IFBhcnNlcyB0aGUgdGVzdCBwYXJhbWV0ZXJzLgorICAgICAg
ICAoQmVuY2htYXJrLnByb3RvdHlwZS5zdGFydCk6IFN0YXJ0cyB0aGUgYmVuY2htYXJrLgorICAg
ICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS51cGRhdGUpOiBDYWxsZWQgZnJvbSB0aGUgYW5pbWF0
b3IuYW5pbWF0ZSgpIHRvIGNoYW5nZSB0aGUgY29tcGxleGl0eSBvZiB0aGUgdGVzdC4KKyAgICAg
ICAgKEJlbmNobWFyay5wcm90b3R5cGUucmVjb3JkKTogU2hvd3MgdGhlIGN1cnJlbnQgKG5vdCBm
aW5hbCkgcmVzdWx0cyBvZiB0aGUgYmVuY2htYXJrLgorICAgICAgICAoQmVuY2htYXJrLnByb3Rv
dHlwZS5yZXNvbHZlV2hlbkZpbmlzaGVkKTogU3BpbnMgdW50aWwgdGhlIGJlbmNobWFyayBpcyBm
aW5pc2hlZCBhbmQgcmV0dXJucyBpdHMgcmVzdWx0cy4KKyAgICAgICAgKEJlbmNobWFyay5wcm90
b3R5cGUucnVuKTogU3RhcnRzIHRoZSB0ZXN0LCBydW5zIGl0LCB3YWl0cyB1bnRpbCBpdCBpcyBm
aW5pc2hlZCBhbmQgcmV0dXJuIGl0cyByZXN1bHRzLgorICAgICAgICAod2luZG93LnJ1bkJlbmNo
bWFyayk6IENhbGxlZCBmcm9tIHRoZSBiZW5jaG1hcmsgcnVubmVyIHRocm91Z2ggdGhlIHN1aXRl
IGNvbnRyb2xsZXIgcnVuLWNhbGxiYWNrLiAKKworICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3Vy
Y2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qczogQWRkZWQuCisgICAgICAgIChCb3VuY2luZ1BhcnRp
Y2xlUm90YXRlcik6IE1hbmFnZXMgcm90YXRpbmcgYSBCb3VuY2luZ1BhcnRpY2xlLgorICAgICAg
ICAoQm91bmNpbmdQYXJ0aWNsZVJvdGF0ZXIucHJvdG90eXBlLm5leHQpOiBNb3ZlcyB0aGUgdGlt
ZSBieSB0aGUgYmVuY2htYXJrJ3MgY3VycmVudCB0aW1lRGF0YS4KKyAgICAgICAgKEJvdW5jaW5n
UGFydGljbGVSb3RhdGVyLnByb3RvdHlwZS5kZWdyZWUpOiBSZXR1cm5zIHRoZSBjdXJyZW50IHJv
dGF0aW5nIGRlZ3JlZS4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVSb3RhdGVyLnByb3RvdHlw
ZS5yb3RhdGVaKTogUmV0dXJucyBDU1MgZm9ybWF0dGVkIHRyYW5zZm9ybSByb3RhdGVaKCkgdmFs
dWUuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlUm90YXRlci5wcm90b3R5cGUucm90YXRlKTog
UmV0dXJucyBTVkcgZm9ybWF0dGVkIHRyYW5zZm9ybSByb3RhdGUoKSB2YWx1ZS4gICAgICAgIAor
ICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGUpOiBCYXNlIGNsYXNzIGZvciBhIGJv
dW5jaW5nIHBhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuY2Vu
dGVyKTogUmV0dXJucyB0aGUgY2VudGVyIHBvaW50IG9yIHRoZSBwYXJ0aWNsZS4KKyAgICAgICAg
KEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUpOiBNb3ZlcyB0aGUgcGFydGljbGUg
YmFzZWQgb24gaXRzIGN1cnJlbnQgcG9zaXRpb24sIGFuZ2xlIGFuZCB2ZWxvY2l0eS4KKyAgICAg
ICAgCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yKTogQSBzdWIgY2xhc3Mgb2Yg
QW5pbWF0b3IuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZS5h
bmltYXRlKTogTWFuYWdlcyBhbmltYXRpbmcgdGhlIGJvdW5jaW5nIHBhcnRpY2xlcyB0aHJvdWdo
IHRoZSB0ZXN0IHN0YWdlLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzU3Rh
Z2UpOiBSZXByZXNlbnRzIHRoZSBjb250YWluZXIgb2YgYWxsIHRoZSBib3VuY2luZyBwYXJ0aWNs
ZXMuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5zaXplKTogUmV0
dXJucyB0aGUgc2l6ZSBvZiB0aGUgc3RhZ2UgZXhjbHVkaW5nIHRoZSBDU1MgcGFkZGluZy4KKyAg
ICAgICAgKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnBhcnNlU2hhcGVQYXJhbXRl
cnMpOiBHZXRzIHRoZSBzaGFwZSBwYXJhbWV0ZXJzIGZvciBzaGFwZSBhbmltYXRpbmcgdGVzdHMu
CisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5yYW5kb20pOiBSZXR1
cm5zIGEgcmFuZG9tIGZsb2F0LgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90
b3R5cGUucmFuZG9tSW50KTogUmV0dXJucyBhIHJhbmRvbSBpbnRlZ2VyLgorICAgICAgICAoQm91
bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucmFuZG9tUG9zaXRpb24pOiBSZXR1cm5zIGEg
cmFuZG9tIHN0YXJ0aW5nIHBvc2l0aW9uLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFn
ZS5wcm90b3R5cGUucmFuZG9tVmVsb2NpdHkpOiBSZXR1cm5zIGEgcmFuZG9tIHZlbG9jaXR5Lgor
ICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucmFuZG9tQW5nbGUpOiBS
ZXR1cm5zIGEgcmFuZG9tIGFuZ2xlLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5w
cm90b3R5cGUucmFuZG9tQ29sb3IpOiBSZXR1cm5zIGEgcmFuZG9tIGNvbG9yIG5vdCB0b28gZGFy
ayBhbmQgbm90IHRvbyBsaWdodC4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJv
dG90eXBlLnJhbmRvbVJvdGF0ZXIpOiBSZXR1cm5zIGEgcmFuZG9tIHJvdGF0ZXIuCisgICAgICAg
IChCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5hbmltYXRlKTogQW5pbWF0ZXMgYWxs
IHRoZSBwYXJ0aWNsZXMuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlw
ZS50dW5lKTogQ2hhbmdlcyB0aGUgdGVzdCBieSBhZGRpbmcgb3IgcmVtb3ZpbmcgcGFydGljbGVz
LgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuY2xlYXIpOiBSZW1v
dmVzIGFsbCB0aGUgcGFydGljbGVzLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nUGFydGlj
bGVzQmVuY2htYXJrKTogUnVucyB0aGUgYmVuY2htYXJrIGZvciBib3VuY2luZyBwYXJ0aWNsZXMg
dGVzdC4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVh
dGVBbmltYXRvcik6IENyZWF0ZXMgYW4gYW5pbWF0b3Igb2YgdHlwZSBCb3VuY2luZ1BhcnRpY2xl
c0FuaW1hdG9yLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBl
LnR1bmUpOiBUdW5lcyB0aGUgdGVzdCB0aHJvdWdoIHRoZSBjdXJyZW50IHN0YWdlLgorICAgICAg
ICAoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLmNsZWFyKTogQ2xlYXJzIHRo
ZSB0ZXN0IHRocm91Z2ggdGhlIGN1cnJlbnQgc3RhZ2UuCisgICAgICAgIChCb3VuY2luZ1BhcnRp
Y2xlc0JlbmNobWFyay5wcm90b3R5cGUuc2hvd1Jlc3VsdHMpOiBTaG93cyB0aGUgcmVzdWx0cy9w
cm9ncmVzcyB0aHJvdWdoIGl0cyByZWNvcmRUYWJsZSBhbmQgcHJvZ3Jlc3NCYXIuCisgICAgICAg
IAorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2JvdW5jaW5nLXNoYXBlcy5qczogQWRk
ZWQuCisgICAgICAgIChCb3VuY2luZ1NoYXBlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0
aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nU2hhcGUucHJvdG90eXBlLl9jcmVhdGVTcGFuKTogQ3Jl
YXRlcyBhIDxzcGFuPiBlbGVtZW50IGFuZCB0YWtlcyB0aGUgc2hhcGUgYW5kIGNsaXBwaW5nIGNs
YXNzZXMgaW50byBjb25zaWRlcmF0aW9uLgorICAgICAgICAoQm91bmNpbmdTaGFwZS5wcm90b3R5
cGUuX21vdmUpOiBNb3ZlcyB0aGUgcGFydGljbGUgdG8gYSBuZXcgbG9jYXRpb24uIEFwcGx5IHRy
YW5zZm9ybSBzaW5jZSBpdCBkb2VzIG5vdCByZXF1aXJlIGxheW91dC4KKyAgICAgICAgKEJvdW5j
aW5nU2hhcGUucHJvdG90eXBlLmFuaW1hdGUpOiBSb3RhdGVzIGFuZCBtb3ZlcyB0aGUgc2hhcGUg
dG8gYSBuZXcgbG9jYXRpb24uCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdTaGFwZXNTdGFn
ZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuCisgICAgICAgIChCb3Vu
Y2luZ1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0
aWNsZSBvZiB0eXBlIEJvdW5jaW5nU2hhcGUuCisgICAgICAgIChCb3VuY2luZ1NoYXBlc1N0YWdl
LnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1vdmVzIHRoZSBjb3JyZXNwb25k
aW5nIGVsZW1lbnQgZm9ybSB0aGUgcGFyZW50IGNoaWxkcmVuIGxpc3QuCisgICAgICAgIAorICAg
ICAgICAoQm91bmNpbmdTaGFwZXNCZW5jaG1hcmspOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1Bh
cnRpY2xlc0JlbmNobWFyay4KKyAgICAgICAgKEJvdW5jaW5nU2hhcGVzQmVuY2htYXJrLnByb3Rv
dHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nU2hhcGVz
U3RhZ2UuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMg
YSBiZW5jaG1hcmsgb2YgdHlwZSBCb3VuY2luZ1NoYXBlc0JlbmNobWFyay4KKworICAgICAgICAq
IEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2JvdW5jaW5nLWltYWdlcy5qczogQWRkZWQuCisgICAgICAg
IChCb3VuY2luZ0ltYWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZS4KKyAgICAg
ICAgKEJvdW5jaW5nSW1hZ2UucHJvdG90eXBlLl9tb3ZlKTogTW92ZSB0aGUgcGFydGljbGUgdG8g
YSBuZXcgbG9jYXRpb24uIEFwcGx5IHRyYW5zZm9ybSBzaW5jZSBpdCBkb2VzIG5vdCByZXF1aXJl
IGxheW91dC4KKyAgICAgICAgKEJvdW5jaW5nSW1hZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBSb3Rh
dGVzIGFuZCBtb3ZlcyB0aGUgc2hhcGUgdG8gYSBuZXcgbG9jYXRpb24uCisgICAgICAgIAorICAg
ICAgICAoQm91bmNpbmdJbWFnZXNTdGFnZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGlj
bGVzU3RhZ2UuCisgICAgICAgIChCb3VuY2luZ0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQ
YXJ0aWNsZSk6IENyZWF0ZSBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNpbmdJbWFnZS4KKyAgICAg
ICAgKEJvdW5jaW5nSW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCk6
IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGZvcm0gdGhlIHBhcmVudCBjaGlsZHJl
biBsaXN0LgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nSW1hZ2VzQmVuY2htYXJrKTogQSBz
dWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuCisgICAgICAgIChCb3VuY2lu
Z0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ug
b2YgdHlwZSBCb3VuY2luZ0ltYWdlc1N0YWdlLgorICAgICAgICAod2luZG93LmJlbmNobWFya0Ns
aWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5cGUgQm91bmNpbmdJbWFnZXNC
ZW5jaG1hcmsuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2JvdW5j
aW5nLWNhbnZhcy1zaGFwZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFw
ZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUuCisgICAgICAgIChCb3VuY2luZ0Nh
bnZhc1NoYXBlLnByb3RvdHlwZS5fZHJhdyk6IERyYXdzIGEgc2hhcGUgb24gdGhlIGNvbnRleHQg
b2YgYSBjYW52YXMuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5hbmlt
YXRlKTogTW92ZXMgdGhlIEJvdW5jaW5nQ2FudmFzU2hhcGUgdG8gYSBuZXcgbG9jYXRpb24uCisg
ICAgICAgIAorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZSk6IEEgc3ViIGNsYXNz
IG9mIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBl
c1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0aWNsZSBvZiB0
eXBlIEJvdW5jaW5nQ2FudmFzU2hhcGUuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdDYW52
YXNTaGFwZXNBbmltYXRvcik6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0
b3IuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yLnByb3RvdHlwZS5hbmlt
YXRlKTogQ2xlYXJzIHRoZSBjb250ZXh0IGJlZm9yZSByZWRyYXdpbmcgdGhlIHBhcnRpY2xlcy4K
KyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyayk6IEEgc3Vi
IGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLgorICAgICAgICAoQm91bmNpbmdD
YW52YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0
YWdlIG9mIHR5cGUgQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS4KKyAgICAgICAgKEJvdW5jaW5n
Q2FudmFzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvcik6IENyZWF0ZXMg
YW4gYW5pbWF0b3Igb2YgdHlwZSBCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yLgorICAgICAg
ICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJrIG9m
IHR5cGUgQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsuCisKKyAgICAgICAgKiBBbmltb21l
dGVyL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzOiBBZGRlZC4KKyAgICAgICAg
KEJvdW5jaW5nQ2FudmFzSW1hZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlLgor
ICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZS5wcm90b3R5cGUuX2RyYXcpOiBEcmF3cyBhbiBp
bWFnZSBvbiB0aGUgY29udGV4dCBvZiBhIGNhbnZhcy4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFz
SW1hZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBNb3ZlcyB0aGUgQm91bmNpbmdDYW52YXNJbWFnZSB0
byBhIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdl
c1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS4KKyAgICAgICAg
KEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3Jl
YXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNpbmdDYW52YXNJbWFnZS4KKyAgICAgICAgCisg
ICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlc0FuaW1hdG9yKTogQSBzdWIgY2xhc3Mgb2YgQm91
bmNpbmdQYXJ0aWNsZXNBbmltYXRvci4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzQW5p
bWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBDbGVhcnMgdGhlIGNvbnRleHQgYmVmb3JlIHJlZHJh
d2luZyB0aGUgcGFydGljbGVzLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1h
Z2VzQmVuY2htYXJrKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsu
CisgICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRl
U3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdl
LgorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0
ZUFuaW1hdG9yKTogQ3JlYXRlcyBhbiBhbmltYXRvciBvZiB0eXBlIEJvdW5jaW5nQ2FudmFzSW1h
Z2VzQW5pbWF0b3IuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENy
ZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay4K
KyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNo
YXBlcy5qczogQWRkZWQuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlKTogQSBzdWIgY2xhc3Mg
b2YgQm91bmNpbmdQYXJ0aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBl
Ll9jcmVhdGVDaXJjbGUpOiBSZXR1cm5zIGEgbmV3bHkgY3JlYXRlZCBTVkcgPGNpcmNsZT4gZWxl
bWVudC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLl9jcmVhdGVSZWN0KTog
UmV0dXJucyBhIG5ld2x5IGNyZWF0ZWQgU1ZHIDxyZWN0PiBlbGVtZW50LiAKKyAgICAgICAgKEJv
dW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLl9tb3ZlKTogTW92ZSB0aGUgcGFydGljbGUgdG8gYSBu
ZXcgbG9jYXRpb24uIEFwcGx5IHRyYW5zZm9ybSBzaW5jZSBpdCBkb2VzIG5vdCByZXF1aXJlIGxh
eW91dC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLmFuaW1hdGUpOiBSb3Rh
dGVzIGFuZCBtb3ZlcyB0aGUgc2hhcGUgdG8gYSBuZXcgbG9jYXRpb24uCisgICAgICAgIAorICAg
ICAgICAoQm91bmNpbmdTdmdTaGFwZXNTdGFnZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFy
dGljbGVzU3RhZ2UuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5l
bnN1cmVDbGlwU3RhcklzQ3JlYXRlZCk6IEVuc3VyZSB0aGUgYSA8Y2xpcFBhdGg+IGVsZW1lbnQg
d2l0aCBpZD0ic3Rhci1jbGlwIiBpcyBjcmVhdGVkLgorICAgICAgICAoQm91bmNpbmdTdmdTaGFw
ZXNTdGFnZS5wcm90b3R5cGUuZW5zdXJlRGVmc0lzQ3JlYXRlZCk6IEVuc3VyZSBhIDxkZWZzPiBl
bGVtZW50IGlzIGNyZWF0ZWQuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3Rv
dHlwZS5jcmVhdGVHcmFkaWVudCk6IENyZWF0ZXMgYSA8bGluZWFyR3JhZGllbnQ+IGVsZW1lbnQu
CisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5fY3JlYXRlRGVmcyk6
IENyZWF0ZXMgYSBuZXcgPGRlZnM+IGVsZW1lbnQuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBl
c1N0YWdlLnByb3RvdHlwZS5fY3JlYXRlQ2xpcFN0YXIpOiBDcmVhdGUgYSBuZXcgPGNsaXBQYXRo
PiBlbGVtZW50IHdpdGggaWQ9InN0YXItY2xpcCIuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBl
c1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0aWNsZSBvZiB0
eXBlIEJvdW5jaW5nU3ZnU2hhcGUuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnBy
b3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcg
ZWxlbWVudCBmb3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4gbGlzdC4KKyAgICAgICAgCisgICAgICAg
IChCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyayk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFy
dGljbGVzQmVuY2htYXJrLgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsucHJv
dG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUgQm91bmNpbmdTdmdT
aGFwZXNTdGFnZS4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3Jl
YXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrLgorCisg
ICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qczogQWRk
ZWQuCisgICAgICAgIChCb3VuY2luZ1N2Z0ltYWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQ
YXJ0aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nU3ZnSW1hZ2UucHJvdG90eXBlLl9tb3ZlKTogTW92
ZSB0aGUgcGFydGljbGUgdG8gYSBuZXcgbG9jYXRpb24uIEFwcGx5IHRyYW5zZm9ybSBzaW5jZSBp
dCBkb2VzIG5vdCByZXF1aXJlIGxheW91dC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnSW1hZ2UucHJv
dG90eXBlLmFuaW1hdGUpOiBSb3RhdGVzIGFuZCBtb3ZlcyB0aGUgc2hhcGUgdG8gYSBuZXcgbG9j
YXRpb24uCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZXNTdGFnZSk6IEEgc3Vi
IGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuCisgICAgICAgIChCb3VuY2luZ1N2Z0lt
YWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0aWNsZSBv
ZiB0eXBlIEJvdW5jaW5nU3ZnSW1hZ2UuCisgICAgICAgIChCb3VuY2luZ1N2Z0ltYWdlc1N0YWdl
LnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRp
bmcgZWxlbWVudCBmb3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4gbGlzdC4KKyAgICAgICAgCisgICAg
ICAgIChCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyayk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5n
UGFydGljbGVzQmVuY2htYXJrLgorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsu
cHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUgQm91bmNpbmdT
dmdJbWFnZXNTdGFnZS4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTog
Q3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrLiAK
KworICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2dyYXBoLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGdyYXBoKTogRHJhd3MgYSBjaGFydCBmb3IgYSB0ZXN0IHNhbXBsZWQgZGF0YS4gSXQgc2hv
d3MgdHdvIHktYXhpc2VzOiBvbmUgZm9yIHRoZSBwYXJ0aWNsZXMgYW5kIHRoZSBzZWNvbmQgZm9y
IEZQUy4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMveWluLXlhbmcu
cG5nOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy95aW4teWFuZy5zdmc6
IEFkZGVkLgorICAgICAgICBJbWFnZXMgdXNlZCBieSB0aGUgYm91bmNpbmcgaW1hZ2VzIHRlc3Rz
LgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy90ZXN0cy5qczogQWRk
ZWQuCisgICAgICAgIChzdWl0ZUZyb21OYW1lKTogUmV0dXJucyBhIHN1aXRlIGdpdmVuIGl0cyBu
YW1lLgorICAgICAgICAodGVzdEZyb21OYW1lKTogUmV0dXJucyBhIHRlc3QgZ2l2ZW4gaXRzIHN1
aXRlIGFuZCBuYW1lLgorCiAyMDE1LTA4LTI3ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW0VGTF0gUkVHUkVTU0lPTihyMTg4NzkzKTogSXQgbWFkZSAy
MDAgbGF5b3V0IHRlc3RzIGFuZCBCaW5kaW5ncy9ldmVudC10YXJnZXQtd3JhcHBlci5odG1sIHBl
cmZvcm1hbmNlIHRlc3QgZmFpbApJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL2Fu
aW1vbWV0ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
YW5pbW9tZXRlci5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL2FuaW1vbWV0ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0icmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzIj4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9t
YWluLmpzIiBkZWZlcj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9zdGF0aXN0
aWNzLmpzIiBkZWZlcj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0cy5q
cyIgZGVmZXI9IiI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYmVuY2htYXJr
LXJ1bm5lci5qcyIgZGVmZXI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYW5p
bW9tZXRlci5qcyIgZGVmZXI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbmpz
LmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9kMy8zLjUuNS9kMy5taW4uanMiIGRlZmVyPjwvc2Ny
aXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2dyYXBoLmpzIiBkZWZlcj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorICA8bWFpbj4KKyAgICA8c2VjdGlvbiBpZD0iaG9tZSIgY2xhc3M9
InNlbGVjdGVkIj4KKyAgICAgIDxwPgorICAgICAgICBBbmltb21ldGVyIGlzIGEgYnJvd3NlciBi
ZW5jaG1hcmsgdGhhdCBtZWFzdXJlcyB0aGUgY29tcGxleGl0eSBvZiBhbiBhbmltYXRpb24gZm9y
CisgICAgICAgIHdoaWNoIGEgYnJvd3NlciBjYW4gYWNoaWV2ZSA1MCBGUFMgKGZyYW1lIHBlciBz
ZWNvbmQpLiBJdCB1c2VzIGFkYXB0aXZlIGFuaW1hdGlvbnMKKyAgICAgICAgdG8gdHVuZSB0aGVp
ciBjb21wbGV4aXRpZXMgdG8gc3RheSBjbG9zZSB0byA1MCBGUFMuCisgICAgICA8L3A+CisgICAg
ICA8ZGl2IGNsYXNzPSJvcHRpb25zIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29sdW1uIj4KKyAg
ICAgICAgICA8bGFiZWw+PGlucHV0IGlkPSJodG1sLXN1aXRlIiB0eXBlPSJjaGVja2JveCIgY2hl
Y2tlZD4gSFRNTCBlbGVtZW50cyBzdWl0ZTwvbGFiZWw+PGJyPgorICAgICAgICAgIDxsYWJlbD48
aW5wdXQgaWQ9ImNhbnZhcy1zdWl0ZSIgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+IENhbnZhcyBk
cmF3aW5ncyBzdWl0ZTwvbGFiZWw+PGJyPgorICAgICAgICAgIDxsYWJlbD48aW5wdXQgaWQ9InN2
Zy1zdWl0ZSIgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+IFNWRyBlbGVtZW50cyBzdWl0ZTwvbGFi
ZWw+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2PgorICAgICAgICAgIDxsYWJlbD5UZXN0
IGludGVydmFsOiA8aW5wdXQgaWQ9InRlc3QtaW50ZXJ2YWwiIHR5cGU9Im51bWJlciIgdmFsdWU9
IjMwIj4gc2Vjb25kczwvbGFiZWw+PGJyPgorICAgICAgICAgIDxsYWJlbD5GcmFtZSByYXRlOiA8
aW5wdXQgaWQ9ImZyYW1lLXJhdGUiIHR5cGU9Im51bWJlciIgdmFsdWU9IjUwIj4gZnBzPC9sYWJl
bD48YnI+CisgICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD0iZXN0aW1hdGVkLWZyYW1lLXJhdGUi
IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPiBFc3RpbWF0ZWQgRnJhbWUgUmF0ZTwvbGFiZWw+PGJy
PgorICAgICAgICAgIDxsYWJlbD48aW5wdXQgaWQ9ImZpeC10ZXN0LWNvbXBsZXhpdHkiIHR5cGU9
ImNoZWNrYm94Ij4gRml4IHRlc3QgY29tcGxleGl0eSBhZnRlciB3YXJtdXA8L2xhYmVsPgorICAg
ICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgICAgPGRpdiBjbGFzcz0iYnV0dG9ucyI+Cisg
ICAgICAgIDxidXR0b24gb25jbGljaz0ic3RhcnRUZXN0KCkiPlN0YXJ0IFRlc3Q8L2J1dHRvbj4K
KyAgICAgIDwvZGl2PgorICAgIDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbiBpZD0icnVubmluZyI+
CisgICAgICA8ZGl2IGlkPSJ0ZXN0Q29udGFpbmVyIj48L2Rpdj4KKyAgICAgIDxkaXYgaWQ9InBy
b2dyZXNzIj4KKyAgICAgICAgPGRpdiBpZD0icHJvZ3Jlc3MtY29tcGxldGVkIj48L2Rpdj4KKyAg
ICAgIDwvZGl2PgorICAgICAgPGRpdiBpZD0icmVjb3JkIj4KKyAgICAgICAgPHRhYmxlIGNsYXNz
PSJyZWNvcmQtdGFibGUiPjwvdGFibGU+CisgICAgICA8L2Rpdj4KKyAgICA8L3NlY3Rpb24+Cisg
ICAgPHNlY3Rpb24gaWQ9InJlc3VsdHMiPgorICAgICAgPGgxPlJlc3VsdHM8L2gxPgorICAgICAg
PHRhYmxlIGNsYXNzPSJyZXN1bHRzLXRhYmxlIj48L3RhYmxlPgorICAgICAgPGRpdiBjbGFzcz0i
YnV0dG9ucyI+CisgICAgICAgIDxidXR0b24gb25jbGljaz0ic3RhcnRUZXN0KCkiPlRlc3QgQWdh
aW48L2J1dHRvbj4KKyAgICAgIDwvZGl2PgorICAgIDwvc2VjdGlvbj4gIAorICAgIDxzZWN0aW9u
IGlkPSJncmFwaCI+CisgICAgICA8aDE+R3JhcGg8L2gxPgorICAgICAgPGRpdiBpZD0iZ3JhcGhD
b250YWluZXIiPjwvZGl2PgorICAgICAgPGRpdiBjbGFzcz0iYnV0dG9ucyI+CisgICAgICAgIDxi
dXR0b24gb25jbGljaz0ic2hvd1Jlc3VsdHMoKSI+UmVzdWx0czwvYnV0dG9uPgorICAgICAgICA8
YnV0dG9uIG9uY2xpY2s9InN0YXJ0VGVzdCgpIj5UZXN0IEFnYWluPC9idXR0b24+ICAgICAgICAK
KyAgICAgIDwvZGl2PgorICAgIDwvc2VjdGlvbj4gIAorICA8L21haW4+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvYm91bmNpbmctY2FudmFzLWlt
YWdlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ib3Vu
Y2luZy1jYW52YXMtaW1hZ2VzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxl
PgorICAgIGltZy5oaWRkZW4geworICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgdmlz
aWJpbGl0eTogaGlkZGVuOworICAgIH0KKyAgPC9zdHlsZT4KKyAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0icmVzb3VyY2VzL2JlbmNobWFyay5jc3MiPgorICA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91
bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9i
b3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8
aW1nIGNsYXNzPSJoaWRkZW4iIHNyYz0icmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI+CisgIDxpbWcg
Y2xhc3M9ImhpZGRlbiIgc3JjPSJyZXNvdXJjZXMveWluLXlhbmcucG5nIj4KKyAgPGNhbnZhcyBp
ZD0ic3RhZ2UiPjwvY2FudmFzPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1s
CShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL2JvdW5jaW5nLWNh
bnZhcy1zaGFwZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0i
dGV4dC9jc3MiIGhyZWY9InJlc291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNjcmlwdCBzcmM9
InJlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
dGF0aXN0aWNzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9iZW5jaG1h
cmsuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRp
Y2xlcy5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY2Fu
dmFzLXNoYXBlcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGNhbnZhcyBpZD0i
c3RhZ2UiPjwvY2FudmFzPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL2JvdW5jaW5nLWltYWdlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci9ib3VuY2luZy1pbWFnZXMuaHRtbAkocmV2aXNpb24gMCkKKysr
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ib3VuY2luZy1pbWFnZXMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
CisgIDxzdHlsZT4KKyAgICBpbWcgeworICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIH0K
KyAgPC9zdHlsZT4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJl
Zj0icmVzb3VyY2VzL2JlbmNobWFyay5jc3MiPgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21h
aW4uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3N0YXRpc3RpY3MuanMi
Pjwvc2NyaXB0PiAgCisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYmVuY2htYXJrLmpzIj48L3Nj
cmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwv
c2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLWltYWdlcy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0ic3RhZ2UiPjwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL2JvdW5jaW5nLXNo
YXBlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ib3Vu
Y2luZy1zaGFwZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci9ib3VuY2luZy1zaGFwZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InJlc291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNj
cmlwdCBzcmM9InJlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4gIAorICA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91
bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9i
b3VuY2luZy1zaGFwZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9
InN0YWdlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbAkocmV2aXNpb24g
MCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ib3VuY2luZy1zdmctaW1hZ2VzLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9iZW5j
aG1hcmsuY3NzIj4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4K
KyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4gICAKKyAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy9iZW5jaG1hcmsuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgPHN2ZyBpZD0ic3RhZ2UiPjwvc3ZnPgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvYm91bmNpbmctc3Zn
LXNoYXBlcy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0icmVzb3VyY2VzL2JlbmNobWFyay5jc3MiPgorICA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL21haW4uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3N0YXRpc3Rp
Y3MuanMiPjwvc2NyaXB0PiAgCisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYmVuY2htYXJrLmpz
Ij48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMu
anMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFw
ZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxzdmcgaWQ9InN0YWdlIj48L3N2
Zz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9y
ZXNvdXJjZXMvYW5pbW9tZXRlci5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzcwkocmV2aXNpb24gMCkKKysrIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvYW5pbW9tZXRlci5jc3MJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwyMTQgQEAKK2JvZHkgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJn
Yig5NiwgOTYsIDk2KTsKKyAgICBjb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOworICAgIGZvbnQt
ZmFtaWx5OiAiSGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNhbnMtc2VyaWY7
Cit9CisKK21haW4geworICAgIGRpc3BsYXk6IGJsb2NrOworICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICB3aWR0aDogODAwcHg7CisgICAgaGVpZ2h0OiA2MDBweDsKKyAgICB0b3A6IDUwJTsK
KyAgICBsZWZ0OiA1MCU7CisgICAgbWFyZ2luLXRvcDogLTMyMXB4OworICAgIG1hcmdpbi1sZWZ0
OiAtNDIxcHg7CisgICAgcGFkZGluZzogMTVweDsKKyAgICBib3JkZXI6IDZweCBzb2xpZCByZ2Io
MjM1LCAyMzUsIDIzNSk7CisgICAgYm9yZGVyLXJhZGl1czogMjBweDsKK30KKworbGFiZWwsIHAg
eworICAgIGZvbnQtc2l6ZTogMTZweDsKKyAgICBsaW5lLWhlaWdodDogMjFweDsKK30KKworc2Vj
dGlvbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworc2VjdGlvbiA+IHAgeworICAgIG1hcmdp
bjogMTBweCAyMHB4OworfQorCitzZWN0aW9uI2hvbWUgPiBwIHsKKyAgICBtYXJnaW46IDAgYXV0
bzsKKyAgICB3aWR0aDogNzAlOworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKK30KKworc2VjdGlv
biNob21lID4gcDpmaXJzdC1jaGlsZCB7CisgICAgbWFyZ2luLXRvcDogMTYwcHg7CisgICAgdGV4
dC1hbGlnbjogY2VudGVyOworfQorCitzZWN0aW9uLnNlbGVjdGVkIHsKKyAgICBkaXNwbGF5OiBi
bG9jazsKK30KKworI3Rlc3RDb250YWluZXIgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAg
ICB0b3A6IDE1cHg7CisgICAgbGVmdDogMTVweDsKKyAgICB3aWR0aDogODAwcHg7CisgICAgaGVp
Z2h0OiA2MDBweDsKK30KKworc2VjdGlvbiNydW5uaW5nID4gI3Byb2dyZXNzIHsKKyAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgYm90dG9tOiAtNnB4OworICAgIGxlZnQ6IDYwcHg7CisgICAg
cmlnaHQ6IDYwcHg7CisgICAgaGVpZ2h0OiA2cHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdi
KDEyOCwgMTI4LCAxMjgpOworICAgIGJvcmRlci1sZWZ0OiA2cHggc29saWQgcmdiKDQ2LCA1MSwg
NTUpOworICAgIGJvcmRlci1yaWdodDogNnB4IHNvbGlkIHJnYig0NiwgNTEsIDU1KTsKK30KKwor
c2VjdGlvbiNydW5uaW5nICNwcm9ncmVzcy1jb21wbGV0ZWQgeworICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDogMDsKKyAgICBoZWlnaHQ6IDZweDsKKyAgICB3
aWR0aDogMDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7Cit9CisK
K3NlY3Rpb24jcnVubmluZyA+ICNyZWNvcmQgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAg
ICBib3R0b206IC0xMzBweDsKKyAgICBsZWZ0OiAwcHg7CisgICAgcmlnaHQ6IDBweDsKKyAgICBo
ZWlnaHQ6IDc1cHg7CisgICAgY29sb3I6IHJnYigxMjgsIDEyOCwgMTI4KTsKKyAgICBwYWRkaW5n
OiAxNXB4OworICAgIGJvcmRlcjogNnB4IHNvbGlkIHJnYigyMzUsIDIzNSwgMjM1KTsKKyAgICBi
b3JkZXItcmFkaXVzOiAyMHB4OworfQorCitzZWN0aW9uI3J1bm5pbmcgPiAjcmVjb3JkID4gdGFi
bGUsCitzZWN0aW9uI3Jlc3VsdHMgPiB0YWJsZSB7CisgICAgd2lkdGg6IDEwMCU7Cit9CisKK3Nl
Y3Rpb24jcnVubmluZyA+ICNyZWNvcmQgPiB0YWJsZSB0ZCwgdGgsCitzZWN0aW9uI3Jlc3VsdHMg
PiB0YWJsZSB0ZCwgdGggeworICAgIGZvbnQtc2l6ZTogMTRweDsKKyAgICBib3JkZXI6IDFweCBz
b2xpZCAjOThiZjIxOworICAgIHBhZGRpbmc6IDNweCA3cHggMnB4IDdweDsKK30KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK3NlY3Rpb24jcnVubmluZyA+ICNy
ZWNvcmQgPiB0YWJsZSB0ci5hbHQsIHRkCitzZWN0aW9uI3Jlc3VsdHMgPiB0YWJsZSB0ci5hbHQs
IHRkIHsKKyAgICBjb2xvcjogIzAwMDAwMDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUFGMkQz
OworfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitzZWN0
aW9uI3J1bm5pbmcgPiAjcmVjb3JkID4gdGFibGUgdGgsCitzZWN0aW9uI3Jlc3VsdHMgPiB0YWJs
ZSB0aCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogI0E3Qzk0MjsgCisgICAgdGV4dC1hbGlnbjog
Y2VudGVyOworfQorCisub3B0aW9ucyB7CisgICAgbWFyZ2luOjAgYXV0bzsgICAgCisgICAgbWFy
Z2luLXRvcDogMzBweDsKKyAgICB3aWR0aDogNTAwcHg7CisgICAgYWxpZ246IGNlbnRlcjsKK30K
KworLmNvbHVtbiB7CisgICAgd2lkdGg6IDQ1JTsKKyAgICBmbG9hdDpsZWZ0OworICAgIGhlaWdo
dDogMTIwcHg7CisgICAgcGFkZGluZzo1cHg7Cit9CisKK2lucHV0W3R5cGU9Im51bWJlciJdIHsK
KyAgIHdpZHRoOjUwcHg7Cit9CisKKy5idXR0b25zIHsKKyAgICBtYXJnaW4tdG9wOiAxMHB4Owor
ICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICBjbGVhcjogYm90aDsKK30KKworYnV0dG9uIHsK
KyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgYm9yZGVyOiAzcHggc29saWQgcmdi
KDIzNSwgMjM1LCAyMzUpOworICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CisgICAgbWluLXdpZHRo
OiAyMDBweDsKKyAgICBwYWRkaW5nOiA1cHggMjBweDsKKyAgICBtYXJnaW46IDAgNDBweDsKKyAg
ICBmb250LXNpemU6IDI1cHg7CisgICAgY29sb3I6IHJnYigyMzUsIDIzNSwgMjM1KTsKKyAgICBi
YWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6
IG5vbmU7Cit9CisKK2J1dHRvbjphY3RpdmUgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigy
MzUsIDIzNSwgMjM1KTsKKyAgICBjb2xvcjogcmdiKDQ2LCA1MSwgNTUpOworICAgIGJvcmRlci1j
b2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpICFpbXBvcnRhbnQ7Cit9CisKK2J1dHRvbjpmb2N1cyB7
CisgICAgb3V0bGluZTogbm9uZTsKKyAgICBib3JkZXItY29sb3I6IHJnYigyMzIsIDc5LCA3OSk7
Cit9CisKKy5zbWFsbC1idXR0b24geworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKyAg
ICBib3JkZXI6IDFweCBzb2xpZCByZ2IoOTYsIDk2LCA5Nik7CisgICAgYm9yZGVyLXJhZGl1czog
MnB4OworICAgIHBhZGRpbmc6IDFweCA0cHg7CisgICAgbWFyZ2luOiAwIDRweDsKKyAgICBiYWNr
Z3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICBjdXJzb3I6IHBvaW50ZXI7CisgICAgdGV4
dC1hbGlnbjogY2VudGVyOworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Cit9CisKKyNn
cmFwaENvbnRhaW5lciB7CisgIGZvbnQ6IDEwcHggc2Fucy1zZXJpZjsKKyAgY29sb3I6IHJnYigy
MzUsIDIzNSwgMjM1KTsgIAorfQorCisuYXhpcyBwYXRoLAorLmF4aXMgbGluZSB7CisgIGZpbGw6
IG5vbmU7CisgIHN0cm9rZTogcmdiKDIzNSwgMjM1LCAyMzUpOworICBzaGFwZS1yZW5kZXJpbmc6
IGNyaXNwRWRnZXM7Cit9CisKKy5sZWZ0LXNhbXBsZXMgeworICBmaWxsOiBub25lOworICBzdHJv
a2U6IHN0ZWVsYmx1ZTsKKyAgc3Ryb2tlLXdpZHRoOiAxLjVweDsKK30KKworLnJpZ2h0LXNhbXBs
ZXMgeworICAgIGZpbGw6IG5vbmU7CisgICAgc3Ryb2tlOiByZWQ7CisgICAgc3Ryb2tlLXdpZHRo
OiAxLjVweDsKK30KKworLnNtYXBsZS10aW1lIHsKKyAgICBmaWxsOiBub25lOworICAgIHN0cm9r
ZTogZ3JlZW47CisgICAgc3Ryb2tlLXdpZHRoOiAxLjVweDsKK30KKworLmxlZnQtbWVhbiB7Cisg
ICAgZmlsbDogbm9uZTsKKyAgICBzdHJva2U6IHllbGxvdzsKKyAgICBzdHJva2Utd2lkdGg6IDEu
NXB4OworfQorCisucmlnaHQtbWVhbiB7CisgICAgZmlsbDogbm9uZTsKKyAgICBzdHJva2U6IG1h
Z2VudGE7CisgICAgc3Ryb2tlLXdpZHRoOiAxLjVweDsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuanMJKHJldmlzaW9u
IDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDMgQEAKK3dpbmRvdy5iZW5jaG1hcmtSdW5u
ZXJDbGllbnQgPSB7CisgICAgaXRlcmF0aW9uQ291bnQ6IDEsCisgICAgdGVzdHNDb3VudDogbnVs
bCwKKyAgICBwcm9ncmVzc0JhcjogbnVsbCwKKyAgICByZWNvcmRUYWJsZTogbnVsbCwKKyAgICBv
cHRpb25zOiB7IHRlc3RJbnRlcnZhbDogMzAwMDAsIGZyYW1lUmF0ZTogNTAsIGVzdGltYXRlZEZy
YW1lUmF0ZTogdHJ1ZSwgZml4VGVzdENvbXBsZXhpdHkgOiBmYWxzZSB9LAorICAgIHNjb3JlOiAw
LAorICAgIF9pdGVyYXRpb25zU2FtcGxlcnM6IFtdLAorICAgIF9yZXN1bHRzVGFibGU6IG51bGws
CisgICAgX2lzQ2hyb21lOiAvQ2hyb21lLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmIC9H
b29nbGUgSW5jLy50ZXN0KG5hdmlnYXRvci52ZW5kb3IpLAorICAgIF9pc1NhZmFyaTogL1NhZmFy
aS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJiAvQXBwbGUgQ29tcHV0ZXIvLnRlc3QobmF2
aWdhdG9yLnZlbmRvciksCisgICAgd2lsbEFkZFRlc3RGcmFtZTogZnVuY3Rpb24gKGZyYW1lKSB7
CisgICAgICAgIHZhciBtYWluID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigibWFpbiIpOworICAg
ICAgICB2YXIgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKG1haW4pOworICAgICAgICBmcmFtZS5z
dHlsZS5sZWZ0ID0gbWFpbi5vZmZzZXRMZWZ0ICsgcGFyc2VJbnQoc3R5bGUuYm9yZGVyTGVmdFdp
ZHRoKSArIHBhcnNlSW50KHN0eWxlLnBhZGRpbmdMZWZ0KSArICJweCI7CisgICAgICAgIGZyYW1l
LnN0eWxlLnRvcCA9IG1haW4ub2Zmc2V0VG9wICsgcGFyc2VJbnQoc3R5bGUuYm9yZGVyVG9wV2lk
dGgpICsgcGFyc2VJbnQoc3R5bGUucGFkZGluZ1RvcCkgKyAicHgiOworICAgIH0sCisgICAgZGlk
UnVuVGVzdDogZnVuY3Rpb24gKCkgeworICAgICAgICB0aGlzLnByb2dyZXNzQmFyLmluY1Jhbmdl
KCk7CisgICAgfSwKKyAgICB3aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbjogZnVuY3Rpb24gKCkgewor
ICAgICAgICB0aGlzLl9pdGVyYXRpb25zU2FtcGxlcnMgPSBbXTsKKyAgICAgICAgdGhpcy5fcmVz
dWx0c1RhYmxlID0gbmV3IFJlY29yZFRhYmxlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5y
ZXN1bHRzLXRhYmxlIilbMF0pOworICAgICAgICAKKyAgICAgICAgdGhpcy5wcm9ncmVzc0JhciA9
IG5ldyBQcm9ncmVzc0Jhcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJvZ3Jlc3MtY29tcGxl
dGVkIiksIHRoaXMudGVzdHNDb3VudCk7CisgICAgICAgIHRoaXMucmVjb3JkVGFibGUgPSBuZXcg
UmVjb3JkVGFibGUoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnJlY29yZC10YWJsZSIpWzBd
KTsKKyAgICB9LAorICAgIGRpZFJ1blN1aXRlczogZnVuY3Rpb24gKHN1aXRlc1NhbXBsZXJzKSB7
CisgICAgICAgIHRoaXMuX2l0ZXJhdGlvbnNTYW1wbGVycy5wdXNoKHN1aXRlc1NhbXBsZXJzKTsK
KyAgICB9LAorICAgIGRpZEZpbmlzaExhc3RJdGVyYXRpb246IGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgdGhpcy5zY29yZSA9IHRoaXMuX3Jlc3VsdHNUYWJsZS5zaG93SXRlcmF0aW9ucyh0aGlzLl9p
dGVyYXRpb25zU2FtcGxlcnMsICIiKTsKKyAgICAgICAgc2hvd1Jlc3VsdHMoKTsKKyAgICB9LAor
ICAgIGJyb3dzZXIgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHRoaXMuX2lzQ2hyb21lKQor
ICAgICAgICAgICAgcmV0dXJuICJDaHJvbWUiOworICAgICAgICBpZiAodGhpcy5faXNTYWZhcmkp
CisgICAgICAgICAgICByZXR1cm4gIlNhZmFyaSI7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIHNob3dTZWN0aW9uKHNlY3Rpb25JZGVudGlmaWVyLCBwdXNoU3RhdGUp
IHsKKyAgICB2YXIgY3VycmVudFNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigic2VjdGlvbi5zZWxlY3RlZCIpOworICAgIGNvbnNvbGUuYXNzZXJ0KGN1cnJlbnRTZWN0aW9u
RWxlbWVudCk7CisKKyAgICB2YXIgbmV3U2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChzZWN0aW9uSWRlbnRpZmllcik7CisgICAgY29uc29sZS5hc3NlcnQobmV3U2VjdGlv
bkVsZW1lbnQpOworCisgICAgY3VycmVudFNlY3Rpb25FbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUo
InNlbGVjdGVkIik7CisgICAgbmV3U2VjdGlvbkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2VsZWN0
ZWQiKTsKKworICAgIGlmIChwdXNoU3RhdGUpCisgICAgICAgIGhpc3RvcnkucHVzaFN0YXRlKHtz
ZWN0aW9uOiBzZWN0aW9uSWRlbnRpZmllcn0sIGRvY3VtZW50LnRpdGxlKTsKK30KKworZnVuY3Rp
b24gc3RhcnRCZW5jaG1hcmsoKSB7CisgICAgdmFyIGNoZWNrYm94ZXMgPSBbIAorICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaHRtbC1zdWl0ZSIpLCAKKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNhbnZhcy1zdWl0ZSIpLCAKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInN2Zy1zdWl0ZSIpCisgICAgXTsKKyAgICB2YXIgZW5hYmxlZFN1aXRlcyA9IFN1
aXRlcy5maWx0ZXIoZnVuY3Rpb24gKHN1aXRlLCBpbmRleCkgeyByZXR1cm4gIXN1aXRlLmRpc2Fi
bGVkICYmIGNoZWNrYm94ZXNbaW5kZXhdLmNoZWNrZWQ7IH0pOworICAgIHZhciB0ZXN0c0NvdW50
ID0gZW5hYmxlZFN1aXRlcy5yZWR1Y2UoZnVuY3Rpb24gKHRlc3RzQ291bnQsIHN1aXRlKSB7IHJl
dHVybiB0ZXN0c0NvdW50ICsgc3VpdGUudGVzdHMubGVuZ3RoOyB9LCAwKTsKKyAgICBiZW5jaG1h
cmtSdW5uZXJDbGllbnQudGVzdHNDb3VudCA9IGJlbmNobWFya1J1bm5lckNsaWVudC5pdGVyYXRp
b25Db3VudCAqIHRlc3RzQ291bnQ7CisgICAgYmVuY2htYXJrUnVubmVyQ2xpZW50Lm9wdGlvbnMu
dGVzdEludGVydmFsID0gcGFyc2VJbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QtaW50
ZXJ2YWwiKS52YWx1ZSkgKiAxMDAwOworICAgIGJlbmNobWFya1J1bm5lckNsaWVudC5vcHRpb25z
LmZyYW1lUmF0ZSA9IHBhcnNlSW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZS1yYXRl
IikudmFsdWUpOworICAgIGJlbmNobWFya1J1bm5lckNsaWVudC5vcHRpb25zLmVzdGltYXRlZEZy
YW1lUmF0ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlc3RpbWF0ZWQtZnJhbWUtcmF0ZSIp
LmNoZWNrZWQ7ICAgIAorICAgIGJlbmNobWFya1J1bm5lckNsaWVudC5vcHRpb25zLmZpeFRlc3RD
b21wbGV4aXR5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpeC10ZXN0LWNvbXBsZXhpdHki
KS5jaGVja2VkOworICAgIHZhciBydW5uZXIgPSBuZXcgQmVuY2htYXJrUnVubmVyKGVuYWJsZWRT
dWl0ZXMsIGJlbmNobWFya1J1bm5lckNsaWVudCk7CisgICAgcnVubmVyLnJ1bk11bHRpcGxlSXRl
cmF0aW9ucyhiZW5jaG1hcmtSdW5uZXJDbGllbnQuaXRlcmF0aW9uQ291bnQpOworfQorCitmdW5j
dGlvbiBzdGFydFRlc3QoKSB7CisgICAgc2hvd1NlY3Rpb24oInJ1bm5pbmciKTsKKyAgICBzdGFy
dEJlbmNobWFyaygpOworfQorCitmdW5jdGlvbiBzaG93UmVzdWx0cyhzY29yZSkgeworICAgIHZh
ciBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3Jlc3VsdHMgPiBoMSIpOworICAg
IGVsZW1lbnQudGV4dENvbnRlbnQgPSAiUmVzdWx0czoiCisgICAgCisgICAgdmFyIGJyb3dzZXIg
PSBiZW5jaG1hcmtSdW5uZXJDbGllbnQuYnJvd3NlcigpOyAgICAKKyAgICBpZiAoYnJvd3Nlci5s
ZW5ndGgpCisgICAgICAgIGVsZW1lbnQudGV4dENvbnRlbnQgKz0gIiBbYnJvd3NlciA9ICIgKyBi
cm93c2VyICsgIl0iOworCisgICAgdmFyIHNjb3JlID0gYmVuY2htYXJrUnVubmVyQ2xpZW50LnNj
b3JlLnRvRml4ZWQoMik7CisgICAgZWxlbWVudC50ZXh0Q29udGVudCArPSAiIFtTY29yZSA9ICIg
KyBzY29yZSArICJdIjsKKyAgICAgICAgCisgICAgc2hvd1NlY3Rpb24oInJlc3VsdHMiLCB0cnVl
KTsKK30KKworZnVuY3Rpb24gc2hvd0dyYXBoKHRlc3ROYW1lLCBheGlzZXMsIHNhbXBsZXMsIHNh
bXBsaW5nVGltZU9mZnNldCkgeworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcigiI2dyYXBoID4gaDEiKTsKKyAgICBlbGVtZW50LnRleHRDb250ZW50ID0gIkdyYXBoOiIK
KworICAgIGlmICh0ZXN0TmFtZS5sZW5ndGgpCisgICAgICAgIGVsZW1lbnQudGV4dENvbnRlbnQg
Kz0gIiBbdGVzdCA9ICIgKyB0ZXN0TmFtZSArICJdIjsKKyAgICAgICAgICAgIAorICAgIGdyYXBo
KCIjZ3JhcGhDb250YWluZXIiLCBuZXcgUG9pbnQoNzAwLCA0MDApLCBuZXcgSW5zZXRzKDIwLCA1
MCwgMjAsIDUwKSwgYXhpc2VzLCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQpOworICAgIHNo
b3dTZWN0aW9uKCJncmFwaCIsIHRydWUpOyAgICAKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMJ
KHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2Jl
bmNobWFyay1ydW5uZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODggQEAKK2Z1bmN0
aW9uIEJlbmNobWFya1J1bm5lclN0YXRlKHN1aXRlcykgeworICAgIHRoaXMuX3N1aXRlcyA9IHN1
aXRlczsKKyAgICB0aGlzLl9zdWl0ZUluZGV4ID0gLTE7CisgICAgdGhpcy5fdGVzdEluZGV4ID0g
MDsKKyAgICB0aGlzLm5leHQoKTsKK30KKworQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBl
LmN1cnJlbnRTdWl0ZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLl9zdWl0ZXNbdGhp
cy5fc3VpdGVJbmRleF07Cit9CisKK0JlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5jdXJy
ZW50VGVzdCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBzdWl0ZSA9IHRoaXMuY3VycmVudFN1aXRl
KCk7CisgICAgcmV0dXJuIHN1aXRlID8gc3VpdGUudGVzdHNbdGhpcy5fdGVzdEluZGV4XSA6IG51
bGw7Cit9CisKK0JlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5pc0ZpcnN0VGVzdCA9IGZ1
bmN0aW9uKCkgeworICAgIHJldHVybiAhdGhpcy5fdGVzdEluZGV4OworfQorCitCZW5jaG1hcmtS
dW5uZXJTdGF0ZS5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKCkgeworICAgIHRoaXMuX3Rlc3RJ
bmRleCsrOworCisgICAgdmFyIHN1aXRlID0gdGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5kZXhd
OworICAgIGlmIChzdWl0ZSAmJiB0aGlzLl90ZXN0SW5kZXggPCBzdWl0ZS50ZXN0cy5sZW5ndGgp
CisgICAgICAgIHJldHVybiB0aGlzOworCisgICAgdGhpcy5fdGVzdEluZGV4ID0gMDsKKyAgICBk
byB7CisgICAgICAgIHRoaXMuX3N1aXRlSW5kZXgrKzsKKyAgICB9IHdoaWxlICh0aGlzLl9zdWl0
ZUluZGV4IDwgdGhpcy5fc3VpdGVzLmxlbmd0aCAmJiB0aGlzLl9zdWl0ZXNbdGhpcy5fc3VpdGVJ
bmRleF0uZGlzYWJsZWQpOworCisgICAgcmV0dXJuIHRoaXM7Cit9CisKK0JlbmNobWFya1J1bm5l
clN0YXRlLnByb3RvdHlwZS5wcmVwYXJlQ3VycmVudFRlc3QgPSBmdW5jdGlvbihydW5uZXIsIGZy
YW1lKSB7CisgICAgdmFyIHN1aXRlID0gdGhpcy5jdXJyZW50U3VpdGUoKTsKKyAgICB2YXIgdGVz
dCA9IHRoaXMuY3VycmVudFRlc3QoKTsKKyAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9t
aXNlOworICAgIGZyYW1lLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBzdWl0ZS5wcmVw
YXJlKHJ1bm5lciwgZnJhbWUuY29udGVudFdpbmRvdywgZnJhbWUuY29udGVudERvY3VtZW50KS50
aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeyBwcm9taXNlLnJlc29sdmUocmVzdWx0KTsgfSk7CisgICAg
fQorICAgIGZyYW1lLnNyYyA9IHRlc3QudXJsOworICAgIHJldHVybiBwcm9taXNlOworfQorCitm
dW5jdGlvbiBCZW5jaG1hcmtSdW5uZXIoc3VpdGVzLCBjbGllbnQpIHsKKyAgICB0aGlzLl9zdWl0
ZXMgPSBzdWl0ZXM7CisgICAgdGhpcy5fY2xpZW50ID0gY2xpZW50OworfQorCitCZW5jaG1hcmtS
dW5uZXIucHJvdG90eXBlLndhaXRGb3JFbGVtZW50ID0gZnVuY3Rpb24oc2VsZWN0b3IpIHsKKyAg
ICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgIHZhciBjb250ZW50RG9jdW1l
bnQgPSB0aGlzLl9mcmFtZS5jb250ZW50RG9jdW1lbnQ7CisKKyAgICBmdW5jdGlvbiByZXNvbHZl
SWZSZWFkeSgpIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBjb250ZW50RG9jdW1lbnQucXVlcnlT
ZWxlY3RvcihzZWxlY3Rvcik7CisgICAgICAgIGlmIChlbGVtZW50KQorICAgICAgICAgICAgcmV0
dXJuIHByb21pc2UucmVzb2x2ZShlbGVtZW50KTsKKyAgICAgICAgc2V0VGltZW91dChyZXNvbHZl
SWZSZWFkeSwgNTApOworICAgIH0KKworICAgIHJlc29sdmVJZlJlYWR5KCk7CisgICAgcmV0dXJu
IHByb21pc2U7Cit9CisKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX2FwcGVuZEZyYW1lID0g
ZnVuY3Rpb24oc3JjKSB7CisgICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aWZyYW1lIik7CisgICAgZnJhbWUuc3R5bGUud2lkdGggPSAiODAwcHgiOworICAgIGZyYW1lLnN0
eWxlLmhlaWdodCA9ICI2MDBweCI7CisgICAgZnJhbWUuc3R5bGUuYm9yZGVyID0gIjBweCBub25l
IjsKKyAgICBmcmFtZS5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7CisgICAgZnJhbWUuc2V0
QXR0cmlidXRlKCJzY3JvbGxpbmciLCAibm8iKTsKKworICAgIHZhciBtYXJnaW5MZWZ0ID0gcGFy
c2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5tYXJnaW5MZWZ0KTsKKyAgICB2
YXIgbWFyZ2luVG9wID0gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5t
YXJnaW5Ub3ApOworICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA+IDgwMCArIG1hcmdpbkxlZnQg
JiYgd2luZG93LmlubmVySGVpZ2h0ID4gNjAwICsgbWFyZ2luVG9wKSB7CisgICAgICAgIGZyYW1l
LnN0eWxlLmxlZnQgPSBtYXJnaW5MZWZ0ICsgInB4IjsKKyAgICAgICAgZnJhbWUuc3R5bGUudG9w
ID0gbWFyZ2luVG9wICsgInB4IjsKKyAgICB9IGVsc2UgeworICAgICAgICBmcmFtZS5zdHlsZS5s
ZWZ0ID0gIjBweCI7CisgICAgICAgIGZyYW1lLnN0eWxlLnRvcCA9ICIwcHgiOworICAgIH0KKwor
ICAgIGlmICh0aGlzLl9jbGllbnQgJiYgdGhpcy5fY2xpZW50LndpbGxBZGRUZXN0RnJhbWUpCisg
ICAgICAgIHRoaXMuX2NsaWVudC53aWxsQWRkVGVzdEZyYW1lKGZyYW1lKTsKKworICAgIGRvY3Vt
ZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGZyYW1lLCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOwor
ICAgIHRoaXMuX2ZyYW1lID0gZnJhbWU7CisgICAgcmV0dXJuIGZyYW1lOworfQorCitCZW5jaG1h
cmtSdW5uZXIucHJvdG90eXBlLl9yZW1vdmVGcmFtZSA9IGZ1bmN0aW9uKCkgeworICAgIGlmICh0
aGlzLl9mcmFtZSkgeworICAgICAgICB0aGlzLl9mcmFtZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxk
KHRoaXMuX2ZyYW1lKTsKKyAgICAgICAgdGhpcy5fZnJhbWUgPSBudWxsOworICAgIH0KK30KKwor
QmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcnVuVGVzdEFuZFJlY29yZFJlc3VsdHMgPSBmdW5j
dGlvbihzdGF0ZSkgeworICAgIHZhciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7CisgICAg
dmFyIHN1aXRlID0gc3RhdGUuY3VycmVudFN1aXRlKCk7CisgICAgdmFyIHRlc3QgPSBzdGF0ZS5j
dXJyZW50VGVzdCgpOworICAgIAorICAgIGlmICh0aGlzLl9jbGllbnQgJiYgdGhpcy5fY2xpZW50
LndpbGxSdW5UZXN0VGVzdCkKKyAgICAgICAgdGhpcy5fY2xpZW50LndpbGxSdW5UZXN0KHN1aXRl
LCB0ZXN0KTsKKworICAgIHZhciBjb250ZW50V2luZG93ID0gdGhpcy5fZnJhbWUuY29udGVudFdp
bmRvdzsKKyAgICB2YXIgc2VsZiA9IHRoaXM7CisKKyAgICBzdWl0ZS5ydW4oY29udGVudFdpbmRv
dywgdGVzdCwgdGhpcy5fY2xpZW50Lm9wdGlvbnMsIHRoaXMuX2NsaWVudC5yZWNvcmRUYWJsZSwg
dGhpcy5fY2xpZW50LnByb2dyZXNzQmFyKS50aGVuKGZ1bmN0aW9uKHNhbXBsZXIpIHsKKyAgICAg
ICAgdmFyIHNhbXBsZXJzID0gc2VsZi5fc3VpdGVzU2FtcGxlcnNbc3VpdGUubmFtZV0gfHwgW107
CisgICAgICAgIAorICAgICAgICBzYW1wbGVyc1t0ZXN0Lm5hbWVdID0gc2FtcGxlcjsKKyAgICAg
ICAgc2VsZi5fc3VpdGVzU2FtcGxlcnNbc3VpdGUubmFtZV0gPSBzYW1wbGVyczsKKworICAgICAg
ICBpZiAoc2VsZi5fY2xpZW50ICYmIHNlbGYuX2NsaWVudC5kaWRSdW5UZXN0KQorICAgICAgICAg
ICAgc2VsZi5fY2xpZW50LmRpZFJ1blRlc3Qoc3VpdGUsIHRlc3QpOworICAgICAgICAKKyAgICAg
ICAgc3RhdGUubmV4dCgpOworICAgICAgICBpZiAoc3RhdGUuY3VycmVudFN1aXRlKCkgIT0gc3Vp
dGUpCisgICAgICAgICAgICBzZWxmLl9yZW1vdmVGcmFtZSgpOworICAgICAgICBwcm9taXNlLnJl
c29sdmUoc3RhdGUpOworICAgIH0pOworICAgIAorICAgIHJldHVybiBwcm9taXNlOworfQorCitC
ZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLnN0ZXAgPSBmdW5jdGlvbihzdGF0ZSkgeworICAgIGlm
ICghc3RhdGUpIHsKKyAgICAgICAgc3RhdGUgPSBuZXcgQmVuY2htYXJrUnVubmVyU3RhdGUodGhp
cy5fc3VpdGVzKTsKKyAgICAgICAgdGhpcy5fc3VpdGVzU2FtcGxlcnMgPSB7fTsKKyAgICB9CisK
KyAgICB2YXIgc3VpdGUgPSBzdGF0ZS5jdXJyZW50U3VpdGUoKTsKKyAgICBpZiAoIXN1aXRlKSB7
CisgICAgICAgIHRoaXMuX2ZpbmFsaXplKCk7CisgICAgICAgIHZhciBwcm9taXNlID0gbmV3IFNp
bXBsZVByb21pc2U7CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworICAgICAgICByZXR1cm4g
cHJvbWlzZTsKKyAgICB9CisKKyAgICBpZiAoc3RhdGUuaXNGaXJzdFRlc3QoKSkgeworICAgICAg
ICB0aGlzLl9tYXN1cmVkVmFsdWVzRm9yQ3VycmVudFN1aXRlID0ge307CisgICAgICAgIHRoaXMu
X2FwcGVuZEZyYW1lKCk7CisgICAgfQorCisgICAgdmFyIHNlbGYgPSB0aGlzOworICAgIHJldHVy
biBzdGF0ZS5wcmVwYXJlQ3VycmVudFRlc3QodGhpcywgdGhpcy5fZnJhbWUpLnRoZW4oZnVuY3Rp
b24ocHJlcGFyZVJldHVyblZhbHVlKSB7CisgICAgICAgIHJldHVybiBzZWxmLl9ydW5UZXN0QW5k
UmVjb3JkUmVzdWx0cyhzdGF0ZSk7CisgICAgfSk7Cit9CisKK0JlbmNobWFya1J1bm5lci5wcm90
b3R5cGUucnVuQWxsU3RlcHMgPSBmdW5jdGlvbihzdGFydGluZ1N0YXRlKSB7CisgICAgdmFyIG5l
eHRDYWxsZWUgPSB0aGlzLnJ1bkFsbFN0ZXBzLmJpbmQodGhpcyk7CisgICAgdGhpcy5zdGVwKHN0
YXJ0aW5nU3RhdGUpLnRoZW4oZnVuY3Rpb24obmV4dFN0YXRlKSB7CisgICAgICAgIGlmIChuZXh0
U3RhdGUpCisgICAgICAgICAgICBuZXh0Q2FsbGVlKG5leHRTdGF0ZSk7CisgICAgfSk7Cit9CisK
K0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUucnVuTXVsdGlwbGVJdGVyYXRpb25zID0gZnVuY3Rp
b24oaXRlcmF0aW9uQ291bnQpIHsKKyAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgdmFyIGN1cnJl
bnRJdGVyYXRpb24gPSAwOworCisgICAgdGhpcy5fcnVuTmV4dEl0ZXJhdGlvbiA9IGZ1bmN0aW9u
KCkgeworICAgICAgICBjdXJyZW50SXRlcmF0aW9uKys7CisgICAgICAgIGlmIChjdXJyZW50SXRl
cmF0aW9uIDwgaXRlcmF0aW9uQ291bnQpCisgICAgICAgICAgICBzZWxmLnJ1bkFsbFN0ZXBzKCk7
CisgICAgICAgIGVsc2UgaWYgKHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGllbnQuZGlkRmluaXNo
TGFzdEl0ZXJhdGlvbikKKyAgICAgICAgICAgIHNlbGYuX2NsaWVudC5kaWRGaW5pc2hMYXN0SXRl
cmF0aW9uKCk7CisgICAgfQorCisgICAgaWYgKHNlbGYuX2NsaWVudCAmJiBzZWxmLl9jbGllbnQu
d2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb24pCisgICAgICAgIHNlbGYuX2NsaWVudC53aWxsU3RhcnRG
aXJzdEl0ZXJhdGlvbihpdGVyYXRpb25Db3VudCk7CisKKyAgICBzZWxmLnJ1bkFsbFN0ZXBzKCk7
Cit9CisKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX2ZpbmFsaXplID0gZnVuY3Rpb24oKSB7
CisgICAgdGhpcy5fcmVtb3ZlRnJhbWUoKTsKKyAgICAgICAgCisgICAgaWYgKHRoaXMuX2NsaWVu
dCAmJiB0aGlzLl9jbGllbnQuZGlkUnVuU3VpdGVzKQorICAgICAgICB0aGlzLl9jbGllbnQuZGlk
UnVuU3VpdGVzKHRoaXMuX3N1aXRlc1NhbXBsZXJzKTsKKworICAgIGlmICh0aGlzLl9ydW5OZXh0
SXRlcmF0aW9uKQorICAgICAgICB0aGlzLl9ydW5OZXh0SXRlcmF0aW9uKCk7Cit9CkluZGV4OiBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2JlbmNobWFyay5jc3MKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9iZW5jaG1hcmsu
Y3NzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNl
cy9iZW5jaG1hcmsuY3NzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKK2h0bWwgewor
ICBoZWlnaHQ6IDEwMCU7Cit9Citib2R5IHsKKyAgd2lkdGg6IDEwMCU7CisgIGhlaWdodDogMTAw
JTsKKyAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgbWFyZ2luOiAwOworICBwYWRkaW5nOiAwOworICBi
YWNrZ3JvdW5kLWNvbG9yOiAjZWFlYWVhOworfQorCisjc3RhZ2UgeworICB3aWR0aDogMTAwJTsK
KyAgaGVpZ2h0OiAxMDAlOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWFlYWVhOworfQorCisuY2ly
Y2xlIHsKKyAgcG9zaXRpb246IGFic29sdXRlOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAw
OworICBib3JkZXItcmFkaXVzOiA1MCUgNTAlOworfQorCisucmVjdCB7CisgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsKK30KKworLnN0YXIgeworICAt
d2Via2l0LWNsaXAtcGF0aDogcG9seWdvbig1MCUgMCUsIDM4JSAzOCUsIDAlIDM4JSwgMzAlIDYw
JSwgMTglIDEwMCUsIDUwJSA3NSUsIDgyJSAxMDAlLCA3MCUgNjAlLCAxMDAlIDM4JSwgNjIlIDM4
JSk7CisgIC1tcy1jbGlwLXBhdGg6IHBvbHlnb24oNTAlIDAlLCAzOCUgMzglLCAwJSAzOCUsIDMw
JSA2MCUsIDE4JSAxMDAlLCA1MCUgNzUlLCA4MiUgMTAwJSwgNzAlIDYwJSwgMTAwJSAzOCUsIDYy
JSAzOCUpOyAgCisgIGNsaXAtcGF0aDogcG9seWdvbig1MCUgMCUsIDM4JSAzOCUsIDAlIDM4JSwg
MzAlIDYwJSwgMTglIDEwMCUsIDUwJSA3NSUsIDgyJSAxMDAlLCA3MCUgNjAlLCAxMDAlIDM4JSwg
NjIlIDM4JSk7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2Vz
L2JlbmNobWFyay5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
cmVzb3VyY2VzL2JlbmNobWFyay5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci9yZXNvdXJjZXMvYmVuY2htYXJrLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMjEwIEBACitmdW5jdGlvbiBCZW5jaG1hcmtTdGF0ZSh0ZXN0SW50ZXJ2YWwpIHsKKyAgICB0
aGlzLl9jdXJyZW50VGltZU9mZnNldCA9IDA7CisgICAgdGhpcy5fc3RhZ2VJbnRlcnZhbCA9IHRl
c3RJbnRlcnZhbCAvIEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRDsKK30KKworQmVuY2ht
YXJrU3RhdGUuc3RhZ2VzID0geworICAgIFdBUk1JTkdfVVA6IDAsCisgICAgU0FNUExJTkc6IDEs
CisgICAgRklOSVNIRUQ6IDIsCisgICAgbWVzc2FnZXM6IFsgIldhcm1pbmcgdXAiLCAiU2FtcGxp
bmciLCAiRmluaXNoZWQiIF0KK307CisKK0JlbmNobWFya1N0YXRlLnByb3RvdHlwZSA9IHsKKyAg
ICBfdGltZU9mZnNldCA6IGZ1bmN0aW9uKHN0YWdlKSB7CisgICAgICAgIHJldHVybiBzdGFnZSAq
IHRoaXMuX3N0YWdlSW50ZXJ2YWw7CisgICAgfSwKKyAgICBfbWVzc2FnZSA6IGZ1bmN0aW9uKHN0
YWdlLCB0aW1lT2Zmc2V0KSB7CisgICAgICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5z
dGFnZXMuRklOSVNIRUQpCisgICAgICAgICAgICByZXR1cm4gQmVuY2htYXJrU3RhdGUuc3RhZ2Vz
Lm1lc3NhZ2VzW3N0YWdlXTsKKworICAgICAgICByZXR1cm4gQmVuY2htYXJrU3RhdGUuc3RhZ2Vz
Lm1lc3NhZ2VzW3N0YWdlXSArICIuLi4gKCIKKyAgICAgICAgICAgICsgTWF0aC5mbG9vcigodGlt
ZU9mZnNldCAtIHRoaXMuX3RpbWVPZmZzZXQoc3RhZ2UpKSAvIDEwMDApICsgIi8iCisgICAgICAg
ICAgICArIE1hdGguZmxvb3IoKHRoaXMuX3RpbWVPZmZzZXQoc3RhZ2UgKyAxKSAtIHRoaXMuX3Rp
bWVPZmZzZXQoc3RhZ2UpKSAvIDEwMDApICsgIikiOworICAgIH0sCisgICAgdXBkYXRlIDogZnVu
Y3Rpb24oY3VycmVudFRpbWVPZmZzZXQpIHsKKyAgICAgICAgdGhpcy5fY3VycmVudFRpbWVPZmZz
ZXQgPSBjdXJyZW50VGltZU9mZnNldDsKKyAgICB9LAorICAgIHNhbXBsaW5nVGltZU9mZnNldCA6
IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5fdGltZU9mZnNldChCZW5jaG1hcmtT
dGF0ZS5zdGFnZXMuU0FNUExJTkcpOworICAgIH0sCisgICAgY3VycmVudFN0YWdlIDogZnVuY3Rp
b24oKSB7CisgICAgICAgIGZvciAodmFyIHN0YWdlID0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLldB
Uk1JTkdfVVA7IHN0YWdlIDwgQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEOyArK3N0YWdl
KSB7CisgICAgICAgICAgICBpZiAodGhpcy5fY3VycmVudFRpbWVPZmZzZXQgPCB0aGlzLl90aW1l
T2Zmc2V0KHN0YWdlICsgMSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YWdlOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQ7CisgICAg
fSwKKyAgICBjdXJyZW50TWVzc2FnZSA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhp
cy5fbWVzc2FnZSh0aGlzLmN1cnJlbnRTdGFnZSgpLCB0aGlzLl9jdXJyZW50VGltZU9mZnNldCk7
CisgICAgfSwKKyAgICBjdXJyZW50UHJvZ3Jlc3MgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IC8gdGhpcy5fdGltZU9mZnNldChCZW5jaG1hcmtT
dGF0ZS5zdGFnZXMuRklOSVNIRUQpOworICAgIH0KK30KKworZnVuY3Rpb24gQW5pbWF0b3IoYmVu
Y2htYXJrKSB7CisgICAgdGhpcy5fYmVuY2htYXJrID0gYmVuY2htYXJrOworICAgIHRoaXMuX2Zy
YW1lQ291bnQgPSAwOworICAgIHRoaXMuX2Ryb3BGcmFtZUNvdW50ID0gMTsKKyAgICB0aGlzLl9t
ZWFzdXJlRnJhbWVDb3VudCA9IDM7IAorICAgIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0ID0gMDsK
KyAgICB0aGlzLl9lc3RpbWF0b3IgPSBuZXcgRXN0aW1hdG9yKCk7Cit9CisKK0FuaW1hdG9yLnBy
b3RvdHlwZSA9IHsKKyAgICBzdGFydCA6IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLl9pbnRl
cnZhbElkID0gc2V0SW50ZXJ2YWwodGhpcy5hbmltYXRlLmJpbmQodGhpcyksIDEpOworICAgIH0s
CisgICAgdGltZURlbHRhIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLl9jdXJy
ZW50VGltZU9mZnNldCAtIHRoaXMuX3N0YXJ0VGltZU9mZnNldDsKKyAgICB9LAorICAgIGFuaW1h
dGUgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGN1cnJlbnRUaW1lID0gbmV3IERhdGUoKS5n
ZXRUaW1lKCk7CisgICAgICAgIAorICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3JlZmVyZW5jZVRp
bWUgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgdGhpcy5fcmVmZXJlbmNlVGltZSA9IGN1
cnJlbnRUaW1lOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9jdXJyZW50VGltZU9m
ZnNldCA9IGN1cnJlbnRUaW1lIC0gdGhpcy5fcmVmZXJlbmNlVGltZTsKKworICAgICAgICBpZiAo
IXRoaXMuX2ZyYW1lQ291bnQpCisgICAgICAgICAgICB0aGlzLl9zdGFydFRpbWVPZmZzZXQgPSB0
aGlzLl9jdXJyZW50VGltZU9mZnNldDsKKworICAgICAgICAvLyBTdGFydCBtZWFzdXJpbmcgYWZ0
ZXIgZHJvcHBpbmcgX2Ryb3BGcmFtZUNvdW50IGZyYW1lcy4KKyAgICAgICAgaWYgKHRoaXMuX2Zy
YW1lQ291bnQgPT0gdGhpcy5fZHJvcEZyYW1lQ291bnQpCisgICAgICAgICAgICB0aGlzLl9tZWFz
dXJlVGltZU9mZnNldCA9IHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0OworCisgICAgICAgICsrdGhp
cy5fZnJhbWVDb3VudDsKKworICAgICAgICAvLyBEcm9wIF9kcm9wRnJhbWVDb3VudCBmcmFtZXMg
YW5kIG1lYXN1cmUgdGhlIGF2ZXJhZ2Ugb2YgX21lYXN1cmVGcmFtZUNvdW50IGZyYW1lcy4KKyAg
ICAgICAgaWYgKHRoaXMuX2ZyYW1lQ291bnQgPCB0aGlzLl9kcm9wRnJhbWVDb3VudCArIHRoaXMu
X21lYXN1cmVGcmFtZUNvdW50KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAg
Ly8gR2V0IHRoZSBhdmVyYWdlIEZQUyBvZiBfbWVhc3VyZUZyYW1lQ291bnQgZnJhbWVzIG92ZXIg
bWVhc3VyZVRpbWVEZWx0YS4KKyAgICAgICAgdmFyIG1lYXN1cmVUaW1lRGVsdGEgPSB0aGlzLl9j
dXJyZW50VGltZU9mZnNldCAtIHRoaXMuX21lYXN1cmVUaW1lT2Zmc2V0OworICAgICAgICB2YXIg
Y3VycmVudEZyYW1lUmF0ZSA9IE1hdGguZmxvb3IoMTAwMCAvIChtZWFzdXJlVGltZURlbHRhIC8g
dGhpcy5fbWVhc3VyZUZyYW1lQ291bnQpKTsKKyAgICAgICAgIAorICAgICAgICAvLyBVc2UgS2Fs
bWFuIGZpbHRlciB0byBnZXQgYSBtb3JlIG5vbi1mbHVjdHVhdGluZyBmcmFtZSByYXRlLgorICAg
ICAgICBpZiAodGhpcy5fYmVuY2htYXJrLm9wdGlvbnMuZXN0aW1hdGVkRnJhbWVSYXRlKQorICAg
ICAgICAgICAgY3VycmVudEZyYW1lUmF0ZSA9IHRoaXMuX2VzdGltYXRvci5lc3RpbWF0ZShtZWFz
dXJlVGltZURlbHRhLCBjdXJyZW50RnJhbWVSYXRlKTsKKyAgICAgICAgCisgICAgICAgIC8vIEFk
anVzdCB0aGUgdGVzdCB0byByZWFjaCB0aGUgZGVzaXJlZCBGUFMuCisgICAgICAgIHZhciByZXN1
bHQgPSB0aGlzLl9iZW5jaG1hcmsudXBkYXRlKHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0LCB0aGlz
LnRpbWVEZWx0YSgpLCBjdXJyZW50RnJhbWVSYXRlKTsKKyAgICAgICAgCisgICAgICAgIGlmICgh
cmVzdWx0ICYmIHR5cGVvZiB0aGlzLl9pbnRlcnZhbElkICE9ICJ1bmRlZmluZWQiKQorICAgICAg
ICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbElkKTsKKworICAgICAgICAvLyBTdGFy
dCB0aGUgbmV4dCBkcm9wL21lYXN1cmUgY3ljbGUuCisgICAgICAgIHRoaXMuX2ZyYW1lQ291bnQg
PSAwOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisgICAgYW5pbWF0ZUxvb3AgOiBm
dW5jdGlvbih0aW1lc3RhbXApIHsKKyAgICAgICAgaWYgKHRoaXMuYW5pbWF0ZSgpKQorICAgICAg
ICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0ZUxvb3AuYmluZCh0aGlzKSk7
CisgICAgfQorfQorCitmdW5jdGlvbiBCZW5jaG1hcmsob3B0aW9ucykgeworICAgIHRoaXMuX3Bh
cmFtZXRlcnMgPSB0aGlzLnBhcnNlUGFyYW1ldGVycygpOworICAgIHRoaXMuX21ldGhvZCA9IHRo
aXMuX3BhcmFtZXRlcnNbIm1ldGhvZCJdIHx8ICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiOworCisg
ICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKKyAgICB0aGlzLl9yZWNvcmRJbnRlcnZhbCA9IDIw
MDsgICAgCisgICAgdGhpcy5faXNTYW1wbGluZyA9IGZhbHNlOworCisgICAgdmFyIGdhaW4gPSBw
YXJzZUludCh0aGlzLl9wYXJhbWV0ZXJzWyJnYWluIl0pIHx8IDE7CisgICAgdmFyIGxvd1ZhbHVl
ID0gLXBhcnNlSW50KHRoaXMuX3BhcmFtZXRlcnNbImFkZExpbWl0Il0pIHx8IDE7CisgICAgdmFy
IGhpZ2hWYWx1ZSA9IHBhcnNlSW50KHRoaXMuX3BhcmFtZXRlcnNbInJlbW92ZUxpbWl0Il0pIHx8
IDE7CisgICAgCisgICAgdGhpcy5fY29udHJvbGxlciA9IG5ldyBDb250cm9sbGVyKGdhaW4sIG9w
dGlvbnMuZnJhbWVSYXRlLCBsb3dWYWx1ZSwgaGlnaFZhbHVlKTsKKyAgICB0aGlzLl9zYW1wbGVy
ID0gbmV3IFNhbXBsZXIoMik7CisgICAgdGhpcy5fc3RhdGUgPSBuZXcgQmVuY2htYXJrU3RhdGUo
dGhpcy5vcHRpb25zLnRlc3RJbnRlcnZhbCk7ICAgIAorfQorCitCZW5jaG1hcmsucHJvdG90eXBl
ID0geworICAgIHBhcnNlUGFyYW1ldGVycyA6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgcXVl
cnkgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cigxKTsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IHt9OworICAgICAgICBxdWVyeS5zcGxpdCgiJiIpLmZvckVhY2goZnVuY3Rpb24ocGFydCkg
eworICAgICAgICAgICAgdmFyIGl0ZW0gPSBwYXJ0LnNwbGl0KCI9Iik7CisgICAgICAgICAgICBy
ZXN1bHRbaXRlbVswXV0gPSBkZWNvZGVVUklDb21wb25lbnQoaXRlbVsxXSk7CisgICAgICAgIH0p
OworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorICAgIC8vIENhbGxlZCBmcm9tIHRoZSBs
b2FkIGV2ZW50IGxpc3RlbmVyIG9yIGZyb20gdGhpcy5ydW4oKQorICAgIHN0YXJ0IDogZnVuY3Rp
b24oKSB7CisgICAgICAgIGlmICh0aGlzLl9tZXRob2QgPT0gInNldEludGVydmFsIikKKyAgICAg
ICAgICAgIHRoaXMuX2FuaW1hdG9yLnN0YXJ0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHRoaXMuX2FuaW1hdG9yLmFuaW1hdGVMb29wKCk7CisgICAgfSwKKyAgICAvLyBDYWxsZWQgZnJv
bSB0aGUgYW5pbWF0b3IgdG8gYWRqdXN0IHRoZSBjb21wbGV4aXR5IG9mIHRoZSB0ZXN0CisgICAg
dXBkYXRlIDogZnVuY3Rpb24oY3VycmVudFRpbWVPZmZzZXQsIHRpbWVEZWx0YSwgY3VycmVudEZy
YW1lUmF0ZSkgeworICAgICAgICB0aGlzLl9zdGF0ZS51cGRhdGUoY3VycmVudFRpbWVPZmZzZXQp
OworICAgICAgICAKKyAgICAgICAgdmFyIHN0YWdlID0gdGhpcy5fc3RhdGUuY3VycmVudFN0YWdl
KCk7CisgICAgICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQp
IHsKKyAgICAgICAgICAgIHRoaXMuY2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMu
U0FNUExJTkcgJiYgIXRoaXMuX2lzU2FtcGxpbmcpIHsKKyAgICAgICAgICAgIHRoaXMuX3NhbXBs
ZXIuc3RhcnRTYW1wbGluZyh0aGlzLl9zdGF0ZS5zYW1wbGluZ1RpbWVPZmZzZXQoKSk7CisgICAg
ICAgICAgICB0aGlzLl9pc1NhbXBsaW5nID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZh
ciB0dW5lVmFsdWUgPSAwOworICAgICAgICBpZiAoISh0aGlzLl9pc1NhbXBsaW5nICYmIHRoaXMu
b3B0aW9ucy5maXhUZXN0Q29tcGxleGl0eSkpIHsKKyAgICAgICAgICAgIC8vIFRoZSByZWxhdGlv
bnNoaXAgYmV0d2VlbiBmcmFtZVJhdGUgYW5kIHRlc3QgY29tcGxleGl0eSBpcyBpbnZlcnNlLXBy
b3BvcnRpb25hbCBzbyB3ZQorICAgICAgICAgICAgLy8gbmVlZCB0byB1c2UgdGhlIG5lZ2F0aXZl
IG9mIENvbnRyb2xsZXIudHVuZSgpIHRvIGNoYW5nZSB0aGUgY29tcGxleGl0eSBvZiB0aGUgdGVz
dAorICAgICAgICAgICAgdHVuZVZhbHVlID0gLXRoaXMuX2NvbnRyb2xsZXIudHVuZShjdXJyZW50
RnJhbWVSYXRlLCB0aW1lRGVsdGEgLyAxMDAwKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBj
dXJyZW50Q29tcGxleGl0eSA9IHRoaXMudHVuZSh0dW5lVmFsdWUpOworICAgICAgICB0aGlzLnJl
Y29yZChjdXJyZW50VGltZU9mZnNldCwgY3VycmVudENvbXBsZXhpdHksIGN1cnJlbnRGcmFtZVJh
dGUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorICAgIHJlY29yZCA6IGZ1bmN0aW9u
KGN1cnJlbnRUaW1lT2Zmc2V0LCBjdXJyZW50Q29tcGxleGl0eSwgY3VycmVudEZyYW1lUmF0ZSkg
eworICAgICAgICB0aGlzLl9zYW1wbGVyLnNhbXBsZShjdXJyZW50VGltZU9mZnNldCwgW2N1cnJl
bnRDb21wbGV4aXR5LCBjdXJyZW50RnJhbWVSYXRlXSk7CisgICAgICAgIAorICAgICAgICBpZiAo
dHlwZW9mIHRoaXMuX3JlY29yZFRpbWVPZmZzZXQgPT0gInVuZGVmaW5lZCIpCisgICAgICAgICAg
ICB0aGlzLl9yZWNvcmRUaW1lT2Zmc2V0ID0gY3VycmVudFRpbWVPZmZzZXQ7CisKKyAgICAgICAg
dmFyIHN0YWdlID0gdGhpcy5fc3RhdGUuY3VycmVudFN0YWdlKCk7CisgICAgICAgIGlmIChzdGFn
ZSAhPSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQgJiYgY3VycmVudFRpbWVPZmZzZXQg
PCB0aGlzLl9yZWNvcmRUaW1lT2Zmc2V0ICsgdGhpcy5fcmVjb3JkSW50ZXJ2YWwpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5zaG93UmVzdWx0cyh0aGlzLl9zdGF0ZS5jdXJy
ZW50TWVzc2FnZSgpLCB0aGlzLl9zdGF0ZS5jdXJyZW50UHJvZ3Jlc3MoKSk7CisgICAgICAgIHRo
aXMuX3JlY29yZFRpbWVPZmZzZXQgPSBjdXJyZW50VGltZU9mZnNldDsKKyAgICB9LAorICAgIHJ1
biA6IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLnN0YXJ0KCk7CisKKyAgICAgICAgdmFyIHBy
b21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAg
ICAgICBmdW5jdGlvbiByZXNvbHZlV2hlbkZpbmlzaGVkKCkgeworICAgICAgICAgICAgaWYgKHR5
cGVvZiBzZWxmLl9zdGF0ZSAhPSAidW5kZWZpbmVkIiAmJiAoc2VsZi5fc3RhdGUuY3VycmVudFN0
YWdlKCkgPT0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcHJvbWlzZS5yZXNvbHZlKHNlbGYuX3NhbXBsZXIpOworICAgICAgICAgICAgc2V0
VGltZW91dChyZXNvbHZlV2hlbkZpbmlzaGVkLmJpbmQoc2VsZiksIDUwKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgcmVzb2x2ZVdoZW5GaW5pc2hlZCgpOworICAgICAgICByZXR1cm4g
cHJvbWlzZTsKKyAgICB9Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQgPSB7fTsKKworLy8g
VGhpcyBldmVudCBsaXN0ZW5lciBydW5zIHRoZSB0ZXN0IGlmIGl0IGlzIGxvYWRlZCBvdXRzaWRl
IHRoZSBiZW5jaG1hcmsgcnVubmVyLgord2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBm
dW5jdGlvbigpIHsKKyAgICBpZiAod2luZG93LnNlbGYgIT09IHdpbmRvdy50b3ApCisgICAgICAg
IHJldHVybjsKKyAgICB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZShudWxsLCBudWxsLCAz
MDAwMCwgNTAsIG51bGwsIG51bGwpOworICAgIHdpbmRvdy5iZW5jaG1hcmsuc3RhcnQoKTsKK30p
OworCisvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBzdWl0ZSBjb250cm9sbGVy
IHJ1bi1jYWxsYmFjayB3aGVuIHJ1bm5pbmcgdGhlIGJlbmNobWFyayBydW5uZXIuCit3aW5kb3cu
cnVuQmVuY2htYXJrID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxl
LCBwcm9ncmVzc0JhcikgeworICAgIHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKHN1aXRl
LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIHJldHVybiB3
aW5kb3cuYmVuY2htYXJrLnJ1bigpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLWltYWdl
cy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJj
ZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgy
IEBACitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc0ltYWdlKHN0YWdlKSB7CisgICAgQm91bmNpbmdQ
YXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gc3RhZ2UuY29u
dGV4dDsKKyAgICB0aGlzLl9pbWFnZUVsZW1lbnQgPSBzdGFnZS5pbWFnZUVsZW1lbnQ7Cit9CisK
K0JvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1Bh
cnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc0ltYWdlLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IEJvdW5jaW5nQ2FudmFzSW1hZ2U7CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90
eXBlLl9kcmF3ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGNlbnRlciA9IHRoaXMuY2VudGVyKCk7
CisKKyAgICB0aGlzLl9jb250ZXh0LnNhdmUoKTsKKyAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0
ZShjZW50ZXIueCwgY2VudGVyLnkpOworICAgIHRoaXMuX2NvbnRleHQucm90YXRlKHRoaXMuX3Jv
dGF0ZXIuZGVncmVlKCkgKiBNYXRoLlBJIC8gMTgwKTsKKyAgICB0aGlzLl9jb250ZXh0LnRyYW5z
bGF0ZSgtdGhpcy5fc2l6ZS54IC8gMiwgLXRoaXMuX3NpemUueSAvIDIpOworICAgIAorICAgIHRo
aXMuX2NvbnRleHQuZHJhd0ltYWdlKHRoaXMuX2ltYWdlRWxlbWVudCwgMCwgMCwgdGhpcy5fc2l6
ZS54LCB0aGlzLl9zaXplLnkpOworICAgIHRoaXMuX2NvbnRleHQucmVzdG9yZSgpOworfQorCitC
b3VuY2luZ0NhbnZhc0ltYWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRh
KSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRp
bWVEZWx0YSk7CisgICAgdGhpcy5fZHJhdygpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZh
c0ltYWdlc1N0YWdlKGVsZW1lbnQsIHBhcmFtZXRlcnMpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xl
c1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgcGFyYW1ldGVycyk7CisgICAgdGhpcy5jb250ZXh0
ID0gdGhpcy5lbGVtZW50LmdldENvbnRleHQoIjJkIik7CisgICAgdmFyIGltYWdlU3JjID0gcGFy
YW1ldGVyc1siaW1hZ2VTcmMiXSB8fCAicmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7CisgICAgCisg
ICAgdmFyIGltYWdlRWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJo
aWRkZW4iKTsKKyAgICBjb25zb2xlLmFzc2VydChpbWFnZUVsZW1lbnRzLmxlbmd0aCk7CisgICAg
ICAgIAorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW1hZ2VFbGVtZW50cy5sZW5ndGg7ICsraSkg
eworICAgICAgICBpZiAoaW1hZ2VFbGVtZW50c1tpXS5nZXRBdHRyaWJ1dGUoInNyYyIpID09IGlt
YWdlU3JjKSB7CisgICAgICAgICAgICB0aGlzLmltYWdlRWxlbWVudCA9IGltYWdlRWxlbWVudHNb
aV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCisgICAgfQorCisgICAgdGhpcy5pbWFnZUVsZW1lbnQgPSB0aGlzLmltYWdl
RWxlbWVudCB8fCBpbWFnZUVsZW1lbnRzWzBdOworfQorCitCb3VuY2luZ0NhbnZhc0ltYWdlc1N0
YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90
b3R5cGUpOworQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlOworCitCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdl
LnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcg
Qm91bmNpbmdDYW52YXNJbWFnZSh0aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNJ
bWFnZXNBbmltYXRvcihiZW5jaG1hcmspIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9y
LmNhbGwodGhpcywgYmVuY2htYXJrKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJrLl9z
dGFnZS5jb250ZXh0OworfQorCitCb3VuY2luZ0NhbnZhc0ltYWdlc0FuaW1hdG9yLnByb3RvdHlw
ZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUpOwor
Qm91bmNpbmdDYW52YXNJbWFnZXNBbmltYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3Vu
Y2luZ0NhbnZhc0ltYWdlc0FuaW1hdG9yOworCitCb3VuY2luZ0NhbnZhc0ltYWdlc0FuaW1hdG9y
LnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5fY29udGV4dC5jbGVh
clJlY3QoMCwgMCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplKCkueCwgdGhpcy5fYmVuY2ht
YXJrLl9zdGFnZS5zaXplKCkueSk7CisgICAgcmV0dXJuIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0
b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdD
YW52YXNJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBw
cm9ncmVzc0JhcikgeworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywg
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0Jv
dW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91
bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzSW1hZ2Vz
QmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVu
Y2htYXJrOworCitCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRl
U3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZh
c0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX3BhcmFtZXRlcnMpOworfQorCitCb3VuY2luZ0Nh
bnZhc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlvbigp
IHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0b3IodGhpcyk7Cit9
CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIHdpbmRvdy5iZW5jaG1h
cmsgPSBuZXcgQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ib3VuY2luZy1jYW52
YXMtc2hhcGVzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTQyIEBACitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1NoYXBlKHN0YWdlKSB7CisgICAg
Qm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9zaGFwZSA9IHN0
YWdlLnNoYXBlOworICAgIHRoaXMuX2ZpbGwgPSBzdGFnZS5maWxsOworICAgIHRoaXMuX2NsaXAg
PSBzdGFnZS5jbGlwOworICAgIHRoaXMuX2NvbnRleHQgPSBzdGFnZS5jb250ZXh0OworICAgIHRo
aXMuX2NvbG9yMCA9IHN0YWdlLnJhbmRvbUNvbG9yKCk7CisgICAgdGhpcy5fY29sb3IxID0gc3Rh
Z2UucmFuZG9tQ29sb3IoKTsgICAgCit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBl
ID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ0Nh
bnZhc1NoYXBlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzU2hhcGU7CisK
K0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLl9kcmF3ID0gZnVuY3Rpb24oKSB7CisgICAg
CisgICAgdGhpcy5fY29udGV4dC5zYXZlKCk7CisgICAgdGhpcy5fY29udGV4dC50cmFuc2xhdGUo
dGhpcy5fcG9zaXRpb24ueCwgdGhpcy5fcG9zaXRpb24ueSk7CisKKyAgICAvLyBTZXR0aW5nIHRo
ZSBmaWxsIHN0eWxlCisgICAgc3dpdGNoICh0aGlzLl9maWxsKSB7CisgICAgY2FzZSAic29saWQi
OgorICAgIGRlZmF1bHQ6CisgICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbFN0eWxlID0gdGhpcy5f
Y29sb3IwOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgImdyYWRpZW50IjoKKyAgICAgICAg
dmFyIGdyYWRpZW50ID0gdGhpcy5fY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCB0
aGlzLl9zaXplLndpZHRoKCksIDApOworICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMCwg
dGhpcy5fY29sb3IwKTsKKyAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDEsIHRoaXMuX2Nv
bG9yMSk7IAorICAgICAgICB0aGlzLl9jb250ZXh0LmZpbGxTdHlsZSA9IGdyYWRpZW50OworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyBSb3RhdGlvbiBhcm91bmQgdGhlIGNlbnRlcgor
ICAgIGlmICh0aGlzLl9zaGFwZSAhPSAiY2lyY2xlIikgeworICAgICAgICB0aGlzLl9jb250ZXh0
LnRyYW5zbGF0ZSh0aGlzLl9zaXplLnggLyAyLCB0aGlzLl9zaXplLnkgLyAyKTsKKyAgICAgICAg
dGhpcy5fY29udGV4dC5yb3RhdGUodGhpcy5fcm90YXRlci5kZWdyZWUoKSAqIE1hdGguUEkgLyAx
ODApOworICAgICAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSgtdGhpcy5fc2l6ZS54IC8gMiwg
LXRoaXMuX3NpemUueSAvIDIpOworICAgIH0KKworICAgIHZhciBjbGlwUG9pbnRzID0gbnVsbDsK
KyAgICAKKyAgICBzd2l0Y2ggKHRoaXMuX2NsaXApIHsKKyAgICBjYXNlICJzdGFyIjoKKyAgICAg
ICAgY2xpcFBvaW50cyA9ICBbCisgICAgICAgICAgICBuZXcgUG9pbnQoMC41MCwgMC4wMCksCisg
ICAgICAgICAgICBuZXcgUG9pbnQoMC4zOCwgMC4zOCksCisgICAgICAgICAgICBuZXcgUG9pbnQo
MC4wMCwgMC4zOCksCisgICAgICAgICAgICBuZXcgUG9pbnQoMC4zMCwgMC42MCksCisgICAgICAg
ICAgICBuZXcgUG9pbnQoMC4xOCwgMS4wMCksCisgICAgICAgICAgICBuZXcgUG9pbnQoMC41MCwg
MC43NSksCisgICAgICAgICAgICBuZXcgUG9pbnQoMC44MiwgMS4wMCksCisgICAgICAgICAgICBu
ZXcgUG9pbnQoMC43MCwgMC42MCksCisgICAgICAgICAgICBuZXcgUG9pbnQoMS4wMCwgMC4zOCks
CisgICAgICAgICAgICBuZXcgUG9pbnQoMC42MiwgMC4zOCkKKyAgICAgICAgXTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIAorICAgIGlmIChjbGlwUG9pbnRzKSB7CisgICAgICAgIHRoaXMu
X2NvbnRleHQuYmVnaW5QYXRoKCk7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAg
Y2xpcFBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKHBvaW50LCBpbmRleCkgeworICAgICAgICAgICAg
dmFyIHBvaW50ID0gc2VsZi5fc2l6ZS5tdWx0aXBseShwb2ludCk7CisgICAgICAgICAgICBpZiAo
IWluZGV4KQorICAgICAgICAgICAgICAgIHNlbGYuX2NvbnRleHQubW92ZVRvKHBvaW50LngsIHBv
aW50LnkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNlbGYuX2NvbnRleHQu
bGluZVRvKHBvaW50LngsIHBvaW50LnkpOworICAgICAgICB9KTsKKyAgICAgICAgdGhpcy5fY29u
dGV4dC5jbG9zZVBhdGgoKTsKKyAgICAgICAgdGhpcy5fY29udGV4dC5jbGlwKCk7CisgICAgfQor
CisgICAgLy8gU2hhcGUgZHJhd2luZworICAgIHRoaXMuX2NvbnRleHQuYmVnaW5QYXRoKCk7Cisg
ICAgCisgICAgc3dpdGNoICh0aGlzLl9zaGFwZSkgeworICAgIGNhc2UgImNpcmNsZSI6CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgdmFyIGNlbnRlciA9IHRoaXMuX3NpemUuY2VudGVyKCk7CisgICAg
ICAgIHZhciByYWRpdXMgPSBNYXRoLm1pbih0aGlzLl9zaXplLngsIHRoaXMuX3NpemUueSkgLyAy
OworICAgICAgICB0aGlzLl9jb250ZXh0LmFyYyhjZW50ZXIueCwgY2VudGVyLnksIHJhZGl1cywg
MCwgTWF0aC5QSSAqIDIsIHRydWUpOworICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2Fz
ZSAicmVjdCI6CisgICAgICAgIHRoaXMuX2NvbnRleHQucmVjdCgwLCAwLCB0aGlzLl9zaXplLndp
ZHRoKCksIHRoaXMuX3NpemUuaGVpZ2h0KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
CisgICAgdGhpcy5fY29udGV4dC5maWxsKCk7CisgICAgdGhpcy5fY29udGV4dC5yZXN0b3JlKCk7
Cit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0
aW1lRGVsdGEpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwo
dGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlzLl9kcmF3KCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5j
aW5nQ2FudmFzU2hhcGVzU3RhZ2UoZWxlbWVudCwgcGFyYW1ldGVycykgeworICAgIEJvdW5jaW5n
UGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBwYXJhbWV0ZXJzKTsKKyAgICB0aGlz
LnBhcnNlU2hhcGVQYXJhbXRlcnMocGFyYW1ldGVycyk7CisgICAgdGhpcy5jb250ZXh0ID0gdGhp
cy5lbGVtZW50LmdldENvbnRleHQoIjJkIikKK30KKworQm91bmNpbmdDYW52YXNTaGFwZXNTdGFn
ZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90
eXBlKTsKK0JvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0g
Qm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZTsKKworQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS5w
cm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IEJv
dW5jaW5nQ2FudmFzU2hhcGUodGhpcyk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzU2hh
cGVzQW5pbWF0b3IoYmVuY2htYXJrKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5j
YWxsKHRoaXMsIGJlbmNobWFyayk7CisgICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3Rh
Z2UuY29udGV4dDsKK30KKworQm91bmNpbmdDYW52YXNTaGFwZXNBbmltYXRvci5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlKTsKK0Jv
dW5jaW5nQ2FudmFzU2hhcGVzQW5pbWF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNp
bmdDYW52YXNTaGFwZXNBbmltYXRvcjsKKworQm91bmNpbmdDYW52YXNTaGFwZXNBbmltYXRvci5w
cm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkgeworICAgIHRoaXMuX2NvbnRleHQuY2xlYXJS
ZWN0KDAsIDAsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZSgpLngsIHRoaXMuX2JlbmNobWFy
ay5fc3RhZ2Uuc2l6ZSgpLnkpOworICAgIHJldHVybiBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9y
LnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcyk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ2Fu
dmFzU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3Vu
Y2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5j
aW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc1NoYXBlc0Jl
bmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNo
bWFyazsKKworQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0
YWdlID0gZnVuY3Rpb24oZWxlbWVudCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNT
aGFwZXNTdGFnZShlbGVtZW50LCB0aGlzLl9wYXJhbWV0ZXJzKTsKK30KKworQm91bmNpbmdDYW52
YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKSB7
CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yKHRoaXMpOworfQor
Cit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBv
cHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICB3aW5kb3cuYmVuY2htYXJr
ID0gbmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9ib3VuY2luZy1pbWFnZXMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ib3VuY2luZy1pbWFnZXMuanMJKHJl
dmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2JvdW5j
aW5nLWltYWdlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACitmdW5jdGlvbiBC
b3VuY2luZ0ltYWdlKHN0YWdlKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0
YWdlKTsKKworICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIp
OworICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMuX3NpemUueCArICJweCI7Cisg
ICAgdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuX3NpemUueSArICJweCI7CisgICAg
dGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgic3JjIiwgc3RhZ2UuaW1hZ2VTcmMpOworICAgIAor
ICAgIHN0YWdlLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTsKKyAgICB0aGlzLm1v
dmUoKTsKK30KKworQm91bmNpbmdJbWFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5j
aW5nUGFydGljbGUucHJvdG90eXBlKTsKK0JvdW5jaW5nSW1hZ2UucHJvdG90eXBlLmNvbnN0cnVj
dG9yID0gQm91bmNpbmdJbWFnZTsKKworQm91bmNpbmdJbWFnZS5wcm90b3R5cGUubW92ZSA9IGZ1
bmN0aW9uKCkgeworICAgIHRoaXMuZWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSAidHJhbnNsYXRl
KCIgKyB0aGlzLl9wb3NpdGlvbi54ICsgInB4LCIgKyB0aGlzLl9wb3NpdGlvbi55ICsgInB4KSAi
ICsgdGhpcy5fcm90YXRlci5yb3RhdGVaKCk7Cit9CisgICAgCitCb3VuY2luZ0ltYWdlLnByb3Rv
dHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKSB7CisgICAgQm91bmNpbmdQYXJ0aWNs
ZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7CisgICAgdGhpcy5tb3Zl
KCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nSW1hZ2VzU3RhZ2UoZWxlbWVudCwgcGFyYW1ldGVy
cykgeworICAgIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBwYXJh
bWV0ZXJzKTsKKyAgICB0aGlzLmltYWdlU3JjID0gcGFyYW1ldGVyc1siaW1hZ2VTcmMiXSB8fCAi
cmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7Cit9CisKK0JvdW5jaW5nSW1hZ2VzU3RhZ2UucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7CitC
b3VuY2luZ0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nSW1hZ2Vz
U3RhZ2U7CisKK0JvdW5jaW5nSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlID0g
ZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0ltYWdlKHRoaXMpOworfQorCitC
b3VuY2luZ0ltYWdlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQgPSBmdW5j
dGlvbihwYXJ0aWNsZSkgeworICAgIGlmIChwYXJ0aWNsZS5lbGVtZW50ICYmIHBhcnRpY2xlLmVs
ZW1lbnQucGFyZW50Tm9kZSAmJiBwYXJ0aWNsZS5lbGVtZW50LnBhcmVudE5vZGUgPT0gdGhpcy5l
bGVtZW50KQorICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQocGFydGljbGUuZWxlbWVu
dCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBv
cHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xl
c0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwg
cHJvZ3Jlc3NCYXIpOworfQorCitCb3VuY2luZ0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSk7CitCb3Vu
Y2luZ0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0ltYWdl
c0JlbmNobWFyazsKKworQm91bmNpbmdJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0
YWdlID0gZnVuY3Rpb24oZWxlbWVudCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdJbWFnZXNT
dGFnZShlbGVtZW50LCB0aGlzLl9wYXJhbWV0ZXJzKTsKK30KKword2luZG93LmJlbmNobWFya0Ns
aWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUs
IHByb2dyZXNzQmFyKSB7CisgICAgd2luZG93LmJlbmNobWFyayA9IG5ldyBCb3VuY2luZ0ltYWdl
c0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFy
KTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvYm91bmNp
bmctcGFydGljbGVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyMTEgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nUGFydGljbGVS
b3RhdGVyKHJvdGF0ZUludGVydmFsKSB7CisgICAgdGhpcy5fdGltZURlbHRhID0gMDsKKyAgICB0
aGlzLl9yb3RhdGVJbnRlcnZhbCA9IHJvdGF0ZUludGVydmFsOworfQorCitCb3VuY2luZ1BhcnRp
Y2xlUm90YXRlci5wcm90b3R5cGUgPSB7CisgICAgbmV4dCA6IGZ1bmN0aW9uKHRpbWVEZWx0YSkg
eworICAgICAgICB0aGlzLl90aW1lRGVsdGEgPSAodGhpcy5fdGltZURlbHRhICsgdGltZURlbHRh
KSAlIHRoaXMuX3JvdGF0ZUludGVydmFsOworICAgIH0sCisgICAgZGVncmVlIDogZnVuY3Rpb24o
KSB7CisgICAgICAgIHJldHVybiAoMzYwICogdGhpcy5fdGltZURlbHRhKSAvIHRoaXMuX3JvdGF0
ZUludGVydmFsOworICAgIH0sCisgICAgcm90YXRlWiA6IGZ1bmN0aW9uKCkgeworICAgICAgICBy
ZXR1cm4gInJvdGF0ZVooIiArIE1hdGguZmxvb3IodGhpcy5kZWdyZWUoKSkgKyAiZGVnKSI7Cisg
ICAgfSwKKyAgICByb3RhdGUgOiBmdW5jdGlvbigpIHsgICAgCisgICAgICAgIHJldHVybiAicm90
YXRlKCIgKyBNYXRoLmZsb29yKHRoaXMuZGVncmVlKCkpICsgIikgIjsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIEJvdW5jaW5nUGFydGljbGUoc3RhZ2UpIHsKKyAgICB0aGlzLl9zdGFnZVNpemUgPSBz
dGFnZS5zaXplKCk7CisgICAgdGhpcy5fc2l6ZSA9IHN0YWdlLnBhcnRpY2xlU2l6ZTsKKyAgICAK
KyAgICB0aGlzLl9wb3NpdGlvbiA9IHN0YWdlLnJhbmRvbVBvc2l0aW9uKCk7CisgICAgdGhpcy5f
YW5nbGUgPSBzdGFnZS5yYW5kb21BbmdsZSgpOworICAgIHRoaXMuX3ZlbG9jaXR5ID0gc3RhZ2Uu
cmFuZG9tVmVsb2NpdHkoKTsKKyAgICB0aGlzLl9yb3RhdGVyID0gc3RhZ2UucmFuZG9tUm90YXRl
cigpOworfQorCitCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZSA9IHsKKyAgICBjZW50ZXIgOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uLmFkZCh0aGlzLl9zaXpl
LmNlbnRlcigpKTsKKyAgICB9LAorICAgIGFuaW1hdGUgOiBmdW5jdGlvbih0aW1lRGVsdGEpIHsK
KyAgICAgICAgdGhpcy5fcG9zaXRpb24gPSB0aGlzLl9wb3NpdGlvbi5tb3ZlKHRoaXMuX2FuZ2xl
LCB0aGlzLl92ZWxvY2l0eSwgdGltZURlbHRhKTsKKyAgICAgICAgdGhpcy5fcm90YXRlci5uZXh0
KHRpbWVEZWx0YSk7CisKKyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBv
ZmYgcmlnaHQgc2lkZQorICAgICAgICBpZiAodGhpcy5fcG9zaXRpb24ueCArIHRoaXMuX3NpemUu
eCA+IHRoaXMuX3N0YWdlU2l6ZS54KSB7CisgICAgICAgICAgICAvLyBJZiBkaXJlY3Rpb24gaXMg
RWFzdC1Tb3V0aAorICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID49IDAgJiYgdGhpcy5fYW5n
bGUgPCBNYXRoLlBJIC8gMikKKyAgICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IE1hdGguUEkg
LSB0aGlzLl9hbmdsZTsKKyAgICAgICAgICAgIC8vIElmIGFuZ2xlIGlzIEVhc3QtTm9ydGgKKyAg
ICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX2FuZ2xlID4gTWF0aC5QSSAvIDIgKiAzKQorICAgICAg
ICAgICAgICAgIHRoaXMuX2FuZ2xlID0gdGhpcy5fYW5nbGUgLSAodGhpcy5fYW5nbGUgLSBNYXRo
LlBJIC8gMiAqIDMpICogMjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gSWYgcGFy
dGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgbGVmdCBzaWRlCisgICAgICAgIGlmICh0aGlzLl9w
b3NpdGlvbi54IDwgMCkgeworICAgICAgICAgICAgLy8gSWYgYW5nbGUgaXMgV2VzdC1Tb3V0aAor
ICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID4gTWF0aC5QSSAvIDIgJiYgdGhpcy5fYW5nbGUg
PCBNYXRoLlBJKQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0gTWF0aC5QSSAtIHRoaXMu
X2FuZ2xlOworICAgICAgICAgICAgLy8gSWYgYW5nbGUgaXMgV2VzdC1Ob3J0aAorICAgICAgICAg
ICAgZWxzZSBpZiAodGhpcy5fYW5nbGUgPiBNYXRoLlBJICYmIHRoaXMuX2FuZ2xlIDwgTWF0aC5Q
SSAvIDIgKiAzKQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0gdGhpcy5fYW5nbGUgKyAo
TWF0aC5QSSAvIDIgKiAzIC0gdGhpcy5fYW5nbGUpICogMjsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIElmIHBhcnRpY2xlIGlzIGdvaW5nIHRvIG1vdmUgb2ZmIGJvdHRvbSBzaWRlCisgICAgICAg
IGlmICh0aGlzLl9wb3NpdGlvbi55ICsgdGhpcy5fc2l6ZS55ID4gdGhpcy5fc3RhZ2VTaXplLnkp
IHsKKyAgICAgICAgICAgIC8vIElmIGRpcmVjdGlvbiBpcyBTb3V0aAorICAgICAgICAgICAgaWYg
KHRoaXMuX2FuZ2xlID4gMCAmJiB0aGlzLl9hbmdsZSA8IE1hdGguUEkpCisgICAgICAgICAgICAg
ICAgdGhpcy5fYW5nbGUgPSBNYXRoLlBJICogMiAtIHRoaXMuX2FuZ2xlOworICAgICAgICB9CisK
KyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgdG9wIHNpZGUKKyAg
ICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uLnkgPCAwKSB7CisgICAgICAgICAgICAvLyBJZiBkaXJl
Y3Rpb24gaXMgTm9ydGgKKyAgICAgICAgICAgIGlmICh0aGlzLl9hbmdsZSA+IE1hdGguUEkgJiYg
dGhpcy5fYW5nbGUgPCBNYXRoLlBJICogMikKKyAgICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9
IHRoaXMuX2FuZ2xlIC0gKHRoaXMuX2FuZ2xlIC0gTWF0aC5QSSkgKiAyOworICAgICAgICB9Cisg
ICAgfQorfQorCitmdW5jdGlvbiBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yKGJlbmNobWFyaykg
eworICAgIEFuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrKTsKK307CisKK0JvdW5jaW5nUGFy
dGljbGVzQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShBbmltYXRvci5wcm90b3R5
cGUpOworQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBC
b3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yOworCitCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLnBy
b3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKCFBbmltYXRvci5wcm90b3R5
cGUuYW5pbWF0ZS5jYWxsKHRoaXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdGhpcy5f
YmVuY2htYXJrLl9zdGFnZS5hbmltYXRlKHRoaXMudGltZURlbHRhKCkpOworICAgIHJldHVybiB0
cnVlOworfQorCitmdW5jdGlvbiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlKGVsZW1lbnQsIHBhcmFt
ZXRlcnMpIHsKKyAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50OworICAgIHRoaXMucGFydGljbGVT
aXplID0gbmV3IFBvaW50KHBhcnNlSW50KHBhcmFtZXRlcnNbInBhcnRpY2xlV2lkdGgiXSkgfHwg
MTAsIHBhcnNlSW50KHBhcmFtZXRlcnNbInBhcnRpY2xlSGVpZ2h0Il0pIHx8IDEwKTsKKyAgICB0
aGlzLnN2Z05hbWVzcGFjZSA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI7CisgICAgdGhp
cy54bGlua05hbWVzcGFjZSA9ICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIjsKKyAgICAK
KyAgICB0aGlzLl9wYXJ0aWNsZXMgPSBbXTsKKworICAgIHRoaXMuX21heFZlbG9jaXR5ID0gcGFy
c2VJbnQocGFyYW1ldGVyc1sibWF4VmVsb2NpdHkiXSkgfHwgNTAwOworICAgIHRoaXMuX21heFZl
bG9jaXR5ID0gTWF0aC5tYXgodGhpcy5fbWF4VmVsb2NpdHksIDEwMCk7Cit9CisKK0JvdW5jaW5n
UGFydGljbGVzU3RhZ2UucHJvdG90eXBlID0geworICAgIHNpemUgOiBmdW5jdGlvbigpIHsKKyAg
ICAgICAgdmFyIHN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudCk7
CisgICAgICAgIHZhciBwYWRkaW5nID0gbmV3IEluc2V0cygKKyAgICAgICAgICAgIHBhcnNlRmxv
YXQoc3R5bGVzLnBhZGRpbmdUb3ApLAorICAgICAgICAgICAgcGFyc2VGbG9hdChzdHlsZXMucGFk
ZGluZ1JpZ2h0KSwKKyAgICAgICAgICAgIHBhcnNlRmxvYXQoc3R5bGVzLnBhZGRpbmdCb3R0b20p
LAorICAgICAgICAgICAgcGFyc2VGbG9hdChzdHlsZXMucGFkZGluZ1RvcCkpOworICAgICAgICBy
ZXR1cm4gbmV3IFBvaW50KHRoaXMuZWxlbWVudC5jbGllbnRXaWR0aCAtIHBhZGRpbmcud2lkdGgo
KSwgdGhpcy5lbGVtZW50LmNsaWVudEhlaWdodCAtIHBhZGRpbmcuaGVpZ2h0KCkpOworICAgIH0s
CisgICAgcGFyc2VTaGFwZVBhcmFtdGVycyA6IGZ1bmN0aW9uKHBhcmFtZXRlcnMpIHsKKyAgICAg
ICAgdGhpcy5zaGFwZSA9IHBhcmFtZXRlcnNbInNoYXBlIl0gfHwgImNpcmNsZSI7CisgICAgICAg
IHRoaXMuZmlsbCA9IHBhcmFtZXRlcnNbImZpbGwiXSB8fCAic29saWQiOworICAgICAgICB0aGlz
LmNsaXAgPSBwYXJhbWV0ZXJzWyJjbGlwIl0gfHwgIiI7CisgICAgfSwKKyAgICByYW5kb20gOiBm
dW5jdGlvbihtaW4sIG1heCkgeworICAgICAgICByZXR1cm4gKE1hdGgucmFuZG9tKCkgKiAobWF4
IC0gbWluKSkgKyBtaW47CisgICAgfSwKKyAgICByYW5kb21JbnQgOiBmdW5jdGlvbihtaW4sIG1h
eCkgeworICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih0aGlzLnJhbmRvbShtaW4sIG1heCkpOwor
ICAgIH0sCisgICAgcmFuZG9tUG9zaXRpb24gOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIG1h
eCA9IHRoaXMuc2l6ZSgpLnN1YnRyYWN0KHRoaXMucGFydGljbGVTaXplKTsKKyAgICAgICAgcmV0
dXJuIG5ldyBQb2ludCh0aGlzLnJhbmRvbUludCgwLCBtYXgueCksIHRoaXMucmFuZG9tSW50KDAs
IG1heC55KSk7CisgICAgfSwKKyAgICByYW5kb21WZWxvY2l0eSA6IGZ1bmN0aW9uKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy5yYW5kb20odGhpcy5fbWF4VmVsb2NpdHkgLyA4LCB0aGlzLl9tYXhW
ZWxvY2l0eSk7CisgICAgfSwKKyAgICByYW5kb21BbmdsZSA6IGZ1bmN0aW9uKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy5yYW5kb20oMCwgTWF0aC5QSSAqIDIpOworICAgIH0sCisgICAgcmFuZG9t
Q29sb3IgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIG1pbiA9IDMyOworICAgICAgICB2YXIg
bWF4ID0gMjU2IC0gMzI7CisgICAgICAgIHJldHVybiAiIyIKKyAgICAgICAgICAgICsgdGhpcy5y
YW5kb21JbnQobWluLCBtYXgpLnRvU3RyaW5nKDE2KQorICAgICAgICAgICAgKyB0aGlzLnJhbmRv
bUludChtaW4sIG1heCkudG9TdHJpbmcoMTYpCisgICAgICAgICAgICArIHRoaXMucmFuZG9tSW50
KG1pbiwgbWF4KS50b1N0cmluZygxNik7CisgICAgfSwKKyAgICByYW5kb21Sb3RhdGVyIDogZnVu
Y3Rpb24oKSB7CisgICAgICAgIHJldHVybiBuZXcgQm91bmNpbmdQYXJ0aWNsZVJvdGF0ZXIodGhp
cy5yYW5kb20oMTAwMCwgMTAwMDApKTsKKyAgICB9LAorICAgIGFuaW1hdGUgOiBmdW5jdGlvbih0
aW1lRGVsdGEpIHsKKyAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuX3BhcnRpY2xlcy5s
ZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX3BhcnRpY2xlc1tpXS5hbmltYXRlKHRpbWVE
ZWx0YSk7CisgICAgfSwKKyAgICB0dW5lIDogZnVuY3Rpb24oY291bnQpIHsKKyAgICAgICAgY291
bnQgPSBjb3VudCA+IDAgPyBNYXRoLmZsb29yKGNvdW50KSA6IE1hdGguY2VpbChjb3VudCk7CisK
KyAgICAgICAgaWYgKGNvdW50ID09IDApCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fcGFydGlj
bGVzLmxlbmd0aDsKKworICAgICAgICBpZiAoY291bnQgPiAwKSB7CisgICAgICAgICAgICBjb25z
b2xlLmFzc2VydCh0eXBlb2YodGhpcy5jcmVhdGVQYXJ0aWNsZSkgPT0gImZ1bmN0aW9uIik7Cisg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICAg
ICAgdGhpcy5fcGFydGljbGVzLnB1c2godGhpcy5jcmVhdGVQYXJ0aWNsZSgpKTsKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoOworICAgICAgICB9CisKKyAgICAgICAg
Y291bnQgPSBNYXRoLm1pbigtY291bnQsIHRoaXMuX3BhcnRpY2xlcy5sZW5ndGgpOworICAgICAg
ICAKKyAgICAgICAgaWYgKHR5cGVvZih0aGlzLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCkgPT0gImZ1
bmN0aW9uIikgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQor
ICAgICAgICAgICAgICAgIHRoaXMucGFydGljbGVXaWxsQmVSZW1vdmVkKHRoaXMuX3BhcnRpY2xl
c1t0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoIC0gMSAtIGldKTsKKyAgICAgICAgfQorCisgICAgICAg
IHRoaXMuX3BhcnRpY2xlcy5zcGxpY2UoLWNvdW50LCBjb3VudCk7CisgICAgICAgIHJldHVybiB0
aGlzLl9wYXJ0aWNsZXMubGVuZ3RoOworICAgIH0sCisgICAgY2xlYXIgOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMudHVuZSgtdGhpcy5fcGFydGljbGVzLmxlbmd0aCk7CisgICAg
fQorfQorCitmdW5jdGlvbiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwg
b3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgQmVuY2htYXJrLmNhbGwo
dGhpcywgb3B0aW9ucyk7CisKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJzdGFnZSIpOworICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsIGRvY3VtZW50
LmJvZHkub2Zmc2V0V2lkdGgpOworICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCBk
b2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCk7CisKKyAgICB0aGlzLl9zdGFnZSA9IHRoaXMuY3Jl
YXRlU3RhZ2UoZWxlbWVudCk7CisgICAgdGhpcy5fYW5pbWF0b3IgPSB0aGlzLmNyZWF0ZUFuaW1h
dG9yKCk7CisgICAgdGhpcy5fc3VpdGUgPSBzdWl0ZTsKKyAgICB0aGlzLl90ZXN0ID0gdGVzdDsK
KyAgICB0aGlzLl9yZWNvcmRUYWJsZSA9IHJlY29yZFRhYmxlOworICAgIHRoaXMuX3Byb2dyZXNz
QmFyID0gcHJvZ3Jlc3NCYXI7Cit9CisKK0JvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoQmVuY2htYXJrLnByb3RvdHlwZSk7CitCb3VuY2luZ1BhcnRp
Y2xlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc0Jl
bmNobWFyazsKKworQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFu
aW1hdG9yID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1BhcnRpY2xlc0Fu
aW1hdG9yKHRoaXMpOworfQorCitCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUu
dHVuZSA9IGZ1bmN0aW9uKGNvdW50KSB7CisgICAgcmV0dXJuIHRoaXMuX3N0YWdlLnR1bmUoY291
bnQpOworfQorCitCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY2xlYXIgPSBm
dW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5fc3RhZ2UuY2xlYXIoKTsKK30KKworQm91bmNp
bmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLnNob3dSZXN1bHRzID0gZnVuY3Rpb24obWVz
c2FnZSwgcHJvZ3Jlc3MpIHsKKyAgICBpZiAoIXRoaXMuX3JlY29yZFRhYmxlIHx8ICF0aGlzLl9w
cm9ncmVzc0JhciB8fCAhdGhpcy5fc3VpdGUgfHwgIXRoaXMuX3Rlc3QpCisgICAgICAgIHJldHVy
bjsKKworICAgIHRoaXMuX3JlY29yZFRhYmxlLnNob3dSZWNvcmQodGhpcy5fc3VpdGUsIHRoaXMu
X3Rlc3QsIHRoaXMuX3NhbXBsZXIsIG1lc3NhZ2UpOworICAgIHRoaXMuX3Byb2dyZXNzQmFyLnNl
dFBvcyhwcm9ncmVzcyk7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVz
b3VyY2VzL2JvdW5jaW5nLXNoYXBlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2JvdW5jaW5nLXNoYXBlcy5qcwkocmV2aXNpb24gMCkKKysr
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvYm91bmNpbmctc2hhcGVzLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nU2hhcGUo
c3RhZ2UpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworCisgICAg
dGhpcy5lbGVtZW50ID0gdGhpcy5fY3JlYXRlU3BhbihzdGFnZSk7CisgICAgICAgIAorICAgIHN3
aXRjaCAoc3RhZ2UuZmlsbCkgeworICAgIGNhc2UgInNvbGlkIjoKKyAgICBkZWZhdWx0OgorICAg
ICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gc3RhZ2UucmFuZG9tQ29s
b3IoKTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgImdyYWRpZW50IjoKKyAg
ICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmQgPSAibGluZWFyLWdyYWRpZW50KCIg
KyBzdGFnZS5yYW5kb21Db2xvcigpICsgIiwgIiArIHN0YWdlLnJhbmRvbUNvbG9yKCkgKyAiKSI7
CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHRoaXMuX21vdmUoKTsKK30KKworQm91bmNp
bmdTaGFwZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90
eXBlKTsKK0JvdW5jaW5nU2hhcGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTaGFw
ZTsKKworQm91bmNpbmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVNwYW4gPSBmdW5jdGlvbihzdGFn
ZSkgeworICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAg
IHNwYW4uY2xhc3NOYW1lID0gc3RhZ2Uuc2hhcGUgKyAiICIgKyBzdGFnZS5jbGlwOworICAgIHNw
YW4uc3R5bGUud2lkdGggPSB0aGlzLl9zaXplLnggKyAicHgiOworICAgIHNwYW4uc3R5bGUuaGVp
Z2h0ID0gdGhpcy5fc2l6ZS55ICsgInB4IjsKKyAgICBzdGFnZS5lbGVtZW50LmFwcGVuZENoaWxk
KHNwYW4pOworICAgIHJldHVybiBzcGFuOworfQorCitCb3VuY2luZ1NoYXBlLnByb3RvdHlwZS5f
bW92ZSA9IGZ1bmN0aW9uKCkgeworICAgIHRoaXMuZWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSAi
dHJhbnNsYXRlKCIgKyB0aGlzLl9wb3NpdGlvbi54ICsgInB4LCIgKyB0aGlzLl9wb3NpdGlvbi55
ICsgInB4KSIgKyB0aGlzLl9yb3RhdGVyLnJvdGF0ZVooKTsKK30KKyAgICAKK0JvdW5jaW5nU2hh
cGUucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpIHsKKyAgICBCb3VuY2lu
Z1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0
aGlzLl9yb3RhdGVyLm5leHQodGltZURlbHRhKTsgICAgCisgICAgdGhpcy5fbW92ZSgpOworfQor
CitmdW5jdGlvbiBCb3VuY2luZ1NoYXBlc1N0YWdlKGVsZW1lbnQsIHBhcmFtZXRlcnMpIHsKKyAg
ICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgcGFyYW1ldGVycyk7
CisgICAgdGhpcy5wYXJzZVNoYXBlUGFyYW10ZXJzKHBhcmFtZXRlcnMpOworfQorCitCb3VuY2lu
Z1NoYXBlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNT
dGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0
b3IgPSBCb3VuY2luZ1NoYXBlc1N0YWdlOworCitCb3VuY2luZ1NoYXBlc1N0YWdlLnByb3RvdHlw
ZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdT
aGFwZSh0aGlzKTsKK30KKworQm91bmNpbmdTaGFwZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVX
aWxsQmVSZW1vdmVkID0gZnVuY3Rpb24ocGFydGljbGUpIHsKKyAgICBpZiAocGFydGljbGUuZWxl
bWVudCAmJiBwYXJ0aWNsZS5lbGVtZW50LnBhcmVudE5vZGUgJiYgcGFydGljbGUuZWxlbWVudC5w
YXJlbnROb2RlID09IHRoaXMuZWxlbWVudCkKKyAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNo
aWxkKHBhcnRpY2xlLmVsZW1lbnQpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ1NoYXBlc0JlbmNo
bWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7Cisg
ICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdTaGFwZXNCZW5j
aG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFy
ay5wcm90b3R5cGUpOworQm91bmNpbmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVj
dG9yID0gQm91bmNpbmdTaGFwZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nU2hhcGVzQmVuY2htYXJr
LnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICByZXR1cm4g
bmV3IEJvdW5jaW5nU2hhcGVzU3RhZ2UoZWxlbWVudCwgdGhpcy5fcGFyYW1ldGVycyk7Cit9CisK
K3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIHdpbmRvdy5iZW5jaG1hcmsg
PSBuZXcgQm91bmNpbmdTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29y
ZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzCShy
ZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ib3Vu
Y2luZy1zdmctaW1hZ2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAKK2Z1bmN0
aW9uIEJvdW5jaW5nU3ZnSW1hZ2Uoc3RhZ2UpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwo
dGhpcywgc3RhZ2UpOworCisgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKHN0YWdlLnN2Z05hbWVzcGFjZSwgImltYWdlIik7CisgICAgdGhpcy5lbGVtZW50LnNldEF0
dHJpYnV0ZSgieCIsIDApOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInkiLCAwKTsg
ICAgCisgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgid2lkdGgiLCB0aGlzLl9zaXplLngp
OworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIHRoaXMuX3NpemUueSk7
CisgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZU5TKHN0YWdlLnhsaW5rTmFtZXNwYWNlLCAi
aHJlZiIsIHN0YWdlLmltYWdlU3JjKTsKKworICAgIHN0YWdlLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5lbGVtZW50KTsKKyAgICB0aGlzLl9tb3ZlKCk7ICAgIAorfQorCitCb3VuY2luZ1N2Z0lt
YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUp
OworQm91bmNpbmdTdmdJbWFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1N2Z0lt
YWdlOworCitCb3VuY2luZ1N2Z0ltYWdlLnByb3RvdHlwZS5fbW92ZSA9IGZ1bmN0aW9uKCkgewor
ICAgIHZhciBjZW50ZXIgPSB0aGlzLmNlbnRlcigpOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRy
aWJ1dGUoInRyYW5zZm9ybSIsIAorICAgICAgICAidHJhbnNsYXRlKCIgKyBjZW50ZXIueCArICIs
ICIgKyBjZW50ZXIueSArICIpICIKKyAgICAgICAgKyB0aGlzLl9yb3RhdGVyLnJvdGF0ZSgpCisg
ICAgICAgICsgInRyYW5zbGF0ZSgiICsgLXRoaXMuX3NpemUueCAvIDIgKyAiLCAiICsgLXRoaXMu
X3NpemUueSAvIDIgKyAiKSAiKTsKK30KKworQm91bmNpbmdTdmdJbWFnZS5wcm90b3R5cGUuYW5p
bWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkgeworICAgIEJvdW5jaW5nUGFydGljbGUucHJvdG90
eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEpOworICAgIHRoaXMuX21vdmUoKTsKK30K
KworZnVuY3Rpb24gQm91bmNpbmdTdmdJbWFnZXNTdGFnZShlbGVtZW50LCBwYXJhbWV0ZXJzKSB7
CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIHBhcmFtZXRl
cnMpOworICAgIHRoaXMuaW1hZ2VTcmMgPSBwYXJhbWV0ZXJzWyJpbWFnZVNyYyJdIHx8ICJyZXNv
dXJjZXMveWluLXlhbmcuc3ZnIjsKK30KKworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5
cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0Jv
dW5jaW5nU3ZnSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdJ
bWFnZXNTdGFnZTsKKworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFy
dGljbGUgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nU3ZnSW1hZ2UodGhp
cyk7Cit9CisKK0JvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJl
UmVtb3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xlKSB7CisgICAgaWYgKHBhcnRpY2xlLmVsZW1lbnQg
JiYgcGFydGljbGUuZWxlbWVudC5wYXJlbnROb2RlICYmIHBhcnRpY2xlLmVsZW1lbnQucGFyZW50
Tm9kZSA9PSB0aGlzLmVsZW1lbnQpCisgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZChw
YXJ0aWNsZS5lbGVtZW50KTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1h
cmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAg
IEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nU3ZnSW1hZ2VzQmVu
Y2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1h
cmsucHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrOworCitCb3VuY2luZ1N2Z0ltYWdl
c0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KSB7Cisg
ICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX3BhcmFt
ZXRlcnMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICB3aW5k
b3cuYmVuY2htYXJrID0gbmV3IEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvYm91bmNpbmct
c3ZnLXNoYXBlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE2MSBAQAorZnVuY3Rpb24gQm91bmNpbmdTdmdTaGFwZShzdGFnZSkgeworICAgIEJvdW5j
aW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CisgICAgdGhpcy5fc2hhcGUgPSBzdGFnZS5z
aGFwZTsKKyAgICAKKyAgICBzd2l0Y2ggKHRoaXMuX3NoYXBlKSB7CisgICAgY2FzZSAiY2lyY2xl
IjoKKyAgICBkZWZhdWx0OgorICAgICAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLl9jcmVhdGVDaXJj
bGUoc3RhZ2UpOworICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSAicmVjdCI6Cisg
ICAgICAgIHRoaXMuZWxlbWVudCA9IHRoaXMuX2NyZWF0ZVJlY3Qoc3RhZ2UpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHN0YWdlLmNsaXApIHsKKyAgICBjYXNlICJzdGFy
IjoKKyAgICAgICAgc3RhZ2UuZW5zdXJlQ2xpcFN0YXJJc0NyZWF0ZWQoKTsgICAgCisgICAgICAg
IHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImNsaXAtcGF0aCIsICJ1cmwoI3N0YXItY2xpcCki
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dpdGNoIChzdGFnZS5maWxsKSB7Cisg
ICAgY2FzZSAic29saWQiOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHRoaXMuZWxlbWVudC5zZXRB
dHRyaWJ1dGUoImZpbGwiLCBzdGFnZS5yYW5kb21Db2xvcigpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgIAorICAgIGNhc2UgImdyYWRpZW50IjoKKyAgICAgICAgdmFyIGdyYWRpZW50ID0gc3Rh
Z2UuY3JlYXRlR3JhZGllbnQoMik7CisgICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUo
ImZpbGwiLCAidXJsKCMiICsgZ3JhZGllbnQuZ2V0QXR0cmlidXRlKCJpZCIpICsgIikiKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgdGhpcy5fbW92ZSgpOyAgICAKK30KKworQm91bmNp
bmdTdmdTaGFwZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJv
dG90eXBlKTsKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNp
bmdTdmdTaGFwZTsKKworQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZUNpcmNsZSA9
IGZ1bmN0aW9uKHN0YWdlKSB7CisgICAgdmFyIGNpcmNsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUyhzdGFnZS5zdmdOYW1lc3BhY2UsICJjaXJjbGUiKTsKKyAgICBjaXJjbGUuc2V0QXR0cmli
dXRlKCJjeCIsIHRoaXMuX3NpemUueCAvIDIpOworICAgIGNpcmNsZS5zZXRBdHRyaWJ1dGUoImN5
IiwgdGhpcy5fc2l6ZS55IC8gMik7ICAgIAorICAgIGNpcmNsZS5zZXRBdHRyaWJ1dGUoInIiLCBN
YXRoLm1pbih0aGlzLl9zaXplLngsIHRoaXMuX3NpemUueSkgLyAyKTsKKyAgICBzdGFnZS5lbGVt
ZW50LmFwcGVuZENoaWxkKGNpcmNsZSk7CisgICAgcmV0dXJuIGNpcmNsZTsKK30KKworQm91bmNp
bmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVJlY3QgPSBmdW5jdGlvbihzdGFnZSkgeworICAg
IHZhciByZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN0YWdlLnN2Z05hbWVzcGFjZSwg
InJlY3QiKTsKKyAgICByZWN0LnNldEF0dHJpYnV0ZSgieCIsIDApOworICAgIHJlY3Quc2V0QXR0
cmlidXRlKCJ5IiwgMCk7ICAgIAorICAgIHJlY3Quc2V0QXR0cmlidXRlKCJ3aWR0aCIsIHRoaXMu
X3NpemUueCk7CisgICAgcmVjdC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIHRoaXMuX3NpemUueSk7
CisgICAgc3RhZ2UuZWxlbWVudC5hcHBlbmRDaGlsZChyZWN0KTsgICAgCisgICAgcmV0dXJuIHJl
Y3Q7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLl9tb3ZlID0gZnVuY3Rpb24oKSB7
CisgICAgdmFyIHRyYW5zZm9ybTsKKyAgICBpZiAodGhpcy5fc2hhcGUgPT0gImNpcmNsZSIpCisg
ICAgICAgIHRyYW5zZm9ybSA9ICJ0cmFuc2xhdGUoIiArIHRoaXMuX3Bvc2l0aW9uLnggKyAiLCAi
ICsgdGhpcy5fcG9zaXRpb24ueSArICIpIjsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIGNlbnRl
ciA9IHRoaXMuY2VudGVyKCk7CisgICAgICAgIHRyYW5zZm9ybSAgPSAidHJhbnNsYXRlKCIgKyBj
ZW50ZXIueCArICIsICIgKyBjZW50ZXIueSArICIpICI7CisgICAgICAgIHRyYW5zZm9ybSArPSB0
aGlzLl9yb3RhdGVyLnJvdGF0ZSgpOworICAgICAgICB0cmFuc2Zvcm0gKz0gInRyYW5zbGF0ZSgi
ICsgLXRoaXMuX3NpemUud2lkdGgoKSAvIDIgKyAiLCAiICsgLXRoaXMuX3NpemUuaGVpZ2h0KCkg
LyAyICsgIikiOworICAgIH0KKyAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJ0cmFuc2Zv
cm0iLCB0cmFuc2Zvcm0pOworfQorCitCb3VuY2luZ1N2Z1NoYXBlLnByb3RvdHlwZS5hbmltYXRl
ID0gZnVuY3Rpb24odGltZURlbHRhKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUu
YW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7CisgICAgdGhpcy5fbW92ZSgpOworfQorCitm
dW5jdGlvbiBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlKGVsZW1lbnQsIHBhcmFtZXRlcnMpIHsKKyAg
ICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgcGFyYW1ldGVycyk7
CisgICAgdGhpcy5wYXJzZVNoYXBlUGFyYW10ZXJzKHBhcmFtZXRlcnMpOworfQorCitCb3VuY2lu
Z1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNs
ZXNTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitCb3VuY2luZ1N2Z1No
YXBlc1N0YWdlLnByb3RvdHlwZS5lbnN1cmVDbGlwU3RhcklzQ3JlYXRlZCA9IGZ1bmN0aW9uKCkg
eworICAgIHJldHVybiB0aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvcigiI3N0YXItY2xpcCIpIHx8
IHRoaXMuX2NyZWF0ZUNsaXBTdGFyKCk7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJv
dG90eXBlLmVuc3VyZURlZnNJc0NyZWF0ZWQgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhp
cy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoImRlZnMiKSB8fCB0aGlzLl9jcmVhdGVEZWZzKCk7Cit9
CisKK0JvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZUdyYWRpZW50ID0gZnVu
Y3Rpb24oc3RvcHMpIHsKKyAgICB2YXIgZ3JhZGllbnQgID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKHRoaXMuc3ZnTmFtZXNwYWNlLCAibGluZWFyR3JhZGllbnQiKTsKKyAgICAKKyAgICBpZiAo
dHlwZW9mIHRoaXMuX2dhZGllbnRzQ291bnQgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICB0aGlz
Ll9nYWRpZW50c0NvdW50ID0gMDsgICAgCisgICAgZ3JhZGllbnQuc2V0QXR0cmlidXRlKCJpZCIs
ICJnYWRpZW50LSIgKyArK3RoaXMuX2dhZGllbnRzQ291bnQpOworICAgIAorICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgc3RvcHM7ICsraSkgeworICAgICAgICB2YXIgc3RvcCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUyh0aGlzLnN2Z05hbWVzcGFjZSwgInN0b3AiKTsKKyAgICAgICAgc3RvcC5z
ZXRBdHRyaWJ1dGUoIm9mZnNldCIsIGkgKiAxMDAgLyBzdG9wcyArICIlIik7CisgICAgICAgIHN0
b3Auc2V0QXR0cmlidXRlKCJzdG9wLWNvbG9yIiwgdGhpcy5yYW5kb21Db2xvcigpKTsKKyAgICAg
ICAgZ3JhZGllbnQuYXBwZW5kQ2hpbGQoc3RvcCk7CisgICAgfQorCisgICAgdGhpcy5lbnN1cmVE
ZWZzSXNDcmVhdGVkKCkuYXBwZW5kQ2hpbGQoZ3JhZGllbnQpOworICAgIHJldHVybiBncmFkaWVu
dDsKK30KKworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuX2NyZWF0ZURlZnMgPSBm
dW5jdGlvbigpIHsKKyAgICB2YXIgZGVmcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0aGlz
LnN2Z05hbWVzcGFjZSwiZGVmcyIpOworICAgIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUoZGVm
cywgdGhpcy5lbGVtZW50LmZpcnN0Q2hpbGQpOworICAgIHJldHVybiBkZWZzOworfQorICAgIAor
Qm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuX2NyZWF0ZUNsaXBTdGFyID0gZnVuY3Rp
b24oKSB7CisgICAgdmFyIGNsaXBQYXRoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHRoaXMu
c3ZnTmFtZXNwYWNlLCAiY2xpcFBhdGgiKTsKKyAgICBjbGlwUGF0aC5zZXRBdHRyaWJ1dGUoImlk
IiwgInN0YXItY2xpcCIpOworICAgIGNsaXBQYXRoLnNldEF0dHJpYnV0ZSgiY2xpcFBhdGhVbml0
cyIsICJvYmplY3RCb3VuZGluZ0JveCIpOworICAgIAorICAgIHZhciBwYXRoID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKHRoaXMuc3ZnTmFtZXNwYWNlLCAicGF0aCIpOworICAgIHBhdGguc2V0
QXR0cmlidXRlKCJkIiwgIk0uNTAsMEwuMzgsLjM4TDAsLjM4TC4zMCwuNjBMLjE4LDFMLjUwLC43
NUwuODIsMUwuNzAsLjYwTDEsLjM4TC42MiwuMzh6Iik7CisgICAgY2xpcFBhdGguYXBwZW5kQ2hp
bGQocGF0aCk7CisgICAgCisgICAgdGhpcy5lbnN1cmVEZWZzSXNDcmVhdGVkKCkuYXBwZW5kQ2hp
bGQoY2xpcFBhdGgpOworICAgIHJldHVybiBjbGlwUGF0aDsKK30KKworQm91bmNpbmdTdmdTaGFw
ZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1
cm4gbmV3IEJvdW5jaW5nU3ZnU2hhcGUodGhpcyk7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGVzU3Rh
Z2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xlKSB7
CisgICAgaWYgKCFwYXJ0aWNsZS5lbGVtZW50IHx8ICFwYXJ0aWNsZS5lbGVtZW50LnBhcmVudE5v
ZGUgfHwgcGFydGljbGUuZWxlbWVudC5wYXJlbnROb2RlICE9IHRoaXMuZWxlbWVudCkKKyAgICAg
ICAgcmV0dXJuOworICAgICAgICAKKyAgICB2YXIgZmlsbCA9IHBhcnRpY2xlLmVsZW1lbnQuZ2V0
QXR0cmlidXRlKCJmaWxsIik7CisgICAgaWYgKGZpbGwuaW5kZXhPZigidXJsKCMiKSA9PSAwKSB7
CisgICAgICAgIHZhciBncmFkaWVudCA9IHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKGZpbGwu
c3Vic3RyaW5nKDQsIGZpbGwubGVuZ3RoIC0gMSkpOworICAgICAgICB0aGlzLmVuc3VyZURlZnNJ
c0NyZWF0ZWQoKS5yZW1vdmVDaGlsZChncmFkaWVudCk7CisgICAgfQorICAgIAorICAgIHRoaXMu
ZWxlbWVudC5yZW1vdmVDaGlsZChwYXJ0aWNsZS5lbGVtZW50KTsKK30KKworZnVuY3Rpb24gQm91
bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxl
LCBwcm9ncmVzc0JhcikgeworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhp
cywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisK
K0JvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91
bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnU2hhcGVzQmVu
Y2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJr
OworCitCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBm
dW5jdGlvbihlbGVtZW50KSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdl
KGVsZW1lbnQsIHRoaXMuX3BhcmFtZXRlcnMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50
LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpIHsKKyAgICB3aW5kb3cuYmVuY2htYXJrID0gbmV3IEJvdW5jaW5nU3ZnU2hhcGVz
QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
OworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9ncmFwaC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2dy
YXBoLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291
cmNlcy9ncmFwaC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0MSBAQAorZnVuY3Rpb24g
Z3JhcGgoc2VsZWN0b3IsIHNpemUsIG1hcmdpbnMsIGF4aXNlcywgc2FtcGxlcywgc2FtcGxpbmdU
aW1lT2Zmc2V0KSB7CisKKyAgICB2YXIgZWxlbWVudCA9IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKHNlbGVjdG9yKTsKKyAgICB3aGlsZSAoZWxlbWVudC5maXJzdENoaWxkKQorICAg
ICAgICBlbGVtZW50LnJlbW92ZUNoaWxkKGVsZW1lbnQuZmlyc3RDaGlsZCk7CisKKyAgICB2YXIg
eCA9IGQzLnNjYWxlLmxpbmVhcigpCisgICAgICAgICAgICAucmFuZ2UoWzAsIHNpemUud2lkdGgo
KV0pCisgICAgICAgICAgICAuZG9tYWluKGQzLmV4dGVudChzYW1wbGVzLCBmdW5jdGlvbihkKSB7
IHJldHVybiBkLnRpbWVPZmZzZXQ7IH0pKTsgICAgICAgICAgICAKKworICAgIHZhciB5TGVmdCA9
IGQzLnNjYWxlLmxpbmVhcigpCisgICAgICAgICAgICAucmFuZ2UoW3NpemUuaGVpZ2h0KCksIDBd
KQorICAgICAgICAgICAgLmRvbWFpbihbMCwgZDMubWF4KHNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsg
cmV0dXJuIGQudmFsdWVzWzBdOyB9KV0pOworCisgICAgdmFyIHlSaWdodCA9IGQzLnNjYWxlLmxp
bmVhcigpCisgICAgICAgICAgICAucmFuZ2UoW3NpemUuaGVpZ2h0KCksIDBdKQorICAgICAgICAg
ICAgLmRvbWFpbihbMCwgZDMubWF4KHNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudmFs
dWVzWzFdOyB9KV0pOworCisgICAgdmFyIHhBeGlzID0gZDMuc3ZnLmF4aXMoKQorICAgICAgICAg
ICAgLnNjYWxlKHgpCisgICAgICAgICAgICAub3JpZW50KCJib3R0b20iKTsKKworICAgIHZhciB5
QXhpc0xlZnQgPSBkMy5zdmcuYXhpcygpCisgICAgICAgICAgICAuc2NhbGUoeUxlZnQpCisgICAg
ICAgICAgICAub3JpZW50KCJsZWZ0Iik7CisKKyAgICB2YXIgeUF4aXNSaWdodCA9IGQzLnN2Zy5h
eGlzKCkKKyAgICAgICAgICAgIC5zY2FsZSh5UmlnaHQpCisgICAgICAgICAgICAub3JpZW50KCJy
aWdodCIpOworCisgICAgdmFyIGxpbmVMZWZ0ID0gZDMuc3ZnLmxpbmUoKQorICAgICAgICAgICAg
LngoZnVuY3Rpb24oZCkgeyByZXR1cm4geChkLnRpbWVPZmZzZXQpOyB9KQorICAgICAgICAgICAg
LnkoZnVuY3Rpb24oZCkgeyByZXR1cm4geUxlZnQoZC52YWx1ZXNbMF0pOyB9KTsKKworICAgIHZh
ciBsaW5lUmlnaHQgPSBkMy5zdmcubGluZSgpCisgICAgICAgICAgICAueChmdW5jdGlvbihkKSB7
IHJldHVybiB4KGQudGltZU9mZnNldCk7IH0pCisgICAgICAgICAgICAueShmdW5jdGlvbihkKSB7
IHJldHVybiB5UmlnaHQoZC52YWx1ZXNbMV0pOyB9KTsKKworICAgIHNhbXBsZXMuZm9yRWFjaChm
dW5jdGlvbihkKSB7CisgICAgICAgIGQudGltZU9mZnNldCA9ICtkLnRpbWVPZmZzZXQ7CisgICAg
ICAgIGQudmFsdWVzWzBdID0gK2QudmFsdWVzWzBdOworICAgICAgICBkLnZhbHVlc1sxXSA9ICtk
LnZhbHVlc1sxXTsgICAgICAgIAorICAgIH0pOyAgICAKKworICAgIHZhciBzYW1wbGVkU2FtcGxl
cyA9IHNhbXBsZXMuZmlsdGVyKGZ1bmN0aW9uKGQpIHsKKyAgICAgICAgcmV0dXJuIGQudGltZU9m
ZnNldCA+PSBzYW1wbGluZ1RpbWVPZmZzZXQ7CisgICAgfSk7CisgICAgCisgICAgdmFyIG1lYW5M
ZWZ0ID0gZDMubWVhbihzYW1wbGVkU2FtcGxlcywgZnVuY3Rpb24oZCkgeworICAgICAgICByZXR1
cm4gK2QudmFsdWVzWzBdOworICAgIH0pOworCisgICAgdmFyIG1lYW5SaWdodCA9IGQzLm1lYW4o
c2FtcGxlZFNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsKKyAgICAgICAgcmV0dXJuICtkLnZhbHVlc1sx
XTsKKyAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB2YXIgc3ZnID0g
ZDMuc2VsZWN0KHNlbGVjdG9yKS5hcHBlbmQoInN2ZyIpCisgICAgICAgIC5hdHRyKCJ3aWR0aCIs
IHNpemUud2lkdGgoKSArIG1hcmdpbnMubGVmdCArIG1hcmdpbnMucmlnaHQpCisgICAgICAgIC5h
dHRyKCJoZWlnaHQiLCBzaXplLmhlaWdodCgpICsgbWFyZ2lucy50b3AgKyBtYXJnaW5zLmJvdHRv
bSkKKyAgICAgICAgLmFwcGVuZCgiZyIpCisgICAgICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwg
InRyYW5zbGF0ZSgiICsgbWFyZ2lucy5sZWZ0ICsgIiwiICsgbWFyZ2lucy50b3AgKyAiKSIpOwor
CisgICAgLy8geC1heGlzCisgICAgc3ZnLmFwcGVuZCgiZyIpCisgICAgICAgIC5hdHRyKCJjbGFz
cyIsICJ4IGF4aXMiKQorICAgICAgICAuYXR0cigiZmlsbCIsICJyZ2IoMjM1LCAyMzUsIDIzNSki
KQorICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgwLCIgKyBzaXplLmhlaWdo
dCgpICsgIikiKQorICAgICAgICAuY2FsbCh4QXhpcykKKyAgICAgICAgLmFwcGVuZCgidGV4dCIp
CisgICAgICAgICAgICAuYXR0cigiY2xhc3MiLCAibGFiZWwiKQorICAgICAgICAgICAgLmF0dHIo
IngiLCBzaXplLndpZHRoKCkpCisgICAgICAgICAgICAuYXR0cigieSIsIC02KQorICAgICAgICAg
ICAgLmF0dHIoImZpbGwiLCAicmdiKDIzNSwgMjM1LCAyMzUpIikKKyAgICAgICAgICAgIC5zdHls
ZSgidGV4dC1hbmNob3IiLCAiZW5kIikKKyAgICAgICAgICAgIC50ZXh0KCJ0aW1lIik7CisgICAg
ICAgICAgICAgICAgIAorICAgIC8vIHlMZWZ0LWF4aXMKKyAgICBzdmcuYXBwZW5kKCJnIikKKyAg
ICAgICAgLmF0dHIoImNsYXNzIiwgInkgYXhpcyIpCisgICAgICAgIC5hdHRyKCJmaWxsIiwgInN0
ZWVsYmx1ZSIpCisgICAgICAgIC5jYWxsKHlBeGlzTGVmdCkKKyAgICAgICAgLmFwcGVuZCgidGV4
dCIpCisgICAgICAgICAgICAuYXR0cigiY2xhc3MiLCAibGFiZWwiKQorICAgICAgICAgICAgLmF0
dHIoInRyYW5zZm9ybSIsICJyb3RhdGUoLTkwKSIpCisgICAgICAgICAgICAuYXR0cigieSIsIDYp
CisgICAgICAgICAgICAuYXR0cigiZmlsbCIsICJzdGVlbGJsdWUiKQorICAgICAgICAgICAgLmF0
dHIoImR5IiwgIi43MWVtIikKKyAgICAgICAgICAgIC5zdHlsZSgidGV4dC1hbmNob3IiLCAiZW5k
IikKKyAgICAgICAgICAgIC50ZXh0KGF4aXNlc1swXSk7CisKKyAgICAvLyB5UmlnaHQtYXhpcwor
ICAgIHN2Zy5hcHBlbmQoImciKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAieSBheGlzIikKKyAg
ICAgICAgLmF0dHIoImZpbGwiLCAicmVkIikKKyAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJ0
cmFuc2xhdGUoIiArIHNpemUud2lkdGgoKSArICIsIDApIikKKyAgICAgICAgLmNhbGwoeUF4aXNS
aWdodCkKKyAgICAgICAgLmFwcGVuZCgidGV4dCIpCisgICAgICAgICAgICAuYXR0cigiY2xhc3Mi
LCAibGFiZWwiKQorICAgICAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJyb3RhdGUoLTkwKSIp
CisgICAgICAgICAgICAuYXR0cigieSIsIDYpCisgICAgICAgICAgICAuYXR0cigiZmlsbCIsICJy
ZWQiKQorICAgICAgICAgICAgLmF0dHIoImR5IiwgIi43MWVtIikKKyAgICAgICAgICAgIC5zdHls
ZSgidGV4dC1hbmNob3IiLCAiZW5kIikKKyAgICAgICAgICAgIC50ZXh0KGF4aXNlc1sxXSk7CisK
KyAgICAvLyBsZWZ0LW1lYW4KKyAgICBzdmcuYXBwZW5kKCJzdmc6bGluZSIpCisgICAgICAgIC5h
dHRyKCJ4MSIsIHgoMCkpCisgICAgICAgIC5hdHRyKCJ4MiIsIHNpemUud2lkdGgoKSkKKyAgICAg
ICAgLmF0dHIoInkxIiwgeUxlZnQobWVhbkxlZnQpKQorICAgICAgICAuYXR0cigieTIiLCB5TGVm
dChtZWFuTGVmdCkpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJsZWZ0LW1lYW4iKTsKKworICAg
IC8vIHJpZ2h0LW1lYW4KKyAgICBzdmcuYXBwZW5kKCJzdmc6bGluZSIpCisgICAgICAgIC5hdHRy
KCJ4MSIsIHgoMCkpCisgICAgICAgIC5hdHRyKCJ4MiIsIHNpemUud2lkdGgoKSkKKyAgICAgICAg
LmF0dHIoInkxIiwgeVJpZ2h0KG1lYW5SaWdodCkpCisgICAgICAgIC5hdHRyKCJ5MiIsIHlSaWdo
dChtZWFuUmlnaHQpKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAicmlnaHQtbWVhbiIpOyAgICAg
ICAgCisKKyAgICAvLyBzYW1wbGluZ1RpbWVPZmZzZXQKKyAgICBzdmcuYXBwZW5kKCJsaW5lIikK
KyAgICAgICAgLmF0dHIoIngxIiwgeChzYW1wbGluZ1RpbWVPZmZzZXQpKQorICAgICAgICAuYXR0
cigieDIiLCB4KHNhbXBsaW5nVGltZU9mZnNldCkpCisgICAgICAgIC5hdHRyKCJ5MSIsIHlMZWZ0
KDApKQorICAgICAgICAuYXR0cigieTIiLCB5TGVmdCh5QXhpc0xlZnQuc2NhbGUoKS5kb21haW4o
KVsxXSkpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJzbWFwbGUtdGltZSIpOworCisgICAgLy8g
bGVmdC1zYW1wbGVzCisgICAgc3ZnLmFwcGVuZCgicGF0aCIpCisgICAgICAgIC5kYXR1bShzYW1w
bGVzKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAibGVmdC1zYW1wbGVzIikKKyAgICAgICAgLmF0
dHIoImQiLCBsaW5lTGVmdCk7CisgICAgICAgIAorICAgIC8vIHJpZ2h0LXNhbXBsZXMKKyAgICBz
dmcuYXBwZW5kKCJwYXRoIikKKyAgICAgICAgLmRhdHVtKHNhbXBsZXMpCisgICAgICAgIC5hdHRy
KCJjbGFzcyIsICJyaWdodC1zYW1wbGVzIikKKyAgICAgICAgLmF0dHIoImQiLCBsaW5lUmlnaHQp
OworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9tYWluLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvbWFp
bi5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJj
ZXMvbWFpbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyMiBAQAorZnVuY3Rpb24gUG9p
bnQoeCwgeSkgeworICAgIHRoaXMueCA9IHg7CisgICAgdGhpcy55ID0geTsKK30KKworUG9pbnQu
cHJvdG90eXBlID0geworICAgIHdpZHRoIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0
aGlzLng7CisgICAgfSwKKyAgICBoZWlnaHQgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMueTsKKyAgICB9LAorICAgIGNlbnRlciA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1
cm4gbmV3IFBvaW50KHRoaXMueCAvIDIsIHRoaXMueSAvIDIpOworICAgIH0sCisgICAgYWRkIDog
ZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLnggKyBvdGhl
ci54LCB0aGlzLnkgKyBvdGhlci55KTsKKyAgICB9LCAgICAKKyAgICBzdWJ0cmFjdCA6IGZ1bmN0
aW9uKG90aGVyKSB7CisgICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy54IC0gb3RoZXIueCwg
dGhpcy55IC0gb3RoZXIueSk7CisgICAgfSwKKyAgICBtdWx0aXBseSA6IGZ1bmN0aW9uKG90aGVy
KSB7CisgICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy54ICogb3RoZXIueCwgdGhpcy55ICog
b3RoZXIueSk7CisgICAgfSwKKyAgICBtb3ZlIDogZnVuY3Rpb24oYW5nbGUsIHZlbG9jaXR5LCB0
aW1lRGVsdGEpIHsKKyAgICAgICAgdmFyIHggPSB0aGlzLnggKyBNYXRoLmNvcyhhbmdsZSkgKiB2
ZWxvY2l0eSAqICh0aW1lRGVsdGEgLyAxMDAwKTsKKyAgICAgICAgdmFyIHkgPSB0aGlzLnkgKyBN
YXRoLnNpbihhbmdsZSkgKiB2ZWxvY2l0eSAqICh0aW1lRGVsdGEgLyAxMDAwKTsKKyAgICAgICAg
cmV0dXJuIG5ldyBQb2ludCh4LCB5KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEluc2V0cyh0b3As
IHJpZ2h0LCBib3R0b20sIGxlZnQpIHsKKyAgICB0aGlzLnRvcCA9IHRvcDsKKyAgICB0aGlzLnJp
Z2h0ID0gcmlnaHQ7CisgICAgdGhpcy5ib3R0b20gPSBib3R0b207CisgICAgdGhpcy5sZWZ0ID0g
bGVmdDsKK30KKworSW5zZXRzLnByb3RvdHlwZSA9IHsKKyAgICB3aWR0aCA6IGZ1bmN0aW9uKCkg
eworICAgICAgICByZXR1cm4gdGhpcy5sZWZ0ICsgdGhpcy5yaWdodDsKKyAgICB9LAorICAgIGhl
aWdodCA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy50b3AgKyB0aGlzLmJvdHRv
bTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIFNpbXBsZVByb21pc2UoKSB7CisgICAgdGhpcy5fY2hh
aW5lZFByb21pc2UgPSBudWxsOworICAgIHRoaXMuX2NhbGxiYWNrID0gbnVsbDsKK30KKworU2lt
cGxlUHJvbWlzZS5wcm90b3R5cGUudGhlbiA9IGZ1bmN0aW9uIChjYWxsYmFjaykgeworICAgIGlm
ICh0aGlzLl9jYWxsYmFjaykKKyAgICAgICAgdGhyb3cgIlNpbXBsZVByb21pc2UgZG9lc24ndCBz
dXBwb3J0IG11bHRpcGxlIGNhbGxzIHRvIHRoZW4iOworICAgIHRoaXMuX2NhbGxiYWNrID0gY2Fs
bGJhY2s7CisgICAgdGhpcy5fY2hhaW5lZFByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAg
ICAKKyAgICBpZiAodGhpcy5fcmVzb2x2ZWQpCisgICAgICAgIHRoaXMucmVzb2x2ZSh0aGlzLl9y
ZXNvbHZlZFZhbHVlKTsKKworICAgIHJldHVybiB0aGlzLl9jaGFpbmVkUHJvbWlzZTsKK30KKwor
U2ltcGxlUHJvbWlzZS5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uICh2YWx1ZSkgeworICAg
IGlmICghdGhpcy5fY2FsbGJhY2spIHsKKyAgICAgICAgdGhpcy5fcmVzb2x2ZWQgPSB0cnVlOwor
ICAgICAgICB0aGlzLl9yZXNvbHZlZFZhbHVlID0gdmFsdWU7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICB2YXIgcmVzdWx0ID0gdGhpcy5fY2FsbGJhY2sodmFsdWUpOworICAgIGlmIChy
ZXN1bHQgaW5zdGFuY2VvZiBTaW1wbGVQcm9taXNlKSB7CisgICAgICAgIHZhciBjaGFpbmVkUHJv
bWlzZSA9IHRoaXMuX2NoYWluZWRQcm9taXNlOworICAgICAgICByZXN1bHQudGhlbihmdW5jdGlv
biAocmVzdWx0KSB7IGNoYWluZWRQcm9taXNlLnJlc29sdmUocmVzdWx0KTsgfSk7CisgICAgfSBl
bHNlCisgICAgICAgIHRoaXMuX2NoYWluZWRQcm9taXNlLnJlc29sdmUocmVzdWx0KTsKK30KKwor
dmFyIE1hdHJpeCA9IHt9OworCitNYXRyaXguaW5pdCA9IGZ1bmN0aW9uKG0sIG4sIHYpIHsKKyAg
ICByZXR1cm4gQXJyYXkobSAqIG4pLmZpbGwodik7Cit9CisKK01hdHJpeC56ZXJvcyA9IGZ1bmN0
aW9uKG0sIG4pIHsKKyAgICByZXR1cm4gTWF0cml4LmluaXQobSwgbiwgMCk7Cit9CisKK01hdHJp
eC5vbmVzID0gZnVuY3Rpb24obSwgbikgeworICAgIHJldHVybiBNYXRyaXguaW5pdChtLCBuLCAx
KTsKK30KKworTWF0cml4LmlkZW50aXR5ID0gZnVuY3Rpb24obikgeworICAgIHZhciBvdXQgPSBu
ZXcgTWF0cml4Lnplcm9zKG4sIG4pOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKQor
ICAgICAgICBvdXRbaSAqIG4gKyBpXSA9IDE7CisgICAgcmV0dXJuIG91dDsKK30KKworTWF0cml4
LnN0ciA9IGZ1bmN0aW9uKEEsIG4sIG0pIHsKKyAgICB2YXIgb3V0ID0gKG0gPiAxICYmIG4gPiAx
ID8gIk1hdHJpeFsiICsgbiArICIsICIgKyBtIDogIlZlY3RvclsiICsgbSAqIG4pICsgIl0gPSBb
IjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4gKiBtOyArK2kpIHsKKyAgICAgICAgb3V0ICs9
IEFbaV07CisgICAgICAgIGlmIChpIDwgbiAqIG0gLSAxKQorICAgICAgICAgICAgb3V0ICs9ICIs
ICI7CisgICAgfSAgICAgICAKKyAgICByZXR1cm4gb3V0ICsgIl0iOworfTsKKworTWF0cml4LnBv
cyA9IGZ1bmN0aW9uKG0sIGksIGopIHsKKyAgICByZXR1cm4gbSAqIGkgKyBqOworfQorCitNYXRy
aXguYWRkID0gZnVuY3Rpb24oQSwgQiwgbiwgbSkgeworICAgIHZhciBvdXQgPSBNYXRyaXguemVy
b3MobiwgbSk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuICogbTsgKytpKQorICAgICAgICBv
dXRbaV0gPSBBW2ldICsgQltpXTsKKyAgICByZXR1cm4gb3V0OworfQorCitNYXRyaXguc3VidHJh
Y3QgPSBmdW5jdGlvbihBLCBCLCBuLCBtKSB7CisgICAgdmFyIG91dCA9IE1hdHJpeC56ZXJvcyhu
LCBtKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4gKiBtOyArK2kpCisgICAgICAgIG91dFtp
XSA9IEFbaV0gLSBCW2ldOworICAgIHJldHVybiBvdXQ7Cit9CisKK01hdHJpeC5zY2FsZSA9IGZ1
bmN0aW9uKHMsIEEsIG4sIG0pIHsKKyAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIG0pOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbiAqIG07ICsraSkKKyAgICAgICAgb3V0W2ldID0gcyAq
IEFbaV07CisgICAgcmV0dXJuIG91dDsKK30KKworTWF0cml4LnRyYW5zcG9zZSA9IGZ1bmN0aW9u
KEEsIG4sIG0pIHsKKyAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG0sIG4pOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbTsg
KytqKQorICAgICAgICAgICAgb3V0W01hdHJpeC5wb3MobiwgaSwgaildID0gQVtNYXRyaXgucG9z
KG0sIGosIGkpXTsKKyAgICB9ICAgICAgIAorICAgIHJldHVybiBvdXQ7Cit9CisKK01hdHJpeC5t
dWx0aXBseSA9IGZ1bmN0aW9uKEEsIEIsIG4sIG0sIHApIHsKKyAgICB2YXIgb3V0ID0gTWF0cml4
Lnplcm9zKG4sIHApOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAg
IGZvciAodmFyIGogPSAwOyBqIDwgcDsgKytqKSB7CisgICAgICAgICAgICBmb3IgKHZhciBrID0g
MDsgayA8IG07ICsraykgeworICAgICAgICAgICAgICAgIG91dFtNYXRyaXgucG9zKHAsIGksIGop
XSArPSBBW01hdHJpeC5wb3MobSwgaSwgayldICogQltNYXRyaXgucG9zKHAsIGssIGopXTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gb3V0OworfQorCit2YXIg
VmVjdG9yMyA9IHt9OworCitWZWN0b3IzLnplcm9zID0gZnVuY3Rpb24oKSB7IHJldHVybiBNYXRy
aXguemVyb3MoMSwgMyk7IH0KK1ZlY3RvcjMub25lcyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gTWF0
cml4Lm9uZXMoMSwgMyk7IH0KK1ZlY3RvcjMuc3RyID0gZnVuY3Rpb24odikgeyByZXR1cm4gTWF0
cml4LnN0cih2LCAxLCAzKTsgfQorVmVjdG9yMy5hZGQgPSBmdW5jdGlvbih2LCB3KSB7IHJldHVy
biBNYXRyaXguYWRkKHYsIHcsIDEsIDMpOyB9CitWZWN0b3IzLnN1YnRyYWN0ID0gZnVuY3Rpb24o
diwgdykgeyByZXR1cm4gTWF0cml4LnN1YnRyYWN0KHYsIHcsIDEsIDMpOyB9CitWZWN0b3IzLnNj
YWxlID0gZnVuY3Rpb24ocywgdikgeyByZXR1cm4gTWF0cml4LnNjYWxlKHMsIHYsIDEsIDMpOyB9
CitWZWN0b3IzLm11bHRpcGx5TWF0cml4MyA9IGZ1bmN0aW9uKHYsIEEpIHsgcmV0dXJuIE1hdHJp
eC5tdWx0aXBseSh2LCBBLCAxLCAzLCAzKTsgfQorVmVjdG9yMy5tdWx0aXBseVZlY3RvcjMgPSBm
dW5jdGlvbih2LCB3KSB7CisgICAgdmFyIG91dCA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAzOyArK2kpCisgICAgICAgIG91dCArPSB2W2ldICogd1tpXTsKKyAgICByZXR1cm4gb3V0Owor
fQorCit2YXIgTWF0cml4MyA9IHt9OworCitNYXRyaXgzLnplcm9zID0gZnVuY3Rpb24oKSB7IHJl
dHVybiBNYXRyaXguemVyb3MoMywgMyk7IH0KK01hdHJpeDMuaWRlbnRpdHkgPSBmdW5jdGlvbigp
IHsgcmV0dXJuIE1hdHJpeC5pZGVudGl0eSgzLCAzKTsgfQorTWF0cml4My5zdHIgPSBmdW5jdGlv
bihBKSB7IHJldHVybiBNYXRyaXguc3RyKEEsIDMsIDMpOyB9CitNYXRyaXgzLnBvcyA9IGZ1bmN0
aW9uKGksIGopIHsgcmV0dXJuIE1hdHJpeC5wb3MoMywgaSwgaik7IH0KK01hdHJpeDMuYWRkID0g
ZnVuY3Rpb24oQSwgQikgeyByZXR1cm4gTWF0cml4LmFkZChBLCBCLCAzLCAzKTsgfQorTWF0cml4
My5zdWJ0cmFjdCA9IGZ1bmN0aW9uKEEsIEIpIHsgcmV0dXJuIE1hdHJpeC5zdWJ0cmFjdChBLCBC
LCAzLCAzKTsgfQorTWF0cml4My5zY2FsZSA9IGZ1bmN0aW9uKHMsIEEpIHsgcmV0dXJuIE1hdHJp
eC5zY2FsZShzLCBBLCAzLCAzKTsgfQorTWF0cml4My50cmFuc3Bvc2UgPSBmdW5jdGlvbihBKSB7
IHJldHVybiBNYXRyaXgudHJhbnNwb3NlKEEsIDMsIDMpOyB9CitNYXRyaXgzLm11bHRpcGx5TWF0
cml4MyA9IGZ1bmN0aW9uKEEsIEIpIHsgcmV0dXJuIE1hdHJpeC5tdWx0aXBseShBLCBCLCAzLCAz
LCAzKTsgfQorTWF0cml4My5tdWx0aXBseVZlY3RvcjMgPSBmdW5jdGlvbihBLCB2KSB7IHJldHVy
biBNYXRyaXgubXVsdGlwbHkoQSwgdiwgMywgMywgMSk7IH0KKworZnVuY3Rpb24gQ29udHJvbGxl
cihLLCB5c3AsIHVsb3csIHVoaWdoKSB7CisgICAgdGhpcy5feXNwID0geXNwOworCisgICAgdGhp
cy5fVGQgPSA1OworICAgIHRoaXMuX1RpID0gMTU7CisKKyAgICB0aGlzLl9LcCA9IEs7CisgICAg
dGhpcy5fS2QgPSBLIC8gdGhpcy5fVGQ7CisgICAgdGhpcy5fS2kgPSBLIC8gdGhpcy5fVGk7CisK
KyAgICB0aGlzLl9lb2xkID0gMDsKKyAgICB0aGlzLl9JID0gMDsKK30KKworQ29udHJvbGxlci5w
cm90b3R5cGUgPSB7CisgICAgX3NhdCA6IGZ1bmN0aW9uKHYsIGxvdywgaGlnaCkgeworICAgICAg
ICByZXR1cm4gdiA8IGxvdyA/IGxvdyA6ICh2ID4gaGlnaCA/IGhpZ2ggOiB2KTsKKyAgICB9LAor
ICAgIHR1bmUgOiBmdW5jdGlvbih5LCBoKSB7CisgICAgICAgIC8vIEN1cnJlbnQgZXJyb3IKKyAg
ICAgICAgdmFyIGUgPSB0aGlzLl95c3AgLSB5OworCisgICAgICAgIC8vIFByb3BvcnRpb25hbCB0
ZXJtCisgICAgICAgIHZhciBQID0gdGhpcy5fS3AgKiBlOworICAgICAgICAKKyAgICAgICAgLy8g
RGVyaXZhdGl2ZSB0ZXJtIGlzIHRoZSBzbG9wZSBvZiB0aGUgY3VydmUgYXQgdGhlIGN1cnJlbnQg
dGltZQorICAgICAgICB2YXIgRCA9IHRoaXMuX0tkICogKGUgLSB0aGlzLl9lb2xkKSAvIGg7CisK
KyAgICAgICAgLy8gSW50ZWdyYWwgdGVybSBpcyB0aGUgYXJlYSB1bmRlciB0aGUgY3VydmUgc3Rh
cnRpbmcgZnJvbSB0aGUgYmVnaW5pbmcgdGlsbCB0aGUgY3VycmVudCB0aW1lCisgICAgICAgIHRo
aXMuX0kgKz0gdGhpcy5fS2kgKiAoKGUgKyB0aGlzLl9lb2xkKSAvIDIpICogaDsKKworICAgICAg
ICAvLyBwaWQgY29udHJvbGxlciB2YWx1ZQorICAgICAgICB2YXIgdiA9IFAgKyBEICsgdGhpcy5f
STsKKyAgICAgICAgCisgICAgICAgIC8vIEF2b2lkIHNwaWtlcyBieSBhcHBseWluZyBhY3R1YXRv
ciBzYXR1YXJ0aW9uCisgICAgICAgIHZhciB1ID0gdGhpcy5fc2F0KHYsIHRoaXMuX3Vsb3csIHRo
aXMuX3VoaWdoKTsgICAgICAgIAorCisgICAgICAgIHRoaXMuX2VvbGQgPSBlOworICAgICAgICBy
ZXR1cm4gdTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEVzdGltYXRvcigpIHsKKyAgICB0aGlzLl9t
YXRBID0gTWF0cml4My5pZGVudGl0eSgpOworICAgIAorICAgIHRoaXMuX3ZlY0ggPSBWZWN0b3Iz
Lnplcm9zKCk7CisgICAgdGhpcy5fdmVjSFswXSA9IDE7CisgICAgCisgICAgdGhpcy5fbWF0USA9
IE1hdHJpeDMuaWRlbnRpdHkoKTsKKyAgICB0aGlzLl9SID0gMTAwMDsKKyAgICAKKyAgICB0aGlz
Ll92ZWNYX2VzdCA9IFZlY3RvcjMub25lcygpOworICAgIHRoaXMuX21hdFBfZXN0ID0gTWF0cml4
My56ZXJvcygpOworfQorCitFc3RpbWF0b3IucHJvdG90eXBlID0geworICAgIGVzdGltYXRlIDog
ZnVuY3Rpb24odGltZURlbHRhLCBjdXJyZW50KSB7CisgICAgICAgIC8vIFVwZGF0ZSB0aGUgdHJh
bnNpdGlvbiBtYXRyaXgKKyAgICAgICAgdGhpcy5fbWF0QVtNYXRyaXgzLnBvcygwLCAyKV0gPSAx
OworCisgICAgICAgIC8vIFByZWRpY3RlZCBzdGF0ZSBhbmQgY292YXJpYW5jZQorICAgICAgICB2
YXIgdmVjWF9wcmQgPSBNYXRyaXgzLm11bHRpcGx5VmVjdG9yMyh0aGlzLl9tYXRBLCB0aGlzLl92
ZWNYX2VzdCk7CisgICAgICAgIHZhciBtYXRQX3ByZCA9IE1hdHJpeDMuYWRkKE1hdHJpeDMubXVs
dGlwbHlNYXRyaXgzKE1hdHJpeDMubXVsdGlwbHlNYXRyaXgzKHRoaXMuX21hdEEsIHRoaXMuX21h
dFBfZXN0KSwgTWF0cml4My50cmFuc3Bvc2UodGhpcy5fbWF0QSkpLCB0aGlzLl9tYXRRKTsKKwor
ICAgICAgICAvLyBFc3RpbWF0aW9uCisgICAgICAgIHZhciB2ZWNCID0gVmVjdG9yMy5tdWx0aXBs
eU1hdHJpeDModGhpcy5fdmVjSCwgTWF0cml4My50cmFuc3Bvc2UobWF0UF9wcmQpKTsKKyAgICAg
ICAgdmFyIFMgPSBWZWN0b3IzLm11bHRpcGx5VmVjdG9yMyh2ZWNCLCB0aGlzLl92ZWNIKSArIHRo
aXMuX1I7CisKKyAgICAgICAgdmFyIHZlY0dhaW4gPSBWZWN0b3IzLnNjYWxlKDEvUywgdmVjQik7
CisgICAgICAgIAorICAgICAgICAvLyBFc3RpbWF0ZWQgc3RhdGUgYW5kIGNvdmFyaWFuY2UKKyAg
ICAgICAgdGhpcy5fdmVjWF9lc3QgPSBWZWN0b3IzLmFkZCh2ZWNYX3ByZCwgVmVjdG9yMy5zY2Fs
ZShjdXJyZW50IC0gVmVjdG9yMy5tdWx0aXBseVZlY3RvcjModGhpcy5fdmVjSCwgdmVjWF9wcmQp
LCB2ZWNHYWluKSk7CisgICAgICAgIHRoaXMuX21hdFBfZXN0ID0gTWF0cml4My5zdWJ0cmFjdCht
YXRQX3ByZCwgTWF0cml4My5zY2FsZShWZWN0b3IzLm11bHRpcGx5VmVjdG9yMyh2ZWNHYWluLCB0
aGlzLl92ZWNIKSwgbWF0UF9wcmQpKTsKKworICAgICAgICAvLyBDb21wdXRlIHRoZSBlc3RpbWF0
ZWQgbWVhc3VyZW1lbnQKKyAgICAgICAgcmV0dXJuIFZlY3RvcjMubXVsdGlwbHlWZWN0b3IzKHRo
aXMuX3ZlY0gsICB0aGlzLl92ZWNYX2VzdCk7CisgICAgfQorfQorCitmdW5jdGlvbiBPcHRpb25z
KHRlc3RJbnRlcnZhbCwgZnJhbWVSYXRlKSB7CisgICAgdGhpcy50ZXN0SW50ZXJ2YWwgPSB0ZXN0
SW50ZXJ2YWw7CisgICAgdGhpcy5mcmFtZVJhdGUgPSBmcmFtZVJhdGU7Cit9CisKK2Z1bmN0aW9u
IFByb2dyZXNzQmFyKGVsZW1lbnQsIHJhbmdlcykgeworICAgIHRoaXMuZWxlbWVudCA9IGVsZW1l
bnQ7CisgICAgdGhpcy5yYW5nZXMgPSByYW5nZXM7CisgICAgdGhpcy5jdXJyZW50UmFuZ2UgPSAw
OworfQorCitQcm9ncmVzc0Jhci5wcm90b3R5cGUgPSB7CisgICAgX3Byb2dyZXNzVG9QZXJjZW50
IDogZnVuY3Rpb24ocHJvZ3Jlc3MpIHsKKyAgICAgICAgcmV0dXJuIHByb2dyZXNzICogKDEwMCAv
IHRoaXMucmFuZ2VzKTsKKyAgICB9LAorICAgIGluY1JhbmdlIDogZnVuY3Rpb24oKSB7CisgICAg
ICAgICsrdGhpcy5jdXJyZW50UmFuZ2U7CisgICAgfSwKKyAgICBzZXRQb3MgOiBmdW5jdGlvbihw
cm9ncmVzcykgeworICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLl9wcm9n
cmVzc1RvUGVyY2VudCh0aGlzLmN1cnJlbnRSYW5nZSArIHByb2dyZXNzKSArICIlIjsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIFJlY29yZFRhYmxlKGVsZW1lbnQpIHsKKyAgICB0aGlzLmVsZW1lbnQg
PSBlbGVtZW50OworICAgIHRoaXMuY2xlYXIoKTsKK30KKworUmVjb3JkVGFibGUucHJvdG90eXBl
ID0geworICAgIGNsZWFyIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuZWxlbWVudC5pbm5l
ckhUTUwgPSAiIjsKKyAgICB9LAorICAgIF9zaG93VGl0bGVzIDogZnVuY3Rpb24ocm93LCBxdWV1
ZSwgdGl0bGVzLCBtZXNzYWdlKSB7CisgICAgICAgIGZvciAodmFyIHRpdGxlID0gMDsgdGl0bGUg
PCB0aXRsZXMubGVuZ3RoOyArK3RpdGxlKSB7CisgICAgICAgICAgICB2YXIgdGggPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJ0aCIpOworICAgICAgICAgICAgdGguaW5uZXJIVE1MID0gdGl0bGVz
W3RpdGxlXS50ZXh0OworICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlICE9ICJ1bmRlZmlu
ZWQiICYmIG1lc3NhZ2UubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgdGguaW5uZXJIVE1MICs9
ICI8YnI+WyIgKyBtZXNzYWdlICsgIl0iOworICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiIjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgid2lkdGgiIGluIHRpdGxlc1t0aXRsZV0p
CisgICAgICAgICAgICAgICAgdGgud2lkdGggPSB0aXRsZXNbdGl0bGVdLndpZHRoICsgIiUiOwor
ICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKHRoKTsKKyAgICAgICAgICAgIHF1ZXVlLnB1c2go
e2VsZW1lbnQ6IHRoLCB0aXRsZXM6IHRpdGxlc1t0aXRsZV0uY2hpbGRyZW4gfSk7CisgICAgICAg
IH0KKyAgICB9LAorICAgIF9zaG93SGVhZGVyIDogZnVuY3Rpb24oc3VpdGVOYW1lLCB0aXRsZXMs
IG1lc3NhZ2UpIHsKKyAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRy
Iik7CisKKyAgICAgICAgdmFyIHF1ZXVlID0gW107CisgICAgICAgIHRoaXMuX3Nob3dUaXRsZXMo
cm93LCBxdWV1ZSwgdGl0bGVzLCBtZXNzYWdlKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVu
ZENoaWxkKHJvdyk7CisKKyAgICAgICAgd2hpbGUgKHF1ZXVlLmxlbmd0aCkgeworICAgICAgICAg
ICAgdmFyIHJvdyA9IG51bGw7CisgICAgICAgICAgICB2YXIgbGlzdCA9IFtdOworCisgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gcXVldWUubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsK
KyAgICAgICAgICAgICAgICB2YXIgZW50cnkgPSBxdWV1ZS5zaGlmdCgpOworCisgICAgICAgICAg
ICAgICAgaWYgKCFlbnRyeS50aXRsZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIGxp
c3QucHVzaChlbnRyeS5lbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFyb3cpCisgICAgICAgICAg
ICAgICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworCisgICAg
ICAgICAgICAgICAgdGhpcy5fc2hvd1RpdGxlcyhyb3csIHF1ZXVlLCBlbnRyeS50aXRsZXMsICIi
KTsKKyAgICAgICAgICAgICAgICBlbnRyeS5lbGVtZW50LmNvbFNwYW4gPSBlbnRyeS50aXRsZXMu
bGVuZ3RoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocm93KSB7CisgICAgICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHJvdyk7CisgICAgICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgICAg
ICArK2xpc3RbaV0ucm93U3BhbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisg
ICAgX3Nob3dFbXB0eSA6IGZ1bmN0aW9uKHJvdywgdGVzdE5hbWUpIHsKKyAgICAgICAgdmFyIHRk
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxk
KHRkKTsKKyAgICB9LAorICAgIF9zaG93VmFsdWUgOiBmdW5jdGlvbihyb3csIHRlc3ROYW1lLCB2
YWx1ZSkgeworICAgICAgICB2YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwor
ICAgICAgICB0ZC50ZXh0Q29udGVudCA9IHZhbHVlLnRvRml4ZWQoMik7CisgICAgICAgIHJvdy5h
cHBlbmRDaGlsZCh0ZCk7CisgICAgfSwKKyAgICBfc2hvd1NhbXBsZXMgOiBmdW5jdGlvbihyb3cs
IHRlc3ROYW1lLCBheGlzZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGltZU9mZnNldCkgeworICAgICAg
ICB2YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICB2YXIgYnV0
dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGJ1dHRvbi5jbGFz
c05hbWUgPSAic21hbGwtYnV0dG9uIjsKKyAgICAgICAgICAgIAorICAgICAgICBidXR0b24uYWRk
RXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHdpbmRvdy5z
aG93R3JhcGgodGVzdE5hbWUsIGF4aXNlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KTsK
KyAgICAgICAgfSk7CisgICAgICAgICAgICAKKyAgICAgICAgYnV0dG9uLnRleHRDb250ZW50ID0g
IkNsaWNrLi4uIjsKKyAgICAgICAgdGQuYXBwZW5kQ2hpbGQoYnV0dG9uKTsKKyAgICAgICAgcm93
LmFwcGVuZENoaWxkKHRkKTsKKyAgICB9LAorICAgIF9zaG93VGVzdCA6IGZ1bmN0aW9uKHRlc3RO
YW1lLCB0aXRsZXMsIHNhbXBsZXIsIGZpbmFsUmVzdWx0cykgeworICAgICAgICB2YXIgcm93ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKyAgICAgICAgdmFyIHRkID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgdGQudGV4dENvbnRlbnQgPSB0ZXN0TmFtZTsK
KyAgICAgICAgcm93LmFwcGVuZENoaWxkKHRkKTsKKyAgICAgICAgCisgICAgICAgIHZhciBheGlz
ZXMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgbWVhc3VyZSA9IDA7IG1lYXN1cmUgPCBzYW1wbGVy
LnN0YXRpc3RpY3MubGVuZ3RoOyArK21lYXN1cmUpIHsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dW
YWx1ZShyb3csIHRlc3ROYW1lLCBzYW1wbGVyLnN0YXRpc3RpY3NbbWVhc3VyZV0ubWVhbigpKTsK
KyAgICAgICAgICAgIHRoaXMuX3Nob3dWYWx1ZShyb3csIHRlc3ROYW1lLCBzYW1wbGVyLnN0YXRp
c3RpY3NbbWVhc3VyZV0uY29uZmlkZW5jZUludGVydmFsRGVsdGEoOTUpKTsgICAgICAgICAgICAK
KyAgICAgICAgICAgIHRoaXMuX3Nob3dWYWx1ZShyb3csIHRlc3ROYW1lLCBzYW1wbGVyLnN0YXRp
c3RpY3NbbWVhc3VyZV0uc3RhbmRhcmREZXZpYXRpb24oKSk7CisgICAgICAgICAgICB0aGlzLl9z
aG93VmFsdWUocm93LCB0ZXN0TmFtZSwgc2FtcGxlci5zdGF0aXN0aWNzW21lYXN1cmVdLnBlcmNl
bnRhZ2UoKSk7CisgICAgICAgICAgICBheGlzZXMucHVzaCh0aXRsZXNbbWVhc3VyZSArIDFdLnRl
eHQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZpbmFsUmVzdWx0cykKKyAgICAgICAgICAg
IHRoaXMuX3Nob3dTYW1wbGVzKHJvdywgdGVzdE5hbWUsIGF4aXNlcywgc2FtcGxlci5zYW1wbGVz
LCBzYW1wbGVyLnNhbXBsaW5nVGltZU9mZnNldCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHRoaXMuX3Nob3dFbXB0eSAocm93LCB0ZXN0TmFtZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5h
cHBlbmRDaGlsZChyb3cpOworICAgIH0sCisgICAgX3Nob3dTdWl0ZSA6IGZ1bmN0aW9uKHN1aXRl
LCBzdWl0ZVNhbXBsZXJzKSB7CisgICAgICAgIHZhciBzY29yZXMgPSBbXTsgICAgICAgIAorICAg
ICAgICBmb3IgKHZhciB0ZXN0TmFtZSBpbiBzdWl0ZVNhbXBsZXJzKSB7CisgICAgICAgICAgICB2
YXIgdGVzdCA9IHRlc3RGcm9tTmFtZShzdWl0ZSwgdGVzdE5hbWUpOworICAgICAgICAgICAgdmFy
IHNhbXBsZXIgPSBzdWl0ZVNhbXBsZXJzW3Rlc3ROYW1lXTsgCisgICAgICAgICAgICB0aGlzLl9z
aG93VGVzdCh0ZXN0TmFtZSwgc3VpdGUudGl0bGVzLCBzYW1wbGVyLCB0cnVlKTsKKyAgICAgICAg
ICAgIHNjb3Jlcy5wdXNoKE1hdGgubWluKHNhbXBsZXIuc3RhdGlzdGljc1swXS5tZWFuKCkgKiB0
ZXN0LndlaWdodCAvIHRlc3QubWF4LCAxKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNj
b3JlczsKKyAgICB9LAorICAgIHNob3dSZWNvcmQgOiBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgc2Ft
cGxlciwgbWVzc2FnZSkgeworICAgICAgICB0aGlzLmNsZWFyKCk7ICAgICAgICAKKyAgICAgICAg
dGhpcy5fc2hvd0hlYWRlcigiIiwgc3VpdGUudGl0bGVzLCBtZXNzYWdlKTsKKyAgICAgICAgdGhp
cy5fc2hvd1Rlc3QodGVzdC5uYW1lLCBzdWl0ZS50aXRsZXMsIHNhbXBsZXIsIGZhbHNlKTsgICAg
ICAgIAorICAgIH0sCisgICAgc2hvd0l0ZXJhdGlvbnMgOiBmdW5jdGlvbihpdGVyYXRpb25zU2Ft
cGxlcnMpIHsKKyAgICAgICAgdGhpcy5jbGVhcigpOworCisgICAgICAgIHZhciBzY29yZXMgPSBb
XTsKKyAgICAgICAgdmFyIHRpdGxlcyA9IG51bGw7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgaXRlcmF0aW9uc1NhbXBsZXJzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHZh
ciBzdWl0ZU5hbWUgaW4gaXRlcmF0aW9uc1NhbXBsZXJzW2ldKSB7CisgICAgICAgICAgICAgICAg
dmFyIHN1aXRlID0gc3VpdGVGcm9tTmFtZShzdWl0ZU5hbWUpOworICAgICAgICAgICAgICAgIGlm
ICh0aXRsZXMgIT0gc3VpdGUudGl0bGVzKSB7CisgICAgICAgICAgICAgICAgICAgIHRpdGxlcyA9
IHN1aXRlLnRpdGxlczsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2hvd0hlYWRlcihzdWl0
ZU5hbWUsIHRpdGxlcywgIiIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IHZhciBzdWl0ZVNjb3JlcyA9IHRoaXMuX3Nob3dTdWl0ZShzdWl0ZSwgaXRlcmF0aW9uc1NhbXBs
ZXJzW2ldW3N1aXRlTmFtZV0pOworICAgICAgICAgICAgICAgIHNjb3Jlcy5wdXNoLmFwcGx5KHNj
b3Jlcywgc3VpdGVTY29yZXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHZh
ciBzdW0gPSBzY29yZXMucmVkdWNlKGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEgKyBiOyB9KTsK
KyAgICAgICAgcmV0dXJuIHN1bSAqIDEwMCAvIHNjb3Jlcy5sZW5ndGg7CisgICAgfQorfQpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvc3RhdGlz
dGljcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNv
dXJjZXMvc3RhdGlzdGljcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzOSBAQAorZnVu
Y3Rpb24gU3RhdGlzdGljKCkgeworICAgIHRoaXMuX2luaXQoKTsKK30KKworU3RhdGlzdGljLnNh
bXBsZU1lYW4gPSBmdW5jdGlvbihudW1iZXJPZlNhbXBsZXMsIHN1bSkKK3sKKyAgICBpZiAobnVt
YmVyT2ZTYW1wbGVzIDwgMSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHN1bSAvIG51
bWJlck9mU2FtcGxlczsKK30KKworU3RhdGlzdGljLnNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uID0g
ZnVuY3Rpb24obnVtYmVyT2ZTYW1wbGVzLCBzdW0sIHNxdWFyZVN1bSkKK3sKKyAgICBpZiAobnVt
YmVyT2ZTYW1wbGVzIDwgMikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIE1hdGguc3Fy
dCgoc3F1YXJlU3VtIC0gc3VtICogc3VtIC8gbnVtYmVyT2ZTYW1wbGVzKSAvIChudW1iZXJPZlNh
bXBsZXMgLSAxKSkgOworfQorCisvLyBTZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9T
dHVkZW50J3NfdC1kaXN0cmlidXRpb24jVGFibGVfb2Zfc2VsZWN0ZWRfdmFsdWVzCisvLyBUaGlz
IHRhYmxlIGNvbnRhaW5zIG9uZSBzaWRlZCAoYS5rLmEuIHRhaWwpIHZhbHVlcy4KK1N0YXRpc3Rp
Yy50RGlzdHJpYnV0aW9uSW52ZXJzZUNERiA9IHsKKyAgICAwLjk6IFsKKyAgICAgICAgMy4wNzc2
ODQsIDEuODg1NjE4LCAxLjYzNzc0NCwgMS41MzMyMDYsIDEuNDc1ODg0LCAxLjQzOTc1NiwgMS40
MTQ5MjQsIDEuMzk2ODE1LCAxLjM4MzAyOSwgMS4zNzIxODQsCisgICAgICAgIDEuMzYzNDMwLCAx
LjM1NjIxNywgMS4zNTAxNzEsIDEuMzQ1MDMwLCAxLjM0MDYwNiwgMS4zMzY3NTcsIDEuMzMzMzc5
LCAxLjMzMDM5MSwgMS4zMjc3MjgsIDEuMzI1MzQxLAorICAgICAgICAxLjMyMzE4OCwgMS4zMjEy
MzcsIDEuMzE5NDYwLCAxLjMxNzgzNiwgMS4zMTYzNDUsIDEuMzE0OTcyLCAxLjMxMzcwMywgMS4z
MTI1MjcsIDEuMzExNDM0LCAxLjMxMDQxNSwKKyAgICAgICAgMS4zMDk0NjQsIDEuMzA4NTczLCAx
LjMwNzczNywgMS4zMDY5NTIsIDEuMzA2MjEyLCAxLjMwNTUxNCwgMS4zMDQ4NTQsIDEuMzA0MjMw
LCAxLjMwMzYzOSwgMS4zMDMwNzcsCisgICAgICAgIDEuMzAyNTQzLCAxLjMwMjAzNSwgMS4zMDE1
NTIsIDEuMzAxMDkwLCAxLjMwMDY0OSwgMS4zMDAyMjgsIDEuMjk5ODI1LCAxLjI5OTQzOSwgMS4y
OTkwNjksIDEuMjk4NzE0LAorCisgICAgICAgIDEuMjk4MzczLCAxLjI5ODA0NSwgMS4yOTc3MzAs
IDEuMjk3NDI2LCAxLjI5NzEzNCwgMS4yOTY4NTMsIDEuMjk2NTgxLCAxLjI5NjMxOSwgMS4yOTYw
NjYsIDEuMjk1ODIxLAorICAgICAgICAxLjI5NTU4NSwgMS4yOTUzNTYsIDEuMjk1MTM0LCAxLjI5
NDkyMCwgMS4yOTQ3MTIsIDEuMjk0NTExLCAxLjI5NDMxNSwgMS4yOTQxMjYsIDEuMjkzOTQyLCAx
LjI5Mzc2MywKKyAgICAgICAgMS4yOTM1ODksIDEuMjkzNDIxLCAxLjI5MzI1NiwgMS4yOTMwOTcs
IDEuMjkyOTQxLCAxLjI5Mjc5MCwgMS4yOTI2NDMsIDEuMjkyNTAwLCAxLjI5MjM2MCwgMS4yOTIy
MjQsCisgICAgICAgIDEuMjkyMDkxLCAxLjI5MTk2MSwgMS4yOTE4MzUsIDEuMjkxNzExLCAxLjI5
MTU5MSwgMS4yOTE0NzMsIDEuMjkxMzU4LCAxLjI5MTI0NiwgMS4yOTExMzYsIDEuMjkxMDI5LAor
ICAgICAgICAxLjI5MDkyNCwgMS4yOTA4MjEsIDEuMjkwNzIxLCAxLjI5MDYyMywgMS4yOTA1Mjcs
IDEuMjkwNDMyLCAxLjI5MDM0MCwgMS4yOTAyNTAsIDEuMjkwMTYxLCAxLjI5MDA3NV0sCisgICAg
MC45NTogWworICAgICAgICA2LjMxMzc1MiwgMi45MTk5ODYsIDIuMzUzMzYzLCAyLjEzMTg0Nywg
Mi4wMTUwNDgsIDEuOTQzMTgwLCAxLjg5NDU3OSwgMS44NTk1NDgsIDEuODMzMTEzLCAxLjgxMjQ2
MSwKKyAgICAgICAgMS43OTU4ODUsIDEuNzgyMjg4LCAxLjc3MDkzMywgMS43NjEzMTAsIDEuNzUz
MDUwLCAxLjc0NTg4NCwgMS43Mzk2MDcsIDEuNzM0MDY0LCAxLjcyOTEzMywgMS43MjQ3MTgsCisg
ICAgICAgIDEuNzIwNzQzLCAxLjcxNzE0NCwgMS43MTM4NzIsIDEuNzEwODgyLCAxLjcwODE0MSwg
MS43MDU2MTgsIDEuNzAzMjg4LCAxLjcwMTEzMSwgMS42OTkxMjcsIDEuNjk3MjYxLAorICAgICAg
ICAxLjY5NTUxOSwgMS42OTM4ODksIDEuNjkyMzYwLCAxLjY5MDkyNCwgMS42ODk1NzIsIDEuNjg4
Mjk4LCAxLjY4NzA5NCwgMS42ODU5NTQsIDEuNjg0ODc1LCAxLjY4Mzg1MSwKKyAgICAgICAgMS42
ODI4NzgsIDEuNjgxOTUyLCAxLjY4MTA3MSwgMS42ODAyMzAsIDEuNjc5NDI3LCAxLjY3ODY2MCwg
MS42Nzc5MjcsIDEuNjc3MjI0LCAxLjY3NjU1MSwgMS42NzU5MDUsCisKKyAgICAgICAgMS42NzUy
ODUsIDEuNjc0Njg5LCAxLjY3NDExNiwgMS42NzM1NjUsIDEuNjczMDM0LCAxLjY3MjUyMiwgMS42
NzIwMjksIDEuNjcxNTUzLCAxLjY3MTA5MywgMS42NzA2NDksCisgICAgICAgIDEuNjcwMjE5LCAx
LjY2OTgwNCwgMS42Njk0MDIsIDEuNjY5MDEzLCAxLjY2ODYzNiwgMS42NjgyNzEsIDEuNjY3OTE2
LCAxLjY2NzU3MiwgMS42NjcyMzksIDEuNjY2OTE0LAorICAgICAgICAxLjY2NjYwMCwgMS42NjYy
OTQsIDEuNjY1OTk2LCAxLjY2NTcwNywgMS42NjU0MjUsIDEuNjY1MTUxLCAxLjY2NDg4NSwgMS42
NjQ2MjUsIDEuNjY0MzcxLCAxLjY2NDEyNSwKKyAgICAgICAgMS42NjM4ODQsIDEuNjYzNjQ5LCAx
LjY2MzQyMCwgMS42NjMxOTcsIDEuNjYyOTc4LCAxLjY2Mjc2NSwgMS42NjI1NTcsIDEuNjYyMzU0
LCAxLjY2MjE1NSwgMS42NjE5NjEsCisgICAgICAgIDEuNjYxNzcxLCAxLjY2MTU4NSwgMS42NjE0
MDQsIDEuNjYxMjI2LCAxLjY2MTA1MiwgMS42NjA4ODEsIDEuNjYwNzE1LCAxLjY2MDU1MSwgMS42
NjAzOTEsIDEuNjYwMjM0XSwKKyAgICAwLjk3NTogWworICAgICAgICAxMi43MDYyMDUsIDQuMzAy
NjUzLCAzLjE4MjQ0NiwgMi43NzY0NDUsIDIuNTcwNTgyLCAyLjQ0NjkxMiwgMi4zNjQ2MjQsIDIu
MzA2MDA0LCAyLjI2MjE1NywgMi4yMjgxMzksCisgICAgICAgIDIuMjAwOTg1LCAyLjE3ODgxMywg
Mi4xNjAzNjksIDIuMTQ0Nzg3LCAyLjEzMTQ1MCwgMi4xMTk5MDUsIDIuMTA5ODE2LCAyLjEwMDky
MiwgMi4wOTMwMjQsIDIuMDg1OTYzLAorICAgICAgICAyLjA3OTYxNCwgMi4wNzM4NzMsIDIuMDY4
NjU4LCAyLjA2Mzg5OSwgMi4wNTk1MzksIDIuMDU1NTI5LCAyLjA1MTgzMSwgMi4wNDg0MDcsIDIu
MDQ1MjMwLCAyLjA0MjI3MiwKKyAgICAgICAgMi4wMzk1MTMsIDIuMDM2OTMzLCAyLjAzNDUxNSwg
Mi4wMzIyNDUsIDIuMDMwMTA4LCAyLjAyODA5NCwgMi4wMjYxOTIsIDIuMDI0Mzk0LCAyLjAyMjY5
MSwgMi4wMjEwNzUsCisgICAgICAgIDIuMDE5NTQxLCAyLjAxODA4MiwgMi4wMTY2OTIsIDIuMDE1
MzY4LCAyLjAxNDEwMywgMi4wMTI4OTYsIDIuMDExNzQxLCAyLjAxMDYzNSwgMi4wMDk1NzUsIDIu
MDA4NTU5LAorCisgICAgICAgIDIuMDA3NTg0LCAyLjAwNjY0NywgMi4wMDU3NDYsIDIuMDA0ODc5
LCAyLjAwNDA0NSwgMi4wMDMyNDEsIDIuMDAyNDY1LCAyLjAwMTcxNywgMi4wMDA5OTUsIDIuMDAw
Mjk4LAorICAgICAgICAxLjk5OTYyNCwgMS45OTg5NzIsIDEuOTk4MzQxLCAxLjk5NzczMCwgMS45
OTcxMzgsIDEuOTk2NTY0LCAxLjk5NjAwOCwgMS45OTU0NjksIDEuOTk0OTQ1LCAxLjk5NDQzNywK
KyAgICAgICAgMS45OTM5NDMsIDEuOTkzNDY0LCAxLjk5Mjk5NywgMS45OTI1NDMsIDEuOTkyMTAy
LCAxLjk5MTY3MywgMS45OTEyNTQsIDEuOTkwODQ3LCAxLjk5MDQ1MCwgMS45OTAwNjMsCisgICAg
ICAgIDEuOTg5Njg2LCAxLjk4OTMxOSwgMS45ODg5NjAsIDEuOTg4NjEwLCAxLjk4ODI2OCwgMS45
ODc5MzQsIDEuOTg3NjA4LCAxLjk4NzI5MCwgMS45ODY5NzksIDEuOTg2Njc1LAorICAgICAgICAx
Ljk4NjM3NywgMS45ODYwODYsIDEuOTg1ODAyLCAxLjk4NTUyMywgMS45ODUyNTEsIDEuOTg0OTg0
LCAxLjk4NDcyMywgMS45ODQ0NjcsIDEuOTg0MjE3LCAxLjk4Mzk3Ml0sCisgICAgMC45OTogWwor
ICAgICAgICAzMS44MjA1MTYsIDYuOTY0NTU3LCA0LjU0MDcwMywgMy43NDY5NDcsIDMuMzY0OTMw
LCAzLjE0MjY2OCwgMi45OTc5NTIsIDIuODk2NDU5LCAyLjgyMTQzOCwgMi43NjM3NjksCisgICAg
ICAgIDIuNzE4MDc5LCAyLjY4MDk5OCwgMi42NTAzMDksIDIuNjI0NDk0LCAyLjYwMjQ4MCwgMi41
ODM0ODcsIDIuNTY2OTM0LCAyLjU1MjM4MCwgMi41Mzk0ODMsIDIuNTI3OTc3LAorICAgICAgICAy
LjUxNzY0OCwgMi41MDgzMjUsIDIuNDk5ODY3LCAyLjQ5MjE1OSwgMi40ODUxMDcsIDIuNDc4NjMw
LCAyLjQ3MjY2MCwgMi40NjcxNDAsIDIuNDYyMDIxLCAyLjQ1NzI2MiwKKyAgICAgICAgMi40NTI4
MjQsIDIuNDQ4Njc4LCAyLjQ0NDc5NCwgMi40NDExNTAsIDIuNDM3NzIzLCAyLjQzNDQ5NCwgMi40
MzE0NDcsIDIuNDI4NTY4LCAyLjQyNTg0MSwgMi40MjMyNTcsCisgICAgICAgIDIuNDIwODAzLCAy
LjQxODQ3MCwgMi40MTYyNTAsIDIuNDE0MTM0LCAyLjQxMjExNiwgMi40MTAxODgsIDIuNDA4MzQ1
LCAyLjQwNjU4MSwgMi40MDQ4OTIsIDIuNDAzMjcyLAorCisgICAgICAgIDIuNDAxNzE4LCAyLjQw
MDIyNSwgMi4zOTg3OTAsIDIuMzk3NDEwLCAyLjM5NjA4MSwgMi4zOTQ4MDEsIDIuMzkzNTY4LCAy
LjM5MjM3NywgMi4zOTEyMjksIDIuMzkwMTE5LAorICAgICAgICAyLjM4OTA0NywgMi4zODgwMTEs
IDIuMzg3MDA4LCAyLjM4NjAzNywgMi4zODUwOTcsIDIuMzg0MTg2LCAyLjM4MzMwMiwgMi4zODI0
NDYsIDIuMzgxNjE1LCAyLjM4MDgwNywKKyAgICAgICAgMi4zODAwMjQsIDIuMzc5MjYyLCAyLjM3
ODUyMiwgMi4zNzc4MDIsIDIuMzc3MTAyLCAyLjM3NjQyMCwgMi4zNzU3NTcsIDIuMzc1MTExLCAy
LjM3NDQ4MiwgMi4zNzM4NjgsCisgICAgICAgIDIuMzczMjcwLCAyLjM3MjY4NywgMi4zNzIxMTks
IDIuMzcxNTY0LCAyLjM3MTAyMiwgMi4zNzA0OTMsIDIuMzY5OTc3LCAyLjM2OTQ3MiwgMi4zNjg5
NzksIDIuMzY4NDk3LAorICAgICAgICAyLjM2ODAyNiwgMi4zNjc1NjYsIDIuMzY3MTE1LCAyLjM2
NjY3NCwgMi4zNjYyNDMsIDIuMzY1ODIxLCAyLjM2NTQwNywgMi4zNjUwMDIsIDIuMzY0NjA2LCAy
LjM2NDIxN10KK307CisKKyAgU3RhdGlzdGljLnByb3RvdHlwZSA9IHsKKyAgICBfaW5pdCA6IGZ1
bmN0aW9uKCkgeworICAgICAgICB0aGlzLl9zdW0gPSAwOworICAgICAgICB0aGlzLl9zcXVhcmVT
dW0gPSAwOworICAgICAgICB0aGlzLl9udW1iZXJPZlNhbXBsZXMgPSAwOworICAgIH0sCisgICAg
Ly8gQ2FsbGVkIGFmdGVyIGEgd2FybS11cCBwZXJpb2QKKyAgICBzdGFydFNhbXBsaW5nIDogZnVu
Y3Rpb24oKSB7CisgICAgICAgIHZhciBtZWFuID0gdGhpcy5tZWFuKCk7CisgICAgICAgIHRoaXMu
X2luaXQoKTsKKyAgICAgICAgdGhpcy5zYW1wbGUobWVhbik7CisgICAgfSwKKyAgICBzYW1wbGUg
OiBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgICB0aGlzLl9zdW0gKz0gdmFsdWU7CisgICAgICAg
IHRoaXMuX3NxdWFyZVN1bSArPSB2YWx1ZSAqIHZhbHVlOworICAgICAgICArK3RoaXMuX251bWJl
ck9mU2FtcGxlczsgICAgICAgIAorICAgIH0sCisgICAgbWVhbiA6IGZ1bmN0aW9uKCkgeworICAg
ICAgICByZXR1cm4gU3RhdGlzdGljLnNhbXBsZU1lYW4odGhpcy5fbnVtYmVyT2ZTYW1wbGVzLCB0
aGlzLl9zdW0pOworICAgIH0sCisgICAgc3RhbmRhcmREZXZpYXRpb24gOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgcmV0dXJuIFN0YXRpc3RpYy5zYW1wbGVTdGFuZGFyZERldmlhdGlvbih0aGlzLl9u
dW1iZXJPZlNhbXBsZXMsIHRoaXMuX3N1bSwgdGhpcy5fc3F1YXJlU3VtKTsKKyAgICB9LAorICAg
IHBlcmNlbnRhZ2UgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIG1lYW4gPSB0aGlzLm1lYW4o
KTsKKyAgICAgICAgcmV0dXJuIG1lYW4gPyB0aGlzLnN0YW5kYXJkRGV2aWF0aW9uKCkgKiAxMDAg
LyBtZWFuIDogMDsKKyAgICB9LAorICAgIGNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIDogZnVuY3Rp
b24oY29uZmlkZW5jZUxldmVsKSB7CisgICAgICAgIGlmICh0aGlzLl9udW1iZXJPZlNhbXBsZXMg
PCAyKQorICAgICAgICAgICAgcmV0dXJuIE5hTjsKKyAgICAgICAgCisgICAgICAgIHZhciBwcm9i
YWJpbGl0eSA9ICgxMDAgLSAyICogKDEwMCAtIGNvbmZpZGVuY2VMZXZlbCkpIC8gMTAwOworICAg
ICAgICBpZiAoIShwcm9iYWJpbGl0eSBpbiBTdGF0aXN0aWMudERpc3RyaWJ1dGlvbkludmVyc2VD
REYpKQorICAgICAgICAgICAgdGhyb3cgJ1Vuc3VwcG9ydGVkIGNvbmZpZGVuY2UgbGV2ZWwnOwor
CisgICAgICAgIHZhciBjZGZGb3JQcm9iYWJpbGl0eSA9IFN0YXRpc3RpYy50RGlzdHJpYnV0aW9u
SW52ZXJzZUNERltwcm9iYWJpbGl0eV07CisgICAgICAgIHZhciBkZWdyZWVzT2ZGcmVlZG9tID0g
TWF0aC5taW4odGhpcy5fbnVtYmVyT2ZTYW1wbGVzIC0gMSwgY2RmRm9yUHJvYmFiaWxpdHkubGVu
Z3RoKTsKKyAgICAgICAgCisgICAgICAgIHZhciBxdWFudGlsZSA9IGNkZkZvclByb2JhYmlsaXR5
W2RlZ3JlZXNPZkZyZWVkb20gLSAxXTsgLy8gVGhlIGZpcnN0IGVudHJ5IGlzIGZvciB0aGUgb25l
IGRlZ3JlZSBvZiBmcmVlZG9tLgorICAgICAgICByZXR1cm4gcXVhbnRpbGUgKiBTdGF0aXN0aWMu
c2FtcGxlU3RhbmRhcmREZXZpYXRpb24odGhpcy5fbnVtYmVyT2ZTYW1wbGVzLCB0aGlzLl9zdW0s
IHRoaXMuX3NxdWFyZVN1bSkgLyBNYXRoLnNxcnQodGhpcy5fbnVtYmVyT2ZTYW1wbGVzKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIFNhbXBsZXIoY291bnQpIHsKKyAgICB0aGlzLnN0YXRpc3RpY3Mg
PSBbXTsKKyAgICB3aGlsZSAoY291bnQtLSkKKyAgICAgICAgdGhpcy5zdGF0aXN0aWNzLnB1c2go
bmV3IFN0YXRpc3RpYyk7CisgICAgdGhpcy5zYW1wbGVzID0gW107CisgICAgdGhpcy5zYW1wbGlu
Z1RpbWVPZmZzZXQgPSAwOworfQorCitTYW1wbGVyLnByb3RvdHlwZSA9IHsKKyAgICBzdGFydFNh
bXBsaW5nIDogZnVuY3Rpb24odGltZU9mZnNldCkgeworICAgICAgICBmb3IgKHZhciBpbmRleCA9
IDA7IGluZGV4IDwgdGhpcy5zdGF0aXN0aWNzLmxlbmd0aDsgKytpbmRleCkKKyAgICAgICAgICAg
IHRoaXMuc3RhdGlzdGljc1tpbmRleF0uc3RhcnRTYW1wbGluZygpOworICAgICAgICAgICAgCisg
ICAgICAgIHRoaXMuc2FtcGxpbmdUaW1lT2Zmc2V0ID0gdGltZU9mZnNldCAvIDEwMDA7CisgICAg
fSwKKyAgICBzYW1wbGUgOiBmdW5jdGlvbih0aW1lT2Zmc2V0LCB2YWx1ZXMpIHsKKyAgICAgICAg
aWYgKHZhbHVlcy5sZW5ndGggPCB0aGlzLnN0YXRpc3RpY3MubGVuZ3RoKQorICAgICAgICAgICAg
dGhyb3cgIk5vdCBlbm91Z2ggc2FtcGxlIHBvaW50cyI7CisgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5zdGF0aXN0aWNzLmxlbmd0
aDsgKytpbmRleCkKKyAgICAgICAgICAgIHRoaXMuc3RhdGlzdGljc1tpbmRleF0uc2FtcGxlKHZh
bHVlc1tpbmRleF0pOworICAgICAgICAgICAgCisgICAgICAgIHRoaXMuc2FtcGxlcy5wdXNoKHsg
dGltZU9mZnNldDogdGltZU9mZnNldCAvIDEwMDAsIHZhbHVlczogdmFsdWVzIH0pOworICAgIH0K
K30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvdGVzdHMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy90ZXN0
cy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJj
ZXMvdGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNjIgQEAKK3ZhciBUaXRsZXMg
PSBbCisgICAgeworICAgICAgICB0ZXh0IDogIlRlc3QgTmFtZSIsCisgICAgICAgIHdpZHRoIDog
MzAsCisgICAgICAgIGNoaWxkcmVuOiBbXQorICAgIH0sIHsKKyAgICAgICAgdGV4dCA6ICJQYXJ0
aWNsZXMiLAorICAgICAgICB3aWR0aCA6IDMwLAorICAgICAgICBjaGlsZHJlbjogWworICAgICAg
ICAgICAgeyB0ZXh0OiAgICJBdmcuIiwgd2lkdGg6IDgsIGNoaWxkcmVuOiBbXSB9LAorICAgICAg
ICAgICAgeyB0ZXh0OiAiXHUwMGIxIiwgd2lkdGg6IDcsIGNoaWxkcmVuOiBbXSB9LAorICAgICAg
ICAgICAgeyB0ZXh0OiAgICJTdGQuIiwgd2lkdGg6IDgsIGNoaWxkcmVuOiBbXSB9LAorICAgICAg
ICAgICAgeyB0ZXh0OiAgICAgICIlIiwgd2lkdGg6IDcsIGNoaWxkcmVuOiBbXSB9LAorICAgICAg
ICBdCisgICAgfSwgeworICAgICAgICB0ZXh0IDogIkZQUyIsCisgICAgICAgIHdpZHRoIDogMzAs
ICAgICAgICAgICAgCisgICAgICAgIGNoaWxkcmVuOiBbCisgICAgICAgICAgICB7IHRleHQ6ICAg
IkF2Zy4iLCB3aWR0aDogOCwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICJc
dTAwYjEiLCB3aWR0aDogNywgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICAg
IlN0ZC4iLCB3aWR0aDogOCwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICAg
ICAgIiUiLCB3aWR0aDogNywgY2hpbGRyZW46IFtdIH0sCisgICAgICAgIF0KKyAgICB9LCB7Cisg
ICAgICAgIHRleHQgOiAiU2FtcGxlcyIsCisgICAgICAgIHdpZHRoIDogMTAsCisgICAgICAgIGNo
aWxkcmVuOiBbXQorICAgIH0KK107CisKK3ZhciBTdWl0ZXMgPSBbXTsKKworU3VpdGVzLnB1c2go
eworICAgIG5hbWU6ICJIVE1MIEJvdW5jaW5nIFBhcnRpY2xlcyIsCisgICAgcHJlcGFyZTogZnVu
Y3Rpb24ocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAg
cmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgiI3N0YWdlIikudGhlbihmdW5jdGlvbiAoZWxl
bWVudCkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0s
ICAKKyAgICBydW46IGZ1bmN0aW9uKGNvbnRlbnRXaW5kb3csIHRlc3QsIG9wdGlvbnMsIHJlY29y
ZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgICAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5C
ZW5jaG1hcmsodGhpcywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsK
KyAgICB9LAorICAgIHRpdGxlcyA6IFRpdGxlcywKKyAgICB0ZXN0czogWworICAgICAgICB7IAor
ICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctc2hhcGVzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEw
MCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9
Y2lyY2xlIiwKKyAgICAgICAgICAgIG5hbWU6ICJib3VuY2luZyBjaXJjbGVzIiwKKyAgICAgICAg
ICAgIHdlaWdodDogMSwKKyAgICAgICAgICAgIG1heDogMjAwMAorICAgICAgICB9LCB7IAorICAg
ICAgICAgICAgdXJsOiAiYm91bmNpbmctc2hhcGVzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZy
ZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9NDAmcGFydGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVj
dCZjbGlwPXN0YXIiLAorICAgICAgICAgICAgbmFtZTogImJvdW5jaW5nIGNsaXBwZWQgcmVjdHMi
LAorICAgICAgICAgICAgd2VpZ2h0OiAxLAorICAgICAgICAgICAgbWF4OiAxMDAwCisgICAgICAg
IH0sIHsgCisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1zaGFwZXMuaHRtbD9nYWluPTEmYWRk
TGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFydGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01
MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVudCIsCisgICAgICAgICAgICBuYW1lOiAiYm91bmNp
bmcgZ3JhZGllbnQgY2lyY2xlcyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAg
ICBtYXg6IDUwMAorICAgICAgICB9LCB7CisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1pbWFn
ZXMuaHRtbD9nYWluPTAuNCZhZGRMaW1pdD01JnJlbW92ZUxpbWl0PTImcGFydGljbGVXaWR0aD04
MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz1yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKKyAg
ICAgICAgICAgIG5hbWU6ICJib3VuY2luZyBTVkcgaW1hZ2VzIiwKKyAgICAgICAgICAgIHdlaWdo
dDogMSwKKyAgICAgICAgICAgIG1heDogMjAwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHVy
bDogImJvdW5jaW5nLWltYWdlcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9
NSZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPXJlc291cmNlcy95
aW4teWFuZy5wbmciLAorICAgICAgICAgICAgbmFtZTogImJvdW5jaW5nIFBORyBpbWFnZXMiLAor
ICAgICAgICAgICAgd2VpZ2h0OiAxLAorICAgICAgICAgICAgbWF4OiAyMDAwCisgICAgICAgIH0K
KyAgICBdCit9KTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICJDYW52YXMgQm91bmNpbmcg
UGFydGljbGVzIiwKKyAgICBwcmVwYXJlOiBmdW5jdGlvbihydW5uZXIsIGNvbnRlbnRXaW5kb3cs
IGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50
KCIjc3RhZ2UiKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICByZXR1cm4g
ZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAgfSwgIAorICAgIHJ1bjogZnVuY3Rpb24oY29udGVu
dFdpbmRvdywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAg
ICAgIHJldHVybiBjb250ZW50V2luZG93LnJ1bkJlbmNobWFyayh0aGlzLCB0ZXN0LCBvcHRpb25z
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIH0sCisgICAgdGl0bGVzIDogVGl0bGVz
LAorICAgIHRlc3RzOiBbCisgICAgICAgIHsgCisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1j
YW52YXMtc2hhcGVzLmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAwJnBh
cnRpY2xlV2lkdGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKKyAgICAgICAg
ICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgY2lyY2xlcyIsCisgICAgICAgICAgICB3ZWlnaHQ6
IDEsCisgICAgICAgICAgICBtYXg6IDQwMDAKKyAgICAgICAgfSwgeyAKKyAgICAgICAgICAgIHVy
bDogImJvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92
ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0
JmNsaXA9c3RhciIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGNsaXBwZWQg
cmVjdHMiLAorICAgICAgICAgICAgd2VpZ2h0OiAxLAorICAgICAgICAgICAgbWF4OiAxMDAwCisg
ICAgICAgIH0sIHsgCisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0
bWw/Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAwJnBhcnRpY2xlV2lkdGg9NTAm
cGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3JhZGllbnQiLAorICAgICAgICAg
ICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBncmFkaWVudCBjaXJjbGVzIiwKKyAgICAgICAgICAg
IHdlaWdodDogMSwKKyAgICAgICAgICAgIG1heDogMTAwMAorICAgICAgICB9LCB7IAorICAgICAg
ICAgICAgdXJsOiAiYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sP2dhaW49MC40JmFkZExpbWl0
PTUmcmVtb3ZlTGltaXQ9MSZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdl
U3JjPXJlc291cmNlcy95aW4teWFuZy5zdmciLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBi
b3VuY2luZyBTVkcgaW1hZ2VzIiwKKyAgICAgICAgICAgIHdlaWdodDogMSwKKyAgICAgICAgICAg
IG1heDogMjAwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLWNhbnZh
cy1pbWFnZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwMCZyZW1vdmVMaW1pdD0xMDAwJnBhcnRp
Y2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9cmVzb3VyY2VzL3lpbi15YW5n
LnBuZyIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIFBORyBpbWFnZXMiLAor
ICAgICAgICAgICAgd2VpZ2h0OiAxLAorICAgICAgICAgICAgbWF4OiA1MDAwCisgICAgICAgIH0K
KyAgICBdCit9KTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICJTVkcgQm91bmNpbmcgUGFy
dGljbGVzIiwKKyAgICBwcmVwYXJlOiBmdW5jdGlvbihydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNv
bnRlbnREb2N1bWVudCkgeworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCIj
c3RhZ2UiKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICByZXR1cm4gZWxl
bWVudDsKKyAgICAgICAgfSk7CisgICAgfSwgIAorICAgIHJ1bjogZnVuY3Rpb24oY29udGVudFdp
bmRvdywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgICAg
IHJldHVybiBjb250ZW50V2luZG93LnJ1bkJlbmNobWFyayh0aGlzLCB0ZXN0LCBvcHRpb25zLCBy
ZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIH0sCisgICAgdGl0bGVzIDogVGl0bGVzLAor
ICAgIHRlc3RzOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXN2Zy1z
aGFwZXMuaHRtbD9nYWluPTYmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMDAmcGFydGljbGVX
aWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUiLAorICAgICAgICAgICAgbmFt
ZTogIlNWRyBib3VuY2luZyBjaXJjbGVzIiwKKyAgICAgICAgICAgIHdlaWdodDogMSwKKyAgICAg
ICAgICAgIG1heDogNjAwMAorICAgICAgICB9LCB7CisgICAgICAgICAgICB1cmw6ICJib3VuY2lu
Zy1zdmctc2hhcGVzLmh0bWw/Z2Fpbj0wLjYmYWRkTGltaXQ9MTAmcmVtb3ZlTGltaXQ9MSZwYXJ0
aWNsZVdpZHRoPTQwJnBhcnRpY2xlSGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKKyAg
ICAgICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcgY2xpcHBlZCByZWN0cyIsCisgICAgICAgICAg
ICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDEwMDAKKyAgICAgICAgfSwgeworICAgICAg
ICAgICAgdXJsOiAiYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP2dhaW49MC44JmFkZExpbWl0PTEw
JnJlbW92ZUxpbWl0PTQmcGFydGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1j
aXJjbGUmZmlsbD1ncmFkaWVudCIsCisgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIGdy
YWRpZW50IGNpcmNsZXMiLAorICAgICAgICAgICAgd2VpZ2h0OiAxLAorICAgICAgICAgICAgbWF4
OiAxMDAwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXN2Zy1pbWFn
ZXMuaHRtbD9nYWluPTAuNCZhZGRMaW1pdD01JnJlbW92ZUxpbWl0PTImcGFydGljbGVXaWR0aD04
MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz1yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKKyAg
ICAgICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcgU1ZHIGltYWdlcyIsCisgICAgICAgICAgICB3
ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDIwMAorICAgICAgICB9LCB7CisgICAgICAgICAg
ICB1cmw6ICJib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1v
dmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9cmVz
b3VyY2VzL3lpbi15YW5nLnBuZyIsCisgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIFBO
RyBpbWFnZXMiLCAgICAgICAgICAgIAorICAgICAgICAgICAgd2VpZ2h0OiAxLAorICAgICAgICAg
ICAgbWF4OiA0MDAwCisgICAgICAgIH0KKyAgICBdCit9KTsKKworZnVuY3Rpb24gc3VpdGVGcm9t
TmFtZShuYW1lKSB7CisgICAgcmV0dXJuIFN1aXRlcy5maW5kKGZ1bmN0aW9uKHN1aXRlKSB7IHJl
dHVybiBzdWl0ZS5uYW1lID09IG5hbWU7IH0pOworfQorCitmdW5jdGlvbiB0ZXN0RnJvbU5hbWUo
c3VpdGUsIG5hbWUpIHsKKyAgICByZXR1cm4gc3VpdGUudGVzdHMuZmluZChmdW5jdGlvbih0ZXN0
KSB7IHJldHVybiB0ZXN0Lm5hbWUgPT0gbmFtZTsgfSk7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3lpbi15YW5nLnN2Zwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3lpbi15YW5nLnN2ZwkocmV2aXNpb24g
MCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMveWluLXlhbmcuc3Zn
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKKzxzdmcgdmVyc2lvbj0iMS4xIiB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjAwIDIwMCI+DQorICA8ZGVmcz4NCisgICAg
PGNsaXBQYXRoIGlkPSJsZWZ0LWhhbGYiPg0KKyAgICAgIDxyZWN0IHdpZHRoPSIxMDAiIGhlaWdo
dD0iMjAwIi8+DQorICAgIDwvY2xpcFBhdGg+DQorICAgIDxjbGlwUGF0aCBpZD0icmlnaHQtaGFs
ZiI+DQorICAgICAgPHJlY3QgeD0iMTAwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjIwMCIvPg0KKyAg
ICA8L2NsaXBQYXRoPg0KKyAgPC9kZWZzPg0KKyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iMTAwIiBy
PSI5OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJncmVlbiIgc3Ryb2tlLXdpZHRoPSIyIi8+DQorICA8
Y2lyY2xlIGN4PSIxMDAiIGN5PSIxMDAiIHI9Ijk4IiBmaWxsPSJ3aGl0ZSIgY2xpcC1wYXRoPSJ1
cmwoI2xlZnQtaGFsZikiLz4NCisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjEwMCIgcj0iOTgiIGZp
bGw9ImdyZWVuIiBjbGlwLXBhdGg9InVybCgjcmlnaHQtaGFsZikiLz4NCisgIDxjaXJjbGUgY3g9
IjEwMCIgY3k9IjUwIiAgcj0iNDkiIGZpbGw9ImdyZWVuIi8+DQorICA8Y2lyY2xlIGN4PSIxMDAi
IGN5PSIxNDgiIHI9IjQ5IiBmaWxsPSJ3aGl0ZSIvPg0KKyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0i
NTAiICByPSIxMCIgZmlsbD0id2hpdGUiLz4gICAgDQorICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSIx
NDgiIHI9IjEwIiBmaWxsPSJncmVlbiIvPg0KKzwvc3ZnPg0KSW5kZXg6IFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci9yZXNvdXJjZXMveWluLXlhbmcucG5nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRp
c3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFn
ZS9wbmcKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMveWluLXlh
bmcucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJj
ZXMveWluLXlhbmcucG5nCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Jlc291cmNlcy95aW4teWFuZy5wbmcJKHdvcmtpbmcgY29weSkKClByb3BlcnR5IGNoYW5n
ZXMgb246IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMveWluLXlhbmcucG5n
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAjIworaW1hZ2UvcG5n
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKCmlWQk9SdzBLR2dvQUFBQU5TVWhFVWdB
QUFHUUFBQUJrQ0FZQUFBQnc0cFZVQUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk4KQUFC
NkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQUNYQklXWE1B
QUFzVEFBQUxFd0VBbXB3WQpBQUFDQkdsVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFB
UEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1CmN6cHRaWFJoTHlJZ2VEcDRiWEIw
YXowaVdFMVFJRU52Y21VZ05TNDBMakFpUGdvZ0lDQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTkK
SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVj
eU1pUGdvZ0lDQWdJQ0E4Y21SbQpPa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlnb2dJ
Q0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cGxlR2xtUFNKb2RIUndPaTh2CmJuTXVZV1J2WW1VdVkyOXRM
MlY0YVdZdk1TNHdMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02ZEdsbVpqMGlhSFIwY0Rvdkwy
NXoKTG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aVBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFY
aGxiRmxFYVcxbGJuTnBiMjQrTVRFdwpQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lD
QWdJQ0FnSUNBZ1BHVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQakV3Ck5Ud3ZaWGhwWmpwUWFY
aGxiRmhFYVcxbGJuTnBiMjQrQ2lBZ0lDQWdJQ0FnSUR4MGFXWm1Pazl5YVdWdWRHRjBhVzl1UGpF
OEwzUnAKWm1ZNlQzSnBaVzUwWVhScGIyNCtDaUFnSUNBZ0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5
dVBnb2dJQ0E4TDNKa1pqcFNSRVkrQ2p3dgplRHA0YlhCdFpYUmhQZ29VbkEyK0FBQU5XRWxFUVZS
NEFlMWRmV3dVMVJZL3U2VkNXMHFyaUNRa1VDRlJRQUpJQ0FoUm9jVEVZZzBFClZFVDhDeEFTRVNJ
eHdoOGFCVEhCcURVR0ErODlEV0Q0eHc5UWkwRmpTRVN0aVpGV3FSSENxNkRRQkpOWHFueklSNHJZ
VXM0N3Z6TU0KSFliZHptNzM3bnpzOWlTek03c3plei9PYis0OTU1NTc3emt4Q2preDgzZ3A0aHc1
cHRLcFU4UG8yTEZCMU5KU1FpZE9GTks1Y3dWMAo0UUpSZTN0TXEzSEREVXpGeFVRREJuVFNvRUVk
TkdSSUcxVlVuS0NCQTMrWCszdmwrRFFXaSszWFowUDZZVlVrUklVVEFHWktjWmJUCm9VTVRxYjcr
Rm1wc0xLQ2ZmeWJhTDN4c2J5ZGl0czZwbERrZUo0cEpGUXNMaVc2N2plaXV1NGp1dnJ1VHBrejVr
MGFOMmlkSi9Gc0EKMnAxS1VubjFqSUN3bE52YTl2UDI3ZTI4YUJIenNHSE13NGN6UC9nZzg3MzNN
aGNYQXdZelIwa0pjLy8rekFNSE1zK2J4NW9uOHBZeQo1QlhUM1pVVkJveVJZdzkvOGtrN3o1L1Az
S2NQYzNVMTg2Wk56Rjk5eGJ4NHNSa0F2SUFzSzJPT3g1a2ZlSUM1dHJaZHl5UmxjNWMzClo3OUxo
ZWZ3OGVOSGVkMjZ5OW9TS2l1WjMzbUgrZlJwdVNWVVU4TmNVT0FQR0c2d3lzdXRsb095b1l4UzFs
d0dZallmT2ZJL1hyR0MKT1JaamZ1b3A1cDkrVWd6MG83V1ZlZGFzWUlCd0ExTlVaSlZqeVJMV01q
UFB6aGxnaE5sRCtlVEpKbjdtR2VhK2ZabWZmNTRaekhkUwpRd1B6aUJIaEFNTUpEbG9xRHJ3OHFJ
UFVKZExBU0FXMjhJWU5uVHhnQVBQS2xkY0RBVkMrK1lhNXREUjhZRGlCd1l2VXJ4OUxYUzZoClRw
RURSUW85Zyt2cno2cUdCRUh0N0pyazVsVkN5d2c3R0U1Z29BQ01IY3RhTjZsakpJQVJabS9nOWVz
dnEyb0pZWjJNMEcyRnNadHkKQXBEc3VyQ1ErWlZYTHFPdW9RVkZDbGNpbXNsL1ZUQ2pWVFEzSjRQ
QytqMHNBandaMDcxK1IydVpObzIxemxMM1VBRWpISjdBWDMvZApwbXJzMnJYZEE0RzdVRzI5S2h5
Vit4aGdvdTdDZzFDQUlnV3A0bmZmN1ZBTmF2dDJzTHQ3UXNzSmFweVJMWkJSSC9CQWVCRW9LRktB
CmhmejY2NTFxNW9DQVRvWDhHb0ZuaS9uSjBvVTVwcWFtRXp3SkJCVEplRFcvOU5KbHZ2Tk9iM2xo
QTNYd1lPNTBWWW1BZ1Z6QktGOTQKNHlzb2VBc1VqTW1URTQ4dGJBRGNaNHpTRTFVa2wzN3JBc1dm
bGlJOHJ0SnVDaTNEUGVKMkErRDhma25HVkZFYWMyVHlrZ0FVcS92Swpya3dSL2s1UTRRWFR1SmRh
NndRRDF6dDI1SDdyY0lJSW1iSnRHd1I5ZHJRdlNiaEUxVHVZRVZJVjRBRENwbHdWNWs0UTNOZlF2
aXlWCjJQdzRoVnRhbW5TY2tZcHFhNFBnUEVkMVZPNW1jcnJmTVU2UkFiTlJJUzk4M2FBajhGUUdm
VTRRN0d2SW1uUXJrc3J6anovTy9PMjMKekJjdldnZXU4VnNxLy9YekdZem9UWmxaSktFWmFwdUNP
YVNuQkl1dWFRYTg4VWJ5MHVDZTZmd3lTUTlDM3JKOVpXNlFWTXNtQkZTNgpRdHpKcm0zYnpESUly
Y0NMd3RaU1lKQnNhRGliVWRjbGRkNmlKdlR1ckxaZWpNRjkwN1lyZEUxZWhHY3llYXV6OGQ5eDQx
RHFuczJuCnlCK0g2dVJTSmwyVnpiUjE2OHd5QnpMRGkvQk1OcGlhU1pyb3VqQmgxNU9aUjUyeXhF
eGZzc2tsTDRZNDcvY0MwdlZ5WU9ieDFLbW0KWkYyWHJDUzdub1NYczJuOSt0RzBhQkhSQkFQakdx
d21ORWtORGQ2cHBmS01keXJtbndBMEw3NDRXbm1jYXVxNjBnSUR3SFJNSTg0Vwo0Yjd1RmVwZExR
UmRIZ2FNc2dJbkpUeUVsM04wcVE1V2g1aWlmRmQ3M1hJSGdHQ0pVU3Jydm1SVTJhenJwa3kxRG1T
Yjd3TkROeUQyCjk5YldvOTIyRW1IZEdMWG5ZeDJTYWNwWDA0bk5mUGNaaS9GZWZobHpKOG1YcmNy
TlBXcXZNcUZadVFITlIrT2lHd1QzZDlpNWhPZk8KVm5LdGxsVmJPNDFHakRDaldUbHp3ZlZNN0RM
b3BXczQwTmxKdEhQbk5PZHZWd0VScEpiU2poMkZ0R0NCODc2NTY0Y2VJaW90TlpkZQpMcVIwNWd6
UmxpMWlVMG13RlVMM1oyQkxnTDBLSFkzSk5PWERGSzY3Vy9MNkRvM3J3b1g5OXZ0MXRZWFE1NStQ
cHZ2dko3cnhSdnVlCitmT1RUNXBQTStvcDl1OVB5dnNyOVZCQXBDRlUwKzdkaFZSZG5kM3FqUkdG
WXZIaTdPWVJ0ZFRQaWdINDQ0L1JiWFV4WDc1OHB0clYKNGNPbU82bnIwOHZGaFhKZTNaTFhmVXZi
K2d6dmt0VmxZWU5sUVFIUjdiZG4vLzBhUHB6bzFWZXpuMCtVY3Zqbkg2TERoeWVpeUJZZwoyTzA2
ZGFwL1ZWaTFpbWpXTFAveUMzdE8yQ2tNRElSa3Q2UHNBOGZXNDBtVC9DMzI1czJrWXg1L2N3MW5i
dWZQRTMzM25haGJQQjR0ClpLN3VBUitQL2ZrKzB1REJSQjk4MERzMnNWbit3dys0bWd0QXB0QXZ2
eERkY1lkOXk3L3o1TWxFdTNiMWdnS09OemZqYzBwYzNWVmcKQ0k4M05naXFyQ1RhSStZY21Henlt
VG82aUU2ZkhoWlgzeUVWRmNHeUFpM2wrKy96VzlEMzYwZkFJcTZPWElZTUNSWVE1STRXaXU2cgpw
b1pVQlErK1JQNlhRSnpxeE5XcnppMnFjZmxmZ0VRNVFpWCs3YmY4RzlGRGJKdzhXUmhYRjBkbFpZ
bFlFOXh2R0R4dTNVcDA4Q0RSCmloWDVJZlFoUTg2ZUxZaXJ2NmtTODR1emphQUoyOWZHalVSLy9V
VXlOV0MxbWx3Vi9wY3VFYkRvbzg2LzRFOHF6QVN6enJ4NTFvRnkKL3ZFSHFhcCs3QmhKbDZzVm9i
VnJ3MXdENzdLaHl4SkhiSDI4bnd6aEUxQUEzR3I2bWpYWEZ4UzZmVjBkaVNXYnFMYVdDSlVPT2NV
SgpidkhRZitVaW9YdUR1Ui9kSGJvOWRIL29Cc05JNkFVRWk3ajZLR3hyQzJNUnpaWUowOGRRRUtB
b1FHR0E0aEFtNmlPZGxhendqS3ZEClNNenQ1aE9oMVVDMWhvb2RGb0ljTHl2cmpLdjNUZ2pHZkNO
MEVSaUVZakRxbGtkQjhBTGx1Zm5tanJpNlVtMXBDYUlJNGNnVDh6SXcKMjhCOEV6U0pXOXU0K3JX
RitwalBCT0VQQTJkbFpYQmN1SGlSZ0VWY25ReWp1VUMzejJlQzBFZjNGVlJMZ1F5NTZhYmY0NEpC
UFkwZQpUZFRVbE05d1dIVUhLSmcwQzBLbVdCYUl2UUJrSjJHMkVKNmplOG1hbDhIMHN0OWt0Y3hQ
NCtvTGZlTEVUdnJ4UjcrTEVONzhJT2o5ClZJblJNdSs1cHhOWW9JWEl4S0g0UXQrN043d01DcUpr
V0tyazErQVIrNnVBZ1pBRnlLaFJqV3JuK2ZYWElLb2V6anloNkx6d2dqOWwKNjl1WGFPUklCQWU0
QWdqUnYraSsrNGkrL05LZkFrUWxGNHpvL2JCOWdmY1NxUUVmMmtJMFpNUE1tUjMweFJmNHJaZWNI
TWoyQW5GTQpEajd5U0ljZE5pTm01NDN0Q0dKTEdVZC9TbGVXelJYd2RvWlJPV01SRy9pUkxkTTl1
c2J6NXcvRWlvdEYxZTNxc21CcDNFUVBQMHowCjBVZFJZWlUvNVlRR2hNMUcyYUtxS3FLaW9rMTI4
cFpRbDIvU1pEYlQvUGtkT2pDeTcvYWVMUTVrYXp0ZWVUblJraVhvcmhJUGZHUnQKYWZZMmZWNi9N
U0U2dnh3OWV1M0dmNi90QmFuZTk5ejBTYlNTbm5pQ1pkOWJOTnJHKys4VFRaOU9oRVZtT0hDTjMw
eFROaFpXRkJVSgp0MWZLQUVSNDNoMWx4WEZBTnRyQ3M4OG1mMnR4enpTbCt0YW44NXlYNHdBQUpm
VXc3MXJETkhQZWV5ODVHRFpEOEl4SnN0TTFjVTdICnRZYUNndEJFTXVGdXpQbU1TY1lnTGZndzlH
S001ZWZRWE01ZSthVnpQeDNuTTFkYXlXd05VWVNvT0dFa2VDcnlZZ0NlTVVsZSthVjYKSCtWYXZo
d2xTeSt1bFRvd2d3ZTBiTGpaeUpSUlVRYWtKdzdNMEVwa0pyR0t4TEc4YndZMnpUVEZEMFRzOUtK
VW52Rkt3L1I5bUVsZQplKzJ5ekF6S2FMQUhKQyt5R1NlWW1iWUk5LytqS3RRemNZSnA0MmZFVGF5
Ym9TYStSMDN0TmVFbUZxQUk3MmFvRTJBVDNrbE5BT0ZNCkF5MEYyaFJrQ2c1Y20xWjM3ZnhTRmRx
Sm5qUHBTUGtLS0ptNUdyY3JGZFZ6cHFZVFN3VTNHOUZObzVFaGluTlBuZkZIRlF5VWUrdFcKYnpV
N1VjdkFiN0JYdGJhYWRjWi9wWlZZNFNvd1lLeXZqeko3MHk4N3dud25ZM2gzdjJNQVdGZUhDRzRs
NEtGeGtvU3RnQzYzM3NxTQpacHdQZE81Y3o2TEtaVHVnaTQydVlGQ2w0WHpTRFhrVVZmQTJia3kv
ZFVDSSt4SHl5QUhLUXZWZU9tbFNlTzFkcGw2QU1XUFNBd1JnCldKSGFGdHI4OHVVczlWMnRHYU9s
NUdyM2xhNHc3d0pqdFM4Z3VETVJVQlpxMDRSTXlUVkJqNmh5Q0g3V25kQjIzZ3M2c0tRTmpvQlMK
cGRISW9IMTkrS0dwamlMNGRGYXRTaDBNYUZOV1JMYWUyYWhzWnBvNkMvZXM0TVFWRmN4cjFnVFB6
RXhMc0d0WDZtQmduR0dwdGhOTQo4ZE5JT3NLREVvM2tockRjTUxORVZhNmczSU1IZXdNQ2VZRVIr
UEhqVGFpN0VTWm1JeEVwM0FhMWZaV1VNR2NhS2luVE56M2QvMlBNCmdYQ3lUdG1RNkRvS0FlNmQ0
QW9mWmlBQWxyNUJhQzJOamVteXh2L25BVVpsWmZkZ29GWEFoSTY2U1IyZGRZN0V0UlI2aThaY1Fr
V2UKZmpxOFl4WjBVOTIxREZpU01kUDMxbHVkcUZNa21KK3NrRktCb1lpNXBIUDAwTVNlZXk1Y3dF
Q0FKNU1aMEo1d1lBNGNkZWhKTUs5awpqQW42ZDZuTWJBMmxCUC92c1JqenNtWEJkbVVZWnlSVGJS
SGJBN0lEVVhDd0FpZmRCUWxCTXp1ZC9LVnljOFFjM2F6QlRLQW1UNS9PCi9QYmJlQVBsbGsrRUVY
aWlRVjk1dVdVdVI2QVZsREdWa0VUcFZEN016MHBseFVna2E0bHJhOXY1c2NlWW9ibEFBWUF4NzlB
aDg4aEEKYUNOdHQyMEs4ZzNkRXZKR1dWQ203cUxlaEptcHBzb21ERmlLa0EwU2M3MmRFWWtITFFm
bW1BVUxtTjk4RXlHd21jK2NrY2ZTSkFocgp0QWJNWjREcDZJWktTNWxoNXNDQTd0RkhFZWU5WGZO
T0ZNUERWQVhUU09mcWhwMDAvcFBWUjRYbDFaTEJNdldGRHZmYisvWVYwSUVECjFqNTZlRjJEQjFW
c014czdsbWpvVUd5MnR4WmExOVVSL2YwM1hLMlNPUFlrT25LRWRQTVJQQ1JnVXo0V1RHUHJzZXgy
MVEyV0kwYzIKU2o3L2thMEFvZG8yRmpwQTNHZ0xRTmhaTkZlT0tmQnJxMjV0eFhzbkhFYkNSNkc2
S0JSUGJQby8wZUxVM1pSNDFZRWpGL1hqSXU0cQo0Q0ZCN3RmTHNWTUFDUFdHL1A4RFJucS9hTTZO
OHEwQUFBQUFTVVZPUks1Q1lJST0KCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261567</attachid>
            <date>2015-09-18 20:53:14 -0700</date>
            <delta_ts>2015-09-18 21:25:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149053-20150918205300.patch</filename>
            <type>text/plain</type>
            <size>148160</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAwMDQpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1NyBAQAorMjAxNS0wOS0xOCAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdv
cmsgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQuIE1hbnkgcGFydHMgb2YgdGhlIGNvZGUgd2Fz
IGNvcGllZAorICAgICAgICBmcm9tIHNwZWVkb21ldGVyIGJlbmNobWFyay4gVGhlIGJlbmNobWFy
ayBydW5uZXIncyBuYW1lIGlzICJhbmltb21ldGVyLmh0bWwiCisgICAgICAgIGJ1dCB0aGlzIGlz
IG5vdCBmaW5hbCB5ZXQgYW5kIG1vc3QgcHJvYmFibHkgaXMgZ29pbmcgdG8gY2hhbmdlLiBUaGUg
Y3NzIAorICAgICAgICBhbmQgdGhlIHBhZ2UgbGF5b3V0cyB3aWxsIGJlIHJldmlzZWQgZm9yIGJl
dHRlciBsb29raW5nLgorCisgICAgICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgYmVuY2htYXJrIGlz
IHRvIG1lYXN1cmUgdGhlIGFuaW1hdGlvbiBwZXJmb3JtYW5jZSBvZgorICAgICAgICBhIHdlYiBi
cm93c2VyIGluIGFjY3VyYXRlIHdheSBidXQgYXQgZmluZSBncmFudWxhciBsZXZlbC4gVGhlIGRl
c2lnbiBpcworICAgICAgICB0byBoYXZlIHNlcGFyYXRlIGFuaW1hdGlvbnM7IGVhY2ggc3RyZXNz
IHRlc3RzIG9uZSBvZiB0aGUgZ3JhcGhpY3MgcHJpbWl0aXZlcworICAgICAgICBzbyB3ZSBjYW4g
aWRlbnRpZnkgYnVncyBhIGxvdCBlYXNpZXIuCisKKyAgICAgICAgSW5zdGVhZCBvZiBtZWFzdXJp
bmcgdGhlIEZQUyBvZiB0aGUgYW5pbWF0aW9uLCB0aGUgImFuaW1vbWV0ZXIiIGJlbmNobWFyawor
ICAgICAgICB0cmllcyB0byBtZWFzdXJlIHRoZSB0ZXN0IGNvbXBsZXhpdHkgd2hlbiByZW5kZXJp
bmcgYXQgYSBzZXQtcG9pbnQgRlBTIHdoaWNoCisgICAgICAgIHNob3VsZCBiZSBsZXNzIHRoYW4g
NjAgRlBTLiBUaGUgImFuaW1vbWV0ZXIiIHN0YXlzIGF0IHRoZSBzZXQtcG9pbnQgRlBTCisgICAg
ICAgIGJ5IHVzaW5nIGEgY2xvc2VkLWxvb3AgY29udHJvbCBzeXN0ZW0gUElEIGZ1bmN0aW9uLiBU
aGUgZ2FpbiBvZiB0aGUgc3lzdGVtCisgICAgICAgIGlzIHBhc3NlZCBhcyBhIHBhcmFtZXRlciB3
aGVuIHJ1bm5pbmcgdGhlIHRlc3QuIE1lYXN1cmluZyB0aGUgRlBTIGZhaXRoZnVsbHkKKyAgICAg
ICAgcmVzdWx0cyBpbiB2ZXJ5IGZsdWN0dWF0aW5nIHZhbHVlcy4gU28gYSBLYWxtYW4gZmlsdGVy
IGlzIHVzZWQgdG8gZ2l2ZSBhCisgICAgICAgIGJldHRlciBlc3RpbWF0ZSBmb3IgdGhlIGN1cnJl
bnQgRlBTLgorCisgICAgICAgIFRoZSBhbmltYXRpb24gb2YgdGhlIHRlc3RzIGlzIGRvbmUgbWFu
dWFsbHkuIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGlzCisgICAgICAgIGNhbGxlZCB3aXRoIGEg
Y2FsbGJhY2suIEluc2lkZSB0aGlzIGNhbGxiYWNrLCB0aGUgdGVzdCBpcyBhbmltYXRpbmcgYnkK
KyAgICAgICAgY2hhbmdpbmcgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZWxlbWVudHMgaW5zaWRlIHRo
ZSBwYWdlLiBUaGUgdGVzdCBjb21wbGV4aXR5CisgICAgICAgIG1heSBjaGFuZ2UgYWxzbyBpZiB0
aGUgY3VycmVudCBGUFMgaXMgbm90IGVxdWFsIHRvIHRoZSBkZXNpcmVkIEZQUy4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFuaW1vbWV0ZXI6IEFk
ZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgCisg
ICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvbWFpbi5qczogQWRkZWQuCisgICAgICAgIChQ
b2ludCk6IEEgcG9pbnQgb2JqZWN0CisgICAgICAgIChJbnNldHMpOiBBbiBpbnNldHMgb2JqZWN0
CisgICAgICAgIChTaW1wbGVQcm9taXNlKTogQW4gaW1wbGVtZW50YXRpb24gZm9yIGEgcHJvbWlz
ZSBvYmplY3QgKGNvcGllZCBmb3JtIHNwZWVkb21ldGVyKS4KKyAgICAgICAgKE1hdHJpeCk6IEEg
bWF0cml4IG9iamVjdC4KKyAgICAgICAgKFZlY3RvcjMpOiBBIHZlY3RvciBvZiBzaXplIDMgb2Jq
ZWN0LgorICAgICAgICAoTWF0cml4Myk6IEEgbWF0cml4IG9mIHNpemUgM3gzIG9iamVjdC4KKyAg
ICAgICAgKE9wdGlvbnMpOiBCZW5jaG1hcmsgcnVubmluZyBvcHRpb25zIGFzIHRoZXkgYXJlIHNl
dCBieSB0aGUgdXNlci4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgKFByb2dyZXNzQmFyKTog
TWFuYWdlcyBhIHByb2dyZXNzIGJhciBlbGVtZW50LiBUaGUgcHJvZ3Jlc3MgYmFyIGlzIGRpdmlk
ZWQgaW50byBlcXVhbCBsZW5ndGggcmFuZ2VzLgorICAgICAgICAoUHJvZ3Jlc3NCYXIucHJvdG90
eXBlLl9wcm9ncmVzc1RvUGVyY2VudCk6IENvbnZlcnRzIHRoZSBwcm9ncmVzcyBpbnRvIGEgcGVy
Y2VudGFnZS4KKyAgICAgICAgKFByb2dyZXNzQmFyLnByb3RvdHlwZS5pbmNSYW5nZSk6IE1vdmVz
IHRvIHRoZSBuZXh0IHJhbmdlIChhIHJhbmdlIGlzIHRoZSBydW5uaW5nIHRpbWUgb2YgYSBzaW5n
bGUgdGVzdCkuCisgICAgICAgIChQcm9ncmVzc0Jhci5wcm90b3R5cGUuc2V0UG9zKTogRHJhd3Mg
dGhlIGN1cnJlbnQgcHJvZ3Jlc3MgaW4gdGhlIGN1cnJlbnQgcmFuZ2UuCisgICAgICAgIAorICAg
ICAgICAoUmVjb3JkVGFibGUpOiBTaG93cyB0aGUgcmVzdWx0cyBvZiBydW5uaW5nIGEgYmVuY2ht
YXJrIGluIGEgdGFidWxhciBmb3JtLgorICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLmNs
ZWFyKTogQ2xlYXJzIHRoZSByZXN1bHRzIHRhYmxlLgorICAgICAgICAoUmVjb3JkVGFibGUucHJv
dG90eXBlLl9zaG93VGl0bGVzKTogU2hvd3MgdGhlIGhlYWRlciB0aXRsZXMgYW5kIGFwcGVuZHMg
dGhlIHN1Yi10aXRsZXMgdG8gYSBxdWV1ZS4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlw
ZS5fc2hvd0hlYWRlcik6IFNob3dzIHRoZSB0YWJsZSBoZWFkZXIgdGl0bGVzLgorICAgICAgICAo
UmVjb3JkVGFibGUucHJvdG90eXBlLl9zaG93RW1wdHkpOiBTaG93cyBhbiBlbXB0eSB0YWJsZSBj
ZWxsLgorICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLl9zaG93VmFsdWUpOiBTaG93cyBh
IG51bWJlciB2YWx1ZSBpbiB0aGUgcmVzdWx0cyB0YWJsZS4KKyAgICAgICAgKFJlY29yZFRhYmxl
LnByb3RvdHlwZS5fc2hvd1NhbXBsZXMpOiBTaG93cyBhIGJ1dHRvbiBmb3IgdGhlIHNhbXBsZWQg
ZGF0YSBncmFwaC4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5fc2hvd1Rlc3QpOiBT
aG93cyB0aGUgcmVzdWx0cyBvZiBhIHNpbmdsZSB0ZXN0LgorICAgICAgICAoUmVjb3JkVGFibGUu
cHJvdG90eXBlLl9zaG93U3VpdGUpOiBTaG93cyB0aGUgcmVzdWx0cyBvZiBhIHNpbmdsZSBzdWl0
ZS4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5zaG93UmVjb3JkKTogICAgICAgIAor
ICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLnNob3dJdGVyYXRpb25zKTogU2hvd3MgdGhl
IHJlc3VsdHMgb2YgYWxsIHRoZSBzdWl0ZXMgb2YgdGhlIGl0ZXJhdGlvbnMuIAorICAgICAgICAK
KyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKFN0YXRpc3RpYyk6IE1lYXN1cmVzIHRoZSBzYW1wbGUgbWVhbiBhbmQgc3RhbmRhcmQg
ZGV2aWF0aW9uIGZvciBhIHNldCBkYXRhIHBvaW50cy4KKyAgICAgICAgKFN0YXRpc3RpYy5zYW1w
bGVNZWFuKTogUmV0dXJucyB0aGUgc2FtcGxlIG1lYW4gZm9yIGEgc2V0IG9mIGRhdGEgcG9pbnRz
LgorICAgICAgICAoU3RhdGlzdGljLnNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uKTogUmV0dXJucyB0
aGUgc2FtcGxlIHN0YW5kYXJkIGRldmlhdGlvbiBmb3IgYSBzZXQgb2YgZGF0YSBwb2ludHMuCisg
ICAgICAgIChTdGF0aXN0aWMucHJvdG90eXBlLl9pbml0KTogQ2FsbGVkIHdoZW4gdGhlIG9iamVj
dCBpcyBjcmVhdGVkIGFuZCB3aGVuIHN0YXJ0U2FtcGxpbmcoKSBpcyBjYWxsZWQuCisgICAgICAg
IChTdGF0aXN0aWMucHJvdG90eXBlLnN0YXJ0U2FtcGxpbmcpOiBDYWxsZWQgYWZ0ZXIgd2FybWlu
ZyB1cCBwZXJpb2QuIFJlc3RhcnRzIGNvbGxlY3Rpbmcgc2FtcGxlZCBkYXRhIHBvaW50cy4KKyAg
ICAgICAgKFN0YXRpc3RpYy5wcm90b3R5cGUuc2FtcGxlKTogQWRkIGEgbmV3IGRhdGEgcG9pbnQu
CisgICAgICAgIChTdGF0aXN0aWMucHJvdG90eXBlLm1lYW4pOiBSZXR1cm5zIHRoZSBzYW1wbGUg
bWVhbiBmb3IgdGhlIGN1cnJlbnQgc2FtcGxlZCBkYXRhIHBvaW50cy4KKyAgICAgICAgKFN0YXRp
c3RpYy5wcm90b3R5cGUuc3RhbmRhcmREZXZpYXRpb24pOiBSZXR1cm5zIHRoZSBzYW1wbGUgc3Rh
bmRhcmQgZGV2aWF0aW9uIGZvciB0aGUgY3VycmVudCBzYW1wbGVkIGRhdGEgcG9pbnRzLgorICAg
ICAgICAoU3RhdGlzdGljLnByb3RvdHlwZS5wZXJjZW50YWdlKTogUmV0dXJucyB0aGUgcGVyY2Vu
dGFnZSBvZiB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uIGRpdmlkZWQgdG8gdGhlIG1lYW4uCisgICAg
ICAgIChTdGF0aXN0aWMucHJvdG90eXBlLmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhKTogQ2FsY3Vs
YXRlcyB0aGUgY29uZmlkZW5jZSBkZWx0YSBmb3IgdGhlIGN1cnJlbnQgc2FtcGxlZCBkYXRhIGdp
dmVuIGEgY29uZmlkZW5jZSBsZXZlbC4KKyAgICAgICAgKFNhbXBsZXIpOiBNYW5hZ2VzIHNhbXBs
aW5nIG11bHRpcGxlIGRhdGEgcG9pbnRzIGF0IHRoZSBzYW1lIHRpbWUgb2Zmc2V0LgorICAgICAg
ICAoU2FtcGxlci5wcm90b3R5cGUuc3RhcnRTYW1wbGluZyk6IENhbGxlZCBhZnRlciB3YXJtaW5n
IHVwIHBlcmlvZC4gUmVzdGFydHMgY29sbGVjdGluZyBzYW1wbGVkIGRhdGEgcG9pbnRzLgorICAg
ICAgICAoU2FtcGxlci5wcm90b3R5cGUuc2FtcGxlKTogQWRkIGEgbmV3IGRhdGEgdmVjdG9yIGF0
IGEgZ2l2ZW4gdGltZSBvZmZzZXQuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVu
bmVyOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlczogQWRkZWQuCisg
ICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzOiBBZGRl
ZC4KKyAgICAgICAgVGhlIGJlbmNobWFyayBydW5uZXIgcGFnZSBhbmQgY3NzLgorICAgICAgICAK
KyAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qczogQWRk
ZWQuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LndpbGxBZGRUZXN0RnJh
bWUpOiBDYWxsZWQgYWZ0ZXIgdGhlIHRlc3QgPGlmcmFtZT4gaXMgY3JlYXRlZC4KKyAgICAgICAg
KHdpbmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQuZGlkUnVuVGVzdCk6IENhbGxlZCBhZnRlciBy
dW5uaW5nIGEgdGVzdCBpcyBmaW5pc2hlZC4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtSdW5u
ZXJDbGllbnQud2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb24pOiBDYWxsZWQgYXQgdGhlIGJlZ2lubmlu
ZyBiZWZvcmUgcnVubmluZyBhbnkgdGVzdC4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtSdW5u
ZXJDbGllbnQuZGlkUnVuU3VpdGVzKTogQ2FsbGVkIGFmdGVyIHJ1bm5pbmcgYWxsIHRlc3RzIG9m
IGEgc3VpdGUuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LmRpZEZpbmlz
aExhc3RJdGVyYXRpb24pOiBDYWxsZWQgYWZ0ZXIgcnVubmluZyB0aGUgbGFzdCB0ZXN0LgorICAg
ICAgICAKKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQuYnJvd3Nlcik6Cisg
ICAgICAgIChzaG93U2VjdGlvbik6IFNob3dzIGEgc2VjdGlvbiBpbiB0aGUgYW5pbW9tZXRlci5o
dG1sIHBhZ2UuCisgICAgICAgIChzdGFydFRlc3QpOiBDYWxsZWQgd2hlbiB0aGUgIlN0YXJ0IFRl
c3QiIGJ1dHRvbiBpcyBjbGlja2VkLgorICAgICAgICAoc2hvd1Jlc3VsdHMpOiBDYWxsZWQgYWZ0
ZXIgZmluaXNoaW5nIGFsbCB0aGUgdGVzdHMuCisgICAgICAgIChzaG93R3JhcGgpOiBDYWxsZWQg
d2hlbiAiQ2xpY2suLi4iIGJ1dHRvbiBpbiB0aGUgIlNhbXBsZXMiIGNvbHVtbiBvZiB0aGUgcmVz
dWx0cyB0YWJsZSBpcyBjbGlja2VkCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVu
bmVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKEJlbmNo
bWFya1J1bm5lclN0YXRlKTogVHJhY2tzIG9mIHRoZSBjdXJyZW50IHJ1bm5pbmcgPHN1aXRlLCB0
ZXN0PgorICAgICAgICAoQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmN1cnJlbnRTdWl0
ZSk6IHJldHVybnMgdGhlIGN1cnJlbnQgcnVubmluZyBzdWl0ZS4KKyAgICAgICAgKEJlbmNobWFy
a1J1bm5lclN0YXRlLnByb3RvdHlwZS5jdXJyZW50VGVzdCk6IHJldHVybnMgdGhlIGN1cnJlbnQg
cnVubmluZyB0ZXN0LgorICAgICAgICAoQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmlz
Rmlyc3RUZXN0KTogcmV0dXJucyB0cnVlIGlmIHdlIGFyZSBydW5uaW5nIHRoZSBmaXJzdCB0ZXN0
IGluIHRoZSBjdXJyZW50IHN1aXRlLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyU3RhdGUucHJv
dG90eXBlLm5leHQpOiBhZHZhbmNlcyB0byB0aGUgbmV4dCB0ZXN0LgorICAgICAgICAoQmVuY2ht
YXJrUnVubmVyU3RhdGUucHJvdG90eXBlLnByZXBhcmVDdXJyZW50VGVzdCk6IENyZWF0ZXMgYSBu
ZXcgPGlmcmFtZT4gYW5kIHdhaXRzIGZvciBpdCB0byBsb2FkIGEgdGVzdC4KKyAgICAgICAgCisg
ICAgICAgIChCZW5jaG1hcmtSdW5uZXIpOiBNYW5hZ2VzIHJ1bm5pbmcgdGhlIHRlc3RzIGFuZCBj
b21tdW5pY2F0aW5nIHdpdGggdGhlIGJlbmNobWFya1J1bm5lckNsaWVudC4KKyAgICAgICAgKEJl
bmNobWFya1J1bm5lci5wcm90b3R5cGUud2FpdEZvckVsZW1lbnQpOiBXYWl0cyBmb3IgYW4gZWxl
bWVudCB0byBiZSBjcmVhdGVkLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5f
YXBwZW5kRnJhbWUpOiBDcmVhdGVzIGEgbmV3IDxpZnJhbWU+IGVsZW1lbnQuCisgICAgICAgIChC
ZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9yZW1vdmVGcmFtZSk6IFJlbW92ZWQgdGhlIGN1cnJl
bnQgPGlmcmFtZT4gZWxlbWVudC4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUu
X3J1blRlc3RBbmRSZWNvcmRSZXN1bHRzKTogUnVucyB0aGUgY3VycmVudCB0ZXN0IGFuZCBzYXZl
cyBpdHMgcmVzdWx0cy4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuc3RlcCk6
IEVpdGhlciBydW5zIHRoZSBjdXJyZW50IHRlc3QgaWYgdGhlcmUgaXMgb3Igc3RhcnQgYSBuZXcg
aXRlcmF0aW9uLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5ydW5BbGxTdGVw
cyk6IExvb3BzIHRvIHJ1biBhbGwgdGhlIHRlc3RzIGFuZCBtb3ZlIHRvIHRoZSBuZXh0IGl0ZXJh
dGlvbi4KKyAgICAgICAgKHRoaXMuX3J1bk5leHRJdGVyYXRpb24pOiBTdGFydHMgYSBuZXcgaXRl
cmF0aW9uIG9yIHNob3cgdGhlIHJlc3VsdHMuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIucHJv
dG90eXBlLnJ1bk11bHRpcGxlSXRlcmF0aW9ucyk6IExvb3BzIHRvIHJ1biBhbGwgdGhlIGl0ZXJh
dGlvbnMgYW5kIHNob3cgdGhlIHJlc3VsdHMKKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90
b3R5cGUuX2ZpbmFsaXplKTogU3RhcnRzIGEgbmV3IGl0ZXJhdGlvbi4KKworICAgICAgICAqIEFu
aW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9ncmFwaC5qczogQWRkZWQuCisgICAgICAgIChncmFw
aCk6IERyYXdzIGEgY2hhcnQgZm9yIGEgdGVzdCBzYW1wbGVkIGRhdGEuIEl0IHNob3dzIHR3byB5
LWF4aXNlczogb25lIGZvciB0aGUgcGFydGljbGVzIGFuZCB0aGUgc2Vjb25kIGZvciBGUFMuCisg
ICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy90ZXN0cy5qczog
QWRkZWQuCisgICAgICAgIChzdWl0ZUZyb21OYW1lKTogUmV0dXJucyBhIHN1aXRlIGdpdmVuIGl0
cyBuYW1lLgorICAgICAgICAodGVzdEZyb21OYW1lKTogUmV0dXJucyBhIHRlc3QgZ2l2ZW4gaXRz
IHN1aXRlIGFuZCBuYW1lLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzOiBB
ZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlczogQWRk
ZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctY2FudmFzLWltYWdlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWlt
YWdlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9ib3VuY2luZy1zaGFwZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2lu
Zy1zdmctc2hhcGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL3Jlc291cmNlczogQWRkZWQuCisgICAgICAgIFRoZSBib3VuY2luZyBw
YXJ0aWNsZXMgdGVzdCBwYWdlcy4gVGhlIHNhbWUgdGVzdHMgYXJlIGRvbmUgYXMgSFRNTCBlbGVt
ZW50cywKKyAgICAgICAgU1ZHRWxlbWVudHMgb3IgZHJhd24gb24gYSBjYW52YXMuCisgICAgICAg
IAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNl
cy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nQ2Fu
dmFzSW1hZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlLgorICAgICAgICAoQm91
bmNpbmdDYW52YXNJbWFnZS5wcm90b3R5cGUuX2RyYXcpOiBEcmF3cyBhbiBpbWFnZSBvbiB0aGUg
Y29udGV4dCBvZiBhIGNhbnZhcy4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90
eXBlLmFuaW1hdGUpOiBNb3ZlcyB0aGUgQm91bmNpbmdDYW52YXNJbWFnZSB0byBhIG5ldyBsb2Nh
dGlvbi4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlKTogQSBz
dWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS4KKyAgICAgICAgKEJvdW5jaW5nQ2Fu
dmFzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRp
Y2xlIG9mIHR5cGUgQm91bmNpbmdDYW52YXNJbWFnZS4KKyAgICAgICAgCisgICAgICAgIChCb3Vu
Y2luZ0NhbnZhc0ltYWdlc0FuaW1hdG9yKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNs
ZXNBbmltYXRvci4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0b3IucHJvdG90
eXBlLmFuaW1hdGUpOiBDbGVhcnMgdGhlIGNvbnRleHQgYmVmb3JlIHJlZHJhd2luZyB0aGUgcGFy
dGljbGVzLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJr
KTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuCisgICAgICAgIChC
b3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVh
dGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlLgorICAgICAgICAo
Qm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTog
Q3JlYXRlcyBhbiBhbmltYXRvciBvZiB0eXBlIEJvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0b3Iu
CisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5j
aG1hcmsgb2YgdHlwZSBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay4KKyAgICAgICAgCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLWNhbnZhcy1zaGFwZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdDYW52YXNT
aGFwZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUuCisgICAgICAgIChCb3VuY2lu
Z0NhbnZhc1NoYXBlLnByb3RvdHlwZS5fZHJhdyk6IERyYXdzIGEgc2hhcGUgb24gdGhlIGNvbnRl
eHQgb2YgYSBjYW52YXMuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5h
bmltYXRlKTogTW92ZXMgdGhlIEJvdW5jaW5nQ2FudmFzU2hhcGUgdG8gYSBuZXcgbG9jYXRpb24u
CisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZSk6IEEgc3ViIGNs
YXNzIG9mIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1No
YXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0aWNsZSBv
ZiB0eXBlIEJvdW5jaW5nQ2FudmFzU2hhcGUuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdD
YW52YXNTaGFwZXNBbmltYXRvcik6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzQW5p
bWF0b3IuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yLnByb3RvdHlwZS5h
bmltYXRlKTogQ2xlYXJzIHRoZSBjb250ZXh0IGJlZm9yZSByZWRyYXdpbmcgdGhlIHBhcnRpY2xl
cy4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyayk6IEEg
c3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLgorICAgICAgICAoQm91bmNp
bmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBh
IHN0YWdlIG9mIHR5cGUgQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS4KKyAgICAgICAgKEJvdW5j
aW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvcik6IENyZWF0
ZXMgYW4gYW5pbWF0b3Igb2YgdHlwZSBCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yLgorICAg
ICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJr
IG9mIHR5cGUgQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsuCisgICAgICAgIAorICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2lu
Zy1pbWFnZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdJbWFnZSk6IEEgc3ViIGNsYXNz
IG9mIEJvdW5jaW5nUGFydGljbGUuCisgICAgICAgIChCb3VuY2luZ0ltYWdlLnByb3RvdHlwZS5f
bW92ZSk6IE1vdmUgdGhlIHBhcnRpY2xlIHRvIGEgbmV3IGxvY2F0aW9uLiBBcHBseSB0cmFuc2Zv
cm0gc2luY2UgaXQgZG9lcyBub3QgcmVxdWlyZSBsYXlvdXQuCisgICAgICAgIChCb3VuY2luZ0lt
YWdlLnByb3RvdHlwZS5hbmltYXRlKTogUm90YXRlcyBhbmQgbW92ZXMgdGhlIHNoYXBlIHRvIGEg
bmV3IGxvY2F0aW9uLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nSW1hZ2VzU3RhZ2UpOiBB
IHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLgorICAgICAgICAoQm91bmNpbmdJ
bWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGUgYSBwYXJ0aWNsZSBv
ZiB0eXBlIEJvdW5jaW5nSW1hZ2UuCisgICAgICAgIChCb3VuY2luZ0ltYWdlc1N0YWdlLnByb3Rv
dHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgZWxl
bWVudCBmb3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4gbGlzdC4KKyAgICAgICAgCisgICAgICAgIChC
b3VuY2luZ0ltYWdlc0JlbmNobWFyayk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVz
QmVuY2htYXJrLgorICAgICAgICAoQm91bmNpbmdJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNy
ZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUgQm91bmNpbmdJbWFnZXNTdGFnZS4K
KyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNo
bWFyayBvZiB0eXBlIEJvdW5jaW5nSW1hZ2VzQmVuY2htYXJrLgorICAgICAgICAKKyAgICAgICAg
KiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmct
cGFydGljbGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVSb3RhdGVyKTog
TWFuYWdlcyByb3RhdGluZyBhIEJvdW5jaW5nUGFydGljbGUuCisgICAgICAgIChCb3VuY2luZ1Bh
cnRpY2xlUm90YXRlci5wcm90b3R5cGUubmV4dCk6IE1vdmVzIHRoZSB0aW1lIGJ5IHRoZSBiZW5j
aG1hcmsncyBjdXJyZW50IHRpbWVEYXRhLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZVJvdGF0
ZXIucHJvdG90eXBlLmRlZ3JlZSk6IFJldHVybnMgdGhlIGN1cnJlbnQgcm90YXRpbmcgZGVncmVl
LgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZVJvdGF0ZXIucHJvdG90eXBlLnJvdGF0ZVopOiBS
ZXR1cm5zIENTUyBmb3JtYXR0ZWQgdHJhbnNmb3JtIHJvdGF0ZVooKSB2YWx1ZS4KKyAgICAgICAg
KEJvdW5jaW5nUGFydGljbGVSb3RhdGVyLnByb3RvdHlwZS5yb3RhdGUpOiBSZXR1cm5zIFNWRyBm
b3JtYXR0ZWQgdHJhbnNmb3JtIHJvdGF0ZSgpIHZhbHVlLiAgICAgICAgCisgICAgICAgIAorICAg
ICAgICAoQm91bmNpbmdQYXJ0aWNsZSk6IEJhc2UgY2xhc3MgZm9yIGEgYm91bmNpbmcgcGFydGlj
bGUuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5jZW50ZXIpOiBSZXR1cm5z
IHRoZSBjZW50ZXIgcG9pbnQgb3IgdGhlIHBhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdQYXJ0
aWNsZS5wcm90b3R5cGUuYW5pbWF0ZSk6IE1vdmVzIHRoZSBwYXJ0aWNsZSBiYXNlZCBvbiBpdHMg
Y3VycmVudCBwb3NpdGlvbiwgYW5nbGUgYW5kIHZlbG9jaXR5LgorICAgICAgICAKKyAgICAgICAg
KEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IpOiBBIHN1YiBjbGFzcyBvZiBBbmltYXRvci4KKyAg
ICAgICAgKEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBNYW5h
Z2VzIGFuaW1hdGluZyB0aGUgYm91bmNpbmcgcGFydGljbGVzIHRocm91Z2ggdGhlIHRlc3Qgc3Rh
Z2UuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZSk6IFJlcHJlc2Vu
dHMgdGhlIGNvbnRhaW5lciBvZiBhbGwgdGhlIGJvdW5jaW5nIHBhcnRpY2xlcy4KKyAgICAgICAg
KEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnNpemUpOiBSZXR1cm5zIHRoZSBzaXpl
IG9mIHRoZSBzdGFnZSBleGNsdWRpbmcgdGhlIENTUyBwYWRkaW5nLgorICAgICAgICAoQm91bmNp
bmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucGFyc2VTaGFwZVBhcmFtdGVycyk6IEdldHMgdGhl
IHNoYXBlIHBhcmFtZXRlcnMgZm9yIHNoYXBlIGFuaW1hdGluZyB0ZXN0cy4KKyAgICAgICAgKEJv
dW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBBbmltYXRlcyBhbGwgdGhl
IHBhcnRpY2xlcy4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnR1
bmUpOiBDaGFuZ2VzIHRoZSB0ZXN0IGJ5IGFkZGluZyBvciByZW1vdmluZyBwYXJ0aWNsZXMuCisg
ICAgICAgIAorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmspOiBSdW5zIHRoZSBi
ZW5jaG1hcmsgZm9yIGJvdW5jaW5nIHBhcnRpY2xlcyB0ZXN0LgorICAgICAgICAoQm91bmNpbmdQ
YXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyBhbiBh
bmltYXRvciBvZiB0eXBlIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IuCisgICAgICAgIChCb3Vu
Y2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUudHVuZSk6IFR1bmVzIHRoZSB0ZXN0IHRo
cm91Z2ggdGhlIGN1cnJlbnQgc3RhZ2UuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc0JlbmNo
bWFyay5wcm90b3R5cGUuY2xlYXIpOiBDbGVhcnMgdGhlIHRlc3QgdGhyb3VnaCB0aGUgY3VycmVu
dCBzdGFnZS4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5z
aG93UmVzdWx0cyk6IFNob3dzIHRoZSByZXN1bHRzL3Byb2dyZXNzIHRocm91Z2ggaXRzIHJlY29y
ZFRhYmxlIGFuZCBwcm9ncmVzc0Jhci4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90
ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXNoYXBlcy5qczogQWRk
ZWQuCisgICAgICAgIChCb3VuY2luZ1NoYXBlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0
aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nU2hhcGUucHJvdG90eXBlLl9jcmVhdGVTcGFuKTogQ3Jl
YXRlcyBhIDxzcGFuPiBlbGVtZW50IGFuZCB0YWtlcyB0aGUgc2hhcGUgYW5kIGNsaXBwaW5nIGNs
YXNzZXMgaW50byBjb25zaWRlcmF0aW9uLgorICAgICAgICAoQm91bmNpbmdTaGFwZS5wcm90b3R5
cGUuX21vdmUpOiBNb3ZlcyB0aGUgcGFydGljbGUgdG8gYSBuZXcgbG9jYXRpb24uIEFwcGx5IHRy
YW5zZm9ybSBzaW5jZSBpdCBkb2VzIG5vdCByZXF1aXJlIGxheW91dC4KKyAgICAgICAgKEJvdW5j
aW5nU2hhcGUucHJvdG90eXBlLmFuaW1hdGUpOiBSb3RhdGVzIGFuZCBtb3ZlcyB0aGUgc2hhcGUg
dG8gYSBuZXcgbG9jYXRpb24uCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdTaGFwZXNTdGFn
ZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuCisgICAgICAgIChCb3Vu
Y2luZ1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0
aWNsZSBvZiB0eXBlIEJvdW5jaW5nU2hhcGUuCisgICAgICAgIChCb3VuY2luZ1NoYXBlc1N0YWdl
LnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1vdmVzIHRoZSBjb3JyZXNwb25k
aW5nIGVsZW1lbnQgZm9ybSB0aGUgcGFyZW50IGNoaWxkcmVuIGxpc3QuCisgICAgICAgIAorICAg
ICAgICAoQm91bmNpbmdTaGFwZXNCZW5jaG1hcmspOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1Bh
cnRpY2xlc0JlbmNobWFyay4KKyAgICAgICAgKEJvdW5jaW5nU2hhcGVzQmVuY2htYXJrLnByb3Rv
dHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nU2hhcGVz
U3RhZ2UuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMg
YSBiZW5jaG1hcmsgb2YgdHlwZSBCb3VuY2luZ1NoYXBlc0JlbmNobWFyay4KKyAgICAgICAgCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLXN2Zy1pbWFnZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZSk6
IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUuCisgICAgICAgIChCb3VuY2luZ1N2Z0lt
YWdlLnByb3RvdHlwZS5fbW92ZSk6IE1vdmUgdGhlIHBhcnRpY2xlIHRvIGEgbmV3IGxvY2F0aW9u
LiBBcHBseSB0cmFuc2Zvcm0gc2luY2UgaXQgZG9lcyBub3QgcmVxdWlyZSBsYXlvdXQuCisgICAg
ICAgIChCb3VuY2luZ1N2Z0ltYWdlLnByb3RvdHlwZS5hbmltYXRlKTogUm90YXRlcyBhbmQgbW92
ZXMgdGhlIHNoYXBlIHRvIGEgbmV3IGxvY2F0aW9uLgorICAgICAgICAKKyAgICAgICAgKEJvdW5j
aW5nU3ZnSW1hZ2VzU3RhZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdl
LgorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGlj
bGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlwZSBCb3VuY2luZ1N2Z0ltYWdlLgorICAgICAg
ICAoQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVk
KTogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZm9ybSB0aGUgcGFyZW50IGNoaWxk
cmVuIGxpc3QuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsp
OiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay4KKyAgICAgICAgKEJv
dW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMg
YSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UuCisgICAgICAgICh3aW5kb3cu
YmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBCb3Vu
Y2luZ1N2Z0ltYWdlc0JlbmNobWFyay4gCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpz
OiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGUpOiBBIHN1YiBjbGFzcyBvZiBCb3Vu
Y2luZ1BhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0
ZUNpcmNsZSk6IFJldHVybnMgYSBuZXdseSBjcmVhdGVkIFNWRyA8Y2lyY2xlPiBlbGVtZW50Lgor
ICAgICAgICAoQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVJlY3QpOiBSZXR1cm5z
IGEgbmV3bHkgY3JlYXRlZCBTVkcgPHJlY3Q+IGVsZW1lbnQuIAorICAgICAgICAoQm91bmNpbmdT
dmdTaGFwZS5wcm90b3R5cGUuX21vdmUpOiBNb3ZlIHRoZSBwYXJ0aWNsZSB0byBhIG5ldyBsb2Nh
dGlvbi4gQXBwbHkgdHJhbnNmb3JtIHNpbmNlIGl0IGRvZXMgbm90IHJlcXVpcmUgbGF5b3V0Lgor
ICAgICAgICAoQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuYW5pbWF0ZSk6IFJvdGF0ZXMgYW5k
IG1vdmVzIHRoZSBzaGFwZSB0byBhIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgCisgICAgICAgIChC
b3VuY2luZ1N2Z1NoYXBlc1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNT
dGFnZS4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmVuc3VyZUNs
aXBTdGFySXNDcmVhdGVkKTogRW5zdXJlIHRoZSBhIDxjbGlwUGF0aD4gZWxlbWVudCB3aXRoIGlk
PSJzdGFyLWNsaXAiIGlzIGNyZWF0ZWQuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdl
LnByb3RvdHlwZS5lbnN1cmVEZWZzSXNDcmVhdGVkKTogRW5zdXJlIGEgPGRlZnM+IGVsZW1lbnQg
aXMgY3JlYXRlZC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNy
ZWF0ZUdyYWRpZW50KTogQ3JlYXRlcyBhIDxsaW5lYXJHcmFkaWVudD4gZWxlbWVudC4KKyAgICAg
ICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLl9jcmVhdGVEZWZzKTogQ3JlYXRl
cyBhIG5ldyA8ZGVmcz4gZWxlbWVudC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2Uu
cHJvdG90eXBlLl9jcmVhdGVDbGlwU3Rhcik6IENyZWF0ZSBhIG5ldyA8Y2xpcFBhdGg+IGVsZW1l
bnQgd2l0aCBpZD0ic3Rhci1jbGlwIi4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2Uu
cHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91
bmNpbmdTdmdTaGFwZS4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBl
LnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCk6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50
IGZvcm0gdGhlIHBhcmVudCBjaGlsZHJlbiBsaXN0LgorICAgICAgICAKKyAgICAgICAgKEJvdW5j
aW5nU3ZnU2hhcGVzQmVuY2htYXJrKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNC
ZW5jaG1hcmsuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUu
Y3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ1N2Z1NoYXBlc1N0
YWdlLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEg
YmVuY2htYXJrIG9mIHR5cGUgQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsuCisgICAgICAgIAor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzOiBBZGRlZC4KKyAgICAgICAg
QSBzaGFyZWQgY3NzIGZvciBhbGwgdGhlIHRlc3QgcGFnZXMuIEl0IHNldHMgdGhlIGNzcyBwcm9w
ZXJ0aWVzIGZvciB0aGUgdGVzdCBwYWdlIGFuZCB0aGUgc3RhZ2UgZWxlbWVudC4KKyAgICAgICAg
CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvYmVuY2htYXJrLmpzOiBBZGRl
ZC4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlKTogVHJhY2tzIHRoZSBzdGF0ZSBvZiB0aGUgYmVu
Y2htYXJrIHRlc3QuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuX3RpbWVPZmZz
ZXQpOiBSZXR1cm5zIHRoZSB0aW1lT2Zmc2V0IG9mIGEgc3RhZ2UuCisgICAgICAgIChCZW5jaG1h
cmtTdGF0ZS5wcm90b3R5cGUuX21lc3NhZ2UpOiBSZXR1cm5zIHRoZSBtZXNzYWdlIG9mIGEgc3Rh
Z2UuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUudXBkYXRlKTogU2V0cyB0aGUg
Y3VycmVudFRpbWVPZmZzZXQgdG8gYSBuZXcgdmFsdWUuCisgICAgICAgIChCZW5jaG1hcmtTdGF0
ZS5wcm90b3R5cGUuc2FtcGxpbmdUaW1lT2Zmc2V0KTogUmV0dXJucyB0aGUgdGltZU9mZnNldCBv
ZiB0aGUgc2FtcGxpbmcgc3RhZ2UuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUu
Y3VycmVudFN0YWdlKTogUmV0dXJucyB0aGUgY3VycmVudCBzdGFnZSBvZiB0aGUgYmVuY2htYXJr
LgorICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBlLmN1cnJlbnRNZXNzYWdlKTogUmV0
dXJucyB0aGUgbWVzc2FnZSBvZiB0aGUgY3VycmVudCBzdGFnZSBhbmQgdGltZU9mZnNldC4KKyAg
ICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5jdXJyZW50UHJvZ3Jlc3MpOiBSZXR1cm5z
IGEgcGVyY2VudGFnZSBvZiBob3cgbXVjaCB0aGUgYmVuY2htYXJrIGlzIHJ1bm5pbmcuCisgICAg
ICAgIAorICAgICAgICAoQW5pbWF0b3IpOiBNYW5hZ2VzIGFuaW1hdGluZyB0aGUgdGVzdC4KKyAg
ICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5zdGFydCk6IENhbGxlZCBpZiBhbmltYXRpbmcgdXNp
bmcgc2V0SW50ZXJ2YWwgaXMgcmVxdWVzdGVkLgorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBl
LnRpbWVEZWx0YSk6IFJldHVybnMgdGhlIGN1cnJlbnQgdGltZURlbHRhIAorICAgICAgICAoQW5p
bWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBNYW5hZ2VzIHRoZSB0ZXN0IGFuaW1hdGlvbi4KKyAg
ICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlTG9vcCk6IENhbGxlZCBpZiBhbmltYXRp
bmcgdXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGlzIHJlcXVlc3RlZC4gCisgICAgICAgIAor
ICAgICAgICAoQmVuY2htYXJrKTogTWFuYWdlcyBydW5uaW5nIHRoZSB0ZXN0IGJlbmNobWFyayBh
bmQgcmVjb3JkaW5nIHRoZSBzYW1wbGVkIGRhdGEuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90
eXBlLnBhcnNlUGFyYW1ldGVycyk6IFBhcnNlcyB0aGUgdGVzdCBwYXJhbWV0ZXJzLgorICAgICAg
ICAoQmVuY2htYXJrLnByb3RvdHlwZS5zdGFydCk6IFN0YXJ0cyB0aGUgYmVuY2htYXJrLgorICAg
ICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS51cGRhdGUpOiBDYWxsZWQgZnJvbSB0aGUgYW5pbWF0
b3IuYW5pbWF0ZSgpIHRvIGNoYW5nZSB0aGUgY29tcGxleGl0eSBvZiB0aGUgdGVzdC4KKyAgICAg
ICAgKEJlbmNobWFyay5wcm90b3R5cGUucmVjb3JkKTogU2hvd3MgdGhlIGN1cnJlbnQgKG5vdCBm
aW5hbCkgcmVzdWx0cyBvZiB0aGUgYmVuY2htYXJrLgorICAgICAgICAoQmVuY2htYXJrLnByb3Rv
dHlwZS5yZXNvbHZlV2hlbkZpbmlzaGVkKTogU3BpbnMgdW50aWwgdGhlIGJlbmNobWFyayBpcyBm
aW5pc2hlZCBhbmQgcmV0dXJucyBpdHMgcmVzdWx0cy4KKyAgICAgICAgKEJlbmNobWFyay5wcm90
b3R5cGUucnVuKTogU3RhcnRzIHRoZSB0ZXN0LCBydW5zIGl0LCB3YWl0cyB1bnRpbCBpdCBpcyBm
aW5pc2hlZCBhbmQgcmV0dXJuIGl0cyByZXN1bHRzLgorICAgICAgICAod2luZG93LnJ1bkJlbmNo
bWFyayk6IENhbGxlZCBmcm9tIHRoZSBiZW5jaG1hcmsgcnVubmVyIHRocm91Z2ggdGhlIHN1aXRl
IGNvbnRyb2xsZXIgcnVuLWNhbGxiYWNrLiAKKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy9yZXNvdXJjZXMvbWF0aC5qczogQWRkZWQuCisgICAgICAgIChNYXRyaXgpOiBBIG1h
dHJpeCBvYmplY3QuCisgICAgICAgIChWZWN0b3IzKTogQSB2ZWN0b3Igb2Ygc2l6ZSAzIG9iamVj
dC4KKyAgICAgICAgKE1hdHJpeDMpOiBBIG1hdHJpeCBvZiBzaXplIDN4MyBvYmplY3QuCisgICAg
ICAgIAorICAgICAgICAoQ29udHJvbGxlcik6IENsb3NlZC1sb29wIGNvbnRyb2xsZXIgZm9yIGEg
c2V0LXBvaW50IHkuCisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5fc2F0KTogTGltaXRz
IHRoZSBvdXRwdXQgdG8gYSBjZXJ0YWluIHJhbmdlLgorICAgICAgICAoQ29udHJvbGxlci5wcm90
b3R5cGUudHVuZSk6IHByb2R1Y2VzIHRoZSBwaWQgZm9yIHRoZSBiZW5jaG1hcmsgd2hpY2ggaXMg
dHJlYXRlZCBhcyBhIGNsb3NlZC1sb29wIHN5c3RlbS4KKyAgICAgICAgCisgICAgICAgIChFc3Rp
bWF0b3IpOiBJbXBsZW1lbnQgS2FsbWFuIGZpbHRlciB0byBnZXQgYW4gZXN0aW1hdGUgZm9yIGEg
c2FtcGxlZCBkYXRhIHBvaW50LgorICAgICAgICAoRXN0aW1hdG9yLnByb3RvdHlwZS5lc3RpbWF0
ZSk6IFJldHVybnMgYW4gZXN0aW1hdGUgZm9yIGZvciBhIHNhbXBsZWQgZGF0YSBwb2ludC4KKyAg
ICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanM6IEFk
ZGVkLgorICAgICAgICAoU3RhZ2UpOiBBIGJhc2UgY2xhc3MgZm9yIG1hbmFnaW5nIHRoZSB0ZXN0
IGNvbXBsZXhpdHkgYW5kIHRlc3QgYW5pbWF0aW9uLgorICAgICAgICAoU3RhZ2UucHJvdG90eXBl
LnNpemUpOiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBzdGFnZSBleGNsdWRpbmcgdGhlIENTUyBw
YWRkaW5nLgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLmNsZWFyKTogQ2xlYXJzIHRoZSBzdGFn
ZSBmcm9tIGFsbCBpdHMgYW5pbWF0aW9uIGVsZW1lbnRzLgorICAgICAgICAoU3RhZ2UucHJvdG90
eXBlLnJhbmRvbSk6IFJldHVybnMgYSByYW5kb20gZmxvYXQuCisgICAgICAgIChTdGFnZS5wcm90
b3R5cGUucmFuZG9tSW50KTogUmV0dXJucyBhIHJhbmRvbSBpbnRlZ2VyLgorICAgICAgICAoU3Rh
Z2UucHJvdG90eXBlLnJhbmRvbVBvc2l0aW9uKTogUmV0dXJucyBhIHJhbmRvbSBwb3NpdGlvbi4K
KyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5yYW5kb21WZWxvY2l0eSk6IFJldHVybnMgYSByYW5k
b20gdmVsb2NpdHkuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tQW5nbGUpOiBSZXR1
cm5zIGEgcmFuZG9tIGFuZ2xlLgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLnJhbmRvbUNvbG9y
KTogUmV0dXJucyBhIHJhbmRvbSBjb2xvciBub3QgdG9vIGRhcmsgYW5kIG5vdCB0b28gbGlnaHQu
CisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3V0aWxpdGll
cy5qczogQWRkZWQuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50Ll9wYXJzZSk6IEdp
dmVuIGEgc2VwYXJhdG9yIGNoYXJhY3RlciwgaXQgcGFyZXNlcyBhIHN0cmluZyB0byBhIHNldCBv
ZiA8a2V5LCB2YWx1ZT4gcGFpcnMuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LnBh
cnNlUGFyYW1ldGVycyk6IFBhcnNlcyBhIHRlc3QgcGFyYW1ldGVycy4KKyAgICAgICAgKHdpbmRv
dy5iZW5jaG1hcmtDbGllbnQucGFyc2VBcmd1bWVudHMpOiBQYXJzZXMgYSB0YWcgYXJndW1lbnRz
LgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5leHRlbmRPYmplY3QpOiBBZGRzIHRo
ZSBhdHRyaWJ1dGVzIGFuZCB0aGVpciB2YWx1ZXMgb2YgYW4gb2JqZWN0IHRvIGFub3RoZXIgb2Jq
ZWN0LgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jb3B5T2JqZWN0KTogQ29waWVz
IHRoZSBhdHRyaWJ1dGVzIGFuZCB0aGVpciB2YWx1ZXMgb2YgYW4gb2JqZWN0IHRvIGEgbmV3IG9i
amVjdC4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQubWVyZ2VPYmplY3RzKTogQ29w
aWVzIHRoZSBhdHRyaWJ1dGVzIGFuZCB0aGVpciB2YWx1ZXMgb2YgdHdvIG9iamVjdHMgdG8gYSBu
ZXcgb2JqZWN0LgorICAgICAgICAod2luZG93LnJ1bkJlbmNobWFyayk6IENhbGxlZCBmcm9tIHRo
ZSBiZW5jaG1hcmsgcnVubmVyIHRocm91Z2ggdGhlIHN1aXRlIGNvbnRyb2xsZXIgcnVuLWNhbGxi
YWNrLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4t
eWFuZy5wbmc6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lp
bi15YW5nLnN2ZzogQWRkZWQuCisgICAgICAgIEltYWdlcyB3aGljaCBhcmUgc2hhcmVkIGJ5IGFs
bCB0aGUgdGVzdHMuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGV4dDog
QWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRt
bDogQWRkZWQuCisgICAgICAgIFRoaXMgdGVzdCBzdGFja3MgY29udGFpbmVyIDxkaXY+IGVsZW1l
bnRzIG9uIHRvcCBvZiBlYWNoIG90aGVyLiBUaGUgdGVzdAorICAgICAgICBhZGRzIHRleHQgaXRl
bXMgdG8gdG9wbW9zdCBjb250YWluZXIgPGRpdj4gdW50aWwgaXQgaXMgZnVsbC4gV2hlbiBpdCBp
cworICAgICAgICBmdWxsLCBhIG5ldyBjb250YWluZXIgPGRpdj4gaXMgY3JlYXRlZC4KKyAgICAg
ICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlczogQWRkZWQuCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKExheWVyaW5nVGV4dEFuaW1hdG9yKTogQSBzdWIgY2xhc3Mgb2Yg
QW5pbWF0b3IuCisgICAgICAgIChMYXllcmluZ1RleHRBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0
ZSk6IEZvcmNlcyBhIHJlZHJhdyB0byBoYXBwZW4uIEl0IGNhbGxzIHRoZSBzdGFnZSBhbmltYXRl
KCkgZnVuY3Rpb24uCisgICAgICAgIAorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UpOiBSZXBy
ZXNlbnRzIHRoZSBjb250YWluZXIgb2YgYWxsIHRoZSBzdGFja2VkIHRleHQgbGF5ZXJzLgorICAg
ICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VUZXh0SXRlbSk6IFBhcnNlcyBhIHRleHRJdGVt
IHdoaWNoIG1heSBiZSBhbiBvcGVuaW5nIHRhZywgYSBjbG9zaW5nIHRhZyBvciBhIHNlbGYtY2xv
c2luZyB0YWcuCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5pc09wZW5pbmdUZXh0SXRlbSk6
IFJldHVybnMgdHJ1ZSBpZiB0aGUgdGV4dEl0ZW0gaXMgYW4gb3BlbmluZyB0YWcgZS5nLiAnPG9s
PicuCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5pc0Nsb3NpbmdUZXh0SXRlbSk6IFJldHVy
bnMgdHJ1ZSBpZiAgdGhlIHRleHRJdGVtIGlzIGFuIGNsb3NpbmcgdGFnIGUuZy4gJzwvb2w+Lgor
ICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MuTGF5ZXJpbmdUZXh0U3Rh
Z2UudGV4dEl0ZW1zLm1hcCk6IENhbGN1bGF0ZXMgYW5kIHN0b3JlcyBpc09wZW5pbmcgYW5kIGlz
Q2xvc2luZyBmbGFncyBmb3IgZWFjaCB0ZXh0SXRlbS4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0
YWdlLmlzQ29sb3JhYmxlVGV4dEl0ZW0pOiBSZXR1cm5zIHRydWUgaWYgdGhlIHRleHRJdGVtIGlz
IHNlbGYtY2xvc2luZyB0YWcgZS5nLiAnPHA+Li4uPC9wPicuCisgICAgICAgIChMYXllcmluZ1Rl
eHRTdGFnZS5pc0luc2VydGFibGVUZXh0SXRlbSk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgdGV4dEl0
ZW1zIGNhdXNlcyBhIG5ldyBlbGVtZW50IHRvIGJlIGFkZGVkIHRvIHRoZSB0ZXh0IGxheWVycy4K
KyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmNvbG9yYWJsZVRleHRJdGVtcy5MYXllcmluZ1Rl
eHRTdGFnZS50ZXh0SXRlbXNGbGFncy5maWx0ZXIpOiBOdW1iZXIgb2YgY29sb3JhYmxlIHRleHRJ
dGVtcy4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmluc2VydGFibGVUZXh0SXRlbXMuTGF5
ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MuZmlsdGVyKTogTnVtYmVyIG9mIGluc2VydGFi
bGUgdGV4dEl0ZW1zLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuY29sb3JJbmRleFRvVGV4
dEVsZW1lbnRJbmRleCk6IE1hcHMgZnJvbSBjb2xvckluZGV4IFswLi5jb2xvcmFibGVUZXh0SXRl
bXMtMV0gdG8gdGV4dEVsZW1lbnRJbmRleCBbMC4uaW5zZXJ0YWJsZVRleHRJdGVtcy0xXS4KKyAg
ICAgICAgKExheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fbmV4dFRleHRJdGVtKTogTW92ZXMg
dGhlIF90ZXh0SXRlbUluZGV4IG9uZSBzdGVwIGZvcndhcmQgaW4gYSBsb29wIFswLi5MYXllcmlu
Z1RleHRTdGFnZS50ZXh0SXRlbXMubGVuZ3RoLTFdLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3Rh
Z2UucHJvdG90eXBlLl9wcmV2aW91c1RleHRJdGVtKTogTW92ZXMgdGhlIF90ZXh0SXRlbUluZGV4
IG9uZSBzdGVwIGJhY2t3YXJkIGluIGEgbG9vcC4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdl
LnByb3RvdHlwZS5fcHVzaFRleHRFbGVtZW50KTogQ3JlYXRlcyBhIG5ldyB0ZXh0SXRlbUVsZW1l
bnQgYW5kIGFkZHMgaXQgdG8gdGhlIHRvcG1vc3QgY29udGFpbmVyIDxkaXY+LgorICAgICAgICAo
TGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9wb3BUZXh0RWxlbWVudCk6IFJlbW92ZXMgdGhl
IGxhc3QgdGV4dEl0ZW1FbGVtZW50IGZyb20gdGhlIHRvcG1vc3QgY29udGFpbmVyIDxkaXY+Lgor
ICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9jb2xvclRleHRJdGVtKTogQ2hh
bmdlcyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBhIHNpbmdsZSBjb2xvcmFibGUgdGV4dEVsZW1l
bnQuIFRoZSBpbmRleCBhZHZhbmNlcyBpbiBhIGNpcmNsZSBbMC4uY29sb3JhYmxlVGV4dEl0ZW1z
LTFdLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBDaGFu
Z2VzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGFuZCB0aGUgdGV4dCBjb2xvciBvZiB0aGUgdGV4dEVs
ZW1lbnRzIHN1Y2ggdGhhdCBhIHJlZHJhdyBpcyBlbmZvcmNlZC4KKyAgICAgICAgKExheWVyaW5n
VGV4dFN0YWdlLnByb3RvdHlwZS50dW5lKTogQWRkcyBvciByZW1vdmVzIHRleHRFbGVtZW50cyB0
byB0aGUgc3RhZ2UuCisgICAgICAgIAorICAgICAgICAoTGF5ZXJpbmdUZXh0QmVuY2htYXJrKTog
UnVucyB0aGUgYmVuY2htYXJrIGZvciB0aGUgbGF5ZXJpbmcgdGV4dCB0ZXN0LgorICAgICAgICAo
TGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBz
dGFnZSBvZiB0eXBlIExheWVyaW5nVGV4dFN0YWdlLgorICAgICAgICAoTGF5ZXJpbmdUZXh0QmVu
Y2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvcik6IENyZWF0ZXMgYW4gYW5pbWF0b3Igb2Yg
dHlwZSBMYXllcmluZ1RleHRBbmltYXRvci4KKyAgICAgICAgKExheWVyaW5nVGV4dEJlbmNobWFy
ay5wcm90b3R5cGUudHVuZSk6IFR1bmVzIHRoZSB0ZXN0IHRocm91Z2ggdGhlIGN1cnJlbnQgc3Rh
Z2UuCisgICAgICAgIChMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlLmNsZWFyKTogQ2xl
YXJzIHRoZSB0ZXN0IHRocm91Z2ggdGhlIGN1cnJlbnQgc3RhZ2UuCisgICAgICAgIChMYXllcmlu
Z1RleHRCZW5jaG1hcmsucHJvdG90eXBlLnNob3dSZXN1bHRzKTogU2hvd3MgdGhlIHJlc3VsdHMv
cHJvZ3Jlc3MgdGhyb3VnaCBpdHMgcmVjb3JkVGFibGUgYW5kIHByb2dyZXNzQmFyCisgICAgICAg
ICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2Yg
dHlwZSBMYXllcmluZ1RleHRCZW5jaG1hcmsuCisKIDIwMTUtMDgtMjcgIENzYWJhIE9zenRyb2dv
bsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbRUZMXSBSRUdSRVNTSU9OKHIxODg3
OTMpOiBJdCBtYWRlIDIwMCBsYXlvdXQgdGVzdHMgYW5kIEJpbmRpbmdzL2V2ZW50LXRhcmdldC13
cmFwcGVyLmh0bWwgcGVyZm9ybWFuY2UgdGVzdCBmYWlsCkluZGV4OiBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL21haW4uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9tYWluLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9tYWluLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjM3IEBACitmdW5jdGlvbiBQb2ludCh4LCB5KSB7CisgICAgdGhpcy54ID0geDsK
KyAgICB0aGlzLnkgPSB5OworfQorCitQb2ludC5wcm90b3R5cGUgPSB7CisgICAgd2lkdGggOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMueDsKKyAgICB9LAorICAgIGhlaWdodCA6
IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy55OworICAgIH0sCisgICAgY2VudGVy
IDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy54IC8gMiwgdGhp
cy55IC8gMik7CisgICAgfSwKKyAgICBhZGQgOiBmdW5jdGlvbihvdGhlcikgeworICAgICAgICBy
ZXR1cm4gbmV3IFBvaW50KHRoaXMueCArIG90aGVyLngsIHRoaXMueSArIG90aGVyLnkpOworICAg
IH0sICAgIAorICAgIHN1YnRyYWN0IDogZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgcmV0dXJu
IG5ldyBQb2ludCh0aGlzLnggLSBvdGhlci54LCB0aGlzLnkgLSBvdGhlci55KTsKKyAgICB9LAor
ICAgIG11bHRpcGx5IDogZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQb2lu
dCh0aGlzLnggKiBvdGhlci54LCB0aGlzLnkgKiBvdGhlci55KTsKKyAgICB9LAorICAgIG1vdmUg
OiBmdW5jdGlvbihhbmdsZSwgdmVsb2NpdHksIHRpbWVEZWx0YSkgeworICAgICAgICB2YXIgeCA9
IHRoaXMueCArIE1hdGguY29zKGFuZ2xlKSAqIHZlbG9jaXR5ICogKHRpbWVEZWx0YSAvIDEwMDAp
OworICAgICAgICB2YXIgeSA9IHRoaXMueSArIE1hdGguc2luKGFuZ2xlKSAqIHZlbG9jaXR5ICog
KHRpbWVEZWx0YSAvIDEwMDApOworICAgICAgICByZXR1cm4gbmV3IFBvaW50KHgsIHkpOworICAg
IH0KK30KKworZnVuY3Rpb24gSW5zZXRzKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCkgeworICAg
IHRoaXMudG9wID0gdG9wOworICAgIHRoaXMucmlnaHQgPSByaWdodDsKKyAgICB0aGlzLmJvdHRv
bSA9IGJvdHRvbTsKKyAgICB0aGlzLmxlZnQgPSBsZWZ0OworfQorCitJbnNldHMucHJvdG90eXBl
ID0geworICAgIHdpZHRoIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLmxlZnQg
KyB0aGlzLnJpZ2h0OworICAgIH0sCisgICAgaGVpZ2h0IDogZnVuY3Rpb24oKSB7CisgICAgICAg
IHJldHVybiB0aGlzLnRvcCArIHRoaXMuYm90dG9tOworICAgIH0KK30KKworZnVuY3Rpb24gU2lt
cGxlUHJvbWlzZSgpIHsKKyAgICB0aGlzLl9jaGFpbmVkUHJvbWlzZSA9IG51bGw7CisgICAgdGhp
cy5fY2FsbGJhY2sgPSBudWxsOworfQorCitTaW1wbGVQcm9taXNlLnByb3RvdHlwZS50aGVuID0g
ZnVuY3Rpb24gKGNhbGxiYWNrKSB7CisgICAgaWYgKHRoaXMuX2NhbGxiYWNrKQorICAgICAgICB0
aHJvdyAiU2ltcGxlUHJvbWlzZSBkb2Vzbid0IHN1cHBvcnQgbXVsdGlwbGUgY2FsbHMgdG8gdGhl
biI7CisgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICB0aGlzLl9jaGFpbmVkUHJv
bWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgIAorICAgIGlmICh0aGlzLl9yZXNvbHZlZCkK
KyAgICAgICAgdGhpcy5yZXNvbHZlKHRoaXMuX3Jlc29sdmVkVmFsdWUpOworCisgICAgcmV0dXJu
IHRoaXMuX2NoYWluZWRQcm9taXNlOworfQorCitTaW1wbGVQcm9taXNlLnByb3RvdHlwZS5yZXNv
bHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgaWYgKCF0aGlzLl9jYWxsYmFjaykgeworICAg
ICAgICB0aGlzLl9yZXNvbHZlZCA9IHRydWU7CisgICAgICAgIHRoaXMuX3Jlc29sdmVkVmFsdWUg
PSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciByZXN1bHQgPSB0aGlz
Ll9jYWxsYmFjayh2YWx1ZSk7CisgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFNpbXBsZVByb21p
c2UpIHsKKyAgICAgICAgdmFyIGNoYWluZWRQcm9taXNlID0gdGhpcy5fY2hhaW5lZFByb21pc2U7
CisgICAgICAgIHJlc3VsdC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsgY2hhaW5lZFByb21pc2Uu
cmVzb2x2ZShyZXN1bHQpOyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgdGhpcy5fY2hhaW5lZFBy
b21pc2UucmVzb2x2ZShyZXN1bHQpOworfQorCitmdW5jdGlvbiBPcHRpb25zKHRlc3RJbnRlcnZh
bCwgZnJhbWVSYXRlKSB7CisgICAgdGhpcy50ZXN0SW50ZXJ2YWwgPSB0ZXN0SW50ZXJ2YWw7Cisg
ICAgdGhpcy5mcmFtZVJhdGUgPSBmcmFtZVJhdGU7Cit9CisKK2Z1bmN0aW9uIFByb2dyZXNzQmFy
KGVsZW1lbnQsIHJhbmdlcykgeworICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7CisgICAgdGhp
cy5yYW5nZXMgPSByYW5nZXM7CisgICAgdGhpcy5jdXJyZW50UmFuZ2UgPSAwOworfQorCitQcm9n
cmVzc0Jhci5wcm90b3R5cGUgPSB7CisgICAgX3Byb2dyZXNzVG9QZXJjZW50IDogZnVuY3Rpb24o
cHJvZ3Jlc3MpIHsKKyAgICAgICAgcmV0dXJuIHByb2dyZXNzICogKDEwMCAvIHRoaXMucmFuZ2Vz
KTsKKyAgICB9LAorICAgIGluY1JhbmdlIDogZnVuY3Rpb24oKSB7CisgICAgICAgICsrdGhpcy5j
dXJyZW50UmFuZ2U7CisgICAgfSwKKyAgICBzZXRQb3MgOiBmdW5jdGlvbihwcm9ncmVzcykgewor
ICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLl9wcm9ncmVzc1RvUGVyY2Vu
dCh0aGlzLmN1cnJlbnRSYW5nZSArIHByb2dyZXNzKSArICIlIjsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIFJlY29yZFRhYmxlKGVsZW1lbnQpIHsKKyAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50Owor
ICAgIHRoaXMuY2xlYXIoKTsKK30KKworUmVjb3JkVGFibGUucHJvdG90eXBlID0geworICAgIGNs
ZWFyIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgPSAiIjsK
KyAgICB9LAorICAgIF9zaG93VGl0bGVzIDogZnVuY3Rpb24ocm93LCBxdWV1ZSwgdGl0bGVzLCBt
ZXNzYWdlKSB7CisgICAgICAgIGZvciAodmFyIHRpdGxlID0gMDsgdGl0bGUgPCB0aXRsZXMubGVu
Z3RoOyArK3RpdGxlKSB7CisgICAgICAgICAgICB2YXIgdGggPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJ0aCIpOworICAgICAgICAgICAgdGguaW5uZXJIVE1MID0gdGl0bGVzW3RpdGxlXS50ZXh0
OworICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlICE9ICJ1bmRlZmluZWQiICYmIG1lc3Nh
Z2UubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgdGguaW5uZXJIVE1MICs9ICI8YnI+WyIgKyBt
ZXNzYWdlICsgIl0iOworICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiIjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmICgid2lkdGgiIGluIHRpdGxlc1t0aXRsZV0pCisgICAgICAgICAg
ICAgICAgdGgud2lkdGggPSB0aXRsZXNbdGl0bGVdLndpZHRoICsgIiUiOworICAgICAgICAgICAg
cm93LmFwcGVuZENoaWxkKHRoKTsKKyAgICAgICAgICAgIHF1ZXVlLnB1c2goe2VsZW1lbnQ6IHRo
LCB0aXRsZXM6IHRpdGxlc1t0aXRsZV0uY2hpbGRyZW4gfSk7CisgICAgICAgIH0KKyAgICB9LAor
ICAgIF9zaG93SGVhZGVyIDogZnVuY3Rpb24oc3VpdGVOYW1lLCB0aXRsZXMsIG1lc3NhZ2UpIHsK
KyAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisKKyAgICAg
ICAgdmFyIHF1ZXVlID0gW107CisgICAgICAgIHRoaXMuX3Nob3dUaXRsZXMocm93LCBxdWV1ZSwg
dGl0bGVzLCBtZXNzYWdlKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHJvdyk7
CisKKyAgICAgICAgd2hpbGUgKHF1ZXVlLmxlbmd0aCkgeworICAgICAgICAgICAgdmFyIHJvdyA9
IG51bGw7CisgICAgICAgICAgICB2YXIgbGlzdCA9IFtdOworCisgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMCwgbGVuID0gcXVldWUubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsKKyAgICAgICAgICAg
ICAgICB2YXIgZW50cnkgPSBxdWV1ZS5zaGlmdCgpOworCisgICAgICAgICAgICAgICAgaWYgKCFl
bnRyeS50aXRsZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIGxpc3QucHVzaChlbnRy
eS5lbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFyb3cpCisgICAgICAgICAgICAgICAgICAgIHZh
ciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworCisgICAgICAgICAgICAgICAg
dGhpcy5fc2hvd1RpdGxlcyhyb3csIHF1ZXVlLCBlbnRyeS50aXRsZXMsICIiKTsKKyAgICAgICAg
ICAgICAgICBlbnRyeS5lbGVtZW50LmNvbFNwYW4gPSBlbnRyeS50aXRsZXMubGVuZ3RoOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocm93KSB7CisgICAgICAgICAgICAgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKHJvdyk7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgICAgICArK2xpc3RbaV0u
cm93U3BhbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisgICAgX3Nob3dFbXB0
eSA6IGZ1bmN0aW9uKHJvdywgdGVzdE5hbWUpIHsKKyAgICAgICAgdmFyIHRkID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxkKHRkKTsKKyAgICB9
LAorICAgIF9zaG93VmFsdWUgOiBmdW5jdGlvbihyb3csIHRlc3ROYW1lLCB2YWx1ZSkgeworICAg
ICAgICB2YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICB0ZC50
ZXh0Q29udGVudCA9IHZhbHVlLnRvRml4ZWQoMik7CisgICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0
ZCk7CisgICAgfSwKKyAgICBfc2hvd1NhbXBsZXMgOiBmdW5jdGlvbihyb3csIHRlc3ROYW1lLCBh
eGlzZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGltZU9mZnNldCkgeworICAgICAgICB2YXIgdGQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICB2YXIgYnV0dG9uID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGJ1dHRvbi5jbGFzc05hbWUgPSAic21h
bGwtYnV0dG9uIjsKKyAgICAgICAgICAgIAorICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHdpbmRvdy5zaG93R3JhcGgodGVz
dE5hbWUsIGF4aXNlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KTsKKyAgICAgICAgfSk7
CisgICAgICAgICAgICAKKyAgICAgICAgYnV0dG9uLnRleHRDb250ZW50ID0gIkNsaWNrLi4uIjsK
KyAgICAgICAgdGQuYXBwZW5kQ2hpbGQoYnV0dG9uKTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxk
KHRkKTsKKyAgICB9LAorICAgIF9zaG93VGVzdCA6IGZ1bmN0aW9uKHRlc3ROYW1lLCB0aXRsZXMs
IHNhbXBsZXIsIGZpbmFsUmVzdWx0cykgeworICAgICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgidHIiKTsKKyAgICAgICAgdmFyIHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgidGQiKTsKKyAgICAgICAgdGQudGV4dENvbnRlbnQgPSB0ZXN0TmFtZTsKKyAgICAgICAgcm93
LmFwcGVuZENoaWxkKHRkKTsKKyAgICAgICAgCisgICAgICAgIHZhciBheGlzZXMgPSBbXTsKKyAg
ICAgICAgZm9yICh2YXIgbWVhc3VyZSA9IDA7IG1lYXN1cmUgPCBzYW1wbGVyLnN0YXRpc3RpY3Mu
bGVuZ3RoOyArK21lYXN1cmUpIHsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dWYWx1ZShyb3csIHRl
c3ROYW1lLCBzYW1wbGVyLnN0YXRpc3RpY3NbbWVhc3VyZV0ubWVhbigpKTsKKyAgICAgICAgICAg
IHRoaXMuX3Nob3dWYWx1ZShyb3csIHRlc3ROYW1lLCBzYW1wbGVyLnN0YXRpc3RpY3NbbWVhc3Vy
ZV0uY29uZmlkZW5jZUludGVydmFsRGVsdGEoOTUpKTsgICAgICAgICAgICAKKyAgICAgICAgICAg
IHRoaXMuX3Nob3dWYWx1ZShyb3csIHRlc3ROYW1lLCBzYW1wbGVyLnN0YXRpc3RpY3NbbWVhc3Vy
ZV0uc3RhbmRhcmREZXZpYXRpb24oKSk7CisgICAgICAgICAgICB0aGlzLl9zaG93VmFsdWUocm93
LCB0ZXN0TmFtZSwgc2FtcGxlci5zdGF0aXN0aWNzW21lYXN1cmVdLnBlcmNlbnRhZ2UoKSk7Cisg
ICAgICAgICAgICBheGlzZXMucHVzaCh0aXRsZXNbbWVhc3VyZSArIDFdLnRleHQpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGZpbmFsUmVzdWx0cykKKyAgICAgICAgICAgIHRoaXMuX3Nob3dT
YW1wbGVzKHJvdywgdGVzdE5hbWUsIGF4aXNlcywgc2FtcGxlci5zYW1wbGVzLCBzYW1wbGVyLnNh
bXBsaW5nVGltZU9mZnNldCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX3Nob3dF
bXB0eSAocm93LCB0ZXN0TmFtZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChy
b3cpOworICAgIH0sCisgICAgX3Nob3dTdWl0ZSA6IGZ1bmN0aW9uKHN1aXRlLCBzdWl0ZVNhbXBs
ZXJzKSB7CisgICAgICAgIHZhciBzY29yZXMgPSBbXTsgICAgICAgIAorICAgICAgICBmb3IgKHZh
ciB0ZXN0TmFtZSBpbiBzdWl0ZVNhbXBsZXJzKSB7CisgICAgICAgICAgICB2YXIgdGVzdCA9IHRl
c3RGcm9tTmFtZShzdWl0ZSwgdGVzdE5hbWUpOworICAgICAgICAgICAgdmFyIHNhbXBsZXIgPSBz
dWl0ZVNhbXBsZXJzW3Rlc3ROYW1lXTsgCisgICAgICAgICAgICB0aGlzLl9zaG93VGVzdCh0ZXN0
TmFtZSwgc3VpdGUudGl0bGVzLCBzYW1wbGVyLCB0cnVlKTsKKyAgICAgICAgICAgIHNjb3Jlcy5w
dXNoKE1hdGgubWluKHNhbXBsZXIuc3RhdGlzdGljc1swXS5tZWFuKCkgKiB0ZXN0LndlaWdodCAv
IHRlc3QubWF4LCAxKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNjb3JlczsKKyAgICB9
LAorICAgIHNob3dSZWNvcmQgOiBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgc2FtcGxlciwgbWVzc2Fn
ZSkgeworICAgICAgICB0aGlzLmNsZWFyKCk7ICAgICAgICAKKyAgICAgICAgdGhpcy5fc2hvd0hl
YWRlcigiIiwgc3VpdGUudGl0bGVzLCBtZXNzYWdlKTsKKyAgICAgICAgdGhpcy5fc2hvd1Rlc3Qo
dGVzdC5uYW1lLCBzdWl0ZS50aXRsZXMsIHNhbXBsZXIsIGZhbHNlKTsgICAgICAgIAorICAgIH0s
CisgICAgc2hvd0l0ZXJhdGlvbnMgOiBmdW5jdGlvbihpdGVyYXRpb25zU2FtcGxlcnMpIHsKKyAg
ICAgICAgdGhpcy5jbGVhcigpOworCisgICAgICAgIHZhciBzY29yZXMgPSBbXTsKKyAgICAgICAg
dmFyIHRpdGxlcyA9IG51bGw7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcmF0aW9u
c1NhbXBsZXJzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHZhciBzdWl0ZU5hbWUg
aW4gaXRlcmF0aW9uc1NhbXBsZXJzW2ldKSB7CisgICAgICAgICAgICAgICAgdmFyIHN1aXRlID0g
c3VpdGVGcm9tTmFtZShzdWl0ZU5hbWUpOworICAgICAgICAgICAgICAgIGlmICh0aXRsZXMgIT0g
c3VpdGUudGl0bGVzKSB7CisgICAgICAgICAgICAgICAgICAgIHRpdGxlcyA9IHN1aXRlLnRpdGxl
czsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2hvd0hlYWRlcihzdWl0ZU5hbWUsIHRpdGxl
cywgIiIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHZhciBzdWl0ZVNj
b3JlcyA9IHRoaXMuX3Nob3dTdWl0ZShzdWl0ZSwgaXRlcmF0aW9uc1NhbXBsZXJzW2ldW3N1aXRl
TmFtZV0pOworICAgICAgICAgICAgICAgIHNjb3Jlcy5wdXNoLmFwcGx5KHNjb3Jlcywgc3VpdGVT
Y29yZXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHZhciBzdW0gPSBzY29y
ZXMucmVkdWNlKGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEgKyBiOyB9KTsKKyAgICAgICAgcmV0
dXJuIHN1bSAqIDEwMCAvIHNjb3Jlcy5sZW5ndGg7CisgICAgfQorfQpJbmRleDogUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcwkocmV2
aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvc3RhdGlz
dGljcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzNyBAQAorZnVuY3Rpb24gU3RhdGlz
dGljKCkgeworICAgIHRoaXMuX2luaXQoKTsKK30KKworU3RhdGlzdGljLnNhbXBsZU1lYW4gPSBm
dW5jdGlvbihudW1iZXJPZlNhbXBsZXMsIHN1bSkgeworICAgIGlmIChudW1iZXJPZlNhbXBsZXMg
PCAxKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gc3VtIC8gbnVtYmVyT2ZTYW1wbGVz
OworfQorCitTdGF0aXN0aWMuc2FtcGxlU3RhbmRhcmREZXZpYXRpb24gPSBmdW5jdGlvbihudW1i
ZXJPZlNhbXBsZXMsIHN1bSwgc3F1YXJlU3VtKSB7CisgICAgaWYgKG51bWJlck9mU2FtcGxlcyA8
IDIpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBNYXRoLnNxcnQoKHNxdWFyZVN1bSAt
IHN1bSAqIHN1bSAvIG51bWJlck9mU2FtcGxlcykgLyAobnVtYmVyT2ZTYW1wbGVzIC0gMSkpIDsK
K30KKworLy8gU2VlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3R1ZGVudCdzX3QtZGlz
dHJpYnV0aW9uI1RhYmxlX29mX3NlbGVjdGVkX3ZhbHVlcworLy8gVGhpcyB0YWJsZSBjb250YWlu
cyBvbmUgc2lkZWQgKGEuay5hLiB0YWlsKSB2YWx1ZXMuCitTdGF0aXN0aWMudERpc3RyaWJ1dGlv
bkludmVyc2VDREYgPSB7CisgICAgMC45OiBbCisgICAgICAgIDMuMDc3Njg0LCAxLjg4NTYxOCwg
MS42Mzc3NDQsIDEuNTMzMjA2LCAxLjQ3NTg4NCwgMS40Mzk3NTYsIDEuNDE0OTI0LCAxLjM5Njgx
NSwgMS4zODMwMjksIDEuMzcyMTg0LAorICAgICAgICAxLjM2MzQzMCwgMS4zNTYyMTcsIDEuMzUw
MTcxLCAxLjM0NTAzMCwgMS4zNDA2MDYsIDEuMzM2NzU3LCAxLjMzMzM3OSwgMS4zMzAzOTEsIDEu
MzI3NzI4LCAxLjMyNTM0MSwKKyAgICAgICAgMS4zMjMxODgsIDEuMzIxMjM3LCAxLjMxOTQ2MCwg
MS4zMTc4MzYsIDEuMzE2MzQ1LCAxLjMxNDk3MiwgMS4zMTM3MDMsIDEuMzEyNTI3LCAxLjMxMTQz
NCwgMS4zMTA0MTUsCisgICAgICAgIDEuMzA5NDY0LCAxLjMwODU3MywgMS4zMDc3MzcsIDEuMzA2
OTUyLCAxLjMwNjIxMiwgMS4zMDU1MTQsIDEuMzA0ODU0LCAxLjMwNDIzMCwgMS4zMDM2MzksIDEu
MzAzMDc3LAorICAgICAgICAxLjMwMjU0MywgMS4zMDIwMzUsIDEuMzAxNTUyLCAxLjMwMTA5MCwg
MS4zMDA2NDksIDEuMzAwMjI4LCAxLjI5OTgyNSwgMS4yOTk0MzksIDEuMjk5MDY5LCAxLjI5ODcx
NCwKKworICAgICAgICAxLjI5ODM3MywgMS4yOTgwNDUsIDEuMjk3NzMwLCAxLjI5NzQyNiwgMS4y
OTcxMzQsIDEuMjk2ODUzLCAxLjI5NjU4MSwgMS4yOTYzMTksIDEuMjk2MDY2LCAxLjI5NTgyMSwK
KyAgICAgICAgMS4yOTU1ODUsIDEuMjk1MzU2LCAxLjI5NTEzNCwgMS4yOTQ5MjAsIDEuMjk0NzEy
LCAxLjI5NDUxMSwgMS4yOTQzMTUsIDEuMjk0MTI2LCAxLjI5Mzk0MiwgMS4yOTM3NjMsCisgICAg
ICAgIDEuMjkzNTg5LCAxLjI5MzQyMSwgMS4yOTMyNTYsIDEuMjkzMDk3LCAxLjI5Mjk0MSwgMS4y
OTI3OTAsIDEuMjkyNjQzLCAxLjI5MjUwMCwgMS4yOTIzNjAsIDEuMjkyMjI0LAorICAgICAgICAx
LjI5MjA5MSwgMS4yOTE5NjEsIDEuMjkxODM1LCAxLjI5MTcxMSwgMS4yOTE1OTEsIDEuMjkxNDcz
LCAxLjI5MTM1OCwgMS4yOTEyNDYsIDEuMjkxMTM2LCAxLjI5MTAyOSwKKyAgICAgICAgMS4yOTA5
MjQsIDEuMjkwODIxLCAxLjI5MDcyMSwgMS4yOTA2MjMsIDEuMjkwNTI3LCAxLjI5MDQzMiwgMS4y
OTAzNDAsIDEuMjkwMjUwLCAxLjI5MDE2MSwgMS4yOTAwNzVdLAorICAgIDAuOTU6IFsKKyAgICAg
ICAgNi4zMTM3NTIsIDIuOTE5OTg2LCAyLjM1MzM2MywgMi4xMzE4NDcsIDIuMDE1MDQ4LCAxLjk0
MzE4MCwgMS44OTQ1NzksIDEuODU5NTQ4LCAxLjgzMzExMywgMS44MTI0NjEsCisgICAgICAgIDEu
Nzk1ODg1LCAxLjc4MjI4OCwgMS43NzA5MzMsIDEuNzYxMzEwLCAxLjc1MzA1MCwgMS43NDU4ODQs
IDEuNzM5NjA3LCAxLjczNDA2NCwgMS43MjkxMzMsIDEuNzI0NzE4LAorICAgICAgICAxLjcyMDc0
MywgMS43MTcxNDQsIDEuNzEzODcyLCAxLjcxMDg4MiwgMS43MDgxNDEsIDEuNzA1NjE4LCAxLjcw
MzI4OCwgMS43MDExMzEsIDEuNjk5MTI3LCAxLjY5NzI2MSwKKyAgICAgICAgMS42OTU1MTksIDEu
NjkzODg5LCAxLjY5MjM2MCwgMS42OTA5MjQsIDEuNjg5NTcyLCAxLjY4ODI5OCwgMS42ODcwOTQs
IDEuNjg1OTU0LCAxLjY4NDg3NSwgMS42ODM4NTEsCisgICAgICAgIDEuNjgyODc4LCAxLjY4MTk1
MiwgMS42ODEwNzEsIDEuNjgwMjMwLCAxLjY3OTQyNywgMS42Nzg2NjAsIDEuNjc3OTI3LCAxLjY3
NzIyNCwgMS42NzY1NTEsIDEuNjc1OTA1LAorCisgICAgICAgIDEuNjc1Mjg1LCAxLjY3NDY4OSwg
MS42NzQxMTYsIDEuNjczNTY1LCAxLjY3MzAzNCwgMS42NzI1MjIsIDEuNjcyMDI5LCAxLjY3MTU1
MywgMS42NzEwOTMsIDEuNjcwNjQ5LAorICAgICAgICAxLjY3MDIxOSwgMS42Njk4MDQsIDEuNjY5
NDAyLCAxLjY2OTAxMywgMS42Njg2MzYsIDEuNjY4MjcxLCAxLjY2NzkxNiwgMS42Njc1NzIsIDEu
NjY3MjM5LCAxLjY2NjkxNCwKKyAgICAgICAgMS42NjY2MDAsIDEuNjY2Mjk0LCAxLjY2NTk5Niwg
MS42NjU3MDcsIDEuNjY1NDI1LCAxLjY2NTE1MSwgMS42NjQ4ODUsIDEuNjY0NjI1LCAxLjY2NDM3
MSwgMS42NjQxMjUsCisgICAgICAgIDEuNjYzODg0LCAxLjY2MzY0OSwgMS42NjM0MjAsIDEuNjYz
MTk3LCAxLjY2Mjk3OCwgMS42NjI3NjUsIDEuNjYyNTU3LCAxLjY2MjM1NCwgMS42NjIxNTUsIDEu
NjYxOTYxLAorICAgICAgICAxLjY2MTc3MSwgMS42NjE1ODUsIDEuNjYxNDA0LCAxLjY2MTIyNiwg
MS42NjEwNTIsIDEuNjYwODgxLCAxLjY2MDcxNSwgMS42NjA1NTEsIDEuNjYwMzkxLCAxLjY2MDIz
NF0sCisgICAgMC45NzU6IFsKKyAgICAgICAgMTIuNzA2MjA1LCA0LjMwMjY1MywgMy4xODI0NDYs
IDIuNzc2NDQ1LCAyLjU3MDU4MiwgMi40NDY5MTIsIDIuMzY0NjI0LCAyLjMwNjAwNCwgMi4yNjIx
NTcsIDIuMjI4MTM5LAorICAgICAgICAyLjIwMDk4NSwgMi4xNzg4MTMsIDIuMTYwMzY5LCAyLjE0
NDc4NywgMi4xMzE0NTAsIDIuMTE5OTA1LCAyLjEwOTgxNiwgMi4xMDA5MjIsIDIuMDkzMDI0LCAy
LjA4NTk2MywKKyAgICAgICAgMi4wNzk2MTQsIDIuMDczODczLCAyLjA2ODY1OCwgMi4wNjM4OTks
IDIuMDU5NTM5LCAyLjA1NTUyOSwgMi4wNTE4MzEsIDIuMDQ4NDA3LCAyLjA0NTIzMCwgMi4wNDIy
NzIsCisgICAgICAgIDIuMDM5NTEzLCAyLjAzNjkzMywgMi4wMzQ1MTUsIDIuMDMyMjQ1LCAyLjAz
MDEwOCwgMi4wMjgwOTQsIDIuMDI2MTkyLCAyLjAyNDM5NCwgMi4wMjI2OTEsIDIuMDIxMDc1LAor
ICAgICAgICAyLjAxOTU0MSwgMi4wMTgwODIsIDIuMDE2NjkyLCAyLjAxNTM2OCwgMi4wMTQxMDMs
IDIuMDEyODk2LCAyLjAxMTc0MSwgMi4wMTA2MzUsIDIuMDA5NTc1LCAyLjAwODU1OSwKKworICAg
ICAgICAyLjAwNzU4NCwgMi4wMDY2NDcsIDIuMDA1NzQ2LCAyLjAwNDg3OSwgMi4wMDQwNDUsIDIu
MDAzMjQxLCAyLjAwMjQ2NSwgMi4wMDE3MTcsIDIuMDAwOTk1LCAyLjAwMDI5OCwKKyAgICAgICAg
MS45OTk2MjQsIDEuOTk4OTcyLCAxLjk5ODM0MSwgMS45OTc3MzAsIDEuOTk3MTM4LCAxLjk5NjU2
NCwgMS45OTYwMDgsIDEuOTk1NDY5LCAxLjk5NDk0NSwgMS45OTQ0MzcsCisgICAgICAgIDEuOTkz
OTQzLCAxLjk5MzQ2NCwgMS45OTI5OTcsIDEuOTkyNTQzLCAxLjk5MjEwMiwgMS45OTE2NzMsIDEu
OTkxMjU0LCAxLjk5MDg0NywgMS45OTA0NTAsIDEuOTkwMDYzLAorICAgICAgICAxLjk4OTY4Niwg
MS45ODkzMTksIDEuOTg4OTYwLCAxLjk4ODYxMCwgMS45ODgyNjgsIDEuOTg3OTM0LCAxLjk4NzYw
OCwgMS45ODcyOTAsIDEuOTg2OTc5LCAxLjk4NjY3NSwKKyAgICAgICAgMS45ODYzNzcsIDEuOTg2
MDg2LCAxLjk4NTgwMiwgMS45ODU1MjMsIDEuOTg1MjUxLCAxLjk4NDk4NCwgMS45ODQ3MjMsIDEu
OTg0NDY3LCAxLjk4NDIxNywgMS45ODM5NzJdLAorICAgIDAuOTk6IFsKKyAgICAgICAgMzEuODIw
NTE2LCA2Ljk2NDU1NywgNC41NDA3MDMsIDMuNzQ2OTQ3LCAzLjM2NDkzMCwgMy4xNDI2NjgsIDIu
OTk3OTUyLCAyLjg5NjQ1OSwgMi44MjE0MzgsIDIuNzYzNzY5LAorICAgICAgICAyLjcxODA3OSwg
Mi42ODA5OTgsIDIuNjUwMzA5LCAyLjYyNDQ5NCwgMi42MDI0ODAsIDIuNTgzNDg3LCAyLjU2Njkz
NCwgMi41NTIzODAsIDIuNTM5NDgzLCAyLjUyNzk3NywKKyAgICAgICAgMi41MTc2NDgsIDIuNTA4
MzI1LCAyLjQ5OTg2NywgMi40OTIxNTksIDIuNDg1MTA3LCAyLjQ3ODYzMCwgMi40NzI2NjAsIDIu
NDY3MTQwLCAyLjQ2MjAyMSwgMi40NTcyNjIsCisgICAgICAgIDIuNDUyODI0LCAyLjQ0ODY3OCwg
Mi40NDQ3OTQsIDIuNDQxMTUwLCAyLjQzNzcyMywgMi40MzQ0OTQsIDIuNDMxNDQ3LCAyLjQyODU2
OCwgMi40MjU4NDEsIDIuNDIzMjU3LAorICAgICAgICAyLjQyMDgwMywgMi40MTg0NzAsIDIuNDE2
MjUwLCAyLjQxNDEzNCwgMi40MTIxMTYsIDIuNDEwMTg4LCAyLjQwODM0NSwgMi40MDY1ODEsIDIu
NDA0ODkyLCAyLjQwMzI3MiwKKworICAgICAgICAyLjQwMTcxOCwgMi40MDAyMjUsIDIuMzk4Nzkw
LCAyLjM5NzQxMCwgMi4zOTYwODEsIDIuMzk0ODAxLCAyLjM5MzU2OCwgMi4zOTIzNzcsIDIuMzkx
MjI5LCAyLjM5MDExOSwKKyAgICAgICAgMi4zODkwNDcsIDIuMzg4MDExLCAyLjM4NzAwOCwgMi4z
ODYwMzcsIDIuMzg1MDk3LCAyLjM4NDE4NiwgMi4zODMzMDIsIDIuMzgyNDQ2LCAyLjM4MTYxNSwg
Mi4zODA4MDcsCisgICAgICAgIDIuMzgwMDI0LCAyLjM3OTI2MiwgMi4zNzg1MjIsIDIuMzc3ODAy
LCAyLjM3NzEwMiwgMi4zNzY0MjAsIDIuMzc1NzU3LCAyLjM3NTExMSwgMi4zNzQ0ODIsIDIuMzcz
ODY4LAorICAgICAgICAyLjM3MzI3MCwgMi4zNzI2ODcsIDIuMzcyMTE5LCAyLjM3MTU2NCwgMi4z
NzEwMjIsIDIuMzcwNDkzLCAyLjM2OTk3NywgMi4zNjk0NzIsIDIuMzY4OTc5LCAyLjM2ODQ5NywK
KyAgICAgICAgMi4zNjgwMjYsIDIuMzY3NTY2LCAyLjM2NzExNSwgMi4zNjY2NzQsIDIuMzY2MjQz
LCAyLjM2NTgyMSwgMi4zNjU0MDcsIDIuMzY1MDAyLCAyLjM2NDYwNiwgMi4zNjQyMTddCit9Owor
CitTdGF0aXN0aWMucHJvdG90eXBlID0geworICAgIF9pbml0IDogZnVuY3Rpb24oKSB7CisgICAg
ICAgIHRoaXMuX3N1bSA9IDA7CisgICAgICAgIHRoaXMuX3NxdWFyZVN1bSA9IDA7CisgICAgICAg
IHRoaXMuX251bWJlck9mU2FtcGxlcyA9IDA7CisgICAgfSwKKyAgICAvLyBDYWxsZWQgYWZ0ZXIg
YSB3YXJtLXVwIHBlcmlvZAorICAgIHN0YXJ0U2FtcGxpbmcgOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgdmFyIG1lYW4gPSB0aGlzLm1lYW4oKTsKKyAgICAgICAgdGhpcy5faW5pdCgpOworICAgICAg
ICB0aGlzLnNhbXBsZShtZWFuKTsKKyAgICB9LAorICAgIHNhbXBsZSA6IGZ1bmN0aW9uKHZhbHVl
KSB7CisgICAgICAgIHRoaXMuX3N1bSArPSB2YWx1ZTsKKyAgICAgICAgdGhpcy5fc3F1YXJlU3Vt
ICs9IHZhbHVlICogdmFsdWU7CisgICAgICAgICsrdGhpcy5fbnVtYmVyT2ZTYW1wbGVzOyAgICAg
ICAgCisgICAgfSwKKyAgICBtZWFuIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBTdGF0
aXN0aWMuc2FtcGxlTWVhbih0aGlzLl9udW1iZXJPZlNhbXBsZXMsIHRoaXMuX3N1bSk7CisgICAg
fSwKKyAgICBzdGFuZGFyZERldmlhdGlvbiA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4g
U3RhdGlzdGljLnNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uKHRoaXMuX251bWJlck9mU2FtcGxlcywg
dGhpcy5fc3VtLCB0aGlzLl9zcXVhcmVTdW0pOworICAgIH0sCisgICAgcGVyY2VudGFnZSA6IGZ1
bmN0aW9uKCkgeworICAgICAgICB2YXIgbWVhbiA9IHRoaXMubWVhbigpOworICAgICAgICByZXR1
cm4gbWVhbiA/IHRoaXMuc3RhbmRhcmREZXZpYXRpb24oKSAqIDEwMCAvIG1lYW4gOiAwOworICAg
IH0sCisgICAgY29uZmlkZW5jZUludGVydmFsRGVsdGEgOiBmdW5jdGlvbihjb25maWRlbmNlTGV2
ZWwpIHsKKyAgICAgICAgaWYgKHRoaXMuX251bWJlck9mU2FtcGxlcyA8IDIpCisgICAgICAgICAg
ICByZXR1cm4gTmFOOworICAgICAgICAKKyAgICAgICAgdmFyIHByb2JhYmlsaXR5ID0gKDEwMCAt
IDIgKiAoMTAwIC0gY29uZmlkZW5jZUxldmVsKSkgLyAxMDA7CisgICAgICAgIGlmICghKHByb2Jh
YmlsaXR5IGluIFN0YXRpc3RpYy50RGlzdHJpYnV0aW9uSW52ZXJzZUNERikpCisgICAgICAgICAg
ICB0aHJvdyAnVW5zdXBwb3J0ZWQgY29uZmlkZW5jZSBsZXZlbCc7CisKKyAgICAgICAgdmFyIGNk
ZkZvclByb2JhYmlsaXR5ID0gU3RhdGlzdGljLnREaXN0cmlidXRpb25JbnZlcnNlQ0RGW3Byb2Jh
YmlsaXR5XTsKKyAgICAgICAgdmFyIGRlZ3JlZXNPZkZyZWVkb20gPSBNYXRoLm1pbih0aGlzLl9u
dW1iZXJPZlNhbXBsZXMgLSAxLCBjZGZGb3JQcm9iYWJpbGl0eS5sZW5ndGgpOworICAgICAgICAK
KyAgICAgICAgdmFyIHF1YW50aWxlID0gY2RmRm9yUHJvYmFiaWxpdHlbZGVncmVlc09mRnJlZWRv
bSAtIDFdOyAvLyBUaGUgZmlyc3QgZW50cnkgaXMgZm9yIHRoZSBvbmUgZGVncmVlIG9mIGZyZWVk
b20uCisgICAgICAgIHJldHVybiBxdWFudGlsZSAqIFN0YXRpc3RpYy5zYW1wbGVTdGFuZGFyZERl
dmlhdGlvbih0aGlzLl9udW1iZXJPZlNhbXBsZXMsIHRoaXMuX3N1bSwgdGhpcy5fc3F1YXJlU3Vt
KSAvIE1hdGguc3FydCh0aGlzLl9udW1iZXJPZlNhbXBsZXMpOworICAgIH0KK30KKworZnVuY3Rp
b24gU2FtcGxlcihjb3VudCkgeworICAgIHRoaXMuc3RhdGlzdGljcyA9IFtdOworICAgIHdoaWxl
IChjb3VudC0tKQorICAgICAgICB0aGlzLnN0YXRpc3RpY3MucHVzaChuZXcgU3RhdGlzdGljKTsK
KyAgICB0aGlzLnNhbXBsZXMgPSBbXTsKKyAgICB0aGlzLnNhbXBsaW5nVGltZU9mZnNldCA9IDA7
Cit9CisKK1NhbXBsZXIucHJvdG90eXBlID0geworICAgIHN0YXJ0U2FtcGxpbmcgOiBmdW5jdGlv
bih0aW1lT2Zmc2V0KSB7CisgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlz
LnN0YXRpc3RpY3MubGVuZ3RoOyArK2luZGV4KQorICAgICAgICAgICAgdGhpcy5zdGF0aXN0aWNz
W2luZGV4XS5zdGFydFNhbXBsaW5nKCk7CisgICAgICAgICAgICAKKyAgICAgICAgdGhpcy5zYW1w
bGluZ1RpbWVPZmZzZXQgPSB0aW1lT2Zmc2V0IC8gMTAwMDsKKyAgICB9LAorICAgIHNhbXBsZSA6
IGZ1bmN0aW9uKHRpbWVPZmZzZXQsIHZhbHVlcykgeworICAgICAgICBpZiAodmFsdWVzLmxlbmd0
aCA8IHRoaXMuc3RhdGlzdGljcy5sZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAiTm90IGVub3Vn
aCBzYW1wbGUgcG9pbnRzIjsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGZvciAodmFy
IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLnN0YXRpc3RpY3MubGVuZ3RoOyArK2luZGV4KQorICAg
ICAgICAgICAgdGhpcy5zdGF0aXN0aWNzW2luZGV4XS5zYW1wbGUodmFsdWVzW2luZGV4XSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgdGhpcy5zYW1wbGVzLnB1c2goeyB0aW1lT2Zmc2V0OiB0aW1l
T2Zmc2V0IC8gMTAwMCwgdmFsdWVzOiB2YWx1ZXMgfSk7CisgICAgfQorfQpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL2FuaW1vbWV0
ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2Vz
L2FuaW1vbWV0ZXIuY3NzIj4KKyAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFy
ZS5jb20vYWpheC9saWJzL2QzLzMuNS41L2QzLm1pbi5qcyIgZGVmZXI+PC9zY3JpcHQ+ICAKKyAg
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIiBkZWZlcj48L3NjcmlwdD4g
IAorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiIGRlZmVyPjwvc2NyaXB0Pgor
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3RzLmpzIiBkZWZlcj0iIj48L3NjcmlwdD4KKyAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzIiBkZWZlcj48L3Njcmlw
dD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9hbmltb21ldGVyLmpzIiBkZWZlcj48L3Njcmlw
dD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ncmFwaC5qcyIgZGVmZXI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKyAgPG1haW4+CisgICAgPHNlY3Rpb24gaWQ9ImhvbWUiIGNsYXNzPSJz
ZWxlY3RlZCI+CisgICAgICA8cD4KKyAgICAgICAgQW5pbW9tZXRlciBpcyBhIGJyb3dzZXIgYmVu
Y2htYXJrIHRoYXQgbWVhc3VyZXMgdGhlIGNvbXBsZXhpdHkgb2YgYW4gYW5pbWF0aW9uIGZvcgor
ICAgICAgICB3aGljaCBhIGJyb3dzZXIgY2FuIGFjaGlldmUgNTAgRlBTIChmcmFtZSBwZXIgc2Vj
b25kKS4gSXQgdXNlcyBhZGFwdGl2ZSBhbmltYXRpb25zCisgICAgICAgIHRvIHR1bmUgdGhlaXIg
Y29tcGxleGl0aWVzIHRvIHN0YXkgY2xvc2UgdG8gNTAgRlBTLgorICAgICAgPC9wPgorICAgICAg
PGRpdiBjbGFzcz0ib3B0aW9ucyI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbHVtbiI+CisgICAg
ICAgICAgPGxhYmVsPjxpbnB1dCBpZD0iaHRtbC1zdWl0ZSIgdHlwZT0iY2hlY2tib3giIGNoZWNr
ZWQ+IEhUTUwgZWxlbWVudHMgc3VpdGU8L2xhYmVsPjxicj4KKyAgICAgICAgICA8bGFiZWw+PGlu
cHV0IGlkPSJjYW52YXMtc3VpdGUiIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPiBDYW52YXMgZHJh
d2luZ3Mgc3VpdGU8L2xhYmVsPjxicj4KKyAgICAgICAgICA8bGFiZWw+PGlucHV0IGlkPSJzdmct
c3VpdGUiIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPiBTVkcgZWxlbWVudHMgc3VpdGU8L2xhYmVs
PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdj4KKyAgICAgICAgICA8bGFiZWw+VGVzdCBp
bnRlcnZhbDogPGlucHV0IGlkPSJ0ZXN0LWludGVydmFsIiB0eXBlPSJudW1iZXIiIHZhbHVlPSIz
MCI+IHNlY29uZHM8L2xhYmVsPjxicj4KKyAgICAgICAgICA8bGFiZWw+RnJhbWUgcmF0ZTogPGlu
cHV0IGlkPSJmcmFtZS1yYXRlIiB0eXBlPSJudW1iZXIiIHZhbHVlPSI1MCI+IGZwczwvbGFiZWw+
PGJyPgorICAgICAgICAgIDxsYWJlbD48aW5wdXQgaWQ9ImVzdGltYXRlZC1mcmFtZS1yYXRlIiB0
eXBlPSJjaGVja2JveCIgY2hlY2tlZD4gRXN0aW1hdGVkIEZyYW1lIFJhdGU8L2xhYmVsPjxicj4K
KyAgICAgICAgICA8bGFiZWw+PGlucHV0IGlkPSJmaXgtdGVzdC1jb21wbGV4aXR5IiB0eXBlPSJj
aGVja2JveCI+IEZpeCB0ZXN0IGNvbXBsZXhpdHkgYWZ0ZXIgd2FybXVwPC9sYWJlbD4KKyAgICAg
ICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbnMiPgorICAg
ICAgICA8YnV0dG9uIG9uY2xpY2s9InN0YXJ0VGVzdCgpIj5TdGFydCBUZXN0PC9idXR0b24+Cisg
ICAgICA8L2Rpdj4KKyAgICA8L3NlY3Rpb24+CisgICAgPHNlY3Rpb24gaWQ9InJ1bm5pbmciPgor
ICAgICAgPGRpdiBpZD0idGVzdENvbnRhaW5lciI+PC9kaXY+CisgICAgICA8ZGl2IGlkPSJwcm9n
cmVzcyI+CisgICAgICAgIDxkaXYgaWQ9InByb2dyZXNzLWNvbXBsZXRlZCI+PC9kaXY+CisgICAg
ICA8L2Rpdj4KKyAgICAgIDxkaXYgaWQ9InJlY29yZCI+CisgICAgICAgIDx0YWJsZSBjbGFzcz0i
cmVjb3JkLXRhYmxlIj48L3RhYmxlPgorICAgICAgPC9kaXY+CisgICAgPC9zZWN0aW9uPgorICAg
IDxzZWN0aW9uIGlkPSJyZXN1bHRzIj4KKyAgICAgIDxoMT5SZXN1bHRzPC9oMT4KKyAgICAgIDx0
YWJsZSBjbGFzcz0icmVzdWx0cy10YWJsZSI+PC90YWJsZT4KKyAgICAgIDxkaXYgY2xhc3M9ImJ1
dHRvbnMiPgorICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InN0YXJ0VGVzdCgpIj5UZXN0IEFnYWlu
PC9idXR0b24+CisgICAgICA8L2Rpdj4KKyAgICA8L3NlY3Rpb24+ICAKKyAgICA8c2VjdGlvbiBp
ZD0iZ3JhcGgiPgorICAgICAgPGgxPkdyYXBoPC9oMT4KKyAgICAgIDxkaXYgaWQ9ImdyYXBoQ29u
dGFpbmVyIj48L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbnMiPgorICAgICAgICA8YnV0
dG9uIG9uY2xpY2s9InNob3dSZXN1bHRzKCkiPlJlc3VsdHM8L2J1dHRvbj4KKyAgICAgICAgPGJ1
dHRvbiBvbmNsaWNrPSJzdGFydFRlc3QoKSI+VGVzdCBBZ2FpbjwvYnV0dG9uPiAgICAgICAgCisg
ICAgICA8L2Rpdj4KKyAgICA8L3NlY3Rpb24+ICAKKyAgPC9tYWluPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5p
bW9tZXRlci5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1
bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5jc3MJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDIxNCBAQAorYm9keSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
cmdiKDk2LCA5NiwgOTYpOworICAgIGNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7CisgICAgZm9u
dC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgVmVyZGFuYSwgc2Fucy1zZXJp
ZjsKK30KKworbWFpbiB7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIHdpZHRoOiA4MDBweDsKKyAgICBoZWlnaHQ6IDYwMHB4OworICAgIHRvcDogNTAl
OworICAgIGxlZnQ6IDUwJTsKKyAgICBtYXJnaW4tdG9wOiAtMzIxcHg7CisgICAgbWFyZ2luLWxl
ZnQ6IC00MjFweDsKKyAgICBwYWRkaW5nOiAxNXB4OworICAgIGJvcmRlcjogNnB4IHNvbGlkIHJn
YigyMzUsIDIzNSwgMjM1KTsKKyAgICBib3JkZXItcmFkaXVzOiAyMHB4OworfQorCitsYWJlbCwg
cCB7CisgICAgZm9udC1zaXplOiAxNnB4OworICAgIGxpbmUtaGVpZ2h0OiAyMXB4OworfQorCitz
ZWN0aW9uIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCitzZWN0aW9uID4gcCB7CisgICAgbWFy
Z2luOiAxMHB4IDIwcHg7Cit9CisKK3NlY3Rpb24jaG9tZSA+IHAgeworICAgIG1hcmdpbjogMCBh
dXRvOworICAgIHdpZHRoOiA3MCU7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworfQorCitzZWN0
aW9uI2hvbWUgPiBwOmZpcnN0LWNoaWxkIHsKKyAgICBtYXJnaW4tdG9wOiAxNjBweDsKKyAgICB0
ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKK3NlY3Rpb24uc2VsZWN0ZWQgeworICAgIGRpc3BsYXk6
IGJsb2NrOworfQorCisjdGVzdENvbnRhaW5lciB7CisgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgIHRvcDogMTVweDsKKyAgICBsZWZ0OiAxNXB4OworICAgIHdpZHRoOiA4MDBweDsKKyAgICBo
ZWlnaHQ6IDYwMHB4OworfQorCitzZWN0aW9uI3J1bm5pbmcgPiAjcHJvZ3Jlc3MgeworICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBib3R0b206IC02cHg7CisgICAgbGVmdDogNjBweDsKKyAg
ICByaWdodDogNjBweDsKKyAgICBoZWlnaHQ6IDZweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2IoMTI4LCAxMjgsIDEyOCk7CisgICAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCByZ2IoNDYsIDUx
LCA1NSk7CisgICAgYm9yZGVyLXJpZ2h0OiA2cHggc29saWQgcmdiKDQ2LCA1MSwgNTUpOworfQor
CitzZWN0aW9uI3J1bm5pbmcgI3Byb2dyZXNzLWNvbXBsZXRlZCB7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAgIGhlaWdodDogNnB4OworICAg
IHdpZHRoOiAwOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzUsIDIzNSwgMjM1KTsKK30K
Kworc2VjdGlvbiNydW5uaW5nID4gI3JlY29yZCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgIGJvdHRvbTogLTEzMHB4OworICAgIGxlZnQ6IDBweDsKKyAgICByaWdodDogMHB4OworICAg
IGhlaWdodDogNzVweDsKKyAgICBjb2xvcjogcmdiKDEyOCwgMTI4LCAxMjgpOworICAgIHBhZGRp
bmc6IDE1cHg7CisgICAgYm9yZGVyOiA2cHggc29saWQgcmdiKDIzNSwgMjM1LCAyMzUpOworICAg
IGJvcmRlci1yYWRpdXM6IDIwcHg7Cit9CisKK3NlY3Rpb24jcnVubmluZyA+ICNyZWNvcmQgPiB0
YWJsZSwKK3NlY3Rpb24jcmVzdWx0cyA+IHRhYmxlIHsKKyAgICB3aWR0aDogMTAwJTsKK30KKwor
c2VjdGlvbiNydW5uaW5nID4gI3JlY29yZCA+IHRhYmxlIHRkLCB0aCwKK3NlY3Rpb24jcmVzdWx0
cyA+IHRhYmxlIHRkLCB0aCB7CisgICAgZm9udC1zaXplOiAxMnB4OworICAgIGJvcmRlcjogMXB4
IHNvbGlkICM5OGJmMjE7CisgICAgcGFkZGluZzogM3B4IDdweCAycHggN3B4OworfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorc2VjdGlvbiNydW5uaW5nID4g
I3JlY29yZCA+IHRhYmxlIHRyLmFsdCwgdGQKK3NlY3Rpb24jcmVzdWx0cyA+IHRhYmxlIHRyLmFs
dCwgdGQgeworICAgIGNvbG9yOiAjMDAwMDAwOworICAgIGJhY2tncm91bmQtY29sb3I6ICNFQUYy
RDM7Cit9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK3Nl
Y3Rpb24jcnVubmluZyA+ICNyZWNvcmQgPiB0YWJsZSB0aCwKK3NlY3Rpb24jcmVzdWx0cyA+IHRh
YmxlIHRoIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQTdDOTQyOyAKKyAgICB0ZXh0LWFsaWdu
OiBjZW50ZXI7Cit9CisKKy5vcHRpb25zIHsKKyAgICBtYXJnaW46MCBhdXRvOyAgICAKKyAgICBt
YXJnaW4tdG9wOiAzMHB4OworICAgIHdpZHRoOiA1MDBweDsKKyAgICBhbGlnbjogY2VudGVyOwor
fQorCisuY29sdW1uIHsKKyAgICB3aWR0aDogNDUlOworICAgIGZsb2F0OmxlZnQ7CisgICAgaGVp
Z2h0OiAxMjBweDsKKyAgICBwYWRkaW5nOjVweDsKK30KKworaW5wdXRbdHlwZT0ibnVtYmVyIl0g
eworICAgd2lkdGg6NTBweDsKK30KKworLmJ1dHRvbnMgeworICAgIG1hcmdpbi10b3A6IDEwcHg7
CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGNsZWFyOiBib3RoOworfQorCitidXR0b24g
eworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKyAgICBib3JkZXI6IDNweCBzb2xpZCBy
Z2IoMjM1LCAyMzUsIDIzNSk7CisgICAgYm9yZGVyLXJhZGl1czogMTBweDsKKyAgICBtaW4td2lk
dGg6IDIwMHB4OworICAgIHBhZGRpbmc6IDVweCAyMHB4OworICAgIG1hcmdpbjogMCA0MHB4Owor
ICAgIGZvbnQtc2l6ZTogMjVweDsKKyAgICBjb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOworICAg
IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworCisgICAgLXdlYmtpdC11c2VyLXNlbGVj
dDogbm9uZTsKK30KKworYnV0dG9uOmFjdGl2ZSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdi
KDIzNSwgMjM1LCAyMzUpOworICAgIGNvbG9yOiByZ2IoNDYsIDUxLCA1NSk7CisgICAgYm9yZGVy
LWNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSkgIWltcG9ydGFudDsKK30KKworYnV0dG9uOmZvY3Vz
IHsKKyAgICBvdXRsaW5lOiBub25lOworICAgIGJvcmRlci1jb2xvcjogcmdiKDIzMiwgNzksIDc5
KTsKK30KKworLnNtYWxsLWJ1dHRvbiB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwor
ICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYig5NiwgOTYsIDk2KTsKKyAgICBib3JkZXItcmFkaXVz
OiAycHg7CisgICAgcGFkZGluZzogMXB4IDRweDsKKyAgICBtYXJnaW46IDAgNHB4OworICAgIGJh
Y2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICAgIGN1cnNvcjogcG9pbnRlcjsKKyAgICB0
ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKK30KKwor
I2dyYXBoQ29udGFpbmVyIHsKKyAgZm9udDogMTBweCBzYW5zLXNlcmlmOworICBjb2xvcjogcmdi
KDIzNSwgMjM1LCAyMzUpOyAgCit9CisKKy5heGlzIHBhdGgsCisuYXhpcyBsaW5lIHsKKyAgZmls
bDogbm9uZTsKKyAgc3Ryb2tlOiByZ2IoMjM1LCAyMzUsIDIzNSk7CisgIHNoYXBlLXJlbmRlcmlu
ZzogY3Jpc3BFZGdlczsKK30KKworLmxlZnQtc2FtcGxlcyB7CisgIGZpbGw6IG5vbmU7CisgIHN0
cm9rZTogc3RlZWxibHVlOworICBzdHJva2Utd2lkdGg6IDEuNXB4OworfQorCisucmlnaHQtc2Ft
cGxlcyB7CisgICAgZmlsbDogbm9uZTsKKyAgICBzdHJva2U6IHJlZDsKKyAgICBzdHJva2Utd2lk
dGg6IDEuNXB4OworfQorCisuc21hcGxlLXRpbWUgeworICAgIGZpbGw6IG5vbmU7CisgICAgc3Ry
b2tlOiBncmVlbjsKKyAgICBzdHJva2Utd2lkdGg6IDEuNXB4OworfQorCisubGVmdC1tZWFuIHsK
KyAgICBmaWxsOiBub25lOworICAgIHN0cm9rZTogeWVsbG93OworICAgIHN0cm9rZS13aWR0aDog
MS41cHg7Cit9CisKKy5yaWdodC1tZWFuIHsKKyAgICBmaWxsOiBub25lOworICAgIHN0cm9rZTog
bWFnZW50YTsKKyAgICBzdHJva2Utd2lkdGg6IDEuNXB4OworfQpJbmRleDogUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21l
dGVyLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5l
ci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMyBA
QAord2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudCA9IHsKKyAgICBpdGVyYXRpb25Db3VudDog
MSwKKyAgICB0ZXN0c0NvdW50OiBudWxsLAorICAgIHByb2dyZXNzQmFyOiBudWxsLAorICAgIHJl
Y29yZFRhYmxlOiBudWxsLAorICAgIG9wdGlvbnM6IHsgdGVzdEludGVydmFsOiAzMDAwMCwgZnJh
bWVSYXRlOiA1MCwgZXN0aW1hdGVkRnJhbWVSYXRlOiB0cnVlLCBmaXhUZXN0Q29tcGxleGl0eSA6
IGZhbHNlIH0sCisgICAgc2NvcmU6IDAsCisgICAgX2l0ZXJhdGlvbnNTYW1wbGVyczogW10sCisg
ICAgX3Jlc3VsdHNUYWJsZTogbnVsbCwKKyAgICBfaXNDaHJvbWU6IC9DaHJvbWUvLnRlc3QobmF2
aWdhdG9yLnVzZXJBZ2VudCkgJiYgL0dvb2dsZSBJbmMvLnRlc3QobmF2aWdhdG9yLnZlbmRvciks
CisgICAgX2lzU2FmYXJpOiAvU2FmYXJpLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmIC9B
cHBsZSBDb21wdXRlci8udGVzdChuYXZpZ2F0b3IudmVuZG9yKSwKKyAgICB3aWxsQWRkVGVzdEZy
YW1lOiBmdW5jdGlvbiAoZnJhbWUpIHsKKyAgICAgICAgdmFyIG1haW4gPSBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCJtYWluIik7CisgICAgICAgIHZhciBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUo
bWFpbik7CisgICAgICAgIGZyYW1lLnN0eWxlLmxlZnQgPSBtYWluLm9mZnNldExlZnQgKyBwYXJz
ZUludChzdHlsZS5ib3JkZXJMZWZ0V2lkdGgpICsgcGFyc2VJbnQoc3R5bGUucGFkZGluZ0xlZnQp
ICsgInB4IjsKKyAgICAgICAgZnJhbWUuc3R5bGUudG9wID0gbWFpbi5vZmZzZXRUb3AgKyBwYXJz
ZUludChzdHlsZS5ib3JkZXJUb3BXaWR0aCkgKyBwYXJzZUludChzdHlsZS5wYWRkaW5nVG9wKSAr
ICJweCI7CisgICAgfSwKKyAgICBkaWRSdW5UZXN0OiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRo
aXMucHJvZ3Jlc3NCYXIuaW5jUmFuZ2UoKTsKKyAgICB9LAorICAgIHdpbGxTdGFydEZpcnN0SXRl
cmF0aW9uOiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRoaXMuX2l0ZXJhdGlvbnNTYW1wbGVycyA9
IFtdOworICAgICAgICB0aGlzLl9yZXN1bHRzVGFibGUgPSBuZXcgUmVjb3JkVGFibGUoZG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbCgiLnJlc3VsdHMtdGFibGUiKVswXSk7CisgICAgICAgIAorICAg
ICAgICB0aGlzLnByb2dyZXNzQmFyID0gbmV3IFByb2dyZXNzQmFyKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwcm9ncmVzcy1jb21wbGV0ZWQiKSwgdGhpcy50ZXN0c0NvdW50KTsKKyAgICAgICAg
dGhpcy5yZWNvcmRUYWJsZSA9IG5ldyBSZWNvcmRUYWJsZShkb2N1bWVudC5xdWVyeVNlbGVjdG9y
QWxsKCIucmVjb3JkLXRhYmxlIilbMF0pOworICAgIH0sCisgICAgZGlkUnVuU3VpdGVzOiBmdW5j
dGlvbiAoc3VpdGVzU2FtcGxlcnMpIHsKKyAgICAgICAgdGhpcy5faXRlcmF0aW9uc1NhbXBsZXJz
LnB1c2goc3VpdGVzU2FtcGxlcnMpOworICAgIH0sCisgICAgZGlkRmluaXNoTGFzdEl0ZXJhdGlv
bjogZnVuY3Rpb24gKCkgeworICAgICAgICB0aGlzLnNjb3JlID0gdGhpcy5fcmVzdWx0c1RhYmxl
LnNob3dJdGVyYXRpb25zKHRoaXMuX2l0ZXJhdGlvbnNTYW1wbGVycywgIiIpOworICAgICAgICBz
aG93UmVzdWx0cygpOworICAgIH0sCisgICAgYnJvd3NlciA6IGZ1bmN0aW9uKCkgeworICAgICAg
ICBpZiAodGhpcy5faXNDaHJvbWUpCisgICAgICAgICAgICByZXR1cm4gIkNocm9tZSI7CisgICAg
ICAgIGlmICh0aGlzLl9pc1NhZmFyaSkKKyAgICAgICAgICAgIHJldHVybiAiU2FmYXJpIjsKKyAg
ICAgICAgcmV0dXJuICIiOworICAgIH0KK30KKworZnVuY3Rpb24gc2hvd1NlY3Rpb24oc2VjdGlv
bklkZW50aWZpZXIsIHB1c2hTdGF0ZSkgeworICAgIHZhciBjdXJyZW50U2VjdGlvbkVsZW1lbnQg
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzZWN0aW9uLnNlbGVjdGVkIik7CisgICAgY29uc29s
ZS5hc3NlcnQoY3VycmVudFNlY3Rpb25FbGVtZW50KTsKKworICAgIHZhciBuZXdTZWN0aW9uRWxl
bWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlY3Rpb25JZGVudGlmaWVyKTsKKyAgICBj
b25zb2xlLmFzc2VydChuZXdTZWN0aW9uRWxlbWVudCk7CisKKyAgICBjdXJyZW50U2VjdGlvbkVs
ZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic2VsZWN0ZWQiKTsKKyAgICBuZXdTZWN0aW9uRWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIpOworCisgICAgaWYgKHB1c2hTdGF0ZSkKKyAgICAg
ICAgaGlzdG9yeS5wdXNoU3RhdGUoe3NlY3Rpb246IHNlY3Rpb25JZGVudGlmaWVyfSwgZG9jdW1l
bnQudGl0bGUpOworfQorCitmdW5jdGlvbiBzdGFydEJlbmNobWFyaygpIHsKKyAgICB2YXIgY2hl
Y2tib3hlcyA9IFsgCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJodG1sLXN1aXRl
IiksIAorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzLXN1aXRlIiksIAor
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3ZnLXN1aXRlIikKKyAgICBdOworICAg
IHZhciBlbmFibGVkU3VpdGVzID0gU3VpdGVzLmZpbHRlcihmdW5jdGlvbiAoc3VpdGUsIGluZGV4
KSB7IHJldHVybiAhc3VpdGUuZGlzYWJsZWQgJiYgY2hlY2tib3hlc1tpbmRleF0uY2hlY2tlZDsg
fSk7CisgICAgdmFyIHRlc3RzQ291bnQgPSBlbmFibGVkU3VpdGVzLnJlZHVjZShmdW5jdGlvbiAo
dGVzdHNDb3VudCwgc3VpdGUpIHsgcmV0dXJuIHRlc3RzQ291bnQgKyBzdWl0ZS50ZXN0cy5sZW5n
dGg7IH0sIDApOworICAgIGJlbmNobWFya1J1bm5lckNsaWVudC50ZXN0c0NvdW50ID0gYmVuY2ht
YXJrUnVubmVyQ2xpZW50Lml0ZXJhdGlvbkNvdW50ICogdGVzdHNDb3VudDsKKyAgICBiZW5jaG1h
cmtSdW5uZXJDbGllbnQub3B0aW9uc1sidGVzdEludGVydmFsIl0gPSBwYXJzZUludChkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdC1pbnRlcnZhbCIpLnZhbHVlKSAqIDEwMDA7CisgICAgYmVu
Y2htYXJrUnVubmVyQ2xpZW50Lm9wdGlvbnNbImZyYW1lUmF0ZSJdID0gcGFyc2VJbnQoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImZyYW1lLXJhdGUiKS52YWx1ZSk7CisgICAgYmVuY2htYXJrUnVu
bmVyQ2xpZW50Lm9wdGlvbnNbImVzdGltYXRlZEZyYW1lUmF0ZSJdID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImVzdGltYXRlZC1mcmFtZS1yYXRlIikuY2hlY2tlZDsgICAgCisgICAgYmVuY2ht
YXJrUnVubmVyQ2xpZW50Lm9wdGlvbnNbImZpeFRlc3RDb21wbGV4aXR5Il0gPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZml4LXRlc3QtY29tcGxleGl0eSIpLmNoZWNrZWQ7CisgICAgdmFyIHJ1
bm5lciA9IG5ldyBCZW5jaG1hcmtSdW5uZXIoZW5hYmxlZFN1aXRlcywgYmVuY2htYXJrUnVubmVy
Q2xpZW50KTsKKyAgICBydW5uZXIucnVuTXVsdGlwbGVJdGVyYXRpb25zKGJlbmNobWFya1J1bm5l
ckNsaWVudC5pdGVyYXRpb25Db3VudCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAg
ICBzaG93U2VjdGlvbigicnVubmluZyIpOworICAgIHN0YXJ0QmVuY2htYXJrKCk7Cit9CisKK2Z1
bmN0aW9uIHNob3dSZXN1bHRzKHNjb3JlKSB7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCIjcmVzdWx0cyA+IGgxIik7CisgICAgZWxlbWVudC50ZXh0Q29udGVudCA9
ICJSZXN1bHRzOiIKKyAgICAKKyAgICB2YXIgYnJvd3NlciA9IGJlbmNobWFya1J1bm5lckNsaWVu
dC5icm93c2VyKCk7ICAgIAorICAgIGlmIChicm93c2VyLmxlbmd0aCkKKyAgICAgICAgZWxlbWVu
dC50ZXh0Q29udGVudCArPSAiIFticm93c2VyID0gIiArIGJyb3dzZXIgKyAiXSI7CisKKyAgICB2
YXIgc2NvcmUgPSBiZW5jaG1hcmtSdW5uZXJDbGllbnQuc2NvcmUudG9GaXhlZCgyKTsKKyAgICBl
bGVtZW50LnRleHRDb250ZW50ICs9ICIgW1Njb3JlID0gIiArIHNjb3JlICsgIl0iOworICAgICAg
ICAKKyAgICBzaG93U2VjdGlvbigicmVzdWx0cyIsIHRydWUpOworfQorCitmdW5jdGlvbiBzaG93
R3JhcGgodGVzdE5hbWUsIGF4aXNlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KSB7Cisg
ICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZ3JhcGggPiBoMSIpOwor
ICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSAiR3JhcGg6IgorCisgICAgaWYgKHRlc3ROYW1lLmxl
bmd0aCkKKyAgICAgICAgZWxlbWVudC50ZXh0Q29udGVudCArPSAiIFt0ZXN0ID0gIiArIHRlc3RO
YW1lICsgIl0iOworICAgICAgICAgICAgCisgICAgZ3JhcGgoIiNncmFwaENvbnRhaW5lciIsIG5l
dyBQb2ludCg3MDAsIDQwMCksIG5ldyBJbnNldHMoMjAsIDUwLCAyMCwgNTApLCBheGlzZXMsIHNh
bXBsZXMsIHNhbXBsaW5nVGltZU9mZnNldCk7CisgICAgc2hvd1NlY3Rpb24oImdyYXBoIiwgdHJ1
ZSk7ICAgIAorfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNv
dXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzCShyZXZpc2lv
biAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYmVu
Y2htYXJrLXJ1bm5lci5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4OCBAQAorZnVuY3Rp
b24gQmVuY2htYXJrUnVubmVyU3RhdGUoc3VpdGVzKSB7CisgICAgdGhpcy5fc3VpdGVzID0gc3Vp
dGVzOworICAgIHRoaXMuX3N1aXRlSW5kZXggPSAtMTsKKyAgICB0aGlzLl90ZXN0SW5kZXggPSAw
OworICAgIHRoaXMubmV4dCgpOworfQorCitCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUu
Y3VycmVudFN1aXRlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRoaXMuX3N1aXRlc1t0aGlz
Ll9zdWl0ZUluZGV4XTsKK30KKworQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmN1cnJl
bnRUZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHN1aXRlID0gdGhpcy5jdXJyZW50U3VpdGUo
KTsKKyAgICByZXR1cm4gc3VpdGUgPyBzdWl0ZS50ZXN0c1t0aGlzLl90ZXN0SW5kZXhdIDogbnVs
bDsKK30KKworQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmlzRmlyc3RUZXN0ID0gZnVu
Y3Rpb24oKSB7CisgICAgcmV0dXJuICF0aGlzLl90ZXN0SW5kZXg7Cit9CisKK0JlbmNobWFya1J1
bm5lclN0YXRlLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5fdGVzdElu
ZGV4Kys7CisKKyAgICB2YXIgc3VpdGUgPSB0aGlzLl9zdWl0ZXNbdGhpcy5fc3VpdGVJbmRleF07
CisgICAgaWYgKHN1aXRlICYmIHRoaXMuX3Rlc3RJbmRleCA8IHN1aXRlLnRlc3RzLmxlbmd0aCkK
KyAgICAgICAgcmV0dXJuIHRoaXM7CisKKyAgICB0aGlzLl90ZXN0SW5kZXggPSAwOworICAgIGRv
IHsKKyAgICAgICAgdGhpcy5fc3VpdGVJbmRleCsrOworICAgIH0gd2hpbGUgKHRoaXMuX3N1aXRl
SW5kZXggPCB0aGlzLl9zdWl0ZXMubGVuZ3RoICYmIHRoaXMuX3N1aXRlc1t0aGlzLl9zdWl0ZUlu
ZGV4XS5kaXNhYmxlZCk7CisKKyAgICByZXR1cm4gdGhpczsKK30KKworQmVuY2htYXJrUnVubmVy
U3RhdGUucHJvdG90eXBlLnByZXBhcmVDdXJyZW50VGVzdCA9IGZ1bmN0aW9uKHJ1bm5lciwgZnJh
bWUpIHsKKyAgICB2YXIgc3VpdGUgPSB0aGlzLmN1cnJlbnRTdWl0ZSgpOworICAgIHZhciB0ZXN0
ID0gdGhpcy5jdXJyZW50VGVzdCgpOworICAgIHZhciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21p
c2U7CisgICAgZnJhbWUub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHN1aXRlLnByZXBh
cmUocnVubmVyLCBmcmFtZS5jb250ZW50V2luZG93LCBmcmFtZS5jb250ZW50RG9jdW1lbnQpLnRo
ZW4oZnVuY3Rpb24ocmVzdWx0KSB7IHByb21pc2UucmVzb2x2ZShyZXN1bHQpOyB9KTsKKyAgICB9
CisgICAgZnJhbWUuc3JjID0gdGVzdC51cmw7CisgICAgcmV0dXJuIHByb21pc2U7Cit9CisKK2Z1
bmN0aW9uIEJlbmNobWFya1J1bm5lcihzdWl0ZXMsIGNsaWVudCkgeworICAgIHRoaXMuX3N1aXRl
cyA9IHN1aXRlczsKKyAgICB0aGlzLl9jbGllbnQgPSBjbGllbnQ7Cit9CisKK0JlbmNobWFya1J1
bm5lci5wcm90b3R5cGUud2FpdEZvckVsZW1lbnQgPSBmdW5jdGlvbihzZWxlY3RvcikgeworICAg
IHZhciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7CisgICAgdmFyIGNvbnRlbnREb2N1bWVu
dCA9IHRoaXMuX2ZyYW1lLmNvbnRlbnREb2N1bWVudDsKKworICAgIGZ1bmN0aW9uIHJlc29sdmVJ
ZlJlYWR5KCkgeworICAgICAgICB2YXIgZWxlbWVudCA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNl
bGVjdG9yKHNlbGVjdG9yKTsKKyAgICAgICAgaWYgKGVsZW1lbnQpCisgICAgICAgICAgICByZXR1
cm4gcHJvbWlzZS5yZXNvbHZlKGVsZW1lbnQpOworICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmVJ
ZlJlYWR5LCA1MCk7CisgICAgfQorCisgICAgcmVzb2x2ZUlmUmVhZHkoKTsKKyAgICByZXR1cm4g
cHJvbWlzZTsKK30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fYXBwZW5kRnJhbWUgPSBm
dW5jdGlvbihzcmMpIHsKKyAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJp
ZnJhbWUiKTsKKyAgICBmcmFtZS5zdHlsZS53aWR0aCA9ICI4MDBweCI7CisgICAgZnJhbWUuc3R5
bGUuaGVpZ2h0ID0gIjYwMHB4IjsKKyAgICBmcmFtZS5zdHlsZS5ib3JkZXIgPSAiMHB4IG5vbmUi
OworICAgIGZyYW1lLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIjsKKyAgICBmcmFtZS5zZXRB
dHRyaWJ1dGUoInNjcm9sbGluZyIsICJubyIpOworCisgICAgdmFyIG1hcmdpbkxlZnQgPSBwYXJz
ZUludChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLm1hcmdpbkxlZnQpOworICAgIHZh
ciBtYXJnaW5Ub3AgPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLm1h
cmdpblRvcCk7CisgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoID4gODAwICsgbWFyZ2luTGVmdCAm
JiB3aW5kb3cuaW5uZXJIZWlnaHQgPiA2MDAgKyBtYXJnaW5Ub3ApIHsKKyAgICAgICAgZnJhbWUu
c3R5bGUubGVmdCA9IG1hcmdpbkxlZnQgKyAicHgiOworICAgICAgICBmcmFtZS5zdHlsZS50b3Ag
PSBtYXJnaW5Ub3AgKyAicHgiOworICAgIH0gZWxzZSB7CisgICAgICAgIGZyYW1lLnN0eWxlLmxl
ZnQgPSAiMHB4IjsKKyAgICAgICAgZnJhbWUuc3R5bGUudG9wID0gIjBweCI7CisgICAgfQorCisg
ICAgaWYgKHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGllbnQud2lsbEFkZFRlc3RGcmFtZSkKKyAg
ICAgICAgdGhpcy5fY2xpZW50LndpbGxBZGRUZXN0RnJhbWUoZnJhbWUpOworCisgICAgZG9jdW1l
bnQuYm9keS5pbnNlcnRCZWZvcmUoZnJhbWUsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7Cisg
ICAgdGhpcy5fZnJhbWUgPSBmcmFtZTsKKyAgICByZXR1cm4gZnJhbWU7Cit9CisKK0JlbmNobWFy
a1J1bm5lci5wcm90b3R5cGUuX3JlbW92ZUZyYW1lID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKHRo
aXMuX2ZyYW1lKSB7CisgICAgICAgIHRoaXMuX2ZyYW1lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo
dGhpcy5fZnJhbWUpOworICAgICAgICB0aGlzLl9mcmFtZSA9IG51bGw7CisgICAgfQorfQorCitC
ZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9ydW5UZXN0QW5kUmVjb3JkUmVzdWx0cyA9IGZ1bmN0
aW9uKHN0YXRlKSB7CisgICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICB2
YXIgc3VpdGUgPSBzdGF0ZS5jdXJyZW50U3VpdGUoKTsKKyAgICB2YXIgdGVzdCA9IHN0YXRlLmN1
cnJlbnRUZXN0KCk7CisgICAgCisgICAgaWYgKHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGllbnQu
d2lsbFJ1blRlc3RUZXN0KQorICAgICAgICB0aGlzLl9jbGllbnQud2lsbFJ1blRlc3Qoc3VpdGUs
IHRlc3QpOworCisgICAgdmFyIGNvbnRlbnRXaW5kb3cgPSB0aGlzLl9mcmFtZS5jb250ZW50V2lu
ZG93OworICAgIHZhciBzZWxmID0gdGhpczsKKworICAgIHN1aXRlLnJ1bihjb250ZW50V2luZG93
LCB0ZXN0LCB0aGlzLl9jbGllbnQub3B0aW9ucywgdGhpcy5fY2xpZW50LnJlY29yZFRhYmxlLCB0
aGlzLl9jbGllbnQucHJvZ3Jlc3NCYXIpLnRoZW4oZnVuY3Rpb24oc2FtcGxlcikgeworICAgICAg
ICB2YXIgc2FtcGxlcnMgPSBzZWxmLl9zdWl0ZXNTYW1wbGVyc1tzdWl0ZS5uYW1lXSB8fCBbXTsK
KyAgICAgICAgCisgICAgICAgIHNhbXBsZXJzW3Rlc3QubmFtZV0gPSBzYW1wbGVyOworICAgICAg
ICBzZWxmLl9zdWl0ZXNTYW1wbGVyc1tzdWl0ZS5uYW1lXSA9IHNhbXBsZXJzOworCisgICAgICAg
IGlmIChzZWxmLl9jbGllbnQgJiYgc2VsZi5fY2xpZW50LmRpZFJ1blRlc3QpCisgICAgICAgICAg
ICBzZWxmLl9jbGllbnQuZGlkUnVuVGVzdChzdWl0ZSwgdGVzdCk7CisgICAgICAgIAorICAgICAg
ICBzdGF0ZS5uZXh0KCk7CisgICAgICAgIGlmIChzdGF0ZS5jdXJyZW50U3VpdGUoKSAhPSBzdWl0
ZSkKKyAgICAgICAgICAgIHNlbGYuX3JlbW92ZUZyYW1lKCk7CisgICAgICAgIHByb21pc2UucmVz
b2x2ZShzdGF0ZSk7CisgICAgfSk7CisgICAgCisgICAgcmV0dXJuIHByb21pc2U7Cit9CisKK0Jl
bmNobWFya1J1bm5lci5wcm90b3R5cGUuc3RlcCA9IGZ1bmN0aW9uKHN0YXRlKSB7CisgICAgaWYg
KCFzdGF0ZSkgeworICAgICAgICBzdGF0ZSA9IG5ldyBCZW5jaG1hcmtSdW5uZXJTdGF0ZSh0aGlz
Ll9zdWl0ZXMpOworICAgICAgICB0aGlzLl9zdWl0ZXNTYW1wbGVycyA9IHt9OworICAgIH0KKwor
ICAgIHZhciBzdWl0ZSA9IHN0YXRlLmN1cnJlbnRTdWl0ZSgpOworICAgIGlmICghc3VpdGUpIHsK
KyAgICAgICAgdGhpcy5fZmluYWxpemUoKTsKKyAgICAgICAgdmFyIHByb21pc2UgPSBuZXcgU2lt
cGxlUHJvbWlzZTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybiBw
cm9taXNlOworICAgIH0KKworICAgIGlmIChzdGF0ZS5pc0ZpcnN0VGVzdCgpKSB7CisgICAgICAg
IHRoaXMuX21hc3VyZWRWYWx1ZXNGb3JDdXJyZW50U3VpdGUgPSB7fTsKKyAgICAgICAgdGhpcy5f
YXBwZW5kRnJhbWUoKTsKKyAgICB9CisKKyAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgcmV0dXJu
IHN0YXRlLnByZXBhcmVDdXJyZW50VGVzdCh0aGlzLCB0aGlzLl9mcmFtZSkudGhlbihmdW5jdGlv
bihwcmVwYXJlUmV0dXJuVmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHNlbGYuX3J1blRlc3RBbmRS
ZWNvcmRSZXN1bHRzKHN0YXRlKTsKKyAgICB9KTsKK30KKworQmVuY2htYXJrUnVubmVyLnByb3Rv
dHlwZS5ydW5BbGxTdGVwcyA9IGZ1bmN0aW9uKHN0YXJ0aW5nU3RhdGUpIHsKKyAgICB2YXIgbmV4
dENhbGxlZSA9IHRoaXMucnVuQWxsU3RlcHMuYmluZCh0aGlzKTsKKyAgICB0aGlzLnN0ZXAoc3Rh
cnRpbmdTdGF0ZSkudGhlbihmdW5jdGlvbihuZXh0U3RhdGUpIHsKKyAgICAgICAgaWYgKG5leHRT
dGF0ZSkKKyAgICAgICAgICAgIG5leHRDYWxsZWUobmV4dFN0YXRlKTsKKyAgICB9KTsKK30KKwor
QmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5ydW5NdWx0aXBsZUl0ZXJhdGlvbnMgPSBmdW5jdGlv
bihpdGVyYXRpb25Db3VudCkgeworICAgIHZhciBzZWxmID0gdGhpczsKKyAgICB2YXIgY3VycmVu
dEl0ZXJhdGlvbiA9IDA7CisKKyAgICB0aGlzLl9ydW5OZXh0SXRlcmF0aW9uID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIGN1cnJlbnRJdGVyYXRpb24rKzsKKyAgICAgICAgaWYgKGN1cnJlbnRJdGVy
YXRpb24gPCBpdGVyYXRpb25Db3VudCkKKyAgICAgICAgICAgIHNlbGYucnVuQWxsU3RlcHMoKTsK
KyAgICAgICAgZWxzZSBpZiAodGhpcy5fY2xpZW50ICYmIHRoaXMuX2NsaWVudC5kaWRGaW5pc2hM
YXN0SXRlcmF0aW9uKQorICAgICAgICAgICAgc2VsZi5fY2xpZW50LmRpZEZpbmlzaExhc3RJdGVy
YXRpb24oKTsKKyAgICB9CisKKyAgICBpZiAoc2VsZi5fY2xpZW50ICYmIHNlbGYuX2NsaWVudC53
aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbikKKyAgICAgICAgc2VsZi5fY2xpZW50LndpbGxTdGFydEZp
cnN0SXRlcmF0aW9uKGl0ZXJhdGlvbkNvdW50KTsKKworICAgIHNlbGYucnVuQWxsU3RlcHMoKTsK
K30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fZmluYWxpemUgPSBmdW5jdGlvbigpIHsK
KyAgICB0aGlzLl9yZW1vdmVGcmFtZSgpOworICAgICAgICAKKyAgICBpZiAodGhpcy5fY2xpZW50
ICYmIHRoaXMuX2NsaWVudC5kaWRSdW5TdWl0ZXMpCisgICAgICAgIHRoaXMuX2NsaWVudC5kaWRS
dW5TdWl0ZXModGhpcy5fc3VpdGVzU2FtcGxlcnMpOworCisgICAgaWYgKHRoaXMuX3J1bk5leHRJ
dGVyYXRpb24pCisgICAgICAgIHRoaXMuX3J1bk5leHRJdGVyYXRpb24oKTsKK30KSW5kZXg6IFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2dyYXBoLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2dy
YXBoLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5l
ci9yZXNvdXJjZXMvZ3JhcGguanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDEgQEAKK2Z1
bmN0aW9uIGdyYXBoKHNlbGVjdG9yLCBzaXplLCBtYXJnaW5zLCBheGlzZXMsIHNhbXBsZXMsIHNh
bXBsaW5nVGltZU9mZnNldCkgeworCisgICAgdmFyIGVsZW1lbnQgPSBlbGVtZW50ID0gZG9jdW1l
bnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CisgICAgd2hpbGUgKGVsZW1lbnQuZmlyc3RDaGls
ZCkKKyAgICAgICAgZWxlbWVudC5yZW1vdmVDaGlsZChlbGVtZW50LmZpcnN0Q2hpbGQpOworCisg
ICAgdmFyIHggPSBkMy5zY2FsZS5saW5lYXIoKQorICAgICAgICAgICAgLnJhbmdlKFswLCBzaXpl
LndpZHRoKCldKQorICAgICAgICAgICAgLmRvbWFpbihkMy5leHRlbnQoc2FtcGxlcywgZnVuY3Rp
b24oZCkgeyByZXR1cm4gZC50aW1lT2Zmc2V0OyB9KSk7ICAgICAgICAgICAgCisKKyAgICB2YXIg
eUxlZnQgPSBkMy5zY2FsZS5saW5lYXIoKQorICAgICAgICAgICAgLnJhbmdlKFtzaXplLmhlaWdo
dCgpLCAwXSkKKyAgICAgICAgICAgIC5kb21haW4oWzAsIGQzLm1heChzYW1wbGVzLCBmdW5jdGlv
bihkKSB7IHJldHVybiBkLnZhbHVlc1swXTsgfSldKTsKKworICAgIHZhciB5UmlnaHQgPSBkMy5z
Y2FsZS5saW5lYXIoKQorICAgICAgICAgICAgLnJhbmdlKFtzaXplLmhlaWdodCgpLCAwXSkKKyAg
ICAgICAgICAgIC5kb21haW4oWzAsIGQzLm1heChzYW1wbGVzLCBmdW5jdGlvbihkKSB7IHJldHVy
biBkLnZhbHVlc1sxXTsgfSldKTsKKworICAgIHZhciB4QXhpcyA9IGQzLnN2Zy5heGlzKCkKKyAg
ICAgICAgICAgIC5zY2FsZSh4KQorICAgICAgICAgICAgLm9yaWVudCgiYm90dG9tIik7CisKKyAg
ICB2YXIgeUF4aXNMZWZ0ID0gZDMuc3ZnLmF4aXMoKQorICAgICAgICAgICAgLnNjYWxlKHlMZWZ0
KQorICAgICAgICAgICAgLm9yaWVudCgibGVmdCIpOworCisgICAgdmFyIHlBeGlzUmlnaHQgPSBk
My5zdmcuYXhpcygpCisgICAgICAgICAgICAuc2NhbGUoeVJpZ2h0KQorICAgICAgICAgICAgLm9y
aWVudCgicmlnaHQiKTsKKworICAgIHZhciBsaW5lTGVmdCA9IGQzLnN2Zy5saW5lKCkKKyAgICAg
ICAgICAgIC54KGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHgoZC50aW1lT2Zmc2V0KTsgfSkKKyAgICAg
ICAgICAgIC55KGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHlMZWZ0KGQudmFsdWVzWzBdKTsgfSk7CisK
KyAgICB2YXIgbGluZVJpZ2h0ID0gZDMuc3ZnLmxpbmUoKQorICAgICAgICAgICAgLngoZnVuY3Rp
b24oZCkgeyByZXR1cm4geChkLnRpbWVPZmZzZXQpOyB9KQorICAgICAgICAgICAgLnkoZnVuY3Rp
b24oZCkgeyByZXR1cm4geVJpZ2h0KGQudmFsdWVzWzFdKTsgfSk7CisKKyAgICBzYW1wbGVzLmZv
ckVhY2goZnVuY3Rpb24oZCkgeworICAgICAgICBkLnRpbWVPZmZzZXQgPSArZC50aW1lT2Zmc2V0
OworICAgICAgICBkLnZhbHVlc1swXSA9ICtkLnZhbHVlc1swXTsKKyAgICAgICAgZC52YWx1ZXNb
MV0gPSArZC52YWx1ZXNbMV07ICAgICAgICAKKyAgICB9KTsgICAgCisKKyAgICB2YXIgc2FtcGxl
ZFNhbXBsZXMgPSBzYW1wbGVzLmZpbHRlcihmdW5jdGlvbihkKSB7CisgICAgICAgIHJldHVybiBk
LnRpbWVPZmZzZXQgPj0gc2FtcGxpbmdUaW1lT2Zmc2V0OworICAgIH0pOworICAgIAorICAgIHZh
ciBtZWFuTGVmdCA9IGQzLm1lYW4oc2FtcGxlZFNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsKKyAgICAg
ICAgcmV0dXJuICtkLnZhbHVlc1swXTsKKyAgICB9KTsKKworICAgIHZhciBtZWFuUmlnaHQgPSBk
My5tZWFuKHNhbXBsZWRTYW1wbGVzLCBmdW5jdGlvbihkKSB7CisgICAgICAgIHJldHVybiArZC52
YWx1ZXNbMV07CisgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgdmFy
IHN2ZyA9IGQzLnNlbGVjdChzZWxlY3RvcikuYXBwZW5kKCJzdmciKQorICAgICAgICAuYXR0cigi
d2lkdGgiLCBzaXplLndpZHRoKCkgKyBtYXJnaW5zLmxlZnQgKyBtYXJnaW5zLnJpZ2h0KQorICAg
ICAgICAuYXR0cigiaGVpZ2h0Iiwgc2l6ZS5oZWlnaHQoKSArIG1hcmdpbnMudG9wICsgbWFyZ2lu
cy5ib3R0b20pCisgICAgICAgIC5hcHBlbmQoImciKQorICAgICAgICAgICAgLmF0dHIoInRyYW5z
Zm9ybSIsICJ0cmFuc2xhdGUoIiArIG1hcmdpbnMubGVmdCArICIsIiArIG1hcmdpbnMudG9wICsg
IikiKTsKKworICAgIC8vIHgtYXhpcworICAgIHN2Zy5hcHBlbmQoImciKQorICAgICAgICAuYXR0
cigiY2xhc3MiLCAieCBheGlzIikKKyAgICAgICAgLmF0dHIoImZpbGwiLCAicmdiKDIzNSwgMjM1
LCAyMzUpIikKKyAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoMCwiICsgc2l6
ZS5oZWlnaHQoKSArICIpIikKKyAgICAgICAgLmNhbGwoeEF4aXMpCisgICAgICAgIC5hcHBlbmQo
InRleHQiKQorICAgICAgICAgICAgLmF0dHIoImNsYXNzIiwgImxhYmVsIikKKyAgICAgICAgICAg
IC5hdHRyKCJ4Iiwgc2l6ZS53aWR0aCgpKQorICAgICAgICAgICAgLmF0dHIoInkiLCAtNikKKyAg
ICAgICAgICAgIC5hdHRyKCJmaWxsIiwgInJnYigyMzUsIDIzNSwgMjM1KSIpCisgICAgICAgICAg
ICAuc3R5bGUoInRleHQtYW5jaG9yIiwgImVuZCIpCisgICAgICAgICAgICAudGV4dCgidGltZSIp
OworICAgICAgICAgICAgICAgICAKKyAgICAvLyB5TGVmdC1heGlzCisgICAgc3ZnLmFwcGVuZCgi
ZyIpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJ5IGF4aXMiKQorICAgICAgICAuYXR0cigiZmls
bCIsICJzdGVlbGJsdWUiKQorICAgICAgICAuY2FsbCh5QXhpc0xlZnQpCisgICAgICAgIC5hcHBl
bmQoInRleHQiKQorICAgICAgICAgICAgLmF0dHIoImNsYXNzIiwgImxhYmVsIikKKyAgICAgICAg
ICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAicm90YXRlKC05MCkiKQorICAgICAgICAgICAgLmF0dHIo
InkiLCA2KQorICAgICAgICAgICAgLmF0dHIoImZpbGwiLCAic3RlZWxibHVlIikKKyAgICAgICAg
ICAgIC5hdHRyKCJkeSIsICIuNzFlbSIpCisgICAgICAgICAgICAuc3R5bGUoInRleHQtYW5jaG9y
IiwgImVuZCIpCisgICAgICAgICAgICAudGV4dChheGlzZXNbMF0pOworCisgICAgLy8geVJpZ2h0
LWF4aXMKKyAgICBzdmcuYXBwZW5kKCJnIikKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgInkgYXhp
cyIpCisgICAgICAgIC5hdHRyKCJmaWxsIiwgInJlZCIpCisgICAgICAgIC5hdHRyKCJ0cmFuc2Zv
cm0iLCAidHJhbnNsYXRlKCIgKyBzaXplLndpZHRoKCkgKyAiLCAwKSIpCisgICAgICAgIC5jYWxs
KHlBeGlzUmlnaHQpCisgICAgICAgIC5hcHBlbmQoInRleHQiKQorICAgICAgICAgICAgLmF0dHIo
ImNsYXNzIiwgImxhYmVsIikKKyAgICAgICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAicm90YXRl
KC05MCkiKQorICAgICAgICAgICAgLmF0dHIoInkiLCA2KQorICAgICAgICAgICAgLmF0dHIoImZp
bGwiLCAicmVkIikKKyAgICAgICAgICAgIC5hdHRyKCJkeSIsICIuNzFlbSIpCisgICAgICAgICAg
ICAuc3R5bGUoInRleHQtYW5jaG9yIiwgImVuZCIpCisgICAgICAgICAgICAudGV4dChheGlzZXNb
MV0pOworCisgICAgLy8gbGVmdC1tZWFuCisgICAgc3ZnLmFwcGVuZCgic3ZnOmxpbmUiKQorICAg
ICAgICAuYXR0cigieDEiLCB4KDApKQorICAgICAgICAuYXR0cigieDIiLCBzaXplLndpZHRoKCkp
CisgICAgICAgIC5hdHRyKCJ5MSIsIHlMZWZ0KG1lYW5MZWZ0KSkKKyAgICAgICAgLmF0dHIoInky
IiwgeUxlZnQobWVhbkxlZnQpKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAibGVmdC1tZWFuIik7
CisKKyAgICAvLyByaWdodC1tZWFuCisgICAgc3ZnLmFwcGVuZCgic3ZnOmxpbmUiKQorICAgICAg
ICAuYXR0cigieDEiLCB4KDApKQorICAgICAgICAuYXR0cigieDIiLCBzaXplLndpZHRoKCkpCisg
ICAgICAgIC5hdHRyKCJ5MSIsIHlSaWdodChtZWFuUmlnaHQpKQorICAgICAgICAuYXR0cigieTIi
LCB5UmlnaHQobWVhblJpZ2h0KSkKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgInJpZ2h0LW1lYW4i
KTsgICAgICAgIAorCisgICAgLy8gc2FtcGxpbmdUaW1lT2Zmc2V0CisgICAgc3ZnLmFwcGVuZCgi
bGluZSIpCisgICAgICAgIC5hdHRyKCJ4MSIsIHgoc2FtcGxpbmdUaW1lT2Zmc2V0KSkKKyAgICAg
ICAgLmF0dHIoIngyIiwgeChzYW1wbGluZ1RpbWVPZmZzZXQpKQorICAgICAgICAuYXR0cigieTEi
LCB5TGVmdCgwKSkKKyAgICAgICAgLmF0dHIoInkyIiwgeUxlZnQoeUF4aXNMZWZ0LnNjYWxlKCku
ZG9tYWluKClbMV0pKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAic21hcGxlLXRpbWUiKTsKKwor
ICAgIC8vIGxlZnQtc2FtcGxlcworICAgIHN2Zy5hcHBlbmQoInBhdGgiKQorICAgICAgICAuZGF0
dW0oc2FtcGxlcykKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgImxlZnQtc2FtcGxlcyIpCisgICAg
ICAgIC5hdHRyKCJkIiwgbGluZUxlZnQpOworICAgICAgICAKKyAgICAvLyByaWdodC1zYW1wbGVz
CisgICAgc3ZnLmFwcGVuZCgicGF0aCIpCisgICAgICAgIC5kYXR1bShzYW1wbGVzKQorICAgICAg
ICAuYXR0cigiY2xhc3MiLCAicmlnaHQtc2FtcGxlcyIpCisgICAgICAgIC5hdHRyKCJkIiwgbGlu
ZVJpZ2h0KTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVz
b3VyY2VzL3Rlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNjcgQEAKK3ZhciBUaXRsZXMgPSBbCisgICAgeworICAgICAgICB0ZXh0IDog
IlRlc3QgTmFtZSIsCisgICAgICAgIHdpZHRoIDogMzAsCisgICAgICAgIGNoaWxkcmVuOiBbXQor
ICAgIH0sIHsKKyAgICAgICAgdGV4dCA6ICJQYXJ0aWNsZXMiLAorICAgICAgICB3aWR0aCA6IDMw
LAorICAgICAgICBjaGlsZHJlbjogWworICAgICAgICAgICAgeyB0ZXh0OiAgICJBdmcuIiwgd2lk
dGg6IDgsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAiXHUwMGIxIiwgd2lk
dGg6IDcsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAgICJTdGQuIiwgd2lk
dGg6IDgsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAgICAgICIlIiwgd2lk
dGg6IDcsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICBdCisgICAgfSwgeworICAgICAgICB0ZXh0
IDogIkZQUyIsCisgICAgICAgIHdpZHRoIDogMzAsICAgICAgICAgICAgCisgICAgICAgIGNoaWxk
cmVuOiBbCisgICAgICAgICAgICB7IHRleHQ6ICAgIkF2Zy4iLCB3aWR0aDogOCwgY2hpbGRyZW46
IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICJcdTAwYjEiLCB3aWR0aDogNywgY2hpbGRyZW46
IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICAgIlN0ZC4iLCB3aWR0aDogOCwgY2hpbGRyZW46
IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICAgICAgIiUiLCB3aWR0aDogNywgY2hpbGRyZW46
IFtdIH0sCisgICAgICAgIF0KKyAgICB9LCB7CisgICAgICAgIHRleHQgOiAiU2FtcGxlcyIsCisg
ICAgICAgIHdpZHRoIDogMTAsCisgICAgICAgIGNoaWxkcmVuOiBbXQorICAgIH0KK107CisKK3Zh
ciBTdWl0ZXMgPSBbXTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICJIVE1MIEJvdW5jaW5n
IFBhcnRpY2xlcyIsCisgICAgcHJlcGFyZTogZnVuY3Rpb24ocnVubmVyLCBjb250ZW50V2luZG93
LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVu
dCgiI3N0YWdlIikudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgcmV0dXJu
IGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sICAKKyAgICBydW46IGZ1bmN0aW9uKGNvbnRl
bnRXaW5kb3csIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAg
ICAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhpcywgdGVzdCwgb3B0aW9u
cywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICB9LAorICAgIHRpdGxlcyA6IFRpdGxl
cywKKyAgICB0ZXN0czogWworICAgICAgICB7IAorICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXNoYXBlcy5odG1sP2dhaW49MSZhZGRMaW1pdD0x
MDAmcmVtb3ZlTGltaXQ9NSZwYXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBl
PWNpcmNsZSIsCisgICAgICAgICAgICBuYW1lOiAiYm91bmNpbmcgY2lyY2xlcyIsCisgICAgICAg
ICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDIwMDAKKyAgICAgICAgfSwgeyAKKyAg
ICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zaGFw
ZXMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFydGljbGVXaWR0aD00
MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3RhciIsCisgICAgICAgICAgICBu
YW1lOiAiYm91bmNpbmcgY2xpcHBlZCByZWN0cyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisg
ICAgICAgICAgICBtYXg6IDEwMDAKKyAgICAgICAgfSwgeyAKKyAgICAgICAgICAgIHVybDogIi4u
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zaGFwZXMuaHRtbD9nYWluPTEmYWRk
TGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFydGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01
MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVudCIsCisgICAgICAgICAgICBuYW1lOiAiYm91bmNp
bmcgZ3JhZGllbnQgY2lyY2xlcyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAg
ICBtYXg6IDUwMAorICAgICAgICB9LCB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctaW1hZ2VzLmh0bWw/Z2Fpbj0wLjQmYWRkTGltaXQ9NSZy
ZW1vdmVMaW1pdD0yJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9
Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICBuYW1lOiAiYm91bmNpbmcg
U1ZHIGltYWdlcyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDIw
MAorICAgICAgICB9LCB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvYm91bmNpbmctaW1hZ2VzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1p
dD01JnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3Vy
Y2VzL3lpbi15YW5nLnBuZyIsCisgICAgICAgICAgICBuYW1lOiAiYm91bmNpbmcgUE5HIGltYWdl
cyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDIwMDAKKyAgICAg
ICAgfSwgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0
bWw/Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAwIiwKKyAgICAgICAgICAgIG5h
bWU6ICJsYXllcmluZyB0ZXh0IiwKKyAgICAgICAgICAgIHdlaWdodDogMSwKKyAgICAgICAgICAg
IG1heDogNDAwMAorICAgICAgICB9CisgICAgXQorfSk7CisKK1N1aXRlcy5wdXNoKHsKKyAgICBu
YW1lOiAiQ2FudmFzIEJvdW5jaW5nIFBhcnRpY2xlcyIsCisgICAgcHJlcGFyZTogZnVuY3Rpb24o
cnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJu
IHJ1bm5lci53YWl0Rm9yRWxlbWVudCgiI3N0YWdlIikudGhlbihmdW5jdGlvbiAoZWxlbWVudCkg
eworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sICAKKyAg
ICBydW46IGZ1bmN0aW9uKGNvbnRlbnRXaW5kb3csIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxl
LCBwcm9ncmVzc0JhcikgeworICAgICAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1h
cmsodGhpcywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICB9
LAorICAgIHRpdGxlcyA6IFRpdGxlcywKKyAgICB0ZXN0czogWworICAgICAgICB7IAorICAgICAg
ICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1z
aGFwZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMDAmcGFydGljbGVX
aWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUiLAorICAgICAgICAgICAgbmFt
ZTogImNhbnZhcyBib3VuY2luZyBjaXJjbGVzIiwKKyAgICAgICAgICAgIHdlaWdodDogMSwKKyAg
ICAgICAgICAgIG1heDogNDAwMAorICAgICAgICB9LCB7IAorICAgICAgICAgICAgdXJsOiAiLi4v
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9nYWlu
PTQmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD00MCZwYXJ0aWNs
ZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3RhciIsCisgICAgICAgICAgICBuYW1lOiAiY2Fu
dmFzIGJvdW5jaW5nIGNsaXBwZWQgcmVjdHMiLAorICAgICAgICAgICAgd2VpZ2h0OiAxLAorICAg
ICAgICAgICAgbWF4OiAxMDAwCisgICAgICAgIH0sIHsgCisgICAgICAgICAgICB1cmw6ICIuLi90
ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP2dhaW49
NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xl
SGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRpZW50IiwKKyAgICAgICAgICAgIG5hbWU6
ICJjYW52YXMgYm91bmNpbmcgZ3JhZGllbnQgY2lyY2xlcyIsCisgICAgICAgICAgICB3ZWlnaHQ6
IDEsCisgICAgICAgICAgICBtYXg6IDEwMDAKKyAgICAgICAgfSwgeyAKKyAgICAgICAgICAgIHVy
bDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0
bWw/Z2Fpbj0wLjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0xJnBhcnRpY2xlV2lkdGg9ODAmcGFy
dGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAg
ICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIFNWRyBpbWFnZXMiLAorICAgICAgICAgICAg
d2VpZ2h0OiAxLAorICAgICAgICAgICAgbWF4OiAyMDAKKyAgICAgICAgfSwgeworICAgICAgICAg
ICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFn
ZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwMCZyZW1vdmVMaW1pdD0xMDAwJnBhcnRpY2xlV2lk
dGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBu
ZyIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIFBORyBpbWFnZXMiLAorICAg
ICAgICAgICAgd2VpZ2h0OiAxLAorICAgICAgICAgICAgbWF4OiA1MDAwCisgICAgICAgIH0KKyAg
ICBdCit9KTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICJTVkcgQm91bmNpbmcgUGFydGlj
bGVzIiwKKyAgICBwcmVwYXJlOiBmdW5jdGlvbihydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRl
bnREb2N1bWVudCkgeworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCIjc3Rh
Z2UiKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVu
dDsKKyAgICAgICAgfSk7CisgICAgfSwgIAorICAgIHJ1bjogZnVuY3Rpb24oY29udGVudFdpbmRv
dywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgICAgIHJl
dHVybiBjb250ZW50V2luZG93LnJ1bkJlbmNobWFyayh0aGlzLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIH0sCisgICAgdGl0bGVzIDogVGl0bGVzLAorICAg
IHRlc3RzOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/Z2Fpbj02JmFkZExpbWl0PTEwMCZy
ZW1vdmVMaW1pdD0xMDAwJnBhcnRpY2xlV2lkdGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9
Y2lyY2xlIiwKKyAgICAgICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcgY2lyY2xlcyIsCisgICAg
ICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDYwMDAKKyAgICAgICAgfSwgewor
ICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2
Zy1zaGFwZXMuaHRtbD9nYWluPTAuNiZhZGRMaW1pdD0xMCZyZW1vdmVMaW1pdD0xJnBhcnRpY2xl
V2lkdGg9NDAmcGFydGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAorICAgICAg
ICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBjbGlwcGVkIHJlY3RzIiwKKyAgICAgICAgICAgIHdl
aWdodDogMSwKKyAgICAgICAgICAgIG1heDogMTAwMAorICAgICAgICB9LCB7CisgICAgICAgICAg
ICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5o
dG1sP2dhaW49MC44JmFkZExpbWl0PTEwJnJlbW92ZUxpbWl0PTQmcGFydGljbGVXaWR0aD01MCZw
YXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVudCIsCisgICAgICAgICAg
ICBuYW1lOiAiU1ZHIGJvdW5jaW5nIGdyYWRpZW50IGNpcmNsZXMiLAorICAgICAgICAgICAgd2Vp
Z2h0OiAxLAorICAgICAgICAgICAgbWF4OiAxMDAwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAg
IHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0
bWw/Z2Fpbj0wLjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0yJnBhcnRpY2xlV2lkdGg9ODAmcGFy
dGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAg
ICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIFNWRyBpbWFnZXMiLAorICAgICAgICAgICAgd2Vp
Z2h0OiAxLAorICAgICAgICAgICAgbWF4OiAyMDAKKyAgICAgICAgfSwgeworICAgICAgICAgICAg
dXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRt
bD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFydGljbGVXaWR0aD04MCZwYXJ0
aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcucG5nIiwKKyAgICAg
ICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcgUE5HIGltYWdlcyIsICAgICAgICAgICAgCisgICAg
ICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDQwMDAKKyAgICAgICAgfQorICAg
IF0KK30pOworCitmdW5jdGlvbiBzdWl0ZUZyb21OYW1lKG5hbWUpIHsKKyAgICByZXR1cm4gU3Vp
dGVzLmZpbmQoZnVuY3Rpb24oc3VpdGUpIHsgcmV0dXJuIHN1aXRlLm5hbWUgPT0gbmFtZTsgfSk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RGcm9tTmFtZShzdWl0ZSwgbmFtZSkgeworICAgIHJldHVybiBz
dWl0ZS50ZXN0cy5maW5kKGZ1bmN0aW9uKHRlc3QpIHsgcmV0dXJuIHRlc3QubmFtZSA9PSBuYW1l
OyB9KTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctY2FudmFzLWltYWdlcy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2Vz
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAgaW1nLmhpZGRlbiB7CisgICAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CisgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CisgICAgfQorICA8L3N0eWxl
PgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNv
dXJjZXMvYmVuY2htYXJrLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3Rh
dGlzdGljcy5qcyI+PC9zY3JpcHQ+ICAKKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9t
YWluLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48
L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuanMiPjwvc2Ny
aXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+
CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCisgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorICA8aW1nIGNsYXNzPSJoaWRkZW4iIHNyYz0iLi4vcmVzb3Vy
Y2VzL3lpbi15YW5nLnN2ZyI+CisgIDxpbWcgY2xhc3M9ImhpZGRlbiIgc3JjPSIuLi9yZXNvdXJj
ZXMveWluLXlhbmcucG5nIj4KKyAgPGNhbnZhcyBpZD0ic3RhZ2UiPjwvY2FudmFzPgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3Vu
Y2luZy1jYW52YXMtc2hhcGVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFw
ZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3Mi
IGhyZWY9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4gIAorICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL21hdGguanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2JlbmNo
bWFyay5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVz
LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9z
Y3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48
L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVz
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8Y2FudmFzIGlkPSJzdGFnZSI+PC9j
YW52YXM+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWltYWdlcy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctaW1hZ2VzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWltYWdlcy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgPHN0eWxlPgorICAgIGltZyB7CisgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgfQorICA8L3N0eWxlPgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQv
Y3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvYmVuY2htYXJrLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+ICAKKyAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9i
ZW5jaG1hcmsuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMi
Pjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5q
cyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctaW1hZ2VzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8ZGl2IGlkPSJzdGFnZSI+PC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXNoYXBlcy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctc2hhcGVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXNoYXBlcy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KyAgPHN0eWxlPgorICAgIC5jaXJjbGUgeworICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
ICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsKKyAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSA1
MCU7CisgICAgfQorICAgIC5yZWN0IHsKKyAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAg
IGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7CisgICAgfQorICAgIC5zdGFyIHsKKyAgICAgIC13
ZWJraXQtY2xpcC1wYXRoOiBwb2x5Z29uKDUwJSAwJSwgMzglIDM4JSwgMCUgMzglLCAzMCUgNjAl
LCAxOCUgMTAwJSwgNTAlIDc1JSwgODIlIDEwMCUsIDcwJSA2MCUsIDEwMCUgMzglLCA2MiUgMzgl
KTsKKyAgICAgIC1tcy1jbGlwLXBhdGg6IHBvbHlnb24oNTAlIDAlLCAzOCUgMzglLCAwJSAzOCUs
IDMwJSA2MCUsIDE4JSAxMDAlLCA1MCUgNzUlLCA4MiUgMTAwJSwgNzAlIDYwJSwgMTAwJSAzOCUs
IDYyJSAzOCUpOyAgCisgICAgICBjbGlwLXBhdGg6IHBvbHlnb24oNTAlIDAlLCAzOCUgMzglLCAw
JSAzOCUsIDMwJSA2MCUsIDE4JSAxMDAlLCA1MCUgNzUlLCA4MiUgMTAwJSwgNzAlIDYwJSwgMTAw
JSAzOCUsIDYyJSAzOCUpOworICAgIH0KKyAgPC9zdHlsZT4KKyAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5jc3MiPgor
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PiAg
CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3Vu
Y2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Jv
dW5jaW5nLXNoYXBlcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0i
c3RhZ2UiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5j
aW5nLXN2Zy1pbWFnZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlw
ZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4gIAorICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9z
dGFnZS5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFy
dGljbGVzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1z
dmctaW1hZ2VzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8c3ZnIGlkPSJzdGFn
ZSI+PC9zdmc+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
c3ZnLXNoYXBlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0
ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5jc3MiPgorICA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRp
bGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5q
cyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVz
LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1zdmctc2hh
cGVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8c3ZnIGlkPSJzdGFnZSI+PC9z
dmc+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2Vz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMJKHJldmlz
aW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsODIgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzSW1hZ2Uoc3RhZ2UpIHsK
KyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworICAgIHRoaXMuX2NvbnRl
eHQgPSBzdGFnZS5jb250ZXh0OworICAgIHRoaXMuX2ltYWdlRWxlbWVudCA9IHN0YWdlLmltYWdl
RWxlbWVudDsKK30KKworQm91bmNpbmdDYW52YXNJbWFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3Jl
YXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzSW1hZ2UucHJv
dG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNJbWFnZTsKKworQm91bmNpbmdDYW52
YXNJbWFnZS5wcm90b3R5cGUuX2RyYXcgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgY2VudGVyID0g
dGhpcy5jZW50ZXIoKTsKKworICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgpOworICAgIHRoaXMuX2Nv
bnRleHQudHJhbnNsYXRlKGNlbnRlci54LCBjZW50ZXIueSk7CisgICAgdGhpcy5fY29udGV4dC5y
b3RhdGUodGhpcy5fcm90YXRlci5kZWdyZWUoKSAqIE1hdGguUEkgLyAxODApOworICAgIHRoaXMu
X2NvbnRleHQudHJhbnNsYXRlKC10aGlzLl9zaXplLnggLyAyLCAtdGhpcy5fc2l6ZS55IC8gMik7
CisgICAgCisgICAgdGhpcy5fY29udGV4dC5kcmF3SW1hZ2UodGhpcy5faW1hZ2VFbGVtZW50LCAw
LCAwLCB0aGlzLl9zaXplLngsIHRoaXMuX3NpemUueSk7CisgICAgdGhpcy5fY29udGV4dC5yZXN0
b3JlKCk7Cit9CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5j
dGlvbih0aW1lRGVsdGEpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRl
LmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlzLl9kcmF3KCk7Cit9CisKK2Z1bmN0aW9u
IEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykgeworICAgIEJvdW5j
aW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0aGlz
LmNvbnRleHQgPSB0aGlzLmVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICB2YXIgaW1hZ2VT
cmMgPSBvcHRpb25zWyJpbWFnZVNyYyJdIHx8ICJyZXNvdXJjZXMveWluLXlhbmcuc3ZnIjsKKyAg
ICAKKyAgICB2YXIgaW1hZ2VFbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoImhpZGRlbiIpOworICAgIGNvbnNvbGUuYXNzZXJ0KGltYWdlRWxlbWVudHMubGVuZ3RoKTsK
KyAgICAgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbWFnZUVsZW1lbnRzLmxlbmd0aDsg
KytpKSB7CisgICAgICAgIGlmIChpbWFnZUVsZW1lbnRzW2ldLmdldEF0dHJpYnV0ZSgic3JjIikg
PT0gaW1hZ2VTcmMpIHsKKyAgICAgICAgICAgIHRoaXMuaW1hZ2VFbGVtZW50ID0gaW1hZ2VFbGVt
ZW50c1tpXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKKyAgICB9CisKKyAgICB0aGlzLmltYWdlRWxlbWVudCA9IHRoaXMu
aW1hZ2VFbGVtZW50IHx8IGltYWdlRWxlbWVudHNbMF07Cit9CisKK0JvdW5jaW5nQ2FudmFzSW1h
Z2VzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc1N0YWdl
LnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2U7CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2Vz
U3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJu
IG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdlKHRoaXMpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0Nh
bnZhc0ltYWdlc0FuaW1hdG9yKGJlbmNobWFyaykgeworICAgIEJvdW5jaW5nUGFydGljbGVzQW5p
bWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1hcmspOworICAgIHRoaXMuX2NvbnRleHQgPSBiZW5jaG1h
cmsuX3N0YWdlLmNvbnRleHQ7Cit9CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0b3IucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlw
ZSk7CitCb3VuY2luZ0NhbnZhc0ltYWdlc0FuaW1hdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IEJvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0b3I7CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQW5p
bWF0b3IucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLl9jb250ZXh0
LmNsZWFyUmVjdCgwLCAwLCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUoKS54LCB0aGlzLl9i
ZW5jaG1hcmsuX3N0YWdlLnNpemUoKS55KTsKKyAgICByZXR1cm4gQm91bmNpbmdQYXJ0aWNsZXNB
bmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMpOworfQorCitmdW5jdGlvbiBCb3Vu
Y2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFi
bGUsIHByb2dyZXNzQmFyKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0
aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30K
KworQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNJ
bWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNJbWFn
ZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5j
cmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5n
Q2FudmFzSW1hZ2VzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK0JvdW5jaW5n
Q2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvciA9IGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNJbWFnZXNBbmltYXRvcih0aGlzKTsK
K30KKword2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgd2luZG93LmJlbmNo
bWFyayA9IG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5n
LWNhbnZhcy1zaGFwZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNo
YXBlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDIgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFz
U2hhcGUoc3RhZ2UpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOwor
ICAgIHRoaXMuX3NoYXBlID0gc3RhZ2Uuc2hhcGU7CisgICAgdGhpcy5fZmlsbCA9IHN0YWdlLmZp
bGw7CisgICAgdGhpcy5fY2xpcCA9IHN0YWdlLmNsaXA7CisgICAgdGhpcy5fY29udGV4dCA9IHN0
YWdlLmNvbnRleHQ7CisgICAgdGhpcy5fY29sb3IwID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsKKyAg
ICB0aGlzLl9jb2xvcjEgPSBzdGFnZS5yYW5kb21Db2xvcigpOyAgICAKK30KKworQm91bmNpbmdD
YW52YXNTaGFwZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJv
dG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91
bmNpbmdDYW52YXNTaGFwZTsKKworQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUuX2RyYXcg
PSBmdW5jdGlvbigpIHsKKyAgICAKKyAgICB0aGlzLl9jb250ZXh0LnNhdmUoKTsKKyAgICB0aGlz
Ll9jb250ZXh0LnRyYW5zbGF0ZSh0aGlzLl9wb3NpdGlvbi54LCB0aGlzLl9wb3NpdGlvbi55KTsK
KworICAgIC8vIFNldHRpbmcgdGhlIGZpbGwgc3R5bGUKKyAgICBzd2l0Y2ggKHRoaXMuX2ZpbGwp
IHsKKyAgICBjYXNlICJzb2xpZCI6CisgICAgZGVmYXVsdDoKKyAgICAgICAgdGhpcy5fY29udGV4
dC5maWxsU3R5bGUgPSB0aGlzLl9jb2xvcjA7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSAi
Z3JhZGllbnQiOgorICAgICAgICB2YXIgZ3JhZGllbnQgPSB0aGlzLl9jb250ZXh0LmNyZWF0ZUxp
bmVhckdyYWRpZW50KDAsIDAsIHRoaXMuX3NpemUud2lkdGgoKSwgMCk7CisgICAgICAgIGdyYWRp
ZW50LmFkZENvbG9yU3RvcCgwLCB0aGlzLl9jb2xvcjApOworICAgICAgICBncmFkaWVudC5hZGRD
b2xvclN0b3AoMSwgdGhpcy5fY29sb3IxKTsgCisgICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbFN0
eWxlID0gZ3JhZGllbnQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8vIFJvdGF0aW9u
IGFyb3VuZCB0aGUgY2VudGVyCisgICAgaWYgKHRoaXMuX3NoYXBlICE9ICJjaXJjbGUiKSB7Cisg
ICAgICAgIHRoaXMuX2NvbnRleHQudHJhbnNsYXRlKHRoaXMuX3NpemUueCAvIDIsIHRoaXMuX3Np
emUueSAvIDIpOworICAgICAgICB0aGlzLl9jb250ZXh0LnJvdGF0ZSh0aGlzLl9yb3RhdGVyLmRl
Z3JlZSgpICogTWF0aC5QSSAvIDE4MCk7CisgICAgICAgIHRoaXMuX2NvbnRleHQudHJhbnNsYXRl
KC10aGlzLl9zaXplLnggLyAyLCAtdGhpcy5fc2l6ZS55IC8gMik7CisgICAgfQorCisgICAgdmFy
IGNsaXBQb2ludHMgPSBudWxsOworICAgIAorICAgIHN3aXRjaCAodGhpcy5fY2xpcCkgeworICAg
IGNhc2UgInN0YXIiOgorICAgICAgICBjbGlwUG9pbnRzID0gIFsKKyAgICAgICAgICAgIG5ldyBQ
b2ludCgwLjUwLCAwLjAwKSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgwLjM4LCAwLjM4KSwKKyAg
ICAgICAgICAgIG5ldyBQb2ludCgwLjAwLCAwLjM4KSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgw
LjMwLCAwLjYwKSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgwLjE4LCAxLjAwKSwKKyAgICAgICAg
ICAgIG5ldyBQb2ludCgwLjUwLCAwLjc1KSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgwLjgyLCAx
LjAwKSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgwLjcwLCAwLjYwKSwKKyAgICAgICAgICAgIG5l
dyBQb2ludCgxLjAwLCAwLjM4KSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgwLjYyLCAwLjM4KQor
ICAgICAgICBdOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgaWYgKGNsaXBQb2lu
dHMpIHsKKyAgICAgICAgdGhpcy5fY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICAgICAgdmFyIHNl
bGYgPSB0aGlzOworICAgICAgICBjbGlwUG9pbnRzLmZvckVhY2goZnVuY3Rpb24ocG9pbnQsIGlu
ZGV4KSB7CisgICAgICAgICAgICB2YXIgcG9pbnQgPSBzZWxmLl9zaXplLm11bHRpcGx5KHBvaW50
KTsKKyAgICAgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAgICAgICAgc2VsZi5fY29udGV4
dC5tb3ZlVG8ocG9pbnQueCwgcG9pbnQueSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgc2VsZi5fY29udGV4dC5saW5lVG8ocG9pbnQueCwgcG9pbnQueSk7CisgICAgICAgIH0p
OworICAgICAgICB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpOworICAgICAgICB0aGlzLl9jb250
ZXh0LmNsaXAoKTsKKyAgICB9CisKKyAgICAvLyBTaGFwZSBkcmF3aW5nCisgICAgdGhpcy5fY29u
dGV4dC5iZWdpblBhdGgoKTsKKyAgICAKKyAgICBzd2l0Y2ggKHRoaXMuX3NoYXBlKSB7CisgICAg
Y2FzZSAiY2lyY2xlIjoKKyAgICBkZWZhdWx0OgorICAgICAgICB2YXIgY2VudGVyID0gdGhpcy5f
c2l6ZS5jZW50ZXIoKTsKKyAgICAgICAgdmFyIHJhZGl1cyA9IE1hdGgubWluKHRoaXMuX3NpemUu
eCwgdGhpcy5fc2l6ZS55KSAvIDI7CisgICAgICAgIHRoaXMuX2NvbnRleHQuYXJjKGNlbnRlci54
LCBjZW50ZXIueSwgcmFkaXVzLCAwLCBNYXRoLlBJICogMiwgdHJ1ZSk7CisgICAgICAgIGJyZWFr
OworICAgICAgICAKKyAgICBjYXNlICJyZWN0IjoKKyAgICAgICAgdGhpcy5fY29udGV4dC5yZWN0
KDAsIDAsIHRoaXMuX3NpemUud2lkdGgoKSwgdGhpcy5fc2l6ZS5oZWlnaHQoKSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICAKKyAgICB0aGlzLl9jb250ZXh0LmZpbGwoKTsKKyAgICB0aGlz
Ll9jb250ZXh0LnJlc3RvcmUoKTsKK30KKworQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUu
YW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkgeworICAgIEJvdW5jaW5nUGFydGljbGUucHJv
dG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEpOworICAgIHRoaXMuX2RyYXcoKTsK
K30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZShlbGVtZW50LCBvcHRpb25z
KSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlv
bnMpOworICAgIHRoaXMucGFyc2VTaGFwZVBhcmFtdGVycyhvcHRpb25zKTsKKyAgICB0aGlzLmNv
bnRleHQgPSB0aGlzLmVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKQorfQorCitCb3VuY2luZ0NhbnZh
c1NoYXBlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNT
dGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlOworCitCb3VuY2luZ0NhbnZhc1No
YXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkgeworICAgIHJl
dHVybiBuZXcgQm91bmNpbmdDYW52YXNTaGFwZSh0aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNp
bmdDYW52YXNTaGFwZXNBbmltYXRvcihiZW5jaG1hcmspIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xl
c0FuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gYmVu
Y2htYXJrLl9zdGFnZS5jb250ZXh0OworfQorCitCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9y
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90
b3R5cGUpOworQm91bmNpbmdDYW52YXNTaGFwZXNBbmltYXRvci5wcm90b3R5cGUuY29uc3RydWN0
b3IgPSBCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yOworCitCb3VuY2luZ0NhbnZhc1NoYXBl
c0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5fY29u
dGV4dC5jbGVhclJlY3QoMCwgMCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplKCkueCwgdGhp
cy5fYmVuY2htYXJrLl9zdGFnZS5zaXplKCkueSk7CisgICAgcmV0dXJuIEJvdW5jaW5nUGFydGlj
bGVzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKTsKK30KKworZnVuY3Rpb24g
Qm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29y
ZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNh
bGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7
Cit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2Fu
dmFzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFz
U2hhcGVzQmVuY2htYXJrOworCitCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5
cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgcmV0dXJuIG5ldyBCb3Vu
Y2luZ0NhbnZhc1NoYXBlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCitCb3Vu
Y2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5j
dGlvbigpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzQW5pbWF0b3IodGhp
cyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUs
IHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIHdpbmRvdy5i
ZW5jaG1hcmsgPSBuZXcgQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3Vu
Y2luZy1pbWFnZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctaW1hZ2VzLmpzCShy
ZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctaW1hZ2VzLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTUgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nSW1hZ2Uoc3RhZ2UpIHsKKyAgICBCb3Vu
Y2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworCisgICAgdGhpcy5lbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgdGhpcy5lbGVtZW50LnN0eWxlLndpZHRo
ID0gdGhpcy5fc2l6ZS54ICsgInB4IjsKKyAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0g
dGhpcy5fc2l6ZS55ICsgInB4IjsKKyAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJzcmMi
LCBzdGFnZS5pbWFnZVNyYyk7CisgICAgCisgICAgc3RhZ2UuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLmVsZW1lbnQpOworICAgIHRoaXMubW92ZSgpOworfQorCitCb3VuY2luZ0ltYWdlLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUpOworQm91bmNp
bmdJbWFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0ltYWdlOworCitCb3VuY2lu
Z0ltYWdlLnByb3RvdHlwZS5fbW92ZSA9IGZ1bmN0aW9uKCkgeworICAgIHRoaXMuZWxlbWVudC5z
dHlsZS50cmFuc2Zvcm0gPSAidHJhbnNsYXRlKCIgKyB0aGlzLl9wb3NpdGlvbi54ICsgInB4LCIg
KyB0aGlzLl9wb3NpdGlvbi55ICsgInB4KSAiICsgdGhpcy5fcm90YXRlci5yb3RhdGVaKCk7Cit9
CisgICAgCitCb3VuY2luZ0ltYWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURl
bHRhKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMs
IHRpbWVEZWx0YSk7CisgICAgdGhpcy5tb3ZlKCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nSW1h
Z2VzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykgeworICAgIEJvdW5jaW5nUGFydGljbGVzU3RhZ2Uu
Y2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0aGlzLmltYWdlU3JjID0gb3B0aW9u
c1siaW1hZ2VTcmMiXSB8fCAiLi4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7Cit9CisKK0JvdW5j
aW5nSW1hZ2VzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xl
c1N0YWdlLnByb3RvdHlwZSk7CitCb3VuY2luZ0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IEJvdW5jaW5nSW1hZ2VzU3RhZ2U7CisKK0JvdW5jaW5nSW1hZ2VzU3RhZ2UucHJvdG90
eXBlLmNyZWF0ZVBhcnRpY2xlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2lu
Z0ltYWdlKHRoaXMpOworfQorCitCb3VuY2luZ0ltYWdlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNs
ZVdpbGxCZVJlbW92ZWQgPSBmdW5jdGlvbihwYXJ0aWNsZSkgeworICAgIGlmIChwYXJ0aWNsZS5l
bGVtZW50ICYmIHBhcnRpY2xlLmVsZW1lbnQucGFyZW50Tm9kZSAmJiBwYXJ0aWNsZS5lbGVtZW50
LnBhcmVudE5vZGUgPT0gdGhpcy5lbGVtZW50KQorICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3Zl
Q2hpbGQocGFydGljbGUuZWxlbWVudCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nSW1hZ2VzQmVu
Y2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsK
KyAgICBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBv
cHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3VuY2luZ0ltYWdlc0Jl
bmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzQmVuY2ht
YXJrLnByb3RvdHlwZSk7CitCb3VuY2luZ0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBCb3VuY2luZ0ltYWdlc0JlbmNobWFyazsKKworQm91bmNpbmdJbWFnZXNCZW5jaG1h
cmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkgeworICAgIHJldHVy
biBuZXcgQm91bmNpbmdJbWFnZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKwor
d2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgd2luZG93LmJlbmNobWFyayA9
IG5ldyBCb3VuY2luZ0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3Jk
VGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMJKHJldmlzaW9uIDAp
CisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxODAgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nUGFydGljbGVSb3RhdGVyKHJvdGF0ZUludGVydmFs
KSB7CisgICAgdGhpcy5fdGltZURlbHRhID0gMDsKKyAgICB0aGlzLl9yb3RhdGVJbnRlcnZhbCA9
IHJvdGF0ZUludGVydmFsOworfQorCitCb3VuY2luZ1BhcnRpY2xlUm90YXRlci5wcm90b3R5cGUg
PSB7CisgICAgbmV4dCA6IGZ1bmN0aW9uKHRpbWVEZWx0YSkgeworICAgICAgICB0aGlzLl90aW1l
RGVsdGEgPSAodGhpcy5fdGltZURlbHRhICsgdGltZURlbHRhKSAlIHRoaXMuX3JvdGF0ZUludGVy
dmFsOworICAgIH0sCisgICAgZGVncmVlIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiAo
MzYwICogdGhpcy5fdGltZURlbHRhKSAvIHRoaXMuX3JvdGF0ZUludGVydmFsOworICAgIH0sCisg
ICAgcm90YXRlWiA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gInJvdGF0ZVooIiArIE1h
dGguZmxvb3IodGhpcy5kZWdyZWUoKSkgKyAiZGVnKSI7CisgICAgfSwKKyAgICByb3RhdGUgOiBm
dW5jdGlvbigpIHsgICAgCisgICAgICAgIHJldHVybiAicm90YXRlKCIgKyBNYXRoLmZsb29yKHRo
aXMuZGVncmVlKCkpICsgIikgIjsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nUGFydGlj
bGUoc3RhZ2UpIHsKKyAgICB0aGlzLl9zdGFnZVNpemUgPSBzdGFnZS5zaXplKCk7CisgICAgdGhp
cy5fc2l6ZSA9IHN0YWdlLnBhcnRpY2xlU2l6ZTsKKyAgICAKKyAgICB0aGlzLl9wb3NpdGlvbiA9
IHN0YWdlLnJhbmRvbVBvc2l0aW9uKCk7CisgICAgdGhpcy5fYW5nbGUgPSBzdGFnZS5yYW5kb21B
bmdsZSgpOworICAgIHRoaXMuX3ZlbG9jaXR5ID0gc3RhZ2UucmFuZG9tVmVsb2NpdHkoKTsKKyAg
ICB0aGlzLl9yb3RhdGVyID0gc3RhZ2UucmFuZG9tUm90YXRlcigpOworfQorCitCb3VuY2luZ1Bh
cnRpY2xlLnByb3RvdHlwZSA9IHsKKyAgICBjZW50ZXIgOiBmdW5jdGlvbigpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3Bvc2l0aW9uLmFkZCh0aGlzLl9zaXplLmNlbnRlcigpKTsKKyAgICB9LAor
ICAgIGFuaW1hdGUgOiBmdW5jdGlvbih0aW1lRGVsdGEpIHsKKyAgICAgICAgdGhpcy5fcG9zaXRp
b24gPSB0aGlzLl9wb3NpdGlvbi5tb3ZlKHRoaXMuX2FuZ2xlLCB0aGlzLl92ZWxvY2l0eSwgdGlt
ZURlbHRhKTsKKyAgICAgICAgdGhpcy5fcm90YXRlci5uZXh0KHRpbWVEZWx0YSk7CisKKyAgICAg
ICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgcmlnaHQgc2lkZQorICAgICAg
ICBpZiAodGhpcy5fcG9zaXRpb24ueCArIHRoaXMuX3NpemUueCA+IHRoaXMuX3N0YWdlU2l6ZS54
KSB7CisgICAgICAgICAgICAvLyBJZiBkaXJlY3Rpb24gaXMgRWFzdC1Tb3V0aAorICAgICAgICAg
ICAgaWYgKHRoaXMuX2FuZ2xlID49IDAgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJIC8gMikKKyAg
ICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IE1hdGguUEkgLSB0aGlzLl9hbmdsZTsKKyAgICAg
ICAgICAgIC8vIElmIGFuZ2xlIGlzIEVhc3QtTm9ydGgKKyAgICAgICAgICAgIGVsc2UgaWYgKHRo
aXMuX2FuZ2xlID4gTWF0aC5QSSAvIDIgKiAzKQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xl
ID0gdGhpcy5fYW5nbGUgLSAodGhpcy5fYW5nbGUgLSBNYXRoLlBJIC8gMiAqIDMpICogMjsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92
ZSBvZmYgbGVmdCBzaWRlCisgICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbi54IDwgMCkgeworICAg
ICAgICAgICAgLy8gSWYgYW5nbGUgaXMgV2VzdC1Tb3V0aAorICAgICAgICAgICAgaWYgKHRoaXMu
X2FuZ2xlID4gTWF0aC5QSSAvIDIgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJKQorICAgICAgICAg
ICAgICAgIHRoaXMuX2FuZ2xlID0gTWF0aC5QSSAtIHRoaXMuX2FuZ2xlOworICAgICAgICAgICAg
Ly8gSWYgYW5nbGUgaXMgV2VzdC1Ob3J0aAorICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5fYW5n
bGUgPiBNYXRoLlBJICYmIHRoaXMuX2FuZ2xlIDwgTWF0aC5QSSAvIDIgKiAzKQorICAgICAgICAg
ICAgICAgIHRoaXMuX2FuZ2xlID0gdGhpcy5fYW5nbGUgKyAoTWF0aC5QSSAvIDIgKiAzIC0gdGhp
cy5fYW5nbGUpICogMjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHBhcnRpY2xlIGlzIGdv
aW5nIHRvIG1vdmUgb2ZmIGJvdHRvbSBzaWRlCisgICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbi55
ICsgdGhpcy5fc2l6ZS55ID4gdGhpcy5fc3RhZ2VTaXplLnkpIHsKKyAgICAgICAgICAgIC8vIElm
IGRpcmVjdGlvbiBpcyBTb3V0aAorICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID4gMCAmJiB0
aGlzLl9hbmdsZSA8IE1hdGguUEkpCisgICAgICAgICAgICAgICAgdGhpcy5fYW5nbGUgPSBNYXRo
LlBJICogMiAtIHRoaXMuX2FuZ2xlOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgcGFydGlj
bGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgdG9wIHNpZGUKKyAgICAgICAgaWYgKHRoaXMuX3Bvc2l0
aW9uLnkgPCAwKSB7CisgICAgICAgICAgICAvLyBJZiBkaXJlY3Rpb24gaXMgTm9ydGgKKyAgICAg
ICAgICAgIGlmICh0aGlzLl9hbmdsZSA+IE1hdGguUEkgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJ
ICogMikKKyAgICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IHRoaXMuX2FuZ2xlIC0gKHRoaXMu
X2FuZ2xlIC0gTWF0aC5QSSkgKiAyOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBC
b3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yKGJlbmNobWFyaykgeworICAgIEFuaW1hdG9yLmNhbGwo
dGhpcywgYmVuY2htYXJrKTsKK307CisKK0JvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZShBbmltYXRvci5wcm90b3R5cGUpOworQm91bmNpbmdQYXJ0aWNs
ZXNBbmltYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc0FuaW1h
dG9yOworCitCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVu
Y3Rpb24oKSB7CisgICAgaWYgKCFBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5hbmlt
YXRlKHRoaXMudGltZURlbHRhKCkpOworICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiBC
b3VuY2luZ1BhcnRpY2xlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpIHsKKyAgICBTdGFnZS5jYWxs
KHRoaXMsIGVsZW1lbnQpOworICAgIAorICAgIHRoaXMucGFydGljbGVTaXplID0gbmV3IFBvaW50
KHBhcnNlSW50KG9wdGlvbnNbInBhcnRpY2xlV2lkdGgiXSkgfHwgMTAsIHBhcnNlSW50KG9wdGlv
bnNbInBhcnRpY2xlSGVpZ2h0Il0pIHx8IDEwKTsKKyAgICB0aGlzLnN2Z05hbWVzcGFjZSA9ICJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI7CisgICAgdGhpcy54bGlua05hbWVzcGFjZSA9ICJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIjsKKyAgICAKKyAgICB0aGlzLl9wYXJ0aWNsZXMg
PSBbXTsKKworICAgIHRoaXMuX21heFZlbG9jaXR5ID0gcGFyc2VJbnQob3B0aW9uc1sibWF4VmVs
b2NpdHkiXSkgfHwgNTAwOworICAgIHRoaXMuX21heFZlbG9jaXR5ID0gTWF0aC5tYXgodGhpcy5f
bWF4VmVsb2NpdHksIDEwMCk7Cit9CisKK0JvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBl
ID0gT2JqZWN0LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdQYXJ0aWNsZXNTdGFn
ZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlOworCitCb3Vu
Y2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5wYXJzZVNoYXBlUGFyYW10ZXJzID0gZnVuY3Rp
b24ob3B0aW9ucykgeworICAgIHRoaXMuc2hhcGUgPSBvcHRpb25zWyJzaGFwZSJdIHx8ICJjaXJj
bGUiOworICAgIHRoaXMuZmlsbCA9IG9wdGlvbnNbImZpbGwiXSB8fCAic29saWQiOworICAgIHRo
aXMuY2xpcCA9IG9wdGlvbnNbImNsaXAiXSB8fCAiIjsKK30KKworQm91bmNpbmdQYXJ0aWNsZXNT
dGFnZS5wcm90b3R5cGUucmFuZG9tUm90YXRlciA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBu
ZXcgQm91bmNpbmdQYXJ0aWNsZVJvdGF0ZXIodGhpcy5yYW5kb20oMTAwMCwgMTAwMDApKTsKK30K
KyAgICAKK0JvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlv
bih0aW1lRGVsdGEpIHsKKyAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5fcGFydGljbGVzLmxl
bmd0aDsgKytpKQorICAgICAgICB0aGlzLl9wYXJ0aWNsZXNbaV0uYW5pbWF0ZSh0aW1lRGVsdGEp
OworfQorICAgIAorQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0
aW9uKGNvdW50KSB7CisgICAgY291bnQgPSBjb3VudCA+IDAgPyBNYXRoLmZsb29yKGNvdW50KSA6
IE1hdGguY2VpbChjb3VudCk7CisKKyAgICBpZiAoY291bnQgPT0gMCkKKyAgICAgICAgcmV0dXJu
IHRoaXMuX3BhcnRpY2xlcy5sZW5ndGg7CisKKyAgICBpZiAoY291bnQgPiAwKSB7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHR5cGVvZih0aGlzLmNyZWF0ZVBhcnRpY2xlKSA9PSAiZnVuY3Rpb24i
KTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAg
dGhpcy5fcGFydGljbGVzLnB1c2godGhpcy5jcmVhdGVQYXJ0aWNsZSgpKTsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX3BhcnRpY2xlcy5sZW5ndGg7CisgICAgfQorCisgICAgY291bnQgPSBNYXRoLm1p
bigtY291bnQsIHRoaXMuX3BhcnRpY2xlcy5sZW5ndGgpOworICAgICAgICAKKyAgICBpZiAodHlw
ZW9mKHRoaXMucGFydGljbGVXaWxsQmVSZW1vdmVkKSA9PSAiZnVuY3Rpb24iKSB7CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgIHRoaXMucGFydGlj
bGVXaWxsQmVSZW1vdmVkKHRoaXMuX3BhcnRpY2xlc1t0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoIC0g
MSAtIGldKTsKKyAgICB9CisKKyAgICB0aGlzLl9wYXJ0aWNsZXMuc3BsaWNlKC1jb3VudCwgY291
bnQpOworICAgIHJldHVybiB0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoOworfQorCitmdW5jdGlvbiBC
b3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFi
bGUsIHByb2dyZXNzQmFyKSB7CisgICAgQmVuY2htYXJrLmNhbGwodGhpcywgb3B0aW9ucyk7CisK
KyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFnZSIpOworICAg
IGVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsIGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgp
OworICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCBkb2N1bWVudC5ib2R5Lm9mZnNl
dEhlaWdodCk7CisKKyAgICB0aGlzLl9zdGFnZSA9IHRoaXMuY3JlYXRlU3RhZ2UoZWxlbWVudCk7
CisgICAgdGhpcy5fYW5pbWF0b3IgPSB0aGlzLmNyZWF0ZUFuaW1hdG9yKCk7CisgICAgdGhpcy5f
c3VpdGUgPSBzdWl0ZTsKKyAgICB0aGlzLl90ZXN0ID0gdGVzdDsKKyAgICB0aGlzLl9yZWNvcmRU
YWJsZSA9IHJlY29yZFRhYmxlOworICAgIHRoaXMuX3Byb2dyZXNzQmFyID0gcHJvZ3Jlc3NCYXI7
Cit9CisKK0JvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoQmVuY2htYXJrLnByb3RvdHlwZSk7CitCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyazsKKworQm91bmNp
bmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24o
KSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yKHRoaXMpOworfQor
CitCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNv
dW50KSB7CisgICAgcmV0dXJuIHRoaXMuX3N0YWdlLnR1bmUoY291bnQpOworfQorCitCb3VuY2lu
Z1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKKyAgICBy
ZXR1cm4gdGhpcy5fc3RhZ2UuY2xlYXIoKTsKK30KKworQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1h
cmsucHJvdG90eXBlLnNob3dSZXN1bHRzID0gZnVuY3Rpb24obWVzc2FnZSwgcHJvZ3Jlc3MpIHsK
KyAgICBpZiAoIXRoaXMuX3JlY29yZFRhYmxlIHx8ICF0aGlzLl9wcm9ncmVzc0JhciB8fCAhdGhp
cy5fc3VpdGUgfHwgIXRoaXMuX3Rlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIHRoaXMuX3Jl
Y29yZFRhYmxlLnNob3dSZWNvcmQodGhpcy5fc3VpdGUsIHRoaXMuX3Rlc3QsIHRoaXMuX3NhbXBs
ZXIsIG1lc3NhZ2UpOworICAgIHRoaXMuX3Byb2dyZXNzQmFyLnNldFBvcyhwcm9ncmVzcyk7Cit9
CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1zaGFwZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91
bmNpbmctc2hhcGVzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc2hhcGVzLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nU2hhcGUo
c3RhZ2UpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworCisgICAg
dGhpcy5lbGVtZW50ID0gdGhpcy5fY3JlYXRlU3BhbihzdGFnZSk7CisgICAgICAgIAorICAgIHN3
aXRjaCAoc3RhZ2UuZmlsbCkgeworICAgIGNhc2UgInNvbGlkIjoKKyAgICBkZWZhdWx0OgorICAg
ICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gc3RhZ2UucmFuZG9tQ29s
b3IoKTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgImdyYWRpZW50IjoKKyAg
ICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmQgPSAibGluZWFyLWdyYWRpZW50KCIg
KyBzdGFnZS5yYW5kb21Db2xvcigpICsgIiwgIiArIHN0YWdlLnJhbmRvbUNvbG9yKCkgKyAiKSI7
CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHRoaXMuX21vdmUoKTsKK30KKworQm91bmNp
bmdTaGFwZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90
eXBlKTsKK0JvdW5jaW5nU2hhcGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTaGFw
ZTsKKworQm91bmNpbmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVNwYW4gPSBmdW5jdGlvbihzdGFn
ZSkgeworICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAg
IHNwYW4uY2xhc3NOYW1lID0gc3RhZ2Uuc2hhcGUgKyAiICIgKyBzdGFnZS5jbGlwOworICAgIHNw
YW4uc3R5bGUud2lkdGggPSB0aGlzLl9zaXplLnggKyAicHgiOworICAgIHNwYW4uc3R5bGUuaGVp
Z2h0ID0gdGhpcy5fc2l6ZS55ICsgInB4IjsKKyAgICBzdGFnZS5lbGVtZW50LmFwcGVuZENoaWxk
KHNwYW4pOworICAgIHJldHVybiBzcGFuOworfQorCitCb3VuY2luZ1NoYXBlLnByb3RvdHlwZS5f
bW92ZSA9IGZ1bmN0aW9uKCkgeworICAgIHRoaXMuZWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSAi
dHJhbnNsYXRlKCIgKyB0aGlzLl9wb3NpdGlvbi54ICsgInB4LCIgKyB0aGlzLl9wb3NpdGlvbi55
ICsgInB4KSIgKyB0aGlzLl9yb3RhdGVyLnJvdGF0ZVooKTsKK30KKyAgICAKK0JvdW5jaW5nU2hh
cGUucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpIHsKKyAgICBCb3VuY2lu
Z1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0
aGlzLl9yb3RhdGVyLm5leHQodGltZURlbHRhKTsgICAgCisgICAgdGhpcy5fbW92ZSgpOworfQor
CitmdW5jdGlvbiBCb3VuY2luZ1NoYXBlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpIHsKKyAgICBC
b3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAg
dGhpcy5wYXJzZVNoYXBlUGFyYW10ZXJzKG9wdGlvbnMpOworfQorCitCb3VuY2luZ1NoYXBlc1N0
YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90
b3R5cGUpOworQm91bmNpbmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3Vu
Y2luZ1NoYXBlc1N0YWdlOworCitCb3VuY2luZ1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQ
YXJ0aWNsZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdTaGFwZSh0aGlz
KTsKK30KKworQm91bmNpbmdTaGFwZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1v
dmVkID0gZnVuY3Rpb24ocGFydGljbGUpIHsKKyAgICBpZiAocGFydGljbGUuZWxlbWVudCAmJiBw
YXJ0aWNsZS5lbGVtZW50LnBhcmVudE5vZGUgJiYgcGFydGljbGUuZWxlbWVudC5wYXJlbnROb2Rl
ID09IHRoaXMuZWxlbWVudCkKKyAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKHBhcnRp
Y2xlLmVsZW1lbnQpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ1NoYXBlc0JlbmNobWFyayhzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgQm91bmNp
bmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdTaGFwZXNCZW5jaG1hcmsucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5
cGUpOworQm91bmNpbmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91
bmNpbmdTaGFwZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nU2hhcGVzQmVuY2htYXJrLnByb3RvdHlw
ZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5j
aW5nU2hhcGVzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK3dpbmRvdy5iZW5j
aG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29y
ZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIHdpbmRvdy5iZW5jaG1hcmsgPSBuZXcgQm91bmNp
bmdTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9n
cmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNl
cy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAK
K2Z1bmN0aW9uIEJvdW5jaW5nU3ZnSW1hZ2Uoc3RhZ2UpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xl
LmNhbGwodGhpcywgc3RhZ2UpOworCisgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKHN0YWdlLnN2Z05hbWVzcGFjZSwgImltYWdlIik7CisgICAgdGhpcy5lbGVtZW50
LnNldEF0dHJpYnV0ZSgieCIsIDApOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInki
LCAwKTsgICAgCisgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgid2lkdGgiLCB0aGlzLl9z
aXplLngpOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIHRoaXMuX3Np
emUueSk7CisgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZU5TKHN0YWdlLnhsaW5rTmFtZXNw
YWNlLCAiaHJlZiIsIHN0YWdlLmltYWdlU3JjKTsKKworICAgIHN0YWdlLmVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5lbGVtZW50KTsKKyAgICB0aGlzLl9tb3ZlKCk7ICAgIAorfQorCitCb3VuY2lu
Z1N2Z0ltYWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5wcm90
b3R5cGUpOworQm91bmNpbmdTdmdJbWFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2lu
Z1N2Z0ltYWdlOworCitCb3VuY2luZ1N2Z0ltYWdlLnByb3RvdHlwZS5fbW92ZSA9IGZ1bmN0aW9u
KCkgeworICAgIHZhciBjZW50ZXIgPSB0aGlzLmNlbnRlcigpOworICAgIHRoaXMuZWxlbWVudC5z
ZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsIAorICAgICAgICAidHJhbnNsYXRlKCIgKyBjZW50ZXIu
eCArICIsICIgKyBjZW50ZXIueSArICIpICIKKyAgICAgICAgKyB0aGlzLl9yb3RhdGVyLnJvdGF0
ZSgpCisgICAgICAgICsgInRyYW5zbGF0ZSgiICsgLXRoaXMuX3NpemUueCAvIDIgKyAiLCAiICsg
LXRoaXMuX3NpemUueSAvIDIgKyAiKSAiKTsKK30KKworQm91bmNpbmdTdmdJbWFnZS5wcm90b3R5
cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkgeworICAgIEJvdW5jaW5nUGFydGljbGUu
cHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEpOworICAgIHRoaXMuX21vdmUo
KTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdTdmdJbWFnZXNTdGFnZShlbGVtZW50LCBvcHRpb25z
KSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlv
bnMpOworICAgIHRoaXMuaW1hZ2VTcmMgPSBvcHRpb25zWyJpbWFnZVNyYyJdIHx8ICJyZXNvdXJj
ZXMveWluLXlhbmcuc3ZnIjsKK30KKworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5j
aW5nU3ZnSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdJbWFn
ZXNTdGFnZTsKKworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGlj
bGUgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nU3ZnSW1hZ2UodGhpcyk7
Cit9CisKK0JvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVt
b3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xlKSB7CisgICAgaWYgKHBhcnRpY2xlLmVsZW1lbnQgJiYg
cGFydGljbGUuZWxlbWVudC5wYXJlbnROb2RlICYmIHBhcnRpY2xlLmVsZW1lbnQucGFyZW50Tm9k
ZSA9PSB0aGlzLmVsZW1lbnQpCisgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZChwYXJ0
aWNsZS5lbGVtZW50KTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmso
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIEJv
dW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nU3ZnSW1hZ2VzQmVuY2ht
YXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsu
cHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrOworCitCb3VuY2luZ1N2Z0ltYWdlc0Jl
bmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KSB7CisgICAg
cmV0dXJuIG5ldyBCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMp
OworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICB3aW5kb3cuYmVu
Y2htYXJrID0gbmV3IEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmct
c3ZnLXNoYXBlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpz
CShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE2MSBAQAorZnVuY3Rpb24gQm91bmNpbmdTdmdTaGFwZShzdGFnZSkg
eworICAgIEJvdW5jaW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CisgICAgdGhpcy5fc2hh
cGUgPSBzdGFnZS5zaGFwZTsKKyAgICAKKyAgICBzd2l0Y2ggKHRoaXMuX3NoYXBlKSB7CisgICAg
Y2FzZSAiY2lyY2xlIjoKKyAgICBkZWZhdWx0OgorICAgICAgICB0aGlzLmVsZW1lbnQgPSB0aGlz
Ll9jcmVhdGVDaXJjbGUoc3RhZ2UpOworICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2Fz
ZSAicmVjdCI6CisgICAgICAgIHRoaXMuZWxlbWVudCA9IHRoaXMuX2NyZWF0ZVJlY3Qoc3RhZ2Up
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHN0YWdlLmNsaXApIHsKKyAg
ICBjYXNlICJzdGFyIjoKKyAgICAgICAgc3RhZ2UuZW5zdXJlQ2xpcFN0YXJJc0NyZWF0ZWQoKTsg
ICAgCisgICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImNsaXAtcGF0aCIsICJ1cmwo
I3N0YXItY2xpcCkiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dpdGNoIChzdGFn
ZS5maWxsKSB7CisgICAgY2FzZSAic29saWQiOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHRoaXMu
ZWxlbWVudC5zZXRBdHRyaWJ1dGUoImZpbGwiLCBzdGFnZS5yYW5kb21Db2xvcigpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgImdyYWRpZW50IjoKKyAgICAgICAgdmFyIGdy
YWRpZW50ID0gc3RhZ2UuY3JlYXRlR3JhZGllbnQoMik7CisgICAgICAgIHRoaXMuZWxlbWVudC5z
ZXRBdHRyaWJ1dGUoImZpbGwiLCAidXJsKCMiICsgZ3JhZGllbnQuZ2V0QXR0cmlidXRlKCJpZCIp
ICsgIikiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgdGhpcy5fbW92ZSgpOyAgICAK
K30KKworQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5n
UGFydGljbGUucHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLmNvbnN0cnVj
dG9yID0gQm91bmNpbmdTdmdTaGFwZTsKKworQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2Ny
ZWF0ZUNpcmNsZSA9IGZ1bmN0aW9uKHN0YWdlKSB7CisgICAgdmFyIGNpcmNsZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUyhzdGFnZS5zdmdOYW1lc3BhY2UsICJjaXJjbGUiKTsKKyAgICBjaXJj
bGUuc2V0QXR0cmlidXRlKCJjeCIsIHRoaXMuX3NpemUueCAvIDIpOworICAgIGNpcmNsZS5zZXRB
dHRyaWJ1dGUoImN5IiwgdGhpcy5fc2l6ZS55IC8gMik7ICAgIAorICAgIGNpcmNsZS5zZXRBdHRy
aWJ1dGUoInIiLCBNYXRoLm1pbih0aGlzLl9zaXplLngsIHRoaXMuX3NpemUueSkgLyAyKTsKKyAg
ICBzdGFnZS5lbGVtZW50LmFwcGVuZENoaWxkKGNpcmNsZSk7CisgICAgcmV0dXJuIGNpcmNsZTsK
K30KKworQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVJlY3QgPSBmdW5jdGlvbihz
dGFnZSkgeworICAgIHZhciByZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN0YWdlLnN2
Z05hbWVzcGFjZSwgInJlY3QiKTsKKyAgICByZWN0LnNldEF0dHJpYnV0ZSgieCIsIDApOworICAg
IHJlY3Quc2V0QXR0cmlidXRlKCJ5IiwgMCk7ICAgIAorICAgIHJlY3Quc2V0QXR0cmlidXRlKCJ3
aWR0aCIsIHRoaXMuX3NpemUueCk7CisgICAgcmVjdC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIHRo
aXMuX3NpemUueSk7CisgICAgc3RhZ2UuZWxlbWVudC5hcHBlbmRDaGlsZChyZWN0KTsgICAgCisg
ICAgcmV0dXJuIHJlY3Q7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLl9tb3ZlID0g
ZnVuY3Rpb24oKSB7CisgICAgdmFyIHRyYW5zZm9ybTsKKyAgICBpZiAodGhpcy5fc2hhcGUgPT0g
ImNpcmNsZSIpCisgICAgICAgIHRyYW5zZm9ybSA9ICJ0cmFuc2xhdGUoIiArIHRoaXMuX3Bvc2l0
aW9uLnggKyAiLCAiICsgdGhpcy5fcG9zaXRpb24ueSArICIpIjsKKyAgICBlbHNlIHsKKyAgICAg
ICAgdmFyIGNlbnRlciA9IHRoaXMuY2VudGVyKCk7CisgICAgICAgIHRyYW5zZm9ybSAgPSAidHJh
bnNsYXRlKCIgKyBjZW50ZXIueCArICIsICIgKyBjZW50ZXIueSArICIpICI7CisgICAgICAgIHRy
YW5zZm9ybSArPSB0aGlzLl9yb3RhdGVyLnJvdGF0ZSgpOworICAgICAgICB0cmFuc2Zvcm0gKz0g
InRyYW5zbGF0ZSgiICsgLXRoaXMuX3NpemUud2lkdGgoKSAvIDIgKyAiLCAiICsgLXRoaXMuX3Np
emUuaGVpZ2h0KCkgLyAyICsgIikiOworICAgIH0KKyAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmli
dXRlKCJ0cmFuc2Zvcm0iLCB0cmFuc2Zvcm0pOworfQorCitCb3VuY2luZ1N2Z1NoYXBlLnByb3Rv
dHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKSB7CisgICAgQm91bmNpbmdQYXJ0aWNs
ZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7CisgICAgdGhpcy5fbW92
ZSgpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlKGVsZW1lbnQsIG9wdGlv
bnMpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0
aW9ucyk7CisgICAgdGhpcy5wYXJzZVNoYXBlUGFyYW10ZXJzKG9wdGlvbnMpOworfQorCitCb3Vu
Y2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitCb3VuY2luZ1N2
Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5lbnN1cmVDbGlwU3RhcklzQ3JlYXRlZCA9IGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiB0aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvcigiI3N0YXItY2xpcCIp
IHx8IHRoaXMuX2NyZWF0ZUNsaXBTdGFyKCk7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGVzU3RhZ2Uu
cHJvdG90eXBlLmVuc3VyZURlZnNJc0NyZWF0ZWQgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4g
dGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoImRlZnMiKSB8fCB0aGlzLl9jcmVhdGVEZWZzKCk7
Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZUdyYWRpZW50ID0g
ZnVuY3Rpb24oc3RvcHMpIHsKKyAgICB2YXIgZ3JhZGllbnQgID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKHRoaXMuc3ZnTmFtZXNwYWNlLCAibGluZWFyR3JhZGllbnQiKTsKKyAgICAKKyAgICBp
ZiAodHlwZW9mIHRoaXMuX2dhZGllbnRzQ291bnQgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICB0
aGlzLl9nYWRpZW50c0NvdW50ID0gMDsgICAgCisgICAgZ3JhZGllbnQuc2V0QXR0cmlidXRlKCJp
ZCIsICJnYWRpZW50LSIgKyArK3RoaXMuX2dhZGllbnRzQ291bnQpOworICAgIAorICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgc3RvcHM7ICsraSkgeworICAgICAgICB2YXIgc3RvcCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUyh0aGlzLnN2Z05hbWVzcGFjZSwgInN0b3AiKTsKKyAgICAgICAgc3Rv
cC5zZXRBdHRyaWJ1dGUoIm9mZnNldCIsIGkgKiAxMDAgLyBzdG9wcyArICIlIik7CisgICAgICAg
IHN0b3Auc2V0QXR0cmlidXRlKCJzdG9wLWNvbG9yIiwgdGhpcy5yYW5kb21Db2xvcigpKTsKKyAg
ICAgICAgZ3JhZGllbnQuYXBwZW5kQ2hpbGQoc3RvcCk7CisgICAgfQorCisgICAgdGhpcy5lbnN1
cmVEZWZzSXNDcmVhdGVkKCkuYXBwZW5kQ2hpbGQoZ3JhZGllbnQpOworICAgIHJldHVybiBncmFk
aWVudDsKK30KKworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuX2NyZWF0ZURlZnMg
PSBmdW5jdGlvbigpIHsKKyAgICB2YXIgZGVmcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0
aGlzLnN2Z05hbWVzcGFjZSwiZGVmcyIpOworICAgIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUo
ZGVmcywgdGhpcy5lbGVtZW50LmZpcnN0Q2hpbGQpOworICAgIHJldHVybiBkZWZzOworfQorICAg
IAorQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuX2NyZWF0ZUNsaXBTdGFyID0gZnVu
Y3Rpb24oKSB7CisgICAgdmFyIGNsaXBQYXRoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHRo
aXMuc3ZnTmFtZXNwYWNlLCAiY2xpcFBhdGgiKTsKKyAgICBjbGlwUGF0aC5zZXRBdHRyaWJ1dGUo
ImlkIiwgInN0YXItY2xpcCIpOworICAgIGNsaXBQYXRoLnNldEF0dHJpYnV0ZSgiY2xpcFBhdGhV
bml0cyIsICJvYmplY3RCb3VuZGluZ0JveCIpOworICAgIAorICAgIHZhciBwYXRoID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKHRoaXMuc3ZnTmFtZXNwYWNlLCAicGF0aCIpOworICAgIHBhdGgu
c2V0QXR0cmlidXRlKCJkIiwgIk0uNTAsMEwuMzgsLjM4TDAsLjM4TC4zMCwuNjBMLjE4LDFMLjUw
LC43NUwuODIsMUwuNzAsLjYwTDEsLjM4TC42MiwuMzh6Iik7CisgICAgY2xpcFBhdGguYXBwZW5k
Q2hpbGQocGF0aCk7CisgICAgCisgICAgdGhpcy5lbnN1cmVEZWZzSXNDcmVhdGVkKCkuYXBwZW5k
Q2hpbGQoY2xpcFBhdGgpOworICAgIHJldHVybiBjbGlwUGF0aDsKK30KKworQm91bmNpbmdTdmdT
aGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpIHsKKyAgICBy
ZXR1cm4gbmV3IEJvdW5jaW5nU3ZnU2hhcGUodGhpcyk7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGVz
U3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xl
KSB7CisgICAgaWYgKCFwYXJ0aWNsZS5lbGVtZW50IHx8ICFwYXJ0aWNsZS5lbGVtZW50LnBhcmVu
dE5vZGUgfHwgcGFydGljbGUuZWxlbWVudC5wYXJlbnROb2RlICE9IHRoaXMuZWxlbWVudCkKKyAg
ICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICB2YXIgZmlsbCA9IHBhcnRpY2xlLmVsZW1lbnQu
Z2V0QXR0cmlidXRlKCJmaWxsIik7CisgICAgaWYgKGZpbGwuaW5kZXhPZigidXJsKCMiKSA9PSAw
KSB7CisgICAgICAgIHZhciBncmFkaWVudCA9IHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKGZp
bGwuc3Vic3RyaW5nKDQsIGZpbGwubGVuZ3RoIC0gMSkpOworICAgICAgICB0aGlzLmVuc3VyZURl
ZnNJc0NyZWF0ZWQoKS5yZW1vdmVDaGlsZChncmFkaWVudCk7CisgICAgfQorICAgIAorICAgIHRo
aXMuZWxlbWVudC5yZW1vdmVDaGlsZChwYXJ0aWNsZS5lbGVtZW50KTsKK30KKworZnVuY3Rpb24g
Qm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRh
YmxlLCBwcm9ncmVzc0JhcikgeworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwo
dGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9
CisKK0JvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
Qm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnU2hhcGVz
QmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2ht
YXJrOworCitCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2Ug
PSBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBlc1N0
YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50
LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpIHsKKyAgICB3aW5kb3cuYmVuY2htYXJrID0gbmV3IEJvdW5jaW5nU3ZnU2hhcGVz
QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
OworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9i
ZW5jaG1hcmsuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9yZXNvdXJjZXMvYmVuY2htYXJrLmNzcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvYmVuY2htYXJrLmNzcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE3IEBACitodG1sIHsKKyAgaGVpZ2h0OiAxMDAlOworfQorYm9keSB7
CisgIHdpZHRoOiAxMDAlOworICBoZWlnaHQ6IDEwMCU7CisgIG92ZXJmbG93OiBoaWRkZW47Cisg
IG1hcmdpbjogMDsKKyAgcGFkZGluZzogMDsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VhZWFlYTsK
K30KKworI3N0YWdlIHsKKyAgd2lkdGg6IDEwMCU7CisgIGhlaWdodDogMTAwJTsKKyAgYmFja2dy
b3VuZC1jb2xvcjogI2VhZWFlYTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9yZXNvdXJjZXMvYmVuY2htYXJrLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvYmVuY2htYXJrLmpzCShyZXZpc2lvbiAw
KQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9iZW5jaG1h
cmsuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODggQEAKK2Z1bmN0aW9uIEJlbmNobWFy
a1N0YXRlKHRlc3RJbnRlcnZhbCkgeworICAgIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0ID0gMDsK
KyAgICB0aGlzLl9zdGFnZUludGVydmFsID0gdGVzdEludGVydmFsIC8gQmVuY2htYXJrU3RhdGUu
c3RhZ2VzLkZJTklTSEVEOworfQorCitCZW5jaG1hcmtTdGF0ZS5zdGFnZXMgPSB7CisgICAgV0FS
TUlOR19VUDogMCwKKyAgICBTQU1QTElORzogMSwKKyAgICBGSU5JU0hFRDogMiwKKyAgICBtZXNz
YWdlczogWyAiV2FybWluZyB1cCIsICJTYW1wbGluZyIsICJGaW5pc2hlZCIgXQorfTsKKworQmVu
Y2htYXJrU3RhdGUucHJvdG90eXBlID0geworICAgIF90aW1lT2Zmc2V0IDogZnVuY3Rpb24oc3Rh
Z2UpIHsKKyAgICAgICAgcmV0dXJuIHN0YWdlICogdGhpcy5fc3RhZ2VJbnRlcnZhbDsKKyAgICB9
LAorICAgIF9tZXNzYWdlIDogZnVuY3Rpb24oc3RhZ2UsIHRpbWVPZmZzZXQpIHsKKyAgICAgICAg
aWYgKHN0YWdlID09IEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRCkKKyAgICAgICAgICAg
IHJldHVybiBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMubWVzc2FnZXNbc3RhZ2VdOworCisgICAgICAg
IHJldHVybiBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMubWVzc2FnZXNbc3RhZ2VdICsgIi4uLiAoIgor
ICAgICAgICAgICAgKyBNYXRoLmZsb29yKCh0aW1lT2Zmc2V0IC0gdGhpcy5fdGltZU9mZnNldChz
dGFnZSkpIC8gMTAwMCkgKyAiLyIKKyAgICAgICAgICAgICsgTWF0aC5mbG9vcigodGhpcy5fdGlt
ZU9mZnNldChzdGFnZSArIDEpIC0gdGhpcy5fdGltZU9mZnNldChzdGFnZSkpIC8gMTAwMCkgKyAi
KSI7CisgICAgfSwKKyAgICB1cGRhdGUgOiBmdW5jdGlvbihjdXJyZW50VGltZU9mZnNldCkgewor
ICAgICAgICB0aGlzLl9jdXJyZW50VGltZU9mZnNldCA9IGN1cnJlbnRUaW1lT2Zmc2V0OworICAg
IH0sCisgICAgc2FtcGxpbmdUaW1lT2Zmc2V0IDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVy
biB0aGlzLl90aW1lT2Zmc2V0KEJlbmNobWFya1N0YXRlLnN0YWdlcy5TQU1QTElORyk7CisgICAg
fSwKKyAgICBjdXJyZW50U3RhZ2UgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgZm9yICh2YXIgc3Rh
Z2UgPSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuV0FSTUlOR19VUDsgc3RhZ2UgPCBCZW5jaG1hcmtT
dGF0ZS5zdGFnZXMuRklOSVNIRUQ7ICsrc3RhZ2UpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9j
dXJyZW50VGltZU9mZnNldCA8IHRoaXMuX3RpbWVPZmZzZXQoc3RhZ2UgKyAxKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc3RhZ2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEJlbmNobWFy
a1N0YXRlLnN0YWdlcy5GSU5JU0hFRDsKKyAgICB9LAorICAgIGN1cnJlbnRNZXNzYWdlIDogZnVu
Y3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLl9tZXNzYWdlKHRoaXMuY3VycmVudFN0YWdl
KCksIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0KTsKKyAgICB9LAorICAgIGN1cnJlbnRQcm9ncmVz
cyA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQg
LyB0aGlzLl90aW1lT2Zmc2V0KEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRCk7CisgICAg
fQorfQorCitmdW5jdGlvbiBBbmltYXRvcihiZW5jaG1hcmspIHsKKyAgICB0aGlzLl9iZW5jaG1h
cmsgPSBiZW5jaG1hcms7CisgICAgdGhpcy5fZnJhbWVDb3VudCA9IDA7CisgICAgdGhpcy5fZHJv
cEZyYW1lQ291bnQgPSAxOworICAgIHRoaXMuX21lYXN1cmVGcmFtZUNvdW50ID0gMzsgCisgICAg
dGhpcy5fY3VycmVudFRpbWVPZmZzZXQgPSAwOworICAgIHRoaXMuX2VzdGltYXRvciA9IG5ldyBF
c3RpbWF0b3IoKTsKK30KKworQW5pbWF0b3IucHJvdG90eXBlID0geworICAgIHN0YXJ0IDogZnVu
Y3Rpb24oKSB7CisgICAgICAgIHRoaXMuX2ludGVydmFsSWQgPSBzZXRJbnRlcnZhbCh0aGlzLmFu
aW1hdGUuYmluZCh0aGlzKSwgMSk7CisgICAgfSwKKyAgICB0aW1lRGVsdGEgOiBmdW5jdGlvbigp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IC0gdGhpcy5fc3RhcnRU
aW1lT2Zmc2V0OworICAgIH0sCisgICAgYW5pbWF0ZSA6IGZ1bmN0aW9uKCkgeworICAgICAgICB2
YXIgY3VycmVudFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKKyAgICAgICAgCisgICAgICAg
IGlmICh0eXBlb2YgdGhpcy5fcmVmZXJlbmNlVGltZSA9PT0gInVuZGVmaW5lZCIpCisgICAgICAg
ICAgICB0aGlzLl9yZWZlcmVuY2VUaW1lID0gY3VycmVudFRpbWU7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0ID0gY3VycmVudFRpbWUgLSB0aGlzLl9y
ZWZlcmVuY2VUaW1lOworCisgICAgICAgIGlmICghdGhpcy5fZnJhbWVDb3VudCkKKyAgICAgICAg
ICAgIHRoaXMuX3N0YXJ0VGltZU9mZnNldCA9IHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0OworCisg
ICAgICAgIC8vIFN0YXJ0IG1lYXN1cmluZyBhZnRlciBkcm9wcGluZyBfZHJvcEZyYW1lQ291bnQg
ZnJhbWVzLgorICAgICAgICBpZiAodGhpcy5fZnJhbWVDb3VudCA9PSB0aGlzLl9kcm9wRnJhbWVD
b3VudCkKKyAgICAgICAgICAgIHRoaXMuX21lYXN1cmVUaW1lT2Zmc2V0ID0gdGhpcy5fY3VycmVu
dFRpbWVPZmZzZXQ7CisKKyAgICAgICAgKyt0aGlzLl9mcmFtZUNvdW50OworCisgICAgICAgIC8v
IERyb3AgX2Ryb3BGcmFtZUNvdW50IGZyYW1lcyBhbmQgbWVhc3VyZSB0aGUgYXZlcmFnZSBvZiBf
bWVhc3VyZUZyYW1lQ291bnQgZnJhbWVzLgorICAgICAgICBpZiAodGhpcy5fZnJhbWVDb3VudCA8
IHRoaXMuX2Ryb3BGcmFtZUNvdW50ICsgdGhpcy5fbWVhc3VyZUZyYW1lQ291bnQpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAvLyBHZXQgdGhlIGF2ZXJhZ2UgRlBTIG9mIF9t
ZWFzdXJlRnJhbWVDb3VudCBmcmFtZXMgb3ZlciBtZWFzdXJlVGltZURlbHRhLgorICAgICAgICB2
YXIgbWVhc3VyZVRpbWVEZWx0YSA9IHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IC0gdGhpcy5fbWVh
c3VyZVRpbWVPZmZzZXQ7CisgICAgICAgIHZhciBjdXJyZW50RnJhbWVSYXRlID0gTWF0aC5mbG9v
cigxMDAwIC8gKG1lYXN1cmVUaW1lRGVsdGEgLyB0aGlzLl9tZWFzdXJlRnJhbWVDb3VudCkpOwor
ICAgICAgICAgCisgICAgICAgIC8vIFVzZSBLYWxtYW4gZmlsdGVyIHRvIGdldCBhIG1vcmUgbm9u
LWZsdWN0dWF0aW5nIGZyYW1lIHJhdGUuCisgICAgICAgIGlmICh0aGlzLl9iZW5jaG1hcmsub3B0
aW9ucy5lc3RpbWF0ZWRGcmFtZVJhdGUpCisgICAgICAgICAgICBjdXJyZW50RnJhbWVSYXRlID0g
dGhpcy5fZXN0aW1hdG9yLmVzdGltYXRlKG1lYXN1cmVUaW1lRGVsdGEsIGN1cnJlbnRGcmFtZVJh
dGUpOworICAgICAgICAKKyAgICAgICAgLy8gQWRqdXN0IHRoZSB0ZXN0IHRvIHJlYWNoIHRoZSBk
ZXNpcmVkIEZQUy4KKyAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2JlbmNobWFyay51cGRhdGUo
dGhpcy5fY3VycmVudFRpbWVPZmZzZXQsIHRoaXMudGltZURlbHRhKCksIGN1cnJlbnRGcmFtZVJh
dGUpOworICAgICAgICAKKyAgICAgICAgLy8gU3RvcCB0aGUgYW5pbWF0b3IgaWYgdGhlIGJlbmNo
bWFyayBoYXMgZmluaXNoZWQuCisgICAgICAgIGlmICghcmVzdWx0ICYmIHR5cGVvZiB0aGlzLl9p
bnRlcnZhbElkICE9ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlz
Ll9pbnRlcnZhbElkKTsKKworICAgICAgICAvLyBTdGFydCB0aGUgbmV4dCBkcm9wL21lYXN1cmUg
Y3ljbGUuCisgICAgICAgIHRoaXMuX2ZyYW1lQ291bnQgPSAwOworICAgICAgICAKKyAgICAgICAg
Ly8gcmVzdWx0IG1heSBzdG9wIHRoZSBhbmltYXRvciBpZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
KSBoYXMgYmVlbiB1c2VkLgorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisgICAgYW5p
bWF0ZUxvb3AgOiBmdW5jdGlvbih0aW1lc3RhbXApIHsKKyAgICAgICAgaWYgKHRoaXMuYW5pbWF0
ZSgpKQorICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0ZUxvb3Au
YmluZCh0aGlzKSk7CisgICAgfQorfQorCitmdW5jdGlvbiBCZW5jaG1hcmsob3B0aW9ucykgewor
ICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zOworICAgIHRoaXMuX21ldGhvZCA9IHRoaXMuX29w
dGlvbnNbIm1ldGhvZCJdIHx8ICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiOworCisgICAgdGhpcy5v
cHRpb25zID0gb3B0aW9uczsKKyAgICB0aGlzLl9yZWNvcmRJbnRlcnZhbCA9IDIwMDsgICAgCisg
ICAgdGhpcy5faXNTYW1wbGluZyA9IGZhbHNlOworCisgICAgdmFyIGdhaW4gPSBwYXJzZUludCh0
aGlzLl9vcHRpb25zWyJnYWluIl0pIHx8IDE7CisgICAgdmFyIGxvd1ZhbHVlID0gLXBhcnNlSW50
KHRoaXMuX29wdGlvbnNbImFkZExpbWl0Il0pIHx8IDE7CisgICAgdmFyIGhpZ2hWYWx1ZSA9IHBh
cnNlSW50KHRoaXMuX29wdGlvbnNbInJlbW92ZUxpbWl0Il0pIHx8IDE7CisgICAgCisgICAgdGhp
cy5fY29udHJvbGxlciA9IG5ldyBDb250cm9sbGVyKGdhaW4sIG9wdGlvbnMuZnJhbWVSYXRlLCBs
b3dWYWx1ZSwgaGlnaFZhbHVlKTsKKyAgICB0aGlzLl9zYW1wbGVyID0gbmV3IFNhbXBsZXIoMik7
CisgICAgdGhpcy5fc3RhdGUgPSBuZXcgQmVuY2htYXJrU3RhdGUodGhpcy5vcHRpb25zLnRlc3RJ
bnRlcnZhbCk7ICAgIAorfQorCitCZW5jaG1hcmsucHJvdG90eXBlID0geworICAgIC8vIENhbGxl
ZCBmcm9tIHRoZSBsb2FkIGV2ZW50IGxpc3RlbmVyIG9yIGZyb20gdGhpcy5ydW4oKQorICAgIHN0
YXJ0IDogZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh0aGlzLl9tZXRob2QgPT0gInNldEludGVy
dmFsIikKKyAgICAgICAgICAgIHRoaXMuX2FuaW1hdG9yLnN0YXJ0KCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHRoaXMuX2FuaW1hdG9yLmFuaW1hdGVMb29wKCk7CisgICAgfSwKKyAgICAv
LyBDYWxsZWQgZnJvbSB0aGUgYW5pbWF0b3IgdG8gYWRqdXN0IHRoZSBjb21wbGV4aXR5IG9mIHRo
ZSB0ZXN0CisgICAgdXBkYXRlIDogZnVuY3Rpb24oY3VycmVudFRpbWVPZmZzZXQsIHRpbWVEZWx0
YSwgY3VycmVudEZyYW1lUmF0ZSkgeworICAgICAgICB0aGlzLl9zdGF0ZS51cGRhdGUoY3VycmVu
dFRpbWVPZmZzZXQpOworICAgICAgICAKKyAgICAgICAgdmFyIHN0YWdlID0gdGhpcy5fc3RhdGUu
Y3VycmVudFN0YWdlKCk7CisgICAgICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFn
ZXMuRklOSVNIRUQpIHsKKyAgICAgICAgICAgIHRoaXMuY2xlYXIoKTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtT
dGF0ZS5zdGFnZXMuU0FNUExJTkcgJiYgIXRoaXMuX2lzU2FtcGxpbmcpIHsKKyAgICAgICAgICAg
IHRoaXMuX3NhbXBsZXIuc3RhcnRTYW1wbGluZyh0aGlzLl9zdGF0ZS5zYW1wbGluZ1RpbWVPZmZz
ZXQoKSk7CisgICAgICAgICAgICB0aGlzLl9pc1NhbXBsaW5nID0gdHJ1ZTsKKyAgICAgICAgfQor
CisgICAgICAgIHZhciB0dW5lVmFsdWUgPSAwOworICAgICAgICBpZiAoISh0aGlzLl9pc1NhbXBs
aW5nICYmIHRoaXMub3B0aW9ucy5maXhUZXN0Q29tcGxleGl0eSkpIHsKKyAgICAgICAgICAgIC8v
IFRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBmcmFtZVJhdGUgYW5kIHRlc3QgY29tcGxleGl0eSBp
cyBpbnZlcnNlLXByb3BvcnRpb25hbCBzbyB3ZQorICAgICAgICAgICAgLy8gbmVlZCB0byB1c2Ug
dGhlIG5lZ2F0aXZlIG9mIENvbnRyb2xsZXIudHVuZSgpIHRvIGNoYW5nZSB0aGUgY29tcGxleGl0
eSBvZiB0aGUgdGVzdAorICAgICAgICAgICAgdHVuZVZhbHVlID0gLXRoaXMuX2NvbnRyb2xsZXIu
dHVuZShjdXJyZW50RnJhbWVSYXRlLCB0aW1lRGVsdGEgLyAxMDAwKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHZhciBjdXJyZW50Q29tcGxleGl0eSA9IHRoaXMudHVuZSh0dW5lVmFsdWUpOworICAg
ICAgICB0aGlzLnJlY29yZChjdXJyZW50VGltZU9mZnNldCwgY3VycmVudENvbXBsZXhpdHksIGN1
cnJlbnRGcmFtZVJhdGUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorICAgIHJlY29y
ZCA6IGZ1bmN0aW9uKGN1cnJlbnRUaW1lT2Zmc2V0LCBjdXJyZW50Q29tcGxleGl0eSwgY3VycmVu
dEZyYW1lUmF0ZSkgeworICAgICAgICB0aGlzLl9zYW1wbGVyLnNhbXBsZShjdXJyZW50VGltZU9m
ZnNldCwgW2N1cnJlbnRDb21wbGV4aXR5LCBjdXJyZW50RnJhbWVSYXRlXSk7CisgICAgICAgIAor
ICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3JlY29yZFRpbWVPZmZzZXQgPT0gInVuZGVmaW5lZCIp
CisgICAgICAgICAgICB0aGlzLl9yZWNvcmRUaW1lT2Zmc2V0ID0gY3VycmVudFRpbWVPZmZzZXQ7
CisKKyAgICAgICAgdmFyIHN0YWdlID0gdGhpcy5fc3RhdGUuY3VycmVudFN0YWdlKCk7CisgICAg
ICAgIGlmIChzdGFnZSAhPSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQgJiYgY3VycmVu
dFRpbWVPZmZzZXQgPCB0aGlzLl9yZWNvcmRUaW1lT2Zmc2V0ICsgdGhpcy5fcmVjb3JkSW50ZXJ2
YWwpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5zaG93UmVzdWx0cyh0aGlz
Ll9zdGF0ZS5jdXJyZW50TWVzc2FnZSgpLCB0aGlzLl9zdGF0ZS5jdXJyZW50UHJvZ3Jlc3MoKSk7
CisgICAgICAgIHRoaXMuX3JlY29yZFRpbWVPZmZzZXQgPSBjdXJyZW50VGltZU9mZnNldDsKKyAg
ICB9LAorICAgIHJ1biA6IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLnN0YXJ0KCk7CisKKyAg
ICAgICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICAgICAgdmFyIHNlbGYg
PSB0aGlzOworICAgICAgICBmdW5jdGlvbiByZXNvbHZlV2hlbkZpbmlzaGVkKCkgeworICAgICAg
ICAgICAgaWYgKHR5cGVvZiBzZWxmLl9zdGF0ZSAhPSAidW5kZWZpbmVkIiAmJiAoc2VsZi5fc3Rh
dGUuY3VycmVudFN0YWdlKCkgPT0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZS5yZXNvbHZlKHNlbGYuX3NhbXBsZXIpOworICAg
ICAgICAgICAgc2V0VGltZW91dChyZXNvbHZlV2hlbkZpbmlzaGVkLmJpbmQoc2VsZiksIDUwKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmVzb2x2ZVdoZW5GaW5pc2hlZCgpOworICAg
ICAgICByZXR1cm4gcHJvbWlzZTsKKyAgICB9Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzCShyZXZpc2lvbiAwKQor
KysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTg0IEBACit2YXIgTWF0cml4ID0ge307CisKK01hdHJp
eC5pbml0ID0gZnVuY3Rpb24obSwgbiwgdikgeworICAgIHJldHVybiBBcnJheShtICogbikuZmls
bCh2KTsKK30KKworTWF0cml4Lnplcm9zID0gZnVuY3Rpb24obSwgbikgeworICAgIHJldHVybiBN
YXRyaXguaW5pdChtLCBuLCAwKTsKK30KKworTWF0cml4Lm9uZXMgPSBmdW5jdGlvbihtLCBuKSB7
CisgICAgcmV0dXJuIE1hdHJpeC5pbml0KG0sIG4sIDEpOworfQorCitNYXRyaXguaWRlbnRpdHkg
PSBmdW5jdGlvbihuKSB7CisgICAgdmFyIG91dCA9IG5ldyBNYXRyaXguemVyb3Mobiwgbik7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpCisgICAgICAgIG91dFtpICogbiArIGldID0g
MTsKKyAgICByZXR1cm4gb3V0OworfQorCitNYXRyaXguc3RyID0gZnVuY3Rpb24oQSwgbiwgbSkg
eworICAgIHZhciBvdXQgPSAobSA+IDEgJiYgbiA+IDEgPyAiTWF0cml4WyIgKyBuICsgIiwgIiAr
IG0gOiAiVmVjdG9yWyIgKyBtICogbikgKyAiXSA9IFsiOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbiAqIG07ICsraSkgeworICAgICAgICBvdXQgKz0gQVtpXTsKKyAgICAgICAgaWYgKGkgPCBu
ICogbSAtIDEpCisgICAgICAgICAgICBvdXQgKz0gIiwgIjsKKyAgICB9ICAgICAgIAorICAgIHJl
dHVybiBvdXQgKyAiXSI7Cit9OworCitNYXRyaXgucG9zID0gZnVuY3Rpb24obSwgaSwgaikgewor
ICAgIHJldHVybiBtICogaSArIGo7Cit9CisKK01hdHJpeC5hZGQgPSBmdW5jdGlvbihBLCBCLCBu
LCBtKSB7CisgICAgdmFyIG91dCA9IE1hdHJpeC56ZXJvcyhuLCBtKTsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG4gKiBtOyArK2kpCisgICAgICAgIG91dFtpXSA9IEFbaV0gKyBCW2ldOworICAg
IHJldHVybiBvdXQ7Cit9CisKK01hdHJpeC5zdWJ0cmFjdCA9IGZ1bmN0aW9uKEEsIEIsIG4sIG0p
IHsKKyAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIG0pOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbiAqIG07ICsraSkKKyAgICAgICAgb3V0W2ldID0gQVtpXSAtIEJbaV07CisgICAgcmV0
dXJuIG91dDsKK30KKworTWF0cml4LnNjYWxlID0gZnVuY3Rpb24ocywgQSwgbiwgbSkgeworICAg
IHZhciBvdXQgPSBNYXRyaXguemVyb3MobiwgbSk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBu
ICogbTsgKytpKQorICAgICAgICBvdXRbaV0gPSBzICogQVtpXTsKKyAgICByZXR1cm4gb3V0Owor
fQorCitNYXRyaXgudHJhbnNwb3NlID0gZnVuY3Rpb24oQSwgbiwgbSkgeworICAgIHZhciBvdXQg
PSBNYXRyaXguemVyb3MobSwgbik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsK
KyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBtOyArK2opCisgICAgICAgICAgICBvdXRbTWF0
cml4LnBvcyhuLCBpLCBqKV0gPSBBW01hdHJpeC5wb3MobSwgaiwgaSldOworICAgIH0gICAgICAg
CisgICAgcmV0dXJuIG91dDsKK30KKworTWF0cml4Lm11bHRpcGx5ID0gZnVuY3Rpb24oQSwgQiwg
biwgbSwgcCkgeworICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3MobiwgcCk7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwOyAr
K2opIHsKKyAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbTsgKytrKSB7CisgICAgICAg
ICAgICAgICAgb3V0W01hdHJpeC5wb3MocCwgaSwgaildICs9IEFbTWF0cml4LnBvcyhtLCBpLCBr
KV0gKiBCW01hdHJpeC5wb3MocCwgaywgaildOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiBvdXQ7Cit9CisKK3ZhciBWZWN0b3IzID0ge307CisKK1ZlY3RvcjMu
emVyb3MgPSBmdW5jdGlvbigpIHsgcmV0dXJuIE1hdHJpeC56ZXJvcygxLCAzKTsgfQorVmVjdG9y
My5vbmVzID0gZnVuY3Rpb24oKSB7IHJldHVybiBNYXRyaXgub25lcygxLCAzKTsgfQorVmVjdG9y
My5zdHIgPSBmdW5jdGlvbih2KSB7IHJldHVybiBNYXRyaXguc3RyKHYsIDEsIDMpOyB9CitWZWN0
b3IzLmFkZCA9IGZ1bmN0aW9uKHYsIHcpIHsgcmV0dXJuIE1hdHJpeC5hZGQodiwgdywgMSwgMyk7
IH0KK1ZlY3RvcjMuc3VidHJhY3QgPSBmdW5jdGlvbih2LCB3KSB7IHJldHVybiBNYXRyaXguc3Vi
dHJhY3QodiwgdywgMSwgMyk7IH0KK1ZlY3RvcjMuc2NhbGUgPSBmdW5jdGlvbihzLCB2KSB7IHJl
dHVybiBNYXRyaXguc2NhbGUocywgdiwgMSwgMyk7IH0KK1ZlY3RvcjMubXVsdGlwbHlNYXRyaXgz
ID0gZnVuY3Rpb24odiwgQSkgeyByZXR1cm4gTWF0cml4Lm11bHRpcGx5KHYsIEEsIDEsIDMsIDMp
OyB9CitWZWN0b3IzLm11bHRpcGx5VmVjdG9yMyA9IGZ1bmN0aW9uKHYsIHcpIHsKKyAgICB2YXIg
b3V0ID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7ICsraSkKKyAgICAgICAgb3V0ICs9
IHZbaV0gKiB3W2ldOworICAgIHJldHVybiBvdXQ7Cit9CisKK3ZhciBNYXRyaXgzID0ge307CisK
K01hdHJpeDMuemVyb3MgPSBmdW5jdGlvbigpIHsgcmV0dXJuIE1hdHJpeC56ZXJvcygzLCAzKTsg
fQorTWF0cml4My5pZGVudGl0eSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gTWF0cml4LmlkZW50aXR5
KDMsIDMpOyB9CitNYXRyaXgzLnN0ciA9IGZ1bmN0aW9uKEEpIHsgcmV0dXJuIE1hdHJpeC5zdHIo
QSwgMywgMyk7IH0KK01hdHJpeDMucG9zID0gZnVuY3Rpb24oaSwgaikgeyByZXR1cm4gTWF0cml4
LnBvcygzLCBpLCBqKTsgfQorTWF0cml4My5hZGQgPSBmdW5jdGlvbihBLCBCKSB7IHJldHVybiBN
YXRyaXguYWRkKEEsIEIsIDMsIDMpOyB9CitNYXRyaXgzLnN1YnRyYWN0ID0gZnVuY3Rpb24oQSwg
QikgeyByZXR1cm4gTWF0cml4LnN1YnRyYWN0KEEsIEIsIDMsIDMpOyB9CitNYXRyaXgzLnNjYWxl
ID0gZnVuY3Rpb24ocywgQSkgeyByZXR1cm4gTWF0cml4LnNjYWxlKHMsIEEsIDMsIDMpOyB9CitN
YXRyaXgzLnRyYW5zcG9zZSA9IGZ1bmN0aW9uKEEpIHsgcmV0dXJuIE1hdHJpeC50cmFuc3Bvc2Uo
QSwgMywgMyk7IH0KK01hdHJpeDMubXVsdGlwbHlNYXRyaXgzID0gZnVuY3Rpb24oQSwgQikgeyBy
ZXR1cm4gTWF0cml4Lm11bHRpcGx5KEEsIEIsIDMsIDMsIDMpOyB9CitNYXRyaXgzLm11bHRpcGx5
VmVjdG9yMyA9IGZ1bmN0aW9uKEEsIHYpIHsgcmV0dXJuIE1hdHJpeC5tdWx0aXBseShBLCB2LCAz
LCAzLCAxKTsgfQorCitmdW5jdGlvbiBDb250cm9sbGVyKEssIHlzcCwgdWxvdywgdWhpZ2gpIHsK
KyAgICB0aGlzLl95c3AgPSB5c3A7CisKKyAgICB0aGlzLl9UZCA9IDU7CisgICAgdGhpcy5fVGkg
PSAxNTsKKworICAgIHRoaXMuX0twID0gSzsKKyAgICB0aGlzLl9LZCA9IEsgLyB0aGlzLl9UZDsK
KyAgICB0aGlzLl9LaSA9IEsgLyB0aGlzLl9UaTsKKworICAgIHRoaXMuX2VvbGQgPSAwOworICAg
IHRoaXMuX0kgPSAwOworfQorCitDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKKyAgICBfc2F0IDog
ZnVuY3Rpb24odiwgbG93LCBoaWdoKSB7CisgICAgICAgIHJldHVybiB2IDwgbG93ID8gbG93IDog
KHYgPiBoaWdoID8gaGlnaCA6IHYpOworICAgIH0sCisgICAgdHVuZSA6IGZ1bmN0aW9uKHksIGgp
IHsKKyAgICAgICAgLy8gQ3VycmVudCBlcnJvcgorICAgICAgICB2YXIgZSA9IHRoaXMuX3lzcCAt
IHk7CisKKyAgICAgICAgLy8gUHJvcG9ydGlvbmFsIHRlcm0KKyAgICAgICAgdmFyIFAgPSB0aGlz
Ll9LcCAqIGU7CisgICAgICAgIAorICAgICAgICAvLyBEZXJpdmF0aXZlIHRlcm0gaXMgdGhlIHNs
b3BlIG9mIHRoZSBjdXJ2ZSBhdCB0aGUgY3VycmVudCB0aW1lCisgICAgICAgIHZhciBEID0gdGhp
cy5fS2QgKiAoZSAtIHRoaXMuX2VvbGQpIC8gaDsKKworICAgICAgICAvLyBJbnRlZ3JhbCB0ZXJt
IGlzIHRoZSBhcmVhIHVuZGVyIHRoZSBjdXJ2ZSBzdGFydGluZyBmcm9tIHRoZSBiZWdpbmluZyB0
aWxsIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgICAgdGhpcy5fSSArPSB0aGlzLl9LaSAqICgoZSAr
IHRoaXMuX2VvbGQpIC8gMikgKiBoOworCisgICAgICAgIC8vIHBpZCBjb250cm9sbGVyIHZhbHVl
CisgICAgICAgIHZhciB2ID0gUCArIEQgKyB0aGlzLl9JOworICAgICAgICAKKyAgICAgICAgLy8g
QXZvaWQgc3Bpa2VzIGJ5IGFwcGx5aW5nIGFjdHVhdG9yIHNhdHVhcnRpb24KKyAgICAgICAgdmFy
IHUgPSB0aGlzLl9zYXQodiwgdGhpcy5fdWxvdywgdGhpcy5fdWhpZ2gpOyAgICAgICAgCisKKyAg
ICAgICAgdGhpcy5fZW9sZCA9IGU7CisgICAgICAgIHJldHVybiB1OworICAgIH0KK30KKworZnVu
Y3Rpb24gRXN0aW1hdG9yKCkgeworICAgIHRoaXMuX21hdEEgPSBNYXRyaXgzLmlkZW50aXR5KCk7
CisgICAgCisgICAgdGhpcy5fdmVjSCA9IFZlY3RvcjMuemVyb3MoKTsKKyAgICB0aGlzLl92ZWNI
WzBdID0gMTsKKyAgICAKKyAgICB0aGlzLl9tYXRRID0gTWF0cml4My5pZGVudGl0eSgpOworICAg
IHRoaXMuX1IgPSAxMDAwOworICAgIAorICAgIHRoaXMuX3ZlY1hfZXN0ID0gVmVjdG9yMy5vbmVz
KCk7CisgICAgdGhpcy5fbWF0UF9lc3QgPSBNYXRyaXgzLnplcm9zKCk7Cit9CisKK0VzdGltYXRv
ci5wcm90b3R5cGUgPSB7CisgICAgZXN0aW1hdGUgOiBmdW5jdGlvbih0aW1lRGVsdGEsIGN1cnJl
bnQpIHsKKyAgICAgICAgLy8gVXBkYXRlIHRoZSB0cmFuc2l0aW9uIG1hdHJpeAorICAgICAgICB0
aGlzLl9tYXRBW01hdHJpeDMucG9zKDAsIDIpXSA9IDE7CisKKyAgICAgICAgLy8gUHJlZGljdGVk
IHN0YXRlIGFuZCBjb3ZhcmlhbmNlCisgICAgICAgIHZhciB2ZWNYX3ByZCA9IE1hdHJpeDMubXVs
dGlwbHlWZWN0b3IzKHRoaXMuX21hdEEsIHRoaXMuX3ZlY1hfZXN0KTsKKyAgICAgICAgdmFyIG1h
dFBfcHJkID0gTWF0cml4My5hZGQoTWF0cml4My5tdWx0aXBseU1hdHJpeDMoTWF0cml4My5tdWx0
aXBseU1hdHJpeDModGhpcy5fbWF0QSwgdGhpcy5fbWF0UF9lc3QpLCBNYXRyaXgzLnRyYW5zcG9z
ZSh0aGlzLl9tYXRBKSksIHRoaXMuX21hdFEpOworCisgICAgICAgIC8vIEVzdGltYXRpb24KKyAg
ICAgICAgdmFyIHZlY0IgPSBWZWN0b3IzLm11bHRpcGx5TWF0cml4Myh0aGlzLl92ZWNILCBNYXRy
aXgzLnRyYW5zcG9zZShtYXRQX3ByZCkpOworICAgICAgICB2YXIgUyA9IFZlY3RvcjMubXVsdGlw
bHlWZWN0b3IzKHZlY0IsIHRoaXMuX3ZlY0gpICsgdGhpcy5fUjsKKworICAgICAgICB2YXIgdmVj
R2FpbiA9IFZlY3RvcjMuc2NhbGUoMS9TLCB2ZWNCKTsKKyAgICAgICAgCisgICAgICAgIC8vIEVz
dGltYXRlZCBzdGF0ZSBhbmQgY292YXJpYW5jZQorICAgICAgICB0aGlzLl92ZWNYX2VzdCA9IFZl
Y3RvcjMuYWRkKHZlY1hfcHJkLCBWZWN0b3IzLnNjYWxlKGN1cnJlbnQgLSBWZWN0b3IzLm11bHRp
cGx5VmVjdG9yMyh0aGlzLl92ZWNILCB2ZWNYX3ByZCksIHZlY0dhaW4pKTsKKyAgICAgICAgdGhp
cy5fbWF0UF9lc3QgPSBNYXRyaXgzLnN1YnRyYWN0KG1hdFBfcHJkLCBNYXRyaXgzLnNjYWxlKFZl
Y3RvcjMubXVsdGlwbHlWZWN0b3IzKHZlY0dhaW4sIHRoaXMuX3ZlY0gpLCBtYXRQX3ByZCkpOwor
CisgICAgICAgIC8vIENvbXB1dGUgdGhlIGVzdGltYXRlZCBtZWFzdXJlbWVudAorICAgICAgICBy
ZXR1cm4gVmVjdG9yMy5tdWx0aXBseVZlY3RvcjModGhpcy5fdmVjSCwgIHRoaXMuX3ZlY1hfZXN0
KTsKKyAgICB9Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVz
b3VyY2VzL3N0YWdlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNDIgQEAKK2Z1bmN0aW9uIFN0YWdlKGVsZW1lbnQsIG9wdGlvbnMpIHsKKyAgICB0
aGlzLmVsZW1lbnQgPSBlbGVtZW50OworfQorCitTdGFnZS5wcm90b3R5cGUgPSB7CisgICAgc2l6
ZSA6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVk
U3R5bGUodGhpcy5lbGVtZW50KTsKKyAgICAgICAgdmFyIHBhZGRpbmcgPSBuZXcgSW5zZXRzKAor
ICAgICAgICAgICAgcGFyc2VGbG9hdChzdHlsZXMucGFkZGluZ1RvcCksCisgICAgICAgICAgICBw
YXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nUmlnaHQpLAorICAgICAgICAgICAgcGFyc2VGbG9hdChz
dHlsZXMucGFkZGluZ0JvdHRvbSksCisgICAgICAgICAgICBwYXJzZUZsb2F0KHN0eWxlcy5wYWRk
aW5nVG9wKSk7CisgICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy5lbGVtZW50LmNsaWVudFdp
ZHRoIC0gcGFkZGluZy53aWR0aCgpLCB0aGlzLmVsZW1lbnQuY2xpZW50SGVpZ2h0IC0gcGFkZGlu
Zy5oZWlnaHQoKSk7CisgICAgfSwKKyAgICBjbGVhciA6IGZ1bmN0aW9uKCkgeworICAgICAgICBy
ZXR1cm4gdGhpcy50dW5lKC10aGlzLnR1bmUoMCkpOworICAgIH0sCisgICAgcmFuZG9tIDogZnVu
Y3Rpb24obWluLCBtYXgpIHsKKyAgICAgICAgcmV0dXJuIChNYXRoLnJhbmRvbSgpICogKG1heCAt
IG1pbikpICsgbWluOworICAgIH0sCisgICAgcmFuZG9tSW50IDogZnVuY3Rpb24obWluLCBtYXgp
IHsKKyAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy5yYW5kb20obWluLCBtYXgpKTsKKyAg
ICB9LAorICAgIHJhbmRvbVBvc2l0aW9uIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBtYXgg
PSB0aGlzLnNpemUoKS5zdWJ0cmFjdCh0aGlzLnBhcnRpY2xlU2l6ZSk7CisgICAgICAgIHJldHVy
biBuZXcgUG9pbnQodGhpcy5yYW5kb21JbnQoMCwgbWF4LngpLCB0aGlzLnJhbmRvbUludCgwLCBt
YXgueSkpOworICAgIH0sCisgICAgcmFuZG9tVmVsb2NpdHkgOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMucmFuZG9tKHRoaXMuX21heFZlbG9jaXR5IC8gOCwgdGhpcy5fbWF4VmVs
b2NpdHkpOworICAgIH0sCisgICAgcmFuZG9tQW5nbGUgOiBmdW5jdGlvbigpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMucmFuZG9tKDAsIE1hdGguUEkgKiAyKTsKKyAgICB9LAorICAgIHJhbmRvbUNv
bG9yIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBtaW4gPSAzMjsKKyAgICAgICAgdmFyIG1h
eCA9IDI1NiAtIDMyOworICAgICAgICByZXR1cm4gIiMiCisgICAgICAgICAgICArIHRoaXMucmFu
ZG9tSW50KG1pbiwgbWF4KS50b1N0cmluZygxNikKKyAgICAgICAgICAgICsgdGhpcy5yYW5kb21J
bnQobWluLCBtYXgpLnRvU3RyaW5nKDE2KQorICAgICAgICAgICAgKyB0aGlzLnJhbmRvbUludCht
aW4sIG1heCkudG9TdHJpbmcoMTYpOworICAgIH0KK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzCShy
ZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNl
cy91dGlsaXRpZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAord2luZG93LmJl
bmNobWFya0NsaWVudCA9IHsKKyAgICBfcGFyc2UgOiBmdW5jdGlvbihzdHIsIHNlcCkgeworICAg
ICAgICB2YXIgb3V0cHV0ID0ge307CisgICAgICAgIHN0ci5zcGxpdChzZXApLmZvckVhY2goZnVu
Y3Rpb24ocGFydCkgeworICAgICAgICAgICAgdmFyIGl0ZW0gPSBwYXJ0LnNwbGl0KCI9Iik7Cisg
ICAgICAgICAgICB2YXIgdmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQoaXRlbVsxXSk7CisgICAg
ICAgICAgICBpZiAodmFsdWVbMF0gPT0gJ1wnJyApCisgICAgICAgICAgICAgICAgb3V0cHV0W2l0
ZW1bMF1dID0gdmFsdWUuc3Vic3RyKDEsIHZhbHVlLmxlbmd0aCAtIDIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIG91dHB1dFtpdGVtWzBdXSA9IHZhbHVlOyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIG91dHB1dDsKKyAgICB9LAorICAg
IHBhcnNlUGFyYW1ldGVycyA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5fcGFy
c2Uod2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHIoMSksICImIik7CisgICAgfSwKKyAgICBw
YXJzZUFyZ3VtZW50cyA6IGZ1bmN0aW9uKHN0cikgeworICAgICAgICByZXR1cm4gdGhpcy5fcGFy
c2Uoc3RyLCAiICIpOworICAgIH0sCisgICAgZXh0ZW5kT2JqZWN0IDogZnVuY3Rpb24ob2JqMSwg
b2JqMikgeworICAgICAgICBmb3IgKHZhciBhdHRybmFtZSBpbiBvYmoyKQorICAgICAgICAgICAg
b2JqMVthdHRybmFtZV0gPSBvYmoyW2F0dHJuYW1lXTsKKyAgICAgICAgcmV0dXJuIG9iajE7Cisg
ICAgfSwKKyAgICBjb3B5T2JqZWN0IDogZnVuY3Rpb24ob2JqKSB7CisgICAgICAgIHJldHVybiB0
aGlzLmV4dGVuZE9iamVjdCh7fSwgb2JqKTsKKyAgICB9LAorICAgIG1lcmdlT2JqZWN0cyA6IGZ1
bmN0aW9uKG9iajEsIG9iajIpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kT2JqZWN0KHRo
aXMuY29weU9iamVjdChvYmoxKSwgb2JqMik7CisgICAgfQorfTsKKworLy8gVGhpcyBldmVudCBs
aXN0ZW5lciBydW5zIHRoZSB0ZXN0IGlmIGl0IGlzIGxvYWRlZCBvdXRzaWRlIHRoZSBiZW5jaG1h
cmsgcnVubmVyLgord2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsK
KyAgICBpZiAod2luZG93LnNlbGYgIT09IHdpbmRvdy50b3ApCisgICAgICAgIHJldHVybjsKKyAg
ICB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZShudWxsLCBudWxsLCAzMDAwMCwgNTAsIG51
bGwsIG51bGwpOworICAgIHdpbmRvdy5iZW5jaG1hcmsuc3RhcnQoKTsKK30pOworCisvLyBUaGlz
IGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBzdWl0ZSBjb250cm9sbGVyIHJ1bi1jYWxsYmFj
ayB3aGVuIHJ1bm5pbmcgdGhlIGJlbmNobWFyayBydW5uZXIuCit3aW5kb3cucnVuQmVuY2htYXJr
ID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jh
cikgeworICAgIHZhciBtZXJnZU9wdGlvbnMgPSB3aW5kb3cuYmVuY2htYXJrQ2xpZW50Lm1lcmdl
T2JqZWN0cyhvcHRpb25zLCB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LnBhcnNlUGFyYW1ldGVycygp
KTsKKyAgICB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZShzdWl0ZSwgdGVzdCwgbWVyZ2VP
cHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIHJldHVybiB3aW5kb3cuYmVu
Y2htYXJrLnJ1bigpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L3Jlc291cmNlcy95aW4teWFuZy5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5zdmcJKHJldmlzaW9uIDApCisrKyBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnN2Zwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACis8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayIgdmlld0JveD0iMCAwIDIwMCAyMDAiPg0KKyAgPGRlZnM+DQorICAgIDxj
bGlwUGF0aCBpZD0ibGVmdC1oYWxmIj4NCisgICAgICA8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9
IjIwMCIvPg0KKyAgICA8L2NsaXBQYXRoPg0KKyAgICA8Y2xpcFBhdGggaWQ9InJpZ2h0LWhhbGYi
Pg0KKyAgICAgIDxyZWN0IHg9IjEwMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIyMDAiLz4NCisgICAg
PC9jbGlwUGF0aD4NCisgIDwvZGVmcz4NCisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjEwMCIgcj0i
OTgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iZ3JlZW4iIHN0cm9rZS13aWR0aD0iMiIvPg0KKyAgPGNp
cmNsZSBjeD0iMTAwIiBjeT0iMTAwIiByPSI5OCIgZmlsbD0id2hpdGUiIGNsaXAtcGF0aD0idXJs
KCNsZWZ0LWhhbGYpIi8+DQorICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSIxMDAiIHI9Ijk4IiBmaWxs
PSJncmVlbiIgY2xpcC1wYXRoPSJ1cmwoI3JpZ2h0LWhhbGYpIi8+DQorICA8Y2lyY2xlIGN4PSIx
MDAiIGN5PSI1MCIgIHI9IjQ5IiBmaWxsPSJncmVlbiIvPg0KKyAgPGNpcmNsZSBjeD0iMTAwIiBj
eT0iMTQ4IiByPSI0OSIgZmlsbD0id2hpdGUiLz4NCisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjUw
IiAgcj0iMTAiIGZpbGw9IndoaXRlIi8+ICAgIA0KKyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iMTQ4
IiByPSIxMCIgZmlsbD0iZ3JlZW4iLz4NCis8L3N2Zz4NCkluZGV4OiBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1s
CShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQv
bGF5ZXJpbmctdGV4dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlPgorICAgIC50ZXh0LWxheWVyIHsK
KyAgICAgIGZvbnQtc2l6ZTogMTBweDsKKyAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAg
IGxlZnQ6IDBweDsKKyAgICAgIHRvcDogMHB4OworICAgICAgbWFyZ2luOiA1cHg7CisgICAgICBw
YWRkaW5nOiA1cHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICB9
CisgIDwvc3R5bGU+ICAKKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIg
aHJlZj0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5jc3MiPgorICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PiAgCisgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYmVuY2ht
YXJrLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMu
anMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3Nj
cmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9sYXllcmluZy10ZXh0LmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorICA8ZGl2IGlkPSJzdGFnZSI+PC9kaXY+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNv
dXJjZXMvbGF5ZXJpbmctdGV4dC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qcwkocmV2aXNpb24g
MCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9s
YXllcmluZy10ZXh0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjU2IEBACitmdW5jdGlv
biBMYXllcmluZ1RleHRBbmltYXRvcihiZW5jaG1hcmspIHsKKyAgICBBbmltYXRvci5jYWxsKHRo
aXMsIGJlbmNobWFyayk7Cit9OworCitMYXllcmluZ1RleHRBbmltYXRvci5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKEFuaW1hdG9yLnByb3RvdHlwZSk7CitMYXllcmluZ1RleHRBbmltYXRvci5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBMYXllcmluZ1RleHRBbmltYXRvcjsKKworTGF5ZXJpbmdU
ZXh0QW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAoIUFu
aW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLmFuaW1hdGUodGhpcy50aW1lRGVsdGEoKSk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIExheWVyaW5nVGV4dFN0YWdlKGVsZW1l
bnQsIG9wdGlvbnMpIHsKKyAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOwor
ICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGhpcy5lbGVtZW50OworICAgIHRoaXMuX3Rl
eHRFbGVtZW50cyA9IFtdOworICAgIHRoaXMuX3RleHRJdGVtSW5kZXggPSAwOworICAgIHRoaXMu
X2NvbG9ySW5kZXggPSAwOworfQorCitMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXMgPSBbCisg
ICAgIjxkaXYgaWQ9J2lkXzAwJyBjbGFzcz0ndGV4dC1sYXllcic+IiwKKyAgICAgICAgIjxoMiBp
ZD0naWRfMDEnPkN1c3RvbWl6ZWQgc3R5bGVzPC9oMj4iLAorICAgICAgICAiPHAgaWQ9J2lkXzAy
Jz5JZiB5b3Ugd2FudCBmb3JtYXR0aW5nIGNob2ljZXMgdGhhdCBhcmUgbm90IGF2YWlsYWJsZSBm
cm9tIHRoZSBidWlsdC1pbiBzdHlsZXMsIFF1aWNrIFN0eWxlIHNldHMsIGFuZCB0aGVtZXMsIHlv
dSBjYW4gY3JlYXRlIGN1c3RvbSBzdHlsZXMgdG8gc3VpdCB5b3VyIG5lZWRzLjwvcD4iLAorICAg
ICAgICAiPHAgaWQ9J2lkXzAzJz5UaGUgZWFzaWVzdCB3YXkgdG8gY3JlYXRlIGEgY3VzdG9tIHN0
eWxlIGlzIHRvIG1vZGlmeSBhIGJ1aWx0LWluIHN0eWxlIGFuZCB0aGVuIHNhdmUgaXQgYXMgYSBu
ZXcgc3R5bGUuPC9wPiIsCisgICAgICAgICI8cCBpZD0naWRfMDQnPkZvciBleGFtcGxlLCB5b3Ug
bWlnaHQgd2FudCB0byBmb3JtYXQgYSBwYXJhZ3JhcGggb2YgcXVvdGVkIG1hdGVyaWFsIHdpdGgg
YSBoYWxmLWluY2ggaW5kZW50IGZyb20gdGhlIGxlZnQgYW5kIHJpZ2h0IG1hcmdpbnMsIHNpbmds
ZSBzcGFjZWQuIFRoZXJlIGlzIG5vIGJ1aWx0LWluIHN0eWxlIHRvIGFjY29tbW9kYXRlIHRoaXMs
IGJ1dCB5b3UgY2FuIGNyZWF0ZSBhIGN1c3RvbSBzdHlsZSBieSBkb2luZyB0aGUgZm9sbG93aW5n
OjwvcD4iLAorICAgICAgICAiPG9sIHR5cGU9JzEnIGlkPSdpZF8wNSc+IiwKKyAgICAgICAgICAg
ICI8bGkgaWQ9J2lkXzA2Jz48cD5DbGljayBpbiB0aGUgcGFyYWdyYXBoIHlvdSB3YW50IHRvIGZv
cm1hdC48L3A+PC9saT4iLAorICAgICAgICAgICAgIjxsaSBpZD0naWRfMDcnPjxwPk9uIHRoZSA8
Yj5Ib21lPC9iPiB0YWIsIGNsaWNrIHRoZSA8Yj5QYXJhZ3JhcGg8L2I+IERpYWxvZyBCb3ggTGF1
bmNoZXIuPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzA4Jz48cD5JbiB0aGUg
PGI+SW5kZW50YXRpb248L2I+IHNlY3Rpb24sIHR5cGUgPGIgY2xhc3M9J29jcExpdGVyYWwnPjAu
NSc8L2I+IGluIHRoZSA8Yj5MZWZ0PC9iPiBhbmQgPGI+UmlnaHQ8L2I+IGJveGVzLjwvcD48L2xp
PiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8wOSc+PHA+SW4gdGhlIDxiPlNwYWNpbmc8L2I+
IHNlY3Rpb24sIGluIHRoZSA8Yj5MaW5lIHNwYWNpbmc8L2I+IGxpc3QsIGNsaWNrIDxiPlNpbmds
ZTwvYj4uPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzEwJz48cD5DbGljayA8
Yj5PSzwvYj4uPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzExJz48cD5SaWdo
dC1jbGljayBpbiB0aGUgcGFyYWdyYXBoLCBwb2ludCB0byA8Yj5TdHlsZXM8L2I+LCBhbmQgdGhl
biBjbGljayA8Yj5TYXZlIFNlbGVjdGlvbiBhcyBhIE5ldyBRdWljayBTdHlsZTwvYj4uPC9wPjwv
bGk+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzEyJz48cD5JbiB0aGUgPGI+TmFtZTwvYj4g
Ym94LCB0eXBlIGEgbmFtZSBmb3IgdGhlIHN0eWxlLCBzdWNoIGFzIDxiPkJsb2NrIHF1b3RlPC9i
Pi4gPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzEzJz48cD5JZiB5b3Ugd2Fu
dCB0aGUgc3R5bGUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGdhbGxlcnkgb2Ygc3R5bGVzIG9uIHRo
ZSA8Yj5Ib21lPC9iPiB0YWIsIGFuZCBpZiB5b3Ugd2FudCB0aGUgc3R5bGUgdG8gYmUgYSBsaW5r
ZWQgc3R5bGUsIGNsaWNrIDxiPk9LPC9iPi48L3A+PC9saT4iLAorICAgICAgICAgICAgIjxsaSBp
ZD0naWRfMTQnPiIsCisgICAgICAgICAgICAgICAgIjxwIGlkPSdpZF8xNSc+SWYgeW91IGRvbid0
IHdhbnQgdGhlIHN0eWxlIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBnYWxsZXJ5LCBvciBpZiB5b3Ug
d2FudCB0aGUgc3R5bGUgdG8gYmUgZWl0aGVyIGEgcGFyYWdyYXBoIG9yIGEgY2hhcmFjdGVyIHN0
eWxlLCBjbGljayA8Yj5Nb2RpZnk8L2I+IGFuZCBkbyBvbmUgb3IgYm90aCBvZiB0aGUgZm9sbG93
aW5nOjwvcD4iLAorICAgICAgICAgICAgICAgICI8dWwgaWQ9J2lkXzE2Jz4iLAorICAgICAgICAg
ICAgICAgICAgICAiPGxpIGlkPSdpZF8xNyc+PHA+QXQgdGhlIGJvdHRvbSBvZiB0aGUgZGlhbG9n
IGJveCwgY2xlYXIgdGhlIDxiPkFkZCB0byBRdWljayBTdHlsZTwvYj4gbGlzdCBib3guPC9wPjwv
bGk+IiwKKyAgICAgICAgICAgICAgICAgICAgIjxsaSBpZD0naWRfMTgnPjxwPkluIHRoZSA8Yj5T
dHlsZSB0eXBlPC9iPiBsaXN0LCBjbGljayA8Yj5QYXJhZ3JhcGg8L2I+IG9yIDxiPkNoYXJhY3Rl
cjwvYj4uPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICAgICAiPC91bD4iLAorICAgICAgICAgICAg
IjwvbGk+IiwKKyAgICAgICAgIjwvb2w+IiwKKyAgICAgICAgIjxwIGlkPSdpZF8xOSc+SWYgeW91
IHN3aXRjaCB0byBhIGRpZmZlcmVudCBRdWljayBTdHlsZSBzZXQsIHlvdSBtYXkgbmVlZCB0byBh
ZGp1c3QgdGhlIHNldHRpbmdzIG9mIHlvdXIgY3VzdG9tIHN0eWxlLiBJbiB0aGUgZXhhbXBsZSBo
ZXJlLCBpZiB5b3UgY3JlYXRlIHRoZSBCbG9jayBxdW90ZSBzdHlsZSB3aGlsZSB0aGUgV29yZCAy
MDA3IFF1aWNrIFN0eWxlIHNldCBpcyBhcHBsaWVkLCBhbmQgdGhlbiB5b3Ugc3dpdGNoIHRvIHRo
ZSBUcmFkaXRpb25hbCBRdWljayBTdHlsZSBzZXQsIHlvdSBjYW4gY2hhbmdlIHRoZSBCbG9jayBx
dW90ZSBzdHlsZSB0byByZW1vdmUgdGhlIGZpcnN0LWxpbmUgaW5kZW50YXRpb24gdGhhdCB0aGUg
VHJhZGl0aW9uYWwgUXVpY2sgU3R5bGUgc2V0IGludHJvZHVjZXMuIFRvIGNoYW5nZSBhIHN0eWxl
LCBkbyB0aGUgZm9sbG93aW5nOjwvcD4iLAorICAgICAgICAiPG9sIHR5cGU9JzEnIGlkPSdpZF8y
MCc+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzIxJz48cD5PbiB0aGUgPGI+SG9tZTwvYj4g
dGFiIGluIHRoZSA8Yj5TdHlsZXM8L2I+IGdyb3VwLCByaWdodC1jbGljayA8Yj5CbG9jayBxdW90
ZTwvYj4sIGFuZCB0aGVuIGNsaWNrIDxiPk1vZGlmeTwvYj4uPC9wPjwvbGk+IiwKKyAgICAgICAg
ICAgICI8bGkgaWQ9J2lkXzIyJz48cD5DbGljayA8Yj5Gb3JtYXQ8L2I+LCBhbmQgdGhlbiBjbGlj
ayA8Yj5QYXJhZ3JhcGg8L2I+LjwvcD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8y
Myc+PHA+SW4gdGhlIDxiPkluZGVudGF0aW9uPC9iPiBzZWN0aW9uLCBpbiB0aGUgPGI+U3BlY2lh
bDwvYj4gbGlzdCwgY2xpY2sgPGI+KG5vbmUpPC9iPi48L3A+PC9saT4iLAorICAgICAgICAiPC9v
bD4iLAorICAgICAgICAiPHAgaWQ9J2lkXzI0Jz5UaGUgbW9yZSBjaGFyYWN0ZXJpc3RpY3MgdGhh
dCB5b3Ugc3BlY2lmeSBmb3IgdGhlIHN0eWxlLCB0aGUgbGVzcyB0aGUgc3R5bGUgaXMgYWZmZWN0
ZWQgYnkgc3dpdGNoaW5nIFF1aWNrIFN0eWxlIHNldHMgb3IgdGhlbWVzLjwvcD4iLAorICAgICI8
L2Rpdj4iCitdOworCitMYXllcmluZ1RleHRTdGFnZS5wYXJzZVRleHRJdGVtID0gZnVuY3Rpb24o
dGV4dEl0ZW0pIHsKKyAgICB2YXIgcHJhc2VSZXN1bHQgPSB7fTsKKyAgICBwcmFzZVJlc3VsdC50
YWdTdGFydCA9IHRleHRJdGVtLm1hdGNoKC88KC4qPyk+L2cpWzBdOworICAgIHZhciBzcGFjZUlu
ZGV4ID0gcHJhc2VSZXN1bHQudGFnU3RhcnQuaW5kZXhPZigiICIpOworICAgIHByYXNlUmVzdWx0
Lm5vZGVOYW1lID0gcHJhc2VSZXN1bHQudGFnU3RhcnQuc3Vic3RyaW5nKDEsIHNwYWNlSW5kZXgg
IT0gLTEgPyBzcGFjZUluZGV4IDogcHJhc2VSZXN1bHQudGFnU3RhcnQubGVuZ3RoIC0gMSk7Cisg
ICAgcHJhc2VSZXN1bHQuYXJncyA9IHNwYWNlSW5kZXggIT0gLTEgPyB3aW5kb3cuYmVuY2htYXJr
Q2xpZW50LnBhcnNlQXJndW1lbnRzKHByYXNlUmVzdWx0LnRhZ1N0YXJ0LnN1YnN0cmluZyhzcGFj
ZUluZGV4ICsgMSwgcHJhc2VSZXN1bHQudGFnU3RhcnQubGVuZ3RoIC0gMSkpIDoge307CisgICAg
dmFyIHRhZ0VuZCA9ICI8LyIgKyBwcmFzZVJlc3VsdC5ub2RlTmFtZSArICI+IjsgICAgICAgICAg
ICAgICAgCisgICAgcHJhc2VSZXN1bHQudGFnRW5kID0gdGV4dEl0ZW0uZW5kc1dpdGgodGFnRW5k
KSA/IHRhZ0VuZCA6ICIiOworICAgIHJldHVybiBwcmFzZVJlc3VsdDsKK30KKworTGF5ZXJpbmdU
ZXh0U3RhZ2UuaXNPcGVuaW5nVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbSkgeworICAgIHJl
dHVybiAhTGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VUZXh0SXRlbSh0ZXh0SXRlbSkudGFnRW5kLmxl
bmd0aDsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDbG9zaW5nVGV4dEl0ZW0gPSBmdW5jdGlv
bih0ZXh0SXRlbSkgeworICAgIHJldHVybiB0ZXh0SXRlbS5pbmRleE9mKCIvIikgPT0gKzE7Cit9
CisKK0xheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzID0gTGF5ZXJpbmdUZXh0U3RhZ2Uu
dGV4dEl0ZW1zLm1hcChmdW5jdGlvbih0ZXh0SXRlbSl7CisgICB2YXIgdGV4dEl0ZW1GbGFncyA9
IHt9OworICAgdGV4dEl0ZW1GbGFncy5pc09wZW5pbmcgPSBMYXllcmluZ1RleHRTdGFnZS5pc09w
ZW5pbmdUZXh0SXRlbSh0ZXh0SXRlbSk7CisgICB0ZXh0SXRlbUZsYWdzLmlzQ2xvc2luZyA9IExh
eWVyaW5nVGV4dFN0YWdlLmlzQ2xvc2luZ1RleHRJdGVtKHRleHRJdGVtKTsgICAKKyAgIHJldHVy
biB0ZXh0SXRlbUZsYWdzOworfSk7CisKK0xheWVyaW5nVGV4dFN0YWdlLmlzQ29sb3JhYmxlVGV4
dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKSB7CisgICAgcmV0dXJuICEodGV4dEl0ZW1G
bGFncy5pc09wZW5pbmcgfHwgdGV4dEl0ZW1GbGFncy5pc0Nsb3NpbmcpOworfQorCitMYXllcmlu
Z1RleHRTdGFnZS5pc0luc2VydGFibGVUZXh0SXRlbSA9IGZ1bmN0aW9uKHRleHRJdGVtRmxhZ3Mp
IHsKKyAgICByZXR1cm4gIXRleHRJdGVtRmxhZ3MuaXNDbG9zaW5nOworfQorCitMYXllcmluZ1Rl
eHRTdGFnZS5jb2xvcmFibGVUZXh0SXRlbXMgPSBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNG
bGFncy5maWx0ZXIoZnVuY3Rpb24odGV4dEl0ZW1GbGFncykgeworICAgIHJldHVybiBMYXllcmlu
Z1RleHRTdGFnZS5pc0NvbG9yYWJsZVRleHRJdGVtKHRleHRJdGVtRmxhZ3MpOworfSkubGVuZ3Ro
OworCitMYXllcmluZ1RleHRTdGFnZS5pbnNlcnRhYmxlVGV4dEl0ZW1zID0gTGF5ZXJpbmdUZXh0
U3RhZ2UudGV4dEl0ZW1zRmxhZ3MuZmlsdGVyKGZ1bmN0aW9uKHRleHRJdGVtRmxhZ3MpIHsKKyAg
ICByZXR1cm4gTGF5ZXJpbmdUZXh0U3RhZ2UuaXNJbnNlcnRhYmxlVGV4dEl0ZW0odGV4dEl0ZW1G
bGFncyk7Cit9KS5sZW5ndGg7CisKK0xheWVyaW5nVGV4dFN0YWdlLmNvbG9ySW5kZXhUb1RleHRF
bGVtZW50SW5kZXggPSBmdW5jdGlvbihjb2xvckluZGV4KSB7CisgICAgdmFyIHRleHRFbGVtZW50
SW5kZXggPSAwOworICAgIHZhciBpbmRleCA9IDA7CisgICAgCisgICAgZm9yICh2YXIgdGV4dEl0
ZW1JbmRleCA9IDA7IHRleHRJdGVtSW5kZXggPCBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNG
bGFncy5sZW5ndGg7ICsrdGV4dEl0ZW1JbmRleCkgeworICAgICAgICBpZiAoTGF5ZXJpbmdUZXh0
U3RhZ2UuaXNDb2xvcmFibGVUZXh0SXRlbShMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFn
c1t0ZXh0SXRlbUluZGV4XSkpIHsKKyAgICAgICAgICAgIGlmICgrK2luZGV4ID4gY29sb3JJbmRl
eCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoTGF5ZXJp
bmdUZXh0U3RhZ2UuaXNJbnNlcnRhYmxlVGV4dEl0ZW0oTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0
ZW1zRmxhZ3NbdGV4dEl0ZW1JbmRleF0pKQorICAgICAgICAgICAgKyt0ZXh0RWxlbWVudEluZGV4
OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdGV4dEVsZW1lbnRJbmRleDsKK30KKworTGF5ZXJp
bmdUZXh0U3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOwor
TGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTGF5ZXJpbmdUZXh0U3Rh
Z2U7CisKK0xheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fbmV4dFRleHRJdGVtID0gZnVuY3Rp
b24odGV4dEl0ZW1GbGFncykgeworICAgIHZhciB0ZXh0SXRlbSA9IExheWVyaW5nVGV4dFN0YWdl
LnRleHRJdGVtc1t0aGlzLl90ZXh0SXRlbUluZGV4XTsKKyAgICB3aW5kb3cuYmVuY2htYXJrQ2xp
ZW50LmV4dGVuZE9iamVjdCh0ZXh0SXRlbUZsYWdzLCBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRl
bXNGbGFnc1t0aGlzLl90ZXh0SXRlbUluZGV4XSk7CisgICAgdGhpcy5fdGV4dEl0ZW1JbmRleCA9
ICh0aGlzLl90ZXh0SXRlbUluZGV4ICsgMSkgJSBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXMu
bGVuZ3RoOworICAgIHJldHVybiB0ZXh0SXRlbTsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJv
dG90eXBlLl9wcmV2aW91c1RleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW1GbGFncykgeworICAg
IHRoaXMuX3RleHRJdGVtSW5kZXggPSAodGhpcy5fdGV4dEl0ZW1JbmRleCArIExheWVyaW5nVGV4
dFN0YWdlLnRleHRJdGVtcy5sZW5ndGggLSAxKSAlIExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVt
cy5sZW5ndGg7CisgICAgd2luZG93LmJlbmNobWFya0NsaWVudC5leHRlbmRPYmplY3QodGV4dEl0
ZW1GbGFncywgTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3NbdGhpcy5fdGV4dEl0ZW1J
bmRleF0pOyAgICAKKyAgICByZXR1cm4gTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zW3RoaXMu
X3RleHRJdGVtSW5kZXhdOworfQorCitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX3B1c2hU
ZXh0RWxlbWVudCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB0ZXh0SXRlbUZsYWdzID0ge307Cisg
ICAgdmFyIHRleHRJdGVtID0gdGhpcy5fbmV4dFRleHRJdGVtKHRleHRJdGVtRmxhZ3MpOworICAg
IGZvciAoIDsgdGV4dEl0ZW1GbGFncy5pc0Nsb3Npbmc7IHRleHRJdGVtID0gdGhpcy5fbmV4dFRl
eHRJdGVtKHRleHRJdGVtRmxhZ3MpKQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudCA9
IHRoaXMuX3RleHRFbGVtZW50UGFyZW50LnBhcmVudE5vZGU7CisKKyAgICB2YXIgcHJhc2VSZXN1
bHQgPSBMYXllcmluZ1RleHRTdGFnZS5wYXJzZVRleHRJdGVtKHRleHRJdGVtKTsKKyAgICB0ZXh0
SXRlbSA9IHRleHRJdGVtLnN1YnN0cmluZyhwcmFzZVJlc3VsdC50YWdTdGFydC5sZW5ndGgsIHRl
eHRJdGVtLmxlbmd0aCAtIHByYXNlUmVzdWx0LnRhZ0VuZC5sZW5ndGgpOworCisgICAgdmFyIHRl
eHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChwcmFzZVJlc3VsdC5ub2RlTmFtZSk7
CisKKyAgICBmb3IgKHZhciBhdHRybmFtZSBpbiBwcmFzZVJlc3VsdC5hcmdzKQorICAgICAgICB0
ZXh0RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cm5hbWUsIHByYXNlUmVzdWx0LmFyZ3NbYXR0cm5h
bWVdKTsKKworICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50LmFwcGVuZENoaWxkKHRleHRFbGVt
ZW50KTsKKyAgICAKKyAgICBpZiAoIXByYXNlUmVzdWx0LnRhZ0VuZC5sZW5ndGgpCisgICAgICAg
IHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGV4dEVsZW1lbnQ7CisKKyAgICB0ZXh0RWxlbWVu
dC5pbm5lckhUTUwgPSB0ZXh0SXRlbTsKKyAgICAKKyAgICB0aGlzLl90ZXh0RWxlbWVudHMucHVz
aCh0ZXh0RWxlbWVudCk7CisgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7Cit9
CisKK0xheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fcG9wVGV4dEVsZW1lbnQgPSBmdW5jdGlv
bigpIHsKKyAgICB2YXIgdGV4dEl0ZW1GbGFncyA9IHt9OyAgICAKKyAgICB2YXIgdGV4dEl0ZW0g
PSB0aGlzLl9wcmV2aW91c1RleHRJdGVtKHRleHRJdGVtRmxhZ3MpOworICAgIGZvciAoIDsgdGV4
dEl0ZW1GbGFncy5pc0Nsb3Npbmc7IHRleHRJdGVtID0gdGhpcy5fcHJldmlvdXNUZXh0SXRlbSh0
ZXh0SXRlbUZsYWdzKSkKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQgPSB0aGlzLl90
ZXh0RWxlbWVudFBhcmVudC5sYXN0Q2hpbGQ7CisKKyAgICBpZiAodGV4dEl0ZW1GbGFncy5pc09w
ZW5pbmcpCisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGhpcy5fdGV4dEVsZW1l
bnRQYXJlbnQucGFyZW50Tm9kZTsKKworICAgIHZhciB0ZXh0RWxlbWVudCA9IHRoaXMuX3RleHRF
bGVtZW50c1t0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoIC0gMV07CisgICAgCisgICAgaWYgKHRl
eHRFbGVtZW50ICYmIHRleHRFbGVtZW50LnBhcmVudE5vZGUgJiYgdGV4dEVsZW1lbnQucGFyZW50
Tm9kZSA9PSB0aGlzLl90ZXh0RWxlbWVudFBhcmVudCkKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1l
bnRQYXJlbnQucmVtb3ZlQ2hpbGQodGV4dEVsZW1lbnQpOworCisgICAgdGhpcy5fdGV4dEVsZW1l
bnRzLnBvcCgpOworICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOworfQorCitM
YXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX2NvbG9yVGV4dEl0ZW0gPSBmdW5jdGlvbihjb2xv
cikgeworICAgIHZhciB0ZXh0RWxlbWVudEluZGV4ID0gTGF5ZXJpbmdUZXh0U3RhZ2UuY29sb3JJ
bmRleFRvVGV4dEVsZW1lbnRJbmRleCh0aGlzLl9jb2xvckluZGV4KTsKKyAgICBmb3IgKCA7IHRl
eHRFbGVtZW50SW5kZXggPCB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOyB0ZXh0RWxlbWVudElu
ZGV4ICs9IExheWVyaW5nVGV4dFN0YWdlLmluc2VydGFibGVUZXh0SXRlbXMpCisgICAgICAgIHRo
aXMuX3RleHRFbGVtZW50c1t0ZXh0RWxlbWVudEluZGV4XS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3Ig
PSBjb2xvcjsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5j
dGlvbih0aW1lRGVsdGEpIHsKKyAgICB0aGlzLl9jb2xvclRleHRJdGVtKCJ0cmFuc3BhcmVudCIp
OworICAgIHRoaXMuX2NvbG9ySW5kZXggPSAodGhpcy5fY29sb3JJbmRleCArIDEpICUgTGF5ZXJp
bmdUZXh0U3RhZ2UuY29sb3JhYmxlVGV4dEl0ZW1zOworICAgIHRoaXMuX2NvbG9yVGV4dEl0ZW0o
IlllbGxvd0dyZWVuIik7CisgICAgCisgICAgdmFyIGJsYWNrVGV4dEVsZW1lbnRzID0gTWF0aC5t
aW4odGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aCwgTGF5ZXJpbmdUZXh0U3RhZ2UuaW5zZXJ0YWJs
ZVRleHRJdGVtcyk7CisgICAgdmFyIGkgPSAwOworICAgIGZvciAoIDsgaSA8IHRoaXMuX3RleHRF
bGVtZW50cy5sZW5ndGggLSBibGFja1RleHRFbGVtZW50czsgKytpKQorICAgICAgICB0aGlzLl90
ZXh0RWxlbWVudHNbaV0uc3R5bGUuY29sb3IgPSAid2hpdGUiOworCisgICAgZm9yICggOyBpIDwg
dGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsgKytpKQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVu
dHNbaV0uc3R5bGUuY29sb3IgPSAiYmxhY2siOworfQorCitMYXllcmluZ1RleHRTdGFnZS5wcm90
b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KSB7CisgICAgY291bnQgPSBjb3VudCA+IDAgPyBN
YXRoLmZsb29yKGNvdW50KSA6IE1hdGguY2VpbChjb3VudCk7CisKKyAgICBpZiAoY291bnQgPT0g
MCkKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7CisKKyAgICBpZiAo
Y291bnQgPiAwKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAg
ICAgICAgICAgIHRoaXMuX3B1c2hUZXh0RWxlbWVudCgpOworICAgICAgICByZXR1cm4gdGhpcy5f
dGV4dEVsZW1lbnRzLmxlbmd0aDsKKyAgICB9CisgICAgICAgIAorICAgIGNvdW50ID0gTWF0aC5t
aW4oLWNvdW50LCB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoKTsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIHRoaXMuX3BvcFRleHRFbGVtZW50KCk7CisKKyAg
ICByZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsKK30KKworZnVuY3Rpb24gTGF5ZXJp
bmdUZXh0QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jl
c3NCYXIpIHsKKyAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBvcHRpb25zKTsKKyAgICAKKyAgICB2
YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFnZSIpOworICAgIGVsZW1l
bnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsIGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgpOworICAg
IGVsZW1lbnQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdo
dCk7CisgICAgCisgICAgdGhpcy5fc3RhZ2UgPSB0aGlzLmNyZWF0ZVN0YWdlKGVsZW1lbnQpOwor
ICAgIHRoaXMuX2FuaW1hdG9yID0gdGhpcy5jcmVhdGVBbmltYXRvcigpOworICAgIHRoaXMuX3N1
aXRlID0gc3VpdGU7CisgICAgdGhpcy5fdGVzdCA9IHRlc3Q7CisgICAgdGhpcy5fcmVjb3JkVGFi
bGUgPSByZWNvcmRUYWJsZTsKKyAgICB0aGlzLl9wcm9ncmVzc0JhciA9IHByb2dyZXNzQmFyOwor
fQorCitMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCZW5j
aG1hcmsucHJvdG90eXBlKTsKK0xheWVyaW5nVGV4dEJlbmNobWFyay5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBMYXllcmluZ1RleHRCZW5jaG1hcms7CisKK0xheWVyaW5nVGV4dEJlbmNobWFyay5w
cm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgcmV0dXJuIG5l
dyBMYXllcmluZ1RleHRTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKworTGF5ZXJp
bmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvciA9IGZ1bmN0aW9uKCkgewor
ICAgIHJldHVybiBuZXcgTGF5ZXJpbmdUZXh0QW5pbWF0b3IodGhpcyk7Cit9CisKK0xheWVyaW5n
VGV4dEJlbmNobWFyay5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KSB7CisgICAgcmV0
dXJuIHRoaXMuX3N0YWdlLnR1bmUoY291bnQpOworfQorCitMYXllcmluZ1RleHRCZW5jaG1hcmsu
cHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRoaXMuX3N0YWdlLmNs
ZWFyKCk7Cit9CisKK0xheWVyaW5nVGV4dEJlbmNobWFyay5wcm90b3R5cGUuc2hvd1Jlc3VsdHMg
PSBmdW5jdGlvbihtZXNzYWdlLCBwcm9ncmVzcykgeworICAgIGlmICghdGhpcy5fcmVjb3JkVGFi
bGUgfHwgIXRoaXMuX3Byb2dyZXNzQmFyIHx8ICF0aGlzLl9zdWl0ZSB8fCAhdGhpcy5fdGVzdCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgdGhpcy5fcmVjb3JkVGFibGUuc2hvd1JlY29yZCh0aGlz
Ll9zdWl0ZSwgdGhpcy5fdGVzdCwgdGhpcy5fc2FtcGxlciwgbWVzc2FnZSk7CisgICAgdGhpcy5f
cHJvZ3Jlc3NCYXIuc2V0UG9zKHByb2dyZXNzKTsKK30KKword2luZG93LmJlbmNobWFya0NsaWVu
dC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHBy
b2dyZXNzQmFyKSB7CisgICAgd2luZG93LmJlbmNobWFyayA9IG5ldyBMYXllcmluZ1RleHRCZW5j
aG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9
CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15
YW5nLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFy
eSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCkluZGV4OiBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnBuZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnBuZwko
cmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJj
ZXMveWluLXlhbmcucG5nCSh3b3JraW5nIGNvcHkpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnBuZwpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMKK2ltYWdlL3BuZwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CgppVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBR1FB
QUFCa0NBWUFBQUJ3NHBWVUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOCkFBQjZKZ0FB
Z0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFDWEJJV1hNQUFBc1RB
QUFMRXdFQW1wd1kKQUFBQ0JHbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBIZzZl
RzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdQpjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlX
RTFRSUVOdmNtVWdOUzQwTGpBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5CkltaDBk
SEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBn
b2dJQ0FnSUNBOGNtUm0KT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJZ29nSUNBZ0lD
QWdJQ0FnSUNCNGJXeHVjenBsZUdsbVBTSm9kSFJ3T2k4dgpibk11WVdSdlltVXVZMjl0TDJWNGFX
WXZNUzR3THlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6Ckxt
RmtiMkpsTG1OdmJTOTBhV1ptTHpFdU1DOGlQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZs
RWFXMWxibk5wYjI0K01URXcKUEM5bGVHbG1PbEJwZUdWc1dVUnBiV1Z1YzJsdmJqNEtJQ0FnSUNB
Z0lDQWdQR1Y0YVdZNlVHbDRaV3hZUkdsdFpXNXphVzl1UGpFdwpOVHd2WlhocFpqcFFhWGhsYkZo
RWFXMWxibk5wYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2s5eWFXVnVkR0YwYVc5dVBqRThMM1Jw
ClptWTZUM0pwWlc1MFlYUnBiMjQrQ2lBZ0lDQWdJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQZ29n
SUNBOEwzSmtaanBTUkVZK0Nqd3YKZURwNGJYQnRaWFJoUGdvVW5BMitBQUFOV0VsRVFWUjRBZTFk
Zld3VTFSWS91NlZDVzBxcmlDUWtVQ0ZSUUFKSUNBaFJvY1RFWWcwRQpWRVQ4Q3hBU0VTSXh3aDhh
QlRIQnFEVUdBKzg5RFdENHh3OVFpMEZqU0VTdGlaRldxUkhDcTZEUUJKTlhxbnpJUjRyWVVzNDd2
ek1NCkhZYmR6bTczN256czlpU3pNN3N6ZXovT2IrNDk1NTU3N3preENqa3g4M2dwNGh3NXB0S3BV
OFBvMkxGQjFOSlNRaWRPRk5LNWN3VjAKNFFKUmUzdE1xM0hERFV6RnhVUURCblRTb0VFZE5HUklH
MVZVbktDQkEzK1grM3ZsK0RRV2krM1haMFA2WVZVa1JJVVRBR1pLY1piVApvVU1UcWI3K0ZtcHNM
S0NmZnliYUwzeHNieWRpdHM2cGxEa2VKNHBKRlFzTGlXNjdqZWl1dTRqdXZydVRwa3o1azBhTjJp
ZEovRnNBCjJwMUtVbm4xaklDd2xOdmE5dlAyN2UyOGFCSHpzR0hNdzRjelAvZ2c4NzMzTWhjWEF3
WXpSMGtKYy8vK3pBTUhNcytieDVvbjhwWXkKNUJYVDNaVVZCb3lSWXc5Lzhrazd6NS9QM0tjUGMz
VTE4NlpOekY5OXhieDRzUmtBdklBc0syT094NWtmZUlDNXRyWmR5eVJsYzVjMwpaNzlMaGVmdzhl
TkhlZDI2eTlvU0tpdVozM21IK2ZScHVTVlVVOE5jVU9BUEdHNnd5c3V0bG9PeW9ZeFMxbHdHWWpZ
Zk9mSS9YckdDCk9SWmpmdW9wNXA5K1VnejBvN1dWZWRhc1lJQndBMU5VWkpWanlSTFdNalBQemhs
Z2hObEQrZVRKSm43bUdlYStmWm1mZjU0WnpIZFMKUXdQemlCSGhBTU1KRGxvcURydzhxSVBVSmRM
QVNBVzI4SVlOblR4Z0FQUEtsZGNEQVZDKytZYTV0RFI4WURpQndZdlVyeDlMWFM2aApUcEVEUlFv
OWcrdnJ6NnFHQkVIdDdKcms1bFZDeXdnN0dFNWdvQUNNSGN0YU42bGpKSUFSWm0vZzllc3ZxMm9K
WVoyTTBHMkZzWnR5CkFwRHN1ckNRK1pWWExxT3VvUVZGQ2xjaW1zbC9WVENqVlRRM0o0UEMrajBz
QWp3WjA3MStSMnVaTm8yMXpsTDNVQUVqSEo3QVgzL2QKcG1yczJyWGRBNEc3VUcyOUtoeVYreGhn
b3U3Q2cxQ0FJZ1dwNG5mZjdWQU5hdnQyc0x0N1Fzc0phcHlSTFpCUkgvQkFlQkVvS0ZLQQpoZno2
NjUxcTVvQ0FUb1g4R29Gbmkvbkowb1U1cHFhbUV6d0pCQlRKZURXLzlOSmx2dk5PYjNsaEEzWHdZ
TzUwVlltQWdWekJLRjk0CjR5c29lQXNVak1tVEU0OHRiQURjWjR6U0UxVWtsMzdyQXNXZmxpSThy
dEp1Q2kzRFBlSjJBK0Q4ZmtuR1ZGRWFjMlR5a2dBVXEvdksKcmt3Ui9rNVE0UVhUdUpkYTZ3UUQx
enQyNUg3cmNJSUltYkp0R3dSOWRyUXZTYmhFMVR1WUVWSVY0QURDcGx3VjVrNFEzTmZRdml5Vgoy
UHc0aFZ0YW1uU2NrWXBxYTRQZ1BFZDFWTzVtY3JyZk1VNlJBYk5SSVM5ODNhQWo4RlFHZlU0UTdH
dkltblFya3Nyemp6L08vTzIzCnpCY3ZXZ2V1OFZzcS8vWHpHWXpvVFpsWkpLRVphcHVDT2FTbkJJ
dXVhUWE4OFVieTB1Q2U2Znd5U1E5QzNySjlaVzZRVk1zbUJGUzYKUXR6SnJtM2J6RElJcmNDTHd0
WlNZSkJzYURpYlVkY2xkZDZpSnZUdXJMWmVqTUY5MDdZcmRFMWVoR2N5ZWF1ejhkOXg0MURxbnMy
bgp5QitINnVSU0psMlZ6YlIxNjh3eUJ6TERpL0JNTnBpYVNacm91akJoMTVPWlI1Mnl4RXhmc3Nr
bEw0WTQ3L2NDMHZWeVlPYngxS21tClpGMlhyQ1M3bm9TWHMybjkrdEcwYUJIUkJBUGpHcXdtTkVr
TkRkNnBwZktNZHlybW53QTBMNzQ0V25tY2F1cTYwZ0lEd0hSTUk4NFcKNGI3dUZlcGRMUVJkSGdh
TXNnSW5KVHlFbDNOMHFRNVdoNWlpZkZkNzNYSUhnR0NKVVNycnZtUlUyYXpycGt5MURtU2I3d05E
TnlEMgo5OWJXbzkyMkVtSGRHTFhuWXgyU2FjcFgwNG5OZlBjWmkvRmVmaGx6SjhtWHJjck5QV3F2
TXFGWnVRSE5SK09pR3dUM2Q5aTVoT2ZPClZuS3RsbFZiTzQxR2pEQ2pXVGx6d2ZWTTdETG9wV3M0
ME5sSnRIUG5OT2R2VndFUnBKYlNqaDJGdEdDQjg3NjU2NGNlSWlvdE5aZGUKTHFSMDVnelJsaTFp
VTBtd0ZVTDNaMkJMZ0wwS0hZM0pOT1hERks2N1cvTDZEbzNyd29YOTl2dDF0WVhRNTUrUHB2dnZK
N3J4UnZ1ZQorZk9UVDVwUE0rb3A5dTlQeXZzcjlWQkFwQ0ZVMCs3ZGhWUmRuZDNxalJHRll2SGk3
T1lSdGRUUGlnSDQ0NC9SYlhVeFg3NThwdHJWCjRjT21PNm5yMDh2RmhYSmUzWkxYZlV2YitnenZr
dFZsWVlObFFRSFI3YmRuLy8wYVBwem8xVmV6bjArVWN2am5INkxEaHllaXlCWWcKMk8wNmRhcC9W
VmkxaW1qV0xQL3lDM3RPMkNrTURJUmt0NlBzQThmVzQwbVQvQzMyNXMya1l4NS9jdzFuYnVmUEUz
MzNuYWhiUEI0dApaSzd1QVIrUC9mayswdURCUkI5ODBEczJzVm4rd3crNG1ndEFwdEF2dnhEZGNZ
ZDl5Ny96NU1sRXUzYjFnZ0tPTnpmamMwcGMzVlZnCkNJODNOZ2lxckNUYUkrWWNtR3p5bVRvNmlF
NmZIaFpYM3lFVkZjR3lBaTNsKysvelc5RDM2MGZBSXE2T1hJWU1DUllRNUk0V2l1NnIKcG9aVUJR
KytSUDZYUUp6cXhOV3J6aTJxY2ZsZmdFUTVRaVgrN2JmOEc5RkRiSnc4V1JoWEYwZGxaWWxZRTl4
dkdEeHUzVXAwOENEUgppaFg1SWZRaFE4NmVMWWlydjZrUzg0dXpqYUFKMjlmR2pVUi8vVVV5TldD
MW1sd1YvcGN1RWJEb284Ni80RThxekFTenpyeDUxb0Z5Ci92RUhxYXArN0JoSmw2c1ZvYlZydzF3
RDc3S2h5eEpIYkgyOG53emhFMUFBM0dyNm1qWFhGeFM2ZlYwZGlTV2JxTGFXQ0pVT09jVUoKYnZI
UWYrVWlvWHVEdVIvZEhibzlkSC9vQnNOSTZBVUVpN2o2S0d4ckMyTVJ6WllKMDhkUUVLQW9RR0dB
NGhBbTZpT2RsYXp3akt2RApTTXp0NWhPaDFVQzFob29kRm9JY0x5dnJqS3YzVGdqR2ZDTjBFUmlF
WWpEcWxrZEI4QUxsdWZubWpyaTZVbTFwQ2FJSTRjZ1Q4ekl3CjI4QjhFelNKVzl1NCtyV0YrcGpQ
Qk9FUEEyZGxaWEJjdUhpUmdFVmNuUXlqdVVDM3oyZUMwRWYzRlZSTGdReTU2YWJmNDRKQlBZMGUK
VGRUVWxNOXdXSFVIS0pnMEMwS21XQmFJdlFCa0oyRzJFSjZqZThtYWw4SDBzdDlrdGN4UDQrb0xm
ZUxFVHZyeFI3K0xFTjc4SU9qOQpWSW5STXUrNXB4TllvSVhJeEtINFF0KzdON3dNQ3FKa1dLcmsx
K0FSKzZ1QWdaQUZ5S2hSaldybitmWFhJS29lemp5aDZMendnajlsCjY5dVhhT1JJQkFlNEFnalJ2
K2krKzRpKy9OS2ZBa1FsRjR6by9iQjlnZmNTcVFFZjJrSTBaTVBNbVIzMHhSZjRyWmVjSE1qMkFu
Rk0KRGo3eVNJY2ROaU5tNTQzdENHSkxHVWQvU2xlV3pSWHdkb1pST1dNUkcvaVJMZE05dXNiejV3
L0Vpb3RGMWUzcXNtQnAzRVFQUDB6MAowVWRSWVpVLzVZUUdoTTFHMmFLcUtxS2lvazEyOHBaUWwy
L1NaRGJUL1BrZE9qQ3k3L2FlTFE1a2F6dGVlVG5Sa2lYb3JoSVBmR1J0CmFmWTJmVjYvTVNFNnZ4
dzlldTNHZjYvdEJhbmU5OXowU2JTU25uaUNaZDliTk5yRysrOFRUWjlPaEVWbU9IQ04zMHhUTmha
V0ZCVUoKdDFmS0FFUjQzaDFseFhGQU50ckNzODhtZjJ0eHp6U2wrdGFuODV5WDR3QUFKZlV3NzFy
RE5IUGVleTg1R0RaRDhJeEpzdE0xY1U3SAp0WWFDZ3RCRU11RnV6UG1NU2NZZ0xmZ3c5R0tNNWVm
UVhNNWUrYVZ6UHgzbk0xZGF5V3dOVVlTb09HRWtlQ3J5WWdDZU1VbGUrYVY2CkgrVmF2aHdsU3kr
dWxUb3dnd2UwYkxqWnlKUlJVUWFrSnc3TTBFcGtKckdLeExHOGJ3WTJ6VFRGRDBUczlLSlVudkZL
dy9SOW1FbGUKZSsyeXpBekthTEFISkMreUdTZVltYllJOS8rakt0UXpjWUpwNDJmRVRheWJvU2Er
UjAzdE5lRW1GcUFJNzJhb0UyQVQza2xOQU9GTQpBeTBGMmhSa0NnNWNtMVozN2Z4U0ZkcUpualBw
U1BrS0tKbTVHcmNyRmRWenBxWVRTd1UzRzlGTm81RWhpbk5QbmZGSEZReVVlK3RXCmJ6VTdVY3ZB
YjdCWHRiYWFkY1ovcFpWWTRTb3dZS3l2anpKNzB5ODd3bnduWTNoM3YyTUFXRmVIQ0c0bDRLRnhr
b1N0Z0M2MzNzcU0KWnB3UGRPNWN6NkxLWlR1Z2k0MnVZRkNsNFh6U0RYa1VWZkEyYmt5L2RVQ0kr
eEh5eUFIS1F2VmVPbWxTZU8xZHBsNkFNV1BTQXdSZwpXSkhhRnRyODh1VXM5VjJ0R2FPbDVHcjNs
YTR3N3dKanRTOGd1RE1SVUJacTA0Uk15VFZCajZoeUNIN1duZEIyM2dzNnNLUU5qb0JTCnBkSElv
SDE5K0tHcGppTDRkRmF0U2gwTWFGTldSTGFlMmFoc1pwbzZDL2VzNE1RVkZjeHIxZ1RQekV4THNH
dFg2bUJnbkdHcHRoTk0KOGROSU9zS0RFbzNraHJEY01MTkVWYTZnM0lNSGV3TUNlWUVSK1BIalRh
aTdFU1ptSXhFcDNBYTFmWldVTUdjYUtpblROejNkLzJQTQpnWEN5VHRtUTZEb0tBZTZkNEFvZlpp
QUFscjVCYUMyTmplbXl4di9uQVVabFpmZGdvRlhBaEk2NlNSMmRkWTdFdFJSNmk4WmNRa1dlCmZq
cThZeFowVTkyMURGaVNNZFAzMWx1ZHFGTWttSitza0ZLQm9ZaTVwSFAwME1TZWV5NWN3RUNBSjVN
WjBKNXdZQTRjZGVoSk1LOWsKakFuNmQ2bk1iQTJsQlAvdnNSanpzbVhCZG1VWVp5UlRiUkhiQTdJ
RFVYQ3dBaWZkQlFsQk16dWQvS1Z5YzhRYzNhekJUS0FtVDUvTwovUGJiZUFQbGxrK0VFWGlpUVY5
NXVXVXVSNkFWbERHVmtFVHBWRDdNejBwbHhVZ2thNGxyYTl2NXNjZVlvYmxBQVlBeDc5QWg4OGhB
CmFDTnR0MjBLOGczZEV2SkdXVkNtN3FMZWhKbXBwc29tREZpS2tBMFNjNzJkRVlrSExRZm1tQVVM
bU45OEV5R3dtYytja2NmU0pBaHIKdEFiTVo0RHA2SVpLUzVsaDVzQ0E3dEZIRWVlOVhmTk9GTVBE
VkFYVFNPZnFocDAwL3BQVlI0WGwxWkxCTXZXRkR2ZmIrL1lWMElFRAoxajU2ZUYyREIxVnNNeHM3
bG1qb1VHeTJ0eFphMTlVUi9mMDNYSzJTT1BZa09uS0VkUE1SUENSZ1V6NFdUR1Byc2V4MjFRMldJ
MGMyClNqNy9rYTBBb2RvMkZqcEEzR2dMUU5oWk5GZU9LZkJycTI1dHhYc25IRWJDUjZHNktCUlBi
UG8vMGVMVTNaUjQxWUVqRi9Yakl1NHEKNENGQjd0ZkxzVk1BQ1BXRy9QOERSbnEvYU02TjhxMEFB
QUFBU1VWT1JLNUNZSUk9Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261571</attachid>
            <date>2015-09-18 21:25:28 -0700</date>
            <delta_ts>2015-09-21 11:26:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149053-20150918212514.patch</filename>
            <type>text/plain</type>
            <size>148159</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAwMDQpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1NyBAQAorMjAxNS0wOS0xOCAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdv
cmsgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQuIE1hbnkgcGFydHMgb2YgdGhlIGNvZGUgd2Fz
IGNvcGllZAorICAgICAgICBmcm9tIHNwZWVkb21ldGVyIGJlbmNobWFyay4gVGhlIGJlbmNobWFy
ayBydW5uZXIncyBuYW1lIGlzICJhbmltb21ldGVyLmh0bWwiCisgICAgICAgIGJ1dCB0aGlzIGlz
IG5vdCBmaW5hbCB5ZXQgYW5kIG1vc3QgcHJvYmFibHkgaXMgZ29pbmcgdG8gY2hhbmdlLiBUaGUg
Y3NzIAorICAgICAgICBhbmQgdGhlIHBhZ2UgbGF5b3V0cyB3aWxsIGJlIHJldmlzZWQgZm9yIGJl
dHRlciBsb29raW5nLgorCisgICAgICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgYmVuY2htYXJrIGlz
IHRvIG1lYXN1cmUgdGhlIGFuaW1hdGlvbiBwZXJmb3JtYW5jZSBvZgorICAgICAgICBhIHdlYiBi
cm93c2VyIGluIGFjY3VyYXRlIHdheSBidXQgYXQgZmluZSBncmFudWxhciBsZXZlbC4gVGhlIGRl
c2lnbiBpcworICAgICAgICB0byBoYXZlIHNlcGFyYXRlIGFuaW1hdGlvbnM7IGVhY2ggc3RyZXNz
IHRlc3RzIG9uZSBvZiB0aGUgZ3JhcGhpY3MgcHJpbWl0aXZlcworICAgICAgICBzbyB3ZSBjYW4g
aWRlbnRpZnkgYnVncyBhIGxvdCBlYXNpZXIuCisKKyAgICAgICAgSW5zdGVhZCBvZiBtZWFzdXJp
bmcgdGhlIEZQUyBvZiB0aGUgYW5pbWF0aW9uLCB0aGUgImFuaW1vbWV0ZXIiIGJlbmNobWFyawor
ICAgICAgICB0cmllcyB0byBtZWFzdXJlIHRoZSB0ZXN0IGNvbXBsZXhpdHkgd2hlbiByZW5kZXJp
bmcgYXQgYSBzZXQtcG9pbnQgRlBTIHdoaWNoCisgICAgICAgIHNob3VsZCBiZSBsZXNzIHRoYW4g
NjAgRlBTLiBUaGUgImFuaW1vbWV0ZXIiIHN0YXlzIGF0IHRoZSBzZXQtcG9pbnQgRlBTCisgICAg
ICAgIGJ5IHVzaW5nIGEgY2xvc2VkLWxvb3AgY29udHJvbCBzeXN0ZW0gUElEIGZ1bmN0aW9uLiBU
aGUgZ2FpbiBvZiB0aGUgc3lzdGVtCisgICAgICAgIGlzIHBhc3NlZCBhcyBhIHBhcmFtZXRlciB3
aGVuIHJ1bm5pbmcgdGhlIHRlc3QuIE1lYXN1cmluZyB0aGUgRlBTIGZhaXRoZnVsbHkKKyAgICAg
ICAgcmVzdWx0cyBpbiB2ZXJ5IGZsdWN0dWF0aW5nIHZhbHVlcy4gU28gYSBLYWxtYW4gZmlsdGVy
IGlzIHVzZWQgdG8gZ2l2ZSBhCisgICAgICAgIGJldHRlciBlc3RpbWF0ZSBmb3IgdGhlIGN1cnJl
bnQgRlBTLgorCisgICAgICAgIFRoZSBhbmltYXRpb24gb2YgdGhlIHRlc3RzIGlzIGRvbmUgbWFu
dWFsbHkuIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGlzCisgICAgICAgIGNhbGxlZCB3aXRoIGEg
Y2FsbGJhY2suIEluc2lkZSB0aGlzIGNhbGxiYWNrLCB0aGUgdGVzdCBpcyBhbmltYXRpbmcgYnkK
KyAgICAgICAgY2hhbmdpbmcgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZWxlbWVudHMgaW5zaWRlIHRo
ZSBwYWdlLiBUaGUgdGVzdCBjb21wbGV4aXR5CisgICAgICAgIG1heSBjaGFuZ2UgYWxzbyBpZiB0
aGUgY3VycmVudCBGUFMgaXMgbm90IGVxdWFsIHRvIHRoZSBkZXNpcmVkIEZQUy4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFuaW1vbWV0ZXI6IEFk
ZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgCisg
ICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvbWFpbi5qczogQWRkZWQuCisgICAgICAgIChQ
b2ludCk6IEEgcG9pbnQgb2JqZWN0CisgICAgICAgIChJbnNldHMpOiBBbiBpbnNldHMgb2JqZWN0
CisgICAgICAgIChTaW1wbGVQcm9taXNlKTogQW4gaW1wbGVtZW50YXRpb24gZm9yIGEgcHJvbWlz
ZSBvYmplY3QgKGNvcGllZCBmb3JtIHNwZWVkb21ldGVyKS4KKyAgICAgICAgKE1hdHJpeCk6IEEg
bWF0cml4IG9iamVjdC4KKyAgICAgICAgKFZlY3RvcjMpOiBBIHZlY3RvciBvZiBzaXplIDMgb2Jq
ZWN0LgorICAgICAgICAoTWF0cml4Myk6IEEgbWF0cml4IG9mIHNpemUgM3gzIG9iamVjdC4KKyAg
ICAgICAgKE9wdGlvbnMpOiBCZW5jaG1hcmsgcnVubmluZyBvcHRpb25zIGFzIHRoZXkgYXJlIHNl
dCBieSB0aGUgdXNlci4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgKFByb2dyZXNzQmFyKTog
TWFuYWdlcyBhIHByb2dyZXNzIGJhciBlbGVtZW50LiBUaGUgcHJvZ3Jlc3MgYmFyIGlzIGRpdmlk
ZWQgaW50byBlcXVhbCBsZW5ndGggcmFuZ2VzLgorICAgICAgICAoUHJvZ3Jlc3NCYXIucHJvdG90
eXBlLl9wcm9ncmVzc1RvUGVyY2VudCk6IENvbnZlcnRzIHRoZSBwcm9ncmVzcyBpbnRvIGEgcGVy
Y2VudGFnZS4KKyAgICAgICAgKFByb2dyZXNzQmFyLnByb3RvdHlwZS5pbmNSYW5nZSk6IE1vdmVz
IHRvIHRoZSBuZXh0IHJhbmdlIChhIHJhbmdlIGlzIHRoZSBydW5uaW5nIHRpbWUgb2YgYSBzaW5n
bGUgdGVzdCkuCisgICAgICAgIChQcm9ncmVzc0Jhci5wcm90b3R5cGUuc2V0UG9zKTogRHJhd3Mg
dGhlIGN1cnJlbnQgcHJvZ3Jlc3MgaW4gdGhlIGN1cnJlbnQgcmFuZ2UuCisgICAgICAgIAorICAg
ICAgICAoUmVjb3JkVGFibGUpOiBTaG93cyB0aGUgcmVzdWx0cyBvZiBydW5uaW5nIGEgYmVuY2ht
YXJrIGluIGEgdGFidWxhciBmb3JtLgorICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLmNs
ZWFyKTogQ2xlYXJzIHRoZSByZXN1bHRzIHRhYmxlLgorICAgICAgICAoUmVjb3JkVGFibGUucHJv
dG90eXBlLl9zaG93VGl0bGVzKTogU2hvd3MgdGhlIGhlYWRlciB0aXRsZXMgYW5kIGFwcGVuZHMg
dGhlIHN1Yi10aXRsZXMgdG8gYSBxdWV1ZS4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlw
ZS5fc2hvd0hlYWRlcik6IFNob3dzIHRoZSB0YWJsZSBoZWFkZXIgdGl0bGVzLgorICAgICAgICAo
UmVjb3JkVGFibGUucHJvdG90eXBlLl9zaG93RW1wdHkpOiBTaG93cyBhbiBlbXB0eSB0YWJsZSBj
ZWxsLgorICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLl9zaG93VmFsdWUpOiBTaG93cyBh
IG51bWJlciB2YWx1ZSBpbiB0aGUgcmVzdWx0cyB0YWJsZS4KKyAgICAgICAgKFJlY29yZFRhYmxl
LnByb3RvdHlwZS5fc2hvd1NhbXBsZXMpOiBTaG93cyBhIGJ1dHRvbiBmb3IgdGhlIHNhbXBsZWQg
ZGF0YSBncmFwaC4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5fc2hvd1Rlc3QpOiBT
aG93cyB0aGUgcmVzdWx0cyBvZiBhIHNpbmdsZSB0ZXN0LgorICAgICAgICAoUmVjb3JkVGFibGUu
cHJvdG90eXBlLl9zaG93U3VpdGUpOiBTaG93cyB0aGUgcmVzdWx0cyBvZiBhIHNpbmdsZSBzdWl0
ZS4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5zaG93UmVjb3JkKTogICAgICAgIAor
ICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLnNob3dJdGVyYXRpb25zKTogU2hvd3MgdGhl
IHJlc3VsdHMgb2YgYWxsIHRoZSBzdWl0ZXMgb2YgdGhlIGl0ZXJhdGlvbnMuIAorICAgICAgICAK
KyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKFN0YXRpc3RpYyk6IE1lYXN1cmVzIHRoZSBzYW1wbGUgbWVhbiBhbmQgc3RhbmRhcmQg
ZGV2aWF0aW9uIGZvciBhIHNldCBkYXRhIHBvaW50cy4KKyAgICAgICAgKFN0YXRpc3RpYy5zYW1w
bGVNZWFuKTogUmV0dXJucyB0aGUgc2FtcGxlIG1lYW4gZm9yIGEgc2V0IG9mIGRhdGEgcG9pbnRz
LgorICAgICAgICAoU3RhdGlzdGljLnNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uKTogUmV0dXJucyB0
aGUgc2FtcGxlIHN0YW5kYXJkIGRldmlhdGlvbiBmb3IgYSBzZXQgb2YgZGF0YSBwb2ludHMuCisg
ICAgICAgIChTdGF0aXN0aWMucHJvdG90eXBlLl9pbml0KTogQ2FsbGVkIHdoZW4gdGhlIG9iamVj
dCBpcyBjcmVhdGVkIGFuZCB3aGVuIHN0YXJ0U2FtcGxpbmcoKSBpcyBjYWxsZWQuCisgICAgICAg
IChTdGF0aXN0aWMucHJvdG90eXBlLnN0YXJ0U2FtcGxpbmcpOiBDYWxsZWQgYWZ0ZXIgd2FybWlu
ZyB1cCBwZXJpb2QuIFJlc3RhcnRzIGNvbGxlY3Rpbmcgc2FtcGxlZCBkYXRhIHBvaW50cy4KKyAg
ICAgICAgKFN0YXRpc3RpYy5wcm90b3R5cGUuc2FtcGxlKTogQWRkIGEgbmV3IGRhdGEgcG9pbnQu
CisgICAgICAgIChTdGF0aXN0aWMucHJvdG90eXBlLm1lYW4pOiBSZXR1cm5zIHRoZSBzYW1wbGUg
bWVhbiBmb3IgdGhlIGN1cnJlbnQgc2FtcGxlZCBkYXRhIHBvaW50cy4KKyAgICAgICAgKFN0YXRp
c3RpYy5wcm90b3R5cGUuc3RhbmRhcmREZXZpYXRpb24pOiBSZXR1cm5zIHRoZSBzYW1wbGUgc3Rh
bmRhcmQgZGV2aWF0aW9uIGZvciB0aGUgY3VycmVudCBzYW1wbGVkIGRhdGEgcG9pbnRzLgorICAg
ICAgICAoU3RhdGlzdGljLnByb3RvdHlwZS5wZXJjZW50YWdlKTogUmV0dXJucyB0aGUgcGVyY2Vu
dGFnZSBvZiB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uIGRpdmlkZWQgdG8gdGhlIG1lYW4uCisgICAg
ICAgIChTdGF0aXN0aWMucHJvdG90eXBlLmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhKTogQ2FsY3Vs
YXRlcyB0aGUgY29uZmlkZW5jZSBkZWx0YSBmb3IgdGhlIGN1cnJlbnQgc2FtcGxlZCBkYXRhIGdp
dmVuIGEgY29uZmlkZW5jZSBsZXZlbC4KKyAgICAgICAgKFNhbXBsZXIpOiBNYW5hZ2VzIHNhbXBs
aW5nIG11bHRpcGxlIGRhdGEgcG9pbnRzIGF0IHRoZSBzYW1lIHRpbWUgb2Zmc2V0LgorICAgICAg
ICAoU2FtcGxlci5wcm90b3R5cGUuc3RhcnRTYW1wbGluZyk6IENhbGxlZCBhZnRlciB3YXJtaW5n
IHVwIHBlcmlvZC4gUmVzdGFydHMgY29sbGVjdGluZyBzYW1wbGVkIGRhdGEgcG9pbnRzLgorICAg
ICAgICAoU2FtcGxlci5wcm90b3R5cGUuc2FtcGxlKTogQWRkIGEgbmV3IGRhdGEgdmVjdG9yIGF0
IGEgZ2l2ZW4gdGltZSBvZmZzZXQuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVu
bmVyOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlczogQWRkZWQuCisg
ICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzOiBBZGRl
ZC4KKyAgICAgICAgVGhlIGJlbmNobWFyayBydW5uZXIgcGFnZSBhbmQgY3NzLgorICAgICAgICAK
KyAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qczogQWRk
ZWQuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LndpbGxBZGRUZXN0RnJh
bWUpOiBDYWxsZWQgYWZ0ZXIgdGhlIHRlc3QgPGlmcmFtZT4gaXMgY3JlYXRlZC4KKyAgICAgICAg
KHdpbmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQuZGlkUnVuVGVzdCk6IENhbGxlZCBhZnRlciBy
dW5uaW5nIGEgdGVzdCBpcyBmaW5pc2hlZC4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtSdW5u
ZXJDbGllbnQud2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb24pOiBDYWxsZWQgYXQgdGhlIGJlZ2lubmlu
ZyBiZWZvcmUgcnVubmluZyBhbnkgdGVzdC4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtSdW5u
ZXJDbGllbnQuZGlkUnVuU3VpdGVzKTogQ2FsbGVkIGFmdGVyIHJ1bm5pbmcgYWxsIHRlc3RzIG9m
IGEgc3VpdGUuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LmRpZEZpbmlz
aExhc3RJdGVyYXRpb24pOiBDYWxsZWQgYWZ0ZXIgcnVubmluZyB0aGUgbGFzdCB0ZXN0LgorICAg
ICAgICAKKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQuYnJvd3Nlcik6Cisg
ICAgICAgIChzaG93U2VjdGlvbik6IFNob3dzIGEgc2VjdGlvbiBpbiB0aGUgYW5pbW9tZXRlci5o
dG1sIHBhZ2UuCisgICAgICAgIChzdGFydFRlc3QpOiBDYWxsZWQgd2hlbiB0aGUgIlN0YXJ0IFRl
c3QiIGJ1dHRvbiBpcyBjbGlja2VkLgorICAgICAgICAoc2hvd1Jlc3VsdHMpOiBDYWxsZWQgYWZ0
ZXIgZmluaXNoaW5nIGFsbCB0aGUgdGVzdHMuCisgICAgICAgIChzaG93R3JhcGgpOiBDYWxsZWQg
d2hlbiAiQ2xpY2suLi4iIGJ1dHRvbiBpbiB0aGUgIlNhbXBsZXMiIGNvbHVtbiBvZiB0aGUgcmVz
dWx0cyB0YWJsZSBpcyBjbGlja2VkCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVu
bmVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKEJlbmNo
bWFya1J1bm5lclN0YXRlKTogVHJhY2tzIG9mIHRoZSBjdXJyZW50IHJ1bm5pbmcgPHN1aXRlLCB0
ZXN0PgorICAgICAgICAoQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmN1cnJlbnRTdWl0
ZSk6IHJldHVybnMgdGhlIGN1cnJlbnQgcnVubmluZyBzdWl0ZS4KKyAgICAgICAgKEJlbmNobWFy
a1J1bm5lclN0YXRlLnByb3RvdHlwZS5jdXJyZW50VGVzdCk6IHJldHVybnMgdGhlIGN1cnJlbnQg
cnVubmluZyB0ZXN0LgorICAgICAgICAoQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmlz
Rmlyc3RUZXN0KTogcmV0dXJucyB0cnVlIGlmIHdlIGFyZSBydW5uaW5nIHRoZSBmaXJzdCB0ZXN0
IGluIHRoZSBjdXJyZW50IHN1aXRlLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyU3RhdGUucHJv
dG90eXBlLm5leHQpOiBhZHZhbmNlcyB0byB0aGUgbmV4dCB0ZXN0LgorICAgICAgICAoQmVuY2ht
YXJrUnVubmVyU3RhdGUucHJvdG90eXBlLnByZXBhcmVDdXJyZW50VGVzdCk6IENyZWF0ZXMgYSBu
ZXcgPGlmcmFtZT4gYW5kIHdhaXRzIGZvciBpdCB0byBsb2FkIGEgdGVzdC4KKyAgICAgICAgCisg
ICAgICAgIChCZW5jaG1hcmtSdW5uZXIpOiBNYW5hZ2VzIHJ1bm5pbmcgdGhlIHRlc3RzIGFuZCBj
b21tdW5pY2F0aW5nIHdpdGggdGhlIGJlbmNobWFya1J1bm5lckNsaWVudC4KKyAgICAgICAgKEJl
bmNobWFya1J1bm5lci5wcm90b3R5cGUud2FpdEZvckVsZW1lbnQpOiBXYWl0cyBmb3IgYW4gZWxl
bWVudCB0byBiZSBjcmVhdGVkLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5f
YXBwZW5kRnJhbWUpOiBDcmVhdGVzIGEgbmV3IDxpZnJhbWU+IGVsZW1lbnQuCisgICAgICAgIChC
ZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9yZW1vdmVGcmFtZSk6IFJlbW92ZWQgdGhlIGN1cnJl
bnQgPGlmcmFtZT4gZWxlbWVudC4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUu
X3J1blRlc3RBbmRSZWNvcmRSZXN1bHRzKTogUnVucyB0aGUgY3VycmVudCB0ZXN0IGFuZCBzYXZl
cyBpdHMgcmVzdWx0cy4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuc3RlcCk6
IEVpdGhlciBydW5zIHRoZSBjdXJyZW50IHRlc3QgaWYgdGhlcmUgaXMgb3Igc3RhcnQgYSBuZXcg
aXRlcmF0aW9uLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5ydW5BbGxTdGVw
cyk6IExvb3BzIHRvIHJ1biBhbGwgdGhlIHRlc3RzIGFuZCBtb3ZlIHRvIHRoZSBuZXh0IGl0ZXJh
dGlvbi4KKyAgICAgICAgKHRoaXMuX3J1bk5leHRJdGVyYXRpb24pOiBTdGFydHMgYSBuZXcgaXRl
cmF0aW9uIG9yIHNob3cgdGhlIHJlc3VsdHMuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIucHJv
dG90eXBlLnJ1bk11bHRpcGxlSXRlcmF0aW9ucyk6IExvb3BzIHRvIHJ1biBhbGwgdGhlIGl0ZXJh
dGlvbnMgYW5kIHNob3cgdGhlIHJlc3VsdHMKKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90
b3R5cGUuX2ZpbmFsaXplKTogU3RhcnRzIGEgbmV3IGl0ZXJhdGlvbi4KKworICAgICAgICAqIEFu
aW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9ncmFwaC5qczogQWRkZWQuCisgICAgICAgIChncmFw
aCk6IERyYXdzIGEgY2hhcnQgZm9yIGEgdGVzdCBzYW1wbGVkIGRhdGEuIEl0IHNob3dzIHR3byB5
LWF4aXNlczogb25lIGZvciB0aGUgcGFydGljbGVzIGFuZCB0aGUgc2Vjb25kIGZvciBGUFMuCisg
ICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy90ZXN0cy5qczog
QWRkZWQuCisgICAgICAgIChzdWl0ZUZyb21OYW1lKTogUmV0dXJucyBhIHN1aXRlIGdpdmVuIGl0
cyBuYW1lLgorICAgICAgICAodGVzdEZyb21OYW1lKTogUmV0dXJucyBhIHRlc3QgZ2l2ZW4gaXRz
IHN1aXRlIGFuZCBuYW1lLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzOiBB
ZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlczogQWRk
ZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctY2FudmFzLWltYWdlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWlt
YWdlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9ib3VuY2luZy1zaGFwZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2lu
Zy1zdmctc2hhcGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL3Jlc291cmNlczogQWRkZWQuCisgICAgICAgIFRoZSBib3VuY2luZyBw
YXJ0aWNsZXMgdGVzdCBwYWdlcy4gVGhlIHNhbWUgdGVzdHMgYXJlIGRvbmUgYXMgSFRNTCBlbGVt
ZW50cywKKyAgICAgICAgU1ZHRWxlbWVudHMgb3IgZHJhd24gb24gYSBjYW52YXMuCisgICAgICAg
IAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNl
cy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nQ2Fu
dmFzSW1hZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlLgorICAgICAgICAoQm91
bmNpbmdDYW52YXNJbWFnZS5wcm90b3R5cGUuX2RyYXcpOiBEcmF3cyBhbiBpbWFnZSBvbiB0aGUg
Y29udGV4dCBvZiBhIGNhbnZhcy4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90
eXBlLmFuaW1hdGUpOiBNb3ZlcyB0aGUgQm91bmNpbmdDYW52YXNJbWFnZSB0byBhIG5ldyBsb2Nh
dGlvbi4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlKTogQSBz
dWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS4KKyAgICAgICAgKEJvdW5jaW5nQ2Fu
dmFzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRp
Y2xlIG9mIHR5cGUgQm91bmNpbmdDYW52YXNJbWFnZS4KKyAgICAgICAgCisgICAgICAgIChCb3Vu
Y2luZ0NhbnZhc0ltYWdlc0FuaW1hdG9yKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNs
ZXNBbmltYXRvci4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0b3IucHJvdG90
eXBlLmFuaW1hdGUpOiBDbGVhcnMgdGhlIGNvbnRleHQgYmVmb3JlIHJlZHJhd2luZyB0aGUgcGFy
dGljbGVzLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJr
KTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuCisgICAgICAgIChC
b3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVh
dGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlLgorICAgICAgICAo
Qm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTog
Q3JlYXRlcyBhbiBhbmltYXRvciBvZiB0eXBlIEJvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0b3Iu
CisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5j
aG1hcmsgb2YgdHlwZSBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay4KKyAgICAgICAgCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLWNhbnZhcy1zaGFwZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdDYW52YXNT
aGFwZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUuCisgICAgICAgIChCb3VuY2lu
Z0NhbnZhc1NoYXBlLnByb3RvdHlwZS5fZHJhdyk6IERyYXdzIGEgc2hhcGUgb24gdGhlIGNvbnRl
eHQgb2YgYSBjYW52YXMuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5h
bmltYXRlKTogTW92ZXMgdGhlIEJvdW5jaW5nQ2FudmFzU2hhcGUgdG8gYSBuZXcgbG9jYXRpb24u
CisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZSk6IEEgc3ViIGNs
YXNzIG9mIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1No
YXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0aWNsZSBv
ZiB0eXBlIEJvdW5jaW5nQ2FudmFzU2hhcGUuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdD
YW52YXNTaGFwZXNBbmltYXRvcik6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzQW5p
bWF0b3IuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yLnByb3RvdHlwZS5h
bmltYXRlKTogQ2xlYXJzIHRoZSBjb250ZXh0IGJlZm9yZSByZWRyYXdpbmcgdGhlIHBhcnRpY2xl
cy4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyayk6IEEg
c3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLgorICAgICAgICAoQm91bmNp
bmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBh
IHN0YWdlIG9mIHR5cGUgQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS4KKyAgICAgICAgKEJvdW5j
aW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvcik6IENyZWF0
ZXMgYW4gYW5pbWF0b3Igb2YgdHlwZSBCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yLgorICAg
ICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJr
IG9mIHR5cGUgQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsuCisgICAgICAgIAorICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2lu
Zy1pbWFnZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdJbWFnZSk6IEEgc3ViIGNsYXNz
IG9mIEJvdW5jaW5nUGFydGljbGUuCisgICAgICAgIChCb3VuY2luZ0ltYWdlLnByb3RvdHlwZS5f
bW92ZSk6IE1vdmUgdGhlIHBhcnRpY2xlIHRvIGEgbmV3IGxvY2F0aW9uLiBBcHBseSB0cmFuc2Zv
cm0gc2luY2UgaXQgZG9lcyBub3QgcmVxdWlyZSBsYXlvdXQuCisgICAgICAgIChCb3VuY2luZ0lt
YWdlLnByb3RvdHlwZS5hbmltYXRlKTogUm90YXRlcyBhbmQgbW92ZXMgdGhlIHNoYXBlIHRvIGEg
bmV3IGxvY2F0aW9uLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nSW1hZ2VzU3RhZ2UpOiBB
IHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLgorICAgICAgICAoQm91bmNpbmdJ
bWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGUgYSBwYXJ0aWNsZSBv
ZiB0eXBlIEJvdW5jaW5nSW1hZ2UuCisgICAgICAgIChCb3VuY2luZ0ltYWdlc1N0YWdlLnByb3Rv
dHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgZWxl
bWVudCBmb3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4gbGlzdC4KKyAgICAgICAgCisgICAgICAgIChC
b3VuY2luZ0ltYWdlc0JlbmNobWFyayk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVz
QmVuY2htYXJrLgorICAgICAgICAoQm91bmNpbmdJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNy
ZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUgQm91bmNpbmdJbWFnZXNTdGFnZS4K
KyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNo
bWFyayBvZiB0eXBlIEJvdW5jaW5nSW1hZ2VzQmVuY2htYXJrLgorICAgICAgICAKKyAgICAgICAg
KiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmct
cGFydGljbGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVSb3RhdGVyKTog
TWFuYWdlcyByb3RhdGluZyBhIEJvdW5jaW5nUGFydGljbGUuCisgICAgICAgIChCb3VuY2luZ1Bh
cnRpY2xlUm90YXRlci5wcm90b3R5cGUubmV4dCk6IE1vdmVzIHRoZSB0aW1lIGJ5IHRoZSBiZW5j
aG1hcmsncyBjdXJyZW50IHRpbWVEYXRhLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZVJvdGF0
ZXIucHJvdG90eXBlLmRlZ3JlZSk6IFJldHVybnMgdGhlIGN1cnJlbnQgcm90YXRpbmcgZGVncmVl
LgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZVJvdGF0ZXIucHJvdG90eXBlLnJvdGF0ZVopOiBS
ZXR1cm5zIENTUyBmb3JtYXR0ZWQgdHJhbnNmb3JtIHJvdGF0ZVooKSB2YWx1ZS4KKyAgICAgICAg
KEJvdW5jaW5nUGFydGljbGVSb3RhdGVyLnByb3RvdHlwZS5yb3RhdGUpOiBSZXR1cm5zIFNWRyBm
b3JtYXR0ZWQgdHJhbnNmb3JtIHJvdGF0ZSgpIHZhbHVlLiAgICAgICAgCisgICAgICAgIAorICAg
ICAgICAoQm91bmNpbmdQYXJ0aWNsZSk6IEJhc2UgY2xhc3MgZm9yIGEgYm91bmNpbmcgcGFydGlj
bGUuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5jZW50ZXIpOiBSZXR1cm5z
IHRoZSBjZW50ZXIgcG9pbnQgb3IgdGhlIHBhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdQYXJ0
aWNsZS5wcm90b3R5cGUuYW5pbWF0ZSk6IE1vdmVzIHRoZSBwYXJ0aWNsZSBiYXNlZCBvbiBpdHMg
Y3VycmVudCBwb3NpdGlvbiwgYW5nbGUgYW5kIHZlbG9jaXR5LgorICAgICAgICAKKyAgICAgICAg
KEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IpOiBBIHN1YiBjbGFzcyBvZiBBbmltYXRvci4KKyAg
ICAgICAgKEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBNYW5h
Z2VzIGFuaW1hdGluZyB0aGUgYm91bmNpbmcgcGFydGljbGVzIHRocm91Z2ggdGhlIHRlc3Qgc3Rh
Z2UuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZSk6IFJlcHJlc2Vu
dHMgdGhlIGNvbnRhaW5lciBvZiBhbGwgdGhlIGJvdW5jaW5nIHBhcnRpY2xlcy4KKyAgICAgICAg
KEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnNpemUpOiBSZXR1cm5zIHRoZSBzaXpl
IG9mIHRoZSBzdGFnZSBleGNsdWRpbmcgdGhlIENTUyBwYWRkaW5nLgorICAgICAgICAoQm91bmNp
bmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucGFyc2VTaGFwZVBhcmFtdGVycyk6IEdldHMgdGhl
IHNoYXBlIHBhcmFtZXRlcnMgZm9yIHNoYXBlIGFuaW1hdGluZyB0ZXN0cy4KKyAgICAgICAgKEJv
dW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBBbmltYXRlcyBhbGwgdGhl
IHBhcnRpY2xlcy4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnR1
bmUpOiBDaGFuZ2VzIHRoZSB0ZXN0IGJ5IGFkZGluZyBvciByZW1vdmluZyBwYXJ0aWNsZXMuCisg
ICAgICAgIAorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmspOiBSdW5zIHRoZSBi
ZW5jaG1hcmsgZm9yIGJvdW5jaW5nIHBhcnRpY2xlcyB0ZXN0LgorICAgICAgICAoQm91bmNpbmdQ
YXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyBhbiBh
bmltYXRvciBvZiB0eXBlIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IuCisgICAgICAgIChCb3Vu
Y2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUudHVuZSk6IFR1bmVzIHRoZSB0ZXN0IHRo
cm91Z2ggdGhlIGN1cnJlbnQgc3RhZ2UuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc0JlbmNo
bWFyay5wcm90b3R5cGUuY2xlYXIpOiBDbGVhcnMgdGhlIHRlc3QgdGhyb3VnaCB0aGUgY3VycmVu
dCBzdGFnZS4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5z
aG93UmVzdWx0cyk6IFNob3dzIHRoZSByZXN1bHRzL3Byb2dyZXNzIHRocm91Z2ggaXRzIHJlY29y
ZFRhYmxlIGFuZCBwcm9ncmVzc0Jhci4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90
ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXNoYXBlcy5qczogQWRk
ZWQuCisgICAgICAgIChCb3VuY2luZ1NoYXBlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0
aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nU2hhcGUucHJvdG90eXBlLl9jcmVhdGVTcGFuKTogQ3Jl
YXRlcyBhIDxzcGFuPiBlbGVtZW50IGFuZCB0YWtlcyB0aGUgc2hhcGUgYW5kIGNsaXBwaW5nIGNs
YXNzZXMgaW50byBjb25zaWRlcmF0aW9uLgorICAgICAgICAoQm91bmNpbmdTaGFwZS5wcm90b3R5
cGUuX21vdmUpOiBNb3ZlcyB0aGUgcGFydGljbGUgdG8gYSBuZXcgbG9jYXRpb24uIEFwcGx5IHRy
YW5zZm9ybSBzaW5jZSBpdCBkb2VzIG5vdCByZXF1aXJlIGxheW91dC4KKyAgICAgICAgKEJvdW5j
aW5nU2hhcGUucHJvdG90eXBlLmFuaW1hdGUpOiBSb3RhdGVzIGFuZCBtb3ZlcyB0aGUgc2hhcGUg
dG8gYSBuZXcgbG9jYXRpb24uCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdTaGFwZXNTdGFn
ZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuCisgICAgICAgIChCb3Vu
Y2luZ1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0
aWNsZSBvZiB0eXBlIEJvdW5jaW5nU2hhcGUuCisgICAgICAgIChCb3VuY2luZ1NoYXBlc1N0YWdl
LnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1vdmVzIHRoZSBjb3JyZXNwb25k
aW5nIGVsZW1lbnQgZm9ybSB0aGUgcGFyZW50IGNoaWxkcmVuIGxpc3QuCisgICAgICAgIAorICAg
ICAgICAoQm91bmNpbmdTaGFwZXNCZW5jaG1hcmspOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1Bh
cnRpY2xlc0JlbmNobWFyay4KKyAgICAgICAgKEJvdW5jaW5nU2hhcGVzQmVuY2htYXJrLnByb3Rv
dHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nU2hhcGVz
U3RhZ2UuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMg
YSBiZW5jaG1hcmsgb2YgdHlwZSBCb3VuY2luZ1NoYXBlc0JlbmNobWFyay4KKyAgICAgICAgCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLXN2Zy1pbWFnZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZSk6
IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUuCisgICAgICAgIChCb3VuY2luZ1N2Z0lt
YWdlLnByb3RvdHlwZS5fbW92ZSk6IE1vdmUgdGhlIHBhcnRpY2xlIHRvIGEgbmV3IGxvY2F0aW9u
LiBBcHBseSB0cmFuc2Zvcm0gc2luY2UgaXQgZG9lcyBub3QgcmVxdWlyZSBsYXlvdXQuCisgICAg
ICAgIChCb3VuY2luZ1N2Z0ltYWdlLnByb3RvdHlwZS5hbmltYXRlKTogUm90YXRlcyBhbmQgbW92
ZXMgdGhlIHNoYXBlIHRvIGEgbmV3IGxvY2F0aW9uLgorICAgICAgICAKKyAgICAgICAgKEJvdW5j
aW5nU3ZnSW1hZ2VzU3RhZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdl
LgorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGlj
bGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlwZSBCb3VuY2luZ1N2Z0ltYWdlLgorICAgICAg
ICAoQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVk
KTogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZm9ybSB0aGUgcGFyZW50IGNoaWxk
cmVuIGxpc3QuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsp
OiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay4KKyAgICAgICAgKEJv
dW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMg
YSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UuCisgICAgICAgICh3aW5kb3cu
YmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBCb3Vu
Y2luZ1N2Z0ltYWdlc0JlbmNobWFyay4gCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpz
OiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGUpOiBBIHN1YiBjbGFzcyBvZiBCb3Vu
Y2luZ1BhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0
ZUNpcmNsZSk6IFJldHVybnMgYSBuZXdseSBjcmVhdGVkIFNWRyA8Y2lyY2xlPiBlbGVtZW50Lgor
ICAgICAgICAoQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVJlY3QpOiBSZXR1cm5z
IGEgbmV3bHkgY3JlYXRlZCBTVkcgPHJlY3Q+IGVsZW1lbnQuIAorICAgICAgICAoQm91bmNpbmdT
dmdTaGFwZS5wcm90b3R5cGUuX21vdmUpOiBNb3ZlIHRoZSBwYXJ0aWNsZSB0byBhIG5ldyBsb2Nh
dGlvbi4gQXBwbHkgdHJhbnNmb3JtIHNpbmNlIGl0IGRvZXMgbm90IHJlcXVpcmUgbGF5b3V0Lgor
ICAgICAgICAoQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuYW5pbWF0ZSk6IFJvdGF0ZXMgYW5k
IG1vdmVzIHRoZSBzaGFwZSB0byBhIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgCisgICAgICAgIChC
b3VuY2luZ1N2Z1NoYXBlc1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNT
dGFnZS4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmVuc3VyZUNs
aXBTdGFySXNDcmVhdGVkKTogRW5zdXJlIHRoZSBhIDxjbGlwUGF0aD4gZWxlbWVudCB3aXRoIGlk
PSJzdGFyLWNsaXAiIGlzIGNyZWF0ZWQuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdl
LnByb3RvdHlwZS5lbnN1cmVEZWZzSXNDcmVhdGVkKTogRW5zdXJlIGEgPGRlZnM+IGVsZW1lbnQg
aXMgY3JlYXRlZC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNy
ZWF0ZUdyYWRpZW50KTogQ3JlYXRlcyBhIDxsaW5lYXJHcmFkaWVudD4gZWxlbWVudC4KKyAgICAg
ICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLl9jcmVhdGVEZWZzKTogQ3JlYXRl
cyBhIG5ldyA8ZGVmcz4gZWxlbWVudC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2Uu
cHJvdG90eXBlLl9jcmVhdGVDbGlwU3Rhcik6IENyZWF0ZSBhIG5ldyA8Y2xpcFBhdGg+IGVsZW1l
bnQgd2l0aCBpZD0ic3Rhci1jbGlwIi4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2Uu
cHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91
bmNpbmdTdmdTaGFwZS4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBl
LnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCk6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50
IGZvcm0gdGhlIHBhcmVudCBjaGlsZHJlbiBsaXN0LgorICAgICAgICAKKyAgICAgICAgKEJvdW5j
aW5nU3ZnU2hhcGVzQmVuY2htYXJrKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNC
ZW5jaG1hcmsuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUu
Y3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ1N2Z1NoYXBlc1N0
YWdlLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEg
YmVuY2htYXJrIG9mIHR5cGUgQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsuCisgICAgICAgIAor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzOiBBZGRlZC4KKyAgICAgICAg
QSBzaGFyZWQgY3NzIGZvciBhbGwgdGhlIHRlc3QgcGFnZXMuIEl0IHNldHMgdGhlIGNzcyBwcm9w
ZXJ0aWVzIGZvciB0aGUgdGVzdCBwYWdlIGFuZCB0aGUgc3RhZ2UgZWxlbWVudC4KKyAgICAgICAg
CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvYmVuY2htYXJrLmpzOiBBZGRl
ZC4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlKTogVHJhY2tzIHRoZSBzdGF0ZSBvZiB0aGUgYmVu
Y2htYXJrIHRlc3QuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuX3RpbWVPZmZz
ZXQpOiBSZXR1cm5zIHRoZSB0aW1lT2Zmc2V0IG9mIGEgc3RhZ2UuCisgICAgICAgIChCZW5jaG1h
cmtTdGF0ZS5wcm90b3R5cGUuX21lc3NhZ2UpOiBSZXR1cm5zIHRoZSBtZXNzYWdlIG9mIGEgc3Rh
Z2UuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUudXBkYXRlKTogU2V0cyB0aGUg
Y3VycmVudFRpbWVPZmZzZXQgdG8gYSBuZXcgdmFsdWUuCisgICAgICAgIChCZW5jaG1hcmtTdGF0
ZS5wcm90b3R5cGUuc2FtcGxpbmdUaW1lT2Zmc2V0KTogUmV0dXJucyB0aGUgdGltZU9mZnNldCBv
ZiB0aGUgc2FtcGxpbmcgc3RhZ2UuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUu
Y3VycmVudFN0YWdlKTogUmV0dXJucyB0aGUgY3VycmVudCBzdGFnZSBvZiB0aGUgYmVuY2htYXJr
LgorICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBlLmN1cnJlbnRNZXNzYWdlKTogUmV0
dXJucyB0aGUgbWVzc2FnZSBvZiB0aGUgY3VycmVudCBzdGFnZSBhbmQgdGltZU9mZnNldC4KKyAg
ICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5jdXJyZW50UHJvZ3Jlc3MpOiBSZXR1cm5z
IGEgcGVyY2VudGFnZSBvZiBob3cgbXVjaCB0aGUgYmVuY2htYXJrIGlzIHJ1bm5pbmcuCisgICAg
ICAgIAorICAgICAgICAoQW5pbWF0b3IpOiBNYW5hZ2VzIGFuaW1hdGluZyB0aGUgdGVzdC4KKyAg
ICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5zdGFydCk6IENhbGxlZCBpZiBhbmltYXRpbmcgdXNp
bmcgc2V0SW50ZXJ2YWwgaXMgcmVxdWVzdGVkLgorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBl
LnRpbWVEZWx0YSk6IFJldHVybnMgdGhlIGN1cnJlbnQgdGltZURlbHRhIAorICAgICAgICAoQW5p
bWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBNYW5hZ2VzIHRoZSB0ZXN0IGFuaW1hdGlvbi4KKyAg
ICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlTG9vcCk6IENhbGxlZCBpZiBhbmltYXRp
bmcgdXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGlzIHJlcXVlc3RlZC4gCisgICAgICAgIAor
ICAgICAgICAoQmVuY2htYXJrKTogTWFuYWdlcyBydW5uaW5nIHRoZSB0ZXN0IGJlbmNobWFyayBh
bmQgcmVjb3JkaW5nIHRoZSBzYW1wbGVkIGRhdGEuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90
eXBlLnBhcnNlUGFyYW1ldGVycyk6IFBhcnNlcyB0aGUgdGVzdCBwYXJhbWV0ZXJzLgorICAgICAg
ICAoQmVuY2htYXJrLnByb3RvdHlwZS5zdGFydCk6IFN0YXJ0cyB0aGUgYmVuY2htYXJrLgorICAg
ICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS51cGRhdGUpOiBDYWxsZWQgZnJvbSB0aGUgYW5pbWF0
b3IuYW5pbWF0ZSgpIHRvIGNoYW5nZSB0aGUgY29tcGxleGl0eSBvZiB0aGUgdGVzdC4KKyAgICAg
ICAgKEJlbmNobWFyay5wcm90b3R5cGUucmVjb3JkKTogU2hvd3MgdGhlIGN1cnJlbnQgKG5vdCBm
aW5hbCkgcmVzdWx0cyBvZiB0aGUgYmVuY2htYXJrLgorICAgICAgICAoQmVuY2htYXJrLnByb3Rv
dHlwZS5yZXNvbHZlV2hlbkZpbmlzaGVkKTogU3BpbnMgdW50aWwgdGhlIGJlbmNobWFyayBpcyBm
aW5pc2hlZCBhbmQgcmV0dXJucyBpdHMgcmVzdWx0cy4KKyAgICAgICAgKEJlbmNobWFyay5wcm90
b3R5cGUucnVuKTogU3RhcnRzIHRoZSB0ZXN0LCBydW5zIGl0LCB3YWl0cyB1bnRpbCBpdCBpcyBm
aW5pc2hlZCBhbmQgcmV0dXJuIGl0cyByZXN1bHRzLgorICAgICAgICAod2luZG93LnJ1bkJlbmNo
bWFyayk6IENhbGxlZCBmcm9tIHRoZSBiZW5jaG1hcmsgcnVubmVyIHRocm91Z2ggdGhlIHN1aXRl
IGNvbnRyb2xsZXIgcnVuLWNhbGxiYWNrLiAKKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy9yZXNvdXJjZXMvbWF0aC5qczogQWRkZWQuCisgICAgICAgIChNYXRyaXgpOiBBIG1h
dHJpeCBvYmplY3QuCisgICAgICAgIChWZWN0b3IzKTogQSB2ZWN0b3Igb2Ygc2l6ZSAzIG9iamVj
dC4KKyAgICAgICAgKE1hdHJpeDMpOiBBIG1hdHJpeCBvZiBzaXplIDN4MyBvYmplY3QuCisgICAg
ICAgIAorICAgICAgICAoQ29udHJvbGxlcik6IENsb3NlZC1sb29wIGNvbnRyb2xsZXIgZm9yIGEg
c2V0LXBvaW50IHkuCisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5fc2F0KTogTGltaXRz
IHRoZSBvdXRwdXQgdG8gYSBjZXJ0YWluIHJhbmdlLgorICAgICAgICAoQ29udHJvbGxlci5wcm90
b3R5cGUudHVuZSk6IHByb2R1Y2VzIHRoZSBwaWQgZm9yIHRoZSBiZW5jaG1hcmsgd2hpY2ggaXMg
dHJlYXRlZCBhcyBhIGNsb3NlZC1sb29wIHN5c3RlbS4KKyAgICAgICAgCisgICAgICAgIChFc3Rp
bWF0b3IpOiBJbXBsZW1lbnQgS2FsbWFuIGZpbHRlciB0byBnZXQgYW4gZXN0aW1hdGUgZm9yIGEg
c2FtcGxlZCBkYXRhIHBvaW50LgorICAgICAgICAoRXN0aW1hdG9yLnByb3RvdHlwZS5lc3RpbWF0
ZSk6IFJldHVybnMgYW4gZXN0aW1hdGUgZm9yIGZvciBhIHNhbXBsZWQgZGF0YSBwb2ludC4KKyAg
ICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanM6IEFk
ZGVkLgorICAgICAgICAoU3RhZ2UpOiBBIGJhc2UgY2xhc3MgZm9yIG1hbmFnaW5nIHRoZSB0ZXN0
IGNvbXBsZXhpdHkgYW5kIHRlc3QgYW5pbWF0aW9uLgorICAgICAgICAoU3RhZ2UucHJvdG90eXBl
LnNpemUpOiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBzdGFnZSBleGNsdWRpbmcgdGhlIENTUyBw
YWRkaW5nLgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLmNsZWFyKTogQ2xlYXJzIHRoZSBzdGFn
ZSBmcm9tIGFsbCBpdHMgYW5pbWF0aW9uIGVsZW1lbnRzLgorICAgICAgICAoU3RhZ2UucHJvdG90
eXBlLnJhbmRvbSk6IFJldHVybnMgYSByYW5kb20gZmxvYXQuCisgICAgICAgIChTdGFnZS5wcm90
b3R5cGUucmFuZG9tSW50KTogUmV0dXJucyBhIHJhbmRvbSBpbnRlZ2VyLgorICAgICAgICAoU3Rh
Z2UucHJvdG90eXBlLnJhbmRvbVBvc2l0aW9uKTogUmV0dXJucyBhIHJhbmRvbSBwb3NpdGlvbi4K
KyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5yYW5kb21WZWxvY2l0eSk6IFJldHVybnMgYSByYW5k
b20gdmVsb2NpdHkuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tQW5nbGUpOiBSZXR1
cm5zIGEgcmFuZG9tIGFuZ2xlLgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLnJhbmRvbUNvbG9y
KTogUmV0dXJucyBhIHJhbmRvbSBjb2xvciBub3QgdG9vIGRhcmsgYW5kIG5vdCB0b28gbGlnaHQu
CisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3V0aWxpdGll
cy5qczogQWRkZWQuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50Ll9wYXJzZSk6IEdp
dmVuIGEgc2VwYXJhdG9yIGNoYXJhY3RlciwgaXQgcGFyZXNlcyBhIHN0cmluZyB0byBhIHNldCBv
ZiA8a2V5LCB2YWx1ZT4gcGFpcnMuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LnBh
cnNlUGFyYW1ldGVycyk6IFBhcnNlcyBhIHRlc3QgcGFyYW1ldGVycy4KKyAgICAgICAgKHdpbmRv
dy5iZW5jaG1hcmtDbGllbnQucGFyc2VBcmd1bWVudHMpOiBQYXJzZXMgYSB0YWcgYXJndW1lbnRz
LgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5leHRlbmRPYmplY3QpOiBBZGRzIHRo
ZSBhdHRyaWJ1dGVzIGFuZCB0aGVpciB2YWx1ZXMgb2YgYW4gb2JqZWN0IHRvIGFub3RoZXIgb2Jq
ZWN0LgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jb3B5T2JqZWN0KTogQ29waWVz
IHRoZSBhdHRyaWJ1dGVzIGFuZCB0aGVpciB2YWx1ZXMgb2YgYW4gb2JqZWN0IHRvIGEgbmV3IG9i
amVjdC4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQubWVyZ2VPYmplY3RzKTogQ29w
aWVzIHRoZSBhdHRyaWJ1dGVzIGFuZCB0aGVpciB2YWx1ZXMgb2YgdHdvIG9iamVjdHMgdG8gYSBu
ZXcgb2JqZWN0LgorICAgICAgICAod2luZG93LnJ1bkJlbmNobWFyayk6IENhbGxlZCBmcm9tIHRo
ZSBiZW5jaG1hcmsgcnVubmVyIHRocm91Z2ggdGhlIHN1aXRlIGNvbnRyb2xsZXIgcnVuLWNhbGxi
YWNrLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4t
eWFuZy5wbmc6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lp
bi15YW5nLnN2ZzogQWRkZWQuCisgICAgICAgIEltYWdlcyB3aGljaCBhcmUgc2hhcmVkIGJ5IGFs
bCB0aGUgdGVzdHMuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGV4dDog
QWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRt
bDogQWRkZWQuCisgICAgICAgIFRoaXMgdGVzdCBzdGFja3MgY29udGFpbmVyIDxkaXY+IGVsZW1l
bnRzIG9uIHRvcCBvZiBlYWNoIG90aGVyLiBUaGUgdGVzdAorICAgICAgICBhZGRzIHRleHQgaXRl
bXMgdG8gdG9wbW9zdCBjb250YWluZXIgPGRpdj4gdW50aWwgaXQgaXMgZnVsbC4gV2hlbiBpdCBp
cworICAgICAgICBmdWxsLCBhIG5ldyBjb250YWluZXIgPGRpdj4gaXMgY3JlYXRlZC4KKyAgICAg
ICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlczogQWRkZWQuCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKExheWVyaW5nVGV4dEFuaW1hdG9yKTogQSBzdWIgY2xhc3Mgb2Yg
QW5pbWF0b3IuCisgICAgICAgIChMYXllcmluZ1RleHRBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0
ZSk6IEZvcmNlcyBhIHJlZHJhdyB0byBoYXBwZW4uIEl0IGNhbGxzIHRoZSBzdGFnZSBhbmltYXRl
KCkgZnVuY3Rpb24uCisgICAgICAgIAorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UpOiBSZXBy
ZXNlbnRzIHRoZSBjb250YWluZXIgb2YgYWxsIHRoZSBzdGFja2VkIHRleHQgbGF5ZXJzLgorICAg
ICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VUZXh0SXRlbSk6IFBhcnNlcyBhIHRleHRJdGVt
IHdoaWNoIG1heSBiZSBhbiBvcGVuaW5nIHRhZywgYSBjbG9zaW5nIHRhZyBvciBhIHNlbGYtY2xv
c2luZyB0YWcuCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5pc09wZW5pbmdUZXh0SXRlbSk6
IFJldHVybnMgdHJ1ZSBpZiB0aGUgdGV4dEl0ZW0gaXMgYW4gb3BlbmluZyB0YWcgZS5nLiAnPG9s
PicuCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5pc0Nsb3NpbmdUZXh0SXRlbSk6IFJldHVy
bnMgdHJ1ZSBpZiAgdGhlIHRleHRJdGVtIGlzIGFuIGNsb3NpbmcgdGFnIGUuZy4gJzwvb2w+Lgor
ICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MuTGF5ZXJpbmdUZXh0U3Rh
Z2UudGV4dEl0ZW1zLm1hcCk6IENhbGN1bGF0ZXMgYW5kIHN0b3JlcyBpc09wZW5pbmcgYW5kIGlz
Q2xvc2luZyBmbGFncyBmb3IgZWFjaCB0ZXh0SXRlbS4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0
YWdlLmlzQ29sb3JhYmxlVGV4dEl0ZW0pOiBSZXR1cm5zIHRydWUgaWYgdGhlIHRleHRJdGVtIGlz
IHNlbGYtY2xvc2luZyB0YWcgZS5nLiAnPHA+Li4uPC9wPicuCisgICAgICAgIChMYXllcmluZ1Rl
eHRTdGFnZS5pc0luc2VydGFibGVUZXh0SXRlbSk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgdGV4dEl0
ZW1zIGNhdXNlcyBhIG5ldyBlbGVtZW50IHRvIGJlIGFkZGVkIHRvIHRoZSB0ZXh0IGxheWVycy4K
KyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmNvbG9yYWJsZVRleHRJdGVtcy5MYXllcmluZ1Rl
eHRTdGFnZS50ZXh0SXRlbXNGbGFncy5maWx0ZXIpOiBOdW1iZXIgb2YgY29sb3JhYmxlIHRleHRJ
dGVtcy4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmluc2VydGFibGVUZXh0SXRlbXMuTGF5
ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MuZmlsdGVyKTogTnVtYmVyIG9mIGluc2VydGFi
bGUgdGV4dEl0ZW1zLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuY29sb3JJbmRleFRvVGV4
dEVsZW1lbnRJbmRleCk6IE1hcHMgZnJvbSBjb2xvckluZGV4IFswLi5jb2xvcmFibGVUZXh0SXRl
bXMtMV0gdG8gdGV4dEVsZW1lbnRJbmRleCBbMC4uaW5zZXJ0YWJsZVRleHRJdGVtcy0xXS4KKyAg
ICAgICAgKExheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fbmV4dFRleHRJdGVtKTogTW92ZXMg
dGhlIF90ZXh0SXRlbUluZGV4IG9uZSBzdGVwIGZvcndhcmQgaW4gYSBsb29wIFswLi5MYXllcmlu
Z1RleHRTdGFnZS50ZXh0SXRlbXMubGVuZ3RoLTFdLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3Rh
Z2UucHJvdG90eXBlLl9wcmV2aW91c1RleHRJdGVtKTogTW92ZXMgdGhlIF90ZXh0SXRlbUluZGV4
IG9uZSBzdGVwIGJhY2t3YXJkIGluIGEgbG9vcC4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdl
LnByb3RvdHlwZS5fcHVzaFRleHRFbGVtZW50KTogQ3JlYXRlcyBhIG5ldyB0ZXh0SXRlbUVsZW1l
bnQgYW5kIGFkZHMgaXQgdG8gdGhlIHRvcG1vc3QgY29udGFpbmVyIDxkaXY+LgorICAgICAgICAo
TGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9wb3BUZXh0RWxlbWVudCk6IFJlbW92ZXMgdGhl
IGxhc3QgdGV4dEl0ZW1FbGVtZW50IGZyb20gdGhlIHRvcG1vc3QgY29udGFpbmVyIDxkaXY+Lgor
ICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9jb2xvclRleHRJdGVtKTogQ2hh
bmdlcyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBhIHNpbmdsZSBjb2xvcmFibGUgdGV4dEVsZW1l
bnQuIFRoZSBpbmRleCBhZHZhbmNlcyBpbiBhIGNpcmNsZSBbMC4uY29sb3JhYmxlVGV4dEl0ZW1z
LTFdLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBDaGFu
Z2VzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGFuZCB0aGUgdGV4dCBjb2xvciBvZiB0aGUgdGV4dEVs
ZW1lbnRzIHN1Y2ggdGhhdCBhIHJlZHJhdyBpcyBlbmZvcmNlZC4KKyAgICAgICAgKExheWVyaW5n
VGV4dFN0YWdlLnByb3RvdHlwZS50dW5lKTogQWRkcyBvciByZW1vdmVzIHRleHRFbGVtZW50cyB0
byB0aGUgc3RhZ2UuCisgICAgICAgIAorICAgICAgICAoTGF5ZXJpbmdUZXh0QmVuY2htYXJrKTog
UnVucyB0aGUgYmVuY2htYXJrIGZvciB0aGUgbGF5ZXJpbmcgdGV4dCB0ZXN0LgorICAgICAgICAo
TGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBz
dGFnZSBvZiB0eXBlIExheWVyaW5nVGV4dFN0YWdlLgorICAgICAgICAoTGF5ZXJpbmdUZXh0QmVu
Y2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvcik6IENyZWF0ZXMgYW4gYW5pbWF0b3Igb2Yg
dHlwZSBMYXllcmluZ1RleHRBbmltYXRvci4KKyAgICAgICAgKExheWVyaW5nVGV4dEJlbmNobWFy
ay5wcm90b3R5cGUudHVuZSk6IFR1bmVzIHRoZSB0ZXN0IHRocm91Z2ggdGhlIGN1cnJlbnQgc3Rh
Z2UuCisgICAgICAgIChMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlLmNsZWFyKTogQ2xl
YXJzIHRoZSB0ZXN0IHRocm91Z2ggdGhlIGN1cnJlbnQgc3RhZ2UuCisgICAgICAgIChMYXllcmlu
Z1RleHRCZW5jaG1hcmsucHJvdG90eXBlLnNob3dSZXN1bHRzKTogU2hvd3MgdGhlIHJlc3VsdHMv
cHJvZ3Jlc3MgdGhyb3VnaCBpdHMgcmVjb3JkVGFibGUgYW5kIHByb2dyZXNzQmFyCisgICAgICAg
ICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2Yg
dHlwZSBMYXllcmluZ1RleHRCZW5jaG1hcmsuCisKIDIwMTUtMDgtMjcgIENzYWJhIE9zenRyb2dv
bsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbRUZMXSBSRUdSRVNTSU9OKHIxODg3
OTMpOiBJdCBtYWRlIDIwMCBsYXlvdXQgdGVzdHMgYW5kIEJpbmRpbmdzL2V2ZW50LXRhcmdldC13
cmFwcGVyLmh0bWwgcGVyZm9ybWFuY2UgdGVzdCBmYWlsCkluZGV4OiBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL21haW4uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9tYWluLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9tYWluLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjM3IEBACitmdW5jdGlvbiBQb2ludCh4LCB5KSB7CisgICAgdGhpcy54ID0geDsK
KyAgICB0aGlzLnkgPSB5OworfQorCitQb2ludC5wcm90b3R5cGUgPSB7CisgICAgd2lkdGggOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMueDsKKyAgICB9LAorICAgIGhlaWdodCA6
IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy55OworICAgIH0sCisgICAgY2VudGVy
IDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy54IC8gMiwgdGhp
cy55IC8gMik7CisgICAgfSwKKyAgICBhZGQgOiBmdW5jdGlvbihvdGhlcikgeworICAgICAgICBy
ZXR1cm4gbmV3IFBvaW50KHRoaXMueCArIG90aGVyLngsIHRoaXMueSArIG90aGVyLnkpOworICAg
IH0sICAgIAorICAgIHN1YnRyYWN0IDogZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgcmV0dXJu
IG5ldyBQb2ludCh0aGlzLnggLSBvdGhlci54LCB0aGlzLnkgLSBvdGhlci55KTsKKyAgICB9LAor
ICAgIG11bHRpcGx5IDogZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQb2lu
dCh0aGlzLnggKiBvdGhlci54LCB0aGlzLnkgKiBvdGhlci55KTsKKyAgICB9LAorICAgIG1vdmUg
OiBmdW5jdGlvbihhbmdsZSwgdmVsb2NpdHksIHRpbWVEZWx0YSkgeworICAgICAgICB2YXIgeCA9
IHRoaXMueCArIE1hdGguY29zKGFuZ2xlKSAqIHZlbG9jaXR5ICogKHRpbWVEZWx0YSAvIDEwMDAp
OworICAgICAgICB2YXIgeSA9IHRoaXMueSArIE1hdGguc2luKGFuZ2xlKSAqIHZlbG9jaXR5ICog
KHRpbWVEZWx0YSAvIDEwMDApOworICAgICAgICByZXR1cm4gbmV3IFBvaW50KHgsIHkpOworICAg
IH0KK30KKworZnVuY3Rpb24gSW5zZXRzKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCkgeworICAg
IHRoaXMudG9wID0gdG9wOworICAgIHRoaXMucmlnaHQgPSByaWdodDsKKyAgICB0aGlzLmJvdHRv
bSA9IGJvdHRvbTsKKyAgICB0aGlzLmxlZnQgPSBsZWZ0OworfQorCitJbnNldHMucHJvdG90eXBl
ID0geworICAgIHdpZHRoIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLmxlZnQg
KyB0aGlzLnJpZ2h0OworICAgIH0sCisgICAgaGVpZ2h0IDogZnVuY3Rpb24oKSB7CisgICAgICAg
IHJldHVybiB0aGlzLnRvcCArIHRoaXMuYm90dG9tOworICAgIH0KK30KKworZnVuY3Rpb24gU2lt
cGxlUHJvbWlzZSgpIHsKKyAgICB0aGlzLl9jaGFpbmVkUHJvbWlzZSA9IG51bGw7CisgICAgdGhp
cy5fY2FsbGJhY2sgPSBudWxsOworfQorCitTaW1wbGVQcm9taXNlLnByb3RvdHlwZS50aGVuID0g
ZnVuY3Rpb24gKGNhbGxiYWNrKSB7CisgICAgaWYgKHRoaXMuX2NhbGxiYWNrKQorICAgICAgICB0
aHJvdyAiU2ltcGxlUHJvbWlzZSBkb2Vzbid0IHN1cHBvcnQgbXVsdGlwbGUgY2FsbHMgdG8gdGhl
biI7CisgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICB0aGlzLl9jaGFpbmVkUHJv
bWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgIAorICAgIGlmICh0aGlzLl9yZXNvbHZlZCkK
KyAgICAgICAgdGhpcy5yZXNvbHZlKHRoaXMuX3Jlc29sdmVkVmFsdWUpOworCisgICAgcmV0dXJu
IHRoaXMuX2NoYWluZWRQcm9taXNlOworfQorCitTaW1wbGVQcm9taXNlLnByb3RvdHlwZS5yZXNv
bHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgaWYgKCF0aGlzLl9jYWxsYmFjaykgeworICAg
ICAgICB0aGlzLl9yZXNvbHZlZCA9IHRydWU7CisgICAgICAgIHRoaXMuX3Jlc29sdmVkVmFsdWUg
PSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciByZXN1bHQgPSB0aGlz
Ll9jYWxsYmFjayh2YWx1ZSk7CisgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFNpbXBsZVByb21p
c2UpIHsKKyAgICAgICAgdmFyIGNoYWluZWRQcm9taXNlID0gdGhpcy5fY2hhaW5lZFByb21pc2U7
CisgICAgICAgIHJlc3VsdC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsgY2hhaW5lZFByb21pc2Uu
cmVzb2x2ZShyZXN1bHQpOyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgdGhpcy5fY2hhaW5lZFBy
b21pc2UucmVzb2x2ZShyZXN1bHQpOworfQorCitmdW5jdGlvbiBPcHRpb25zKHRlc3RJbnRlcnZh
bCwgZnJhbWVSYXRlKSB7CisgICAgdGhpcy50ZXN0SW50ZXJ2YWwgPSB0ZXN0SW50ZXJ2YWw7Cisg
ICAgdGhpcy5mcmFtZVJhdGUgPSBmcmFtZVJhdGU7Cit9CisKK2Z1bmN0aW9uIFByb2dyZXNzQmFy
KGVsZW1lbnQsIHJhbmdlcykgeworICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7CisgICAgdGhp
cy5yYW5nZXMgPSByYW5nZXM7CisgICAgdGhpcy5jdXJyZW50UmFuZ2UgPSAwOworfQorCitQcm9n
cmVzc0Jhci5wcm90b3R5cGUgPSB7CisgICAgX3Byb2dyZXNzVG9QZXJjZW50IDogZnVuY3Rpb24o
cHJvZ3Jlc3MpIHsKKyAgICAgICAgcmV0dXJuIHByb2dyZXNzICogKDEwMCAvIHRoaXMucmFuZ2Vz
KTsKKyAgICB9LAorICAgIGluY1JhbmdlIDogZnVuY3Rpb24oKSB7CisgICAgICAgICsrdGhpcy5j
dXJyZW50UmFuZ2U7CisgICAgfSwKKyAgICBzZXRQb3MgOiBmdW5jdGlvbihwcm9ncmVzcykgewor
ICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLl9wcm9ncmVzc1RvUGVyY2Vu
dCh0aGlzLmN1cnJlbnRSYW5nZSArIHByb2dyZXNzKSArICIlIjsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIFJlY29yZFRhYmxlKGVsZW1lbnQpIHsKKyAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50Owor
ICAgIHRoaXMuY2xlYXIoKTsKK30KKworUmVjb3JkVGFibGUucHJvdG90eXBlID0geworICAgIGNs
ZWFyIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgPSAiIjsK
KyAgICB9LAorICAgIF9zaG93VGl0bGVzIDogZnVuY3Rpb24ocm93LCBxdWV1ZSwgdGl0bGVzLCBt
ZXNzYWdlKSB7CisgICAgICAgIGZvciAodmFyIHRpdGxlID0gMDsgdGl0bGUgPCB0aXRsZXMubGVu
Z3RoOyArK3RpdGxlKSB7CisgICAgICAgICAgICB2YXIgdGggPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJ0aCIpOworICAgICAgICAgICAgdGguaW5uZXJIVE1MID0gdGl0bGVzW3RpdGxlXS50ZXh0
OworICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlICE9ICJ1bmRlZmluZWQiICYmIG1lc3Nh
Z2UubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgdGguaW5uZXJIVE1MICs9ICI8YnI+WyIgKyBt
ZXNzYWdlICsgIl0iOworICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiIjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmICgid2lkdGgiIGluIHRpdGxlc1t0aXRsZV0pCisgICAgICAgICAg
ICAgICAgdGgud2lkdGggPSB0aXRsZXNbdGl0bGVdLndpZHRoICsgIiUiOworICAgICAgICAgICAg
cm93LmFwcGVuZENoaWxkKHRoKTsKKyAgICAgICAgICAgIHF1ZXVlLnB1c2goe2VsZW1lbnQ6IHRo
LCB0aXRsZXM6IHRpdGxlc1t0aXRsZV0uY2hpbGRyZW4gfSk7CisgICAgICAgIH0KKyAgICB9LAor
ICAgIF9zaG93SGVhZGVyIDogZnVuY3Rpb24oc3VpdGVOYW1lLCB0aXRsZXMsIG1lc3NhZ2UpIHsK
KyAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisKKyAgICAg
ICAgdmFyIHF1ZXVlID0gW107CisgICAgICAgIHRoaXMuX3Nob3dUaXRsZXMocm93LCBxdWV1ZSwg
dGl0bGVzLCBtZXNzYWdlKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHJvdyk7
CisKKyAgICAgICAgd2hpbGUgKHF1ZXVlLmxlbmd0aCkgeworICAgICAgICAgICAgdmFyIHJvdyA9
IG51bGw7CisgICAgICAgICAgICB2YXIgbGlzdCA9IFtdOworCisgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMCwgbGVuID0gcXVldWUubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsKKyAgICAgICAgICAg
ICAgICB2YXIgZW50cnkgPSBxdWV1ZS5zaGlmdCgpOworCisgICAgICAgICAgICAgICAgaWYgKCFl
bnRyeS50aXRsZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIGxpc3QucHVzaChlbnRy
eS5lbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFyb3cpCisgICAgICAgICAgICAgICAgICAgIHZh
ciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworCisgICAgICAgICAgICAgICAg
dGhpcy5fc2hvd1RpdGxlcyhyb3csIHF1ZXVlLCBlbnRyeS50aXRsZXMsICIiKTsKKyAgICAgICAg
ICAgICAgICBlbnRyeS5lbGVtZW50LmNvbFNwYW4gPSBlbnRyeS50aXRsZXMubGVuZ3RoOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocm93KSB7CisgICAgICAgICAgICAgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKHJvdyk7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgICAgICArK2xpc3RbaV0u
cm93U3BhbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisgICAgX3Nob3dFbXB0
eSA6IGZ1bmN0aW9uKHJvdywgdGVzdE5hbWUpIHsKKyAgICAgICAgdmFyIHRkID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxkKHRkKTsKKyAgICB9
LAorICAgIF9zaG93VmFsdWUgOiBmdW5jdGlvbihyb3csIHRlc3ROYW1lLCB2YWx1ZSkgeworICAg
ICAgICB2YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICB0ZC50
ZXh0Q29udGVudCA9IHZhbHVlLnRvRml4ZWQoMik7CisgICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0
ZCk7CisgICAgfSwKKyAgICBfc2hvd1NhbXBsZXMgOiBmdW5jdGlvbihyb3csIHRlc3ROYW1lLCBh
eGlzZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGltZU9mZnNldCkgeworICAgICAgICB2YXIgdGQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICB2YXIgYnV0dG9uID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGJ1dHRvbi5jbGFzc05hbWUgPSAic21h
bGwtYnV0dG9uIjsKKyAgICAgICAgICAgIAorICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHdpbmRvdy5zaG93R3JhcGgodGVz
dE5hbWUsIGF4aXNlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KTsKKyAgICAgICAgfSk7
CisgICAgICAgICAgICAKKyAgICAgICAgYnV0dG9uLnRleHRDb250ZW50ID0gIkNsaWNrLi4uIjsK
KyAgICAgICAgdGQuYXBwZW5kQ2hpbGQoYnV0dG9uKTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxk
KHRkKTsKKyAgICB9LAorICAgIF9zaG93VGVzdCA6IGZ1bmN0aW9uKHRlc3ROYW1lLCB0aXRsZXMs
IHNhbXBsZXIsIGZpbmFsUmVzdWx0cykgeworICAgICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgidHIiKTsKKyAgICAgICAgdmFyIHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgidGQiKTsKKyAgICAgICAgdGQudGV4dENvbnRlbnQgPSB0ZXN0TmFtZTsKKyAgICAgICAgcm93
LmFwcGVuZENoaWxkKHRkKTsKKyAgICAgICAgCisgICAgICAgIHZhciBheGlzZXMgPSBbXTsKKyAg
ICAgICAgZm9yICh2YXIgbWVhc3VyZSA9IDA7IG1lYXN1cmUgPCBzYW1wbGVyLnN0YXRpc3RpY3Mu
bGVuZ3RoOyArK21lYXN1cmUpIHsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dWYWx1ZShyb3csIHRl
c3ROYW1lLCBzYW1wbGVyLnN0YXRpc3RpY3NbbWVhc3VyZV0ubWVhbigpKTsKKyAgICAgICAgICAg
IHRoaXMuX3Nob3dWYWx1ZShyb3csIHRlc3ROYW1lLCBzYW1wbGVyLnN0YXRpc3RpY3NbbWVhc3Vy
ZV0uY29uZmlkZW5jZUludGVydmFsRGVsdGEoOTUpKTsgICAgICAgICAgICAKKyAgICAgICAgICAg
IHRoaXMuX3Nob3dWYWx1ZShyb3csIHRlc3ROYW1lLCBzYW1wbGVyLnN0YXRpc3RpY3NbbWVhc3Vy
ZV0uc3RhbmRhcmREZXZpYXRpb24oKSk7CisgICAgICAgICAgICB0aGlzLl9zaG93VmFsdWUocm93
LCB0ZXN0TmFtZSwgc2FtcGxlci5zdGF0aXN0aWNzW21lYXN1cmVdLnBlcmNlbnRhZ2UoKSk7Cisg
ICAgICAgICAgICBheGlzZXMucHVzaCh0aXRsZXNbbWVhc3VyZSArIDFdLnRleHQpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGZpbmFsUmVzdWx0cykKKyAgICAgICAgICAgIHRoaXMuX3Nob3dT
YW1wbGVzKHJvdywgdGVzdE5hbWUsIGF4aXNlcywgc2FtcGxlci5zYW1wbGVzLCBzYW1wbGVyLnNh
bXBsaW5nVGltZU9mZnNldCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX3Nob3dF
bXB0eSAocm93LCB0ZXN0TmFtZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChy
b3cpOworICAgIH0sCisgICAgX3Nob3dTdWl0ZSA6IGZ1bmN0aW9uKHN1aXRlLCBzdWl0ZVNhbXBs
ZXJzKSB7CisgICAgICAgIHZhciBzY29yZXMgPSBbXTsgICAgICAgIAorICAgICAgICBmb3IgKHZh
ciB0ZXN0TmFtZSBpbiBzdWl0ZVNhbXBsZXJzKSB7CisgICAgICAgICAgICB2YXIgdGVzdCA9IHRl
c3RGcm9tTmFtZShzdWl0ZSwgdGVzdE5hbWUpOworICAgICAgICAgICAgdmFyIHNhbXBsZXIgPSBz
dWl0ZVNhbXBsZXJzW3Rlc3ROYW1lXTsgCisgICAgICAgICAgICB0aGlzLl9zaG93VGVzdCh0ZXN0
TmFtZSwgc3VpdGUudGl0bGVzLCBzYW1wbGVyLCB0cnVlKTsKKyAgICAgICAgICAgIHNjb3Jlcy5w
dXNoKE1hdGgubWluKHNhbXBsZXIuc3RhdGlzdGljc1swXS5tZWFuKCkgKiB0ZXN0LndlaWdodCAv
IHRlc3QubWF4LCAxKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNjb3JlczsKKyAgICB9
LAorICAgIHNob3dSZWNvcmQgOiBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgc2FtcGxlciwgbWVzc2Fn
ZSkgeworICAgICAgICB0aGlzLmNsZWFyKCk7ICAgICAgICAKKyAgICAgICAgdGhpcy5fc2hvd0hl
YWRlcigiIiwgc3VpdGUudGl0bGVzLCBtZXNzYWdlKTsKKyAgICAgICAgdGhpcy5fc2hvd1Rlc3Qo
dGVzdC5uYW1lLCBzdWl0ZS50aXRsZXMsIHNhbXBsZXIsIGZhbHNlKTsgICAgICAgIAorICAgIH0s
CisgICAgc2hvd0l0ZXJhdGlvbnMgOiBmdW5jdGlvbihpdGVyYXRpb25zU2FtcGxlcnMpIHsKKyAg
ICAgICAgdGhpcy5jbGVhcigpOworCisgICAgICAgIHZhciBzY29yZXMgPSBbXTsKKyAgICAgICAg
dmFyIHRpdGxlcyA9IG51bGw7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcmF0aW9u
c1NhbXBsZXJzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHZhciBzdWl0ZU5hbWUg
aW4gaXRlcmF0aW9uc1NhbXBsZXJzW2ldKSB7CisgICAgICAgICAgICAgICAgdmFyIHN1aXRlID0g
c3VpdGVGcm9tTmFtZShzdWl0ZU5hbWUpOworICAgICAgICAgICAgICAgIGlmICh0aXRsZXMgIT0g
c3VpdGUudGl0bGVzKSB7CisgICAgICAgICAgICAgICAgICAgIHRpdGxlcyA9IHN1aXRlLnRpdGxl
czsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2hvd0hlYWRlcihzdWl0ZU5hbWUsIHRpdGxl
cywgIiIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHZhciBzdWl0ZVNj
b3JlcyA9IHRoaXMuX3Nob3dTdWl0ZShzdWl0ZSwgaXRlcmF0aW9uc1NhbXBsZXJzW2ldW3N1aXRl
TmFtZV0pOworICAgICAgICAgICAgICAgIHNjb3Jlcy5wdXNoLmFwcGx5KHNjb3Jlcywgc3VpdGVT
Y29yZXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHZhciBzdW0gPSBzY29y
ZXMucmVkdWNlKGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEgKyBiOyB9KTsKKyAgICAgICAgcmV0
dXJuIHN1bSAqIDEwMCAvIHNjb3Jlcy5sZW5ndGg7CisgICAgfQorfQpJbmRleDogUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcwkocmV2
aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvc3RhdGlz
dGljcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzNyBAQAorZnVuY3Rpb24gU3RhdGlz
dGljKCkgeworICAgIHRoaXMuX2luaXQoKTsKK30KKworU3RhdGlzdGljLnNhbXBsZU1lYW4gPSBm
dW5jdGlvbihudW1iZXJPZlNhbXBsZXMsIHN1bSkgeworICAgIGlmIChudW1iZXJPZlNhbXBsZXMg
PCAxKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gc3VtIC8gbnVtYmVyT2ZTYW1wbGVz
OworfQorCitTdGF0aXN0aWMuc2FtcGxlU3RhbmRhcmREZXZpYXRpb24gPSBmdW5jdGlvbihudW1i
ZXJPZlNhbXBsZXMsIHN1bSwgc3F1YXJlU3VtKSB7CisgICAgaWYgKG51bWJlck9mU2FtcGxlcyA8
IDIpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBNYXRoLnNxcnQoKHNxdWFyZVN1bSAt
IHN1bSAqIHN1bSAvIG51bWJlck9mU2FtcGxlcykgLyAobnVtYmVyT2ZTYW1wbGVzIC0gMSkpIDsK
K30KKworLy8gU2VlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3R1ZGVudCdzX3QtZGlz
dHJpYnV0aW9uI1RhYmxlX29mX3NlbGVjdGVkX3ZhbHVlcworLy8gVGhpcyB0YWJsZSBjb250YWlu
cyBvbmUgc2lkZWQgKGEuay5hLiB0YWlsKSB2YWx1ZXMuCitTdGF0aXN0aWMudERpc3RyaWJ1dGlv
bkludmVyc2VDREYgPSB7CisgICAgMC45OiBbCisgICAgICAgIDMuMDc3Njg0LCAxLjg4NTYxOCwg
MS42Mzc3NDQsIDEuNTMzMjA2LCAxLjQ3NTg4NCwgMS40Mzk3NTYsIDEuNDE0OTI0LCAxLjM5Njgx
NSwgMS4zODMwMjksIDEuMzcyMTg0LAorICAgICAgICAxLjM2MzQzMCwgMS4zNTYyMTcsIDEuMzUw
MTcxLCAxLjM0NTAzMCwgMS4zNDA2MDYsIDEuMzM2NzU3LCAxLjMzMzM3OSwgMS4zMzAzOTEsIDEu
MzI3NzI4LCAxLjMyNTM0MSwKKyAgICAgICAgMS4zMjMxODgsIDEuMzIxMjM3LCAxLjMxOTQ2MCwg
MS4zMTc4MzYsIDEuMzE2MzQ1LCAxLjMxNDk3MiwgMS4zMTM3MDMsIDEuMzEyNTI3LCAxLjMxMTQz
NCwgMS4zMTA0MTUsCisgICAgICAgIDEuMzA5NDY0LCAxLjMwODU3MywgMS4zMDc3MzcsIDEuMzA2
OTUyLCAxLjMwNjIxMiwgMS4zMDU1MTQsIDEuMzA0ODU0LCAxLjMwNDIzMCwgMS4zMDM2MzksIDEu
MzAzMDc3LAorICAgICAgICAxLjMwMjU0MywgMS4zMDIwMzUsIDEuMzAxNTUyLCAxLjMwMTA5MCwg
MS4zMDA2NDksIDEuMzAwMjI4LCAxLjI5OTgyNSwgMS4yOTk0MzksIDEuMjk5MDY5LCAxLjI5ODcx
NCwKKworICAgICAgICAxLjI5ODM3MywgMS4yOTgwNDUsIDEuMjk3NzMwLCAxLjI5NzQyNiwgMS4y
OTcxMzQsIDEuMjk2ODUzLCAxLjI5NjU4MSwgMS4yOTYzMTksIDEuMjk2MDY2LCAxLjI5NTgyMSwK
KyAgICAgICAgMS4yOTU1ODUsIDEuMjk1MzU2LCAxLjI5NTEzNCwgMS4yOTQ5MjAsIDEuMjk0NzEy
LCAxLjI5NDUxMSwgMS4yOTQzMTUsIDEuMjk0MTI2LCAxLjI5Mzk0MiwgMS4yOTM3NjMsCisgICAg
ICAgIDEuMjkzNTg5LCAxLjI5MzQyMSwgMS4yOTMyNTYsIDEuMjkzMDk3LCAxLjI5Mjk0MSwgMS4y
OTI3OTAsIDEuMjkyNjQzLCAxLjI5MjUwMCwgMS4yOTIzNjAsIDEuMjkyMjI0LAorICAgICAgICAx
LjI5MjA5MSwgMS4yOTE5NjEsIDEuMjkxODM1LCAxLjI5MTcxMSwgMS4yOTE1OTEsIDEuMjkxNDcz
LCAxLjI5MTM1OCwgMS4yOTEyNDYsIDEuMjkxMTM2LCAxLjI5MTAyOSwKKyAgICAgICAgMS4yOTA5
MjQsIDEuMjkwODIxLCAxLjI5MDcyMSwgMS4yOTA2MjMsIDEuMjkwNTI3LCAxLjI5MDQzMiwgMS4y
OTAzNDAsIDEuMjkwMjUwLCAxLjI5MDE2MSwgMS4yOTAwNzVdLAorICAgIDAuOTU6IFsKKyAgICAg
ICAgNi4zMTM3NTIsIDIuOTE5OTg2LCAyLjM1MzM2MywgMi4xMzE4NDcsIDIuMDE1MDQ4LCAxLjk0
MzE4MCwgMS44OTQ1NzksIDEuODU5NTQ4LCAxLjgzMzExMywgMS44MTI0NjEsCisgICAgICAgIDEu
Nzk1ODg1LCAxLjc4MjI4OCwgMS43NzA5MzMsIDEuNzYxMzEwLCAxLjc1MzA1MCwgMS43NDU4ODQs
IDEuNzM5NjA3LCAxLjczNDA2NCwgMS43MjkxMzMsIDEuNzI0NzE4LAorICAgICAgICAxLjcyMDc0
MywgMS43MTcxNDQsIDEuNzEzODcyLCAxLjcxMDg4MiwgMS43MDgxNDEsIDEuNzA1NjE4LCAxLjcw
MzI4OCwgMS43MDExMzEsIDEuNjk5MTI3LCAxLjY5NzI2MSwKKyAgICAgICAgMS42OTU1MTksIDEu
NjkzODg5LCAxLjY5MjM2MCwgMS42OTA5MjQsIDEuNjg5NTcyLCAxLjY4ODI5OCwgMS42ODcwOTQs
IDEuNjg1OTU0LCAxLjY4NDg3NSwgMS42ODM4NTEsCisgICAgICAgIDEuNjgyODc4LCAxLjY4MTk1
MiwgMS42ODEwNzEsIDEuNjgwMjMwLCAxLjY3OTQyNywgMS42Nzg2NjAsIDEuNjc3OTI3LCAxLjY3
NzIyNCwgMS42NzY1NTEsIDEuNjc1OTA1LAorCisgICAgICAgIDEuNjc1Mjg1LCAxLjY3NDY4OSwg
MS42NzQxMTYsIDEuNjczNTY1LCAxLjY3MzAzNCwgMS42NzI1MjIsIDEuNjcyMDI5LCAxLjY3MTU1
MywgMS42NzEwOTMsIDEuNjcwNjQ5LAorICAgICAgICAxLjY3MDIxOSwgMS42Njk4MDQsIDEuNjY5
NDAyLCAxLjY2OTAxMywgMS42Njg2MzYsIDEuNjY4MjcxLCAxLjY2NzkxNiwgMS42Njc1NzIsIDEu
NjY3MjM5LCAxLjY2NjkxNCwKKyAgICAgICAgMS42NjY2MDAsIDEuNjY2Mjk0LCAxLjY2NTk5Niwg
MS42NjU3MDcsIDEuNjY1NDI1LCAxLjY2NTE1MSwgMS42NjQ4ODUsIDEuNjY0NjI1LCAxLjY2NDM3
MSwgMS42NjQxMjUsCisgICAgICAgIDEuNjYzODg0LCAxLjY2MzY0OSwgMS42NjM0MjAsIDEuNjYz
MTk3LCAxLjY2Mjk3OCwgMS42NjI3NjUsIDEuNjYyNTU3LCAxLjY2MjM1NCwgMS42NjIxNTUsIDEu
NjYxOTYxLAorICAgICAgICAxLjY2MTc3MSwgMS42NjE1ODUsIDEuNjYxNDA0LCAxLjY2MTIyNiwg
MS42NjEwNTIsIDEuNjYwODgxLCAxLjY2MDcxNSwgMS42NjA1NTEsIDEuNjYwMzkxLCAxLjY2MDIz
NF0sCisgICAgMC45NzU6IFsKKyAgICAgICAgMTIuNzA2MjA1LCA0LjMwMjY1MywgMy4xODI0NDYs
IDIuNzc2NDQ1LCAyLjU3MDU4MiwgMi40NDY5MTIsIDIuMzY0NjI0LCAyLjMwNjAwNCwgMi4yNjIx
NTcsIDIuMjI4MTM5LAorICAgICAgICAyLjIwMDk4NSwgMi4xNzg4MTMsIDIuMTYwMzY5LCAyLjE0
NDc4NywgMi4xMzE0NTAsIDIuMTE5OTA1LCAyLjEwOTgxNiwgMi4xMDA5MjIsIDIuMDkzMDI0LCAy
LjA4NTk2MywKKyAgICAgICAgMi4wNzk2MTQsIDIuMDczODczLCAyLjA2ODY1OCwgMi4wNjM4OTks
IDIuMDU5NTM5LCAyLjA1NTUyOSwgMi4wNTE4MzEsIDIuMDQ4NDA3LCAyLjA0NTIzMCwgMi4wNDIy
NzIsCisgICAgICAgIDIuMDM5NTEzLCAyLjAzNjkzMywgMi4wMzQ1MTUsIDIuMDMyMjQ1LCAyLjAz
MDEwOCwgMi4wMjgwOTQsIDIuMDI2MTkyLCAyLjAyNDM5NCwgMi4wMjI2OTEsIDIuMDIxMDc1LAor
ICAgICAgICAyLjAxOTU0MSwgMi4wMTgwODIsIDIuMDE2NjkyLCAyLjAxNTM2OCwgMi4wMTQxMDMs
IDIuMDEyODk2LCAyLjAxMTc0MSwgMi4wMTA2MzUsIDIuMDA5NTc1LCAyLjAwODU1OSwKKworICAg
ICAgICAyLjAwNzU4NCwgMi4wMDY2NDcsIDIuMDA1NzQ2LCAyLjAwNDg3OSwgMi4wMDQwNDUsIDIu
MDAzMjQxLCAyLjAwMjQ2NSwgMi4wMDE3MTcsIDIuMDAwOTk1LCAyLjAwMDI5OCwKKyAgICAgICAg
MS45OTk2MjQsIDEuOTk4OTcyLCAxLjk5ODM0MSwgMS45OTc3MzAsIDEuOTk3MTM4LCAxLjk5NjU2
NCwgMS45OTYwMDgsIDEuOTk1NDY5LCAxLjk5NDk0NSwgMS45OTQ0MzcsCisgICAgICAgIDEuOTkz
OTQzLCAxLjk5MzQ2NCwgMS45OTI5OTcsIDEuOTkyNTQzLCAxLjk5MjEwMiwgMS45OTE2NzMsIDEu
OTkxMjU0LCAxLjk5MDg0NywgMS45OTA0NTAsIDEuOTkwMDYzLAorICAgICAgICAxLjk4OTY4Niwg
MS45ODkzMTksIDEuOTg4OTYwLCAxLjk4ODYxMCwgMS45ODgyNjgsIDEuOTg3OTM0LCAxLjk4NzYw
OCwgMS45ODcyOTAsIDEuOTg2OTc5LCAxLjk4NjY3NSwKKyAgICAgICAgMS45ODYzNzcsIDEuOTg2
MDg2LCAxLjk4NTgwMiwgMS45ODU1MjMsIDEuOTg1MjUxLCAxLjk4NDk4NCwgMS45ODQ3MjMsIDEu
OTg0NDY3LCAxLjk4NDIxNywgMS45ODM5NzJdLAorICAgIDAuOTk6IFsKKyAgICAgICAgMzEuODIw
NTE2LCA2Ljk2NDU1NywgNC41NDA3MDMsIDMuNzQ2OTQ3LCAzLjM2NDkzMCwgMy4xNDI2NjgsIDIu
OTk3OTUyLCAyLjg5NjQ1OSwgMi44MjE0MzgsIDIuNzYzNzY5LAorICAgICAgICAyLjcxODA3OSwg
Mi42ODA5OTgsIDIuNjUwMzA5LCAyLjYyNDQ5NCwgMi42MDI0ODAsIDIuNTgzNDg3LCAyLjU2Njkz
NCwgMi41NTIzODAsIDIuNTM5NDgzLCAyLjUyNzk3NywKKyAgICAgICAgMi41MTc2NDgsIDIuNTA4
MzI1LCAyLjQ5OTg2NywgMi40OTIxNTksIDIuNDg1MTA3LCAyLjQ3ODYzMCwgMi40NzI2NjAsIDIu
NDY3MTQwLCAyLjQ2MjAyMSwgMi40NTcyNjIsCisgICAgICAgIDIuNDUyODI0LCAyLjQ0ODY3OCwg
Mi40NDQ3OTQsIDIuNDQxMTUwLCAyLjQzNzcyMywgMi40MzQ0OTQsIDIuNDMxNDQ3LCAyLjQyODU2
OCwgMi40MjU4NDEsIDIuNDIzMjU3LAorICAgICAgICAyLjQyMDgwMywgMi40MTg0NzAsIDIuNDE2
MjUwLCAyLjQxNDEzNCwgMi40MTIxMTYsIDIuNDEwMTg4LCAyLjQwODM0NSwgMi40MDY1ODEsIDIu
NDA0ODkyLCAyLjQwMzI3MiwKKworICAgICAgICAyLjQwMTcxOCwgMi40MDAyMjUsIDIuMzk4Nzkw
LCAyLjM5NzQxMCwgMi4zOTYwODEsIDIuMzk0ODAxLCAyLjM5MzU2OCwgMi4zOTIzNzcsIDIuMzkx
MjI5LCAyLjM5MDExOSwKKyAgICAgICAgMi4zODkwNDcsIDIuMzg4MDExLCAyLjM4NzAwOCwgMi4z
ODYwMzcsIDIuMzg1MDk3LCAyLjM4NDE4NiwgMi4zODMzMDIsIDIuMzgyNDQ2LCAyLjM4MTYxNSwg
Mi4zODA4MDcsCisgICAgICAgIDIuMzgwMDI0LCAyLjM3OTI2MiwgMi4zNzg1MjIsIDIuMzc3ODAy
LCAyLjM3NzEwMiwgMi4zNzY0MjAsIDIuMzc1NzU3LCAyLjM3NTExMSwgMi4zNzQ0ODIsIDIuMzcz
ODY4LAorICAgICAgICAyLjM3MzI3MCwgMi4zNzI2ODcsIDIuMzcyMTE5LCAyLjM3MTU2NCwgMi4z
NzEwMjIsIDIuMzcwNDkzLCAyLjM2OTk3NywgMi4zNjk0NzIsIDIuMzY4OTc5LCAyLjM2ODQ5NywK
KyAgICAgICAgMi4zNjgwMjYsIDIuMzY3NTY2LCAyLjM2NzExNSwgMi4zNjY2NzQsIDIuMzY2MjQz
LCAyLjM2NTgyMSwgMi4zNjU0MDcsIDIuMzY1MDAyLCAyLjM2NDYwNiwgMi4zNjQyMTddCit9Owor
CitTdGF0aXN0aWMucHJvdG90eXBlID0geworICAgIF9pbml0IDogZnVuY3Rpb24oKSB7CisgICAg
ICAgIHRoaXMuX3N1bSA9IDA7CisgICAgICAgIHRoaXMuX3NxdWFyZVN1bSA9IDA7CisgICAgICAg
IHRoaXMuX251bWJlck9mU2FtcGxlcyA9IDA7CisgICAgfSwKKyAgICAvLyBDYWxsZWQgYWZ0ZXIg
YSB3YXJtLXVwIHBlcmlvZAorICAgIHN0YXJ0U2FtcGxpbmcgOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgdmFyIG1lYW4gPSB0aGlzLm1lYW4oKTsKKyAgICAgICAgdGhpcy5faW5pdCgpOworICAgICAg
ICB0aGlzLnNhbXBsZShtZWFuKTsKKyAgICB9LAorICAgIHNhbXBsZSA6IGZ1bmN0aW9uKHZhbHVl
KSB7CisgICAgICAgIHRoaXMuX3N1bSArPSB2YWx1ZTsKKyAgICAgICAgdGhpcy5fc3F1YXJlU3Vt
ICs9IHZhbHVlICogdmFsdWU7CisgICAgICAgICsrdGhpcy5fbnVtYmVyT2ZTYW1wbGVzOyAgICAg
ICAgCisgICAgfSwKKyAgICBtZWFuIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBTdGF0
aXN0aWMuc2FtcGxlTWVhbih0aGlzLl9udW1iZXJPZlNhbXBsZXMsIHRoaXMuX3N1bSk7CisgICAg
fSwKKyAgICBzdGFuZGFyZERldmlhdGlvbiA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4g
U3RhdGlzdGljLnNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uKHRoaXMuX251bWJlck9mU2FtcGxlcywg
dGhpcy5fc3VtLCB0aGlzLl9zcXVhcmVTdW0pOworICAgIH0sCisgICAgcGVyY2VudGFnZSA6IGZ1
bmN0aW9uKCkgeworICAgICAgICB2YXIgbWVhbiA9IHRoaXMubWVhbigpOworICAgICAgICByZXR1
cm4gbWVhbiA/IHRoaXMuc3RhbmRhcmREZXZpYXRpb24oKSAqIDEwMCAvIG1lYW4gOiAwOworICAg
IH0sCisgICAgY29uZmlkZW5jZUludGVydmFsRGVsdGEgOiBmdW5jdGlvbihjb25maWRlbmNlTGV2
ZWwpIHsKKyAgICAgICAgaWYgKHRoaXMuX251bWJlck9mU2FtcGxlcyA8IDIpCisgICAgICAgICAg
ICByZXR1cm4gTmFOOworICAgICAgICAKKyAgICAgICAgdmFyIHByb2JhYmlsaXR5ID0gKDEwMCAt
IDIgKiAoMTAwIC0gY29uZmlkZW5jZUxldmVsKSkgLyAxMDA7CisgICAgICAgIGlmICghKHByb2Jh
YmlsaXR5IGluIFN0YXRpc3RpYy50RGlzdHJpYnV0aW9uSW52ZXJzZUNERikpCisgICAgICAgICAg
ICB0aHJvdyAnVW5zdXBwb3J0ZWQgY29uZmlkZW5jZSBsZXZlbCc7CisKKyAgICAgICAgdmFyIGNk
ZkZvclByb2JhYmlsaXR5ID0gU3RhdGlzdGljLnREaXN0cmlidXRpb25JbnZlcnNlQ0RGW3Byb2Jh
YmlsaXR5XTsKKyAgICAgICAgdmFyIGRlZ3JlZXNPZkZyZWVkb20gPSBNYXRoLm1pbih0aGlzLl9u
dW1iZXJPZlNhbXBsZXMgLSAxLCBjZGZGb3JQcm9iYWJpbGl0eS5sZW5ndGgpOworICAgICAgICAK
KyAgICAgICAgdmFyIHF1YW50aWxlID0gY2RmRm9yUHJvYmFiaWxpdHlbZGVncmVlc09mRnJlZWRv
bSAtIDFdOyAvLyBUaGUgZmlyc3QgZW50cnkgaXMgZm9yIHRoZSBvbmUgZGVncmVlIG9mIGZyZWVk
b20uCisgICAgICAgIHJldHVybiBxdWFudGlsZSAqIFN0YXRpc3RpYy5zYW1wbGVTdGFuZGFyZERl
dmlhdGlvbih0aGlzLl9udW1iZXJPZlNhbXBsZXMsIHRoaXMuX3N1bSwgdGhpcy5fc3F1YXJlU3Vt
KSAvIE1hdGguc3FydCh0aGlzLl9udW1iZXJPZlNhbXBsZXMpOworICAgIH0KK30KKworZnVuY3Rp
b24gU2FtcGxlcihjb3VudCkgeworICAgIHRoaXMuc3RhdGlzdGljcyA9IFtdOworICAgIHdoaWxl
IChjb3VudC0tKQorICAgICAgICB0aGlzLnN0YXRpc3RpY3MucHVzaChuZXcgU3RhdGlzdGljKTsK
KyAgICB0aGlzLnNhbXBsZXMgPSBbXTsKKyAgICB0aGlzLnNhbXBsaW5nVGltZU9mZnNldCA9IDA7
Cit9CisKK1NhbXBsZXIucHJvdG90eXBlID0geworICAgIHN0YXJ0U2FtcGxpbmcgOiBmdW5jdGlv
bih0aW1lT2Zmc2V0KSB7CisgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlz
LnN0YXRpc3RpY3MubGVuZ3RoOyArK2luZGV4KQorICAgICAgICAgICAgdGhpcy5zdGF0aXN0aWNz
W2luZGV4XS5zdGFydFNhbXBsaW5nKCk7CisgICAgICAgICAgICAKKyAgICAgICAgdGhpcy5zYW1w
bGluZ1RpbWVPZmZzZXQgPSB0aW1lT2Zmc2V0IC8gMTAwMDsKKyAgICB9LAorICAgIHNhbXBsZSA6
IGZ1bmN0aW9uKHRpbWVPZmZzZXQsIHZhbHVlcykgeworICAgICAgICBpZiAodmFsdWVzLmxlbmd0
aCA8IHRoaXMuc3RhdGlzdGljcy5sZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAiTm90IGVub3Vn
aCBzYW1wbGUgcG9pbnRzIjsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGZvciAodmFy
IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLnN0YXRpc3RpY3MubGVuZ3RoOyArK2luZGV4KQorICAg
ICAgICAgICAgdGhpcy5zdGF0aXN0aWNzW2luZGV4XS5zYW1wbGUodmFsdWVzW2luZGV4XSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgdGhpcy5zYW1wbGVzLnB1c2goeyB0aW1lT2Zmc2V0OiB0aW1l
T2Zmc2V0IC8gMTAwMCwgdmFsdWVzOiB2YWx1ZXMgfSk7CisgICAgfQorfQpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL2FuaW1vbWV0
ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2Vz
L2FuaW1vbWV0ZXIuY3NzIj4KKyAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFy
ZS5jb20vYWpheC9saWJzL2QzLzMuNS41L2QzLm1pbi5qcyIgZGVmZXI+PC9zY3JpcHQ+ICAKKyAg
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIiBkZWZlcj48L3NjcmlwdD4g
IAorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiIGRlZmVyPjwvc2NyaXB0Pgor
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3RzLmpzIiBkZWZlcj0iIj48L3NjcmlwdD4KKyAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzIiBkZWZlcj48L3Njcmlw
dD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9hbmltb21ldGVyLmpzIiBkZWZlcj48L3Njcmlw
dD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ncmFwaC5qcyIgZGVmZXI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKyAgPG1haW4+CisgICAgPHNlY3Rpb24gaWQ9ImhvbWUiIGNsYXNzPSJz
ZWxlY3RlZCI+CisgICAgICA8cD4KKyAgICAgICAgQW5pbW9tZXRlciBpcyBhIGJyb3dzZXIgYmVu
Y2htYXJrIHRoYXQgbWVhc3VyZXMgdGhlIGNvbXBsZXhpdHkgb2YgYW4gYW5pbWF0aW9uIGZvcgor
ICAgICAgICB3aGljaCBhIGJyb3dzZXIgY2FuIGFjaGlldmUgNTAgRlBTIChmcmFtZSBwZXIgc2Vj
b25kKS4gSXQgdXNlcyBhZGFwdGl2ZSBhbmltYXRpb25zCisgICAgICAgIHRvIHR1bmUgdGhlaXIg
Y29tcGxleGl0aWVzIHRvIHN0YXkgY2xvc2UgdG8gNTAgRlBTLgorICAgICAgPC9wPgorICAgICAg
PGRpdiBjbGFzcz0ib3B0aW9ucyI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbHVtbiI+CisgICAg
ICAgICAgPGxhYmVsPjxpbnB1dCBpZD0iaHRtbC1zdWl0ZSIgdHlwZT0iY2hlY2tib3giIGNoZWNr
ZWQ+IEhUTUwgZWxlbWVudHMgc3VpdGU8L2xhYmVsPjxicj4KKyAgICAgICAgICA8bGFiZWw+PGlu
cHV0IGlkPSJjYW52YXMtc3VpdGUiIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPiBDYW52YXMgZHJh
d2luZ3Mgc3VpdGU8L2xhYmVsPjxicj4KKyAgICAgICAgICA8bGFiZWw+PGlucHV0IGlkPSJzdmct
c3VpdGUiIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPiBTVkcgZWxlbWVudHMgc3VpdGU8L2xhYmVs
PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdj4KKyAgICAgICAgICA8bGFiZWw+VGVzdCBp
bnRlcnZhbDogPGlucHV0IGlkPSJ0ZXN0LWludGVydmFsIiB0eXBlPSJudW1iZXIiIHZhbHVlPSIz
MCI+IHNlY29uZHM8L2xhYmVsPjxicj4KKyAgICAgICAgICA8bGFiZWw+RnJhbWUgcmF0ZTogPGlu
cHV0IGlkPSJmcmFtZS1yYXRlIiB0eXBlPSJudW1iZXIiIHZhbHVlPSI1MCI+IGZwczwvbGFiZWw+
PGJyPgorICAgICAgICAgIDxsYWJlbD48aW5wdXQgaWQ9ImVzdGltYXRlZC1mcmFtZS1yYXRlIiB0
eXBlPSJjaGVja2JveCIgY2hlY2tlZD4gRXN0aW1hdGVkIEZyYW1lIFJhdGU8L2xhYmVsPjxicj4K
KyAgICAgICAgICA8bGFiZWw+PGlucHV0IGlkPSJmaXgtdGVzdC1jb21wbGV4aXR5IiB0eXBlPSJj
aGVja2JveCI+IEZpeCB0ZXN0IGNvbXBsZXhpdHkgYWZ0ZXIgd2FybXVwPC9sYWJlbD4KKyAgICAg
ICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbnMiPgorICAg
ICAgICA8YnV0dG9uIG9uY2xpY2s9InN0YXJ0VGVzdCgpIj5TdGFydCBUZXN0PC9idXR0b24+Cisg
ICAgICA8L2Rpdj4KKyAgICA8L3NlY3Rpb24+CisgICAgPHNlY3Rpb24gaWQ9InJ1bm5pbmciPgor
ICAgICAgPGRpdiBpZD0idGVzdENvbnRhaW5lciI+PC9kaXY+CisgICAgICA8ZGl2IGlkPSJwcm9n
cmVzcyI+CisgICAgICAgIDxkaXYgaWQ9InByb2dyZXNzLWNvbXBsZXRlZCI+PC9kaXY+CisgICAg
ICA8L2Rpdj4KKyAgICAgIDxkaXYgaWQ9InJlY29yZCI+CisgICAgICAgIDx0YWJsZSBjbGFzcz0i
cmVjb3JkLXRhYmxlIj48L3RhYmxlPgorICAgICAgPC9kaXY+CisgICAgPC9zZWN0aW9uPgorICAg
IDxzZWN0aW9uIGlkPSJyZXN1bHRzIj4KKyAgICAgIDxoMT5SZXN1bHRzPC9oMT4KKyAgICAgIDx0
YWJsZSBjbGFzcz0icmVzdWx0cy10YWJsZSI+PC90YWJsZT4KKyAgICAgIDxkaXYgY2xhc3M9ImJ1
dHRvbnMiPgorICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InN0YXJ0VGVzdCgpIj5UZXN0IEFnYWlu
PC9idXR0b24+CisgICAgICA8L2Rpdj4KKyAgICA8L3NlY3Rpb24+ICAKKyAgICA8c2VjdGlvbiBp
ZD0iZ3JhcGgiPgorICAgICAgPGgxPkdyYXBoPC9oMT4KKyAgICAgIDxkaXYgaWQ9ImdyYXBoQ29u
dGFpbmVyIj48L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbnMiPgorICAgICAgICA8YnV0
dG9uIG9uY2xpY2s9InNob3dSZXN1bHRzKCkiPlJlc3VsdHM8L2J1dHRvbj4KKyAgICAgICAgPGJ1
dHRvbiBvbmNsaWNrPSJzdGFydFRlc3QoKSI+VGVzdCBBZ2FpbjwvYnV0dG9uPiAgICAgICAgCisg
ICAgICA8L2Rpdj4KKyAgICA8L3NlY3Rpb24+ICAKKyAgPC9tYWluPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5p
bW9tZXRlci5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1
bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5jc3MJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDIxNCBAQAorYm9keSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
cmdiKDk2LCA5NiwgOTYpOworICAgIGNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7CisgICAgZm9u
dC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgVmVyZGFuYSwgc2Fucy1zZXJp
ZjsKK30KKworbWFpbiB7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIHdpZHRoOiA4MDBweDsKKyAgICBoZWlnaHQ6IDYwMHB4OworICAgIHRvcDogNTAl
OworICAgIGxlZnQ6IDUwJTsKKyAgICBtYXJnaW4tdG9wOiAtMzIxcHg7CisgICAgbWFyZ2luLWxl
ZnQ6IC00MjFweDsKKyAgICBwYWRkaW5nOiAxNXB4OworICAgIGJvcmRlcjogNnB4IHNvbGlkIHJn
YigyMzUsIDIzNSwgMjM1KTsKKyAgICBib3JkZXItcmFkaXVzOiAyMHB4OworfQorCitsYWJlbCwg
cCB7CisgICAgZm9udC1zaXplOiAxNnB4OworICAgIGxpbmUtaGVpZ2h0OiAyMXB4OworfQorCitz
ZWN0aW9uIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCitzZWN0aW9uID4gcCB7CisgICAgbWFy
Z2luOiAxMHB4IDIwcHg7Cit9CisKK3NlY3Rpb24jaG9tZSA+IHAgeworICAgIG1hcmdpbjogMCBh
dXRvOworICAgIHdpZHRoOiA3MCU7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworfQorCitzZWN0
aW9uI2hvbWUgPiBwOmZpcnN0LWNoaWxkIHsKKyAgICBtYXJnaW4tdG9wOiAxNjBweDsKKyAgICB0
ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKK3NlY3Rpb24uc2VsZWN0ZWQgeworICAgIGRpc3BsYXk6
IGJsb2NrOworfQorCisjdGVzdENvbnRhaW5lciB7CisgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgIHRvcDogMTVweDsKKyAgICBsZWZ0OiAxNXB4OworICAgIHdpZHRoOiA4MDBweDsKKyAgICBo
ZWlnaHQ6IDYwMHB4OworfQorCitzZWN0aW9uI3J1bm5pbmcgPiAjcHJvZ3Jlc3MgeworICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBib3R0b206IC02cHg7CisgICAgbGVmdDogNjBweDsKKyAg
ICByaWdodDogNjBweDsKKyAgICBoZWlnaHQ6IDZweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2IoMTI4LCAxMjgsIDEyOCk7CisgICAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCByZ2IoNDYsIDUx
LCA1NSk7CisgICAgYm9yZGVyLXJpZ2h0OiA2cHggc29saWQgcmdiKDQ2LCA1MSwgNTUpOworfQor
CitzZWN0aW9uI3J1bm5pbmcgI3Byb2dyZXNzLWNvbXBsZXRlZCB7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAgIGhlaWdodDogNnB4OworICAg
IHdpZHRoOiAwOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzUsIDIzNSwgMjM1KTsKK30K
Kworc2VjdGlvbiNydW5uaW5nID4gI3JlY29yZCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgIGJvdHRvbTogLTEzMHB4OworICAgIGxlZnQ6IDBweDsKKyAgICByaWdodDogMHB4OworICAg
IGhlaWdodDogNzVweDsKKyAgICBjb2xvcjogcmdiKDEyOCwgMTI4LCAxMjgpOworICAgIHBhZGRp
bmc6IDE1cHg7CisgICAgYm9yZGVyOiA2cHggc29saWQgcmdiKDIzNSwgMjM1LCAyMzUpOworICAg
IGJvcmRlci1yYWRpdXM6IDIwcHg7Cit9CisKK3NlY3Rpb24jcnVubmluZyA+ICNyZWNvcmQgPiB0
YWJsZSwKK3NlY3Rpb24jcmVzdWx0cyA+IHRhYmxlIHsKKyAgICB3aWR0aDogMTAwJTsKK30KKwor
c2VjdGlvbiNydW5uaW5nID4gI3JlY29yZCA+IHRhYmxlIHRkLCB0aCwKK3NlY3Rpb24jcmVzdWx0
cyA+IHRhYmxlIHRkLCB0aCB7CisgICAgZm9udC1zaXplOiAxMnB4OworICAgIGJvcmRlcjogMXB4
IHNvbGlkICM5OGJmMjE7CisgICAgcGFkZGluZzogM3B4IDdweCAycHggN3B4OworfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorc2VjdGlvbiNydW5uaW5nID4g
I3JlY29yZCA+IHRhYmxlIHRyLmFsdCwgdGQKK3NlY3Rpb24jcmVzdWx0cyA+IHRhYmxlIHRyLmFs
dCwgdGQgeworICAgIGNvbG9yOiAjMDAwMDAwOworICAgIGJhY2tncm91bmQtY29sb3I6ICNFQUYy
RDM7Cit9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK3Nl
Y3Rpb24jcnVubmluZyA+ICNyZWNvcmQgPiB0YWJsZSB0aCwKK3NlY3Rpb24jcmVzdWx0cyA+IHRh
YmxlIHRoIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQTdDOTQyOyAKKyAgICB0ZXh0LWFsaWdu
OiBjZW50ZXI7Cit9CisKKy5vcHRpb25zIHsKKyAgICBtYXJnaW46MCBhdXRvOyAgICAKKyAgICBt
YXJnaW4tdG9wOiAzMHB4OworICAgIHdpZHRoOiA1MDBweDsKKyAgICBhbGlnbjogY2VudGVyOwor
fQorCisuY29sdW1uIHsKKyAgICB3aWR0aDogNDUlOworICAgIGZsb2F0OmxlZnQ7CisgICAgaGVp
Z2h0OiAxMjBweDsKKyAgICBwYWRkaW5nOjVweDsKK30KKworaW5wdXRbdHlwZT0ibnVtYmVyIl0g
eworICAgd2lkdGg6NTBweDsKK30KKworLmJ1dHRvbnMgeworICAgIG1hcmdpbi10b3A6IDEwcHg7
CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGNsZWFyOiBib3RoOworfQorCitidXR0b24g
eworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKyAgICBib3JkZXI6IDNweCBzb2xpZCBy
Z2IoMjM1LCAyMzUsIDIzNSk7CisgICAgYm9yZGVyLXJhZGl1czogMTBweDsKKyAgICBtaW4td2lk
dGg6IDIwMHB4OworICAgIHBhZGRpbmc6IDVweCAyMHB4OworICAgIG1hcmdpbjogMCA0MHB4Owor
ICAgIGZvbnQtc2l6ZTogMjVweDsKKyAgICBjb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOworICAg
IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworCisgICAgLXdlYmtpdC11c2VyLXNlbGVj
dDogbm9uZTsKK30KKworYnV0dG9uOmFjdGl2ZSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdi
KDIzNSwgMjM1LCAyMzUpOworICAgIGNvbG9yOiByZ2IoNDYsIDUxLCA1NSk7CisgICAgYm9yZGVy
LWNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSkgIWltcG9ydGFudDsKK30KKworYnV0dG9uOmZvY3Vz
IHsKKyAgICBvdXRsaW5lOiBub25lOworICAgIGJvcmRlci1jb2xvcjogcmdiKDIzMiwgNzksIDc5
KTsKK30KKworLnNtYWxsLWJ1dHRvbiB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwor
ICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYig5NiwgOTYsIDk2KTsKKyAgICBib3JkZXItcmFkaXVz
OiAycHg7CisgICAgcGFkZGluZzogMXB4IDRweDsKKyAgICBtYXJnaW46IDAgNHB4OworICAgIGJh
Y2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICAgIGN1cnNvcjogcG9pbnRlcjsKKyAgICB0
ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKK30KKwor
I2dyYXBoQ29udGFpbmVyIHsKKyAgZm9udDogMTBweCBzYW5zLXNlcmlmOworICBjb2xvcjogcmdi
KDIzNSwgMjM1LCAyMzUpOyAgCit9CisKKy5heGlzIHBhdGgsCisuYXhpcyBsaW5lIHsKKyAgZmls
bDogbm9uZTsKKyAgc3Ryb2tlOiByZ2IoMjM1LCAyMzUsIDIzNSk7CisgIHNoYXBlLXJlbmRlcmlu
ZzogY3Jpc3BFZGdlczsKK30KKworLmxlZnQtc2FtcGxlcyB7CisgIGZpbGw6IG5vbmU7CisgIHN0
cm9rZTogc3RlZWxibHVlOworICBzdHJva2Utd2lkdGg6IDEuNXB4OworfQorCisucmlnaHQtc2Ft
cGxlcyB7CisgICAgZmlsbDogbm9uZTsKKyAgICBzdHJva2U6IHJlZDsKKyAgICBzdHJva2Utd2lk
dGg6IDEuNXB4OworfQorCisuc21hcGxlLXRpbWUgeworICAgIGZpbGw6IG5vbmU7CisgICAgc3Ry
b2tlOiBncmVlbjsKKyAgICBzdHJva2Utd2lkdGg6IDEuNXB4OworfQorCisubGVmdC1tZWFuIHsK
KyAgICBmaWxsOiBub25lOworICAgIHN0cm9rZTogeWVsbG93OworICAgIHN0cm9rZS13aWR0aDog
MS41cHg7Cit9CisKKy5yaWdodC1tZWFuIHsKKyAgICBmaWxsOiBub25lOworICAgIHN0cm9rZTog
bWFnZW50YTsKKyAgICBzdHJva2Utd2lkdGg6IDEuNXB4OworfQpJbmRleDogUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21l
dGVyLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5l
ci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMyBA
QAord2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudCA9IHsKKyAgICBpdGVyYXRpb25Db3VudDog
MSwKKyAgICB0ZXN0c0NvdW50OiBudWxsLAorICAgIHByb2dyZXNzQmFyOiBudWxsLAorICAgIHJl
Y29yZFRhYmxlOiBudWxsLAorICAgIG9wdGlvbnM6IHsgdGVzdEludGVydmFsOiAzMDAwMCwgZnJh
bWVSYXRlOiA1MCwgZXN0aW1hdGVkRnJhbWVSYXRlOiB0cnVlLCBmaXhUZXN0Q29tcGxleGl0eSA6
IGZhbHNlIH0sCisgICAgc2NvcmU6IDAsCisgICAgX2l0ZXJhdGlvbnNTYW1wbGVyczogW10sCisg
ICAgX3Jlc3VsdHNUYWJsZTogbnVsbCwKKyAgICBfaXNDaHJvbWU6IC9DaHJvbWUvLnRlc3QobmF2
aWdhdG9yLnVzZXJBZ2VudCkgJiYgL0dvb2dsZSBJbmMvLnRlc3QobmF2aWdhdG9yLnZlbmRvciks
CisgICAgX2lzU2FmYXJpOiAvU2FmYXJpLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmIC9B
cHBsZSBDb21wdXRlci8udGVzdChuYXZpZ2F0b3IudmVuZG9yKSwKKyAgICB3aWxsQWRkVGVzdEZy
YW1lOiBmdW5jdGlvbiAoZnJhbWUpIHsKKyAgICAgICAgdmFyIG1haW4gPSBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCJtYWluIik7CisgICAgICAgIHZhciBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUo
bWFpbik7CisgICAgICAgIGZyYW1lLnN0eWxlLmxlZnQgPSBtYWluLm9mZnNldExlZnQgKyBwYXJz
ZUludChzdHlsZS5ib3JkZXJMZWZ0V2lkdGgpICsgcGFyc2VJbnQoc3R5bGUucGFkZGluZ0xlZnQp
ICsgInB4IjsKKyAgICAgICAgZnJhbWUuc3R5bGUudG9wID0gbWFpbi5vZmZzZXRUb3AgKyBwYXJz
ZUludChzdHlsZS5ib3JkZXJUb3BXaWR0aCkgKyBwYXJzZUludChzdHlsZS5wYWRkaW5nVG9wKSAr
ICJweCI7CisgICAgfSwKKyAgICBkaWRSdW5UZXN0OiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRo
aXMucHJvZ3Jlc3NCYXIuaW5jUmFuZ2UoKTsKKyAgICB9LAorICAgIHdpbGxTdGFydEZpcnN0SXRl
cmF0aW9uOiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRoaXMuX2l0ZXJhdGlvbnNTYW1wbGVycyA9
IFtdOworICAgICAgICB0aGlzLl9yZXN1bHRzVGFibGUgPSBuZXcgUmVjb3JkVGFibGUoZG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbCgiLnJlc3VsdHMtdGFibGUiKVswXSk7CisgICAgICAgIAorICAg
ICAgICB0aGlzLnByb2dyZXNzQmFyID0gbmV3IFByb2dyZXNzQmFyKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwcm9ncmVzcy1jb21wbGV0ZWQiKSwgdGhpcy50ZXN0c0NvdW50KTsKKyAgICAgICAg
dGhpcy5yZWNvcmRUYWJsZSA9IG5ldyBSZWNvcmRUYWJsZShkb2N1bWVudC5xdWVyeVNlbGVjdG9y
QWxsKCIucmVjb3JkLXRhYmxlIilbMF0pOworICAgIH0sCisgICAgZGlkUnVuU3VpdGVzOiBmdW5j
dGlvbiAoc3VpdGVzU2FtcGxlcnMpIHsKKyAgICAgICAgdGhpcy5faXRlcmF0aW9uc1NhbXBsZXJz
LnB1c2goc3VpdGVzU2FtcGxlcnMpOworICAgIH0sCisgICAgZGlkRmluaXNoTGFzdEl0ZXJhdGlv
bjogZnVuY3Rpb24gKCkgeworICAgICAgICB0aGlzLnNjb3JlID0gdGhpcy5fcmVzdWx0c1RhYmxl
LnNob3dJdGVyYXRpb25zKHRoaXMuX2l0ZXJhdGlvbnNTYW1wbGVycywgIiIpOworICAgICAgICBz
aG93UmVzdWx0cygpOworICAgIH0sCisgICAgYnJvd3NlciA6IGZ1bmN0aW9uKCkgeworICAgICAg
ICBpZiAodGhpcy5faXNDaHJvbWUpCisgICAgICAgICAgICByZXR1cm4gIkNocm9tZSI7CisgICAg
ICAgIGlmICh0aGlzLl9pc1NhZmFyaSkKKyAgICAgICAgICAgIHJldHVybiAiU2FmYXJpIjsKKyAg
ICAgICAgcmV0dXJuICIiOworICAgIH0KK30KKworZnVuY3Rpb24gc2hvd1NlY3Rpb24oc2VjdGlv
bklkZW50aWZpZXIsIHB1c2hTdGF0ZSkgeworICAgIHZhciBjdXJyZW50U2VjdGlvbkVsZW1lbnQg
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzZWN0aW9uLnNlbGVjdGVkIik7CisgICAgY29uc29s
ZS5hc3NlcnQoY3VycmVudFNlY3Rpb25FbGVtZW50KTsKKworICAgIHZhciBuZXdTZWN0aW9uRWxl
bWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlY3Rpb25JZGVudGlmaWVyKTsKKyAgICBj
b25zb2xlLmFzc2VydChuZXdTZWN0aW9uRWxlbWVudCk7CisKKyAgICBjdXJyZW50U2VjdGlvbkVs
ZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic2VsZWN0ZWQiKTsKKyAgICBuZXdTZWN0aW9uRWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIpOworCisgICAgaWYgKHB1c2hTdGF0ZSkKKyAgICAg
ICAgaGlzdG9yeS5wdXNoU3RhdGUoe3NlY3Rpb246IHNlY3Rpb25JZGVudGlmaWVyfSwgZG9jdW1l
bnQudGl0bGUpOworfQorCitmdW5jdGlvbiBzdGFydEJlbmNobWFyaygpIHsKKyAgICB2YXIgY2hl
Y2tib3hlcyA9IFsgCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJodG1sLXN1aXRl
IiksIAorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzLXN1aXRlIiksIAor
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3ZnLXN1aXRlIikKKyAgICBdOworICAg
IHZhciBlbmFibGVkU3VpdGVzID0gU3VpdGVzLmZpbHRlcihmdW5jdGlvbiAoc3VpdGUsIGluZGV4
KSB7IHJldHVybiAhc3VpdGUuZGlzYWJsZWQgJiYgY2hlY2tib3hlc1tpbmRleF0uY2hlY2tlZDsg
fSk7CisgICAgdmFyIHRlc3RzQ291bnQgPSBlbmFibGVkU3VpdGVzLnJlZHVjZShmdW5jdGlvbiAo
dGVzdHNDb3VudCwgc3VpdGUpIHsgcmV0dXJuIHRlc3RzQ291bnQgKyBzdWl0ZS50ZXN0cy5sZW5n
dGg7IH0sIDApOworICAgIGJlbmNobWFya1J1bm5lckNsaWVudC50ZXN0c0NvdW50ID0gYmVuY2ht
YXJrUnVubmVyQ2xpZW50Lml0ZXJhdGlvbkNvdW50ICogdGVzdHNDb3VudDsKKyAgICBiZW5jaG1h
cmtSdW5uZXJDbGllbnQub3B0aW9uc1sidGVzdEludGVydmFsIl0gPSBwYXJzZUludChkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdC1pbnRlcnZhbCIpLnZhbHVlKSAqIDEwMDA7CisgICAgYmVu
Y2htYXJrUnVubmVyQ2xpZW50Lm9wdGlvbnNbImZyYW1lUmF0ZSJdID0gcGFyc2VJbnQoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImZyYW1lLXJhdGUiKS52YWx1ZSk7CisgICAgYmVuY2htYXJrUnVu
bmVyQ2xpZW50Lm9wdGlvbnNbImVzdGltYXRlZEZyYW1lUmF0ZSJdID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImVzdGltYXRlZC1mcmFtZS1yYXRlIikuY2hlY2tlZDsgICAgCisgICAgYmVuY2ht
YXJrUnVubmVyQ2xpZW50Lm9wdGlvbnNbImZpeFRlc3RDb21wbGV4aXR5Il0gPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZml4LXRlc3QtY29tcGxleGl0eSIpLmNoZWNrZWQ7CisgICAgdmFyIHJ1
bm5lciA9IG5ldyBCZW5jaG1hcmtSdW5uZXIoZW5hYmxlZFN1aXRlcywgYmVuY2htYXJrUnVubmVy
Q2xpZW50KTsKKyAgICBydW5uZXIucnVuTXVsdGlwbGVJdGVyYXRpb25zKGJlbmNobWFya1J1bm5l
ckNsaWVudC5pdGVyYXRpb25Db3VudCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAg
ICBzaG93U2VjdGlvbigicnVubmluZyIpOworICAgIHN0YXJ0QmVuY2htYXJrKCk7Cit9CisKK2Z1
bmN0aW9uIHNob3dSZXN1bHRzKHNjb3JlKSB7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCIjcmVzdWx0cyA+IGgxIik7CisgICAgZWxlbWVudC50ZXh0Q29udGVudCA9
ICJSZXN1bHRzOiIKKyAgICAKKyAgICB2YXIgYnJvd3NlciA9IGJlbmNobWFya1J1bm5lckNsaWVu
dC5icm93c2VyKCk7ICAgIAorICAgIGlmIChicm93c2VyLmxlbmd0aCkKKyAgICAgICAgZWxlbWVu
dC50ZXh0Q29udGVudCArPSAiIFticm93c2VyID0gIiArIGJyb3dzZXIgKyAiXSI7CisKKyAgICB2
YXIgc2NvcmUgPSBiZW5jaG1hcmtSdW5uZXJDbGllbnQuc2NvcmUudG9GaXhlZCgyKTsKKyAgICBl
bGVtZW50LnRleHRDb250ZW50ICs9ICIgW1Njb3JlID0gIiArIHNjb3JlICsgIl0iOworICAgICAg
ICAKKyAgICBzaG93U2VjdGlvbigicmVzdWx0cyIsIHRydWUpOworfQorCitmdW5jdGlvbiBzaG93
R3JhcGgodGVzdE5hbWUsIGF4aXNlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KSB7Cisg
ICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZ3JhcGggPiBoMSIpOwor
ICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSAiR3JhcGg6IgorCisgICAgaWYgKHRlc3ROYW1lLmxl
bmd0aCkKKyAgICAgICAgZWxlbWVudC50ZXh0Q29udGVudCArPSAiIFt0ZXN0ID0gIiArIHRlc3RO
YW1lICsgIl0iOworICAgICAgICAgICAgCisgICAgZ3JhcGgoIiNncmFwaENvbnRhaW5lciIsIG5l
dyBQb2ludCg3MDAsIDQwMCksIG5ldyBJbnNldHMoMjAsIDUwLCAyMCwgNTApLCBheGlzZXMsIHNh
bXBsZXMsIHNhbXBsaW5nVGltZU9mZnNldCk7CisgICAgc2hvd1NlY3Rpb24oImdyYXBoIiwgdHJ1
ZSk7ICAgIAorfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNv
dXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzCShyZXZpc2lv
biAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYmVu
Y2htYXJrLXJ1bm5lci5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4OCBAQAorZnVuY3Rp
b24gQmVuY2htYXJrUnVubmVyU3RhdGUoc3VpdGVzKSB7CisgICAgdGhpcy5fc3VpdGVzID0gc3Vp
dGVzOworICAgIHRoaXMuX3N1aXRlSW5kZXggPSAtMTsKKyAgICB0aGlzLl90ZXN0SW5kZXggPSAw
OworICAgIHRoaXMubmV4dCgpOworfQorCitCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUu
Y3VycmVudFN1aXRlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRoaXMuX3N1aXRlc1t0aGlz
Ll9zdWl0ZUluZGV4XTsKK30KKworQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmN1cnJl
bnRUZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHN1aXRlID0gdGhpcy5jdXJyZW50U3VpdGUo
KTsKKyAgICByZXR1cm4gc3VpdGUgPyBzdWl0ZS50ZXN0c1t0aGlzLl90ZXN0SW5kZXhdIDogbnVs
bDsKK30KKworQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmlzRmlyc3RUZXN0ID0gZnVu
Y3Rpb24oKSB7CisgICAgcmV0dXJuICF0aGlzLl90ZXN0SW5kZXg7Cit9CisKK0JlbmNobWFya1J1
bm5lclN0YXRlLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5fdGVzdElu
ZGV4Kys7CisKKyAgICB2YXIgc3VpdGUgPSB0aGlzLl9zdWl0ZXNbdGhpcy5fc3VpdGVJbmRleF07
CisgICAgaWYgKHN1aXRlICYmIHRoaXMuX3Rlc3RJbmRleCA8IHN1aXRlLnRlc3RzLmxlbmd0aCkK
KyAgICAgICAgcmV0dXJuIHRoaXM7CisKKyAgICB0aGlzLl90ZXN0SW5kZXggPSAwOworICAgIGRv
IHsKKyAgICAgICAgdGhpcy5fc3VpdGVJbmRleCsrOworICAgIH0gd2hpbGUgKHRoaXMuX3N1aXRl
SW5kZXggPCB0aGlzLl9zdWl0ZXMubGVuZ3RoICYmIHRoaXMuX3N1aXRlc1t0aGlzLl9zdWl0ZUlu
ZGV4XS5kaXNhYmxlZCk7CisKKyAgICByZXR1cm4gdGhpczsKK30KKworQmVuY2htYXJrUnVubmVy
U3RhdGUucHJvdG90eXBlLnByZXBhcmVDdXJyZW50VGVzdCA9IGZ1bmN0aW9uKHJ1bm5lciwgZnJh
bWUpIHsKKyAgICB2YXIgc3VpdGUgPSB0aGlzLmN1cnJlbnRTdWl0ZSgpOworICAgIHZhciB0ZXN0
ID0gdGhpcy5jdXJyZW50VGVzdCgpOworICAgIHZhciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21p
c2U7CisgICAgZnJhbWUub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHN1aXRlLnByZXBh
cmUocnVubmVyLCBmcmFtZS5jb250ZW50V2luZG93LCBmcmFtZS5jb250ZW50RG9jdW1lbnQpLnRo
ZW4oZnVuY3Rpb24ocmVzdWx0KSB7IHByb21pc2UucmVzb2x2ZShyZXN1bHQpOyB9KTsKKyAgICB9
CisgICAgZnJhbWUuc3JjID0gdGVzdC51cmw7CisgICAgcmV0dXJuIHByb21pc2U7Cit9CisKK2Z1
bmN0aW9uIEJlbmNobWFya1J1bm5lcihzdWl0ZXMsIGNsaWVudCkgeworICAgIHRoaXMuX3N1aXRl
cyA9IHN1aXRlczsKKyAgICB0aGlzLl9jbGllbnQgPSBjbGllbnQ7Cit9CisKK0JlbmNobWFya1J1
bm5lci5wcm90b3R5cGUud2FpdEZvckVsZW1lbnQgPSBmdW5jdGlvbihzZWxlY3RvcikgeworICAg
IHZhciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7CisgICAgdmFyIGNvbnRlbnREb2N1bWVu
dCA9IHRoaXMuX2ZyYW1lLmNvbnRlbnREb2N1bWVudDsKKworICAgIGZ1bmN0aW9uIHJlc29sdmVJ
ZlJlYWR5KCkgeworICAgICAgICB2YXIgZWxlbWVudCA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNl
bGVjdG9yKHNlbGVjdG9yKTsKKyAgICAgICAgaWYgKGVsZW1lbnQpCisgICAgICAgICAgICByZXR1
cm4gcHJvbWlzZS5yZXNvbHZlKGVsZW1lbnQpOworICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmVJ
ZlJlYWR5LCA1MCk7CisgICAgfQorCisgICAgcmVzb2x2ZUlmUmVhZHkoKTsKKyAgICByZXR1cm4g
cHJvbWlzZTsKK30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fYXBwZW5kRnJhbWUgPSBm
dW5jdGlvbihzcmMpIHsKKyAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJp
ZnJhbWUiKTsKKyAgICBmcmFtZS5zdHlsZS53aWR0aCA9ICI4MDBweCI7CisgICAgZnJhbWUuc3R5
bGUuaGVpZ2h0ID0gIjYwMHB4IjsKKyAgICBmcmFtZS5zdHlsZS5ib3JkZXIgPSAiMHB4IG5vbmUi
OworICAgIGZyYW1lLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIjsKKyAgICBmcmFtZS5zZXRB
dHRyaWJ1dGUoInNjcm9sbGluZyIsICJubyIpOworCisgICAgdmFyIG1hcmdpbkxlZnQgPSBwYXJz
ZUludChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLm1hcmdpbkxlZnQpOworICAgIHZh
ciBtYXJnaW5Ub3AgPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLm1h
cmdpblRvcCk7CisgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoID4gODAwICsgbWFyZ2luTGVmdCAm
JiB3aW5kb3cuaW5uZXJIZWlnaHQgPiA2MDAgKyBtYXJnaW5Ub3ApIHsKKyAgICAgICAgZnJhbWUu
c3R5bGUubGVmdCA9IG1hcmdpbkxlZnQgKyAicHgiOworICAgICAgICBmcmFtZS5zdHlsZS50b3Ag
PSBtYXJnaW5Ub3AgKyAicHgiOworICAgIH0gZWxzZSB7CisgICAgICAgIGZyYW1lLnN0eWxlLmxl
ZnQgPSAiMHB4IjsKKyAgICAgICAgZnJhbWUuc3R5bGUudG9wID0gIjBweCI7CisgICAgfQorCisg
ICAgaWYgKHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGllbnQud2lsbEFkZFRlc3RGcmFtZSkKKyAg
ICAgICAgdGhpcy5fY2xpZW50LndpbGxBZGRUZXN0RnJhbWUoZnJhbWUpOworCisgICAgZG9jdW1l
bnQuYm9keS5pbnNlcnRCZWZvcmUoZnJhbWUsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7Cisg
ICAgdGhpcy5fZnJhbWUgPSBmcmFtZTsKKyAgICByZXR1cm4gZnJhbWU7Cit9CisKK0JlbmNobWFy
a1J1bm5lci5wcm90b3R5cGUuX3JlbW92ZUZyYW1lID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKHRo
aXMuX2ZyYW1lKSB7CisgICAgICAgIHRoaXMuX2ZyYW1lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo
dGhpcy5fZnJhbWUpOworICAgICAgICB0aGlzLl9mcmFtZSA9IG51bGw7CisgICAgfQorfQorCitC
ZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9ydW5UZXN0QW5kUmVjb3JkUmVzdWx0cyA9IGZ1bmN0
aW9uKHN0YXRlKSB7CisgICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICB2
YXIgc3VpdGUgPSBzdGF0ZS5jdXJyZW50U3VpdGUoKTsKKyAgICB2YXIgdGVzdCA9IHN0YXRlLmN1
cnJlbnRUZXN0KCk7CisgICAgCisgICAgaWYgKHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGllbnQu
d2lsbFJ1blRlc3RUZXN0KQorICAgICAgICB0aGlzLl9jbGllbnQud2lsbFJ1blRlc3Qoc3VpdGUs
IHRlc3QpOworCisgICAgdmFyIGNvbnRlbnRXaW5kb3cgPSB0aGlzLl9mcmFtZS5jb250ZW50V2lu
ZG93OworICAgIHZhciBzZWxmID0gdGhpczsKKworICAgIHN1aXRlLnJ1bihjb250ZW50V2luZG93
LCB0ZXN0LCB0aGlzLl9jbGllbnQub3B0aW9ucywgdGhpcy5fY2xpZW50LnJlY29yZFRhYmxlLCB0
aGlzLl9jbGllbnQucHJvZ3Jlc3NCYXIpLnRoZW4oZnVuY3Rpb24oc2FtcGxlcikgeworICAgICAg
ICB2YXIgc2FtcGxlcnMgPSBzZWxmLl9zdWl0ZXNTYW1wbGVyc1tzdWl0ZS5uYW1lXSB8fCBbXTsK
KyAgICAgICAgCisgICAgICAgIHNhbXBsZXJzW3Rlc3QubmFtZV0gPSBzYW1wbGVyOworICAgICAg
ICBzZWxmLl9zdWl0ZXNTYW1wbGVyc1tzdWl0ZS5uYW1lXSA9IHNhbXBsZXJzOworCisgICAgICAg
IGlmIChzZWxmLl9jbGllbnQgJiYgc2VsZi5fY2xpZW50LmRpZFJ1blRlc3QpCisgICAgICAgICAg
ICBzZWxmLl9jbGllbnQuZGlkUnVuVGVzdChzdWl0ZSwgdGVzdCk7CisgICAgICAgIAorICAgICAg
ICBzdGF0ZS5uZXh0KCk7CisgICAgICAgIGlmIChzdGF0ZS5jdXJyZW50U3VpdGUoKSAhPSBzdWl0
ZSkKKyAgICAgICAgICAgIHNlbGYuX3JlbW92ZUZyYW1lKCk7CisgICAgICAgIHByb21pc2UucmVz
b2x2ZShzdGF0ZSk7CisgICAgfSk7CisgICAgCisgICAgcmV0dXJuIHByb21pc2U7Cit9CisKK0Jl
bmNobWFya1J1bm5lci5wcm90b3R5cGUuc3RlcCA9IGZ1bmN0aW9uKHN0YXRlKSB7CisgICAgaWYg
KCFzdGF0ZSkgeworICAgICAgICBzdGF0ZSA9IG5ldyBCZW5jaG1hcmtSdW5uZXJTdGF0ZSh0aGlz
Ll9zdWl0ZXMpOworICAgICAgICB0aGlzLl9zdWl0ZXNTYW1wbGVycyA9IHt9OworICAgIH0KKwor
ICAgIHZhciBzdWl0ZSA9IHN0YXRlLmN1cnJlbnRTdWl0ZSgpOworICAgIGlmICghc3VpdGUpIHsK
KyAgICAgICAgdGhpcy5fZmluYWxpemUoKTsKKyAgICAgICAgdmFyIHByb21pc2UgPSBuZXcgU2lt
cGxlUHJvbWlzZTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybiBw
cm9taXNlOworICAgIH0KKworICAgIGlmIChzdGF0ZS5pc0ZpcnN0VGVzdCgpKSB7CisgICAgICAg
IHRoaXMuX21hc3VyZWRWYWx1ZXNGb3JDdXJyZW50U3VpdGUgPSB7fTsKKyAgICAgICAgdGhpcy5f
YXBwZW5kRnJhbWUoKTsKKyAgICB9CisKKyAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgcmV0dXJu
IHN0YXRlLnByZXBhcmVDdXJyZW50VGVzdCh0aGlzLCB0aGlzLl9mcmFtZSkudGhlbihmdW5jdGlv
bihwcmVwYXJlUmV0dXJuVmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHNlbGYuX3J1blRlc3RBbmRS
ZWNvcmRSZXN1bHRzKHN0YXRlKTsKKyAgICB9KTsKK30KKworQmVuY2htYXJrUnVubmVyLnByb3Rv
dHlwZS5ydW5BbGxTdGVwcyA9IGZ1bmN0aW9uKHN0YXJ0aW5nU3RhdGUpIHsKKyAgICB2YXIgbmV4
dENhbGxlZSA9IHRoaXMucnVuQWxsU3RlcHMuYmluZCh0aGlzKTsKKyAgICB0aGlzLnN0ZXAoc3Rh
cnRpbmdTdGF0ZSkudGhlbihmdW5jdGlvbihuZXh0U3RhdGUpIHsKKyAgICAgICAgaWYgKG5leHRT
dGF0ZSkKKyAgICAgICAgICAgIG5leHRDYWxsZWUobmV4dFN0YXRlKTsKKyAgICB9KTsKK30KKwor
QmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5ydW5NdWx0aXBsZUl0ZXJhdGlvbnMgPSBmdW5jdGlv
bihpdGVyYXRpb25Db3VudCkgeworICAgIHZhciBzZWxmID0gdGhpczsKKyAgICB2YXIgY3VycmVu
dEl0ZXJhdGlvbiA9IDA7CisKKyAgICB0aGlzLl9ydW5OZXh0SXRlcmF0aW9uID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIGN1cnJlbnRJdGVyYXRpb24rKzsKKyAgICAgICAgaWYgKGN1cnJlbnRJdGVy
YXRpb24gPCBpdGVyYXRpb25Db3VudCkKKyAgICAgICAgICAgIHNlbGYucnVuQWxsU3RlcHMoKTsK
KyAgICAgICAgZWxzZSBpZiAodGhpcy5fY2xpZW50ICYmIHRoaXMuX2NsaWVudC5kaWRGaW5pc2hM
YXN0SXRlcmF0aW9uKQorICAgICAgICAgICAgc2VsZi5fY2xpZW50LmRpZEZpbmlzaExhc3RJdGVy
YXRpb24oKTsKKyAgICB9CisKKyAgICBpZiAoc2VsZi5fY2xpZW50ICYmIHNlbGYuX2NsaWVudC53
aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbikKKyAgICAgICAgc2VsZi5fY2xpZW50LndpbGxTdGFydEZp
cnN0SXRlcmF0aW9uKGl0ZXJhdGlvbkNvdW50KTsKKworICAgIHNlbGYucnVuQWxsU3RlcHMoKTsK
K30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fZmluYWxpemUgPSBmdW5jdGlvbigpIHsK
KyAgICB0aGlzLl9yZW1vdmVGcmFtZSgpOworICAgICAgICAKKyAgICBpZiAodGhpcy5fY2xpZW50
ICYmIHRoaXMuX2NsaWVudC5kaWRSdW5TdWl0ZXMpCisgICAgICAgIHRoaXMuX2NsaWVudC5kaWRS
dW5TdWl0ZXModGhpcy5fc3VpdGVzU2FtcGxlcnMpOworCisgICAgaWYgKHRoaXMuX3J1bk5leHRJ
dGVyYXRpb24pCisgICAgICAgIHRoaXMuX3J1bk5leHRJdGVyYXRpb24oKTsKK30KSW5kZXg6IFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2dyYXBoLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2dy
YXBoLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5l
ci9yZXNvdXJjZXMvZ3JhcGguanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDEgQEAKK2Z1
bmN0aW9uIGdyYXBoKHNlbGVjdG9yLCBzaXplLCBtYXJnaW5zLCBheGlzZXMsIHNhbXBsZXMsIHNh
bXBsaW5nVGltZU9mZnNldCkgeworCisgICAgdmFyIGVsZW1lbnQgPSBlbGVtZW50ID0gZG9jdW1l
bnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CisgICAgd2hpbGUgKGVsZW1lbnQuZmlyc3RDaGls
ZCkKKyAgICAgICAgZWxlbWVudC5yZW1vdmVDaGlsZChlbGVtZW50LmZpcnN0Q2hpbGQpOworCisg
ICAgdmFyIHggPSBkMy5zY2FsZS5saW5lYXIoKQorICAgICAgICAgICAgLnJhbmdlKFswLCBzaXpl
LndpZHRoKCldKQorICAgICAgICAgICAgLmRvbWFpbihkMy5leHRlbnQoc2FtcGxlcywgZnVuY3Rp
b24oZCkgeyByZXR1cm4gZC50aW1lT2Zmc2V0OyB9KSk7ICAgICAgICAgICAgCisKKyAgICB2YXIg
eUxlZnQgPSBkMy5zY2FsZS5saW5lYXIoKQorICAgICAgICAgICAgLnJhbmdlKFtzaXplLmhlaWdo
dCgpLCAwXSkKKyAgICAgICAgICAgIC5kb21haW4oWzAsIGQzLm1heChzYW1wbGVzLCBmdW5jdGlv
bihkKSB7IHJldHVybiBkLnZhbHVlc1swXTsgfSldKTsKKworICAgIHZhciB5UmlnaHQgPSBkMy5z
Y2FsZS5saW5lYXIoKQorICAgICAgICAgICAgLnJhbmdlKFtzaXplLmhlaWdodCgpLCAwXSkKKyAg
ICAgICAgICAgIC5kb21haW4oWzAsIGQzLm1heChzYW1wbGVzLCBmdW5jdGlvbihkKSB7IHJldHVy
biBkLnZhbHVlc1sxXTsgfSldKTsKKworICAgIHZhciB4QXhpcyA9IGQzLnN2Zy5heGlzKCkKKyAg
ICAgICAgICAgIC5zY2FsZSh4KQorICAgICAgICAgICAgLm9yaWVudCgiYm90dG9tIik7CisKKyAg
ICB2YXIgeUF4aXNMZWZ0ID0gZDMuc3ZnLmF4aXMoKQorICAgICAgICAgICAgLnNjYWxlKHlMZWZ0
KQorICAgICAgICAgICAgLm9yaWVudCgibGVmdCIpOworCisgICAgdmFyIHlBeGlzUmlnaHQgPSBk
My5zdmcuYXhpcygpCisgICAgICAgICAgICAuc2NhbGUoeVJpZ2h0KQorICAgICAgICAgICAgLm9y
aWVudCgicmlnaHQiKTsKKworICAgIHZhciBsaW5lTGVmdCA9IGQzLnN2Zy5saW5lKCkKKyAgICAg
ICAgICAgIC54KGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHgoZC50aW1lT2Zmc2V0KTsgfSkKKyAgICAg
ICAgICAgIC55KGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHlMZWZ0KGQudmFsdWVzWzBdKTsgfSk7CisK
KyAgICB2YXIgbGluZVJpZ2h0ID0gZDMuc3ZnLmxpbmUoKQorICAgICAgICAgICAgLngoZnVuY3Rp
b24oZCkgeyByZXR1cm4geChkLnRpbWVPZmZzZXQpOyB9KQorICAgICAgICAgICAgLnkoZnVuY3Rp
b24oZCkgeyByZXR1cm4geVJpZ2h0KGQudmFsdWVzWzFdKTsgfSk7CisKKyAgICBzYW1wbGVzLmZv
ckVhY2goZnVuY3Rpb24oZCkgeworICAgICAgICBkLnRpbWVPZmZzZXQgPSArZC50aW1lT2Zmc2V0
OworICAgICAgICBkLnZhbHVlc1swXSA9ICtkLnZhbHVlc1swXTsKKyAgICAgICAgZC52YWx1ZXNb
MV0gPSArZC52YWx1ZXNbMV07ICAgICAgICAKKyAgICB9KTsgICAgCisKKyAgICB2YXIgc2FtcGxl
ZFNhbXBsZXMgPSBzYW1wbGVzLmZpbHRlcihmdW5jdGlvbihkKSB7CisgICAgICAgIHJldHVybiBk
LnRpbWVPZmZzZXQgPj0gc2FtcGxpbmdUaW1lT2Zmc2V0OworICAgIH0pOworICAgIAorICAgIHZh
ciBtZWFuTGVmdCA9IGQzLm1lYW4oc2FtcGxlZFNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsKKyAgICAg
ICAgcmV0dXJuICtkLnZhbHVlc1swXTsKKyAgICB9KTsKKworICAgIHZhciBtZWFuUmlnaHQgPSBk
My5tZWFuKHNhbXBsZWRTYW1wbGVzLCBmdW5jdGlvbihkKSB7CisgICAgICAgIHJldHVybiArZC52
YWx1ZXNbMV07CisgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgdmFy
IHN2ZyA9IGQzLnNlbGVjdChzZWxlY3RvcikuYXBwZW5kKCJzdmciKQorICAgICAgICAuYXR0cigi
d2lkdGgiLCBzaXplLndpZHRoKCkgKyBtYXJnaW5zLmxlZnQgKyBtYXJnaW5zLnJpZ2h0KQorICAg
ICAgICAuYXR0cigiaGVpZ2h0Iiwgc2l6ZS5oZWlnaHQoKSArIG1hcmdpbnMudG9wICsgbWFyZ2lu
cy5ib3R0b20pCisgICAgICAgIC5hcHBlbmQoImciKQorICAgICAgICAgICAgLmF0dHIoInRyYW5z
Zm9ybSIsICJ0cmFuc2xhdGUoIiArIG1hcmdpbnMubGVmdCArICIsIiArIG1hcmdpbnMudG9wICsg
IikiKTsKKworICAgIC8vIHgtYXhpcworICAgIHN2Zy5hcHBlbmQoImciKQorICAgICAgICAuYXR0
cigiY2xhc3MiLCAieCBheGlzIikKKyAgICAgICAgLmF0dHIoImZpbGwiLCAicmdiKDIzNSwgMjM1
LCAyMzUpIikKKyAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoMCwiICsgc2l6
ZS5oZWlnaHQoKSArICIpIikKKyAgICAgICAgLmNhbGwoeEF4aXMpCisgICAgICAgIC5hcHBlbmQo
InRleHQiKQorICAgICAgICAgICAgLmF0dHIoImNsYXNzIiwgImxhYmVsIikKKyAgICAgICAgICAg
IC5hdHRyKCJ4Iiwgc2l6ZS53aWR0aCgpKQorICAgICAgICAgICAgLmF0dHIoInkiLCAtNikKKyAg
ICAgICAgICAgIC5hdHRyKCJmaWxsIiwgInJnYigyMzUsIDIzNSwgMjM1KSIpCisgICAgICAgICAg
ICAuc3R5bGUoInRleHQtYW5jaG9yIiwgImVuZCIpCisgICAgICAgICAgICAudGV4dCgidGltZSIp
OworICAgICAgICAgICAgICAgICAKKyAgICAvLyB5TGVmdC1heGlzCisgICAgc3ZnLmFwcGVuZCgi
ZyIpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJ5IGF4aXMiKQorICAgICAgICAuYXR0cigiZmls
bCIsICJzdGVlbGJsdWUiKQorICAgICAgICAuY2FsbCh5QXhpc0xlZnQpCisgICAgICAgIC5hcHBl
bmQoInRleHQiKQorICAgICAgICAgICAgLmF0dHIoImNsYXNzIiwgImxhYmVsIikKKyAgICAgICAg
ICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAicm90YXRlKC05MCkiKQorICAgICAgICAgICAgLmF0dHIo
InkiLCA2KQorICAgICAgICAgICAgLmF0dHIoImZpbGwiLCAic3RlZWxibHVlIikKKyAgICAgICAg
ICAgIC5hdHRyKCJkeSIsICIuNzFlbSIpCisgICAgICAgICAgICAuc3R5bGUoInRleHQtYW5jaG9y
IiwgImVuZCIpCisgICAgICAgICAgICAudGV4dChheGlzZXNbMF0pOworCisgICAgLy8geVJpZ2h0
LWF4aXMKKyAgICBzdmcuYXBwZW5kKCJnIikKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgInkgYXhp
cyIpCisgICAgICAgIC5hdHRyKCJmaWxsIiwgInJlZCIpCisgICAgICAgIC5hdHRyKCJ0cmFuc2Zv
cm0iLCAidHJhbnNsYXRlKCIgKyBzaXplLndpZHRoKCkgKyAiLCAwKSIpCisgICAgICAgIC5jYWxs
KHlBeGlzUmlnaHQpCisgICAgICAgIC5hcHBlbmQoInRleHQiKQorICAgICAgICAgICAgLmF0dHIo
ImNsYXNzIiwgImxhYmVsIikKKyAgICAgICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAicm90YXRl
KC05MCkiKQorICAgICAgICAgICAgLmF0dHIoInkiLCA2KQorICAgICAgICAgICAgLmF0dHIoImZp
bGwiLCAicmVkIikKKyAgICAgICAgICAgIC5hdHRyKCJkeSIsICIuNzFlbSIpCisgICAgICAgICAg
ICAuc3R5bGUoInRleHQtYW5jaG9yIiwgImVuZCIpCisgICAgICAgICAgICAudGV4dChheGlzZXNb
MV0pOworCisgICAgLy8gbGVmdC1tZWFuCisgICAgc3ZnLmFwcGVuZCgic3ZnOmxpbmUiKQorICAg
ICAgICAuYXR0cigieDEiLCB4KDApKQorICAgICAgICAuYXR0cigieDIiLCBzaXplLndpZHRoKCkp
CisgICAgICAgIC5hdHRyKCJ5MSIsIHlMZWZ0KG1lYW5MZWZ0KSkKKyAgICAgICAgLmF0dHIoInky
IiwgeUxlZnQobWVhbkxlZnQpKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAibGVmdC1tZWFuIik7
CisKKyAgICAvLyByaWdodC1tZWFuCisgICAgc3ZnLmFwcGVuZCgic3ZnOmxpbmUiKQorICAgICAg
ICAuYXR0cigieDEiLCB4KDApKQorICAgICAgICAuYXR0cigieDIiLCBzaXplLndpZHRoKCkpCisg
ICAgICAgIC5hdHRyKCJ5MSIsIHlSaWdodChtZWFuUmlnaHQpKQorICAgICAgICAuYXR0cigieTIi
LCB5UmlnaHQobWVhblJpZ2h0KSkKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgInJpZ2h0LW1lYW4i
KTsgICAgICAgIAorCisgICAgLy8gc2FtcGxpbmdUaW1lT2Zmc2V0CisgICAgc3ZnLmFwcGVuZCgi
bGluZSIpCisgICAgICAgIC5hdHRyKCJ4MSIsIHgoc2FtcGxpbmdUaW1lT2Zmc2V0KSkKKyAgICAg
ICAgLmF0dHIoIngyIiwgeChzYW1wbGluZ1RpbWVPZmZzZXQpKQorICAgICAgICAuYXR0cigieTEi
LCB5TGVmdCgwKSkKKyAgICAgICAgLmF0dHIoInkyIiwgeUxlZnQoeUF4aXNMZWZ0LnNjYWxlKCku
ZG9tYWluKClbMV0pKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAic21hcGxlLXRpbWUiKTsKKwor
ICAgIC8vIGxlZnQtc2FtcGxlcworICAgIHN2Zy5hcHBlbmQoInBhdGgiKQorICAgICAgICAuZGF0
dW0oc2FtcGxlcykKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgImxlZnQtc2FtcGxlcyIpCisgICAg
ICAgIC5hdHRyKCJkIiwgbGluZUxlZnQpOworICAgICAgICAKKyAgICAvLyByaWdodC1zYW1wbGVz
CisgICAgc3ZnLmFwcGVuZCgicGF0aCIpCisgICAgICAgIC5kYXR1bShzYW1wbGVzKQorICAgICAg
ICAuYXR0cigiY2xhc3MiLCAicmlnaHQtc2FtcGxlcyIpCisgICAgICAgIC5hdHRyKCJkIiwgbGlu
ZVJpZ2h0KTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVz
b3VyY2VzL3Rlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNjcgQEAKK3ZhciBUaXRsZXMgPSBbCisgICAgeworICAgICAgICB0ZXh0IDog
IlRlc3QgTmFtZSIsCisgICAgICAgIHdpZHRoIDogMzAsCisgICAgICAgIGNoaWxkcmVuOiBbXQor
ICAgIH0sIHsKKyAgICAgICAgdGV4dCA6ICJQYXJ0aWNsZXMiLAorICAgICAgICB3aWR0aCA6IDMw
LAorICAgICAgICBjaGlsZHJlbjogWworICAgICAgICAgICAgeyB0ZXh0OiAgICJBdmcuIiwgd2lk
dGg6IDgsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAiXHUwMGIxIiwgd2lk
dGg6IDcsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAgICJTdGQuIiwgd2lk
dGg6IDgsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAgICAgICIlIiwgd2lk
dGg6IDcsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICBdCisgICAgfSwgeworICAgICAgICB0ZXh0
IDogIkZQUyIsCisgICAgICAgIHdpZHRoIDogMzAsICAgICAgICAgICAgCisgICAgICAgIGNoaWxk
cmVuOiBbCisgICAgICAgICAgICB7IHRleHQ6ICAgIkF2Zy4iLCB3aWR0aDogOCwgY2hpbGRyZW46
IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICJcdTAwYjEiLCB3aWR0aDogNywgY2hpbGRyZW46
IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICAgIlN0ZC4iLCB3aWR0aDogOCwgY2hpbGRyZW46
IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICAgICAgIiUiLCB3aWR0aDogNywgY2hpbGRyZW46
IFtdIH0sCisgICAgICAgIF0KKyAgICB9LCB7CisgICAgICAgIHRleHQgOiAiU2FtcGxlcyIsCisg
ICAgICAgIHdpZHRoIDogMTAsCisgICAgICAgIGNoaWxkcmVuOiBbXQorICAgIH0KK107CisKK3Zh
ciBTdWl0ZXMgPSBbXTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICJIVE1MIEJvdW5jaW5n
IFBhcnRpY2xlcyIsCisgICAgcHJlcGFyZTogZnVuY3Rpb24ocnVubmVyLCBjb250ZW50V2luZG93
LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVu
dCgiI3N0YWdlIikudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgcmV0dXJu
IGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sICAKKyAgICBydW46IGZ1bmN0aW9uKGNvbnRl
bnRXaW5kb3csIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAg
ICAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhpcywgdGVzdCwgb3B0aW9u
cywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICB9LAorICAgIHRpdGxlcyA6IFRpdGxl
cywKKyAgICB0ZXN0czogWworICAgICAgICB7IAorICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXNoYXBlcy5odG1sP2dhaW49MSZhZGRMaW1pdD0x
MDAmcmVtb3ZlTGltaXQ9NSZwYXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBl
PWNpcmNsZSIsCisgICAgICAgICAgICBuYW1lOiAiYm91bmNpbmcgY2lyY2xlcyIsCisgICAgICAg
ICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDIwMDAKKyAgICAgICAgfSwgeyAKKyAg
ICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zaGFw
ZXMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFydGljbGVXaWR0aD00
MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3RhciIsCisgICAgICAgICAgICBu
YW1lOiAiYm91bmNpbmcgY2xpcHBlZCByZWN0cyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisg
ICAgICAgICAgICBtYXg6IDEwMDAKKyAgICAgICAgfSwgeyAKKyAgICAgICAgICAgIHVybDogIi4u
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zaGFwZXMuaHRtbD9nYWluPTEmYWRk
TGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFydGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01
MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVudCIsCisgICAgICAgICAgICBuYW1lOiAiYm91bmNp
bmcgZ3JhZGllbnQgY2lyY2xlcyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAg
ICBtYXg6IDUwMAorICAgICAgICB9LCB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctaW1hZ2VzLmh0bWw/Z2Fpbj0wLjQmYWRkTGltaXQ9NSZy
ZW1vdmVMaW1pdD0yJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9
Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICBuYW1lOiAiYm91bmNpbmcg
U1ZHIGltYWdlcyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDIw
MAorICAgICAgICB9LCB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvYm91bmNpbmctaW1hZ2VzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1p
dD01JnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3Vy
Y2VzL3lpbi15YW5nLnBuZyIsCisgICAgICAgICAgICBuYW1lOiAiYm91bmNpbmcgUE5HIGltYWdl
cyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDIwMDAKKyAgICAg
ICAgfSwgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0
bWw/Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAwIiwKKyAgICAgICAgICAgIG5h
bWU6ICJsYXllcmluZyB0ZXh0IiwKKyAgICAgICAgICAgIHdlaWdodDogMSwKKyAgICAgICAgICAg
IG1heDogNDAwMAorICAgICAgICB9CisgICAgXQorfSk7CisKK1N1aXRlcy5wdXNoKHsKKyAgICBu
YW1lOiAiQ2FudmFzIEJvdW5jaW5nIFBhcnRpY2xlcyIsCisgICAgcHJlcGFyZTogZnVuY3Rpb24o
cnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJu
IHJ1bm5lci53YWl0Rm9yRWxlbWVudCgiI3N0YWdlIikudGhlbihmdW5jdGlvbiAoZWxlbWVudCkg
eworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sICAKKyAg
ICBydW46IGZ1bmN0aW9uKGNvbnRlbnRXaW5kb3csIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxl
LCBwcm9ncmVzc0JhcikgeworICAgICAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1h
cmsodGhpcywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICB9
LAorICAgIHRpdGxlcyA6IFRpdGxlcywKKyAgICB0ZXN0czogWworICAgICAgICB7IAorICAgICAg
ICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1z
aGFwZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMDAmcGFydGljbGVX
aWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUiLAorICAgICAgICAgICAgbmFt
ZTogImNhbnZhcyBib3VuY2luZyBjaXJjbGVzIiwKKyAgICAgICAgICAgIHdlaWdodDogMSwKKyAg
ICAgICAgICAgIG1heDogNDAwMAorICAgICAgICB9LCB7IAorICAgICAgICAgICAgdXJsOiAiLi4v
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9nYWlu
PTQmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD00MCZwYXJ0aWNs
ZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3RhciIsCisgICAgICAgICAgICBuYW1lOiAiY2Fu
dmFzIGJvdW5jaW5nIGNsaXBwZWQgcmVjdHMiLAorICAgICAgICAgICAgd2VpZ2h0OiAxLAorICAg
ICAgICAgICAgbWF4OiAxMDAwCisgICAgICAgIH0sIHsgCisgICAgICAgICAgICB1cmw6ICIuLi90
ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP2dhaW49
NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xl
SGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRpZW50IiwKKyAgICAgICAgICAgIG5hbWU6
ICJjYW52YXMgYm91bmNpbmcgZ3JhZGllbnQgY2lyY2xlcyIsCisgICAgICAgICAgICB3ZWlnaHQ6
IDEsCisgICAgICAgICAgICBtYXg6IDEwMDAKKyAgICAgICAgfSwgeyAKKyAgICAgICAgICAgIHVy
bDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0
bWw/Z2Fpbj0wLjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0xJnBhcnRpY2xlV2lkdGg9ODAmcGFy
dGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAg
ICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIFNWRyBpbWFnZXMiLAorICAgICAgICAgICAg
d2VpZ2h0OiAxLAorICAgICAgICAgICAgbWF4OiAyMDAKKyAgICAgICAgfSwgeworICAgICAgICAg
ICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFn
ZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwMCZyZW1vdmVMaW1pdD0xMDAwJnBhcnRpY2xlV2lk
dGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBu
ZyIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIFBORyBpbWFnZXMiLAorICAg
ICAgICAgICAgd2VpZ2h0OiAxLAorICAgICAgICAgICAgbWF4OiA1MDAwCisgICAgICAgIH0KKyAg
ICBdCit9KTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICJTVkcgQm91bmNpbmcgUGFydGlj
bGVzIiwKKyAgICBwcmVwYXJlOiBmdW5jdGlvbihydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRl
bnREb2N1bWVudCkgeworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCIjc3Rh
Z2UiKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVu
dDsKKyAgICAgICAgfSk7CisgICAgfSwgIAorICAgIHJ1bjogZnVuY3Rpb24oY29udGVudFdpbmRv
dywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgICAgIHJl
dHVybiBjb250ZW50V2luZG93LnJ1bkJlbmNobWFyayh0aGlzLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIH0sCisgICAgdGl0bGVzIDogVGl0bGVzLAorICAg
IHRlc3RzOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/Z2Fpbj02JmFkZExpbWl0PTEwMCZy
ZW1vdmVMaW1pdD0xMDAwJnBhcnRpY2xlV2lkdGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9
Y2lyY2xlIiwKKyAgICAgICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcgY2lyY2xlcyIsCisgICAg
ICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDYwMDAKKyAgICAgICAgfSwgewor
ICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2
Zy1zaGFwZXMuaHRtbD9nYWluPTAuNiZhZGRMaW1pdD0xMCZyZW1vdmVMaW1pdD0xJnBhcnRpY2xl
V2lkdGg9NDAmcGFydGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAorICAgICAg
ICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBjbGlwcGVkIHJlY3RzIiwKKyAgICAgICAgICAgIHdl
aWdodDogMSwKKyAgICAgICAgICAgIG1heDogMTAwMAorICAgICAgICB9LCB7CisgICAgICAgICAg
ICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5o
dG1sP2dhaW49MC44JmFkZExpbWl0PTEwJnJlbW92ZUxpbWl0PTQmcGFydGljbGVXaWR0aD01MCZw
YXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVudCIsCisgICAgICAgICAg
ICBuYW1lOiAiU1ZHIGJvdW5jaW5nIGdyYWRpZW50IGNpcmNsZXMiLAorICAgICAgICAgICAgd2Vp
Z2h0OiAxLAorICAgICAgICAgICAgbWF4OiAxMDAwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAg
IHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0
bWw/Z2Fpbj0wLjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0yJnBhcnRpY2xlV2lkdGg9ODAmcGFy
dGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAg
ICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIFNWRyBpbWFnZXMiLAorICAgICAgICAgICAgd2Vp
Z2h0OiAxLAorICAgICAgICAgICAgbWF4OiAyMDAKKyAgICAgICAgfSwgeworICAgICAgICAgICAg
dXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRt
bD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFydGljbGVXaWR0aD04MCZwYXJ0
aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcucG5nIiwKKyAgICAg
ICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcgUE5HIGltYWdlcyIsICAgICAgICAgICAgCisgICAg
ICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDQwMDAKKyAgICAgICAgfQorICAg
IF0KK30pOworCitmdW5jdGlvbiBzdWl0ZUZyb21OYW1lKG5hbWUpIHsKKyAgICByZXR1cm4gU3Vp
dGVzLmZpbmQoZnVuY3Rpb24oc3VpdGUpIHsgcmV0dXJuIHN1aXRlLm5hbWUgPT0gbmFtZTsgfSk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RGcm9tTmFtZShzdWl0ZSwgbmFtZSkgeworICAgIHJldHVybiBz
dWl0ZS50ZXN0cy5maW5kKGZ1bmN0aW9uKHRlc3QpIHsgcmV0dXJuIHRlc3QubmFtZSA9PSBuYW1l
OyB9KTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctY2FudmFzLWltYWdlcy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2Vz
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAgaW1nLmhpZGRlbiB7CisgICAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CisgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CisgICAgfQorICA8L3N0eWxl
PgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNv
dXJjZXMvYmVuY2htYXJrLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3Rh
dGlzdGljcy5qcyI+PC9zY3JpcHQ+ICAKKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9t
YWluLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48
L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuanMiPjwvc2Ny
aXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+
CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCisgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorICA8aW1nIGNsYXNzPSJoaWRkZW4iIHNyYz0iLi4vcmVzb3Vy
Y2VzL3lpbi15YW5nLnN2ZyI+CisgIDxpbWcgY2xhc3M9ImhpZGRlbiIgc3JjPSIuLi9yZXNvdXJj
ZXMveWluLXlhbmcucG5nIj4KKyAgPGNhbnZhcyBpZD0ic3RhZ2UiPjwvY2FudmFzPgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3Vu
Y2luZy1jYW52YXMtc2hhcGVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFw
ZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3Mi
IGhyZWY9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4gIAorICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL21hdGguanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2JlbmNo
bWFyay5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVz
LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9z
Y3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48
L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVz
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8Y2FudmFzIGlkPSJzdGFnZSI+PC9j
YW52YXM+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWltYWdlcy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctaW1hZ2VzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWltYWdlcy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgPHN0eWxlPgorICAgIGltZyB7CisgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgfQorICA8L3N0eWxlPgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQv
Y3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvYmVuY2htYXJrLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+ICAKKyAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9i
ZW5jaG1hcmsuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMi
Pjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5q
cyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctaW1hZ2VzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8ZGl2IGlkPSJzdGFnZSI+PC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXNoYXBlcy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctc2hhcGVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXNoYXBlcy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KyAgPHN0eWxlPgorICAgIC5jaXJjbGUgeworICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
ICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsKKyAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSA1
MCU7CisgICAgfQorICAgIC5yZWN0IHsKKyAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAg
IGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7CisgICAgfQorICAgIC5zdGFyIHsKKyAgICAgIC13
ZWJraXQtY2xpcC1wYXRoOiBwb2x5Z29uKDUwJSAwJSwgMzglIDM4JSwgMCUgMzglLCAzMCUgNjAl
LCAxOCUgMTAwJSwgNTAlIDc1JSwgODIlIDEwMCUsIDcwJSA2MCUsIDEwMCUgMzglLCA2MiUgMzgl
KTsKKyAgICAgIC1tcy1jbGlwLXBhdGg6IHBvbHlnb24oNTAlIDAlLCAzOCUgMzglLCAwJSAzOCUs
IDMwJSA2MCUsIDE4JSAxMDAlLCA1MCUgNzUlLCA4MiUgMTAwJSwgNzAlIDYwJSwgMTAwJSAzOCUs
IDYyJSAzOCUpOyAgCisgICAgICBjbGlwLXBhdGg6IHBvbHlnb24oNTAlIDAlLCAzOCUgMzglLCAw
JSAzOCUsIDMwJSA2MCUsIDE4JSAxMDAlLCA1MCUgNzUlLCA4MiUgMTAwJSwgNzAlIDYwJSwgMTAw
JSAzOCUsIDYyJSAzOCUpOworICAgIH0KKyAgPC9zdHlsZT4KKyAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5jc3MiPgor
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PiAg
CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3Vu
Y2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Jv
dW5jaW5nLXNoYXBlcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0i
c3RhZ2UiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5j
aW5nLXN2Zy1pbWFnZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlw
ZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4gIAorICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9z
dGFnZS5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFy
dGljbGVzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1z
dmctaW1hZ2VzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8c3ZnIGlkPSJzdGFn
ZSI+PC9zdmc+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
c3ZnLXNoYXBlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0
ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5jc3MiPgorICA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRp
bGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5q
cyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVz
LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1zdmctc2hh
cGVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8c3ZnIGlkPSJzdGFnZSI+PC9z
dmc+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2Vz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMJKHJldmlz
aW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsODIgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzSW1hZ2Uoc3RhZ2UpIHsK
KyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworICAgIHRoaXMuX2NvbnRl
eHQgPSBzdGFnZS5jb250ZXh0OworICAgIHRoaXMuX2ltYWdlRWxlbWVudCA9IHN0YWdlLmltYWdl
RWxlbWVudDsKK30KKworQm91bmNpbmdDYW52YXNJbWFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3Jl
YXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzSW1hZ2UucHJv
dG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNJbWFnZTsKKworQm91bmNpbmdDYW52
YXNJbWFnZS5wcm90b3R5cGUuX2RyYXcgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgY2VudGVyID0g
dGhpcy5jZW50ZXIoKTsKKworICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgpOworICAgIHRoaXMuX2Nv
bnRleHQudHJhbnNsYXRlKGNlbnRlci54LCBjZW50ZXIueSk7CisgICAgdGhpcy5fY29udGV4dC5y
b3RhdGUodGhpcy5fcm90YXRlci5kZWdyZWUoKSAqIE1hdGguUEkgLyAxODApOworICAgIHRoaXMu
X2NvbnRleHQudHJhbnNsYXRlKC10aGlzLl9zaXplLnggLyAyLCAtdGhpcy5fc2l6ZS55IC8gMik7
CisgICAgCisgICAgdGhpcy5fY29udGV4dC5kcmF3SW1hZ2UodGhpcy5faW1hZ2VFbGVtZW50LCAw
LCAwLCB0aGlzLl9zaXplLngsIHRoaXMuX3NpemUueSk7CisgICAgdGhpcy5fY29udGV4dC5yZXN0
b3JlKCk7Cit9CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5j
dGlvbih0aW1lRGVsdGEpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRl
LmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlzLl9kcmF3KCk7Cit9CisKK2Z1bmN0aW9u
IEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykgeworICAgIEJvdW5j
aW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0aGlz
LmNvbnRleHQgPSB0aGlzLmVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICB2YXIgaW1hZ2VT
cmMgPSBvcHRpb25zWyJpbWFnZVNyYyJdIHx8ICJyZXNvdXJjZXMveWluLXlhbmcuc3ZnIjsKKyAg
ICAKKyAgICB2YXIgaW1hZ2VFbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoImhpZGRlbiIpOworICAgIGNvbnNvbGUuYXNzZXJ0KGltYWdlRWxlbWVudHMubGVuZ3RoKTsK
KyAgICAgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbWFnZUVsZW1lbnRzLmxlbmd0aDsg
KytpKSB7CisgICAgICAgIGlmIChpbWFnZUVsZW1lbnRzW2ldLmdldEF0dHJpYnV0ZSgic3JjIikg
PT0gaW1hZ2VTcmMpIHsKKyAgICAgICAgICAgIHRoaXMuaW1hZ2VFbGVtZW50ID0gaW1hZ2VFbGVt
ZW50c1tpXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKKyAgICB9CisKKyAgICB0aGlzLmltYWdlRWxlbWVudCA9IHRoaXMu
aW1hZ2VFbGVtZW50IHx8IGltYWdlRWxlbWVudHNbMF07Cit9CisKK0JvdW5jaW5nQ2FudmFzSW1h
Z2VzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc1N0YWdl
LnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2U7CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2Vz
U3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJu
IG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdlKHRoaXMpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0Nh
bnZhc0ltYWdlc0FuaW1hdG9yKGJlbmNobWFyaykgeworICAgIEJvdW5jaW5nUGFydGljbGVzQW5p
bWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1hcmspOworICAgIHRoaXMuX2NvbnRleHQgPSBiZW5jaG1h
cmsuX3N0YWdlLmNvbnRleHQ7Cit9CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0b3IucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlw
ZSk7CitCb3VuY2luZ0NhbnZhc0ltYWdlc0FuaW1hdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IEJvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0b3I7CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQW5p
bWF0b3IucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLl9jb250ZXh0
LmNsZWFyUmVjdCgwLCAwLCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUoKS54LCB0aGlzLl9i
ZW5jaG1hcmsuX3N0YWdlLnNpemUoKS55KTsKKyAgICByZXR1cm4gQm91bmNpbmdQYXJ0aWNsZXNB
bmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMpOworfQorCitmdW5jdGlvbiBCb3Vu
Y2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFi
bGUsIHByb2dyZXNzQmFyKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0
aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30K
KworQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNJ
bWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNJbWFn
ZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5j
cmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5n
Q2FudmFzSW1hZ2VzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK0JvdW5jaW5n
Q2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvciA9IGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNJbWFnZXNBbmltYXRvcih0aGlzKTsK
K30KKword2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgd2luZG93LmJlbmNo
bWFyayA9IG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5n
LWNhbnZhcy1zaGFwZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNo
YXBlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDIgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFz
U2hhcGUoc3RhZ2UpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOwor
ICAgIHRoaXMuX3NoYXBlID0gc3RhZ2Uuc2hhcGU7CisgICAgdGhpcy5fZmlsbCA9IHN0YWdlLmZp
bGw7CisgICAgdGhpcy5fY2xpcCA9IHN0YWdlLmNsaXA7CisgICAgdGhpcy5fY29udGV4dCA9IHN0
YWdlLmNvbnRleHQ7CisgICAgdGhpcy5fY29sb3IwID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsKKyAg
ICB0aGlzLl9jb2xvcjEgPSBzdGFnZS5yYW5kb21Db2xvcigpOyAgICAKK30KKworQm91bmNpbmdD
YW52YXNTaGFwZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJv
dG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91
bmNpbmdDYW52YXNTaGFwZTsKKworQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUuX2RyYXcg
PSBmdW5jdGlvbigpIHsKKyAgICAKKyAgICB0aGlzLl9jb250ZXh0LnNhdmUoKTsKKyAgICB0aGlz
Ll9jb250ZXh0LnRyYW5zbGF0ZSh0aGlzLl9wb3NpdGlvbi54LCB0aGlzLl9wb3NpdGlvbi55KTsK
KworICAgIC8vIFNldHRpbmcgdGhlIGZpbGwgc3R5bGUKKyAgICBzd2l0Y2ggKHRoaXMuX2ZpbGwp
IHsKKyAgICBjYXNlICJzb2xpZCI6CisgICAgZGVmYXVsdDoKKyAgICAgICAgdGhpcy5fY29udGV4
dC5maWxsU3R5bGUgPSB0aGlzLl9jb2xvcjA7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSAi
Z3JhZGllbnQiOgorICAgICAgICB2YXIgZ3JhZGllbnQgPSB0aGlzLl9jb250ZXh0LmNyZWF0ZUxp
bmVhckdyYWRpZW50KDAsIDAsIHRoaXMuX3NpemUud2lkdGgoKSwgMCk7CisgICAgICAgIGdyYWRp
ZW50LmFkZENvbG9yU3RvcCgwLCB0aGlzLl9jb2xvcjApOworICAgICAgICBncmFkaWVudC5hZGRD
b2xvclN0b3AoMSwgdGhpcy5fY29sb3IxKTsgCisgICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbFN0
eWxlID0gZ3JhZGllbnQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8vIFJvdGF0aW9u
IGFyb3VuZCB0aGUgY2VudGVyCisgICAgaWYgKHRoaXMuX3NoYXBlICE9ICJjaXJjbGUiKSB7Cisg
ICAgICAgIHRoaXMuX2NvbnRleHQudHJhbnNsYXRlKHRoaXMuX3NpemUueCAvIDIsIHRoaXMuX3Np
emUueSAvIDIpOworICAgICAgICB0aGlzLl9jb250ZXh0LnJvdGF0ZSh0aGlzLl9yb3RhdGVyLmRl
Z3JlZSgpICogTWF0aC5QSSAvIDE4MCk7CisgICAgICAgIHRoaXMuX2NvbnRleHQudHJhbnNsYXRl
KC10aGlzLl9zaXplLnggLyAyLCAtdGhpcy5fc2l6ZS55IC8gMik7CisgICAgfQorCisgICAgdmFy
IGNsaXBQb2ludHMgPSBudWxsOworICAgIAorICAgIHN3aXRjaCAodGhpcy5fY2xpcCkgeworICAg
IGNhc2UgInN0YXIiOgorICAgICAgICBjbGlwUG9pbnRzID0gIFsKKyAgICAgICAgICAgIG5ldyBQ
b2ludCgwLjUwLCAwLjAwKSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgwLjM4LCAwLjM4KSwKKyAg
ICAgICAgICAgIG5ldyBQb2ludCgwLjAwLCAwLjM4KSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgw
LjMwLCAwLjYwKSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgwLjE4LCAxLjAwKSwKKyAgICAgICAg
ICAgIG5ldyBQb2ludCgwLjUwLCAwLjc1KSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgwLjgyLCAx
LjAwKSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgwLjcwLCAwLjYwKSwKKyAgICAgICAgICAgIG5l
dyBQb2ludCgxLjAwLCAwLjM4KSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgwLjYyLCAwLjM4KQor
ICAgICAgICBdOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgaWYgKGNsaXBQb2lu
dHMpIHsKKyAgICAgICAgdGhpcy5fY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICAgICAgdmFyIHNl
bGYgPSB0aGlzOworICAgICAgICBjbGlwUG9pbnRzLmZvckVhY2goZnVuY3Rpb24ocG9pbnQsIGlu
ZGV4KSB7CisgICAgICAgICAgICB2YXIgcG9pbnQgPSBzZWxmLl9zaXplLm11bHRpcGx5KHBvaW50
KTsKKyAgICAgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAgICAgICAgc2VsZi5fY29udGV4
dC5tb3ZlVG8ocG9pbnQueCwgcG9pbnQueSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgc2VsZi5fY29udGV4dC5saW5lVG8ocG9pbnQueCwgcG9pbnQueSk7CisgICAgICAgIH0p
OworICAgICAgICB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpOworICAgICAgICB0aGlzLl9jb250
ZXh0LmNsaXAoKTsKKyAgICB9CisKKyAgICAvLyBTaGFwZSBkcmF3aW5nCisgICAgdGhpcy5fY29u
dGV4dC5iZWdpblBhdGgoKTsKKyAgICAKKyAgICBzd2l0Y2ggKHRoaXMuX3NoYXBlKSB7CisgICAg
Y2FzZSAiY2lyY2xlIjoKKyAgICBkZWZhdWx0OgorICAgICAgICB2YXIgY2VudGVyID0gdGhpcy5f
c2l6ZS5jZW50ZXIoKTsKKyAgICAgICAgdmFyIHJhZGl1cyA9IE1hdGgubWluKHRoaXMuX3NpemUu
eCwgdGhpcy5fc2l6ZS55KSAvIDI7CisgICAgICAgIHRoaXMuX2NvbnRleHQuYXJjKGNlbnRlci54
LCBjZW50ZXIueSwgcmFkaXVzLCAwLCBNYXRoLlBJICogMiwgdHJ1ZSk7CisgICAgICAgIGJyZWFr
OworICAgICAgICAKKyAgICBjYXNlICJyZWN0IjoKKyAgICAgICAgdGhpcy5fY29udGV4dC5yZWN0
KDAsIDAsIHRoaXMuX3NpemUud2lkdGgoKSwgdGhpcy5fc2l6ZS5oZWlnaHQoKSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICAKKyAgICB0aGlzLl9jb250ZXh0LmZpbGwoKTsKKyAgICB0aGlz
Ll9jb250ZXh0LnJlc3RvcmUoKTsKK30KKworQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUu
YW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkgeworICAgIEJvdW5jaW5nUGFydGljbGUucHJv
dG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEpOworICAgIHRoaXMuX2RyYXcoKTsK
K30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZShlbGVtZW50LCBvcHRpb25z
KSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlv
bnMpOworICAgIHRoaXMucGFyc2VTaGFwZVBhcmFtdGVycyhvcHRpb25zKTsKKyAgICB0aGlzLmNv
bnRleHQgPSB0aGlzLmVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKQorfQorCitCb3VuY2luZ0NhbnZh
c1NoYXBlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNT
dGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlOworCitCb3VuY2luZ0NhbnZhc1No
YXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkgeworICAgIHJl
dHVybiBuZXcgQm91bmNpbmdDYW52YXNTaGFwZSh0aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNp
bmdDYW52YXNTaGFwZXNBbmltYXRvcihiZW5jaG1hcmspIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xl
c0FuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gYmVu
Y2htYXJrLl9zdGFnZS5jb250ZXh0OworfQorCitCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9y
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90
b3R5cGUpOworQm91bmNpbmdDYW52YXNTaGFwZXNBbmltYXRvci5wcm90b3R5cGUuY29uc3RydWN0
b3IgPSBCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yOworCitCb3VuY2luZ0NhbnZhc1NoYXBl
c0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5fY29u
dGV4dC5jbGVhclJlY3QoMCwgMCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplKCkueCwgdGhp
cy5fYmVuY2htYXJrLl9zdGFnZS5zaXplKCkueSk7CisgICAgcmV0dXJuIEJvdW5jaW5nUGFydGlj
bGVzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKTsKK30KKworZnVuY3Rpb24g
Qm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29y
ZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNh
bGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7
Cit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2Fu
dmFzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFz
U2hhcGVzQmVuY2htYXJrOworCitCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5
cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgcmV0dXJuIG5ldyBCb3Vu
Y2luZ0NhbnZhc1NoYXBlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCitCb3Vu
Y2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5j
dGlvbigpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzQW5pbWF0b3IodGhp
cyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUs
IHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIHdpbmRvdy5i
ZW5jaG1hcmsgPSBuZXcgQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3Vu
Y2luZy1pbWFnZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctaW1hZ2VzLmpzCShy
ZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctaW1hZ2VzLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTUgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nSW1hZ2Uoc3RhZ2UpIHsKKyAgICBCb3Vu
Y2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworCisgICAgdGhpcy5lbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgdGhpcy5lbGVtZW50LnN0eWxlLndpZHRo
ID0gdGhpcy5fc2l6ZS54ICsgInB4IjsKKyAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0g
dGhpcy5fc2l6ZS55ICsgInB4IjsKKyAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJzcmMi
LCBzdGFnZS5pbWFnZVNyYyk7CisgICAgCisgICAgc3RhZ2UuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLmVsZW1lbnQpOworICAgIHRoaXMuX21vdmUoKTsKK30KKworQm91bmNpbmdJbWFnZS5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlKTsKK0JvdW5j
aW5nSW1hZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdJbWFnZTsKKworQm91bmNp
bmdJbWFnZS5wcm90b3R5cGUuX21vdmUgPSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLmVsZW1lbnQu
c3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZSgiICsgdGhpcy5fcG9zaXRpb24ueCArICJweCwi
ICsgdGhpcy5fcG9zaXRpb24ueSArICJweCkgIiArIHRoaXMuX3JvdGF0ZXIucm90YXRlWigpOwor
fQorICAgIAorQm91bmNpbmdJbWFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVE
ZWx0YSkgeworICAgIEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlz
LCB0aW1lRGVsdGEpOworICAgIHRoaXMuX21vdmUoKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdJ
bWFnZXNTdGFnZShlbGVtZW50LCBvcHRpb25zKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFn
ZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgIHRoaXMuaW1hZ2VTcmMgPSBvcHRp
b25zWyJpbWFnZVNyYyJdIHx8ICIuLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIjsKK30KKworQm91
bmNpbmdJbWFnZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGlj
bGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0gQm91bmNpbmdJbWFnZXNTdGFnZTsKKworQm91bmNpbmdJbWFnZXNTdGFnZS5wcm90
b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5j
aW5nSW1hZ2UodGhpcyk7Cit9CisKK0JvdW5jaW5nSW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBhcnRp
Y2xlV2lsbEJlUmVtb3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xlKSB7CisgICAgaWYgKHBhcnRpY2xl
LmVsZW1lbnQgJiYgcGFydGljbGUuZWxlbWVudC5wYXJlbnROb2RlICYmIHBhcnRpY2xlLmVsZW1l
bnQucGFyZW50Tm9kZSA9PSB0aGlzLmVsZW1lbnQpCisgICAgICAgIHRoaXMuZWxlbWVudC5yZW1v
dmVDaGlsZChwYXJ0aWNsZS5lbGVtZW50KTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdJbWFnZXNC
ZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcikg
eworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nSW1hZ2Vz
QmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5j
aG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IEJvdW5jaW5nSW1hZ2VzQmVuY2htYXJrOworCitCb3VuY2luZ0ltYWdlc0JlbmNo
bWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgcmV0
dXJuIG5ldyBCb3VuY2luZ0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQor
Cit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBv
cHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICB3aW5kb3cuYmVuY2htYXJr
ID0gbmV3IEJvdW5jaW5nSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcwkocmV2aXNpb24g
MCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE4MCBAQAorZnVuY3Rpb24gQm91bmNpbmdQYXJ0aWNsZVJvdGF0ZXIocm90YXRlSW50ZXJ2
YWwpIHsKKyAgICB0aGlzLl90aW1lRGVsdGEgPSAwOworICAgIHRoaXMuX3JvdGF0ZUludGVydmFs
ID0gcm90YXRlSW50ZXJ2YWw7Cit9CisKK0JvdW5jaW5nUGFydGljbGVSb3RhdGVyLnByb3RvdHlw
ZSA9IHsKKyAgICBuZXh0IDogZnVuY3Rpb24odGltZURlbHRhKSB7CisgICAgICAgIHRoaXMuX3Rp
bWVEZWx0YSA9ICh0aGlzLl90aW1lRGVsdGEgKyB0aW1lRGVsdGEpICUgdGhpcy5fcm90YXRlSW50
ZXJ2YWw7CisgICAgfSwKKyAgICBkZWdyZWUgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJu
ICgzNjAgKiB0aGlzLl90aW1lRGVsdGEpIC8gdGhpcy5fcm90YXRlSW50ZXJ2YWw7CisgICAgfSwK
KyAgICByb3RhdGVaIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiAicm90YXRlWigiICsg
TWF0aC5mbG9vcih0aGlzLmRlZ3JlZSgpKSArICJkZWcpIjsKKyAgICB9LAorICAgIHJvdGF0ZSA6
IGZ1bmN0aW9uKCkgeyAgICAKKyAgICAgICAgcmV0dXJuICJyb3RhdGUoIiArIE1hdGguZmxvb3Io
dGhpcy5kZWdyZWUoKSkgKyAiKSAiOworICAgIH0KK30KKworZnVuY3Rpb24gQm91bmNpbmdQYXJ0
aWNsZShzdGFnZSkgeworICAgIHRoaXMuX3N0YWdlU2l6ZSA9IHN0YWdlLnNpemUoKTsKKyAgICB0
aGlzLl9zaXplID0gc3RhZ2UucGFydGljbGVTaXplOworICAgIAorICAgIHRoaXMuX3Bvc2l0aW9u
ID0gc3RhZ2UucmFuZG9tUG9zaXRpb24oKTsKKyAgICB0aGlzLl9hbmdsZSA9IHN0YWdlLnJhbmRv
bUFuZ2xlKCk7CisgICAgdGhpcy5fdmVsb2NpdHkgPSBzdGFnZS5yYW5kb21WZWxvY2l0eSgpOwor
ICAgIHRoaXMuX3JvdGF0ZXIgPSBzdGFnZS5yYW5kb21Sb3RhdGVyKCk7Cit9CisKK0JvdW5jaW5n
UGFydGljbGUucHJvdG90eXBlID0geworICAgIGNlbnRlciA6IGZ1bmN0aW9uKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy5fcG9zaXRpb24uYWRkKHRoaXMuX3NpemUuY2VudGVyKCkpOworICAgIH0s
CisgICAgYW5pbWF0ZSA6IGZ1bmN0aW9uKHRpbWVEZWx0YSkgeworICAgICAgICB0aGlzLl9wb3Np
dGlvbiA9IHRoaXMuX3Bvc2l0aW9uLm1vdmUodGhpcy5fYW5nbGUsIHRoaXMuX3ZlbG9jaXR5LCB0
aW1lRGVsdGEpOworICAgICAgICB0aGlzLl9yb3RhdGVyLm5leHQodGltZURlbHRhKTsKKworICAg
ICAgICAvLyBJZiBwYXJ0aWNsZSBpcyBnb2luZyB0byBtb3ZlIG9mZiByaWdodCBzaWRlCisgICAg
ICAgIGlmICh0aGlzLl9wb3NpdGlvbi54ICsgdGhpcy5fc2l6ZS54ID4gdGhpcy5fc3RhZ2VTaXpl
LngpIHsKKyAgICAgICAgICAgIC8vIElmIGRpcmVjdGlvbiBpcyBFYXN0LVNvdXRoCisgICAgICAg
ICAgICBpZiAodGhpcy5fYW5nbGUgPj0gMCAmJiB0aGlzLl9hbmdsZSA8IE1hdGguUEkgLyAyKQor
ICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0gTWF0aC5QSSAtIHRoaXMuX2FuZ2xlOworICAg
ICAgICAgICAgLy8gSWYgYW5nbGUgaXMgRWFzdC1Ob3J0aAorICAgICAgICAgICAgZWxzZSBpZiAo
dGhpcy5fYW5nbGUgPiBNYXRoLlBJIC8gMiAqIDMpCisgICAgICAgICAgICAgICAgdGhpcy5fYW5n
bGUgPSB0aGlzLl9hbmdsZSAtICh0aGlzLl9hbmdsZSAtIE1hdGguUEkgLyAyICogMykgKiAyOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBJZiBwYXJ0aWNsZSBpcyBnb2luZyB0byBt
b3ZlIG9mZiBsZWZ0IHNpZGUKKyAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uLnggPCAwKSB7Cisg
ICAgICAgICAgICAvLyBJZiBhbmdsZSBpcyBXZXN0LVNvdXRoCisgICAgICAgICAgICBpZiAodGhp
cy5fYW5nbGUgPiBNYXRoLlBJIC8gMiAmJiB0aGlzLl9hbmdsZSA8IE1hdGguUEkpCisgICAgICAg
ICAgICAgICAgdGhpcy5fYW5nbGUgPSBNYXRoLlBJIC0gdGhpcy5fYW5nbGU7CisgICAgICAgICAg
ICAvLyBJZiBhbmdsZSBpcyBXZXN0LU5vcnRoCisgICAgICAgICAgICBlbHNlIGlmICh0aGlzLl9h
bmdsZSA+IE1hdGguUEkgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJIC8gMiAqIDMpCisgICAgICAg
ICAgICAgICAgdGhpcy5fYW5nbGUgPSB0aGlzLl9hbmdsZSArIChNYXRoLlBJIC8gMiAqIDMgLSB0
aGlzLl9hbmdsZSkgKiAyOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMg
Z29pbmcgdG8gbW92ZSBvZmYgYm90dG9tIHNpZGUKKyAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9u
LnkgKyB0aGlzLl9zaXplLnkgPiB0aGlzLl9zdGFnZVNpemUueSkgeworICAgICAgICAgICAgLy8g
SWYgZGlyZWN0aW9uIGlzIFNvdXRoCisgICAgICAgICAgICBpZiAodGhpcy5fYW5nbGUgPiAwICYm
IHRoaXMuX2FuZ2xlIDwgTWF0aC5QSSkKKyAgICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IE1h
dGguUEkgKiAyIC0gdGhpcy5fYW5nbGU7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiBwYXJ0
aWNsZSBpcyBnb2luZyB0byBtb3ZlIG9mZiB0b3Agc2lkZQorICAgICAgICBpZiAodGhpcy5fcG9z
aXRpb24ueSA8IDApIHsKKyAgICAgICAgICAgIC8vIElmIGRpcmVjdGlvbiBpcyBOb3J0aAorICAg
ICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID4gTWF0aC5QSSAmJiB0aGlzLl9hbmdsZSA8IE1hdGgu
UEkgKiAyKQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0gdGhpcy5fYW5nbGUgLSAodGhp
cy5fYW5nbGUgLSBNYXRoLlBJKSAqIDI7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9u
IEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IoYmVuY2htYXJrKSB7CisgICAgQW5pbWF0b3IuY2Fs
bCh0aGlzLCBiZW5jaG1hcmspOworfTsKKworQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKEFuaW1hdG9yLnByb3RvdHlwZSk7CitCb3VuY2luZ1BhcnRp
Y2xlc0FuaW1hdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nUGFydGljbGVzQW5p
bWF0b3I7CisKK0JvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUgPSBm
dW5jdGlvbigpIHsKKyAgICBpZiAoIUFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhp
cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLmFu
aW1hdGUodGhpcy50aW1lRGVsdGEoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9u
IEJvdW5jaW5nUGFydGljbGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykgeworICAgIFN0YWdlLmNh
bGwodGhpcywgZWxlbWVudCk7CisgICAgCisgICAgdGhpcy5wYXJ0aWNsZVNpemUgPSBuZXcgUG9p
bnQocGFyc2VJbnQob3B0aW9uc1sicGFydGljbGVXaWR0aCJdKSB8fCAxMCwgcGFyc2VJbnQob3B0
aW9uc1sicGFydGljbGVIZWlnaHQiXSkgfHwgMTApOworICAgIHRoaXMuc3ZnTmFtZXNwYWNlID0g
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjsKKyAgICB0aGlzLnhsaW5rTmFtZXNwYWNlID0g
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiOworICAgIAorICAgIHRoaXMuX3BhcnRpY2xl
cyA9IFtdOworCisgICAgdGhpcy5fbWF4VmVsb2NpdHkgPSBwYXJzZUludChvcHRpb25zWyJtYXhW
ZWxvY2l0eSJdKSB8fCA1MDA7CisgICAgdGhpcy5fbWF4VmVsb2NpdHkgPSBNYXRoLm1heCh0aGlz
Ll9tYXhWZWxvY2l0eSwgMTAwKTsKK30KKworQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5
cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlLnByb3RvdHlwZSk7CitCb3VuY2luZ1BhcnRpY2xlc1N0
YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nUGFydGljbGVzU3RhZ2U7CisKK0Jv
dW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnBhcnNlU2hhcGVQYXJhbXRlcnMgPSBmdW5j
dGlvbihvcHRpb25zKSB7CisgICAgdGhpcy5zaGFwZSA9IG9wdGlvbnNbInNoYXBlIl0gfHwgImNp
cmNsZSI7CisgICAgdGhpcy5maWxsID0gb3B0aW9uc1siZmlsbCJdIHx8ICJzb2xpZCI7CisgICAg
dGhpcy5jbGlwID0gb3B0aW9uc1siY2xpcCJdIHx8ICIiOworfQorCitCb3VuY2luZ1BhcnRpY2xl
c1N0YWdlLnByb3RvdHlwZS5yYW5kb21Sb3RhdGVyID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJu
IG5ldyBCb3VuY2luZ1BhcnRpY2xlUm90YXRlcih0aGlzLnJhbmRvbSgxMDAwLCAxMDAwMCkpOwor
fQorICAgIAorQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0
aW9uKHRpbWVEZWx0YSkgeworICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLl9wYXJ0aWNsZXMu
bGVuZ3RoOyArK2kpCisgICAgICAgIHRoaXMuX3BhcnRpY2xlc1tpXS5hbmltYXRlKHRpbWVEZWx0
YSk7Cit9CisgICAgCitCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS50dW5lID0gZnVu
Y3Rpb24oY291bnQpIHsKKyAgICBjb3VudCA9IGNvdW50ID4gMCA/IE1hdGguZmxvb3IoY291bnQp
IDogTWF0aC5jZWlsKGNvdW50KTsKKworICAgIGlmIChjb3VudCA9PSAwKQorICAgICAgICByZXR1
cm4gdGhpcy5fcGFydGljbGVzLmxlbmd0aDsKKworICAgIGlmIChjb3VudCA+IDApIHsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQodHlwZW9mKHRoaXMuY3JlYXRlUGFydGljbGUpID09ICJmdW5jdGlv
biIpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAg
ICB0aGlzLl9wYXJ0aWNsZXMucHVzaCh0aGlzLmNyZWF0ZVBhcnRpY2xlKCkpOworICAgICAgICBy
ZXR1cm4gdGhpcy5fcGFydGljbGVzLmxlbmd0aDsKKyAgICB9CisKKyAgICBjb3VudCA9IE1hdGgu
bWluKC1jb3VudCwgdGhpcy5fcGFydGljbGVzLmxlbmd0aCk7CisgICAgICAgIAorICAgIGlmICh0
eXBlb2YodGhpcy5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpID09ICJmdW5jdGlvbiIpIHsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgdGhpcy5wYXJ0
aWNsZVdpbGxCZVJlbW92ZWQodGhpcy5fcGFydGljbGVzW3RoaXMuX3BhcnRpY2xlcy5sZW5ndGgg
LSAxIC0gaV0pOworICAgIH0KKworICAgIHRoaXMuX3BhcnRpY2xlcy5zcGxpY2UoLWNvdW50LCBj
b3VudCk7CisgICAgcmV0dXJuIHRoaXMuX3BhcnRpY2xlcy5sZW5ndGg7Cit9CisKK2Z1bmN0aW9u
IEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRU
YWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBvcHRpb25zKTsK
KworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YWdlIik7Cisg
ICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0
aCk7CisgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIGRvY3VtZW50LmJvZHkub2Zm
c2V0SGVpZ2h0KTsKKworICAgIHRoaXMuX3N0YWdlID0gdGhpcy5jcmVhdGVTdGFnZShlbGVtZW50
KTsKKyAgICB0aGlzLl9hbmltYXRvciA9IHRoaXMuY3JlYXRlQW5pbWF0b3IoKTsKKyAgICB0aGlz
Ll9zdWl0ZSA9IHN1aXRlOworICAgIHRoaXMuX3Rlc3QgPSB0ZXN0OworICAgIHRoaXMuX3JlY29y
ZFRhYmxlID0gcmVjb3JkVGFibGU7CisgICAgdGhpcy5fcHJvZ3Jlc3NCYXIgPSBwcm9ncmVzc0Jh
cjsKK30KKworQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZShCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrOworCitCb3Vu
Y2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlv
bigpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IodGhpcyk7Cit9
CisKK0JvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24o
Y291bnQpIHsKKyAgICByZXR1cm4gdGhpcy5fc3RhZ2UudHVuZShjb3VudCk7Cit9CisKK0JvdW5j
aW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgeworICAg
IHJldHVybiB0aGlzLl9zdGFnZS5jbGVhcigpOworfQorCitCb3VuY2luZ1BhcnRpY2xlc0JlbmNo
bWFyay5wcm90b3R5cGUuc2hvd1Jlc3VsdHMgPSBmdW5jdGlvbihtZXNzYWdlLCBwcm9ncmVzcykg
eworICAgIGlmICghdGhpcy5fcmVjb3JkVGFibGUgfHwgIXRoaXMuX3Byb2dyZXNzQmFyIHx8ICF0
aGlzLl9zdWl0ZSB8fCAhdGhpcy5fdGVzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgdGhpcy5f
cmVjb3JkVGFibGUuc2hvd1JlY29yZCh0aGlzLl9zdWl0ZSwgdGhpcy5fdGVzdCwgdGhpcy5fc2Ft
cGxlciwgbWVzc2FnZSk7CisgICAgdGhpcy5fcHJvZ3Jlc3NCYXIuc2V0UG9zKHByb2dyZXNzKTsK
K30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXNoYXBlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9i
b3VuY2luZy1zaGFwZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zaGFwZXMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorZnVuY3Rpb24gQm91bmNpbmdTaGFw
ZShzdGFnZSkgeworICAgIEJvdW5jaW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CisKKyAg
ICB0aGlzLmVsZW1lbnQgPSB0aGlzLl9jcmVhdGVTcGFuKHN0YWdlKTsKKyAgICAgICAgCisgICAg
c3dpdGNoIChzdGFnZS5maWxsKSB7CisgICAgY2FzZSAic29saWQiOgorICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBzdGFnZS5yYW5kb21D
b2xvcigpOworICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSAiZ3JhZGllbnQiOgor
ICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZCA9ICJsaW5lYXItZ3JhZGllbnQo
IiArIHN0YWdlLnJhbmRvbUNvbG9yKCkgKyAiLCAiICsgc3RhZ2UucmFuZG9tQ29sb3IoKSArICIp
IjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgdGhpcy5fbW92ZSgpOworfQorCitCb3Vu
Y2luZ1NoYXBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5wcm90
b3R5cGUpOworQm91bmNpbmdTaGFwZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1No
YXBlOworCitCb3VuY2luZ1NoYXBlLnByb3RvdHlwZS5fY3JlYXRlU3BhbiA9IGZ1bmN0aW9uKHN0
YWdlKSB7CisgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Cisg
ICAgc3Bhbi5jbGFzc05hbWUgPSBzdGFnZS5zaGFwZSArICIgIiArIHN0YWdlLmNsaXA7CisgICAg
c3Bhbi5zdHlsZS53aWR0aCA9IHRoaXMuX3NpemUueCArICJweCI7CisgICAgc3Bhbi5zdHlsZS5o
ZWlnaHQgPSB0aGlzLl9zaXplLnkgKyAicHgiOworICAgIHN0YWdlLmVsZW1lbnQuYXBwZW5kQ2hp
bGQoc3Bhbik7CisgICAgcmV0dXJuIHNwYW47Cit9CisKK0JvdW5jaW5nU2hhcGUucHJvdG90eXBl
Ll9tb3ZlID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9
ICJ0cmFuc2xhdGUoIiArIHRoaXMuX3Bvc2l0aW9uLnggKyAicHgsIiArIHRoaXMuX3Bvc2l0aW9u
LnkgKyAicHgpIiArIHRoaXMuX3JvdGF0ZXIucm90YXRlWigpOworfQorICAgIAorQm91bmNpbmdT
aGFwZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkgeworICAgIEJvdW5j
aW5nUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEpOworICAg
IHRoaXMuX3JvdGF0ZXIubmV4dCh0aW1lRGVsdGEpOyAgICAKKyAgICB0aGlzLl9tb3ZlKCk7Cit9
CisKK2Z1bmN0aW9uIEJvdW5jaW5nU2hhcGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykgeworICAg
IEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAg
ICB0aGlzLnBhcnNlU2hhcGVQYXJhbXRlcnMob3B0aW9ucyk7Cit9CisKK0JvdW5jaW5nU2hhcGVz
U3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnBy
b3RvdHlwZSk7CitCb3VuY2luZ1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJv
dW5jaW5nU2hhcGVzU3RhZ2U7CisKK0JvdW5jaW5nU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0
ZVBhcnRpY2xlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1NoYXBlKHRo
aXMpOworfQorCitCb3VuY2luZ1NoYXBlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJl
bW92ZWQgPSBmdW5jdGlvbihwYXJ0aWNsZSkgeworICAgIGlmIChwYXJ0aWNsZS5lbGVtZW50ICYm
IHBhcnRpY2xlLmVsZW1lbnQucGFyZW50Tm9kZSAmJiBwYXJ0aWNsZS5lbGVtZW50LnBhcmVudE5v
ZGUgPT0gdGhpcy5lbGVtZW50KQorICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQocGFy
dGljbGUuZWxlbWVudCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nU2hhcGVzQmVuY2htYXJrKHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICBCb3Vu
Y2luZ1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBy
ZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3VuY2luZ1NoYXBlc0JlbmNobWFyay5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3Rv
dHlwZSk7CitCb3VuY2luZ1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBC
b3VuY2luZ1NoYXBlc0JlbmNobWFyazsKKworQm91bmNpbmdTaGFwZXNCZW5jaG1hcmsucHJvdG90
eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkgeworICAgIHJldHVybiBuZXcgQm91
bmNpbmdTaGFwZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKword2luZG93LmJl
bmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgd2luZG93LmJlbmNobWFyayA9IG5ldyBCb3Vu
Y2luZ1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHBy
b2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qcwkocmV2aXNpb24gMCkKKysrIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3Vy
Y2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MSBA
QAorZnVuY3Rpb24gQm91bmNpbmdTdmdJbWFnZShzdGFnZSkgeworICAgIEJvdW5jaW5nUGFydGlj
bGUuY2FsbCh0aGlzLCBzdGFnZSk7CisKKyAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoc3RhZ2Uuc3ZnTmFtZXNwYWNlLCAiaW1hZ2UiKTsKKyAgICB0aGlzLmVsZW1l
bnQuc2V0QXR0cmlidXRlKCJ4IiwgMCk7CisgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgi
eSIsIDApOyAgICAKKyAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsIHRoaXMu
X3NpemUueCk7CisgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgdGhpcy5f
c2l6ZS55KTsKKyAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlTlMoc3RhZ2UueGxpbmtOYW1l
c3BhY2UsICJocmVmIiwgc3RhZ2UuaW1hZ2VTcmMpOworCisgICAgc3RhZ2UuZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLmVsZW1lbnQpOworICAgIHRoaXMuX21vdmUoKTsgICAgCit9CisKK0JvdW5j
aW5nU3ZnSW1hZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlLnBy
b3RvdHlwZSk7CitCb3VuY2luZ1N2Z0ltYWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5j
aW5nU3ZnSW1hZ2U7CisKK0JvdW5jaW5nU3ZnSW1hZ2UucHJvdG90eXBlLl9tb3ZlID0gZnVuY3Rp
b24oKSB7CisgICAgdmFyIGNlbnRlciA9IHRoaXMuY2VudGVyKCk7CisgICAgdGhpcy5lbGVtZW50
LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwgCisgICAgICAgICJ0cmFuc2xhdGUoIiArIGNlbnRl
ci54ICsgIiwgIiArIGNlbnRlci55ICsgIikgIgorICAgICAgICArIHRoaXMuX3JvdGF0ZXIucm90
YXRlKCkKKyAgICAgICAgKyAidHJhbnNsYXRlKCIgKyAtdGhpcy5fc2l6ZS54IC8gMiArICIsICIg
KyAtdGhpcy5fc2l6ZS55IC8gMiArICIpICIpOworfQorCitCb3VuY2luZ1N2Z0ltYWdlLnByb3Rv
dHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKSB7CisgICAgQm91bmNpbmdQYXJ0aWNs
ZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7CisgICAgdGhpcy5fbW92
ZSgpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlKGVsZW1lbnQsIG9wdGlv
bnMpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0
aW9ucyk7CisgICAgdGhpcy5pbWFnZVNyYyA9IG9wdGlvbnNbImltYWdlU3JjIl0gfHwgInJlc291
cmNlcy95aW4teWFuZy5zdmciOworfQorCitCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlLnByb3RvdHlw
ZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOworQm91
bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1N2Z0lt
YWdlc1N0YWdlOworCitCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0
aWNsZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdTdmdJbWFnZSh0aGlz
KTsKK30KKworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVS
ZW1vdmVkID0gZnVuY3Rpb24ocGFydGljbGUpIHsKKyAgICBpZiAocGFydGljbGUuZWxlbWVudCAm
JiBwYXJ0aWNsZS5lbGVtZW50LnBhcmVudE5vZGUgJiYgcGFydGljbGUuZWxlbWVudC5wYXJlbnRO
b2RlID09IHRoaXMuZWxlbWVudCkKKyAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKHBh
cnRpY2xlLmVsZW1lbnQpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFy
ayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAg
Qm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdTdmdJbWFnZXNCZW5j
aG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFy
ay5wcm90b3R5cGUpOworQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0gQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nU3ZnSW1hZ2Vz
QmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAg
ICByZXR1cm4gbmV3IEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9u
cyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUs
IHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIHdpbmRvdy5i
ZW5jaG1hcmsgPSBuZXcgQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2lu
Zy1zdmctc2hhcGVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMu
anMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTYxIEBACitmdW5jdGlvbiBCb3VuY2luZ1N2Z1NoYXBlKHN0YWdl
KSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9z
aGFwZSA9IHN0YWdlLnNoYXBlOworICAgIAorICAgIHN3aXRjaCAodGhpcy5fc2hhcGUpIHsKKyAg
ICBjYXNlICJjaXJjbGUiOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHRoaXMuZWxlbWVudCA9IHRo
aXMuX2NyZWF0ZUNpcmNsZShzdGFnZSk7CisgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBj
YXNlICJyZWN0IjoKKyAgICAgICAgdGhpcy5lbGVtZW50ID0gdGhpcy5fY3JlYXRlUmVjdChzdGFn
ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAoc3RhZ2UuY2xpcCkgewor
ICAgIGNhc2UgInN0YXIiOgorICAgICAgICBzdGFnZS5lbnN1cmVDbGlwU3RhcklzQ3JlYXRlZCgp
OyAgICAKKyAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiY2xpcC1wYXRoIiwgInVy
bCgjc3Rhci1jbGlwKSIpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHN0
YWdlLmZpbGwpIHsKKyAgICBjYXNlICJzb2xpZCI6CisgICAgZGVmYXVsdDoKKyAgICAgICAgdGhp
cy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiZmlsbCIsIHN0YWdlLnJhbmRvbUNvbG9yKCkpOworICAg
ICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSAiZ3JhZGllbnQiOgorICAgICAgICB2YXIg
Z3JhZGllbnQgPSBzdGFnZS5jcmVhdGVHcmFkaWVudCgyKTsKKyAgICAgICAgdGhpcy5lbGVtZW50
LnNldEF0dHJpYnV0ZSgiZmlsbCIsICJ1cmwoIyIgKyBncmFkaWVudC5nZXRBdHRyaWJ1dGUoImlk
IikgKyAiKSIpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICB0aGlzLl9tb3ZlKCk7ICAg
IAorfQorCitCb3VuY2luZ1N2Z1NoYXBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNp
bmdQYXJ0aWNsZS5wcm90b3R5cGUpOworQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBCb3VuY2luZ1N2Z1NoYXBlOworCitCb3VuY2luZ1N2Z1NoYXBlLnByb3RvdHlwZS5f
Y3JlYXRlQ2lyY2xlID0gZnVuY3Rpb24oc3RhZ2UpIHsKKyAgICB2YXIgY2lyY2xlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKHN0YWdlLnN2Z05hbWVzcGFjZSwgImNpcmNsZSIpOworICAgIGNp
cmNsZS5zZXRBdHRyaWJ1dGUoImN4IiwgdGhpcy5fc2l6ZS54IC8gMik7CisgICAgY2lyY2xlLnNl
dEF0dHJpYnV0ZSgiY3kiLCB0aGlzLl9zaXplLnkgLyAyKTsgICAgCisgICAgY2lyY2xlLnNldEF0
dHJpYnV0ZSgiciIsIE1hdGgubWluKHRoaXMuX3NpemUueCwgdGhpcy5fc2l6ZS55KSAvIDIpOwor
ICAgIHN0YWdlLmVsZW1lbnQuYXBwZW5kQ2hpbGQoY2lyY2xlKTsKKyAgICByZXR1cm4gY2lyY2xl
OworfQorCitCb3VuY2luZ1N2Z1NoYXBlLnByb3RvdHlwZS5fY3JlYXRlUmVjdCA9IGZ1bmN0aW9u
KHN0YWdlKSB7CisgICAgdmFyIHJlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3RhZ2Uu
c3ZnTmFtZXNwYWNlLCAicmVjdCIpOworICAgIHJlY3Quc2V0QXR0cmlidXRlKCJ4IiwgMCk7Cisg
ICAgcmVjdC5zZXRBdHRyaWJ1dGUoInkiLCAwKTsgICAgCisgICAgcmVjdC5zZXRBdHRyaWJ1dGUo
IndpZHRoIiwgdGhpcy5fc2l6ZS54KTsKKyAgICByZWN0LnNldEF0dHJpYnV0ZSgiaGVpZ2h0Iiwg
dGhpcy5fc2l6ZS55KTsKKyAgICBzdGFnZS5lbGVtZW50LmFwcGVuZENoaWxkKHJlY3QpOyAgICAK
KyAgICByZXR1cm4gcmVjdDsKK30KKworQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX21vdmUg
PSBmdW5jdGlvbigpIHsKKyAgICB2YXIgdHJhbnNmb3JtOworICAgIGlmICh0aGlzLl9zaGFwZSA9
PSAiY2lyY2xlIikKKyAgICAgICAgdHJhbnNmb3JtID0gInRyYW5zbGF0ZSgiICsgdGhpcy5fcG9z
aXRpb24ueCArICIsICIgKyB0aGlzLl9wb3NpdGlvbi55ICsgIikiOworICAgIGVsc2UgeworICAg
ICAgICB2YXIgY2VudGVyID0gdGhpcy5jZW50ZXIoKTsKKyAgICAgICAgdHJhbnNmb3JtICA9ICJ0
cmFuc2xhdGUoIiArIGNlbnRlci54ICsgIiwgIiArIGNlbnRlci55ICsgIikgIjsKKyAgICAgICAg
dHJhbnNmb3JtICs9IHRoaXMuX3JvdGF0ZXIucm90YXRlKCk7CisgICAgICAgIHRyYW5zZm9ybSAr
PSAidHJhbnNsYXRlKCIgKyAtdGhpcy5fc2l6ZS53aWR0aCgpIC8gMiArICIsICIgKyAtdGhpcy5f
c2l6ZS5oZWlnaHQoKSAvIDIgKyAiKSI7CisgICAgfQorICAgIHRoaXMuZWxlbWVudC5zZXRBdHRy
aWJ1dGUoInRyYW5zZm9ybSIsIHRyYW5zZm9ybSk7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGUucHJv
dG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpIHsKKyAgICBCb3VuY2luZ1BhcnRp
Y2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlzLl9t
b3ZlKCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UoZWxlbWVudCwgb3B0
aW9ucykgeworICAgIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBv
cHRpb25zKTsKKyAgICB0aGlzLnBhcnNlU2hhcGVQYXJhbXRlcnMob3B0aW9ucyk7Cit9CisKK0Jv
dW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1Bh
cnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7CitCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2U7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK0JvdW5jaW5n
U3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmVuc3VyZUNsaXBTdGFySXNDcmVhdGVkID0gZnVuY3Rp
b24oKSB7CisgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKCIjc3Rhci1jbGlw
IikgfHwgdGhpcy5fY3JlYXRlQ2xpcFN0YXIoKTsKK30KKworQm91bmNpbmdTdmdTaGFwZXNTdGFn
ZS5wcm90b3R5cGUuZW5zdXJlRGVmc0lzQ3JlYXRlZCA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVy
biB0aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvcigiZGVmcyIpIHx8IHRoaXMuX2NyZWF0ZURlZnMo
KTsKK30KKworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlR3JhZGllbnQg
PSBmdW5jdGlvbihzdG9wcykgeworICAgIHZhciBncmFkaWVudCAgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50TlModGhpcy5zdmdOYW1lc3BhY2UsICJsaW5lYXJHcmFkaWVudCIpOworICAgIAorICAg
IGlmICh0eXBlb2YgdGhpcy5fZ2FkaWVudHNDb3VudCA9PT0gInVuZGVmaW5lZCIpCisgICAgICAg
IHRoaXMuX2dhZGllbnRzQ291bnQgPSAwOyAgICAKKyAgICBncmFkaWVudC5zZXRBdHRyaWJ1dGUo
ImlkIiwgImdhZGllbnQtIiArICsrdGhpcy5fZ2FkaWVudHNDb3VudCk7CisgICAgCisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBzdG9wczsgKytpKSB7CisgICAgICAgIHZhciBzdG9wID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKHRoaXMuc3ZnTmFtZXNwYWNlLCAic3RvcCIpOworICAgICAgICBz
dG9wLnNldEF0dHJpYnV0ZSgib2Zmc2V0IiwgaSAqIDEwMCAvIHN0b3BzICsgIiUiKTsKKyAgICAg
ICAgc3RvcC5zZXRBdHRyaWJ1dGUoInN0b3AtY29sb3IiLCB0aGlzLnJhbmRvbUNvbG9yKCkpOwor
ICAgICAgICBncmFkaWVudC5hcHBlbmRDaGlsZChzdG9wKTsKKyAgICB9CisKKyAgICB0aGlzLmVu
c3VyZURlZnNJc0NyZWF0ZWQoKS5hcHBlbmRDaGlsZChncmFkaWVudCk7CisgICAgcmV0dXJuIGdy
YWRpZW50OworfQorCitCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5fY3JlYXRlRGVm
cyA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBkZWZzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KHRoaXMuc3ZnTmFtZXNwYWNlLCJkZWZzIik7CisgICAgdGhpcy5lbGVtZW50Lmluc2VydEJlZm9y
ZShkZWZzLCB0aGlzLmVsZW1lbnQuZmlyc3RDaGlsZCk7CisgICAgcmV0dXJuIGRlZnM7Cit9Cisg
ICAgCitCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5fY3JlYXRlQ2xpcFN0YXIgPSBm
dW5jdGlvbigpIHsKKyAgICB2YXIgY2xpcFBhdGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
dGhpcy5zdmdOYW1lc3BhY2UsICJjbGlwUGF0aCIpOworICAgIGNsaXBQYXRoLnNldEF0dHJpYnV0
ZSgiaWQiLCAic3Rhci1jbGlwIik7CisgICAgY2xpcFBhdGguc2V0QXR0cmlidXRlKCJjbGlwUGF0
aFVuaXRzIiwgIm9iamVjdEJvdW5kaW5nQm94Iik7CisgICAgCisgICAgdmFyIHBhdGggPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlModGhpcy5zdmdOYW1lc3BhY2UsICJwYXRoIik7CisgICAgcGF0
aC5zZXRBdHRyaWJ1dGUoImQiLCAiTS41MCwwTC4zOCwuMzhMMCwuMzhMLjMwLC42MEwuMTgsMUwu
NTAsLjc1TC44MiwxTC43MCwuNjBMMSwuMzhMLjYyLC4zOHoiKTsKKyAgICBjbGlwUGF0aC5hcHBl
bmRDaGlsZChwYXRoKTsKKyAgICAKKyAgICB0aGlzLmVuc3VyZURlZnNJc0NyZWF0ZWQoKS5hcHBl
bmRDaGlsZChjbGlwUGF0aCk7CisgICAgcmV0dXJuIGNsaXBQYXRoOworfQorCitCb3VuY2luZ1N2
Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkgeworICAg
IHJldHVybiBuZXcgQm91bmNpbmdTdmdTaGFwZSh0aGlzKTsKK30KKworQm91bmNpbmdTdmdTaGFw
ZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkID0gZnVuY3Rpb24ocGFydGlj
bGUpIHsKKyAgICBpZiAoIXBhcnRpY2xlLmVsZW1lbnQgfHwgIXBhcnRpY2xlLmVsZW1lbnQucGFy
ZW50Tm9kZSB8fCBwYXJ0aWNsZS5lbGVtZW50LnBhcmVudE5vZGUgIT0gdGhpcy5lbGVtZW50KQor
ICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIHZhciBmaWxsID0gcGFydGljbGUuZWxlbWVu
dC5nZXRBdHRyaWJ1dGUoImZpbGwiKTsKKyAgICBpZiAoZmlsbC5pbmRleE9mKCJ1cmwoIyIpID09
IDApIHsKKyAgICAgICAgdmFyIGdyYWRpZW50ID0gdGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3Io
ZmlsbC5zdWJzdHJpbmcoNCwgZmlsbC5sZW5ndGggLSAxKSk7CisgICAgICAgIHRoaXMuZW5zdXJl
RGVmc0lzQ3JlYXRlZCgpLnJlbW92ZUNoaWxkKGdyYWRpZW50KTsKKyAgICB9CisgICAgCisgICAg
dGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKHBhcnRpY2xlLmVsZW1lbnQpOworfQorCitmdW5jdGlv
biBCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3Jk
VGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2Fs
bCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsK
K30KKworQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOworQm91bmNpbmdTdmdTaGFw
ZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdTaGFwZXNCZW5j
aG1hcms7CisKK0JvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFn
ZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nU3ZnU2hhcGVz
U3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGll
bnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBw
cm9ncmVzc0JhcikgeworICAgIHdpbmRvdy5iZW5jaG1hcmsgPSBuZXcgQm91bmNpbmdTdmdTaGFw
ZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jh
cik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2Vz
L2JlbmNobWFyay5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKK2h0bWwgeworICBoZWlnaHQ6IDEwMCU7Cit9Citib2R5
IHsKKyAgd2lkdGg6IDEwMCU7CisgIGhlaWdodDogMTAwJTsKKyAgb3ZlcmZsb3c6IGhpZGRlbjsK
KyAgbWFyZ2luOiAwOworICBwYWRkaW5nOiAwOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWFlYWVh
OworfQorCisjc3RhZ2UgeworICB3aWR0aDogMTAwJTsKKyAgaGVpZ2h0OiAxMDAlOworICBiYWNr
Z3JvdW5kLWNvbG9yOiAjZWFlYWVhOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3Jlc291cmNlcy9iZW5jaG1hcmsuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9iZW5jaG1hcmsuanMJKHJldmlzaW9u
IDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL2JlbmNo
bWFyay5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4OCBAQAorZnVuY3Rpb24gQmVuY2ht
YXJrU3RhdGUodGVzdEludGVydmFsKSB7CisgICAgdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgPSAw
OworICAgIHRoaXMuX3N0YWdlSW50ZXJ2YWwgPSB0ZXN0SW50ZXJ2YWwgLyBCZW5jaG1hcmtTdGF0
ZS5zdGFnZXMuRklOSVNIRUQ7Cit9CisKK0JlbmNobWFya1N0YXRlLnN0YWdlcyA9IHsKKyAgICBX
QVJNSU5HX1VQOiAwLAorICAgIFNBTVBMSU5HOiAxLAorICAgIEZJTklTSEVEOiAyLAorICAgIG1l
c3NhZ2VzOiBbICJXYXJtaW5nIHVwIiwgIlNhbXBsaW5nIiwgIkZpbmlzaGVkIiBdCit9OworCitC
ZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUgPSB7CisgICAgX3RpbWVPZmZzZXQgOiBmdW5jdGlvbihz
dGFnZSkgeworICAgICAgICByZXR1cm4gc3RhZ2UgKiB0aGlzLl9zdGFnZUludGVydmFsOworICAg
IH0sCisgICAgX21lc3NhZ2UgOiBmdW5jdGlvbihzdGFnZSwgdGltZU9mZnNldCkgeworICAgICAg
ICBpZiAoc3RhZ2UgPT0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEKQorICAgICAgICAg
ICAgcmV0dXJuIEJlbmNobWFya1N0YXRlLnN0YWdlcy5tZXNzYWdlc1tzdGFnZV07CisKKyAgICAg
ICAgcmV0dXJuIEJlbmNobWFya1N0YXRlLnN0YWdlcy5tZXNzYWdlc1tzdGFnZV0gKyAiLi4uICgi
CisgICAgICAgICAgICArIE1hdGguZmxvb3IoKHRpbWVPZmZzZXQgLSB0aGlzLl90aW1lT2Zmc2V0
KHN0YWdlKSkgLyAxMDAwKSArICIvIgorICAgICAgICAgICAgKyBNYXRoLmZsb29yKCh0aGlzLl90
aW1lT2Zmc2V0KHN0YWdlICsgMSkgLSB0aGlzLl90aW1lT2Zmc2V0KHN0YWdlKSkgLyAxMDAwKSAr
ICIpIjsKKyAgICB9LAorICAgIHVwZGF0ZSA6IGZ1bmN0aW9uKGN1cnJlbnRUaW1lT2Zmc2V0KSB7
CisgICAgICAgIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0ID0gY3VycmVudFRpbWVPZmZzZXQ7Cisg
ICAgfSwKKyAgICBzYW1wbGluZ1RpbWVPZmZzZXQgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX3RpbWVPZmZzZXQoQmVuY2htYXJrU3RhdGUuc3RhZ2VzLlNBTVBMSU5HKTsKKyAg
ICB9LAorICAgIGN1cnJlbnRTdGFnZSA6IGZ1bmN0aW9uKCkgeworICAgICAgICBmb3IgKHZhciBz
dGFnZSA9IEJlbmNobWFya1N0YXRlLnN0YWdlcy5XQVJNSU5HX1VQOyBzdGFnZSA8IEJlbmNobWFy
a1N0YXRlLnN0YWdlcy5GSU5JU0hFRDsgKytzdGFnZSkgeworICAgICAgICAgICAgaWYgKHRoaXMu
X2N1cnJlbnRUaW1lT2Zmc2V0IDwgdGhpcy5fdGltZU9mZnNldChzdGFnZSArIDEpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBzdGFnZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gQmVuY2ht
YXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEOworICAgIH0sCisgICAgY3VycmVudE1lc3NhZ2UgOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX21lc3NhZ2UodGhpcy5jdXJyZW50U3Rh
Z2UoKSwgdGhpcy5fY3VycmVudFRpbWVPZmZzZXQpOworICAgIH0sCisgICAgY3VycmVudFByb2dy
ZXNzIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50VGltZU9mZnNl
dCAvIHRoaXMuX3RpbWVPZmZzZXQoQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIEFuaW1hdG9yKGJlbmNobWFyaykgeworICAgIHRoaXMuX2JlbmNo
bWFyayA9IGJlbmNobWFyazsKKyAgICB0aGlzLl9mcmFtZUNvdW50ID0gMDsKKyAgICB0aGlzLl9k
cm9wRnJhbWVDb3VudCA9IDE7CisgICAgdGhpcy5fbWVhc3VyZUZyYW1lQ291bnQgPSAzOyAKKyAg
ICB0aGlzLl9jdXJyZW50VGltZU9mZnNldCA9IDA7CisgICAgdGhpcy5fZXN0aW1hdG9yID0gbmV3
IEVzdGltYXRvcigpOworfQorCitBbmltYXRvci5wcm90b3R5cGUgPSB7CisgICAgc3RhcnQgOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5faW50ZXJ2YWxJZCA9IHNldEludGVydmFsKHRoaXMu
YW5pbWF0ZS5iaW5kKHRoaXMpLCAxKTsKKyAgICB9LAorICAgIHRpbWVEZWx0YSA6IGZ1bmN0aW9u
KCkgeworICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgLSB0aGlzLl9zdGFy
dFRpbWVPZmZzZXQ7CisgICAgfSwKKyAgICBhbmltYXRlIDogZnVuY3Rpb24oKSB7CisgICAgICAg
IHZhciBjdXJyZW50VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpOworICAgICAgICAKKyAgICAgICAg
aWYgKHR5cGVvZiB0aGlzLl9yZWZlcmVuY2VUaW1lID09PSAidW5kZWZpbmVkIikKKyAgICAgICAg
ICAgIHRoaXMuX3JlZmVyZW5jZVRpbWUgPSBjdXJyZW50VGltZTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgPSBjdXJyZW50VGltZSAtIHRoaXMuX3Jl
ZmVyZW5jZVRpbWU7CisKKyAgICAgICAgaWYgKCF0aGlzLl9mcmFtZUNvdW50KQorICAgICAgICAg
ICAgdGhpcy5fc3RhcnRUaW1lT2Zmc2V0ID0gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQ7CisKKyAg
ICAgICAgLy8gU3RhcnQgbWVhc3VyaW5nIGFmdGVyIGRyb3BwaW5nIF9kcm9wRnJhbWVDb3VudCBm
cmFtZXMuCisgICAgICAgIGlmICh0aGlzLl9mcmFtZUNvdW50ID09IHRoaXMuX2Ryb3BGcmFtZUNv
dW50KQorICAgICAgICAgICAgdGhpcy5fbWVhc3VyZVRpbWVPZmZzZXQgPSB0aGlzLl9jdXJyZW50
VGltZU9mZnNldDsKKworICAgICAgICArK3RoaXMuX2ZyYW1lQ291bnQ7CisKKyAgICAgICAgLy8g
RHJvcCBfZHJvcEZyYW1lQ291bnQgZnJhbWVzIGFuZCBtZWFzdXJlIHRoZSBhdmVyYWdlIG9mIF9t
ZWFzdXJlRnJhbWVDb3VudCBmcmFtZXMuCisgICAgICAgIGlmICh0aGlzLl9mcmFtZUNvdW50IDwg
dGhpcy5fZHJvcEZyYW1lQ291bnQgKyB0aGlzLl9tZWFzdXJlRnJhbWVDb3VudCkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgICAgIC8vIEdldCB0aGUgYXZlcmFnZSBGUFMgb2YgX21l
YXN1cmVGcmFtZUNvdW50IGZyYW1lcyBvdmVyIG1lYXN1cmVUaW1lRGVsdGEuCisgICAgICAgIHZh
ciBtZWFzdXJlVGltZURlbHRhID0gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgLSB0aGlzLl9tZWFz
dXJlVGltZU9mZnNldDsKKyAgICAgICAgdmFyIGN1cnJlbnRGcmFtZVJhdGUgPSBNYXRoLmZsb29y
KDEwMDAgLyAobWVhc3VyZVRpbWVEZWx0YSAvIHRoaXMuX21lYXN1cmVGcmFtZUNvdW50KSk7Cisg
ICAgICAgICAKKyAgICAgICAgLy8gVXNlIEthbG1hbiBmaWx0ZXIgdG8gZ2V0IGEgbW9yZSBub24t
Zmx1Y3R1YXRpbmcgZnJhbWUgcmF0ZS4KKyAgICAgICAgaWYgKHRoaXMuX2JlbmNobWFyay5vcHRp
b25zLmVzdGltYXRlZEZyYW1lUmF0ZSkKKyAgICAgICAgICAgIGN1cnJlbnRGcmFtZVJhdGUgPSB0
aGlzLl9lc3RpbWF0b3IuZXN0aW1hdGUobWVhc3VyZVRpbWVEZWx0YSwgY3VycmVudEZyYW1lUmF0
ZSk7CisgICAgICAgIAorICAgICAgICAvLyBBZGp1c3QgdGhlIHRlc3QgdG8gcmVhY2ggdGhlIGRl
c2lyZWQgRlBTLgorICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fYmVuY2htYXJrLnVwZGF0ZSh0
aGlzLl9jdXJyZW50VGltZU9mZnNldCwgdGhpcy50aW1lRGVsdGEoKSwgY3VycmVudEZyYW1lUmF0
ZSk7CisgICAgICAgIAorICAgICAgICAvLyBTdG9wIHRoZSBhbmltYXRvciBpZiB0aGUgYmVuY2ht
YXJrIGhhcyBmaW5pc2hlZC4KKyAgICAgICAgaWYgKCFyZXN1bHQgJiYgdHlwZW9mIHRoaXMuX2lu
dGVydmFsSWQgIT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMu
X2ludGVydmFsSWQpOworCisgICAgICAgIC8vIFN0YXJ0IHRoZSBuZXh0IGRyb3AvbWVhc3VyZSBj
eWNsZS4KKyAgICAgICAgdGhpcy5fZnJhbWVDb3VudCA9IDA7CisgICAgICAgIAorICAgICAgICAv
LyByZXN1bHQgbWF5IHN0b3AgdGhlIGFuaW1hdG9yIGlmIHJlcXVlc3RBbmltYXRpb25GcmFtZSgp
IGhhcyBiZWVuIHVzZWQuCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKyAgICBhbmlt
YXRlTG9vcCA6IGZ1bmN0aW9uKHRpbWVzdGFtcCkgeworICAgICAgICBpZiAodGhpcy5hbmltYXRl
KCkpCisgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5hbmltYXRlTG9vcC5i
aW5kKHRoaXMpKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEJlbmNobWFyayhvcHRpb25zKSB7Cisg
ICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7CisgICAgdGhpcy5fbWV0aG9kID0gdGhpcy5fb3B0
aW9uc1sibWV0aG9kIl0gfHwgInJlcXVlc3RBbmltYXRpb25GcmFtZSI7CisKKyAgICB0aGlzLm9w
dGlvbnMgPSBvcHRpb25zOworICAgIHRoaXMuX3JlY29yZEludGVydmFsID0gMjAwOyAgICAKKyAg
ICB0aGlzLl9pc1NhbXBsaW5nID0gZmFsc2U7CisKKyAgICB2YXIgZ2FpbiA9IHBhcnNlSW50KHRo
aXMuX29wdGlvbnNbImdhaW4iXSkgfHwgMTsKKyAgICB2YXIgbG93VmFsdWUgPSAtcGFyc2VJbnQo
dGhpcy5fb3B0aW9uc1siYWRkTGltaXQiXSkgfHwgMTsKKyAgICB2YXIgaGlnaFZhbHVlID0gcGFy
c2VJbnQodGhpcy5fb3B0aW9uc1sicmVtb3ZlTGltaXQiXSkgfHwgMTsKKyAgICAKKyAgICB0aGlz
Ll9jb250cm9sbGVyID0gbmV3IENvbnRyb2xsZXIoZ2Fpbiwgb3B0aW9ucy5mcmFtZVJhdGUsIGxv
d1ZhbHVlLCBoaWdoVmFsdWUpOworICAgIHRoaXMuX3NhbXBsZXIgPSBuZXcgU2FtcGxlcigyKTsK
KyAgICB0aGlzLl9zdGF0ZSA9IG5ldyBCZW5jaG1hcmtTdGF0ZSh0aGlzLm9wdGlvbnMudGVzdElu
dGVydmFsKTsgICAgCit9CisKK0JlbmNobWFyay5wcm90b3R5cGUgPSB7CisgICAgLy8gQ2FsbGVk
IGZyb20gdGhlIGxvYWQgZXZlbnQgbGlzdGVuZXIgb3IgZnJvbSB0aGlzLnJ1bigpCisgICAgc3Rh
cnQgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHRoaXMuX21ldGhvZCA9PSAic2V0SW50ZXJ2
YWwiKQorICAgICAgICAgICAgdGhpcy5fYW5pbWF0b3Iuc3RhcnQoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgdGhpcy5fYW5pbWF0b3IuYW5pbWF0ZUxvb3AoKTsKKyAgICB9LAorICAgIC8v
IENhbGxlZCBmcm9tIHRoZSBhbmltYXRvciB0byBhZGp1c3QgdGhlIGNvbXBsZXhpdHkgb2YgdGhl
IHRlc3QKKyAgICB1cGRhdGUgOiBmdW5jdGlvbihjdXJyZW50VGltZU9mZnNldCwgdGltZURlbHRh
LCBjdXJyZW50RnJhbWVSYXRlKSB7CisgICAgICAgIHRoaXMuX3N0YXRlLnVwZGF0ZShjdXJyZW50
VGltZU9mZnNldCk7CisgICAgICAgIAorICAgICAgICB2YXIgc3RhZ2UgPSB0aGlzLl9zdGF0ZS5j
dXJyZW50U3RhZ2UoKTsKKyAgICAgICAgaWYgKHN0YWdlID09IEJlbmNobWFya1N0YXRlLnN0YWdl
cy5GSU5JU0hFRCkgeworICAgICAgICAgICAgdGhpcy5jbGVhcigpOworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0YWdlID09IEJlbmNobWFya1N0
YXRlLnN0YWdlcy5TQU1QTElORyAmJiAhdGhpcy5faXNTYW1wbGluZykgeworICAgICAgICAgICAg
dGhpcy5fc2FtcGxlci5zdGFydFNhbXBsaW5nKHRoaXMuX3N0YXRlLnNhbXBsaW5nVGltZU9mZnNl
dCgpKTsKKyAgICAgICAgICAgIHRoaXMuX2lzU2FtcGxpbmcgPSB0cnVlOworICAgICAgICB9CisK
KyAgICAgICAgdmFyIHR1bmVWYWx1ZSA9IDA7CisgICAgICAgIGlmICghKHRoaXMuX2lzU2FtcGxp
bmcgJiYgdGhpcy5vcHRpb25zLmZpeFRlc3RDb21wbGV4aXR5KSkgeworICAgICAgICAgICAgLy8g
VGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGZyYW1lUmF0ZSBhbmQgdGVzdCBjb21wbGV4aXR5IGlz
IGludmVyc2UtcHJvcG9ydGlvbmFsIHNvIHdlCisgICAgICAgICAgICAvLyBuZWVkIHRvIHVzZSB0
aGUgbmVnYXRpdmUgb2YgQ29udHJvbGxlci50dW5lKCkgdG8gY2hhbmdlIHRoZSBjb21wbGV4aXR5
IG9mIHRoZSB0ZXN0CisgICAgICAgICAgICB0dW5lVmFsdWUgPSAtdGhpcy5fY29udHJvbGxlci50
dW5lKGN1cnJlbnRGcmFtZVJhdGUsIHRpbWVEZWx0YSAvIDEwMDApOworICAgICAgICB9CisKKyAg
ICAgICAgdmFyIGN1cnJlbnRDb21wbGV4aXR5ID0gdGhpcy50dW5lKHR1bmVWYWx1ZSk7CisgICAg
ICAgIHRoaXMucmVjb3JkKGN1cnJlbnRUaW1lT2Zmc2V0LCBjdXJyZW50Q29tcGxleGl0eSwgY3Vy
cmVudEZyYW1lUmF0ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisgICAgcmVjb3Jk
IDogZnVuY3Rpb24oY3VycmVudFRpbWVPZmZzZXQsIGN1cnJlbnRDb21wbGV4aXR5LCBjdXJyZW50
RnJhbWVSYXRlKSB7CisgICAgICAgIHRoaXMuX3NhbXBsZXIuc2FtcGxlKGN1cnJlbnRUaW1lT2Zm
c2V0LCBbY3VycmVudENvbXBsZXhpdHksIGN1cnJlbnRGcmFtZVJhdGVdKTsKKyAgICAgICAgCisg
ICAgICAgIGlmICh0eXBlb2YgdGhpcy5fcmVjb3JkVGltZU9mZnNldCA9PSAidW5kZWZpbmVkIikK
KyAgICAgICAgICAgIHRoaXMuX3JlY29yZFRpbWVPZmZzZXQgPSBjdXJyZW50VGltZU9mZnNldDsK
KworICAgICAgICB2YXIgc3RhZ2UgPSB0aGlzLl9zdGF0ZS5jdXJyZW50U3RhZ2UoKTsKKyAgICAg
ICAgaWYgKHN0YWdlICE9IEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRCAmJiBjdXJyZW50
VGltZU9mZnNldCA8IHRoaXMuX3JlY29yZFRpbWVPZmZzZXQgKyB0aGlzLl9yZWNvcmRJbnRlcnZh
bCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLnNob3dSZXN1bHRzKHRoaXMu
X3N0YXRlLmN1cnJlbnRNZXNzYWdlKCksIHRoaXMuX3N0YXRlLmN1cnJlbnRQcm9ncmVzcygpKTsK
KyAgICAgICAgdGhpcy5fcmVjb3JkVGltZU9mZnNldCA9IGN1cnJlbnRUaW1lT2Zmc2V0OworICAg
IH0sCisgICAgcnVuIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuc3RhcnQoKTsKKworICAg
ICAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgICAgICB2YXIgc2VsZiA9
IHRoaXM7CisgICAgICAgIGZ1bmN0aW9uIHJlc29sdmVXaGVuRmluaXNoZWQoKSB7CisgICAgICAg
ICAgICBpZiAodHlwZW9mIHNlbGYuX3N0YXRlICE9ICJ1bmRlZmluZWQiICYmIChzZWxmLl9zdGF0
ZS5jdXJyZW50U3RhZ2UoKSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnJlc29sdmUoc2VsZi5fc2FtcGxlcik7CisgICAg
ICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmVXaGVuRmluaXNoZWQuYmluZChzZWxmKSwgNTApOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXNvbHZlV2hlbkZpbmlzaGVkKCk7CisgICAg
ICAgIHJldHVybiBwcm9taXNlOworICAgIH0KK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWF0aC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanMJKHJldmlzaW9uIDApCisr
KyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxODQgQEAKK3ZhciBNYXRyaXggPSB7fTsKKworTWF0cml4
LmluaXQgPSBmdW5jdGlvbihtLCBuLCB2KSB7CisgICAgcmV0dXJuIEFycmF5KG0gKiBuKS5maWxs
KHYpOworfQorCitNYXRyaXguemVyb3MgPSBmdW5jdGlvbihtLCBuKSB7CisgICAgcmV0dXJuIE1h
dHJpeC5pbml0KG0sIG4sIDApOworfQorCitNYXRyaXgub25lcyA9IGZ1bmN0aW9uKG0sIG4pIHsK
KyAgICByZXR1cm4gTWF0cml4LmluaXQobSwgbiwgMSk7Cit9CisKK01hdHJpeC5pZGVudGl0eSA9
IGZ1bmN0aW9uKG4pIHsKKyAgICB2YXIgb3V0ID0gbmV3IE1hdHJpeC56ZXJvcyhuLCBuKTsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkKKyAgICAgICAgb3V0W2kgKiBuICsgaV0gPSAx
OworICAgIHJldHVybiBvdXQ7Cit9CisKK01hdHJpeC5zdHIgPSBmdW5jdGlvbihBLCBuLCBtKSB7
CisgICAgdmFyIG91dCA9IChtID4gMSAmJiBuID4gMSA/ICJNYXRyaXhbIiArIG4gKyAiLCAiICsg
bSA6ICJWZWN0b3JbIiArIG0gKiBuKSArICJdID0gWyI7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBuICogbTsgKytpKSB7CisgICAgICAgIG91dCArPSBBW2ldOworICAgICAgICBpZiAoaSA8IG4g
KiBtIC0gMSkKKyAgICAgICAgICAgIG91dCArPSAiLCAiOworICAgIH0gICAgICAgCisgICAgcmV0
dXJuIG91dCArICJdIjsKK307CisKK01hdHJpeC5wb3MgPSBmdW5jdGlvbihtLCBpLCBqKSB7Cisg
ICAgcmV0dXJuIG0gKiBpICsgajsKK30KKworTWF0cml4LmFkZCA9IGZ1bmN0aW9uKEEsIEIsIG4s
IG0pIHsKKyAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIG0pOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbiAqIG07ICsraSkKKyAgICAgICAgb3V0W2ldID0gQVtpXSArIEJbaV07CisgICAg
cmV0dXJuIG91dDsKK30KKworTWF0cml4LnN1YnRyYWN0ID0gZnVuY3Rpb24oQSwgQiwgbiwgbSkg
eworICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3MobiwgbSk7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBuICogbTsgKytpKQorICAgICAgICBvdXRbaV0gPSBBW2ldIC0gQltpXTsKKyAgICByZXR1
cm4gb3V0OworfQorCitNYXRyaXguc2NhbGUgPSBmdW5jdGlvbihzLCBBLCBuLCBtKSB7CisgICAg
dmFyIG91dCA9IE1hdHJpeC56ZXJvcyhuLCBtKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4g
KiBtOyArK2kpCisgICAgICAgIG91dFtpXSA9IHMgKiBBW2ldOworICAgIHJldHVybiBvdXQ7Cit9
CisKK01hdHJpeC50cmFuc3Bvc2UgPSBmdW5jdGlvbihBLCBuLCBtKSB7CisgICAgdmFyIG91dCA9
IE1hdHJpeC56ZXJvcyhtLCBuKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkgewor
ICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG07ICsraikKKyAgICAgICAgICAgIG91dFtNYXRy
aXgucG9zKG4sIGksIGopXSA9IEFbTWF0cml4LnBvcyhtLCBqLCBpKV07CisgICAgfSAgICAgICAK
KyAgICByZXR1cm4gb3V0OworfQorCitNYXRyaXgubXVsdGlwbHkgPSBmdW5jdGlvbihBLCBCLCBu
LCBtLCBwKSB7CisgICAgdmFyIG91dCA9IE1hdHJpeC56ZXJvcyhuLCBwKTsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHA7ICsr
aikgeworICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBtOyArK2spIHsKKyAgICAgICAg
ICAgICAgICBvdXRbTWF0cml4LnBvcyhwLCBpLCBqKV0gKz0gQVtNYXRyaXgucG9zKG0sIGksIGsp
XSAqIEJbTWF0cml4LnBvcyhwLCBrLCBqKV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgcmV0dXJuIG91dDsKK30KKwordmFyIFZlY3RvcjMgPSB7fTsKKworVmVjdG9yMy56
ZXJvcyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gTWF0cml4Lnplcm9zKDEsIDMpOyB9CitWZWN0b3Iz
Lm9uZXMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIE1hdHJpeC5vbmVzKDEsIDMpOyB9CitWZWN0b3Iz
LnN0ciA9IGZ1bmN0aW9uKHYpIHsgcmV0dXJuIE1hdHJpeC5zdHIodiwgMSwgMyk7IH0KK1ZlY3Rv
cjMuYWRkID0gZnVuY3Rpb24odiwgdykgeyByZXR1cm4gTWF0cml4LmFkZCh2LCB3LCAxLCAzKTsg
fQorVmVjdG9yMy5zdWJ0cmFjdCA9IGZ1bmN0aW9uKHYsIHcpIHsgcmV0dXJuIE1hdHJpeC5zdWJ0
cmFjdCh2LCB3LCAxLCAzKTsgfQorVmVjdG9yMy5zY2FsZSA9IGZ1bmN0aW9uKHMsIHYpIHsgcmV0
dXJuIE1hdHJpeC5zY2FsZShzLCB2LCAxLCAzKTsgfQorVmVjdG9yMy5tdWx0aXBseU1hdHJpeDMg
PSBmdW5jdGlvbih2LCBBKSB7IHJldHVybiBNYXRyaXgubXVsdGlwbHkodiwgQSwgMSwgMywgMyk7
IH0KK1ZlY3RvcjMubXVsdGlwbHlWZWN0b3IzID0gZnVuY3Rpb24odiwgdykgeworICAgIHZhciBv
dXQgPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgKytpKQorICAgICAgICBvdXQgKz0g
dltpXSAqIHdbaV07CisgICAgcmV0dXJuIG91dDsKK30KKwordmFyIE1hdHJpeDMgPSB7fTsKKwor
TWF0cml4My56ZXJvcyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gTWF0cml4Lnplcm9zKDMsIDMpOyB9
CitNYXRyaXgzLmlkZW50aXR5ID0gZnVuY3Rpb24oKSB7IHJldHVybiBNYXRyaXguaWRlbnRpdHko
MywgMyk7IH0KK01hdHJpeDMuc3RyID0gZnVuY3Rpb24oQSkgeyByZXR1cm4gTWF0cml4LnN0cihB
LCAzLCAzKTsgfQorTWF0cml4My5wb3MgPSBmdW5jdGlvbihpLCBqKSB7IHJldHVybiBNYXRyaXgu
cG9zKDMsIGksIGopOyB9CitNYXRyaXgzLmFkZCA9IGZ1bmN0aW9uKEEsIEIpIHsgcmV0dXJuIE1h
dHJpeC5hZGQoQSwgQiwgMywgMyk7IH0KK01hdHJpeDMuc3VidHJhY3QgPSBmdW5jdGlvbihBLCBC
KSB7IHJldHVybiBNYXRyaXguc3VidHJhY3QoQSwgQiwgMywgMyk7IH0KK01hdHJpeDMuc2NhbGUg
PSBmdW5jdGlvbihzLCBBKSB7IHJldHVybiBNYXRyaXguc2NhbGUocywgQSwgMywgMyk7IH0KK01h
dHJpeDMudHJhbnNwb3NlID0gZnVuY3Rpb24oQSkgeyByZXR1cm4gTWF0cml4LnRyYW5zcG9zZShB
LCAzLCAzKTsgfQorTWF0cml4My5tdWx0aXBseU1hdHJpeDMgPSBmdW5jdGlvbihBLCBCKSB7IHJl
dHVybiBNYXRyaXgubXVsdGlwbHkoQSwgQiwgMywgMywgMyk7IH0KK01hdHJpeDMubXVsdGlwbHlW
ZWN0b3IzID0gZnVuY3Rpb24oQSwgdikgeyByZXR1cm4gTWF0cml4Lm11bHRpcGx5KEEsIHYsIDMs
IDMsIDEpOyB9CisKK2Z1bmN0aW9uIENvbnRyb2xsZXIoSywgeXNwLCB1bG93LCB1aGlnaCkgewor
ICAgIHRoaXMuX3lzcCA9IHlzcDsKKworICAgIHRoaXMuX1RkID0gNTsKKyAgICB0aGlzLl9UaSA9
IDE1OworCisgICAgdGhpcy5fS3AgPSBLOworICAgIHRoaXMuX0tkID0gSyAvIHRoaXMuX1RkOwor
ICAgIHRoaXMuX0tpID0gSyAvIHRoaXMuX1RpOworCisgICAgdGhpcy5fZW9sZCA9IDA7CisgICAg
dGhpcy5fSSA9IDA7Cit9CisKK0NvbnRyb2xsZXIucHJvdG90eXBlID0geworICAgIF9zYXQgOiBm
dW5jdGlvbih2LCBsb3csIGhpZ2gpIHsKKyAgICAgICAgcmV0dXJuIHYgPCBsb3cgPyBsb3cgOiAo
diA+IGhpZ2ggPyBoaWdoIDogdik7CisgICAgfSwKKyAgICB0dW5lIDogZnVuY3Rpb24oeSwgaCkg
eworICAgICAgICAvLyBDdXJyZW50IGVycm9yCisgICAgICAgIHZhciBlID0gdGhpcy5feXNwIC0g
eTsKKworICAgICAgICAvLyBQcm9wb3J0aW9uYWwgdGVybQorICAgICAgICB2YXIgUCA9IHRoaXMu
X0twICogZTsKKyAgICAgICAgCisgICAgICAgIC8vIERlcml2YXRpdmUgdGVybSBpcyB0aGUgc2xv
cGUgb2YgdGhlIGN1cnZlIGF0IHRoZSBjdXJyZW50IHRpbWUKKyAgICAgICAgdmFyIEQgPSB0aGlz
Ll9LZCAqIChlIC0gdGhpcy5fZW9sZCkgLyBoOworCisgICAgICAgIC8vIEludGVncmFsIHRlcm0g
aXMgdGhlIGFyZWEgdW5kZXIgdGhlIGN1cnZlIHN0YXJ0aW5nIGZyb20gdGhlIGJlZ2luaW5nIHRp
bGwgdGhlIGN1cnJlbnQgdGltZQorICAgICAgICB0aGlzLl9JICs9IHRoaXMuX0tpICogKChlICsg
dGhpcy5fZW9sZCkgLyAyKSAqIGg7CisKKyAgICAgICAgLy8gcGlkIGNvbnRyb2xsZXIgdmFsdWUK
KyAgICAgICAgdmFyIHYgPSBQICsgRCArIHRoaXMuX0k7CisgICAgICAgIAorICAgICAgICAvLyBB
dm9pZCBzcGlrZXMgYnkgYXBwbHlpbmcgYWN0dWF0b3Igc2F0dWFydGlvbgorICAgICAgICB2YXIg
dSA9IHRoaXMuX3NhdCh2LCB0aGlzLl91bG93LCB0aGlzLl91aGlnaCk7ICAgICAgICAKKworICAg
ICAgICB0aGlzLl9lb2xkID0gZTsKKyAgICAgICAgcmV0dXJuIHU7CisgICAgfQorfQorCitmdW5j
dGlvbiBFc3RpbWF0b3IoKSB7CisgICAgdGhpcy5fbWF0QSA9IE1hdHJpeDMuaWRlbnRpdHkoKTsK
KyAgICAKKyAgICB0aGlzLl92ZWNIID0gVmVjdG9yMy56ZXJvcygpOworICAgIHRoaXMuX3ZlY0hb
MF0gPSAxOworICAgIAorICAgIHRoaXMuX21hdFEgPSBNYXRyaXgzLmlkZW50aXR5KCk7CisgICAg
dGhpcy5fUiA9IDEwMDA7CisgICAgCisgICAgdGhpcy5fdmVjWF9lc3QgPSBWZWN0b3IzLm9uZXMo
KTsKKyAgICB0aGlzLl9tYXRQX2VzdCA9IE1hdHJpeDMuemVyb3MoKTsKK30KKworRXN0aW1hdG9y
LnByb3RvdHlwZSA9IHsKKyAgICBlc3RpbWF0ZSA6IGZ1bmN0aW9uKHRpbWVEZWx0YSwgY3VycmVu
dCkgeworICAgICAgICAvLyBVcGRhdGUgdGhlIHRyYW5zaXRpb24gbWF0cml4CisgICAgICAgIHRo
aXMuX21hdEFbTWF0cml4My5wb3MoMCwgMildID0gMTsKKworICAgICAgICAvLyBQcmVkaWN0ZWQg
c3RhdGUgYW5kIGNvdmFyaWFuY2UKKyAgICAgICAgdmFyIHZlY1hfcHJkID0gTWF0cml4My5tdWx0
aXBseVZlY3RvcjModGhpcy5fbWF0QSwgdGhpcy5fdmVjWF9lc3QpOworICAgICAgICB2YXIgbWF0
UF9wcmQgPSBNYXRyaXgzLmFkZChNYXRyaXgzLm11bHRpcGx5TWF0cml4MyhNYXRyaXgzLm11bHRp
cGx5TWF0cml4Myh0aGlzLl9tYXRBLCB0aGlzLl9tYXRQX2VzdCksIE1hdHJpeDMudHJhbnNwb3Nl
KHRoaXMuX21hdEEpKSwgdGhpcy5fbWF0USk7CisKKyAgICAgICAgLy8gRXN0aW1hdGlvbgorICAg
ICAgICB2YXIgdmVjQiA9IFZlY3RvcjMubXVsdGlwbHlNYXRyaXgzKHRoaXMuX3ZlY0gsIE1hdHJp
eDMudHJhbnNwb3NlKG1hdFBfcHJkKSk7CisgICAgICAgIHZhciBTID0gVmVjdG9yMy5tdWx0aXBs
eVZlY3RvcjModmVjQiwgdGhpcy5fdmVjSCkgKyB0aGlzLl9SOworCisgICAgICAgIHZhciB2ZWNH
YWluID0gVmVjdG9yMy5zY2FsZSgxL1MsIHZlY0IpOworICAgICAgICAKKyAgICAgICAgLy8gRXN0
aW1hdGVkIHN0YXRlIGFuZCBjb3ZhcmlhbmNlCisgICAgICAgIHRoaXMuX3ZlY1hfZXN0ID0gVmVj
dG9yMy5hZGQodmVjWF9wcmQsIFZlY3RvcjMuc2NhbGUoY3VycmVudCAtIFZlY3RvcjMubXVsdGlw
bHlWZWN0b3IzKHRoaXMuX3ZlY0gsIHZlY1hfcHJkKSwgdmVjR2FpbikpOworICAgICAgICB0aGlz
Ll9tYXRQX2VzdCA9IE1hdHJpeDMuc3VidHJhY3QobWF0UF9wcmQsIE1hdHJpeDMuc2NhbGUoVmVj
dG9yMy5tdWx0aXBseVZlY3RvcjModmVjR2FpbiwgdGhpcy5fdmVjSCksIG1hdFBfcHJkKSk7CisK
KyAgICAgICAgLy8gQ29tcHV0ZSB0aGUgZXN0aW1hdGVkIG1lYXN1cmVtZW50CisgICAgICAgIHJl
dHVybiBWZWN0b3IzLm11bHRpcGx5VmVjdG9yMyh0aGlzLl92ZWNILCAgdGhpcy5fdmVjWF9lc3Qp
OworICAgIH0KK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNv
dXJjZXMvc3RhZ2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0MiBAQAorZnVuY3Rpb24gU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykgeworICAgIHRo
aXMuZWxlbWVudCA9IGVsZW1lbnQ7Cit9CisKK1N0YWdlLnByb3RvdHlwZSA9IHsKKyAgICBzaXpl
IDogZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRT
dHlsZSh0aGlzLmVsZW1lbnQpOworICAgICAgICB2YXIgcGFkZGluZyA9IG5ldyBJbnNldHMoCisg
ICAgICAgICAgICBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nVG9wKSwKKyAgICAgICAgICAgIHBh
cnNlRmxvYXQoc3R5bGVzLnBhZGRpbmdSaWdodCksCisgICAgICAgICAgICBwYXJzZUZsb2F0KHN0
eWxlcy5wYWRkaW5nQm90dG9tKSwKKyAgICAgICAgICAgIHBhcnNlRmxvYXQoc3R5bGVzLnBhZGRp
bmdUb3ApKTsKKyAgICAgICAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLmVsZW1lbnQuY2xpZW50V2lk
dGggLSBwYWRkaW5nLndpZHRoKCksIHRoaXMuZWxlbWVudC5jbGllbnRIZWlnaHQgLSBwYWRkaW5n
LmhlaWdodCgpKTsKKyAgICB9LAorICAgIGNsZWFyIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLnR1bmUoLXRoaXMudHVuZSgwKSk7CisgICAgfSwKKyAgICByYW5kb20gOiBmdW5j
dGlvbihtaW4sIG1heCkgeworICAgICAgICByZXR1cm4gKE1hdGgucmFuZG9tKCkgKiAobWF4IC0g
bWluKSkgKyBtaW47CisgICAgfSwKKyAgICByYW5kb21JbnQgOiBmdW5jdGlvbihtaW4sIG1heCkg
eworICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih0aGlzLnJhbmRvbShtaW4sIG1heCkpOworICAg
IH0sCisgICAgcmFuZG9tUG9zaXRpb24gOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIG1heCA9
IHRoaXMuc2l6ZSgpLnN1YnRyYWN0KHRoaXMucGFydGljbGVTaXplKTsKKyAgICAgICAgcmV0dXJu
IG5ldyBQb2ludCh0aGlzLnJhbmRvbUludCgwLCBtYXgueCksIHRoaXMucmFuZG9tSW50KDAsIG1h
eC55KSk7CisgICAgfSwKKyAgICByYW5kb21WZWxvY2l0eSA6IGZ1bmN0aW9uKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy5yYW5kb20odGhpcy5fbWF4VmVsb2NpdHkgLyA4LCB0aGlzLl9tYXhWZWxv
Y2l0eSk7CisgICAgfSwKKyAgICByYW5kb21BbmdsZSA6IGZ1bmN0aW9uKCkgeworICAgICAgICBy
ZXR1cm4gdGhpcy5yYW5kb20oMCwgTWF0aC5QSSAqIDIpOworICAgIH0sCisgICAgcmFuZG9tQ29s
b3IgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIG1pbiA9IDMyOworICAgICAgICB2YXIgbWF4
ID0gMjU2IC0gMzI7CisgICAgICAgIHJldHVybiAiIyIKKyAgICAgICAgICAgICsgdGhpcy5yYW5k
b21JbnQobWluLCBtYXgpLnRvU3RyaW5nKDE2KQorICAgICAgICAgICAgKyB0aGlzLnJhbmRvbUlu
dChtaW4sIG1heCkudG9TdHJpbmcoMTYpCisgICAgICAgICAgICArIHRoaXMucmFuZG9tSW50KG1p
biwgbWF4KS50b1N0cmluZygxNik7CisgICAgfQorfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy91dGlsaXRpZXMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy91dGlsaXRpZXMuanMJKHJl
dmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2Vz
L3V0aWxpdGllcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACit3aW5kb3cuYmVu
Y2htYXJrQ2xpZW50ID0geworICAgIF9wYXJzZSA6IGZ1bmN0aW9uKHN0ciwgc2VwKSB7CisgICAg
ICAgIHZhciBvdXRwdXQgPSB7fTsKKyAgICAgICAgc3RyLnNwbGl0KHNlcCkuZm9yRWFjaChmdW5j
dGlvbihwYXJ0KSB7CisgICAgICAgICAgICB2YXIgaXRlbSA9IHBhcnQuc3BsaXQoIj0iKTsKKyAg
ICAgICAgICAgIHZhciB2YWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudChpdGVtWzFdKTsKKyAgICAg
ICAgICAgIGlmICh2YWx1ZVswXSA9PSAnXCcnICkKKyAgICAgICAgICAgICAgICBvdXRwdXRbaXRl
bVswXV0gPSB2YWx1ZS5zdWJzdHIoMSwgdmFsdWUubGVuZ3RoIC0gMik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgb3V0cHV0W2l0ZW1bMF1dID0gdmFsdWU7ICAgICAgICAgICAg
ICAgIAorICAgICAgICAgIH0pOworICAgICAgICByZXR1cm4gb3V0cHV0OworICAgIH0sCisgICAg
cGFyc2VQYXJhbWV0ZXJzIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLl9wYXJz
ZSh3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cigxKSwgIiYiKTsKKyAgICB9LAorICAgIHBh
cnNlQXJndW1lbnRzIDogZnVuY3Rpb24oc3RyKSB7CisgICAgICAgIHJldHVybiB0aGlzLl9wYXJz
ZShzdHIsICIgIik7CisgICAgfSwKKyAgICBleHRlbmRPYmplY3QgOiBmdW5jdGlvbihvYmoxLCBv
YmoyKSB7CisgICAgICAgIGZvciAodmFyIGF0dHJuYW1lIGluIG9iajIpCisgICAgICAgICAgICBv
YmoxW2F0dHJuYW1lXSA9IG9iajJbYXR0cm5hbWVdOworICAgICAgICByZXR1cm4gb2JqMTsKKyAg
ICB9LAorICAgIGNvcHlPYmplY3QgOiBmdW5jdGlvbihvYmopIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuZXh0ZW5kT2JqZWN0KHt9LCBvYmopOworICAgIH0sCisgICAgbWVyZ2VPYmplY3RzIDogZnVu
Y3Rpb24ob2JqMSwgb2JqMikgeworICAgICAgICByZXR1cm4gdGhpcy5leHRlbmRPYmplY3QodGhp
cy5jb3B5T2JqZWN0KG9iajEpLCBvYmoyKTsKKyAgICB9Cit9OworCisvLyBUaGlzIGV2ZW50IGxp
c3RlbmVyIHJ1bnMgdGhlIHRlc3QgaWYgaXQgaXMgbG9hZGVkIG91dHNpZGUgdGhlIGJlbmNobWFy
ayBydW5uZXIuCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgewor
ICAgIGlmICh3aW5kb3cuc2VsZiAhPT0gd2luZG93LnRvcCkKKyAgICAgICAgcmV0dXJuOworICAg
IHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKG51bGwsIG51bGwsIDMwMDAwLCA1MCwgbnVs
bCwgbnVsbCk7CisgICAgd2luZG93LmJlbmNobWFyay5zdGFydCgpOworfSk7CisKKy8vIFRoaXMg
ZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIHN1aXRlIGNvbnRyb2xsZXIgcnVuLWNhbGxiYWNr
IHdoZW4gcnVubmluZyB0aGUgYmVuY2htYXJrIHJ1bm5lci4KK3dpbmRvdy5ydW5CZW5jaG1hcmsg
PSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFy
KSB7CisgICAgdmFyIG1lcmdlT3B0aW9ucyA9IHdpbmRvdy5iZW5jaG1hcmtDbGllbnQubWVyZ2VP
YmplY3RzKG9wdGlvbnMsIHdpbmRvdy5iZW5jaG1hcmtDbGllbnQucGFyc2VQYXJhbWV0ZXJzKCkp
OworICAgIHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKHN1aXRlLCB0ZXN0LCBtZXJnZU9w
dGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7CisgICAgcmV0dXJuIHdpbmRvdy5iZW5j
aG1hcmsucnVuKCk7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL3lpbi15YW5nLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnN2ZwkocmV2aXNpb24gMCkKKysrIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcuc3ZnCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKKzxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjAwIDIwMCI+DQorICA8ZGVmcz4NCisgICAgPGNs
aXBQYXRoIGlkPSJsZWZ0LWhhbGYiPg0KKyAgICAgIDxyZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0i
MjAwIi8+DQorICAgIDwvY2xpcFBhdGg+DQorICAgIDxjbGlwUGF0aCBpZD0icmlnaHQtaGFsZiI+
DQorICAgICAgPHJlY3QgeD0iMTAwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjIwMCIvPg0KKyAgICA8
L2NsaXBQYXRoPg0KKyAgPC9kZWZzPg0KKyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iMTAwIiByPSI5
OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJncmVlbiIgc3Ryb2tlLXdpZHRoPSIyIi8+DQorICA8Y2ly
Y2xlIGN4PSIxMDAiIGN5PSIxMDAiIHI9Ijk4IiBmaWxsPSJ3aGl0ZSIgY2xpcC1wYXRoPSJ1cmwo
I2xlZnQtaGFsZikiLz4NCisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjEwMCIgcj0iOTgiIGZpbGw9
ImdyZWVuIiBjbGlwLXBhdGg9InVybCgjcmlnaHQtaGFsZikiLz4NCisgIDxjaXJjbGUgY3g9IjEw
MCIgY3k9IjUwIiAgcj0iNDkiIGZpbGw9ImdyZWVuIi8+DQorICA8Y2lyY2xlIGN4PSIxMDAiIGN5
PSIxNDgiIHI9IjQ5IiBmaWxsPSJ3aGl0ZSIvPg0KKyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iNTAi
ICByPSIxMCIgZmlsbD0id2hpdGUiLz4gICAgDQorICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSIxNDgi
IHI9IjEwIiBmaWxsPSJncmVlbiIvPg0KKzwvc3ZnPg0KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0bWwJ
KHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9s
YXllcmluZy10ZXh0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAgLnRleHQtbGF5ZXIgewor
ICAgICAgZm9udC1zaXplOiAxMHB4OworICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAg
bGVmdDogMHB4OworICAgICAgdG9wOiAwcHg7CisgICAgICBtYXJnaW46IDVweDsKKyAgICAgIHBh
ZGRpbmc6IDVweDsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICAgIH0K
KyAgPC9zdHlsZT4gIAorICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBo
cmVmPSIuLi9yZXNvdXJjZXMvYmVuY2htYXJrLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+ICAKKyAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9iZW5jaG1h
cmsuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5q
cyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2Ny
aXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9InN0YWdlIj48L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291
cmNlcy9sYXllcmluZy10ZXh0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzCShyZXZpc2lvbiAw
KQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xh
eWVyaW5nLXRleHQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNTYgQEAKK2Z1bmN0aW9u
IExheWVyaW5nVGV4dEFuaW1hdG9yKGJlbmNobWFyaykgeworICAgIEFuaW1hdG9yLmNhbGwodGhp
cywgYmVuY2htYXJrKTsKK307CisKK0xheWVyaW5nVGV4dEFuaW1hdG9yLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoQW5pbWF0b3IucHJvdG90eXBlKTsKK0xheWVyaW5nVGV4dEFuaW1hdG9yLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciA9IExheWVyaW5nVGV4dEFuaW1hdG9yOworCitMYXllcmluZ1Rl
eHRBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkgeworICAgIGlmICghQW5p
bWF0b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHRoaXMuX2JlbmNobWFyay5fc3RhZ2UuYW5pbWF0ZSh0aGlzLnRpbWVEZWx0YSgpKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gTGF5ZXJpbmdUZXh0U3RhZ2UoZWxlbWVu
dCwgb3B0aW9ucykgeworICAgIFN0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Cisg
ICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQgPSB0aGlzLmVsZW1lbnQ7CisgICAgdGhpcy5fdGV4
dEVsZW1lbnRzID0gW107CisgICAgdGhpcy5fdGV4dEl0ZW1JbmRleCA9IDA7CisgICAgdGhpcy5f
Y29sb3JJbmRleCA9IDA7Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtcyA9IFsKKyAg
ICAiPGRpdiBpZD0naWRfMDAnIGNsYXNzPSd0ZXh0LWxheWVyJz4iLAorICAgICAgICAiPGgyIGlk
PSdpZF8wMSc+Q3VzdG9taXplZCBzdHlsZXM8L2gyPiIsCisgICAgICAgICI8cCBpZD0naWRfMDIn
PklmIHlvdSB3YW50IGZvcm1hdHRpbmcgY2hvaWNlcyB0aGF0IGFyZSBub3QgYXZhaWxhYmxlIGZy
b20gdGhlIGJ1aWx0LWluIHN0eWxlcywgUXVpY2sgU3R5bGUgc2V0cywgYW5kIHRoZW1lcywgeW91
IGNhbiBjcmVhdGUgY3VzdG9tIHN0eWxlcyB0byBzdWl0IHlvdXIgbmVlZHMuPC9wPiIsCisgICAg
ICAgICI8cCBpZD0naWRfMDMnPlRoZSBlYXNpZXN0IHdheSB0byBjcmVhdGUgYSBjdXN0b20gc3R5
bGUgaXMgdG8gbW9kaWZ5IGEgYnVpbHQtaW4gc3R5bGUgYW5kIHRoZW4gc2F2ZSBpdCBhcyBhIG5l
dyBzdHlsZS48L3A+IiwKKyAgICAgICAgIjxwIGlkPSdpZF8wNCc+Rm9yIGV4YW1wbGUsIHlvdSBt
aWdodCB3YW50IHRvIGZvcm1hdCBhIHBhcmFncmFwaCBvZiBxdW90ZWQgbWF0ZXJpYWwgd2l0aCBh
IGhhbGYtaW5jaCBpbmRlbnQgZnJvbSB0aGUgbGVmdCBhbmQgcmlnaHQgbWFyZ2lucywgc2luZ2xl
IHNwYWNlZC4gVGhlcmUgaXMgbm8gYnVpbHQtaW4gc3R5bGUgdG8gYWNjb21tb2RhdGUgdGhpcywg
YnV0IHlvdSBjYW4gY3JlYXRlIGEgY3VzdG9tIHN0eWxlIGJ5IGRvaW5nIHRoZSBmb2xsb3dpbmc6
PC9wPiIsCisgICAgICAgICI8b2wgdHlwZT0nMScgaWQ9J2lkXzA1Jz4iLAorICAgICAgICAgICAg
IjxsaSBpZD0naWRfMDYnPjxwPkNsaWNrIGluIHRoZSBwYXJhZ3JhcGggeW91IHdhbnQgdG8gZm9y
bWF0LjwvcD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8wNyc+PHA+T24gdGhlIDxi
PkhvbWU8L2I+IHRhYiwgY2xpY2sgdGhlIDxiPlBhcmFncmFwaDwvYj4gRGlhbG9nIEJveCBMYXVu
Y2hlci48L3A+PC9saT4iLAorICAgICAgICAgICAgIjxsaSBpZD0naWRfMDgnPjxwPkluIHRoZSA8
Yj5JbmRlbnRhdGlvbjwvYj4gc2VjdGlvbiwgdHlwZSA8YiBjbGFzcz0nb2NwTGl0ZXJhbCc+MC41
JzwvYj4gaW4gdGhlIDxiPkxlZnQ8L2I+IGFuZCA8Yj5SaWdodDwvYj4gYm94ZXMuPC9wPjwvbGk+
IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzA5Jz48cD5JbiB0aGUgPGI+U3BhY2luZzwvYj4g
c2VjdGlvbiwgaW4gdGhlIDxiPkxpbmUgc3BhY2luZzwvYj4gbGlzdCwgY2xpY2sgPGI+U2luZ2xl
PC9iPi48L3A+PC9saT4iLAorICAgICAgICAgICAgIjxsaSBpZD0naWRfMTAnPjxwPkNsaWNrIDxi
Pk9LPC9iPi48L3A+PC9saT4iLAorICAgICAgICAgICAgIjxsaSBpZD0naWRfMTEnPjxwPlJpZ2h0
LWNsaWNrIGluIHRoZSBwYXJhZ3JhcGgsIHBvaW50IHRvIDxiPlN0eWxlczwvYj4sIGFuZCB0aGVu
IGNsaWNrIDxiPlNhdmUgU2VsZWN0aW9uIGFzIGEgTmV3IFF1aWNrIFN0eWxlPC9iPi48L3A+PC9s
aT4iLAorICAgICAgICAgICAgIjxsaSBpZD0naWRfMTInPjxwPkluIHRoZSA8Yj5OYW1lPC9iPiBi
b3gsIHR5cGUgYSBuYW1lIGZvciB0aGUgc3R5bGUsIHN1Y2ggYXMgPGI+QmxvY2sgcXVvdGU8L2I+
LiA8L3A+PC9saT4iLAorICAgICAgICAgICAgIjxsaSBpZD0naWRfMTMnPjxwPklmIHlvdSB3YW50
IHRoZSBzdHlsZSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgZ2FsbGVyeSBvZiBzdHlsZXMgb24gdGhl
IDxiPkhvbWU8L2I+IHRhYiwgYW5kIGlmIHlvdSB3YW50IHRoZSBzdHlsZSB0byBiZSBhIGxpbmtl
ZCBzdHlsZSwgY2xpY2sgPGI+T0s8L2I+LjwvcD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlk
PSdpZF8xNCc+IiwKKyAgICAgICAgICAgICAgICAiPHAgaWQ9J2lkXzE1Jz5JZiB5b3UgZG9uJ3Qg
d2FudCB0aGUgc3R5bGUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGdhbGxlcnksIG9yIGlmIHlvdSB3
YW50IHRoZSBzdHlsZSB0byBiZSBlaXRoZXIgYSBwYXJhZ3JhcGggb3IgYSBjaGFyYWN0ZXIgc3R5
bGUsIGNsaWNrIDxiPk1vZGlmeTwvYj4gYW5kIGRvIG9uZSBvciBib3RoIG9mIHRoZSBmb2xsb3dp
bmc6PC9wPiIsCisgICAgICAgICAgICAgICAgIjx1bCBpZD0naWRfMTYnPiIsCisgICAgICAgICAg
ICAgICAgICAgICI8bGkgaWQ9J2lkXzE3Jz48cD5BdCB0aGUgYm90dG9tIG9mIHRoZSBkaWFsb2cg
Ym94LCBjbGVhciB0aGUgPGI+QWRkIHRvIFF1aWNrIFN0eWxlPC9iPiBsaXN0IGJveC48L3A+PC9s
aT4iLAorICAgICAgICAgICAgICAgICAgICAiPGxpIGlkPSdpZF8xOCc+PHA+SW4gdGhlIDxiPlN0
eWxlIHR5cGU8L2I+IGxpc3QsIGNsaWNrIDxiPlBhcmFncmFwaDwvYj4gb3IgPGI+Q2hhcmFjdGVy
PC9iPi48L3A+PC9saT4iLAorICAgICAgICAgICAgICAgICI8L3VsPiIsCisgICAgICAgICAgICAi
PC9saT4iLAorICAgICAgICAiPC9vbD4iLAorICAgICAgICAiPHAgaWQ9J2lkXzE5Jz5JZiB5b3Ug
c3dpdGNoIHRvIGEgZGlmZmVyZW50IFF1aWNrIFN0eWxlIHNldCwgeW91IG1heSBuZWVkIHRvIGFk
anVzdCB0aGUgc2V0dGluZ3Mgb2YgeW91ciBjdXN0b20gc3R5bGUuIEluIHRoZSBleGFtcGxlIGhl
cmUsIGlmIHlvdSBjcmVhdGUgdGhlIEJsb2NrIHF1b3RlIHN0eWxlIHdoaWxlIHRoZSBXb3JkIDIw
MDcgUXVpY2sgU3R5bGUgc2V0IGlzIGFwcGxpZWQsIGFuZCB0aGVuIHlvdSBzd2l0Y2ggdG8gdGhl
IFRyYWRpdGlvbmFsIFF1aWNrIFN0eWxlIHNldCwgeW91IGNhbiBjaGFuZ2UgdGhlIEJsb2NrIHF1
b3RlIHN0eWxlIHRvIHJlbW92ZSB0aGUgZmlyc3QtbGluZSBpbmRlbnRhdGlvbiB0aGF0IHRoZSBU
cmFkaXRpb25hbCBRdWljayBTdHlsZSBzZXQgaW50cm9kdWNlcy4gVG8gY2hhbmdlIGEgc3R5bGUs
IGRvIHRoZSBmb2xsb3dpbmc6PC9wPiIsCisgICAgICAgICI8b2wgdHlwZT0nMScgaWQ9J2lkXzIw
Jz4iLAorICAgICAgICAgICAgIjxsaSBpZD0naWRfMjEnPjxwPk9uIHRoZSA8Yj5Ib21lPC9iPiB0
YWIgaW4gdGhlIDxiPlN0eWxlczwvYj4gZ3JvdXAsIHJpZ2h0LWNsaWNrIDxiPkJsb2NrIHF1b3Rl
PC9iPiwgYW5kIHRoZW4gY2xpY2sgPGI+TW9kaWZ5PC9iPi48L3A+PC9saT4iLAorICAgICAgICAg
ICAgIjxsaSBpZD0naWRfMjInPjxwPkNsaWNrIDxiPkZvcm1hdDwvYj4sIGFuZCB0aGVuIGNsaWNr
IDxiPlBhcmFncmFwaDwvYj4uPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzIz
Jz48cD5JbiB0aGUgPGI+SW5kZW50YXRpb248L2I+IHNlY3Rpb24sIGluIHRoZSA8Yj5TcGVjaWFs
PC9iPiBsaXN0LCBjbGljayA8Yj4obm9uZSk8L2I+LjwvcD48L2xpPiIsCisgICAgICAgICI8L29s
PiIsCisgICAgICAgICI8cCBpZD0naWRfMjQnPlRoZSBtb3JlIGNoYXJhY3RlcmlzdGljcyB0aGF0
IHlvdSBzcGVjaWZ5IGZvciB0aGUgc3R5bGUsIHRoZSBsZXNzIHRoZSBzdHlsZSBpcyBhZmZlY3Rl
ZCBieSBzd2l0Y2hpbmcgUXVpY2sgU3R5bGUgc2V0cyBvciB0aGVtZXMuPC9wPiIsCisgICAgIjwv
ZGl2PiIKK107CisKK0xheWVyaW5nVGV4dFN0YWdlLnBhcnNlVGV4dEl0ZW0gPSBmdW5jdGlvbih0
ZXh0SXRlbSkgeworICAgIHZhciBwcmFzZVJlc3VsdCA9IHt9OworICAgIHByYXNlUmVzdWx0LnRh
Z1N0YXJ0ID0gdGV4dEl0ZW0ubWF0Y2goLzwoLio/KT4vZylbMF07CisgICAgdmFyIHNwYWNlSW5k
ZXggPSBwcmFzZVJlc3VsdC50YWdTdGFydC5pbmRleE9mKCIgIik7CisgICAgcHJhc2VSZXN1bHQu
bm9kZU5hbWUgPSBwcmFzZVJlc3VsdC50YWdTdGFydC5zdWJzdHJpbmcoMSwgc3BhY2VJbmRleCAh
PSAtMSA/IHNwYWNlSW5kZXggOiBwcmFzZVJlc3VsdC50YWdTdGFydC5sZW5ndGggLSAxKTsKKyAg
ICBwcmFzZVJlc3VsdC5hcmdzID0gc3BhY2VJbmRleCAhPSAtMSA/IHdpbmRvdy5iZW5jaG1hcmtD
bGllbnQucGFyc2VBcmd1bWVudHMocHJhc2VSZXN1bHQudGFnU3RhcnQuc3Vic3RyaW5nKHNwYWNl
SW5kZXggKyAxLCBwcmFzZVJlc3VsdC50YWdTdGFydC5sZW5ndGggLSAxKSkgOiB7fTsKKyAgICB2
YXIgdGFnRW5kID0gIjwvIiArIHByYXNlUmVzdWx0Lm5vZGVOYW1lICsgIj4iOyAgICAgICAgICAg
ICAgICAKKyAgICBwcmFzZVJlc3VsdC50YWdFbmQgPSB0ZXh0SXRlbS5lbmRzV2l0aCh0YWdFbmQp
ID8gdGFnRW5kIDogIiI7CisgICAgcmV0dXJuIHByYXNlUmVzdWx0OworfQorCitMYXllcmluZ1Rl
eHRTdGFnZS5pc09wZW5pbmdUZXh0SXRlbSA9IGZ1bmN0aW9uKHRleHRJdGVtKSB7CisgICAgcmV0
dXJuICFMYXllcmluZ1RleHRTdGFnZS5wYXJzZVRleHRJdGVtKHRleHRJdGVtKS50YWdFbmQubGVu
Z3RoOworfQorCitMYXllcmluZ1RleHRTdGFnZS5pc0Nsb3NpbmdUZXh0SXRlbSA9IGZ1bmN0aW9u
KHRleHRJdGVtKSB7CisgICAgcmV0dXJuIHRleHRJdGVtLmluZGV4T2YoIi8iKSA9PSArMTsKK30K
KworTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MgPSBMYXllcmluZ1RleHRTdGFnZS50
ZXh0SXRlbXMubWFwKGZ1bmN0aW9uKHRleHRJdGVtKXsKKyAgIHZhciB0ZXh0SXRlbUZsYWdzID0g
e307CisgICB0ZXh0SXRlbUZsYWdzLmlzT3BlbmluZyA9IExheWVyaW5nVGV4dFN0YWdlLmlzT3Bl
bmluZ1RleHRJdGVtKHRleHRJdGVtKTsKKyAgIHRleHRJdGVtRmxhZ3MuaXNDbG9zaW5nID0gTGF5
ZXJpbmdUZXh0U3RhZ2UuaXNDbG9zaW5nVGV4dEl0ZW0odGV4dEl0ZW0pOyAgIAorICAgcmV0dXJu
IHRleHRJdGVtRmxhZ3M7Cit9KTsKKworTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDb2xvcmFibGVUZXh0
SXRlbSA9IGZ1bmN0aW9uKHRleHRJdGVtRmxhZ3MpIHsKKyAgICByZXR1cm4gISh0ZXh0SXRlbUZs
YWdzLmlzT3BlbmluZyB8fCB0ZXh0SXRlbUZsYWdzLmlzQ2xvc2luZyk7Cit9CisKK0xheWVyaW5n
VGV4dFN0YWdlLmlzSW5zZXJ0YWJsZVRleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW1GbGFncykg
eworICAgIHJldHVybiAhdGV4dEl0ZW1GbGFncy5pc0Nsb3Npbmc7Cit9CisKK0xheWVyaW5nVGV4
dFN0YWdlLmNvbG9yYWJsZVRleHRJdGVtcyA9IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0Zs
YWdzLmZpbHRlcihmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKSB7CisgICAgcmV0dXJuIExheWVyaW5n
VGV4dFN0YWdlLmlzQ29sb3JhYmxlVGV4dEl0ZW0odGV4dEl0ZW1GbGFncyk7Cit9KS5sZW5ndGg7
CisKK0xheWVyaW5nVGV4dFN0YWdlLmluc2VydGFibGVUZXh0SXRlbXMgPSBMYXllcmluZ1RleHRT
dGFnZS50ZXh0SXRlbXNGbGFncy5maWx0ZXIoZnVuY3Rpb24odGV4dEl0ZW1GbGFncykgeworICAg
IHJldHVybiBMYXllcmluZ1RleHRTdGFnZS5pc0luc2VydGFibGVUZXh0SXRlbSh0ZXh0SXRlbUZs
YWdzKTsKK30pLmxlbmd0aDsKKworTGF5ZXJpbmdUZXh0U3RhZ2UuY29sb3JJbmRleFRvVGV4dEVs
ZW1lbnRJbmRleCA9IGZ1bmN0aW9uKGNvbG9ySW5kZXgpIHsKKyAgICB2YXIgdGV4dEVsZW1lbnRJ
bmRleCA9IDA7CisgICAgdmFyIGluZGV4ID0gMDsKKyAgICAKKyAgICBmb3IgKHZhciB0ZXh0SXRl
bUluZGV4ID0gMDsgdGV4dEl0ZW1JbmRleCA8IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0Zs
YWdzLmxlbmd0aDsgKyt0ZXh0SXRlbUluZGV4KSB7CisgICAgICAgIGlmIChMYXllcmluZ1RleHRT
dGFnZS5pc0NvbG9yYWJsZVRleHRJdGVtKExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdz
W3RleHRJdGVtSW5kZXhdKSkgeworICAgICAgICAgICAgaWYgKCsraW5kZXggPiBjb2xvckluZGV4
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChMYXllcmlu
Z1RleHRTdGFnZS5pc0luc2VydGFibGVUZXh0SXRlbShMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRl
bXNGbGFnc1t0ZXh0SXRlbUluZGV4XSkpCisgICAgICAgICAgICArK3RleHRFbGVtZW50SW5kZXg7
CisgICAgfQorICAgIAorICAgIHJldHVybiB0ZXh0RWxlbWVudEluZGV4OworfQorCitMYXllcmlu
Z1RleHRTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlLnByb3RvdHlwZSk7CitM
YXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMYXllcmluZ1RleHRTdGFn
ZTsKKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9uZXh0VGV4dEl0ZW0gPSBmdW5jdGlv
bih0ZXh0SXRlbUZsYWdzKSB7CisgICAgdmFyIHRleHRJdGVtID0gTGF5ZXJpbmdUZXh0U3RhZ2Uu
dGV4dEl0ZW1zW3RoaXMuX3RleHRJdGVtSW5kZXhdOworICAgIHdpbmRvdy5iZW5jaG1hcmtDbGll
bnQuZXh0ZW5kT2JqZWN0KHRleHRJdGVtRmxhZ3MsIExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVt
c0ZsYWdzW3RoaXMuX3RleHRJdGVtSW5kZXhdKTsKKyAgICB0aGlzLl90ZXh0SXRlbUluZGV4ID0g
KHRoaXMuX3RleHRJdGVtSW5kZXggKyAxKSAlIExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtcy5s
ZW5ndGg7CisgICAgcmV0dXJuIHRleHRJdGVtOworfQorCitMYXllcmluZ1RleHRTdGFnZS5wcm90
b3R5cGUuX3ByZXZpb3VzVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKSB7CisgICAg
dGhpcy5fdGV4dEl0ZW1JbmRleCA9ICh0aGlzLl90ZXh0SXRlbUluZGV4ICsgTGF5ZXJpbmdUZXh0
U3RhZ2UudGV4dEl0ZW1zLmxlbmd0aCAtIDEpICUgTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1z
Lmxlbmd0aDsKKyAgICB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmV4dGVuZE9iamVjdCh0ZXh0SXRl
bUZsYWdzLCBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0aGlzLl90ZXh0SXRlbUlu
ZGV4XSk7ICAgIAorICAgIHJldHVybiBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNbdGhpcy5f
dGV4dEl0ZW1JbmRleF07Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fcHVzaFRl
eHRFbGVtZW50ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHRleHRJdGVtRmxhZ3MgPSB7fTsKKyAg
ICB2YXIgdGV4dEl0ZW0gPSB0aGlzLl9uZXh0VGV4dEl0ZW0odGV4dEl0ZW1GbGFncyk7CisgICAg
Zm9yICggOyB0ZXh0SXRlbUZsYWdzLmlzQ2xvc2luZzsgdGV4dEl0ZW0gPSB0aGlzLl9uZXh0VGV4
dEl0ZW0odGV4dEl0ZW1GbGFncykpCisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0g
dGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQucGFyZW50Tm9kZTsKKworICAgIHZhciBwcmFzZVJlc3Vs
dCA9IExheWVyaW5nVGV4dFN0YWdlLnBhcnNlVGV4dEl0ZW0odGV4dEl0ZW0pOworICAgIHRleHRJ
dGVtID0gdGV4dEl0ZW0uc3Vic3RyaW5nKHByYXNlUmVzdWx0LnRhZ1N0YXJ0Lmxlbmd0aCwgdGV4
dEl0ZW0ubGVuZ3RoIC0gcHJhc2VSZXN1bHQudGFnRW5kLmxlbmd0aCk7CisKKyAgICB2YXIgdGV4
dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHByYXNlUmVzdWx0Lm5vZGVOYW1lKTsK
KworICAgIGZvciAodmFyIGF0dHJuYW1lIGluIHByYXNlUmVzdWx0LmFyZ3MpCisgICAgICAgIHRl
eHRFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRybmFtZSwgcHJhc2VSZXN1bHQuYXJnc1thdHRybmFt
ZV0pOworCisgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQuYXBwZW5kQ2hpbGQodGV4dEVsZW1l
bnQpOworICAgIAorICAgIGlmICghcHJhc2VSZXN1bHQudGFnRW5kLmxlbmd0aCkKKyAgICAgICAg
dGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQgPSB0ZXh0RWxlbWVudDsKKworICAgIHRleHRFbGVtZW50
LmlubmVySFRNTCA9IHRleHRJdGVtOworICAgIAorICAgIHRoaXMuX3RleHRFbGVtZW50cy5wdXNo
KHRleHRFbGVtZW50KTsKKyAgICByZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsKK30K
KworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9wb3BUZXh0RWxlbWVudCA9IGZ1bmN0aW9u
KCkgeworICAgIHZhciB0ZXh0SXRlbUZsYWdzID0ge307ICAgIAorICAgIHZhciB0ZXh0SXRlbSA9
IHRoaXMuX3ByZXZpb3VzVGV4dEl0ZW0odGV4dEl0ZW1GbGFncyk7CisgICAgZm9yICggOyB0ZXh0
SXRlbUZsYWdzLmlzQ2xvc2luZzsgdGV4dEl0ZW0gPSB0aGlzLl9wcmV2aW91c1RleHRJdGVtKHRl
eHRJdGVtRmxhZ3MpKQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudCA9IHRoaXMuX3Rl
eHRFbGVtZW50UGFyZW50Lmxhc3RDaGlsZDsKKworICAgIGlmICh0ZXh0SXRlbUZsYWdzLmlzT3Bl
bmluZykKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQgPSB0aGlzLl90ZXh0RWxlbWVu
dFBhcmVudC5wYXJlbnROb2RlOworCisgICAgdmFyIHRleHRFbGVtZW50ID0gdGhpcy5fdGV4dEVs
ZW1lbnRzW3RoaXMuX3RleHRFbGVtZW50cy5sZW5ndGggLSAxXTsKKyAgICAKKyAgICBpZiAodGV4
dEVsZW1lbnQgJiYgdGV4dEVsZW1lbnQucGFyZW50Tm9kZSAmJiB0ZXh0RWxlbWVudC5wYXJlbnRO
b2RlID09IHRoaXMuX3RleHRFbGVtZW50UGFyZW50KQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVu
dFBhcmVudC5yZW1vdmVDaGlsZCh0ZXh0RWxlbWVudCk7CisKKyAgICB0aGlzLl90ZXh0RWxlbWVu
dHMucG9wKCk7CisgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7Cit9CisKK0xh
eWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fY29sb3JUZXh0SXRlbSA9IGZ1bmN0aW9uKGNvbG9y
KSB7CisgICAgdmFyIHRleHRFbGVtZW50SW5kZXggPSBMYXllcmluZ1RleHRTdGFnZS5jb2xvcklu
ZGV4VG9UZXh0RWxlbWVudEluZGV4KHRoaXMuX2NvbG9ySW5kZXgpOworICAgIGZvciAoIDsgdGV4
dEVsZW1lbnRJbmRleCA8IHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7IHRleHRFbGVtZW50SW5k
ZXggKz0gTGF5ZXJpbmdUZXh0U3RhZ2UuaW5zZXJ0YWJsZVRleHRJdGVtcykKKyAgICAgICAgdGhp
cy5fdGV4dEVsZW1lbnRzW3RleHRFbGVtZW50SW5kZXhdLnN0eWxlLmJhY2tncm91bmRDb2xvciA9
IGNvbG9yOworfQorCitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0
aW9uKHRpbWVEZWx0YSkgeworICAgIHRoaXMuX2NvbG9yVGV4dEl0ZW0oInRyYW5zcGFyZW50Iik7
CisgICAgdGhpcy5fY29sb3JJbmRleCA9ICh0aGlzLl9jb2xvckluZGV4ICsgMSkgJSBMYXllcmlu
Z1RleHRTdGFnZS5jb2xvcmFibGVUZXh0SXRlbXM7CisgICAgdGhpcy5fY29sb3JUZXh0SXRlbSgi
WWVsbG93R3JlZW4iKTsKKyAgICAKKyAgICB2YXIgYmxhY2tUZXh0RWxlbWVudHMgPSBNYXRoLm1p
bih0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoLCBMYXllcmluZ1RleHRTdGFnZS5pbnNlcnRhYmxl
VGV4dEl0ZW1zKTsKKyAgICB2YXIgaSA9IDA7CisgICAgZm9yICggOyBpIDwgdGhpcy5fdGV4dEVs
ZW1lbnRzLmxlbmd0aCAtIGJsYWNrVGV4dEVsZW1lbnRzOyArK2kpCisgICAgICAgIHRoaXMuX3Rl
eHRFbGVtZW50c1tpXS5zdHlsZS5jb2xvciA9ICJ3aGl0ZSI7CisKKyAgICBmb3IgKCA7IGkgPCB0
aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOyArK2kpCisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50
c1tpXS5zdHlsZS5jb2xvciA9ICJibGFjayI7Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLnByb3Rv
dHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQpIHsKKyAgICBjb3VudCA9IGNvdW50ID4gMCA/IE1h
dGguZmxvb3IoY291bnQpIDogTWF0aC5jZWlsKGNvdW50KTsKKworICAgIGlmIChjb3VudCA9PSAw
KQorICAgICAgICByZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsKKworICAgIGlmIChj
b3VudCA+IDApIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAg
ICAgICAgICAgdGhpcy5fcHVzaFRleHRFbGVtZW50KCk7CisgICAgICAgIHJldHVybiB0aGlzLl90
ZXh0RWxlbWVudHMubGVuZ3RoOworICAgIH0KKyAgICAgICAgCisgICAgY291bnQgPSBNYXRoLm1p
bigtY291bnQsIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGgpOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgdGhpcy5fcG9wVGV4dEVsZW1lbnQoKTsKKworICAg
IHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOworfQorCitmdW5jdGlvbiBMYXllcmlu
Z1RleHRCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0JhcikgeworICAgIEJlbmNobWFyay5jYWxsKHRoaXMsIG9wdGlvbnMpOworICAgIAorICAgIHZh
ciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YWdlIik7CisgICAgZWxlbWVu
dC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCk7CisgICAg
ZWxlbWVudC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0
KTsKKyAgICAKKyAgICB0aGlzLl9zdGFnZSA9IHRoaXMuY3JlYXRlU3RhZ2UoZWxlbWVudCk7Cisg
ICAgdGhpcy5fYW5pbWF0b3IgPSB0aGlzLmNyZWF0ZUFuaW1hdG9yKCk7CisgICAgdGhpcy5fc3Vp
dGUgPSBzdWl0ZTsKKyAgICB0aGlzLl90ZXN0ID0gdGVzdDsKKyAgICB0aGlzLl9yZWNvcmRUYWJs
ZSA9IHJlY29yZFRhYmxlOworICAgIHRoaXMuX3Byb2dyZXNzQmFyID0gcHJvZ3Jlc3NCYXI7Cit9
CisKK0xheWVyaW5nVGV4dEJlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJlbmNo
bWFyay5wcm90b3R5cGUpOworTGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IExheWVyaW5nVGV4dEJlbmNobWFyazsKKworTGF5ZXJpbmdUZXh0QmVuY2htYXJrLnBy
b3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICByZXR1cm4gbmV3
IExheWVyaW5nVGV4dFN0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCitMYXllcmlu
Z1RleHRCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKSB7Cisg
ICAgcmV0dXJuIG5ldyBMYXllcmluZ1RleHRBbmltYXRvcih0aGlzKTsKK30KKworTGF5ZXJpbmdU
ZXh0QmVuY2htYXJrLnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQpIHsKKyAgICByZXR1
cm4gdGhpcy5fc3RhZ2UudHVuZShjb3VudCk7Cit9CisKK0xheWVyaW5nVGV4dEJlbmNobWFyay5w
cm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5fc3RhZ2UuY2xl
YXIoKTsKK30KKworTGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZS5zaG93UmVzdWx0cyA9
IGZ1bmN0aW9uKG1lc3NhZ2UsIHByb2dyZXNzKSB7CisgICAgaWYgKCF0aGlzLl9yZWNvcmRUYWJs
ZSB8fCAhdGhpcy5fcHJvZ3Jlc3NCYXIgfHwgIXRoaXMuX3N1aXRlIHx8ICF0aGlzLl90ZXN0KQor
ICAgICAgICByZXR1cm47CisKKyAgICB0aGlzLl9yZWNvcmRUYWJsZS5zaG93UmVjb3JkKHRoaXMu
X3N1aXRlLCB0aGlzLl90ZXN0LCB0aGlzLl9zYW1wbGVyLCBtZXNzYWdlKTsKKyAgICB0aGlzLl9w
cm9ncmVzc0Jhci5zZXRQb3MocHJvZ3Jlc3MpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50
LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpIHsKKyAgICB3aW5kb3cuYmVuY2htYXJrID0gbmV3IExheWVyaW5nVGV4dEJlbmNo
bWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30K
SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlh
bmcucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5
IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcucG5nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcucG5nCShy
ZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNl
cy95aW4teWFuZy5wbmcJKHdvcmtpbmcgY29weSkKClByb3BlcnR5IGNoYW5nZXMgb246IFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcucG5nCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAjIworaW1hZ2UvcG5nClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKCmlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFHUUFB
QUJrQ0FZQUFBQnc0cFZVQUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk4KQUFCNkpnQUFn
SVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQUNYQklXWE1BQUFzVEFB
QUxFd0VBbXB3WQpBQUFDQkdsVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEhnNmVH
MXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1CmN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVdF
MVFJRU52Y21VZ05TNDBMakFpUGdvZ0lDQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTkKSW1oMGRI
QTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGdv
Z0lDQWdJQ0E4Y21SbQpPa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlnb2dJQ0FnSUNB
Z0lDQWdJQ0I0Yld4dWN6cGxlR2xtUFNKb2RIUndPaTh2CmJuTXVZV1J2WW1VdVkyOXRMMlY0YVdZ
dk1TNHdMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02ZEdsbVpqMGlhSFIwY0RvdkwyNXoKTG1G
a2IySmxMbU52YlM5MGFXWm1MekV1TUM4aVBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmxF
YVcxbGJuTnBiMjQrTVRFdwpQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0Fn
SUNBZ1BHVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQakV3Ck5Ud3ZaWGhwWmpwUWFYaGxiRmhF
YVcxbGJuTnBiMjQrQ2lBZ0lDQWdJQ0FnSUR4MGFXWm1Pazl5YVdWdWRHRjBhVzl1UGpFOEwzUnAK
Wm1ZNlQzSnBaVzUwWVhScGIyNCtDaUFnSUNBZ0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBnb2dJ
Q0E4TDNKa1pqcFNSRVkrQ2p3dgplRHA0YlhCdFpYUmhQZ29VbkEyK0FBQU5XRWxFUVZSNEFlMWRm
V3dVMVJZL3U2VkNXMHFyaUNRa1VDRlJRQUpJQ0FoUm9jVEVZZzBFClZFVDhDeEFTRVNJeHdoOGFC
VEhCcURVR0ErODlEV0Q0eHc5UWkwRmpTRVN0aVpGV3FSSENxNkRRQkpOWHFueklSNHJZVXM0N3Z6
TU0KSFliZHptNzM3bnpzOWlTek03c3plei9PYis0OTU1NTc3emt4Q2preDgzZ3A0aHc1cHRLcFU4
UG8yTEZCMU5KU1FpZE9GTks1Y3dWMAo0UUpSZTN0TXEzSEREVXpGeFVRREJuVFNvRUVkTkdSSUcx
VlVuS0NCQTMrWCszdmwrRFFXaSszWFowUDZZVlVrUklVVEFHWktjWmJUCm9VTVRxYjcrRm1wc0xL
Q2ZmeWJhTDN4c2J5ZGl0czZwbERrZUo0cEpGUXNMaVc2N2plaXV1NGp1dnJ1VHBrejVrMGFOMmlk
Si9Gc0EKMnAxS1VubjFqSUN3bE52YTl2UDI3ZTI4YUJIenNHSE13NGN6UC9nZzg3MzNNaGNYQXdZ
elIwa0pjLy8rekFNSE1zK2J4NW9uOHBZeQo1QlhUM1pVVkJveVJZdzkvOGtrN3o1L1AzS2NQYzNV
MTg2Wk56Rjk5eGJ4NHNSa0F2SUFzSzJPT3g1a2ZlSUM1dHJaZHl5UmxjNWMzClo3OUxoZWZ3OGVO
SGVkMjZ5OW9TS2l1WjMzbUgrZlJwdVNWVVU4TmNVT0FQR0c2d3lzdXRsb095b1l4UzFsd0dZallm
T2ZJL1hyR0MKT1JaamZ1b3A1cDkrVWd6MG83V1ZlZGFzWUlCd0ExTlVaSlZqeVJMV01qUFB6aGxn
aE5sRCtlVEpKbjdtR2VhK2ZabWZmNTRaekhkUwpRd1B6aUJIaEFNTUpEbG9xRHJ3OHFJUFVKZExB
U0FXMjhJWU5uVHhnQVBQS2xkY0RBVkMrK1lhNXREUjhZRGlCd1l2VXJ4OUxYUzZoClRwRURSUW85
Zyt2cno2cUdCRUh0N0pyazVsVkN5d2c3R0U1Z29BQ01IY3RhTjZsakpJQVJabS9nOWVzdnEyb0pZ
WjJNMEcyRnNadHkKQXBEc3VyQ1ErWlZYTHFPdW9RVkZDbGNpbXNsL1ZUQ2pWVFEzSjRQQytqMHNB
andaMDcxK1IydVpObzIxemxMM1VBRWpISjdBWDMvZApwbXJzMnJYZEE0RzdVRzI5S2h5Vit4aGdv
dTdDZzFDQUlnV3A0bmZmN1ZBTmF2dDJzTHQ3UXNzSmFweVJMWkJSSC9CQWVCRW9LRktBCmhmejY2
NTFxNW9DQVRvWDhHb0ZuaS9uSjBvVTVwcWFtRXp3SkJCVEplRFcvOU5KbHZ2Tk9iM2xoQTNYd1lP
NTBWWW1BZ1Z6QktGOTQKNHlzb2VBc1VqTW1URTQ4dGJBRGNaNHpTRTFVa2wzN3JBc1dmbGlJOHJ0
SnVDaTNEUGVKMkErRDhma25HVkZFYWMyVHlrZ0FVcS92Swpya3dSL2s1UTRRWFR1SmRhNndRRDF6
dDI1SDdyY0lJSW1iSnRHd1I5ZHJRdlNiaEUxVHVZRVZJVjRBRENwbHdWNWs0UTNOZlF2aXlWCjJQ
dzRoVnRhbW5TY2tZcHFhNFBnUEVkMVZPNW1jcnJmTVU2UkFiTlJJUzk4M2FBajhGUUdmVTRRN0d2
SW1uUXJrc3J6anovTy9PMjMKekJjdldnZXU4VnNxLy9YekdZem9UWmxaSktFWmFwdUNPYVNuQkl1
dWFRYTg4VWJ5MHVDZTZmd3lTUTlDM3JKOVpXNlFWTXNtQkZTNgpRdHpKcm0zYnpESUlyY0NMd3Ra
U1lKQnNhRGliVWRjbGRkNmlKdlR1ckxaZWpNRjkwN1lyZEUxZWhHY3llYXV6OGQ5eDQxRHFuczJu
CnlCK0g2dVJTSmwyVnpiUjE2OHd5QnpMRGkvQk1OcGlhU1pyb3VqQmgxNU9aUjUyeXhFeGZzc2ts
TDRZNDcvY0MwdlZ5WU9ieDFLbW0KWkYyWHJDUzdub1NYczJuOSt0RzBhQkhSQkFQakdxd21ORWtO
RGQ2cHBmS01keXJtbndBMEw3NDRXbm1jYXVxNjBnSUR3SFJNSTg0Vwo0Yjd1RmVwZExRUmRIZ2FN
c2dJbkpUeUVsM04wcVE1V2g1aWlmRmQ3M1hJSGdHQ0pVU3Jydm1SVTJhenJwa3kxRG1TYjd3TkRO
eUQyCjk5YldvOTIyRW1IZEdMWG5ZeDJTYWNwWDA0bk5mUGNaaS9GZWZobHpKOG1YcmNyTlBXcXZN
cUZadVFITlIrT2lHd1QzZDlpNWhPZk8KVm5LdGxsVmJPNDFHakRDaldUbHp3ZlZNN0RMb3BXczQw
TmxKdEhQbk5PZHZWd0VScEpiU2poMkZ0R0NCODc2NTY0Y2VJaW90TlpkZQpMcVIwNWd6UmxpMWlV
MG13RlVMM1oyQkxnTDBLSFkzSk5PWERGSzY3Vy9MNkRvM3J3b1g5OXZ0MXRZWFE1NStQcHZ2dko3
cnhSdnVlCitmT1RUNXBQTStvcDl1OVB5dnNyOVZCQXBDRlUwKzdkaFZSZG5kM3FqUkdGWXZIaTdP
WVJ0ZFRQaWdINDQ0L1JiWFV4WDc1OHB0clYKNGNPbU82bnIwOHZGaFhKZTNaTFhmVXZiK2d6dmt0
VmxZWU5sUVFIUjdiZG4vLzBhUHB6bzFWZXpuMCtVY3Zqbkg2TERoeWVpeUJZZwoyTzA2ZGFwL1ZW
aTFpbWpXTFAveUMzdE8yQ2tNRElSa3Q2UHNBOGZXNDBtVC9DMzI1czJrWXg1L2N3MW5idWZQRTMz
M25haGJQQjR0ClpLN3VBUitQL2ZrKzB1REJSQjk4MERzMnNWbit3dys0bWd0QXB0QXZ2eERkY1lk
OXk3L3o1TWxFdTNiMWdnS09OemZqYzBwYzNWVmcKQ0k4M05naXFyQ1RhSStZY21HenltVG82aUU2
ZkhoWlgzeUVWRmNHeUFpM2wrKy96VzlEMzYwZkFJcTZPWElZTUNSWVE1STRXaXU2cgpwb1pVQlEr
K1JQNlhRSnpxeE5XcnppMnFjZmxmZ0VRNVFpWCs3YmY4RzlGRGJKdzhXUmhYRjBkbFpZbFlFOXh2
R0R4dTNVcDA4Q0RSCmloWDVJZlFoUTg2ZUxZaXJ2NmtTODR1emphQUoyOWZHalVSLy9VVXlOV0Mx
bWx3Vi9wY3VFYkRvbzg2LzRFOHF6QVN6enJ4NTFvRnkKL3ZFSHFhcCs3QmhKbDZzVm9iVnJ3MXdE
NzdLaHl4SkhiSDI4bnd6aEUxQUEzR3I2bWpYWEZ4UzZmVjBkaVNXYnFMYVdDSlVPT2NVSgpidkhR
ZitVaW9YdUR1Ui9kSGJvOWRIL29Cc05JNkFVRWk3ajZLR3hyQzJNUnpaWUowOGRRRUtBb1FHR0E0
aEFtNmlPZGxhendqS3ZEClNNenQ1aE9oMVVDMWhvb2RGb0ljTHl2cmpLdjNUZ2pHZkNOMEVSaUVZ
akRxbGtkQjhBTGx1Zm5tanJpNlVtMXBDYUlJNGNnVDh6SXcKMjhCOEV6U0pXOXU0K3JXRitwalBC
T0VQQTJkbFpYQmN1SGlSZ0VWY25ReWp1VUMzejJlQzBFZjNGVlJMZ1F5NTZhYmY0NEpCUFkwZQpU
ZFRVbE05d1dIVUhLSmcwQzBLbVdCYUl2UUJrSjJHMkVKNmplOG1hbDhIMHN0OWt0Y3hQNCtvTGZl
TEVUdnJ4UjcrTEVONzhJT2o5ClZJblJNdSs1cHhOWW9JWEl4S0g0UXQrN043d01DcUprV0tyazEr
QVIrNnVBZ1pBRnlLaFJqV3JuK2ZYWElLb2V6anloNkx6d2dqOWwKNjl1WGFPUklCQWU0QWdqUnYr
aSsrNGkrL05LZkFrUWxGNHpvL2JCOWdmY1NxUUVmMmtJMFpNUE1tUjMweFJmNHJaZWNITWoyQW5G
TQpEajd5U0ljZE5pTm01NDN0Q0dKTEdVZC9TbGVXelJYd2RvWlJPV01SRy9pUkxkTTl1c2J6NXcv
RWlvdEYxZTNxc21CcDNFUVBQMHowCjBVZFJZWlUvNVlRR2hNMUcyYUtxS3FLaW9rMTI4cFpRbDIv
U1pEYlQvUGtkT2pDeTcvYWVMUTVrYXp0ZWVUblJraVhvcmhJUGZHUnQKYWZZMmZWNi9NU0U2dnh3
OWV1M0dmNi90QmFuZTk5ejBTYlNTbm5pQ1pkOWJOTnJHKys4VFRaOU9oRVZtT0hDTjMweFROaFpX
RkJVSgp0MWZLQUVSNDNoMWx4WEZBTnRyQ3M4OG1mMnR4enpTbCt0YW44NXlYNHdBQUpmVXc3MXJE
TkhQZWV5ODVHRFpEOEl4SnN0TTFjVTdICnRZYUNndEJFTXVGdXpQbU1TY1lnTGZndzlHS001ZWZR
WE01ZSthVnpQeDNuTTFkYXlXd05VWVNvT0dFa2VDcnlZZ0NlTVVsZSthVjYKSCtWYXZod2xTeSt1
bFRvd2d3ZTBiTGpaeUpSUlVRYWtKdzdNMEVwa0pyR0t4TEc4YndZMnpUVEZEMFRzOUtKVW52Rkt3
L1I5bUVsZQplKzJ5ekF6S2FMQUhKQyt5R1NlWW1iWUk5LytqS3RRemNZSnA0MmZFVGF5Ym9TYStS
MDN0TmVFbUZxQUk3MmFvRTJBVDNrbE5BT0ZNCkF5MEYyaFJrQ2c1Y20xWjM3ZnhTRmRxSm5qUHBT
UGtLS0ptNUdyY3JGZFZ6cHFZVFN3VTNHOUZObzVFaGluTlBuZkZIRlF5VWUrdFcKYnpVN1VjdkFi
N0JYdGJhYWRjWi9wWlZZNFNvd1lLeXZqeko3MHk4N3dud25ZM2gzdjJNQVdGZUhDRzRsNEtGeGtv
U3RnQzYzM3NxTQpacHdQZE81Y3o2TEtaVHVnaTQydVlGQ2w0WHpTRFhrVVZmQTJia3kvZFVDSSt4
SHl5QUhLUXZWZU9tbFNlTzFkcGw2QU1XUFNBd1JnCldKSGFGdHI4OHVVczlWMnRHYU9sNUdyM2xh
NHc3d0pqdFM4Z3VETVJVQlpxMDRSTXlUVkJqNmh5Q0g3V25kQjIzZ3M2c0tRTmpvQlMKcGRISW9I
MTkrS0dwamlMNGRGYXRTaDBNYUZOV1JMYWUyYWhzWnBvNkMvZXM0TVFWRmN4cjFnVFB6RXhMc0d0
WDZtQmduR0dwdGhOTQo4ZE5JT3NLREVvM2tockRjTUxORVZhNmczSU1IZXdNQ2VZRVIrUEhqVGFp
N0VTWm1JeEVwM0FhMWZaV1VNR2NhS2luVE56M2QvMlBNCmdYQ3lUdG1RNkRvS0FlNmQ0QW9mWmlB
QWxyNUJhQzJOamVteXh2L25BVVpsWmZkZ29GWEFoSTY2U1IyZGRZN0V0UlI2aThaY1FrV2UKZmpx
OFl4WjBVOTIxREZpU01kUDMxbHVkcUZNa21KK3NrRktCb1lpNXBIUDAwTVNlZXk1Y3dFQ0FKNU1a
MEo1d1lBNGNkZWhKTUs5awpqQW42ZDZuTWJBMmxCUC92c1JqenNtWEJkbVVZWnlSVGJSSGJBN0lE
VVhDd0FpZmRCUWxCTXp1ZC9LVnljOFFjM2F6QlRLQW1UNS9PCi9QYmJlQVBsbGsrRUVYaWlRVjk1
dVdVdVI2QVZsREdWa0VUcFZEN016MHBseFVna2E0bHJhOXY1c2NlWW9ibEFBWUF4NzlBaDg4aEEK
YUNOdHQyMEs4ZzNkRXZKR1dWQ203cUxlaEptcHBzb21ERmlLa0EwU2M3MmRFWWtITFFmbW1BVUxt
Tjk4RXlHd21jK2NrY2ZTSkFocgp0QWJNWjREcDZJWktTNWxoNXNDQTd0RkhFZWU5WGZOT0ZNUERW
QVhUU09mcWhwMDAvcFBWUjRYbDFaTEJNdldGRHZmYisvWVYwSUVECjFqNTZlRjJEQjFWc014czds
bWpvVUd5MnR4WmExOVVSL2YwM1hLMlNPUFlrT25LRWRQTVJQQ1JnVXo0V1RHUHJzZXgyMVEyV0kw
YzIKU2o3L2thMEFvZG8yRmpwQTNHZ0xRTmhaTkZlT0tmQnJxMjV0eFhzbkhFYkNSNkc2S0JSUGJQ
by8wZUxVM1pSNDFZRWpGL1hqSXU0cQo0Q0ZCN3RmTHNWTUFDUFdHL1A4RFJucS9hTTZOOHEwQUFB
QUFTVVZPUks1Q1lJST0KCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261666</attachid>
            <date>2015-09-21 11:26:29 -0700</date>
            <delta_ts>2015-09-22 17:27:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149053-20150921112614.patch</filename>
            <type>text/plain</type>
            <size>148404</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAwMDQpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1NyBAQAorMjAxNS0wOS0xOCAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdv
cmsgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQuIE1hbnkgcGFydHMgb2YgdGhlIGNvZGUgd2Fz
IGNvcGllZAorICAgICAgICBmcm9tIHNwZWVkb21ldGVyIGJlbmNobWFyay4gVGhlIGJlbmNobWFy
ayBydW5uZXIncyBuYW1lIGlzICJhbmltb21ldGVyLmh0bWwiCisgICAgICAgIGJ1dCB0aGlzIGlz
IG5vdCBmaW5hbCB5ZXQgYW5kIG1vc3QgcHJvYmFibHkgaXMgZ29pbmcgdG8gY2hhbmdlLiBUaGUg
Y3NzIAorICAgICAgICBhbmQgdGhlIHBhZ2UgbGF5b3V0cyB3aWxsIGJlIHJldmlzZWQgZm9yIGJl
dHRlciBsb29raW5nLgorCisgICAgICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgYmVuY2htYXJrIGlz
IHRvIG1lYXN1cmUgdGhlIGFuaW1hdGlvbiBwZXJmb3JtYW5jZSBvZgorICAgICAgICBhIHdlYiBi
cm93c2VyIGluIGFjY3VyYXRlIHdheSBidXQgYXQgZmluZSBncmFudWxhciBsZXZlbC4gVGhlIGRl
c2lnbiBpcworICAgICAgICB0byBoYXZlIHNlcGFyYXRlIGFuaW1hdGlvbnM7IGVhY2ggc3RyZXNz
IHRlc3RzIG9uZSBvZiB0aGUgZ3JhcGhpY3MgcHJpbWl0aXZlcworICAgICAgICBzbyB3ZSBjYW4g
aWRlbnRpZnkgYnVncyBhIGxvdCBlYXNpZXIuCisKKyAgICAgICAgSW5zdGVhZCBvZiBtZWFzdXJp
bmcgdGhlIEZQUyBvZiB0aGUgYW5pbWF0aW9uLCB0aGUgImFuaW1vbWV0ZXIiIGJlbmNobWFyawor
ICAgICAgICB0cmllcyB0byBtZWFzdXJlIHRoZSB0ZXN0IGNvbXBsZXhpdHkgd2hlbiByZW5kZXJp
bmcgYXQgYSBzZXQtcG9pbnQgRlBTIHdoaWNoCisgICAgICAgIHNob3VsZCBiZSBsZXNzIHRoYW4g
NjAgRlBTLiBUaGUgImFuaW1vbWV0ZXIiIHN0YXlzIGF0IHRoZSBzZXQtcG9pbnQgRlBTCisgICAg
ICAgIGJ5IHVzaW5nIGEgY2xvc2VkLWxvb3AgY29udHJvbCBzeXN0ZW0gUElEIGZ1bmN0aW9uLiBU
aGUgZ2FpbiBvZiB0aGUgc3lzdGVtCisgICAgICAgIGlzIHBhc3NlZCBhcyBhIHBhcmFtZXRlciB3
aGVuIHJ1bm5pbmcgdGhlIHRlc3QuIE1lYXN1cmluZyB0aGUgRlBTIGZhaXRoZnVsbHkKKyAgICAg
ICAgcmVzdWx0cyBpbiB2ZXJ5IGZsdWN0dWF0aW5nIHZhbHVlcy4gU28gYSBLYWxtYW4gZmlsdGVy
IGlzIHVzZWQgdG8gZ2l2ZSBhCisgICAgICAgIGJldHRlciBlc3RpbWF0ZSBmb3IgdGhlIGN1cnJl
bnQgRlBTLgorCisgICAgICAgIFRoZSBhbmltYXRpb24gb2YgdGhlIHRlc3RzIGlzIGRvbmUgbWFu
dWFsbHkuIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGlzCisgICAgICAgIGNhbGxlZCB3aXRoIGEg
Y2FsbGJhY2suIEluc2lkZSB0aGlzIGNhbGxiYWNrLCB0aGUgdGVzdCBpcyBhbmltYXRpbmcgYnkK
KyAgICAgICAgY2hhbmdpbmcgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZWxlbWVudHMgaW5zaWRlIHRo
ZSBwYWdlLiBUaGUgdGVzdCBjb21wbGV4aXR5CisgICAgICAgIG1heSBjaGFuZ2UgYWxzbyBpZiB0
aGUgY3VycmVudCBGUFMgaXMgbm90IGVxdWFsIHRvIHRoZSBkZXNpcmVkIEZQUy4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFuaW1vbWV0ZXI6IEFk
ZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgCisg
ICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvbWFpbi5qczogQWRkZWQuCisgICAgICAgIChQ
b2ludCk6IEEgcG9pbnQgb2JqZWN0CisgICAgICAgIChJbnNldHMpOiBBbiBpbnNldHMgb2JqZWN0
CisgICAgICAgIChTaW1wbGVQcm9taXNlKTogQW4gaW1wbGVtZW50YXRpb24gZm9yIGEgcHJvbWlz
ZSBvYmplY3QgKGNvcGllZCBmb3JtIHNwZWVkb21ldGVyKS4KKyAgICAgICAgKE1hdHJpeCk6IEEg
bWF0cml4IG9iamVjdC4KKyAgICAgICAgKFZlY3RvcjMpOiBBIHZlY3RvciBvZiBzaXplIDMgb2Jq
ZWN0LgorICAgICAgICAoTWF0cml4Myk6IEEgbWF0cml4IG9mIHNpemUgM3gzIG9iamVjdC4KKyAg
ICAgICAgKE9wdGlvbnMpOiBCZW5jaG1hcmsgcnVubmluZyBvcHRpb25zIGFzIHRoZXkgYXJlIHNl
dCBieSB0aGUgdXNlci4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgKFByb2dyZXNzQmFyKTog
TWFuYWdlcyBhIHByb2dyZXNzIGJhciBlbGVtZW50LiBUaGUgcHJvZ3Jlc3MgYmFyIGlzIGRpdmlk
ZWQgaW50byBlcXVhbCBsZW5ndGggcmFuZ2VzLgorICAgICAgICAoUHJvZ3Jlc3NCYXIucHJvdG90
eXBlLl9wcm9ncmVzc1RvUGVyY2VudCk6IENvbnZlcnRzIHRoZSBwcm9ncmVzcyBpbnRvIGEgcGVy
Y2VudGFnZS4KKyAgICAgICAgKFByb2dyZXNzQmFyLnByb3RvdHlwZS5pbmNSYW5nZSk6IE1vdmVz
IHRvIHRoZSBuZXh0IHJhbmdlIChhIHJhbmdlIGlzIHRoZSBydW5uaW5nIHRpbWUgb2YgYSBzaW5n
bGUgdGVzdCkuCisgICAgICAgIChQcm9ncmVzc0Jhci5wcm90b3R5cGUuc2V0UG9zKTogRHJhd3Mg
dGhlIGN1cnJlbnQgcHJvZ3Jlc3MgaW4gdGhlIGN1cnJlbnQgcmFuZ2UuCisgICAgICAgIAorICAg
ICAgICAoUmVjb3JkVGFibGUpOiBTaG93cyB0aGUgcmVzdWx0cyBvZiBydW5uaW5nIGEgYmVuY2ht
YXJrIGluIGEgdGFidWxhciBmb3JtLgorICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLmNs
ZWFyKTogQ2xlYXJzIHRoZSByZXN1bHRzIHRhYmxlLgorICAgICAgICAoUmVjb3JkVGFibGUucHJv
dG90eXBlLl9zaG93VGl0bGVzKTogU2hvd3MgdGhlIGhlYWRlciB0aXRsZXMgYW5kIGFwcGVuZHMg
dGhlIHN1Yi10aXRsZXMgdG8gYSBxdWV1ZS4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlw
ZS5fc2hvd0hlYWRlcik6IFNob3dzIHRoZSB0YWJsZSBoZWFkZXIgdGl0bGVzLgorICAgICAgICAo
UmVjb3JkVGFibGUucHJvdG90eXBlLl9zaG93RW1wdHkpOiBTaG93cyBhbiBlbXB0eSB0YWJsZSBj
ZWxsLgorICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLl9zaG93VmFsdWUpOiBTaG93cyBh
IG51bWJlciB2YWx1ZSBpbiB0aGUgcmVzdWx0cyB0YWJsZS4KKyAgICAgICAgKFJlY29yZFRhYmxl
LnByb3RvdHlwZS5fc2hvd1NhbXBsZXMpOiBTaG93cyBhIGJ1dHRvbiBmb3IgdGhlIHNhbXBsZWQg
ZGF0YSBncmFwaC4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5fc2hvd1Rlc3QpOiBT
aG93cyB0aGUgcmVzdWx0cyBvZiBhIHNpbmdsZSB0ZXN0LgorICAgICAgICAoUmVjb3JkVGFibGUu
cHJvdG90eXBlLl9zaG93U3VpdGUpOiBTaG93cyB0aGUgcmVzdWx0cyBvZiBhIHNpbmdsZSBzdWl0
ZS4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5zaG93UmVjb3JkKTogICAgICAgIAor
ICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLnNob3dJdGVyYXRpb25zKTogU2hvd3MgdGhl
IHJlc3VsdHMgb2YgYWxsIHRoZSBzdWl0ZXMgb2YgdGhlIGl0ZXJhdGlvbnMuIAorICAgICAgICAK
KyAgICAgICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKFN0YXRpc3RpYyk6IE1lYXN1cmVzIHRoZSBzYW1wbGUgbWVhbiBhbmQgc3RhbmRhcmQg
ZGV2aWF0aW9uIGZvciBhIHNldCBkYXRhIHBvaW50cy4KKyAgICAgICAgKFN0YXRpc3RpYy5zYW1w
bGVNZWFuKTogUmV0dXJucyB0aGUgc2FtcGxlIG1lYW4gZm9yIGEgc2V0IG9mIGRhdGEgcG9pbnRz
LgorICAgICAgICAoU3RhdGlzdGljLnNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uKTogUmV0dXJucyB0
aGUgc2FtcGxlIHN0YW5kYXJkIGRldmlhdGlvbiBmb3IgYSBzZXQgb2YgZGF0YSBwb2ludHMuCisg
ICAgICAgIChTdGF0aXN0aWMucHJvdG90eXBlLl9pbml0KTogQ2FsbGVkIHdoZW4gdGhlIG9iamVj
dCBpcyBjcmVhdGVkIGFuZCB3aGVuIHN0YXJ0U2FtcGxpbmcoKSBpcyBjYWxsZWQuCisgICAgICAg
IChTdGF0aXN0aWMucHJvdG90eXBlLnN0YXJ0U2FtcGxpbmcpOiBDYWxsZWQgYWZ0ZXIgd2FybWlu
ZyB1cCBwZXJpb2QuIFJlc3RhcnRzIGNvbGxlY3Rpbmcgc2FtcGxlZCBkYXRhIHBvaW50cy4KKyAg
ICAgICAgKFN0YXRpc3RpYy5wcm90b3R5cGUuc2FtcGxlKTogQWRkIGEgbmV3IGRhdGEgcG9pbnQu
CisgICAgICAgIChTdGF0aXN0aWMucHJvdG90eXBlLm1lYW4pOiBSZXR1cm5zIHRoZSBzYW1wbGUg
bWVhbiBmb3IgdGhlIGN1cnJlbnQgc2FtcGxlZCBkYXRhIHBvaW50cy4KKyAgICAgICAgKFN0YXRp
c3RpYy5wcm90b3R5cGUuc3RhbmRhcmREZXZpYXRpb24pOiBSZXR1cm5zIHRoZSBzYW1wbGUgc3Rh
bmRhcmQgZGV2aWF0aW9uIGZvciB0aGUgY3VycmVudCBzYW1wbGVkIGRhdGEgcG9pbnRzLgorICAg
ICAgICAoU3RhdGlzdGljLnByb3RvdHlwZS5wZXJjZW50YWdlKTogUmV0dXJucyB0aGUgcGVyY2Vu
dGFnZSBvZiB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uIGRpdmlkZWQgdG8gdGhlIG1lYW4uCisgICAg
ICAgIChTdGF0aXN0aWMucHJvdG90eXBlLmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhKTogQ2FsY3Vs
YXRlcyB0aGUgY29uZmlkZW5jZSBkZWx0YSBmb3IgdGhlIGN1cnJlbnQgc2FtcGxlZCBkYXRhIGdp
dmVuIGEgY29uZmlkZW5jZSBsZXZlbC4KKyAgICAgICAgKFNhbXBsZXIpOiBNYW5hZ2VzIHNhbXBs
aW5nIG11bHRpcGxlIGRhdGEgcG9pbnRzIGF0IHRoZSBzYW1lIHRpbWUgb2Zmc2V0LgorICAgICAg
ICAoU2FtcGxlci5wcm90b3R5cGUuc3RhcnRTYW1wbGluZyk6IENhbGxlZCBhZnRlciB3YXJtaW5n
IHVwIHBlcmlvZC4gUmVzdGFydHMgY29sbGVjdGluZyBzYW1wbGVkIGRhdGEgcG9pbnRzLgorICAg
ICAgICAoU2FtcGxlci5wcm90b3R5cGUuc2FtcGxlKTogQWRkIGEgbmV3IGRhdGEgdmVjdG9yIGF0
IGEgZ2l2ZW4gdGltZSBvZmZzZXQuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVu
bmVyOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlczogQWRkZWQuCisg
ICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzOiBBZGRl
ZC4KKyAgICAgICAgVGhlIGJlbmNobWFyayBydW5uZXIgcGFnZSBhbmQgY3NzLgorICAgICAgICAK
KyAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qczogQWRk
ZWQuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LndpbGxBZGRUZXN0RnJh
bWUpOiBDYWxsZWQgYWZ0ZXIgdGhlIHRlc3QgPGlmcmFtZT4gaXMgY3JlYXRlZC4KKyAgICAgICAg
KHdpbmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQuZGlkUnVuVGVzdCk6IENhbGxlZCBhZnRlciBy
dW5uaW5nIGEgdGVzdCBpcyBmaW5pc2hlZC4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtSdW5u
ZXJDbGllbnQud2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb24pOiBDYWxsZWQgYXQgdGhlIGJlZ2lubmlu
ZyBiZWZvcmUgcnVubmluZyBhbnkgdGVzdC4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtSdW5u
ZXJDbGllbnQuZGlkUnVuU3VpdGVzKTogQ2FsbGVkIGFmdGVyIHJ1bm5pbmcgYWxsIHRlc3RzIG9m
IGEgc3VpdGUuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LmRpZEZpbmlz
aExhc3RJdGVyYXRpb24pOiBDYWxsZWQgYWZ0ZXIgcnVubmluZyB0aGUgbGFzdCB0ZXN0LgorICAg
ICAgICAKKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQuYnJvd3Nlcik6Cisg
ICAgICAgIChzaG93U2VjdGlvbik6IFNob3dzIGEgc2VjdGlvbiBpbiB0aGUgYW5pbW9tZXRlci5o
dG1sIHBhZ2UuCisgICAgICAgIChzdGFydFRlc3QpOiBDYWxsZWQgd2hlbiB0aGUgIlN0YXJ0IFRl
c3QiIGJ1dHRvbiBpcyBjbGlja2VkLgorICAgICAgICAoc2hvd1Jlc3VsdHMpOiBDYWxsZWQgYWZ0
ZXIgZmluaXNoaW5nIGFsbCB0aGUgdGVzdHMuCisgICAgICAgIChzaG93R3JhcGgpOiBDYWxsZWQg
d2hlbiAiQ2xpY2suLi4iIGJ1dHRvbiBpbiB0aGUgIlNhbXBsZXMiIGNvbHVtbiBvZiB0aGUgcmVz
dWx0cyB0YWJsZSBpcyBjbGlja2VkCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVu
bmVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKEJlbmNo
bWFya1J1bm5lclN0YXRlKTogVHJhY2tzIG9mIHRoZSBjdXJyZW50IHJ1bm5pbmcgPHN1aXRlLCB0
ZXN0PgorICAgICAgICAoQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmN1cnJlbnRTdWl0
ZSk6IHJldHVybnMgdGhlIGN1cnJlbnQgcnVubmluZyBzdWl0ZS4KKyAgICAgICAgKEJlbmNobWFy
a1J1bm5lclN0YXRlLnByb3RvdHlwZS5jdXJyZW50VGVzdCk6IHJldHVybnMgdGhlIGN1cnJlbnQg
cnVubmluZyB0ZXN0LgorICAgICAgICAoQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmlz
Rmlyc3RUZXN0KTogcmV0dXJucyB0cnVlIGlmIHdlIGFyZSBydW5uaW5nIHRoZSBmaXJzdCB0ZXN0
IGluIHRoZSBjdXJyZW50IHN1aXRlLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyU3RhdGUucHJv
dG90eXBlLm5leHQpOiBhZHZhbmNlcyB0byB0aGUgbmV4dCB0ZXN0LgorICAgICAgICAoQmVuY2ht
YXJrUnVubmVyU3RhdGUucHJvdG90eXBlLnByZXBhcmVDdXJyZW50VGVzdCk6IENyZWF0ZXMgYSBu
ZXcgPGlmcmFtZT4gYW5kIHdhaXRzIGZvciBpdCB0byBsb2FkIGEgdGVzdC4KKyAgICAgICAgCisg
ICAgICAgIChCZW5jaG1hcmtSdW5uZXIpOiBNYW5hZ2VzIHJ1bm5pbmcgdGhlIHRlc3RzIGFuZCBj
b21tdW5pY2F0aW5nIHdpdGggdGhlIGJlbmNobWFya1J1bm5lckNsaWVudC4KKyAgICAgICAgKEJl
bmNobWFya1J1bm5lci5wcm90b3R5cGUud2FpdEZvckVsZW1lbnQpOiBXYWl0cyBmb3IgYW4gZWxl
bWVudCB0byBiZSBjcmVhdGVkLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5f
YXBwZW5kRnJhbWUpOiBDcmVhdGVzIGEgbmV3IDxpZnJhbWU+IGVsZW1lbnQuCisgICAgICAgIChC
ZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9yZW1vdmVGcmFtZSk6IFJlbW92ZWQgdGhlIGN1cnJl
bnQgPGlmcmFtZT4gZWxlbWVudC4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUu
X3J1blRlc3RBbmRSZWNvcmRSZXN1bHRzKTogUnVucyB0aGUgY3VycmVudCB0ZXN0IGFuZCBzYXZl
cyBpdHMgcmVzdWx0cy4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuc3RlcCk6
IEVpdGhlciBydW5zIHRoZSBjdXJyZW50IHRlc3QgaWYgdGhlcmUgaXMgb3Igc3RhcnQgYSBuZXcg
aXRlcmF0aW9uLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5ydW5BbGxTdGVw
cyk6IExvb3BzIHRvIHJ1biBhbGwgdGhlIHRlc3RzIGFuZCBtb3ZlIHRvIHRoZSBuZXh0IGl0ZXJh
dGlvbi4KKyAgICAgICAgKHRoaXMuX3J1bk5leHRJdGVyYXRpb24pOiBTdGFydHMgYSBuZXcgaXRl
cmF0aW9uIG9yIHNob3cgdGhlIHJlc3VsdHMuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIucHJv
dG90eXBlLnJ1bk11bHRpcGxlSXRlcmF0aW9ucyk6IExvb3BzIHRvIHJ1biBhbGwgdGhlIGl0ZXJh
dGlvbnMgYW5kIHNob3cgdGhlIHJlc3VsdHMKKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90
b3R5cGUuX2ZpbmFsaXplKTogU3RhcnRzIGEgbmV3IGl0ZXJhdGlvbi4KKworICAgICAgICAqIEFu
aW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9ncmFwaC5qczogQWRkZWQuCisgICAgICAgIChncmFw
aCk6IERyYXdzIGEgY2hhcnQgZm9yIGEgdGVzdCBzYW1wbGVkIGRhdGEuIEl0IHNob3dzIHR3byB5
LWF4aXNlczogb25lIGZvciB0aGUgcGFydGljbGVzIGFuZCB0aGUgc2Vjb25kIGZvciBGUFMuCisg
ICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy90ZXN0cy5qczog
QWRkZWQuCisgICAgICAgIChzdWl0ZUZyb21OYW1lKTogUmV0dXJucyBhIHN1aXRlIGdpdmVuIGl0
cyBuYW1lLgorICAgICAgICAodGVzdEZyb21OYW1lKTogUmV0dXJucyBhIHRlc3QgZ2l2ZW4gaXRz
IHN1aXRlIGFuZCBuYW1lLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzOiBB
ZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlczogQWRk
ZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctY2FudmFzLWltYWdlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWlt
YWdlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9ib3VuY2luZy1zaGFwZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2lu
Zy1zdmctc2hhcGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL3Jlc291cmNlczogQWRkZWQuCisgICAgICAgIFRoZSBib3VuY2luZyBw
YXJ0aWNsZXMgdGVzdCBwYWdlcy4gVGhlIHNhbWUgdGVzdHMgYXJlIGRvbmUgYXMgSFRNTCBlbGVt
ZW50cywKKyAgICAgICAgU1ZHRWxlbWVudHMgb3IgZHJhd24gb24gYSBjYW52YXMuCisgICAgICAg
IAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNl
cy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nQ2Fu
dmFzSW1hZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlLgorICAgICAgICAoQm91
bmNpbmdDYW52YXNJbWFnZS5wcm90b3R5cGUuX2RyYXcpOiBEcmF3cyBhbiBpbWFnZSBvbiB0aGUg
Y29udGV4dCBvZiBhIGNhbnZhcy4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90
eXBlLmFuaW1hdGUpOiBNb3ZlcyB0aGUgQm91bmNpbmdDYW52YXNJbWFnZSB0byBhIG5ldyBsb2Nh
dGlvbi4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlKTogQSBz
dWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS4KKyAgICAgICAgKEJvdW5jaW5nQ2Fu
dmFzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRp
Y2xlIG9mIHR5cGUgQm91bmNpbmdDYW52YXNJbWFnZS4KKyAgICAgICAgCisgICAgICAgIChCb3Vu
Y2luZ0NhbnZhc0ltYWdlc0FuaW1hdG9yKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNs
ZXNBbmltYXRvci4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0b3IucHJvdG90
eXBlLmFuaW1hdGUpOiBDbGVhcnMgdGhlIGNvbnRleHQgYmVmb3JlIHJlZHJhd2luZyB0aGUgcGFy
dGljbGVzLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJr
KTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuCisgICAgICAgIChC
b3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVh
dGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlLgorICAgICAgICAo
Qm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTog
Q3JlYXRlcyBhbiBhbmltYXRvciBvZiB0eXBlIEJvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0b3Iu
CisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5j
aG1hcmsgb2YgdHlwZSBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay4KKyAgICAgICAgCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLWNhbnZhcy1zaGFwZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdDYW52YXNT
aGFwZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUuCisgICAgICAgIChCb3VuY2lu
Z0NhbnZhc1NoYXBlLnByb3RvdHlwZS5fZHJhdyk6IERyYXdzIGEgc2hhcGUgb24gdGhlIGNvbnRl
eHQgb2YgYSBjYW52YXMuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5h
bmltYXRlKTogTW92ZXMgdGhlIEJvdW5jaW5nQ2FudmFzU2hhcGUgdG8gYSBuZXcgbG9jYXRpb24u
CisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZSk6IEEgc3ViIGNs
YXNzIG9mIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1No
YXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0aWNsZSBv
ZiB0eXBlIEJvdW5jaW5nQ2FudmFzU2hhcGUuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdD
YW52YXNTaGFwZXNBbmltYXRvcik6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzQW5p
bWF0b3IuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yLnByb3RvdHlwZS5h
bmltYXRlKTogQ2xlYXJzIHRoZSBjb250ZXh0IGJlZm9yZSByZWRyYXdpbmcgdGhlIHBhcnRpY2xl
cy4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyayk6IEEg
c3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLgorICAgICAgICAoQm91bmNp
bmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBh
IHN0YWdlIG9mIHR5cGUgQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS4KKyAgICAgICAgKEJvdW5j
aW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvcik6IENyZWF0
ZXMgYW4gYW5pbWF0b3Igb2YgdHlwZSBCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yLgorICAg
ICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJr
IG9mIHR5cGUgQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsuCisgICAgICAgIAorICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2lu
Zy1pbWFnZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdJbWFnZSk6IEEgc3ViIGNsYXNz
IG9mIEJvdW5jaW5nUGFydGljbGUuCisgICAgICAgIChCb3VuY2luZ0ltYWdlLnByb3RvdHlwZS5f
bW92ZSk6IE1vdmUgdGhlIHBhcnRpY2xlIHRvIGEgbmV3IGxvY2F0aW9uLiBBcHBseSB0cmFuc2Zv
cm0gc2luY2UgaXQgZG9lcyBub3QgcmVxdWlyZSBsYXlvdXQuCisgICAgICAgIChCb3VuY2luZ0lt
YWdlLnByb3RvdHlwZS5hbmltYXRlKTogUm90YXRlcyBhbmQgbW92ZXMgdGhlIHNoYXBlIHRvIGEg
bmV3IGxvY2F0aW9uLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nSW1hZ2VzU3RhZ2UpOiBB
IHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLgorICAgICAgICAoQm91bmNpbmdJ
bWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGUgYSBwYXJ0aWNsZSBv
ZiB0eXBlIEJvdW5jaW5nSW1hZ2UuCisgICAgICAgIChCb3VuY2luZ0ltYWdlc1N0YWdlLnByb3Rv
dHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgZWxl
bWVudCBmb3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4gbGlzdC4KKyAgICAgICAgCisgICAgICAgIChC
b3VuY2luZ0ltYWdlc0JlbmNobWFyayk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVz
QmVuY2htYXJrLgorICAgICAgICAoQm91bmNpbmdJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNy
ZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUgQm91bmNpbmdJbWFnZXNTdGFnZS4K
KyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNo
bWFyayBvZiB0eXBlIEJvdW5jaW5nSW1hZ2VzQmVuY2htYXJrLgorICAgICAgICAKKyAgICAgICAg
KiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmct
cGFydGljbGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVSb3RhdGVyKTog
TWFuYWdlcyByb3RhdGluZyBhIEJvdW5jaW5nUGFydGljbGUuCisgICAgICAgIChCb3VuY2luZ1Bh
cnRpY2xlUm90YXRlci5wcm90b3R5cGUubmV4dCk6IE1vdmVzIHRoZSB0aW1lIGJ5IHRoZSBiZW5j
aG1hcmsncyBjdXJyZW50IHRpbWVEYXRhLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZVJvdGF0
ZXIucHJvdG90eXBlLmRlZ3JlZSk6IFJldHVybnMgdGhlIGN1cnJlbnQgcm90YXRpbmcgZGVncmVl
LgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZVJvdGF0ZXIucHJvdG90eXBlLnJvdGF0ZVopOiBS
ZXR1cm5zIENTUyBmb3JtYXR0ZWQgdHJhbnNmb3JtIHJvdGF0ZVooKSB2YWx1ZS4KKyAgICAgICAg
KEJvdW5jaW5nUGFydGljbGVSb3RhdGVyLnByb3RvdHlwZS5yb3RhdGUpOiBSZXR1cm5zIFNWRyBm
b3JtYXR0ZWQgdHJhbnNmb3JtIHJvdGF0ZSgpIHZhbHVlLiAgICAgICAgCisgICAgICAgIAorICAg
ICAgICAoQm91bmNpbmdQYXJ0aWNsZSk6IEJhc2UgY2xhc3MgZm9yIGEgYm91bmNpbmcgcGFydGlj
bGUuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5jZW50ZXIpOiBSZXR1cm5z
IHRoZSBjZW50ZXIgcG9pbnQgb3IgdGhlIHBhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdQYXJ0
aWNsZS5wcm90b3R5cGUuYW5pbWF0ZSk6IE1vdmVzIHRoZSBwYXJ0aWNsZSBiYXNlZCBvbiBpdHMg
Y3VycmVudCBwb3NpdGlvbiwgYW5nbGUgYW5kIHZlbG9jaXR5LgorICAgICAgICAKKyAgICAgICAg
KEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IpOiBBIHN1YiBjbGFzcyBvZiBBbmltYXRvci4KKyAg
ICAgICAgKEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBNYW5h
Z2VzIGFuaW1hdGluZyB0aGUgYm91bmNpbmcgcGFydGljbGVzIHRocm91Z2ggdGhlIHRlc3Qgc3Rh
Z2UuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZSk6IFJlcHJlc2Vu
dHMgdGhlIGNvbnRhaW5lciBvZiBhbGwgdGhlIGJvdW5jaW5nIHBhcnRpY2xlcy4KKyAgICAgICAg
KEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnNpemUpOiBSZXR1cm5zIHRoZSBzaXpl
IG9mIHRoZSBzdGFnZSBleGNsdWRpbmcgdGhlIENTUyBwYWRkaW5nLgorICAgICAgICAoQm91bmNp
bmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucGFyc2VTaGFwZVBhcmFtdGVycyk6IEdldHMgdGhl
IHNoYXBlIHBhcmFtZXRlcnMgZm9yIHNoYXBlIGFuaW1hdGluZyB0ZXN0cy4KKyAgICAgICAgKEJv
dW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBBbmltYXRlcyBhbGwgdGhl
IHBhcnRpY2xlcy4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnR1
bmUpOiBDaGFuZ2VzIHRoZSB0ZXN0IGJ5IGFkZGluZyBvciByZW1vdmluZyBwYXJ0aWNsZXMuCisg
ICAgICAgIAorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmspOiBSdW5zIHRoZSBi
ZW5jaG1hcmsgZm9yIGJvdW5jaW5nIHBhcnRpY2xlcyB0ZXN0LgorICAgICAgICAoQm91bmNpbmdQ
YXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyBhbiBh
bmltYXRvciBvZiB0eXBlIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IuCisgICAgICAgIChCb3Vu
Y2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUudHVuZSk6IFR1bmVzIHRoZSB0ZXN0IHRo
cm91Z2ggdGhlIGN1cnJlbnQgc3RhZ2UuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc0JlbmNo
bWFyay5wcm90b3R5cGUuY2xlYXIpOiBDbGVhcnMgdGhlIHRlc3QgdGhyb3VnaCB0aGUgY3VycmVu
dCBzdGFnZS4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5z
aG93UmVzdWx0cyk6IFNob3dzIHRoZSByZXN1bHRzL3Byb2dyZXNzIHRocm91Z2ggaXRzIHJlY29y
ZFRhYmxlIGFuZCBwcm9ncmVzc0Jhci4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90
ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXNoYXBlcy5qczogQWRk
ZWQuCisgICAgICAgIChCb3VuY2luZ1NoYXBlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0
aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nU2hhcGUucHJvdG90eXBlLl9jcmVhdGVTcGFuKTogQ3Jl
YXRlcyBhIDxzcGFuPiBlbGVtZW50IGFuZCB0YWtlcyB0aGUgc2hhcGUgYW5kIGNsaXBwaW5nIGNs
YXNzZXMgaW50byBjb25zaWRlcmF0aW9uLgorICAgICAgICAoQm91bmNpbmdTaGFwZS5wcm90b3R5
cGUuX21vdmUpOiBNb3ZlcyB0aGUgcGFydGljbGUgdG8gYSBuZXcgbG9jYXRpb24uIEFwcGx5IHRy
YW5zZm9ybSBzaW5jZSBpdCBkb2VzIG5vdCByZXF1aXJlIGxheW91dC4KKyAgICAgICAgKEJvdW5j
aW5nU2hhcGUucHJvdG90eXBlLmFuaW1hdGUpOiBSb3RhdGVzIGFuZCBtb3ZlcyB0aGUgc2hhcGUg
dG8gYSBuZXcgbG9jYXRpb24uCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdTaGFwZXNTdGFn
ZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuCisgICAgICAgIChCb3Vu
Y2luZ1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0
aWNsZSBvZiB0eXBlIEJvdW5jaW5nU2hhcGUuCisgICAgICAgIChCb3VuY2luZ1NoYXBlc1N0YWdl
LnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1vdmVzIHRoZSBjb3JyZXNwb25k
aW5nIGVsZW1lbnQgZm9ybSB0aGUgcGFyZW50IGNoaWxkcmVuIGxpc3QuCisgICAgICAgIAorICAg
ICAgICAoQm91bmNpbmdTaGFwZXNCZW5jaG1hcmspOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1Bh
cnRpY2xlc0JlbmNobWFyay4KKyAgICAgICAgKEJvdW5jaW5nU2hhcGVzQmVuY2htYXJrLnByb3Rv
dHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nU2hhcGVz
U3RhZ2UuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMg
YSBiZW5jaG1hcmsgb2YgdHlwZSBCb3VuY2luZ1NoYXBlc0JlbmNobWFyay4KKyAgICAgICAgCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLXN2Zy1pbWFnZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZSk6
IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUuCisgICAgICAgIChCb3VuY2luZ1N2Z0lt
YWdlLnByb3RvdHlwZS5fbW92ZSk6IE1vdmUgdGhlIHBhcnRpY2xlIHRvIGEgbmV3IGxvY2F0aW9u
LiBBcHBseSB0cmFuc2Zvcm0gc2luY2UgaXQgZG9lcyBub3QgcmVxdWlyZSBsYXlvdXQuCisgICAg
ICAgIChCb3VuY2luZ1N2Z0ltYWdlLnByb3RvdHlwZS5hbmltYXRlKTogUm90YXRlcyBhbmQgbW92
ZXMgdGhlIHNoYXBlIHRvIGEgbmV3IGxvY2F0aW9uLgorICAgICAgICAKKyAgICAgICAgKEJvdW5j
aW5nU3ZnSW1hZ2VzU3RhZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdl
LgorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGlj
bGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlwZSBCb3VuY2luZ1N2Z0ltYWdlLgorICAgICAg
ICAoQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVk
KTogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZm9ybSB0aGUgcGFyZW50IGNoaWxk
cmVuIGxpc3QuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsp
OiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay4KKyAgICAgICAgKEJv
dW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMg
YSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UuCisgICAgICAgICh3aW5kb3cu
YmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBCb3Vu
Y2luZ1N2Z0ltYWdlc0JlbmNobWFyay4gCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpz
OiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGUpOiBBIHN1YiBjbGFzcyBvZiBCb3Vu
Y2luZ1BhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0
ZUNpcmNsZSk6IFJldHVybnMgYSBuZXdseSBjcmVhdGVkIFNWRyA8Y2lyY2xlPiBlbGVtZW50Lgor
ICAgICAgICAoQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVJlY3QpOiBSZXR1cm5z
IGEgbmV3bHkgY3JlYXRlZCBTVkcgPHJlY3Q+IGVsZW1lbnQuIAorICAgICAgICAoQm91bmNpbmdT
dmdTaGFwZS5wcm90b3R5cGUuX21vdmUpOiBNb3ZlIHRoZSBwYXJ0aWNsZSB0byBhIG5ldyBsb2Nh
dGlvbi4gQXBwbHkgdHJhbnNmb3JtIHNpbmNlIGl0IGRvZXMgbm90IHJlcXVpcmUgbGF5b3V0Lgor
ICAgICAgICAoQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuYW5pbWF0ZSk6IFJvdGF0ZXMgYW5k
IG1vdmVzIHRoZSBzaGFwZSB0byBhIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgCisgICAgICAgIChC
b3VuY2luZ1N2Z1NoYXBlc1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNT
dGFnZS4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmVuc3VyZUNs
aXBTdGFySXNDcmVhdGVkKTogRW5zdXJlIHRoZSBhIDxjbGlwUGF0aD4gZWxlbWVudCB3aXRoIGlk
PSJzdGFyLWNsaXAiIGlzIGNyZWF0ZWQuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdl
LnByb3RvdHlwZS5lbnN1cmVEZWZzSXNDcmVhdGVkKTogRW5zdXJlIGEgPGRlZnM+IGVsZW1lbnQg
aXMgY3JlYXRlZC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNy
ZWF0ZUdyYWRpZW50KTogQ3JlYXRlcyBhIDxsaW5lYXJHcmFkaWVudD4gZWxlbWVudC4KKyAgICAg
ICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLl9jcmVhdGVEZWZzKTogQ3JlYXRl
cyBhIG5ldyA8ZGVmcz4gZWxlbWVudC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2Uu
cHJvdG90eXBlLl9jcmVhdGVDbGlwU3Rhcik6IENyZWF0ZSBhIG5ldyA8Y2xpcFBhdGg+IGVsZW1l
bnQgd2l0aCBpZD0ic3Rhci1jbGlwIi4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2Uu
cHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91
bmNpbmdTdmdTaGFwZS4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBl
LnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCk6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50
IGZvcm0gdGhlIHBhcmVudCBjaGlsZHJlbiBsaXN0LgorICAgICAgICAKKyAgICAgICAgKEJvdW5j
aW5nU3ZnU2hhcGVzQmVuY2htYXJrKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNC
ZW5jaG1hcmsuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUu
Y3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ1N2Z1NoYXBlc1N0
YWdlLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEg
YmVuY2htYXJrIG9mIHR5cGUgQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsuCisgICAgICAgIAor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzOiBBZGRlZC4KKyAgICAgICAg
QSBzaGFyZWQgY3NzIGZvciBhbGwgdGhlIHRlc3QgcGFnZXMuIEl0IHNldHMgdGhlIGNzcyBwcm9w
ZXJ0aWVzIGZvciB0aGUgdGVzdCBwYWdlIGFuZCB0aGUgc3RhZ2UgZWxlbWVudC4KKyAgICAgICAg
CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvYmVuY2htYXJrLmpzOiBBZGRl
ZC4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlKTogVHJhY2tzIHRoZSBzdGF0ZSBvZiB0aGUgYmVu
Y2htYXJrIHRlc3QuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuX3RpbWVPZmZz
ZXQpOiBSZXR1cm5zIHRoZSB0aW1lT2Zmc2V0IG9mIGEgc3RhZ2UuCisgICAgICAgIChCZW5jaG1h
cmtTdGF0ZS5wcm90b3R5cGUuX21lc3NhZ2UpOiBSZXR1cm5zIHRoZSBtZXNzYWdlIG9mIGEgc3Rh
Z2UuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUudXBkYXRlKTogU2V0cyB0aGUg
Y3VycmVudFRpbWVPZmZzZXQgdG8gYSBuZXcgdmFsdWUuCisgICAgICAgIChCZW5jaG1hcmtTdGF0
ZS5wcm90b3R5cGUuc2FtcGxpbmdUaW1lT2Zmc2V0KTogUmV0dXJucyB0aGUgdGltZU9mZnNldCBv
ZiB0aGUgc2FtcGxpbmcgc3RhZ2UuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUu
Y3VycmVudFN0YWdlKTogUmV0dXJucyB0aGUgY3VycmVudCBzdGFnZSBvZiB0aGUgYmVuY2htYXJr
LgorICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBlLmN1cnJlbnRNZXNzYWdlKTogUmV0
dXJucyB0aGUgbWVzc2FnZSBvZiB0aGUgY3VycmVudCBzdGFnZSBhbmQgdGltZU9mZnNldC4KKyAg
ICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5jdXJyZW50UHJvZ3Jlc3MpOiBSZXR1cm5z
IGEgcGVyY2VudGFnZSBvZiBob3cgbXVjaCB0aGUgYmVuY2htYXJrIGlzIHJ1bm5pbmcuCisgICAg
ICAgIAorICAgICAgICAoQW5pbWF0b3IpOiBNYW5hZ2VzIGFuaW1hdGluZyB0aGUgdGVzdC4KKyAg
ICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5zdGFydCk6IENhbGxlZCBpZiBhbmltYXRpbmcgdXNp
bmcgc2V0SW50ZXJ2YWwgaXMgcmVxdWVzdGVkLgorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBl
LnRpbWVEZWx0YSk6IFJldHVybnMgdGhlIGN1cnJlbnQgdGltZURlbHRhIAorICAgICAgICAoQW5p
bWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBNYW5hZ2VzIHRoZSB0ZXN0IGFuaW1hdGlvbi4KKyAg
ICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlTG9vcCk6IENhbGxlZCBpZiBhbmltYXRp
bmcgdXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGlzIHJlcXVlc3RlZC4gCisgICAgICAgIAor
ICAgICAgICAoQmVuY2htYXJrKTogTWFuYWdlcyBydW5uaW5nIHRoZSB0ZXN0IGJlbmNobWFyayBh
bmQgcmVjb3JkaW5nIHRoZSBzYW1wbGVkIGRhdGEuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90
eXBlLnBhcnNlUGFyYW1ldGVycyk6IFBhcnNlcyB0aGUgdGVzdCBwYXJhbWV0ZXJzLgorICAgICAg
ICAoQmVuY2htYXJrLnByb3RvdHlwZS5zdGFydCk6IFN0YXJ0cyB0aGUgYmVuY2htYXJrLgorICAg
ICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS51cGRhdGUpOiBDYWxsZWQgZnJvbSB0aGUgYW5pbWF0
b3IuYW5pbWF0ZSgpIHRvIGNoYW5nZSB0aGUgY29tcGxleGl0eSBvZiB0aGUgdGVzdC4KKyAgICAg
ICAgKEJlbmNobWFyay5wcm90b3R5cGUucmVjb3JkKTogU2hvd3MgdGhlIGN1cnJlbnQgKG5vdCBm
aW5hbCkgcmVzdWx0cyBvZiB0aGUgYmVuY2htYXJrLgorICAgICAgICAoQmVuY2htYXJrLnByb3Rv
dHlwZS5yZXNvbHZlV2hlbkZpbmlzaGVkKTogU3BpbnMgdW50aWwgdGhlIGJlbmNobWFyayBpcyBm
aW5pc2hlZCBhbmQgcmV0dXJucyBpdHMgcmVzdWx0cy4KKyAgICAgICAgKEJlbmNobWFyay5wcm90
b3R5cGUucnVuKTogU3RhcnRzIHRoZSB0ZXN0LCBydW5zIGl0LCB3YWl0cyB1bnRpbCBpdCBpcyBm
aW5pc2hlZCBhbmQgcmV0dXJuIGl0cyByZXN1bHRzLgorICAgICAgICAod2luZG93LnJ1bkJlbmNo
bWFyayk6IENhbGxlZCBmcm9tIHRoZSBiZW5jaG1hcmsgcnVubmVyIHRocm91Z2ggdGhlIHN1aXRl
IGNvbnRyb2xsZXIgcnVuLWNhbGxiYWNrLiAKKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy9yZXNvdXJjZXMvbWF0aC5qczogQWRkZWQuCisgICAgICAgIChNYXRyaXgpOiBBIG1h
dHJpeCBvYmplY3QuCisgICAgICAgIChWZWN0b3IzKTogQSB2ZWN0b3Igb2Ygc2l6ZSAzIG9iamVj
dC4KKyAgICAgICAgKE1hdHJpeDMpOiBBIG1hdHJpeCBvZiBzaXplIDN4MyBvYmplY3QuCisgICAg
ICAgIAorICAgICAgICAoQ29udHJvbGxlcik6IENsb3NlZC1sb29wIGNvbnRyb2xsZXIgZm9yIGEg
c2V0LXBvaW50IHkuCisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5fc2F0KTogTGltaXRz
IHRoZSBvdXRwdXQgdG8gYSBjZXJ0YWluIHJhbmdlLgorICAgICAgICAoQ29udHJvbGxlci5wcm90
b3R5cGUudHVuZSk6IHByb2R1Y2VzIHRoZSBwaWQgZm9yIHRoZSBiZW5jaG1hcmsgd2hpY2ggaXMg
dHJlYXRlZCBhcyBhIGNsb3NlZC1sb29wIHN5c3RlbS4KKyAgICAgICAgCisgICAgICAgIChFc3Rp
bWF0b3IpOiBJbXBsZW1lbnQgS2FsbWFuIGZpbHRlciB0byBnZXQgYW4gZXN0aW1hdGUgZm9yIGEg
c2FtcGxlZCBkYXRhIHBvaW50LgorICAgICAgICAoRXN0aW1hdG9yLnByb3RvdHlwZS5lc3RpbWF0
ZSk6IFJldHVybnMgYW4gZXN0aW1hdGUgZm9yIGZvciBhIHNhbXBsZWQgZGF0YSBwb2ludC4KKyAg
ICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanM6IEFk
ZGVkLgorICAgICAgICAoU3RhZ2UpOiBBIGJhc2UgY2xhc3MgZm9yIG1hbmFnaW5nIHRoZSB0ZXN0
IGNvbXBsZXhpdHkgYW5kIHRlc3QgYW5pbWF0aW9uLgorICAgICAgICAoU3RhZ2UucHJvdG90eXBl
LnNpemUpOiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBzdGFnZSBleGNsdWRpbmcgdGhlIENTUyBw
YWRkaW5nLgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLmNsZWFyKTogQ2xlYXJzIHRoZSBzdGFn
ZSBmcm9tIGFsbCBpdHMgYW5pbWF0aW9uIGVsZW1lbnRzLgorICAgICAgICAoU3RhZ2UucHJvdG90
eXBlLnJhbmRvbSk6IFJldHVybnMgYSByYW5kb20gZmxvYXQuCisgICAgICAgIChTdGFnZS5wcm90
b3R5cGUucmFuZG9tSW50KTogUmV0dXJucyBhIHJhbmRvbSBpbnRlZ2VyLgorICAgICAgICAoU3Rh
Z2UucHJvdG90eXBlLnJhbmRvbVBvc2l0aW9uKTogUmV0dXJucyBhIHJhbmRvbSBwb3NpdGlvbi4K
KyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5yYW5kb21WZWxvY2l0eSk6IFJldHVybnMgYSByYW5k
b20gdmVsb2NpdHkuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tQW5nbGUpOiBSZXR1
cm5zIGEgcmFuZG9tIGFuZ2xlLgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLnJhbmRvbUNvbG9y
KTogUmV0dXJucyBhIHJhbmRvbSBjb2xvciBub3QgdG9vIGRhcmsgYW5kIG5vdCB0b28gbGlnaHQu
CisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3V0aWxpdGll
cy5qczogQWRkZWQuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50Ll9wYXJzZSk6IEdp
dmVuIGEgc2VwYXJhdG9yIGNoYXJhY3RlciwgaXQgcGFyZXNlcyBhIHN0cmluZyB0byBhIHNldCBv
ZiA8a2V5LCB2YWx1ZT4gcGFpcnMuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LnBh
cnNlUGFyYW1ldGVycyk6IFBhcnNlcyBhIHRlc3QgcGFyYW1ldGVycy4KKyAgICAgICAgKHdpbmRv
dy5iZW5jaG1hcmtDbGllbnQucGFyc2VBcmd1bWVudHMpOiBQYXJzZXMgYSB0YWcgYXJndW1lbnRz
LgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5leHRlbmRPYmplY3QpOiBBZGRzIHRo
ZSBhdHRyaWJ1dGVzIGFuZCB0aGVpciB2YWx1ZXMgb2YgYW4gb2JqZWN0IHRvIGFub3RoZXIgb2Jq
ZWN0LgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jb3B5T2JqZWN0KTogQ29waWVz
IHRoZSBhdHRyaWJ1dGVzIGFuZCB0aGVpciB2YWx1ZXMgb2YgYW4gb2JqZWN0IHRvIGEgbmV3IG9i
amVjdC4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQubWVyZ2VPYmplY3RzKTogQ29w
aWVzIHRoZSBhdHRyaWJ1dGVzIGFuZCB0aGVpciB2YWx1ZXMgb2YgdHdvIG9iamVjdHMgdG8gYSBu
ZXcgb2JqZWN0LgorICAgICAgICAod2luZG93LnJ1bkJlbmNobWFyayk6IENhbGxlZCBmcm9tIHRo
ZSBiZW5jaG1hcmsgcnVubmVyIHRocm91Z2ggdGhlIHN1aXRlIGNvbnRyb2xsZXIgcnVuLWNhbGxi
YWNrLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4t
eWFuZy5wbmc6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lp
bi15YW5nLnN2ZzogQWRkZWQuCisgICAgICAgIEltYWdlcyB3aGljaCBhcmUgc2hhcmVkIGJ5IGFs
bCB0aGUgdGVzdHMuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGV4dDog
QWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRt
bDogQWRkZWQuCisgICAgICAgIFRoaXMgdGVzdCBzdGFja3MgY29udGFpbmVyIDxkaXY+IGVsZW1l
bnRzIG9uIHRvcCBvZiBlYWNoIG90aGVyLiBUaGUgdGVzdAorICAgICAgICBhZGRzIHRleHQgaXRl
bXMgdG8gdG9wbW9zdCBjb250YWluZXIgPGRpdj4gdW50aWwgaXQgaXMgZnVsbC4gV2hlbiBpdCBp
cworICAgICAgICBmdWxsLCBhIG5ldyBjb250YWluZXIgPGRpdj4gaXMgY3JlYXRlZC4KKyAgICAg
ICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlczogQWRkZWQuCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0Lmpz
OiBBZGRlZC4KKyAgICAgICAgKExheWVyaW5nVGV4dEFuaW1hdG9yKTogQSBzdWIgY2xhc3Mgb2Yg
QW5pbWF0b3IuCisgICAgICAgIChMYXllcmluZ1RleHRBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0
ZSk6IEZvcmNlcyBhIHJlZHJhdyB0byBoYXBwZW4uIEl0IGNhbGxzIHRoZSBzdGFnZSBhbmltYXRl
KCkgZnVuY3Rpb24uCisgICAgICAgIAorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UpOiBSZXBy
ZXNlbnRzIHRoZSBjb250YWluZXIgb2YgYWxsIHRoZSBzdGFja2VkIHRleHQgbGF5ZXJzLgorICAg
ICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VUZXh0SXRlbSk6IFBhcnNlcyBhIHRleHRJdGVt
IHdoaWNoIG1heSBiZSBhbiBvcGVuaW5nIHRhZywgYSBjbG9zaW5nIHRhZyBvciBhIHNlbGYtY2xv
c2luZyB0YWcuCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5pc09wZW5pbmdUZXh0SXRlbSk6
IFJldHVybnMgdHJ1ZSBpZiB0aGUgdGV4dEl0ZW0gaXMgYW4gb3BlbmluZyB0YWcgZS5nLiAnPG9s
PicuCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5pc0Nsb3NpbmdUZXh0SXRlbSk6IFJldHVy
bnMgdHJ1ZSBpZiAgdGhlIHRleHRJdGVtIGlzIGFuIGNsb3NpbmcgdGFnIGUuZy4gJzwvb2w+Lgor
ICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MuTGF5ZXJpbmdUZXh0U3Rh
Z2UudGV4dEl0ZW1zLm1hcCk6IENhbGN1bGF0ZXMgYW5kIHN0b3JlcyBpc09wZW5pbmcgYW5kIGlz
Q2xvc2luZyBmbGFncyBmb3IgZWFjaCB0ZXh0SXRlbS4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0
YWdlLmlzQ29sb3JhYmxlVGV4dEl0ZW0pOiBSZXR1cm5zIHRydWUgaWYgdGhlIHRleHRJdGVtIGlz
IHNlbGYtY2xvc2luZyB0YWcgZS5nLiAnPHA+Li4uPC9wPicuCisgICAgICAgIChMYXllcmluZ1Rl
eHRTdGFnZS5pc0luc2VydGFibGVUZXh0SXRlbSk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgdGV4dEl0
ZW1zIGNhdXNlcyBhIG5ldyBlbGVtZW50IHRvIGJlIGFkZGVkIHRvIHRoZSB0ZXh0IGxheWVycy4K
KyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmNvbG9yYWJsZVRleHRJdGVtcy5MYXllcmluZ1Rl
eHRTdGFnZS50ZXh0SXRlbXNGbGFncy5maWx0ZXIpOiBOdW1iZXIgb2YgY29sb3JhYmxlIHRleHRJ
dGVtcy4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmluc2VydGFibGVUZXh0SXRlbXMuTGF5
ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MuZmlsdGVyKTogTnVtYmVyIG9mIGluc2VydGFi
bGUgdGV4dEl0ZW1zLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuY29sb3JJbmRleFRvVGV4
dEVsZW1lbnRJbmRleCk6IE1hcHMgZnJvbSBjb2xvckluZGV4IFswLi5jb2xvcmFibGVUZXh0SXRl
bXMtMV0gdG8gdGV4dEVsZW1lbnRJbmRleCBbMC4uaW5zZXJ0YWJsZVRleHRJdGVtcy0xXS4KKyAg
ICAgICAgKExheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fbmV4dFRleHRJdGVtKTogTW92ZXMg
dGhlIF90ZXh0SXRlbUluZGV4IG9uZSBzdGVwIGZvcndhcmQgaW4gYSBsb29wIFswLi5MYXllcmlu
Z1RleHRTdGFnZS50ZXh0SXRlbXMubGVuZ3RoLTFdLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3Rh
Z2UucHJvdG90eXBlLl9wcmV2aW91c1RleHRJdGVtKTogTW92ZXMgdGhlIF90ZXh0SXRlbUluZGV4
IG9uZSBzdGVwIGJhY2t3YXJkIGluIGEgbG9vcC4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdl
LnByb3RvdHlwZS5fcHVzaFRleHRFbGVtZW50KTogQ3JlYXRlcyBhIG5ldyB0ZXh0SXRlbUVsZW1l
bnQgYW5kIGFkZHMgaXQgdG8gdGhlIHRvcG1vc3QgY29udGFpbmVyIDxkaXY+LgorICAgICAgICAo
TGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9wb3BUZXh0RWxlbWVudCk6IFJlbW92ZXMgdGhl
IGxhc3QgdGV4dEl0ZW1FbGVtZW50IGZyb20gdGhlIHRvcG1vc3QgY29udGFpbmVyIDxkaXY+Lgor
ICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9jb2xvclRleHRJdGVtKTogQ2hh
bmdlcyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBhIHNpbmdsZSBjb2xvcmFibGUgdGV4dEVsZW1l
bnQuIFRoZSBpbmRleCBhZHZhbmNlcyBpbiBhIGNpcmNsZSBbMC4uY29sb3JhYmxlVGV4dEl0ZW1z
LTFdLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBDaGFu
Z2VzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGFuZCB0aGUgdGV4dCBjb2xvciBvZiB0aGUgdGV4dEVs
ZW1lbnRzIHN1Y2ggdGhhdCBhIHJlZHJhdyBpcyBlbmZvcmNlZC4KKyAgICAgICAgKExheWVyaW5n
VGV4dFN0YWdlLnByb3RvdHlwZS50dW5lKTogQWRkcyBvciByZW1vdmVzIHRleHRFbGVtZW50cyB0
byB0aGUgc3RhZ2UuCisgICAgICAgIAorICAgICAgICAoTGF5ZXJpbmdUZXh0QmVuY2htYXJrKTog
UnVucyB0aGUgYmVuY2htYXJrIGZvciB0aGUgbGF5ZXJpbmcgdGV4dCB0ZXN0LgorICAgICAgICAo
TGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBz
dGFnZSBvZiB0eXBlIExheWVyaW5nVGV4dFN0YWdlLgorICAgICAgICAoTGF5ZXJpbmdUZXh0QmVu
Y2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvcik6IENyZWF0ZXMgYW4gYW5pbWF0b3Igb2Yg
dHlwZSBMYXllcmluZ1RleHRBbmltYXRvci4KKyAgICAgICAgKExheWVyaW5nVGV4dEJlbmNobWFy
ay5wcm90b3R5cGUudHVuZSk6IFR1bmVzIHRoZSB0ZXN0IHRocm91Z2ggdGhlIGN1cnJlbnQgc3Rh
Z2UuCisgICAgICAgIChMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlLmNsZWFyKTogQ2xl
YXJzIHRoZSB0ZXN0IHRocm91Z2ggdGhlIGN1cnJlbnQgc3RhZ2UuCisgICAgICAgIChMYXllcmlu
Z1RleHRCZW5jaG1hcmsucHJvdG90eXBlLnNob3dSZXN1bHRzKTogU2hvd3MgdGhlIHJlc3VsdHMv
cHJvZ3Jlc3MgdGhyb3VnaCBpdHMgcmVjb3JkVGFibGUgYW5kIHByb2dyZXNzQmFyCisgICAgICAg
ICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2Yg
dHlwZSBMYXllcmluZ1RleHRCZW5jaG1hcmsuCisKIDIwMTUtMDgtMjcgIENzYWJhIE9zenRyb2dv
bsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbRUZMXSBSRUdSRVNTSU9OKHIxODg3
OTMpOiBJdCBtYWRlIDIwMCBsYXlvdXQgdGVzdHMgYW5kIEJpbmRpbmdzL2V2ZW50LXRhcmdldC13
cmFwcGVyLmh0bWwgcGVyZm9ybWFuY2UgdGVzdCBmYWlsCkluZGV4OiBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL21haW4uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9tYWluLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9tYWluLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjM3IEBACitmdW5jdGlvbiBQb2ludCh4LCB5KSB7CisgICAgdGhpcy54ID0geDsK
KyAgICB0aGlzLnkgPSB5OworfQorCitQb2ludC5wcm90b3R5cGUgPSB7CisgICAgd2lkdGggOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMueDsKKyAgICB9LAorICAgIGhlaWdodCA6
IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy55OworICAgIH0sCisgICAgY2VudGVy
IDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy54IC8gMiwgdGhp
cy55IC8gMik7CisgICAgfSwKKyAgICBhZGQgOiBmdW5jdGlvbihvdGhlcikgeworICAgICAgICBy
ZXR1cm4gbmV3IFBvaW50KHRoaXMueCArIG90aGVyLngsIHRoaXMueSArIG90aGVyLnkpOworICAg
IH0sICAgIAorICAgIHN1YnRyYWN0IDogZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgcmV0dXJu
IG5ldyBQb2ludCh0aGlzLnggLSBvdGhlci54LCB0aGlzLnkgLSBvdGhlci55KTsKKyAgICB9LAor
ICAgIG11bHRpcGx5IDogZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQb2lu
dCh0aGlzLnggKiBvdGhlci54LCB0aGlzLnkgKiBvdGhlci55KTsKKyAgICB9LAorICAgIG1vdmUg
OiBmdW5jdGlvbihhbmdsZSwgdmVsb2NpdHksIHRpbWVEZWx0YSkgeworICAgICAgICB2YXIgeCA9
IHRoaXMueCArIE1hdGguY29zKGFuZ2xlKSAqIHZlbG9jaXR5ICogKHRpbWVEZWx0YSAvIDEwMDAp
OworICAgICAgICB2YXIgeSA9IHRoaXMueSArIE1hdGguc2luKGFuZ2xlKSAqIHZlbG9jaXR5ICog
KHRpbWVEZWx0YSAvIDEwMDApOworICAgICAgICByZXR1cm4gbmV3IFBvaW50KHgsIHkpOworICAg
IH0KK30KKworZnVuY3Rpb24gSW5zZXRzKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCkgeworICAg
IHRoaXMudG9wID0gdG9wOworICAgIHRoaXMucmlnaHQgPSByaWdodDsKKyAgICB0aGlzLmJvdHRv
bSA9IGJvdHRvbTsKKyAgICB0aGlzLmxlZnQgPSBsZWZ0OworfQorCitJbnNldHMucHJvdG90eXBl
ID0geworICAgIHdpZHRoIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLmxlZnQg
KyB0aGlzLnJpZ2h0OworICAgIH0sCisgICAgaGVpZ2h0IDogZnVuY3Rpb24oKSB7CisgICAgICAg
IHJldHVybiB0aGlzLnRvcCArIHRoaXMuYm90dG9tOworICAgIH0KK30KKworZnVuY3Rpb24gU2lt
cGxlUHJvbWlzZSgpIHsKKyAgICB0aGlzLl9jaGFpbmVkUHJvbWlzZSA9IG51bGw7CisgICAgdGhp
cy5fY2FsbGJhY2sgPSBudWxsOworfQorCitTaW1wbGVQcm9taXNlLnByb3RvdHlwZS50aGVuID0g
ZnVuY3Rpb24gKGNhbGxiYWNrKSB7CisgICAgaWYgKHRoaXMuX2NhbGxiYWNrKQorICAgICAgICB0
aHJvdyAiU2ltcGxlUHJvbWlzZSBkb2Vzbid0IHN1cHBvcnQgbXVsdGlwbGUgY2FsbHMgdG8gdGhl
biI7CisgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICB0aGlzLl9jaGFpbmVkUHJv
bWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgIAorICAgIGlmICh0aGlzLl9yZXNvbHZlZCkK
KyAgICAgICAgdGhpcy5yZXNvbHZlKHRoaXMuX3Jlc29sdmVkVmFsdWUpOworCisgICAgcmV0dXJu
IHRoaXMuX2NoYWluZWRQcm9taXNlOworfQorCitTaW1wbGVQcm9taXNlLnByb3RvdHlwZS5yZXNv
bHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgaWYgKCF0aGlzLl9jYWxsYmFjaykgeworICAg
ICAgICB0aGlzLl9yZXNvbHZlZCA9IHRydWU7CisgICAgICAgIHRoaXMuX3Jlc29sdmVkVmFsdWUg
PSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciByZXN1bHQgPSB0aGlz
Ll9jYWxsYmFjayh2YWx1ZSk7CisgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFNpbXBsZVByb21p
c2UpIHsKKyAgICAgICAgdmFyIGNoYWluZWRQcm9taXNlID0gdGhpcy5fY2hhaW5lZFByb21pc2U7
CisgICAgICAgIHJlc3VsdC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsgY2hhaW5lZFByb21pc2Uu
cmVzb2x2ZShyZXN1bHQpOyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgdGhpcy5fY2hhaW5lZFBy
b21pc2UucmVzb2x2ZShyZXN1bHQpOworfQorCitmdW5jdGlvbiBPcHRpb25zKHRlc3RJbnRlcnZh
bCwgZnJhbWVSYXRlKSB7CisgICAgdGhpcy50ZXN0SW50ZXJ2YWwgPSB0ZXN0SW50ZXJ2YWw7Cisg
ICAgdGhpcy5mcmFtZVJhdGUgPSBmcmFtZVJhdGU7Cit9CisKK2Z1bmN0aW9uIFByb2dyZXNzQmFy
KGVsZW1lbnQsIHJhbmdlcykgeworICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7CisgICAgdGhp
cy5yYW5nZXMgPSByYW5nZXM7CisgICAgdGhpcy5jdXJyZW50UmFuZ2UgPSAwOworfQorCitQcm9n
cmVzc0Jhci5wcm90b3R5cGUgPSB7CisgICAgX3Byb2dyZXNzVG9QZXJjZW50IDogZnVuY3Rpb24o
cHJvZ3Jlc3MpIHsKKyAgICAgICAgcmV0dXJuIHByb2dyZXNzICogKDEwMCAvIHRoaXMucmFuZ2Vz
KTsKKyAgICB9LAorICAgIGluY1JhbmdlIDogZnVuY3Rpb24oKSB7CisgICAgICAgICsrdGhpcy5j
dXJyZW50UmFuZ2U7CisgICAgfSwKKyAgICBzZXRQb3MgOiBmdW5jdGlvbihwcm9ncmVzcykgewor
ICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLl9wcm9ncmVzc1RvUGVyY2Vu
dCh0aGlzLmN1cnJlbnRSYW5nZSArIHByb2dyZXNzKSArICIlIjsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIFJlY29yZFRhYmxlKGVsZW1lbnQpIHsKKyAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50Owor
ICAgIHRoaXMuY2xlYXIoKTsKK30KKworUmVjb3JkVGFibGUucHJvdG90eXBlID0geworICAgIGNs
ZWFyIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgPSAiIjsK
KyAgICB9LAorICAgIF9zaG93VGl0bGVzIDogZnVuY3Rpb24ocm93LCBxdWV1ZSwgdGl0bGVzLCBt
ZXNzYWdlKSB7CisgICAgICAgIGZvciAodmFyIHRpdGxlID0gMDsgdGl0bGUgPCB0aXRsZXMubGVu
Z3RoOyArK3RpdGxlKSB7CisgICAgICAgICAgICB2YXIgdGggPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJ0aCIpOworICAgICAgICAgICAgdGguaW5uZXJIVE1MID0gdGl0bGVzW3RpdGxlXS50ZXh0
OworICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlICE9ICJ1bmRlZmluZWQiICYmIG1lc3Nh
Z2UubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgdGguaW5uZXJIVE1MICs9ICI8YnI+WyIgKyBt
ZXNzYWdlICsgIl0iOworICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiIjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmICgid2lkdGgiIGluIHRpdGxlc1t0aXRsZV0pCisgICAgICAgICAg
ICAgICAgdGgud2lkdGggPSB0aXRsZXNbdGl0bGVdLndpZHRoICsgIiUiOworICAgICAgICAgICAg
cm93LmFwcGVuZENoaWxkKHRoKTsKKyAgICAgICAgICAgIHF1ZXVlLnB1c2goe2VsZW1lbnQ6IHRo
LCB0aXRsZXM6IHRpdGxlc1t0aXRsZV0uY2hpbGRyZW4gfSk7CisgICAgICAgIH0KKyAgICB9LAor
ICAgIF9zaG93SGVhZGVyIDogZnVuY3Rpb24oc3VpdGVOYW1lLCB0aXRsZXMsIG1lc3NhZ2UpIHsK
KyAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisKKyAgICAg
ICAgdmFyIHF1ZXVlID0gW107CisgICAgICAgIHRoaXMuX3Nob3dUaXRsZXMocm93LCBxdWV1ZSwg
dGl0bGVzLCBtZXNzYWdlKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHJvdyk7
CisKKyAgICAgICAgd2hpbGUgKHF1ZXVlLmxlbmd0aCkgeworICAgICAgICAgICAgdmFyIHJvdyA9
IG51bGw7CisgICAgICAgICAgICB2YXIgbGlzdCA9IFtdOworCisgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMCwgbGVuID0gcXVldWUubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsKKyAgICAgICAgICAg
ICAgICB2YXIgZW50cnkgPSBxdWV1ZS5zaGlmdCgpOworCisgICAgICAgICAgICAgICAgaWYgKCFl
bnRyeS50aXRsZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIGxpc3QucHVzaChlbnRy
eS5lbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFyb3cpCisgICAgICAgICAgICAgICAgICAgIHZh
ciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworCisgICAgICAgICAgICAgICAg
dGhpcy5fc2hvd1RpdGxlcyhyb3csIHF1ZXVlLCBlbnRyeS50aXRsZXMsICIiKTsKKyAgICAgICAg
ICAgICAgICBlbnRyeS5lbGVtZW50LmNvbFNwYW4gPSBlbnRyeS50aXRsZXMubGVuZ3RoOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocm93KSB7CisgICAgICAgICAgICAgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKHJvdyk7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgICAgICArK2xpc3RbaV0u
cm93U3BhbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisgICAgX3Nob3dFbXB0
eSA6IGZ1bmN0aW9uKHJvdywgdGVzdE5hbWUpIHsKKyAgICAgICAgdmFyIHRkID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxkKHRkKTsKKyAgICB9
LAorICAgIF9zaG93VmFsdWUgOiBmdW5jdGlvbihyb3csIHRlc3ROYW1lLCB2YWx1ZSkgeworICAg
ICAgICB2YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICB0ZC50
ZXh0Q29udGVudCA9IHZhbHVlLnRvRml4ZWQoMik7CisgICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0
ZCk7CisgICAgfSwKKyAgICBfc2hvd1NhbXBsZXMgOiBmdW5jdGlvbihyb3csIHRlc3ROYW1lLCBh
eGlzZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGltZU9mZnNldCkgeworICAgICAgICB2YXIgdGQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICB2YXIgYnV0dG9uID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGJ1dHRvbi5jbGFzc05hbWUgPSAic21h
bGwtYnV0dG9uIjsKKyAgICAgICAgICAgIAorICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHdpbmRvdy5zaG93R3JhcGgodGVz
dE5hbWUsIGF4aXNlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KTsKKyAgICAgICAgfSk7
CisgICAgICAgICAgICAKKyAgICAgICAgYnV0dG9uLnRleHRDb250ZW50ID0gIkNsaWNrLi4uIjsK
KyAgICAgICAgdGQuYXBwZW5kQ2hpbGQoYnV0dG9uKTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxk
KHRkKTsKKyAgICB9LAorICAgIF9zaG93VGVzdCA6IGZ1bmN0aW9uKHRlc3ROYW1lLCB0aXRsZXMs
IHNhbXBsZXIsIGZpbmFsUmVzdWx0cykgeworICAgICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgidHIiKTsKKyAgICAgICAgdmFyIHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgidGQiKTsKKyAgICAgICAgdGQudGV4dENvbnRlbnQgPSB0ZXN0TmFtZTsKKyAgICAgICAgcm93
LmFwcGVuZENoaWxkKHRkKTsKKyAgICAgICAgCisgICAgICAgIHZhciBheGlzZXMgPSBbXTsKKyAg
ICAgICAgZm9yICh2YXIgbWVhc3VyZSA9IDA7IG1lYXN1cmUgPCBzYW1wbGVyLnN0YXRpc3RpY3Mu
bGVuZ3RoOyArK21lYXN1cmUpIHsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dWYWx1ZShyb3csIHRl
c3ROYW1lLCBzYW1wbGVyLnN0YXRpc3RpY3NbbWVhc3VyZV0ubWVhbigpKTsKKyAgICAgICAgICAg
IHRoaXMuX3Nob3dWYWx1ZShyb3csIHRlc3ROYW1lLCBzYW1wbGVyLnN0YXRpc3RpY3NbbWVhc3Vy
ZV0uY29uZmlkZW5jZUludGVydmFsRGVsdGEoOTUpKTsgICAgICAgICAgICAKKyAgICAgICAgICAg
IHRoaXMuX3Nob3dWYWx1ZShyb3csIHRlc3ROYW1lLCBzYW1wbGVyLnN0YXRpc3RpY3NbbWVhc3Vy
ZV0uc3RhbmRhcmREZXZpYXRpb24oKSk7CisgICAgICAgICAgICB0aGlzLl9zaG93VmFsdWUocm93
LCB0ZXN0TmFtZSwgc2FtcGxlci5zdGF0aXN0aWNzW21lYXN1cmVdLnBlcmNlbnRhZ2UoKSk7Cisg
ICAgICAgICAgICBheGlzZXMucHVzaCh0aXRsZXNbbWVhc3VyZSArIDFdLnRleHQpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGZpbmFsUmVzdWx0cykKKyAgICAgICAgICAgIHRoaXMuX3Nob3dT
YW1wbGVzKHJvdywgdGVzdE5hbWUsIGF4aXNlcywgc2FtcGxlci5zYW1wbGVzLCBzYW1wbGVyLnNh
bXBsaW5nVGltZU9mZnNldCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX3Nob3dF
bXB0eSAocm93LCB0ZXN0TmFtZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChy
b3cpOworICAgIH0sCisgICAgX3Nob3dTdWl0ZSA6IGZ1bmN0aW9uKHN1aXRlLCBzdWl0ZVNhbXBs
ZXJzKSB7CisgICAgICAgIHZhciBzY29yZXMgPSBbXTsgICAgICAgIAorICAgICAgICBmb3IgKHZh
ciB0ZXN0TmFtZSBpbiBzdWl0ZVNhbXBsZXJzKSB7CisgICAgICAgICAgICB2YXIgdGVzdCA9IHRl
c3RGcm9tTmFtZShzdWl0ZSwgdGVzdE5hbWUpOworICAgICAgICAgICAgdmFyIHNhbXBsZXIgPSBz
dWl0ZVNhbXBsZXJzW3Rlc3ROYW1lXTsgCisgICAgICAgICAgICB0aGlzLl9zaG93VGVzdCh0ZXN0
TmFtZSwgc3VpdGUudGl0bGVzLCBzYW1wbGVyLCB0cnVlKTsKKyAgICAgICAgICAgIHNjb3Jlcy5w
dXNoKE1hdGgubWluKHNhbXBsZXIuc3RhdGlzdGljc1swXS5tZWFuKCkgKiB0ZXN0LndlaWdodCAv
IHRlc3QubWF4LCAxKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNjb3JlczsKKyAgICB9
LAorICAgIHNob3dSZWNvcmQgOiBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgc2FtcGxlciwgbWVzc2Fn
ZSkgeworICAgICAgICB0aGlzLmNsZWFyKCk7ICAgICAgICAKKyAgICAgICAgdGhpcy5fc2hvd0hl
YWRlcigiIiwgc3VpdGUudGl0bGVzLCBtZXNzYWdlKTsKKyAgICAgICAgdGhpcy5fc2hvd1Rlc3Qo
dGVzdC5uYW1lLCBzdWl0ZS50aXRsZXMsIHNhbXBsZXIsIGZhbHNlKTsgICAgICAgIAorICAgIH0s
CisgICAgc2hvd0l0ZXJhdGlvbnMgOiBmdW5jdGlvbihpdGVyYXRpb25zU2FtcGxlcnMpIHsKKyAg
ICAgICAgdGhpcy5jbGVhcigpOworCisgICAgICAgIHZhciBzY29yZXMgPSBbXTsKKyAgICAgICAg
dmFyIHRpdGxlcyA9IG51bGw7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcmF0aW9u
c1NhbXBsZXJzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHZhciBzdWl0ZU5hbWUg
aW4gaXRlcmF0aW9uc1NhbXBsZXJzW2ldKSB7CisgICAgICAgICAgICAgICAgdmFyIHN1aXRlID0g
c3VpdGVGcm9tTmFtZShzdWl0ZU5hbWUpOworICAgICAgICAgICAgICAgIGlmICh0aXRsZXMgIT0g
c3VpdGUudGl0bGVzKSB7CisgICAgICAgICAgICAgICAgICAgIHRpdGxlcyA9IHN1aXRlLnRpdGxl
czsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2hvd0hlYWRlcihzdWl0ZU5hbWUsIHRpdGxl
cywgIiIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHZhciBzdWl0ZVNj
b3JlcyA9IHRoaXMuX3Nob3dTdWl0ZShzdWl0ZSwgaXRlcmF0aW9uc1NhbXBsZXJzW2ldW3N1aXRl
TmFtZV0pOworICAgICAgICAgICAgICAgIHNjb3Jlcy5wdXNoLmFwcGx5KHNjb3Jlcywgc3VpdGVT
Y29yZXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHZhciBzdW0gPSBzY29y
ZXMucmVkdWNlKGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEgKyBiOyB9KTsKKyAgICAgICAgcmV0
dXJuIHN1bSAqIDEwMCAvIHNjb3Jlcy5sZW5ndGg7CisgICAgfQorfQpJbmRleDogUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcwkocmV2
aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvc3RhdGlz
dGljcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzNyBAQAorZnVuY3Rpb24gU3RhdGlz
dGljKCkgeworICAgIHRoaXMuX2luaXQoKTsKK30KKworU3RhdGlzdGljLnNhbXBsZU1lYW4gPSBm
dW5jdGlvbihudW1iZXJPZlNhbXBsZXMsIHN1bSkgeworICAgIGlmIChudW1iZXJPZlNhbXBsZXMg
PCAxKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gc3VtIC8gbnVtYmVyT2ZTYW1wbGVz
OworfQorCitTdGF0aXN0aWMuc2FtcGxlU3RhbmRhcmREZXZpYXRpb24gPSBmdW5jdGlvbihudW1i
ZXJPZlNhbXBsZXMsIHN1bSwgc3F1YXJlU3VtKSB7CisgICAgaWYgKG51bWJlck9mU2FtcGxlcyA8
IDIpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBNYXRoLnNxcnQoKHNxdWFyZVN1bSAt
IHN1bSAqIHN1bSAvIG51bWJlck9mU2FtcGxlcykgLyAobnVtYmVyT2ZTYW1wbGVzIC0gMSkpIDsK
K30KKworLy8gU2VlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3R1ZGVudCdzX3QtZGlz
dHJpYnV0aW9uI1RhYmxlX29mX3NlbGVjdGVkX3ZhbHVlcworLy8gVGhpcyB0YWJsZSBjb250YWlu
cyBvbmUgc2lkZWQgKGEuay5hLiB0YWlsKSB2YWx1ZXMuCitTdGF0aXN0aWMudERpc3RyaWJ1dGlv
bkludmVyc2VDREYgPSB7CisgICAgMC45OiBbCisgICAgICAgIDMuMDc3Njg0LCAxLjg4NTYxOCwg
MS42Mzc3NDQsIDEuNTMzMjA2LCAxLjQ3NTg4NCwgMS40Mzk3NTYsIDEuNDE0OTI0LCAxLjM5Njgx
NSwgMS4zODMwMjksIDEuMzcyMTg0LAorICAgICAgICAxLjM2MzQzMCwgMS4zNTYyMTcsIDEuMzUw
MTcxLCAxLjM0NTAzMCwgMS4zNDA2MDYsIDEuMzM2NzU3LCAxLjMzMzM3OSwgMS4zMzAzOTEsIDEu
MzI3NzI4LCAxLjMyNTM0MSwKKyAgICAgICAgMS4zMjMxODgsIDEuMzIxMjM3LCAxLjMxOTQ2MCwg
MS4zMTc4MzYsIDEuMzE2MzQ1LCAxLjMxNDk3MiwgMS4zMTM3MDMsIDEuMzEyNTI3LCAxLjMxMTQz
NCwgMS4zMTA0MTUsCisgICAgICAgIDEuMzA5NDY0LCAxLjMwODU3MywgMS4zMDc3MzcsIDEuMzA2
OTUyLCAxLjMwNjIxMiwgMS4zMDU1MTQsIDEuMzA0ODU0LCAxLjMwNDIzMCwgMS4zMDM2MzksIDEu
MzAzMDc3LAorICAgICAgICAxLjMwMjU0MywgMS4zMDIwMzUsIDEuMzAxNTUyLCAxLjMwMTA5MCwg
MS4zMDA2NDksIDEuMzAwMjI4LCAxLjI5OTgyNSwgMS4yOTk0MzksIDEuMjk5MDY5LCAxLjI5ODcx
NCwKKworICAgICAgICAxLjI5ODM3MywgMS4yOTgwNDUsIDEuMjk3NzMwLCAxLjI5NzQyNiwgMS4y
OTcxMzQsIDEuMjk2ODUzLCAxLjI5NjU4MSwgMS4yOTYzMTksIDEuMjk2MDY2LCAxLjI5NTgyMSwK
KyAgICAgICAgMS4yOTU1ODUsIDEuMjk1MzU2LCAxLjI5NTEzNCwgMS4yOTQ5MjAsIDEuMjk0NzEy
LCAxLjI5NDUxMSwgMS4yOTQzMTUsIDEuMjk0MTI2LCAxLjI5Mzk0MiwgMS4yOTM3NjMsCisgICAg
ICAgIDEuMjkzNTg5LCAxLjI5MzQyMSwgMS4yOTMyNTYsIDEuMjkzMDk3LCAxLjI5Mjk0MSwgMS4y
OTI3OTAsIDEuMjkyNjQzLCAxLjI5MjUwMCwgMS4yOTIzNjAsIDEuMjkyMjI0LAorICAgICAgICAx
LjI5MjA5MSwgMS4yOTE5NjEsIDEuMjkxODM1LCAxLjI5MTcxMSwgMS4yOTE1OTEsIDEuMjkxNDcz
LCAxLjI5MTM1OCwgMS4yOTEyNDYsIDEuMjkxMTM2LCAxLjI5MTAyOSwKKyAgICAgICAgMS4yOTA5
MjQsIDEuMjkwODIxLCAxLjI5MDcyMSwgMS4yOTA2MjMsIDEuMjkwNTI3LCAxLjI5MDQzMiwgMS4y
OTAzNDAsIDEuMjkwMjUwLCAxLjI5MDE2MSwgMS4yOTAwNzVdLAorICAgIDAuOTU6IFsKKyAgICAg
ICAgNi4zMTM3NTIsIDIuOTE5OTg2LCAyLjM1MzM2MywgMi4xMzE4NDcsIDIuMDE1MDQ4LCAxLjk0
MzE4MCwgMS44OTQ1NzksIDEuODU5NTQ4LCAxLjgzMzExMywgMS44MTI0NjEsCisgICAgICAgIDEu
Nzk1ODg1LCAxLjc4MjI4OCwgMS43NzA5MzMsIDEuNzYxMzEwLCAxLjc1MzA1MCwgMS43NDU4ODQs
IDEuNzM5NjA3LCAxLjczNDA2NCwgMS43MjkxMzMsIDEuNzI0NzE4LAorICAgICAgICAxLjcyMDc0
MywgMS43MTcxNDQsIDEuNzEzODcyLCAxLjcxMDg4MiwgMS43MDgxNDEsIDEuNzA1NjE4LCAxLjcw
MzI4OCwgMS43MDExMzEsIDEuNjk5MTI3LCAxLjY5NzI2MSwKKyAgICAgICAgMS42OTU1MTksIDEu
NjkzODg5LCAxLjY5MjM2MCwgMS42OTA5MjQsIDEuNjg5NTcyLCAxLjY4ODI5OCwgMS42ODcwOTQs
IDEuNjg1OTU0LCAxLjY4NDg3NSwgMS42ODM4NTEsCisgICAgICAgIDEuNjgyODc4LCAxLjY4MTk1
MiwgMS42ODEwNzEsIDEuNjgwMjMwLCAxLjY3OTQyNywgMS42Nzg2NjAsIDEuNjc3OTI3LCAxLjY3
NzIyNCwgMS42NzY1NTEsIDEuNjc1OTA1LAorCisgICAgICAgIDEuNjc1Mjg1LCAxLjY3NDY4OSwg
MS42NzQxMTYsIDEuNjczNTY1LCAxLjY3MzAzNCwgMS42NzI1MjIsIDEuNjcyMDI5LCAxLjY3MTU1
MywgMS42NzEwOTMsIDEuNjcwNjQ5LAorICAgICAgICAxLjY3MDIxOSwgMS42Njk4MDQsIDEuNjY5
NDAyLCAxLjY2OTAxMywgMS42Njg2MzYsIDEuNjY4MjcxLCAxLjY2NzkxNiwgMS42Njc1NzIsIDEu
NjY3MjM5LCAxLjY2NjkxNCwKKyAgICAgICAgMS42NjY2MDAsIDEuNjY2Mjk0LCAxLjY2NTk5Niwg
MS42NjU3MDcsIDEuNjY1NDI1LCAxLjY2NTE1MSwgMS42NjQ4ODUsIDEuNjY0NjI1LCAxLjY2NDM3
MSwgMS42NjQxMjUsCisgICAgICAgIDEuNjYzODg0LCAxLjY2MzY0OSwgMS42NjM0MjAsIDEuNjYz
MTk3LCAxLjY2Mjk3OCwgMS42NjI3NjUsIDEuNjYyNTU3LCAxLjY2MjM1NCwgMS42NjIxNTUsIDEu
NjYxOTYxLAorICAgICAgICAxLjY2MTc3MSwgMS42NjE1ODUsIDEuNjYxNDA0LCAxLjY2MTIyNiwg
MS42NjEwNTIsIDEuNjYwODgxLCAxLjY2MDcxNSwgMS42NjA1NTEsIDEuNjYwMzkxLCAxLjY2MDIz
NF0sCisgICAgMC45NzU6IFsKKyAgICAgICAgMTIuNzA2MjA1LCA0LjMwMjY1MywgMy4xODI0NDYs
IDIuNzc2NDQ1LCAyLjU3MDU4MiwgMi40NDY5MTIsIDIuMzY0NjI0LCAyLjMwNjAwNCwgMi4yNjIx
NTcsIDIuMjI4MTM5LAorICAgICAgICAyLjIwMDk4NSwgMi4xNzg4MTMsIDIuMTYwMzY5LCAyLjE0
NDc4NywgMi4xMzE0NTAsIDIuMTE5OTA1LCAyLjEwOTgxNiwgMi4xMDA5MjIsIDIuMDkzMDI0LCAy
LjA4NTk2MywKKyAgICAgICAgMi4wNzk2MTQsIDIuMDczODczLCAyLjA2ODY1OCwgMi4wNjM4OTks
IDIuMDU5NTM5LCAyLjA1NTUyOSwgMi4wNTE4MzEsIDIuMDQ4NDA3LCAyLjA0NTIzMCwgMi4wNDIy
NzIsCisgICAgICAgIDIuMDM5NTEzLCAyLjAzNjkzMywgMi4wMzQ1MTUsIDIuMDMyMjQ1LCAyLjAz
MDEwOCwgMi4wMjgwOTQsIDIuMDI2MTkyLCAyLjAyNDM5NCwgMi4wMjI2OTEsIDIuMDIxMDc1LAor
ICAgICAgICAyLjAxOTU0MSwgMi4wMTgwODIsIDIuMDE2NjkyLCAyLjAxNTM2OCwgMi4wMTQxMDMs
IDIuMDEyODk2LCAyLjAxMTc0MSwgMi4wMTA2MzUsIDIuMDA5NTc1LCAyLjAwODU1OSwKKworICAg
ICAgICAyLjAwNzU4NCwgMi4wMDY2NDcsIDIuMDA1NzQ2LCAyLjAwNDg3OSwgMi4wMDQwNDUsIDIu
MDAzMjQxLCAyLjAwMjQ2NSwgMi4wMDE3MTcsIDIuMDAwOTk1LCAyLjAwMDI5OCwKKyAgICAgICAg
MS45OTk2MjQsIDEuOTk4OTcyLCAxLjk5ODM0MSwgMS45OTc3MzAsIDEuOTk3MTM4LCAxLjk5NjU2
NCwgMS45OTYwMDgsIDEuOTk1NDY5LCAxLjk5NDk0NSwgMS45OTQ0MzcsCisgICAgICAgIDEuOTkz
OTQzLCAxLjk5MzQ2NCwgMS45OTI5OTcsIDEuOTkyNTQzLCAxLjk5MjEwMiwgMS45OTE2NzMsIDEu
OTkxMjU0LCAxLjk5MDg0NywgMS45OTA0NTAsIDEuOTkwMDYzLAorICAgICAgICAxLjk4OTY4Niwg
MS45ODkzMTksIDEuOTg4OTYwLCAxLjk4ODYxMCwgMS45ODgyNjgsIDEuOTg3OTM0LCAxLjk4NzYw
OCwgMS45ODcyOTAsIDEuOTg2OTc5LCAxLjk4NjY3NSwKKyAgICAgICAgMS45ODYzNzcsIDEuOTg2
MDg2LCAxLjk4NTgwMiwgMS45ODU1MjMsIDEuOTg1MjUxLCAxLjk4NDk4NCwgMS45ODQ3MjMsIDEu
OTg0NDY3LCAxLjk4NDIxNywgMS45ODM5NzJdLAorICAgIDAuOTk6IFsKKyAgICAgICAgMzEuODIw
NTE2LCA2Ljk2NDU1NywgNC41NDA3MDMsIDMuNzQ2OTQ3LCAzLjM2NDkzMCwgMy4xNDI2NjgsIDIu
OTk3OTUyLCAyLjg5NjQ1OSwgMi44MjE0MzgsIDIuNzYzNzY5LAorICAgICAgICAyLjcxODA3OSwg
Mi42ODA5OTgsIDIuNjUwMzA5LCAyLjYyNDQ5NCwgMi42MDI0ODAsIDIuNTgzNDg3LCAyLjU2Njkz
NCwgMi41NTIzODAsIDIuNTM5NDgzLCAyLjUyNzk3NywKKyAgICAgICAgMi41MTc2NDgsIDIuNTA4
MzI1LCAyLjQ5OTg2NywgMi40OTIxNTksIDIuNDg1MTA3LCAyLjQ3ODYzMCwgMi40NzI2NjAsIDIu
NDY3MTQwLCAyLjQ2MjAyMSwgMi40NTcyNjIsCisgICAgICAgIDIuNDUyODI0LCAyLjQ0ODY3OCwg
Mi40NDQ3OTQsIDIuNDQxMTUwLCAyLjQzNzcyMywgMi40MzQ0OTQsIDIuNDMxNDQ3LCAyLjQyODU2
OCwgMi40MjU4NDEsIDIuNDIzMjU3LAorICAgICAgICAyLjQyMDgwMywgMi40MTg0NzAsIDIuNDE2
MjUwLCAyLjQxNDEzNCwgMi40MTIxMTYsIDIuNDEwMTg4LCAyLjQwODM0NSwgMi40MDY1ODEsIDIu
NDA0ODkyLCAyLjQwMzI3MiwKKworICAgICAgICAyLjQwMTcxOCwgMi40MDAyMjUsIDIuMzk4Nzkw
LCAyLjM5NzQxMCwgMi4zOTYwODEsIDIuMzk0ODAxLCAyLjM5MzU2OCwgMi4zOTIzNzcsIDIuMzkx
MjI5LCAyLjM5MDExOSwKKyAgICAgICAgMi4zODkwNDcsIDIuMzg4MDExLCAyLjM4NzAwOCwgMi4z
ODYwMzcsIDIuMzg1MDk3LCAyLjM4NDE4NiwgMi4zODMzMDIsIDIuMzgyNDQ2LCAyLjM4MTYxNSwg
Mi4zODA4MDcsCisgICAgICAgIDIuMzgwMDI0LCAyLjM3OTI2MiwgMi4zNzg1MjIsIDIuMzc3ODAy
LCAyLjM3NzEwMiwgMi4zNzY0MjAsIDIuMzc1NzU3LCAyLjM3NTExMSwgMi4zNzQ0ODIsIDIuMzcz
ODY4LAorICAgICAgICAyLjM3MzI3MCwgMi4zNzI2ODcsIDIuMzcyMTE5LCAyLjM3MTU2NCwgMi4z
NzEwMjIsIDIuMzcwNDkzLCAyLjM2OTk3NywgMi4zNjk0NzIsIDIuMzY4OTc5LCAyLjM2ODQ5NywK
KyAgICAgICAgMi4zNjgwMjYsIDIuMzY3NTY2LCAyLjM2NzExNSwgMi4zNjY2NzQsIDIuMzY2MjQz
LCAyLjM2NTgyMSwgMi4zNjU0MDcsIDIuMzY1MDAyLCAyLjM2NDYwNiwgMi4zNjQyMTddCit9Owor
CitTdGF0aXN0aWMucHJvdG90eXBlID0geworICAgIF9pbml0IDogZnVuY3Rpb24oKSB7CisgICAg
ICAgIHRoaXMuX3N1bSA9IDA7CisgICAgICAgIHRoaXMuX3NxdWFyZVN1bSA9IDA7CisgICAgICAg
IHRoaXMuX251bWJlck9mU2FtcGxlcyA9IDA7CisgICAgfSwKKyAgICAvLyBDYWxsZWQgYWZ0ZXIg
YSB3YXJtLXVwIHBlcmlvZAorICAgIHN0YXJ0U2FtcGxpbmcgOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgdmFyIG1lYW4gPSB0aGlzLm1lYW4oKTsKKyAgICAgICAgdGhpcy5faW5pdCgpOworICAgICAg
ICB0aGlzLnNhbXBsZShtZWFuKTsKKyAgICB9LAorICAgIHNhbXBsZSA6IGZ1bmN0aW9uKHZhbHVl
KSB7CisgICAgICAgIHRoaXMuX3N1bSArPSB2YWx1ZTsKKyAgICAgICAgdGhpcy5fc3F1YXJlU3Vt
ICs9IHZhbHVlICogdmFsdWU7CisgICAgICAgICsrdGhpcy5fbnVtYmVyT2ZTYW1wbGVzOyAgICAg
ICAgCisgICAgfSwKKyAgICBtZWFuIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBTdGF0
aXN0aWMuc2FtcGxlTWVhbih0aGlzLl9udW1iZXJPZlNhbXBsZXMsIHRoaXMuX3N1bSk7CisgICAg
fSwKKyAgICBzdGFuZGFyZERldmlhdGlvbiA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4g
U3RhdGlzdGljLnNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uKHRoaXMuX251bWJlck9mU2FtcGxlcywg
dGhpcy5fc3VtLCB0aGlzLl9zcXVhcmVTdW0pOworICAgIH0sCisgICAgcGVyY2VudGFnZSA6IGZ1
bmN0aW9uKCkgeworICAgICAgICB2YXIgbWVhbiA9IHRoaXMubWVhbigpOworICAgICAgICByZXR1
cm4gbWVhbiA/IHRoaXMuc3RhbmRhcmREZXZpYXRpb24oKSAqIDEwMCAvIG1lYW4gOiAwOworICAg
IH0sCisgICAgY29uZmlkZW5jZUludGVydmFsRGVsdGEgOiBmdW5jdGlvbihjb25maWRlbmNlTGV2
ZWwpIHsKKyAgICAgICAgaWYgKHRoaXMuX251bWJlck9mU2FtcGxlcyA8IDIpCisgICAgICAgICAg
ICByZXR1cm4gTmFOOworICAgICAgICAKKyAgICAgICAgdmFyIHByb2JhYmlsaXR5ID0gKDEwMCAt
IDIgKiAoMTAwIC0gY29uZmlkZW5jZUxldmVsKSkgLyAxMDA7CisgICAgICAgIGlmICghKHByb2Jh
YmlsaXR5IGluIFN0YXRpc3RpYy50RGlzdHJpYnV0aW9uSW52ZXJzZUNERikpCisgICAgICAgICAg
ICB0aHJvdyAnVW5zdXBwb3J0ZWQgY29uZmlkZW5jZSBsZXZlbCc7CisKKyAgICAgICAgdmFyIGNk
ZkZvclByb2JhYmlsaXR5ID0gU3RhdGlzdGljLnREaXN0cmlidXRpb25JbnZlcnNlQ0RGW3Byb2Jh
YmlsaXR5XTsKKyAgICAgICAgdmFyIGRlZ3JlZXNPZkZyZWVkb20gPSBNYXRoLm1pbih0aGlzLl9u
dW1iZXJPZlNhbXBsZXMgLSAxLCBjZGZGb3JQcm9iYWJpbGl0eS5sZW5ndGgpOworICAgICAgICAK
KyAgICAgICAgdmFyIHF1YW50aWxlID0gY2RmRm9yUHJvYmFiaWxpdHlbZGVncmVlc09mRnJlZWRv
bSAtIDFdOyAvLyBUaGUgZmlyc3QgZW50cnkgaXMgZm9yIHRoZSBvbmUgZGVncmVlIG9mIGZyZWVk
b20uCisgICAgICAgIHJldHVybiBxdWFudGlsZSAqIFN0YXRpc3RpYy5zYW1wbGVTdGFuZGFyZERl
dmlhdGlvbih0aGlzLl9udW1iZXJPZlNhbXBsZXMsIHRoaXMuX3N1bSwgdGhpcy5fc3F1YXJlU3Vt
KSAvIE1hdGguc3FydCh0aGlzLl9udW1iZXJPZlNhbXBsZXMpOworICAgIH0KK30KKworZnVuY3Rp
b24gU2FtcGxlcihjb3VudCkgeworICAgIHRoaXMuc3RhdGlzdGljcyA9IFtdOworICAgIHdoaWxl
IChjb3VudC0tKQorICAgICAgICB0aGlzLnN0YXRpc3RpY3MucHVzaChuZXcgU3RhdGlzdGljKTsK
KyAgICB0aGlzLnNhbXBsZXMgPSBbXTsKKyAgICB0aGlzLnNhbXBsaW5nVGltZU9mZnNldCA9IDA7
Cit9CisKK1NhbXBsZXIucHJvdG90eXBlID0geworICAgIHN0YXJ0U2FtcGxpbmcgOiBmdW5jdGlv
bih0aW1lT2Zmc2V0KSB7CisgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlz
LnN0YXRpc3RpY3MubGVuZ3RoOyArK2luZGV4KQorICAgICAgICAgICAgdGhpcy5zdGF0aXN0aWNz
W2luZGV4XS5zdGFydFNhbXBsaW5nKCk7CisgICAgICAgICAgICAKKyAgICAgICAgdGhpcy5zYW1w
bGluZ1RpbWVPZmZzZXQgPSB0aW1lT2Zmc2V0IC8gMTAwMDsKKyAgICB9LAorICAgIHNhbXBsZSA6
IGZ1bmN0aW9uKHRpbWVPZmZzZXQsIHZhbHVlcykgeworICAgICAgICBpZiAodmFsdWVzLmxlbmd0
aCA8IHRoaXMuc3RhdGlzdGljcy5sZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAiTm90IGVub3Vn
aCBzYW1wbGUgcG9pbnRzIjsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGZvciAodmFy
IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLnN0YXRpc3RpY3MubGVuZ3RoOyArK2luZGV4KQorICAg
ICAgICAgICAgdGhpcy5zdGF0aXN0aWNzW2luZGV4XS5zYW1wbGUodmFsdWVzW2luZGV4XSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgdGhpcy5zYW1wbGVzLnB1c2goeyB0aW1lT2Zmc2V0OiB0aW1l
T2Zmc2V0IC8gMTAwMCwgdmFsdWVzOiB2YWx1ZXMgfSk7CisgICAgfQorfQpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL2FuaW1vbWV0
ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2Vz
L2FuaW1vbWV0ZXIuY3NzIj4KKyAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFy
ZS5jb20vYWpheC9saWJzL2QzLzMuNS41L2QzLm1pbi5qcyIgZGVmZXI+PC9zY3JpcHQ+ICAKKyAg
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIiBkZWZlcj48L3NjcmlwdD4g
IAorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiIGRlZmVyPjwvc2NyaXB0Pgor
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3RzLmpzIiBkZWZlcj0iIj48L3NjcmlwdD4KKyAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzIiBkZWZlcj48L3Njcmlw
dD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9hbmltb21ldGVyLmpzIiBkZWZlcj48L3Njcmlw
dD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ncmFwaC5qcyIgZGVmZXI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKyAgPG1haW4+CisgICAgPHNlY3Rpb24gaWQ9ImhvbWUiIGNsYXNzPSJz
ZWxlY3RlZCI+CisgICAgICA8cD4KKyAgICAgICAgQW5pbW9tZXRlciBpcyBhIGJyb3dzZXIgYmVu
Y2htYXJrIHRoYXQgbWVhc3VyZXMgdGhlIGNvbXBsZXhpdHkgb2YgYW4gYW5pbWF0aW9uIGZvcgor
ICAgICAgICB3aGljaCBhIGJyb3dzZXIgY2FuIGFjaGlldmUgNTAgRlBTIChmcmFtZSBwZXIgc2Vj
b25kKS4gSXQgdXNlcyBhZGFwdGl2ZSBhbmltYXRpb25zCisgICAgICAgIHRvIHR1bmUgdGhlaXIg
Y29tcGxleGl0aWVzIHRvIHN0YXkgY2xvc2UgdG8gNTAgRlBTLgorICAgICAgPC9wPgorICAgICAg
PGRpdiBjbGFzcz0ib3B0aW9ucyI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbHVtbiI+CisgICAg
ICAgICAgPGxhYmVsPjxpbnB1dCBpZD0iaHRtbC1zdWl0ZSIgdHlwZT0iY2hlY2tib3giIGNoZWNr
ZWQ+IEhUTUwgZWxlbWVudHMgc3VpdGU8L2xhYmVsPjxicj4KKyAgICAgICAgICA8bGFiZWw+PGlu
cHV0IGlkPSJjYW52YXMtc3VpdGUiIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPiBDYW52YXMgZHJh
d2luZ3Mgc3VpdGU8L2xhYmVsPjxicj4KKyAgICAgICAgICA8bGFiZWw+PGlucHV0IGlkPSJzdmct
c3VpdGUiIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPiBTVkcgZWxlbWVudHMgc3VpdGU8L2xhYmVs
PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdj4KKyAgICAgICAgICA8bGFiZWw+VGVzdCBp
bnRlcnZhbDogPGlucHV0IGlkPSJ0ZXN0LWludGVydmFsIiB0eXBlPSJudW1iZXIiIHZhbHVlPSIz
MCI+IHNlY29uZHM8L2xhYmVsPjxicj4KKyAgICAgICAgICA8bGFiZWw+RnJhbWUgcmF0ZTogPGlu
cHV0IGlkPSJmcmFtZS1yYXRlIiB0eXBlPSJudW1iZXIiIHZhbHVlPSI1MCI+IGZwczwvbGFiZWw+
PGJyPgorICAgICAgICAgIDxsYWJlbD48aW5wdXQgaWQ9ImVzdGltYXRlZC1mcmFtZS1yYXRlIiB0
eXBlPSJjaGVja2JveCIgY2hlY2tlZD4gRXN0aW1hdGVkIEZyYW1lIFJhdGU8L2xhYmVsPjxicj4K
KyAgICAgICAgICA8bGFiZWw+PGlucHV0IGlkPSJmaXgtdGVzdC1jb21wbGV4aXR5IiB0eXBlPSJj
aGVja2JveCI+IEZpeCB0ZXN0IGNvbXBsZXhpdHkgYWZ0ZXIgd2FybXVwPC9sYWJlbD4KKyAgICAg
ICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbnMiPgorICAg
ICAgICA8YnV0dG9uIG9uY2xpY2s9InN0YXJ0VGVzdCgpIj5TdGFydCBUZXN0PC9idXR0b24+Cisg
ICAgICA8L2Rpdj4KKyAgICA8L3NlY3Rpb24+CisgICAgPHNlY3Rpb24gaWQ9InJ1bm5pbmciPgor
ICAgICAgPGRpdiBpZD0idGVzdENvbnRhaW5lciI+PC9kaXY+CisgICAgICA8ZGl2IGlkPSJwcm9n
cmVzcyI+CisgICAgICAgIDxkaXYgaWQ9InByb2dyZXNzLWNvbXBsZXRlZCI+PC9kaXY+CisgICAg
ICA8L2Rpdj4KKyAgICAgIDxkaXYgaWQ9InJlY29yZCI+CisgICAgICAgIDx0YWJsZSBjbGFzcz0i
cmVjb3JkLXRhYmxlIj48L3RhYmxlPgorICAgICAgPC9kaXY+CisgICAgPC9zZWN0aW9uPgorICAg
IDxzZWN0aW9uIGlkPSJyZXN1bHRzIj4KKyAgICAgIDxoMT5SZXN1bHRzPC9oMT4KKyAgICAgIDx0
YWJsZSBjbGFzcz0icmVzdWx0cy10YWJsZSI+PC90YWJsZT4KKyAgICAgIDxkaXYgY2xhc3M9ImJ1
dHRvbnMiPgorICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InN0YXJ0VGVzdCgpIj5UZXN0IEFnYWlu
PC9idXR0b24+CisgICAgICA8L2Rpdj4KKyAgICA8L3NlY3Rpb24+ICAKKyAgICA8c2VjdGlvbiBp
ZD0iZ3JhcGgiPgorICAgICAgPGgxPkdyYXBoPC9oMT4KKyAgICAgIDxkaXYgaWQ9ImdyYXBoQ29u
dGFpbmVyIj48L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbnMiPgorICAgICAgICA8YnV0
dG9uIG9uY2xpY2s9InNob3dSZXN1bHRzKCkiPlJlc3VsdHM8L2J1dHRvbj4KKyAgICAgICAgPGJ1
dHRvbiBvbmNsaWNrPSJzdGFydFRlc3QoKSI+VGVzdCBBZ2FpbjwvYnV0dG9uPiAgICAgICAgCisg
ICAgICA8L2Rpdj4KKyAgICA8L3NlY3Rpb24+ICAKKyAgPC9tYWluPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5p
bW9tZXRlci5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1
bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5jc3MJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDIxNCBAQAorYm9keSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
cmdiKDk2LCA5NiwgOTYpOworICAgIGNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7CisgICAgZm9u
dC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgVmVyZGFuYSwgc2Fucy1zZXJp
ZjsKK30KKworbWFpbiB7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIHdpZHRoOiA4MDBweDsKKyAgICBoZWlnaHQ6IDYwMHB4OworICAgIHRvcDogNTAl
OworICAgIGxlZnQ6IDUwJTsKKyAgICBtYXJnaW4tdG9wOiAtMzIxcHg7CisgICAgbWFyZ2luLWxl
ZnQ6IC00MjFweDsKKyAgICBwYWRkaW5nOiAxNXB4OworICAgIGJvcmRlcjogNnB4IHNvbGlkIHJn
YigyMzUsIDIzNSwgMjM1KTsKKyAgICBib3JkZXItcmFkaXVzOiAyMHB4OworfQorCitsYWJlbCwg
cCB7CisgICAgZm9udC1zaXplOiAxNnB4OworICAgIGxpbmUtaGVpZ2h0OiAyMXB4OworfQorCitz
ZWN0aW9uIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCitzZWN0aW9uID4gcCB7CisgICAgbWFy
Z2luOiAxMHB4IDIwcHg7Cit9CisKK3NlY3Rpb24jaG9tZSA+IHAgeworICAgIG1hcmdpbjogMCBh
dXRvOworICAgIHdpZHRoOiA3MCU7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworfQorCitzZWN0
aW9uI2hvbWUgPiBwOmZpcnN0LWNoaWxkIHsKKyAgICBtYXJnaW4tdG9wOiAxNjBweDsKKyAgICB0
ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKK3NlY3Rpb24uc2VsZWN0ZWQgeworICAgIGRpc3BsYXk6
IGJsb2NrOworfQorCisjdGVzdENvbnRhaW5lciB7CisgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgIHRvcDogMTVweDsKKyAgICBsZWZ0OiAxNXB4OworICAgIHdpZHRoOiA4MDBweDsKKyAgICBo
ZWlnaHQ6IDYwMHB4OworfQorCitzZWN0aW9uI3J1bm5pbmcgPiAjcHJvZ3Jlc3MgeworICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBib3R0b206IC02cHg7CisgICAgbGVmdDogNjBweDsKKyAg
ICByaWdodDogNjBweDsKKyAgICBoZWlnaHQ6IDZweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2IoMTI4LCAxMjgsIDEyOCk7CisgICAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCByZ2IoNDYsIDUx
LCA1NSk7CisgICAgYm9yZGVyLXJpZ2h0OiA2cHggc29saWQgcmdiKDQ2LCA1MSwgNTUpOworfQor
CitzZWN0aW9uI3J1bm5pbmcgI3Byb2dyZXNzLWNvbXBsZXRlZCB7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAgIGhlaWdodDogNnB4OworICAg
IHdpZHRoOiAwOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzUsIDIzNSwgMjM1KTsKK30K
Kworc2VjdGlvbiNydW5uaW5nID4gI3JlY29yZCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgIGJvdHRvbTogLTEzMHB4OworICAgIGxlZnQ6IDBweDsKKyAgICByaWdodDogMHB4OworICAg
IGhlaWdodDogNzVweDsKKyAgICBjb2xvcjogcmdiKDEyOCwgMTI4LCAxMjgpOworICAgIHBhZGRp
bmc6IDE1cHg7CisgICAgYm9yZGVyOiA2cHggc29saWQgcmdiKDIzNSwgMjM1LCAyMzUpOworICAg
IGJvcmRlci1yYWRpdXM6IDIwcHg7Cit9CisKK3NlY3Rpb24jcnVubmluZyA+ICNyZWNvcmQgPiB0
YWJsZSwKK3NlY3Rpb24jcmVzdWx0cyA+IHRhYmxlIHsKKyAgICB3aWR0aDogMTAwJTsKK30KKwor
c2VjdGlvbiNydW5uaW5nID4gI3JlY29yZCA+IHRhYmxlIHRkLCB0aCwKK3NlY3Rpb24jcmVzdWx0
cyA+IHRhYmxlIHRkLCB0aCB7CisgICAgZm9udC1zaXplOiAxMnB4OworICAgIGJvcmRlcjogMXB4
IHNvbGlkICM5OGJmMjE7CisgICAgcGFkZGluZzogM3B4IDdweCAycHggN3B4OworfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorc2VjdGlvbiNydW5uaW5nID4g
I3JlY29yZCA+IHRhYmxlIHRyLmFsdCwgdGQKK3NlY3Rpb24jcmVzdWx0cyA+IHRhYmxlIHRyLmFs
dCwgdGQgeworICAgIGNvbG9yOiAjMDAwMDAwOworICAgIGJhY2tncm91bmQtY29sb3I6ICNFQUYy
RDM7Cit9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK3Nl
Y3Rpb24jcnVubmluZyA+ICNyZWNvcmQgPiB0YWJsZSB0aCwKK3NlY3Rpb24jcmVzdWx0cyA+IHRh
YmxlIHRoIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQTdDOTQyOyAKKyAgICB0ZXh0LWFsaWdu
OiBjZW50ZXI7Cit9CisKKy5vcHRpb25zIHsKKyAgICBtYXJnaW46MCBhdXRvOyAgICAKKyAgICBt
YXJnaW4tdG9wOiAzMHB4OworICAgIHdpZHRoOiA1MDBweDsKKyAgICBhbGlnbjogY2VudGVyOwor
fQorCisuY29sdW1uIHsKKyAgICB3aWR0aDogNDUlOworICAgIGZsb2F0OmxlZnQ7CisgICAgaGVp
Z2h0OiAxMjBweDsKKyAgICBwYWRkaW5nOjVweDsKK30KKworaW5wdXRbdHlwZT0ibnVtYmVyIl0g
eworICAgd2lkdGg6NTBweDsKK30KKworLmJ1dHRvbnMgeworICAgIG1hcmdpbi10b3A6IDEwcHg7
CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGNsZWFyOiBib3RoOworfQorCitidXR0b24g
eworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKyAgICBib3JkZXI6IDNweCBzb2xpZCBy
Z2IoMjM1LCAyMzUsIDIzNSk7CisgICAgYm9yZGVyLXJhZGl1czogMTBweDsKKyAgICBtaW4td2lk
dGg6IDIwMHB4OworICAgIHBhZGRpbmc6IDVweCAyMHB4OworICAgIG1hcmdpbjogMCA0MHB4Owor
ICAgIGZvbnQtc2l6ZTogMjVweDsKKyAgICBjb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOworICAg
IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworCisgICAgLXdlYmtpdC11c2VyLXNlbGVj
dDogbm9uZTsKK30KKworYnV0dG9uOmFjdGl2ZSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdi
KDIzNSwgMjM1LCAyMzUpOworICAgIGNvbG9yOiByZ2IoNDYsIDUxLCA1NSk7CisgICAgYm9yZGVy
LWNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSkgIWltcG9ydGFudDsKK30KKworYnV0dG9uOmZvY3Vz
IHsKKyAgICBvdXRsaW5lOiBub25lOworICAgIGJvcmRlci1jb2xvcjogcmdiKDIzMiwgNzksIDc5
KTsKK30KKworLnNtYWxsLWJ1dHRvbiB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwor
ICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYig5NiwgOTYsIDk2KTsKKyAgICBib3JkZXItcmFkaXVz
OiAycHg7CisgICAgcGFkZGluZzogMXB4IDRweDsKKyAgICBtYXJnaW46IDAgNHB4OworICAgIGJh
Y2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICAgIGN1cnNvcjogcG9pbnRlcjsKKyAgICB0
ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKK30KKwor
I2dyYXBoQ29udGFpbmVyIHsKKyAgZm9udDogMTBweCBzYW5zLXNlcmlmOworICBjb2xvcjogcmdi
KDIzNSwgMjM1LCAyMzUpOyAgCit9CisKKy5heGlzIHBhdGgsCisuYXhpcyBsaW5lIHsKKyAgZmls
bDogbm9uZTsKKyAgc3Ryb2tlOiByZ2IoMjM1LCAyMzUsIDIzNSk7CisgIHNoYXBlLXJlbmRlcmlu
ZzogY3Jpc3BFZGdlczsKK30KKworLmxlZnQtc2FtcGxlcyB7CisgIGZpbGw6IG5vbmU7CisgIHN0
cm9rZTogc3RlZWxibHVlOworICBzdHJva2Utd2lkdGg6IDEuNXB4OworfQorCisucmlnaHQtc2Ft
cGxlcyB7CisgICAgZmlsbDogbm9uZTsKKyAgICBzdHJva2U6IHJlZDsKKyAgICBzdHJva2Utd2lk
dGg6IDEuNXB4OworfQorCisuc21hcGxlLXRpbWUgeworICAgIGZpbGw6IG5vbmU7CisgICAgc3Ry
b2tlOiBncmVlbjsKKyAgICBzdHJva2Utd2lkdGg6IDEuNXB4OworfQorCisubGVmdC1tZWFuIHsK
KyAgICBmaWxsOiBub25lOworICAgIHN0cm9rZTogeWVsbG93OworICAgIHN0cm9rZS13aWR0aDog
MS41cHg7Cit9CisKKy5yaWdodC1tZWFuIHsKKyAgICBmaWxsOiBub25lOworICAgIHN0cm9rZTog
bWFnZW50YTsKKyAgICBzdHJva2Utd2lkdGg6IDEuNXB4OworfQpJbmRleDogUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21l
dGVyLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5l
ci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNyBA
QAord2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudCA9IHsKKyAgICBpdGVyYXRpb25Db3VudDog
MSwKKyAgICB0ZXN0c0NvdW50OiBudWxsLAorICAgIHByb2dyZXNzQmFyOiBudWxsLAorICAgIHJl
Y29yZFRhYmxlOiBudWxsLAorICAgIG9wdGlvbnM6IHsgdGVzdEludGVydmFsOiAzMDAwMCwgZnJh
bWVSYXRlOiA1MCwgZXN0aW1hdGVkRnJhbWVSYXRlOiB0cnVlLCBmaXhUZXN0Q29tcGxleGl0eSA6
IGZhbHNlIH0sCisgICAgc2NvcmU6IDAsCisgICAgX2l0ZXJhdGlvbnNTYW1wbGVyczogW10sCisg
ICAgX3Jlc3VsdHNUYWJsZTogbnVsbCwKKyAgICBfaXNDaHJvbWU6IC9DaHJvbWUvLnRlc3QobmF2
aWdhdG9yLnVzZXJBZ2VudCkgJiYgL0dvb2dsZSBJbmMvLnRlc3QobmF2aWdhdG9yLnZlbmRvciks
CisgICAgX2lzU2FmYXJpOiAvU2FmYXJpLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmIC9B
cHBsZSBDb21wdXRlci8udGVzdChuYXZpZ2F0b3IudmVuZG9yKSwKKyAgICB3aWxsQWRkVGVzdEZy
YW1lOiBmdW5jdGlvbiAoZnJhbWUpIHsKKyAgICAgICAgdmFyIG1haW4gPSBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCJtYWluIik7CisgICAgICAgIHZhciBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUo
bWFpbik7CisgICAgICAgIGZyYW1lLnN0eWxlLmxlZnQgPSBtYWluLm9mZnNldExlZnQgKyBwYXJz
ZUludChzdHlsZS5ib3JkZXJMZWZ0V2lkdGgpICsgcGFyc2VJbnQoc3R5bGUucGFkZGluZ0xlZnQp
ICsgInB4IjsKKyAgICAgICAgZnJhbWUuc3R5bGUudG9wID0gbWFpbi5vZmZzZXRUb3AgKyBwYXJz
ZUludChzdHlsZS5ib3JkZXJUb3BXaWR0aCkgKyBwYXJzZUludChzdHlsZS5wYWRkaW5nVG9wKSAr
ICJweCI7CisgICAgfSwKKyAgICBkaWRSdW5UZXN0OiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRo
aXMucHJvZ3Jlc3NCYXIuaW5jUmFuZ2UoKTsKKyAgICB9LAorICAgIHdpbGxTdGFydEZpcnN0SXRl
cmF0aW9uOiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRoaXMuX2l0ZXJhdGlvbnNTYW1wbGVycyA9
IFtdOworICAgICAgICB0aGlzLl9yZXN1bHRzVGFibGUgPSBuZXcgUmVjb3JkVGFibGUoZG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbCgiLnJlc3VsdHMtdGFibGUiKVswXSk7CisgICAgICAgIAorICAg
ICAgICB0aGlzLnByb2dyZXNzQmFyID0gbmV3IFByb2dyZXNzQmFyKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwcm9ncmVzcy1jb21wbGV0ZWQiKSwgdGhpcy50ZXN0c0NvdW50KTsKKyAgICAgICAg
dGhpcy5yZWNvcmRUYWJsZSA9IG5ldyBSZWNvcmRUYWJsZShkb2N1bWVudC5xdWVyeVNlbGVjdG9y
QWxsKCIucmVjb3JkLXRhYmxlIilbMF0pOworICAgIH0sCisgICAgZGlkUnVuU3VpdGVzOiBmdW5j
dGlvbiAoc3VpdGVzU2FtcGxlcnMpIHsKKyAgICAgICAgdGhpcy5faXRlcmF0aW9uc1NhbXBsZXJz
LnB1c2goc3VpdGVzU2FtcGxlcnMpOworICAgIH0sCisgICAgZGlkRmluaXNoTGFzdEl0ZXJhdGlv
bjogZnVuY3Rpb24gKCkgeworICAgICAgICB0aGlzLnNjb3JlID0gdGhpcy5fcmVzdWx0c1RhYmxl
LnNob3dJdGVyYXRpb25zKHRoaXMuX2l0ZXJhdGlvbnNTYW1wbGVycywgIiIpOworICAgICAgICBz
aG93UmVzdWx0cygpOworICAgIH0sCisgICAgYnJvd3NlciA6IGZ1bmN0aW9uKCkgeworICAgICAg
ICBpZiAodGhpcy5faXNDaHJvbWUpCisgICAgICAgICAgICByZXR1cm4gIkNocm9tZSI7CisgICAg
ICAgIGlmICh0aGlzLl9pc1NhZmFyaSkKKyAgICAgICAgICAgIHJldHVybiAiU2FmYXJpIjsKKyAg
ICAgICAgcmV0dXJuICIiOworICAgIH0KK30KKworZnVuY3Rpb24gc2hvd1NlY3Rpb24oc2VjdGlv
bklkZW50aWZpZXIsIHB1c2hTdGF0ZSkgeworICAgIHZhciBjdXJyZW50U2VjdGlvbkVsZW1lbnQg
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzZWN0aW9uLnNlbGVjdGVkIik7CisgICAgY29uc29s
ZS5hc3NlcnQoY3VycmVudFNlY3Rpb25FbGVtZW50KTsKKworICAgIHZhciBuZXdTZWN0aW9uRWxl
bWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlY3Rpb25JZGVudGlmaWVyKTsKKyAgICBj
b25zb2xlLmFzc2VydChuZXdTZWN0aW9uRWxlbWVudCk7CisKKyAgICBjdXJyZW50U2VjdGlvbkVs
ZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic2VsZWN0ZWQiKTsKKyAgICBuZXdTZWN0aW9uRWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIpOworCisgICAgaWYgKHB1c2hTdGF0ZSkKKyAgICAg
ICAgaGlzdG9yeS5wdXNoU3RhdGUoe3NlY3Rpb246IHNlY3Rpb25JZGVudGlmaWVyfSwgZG9jdW1l
bnQudGl0bGUpOworfQorCitmdW5jdGlvbiBzdGFydEJlbmNobWFyaygpIHsKKyAgICB2YXIgY2hl
Y2tib3hlcyA9IFsgCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJodG1sLXN1aXRl
IiksIAorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzLXN1aXRlIiksIAor
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3ZnLXN1aXRlIikKKyAgICBdOworICAg
IHZhciBlbmFibGVkU3VpdGVzID0gU3VpdGVzLmZpbHRlcihmdW5jdGlvbiAoc3VpdGUsIGluZGV4
KSB7IHJldHVybiAhc3VpdGUuZGlzYWJsZWQgJiYgY2hlY2tib3hlc1tpbmRleF0uY2hlY2tlZDsg
fSk7CisgICAgdmFyIHRlc3RzQ291bnQgPSBlbmFibGVkU3VpdGVzLnJlZHVjZShmdW5jdGlvbiAo
dGVzdHNDb3VudCwgc3VpdGUpIHsgcmV0dXJuIHRlc3RzQ291bnQgKyBzdWl0ZS50ZXN0cy5sZW5n
dGg7IH0sIDApOworICAgIGJlbmNobWFya1J1bm5lckNsaWVudC50ZXN0c0NvdW50ID0gYmVuY2ht
YXJrUnVubmVyQ2xpZW50Lml0ZXJhdGlvbkNvdW50ICogdGVzdHNDb3VudDsKKyAgICBiZW5jaG1h
cmtSdW5uZXJDbGllbnQub3B0aW9uc1sidGVzdEludGVydmFsIl0gPSBwYXJzZUludChkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdC1pbnRlcnZhbCIpLnZhbHVlKSAqIDEwMDA7CisgICAgYmVu
Y2htYXJrUnVubmVyQ2xpZW50Lm9wdGlvbnNbImZyYW1lUmF0ZSJdID0gcGFyc2VJbnQoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImZyYW1lLXJhdGUiKS52YWx1ZSk7CisgICAgYmVuY2htYXJrUnVu
bmVyQ2xpZW50Lm9wdGlvbnNbImVzdGltYXRlZEZyYW1lUmF0ZSJdID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImVzdGltYXRlZC1mcmFtZS1yYXRlIikuY2hlY2tlZDsgICAgCisgICAgYmVuY2ht
YXJrUnVubmVyQ2xpZW50Lm9wdGlvbnNbImZpeFRlc3RDb21wbGV4aXR5Il0gPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZml4LXRlc3QtY29tcGxleGl0eSIpLmNoZWNrZWQ7CisgICAgdmFyIHJ1
bm5lciA9IG5ldyBCZW5jaG1hcmtSdW5uZXIoZW5hYmxlZFN1aXRlcywgYmVuY2htYXJrUnVubmVy
Q2xpZW50KTsKKyAgICBydW5uZXIucnVuTXVsdGlwbGVJdGVyYXRpb25zKGJlbmNobWFya1J1bm5l
ckNsaWVudC5pdGVyYXRpb25Db3VudCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAg
ICBzaG93U2VjdGlvbigicnVubmluZyIpOworICAgIHN0YXJ0QmVuY2htYXJrKCk7Cit9CisKK2Z1
bmN0aW9uIHNob3dSZXN1bHRzKHNjb3JlKSB7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCIjcmVzdWx0cyA+IGgxIik7CisgICAgZWxlbWVudC50ZXh0Q29udGVudCA9
ICJSZXN1bHRzOiIKKyAgICAKKyAgICB2YXIgYnJvd3NlciA9IGJlbmNobWFya1J1bm5lckNsaWVu
dC5icm93c2VyKCk7ICAgIAorICAgIGlmIChicm93c2VyLmxlbmd0aCkKKyAgICAgICAgZWxlbWVu
dC50ZXh0Q29udGVudCArPSAiIFticm93c2VyID0gIiArIGJyb3dzZXIgKyAiXSI7CisKKyAgICB2
YXIgc2NvcmUgPSBiZW5jaG1hcmtSdW5uZXJDbGllbnQuc2NvcmUudG9GaXhlZCgyKTsKKyAgICBl
bGVtZW50LnRleHRDb250ZW50ICs9ICIgW1Njb3JlID0gIiArIHNjb3JlICsgIl0iOworICAgICAg
ICAKKyAgICBzaG93U2VjdGlvbigicmVzdWx0cyIsIHRydWUpOworfQorCitmdW5jdGlvbiBzaG93
R3JhcGgodGVzdE5hbWUsIGF4aXNlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KSB7Cisg
ICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZ3JhcGggPiBoMSIpOwor
ICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSAiR3JhcGg6IgorCisgICAgdmFyIGJyb3dzZXIgPSBi
ZW5jaG1hcmtSdW5uZXJDbGllbnQuYnJvd3NlcigpOyAgICAKKyAgICBpZiAoYnJvd3Nlci5sZW5n
dGgpCisgICAgICAgIGVsZW1lbnQudGV4dENvbnRlbnQgKz0gIiBbYnJvd3NlciA9ICIgKyBicm93
c2VyICsgIl0iOworCisgICAgaWYgKHRlc3ROYW1lLmxlbmd0aCkKKyAgICAgICAgZWxlbWVudC50
ZXh0Q29udGVudCArPSAiIFt0ZXN0ID0gIiArIHRlc3ROYW1lICsgIl0iOworICAgICAgICAgICAg
CisgICAgZ3JhcGgoIiNncmFwaENvbnRhaW5lciIsIG5ldyBQb2ludCg3MDAsIDQwMCksIG5ldyBJ
bnNldHMoMjAsIDUwLCAyMCwgNTApLCBheGlzZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGltZU9mZnNl
dCk7CisgICAgc2hvd1NlY3Rpb24oImdyYXBoIiwgdHJ1ZSk7ICAgIAorfQpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291
cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDE4OCBAQAorZnVuY3Rpb24gQmVuY2htYXJrUnVubmVyU3RhdGUo
c3VpdGVzKSB7CisgICAgdGhpcy5fc3VpdGVzID0gc3VpdGVzOworICAgIHRoaXMuX3N1aXRlSW5k
ZXggPSAtMTsKKyAgICB0aGlzLl90ZXN0SW5kZXggPSAwOworICAgIHRoaXMubmV4dCgpOworfQor
CitCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUuY3VycmVudFN1aXRlID0gZnVuY3Rpb24o
KSB7CisgICAgcmV0dXJuIHRoaXMuX3N1aXRlc1t0aGlzLl9zdWl0ZUluZGV4XTsKK30KKworQmVu
Y2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmN1cnJlbnRUZXN0ID0gZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIHN1aXRlID0gdGhpcy5jdXJyZW50U3VpdGUoKTsKKyAgICByZXR1cm4gc3VpdGUgPyBz
dWl0ZS50ZXN0c1t0aGlzLl90ZXN0SW5kZXhdIDogbnVsbDsKK30KKworQmVuY2htYXJrUnVubmVy
U3RhdGUucHJvdG90eXBlLmlzRmlyc3RUZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuICF0
aGlzLl90ZXN0SW5kZXg7Cit9CisKK0JlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5uZXh0
ID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5fdGVzdEluZGV4Kys7CisKKyAgICB2YXIgc3VpdGUg
PSB0aGlzLl9zdWl0ZXNbdGhpcy5fc3VpdGVJbmRleF07CisgICAgaWYgKHN1aXRlICYmIHRoaXMu
X3Rlc3RJbmRleCA8IHN1aXRlLnRlc3RzLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHRoaXM7CisK
KyAgICB0aGlzLl90ZXN0SW5kZXggPSAwOworICAgIGRvIHsKKyAgICAgICAgdGhpcy5fc3VpdGVJ
bmRleCsrOworICAgIH0gd2hpbGUgKHRoaXMuX3N1aXRlSW5kZXggPCB0aGlzLl9zdWl0ZXMubGVu
Z3RoICYmIHRoaXMuX3N1aXRlc1t0aGlzLl9zdWl0ZUluZGV4XS5kaXNhYmxlZCk7CisKKyAgICBy
ZXR1cm4gdGhpczsKK30KKworQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLnByZXBhcmVD
dXJyZW50VGVzdCA9IGZ1bmN0aW9uKHJ1bm5lciwgZnJhbWUpIHsKKyAgICB2YXIgc3VpdGUgPSB0
aGlzLmN1cnJlbnRTdWl0ZSgpOworICAgIHZhciB0ZXN0ID0gdGhpcy5jdXJyZW50VGVzdCgpOwor
ICAgIHZhciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7CisgICAgZnJhbWUub25sb2FkID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIHN1aXRlLnByZXBhcmUocnVubmVyLCBmcmFtZS5jb250ZW50
V2luZG93LCBmcmFtZS5jb250ZW50RG9jdW1lbnQpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7IHBy
b21pc2UucmVzb2x2ZShyZXN1bHQpOyB9KTsKKyAgICB9CisgICAgZnJhbWUuc3JjID0gdGVzdC51
cmw7CisgICAgcmV0dXJuIHByb21pc2U7Cit9CisKK2Z1bmN0aW9uIEJlbmNobWFya1J1bm5lcihz
dWl0ZXMsIGNsaWVudCkgeworICAgIHRoaXMuX3N1aXRlcyA9IHN1aXRlczsKKyAgICB0aGlzLl9j
bGllbnQgPSBjbGllbnQ7Cit9CisKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUud2FpdEZvckVs
ZW1lbnQgPSBmdW5jdGlvbihzZWxlY3RvcikgeworICAgIHZhciBwcm9taXNlID0gbmV3IFNpbXBs
ZVByb21pc2U7CisgICAgdmFyIGNvbnRlbnREb2N1bWVudCA9IHRoaXMuX2ZyYW1lLmNvbnRlbnRE
b2N1bWVudDsKKworICAgIGZ1bmN0aW9uIHJlc29sdmVJZlJlYWR5KCkgeworICAgICAgICB2YXIg
ZWxlbWVudCA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKKyAgICAg
ICAgaWYgKGVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gcHJvbWlzZS5yZXNvbHZlKGVsZW1l
bnQpOworICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmVJZlJlYWR5LCA1MCk7CisgICAgfQorCisg
ICAgcmVzb2x2ZUlmUmVhZHkoKTsKKyAgICByZXR1cm4gcHJvbWlzZTsKK30KKworQmVuY2htYXJr
UnVubmVyLnByb3RvdHlwZS5fYXBwZW5kRnJhbWUgPSBmdW5jdGlvbihzcmMpIHsKKyAgICB2YXIg
ZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBmcmFtZS5zdHls
ZS53aWR0aCA9ICI4MDBweCI7CisgICAgZnJhbWUuc3R5bGUuaGVpZ2h0ID0gIjYwMHB4IjsKKyAg
ICBmcmFtZS5zdHlsZS5ib3JkZXIgPSAiMHB4IG5vbmUiOworICAgIGZyYW1lLnN0eWxlLnBvc2l0
aW9uID0gImFic29sdXRlIjsKKyAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoInNjcm9sbGluZyIsICJu
byIpOworCisgICAgdmFyIG1hcmdpbkxlZnQgPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmJvZHkpLm1hcmdpbkxlZnQpOworICAgIHZhciBtYXJnaW5Ub3AgPSBwYXJzZUludChn
ZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLm1hcmdpblRvcCk7CisgICAgaWYgKHdpbmRv
dy5pbm5lcldpZHRoID4gODAwICsgbWFyZ2luTGVmdCAmJiB3aW5kb3cuaW5uZXJIZWlnaHQgPiA2
MDAgKyBtYXJnaW5Ub3ApIHsKKyAgICAgICAgZnJhbWUuc3R5bGUubGVmdCA9IG1hcmdpbkxlZnQg
KyAicHgiOworICAgICAgICBmcmFtZS5zdHlsZS50b3AgPSBtYXJnaW5Ub3AgKyAicHgiOworICAg
IH0gZWxzZSB7CisgICAgICAgIGZyYW1lLnN0eWxlLmxlZnQgPSAiMHB4IjsKKyAgICAgICAgZnJh
bWUuc3R5bGUudG9wID0gIjBweCI7CisgICAgfQorCisgICAgaWYgKHRoaXMuX2NsaWVudCAmJiB0
aGlzLl9jbGllbnQud2lsbEFkZFRlc3RGcmFtZSkKKyAgICAgICAgdGhpcy5fY2xpZW50LndpbGxB
ZGRUZXN0RnJhbWUoZnJhbWUpOworCisgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZnJh
bWUsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisgICAgdGhpcy5fZnJhbWUgPSBmcmFtZTsK
KyAgICByZXR1cm4gZnJhbWU7Cit9CisKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3JlbW92
ZUZyYW1lID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKHRoaXMuX2ZyYW1lKSB7CisgICAgICAgIHRo
aXMuX2ZyYW1lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fZnJhbWUpOworICAgICAgICB0
aGlzLl9mcmFtZSA9IG51bGw7CisgICAgfQorfQorCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBl
Ll9ydW5UZXN0QW5kUmVjb3JkUmVzdWx0cyA9IGZ1bmN0aW9uKHN0YXRlKSB7CisgICAgdmFyIHBy
b21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICB2YXIgc3VpdGUgPSBzdGF0ZS5jdXJyZW50
U3VpdGUoKTsKKyAgICB2YXIgdGVzdCA9IHN0YXRlLmN1cnJlbnRUZXN0KCk7CisgICAgCisgICAg
aWYgKHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGllbnQud2lsbFJ1blRlc3RUZXN0KQorICAgICAg
ICB0aGlzLl9jbGllbnQud2lsbFJ1blRlc3Qoc3VpdGUsIHRlc3QpOworCisgICAgdmFyIGNvbnRl
bnRXaW5kb3cgPSB0aGlzLl9mcmFtZS5jb250ZW50V2luZG93OworICAgIHZhciBzZWxmID0gdGhp
czsKKworICAgIHN1aXRlLnJ1bihjb250ZW50V2luZG93LCB0ZXN0LCB0aGlzLl9jbGllbnQub3B0
aW9ucywgdGhpcy5fY2xpZW50LnJlY29yZFRhYmxlLCB0aGlzLl9jbGllbnQucHJvZ3Jlc3NCYXIp
LnRoZW4oZnVuY3Rpb24oc2FtcGxlcikgeworICAgICAgICB2YXIgc2FtcGxlcnMgPSBzZWxmLl9z
dWl0ZXNTYW1wbGVyc1tzdWl0ZS5uYW1lXSB8fCBbXTsKKyAgICAgICAgCisgICAgICAgIHNhbXBs
ZXJzW3Rlc3QubmFtZV0gPSBzYW1wbGVyOworICAgICAgICBzZWxmLl9zdWl0ZXNTYW1wbGVyc1tz
dWl0ZS5uYW1lXSA9IHNhbXBsZXJzOworCisgICAgICAgIGlmIChzZWxmLl9jbGllbnQgJiYgc2Vs
Zi5fY2xpZW50LmRpZFJ1blRlc3QpCisgICAgICAgICAgICBzZWxmLl9jbGllbnQuZGlkUnVuVGVz
dChzdWl0ZSwgdGVzdCk7CisgICAgICAgIAorICAgICAgICBzdGF0ZS5uZXh0KCk7CisgICAgICAg
IGlmIChzdGF0ZS5jdXJyZW50U3VpdGUoKSAhPSBzdWl0ZSkKKyAgICAgICAgICAgIHNlbGYuX3Jl
bW92ZUZyYW1lKCk7CisgICAgICAgIHByb21pc2UucmVzb2x2ZShzdGF0ZSk7CisgICAgfSk7Cisg
ICAgCisgICAgcmV0dXJuIHByb21pc2U7Cit9CisKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUu
c3RlcCA9IGZ1bmN0aW9uKHN0YXRlKSB7CisgICAgaWYgKCFzdGF0ZSkgeworICAgICAgICBzdGF0
ZSA9IG5ldyBCZW5jaG1hcmtSdW5uZXJTdGF0ZSh0aGlzLl9zdWl0ZXMpOworICAgICAgICB0aGlz
Ll9zdWl0ZXNTYW1wbGVycyA9IHt9OworICAgIH0KKworICAgIHZhciBzdWl0ZSA9IHN0YXRlLmN1
cnJlbnRTdWl0ZSgpOworICAgIGlmICghc3VpdGUpIHsKKyAgICAgICAgdGhpcy5fZmluYWxpemUo
KTsKKyAgICAgICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICAgICAgcHJv
bWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybiBwcm9taXNlOworICAgIH0KKworICAgIGlm
IChzdGF0ZS5pc0ZpcnN0VGVzdCgpKSB7CisgICAgICAgIHRoaXMuX21hc3VyZWRWYWx1ZXNGb3JD
dXJyZW50U3VpdGUgPSB7fTsKKyAgICAgICAgdGhpcy5fYXBwZW5kRnJhbWUoKTsKKyAgICB9CisK
KyAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgcmV0dXJuIHN0YXRlLnByZXBhcmVDdXJyZW50VGVz
dCh0aGlzLCB0aGlzLl9mcmFtZSkudGhlbihmdW5jdGlvbihwcmVwYXJlUmV0dXJuVmFsdWUpIHsK
KyAgICAgICAgcmV0dXJuIHNlbGYuX3J1blRlc3RBbmRSZWNvcmRSZXN1bHRzKHN0YXRlKTsKKyAg
ICB9KTsKK30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5ydW5BbGxTdGVwcyA9IGZ1bmN0
aW9uKHN0YXJ0aW5nU3RhdGUpIHsKKyAgICB2YXIgbmV4dENhbGxlZSA9IHRoaXMucnVuQWxsU3Rl
cHMuYmluZCh0aGlzKTsKKyAgICB0aGlzLnN0ZXAoc3RhcnRpbmdTdGF0ZSkudGhlbihmdW5jdGlv
bihuZXh0U3RhdGUpIHsKKyAgICAgICAgaWYgKG5leHRTdGF0ZSkKKyAgICAgICAgICAgIG5leHRD
YWxsZWUobmV4dFN0YXRlKTsKKyAgICB9KTsKK30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlw
ZS5ydW5NdWx0aXBsZUl0ZXJhdGlvbnMgPSBmdW5jdGlvbihpdGVyYXRpb25Db3VudCkgeworICAg
IHZhciBzZWxmID0gdGhpczsKKyAgICB2YXIgY3VycmVudEl0ZXJhdGlvbiA9IDA7CisKKyAgICB0
aGlzLl9ydW5OZXh0SXRlcmF0aW9uID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGN1cnJlbnRJdGVy
YXRpb24rKzsKKyAgICAgICAgaWYgKGN1cnJlbnRJdGVyYXRpb24gPCBpdGVyYXRpb25Db3VudCkK
KyAgICAgICAgICAgIHNlbGYucnVuQWxsU3RlcHMoKTsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5f
Y2xpZW50ICYmIHRoaXMuX2NsaWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0aW9uKQorICAgICAgICAg
ICAgc2VsZi5fY2xpZW50LmRpZEZpbmlzaExhc3RJdGVyYXRpb24oKTsKKyAgICB9CisKKyAgICBp
ZiAoc2VsZi5fY2xpZW50ICYmIHNlbGYuX2NsaWVudC53aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbikK
KyAgICAgICAgc2VsZi5fY2xpZW50LndpbGxTdGFydEZpcnN0SXRlcmF0aW9uKGl0ZXJhdGlvbkNv
dW50KTsKKworICAgIHNlbGYucnVuQWxsU3RlcHMoKTsKK30KKworQmVuY2htYXJrUnVubmVyLnBy
b3RvdHlwZS5fZmluYWxpemUgPSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLl9yZW1vdmVGcmFtZSgp
OworICAgICAgICAKKyAgICBpZiAodGhpcy5fY2xpZW50ICYmIHRoaXMuX2NsaWVudC5kaWRSdW5T
dWl0ZXMpCisgICAgICAgIHRoaXMuX2NsaWVudC5kaWRSdW5TdWl0ZXModGhpcy5fc3VpdGVzU2Ft
cGxlcnMpOworCisgICAgaWYgKHRoaXMuX3J1bk5leHRJdGVyYXRpb24pCisgICAgICAgIHRoaXMu
X3J1bk5leHRJdGVyYXRpb24oKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9ydW5uZXIvcmVzb3VyY2VzL2dyYXBoLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2dyYXBoLmpzCShyZXZpc2lvbiAwKQorKysg
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvZ3JhcGguanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDEgQEAKK2Z1bmN0aW9uIGdyYXBoKHNlbGVjdG9yLCBz
aXplLCBtYXJnaW5zLCBheGlzZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGltZU9mZnNldCkgeworCisg
ICAgdmFyIGVsZW1lbnQgPSBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rv
cik7CisgICAgd2hpbGUgKGVsZW1lbnQuZmlyc3RDaGlsZCkKKyAgICAgICAgZWxlbWVudC5yZW1v
dmVDaGlsZChlbGVtZW50LmZpcnN0Q2hpbGQpOworCisgICAgdmFyIHggPSBkMy5zY2FsZS5saW5l
YXIoKQorICAgICAgICAgICAgLnJhbmdlKFswLCBzaXplLndpZHRoKCldKQorICAgICAgICAgICAg
LmRvbWFpbihkMy5leHRlbnQoc2FtcGxlcywgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC50aW1lT2Zm
c2V0OyB9KSk7ICAgICAgICAgICAgCisKKyAgICB2YXIgeUxlZnQgPSBkMy5zY2FsZS5saW5lYXIo
KQorICAgICAgICAgICAgLnJhbmdlKFtzaXplLmhlaWdodCgpLCAwXSkKKyAgICAgICAgICAgIC5k
b21haW4oWzAsIGQzLm1heChzYW1wbGVzLCBmdW5jdGlvbihkKSB7IHJldHVybiBkLnZhbHVlc1sw
XTsgfSldKTsKKworICAgIHZhciB5UmlnaHQgPSBkMy5zY2FsZS5saW5lYXIoKQorICAgICAgICAg
ICAgLnJhbmdlKFtzaXplLmhlaWdodCgpLCAwXSkKKyAgICAgICAgICAgIC5kb21haW4oWzAsIGQz
Lm1heChzYW1wbGVzLCBmdW5jdGlvbihkKSB7IHJldHVybiBkLnZhbHVlc1sxXTsgfSldKTsKKwor
ICAgIHZhciB4QXhpcyA9IGQzLnN2Zy5heGlzKCkKKyAgICAgICAgICAgIC5zY2FsZSh4KQorICAg
ICAgICAgICAgLm9yaWVudCgiYm90dG9tIik7CisKKyAgICB2YXIgeUF4aXNMZWZ0ID0gZDMuc3Zn
LmF4aXMoKQorICAgICAgICAgICAgLnNjYWxlKHlMZWZ0KQorICAgICAgICAgICAgLm9yaWVudCgi
bGVmdCIpOworCisgICAgdmFyIHlBeGlzUmlnaHQgPSBkMy5zdmcuYXhpcygpCisgICAgICAgICAg
ICAuc2NhbGUoeVJpZ2h0KQorICAgICAgICAgICAgLm9yaWVudCgicmlnaHQiKTsKKworICAgIHZh
ciBsaW5lTGVmdCA9IGQzLnN2Zy5saW5lKCkKKyAgICAgICAgICAgIC54KGZ1bmN0aW9uKGQpIHsg
cmV0dXJuIHgoZC50aW1lT2Zmc2V0KTsgfSkKKyAgICAgICAgICAgIC55KGZ1bmN0aW9uKGQpIHsg
cmV0dXJuIHlMZWZ0KGQudmFsdWVzWzBdKTsgfSk7CisKKyAgICB2YXIgbGluZVJpZ2h0ID0gZDMu
c3ZnLmxpbmUoKQorICAgICAgICAgICAgLngoZnVuY3Rpb24oZCkgeyByZXR1cm4geChkLnRpbWVP
ZmZzZXQpOyB9KQorICAgICAgICAgICAgLnkoZnVuY3Rpb24oZCkgeyByZXR1cm4geVJpZ2h0KGQu
dmFsdWVzWzFdKTsgfSk7CisKKyAgICBzYW1wbGVzLmZvckVhY2goZnVuY3Rpb24oZCkgeworICAg
ICAgICBkLnRpbWVPZmZzZXQgPSArZC50aW1lT2Zmc2V0OworICAgICAgICBkLnZhbHVlc1swXSA9
ICtkLnZhbHVlc1swXTsKKyAgICAgICAgZC52YWx1ZXNbMV0gPSArZC52YWx1ZXNbMV07ICAgICAg
ICAKKyAgICB9KTsgICAgCisKKyAgICB2YXIgc2FtcGxlZFNhbXBsZXMgPSBzYW1wbGVzLmZpbHRl
cihmdW5jdGlvbihkKSB7CisgICAgICAgIHJldHVybiBkLnRpbWVPZmZzZXQgPj0gc2FtcGxpbmdU
aW1lT2Zmc2V0OworICAgIH0pOworICAgIAorICAgIHZhciBtZWFuTGVmdCA9IGQzLm1lYW4oc2Ft
cGxlZFNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsKKyAgICAgICAgcmV0dXJuICtkLnZhbHVlc1swXTsK
KyAgICB9KTsKKworICAgIHZhciBtZWFuUmlnaHQgPSBkMy5tZWFuKHNhbXBsZWRTYW1wbGVzLCBm
dW5jdGlvbihkKSB7CisgICAgICAgIHJldHVybiArZC52YWx1ZXNbMV07CisgICAgfSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgdmFyIHN2ZyA9IGQzLnNlbGVjdChzZWxlY3Rv
cikuYXBwZW5kKCJzdmciKQorICAgICAgICAuYXR0cigid2lkdGgiLCBzaXplLndpZHRoKCkgKyBt
YXJnaW5zLmxlZnQgKyBtYXJnaW5zLnJpZ2h0KQorICAgICAgICAuYXR0cigiaGVpZ2h0Iiwgc2l6
ZS5oZWlnaHQoKSArIG1hcmdpbnMudG9wICsgbWFyZ2lucy5ib3R0b20pCisgICAgICAgIC5hcHBl
bmQoImciKQorICAgICAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoIiArIG1h
cmdpbnMubGVmdCArICIsIiArIG1hcmdpbnMudG9wICsgIikiKTsKKworICAgIC8vIHgtYXhpcwor
ICAgIHN2Zy5hcHBlbmQoImciKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAieCBheGlzIikKKyAg
ICAgICAgLmF0dHIoImZpbGwiLCAicmdiKDIzNSwgMjM1LCAyMzUpIikKKyAgICAgICAgLmF0dHIo
InRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoMCwiICsgc2l6ZS5oZWlnaHQoKSArICIpIikKKyAgICAg
ICAgLmNhbGwoeEF4aXMpCisgICAgICAgIC5hcHBlbmQoInRleHQiKQorICAgICAgICAgICAgLmF0
dHIoImNsYXNzIiwgImxhYmVsIikKKyAgICAgICAgICAgIC5hdHRyKCJ4Iiwgc2l6ZS53aWR0aCgp
KQorICAgICAgICAgICAgLmF0dHIoInkiLCAtNikKKyAgICAgICAgICAgIC5hdHRyKCJmaWxsIiwg
InJnYigyMzUsIDIzNSwgMjM1KSIpCisgICAgICAgICAgICAuc3R5bGUoInRleHQtYW5jaG9yIiwg
ImVuZCIpCisgICAgICAgICAgICAudGV4dCgidGltZSIpOworICAgICAgICAgICAgICAgICAKKyAg
ICAvLyB5TGVmdC1heGlzCisgICAgc3ZnLmFwcGVuZCgiZyIpCisgICAgICAgIC5hdHRyKCJjbGFz
cyIsICJ5IGF4aXMiKQorICAgICAgICAuYXR0cigiZmlsbCIsICJzdGVlbGJsdWUiKQorICAgICAg
ICAuY2FsbCh5QXhpc0xlZnQpCisgICAgICAgIC5hcHBlbmQoInRleHQiKQorICAgICAgICAgICAg
LmF0dHIoImNsYXNzIiwgImxhYmVsIikKKyAgICAgICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAi
cm90YXRlKC05MCkiKQorICAgICAgICAgICAgLmF0dHIoInkiLCA2KQorICAgICAgICAgICAgLmF0
dHIoImZpbGwiLCAic3RlZWxibHVlIikKKyAgICAgICAgICAgIC5hdHRyKCJkeSIsICIuNzFlbSIp
CisgICAgICAgICAgICAuc3R5bGUoInRleHQtYW5jaG9yIiwgImVuZCIpCisgICAgICAgICAgICAu
dGV4dChheGlzZXNbMF0pOworCisgICAgLy8geVJpZ2h0LWF4aXMKKyAgICBzdmcuYXBwZW5kKCJn
IikKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgInkgYXhpcyIpCisgICAgICAgIC5hdHRyKCJmaWxs
IiwgInJlZCIpCisgICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAidHJhbnNsYXRlKCIgKyBzaXpl
LndpZHRoKCkgKyAiLCAwKSIpCisgICAgICAgIC5jYWxsKHlBeGlzUmlnaHQpCisgICAgICAgIC5h
cHBlbmQoInRleHQiKQorICAgICAgICAgICAgLmF0dHIoImNsYXNzIiwgImxhYmVsIikKKyAgICAg
ICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAicm90YXRlKC05MCkiKQorICAgICAgICAgICAgLmF0
dHIoInkiLCA2KQorICAgICAgICAgICAgLmF0dHIoImZpbGwiLCAicmVkIikKKyAgICAgICAgICAg
IC5hdHRyKCJkeSIsICIuNzFlbSIpCisgICAgICAgICAgICAuc3R5bGUoInRleHQtYW5jaG9yIiwg
ImVuZCIpCisgICAgICAgICAgICAudGV4dChheGlzZXNbMV0pOworCisgICAgLy8gbGVmdC1tZWFu
CisgICAgc3ZnLmFwcGVuZCgic3ZnOmxpbmUiKQorICAgICAgICAuYXR0cigieDEiLCB4KDApKQor
ICAgICAgICAuYXR0cigieDIiLCBzaXplLndpZHRoKCkpCisgICAgICAgIC5hdHRyKCJ5MSIsIHlM
ZWZ0KG1lYW5MZWZ0KSkKKyAgICAgICAgLmF0dHIoInkyIiwgeUxlZnQobWVhbkxlZnQpKQorICAg
ICAgICAuYXR0cigiY2xhc3MiLCAibGVmdC1tZWFuIik7CisKKyAgICAvLyByaWdodC1tZWFuCisg
ICAgc3ZnLmFwcGVuZCgic3ZnOmxpbmUiKQorICAgICAgICAuYXR0cigieDEiLCB4KDApKQorICAg
ICAgICAuYXR0cigieDIiLCBzaXplLndpZHRoKCkpCisgICAgICAgIC5hdHRyKCJ5MSIsIHlSaWdo
dChtZWFuUmlnaHQpKQorICAgICAgICAuYXR0cigieTIiLCB5UmlnaHQobWVhblJpZ2h0KSkKKyAg
ICAgICAgLmF0dHIoImNsYXNzIiwgInJpZ2h0LW1lYW4iKTsgICAgICAgIAorCisgICAgLy8gc2Ft
cGxpbmdUaW1lT2Zmc2V0CisgICAgc3ZnLmFwcGVuZCgibGluZSIpCisgICAgICAgIC5hdHRyKCJ4
MSIsIHgoc2FtcGxpbmdUaW1lT2Zmc2V0KSkKKyAgICAgICAgLmF0dHIoIngyIiwgeChzYW1wbGlu
Z1RpbWVPZmZzZXQpKQorICAgICAgICAuYXR0cigieTEiLCB5TGVmdCgwKSkKKyAgICAgICAgLmF0
dHIoInkyIiwgeUxlZnQoeUF4aXNMZWZ0LnNjYWxlKCkuZG9tYWluKClbMV0pKQorICAgICAgICAu
YXR0cigiY2xhc3MiLCAic21hcGxlLXRpbWUiKTsKKworICAgIC8vIGxlZnQtc2FtcGxlcworICAg
IHN2Zy5hcHBlbmQoInBhdGgiKQorICAgICAgICAuZGF0dW0oc2FtcGxlcykKKyAgICAgICAgLmF0
dHIoImNsYXNzIiwgImxlZnQtc2FtcGxlcyIpCisgICAgICAgIC5hdHRyKCJkIiwgbGluZUxlZnQp
OworICAgICAgICAKKyAgICAvLyByaWdodC1zYW1wbGVzCisgICAgc3ZnLmFwcGVuZCgicGF0aCIp
CisgICAgICAgIC5kYXR1bShzYW1wbGVzKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAicmlnaHQt
c2FtcGxlcyIpCisgICAgICAgIC5hdHRyKCJkIiwgbGluZVJpZ2h0KTsKK30KSW5kZXg6IFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3Rz
LmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9y
ZXNvdXJjZXMvdGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNjcgQEAKK3ZhciBU
aXRsZXMgPSBbCisgICAgeworICAgICAgICB0ZXh0IDogIlRlc3QgTmFtZSIsCisgICAgICAgIHdp
ZHRoIDogMzAsCisgICAgICAgIGNoaWxkcmVuOiBbXQorICAgIH0sIHsKKyAgICAgICAgdGV4dCA6
ICJBbmltYXRlZCBJdGVtcyIsCisgICAgICAgIHdpZHRoIDogMzAsCisgICAgICAgIGNoaWxkcmVu
OiBbCisgICAgICAgICAgICB7IHRleHQ6ICAgIkF2Zy4iLCB3aWR0aDogOCwgY2hpbGRyZW46IFtd
IH0sCisgICAgICAgICAgICB7IHRleHQ6ICJcdTAwYjEiLCB3aWR0aDogNywgY2hpbGRyZW46IFtd
IH0sCisgICAgICAgICAgICB7IHRleHQ6ICAgIlN0ZC4iLCB3aWR0aDogOCwgY2hpbGRyZW46IFtd
IH0sCisgICAgICAgICAgICB7IHRleHQ6ICAgICAgIiUiLCB3aWR0aDogNywgY2hpbGRyZW46IFtd
IH0sCisgICAgICAgIF0KKyAgICB9LCB7CisgICAgICAgIHRleHQgOiAiRlBTIiwKKyAgICAgICAg
d2lkdGggOiAzMCwgICAgICAgICAgICAKKyAgICAgICAgY2hpbGRyZW46IFsKKyAgICAgICAgICAg
IHsgdGV4dDogICAiQXZnLiIsIHdpZHRoOiA4LCBjaGlsZHJlbjogW10gfSwKKyAgICAgICAgICAg
IHsgdGV4dDogIlx1MDBiMSIsIHdpZHRoOiA3LCBjaGlsZHJlbjogW10gfSwKKyAgICAgICAgICAg
IHsgdGV4dDogICAiU3RkLiIsIHdpZHRoOiA4LCBjaGlsZHJlbjogW10gfSwKKyAgICAgICAgICAg
IHsgdGV4dDogICAgICAiJSIsIHdpZHRoOiA3LCBjaGlsZHJlbjogW10gfSwKKyAgICAgICAgXQor
ICAgIH0sIHsKKyAgICAgICAgdGV4dCA6ICJTYW1wbGVzIiwKKyAgICAgICAgd2lkdGggOiAxMCwK
KyAgICAgICAgY2hpbGRyZW46IFtdCisgICAgfQorXTsKKwordmFyIFN1aXRlcyA9IFtdOworCitT
dWl0ZXMucHVzaCh7CisgICAgbmFtZTogIkhUTUwgQm91bmNpbmcgUGFydGljbGVzIiwKKyAgICBw
cmVwYXJlOiBmdW5jdGlvbihydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkg
eworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCIjc3RhZ2UiKS50aGVuKGZ1
bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAg
fSk7CisgICAgfSwgIAorICAgIHJ1bjogZnVuY3Rpb24oY29udGVudFdpbmRvdywgdGVzdCwgb3B0
aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgICAgIHJldHVybiBjb250ZW50
V2luZG93LnJ1bkJlbmNobWFyayh0aGlzLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpOworICAgIH0sCisgICAgdGl0bGVzIDogVGl0bGVzLAorICAgIHRlc3RzOiBbCisg
ICAgICAgIHsgCisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
Ym91bmNpbmctc2hhcGVzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBh
cnRpY2xlV2lkdGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKKyAgICAgICAg
ICAgIG5hbWU6ICJib3VuY2luZyBjaXJjbGVzIiwKKyAgICAgICAgICAgIHdlaWdodDogMSwKKyAg
ICAgICAgICAgIG1heDogMjAwMAorICAgICAgICB9LCB7IAorICAgICAgICAgICAgdXJsOiAiLi4v
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXNoYXBlcy5odG1sP2dhaW49MSZhZGRM
aW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSZwYXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xlSGVpZ2h0PTQw
JnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKKyAgICAgICAgICAgIG5hbWU6ICJib3VuY2luZyBjbGlw
cGVkIHJlY3RzIiwKKyAgICAgICAgICAgIHdlaWdodDogMSwKKyAgICAgICAgICAgIG1heDogMTAw
MAorICAgICAgICB9LCB7IAorICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLXNoYXBlcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGlt
aXQ9NSZwYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxs
PWdyYWRpZW50IiwKKyAgICAgICAgICAgIG5hbWU6ICJib3VuY2luZyBncmFkaWVudCBjaXJjbGVz
IiwKKyAgICAgICAgICAgIHdlaWdodDogMSwKKyAgICAgICAgICAgIG1heDogNTAwCisgICAgICAg
IH0sIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3Vu
Y2luZy1pbWFnZXMuaHRtbD9nYWluPTAuNCZhZGRMaW1pdD01JnJlbW92ZUxpbWl0PTImcGFydGlj
bGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlh
bmcuc3ZnIiwKKyAgICAgICAgICAgIG5hbWU6ICJib3VuY2luZyBTVkcgaW1hZ2VzIiwKKyAgICAg
ICAgICAgIHdlaWdodDogMSwKKyAgICAgICAgICAgIG1heDogMjAwCisgICAgICAgIH0sIHsKKyAg
ICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1pbWFn
ZXMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFydGljbGVXaWR0aD04
MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcucG5nIiwK
KyAgICAgICAgICAgIG5hbWU6ICJib3VuY2luZyBQTkcgaW1hZ2VzIiwKKyAgICAgICAgICAgIHdl
aWdodDogMSwKKyAgICAgICAgICAgIG1heDogMjAwMAorICAgICAgICB9LCB7CisgICAgICAgICAg
ICB1cmw6ICIuLi90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbD9nYWluPTQmYWRkTGltaXQ9
MTAwJnJlbW92ZUxpbWl0PTEwMCIsCisgICAgICAgICAgICBuYW1lOiAibGF5ZXJpbmcgdGV4dCIs
CisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDEwMDAKKyAgICAgICAg
fQorICAgIF0KK30pOworCitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogIkNhbnZhcyBCb3VuY2lu
ZyBQYXJ0aWNsZXMiLAorICAgIHByZXBhcmU6IGZ1bmN0aW9uKHJ1bm5lciwgY29udGVudFdpbmRv
dywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1l
bnQoIiNzdGFnZSIpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIHJldHVy
biBlbGVtZW50OworICAgICAgICB9KTsKKyAgICB9LCAgCisgICAgcnVuOiBmdW5jdGlvbihjb250
ZW50V2luZG93LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAg
ICAgICAgcmV0dXJuIGNvbnRlbnRXaW5kb3cucnVuQmVuY2htYXJrKHRoaXMsIHRlc3QsIG9wdGlv
bnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7CisgICAgfSwKKyAgICB0aXRsZXMgOiBUaXRs
ZXMsCisgICAgdGVzdHM6IFsKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw/Z2Fpbj00JmFk
ZExpbWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAwJnBhcnRpY2xlV2lkdGg9MTImcGFydGljbGVIZWln
aHQ9MTImc2hhcGU9Y2lyY2xlIiwKKyAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcg
Y2lyY2xlcyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDQwMDAK
KyAgICAgICAgfSwgeyAKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1v
dmVMaW1pdD0xMDAwJnBhcnRpY2xlV2lkdGg9NDAmcGFydGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVj
dCZjbGlwPXN0YXIiLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBjbGlwcGVk
IHJlY3RzIiwKKyAgICAgICAgICAgIHdlaWdodDogMSwKKyAgICAgICAgICAgIG1heDogMTAwMAor
ICAgICAgICB9LCB7IAorICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92
ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJj
bGUmZmlsbD1ncmFkaWVudCIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGdy
YWRpZW50IGNpcmNsZXMiLAorICAgICAgICAgICAgd2VpZ2h0OiAxLAorICAgICAgICAgICAgbWF4
OiAxMDAwCisgICAgICAgIH0sIHsgCisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sP2dhaW49MC40JmFkZExpbWl0
PTUmcmVtb3ZlTGltaXQ9MSZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdl
U3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciLAorICAgICAgICAgICAgbmFtZTogImNhbnZh
cyBib3VuY2luZyBTVkcgaW1hZ2VzIiwKKyAgICAgICAgICAgIHdlaWdodDogMSwKKyAgICAgICAg
ICAgIG1heDogMjAwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/Z2Fpbj00JmFkZExp
bWl0PTEwMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0
PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5wbmciLAorICAgICAgICAgICAgbmFt
ZTogImNhbnZhcyBib3VuY2luZyBQTkcgaW1hZ2VzIiwKKyAgICAgICAgICAgIHdlaWdodDogMSwK
KyAgICAgICAgICAgIG1heDogNTAwMAorICAgICAgICB9CisgICAgXQorfSk7CisKK1N1aXRlcy5w
dXNoKHsKKyAgICBuYW1lOiAiU1ZHIEJvdW5jaW5nIFBhcnRpY2xlcyIsCisgICAgcHJlcGFyZTog
ZnVuY3Rpb24ocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAg
ICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgiI3N0YWdlIikudGhlbihmdW5jdGlvbiAo
ZWxlbWVudCkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAg
IH0sICAKKyAgICBydW46IGZ1bmN0aW9uKGNvbnRlbnRXaW5kb3csIHRlc3QsIG9wdGlvbnMsIHJl
Y29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgICAgICByZXR1cm4gY29udGVudFdpbmRvdy5y
dW5CZW5jaG1hcmsodGhpcywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFy
KTsKKyAgICB9LAorICAgIHRpdGxlcyA6IFRpdGxlcywKKyAgICB0ZXN0czogWworICAgICAgICB7
CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
c3ZnLXNoYXBlcy5odG1sP2dhaW49NiZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0
aWNsZVdpZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCisgICAgICAgICAg
ICBuYW1lOiAiU1ZHIGJvdW5jaW5nIGNpcmNsZXMiLAorICAgICAgICAgICAgd2VpZ2h0OiAxLAor
ICAgICAgICAgICAgbWF4OiA2MDAwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHVybDogIi4u
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/Z2Fpbj0w
LjYmYWRkTGltaXQ9MTAmcmVtb3ZlTGltaXQ9MSZwYXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xlSGVp
Z2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKKyAgICAgICAgICAgIG5hbWU6ICJTVkcgYm91
bmNpbmcgY2xpcHBlZCByZWN0cyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAg
ICBtYXg6IDEwMDAKKyAgICAgICAgfSwgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9nYWluPTAuOCZhZGRMaW1p
dD0xMCZyZW1vdmVMaW1pdD00JnBhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hh
cGU9Y2lyY2xlJmZpbGw9Z3JhZGllbnQiLAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2lu
ZyBncmFkaWVudCBjaXJjbGVzIiwKKyAgICAgICAgICAgIHdlaWdodDogMSwKKyAgICAgICAgICAg
IG1heDogMTAwMAorICAgICAgICB9LCB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sP2dhaW49MC40JmFkZExpbWl0
PTUmcmVtb3ZlTGltaXQ9MiZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdl
U3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciLAorICAgICAgICAgICAgbmFtZTogIlNWRyBi
b3VuY2luZyBTVkcgaW1hZ2VzIiwKKyAgICAgICAgICAgIHdlaWdodDogMSwKKyAgICAgICAgICAg
IG1heDogMjAwCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEw
MCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VT
cmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCisgICAgICAgICAgICBuYW1lOiAiU1ZHIGJv
dW5jaW5nIFBORyBpbWFnZXMiLCAgICAgICAgICAgIAorICAgICAgICAgICAgd2VpZ2h0OiAxLAor
ICAgICAgICAgICAgbWF4OiA0MDAwCisgICAgICAgIH0KKyAgICBdCit9KTsKKworZnVuY3Rpb24g
c3VpdGVGcm9tTmFtZShuYW1lKSB7CisgICAgcmV0dXJuIFN1aXRlcy5maW5kKGZ1bmN0aW9uKHN1
aXRlKSB7IHJldHVybiBzdWl0ZS5uYW1lID09IG5hbWU7IH0pOworfQorCitmdW5jdGlvbiB0ZXN0
RnJvbU5hbWUoc3VpdGUsIG5hbWUpIHsKKyAgICByZXR1cm4gc3VpdGUudGVzdHMuZmluZChmdW5j
dGlvbih0ZXN0KSB7IHJldHVybiB0ZXN0Lm5hbWUgPT0gbmFtZTsgfSk7Cit9CkluZGV4OiBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5n
LWNhbnZhcy1pbWFnZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRt
bAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0
eWxlPgorICAgIGltZy5oaWRkZW4geworICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAg
dmlzaWJpbGl0eTogaGlkZGVuOworICAgIH0KKyAgPC9zdHlsZT4KKyAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5jc3Mi
PgorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0
PiAgCisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+Cisg
IDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4gIAorICA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgPGltZyBjbGFzcz0iaGlkZGVuIiBzcmM9Ii4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciPgor
ICA8aW1nIGNsYXNzPSJoaWRkZW4iIHNyYz0iLi4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyI+Cisg
IDxjYW52YXMgaWQ9InN0YWdlIj48L2NhbnZhcz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctY2FudmFzLXNoYXBlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5o
dG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8
bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMv
YmVuY2htYXJrLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlzdGlj
cy5qcyI+PC9zY3JpcHQ+ICAKKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9tYWluLmpz
Ij48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3Njcmlw
dD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuanMiPjwvc2NyaXB0Pgor
ICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgPGNhbnZhcyBpZD0ic3RhZ2UiPjwvY2FudmFzPgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9ib3VuY2luZy1pbWFnZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWltYWdlcy5o
dG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1pbWFnZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4K
KyAgICBpbWcgeworICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIH0KKyAgPC9zdHlsZT4K
KyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3Vy
Y2VzL2JlbmNobWFyay5jc3MiPgorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0YXRp
c3RpY3MuanMiPjwvc2NyaXB0PiAgCisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvbWFp
bi5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9z
Y3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYmVuY2htYXJrLmpzIj48L3Njcmlw
dD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0Pgor
ICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlw
dCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgorICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLWltYWdlcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgPGRpdiBpZD0ic3RhZ2UiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9i
b3VuY2luZy1zaGFwZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXNoYXBlcy5odG1sCShyZXZp
c2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9ib3VuY2luZy1zaGFwZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4KKyAgICAuY2ly
Y2xlIHsKKyAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6
ICMwMDAwMDA7CisgICAgICBib3JkZXItcmFkaXVzOiA1MCUgNTAlOworICAgIH0KKyAgICAucmVj
dCB7CisgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAj
MDAwMDAwOworICAgIH0KKyAgICAuc3RhciB7CisgICAgICAtd2Via2l0LWNsaXAtcGF0aDogcG9s
eWdvbig1MCUgMCUsIDM4JSAzOCUsIDAlIDM4JSwgMzAlIDYwJSwgMTglIDEwMCUsIDUwJSA3NSUs
IDgyJSAxMDAlLCA3MCUgNjAlLCAxMDAlIDM4JSwgNjIlIDM4JSk7CisgICAgICAtbXMtY2xpcC1w
YXRoOiBwb2x5Z29uKDUwJSAwJSwgMzglIDM4JSwgMCUgMzglLCAzMCUgNjAlLCAxOCUgMTAwJSwg
NTAlIDc1JSwgODIlIDEwMCUsIDcwJSA2MCUsIDEwMCUgMzglLCA2MiUgMzglKTsgIAorICAgICAg
Y2xpcC1wYXRoOiBwb2x5Z29uKDUwJSAwJSwgMzglIDM4JSwgMCUgMzglLCAzMCUgNjAlLCAxOCUg
MTAwJSwgNTAlIDc1JSwgODIlIDEwMCUsIDcwJSA2MCUsIDEwMCUgMzglLCA2MiUgMzglKTsKKyAg
ICB9CisgIDwvc3R5bGU+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3Mi
IGhyZWY9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4gIAorICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL21hdGguanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2JlbmNo
bWFyay5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVz
LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9z
Y3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48
L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1zaGFwZXMuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9InN0YWdlIj48L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctc3ZnLWltYWdlcy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIu
Li9yZXNvdXJjZXMvYmVuY2htYXJrLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvc3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+ICAKKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRo
LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuanMi
Pjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9z
Y3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0Pgor
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+
CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHN2ZyBpZD0ic3RhZ2UiPjwvc3ZnPgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1z
dmctc2hhcGVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jl
c291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9z
dGF0aXN0aWNzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9t
YWluLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48
L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuanMiPjwvc2Ny
aXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+
CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PgorICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKyAgPHN2ZyBpZD0ic3RhZ2UiPjwvc3ZnPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91
bmNpbmctY2FudmFzLWltYWdlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBACitm
dW5jdGlvbiBCb3VuY2luZ0NhbnZhc0ltYWdlKHN0YWdlKSB7CisgICAgQm91bmNpbmdQYXJ0aWNs
ZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gc3RhZ2UuY29udGV4dDsK
KyAgICB0aGlzLl9pbWFnZUVsZW1lbnQgPSBzdGFnZS5pbWFnZUVsZW1lbnQ7Cit9CisKK0JvdW5j
aW5nQ2FudmFzSW1hZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xl
LnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc0ltYWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IEJvdW5jaW5nQ2FudmFzSW1hZ2U7CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90eXBlLl9k
cmF3ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGNlbnRlciA9IHRoaXMuY2VudGVyKCk7CisKKyAg
ICB0aGlzLl9jb250ZXh0LnNhdmUoKTsKKyAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZShjZW50
ZXIueCwgY2VudGVyLnkpOworICAgIHRoaXMuX2NvbnRleHQucm90YXRlKHRoaXMuX3JvdGF0ZXIu
ZGVncmVlKCkgKiBNYXRoLlBJIC8gMTgwKTsKKyAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSgt
dGhpcy5fc2l6ZS54IC8gMiwgLXRoaXMuX3NpemUueSAvIDIpOworICAgIAorICAgIHRoaXMuX2Nv
bnRleHQuZHJhd0ltYWdlKHRoaXMuX2ltYWdlRWxlbWVudCwgMCwgMCwgdGhpcy5fc2l6ZS54LCB0
aGlzLl9zaXplLnkpOworICAgIHRoaXMuX2NvbnRleHQucmVzdG9yZSgpOworfQorCitCb3VuY2lu
Z0NhbnZhc0ltYWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKSB7Cisg
ICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0
YSk7CisgICAgdGhpcy5fZHJhdygpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc0ltYWdl
c1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNh
bGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5lbGVt
ZW50LmdldENvbnRleHQoIjJkIik7CisgICAgdmFyIGltYWdlU3JjID0gb3B0aW9uc1siaW1hZ2VT
cmMiXSB8fCAicmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7CisgICAgCisgICAgdmFyIGltYWdlRWxl
bWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJoaWRkZW4iKTsKKyAgICBj
b25zb2xlLmFzc2VydChpbWFnZUVsZW1lbnRzLmxlbmd0aCk7CisgICAgICAgIAorICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgaW1hZ2VFbGVtZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICBpZiAo
aW1hZ2VFbGVtZW50c1tpXS5nZXRBdHRyaWJ1dGUoInNyYyIpID09IGltYWdlU3JjKSB7CisgICAg
ICAgICAgICB0aGlzLmltYWdlRWxlbWVudCA9IGltYWdlRWxlbWVudHNbaV07CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisg
ICAgfQorCisgICAgdGhpcy5pbWFnZUVsZW1lbnQgPSB0aGlzLmltYWdlRWxlbWVudCB8fCBpbWFn
ZUVsZW1lbnRzWzBdOworfQorCitCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlLnByb3RvdHlwZSA9
IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOworQm91bmNp
bmdDYW52YXNJbWFnZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZh
c0ltYWdlc1N0YWdlOworCitCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVh
dGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNJ
bWFnZSh0aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNJbWFnZXNBbmltYXRvcihi
ZW5jaG1hcmspIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLmNhbGwodGhpcywgYmVu
Y2htYXJrKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJrLl9zdGFnZS5jb250ZXh0Owor
fQorCitCb3VuY2luZ0NhbnZhc0ltYWdlc0FuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNJ
bWFnZXNBbmltYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc0ltYWdl
c0FuaW1hdG9yOworCitCb3VuY2luZ0NhbnZhc0ltYWdlc0FuaW1hdG9yLnByb3RvdHlwZS5hbmlt
YXRlID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5fY29udGV4dC5jbGVhclJlY3QoMCwgMCwgdGhp
cy5fYmVuY2htYXJrLl9zdGFnZS5zaXplKCkueCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXpl
KCkueSk7CisgICAgcmV0dXJuIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlLmFu
aW1hdGUuY2FsbCh0aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNJbWFnZXNCZW5j
aG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcikgewor
ICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nQ2FudmFzSW1h
Z2VzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNC
ZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrOworCitCb3Vu
Y2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlv
bihlbGVtZW50KSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlKGVs
ZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCitCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFy
ay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3
IEJvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0b3IodGhpcyk7Cit9CisKK3dpbmRvdy5iZW5jaG1h
cmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRh
YmxlLCBwcm9ncmVzc0JhcikgeworICAgIHdpbmRvdy5iZW5jaG1hcmsgPSBuZXcgQm91bmNpbmdD
YW52YXNJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBw
cm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanMJKHJldmlzaW9uIDAp
CisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTQyIEBACitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1NoYXBlKHN0YWdlKSB7CisgICAg
Qm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9zaGFwZSA9IHN0
YWdlLnNoYXBlOworICAgIHRoaXMuX2ZpbGwgPSBzdGFnZS5maWxsOworICAgIHRoaXMuX2NsaXAg
PSBzdGFnZS5jbGlwOworICAgIHRoaXMuX2NvbnRleHQgPSBzdGFnZS5jb250ZXh0OworICAgIHRo
aXMuX2NvbG9yMCA9IHN0YWdlLnJhbmRvbUNvbG9yKCk7CisgICAgdGhpcy5fY29sb3IxID0gc3Rh
Z2UucmFuZG9tQ29sb3IoKTsgICAgCit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBl
ID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ0Nh
bnZhc1NoYXBlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzU2hhcGU7CisK
K0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLl9kcmF3ID0gZnVuY3Rpb24oKSB7CisgICAg
CisgICAgdGhpcy5fY29udGV4dC5zYXZlKCk7CisgICAgdGhpcy5fY29udGV4dC50cmFuc2xhdGUo
dGhpcy5fcG9zaXRpb24ueCwgdGhpcy5fcG9zaXRpb24ueSk7CisKKyAgICAvLyBTZXR0aW5nIHRo
ZSBmaWxsIHN0eWxlCisgICAgc3dpdGNoICh0aGlzLl9maWxsKSB7CisgICAgY2FzZSAic29saWQi
OgorICAgIGRlZmF1bHQ6CisgICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbFN0eWxlID0gdGhpcy5f
Y29sb3IwOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgImdyYWRpZW50IjoKKyAgICAgICAg
dmFyIGdyYWRpZW50ID0gdGhpcy5fY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCB0
aGlzLl9zaXplLndpZHRoKCksIDApOworICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMCwg
dGhpcy5fY29sb3IwKTsKKyAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDEsIHRoaXMuX2Nv
bG9yMSk7IAorICAgICAgICB0aGlzLl9jb250ZXh0LmZpbGxTdHlsZSA9IGdyYWRpZW50OworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyBSb3RhdGlvbiBhcm91bmQgdGhlIGNlbnRlcgor
ICAgIGlmICh0aGlzLl9zaGFwZSAhPSAiY2lyY2xlIikgeworICAgICAgICB0aGlzLl9jb250ZXh0
LnRyYW5zbGF0ZSh0aGlzLl9zaXplLnggLyAyLCB0aGlzLl9zaXplLnkgLyAyKTsKKyAgICAgICAg
dGhpcy5fY29udGV4dC5yb3RhdGUodGhpcy5fcm90YXRlci5kZWdyZWUoKSAqIE1hdGguUEkgLyAx
ODApOworICAgICAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSgtdGhpcy5fc2l6ZS54IC8gMiwg
LXRoaXMuX3NpemUueSAvIDIpOworICAgIH0KKworICAgIHZhciBjbGlwUG9pbnRzID0gbnVsbDsK
KyAgICAKKyAgICBzd2l0Y2ggKHRoaXMuX2NsaXApIHsKKyAgICBjYXNlICJzdGFyIjoKKyAgICAg
ICAgY2xpcFBvaW50cyA9ICBbCisgICAgICAgICAgICBuZXcgUG9pbnQoMC41MCwgMC4wMCksCisg
ICAgICAgICAgICBuZXcgUG9pbnQoMC4zOCwgMC4zOCksCisgICAgICAgICAgICBuZXcgUG9pbnQo
MC4wMCwgMC4zOCksCisgICAgICAgICAgICBuZXcgUG9pbnQoMC4zMCwgMC42MCksCisgICAgICAg
ICAgICBuZXcgUG9pbnQoMC4xOCwgMS4wMCksCisgICAgICAgICAgICBuZXcgUG9pbnQoMC41MCwg
MC43NSksCisgICAgICAgICAgICBuZXcgUG9pbnQoMC44MiwgMS4wMCksCisgICAgICAgICAgICBu
ZXcgUG9pbnQoMC43MCwgMC42MCksCisgICAgICAgICAgICBuZXcgUG9pbnQoMS4wMCwgMC4zOCks
CisgICAgICAgICAgICBuZXcgUG9pbnQoMC42MiwgMC4zOCkKKyAgICAgICAgXTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIAorICAgIGlmIChjbGlwUG9pbnRzKSB7CisgICAgICAgIHRoaXMu
X2NvbnRleHQuYmVnaW5QYXRoKCk7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAg
Y2xpcFBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKHBvaW50LCBpbmRleCkgeworICAgICAgICAgICAg
dmFyIHBvaW50ID0gc2VsZi5fc2l6ZS5tdWx0aXBseShwb2ludCk7CisgICAgICAgICAgICBpZiAo
IWluZGV4KQorICAgICAgICAgICAgICAgIHNlbGYuX2NvbnRleHQubW92ZVRvKHBvaW50LngsIHBv
aW50LnkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNlbGYuX2NvbnRleHQu
bGluZVRvKHBvaW50LngsIHBvaW50LnkpOworICAgICAgICB9KTsKKyAgICAgICAgdGhpcy5fY29u
dGV4dC5jbG9zZVBhdGgoKTsKKyAgICAgICAgdGhpcy5fY29udGV4dC5jbGlwKCk7CisgICAgfQor
CisgICAgLy8gU2hhcGUgZHJhd2luZworICAgIHRoaXMuX2NvbnRleHQuYmVnaW5QYXRoKCk7Cisg
ICAgCisgICAgc3dpdGNoICh0aGlzLl9zaGFwZSkgeworICAgIGNhc2UgImNpcmNsZSI6CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgdmFyIGNlbnRlciA9IHRoaXMuX3NpemUuY2VudGVyKCk7CisgICAg
ICAgIHZhciByYWRpdXMgPSBNYXRoLm1pbih0aGlzLl9zaXplLngsIHRoaXMuX3NpemUueSkgLyAy
OworICAgICAgICB0aGlzLl9jb250ZXh0LmFyYyhjZW50ZXIueCwgY2VudGVyLnksIHJhZGl1cywg
MCwgTWF0aC5QSSAqIDIsIHRydWUpOworICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2Fz
ZSAicmVjdCI6CisgICAgICAgIHRoaXMuX2NvbnRleHQucmVjdCgwLCAwLCB0aGlzLl9zaXplLndp
ZHRoKCksIHRoaXMuX3NpemUuaGVpZ2h0KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
CisgICAgdGhpcy5fY29udGV4dC5maWxsKCk7CisgICAgdGhpcy5fY29udGV4dC5yZXN0b3JlKCk7
Cit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0
aW1lRGVsdGEpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwo
dGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlzLl9kcmF3KCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5j
aW5nQ2FudmFzU2hhcGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykgeworICAgIEJvdW5jaW5nUGFy
dGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0aGlzLnBhcnNl
U2hhcGVQYXJhbXRlcnMob3B0aW9ucyk7CisgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5lbGVtZW50
LmdldENvbnRleHQoIjJkIikKK30KKworQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS5wcm90b3R5
cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0Jv
dW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdD
YW52YXNTaGFwZXNTdGFnZTsKKworQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS5wcm90b3R5cGUu
Y3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2Fu
dmFzU2hhcGUodGhpcyk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzU2hhcGVzQW5pbWF0
b3IoYmVuY2htYXJrKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5jYWxsKHRoaXMs
IGJlbmNobWFyayk7CisgICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4
dDsKK30KKworQm91bmNpbmdDYW52YXNTaGFwZXNBbmltYXRvci5wcm90b3R5cGUgPSBPYmplY3Qu
Y3JlYXRlKEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2Fu
dmFzU2hhcGVzQW5pbWF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNT
aGFwZXNBbmltYXRvcjsKKworQm91bmNpbmdDYW52YXNTaGFwZXNBbmltYXRvci5wcm90b3R5cGUu
YW5pbWF0ZSA9IGZ1bmN0aW9uKCkgeworICAgIHRoaXMuX2NvbnRleHQuY2xlYXJSZWN0KDAsIDAs
IHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZSgpLngsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uu
c2l6ZSgpLnkpOworICAgIHJldHVybiBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlw
ZS5hbmltYXRlLmNhbGwodGhpcyk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzU2hhcGVz
QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
IHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3VuY2luZ0NhbnZh
c1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGlj
bGVzQmVuY2htYXJrLnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyazsKKwor
Qm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVu
Y3Rpb24oZWxlbWVudCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNTaGFwZXNTdGFn
ZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKworQm91bmNpbmdDYW52YXNTaGFwZXNCZW5j
aG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJu
IG5ldyBCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yKHRoaXMpOworfQorCit3aW5kb3cuYmVu
Y2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICB3aW5kb3cuYmVuY2htYXJrID0gbmV3IEJvdW5j
aW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctaW1hZ2VzLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWltYWdlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2Vz
L2JvdW5jaW5nLWltYWdlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACitmdW5j
dGlvbiBCb3VuY2luZ0ltYWdlKHN0YWdlKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRo
aXMsIHN0YWdlKTsKKworICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImltZyIpOworICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMuX3NpemUueCArICJw
eCI7CisgICAgdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuX3NpemUueSArICJweCI7
CisgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgic3JjIiwgc3RhZ2UuaW1hZ2VTcmMpOwor
ICAgIAorICAgIHN0YWdlLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTsKKyAgICB0
aGlzLl9tb3ZlKCk7Cit9CisKK0JvdW5jaW5nSW1hZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ0ltYWdlLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciA9IEJvdW5jaW5nSW1hZ2U7CisKK0JvdW5jaW5nSW1hZ2UucHJvdG90eXBlLl9t
b3ZlID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9ICJ0
cmFuc2xhdGUoIiArIHRoaXMuX3Bvc2l0aW9uLnggKyAicHgsIiArIHRoaXMuX3Bvc2l0aW9uLnkg
KyAicHgpICIgKyB0aGlzLl9yb3RhdGVyLnJvdGF0ZVooKTsKK30KKyAgICAKK0JvdW5jaW5nSW1h
Z2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpIHsKKyAgICBCb3VuY2lu
Z1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0
aGlzLl9tb3ZlKCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nSW1hZ2VzU3RhZ2UoZWxlbWVudCwg
b3B0aW9ucykgeworICAgIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50
LCBvcHRpb25zKTsKKyAgICB0aGlzLmltYWdlU3JjID0gb3B0aW9uc1siaW1hZ2VTcmMiXSB8fCAi
Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7Cit9CisKK0JvdW5jaW5nSW1hZ2VzU3RhZ2UucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7
CitCb3VuY2luZ0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nSW1h
Z2VzU3RhZ2U7CisKK0JvdW5jaW5nSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xl
ID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0ltYWdlKHRoaXMpOworfQor
CitCb3VuY2luZ0ltYWdlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQgPSBm
dW5jdGlvbihwYXJ0aWNsZSkgeworICAgIGlmIChwYXJ0aWNsZS5lbGVtZW50ICYmIHBhcnRpY2xl
LmVsZW1lbnQucGFyZW50Tm9kZSAmJiBwYXJ0aWNsZS5lbGVtZW50LnBhcmVudE5vZGUgPT0gdGhp
cy5lbGVtZW50KQorICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQocGFydGljbGUuZWxl
bWVudCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICBCb3VuY2luZ1BhcnRp
Y2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3VuY2luZ0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSk7CitC
b3VuY2luZ0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0lt
YWdlc0JlbmNobWFyazsKKworQm91bmNpbmdJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0
ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdJbWFn
ZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKword2luZG93LmJlbmNobWFya0Ns
aWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUs
IHByb2dyZXNzQmFyKSB7CisgICAgd2luZG93LmJlbmNobWFyayA9IG5ldyBCb3VuY2luZ0ltYWdl
c0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFy
KTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2lu
Zy1wYXJ0aWNsZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODAgQEAKK2Z1bmN0aW9u
IEJvdW5jaW5nUGFydGljbGVSb3RhdGVyKHJvdGF0ZUludGVydmFsKSB7CisgICAgdGhpcy5fdGlt
ZURlbHRhID0gMDsKKyAgICB0aGlzLl9yb3RhdGVJbnRlcnZhbCA9IHJvdGF0ZUludGVydmFsOwor
fQorCitCb3VuY2luZ1BhcnRpY2xlUm90YXRlci5wcm90b3R5cGUgPSB7CisgICAgbmV4dCA6IGZ1
bmN0aW9uKHRpbWVEZWx0YSkgeworICAgICAgICB0aGlzLl90aW1lRGVsdGEgPSAodGhpcy5fdGlt
ZURlbHRhICsgdGltZURlbHRhKSAlIHRoaXMuX3JvdGF0ZUludGVydmFsOworICAgIH0sCisgICAg
ZGVncmVlIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiAoMzYwICogdGhpcy5fdGltZURl
bHRhKSAvIHRoaXMuX3JvdGF0ZUludGVydmFsOworICAgIH0sCisgICAgcm90YXRlWiA6IGZ1bmN0
aW9uKCkgeworICAgICAgICByZXR1cm4gInJvdGF0ZVooIiArIE1hdGguZmxvb3IodGhpcy5kZWdy
ZWUoKSkgKyAiZGVnKSI7CisgICAgfSwKKyAgICByb3RhdGUgOiBmdW5jdGlvbigpIHsgICAgCisg
ICAgICAgIHJldHVybiAicm90YXRlKCIgKyBNYXRoLmZsb29yKHRoaXMuZGVncmVlKCkpICsgIikg
IjsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nUGFydGljbGUoc3RhZ2UpIHsKKyAgICB0
aGlzLl9zdGFnZVNpemUgPSBzdGFnZS5zaXplKCk7CisgICAgdGhpcy5fc2l6ZSA9IHN0YWdlLnBh
cnRpY2xlU2l6ZTsKKyAgICAKKyAgICB0aGlzLl9wb3NpdGlvbiA9IHN0YWdlLnJhbmRvbVBvc2l0
aW9uKCk7CisgICAgdGhpcy5fYW5nbGUgPSBzdGFnZS5yYW5kb21BbmdsZSgpOworICAgIHRoaXMu
X3ZlbG9jaXR5ID0gc3RhZ2UucmFuZG9tVmVsb2NpdHkoKTsKKyAgICB0aGlzLl9yb3RhdGVyID0g
c3RhZ2UucmFuZG9tUm90YXRlcigpOworfQorCitCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZSA9
IHsKKyAgICBjZW50ZXIgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc2l0
aW9uLmFkZCh0aGlzLl9zaXplLmNlbnRlcigpKTsKKyAgICB9LAorICAgIGFuaW1hdGUgOiBmdW5j
dGlvbih0aW1lRGVsdGEpIHsKKyAgICAgICAgdGhpcy5fcG9zaXRpb24gPSB0aGlzLl9wb3NpdGlv
bi5tb3ZlKHRoaXMuX2FuZ2xlLCB0aGlzLl92ZWxvY2l0eSwgdGltZURlbHRhKTsKKyAgICAgICAg
dGhpcy5fcm90YXRlci5uZXh0KHRpbWVEZWx0YSk7CisKKyAgICAgICAgLy8gSWYgcGFydGljbGUg
aXMgZ29pbmcgdG8gbW92ZSBvZmYgcmlnaHQgc2lkZQorICAgICAgICBpZiAodGhpcy5fcG9zaXRp
b24ueCArIHRoaXMuX3NpemUueCA+IHRoaXMuX3N0YWdlU2l6ZS54KSB7CisgICAgICAgICAgICAv
LyBJZiBkaXJlY3Rpb24gaXMgRWFzdC1Tb3V0aAorICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xl
ID49IDAgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJIC8gMikKKyAgICAgICAgICAgICAgICB0aGlz
Ll9hbmdsZSA9IE1hdGguUEkgLSB0aGlzLl9hbmdsZTsKKyAgICAgICAgICAgIC8vIElmIGFuZ2xl
IGlzIEVhc3QtTm9ydGgKKyAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX2FuZ2xlID4gTWF0aC5Q
SSAvIDIgKiAzKQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0gdGhpcy5fYW5nbGUgLSAo
dGhpcy5fYW5nbGUgLSBNYXRoLlBJIC8gMiAqIDMpICogMjsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgbGVmdCBzaWRlCisg
ICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbi54IDwgMCkgeworICAgICAgICAgICAgLy8gSWYgYW5n
bGUgaXMgV2VzdC1Tb3V0aAorICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID4gTWF0aC5QSSAv
IDIgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJKQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xl
ID0gTWF0aC5QSSAtIHRoaXMuX2FuZ2xlOworICAgICAgICAgICAgLy8gSWYgYW5nbGUgaXMgV2Vz
dC1Ob3J0aAorICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5fYW5nbGUgPiBNYXRoLlBJICYmIHRo
aXMuX2FuZ2xlIDwgTWF0aC5QSSAvIDIgKiAzKQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xl
ID0gdGhpcy5fYW5nbGUgKyAoTWF0aC5QSSAvIDIgKiAzIC0gdGhpcy5fYW5nbGUpICogMjsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIElmIHBhcnRpY2xlIGlzIGdvaW5nIHRvIG1vdmUgb2ZmIGJv
dHRvbSBzaWRlCisgICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbi55ICsgdGhpcy5fc2l6ZS55ID4g
dGhpcy5fc3RhZ2VTaXplLnkpIHsKKyAgICAgICAgICAgIC8vIElmIGRpcmVjdGlvbiBpcyBTb3V0
aAorICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID4gMCAmJiB0aGlzLl9hbmdsZSA8IE1hdGgu
UEkpCisgICAgICAgICAgICAgICAgdGhpcy5fYW5nbGUgPSBNYXRoLlBJICogMiAtIHRoaXMuX2Fu
Z2xlOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92
ZSBvZmYgdG9wIHNpZGUKKyAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uLnkgPCAwKSB7CisgICAg
ICAgICAgICAvLyBJZiBkaXJlY3Rpb24gaXMgTm9ydGgKKyAgICAgICAgICAgIGlmICh0aGlzLl9h
bmdsZSA+IE1hdGguUEkgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJICogMikKKyAgICAgICAgICAg
ICAgICB0aGlzLl9hbmdsZSA9IHRoaXMuX2FuZ2xlIC0gKHRoaXMuX2FuZ2xlIC0gTWF0aC5QSSkg
KiAyOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBCb3VuY2luZ1BhcnRpY2xlc0Fu
aW1hdG9yKGJlbmNobWFyaykgeworICAgIEFuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrKTsK
K307CisKK0JvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShBbmltYXRvci5wcm90b3R5cGUpOworQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yOworCitCb3VuY2luZ1Bh
cnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKSB7CisgICAgaWYg
KCFBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5hbmltYXRlKHRoaXMudGltZURlbHRh
KCkpOworICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiBCb3VuY2luZ1BhcnRpY2xlc1N0
YWdlKGVsZW1lbnQsIG9wdGlvbnMpIHsKKyAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQpOwor
ICAgIAorICAgIHRoaXMucGFydGljbGVTaXplID0gbmV3IFBvaW50KHBhcnNlSW50KG9wdGlvbnNb
InBhcnRpY2xlV2lkdGgiXSkgfHwgMTAsIHBhcnNlSW50KG9wdGlvbnNbInBhcnRpY2xlSGVpZ2h0
Il0pIHx8IDEwKTsKKyAgICB0aGlzLnN2Z05hbWVzcGFjZSA9ICJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyI7CisgICAgdGhpcy54bGlua05hbWVzcGFjZSA9ICJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIjsKKyAgICAKKyAgICB0aGlzLl9wYXJ0aWNsZXMgPSBbXTsKKworICAgIHRoaXMu
X21heFZlbG9jaXR5ID0gcGFyc2VJbnQob3B0aW9uc1sibWF4VmVsb2NpdHkiXSkgfHwgNTAwOwor
ICAgIHRoaXMuX21heFZlbG9jaXR5ID0gTWF0aC5tYXgodGhpcy5fbWF4VmVsb2NpdHksIDEwMCk7
Cit9CisKK0JvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShT
dGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlOworCitCb3VuY2luZ1BhcnRpY2xlc1N0YWdl
LnByb3RvdHlwZS5wYXJzZVNoYXBlUGFyYW10ZXJzID0gZnVuY3Rpb24ob3B0aW9ucykgeworICAg
IHRoaXMuc2hhcGUgPSBvcHRpb25zWyJzaGFwZSJdIHx8ICJjaXJjbGUiOworICAgIHRoaXMuZmls
bCA9IG9wdGlvbnNbImZpbGwiXSB8fCAic29saWQiOworICAgIHRoaXMuY2xpcCA9IG9wdGlvbnNb
ImNsaXAiXSB8fCAiIjsKK30KKworQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucmFu
ZG9tUm90YXRlciA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdQYXJ0aWNs
ZVJvdGF0ZXIodGhpcy5yYW5kb20oMTAwMCwgMTAwMDApKTsKK30KKyAgICAKK0JvdW5jaW5nUGFy
dGljbGVzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpIHsKKyAg
ICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5fcGFydGljbGVzLmxlbmd0aDsgKytpKQorICAgICAg
ICB0aGlzLl9wYXJ0aWNsZXNbaV0uYW5pbWF0ZSh0aW1lRGVsdGEpOworfQorICAgIAorQm91bmNp
bmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KSB7CisgICAg
Y291bnQgPSBjb3VudCA+IDAgPyBNYXRoLmZsb29yKGNvdW50KSA6IE1hdGguY2VpbChjb3VudCk7
CisKKyAgICBpZiAoY291bnQgPT0gMCkKKyAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnRpY2xlcy5s
ZW5ndGg7CisKKyAgICBpZiAoY291bnQgPiAwKSB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5
cGVvZih0aGlzLmNyZWF0ZVBhcnRpY2xlKSA9PSAiZnVuY3Rpb24iKTsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgdGhpcy5fcGFydGljbGVzLnB1
c2godGhpcy5jcmVhdGVQYXJ0aWNsZSgpKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnRpY2xl
cy5sZW5ndGg7CisgICAgfQorCisgICAgY291bnQgPSBNYXRoLm1pbigtY291bnQsIHRoaXMuX3Bh
cnRpY2xlcy5sZW5ndGgpOworICAgICAgICAKKyAgICBpZiAodHlwZW9mKHRoaXMucGFydGljbGVX
aWxsQmVSZW1vdmVkKSA9PSAiZnVuY3Rpb24iKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgIHRoaXMucGFydGljbGVXaWxsQmVSZW1vdmVkKHRo
aXMuX3BhcnRpY2xlc1t0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoIC0gMSAtIGldKTsKKyAgICB9CisK
KyAgICB0aGlzLl9wYXJ0aWNsZXMuc3BsaWNlKC1jb3VudCwgY291bnQpOworICAgIHJldHVybiB0
aGlzLl9wYXJ0aWNsZXMubGVuZ3RoOworfQorCitmdW5jdGlvbiBCb3VuY2luZ1BhcnRpY2xlc0Jl
bmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7
CisgICAgQmVuY2htYXJrLmNhbGwodGhpcywgb3B0aW9ucyk7CisKKyAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFnZSIpOworICAgIGVsZW1lbnQuc2V0QXR0cmli
dXRlKCJ3aWR0aCIsIGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgpOworICAgIGVsZW1lbnQuc2V0
QXR0cmlidXRlKCJoZWlnaHQiLCBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCk7CisKKyAgICB0
aGlzLl9zdGFnZSA9IHRoaXMuY3JlYXRlU3RhZ2UoZWxlbWVudCk7CisgICAgdGhpcy5fYW5pbWF0
b3IgPSB0aGlzLmNyZWF0ZUFuaW1hdG9yKCk7CisgICAgdGhpcy5fc3VpdGUgPSBzdWl0ZTsKKyAg
ICB0aGlzLl90ZXN0ID0gdGVzdDsKKyAgICB0aGlzLl9yZWNvcmRUYWJsZSA9IHJlY29yZFRhYmxl
OworICAgIHRoaXMuX3Byb2dyZXNzQmFyID0gcHJvZ3Jlc3NCYXI7Cit9CisKK0JvdW5jaW5nUGFy
dGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQmVuY2htYXJrLnByb3Rv
dHlwZSk7CitCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyazsKKworQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1h
cmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5l
dyBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yKHRoaXMpOworfQorCitCb3VuY2luZ1BhcnRpY2xl
c0JlbmNobWFyay5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KSB7CisgICAgcmV0dXJu
IHRoaXMuX3N0YWdlLnR1bmUoY291bnQpOworfQorCitCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFy
ay5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5fc3RhZ2Uu
Y2xlYXIoKTsKK30KKworQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLnNob3dS
ZXN1bHRzID0gZnVuY3Rpb24obWVzc2FnZSwgcHJvZ3Jlc3MpIHsKKyAgICBpZiAoIXRoaXMuX3Jl
Y29yZFRhYmxlIHx8ICF0aGlzLl9wcm9ncmVzc0JhciB8fCAhdGhpcy5fc3VpdGUgfHwgIXRoaXMu
X3Rlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIHRoaXMuX3JlY29yZFRhYmxlLnNob3dSZWNv
cmQodGhpcy5fc3VpdGUsIHRoaXMuX3Rlc3QsIHRoaXMuX3NhbXBsZXIsIG1lc3NhZ2UpOworICAg
IHRoaXMuX3Byb2dyZXNzQmFyLnNldFBvcyhwcm9ncmVzcyk7Cit9CkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3Vu
Y2luZy1zaGFwZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc2hhcGVzLmpzCShy
ZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc2hhcGVzLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNzIgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nU2hhcGUoc3RhZ2UpIHsKKyAgICBCb3Vu
Y2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworCisgICAgdGhpcy5lbGVtZW50ID0gdGhp
cy5fY3JlYXRlU3BhbihzdGFnZSk7CisgICAgICAgIAorICAgIHN3aXRjaCAoc3RhZ2UuZmlsbCkg
eworICAgIGNhc2UgInNvbGlkIjoKKyAgICBkZWZhdWx0OgorICAgICAgICB0aGlzLmVsZW1lbnQu
c3R5bGUuYmFja2dyb3VuZENvbG9yID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgICAgIAorICAgIGNhc2UgImdyYWRpZW50IjoKKyAgICAgICAgdGhpcy5lbGVtZW50
LnN0eWxlLmJhY2tncm91bmQgPSAibGluZWFyLWdyYWRpZW50KCIgKyBzdGFnZS5yYW5kb21Db2xv
cigpICsgIiwgIiArIHN0YWdlLnJhbmRvbUNvbG9yKCkgKyAiKSI7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIHRoaXMuX21vdmUoKTsKK30KKworQm91bmNpbmdTaGFwZS5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlKTsKK0JvdW5jaW5nU2hh
cGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTaGFwZTsKKworQm91bmNpbmdTaGFw
ZS5wcm90b3R5cGUuX2NyZWF0ZVNwYW4gPSBmdW5jdGlvbihzdGFnZSkgeworICAgIHZhciBzcGFu
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIHNwYW4uY2xhc3NOYW1lID0g
c3RhZ2Uuc2hhcGUgKyAiICIgKyBzdGFnZS5jbGlwOworICAgIHNwYW4uc3R5bGUud2lkdGggPSB0
aGlzLl9zaXplLnggKyAicHgiOworICAgIHNwYW4uc3R5bGUuaGVpZ2h0ID0gdGhpcy5fc2l6ZS55
ICsgInB4IjsKKyAgICBzdGFnZS5lbGVtZW50LmFwcGVuZENoaWxkKHNwYW4pOworICAgIHJldHVy
biBzcGFuOworfQorCitCb3VuY2luZ1NoYXBlLnByb3RvdHlwZS5fbW92ZSA9IGZ1bmN0aW9uKCkg
eworICAgIHRoaXMuZWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSAidHJhbnNsYXRlKCIgKyB0aGlz
Ll9wb3NpdGlvbi54ICsgInB4LCIgKyB0aGlzLl9wb3NpdGlvbi55ICsgInB4KSIgKyB0aGlzLl9y
b3RhdGVyLnJvdGF0ZVooKTsKK30KKyAgICAKK0JvdW5jaW5nU2hhcGUucHJvdG90eXBlLmFuaW1h
dGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlw
ZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlzLl9yb3RhdGVyLm5leHQo
dGltZURlbHRhKTsgICAgCisgICAgdGhpcy5fbW92ZSgpOworfQorCitmdW5jdGlvbiBCb3VuY2lu
Z1NoYXBlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc1N0
YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5wYXJzZVNoYXBlUGFy
YW10ZXJzKG9wdGlvbnMpOworfQorCitCb3VuY2luZ1NoYXBlc1N0YWdlLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdT
aGFwZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1NoYXBlc1N0YWdlOwor
CitCb3VuY2luZ1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdTaGFwZSh0aGlzKTsKK30KKworQm91bmNpbmdT
aGFwZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkID0gZnVuY3Rpb24ocGFy
dGljbGUpIHsKKyAgICBpZiAocGFydGljbGUuZWxlbWVudCAmJiBwYXJ0aWNsZS5lbGVtZW50LnBh
cmVudE5vZGUgJiYgcGFydGljbGUuZWxlbWVudC5wYXJlbnROb2RlID09IHRoaXMuZWxlbWVudCkK
KyAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKHBhcnRpY2xlLmVsZW1lbnQpOworfQor
CitmdW5jdGlvbiBCb3VuY2luZ1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1h
cmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNz
QmFyKTsKK30KKworQm91bmNpbmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOworQm91bmNpbmdTaGFw
ZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTaGFwZXNCZW5jaG1h
cms7CisKK0JvdW5jaW5nU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1
bmN0aW9uKGVsZW1lbnQpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nU2hhcGVzU3RhZ2UoZWxl
bWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRl
ID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jh
cikgeworICAgIHdpbmRvdy5iZW5jaG1hcmsgPSBuZXcgQm91bmNpbmdTaGFwZXNCZW5jaG1hcmso
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4
OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jl
c291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5j
aW5nLXN2Zy1pbWFnZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1h
Z2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAKK2Z1bmN0aW9uIEJvdW5jaW5n
U3ZnSW1hZ2Uoc3RhZ2UpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2Up
OworCisgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN0YWdlLnN2
Z05hbWVzcGFjZSwgImltYWdlIik7CisgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgieCIs
IDApOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInkiLCAwKTsgICAgCisgICAgdGhp
cy5lbGVtZW50LnNldEF0dHJpYnV0ZSgid2lkdGgiLCB0aGlzLl9zaXplLngpOworICAgIHRoaXMu
ZWxlbWVudC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIHRoaXMuX3NpemUueSk7CisgICAgdGhpcy5l
bGVtZW50LnNldEF0dHJpYnV0ZU5TKHN0YWdlLnhsaW5rTmFtZXNwYWNlLCAiaHJlZiIsIHN0YWdl
LmltYWdlU3JjKTsKKworICAgIHN0YWdlLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50
KTsKKyAgICB0aGlzLl9tb3ZlKCk7ICAgIAorfQorCitCb3VuY2luZ1N2Z0ltYWdlLnByb3RvdHlw
ZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUpOworQm91bmNpbmdT
dmdJbWFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1N2Z0ltYWdlOworCitCb3Vu
Y2luZ1N2Z0ltYWdlLnByb3RvdHlwZS5fbW92ZSA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBjZW50
ZXIgPSB0aGlzLmNlbnRlcigpOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInRyYW5z
Zm9ybSIsIAorICAgICAgICAidHJhbnNsYXRlKCIgKyBjZW50ZXIueCArICIsICIgKyBjZW50ZXIu
eSArICIpICIKKyAgICAgICAgKyB0aGlzLl9yb3RhdGVyLnJvdGF0ZSgpCisgICAgICAgICsgInRy
YW5zbGF0ZSgiICsgLXRoaXMuX3NpemUueCAvIDIgKyAiLCAiICsgLXRoaXMuX3NpemUueSAvIDIg
KyAiKSAiKTsKK30KKworQm91bmNpbmdTdmdJbWFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0
aW9uKHRpbWVEZWx0YSkgeworICAgIEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUu
Y2FsbCh0aGlzLCB0aW1lRGVsdGEpOworICAgIHRoaXMuX21vdmUoKTsKK30KKworZnVuY3Rpb24g
Qm91bmNpbmdTdmdJbWFnZXNTdGFnZShlbGVtZW50LCBvcHRpb25zKSB7CisgICAgQm91bmNpbmdQ
YXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgIHRoaXMuaW1h
Z2VTcmMgPSBvcHRpb25zWyJpbWFnZVNyYyJdIHx8ICJyZXNvdXJjZXMveWluLXlhbmcuc3ZnIjsK
K30KKworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJv
dW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2Uu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdJbWFnZXNTdGFnZTsKKworQm91bmNp
bmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpIHsK
KyAgICByZXR1cm4gbmV3IEJvdW5jaW5nU3ZnSW1hZ2UodGhpcyk7Cit9CisKK0JvdW5jaW5nU3Zn
SW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCA9IGZ1bmN0aW9uKHBh
cnRpY2xlKSB7CisgICAgaWYgKHBhcnRpY2xlLmVsZW1lbnQgJiYgcGFydGljbGUuZWxlbWVudC5w
YXJlbnROb2RlICYmIHBhcnRpY2xlLmVsZW1lbnQucGFyZW50Tm9kZSA9PSB0aGlzLmVsZW1lbnQp
CisgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZChwYXJ0aWNsZS5lbGVtZW50KTsKK30K
KworZnVuY3Rpb24gQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIEJvdW5jaW5nUGFydGljbGVzQmVu
Y2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9n
cmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5j
aW5nU3ZnSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU3Zn
SW1hZ2VzQmVuY2htYXJrOworCitCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUu
Y3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2lu
Z1N2Z0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCit3aW5kb3cuYmVu
Y2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICB3aW5kb3cuYmVuY2htYXJrID0gbmV3IEJvdW5j
aW5nU3ZnSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwg
cHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpzCShyZXZpc2lvbiAwKQorKysg
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNv
dXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2
MSBAQAorZnVuY3Rpb24gQm91bmNpbmdTdmdTaGFwZShzdGFnZSkgeworICAgIEJvdW5jaW5nUGFy
dGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CisgICAgdGhpcy5fc2hhcGUgPSBzdGFnZS5zaGFwZTsK
KyAgICAKKyAgICBzd2l0Y2ggKHRoaXMuX3NoYXBlKSB7CisgICAgY2FzZSAiY2lyY2xlIjoKKyAg
ICBkZWZhdWx0OgorICAgICAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLl9jcmVhdGVDaXJjbGUoc3Rh
Z2UpOworICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSAicmVjdCI6CisgICAgICAg
IHRoaXMuZWxlbWVudCA9IHRoaXMuX2NyZWF0ZVJlY3Qoc3RhZ2UpOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBzd2l0Y2ggKHN0YWdlLmNsaXApIHsKKyAgICBjYXNlICJzdGFyIjoKKyAg
ICAgICAgc3RhZ2UuZW5zdXJlQ2xpcFN0YXJJc0NyZWF0ZWQoKTsgICAgCisgICAgICAgIHRoaXMu
ZWxlbWVudC5zZXRBdHRyaWJ1dGUoImNsaXAtcGF0aCIsICJ1cmwoI3N0YXItY2xpcCkiKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dpdGNoIChzdGFnZS5maWxsKSB7CisgICAgY2Fz
ZSAic29saWQiOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1
dGUoImZpbGwiLCBzdGFnZS5yYW5kb21Db2xvcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgICAg
IAorICAgIGNhc2UgImdyYWRpZW50IjoKKyAgICAgICAgdmFyIGdyYWRpZW50ID0gc3RhZ2UuY3Jl
YXRlR3JhZGllbnQoMik7CisgICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImZpbGwi
LCAidXJsKCMiICsgZ3JhZGllbnQuZ2V0QXR0cmlidXRlKCJpZCIpICsgIikiKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgdGhpcy5fbW92ZSgpOyAgICAKK30KKworQm91bmNpbmdTdmdT
aGFwZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBl
KTsKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdT
aGFwZTsKKworQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZUNpcmNsZSA9IGZ1bmN0
aW9uKHN0YWdlKSB7CisgICAgdmFyIGNpcmNsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhz
dGFnZS5zdmdOYW1lc3BhY2UsICJjaXJjbGUiKTsKKyAgICBjaXJjbGUuc2V0QXR0cmlidXRlKCJj
eCIsIHRoaXMuX3NpemUueCAvIDIpOworICAgIGNpcmNsZS5zZXRBdHRyaWJ1dGUoImN5IiwgdGhp
cy5fc2l6ZS55IC8gMik7ICAgIAorICAgIGNpcmNsZS5zZXRBdHRyaWJ1dGUoInIiLCBNYXRoLm1p
bih0aGlzLl9zaXplLngsIHRoaXMuX3NpemUueSkgLyAyKTsKKyAgICBzdGFnZS5lbGVtZW50LmFw
cGVuZENoaWxkKGNpcmNsZSk7CisgICAgcmV0dXJuIGNpcmNsZTsKK30KKworQm91bmNpbmdTdmdT
aGFwZS5wcm90b3R5cGUuX2NyZWF0ZVJlY3QgPSBmdW5jdGlvbihzdGFnZSkgeworICAgIHZhciBy
ZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN0YWdlLnN2Z05hbWVzcGFjZSwgInJlY3Qi
KTsKKyAgICByZWN0LnNldEF0dHJpYnV0ZSgieCIsIDApOworICAgIHJlY3Quc2V0QXR0cmlidXRl
KCJ5IiwgMCk7ICAgIAorICAgIHJlY3Quc2V0QXR0cmlidXRlKCJ3aWR0aCIsIHRoaXMuX3NpemUu
eCk7CisgICAgcmVjdC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIHRoaXMuX3NpemUueSk7CisgICAg
c3RhZ2UuZWxlbWVudC5hcHBlbmRDaGlsZChyZWN0KTsgICAgCisgICAgcmV0dXJuIHJlY3Q7Cit9
CisKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLl9tb3ZlID0gZnVuY3Rpb24oKSB7CisgICAg
dmFyIHRyYW5zZm9ybTsKKyAgICBpZiAodGhpcy5fc2hhcGUgPT0gImNpcmNsZSIpCisgICAgICAg
IHRyYW5zZm9ybSA9ICJ0cmFuc2xhdGUoIiArIHRoaXMuX3Bvc2l0aW9uLnggKyAiLCAiICsgdGhp
cy5fcG9zaXRpb24ueSArICIpIjsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIGNlbnRlciA9IHRo
aXMuY2VudGVyKCk7CisgICAgICAgIHRyYW5zZm9ybSAgPSAidHJhbnNsYXRlKCIgKyBjZW50ZXIu
eCArICIsICIgKyBjZW50ZXIueSArICIpICI7CisgICAgICAgIHRyYW5zZm9ybSArPSB0aGlzLl9y
b3RhdGVyLnJvdGF0ZSgpOworICAgICAgICB0cmFuc2Zvcm0gKz0gInRyYW5zbGF0ZSgiICsgLXRo
aXMuX3NpemUud2lkdGgoKSAvIDIgKyAiLCAiICsgLXRoaXMuX3NpemUuaGVpZ2h0KCkgLyAyICsg
IikiOworICAgIH0KKyAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCB0
cmFuc2Zvcm0pOworfQorCitCb3VuY2luZ1N2Z1NoYXBlLnByb3RvdHlwZS5hbmltYXRlID0gZnVu
Y3Rpb24odGltZURlbHRhKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0
ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7CisgICAgdGhpcy5fbW92ZSgpOworfQorCitmdW5jdGlv
biBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpIHsKKyAgICBCb3VuY2lu
Z1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5w
YXJzZVNoYXBlUGFyYW10ZXJzKG9wdGlvbnMpOworfQorCitCb3VuY2luZ1N2Z1NoYXBlc1N0YWdl
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5
cGUpOworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3Vu
Y2luZ1N2Z1NoYXBlc1N0YWdlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCitCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3Rv
dHlwZS5lbnN1cmVDbGlwU3RhcklzQ3JlYXRlZCA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0
aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvcigiI3N0YXItY2xpcCIpIHx8IHRoaXMuX2NyZWF0ZUNs
aXBTdGFyKCk7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmVuc3VyZURl
ZnNJc0NyZWF0ZWQgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5lbGVtZW50LnF1ZXJ5
U2VsZWN0b3IoImRlZnMiKSB8fCB0aGlzLl9jcmVhdGVEZWZzKCk7Cit9CisKK0JvdW5jaW5nU3Zn
U2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZUdyYWRpZW50ID0gZnVuY3Rpb24oc3RvcHMpIHsK
KyAgICB2YXIgZ3JhZGllbnQgID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHRoaXMuc3ZnTmFt
ZXNwYWNlLCAibGluZWFyR3JhZGllbnQiKTsKKyAgICAKKyAgICBpZiAodHlwZW9mIHRoaXMuX2dh
ZGllbnRzQ291bnQgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICB0aGlzLl9nYWRpZW50c0NvdW50
ID0gMDsgICAgCisgICAgZ3JhZGllbnQuc2V0QXR0cmlidXRlKCJpZCIsICJnYWRpZW50LSIgKyAr
K3RoaXMuX2dhZGllbnRzQ291bnQpOworICAgIAorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3Rv
cHM7ICsraSkgeworICAgICAgICB2YXIgc3RvcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0
aGlzLnN2Z05hbWVzcGFjZSwgInN0b3AiKTsKKyAgICAgICAgc3RvcC5zZXRBdHRyaWJ1dGUoIm9m
ZnNldCIsIGkgKiAxMDAgLyBzdG9wcyArICIlIik7CisgICAgICAgIHN0b3Auc2V0QXR0cmlidXRl
KCJzdG9wLWNvbG9yIiwgdGhpcy5yYW5kb21Db2xvcigpKTsKKyAgICAgICAgZ3JhZGllbnQuYXBw
ZW5kQ2hpbGQoc3RvcCk7CisgICAgfQorCisgICAgdGhpcy5lbnN1cmVEZWZzSXNDcmVhdGVkKCku
YXBwZW5kQ2hpbGQoZ3JhZGllbnQpOworICAgIHJldHVybiBncmFkaWVudDsKK30KKworQm91bmNp
bmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuX2NyZWF0ZURlZnMgPSBmdW5jdGlvbigpIHsKKyAg
ICB2YXIgZGVmcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0aGlzLnN2Z05hbWVzcGFjZSwi
ZGVmcyIpOworICAgIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUoZGVmcywgdGhpcy5lbGVtZW50
LmZpcnN0Q2hpbGQpOworICAgIHJldHVybiBkZWZzOworfQorICAgIAorQm91bmNpbmdTdmdTaGFw
ZXNTdGFnZS5wcm90b3R5cGUuX2NyZWF0ZUNsaXBTdGFyID0gZnVuY3Rpb24oKSB7CisgICAgdmFy
IGNsaXBQYXRoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHRoaXMuc3ZnTmFtZXNwYWNlLCAi
Y2xpcFBhdGgiKTsKKyAgICBjbGlwUGF0aC5zZXRBdHRyaWJ1dGUoImlkIiwgInN0YXItY2xpcCIp
OworICAgIGNsaXBQYXRoLnNldEF0dHJpYnV0ZSgiY2xpcFBhdGhVbml0cyIsICJvYmplY3RCb3Vu
ZGluZ0JveCIpOworICAgIAorICAgIHZhciBwYXRoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KHRoaXMuc3ZnTmFtZXNwYWNlLCAicGF0aCIpOworICAgIHBhdGguc2V0QXR0cmlidXRlKCJkIiwg
Ik0uNTAsMEwuMzgsLjM4TDAsLjM4TC4zMCwuNjBMLjE4LDFMLjUwLC43NUwuODIsMUwuNzAsLjYw
TDEsLjM4TC42MiwuMzh6Iik7CisgICAgY2xpcFBhdGguYXBwZW5kQ2hpbGQocGF0aCk7CisgICAg
CisgICAgdGhpcy5lbnN1cmVEZWZzSXNDcmVhdGVkKCkuYXBwZW5kQ2hpbGQoY2xpcFBhdGgpOwor
ICAgIHJldHVybiBjbGlwUGF0aDsKK30KKworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5
cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5n
U3ZnU2hhcGUodGhpcyk7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLnBh
cnRpY2xlV2lsbEJlUmVtb3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xlKSB7CisgICAgaWYgKCFwYXJ0
aWNsZS5lbGVtZW50IHx8ICFwYXJ0aWNsZS5lbGVtZW50LnBhcmVudE5vZGUgfHwgcGFydGljbGUu
ZWxlbWVudC5wYXJlbnROb2RlICE9IHRoaXMuZWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworICAg
ICAgICAKKyAgICB2YXIgZmlsbCA9IHBhcnRpY2xlLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCJmaWxs
Iik7CisgICAgaWYgKGZpbGwuaW5kZXhPZigidXJsKCMiKSA9PSAwKSB7CisgICAgICAgIHZhciBn
cmFkaWVudCA9IHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKGZpbGwuc3Vic3RyaW5nKDQsIGZp
bGwubGVuZ3RoIC0gMSkpOworICAgICAgICB0aGlzLmVuc3VyZURlZnNJc0NyZWF0ZWQoKS5yZW1v
dmVDaGlsZChncmFkaWVudCk7CisgICAgfQorICAgIAorICAgIHRoaXMuZWxlbWVudC5yZW1vdmVD
aGlsZChwYXJ0aWNsZS5lbGVtZW50KTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdTdmdTaGFwZXNC
ZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcikg
eworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nU3ZnU2hh
cGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNC
ZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrOworCitCb3VuY2luZ1N2
Z1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50
KSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlKGVsZW1lbnQsIHRoaXMu
X29wdGlvbnMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9u
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICB3
aW5kb3cuYmVuY2htYXJrID0gbmV3IEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvYmVu
Y2htYXJrLmNzcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9yZXNvdXJjZXMvYmVuY2htYXJrLmNzcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3
IEBACitodG1sIHsKKyAgaGVpZ2h0OiAxMDAlOworfQorYm9keSB7CisgIHdpZHRoOiAxMDAlOwor
ICBoZWlnaHQ6IDEwMCU7CisgIG92ZXJmbG93OiBoaWRkZW47CisgIG1hcmdpbjogMDsKKyAgcGFk
ZGluZzogMDsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VhZWFlYTsKK30KKworI3N0YWdlIHsKKyAg
d2lkdGg6IDEwMCU7CisgIGhlaWdodDogMTAwJTsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VhZWFl
YTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMv
YmVuY2htYXJrLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9yZXNvdXJjZXMvYmVuY2htYXJrLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9iZW5jaG1hcmsuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxODggQEAKK2Z1bmN0aW9uIEJlbmNobWFya1N0YXRlKHRlc3RJbnRlcnZh
bCkgeworICAgIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0ID0gMDsKKyAgICB0aGlzLl9zdGFnZUlu
dGVydmFsID0gdGVzdEludGVydmFsIC8gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEOwor
fQorCitCZW5jaG1hcmtTdGF0ZS5zdGFnZXMgPSB7CisgICAgV0FSTUlOR19VUDogMCwKKyAgICBT
QU1QTElORzogMSwKKyAgICBGSU5JU0hFRDogMiwKKyAgICBtZXNzYWdlczogWyAiV2FybWluZyB1
cCIsICJTYW1wbGluZyIsICJGaW5pc2hlZCIgXQorfTsKKworQmVuY2htYXJrU3RhdGUucHJvdG90
eXBlID0geworICAgIF90aW1lT2Zmc2V0IDogZnVuY3Rpb24oc3RhZ2UpIHsKKyAgICAgICAgcmV0
dXJuIHN0YWdlICogdGhpcy5fc3RhZ2VJbnRlcnZhbDsKKyAgICB9LAorICAgIF9tZXNzYWdlIDog
ZnVuY3Rpb24oc3RhZ2UsIHRpbWVPZmZzZXQpIHsKKyAgICAgICAgaWYgKHN0YWdlID09IEJlbmNo
bWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRCkKKyAgICAgICAgICAgIHJldHVybiBCZW5jaG1hcmtT
dGF0ZS5zdGFnZXMubWVzc2FnZXNbc3RhZ2VdOworCisgICAgICAgIHJldHVybiBCZW5jaG1hcmtT
dGF0ZS5zdGFnZXMubWVzc2FnZXNbc3RhZ2VdICsgIi4uLiAoIgorICAgICAgICAgICAgKyBNYXRo
LmZsb29yKCh0aW1lT2Zmc2V0IC0gdGhpcy5fdGltZU9mZnNldChzdGFnZSkpIC8gMTAwMCkgKyAi
LyIKKyAgICAgICAgICAgICsgTWF0aC5mbG9vcigodGhpcy5fdGltZU9mZnNldChzdGFnZSArIDEp
IC0gdGhpcy5fdGltZU9mZnNldChzdGFnZSkpIC8gMTAwMCkgKyAiKSI7CisgICAgfSwKKyAgICB1
cGRhdGUgOiBmdW5jdGlvbihjdXJyZW50VGltZU9mZnNldCkgeworICAgICAgICB0aGlzLl9jdXJy
ZW50VGltZU9mZnNldCA9IGN1cnJlbnRUaW1lT2Zmc2V0OworICAgIH0sCisgICAgc2FtcGxpbmdU
aW1lT2Zmc2V0IDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLl90aW1lT2Zmc2V0
KEJlbmNobWFya1N0YXRlLnN0YWdlcy5TQU1QTElORyk7CisgICAgfSwKKyAgICBjdXJyZW50U3Rh
Z2UgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgZm9yICh2YXIgc3RhZ2UgPSBCZW5jaG1hcmtTdGF0
ZS5zdGFnZXMuV0FSTUlOR19VUDsgc3RhZ2UgPCBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNI
RUQ7ICsrc3RhZ2UpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50VGltZU9mZnNldCA8
IHRoaXMuX3RpbWVPZmZzZXQoc3RhZ2UgKyAxKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Rh
Z2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5J
U0hFRDsKKyAgICB9LAorICAgIGN1cnJlbnRNZXNzYWdlIDogZnVuY3Rpb24oKSB7CisgICAgICAg
IHJldHVybiB0aGlzLl9tZXNzYWdlKHRoaXMuY3VycmVudFN0YWdlKCksIHRoaXMuX2N1cnJlbnRU
aW1lT2Zmc2V0KTsKKyAgICB9LAorICAgIGN1cnJlbnRQcm9ncmVzcyA6IGZ1bmN0aW9uKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgLyB0aGlzLl90aW1lT2Zmc2V0
KEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRCk7CisgICAgfQorfQorCitmdW5jdGlvbiBB
bmltYXRvcihiZW5jaG1hcmspIHsKKyAgICB0aGlzLl9iZW5jaG1hcmsgPSBiZW5jaG1hcms7Cisg
ICAgdGhpcy5fZnJhbWVDb3VudCA9IDA7CisgICAgdGhpcy5fZHJvcEZyYW1lQ291bnQgPSAxOwor
ICAgIHRoaXMuX21lYXN1cmVGcmFtZUNvdW50ID0gMzsgCisgICAgdGhpcy5fY3VycmVudFRpbWVP
ZmZzZXQgPSAwOworICAgIHRoaXMuX2VzdGltYXRvciA9IG5ldyBFc3RpbWF0b3IoKTsKK30KKwor
QW5pbWF0b3IucHJvdG90eXBlID0geworICAgIHN0YXJ0IDogZnVuY3Rpb24oKSB7CisgICAgICAg
IHRoaXMuX2ludGVydmFsSWQgPSBzZXRJbnRlcnZhbCh0aGlzLmFuaW1hdGUuYmluZCh0aGlzKSwg
MSk7CisgICAgfSwKKyAgICB0aW1lRGVsdGEgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IC0gdGhpcy5fc3RhcnRUaW1lT2Zmc2V0OworICAgIH0s
CisgICAgYW5pbWF0ZSA6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgY3VycmVudFRpbWUgPSBw
ZXJmb3JtYW5jZS5ub3coKTsKKyAgICAgICAgCisgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fcmVm
ZXJlbmNlVGltZSA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICB0aGlzLl9yZWZlcmVuY2VU
aW1lID0gY3VycmVudFRpbWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2N1cnJl
bnRUaW1lT2Zmc2V0ID0gY3VycmVudFRpbWUgLSB0aGlzLl9yZWZlcmVuY2VUaW1lOworCisgICAg
ICAgIGlmICghdGhpcy5fZnJhbWVDb3VudCkKKyAgICAgICAgICAgIHRoaXMuX3N0YXJ0VGltZU9m
ZnNldCA9IHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0OworCisgICAgICAgIC8vIFN0YXJ0IG1lYXN1
cmluZyBhZnRlciBkcm9wcGluZyBfZHJvcEZyYW1lQ291bnQgZnJhbWVzLgorICAgICAgICBpZiAo
dGhpcy5fZnJhbWVDb3VudCA9PSB0aGlzLl9kcm9wRnJhbWVDb3VudCkKKyAgICAgICAgICAgIHRo
aXMuX21lYXN1cmVUaW1lT2Zmc2V0ID0gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQ7CisKKyAgICAg
ICAgKyt0aGlzLl9mcmFtZUNvdW50OworCisgICAgICAgIC8vIERyb3AgX2Ryb3BGcmFtZUNvdW50
IGZyYW1lcyBhbmQgbWVhc3VyZSB0aGUgYXZlcmFnZSBvZiBfbWVhc3VyZUZyYW1lQ291bnQgZnJh
bWVzLgorICAgICAgICBpZiAodGhpcy5fZnJhbWVDb3VudCA8IHRoaXMuX2Ryb3BGcmFtZUNvdW50
ICsgdGhpcy5fbWVhc3VyZUZyYW1lQ291bnQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgICAgICAvLyBHZXQgdGhlIGF2ZXJhZ2UgRlBTIG9mIF9tZWFzdXJlRnJhbWVDb3VudCBmcmFt
ZXMgb3ZlciBtZWFzdXJlVGltZURlbHRhLgorICAgICAgICB2YXIgbWVhc3VyZVRpbWVEZWx0YSA9
IHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IC0gdGhpcy5fbWVhc3VyZVRpbWVPZmZzZXQ7CisgICAg
ICAgIHZhciBjdXJyZW50RnJhbWVSYXRlID0gTWF0aC5mbG9vcigxMDAwIC8gKG1lYXN1cmVUaW1l
RGVsdGEgLyB0aGlzLl9tZWFzdXJlRnJhbWVDb3VudCkpOworICAgICAgICAgCisgICAgICAgIC8v
IFVzZSBLYWxtYW4gZmlsdGVyIHRvIGdldCBhIG1vcmUgbm9uLWZsdWN0dWF0aW5nIGZyYW1lIHJh
dGUuCisgICAgICAgIGlmICh0aGlzLl9iZW5jaG1hcmsub3B0aW9ucy5lc3RpbWF0ZWRGcmFtZVJh
dGUpCisgICAgICAgICAgICBjdXJyZW50RnJhbWVSYXRlID0gdGhpcy5fZXN0aW1hdG9yLmVzdGlt
YXRlKG1lYXN1cmVUaW1lRGVsdGEsIGN1cnJlbnRGcmFtZVJhdGUpOworICAgICAgICAKKyAgICAg
ICAgLy8gQWRqdXN0IHRoZSB0ZXN0IHRvIHJlYWNoIHRoZSBkZXNpcmVkIEZQUy4KKyAgICAgICAg
dmFyIHJlc3VsdCA9IHRoaXMuX2JlbmNobWFyay51cGRhdGUodGhpcy5fY3VycmVudFRpbWVPZmZz
ZXQsIHRoaXMudGltZURlbHRhKCksIGN1cnJlbnRGcmFtZVJhdGUpOworICAgICAgICAKKyAgICAg
ICAgLy8gU3RvcCB0aGUgYW5pbWF0b3IgaWYgdGhlIGJlbmNobWFyayBoYXMgZmluaXNoZWQuCisg
ICAgICAgIGlmICghcmVzdWx0ICYmIHR5cGVvZiB0aGlzLl9pbnRlcnZhbElkICE9ICJ1bmRlZmlu
ZWQiKQorICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbElkKTsKKworICAg
ICAgICAvLyBTdGFydCB0aGUgbmV4dCBkcm9wL21lYXN1cmUgY3ljbGUuCisgICAgICAgIHRoaXMu
X2ZyYW1lQ291bnQgPSAwOworICAgICAgICAKKyAgICAgICAgLy8gcmVzdWx0IG1heSBzdG9wIHRo
ZSBhbmltYXRvciBpZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKSBoYXMgYmVlbiB1c2VkLgorICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisgICAgYW5pbWF0ZUxvb3AgOiBmdW5jdGlvbih0
aW1lc3RhbXApIHsKKyAgICAgICAgaWYgKHRoaXMuYW5pbWF0ZSgpKQorICAgICAgICAgICAgcmVx
dWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0ZUxvb3AuYmluZCh0aGlzKSk7CisgICAgfQor
fQorCitmdW5jdGlvbiBCZW5jaG1hcmsob3B0aW9ucykgeworICAgIHRoaXMuX29wdGlvbnMgPSBv
cHRpb25zOworICAgIHRoaXMuX21ldGhvZCA9IHRoaXMuX29wdGlvbnNbIm1ldGhvZCJdIHx8ICJy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUiOworCisgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKKyAg
ICB0aGlzLl9yZWNvcmRJbnRlcnZhbCA9IDIwMDsgICAgCisgICAgdGhpcy5faXNTYW1wbGluZyA9
IGZhbHNlOworCisgICAgdmFyIGdhaW4gPSBwYXJzZUludCh0aGlzLl9vcHRpb25zWyJnYWluIl0p
IHx8IDE7CisgICAgdmFyIGxvd1ZhbHVlID0gLXBhcnNlSW50KHRoaXMuX29wdGlvbnNbImFkZExp
bWl0Il0pIHx8IDE7CisgICAgdmFyIGhpZ2hWYWx1ZSA9IHBhcnNlSW50KHRoaXMuX29wdGlvbnNb
InJlbW92ZUxpbWl0Il0pIHx8IDE7CisgICAgCisgICAgdGhpcy5fY29udHJvbGxlciA9IG5ldyBD
b250cm9sbGVyKGdhaW4sIG9wdGlvbnMuZnJhbWVSYXRlLCBsb3dWYWx1ZSwgaGlnaFZhbHVlKTsK
KyAgICB0aGlzLl9zYW1wbGVyID0gbmV3IFNhbXBsZXIoMik7CisgICAgdGhpcy5fc3RhdGUgPSBu
ZXcgQmVuY2htYXJrU3RhdGUodGhpcy5vcHRpb25zLnRlc3RJbnRlcnZhbCk7ICAgIAorfQorCitC
ZW5jaG1hcmsucHJvdG90eXBlID0geworICAgIC8vIENhbGxlZCBmcm9tIHRoZSBsb2FkIGV2ZW50
IGxpc3RlbmVyIG9yIGZyb20gdGhpcy5ydW4oKQorICAgIHN0YXJ0IDogZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGlmICh0aGlzLl9tZXRob2QgPT0gInNldEludGVydmFsIikKKyAgICAgICAgICAgIHRo
aXMuX2FuaW1hdG9yLnN0YXJ0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2Fu
aW1hdG9yLmFuaW1hdGVMb29wKCk7CisgICAgfSwKKyAgICAvLyBDYWxsZWQgZnJvbSB0aGUgYW5p
bWF0b3IgdG8gYWRqdXN0IHRoZSBjb21wbGV4aXR5IG9mIHRoZSB0ZXN0CisgICAgdXBkYXRlIDog
ZnVuY3Rpb24oY3VycmVudFRpbWVPZmZzZXQsIHRpbWVEZWx0YSwgY3VycmVudEZyYW1lUmF0ZSkg
eworICAgICAgICB0aGlzLl9zdGF0ZS51cGRhdGUoY3VycmVudFRpbWVPZmZzZXQpOworICAgICAg
ICAKKyAgICAgICAgdmFyIHN0YWdlID0gdGhpcy5fc3RhdGUuY3VycmVudFN0YWdlKCk7CisgICAg
ICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQpIHsKKyAgICAg
ICAgICAgIHRoaXMuY2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuU0FNUExJTkcg
JiYgIXRoaXMuX2lzU2FtcGxpbmcpIHsKKyAgICAgICAgICAgIHRoaXMuX3NhbXBsZXIuc3RhcnRT
YW1wbGluZyh0aGlzLl9zdGF0ZS5zYW1wbGluZ1RpbWVPZmZzZXQoKSk7CisgICAgICAgICAgICB0
aGlzLl9pc1NhbXBsaW5nID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0dW5lVmFs
dWUgPSAwOworICAgICAgICBpZiAoISh0aGlzLl9pc1NhbXBsaW5nICYmIHRoaXMub3B0aW9ucy5m
aXhUZXN0Q29tcGxleGl0eSkpIHsKKyAgICAgICAgICAgIC8vIFRoZSByZWxhdGlvbnNoaXAgYmV0
d2VlbiBmcmFtZVJhdGUgYW5kIHRlc3QgY29tcGxleGl0eSBpcyBpbnZlcnNlLXByb3BvcnRpb25h
bCBzbyB3ZQorICAgICAgICAgICAgLy8gbmVlZCB0byB1c2UgdGhlIG5lZ2F0aXZlIG9mIENvbnRy
b2xsZXIudHVuZSgpIHRvIGNoYW5nZSB0aGUgY29tcGxleGl0eSBvZiB0aGUgdGVzdAorICAgICAg
ICAgICAgdHVuZVZhbHVlID0gLXRoaXMuX2NvbnRyb2xsZXIudHVuZShjdXJyZW50RnJhbWVSYXRl
LCB0aW1lRGVsdGEgLyAxMDAwKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBjdXJyZW50Q29t
cGxleGl0eSA9IHRoaXMudHVuZSh0dW5lVmFsdWUpOworICAgICAgICB0aGlzLnJlY29yZChjdXJy
ZW50VGltZU9mZnNldCwgY3VycmVudENvbXBsZXhpdHksIGN1cnJlbnRGcmFtZVJhdGUpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorICAgIHJlY29yZCA6IGZ1bmN0aW9uKGN1cnJlbnRU
aW1lT2Zmc2V0LCBjdXJyZW50Q29tcGxleGl0eSwgY3VycmVudEZyYW1lUmF0ZSkgeworICAgICAg
ICB0aGlzLl9zYW1wbGVyLnNhbXBsZShjdXJyZW50VGltZU9mZnNldCwgW2N1cnJlbnRDb21wbGV4
aXR5LCBjdXJyZW50RnJhbWVSYXRlXSk7CisgICAgICAgIAorICAgICAgICBpZiAodHlwZW9mIHRo
aXMuX3JlY29yZFRpbWVPZmZzZXQgPT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICB0aGlzLl9y
ZWNvcmRUaW1lT2Zmc2V0ID0gY3VycmVudFRpbWVPZmZzZXQ7CisKKyAgICAgICAgdmFyIHN0YWdl
ID0gdGhpcy5fc3RhdGUuY3VycmVudFN0YWdlKCk7CisgICAgICAgIGlmIChzdGFnZSAhPSBCZW5j
aG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQgJiYgY3VycmVudFRpbWVPZmZzZXQgPCB0aGlzLl9y
ZWNvcmRUaW1lT2Zmc2V0ICsgdGhpcy5fcmVjb3JkSW50ZXJ2YWwpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdGhpcy5zaG93UmVzdWx0cyh0aGlzLl9zdGF0ZS5jdXJyZW50TWVzc2Fn
ZSgpLCB0aGlzLl9zdGF0ZS5jdXJyZW50UHJvZ3Jlc3MoKSk7CisgICAgICAgIHRoaXMuX3JlY29y
ZFRpbWVPZmZzZXQgPSBjdXJyZW50VGltZU9mZnNldDsKKyAgICB9LAorICAgIHJ1biA6IGZ1bmN0
aW9uKCkgeworICAgICAgICB0aGlzLnN0YXJ0KCk7CisKKyAgICAgICAgdmFyIHByb21pc2UgPSBu
ZXcgU2ltcGxlUHJvbWlzZTsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICBmdW5j
dGlvbiByZXNvbHZlV2hlbkZpbmlzaGVkKCkgeworICAgICAgICAgICAgaWYgKHR5cGVvZiBzZWxm
Ll9zdGF0ZSAhPSAidW5kZWZpbmVkIiAmJiAoc2VsZi5fc3RhdGUuY3VycmVudFN0YWdlKCkgPT0g
QmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
cHJvbWlzZS5yZXNvbHZlKHNlbGYuX3NhbXBsZXIpOworICAgICAgICAgICAgc2V0VGltZW91dChy
ZXNvbHZlV2hlbkZpbmlzaGVkLmJpbmQoc2VsZiksIDUwKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgcmVzb2x2ZVdoZW5GaW5pc2hlZCgpOworICAgICAgICByZXR1cm4gcHJvbWlzZTsK
KyAgICB9Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3Vy
Y2VzL21hdGguanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL3Jlc291cmNlcy9tYXRoLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTg0IEBACit2YXIgTWF0cml4ID0ge307CisKK01hdHJpeC5pbml0ID0gZnVuY3Rpb24obSwg
biwgdikgeworICAgIHJldHVybiBBcnJheShtICogbikuZmlsbCh2KTsKK30KKworTWF0cml4Lnpl
cm9zID0gZnVuY3Rpb24obSwgbikgeworICAgIHJldHVybiBNYXRyaXguaW5pdChtLCBuLCAwKTsK
K30KKworTWF0cml4Lm9uZXMgPSBmdW5jdGlvbihtLCBuKSB7CisgICAgcmV0dXJuIE1hdHJpeC5p
bml0KG0sIG4sIDEpOworfQorCitNYXRyaXguaWRlbnRpdHkgPSBmdW5jdGlvbihuKSB7CisgICAg
dmFyIG91dCA9IG5ldyBNYXRyaXguemVyb3Mobiwgbik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBuOyArK2kpCisgICAgICAgIG91dFtpICogbiArIGldID0gMTsKKyAgICByZXR1cm4gb3V0Owor
fQorCitNYXRyaXguc3RyID0gZnVuY3Rpb24oQSwgbiwgbSkgeworICAgIHZhciBvdXQgPSAobSA+
IDEgJiYgbiA+IDEgPyAiTWF0cml4WyIgKyBuICsgIiwgIiArIG0gOiAiVmVjdG9yWyIgKyBtICog
bikgKyAiXSA9IFsiOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbiAqIG07ICsraSkgeworICAg
ICAgICBvdXQgKz0gQVtpXTsKKyAgICAgICAgaWYgKGkgPCBuICogbSAtIDEpCisgICAgICAgICAg
ICBvdXQgKz0gIiwgIjsKKyAgICB9ICAgICAgIAorICAgIHJldHVybiBvdXQgKyAiXSI7Cit9Owor
CitNYXRyaXgucG9zID0gZnVuY3Rpb24obSwgaSwgaikgeworICAgIHJldHVybiBtICogaSArIGo7
Cit9CisKK01hdHJpeC5hZGQgPSBmdW5jdGlvbihBLCBCLCBuLCBtKSB7CisgICAgdmFyIG91dCA9
IE1hdHJpeC56ZXJvcyhuLCBtKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4gKiBtOyArK2kp
CisgICAgICAgIG91dFtpXSA9IEFbaV0gKyBCW2ldOworICAgIHJldHVybiBvdXQ7Cit9CisKK01h
dHJpeC5zdWJ0cmFjdCA9IGZ1bmN0aW9uKEEsIEIsIG4sIG0pIHsKKyAgICB2YXIgb3V0ID0gTWF0
cml4Lnplcm9zKG4sIG0pOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbiAqIG07ICsraSkKKyAg
ICAgICAgb3V0W2ldID0gQVtpXSAtIEJbaV07CisgICAgcmV0dXJuIG91dDsKK30KKworTWF0cml4
LnNjYWxlID0gZnVuY3Rpb24ocywgQSwgbiwgbSkgeworICAgIHZhciBvdXQgPSBNYXRyaXguemVy
b3MobiwgbSk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuICogbTsgKytpKQorICAgICAgICBv
dXRbaV0gPSBzICogQVtpXTsKKyAgICByZXR1cm4gb3V0OworfQorCitNYXRyaXgudHJhbnNwb3Nl
ID0gZnVuY3Rpb24oQSwgbiwgbSkgeworICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3MobSwgbik7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgZm9yICh2YXIgaiA9
IDA7IGogPCBtOyArK2opCisgICAgICAgICAgICBvdXRbTWF0cml4LnBvcyhuLCBpLCBqKV0gPSBB
W01hdHJpeC5wb3MobSwgaiwgaSldOworICAgIH0gICAgICAgCisgICAgcmV0dXJuIG91dDsKK30K
KworTWF0cml4Lm11bHRpcGx5ID0gZnVuY3Rpb24oQSwgQiwgbiwgbSwgcCkgeworICAgIHZhciBv
dXQgPSBNYXRyaXguemVyb3MobiwgcCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kp
IHsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwOyArK2opIHsKKyAgICAgICAgICAgIGZv
ciAodmFyIGsgPSAwOyBrIDwgbTsgKytrKSB7CisgICAgICAgICAgICAgICAgb3V0W01hdHJpeC5w
b3MocCwgaSwgaildICs9IEFbTWF0cml4LnBvcyhtLCBpLCBrKV0gKiBCW01hdHJpeC5wb3MocCwg
aywgaildOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBvdXQ7
Cit9CisKK3ZhciBWZWN0b3IzID0ge307CisKK1ZlY3RvcjMuemVyb3MgPSBmdW5jdGlvbigpIHsg
cmV0dXJuIE1hdHJpeC56ZXJvcygxLCAzKTsgfQorVmVjdG9yMy5vbmVzID0gZnVuY3Rpb24oKSB7
IHJldHVybiBNYXRyaXgub25lcygxLCAzKTsgfQorVmVjdG9yMy5zdHIgPSBmdW5jdGlvbih2KSB7
IHJldHVybiBNYXRyaXguc3RyKHYsIDEsIDMpOyB9CitWZWN0b3IzLmFkZCA9IGZ1bmN0aW9uKHYs
IHcpIHsgcmV0dXJuIE1hdHJpeC5hZGQodiwgdywgMSwgMyk7IH0KK1ZlY3RvcjMuc3VidHJhY3Qg
PSBmdW5jdGlvbih2LCB3KSB7IHJldHVybiBNYXRyaXguc3VidHJhY3QodiwgdywgMSwgMyk7IH0K
K1ZlY3RvcjMuc2NhbGUgPSBmdW5jdGlvbihzLCB2KSB7IHJldHVybiBNYXRyaXguc2NhbGUocywg
diwgMSwgMyk7IH0KK1ZlY3RvcjMubXVsdGlwbHlNYXRyaXgzID0gZnVuY3Rpb24odiwgQSkgeyBy
ZXR1cm4gTWF0cml4Lm11bHRpcGx5KHYsIEEsIDEsIDMsIDMpOyB9CitWZWN0b3IzLm11bHRpcGx5
VmVjdG9yMyA9IGZ1bmN0aW9uKHYsIHcpIHsKKyAgICB2YXIgb3V0ID0gMDsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDM7ICsraSkKKyAgICAgICAgb3V0ICs9IHZbaV0gKiB3W2ldOworICAgIHJl
dHVybiBvdXQ7Cit9CisKK3ZhciBNYXRyaXgzID0ge307CisKK01hdHJpeDMuemVyb3MgPSBmdW5j
dGlvbigpIHsgcmV0dXJuIE1hdHJpeC56ZXJvcygzLCAzKTsgfQorTWF0cml4My5pZGVudGl0eSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gTWF0cml4LmlkZW50aXR5KDMsIDMpOyB9CitNYXRyaXgzLnN0
ciA9IGZ1bmN0aW9uKEEpIHsgcmV0dXJuIE1hdHJpeC5zdHIoQSwgMywgMyk7IH0KK01hdHJpeDMu
cG9zID0gZnVuY3Rpb24oaSwgaikgeyByZXR1cm4gTWF0cml4LnBvcygzLCBpLCBqKTsgfQorTWF0
cml4My5hZGQgPSBmdW5jdGlvbihBLCBCKSB7IHJldHVybiBNYXRyaXguYWRkKEEsIEIsIDMsIDMp
OyB9CitNYXRyaXgzLnN1YnRyYWN0ID0gZnVuY3Rpb24oQSwgQikgeyByZXR1cm4gTWF0cml4LnN1
YnRyYWN0KEEsIEIsIDMsIDMpOyB9CitNYXRyaXgzLnNjYWxlID0gZnVuY3Rpb24ocywgQSkgeyBy
ZXR1cm4gTWF0cml4LnNjYWxlKHMsIEEsIDMsIDMpOyB9CitNYXRyaXgzLnRyYW5zcG9zZSA9IGZ1
bmN0aW9uKEEpIHsgcmV0dXJuIE1hdHJpeC50cmFuc3Bvc2UoQSwgMywgMyk7IH0KK01hdHJpeDMu
bXVsdGlwbHlNYXRyaXgzID0gZnVuY3Rpb24oQSwgQikgeyByZXR1cm4gTWF0cml4Lm11bHRpcGx5
KEEsIEIsIDMsIDMsIDMpOyB9CitNYXRyaXgzLm11bHRpcGx5VmVjdG9yMyA9IGZ1bmN0aW9uKEEs
IHYpIHsgcmV0dXJuIE1hdHJpeC5tdWx0aXBseShBLCB2LCAzLCAzLCAxKTsgfQorCitmdW5jdGlv
biBDb250cm9sbGVyKEssIHlzcCwgdWxvdywgdWhpZ2gpIHsKKyAgICB0aGlzLl95c3AgPSB5c3A7
CisKKyAgICB0aGlzLl9UZCA9IDU7CisgICAgdGhpcy5fVGkgPSAxNTsKKworICAgIHRoaXMuX0tw
ID0gSzsKKyAgICB0aGlzLl9LZCA9IEsgLyB0aGlzLl9UZDsKKyAgICB0aGlzLl9LaSA9IEsgLyB0
aGlzLl9UaTsKKworICAgIHRoaXMuX2VvbGQgPSAwOworICAgIHRoaXMuX0kgPSAwOworfQorCitD
b250cm9sbGVyLnByb3RvdHlwZSA9IHsKKyAgICBfc2F0IDogZnVuY3Rpb24odiwgbG93LCBoaWdo
KSB7CisgICAgICAgIHJldHVybiB2IDwgbG93ID8gbG93IDogKHYgPiBoaWdoID8gaGlnaCA6IHYp
OworICAgIH0sCisgICAgdHVuZSA6IGZ1bmN0aW9uKHksIGgpIHsKKyAgICAgICAgLy8gQ3VycmVu
dCBlcnJvcgorICAgICAgICB2YXIgZSA9IHRoaXMuX3lzcCAtIHk7CisKKyAgICAgICAgLy8gUHJv
cG9ydGlvbmFsIHRlcm0KKyAgICAgICAgdmFyIFAgPSB0aGlzLl9LcCAqIGU7CisgICAgICAgIAor
ICAgICAgICAvLyBEZXJpdmF0aXZlIHRlcm0gaXMgdGhlIHNsb3BlIG9mIHRoZSBjdXJ2ZSBhdCB0
aGUgY3VycmVudCB0aW1lCisgICAgICAgIHZhciBEID0gdGhpcy5fS2QgKiAoZSAtIHRoaXMuX2Vv
bGQpIC8gaDsKKworICAgICAgICAvLyBJbnRlZ3JhbCB0ZXJtIGlzIHRoZSBhcmVhIHVuZGVyIHRo
ZSBjdXJ2ZSBzdGFydGluZyBmcm9tIHRoZSBiZWdpbmluZyB0aWxsIHRoZSBjdXJyZW50IHRpbWUK
KyAgICAgICAgdGhpcy5fSSArPSB0aGlzLl9LaSAqICgoZSArIHRoaXMuX2VvbGQpIC8gMikgKiBo
OworCisgICAgICAgIC8vIHBpZCBjb250cm9sbGVyIHZhbHVlCisgICAgICAgIHZhciB2ID0gUCAr
IEQgKyB0aGlzLl9JOworICAgICAgICAKKyAgICAgICAgLy8gQXZvaWQgc3Bpa2VzIGJ5IGFwcGx5
aW5nIGFjdHVhdG9yIHNhdHVhcnRpb24KKyAgICAgICAgdmFyIHUgPSB0aGlzLl9zYXQodiwgdGhp
cy5fdWxvdywgdGhpcy5fdWhpZ2gpOyAgICAgICAgCisKKyAgICAgICAgdGhpcy5fZW9sZCA9IGU7
CisgICAgICAgIHJldHVybiB1OworICAgIH0KK30KKworZnVuY3Rpb24gRXN0aW1hdG9yKCkgewor
ICAgIHRoaXMuX21hdEEgPSBNYXRyaXgzLmlkZW50aXR5KCk7CisgICAgCisgICAgdGhpcy5fdmVj
SCA9IFZlY3RvcjMuemVyb3MoKTsKKyAgICB0aGlzLl92ZWNIWzBdID0gMTsKKyAgICAKKyAgICB0
aGlzLl9tYXRRID0gTWF0cml4My5pZGVudGl0eSgpOworICAgIHRoaXMuX1IgPSAxMDAwOworICAg
IAorICAgIHRoaXMuX3ZlY1hfZXN0ID0gVmVjdG9yMy5vbmVzKCk7CisgICAgdGhpcy5fbWF0UF9l
c3QgPSBNYXRyaXgzLnplcm9zKCk7Cit9CisKK0VzdGltYXRvci5wcm90b3R5cGUgPSB7CisgICAg
ZXN0aW1hdGUgOiBmdW5jdGlvbih0aW1lRGVsdGEsIGN1cnJlbnQpIHsKKyAgICAgICAgLy8gVXBk
YXRlIHRoZSB0cmFuc2l0aW9uIG1hdHJpeAorICAgICAgICB0aGlzLl9tYXRBW01hdHJpeDMucG9z
KDAsIDIpXSA9IDE7CisKKyAgICAgICAgLy8gUHJlZGljdGVkIHN0YXRlIGFuZCBjb3ZhcmlhbmNl
CisgICAgICAgIHZhciB2ZWNYX3ByZCA9IE1hdHJpeDMubXVsdGlwbHlWZWN0b3IzKHRoaXMuX21h
dEEsIHRoaXMuX3ZlY1hfZXN0KTsKKyAgICAgICAgdmFyIG1hdFBfcHJkID0gTWF0cml4My5hZGQo
TWF0cml4My5tdWx0aXBseU1hdHJpeDMoTWF0cml4My5tdWx0aXBseU1hdHJpeDModGhpcy5fbWF0
QSwgdGhpcy5fbWF0UF9lc3QpLCBNYXRyaXgzLnRyYW5zcG9zZSh0aGlzLl9tYXRBKSksIHRoaXMu
X21hdFEpOworCisgICAgICAgIC8vIEVzdGltYXRpb24KKyAgICAgICAgdmFyIHZlY0IgPSBWZWN0
b3IzLm11bHRpcGx5TWF0cml4Myh0aGlzLl92ZWNILCBNYXRyaXgzLnRyYW5zcG9zZShtYXRQX3By
ZCkpOworICAgICAgICB2YXIgUyA9IFZlY3RvcjMubXVsdGlwbHlWZWN0b3IzKHZlY0IsIHRoaXMu
X3ZlY0gpICsgdGhpcy5fUjsKKworICAgICAgICB2YXIgdmVjR2FpbiA9IFZlY3RvcjMuc2NhbGUo
MS9TLCB2ZWNCKTsKKyAgICAgICAgCisgICAgICAgIC8vIEVzdGltYXRlZCBzdGF0ZSBhbmQgY292
YXJpYW5jZQorICAgICAgICB0aGlzLl92ZWNYX2VzdCA9IFZlY3RvcjMuYWRkKHZlY1hfcHJkLCBW
ZWN0b3IzLnNjYWxlKGN1cnJlbnQgLSBWZWN0b3IzLm11bHRpcGx5VmVjdG9yMyh0aGlzLl92ZWNI
LCB2ZWNYX3ByZCksIHZlY0dhaW4pKTsKKyAgICAgICAgdGhpcy5fbWF0UF9lc3QgPSBNYXRyaXgz
LnN1YnRyYWN0KG1hdFBfcHJkLCBNYXRyaXgzLnNjYWxlKFZlY3RvcjMubXVsdGlwbHlWZWN0b3Iz
KHZlY0dhaW4sIHRoaXMuX3ZlY0gpLCBtYXRQX3ByZCkpOworCisgICAgICAgIC8vIENvbXB1dGUg
dGhlIGVzdGltYXRlZCBtZWFzdXJlbWVudAorICAgICAgICByZXR1cm4gVmVjdG9yMy5tdWx0aXBs
eVZlY3RvcjModGhpcy5fdmVjSCwgIHRoaXMuX3ZlY1hfZXN0KTsKKyAgICB9Cit9CkluZGV4OiBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3Rh
Z2UuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL3N0YWdlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKK2Z1bmN0
aW9uIFN0YWdlKGVsZW1lbnQsIG9wdGlvbnMpIHsKKyAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50
OworfQorCitTdGFnZS5wcm90b3R5cGUgPSB7CisgICAgc2l6ZSA6IGZ1bmN0aW9uKCkgeworICAg
ICAgICB2YXIgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5lbGVtZW50KTsK
KyAgICAgICAgdmFyIHBhZGRpbmcgPSBuZXcgSW5zZXRzKAorICAgICAgICAgICAgcGFyc2VGbG9h
dChzdHlsZXMucGFkZGluZ1RvcCksCisgICAgICAgICAgICBwYXJzZUZsb2F0KHN0eWxlcy5wYWRk
aW5nUmlnaHQpLAorICAgICAgICAgICAgcGFyc2VGbG9hdChzdHlsZXMucGFkZGluZ0JvdHRvbSks
CisgICAgICAgICAgICBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nVG9wKSk7CisgICAgICAgIHJl
dHVybiBuZXcgUG9pbnQodGhpcy5lbGVtZW50LmNsaWVudFdpZHRoIC0gcGFkZGluZy53aWR0aCgp
LCB0aGlzLmVsZW1lbnQuY2xpZW50SGVpZ2h0IC0gcGFkZGluZy5oZWlnaHQoKSk7CisgICAgfSwK
KyAgICBjbGVhciA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy50dW5lKC10aGlz
LnR1bmUoMCkpOworICAgIH0sCisgICAgcmFuZG9tIDogZnVuY3Rpb24obWluLCBtYXgpIHsKKyAg
ICAgICAgcmV0dXJuIChNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikpICsgbWluOworICAgIH0s
CisgICAgcmFuZG9tSW50IDogZnVuY3Rpb24obWluLCBtYXgpIHsKKyAgICAgICAgcmV0dXJuIE1h
dGguZmxvb3IodGhpcy5yYW5kb20obWluLCBtYXgpKTsKKyAgICB9LAorICAgIHJhbmRvbVBvc2l0
aW9uIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBtYXggPSB0aGlzLnNpemUoKS5zdWJ0cmFj
dCh0aGlzLnBhcnRpY2xlU2l6ZSk7CisgICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy5yYW5k
b21JbnQoMCwgbWF4LngpLCB0aGlzLnJhbmRvbUludCgwLCBtYXgueSkpOworICAgIH0sCisgICAg
cmFuZG9tVmVsb2NpdHkgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucmFuZG9t
KHRoaXMuX21heFZlbG9jaXR5IC8gOCwgdGhpcy5fbWF4VmVsb2NpdHkpOworICAgIH0sCisgICAg
cmFuZG9tQW5nbGUgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucmFuZG9tKDAs
IE1hdGguUEkgKiAyKTsKKyAgICB9LAorICAgIHJhbmRvbUNvbG9yIDogZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHZhciBtaW4gPSAzMjsKKyAgICAgICAgdmFyIG1heCA9IDI1NiAtIDMyOworICAgICAg
ICByZXR1cm4gIiMiCisgICAgICAgICAgICArIHRoaXMucmFuZG9tSW50KG1pbiwgbWF4KS50b1N0
cmluZygxNikKKyAgICAgICAgICAgICsgdGhpcy5yYW5kb21JbnQobWluLCBtYXgpLnRvU3RyaW5n
KDE2KQorICAgICAgICAgICAgKyB0aGlzLnJhbmRvbUludChtaW4sIG1heCkudG9TdHJpbmcoMTYp
OworICAgIH0KK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNv
dXJjZXMvdXRpbGl0aWVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy91dGlsaXRpZXMuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAord2luZG93LmJlbmNobWFya0NsaWVudCA9IHsKKyAg
ICBfcGFyc2UgOiBmdW5jdGlvbihzdHIsIHNlcCkgeworICAgICAgICB2YXIgb3V0cHV0ID0ge307
CisgICAgICAgIHN0ci5zcGxpdChzZXApLmZvckVhY2goZnVuY3Rpb24ocGFydCkgeworICAgICAg
ICAgICAgdmFyIGl0ZW0gPSBwYXJ0LnNwbGl0KCI9Iik7CisgICAgICAgICAgICB2YXIgdmFsdWUg
PSBkZWNvZGVVUklDb21wb25lbnQoaXRlbVsxXSk7CisgICAgICAgICAgICBpZiAodmFsdWVbMF0g
PT0gJ1wnJyApCisgICAgICAgICAgICAgICAgb3V0cHV0W2l0ZW1bMF1dID0gdmFsdWUuc3Vic3Ry
KDEsIHZhbHVlLmxlbmd0aCAtIDIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IG91dHB1dFtpdGVtWzBdXSA9IHZhbHVlOyAgICAgICAgICAgICAgICAKKyAgICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuIG91dHB1dDsKKyAgICB9LAorICAgIHBhcnNlUGFyYW1ldGVycyA6IGZ1
bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2Uod2luZG93LmxvY2F0aW9uLnNl
YXJjaC5zdWJzdHIoMSksICImIik7CisgICAgfSwKKyAgICBwYXJzZUFyZ3VtZW50cyA6IGZ1bmN0
aW9uKHN0cikgeworICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2Uoc3RyLCAiICIpOworICAgIH0s
CisgICAgZXh0ZW5kT2JqZWN0IDogZnVuY3Rpb24ob2JqMSwgb2JqMikgeworICAgICAgICBmb3Ig
KHZhciBhdHRybmFtZSBpbiBvYmoyKQorICAgICAgICAgICAgb2JqMVthdHRybmFtZV0gPSBvYmoy
W2F0dHJuYW1lXTsKKyAgICAgICAgcmV0dXJuIG9iajE7CisgICAgfSwKKyAgICBjb3B5T2JqZWN0
IDogZnVuY3Rpb24ob2JqKSB7CisgICAgICAgIHJldHVybiB0aGlzLmV4dGVuZE9iamVjdCh7fSwg
b2JqKTsKKyAgICB9LAorICAgIG1lcmdlT2JqZWN0cyA6IGZ1bmN0aW9uKG9iajEsIG9iajIpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kT2JqZWN0KHRoaXMuY29weU9iamVjdChvYmoxKSwg
b2JqMik7CisgICAgfQorfTsKKworLy8gVGhpcyBldmVudCBsaXN0ZW5lciBydW5zIHRoZSB0ZXN0
IGlmIGl0IGlzIGxvYWRlZCBvdXRzaWRlIHRoZSBiZW5jaG1hcmsgcnVubmVyLgord2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICBpZiAod2luZG93LnNlbGYg
IT09IHdpbmRvdy50b3ApCisgICAgICAgIHJldHVybjsKKyAgICB3aW5kb3cuYmVuY2htYXJrQ2xp
ZW50LmNyZWF0ZShudWxsLCBudWxsLCAzMDAwMCwgNTAsIG51bGwsIG51bGwpOworICAgIHdpbmRv
dy5iZW5jaG1hcmsuc3RhcnQoKTsKK30pOworCisvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBm
cm9tIHRoZSBzdWl0ZSBjb250cm9sbGVyIHJ1bi1jYWxsYmFjayB3aGVuIHJ1bm5pbmcgdGhlIGJl
bmNobWFyayBydW5uZXIuCit3aW5kb3cucnVuQmVuY2htYXJrID0gZnVuY3Rpb24oc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIHZhciBtZXJnZU9w
dGlvbnMgPSB3aW5kb3cuYmVuY2htYXJrQ2xpZW50Lm1lcmdlT2JqZWN0cyhvcHRpb25zLCB3aW5k
b3cuYmVuY2htYXJrQ2xpZW50LnBhcnNlUGFyYW1ldGVycygpKTsKKyAgICB3aW5kb3cuYmVuY2ht
YXJrQ2xpZW50LmNyZWF0ZShzdWl0ZSwgdGVzdCwgbWVyZ2VPcHRpb25zLCByZWNvcmRUYWJsZSwg
cHJvZ3Jlc3NCYXIpOworICAgIHJldHVybiB3aW5kb3cuYmVuY2htYXJrLnJ1bigpOworfQpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5z
dmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291
cmNlcy95aW4teWFuZy5zdmcJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnN2Zwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE3IEBACis8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmlld0Jv
eD0iMCAwIDIwMCAyMDAiPg0KKyAgPGRlZnM+DQorICAgIDxjbGlwUGF0aCBpZD0ibGVmdC1oYWxm
Ij4NCisgICAgICA8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjIwMCIvPg0KKyAgICA8L2NsaXBQ
YXRoPg0KKyAgICA8Y2xpcFBhdGggaWQ9InJpZ2h0LWhhbGYiPg0KKyAgICAgIDxyZWN0IHg9IjEw
MCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIyMDAiLz4NCisgICAgPC9jbGlwUGF0aD4NCisgIDwvZGVm
cz4NCisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjEwMCIgcj0iOTgiIGZpbGw9Im5vbmUiIHN0cm9r
ZT0iZ3JlZW4iIHN0cm9rZS13aWR0aD0iMiIvPg0KKyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iMTAw
IiByPSI5OCIgZmlsbD0id2hpdGUiIGNsaXAtcGF0aD0idXJsKCNsZWZ0LWhhbGYpIi8+DQorICA8
Y2lyY2xlIGN4PSIxMDAiIGN5PSIxMDAiIHI9Ijk4IiBmaWxsPSJncmVlbiIgY2xpcC1wYXRoPSJ1
cmwoI3JpZ2h0LWhhbGYpIi8+DQorICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSI1MCIgIHI9IjQ5IiBm
aWxsPSJncmVlbiIvPg0KKyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iMTQ4IiByPSI0OSIgZmlsbD0i
d2hpdGUiLz4NCisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjUwIiAgcj0iMTAiIGZpbGw9IndoaXRl
Ii8+ICAgIA0KKyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iMTQ4IiByPSIxMCIgZmlsbD0iZ3JlZW4i
Lz4NCis8L3N2Zz4NCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4
dC9sYXllcmluZy10ZXh0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1sCShyZXZpc2lvbiAwKQorKysgUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKyAgPHN0eWxlPgorICAgIC50ZXh0LWxheWVyIHsKKyAgICAgIGZvbnQtc2l6ZTogMTEu
NXB4OworICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgbGVmdDogMHB4OworICAgICAg
dG9wOiAwcHg7CisgICAgICBwYWRkaW5nOiA1cHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0
cmFuc3BhcmVudDsKKyAgICB9CisgIDwvc3R5bGU+ICAKKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5jc3MiPgorICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PiAgCisg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9sYXllcmlu
Zy10ZXh0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8ZGl2IGlkPSJzdGFnZSI+
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmct
dGV4dC5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMjU5IEBACitmdW5jdGlvbiBMYXllcmluZ1RleHRBbmltYXRvcihiZW5jaG1hcmspIHsKKyAg
ICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyayk7Cit9OworCitMYXllcmluZ1RleHRBbmlt
YXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEFuaW1hdG9yLnByb3RvdHlwZSk7CitMYXll
cmluZ1RleHRBbmltYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMYXllcmluZ1RleHRBbmlt
YXRvcjsKKworTGF5ZXJpbmdUZXh0QW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlv
bigpIHsKKyAgICBpZiAoIUFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcykpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLmFuaW1hdGUo
dGhpcy50aW1lRGVsdGEoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIExheWVy
aW5nVGV4dFN0YWdlKGVsZW1lbnQsIG9wdGlvbnMpIHsKKyAgICBTdGFnZS5jYWxsKHRoaXMsIGVs
ZW1lbnQsIG9wdGlvbnMpOworICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGhpcy5lbGVt
ZW50OworICAgIHRoaXMuX3RleHRFbGVtZW50cyA9IFtdOworICAgIHRoaXMuX3RleHRJdGVtSW5k
ZXggPSAwOworICAgIHRoaXMuX2NvbG9ySW5kZXggPSAwOworICAgIHRoaXMuX2FuaW1hdGVDb3Vu
dHMgPSAwOworfQorCitMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXMgPSBbCisgICAgIjxkaXYg
aWQ9J2lkXzAwJyBjbGFzcz0ndGV4dC1sYXllcic+IiwKKyAgICAgICAgIjxoMiBpZD0naWRfMDEn
PkN1c3RvbWl6ZWQgc3R5bGVzPC9oMj4iLAorICAgICAgICAiPHAgaWQ9J2lkXzAyJz5JZiB5b3Ug
d2FudCBmb3JtYXR0aW5nIGNob2ljZXMgdGhhdCBhcmUgbm90IGF2YWlsYWJsZSBmcm9tIHRoZSBi
dWlsdC1pbiBzdHlsZXMsIFF1aWNrIFN0eWxlIHNldHMsIGFuZCB0aGVtZXMsIHlvdSBjYW4gY3Jl
YXRlIGN1c3RvbSBzdHlsZXMgdG8gc3VpdCB5b3VyIG5lZWRzLjwvcD4iLAorICAgICAgICAiPHAg
aWQ9J2lkXzAzJz5UaGUgZWFzaWVzdCB3YXkgdG8gY3JlYXRlIGEgY3VzdG9tIHN0eWxlIGlzIHRv
IG1vZGlmeSBhIGJ1aWx0LWluIHN0eWxlIGFuZCB0aGVuIHNhdmUgaXQgYXMgYSBuZXcgc3R5bGUu
PC9wPiIsCisgICAgICAgICI8cCBpZD0naWRfMDQnPkZvciBleGFtcGxlLCB5b3UgbWlnaHQgd2Fu
dCB0byBmb3JtYXQgYSBwYXJhZ3JhcGggb2YgcXVvdGVkIG1hdGVyaWFsIHdpdGggYSBoYWxmLWlu
Y2ggaW5kZW50IGZyb20gdGhlIGxlZnQgYW5kIHJpZ2h0IG1hcmdpbnMsIHNpbmdsZSBzcGFjZWQu
IFRoZXJlIGlzIG5vIGJ1aWx0LWluIHN0eWxlIHRvIGFjY29tbW9kYXRlIHRoaXMsIGJ1dCB5b3Ug
Y2FuIGNyZWF0ZSBhIGN1c3RvbSBzdHlsZSBieSBkb2luZyB0aGUgZm9sbG93aW5nOjwvcD4iLAor
ICAgICAgICAiPG9sIHR5cGU9JzEnIGlkPSdpZF8wNSc+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9
J2lkXzA2Jz48cD5DbGljayBpbiB0aGUgcGFyYWdyYXBoIHlvdSB3YW50IHRvIGZvcm1hdC48L3A+
PC9saT4iLAorICAgICAgICAgICAgIjxsaSBpZD0naWRfMDcnPjxwPk9uIHRoZSA8Yj5Ib21lPC9i
PiB0YWIsIGNsaWNrIHRoZSA8Yj5QYXJhZ3JhcGg8L2I+IERpYWxvZyBCb3ggTGF1bmNoZXIuPC9w
PjwvbGk+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzA4Jz48cD5JbiB0aGUgPGI+SW5kZW50
YXRpb248L2I+IHNlY3Rpb24sIHR5cGUgPGIgY2xhc3M9J29jcExpdGVyYWwnPjAuNSc8L2I+IGlu
IHRoZSA8Yj5MZWZ0PC9iPiBhbmQgPGI+UmlnaHQ8L2I+IGJveGVzLjwvcD48L2xpPiIsCisgICAg
ICAgICAgICAiPGxpIGlkPSdpZF8wOSc+PHA+SW4gdGhlIDxiPlNwYWNpbmc8L2I+IHNlY3Rpb24s
IGluIHRoZSA8Yj5MaW5lIHNwYWNpbmc8L2I+IGxpc3QsIGNsaWNrIDxiPlNpbmdsZTwvYj4uPC9w
PjwvbGk+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzEwJz48cD5DbGljayA8Yj5PSzwvYj4u
PC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzExJz48cD5SaWdodC1jbGljayBp
biB0aGUgcGFyYWdyYXBoLCBwb2ludCB0byA8Yj5TdHlsZXM8L2I+LCBhbmQgdGhlbiBjbGljayA8
Yj5TYXZlIFNlbGVjdGlvbiBhcyBhIE5ldyBRdWljayBTdHlsZTwvYj4uPC9wPjwvbGk+IiwKKyAg
ICAgICAgICAgICI8bGkgaWQ9J2lkXzEyJz48cD5JbiB0aGUgPGI+TmFtZTwvYj4gYm94LCB0eXBl
IGEgbmFtZSBmb3IgdGhlIHN0eWxlLCBzdWNoIGFzIDxiPkJsb2NrIHF1b3RlPC9iPi4gPC9wPjwv
bGk+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzEzJz48cD5JZiB5b3Ugd2FudCB0aGUgc3R5
bGUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGdhbGxlcnkgb2Ygc3R5bGVzIG9uIHRoZSA8Yj5Ib21l
PC9iPiB0YWIsIGFuZCBpZiB5b3Ugd2FudCB0aGUgc3R5bGUgdG8gYmUgYSBsaW5rZWQgc3R5bGUs
IGNsaWNrIDxiPk9LPC9iPi48L3A+PC9saT4iLAorICAgICAgICAgICAgIjxsaSBpZD0naWRfMTQn
PiIsCisgICAgICAgICAgICAgICAgIjxwIGlkPSdpZF8xNSc+SWYgeW91IGRvbid0IHdhbnQgdGhl
IHN0eWxlIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBnYWxsZXJ5LCBvciBpZiB5b3Ugd2FudCB0aGUg
c3R5bGUgdG8gYmUgZWl0aGVyIGEgcGFyYWdyYXBoIG9yIGEgY2hhcmFjdGVyIHN0eWxlLCBjbGlj
ayA8Yj5Nb2RpZnk8L2I+IGFuZCBkbyBvbmUgb3IgYm90aCBvZiB0aGUgZm9sbG93aW5nOjwvcD4i
LAorICAgICAgICAgICAgICAgICI8dWwgaWQ9J2lkXzE2Jz4iLAorICAgICAgICAgICAgICAgICAg
ICAiPGxpIGlkPSdpZF8xNyc+PHA+QXQgdGhlIGJvdHRvbSBvZiB0aGUgZGlhbG9nIGJveCwgY2xl
YXIgdGhlIDxiPkFkZCB0byBRdWljayBTdHlsZTwvYj4gbGlzdCBib3guPC9wPjwvbGk+IiwKKyAg
ICAgICAgICAgICAgICAgICAgIjxsaSBpZD0naWRfMTgnPjxwPkluIHRoZSA8Yj5TdHlsZSB0eXBl
PC9iPiBsaXN0LCBjbGljayA8Yj5QYXJhZ3JhcGg8L2I+IG9yIDxiPkNoYXJhY3RlcjwvYj4uPC9w
PjwvbGk+IiwKKyAgICAgICAgICAgICAgICAiPC91bD4iLAorICAgICAgICAgICAgIjwvbGk+IiwK
KyAgICAgICAgIjwvb2w+IiwKKyAgICAgICAgIjxwIGlkPSdpZF8xOSc+SWYgeW91IHN3aXRjaCB0
byBhIGRpZmZlcmVudCBRdWljayBTdHlsZSBzZXQsIHlvdSBtYXkgbmVlZCB0byBhZGp1c3QgdGhl
IHNldHRpbmdzIG9mIHlvdXIgY3VzdG9tIHN0eWxlLiBJbiB0aGUgZXhhbXBsZSBoZXJlLCBpZiB5
b3UgY3JlYXRlIHRoZSBCbG9jayBxdW90ZSBzdHlsZSB3aGlsZSB0aGUgV29yZCAyMDA3IFF1aWNr
IFN0eWxlIHNldCBpcyBhcHBsaWVkLCBhbmQgdGhlbiB5b3Ugc3dpdGNoIHRvIHRoZSBUcmFkaXRp
b25hbCBRdWljayBTdHlsZSBzZXQsIHlvdSBjYW4gY2hhbmdlIHRoZSBCbG9jayBxdW90ZSBzdHls
ZSB0byByZW1vdmUgdGhlIGZpcnN0LWxpbmUgaW5kZW50YXRpb24gdGhhdCB0aGUgVHJhZGl0aW9u
YWwgUXVpY2sgU3R5bGUgc2V0IGludHJvZHVjZXMuIFRvIGNoYW5nZSBhIHN0eWxlLCBkbyB0aGUg
Zm9sbG93aW5nOjwvcD4iLAorICAgICAgICAiPG9sIHR5cGU9JzEnIGlkPSdpZF8yMCc+IiwKKyAg
ICAgICAgICAgICI8bGkgaWQ9J2lkXzIxJz48cD5PbiB0aGUgPGI+SG9tZTwvYj4gdGFiIGluIHRo
ZSA8Yj5TdHlsZXM8L2I+IGdyb3VwLCByaWdodC1jbGljayA8Yj5CbG9jayBxdW90ZTwvYj4sIGFu
ZCB0aGVuIGNsaWNrIDxiPk1vZGlmeTwvYj4uPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8bGkg
aWQ9J2lkXzIyJz48cD5DbGljayA8Yj5Gb3JtYXQ8L2I+LCBhbmQgdGhlbiBjbGljayA8Yj5QYXJh
Z3JhcGg8L2I+LjwvcD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8yMyc+PHA+SW4g
dGhlIDxiPkluZGVudGF0aW9uPC9iPiBzZWN0aW9uLCBpbiB0aGUgPGI+U3BlY2lhbDwvYj4gbGlz
dCwgY2xpY2sgPGI+KG5vbmUpPC9iPi48L3A+PC9saT4iLAorICAgICAgICAiPC9vbD4iLAorICAg
ICAgICAiPHAgaWQ9J2lkXzI0Jz5UaGUgbW9yZSBjaGFyYWN0ZXJpc3RpY3MgdGhhdCB5b3Ugc3Bl
Y2lmeSBmb3IgdGhlIHN0eWxlLCB0aGUgbGVzcyB0aGUgc3R5bGUgaXMgYWZmZWN0ZWQgYnkgc3dp
dGNoaW5nIFF1aWNrIFN0eWxlIHNldHMgb3IgdGhlbWVzLjwvcD4iLAorICAgICI8L2Rpdj4iCitd
OworCitMYXllcmluZ1RleHRTdGFnZS5wYXJzZVRleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW0p
IHsKKyAgICB2YXIgcHJhc2VSZXN1bHQgPSB7fTsKKyAgICBwcmFzZVJlc3VsdC50YWdTdGFydCA9
IHRleHRJdGVtLm1hdGNoKC88KC4qPyk+L2cpWzBdOworICAgIHZhciBzcGFjZUluZGV4ID0gcHJh
c2VSZXN1bHQudGFnU3RhcnQuaW5kZXhPZigiICIpOworICAgIHByYXNlUmVzdWx0Lm5vZGVOYW1l
ID0gcHJhc2VSZXN1bHQudGFnU3RhcnQuc3Vic3RyaW5nKDEsIHNwYWNlSW5kZXggIT0gLTEgPyBz
cGFjZUluZGV4IDogcHJhc2VSZXN1bHQudGFnU3RhcnQubGVuZ3RoIC0gMSk7CisgICAgcHJhc2VS
ZXN1bHQuYXJncyA9IHNwYWNlSW5kZXggIT0gLTEgPyB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LnBh
cnNlQXJndW1lbnRzKHByYXNlUmVzdWx0LnRhZ1N0YXJ0LnN1YnN0cmluZyhzcGFjZUluZGV4ICsg
MSwgcHJhc2VSZXN1bHQudGFnU3RhcnQubGVuZ3RoIC0gMSkpIDoge307CisgICAgdmFyIHRhZ0Vu
ZCA9ICI8LyIgKyBwcmFzZVJlc3VsdC5ub2RlTmFtZSArICI+IjsgICAgICAgICAgICAgICAgCisg
ICAgcHJhc2VSZXN1bHQudGFnRW5kID0gdGV4dEl0ZW0uZW5kc1dpdGgodGFnRW5kKSA/IHRhZ0Vu
ZCA6ICIiOworICAgIHJldHVybiBwcmFzZVJlc3VsdDsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2Uu
aXNPcGVuaW5nVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbSkgeworICAgIHJldHVybiAhTGF5
ZXJpbmdUZXh0U3RhZ2UucGFyc2VUZXh0SXRlbSh0ZXh0SXRlbSkudGFnRW5kLmxlbmd0aDsKK30K
KworTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDbG9zaW5nVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRl
bSkgeworICAgIHJldHVybiB0ZXh0SXRlbS5pbmRleE9mKCIvIikgPT0gKzE7Cit9CisKK0xheWVy
aW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzID0gTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1z
Lm1hcChmdW5jdGlvbih0ZXh0SXRlbSl7CisgICB2YXIgdGV4dEl0ZW1GbGFncyA9IHt9OworICAg
dGV4dEl0ZW1GbGFncy5pc09wZW5pbmcgPSBMYXllcmluZ1RleHRTdGFnZS5pc09wZW5pbmdUZXh0
SXRlbSh0ZXh0SXRlbSk7CisgICB0ZXh0SXRlbUZsYWdzLmlzQ2xvc2luZyA9IExheWVyaW5nVGV4
dFN0YWdlLmlzQ2xvc2luZ1RleHRJdGVtKHRleHRJdGVtKTsgICAKKyAgIHJldHVybiB0ZXh0SXRl
bUZsYWdzOworfSk7CisKK0xheWVyaW5nVGV4dFN0YWdlLmlzQ29sb3JhYmxlVGV4dEl0ZW0gPSBm
dW5jdGlvbih0ZXh0SXRlbUZsYWdzKSB7CisgICAgcmV0dXJuICEodGV4dEl0ZW1GbGFncy5pc09w
ZW5pbmcgfHwgdGV4dEl0ZW1GbGFncy5pc0Nsb3NpbmcpOworfQorCitMYXllcmluZ1RleHRTdGFn
ZS5pc0luc2VydGFibGVUZXh0SXRlbSA9IGZ1bmN0aW9uKHRleHRJdGVtRmxhZ3MpIHsKKyAgICBy
ZXR1cm4gIXRleHRJdGVtRmxhZ3MuaXNDbG9zaW5nOworfQorCitMYXllcmluZ1RleHRTdGFnZS5j
b2xvcmFibGVUZXh0SXRlbXMgPSBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFncy5maWx0
ZXIoZnVuY3Rpb24odGV4dEl0ZW1GbGFncykgeworICAgIHJldHVybiBMYXllcmluZ1RleHRTdGFn
ZS5pc0NvbG9yYWJsZVRleHRJdGVtKHRleHRJdGVtRmxhZ3MpOworfSkubGVuZ3RoOworCitMYXll
cmluZ1RleHRTdGFnZS5pbnNlcnRhYmxlVGV4dEl0ZW1zID0gTGF5ZXJpbmdUZXh0U3RhZ2UudGV4
dEl0ZW1zRmxhZ3MuZmlsdGVyKGZ1bmN0aW9uKHRleHRJdGVtRmxhZ3MpIHsKKyAgICByZXR1cm4g
TGF5ZXJpbmdUZXh0U3RhZ2UuaXNJbnNlcnRhYmxlVGV4dEl0ZW0odGV4dEl0ZW1GbGFncyk7Cit9
KS5sZW5ndGg7CisKK0xheWVyaW5nVGV4dFN0YWdlLmNvbG9ySW5kZXhUb1RleHRFbGVtZW50SW5k
ZXggPSBmdW5jdGlvbihjb2xvckluZGV4KSB7CisgICAgdmFyIHRleHRFbGVtZW50SW5kZXggPSAw
OworICAgIHZhciBpbmRleCA9IDA7CisgICAgCisgICAgZm9yICh2YXIgdGV4dEl0ZW1JbmRleCA9
IDA7IHRleHRJdGVtSW5kZXggPCBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFncy5sZW5n
dGg7ICsrdGV4dEl0ZW1JbmRleCkgeworICAgICAgICBpZiAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXND
b2xvcmFibGVUZXh0SXRlbShMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0ZXh0SXRl
bUluZGV4XSkpIHsKKyAgICAgICAgICAgIGlmICgrK2luZGV4ID4gY29sb3JJbmRleCkKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoTGF5ZXJpbmdUZXh0U3Rh
Z2UuaXNJbnNlcnRhYmxlVGV4dEl0ZW0oTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3Nb
dGV4dEl0ZW1JbmRleF0pKQorICAgICAgICAgICAgKyt0ZXh0RWxlbWVudEluZGV4OworICAgIH0K
KyAgICAKKyAgICByZXR1cm4gdGV4dEVsZW1lbnRJbmRleDsKK30KKworTGF5ZXJpbmdUZXh0U3Rh
Z2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOworTGF5ZXJpbmdU
ZXh0U3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTGF5ZXJpbmdUZXh0U3RhZ2U7CisKK0xh
eWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fbmV4dFRleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0
ZW1GbGFncykgeworICAgIHZhciB0ZXh0SXRlbSA9IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVt
c1t0aGlzLl90ZXh0SXRlbUluZGV4XTsKKyAgICB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmV4dGVu
ZE9iamVjdCh0ZXh0SXRlbUZsYWdzLCBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0
aGlzLl90ZXh0SXRlbUluZGV4XSk7CisgICAgdGhpcy5fdGV4dEl0ZW1JbmRleCA9ICh0aGlzLl90
ZXh0SXRlbUluZGV4ICsgMSkgJSBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXMubGVuZ3RoOwor
ICAgIHJldHVybiB0ZXh0SXRlbTsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9w
cmV2aW91c1RleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW1GbGFncykgeworICAgIHRoaXMuX3Rl
eHRJdGVtSW5kZXggPSAodGhpcy5fdGV4dEl0ZW1JbmRleCArIExheWVyaW5nVGV4dFN0YWdlLnRl
eHRJdGVtcy5sZW5ndGggLSAxKSAlIExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtcy5sZW5ndGg7
CisgICAgd2luZG93LmJlbmNobWFya0NsaWVudC5leHRlbmRPYmplY3QodGV4dEl0ZW1GbGFncywg
TGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3NbdGhpcy5fdGV4dEl0ZW1JbmRleF0pOyAg
ICAKKyAgICByZXR1cm4gTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zW3RoaXMuX3RleHRJdGVt
SW5kZXhdOworfQorCitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX3B1c2hUZXh0RWxlbWVu
dCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB0ZXh0SXRlbUZsYWdzID0ge307CisgICAgdmFyIHRl
eHRJdGVtID0gdGhpcy5fbmV4dFRleHRJdGVtKHRleHRJdGVtRmxhZ3MpOworICAgIGZvciAoIDsg
dGV4dEl0ZW1GbGFncy5pc0Nsb3Npbmc7IHRleHRJdGVtID0gdGhpcy5fbmV4dFRleHRJdGVtKHRl
eHRJdGVtRmxhZ3MpKQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudCA9IHRoaXMuX3Rl
eHRFbGVtZW50UGFyZW50LnBhcmVudE5vZGU7CisKKyAgICB2YXIgcHJhc2VSZXN1bHQgPSBMYXll
cmluZ1RleHRTdGFnZS5wYXJzZVRleHRJdGVtKHRleHRJdGVtKTsKKyAgICB0ZXh0SXRlbSA9IHRl
eHRJdGVtLnN1YnN0cmluZyhwcmFzZVJlc3VsdC50YWdTdGFydC5sZW5ndGgsIHRleHRJdGVtLmxl
bmd0aCAtIHByYXNlUmVzdWx0LnRhZ0VuZC5sZW5ndGgpOworCisgICAgdmFyIHRleHRFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChwcmFzZVJlc3VsdC5ub2RlTmFtZSk7CisKKyAgICBm
b3IgKHZhciBhdHRybmFtZSBpbiBwcmFzZVJlc3VsdC5hcmdzKQorICAgICAgICB0ZXh0RWxlbWVu
dC5zZXRBdHRyaWJ1dGUoYXR0cm5hbWUsIHByYXNlUmVzdWx0LmFyZ3NbYXR0cm5hbWVdKTsKKwor
ICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50LmFwcGVuZENoaWxkKHRleHRFbGVtZW50KTsKKyAg
ICAKKyAgICBpZiAoIXByYXNlUmVzdWx0LnRhZ0VuZC5sZW5ndGgpCisgICAgICAgIHRoaXMuX3Rl
eHRFbGVtZW50UGFyZW50ID0gdGV4dEVsZW1lbnQ7CisKKyAgICB0ZXh0RWxlbWVudC5pbm5lckhU
TUwgPSB0ZXh0SXRlbTsKKyAgICAKKyAgICB0aGlzLl90ZXh0RWxlbWVudHMucHVzaCh0ZXh0RWxl
bWVudCk7CisgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7Cit9CisKK0xheWVy
aW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fcG9wVGV4dEVsZW1lbnQgPSBmdW5jdGlvbigpIHsKKyAg
ICB2YXIgdGV4dEl0ZW1GbGFncyA9IHt9OyAgICAKKyAgICB2YXIgdGV4dEl0ZW0gPSB0aGlzLl9w
cmV2aW91c1RleHRJdGVtKHRleHRJdGVtRmxhZ3MpOworICAgIGZvciAoIDsgdGV4dEl0ZW1GbGFn
cy5pc0Nsb3Npbmc7IHRleHRJdGVtID0gdGhpcy5fcHJldmlvdXNUZXh0SXRlbSh0ZXh0SXRlbUZs
YWdzKSkKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQgPSB0aGlzLl90ZXh0RWxlbWVu
dFBhcmVudC5sYXN0Q2hpbGQ7CisKKyAgICBpZiAodGV4dEl0ZW1GbGFncy5pc09wZW5pbmcpCisg
ICAgICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQu
cGFyZW50Tm9kZTsKKworICAgIHZhciB0ZXh0RWxlbWVudCA9IHRoaXMuX3RleHRFbGVtZW50c1t0
aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoIC0gMV07CisgICAgCisgICAgaWYgKHRleHRFbGVtZW50
ICYmIHRleHRFbGVtZW50LnBhcmVudE5vZGUgJiYgdGV4dEVsZW1lbnQucGFyZW50Tm9kZSA9PSB0
aGlzLl90ZXh0RWxlbWVudFBhcmVudCkKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQu
cmVtb3ZlQ2hpbGQodGV4dEVsZW1lbnQpOworCisgICAgdGhpcy5fdGV4dEVsZW1lbnRzLnBvcCgp
OworICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOworfQorCitMYXllcmluZ1Rl
eHRTdGFnZS5wcm90b3R5cGUuX2NvbG9yVGV4dEl0ZW0gPSBmdW5jdGlvbihjb2xvcikgeworICAg
IHZhciB0ZXh0RWxlbWVudEluZGV4ID0gTGF5ZXJpbmdUZXh0U3RhZ2UuY29sb3JJbmRleFRvVGV4
dEVsZW1lbnRJbmRleCh0aGlzLl9jb2xvckluZGV4KTsKKyAgICBmb3IgKCA7IHRleHRFbGVtZW50
SW5kZXggPCB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOyB0ZXh0RWxlbWVudEluZGV4ICs9IExh
eWVyaW5nVGV4dFN0YWdlLmluc2VydGFibGVUZXh0SXRlbXMpCisgICAgICAgIHRoaXMuX3RleHRF
bGVtZW50c1t0ZXh0RWxlbWVudEluZGV4XS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsK
K30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1l
RGVsdGEpIHsKKyAgICB0aGlzLl9jb2xvclRleHRJdGVtKCJ0cmFuc3BhcmVudCIpOworICAgIHRo
aXMuX2NvbG9ySW5kZXggPSAodGhpcy5fY29sb3JJbmRleCArIDEpICUgTGF5ZXJpbmdUZXh0U3Rh
Z2UuY29sb3JhYmxlVGV4dEl0ZW1zOworICAgIHRoaXMuX2NvbG9yVGV4dEl0ZW0oIlllbGxvd0dy
ZWVuIik7CisgICAgCisgICAgdmFyIGJsYWNrVGV4dEVsZW1lbnRzID0gTWF0aC5taW4odGhpcy5f
dGV4dEVsZW1lbnRzLmxlbmd0aCwgTGF5ZXJpbmdUZXh0U3RhZ2UuaW5zZXJ0YWJsZVRleHRJdGVt
cyk7CisgICAgdmFyIGkgPSAwOworICAgIGZvciAoIDsgaSA8IHRoaXMuX3RleHRFbGVtZW50cy5s
ZW5ndGggLSBibGFja1RleHRFbGVtZW50czsgKytpKQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVu
dHNbaV0uc3R5bGUuY29sb3IgPSAodGhpcy5fYW5pbWF0ZUNvdW50cyAmIDEpID8gIkxpZ2h0WWVs
bG93IiA6ICJ3aGl0ZSI7CisKKyAgICBmb3IgKCA7IGkgPCB0aGlzLl90ZXh0RWxlbWVudHMubGVu
Z3RoOyArK2kpCisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50c1tpXS5zdHlsZS5jb2xvciA9ICJi
bGFjayI7CisgICAgICAgIAorICAgICsrdGhpcy5fYW5pbWF0ZUNvdW50czsKK30KKworTGF5ZXJp
bmdUZXh0U3RhZ2UucHJvdG90eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkgeworICAgIGNvdW50
ID0gY291bnQgPiAwID8gTWF0aC5mbG9vcihjb3VudCkgOiBNYXRoLmNlaWwoY291bnQpOworCisg
ICAgaWYgKGNvdW50ID09IDApCisgICAgICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVu
Z3RoOworCisgICAgaWYgKGNvdW50ID4gMCkgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGNvdW50OyArK2kpCisgICAgICAgICAgICB0aGlzLl9wdXNoVGV4dEVsZW1lbnQoKTsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7CisgICAgfQorICAgICAgICAKKyAg
ICBjb3VudCA9IE1hdGgubWluKC1jb3VudCwgdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aCk7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICB0aGlzLl9wb3BUZXh0
RWxlbWVudCgpOworCisgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7Cit9CisK
K2Z1bmN0aW9uIExheWVyaW5nVGV4dEJlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgQmVuY2htYXJrLmNhbGwodGhpcywgb3B0aW9u
cyk7CisgICAgCisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3Rh
Z2UiKTsKKyAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgid2lkdGgiLCBkb2N1bWVudC5ib2R5Lm9m
ZnNldFdpZHRoKTsKKyAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgZG9jdW1lbnQu
Ym9keS5vZmZzZXRIZWlnaHQpOworICAgIAorICAgIHRoaXMuX3N0YWdlID0gdGhpcy5jcmVhdGVT
dGFnZShlbGVtZW50KTsKKyAgICB0aGlzLl9hbmltYXRvciA9IHRoaXMuY3JlYXRlQW5pbWF0b3Io
KTsKKyAgICB0aGlzLl9zdWl0ZSA9IHN1aXRlOworICAgIHRoaXMuX3Rlc3QgPSB0ZXN0OworICAg
IHRoaXMuX3JlY29yZFRhYmxlID0gcmVjb3JkVGFibGU7CisgICAgdGhpcy5fcHJvZ3Jlc3NCYXIg
PSBwcm9ncmVzc0JhcjsKK30KKworTGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoQmVuY2htYXJrLnByb3RvdHlwZSk7CitMYXllcmluZ1RleHRCZW5jaG1hcmsu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTGF5ZXJpbmdUZXh0QmVuY2htYXJrOworCitMYXllcmlu
Z1RleHRCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkg
eworICAgIHJldHVybiBuZXcgTGF5ZXJpbmdUZXh0U3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9u
cyk7Cit9CisKK0xheWVyaW5nVGV4dEJlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3Ig
PSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IExheWVyaW5nVGV4dEFuaW1hdG9yKHRoaXMp
OworfQorCitMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlLnR1bmUgPSBmdW5jdGlvbihj
b3VudCkgeworICAgIHJldHVybiB0aGlzLl9zdGFnZS50dW5lKGNvdW50KTsKK30KKworTGF5ZXJp
bmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVy
biB0aGlzLl9zdGFnZS5jbGVhcigpOworfQorCitMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90
eXBlLnNob3dSZXN1bHRzID0gZnVuY3Rpb24obWVzc2FnZSwgcHJvZ3Jlc3MpIHsKKyAgICBpZiAo
IXRoaXMuX3JlY29yZFRhYmxlIHx8ICF0aGlzLl9wcm9ncmVzc0JhciB8fCAhdGhpcy5fc3VpdGUg
fHwgIXRoaXMuX3Rlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIHRoaXMuX3JlY29yZFRhYmxl
LnNob3dSZWNvcmQodGhpcy5fc3VpdGUsIHRoaXMuX3Rlc3QsIHRoaXMuX3NhbXBsZXIsIG1lc3Nh
Z2UpOworICAgIHRoaXMuX3Byb2dyZXNzQmFyLnNldFBvcyhwcm9ncmVzcyk7Cit9CisKK3dpbmRv
dy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIHdpbmRvdy5iZW5jaG1hcmsgPSBuZXcg
TGF5ZXJpbmdUZXh0QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwg
cHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L3Jlc291cmNlcy95aW4teWFuZy5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBt
YXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwpJbmRleDog
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5wbmcK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNl
cy95aW4teWFuZy5wbmcJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnBuZwkod29ya2luZyBjb3B5KQoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95
aW4teWFuZy5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMj
CitpbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQoKaVZCT1J3MEtHZ29B
QUFBTlNVaEVVZ0FBQUdRQUFBQmtDQVlBQUFCdzRwVlVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFB
Q0JqU0ZKTgpBQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThB
QUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZCkFBQUNCR2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxM
bmh0Y0FBQUFBQUFQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHUKY3pwdFpYUmhM
eUlnZURwNGJYQjBhejBpV0UxUUlFTnZjbVVnTlM0MExqQWlQZ29nSUNBOGNtUm1PbEpFUmlCNGJX
eHVjenB5WkdZOQpJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxY
TjViblJoZUMxdWN5TWlQZ29nSUNBZ0lDQThjbVJtCk9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFlt
OTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwbGVHbG1QU0pvZEhSd09pOHYKYm5NdVlX
UnZZbVV1WTI5dEwyVjRhV1l2TVM0d0x5SUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZkR2xtWmow
aWFIUjBjRG92TDI1egpMbUZrYjJKbExtTnZiUzkwYVdabUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNB
OFpYaHBaanBRYVhobGJGbEVhVzFsYm5OcGIyNCtNVEV3ClBDOWxlR2xtT2xCcGVHVnNXVVJwYldW
dWMybHZiajRLSUNBZ0lDQWdJQ0FnUEdWNGFXWTZVR2w0Wld4WVJHbHRaVzV6YVc5dVBqRXcKTlR3
dlpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lDQWdJRHgwYVdabU9rOXlhV1Z1
ZEdGMGFXOXVQakU4TDNScApabVk2VDNKcFpXNTBZWFJwYjI0K0NpQWdJQ0FnSUR3dmNtUm1Pa1Js
YzJOeWFYQjBhVzl1UGdvZ0lDQThMM0prWmpwU1JFWStDand2CmVEcDRiWEJ0WlhSaFBnb1VuQTIr
QUFBTldFbEVRVlI0QWUxZGZXd1UxUlkvdTZWQ1cwcXJpQ1FrVUNGUlFBSklDQWhSb2NURVlnMEUK
VkVUOEN4QVNFU0l4d2g4YUJUSEJxRFVHQSs4OURXRDR4dzlRaTBGalNFU3RpWkZXcVJIQ3E2RFFC
Sk5YcW56SVI0cllVczQ3dnpNTQpIWWJkem03MzduenM5aVN6TTdzemV6L09iKzQ5NTU1Nzd6a3hD
amt4ODNncDRodzVwdEtwVThQbzJMRkIxTkpTUWlkT0ZOSzVjd1YwCjRRSlJlM3RNcTNIRERVekZ4
VVFEQm5UU29FRWROR1JJRzFWVW5LQ0JBMytYKzN2bCtEUVdpKzNYWjBQNllWVWtSSVVUQUdaS2Na
YlQKb1VNVHFiNytGbXBzTEtDZmZ5YmFMM3hzYnlkaXRzNnBsRGtlSjRwSkZRc0xpVzY3amVpdXU0
anV2cnVUcGt6NWswYU4yaWRKL0ZzQQoycDFLVW5uMWpJQ3dsTnZhOXZQMjdlMjhhQkh6c0dITXc0
Y3pQL2dnODczM01oY1hBd1l6UjBrSmMvLyt6QU1ITXMrYng1b244cFl5CjVCWFQzWlVWQm95Ull3
OS84a2s3ejUvUDNLY1BjM1UxODZaTnpGOTl4Yng0c1JrQXZJQXNLMk9PeDVrZmVJQzV0clpkeXlS
bGM1YzMKWjc5TGhlZnc4ZU5IZWQyNnk5b1NLaXVaMzNtSCtmUnB1U1ZVVThOY1VPQVBHRzZ3eXN1
dGxvT3lvWXhTMWx3R1lqWWZPZkkvWHJHQwpPUlpqZnVvcDVwOStVZ3owbzdXVmVkYXNZSUJ3QTFO
VVpKVmp5UkxXTWpQUHpobGdoTmxEK2VUSkpuN21HZWErZlptZmY1NFp6SGRTClF3UHppQkhoQU1N
SkRsb3FEcnc4cUlQVUpkTEFTQVcyOElZTm5UeGdBUFBLbGRjREFWQysrWWE1dERSOFlEaUJ3WXZV
cng5TFhTNmgKVHBFRFJRbzlnK3ZyejZxR0JFSHQ3SnJrNWxWQ3l3ZzdHRTVnb0FDTUhjdGFONmxq
SklBUlptL2c5ZXN2cTJvSllaMk0wRzJGc1p0eQpBcERzdXJDUStaVlhMcU91b1FWRkNsY2ltc2wv
VlRDalZUUTNKNFBDK2owc0Fqd1owNzErUjJ1Wk5vMjF6bEwzVUFFakhKN0FYMy9kCnBtcnMyclhk
QTRHN1VHMjlLaHlWK3hoZ291N0NnMUNBSWdXcDRuZmY3VkFOYXZ0MnNMdDdRc3NKYXB5UkxaQlJI
L0JBZUJFb0tGS0EKaGZ6NjY1MXE1b0NBVG9YOEdvRm5pL25KMG9VNXBxYW1FendKQkJUSmVEVy85
TkpsdnZOT2IzbGhBM1h3WU81MFZZbUFnVnpCS0Y5NAo0eXNvZUFzVWpNbVRFNDh0YkFEY1o0elNF
MVVrbDM3ckFzV2ZsaUk4cnRKdUNpM0RQZUoyQStEOGZrbkdWRkVhYzJUeWtnQVVxL3ZLCnJrd1Iv
azVRNFFYVHVKZGE2d1FEMXp0MjVIN3JjSUlJbWJKdEd3UjlkclF2U2JoRTFUdVlFVklWNEFEQ3Bs
d1Y1azRRM05mUXZpeVYKMlB3NGhWdGFtblNja1lwcWE0UGdQRWQxVk81bWNycmZNVTZSQWJOUklT
OTgzYUFqOEZRR2ZVNFE3R3ZJbW5Rcmtzcnpqei9PL08yMwp6QmN2V2dldThWc3EvL1h6R1l6b1Ra
bFpKS0VaYXB1Q09hU25CSXV1YVFhODhVYnkwdUNlNmZ3eVNROUMzcko5Wlc2UVZNc21CRlM2ClF0
ekpybTNiekRJSXJjQ0x3dFpTWUpCc2FEaWJVZGNsZGQ2aUp2VHVyTFplak1GOTA3WXJkRTFlaEdj
eWVhdXo4ZDl4NDFEcW5zMm4KeUIrSDZ1UlNKbDJWemJSMTY4d3lCekxEaS9CTU5waWFTWnJvdWpC
aDE1T1pSNTJ5eEV4ZnNza2xMNFk0Ny9jQzB2VnlZT2J4MUttbQpaRjJYckNTN25vU1hzMm45K3RH
MGFCSFJCQVBqR3F3bU5Fa05EZDZwcGZLTWR5cm1ud0EwTDc0NFdubWNhdXE2MGdJRHdIUk1JODRX
CjRiN3VGZXBkTFFSZEhnYU1zZ0luSlR5RWwzTjBxUTVXaDVpaWZGZDczWElIZ0dDSlVTcnJ2bVJV
MmF6cnBreTFEbVNiN3dORE55RDIKOTliV285MjJFbUhkR0xYbll4MlNhY3BYMDRuTmZQY1ppL0Zl
Zmhseko4bVhyY3JOUFdxdk1xRlp1UUhOUitPaUd3VDNkOWk1aE9mTwpWbkt0bGxWYk80MUdqRENq
V1RsendmVk03RExvcFdzNDBObEp0SFBuTk9kdlZ3RVJwSmJTamgyRnRHQ0I4NzY1NjRjZUlpb3RO
WmRlCkxxUjA1Z3pSbGkxaVUwbXdGVUwzWjJCTGdMMEtIWTNKTk9YREZLNjdXL0w2RG8zcndvWDk5
dnQxdFlYUTU1K1BwdnZ2SjdyeFJ2dWUKK2ZPVFQ1cFBNK29wOXU5UHl2c3I5VkJBcENGVTArN2Ro
VlJkbmQzcWpSR0ZZdkhpN09ZUnRkVFBpZ0g0NDQvUmJYVXhYNzU4cHRyVgo0Y09tTzZucjA4dkZo
WEplM1pMWGZVdmIrZ3p2a3RWbFlZTmxRUUhSN2Jkbi8vMGFQcHpvMVZlem4wK1VjdmpuSDZMRGh5
ZWl5QllnCjJPMDZkYXAvVlZpMWltaldMUC95QzN0TzJDa01ESVJrdDZQc0E4Zlc0MG1UL0MzMjVz
MmtZeDUvY3cxbmJ1ZlBFMzMzbmFoYlBCNHQKWks3dUFSK1AvZmsrMHVEQlJCOTgwRHMyc1ZuK3d3
KzRtZ3RBcHRBdnZ4RGRjWWQ5eTcvejVNbEV1M2IxZ2dLT056ZmpjMHBjM1ZWZwpDSTgzTmdpcXJD
VGFJK1ljbUd6eW1UbzZpRTZmSGhaWDN5RVZGY0d5QWkzbCsrL3pXOUQzNjBmQUlxNk9YSVlNQ1JZ
UTVJNFdpdTZyCnBvWlVCUSsrUlA2WFFKenF4TldyemkycWNmbGZnRVE1UWlYKzdiZjhHOUZEYkp3
OFdSaFhGMGRsWllsWUU5eHZHRHh1M1VwMDhDRFIKaWhYNUlmUWhRODZlTFlpcnY2a1M4NHV6amFB
SjI5ZkdqVVIvL1VVeU5XQzFtbHdWL3BjdUViRG9vODYvNEU4cXpBU3p6cng1MW9GeQovdkVIcWFw
KzdCaEpsNnNWb2JWcncxd0Q3N0toeXhKSGJIMjhud3poRTFBQTNHcjZtalhYRnhTNmZWMGRpU1di
cUxhV0NKVU9PY1VKCmJ2SFFmK1Vpb1h1RHVSL2RIYm85ZEgvb0JzTkk2QVVFaTdqNktHeHJDMk1S
elpZSjA4ZFFFS0FvUUdHQTRoQW02aU9kbGF6d2pLdkQKU016dDVoT2gxVUMxaG9vZEZvSWNMeXZy
akt2M1RnakdmQ04wRVJpRVlqRHFsa2RCOEFMbHVmbm1qcmk2VW0xcENhSUk0Y2dUOHpJdwoyOEI4
RXpTSlc5dTQrcldGK3BqUEJPRVBBMmRsWlhCY3VIaVJnRVZjblF5anVVQzN6MmVDMEVmM0ZWUkxn
UXk1NmFiZjQ0SkJQWTBlClRkVFVsTTl3V0hVSEtKZzBDMEttV0JhSXZRQmtKMkcyRUo2amU4bWFs
OEgwc3Q5a3RjeFA0K29MZmVMRVR2cnhSNytMRU43OElPajkKVkluUk11KzVweE5Zb0lYSXhLSDRR
dCs3Tjd3TUNxSmtXS3JrMStBUis2dUFnWkFGeUtoUmpXcm4rZlhYSUtvZXpqeWg2THp3Z2o5bAo2
OXVYYU9SSUJBZTRBZ2pSditpKys0aSsvTktmQWtRbEY0em8vYkI5Z2ZjU3FRRWYya0kwWk1QTW1S
MzB4UmY0clplY0hNajJBbkZNCkRqN3lTSWNkTmlObTU0M3RDR0pMR1VkL1NsZVd6Ulh3ZG9aUk9X
TVJHL2lSTGRNOXVzYno1dy9FaW90RjFlM3FzbUJwM0VRUFAwejAKMFVkUllaVS81WVFHaE0xRzJh
S3FLcUtpb2sxMjhwWlFsMi9TWkRiVC9Qa2RPakN5Ny9hZUxRNWthenRlZVRuUmtpWG9yaElQZkdS
dAphZlkyZlY2L01TRTZ2eHc5ZXUzR2Y2L3RCYW5lOTl6MFNiU1NubmlDWmQ5Yk5OckcrKzhUVFo5
T2hFVm1PSENOMzB4VE5oWldGQlVKCnQxZktBRVI0M2gxbHhYRkFOdHJDczg4bWYydHh6elNsK3Rh
bjg1eVg0d0FBSmZVdzcxckROSFBlZXk4NUdEWkQ4SXhKc3RNMWNVN0gKdFlhQ2d0QkVNdUZ1elBt
TVNjWWdMZmd3OUdLTTVlZlFYTTVlK2FWelB4M25NMWRheVd3TlVZU29PR0VrZUNyeVlnQ2VNVWxl
K2FWNgpIK1Zhdmh3bFN5K3VsVG93Z3dlMGJMalp5SlJSVVFha0p3N00wRXBrSnJHS3hMRzhid1ky
elRURkQwVHM5S0pVbnZGS3cvUjltRWxlCmUrMnl6QXpLYUxBSEpDK3lHU2VZbWJZSTkvK2pLdFF6
Y1lKcDQyZkVUYXlib1NhK1IwM3ROZUVtRnFBSTcyYW9FMkFUM2tsTkFPRk0KQXkwRjJoUmtDZzVj
bTFaMzdmeFNGZHFKbmpQcFNQa0tLSm01R3JjckZkVnpwcVlUU3dVM0c5Rk5vNUVoaW5OUG5mRkhG
UXlVZSt0VwpielU3VWN2QWI3Qlh0YmFhZGNaL3BaVlk0U293WUt5dmp6SjcweTg3d253blkzaDN2
Mk1BV0ZlSENHNGw0S0Z4a29TdGdDNjMzc3FNClpwd1BkTzVjejZMS1pUdWdpNDJ1WUZDbDRYelNE
WGtVVmZBMmJreS9kVUNJK3hIeXlBSEtRdlZlT21sU2VPMWRwbDZBTVdQU0F3UmcKV0pIYUZ0cjg4
dVVzOVYydEdhT2w1R3IzbGE0dzd3Smp0UzhndURNUlVCWnEwNFJNeVRWQmo2aHlDSDdXbmRCMjNn
czZzS1FOam9CUwpwZEhJb0gxOStLR3BqaUw0ZEZhdFNoME1hRk5XUkxhZTJhaHNacG82Qy9lczRN
UVZGY3hyMWdUUHpFeExzR3RYNm1CZ25HR3B0aE5NCjhkTklPc0tERW8za2hyRGNNTE5FVmE2ZzNJ
TUhld01DZVlFUitQSGpUYWk3RVNabUl4RXAzQWExZlpXVU1HY2FLaW5UTnozZC8yUE0KZ1hDeVR0
bVE2RG9LQWU2ZDRBb2ZaaUFBbHI1QmFDMk5qZW15eHYvbkFVWmxaZmRnb0ZYQWhJNjZTUjJkZFk3
RXRSUjZpOFpjUWtXZQpmanE4WXhaMFU5MjFERmlTTWRQMzFsdWRxRk1rbUorc2tGS0JvWWk1cEhQ
MDBNU2VleTVjd0VDQUo1TVowSjV3WUE0Y2RlaEpNSzlrCmpBbjZkNm5NYkEybEJQL3ZzUmp6c21Y
QmRtVVlaeVJUYlJIYkE3SURVWEN3QWlmZEJRbEJNenVkL0tWeWM4UWMzYXpCVEtBbVQ1L08KL1Bi
YmVBUGxsaytFRVhpaVFWOTV1V1V1UjZBVmxER1ZrRVRwVkQ3TXowcGx4VWdrYTRscmE5djVzY2VZ
b2JsQUFZQXg3OUFoODhoQQphQ050dDIwSzhnM2RFdkpHV1ZDbTdxTGVoSm1wcHNvbURGaUtrQTBT
YzcyZEVZa0hMUWZtbUFVTG1OOThFeUd3bWMrY2tjZlNKQWhyCnRBYk1aNERwNklaS1M1bGg1c0NB
N3RGSEVlZTlYZk5PRk1QRFZBWFRTT2ZxaHAwMC9wUFZSNFhsMVpMQk12V0ZEdmZiKy9ZVjBJRUQK
MWo1NmVGMkRCMVZzTXhzN2xtam9VR3kydHhaYTE5VVIvZjAzWEsyU09QWWtPbktFZFBNUlBDUmdV
ejRXVEdQcnNleDIxUTJXSTBjMgpTajcva2EwQW9kbzJGanBBM0dnTFFOaFpORmVPS2ZCcnEyNXR4
WHNuSEViQ1I2RzZLQlJQYlBvLzBlTFUzWlI0MVlFakYvWGpJdTRxCjRDRkI3dGZMc1ZNQUNQV0cv
UDhEUm5xL2FNNk44cTBBQUFBQVNVVk9SSzVDWUlJPQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261783</attachid>
            <date>2015-09-22 17:27:22 -0700</date>
            <delta_ts>2015-09-23 16:56:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149053-20150922172705.patch</filename>
            <type>text/plain</type>
            <size>154368</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAxNDMpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3NSBAQAorMjAxNS0wOS0xOCAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdv
cmsgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQuIE1hbnkgcGFydHMgb2YgdGhlIGNvZGUgd2Fz
IGNvcGllZAorICAgICAgICBmcm9tIHNwZWVkb21ldGVyIGJlbmNobWFyay4gVGhlIGJlbmNobWFy
ayBydW5uZXIncyBuYW1lIGlzICJhbmltb21ldGVyLmh0bWwiCisgICAgICAgIGJ1dCB0aGlzIGlz
IG5vdCBmaW5hbCB5ZXQgYW5kIG1vc3QgcHJvYmFibHkgaXMgZ29pbmcgdG8gY2hhbmdlLiBUaGUg
Y3NzIAorICAgICAgICBhbmQgdGhlIHBhZ2UgbGF5b3V0cyB3aWxsIGJlIHJldmlzZWQgZm9yIGJl
dHRlciBsb29raW5nLgorCisgICAgICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgYmVuY2htYXJrIGlz
IHRvIG1lYXN1cmUgdGhlIGFuaW1hdGlvbiBwZXJmb3JtYW5jZSBvZgorICAgICAgICBhIHdlYiBi
cm93c2VyIGluIGFjY3VyYXRlIHdheSBidXQgYXQgZmluZSBncmFudWxhciBsZXZlbC4gVGhlIGRl
c2lnbiBpcworICAgICAgICB0byBoYXZlIHNlcGFyYXRlIGFuaW1hdGlvbnM7IGVhY2ggc3RyZXNz
IHRlc3RzIG9uZSBvZiB0aGUgZ3JhcGhpY3MgcHJpbWl0aXZlcworICAgICAgICBzbyB3ZSBjYW4g
aWRlbnRpZnkgYnVncyBhIGxvdCBlYXNpZXIuCisKKyAgICAgICAgSW5zdGVhZCBvZiBtZWFzdXJp
bmcgdGhlIEZQUyBvZiB0aGUgYW5pbWF0aW9uLCB0aGUgImFuaW1vbWV0ZXIiIGJlbmNobWFyawor
ICAgICAgICB0cmllcyB0byBtZWFzdXJlIHRoZSB0ZXN0IGNvbXBsZXhpdHkgd2hlbiByZW5kZXJp
bmcgYXQgYSBzZXQtcG9pbnQgRlBTIHdoaWNoCisgICAgICAgIHNob3VsZCBiZSBsZXNzIHRoYW4g
NjAgRlBTLiBUaGUgImFuaW1vbWV0ZXIiIHN0YXlzIGF0IHRoZSBzZXQtcG9pbnQgRlBTCisgICAg
ICAgIGJ5IHVzaW5nIGEgY2xvc2VkLWxvb3AgY29udHJvbCBzeXN0ZW0gUElEIGZ1bmN0aW9uLiBU
aGUgZ2FpbiBvZiB0aGUgc3lzdGVtCisgICAgICAgIGlzIHBhc3NlZCBhcyBhIHBhcmFtZXRlciB3
aGVuIHJ1bm5pbmcgdGhlIHRlc3QuIE1lYXN1cmluZyB0aGUgRlBTIGZhaXRoZnVsbHkKKyAgICAg
ICAgcmVzdWx0cyBpbiB2ZXJ5IGZsdWN0dWF0aW5nIHZhbHVlcy4gU28gYSBLYWxtYW4gZmlsdGVy
IGlzIHVzZWQgdG8gZ2l2ZSBhCisgICAgICAgIGJldHRlciBlc3RpbWF0ZSBmb3IgdGhlIGN1cnJl
bnQgRlBTLgorCisgICAgICAgIFRoZSBhbmltYXRpb24gb2YgdGhlIHRlc3RzIGlzIGRvbmUgbWFu
dWFsbHkuIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGlzCisgICAgICAgIGNhbGxlZCB3aXRoIGEg
Y2FsbGJhY2suIEluc2lkZSB0aGlzIGNhbGxiYWNrLCB0aGUgdGVzdCBpcyBhbmltYXRpbmcgYnkK
KyAgICAgICAgY2hhbmdpbmcgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZWxlbWVudHMgaW5zaWRlIHRo
ZSBwYWdlLiBUaGUgdGVzdCBjb21wbGV4aXR5CisgICAgICAgIG1heSBjaGFuZ2UgYWxzbyBpZiB0
aGUgY3VycmVudCBGUFMgaXMgbm90IGVxdWFsIHRvIHRoZSBkZXNpcmVkIEZQUy4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFuaW1vbWV0ZXI6IEFk
ZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgCisg
ICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzOiBBZGRlZC4KKyAgICAg
ICAgKEFycmF5LnByb3RvdHlwZS5zd2FwKToKKyAgICAgICAgKEhlYXApOiBNaW4vTWF4IEhlYXAg
b2JqZWN0CisgICAgICAgIChIZWFwLnByb3RvdHlwZS5fcGFyZW50SW5kZXgpOiBHaXZlbiB0aGUg
Y2hpbGQgbm9kZSBpbmRleCwgaXQgcmV0dXJucyB0aGUgcGFyZW50IGluZGV4LgorICAgICAgICAo
SGVhcC5wcm90b3R5cGUuX2xlZnRJbmRleCk6IEdpdmVuIHRoZSBwYXJlbnQgbm9kZSBpbmRleCwg
aXQgcmV0dXJucyB0aGUgbGVmdCBub2RlIGluZGV4LgorICAgICAgICAoSGVhcC5wcm90b3R5cGUu
X3JpZ2h0SW5kZXgpOiBHaXZlbiB0aGUgcGFyZW50IG5vZGUgaW5kZXgsIGl0IHJldHVybnMgdGhl
IHJpZ2h0IG5vZGUgaW5kZXguCisgICAgICAgIChIZWFwLnByb3RvdHlwZS5fY2hpbGRJbmRleCk6
IEdpdmVuIHRoZSBwYXJlbnQgbm9kZSBpbmRleCwgaXQgcmV0dXJucyB0aGUgY2hpbGQgaW5kZXgg
dGhhdCBtYXkgdmlvbGF0ZSB0aGUgaGVhcCBwcm9wZXJ0eS4KKyAgICAgICAgKEhlYXAucHJvdG90
eXBlLmluaXQpOiBJbml0aWFsaXplcyB0aGUgaGVhcCBzdGF0ZS4KKyAgICAgICAgKEhlYXAucHJv
dG90eXBlLnRvcCk6IFJldHVybnMgdGhlIHZhbHVlIHN0b3JlZCBhdCB0aGUgdG9wIG9mIHRoZSBo
ZWFwLgorICAgICAgICAoSGVhcC5wcm90b3R5cGUucHVzaCk6IFB1c2hlcyBhIG5ldyBub2RlIGF0
IHRoZSB0b3Agb2YgdGhlIGhlYXAuCisgICAgICAgIChIZWFwLnByb3RvdHlwZS5wb3ApOiBFeHRy
YWN0cyB0aGUgdG9wIG5vZGUgb2YgdGhlIGhlYXAuCisgICAgICAgIChIZWFwLnByb3RvdHlwZS5f
YnViYmxlKTogRml4ZXMgdGhlIGhlYXAgcHJvcGVydHkgYnkgbW92aW5nIHVwd2FyZC4KKyAgICAg
ICAgKEhlYXAucHJvdG90eXBlLl9zaW5rKTogRml4ZXMgdGhlIGhlYXAgcHJvcGVydHkgYnkgbW92
aW5nIGRvd253YXJkLgorICAgICAgICAoSGVhcC5wcm90b3R5cGUuc3RyKTogUHJpbnRzIHRoZSBu
b2RlcyBvZiB0aGUgaGVhcCB0byBhIHN0cmluZy4KKyAgICAgICAgKEhlYXAucHJvdG90eXBlLnZh
bHVlcyk6IFJldHVybnMgdGhlIGxhc3QgInNpemUiIGhlYXAgZWxlbWVudHMgdmFsdWVzLgorICAg
ICAgICAoQWxnb3JpdGhtLmNyZWF0ZU1pbkhlYXApOiBDcmVhdGVzIGEgc2l6ZS1ib3VuZGVkIG1p
bi1oZWFwIG9iamVjdC4KKyAgICAgICAgKEFsZ29yaXRobS5jcmVhdGVNYXhIZWFwKTogQ3JlYXRl
cyBhIHNpemUtYm91bmRlZCBtYXgtaGVhcCBvYmplY3QuCisgICAgICAgIAorICAgICAgICAqIEFu
aW1vbWV0ZXIvcmVzb3VyY2VzL21haW4uanM6IEFkZGVkLgorICAgICAgICAoUG9pbnQpOiBBIHBv
aW50IG9iamVjdAorICAgICAgICAoSW5zZXRzKTogQW4gaW5zZXRzIG9iamVjdAorICAgICAgICAo
U2ltcGxlUHJvbWlzZSk6IEFuIGltcGxlbWVudGF0aW9uIGZvciBhIHByb21pc2Ugb2JqZWN0IChj
b3BpZWQgZm9ybSBzcGVlZG9tZXRlcikuCisgICAgICAgIChNYXRyaXgpOiBBIG1hdHJpeCBvYmpl
Y3QuCisgICAgICAgIChWZWN0b3IzKTogQSB2ZWN0b3Igb2Ygc2l6ZSAzIG9iamVjdC4KKyAgICAg
ICAgKE1hdHJpeDMpOiBBIG1hdHJpeCBvZiBzaXplIDN4MyBvYmplY3QuCisgICAgICAgIChPcHRp
b25zKTogQmVuY2htYXJrIHJ1bm5pbmcgb3B0aW9ucyBhcyB0aGV5IGFyZSBzZXQgYnkgdGhlIHVz
ZXIuCisgICAgICAgICAgICAgICAgCisgICAgICAgIChQcm9ncmVzc0Jhcik6IE1hbmFnZXMgYSBw
cm9ncmVzcyBiYXIgZWxlbWVudC4gVGhlIHByb2dyZXNzIGJhciBpcyBkaXZpZGVkIGludG8gZXF1
YWwgbGVuZ3RoIHJhbmdlcy4KKyAgICAgICAgKFByb2dyZXNzQmFyLnByb3RvdHlwZS5fcHJvZ3Jl
c3NUb1BlcmNlbnQpOiBDb252ZXJ0cyB0aGUgcHJvZ3Jlc3MgaW50byBhIHBlcmNlbnRhZ2UuCisg
ICAgICAgIChQcm9ncmVzc0Jhci5wcm90b3R5cGUuaW5jUmFuZ2UpOiBNb3ZlcyB0byB0aGUgbmV4
dCByYW5nZSAoYSByYW5nZSBpcyB0aGUgcnVubmluZyB0aW1lIG9mIGEgc2luZ2xlIHRlc3QpLgor
ICAgICAgICAoUHJvZ3Jlc3NCYXIucHJvdG90eXBlLnNldFBvcyk6IERyYXdzIHRoZSBjdXJyZW50
IHByb2dyZXNzIGluIHRoZSBjdXJyZW50IHJhbmdlLgorICAgICAgICAKKyAgICAgICAgKFJlY29y
ZFRhYmxlKTogU2hvd3MgdGhlIHJlc3VsdHMgb2YgcnVubmluZyBhIGJlbmNobWFyayBpbiBhIHRh
YnVsYXIgZm9ybS4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5jbGVhcik6IENsZWFy
cyB0aGUgcmVzdWx0cyB0YWJsZS4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5fc2hv
d1RpdGxlcyk6IFNob3dzIHRoZSBoZWFkZXIgdGl0bGVzIGFuZCBhcHBlbmRzIHRoZSBzdWItdGl0
bGVzIHRvIGEgcXVldWUuCisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dIZWFk
ZXIpOiBTaG93cyB0aGUgdGFibGUgaGVhZGVyIHRpdGxlcy4KKyAgICAgICAgKFJlY29yZFRhYmxl
LnByb3RvdHlwZS5fc2hvd0VtcHR5KTogU2hvd3MgYW4gZW1wdHkgdGFibGUgY2VsbC4KKyAgICAg
ICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5fc2hvd1ZhbHVlKTogU2hvd3MgYSBudW1iZXIgdmFs
dWUgaW4gdGhlIHJlc3VsdHMgdGFibGUuCisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUu
X3Nob3dTYW1wbGVzKTogU2hvd3MgYSBidXR0b24gZm9yIHRoZSBzYW1wbGVkIGRhdGEgZ3JhcGgu
CisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dUZXN0KTogU2hvd3MgdGhlIHJl
c3VsdHMgb2YgYSBzaW5nbGUgdGVzdC4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5f
c2hvd1N1aXRlKTogU2hvd3MgdGhlIHJlc3VsdHMgb2YgYSBzaW5nbGUgc3VpdGUuCisgICAgICAg
IChSZWNvcmRUYWJsZS5wcm90b3R5cGUuc2hvd1JlY29yZCk6ICAgICAgICAKKyAgICAgICAgKFJl
Y29yZFRhYmxlLnByb3RvdHlwZS5zaG93SXRlcmF0aW9ucyk6IFNob3dzIHRoZSByZXN1bHRzIG9m
IGFsbCB0aGUgc3VpdGVzIG9mIHRoZSBpdGVyYXRpb25zLiAKKyAgICAgICAgCisgICAgICAgICog
QW5pbW9tZXRlci9yZXNvdXJjZXMvc3RhdGlzdGljcy5qczogQWRkZWQuCisgICAgICAgIChTdGF0
aXN0aWMpOiBNZWFzdXJlcyB0aGUgc2FtcGxlIG1lYW4gYW5kIHN0YW5kYXJkIGRldmlhdGlvbiBm
b3IgYSBzZXQgZGF0YSBwb2ludHMuCisgICAgICAgIChTdGF0aXN0aWMuc2FtcGxlTWVhbik6IFJl
dHVybnMgdGhlIHNhbXBsZSBtZWFuIGZvciBhIHNldCBvZiBkYXRhIHBvaW50cy4KKyAgICAgICAg
KFN0YXRpc3RpYy5zYW1wbGVTdGFuZGFyZERldmlhdGlvbik6IFJldHVybnMgdGhlIHNhbXBsZSBz
dGFuZGFyZCBkZXZpYXRpb24gZm9yIGEgc2V0IG9mIGRhdGEgcG9pbnRzLgorICAgICAgICAoU3Rh
dGlzdGljLnByb3RvdHlwZS5faW5pdCk6IENhbGxlZCB3aGVuIHRoZSBvYmplY3QgaXMgY3JlYXRl
ZCBhbmQgd2hlbiBzdGFydFNhbXBsaW5nKCkgaXMgY2FsbGVkLgorICAgICAgICAoU3RhdGlzdGlj
LnByb3RvdHlwZS5zdGFydFNhbXBsaW5nKTogQ2FsbGVkIGFmdGVyIHdhcm1pbmcgdXAgcGVyaW9k
LiBSZXN0YXJ0cyBjb2xsZWN0aW5nIHNhbXBsZWQgZGF0YSBwb2ludHMuCisgICAgICAgIChTdGF0
aXN0aWMucHJvdG90eXBlLnNhbXBsZSk6IEFkZCBhIG5ldyBkYXRhIHBvaW50LgorICAgICAgICAo
U3RhdGlzdGljLnByb3RvdHlwZS5tZWFuKTogUmV0dXJucyB0aGUgc2FtcGxlIG1lYW4gZm9yIHRo
ZSBjdXJyZW50IHNhbXBsZWQgZGF0YSBwb2ludHMuCisgICAgICAgIChTdGF0aXN0aWMucHJvdG90
eXBlLnN0YW5kYXJkRGV2aWF0aW9uKTogUmV0dXJucyB0aGUgc2FtcGxlIHN0YW5kYXJkIGRldmlh
dGlvbiBmb3IgdGhlIGN1cnJlbnQgc2FtcGxlZCBkYXRhIHBvaW50cy4KKyAgICAgICAgKFN0YXRp
c3RpYy5wcm90b3R5cGUucGVyY2VudGFnZSk6IFJldHVybnMgdGhlIHBlcmNlbnRhZ2Ugb2YgdGhl
IHN0YW5kYXJkIGRldmlhdGlvbiBkaXZpZGVkIHRvIHRoZSBtZWFuLgorICAgICAgICAoU3RhdGlz
dGljLnByb3RvdHlwZS5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSk6IENhbGN1bGF0ZXMgdGhlIGNv
bmZpZGVuY2UgZGVsdGEgZm9yIHRoZSBjdXJyZW50IHNhbXBsZWQgZGF0YSBnaXZlbiBhIGNvbmZp
ZGVuY2UgbGV2ZWwuCisgICAgICAgIChTYW1wbGVyKTogTWFuYWdlcyBzYW1wbGluZyBtdWx0aXBs
ZSBkYXRhIHBvaW50cyBhdCB0aGUgc2FtZSB0aW1lIG9mZnNldC4KKyAgICAgICAgKFNhbXBsZXIu
cHJvdG90eXBlLnN0YXJ0U2FtcGxpbmcpOiBDYWxsZWQgYWZ0ZXIgd2FybWluZyB1cCBwZXJpb2Qu
IFJlc3RhcnRzIGNvbGxlY3Rpbmcgc2FtcGxlZCBkYXRhIHBvaW50cy4KKyAgICAgICAgKFNhbXBs
ZXIucHJvdG90eXBlLnNhbXBsZSk6IEFkZCBhIG5ldyBkYXRhIHZlY3RvciBhdCBhIGdpdmVuIHRp
bWUgb2Zmc2V0LgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lcjogQWRkZWQu
CisgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvYW5pbW9tZXRlci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXM6IEFkZGVkLgorICAgICAgICAqIEFu
aW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzczogQWRkZWQuCisgICAgICAg
IFRoZSBiZW5jaG1hcmsgcnVubmVyIHBhZ2UgYW5kIGNzcy4KKyAgICAgICAgCisgICAgICAgICog
QW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuanM6IEFkZGVkLgorICAgICAg
ICAod2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudC53aWxsQWRkVGVzdEZyYW1lKTogQ2FsbGVk
IGFmdGVyIHRoZSB0ZXN0IDxpZnJhbWU+IGlzIGNyZWF0ZWQuCisgICAgICAgICh3aW5kb3cuYmVu
Y2htYXJrUnVubmVyQ2xpZW50LmRpZFJ1blRlc3QpOiBDYWxsZWQgYWZ0ZXIgcnVubmluZyBhIHRl
c3QgaXMgZmluaXNoZWQuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50Lndp
bGxTdGFydEZpcnN0SXRlcmF0aW9uKTogQ2FsbGVkIGF0IHRoZSBiZWdpbm5pbmcgYmVmb3JlIHJ1
bm5pbmcgYW55IHRlc3QuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LmRp
ZFJ1blN1aXRlcyk6IENhbGxlZCBhZnRlciBydW5uaW5nIGFsbCB0ZXN0cyBvZiBhIHN1aXRlLgor
ICAgICAgICAod2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0
aW9uKTogQ2FsbGVkIGFmdGVyIHJ1bm5pbmcgdGhlIGxhc3QgdGVzdC4KKyAgICAgICAgCisgICAg
ICAgICh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LmJyb3dzZXIpOgorICAgICAgICAoc2hv
d1NlY3Rpb24pOiBTaG93cyBhIHNlY3Rpb24gaW4gdGhlIGFuaW1vbWV0ZXIuaHRtbCBwYWdlLgor
ICAgICAgICAoc3RhcnRUZXN0KTogQ2FsbGVkIHdoZW4gdGhlICJTdGFydCBUZXN0IiBidXR0b24g
aXMgY2xpY2tlZC4KKyAgICAgICAgKHNob3dSZXN1bHRzKTogQ2FsbGVkIGFmdGVyIGZpbmlzaGlu
ZyBhbGwgdGhlIHRlc3RzLgorICAgICAgICAoc2hvd0dyYXBoKTogQ2FsbGVkIHdoZW4gIkNsaWNr
Li4uIiBidXR0b24gaW4gdGhlICJTYW1wbGVzIiBjb2x1bW4gb2YgdGhlIHJlc3VsdHMgdGFibGUg
aXMgY2xpY2tlZAorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJj
ZXMvYmVuY2htYXJrLXJ1bm5lci5qczogQWRkZWQuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXJT
dGF0ZSk6IFRyYWNrcyBvZiB0aGUgY3VycmVudCBydW5uaW5nIDxzdWl0ZSwgdGVzdD4KKyAgICAg
ICAgKEJlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5jdXJyZW50U3VpdGUpOiByZXR1cm5z
IHRoZSBjdXJyZW50IHJ1bm5pbmcgc3VpdGUuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXJTdGF0
ZS5wcm90b3R5cGUuY3VycmVudFRlc3QpOiByZXR1cm5zIHRoZSBjdXJyZW50IHJ1bm5pbmcgdGVz
dC4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5pc0ZpcnN0VGVzdCk6
IHJldHVybnMgdHJ1ZSBpZiB3ZSBhcmUgcnVubmluZyB0aGUgZmlyc3QgdGVzdCBpbiB0aGUgY3Vy
cmVudCBzdWl0ZS4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5uZXh0
KTogYWR2YW5jZXMgdG8gdGhlIG5leHQgdGVzdC4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lclN0
YXRlLnByb3RvdHlwZS5wcmVwYXJlQ3VycmVudFRlc3QpOiBDcmVhdGVzIGEgbmV3IDxpZnJhbWU+
IGFuZCB3YWl0cyBmb3IgaXQgdG8gbG9hZCBhIHRlc3QuCisgICAgICAgIAorICAgICAgICAoQmVu
Y2htYXJrUnVubmVyKTogTWFuYWdlcyBydW5uaW5nIHRoZSB0ZXN0cyBhbmQgY29tbXVuaWNhdGlu
ZyB3aXRoIHRoZSBiZW5jaG1hcmtSdW5uZXJDbGllbnQuCisgICAgICAgIChCZW5jaG1hcmtSdW5u
ZXIucHJvdG90eXBlLndhaXRGb3JFbGVtZW50KTogV2FpdHMgZm9yIGFuIGVsZW1lbnQgdG8gYmUg
Y3JlYXRlZC4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX2FwcGVuZEZyYW1l
KTogQ3JlYXRlcyBhIG5ldyA8aWZyYW1lPiBlbGVtZW50LgorICAgICAgICAoQmVuY2htYXJrUnVu
bmVyLnByb3RvdHlwZS5fcmVtb3ZlRnJhbWUpOiBSZW1vdmVkIHRoZSBjdXJyZW50IDxpZnJhbWU+
IGVsZW1lbnQuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9ydW5UZXN0QW5k
UmVjb3JkUmVzdWx0cyk6IFJ1bnMgdGhlIGN1cnJlbnQgdGVzdCBhbmQgc2F2ZXMgaXRzIHJlc3Vs
dHMuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLnN0ZXApOiBFaXRoZXIgcnVu
cyB0aGUgY3VycmVudCB0ZXN0IGlmIHRoZXJlIGlzIG9yIHN0YXJ0IGEgbmV3IGl0ZXJhdGlvbi4K
KyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUucnVuQWxsU3RlcHMpOiBMb29wcyB0
byBydW4gYWxsIHRoZSB0ZXN0cyBhbmQgbW92ZSB0byB0aGUgbmV4dCBpdGVyYXRpb24uCisgICAg
ICAgICh0aGlzLl9ydW5OZXh0SXRlcmF0aW9uKTogU3RhcnRzIGEgbmV3IGl0ZXJhdGlvbiBvciBz
aG93IHRoZSByZXN1bHRzLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5ydW5N
dWx0aXBsZUl0ZXJhdGlvbnMpOiBMb29wcyB0byBydW4gYWxsIHRoZSBpdGVyYXRpb25zIGFuZCBz
aG93IHRoZSByZXN1bHRzCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9maW5h
bGl6ZSk6IFN0YXJ0cyBhIG5ldyBpdGVyYXRpb24uCisKKyAgICAgICAgKiBBbmltb21ldGVyL3J1
bm5lci9yZXNvdXJjZXMvZ3JhcGguanM6IEFkZGVkLgorICAgICAgICAoZ3JhcGgpOiBEcmF3cyBh
IGNoYXJ0IGZvciBhIHRlc3Qgc2FtcGxlZCBkYXRhLiBJdCBzaG93cyB0d28geS1heGlzZXM6IG9u
ZSBmb3IgdGhlIHBhcnRpY2xlcyBhbmQgdGhlIHNlY29uZCBmb3IgRlBTLgorICAgICAgICAKKyAg
ICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanM6IEFkZGVkLgorICAg
ICAgICAoc3VpdGVGcm9tTmFtZSk6IFJldHVybnMgYSBzdWl0ZSBnaXZlbiBpdHMgbmFtZS4KKyAg
ICAgICAgKHRlc3RGcm9tTmFtZSk6IFJldHVybnMgYSB0ZXN0IGdpdmVuIGl0cyBzdWl0ZSBhbmQg
bmFtZS4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0czogQWRkZWQuCisgICAg
ICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXM6IEFkZGVkLgorICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1p
bWFnZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1pbWFnZXMuaHRtbDog
QWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91
bmNpbmctc2hhcGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBl
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9yZXNvdXJjZXM6IEFkZGVkLgorICAgICAgICBUaGUgYm91bmNpbmcgcGFydGljbGVzIHRl
c3QgcGFnZXMuIFRoZSBzYW1lIHRlc3RzIGFyZSBkb25lIGFzIEhUTUwgZWxlbWVudHMsCisgICAg
ICAgIFNWR0VsZW1lbnRzIG9yIGRyYXduIG9uIGEgY2FudmFzLgorICAgICAgICAKKyAgICAgICAg
KiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmct
Y2FudmFzLWltYWdlcy5qczogQWRkZWQuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlKTog
QSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFz
SW1hZ2UucHJvdG90eXBlLl9kcmF3KTogRHJhd3MgYW4gaW1hZ2Ugb24gdGhlIGNvbnRleHQgb2Yg
YSBjYW52YXMuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlLnByb3RvdHlwZS5hbmltYXRl
KTogTW92ZXMgdGhlIEJvdW5jaW5nQ2FudmFzSW1hZ2UgdG8gYSBuZXcgbG9jYXRpb24uCisgICAg
ICAgIAorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZSk6IEEgc3ViIGNsYXNzIG9m
IEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlc1N0
YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0aWNsZSBvZiB0eXBl
IEJvdW5jaW5nQ2FudmFzSW1hZ2UuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdDYW52YXNJ
bWFnZXNBbmltYXRvcik6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3Iu
CisgICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRl
KTogQ2xlYXJzIHRoZSBjb250ZXh0IGJlZm9yZSByZWRyYXdpbmcgdGhlIHBhcnRpY2xlcy4KKyAg
ICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayk6IEEgc3ViIGNs
YXNzIG9mIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLgorICAgICAgICAoQm91bmNpbmdDYW52
YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdl
IG9mIHR5cGUgQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS4KKyAgICAgICAgKEJvdW5jaW5nQ2Fu
dmFzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvcik6IENyZWF0ZXMgYW4g
YW5pbWF0b3Igb2YgdHlwZSBCb3VuY2luZ0NhbnZhc0ltYWdlc0FuaW1hdG9yLgorICAgICAgICAo
d2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5
cGUgQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsuCisgICAgICAgIAorICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52
YXMtc2hhcGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGUpOiBBIHN1
YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFw
ZS5wcm90b3R5cGUuX2RyYXcpOiBEcmF3cyBhIHNoYXBlIG9uIHRoZSBjb250ZXh0IG9mIGEgY2Fu
dmFzLgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUuYW5pbWF0ZSk6IE1v
dmVzIHRoZSBCb3VuY2luZ0NhbnZhc1NoYXBlIHRvIGEgbmV3IGxvY2F0aW9uLgorICAgICAgICAK
KyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3Vu
Y2luZ1BhcnRpY2xlc1N0YWdlLgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS5w
cm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlwZSBCb3Vu
Y2luZ0NhbnZhc1NoYXBlLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVz
QW5pbWF0b3IpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLgorICAg
ICAgICAoQm91bmNpbmdDYW52YXNTaGFwZXNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6IENs
ZWFycyB0aGUgY29udGV4dCBiZWZvcmUgcmVkcmF3aW5nIHRoZSBwYXJ0aWNsZXMuCisgICAgICAg
IAorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmspOiBBIHN1YiBjbGFzcyBv
ZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hh
cGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0
eXBlIEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1No
YXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBDcmVhdGVzIGFuIGFuaW1h
dG9yIG9mIHR5cGUgQm91bmNpbmdDYW52YXNTaGFwZXNBbmltYXRvci4KKyAgICAgICAgKHdpbmRv
dy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJv
dW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctaW1hZ2VzLmpz
OiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nSW1hZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2lu
Z1BhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdJbWFnZS5wcm90b3R5cGUuX21vdmUpOiBNb3Zl
IHRoZSBwYXJ0aWNsZSB0byBhIG5ldyBsb2NhdGlvbi4gQXBwbHkgdHJhbnNmb3JtIHNpbmNlIGl0
IGRvZXMgbm90IHJlcXVpcmUgbGF5b3V0LgorICAgICAgICAoQm91bmNpbmdJbWFnZS5wcm90b3R5
cGUuYW5pbWF0ZSk6IFJvdGF0ZXMgYW5kIG1vdmVzIHRoZSBzaGFwZSB0byBhIG5ldyBsb2NhdGlv
bi4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0ltYWdlc1N0YWdlKTogQSBzdWIgY2xhc3Mg
b2YgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS4KKyAgICAgICAgKEJvdW5jaW5nSW1hZ2VzU3RhZ2Uu
cHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlIGEgcGFydGljbGUgb2YgdHlwZSBCb3Vu
Y2luZ0ltYWdlLgorICAgICAgICAoQm91bmNpbmdJbWFnZXNTdGFnZS5wcm90b3R5cGUucGFydGlj
bGVXaWxsQmVSZW1vdmVkKTogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZm9ybSB0
aGUgcGFyZW50IGNoaWxkcmVuIGxpc3QuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdJbWFn
ZXNCZW5jaG1hcmspOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay4K
KyAgICAgICAgKEJvdW5jaW5nSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6
IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nSW1hZ2VzU3RhZ2UuCisgICAgICAgICh3
aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlw
ZSBCb3VuY2luZ0ltYWdlc0JlbmNobWFyay4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5q
czogQWRkZWQuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlUm90YXRlcik6IE1hbmFnZXMgcm90
YXRpbmcgYSBCb3VuY2luZ1BhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZVJvdGF0
ZXIucHJvdG90eXBlLm5leHQpOiBNb3ZlcyB0aGUgdGltZSBieSB0aGUgYmVuY2htYXJrJ3MgY3Vy
cmVudCB0aW1lRGF0YS4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVSb3RhdGVyLnByb3RvdHlw
ZS5kZWdyZWUpOiBSZXR1cm5zIHRoZSBjdXJyZW50IHJvdGF0aW5nIGRlZ3JlZS4KKyAgICAgICAg
KEJvdW5jaW5nUGFydGljbGVSb3RhdGVyLnByb3RvdHlwZS5yb3RhdGVaKTogUmV0dXJucyBDU1Mg
Zm9ybWF0dGVkIHRyYW5zZm9ybSByb3RhdGVaKCkgdmFsdWUuCisgICAgICAgIChCb3VuY2luZ1Bh
cnRpY2xlUm90YXRlci5wcm90b3R5cGUucm90YXRlKTogUmV0dXJucyBTVkcgZm9ybWF0dGVkIHRy
YW5zZm9ybSByb3RhdGUoKSB2YWx1ZS4gICAgICAgIAorICAgICAgICAKKyAgICAgICAgKEJvdW5j
aW5nUGFydGljbGUpOiBCYXNlIGNsYXNzIGZvciBhIGJvdW5jaW5nIHBhcnRpY2xlLgorICAgICAg
ICAoQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuY2VudGVyKTogUmV0dXJucyB0aGUgY2VudGVy
IHBvaW50IG9yIHRoZSBwYXJ0aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGUucHJvdG90
eXBlLmFuaW1hdGUpOiBNb3ZlcyB0aGUgcGFydGljbGUgYmFzZWQgb24gaXRzIGN1cnJlbnQgcG9z
aXRpb24sIGFuZ2xlIGFuZCB2ZWxvY2l0eS4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ1Bh
cnRpY2xlc0FuaW1hdG9yKTogQSBzdWIgY2xhc3Mgb2YgQW5pbWF0b3IuCisgICAgICAgIChCb3Vu
Y2luZ1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlKTogTWFuYWdlcyBhbmltYXRp
bmcgdGhlIGJvdW5jaW5nIHBhcnRpY2xlcyB0aHJvdWdoIHRoZSB0ZXN0IHN0YWdlLgorICAgICAg
ICAKKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UpOiBSZXByZXNlbnRzIHRoZSBjb250
YWluZXIgb2YgYWxsIHRoZSBib3VuY2luZyBwYXJ0aWNsZXMuCisgICAgICAgIChCb3VuY2luZ1Bh
cnRpY2xlc1N0YWdlLnByb3RvdHlwZS5zaXplKTogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgc3Rh
Z2UgZXhjbHVkaW5nIHRoZSBDU1MgcGFkZGluZy4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVz
U3RhZ2UucHJvdG90eXBlLnBhcnNlU2hhcGVQYXJhbXRlcnMpOiBHZXRzIHRoZSBzaGFwZSBwYXJh
bWV0ZXJzIGZvciBzaGFwZSBhbmltYXRpbmcgdGVzdHMuCisgICAgICAgIChCb3VuY2luZ1BhcnRp
Y2xlc1N0YWdlLnByb3RvdHlwZS5hbmltYXRlKTogQW5pbWF0ZXMgYWxsIHRoZSBwYXJ0aWNsZXMu
CisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS50dW5lKTogQ2hhbmdl
cyB0aGUgdGVzdCBieSBhZGRpbmcgb3IgcmVtb3ZpbmcgcGFydGljbGVzLgorICAgICAgICAKKyAg
ICAgICAgKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrKTogUnVucyB0aGUgYmVuY2htYXJrIGZv
ciBib3VuY2luZyBwYXJ0aWNsZXMgdGVzdC4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzQmVu
Y2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvcik6IENyZWF0ZXMgYW4gYW5pbWF0b3Igb2Yg
dHlwZSBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNs
ZXNCZW5jaG1hcmsucHJvdG90eXBlLnR1bmUpOiBUdW5lcyB0aGUgdGVzdCB0aHJvdWdoIHRoZSBj
dXJyZW50IHN0YWdlLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90
eXBlLmNsZWFyKTogQ2xlYXJzIHRoZSB0ZXN0IHRocm91Z2ggdGhlIGN1cnJlbnQgc3RhZ2UuCisg
ICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuc2hvd1Jlc3VsdHMp
OiBTaG93cyB0aGUgcmVzdWx0cy9wcm9ncmVzcyB0aHJvdWdoIGl0cyByZWNvcmRUYWJsZSBhbmQg
cHJvZ3Jlc3NCYXIuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zaGFwZXMuanM6IEFkZGVkLgorICAgICAg
ICAoQm91bmNpbmdTaGFwZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUuCisgICAg
ICAgIChCb3VuY2luZ1NoYXBlLnByb3RvdHlwZS5fY3JlYXRlU3Bhbik6IENyZWF0ZXMgYSA8c3Bh
bj4gZWxlbWVudCBhbmQgdGFrZXMgdGhlIHNoYXBlIGFuZCBjbGlwcGluZyBjbGFzc2VzIGludG8g
Y29uc2lkZXJhdGlvbi4KKyAgICAgICAgKEJvdW5jaW5nU2hhcGUucHJvdG90eXBlLl9tb3ZlKTog
TW92ZXMgdGhlIHBhcnRpY2xlIHRvIGEgbmV3IGxvY2F0aW9uLiBBcHBseSB0cmFuc2Zvcm0gc2lu
Y2UgaXQgZG9lcyBub3QgcmVxdWlyZSBsYXlvdXQuCisgICAgICAgIChCb3VuY2luZ1NoYXBlLnBy
b3RvdHlwZS5hbmltYXRlKTogUm90YXRlcyBhbmQgbW92ZXMgdGhlIHNoYXBlIHRvIGEgbmV3IGxv
Y2F0aW9uLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nU2hhcGVzU3RhZ2UpOiBBIHN1YiBj
bGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLgorICAgICAgICAoQm91bmNpbmdTaGFwZXNT
dGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlw
ZSBCb3VuY2luZ1NoYXBlLgorICAgICAgICAoQm91bmNpbmdTaGFwZXNTdGFnZS5wcm90b3R5cGUu
cGFydGljbGVXaWxsQmVSZW1vdmVkKTogUmVtb3ZlcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50
IGZvcm0gdGhlIHBhcmVudCBjaGlsZHJlbiBsaXN0LgorICAgICAgICAKKyAgICAgICAgKEJvdW5j
aW5nU2hhcGVzQmVuY2htYXJrKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNCZW5j
aG1hcmsuCisgICAgICAgIChCb3VuY2luZ1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRl
U3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ1NoYXBlc1N0YWdlLgorICAg
ICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJr
IG9mIHR5cGUgQm91bmNpbmdTaGFwZXNCZW5jaG1hcmsuCisgICAgICAgIAorICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmct
aW1hZ2VzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnSW1hZ2UpOiBBIHN1YiBjbGFz
cyBvZiBCb3VuY2luZ1BhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZS5wcm90b3R5
cGUuX21vdmUpOiBNb3ZlIHRoZSBwYXJ0aWNsZSB0byBhIG5ldyBsb2NhdGlvbi4gQXBwbHkgdHJh
bnNmb3JtIHNpbmNlIGl0IGRvZXMgbm90IHJlcXVpcmUgbGF5b3V0LgorICAgICAgICAoQm91bmNp
bmdTdmdJbWFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IFJvdGF0ZXMgYW5kIG1vdmVzIHRoZSBzaGFw
ZSB0byBhIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ1N2Z0ltYWdl
c1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS4KKyAgICAgICAg
KEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRl
cyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNpbmdTdmdJbWFnZS4KKyAgICAgICAgKEJvdW5jaW5n
U3ZnSW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCk6IFJlbW92ZSB0
aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGZvcm0gdGhlIHBhcmVudCBjaGlsZHJlbiBsaXN0Lgor
ICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrKTogQSBzdWIgY2xh
c3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuCisgICAgICAgIChCb3VuY2luZ1N2Z0lt
YWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2Yg
dHlwZSBCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlLgorICAgICAgICAod2luZG93LmJlbmNobWFya0Ns
aWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5cGUgQm91bmNpbmdTdmdJbWFn
ZXNCZW5jaG1hcmsuIAorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qczogQWRkZWQuCisg
ICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNs
ZS4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLl9jcmVhdGVDaXJjbGUpOiBS
ZXR1cm5zIGEgbmV3bHkgY3JlYXRlZCBTVkcgPGNpcmNsZT4gZWxlbWVudC4KKyAgICAgICAgKEJv
dW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLl9jcmVhdGVSZWN0KTogUmV0dXJucyBhIG5ld2x5IGNy
ZWF0ZWQgU1ZHIDxyZWN0PiBlbGVtZW50LiAKKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGUucHJv
dG90eXBlLl9tb3ZlKTogTW92ZSB0aGUgcGFydGljbGUgdG8gYSBuZXcgbG9jYXRpb24uIEFwcGx5
IHRyYW5zZm9ybSBzaW5jZSBpdCBkb2VzIG5vdCByZXF1aXJlIGxheW91dC4KKyAgICAgICAgKEJv
dW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLmFuaW1hdGUpOiBSb3RhdGVzIGFuZCBtb3ZlcyB0aGUg
c2hhcGUgdG8gYSBuZXcgbG9jYXRpb24uCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdTdmdT
aGFwZXNTdGFnZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuCisgICAg
ICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5lbnN1cmVDbGlwU3RhcklzQ3Jl
YXRlZCk6IEVuc3VyZSB0aGUgYSA8Y2xpcFBhdGg+IGVsZW1lbnQgd2l0aCBpZD0ic3Rhci1jbGlw
IiBpcyBjcmVhdGVkLgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUu
ZW5zdXJlRGVmc0lzQ3JlYXRlZCk6IEVuc3VyZSBhIDxkZWZzPiBlbGVtZW50IGlzIGNyZWF0ZWQu
CisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVHcmFkaWVu
dCk6IENyZWF0ZXMgYSA8bGluZWFyR3JhZGllbnQ+IGVsZW1lbnQuCisgICAgICAgIChCb3VuY2lu
Z1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5fY3JlYXRlRGVmcyk6IENyZWF0ZXMgYSBuZXcgPGRl
ZnM+IGVsZW1lbnQuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5f
Y3JlYXRlQ2xpcFN0YXIpOiBDcmVhdGUgYSBuZXcgPGNsaXBQYXRoPiBlbGVtZW50IHdpdGggaWQ9
InN0YXItY2xpcCIuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5j
cmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0aWNsZSBvZiB0eXBlIEJvdW5jaW5nU3ZnU2hh
cGUuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdp
bGxCZVJlbW92ZWQpOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBmb3JtIHRoZSBw
YXJlbnQgY2hpbGRyZW4gbGlzdC4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBl
c0JlbmNobWFyayk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLgor
ICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdl
KTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUgQm91bmNpbmdTdmdTaGFwZXNTdGFnZS4KKyAgICAg
ICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBv
ZiB0eXBlIEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrLgorICAgICAgICAKKyAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlczogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90
ZXN0cy9yZXNvdXJjZXMvYmVuY2htYXJrLmNzczogQWRkZWQuCisgICAgICAgIEEgc2hhcmVkIGNz
cyBmb3IgYWxsIHRoZSB0ZXN0IHBhZ2VzLiBJdCBzZXRzIHRoZSBjc3MgcHJvcGVydGllcyBmb3Ig
dGhlIHRlc3QgcGFnZSBhbmQgdGhlIHN0YWdlIGVsZW1lbnQuCisgICAgICAgIAorICAgICAgICAq
IEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL2JlbmNobWFyay5qczogQWRkZWQuCisgICAgICAg
IChCZW5jaG1hcmtTdGF0ZSk6IFRyYWNrcyB0aGUgc3RhdGUgb2YgdGhlIGJlbmNobWFyayB0ZXN0
LgorICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBlLl90aW1lT2Zmc2V0KTogUmV0dXJu
cyB0aGUgdGltZU9mZnNldCBvZiBhIHN0YWdlLgorICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJv
dG90eXBlLl9tZXNzYWdlKTogUmV0dXJucyB0aGUgbWVzc2FnZSBvZiBhIHN0YWdlLgorICAgICAg
ICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBlLnVwZGF0ZSk6IFNldHMgdGhlIGN1cnJlbnRUaW1l
T2Zmc2V0IHRvIGEgbmV3IHZhbHVlLgorICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBl
LnNhbXBsaW5nVGltZU9mZnNldCk6IFJldHVybnMgdGhlIHRpbWVPZmZzZXQgb2YgdGhlIHNhbXBs
aW5nIHN0YWdlLgorICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBlLmN1cnJlbnRTdGFn
ZSk6IFJldHVybnMgdGhlIGN1cnJlbnQgc3RhZ2Ugb2YgdGhlIGJlbmNobWFyay4KKyAgICAgICAg
KEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5jdXJyZW50TWVzc2FnZSk6IFJldHVybnMgdGhlIG1l
c3NhZ2Ugb2YgdGhlIGN1cnJlbnQgc3RhZ2UgYW5kIHRpbWVPZmZzZXQuCisgICAgICAgIChCZW5j
aG1hcmtTdGF0ZS5wcm90b3R5cGUuY3VycmVudFByb2dyZXNzKTogUmV0dXJucyBhIHBlcmNlbnRh
Z2Ugb2YgaG93IG11Y2ggdGhlIGJlbmNobWFyayBpcyBydW5uaW5nLgorICAgICAgICAKKyAgICAg
ICAgKEFuaW1hdG9yKTogTWFuYWdlcyBhbmltYXRpbmcgdGhlIHRlc3QuCisgICAgICAgIChBbmlt
YXRvci5wcm90b3R5cGUuc3RhcnQpOiBDYWxsZWQgaWYgYW5pbWF0aW5nIHVzaW5nIHNldEludGVy
dmFsIGlzIHJlcXVlc3RlZC4KKyAgICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS50aW1lRGVsdGEp
OiBSZXR1cm5zIHRoZSBjdXJyZW50IHRpbWVEZWx0YSAKKyAgICAgICAgKEFuaW1hdG9yLnByb3Rv
dHlwZS5hbmltYXRlKTogTWFuYWdlcyB0aGUgdGVzdCBhbmltYXRpb24uCisgICAgICAgIChBbmlt
YXRvci5wcm90b3R5cGUuYW5pbWF0ZUxvb3ApOiBDYWxsZWQgaWYgYW5pbWF0aW5nIHVzaW5nIHJl
cXVlc3RBbmltYXRpb25GcmFtZSBpcyByZXF1ZXN0ZWQuIAorICAgICAgICAKKyAgICAgICAgKEJl
bmNobWFyayk6IE1hbmFnZXMgcnVubmluZyB0aGUgdGVzdCBiZW5jaG1hcmsgYW5kIHJlY29yZGlu
ZyB0aGUgc2FtcGxlZCBkYXRhLgorICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS5wYXJzZVBh
cmFtZXRlcnMpOiBQYXJzZXMgdGhlIHRlc3QgcGFyYW1ldGVycy4KKyAgICAgICAgKEJlbmNobWFy
ay5wcm90b3R5cGUuc3RhcnQpOiBTdGFydHMgdGhlIGJlbmNobWFyay4KKyAgICAgICAgKEJlbmNo
bWFyay5wcm90b3R5cGUudXBkYXRlKTogQ2FsbGVkIGZyb20gdGhlIGFuaW1hdG9yLmFuaW1hdGUo
KSB0byBjaGFuZ2UgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIHRlc3QuCisgICAgICAgIChCZW5jaG1h
cmsucHJvdG90eXBlLnJlY29yZCk6IFNob3dzIHRoZSBjdXJyZW50IChub3QgZmluYWwpIHJlc3Vs
dHMgb2YgdGhlIGJlbmNobWFyay4KKyAgICAgICAgKEJlbmNobWFyay5wcm90b3R5cGUucmVzb2x2
ZVdoZW5GaW5pc2hlZCk6IFNwaW5zIHVudGlsIHRoZSBiZW5jaG1hcmsgaXMgZmluaXNoZWQgYW5k
IHJldHVybnMgaXRzIHJlc3VsdHMuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnJ1bik6
IFN0YXJ0cyB0aGUgdGVzdCwgcnVucyBpdCwgd2FpdHMgdW50aWwgaXQgaXMgZmluaXNoZWQgYW5k
IHJldHVybiBpdHMgcmVzdWx0cy4KKyAgICAgICAgKHdpbmRvdy5ydW5CZW5jaG1hcmspOiBDYWxs
ZWQgZnJvbSB0aGUgYmVuY2htYXJrIHJ1bm5lciB0aHJvdWdoIHRoZSBzdWl0ZSBjb250cm9sbGVy
IHJ1bi1jYWxsYmFjay4gCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVz
b3VyY2VzL21hdGguanM6IEFkZGVkLgorICAgICAgICAoTWF0cml4KTogQSBtYXRyaXggb2JqZWN0
LgorICAgICAgICAoVmVjdG9yMyk6IEEgdmVjdG9yIG9mIHNpemUgMyBvYmplY3QuCisgICAgICAg
IChNYXRyaXgzKTogQSBtYXRyaXggb2Ygc2l6ZSAzeDMgb2JqZWN0LgorICAgICAgICAKKyAgICAg
ICAgKENvbnRyb2xsZXIpOiBDbG9zZWQtbG9vcCBjb250cm9sbGVyIGZvciBhIHNldC1wb2ludCB5
LgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuX3NhdCk6IExpbWl0cyB0aGUgb3V0cHV0
IHRvIGEgY2VydGFpbiByYW5nZS4KKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnR1bmUp
OiBwcm9kdWNlcyB0aGUgcGlkIGZvciB0aGUgYmVuY2htYXJrIHdoaWNoIGlzIHRyZWF0ZWQgYXMg
YSBjbG9zZWQtbG9vcCBzeXN0ZW0uCisgICAgICAgIAorICAgICAgICAoRXN0aW1hdG9yKTogSW1w
bGVtZW50IEthbG1hbiBmaWx0ZXIgdG8gZ2V0IGFuIGVzdGltYXRlIGZvciBhIHNhbXBsZWQgZGF0
YSBwb2ludC4KKyAgICAgICAgKEVzdGltYXRvci5wcm90b3R5cGUuZXN0aW1hdGUpOiBSZXR1cm5z
IGFuIGVzdGltYXRlIGZvciBmb3IgYSBzYW1wbGVkIGRhdGEgcG9pbnQuCisgICAgICAgIAorICAg
ICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKFN0YWdlKTogQSBiYXNlIGNsYXNzIGZvciBtYW5hZ2luZyB0aGUgdGVzdCBjb21wbGV4aXR5
IGFuZCB0ZXN0IGFuaW1hdGlvbi4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5zaXplKTogUmV0
dXJucyB0aGUgc2l6ZSBvZiB0aGUgc3RhZ2UgZXhjbHVkaW5nIHRoZSBDU1MgcGFkZGluZy4KKyAg
ICAgICAgKFN0YWdlLnByb3RvdHlwZS5jbGVhcik6IENsZWFycyB0aGUgc3RhZ2UgZnJvbSBhbGwg
aXRzIGFuaW1hdGlvbiBlbGVtZW50cy4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5yYW5kb20p
OiBSZXR1cm5zIGEgcmFuZG9tIGZsb2F0LgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLnJhbmRv
bUludCk6IFJldHVybnMgYSByYW5kb20gaW50ZWdlci4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlw
ZS5yYW5kb21Qb3NpdGlvbik6IFJldHVybnMgYSByYW5kb20gcG9zaXRpb24uCisgICAgICAgIChT
dGFnZS5wcm90b3R5cGUucmFuZG9tVmVsb2NpdHkpOiBSZXR1cm5zIGEgcmFuZG9tIHZlbG9jaXR5
LgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLnJhbmRvbUFuZ2xlKTogUmV0dXJucyBhIHJhbmRv
bSBhbmdsZS4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5yYW5kb21Db2xvcik6IFJldHVybnMg
YSByYW5kb20gY29sb3Igbm90IHRvbyBkYXJrIGFuZCBub3QgdG9vIGxpZ2h0LgorICAgICAgICAK
KyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy91dGlsaXRpZXMuanM6IEFkZGVk
LgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5fcGFyc2UpOiBHaXZlbiBhIHNlcGFy
YXRvciBjaGFyYWN0ZXIsIGl0IHBhcmVzZXMgYSBzdHJpbmcgdG8gYSBzZXQgb2YgPGtleSwgdmFs
dWU+IHBhaXJzLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5wYXJzZVBhcmFtZXRl
cnMpOiBQYXJzZXMgYSB0ZXN0IHBhcmFtZXRlcnMuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJr
Q2xpZW50LnBhcnNlQXJndW1lbnRzKTogUGFyc2VzIGEgdGFnIGFyZ3VtZW50cy4KKyAgICAgICAg
KHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuZXh0ZW5kT2JqZWN0KTogQWRkcyB0aGUgYXR0cmlidXRl
cyBhbmQgdGhlaXIgdmFsdWVzIG9mIGFuIG9iamVjdCB0byBhbm90aGVyIG9iamVjdC4KKyAgICAg
ICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY29weU9iamVjdCk6IENvcGllcyB0aGUgYXR0cmli
dXRlcyBhbmQgdGhlaXIgdmFsdWVzIG9mIGFuIG9iamVjdCB0byBhIG5ldyBvYmplY3QuCisgICAg
ICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50Lm1lcmdlT2JqZWN0cyk6IENvcGllcyB0aGUgYXR0
cmlidXRlcyBhbmQgdGhlaXIgdmFsdWVzIG9mIHR3byBvYmplY3RzIHRvIGEgbmV3IG9iamVjdC4K
KyAgICAgICAgKHdpbmRvdy5ydW5CZW5jaG1hcmspOiBDYWxsZWQgZnJvbSB0aGUgYmVuY2htYXJr
IHJ1bm5lciB0aHJvdWdoIHRoZSBzdWl0ZSBjb250cm9sbGVyIHJ1bi1jYWxsYmFjay4KKyAgICAg
ICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcucG5nOiBB
ZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5zdmc6
IEFkZGVkLgorICAgICAgICBJbWFnZXMgd2hpY2ggYXJlIHNoYXJlZCBieSBhbGwgdGhlIHRlc3Rz
LgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RleHQ6IEFkZGVkLgorICAg
ICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICBUaGlzIHRlc3Qgc3RhY2tzIGNvbnRhaW5lciA8ZGl2PiBlbGVtZW50cyBvbiB0b3Ag
b2YgZWFjaCBvdGhlci4gVGhlIHRlc3QKKyAgICAgICAgYWRkcyB0ZXh0IGl0ZW1zIHRvIHRvcG1v
c3QgY29udGFpbmVyIDxkaXY+IHVudGlsIGl0IGlzIGZ1bGwuIFdoZW4gaXQgaXMKKyAgICAgICAg
ZnVsbCwgYSBuZXcgY29udGFpbmVyIDxkaXY+IGlzIGNyZWF0ZWQuCisgICAgICAgIAorICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXM6IEFkZGVkLgorICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qczogQWRkZWQuCisg
ICAgICAgIChMYXllcmluZ1RleHRBbmltYXRvcik6IEEgc3ViIGNsYXNzIG9mIEFuaW1hdG9yLgor
ICAgICAgICAoTGF5ZXJpbmdUZXh0QW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBGb3JjZXMg
YSByZWRyYXcgdG8gaGFwcGVuLiBJdCBjYWxscyB0aGUgc3RhZ2UgYW5pbWF0ZSgpIGZ1bmN0aW9u
LgorICAgICAgICAKKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlKTogUmVwcmVzZW50cyB0aGUg
Y29udGFpbmVyIG9mIGFsbCB0aGUgc3RhY2tlZCB0ZXh0IGxheWVycy4KKyAgICAgICAgKExheWVy
aW5nVGV4dFN0YWdlLnBhcnNlVGV4dEl0ZW0pOiBQYXJzZXMgYSB0ZXh0SXRlbSB3aGljaCBtYXkg
YmUgYW4gb3BlbmluZyB0YWcsIGEgY2xvc2luZyB0YWcgb3IgYSBzZWxmLWNsb3NpbmcgdGFnLgor
ICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNPcGVuaW5nVGV4dEl0ZW0pOiBSZXR1cm5zIHRy
dWUgaWYgdGhlIHRleHRJdGVtIGlzIGFuIG9wZW5pbmcgdGFnIGUuZy4gJzxvbD4nLgorICAgICAg
ICAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDbG9zaW5nVGV4dEl0ZW0pOiBSZXR1cm5zIHRydWUgaWYg
IHRoZSB0ZXh0SXRlbSBpcyBhbiBjbG9zaW5nIHRhZyBlLmcuICc8L29sPi4KKyAgICAgICAgKExh
eWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzLkxheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVt
cy5tYXApOiBDYWxjdWxhdGVzIGFuZCBzdG9yZXMgaXNPcGVuaW5nIGFuZCBpc0Nsb3NpbmcgZmxh
Z3MgZm9yIGVhY2ggdGV4dEl0ZW0uCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5pc0NvbG9y
YWJsZVRleHRJdGVtKTogUmV0dXJucyB0cnVlIGlmIHRoZSB0ZXh0SXRlbSBpcyBzZWxmLWNsb3Np
bmcgdGFnIGUuZy4gJzxwPi4uLjwvcD4nLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNJ
bnNlcnRhYmxlVGV4dEl0ZW0pOiBSZXR1cm5zIHRydWUgaWYgdGhlIHRleHRJdGVtcyBjYXVzZXMg
YSBuZXcgZWxlbWVudCB0byBiZSBhZGRlZCB0byB0aGUgdGV4dCBsYXllcnMuCisgICAgICAgIChM
YXllcmluZ1RleHRTdGFnZS5jb2xvcmFibGVUZXh0SXRlbXMuTGF5ZXJpbmdUZXh0U3RhZ2UudGV4
dEl0ZW1zRmxhZ3MuZmlsdGVyKTogTnVtYmVyIG9mIGNvbG9yYWJsZSB0ZXh0SXRlbXMuCisgICAg
ICAgIChMYXllcmluZ1RleHRTdGFnZS5pbnNlcnRhYmxlVGV4dEl0ZW1zLkxheWVyaW5nVGV4dFN0
YWdlLnRleHRJdGVtc0ZsYWdzLmZpbHRlcik6IE51bWJlciBvZiBpbnNlcnRhYmxlIHRleHRJdGVt
cy4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmNvbG9ySW5kZXhUb1RleHRFbGVtZW50SW5k
ZXgpOiBNYXBzIGZyb20gY29sb3JJbmRleCBbMC4uY29sb3JhYmxlVGV4dEl0ZW1zLTFdIHRvIHRl
eHRFbGVtZW50SW5kZXggWzAuLmluc2VydGFibGVUZXh0SXRlbXMtMV0uCisgICAgICAgIChMYXll
cmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX25leHRUZXh0SXRlbSk6IE1vdmVzIHRoZSBfdGV4dEl0
ZW1JbmRleCBvbmUgc3RlcCBmb3J3YXJkIGluIGEgbG9vcCBbMC4uTGF5ZXJpbmdUZXh0U3RhZ2Uu
dGV4dEl0ZW1zLmxlbmd0aC0xXS4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlw
ZS5fcHJldmlvdXNUZXh0SXRlbSk6IE1vdmVzIHRoZSBfdGV4dEl0ZW1JbmRleCBvbmUgc3RlcCBi
YWNrd2FyZCBpbiBhIGxvb3AuCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUu
X3B1c2hUZXh0RWxlbWVudCk6IENyZWF0ZXMgYSBuZXcgdGV4dEl0ZW1FbGVtZW50IGFuZCBhZGRz
IGl0IHRvIHRoZSB0b3Btb3N0IGNvbnRhaW5lciA8ZGl2Pi4KKyAgICAgICAgKExheWVyaW5nVGV4
dFN0YWdlLnByb3RvdHlwZS5fcG9wVGV4dEVsZW1lbnQpOiBSZW1vdmVzIHRoZSBsYXN0IHRleHRJ
dGVtRWxlbWVudCBmcm9tIHRoZSB0b3Btb3N0IGNvbnRhaW5lciA8ZGl2Pi4KKyAgICAgICAgKExh
eWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fY29sb3JUZXh0SXRlbSk6IENoYW5nZXMgdGhlIGJh
Y2tncm91bmQgY29sb3Igb2YgYSBzaW5nbGUgY29sb3JhYmxlIHRleHRFbGVtZW50LiBUaGUgaW5k
ZXggYWR2YW5jZXMgaW4gYSBjaXJjbGUgWzAuLmNvbG9yYWJsZVRleHRJdGVtcy0xXS4KKyAgICAg
ICAgKExheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5hbmltYXRlKTogQ2hhbmdlcyB0aGUgYmFj
a2dyb3VuZCBjb2xvciBhbmQgdGhlIHRleHQgY29sb3Igb2YgdGhlIHRleHRFbGVtZW50cyBzdWNo
IHRoYXQgYSByZWRyYXcgaXMgZW5mb3JjZWQuCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5w
cm90b3R5cGUudHVuZSk6IEFkZHMgb3IgcmVtb3ZlcyB0ZXh0RWxlbWVudHMgdG8gdGhlIHN0YWdl
LgorICAgICAgICAKKyAgICAgICAgKExheWVyaW5nVGV4dEJlbmNobWFyayk6IFJ1bnMgdGhlIGJl
bmNobWFyayBmb3IgdGhlIGxheWVyaW5nIHRleHQgdGVzdC4KKyAgICAgICAgKExheWVyaW5nVGV4
dEJlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlw
ZSBMYXllcmluZ1RleHRTdGFnZS4KKyAgICAgICAgKExheWVyaW5nVGV4dEJlbmNobWFyay5wcm90
b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBDcmVhdGVzIGFuIGFuaW1hdG9yIG9mIHR5cGUgTGF5ZXJp
bmdUZXh0QW5pbWF0b3IuCisgICAgICAgIChMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBl
LnR1bmUpOiBUdW5lcyB0aGUgdGVzdCB0aHJvdWdoIHRoZSBjdXJyZW50IHN0YWdlLgorICAgICAg
ICAoTGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZS5jbGVhcik6IENsZWFycyB0aGUgdGVz
dCB0aHJvdWdoIHRoZSBjdXJyZW50IHN0YWdlLgorICAgICAgICAoTGF5ZXJpbmdUZXh0QmVuY2ht
YXJrLnByb3RvdHlwZS5zaG93UmVzdWx0cyk6IFNob3dzIHRoZSByZXN1bHRzL3Byb2dyZXNzIHRo
cm91Z2ggaXRzIHJlY29yZFRhYmxlIGFuZCBwcm9ncmVzc0JhcgorICAgICAgICAod2luZG93LmJl
bmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5cGUgTGF5ZXJp
bmdUZXh0QmVuY2htYXJrLgorCiAyMDE1LTA4LTI3ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0VGTF0gUkVHUkVTU0lPTihyMTg4NzkzKTogSXQgbWFk
ZSAyMDAgbGF5b3V0IHRlc3RzIGFuZCBCaW5kaW5ncy9ldmVudC10YXJnZXQtd3JhcHBlci5odG1s
IHBlcmZvcm1hbmNlIHRlc3QgZmFpbApJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Jlc291cmNlcy9hbGdvcml0aG0uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9hbGdvcml0aG0uanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2FsZ29yaXRobS5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEwMiBAQAorQXJyYXkucHJvdG90eXBlLnN3YXAgPSBmdW5jdGlvbihpLCBq
KSB7CisgICAgdmFyIHQgPSB0aGlzW2ldOworICAgIHRoaXNbaV0gPSB0aGlzW2pdOworICAgIHRo
aXNbal0gPSB0OworICAgIHJldHVybiB0aGlzOworfQorCitmdW5jdGlvbiBIZWFwKG1heFNpemUs
IGNvbXBhcmUpIHsKKyAgICB0aGlzLl9tYXhTaXplID0gbWF4U2l6ZTsKKyAgICB0aGlzLl9jb21w
YXJlID0gY29tcGFyZTsKKyAgICB0aGlzLl9zaXplID0gMDsKKyAgICB0aGlzLl92YWx1ZXMgPSBu
ZXcgQXJyYXkodGhpcy5fbWF4U2l6ZSk7Cit9CisKK0hlYXAucHJvdG90eXBlID0geworICAgIF9w
YXJlbnRJbmRleCA6IGZ1bmN0aW9uKGkpIHsKKyAgICAgICAgcmV0dXJuIGkgPiAwID8gTWF0aC5m
bG9vcigoaSAtIDEpIC8gMikgOiAtMTsKKyAgICB9LAorICAgIF9sZWZ0SW5kZXggOiBmdW5jdGlv
bihpKSB7CisgICAgICAgIHJldHVybiBpICogMiArIDEgPCB0aGlzLl9zaXplID8gaSAqIDIgKyAx
IDogLTE7CisgICAgfSwKKyAgICBfcmlnaHRJbmRleCA6IGZ1bmN0aW9uKGkpIHsKKyAgICAgICAg
cmV0dXJuIGkgKiAyICsgMiA8IHRoaXMuX3NpemUgPyBpICogMiArIDIgOiAtMTsKKyAgICB9LAor
ICAgIC8vIFJldHVybnMgdGhlIGNoaWxkIGluZGV4IHRoYXQgbWF5IHZpb2xhdGUgdGhlIGhlYXAg
cHJvcGVydHkgYXQgaW5kZXggaQorICAgIF9jaGlsZEluZGV4IDogZnVuY3Rpb24oaSkgeworICAg
ICAgICB2YXIgbCA9IHRoaXMuX2xlZnRJbmRleChpKTsKKyAgICAgICAgdmFyIHIgPSB0aGlzLl9y
aWdodEluZGV4KGkpOworCisgICAgICAgIGlmIChsICE9IC0xICYmIHIgIT0gLTEpCisgICAgICAg
ICAgICByZXR1cm4gdGhpcy5fY29tcGFyZSh0aGlzLl92YWx1ZXNbbF0sIHRoaXMuX3ZhbHVlc1ty
XSkgPiAwID8gbCA6IHI7CisgICAgICAgIAorICAgICAgICByZXR1cm4gbCAhPSAtMSA/IGwgOiBy
OworICAgIH0sCisgICAgaW5pdCA6IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLl9zaXplID0g
MDsKKyAgICB9LAorICAgIHRvcCA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gIXRoaXMu
X3NpemUgPyBOYU4gOiB0aGlzLl92YWx1ZXNbMF07CisgICAgfSwKKyAgICBwdXNoIDogZnVuY3Rp
b24odmFsdWUpIHsKKyAgICAgICAgaWYgKHRoaXMuX3NpemUgPT0gdGhpcy5fbWF4U2l6ZSkgewor
ICAgICAgICAgICAgLy8gSWYgc2l6ZSBpcyBib3VuZGVkIGFuZCB0aGUgbmV3IHZhbHVlIGNhbiBi
ZSBhIHBhcmVudCBvZiB0aGUgdG9wKCkKKyAgICAgICAgICAgIC8vIGlmIHRoZSBzaXplIHdlcmUg
dW5ib3VuZGVkLCBqdXN0IGlnbm9yZSB0aGUgbmV3IHZhbHVlLgorICAgICAgICAgICAgaWYgKHRo
aXMuX2NvbXBhcmUodmFsdWUsIHRoaXMudG9wKCkpID4gMCkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB0aGlzLnBvcCgpOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3Zh
bHVlc1t0aGlzLl9zaXplKytdID0gdmFsdWU7CisgICAgICAgIHRoaXMuX2J1YmJsZSh0aGlzLl9z
aXplIC0gMSk7CisgICAgfSwKKyAgICBwb3AgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKCF0
aGlzLl9zaXplKQorICAgICAgICAgICAgcmV0dXJuIE5hTjsKKyAgICAgICAgCisgICAgICAgIHRo
aXMuX3ZhbHVlc1swXSA9IHRoaXMuX3ZhbHVlc1stLXRoaXMuX3NpemVdOworICAgICAgICB0aGlz
Ll9zaW5rKDApOworICAgIH0sCisgICAgX2J1YmJsZSA6IGZ1bmN0aW9uKGkpIHsKKyAgICAgICAg
Ly8gRml4ZXMgdGhlIGhlYXAgcG9wZXJ0eSBhdCBpbmRleCBpIGdpdmVuIHRoYXQgcGFyZW50IGlz
IHRoZSBvbmx5IG5vZGUgdGhhdAorICAgICAgICAvLyBtYXkgdmlhbG90ZSB0aGUgaGVhcCBwcm9w
ZXJ0eS4KKyAgICAgICAgZm9yICh2YXIgcGkgPSB0aGlzLl9wYXJlbnRJbmRleChpKTsgcGkgIT0g
LTE7IGkgPSBwaSwgcGkgPSB0aGlzLl9wYXJlbnRJbmRleChwaSkpIHsKKyAgICAgICAgICAgIGlm
ICh0aGlzLl9jb21wYXJlKHRoaXMuX3ZhbHVlc1twaV0sIHRoaXMuX3ZhbHVlc1tpXSkgPiAwKQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdGhp
cy5fdmFsdWVzLnN3YXAocGksIGkpOworICAgICAgICB9CisgICAgfSwKKyAgICBfc2luayA6IGZ1
bmN0aW9uKGkpIHsKKyAgICAgICAgLy8gRml4ZXMgdGhlIGhlYXAgcG9wZXJ0eSBhdCBpbmRleCBp
IGdpdmVuIHRoYXQgZWFjaCBvZiB0aGUgbGVmdCBhbmQgdGhlIHJpZ2h0CisgICAgICAgIC8vIHN1
Yi10cmVlcyBzYXRpc2ZpZXMgdGhlIGhlYXAgcHJvcGVydHkuCisgICAgICAgIGZvciAodmFyIGNp
ID0gdGhpcy5fY2hpbGRJbmRleChpKTsgY2kgIT0gLTE7IGkgPSBjaSwgY2kgPSB0aGlzLl9jaGls
ZEluZGV4KGNpKSkgeworICAgICAgICAgICAgaWYgKHRoaXMuX2NvbXBhcmUodGhpcy5fdmFsdWVz
W2ldLCB0aGlzLl92YWx1ZXNbY2ldKSA+IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVlcy5zd2FwKGNpLCBpKTsKKyAgICAgICAg
fQorICAgIH0sCisgICAgc3RyIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBvdXQgPSAiSGVh
cFsiICsgdGhpcy5fc2l6ZSArICJdID0gWyI7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGhpcy5fc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBvdXQgKz0gdGhpcy5fdmFsdWVzW2ldOwor
ICAgICAgICAgICAgaWYgKGkgPCB0aGlzLl9zaXplIC0gMSkKKyAgICAgICAgICAgICAgICBvdXQg
Kz0gIiwgIjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gb3V0ICsgIl0iOworICAgIH0sCisg
ICAgdmFsdWVzIDogZnVuY3Rpb24oc2l6ZSkgeworICAgICAgICAvLyBSZXR1cm5zIHRoZSBsYXN0
ICJzaXplIiBoZWFwIGVsZW1lbnRzIHZhbHVlcy4KKyAgICAgICAgdmFyIHZhbHVlcyA9IHRoaXMu
X3ZhbHVlcy5zbGljZSgwLCB0aGlzLl9zaXplKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlcy5zb3J0
KHRoaXMuX2NvbXBhcmUpLnNsaWNlKDAsIE1hdGgubWluKHNpemUsIHRoaXMuX3NpemUpKTsKKyAg
ICB9Cit9CisKK3ZhciBBbGdvcml0aG0gPSB7CisgICAgY3JlYXRlTWluSGVhcCA6IGZ1bmN0aW9u
KG1heFNpemUpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBIZWFwKG1heFNpemUsIGZ1bmN0aW9uKGEs
IGIpIHsgcmV0dXJuIGIgLSBhOyB9KTsKKyAgICB9LAorICAgIGNyZWF0ZU1heEhlYXAgOiBmdW5j
dGlvbihtYXhTaXplKSB7CisgICAgICAgIHJldHVybiBuZXcgSGVhcChtYXhTaXplLCBmdW5jdGlv
bihhLCBiKSB7IHJldHVybiBhIC0gYjsgfSk7CisgICAgfQorfQpJbmRleDogUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9tYWluLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvbWFpbi5qcwkocmV2aXNpb24gMCkKKysrIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvbWFpbi5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDI0MCBAQAorZnVuY3Rpb24gUG9pbnQoeCwgeSkgeworICAgIHRoaXMueCA9
IHg7CisgICAgdGhpcy55ID0geTsKK30KKworUG9pbnQucHJvdG90eXBlID0geworICAgIC8vIFVz
ZWQgd2hlbiB0aGUgcG9pbnQgb2JqZWN0IGlzIHVzZWQgYXMgYSBzaXplIG9iamVjdAorICAgIHdp
ZHRoIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLng7CisgICAgfSwKKyAgICAv
LyBVc2VkIHdoZW4gdGhlIHBvaW50IG9iamVjdCBpcyB1c2VkIGFzIGEgc2l6ZSBvYmplY3QgICAg
CisgICAgaGVpZ2h0IDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLnk7CisgICAg
fSwKKyAgICBjZW50ZXIgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQb2ludCh0
aGlzLnggLyAyLCB0aGlzLnkgLyAyKTsKKyAgICB9LAorICAgIGFkZCA6IGZ1bmN0aW9uKG90aGVy
KSB7CisgICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy54ICsgb3RoZXIueCwgdGhpcy55ICsg
b3RoZXIueSk7CisgICAgfSwgICAgCisgICAgc3VidHJhY3QgOiBmdW5jdGlvbihvdGhlcikgewor
ICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMueCAtIG90aGVyLngsIHRoaXMueSAtIG90aGVy
LnkpOworICAgIH0sCisgICAgbXVsdGlwbHkgOiBmdW5jdGlvbihvdGhlcikgeworICAgICAgICBy
ZXR1cm4gbmV3IFBvaW50KHRoaXMueCAqIG90aGVyLngsIHRoaXMueSAqIG90aGVyLnkpOworICAg
IH0sCisgICAgbW92ZSA6IGZ1bmN0aW9uKGFuZ2xlLCB2ZWxvY2l0eSwgdGltZURlbHRhKSB7Cisg
ICAgICAgIHZhciB4ID0gdGhpcy54ICsgTWF0aC5jb3MoYW5nbGUpICogdmVsb2NpdHkgKiAodGlt
ZURlbHRhIC8gMTAwMCk7CisgICAgICAgIHZhciB5ID0gdGhpcy55ICsgTWF0aC5zaW4oYW5nbGUp
ICogdmVsb2NpdHkgKiAodGltZURlbHRhIC8gMTAwMCk7CisgICAgICAgIHJldHVybiBuZXcgUG9p
bnQoeCwgeSk7CisgICAgfQorfQorCitmdW5jdGlvbiBJbnNldHModG9wLCByaWdodCwgYm90dG9t
LCBsZWZ0KSB7CisgICAgdGhpcy50b3AgPSB0b3A7CisgICAgdGhpcy5yaWdodCA9IHJpZ2h0Owor
ICAgIHRoaXMuYm90dG9tID0gYm90dG9tOworICAgIHRoaXMubGVmdCA9IGxlZnQ7Cit9CisKK0lu
c2V0cy5wcm90b3R5cGUgPSB7CisgICAgd2lkdGggOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMubGVmdCArIHRoaXMucmlnaHQ7CisgICAgfSwKKyAgICBoZWlnaHQgOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudG9wICsgdGhpcy5ib3R0b207CisgICAgfQorfQor
CitmdW5jdGlvbiBTaW1wbGVQcm9taXNlKCkgeworICAgIHRoaXMuX2NoYWluZWRQcm9taXNlID0g
bnVsbDsKKyAgICB0aGlzLl9jYWxsYmFjayA9IG51bGw7Cit9CisKK1NpbXBsZVByb21pc2UucHJv
dG90eXBlLnRoZW4gPSBmdW5jdGlvbiAoY2FsbGJhY2spIHsKKyAgICBpZiAodGhpcy5fY2FsbGJh
Y2spCisgICAgICAgIHRocm93ICJTaW1wbGVQcm9taXNlIGRvZXNuJ3Qgc3VwcG9ydCBtdWx0aXBs
ZSBjYWxscyB0byB0aGVuIjsKKyAgICB0aGlzLl9jYWxsYmFjayA9IGNhbGxiYWNrOworICAgIHRo
aXMuX2NoYWluZWRQcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7CisgICAgCisgICAgaWYgKHRo
aXMuX3Jlc29sdmVkKQorICAgICAgICB0aGlzLnJlc29sdmUodGhpcy5fcmVzb2x2ZWRWYWx1ZSk7
CisKKyAgICByZXR1cm4gdGhpcy5fY2hhaW5lZFByb21pc2U7Cit9CisKK1NpbXBsZVByb21pc2Uu
cHJvdG90eXBlLnJlc29sdmUgPSBmdW5jdGlvbiAodmFsdWUpIHsKKyAgICBpZiAoIXRoaXMuX2Nh
bGxiYWNrKSB7CisgICAgICAgIHRoaXMuX3Jlc29sdmVkID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5f
cmVzb2x2ZWRWYWx1ZSA9IHZhbHVlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFy
IHJlc3VsdCA9IHRoaXMuX2NhbGxiYWNrKHZhbHVlKTsKKyAgICBpZiAocmVzdWx0IGluc3RhbmNl
b2YgU2ltcGxlUHJvbWlzZSkgeworICAgICAgICB2YXIgY2hhaW5lZFByb21pc2UgPSB0aGlzLl9j
aGFpbmVkUHJvbWlzZTsKKyAgICAgICAgcmVzdWx0LnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeyBj
aGFpbmVkUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7IH0pOworICAgIH0gZWxzZQorICAgICAgICB0
aGlzLl9jaGFpbmVkUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7Cit9CisKK2Z1bmN0aW9uIE9wdGlv
bnModGVzdEludGVydmFsLCBmcmFtZVJhdGUpIHsKKyAgICB0aGlzLnRlc3RJbnRlcnZhbCA9IHRl
c3RJbnRlcnZhbDsKKyAgICB0aGlzLmZyYW1lUmF0ZSA9IGZyYW1lUmF0ZTsKK30KKworZnVuY3Rp
b24gUHJvZ3Jlc3NCYXIoZWxlbWVudCwgcmFuZ2VzKSB7CisgICAgdGhpcy5lbGVtZW50ID0gZWxl
bWVudDsKKyAgICB0aGlzLnJhbmdlcyA9IHJhbmdlczsKKyAgICB0aGlzLmN1cnJlbnRSYW5nZSA9
IDA7Cit9CisKK1Byb2dyZXNzQmFyLnByb3RvdHlwZSA9IHsKKyAgICBfcHJvZ3Jlc3NUb1BlcmNl
bnQgOiBmdW5jdGlvbihwcm9ncmVzcykgeworICAgICAgICByZXR1cm4gcHJvZ3Jlc3MgKiAoMTAw
IC8gdGhpcy5yYW5nZXMpOworICAgIH0sCisgICAgaW5jUmFuZ2UgOiBmdW5jdGlvbigpIHsKKyAg
ICAgICAgKyt0aGlzLmN1cnJlbnRSYW5nZTsKKyAgICB9LAorICAgIHNldFBvcyA6IGZ1bmN0aW9u
KHByb2dyZXNzKSB7CisgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMuX3By
b2dyZXNzVG9QZXJjZW50KHRoaXMuY3VycmVudFJhbmdlICsgcHJvZ3Jlc3MpICsgIiUiOworICAg
IH0KK30KKworZnVuY3Rpb24gUmVjb3JkVGFibGUoZWxlbWVudCkgeworICAgIHRoaXMuZWxlbWVu
dCA9IGVsZW1lbnQ7CisgICAgdGhpcy5jbGVhcigpOworfQorCitSZWNvcmRUYWJsZS5wcm90b3R5
cGUgPSB7CisgICAgY2xlYXIgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5lbGVtZW50Lmlu
bmVySFRNTCA9ICIiOworICAgIH0sCisgICAgX3Nob3dUaXRsZXMgOiBmdW5jdGlvbihyb3csIHF1
ZXVlLCB0aXRsZXMsIG1lc3NhZ2UpIHsKKyAgICAgICAgZm9yICh2YXIgdGl0bGUgPSAwOyB0aXRs
ZSA8IHRpdGxlcy5sZW5ndGg7ICsrdGl0bGUpIHsKKyAgICAgICAgICAgIHZhciB0aCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInRoIik7CisgICAgICAgICAgICB0aC5pbm5lckhUTUwgPSB0aXRs
ZXNbdGl0bGVdLnRleHQ7CisgICAgICAgICAgICBpZiAodHlwZW9mIG1lc3NhZ2UgIT0gInVuZGVm
aW5lZCIgJiYgbWVzc2FnZS5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICB0aC5pbm5lckhUTUwg
Kz0gIjxicj5bIiArIG1lc3NhZ2UgKyAiXSI7CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICIi
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCJ3aWR0aCIgaW4gdGl0bGVzW3RpdGxl
XSkKKyAgICAgICAgICAgICAgICB0aC53aWR0aCA9IHRpdGxlc1t0aXRsZV0ud2lkdGggKyAiJSI7
CisgICAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGgpOworICAgICAgICAgICAgcXVldWUucHVz
aCh7ZWxlbWVudDogdGgsIHRpdGxlczogdGl0bGVzW3RpdGxlXS5jaGlsZHJlbiB9KTsKKyAgICAg
ICAgfQorICAgIH0sCisgICAgX3Nob3dIZWFkZXIgOiBmdW5jdGlvbihzdWl0ZU5hbWUsIHRpdGxl
cywgbWVzc2FnZSkgeworICAgICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
dHIiKTsKKworICAgICAgICB2YXIgcXVldWUgPSBbXTsKKyAgICAgICAgdGhpcy5fc2hvd1RpdGxl
cyhyb3csIHF1ZXVlLCB0aXRsZXMsIG1lc3NhZ2UpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQocm93KTsKKworICAgICAgICB3aGlsZSAocXVldWUubGVuZ3RoKSB7CisgICAgICAg
ICAgICB2YXIgcm93ID0gbnVsbDsKKyAgICAgICAgICAgIHZhciBsaXN0ID0gW107CisKKyAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBxdWV1ZS5sZW5ndGg7IGkgPCBsZW47ICsraSkg
eworICAgICAgICAgICAgICAgIHZhciBlbnRyeSA9IHF1ZXVlLnNoaWZ0KCk7CisKKyAgICAgICAg
ICAgICAgICBpZiAoIWVudHJ5LnRpdGxlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAg
bGlzdC5wdXNoKGVudHJ5LmVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIXJvdykKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisKKyAg
ICAgICAgICAgICAgICB0aGlzLl9zaG93VGl0bGVzKHJvdywgcXVldWUsIGVudHJ5LnRpdGxlcywg
IiIpOworICAgICAgICAgICAgICAgIGVudHJ5LmVsZW1lbnQuY29sU3BhbiA9IGVudHJ5LnRpdGxl
cy5sZW5ndGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChyb3cpIHsKKyAgICAg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQocm93KTsKKyAgICAgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAg
ICAgICsrbGlzdFtpXS5yb3dTcGFuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSwK
KyAgICBfc2hvd0VtcHR5IDogZnVuY3Rpb24ocm93LCB0ZXN0TmFtZSkgeworICAgICAgICB2YXIg
dGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICByb3cuYXBwZW5kQ2hp
bGQodGQpOworICAgIH0sCisgICAgX3Nob3dWYWx1ZSA6IGZ1bmN0aW9uKHJvdywgdGVzdE5hbWUs
IHZhbHVlKSB7CisgICAgICAgIHZhciB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7
CisgICAgICAgIHRkLnRleHRDb250ZW50ID0gdmFsdWUudG9GaXhlZCgyKTsKKyAgICAgICAgcm93
LmFwcGVuZENoaWxkKHRkKTsKKyAgICB9LAorICAgIF9zaG93U2FtcGxlcyA6IGZ1bmN0aW9uKHJv
dywgdGVzdE5hbWUsIGF4aXNlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KSB7CisgICAg
ICAgIHZhciB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgICAgIHZhciBi
dXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgYnV0dG9uLmNs
YXNzTmFtZSA9ICJzbWFsbC1idXR0b24iOworICAgICAgICAgICAgCisgICAgICAgIGJ1dHRvbi5h
ZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgd2luZG93
LnNob3dHcmFwaCh0ZXN0TmFtZSwgYXhpc2VzLCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQp
OworICAgICAgICB9KTsKKyAgICAgICAgICAgIAorICAgICAgICBidXR0b24udGV4dENvbnRlbnQg
PSAiQ2xpY2suLi4iOworICAgICAgICB0ZC5hcHBlbmRDaGlsZChidXR0b24pOworICAgICAgICBy
b3cuYXBwZW5kQ2hpbGQodGQpOworICAgIH0sCisgICAgX3Nob3dUZXN0IDogZnVuY3Rpb24odGVz
dE5hbWUsIHRpdGxlcywgc2FtcGxlciwgZmluYWxSZXN1bHRzKSB7CisgICAgICAgIHZhciByb3cg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworICAgICAgICB2YXIgdGQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICB0ZC50ZXh0Q29udGVudCA9IHRlc3ROYW1l
OworICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGQpOworICAgICAgICAKKyAgICAgICAgdmFyIGF4
aXNlcyA9IFtdOworICAgICAgICBmb3IgKHZhciBtZWFzdXJlID0gMDsgbWVhc3VyZSA8IHNhbXBs
ZXIuc3RhdGlzdGljcy5sZW5ndGg7ICsrbWVhc3VyZSkgeworICAgICAgICAgICAgdGhpcy5fc2hv
d1ZhbHVlKHJvdywgdGVzdE5hbWUsIHNhbXBsZXIuc3RhdGlzdGljc1ttZWFzdXJlXS5tZWFuKCkp
OworICAgICAgICAgICAgdGhpcy5fc2hvd1ZhbHVlKHJvdywgdGVzdE5hbWUsIHNhbXBsZXIuc3Rh
dGlzdGljc1ttZWFzdXJlXS5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSg5NSkpOworICAgICAgICAg
ICAgdGhpcy5fc2hvd1ZhbHVlKHJvdywgdGVzdE5hbWUsIHNhbXBsZXIuc3RhdGlzdGljc1ttZWFz
dXJlXS5jb25jZXJuKDUpKTsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dWYWx1ZShyb3csIHRlc3RO
YW1lLCBzYW1wbGVyLnN0YXRpc3RpY3NbbWVhc3VyZV0uc3RhbmRhcmREZXZpYXRpb24oKSk7Cisg
ICAgICAgICAgICB0aGlzLl9zaG93VmFsdWUocm93LCB0ZXN0TmFtZSwgc2FtcGxlci5zdGF0aXN0
aWNzW21lYXN1cmVdLnBlcmNlbnRhZ2UoKSk7CisgICAgICAgICAgICBheGlzZXMucHVzaCh0aXRs
ZXNbbWVhc3VyZSArIDFdLnRleHQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZpbmFsUmVz
dWx0cykKKyAgICAgICAgICAgIHRoaXMuX3Nob3dTYW1wbGVzKHJvdywgdGVzdE5hbWUsIGF4aXNl
cywgc2FtcGxlci5zYW1wbGVzLCBzYW1wbGVyLnNhbXBsaW5nVGltZU9mZnNldCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHRoaXMuX3Nob3dFbXB0eSAocm93LCB0ZXN0TmFtZSk7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChyb3cpOworICAgIH0sCisgICAgX3Nob3dTdWl0
ZSA6IGZ1bmN0aW9uKHN1aXRlLCBzdWl0ZVNhbXBsZXJzKSB7CisgICAgICAgIHZhciBzY29yZXMg
PSBbXTsgICAgICAgIAorICAgICAgICBmb3IgKHZhciB0ZXN0TmFtZSBpbiBzdWl0ZVNhbXBsZXJz
KSB7CisgICAgICAgICAgICB2YXIgdGVzdCA9IHRlc3RGcm9tTmFtZShzdWl0ZSwgdGVzdE5hbWUp
OworICAgICAgICAgICAgdmFyIHNhbXBsZXIgPSBzdWl0ZVNhbXBsZXJzW3Rlc3ROYW1lXTsgCisg
ICAgICAgICAgICB0aGlzLl9zaG93VGVzdCh0ZXN0TmFtZSwgc3VpdGUudGl0bGVzLCBzYW1wbGVy
LCB0cnVlKTsKKyAgICAgICAgICAgIHNjb3Jlcy5wdXNoKE1hdGgubWluKHNhbXBsZXIuc3RhdGlz
dGljc1swXS5tZWFuKCkgKiB0ZXN0LndlaWdodCAvIHRlc3QubWF4LCAxKSk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHNjb3JlczsKKyAgICB9LAorICAgIHNob3dSZWNvcmQgOiBmdW5jdGlv
bihzdWl0ZSwgdGVzdCwgc2FtcGxlciwgbWVzc2FnZSkgeworICAgICAgICB0aGlzLmNsZWFyKCk7
ICAgICAgICAKKyAgICAgICAgdGhpcy5fc2hvd0hlYWRlcigiIiwgc3VpdGUudGl0bGVzLCBtZXNz
YWdlKTsKKyAgICAgICAgdGhpcy5fc2hvd1Rlc3QodGVzdC5uYW1lLCBzdWl0ZS50aXRsZXMsIHNh
bXBsZXIsIGZhbHNlKTsgICAgICAgIAorICAgIH0sCisgICAgc2hvd0l0ZXJhdGlvbnMgOiBmdW5j
dGlvbihpdGVyYXRpb25zU2FtcGxlcnMpIHsKKyAgICAgICAgdGhpcy5jbGVhcigpOworCisgICAg
ICAgIHZhciBzY29yZXMgPSBbXTsKKyAgICAgICAgdmFyIHRpdGxlcyA9IG51bGw7CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcmF0aW9uc1NhbXBsZXJzLmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgICAgICBmb3IgKHZhciBzdWl0ZU5hbWUgaW4gaXRlcmF0aW9uc1NhbXBsZXJzW2ldKSB7
CisgICAgICAgICAgICAgICAgdmFyIHN1aXRlID0gc3VpdGVGcm9tTmFtZShzdWl0ZU5hbWUpOwor
ICAgICAgICAgICAgICAgIGlmICh0aXRsZXMgIT0gc3VpdGUudGl0bGVzKSB7CisgICAgICAgICAg
ICAgICAgICAgIHRpdGxlcyA9IHN1aXRlLnRpdGxlczsKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy5fc2hvd0hlYWRlcihzdWl0ZU5hbWUsIHRpdGxlcywgIiIpOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIHZhciBzdWl0ZVNjb3JlcyA9IHRoaXMuX3Nob3dTdWl0ZShzdWl0
ZSwgaXRlcmF0aW9uc1NhbXBsZXJzW2ldW3N1aXRlTmFtZV0pOworICAgICAgICAgICAgICAgIHNj
b3Jlcy5wdXNoLmFwcGx5KHNjb3Jlcywgc3VpdGVTY29yZXMpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIHZhciBzdW0gPSBzY29yZXMucmVkdWNlKGZ1bmN0aW9uKGEsIGIpIHsg
cmV0dXJuIGEgKyBiOyB9KTsKKyAgICAgICAgcmV0dXJuIHN1bSAqIDEwMCAvIHNjb3Jlcy5sZW5n
dGg7CisgICAgfQorfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNl
cy9zdGF0aXN0aWNzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE0NSBAQAorZnVuY3Rpb24gU3RhdGlzdGljKCkgeworICAgIHRoaXMuX2luaXQoKTsK
KyAgICB0aGlzLl9tYXhIZWFwID0gQWxnb3JpdGhtLmNyZWF0ZU1heEhlYXAoMTAwKTsKK30KKwor
U3RhdGlzdGljLnNhbXBsZU1lYW4gPSBmdW5jdGlvbihudW1iZXJPZlNhbXBsZXMsIHN1bSkgewor
ICAgIGlmIChudW1iZXJPZlNhbXBsZXMgPCAxKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gc3VtIC8gbnVtYmVyT2ZTYW1wbGVzOworfQorCitTdGF0aXN0aWMuc2FtcGxlU3RhbmRhcmRE
ZXZpYXRpb24gPSBmdW5jdGlvbihudW1iZXJPZlNhbXBsZXMsIHN1bSwgc3F1YXJlU3VtKSB7Cisg
ICAgaWYgKG51bWJlck9mU2FtcGxlcyA8IDIpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVy
biBNYXRoLnNxcnQoKHNxdWFyZVN1bSAtIHN1bSAqIHN1bSAvIG51bWJlck9mU2FtcGxlcykgLyAo
bnVtYmVyT2ZTYW1wbGVzIC0gMSkpIDsKK30KKworLy8gU2VlIGh0dHA6Ly9lbi53aWtpcGVkaWEu
b3JnL3dpa2kvU3R1ZGVudCdzX3QtZGlzdHJpYnV0aW9uI1RhYmxlX29mX3NlbGVjdGVkX3ZhbHVl
cworLy8gVGhpcyB0YWJsZSBjb250YWlucyBvbmUgc2lkZWQgKGEuay5hLiB0YWlsKSB2YWx1ZXMu
CitTdGF0aXN0aWMudERpc3RyaWJ1dGlvbkludmVyc2VDREYgPSB7CisgICAgMC45OiBbCisgICAg
ICAgIDMuMDc3Njg0LCAxLjg4NTYxOCwgMS42Mzc3NDQsIDEuNTMzMjA2LCAxLjQ3NTg4NCwgMS40
Mzk3NTYsIDEuNDE0OTI0LCAxLjM5NjgxNSwgMS4zODMwMjksIDEuMzcyMTg0LAorICAgICAgICAx
LjM2MzQzMCwgMS4zNTYyMTcsIDEuMzUwMTcxLCAxLjM0NTAzMCwgMS4zNDA2MDYsIDEuMzM2NzU3
LCAxLjMzMzM3OSwgMS4zMzAzOTEsIDEuMzI3NzI4LCAxLjMyNTM0MSwKKyAgICAgICAgMS4zMjMx
ODgsIDEuMzIxMjM3LCAxLjMxOTQ2MCwgMS4zMTc4MzYsIDEuMzE2MzQ1LCAxLjMxNDk3MiwgMS4z
MTM3MDMsIDEuMzEyNTI3LCAxLjMxMTQzNCwgMS4zMTA0MTUsCisgICAgICAgIDEuMzA5NDY0LCAx
LjMwODU3MywgMS4zMDc3MzcsIDEuMzA2OTUyLCAxLjMwNjIxMiwgMS4zMDU1MTQsIDEuMzA0ODU0
LCAxLjMwNDIzMCwgMS4zMDM2MzksIDEuMzAzMDc3LAorICAgICAgICAxLjMwMjU0MywgMS4zMDIw
MzUsIDEuMzAxNTUyLCAxLjMwMTA5MCwgMS4zMDA2NDksIDEuMzAwMjI4LCAxLjI5OTgyNSwgMS4y
OTk0MzksIDEuMjk5MDY5LCAxLjI5ODcxNCwKKworICAgICAgICAxLjI5ODM3MywgMS4yOTgwNDUs
IDEuMjk3NzMwLCAxLjI5NzQyNiwgMS4yOTcxMzQsIDEuMjk2ODUzLCAxLjI5NjU4MSwgMS4yOTYz
MTksIDEuMjk2MDY2LCAxLjI5NTgyMSwKKyAgICAgICAgMS4yOTU1ODUsIDEuMjk1MzU2LCAxLjI5
NTEzNCwgMS4yOTQ5MjAsIDEuMjk0NzEyLCAxLjI5NDUxMSwgMS4yOTQzMTUsIDEuMjk0MTI2LCAx
LjI5Mzk0MiwgMS4yOTM3NjMsCisgICAgICAgIDEuMjkzNTg5LCAxLjI5MzQyMSwgMS4yOTMyNTYs
IDEuMjkzMDk3LCAxLjI5Mjk0MSwgMS4yOTI3OTAsIDEuMjkyNjQzLCAxLjI5MjUwMCwgMS4yOTIz
NjAsIDEuMjkyMjI0LAorICAgICAgICAxLjI5MjA5MSwgMS4yOTE5NjEsIDEuMjkxODM1LCAxLjI5
MTcxMSwgMS4yOTE1OTEsIDEuMjkxNDczLCAxLjI5MTM1OCwgMS4yOTEyNDYsIDEuMjkxMTM2LCAx
LjI5MTAyOSwKKyAgICAgICAgMS4yOTA5MjQsIDEuMjkwODIxLCAxLjI5MDcyMSwgMS4yOTA2MjMs
IDEuMjkwNTI3LCAxLjI5MDQzMiwgMS4yOTAzNDAsIDEuMjkwMjUwLCAxLjI5MDE2MSwgMS4yOTAw
NzVdLAorICAgIDAuOTU6IFsKKyAgICAgICAgNi4zMTM3NTIsIDIuOTE5OTg2LCAyLjM1MzM2Mywg
Mi4xMzE4NDcsIDIuMDE1MDQ4LCAxLjk0MzE4MCwgMS44OTQ1NzksIDEuODU5NTQ4LCAxLjgzMzEx
MywgMS44MTI0NjEsCisgICAgICAgIDEuNzk1ODg1LCAxLjc4MjI4OCwgMS43NzA5MzMsIDEuNzYx
MzEwLCAxLjc1MzA1MCwgMS43NDU4ODQsIDEuNzM5NjA3LCAxLjczNDA2NCwgMS43MjkxMzMsIDEu
NzI0NzE4LAorICAgICAgICAxLjcyMDc0MywgMS43MTcxNDQsIDEuNzEzODcyLCAxLjcxMDg4Miwg
MS43MDgxNDEsIDEuNzA1NjE4LCAxLjcwMzI4OCwgMS43MDExMzEsIDEuNjk5MTI3LCAxLjY5NzI2
MSwKKyAgICAgICAgMS42OTU1MTksIDEuNjkzODg5LCAxLjY5MjM2MCwgMS42OTA5MjQsIDEuNjg5
NTcyLCAxLjY4ODI5OCwgMS42ODcwOTQsIDEuNjg1OTU0LCAxLjY4NDg3NSwgMS42ODM4NTEsCisg
ICAgICAgIDEuNjgyODc4LCAxLjY4MTk1MiwgMS42ODEwNzEsIDEuNjgwMjMwLCAxLjY3OTQyNywg
MS42Nzg2NjAsIDEuNjc3OTI3LCAxLjY3NzIyNCwgMS42NzY1NTEsIDEuNjc1OTA1LAorCisgICAg
ICAgIDEuNjc1Mjg1LCAxLjY3NDY4OSwgMS42NzQxMTYsIDEuNjczNTY1LCAxLjY3MzAzNCwgMS42
NzI1MjIsIDEuNjcyMDI5LCAxLjY3MTU1MywgMS42NzEwOTMsIDEuNjcwNjQ5LAorICAgICAgICAx
LjY3MDIxOSwgMS42Njk4MDQsIDEuNjY5NDAyLCAxLjY2OTAxMywgMS42Njg2MzYsIDEuNjY4Mjcx
LCAxLjY2NzkxNiwgMS42Njc1NzIsIDEuNjY3MjM5LCAxLjY2NjkxNCwKKyAgICAgICAgMS42NjY2
MDAsIDEuNjY2Mjk0LCAxLjY2NTk5NiwgMS42NjU3MDcsIDEuNjY1NDI1LCAxLjY2NTE1MSwgMS42
NjQ4ODUsIDEuNjY0NjI1LCAxLjY2NDM3MSwgMS42NjQxMjUsCisgICAgICAgIDEuNjYzODg0LCAx
LjY2MzY0OSwgMS42NjM0MjAsIDEuNjYzMTk3LCAxLjY2Mjk3OCwgMS42NjI3NjUsIDEuNjYyNTU3
LCAxLjY2MjM1NCwgMS42NjIxNTUsIDEuNjYxOTYxLAorICAgICAgICAxLjY2MTc3MSwgMS42NjE1
ODUsIDEuNjYxNDA0LCAxLjY2MTIyNiwgMS42NjEwNTIsIDEuNjYwODgxLCAxLjY2MDcxNSwgMS42
NjA1NTEsIDEuNjYwMzkxLCAxLjY2MDIzNF0sCisgICAgMC45NzU6IFsKKyAgICAgICAgMTIuNzA2
MjA1LCA0LjMwMjY1MywgMy4xODI0NDYsIDIuNzc2NDQ1LCAyLjU3MDU4MiwgMi40NDY5MTIsIDIu
MzY0NjI0LCAyLjMwNjAwNCwgMi4yNjIxNTcsIDIuMjI4MTM5LAorICAgICAgICAyLjIwMDk4NSwg
Mi4xNzg4MTMsIDIuMTYwMzY5LCAyLjE0NDc4NywgMi4xMzE0NTAsIDIuMTE5OTA1LCAyLjEwOTgx
NiwgMi4xMDA5MjIsIDIuMDkzMDI0LCAyLjA4NTk2MywKKyAgICAgICAgMi4wNzk2MTQsIDIuMDcz
ODczLCAyLjA2ODY1OCwgMi4wNjM4OTksIDIuMDU5NTM5LCAyLjA1NTUyOSwgMi4wNTE4MzEsIDIu
MDQ4NDA3LCAyLjA0NTIzMCwgMi4wNDIyNzIsCisgICAgICAgIDIuMDM5NTEzLCAyLjAzNjkzMywg
Mi4wMzQ1MTUsIDIuMDMyMjQ1LCAyLjAzMDEwOCwgMi4wMjgwOTQsIDIuMDI2MTkyLCAyLjAyNDM5
NCwgMi4wMjI2OTEsIDIuMDIxMDc1LAorICAgICAgICAyLjAxOTU0MSwgMi4wMTgwODIsIDIuMDE2
NjkyLCAyLjAxNTM2OCwgMi4wMTQxMDMsIDIuMDEyODk2LCAyLjAxMTc0MSwgMi4wMTA2MzUsIDIu
MDA5NTc1LCAyLjAwODU1OSwKKworICAgICAgICAyLjAwNzU4NCwgMi4wMDY2NDcsIDIuMDA1NzQ2
LCAyLjAwNDg3OSwgMi4wMDQwNDUsIDIuMDAzMjQxLCAyLjAwMjQ2NSwgMi4wMDE3MTcsIDIuMDAw
OTk1LCAyLjAwMDI5OCwKKyAgICAgICAgMS45OTk2MjQsIDEuOTk4OTcyLCAxLjk5ODM0MSwgMS45
OTc3MzAsIDEuOTk3MTM4LCAxLjk5NjU2NCwgMS45OTYwMDgsIDEuOTk1NDY5LCAxLjk5NDk0NSwg
MS45OTQ0MzcsCisgICAgICAgIDEuOTkzOTQzLCAxLjk5MzQ2NCwgMS45OTI5OTcsIDEuOTkyNTQz
LCAxLjk5MjEwMiwgMS45OTE2NzMsIDEuOTkxMjU0LCAxLjk5MDg0NywgMS45OTA0NTAsIDEuOTkw
MDYzLAorICAgICAgICAxLjk4OTY4NiwgMS45ODkzMTksIDEuOTg4OTYwLCAxLjk4ODYxMCwgMS45
ODgyNjgsIDEuOTg3OTM0LCAxLjk4NzYwOCwgMS45ODcyOTAsIDEuOTg2OTc5LCAxLjk4NjY3NSwK
KyAgICAgICAgMS45ODYzNzcsIDEuOTg2MDg2LCAxLjk4NTgwMiwgMS45ODU1MjMsIDEuOTg1MjUx
LCAxLjk4NDk4NCwgMS45ODQ3MjMsIDEuOTg0NDY3LCAxLjk4NDIxNywgMS45ODM5NzJdLAorICAg
IDAuOTk6IFsKKyAgICAgICAgMzEuODIwNTE2LCA2Ljk2NDU1NywgNC41NDA3MDMsIDMuNzQ2OTQ3
LCAzLjM2NDkzMCwgMy4xNDI2NjgsIDIuOTk3OTUyLCAyLjg5NjQ1OSwgMi44MjE0MzgsIDIuNzYz
NzY5LAorICAgICAgICAyLjcxODA3OSwgMi42ODA5OTgsIDIuNjUwMzA5LCAyLjYyNDQ5NCwgMi42
MDI0ODAsIDIuNTgzNDg3LCAyLjU2NjkzNCwgMi41NTIzODAsIDIuNTM5NDgzLCAyLjUyNzk3NywK
KyAgICAgICAgMi41MTc2NDgsIDIuNTA4MzI1LCAyLjQ5OTg2NywgMi40OTIxNTksIDIuNDg1MTA3
LCAyLjQ3ODYzMCwgMi40NzI2NjAsIDIuNDY3MTQwLCAyLjQ2MjAyMSwgMi40NTcyNjIsCisgICAg
ICAgIDIuNDUyODI0LCAyLjQ0ODY3OCwgMi40NDQ3OTQsIDIuNDQxMTUwLCAyLjQzNzcyMywgMi40
MzQ0OTQsIDIuNDMxNDQ3LCAyLjQyODU2OCwgMi40MjU4NDEsIDIuNDIzMjU3LAorICAgICAgICAy
LjQyMDgwMywgMi40MTg0NzAsIDIuNDE2MjUwLCAyLjQxNDEzNCwgMi40MTIxMTYsIDIuNDEwMTg4
LCAyLjQwODM0NSwgMi40MDY1ODEsIDIuNDA0ODkyLCAyLjQwMzI3MiwKKworICAgICAgICAyLjQw
MTcxOCwgMi40MDAyMjUsIDIuMzk4NzkwLCAyLjM5NzQxMCwgMi4zOTYwODEsIDIuMzk0ODAxLCAy
LjM5MzU2OCwgMi4zOTIzNzcsIDIuMzkxMjI5LCAyLjM5MDExOSwKKyAgICAgICAgMi4zODkwNDcs
IDIuMzg4MDExLCAyLjM4NzAwOCwgMi4zODYwMzcsIDIuMzg1MDk3LCAyLjM4NDE4NiwgMi4zODMz
MDIsIDIuMzgyNDQ2LCAyLjM4MTYxNSwgMi4zODA4MDcsCisgICAgICAgIDIuMzgwMDI0LCAyLjM3
OTI2MiwgMi4zNzg1MjIsIDIuMzc3ODAyLCAyLjM3NzEwMiwgMi4zNzY0MjAsIDIuMzc1NzU3LCAy
LjM3NTExMSwgMi4zNzQ0ODIsIDIuMzczODY4LAorICAgICAgICAyLjM3MzI3MCwgMi4zNzI2ODcs
IDIuMzcyMTE5LCAyLjM3MTU2NCwgMi4zNzEwMjIsIDIuMzcwNDkzLCAyLjM2OTk3NywgMi4zNjk0
NzIsIDIuMzY4OTc5LCAyLjM2ODQ5NywKKyAgICAgICAgMi4zNjgwMjYsIDIuMzY3NTY2LCAyLjM2
NzExNSwgMi4zNjY2NzQsIDIuMzY2MjQzLCAyLjM2NTgyMSwgMi4zNjU0MDcsIDIuMzY1MDAyLCAy
LjM2NDYwNiwgMi4zNjQyMTddCit9OworCitTdGF0aXN0aWMucHJvdG90eXBlID0geworICAgIF9p
bml0IDogZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuX3N1bSA9IDA7CisgICAgICAgIHRoaXMu
X3NxdWFyZVN1bSA9IDA7CisgICAgICAgIHRoaXMuX251bWJlck9mU2FtcGxlcyA9IDA7CisgICAg
fSwKKyAgICAvLyBDYWxsZWQgYWZ0ZXIgYSB3YXJtLXVwIHBlcmlvZAorICAgIHN0YXJ0U2FtcGxp
bmcgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIG1lYW4gPSB0aGlzLm1lYW4oKTsKKyAgICAg
ICAgdGhpcy5faW5pdCgpOworICAgICAgICB0aGlzLl9tYXhIZWFwLmluaXQoKTsKKyAgICAgICAg
dGhpcy5zYW1wbGUobWVhbik7CisgICAgfSwKKyAgICBzYW1wbGUgOiBmdW5jdGlvbih2YWx1ZSkg
eworICAgICAgICB0aGlzLl9zdW0gKz0gdmFsdWU7CisgICAgICAgIHRoaXMuX3NxdWFyZVN1bSAr
PSB2YWx1ZSAqIHZhbHVlOworICAgICAgICB0aGlzLl9tYXhIZWFwLnB1c2godmFsdWUpOworICAg
ICAgICArK3RoaXMuX251bWJlck9mU2FtcGxlczsKKyAgICB9LAorICAgIG1lYW4gOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgcmV0dXJuIFN0YXRpc3RpYy5zYW1wbGVNZWFuKHRoaXMuX251bWJlck9m
U2FtcGxlcywgdGhpcy5fc3VtKTsKKyAgICB9LAorICAgIHN0YW5kYXJkRGV2aWF0aW9uIDogZnVu
Y3Rpb24oKSB7CisgICAgICAgIHJldHVybiBTdGF0aXN0aWMuc2FtcGxlU3RhbmRhcmREZXZpYXRp
b24odGhpcy5fbnVtYmVyT2ZTYW1wbGVzLCB0aGlzLl9zdW0sIHRoaXMuX3NxdWFyZVN1bSk7Cisg
ICAgfSwKKyAgICBwZXJjZW50YWdlIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBtZWFuID0g
dGhpcy5tZWFuKCk7CisgICAgICAgIHJldHVybiBtZWFuID8gdGhpcy5zdGFuZGFyZERldmlhdGlv
bigpICogMTAwIC8gbWVhbiA6IDA7CisgICAgfSwKKyAgICBjb25maWRlbmNlSW50ZXJ2YWxEZWx0
YSA6IGZ1bmN0aW9uKGNvbmZpZGVuY2VMZXZlbCkgeworICAgICAgICBpZiAodGhpcy5fbnVtYmVy
T2ZTYW1wbGVzIDwgMikKKyAgICAgICAgICAgIHJldHVybiBOYU47CisgICAgICAgIAorICAgICAg
ICB2YXIgcHJvYmFiaWxpdHkgPSAoMTAwIC0gMiAqICgxMDAgLSBjb25maWRlbmNlTGV2ZWwpKSAv
IDEwMDsKKyAgICAgICAgaWYgKCEocHJvYmFiaWxpdHkgaW4gU3RhdGlzdGljLnREaXN0cmlidXRp
b25JbnZlcnNlQ0RGKSkKKyAgICAgICAgICAgIHRocm93ICdVbnN1cHBvcnRlZCBjb25maWRlbmNl
IGxldmVsJzsKKworICAgICAgICB2YXIgY2RmRm9yUHJvYmFiaWxpdHkgPSBTdGF0aXN0aWMudERp
c3RyaWJ1dGlvbkludmVyc2VDREZbcHJvYmFiaWxpdHldOworICAgICAgICB2YXIgZGVncmVlc09m
RnJlZWRvbSA9IE1hdGgubWluKHRoaXMuX251bWJlck9mU2FtcGxlcyAtIDEsIGNkZkZvclByb2Jh
YmlsaXR5Lmxlbmd0aCk7CisgICAgICAgIAorICAgICAgICB2YXIgcXVhbnRpbGUgPSBjZGZGb3JQ
cm9iYWJpbGl0eVtkZWdyZWVzT2ZGcmVlZG9tIC0gMV07IC8vIFRoZSBmaXJzdCBlbnRyeSBpcyBm
b3IgdGhlIG9uZSBkZWdyZWUgb2YgZnJlZWRvbS4KKyAgICAgICAgcmV0dXJuIHF1YW50aWxlICog
U3RhdGlzdGljLnNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uKHRoaXMuX251bWJlck9mU2FtcGxlcywg
dGhpcy5fc3VtLCB0aGlzLl9zcXVhcmVTdW0pIC8gTWF0aC5zcXJ0KHRoaXMuX251bWJlck9mU2Ft
cGxlcyk7CisgICAgfSwKKyAgICBjb25jZXJuIDogZnVuY3Rpb24ocGVyY2VudGFnZSkgeworICAg
ICAgICB2YXIgc2l6ZSA9IHRoaXMuX251bWJlck9mU2FtcGxlcyAqIHBlcmNlbnRhZ2UgLyAxMDA7
CisgICAgICAgIHZhciB2YWx1ZXMgPSB0aGlzLl9tYXhIZWFwLnZhbHVlcyhzaXplKTsKKyAgICAg
ICAgcmV0dXJuIHZhbHVlcy5sZW5ndGggPyB2YWx1ZXMucmVkdWNlKGZ1bmN0aW9uKGEsIGIpIHsg
cmV0dXJuIGEgKyBiOyB9KSAvIHZhbHVlcy5sZW5ndGggOiAwOworICAgIH0KK30KKworZnVuY3Rp
b24gU2FtcGxlcihjb3VudCkgeworICAgIHRoaXMuc3RhdGlzdGljcyA9IFtdOworICAgIHdoaWxl
IChjb3VudC0tKQorICAgICAgICB0aGlzLnN0YXRpc3RpY3MucHVzaChuZXcgU3RhdGlzdGljKTsK
KyAgICB0aGlzLnNhbXBsZXMgPSBbXTsKKyAgICB0aGlzLnNhbXBsaW5nVGltZU9mZnNldCA9IDA7
Cit9CisKK1NhbXBsZXIucHJvdG90eXBlID0geworICAgIHN0YXJ0U2FtcGxpbmcgOiBmdW5jdGlv
bih0aW1lT2Zmc2V0KSB7CisgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlz
LnN0YXRpc3RpY3MubGVuZ3RoOyArK2luZGV4KQorICAgICAgICAgICAgdGhpcy5zdGF0aXN0aWNz
W2luZGV4XS5zdGFydFNhbXBsaW5nKCk7CisgICAgICAgICAgICAKKyAgICAgICAgdGhpcy5zYW1w
bGluZ1RpbWVPZmZzZXQgPSB0aW1lT2Zmc2V0IC8gMTAwMDsKKyAgICB9LAorICAgIHNhbXBsZSA6
IGZ1bmN0aW9uKHRpbWVPZmZzZXQsIHZhbHVlcykgeworICAgICAgICBpZiAodmFsdWVzLmxlbmd0
aCA8IHRoaXMuc3RhdGlzdGljcy5sZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAiTm90IGVub3Vn
aCBzYW1wbGUgcG9pbnRzIjsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGZvciAodmFy
IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLnN0YXRpc3RpY3MubGVuZ3RoOyArK2luZGV4KQorICAg
ICAgICAgICAgdGhpcy5zdGF0aXN0aWNzW2luZGV4XS5zYW1wbGUodmFsdWVzW2luZGV4XSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgdGhpcy5zYW1wbGVzLnB1c2goeyB0aW1lT2Zmc2V0OiB0aW1l
T2Zmc2V0IC8gMTAwMCwgdmFsdWVzOiB2YWx1ZXMgfSk7CisgICAgfQorfQpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL2FuaW1vbWV0
ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2Vz
L2FuaW1vbWV0ZXIuY3NzIj4KKyAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFy
ZS5jb20vYWpheC9saWJzL2QzLzMuNS41L2QzLm1pbi5qcyIgZGVmZXI+PC9zY3JpcHQ+ICAKKyAg
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIiBkZWZlcj48L3NjcmlwdD4g
IAorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiIGRlZmVyPjwvc2NyaXB0Pgor
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3RzLmpzIiBkZWZlcj0iIj48L3NjcmlwdD4KKyAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzIiBkZWZlcj48L3Njcmlw
dD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9hbmltb21ldGVyLmpzIiBkZWZlcj48L3Njcmlw
dD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ncmFwaC5qcyIgZGVmZXI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKyAgPG1haW4+CisgICAgPHNlY3Rpb24gaWQ9ImhvbWUiIGNsYXNzPSJz
ZWxlY3RlZCI+CisgICAgICA8cD4KKyAgICAgICAgQW5pbW9tZXRlciBpcyBhIGJyb3dzZXIgYmVu
Y2htYXJrIHRoYXQgbWVhc3VyZXMgdGhlIGNvbXBsZXhpdHkgb2YgYW4gYW5pbWF0aW9uIGZvcgor
ICAgICAgICB3aGljaCBhIGJyb3dzZXIgY2FuIGFjaGlldmUgNTAgRlBTIChmcmFtZSBwZXIgc2Vj
b25kKS4gSXQgdXNlcyBhZGFwdGl2ZSBhbmltYXRpb25zCisgICAgICAgIHRvIHR1bmUgdGhlaXIg
Y29tcGxleGl0aWVzIHRvIHN0YXkgY2xvc2UgdG8gNTAgRlBTLgorICAgICAgPC9wPgorICAgICAg
PGRpdiBjbGFzcz0ib3B0aW9ucyI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbHVtbiI+CisgICAg
ICAgICAgPGxhYmVsPjxpbnB1dCBpZD0iaHRtbC1zdWl0ZSIgdHlwZT0iY2hlY2tib3giIGNoZWNr
ZWQ+IEhUTUwgZWxlbWVudHMgc3VpdGU8L2xhYmVsPjxicj4KKyAgICAgICAgICA8bGFiZWw+PGlu
cHV0IGlkPSJjYW52YXMtc3VpdGUiIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPiBDYW52YXMgZHJh
d2luZ3Mgc3VpdGU8L2xhYmVsPjxicj4KKyAgICAgICAgICA8bGFiZWw+PGlucHV0IGlkPSJzdmct
c3VpdGUiIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPiBTVkcgZWxlbWVudHMgc3VpdGU8L2xhYmVs
PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdj4KKyAgICAgICAgICA8bGFiZWw+VGVzdCBp
bnRlcnZhbDogPGlucHV0IGlkPSJ0ZXN0LWludGVydmFsIiB0eXBlPSJudW1iZXIiIHZhbHVlPSIz
MCI+IHNlY29uZHM8L2xhYmVsPjxicj4KKyAgICAgICAgICA8bGFiZWw+RnJhbWUgcmF0ZTogPGlu
cHV0IGlkPSJmcmFtZS1yYXRlIiB0eXBlPSJudW1iZXIiIHZhbHVlPSI1MCI+IGZwczwvbGFiZWw+
PGJyPgorICAgICAgICAgIDxsYWJlbD48aW5wdXQgaWQ9ImVzdGltYXRlZC1mcmFtZS1yYXRlIiB0
eXBlPSJjaGVja2JveCIgY2hlY2tlZD4gRXN0aW1hdGVkIEZyYW1lIFJhdGU8L2xhYmVsPjxicj4K
KyAgICAgICAgICA8bGFiZWw+PGlucHV0IGlkPSJmaXgtdGVzdC1jb21wbGV4aXR5IiB0eXBlPSJj
aGVja2JveCI+IEZpeCB0ZXN0IGNvbXBsZXhpdHkgYWZ0ZXIgd2FybXVwPC9sYWJlbD4KKyAgICAg
ICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbnMiPgorICAg
ICAgICA8YnV0dG9uIG9uY2xpY2s9InN0YXJ0VGVzdCgpIj5TdGFydCBUZXN0PC9idXR0b24+Cisg
ICAgICA8L2Rpdj4KKyAgICA8L3NlY3Rpb24+CisgICAgPHNlY3Rpb24gaWQ9InJ1bm5pbmciPgor
ICAgICAgPGRpdiBpZD0idGVzdENvbnRhaW5lciI+PC9kaXY+CisgICAgICA8ZGl2IGlkPSJwcm9n
cmVzcyI+CisgICAgICAgIDxkaXYgaWQ9InByb2dyZXNzLWNvbXBsZXRlZCI+PC9kaXY+CisgICAg
ICA8L2Rpdj4KKyAgICAgIDxkaXYgaWQ9InJlY29yZCI+CisgICAgICAgIDx0YWJsZSBjbGFzcz0i
cmVjb3JkLXRhYmxlIj48L3RhYmxlPgorICAgICAgPC9kaXY+CisgICAgPC9zZWN0aW9uPgorICAg
IDxzZWN0aW9uIGlkPSJyZXN1bHRzIj4KKyAgICAgIDxoMT5SZXN1bHRzPC9oMT4KKyAgICAgIDx0
YWJsZSBjbGFzcz0icmVzdWx0cy10YWJsZSI+PC90YWJsZT4KKyAgICAgIDxkaXYgY2xhc3M9ImJ1
dHRvbnMiPgorICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InN0YXJ0VGVzdCgpIj5UZXN0IEFnYWlu
PC9idXR0b24+CisgICAgICA8L2Rpdj4KKyAgICA8L3NlY3Rpb24+ICAKKyAgICA8c2VjdGlvbiBp
ZD0iZ3JhcGgiPgorICAgICAgPGgxPkdyYXBoPC9oMT4KKyAgICAgIDxkaXYgaWQ9ImdyYXBoQ29u
dGFpbmVyIj48L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbnMiPgorICAgICAgICA8YnV0
dG9uIG9uY2xpY2s9InNob3dSZXN1bHRzKCkiPlJlc3VsdHM8L2J1dHRvbj4KKyAgICAgICAgPGJ1
dHRvbiBvbmNsaWNrPSJzdGFydFRlc3QoKSI+VGVzdCBBZ2FpbjwvYnV0dG9uPiAgICAgICAgCisg
ICAgICA8L2Rpdj4KKyAgICA8L3NlY3Rpb24+ICAKKyAgPC9tYWluPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5p
bW9tZXRlci5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1
bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5jc3MJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDIxNCBAQAorYm9keSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
cmdiKDk2LCA5NiwgOTYpOworICAgIGNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7CisgICAgZm9u
dC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgVmVyZGFuYSwgc2Fucy1zZXJp
ZjsKK30KKworbWFpbiB7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIHdpZHRoOiA4MDBweDsKKyAgICBoZWlnaHQ6IDYwMHB4OworICAgIHRvcDogNTAl
OworICAgIGxlZnQ6IDUwJTsKKyAgICBtYXJnaW4tdG9wOiAtMzIxcHg7CisgICAgbWFyZ2luLWxl
ZnQ6IC00MjFweDsKKyAgICBwYWRkaW5nOiAxNXB4OworICAgIGJvcmRlcjogNnB4IHNvbGlkIHJn
YigyMzUsIDIzNSwgMjM1KTsKKyAgICBib3JkZXItcmFkaXVzOiAyMHB4OworfQorCitsYWJlbCwg
cCB7CisgICAgZm9udC1zaXplOiAxNnB4OworICAgIGxpbmUtaGVpZ2h0OiAyMXB4OworfQorCitz
ZWN0aW9uIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCitzZWN0aW9uID4gcCB7CisgICAgbWFy
Z2luOiAxMHB4IDIwcHg7Cit9CisKK3NlY3Rpb24jaG9tZSA+IHAgeworICAgIG1hcmdpbjogMCBh
dXRvOworICAgIHdpZHRoOiA3MCU7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworfQorCitzZWN0
aW9uI2hvbWUgPiBwOmZpcnN0LWNoaWxkIHsKKyAgICBtYXJnaW4tdG9wOiAxNjBweDsKKyAgICB0
ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKK3NlY3Rpb24uc2VsZWN0ZWQgeworICAgIGRpc3BsYXk6
IGJsb2NrOworfQorCisjdGVzdENvbnRhaW5lciB7CisgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgIHRvcDogMTVweDsKKyAgICBsZWZ0OiAxNXB4OworICAgIHdpZHRoOiA4MDBweDsKKyAgICBo
ZWlnaHQ6IDYwMHB4OworfQorCitzZWN0aW9uI3J1bm5pbmcgPiAjcHJvZ3Jlc3MgeworICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBib3R0b206IC02cHg7CisgICAgbGVmdDogNjBweDsKKyAg
ICByaWdodDogNjBweDsKKyAgICBoZWlnaHQ6IDZweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2IoMTI4LCAxMjgsIDEyOCk7CisgICAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCByZ2IoNDYsIDUx
LCA1NSk7CisgICAgYm9yZGVyLXJpZ2h0OiA2cHggc29saWQgcmdiKDQ2LCA1MSwgNTUpOworfQor
CitzZWN0aW9uI3J1bm5pbmcgI3Byb2dyZXNzLWNvbXBsZXRlZCB7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAgIGhlaWdodDogNnB4OworICAg
IHdpZHRoOiAwOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzUsIDIzNSwgMjM1KTsKK30K
Kworc2VjdGlvbiNydW5uaW5nID4gI3JlY29yZCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgIGJvdHRvbTogLTEzMHB4OworICAgIGxlZnQ6IDBweDsKKyAgICByaWdodDogMHB4OworICAg
IGhlaWdodDogNzVweDsKKyAgICBjb2xvcjogcmdiKDEyOCwgMTI4LCAxMjgpOworICAgIHBhZGRp
bmc6IDE1cHg7CisgICAgYm9yZGVyOiA2cHggc29saWQgcmdiKDIzNSwgMjM1LCAyMzUpOworICAg
IGJvcmRlci1yYWRpdXM6IDIwcHg7Cit9CisKK3NlY3Rpb24jcnVubmluZyA+ICNyZWNvcmQgPiB0
YWJsZSwKK3NlY3Rpb24jcmVzdWx0cyA+IHRhYmxlIHsKKyAgICB3aWR0aDogMTAwJTsKK30KKwor
c2VjdGlvbiNydW5uaW5nID4gI3JlY29yZCA+IHRhYmxlIHRkLCB0aCwKK3NlY3Rpb24jcmVzdWx0
cyA+IHRhYmxlIHRkLCB0aCB7CisgICAgZm9udC1zaXplOiA5cHg7CisgICAgYm9yZGVyOiAxcHgg
c29saWQgIzk4YmYyMTsKKyAgICBwYWRkaW5nOiAycHggNHB4IDJweCA0cHg7Cit9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitzZWN0aW9uI3J1bm5pbmcgPiAj
cmVjb3JkID4gdGFibGUgdHIuYWx0LCB0ZAorc2VjdGlvbiNyZXN1bHRzID4gdGFibGUgdHIuYWx0
LCB0ZCB7CisgICAgY29sb3I6ICMwMDAwMDA7CisgICAgYmFja2dyb3VuZC1jb2xvcjogI0VBRjJE
MzsKK30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorc2Vj
dGlvbiNydW5uaW5nID4gI3JlY29yZCA+IHRhYmxlIHRoLAorc2VjdGlvbiNyZXN1bHRzID4gdGFi
bGUgdGggeworICAgIGJhY2tncm91bmQtY29sb3I6ICNBN0M5NDI7IAorICAgIHRleHQtYWxpZ246
IGNlbnRlcjsKK30KKworLm9wdGlvbnMgeworICAgIG1hcmdpbjowIGF1dG87ICAgIAorICAgIG1h
cmdpbi10b3A6IDMwcHg7CisgICAgd2lkdGg6IDUwMHB4OworICAgIGFsaWduOiBjZW50ZXI7Cit9
CisKKy5jb2x1bW4geworICAgIHdpZHRoOiA0NSU7CisgICAgZmxvYXQ6bGVmdDsKKyAgICBoZWln
aHQ6IDEyMHB4OworICAgIHBhZGRpbmc6NXB4OworfQorCitpbnB1dFt0eXBlPSJudW1iZXIiXSB7
CisgICB3aWR0aDo1MHB4OworfQorCisuYnV0dG9ucyB7CisgICAgbWFyZ2luLXRvcDogMTBweDsK
KyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgY2xlYXI6IGJvdGg7Cit9CisKK2J1dHRvbiB7
CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgIGJvcmRlcjogM3B4IHNvbGlkIHJn
YigyMzUsIDIzNSwgMjM1KTsKKyAgICBib3JkZXItcmFkaXVzOiAxMHB4OworICAgIG1pbi13aWR0
aDogMjAwcHg7CisgICAgcGFkZGluZzogNXB4IDIwcHg7CisgICAgbWFyZ2luOiAwIDQwcHg7Cisg
ICAgZm9udC1zaXplOiAyNXB4OworICAgIGNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7CisgICAg
YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0
OiBub25lOworfQorCitidXR0b246YWN0aXZlIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io
MjM1LCAyMzUsIDIzNSk7CisgICAgY29sb3I6IHJnYig0NiwgNTEsIDU1KTsKKyAgICBib3JkZXIt
Y29sb3I6IHJnYigyMzUsIDIzNSwgMjM1KSAhaW1wb3J0YW50OworfQorCitidXR0b246Zm9jdXMg
eworICAgIG91dGxpbmU6IG5vbmU7CisgICAgYm9yZGVyLWNvbG9yOiByZ2IoMjMyLCA3OSwgNzkp
OworfQorCisuc21hbGwtYnV0dG9uIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cisg
ICAgYm9yZGVyOiAxcHggc29saWQgcmdiKDk2LCA5NiwgOTYpOworICAgIGJvcmRlci1yYWRpdXM6
IDJweDsKKyAgICBwYWRkaW5nOiAxcHggNHB4OworICAgIG1hcmdpbjogMCA0cHg7CisgICAgYmFj
a2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgY3Vyc29yOiBwb2ludGVyOworICAgIHRl
eHQtYWxpZ246IGNlbnRlcjsKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOworfQorCisj
Z3JhcGhDb250YWluZXIgeworICBmb250OiAxMHB4IHNhbnMtc2VyaWY7CisgIGNvbG9yOiByZ2Io
MjM1LCAyMzUsIDIzNSk7ICAKK30KKworLmF4aXMgcGF0aCwKKy5heGlzIGxpbmUgeworICBmaWxs
OiBub25lOworICBzdHJva2U6IHJnYigyMzUsIDIzNSwgMjM1KTsKKyAgc2hhcGUtcmVuZGVyaW5n
OiBjcmlzcEVkZ2VzOworfQorCisubGVmdC1zYW1wbGVzIHsKKyAgZmlsbDogbm9uZTsKKyAgc3Ry
b2tlOiBzdGVlbGJsdWU7CisgIHN0cm9rZS13aWR0aDogMS41cHg7Cit9CisKKy5yaWdodC1zYW1w
bGVzIHsKKyAgICBmaWxsOiBub25lOworICAgIHN0cm9rZTogcmVkOworICAgIHN0cm9rZS13aWR0
aDogMS41cHg7Cit9CisKKy5zbWFwbGUtdGltZSB7CisgICAgZmlsbDogbm9uZTsKKyAgICBzdHJv
a2U6IGdyZWVuOworICAgIHN0cm9rZS13aWR0aDogMS41cHg7Cit9CisKKy5sZWZ0LW1lYW4gewor
ICAgIGZpbGw6IG5vbmU7CisgICAgc3Ryb2tlOiB5ZWxsb3c7CisgICAgc3Ryb2tlLXdpZHRoOiAx
LjVweDsKK30KKworLnJpZ2h0LW1lYW4geworICAgIGZpbGw6IG5vbmU7CisgICAgc3Ryb2tlOiBt
YWdlbnRhOworICAgIHN0cm9rZS13aWR0aDogMS41cHg7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0
ZXIuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVy
L3Jlc291cmNlcy9hbmltb21ldGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA3IEBA
Cit3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50ID0geworICAgIGl0ZXJhdGlvbkNvdW50OiAx
LAorICAgIHRlc3RzQ291bnQ6IG51bGwsCisgICAgcHJvZ3Jlc3NCYXI6IG51bGwsCisgICAgcmVj
b3JkVGFibGU6IG51bGwsCisgICAgb3B0aW9uczogeyB0ZXN0SW50ZXJ2YWw6IDMwMDAwLCBmcmFt
ZVJhdGU6IDUwLCBlc3RpbWF0ZWRGcmFtZVJhdGU6IHRydWUsIGZpeFRlc3RDb21wbGV4aXR5IDog
ZmFsc2UgfSwKKyAgICBzY29yZTogMCwKKyAgICBfaXRlcmF0aW9uc1NhbXBsZXJzOiBbXSwKKyAg
ICBfcmVzdWx0c1RhYmxlOiBudWxsLAorICAgIF9pc0Nocm9tZTogL0Nocm9tZS8udGVzdChuYXZp
Z2F0b3IudXNlckFnZW50KSAmJiAvR29vZ2xlIEluYy8udGVzdChuYXZpZ2F0b3IudmVuZG9yKSwK
KyAgICBfaXNTYWZhcmk6IC9TYWZhcmkvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgL0Fw
cGxlIENvbXB1dGVyLy50ZXN0KG5hdmlnYXRvci52ZW5kb3IpLAorICAgIHdpbGxBZGRUZXN0RnJh
bWU6IGZ1bmN0aW9uIChmcmFtZSkgeworICAgICAgICB2YXIgbWFpbiA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoIm1haW4iKTsKKyAgICAgICAgdmFyIHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZSht
YWluKTsKKyAgICAgICAgZnJhbWUuc3R5bGUubGVmdCA9IG1haW4ub2Zmc2V0TGVmdCArIHBhcnNl
SW50KHN0eWxlLmJvcmRlckxlZnRXaWR0aCkgKyBwYXJzZUludChzdHlsZS5wYWRkaW5nTGVmdCkg
KyAicHgiOworICAgICAgICBmcmFtZS5zdHlsZS50b3AgPSBtYWluLm9mZnNldFRvcCArIHBhcnNl
SW50KHN0eWxlLmJvcmRlclRvcFdpZHRoKSArIHBhcnNlSW50KHN0eWxlLnBhZGRpbmdUb3ApICsg
InB4IjsKKyAgICB9LAorICAgIGRpZFJ1blRlc3Q6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGhp
cy5wcm9ncmVzc0Jhci5pbmNSYW5nZSgpOworICAgIH0sCisgICAgd2lsbFN0YXJ0Rmlyc3RJdGVy
YXRpb246IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGhpcy5faXRlcmF0aW9uc1NhbXBsZXJzID0g
W107CisgICAgICAgIHRoaXMuX3Jlc3VsdHNUYWJsZSA9IG5ldyBSZWNvcmRUYWJsZShkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yQWxsKCIucmVzdWx0cy10YWJsZSIpWzBdKTsKKyAgICAgICAgCisgICAg
ICAgIHRoaXMucHJvZ3Jlc3NCYXIgPSBuZXcgUHJvZ3Jlc3NCYXIoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInByb2dyZXNzLWNvbXBsZXRlZCIpLCB0aGlzLnRlc3RzQ291bnQpOworICAgICAgICB0
aGlzLnJlY29yZFRhYmxlID0gbmV3IFJlY29yZFRhYmxlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JB
bGwoIi5yZWNvcmQtdGFibGUiKVswXSk7CisgICAgfSwKKyAgICBkaWRSdW5TdWl0ZXM6IGZ1bmN0
aW9uIChzdWl0ZXNTYW1wbGVycykgeworICAgICAgICB0aGlzLl9pdGVyYXRpb25zU2FtcGxlcnMu
cHVzaChzdWl0ZXNTYW1wbGVycyk7CisgICAgfSwKKyAgICBkaWRGaW5pc2hMYXN0SXRlcmF0aW9u
OiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRoaXMuc2NvcmUgPSB0aGlzLl9yZXN1bHRzVGFibGUu
c2hvd0l0ZXJhdGlvbnModGhpcy5faXRlcmF0aW9uc1NhbXBsZXJzLCAiIik7CisgICAgICAgIHNo
b3dSZXN1bHRzKCk7CisgICAgfSwKKyAgICBicm93c2VyIDogZnVuY3Rpb24oKSB7CisgICAgICAg
IGlmICh0aGlzLl9pc0Nocm9tZSkKKyAgICAgICAgICAgIHJldHVybiAiQ2hyb21lIjsKKyAgICAg
ICAgaWYgKHRoaXMuX2lzU2FmYXJpKQorICAgICAgICAgICAgcmV0dXJuICJTYWZhcmkiOworICAg
ICAgICByZXR1cm4gIiI7CisgICAgfQorfQorCitmdW5jdGlvbiBzaG93U2VjdGlvbihzZWN0aW9u
SWRlbnRpZmllciwgcHVzaFN0YXRlKSB7CisgICAgdmFyIGN1cnJlbnRTZWN0aW9uRWxlbWVudCA9
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNlY3Rpb24uc2VsZWN0ZWQiKTsKKyAgICBjb25zb2xl
LmFzc2VydChjdXJyZW50U2VjdGlvbkVsZW1lbnQpOworCisgICAgdmFyIG5ld1NlY3Rpb25FbGVt
ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VjdGlvbklkZW50aWZpZXIpOworICAgIGNv
bnNvbGUuYXNzZXJ0KG5ld1NlY3Rpb25FbGVtZW50KTsKKworICAgIGN1cnJlbnRTZWN0aW9uRWxl
bWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3RlZCIpOworICAgIG5ld1NlY3Rpb25FbGVtZW50
LmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkIik7CisKKyAgICBpZiAocHVzaFN0YXRlKQorICAgICAg
ICBoaXN0b3J5LnB1c2hTdGF0ZSh7c2VjdGlvbjogc2VjdGlvbklkZW50aWZpZXJ9LCBkb2N1bWVu
dC50aXRsZSk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0QmVuY2htYXJrKCkgeworICAgIHZhciBjaGVj
a2JveGVzID0gWyAKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImh0bWwtc3VpdGUi
KSwgCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMtc3VpdGUiKSwgCisg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdmctc3VpdGUiKQorICAgIF07CisgICAg
dmFyIGVuYWJsZWRTdWl0ZXMgPSBTdWl0ZXMuZmlsdGVyKGZ1bmN0aW9uIChzdWl0ZSwgaW5kZXgp
IHsgcmV0dXJuICFzdWl0ZS5kaXNhYmxlZCAmJiBjaGVja2JveGVzW2luZGV4XS5jaGVja2VkOyB9
KTsKKyAgICB2YXIgdGVzdHNDb3VudCA9IGVuYWJsZWRTdWl0ZXMucmVkdWNlKGZ1bmN0aW9uICh0
ZXN0c0NvdW50LCBzdWl0ZSkgeyByZXR1cm4gdGVzdHNDb3VudCArIHN1aXRlLnRlc3RzLmxlbmd0
aDsgfSwgMCk7CisgICAgYmVuY2htYXJrUnVubmVyQ2xpZW50LnRlc3RzQ291bnQgPSBiZW5jaG1h
cmtSdW5uZXJDbGllbnQuaXRlcmF0aW9uQ291bnQgKiB0ZXN0c0NvdW50OworICAgIGJlbmNobWFy
a1J1bm5lckNsaWVudC5vcHRpb25zWyJ0ZXN0SW50ZXJ2YWwiXSA9IHBhcnNlSW50KGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LWludGVydmFsIikudmFsdWUpICogMTAwMDsKKyAgICBiZW5j
aG1hcmtSdW5uZXJDbGllbnQub3B0aW9uc1siZnJhbWVSYXRlIl0gPSBwYXJzZUludChkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZnJhbWUtcmF0ZSIpLnZhbHVlKTsKKyAgICBiZW5jaG1hcmtSdW5u
ZXJDbGllbnQub3B0aW9uc1siZXN0aW1hdGVkRnJhbWVSYXRlIl0gPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZXN0aW1hdGVkLWZyYW1lLXJhdGUiKS5jaGVja2VkOyAgICAKKyAgICBiZW5jaG1h
cmtSdW5uZXJDbGllbnQub3B0aW9uc1siZml4VGVzdENvbXBsZXhpdHkiXSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJmaXgtdGVzdC1jb21wbGV4aXR5IikuY2hlY2tlZDsKKyAgICB2YXIgcnVu
bmVyID0gbmV3IEJlbmNobWFya1J1bm5lcihlbmFibGVkU3VpdGVzLCBiZW5jaG1hcmtSdW5uZXJD
bGllbnQpOworICAgIHJ1bm5lci5ydW5NdWx0aXBsZUl0ZXJhdGlvbnMoYmVuY2htYXJrUnVubmVy
Q2xpZW50Lml0ZXJhdGlvbkNvdW50KTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAg
IHNob3dTZWN0aW9uKCJydW5uaW5nIik7CisgICAgc3RhcnRCZW5jaG1hcmsoKTsKK30KKworZnVu
Y3Rpb24gc2hvd1Jlc3VsdHMoc2NvcmUpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoIiNyZXN1bHRzID4gaDEiKTsKKyAgICBlbGVtZW50LnRleHRDb250ZW50ID0g
IlJlc3VsdHM6IgorICAgIAorICAgIHZhciBicm93c2VyID0gYmVuY2htYXJrUnVubmVyQ2xpZW50
LmJyb3dzZXIoKTsgICAgCisgICAgaWYgKGJyb3dzZXIubGVuZ3RoKQorICAgICAgICBlbGVtZW50
LnRleHRDb250ZW50ICs9ICIgW2Jyb3dzZXIgPSAiICsgYnJvd3NlciArICJdIjsKKworICAgIHZh
ciBzY29yZSA9IGJlbmNobWFya1J1bm5lckNsaWVudC5zY29yZS50b0ZpeGVkKDIpOworICAgIGVs
ZW1lbnQudGV4dENvbnRlbnQgKz0gIiBbU2NvcmUgPSAiICsgc2NvcmUgKyAiXSI7CisgICAgICAg
IAorICAgIHNob3dTZWN0aW9uKCJyZXN1bHRzIiwgdHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHNob3dH
cmFwaCh0ZXN0TmFtZSwgYXhpc2VzLCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQpIHsKKyAg
ICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNncmFwaCA+IGgxIik7Cisg
ICAgZWxlbWVudC50ZXh0Q29udGVudCA9ICJHcmFwaDoiCisKKyAgICB2YXIgYnJvd3NlciA9IGJl
bmNobWFya1J1bm5lckNsaWVudC5icm93c2VyKCk7ICAgIAorICAgIGlmIChicm93c2VyLmxlbmd0
aCkKKyAgICAgICAgZWxlbWVudC50ZXh0Q29udGVudCArPSAiIFticm93c2VyID0gIiArIGJyb3dz
ZXIgKyAiXSI7CisKKyAgICBpZiAodGVzdE5hbWUubGVuZ3RoKQorICAgICAgICBlbGVtZW50LnRl
eHRDb250ZW50ICs9ICIgW3Rlc3QgPSAiICsgdGVzdE5hbWUgKyAiXSI7CisgICAgICAgICAgICAK
KyAgICBncmFwaCgiI2dyYXBoQ29udGFpbmVyIiwgbmV3IFBvaW50KDcwMCwgNDAwKSwgbmV3IElu
c2V0cygyMCwgNTAsIDIwLCA1MCksIGF4aXNlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0
KTsKKyAgICBzaG93U2VjdGlvbigiZ3JhcGgiLCB0cnVlKTsgICAgCit9CkluZGV4OiBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3Vy
Y2VzL2JlbmNobWFyay1ydW5uZXIuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTg4IEBACitmdW5jdGlvbiBCZW5jaG1hcmtSdW5uZXJTdGF0ZShz
dWl0ZXMpIHsKKyAgICB0aGlzLl9zdWl0ZXMgPSBzdWl0ZXM7CisgICAgdGhpcy5fc3VpdGVJbmRl
eCA9IC0xOworICAgIHRoaXMuX3Rlc3RJbmRleCA9IDA7CisgICAgdGhpcy5uZXh0KCk7Cit9CisK
K0JlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5jdXJyZW50U3VpdGUgPSBmdW5jdGlvbigp
IHsKKyAgICByZXR1cm4gdGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5kZXhdOworfQorCitCZW5j
aG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUuY3VycmVudFRlc3QgPSBmdW5jdGlvbigpIHsKKyAg
ICB2YXIgc3VpdGUgPSB0aGlzLmN1cnJlbnRTdWl0ZSgpOworICAgIHJldHVybiBzdWl0ZSA/IHN1
aXRlLnRlc3RzW3RoaXMuX3Rlc3RJbmRleF0gOiBudWxsOworfQorCitCZW5jaG1hcmtSdW5uZXJT
dGF0ZS5wcm90b3R5cGUuaXNGaXJzdFRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gIXRo
aXMuX3Rlc3RJbmRleDsKK30KKworQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLm5leHQg
PSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLl90ZXN0SW5kZXgrKzsKKworICAgIHZhciBzdWl0ZSA9
IHRoaXMuX3N1aXRlc1t0aGlzLl9zdWl0ZUluZGV4XTsKKyAgICBpZiAoc3VpdGUgJiYgdGhpcy5f
dGVzdEluZGV4IDwgc3VpdGUudGVzdHMubGVuZ3RoKQorICAgICAgICByZXR1cm4gdGhpczsKKwor
ICAgIHRoaXMuX3Rlc3RJbmRleCA9IDA7CisgICAgZG8geworICAgICAgICB0aGlzLl9zdWl0ZUlu
ZGV4Kys7CisgICAgfSB3aGlsZSAodGhpcy5fc3VpdGVJbmRleCA8IHRoaXMuX3N1aXRlcy5sZW5n
dGggJiYgdGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5kZXhdLmRpc2FibGVkKTsKKworICAgIHJl
dHVybiB0aGlzOworfQorCitCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUucHJlcGFyZUN1
cnJlbnRUZXN0ID0gZnVuY3Rpb24ocnVubmVyLCBmcmFtZSkgeworICAgIHZhciBzdWl0ZSA9IHRo
aXMuY3VycmVudFN1aXRlKCk7CisgICAgdmFyIHRlc3QgPSB0aGlzLmN1cnJlbnRUZXN0KCk7Cisg
ICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICBmcmFtZS5vbmxvYWQgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgc3VpdGUucHJlcGFyZShydW5uZXIsIGZyYW1lLmNvbnRlbnRX
aW5kb3csIGZyYW1lLmNvbnRlbnREb2N1bWVudCkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsgcHJv
bWlzZS5yZXNvbHZlKHJlc3VsdCk7IH0pOworICAgIH0KKyAgICBmcmFtZS5zcmMgPSB0ZXN0LnVy
bDsKKyAgICByZXR1cm4gcHJvbWlzZTsKK30KKworZnVuY3Rpb24gQmVuY2htYXJrUnVubmVyKHN1
aXRlcywgY2xpZW50KSB7CisgICAgdGhpcy5fc3VpdGVzID0gc3VpdGVzOworICAgIHRoaXMuX2Ns
aWVudCA9IGNsaWVudDsKK30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS53YWl0Rm9yRWxl
bWVudCA9IGZ1bmN0aW9uKHNlbGVjdG9yKSB7CisgICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxl
UHJvbWlzZTsKKyAgICB2YXIgY29udGVudERvY3VtZW50ID0gdGhpcy5fZnJhbWUuY29udGVudERv
Y3VtZW50OworCisgICAgZnVuY3Rpb24gcmVzb2x2ZUlmUmVhZHkoKSB7CisgICAgICAgIHZhciBl
bGVtZW50ID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOworICAgICAg
ICBpZiAoZWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnJlc29sdmUoZWxlbWVu
dCk7CisgICAgICAgIHNldFRpbWVvdXQocmVzb2x2ZUlmUmVhZHksIDUwKTsKKyAgICB9CisKKyAg
ICByZXNvbHZlSWZSZWFkeSgpOworICAgIHJldHVybiBwcm9taXNlOworfQorCitCZW5jaG1hcmtS
dW5uZXIucHJvdG90eXBlLl9hcHBlbmRGcmFtZSA9IGZ1bmN0aW9uKHNyYykgeworICAgIHZhciBm
cmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGZyYW1lLnN0eWxl
LndpZHRoID0gIjgwMHB4IjsKKyAgICBmcmFtZS5zdHlsZS5oZWlnaHQgPSAiNjAwcHgiOworICAg
IGZyYW1lLnN0eWxlLmJvcmRlciA9ICIwcHggbm9uZSI7CisgICAgZnJhbWUuc3R5bGUucG9zaXRp
b24gPSAiYWJzb2x1dGUiOworICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgic2Nyb2xsaW5nIiwgIm5v
Iik7CisKKyAgICB2YXIgbWFyZ2luTGVmdCA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoZG9j
dW1lbnQuYm9keSkubWFyZ2luTGVmdCk7CisgICAgdmFyIG1hcmdpblRvcCA9IHBhcnNlSW50KGdl
dENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkubWFyZ2luVG9wKTsKKyAgICBpZiAod2luZG93
LmlubmVyV2lkdGggPiA4MDAgKyBtYXJnaW5MZWZ0ICYmIHdpbmRvdy5pbm5lckhlaWdodCA+IDYw
MCArIG1hcmdpblRvcCkgeworICAgICAgICBmcmFtZS5zdHlsZS5sZWZ0ID0gbWFyZ2luTGVmdCAr
ICJweCI7CisgICAgICAgIGZyYW1lLnN0eWxlLnRvcCA9IG1hcmdpblRvcCArICJweCI7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgZnJhbWUuc3R5bGUubGVmdCA9ICIwcHgiOworICAgICAgICBmcmFt
ZS5zdHlsZS50b3AgPSAiMHB4IjsKKyAgICB9CisKKyAgICBpZiAodGhpcy5fY2xpZW50ICYmIHRo
aXMuX2NsaWVudC53aWxsQWRkVGVzdEZyYW1lKQorICAgICAgICB0aGlzLl9jbGllbnQud2lsbEFk
ZFRlc3RGcmFtZShmcmFtZSk7CisKKyAgICBkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShmcmFt
ZSwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKKyAgICB0aGlzLl9mcmFtZSA9IGZyYW1lOwor
ICAgIHJldHVybiBmcmFtZTsKK30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcmVtb3Zl
RnJhbWUgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAodGhpcy5fZnJhbWUpIHsKKyAgICAgICAgdGhp
cy5fZnJhbWUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9mcmFtZSk7CisgICAgICAgIHRo
aXMuX2ZyYW1lID0gbnVsbDsKKyAgICB9Cit9CisKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUu
X3J1blRlc3RBbmRSZWNvcmRSZXN1bHRzID0gZnVuY3Rpb24oc3RhdGUpIHsKKyAgICB2YXIgcHJv
bWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgIHZhciBzdWl0ZSA9IHN0YXRlLmN1cnJlbnRT
dWl0ZSgpOworICAgIHZhciB0ZXN0ID0gc3RhdGUuY3VycmVudFRlc3QoKTsKKyAgICAKKyAgICBp
ZiAodGhpcy5fY2xpZW50ICYmIHRoaXMuX2NsaWVudC53aWxsUnVuVGVzdFRlc3QpCisgICAgICAg
IHRoaXMuX2NsaWVudC53aWxsUnVuVGVzdChzdWl0ZSwgdGVzdCk7CisKKyAgICB2YXIgY29udGVu
dFdpbmRvdyA9IHRoaXMuX2ZyYW1lLmNvbnRlbnRXaW5kb3c7CisgICAgdmFyIHNlbGYgPSB0aGlz
OworCisgICAgc3VpdGUucnVuKGNvbnRlbnRXaW5kb3csIHRlc3QsIHRoaXMuX2NsaWVudC5vcHRp
b25zLCB0aGlzLl9jbGllbnQucmVjb3JkVGFibGUsIHRoaXMuX2NsaWVudC5wcm9ncmVzc0Jhciku
dGhlbihmdW5jdGlvbihzYW1wbGVyKSB7CisgICAgICAgIHZhciBzYW1wbGVycyA9IHNlbGYuX3N1
aXRlc1NhbXBsZXJzW3N1aXRlLm5hbWVdIHx8IFtdOworICAgICAgICAKKyAgICAgICAgc2FtcGxl
cnNbdGVzdC5uYW1lXSA9IHNhbXBsZXI7CisgICAgICAgIHNlbGYuX3N1aXRlc1NhbXBsZXJzW3N1
aXRlLm5hbWVdID0gc2FtcGxlcnM7CisKKyAgICAgICAgaWYgKHNlbGYuX2NsaWVudCAmJiBzZWxm
Ll9jbGllbnQuZGlkUnVuVGVzdCkKKyAgICAgICAgICAgIHNlbGYuX2NsaWVudC5kaWRSdW5UZXN0
KHN1aXRlLCB0ZXN0KTsKKyAgICAgICAgCisgICAgICAgIHN0YXRlLm5leHQoKTsKKyAgICAgICAg
aWYgKHN0YXRlLmN1cnJlbnRTdWl0ZSgpICE9IHN1aXRlKQorICAgICAgICAgICAgc2VsZi5fcmVt
b3ZlRnJhbWUoKTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHN0YXRlKTsKKyAgICB9KTsKKyAg
ICAKKyAgICByZXR1cm4gcHJvbWlzZTsKK30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5z
dGVwID0gZnVuY3Rpb24oc3RhdGUpIHsKKyAgICBpZiAoIXN0YXRlKSB7CisgICAgICAgIHN0YXRl
ID0gbmV3IEJlbmNobWFya1J1bm5lclN0YXRlKHRoaXMuX3N1aXRlcyk7CisgICAgICAgIHRoaXMu
X3N1aXRlc1NhbXBsZXJzID0ge307CisgICAgfQorCisgICAgdmFyIHN1aXRlID0gc3RhdGUuY3Vy
cmVudFN1aXRlKCk7CisgICAgaWYgKCFzdWl0ZSkgeworICAgICAgICB0aGlzLl9maW5hbGl6ZSgp
OworICAgICAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgICAgICBwcm9t
aXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAgfQorCisgICAgaWYg
KHN0YXRlLmlzRmlyc3RUZXN0KCkpIHsKKyAgICAgICAgdGhpcy5fbWFzdXJlZFZhbHVlc0ZvckN1
cnJlbnRTdWl0ZSA9IHt9OworICAgICAgICB0aGlzLl9hcHBlbmRGcmFtZSgpOworICAgIH0KKwor
ICAgIHZhciBzZWxmID0gdGhpczsKKyAgICByZXR1cm4gc3RhdGUucHJlcGFyZUN1cnJlbnRUZXN0
KHRoaXMsIHRoaXMuX2ZyYW1lKS50aGVuKGZ1bmN0aW9uKHByZXBhcmVSZXR1cm5WYWx1ZSkgewor
ICAgICAgICByZXR1cm4gc2VsZi5fcnVuVGVzdEFuZFJlY29yZFJlc3VsdHMoc3RhdGUpOworICAg
IH0pOworfQorCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLnJ1bkFsbFN0ZXBzID0gZnVuY3Rp
b24oc3RhcnRpbmdTdGF0ZSkgeworICAgIHZhciBuZXh0Q2FsbGVlID0gdGhpcy5ydW5BbGxTdGVw
cy5iaW5kKHRoaXMpOworICAgIHRoaXMuc3RlcChzdGFydGluZ1N0YXRlKS50aGVuKGZ1bmN0aW9u
KG5leHRTdGF0ZSkgeworICAgICAgICBpZiAobmV4dFN0YXRlKQorICAgICAgICAgICAgbmV4dENh
bGxlZShuZXh0U3RhdGUpOworICAgIH0pOworfQorCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBl
LnJ1bk11bHRpcGxlSXRlcmF0aW9ucyA9IGZ1bmN0aW9uKGl0ZXJhdGlvbkNvdW50KSB7CisgICAg
dmFyIHNlbGYgPSB0aGlzOworICAgIHZhciBjdXJyZW50SXRlcmF0aW9uID0gMDsKKworICAgIHRo
aXMuX3J1bk5leHRJdGVyYXRpb24gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgY3VycmVudEl0ZXJh
dGlvbisrOworICAgICAgICBpZiAoY3VycmVudEl0ZXJhdGlvbiA8IGl0ZXJhdGlvbkNvdW50KQor
ICAgICAgICAgICAgc2VsZi5ydW5BbGxTdGVwcygpOworICAgICAgICBlbHNlIGlmICh0aGlzLl9j
bGllbnQgJiYgdGhpcy5fY2xpZW50LmRpZEZpbmlzaExhc3RJdGVyYXRpb24pCisgICAgICAgICAg
ICBzZWxmLl9jbGllbnQuZGlkRmluaXNoTGFzdEl0ZXJhdGlvbigpOworICAgIH0KKworICAgIGlm
IChzZWxmLl9jbGllbnQgJiYgc2VsZi5fY2xpZW50LndpbGxTdGFydEZpcnN0SXRlcmF0aW9uKQor
ICAgICAgICBzZWxmLl9jbGllbnQud2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb24oaXRlcmF0aW9uQ291
bnQpOworCisgICAgc2VsZi5ydW5BbGxTdGVwcygpOworfQorCitCZW5jaG1hcmtSdW5uZXIucHJv
dG90eXBlLl9maW5hbGl6ZSA9IGZ1bmN0aW9uKCkgeworICAgIHRoaXMuX3JlbW92ZUZyYW1lKCk7
CisgICAgICAgIAorICAgIGlmICh0aGlzLl9jbGllbnQgJiYgdGhpcy5fY2xpZW50LmRpZFJ1blN1
aXRlcykKKyAgICAgICAgdGhpcy5fY2xpZW50LmRpZFJ1blN1aXRlcyh0aGlzLl9zdWl0ZXNTYW1w
bGVycyk7CisKKyAgICBpZiAodGhpcy5fcnVuTmV4dEl0ZXJhdGlvbikKKyAgICAgICAgdGhpcy5f
cnVuTmV4dEl0ZXJhdGlvbigpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3J1bm5lci9yZXNvdXJjZXMvZ3JhcGguanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvZ3JhcGguanMJKHJldmlzaW9uIDApCisrKyBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9ncmFwaC5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE0MSBAQAorZnVuY3Rpb24gZ3JhcGgoc2VsZWN0b3IsIHNp
emUsIG1hcmdpbnMsIGF4aXNlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KSB7CisKKyAg
ICB2YXIgZWxlbWVudCA9IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9y
KTsKKyAgICB3aGlsZSAoZWxlbWVudC5maXJzdENoaWxkKQorICAgICAgICBlbGVtZW50LnJlbW92
ZUNoaWxkKGVsZW1lbnQuZmlyc3RDaGlsZCk7CisKKyAgICB2YXIgeCA9IGQzLnNjYWxlLmxpbmVh
cigpCisgICAgICAgICAgICAucmFuZ2UoWzAsIHNpemUud2lkdGgoKV0pCisgICAgICAgICAgICAu
ZG9tYWluKGQzLmV4dGVudChzYW1wbGVzLCBmdW5jdGlvbihkKSB7IHJldHVybiBkLnRpbWVPZmZz
ZXQ7IH0pKTsgICAgICAgICAgICAKKworICAgIHZhciB5TGVmdCA9IGQzLnNjYWxlLmxpbmVhcigp
CisgICAgICAgICAgICAucmFuZ2UoW3NpemUuaGVpZ2h0KCksIDBdKQorICAgICAgICAgICAgLmRv
bWFpbihbMCwgZDMubWF4KHNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudmFsdWVzWzBd
OyB9KV0pOworCisgICAgdmFyIHlSaWdodCA9IGQzLnNjYWxlLmxpbmVhcigpCisgICAgICAgICAg
ICAucmFuZ2UoW3NpemUuaGVpZ2h0KCksIDBdKQorICAgICAgICAgICAgLmRvbWFpbihbMCwgZDMu
bWF4KHNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudmFsdWVzWzFdOyB9KV0pOworCisg
ICAgdmFyIHhBeGlzID0gZDMuc3ZnLmF4aXMoKQorICAgICAgICAgICAgLnNjYWxlKHgpCisgICAg
ICAgICAgICAub3JpZW50KCJib3R0b20iKTsKKworICAgIHZhciB5QXhpc0xlZnQgPSBkMy5zdmcu
YXhpcygpCisgICAgICAgICAgICAuc2NhbGUoeUxlZnQpCisgICAgICAgICAgICAub3JpZW50KCJs
ZWZ0Iik7CisKKyAgICB2YXIgeUF4aXNSaWdodCA9IGQzLnN2Zy5heGlzKCkKKyAgICAgICAgICAg
IC5zY2FsZSh5UmlnaHQpCisgICAgICAgICAgICAub3JpZW50KCJyaWdodCIpOworCisgICAgdmFy
IGxpbmVMZWZ0ID0gZDMuc3ZnLmxpbmUoKQorICAgICAgICAgICAgLngoZnVuY3Rpb24oZCkgeyBy
ZXR1cm4geChkLnRpbWVPZmZzZXQpOyB9KQorICAgICAgICAgICAgLnkoZnVuY3Rpb24oZCkgeyBy
ZXR1cm4geUxlZnQoZC52YWx1ZXNbMF0pOyB9KTsKKworICAgIHZhciBsaW5lUmlnaHQgPSBkMy5z
dmcubGluZSgpCisgICAgICAgICAgICAueChmdW5jdGlvbihkKSB7IHJldHVybiB4KGQudGltZU9m
ZnNldCk7IH0pCisgICAgICAgICAgICAueShmdW5jdGlvbihkKSB7IHJldHVybiB5UmlnaHQoZC52
YWx1ZXNbMV0pOyB9KTsKKworICAgIHNhbXBsZXMuZm9yRWFjaChmdW5jdGlvbihkKSB7CisgICAg
ICAgIGQudGltZU9mZnNldCA9ICtkLnRpbWVPZmZzZXQ7CisgICAgICAgIGQudmFsdWVzWzBdID0g
K2QudmFsdWVzWzBdOworICAgICAgICBkLnZhbHVlc1sxXSA9ICtkLnZhbHVlc1sxXTsgICAgICAg
IAorICAgIH0pOyAgICAKKworICAgIHZhciBzYW1wbGVkU2FtcGxlcyA9IHNhbXBsZXMuZmlsdGVy
KGZ1bmN0aW9uKGQpIHsKKyAgICAgICAgcmV0dXJuIGQudGltZU9mZnNldCA+PSBzYW1wbGluZ1Rp
bWVPZmZzZXQ7CisgICAgfSk7CisgICAgCisgICAgdmFyIG1lYW5MZWZ0ID0gZDMubWVhbihzYW1w
bGVkU2FtcGxlcywgZnVuY3Rpb24oZCkgeworICAgICAgICByZXR1cm4gK2QudmFsdWVzWzBdOwor
ICAgIH0pOworCisgICAgdmFyIG1lYW5SaWdodCA9IGQzLm1lYW4oc2FtcGxlZFNhbXBsZXMsIGZ1
bmN0aW9uKGQpIHsKKyAgICAgICAgcmV0dXJuICtkLnZhbHVlc1sxXTsKKyAgICB9KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB2YXIgc3ZnID0gZDMuc2VsZWN0KHNlbGVjdG9y
KS5hcHBlbmQoInN2ZyIpCisgICAgICAgIC5hdHRyKCJ3aWR0aCIsIHNpemUud2lkdGgoKSArIG1h
cmdpbnMubGVmdCArIG1hcmdpbnMucmlnaHQpCisgICAgICAgIC5hdHRyKCJoZWlnaHQiLCBzaXpl
LmhlaWdodCgpICsgbWFyZ2lucy50b3AgKyBtYXJnaW5zLmJvdHRvbSkKKyAgICAgICAgLmFwcGVu
ZCgiZyIpCisgICAgICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiICsgbWFy
Z2lucy5sZWZ0ICsgIiwiICsgbWFyZ2lucy50b3AgKyAiKSIpOworCisgICAgLy8geC1heGlzCisg
ICAgc3ZnLmFwcGVuZCgiZyIpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJ4IGF4aXMiKQorICAg
ICAgICAuYXR0cigiZmlsbCIsICJyZ2IoMjM1LCAyMzUsIDIzNSkiKQorICAgICAgICAuYXR0cigi
dHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgwLCIgKyBzaXplLmhlaWdodCgpICsgIikiKQorICAgICAg
ICAuY2FsbCh4QXhpcykKKyAgICAgICAgLmFwcGVuZCgidGV4dCIpCisgICAgICAgICAgICAuYXR0
cigiY2xhc3MiLCAibGFiZWwiKQorICAgICAgICAgICAgLmF0dHIoIngiLCBzaXplLndpZHRoKCkp
CisgICAgICAgICAgICAuYXR0cigieSIsIC02KQorICAgICAgICAgICAgLmF0dHIoImZpbGwiLCAi
cmdiKDIzNSwgMjM1LCAyMzUpIikKKyAgICAgICAgICAgIC5zdHlsZSgidGV4dC1hbmNob3IiLCAi
ZW5kIikKKyAgICAgICAgICAgIC50ZXh0KCJ0aW1lIik7CisgICAgICAgICAgICAgICAgIAorICAg
IC8vIHlMZWZ0LWF4aXMKKyAgICBzdmcuYXBwZW5kKCJnIikKKyAgICAgICAgLmF0dHIoImNsYXNz
IiwgInkgYXhpcyIpCisgICAgICAgIC5hdHRyKCJmaWxsIiwgInN0ZWVsYmx1ZSIpCisgICAgICAg
IC5jYWxsKHlBeGlzTGVmdCkKKyAgICAgICAgLmFwcGVuZCgidGV4dCIpCisgICAgICAgICAgICAu
YXR0cigiY2xhc3MiLCAibGFiZWwiKQorICAgICAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJy
b3RhdGUoLTkwKSIpCisgICAgICAgICAgICAuYXR0cigieSIsIDYpCisgICAgICAgICAgICAuYXR0
cigiZmlsbCIsICJzdGVlbGJsdWUiKQorICAgICAgICAgICAgLmF0dHIoImR5IiwgIi43MWVtIikK
KyAgICAgICAgICAgIC5zdHlsZSgidGV4dC1hbmNob3IiLCAiZW5kIikKKyAgICAgICAgICAgIC50
ZXh0KGF4aXNlc1swXSk7CisKKyAgICAvLyB5UmlnaHQtYXhpcworICAgIHN2Zy5hcHBlbmQoImci
KQorICAgICAgICAuYXR0cigiY2xhc3MiLCAieSBheGlzIikKKyAgICAgICAgLmF0dHIoImZpbGwi
LCAicmVkIikKKyAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoIiArIHNpemUu
d2lkdGgoKSArICIsIDApIikKKyAgICAgICAgLmNhbGwoeUF4aXNSaWdodCkKKyAgICAgICAgLmFw
cGVuZCgidGV4dCIpCisgICAgICAgICAgICAuYXR0cigiY2xhc3MiLCAibGFiZWwiKQorICAgICAg
ICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJyb3RhdGUoLTkwKSIpCisgICAgICAgICAgICAuYXR0
cigieSIsIDYpCisgICAgICAgICAgICAuYXR0cigiZmlsbCIsICJyZWQiKQorICAgICAgICAgICAg
LmF0dHIoImR5IiwgIi43MWVtIikKKyAgICAgICAgICAgIC5zdHlsZSgidGV4dC1hbmNob3IiLCAi
ZW5kIikKKyAgICAgICAgICAgIC50ZXh0KGF4aXNlc1sxXSk7CisKKyAgICAvLyBsZWZ0LW1lYW4K
KyAgICBzdmcuYXBwZW5kKCJzdmc6bGluZSIpCisgICAgICAgIC5hdHRyKCJ4MSIsIHgoMCkpCisg
ICAgICAgIC5hdHRyKCJ4MiIsIHNpemUud2lkdGgoKSkKKyAgICAgICAgLmF0dHIoInkxIiwgeUxl
ZnQobWVhbkxlZnQpKQorICAgICAgICAuYXR0cigieTIiLCB5TGVmdChtZWFuTGVmdCkpCisgICAg
ICAgIC5hdHRyKCJjbGFzcyIsICJsZWZ0LW1lYW4iKTsKKworICAgIC8vIHJpZ2h0LW1lYW4KKyAg
ICBzdmcuYXBwZW5kKCJzdmc6bGluZSIpCisgICAgICAgIC5hdHRyKCJ4MSIsIHgoMCkpCisgICAg
ICAgIC5hdHRyKCJ4MiIsIHNpemUud2lkdGgoKSkKKyAgICAgICAgLmF0dHIoInkxIiwgeVJpZ2h0
KG1lYW5SaWdodCkpCisgICAgICAgIC5hdHRyKCJ5MiIsIHlSaWdodChtZWFuUmlnaHQpKQorICAg
ICAgICAuYXR0cigiY2xhc3MiLCAicmlnaHQtbWVhbiIpOyAgICAgICAgCisKKyAgICAvLyBzYW1w
bGluZ1RpbWVPZmZzZXQKKyAgICBzdmcuYXBwZW5kKCJsaW5lIikKKyAgICAgICAgLmF0dHIoIngx
IiwgeChzYW1wbGluZ1RpbWVPZmZzZXQpKQorICAgICAgICAuYXR0cigieDIiLCB4KHNhbXBsaW5n
VGltZU9mZnNldCkpCisgICAgICAgIC5hdHRyKCJ5MSIsIHlMZWZ0KDApKQorICAgICAgICAuYXR0
cigieTIiLCB5TGVmdCh5QXhpc0xlZnQuc2NhbGUoKS5kb21haW4oKVsxXSkpCisgICAgICAgIC5h
dHRyKCJjbGFzcyIsICJzbWFwbGUtdGltZSIpOworCisgICAgLy8gbGVmdC1zYW1wbGVzCisgICAg
c3ZnLmFwcGVuZCgicGF0aCIpCisgICAgICAgIC5kYXR1bShzYW1wbGVzKQorICAgICAgICAuYXR0
cigiY2xhc3MiLCAibGVmdC1zYW1wbGVzIikKKyAgICAgICAgLmF0dHIoImQiLCBsaW5lTGVmdCk7
CisgICAgICAgIAorICAgIC8vIHJpZ2h0LXNhbXBsZXMKKyAgICBzdmcuYXBwZW5kKCJwYXRoIikK
KyAgICAgICAgLmRhdHVtKHNhbXBsZXMpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJyaWdodC1z
YW1wbGVzIikKKyAgICAgICAgLmF0dHIoImQiLCBsaW5lUmlnaHQpOworfQpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMu
anMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jl
c291cmNlcy90ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2OSBAQAordmFyIFRp
dGxlcyA9IFsKKyAgICB7CisgICAgICAgIHRleHQgOiAiVGVzdCBOYW1lIiwKKyAgICAgICAgd2lk
dGggOiAyOCwKKyAgICAgICAgY2hpbGRyZW46IFtdCisgICAgfSwgeworICAgICAgICB0ZXh0IDog
IkFuaW1hdGVkIEl0ZW1zIiwKKyAgICAgICAgd2lkdGggOiAzMiwKKyAgICAgICAgY2hpbGRyZW46
IFsKKyAgICAgICAgICAgIHsgdGV4dDogICAiQXZnLiIsIHdpZHRoOiA2LCBjaGlsZHJlbjogW10g
fSwKKyAgICAgICAgICAgIHsgdGV4dDogIlx1MDBiMSIsIHdpZHRoOiA1LCBjaGlsZHJlbjogW10g
fSwKKyAgICAgICAgICAgIHsgdGV4dDogICAiVy41JSIsIHdpZHRoOiA2LCBjaGlsZHJlbjogW10g
fSwKKyAgICAgICAgICAgIHsgdGV4dDogICAiU3RkLiIsIHdpZHRoOiA1LCBjaGlsZHJlbjogW10g
fSwKKyAgICAgICAgICAgIHsgdGV4dDogICAgICAiJSIsIHdpZHRoOiA1LCBjaGlsZHJlbjogW10g
fSwKKyAgICAgICAgXQorICAgIH0sIHsKKyAgICAgICAgdGV4dCA6ICJGUFMiLAorICAgICAgICB3
aWR0aCA6IDMyLAorICAgICAgICBjaGlsZHJlbjogWworICAgICAgICAgICAgeyB0ZXh0OiAgICJB
dmcuIiwgd2lkdGg6IDYsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAiXHUw
MGIxIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAgICJX
LjUlIiwgd2lkdGg6IDYsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAgICJT
dGQuIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAgICAg
ICIlIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICBdCisgICAgfSwgeworICAg
ICAgICB0ZXh0IDogIlNhbXBsZXMiLAorICAgICAgICB3aWR0aCA6IDgsCisgICAgICAgIGNoaWxk
cmVuOiBbXQorICAgIH0KK107CisKK3ZhciBTdWl0ZXMgPSBbXTsKKworU3VpdGVzLnB1c2goewor
ICAgIG5hbWU6ICJIVE1MIEJvdW5jaW5nIFBhcnRpY2xlcyIsCisgICAgcHJlcGFyZTogZnVuY3Rp
b24ocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0
dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgiI3N0YWdlIikudGhlbihmdW5jdGlvbiAoZWxlbWVu
dCkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sICAK
KyAgICBydW46IGZ1bmN0aW9uKGNvbnRlbnRXaW5kb3csIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRh
YmxlLCBwcm9ncmVzc0JhcikgeworICAgICAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5j
aG1hcmsodGhpcywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAg
ICB9LAorICAgIHRpdGxlcyA6IFRpdGxlcywKKyAgICB0ZXN0czogWworICAgICAgICB7IAorICAg
ICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXNoYXBl
cy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSZwYXJ0aWNsZVdpZHRoPTEy
JnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCisgICAgICAgICAgICBuYW1lOiAiYm91
bmNpbmcgY2lyY2xlcyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6
IDIwMDAKKyAgICAgICAgfSwgeyAKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9ib3VuY2luZy1zaGFwZXMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92
ZUxpbWl0PTUmcGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNs
aXA9c3RhciIsCisgICAgICAgICAgICBuYW1lOiAiYm91bmNpbmcgY2xpcHBlZCByZWN0cyIsCisg
ICAgICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDEwMDAKKyAgICAgICAgfSwg
eyAKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2lu
Zy1zaGFwZXMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFydGljbGVX
aWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVudCIsCisg
ICAgICAgICAgICBuYW1lOiAiYm91bmNpbmcgZ3JhZGllbnQgY2lyY2xlcyIsCisgICAgICAgICAg
ICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDUwMAorICAgICAgICB9LCB7CisgICAgICAg
ICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctaW1hZ2VzLmh0
bWw/Z2Fpbj0wLjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0yJnBhcnRpY2xlV2lkdGg9ODAmcGFy
dGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAg
ICAgICAgICBuYW1lOiAiYm91bmNpbmcgU1ZHIGltYWdlcyIsCisgICAgICAgICAgICB3ZWlnaHQ6
IDEsCisgICAgICAgICAgICBtYXg6IDIwMAorICAgICAgICB9LCB7CisgICAgICAgICAgICB1cmw6
ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctaW1hZ2VzLmh0bWw/Z2Fpbj0x
JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWln
aHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCisgICAgICAgICAgICBu
YW1lOiAiYm91bmNpbmcgUE5HIGltYWdlcyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisgICAg
ICAgICAgICBtYXg6IDIwMDAKKyAgICAgICAgfSwgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVz
dHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1p
dD0xMDAiLAorICAgICAgICAgICAgbmFtZTogImxheWVyaW5nIHRleHQiLAorICAgICAgICAgICAg
d2VpZ2h0OiAxLAorICAgICAgICAgICAgbWF4OiAxMDAwCisgICAgICAgIH0KKyAgICBdCit9KTsK
KworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICJDYW52YXMgQm91bmNpbmcgUGFydGljbGVzIiwK
KyAgICBwcmVwYXJlOiBmdW5jdGlvbihydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1
bWVudCkgeworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCIjc3RhZ2UiKS50
aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAg
ICAgICAgfSk7CisgICAgfSwgIAorICAgIHJ1bjogZnVuY3Rpb24oY29udGVudFdpbmRvdywgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgICAgIHJldHVybiBj
b250ZW50V2luZG93LnJ1bkJlbmNobWFyayh0aGlzLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpOworICAgIH0sCisgICAgdGl0bGVzIDogVGl0bGVzLAorICAgIHRlc3Rz
OiBbCisgICAgICAgIHsgCisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVt
b3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNp
cmNsZSIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGNpcmNsZXMiLAorICAg
ICAgICAgICAgd2VpZ2h0OiAxLAorICAgICAgICAgICAgbWF4OiA0MDAwCisgICAgICAgIH0sIHsg
CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
Y2FudmFzLXNoYXBlcy5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZw
YXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xlSGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwK
KyAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgY2xpcHBlZCByZWN0cyIsCisgICAg
ICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDEwMDAKKyAgICAgICAgfSwgeyAK
KyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1j
YW52YXMtc2hhcGVzLmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAwJnBh
cnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3JhZGll
bnQiLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBncmFkaWVudCBjaXJjbGVz
IiwKKyAgICAgICAgICAgIHdlaWdodDogMSwKKyAgICAgICAgICAgIG1heDogMTAwMAorICAgICAg
ICB9LCB7IAorICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2Jv
dW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbD9nYWluPTAuNCZhZGRMaW1pdD01JnJlbW92ZUxpbWl0
PTEmcGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJj
ZXMveWluLXlhbmcuc3ZnIiwKKyAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgU1ZH
IGltYWdlcyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDIwMAor
ICAgICAgICB9LCB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAwJnJlbW92
ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0u
Li9yZXNvdXJjZXMveWluLXlhbmcucG5nIiwKKyAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91
bmNpbmcgUE5HIGltYWdlcyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBt
YXg6IDUwMDAKKyAgICAgICAgfQorICAgIF0KK30pOworCitTdWl0ZXMucHVzaCh7CisgICAgbmFt
ZTogIlNWRyBCb3VuY2luZyBQYXJ0aWNsZXMiLAorICAgIHByZXBhcmU6IGZ1bmN0aW9uKHJ1bm5l
ciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7CisgICAgICAgIHJldHVybiBydW5u
ZXIud2FpdEZvckVsZW1lbnQoIiNzdGFnZSIpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAg
ICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsKKyAgICB9LCAgCisgICAgcnVu
OiBmdW5jdGlvbihjb250ZW50V2luZG93LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpIHsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRXaW5kb3cucnVuQmVuY2htYXJrKHRo
aXMsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7CisgICAgfSwKKyAg
ICB0aXRsZXMgOiBUaXRsZXMsCisgICAgdGVzdHM6IFsKKyAgICAgICAgeworICAgICAgICAgICAg
dXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRt
bD9nYWluPTYmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD0xMiZw
YXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUiLAorICAgICAgICAgICAgbmFtZTogIlNWRyBi
b3VuY2luZyBjaXJjbGVzIiwKKyAgICAgICAgICAgIHdlaWdodDogMSwKKyAgICAgICAgICAgIG1h
eDogNjAwMAorICAgICAgICB9LCB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP2dhaW49MC42JmFkZExpbWl0PTEw
JnJlbW92ZUxpbWl0PTEmcGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1y
ZWN0JmNsaXA9c3RhciIsCisgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIGNsaXBwZWQg
cmVjdHMiLAorICAgICAgICAgICAgd2VpZ2h0OiAxLAorICAgICAgICAgICAgbWF4OiAxMDAwCisg
ICAgICAgIH0sIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/Z2Fpbj0wLjgmYWRkTGltaXQ9MTAmcmVtb3ZlTGlt
aXQ9NCZwYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxs
PWdyYWRpZW50IiwKKyAgICAgICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcgZ3JhZGllbnQgY2ly
Y2xlcyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDEwMDAKKyAg
ICAgICAgfSwgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbD9nYWluPTAuNCZhZGRMaW1pdD01JnJlbW92ZUxpbWl0
PTImcGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJj
ZXMveWluLXlhbmcuc3ZnIiwKKyAgICAgICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcgU1ZHIGlt
YWdlcyIsCisgICAgICAgICAgICB3ZWlnaHQ6IDEsCisgICAgICAgICAgICBtYXg6IDIwMAorICAg
ICAgICB9LCB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
Ym91bmNpbmctc3ZnLWltYWdlcy5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9
NSZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNl
cy95aW4teWFuZy5wbmciLAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBQTkcgaW1h
Z2VzIiwgICAgICAgICAgICAKKyAgICAgICAgICAgIHdlaWdodDogMSwKKyAgICAgICAgICAgIG1h
eDogNDAwMAorICAgICAgICB9CisgICAgXQorfSk7CisKK2Z1bmN0aW9uIHN1aXRlRnJvbU5hbWUo
bmFtZSkgeworICAgIHJldHVybiBTdWl0ZXMuZmluZChmdW5jdGlvbihzdWl0ZSkgeyByZXR1cm4g
c3VpdGUubmFtZSA9PSBuYW1lOyB9KTsKK30KKworZnVuY3Rpb24gdGVzdEZyb21OYW1lKHN1aXRl
LCBuYW1lKSB7CisgICAgcmV0dXJuIHN1aXRlLnRlc3RzLmZpbmQoZnVuY3Rpb24odGVzdCkgeyBy
ZXR1cm4gdGVzdC5uYW1lID09IG5hbWU7IH0pOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2Vz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI2
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4KKyAgICBpbWcu
aGlkZGVuIHsKKyAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgIHZpc2liaWxpdHk6IGhp
ZGRlbjsKKyAgICB9CisgIDwvc3R5bGU+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0i
dGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PiAgCisgIDxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91
dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdl
LmpzIj48L3NjcmlwdD4gIAorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRp
Y2xlcy5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY2Fu
dmFzLWltYWdlcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGltZyBjbGFzcz0i
aGlkZGVuIiBzcmM9Ii4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciPgorICA8aW1nIGNsYXNzPSJo
aWRkZW4iIHNyYz0iLi4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyI+CisgIDxjYW52YXMgaWQ9InN0
YWdlIj48L2NhbnZhcz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBl
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sCShyZXZpc2lvbiAw
KQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8bGluayByZWw9InN0eWxl
c2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvYmVuY2htYXJrLmNzcyI+
CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4K
KyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4g
IAorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICA8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91
bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9i
b3VuY2luZy1jYW52YXMtc2hhcGVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8
Y2FudmFzIGlkPSJzdGFnZSI+PC9jYW52YXM+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5n
LWltYWdlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctaW1hZ2VzLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L2JvdW5jaW5nLWltYWdlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlPgorICAgIGltZyB7CisgICAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgfQorICA8L3N0eWxlPgorICA8bGluayByZWw9InN0
eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvYmVuY2htYXJrLmNz
cyI+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3Njcmlw
dD4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3Njcmlw
dD4gIAorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0Pgor
ICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICA8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
Ym91bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNl
cy9ib3VuY2luZy1pbWFnZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYg
aWQ9InN0YWdlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc2hhcGVzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zaGFwZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
c2hhcGVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAgLmNpcmNsZSB7CisgICAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOworICAgICAg
Ym9yZGVyLXJhZGl1czogNTAlIDUwJTsKKyAgICB9CisgICAgLnJlY3QgeworICAgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsKKyAgICB9Cisg
ICAgLnN0YXIgeworICAgICAgLXdlYmtpdC1jbGlwLXBhdGg6IHBvbHlnb24oNTAlIDAlLCAzOCUg
MzglLCAwJSAzOCUsIDMwJSA2MCUsIDE4JSAxMDAlLCA1MCUgNzUlLCA4MiUgMTAwJSwgNzAlIDYw
JSwgMTAwJSAzOCUsIDYyJSAzOCUpOworICAgICAgLW1zLWNsaXAtcGF0aDogcG9seWdvbig1MCUg
MCUsIDM4JSAzOCUsIDAlIDM4JSwgMzAlIDYwJSwgMTglIDEwMCUsIDUwJSA3NSUsIDgyJSAxMDAl
LCA3MCUgNjAlLCAxMDAlIDM4JSwgNjIlIDM4JSk7ICAKKyAgICAgIGNsaXAtcGF0aDogcG9seWdv
big1MCUgMCUsIDM4JSAzOCUsIDAlIDM4JSwgMzAlIDYwJSwgMTglIDEwMCUsIDUwJSA3NSUsIDgy
JSAxMDAlLCA3MCUgNjAlLCAxMDAlIDM4JSwgNjIlIDM4JSk7CisgICAgfQorICA8L3N0eWxlPgor
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJj
ZXMvYmVuY2htYXJrLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3Jp
dGhtLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdGF0aXN0
aWNzLmpzIj48L3NjcmlwdD4gIAorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL21haW4u
anMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2Ny
aXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+
CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAg
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlw
dCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1zaGFwZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CisgIDxkaXYgaWQ9InN0YWdlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91
bmNpbmctc3ZnLWltYWdlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1s
CShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvYmVuY2ht
YXJrLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48
L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48
L3NjcmlwdD4gIAorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2Ny
aXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICA8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+CisgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorICA8c3ZnIGlkPSJzdGFnZSI+PC9zdmc+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5n
LXN2Zy1zaGFwZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbAkocmV2
aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5j
c3MiPgorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3Jp
cHQ+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3Jp
cHQ+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+Cisg
IDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9i
b3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2JvdW5jaW5nLXN2Zy1zaGFwZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxz
dmcgaWQ9InN0YWdlIj48L3N2Zz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5j
aW5nLWNhbnZhcy1pbWFnZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFz
LWltYWdlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MiBAQAorZnVuY3Rpb24gQm91bmNpbmdDYW52
YXNJbWFnZShzdGFnZSkgeworICAgIEJvdW5jaW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7
CisgICAgdGhpcy5fY29udGV4dCA9IHN0YWdlLmNvbnRleHQ7CisgICAgdGhpcy5faW1hZ2VFbGVt
ZW50ID0gc3RhZ2UuaW1hZ2VFbGVtZW50OworfQorCitCb3VuY2luZ0NhbnZhc0ltYWdlLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUpOworQm91bmNp
bmdDYW52YXNJbWFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc0ltYWdl
OworCitCb3VuY2luZ0NhbnZhc0ltYWdlLnByb3RvdHlwZS5fZHJhdyA9IGZ1bmN0aW9uKCkgewor
ICAgIHZhciBjZW50ZXIgPSB0aGlzLmNlbnRlcigpOworCisgICAgdGhpcy5fY29udGV4dC5zYXZl
KCk7CisgICAgdGhpcy5fY29udGV4dC50cmFuc2xhdGUoY2VudGVyLngsIGNlbnRlci55KTsKKyAg
ICB0aGlzLl9jb250ZXh0LnJvdGF0ZSh0aGlzLl9yb3RhdGVyLmRlZ3JlZSgpICogTWF0aC5QSSAv
IDE4MCk7CisgICAgdGhpcy5fY29udGV4dC50cmFuc2xhdGUoLXRoaXMuX3NpemUueCAvIDIsIC10
aGlzLl9zaXplLnkgLyAyKTsKKyAgICAKKyAgICB0aGlzLl9jb250ZXh0LmRyYXdJbWFnZSh0aGlz
Ll9pbWFnZUVsZW1lbnQsIDAsIDAsIHRoaXMuX3NpemUueCwgdGhpcy5fc2l6ZS55KTsKKyAgICB0
aGlzLl9jb250ZXh0LnJlc3RvcmUoKTsKK30KKworQm91bmNpbmdDYW52YXNJbWFnZS5wcm90b3R5
cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkgeworICAgIEJvdW5jaW5nUGFydGljbGUu
cHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEpOworICAgIHRoaXMuX2RyYXco
KTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZShlbGVtZW50LCBvcHRp
b25zKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9w
dGlvbnMpOworICAgIHRoaXMuY29udGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCIyZCIp
OworICAgIHZhciBpbWFnZVNyYyA9IG9wdGlvbnNbImltYWdlU3JjIl0gfHwgInJlc291cmNlcy95
aW4teWFuZy5zdmciOworICAgIAorICAgIHZhciBpbWFnZUVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSgiaGlkZGVuIik7CisgICAgY29uc29sZS5hc3NlcnQoaW1hZ2VF
bGVtZW50cy5sZW5ndGgpOworICAgICAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGltYWdl
RWxlbWVudHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKGltYWdlRWxlbWVudHNbaV0uZ2V0
QXR0cmlidXRlKCJzcmMiKSA9PSBpbWFnZVNyYykgeworICAgICAgICAgICAgdGhpcy5pbWFnZUVs
ZW1lbnQgPSBpbWFnZUVsZW1lbnRzW2ldOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIH0KKworICAgIHRoaXMuaW1h
Z2VFbGVtZW50ID0gdGhpcy5pbWFnZUVsZW1lbnQgfHwgaW1hZ2VFbGVtZW50c1swXTsKK30KKwor
Qm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5j
aW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2Uu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZTsKKworQm91
bmNpbmdDYW52YXNJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlv
bigpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzSW1hZ2UodGhpcyk7Cit9CisKK2Z1
bmN0aW9uIEJvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0b3IoYmVuY2htYXJrKSB7CisgICAgQm91
bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyayk7CisgICAgdGhpcy5f
Y29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4dDsKK30KKworQm91bmNpbmdDYW52YXNJ
bWFnZXNBbmltYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVz
QW5pbWF0b3IucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0b3IucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNJbWFnZXNBbmltYXRvcjsKKworQm91bmNp
bmdDYW52YXNJbWFnZXNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkgewor
ICAgIHRoaXMuX2NvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uu
c2l6ZSgpLngsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZSgpLnkpOworICAgIHJldHVybiBC
b3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcyk7Cit9
CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBv
cHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xl
c0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwg
cHJvZ3Jlc3NCYXIpOworfQorCitCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay5wcm90b3R5
cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSk7
CitCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBC
b3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyazsKKworQm91bmNpbmdDYW52YXNJbWFnZXNCZW5j
aG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkgeworICAgIHJl
dHVybiBuZXcgQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25z
KTsKK30KKworQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFu
aW1hdG9yID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdl
c0FuaW1hdG9yKHRoaXMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1
bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsK
KyAgICB3aW5kb3cuYmVuY2htYXJrID0gbmV3IEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJr
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9y
ZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9i
b3VuY2luZy1jYW52YXMtc2hhcGVzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmct
Y2FudmFzLXNoYXBlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0MiBAQAorZnVuY3Rp
b24gQm91bmNpbmdDYW52YXNTaGFwZShzdGFnZSkgeworICAgIEJvdW5jaW5nUGFydGljbGUuY2Fs
bCh0aGlzLCBzdGFnZSk7CisgICAgdGhpcy5fc2hhcGUgPSBzdGFnZS5zaGFwZTsKKyAgICB0aGlz
Ll9maWxsID0gc3RhZ2UuZmlsbDsKKyAgICB0aGlzLl9jbGlwID0gc3RhZ2UuY2xpcDsKKyAgICB0
aGlzLl9jb250ZXh0ID0gc3RhZ2UuY29udGV4dDsKKyAgICB0aGlzLl9jb2xvcjAgPSBzdGFnZS5y
YW5kb21Db2xvcigpOworICAgIHRoaXMuX2NvbG9yMSA9IHN0YWdlLnJhbmRvbUNvbG9yKCk7ICAg
IAorfQorCitCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91
bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1NoYXBlOworCitCb3VuY2luZ0NhbnZhc1NoYXBl
LnByb3RvdHlwZS5fZHJhdyA9IGZ1bmN0aW9uKCkgeworICAgIAorICAgIHRoaXMuX2NvbnRleHQu
c2F2ZSgpOworICAgIHRoaXMuX2NvbnRleHQudHJhbnNsYXRlKHRoaXMuX3Bvc2l0aW9uLngsIHRo
aXMuX3Bvc2l0aW9uLnkpOworCisgICAgLy8gU2V0dGluZyB0aGUgZmlsbCBzdHlsZQorICAgIHN3
aXRjaCAodGhpcy5fZmlsbCkgeworICAgIGNhc2UgInNvbGlkIjoKKyAgICBkZWZhdWx0OgorICAg
ICAgICB0aGlzLl9jb250ZXh0LmZpbGxTdHlsZSA9IHRoaXMuX2NvbG9yMDsKKyAgICAgICAgYnJl
YWs7CisKKyAgICBjYXNlICJncmFkaWVudCI6CisgICAgICAgIHZhciBncmFkaWVudCA9IHRoaXMu
X2NvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgdGhpcy5fc2l6ZS53aWR0aCgpLCAw
KTsKKyAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsIHRoaXMuX2NvbG9yMCk7CisgICAg
ICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgxLCB0aGlzLl9jb2xvcjEpOyAKKyAgICAgICAgdGhp
cy5fY29udGV4dC5maWxsU3R5bGUgPSBncmFkaWVudDsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgLy8gUm90YXRpb24gYXJvdW5kIHRoZSBjZW50ZXIKKyAgICBpZiAodGhpcy5fc2hhcGUg
IT0gImNpcmNsZSIpIHsKKyAgICAgICAgdGhpcy5fY29udGV4dC50cmFuc2xhdGUodGhpcy5fc2l6
ZS54IC8gMiwgdGhpcy5fc2l6ZS55IC8gMik7CisgICAgICAgIHRoaXMuX2NvbnRleHQucm90YXRl
KHRoaXMuX3JvdGF0ZXIuZGVncmVlKCkgKiBNYXRoLlBJIC8gMTgwKTsKKyAgICAgICAgdGhpcy5f
Y29udGV4dC50cmFuc2xhdGUoLXRoaXMuX3NpemUueCAvIDIsIC10aGlzLl9zaXplLnkgLyAyKTsK
KyAgICB9CisKKyAgICB2YXIgY2xpcFBvaW50cyA9IG51bGw7CisgICAgCisgICAgc3dpdGNoICh0
aGlzLl9jbGlwKSB7CisgICAgY2FzZSAic3RhciI6CisgICAgICAgIGNsaXBQb2ludHMgPSAgWwor
ICAgICAgICAgICAgbmV3IFBvaW50KDAuNTAsIDAuMDApLAorICAgICAgICAgICAgbmV3IFBvaW50
KDAuMzgsIDAuMzgpLAorICAgICAgICAgICAgbmV3IFBvaW50KDAuMDAsIDAuMzgpLAorICAgICAg
ICAgICAgbmV3IFBvaW50KDAuMzAsIDAuNjApLAorICAgICAgICAgICAgbmV3IFBvaW50KDAuMTgs
IDEuMDApLAorICAgICAgICAgICAgbmV3IFBvaW50KDAuNTAsIDAuNzUpLAorICAgICAgICAgICAg
bmV3IFBvaW50KDAuODIsIDEuMDApLAorICAgICAgICAgICAgbmV3IFBvaW50KDAuNzAsIDAuNjAp
LAorICAgICAgICAgICAgbmV3IFBvaW50KDEuMDAsIDAuMzgpLAorICAgICAgICAgICAgbmV3IFBv
aW50KDAuNjIsIDAuMzgpCisgICAgICAgIF07CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAK
KyAgICBpZiAoY2xpcFBvaW50cykgeworICAgICAgICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgp
OworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIGNsaXBQb2ludHMuZm9yRWFjaChm
dW5jdGlvbihwb2ludCwgaW5kZXgpIHsKKyAgICAgICAgICAgIHZhciBwb2ludCA9IHNlbGYuX3Np
emUubXVsdGlwbHkocG9pbnQpOworICAgICAgICAgICAgaWYgKCFpbmRleCkKKyAgICAgICAgICAg
ICAgICBzZWxmLl9jb250ZXh0Lm1vdmVUbyhwb2ludC54LCBwb2ludC55KTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBzZWxmLl9jb250ZXh0LmxpbmVUbyhwb2ludC54LCBwb2lu
dC55KTsKKyAgICAgICAgfSk7CisgICAgICAgIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7Cisg
ICAgICAgIHRoaXMuX2NvbnRleHQuY2xpcCgpOworICAgIH0KKworICAgIC8vIFNoYXBlIGRyYXdp
bmcKKyAgICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgpOworICAgIAorICAgIHN3aXRjaCAodGhp
cy5fc2hhcGUpIHsKKyAgICBjYXNlICJjaXJjbGUiOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHZh
ciBjZW50ZXIgPSB0aGlzLl9zaXplLmNlbnRlcigpOworICAgICAgICB2YXIgcmFkaXVzID0gTWF0
aC5taW4odGhpcy5fc2l6ZS54LCB0aGlzLl9zaXplLnkpIC8gMjsKKyAgICAgICAgdGhpcy5fY29u
dGV4dC5hcmMoY2VudGVyLngsIGNlbnRlci55LCByYWRpdXMsIDAsIE1hdGguUEkgKiAyLCB0cnVl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgInJlY3QiOgorICAgICAgICB0
aGlzLl9jb250ZXh0LnJlY3QoMCwgMCwgdGhpcy5fc2l6ZS53aWR0aCgpLCB0aGlzLl9zaXplLmhl
aWdodCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIHRoaXMuX2NvbnRleHQu
ZmlsbCgpOworICAgIHRoaXMuX2NvbnRleHQucmVzdG9yZSgpOworfQorCitCb3VuY2luZ0NhbnZh
c1NoYXBlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKSB7CisgICAgQm91
bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7Cisg
ICAgdGhpcy5fZHJhdygpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdl
KGVsZW1lbnQsIG9wdGlvbnMpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhp
cywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5wYXJzZVNoYXBlUGFyYW10ZXJzKG9wdGlv
bnMpOworICAgIHRoaXMuY29udGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpCit9
CisKK0JvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShC
b3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc1NoYXBlc1N0
YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2U7CisK
K0JvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlID0gZnVu
Y3Rpb24oKSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc1NoYXBlKHRoaXMpOworfQor
CitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yKGJlbmNobWFyaykgeworICAg
IEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1hcmspOworICAgIHRo
aXMuX2NvbnRleHQgPSBiZW5jaG1hcmsuX3N0YWdlLmNvbnRleHQ7Cit9CisKK0JvdW5jaW5nQ2Fu
dmFzU2hhcGVzQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRp
Y2xlc0FuaW1hdG9yLnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzU2hhcGVzQW5pbWF0b3I7CisKK0Jv
dW5jaW5nQ2FudmFzU2hhcGVzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigp
IHsKKyAgICB0aGlzLl9jb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLl9iZW5jaG1hcmsuX3N0
YWdlLnNpemUoKS54LCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUoKS55KTsKKyAgICByZXR1
cm4gQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMp
OworfQorCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgQm91bmNpbmdQYXJ0
aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFi
bGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5
cGUpOworQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nQ2FudmFzU2hhcGVz
QmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAg
ICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0
aW9ucyk7Cit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVh
dGVBbmltYXRvciA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNT
aGFwZXNBbmltYXRvcih0aGlzKTsKK30KKword2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUg
PSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFy
KSB7CisgICAgd2luZG93LmJlbmNobWFyayA9IG5ldyBCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNo
bWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30K
SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWltYWdlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3Vu
Y2luZy1pbWFnZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1pbWFnZXMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorZnVuY3Rpb24gQm91bmNpbmdJbWFnZShz
dGFnZSkgeworICAgIEJvdW5jaW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CisKKyAgICB0
aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICB0aGlzLmVs
ZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLl9zaXplLnggKyAicHgiOworICAgIHRoaXMuZWxlbWVu
dC5zdHlsZS5oZWlnaHQgPSB0aGlzLl9zaXplLnkgKyAicHgiOworICAgIHRoaXMuZWxlbWVudC5z
ZXRBdHRyaWJ1dGUoInNyYyIsIHN0YWdlLmltYWdlU3JjKTsKKyAgICAKKyAgICBzdGFnZS5lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7CisgICAgdGhpcy5fbW92ZSgpOworfQorCitC
b3VuY2luZ0ltYWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5w
cm90b3R5cGUpOworQm91bmNpbmdJbWFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2lu
Z0ltYWdlOworCitCb3VuY2luZ0ltYWdlLnByb3RvdHlwZS5fbW92ZSA9IGZ1bmN0aW9uKCkgewor
ICAgIHRoaXMuZWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSAidHJhbnNsYXRlKCIgKyB0aGlzLl9w
b3NpdGlvbi54ICsgInB4LCIgKyB0aGlzLl9wb3NpdGlvbi55ICsgInB4KSAiICsgdGhpcy5fcm90
YXRlci5yb3RhdGVaKCk7Cit9CisgICAgCitCb3VuY2luZ0ltYWdlLnByb3RvdHlwZS5hbmltYXRl
ID0gZnVuY3Rpb24odGltZURlbHRhKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUu
YW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7CisgICAgdGhpcy5fbW92ZSgpOworfQorCitm
dW5jdGlvbiBCb3VuY2luZ0ltYWdlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpIHsKKyAgICBCb3Vu
Y2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhp
cy5pbWFnZVNyYyA9IG9wdGlvbnNbImltYWdlU3JjIl0gfHwgIi4uL3Jlc291cmNlcy95aW4teWFu
Zy5zdmciOworfQorCitCb3VuY2luZ0ltYWdlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdJbWFnZXNTdGFn
ZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0ltYWdlc1N0YWdlOworCitCb3VuY2lu
Z0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkgeworICAg
IHJldHVybiBuZXcgQm91bmNpbmdJbWFnZSh0aGlzKTsKK30KKworQm91bmNpbmdJbWFnZXNTdGFn
ZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkID0gZnVuY3Rpb24ocGFydGljbGUpIHsK
KyAgICBpZiAocGFydGljbGUuZWxlbWVudCAmJiBwYXJ0aWNsZS5lbGVtZW50LnBhcmVudE5vZGUg
JiYgcGFydGljbGUuZWxlbWVudC5wYXJlbnROb2RlID09IHRoaXMuZWxlbWVudCkKKyAgICAgICAg
dGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKHBhcnRpY2xlLmVsZW1lbnQpOworfQorCitmdW5jdGlv
biBCb3VuY2luZ0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFi
bGUsIHByb2dyZXNzQmFyKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0
aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30K
KworQm91bmNpbmdJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3Vu
Y2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOworQm91bmNpbmdJbWFnZXNCZW5jaG1h
cmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdJbWFnZXNCZW5jaG1hcms7CisKK0Jv
dW5jaW5nSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVs
ZW1lbnQpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nSW1hZ2VzU3RhZ2UoZWxlbWVudCwgdGhp
cy5fb3B0aW9ucyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rp
b24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAg
IHdpbmRvdy5iZW5jaG1hcmsgPSBuZXcgQm91bmNpbmdJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9i
b3VuY2luZy1wYXJ0aWNsZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGlj
bGVzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTgwIEBACitmdW5jdGlvbiBCb3VuY2luZ1BhcnRpY2xlUm90
YXRlcihyb3RhdGVJbnRlcnZhbCkgeworICAgIHRoaXMuX3RpbWVEZWx0YSA9IDA7CisgICAgdGhp
cy5fcm90YXRlSW50ZXJ2YWwgPSByb3RhdGVJbnRlcnZhbDsKK30KKworQm91bmNpbmdQYXJ0aWNs
ZVJvdGF0ZXIucHJvdG90eXBlID0geworICAgIG5leHQgOiBmdW5jdGlvbih0aW1lRGVsdGEpIHsK
KyAgICAgICAgdGhpcy5fdGltZURlbHRhID0gKHRoaXMuX3RpbWVEZWx0YSArIHRpbWVEZWx0YSkg
JSB0aGlzLl9yb3RhdGVJbnRlcnZhbDsKKyAgICB9LAorICAgIGRlZ3JlZSA6IGZ1bmN0aW9uKCkg
eworICAgICAgICByZXR1cm4gKDM2MCAqIHRoaXMuX3RpbWVEZWx0YSkgLyB0aGlzLl9yb3RhdGVJ
bnRlcnZhbDsKKyAgICB9LAorICAgIHJvdGF0ZVogOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0
dXJuICJyb3RhdGVaKCIgKyBNYXRoLmZsb29yKHRoaXMuZGVncmVlKCkpICsgImRlZykiOworICAg
IH0sCisgICAgcm90YXRlIDogZnVuY3Rpb24oKSB7ICAgIAorICAgICAgICByZXR1cm4gInJvdGF0
ZSgiICsgTWF0aC5mbG9vcih0aGlzLmRlZ3JlZSgpKSArICIpICI7CisgICAgfQorfQorCitmdW5j
dGlvbiBCb3VuY2luZ1BhcnRpY2xlKHN0YWdlKSB7CisgICAgdGhpcy5fc3RhZ2VTaXplID0gc3Rh
Z2Uuc2l6ZSgpOworICAgIHRoaXMuX3NpemUgPSBzdGFnZS5wYXJ0aWNsZVNpemU7CisgICAgCisg
ICAgdGhpcy5fcG9zaXRpb24gPSBzdGFnZS5yYW5kb21Qb3NpdGlvbigpOworICAgIHRoaXMuX2Fu
Z2xlID0gc3RhZ2UucmFuZG9tQW5nbGUoKTsKKyAgICB0aGlzLl92ZWxvY2l0eSA9IHN0YWdlLnJh
bmRvbVZlbG9jaXR5KCk7CisgICAgdGhpcy5fcm90YXRlciA9IHN0YWdlLnJhbmRvbVJvdGF0ZXIo
KTsKK30KKworQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUgPSB7CisgICAgY2VudGVyIDogZnVu
Y3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlvbi5hZGQodGhpcy5fc2l6ZS5j
ZW50ZXIoKSk7CisgICAgfSwKKyAgICBhbmltYXRlIDogZnVuY3Rpb24odGltZURlbHRhKSB7Cisg
ICAgICAgIHRoaXMuX3Bvc2l0aW9uID0gdGhpcy5fcG9zaXRpb24ubW92ZSh0aGlzLl9hbmdsZSwg
dGhpcy5fdmVsb2NpdHksIHRpbWVEZWx0YSk7CisgICAgICAgIHRoaXMuX3JvdGF0ZXIubmV4dCh0
aW1lRGVsdGEpOworCisgICAgICAgIC8vIElmIHBhcnRpY2xlIGlzIGdvaW5nIHRvIG1vdmUgb2Zm
IHJpZ2h0IHNpZGUKKyAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uLnggKyB0aGlzLl9zaXplLngg
PiB0aGlzLl9zdGFnZVNpemUueCkgeworICAgICAgICAgICAgLy8gSWYgZGlyZWN0aW9uIGlzIEVh
c3QtU291dGgKKyAgICAgICAgICAgIGlmICh0aGlzLl9hbmdsZSA+PSAwICYmIHRoaXMuX2FuZ2xl
IDwgTWF0aC5QSSAvIDIpCisgICAgICAgICAgICAgICAgdGhpcy5fYW5nbGUgPSBNYXRoLlBJIC0g
dGhpcy5fYW5nbGU7CisgICAgICAgICAgICAvLyBJZiBhbmdsZSBpcyBFYXN0LU5vcnRoCisgICAg
ICAgICAgICBlbHNlIGlmICh0aGlzLl9hbmdsZSA+IE1hdGguUEkgLyAyICogMykKKyAgICAgICAg
ICAgICAgICB0aGlzLl9hbmdsZSA9IHRoaXMuX2FuZ2xlIC0gKHRoaXMuX2FuZ2xlIC0gTWF0aC5Q
SSAvIDIgKiAzKSAqIDI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIElmIHBhcnRp
Y2xlIGlzIGdvaW5nIHRvIG1vdmUgb2ZmIGxlZnQgc2lkZQorICAgICAgICBpZiAodGhpcy5fcG9z
aXRpb24ueCA8IDApIHsKKyAgICAgICAgICAgIC8vIElmIGFuZ2xlIGlzIFdlc3QtU291dGgKKyAg
ICAgICAgICAgIGlmICh0aGlzLl9hbmdsZSA+IE1hdGguUEkgLyAyICYmIHRoaXMuX2FuZ2xlIDwg
TWF0aC5QSSkKKyAgICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IE1hdGguUEkgLSB0aGlzLl9h
bmdsZTsKKyAgICAgICAgICAgIC8vIElmIGFuZ2xlIGlzIFdlc3QtTm9ydGgKKyAgICAgICAgICAg
IGVsc2UgaWYgKHRoaXMuX2FuZ2xlID4gTWF0aC5QSSAmJiB0aGlzLl9hbmdsZSA8IE1hdGguUEkg
LyAyICogMykKKyAgICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IHRoaXMuX2FuZ2xlICsgKE1h
dGguUEkgLyAyICogMyAtIHRoaXMuX2FuZ2xlKSAqIDI7CisgICAgICAgIH0KKworICAgICAgICAv
LyBJZiBwYXJ0aWNsZSBpcyBnb2luZyB0byBtb3ZlIG9mZiBib3R0b20gc2lkZQorICAgICAgICBp
ZiAodGhpcy5fcG9zaXRpb24ueSArIHRoaXMuX3NpemUueSA+IHRoaXMuX3N0YWdlU2l6ZS55KSB7
CisgICAgICAgICAgICAvLyBJZiBkaXJlY3Rpb24gaXMgU291dGgKKyAgICAgICAgICAgIGlmICh0
aGlzLl9hbmdsZSA+IDAgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJKQorICAgICAgICAgICAgICAg
IHRoaXMuX2FuZ2xlID0gTWF0aC5QSSAqIDIgLSB0aGlzLl9hbmdsZTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIElmIHBhcnRpY2xlIGlzIGdvaW5nIHRvIG1vdmUgb2ZmIHRvcCBzaWRlCisgICAg
ICAgIGlmICh0aGlzLl9wb3NpdGlvbi55IDwgMCkgeworICAgICAgICAgICAgLy8gSWYgZGlyZWN0
aW9uIGlzIE5vcnRoCisgICAgICAgICAgICBpZiAodGhpcy5fYW5nbGUgPiBNYXRoLlBJICYmIHRo
aXMuX2FuZ2xlIDwgTWF0aC5QSSAqIDIpCisgICAgICAgICAgICAgICAgdGhpcy5fYW5nbGUgPSB0
aGlzLl9hbmdsZSAtICh0aGlzLl9hbmdsZSAtIE1hdGguUEkpICogMjsKKyAgICAgICAgfQorICAg
IH0KK30KKworZnVuY3Rpb24gQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvcihiZW5jaG1hcmspIHsK
KyAgICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyayk7Cit9OworCitCb3VuY2luZ1BhcnRp
Y2xlc0FuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQW5pbWF0b3IucHJvdG90eXBl
KTsKK0JvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91
bmNpbmdQYXJ0aWNsZXNBbmltYXRvcjsKKworQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90
b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkgeworICAgIGlmICghQW5pbWF0b3IucHJvdG90eXBl
LmFuaW1hdGUuY2FsbCh0aGlzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHRoaXMuX2Jl
bmNobWFyay5fc3RhZ2UuYW5pbWF0ZSh0aGlzLnRpbWVEZWx0YSgpKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdQYXJ0aWNsZXNTdGFnZShlbGVtZW50LCBvcHRpb25z
KSB7CisgICAgU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50KTsKKyAgICAKKyAgICB0aGlzLnBhcnRp
Y2xlU2l6ZSA9IG5ldyBQb2ludChwYXJzZUludChvcHRpb25zWyJwYXJ0aWNsZVdpZHRoIl0pIHx8
IDEwLCBwYXJzZUludChvcHRpb25zWyJwYXJ0aWNsZUhlaWdodCJdKSB8fCAxMCk7CisgICAgdGhp
cy5zdmdOYW1lc3BhY2UgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciOworICAgIHRoaXMu
eGxpbmtOYW1lc3BhY2UgPSAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI7CisgICAgCisg
ICAgdGhpcy5fcGFydGljbGVzID0gW107CisKKyAgICB0aGlzLl9tYXhWZWxvY2l0eSA9IHBhcnNl
SW50KG9wdGlvbnNbIm1heFZlbG9jaXR5Il0pIHx8IDUwMDsKKyAgICB0aGlzLl9tYXhWZWxvY2l0
eSA9IE1hdGgubWF4KHRoaXMuX21heFZlbG9jaXR5LCAxMDApOworfQorCitCb3VuY2luZ1BhcnRp
Y2xlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2UucHJvdG90eXBlKTsKK0Jv
dW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZTsKKworQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucGFyc2VTaGFw
ZVBhcmFtdGVycyA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKKyAgICB0aGlzLnNoYXBlID0gb3B0aW9u
c1sic2hhcGUiXSB8fCAiY2lyY2xlIjsKKyAgICB0aGlzLmZpbGwgPSBvcHRpb25zWyJmaWxsIl0g
fHwgInNvbGlkIjsKKyAgICB0aGlzLmNsaXAgPSBvcHRpb25zWyJjbGlwIl0gfHwgIiI7Cit9CisK
K0JvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnJhbmRvbVJvdGF0ZXIgPSBmdW5jdGlv
bigpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nUGFydGljbGVSb3RhdGVyKHRoaXMucmFuZG9t
KDEwMDAsIDEwMDAwKSk7Cit9CisgICAgCitCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlw
ZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKSB7CisgICAgZm9yKHZhciBpID0gMDsgaSA8
IHRoaXMuX3BhcnRpY2xlcy5sZW5ndGg7ICsraSkKKyAgICAgICAgdGhpcy5fcGFydGljbGVzW2ld
LmFuaW1hdGUodGltZURlbHRhKTsKK30KKyAgICAKK0JvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJv
dG90eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkgeworICAgIGNvdW50ID0gY291bnQgPiAwID8g
TWF0aC5mbG9vcihjb3VudCkgOiBNYXRoLmNlaWwoY291bnQpOworCisgICAgaWYgKGNvdW50ID09
IDApCisgICAgICAgIHJldHVybiB0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoOworCisgICAgaWYgKGNv
dW50ID4gMCkgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YodGhpcy5jcmVhdGVQYXJ0
aWNsZSkgPT0gImZ1bmN0aW9uIik7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7
ICsraSkKKyAgICAgICAgICAgIHRoaXMuX3BhcnRpY2xlcy5wdXNoKHRoaXMuY3JlYXRlUGFydGlj
bGUoKSk7CisgICAgICAgIHJldHVybiB0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoOworICAgIH0KKwor
ICAgIGNvdW50ID0gTWF0aC5taW4oLWNvdW50LCB0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoKTsKKyAg
ICAgICAgCisgICAgaWYgKHR5cGVvZih0aGlzLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCkgPT0gImZ1
bmN0aW9uIikgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAg
ICAgICAgICB0aGlzLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCh0aGlzLl9wYXJ0aWNsZXNbdGhpcy5f
cGFydGljbGVzLmxlbmd0aCAtIDEgLSBpXSk7CisgICAgfQorCisgICAgdGhpcy5fcGFydGljbGVz
LnNwbGljZSgtY291bnQsIGNvdW50KTsKKyAgICByZXR1cm4gdGhpcy5fcGFydGljbGVzLmxlbmd0
aDsKK30KKworZnVuY3Rpb24gQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIEJlbmNobWFyay5jYWxs
KHRoaXMsIG9wdGlvbnMpOworCisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgic3RhZ2UiKTsKKyAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgid2lkdGgiLCBkb2N1bWVu
dC5ib2R5Lm9mZnNldFdpZHRoKTsKKyAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgiaGVpZ2h0Iiwg
ZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQpOworCisgICAgdGhpcy5fc3RhZ2UgPSB0aGlzLmNy
ZWF0ZVN0YWdlKGVsZW1lbnQpOworICAgIHRoaXMuX2FuaW1hdG9yID0gdGhpcy5jcmVhdGVBbmlt
YXRvcigpOworICAgIHRoaXMuX3N1aXRlID0gc3VpdGU7CisgICAgdGhpcy5fdGVzdCA9IHRlc3Q7
CisgICAgdGhpcy5fcmVjb3JkVGFibGUgPSByZWNvcmRUYWJsZTsKKyAgICB0aGlzLl9wcm9ncmVz
c0JhciA9IHByb2dyZXNzQmFyOworfQorCitCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJlbmNobWFyay5wcm90b3R5cGUpOworQm91bmNpbmdQYXJ0
aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdQYXJ0aWNsZXNC
ZW5jaG1hcms7CisKK0JvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVB
bmltYXRvciA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdQYXJ0aWNsZXNB
bmltYXRvcih0aGlzKTsKK30KKworQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBl
LnR1bmUgPSBmdW5jdGlvbihjb3VudCkgeworICAgIHJldHVybiB0aGlzLl9zdGFnZS50dW5lKGNv
dW50KTsKK30KKworQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLmNsZWFyID0g
ZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRoaXMuX3N0YWdlLmNsZWFyKCk7Cit9CisKK0JvdW5j
aW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5zaG93UmVzdWx0cyA9IGZ1bmN0aW9uKG1l
c3NhZ2UsIHByb2dyZXNzKSB7CisgICAgaWYgKCF0aGlzLl9yZWNvcmRUYWJsZSB8fCAhdGhpcy5f
cHJvZ3Jlc3NCYXIgfHwgIXRoaXMuX3N1aXRlIHx8ICF0aGlzLl90ZXN0KQorICAgICAgICByZXR1
cm47CisKKyAgICB0aGlzLl9yZWNvcmRUYWJsZS5zaG93UmVjb3JkKHRoaXMuX3N1aXRlLCB0aGlz
Ll90ZXN0LCB0aGlzLl9zYW1wbGVyLCBtZXNzYWdlKTsKKyAgICB0aGlzLl9wcm9ncmVzc0Jhci5z
ZXRQb3MocHJvZ3Jlc3MpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc2hhcGVzLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXNoYXBlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2Vz
L2JvdW5jaW5nLXNoYXBlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBACitmdW5j
dGlvbiBCb3VuY2luZ1NoYXBlKHN0YWdlKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRo
aXMsIHN0YWdlKTsKKworICAgIHRoaXMuZWxlbWVudCA9IHRoaXMuX2NyZWF0ZVNwYW4oc3RhZ2Up
OworICAgICAgICAKKyAgICBzd2l0Y2ggKHN0YWdlLmZpbGwpIHsKKyAgICBjYXNlICJzb2xpZCI6
CisgICAgZGVmYXVsdDoKKyAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xv
ciA9IHN0YWdlLnJhbmRvbUNvbG9yKCk7CisgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBj
YXNlICJncmFkaWVudCI6CisgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kID0g
ImxpbmVhci1ncmFkaWVudCgiICsgc3RhZ2UucmFuZG9tQ29sb3IoKSArICIsICIgKyBzdGFnZS5y
YW5kb21Db2xvcigpICsgIikiOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICB0aGlzLl9t
b3ZlKCk7Cit9CisKK0JvdW5jaW5nU2hhcGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3Vu
Y2luZ1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ1NoYXBlLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IEJvdW5jaW5nU2hhcGU7CisKK0JvdW5jaW5nU2hhcGUucHJvdG90eXBlLl9jcmVhdGVT
cGFuID0gZnVuY3Rpb24oc3RhZ2UpIHsKKyAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNwYW4iKTsKKyAgICBzcGFuLmNsYXNzTmFtZSA9IHN0YWdlLnNoYXBlICsgIiAiICsg
c3RhZ2UuY2xpcDsKKyAgICBzcGFuLnN0eWxlLndpZHRoID0gdGhpcy5fc2l6ZS54ICsgInB4IjsK
KyAgICBzcGFuLnN0eWxlLmhlaWdodCA9IHRoaXMuX3NpemUueSArICJweCI7CisgICAgc3RhZ2Uu
ZWxlbWVudC5hcHBlbmRDaGlsZChzcGFuKTsKKyAgICByZXR1cm4gc3BhbjsKK30KKworQm91bmNp
bmdTaGFwZS5wcm90b3R5cGUuX21vdmUgPSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLmVsZW1lbnQu
c3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZSgiICsgdGhpcy5fcG9zaXRpb24ueCArICJweCwi
ICsgdGhpcy5fcG9zaXRpb24ueSArICJweCkiICsgdGhpcy5fcm90YXRlci5yb3RhdGVaKCk7Cit9
CisgICAgCitCb3VuY2luZ1NoYXBlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURl
bHRhKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMs
IHRpbWVEZWx0YSk7CisgICAgdGhpcy5fcm90YXRlci5uZXh0KHRpbWVEZWx0YSk7ICAgIAorICAg
IHRoaXMuX21vdmUoKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdTaGFwZXNTdGFnZShlbGVtZW50
LCBvcHRpb25zKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1l
bnQsIG9wdGlvbnMpOworICAgIHRoaXMucGFyc2VTaGFwZVBhcmFtdGVycyhvcHRpb25zKTsKK30K
KworQm91bmNpbmdTaGFwZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5n
UGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nU2hhcGVzU3RhZ2UucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gQm91bmNpbmdTaGFwZXNTdGFnZTsKKworQm91bmNpbmdTaGFwZXNTdGFn
ZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3
IEJvdW5jaW5nU2hhcGUodGhpcyk7Cit9CisKK0JvdW5jaW5nU2hhcGVzU3RhZ2UucHJvdG90eXBl
LnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xlKSB7CisgICAgaWYgKHBh
cnRpY2xlLmVsZW1lbnQgJiYgcGFydGljbGUuZWxlbWVudC5wYXJlbnROb2RlICYmIHBhcnRpY2xl
LmVsZW1lbnQucGFyZW50Tm9kZSA9PSB0aGlzLmVsZW1lbnQpCisgICAgICAgIHRoaXMuZWxlbWVu
dC5yZW1vdmVDaGlsZChwYXJ0aWNsZS5lbGVtZW50KTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdT
aGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0JhcikgeworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUs
IHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5n
U2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNs
ZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nU2hhcGVzQmVuY2htYXJrLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU2hhcGVzQmVuY2htYXJrOworCitCb3VuY2luZ1NoYXBl
c0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KSB7Cisg
ICAgcmV0dXJuIG5ldyBCb3VuY2luZ1NoYXBlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMp
OworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICB3aW5kb3cuYmVu
Y2htYXJrID0gbmV3IEJvdW5jaW5nU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3Zn
LWltYWdlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzCShy
ZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDYxIEBACitmdW5jdGlvbiBCb3VuY2luZ1N2Z0ltYWdlKHN0YWdlKSB7Cisg
ICAgQm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKworICAgIHRoaXMuZWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhzdGFnZS5zdmdOYW1lc3BhY2UsICJpbWFnZSIp
OworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoIngiLCAwKTsKKyAgICB0aGlzLmVsZW1l
bnQuc2V0QXR0cmlidXRlKCJ5IiwgMCk7ICAgIAorICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1
dGUoIndpZHRoIiwgdGhpcy5fc2l6ZS54KTsKKyAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRl
KCJoZWlnaHQiLCB0aGlzLl9zaXplLnkpOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGVO
UyhzdGFnZS54bGlua05hbWVzcGFjZSwgImhyZWYiLCBzdGFnZS5pbWFnZVNyYyk7CisKKyAgICBz
dGFnZS5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7CisgICAgdGhpcy5fbW92ZSgp
OyAgICAKK30KKworQm91bmNpbmdTdmdJbWFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJv
dW5jaW5nUGFydGljbGUucHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnSW1hZ2UucHJvdG90eXBlLmNv
bnN0cnVjdG9yID0gQm91bmNpbmdTdmdJbWFnZTsKKworQm91bmNpbmdTdmdJbWFnZS5wcm90b3R5
cGUuX21vdmUgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgY2VudGVyID0gdGhpcy5jZW50ZXIoKTsK
KyAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCAKKyAgICAgICAgInRy
YW5zbGF0ZSgiICsgY2VudGVyLnggKyAiLCAiICsgY2VudGVyLnkgKyAiKSAiCisgICAgICAgICsg
dGhpcy5fcm90YXRlci5yb3RhdGUoKQorICAgICAgICArICJ0cmFuc2xhdGUoIiArIC10aGlzLl9z
aXplLnggLyAyICsgIiwgIiArIC10aGlzLl9zaXplLnkgLyAyICsgIikgIik7Cit9CisKK0JvdW5j
aW5nU3ZnSW1hZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpIHsKKyAg
ICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRh
KTsKKyAgICB0aGlzLl9tb3ZlKCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnSW1hZ2VzU3Rh
Z2UoZWxlbWVudCwgb3B0aW9ucykgeworICAgIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0
aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0aGlzLmltYWdlU3JjID0gb3B0aW9uc1siaW1h
Z2VTcmMiXSB8fCAicmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7Cit9CisKK0JvdW5jaW5nU3ZnSW1h
Z2VzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc1N0YWdl
LnByb3RvdHlwZSk7CitCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciA9IEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2U7CisKK0JvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UucHJv
dG90eXBlLmNyZWF0ZVBhcnRpY2xlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5ldyBCb3Vu
Y2luZ1N2Z0ltYWdlKHRoaXMpOworfQorCitCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlLnByb3RvdHlw
ZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQgPSBmdW5jdGlvbihwYXJ0aWNsZSkgeworICAgIGlmIChw
YXJ0aWNsZS5lbGVtZW50ICYmIHBhcnRpY2xlLmVsZW1lbnQucGFyZW50Tm9kZSAmJiBwYXJ0aWNs
ZS5lbGVtZW50LnBhcmVudE5vZGUgPT0gdGhpcy5lbGVtZW50KQorICAgICAgICB0aGlzLmVsZW1l
bnQucmVtb3ZlQ2hpbGQocGFydGljbGUuZWxlbWVudCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5n
U3ZnSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3Vu
Y2luZ1N2Z0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5n
UGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSk7CitCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFy
ay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyazsKKwor
Qm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rp
b24oZWxlbWVudCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdTdmdJbWFnZXNTdGFnZShlbGVt
ZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKword2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUg
PSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFy
KSB7CisgICAgd2luZG93LmJlbmNobWFyayA9IG5ldyBCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFy
ayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5k
ZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
cmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91
bmNpbmctc3ZnLXNoYXBlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1z
aGFwZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNjEgQEAKK2Z1bmN0aW9uIEJvdW5j
aW5nU3ZnU2hhcGUoc3RhZ2UpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3Rh
Z2UpOworICAgIHRoaXMuX3NoYXBlID0gc3RhZ2Uuc2hhcGU7CisgICAgCisgICAgc3dpdGNoICh0
aGlzLl9zaGFwZSkgeworICAgIGNhc2UgImNpcmNsZSI6CisgICAgZGVmYXVsdDoKKyAgICAgICAg
dGhpcy5lbGVtZW50ID0gdGhpcy5fY3JlYXRlQ2lyY2xlKHN0YWdlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgICAgIAorICAgIGNhc2UgInJlY3QiOgorICAgICAgICB0aGlzLmVsZW1lbnQgPSB0aGlz
Ll9jcmVhdGVSZWN0KHN0YWdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dpdGNo
IChzdGFnZS5jbGlwKSB7CisgICAgY2FzZSAic3RhciI6CisgICAgICAgIHN0YWdlLmVuc3VyZUNs
aXBTdGFySXNDcmVhdGVkKCk7ICAgIAorICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRl
KCJjbGlwLXBhdGgiLCAidXJsKCNzdGFyLWNsaXApIik7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIHN3aXRjaCAoc3RhZ2UuZmlsbCkgeworICAgIGNhc2UgInNvbGlkIjoKKyAgICBkZWZh
dWx0OgorICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJmaWxsIiwgc3RhZ2UucmFu
ZG9tQ29sb3IoKSk7CisgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlICJncmFkaWVu
dCI6CisgICAgICAgIHZhciBncmFkaWVudCA9IHN0YWdlLmNyZWF0ZUdyYWRpZW50KDIpOworICAg
ICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJmaWxsIiwgInVybCgjIiArIGdyYWRpZW50
LmdldEF0dHJpYnV0ZSgiaWQiKSArICIpIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IHRoaXMuX21vdmUoKTsgICAgCit9CisKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ1N2Z1NoYXBl
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU3ZnU2hhcGU7CisKK0JvdW5jaW5nU3Zn
U2hhcGUucHJvdG90eXBlLl9jcmVhdGVDaXJjbGUgPSBmdW5jdGlvbihzdGFnZSkgeworICAgIHZh
ciBjaXJjbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3RhZ2Uuc3ZnTmFtZXNwYWNlLCAi
Y2lyY2xlIik7CisgICAgY2lyY2xlLnNldEF0dHJpYnV0ZSgiY3giLCB0aGlzLl9zaXplLnggLyAy
KTsKKyAgICBjaXJjbGUuc2V0QXR0cmlidXRlKCJjeSIsIHRoaXMuX3NpemUueSAvIDIpOyAgICAK
KyAgICBjaXJjbGUuc2V0QXR0cmlidXRlKCJyIiwgTWF0aC5taW4odGhpcy5fc2l6ZS54LCB0aGlz
Ll9zaXplLnkpIC8gMik7CisgICAgc3RhZ2UuZWxlbWVudC5hcHBlbmRDaGlsZChjaXJjbGUpOwor
ICAgIHJldHVybiBjaXJjbGU7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLl9jcmVh
dGVSZWN0ID0gZnVuY3Rpb24oc3RhZ2UpIHsKKyAgICB2YXIgcmVjdCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUyhzdGFnZS5zdmdOYW1lc3BhY2UsICJyZWN0Iik7CisgICAgcmVjdC5zZXRBdHRy
aWJ1dGUoIngiLCAwKTsKKyAgICByZWN0LnNldEF0dHJpYnV0ZSgieSIsIDApOyAgICAKKyAgICBy
ZWN0LnNldEF0dHJpYnV0ZSgid2lkdGgiLCB0aGlzLl9zaXplLngpOworICAgIHJlY3Quc2V0QXR0
cmlidXRlKCJoZWlnaHQiLCB0aGlzLl9zaXplLnkpOworICAgIHN0YWdlLmVsZW1lbnQuYXBwZW5k
Q2hpbGQocmVjdCk7ICAgIAorICAgIHJldHVybiByZWN0OworfQorCitCb3VuY2luZ1N2Z1NoYXBl
LnByb3RvdHlwZS5fbW92ZSA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB0cmFuc2Zvcm07CisgICAg
aWYgKHRoaXMuX3NoYXBlID09ICJjaXJjbGUiKQorICAgICAgICB0cmFuc2Zvcm0gPSAidHJhbnNs
YXRlKCIgKyB0aGlzLl9wb3NpdGlvbi54ICsgIiwgIiArIHRoaXMuX3Bvc2l0aW9uLnkgKyAiKSI7
CisgICAgZWxzZSB7CisgICAgICAgIHZhciBjZW50ZXIgPSB0aGlzLmNlbnRlcigpOworICAgICAg
ICB0cmFuc2Zvcm0gID0gInRyYW5zbGF0ZSgiICsgY2VudGVyLnggKyAiLCAiICsgY2VudGVyLnkg
KyAiKSAiOworICAgICAgICB0cmFuc2Zvcm0gKz0gdGhpcy5fcm90YXRlci5yb3RhdGUoKTsKKyAg
ICAgICAgdHJhbnNmb3JtICs9ICJ0cmFuc2xhdGUoIiArIC10aGlzLl9zaXplLndpZHRoKCkgLyAy
ICsgIiwgIiArIC10aGlzLl9zaXplLmhlaWdodCgpIC8gMiArICIpIjsKKyAgICB9CisgICAgdGhp
cy5lbGVtZW50LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwgdHJhbnNmb3JtKTsKK30KKworQm91
bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkgewor
ICAgIEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVs
dGEpOworICAgIHRoaXMuX21vdmUoKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdTdmdTaGFwZXNT
dGFnZShlbGVtZW50LCBvcHRpb25zKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxs
KHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgIHRoaXMucGFyc2VTaGFwZVBhcmFtdGVycyhv
cHRpb25zKTsKK30KKworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3Qu
Y3JlYXRlKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnU2hh
cGVzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdTaGFwZXNTdGFnZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAorQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuZW5zdXJlQ2xpcFN0YXJJ
c0NyZWF0ZWQgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5lbGVtZW50LnF1ZXJ5U2Vs
ZWN0b3IoIiNzdGFyLWNsaXAiKSB8fCB0aGlzLl9jcmVhdGVDbGlwU3RhcigpOworfQorCitCb3Vu
Y2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5lbnN1cmVEZWZzSXNDcmVhdGVkID0gZnVuY3Rp
b24oKSB7CisgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKCJkZWZzIikgfHwg
dGhpcy5fY3JlYXRlRGVmcygpOworfQorCitCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlw
ZS5jcmVhdGVHcmFkaWVudCA9IGZ1bmN0aW9uKHN0b3BzKSB7CisgICAgdmFyIGdyYWRpZW50ICA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0aGlzLnN2Z05hbWVzcGFjZSwgImxpbmVhckdyYWRp
ZW50Iik7CisgICAgCisgICAgaWYgKHR5cGVvZiB0aGlzLl9nYWRpZW50c0NvdW50ID09PSAidW5k
ZWZpbmVkIikKKyAgICAgICAgdGhpcy5fZ2FkaWVudHNDb3VudCA9IDA7ICAgIAorICAgIGdyYWRp
ZW50LnNldEF0dHJpYnV0ZSgiaWQiLCAiZ2FkaWVudC0iICsgKyt0aGlzLl9nYWRpZW50c0NvdW50
KTsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0b3BzOyArK2kpIHsKKyAgICAgICAg
dmFyIHN0b3AgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlModGhpcy5zdmdOYW1lc3BhY2UsICJz
dG9wIik7CisgICAgICAgIHN0b3Auc2V0QXR0cmlidXRlKCJvZmZzZXQiLCBpICogMTAwIC8gc3Rv
cHMgKyAiJSIpOworICAgICAgICBzdG9wLnNldEF0dHJpYnV0ZSgic3RvcC1jb2xvciIsIHRoaXMu
cmFuZG9tQ29sb3IoKSk7CisgICAgICAgIGdyYWRpZW50LmFwcGVuZENoaWxkKHN0b3ApOworICAg
IH0KKworICAgIHRoaXMuZW5zdXJlRGVmc0lzQ3JlYXRlZCgpLmFwcGVuZENoaWxkKGdyYWRpZW50
KTsKKyAgICByZXR1cm4gZ3JhZGllbnQ7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJv
dG90eXBlLl9jcmVhdGVEZWZzID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGRlZnMgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlModGhpcy5zdmdOYW1lc3BhY2UsImRlZnMiKTsKKyAgICB0aGlzLmVs
ZW1lbnQuaW5zZXJ0QmVmb3JlKGRlZnMsIHRoaXMuZWxlbWVudC5maXJzdENoaWxkKTsKKyAgICBy
ZXR1cm4gZGVmczsKK30KKyAgICAKK0JvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLl9j
cmVhdGVDbGlwU3RhciA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBjbGlwUGF0aCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUyh0aGlzLnN2Z05hbWVzcGFjZSwgImNsaXBQYXRoIik7CisgICAgY2xp
cFBhdGguc2V0QXR0cmlidXRlKCJpZCIsICJzdGFyLWNsaXAiKTsKKyAgICBjbGlwUGF0aC5zZXRB
dHRyaWJ1dGUoImNsaXBQYXRoVW5pdHMiLCAib2JqZWN0Qm91bmRpbmdCb3giKTsKKyAgICAKKyAg
ICB2YXIgcGF0aCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0aGlzLnN2Z05hbWVzcGFjZSwg
InBhdGgiKTsKKyAgICBwYXRoLnNldEF0dHJpYnV0ZSgiZCIsICJNLjUwLDBMLjM4LC4zOEwwLC4z
OEwuMzAsLjYwTC4xOCwxTC41MCwuNzVMLjgyLDFMLjcwLC42MEwxLC4zOEwuNjIsLjM4eiIpOwor
ICAgIGNsaXBQYXRoLmFwcGVuZENoaWxkKHBhdGgpOworICAgIAorICAgIHRoaXMuZW5zdXJlRGVm
c0lzQ3JlYXRlZCgpLmFwcGVuZENoaWxkKGNsaXBQYXRoKTsKKyAgICByZXR1cm4gY2xpcFBhdGg7
Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlID0g
ZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBlKHRoaXMpOworfQor
CitCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQg
PSBmdW5jdGlvbihwYXJ0aWNsZSkgeworICAgIGlmICghcGFydGljbGUuZWxlbWVudCB8fCAhcGFy
dGljbGUuZWxlbWVudC5wYXJlbnROb2RlIHx8IHBhcnRpY2xlLmVsZW1lbnQucGFyZW50Tm9kZSAh
PSB0aGlzLmVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgdmFyIGZpbGwg
PSBwYXJ0aWNsZS5lbGVtZW50LmdldEF0dHJpYnV0ZSgiZmlsbCIpOworICAgIGlmIChmaWxsLmlu
ZGV4T2YoInVybCgjIikgPT0gMCkgeworICAgICAgICB2YXIgZ3JhZGllbnQgPSB0aGlzLmVsZW1l
bnQucXVlcnlTZWxlY3RvcihmaWxsLnN1YnN0cmluZyg0LCBmaWxsLmxlbmd0aCAtIDEpKTsKKyAg
ICAgICAgdGhpcy5lbnN1cmVEZWZzSXNDcmVhdGVkKCkucmVtb3ZlQ2hpbGQoZ3JhZGllbnQpOwor
ICAgIH0KKyAgICAKKyAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQocGFydGljbGUuZWxlbWVu
dCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICBCb3VuY2luZ1BhcnRp
Y2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyay5wcm90b3R5
cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSk7
CitCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3Vu
Y2luZ1N2Z1NoYXBlc0JlbmNobWFyazsKKworQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsucHJv
dG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkgeworICAgIHJldHVybiBuZXcg
Qm91bmNpbmdTdmdTaGFwZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKword2lu
ZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgd2luZG93LmJlbmNobWFyayA9IG5l
dyBCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3Jk
VGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9yZXNvdXJjZXMvYmVuY2htYXJrLmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL2JlbmNobWFyay5jc3MJKHJldmlzaW9u
IDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL2JlbmNo
bWFyay5jc3MJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBAQAoraHRtbCB7CisgIGhlaWdo
dDogMTAwJTsKK30KK2JvZHkgeworICB3aWR0aDogMTAwJTsKKyAgaGVpZ2h0OiAxMDAlOworICBv
dmVyZmxvdzogaGlkZGVuOworICBtYXJnaW46IDA7CisgIHBhZGRpbmc6IDA7CisgIGJhY2tncm91
bmQtY29sb3I6ICNlYWVhZWE7Cit9CisKKyNzdGFnZSB7CisgIHdpZHRoOiAxMDAlOworICBoZWln
aHQ6IDEwMCU7CisgIGJhY2tncm91bmQtY29sb3I6ICNlYWVhZWE7Cit9CkluZGV4OiBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL2JlbmNobWFyay5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL2JlbmNo
bWFyay5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9yZXNvdXJjZXMvYmVuY2htYXJrLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTg4IEBA
CitmdW5jdGlvbiBCZW5jaG1hcmtTdGF0ZSh0ZXN0SW50ZXJ2YWwpIHsKKyAgICB0aGlzLl9jdXJy
ZW50VGltZU9mZnNldCA9IDA7CisgICAgdGhpcy5fc3RhZ2VJbnRlcnZhbCA9IHRlc3RJbnRlcnZh
bCAvIEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRDsKK30KKworQmVuY2htYXJrU3RhdGUu
c3RhZ2VzID0geworICAgIFdBUk1JTkdfVVA6IDAsCisgICAgU0FNUExJTkc6IDEsCisgICAgRklO
SVNIRUQ6IDIsCisgICAgbWVzc2FnZXM6IFsgIldhcm1pbmcgdXAiLCAiU2FtcGxpbmciLCAiRmlu
aXNoZWQiIF0KK307CisKK0JlbmNobWFya1N0YXRlLnByb3RvdHlwZSA9IHsKKyAgICBfdGltZU9m
ZnNldCA6IGZ1bmN0aW9uKHN0YWdlKSB7CisgICAgICAgIHJldHVybiBzdGFnZSAqIHRoaXMuX3N0
YWdlSW50ZXJ2YWw7CisgICAgfSwKKyAgICBfbWVzc2FnZSA6IGZ1bmN0aW9uKHN0YWdlLCB0aW1l
T2Zmc2V0KSB7CisgICAgICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklO
SVNIRUQpCisgICAgICAgICAgICByZXR1cm4gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLm1lc3NhZ2Vz
W3N0YWdlXTsKKworICAgICAgICByZXR1cm4gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLm1lc3NhZ2Vz
W3N0YWdlXSArICIuLi4gKCIKKyAgICAgICAgICAgICsgTWF0aC5mbG9vcigodGltZU9mZnNldCAt
IHRoaXMuX3RpbWVPZmZzZXQoc3RhZ2UpKSAvIDEwMDApICsgIi8iCisgICAgICAgICAgICArIE1h
dGguZmxvb3IoKHRoaXMuX3RpbWVPZmZzZXQoc3RhZ2UgKyAxKSAtIHRoaXMuX3RpbWVPZmZzZXQo
c3RhZ2UpKSAvIDEwMDApICsgIikiOworICAgIH0sCisgICAgdXBkYXRlIDogZnVuY3Rpb24oY3Vy
cmVudFRpbWVPZmZzZXQpIHsKKyAgICAgICAgdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgPSBjdXJy
ZW50VGltZU9mZnNldDsKKyAgICB9LAorICAgIHNhbXBsaW5nVGltZU9mZnNldCA6IGZ1bmN0aW9u
KCkgeworICAgICAgICByZXR1cm4gdGhpcy5fdGltZU9mZnNldChCZW5jaG1hcmtTdGF0ZS5zdGFn
ZXMuU0FNUExJTkcpOworICAgIH0sCisgICAgY3VycmVudFN0YWdlIDogZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGZvciAodmFyIHN0YWdlID0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLldBUk1JTkdfVVA7
IHN0YWdlIDwgQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEOyArK3N0YWdlKSB7CisgICAg
ICAgICAgICBpZiAodGhpcy5fY3VycmVudFRpbWVPZmZzZXQgPCB0aGlzLl90aW1lT2Zmc2V0KHN0
YWdlICsgMSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YWdlOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQ7CisgICAgfSwKKyAgICBj
dXJyZW50TWVzc2FnZSA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5fbWVzc2Fn
ZSh0aGlzLmN1cnJlbnRTdGFnZSgpLCB0aGlzLl9jdXJyZW50VGltZU9mZnNldCk7CisgICAgfSwK
KyAgICBjdXJyZW50UHJvZ3Jlc3MgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2N1cnJlbnRUaW1lT2Zmc2V0IC8gdGhpcy5fdGltZU9mZnNldChCZW5jaG1hcmtTdGF0ZS5zdGFn
ZXMuRklOSVNIRUQpOworICAgIH0KK30KKworZnVuY3Rpb24gQW5pbWF0b3IoYmVuY2htYXJrKSB7
CisgICAgdGhpcy5fYmVuY2htYXJrID0gYmVuY2htYXJrOworICAgIHRoaXMuX2ZyYW1lQ291bnQg
PSAwOworICAgIHRoaXMuX2Ryb3BGcmFtZUNvdW50ID0gMTsKKyAgICB0aGlzLl9tZWFzdXJlRnJh
bWVDb3VudCA9IDM7IAorICAgIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0ID0gMDsKKyAgICB0aGlz
Ll9lc3RpbWF0b3IgPSBuZXcgRXN0aW1hdG9yKCk7Cit9CisKK0FuaW1hdG9yLnByb3RvdHlwZSA9
IHsKKyAgICBzdGFydCA6IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLl9pbnRlcnZhbElkID0g
c2V0SW50ZXJ2YWwodGhpcy5hbmltYXRlLmJpbmQodGhpcyksIDEpOworICAgIH0sCisgICAgdGlt
ZURlbHRhIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50VGltZU9m
ZnNldCAtIHRoaXMuX3N0YXJ0VGltZU9mZnNldDsKKyAgICB9LAorICAgIGFuaW1hdGUgOiBmdW5j
dGlvbigpIHsKKyAgICAgICAgdmFyIGN1cnJlbnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7Cisg
ICAgICAgIAorICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3JlZmVyZW5jZVRpbWUgPT09ICJ1bmRl
ZmluZWQiKQorICAgICAgICAgICAgdGhpcy5fcmVmZXJlbmNlVGltZSA9IGN1cnJlbnRUaW1lOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9jdXJyZW50VGltZU9mZnNldCA9IGN1cnJl
bnRUaW1lIC0gdGhpcy5fcmVmZXJlbmNlVGltZTsKKworICAgICAgICBpZiAoIXRoaXMuX2ZyYW1l
Q291bnQpCisgICAgICAgICAgICB0aGlzLl9zdGFydFRpbWVPZmZzZXQgPSB0aGlzLl9jdXJyZW50
VGltZU9mZnNldDsKKworICAgICAgICAvLyBTdGFydCBtZWFzdXJpbmcgYWZ0ZXIgZHJvcHBpbmcg
X2Ryb3BGcmFtZUNvdW50IGZyYW1lcy4KKyAgICAgICAgaWYgKHRoaXMuX2ZyYW1lQ291bnQgPT0g
dGhpcy5fZHJvcEZyYW1lQ291bnQpCisgICAgICAgICAgICB0aGlzLl9tZWFzdXJlVGltZU9mZnNl
dCA9IHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0OworCisgICAgICAgICsrdGhpcy5fZnJhbWVDb3Vu
dDsKKworICAgICAgICAvLyBEcm9wIF9kcm9wRnJhbWVDb3VudCBmcmFtZXMgYW5kIG1lYXN1cmUg
dGhlIGF2ZXJhZ2Ugb2YgX21lYXN1cmVGcmFtZUNvdW50IGZyYW1lcy4KKyAgICAgICAgaWYgKHRo
aXMuX2ZyYW1lQ291bnQgPCB0aGlzLl9kcm9wRnJhbWVDb3VudCArIHRoaXMuX21lYXN1cmVGcmFt
ZUNvdW50KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgLy8gR2V0IHRoZSBh
dmVyYWdlIEZQUyBvZiBfbWVhc3VyZUZyYW1lQ291bnQgZnJhbWVzIG92ZXIgbWVhc3VyZVRpbWVE
ZWx0YS4KKyAgICAgICAgdmFyIG1lYXN1cmVUaW1lRGVsdGEgPSB0aGlzLl9jdXJyZW50VGltZU9m
ZnNldCAtIHRoaXMuX21lYXN1cmVUaW1lT2Zmc2V0OworICAgICAgICB2YXIgY3VycmVudEZyYW1l
UmF0ZSA9IE1hdGguZmxvb3IoMTAwMCAvIChtZWFzdXJlVGltZURlbHRhIC8gdGhpcy5fbWVhc3Vy
ZUZyYW1lQ291bnQpKTsKKyAgICAgICAgIAorICAgICAgICAvLyBVc2UgS2FsbWFuIGZpbHRlciB0
byBnZXQgYSBtb3JlIG5vbi1mbHVjdHVhdGluZyBmcmFtZSByYXRlLgorICAgICAgICBpZiAodGhp
cy5fYmVuY2htYXJrLm9wdGlvbnMuZXN0aW1hdGVkRnJhbWVSYXRlKQorICAgICAgICAgICAgY3Vy
cmVudEZyYW1lUmF0ZSA9IHRoaXMuX2VzdGltYXRvci5lc3RpbWF0ZShtZWFzdXJlVGltZURlbHRh
LCBjdXJyZW50RnJhbWVSYXRlKTsKKyAgICAgICAgCisgICAgICAgIC8vIEFkanVzdCB0aGUgdGVz
dCB0byByZWFjaCB0aGUgZGVzaXJlZCBGUFMuCisgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9i
ZW5jaG1hcmsudXBkYXRlKHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0LCB0aGlzLnRpbWVEZWx0YSgp
LCBjdXJyZW50RnJhbWVSYXRlKTsKKyAgICAgICAgCisgICAgICAgIC8vIFN0b3AgdGhlIGFuaW1h
dG9yIGlmIHRoZSBiZW5jaG1hcmsgaGFzIGZpbmlzaGVkLgorICAgICAgICBpZiAoIXJlc3VsdCAm
JiB0eXBlb2YgdGhpcy5faW50ZXJ2YWxJZCAhPSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWxJZCk7CisKKyAgICAgICAgLy8gU3RhcnQgdGhlIG5l
eHQgZHJvcC9tZWFzdXJlIGN5Y2xlLgorICAgICAgICB0aGlzLl9mcmFtZUNvdW50ID0gMDsKKyAg
ICAgICAgCisgICAgICAgIC8vIHJlc3VsdCBtYXkgc3RvcCB0aGUgYW5pbWF0b3IgaWYgcmVxdWVz
dEFuaW1hdGlvbkZyYW1lKCkgaGFzIGJlZW4gdXNlZC4KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9LAorICAgIGFuaW1hdGVMb29wIDogZnVuY3Rpb24odGltZXN0YW1wKSB7CisgICAgICAg
IGlmICh0aGlzLmFuaW1hdGUoKSkKKyAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0
aGlzLmFuaW1hdGVMb29wLmJpbmQodGhpcykpOworICAgIH0KK30KKworZnVuY3Rpb24gQmVuY2ht
YXJrKG9wdGlvbnMpIHsKKyAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9uczsKKyAgICB0aGlzLl9t
ZXRob2QgPSB0aGlzLl9vcHRpb25zWyJtZXRob2QiXSB8fCAicmVxdWVzdEFuaW1hdGlvbkZyYW1l
IjsKKworICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7CisgICAgdGhpcy5fcmVjb3JkSW50ZXJ2
YWwgPSAyMDA7ICAgIAorICAgIHRoaXMuX2lzU2FtcGxpbmcgPSBmYWxzZTsKKworICAgIHZhciBn
YWluID0gcGFyc2VJbnQodGhpcy5fb3B0aW9uc1siZ2FpbiJdKSB8fCAxOworICAgIHZhciBsb3dW
YWx1ZSA9IC1wYXJzZUludCh0aGlzLl9vcHRpb25zWyJhZGRMaW1pdCJdKSB8fCAxOworICAgIHZh
ciBoaWdoVmFsdWUgPSBwYXJzZUludCh0aGlzLl9vcHRpb25zWyJyZW1vdmVMaW1pdCJdKSB8fCAx
OworICAgIAorICAgIHRoaXMuX2NvbnRyb2xsZXIgPSBuZXcgQ29udHJvbGxlcihnYWluLCBvcHRp
b25zLmZyYW1lUmF0ZSwgbG93VmFsdWUsIGhpZ2hWYWx1ZSk7CisgICAgdGhpcy5fc2FtcGxlciA9
IG5ldyBTYW1wbGVyKDIpOworICAgIHRoaXMuX3N0YXRlID0gbmV3IEJlbmNobWFya1N0YXRlKHRo
aXMub3B0aW9ucy50ZXN0SW50ZXJ2YWwpOyAgICAKK30KKworQmVuY2htYXJrLnByb3RvdHlwZSA9
IHsKKyAgICAvLyBDYWxsZWQgZnJvbSB0aGUgbG9hZCBldmVudCBsaXN0ZW5lciBvciBmcm9tIHRo
aXMucnVuKCkKKyAgICBzdGFydCA6IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAodGhpcy5fbWV0
aG9kID09ICJzZXRJbnRlcnZhbCIpCisgICAgICAgICAgICB0aGlzLl9hbmltYXRvci5zdGFydCgp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9hbmltYXRvci5hbmltYXRlTG9vcCgp
OworICAgIH0sCisgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGFuaW1hdG9yIHRvIGFkanVzdCB0aGUg
Y29tcGxleGl0eSBvZiB0aGUgdGVzdAorICAgIHVwZGF0ZSA6IGZ1bmN0aW9uKGN1cnJlbnRUaW1l
T2Zmc2V0LCB0aW1lRGVsdGEsIGN1cnJlbnRGcmFtZVJhdGUpIHsKKyAgICAgICAgdGhpcy5fc3Rh
dGUudXBkYXRlKGN1cnJlbnRUaW1lT2Zmc2V0KTsKKyAgICAgICAgCisgICAgICAgIHZhciBzdGFn
ZSA9IHRoaXMuX3N0YXRlLmN1cnJlbnRTdGFnZSgpOworICAgICAgICBpZiAoc3RhZ2UgPT0gQmVu
Y2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEKSB7CisgICAgICAgICAgICB0aGlzLmNsZWFyKCk7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3Rh
Z2UgPT0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLlNBTVBMSU5HICYmICF0aGlzLl9pc1NhbXBsaW5n
KSB7CisgICAgICAgICAgICB0aGlzLl9zYW1wbGVyLnN0YXJ0U2FtcGxpbmcodGhpcy5fc3RhdGUu
c2FtcGxpbmdUaW1lT2Zmc2V0KCkpOworICAgICAgICAgICAgdGhpcy5faXNTYW1wbGluZyA9IHRy
dWU7CisgICAgICAgIH0KKworICAgICAgICB2YXIgdHVuZVZhbHVlID0gMDsKKyAgICAgICAgaWYg
KCEodGhpcy5faXNTYW1wbGluZyAmJiB0aGlzLm9wdGlvbnMuZml4VGVzdENvbXBsZXhpdHkpKSB7
CisgICAgICAgICAgICAvLyBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gZnJhbWVSYXRlIGFuZCB0
ZXN0IGNvbXBsZXhpdHkgaXMgaW52ZXJzZS1wcm9wb3J0aW9uYWwgc28gd2UKKyAgICAgICAgICAg
IC8vIG5lZWQgdG8gdXNlIHRoZSBuZWdhdGl2ZSBvZiBDb250cm9sbGVyLnR1bmUoKSB0byBjaGFu
Z2UgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIHRlc3QKKyAgICAgICAgICAgIHR1bmVWYWx1ZSA9IC10
aGlzLl9jb250cm9sbGVyLnR1bmUoY3VycmVudEZyYW1lUmF0ZSwgdGltZURlbHRhIC8gMTAwMCk7
CisgICAgICAgIH0KKworICAgICAgICB2YXIgY3VycmVudENvbXBsZXhpdHkgPSB0aGlzLnR1bmUo
dHVuZVZhbHVlKTsKKyAgICAgICAgdGhpcy5yZWNvcmQoY3VycmVudFRpbWVPZmZzZXQsIGN1cnJl
bnRDb21wbGV4aXR5LCBjdXJyZW50RnJhbWVSYXRlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfSwKKyAgICByZWNvcmQgOiBmdW5jdGlvbihjdXJyZW50VGltZU9mZnNldCwgY3VycmVudENv
bXBsZXhpdHksIGN1cnJlbnRGcmFtZVJhdGUpIHsKKyAgICAgICAgdGhpcy5fc2FtcGxlci5zYW1w
bGUoY3VycmVudFRpbWVPZmZzZXQsIFtjdXJyZW50Q29tcGxleGl0eSwgY3VycmVudEZyYW1lUmF0
ZV0pOworICAgICAgICAKKyAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9yZWNvcmRUaW1lT2Zmc2V0
ID09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgdGhpcy5fcmVjb3JkVGltZU9mZnNldCA9IGN1
cnJlbnRUaW1lT2Zmc2V0OworCisgICAgICAgIHZhciBzdGFnZSA9IHRoaXMuX3N0YXRlLmN1cnJl
bnRTdGFnZSgpOworICAgICAgICBpZiAoc3RhZ2UgIT0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJ
TklTSEVEICYmIGN1cnJlbnRUaW1lT2Zmc2V0IDwgdGhpcy5fcmVjb3JkVGltZU9mZnNldCArIHRo
aXMuX3JlY29yZEludGVydmFsKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMu
c2hvd1Jlc3VsdHModGhpcy5fc3RhdGUuY3VycmVudE1lc3NhZ2UoKSwgdGhpcy5fc3RhdGUuY3Vy
cmVudFByb2dyZXNzKCkpOworICAgICAgICB0aGlzLl9yZWNvcmRUaW1lT2Zmc2V0ID0gY3VycmVu
dFRpbWVPZmZzZXQ7CisgICAgfSwKKyAgICBydW4gOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhp
cy5zdGFydCgpOworCisgICAgICAgIHZhciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7Cisg
ICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgZnVuY3Rpb24gcmVzb2x2ZVdoZW5GaW5p
c2hlZCgpIHsKKyAgICAgICAgICAgIGlmICh0eXBlb2Ygc2VsZi5fc3RhdGUgIT0gInVuZGVmaW5l
ZCIgJiYgKHNlbGYuX3N0YXRlLmN1cnJlbnRTdGFnZSgpID09IEJlbmNobWFya1N0YXRlLnN0YWdl
cy5GSU5JU0hFRCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2UucmVzb2x2ZShzZWxm
Ll9zYW1wbGVyKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQocmVzb2x2ZVdoZW5GaW5pc2hlZC5i
aW5kKHNlbGYpLCA1MCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJlc29sdmVXaGVu
RmluaXNoZWQoKTsKKyAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAgfQorfQpJbmRleDogUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWF0aC5q
cwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNv
dXJjZXMvbWF0aC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4NCBAQAordmFyIE1hdHJp
eCA9IHt9OworCitNYXRyaXguaW5pdCA9IGZ1bmN0aW9uKG0sIG4sIHYpIHsKKyAgICByZXR1cm4g
QXJyYXkobSAqIG4pLmZpbGwodik7Cit9CisKK01hdHJpeC56ZXJvcyA9IGZ1bmN0aW9uKG0sIG4p
IHsKKyAgICByZXR1cm4gTWF0cml4LmluaXQobSwgbiwgMCk7Cit9CisKK01hdHJpeC5vbmVzID0g
ZnVuY3Rpb24obSwgbikgeworICAgIHJldHVybiBNYXRyaXguaW5pdChtLCBuLCAxKTsKK30KKwor
TWF0cml4LmlkZW50aXR5ID0gZnVuY3Rpb24obikgeworICAgIHZhciBvdXQgPSBuZXcgTWF0cml4
Lnplcm9zKG4sIG4pOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKQorICAgICAgICBv
dXRbaSAqIG4gKyBpXSA9IDE7CisgICAgcmV0dXJuIG91dDsKK30KKworTWF0cml4LnN0ciA9IGZ1
bmN0aW9uKEEsIG4sIG0pIHsKKyAgICB2YXIgb3V0ID0gKG0gPiAxICYmIG4gPiAxID8gIk1hdHJp
eFsiICsgbiArICIsICIgKyBtIDogIlZlY3RvclsiICsgbSAqIG4pICsgIl0gPSBbIjsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IG4gKiBtOyArK2kpIHsKKyAgICAgICAgb3V0ICs9IEFbaV07Cisg
ICAgICAgIGlmIChpIDwgbiAqIG0gLSAxKQorICAgICAgICAgICAgb3V0ICs9ICIsICI7CisgICAg
fSAgICAgICAKKyAgICByZXR1cm4gb3V0ICsgIl0iOworfTsKKworTWF0cml4LnBvcyA9IGZ1bmN0
aW9uKG0sIGksIGopIHsKKyAgICByZXR1cm4gbSAqIGkgKyBqOworfQorCitNYXRyaXguYWRkID0g
ZnVuY3Rpb24oQSwgQiwgbiwgbSkgeworICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3MobiwgbSk7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuICogbTsgKytpKQorICAgICAgICBvdXRbaV0gPSBB
W2ldICsgQltpXTsKKyAgICByZXR1cm4gb3V0OworfQorCitNYXRyaXguc3VidHJhY3QgPSBmdW5j
dGlvbihBLCBCLCBuLCBtKSB7CisgICAgdmFyIG91dCA9IE1hdHJpeC56ZXJvcyhuLCBtKTsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG4gKiBtOyArK2kpCisgICAgICAgIG91dFtpXSA9IEFbaV0g
LSBCW2ldOworICAgIHJldHVybiBvdXQ7Cit9CisKK01hdHJpeC5zY2FsZSA9IGZ1bmN0aW9uKHMs
IEEsIG4sIG0pIHsKKyAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIG0pOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbiAqIG07ICsraSkKKyAgICAgICAgb3V0W2ldID0gcyAqIEFbaV07Cisg
ICAgcmV0dXJuIG91dDsKK30KKworTWF0cml4LnRyYW5zcG9zZSA9IGZ1bmN0aW9uKEEsIG4sIG0p
IHsKKyAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG0sIG4pOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbjsgKytpKSB7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbTsgKytqKQorICAg
ICAgICAgICAgb3V0W01hdHJpeC5wb3MobiwgaSwgaildID0gQVtNYXRyaXgucG9zKG0sIGosIGkp
XTsKKyAgICB9ICAgICAgIAorICAgIHJldHVybiBvdXQ7Cit9CisKK01hdHJpeC5tdWx0aXBseSA9
IGZ1bmN0aW9uKEEsIEIsIG4sIG0sIHApIHsKKyAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4s
IHApOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgIGZvciAodmFy
IGogPSAwOyBqIDwgcDsgKytqKSB7CisgICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IG07
ICsraykgeworICAgICAgICAgICAgICAgIG91dFtNYXRyaXgucG9zKHAsIGksIGopXSArPSBBW01h
dHJpeC5wb3MobSwgaSwgayldICogQltNYXRyaXgucG9zKHAsIGssIGopXTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gb3V0OworfQorCit2YXIgVmVjdG9yMyA9
IHt9OworCitWZWN0b3IzLnplcm9zID0gZnVuY3Rpb24oKSB7IHJldHVybiBNYXRyaXguemVyb3Mo
MSwgMyk7IH0KK1ZlY3RvcjMub25lcyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gTWF0cml4Lm9uZXMo
MSwgMyk7IH0KK1ZlY3RvcjMuc3RyID0gZnVuY3Rpb24odikgeyByZXR1cm4gTWF0cml4LnN0cih2
LCAxLCAzKTsgfQorVmVjdG9yMy5hZGQgPSBmdW5jdGlvbih2LCB3KSB7IHJldHVybiBNYXRyaXgu
YWRkKHYsIHcsIDEsIDMpOyB9CitWZWN0b3IzLnN1YnRyYWN0ID0gZnVuY3Rpb24odiwgdykgeyBy
ZXR1cm4gTWF0cml4LnN1YnRyYWN0KHYsIHcsIDEsIDMpOyB9CitWZWN0b3IzLnNjYWxlID0gZnVu
Y3Rpb24ocywgdikgeyByZXR1cm4gTWF0cml4LnNjYWxlKHMsIHYsIDEsIDMpOyB9CitWZWN0b3Iz
Lm11bHRpcGx5TWF0cml4MyA9IGZ1bmN0aW9uKHYsIEEpIHsgcmV0dXJuIE1hdHJpeC5tdWx0aXBs
eSh2LCBBLCAxLCAzLCAzKTsgfQorVmVjdG9yMy5tdWx0aXBseVZlY3RvcjMgPSBmdW5jdGlvbih2
LCB3KSB7CisgICAgdmFyIG91dCA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzOyArK2kp
CisgICAgICAgIG91dCArPSB2W2ldICogd1tpXTsKKyAgICByZXR1cm4gb3V0OworfQorCit2YXIg
TWF0cml4MyA9IHt9OworCitNYXRyaXgzLnplcm9zID0gZnVuY3Rpb24oKSB7IHJldHVybiBNYXRy
aXguemVyb3MoMywgMyk7IH0KK01hdHJpeDMuaWRlbnRpdHkgPSBmdW5jdGlvbigpIHsgcmV0dXJu
IE1hdHJpeC5pZGVudGl0eSgzLCAzKTsgfQorTWF0cml4My5zdHIgPSBmdW5jdGlvbihBKSB7IHJl
dHVybiBNYXRyaXguc3RyKEEsIDMsIDMpOyB9CitNYXRyaXgzLnBvcyA9IGZ1bmN0aW9uKGksIGop
IHsgcmV0dXJuIE1hdHJpeC5wb3MoMywgaSwgaik7IH0KK01hdHJpeDMuYWRkID0gZnVuY3Rpb24o
QSwgQikgeyByZXR1cm4gTWF0cml4LmFkZChBLCBCLCAzLCAzKTsgfQorTWF0cml4My5zdWJ0cmFj
dCA9IGZ1bmN0aW9uKEEsIEIpIHsgcmV0dXJuIE1hdHJpeC5zdWJ0cmFjdChBLCBCLCAzLCAzKTsg
fQorTWF0cml4My5zY2FsZSA9IGZ1bmN0aW9uKHMsIEEpIHsgcmV0dXJuIE1hdHJpeC5zY2FsZShz
LCBBLCAzLCAzKTsgfQorTWF0cml4My50cmFuc3Bvc2UgPSBmdW5jdGlvbihBKSB7IHJldHVybiBN
YXRyaXgudHJhbnNwb3NlKEEsIDMsIDMpOyB9CitNYXRyaXgzLm11bHRpcGx5TWF0cml4MyA9IGZ1
bmN0aW9uKEEsIEIpIHsgcmV0dXJuIE1hdHJpeC5tdWx0aXBseShBLCBCLCAzLCAzLCAzKTsgfQor
TWF0cml4My5tdWx0aXBseVZlY3RvcjMgPSBmdW5jdGlvbihBLCB2KSB7IHJldHVybiBNYXRyaXgu
bXVsdGlwbHkoQSwgdiwgMywgMywgMSk7IH0KKworZnVuY3Rpb24gQ29udHJvbGxlcihLLCB5c3As
IHVsb3csIHVoaWdoKSB7CisgICAgdGhpcy5feXNwID0geXNwOworCisgICAgdGhpcy5fVGQgPSA1
OworICAgIHRoaXMuX1RpID0gMTU7CisKKyAgICB0aGlzLl9LcCA9IEs7CisgICAgdGhpcy5fS2Qg
PSBLIC8gdGhpcy5fVGQ7CisgICAgdGhpcy5fS2kgPSBLIC8gdGhpcy5fVGk7CisKKyAgICB0aGlz
Ll9lb2xkID0gMDsKKyAgICB0aGlzLl9JID0gMDsKK30KKworQ29udHJvbGxlci5wcm90b3R5cGUg
PSB7CisgICAgX3NhdCA6IGZ1bmN0aW9uKHYsIGxvdywgaGlnaCkgeworICAgICAgICByZXR1cm4g
diA8IGxvdyA/IGxvdyA6ICh2ID4gaGlnaCA/IGhpZ2ggOiB2KTsKKyAgICB9LAorICAgIHR1bmUg
OiBmdW5jdGlvbih5LCBoKSB7CisgICAgICAgIC8vIEN1cnJlbnQgZXJyb3IKKyAgICAgICAgdmFy
IGUgPSB0aGlzLl95c3AgLSB5OworCisgICAgICAgIC8vIFByb3BvcnRpb25hbCB0ZXJtCisgICAg
ICAgIHZhciBQID0gdGhpcy5fS3AgKiBlOworICAgICAgICAKKyAgICAgICAgLy8gRGVyaXZhdGl2
ZSB0ZXJtIGlzIHRoZSBzbG9wZSBvZiB0aGUgY3VydmUgYXQgdGhlIGN1cnJlbnQgdGltZQorICAg
ICAgICB2YXIgRCA9IHRoaXMuX0tkICogKGUgLSB0aGlzLl9lb2xkKSAvIGg7CisKKyAgICAgICAg
Ly8gSW50ZWdyYWwgdGVybSBpcyB0aGUgYXJlYSB1bmRlciB0aGUgY3VydmUgc3RhcnRpbmcgZnJv
bSB0aGUgYmVnaW5pbmcgdGlsbCB0aGUgY3VycmVudCB0aW1lCisgICAgICAgIHRoaXMuX0kgKz0g
dGhpcy5fS2kgKiAoKGUgKyB0aGlzLl9lb2xkKSAvIDIpICogaDsKKworICAgICAgICAvLyBwaWQg
Y29udHJvbGxlciB2YWx1ZQorICAgICAgICB2YXIgdiA9IFAgKyBEICsgdGhpcy5fSTsKKyAgICAg
ICAgCisgICAgICAgIC8vIEF2b2lkIHNwaWtlcyBieSBhcHBseWluZyBhY3R1YXRvciBzYXR1YXJ0
aW9uCisgICAgICAgIHZhciB1ID0gdGhpcy5fc2F0KHYsIHRoaXMuX3Vsb3csIHRoaXMuX3VoaWdo
KTsgICAgICAgIAorCisgICAgICAgIHRoaXMuX2VvbGQgPSBlOworICAgICAgICByZXR1cm4gdTsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIEVzdGltYXRvcigpIHsKKyAgICB0aGlzLl9tYXRBID0gTWF0
cml4My5pZGVudGl0eSgpOworICAgIAorICAgIHRoaXMuX3ZlY0ggPSBWZWN0b3IzLnplcm9zKCk7
CisgICAgdGhpcy5fdmVjSFswXSA9IDE7CisgICAgCisgICAgdGhpcy5fbWF0USA9IE1hdHJpeDMu
aWRlbnRpdHkoKTsKKyAgICB0aGlzLl9SID0gMTAwMDsKKyAgICAKKyAgICB0aGlzLl92ZWNYX2Vz
dCA9IFZlY3RvcjMub25lcygpOworICAgIHRoaXMuX21hdFBfZXN0ID0gTWF0cml4My56ZXJvcygp
OworfQorCitFc3RpbWF0b3IucHJvdG90eXBlID0geworICAgIGVzdGltYXRlIDogZnVuY3Rpb24o
dGltZURlbHRhLCBjdXJyZW50KSB7CisgICAgICAgIC8vIFVwZGF0ZSB0aGUgdHJhbnNpdGlvbiBt
YXRyaXgKKyAgICAgICAgdGhpcy5fbWF0QVtNYXRyaXgzLnBvcygwLCAyKV0gPSAxOworCisgICAg
ICAgIC8vIFByZWRpY3RlZCBzdGF0ZSBhbmQgY292YXJpYW5jZQorICAgICAgICB2YXIgdmVjWF9w
cmQgPSBNYXRyaXgzLm11bHRpcGx5VmVjdG9yMyh0aGlzLl9tYXRBLCB0aGlzLl92ZWNYX2VzdCk7
CisgICAgICAgIHZhciBtYXRQX3ByZCA9IE1hdHJpeDMuYWRkKE1hdHJpeDMubXVsdGlwbHlNYXRy
aXgzKE1hdHJpeDMubXVsdGlwbHlNYXRyaXgzKHRoaXMuX21hdEEsIHRoaXMuX21hdFBfZXN0KSwg
TWF0cml4My50cmFuc3Bvc2UodGhpcy5fbWF0QSkpLCB0aGlzLl9tYXRRKTsKKworICAgICAgICAv
LyBFc3RpbWF0aW9uCisgICAgICAgIHZhciB2ZWNCID0gVmVjdG9yMy5tdWx0aXBseU1hdHJpeDMo
dGhpcy5fdmVjSCwgTWF0cml4My50cmFuc3Bvc2UobWF0UF9wcmQpKTsKKyAgICAgICAgdmFyIFMg
PSBWZWN0b3IzLm11bHRpcGx5VmVjdG9yMyh2ZWNCLCB0aGlzLl92ZWNIKSArIHRoaXMuX1I7CisK
KyAgICAgICAgdmFyIHZlY0dhaW4gPSBWZWN0b3IzLnNjYWxlKDEvUywgdmVjQik7CisgICAgICAg
IAorICAgICAgICAvLyBFc3RpbWF0ZWQgc3RhdGUgYW5kIGNvdmFyaWFuY2UKKyAgICAgICAgdGhp
cy5fdmVjWF9lc3QgPSBWZWN0b3IzLmFkZCh2ZWNYX3ByZCwgVmVjdG9yMy5zY2FsZShjdXJyZW50
IC0gVmVjdG9yMy5tdWx0aXBseVZlY3RvcjModGhpcy5fdmVjSCwgdmVjWF9wcmQpLCB2ZWNHYWlu
KSk7CisgICAgICAgIHRoaXMuX21hdFBfZXN0ID0gTWF0cml4My5zdWJ0cmFjdChtYXRQX3ByZCwg
TWF0cml4My5zY2FsZShWZWN0b3IzLm11bHRpcGx5VmVjdG9yMyh2ZWNHYWluLCB0aGlzLl92ZWNI
KSwgbWF0UF9wcmQpKTsKKworICAgICAgICAvLyBDb21wdXRlIHRoZSBlc3RpbWF0ZWQgbWVhc3Vy
ZW1lbnQKKyAgICAgICAgcmV0dXJuIFZlY3RvcjMubXVsdGlwbHlWZWN0b3IzKHRoaXMuX3ZlY0gs
ICB0aGlzLl92ZWNYX2VzdCk7CisgICAgfQorfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzCShyZXZpc2lvbiAwKQor
KysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACitmdW5jdGlvbiBTdGFnZShlbGVtZW50LCBv
cHRpb25zKSB7CisgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDsKK30KKworU3RhZ2UucHJvdG90
eXBlID0geworICAgIHNpemUgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHN0eWxlcyA9IHdp
bmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudCk7CisgICAgICAgIHZhciBwYWRkaW5n
ID0gbmV3IEluc2V0cygKKyAgICAgICAgICAgIHBhcnNlRmxvYXQoc3R5bGVzLnBhZGRpbmdUb3Ap
LAorICAgICAgICAgICAgcGFyc2VGbG9hdChzdHlsZXMucGFkZGluZ1JpZ2h0KSwKKyAgICAgICAg
ICAgIHBhcnNlRmxvYXQoc3R5bGVzLnBhZGRpbmdCb3R0b20pLAorICAgICAgICAgICAgcGFyc2VG
bG9hdChzdHlsZXMucGFkZGluZ1RvcCkpOworICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMu
ZWxlbWVudC5jbGllbnRXaWR0aCAtIHBhZGRpbmcud2lkdGgoKSwgdGhpcy5lbGVtZW50LmNsaWVu
dEhlaWdodCAtIHBhZGRpbmcuaGVpZ2h0KCkpOworICAgIH0sCisgICAgY2xlYXIgOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudHVuZSgtdGhpcy50dW5lKDApKTsKKyAgICB9LAor
ICAgIHJhbmRvbSA6IGZ1bmN0aW9uKG1pbiwgbWF4KSB7CisgICAgICAgIHJldHVybiAoTWF0aC5y
YW5kb20oKSAqIChtYXggLSBtaW4pKSArIG1pbjsKKyAgICB9LAorICAgIHJhbmRvbUludCA6IGZ1
bmN0aW9uKG1pbiwgbWF4KSB7CisgICAgICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMucmFuZG9t
KG1pbiwgbWF4KSk7CisgICAgfSwKKyAgICByYW5kb21Qb3NpdGlvbiA6IGZ1bmN0aW9uKCkgewor
ICAgICAgICB2YXIgbWF4ID0gdGhpcy5zaXplKCkuc3VidHJhY3QodGhpcy5wYXJ0aWNsZVNpemUp
OworICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMucmFuZG9tSW50KDAsIG1heC54KSwgdGhp
cy5yYW5kb21JbnQoMCwgbWF4LnkpKTsKKyAgICB9LAorICAgIHJhbmRvbVZlbG9jaXR5IDogZnVu
Y3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLnJhbmRvbSh0aGlzLl9tYXhWZWxvY2l0eSAv
IDgsIHRoaXMuX21heFZlbG9jaXR5KTsKKyAgICB9LAorICAgIHJhbmRvbUFuZ2xlIDogZnVuY3Rp
b24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLnJhbmRvbSgwLCBNYXRoLlBJICogMik7CisgICAg
fSwKKyAgICByYW5kb21Db2xvciA6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgbWluID0gMzI7
CisgICAgICAgIHZhciBtYXggPSAyNTYgLSAzMjsKKyAgICAgICAgcmV0dXJuICIjIgorICAgICAg
ICAgICAgKyB0aGlzLnJhbmRvbUludChtaW4sIG1heCkudG9TdHJpbmcoMTYpCisgICAgICAgICAg
ICArIHRoaXMucmFuZG9tSW50KG1pbiwgbWF4KS50b1N0cmluZygxNikKKyAgICAgICAgICAgICsg
dGhpcy5yYW5kb21JbnQobWluLCBtYXgpLnRvU3RyaW5nKDE2KTsKKyAgICB9Cit9CkluZGV4OiBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3V0aWxpdGllcy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2Vz
L3V0aWxpdGllcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDYgQEAKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQgPSB7CisgICAgX3BhcnNlIDogZnVuY3Rpb24o
c3RyLCBzZXApIHsKKyAgICAgICAgdmFyIG91dHB1dCA9IHt9OworICAgICAgICBzdHIuc3BsaXQo
c2VwKS5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQpIHsKKyAgICAgICAgICAgIHZhciBpdGVtID0gcGFy
dC5zcGxpdCgiPSIpOworICAgICAgICAgICAgdmFyIHZhbHVlID0gZGVjb2RlVVJJQ29tcG9uZW50
KGl0ZW1bMV0pOworICAgICAgICAgICAgaWYgKHZhbHVlWzBdID09ICdcJycgKQorICAgICAgICAg
ICAgICAgIG91dHB1dFtpdGVtWzBdXSA9IHZhbHVlLnN1YnN0cigxLCB2YWx1ZS5sZW5ndGggLSAy
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvdXRwdXRbaXRlbVswXV0gPSB2
YWx1ZTsgICAgICAgICAgICAgICAgCisgICAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBvdXRw
dXQ7CisgICAgfSwKKyAgICBwYXJzZVBhcmFtZXRlcnMgOiBmdW5jdGlvbigpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3BhcnNlKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyKDEpLCAiJiIp
OworICAgIH0sCisgICAgcGFyc2VBcmd1bWVudHMgOiBmdW5jdGlvbihzdHIpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3BhcnNlKHN0ciwgIiAiKTsKKyAgICB9LAorICAgIGV4dGVuZE9iamVjdCA6
IGZ1bmN0aW9uKG9iajEsIG9iajIpIHsKKyAgICAgICAgZm9yICh2YXIgYXR0cm5hbWUgaW4gb2Jq
MikKKyAgICAgICAgICAgIG9iajFbYXR0cm5hbWVdID0gb2JqMlthdHRybmFtZV07CisgICAgICAg
IHJldHVybiBvYmoxOworICAgIH0sCisgICAgY29weU9iamVjdCA6IGZ1bmN0aW9uKG9iaikgewor
ICAgICAgICByZXR1cm4gdGhpcy5leHRlbmRPYmplY3Qoe30sIG9iaik7CisgICAgfSwKKyAgICBt
ZXJnZU9iamVjdHMgOiBmdW5jdGlvbihvYmoxLCBvYmoyKSB7CisgICAgICAgIHJldHVybiB0aGlz
LmV4dGVuZE9iamVjdCh0aGlzLmNvcHlPYmplY3Qob2JqMSksIG9iajIpOworICAgIH0KK307CisK
Ky8vIFRoaXMgZXZlbnQgbGlzdGVuZXIgcnVucyB0aGUgdGVzdCBpZiBpdCBpcyBsb2FkZWQgb3V0
c2lkZSB0aGUgYmVuY2htYXJrIHJ1bm5lci4KK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2Fk
IiwgZnVuY3Rpb24oKSB7CisgICAgaWYgKHdpbmRvdy5zZWxmICE9PSB3aW5kb3cudG9wKQorICAg
ICAgICByZXR1cm47CisgICAgd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUobnVsbCwgbnVs
bCwgMzAwMDAsIDUwLCBudWxsLCBudWxsKTsKKyAgICB3aW5kb3cuYmVuY2htYXJrLnN0YXJ0KCk7
Cit9KTsKKworLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgc3VpdGUgY29udHJv
bGxlciBydW4tY2FsbGJhY2sgd2hlbiBydW5uaW5nIHRoZSBiZW5jaG1hcmsgcnVubmVyLgord2lu
ZG93LnJ1bkJlbmNobWFyayA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRU
YWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICB2YXIgbWVyZ2VPcHRpb25zID0gd2luZG93LmJlbmNo
bWFya0NsaWVudC5tZXJnZU9iamVjdHMob3B0aW9ucywgd2luZG93LmJlbmNobWFya0NsaWVudC5w
YXJzZVBhcmFtZXRlcnMoKSk7CisgICAgd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUoc3Vp
dGUsIHRlc3QsIG1lcmdlT3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICBy
ZXR1cm4gd2luZG93LmJlbmNobWFyay5ydW4oKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcuc3ZnCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcuc3ZnCShy
ZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNl
cy95aW4teWFuZy5zdmcJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBAQAorPHN2ZyB2ZXJz
aW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCAyMDAgMjAwIj4NCisg
IDxkZWZzPg0KKyAgICA8Y2xpcFBhdGggaWQ9ImxlZnQtaGFsZiI+DQorICAgICAgPHJlY3Qgd2lk
dGg9IjEwMCIgaGVpZ2h0PSIyMDAiLz4NCisgICAgPC9jbGlwUGF0aD4NCisgICAgPGNsaXBQYXRo
IGlkPSJyaWdodC1oYWxmIj4NCisgICAgICA8cmVjdCB4PSIxMDAiIHdpZHRoPSIxMDAiIGhlaWdo
dD0iMjAwIi8+DQorICAgIDwvY2xpcFBhdGg+DQorICA8L2RlZnM+DQorICA8Y2lyY2xlIGN4PSIx
MDAiIGN5PSIxMDAiIHI9Ijk4IiBmaWxsPSJub25lIiBzdHJva2U9ImdyZWVuIiBzdHJva2Utd2lk
dGg9IjIiLz4NCisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjEwMCIgcj0iOTgiIGZpbGw9IndoaXRl
IiBjbGlwLXBhdGg9InVybCgjbGVmdC1oYWxmKSIvPg0KKyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0i
MTAwIiByPSI5OCIgZmlsbD0iZ3JlZW4iIGNsaXAtcGF0aD0idXJsKCNyaWdodC1oYWxmKSIvPg0K
KyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iNTAiICByPSI0OSIgZmlsbD0iZ3JlZW4iLz4NCisgIDxj
aXJjbGUgY3g9IjEwMCIgY3k9IjE0OCIgcj0iNDkiIGZpbGw9IndoaXRlIi8+DQorICA8Y2lyY2xl
IGN4PSIxMDAiIGN5PSI1MCIgIHI9IjEwIiBmaWxsPSJ3aGl0ZSIvPiAgICANCisgIDxjaXJjbGUg
Y3g9IjEwMCIgY3k9IjE0OCIgcj0iMTAiIGZpbGw9ImdyZWVuIi8+DQorPC9zdmc+DQpJbmRleDog
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L2xh
eWVyaW5nLXRleHQuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4KKyAg
ICAudGV4dC1sYXllciB7CisgICAgICBmb250LXNpemU6IDExLjVweDsKKyAgICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKKyAgICAgIGxlZnQ6IDBweDsKKyAgICAgIHRvcDogMHB4OworICAgICAgcGFk
ZGluZzogNXB4OworICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgfQor
ICA8L3N0eWxlPiAgCisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhy
ZWY9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PiAgCisgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
bWF0aC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYmVuY2htYXJr
LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMi
Pjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3Njcmlw
dD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9sYXllcmluZy10ZXh0LmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorICA8ZGl2IGlkPSJzdGFnZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJj
ZXMvbGF5ZXJpbmctdGV4dC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qcwkocmV2aXNpb24gMCkK
KysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXll
cmluZy10ZXh0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjU5IEBACitmdW5jdGlvbiBM
YXllcmluZ1RleHRBbmltYXRvcihiZW5jaG1hcmspIHsKKyAgICBBbmltYXRvci5jYWxsKHRoaXMs
IGJlbmNobWFyayk7Cit9OworCitMYXllcmluZ1RleHRBbmltYXRvci5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKEFuaW1hdG9yLnByb3RvdHlwZSk7CitMYXllcmluZ1RleHRBbmltYXRvci5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBMYXllcmluZ1RleHRBbmltYXRvcjsKKworTGF5ZXJpbmdUZXh0
QW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAoIUFuaW1h
dG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLmFuaW1hdGUodGhpcy50aW1lRGVsdGEoKSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIExheWVyaW5nVGV4dFN0YWdlKGVsZW1lbnQs
IG9wdGlvbnMpIHsKKyAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAg
IHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGhpcy5lbGVtZW50OworICAgIHRoaXMuX3RleHRF
bGVtZW50cyA9IFtdOworICAgIHRoaXMuX3RleHRJdGVtSW5kZXggPSAwOworICAgIHRoaXMuX2Nv
bG9ySW5kZXggPSAwOworICAgIHRoaXMuX2FuaW1hdGVDb3VudHMgPSAwOworfQorCitMYXllcmlu
Z1RleHRTdGFnZS50ZXh0SXRlbXMgPSBbCisgICAgIjxkaXYgaWQ9J2lkXzAwJyBjbGFzcz0ndGV4
dC1sYXllcic+IiwKKyAgICAgICAgIjxoMiBpZD0naWRfMDEnPkN1c3RvbWl6ZWQgc3R5bGVzPC9o
Mj4iLAorICAgICAgICAiPHAgaWQ9J2lkXzAyJz5JZiB5b3Ugd2FudCBmb3JtYXR0aW5nIGNob2lj
ZXMgdGhhdCBhcmUgbm90IGF2YWlsYWJsZSBmcm9tIHRoZSBidWlsdC1pbiBzdHlsZXMsIFF1aWNr
IFN0eWxlIHNldHMsIGFuZCB0aGVtZXMsIHlvdSBjYW4gY3JlYXRlIGN1c3RvbSBzdHlsZXMgdG8g
c3VpdCB5b3VyIG5lZWRzLjwvcD4iLAorICAgICAgICAiPHAgaWQ9J2lkXzAzJz5UaGUgZWFzaWVz
dCB3YXkgdG8gY3JlYXRlIGEgY3VzdG9tIHN0eWxlIGlzIHRvIG1vZGlmeSBhIGJ1aWx0LWluIHN0
eWxlIGFuZCB0aGVuIHNhdmUgaXQgYXMgYSBuZXcgc3R5bGUuPC9wPiIsCisgICAgICAgICI8cCBp
ZD0naWRfMDQnPkZvciBleGFtcGxlLCB5b3UgbWlnaHQgd2FudCB0byBmb3JtYXQgYSBwYXJhZ3Jh
cGggb2YgcXVvdGVkIG1hdGVyaWFsIHdpdGggYSBoYWxmLWluY2ggaW5kZW50IGZyb20gdGhlIGxl
ZnQgYW5kIHJpZ2h0IG1hcmdpbnMsIHNpbmdsZSBzcGFjZWQuIFRoZXJlIGlzIG5vIGJ1aWx0LWlu
IHN0eWxlIHRvIGFjY29tbW9kYXRlIHRoaXMsIGJ1dCB5b3UgY2FuIGNyZWF0ZSBhIGN1c3RvbSBz
dHlsZSBieSBkb2luZyB0aGUgZm9sbG93aW5nOjwvcD4iLAorICAgICAgICAiPG9sIHR5cGU9JzEn
IGlkPSdpZF8wNSc+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzA2Jz48cD5DbGljayBpbiB0
aGUgcGFyYWdyYXBoIHlvdSB3YW50IHRvIGZvcm1hdC48L3A+PC9saT4iLAorICAgICAgICAgICAg
IjxsaSBpZD0naWRfMDcnPjxwPk9uIHRoZSA8Yj5Ib21lPC9iPiB0YWIsIGNsaWNrIHRoZSA8Yj5Q
YXJhZ3JhcGg8L2I+IERpYWxvZyBCb3ggTGF1bmNoZXIuPC9wPjwvbGk+IiwKKyAgICAgICAgICAg
ICI8bGkgaWQ9J2lkXzA4Jz48cD5JbiB0aGUgPGI+SW5kZW50YXRpb248L2I+IHNlY3Rpb24sIHR5
cGUgPGIgY2xhc3M9J29jcExpdGVyYWwnPjAuNSc8L2I+IGluIHRoZSA8Yj5MZWZ0PC9iPiBhbmQg
PGI+UmlnaHQ8L2I+IGJveGVzLjwvcD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8w
OSc+PHA+SW4gdGhlIDxiPlNwYWNpbmc8L2I+IHNlY3Rpb24sIGluIHRoZSA8Yj5MaW5lIHNwYWNp
bmc8L2I+IGxpc3QsIGNsaWNrIDxiPlNpbmdsZTwvYj4uPC9wPjwvbGk+IiwKKyAgICAgICAgICAg
ICI8bGkgaWQ9J2lkXzEwJz48cD5DbGljayA8Yj5PSzwvYj4uPC9wPjwvbGk+IiwKKyAgICAgICAg
ICAgICI8bGkgaWQ9J2lkXzExJz48cD5SaWdodC1jbGljayBpbiB0aGUgcGFyYWdyYXBoLCBwb2lu
dCB0byA8Yj5TdHlsZXM8L2I+LCBhbmQgdGhlbiBjbGljayA8Yj5TYXZlIFNlbGVjdGlvbiBhcyBh
IE5ldyBRdWljayBTdHlsZTwvYj4uPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lk
XzEyJz48cD5JbiB0aGUgPGI+TmFtZTwvYj4gYm94LCB0eXBlIGEgbmFtZSBmb3IgdGhlIHN0eWxl
LCBzdWNoIGFzIDxiPkJsb2NrIHF1b3RlPC9iPi4gPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8
bGkgaWQ9J2lkXzEzJz48cD5JZiB5b3Ugd2FudCB0aGUgc3R5bGUgdG8gYmUgaW5jbHVkZWQgaW4g
dGhlIGdhbGxlcnkgb2Ygc3R5bGVzIG9uIHRoZSA8Yj5Ib21lPC9iPiB0YWIsIGFuZCBpZiB5b3Ug
d2FudCB0aGUgc3R5bGUgdG8gYmUgYSBsaW5rZWQgc3R5bGUsIGNsaWNrIDxiPk9LPC9iPi48L3A+
PC9saT4iLAorICAgICAgICAgICAgIjxsaSBpZD0naWRfMTQnPiIsCisgICAgICAgICAgICAgICAg
IjxwIGlkPSdpZF8xNSc+SWYgeW91IGRvbid0IHdhbnQgdGhlIHN0eWxlIHRvIGJlIGluY2x1ZGVk
IGluIHRoZSBnYWxsZXJ5LCBvciBpZiB5b3Ugd2FudCB0aGUgc3R5bGUgdG8gYmUgZWl0aGVyIGEg
cGFyYWdyYXBoIG9yIGEgY2hhcmFjdGVyIHN0eWxlLCBjbGljayA8Yj5Nb2RpZnk8L2I+IGFuZCBk
byBvbmUgb3IgYm90aCBvZiB0aGUgZm9sbG93aW5nOjwvcD4iLAorICAgICAgICAgICAgICAgICI8
dWwgaWQ9J2lkXzE2Jz4iLAorICAgICAgICAgICAgICAgICAgICAiPGxpIGlkPSdpZF8xNyc+PHA+
QXQgdGhlIGJvdHRvbSBvZiB0aGUgZGlhbG9nIGJveCwgY2xlYXIgdGhlIDxiPkFkZCB0byBRdWlj
ayBTdHlsZTwvYj4gbGlzdCBib3guPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICAgICAgICAgIjxs
aSBpZD0naWRfMTgnPjxwPkluIHRoZSA8Yj5TdHlsZSB0eXBlPC9iPiBsaXN0LCBjbGljayA8Yj5Q
YXJhZ3JhcGg8L2I+IG9yIDxiPkNoYXJhY3RlcjwvYj4uPC9wPjwvbGk+IiwKKyAgICAgICAgICAg
ICAgICAiPC91bD4iLAorICAgICAgICAgICAgIjwvbGk+IiwKKyAgICAgICAgIjwvb2w+IiwKKyAg
ICAgICAgIjxwIGlkPSdpZF8xOSc+SWYgeW91IHN3aXRjaCB0byBhIGRpZmZlcmVudCBRdWljayBT
dHlsZSBzZXQsIHlvdSBtYXkgbmVlZCB0byBhZGp1c3QgdGhlIHNldHRpbmdzIG9mIHlvdXIgY3Vz
dG9tIHN0eWxlLiBJbiB0aGUgZXhhbXBsZSBoZXJlLCBpZiB5b3UgY3JlYXRlIHRoZSBCbG9jayBx
dW90ZSBzdHlsZSB3aGlsZSB0aGUgV29yZCAyMDA3IFF1aWNrIFN0eWxlIHNldCBpcyBhcHBsaWVk
LCBhbmQgdGhlbiB5b3Ugc3dpdGNoIHRvIHRoZSBUcmFkaXRpb25hbCBRdWljayBTdHlsZSBzZXQs
IHlvdSBjYW4gY2hhbmdlIHRoZSBCbG9jayBxdW90ZSBzdHlsZSB0byByZW1vdmUgdGhlIGZpcnN0
LWxpbmUgaW5kZW50YXRpb24gdGhhdCB0aGUgVHJhZGl0aW9uYWwgUXVpY2sgU3R5bGUgc2V0IGlu
dHJvZHVjZXMuIFRvIGNoYW5nZSBhIHN0eWxlLCBkbyB0aGUgZm9sbG93aW5nOjwvcD4iLAorICAg
ICAgICAiPG9sIHR5cGU9JzEnIGlkPSdpZF8yMCc+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lk
XzIxJz48cD5PbiB0aGUgPGI+SG9tZTwvYj4gdGFiIGluIHRoZSA8Yj5TdHlsZXM8L2I+IGdyb3Vw
LCByaWdodC1jbGljayA8Yj5CbG9jayBxdW90ZTwvYj4sIGFuZCB0aGVuIGNsaWNrIDxiPk1vZGlm
eTwvYj4uPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzIyJz48cD5DbGljayA8
Yj5Gb3JtYXQ8L2I+LCBhbmQgdGhlbiBjbGljayA8Yj5QYXJhZ3JhcGg8L2I+LjwvcD48L2xpPiIs
CisgICAgICAgICAgICAiPGxpIGlkPSdpZF8yMyc+PHA+SW4gdGhlIDxiPkluZGVudGF0aW9uPC9i
PiBzZWN0aW9uLCBpbiB0aGUgPGI+U3BlY2lhbDwvYj4gbGlzdCwgY2xpY2sgPGI+KG5vbmUpPC9i
Pi48L3A+PC9saT4iLAorICAgICAgICAiPC9vbD4iLAorICAgICAgICAiPHAgaWQ9J2lkXzI0Jz5U
aGUgbW9yZSBjaGFyYWN0ZXJpc3RpY3MgdGhhdCB5b3Ugc3BlY2lmeSBmb3IgdGhlIHN0eWxlLCB0
aGUgbGVzcyB0aGUgc3R5bGUgaXMgYWZmZWN0ZWQgYnkgc3dpdGNoaW5nIFF1aWNrIFN0eWxlIHNl
dHMgb3IgdGhlbWVzLjwvcD4iLAorICAgICI8L2Rpdj4iCitdOworCitMYXllcmluZ1RleHRTdGFn
ZS5wYXJzZVRleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW0pIHsKKyAgICB2YXIgcHJhc2VSZXN1
bHQgPSB7fTsKKyAgICBwcmFzZVJlc3VsdC50YWdTdGFydCA9IHRleHRJdGVtLm1hdGNoKC88KC4q
Pyk+L2cpWzBdOworICAgIHZhciBzcGFjZUluZGV4ID0gcHJhc2VSZXN1bHQudGFnU3RhcnQuaW5k
ZXhPZigiICIpOworICAgIHByYXNlUmVzdWx0Lm5vZGVOYW1lID0gcHJhc2VSZXN1bHQudGFnU3Rh
cnQuc3Vic3RyaW5nKDEsIHNwYWNlSW5kZXggIT0gLTEgPyBzcGFjZUluZGV4IDogcHJhc2VSZXN1
bHQudGFnU3RhcnQubGVuZ3RoIC0gMSk7CisgICAgcHJhc2VSZXN1bHQuYXJncyA9IHNwYWNlSW5k
ZXggIT0gLTEgPyB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LnBhcnNlQXJndW1lbnRzKHByYXNlUmVz
dWx0LnRhZ1N0YXJ0LnN1YnN0cmluZyhzcGFjZUluZGV4ICsgMSwgcHJhc2VSZXN1bHQudGFnU3Rh
cnQubGVuZ3RoIC0gMSkpIDoge307CisgICAgdmFyIHRhZ0VuZCA9ICI8LyIgKyBwcmFzZVJlc3Vs
dC5ub2RlTmFtZSArICI+IjsgICAgICAgICAgICAgICAgCisgICAgcHJhc2VSZXN1bHQudGFnRW5k
ID0gdGV4dEl0ZW0uZW5kc1dpdGgodGFnRW5kKSA/IHRhZ0VuZCA6ICIiOworICAgIHJldHVybiBw
cmFzZVJlc3VsdDsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UuaXNPcGVuaW5nVGV4dEl0ZW0gPSBm
dW5jdGlvbih0ZXh0SXRlbSkgeworICAgIHJldHVybiAhTGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VU
ZXh0SXRlbSh0ZXh0SXRlbSkudGFnRW5kLmxlbmd0aDsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2Uu
aXNDbG9zaW5nVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbSkgeworICAgIHJldHVybiB0ZXh0
SXRlbS5pbmRleE9mKCIvIikgPT0gKzE7Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVt
c0ZsYWdzID0gTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zLm1hcChmdW5jdGlvbih0ZXh0SXRl
bSl7CisgICB2YXIgdGV4dEl0ZW1GbGFncyA9IHt9OworICAgdGV4dEl0ZW1GbGFncy5pc09wZW5p
bmcgPSBMYXllcmluZ1RleHRTdGFnZS5pc09wZW5pbmdUZXh0SXRlbSh0ZXh0SXRlbSk7CisgICB0
ZXh0SXRlbUZsYWdzLmlzQ2xvc2luZyA9IExheWVyaW5nVGV4dFN0YWdlLmlzQ2xvc2luZ1RleHRJ
dGVtKHRleHRJdGVtKTsgICAKKyAgIHJldHVybiB0ZXh0SXRlbUZsYWdzOworfSk7CisKK0xheWVy
aW5nVGV4dFN0YWdlLmlzQ29sb3JhYmxlVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbUZsYWdz
KSB7CisgICAgcmV0dXJuICEodGV4dEl0ZW1GbGFncy5pc09wZW5pbmcgfHwgdGV4dEl0ZW1GbGFn
cy5pc0Nsb3NpbmcpOworfQorCitMYXllcmluZ1RleHRTdGFnZS5pc0luc2VydGFibGVUZXh0SXRl
bSA9IGZ1bmN0aW9uKHRleHRJdGVtRmxhZ3MpIHsKKyAgICByZXR1cm4gIXRleHRJdGVtRmxhZ3Mu
aXNDbG9zaW5nOworfQorCitMYXllcmluZ1RleHRTdGFnZS5jb2xvcmFibGVUZXh0SXRlbXMgPSBM
YXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFncy5maWx0ZXIoZnVuY3Rpb24odGV4dEl0ZW1G
bGFncykgeworICAgIHJldHVybiBMYXllcmluZ1RleHRTdGFnZS5pc0NvbG9yYWJsZVRleHRJdGVt
KHRleHRJdGVtRmxhZ3MpOworfSkubGVuZ3RoOworCitMYXllcmluZ1RleHRTdGFnZS5pbnNlcnRh
YmxlVGV4dEl0ZW1zID0gTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MuZmlsdGVyKGZ1
bmN0aW9uKHRleHRJdGVtRmxhZ3MpIHsKKyAgICByZXR1cm4gTGF5ZXJpbmdUZXh0U3RhZ2UuaXNJ
bnNlcnRhYmxlVGV4dEl0ZW0odGV4dEl0ZW1GbGFncyk7Cit9KS5sZW5ndGg7CisKK0xheWVyaW5n
VGV4dFN0YWdlLmNvbG9ySW5kZXhUb1RleHRFbGVtZW50SW5kZXggPSBmdW5jdGlvbihjb2xvcklu
ZGV4KSB7CisgICAgdmFyIHRleHRFbGVtZW50SW5kZXggPSAwOworICAgIHZhciBpbmRleCA9IDA7
CisgICAgCisgICAgZm9yICh2YXIgdGV4dEl0ZW1JbmRleCA9IDA7IHRleHRJdGVtSW5kZXggPCBM
YXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFncy5sZW5ndGg7ICsrdGV4dEl0ZW1JbmRleCkg
eworICAgICAgICBpZiAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDb2xvcmFibGVUZXh0SXRlbShMYXll
cmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0ZXh0SXRlbUluZGV4XSkpIHsKKyAgICAgICAg
ICAgIGlmICgrK2luZGV4ID4gY29sb3JJbmRleCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNJbnNlcnRhYmxlVGV4dEl0
ZW0oTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3NbdGV4dEl0ZW1JbmRleF0pKQorICAg
ICAgICAgICAgKyt0ZXh0RWxlbWVudEluZGV4OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdGV4
dEVsZW1lbnRJbmRleDsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLmNv
bnN0cnVjdG9yID0gTGF5ZXJpbmdUZXh0U3RhZ2U7CisKK0xheWVyaW5nVGV4dFN0YWdlLnByb3Rv
dHlwZS5fbmV4dFRleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW1GbGFncykgeworICAgIHZhciB0
ZXh0SXRlbSA9IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc1t0aGlzLl90ZXh0SXRlbUluZGV4
XTsKKyAgICB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmV4dGVuZE9iamVjdCh0ZXh0SXRlbUZsYWdz
LCBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0aGlzLl90ZXh0SXRlbUluZGV4XSk7
CisgICAgdGhpcy5fdGV4dEl0ZW1JbmRleCA9ICh0aGlzLl90ZXh0SXRlbUluZGV4ICsgMSkgJSBM
YXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXMubGVuZ3RoOworICAgIHJldHVybiB0ZXh0SXRlbTsK
K30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9wcmV2aW91c1RleHRJdGVtID0gZnVu
Y3Rpb24odGV4dEl0ZW1GbGFncykgeworICAgIHRoaXMuX3RleHRJdGVtSW5kZXggPSAodGhpcy5f
dGV4dEl0ZW1JbmRleCArIExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtcy5sZW5ndGggLSAxKSAl
IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtcy5sZW5ndGg7CisgICAgd2luZG93LmJlbmNobWFy
a0NsaWVudC5leHRlbmRPYmplY3QodGV4dEl0ZW1GbGFncywgTGF5ZXJpbmdUZXh0U3RhZ2UudGV4
dEl0ZW1zRmxhZ3NbdGhpcy5fdGV4dEl0ZW1JbmRleF0pOyAgICAKKyAgICByZXR1cm4gTGF5ZXJp
bmdUZXh0U3RhZ2UudGV4dEl0ZW1zW3RoaXMuX3RleHRJdGVtSW5kZXhdOworfQorCitMYXllcmlu
Z1RleHRTdGFnZS5wcm90b3R5cGUuX3B1c2hUZXh0RWxlbWVudCA9IGZ1bmN0aW9uKCkgeworICAg
IHZhciB0ZXh0SXRlbUZsYWdzID0ge307CisgICAgdmFyIHRleHRJdGVtID0gdGhpcy5fbmV4dFRl
eHRJdGVtKHRleHRJdGVtRmxhZ3MpOworICAgIGZvciAoIDsgdGV4dEl0ZW1GbGFncy5pc0Nsb3Np
bmc7IHRleHRJdGVtID0gdGhpcy5fbmV4dFRleHRJdGVtKHRleHRJdGVtRmxhZ3MpKQorICAgICAg
ICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudCA9IHRoaXMuX3RleHRFbGVtZW50UGFyZW50LnBhcmVu
dE5vZGU7CisKKyAgICB2YXIgcHJhc2VSZXN1bHQgPSBMYXllcmluZ1RleHRTdGFnZS5wYXJzZVRl
eHRJdGVtKHRleHRJdGVtKTsKKyAgICB0ZXh0SXRlbSA9IHRleHRJdGVtLnN1YnN0cmluZyhwcmFz
ZVJlc3VsdC50YWdTdGFydC5sZW5ndGgsIHRleHRJdGVtLmxlbmd0aCAtIHByYXNlUmVzdWx0LnRh
Z0VuZC5sZW5ndGgpOworCisgICAgdmFyIHRleHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudChwcmFzZVJlc3VsdC5ub2RlTmFtZSk7CisKKyAgICBmb3IgKHZhciBhdHRybmFtZSBpbiBw
cmFzZVJlc3VsdC5hcmdzKQorICAgICAgICB0ZXh0RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cm5h
bWUsIHByYXNlUmVzdWx0LmFyZ3NbYXR0cm5hbWVdKTsKKworICAgIHRoaXMuX3RleHRFbGVtZW50
UGFyZW50LmFwcGVuZENoaWxkKHRleHRFbGVtZW50KTsKKyAgICAKKyAgICBpZiAoIXByYXNlUmVz
dWx0LnRhZ0VuZC5sZW5ndGgpCisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGV4
dEVsZW1lbnQ7CisKKyAgICB0ZXh0RWxlbWVudC5pbm5lckhUTUwgPSB0ZXh0SXRlbTsKKyAgICAK
KyAgICB0aGlzLl90ZXh0RWxlbWVudHMucHVzaCh0ZXh0RWxlbWVudCk7CisgICAgcmV0dXJuIHRo
aXMuX3RleHRFbGVtZW50cy5sZW5ndGg7Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlw
ZS5fcG9wVGV4dEVsZW1lbnQgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgdGV4dEl0ZW1GbGFncyA9
IHt9OyAgICAKKyAgICB2YXIgdGV4dEl0ZW0gPSB0aGlzLl9wcmV2aW91c1RleHRJdGVtKHRleHRJ
dGVtRmxhZ3MpOworICAgIGZvciAoIDsgdGV4dEl0ZW1GbGFncy5pc0Nsb3Npbmc7IHRleHRJdGVt
ID0gdGhpcy5fcHJldmlvdXNUZXh0SXRlbSh0ZXh0SXRlbUZsYWdzKSkKKyAgICAgICAgdGhpcy5f
dGV4dEVsZW1lbnRQYXJlbnQgPSB0aGlzLl90ZXh0RWxlbWVudFBhcmVudC5sYXN0Q2hpbGQ7CisK
KyAgICBpZiAodGV4dEl0ZW1GbGFncy5pc09wZW5pbmcpCisgICAgICAgIHRoaXMuX3RleHRFbGVt
ZW50UGFyZW50ID0gdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQucGFyZW50Tm9kZTsKKworICAgIHZh
ciB0ZXh0RWxlbWVudCA9IHRoaXMuX3RleHRFbGVtZW50c1t0aGlzLl90ZXh0RWxlbWVudHMubGVu
Z3RoIC0gMV07CisgICAgCisgICAgaWYgKHRleHRFbGVtZW50ICYmIHRleHRFbGVtZW50LnBhcmVu
dE5vZGUgJiYgdGV4dEVsZW1lbnQucGFyZW50Tm9kZSA9PSB0aGlzLl90ZXh0RWxlbWVudFBhcmVu
dCkKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQucmVtb3ZlQ2hpbGQodGV4dEVsZW1l
bnQpOworCisgICAgdGhpcy5fdGV4dEVsZW1lbnRzLnBvcCgpOworICAgIHJldHVybiB0aGlzLl90
ZXh0RWxlbWVudHMubGVuZ3RoOworfQorCitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX2Nv
bG9yVGV4dEl0ZW0gPSBmdW5jdGlvbihjb2xvcikgeworICAgIHZhciB0ZXh0RWxlbWVudEluZGV4
ID0gTGF5ZXJpbmdUZXh0U3RhZ2UuY29sb3JJbmRleFRvVGV4dEVsZW1lbnRJbmRleCh0aGlzLl9j
b2xvckluZGV4KTsKKyAgICBmb3IgKCA7IHRleHRFbGVtZW50SW5kZXggPCB0aGlzLl90ZXh0RWxl
bWVudHMubGVuZ3RoOyB0ZXh0RWxlbWVudEluZGV4ICs9IExheWVyaW5nVGV4dFN0YWdlLmluc2Vy
dGFibGVUZXh0SXRlbXMpCisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50c1t0ZXh0RWxlbWVudElu
ZGV4XS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKK30KKworTGF5ZXJpbmdUZXh0U3Rh
Z2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpIHsKKyAgICB0aGlzLl9j
b2xvclRleHRJdGVtKCJ0cmFuc3BhcmVudCIpOworICAgIHRoaXMuX2NvbG9ySW5kZXggPSAodGhp
cy5fY29sb3JJbmRleCArIDEpICUgTGF5ZXJpbmdUZXh0U3RhZ2UuY29sb3JhYmxlVGV4dEl0ZW1z
OworICAgIHRoaXMuX2NvbG9yVGV4dEl0ZW0oIlllbGxvd0dyZWVuIik7CisgICAgCisgICAgdmFy
IGJsYWNrVGV4dEVsZW1lbnRzID0gTWF0aC5taW4odGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aCwg
TGF5ZXJpbmdUZXh0U3RhZ2UuaW5zZXJ0YWJsZVRleHRJdGVtcyk7CisgICAgdmFyIGkgPSAwOwor
ICAgIGZvciAoIDsgaSA8IHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGggLSBibGFja1RleHRFbGVt
ZW50czsgKytpKQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVudHNbaV0uc3R5bGUuY29sb3IgPSAo
dGhpcy5fYW5pbWF0ZUNvdW50cyAmIDEpID8gIkxpZ2h0WWVsbG93IiA6ICJ3aGl0ZSI7CisKKyAg
ICBmb3IgKCA7IGkgPCB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOyArK2kpCisgICAgICAgIHRo
aXMuX3RleHRFbGVtZW50c1tpXS5zdHlsZS5jb2xvciA9ICJibGFjayI7CisgICAgICAgIAorICAg
ICsrdGhpcy5fYW5pbWF0ZUNvdW50czsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBl
LnR1bmUgPSBmdW5jdGlvbihjb3VudCkgeworICAgIGNvdW50ID0gY291bnQgPiAwID8gTWF0aC5m
bG9vcihjb3VudCkgOiBNYXRoLmNlaWwoY291bnQpOworCisgICAgaWYgKGNvdW50ID09IDApCisg
ICAgICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOworCisgICAgaWYgKGNvdW50
ID4gMCkgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAg
ICAgICB0aGlzLl9wdXNoVGV4dEVsZW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRF
bGVtZW50cy5sZW5ndGg7CisgICAgfQorICAgICAgICAKKyAgICBjb3VudCA9IE1hdGgubWluKC1j
b3VudCwgdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBjb3VudDsgKytpKQorICAgICAgICB0aGlzLl9wb3BUZXh0RWxlbWVudCgpOworCisgICAgcmV0
dXJuIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7Cit9CisKK2Z1bmN0aW9uIExheWVyaW5nVGV4
dEJlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFy
KSB7CisgICAgQmVuY2htYXJrLmNhbGwodGhpcywgb3B0aW9ucyk7CisgICAgCisgICAgdmFyIGVs
ZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhZ2UiKTsKKyAgICBlbGVtZW50LnNl
dEF0dHJpYnV0ZSgid2lkdGgiLCBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoKTsKKyAgICBlbGVt
ZW50LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQpOwor
ICAgIAorICAgIHRoaXMuX3N0YWdlID0gdGhpcy5jcmVhdGVTdGFnZShlbGVtZW50KTsKKyAgICB0
aGlzLl9hbmltYXRvciA9IHRoaXMuY3JlYXRlQW5pbWF0b3IoKTsKKyAgICB0aGlzLl9zdWl0ZSA9
IHN1aXRlOworICAgIHRoaXMuX3Rlc3QgPSB0ZXN0OworICAgIHRoaXMuX3JlY29yZFRhYmxlID0g
cmVjb3JkVGFibGU7CisgICAgdGhpcy5fcHJvZ3Jlc3NCYXIgPSBwcm9ncmVzc0JhcjsKK30KKwor
TGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQmVuY2htYXJr
LnByb3RvdHlwZSk7CitMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gTGF5ZXJpbmdUZXh0QmVuY2htYXJrOworCitMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90
eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkgeworICAgIHJldHVybiBuZXcgTGF5
ZXJpbmdUZXh0U3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK0xheWVyaW5nVGV4
dEJlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlvbigpIHsKKyAgICBy
ZXR1cm4gbmV3IExheWVyaW5nVGV4dEFuaW1hdG9yKHRoaXMpOworfQorCitMYXllcmluZ1RleHRC
ZW5jaG1hcmsucHJvdG90eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkgeworICAgIHJldHVybiB0
aGlzLl9zdGFnZS50dW5lKGNvdW50KTsKK30KKworTGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3Rv
dHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLl9zdGFnZS5jbGVhcigp
OworfQorCitMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlLnNob3dSZXN1bHRzID0gZnVu
Y3Rpb24obWVzc2FnZSwgcHJvZ3Jlc3MpIHsKKyAgICBpZiAoIXRoaXMuX3JlY29yZFRhYmxlIHx8
ICF0aGlzLl9wcm9ncmVzc0JhciB8fCAhdGhpcy5fc3VpdGUgfHwgIXRoaXMuX3Rlc3QpCisgICAg
ICAgIHJldHVybjsKKworICAgIHRoaXMuX3JlY29yZFRhYmxlLnNob3dSZWNvcmQodGhpcy5fc3Vp
dGUsIHRoaXMuX3Rlc3QsIHRoaXMuX3NhbXBsZXIsIG1lc3NhZ2UpOworICAgIHRoaXMuX3Byb2dy
ZXNzQmFyLnNldFBvcyhwcm9ncmVzcyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3Jl
YXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0JhcikgeworICAgIHdpbmRvdy5iZW5jaG1hcmsgPSBuZXcgTGF5ZXJpbmdUZXh0QmVuY2htYXJr
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5w
bmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlw
ZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5wbmcKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5wbmcJKHJldmlz
aW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lp
bi15YW5nLnBuZwkod29ya2luZyBjb3B5KQoKUHJvcGVydHkgY2hhbmdlcyBvbjogUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5wbmcKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCitpbWFnZS9wbmcKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQoKaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdRQUFBQmtD
QVlBQUFCdzRwVlVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTgpBQUI2SmdBQWdJUUFB
UG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3
RUFtcHdZCkFBQUNCR2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQSGc2ZUcxd2JX
VjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHUKY3pwdFpYUmhMeUlnZURwNGJYQjBhejBpV0UxUUlF
TnZjbVVnTlM0MExqQWlQZ29nSUNBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOQpJbWgwZEhBNkx5
OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQZ29nSUNB
Z0lDQThjbVJtCk9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNB
Z0lDQjRiV3h1Y3pwbGVHbG1QU0pvZEhSd09pOHYKYm5NdVlXUnZZbVV1WTI5dEwyVjRhV1l2TVM0
d0x5SUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZkR2xtWmowaWFIUjBjRG92TDI1egpMbUZrYjJK
bExtTnZiUzkwYVdabUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBRYVhobGJGbEVhVzFs
Ym5OcGIyNCtNVEV3ClBDOWxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajRLSUNBZ0lDQWdJQ0Fn
UEdWNGFXWTZVR2w0Wld4WVJHbHRaVzV6YVc5dVBqRXcKTlR3dlpYaHBaanBRYVhobGJGaEVhVzFs
Ym5OcGIyNCtDaUFnSUNBZ0lDQWdJRHgwYVdabU9rOXlhV1Z1ZEdGMGFXOXVQakU4TDNScApabVk2
VDNKcFpXNTBZWFJwYjI0K0NpQWdJQ0FnSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ0lDQThM
M0prWmpwU1JFWStDand2CmVEcDRiWEJ0WlhSaFBnb1VuQTIrQUFBTldFbEVRVlI0QWUxZGZXd1Ux
UlkvdTZWQ1cwcXJpQ1FrVUNGUlFBSklDQWhSb2NURVlnMEUKVkVUOEN4QVNFU0l4d2g4YUJUSEJx
RFVHQSs4OURXRDR4dzlRaTBGalNFU3RpWkZXcVJIQ3E2RFFCSk5YcW56SVI0cllVczQ3dnpNTQpI
WWJkem03MzduenM5aVN6TTdzemV6L09iKzQ5NTU1Nzd6a3hDamt4ODNncDRodzVwdEtwVThQbzJM
RkIxTkpTUWlkT0ZOSzVjd1YwCjRRSlJlM3RNcTNIRERVekZ4VVFEQm5UU29FRWROR1JJRzFWVW5L
Q0JBMytYKzN2bCtEUVdpKzNYWjBQNllWVWtSSVVUQUdaS2NaYlQKb1VNVHFiNytGbXBzTEtDZmZ5
YmFMM3hzYnlkaXRzNnBsRGtlSjRwSkZRc0xpVzY3amVpdXU0anV2cnVUcGt6NWswYU4yaWRKL0Zz
QQoycDFLVW5uMWpJQ3dsTnZhOXZQMjdlMjhhQkh6c0dITXc0Y3pQL2dnODczM01oY1hBd1l6UjBr
SmMvLyt6QU1ITXMrYng1b244cFl5CjVCWFQzWlVWQm95Ull3OS84a2s3ejUvUDNLY1BjM1UxODZa
TnpGOTl4Yng0c1JrQXZJQXNLMk9PeDVrZmVJQzV0clpkeXlSbGM1YzMKWjc5TGhlZnc4ZU5IZWQy
Nnk5b1NLaXVaMzNtSCtmUnB1U1ZVVThOY1VPQVBHRzZ3eXN1dGxvT3lvWXhTMWx3R1lqWWZPZkkv
WHJHQwpPUlpqZnVvcDVwOStVZ3owbzdXVmVkYXNZSUJ3QTFOVVpKVmp5UkxXTWpQUHpobGdoTmxE
K2VUSkpuN21HZWErZlptZmY1NFp6SGRTClF3UHppQkhoQU1NSkRsb3FEcnc4cUlQVUpkTEFTQVcy
OElZTm5UeGdBUFBLbGRjREFWQysrWWE1dERSOFlEaUJ3WXZVcng5TFhTNmgKVHBFRFJRbzlnK3Zy
ejZxR0JFSHQ3SnJrNWxWQ3l3ZzdHRTVnb0FDTUhjdGFONmxqSklBUlptL2c5ZXN2cTJvSllaMk0w
RzJGc1p0eQpBcERzdXJDUStaVlhMcU91b1FWRkNsY2ltc2wvVlRDalZUUTNKNFBDK2owc0Fqd1ow
NzErUjJ1Wk5vMjF6bEwzVUFFakhKN0FYMy9kCnBtcnMyclhkQTRHN1VHMjlLaHlWK3hoZ291N0Nn
MUNBSWdXcDRuZmY3VkFOYXZ0MnNMdDdRc3NKYXB5UkxaQlJIL0JBZUJFb0tGS0EKaGZ6NjY1MXE1
b0NBVG9YOEdvRm5pL25KMG9VNXBxYW1FendKQkJUSmVEVy85TkpsdnZOT2IzbGhBM1h3WU81MFZZ
bUFnVnpCS0Y5NAo0eXNvZUFzVWpNbVRFNDh0YkFEY1o0elNFMVVrbDM3ckFzV2ZsaUk4cnRKdUNp
M0RQZUoyQStEOGZrbkdWRkVhYzJUeWtnQVVxL3ZLCnJrd1IvazVRNFFYVHVKZGE2d1FEMXp0MjVI
N3JjSUlJbWJKdEd3UjlkclF2U2JoRTFUdVlFVklWNEFEQ3Bsd1Y1azRRM05mUXZpeVYKMlB3NGhW
dGFtblNja1lwcWE0UGdQRWQxVk81bWNycmZNVTZSQWJOUklTOTgzYUFqOEZRR2ZVNFE3R3ZJbW5R
cmtzcnpqei9PL08yMwp6QmN2V2dldThWc3EvL1h6R1l6b1RabFpKS0VaYXB1Q09hU25CSXV1YVFh
ODhVYnkwdUNlNmZ3eVNROUMzcko5Wlc2UVZNc21CRlM2ClF0ekpybTNiekRJSXJjQ0x3dFpTWUpC
c2FEaWJVZGNsZGQ2aUp2VHVyTFplak1GOTA3WXJkRTFlaEdjeWVhdXo4ZDl4NDFEcW5zMm4KeUIr
SDZ1UlNKbDJWemJSMTY4d3lCekxEaS9CTU5waWFTWnJvdWpCaDE1T1pSNTJ5eEV4ZnNza2xMNFk0
Ny9jQzB2VnlZT2J4MUttbQpaRjJYckNTN25vU1hzMm45K3RHMGFCSFJCQVBqR3F3bU5Fa05EZDZw
cGZLTWR5cm1ud0EwTDc0NFdubWNhdXE2MGdJRHdIUk1JODRXCjRiN3VGZXBkTFFSZEhnYU1zZ0lu
SlR5RWwzTjBxUTVXaDVpaWZGZDczWElIZ0dDSlVTcnJ2bVJVMmF6cnBreTFEbVNiN3dORE55RDIK
OTliV285MjJFbUhkR0xYbll4MlNhY3BYMDRuTmZQY1ppL0ZlZmhseko4bVhyY3JOUFdxdk1xRlp1
UUhOUitPaUd3VDNkOWk1aE9mTwpWbkt0bGxWYk80MUdqRENqV1RsendmVk03RExvcFdzNDBObEp0
SFBuTk9kdlZ3RVJwSmJTamgyRnRHQ0I4NzY1NjRjZUlpb3ROWmRlCkxxUjA1Z3pSbGkxaVUwbXdG
VUwzWjJCTGdMMEtIWTNKTk9YREZLNjdXL0w2RG8zcndvWDk5dnQxdFlYUTU1K1BwdnZ2SjdyeFJ2
dWUKK2ZPVFQ1cFBNK29wOXU5UHl2c3I5VkJBcENGVTArN2RoVlJkbmQzcWpSR0ZZdkhpN09ZUnRk
VFBpZ0g0NDQvUmJYVXhYNzU4cHRyVgo0Y09tTzZucjA4dkZoWEplM1pMWGZVdmIrZ3p2a3RWbFlZ
TmxRUUhSN2Jkbi8vMGFQcHpvMVZlem4wK1VjdmpuSDZMRGh5ZWl5QllnCjJPMDZkYXAvVlZpMWlt
aldMUC95QzN0TzJDa01ESVJrdDZQc0E4Zlc0MG1UL0MzMjVzMmtZeDUvY3cxbmJ1ZlBFMzMzbmFo
YlBCNHQKWks3dUFSK1AvZmsrMHVEQlJCOTgwRHMyc1ZuK3d3KzRtZ3RBcHRBdnZ4RGRjWWQ5eTcv
ejVNbEV1M2IxZ2dLT056ZmpjMHBjM1ZWZwpDSTgzTmdpcXJDVGFJK1ljbUd6eW1UbzZpRTZmSGha
WDN5RVZGY0d5QWkzbCsrL3pXOUQzNjBmQUlxNk9YSVlNQ1JZUTVJNFdpdTZyCnBvWlVCUSsrUlA2
WFFKenF4TldyemkycWNmbGZnRVE1UWlYKzdiZjhHOUZEYkp3OFdSaFhGMGRsWllsWUU5eHZHRHh1
M1VwMDhDRFIKaWhYNUlmUWhRODZlTFlpcnY2a1M4NHV6amFBSjI5ZkdqVVIvL1VVeU5XQzFtbHdW
L3BjdUViRG9vODYvNEU4cXpBU3p6cng1MW9GeQovdkVIcWFwKzdCaEpsNnNWb2JWcncxd0Q3N0to
eXhKSGJIMjhud3poRTFBQTNHcjZtalhYRnhTNmZWMGRpU1dicUxhV0NKVU9PY1VKCmJ2SFFmK1Vp
b1h1RHVSL2RIYm85ZEgvb0JzTkk2QVVFaTdqNktHeHJDMk1SelpZSjA4ZFFFS0FvUUdHQTRoQW02
aU9kbGF6d2pLdkQKU016dDVoT2gxVUMxaG9vZEZvSWNMeXZyakt2M1RnakdmQ04wRVJpRVlqRHFs
a2RCOEFMbHVmbm1qcmk2VW0xcENhSUk0Y2dUOHpJdwoyOEI4RXpTSlc5dTQrcldGK3BqUEJPRVBB
MmRsWlhCY3VIaVJnRVZjblF5anVVQzN6MmVDMEVmM0ZWUkxnUXk1NmFiZjQ0SkJQWTBlClRkVFVs
TTl3V0hVSEtKZzBDMEttV0JhSXZRQmtKMkcyRUo2amU4bWFsOEgwc3Q5a3RjeFA0K29MZmVMRVR2
cnhSNytMRU43OElPajkKVkluUk11KzVweE5Zb0lYSXhLSDRRdCs3Tjd3TUNxSmtXS3JrMStBUis2
dUFnWkFGeUtoUmpXcm4rZlhYSUtvZXpqeWg2THp3Z2o5bAo2OXVYYU9SSUJBZTRBZ2pSditpKys0
aSsvTktmQWtRbEY0em8vYkI5Z2ZjU3FRRWYya0kwWk1QTW1SMzB4UmY0clplY0hNajJBbkZNCkRq
N3lTSWNkTmlObTU0M3RDR0pMR1VkL1NsZVd6Ulh3ZG9aUk9XTVJHL2lSTGRNOXVzYno1dy9FaW90
RjFlM3FzbUJwM0VRUFAwejAKMFVkUllaVS81WVFHaE0xRzJhS3FLcUtpb2sxMjhwWlFsMi9TWkRi
VC9Qa2RPakN5Ny9hZUxRNWthenRlZVRuUmtpWG9yaElQZkdSdAphZlkyZlY2L01TRTZ2eHc5ZXUz
R2Y2L3RCYW5lOTl6MFNiU1NubmlDWmQ5Yk5OckcrKzhUVFo5T2hFVm1PSENOMzB4VE5oWldGQlVK
CnQxZktBRVI0M2gxbHhYRkFOdHJDczg4bWYydHh6elNsK3Rhbjg1eVg0d0FBSmZVdzcxckROSFBl
ZXk4NUdEWkQ4SXhKc3RNMWNVN0gKdFlhQ2d0QkVNdUZ1elBtTVNjWWdMZmd3OUdLTTVlZlFYTTVl
K2FWelB4M25NMWRheVd3TlVZU29PR0VrZUNyeVlnQ2VNVWxlK2FWNgpIK1Zhdmh3bFN5K3VsVG93
Z3dlMGJMalp5SlJSVVFha0p3N00wRXBrSnJHS3hMRzhid1kyelRURkQwVHM5S0pVbnZGS3cvUjlt
RWxlCmUrMnl6QXpLYUxBSEpDK3lHU2VZbWJZSTkvK2pLdFF6Y1lKcDQyZkVUYXlib1NhK1IwM3RO
ZUVtRnFBSTcyYW9FMkFUM2tsTkFPRk0KQXkwRjJoUmtDZzVjbTFaMzdmeFNGZHFKbmpQcFNQa0tL
Sm01R3JjckZkVnpwcVlUU3dVM0c5Rk5vNUVoaW5OUG5mRkhGUXlVZSt0VwpielU3VWN2QWI3Qlh0
YmFhZGNaL3BaVlk0U293WUt5dmp6SjcweTg3d253blkzaDN2Mk1BV0ZlSENHNGw0S0Z4a29TdGdD
NjMzc3FNClpwd1BkTzVjejZMS1pUdWdpNDJ1WUZDbDRYelNEWGtVVmZBMmJreS9kVUNJK3hIeXlB
SEtRdlZlT21sU2VPMWRwbDZBTVdQU0F3UmcKV0pIYUZ0cjg4dVVzOVYydEdhT2w1R3IzbGE0dzd3
Smp0UzhndURNUlVCWnEwNFJNeVRWQmo2aHlDSDdXbmRCMjNnczZzS1FOam9CUwpwZEhJb0gxOStL
R3BqaUw0ZEZhdFNoME1hRk5XUkxhZTJhaHNacG82Qy9lczRNUVZGY3hyMWdUUHpFeExzR3RYNm1C
Z25HR3B0aE5NCjhkTklPc0tERW8za2hyRGNNTE5FVmE2ZzNJTUhld01DZVlFUitQSGpUYWk3RVNa
bUl4RXAzQWExZlpXVU1HY2FLaW5UTnozZC8yUE0KZ1hDeVR0bVE2RG9LQWU2ZDRBb2ZaaUFBbHI1
QmFDMk5qZW15eHYvbkFVWmxaZmRnb0ZYQWhJNjZTUjJkZFk3RXRSUjZpOFpjUWtXZQpmanE4WXha
MFU5MjFERmlTTWRQMzFsdWRxRk1rbUorc2tGS0JvWWk1cEhQMDBNU2VleTVjd0VDQUo1TVowSjV3
WUE0Y2RlaEpNSzlrCmpBbjZkNm5NYkEybEJQL3ZzUmp6c21YQmRtVVlaeVJUYlJIYkE3SURVWEN3
QWlmZEJRbEJNenVkL0tWeWM4UWMzYXpCVEtBbVQ1L08KL1BiYmVBUGxsaytFRVhpaVFWOTV1V1V1
UjZBVmxER1ZrRVRwVkQ3TXowcGx4VWdrYTRscmE5djVzY2VZb2JsQUFZQXg3OUFoODhoQQphQ050
dDIwSzhnM2RFdkpHV1ZDbTdxTGVoSm1wcHNvbURGaUtrQTBTYzcyZEVZa0hMUWZtbUFVTG1OOThF
eUd3bWMrY2tjZlNKQWhyCnRBYk1aNERwNklaS1M1bGg1c0NBN3RGSEVlZTlYZk5PRk1QRFZBWFRT
T2ZxaHAwMC9wUFZSNFhsMVpMQk12V0ZEdmZiKy9ZVjBJRUQKMWo1NmVGMkRCMVZzTXhzN2xtam9V
R3kydHhaYTE5VVIvZjAzWEsyU09QWWtPbktFZFBNUlBDUmdVejRXVEdQcnNleDIxUTJXSTBjMgpT
ajcva2EwQW9kbzJGanBBM0dnTFFOaFpORmVPS2ZCcnEyNXR4WHNuSEViQ1I2RzZLQlJQYlBvLzBl
TFUzWlI0MVlFakYvWGpJdTRxCjRDRkI3dGZMc1ZNQUNQV0cvUDhEUm5xL2FNNk44cTBBQUFBQVNV
Vk9SSzVDWUlJPQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>261784</attachid>
            <date>2015-09-22 17:30:20 -0700</date>
            <delta_ts>2015-09-22 17:30:20 -0700</delta_ts>
            <desc>results-worst-5-percent</desc>
            <filename>Screen Shot 2015-09-22 at 5.16.17 PM.png</filename>
            <type>image/png</type>
            <size>166817</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAA3gAAAKwCAYAAADKot0jAAAAAXNSR0IArs4c6QAAAZ1pVFh0WE1M
OmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6
eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlv
biByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNv
bS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+ODg4PC9leGlmOlBp
eGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjY4ODwvZXhpZjpQ
aXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+Cjwv
eDp4bXBtZXRhPgqGFq3pAABAAElEQVR4Aey9CXxU1d3//0kmySSTZLKQjSQECBIkBhQxUAFB0aoU
F2zFVnyquLWlfXiqrda2LtRa+yjYSv/4aJ9atdKftrhUK/qgLVKwoEJkhyhBCAkkZBlCmCSTTDIT
/t97Z7szmcm+zeRzeIW599yzvs85957vWb4nbOnSpWdBQwIkQAIkQAIkQAIkQAIkQAIkEPQEwoM+
B8wACZAACZAACZAACZAACZAACZCASoACHisCCZAACZAACZAACZAACZAACYQIAQp4IVKQzAYJkAAJ
kAAJkAAJkAAJkAAJUMBjHSABEiABEiABEiABEiABEiCBECFAAS9ECpLZIAESIAESIAESIAESIAES
IAEKeKwDJEACJEACJEACJEACJEACJBAiBCjghUhBMhskQAIkQAIkQAIkQAIkQAIkQAGPdYAESIAE
SIAESIAESIAESIAEQoQABbwQKUhmgwRIgARIgARIgARIgARIgAQo4LEOkAAJkAAJkAAJkAAJkAAJ
kECIEKCAFyIFyWyQAAmQAAmQAAmQAAmQAAmQAAU81gESIAESIAESIAESIAESIAESCBECFPBCpCCZ
DRIgARIgARIgARIgARIgARKggMc6QAIkQAIkQAIkQAIkQAIkQAIhQoACXogUJLNBAiRAAiRAAiRA
AiRAAiRAAhTwWAdIgARIgARIgARIgARIgARIIEQIUMALkYJkNkiABEiABEiABEiABEiABEiAAh7r
AAmQAAmQAAmQAAmQAAmQAAmECIGI4ZaPsLAwZGVlYeLEiRg9ejSMRqP7T6/XD7fkMj0kQAIkQAIk
QAIkQAIkQAIhTsBqtcJsNrv/Tp48icOHD6OiogJnz54dVrkPW7p06bBIUUJCAmbPno3p06erAt2w
osTEkAAJkAAJkAAJkAAJkAAJkIAPAUXo27lzJ7Zt24YzZ874PB2a2yEX8GJiYjB//nzMmTMHERHD
bkJxaEqFsZIACZAACZAACZAACZAACQQNAZvNhq1bt2LTpk1obm4e0nQPqYB3wQUX4Prrr0dcXNyQ
QmDkJEACJEACJEACJEACJEACJNBXAo2Njfj73/+OPXv29DWoXvsfkikzZabuxhtvVJdj9jrl9EgC
JEACJEACJEACJEACJEACw4iAMnF1yy234Nxzz8Ubb7wBZWZvsM2gC3iRkZG48847MWHChMHOK+Mj
ARIgARIgARIgARIgARIggQEnoOgVSUxMxAsvvIC2trYBj08bwaAKeIqGzCVLlnQp3LW3t6O2thaV
lZXuP0VTTUNDgzbtvCYBEiABEiABEiABEiABEiCBAScQHx+vavjPzMyE6y81NRXh4YFPnVMmtBTZ
Z+3atYOqaXNQBbwrrrgCBQUFAQtAUTGqrFf94IMPcOrUqYDu+IAESIAESIAESIAESIAESIAEBouA
MtGk/JWUlLijHDVqFK666iooekWUiSx/RpF9FBnon//8p7/HA2KnkwT9YkBC9gk0NzcX3/zmNwNm
vqamBn/6059U7TNDrXnGJ+m8JQESIAESIAESIAESIAESIAEvAorMsn//flXoGzduHGJjY72eu24U
OejIkSM4ffq0y2pAfwPPKfZjtFFRUfjWt74VULj7/PPPsXr1apSVlfVjrAyKBEiABEiABEiABEiA
BEiABAaWgCLDKLKMItP4M8rsniILKTLRYJhBEfAuv/xyJCUl+c2PIs2+/PLLg7750G9iaEkCJEAC
JEACJEACJEACJEACPSSgKFJRZBpFtvFnFFlIkYkGwwy4gGc0GjF37ly/eVFOe1c2Hdrtdr/PaUkC
JEACJEACJEACJEACJEACwUBAkWkU2UaRcfwZRSZSZKOBNgMu4CkZUc6982fWrVsHi8Xi7xHtSIAE
SIAESIAESIAESIAESCCoCCiyjSLj+DOKTBRo4suf+97aDaiAp9PpUFhY6DdtirbMw4cP+31GSxIg
ARIgARIgARIgARIgARIIRgKKjKPIOv6MIhspMtJAmgEV8PLy8mAwGDqkXzkOQTkKgYYESIAESIAE
SIAESIAESIAEQo2AIusoMo+vUWQjRUYaSDOgAt6kSZP8pl05P8JkMvl9RksSIAESIAESIAESIAES
IAESCGYCiqyjPTNPm5dAMpLWTV+uB1TAGzNmjN+0KedF0JAACZAACZAACZAACZAACZBAqBIIJPME
kpH6i8OACngpKSl+03ns2DG/9rQkARIgARIgARIgARIgARIggVAgEEjmCSQj9VeeB1TAi4mJ8ZvO
U6dO+bWnJQmQAAmQAAmQAAmQAAmQAAmEAoFAMk8gGam/8jygAp5yaruvUTYb2mw2X2vekwAJkAAJ
kAAJkAAJkAAJkEDIEFBkHn+KVvzJSP2Z6QEV8PwldKAz5C9O2pEACZAACZAACZAACZAACZDAYBMY
Ctln0AW8wYbK+EiABEiABEiABEiABEiABEhgpBCggDdSSpr5JAESIAESIAESIAESIAESCHkCFPBC
voiZQRIgARIgARIgARIgARIggZFCgALeSClp5pMESIAESIAESIAESIAESCDkCVDAC/kiZgZJgARI
gARIgARIgARIgARGCgEKeCOlpJlPEiABEiABEiABEiABEiCBkCdAAS/ki5gZJAESIAESIAESIAES
IAESGCkEKOCNlJJmPkmABEiABEiABEiABEiABEKeAAW8kC9iZpAESIAESIAESIAESIAESGCkEKCA
N1JKmvkkARIgARIgARIgARIgARIIeQIU8EK+iJlBEiABEiABEiABEiABEiCBkUKAAt5IKWnmkwRI
gARIgARIgARIgARIIOQJUMAL+SJmBkmABEiABEiABEiABEiABEYKAQp4I6WkmU8SIAESIAESIAES
IAESIIGQJ0ABL+SLmBkkARIgARIgARIgARIgARIYKQQo4I2UkmY+SYAESIAESIAESIAESIAEQp4A
BbyQL2JmkARIgARIgARIgARIgARIYKQQoIA3Ukqa+SQBEiABEiABEiABEiABEgh5AhTwQr6ImUES
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
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261849</attachid>
            <date>2015-09-23 16:56:28 -0700</date>
            <delta_ts>2015-09-23 18:14:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149053-20150923165610.patch</filename>
            <type>text/plain</type>
            <size>154345</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAxNDMpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3OCBAQAorMjAxNS0wOS0xOCAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdv
cmsgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQuIE1hbnkgcGFydHMgb2YgdGhlIGNvZGUgd2Fz
IGNvcGllZAorICAgICAgICBmcm9tIHNwZWVkb21ldGVyIGJlbmNobWFyay4gVGhlIGJlbmNobWFy
ayBydW5uZXIncyBuYW1lIGlzICJhbmltb21ldGVyLmh0bWwiCisgICAgICAgIGJ1dCB0aGlzIGlz
IG5vdCBmaW5hbCB5ZXQgYW5kIG1vc3QgcHJvYmFibHkgaXMgZ29pbmcgdG8gY2hhbmdlLiBUaGUg
Y3NzIAorICAgICAgICBhbmQgdGhlIHBhZ2UgbGF5b3V0cyB3aWxsIGJlIHJldmlzZWQgZm9yIGJl
dHRlciBsb29raW5nLgorCisgICAgICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgYmVuY2htYXJrIGlz
IHRvIG1lYXN1cmUgdGhlIGFuaW1hdGlvbiBwZXJmb3JtYW5jZSBvZgorICAgICAgICBhIHdlYiBi
cm93c2VyIGluIGFjY3VyYXRlIHdheSBidXQgYXQgZmluZSBncmFudWxhciBsZXZlbC4gVGhlIGRl
c2lnbiBpcworICAgICAgICB0byBoYXZlIHNlcGFyYXRlIGFuaW1hdGlvbnM7IGVhY2ggc3RyZXNz
IHRlc3RzIG9uZSBvZiB0aGUgZ3JhcGhpY3MgcHJpbWl0aXZlcworICAgICAgICBzbyB3ZSBjYW4g
aWRlbnRpZnkgYnVncyBhIGxvdCBlYXNpZXIuCisKKyAgICAgICAgSW5zdGVhZCBvZiBtZWFzdXJp
bmcgdGhlIEZQUyBvZiB0aGUgYW5pbWF0aW9uLCB0aGUgImFuaW1vbWV0ZXIiIGJlbmNobWFyawor
ICAgICAgICB0cmllcyB0byBtZWFzdXJlIHRoZSB0ZXN0IGNvbXBsZXhpdHkgd2hlbiByZW5kZXJp
bmcgYXQgYSBzZXQtcG9pbnQgRlBTIHdoaWNoCisgICAgICAgIHNob3VsZCBiZSBsZXNzIHRoYW4g
NjAgRlBTLiBUaGUgImFuaW1vbWV0ZXIiIHN0YXlzIGF0IHRoZSBzZXQtcG9pbnQgRlBTCisgICAg
ICAgIGJ5IHVzaW5nIGEgY2xvc2VkLWxvb3AgY29udHJvbCBzeXN0ZW0gUElEIGZ1bmN0aW9uLiBU
aGUgZ2FpbiBvZiB0aGUgc3lzdGVtCisgICAgICAgIGlzIHBhc3NlZCBhcyBhIHBhcmFtZXRlciB3
aGVuIHJ1bm5pbmcgdGhlIHRlc3QuIE1lYXN1cmluZyB0aGUgRlBTIGZhaXRoZnVsbHkKKyAgICAg
ICAgcmVzdWx0cyBpbiB2ZXJ5IGZsdWN0dWF0aW5nIHZhbHVlcy4gU28gYSBLYWxtYW4gZmlsdGVy
IGlzIHVzZWQgdG8gZ2l2ZSBhCisgICAgICAgIGJldHRlciBlc3RpbWF0ZSBmb3IgdGhlIGN1cnJl
bnQgRlBTLgorCisgICAgICAgIFRoZSBhbmltYXRpb24gb2YgdGhlIHRlc3RzIGlzIGRvbmUgbWFu
dWFsbHkuIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGlzCisgICAgICAgIGNhbGxlZCB3aXRoIGEg
Y2FsbGJhY2suIEluc2lkZSB0aGlzIGNhbGxiYWNrLCB0aGUgdGVzdCBpcyBhbmltYXRpbmcgYnkK
KyAgICAgICAgY2hhbmdpbmcgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZWxlbWVudHMgaW5zaWRlIHRo
ZSBwYWdlLiBUaGUgdGVzdCBjb21wbGV4aXR5CisgICAgICAgIG1heSBjaGFuZ2UgYWxzbyBpZiB0
aGUgY3VycmVudCBGUFMgaXMgbm90IGVxdWFsIHRvIHRoZSBkZXNpcmVkIEZQUy4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFuaW1vbWV0ZXI6IEFk
ZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgCisg
ICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzOiBBZGRlZC4KKyAgICAg
ICAgKEFycmF5LnByb3RvdHlwZS5zd2FwKToKKyAgICAgICAgKEhlYXApOiBNaW4vTWF4IEhlYXAg
b2JqZWN0CisgICAgICAgIChIZWFwLnByb3RvdHlwZS5fcGFyZW50SW5kZXgpOiBHaXZlbiB0aGUg
Y2hpbGQgbm9kZSBpbmRleCwgaXQgcmV0dXJucyB0aGUgcGFyZW50IGluZGV4LgorICAgICAgICAo
SGVhcC5wcm90b3R5cGUuX2xlZnRJbmRleCk6IEdpdmVuIHRoZSBwYXJlbnQgbm9kZSBpbmRleCwg
aXQgcmV0dXJucyB0aGUgbGVmdCBub2RlIGluZGV4LgorICAgICAgICAoSGVhcC5wcm90b3R5cGUu
X3JpZ2h0SW5kZXgpOiBHaXZlbiB0aGUgcGFyZW50IG5vZGUgaW5kZXgsIGl0IHJldHVybnMgdGhl
IHJpZ2h0IG5vZGUgaW5kZXguCisgICAgICAgIChIZWFwLnByb3RvdHlwZS5fY2hpbGRJbmRleCk6
IEdpdmVuIHRoZSBwYXJlbnQgbm9kZSBpbmRleCwgaXQgcmV0dXJucyB0aGUgY2hpbGQgaW5kZXgg
dGhhdCBtYXkgdmlvbGF0ZSB0aGUgaGVhcCBwcm9wZXJ0eS4KKyAgICAgICAgKEhlYXAucHJvdG90
eXBlLmluaXQpOiBJbml0aWFsaXplcyB0aGUgaGVhcCBzdGF0ZS4KKyAgICAgICAgKEhlYXAucHJv
dG90eXBlLnRvcCk6IFJldHVybnMgdGhlIHZhbHVlIHN0b3JlZCBhdCB0aGUgdG9wIG9mIHRoZSBo
ZWFwLgorICAgICAgICAoSGVhcC5wcm90b3R5cGUucHVzaCk6IFB1c2hlcyBhIG5ldyBub2RlIGF0
IHRoZSB0b3Agb2YgdGhlIGhlYXAuCisgICAgICAgIChIZWFwLnByb3RvdHlwZS5wb3ApOiBFeHRy
YWN0cyB0aGUgdG9wIG5vZGUgb2YgdGhlIGhlYXAuCisgICAgICAgIChIZWFwLnByb3RvdHlwZS5f
YnViYmxlKTogRml4ZXMgdGhlIGhlYXAgcHJvcGVydHkgYnkgbW92aW5nIHVwd2FyZC4KKyAgICAg
ICAgKEhlYXAucHJvdG90eXBlLl9zaW5rKTogRml4ZXMgdGhlIGhlYXAgcHJvcGVydHkgYnkgbW92
aW5nIGRvd253YXJkLgorICAgICAgICAoSGVhcC5wcm90b3R5cGUuc3RyKTogUHJpbnRzIHRoZSBu
b2RlcyBvZiB0aGUgaGVhcCB0byBhIHN0cmluZy4KKyAgICAgICAgKEhlYXAucHJvdG90eXBlLnZh
bHVlcyk6IFJldHVybnMgdGhlIGxhc3QgInNpemUiIGhlYXAgZWxlbWVudHMgdmFsdWVzLgorICAg
ICAgICAoQWxnb3JpdGhtLmNyZWF0ZU1pbkhlYXApOiBDcmVhdGVzIGEgc2l6ZS1ib3VuZGVkIG1p
bi1oZWFwIG9iamVjdC4KKyAgICAgICAgKEFsZ29yaXRobS5jcmVhdGVNYXhIZWFwKTogQ3JlYXRl
cyBhIHNpemUtYm91bmRlZCBtYXgtaGVhcCBvYmplY3QuCisgICAgICAgIAorICAgICAgICAqIEFu
aW1vbWV0ZXIvcmVzb3VyY2VzL21haW4uanM6IEFkZGVkLgorICAgICAgICAoUG9pbnQpOiBBIHBv
aW50IG9iamVjdAorICAgICAgICAoSW5zZXRzKTogQW4gaW5zZXRzIG9iamVjdAorICAgICAgICAo
U2ltcGxlUHJvbWlzZSk6IEFuIGltcGxlbWVudGF0aW9uIGZvciBhIHByb21pc2Ugb2JqZWN0IChj
b3BpZWQgZm9ybSBzcGVlZG9tZXRlcikuCisgICAgICAgIChNYXRyaXgpOiBBIG1hdHJpeCBvYmpl
Y3QuCisgICAgICAgIChWZWN0b3IzKTogQSB2ZWN0b3Igb2Ygc2l6ZSAzIG9iamVjdC4KKyAgICAg
ICAgKE1hdHJpeDMpOiBBIG1hdHJpeCBvZiBzaXplIDN4MyBvYmplY3QuCisgICAgICAgIChPcHRp
b25zKTogQmVuY2htYXJrIHJ1bm5pbmcgb3B0aW9ucyBhcyB0aGV5IGFyZSBzZXQgYnkgdGhlIHVz
ZXIuCisgICAgICAgICAgICAgICAgCisgICAgICAgIChQcm9ncmVzc0Jhcik6IE1hbmFnZXMgYSBw
cm9ncmVzcyBiYXIgZWxlbWVudC4gVGhlIHByb2dyZXNzIGJhciBpcyBkaXZpZGVkIGludG8gZXF1
YWwgbGVuZ3RoIHJhbmdlcy4KKyAgICAgICAgKFByb2dyZXNzQmFyLnByb3RvdHlwZS5fcHJvZ3Jl
c3NUb1BlcmNlbnQpOiBDb252ZXJ0cyB0aGUgcHJvZ3Jlc3MgaW50byBhIHBlcmNlbnRhZ2UuCisg
ICAgICAgIChQcm9ncmVzc0Jhci5wcm90b3R5cGUuaW5jUmFuZ2UpOiBNb3ZlcyB0byB0aGUgbmV4
dCByYW5nZSAoYSByYW5nZSBpcyB0aGUgcnVubmluZyB0aW1lIG9mIGEgc2luZ2xlIHRlc3QpLgor
ICAgICAgICAoUHJvZ3Jlc3NCYXIucHJvdG90eXBlLnNldFBvcyk6IERyYXdzIHRoZSBjdXJyZW50
IHByb2dyZXNzIGluIHRoZSBjdXJyZW50IHJhbmdlLgorICAgICAgICAKKyAgICAgICAgKFJlY29y
ZFRhYmxlKTogU2hvd3MgdGhlIHJlc3VsdHMgb2YgcnVubmluZyBhIGJlbmNobWFyayBpbiBhIHRh
YnVsYXIgZm9ybS4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5jbGVhcik6IENsZWFy
cyB0aGUgcmVzdWx0cyB0YWJsZS4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5fc2hv
d1RpdGxlcyk6IFNob3dzIHRoZSBoZWFkZXIgdGl0bGVzIGFuZCBhcHBlbmRzIHRoZSBzdWItdGl0
bGVzIHRvIGEgcXVldWUuCisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dIZWFk
ZXIpOiBTaG93cyB0aGUgdGFibGUgaGVhZGVyIHRpdGxlcy4KKyAgICAgICAgKFJlY29yZFRhYmxl
LnByb3RvdHlwZS5fc2hvd0VtcHR5KTogU2hvd3MgYW4gZW1wdHkgdGFibGUgY2VsbC4KKyAgICAg
ICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5fc2hvd1ZhbHVlKTogU2hvd3MgYSBudW1iZXIgdmFs
dWUgaW4gdGhlIHJlc3VsdHMgdGFibGUuCisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUu
X3Nob3dTYW1wbGVzKTogU2hvd3MgYSBidXR0b24gZm9yIHRoZSBzYW1wbGVkIGRhdGEgZ3JhcGgu
CisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dUZXN0KTogU2hvd3MgdGhlIHJl
c3VsdHMgb2YgYSBzaW5nbGUgdGVzdC4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5f
c2hvd1N1aXRlKTogU2hvd3MgdGhlIHJlc3VsdHMgb2YgYSBzaW5nbGUgc3VpdGUuCisgICAgICAg
IChSZWNvcmRUYWJsZS5wcm90b3R5cGUuc2hvd1JlY29yZCk6ICAgICAgICAKKyAgICAgICAgKFJl
Y29yZFRhYmxlLnByb3RvdHlwZS5zaG93SXRlcmF0aW9ucyk6IFNob3dzIHRoZSByZXN1bHRzIG9m
IGFsbCB0aGUgc3VpdGVzIG9mIHRoZSBpdGVyYXRpb25zLiAKKyAgICAgICAgCisgICAgICAgICog
QW5pbW9tZXRlci9yZXNvdXJjZXMvc3RhdGlzdGljcy5qczogQWRkZWQuCisgICAgICAgIChTdGF0
aXN0aWMpOiBNZWFzdXJlcyB0aGUgc2FtcGxlIG1lYW4gYW5kIHN0YW5kYXJkIGRldmlhdGlvbiBm
b3IgYSBzZXQgZGF0YSBwb2ludHMuCisgICAgICAgIChTdGF0aXN0aWMuc2FtcGxlTWVhbik6IFJl
dHVybnMgdGhlIHNhbXBsZSBtZWFuIGZvciBhIHNldCBvZiBkYXRhIHBvaW50cy4KKyAgICAgICAg
KFN0YXRpc3RpYy5zYW1wbGVTdGFuZGFyZERldmlhdGlvbik6IFJldHVybnMgdGhlIHNhbXBsZSBz
dGFuZGFyZCBkZXZpYXRpb24gZm9yIGEgc2V0IG9mIGRhdGEgcG9pbnRzLgorICAgICAgICAoU3Rh
dGlzdGljLmdlb21ldHJpY01lYW4pOiBSZXR1cm5zIHRoZSBnZW9tZXRyaWMgbWVhbiBvZiBhIHNl
dCBvZiBkYXRhLgorICAgICAgICAoU3RhdGlzdGljLnByb3RvdHlwZS5faW5pdCk6IENhbGxlZCB3
aGVuIHRoZSBvYmplY3QgaXMgY3JlYXRlZCBhbmQgd2hlbiBzdGFydFNhbXBsaW5nKCkgaXMgY2Fs
bGVkLgorICAgICAgICAoU3RhdGlzdGljLnByb3RvdHlwZS5zdGFydFNhbXBsaW5nKTogQ2FsbGVk
IGFmdGVyIHdhcm1pbmcgdXAgcGVyaW9kLiBSZXN0YXJ0cyBjb2xsZWN0aW5nIHNhbXBsZWQgZGF0
YSBwb2ludHMuCisgICAgICAgIChTdGF0aXN0aWMucHJvdG90eXBlLnNhbXBsZSk6IEFkZCBhIG5l
dyBkYXRhIHBvaW50LgorICAgICAgICAoU3RhdGlzdGljLnByb3RvdHlwZS5tZWFuKTogUmV0dXJu
cyB0aGUgc2FtcGxlIG1lYW4gZm9yIHRoZSBjdXJyZW50IHNhbXBsZWQgZGF0YSBwb2ludHMuCisg
ICAgICAgIChTdGF0aXN0aWMucHJvdG90eXBlLnN0YW5kYXJkRGV2aWF0aW9uKTogUmV0dXJucyB0
aGUgc2FtcGxlIHN0YW5kYXJkIGRldmlhdGlvbiBmb3IgdGhlIGN1cnJlbnQgc2FtcGxlZCBkYXRh
IHBvaW50cy4KKyAgICAgICAgKFN0YXRpc3RpYy5wcm90b3R5cGUucGVyY2VudGFnZSk6IFJldHVy
bnMgdGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIHN0YW5kYXJkIGRldmlhdGlvbiBkaXZpZGVkIHRvIHRo
ZSBtZWFuLgorICAgICAgICAoU3RhdGlzdGljLnByb3RvdHlwZS5jb25maWRlbmNlSW50ZXJ2YWxE
ZWx0YSk6IENhbGN1bGF0ZXMgdGhlIGNvbmZpZGVuY2UgZGVsdGEgZm9yIHRoZSBjdXJyZW50IHNh
bXBsZWQgZGF0YSBnaXZlbiBhIGNvbmZpZGVuY2UgbGV2ZWwuCisgICAgICAgIChTdGF0aXN0aWMu
cHJvdG90eXBlLmNvbmNlcm4pOiBSZXR1cm5zIHRoZSBhdmVyYWdlIG9mIHRoZSB3b3JzdCBnaXZl
biBwZXJjZW50YWdlIGZyb20gdGhlIHNhbXBsZWQgZGF0YS4KKyAgICAgICAgKFN0YXRpc3RpYy5w
cm90b3R5cGUuc2NvcmUpOiBSZXR1cm5zIGEgc2NvcmUgZm9yIHRoZSBzYW1wbGVkIGRhdGEuIEl0
IGlzIHRoZSBnZW9tZXRyaWMgbWVhbiBvZiBzYW1wbGVNZWFuIGFuZCBjb25jZXJuLgorICAgICAg
ICAoU2FtcGxlcik6IE1hbmFnZXMgc2FtcGxpbmcgbXVsdGlwbGUgZGF0YSBwb2ludHMgYXQgdGhl
IHNhbWUgdGltZSBvZmZzZXQuCisgICAgICAgIChTYW1wbGVyLnByb3RvdHlwZS5zdGFydFNhbXBs
aW5nKTogQ2FsbGVkIGFmdGVyIHdhcm1pbmcgdXAgcGVyaW9kLiBSZXN0YXJ0cyBjb2xsZWN0aW5n
IHNhbXBsZWQgZGF0YSBwb2ludHMuCisgICAgICAgIChTYW1wbGVyLnByb3RvdHlwZS5zYW1wbGUp
OiBBZGQgYSBuZXcgZGF0YSB2ZWN0b3IgYXQgYSBnaXZlbiB0aW1lIG9mZnNldC4KKyAgICAgICAg
CisgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXI6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0
ZXIvcnVubmVyL2FuaW1vbWV0ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci9y
dW5uZXIvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9yZXNv
dXJjZXMvYW5pbW9tZXRlci5jc3M6IEFkZGVkLgorICAgICAgICBUaGUgYmVuY2htYXJrIHJ1bm5l
ciBwYWdlIGFuZCBjc3MuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL3Jl
c291cmNlcy9hbmltb21ldGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtS
dW5uZXJDbGllbnQud2lsbEFkZFRlc3RGcmFtZSk6IENhbGxlZCBhZnRlciB0aGUgdGVzdCA8aWZy
YW1lPiBpcyBjcmVhdGVkLgorICAgICAgICAod2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudC5k
aWRSdW5UZXN0KTogQ2FsbGVkIGFmdGVyIHJ1bm5pbmcgYSB0ZXN0IGlzIGZpbmlzaGVkLgorICAg
ICAgICAod2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudC53aWxsU3RhcnRGaXJzdEl0ZXJhdGlv
bik6IENhbGxlZCBhdCB0aGUgYmVnaW5uaW5nIGJlZm9yZSBydW5uaW5nIGFueSB0ZXN0LgorICAg
ICAgICAod2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudC5kaWRSdW5TdWl0ZXMpOiBDYWxsZWQg
YWZ0ZXIgcnVubmluZyBhbGwgdGVzdHMgb2YgYSBzdWl0ZS4KKyAgICAgICAgKHdpbmRvdy5iZW5j
aG1hcmtSdW5uZXJDbGllbnQuZGlkRmluaXNoTGFzdEl0ZXJhdGlvbik6IENhbGxlZCBhZnRlciBy
dW5uaW5nIHRoZSBsYXN0IHRlc3QuCisgICAgICAgIAorICAgICAgICAod2luZG93LmJlbmNobWFy
a1J1bm5lckNsaWVudC5icm93c2VyKToKKyAgICAgICAgKHNob3dTZWN0aW9uKTogU2hvd3MgYSBz
ZWN0aW9uIGluIHRoZSBhbmltb21ldGVyLmh0bWwgcGFnZS4KKyAgICAgICAgKHN0YXJ0VGVzdCk6
IENhbGxlZCB3aGVuIHRoZSAiU3RhcnQgVGVzdCIgYnV0dG9uIGlzIGNsaWNrZWQuCisgICAgICAg
IChzaG93UmVzdWx0cyk6IENhbGxlZCBhZnRlciBmaW5pc2hpbmcgYWxsIHRoZSB0ZXN0cy4KKyAg
ICAgICAgKHNob3dHcmFwaCk6IENhbGxlZCB3aGVuICJDbGljay4uLiIgYnV0dG9uIGluIHRoZSAi
U2FtcGxlcyIgY29sdW1uIG9mIHRoZSByZXN1bHRzIHRhYmxlIGlzIGNsaWNrZWQKKyAgICAgICAg
CisgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIu
anM6IEFkZGVkLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyU3RhdGUpOiBUcmFja3Mgb2YgdGhl
IGN1cnJlbnQgcnVubmluZyA8c3VpdGUsIHRlc3Q+CisgICAgICAgIChCZW5jaG1hcmtSdW5uZXJT
dGF0ZS5wcm90b3R5cGUuY3VycmVudFN1aXRlKTogcmV0dXJucyB0aGUgY3VycmVudCBydW5uaW5n
IHN1aXRlLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmN1cnJlbnRU
ZXN0KTogcmV0dXJucyB0aGUgY3VycmVudCBydW5uaW5nIHRlc3QuCisgICAgICAgIChCZW5jaG1h
cmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUuaXNGaXJzdFRlc3QpOiByZXR1cm5zIHRydWUgaWYgd2Ug
YXJlIHJ1bm5pbmcgdGhlIGZpcnN0IHRlc3QgaW4gdGhlIGN1cnJlbnQgc3VpdGUuCisgICAgICAg
IChCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUubmV4dCk6IGFkdmFuY2VzIHRvIHRoZSBu
ZXh0IHRlc3QuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUucHJlcGFy
ZUN1cnJlbnRUZXN0KTogQ3JlYXRlcyBhIG5ldyA8aWZyYW1lPiBhbmQgd2FpdHMgZm9yIGl0IHRv
IGxvYWQgYSB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKEJlbmNobWFya1J1bm5lcik6IE1hbmFn
ZXMgcnVubmluZyB0aGUgdGVzdHMgYW5kIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgYmVuY2htYXJr
UnVubmVyQ2xpZW50LgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS53YWl0Rm9y
RWxlbWVudCk6IFdhaXRzIGZvciBhbiBlbGVtZW50IHRvIGJlIGNyZWF0ZWQuCisgICAgICAgIChC
ZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9hcHBlbmRGcmFtZSk6IENyZWF0ZXMgYSBuZXcgPGlm
cmFtZT4gZWxlbWVudC4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3JlbW92
ZUZyYW1lKTogUmVtb3ZlZCB0aGUgY3VycmVudCA8aWZyYW1lPiBlbGVtZW50LgorICAgICAgICAo
QmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcnVuVGVzdEFuZFJlY29yZFJlc3VsdHMpOiBSdW5z
IHRoZSBjdXJyZW50IHRlc3QgYW5kIHNhdmVzIGl0cyByZXN1bHRzLgorICAgICAgICAoQmVuY2ht
YXJrUnVubmVyLnByb3RvdHlwZS5zdGVwKTogRWl0aGVyIHJ1bnMgdGhlIGN1cnJlbnQgdGVzdCBp
ZiB0aGVyZSBpcyBvciBzdGFydCBhIG5ldyBpdGVyYXRpb24uCisgICAgICAgIChCZW5jaG1hcmtS
dW5uZXIucHJvdG90eXBlLnJ1bkFsbFN0ZXBzKTogTG9vcHMgdG8gcnVuIGFsbCB0aGUgdGVzdHMg
YW5kIG1vdmUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgorICAgICAgICAodGhpcy5fcnVuTmV4dEl0
ZXJhdGlvbik6IFN0YXJ0cyBhIG5ldyBpdGVyYXRpb24gb3Igc2hvdyB0aGUgcmVzdWx0cy4KKyAg
ICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUucnVuTXVsdGlwbGVJdGVyYXRpb25zKTog
TG9vcHMgdG8gcnVuIGFsbCB0aGUgaXRlcmF0aW9ucyBhbmQgc2hvdyB0aGUgcmVzdWx0cworICAg
ICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fZmluYWxpemUpOiBTdGFydHMgYSBuZXcg
aXRlcmF0aW9uLgorCisgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2dyYXBo
LmpzOiBBZGRlZC4KKyAgICAgICAgKGdyYXBoKTogRHJhd3MgYSBjaGFydCBmb3IgYSB0ZXN0IHNh
bXBsZWQgZGF0YS4gSXQgc2hvd3MgdHdvIHktYXhpc2VzOiBvbmUgZm9yIHRoZSBwYXJ0aWNsZXMg
YW5kIHRoZSBzZWNvbmQgZm9yIEZQUy4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci9y
dW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzOiBBZGRlZC4KKyAgICAgICAgKHN1aXRlRnJvbU5hbWUp
OiBSZXR1cm5zIGEgc3VpdGUgZ2l2ZW4gaXRzIG5hbWUuCisgICAgICAgICh0ZXN0RnJvbU5hbWUp
OiBSZXR1cm5zIGEgdGVzdCBnaXZlbiBpdHMgc3VpdGUgYW5kIG5hbWUuCisgICAgICAgIAorICAg
ICAgICAqIEFuaW1vbWV0ZXIvdGVzdHM6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNh
bnZhcy1zaGFwZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctaW1hZ2VzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXNoYXBlcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3Vu
Y2luZy1zdmctaW1hZ2VzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzOiBBZGRl
ZC4KKyAgICAgICAgVGhlIGJvdW5jaW5nIHBhcnRpY2xlcyB0ZXN0IHBhZ2VzLiBUaGUgc2FtZSB0
ZXN0cyBhcmUgZG9uZSBhcyBIVE1MIGVsZW1lbnRzLAorICAgICAgICBTVkdFbGVtZW50cyBvciBk
cmF3biBvbiBhIGNhbnZhcy4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanM6IEFk
ZGVkLgorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5j
aW5nUGFydGljbGUuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlLnByb3RvdHlwZS5fZHJh
dyk6IERyYXdzIGFuIGltYWdlIG9uIHRoZSBjb250ZXh0IG9mIGEgY2FudmFzLgorICAgICAgICAo
Qm91bmNpbmdDYW52YXNJbWFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IE1vdmVzIHRoZSBCb3VuY2lu
Z0NhbnZhc0ltYWdlIHRvIGEgbmV3IGxvY2F0aW9uLgorICAgICAgICAKKyAgICAgICAgKEJvdW5j
aW5nQ2FudmFzSW1hZ2VzU3RhZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc1N0
YWdlLgorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRl
UGFydGljbGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlwZSBCb3VuY2luZ0NhbnZhc0ltYWdl
LgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0b3IpOiBBIHN1
YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLgorICAgICAgICAoQm91bmNpbmdD
YW52YXNJbWFnZXNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6IENsZWFycyB0aGUgY29udGV4
dCBiZWZvcmUgcmVkcmF3aW5nIHRoZSBwYXJ0aWNsZXMuCisgICAgICAgIAorICAgICAgICAoQm91
bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmspOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRp
Y2xlc0JlbmNobWFyay4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLnBy
b3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nQ2Fu
dmFzSW1hZ2VzU3RhZ2UuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay5w
cm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBDcmVhdGVzIGFuIGFuaW1hdG9yIG9mIHR5cGUgQm91
bmNpbmdDYW52YXNJbWFnZXNBbmltYXRvci4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGll
bnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJvdW5jaW5nQ2FudmFzSW1h
Z2VzQmVuY2htYXJrLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qczogQWRkZWQu
CisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQ
YXJ0aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLl9kcmF3KTog
RHJhd3MgYSBzaGFwZSBvbiB0aGUgY29udGV4dCBvZiBhIGNhbnZhcy4KKyAgICAgICAgKEJvdW5j
aW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLmFuaW1hdGUpOiBNb3ZlcyB0aGUgQm91bmNpbmdDYW52
YXNTaGFwZSB0byBhIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0Nh
bnZhc1NoYXBlc1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS4K
KyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRp
Y2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNpbmdDYW52YXNTaGFwZS4KKyAg
ICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yKTogQSBzdWIgY2xh
c3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFz
U2hhcGVzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBDbGVhcnMgdGhlIGNvbnRleHQgYmVm
b3JlIHJlZHJhd2luZyB0aGUgcGFydGljbGVzLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5n
Q2FudmFzU2hhcGVzQmVuY2htYXJrKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNC
ZW5jaG1hcmsuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5
cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ0NhbnZhc1No
YXBlc1N0YWdlLgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90
eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyBhbiBhbmltYXRvciBvZiB0eXBlIEJvdW5jaW5n
Q2FudmFzU2hhcGVzQW5pbWF0b3IuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNy
ZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBCb3VuY2luZ0NhbnZhc1NoYXBlc0Jl
bmNobWFyay4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWltYWdlcy5qczogQWRkZWQuCisgICAgICAgIChC
b3VuY2luZ0ltYWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZS4KKyAgICAgICAg
KEJvdW5jaW5nSW1hZ2UucHJvdG90eXBlLl9tb3ZlKTogTW92ZSB0aGUgcGFydGljbGUgdG8gYSBu
ZXcgbG9jYXRpb24uIEFwcGx5IHRyYW5zZm9ybSBzaW5jZSBpdCBkb2VzIG5vdCByZXF1aXJlIGxh
eW91dC4KKyAgICAgICAgKEJvdW5jaW5nSW1hZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBSb3RhdGVz
IGFuZCBtb3ZlcyB0aGUgc2hhcGUgdG8gYSBuZXcgbG9jYXRpb24uCisgICAgICAgIAorICAgICAg
ICAoQm91bmNpbmdJbWFnZXNTdGFnZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVz
U3RhZ2UuCisgICAgICAgIChCb3VuY2luZ0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0
aWNsZSk6IENyZWF0ZSBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNpbmdJbWFnZS4KKyAgICAgICAg
KEJvdW5jaW5nSW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCk6IFJl
bW92ZSB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGZvcm0gdGhlIHBhcmVudCBjaGlsZHJlbiBs
aXN0LgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nSW1hZ2VzQmVuY2htYXJrKTogQSBzdWIg
Y2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuCisgICAgICAgIChCb3VuY2luZ0lt
YWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2Yg
dHlwZSBCb3VuY2luZ0ltYWdlc1N0YWdlLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVu
dC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5cGUgQm91bmNpbmdJbWFnZXNCZW5j
aG1hcmsuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanM6IEFkZGVkLgorICAgICAgICAo
Qm91bmNpbmdQYXJ0aWNsZVJvdGF0ZXIpOiBNYW5hZ2VzIHJvdGF0aW5nIGEgQm91bmNpbmdQYXJ0
aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVSb3RhdGVyLnByb3RvdHlwZS5uZXh0KTog
TW92ZXMgdGhlIHRpbWUgYnkgdGhlIGJlbmNobWFyaydzIGN1cnJlbnQgdGltZURhdGEuCisgICAg
ICAgIChCb3VuY2luZ1BhcnRpY2xlUm90YXRlci5wcm90b3R5cGUuZGVncmVlKTogUmV0dXJucyB0
aGUgY3VycmVudCByb3RhdGluZyBkZWdyZWUuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlUm90
YXRlci5wcm90b3R5cGUucm90YXRlWik6IFJldHVybnMgQ1NTIGZvcm1hdHRlZCB0cmFuc2Zvcm0g
cm90YXRlWigpIHZhbHVlLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZVJvdGF0ZXIucHJvdG90
eXBlLnJvdGF0ZSk6IFJldHVybnMgU1ZHIGZvcm1hdHRlZCB0cmFuc2Zvcm0gcm90YXRlKCkgdmFs
dWUuICAgICAgICAKKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlKTogQmFzZSBj
bGFzcyBmb3IgYSBib3VuY2luZyBwYXJ0aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGUu
cHJvdG90eXBlLmNlbnRlcik6IFJldHVybnMgdGhlIGNlbnRlciBwb2ludCBvciB0aGUgcGFydGlj
bGUuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlKTogTW92ZXMg
dGhlIHBhcnRpY2xlIGJhc2VkIG9uIGl0cyBjdXJyZW50IHBvc2l0aW9uLCBhbmdsZSBhbmQgdmVs
b2NpdHkuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvcik6IEEg
c3ViIGNsYXNzIG9mIEFuaW1hdG9yLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRv
ci5wcm90b3R5cGUuYW5pbWF0ZSk6IE1hbmFnZXMgYW5pbWF0aW5nIHRoZSBib3VuY2luZyBwYXJ0
aWNsZXMgdGhyb3VnaCB0aGUgdGVzdCBzdGFnZS4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2lu
Z1BhcnRpY2xlc1N0YWdlKTogUmVwcmVzZW50cyB0aGUgY29udGFpbmVyIG9mIGFsbCB0aGUgYm91
bmNpbmcgcGFydGljbGVzLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5
cGUuc2l6ZSk6IFJldHVybnMgdGhlIHNpemUgb2YgdGhlIHN0YWdlIGV4Y2x1ZGluZyB0aGUgQ1NT
IHBhZGRpbmcuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5wYXJz
ZVNoYXBlUGFyYW10ZXJzKTogR2V0cyB0aGUgc2hhcGUgcGFyYW1ldGVycyBmb3Igc2hhcGUgYW5p
bWF0aW5nIHRlc3RzLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUu
YW5pbWF0ZSk6IEFuaW1hdGVzIGFsbCB0aGUgcGFydGljbGVzLgorICAgICAgICAoQm91bmNpbmdQ
YXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUudHVuZSk6IENoYW5nZXMgdGhlIHRlc3QgYnkgYWRkaW5n
IG9yIHJlbW92aW5nIHBhcnRpY2xlcy4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ1BhcnRp
Y2xlc0JlbmNobWFyayk6IFJ1bnMgdGhlIGJlbmNobWFyayBmb3IgYm91bmNpbmcgcGFydGljbGVz
IHRlc3QuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY3Jl
YXRlQW5pbWF0b3IpOiBDcmVhdGVzIGFuIGFuaW1hdG9yIG9mIHR5cGUgQm91bmNpbmdQYXJ0aWNs
ZXNBbmltYXRvci4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlw
ZS50dW5lKTogVHVuZXMgdGhlIHRlc3QgdGhyb3VnaCB0aGUgY3VycmVudCBzdGFnZS4KKyAgICAg
ICAgKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5jbGVhcik6IENsZWFycyB0
aGUgdGVzdCB0aHJvdWdoIHRoZSBjdXJyZW50IHN0YWdlLgorICAgICAgICAoQm91bmNpbmdQYXJ0
aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLnNob3dSZXN1bHRzKTogU2hvd3MgdGhlIHJlc3VsdHMv
cHJvZ3Jlc3MgdGhyb3VnaCBpdHMgcmVjb3JkVGFibGUgYW5kIHByb2dyZXNzQmFyLgorICAgICAg
ICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJj
ZXMvYm91bmNpbmctc2hhcGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nU2hhcGUpOiBB
IHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdTaGFwZS5w
cm90b3R5cGUuX2NyZWF0ZVNwYW4pOiBDcmVhdGVzIGEgPHNwYW4+IGVsZW1lbnQgYW5kIHRha2Vz
IHRoZSBzaGFwZSBhbmQgY2xpcHBpbmcgY2xhc3NlcyBpbnRvIGNvbnNpZGVyYXRpb24uCisgICAg
ICAgIChCb3VuY2luZ1NoYXBlLnByb3RvdHlwZS5fbW92ZSk6IE1vdmVzIHRoZSBwYXJ0aWNsZSB0
byBhIG5ldyBsb2NhdGlvbi4gQXBwbHkgdHJhbnNmb3JtIHNpbmNlIGl0IGRvZXMgbm90IHJlcXVp
cmUgbGF5b3V0LgorICAgICAgICAoQm91bmNpbmdTaGFwZS5wcm90b3R5cGUuYW5pbWF0ZSk6IFJv
dGF0ZXMgYW5kIG1vdmVzIHRoZSBzaGFwZSB0byBhIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgCisg
ICAgICAgIChCb3VuY2luZ1NoYXBlc1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZS4KKyAgICAgICAgKEJvdW5jaW5nU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0
ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNpbmdTaGFwZS4KKyAg
ICAgICAgKEJvdW5jaW5nU2hhcGVzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3Zl
ZCk6IFJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBmb3JtIHRoZSBwYXJlbnQgY2hp
bGRyZW4gbGlzdC4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ1NoYXBlc0JlbmNobWFyayk6
IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLgorICAgICAgICAoQm91
bmNpbmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0
YWdlIG9mIHR5cGUgQm91bmNpbmdTaGFwZXNTdGFnZS4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1h
cmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJvdW5jaW5nU2hh
cGVzQmVuY2htYXJrLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qczogQWRkZWQuCisg
ICAgICAgIChCb3VuY2luZ1N2Z0ltYWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNs
ZS4KKyAgICAgICAgKEJvdW5jaW5nU3ZnSW1hZ2UucHJvdG90eXBlLl9tb3ZlKTogTW92ZSB0aGUg
cGFydGljbGUgdG8gYSBuZXcgbG9jYXRpb24uIEFwcGx5IHRyYW5zZm9ybSBzaW5jZSBpdCBkb2Vz
IG5vdCByZXF1aXJlIGxheW91dC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnSW1hZ2UucHJvdG90eXBl
LmFuaW1hdGUpOiBSb3RhdGVzIGFuZCBtb3ZlcyB0aGUgc2hhcGUgdG8gYSBuZXcgbG9jYXRpb24u
CisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZXNTdGFnZSk6IEEgc3ViIGNsYXNz
IG9mIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuCisgICAgICAgIChCb3VuY2luZ1N2Z0ltYWdlc1N0
YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0aWNsZSBvZiB0eXBl
IEJvdW5jaW5nU3ZnSW1hZ2UuCisgICAgICAgIChCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlLnByb3Rv
dHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgZWxl
bWVudCBmb3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4gbGlzdC4KKyAgICAgICAgCisgICAgICAgIChC
b3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyayk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGlj
bGVzQmVuY2htYXJrLgorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsucHJvdG90
eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUgQm91bmNpbmdTdmdJbWFn
ZXNTdGFnZS4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRl
cyBhIGJlbmNobWFyayBvZiB0eXBlIEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrLiAKKyAgICAg
ICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3Vy
Y2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdTdmdT
aGFwZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUuCisgICAgICAgIChCb3VuY2lu
Z1N2Z1NoYXBlLnByb3RvdHlwZS5fY3JlYXRlQ2lyY2xlKTogUmV0dXJucyBhIG5ld2x5IGNyZWF0
ZWQgU1ZHIDxjaXJjbGU+IGVsZW1lbnQuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlLnByb3Rv
dHlwZS5fY3JlYXRlUmVjdCk6IFJldHVybnMgYSBuZXdseSBjcmVhdGVkIFNWRyA8cmVjdD4gZWxl
bWVudC4gCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlLnByb3RvdHlwZS5fbW92ZSk6IE1vdmUg
dGhlIHBhcnRpY2xlIHRvIGEgbmV3IGxvY2F0aW9uLiBBcHBseSB0cmFuc2Zvcm0gc2luY2UgaXQg
ZG9lcyBub3QgcmVxdWlyZSBsYXlvdXQuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlLnByb3Rv
dHlwZS5hbmltYXRlKTogUm90YXRlcyBhbmQgbW92ZXMgdGhlIHNoYXBlIHRvIGEgbmV3IGxvY2F0
aW9uLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UpOiBBIHN1YiBj
bGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLgorICAgICAgICAoQm91bmNpbmdTdmdTaGFw
ZXNTdGFnZS5wcm90b3R5cGUuZW5zdXJlQ2xpcFN0YXJJc0NyZWF0ZWQpOiBFbnN1cmUgdGhlIGEg
PGNsaXBQYXRoPiBlbGVtZW50IHdpdGggaWQ9InN0YXItY2xpcCIgaXMgY3JlYXRlZC4KKyAgICAg
ICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmVuc3VyZURlZnNJc0NyZWF0ZWQp
OiBFbnN1cmUgYSA8ZGVmcz4gZWxlbWVudCBpcyBjcmVhdGVkLgorICAgICAgICAoQm91bmNpbmdT
dmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlR3JhZGllbnQpOiBDcmVhdGVzIGEgPGxpbmVh
ckdyYWRpZW50PiBlbGVtZW50LgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90
b3R5cGUuX2NyZWF0ZURlZnMpOiBDcmVhdGVzIGEgbmV3IDxkZWZzPiBlbGVtZW50LgorICAgICAg
ICAoQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuX2NyZWF0ZUNsaXBTdGFyKTogQ3Jl
YXRlIGEgbmV3IDxjbGlwUGF0aD4gZWxlbWVudCB3aXRoIGlkPSJzdGFyLWNsaXAiLgorICAgICAg
ICAoQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVh
dGVzIGEgcGFydGljbGUgb2YgdHlwZSBCb3VuY2luZ1N2Z1NoYXBlLgorICAgICAgICAoQm91bmNp
bmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkKTogUmVtb3Zl
IHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZm9ybSB0aGUgcGFyZW50IGNoaWxkcmVuIGxpc3Qu
CisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmspOiBBIHN1YiBj
bGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay4KKyAgICAgICAgKEJvdW5jaW5nU3Zn
U2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBv
ZiB0eXBlIEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJr
Q2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBCb3VuY2luZ1N2Z1No
YXBlc0JlbmNobWFyay4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNv
dXJjZXM6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL2JlbmNo
bWFyay5jc3M6IEFkZGVkLgorICAgICAgICBBIHNoYXJlZCBjc3MgZm9yIGFsbCB0aGUgdGVzdCBw
YWdlcy4gSXQgc2V0cyB0aGUgY3NzIHByb3BlcnRpZXMgZm9yIHRoZSB0ZXN0IHBhZ2UgYW5kIHRo
ZSBzdGFnZSBlbGVtZW50LgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jl
c291cmNlcy9iZW5jaG1hcmsuanM6IEFkZGVkLgorICAgICAgICAoQmVuY2htYXJrU3RhdGUpOiBU
cmFja3MgdGhlIHN0YXRlIG9mIHRoZSBiZW5jaG1hcmsgdGVzdC4KKyAgICAgICAgKEJlbmNobWFy
a1N0YXRlLnByb3RvdHlwZS5fdGltZU9mZnNldCk6IFJldHVybnMgdGhlIHRpbWVPZmZzZXQgb2Yg
YSBzdGFnZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5fbWVzc2FnZSk6IFJl
dHVybnMgdGhlIG1lc3NhZ2Ugb2YgYSBzdGFnZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnBy
b3RvdHlwZS51cGRhdGUpOiBTZXRzIHRoZSBjdXJyZW50VGltZU9mZnNldCB0byBhIG5ldyB2YWx1
ZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5zYW1wbGluZ1RpbWVPZmZzZXQp
OiBSZXR1cm5zIHRoZSB0aW1lT2Zmc2V0IG9mIHRoZSBzYW1wbGluZyBzdGFnZS4KKyAgICAgICAg
KEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5jdXJyZW50U3RhZ2UpOiBSZXR1cm5zIHRoZSBjdXJy
ZW50IHN0YWdlIG9mIHRoZSBiZW5jaG1hcmsuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90
b3R5cGUuY3VycmVudE1lc3NhZ2UpOiBSZXR1cm5zIHRoZSBtZXNzYWdlIG9mIHRoZSBjdXJyZW50
IHN0YWdlIGFuZCB0aW1lT2Zmc2V0LgorICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBl
LmN1cnJlbnRQcm9ncmVzcyk6IFJldHVybnMgYSBwZXJjZW50YWdlIG9mIGhvdyBtdWNoIHRoZSBi
ZW5jaG1hcmsgaXMgcnVubmluZy4KKyAgICAgICAgCisgICAgICAgIChBbmltYXRvcik6IE1hbmFn
ZXMgYW5pbWF0aW5nIHRoZSB0ZXN0LgorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0
KTogQ2FsbGVkIGlmIGFuaW1hdGluZyB1c2luZyBzZXRJbnRlcnZhbCBpcyByZXF1ZXN0ZWQuCisg
ICAgICAgIChBbmltYXRvci5wcm90b3R5cGUudGltZURlbHRhKTogUmV0dXJucyB0aGUgY3VycmVu
dCB0aW1lRGVsdGEgCisgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6IE1hbmFn
ZXMgdGhlIHRlc3QgYW5pbWF0aW9uLgorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBlLmFuaW1h
dGVMb29wKTogQ2FsbGVkIGlmIGFuaW1hdGluZyB1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUg
aXMgcmVxdWVzdGVkLiAKKyAgICAgICAgCisgICAgICAgIChCZW5jaG1hcmspOiBNYW5hZ2VzIHJ1
bm5pbmcgdGhlIHRlc3QgYmVuY2htYXJrIGFuZCByZWNvcmRpbmcgdGhlIHNhbXBsZWQgZGF0YS4K
KyAgICAgICAgKEJlbmNobWFyay5wcm90b3R5cGUucGFyc2VQYXJhbWV0ZXJzKTogUGFyc2VzIHRo
ZSB0ZXN0IHBhcmFtZXRlcnMuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnN0YXJ0KTog
U3RhcnRzIHRoZSBiZW5jaG1hcmsuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnVwZGF0
ZSk6IENhbGxlZCBmcm9tIHRoZSBhbmltYXRvci5hbmltYXRlKCkgdG8gY2hhbmdlIHRoZSBjb21w
bGV4aXR5IG9mIHRoZSB0ZXN0LgorICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS5yZWNvcmQp
OiBTaG93cyB0aGUgY3VycmVudCAobm90IGZpbmFsKSByZXN1bHRzIG9mIHRoZSBiZW5jaG1hcmsu
CisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnJlc29sdmVXaGVuRmluaXNoZWQpOiBTcGlu
cyB1bnRpbCB0aGUgYmVuY2htYXJrIGlzIGZpbmlzaGVkIGFuZCByZXR1cm5zIGl0cyByZXN1bHRz
LgorICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS5ydW4pOiBTdGFydHMgdGhlIHRlc3QsIHJ1
bnMgaXQsIHdhaXRzIHVudGlsIGl0IGlzIGZpbmlzaGVkIGFuZCByZXR1cm4gaXRzIHJlc3VsdHMu
CisgICAgICAgICh3aW5kb3cucnVuQmVuY2htYXJrKTogQ2FsbGVkIGZyb20gdGhlIGJlbmNobWFy
ayBydW5uZXIgdGhyb3VnaCB0aGUgc3VpdGUgY29udHJvbGxlciBydW4tY2FsbGJhY2suIAorICAg
ICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzOiBBZGRl
ZC4KKyAgICAgICAgKE1hdHJpeCk6IEEgbWF0cml4IG9iamVjdC4KKyAgICAgICAgKFZlY3RvcjMp
OiBBIHZlY3RvciBvZiBzaXplIDMgb2JqZWN0LgorICAgICAgICAoTWF0cml4Myk6IEEgbWF0cml4
IG9mIHNpemUgM3gzIG9iamVjdC4KKyAgICAgICAgCisgICAgICAgIChDb250cm9sbGVyKTogQ2xv
c2VkLWxvb3AgY29udHJvbGxlciBmb3IgYSBzZXQtcG9pbnQgeS4KKyAgICAgICAgKENvbnRyb2xs
ZXIucHJvdG90eXBlLl9zYXQpOiBMaW1pdHMgdGhlIG91dHB1dCB0byBhIGNlcnRhaW4gcmFuZ2Uu
CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS50dW5lKTogcHJvZHVjZXMgdGhlIHBpZCBm
b3IgdGhlIGJlbmNobWFyayB3aGljaCBpcyB0cmVhdGVkIGFzIGEgY2xvc2VkLWxvb3Agc3lzdGVt
LgorICAgICAgICAKKyAgICAgICAgKEVzdGltYXRvcik6IEltcGxlbWVudCBLYWxtYW4gZmlsdGVy
IHRvIGdldCBhbiBlc3RpbWF0ZSBmb3IgYSBzYW1wbGVkIGRhdGEgcG9pbnQuCisgICAgICAgIChF
c3RpbWF0b3IucHJvdG90eXBlLmVzdGltYXRlKTogUmV0dXJucyBhbiBlc3RpbWF0ZSBmb3IgZm9y
IGEgc2FtcGxlZCBkYXRhIHBvaW50LgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rl
c3RzL3Jlc291cmNlcy9zdGFnZS5qczogQWRkZWQuCisgICAgICAgIChTdGFnZSk6IEEgYmFzZSBj
bGFzcyBmb3IgbWFuYWdpbmcgdGhlIHRlc3QgY29tcGxleGl0eSBhbmQgdGVzdCBhbmltYXRpb24u
CisgICAgICAgIChTdGFnZS5wcm90b3R5cGUuc2l6ZSk6IFJldHVybnMgdGhlIHNpemUgb2YgdGhl
IHN0YWdlIGV4Y2x1ZGluZyB0aGUgQ1NTIHBhZGRpbmcuCisgICAgICAgIChTdGFnZS5wcm90b3R5
cGUuY2xlYXIpOiBDbGVhcnMgdGhlIHN0YWdlIGZyb20gYWxsIGl0cyBhbmltYXRpb24gZWxlbWVu
dHMuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tKTogUmV0dXJucyBhIHJhbmRvbSBm
bG9hdC4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5yYW5kb21JbnQpOiBSZXR1cm5zIGEgcmFu
ZG9tIGludGVnZXIuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tUG9zaXRpb24pOiBS
ZXR1cm5zIGEgcmFuZG9tIHBvc2l0aW9uLgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLnJhbmRv
bVZlbG9jaXR5KTogUmV0dXJucyBhIHJhbmRvbSB2ZWxvY2l0eS4KKyAgICAgICAgKFN0YWdlLnBy
b3RvdHlwZS5yYW5kb21BbmdsZSk6IFJldHVybnMgYSByYW5kb20gYW5nbGUuCisgICAgICAgIChT
dGFnZS5wcm90b3R5cGUucmFuZG9tQ29sb3IpOiBSZXR1cm5zIGEgcmFuZG9tIGNvbG9yIG5vdCB0
b28gZGFyayBhbmQgbm90IHRvbyBsaWdodC4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKHdpbmRvdy5i
ZW5jaG1hcmtDbGllbnQuX3BhcnNlKTogR2l2ZW4gYSBzZXBhcmF0b3IgY2hhcmFjdGVyLCBpdCBw
YXJlc2VzIGEgc3RyaW5nIHRvIGEgc2V0IG9mIDxrZXksIHZhbHVlPiBwYWlycy4KKyAgICAgICAg
KHdpbmRvdy5iZW5jaG1hcmtDbGllbnQucGFyc2VQYXJhbWV0ZXJzKTogUGFyc2VzIGEgdGVzdCBw
YXJhbWV0ZXJzLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5wYXJzZUFyZ3VtZW50
cyk6IFBhcnNlcyBhIHRhZyBhcmd1bWVudHMuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xp
ZW50LmV4dGVuZE9iamVjdCk6IEFkZHMgdGhlIGF0dHJpYnV0ZXMgYW5kIHRoZWlyIHZhbHVlcyBv
ZiBhbiBvYmplY3QgdG8gYW5vdGhlciBvYmplY3QuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJr
Q2xpZW50LmNvcHlPYmplY3QpOiBDb3BpZXMgdGhlIGF0dHJpYnV0ZXMgYW5kIHRoZWlyIHZhbHVl
cyBvZiBhbiBvYmplY3QgdG8gYSBuZXcgb2JqZWN0LgorICAgICAgICAod2luZG93LmJlbmNobWFy
a0NsaWVudC5tZXJnZU9iamVjdHMpOiBDb3BpZXMgdGhlIGF0dHJpYnV0ZXMgYW5kIHRoZWlyIHZh
bHVlcyBvZiB0d28gb2JqZWN0cyB0byBhIG5ldyBvYmplY3QuCisgICAgICAgICh3aW5kb3cucnVu
QmVuY2htYXJrKTogQ2FsbGVkIGZyb20gdGhlIGJlbmNobWFyayBydW5uZXIgdGhyb3VnaCB0aGUg
c3VpdGUgY29udHJvbGxlciBydW4tY2FsbGJhY2suCisgICAgICAgIAorICAgICAgICAqIEFuaW1v
bWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnBuZzogQWRkZWQuCisgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcuc3ZnOiBBZGRlZC4KKyAgICAgICAgSW1h
Z2VzIHdoaWNoIGFyZSBzaGFyZWQgYnkgYWxsIHRoZSB0ZXN0cy4KKyAgICAgICAgCisgICAgICAg
ICogQW5pbW9tZXRlci90ZXN0cy90ZXh0OiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rl
c3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1sOiBBZGRlZC4KKyAgICAgICAgVGhpcyB0ZXN0IHN0
YWNrcyBjb250YWluZXIgPGRpdj4gZWxlbWVudHMgb24gdG9wIG9mIGVhY2ggb3RoZXIuIFRoZSB0
ZXN0CisgICAgICAgIGFkZHMgdGV4dCBpdGVtcyB0byB0b3Btb3N0IGNvbnRhaW5lciA8ZGl2PiB1
bnRpbCBpdCBpcyBmdWxsLiBXaGVuIGl0IGlzCisgICAgICAgIGZ1bGwsIGEgbmV3IGNvbnRhaW5l
ciA8ZGl2PiBpcyBjcmVhdGVkLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3Rz
L3RleHQvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RleHQv
cmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanM6IEFkZGVkLgorICAgICAgICAoTGF5ZXJpbmdUZXh0
QW5pbWF0b3IpOiBBIHN1YiBjbGFzcyBvZiBBbmltYXRvci4KKyAgICAgICAgKExheWVyaW5nVGV4
dEFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlKTogRm9yY2VzIGEgcmVkcmF3IHRvIGhhcHBlbi4g
SXQgY2FsbHMgdGhlIHN0YWdlIGFuaW1hdGUoKSBmdW5jdGlvbi4KKyAgICAgICAgCisgICAgICAg
IChMYXllcmluZ1RleHRTdGFnZSk6IFJlcHJlc2VudHMgdGhlIGNvbnRhaW5lciBvZiBhbGwgdGhl
IHN0YWNrZWQgdGV4dCBsYXllcnMuCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5wYXJzZVRl
eHRJdGVtKTogUGFyc2VzIGEgdGV4dEl0ZW0gd2hpY2ggbWF5IGJlIGFuIG9wZW5pbmcgdGFnLCBh
IGNsb3NpbmcgdGFnIG9yIGEgc2VsZi1jbG9zaW5nIHRhZy4KKyAgICAgICAgKExheWVyaW5nVGV4
dFN0YWdlLmlzT3BlbmluZ1RleHRJdGVtKTogUmV0dXJucyB0cnVlIGlmIHRoZSB0ZXh0SXRlbSBp
cyBhbiBvcGVuaW5nIHRhZyBlLmcuICc8b2w+Jy4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdl
LmlzQ2xvc2luZ1RleHRJdGVtKTogUmV0dXJucyB0cnVlIGlmICB0aGUgdGV4dEl0ZW0gaXMgYW4g
Y2xvc2luZyB0YWcgZS5nLiAnPC9vbD4uCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS50ZXh0
SXRlbXNGbGFncy5MYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXMubWFwKTogQ2FsY3VsYXRlcyBh
bmQgc3RvcmVzIGlzT3BlbmluZyBhbmQgaXNDbG9zaW5nIGZsYWdzIGZvciBlYWNoIHRleHRJdGVt
LgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDb2xvcmFibGVUZXh0SXRlbSk6IFJldHVy
bnMgdHJ1ZSBpZiB0aGUgdGV4dEl0ZW0gaXMgc2VsZi1jbG9zaW5nIHRhZyBlLmcuICc8cD4uLi48
L3A+Jy4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmlzSW5zZXJ0YWJsZVRleHRJdGVtKTog
UmV0dXJucyB0cnVlIGlmIHRoZSB0ZXh0SXRlbXMgY2F1c2VzIGEgbmV3IGVsZW1lbnQgdG8gYmUg
YWRkZWQgdG8gdGhlIHRleHQgbGF5ZXJzLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuY29s
b3JhYmxlVGV4dEl0ZW1zLkxheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzLmZpbHRlcik6
IE51bWJlciBvZiBjb2xvcmFibGUgdGV4dEl0ZW1zLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3Rh
Z2UuaW5zZXJ0YWJsZVRleHRJdGVtcy5MYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFncy5m
aWx0ZXIpOiBOdW1iZXIgb2YgaW5zZXJ0YWJsZSB0ZXh0SXRlbXMuCisgICAgICAgIChMYXllcmlu
Z1RleHRTdGFnZS5jb2xvckluZGV4VG9UZXh0RWxlbWVudEluZGV4KTogTWFwcyBmcm9tIGNvbG9y
SW5kZXggWzAuLmNvbG9yYWJsZVRleHRJdGVtcy0xXSB0byB0ZXh0RWxlbWVudEluZGV4IFswLi5p
bnNlcnRhYmxlVGV4dEl0ZW1zLTFdLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90
eXBlLl9uZXh0VGV4dEl0ZW0pOiBNb3ZlcyB0aGUgX3RleHRJdGVtSW5kZXggb25lIHN0ZXAgZm9y
d2FyZCBpbiBhIGxvb3AgWzAuLkxheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtcy5sZW5ndGgtMV0u
CisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX3ByZXZpb3VzVGV4dEl0ZW0p
OiBNb3ZlcyB0aGUgX3RleHRJdGVtSW5kZXggb25lIHN0ZXAgYmFja3dhcmQgaW4gYSBsb29wLgor
ICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9wdXNoVGV4dEVsZW1lbnQpOiBD
cmVhdGVzIGEgbmV3IHRleHRJdGVtRWxlbWVudCBhbmQgYWRkcyBpdCB0byB0aGUgdG9wbW9zdCBj
b250YWluZXIgPGRpdj4uCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX3Bv
cFRleHRFbGVtZW50KTogUmVtb3ZlcyB0aGUgbGFzdCB0ZXh0SXRlbUVsZW1lbnQgZnJvbSB0aGUg
dG9wbW9zdCBjb250YWluZXIgPGRpdj4uCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5wcm90
b3R5cGUuX2NvbG9yVGV4dEl0ZW0pOiBDaGFuZ2VzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGEg
c2luZ2xlIGNvbG9yYWJsZSB0ZXh0RWxlbWVudC4gVGhlIGluZGV4IGFkdmFuY2VzIGluIGEgY2ly
Y2xlIFswLi5jb2xvcmFibGVUZXh0SXRlbXMtMV0uCisgICAgICAgIChMYXllcmluZ1RleHRTdGFn
ZS5wcm90b3R5cGUuYW5pbWF0ZSk6IENoYW5nZXMgdGhlIGJhY2tncm91bmQgY29sb3IgYW5kIHRo
ZSB0ZXh0IGNvbG9yIG9mIHRoZSB0ZXh0RWxlbWVudHMgc3VjaCB0aGF0IGEgcmVkcmF3IGlzIGVu
Zm9yY2VkLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLnR1bmUpOiBBZGRz
IG9yIHJlbW92ZXMgdGV4dEVsZW1lbnRzIHRvIHRoZSBzdGFnZS4KKyAgICAgICAgCisgICAgICAg
IChMYXllcmluZ1RleHRCZW5jaG1hcmspOiBSdW5zIHRoZSBiZW5jaG1hcmsgZm9yIHRoZSBsYXll
cmluZyB0ZXh0IHRlc3QuCisgICAgICAgIChMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBl
LmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUgTGF5ZXJpbmdUZXh0U3RhZ2Uu
CisgICAgICAgIChMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9y
KTogQ3JlYXRlcyBhbiBhbmltYXRvciBvZiB0eXBlIExheWVyaW5nVGV4dEFuaW1hdG9yLgorICAg
ICAgICAoTGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZS50dW5lKTogVHVuZXMgdGhlIHRl
c3QgdGhyb3VnaCB0aGUgY3VycmVudCBzdGFnZS4KKyAgICAgICAgKExheWVyaW5nVGV4dEJlbmNo
bWFyay5wcm90b3R5cGUuY2xlYXIpOiBDbGVhcnMgdGhlIHRlc3QgdGhyb3VnaCB0aGUgY3VycmVu
dCBzdGFnZS4KKyAgICAgICAgKExheWVyaW5nVGV4dEJlbmNobWFyay5wcm90b3R5cGUuc2hvd1Jl
c3VsdHMpOiBTaG93cyB0aGUgcmVzdWx0cy9wcm9ncmVzcyB0aHJvdWdoIGl0cyByZWNvcmRUYWJs
ZSBhbmQgcHJvZ3Jlc3NCYXIKKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRl
KTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIExheWVyaW5nVGV4dEJlbmNobWFyay4KKwog
MjAxNS0wOC0yNyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFtFRkxdIFJFR1JFU1NJT04ocjE4ODc5Myk6IEl0IG1hZGUgMjAwIGxheW91dCB0ZXN0cyBh
bmQgQmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBwZXIuaHRtbCBwZXJmb3JtYW5jZSB0ZXN0IGZh
aWwKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvYWxnb3JpdGht
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMv
YWxnb3JpdGhtLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Jlc291cmNlcy9hbGdvcml0aG0uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDIgQEAK
K0FycmF5LnByb3RvdHlwZS5zd2FwID0gZnVuY3Rpb24oaSwgaikgeworICAgIHZhciB0ID0gdGhp
c1tpXTsKKyAgICB0aGlzW2ldID0gdGhpc1tqXTsKKyAgICB0aGlzW2pdID0gdDsKKyAgICByZXR1
cm4gdGhpczsKK30KKworZnVuY3Rpb24gSGVhcChtYXhTaXplLCBjb21wYXJlKSB7CisgICAgdGhp
cy5fbWF4U2l6ZSA9IG1heFNpemU7CisgICAgdGhpcy5fY29tcGFyZSA9IGNvbXBhcmU7CisgICAg
dGhpcy5fc2l6ZSA9IDA7CisgICAgdGhpcy5fdmFsdWVzID0gbmV3IEFycmF5KHRoaXMuX21heFNp
emUpOworfQorCitIZWFwLnByb3RvdHlwZSA9IHsKKyAgICBfcGFyZW50SW5kZXggOiBmdW5jdGlv
bihpKSB7CisgICAgICAgIHJldHVybiBpID4gMCA/IE1hdGguZmxvb3IoKGkgLSAxKSAvIDIpIDog
LTE7CisgICAgfSwKKyAgICBfbGVmdEluZGV4IDogZnVuY3Rpb24oaSkgeworICAgICAgICByZXR1
cm4gaSAqIDIgKyAxIDwgdGhpcy5fc2l6ZSA/IGkgKiAyICsgMSA6IC0xOworICAgIH0sCisgICAg
X3JpZ2h0SW5kZXggOiBmdW5jdGlvbihpKSB7CisgICAgICAgIHJldHVybiBpICogMiArIDIgPCB0
aGlzLl9zaXplID8gaSAqIDIgKyAyIDogLTE7CisgICAgfSwKKyAgICAvLyBSZXR1cm5zIHRoZSBj
aGlsZCBpbmRleCB0aGF0IG1heSB2aW9sYXRlIHRoZSBoZWFwIHByb3BlcnR5IGF0IGluZGV4IGkK
KyAgICBfY2hpbGRJbmRleCA6IGZ1bmN0aW9uKGkpIHsKKyAgICAgICAgdmFyIGwgPSB0aGlzLl9s
ZWZ0SW5kZXgoaSk7CisgICAgICAgIHZhciByID0gdGhpcy5fcmlnaHRJbmRleChpKTsKKworICAg
ICAgICBpZiAobCAhPSAtMSAmJiByICE9IC0xKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Nv
bXBhcmUodGhpcy5fdmFsdWVzW2xdLCB0aGlzLl92YWx1ZXNbcl0pID4gMCA/IGwgOiByOworICAg
ICAgICAKKyAgICAgICAgcmV0dXJuIGwgIT0gLTEgPyBsIDogcjsKKyAgICB9LAorICAgIGluaXQg
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5fc2l6ZSA9IDA7CisgICAgfSwKKyAgICB0b3Ag
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuICF0aGlzLl9zaXplID8gTmFOIDogdGhpcy5f
dmFsdWVzWzBdOworICAgIH0sCisgICAgcHVzaCA6IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgICAg
IGlmICh0aGlzLl9zaXplID09IHRoaXMuX21heFNpemUpIHsKKyAgICAgICAgICAgIC8vIElmIHNp
emUgaXMgYm91bmRlZCBhbmQgdGhlIG5ldyB2YWx1ZSBjYW4gYmUgYSBwYXJlbnQgb2YgdGhlIHRv
cCgpCisgICAgICAgICAgICAvLyBpZiB0aGUgc2l6ZSB3ZXJlIHVuYm91bmRlZCwganVzdCBpZ25v
cmUgdGhlIG5ldyB2YWx1ZS4KKyAgICAgICAgICAgIGlmICh0aGlzLl9jb21wYXJlKHZhbHVlLCB0
aGlzLnRvcCgpKSA+IDApCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgdGhp
cy5wb3AoKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl92YWx1ZXNbdGhpcy5fc2l6ZSsrXSA9
IHZhbHVlOworICAgICAgICB0aGlzLl9idWJibGUodGhpcy5fc2l6ZSAtIDEpOworICAgIH0sCisg
ICAgcG9wIDogZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICghdGhpcy5fc2l6ZSkKKyAgICAgICAg
ICAgIHJldHVybiBOYU47CisgICAgICAgIAorICAgICAgICB0aGlzLl92YWx1ZXNbMF0gPSB0aGlz
Ll92YWx1ZXNbLS10aGlzLl9zaXplXTsKKyAgICAgICAgdGhpcy5fc2luaygwKTsKKyAgICB9LAor
ICAgIF9idWJibGUgOiBmdW5jdGlvbihpKSB7CisgICAgICAgIC8vIEZpeGVzIHRoZSBoZWFwIHBv
cGVydHkgYXQgaW5kZXggaSBnaXZlbiB0aGF0IHBhcmVudCBpcyB0aGUgb25seSBub2RlIHRoYXQK
KyAgICAgICAgLy8gbWF5IHZpYWxvdGUgdGhlIGhlYXAgcHJvcGVydHkuCisgICAgICAgIGZvciAo
dmFyIHBpID0gdGhpcy5fcGFyZW50SW5kZXgoaSk7IHBpICE9IC0xOyBpID0gcGksIHBpID0gdGhp
cy5fcGFyZW50SW5kZXgocGkpKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fY29tcGFyZSh0aGlz
Ll92YWx1ZXNbcGldLCB0aGlzLl92YWx1ZXNbaV0pID4gMCkKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVlcy5zd2FwKHBpLCBp
KTsKKyAgICAgICAgfQorICAgIH0sCisgICAgX3NpbmsgOiBmdW5jdGlvbihpKSB7CisgICAgICAg
IC8vIEZpeGVzIHRoZSBoZWFwIHBvcGVydHkgYXQgaW5kZXggaSBnaXZlbiB0aGF0IGVhY2ggb2Yg
dGhlIGxlZnQgYW5kIHRoZSByaWdodAorICAgICAgICAvLyBzdWItdHJlZXMgc2F0aXNmaWVzIHRo
ZSBoZWFwIHByb3BlcnR5LgorICAgICAgICBmb3IgKHZhciBjaSA9IHRoaXMuX2NoaWxkSW5kZXgo
aSk7IGNpICE9IC0xOyBpID0gY2ksIGNpID0gdGhpcy5fY2hpbGRJbmRleChjaSkpIHsKKyAgICAg
ICAgICAgIGlmICh0aGlzLl9jb21wYXJlKHRoaXMuX3ZhbHVlc1tpXSwgdGhpcy5fdmFsdWVzW2Np
XSkgPiAwKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgICAg
ICB0aGlzLl92YWx1ZXMuc3dhcChjaSwgaSk7CisgICAgICAgIH0KKyAgICB9LAorICAgIHN0ciA6
IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgb3V0ID0gIkhlYXBbIiArIHRoaXMuX3NpemUgKyAi
XSA9IFsiOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NpemU7ICsraSkgewor
ICAgICAgICAgICAgb3V0ICs9IHRoaXMuX3ZhbHVlc1tpXTsKKyAgICAgICAgICAgIGlmIChpIDwg
dGhpcy5fc2l6ZSAtIDEpCisgICAgICAgICAgICAgICAgb3V0ICs9ICIsICI7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIG91dCArICJdIjsKKyAgICB9LAorICAgIHZhbHVlcyA6IGZ1bmN0aW9u
KHNpemUpIHsKKyAgICAgICAgLy8gUmV0dXJucyB0aGUgbGFzdCAic2l6ZSIgaGVhcCBlbGVtZW50
cyB2YWx1ZXMuCisgICAgICAgIHZhciB2YWx1ZXMgPSB0aGlzLl92YWx1ZXMuc2xpY2UoMCwgdGhp
cy5fc2l6ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZXMuc29ydCh0aGlzLl9jb21wYXJlKS5zbGlj
ZSgwLCBNYXRoLm1pbihzaXplLCB0aGlzLl9zaXplKSk7CisgICAgfQorfQorCit2YXIgQWxnb3Jp
dGhtID0geworICAgIGNyZWF0ZU1pbkhlYXAgOiBmdW5jdGlvbihtYXhTaXplKSB7CisgICAgICAg
IHJldHVybiBuZXcgSGVhcChtYXhTaXplLCBmdW5jdGlvbihhLCBiKSB7IHJldHVybiBiIC0gYTsg
fSk7CisgICAgfSwKKyAgICBjcmVhdGVNYXhIZWFwIDogZnVuY3Rpb24obWF4U2l6ZSkgeworICAg
ICAgICByZXR1cm4gbmV3IEhlYXAobWF4U2l6ZSwgZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYSAt
IGI7IH0pOworICAgIH0KK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNv
dXJjZXMvbWFpbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
cmVzb3VyY2VzL21haW4uanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcmVzb3VyY2VzL21haW4uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNDMgQEAK
K2Z1bmN0aW9uIFBvaW50KHgsIHkpIHsKKyAgICB0aGlzLnggPSB4OworICAgIHRoaXMueSA9IHk7
Cit9CisKK1BvaW50LnByb3RvdHlwZSA9IHsKKyAgICAvLyBVc2VkIHdoZW4gdGhlIHBvaW50IG9i
amVjdCBpcyB1c2VkIGFzIGEgc2l6ZSBvYmplY3QKKyAgICB3aWR0aCA6IGZ1bmN0aW9uKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy54OworICAgIH0sCisgICAgLy8gVXNlZCB3aGVuIHRoZSBwb2lu
dCBvYmplY3QgaXMgdXNlZCBhcyBhIHNpemUgb2JqZWN0ICAgIAorICAgIGhlaWdodCA6IGZ1bmN0
aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy55OworICAgIH0sCisgICAgY2VudGVyIDogZnVu
Y3Rpb24oKSB7CisgICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy54IC8gMiwgdGhpcy55IC8g
Mik7CisgICAgfSwKKyAgICBhZGQgOiBmdW5jdGlvbihvdGhlcikgeworICAgICAgICByZXR1cm4g
bmV3IFBvaW50KHRoaXMueCArIG90aGVyLngsIHRoaXMueSArIG90aGVyLnkpOworICAgIH0sICAg
IAorICAgIHN1YnRyYWN0IDogZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQ
b2ludCh0aGlzLnggLSBvdGhlci54LCB0aGlzLnkgLSBvdGhlci55KTsKKyAgICB9LAorICAgIG11
bHRpcGx5IDogZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQb2ludCh0aGlz
LnggKiBvdGhlci54LCB0aGlzLnkgKiBvdGhlci55KTsKKyAgICB9LAorICAgIG1vdmUgOiBmdW5j
dGlvbihhbmdsZSwgdmVsb2NpdHksIHRpbWVEZWx0YSkgeworICAgICAgICB2YXIgeCA9IHRoaXMu
eCArIE1hdGguY29zKGFuZ2xlKSAqIHZlbG9jaXR5ICogKHRpbWVEZWx0YSAvIDEwMDApOworICAg
ICAgICB2YXIgeSA9IHRoaXMueSArIE1hdGguc2luKGFuZ2xlKSAqIHZlbG9jaXR5ICogKHRpbWVE
ZWx0YSAvIDEwMDApOworICAgICAgICByZXR1cm4gbmV3IFBvaW50KHgsIHkpOworICAgIH0KK30K
KworZnVuY3Rpb24gSW5zZXRzKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCkgeworICAgIHRoaXMu
dG9wID0gdG9wOworICAgIHRoaXMucmlnaHQgPSByaWdodDsKKyAgICB0aGlzLmJvdHRvbSA9IGJv
dHRvbTsKKyAgICB0aGlzLmxlZnQgPSBsZWZ0OworfQorCitJbnNldHMucHJvdG90eXBlID0gewor
ICAgIHdpZHRoIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLmxlZnQgKyB0aGlz
LnJpZ2h0OworICAgIH0sCisgICAgaGVpZ2h0IDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVy
biB0aGlzLnRvcCArIHRoaXMuYm90dG9tOworICAgIH0KK30KKworZnVuY3Rpb24gU2ltcGxlUHJv
bWlzZSgpIHsKKyAgICB0aGlzLl9jaGFpbmVkUHJvbWlzZSA9IG51bGw7CisgICAgdGhpcy5fY2Fs
bGJhY2sgPSBudWxsOworfQorCitTaW1wbGVQcm9taXNlLnByb3RvdHlwZS50aGVuID0gZnVuY3Rp
b24gKGNhbGxiYWNrKSB7CisgICAgaWYgKHRoaXMuX2NhbGxiYWNrKQorICAgICAgICB0aHJvdyAi
U2ltcGxlUHJvbWlzZSBkb2Vzbid0IHN1cHBvcnQgbXVsdGlwbGUgY2FsbHMgdG8gdGhlbiI7Cisg
ICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICB0aGlzLl9jaGFpbmVkUHJvbWlzZSA9
IG5ldyBTaW1wbGVQcm9taXNlOworICAgIAorICAgIGlmICh0aGlzLl9yZXNvbHZlZCkKKyAgICAg
ICAgdGhpcy5yZXNvbHZlKHRoaXMuX3Jlc29sdmVkVmFsdWUpOworCisgICAgcmV0dXJuIHRoaXMu
X2NoYWluZWRQcm9taXNlOworfQorCitTaW1wbGVQcm9taXNlLnByb3RvdHlwZS5yZXNvbHZlID0g
ZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgaWYgKCF0aGlzLl9jYWxsYmFjaykgeworICAgICAgICB0
aGlzLl9yZXNvbHZlZCA9IHRydWU7CisgICAgICAgIHRoaXMuX3Jlc29sdmVkVmFsdWUgPSB2YWx1
ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciByZXN1bHQgPSB0aGlzLl9jYWxs
YmFjayh2YWx1ZSk7CisgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFNpbXBsZVByb21pc2UpIHsK
KyAgICAgICAgdmFyIGNoYWluZWRQcm9taXNlID0gdGhpcy5fY2hhaW5lZFByb21pc2U7CisgICAg
ICAgIHJlc3VsdC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsgY2hhaW5lZFByb21pc2UucmVzb2x2
ZShyZXN1bHQpOyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgdGhpcy5fY2hhaW5lZFByb21pc2Uu
cmVzb2x2ZShyZXN1bHQpOworfQorCitmdW5jdGlvbiBPcHRpb25zKHRlc3RJbnRlcnZhbCwgZnJh
bWVSYXRlKSB7CisgICAgdGhpcy50ZXN0SW50ZXJ2YWwgPSB0ZXN0SW50ZXJ2YWw7CisgICAgdGhp
cy5mcmFtZVJhdGUgPSBmcmFtZVJhdGU7Cit9CisKK2Z1bmN0aW9uIFByb2dyZXNzQmFyKGVsZW1l
bnQsIHJhbmdlcykgeworICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7CisgICAgdGhpcy5yYW5n
ZXMgPSByYW5nZXM7CisgICAgdGhpcy5jdXJyZW50UmFuZ2UgPSAwOworfQorCitQcm9ncmVzc0Jh
ci5wcm90b3R5cGUgPSB7CisgICAgX3Byb2dyZXNzVG9QZXJjZW50IDogZnVuY3Rpb24ocHJvZ3Jl
c3MpIHsKKyAgICAgICAgcmV0dXJuIHByb2dyZXNzICogKDEwMCAvIHRoaXMucmFuZ2VzKTsKKyAg
ICB9LAorICAgIGluY1JhbmdlIDogZnVuY3Rpb24oKSB7CisgICAgICAgICsrdGhpcy5jdXJyZW50
UmFuZ2U7CisgICAgfSwKKyAgICBzZXRQb3MgOiBmdW5jdGlvbihwcm9ncmVzcykgeworICAgICAg
ICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLl9wcm9ncmVzc1RvUGVyY2VudCh0aGlz
LmN1cnJlbnRSYW5nZSArIHByb2dyZXNzKSArICIlIjsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIFJl
Y29yZFRhYmxlKGVsZW1lbnQpIHsKKyAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50OworICAgIHRo
aXMuY2xlYXIoKTsKK30KKworUmVjb3JkVGFibGUucHJvdG90eXBlID0geworICAgIGNsZWFyIDog
ZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgPSAiIjsKKyAgICB9
LAorICAgIF9zaG93VGl0bGVzIDogZnVuY3Rpb24ocm93LCBxdWV1ZSwgdGl0bGVzLCBtZXNzYWdl
KSB7CisgICAgICAgIGZvciAodmFyIHRpdGxlID0gMDsgdGl0bGUgPCB0aXRsZXMubGVuZ3RoOyAr
K3RpdGxlKSB7CisgICAgICAgICAgICB2YXIgdGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0
aCIpOworICAgICAgICAgICAgdGguaW5uZXJIVE1MID0gdGl0bGVzW3RpdGxlXS50ZXh0OworICAg
ICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlICE9ICJ1bmRlZmluZWQiICYmIG1lc3NhZ2UubGVu
Z3RoKSB7CisgICAgICAgICAgICAgICAgdGguaW5uZXJIVE1MICs9ICI8YnI+WyIgKyBtZXNzYWdl
ICsgIl0iOworICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiIjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmICgid2lkdGgiIGluIHRpdGxlc1t0aXRsZV0pCisgICAgICAgICAgICAgICAg
dGgud2lkdGggPSB0aXRsZXNbdGl0bGVdLndpZHRoICsgIiUiOworICAgICAgICAgICAgcm93LmFw
cGVuZENoaWxkKHRoKTsKKyAgICAgICAgICAgIHF1ZXVlLnB1c2goe2VsZW1lbnQ6IHRoLCB0aXRs
ZXM6IHRpdGxlc1t0aXRsZV0uY2hpbGRyZW4gfSk7CisgICAgICAgIH0KKyAgICB9LAorICAgIF9z
aG93SGVhZGVyIDogZnVuY3Rpb24oc3VpdGVOYW1lLCB0aXRsZXMsIG1lc3NhZ2UpIHsKKyAgICAg
ICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisKKyAgICAgICAgdmFy
IHF1ZXVlID0gW107CisgICAgICAgIHRoaXMuX3Nob3dUaXRsZXMocm93LCBxdWV1ZSwgdGl0bGVz
LCBtZXNzYWdlKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHJvdyk7CisKKyAg
ICAgICAgd2hpbGUgKHF1ZXVlLmxlbmd0aCkgeworICAgICAgICAgICAgdmFyIHJvdyA9IG51bGw7
CisgICAgICAgICAgICB2YXIgbGlzdCA9IFtdOworCisgICAgICAgICAgICBmb3IgKHZhciBpID0g
MCwgbGVuID0gcXVldWUubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2
YXIgZW50cnkgPSBxdWV1ZS5zaGlmdCgpOworCisgICAgICAgICAgICAgICAgaWYgKCFlbnRyeS50
aXRsZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIGxpc3QucHVzaChlbnRyeS5lbGVt
ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgaWYgKCFyb3cpCisgICAgICAgICAgICAgICAgICAgIHZhciByb3cg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworCisgICAgICAgICAgICAgICAgdGhpcy5f
c2hvd1RpdGxlcyhyb3csIHF1ZXVlLCBlbnRyeS50aXRsZXMsICIiKTsKKyAgICAgICAgICAgICAg
ICBlbnRyeS5lbGVtZW50LmNvbFNwYW4gPSBlbnRyeS50aXRsZXMubGVuZ3RoOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAocm93KSB7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVt
ZW50LmFwcGVuZENoaWxkKHJvdyk7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBsaXN0Lmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgICAgICArK2xpc3RbaV0ucm93U3Bh
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisgICAgX3Nob3dFbXB0eSA6IGZ1
bmN0aW9uKHJvdywgdGVzdE5hbWUpIHsKKyAgICAgICAgdmFyIHRkID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgidGQiKTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxkKHRkKTsKKyAgICB9LAorICAg
IF9zaG93VmFsdWUgOiBmdW5jdGlvbihyb3csIHRlc3ROYW1lLCB2YWx1ZSkgeworICAgICAgICB2
YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICB0ZC50ZXh0Q29u
dGVudCA9IHZhbHVlLnRvRml4ZWQoMik7CisgICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0ZCk7Cisg
ICAgfSwKKyAgICBfc2hvd1NhbXBsZXMgOiBmdW5jdGlvbihyb3csIHRlc3ROYW1lLCBheGlzZXMs
IHNhbXBsZXMsIHNhbXBsaW5nVGltZU9mZnNldCkgeworICAgICAgICB2YXIgdGQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICB2YXIgYnV0dG9uID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGJ1dHRvbi5jbGFzc05hbWUgPSAic21hbGwtYnV0
dG9uIjsKKyAgICAgICAgICAgIAorICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHdpbmRvdy5zaG93R3JhcGgodGVzdE5hbWUs
IGF4aXNlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KTsKKyAgICAgICAgfSk7CisgICAg
ICAgICAgICAKKyAgICAgICAgYnV0dG9uLnRleHRDb250ZW50ID0gIkNsaWNrLi4uIjsKKyAgICAg
ICAgdGQuYXBwZW5kQ2hpbGQoYnV0dG9uKTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxkKHRkKTsK
KyAgICB9LAorICAgIF9zaG93VGVzdCA6IGZ1bmN0aW9uKHRlc3ROYW1lLCB0aXRsZXMsIHNhbXBs
ZXIsIGZpbmFsUmVzdWx0cykgeworICAgICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgidHIiKTsKKyAgICAgICAgdmFyIHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQi
KTsKKyAgICAgICAgdGQudGV4dENvbnRlbnQgPSB0ZXN0TmFtZTsKKyAgICAgICAgcm93LmFwcGVu
ZENoaWxkKHRkKTsKKyAgICAgICAgCisgICAgICAgIHZhciBheGlzZXMgPSBbXTsKKyAgICAgICAg
Zm9yICh2YXIgbWVhc3VyZSA9IDA7IG1lYXN1cmUgPCBzYW1wbGVyLnN0YXRpc3RpY3MubGVuZ3Ro
OyArK21lYXN1cmUpIHsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dWYWx1ZShyb3csIHRlc3ROYW1l
LCBzYW1wbGVyLnN0YXRpc3RpY3NbbWVhc3VyZV0ubWVhbigpKTsKKyAgICAgICAgICAgIHRoaXMu
X3Nob3dWYWx1ZShyb3csIHRlc3ROYW1lLCBzYW1wbGVyLnN0YXRpc3RpY3NbbWVhc3VyZV0uY29u
ZmlkZW5jZUludGVydmFsRGVsdGEoOTUpKTsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dWYWx1ZShy
b3csIHRlc3ROYW1lLCBzYW1wbGVyLnN0YXRpc3RpY3NbbWVhc3VyZV0uY29uY2Vybig1KSk7Cisg
ICAgICAgICAgICB0aGlzLl9zaG93VmFsdWUocm93LCB0ZXN0TmFtZSwgc2FtcGxlci5zdGF0aXN0
aWNzW21lYXN1cmVdLnN0YW5kYXJkRGV2aWF0aW9uKCkpOworICAgICAgICAgICAgdGhpcy5fc2hv
d1ZhbHVlKHJvdywgdGVzdE5hbWUsIHNhbXBsZXIuc3RhdGlzdGljc1ttZWFzdXJlXS5wZXJjZW50
YWdlKCkpOworICAgICAgICAgICAgYXhpc2VzLnB1c2godGl0bGVzW21lYXN1cmUgKyAxXS50ZXh0
KTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3Nob3dWYWx1ZShyb3csIHRlc3ROYW1lLCBz
YW1wbGVyLnN0YXRpc3RpY3NbMF0uc2NvcmUoNSkpOworCisgICAgICAgIGlmIChmaW5hbFJlc3Vs
dHMpCisgICAgICAgICAgICB0aGlzLl9zaG93U2FtcGxlcyhyb3csIHRlc3ROYW1lLCBheGlzZXMs
IHNhbXBsZXIuc2FtcGxlcywgc2FtcGxlci5zYW1wbGluZ1RpbWVPZmZzZXQpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICB0aGlzLl9zaG93RW1wdHkgKHJvdywgdGVzdE5hbWUpOworICAgICAg
ICAgICAgCisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChyb3cpOworICAgIH0sCisg
ICAgX3Nob3dTdWl0ZSA6IGZ1bmN0aW9uKHN1aXRlLCBzdWl0ZVNhbXBsZXJzKSB7CisgICAgICAg
IHZhciBzY29yZXMgPSBbXTsgICAgICAgIAorICAgICAgICBmb3IgKHZhciB0ZXN0TmFtZSBpbiBz
dWl0ZVNhbXBsZXJzKSB7CisgICAgICAgICAgICB2YXIgdGVzdCA9IHRlc3RGcm9tTmFtZShzdWl0
ZSwgdGVzdE5hbWUpOworICAgICAgICAgICAgdmFyIHNhbXBsZXIgPSBzdWl0ZVNhbXBsZXJzW3Rl
c3ROYW1lXTsgCisgICAgICAgICAgICB0aGlzLl9zaG93VGVzdCh0ZXN0TmFtZSwgc3VpdGUudGl0
bGVzLCBzYW1wbGVyLCB0cnVlKTsKKyAgICAgICAgICAgIHNjb3Jlcy5wdXNoKHNhbXBsZXIuc3Rh
dGlzdGljc1swXS5tZWFuKCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzY29yZXM7Cisg
ICAgfSwKKyAgICBzaG93UmVjb3JkIDogZnVuY3Rpb24oc3VpdGUsIHRlc3QsIHNhbXBsZXIsIG1l
c3NhZ2UpIHsKKyAgICAgICAgdGhpcy5jbGVhcigpOyAgICAgICAgCisgICAgICAgIHRoaXMuX3No
b3dIZWFkZXIoIiIsIHN1aXRlLnRpdGxlcywgbWVzc2FnZSk7CisgICAgICAgIHRoaXMuX3Nob3dU
ZXN0KHRlc3QubmFtZSwgc3VpdGUudGl0bGVzLCBzYW1wbGVyLCBmYWxzZSk7ICAgICAgICAKKyAg
ICB9LAorICAgIHNob3dJdGVyYXRpb25zIDogZnVuY3Rpb24oaXRlcmF0aW9uc1NhbXBsZXJzKSB7
CisgICAgICAgIHRoaXMuY2xlYXIoKTsKKworICAgICAgICB2YXIgc2NvcmVzID0gW107CisgICAg
ICAgIHZhciB0aXRsZXMgPSBudWxsOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZXJh
dGlvbnNTYW1wbGVycy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgZm9yICh2YXIgc3VpdGVO
YW1lIGluIGl0ZXJhdGlvbnNTYW1wbGVyc1tpXSkgeworICAgICAgICAgICAgICAgIHZhciBzdWl0
ZSA9IHN1aXRlRnJvbU5hbWUoc3VpdGVOYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAodGl0bGVz
ICE9IHN1aXRlLnRpdGxlcykgeworICAgICAgICAgICAgICAgICAgICB0aXRsZXMgPSBzdWl0ZS50
aXRsZXM7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dIZWFkZXIoc3VpdGVOYW1lLCB0
aXRsZXMsICIiKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB2YXIgc3Vp
dGVTY29yZXMgPSB0aGlzLl9zaG93U3VpdGUoc3VpdGUsIGl0ZXJhdGlvbnNTYW1wbGVyc1tpXVtz
dWl0ZU5hbWVdKTsKKyAgICAgICAgICAgICAgICBzY29yZXMucHVzaC5hcHBseShzY29yZXMsIHN1
aXRlU2NvcmVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
cmV0dXJuIFN0YXRpc3RpYy5nZW9tZXRyaWNNZWFuKHNjb3Jlcyk7CisgICAgfQorfQpJbmRleDog
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvc3RhdGlzdGlj
cy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJj
ZXMvc3RhdGlzdGljcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1NSBAQAorZnVuY3Rp
b24gU3RhdGlzdGljKCkgeworICAgIHRoaXMuX2luaXQoKTsKKyAgICB0aGlzLl9tYXhIZWFwID0g
QWxnb3JpdGhtLmNyZWF0ZU1heEhlYXAoMTAwKTsKK30KKworU3RhdGlzdGljLnNhbXBsZU1lYW4g
PSBmdW5jdGlvbihudW1iZXJPZlNhbXBsZXMsIHN1bSkgeworICAgIGlmIChudW1iZXJPZlNhbXBs
ZXMgPCAxKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gc3VtIC8gbnVtYmVyT2ZTYW1w
bGVzOworfQorCitTdGF0aXN0aWMuc2FtcGxlU3RhbmRhcmREZXZpYXRpb24gPSBmdW5jdGlvbihu
dW1iZXJPZlNhbXBsZXMsIHN1bSwgc3F1YXJlU3VtKSB7CisgICAgaWYgKG51bWJlck9mU2FtcGxl
cyA8IDIpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBNYXRoLnNxcnQoKHNxdWFyZVN1
bSAtIHN1bSAqIHN1bSAvIG51bWJlck9mU2FtcGxlcykgLyAobnVtYmVyT2ZTYW1wbGVzIC0gMSkp
IDsKK30KKworU3RhdGlzdGljLmdlb21ldHJpY01lYW4gPSBmdW5jdGlvbih2YWx1ZXMpIHsKKyAg
ICBpZiAoIXZhbHVlcy5sZW5ndGgpCisgICAgICAgIHJldHVybiAwOworICAgIHZhciBwcm9kdWN0
ID0gdmFsdWVzLnJlZHVjZShmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhICogYjsgfSk7CisgICAg
cmV0dXJuIE1hdGgucG93KHByb2R1Y3QsIDEgLyB2YWx1ZXMubGVuZ3RoKTsKK30KKworLy8gU2Vl
IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3R1ZGVudCdzX3QtZGlzdHJpYnV0aW9uI1Rh
YmxlX29mX3NlbGVjdGVkX3ZhbHVlcworLy8gVGhpcyB0YWJsZSBjb250YWlucyBvbmUgc2lkZWQg
KGEuay5hLiB0YWlsKSB2YWx1ZXMuCitTdGF0aXN0aWMudERpc3RyaWJ1dGlvbkludmVyc2VDREYg
PSB7CisgICAgMC45OiBbCisgICAgICAgIDMuMDc3Njg0LCAxLjg4NTYxOCwgMS42Mzc3NDQsIDEu
NTMzMjA2LCAxLjQ3NTg4NCwgMS40Mzk3NTYsIDEuNDE0OTI0LCAxLjM5NjgxNSwgMS4zODMwMjks
IDEuMzcyMTg0LAorICAgICAgICAxLjM2MzQzMCwgMS4zNTYyMTcsIDEuMzUwMTcxLCAxLjM0NTAz
MCwgMS4zNDA2MDYsIDEuMzM2NzU3LCAxLjMzMzM3OSwgMS4zMzAzOTEsIDEuMzI3NzI4LCAxLjMy
NTM0MSwKKyAgICAgICAgMS4zMjMxODgsIDEuMzIxMjM3LCAxLjMxOTQ2MCwgMS4zMTc4MzYsIDEu
MzE2MzQ1LCAxLjMxNDk3MiwgMS4zMTM3MDMsIDEuMzEyNTI3LCAxLjMxMTQzNCwgMS4zMTA0MTUs
CisgICAgICAgIDEuMzA5NDY0LCAxLjMwODU3MywgMS4zMDc3MzcsIDEuMzA2OTUyLCAxLjMwNjIx
MiwgMS4zMDU1MTQsIDEuMzA0ODU0LCAxLjMwNDIzMCwgMS4zMDM2MzksIDEuMzAzMDc3LAorICAg
ICAgICAxLjMwMjU0MywgMS4zMDIwMzUsIDEuMzAxNTUyLCAxLjMwMTA5MCwgMS4zMDA2NDksIDEu
MzAwMjI4LCAxLjI5OTgyNSwgMS4yOTk0MzksIDEuMjk5MDY5LCAxLjI5ODcxNCwKKworICAgICAg
ICAxLjI5ODM3MywgMS4yOTgwNDUsIDEuMjk3NzMwLCAxLjI5NzQyNiwgMS4yOTcxMzQsIDEuMjk2
ODUzLCAxLjI5NjU4MSwgMS4yOTYzMTksIDEuMjk2MDY2LCAxLjI5NTgyMSwKKyAgICAgICAgMS4y
OTU1ODUsIDEuMjk1MzU2LCAxLjI5NTEzNCwgMS4yOTQ5MjAsIDEuMjk0NzEyLCAxLjI5NDUxMSwg
MS4yOTQzMTUsIDEuMjk0MTI2LCAxLjI5Mzk0MiwgMS4yOTM3NjMsCisgICAgICAgIDEuMjkzNTg5
LCAxLjI5MzQyMSwgMS4yOTMyNTYsIDEuMjkzMDk3LCAxLjI5Mjk0MSwgMS4yOTI3OTAsIDEuMjky
NjQzLCAxLjI5MjUwMCwgMS4yOTIzNjAsIDEuMjkyMjI0LAorICAgICAgICAxLjI5MjA5MSwgMS4y
OTE5NjEsIDEuMjkxODM1LCAxLjI5MTcxMSwgMS4yOTE1OTEsIDEuMjkxNDczLCAxLjI5MTM1OCwg
MS4yOTEyNDYsIDEuMjkxMTM2LCAxLjI5MTAyOSwKKyAgICAgICAgMS4yOTA5MjQsIDEuMjkwODIx
LCAxLjI5MDcyMSwgMS4yOTA2MjMsIDEuMjkwNTI3LCAxLjI5MDQzMiwgMS4yOTAzNDAsIDEuMjkw
MjUwLCAxLjI5MDE2MSwgMS4yOTAwNzVdLAorICAgIDAuOTU6IFsKKyAgICAgICAgNi4zMTM3NTIs
IDIuOTE5OTg2LCAyLjM1MzM2MywgMi4xMzE4NDcsIDIuMDE1MDQ4LCAxLjk0MzE4MCwgMS44OTQ1
NzksIDEuODU5NTQ4LCAxLjgzMzExMywgMS44MTI0NjEsCisgICAgICAgIDEuNzk1ODg1LCAxLjc4
MjI4OCwgMS43NzA5MzMsIDEuNzYxMzEwLCAxLjc1MzA1MCwgMS43NDU4ODQsIDEuNzM5NjA3LCAx
LjczNDA2NCwgMS43MjkxMzMsIDEuNzI0NzE4LAorICAgICAgICAxLjcyMDc0MywgMS43MTcxNDQs
IDEuNzEzODcyLCAxLjcxMDg4MiwgMS43MDgxNDEsIDEuNzA1NjE4LCAxLjcwMzI4OCwgMS43MDEx
MzEsIDEuNjk5MTI3LCAxLjY5NzI2MSwKKyAgICAgICAgMS42OTU1MTksIDEuNjkzODg5LCAxLjY5
MjM2MCwgMS42OTA5MjQsIDEuNjg5NTcyLCAxLjY4ODI5OCwgMS42ODcwOTQsIDEuNjg1OTU0LCAx
LjY4NDg3NSwgMS42ODM4NTEsCisgICAgICAgIDEuNjgyODc4LCAxLjY4MTk1MiwgMS42ODEwNzEs
IDEuNjgwMjMwLCAxLjY3OTQyNywgMS42Nzg2NjAsIDEuNjc3OTI3LCAxLjY3NzIyNCwgMS42NzY1
NTEsIDEuNjc1OTA1LAorCisgICAgICAgIDEuNjc1Mjg1LCAxLjY3NDY4OSwgMS42NzQxMTYsIDEu
NjczNTY1LCAxLjY3MzAzNCwgMS42NzI1MjIsIDEuNjcyMDI5LCAxLjY3MTU1MywgMS42NzEwOTMs
IDEuNjcwNjQ5LAorICAgICAgICAxLjY3MDIxOSwgMS42Njk4MDQsIDEuNjY5NDAyLCAxLjY2OTAx
MywgMS42Njg2MzYsIDEuNjY4MjcxLCAxLjY2NzkxNiwgMS42Njc1NzIsIDEuNjY3MjM5LCAxLjY2
NjkxNCwKKyAgICAgICAgMS42NjY2MDAsIDEuNjY2Mjk0LCAxLjY2NTk5NiwgMS42NjU3MDcsIDEu
NjY1NDI1LCAxLjY2NTE1MSwgMS42NjQ4ODUsIDEuNjY0NjI1LCAxLjY2NDM3MSwgMS42NjQxMjUs
CisgICAgICAgIDEuNjYzODg0LCAxLjY2MzY0OSwgMS42NjM0MjAsIDEuNjYzMTk3LCAxLjY2Mjk3
OCwgMS42NjI3NjUsIDEuNjYyNTU3LCAxLjY2MjM1NCwgMS42NjIxNTUsIDEuNjYxOTYxLAorICAg
ICAgICAxLjY2MTc3MSwgMS42NjE1ODUsIDEuNjYxNDA0LCAxLjY2MTIyNiwgMS42NjEwNTIsIDEu
NjYwODgxLCAxLjY2MDcxNSwgMS42NjA1NTEsIDEuNjYwMzkxLCAxLjY2MDIzNF0sCisgICAgMC45
NzU6IFsKKyAgICAgICAgMTIuNzA2MjA1LCA0LjMwMjY1MywgMy4xODI0NDYsIDIuNzc2NDQ1LCAy
LjU3MDU4MiwgMi40NDY5MTIsIDIuMzY0NjI0LCAyLjMwNjAwNCwgMi4yNjIxNTcsIDIuMjI4MTM5
LAorICAgICAgICAyLjIwMDk4NSwgMi4xNzg4MTMsIDIuMTYwMzY5LCAyLjE0NDc4NywgMi4xMzE0
NTAsIDIuMTE5OTA1LCAyLjEwOTgxNiwgMi4xMDA5MjIsIDIuMDkzMDI0LCAyLjA4NTk2MywKKyAg
ICAgICAgMi4wNzk2MTQsIDIuMDczODczLCAyLjA2ODY1OCwgMi4wNjM4OTksIDIuMDU5NTM5LCAy
LjA1NTUyOSwgMi4wNTE4MzEsIDIuMDQ4NDA3LCAyLjA0NTIzMCwgMi4wNDIyNzIsCisgICAgICAg
IDIuMDM5NTEzLCAyLjAzNjkzMywgMi4wMzQ1MTUsIDIuMDMyMjQ1LCAyLjAzMDEwOCwgMi4wMjgw
OTQsIDIuMDI2MTkyLCAyLjAyNDM5NCwgMi4wMjI2OTEsIDIuMDIxMDc1LAorICAgICAgICAyLjAx
OTU0MSwgMi4wMTgwODIsIDIuMDE2NjkyLCAyLjAxNTM2OCwgMi4wMTQxMDMsIDIuMDEyODk2LCAy
LjAxMTc0MSwgMi4wMTA2MzUsIDIuMDA5NTc1LCAyLjAwODU1OSwKKworICAgICAgICAyLjAwNzU4
NCwgMi4wMDY2NDcsIDIuMDA1NzQ2LCAyLjAwNDg3OSwgMi4wMDQwNDUsIDIuMDAzMjQxLCAyLjAw
MjQ2NSwgMi4wMDE3MTcsIDIuMDAwOTk1LCAyLjAwMDI5OCwKKyAgICAgICAgMS45OTk2MjQsIDEu
OTk4OTcyLCAxLjk5ODM0MSwgMS45OTc3MzAsIDEuOTk3MTM4LCAxLjk5NjU2NCwgMS45OTYwMDgs
IDEuOTk1NDY5LCAxLjk5NDk0NSwgMS45OTQ0MzcsCisgICAgICAgIDEuOTkzOTQzLCAxLjk5MzQ2
NCwgMS45OTI5OTcsIDEuOTkyNTQzLCAxLjk5MjEwMiwgMS45OTE2NzMsIDEuOTkxMjU0LCAxLjk5
MDg0NywgMS45OTA0NTAsIDEuOTkwMDYzLAorICAgICAgICAxLjk4OTY4NiwgMS45ODkzMTksIDEu
OTg4OTYwLCAxLjk4ODYxMCwgMS45ODgyNjgsIDEuOTg3OTM0LCAxLjk4NzYwOCwgMS45ODcyOTAs
IDEuOTg2OTc5LCAxLjk4NjY3NSwKKyAgICAgICAgMS45ODYzNzcsIDEuOTg2MDg2LCAxLjk4NTgw
MiwgMS45ODU1MjMsIDEuOTg1MjUxLCAxLjk4NDk4NCwgMS45ODQ3MjMsIDEuOTg0NDY3LCAxLjk4
NDIxNywgMS45ODM5NzJdLAorICAgIDAuOTk6IFsKKyAgICAgICAgMzEuODIwNTE2LCA2Ljk2NDU1
NywgNC41NDA3MDMsIDMuNzQ2OTQ3LCAzLjM2NDkzMCwgMy4xNDI2NjgsIDIuOTk3OTUyLCAyLjg5
NjQ1OSwgMi44MjE0MzgsIDIuNzYzNzY5LAorICAgICAgICAyLjcxODA3OSwgMi42ODA5OTgsIDIu
NjUwMzA5LCAyLjYyNDQ5NCwgMi42MDI0ODAsIDIuNTgzNDg3LCAyLjU2NjkzNCwgMi41NTIzODAs
IDIuNTM5NDgzLCAyLjUyNzk3NywKKyAgICAgICAgMi41MTc2NDgsIDIuNTA4MzI1LCAyLjQ5OTg2
NywgMi40OTIxNTksIDIuNDg1MTA3LCAyLjQ3ODYzMCwgMi40NzI2NjAsIDIuNDY3MTQwLCAyLjQ2
MjAyMSwgMi40NTcyNjIsCisgICAgICAgIDIuNDUyODI0LCAyLjQ0ODY3OCwgMi40NDQ3OTQsIDIu
NDQxMTUwLCAyLjQzNzcyMywgMi40MzQ0OTQsIDIuNDMxNDQ3LCAyLjQyODU2OCwgMi40MjU4NDEs
IDIuNDIzMjU3LAorICAgICAgICAyLjQyMDgwMywgMi40MTg0NzAsIDIuNDE2MjUwLCAyLjQxNDEz
NCwgMi40MTIxMTYsIDIuNDEwMTg4LCAyLjQwODM0NSwgMi40MDY1ODEsIDIuNDA0ODkyLCAyLjQw
MzI3MiwKKworICAgICAgICAyLjQwMTcxOCwgMi40MDAyMjUsIDIuMzk4NzkwLCAyLjM5NzQxMCwg
Mi4zOTYwODEsIDIuMzk0ODAxLCAyLjM5MzU2OCwgMi4zOTIzNzcsIDIuMzkxMjI5LCAyLjM5MDEx
OSwKKyAgICAgICAgMi4zODkwNDcsIDIuMzg4MDExLCAyLjM4NzAwOCwgMi4zODYwMzcsIDIuMzg1
MDk3LCAyLjM4NDE4NiwgMi4zODMzMDIsIDIuMzgyNDQ2LCAyLjM4MTYxNSwgMi4zODA4MDcsCisg
ICAgICAgIDIuMzgwMDI0LCAyLjM3OTI2MiwgMi4zNzg1MjIsIDIuMzc3ODAyLCAyLjM3NzEwMiwg
Mi4zNzY0MjAsIDIuMzc1NzU3LCAyLjM3NTExMSwgMi4zNzQ0ODIsIDIuMzczODY4LAorICAgICAg
ICAyLjM3MzI3MCwgMi4zNzI2ODcsIDIuMzcyMTE5LCAyLjM3MTU2NCwgMi4zNzEwMjIsIDIuMzcw
NDkzLCAyLjM2OTk3NywgMi4zNjk0NzIsIDIuMzY4OTc5LCAyLjM2ODQ5NywKKyAgICAgICAgMi4z
NjgwMjYsIDIuMzY3NTY2LCAyLjM2NzExNSwgMi4zNjY2NzQsIDIuMzY2MjQzLCAyLjM2NTgyMSwg
Mi4zNjU0MDcsIDIuMzY1MDAyLCAyLjM2NDYwNiwgMi4zNjQyMTddCit9OworCitTdGF0aXN0aWMu
cHJvdG90eXBlID0geworICAgIF9pbml0IDogZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuX3N1
bSA9IDA7CisgICAgICAgIHRoaXMuX3NxdWFyZVN1bSA9IDA7CisgICAgICAgIHRoaXMuX251bWJl
ck9mU2FtcGxlcyA9IDA7CisgICAgfSwKKyAgICAvLyBDYWxsZWQgYWZ0ZXIgYSB3YXJtLXVwIHBl
cmlvZAorICAgIHN0YXJ0U2FtcGxpbmcgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIG1lYW4g
PSB0aGlzLm1lYW4oKTsKKyAgICAgICAgdGhpcy5faW5pdCgpOworICAgICAgICB0aGlzLl9tYXhI
ZWFwLmluaXQoKTsKKyAgICAgICAgdGhpcy5zYW1wbGUobWVhbik7CisgICAgfSwKKyAgICBzYW1w
bGUgOiBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgICB0aGlzLl9zdW0gKz0gdmFsdWU7CisgICAg
ICAgIHRoaXMuX3NxdWFyZVN1bSArPSB2YWx1ZSAqIHZhbHVlOworICAgICAgICB0aGlzLl9tYXhI
ZWFwLnB1c2godmFsdWUpOworICAgICAgICArK3RoaXMuX251bWJlck9mU2FtcGxlczsKKyAgICB9
LAorICAgIG1lYW4gOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIFN0YXRpc3RpYy5zYW1w
bGVNZWFuKHRoaXMuX251bWJlck9mU2FtcGxlcywgdGhpcy5fc3VtKTsKKyAgICB9LAorICAgIHN0
YW5kYXJkRGV2aWF0aW9uIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBTdGF0aXN0aWMu
c2FtcGxlU3RhbmRhcmREZXZpYXRpb24odGhpcy5fbnVtYmVyT2ZTYW1wbGVzLCB0aGlzLl9zdW0s
IHRoaXMuX3NxdWFyZVN1bSk7CisgICAgfSwKKyAgICBwZXJjZW50YWdlIDogZnVuY3Rpb24oKSB7
CisgICAgICAgIHZhciBtZWFuID0gdGhpcy5tZWFuKCk7CisgICAgICAgIHJldHVybiBtZWFuID8g
dGhpcy5zdGFuZGFyZERldmlhdGlvbigpICogMTAwIC8gbWVhbiA6IDA7CisgICAgfSwKKyAgICBj
b25maWRlbmNlSW50ZXJ2YWxEZWx0YSA6IGZ1bmN0aW9uKGNvbmZpZGVuY2VMZXZlbCkgeworICAg
ICAgICBpZiAodGhpcy5fbnVtYmVyT2ZTYW1wbGVzIDwgMikKKyAgICAgICAgICAgIHJldHVybiBO
YU47CisgICAgICAgIAorICAgICAgICB2YXIgcHJvYmFiaWxpdHkgPSAoMTAwIC0gMiAqICgxMDAg
LSBjb25maWRlbmNlTGV2ZWwpKSAvIDEwMDsKKyAgICAgICAgaWYgKCEocHJvYmFiaWxpdHkgaW4g
U3RhdGlzdGljLnREaXN0cmlidXRpb25JbnZlcnNlQ0RGKSkKKyAgICAgICAgICAgIHRocm93ICdV
bnN1cHBvcnRlZCBjb25maWRlbmNlIGxldmVsJzsKKworICAgICAgICB2YXIgY2RmRm9yUHJvYmFi
aWxpdHkgPSBTdGF0aXN0aWMudERpc3RyaWJ1dGlvbkludmVyc2VDREZbcHJvYmFiaWxpdHldOwor
ICAgICAgICB2YXIgZGVncmVlc09mRnJlZWRvbSA9IE1hdGgubWluKHRoaXMuX251bWJlck9mU2Ft
cGxlcyAtIDEsIGNkZkZvclByb2JhYmlsaXR5Lmxlbmd0aCk7CisgICAgICAgIAorICAgICAgICB2
YXIgcXVhbnRpbGUgPSBjZGZGb3JQcm9iYWJpbGl0eVtkZWdyZWVzT2ZGcmVlZG9tIC0gMV07IC8v
IFRoZSBmaXJzdCBlbnRyeSBpcyBmb3IgdGhlIG9uZSBkZWdyZWUgb2YgZnJlZWRvbS4KKyAgICAg
ICAgcmV0dXJuIHF1YW50aWxlICogU3RhdGlzdGljLnNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uKHRo
aXMuX251bWJlck9mU2FtcGxlcywgdGhpcy5fc3VtLCB0aGlzLl9zcXVhcmVTdW0pIC8gTWF0aC5z
cXJ0KHRoaXMuX251bWJlck9mU2FtcGxlcyk7CisgICAgfSwKKyAgICBjb25jZXJuIDogZnVuY3Rp
b24ocGVyY2VudGFnZSkgeworICAgICAgICB2YXIgc2l6ZSA9IHRoaXMuX251bWJlck9mU2FtcGxl
cyAqIHBlcmNlbnRhZ2UgLyAxMDA7CisgICAgICAgIHZhciB2YWx1ZXMgPSB0aGlzLl9tYXhIZWFw
LnZhbHVlcyhzaXplKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlcy5sZW5ndGggPyB2YWx1ZXMucmVk
dWNlKGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEgKyBiOyB9KSAvIHZhbHVlcy5sZW5ndGggOiAw
OworICAgIH0sCisgICAgc2NvcmUgOiBmdW5jdGlvbihwZXJjZW50YWdlKSB7CisgICAgICAgIHJl
dHVybiBTdGF0aXN0aWMuZ2VvbWV0cmljTWVhbihbdGhpcy5tZWFuKCksIE1hdGgubWF4KHRoaXMu
Y29uY2VybihwZXJjZW50YWdlKSwgMSldKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIFNhbXBsZXIo
Y291bnQpIHsKKyAgICB0aGlzLnN0YXRpc3RpY3MgPSBbXTsKKyAgICB3aGlsZSAoY291bnQtLSkK
KyAgICAgICAgdGhpcy5zdGF0aXN0aWNzLnB1c2gobmV3IFN0YXRpc3RpYyk7CisgICAgdGhpcy5z
YW1wbGVzID0gW107CisgICAgdGhpcy5zYW1wbGluZ1RpbWVPZmZzZXQgPSAwOworfQorCitTYW1w
bGVyLnByb3RvdHlwZSA9IHsKKyAgICBzdGFydFNhbXBsaW5nIDogZnVuY3Rpb24odGltZU9mZnNl
dCkgeworICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5zdGF0aXN0aWNz
Lmxlbmd0aDsgKytpbmRleCkKKyAgICAgICAgICAgIHRoaXMuc3RhdGlzdGljc1tpbmRleF0uc3Rh
cnRTYW1wbGluZygpOworICAgICAgICAgICAgCisgICAgICAgIHRoaXMuc2FtcGxpbmdUaW1lT2Zm
c2V0ID0gdGltZU9mZnNldCAvIDEwMDA7CisgICAgfSwKKyAgICBzYW1wbGUgOiBmdW5jdGlvbih0
aW1lT2Zmc2V0LCB2YWx1ZXMpIHsKKyAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPCB0aGlzLnN0
YXRpc3RpY3MubGVuZ3RoKQorICAgICAgICAgICAgdGhyb3cgIk5vdCBlbm91Z2ggc2FtcGxlIHBv
aW50cyI7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7
IGluZGV4IDwgdGhpcy5zdGF0aXN0aWNzLmxlbmd0aDsgKytpbmRleCkKKyAgICAgICAgICAgIHRo
aXMuc3RhdGlzdGljc1tpbmRleF0uc2FtcGxlKHZhbHVlc1tpbmRleF0pOworICAgICAgICAgICAg
CisgICAgICAgIHRoaXMuc2FtcGxlcy5wdXNoKHsgdGltZU9mZnNldDogdGltZU9mZnNldCAvIDEw
MDAsIHZhbHVlczogdmFsdWVzIH0pOworICAgIH0KK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci9ydW5uZXIvYW5pbW9tZXRlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvYW5pbW9tZXRlci5odG1sCShyZXZpc2lvbiAwKQor
KysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw2NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9hbmltb21ldGVy
LmNzcyI+CisgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgv
bGlicy9kMy8zLjUuNS9kMy5taW4uanMiIGRlZmVyPjwvc2NyaXB0PiAgCisgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyIgZGVmZXI+PC9zY3JpcHQ+ICAKKyAgPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIiBkZWZlcj48L3NjcmlwdD4KKyAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy90ZXN0cy5qcyIgZGVmZXI9IiI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcyIgZGVmZXI+PC9zY3JpcHQ+CisgIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvYW5pbW9tZXRlci5qcyIgZGVmZXI+PC9zY3JpcHQ+CisgIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvZ3JhcGguanMiIGRlZmVyPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+CisgIDxtYWluPgorICAgIDxzZWN0aW9uIGlkPSJob21lIiBjbGFzcz0ic2VsZWN0ZWQiPgor
ICAgICAgPHA+CisgICAgICAgIEFuaW1vbWV0ZXIgaXMgYSBicm93c2VyIGJlbmNobWFyayB0aGF0
IG1lYXN1cmVzIHRoZSBjb21wbGV4aXR5IG9mIGFuIGFuaW1hdGlvbiBmb3IKKyAgICAgICAgd2hp
Y2ggYSBicm93c2VyIGNhbiBhY2hpZXZlIDUwIEZQUyAoZnJhbWUgcGVyIHNlY29uZCkuIEl0IHVz
ZXMgYWRhcHRpdmUgYW5pbWF0aW9ucworICAgICAgICB0byB0dW5lIHRoZWlyIGNvbXBsZXhpdGll
cyB0byBzdGF5IGNsb3NlIHRvIDUwIEZQUy4KKyAgICAgIDwvcD4KKyAgICAgIDxkaXYgY2xhc3M9
Im9wdGlvbnMiPgorICAgICAgICA8ZGl2IGNsYXNzPSJjb2x1bW4iPgorICAgICAgICAgIDxsYWJl
bD48aW5wdXQgaWQ9Imh0bWwtc3VpdGUiIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPiBIVE1MIGVs
ZW1lbnRzIHN1aXRlPC9sYWJlbD48YnI+CisgICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD0iY2Fu
dmFzLXN1aXRlIiB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD4gQ2FudmFzIGRyYXdpbmdzIHN1aXRl
PC9sYWJlbD48YnI+CisgICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD0ic3ZnLXN1aXRlIiB0eXBl
PSJjaGVja2JveCIgY2hlY2tlZD4gU1ZHIGVsZW1lbnRzIHN1aXRlPC9sYWJlbD4KKyAgICAgICAg
PC9kaXY+CisgICAgICAgIDxkaXY+CisgICAgICAgICAgPGxhYmVsPlRlc3QgaW50ZXJ2YWw6IDxp
bnB1dCBpZD0idGVzdC1pbnRlcnZhbCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMzAiPiBzZWNvbmRz
PC9sYWJlbD48YnI+CisgICAgICAgICAgPGxhYmVsPkZyYW1lIHJhdGU6IDxpbnB1dCBpZD0iZnJh
bWUtcmF0ZSIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iNTAiPiBmcHM8L2xhYmVsPjxicj4KKyAgICAg
ICAgICA8bGFiZWw+PGlucHV0IGlkPSJlc3RpbWF0ZWQtZnJhbWUtcmF0ZSIgdHlwZT0iY2hlY2ti
b3giIGNoZWNrZWQ+IEVzdGltYXRlZCBGcmFtZSBSYXRlPC9sYWJlbD48YnI+CisgICAgICAgICAg
PGxhYmVsPjxpbnB1dCBpZD0iZml4LXRlc3QtY29tcGxleGl0eSIgdHlwZT0iY2hlY2tib3giPiBG
aXggdGVzdCBjb21wbGV4aXR5IGFmdGVyIHdhcm11cDwvbGFiZWw+CisgICAgICAgIDwvZGl2Pgor
ICAgICAgPC9kaXY+CisgICAgICA8ZGl2IGNsYXNzPSJidXR0b25zIj4KKyAgICAgICAgPGJ1dHRv
biBvbmNsaWNrPSJzdGFydFRlc3QoKSI+U3RhcnQgVGVzdDwvYnV0dG9uPgorICAgICAgPC9kaXY+
CisgICAgPC9zZWN0aW9uPgorICAgIDxzZWN0aW9uIGlkPSJydW5uaW5nIj4KKyAgICAgIDxkaXYg
aWQ9InRlc3RDb250YWluZXIiPjwvZGl2PgorICAgICAgPGRpdiBpZD0icHJvZ3Jlc3MiPgorICAg
ICAgICA8ZGl2IGlkPSJwcm9ncmVzcy1jb21wbGV0ZWQiPjwvZGl2PgorICAgICAgPC9kaXY+Cisg
ICAgICA8ZGl2IGlkPSJyZWNvcmQiPgorICAgICAgICA8dGFibGUgY2xhc3M9InJlY29yZC10YWJs
ZSI+PC90YWJsZT4KKyAgICAgIDwvZGl2PgorICAgIDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbiBp
ZD0icmVzdWx0cyI+CisgICAgICA8aDE+UmVzdWx0czwvaDE+CisgICAgICA8dGFibGUgY2xhc3M9
InJlc3VsdHMtdGFibGUiPjwvdGFibGU+CisgICAgICA8ZGl2IGNsYXNzPSJidXR0b25zIj4KKyAg
ICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJzdGFydFRlc3QoKSI+VGVzdCBBZ2FpbjwvYnV0dG9uPgor
ICAgICAgPC9kaXY+CisgICAgPC9zZWN0aW9uPiAgCisgICAgPHNlY3Rpb24gaWQ9ImdyYXBoIj4K
KyAgICAgIDxoMT5HcmFwaDwvaDE+CisgICAgICA8ZGl2IGlkPSJncmFwaENvbnRhaW5lciI+PC9k
aXY+CisgICAgICA8ZGl2IGNsYXNzPSJidXR0b25zIj4KKyAgICAgICAgPGJ1dHRvbiBvbmNsaWNr
PSJzaG93UmVzdWx0cygpIj5SZXN1bHRzPC9idXR0b24+CisgICAgICAgIDxidXR0b24gb25jbGlj
az0ic3RhcnRUZXN0KCkiPlRlc3QgQWdhaW48L2J1dHRvbj4gICAgICAgIAorICAgICAgPC9kaXY+
CisgICAgPC9zZWN0aW9uPiAgCisgIDwvbWFpbj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3Nz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3Vy
Y2VzL2FuaW1vbWV0ZXIuY3NzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5jc3MJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwyMTQgQEAKK2JvZHkgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYig5NiwgOTYs
IDk2KTsKKyAgICBjb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOworICAgIGZvbnQtZmFtaWx5OiAi
SGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIFZlcmRhbmEsIHNhbnMtc2VyaWY7Cit9CisKK21h
aW4geworICAgIGRpc3BsYXk6IGJsb2NrOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB3
aWR0aDogODAwcHg7CisgICAgaGVpZ2h0OiA2MDBweDsKKyAgICB0b3A6IDUwJTsKKyAgICBsZWZ0
OiA1MCU7CisgICAgbWFyZ2luLXRvcDogLTMyMXB4OworICAgIG1hcmdpbi1sZWZ0OiAtNDIxcHg7
CisgICAgcGFkZGluZzogMTVweDsKKyAgICBib3JkZXI6IDZweCBzb2xpZCByZ2IoMjM1LCAyMzUs
IDIzNSk7CisgICAgYm9yZGVyLXJhZGl1czogMjBweDsKK30KKworbGFiZWwsIHAgeworICAgIGZv
bnQtc2l6ZTogMTZweDsKKyAgICBsaW5lLWhlaWdodDogMjFweDsKK30KKworc2VjdGlvbiB7Cisg
ICAgZGlzcGxheTogbm9uZTsKK30KKworc2VjdGlvbiA+IHAgeworICAgIG1hcmdpbjogMTBweCAy
MHB4OworfQorCitzZWN0aW9uI2hvbWUgPiBwIHsKKyAgICBtYXJnaW46IDAgYXV0bzsKKyAgICB3
aWR0aDogNzAlOworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKK30KKworc2VjdGlvbiNob21lID4g
cDpmaXJzdC1jaGlsZCB7CisgICAgbWFyZ2luLXRvcDogMTYwcHg7CisgICAgdGV4dC1hbGlnbjog
Y2VudGVyOworfQorCitzZWN0aW9uLnNlbGVjdGVkIHsKKyAgICBkaXNwbGF5OiBibG9jazsKK30K
KworI3Rlc3RDb250YWluZXIgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDE1
cHg7CisgICAgbGVmdDogMTVweDsKKyAgICB3aWR0aDogODAwcHg7CisgICAgaGVpZ2h0OiA2MDBw
eDsKK30KKworc2VjdGlvbiNydW5uaW5nID4gI3Byb2dyZXNzIHsKKyAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CisgICAgYm90dG9tOiAtNnB4OworICAgIGxlZnQ6IDYwcHg7CisgICAgcmlnaHQ6IDYw
cHg7CisgICAgaGVpZ2h0OiA2cHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEyOCwgMTI4
LCAxMjgpOworICAgIGJvcmRlci1sZWZ0OiA2cHggc29saWQgcmdiKDQ2LCA1MSwgNTUpOworICAg
IGJvcmRlci1yaWdodDogNnB4IHNvbGlkIHJnYig0NiwgNTEsIDU1KTsKK30KKworc2VjdGlvbiNy
dW5uaW5nICNwcm9ncmVzcy1jb21wbGV0ZWQgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAg
ICB0b3A6IDA7CisgICAgbGVmdDogMDsKKyAgICBoZWlnaHQ6IDZweDsKKyAgICB3aWR0aDogMDsK
KyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7Cit9CisKK3NlY3Rpb24j
cnVubmluZyA+ICNyZWNvcmQgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBib3R0b206
IC0xMzBweDsKKyAgICBsZWZ0OiAwcHg7CisgICAgcmlnaHQ6IDBweDsKKyAgICBoZWlnaHQ6IDc1
cHg7CisgICAgY29sb3I6IHJnYigxMjgsIDEyOCwgMTI4KTsKKyAgICBwYWRkaW5nOiAxNXB4Owor
ICAgIGJvcmRlcjogNnB4IHNvbGlkIHJnYigyMzUsIDIzNSwgMjM1KTsKKyAgICBib3JkZXItcmFk
aXVzOiAyMHB4OworfQorCitzZWN0aW9uI3J1bm5pbmcgPiAjcmVjb3JkID4gdGFibGUsCitzZWN0
aW9uI3Jlc3VsdHMgPiB0YWJsZSB7CisgICAgd2lkdGg6IDEwMCU7Cit9CisKK3NlY3Rpb24jcnVu
bmluZyA+ICNyZWNvcmQgPiB0YWJsZSB0ZCwgdGgsCitzZWN0aW9uI3Jlc3VsdHMgPiB0YWJsZSB0
ZCwgdGggeworICAgIGZvbnQtc2l6ZTogMTFweDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCAjOThi
ZjIxOworICAgIHBhZGRpbmc6IDNweCA0cHggMnB4IDRweDsKK30KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKK3NlY3Rpb24jcnVubmluZyA+ICNyZWNvcmQgPiB0
YWJsZSB0ci5hbHQsIHRkCitzZWN0aW9uI3Jlc3VsdHMgPiB0YWJsZSB0ci5hbHQsIHRkIHsKKyAg
ICBjb2xvcjogIzAwMDAwMDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUFGMkQzOworfQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitzZWN0aW9uI3J1bm5p
bmcgPiAjcmVjb3JkID4gdGFibGUgdGgsCitzZWN0aW9uI3Jlc3VsdHMgPiB0YWJsZSB0aCB7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogI0E3Qzk0MjsgCisgICAgdGV4dC1hbGlnbjogY2VudGVyOwor
fQorCisub3B0aW9ucyB7CisgICAgbWFyZ2luOjAgYXV0bzsgICAgCisgICAgbWFyZ2luLXRvcDog
MzBweDsKKyAgICB3aWR0aDogNTAwcHg7CisgICAgYWxpZ246IGNlbnRlcjsKK30KKworLmNvbHVt
biB7CisgICAgd2lkdGg6IDQ1JTsKKyAgICBmbG9hdDpsZWZ0OworICAgIGhlaWdodDogMTIwcHg7
CisgICAgcGFkZGluZzo1cHg7Cit9CisKK2lucHV0W3R5cGU9Im51bWJlciJdIHsKKyAgIHdpZHRo
OjUwcHg7Cit9CisKKy5idXR0b25zIHsKKyAgICBtYXJnaW4tdG9wOiAxMHB4OworICAgIHRleHQt
YWxpZ246IGNlbnRlcjsKKyAgICBjbGVhcjogYm90aDsKK30KKworYnV0dG9uIHsKKyAgICAtd2Vi
a2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgYm9yZGVyOiAzcHggc29saWQgcmdiKDIzNSwgMjM1
LCAyMzUpOworICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CisgICAgbWluLXdpZHRoOiAyMDBweDsK
KyAgICBwYWRkaW5nOiA1cHggMjBweDsKKyAgICBtYXJnaW46IDAgNDBweDsKKyAgICBmb250LXNp
emU6IDI1cHg7CisgICAgY29sb3I6IHJnYigyMzUsIDIzNSwgMjM1KTsKKyAgICBiYWNrZ3JvdW5k
LWNvbG9yOiB0cmFuc3BhcmVudDsKKworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Cit9
CisKK2J1dHRvbjphY3RpdmUgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzUsIDIzNSwg
MjM1KTsKKyAgICBjb2xvcjogcmdiKDQ2LCA1MSwgNTUpOworICAgIGJvcmRlci1jb2xvcjogcmdi
KDIzNSwgMjM1LCAyMzUpICFpbXBvcnRhbnQ7Cit9CisKK2J1dHRvbjpmb2N1cyB7CisgICAgb3V0
bGluZTogbm9uZTsKKyAgICBib3JkZXItY29sb3I6IHJnYigyMzIsIDc5LCA3OSk7Cit9CisKKy5z
bWFsbC1idXR0b24geworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKyAgICBib3JkZXI6
IDFweCBzb2xpZCByZ2IoOTYsIDk2LCA5Nik7CisgICAgYm9yZGVyLXJhZGl1czogMnB4OworICAg
IHBhZGRpbmc6IDFweCA0cHg7CisgICAgbWFyZ2luOiAwIDRweDsKKyAgICBiYWNrZ3JvdW5kLWNv
bG9yOiB0cmFuc3BhcmVudDsKKyAgICBjdXJzb3I6IHBvaW50ZXI7CisgICAgdGV4dC1hbGlnbjog
Y2VudGVyOworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Cit9CisKKyNncmFwaENvbnRh
aW5lciB7CisgIGZvbnQ6IDEwcHggc2Fucy1zZXJpZjsKKyAgY29sb3I6IHJnYigyMzUsIDIzNSwg
MjM1KTsgIAorfQorCisuYXhpcyBwYXRoLAorLmF4aXMgbGluZSB7CisgIGZpbGw6IG5vbmU7Cisg
IHN0cm9rZTogcmdiKDIzNSwgMjM1LCAyMzUpOworICBzaGFwZS1yZW5kZXJpbmc6IGNyaXNwRWRn
ZXM7Cit9CisKKy5sZWZ0LXNhbXBsZXMgeworICBmaWxsOiBub25lOworICBzdHJva2U6IHN0ZWVs
Ymx1ZTsKKyAgc3Ryb2tlLXdpZHRoOiAxLjVweDsKK30KKworLnJpZ2h0LXNhbXBsZXMgeworICAg
IGZpbGw6IG5vbmU7CisgICAgc3Ryb2tlOiByZWQ7CisgICAgc3Ryb2tlLXdpZHRoOiAxLjVweDsK
K30KKworLnNtYXBsZS10aW1lIHsKKyAgICBmaWxsOiBub25lOworICAgIHN0cm9rZTogZ3JlZW47
CisgICAgc3Ryb2tlLXdpZHRoOiAxLjVweDsKK30KKworLmxlZnQtbWVhbiB7CisgICAgZmlsbDog
bm9uZTsKKyAgICBzdHJva2U6IHllbGxvdzsKKyAgICBzdHJva2Utd2lkdGg6IDEuNXB4OworfQor
CisucmlnaHQtbWVhbiB7CisgICAgZmlsbDogbm9uZTsKKyAgICBzdHJva2U6IG1hZ2VudGE7Cisg
ICAgc3Ryb2tlLXdpZHRoOiAxLjVweDsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qcwkocmV2
aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2Vz
L2FuaW1vbWV0ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDcgQEAKK3dpbmRvdy5i
ZW5jaG1hcmtSdW5uZXJDbGllbnQgPSB7CisgICAgaXRlcmF0aW9uQ291bnQ6IDEsCisgICAgdGVz
dHNDb3VudDogbnVsbCwKKyAgICBwcm9ncmVzc0JhcjogbnVsbCwKKyAgICByZWNvcmRUYWJsZTog
bnVsbCwKKyAgICBvcHRpb25zOiB7IHRlc3RJbnRlcnZhbDogMzAwMDAsIGZyYW1lUmF0ZTogNTAs
IGVzdGltYXRlZEZyYW1lUmF0ZTogdHJ1ZSwgZml4VGVzdENvbXBsZXhpdHkgOiBmYWxzZSB9LAor
ICAgIHNjb3JlOiAwLAorICAgIF9pdGVyYXRpb25zU2FtcGxlcnM6IFtdLAorICAgIF9yZXN1bHRz
VGFibGU6IG51bGwsCisgICAgX2lzQ2hyb21lOiAvQ2hyb21lLy50ZXN0KG5hdmlnYXRvci51c2Vy
QWdlbnQpICYmIC9Hb29nbGUgSW5jLy50ZXN0KG5hdmlnYXRvci52ZW5kb3IpLAorICAgIF9pc1Nh
ZmFyaTogL1NhZmFyaS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJiAvQXBwbGUgQ29tcHV0
ZXIvLnRlc3QobmF2aWdhdG9yLnZlbmRvciksCisgICAgd2lsbEFkZFRlc3RGcmFtZTogZnVuY3Rp
b24gKGZyYW1lKSB7CisgICAgICAgIHZhciBtYWluID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigi
bWFpbiIpOworICAgICAgICB2YXIgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKG1haW4pOworICAg
ICAgICBmcmFtZS5zdHlsZS5sZWZ0ID0gbWFpbi5vZmZzZXRMZWZ0ICsgcGFyc2VJbnQoc3R5bGUu
Ym9yZGVyTGVmdFdpZHRoKSArIHBhcnNlSW50KHN0eWxlLnBhZGRpbmdMZWZ0KSArICJweCI7Cisg
ICAgICAgIGZyYW1lLnN0eWxlLnRvcCA9IG1haW4ub2Zmc2V0VG9wICsgcGFyc2VJbnQoc3R5bGUu
Ym9yZGVyVG9wV2lkdGgpICsgcGFyc2VJbnQoc3R5bGUucGFkZGluZ1RvcCkgKyAicHgiOworICAg
IH0sCisgICAgZGlkUnVuVGVzdDogZnVuY3Rpb24gKCkgeworICAgICAgICB0aGlzLnByb2dyZXNz
QmFyLmluY1JhbmdlKCk7CisgICAgfSwKKyAgICB3aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbjogZnVu
Y3Rpb24gKCkgeworICAgICAgICB0aGlzLl9pdGVyYXRpb25zU2FtcGxlcnMgPSBbXTsKKyAgICAg
ICAgdGhpcy5fcmVzdWx0c1RhYmxlID0gbmV3IFJlY29yZFRhYmxlKGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3JBbGwoIi5yZXN1bHRzLXRhYmxlIilbMF0pOworICAgICAgICAKKyAgICAgICAgdGhpcy5w
cm9ncmVzc0JhciA9IG5ldyBQcm9ncmVzc0Jhcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJv
Z3Jlc3MtY29tcGxldGVkIiksIHRoaXMudGVzdHNDb3VudCk7CisgICAgICAgIHRoaXMucmVjb3Jk
VGFibGUgPSBuZXcgUmVjb3JkVGFibGUoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnJlY29y
ZC10YWJsZSIpWzBdKTsKKyAgICB9LAorICAgIGRpZFJ1blN1aXRlczogZnVuY3Rpb24gKHN1aXRl
c1NhbXBsZXJzKSB7CisgICAgICAgIHRoaXMuX2l0ZXJhdGlvbnNTYW1wbGVycy5wdXNoKHN1aXRl
c1NhbXBsZXJzKTsKKyAgICB9LAorICAgIGRpZEZpbmlzaExhc3RJdGVyYXRpb246IGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgdGhpcy5zY29yZSA9IHRoaXMuX3Jlc3VsdHNUYWJsZS5zaG93SXRlcmF0
aW9ucyh0aGlzLl9pdGVyYXRpb25zU2FtcGxlcnMsICIiKTsKKyAgICAgICAgc2hvd1Jlc3VsdHMo
KTsKKyAgICB9LAorICAgIGJyb3dzZXIgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHRoaXMu
X2lzQ2hyb21lKQorICAgICAgICAgICAgcmV0dXJuICJDaHJvbWUiOworICAgICAgICBpZiAodGhp
cy5faXNTYWZhcmkpCisgICAgICAgICAgICByZXR1cm4gIlNhZmFyaSI7CisgICAgICAgIHJldHVy
biAiIjsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNob3dTZWN0aW9uKHNlY3Rpb25JZGVudGlmaWVy
LCBwdXNoU3RhdGUpIHsKKyAgICB2YXIgY3VycmVudFNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQu
cXVlcnlTZWxlY3Rvcigic2VjdGlvbi5zZWxlY3RlZCIpOworICAgIGNvbnNvbGUuYXNzZXJ0KGN1
cnJlbnRTZWN0aW9uRWxlbWVudCk7CisKKyAgICB2YXIgbmV3U2VjdGlvbkVsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChzZWN0aW9uSWRlbnRpZmllcik7CisgICAgY29uc29sZS5hc3Nl
cnQobmV3U2VjdGlvbkVsZW1lbnQpOworCisgICAgY3VycmVudFNlY3Rpb25FbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoInNlbGVjdGVkIik7CisgICAgbmV3U2VjdGlvbkVsZW1lbnQuY2xhc3NMaXN0
LmFkZCgic2VsZWN0ZWQiKTsKKworICAgIGlmIChwdXNoU3RhdGUpCisgICAgICAgIGhpc3Rvcnku
cHVzaFN0YXRlKHtzZWN0aW9uOiBzZWN0aW9uSWRlbnRpZmllcn0sIGRvY3VtZW50LnRpdGxlKTsK
K30KKworZnVuY3Rpb24gc3RhcnRCZW5jaG1hcmsoKSB7CisgICAgdmFyIGNoZWNrYm94ZXMgPSBb
IAorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaHRtbC1zdWl0ZSIpLCAKKyAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcy1zdWl0ZSIpLCAKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2Zy1zdWl0ZSIpCisgICAgXTsKKyAgICB2YXIgZW5hYmxl
ZFN1aXRlcyA9IFN1aXRlcy5maWx0ZXIoZnVuY3Rpb24gKHN1aXRlLCBpbmRleCkgeyByZXR1cm4g
IXN1aXRlLmRpc2FibGVkICYmIGNoZWNrYm94ZXNbaW5kZXhdLmNoZWNrZWQ7IH0pOworICAgIHZh
ciB0ZXN0c0NvdW50ID0gZW5hYmxlZFN1aXRlcy5yZWR1Y2UoZnVuY3Rpb24gKHRlc3RzQ291bnQs
IHN1aXRlKSB7IHJldHVybiB0ZXN0c0NvdW50ICsgc3VpdGUudGVzdHMubGVuZ3RoOyB9LCAwKTsK
KyAgICBiZW5jaG1hcmtSdW5uZXJDbGllbnQudGVzdHNDb3VudCA9IGJlbmNobWFya1J1bm5lckNs
aWVudC5pdGVyYXRpb25Db3VudCAqIHRlc3RzQ291bnQ7CisgICAgYmVuY2htYXJrUnVubmVyQ2xp
ZW50Lm9wdGlvbnNbInRlc3RJbnRlcnZhbCJdID0gcGFyc2VJbnQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3QtaW50ZXJ2YWwiKS52YWx1ZSkgKiAxMDAwOworICAgIGJlbmNobWFya1J1bm5l
ckNsaWVudC5vcHRpb25zWyJmcmFtZVJhdGUiXSA9IHBhcnNlSW50KGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJmcmFtZS1yYXRlIikudmFsdWUpOworICAgIGJlbmNobWFya1J1bm5lckNsaWVudC5v
cHRpb25zWyJlc3RpbWF0ZWRGcmFtZVJhdGUiXSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJl
c3RpbWF0ZWQtZnJhbWUtcmF0ZSIpLmNoZWNrZWQ7ICAgIAorICAgIGJlbmNobWFya1J1bm5lckNs
aWVudC5vcHRpb25zWyJmaXhUZXN0Q29tcGxleGl0eSJdID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImZpeC10ZXN0LWNvbXBsZXhpdHkiKS5jaGVja2VkOworICAgIHZhciBydW5uZXIgPSBuZXcg
QmVuY2htYXJrUnVubmVyKGVuYWJsZWRTdWl0ZXMsIGJlbmNobWFya1J1bm5lckNsaWVudCk7Cisg
ICAgcnVubmVyLnJ1bk11bHRpcGxlSXRlcmF0aW9ucyhiZW5jaG1hcmtSdW5uZXJDbGllbnQuaXRl
cmF0aW9uQ291bnQpOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgc2hvd1NlY3Rp
b24oInJ1bm5pbmciKTsKKyAgICBzdGFydEJlbmNobWFyaygpOworfQorCitmdW5jdGlvbiBzaG93
UmVzdWx0cyhzY29yZSkgeworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiI3Jlc3VsdHMgPiBoMSIpOworICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSAiUmVzdWx0czoi
CisgICAgCisgICAgdmFyIGJyb3dzZXIgPSBiZW5jaG1hcmtSdW5uZXJDbGllbnQuYnJvd3Nlcigp
OyAgICAKKyAgICBpZiAoYnJvd3Nlci5sZW5ndGgpCisgICAgICAgIGVsZW1lbnQudGV4dENvbnRl
bnQgKz0gIiBbYnJvd3NlciA9ICIgKyBicm93c2VyICsgIl0iOworCisgICAgdmFyIHNjb3JlID0g
YmVuY2htYXJrUnVubmVyQ2xpZW50LnNjb3JlLnRvRml4ZWQoMik7CisgICAgZWxlbWVudC50ZXh0
Q29udGVudCArPSAiIFtTY29yZSA9ICIgKyBzY29yZSArICJdIjsKKyAgICAgICAgCisgICAgc2hv
d1NlY3Rpb24oInJlc3VsdHMiLCB0cnVlKTsKK30KKworZnVuY3Rpb24gc2hvd0dyYXBoKHRlc3RO
YW1lLCBheGlzZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGltZU9mZnNldCkgeworICAgIHZhciBlbGVt
ZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2dyYXBoID4gaDEiKTsKKyAgICBlbGVtZW50
LnRleHRDb250ZW50ID0gIkdyYXBoOiIKKworICAgIHZhciBicm93c2VyID0gYmVuY2htYXJrUnVu
bmVyQ2xpZW50LmJyb3dzZXIoKTsgICAgCisgICAgaWYgKGJyb3dzZXIubGVuZ3RoKQorICAgICAg
ICBlbGVtZW50LnRleHRDb250ZW50ICs9ICIgW2Jyb3dzZXIgPSAiICsgYnJvd3NlciArICJdIjsK
KworICAgIGlmICh0ZXN0TmFtZS5sZW5ndGgpCisgICAgICAgIGVsZW1lbnQudGV4dENvbnRlbnQg
Kz0gIiBbdGVzdCA9ICIgKyB0ZXN0TmFtZSArICJdIjsKKyAgICAgICAgICAgIAorICAgIGdyYXBo
KCIjZ3JhcGhDb250YWluZXIiLCBuZXcgUG9pbnQoNzAwLCA0MDApLCBuZXcgSW5zZXRzKDIwLCA1
MCwgMjAsIDUwKSwgYXhpc2VzLCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQpOworICAgIHNo
b3dTZWN0aW9uKCJncmFwaCIsIHRydWUpOyAgICAKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYmVuY2ht
YXJrLXJ1bm5lci5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9ydW5uZXIvcmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxODggQEAKK2Z1bmN0aW9uIEJlbmNobWFya1J1bm5lclN0YXRlKHN1aXRlcykgewor
ICAgIHRoaXMuX3N1aXRlcyA9IHN1aXRlczsKKyAgICB0aGlzLl9zdWl0ZUluZGV4ID0gLTE7Cisg
ICAgdGhpcy5fdGVzdEluZGV4ID0gMDsKKyAgICB0aGlzLm5leHQoKTsKK30KKworQmVuY2htYXJr
UnVubmVyU3RhdGUucHJvdG90eXBlLmN1cnJlbnRTdWl0ZSA9IGZ1bmN0aW9uKCkgeworICAgIHJl
dHVybiB0aGlzLl9zdWl0ZXNbdGhpcy5fc3VpdGVJbmRleF07Cit9CisKK0JlbmNobWFya1J1bm5l
clN0YXRlLnByb3RvdHlwZS5jdXJyZW50VGVzdCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBzdWl0
ZSA9IHRoaXMuY3VycmVudFN1aXRlKCk7CisgICAgcmV0dXJuIHN1aXRlID8gc3VpdGUudGVzdHNb
dGhpcy5fdGVzdEluZGV4XSA6IG51bGw7Cit9CisKK0JlbmNobWFya1J1bm5lclN0YXRlLnByb3Rv
dHlwZS5pc0ZpcnN0VGVzdCA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiAhdGhpcy5fdGVzdElu
ZGV4OworfQorCitCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9u
KCkgeworICAgIHRoaXMuX3Rlc3RJbmRleCsrOworCisgICAgdmFyIHN1aXRlID0gdGhpcy5fc3Vp
dGVzW3RoaXMuX3N1aXRlSW5kZXhdOworICAgIGlmIChzdWl0ZSAmJiB0aGlzLl90ZXN0SW5kZXgg
PCBzdWl0ZS50ZXN0cy5sZW5ndGgpCisgICAgICAgIHJldHVybiB0aGlzOworCisgICAgdGhpcy5f
dGVzdEluZGV4ID0gMDsKKyAgICBkbyB7CisgICAgICAgIHRoaXMuX3N1aXRlSW5kZXgrKzsKKyAg
ICB9IHdoaWxlICh0aGlzLl9zdWl0ZUluZGV4IDwgdGhpcy5fc3VpdGVzLmxlbmd0aCAmJiB0aGlz
Ll9zdWl0ZXNbdGhpcy5fc3VpdGVJbmRleF0uZGlzYWJsZWQpOworCisgICAgcmV0dXJuIHRoaXM7
Cit9CisKK0JlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5wcmVwYXJlQ3VycmVudFRlc3Qg
PSBmdW5jdGlvbihydW5uZXIsIGZyYW1lKSB7CisgICAgdmFyIHN1aXRlID0gdGhpcy5jdXJyZW50
U3VpdGUoKTsKKyAgICB2YXIgdGVzdCA9IHRoaXMuY3VycmVudFRlc3QoKTsKKyAgICB2YXIgcHJv
bWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgIGZyYW1lLm9ubG9hZCA9IGZ1bmN0aW9uKCkg
eworICAgICAgICBzdWl0ZS5wcmVwYXJlKHJ1bm5lciwgZnJhbWUuY29udGVudFdpbmRvdywgZnJh
bWUuY29udGVudERvY3VtZW50KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeyBwcm9taXNlLnJlc29s
dmUocmVzdWx0KTsgfSk7CisgICAgfQorICAgIGZyYW1lLnNyYyA9IHRlc3QudXJsOworICAgIHJl
dHVybiBwcm9taXNlOworfQorCitmdW5jdGlvbiBCZW5jaG1hcmtSdW5uZXIoc3VpdGVzLCBjbGll
bnQpIHsKKyAgICB0aGlzLl9zdWl0ZXMgPSBzdWl0ZXM7CisgICAgdGhpcy5fY2xpZW50ID0gY2xp
ZW50OworfQorCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLndhaXRGb3JFbGVtZW50ID0gZnVu
Y3Rpb24oc2VsZWN0b3IpIHsKKyAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOwor
ICAgIHZhciBjb250ZW50RG9jdW1lbnQgPSB0aGlzLl9mcmFtZS5jb250ZW50RG9jdW1lbnQ7CisK
KyAgICBmdW5jdGlvbiByZXNvbHZlSWZSZWFkeSgpIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBj
b250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CisgICAgICAgIGlmIChlbGVt
ZW50KQorICAgICAgICAgICAgcmV0dXJuIHByb21pc2UucmVzb2x2ZShlbGVtZW50KTsKKyAgICAg
ICAgc2V0VGltZW91dChyZXNvbHZlSWZSZWFkeSwgNTApOworICAgIH0KKworICAgIHJlc29sdmVJ
ZlJlYWR5KCk7CisgICAgcmV0dXJuIHByb21pc2U7Cit9CisKK0JlbmNobWFya1J1bm5lci5wcm90
b3R5cGUuX2FwcGVuZEZyYW1lID0gZnVuY3Rpb24oc3JjKSB7CisgICAgdmFyIGZyYW1lID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgZnJhbWUuc3R5bGUud2lkdGggPSAi
ODAwcHgiOworICAgIGZyYW1lLnN0eWxlLmhlaWdodCA9ICI2MDBweCI7CisgICAgZnJhbWUuc3R5
bGUuYm9yZGVyID0gIjBweCBub25lIjsKKyAgICBmcmFtZS5zdHlsZS5wb3NpdGlvbiA9ICJhYnNv
bHV0ZSI7CisgICAgZnJhbWUuc2V0QXR0cmlidXRlKCJzY3JvbGxpbmciLCAibm8iKTsKKworICAg
IHZhciBtYXJnaW5MZWZ0ID0gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5
KS5tYXJnaW5MZWZ0KTsKKyAgICB2YXIgbWFyZ2luVG9wID0gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRT
dHlsZShkb2N1bWVudC5ib2R5KS5tYXJnaW5Ub3ApOworICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0
aCA+IDgwMCArIG1hcmdpbkxlZnQgJiYgd2luZG93LmlubmVySGVpZ2h0ID4gNjAwICsgbWFyZ2lu
VG9wKSB7CisgICAgICAgIGZyYW1lLnN0eWxlLmxlZnQgPSBtYXJnaW5MZWZ0ICsgInB4IjsKKyAg
ICAgICAgZnJhbWUuc3R5bGUudG9wID0gbWFyZ2luVG9wICsgInB4IjsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBmcmFtZS5zdHlsZS5sZWZ0ID0gIjBweCI7CisgICAgICAgIGZyYW1lLnN0eWxlLnRv
cCA9ICIwcHgiOworICAgIH0KKworICAgIGlmICh0aGlzLl9jbGllbnQgJiYgdGhpcy5fY2xpZW50
LndpbGxBZGRUZXN0RnJhbWUpCisgICAgICAgIHRoaXMuX2NsaWVudC53aWxsQWRkVGVzdEZyYW1l
KGZyYW1lKTsKKworICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGZyYW1lLCBkb2N1bWVu
dC5ib2R5LmZpcnN0Q2hpbGQpOworICAgIHRoaXMuX2ZyYW1lID0gZnJhbWU7CisgICAgcmV0dXJu
IGZyYW1lOworfQorCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9yZW1vdmVGcmFtZSA9IGZ1
bmN0aW9uKCkgeworICAgIGlmICh0aGlzLl9mcmFtZSkgeworICAgICAgICB0aGlzLl9mcmFtZS5w
YXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX2ZyYW1lKTsKKyAgICAgICAgdGhpcy5fZnJhbWUg
PSBudWxsOworICAgIH0KK30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcnVuVGVzdEFu
ZFJlY29yZFJlc3VsdHMgPSBmdW5jdGlvbihzdGF0ZSkgeworICAgIHZhciBwcm9taXNlID0gbmV3
IFNpbXBsZVByb21pc2U7CisgICAgdmFyIHN1aXRlID0gc3RhdGUuY3VycmVudFN1aXRlKCk7Cisg
ICAgdmFyIHRlc3QgPSBzdGF0ZS5jdXJyZW50VGVzdCgpOworICAgIAorICAgIGlmICh0aGlzLl9j
bGllbnQgJiYgdGhpcy5fY2xpZW50LndpbGxSdW5UZXN0VGVzdCkKKyAgICAgICAgdGhpcy5fY2xp
ZW50LndpbGxSdW5UZXN0KHN1aXRlLCB0ZXN0KTsKKworICAgIHZhciBjb250ZW50V2luZG93ID0g
dGhpcy5fZnJhbWUuY29udGVudFdpbmRvdzsKKyAgICB2YXIgc2VsZiA9IHRoaXM7CisKKyAgICBz
dWl0ZS5ydW4oY29udGVudFdpbmRvdywgdGVzdCwgdGhpcy5fY2xpZW50Lm9wdGlvbnMsIHRoaXMu
X2NsaWVudC5yZWNvcmRUYWJsZSwgdGhpcy5fY2xpZW50LnByb2dyZXNzQmFyKS50aGVuKGZ1bmN0
aW9uKHNhbXBsZXIpIHsKKyAgICAgICAgdmFyIHNhbXBsZXJzID0gc2VsZi5fc3VpdGVzU2FtcGxl
cnNbc3VpdGUubmFtZV0gfHwgW107CisgICAgICAgIAorICAgICAgICBzYW1wbGVyc1t0ZXN0Lm5h
bWVdID0gc2FtcGxlcjsKKyAgICAgICAgc2VsZi5fc3VpdGVzU2FtcGxlcnNbc3VpdGUubmFtZV0g
PSBzYW1wbGVyczsKKworICAgICAgICBpZiAoc2VsZi5fY2xpZW50ICYmIHNlbGYuX2NsaWVudC5k
aWRSdW5UZXN0KQorICAgICAgICAgICAgc2VsZi5fY2xpZW50LmRpZFJ1blRlc3Qoc3VpdGUsIHRl
c3QpOworICAgICAgICAKKyAgICAgICAgc3RhdGUubmV4dCgpOworICAgICAgICBpZiAoc3RhdGUu
Y3VycmVudFN1aXRlKCkgIT0gc3VpdGUpCisgICAgICAgICAgICBzZWxmLl9yZW1vdmVGcmFtZSgp
OworICAgICAgICBwcm9taXNlLnJlc29sdmUoc3RhdGUpOworICAgIH0pOworICAgIAorICAgIHJl
dHVybiBwcm9taXNlOworfQorCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLnN0ZXAgPSBmdW5j
dGlvbihzdGF0ZSkgeworICAgIGlmICghc3RhdGUpIHsKKyAgICAgICAgc3RhdGUgPSBuZXcgQmVu
Y2htYXJrUnVubmVyU3RhdGUodGhpcy5fc3VpdGVzKTsKKyAgICAgICAgdGhpcy5fc3VpdGVzU2Ft
cGxlcnMgPSB7fTsKKyAgICB9CisKKyAgICB2YXIgc3VpdGUgPSBzdGF0ZS5jdXJyZW50U3VpdGUo
KTsKKyAgICBpZiAoIXN1aXRlKSB7CisgICAgICAgIHRoaXMuX2ZpbmFsaXplKCk7CisgICAgICAg
IHZhciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7CisgICAgICAgIHByb21pc2UucmVzb2x2
ZSgpOworICAgICAgICByZXR1cm4gcHJvbWlzZTsKKyAgICB9CisKKyAgICBpZiAoc3RhdGUuaXNG
aXJzdFRlc3QoKSkgeworICAgICAgICB0aGlzLl9tYXN1cmVkVmFsdWVzRm9yQ3VycmVudFN1aXRl
ID0ge307CisgICAgICAgIHRoaXMuX2FwcGVuZEZyYW1lKCk7CisgICAgfQorCisgICAgdmFyIHNl
bGYgPSB0aGlzOworICAgIHJldHVybiBzdGF0ZS5wcmVwYXJlQ3VycmVudFRlc3QodGhpcywgdGhp
cy5fZnJhbWUpLnRoZW4oZnVuY3Rpb24ocHJlcGFyZVJldHVyblZhbHVlKSB7CisgICAgICAgIHJl
dHVybiBzZWxmLl9ydW5UZXN0QW5kUmVjb3JkUmVzdWx0cyhzdGF0ZSk7CisgICAgfSk7Cit9CisK
K0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUucnVuQWxsU3RlcHMgPSBmdW5jdGlvbihzdGFydGlu
Z1N0YXRlKSB7CisgICAgdmFyIG5leHRDYWxsZWUgPSB0aGlzLnJ1bkFsbFN0ZXBzLmJpbmQodGhp
cyk7CisgICAgdGhpcy5zdGVwKHN0YXJ0aW5nU3RhdGUpLnRoZW4oZnVuY3Rpb24obmV4dFN0YXRl
KSB7CisgICAgICAgIGlmIChuZXh0U3RhdGUpCisgICAgICAgICAgICBuZXh0Q2FsbGVlKG5leHRT
dGF0ZSk7CisgICAgfSk7Cit9CisKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUucnVuTXVsdGlw
bGVJdGVyYXRpb25zID0gZnVuY3Rpb24oaXRlcmF0aW9uQ291bnQpIHsKKyAgICB2YXIgc2VsZiA9
IHRoaXM7CisgICAgdmFyIGN1cnJlbnRJdGVyYXRpb24gPSAwOworCisgICAgdGhpcy5fcnVuTmV4
dEl0ZXJhdGlvbiA9IGZ1bmN0aW9uKCkgeworICAgICAgICBjdXJyZW50SXRlcmF0aW9uKys7Cisg
ICAgICAgIGlmIChjdXJyZW50SXRlcmF0aW9uIDwgaXRlcmF0aW9uQ291bnQpCisgICAgICAgICAg
ICBzZWxmLnJ1bkFsbFN0ZXBzKCk7CisgICAgICAgIGVsc2UgaWYgKHRoaXMuX2NsaWVudCAmJiB0
aGlzLl9jbGllbnQuZGlkRmluaXNoTGFzdEl0ZXJhdGlvbikKKyAgICAgICAgICAgIHNlbGYuX2Ns
aWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0aW9uKCk7CisgICAgfQorCisgICAgaWYgKHNlbGYuX2Ns
aWVudCAmJiBzZWxmLl9jbGllbnQud2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb24pCisgICAgICAgIHNl
bGYuX2NsaWVudC53aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbihpdGVyYXRpb25Db3VudCk7CisKKyAg
ICBzZWxmLnJ1bkFsbFN0ZXBzKCk7Cit9CisKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX2Zp
bmFsaXplID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5fcmVtb3ZlRnJhbWUoKTsKKyAgICAgICAg
CisgICAgaWYgKHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGllbnQuZGlkUnVuU3VpdGVzKQorICAg
ICAgICB0aGlzLl9jbGllbnQuZGlkUnVuU3VpdGVzKHRoaXMuX3N1aXRlc1NhbXBsZXJzKTsKKwor
ICAgIGlmICh0aGlzLl9ydW5OZXh0SXRlcmF0aW9uKQorICAgICAgICB0aGlzLl9ydW5OZXh0SXRl
cmF0aW9uKCk7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jl
c291cmNlcy9ncmFwaC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvcnVubmVyL3Jlc291cmNlcy9ncmFwaC5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2dyYXBoLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTQxIEBACitmdW5jdGlvbiBncmFwaChzZWxlY3Rvciwgc2l6ZSwgbWFyZ2lu
cywgYXhpc2VzLCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQpIHsKKworICAgIHZhciBlbGVt
ZW50ID0gZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOworICAgIHdo
aWxlIChlbGVtZW50LmZpcnN0Q2hpbGQpCisgICAgICAgIGVsZW1lbnQucmVtb3ZlQ2hpbGQoZWxl
bWVudC5maXJzdENoaWxkKTsKKworICAgIHZhciB4ID0gZDMuc2NhbGUubGluZWFyKCkKKyAgICAg
ICAgICAgIC5yYW5nZShbMCwgc2l6ZS53aWR0aCgpXSkKKyAgICAgICAgICAgIC5kb21haW4oZDMu
ZXh0ZW50KHNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudGltZU9mZnNldDsgfSkpOyAg
ICAgICAgICAgIAorCisgICAgdmFyIHlMZWZ0ID0gZDMuc2NhbGUubGluZWFyKCkKKyAgICAgICAg
ICAgIC5yYW5nZShbc2l6ZS5oZWlnaHQoKSwgMF0pCisgICAgICAgICAgICAuZG9tYWluKFswLCBk
My5tYXgoc2FtcGxlcywgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC52YWx1ZXNbMF07IH0pXSk7CisK
KyAgICB2YXIgeVJpZ2h0ID0gZDMuc2NhbGUubGluZWFyKCkKKyAgICAgICAgICAgIC5yYW5nZShb
c2l6ZS5oZWlnaHQoKSwgMF0pCisgICAgICAgICAgICAuZG9tYWluKFswLCBkMy5tYXgoc2FtcGxl
cywgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC52YWx1ZXNbMV07IH0pXSk7CisKKyAgICB2YXIgeEF4
aXMgPSBkMy5zdmcuYXhpcygpCisgICAgICAgICAgICAuc2NhbGUoeCkKKyAgICAgICAgICAgIC5v
cmllbnQoImJvdHRvbSIpOworCisgICAgdmFyIHlBeGlzTGVmdCA9IGQzLnN2Zy5heGlzKCkKKyAg
ICAgICAgICAgIC5zY2FsZSh5TGVmdCkKKyAgICAgICAgICAgIC5vcmllbnQoImxlZnQiKTsKKwor
ICAgIHZhciB5QXhpc1JpZ2h0ID0gZDMuc3ZnLmF4aXMoKQorICAgICAgICAgICAgLnNjYWxlKHlS
aWdodCkKKyAgICAgICAgICAgIC5vcmllbnQoInJpZ2h0Iik7CisKKyAgICB2YXIgbGluZUxlZnQg
PSBkMy5zdmcubGluZSgpCisgICAgICAgICAgICAueChmdW5jdGlvbihkKSB7IHJldHVybiB4KGQu
dGltZU9mZnNldCk7IH0pCisgICAgICAgICAgICAueShmdW5jdGlvbihkKSB7IHJldHVybiB5TGVm
dChkLnZhbHVlc1swXSk7IH0pOworCisgICAgdmFyIGxpbmVSaWdodCA9IGQzLnN2Zy5saW5lKCkK
KyAgICAgICAgICAgIC54KGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHgoZC50aW1lT2Zmc2V0KTsgfSkK
KyAgICAgICAgICAgIC55KGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHlSaWdodChkLnZhbHVlc1sxXSk7
IH0pOworCisgICAgc2FtcGxlcy5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsKKyAgICAgICAgZC50aW1l
T2Zmc2V0ID0gK2QudGltZU9mZnNldDsKKyAgICAgICAgZC52YWx1ZXNbMF0gPSArZC52YWx1ZXNb
MF07CisgICAgICAgIGQudmFsdWVzWzFdID0gK2QudmFsdWVzWzFdOyAgICAgICAgCisgICAgfSk7
ICAgIAorCisgICAgdmFyIHNhbXBsZWRTYW1wbGVzID0gc2FtcGxlcy5maWx0ZXIoZnVuY3Rpb24o
ZCkgeworICAgICAgICByZXR1cm4gZC50aW1lT2Zmc2V0ID49IHNhbXBsaW5nVGltZU9mZnNldDsK
KyAgICB9KTsKKyAgICAKKyAgICB2YXIgbWVhbkxlZnQgPSBkMy5tZWFuKHNhbXBsZWRTYW1wbGVz
LCBmdW5jdGlvbihkKSB7CisgICAgICAgIHJldHVybiArZC52YWx1ZXNbMF07CisgICAgfSk7CisK
KyAgICB2YXIgbWVhblJpZ2h0ID0gZDMubWVhbihzYW1wbGVkU2FtcGxlcywgZnVuY3Rpb24oZCkg
eworICAgICAgICByZXR1cm4gK2QudmFsdWVzWzFdOworICAgIH0pOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAorICAgIHZhciBzdmcgPSBkMy5zZWxlY3Qoc2VsZWN0b3IpLmFwcGVuZCgi
c3ZnIikKKyAgICAgICAgLmF0dHIoIndpZHRoIiwgc2l6ZS53aWR0aCgpICsgbWFyZ2lucy5sZWZ0
ICsgbWFyZ2lucy5yaWdodCkKKyAgICAgICAgLmF0dHIoImhlaWdodCIsIHNpemUuaGVpZ2h0KCkg
KyBtYXJnaW5zLnRvcCArIG1hcmdpbnMuYm90dG9tKQorICAgICAgICAuYXBwZW5kKCJnIikKKyAg
ICAgICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAidHJhbnNsYXRlKCIgKyBtYXJnaW5zLmxlZnQg
KyAiLCIgKyBtYXJnaW5zLnRvcCArICIpIik7CisKKyAgICAvLyB4LWF4aXMKKyAgICBzdmcuYXBw
ZW5kKCJnIikKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgInggYXhpcyIpCisgICAgICAgIC5hdHRy
KCJmaWxsIiwgInJnYigyMzUsIDIzNSwgMjM1KSIpCisgICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0i
LCAidHJhbnNsYXRlKDAsIiArIHNpemUuaGVpZ2h0KCkgKyAiKSIpCisgICAgICAgIC5jYWxsKHhB
eGlzKQorICAgICAgICAuYXBwZW5kKCJ0ZXh0IikKKyAgICAgICAgICAgIC5hdHRyKCJjbGFzcyIs
ICJsYWJlbCIpCisgICAgICAgICAgICAuYXR0cigieCIsIHNpemUud2lkdGgoKSkKKyAgICAgICAg
ICAgIC5hdHRyKCJ5IiwgLTYpCisgICAgICAgICAgICAuYXR0cigiZmlsbCIsICJyZ2IoMjM1LCAy
MzUsIDIzNSkiKQorICAgICAgICAgICAgLnN0eWxlKCJ0ZXh0LWFuY2hvciIsICJlbmQiKQorICAg
ICAgICAgICAgLnRleHQoInRpbWUiKTsKKyAgICAgICAgICAgICAgICAgCisgICAgLy8geUxlZnQt
YXhpcworICAgIHN2Zy5hcHBlbmQoImciKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAieSBheGlz
IikKKyAgICAgICAgLmF0dHIoImZpbGwiLCAic3RlZWxibHVlIikKKyAgICAgICAgLmNhbGwoeUF4
aXNMZWZ0KQorICAgICAgICAuYXBwZW5kKCJ0ZXh0IikKKyAgICAgICAgICAgIC5hdHRyKCJjbGFz
cyIsICJsYWJlbCIpCisgICAgICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInJvdGF0ZSgtOTAp
IikKKyAgICAgICAgICAgIC5hdHRyKCJ5IiwgNikKKyAgICAgICAgICAgIC5hdHRyKCJmaWxsIiwg
InN0ZWVsYmx1ZSIpCisgICAgICAgICAgICAuYXR0cigiZHkiLCAiLjcxZW0iKQorICAgICAgICAg
ICAgLnN0eWxlKCJ0ZXh0LWFuY2hvciIsICJlbmQiKQorICAgICAgICAgICAgLnRleHQoYXhpc2Vz
WzBdKTsKKworICAgIC8vIHlSaWdodC1heGlzCisgICAgc3ZnLmFwcGVuZCgiZyIpCisgICAgICAg
IC5hdHRyKCJjbGFzcyIsICJ5IGF4aXMiKQorICAgICAgICAuYXR0cigiZmlsbCIsICJyZWQiKQor
ICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiICsgc2l6ZS53aWR0aCgpICsg
IiwgMCkiKQorICAgICAgICAuY2FsbCh5QXhpc1JpZ2h0KQorICAgICAgICAuYXBwZW5kKCJ0ZXh0
IikKKyAgICAgICAgICAgIC5hdHRyKCJjbGFzcyIsICJsYWJlbCIpCisgICAgICAgICAgICAuYXR0
cigidHJhbnNmb3JtIiwgInJvdGF0ZSgtOTApIikKKyAgICAgICAgICAgIC5hdHRyKCJ5IiwgNikK
KyAgICAgICAgICAgIC5hdHRyKCJmaWxsIiwgInJlZCIpCisgICAgICAgICAgICAuYXR0cigiZHki
LCAiLjcxZW0iKQorICAgICAgICAgICAgLnN0eWxlKCJ0ZXh0LWFuY2hvciIsICJlbmQiKQorICAg
ICAgICAgICAgLnRleHQoYXhpc2VzWzFdKTsKKworICAgIC8vIGxlZnQtbWVhbgorICAgIHN2Zy5h
cHBlbmQoInN2ZzpsaW5lIikKKyAgICAgICAgLmF0dHIoIngxIiwgeCgwKSkKKyAgICAgICAgLmF0
dHIoIngyIiwgc2l6ZS53aWR0aCgpKQorICAgICAgICAuYXR0cigieTEiLCB5TGVmdChtZWFuTGVm
dCkpCisgICAgICAgIC5hdHRyKCJ5MiIsIHlMZWZ0KG1lYW5MZWZ0KSkKKyAgICAgICAgLmF0dHIo
ImNsYXNzIiwgImxlZnQtbWVhbiIpOworCisgICAgLy8gcmlnaHQtbWVhbgorICAgIHN2Zy5hcHBl
bmQoInN2ZzpsaW5lIikKKyAgICAgICAgLmF0dHIoIngxIiwgeCgwKSkKKyAgICAgICAgLmF0dHIo
IngyIiwgc2l6ZS53aWR0aCgpKQorICAgICAgICAuYXR0cigieTEiLCB5UmlnaHQobWVhblJpZ2h0
KSkKKyAgICAgICAgLmF0dHIoInkyIiwgeVJpZ2h0KG1lYW5SaWdodCkpCisgICAgICAgIC5hdHRy
KCJjbGFzcyIsICJyaWdodC1tZWFuIik7ICAgICAgICAKKworICAgIC8vIHNhbXBsaW5nVGltZU9m
ZnNldAorICAgIHN2Zy5hcHBlbmQoImxpbmUiKQorICAgICAgICAuYXR0cigieDEiLCB4KHNhbXBs
aW5nVGltZU9mZnNldCkpCisgICAgICAgIC5hdHRyKCJ4MiIsIHgoc2FtcGxpbmdUaW1lT2Zmc2V0
KSkKKyAgICAgICAgLmF0dHIoInkxIiwgeUxlZnQoMCkpCisgICAgICAgIC5hdHRyKCJ5MiIsIHlM
ZWZ0KHlBeGlzTGVmdC5zY2FsZSgpLmRvbWFpbigpWzFdKSkKKyAgICAgICAgLmF0dHIoImNsYXNz
IiwgInNtYXBsZS10aW1lIik7CisKKyAgICAvLyBsZWZ0LXNhbXBsZXMKKyAgICBzdmcuYXBwZW5k
KCJwYXRoIikKKyAgICAgICAgLmRhdHVtKHNhbXBsZXMpCisgICAgICAgIC5hdHRyKCJjbGFzcyIs
ICJsZWZ0LXNhbXBsZXMiKQorICAgICAgICAuYXR0cigiZCIsIGxpbmVMZWZ0KTsKKyAgICAgICAg
CisgICAgLy8gcmlnaHQtc2FtcGxlcworICAgIHN2Zy5hcHBlbmQoInBhdGgiKQorICAgICAgICAu
ZGF0dW0oc2FtcGxlcykKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgInJpZ2h0LXNhbXBsZXMiKQor
ICAgICAgICAuYXR0cigiZCIsIGxpbmVSaWdodCk7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy90ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy90ZXN0cy5qcwkocmV2aXNp
b24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rl
c3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQxIEBACit2YXIgVGl0bGVzID0gWwor
ICAgIHsKKyAgICAgICAgdGV4dCA6ICJUZXN0IE5hbWUiLAorICAgICAgICB3aWR0aCA6IDI1LAor
ICAgICAgICBjaGlsZHJlbjogW10KKyAgICB9LCB7CisgICAgICAgIHRleHQgOiAiQW5pbWF0ZWQg
SXRlbXMiLAorICAgICAgICB3aWR0aCA6IDMxLAorICAgICAgICBjaGlsZHJlbjogWworICAgICAg
ICAgICAgeyB0ZXh0OiAgICJBdmcuIiwgd2lkdGg6IDYsIGNoaWxkcmVuOiBbXSB9LAorICAgICAg
ICAgICAgeyB0ZXh0OiAiXHUwMGIxIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAorICAgICAg
ICAgICAgeyB0ZXh0OiAgICJXLjUlIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAorICAgICAg
ICAgICAgeyB0ZXh0OiAgICJTdGQuIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAorICAgICAg
ICAgICAgeyB0ZXh0OiAgICAgICIlIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAorICAgICAg
ICBdCisgICAgfSwgeworICAgICAgICB0ZXh0IDogIkZQUyIsCisgICAgICAgIHdpZHRoIDogMzEs
CisgICAgICAgIGNoaWxkcmVuOiBbCisgICAgICAgICAgICB7IHRleHQ6ICAgIkF2Zy4iLCB3aWR0
aDogNiwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICJcdTAwYjEiLCB3aWR0
aDogNSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICAgIlcuNSUiLCB3aWR0
aDogNSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICAgIlN0ZC4iLCB3aWR0
aDogNSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICAgICAgIiUiLCB3aWR0
aDogNSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgIF0KKyAgICB9LCB7CisgICAgICAgIHRleHQg
OiAiU2NvcmUiLAorICAgICAgICB3aWR0aCA6IDYsCisgICAgICAgIGNoaWxkcmVuOiBbXQorICAg
IH0sIHsKKyAgICAgICAgdGV4dCA6ICJTYW1wbGVzIiwKKyAgICAgICAgd2lkdGggOiA3LAorICAg
ICAgICBjaGlsZHJlbjogW10KKyAgICB9CitdOworCit2YXIgU3VpdGVzID0gW107CisKK1N1aXRl
cy5wdXNoKHsKKyAgICBuYW1lOiAiSFRNTCBCb3VuY2luZyBQYXJ0aWNsZXMiLAorICAgIHByZXBh
cmU6IGZ1bmN0aW9uKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSB7Cisg
ICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoIiNzdGFnZSIpLnRoZW4oZnVuY3Rp
b24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsK
KyAgICB9LCAgCisgICAgcnVuOiBmdW5jdGlvbihjb250ZW50V2luZG93LCB0ZXN0LCBvcHRpb25z
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRXaW5k
b3cucnVuQmVuY2htYXJrKHRoaXMsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0Jhcik7CisgICAgfSwKKyAgICB0aXRsZXMgOiBUaXRsZXMsCisgICAgdGVzdHM6IFsKKyAgICAg
ICAgeyAKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3Vu
Y2luZy1zaGFwZXMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFydGlj
bGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUiLAorICAgICAgICAgICAg
bmFtZTogImJvdW5jaW5nIGNpcmNsZXMiCisgICAgICAgIH0sIHsgCisgICAgICAgICAgICB1cmw6
ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc2hhcGVzLmh0bWw/Z2Fpbj0x
JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9NDAmcGFydGljbGVIZWln
aHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAorICAgICAgICAgICAgbmFtZTogImJvdW5jaW5n
IGNsaXBwZWQgcmVjdHMiCisgICAgICAgIH0sIHsgCisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc2hhcGVzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0
PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hh
cGU9Y2lyY2xlJmZpbGw9Z3JhZGllbnQiLAorICAgICAgICAgICAgbmFtZTogImJvdW5jaW5nIGdy
YWRpZW50IGNpcmNsZXMiCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1pbWFnZXMuaHRtbD9nYWluPTAuNCZhZGRMaW1p
dD01JnJlbW92ZUxpbWl0PTImcGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFn
ZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKKyAgICAgICAgICAgIG5hbWU6ICJib3Vu
Y2luZyBTVkcgaW1hZ2VzIgorICAgICAgICB9LCB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctaW1hZ2VzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0
PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1h
Z2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCisgICAgICAgICAgICBuYW1lOiAiYm91
bmNpbmcgUE5HIGltYWdlcyIKKyAgICAgICAgfSwgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVz
dHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1p
dD0xMDAiLAorICAgICAgICAgICAgbmFtZTogImxheWVyaW5nIHRleHQiCisgICAgICAgIH0KKyAg
ICBdCit9KTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICJDYW52YXMgQm91bmNpbmcgUGFy
dGljbGVzIiwKKyAgICBwcmVwYXJlOiBmdW5jdGlvbihydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNv
bnRlbnREb2N1bWVudCkgeworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCIj
c3RhZ2UiKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICByZXR1cm4gZWxl
bWVudDsKKyAgICAgICAgfSk7CisgICAgfSwgIAorICAgIHJ1bjogZnVuY3Rpb24oY29udGVudFdp
bmRvdywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgICAg
IHJldHVybiBjb250ZW50V2luZG93LnJ1bkJlbmNobWFyayh0aGlzLCB0ZXN0LCBvcHRpb25zLCBy
ZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIH0sCisgICAgdGl0bGVzIDogVGl0bGVzLAor
ICAgIHRlc3RzOiBbCisgICAgICAgIHsgCisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP2dhaW49NCZhZGRMaW1p
dD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEy
JnNoYXBlPWNpcmNsZSIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGNpcmNs
ZXMiCisgICAgICAgIH0sIHsgCisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAm
cmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xlSGVpZ2h0PTQwJnNoYXBl
PXJlY3QmY2xpcD1zdGFyIiwKKyAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgY2xp
cHBlZCByZWN0cyIKKyAgICAgICAgfSwgeyAKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw/Z2Fpbj00JmFkZExp
bWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAwJnBhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9
NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3JhZGllbnQiLAorICAgICAgICAgICAgbmFtZTogImNhbnZh
cyBib3VuY2luZyBncmFkaWVudCBjaXJjbGVzIgorICAgICAgICB9LCB7IAorICAgICAgICAgICAg
dXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMu
aHRtbD9nYWluPTAuNCZhZGRMaW1pdD01JnJlbW92ZUxpbWl0PTEmcGFydGljbGVXaWR0aD04MCZw
YXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKKyAg
ICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgU1ZHIGltYWdlcyIKKyAgICAgICAgfSwg
eworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5n
LWNhbnZhcy1pbWFnZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwMCZyZW1vdmVMaW1pdD0xMDAw
JnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2Vz
L3lpbi15YW5nLnBuZyIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIFBORyBp
bWFnZXMiCisgICAgICAgIH0KKyAgICBdCit9KTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6
ICJTVkcgQm91bmNpbmcgUGFydGljbGVzIiwKKyAgICBwcmVwYXJlOiBmdW5jdGlvbihydW5uZXIs
IGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAgICByZXR1cm4gcnVubmVy
LndhaXRGb3JFbGVtZW50KCIjc3RhZ2UiKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAg
ICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAgfSwgIAorICAgIHJ1bjog
ZnVuY3Rpb24oY29udGVudFdpbmRvdywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dy
ZXNzQmFyKSB7CisgICAgICAgIHJldHVybiBjb250ZW50V2luZG93LnJ1bkJlbmNobWFyayh0aGlz
LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIH0sCisgICAg
dGl0bGVzIDogVGl0bGVzLAorICAgIHRlc3RzOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgIHVy
bDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/
Z2Fpbj02JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAwJnBhcnRpY2xlV2lkdGg9MTImcGFy
dGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKKyAgICAgICAgICAgIG5hbWU6ICJTVkcgYm91
bmNpbmcgY2lyY2xlcyIsCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/Z2Fpbj0wLjYmYWRk
TGltaXQ9MTAmcmVtb3ZlTGltaXQ9MSZwYXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xlSGVpZ2h0PTQw
JnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKKyAgICAgICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcg
Y2xpcHBlZCByZWN0cyIsCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/Z2Fpbj0wLjgmYWRk
TGltaXQ9MTAmcmVtb3ZlTGltaXQ9NCZwYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUw
JnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRpZW50IiwKKyAgICAgICAgICAgIG5hbWU6ICJTVkcgYm91
bmNpbmcgZ3JhZGllbnQgY2lyY2xlcyIKKyAgICAgICAgfSwgeworICAgICAgICAgICAgdXJsOiAi
Li4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbD9nYWlu
PTAuNCZhZGRMaW1pdD01JnJlbW92ZUxpbWl0PTImcGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhl
aWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKKyAgICAgICAgICAg
IG5hbWU6ICJTVkcgYm91bmNpbmcgU1ZHIGltYWdlcyIKKyAgICAgICAgfSwgeworICAgICAgICAg
ICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMu
aHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFydGljbGVXaWR0aD04MCZw
YXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcucG5nIiwKKyAg
ICAgICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcgUE5HIGltYWdlcyIKKyAgICAgICAgfQorICAg
IF0KK30pOworCitmdW5jdGlvbiBzdWl0ZUZyb21OYW1lKG5hbWUpIHsKKyAgICByZXR1cm4gU3Vp
dGVzLmZpbmQoZnVuY3Rpb24oc3VpdGUpIHsgcmV0dXJuIHN1aXRlLm5hbWUgPT0gbmFtZTsgfSk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RGcm9tTmFtZShzdWl0ZSwgbmFtZSkgeworICAgIHJldHVybiBz
dWl0ZS50ZXN0cy5maW5kKGZ1bmN0aW9uKHRlc3QpIHsgcmV0dXJuIHRlc3QubmFtZSA9PSBuYW1l
OyB9KTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctY2FudmFzLWltYWdlcy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2Vz
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAgaW1nLmhpZGRlbiB7CisgICAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CisgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CisgICAgfQorICA8L3N0eWxl
PgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNv
dXJjZXMvYmVuY2htYXJrLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxn
b3JpdGhtLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdGF0
aXN0aWNzLmpzIj48L3NjcmlwdD4gIAorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL21h
aW4uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwv
c2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5qcyI+PC9zY3Jp
cHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4K
KyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+ICAKKyAgPHNj
cmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgorICA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+CisgIDxpbWcgY2xhc3M9ImhpZGRlbiIgc3JjPSIuLi9yZXNvdXJj
ZXMveWluLXlhbmcuc3ZnIj4KKyAgPGltZyBjbGFzcz0iaGlkZGVuIiBzcmM9Ii4uL3Jlc291cmNl
cy95aW4teWFuZy5wbmciPgorICA8Y2FudmFzIGlkPSJzdGFnZSI+PC9jYW52YXM+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5j
aW5nLWNhbnZhcy1zaGFwZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBl
cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIg
aHJlZj0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5jc3MiPgorICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+ICAKKyAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9iZW5jaG1h
cmsuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5q
cyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2Ny
aXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9z
Y3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGNhbnZhcyBpZD0ic3RhZ2UiPjwvY2Fu
dmFzPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1pbWFnZXMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L2JvdW5jaW5nLWltYWdlcy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1pbWFnZXMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+CisgIDxzdHlsZT4KKyAgICBpbWcgeworICAgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgIH0KKyAgPC9zdHlsZT4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2Nz
cyIgaHJlZj0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5jc3MiPgorICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+ICAKKyAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9iZW5j
aG1hcmsuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGll
cy5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwv
c2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+
PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctaW1hZ2VzLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8ZGl2IGlkPSJzdGFnZSI+PC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXNoYXBlcy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
c2hhcGVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXNoYXBlcy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
PHN0eWxlPgorICAgIC5jaXJjbGUgeworICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAg
YmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsKKyAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSA1MCU7
CisgICAgfQorICAgIC5yZWN0IHsKKyAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgIGJh
Y2tncm91bmQtY29sb3I6ICMwMDAwMDA7CisgICAgfQorICAgIC5zdGFyIHsKKyAgICAgIC13ZWJr
aXQtY2xpcC1wYXRoOiBwb2x5Z29uKDUwJSAwJSwgMzglIDM4JSwgMCUgMzglLCAzMCUgNjAlLCAx
OCUgMTAwJSwgNTAlIDc1JSwgODIlIDEwMCUsIDcwJSA2MCUsIDEwMCUgMzglLCA2MiUgMzglKTsK
KyAgICAgIC1tcy1jbGlwLXBhdGg6IHBvbHlnb24oNTAlIDAlLCAzOCUgMzglLCAwJSAzOCUsIDMw
JSA2MCUsIDE4JSAxMDAlLCA1MCUgNzUlLCA4MiUgMTAwJSwgNzAlIDYwJSwgMTAwJSAzOCUsIDYy
JSAzOCUpOyAgCisgICAgICBjbGlwLXBhdGg6IHBvbHlnb24oNTAlIDAlLCAzOCUgMzglLCAwJSAz
OCUsIDMwJSA2MCUsIDE4JSAxMDAlLCA1MCUgNzUlLCA4MiUgMTAwJSwgNzAlIDYwJSwgMTAwJSAz
OCUsIDYyJSAzOCUpOworICAgIH0KKyAgPC9zdHlsZT4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5jc3MiPgorICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CisgIDxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+ICAKKyAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9iZW5jaG1hcmsuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvc3RhZ2UuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5n
LXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNp
bmctc2hhcGVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8ZGl2IGlkPSJzdGFn
ZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
c3ZnLWltYWdlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0
ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5jc3MiPgorICA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+ICAKKyAgPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9iZW5jaG1hcmsuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0
aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2Uu
anMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xl
cy5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctc3ZnLWlt
YWdlcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHN2ZyBpZD0ic3RhZ2UiPjwv
c3ZnPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1z
aGFwZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9j
c3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL21hdGguanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2JlbmNo
bWFyay5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVz
LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9z
Y3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48
L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8c3ZnIGlkPSJzdGFnZSI+PC9zdmc+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMJKHJldmlzaW9uIDAp
CisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsODIgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzSW1hZ2Uoc3RhZ2UpIHsKKyAgICBC
b3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworICAgIHRoaXMuX2NvbnRleHQgPSBz
dGFnZS5jb250ZXh0OworICAgIHRoaXMuX2ltYWdlRWxlbWVudCA9IHN0YWdlLmltYWdlRWxlbWVu
dDsKK30KKworQm91bmNpbmdDYW52YXNJbWFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJv
dW5jaW5nUGFydGljbGUucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNJbWFnZTsKKworQm91bmNpbmdDYW52YXNJbWFn
ZS5wcm90b3R5cGUuX2RyYXcgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgY2VudGVyID0gdGhpcy5j
ZW50ZXIoKTsKKworICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgpOworICAgIHRoaXMuX2NvbnRleHQu
dHJhbnNsYXRlKGNlbnRlci54LCBjZW50ZXIueSk7CisgICAgdGhpcy5fY29udGV4dC5yb3RhdGUo
dGhpcy5fcm90YXRlci5kZWdyZWUoKSAqIE1hdGguUEkgLyAxODApOworICAgIHRoaXMuX2NvbnRl
eHQudHJhbnNsYXRlKC10aGlzLl9zaXplLnggLyAyLCAtdGhpcy5fc2l6ZS55IC8gMik7CisgICAg
CisgICAgdGhpcy5fY29udGV4dC5kcmF3SW1hZ2UodGhpcy5faW1hZ2VFbGVtZW50LCAwLCAwLCB0
aGlzLl9zaXplLngsIHRoaXMuX3NpemUueSk7CisgICAgdGhpcy5fY29udGV4dC5yZXN0b3JlKCk7
Cit9CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0
aW1lRGVsdGEpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwo
dGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlzLl9kcmF3KCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5j
aW5nQ2FudmFzSW1hZ2VzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykgeworICAgIEJvdW5jaW5nUGFy
dGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0aGlzLmNvbnRl
eHQgPSB0aGlzLmVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICB2YXIgaW1hZ2VTcmMgPSBv
cHRpb25zWyJpbWFnZVNyYyJdIHx8ICJyZXNvdXJjZXMveWluLXlhbmcuc3ZnIjsKKyAgICAKKyAg
ICB2YXIgaW1hZ2VFbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImhp
ZGRlbiIpOworICAgIGNvbnNvbGUuYXNzZXJ0KGltYWdlRWxlbWVudHMubGVuZ3RoKTsKKyAgICAg
ICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbWFnZUVsZW1lbnRzLmxlbmd0aDsgKytpKSB7
CisgICAgICAgIGlmIChpbWFnZUVsZW1lbnRzW2ldLmdldEF0dHJpYnV0ZSgic3JjIikgPT0gaW1h
Z2VTcmMpIHsKKyAgICAgICAgICAgIHRoaXMuaW1hZ2VFbGVtZW50ID0gaW1hZ2VFbGVtZW50c1tp
XTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKKyAgICB9CisKKyAgICB0aGlzLmltYWdlRWxlbWVudCA9IHRoaXMuaW1hZ2VF
bGVtZW50IHx8IGltYWdlRWxlbWVudHNbMF07Cit9CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzU3Rh
Z2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3Rv
dHlwZSk7CitCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2U7CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2Uu
cHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5ldyBC
b3VuY2luZ0NhbnZhc0ltYWdlKHRoaXMpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc0lt
YWdlc0FuaW1hdG9yKGJlbmNobWFyaykgeworICAgIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3Iu
Y2FsbCh0aGlzLCBiZW5jaG1hcmspOworICAgIHRoaXMuX2NvbnRleHQgPSBiZW5jaG1hcmsuX3N0
YWdlLmNvbnRleHQ7Cit9CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0b3IucHJvdG90eXBl
ID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZSk7CitC
b3VuY2luZ0NhbnZhc0ltYWdlc0FuaW1hdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5j
aW5nQ2FudmFzSW1hZ2VzQW5pbWF0b3I7CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0b3Iu
cHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLl9jb250ZXh0LmNsZWFy
UmVjdCgwLCAwLCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUoKS54LCB0aGlzLl9iZW5jaG1h
cmsuX3N0YWdlLnNpemUoKS55KTsKKyAgICByZXR1cm4gQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRv
ci5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0Nh
bnZhc0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHBy
b2dyZXNzQmFyKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBz
dWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91
bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3Vu
Y2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNJbWFnZXNC
ZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNJbWFnZXNCZW5j
aG1hcms7CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVT
dGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFz
SW1hZ2VzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK0JvdW5jaW5nQ2FudmFz
SW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvciA9IGZ1bmN0aW9uKCkgewor
ICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNJbWFnZXNBbmltYXRvcih0aGlzKTsKK30KKwor
d2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgd2luZG93LmJlbmNobWFyayA9
IG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZh
cy1zaGFwZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5q
cwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxNDIgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzU2hhcGUo
c3RhZ2UpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworICAgIHRo
aXMuX3NoYXBlID0gc3RhZ2Uuc2hhcGU7CisgICAgdGhpcy5fZmlsbCA9IHN0YWdlLmZpbGw7Cisg
ICAgdGhpcy5fY2xpcCA9IHN0YWdlLmNsaXA7CisgICAgdGhpcy5fY29udGV4dCA9IHN0YWdlLmNv
bnRleHQ7CisgICAgdGhpcy5fY29sb3IwID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsKKyAgICB0aGlz
Ll9jb2xvcjEgPSBzdGFnZS5yYW5kb21Db2xvcigpOyAgICAKK30KKworQm91bmNpbmdDYW52YXNT
aGFwZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBl
KTsKK0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdD
YW52YXNTaGFwZTsKKworQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUuX2RyYXcgPSBmdW5j
dGlvbigpIHsKKyAgICAKKyAgICB0aGlzLl9jb250ZXh0LnNhdmUoKTsKKyAgICB0aGlzLl9jb250
ZXh0LnRyYW5zbGF0ZSh0aGlzLl9wb3NpdGlvbi54LCB0aGlzLl9wb3NpdGlvbi55KTsKKworICAg
IC8vIFNldHRpbmcgdGhlIGZpbGwgc3R5bGUKKyAgICBzd2l0Y2ggKHRoaXMuX2ZpbGwpIHsKKyAg
ICBjYXNlICJzb2xpZCI6CisgICAgZGVmYXVsdDoKKyAgICAgICAgdGhpcy5fY29udGV4dC5maWxs
U3R5bGUgPSB0aGlzLl9jb2xvcjA7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSAiZ3JhZGll
bnQiOgorICAgICAgICB2YXIgZ3JhZGllbnQgPSB0aGlzLl9jb250ZXh0LmNyZWF0ZUxpbmVhckdy
YWRpZW50KDAsIDAsIHRoaXMuX3NpemUud2lkdGgoKSwgMCk7CisgICAgICAgIGdyYWRpZW50LmFk
ZENvbG9yU3RvcCgwLCB0aGlzLl9jb2xvcjApOworICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0
b3AoMSwgdGhpcy5fY29sb3IxKTsgCisgICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbFN0eWxlID0g
Z3JhZGllbnQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8vIFJvdGF0aW9uIGFyb3Vu
ZCB0aGUgY2VudGVyCisgICAgaWYgKHRoaXMuX3NoYXBlICE9ICJjaXJjbGUiKSB7CisgICAgICAg
IHRoaXMuX2NvbnRleHQudHJhbnNsYXRlKHRoaXMuX3NpemUueCAvIDIsIHRoaXMuX3NpemUueSAv
IDIpOworICAgICAgICB0aGlzLl9jb250ZXh0LnJvdGF0ZSh0aGlzLl9yb3RhdGVyLmRlZ3JlZSgp
ICogTWF0aC5QSSAvIDE4MCk7CisgICAgICAgIHRoaXMuX2NvbnRleHQudHJhbnNsYXRlKC10aGlz
Ll9zaXplLnggLyAyLCAtdGhpcy5fc2l6ZS55IC8gMik7CisgICAgfQorCisgICAgdmFyIGNsaXBQ
b2ludHMgPSBudWxsOworICAgIAorICAgIHN3aXRjaCAodGhpcy5fY2xpcCkgeworICAgIGNhc2Ug
InN0YXIiOgorICAgICAgICBjbGlwUG9pbnRzID0gIFsKKyAgICAgICAgICAgIG5ldyBQb2ludCgw
LjUwLCAwLjAwKSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgwLjM4LCAwLjM4KSwKKyAgICAgICAg
ICAgIG5ldyBQb2ludCgwLjAwLCAwLjM4KSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgwLjMwLCAw
LjYwKSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgwLjE4LCAxLjAwKSwKKyAgICAgICAgICAgIG5l
dyBQb2ludCgwLjUwLCAwLjc1KSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgwLjgyLCAxLjAwKSwK
KyAgICAgICAgICAgIG5ldyBQb2ludCgwLjcwLCAwLjYwKSwKKyAgICAgICAgICAgIG5ldyBQb2lu
dCgxLjAwLCAwLjM4KSwKKyAgICAgICAgICAgIG5ldyBQb2ludCgwLjYyLCAwLjM4KQorICAgICAg
ICBdOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgaWYgKGNsaXBQb2ludHMpIHsK
KyAgICAgICAgdGhpcy5fY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICAgICAgdmFyIHNlbGYgPSB0
aGlzOworICAgICAgICBjbGlwUG9pbnRzLmZvckVhY2goZnVuY3Rpb24ocG9pbnQsIGluZGV4KSB7
CisgICAgICAgICAgICB2YXIgcG9pbnQgPSBzZWxmLl9zaXplLm11bHRpcGx5KHBvaW50KTsKKyAg
ICAgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAgICAgICAgc2VsZi5fY29udGV4dC5tb3Zl
VG8ocG9pbnQueCwgcG9pbnQueSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
c2VsZi5fY29udGV4dC5saW5lVG8ocG9pbnQueCwgcG9pbnQueSk7CisgICAgICAgIH0pOworICAg
ICAgICB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpOworICAgICAgICB0aGlzLl9jb250ZXh0LmNs
aXAoKTsKKyAgICB9CisKKyAgICAvLyBTaGFwZSBkcmF3aW5nCisgICAgdGhpcy5fY29udGV4dC5i
ZWdpblBhdGgoKTsKKyAgICAKKyAgICBzd2l0Y2ggKHRoaXMuX3NoYXBlKSB7CisgICAgY2FzZSAi
Y2lyY2xlIjoKKyAgICBkZWZhdWx0OgorICAgICAgICB2YXIgY2VudGVyID0gdGhpcy5fc2l6ZS5j
ZW50ZXIoKTsKKyAgICAgICAgdmFyIHJhZGl1cyA9IE1hdGgubWluKHRoaXMuX3NpemUueCwgdGhp
cy5fc2l6ZS55KSAvIDI7CisgICAgICAgIHRoaXMuX2NvbnRleHQuYXJjKGNlbnRlci54LCBjZW50
ZXIueSwgcmFkaXVzLCAwLCBNYXRoLlBJICogMiwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOworICAg
ICAgICAKKyAgICBjYXNlICJyZWN0IjoKKyAgICAgICAgdGhpcy5fY29udGV4dC5yZWN0KDAsIDAs
IHRoaXMuX3NpemUud2lkdGgoKSwgdGhpcy5fc2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICAKKyAgICB0aGlzLl9jb250ZXh0LmZpbGwoKTsKKyAgICB0aGlzLl9jb250
ZXh0LnJlc3RvcmUoKTsKK30KKworQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUuYW5pbWF0
ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkgeworICAgIEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBl
LmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEpOworICAgIHRoaXMuX2RyYXcoKTsKK30KKwor
ZnVuY3Rpb24gQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZShlbGVtZW50LCBvcHRpb25zKSB7Cisg
ICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOwor
ICAgIHRoaXMucGFyc2VTaGFwZVBhcmFtdGVycyhvcHRpb25zKTsKKyAgICB0aGlzLmNvbnRleHQg
PSB0aGlzLmVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKQorfQorCitCb3VuY2luZ0NhbnZhc1NoYXBl
c1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5w
cm90b3R5cGUpOworQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0
b3IgPSBCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlOworCitCb3VuY2luZ0NhbnZhc1NoYXBlc1N0
YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBu
ZXcgQm91bmNpbmdDYW52YXNTaGFwZSh0aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52
YXNTaGFwZXNBbmltYXRvcihiZW5jaG1hcmspIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0FuaW1h
dG9yLmNhbGwodGhpcywgYmVuY2htYXJrKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJr
Ll9zdGFnZS5jb250ZXh0OworfQorCitCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUp
OworQm91bmNpbmdDYW52YXNTaGFwZXNBbmltYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBC
b3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yOworCitCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1h
dG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5fY29udGV4dC5j
bGVhclJlY3QoMCwgMCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplKCkueCwgdGhpcy5fYmVu
Y2htYXJrLl9zdGFnZS5zaXplKCkueSk7CisgICAgcmV0dXJuIEJvdW5jaW5nUGFydGljbGVzQW5p
bWF0b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNp
bmdDYW52YXNTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxl
LCBwcm9ncmVzc0JhcikgeworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhp
cywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisK
K0JvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
Qm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzU2hh
cGVzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzU2hhcGVz
QmVuY2htYXJrOworCitCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3Jl
YXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nh
bnZhc1NoYXBlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCitCb3VuY2luZ0Nh
bnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlvbigp
IHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzQW5pbWF0b3IodGhpcyk7Cit9
CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIHdpbmRvdy5iZW5jaG1h
cmsgPSBuZXcgQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1p
bWFnZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctaW1hZ2VzLmpzCShyZXZpc2lv
biAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9yZXNvdXJjZXMvYm91bmNpbmctaW1hZ2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTUgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nSW1hZ2Uoc3RhZ2UpIHsKKyAgICBCb3VuY2luZ1Bh
cnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworCisgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoID0gdGhp
cy5fc2l6ZS54ICsgInB4IjsKKyAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5f
c2l6ZS55ICsgInB4IjsKKyAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJzcmMiLCBzdGFn
ZS5pbWFnZVNyYyk7CisgICAgCisgICAgc3RhZ2UuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmVs
ZW1lbnQpOworICAgIHRoaXMuX21vdmUoKTsKK30KKworQm91bmNpbmdJbWFnZS5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlKTsKK0JvdW5jaW5nSW1h
Z2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdJbWFnZTsKKworQm91bmNpbmdJbWFn
ZS5wcm90b3R5cGUuX21vdmUgPSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLmVsZW1lbnQuc3R5bGUu
dHJhbnNmb3JtID0gInRyYW5zbGF0ZSgiICsgdGhpcy5fcG9zaXRpb24ueCArICJweCwiICsgdGhp
cy5fcG9zaXRpb24ueSArICJweCkgIiArIHRoaXMuX3JvdGF0ZXIucm90YXRlWigpOworfQorICAg
IAorQm91bmNpbmdJbWFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkg
eworICAgIEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1l
RGVsdGEpOworICAgIHRoaXMuX21vdmUoKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdJbWFnZXNT
dGFnZShlbGVtZW50LCBvcHRpb25zKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxs
KHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgIHRoaXMuaW1hZ2VTcmMgPSBvcHRpb25zWyJp
bWFnZVNyYyJdIHx8ICIuLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIjsKK30KKworQm91bmNpbmdJ
bWFnZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzU3Rh
Z2UucHJvdG90eXBlKTsKK0JvdW5jaW5nSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gQm91bmNpbmdJbWFnZXNTdGFnZTsKKworQm91bmNpbmdJbWFnZXNTdGFnZS5wcm90b3R5cGUu
Y3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nSW1h
Z2UodGhpcyk7Cit9CisKK0JvdW5jaW5nSW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2ls
bEJlUmVtb3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xlKSB7CisgICAgaWYgKHBhcnRpY2xlLmVsZW1l
bnQgJiYgcGFydGljbGUuZWxlbWVudC5wYXJlbnROb2RlICYmIHBhcnRpY2xlLmVsZW1lbnQucGFy
ZW50Tm9kZSA9PSB0aGlzLmVsZW1lbnQpCisgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGls
ZChwYXJ0aWNsZS5lbGVtZW50KTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdJbWFnZXNCZW5jaG1h
cmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAg
IEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nSW1hZ2VzQmVuY2ht
YXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsu
cHJvdG90eXBlKTsKK0JvdW5jaW5nSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciA9IEJvdW5jaW5nSW1hZ2VzQmVuY2htYXJrOworCitCb3VuY2luZ0ltYWdlc0JlbmNobWFyay5w
cm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgcmV0dXJuIG5l
dyBCb3VuY2luZ0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCit3aW5k
b3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICB3aW5kb3cuYmVuY2htYXJrID0gbmV3
IEJvdW5jaW5nSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcwkocmV2aXNpb24gMCkKKysr
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVz
b3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4
MCBAQAorZnVuY3Rpb24gQm91bmNpbmdQYXJ0aWNsZVJvdGF0ZXIocm90YXRlSW50ZXJ2YWwpIHsK
KyAgICB0aGlzLl90aW1lRGVsdGEgPSAwOworICAgIHRoaXMuX3JvdGF0ZUludGVydmFsID0gcm90
YXRlSW50ZXJ2YWw7Cit9CisKK0JvdW5jaW5nUGFydGljbGVSb3RhdGVyLnByb3RvdHlwZSA9IHsK
KyAgICBuZXh0IDogZnVuY3Rpb24odGltZURlbHRhKSB7CisgICAgICAgIHRoaXMuX3RpbWVEZWx0
YSA9ICh0aGlzLl90aW1lRGVsdGEgKyB0aW1lRGVsdGEpICUgdGhpcy5fcm90YXRlSW50ZXJ2YWw7
CisgICAgfSwKKyAgICBkZWdyZWUgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuICgzNjAg
KiB0aGlzLl90aW1lRGVsdGEpIC8gdGhpcy5fcm90YXRlSW50ZXJ2YWw7CisgICAgfSwKKyAgICBy
b3RhdGVaIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiAicm90YXRlWigiICsgTWF0aC5m
bG9vcih0aGlzLmRlZ3JlZSgpKSArICJkZWcpIjsKKyAgICB9LAorICAgIHJvdGF0ZSA6IGZ1bmN0
aW9uKCkgeyAgICAKKyAgICAgICAgcmV0dXJuICJyb3RhdGUoIiArIE1hdGguZmxvb3IodGhpcy5k
ZWdyZWUoKSkgKyAiKSAiOworICAgIH0KK30KKworZnVuY3Rpb24gQm91bmNpbmdQYXJ0aWNsZShz
dGFnZSkgeworICAgIHRoaXMuX3N0YWdlU2l6ZSA9IHN0YWdlLnNpemUoKTsKKyAgICB0aGlzLl9z
aXplID0gc3RhZ2UucGFydGljbGVTaXplOworICAgIAorICAgIHRoaXMuX3Bvc2l0aW9uID0gc3Rh
Z2UucmFuZG9tUG9zaXRpb24oKTsKKyAgICB0aGlzLl9hbmdsZSA9IHN0YWdlLnJhbmRvbUFuZ2xl
KCk7CisgICAgdGhpcy5fdmVsb2NpdHkgPSBzdGFnZS5yYW5kb21WZWxvY2l0eSgpOworICAgIHRo
aXMuX3JvdGF0ZXIgPSBzdGFnZS5yYW5kb21Sb3RhdGVyKCk7Cit9CisKK0JvdW5jaW5nUGFydGlj
bGUucHJvdG90eXBlID0geworICAgIGNlbnRlciA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1
cm4gdGhpcy5fcG9zaXRpb24uYWRkKHRoaXMuX3NpemUuY2VudGVyKCkpOworICAgIH0sCisgICAg
YW5pbWF0ZSA6IGZ1bmN0aW9uKHRpbWVEZWx0YSkgeworICAgICAgICB0aGlzLl9wb3NpdGlvbiA9
IHRoaXMuX3Bvc2l0aW9uLm1vdmUodGhpcy5fYW5nbGUsIHRoaXMuX3ZlbG9jaXR5LCB0aW1lRGVs
dGEpOworICAgICAgICB0aGlzLl9yb3RhdGVyLm5leHQodGltZURlbHRhKTsKKworICAgICAgICAv
LyBJZiBwYXJ0aWNsZSBpcyBnb2luZyB0byBtb3ZlIG9mZiByaWdodCBzaWRlCisgICAgICAgIGlm
ICh0aGlzLl9wb3NpdGlvbi54ICsgdGhpcy5fc2l6ZS54ID4gdGhpcy5fc3RhZ2VTaXplLngpIHsK
KyAgICAgICAgICAgIC8vIElmIGRpcmVjdGlvbiBpcyBFYXN0LVNvdXRoCisgICAgICAgICAgICBp
ZiAodGhpcy5fYW5nbGUgPj0gMCAmJiB0aGlzLl9hbmdsZSA8IE1hdGguUEkgLyAyKQorICAgICAg
ICAgICAgICAgIHRoaXMuX2FuZ2xlID0gTWF0aC5QSSAtIHRoaXMuX2FuZ2xlOworICAgICAgICAg
ICAgLy8gSWYgYW5nbGUgaXMgRWFzdC1Ob3J0aAorICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5f
YW5nbGUgPiBNYXRoLlBJIC8gMiAqIDMpCisgICAgICAgICAgICAgICAgdGhpcy5fYW5nbGUgPSB0
aGlzLl9hbmdsZSAtICh0aGlzLl9hbmdsZSAtIE1hdGguUEkgLyAyICogMykgKiAyOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICAvLyBJZiBwYXJ0aWNsZSBpcyBnb2luZyB0byBtb3ZlIG9m
ZiBsZWZ0IHNpZGUKKyAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uLnggPCAwKSB7CisgICAgICAg
ICAgICAvLyBJZiBhbmdsZSBpcyBXZXN0LVNvdXRoCisgICAgICAgICAgICBpZiAodGhpcy5fYW5n
bGUgPiBNYXRoLlBJIC8gMiAmJiB0aGlzLl9hbmdsZSA8IE1hdGguUEkpCisgICAgICAgICAgICAg
ICAgdGhpcy5fYW5nbGUgPSBNYXRoLlBJIC0gdGhpcy5fYW5nbGU7CisgICAgICAgICAgICAvLyBJ
ZiBhbmdsZSBpcyBXZXN0LU5vcnRoCisgICAgICAgICAgICBlbHNlIGlmICh0aGlzLl9hbmdsZSA+
IE1hdGguUEkgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJIC8gMiAqIDMpCisgICAgICAgICAgICAg
ICAgdGhpcy5fYW5nbGUgPSB0aGlzLl9hbmdsZSArIChNYXRoLlBJIC8gMiAqIDMgLSB0aGlzLl9h
bmdsZSkgKiAyOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcg
dG8gbW92ZSBvZmYgYm90dG9tIHNpZGUKKyAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uLnkgKyB0
aGlzLl9zaXplLnkgPiB0aGlzLl9zdGFnZVNpemUueSkgeworICAgICAgICAgICAgLy8gSWYgZGly
ZWN0aW9uIGlzIFNvdXRoCisgICAgICAgICAgICBpZiAodGhpcy5fYW5nbGUgPiAwICYmIHRoaXMu
X2FuZ2xlIDwgTWF0aC5QSSkKKyAgICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IE1hdGguUEkg
KiAyIC0gdGhpcy5fYW5nbGU7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiBwYXJ0aWNsZSBp
cyBnb2luZyB0byBtb3ZlIG9mZiB0b3Agc2lkZQorICAgICAgICBpZiAodGhpcy5fcG9zaXRpb24u
eSA8IDApIHsKKyAgICAgICAgICAgIC8vIElmIGRpcmVjdGlvbiBpcyBOb3J0aAorICAgICAgICAg
ICAgaWYgKHRoaXMuX2FuZ2xlID4gTWF0aC5QSSAmJiB0aGlzLl9hbmdsZSA8IE1hdGguUEkgKiAy
KQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0gdGhpcy5fYW5nbGUgLSAodGhpcy5fYW5n
bGUgLSBNYXRoLlBJKSAqIDI7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIEJvdW5j
aW5nUGFydGljbGVzQW5pbWF0b3IoYmVuY2htYXJrKSB7CisgICAgQW5pbWF0b3IuY2FsbCh0aGlz
LCBiZW5jaG1hcmspOworfTsKKworQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKEFuaW1hdG9yLnByb3RvdHlwZSk7CitCb3VuY2luZ1BhcnRpY2xlc0Fu
aW1hdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3I7
CisKK0JvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlv
bigpIHsKKyAgICBpZiAoIUFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcykpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLmFuaW1hdGUo
dGhpcy50aW1lRGVsdGEoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIEJvdW5j
aW5nUGFydGljbGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykgeworICAgIFN0YWdlLmNhbGwodGhp
cywgZWxlbWVudCk7CisgICAgCisgICAgdGhpcy5wYXJ0aWNsZVNpemUgPSBuZXcgUG9pbnQocGFy
c2VJbnQob3B0aW9uc1sicGFydGljbGVXaWR0aCJdKSB8fCAxMCwgcGFyc2VJbnQob3B0aW9uc1si
cGFydGljbGVIZWlnaHQiXSkgfHwgMTApOworICAgIHRoaXMuc3ZnTmFtZXNwYWNlID0gImh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIjsKKyAgICB0aGlzLnhsaW5rTmFtZXNwYWNlID0gImh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiOworICAgIAorICAgIHRoaXMuX3BhcnRpY2xlcyA9IFtd
OworCisgICAgdGhpcy5fbWF4VmVsb2NpdHkgPSBwYXJzZUludChvcHRpb25zWyJtYXhWZWxvY2l0
eSJdKSB8fCA1MDA7CisgICAgdGhpcy5fbWF4VmVsb2NpdHkgPSBNYXRoLm1heCh0aGlzLl9tYXhW
ZWxvY2l0eSwgMTAwKTsKK30KKworQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKFN0YWdlLnByb3RvdHlwZSk7CitCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nUGFydGljbGVzU3RhZ2U7CisKK0JvdW5jaW5n
UGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnBhcnNlU2hhcGVQYXJhbXRlcnMgPSBmdW5jdGlvbihv
cHRpb25zKSB7CisgICAgdGhpcy5zaGFwZSA9IG9wdGlvbnNbInNoYXBlIl0gfHwgImNpcmNsZSI7
CisgICAgdGhpcy5maWxsID0gb3B0aW9uc1siZmlsbCJdIHx8ICJzb2xpZCI7CisgICAgdGhpcy5j
bGlwID0gb3B0aW9uc1siY2xpcCJdIHx8ICIiOworfQorCitCb3VuY2luZ1BhcnRpY2xlc1N0YWdl
LnByb3RvdHlwZS5yYW5kb21Sb3RhdGVyID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5ldyBC
b3VuY2luZ1BhcnRpY2xlUm90YXRlcih0aGlzLnJhbmRvbSgxMDAwLCAxMDAwMCkpOworfQorICAg
IAorQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRp
bWVEZWx0YSkgeworICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLl9wYXJ0aWNsZXMubGVuZ3Ro
OyArK2kpCisgICAgICAgIHRoaXMuX3BhcnRpY2xlc1tpXS5hbmltYXRlKHRpbWVEZWx0YSk7Cit9
CisgICAgCitCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24o
Y291bnQpIHsKKyAgICBjb3VudCA9IGNvdW50ID4gMCA/IE1hdGguZmxvb3IoY291bnQpIDogTWF0
aC5jZWlsKGNvdW50KTsKKworICAgIGlmIChjb3VudCA9PSAwKQorICAgICAgICByZXR1cm4gdGhp
cy5fcGFydGljbGVzLmxlbmd0aDsKKworICAgIGlmIChjb3VudCA+IDApIHsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQodHlwZW9mKHRoaXMuY3JlYXRlUGFydGljbGUpID09ICJmdW5jdGlvbiIpOwor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICB0aGlz
Ll9wYXJ0aWNsZXMucHVzaCh0aGlzLmNyZWF0ZVBhcnRpY2xlKCkpOworICAgICAgICByZXR1cm4g
dGhpcy5fcGFydGljbGVzLmxlbmd0aDsKKyAgICB9CisKKyAgICBjb3VudCA9IE1hdGgubWluKC1j
b3VudCwgdGhpcy5fcGFydGljbGVzLmxlbmd0aCk7CisgICAgICAgIAorICAgIGlmICh0eXBlb2Yo
dGhpcy5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpID09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgdGhpcy5wYXJ0aWNsZVdp
bGxCZVJlbW92ZWQodGhpcy5fcGFydGljbGVzW3RoaXMuX3BhcnRpY2xlcy5sZW5ndGggLSAxIC0g
aV0pOworICAgIH0KKworICAgIHRoaXMuX3BhcnRpY2xlcy5zcGxpY2UoLWNvdW50LCBjb3VudCk7
CisgICAgcmV0dXJuIHRoaXMuX3BhcnRpY2xlcy5sZW5ndGg7Cit9CisKK2Z1bmN0aW9uIEJvdW5j
aW5nUGFydGljbGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwg
cHJvZ3Jlc3NCYXIpIHsKKyAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBvcHRpb25zKTsKKworICAg
IHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YWdlIik7CisgICAgZWxl
bWVudC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCk7Cisg
ICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVp
Z2h0KTsKKworICAgIHRoaXMuX3N0YWdlID0gdGhpcy5jcmVhdGVTdGFnZShlbGVtZW50KTsKKyAg
ICB0aGlzLl9hbmltYXRvciA9IHRoaXMuY3JlYXRlQW5pbWF0b3IoKTsKKyAgICB0aGlzLl9zdWl0
ZSA9IHN1aXRlOworICAgIHRoaXMuX3Rlc3QgPSB0ZXN0OworICAgIHRoaXMuX3JlY29yZFRhYmxl
ID0gcmVjb3JkVGFibGU7CisgICAgdGhpcy5fcHJvZ3Jlc3NCYXIgPSBwcm9ncmVzc0JhcjsKK30K
KworQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShC
ZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrOworCitCb3VuY2luZ1Bh
cnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlvbigpIHsK
KyAgICByZXR1cm4gbmV3IEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IodGhpcyk7Cit9CisKK0Jv
dW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQp
IHsKKyAgICByZXR1cm4gdGhpcy5fc3RhZ2UudHVuZShjb3VudCk7Cit9CisKK0JvdW5jaW5nUGFy
dGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVy
biB0aGlzLl9zdGFnZS5jbGVhcigpOworfQorCitCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5w
cm90b3R5cGUuc2hvd1Jlc3VsdHMgPSBmdW5jdGlvbihtZXNzYWdlLCBwcm9ncmVzcykgeworICAg
IGlmICghdGhpcy5fcmVjb3JkVGFibGUgfHwgIXRoaXMuX3Byb2dyZXNzQmFyIHx8ICF0aGlzLl9z
dWl0ZSB8fCAhdGhpcy5fdGVzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgdGhpcy5fcmVjb3Jk
VGFibGUuc2hvd1JlY29yZCh0aGlzLl9zdWl0ZSwgdGhpcy5fdGVzdCwgdGhpcy5fc2FtcGxlciwg
bWVzc2FnZSk7CisgICAgdGhpcy5fcHJvZ3Jlc3NCYXIuc2V0UG9zKHByb2dyZXNzKTsKK30KSW5k
ZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
cmVzb3VyY2VzL2JvdW5jaW5nLXNoYXBlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2lu
Zy1zaGFwZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zaGFwZXMuanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorZnVuY3Rpb24gQm91bmNpbmdTaGFwZShzdGFn
ZSkgeworICAgIEJvdW5jaW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CisKKyAgICB0aGlz
LmVsZW1lbnQgPSB0aGlzLl9jcmVhdGVTcGFuKHN0YWdlKTsKKyAgICAgICAgCisgICAgc3dpdGNo
IChzdGFnZS5maWxsKSB7CisgICAgY2FzZSAic29saWQiOgorICAgIGRlZmF1bHQ6CisgICAgICAg
IHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBzdGFnZS5yYW5kb21Db2xvcigp
OworICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSAiZ3JhZGllbnQiOgorICAgICAg
ICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZCA9ICJsaW5lYXItZ3JhZGllbnQoIiArIHN0
YWdlLnJhbmRvbUNvbG9yKCkgKyAiLCAiICsgc3RhZ2UucmFuZG9tQ29sb3IoKSArICIpIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgdGhpcy5fbW92ZSgpOworfQorCitCb3VuY2luZ1No
YXBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUp
OworQm91bmNpbmdTaGFwZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1NoYXBlOwor
CitCb3VuY2luZ1NoYXBlLnByb3RvdHlwZS5fY3JlYXRlU3BhbiA9IGZ1bmN0aW9uKHN0YWdlKSB7
CisgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgc3Bh
bi5jbGFzc05hbWUgPSBzdGFnZS5zaGFwZSArICIgIiArIHN0YWdlLmNsaXA7CisgICAgc3Bhbi5z
dHlsZS53aWR0aCA9IHRoaXMuX3NpemUueCArICJweCI7CisgICAgc3Bhbi5zdHlsZS5oZWlnaHQg
PSB0aGlzLl9zaXplLnkgKyAicHgiOworICAgIHN0YWdlLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3Bh
bik7CisgICAgcmV0dXJuIHNwYW47Cit9CisKK0JvdW5jaW5nU2hhcGUucHJvdG90eXBlLl9tb3Zl
ID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9ICJ0cmFu
c2xhdGUoIiArIHRoaXMuX3Bvc2l0aW9uLnggKyAicHgsIiArIHRoaXMuX3Bvc2l0aW9uLnkgKyAi
cHgpIiArIHRoaXMuX3JvdGF0ZXIucm90YXRlWigpOworfQorICAgIAorQm91bmNpbmdTaGFwZS5w
cm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkgeworICAgIEJvdW5jaW5nUGFy
dGljbGUucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEpOworICAgIHRoaXMu
X3JvdGF0ZXIubmV4dCh0aW1lRGVsdGEpOyAgICAKKyAgICB0aGlzLl9tb3ZlKCk7Cit9CisKK2Z1
bmN0aW9uIEJvdW5jaW5nU2hhcGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykgeworICAgIEJvdW5j
aW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0aGlz
LnBhcnNlU2hhcGVQYXJhbXRlcnMob3B0aW9ucyk7Cit9CisKK0JvdW5jaW5nU2hhcGVzU3RhZ2Uu
cHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlw
ZSk7CitCb3VuY2luZ1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5n
U2hhcGVzU3RhZ2U7CisKK0JvdW5jaW5nU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRp
Y2xlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1NoYXBlKHRoaXMpOwor
fQorCitCb3VuY2luZ1NoYXBlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQg
PSBmdW5jdGlvbihwYXJ0aWNsZSkgeworICAgIGlmIChwYXJ0aWNsZS5lbGVtZW50ICYmIHBhcnRp
Y2xlLmVsZW1lbnQucGFyZW50Tm9kZSAmJiBwYXJ0aWNsZS5lbGVtZW50LnBhcmVudE5vZGUgPT0g
dGhpcy5lbGVtZW50KQorICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQocGFydGljbGUu
ZWxlbWVudCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICBCb3VuY2luZ1Bh
cnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRU
YWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3VuY2luZ1NoYXBlc0JlbmNobWFyay5wcm90b3R5
cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSk7
CitCb3VuY2luZ1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2lu
Z1NoYXBlc0JlbmNobWFyazsKKworQm91bmNpbmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNy
ZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdT
aGFwZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKword2luZG93LmJlbmNobWFy
a0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFi
bGUsIHByb2dyZXNzQmFyKSB7CisgICAgd2luZG93LmJlbmNobWFyayA9IG5ldyBCb3VuY2luZ1No
YXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNz
QmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9y
ZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLXN2Zy1pbWFnZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MSBAQAorZnVu
Y3Rpb24gQm91bmNpbmdTdmdJbWFnZShzdGFnZSkgeworICAgIEJvdW5jaW5nUGFydGljbGUuY2Fs
bCh0aGlzLCBzdGFnZSk7CisKKyAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoc3RhZ2Uuc3ZnTmFtZXNwYWNlLCAiaW1hZ2UiKTsKKyAgICB0aGlzLmVsZW1lbnQuc2V0
QXR0cmlidXRlKCJ4IiwgMCk7CisgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgieSIsIDAp
OyAgICAKKyAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsIHRoaXMuX3NpemUu
eCk7CisgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgdGhpcy5fc2l6ZS55
KTsKKyAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlTlMoc3RhZ2UueGxpbmtOYW1lc3BhY2Us
ICJocmVmIiwgc3RhZ2UuaW1hZ2VTcmMpOworCisgICAgc3RhZ2UuZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLmVsZW1lbnQpOworICAgIHRoaXMuX21vdmUoKTsgICAgCit9CisKK0JvdW5jaW5nU3Zn
SW1hZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlw
ZSk7CitCb3VuY2luZ1N2Z0ltYWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU3Zn
SW1hZ2U7CisKK0JvdW5jaW5nU3ZnSW1hZ2UucHJvdG90eXBlLl9tb3ZlID0gZnVuY3Rpb24oKSB7
CisgICAgdmFyIGNlbnRlciA9IHRoaXMuY2VudGVyKCk7CisgICAgdGhpcy5lbGVtZW50LnNldEF0
dHJpYnV0ZSgidHJhbnNmb3JtIiwgCisgICAgICAgICJ0cmFuc2xhdGUoIiArIGNlbnRlci54ICsg
IiwgIiArIGNlbnRlci55ICsgIikgIgorICAgICAgICArIHRoaXMuX3JvdGF0ZXIucm90YXRlKCkK
KyAgICAgICAgKyAidHJhbnNsYXRlKCIgKyAtdGhpcy5fc2l6ZS54IC8gMiArICIsICIgKyAtdGhp
cy5fc2l6ZS55IC8gMiArICIpICIpOworfQorCitCb3VuY2luZ1N2Z0ltYWdlLnByb3RvdHlwZS5h
bmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90
b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7CisgICAgdGhpcy5fbW92ZSgpOwor
fQorCitmdW5jdGlvbiBCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpIHsK
KyAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7
CisgICAgdGhpcy5pbWFnZVNyYyA9IG9wdGlvbnNbImltYWdlU3JjIl0gfHwgInJlc291cmNlcy95
aW4teWFuZy5zdmciOworfQorCitCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdT
dmdJbWFnZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1N2Z0ltYWdlc1N0
YWdlOworCitCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9
IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdTdmdJbWFnZSh0aGlzKTsKK30K
KworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVk
ID0gZnVuY3Rpb24ocGFydGljbGUpIHsKKyAgICBpZiAocGFydGljbGUuZWxlbWVudCAmJiBwYXJ0
aWNsZS5lbGVtZW50LnBhcmVudE5vZGUgJiYgcGFydGljbGUuZWxlbWVudC5wYXJlbnROb2RlID09
IHRoaXMuZWxlbWVudCkKKyAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKHBhcnRpY2xl
LmVsZW1lbnQpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyayhzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgQm91bmNp
bmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsu
cHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90
b3R5cGUpOworQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nU3ZnSW1hZ2VzQmVuY2ht
YXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICByZXR1
cm4gbmV3IEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9
CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIHdpbmRvdy5iZW5jaG1h
cmsgPSBuZXcgQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmct
c2hhcGVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuanMJKHJl
dmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTYxIEBACitmdW5jdGlvbiBCb3VuY2luZ1N2Z1NoYXBlKHN0YWdlKSB7Cisg
ICAgQm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9zaGFwZSA9
IHN0YWdlLnNoYXBlOworICAgIAorICAgIHN3aXRjaCAodGhpcy5fc2hhcGUpIHsKKyAgICBjYXNl
ICJjaXJjbGUiOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHRoaXMuZWxlbWVudCA9IHRoaXMuX2Ny
ZWF0ZUNpcmNsZShzdGFnZSk7CisgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlICJy
ZWN0IjoKKyAgICAgICAgdGhpcy5lbGVtZW50ID0gdGhpcy5fY3JlYXRlUmVjdChzdGFnZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAoc3RhZ2UuY2xpcCkgeworICAgIGNh
c2UgInN0YXIiOgorICAgICAgICBzdGFnZS5lbnN1cmVDbGlwU3RhcklzQ3JlYXRlZCgpOyAgICAK
KyAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiY2xpcC1wYXRoIiwgInVybCgjc3Rh
ci1jbGlwKSIpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHN0YWdlLmZp
bGwpIHsKKyAgICBjYXNlICJzb2xpZCI6CisgICAgZGVmYXVsdDoKKyAgICAgICAgdGhpcy5lbGVt
ZW50LnNldEF0dHJpYnV0ZSgiZmlsbCIsIHN0YWdlLnJhbmRvbUNvbG9yKCkpOworICAgICAgICBi
cmVhazsKKyAgICAgICAgCisgICAgY2FzZSAiZ3JhZGllbnQiOgorICAgICAgICB2YXIgZ3JhZGll
bnQgPSBzdGFnZS5jcmVhdGVHcmFkaWVudCgyKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0
dHJpYnV0ZSgiZmlsbCIsICJ1cmwoIyIgKyBncmFkaWVudC5nZXRBdHRyaWJ1dGUoImlkIikgKyAi
KSIpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICB0aGlzLl9tb3ZlKCk7ICAgIAorfQor
CitCb3VuY2luZ1N2Z1NoYXBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0
aWNsZS5wcm90b3R5cGUpOworQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBCb3VuY2luZ1N2Z1NoYXBlOworCitCb3VuY2luZ1N2Z1NoYXBlLnByb3RvdHlwZS5fY3JlYXRl
Q2lyY2xlID0gZnVuY3Rpb24oc3RhZ2UpIHsKKyAgICB2YXIgY2lyY2xlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKHN0YWdlLnN2Z05hbWVzcGFjZSwgImNpcmNsZSIpOworICAgIGNpcmNsZS5z
ZXRBdHRyaWJ1dGUoImN4IiwgdGhpcy5fc2l6ZS54IC8gMik7CisgICAgY2lyY2xlLnNldEF0dHJp
YnV0ZSgiY3kiLCB0aGlzLl9zaXplLnkgLyAyKTsgICAgCisgICAgY2lyY2xlLnNldEF0dHJpYnV0
ZSgiciIsIE1hdGgubWluKHRoaXMuX3NpemUueCwgdGhpcy5fc2l6ZS55KSAvIDIpOworICAgIHN0
YWdlLmVsZW1lbnQuYXBwZW5kQ2hpbGQoY2lyY2xlKTsKKyAgICByZXR1cm4gY2lyY2xlOworfQor
CitCb3VuY2luZ1N2Z1NoYXBlLnByb3RvdHlwZS5fY3JlYXRlUmVjdCA9IGZ1bmN0aW9uKHN0YWdl
KSB7CisgICAgdmFyIHJlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3RhZ2Uuc3ZnTmFt
ZXNwYWNlLCAicmVjdCIpOworICAgIHJlY3Quc2V0QXR0cmlidXRlKCJ4IiwgMCk7CisgICAgcmVj
dC5zZXRBdHRyaWJ1dGUoInkiLCAwKTsgICAgCisgICAgcmVjdC5zZXRBdHRyaWJ1dGUoIndpZHRo
IiwgdGhpcy5fc2l6ZS54KTsKKyAgICByZWN0LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgdGhpcy5f
c2l6ZS55KTsKKyAgICBzdGFnZS5lbGVtZW50LmFwcGVuZENoaWxkKHJlY3QpOyAgICAKKyAgICBy
ZXR1cm4gcmVjdDsKK30KKworQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX21vdmUgPSBmdW5j
dGlvbigpIHsKKyAgICB2YXIgdHJhbnNmb3JtOworICAgIGlmICh0aGlzLl9zaGFwZSA9PSAiY2ly
Y2xlIikKKyAgICAgICAgdHJhbnNmb3JtID0gInRyYW5zbGF0ZSgiICsgdGhpcy5fcG9zaXRpb24u
eCArICIsICIgKyB0aGlzLl9wb3NpdGlvbi55ICsgIikiOworICAgIGVsc2UgeworICAgICAgICB2
YXIgY2VudGVyID0gdGhpcy5jZW50ZXIoKTsKKyAgICAgICAgdHJhbnNmb3JtICA9ICJ0cmFuc2xh
dGUoIiArIGNlbnRlci54ICsgIiwgIiArIGNlbnRlci55ICsgIikgIjsKKyAgICAgICAgdHJhbnNm
b3JtICs9IHRoaXMuX3JvdGF0ZXIucm90YXRlKCk7CisgICAgICAgIHRyYW5zZm9ybSArPSAidHJh
bnNsYXRlKCIgKyAtdGhpcy5fc2l6ZS53aWR0aCgpIC8gMiArICIsICIgKyAtdGhpcy5fc2l6ZS5o
ZWlnaHQoKSAvIDIgKyAiKSI7CisgICAgfQorICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUo
InRyYW5zZm9ybSIsIHRyYW5zZm9ybSk7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBl
LmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlLnBy
b3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlzLl9tb3ZlKCk7
Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykg
eworICAgIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25z
KTsKKyAgICB0aGlzLnBhcnNlU2hhcGVQYXJhbXRlcnMob3B0aW9ucyk7Cit9CisKK0JvdW5jaW5n
U3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xl
c1N0YWdlLnByb3RvdHlwZSk7CitCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2U7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK0JvdW5jaW5nU3ZnU2hh
cGVzU3RhZ2UucHJvdG90eXBlLmVuc3VyZUNsaXBTdGFySXNDcmVhdGVkID0gZnVuY3Rpb24oKSB7
CisgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKCIjc3Rhci1jbGlwIikgfHwg
dGhpcy5fY3JlYXRlQ2xpcFN0YXIoKTsKK30KKworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90
b3R5cGUuZW5zdXJlRGVmc0lzQ3JlYXRlZCA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlz
LmVsZW1lbnQucXVlcnlTZWxlY3RvcigiZGVmcyIpIHx8IHRoaXMuX2NyZWF0ZURlZnMoKTsKK30K
KworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlR3JhZGllbnQgPSBmdW5j
dGlvbihzdG9wcykgeworICAgIHZhciBncmFkaWVudCAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlModGhpcy5zdmdOYW1lc3BhY2UsICJsaW5lYXJHcmFkaWVudCIpOworICAgIAorICAgIGlmICh0
eXBlb2YgdGhpcy5fZ2FkaWVudHNDb3VudCA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgIHRoaXMu
X2dhZGllbnRzQ291bnQgPSAwOyAgICAKKyAgICBncmFkaWVudC5zZXRBdHRyaWJ1dGUoImlkIiwg
ImdhZGllbnQtIiArICsrdGhpcy5fZ2FkaWVudHNDb3VudCk7CisgICAgCisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBzdG9wczsgKytpKSB7CisgICAgICAgIHZhciBzdG9wID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKHRoaXMuc3ZnTmFtZXNwYWNlLCAic3RvcCIpOworICAgICAgICBzdG9wLnNl
dEF0dHJpYnV0ZSgib2Zmc2V0IiwgaSAqIDEwMCAvIHN0b3BzICsgIiUiKTsKKyAgICAgICAgc3Rv
cC5zZXRBdHRyaWJ1dGUoInN0b3AtY29sb3IiLCB0aGlzLnJhbmRvbUNvbG9yKCkpOworICAgICAg
ICBncmFkaWVudC5hcHBlbmRDaGlsZChzdG9wKTsKKyAgICB9CisKKyAgICB0aGlzLmVuc3VyZURl
ZnNJc0NyZWF0ZWQoKS5hcHBlbmRDaGlsZChncmFkaWVudCk7CisgICAgcmV0dXJuIGdyYWRpZW50
OworfQorCitCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5fY3JlYXRlRGVmcyA9IGZ1
bmN0aW9uKCkgeworICAgIHZhciBkZWZzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHRoaXMu
c3ZnTmFtZXNwYWNlLCJkZWZzIik7CisgICAgdGhpcy5lbGVtZW50Lmluc2VydEJlZm9yZShkZWZz
LCB0aGlzLmVsZW1lbnQuZmlyc3RDaGlsZCk7CisgICAgcmV0dXJuIGRlZnM7Cit9CisgICAgCitC
b3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5fY3JlYXRlQ2xpcFN0YXIgPSBmdW5jdGlv
bigpIHsKKyAgICB2YXIgY2xpcFBhdGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlModGhpcy5z
dmdOYW1lc3BhY2UsICJjbGlwUGF0aCIpOworICAgIGNsaXBQYXRoLnNldEF0dHJpYnV0ZSgiaWQi
LCAic3Rhci1jbGlwIik7CisgICAgY2xpcFBhdGguc2V0QXR0cmlidXRlKCJjbGlwUGF0aFVuaXRz
IiwgIm9iamVjdEJvdW5kaW5nQm94Iik7CisgICAgCisgICAgdmFyIHBhdGggPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlModGhpcy5zdmdOYW1lc3BhY2UsICJwYXRoIik7CisgICAgcGF0aC5zZXRB
dHRyaWJ1dGUoImQiLCAiTS41MCwwTC4zOCwuMzhMMCwuMzhMLjMwLC42MEwuMTgsMUwuNTAsLjc1
TC44MiwxTC43MCwuNjBMMSwuMzhMLjYyLC4zOHoiKTsKKyAgICBjbGlwUGF0aC5hcHBlbmRDaGls
ZChwYXRoKTsKKyAgICAKKyAgICB0aGlzLmVuc3VyZURlZnNJc0NyZWF0ZWQoKS5hcHBlbmRDaGls
ZChjbGlwUGF0aCk7CisgICAgcmV0dXJuIGNsaXBQYXRoOworfQorCitCb3VuY2luZ1N2Z1NoYXBl
c1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVy
biBuZXcgQm91bmNpbmdTdmdTaGFwZSh0aGlzKTsKK30KKworQm91bmNpbmdTdmdTaGFwZXNTdGFn
ZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkID0gZnVuY3Rpb24ocGFydGljbGUpIHsK
KyAgICBpZiAoIXBhcnRpY2xlLmVsZW1lbnQgfHwgIXBhcnRpY2xlLmVsZW1lbnQucGFyZW50Tm9k
ZSB8fCBwYXJ0aWNsZS5lbGVtZW50LnBhcmVudE5vZGUgIT0gdGhpcy5lbGVtZW50KQorICAgICAg
ICByZXR1cm47CisgICAgICAgIAorICAgIHZhciBmaWxsID0gcGFydGljbGUuZWxlbWVudC5nZXRB
dHRyaWJ1dGUoImZpbGwiKTsKKyAgICBpZiAoZmlsbC5pbmRleE9mKCJ1cmwoIyIpID09IDApIHsK
KyAgICAgICAgdmFyIGdyYWRpZW50ID0gdGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoZmlsbC5z
dWJzdHJpbmcoNCwgZmlsbC5sZW5ndGggLSAxKSk7CisgICAgICAgIHRoaXMuZW5zdXJlRGVmc0lz
Q3JlYXRlZCgpLnJlbW92ZUNoaWxkKGdyYWRpZW50KTsKKyAgICB9CisgICAgCisgICAgdGhpcy5l
bGVtZW50LnJlbW92ZUNoaWxkKHBhcnRpY2xlLmVsZW1lbnQpOworfQorCitmdW5jdGlvbiBCb3Vu
Y2luZ1N2Z1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUs
IHByb2dyZXNzQmFyKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlz
LCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKwor
Qm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3Vu
Y2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOworQm91bmNpbmdTdmdTaGFwZXNCZW5j
aG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcms7
CisKK0JvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1
bmN0aW9uKGVsZW1lbnQpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2Uo
ZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3Jl
YXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0JhcikgeworICAgIHdpbmRvdy5iZW5jaG1hcmsgPSBuZXcgQm91bmNpbmdTdmdTaGFwZXNCZW5j
aG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9
CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL2JlbmNo
bWFyay5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTcgQEAKK2h0bWwgeworICBoZWlnaHQ6IDEwMCU7Cit9Citib2R5IHsKKyAg
d2lkdGg6IDEwMCU7CisgIGhlaWdodDogMTAwJTsKKyAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgbWFy
Z2luOiAwOworICBwYWRkaW5nOiAwOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWFlYWVhOworfQor
Cisjc3RhZ2UgeworICB3aWR0aDogMTAwJTsKKyAgaGVpZ2h0OiAxMDAlOworICBiYWNrZ3JvdW5k
LWNvbG9yOiAjZWFlYWVhOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL3Jlc291cmNlcy9iZW5jaG1hcmsuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9iZW5jaG1hcmsuanMJKHJldmlzaW9uIDApCisr
KyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL2JlbmNobWFyay5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4OCBAQAorZnVuY3Rpb24gQmVuY2htYXJrU3Rh
dGUodGVzdEludGVydmFsKSB7CisgICAgdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgPSAwOworICAg
IHRoaXMuX3N0YWdlSW50ZXJ2YWwgPSB0ZXN0SW50ZXJ2YWwgLyBCZW5jaG1hcmtTdGF0ZS5zdGFn
ZXMuRklOSVNIRUQ7Cit9CisKK0JlbmNobWFya1N0YXRlLnN0YWdlcyA9IHsKKyAgICBXQVJNSU5H
X1VQOiAwLAorICAgIFNBTVBMSU5HOiAxLAorICAgIEZJTklTSEVEOiAyLAorICAgIG1lc3NhZ2Vz
OiBbICJXYXJtaW5nIHVwIiwgIlNhbXBsaW5nIiwgIkZpbmlzaGVkIiBdCit9OworCitCZW5jaG1h
cmtTdGF0ZS5wcm90b3R5cGUgPSB7CisgICAgX3RpbWVPZmZzZXQgOiBmdW5jdGlvbihzdGFnZSkg
eworICAgICAgICByZXR1cm4gc3RhZ2UgKiB0aGlzLl9zdGFnZUludGVydmFsOworICAgIH0sCisg
ICAgX21lc3NhZ2UgOiBmdW5jdGlvbihzdGFnZSwgdGltZU9mZnNldCkgeworICAgICAgICBpZiAo
c3RhZ2UgPT0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEKQorICAgICAgICAgICAgcmV0
dXJuIEJlbmNobWFya1N0YXRlLnN0YWdlcy5tZXNzYWdlc1tzdGFnZV07CisKKyAgICAgICAgcmV0
dXJuIEJlbmNobWFya1N0YXRlLnN0YWdlcy5tZXNzYWdlc1tzdGFnZV0gKyAiLi4uICgiCisgICAg
ICAgICAgICArIE1hdGguZmxvb3IoKHRpbWVPZmZzZXQgLSB0aGlzLl90aW1lT2Zmc2V0KHN0YWdl
KSkgLyAxMDAwKSArICIvIgorICAgICAgICAgICAgKyBNYXRoLmZsb29yKCh0aGlzLl90aW1lT2Zm
c2V0KHN0YWdlICsgMSkgLSB0aGlzLl90aW1lT2Zmc2V0KHN0YWdlKSkgLyAxMDAwKSArICIpIjsK
KyAgICB9LAorICAgIHVwZGF0ZSA6IGZ1bmN0aW9uKGN1cnJlbnRUaW1lT2Zmc2V0KSB7CisgICAg
ICAgIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0ID0gY3VycmVudFRpbWVPZmZzZXQ7CisgICAgfSwK
KyAgICBzYW1wbGluZ1RpbWVPZmZzZXQgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3RpbWVPZmZzZXQoQmVuY2htYXJrU3RhdGUuc3RhZ2VzLlNBTVBMSU5HKTsKKyAgICB9LAor
ICAgIGN1cnJlbnRTdGFnZSA6IGZ1bmN0aW9uKCkgeworICAgICAgICBmb3IgKHZhciBzdGFnZSA9
IEJlbmNobWFya1N0YXRlLnN0YWdlcy5XQVJNSU5HX1VQOyBzdGFnZSA8IEJlbmNobWFya1N0YXRl
LnN0YWdlcy5GSU5JU0hFRDsgKytzdGFnZSkgeworICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnJl
bnRUaW1lT2Zmc2V0IDwgdGhpcy5fdGltZU9mZnNldChzdGFnZSArIDEpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBzdGFnZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gQmVuY2htYXJrU3Rh
dGUuc3RhZ2VzLkZJTklTSEVEOworICAgIH0sCisgICAgY3VycmVudE1lc3NhZ2UgOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX21lc3NhZ2UodGhpcy5jdXJyZW50U3RhZ2UoKSwg
dGhpcy5fY3VycmVudFRpbWVPZmZzZXQpOworICAgIH0sCisgICAgY3VycmVudFByb2dyZXNzIDog
ZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50VGltZU9mZnNldCAvIHRo
aXMuX3RpbWVPZmZzZXQoQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIEFuaW1hdG9yKGJlbmNobWFyaykgeworICAgIHRoaXMuX2JlbmNobWFyayA9
IGJlbmNobWFyazsKKyAgICB0aGlzLl9mcmFtZUNvdW50ID0gMDsKKyAgICB0aGlzLl9kcm9wRnJh
bWVDb3VudCA9IDE7CisgICAgdGhpcy5fbWVhc3VyZUZyYW1lQ291bnQgPSAzOyAKKyAgICB0aGlz
Ll9jdXJyZW50VGltZU9mZnNldCA9IDA7CisgICAgdGhpcy5fZXN0aW1hdG9yID0gbmV3IEVzdGlt
YXRvcigpOworfQorCitBbmltYXRvci5wcm90b3R5cGUgPSB7CisgICAgc3RhcnQgOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgdGhpcy5faW50ZXJ2YWxJZCA9IHNldEludGVydmFsKHRoaXMuYW5pbWF0
ZS5iaW5kKHRoaXMpLCAxKTsKKyAgICB9LAorICAgIHRpbWVEZWx0YSA6IGZ1bmN0aW9uKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgLSB0aGlzLl9zdGFydFRpbWVP
ZmZzZXQ7CisgICAgfSwKKyAgICBhbmltYXRlIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBj
dXJyZW50VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpOworICAgICAgICAKKyAgICAgICAgaWYgKHR5
cGVvZiB0aGlzLl9yZWZlcmVuY2VUaW1lID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHRo
aXMuX3JlZmVyZW5jZVRpbWUgPSBjdXJyZW50VGltZTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgPSBjdXJyZW50VGltZSAtIHRoaXMuX3JlZmVyZW5j
ZVRpbWU7CisKKyAgICAgICAgaWYgKCF0aGlzLl9mcmFtZUNvdW50KQorICAgICAgICAgICAgdGhp
cy5fc3RhcnRUaW1lT2Zmc2V0ID0gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQ7CisKKyAgICAgICAg
Ly8gU3RhcnQgbWVhc3VyaW5nIGFmdGVyIGRyb3BwaW5nIF9kcm9wRnJhbWVDb3VudCBmcmFtZXMu
CisgICAgICAgIGlmICh0aGlzLl9mcmFtZUNvdW50ID09IHRoaXMuX2Ryb3BGcmFtZUNvdW50KQor
ICAgICAgICAgICAgdGhpcy5fbWVhc3VyZVRpbWVPZmZzZXQgPSB0aGlzLl9jdXJyZW50VGltZU9m
ZnNldDsKKworICAgICAgICArK3RoaXMuX2ZyYW1lQ291bnQ7CisKKyAgICAgICAgLy8gRHJvcCBf
ZHJvcEZyYW1lQ291bnQgZnJhbWVzIGFuZCBtZWFzdXJlIHRoZSBhdmVyYWdlIG9mIF9tZWFzdXJl
RnJhbWVDb3VudCBmcmFtZXMuCisgICAgICAgIGlmICh0aGlzLl9mcmFtZUNvdW50IDwgdGhpcy5f
ZHJvcEZyYW1lQ291bnQgKyB0aGlzLl9tZWFzdXJlRnJhbWVDb3VudCkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgICAgIC8vIEdldCB0aGUgYXZlcmFnZSBGUFMgb2YgX21lYXN1cmVG
cmFtZUNvdW50IGZyYW1lcyBvdmVyIG1lYXN1cmVUaW1lRGVsdGEuCisgICAgICAgIHZhciBtZWFz
dXJlVGltZURlbHRhID0gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgLSB0aGlzLl9tZWFzdXJlVGlt
ZU9mZnNldDsKKyAgICAgICAgdmFyIGN1cnJlbnRGcmFtZVJhdGUgPSBNYXRoLmZsb29yKDEwMDAg
LyAobWVhc3VyZVRpbWVEZWx0YSAvIHRoaXMuX21lYXN1cmVGcmFtZUNvdW50KSk7CisgICAgICAg
ICAKKyAgICAgICAgLy8gVXNlIEthbG1hbiBmaWx0ZXIgdG8gZ2V0IGEgbW9yZSBub24tZmx1Y3R1
YXRpbmcgZnJhbWUgcmF0ZS4KKyAgICAgICAgaWYgKHRoaXMuX2JlbmNobWFyay5vcHRpb25zLmVz
dGltYXRlZEZyYW1lUmF0ZSkKKyAgICAgICAgICAgIGN1cnJlbnRGcmFtZVJhdGUgPSB0aGlzLl9l
c3RpbWF0b3IuZXN0aW1hdGUobWVhc3VyZVRpbWVEZWx0YSwgY3VycmVudEZyYW1lUmF0ZSk7Cisg
ICAgICAgIAorICAgICAgICAvLyBBZGp1c3QgdGhlIHRlc3QgdG8gcmVhY2ggdGhlIGRlc2lyZWQg
RlBTLgorICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fYmVuY2htYXJrLnVwZGF0ZSh0aGlzLl9j
dXJyZW50VGltZU9mZnNldCwgdGhpcy50aW1lRGVsdGEoKSwgY3VycmVudEZyYW1lUmF0ZSk7Cisg
ICAgICAgIAorICAgICAgICAvLyBTdG9wIHRoZSBhbmltYXRvciBpZiB0aGUgYmVuY2htYXJrIGhh
cyBmaW5pc2hlZC4KKyAgICAgICAgaWYgKCFyZXN1bHQgJiYgdHlwZW9mIHRoaXMuX2ludGVydmFs
SWQgIT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuX2ludGVy
dmFsSWQpOworCisgICAgICAgIC8vIFN0YXJ0IHRoZSBuZXh0IGRyb3AvbWVhc3VyZSBjeWNsZS4K
KyAgICAgICAgdGhpcy5fZnJhbWVDb3VudCA9IDA7CisgICAgICAgIAorICAgICAgICAvLyByZXN1
bHQgbWF5IHN0b3AgdGhlIGFuaW1hdG9yIGlmIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGhhcyBi
ZWVuIHVzZWQuCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKyAgICBhbmltYXRlTG9v
cCA6IGZ1bmN0aW9uKHRpbWVzdGFtcCkgeworICAgICAgICBpZiAodGhpcy5hbmltYXRlKCkpCisg
ICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5hbmltYXRlTG9vcC5iaW5kKHRo
aXMpKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEJlbmNobWFyayhvcHRpb25zKSB7CisgICAgdGhp
cy5fb3B0aW9ucyA9IG9wdGlvbnM7CisgICAgdGhpcy5fbWV0aG9kID0gdGhpcy5fb3B0aW9uc1si
bWV0aG9kIl0gfHwgInJlcXVlc3RBbmltYXRpb25GcmFtZSI7CisKKyAgICB0aGlzLm9wdGlvbnMg
PSBvcHRpb25zOworICAgIHRoaXMuX3JlY29yZEludGVydmFsID0gMjAwOyAgICAKKyAgICB0aGlz
Ll9pc1NhbXBsaW5nID0gZmFsc2U7CisKKyAgICB2YXIgZ2FpbiA9IHBhcnNlSW50KHRoaXMuX29w
dGlvbnNbImdhaW4iXSkgfHwgMTsKKyAgICB2YXIgbG93VmFsdWUgPSAtcGFyc2VJbnQodGhpcy5f
b3B0aW9uc1siYWRkTGltaXQiXSkgfHwgMTsKKyAgICB2YXIgaGlnaFZhbHVlID0gcGFyc2VJbnQo
dGhpcy5fb3B0aW9uc1sicmVtb3ZlTGltaXQiXSkgfHwgMTsKKyAgICAKKyAgICB0aGlzLl9jb250
cm9sbGVyID0gbmV3IENvbnRyb2xsZXIoZ2Fpbiwgb3B0aW9ucy5mcmFtZVJhdGUsIGxvd1ZhbHVl
LCBoaWdoVmFsdWUpOworICAgIHRoaXMuX3NhbXBsZXIgPSBuZXcgU2FtcGxlcigyKTsKKyAgICB0
aGlzLl9zdGF0ZSA9IG5ldyBCZW5jaG1hcmtTdGF0ZSh0aGlzLm9wdGlvbnMudGVzdEludGVydmFs
KTsgICAgCit9CisKK0JlbmNobWFyay5wcm90b3R5cGUgPSB7CisgICAgLy8gQ2FsbGVkIGZyb20g
dGhlIGxvYWQgZXZlbnQgbGlzdGVuZXIgb3IgZnJvbSB0aGlzLnJ1bigpCisgICAgc3RhcnQgOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHRoaXMuX21ldGhvZCA9PSAic2V0SW50ZXJ2YWwiKQor
ICAgICAgICAgICAgdGhpcy5fYW5pbWF0b3Iuc3RhcnQoKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgdGhpcy5fYW5pbWF0b3IuYW5pbWF0ZUxvb3AoKTsKKyAgICB9LAorICAgIC8vIENhbGxl
ZCBmcm9tIHRoZSBhbmltYXRvciB0byBhZGp1c3QgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIHRlc3QK
KyAgICB1cGRhdGUgOiBmdW5jdGlvbihjdXJyZW50VGltZU9mZnNldCwgdGltZURlbHRhLCBjdXJy
ZW50RnJhbWVSYXRlKSB7CisgICAgICAgIHRoaXMuX3N0YXRlLnVwZGF0ZShjdXJyZW50VGltZU9m
ZnNldCk7CisgICAgICAgIAorICAgICAgICB2YXIgc3RhZ2UgPSB0aGlzLl9zdGF0ZS5jdXJyZW50
U3RhZ2UoKTsKKyAgICAgICAgaWYgKHN0YWdlID09IEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5J
U0hFRCkgeworICAgICAgICAgICAgdGhpcy5jbGVhcigpOworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0YWdlID09IEJlbmNobWFya1N0YXRlLnN0
YWdlcy5TQU1QTElORyAmJiAhdGhpcy5faXNTYW1wbGluZykgeworICAgICAgICAgICAgdGhpcy5f
c2FtcGxlci5zdGFydFNhbXBsaW5nKHRoaXMuX3N0YXRlLnNhbXBsaW5nVGltZU9mZnNldCgpKTsK
KyAgICAgICAgICAgIHRoaXMuX2lzU2FtcGxpbmcgPSB0cnVlOworICAgICAgICB9CisKKyAgICAg
ICAgdmFyIHR1bmVWYWx1ZSA9IDA7CisgICAgICAgIGlmICghKHRoaXMuX2lzU2FtcGxpbmcgJiYg
dGhpcy5vcHRpb25zLmZpeFRlc3RDb21wbGV4aXR5KSkgeworICAgICAgICAgICAgLy8gVGhlIHJl
bGF0aW9uc2hpcCBiZXR3ZWVuIGZyYW1lUmF0ZSBhbmQgdGVzdCBjb21wbGV4aXR5IGlzIGludmVy
c2UtcHJvcG9ydGlvbmFsIHNvIHdlCisgICAgICAgICAgICAvLyBuZWVkIHRvIHVzZSB0aGUgbmVn
YXRpdmUgb2YgQ29udHJvbGxlci50dW5lKCkgdG8gY2hhbmdlIHRoZSBjb21wbGV4aXR5IG9mIHRo
ZSB0ZXN0CisgICAgICAgICAgICB0dW5lVmFsdWUgPSAtdGhpcy5fY29udHJvbGxlci50dW5lKGN1
cnJlbnRGcmFtZVJhdGUsIHRpbWVEZWx0YSAvIDEwMDApOworICAgICAgICB9CisKKyAgICAgICAg
dmFyIGN1cnJlbnRDb21wbGV4aXR5ID0gdGhpcy50dW5lKHR1bmVWYWx1ZSk7CisgICAgICAgIHRo
aXMucmVjb3JkKGN1cnJlbnRUaW1lT2Zmc2V0LCBjdXJyZW50Q29tcGxleGl0eSwgY3VycmVudEZy
YW1lUmF0ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisgICAgcmVjb3JkIDogZnVu
Y3Rpb24oY3VycmVudFRpbWVPZmZzZXQsIGN1cnJlbnRDb21wbGV4aXR5LCBjdXJyZW50RnJhbWVS
YXRlKSB7CisgICAgICAgIHRoaXMuX3NhbXBsZXIuc2FtcGxlKGN1cnJlbnRUaW1lT2Zmc2V0LCBb
Y3VycmVudENvbXBsZXhpdHksIGN1cnJlbnRGcmFtZVJhdGVdKTsKKyAgICAgICAgCisgICAgICAg
IGlmICh0eXBlb2YgdGhpcy5fcmVjb3JkVGltZU9mZnNldCA9PSAidW5kZWZpbmVkIikKKyAgICAg
ICAgICAgIHRoaXMuX3JlY29yZFRpbWVPZmZzZXQgPSBjdXJyZW50VGltZU9mZnNldDsKKworICAg
ICAgICB2YXIgc3RhZ2UgPSB0aGlzLl9zdGF0ZS5jdXJyZW50U3RhZ2UoKTsKKyAgICAgICAgaWYg
KHN0YWdlICE9IEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRCAmJiBjdXJyZW50VGltZU9m
ZnNldCA8IHRoaXMuX3JlY29yZFRpbWVPZmZzZXQgKyB0aGlzLl9yZWNvcmRJbnRlcnZhbCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLnNob3dSZXN1bHRzKHRoaXMuX3N0YXRl
LmN1cnJlbnRNZXNzYWdlKCksIHRoaXMuX3N0YXRlLmN1cnJlbnRQcm9ncmVzcygpKTsKKyAgICAg
ICAgdGhpcy5fcmVjb3JkVGltZU9mZnNldCA9IGN1cnJlbnRUaW1lT2Zmc2V0OworICAgIH0sCisg
ICAgcnVuIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuc3RhcnQoKTsKKworICAgICAgICB2
YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7
CisgICAgICAgIGZ1bmN0aW9uIHJlc29sdmVXaGVuRmluaXNoZWQoKSB7CisgICAgICAgICAgICBp
ZiAodHlwZW9mIHNlbGYuX3N0YXRlICE9ICJ1bmRlZmluZWQiICYmIChzZWxmLl9zdGF0ZS5jdXJy
ZW50U3RhZ2UoKSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBwcm9taXNlLnJlc29sdmUoc2VsZi5fc2FtcGxlcik7CisgICAgICAgICAg
ICBzZXRUaW1lb3V0KHJlc29sdmVXaGVuRmluaXNoZWQuYmluZChzZWxmKSwgNTApOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICByZXNvbHZlV2hlbkZpbmlzaGVkKCk7CisgICAgICAgIHJl
dHVybiBwcm9taXNlOworICAgIH0KK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9yZXNvdXJjZXMvbWF0aC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanMJKHJldmlzaW9uIDApCisrKyBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxODQgQEAKK3ZhciBNYXRyaXggPSB7fTsKKworTWF0cml4LmluaXQg
PSBmdW5jdGlvbihtLCBuLCB2KSB7CisgICAgcmV0dXJuIEFycmF5KG0gKiBuKS5maWxsKHYpOwor
fQorCitNYXRyaXguemVyb3MgPSBmdW5jdGlvbihtLCBuKSB7CisgICAgcmV0dXJuIE1hdHJpeC5p
bml0KG0sIG4sIDApOworfQorCitNYXRyaXgub25lcyA9IGZ1bmN0aW9uKG0sIG4pIHsKKyAgICBy
ZXR1cm4gTWF0cml4LmluaXQobSwgbiwgMSk7Cit9CisKK01hdHJpeC5pZGVudGl0eSA9IGZ1bmN0
aW9uKG4pIHsKKyAgICB2YXIgb3V0ID0gbmV3IE1hdHJpeC56ZXJvcyhuLCBuKTsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IG47ICsraSkKKyAgICAgICAgb3V0W2kgKiBuICsgaV0gPSAxOworICAg
IHJldHVybiBvdXQ7Cit9CisKK01hdHJpeC5zdHIgPSBmdW5jdGlvbihBLCBuLCBtKSB7CisgICAg
dmFyIG91dCA9IChtID4gMSAmJiBuID4gMSA/ICJNYXRyaXhbIiArIG4gKyAiLCAiICsgbSA6ICJW
ZWN0b3JbIiArIG0gKiBuKSArICJdID0gWyI7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuICog
bTsgKytpKSB7CisgICAgICAgIG91dCArPSBBW2ldOworICAgICAgICBpZiAoaSA8IG4gKiBtIC0g
MSkKKyAgICAgICAgICAgIG91dCArPSAiLCAiOworICAgIH0gICAgICAgCisgICAgcmV0dXJuIG91
dCArICJdIjsKK307CisKK01hdHJpeC5wb3MgPSBmdW5jdGlvbihtLCBpLCBqKSB7CisgICAgcmV0
dXJuIG0gKiBpICsgajsKK30KKworTWF0cml4LmFkZCA9IGZ1bmN0aW9uKEEsIEIsIG4sIG0pIHsK
KyAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIG0pOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbiAqIG07ICsraSkKKyAgICAgICAgb3V0W2ldID0gQVtpXSArIEJbaV07CisgICAgcmV0dXJu
IG91dDsKK30KKworTWF0cml4LnN1YnRyYWN0ID0gZnVuY3Rpb24oQSwgQiwgbiwgbSkgeworICAg
IHZhciBvdXQgPSBNYXRyaXguemVyb3MobiwgbSk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBu
ICogbTsgKytpKQorICAgICAgICBvdXRbaV0gPSBBW2ldIC0gQltpXTsKKyAgICByZXR1cm4gb3V0
OworfQorCitNYXRyaXguc2NhbGUgPSBmdW5jdGlvbihzLCBBLCBuLCBtKSB7CisgICAgdmFyIG91
dCA9IE1hdHJpeC56ZXJvcyhuLCBtKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4gKiBtOyAr
K2kpCisgICAgICAgIG91dFtpXSA9IHMgKiBBW2ldOworICAgIHJldHVybiBvdXQ7Cit9CisKK01h
dHJpeC50cmFuc3Bvc2UgPSBmdW5jdGlvbihBLCBuLCBtKSB7CisgICAgdmFyIG91dCA9IE1hdHJp
eC56ZXJvcyhtLCBuKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAg
ICBmb3IgKHZhciBqID0gMDsgaiA8IG07ICsraikKKyAgICAgICAgICAgIG91dFtNYXRyaXgucG9z
KG4sIGksIGopXSA9IEFbTWF0cml4LnBvcyhtLCBqLCBpKV07CisgICAgfSAgICAgICAKKyAgICBy
ZXR1cm4gb3V0OworfQorCitNYXRyaXgubXVsdGlwbHkgPSBmdW5jdGlvbihBLCBCLCBuLCBtLCBw
KSB7CisgICAgdmFyIG91dCA9IE1hdHJpeC56ZXJvcyhuLCBwKTsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IG47ICsraSkgeworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHA7ICsraikgewor
ICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBtOyArK2spIHsKKyAgICAgICAgICAgICAg
ICBvdXRbTWF0cml4LnBvcyhwLCBpLCBqKV0gKz0gQVtNYXRyaXgucG9zKG0sIGksIGspXSAqIEJb
TWF0cml4LnBvcyhwLCBrLCBqKV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIG91dDsKK30KKwordmFyIFZlY3RvcjMgPSB7fTsKKworVmVjdG9yMy56ZXJvcyA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gTWF0cml4Lnplcm9zKDEsIDMpOyB9CitWZWN0b3IzLm9uZXMg
PSBmdW5jdGlvbigpIHsgcmV0dXJuIE1hdHJpeC5vbmVzKDEsIDMpOyB9CitWZWN0b3IzLnN0ciA9
IGZ1bmN0aW9uKHYpIHsgcmV0dXJuIE1hdHJpeC5zdHIodiwgMSwgMyk7IH0KK1ZlY3RvcjMuYWRk
ID0gZnVuY3Rpb24odiwgdykgeyByZXR1cm4gTWF0cml4LmFkZCh2LCB3LCAxLCAzKTsgfQorVmVj
dG9yMy5zdWJ0cmFjdCA9IGZ1bmN0aW9uKHYsIHcpIHsgcmV0dXJuIE1hdHJpeC5zdWJ0cmFjdCh2
LCB3LCAxLCAzKTsgfQorVmVjdG9yMy5zY2FsZSA9IGZ1bmN0aW9uKHMsIHYpIHsgcmV0dXJuIE1h
dHJpeC5zY2FsZShzLCB2LCAxLCAzKTsgfQorVmVjdG9yMy5tdWx0aXBseU1hdHJpeDMgPSBmdW5j
dGlvbih2LCBBKSB7IHJldHVybiBNYXRyaXgubXVsdGlwbHkodiwgQSwgMSwgMywgMyk7IH0KK1Zl
Y3RvcjMubXVsdGlwbHlWZWN0b3IzID0gZnVuY3Rpb24odiwgdykgeworICAgIHZhciBvdXQgPSAw
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgKytpKQorICAgICAgICBvdXQgKz0gdltpXSAq
IHdbaV07CisgICAgcmV0dXJuIG91dDsKK30KKwordmFyIE1hdHJpeDMgPSB7fTsKKworTWF0cml4
My56ZXJvcyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gTWF0cml4Lnplcm9zKDMsIDMpOyB9CitNYXRy
aXgzLmlkZW50aXR5ID0gZnVuY3Rpb24oKSB7IHJldHVybiBNYXRyaXguaWRlbnRpdHkoMywgMyk7
IH0KK01hdHJpeDMuc3RyID0gZnVuY3Rpb24oQSkgeyByZXR1cm4gTWF0cml4LnN0cihBLCAzLCAz
KTsgfQorTWF0cml4My5wb3MgPSBmdW5jdGlvbihpLCBqKSB7IHJldHVybiBNYXRyaXgucG9zKDMs
IGksIGopOyB9CitNYXRyaXgzLmFkZCA9IGZ1bmN0aW9uKEEsIEIpIHsgcmV0dXJuIE1hdHJpeC5h
ZGQoQSwgQiwgMywgMyk7IH0KK01hdHJpeDMuc3VidHJhY3QgPSBmdW5jdGlvbihBLCBCKSB7IHJl
dHVybiBNYXRyaXguc3VidHJhY3QoQSwgQiwgMywgMyk7IH0KK01hdHJpeDMuc2NhbGUgPSBmdW5j
dGlvbihzLCBBKSB7IHJldHVybiBNYXRyaXguc2NhbGUocywgQSwgMywgMyk7IH0KK01hdHJpeDMu
dHJhbnNwb3NlID0gZnVuY3Rpb24oQSkgeyByZXR1cm4gTWF0cml4LnRyYW5zcG9zZShBLCAzLCAz
KTsgfQorTWF0cml4My5tdWx0aXBseU1hdHJpeDMgPSBmdW5jdGlvbihBLCBCKSB7IHJldHVybiBN
YXRyaXgubXVsdGlwbHkoQSwgQiwgMywgMywgMyk7IH0KK01hdHJpeDMubXVsdGlwbHlWZWN0b3Iz
ID0gZnVuY3Rpb24oQSwgdikgeyByZXR1cm4gTWF0cml4Lm11bHRpcGx5KEEsIHYsIDMsIDMsIDEp
OyB9CisKK2Z1bmN0aW9uIENvbnRyb2xsZXIoSywgeXNwLCB1bG93LCB1aGlnaCkgeworICAgIHRo
aXMuX3lzcCA9IHlzcDsKKworICAgIHRoaXMuX1RkID0gNTsKKyAgICB0aGlzLl9UaSA9IDE1Owor
CisgICAgdGhpcy5fS3AgPSBLOworICAgIHRoaXMuX0tkID0gSyAvIHRoaXMuX1RkOworICAgIHRo
aXMuX0tpID0gSyAvIHRoaXMuX1RpOworCisgICAgdGhpcy5fZW9sZCA9IDA7CisgICAgdGhpcy5f
SSA9IDA7Cit9CisKK0NvbnRyb2xsZXIucHJvdG90eXBlID0geworICAgIF9zYXQgOiBmdW5jdGlv
bih2LCBsb3csIGhpZ2gpIHsKKyAgICAgICAgcmV0dXJuIHYgPCBsb3cgPyBsb3cgOiAodiA+IGhp
Z2ggPyBoaWdoIDogdik7CisgICAgfSwKKyAgICB0dW5lIDogZnVuY3Rpb24oeSwgaCkgeworICAg
ICAgICAvLyBDdXJyZW50IGVycm9yCisgICAgICAgIHZhciBlID0gdGhpcy5feXNwIC0geTsKKwor
ICAgICAgICAvLyBQcm9wb3J0aW9uYWwgdGVybQorICAgICAgICB2YXIgUCA9IHRoaXMuX0twICog
ZTsKKyAgICAgICAgCisgICAgICAgIC8vIERlcml2YXRpdmUgdGVybSBpcyB0aGUgc2xvcGUgb2Yg
dGhlIGN1cnZlIGF0IHRoZSBjdXJyZW50IHRpbWUKKyAgICAgICAgdmFyIEQgPSB0aGlzLl9LZCAq
IChlIC0gdGhpcy5fZW9sZCkgLyBoOworCisgICAgICAgIC8vIEludGVncmFsIHRlcm0gaXMgdGhl
IGFyZWEgdW5kZXIgdGhlIGN1cnZlIHN0YXJ0aW5nIGZyb20gdGhlIGJlZ2luaW5nIHRpbGwgdGhl
IGN1cnJlbnQgdGltZQorICAgICAgICB0aGlzLl9JICs9IHRoaXMuX0tpICogKChlICsgdGhpcy5f
ZW9sZCkgLyAyKSAqIGg7CisKKyAgICAgICAgLy8gcGlkIGNvbnRyb2xsZXIgdmFsdWUKKyAgICAg
ICAgdmFyIHYgPSBQICsgRCArIHRoaXMuX0k7CisgICAgICAgIAorICAgICAgICAvLyBBdm9pZCBz
cGlrZXMgYnkgYXBwbHlpbmcgYWN0dWF0b3Igc2F0dWFydGlvbgorICAgICAgICB2YXIgdSA9IHRo
aXMuX3NhdCh2LCB0aGlzLl91bG93LCB0aGlzLl91aGlnaCk7ICAgICAgICAKKworICAgICAgICB0
aGlzLl9lb2xkID0gZTsKKyAgICAgICAgcmV0dXJuIHU7CisgICAgfQorfQorCitmdW5jdGlvbiBF
c3RpbWF0b3IoKSB7CisgICAgdGhpcy5fbWF0QSA9IE1hdHJpeDMuaWRlbnRpdHkoKTsKKyAgICAK
KyAgICB0aGlzLl92ZWNIID0gVmVjdG9yMy56ZXJvcygpOworICAgIHRoaXMuX3ZlY0hbMF0gPSAx
OworICAgIAorICAgIHRoaXMuX21hdFEgPSBNYXRyaXgzLmlkZW50aXR5KCk7CisgICAgdGhpcy5f
UiA9IDEwMDA7CisgICAgCisgICAgdGhpcy5fdmVjWF9lc3QgPSBWZWN0b3IzLm9uZXMoKTsKKyAg
ICB0aGlzLl9tYXRQX2VzdCA9IE1hdHJpeDMuemVyb3MoKTsKK30KKworRXN0aW1hdG9yLnByb3Rv
dHlwZSA9IHsKKyAgICBlc3RpbWF0ZSA6IGZ1bmN0aW9uKHRpbWVEZWx0YSwgY3VycmVudCkgewor
ICAgICAgICAvLyBVcGRhdGUgdGhlIHRyYW5zaXRpb24gbWF0cml4CisgICAgICAgIHRoaXMuX21h
dEFbTWF0cml4My5wb3MoMCwgMildID0gMTsKKworICAgICAgICAvLyBQcmVkaWN0ZWQgc3RhdGUg
YW5kIGNvdmFyaWFuY2UKKyAgICAgICAgdmFyIHZlY1hfcHJkID0gTWF0cml4My5tdWx0aXBseVZl
Y3RvcjModGhpcy5fbWF0QSwgdGhpcy5fdmVjWF9lc3QpOworICAgICAgICB2YXIgbWF0UF9wcmQg
PSBNYXRyaXgzLmFkZChNYXRyaXgzLm11bHRpcGx5TWF0cml4MyhNYXRyaXgzLm11bHRpcGx5TWF0
cml4Myh0aGlzLl9tYXRBLCB0aGlzLl9tYXRQX2VzdCksIE1hdHJpeDMudHJhbnNwb3NlKHRoaXMu
X21hdEEpKSwgdGhpcy5fbWF0USk7CisKKyAgICAgICAgLy8gRXN0aW1hdGlvbgorICAgICAgICB2
YXIgdmVjQiA9IFZlY3RvcjMubXVsdGlwbHlNYXRyaXgzKHRoaXMuX3ZlY0gsIE1hdHJpeDMudHJh
bnNwb3NlKG1hdFBfcHJkKSk7CisgICAgICAgIHZhciBTID0gVmVjdG9yMy5tdWx0aXBseVZlY3Rv
cjModmVjQiwgdGhpcy5fdmVjSCkgKyB0aGlzLl9SOworCisgICAgICAgIHZhciB2ZWNHYWluID0g
VmVjdG9yMy5zY2FsZSgxL1MsIHZlY0IpOworICAgICAgICAKKyAgICAgICAgLy8gRXN0aW1hdGVk
IHN0YXRlIGFuZCBjb3ZhcmlhbmNlCisgICAgICAgIHRoaXMuX3ZlY1hfZXN0ID0gVmVjdG9yMy5h
ZGQodmVjWF9wcmQsIFZlY3RvcjMuc2NhbGUoY3VycmVudCAtIFZlY3RvcjMubXVsdGlwbHlWZWN0
b3IzKHRoaXMuX3ZlY0gsIHZlY1hfcHJkKSwgdmVjR2FpbikpOworICAgICAgICB0aGlzLl9tYXRQ
X2VzdCA9IE1hdHJpeDMuc3VidHJhY3QobWF0UF9wcmQsIE1hdHJpeDMuc2NhbGUoVmVjdG9yMy5t
dWx0aXBseVZlY3RvcjModmVjR2FpbiwgdGhpcy5fdmVjSCksIG1hdFBfcHJkKSk7CisKKyAgICAg
ICAgLy8gQ29tcHV0ZSB0aGUgZXN0aW1hdGVkIG1lYXN1cmVtZW50CisgICAgICAgIHJldHVybiBW
ZWN0b3IzLm11bHRpcGx5VmVjdG9yMyh0aGlzLl92ZWNILCAgdGhpcy5fdmVjWF9lc3QpOworICAg
IH0KK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMv
c3RhZ2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L3Jlc291cmNlcy9zdGFnZS5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0MiBAQAorZnVuY3Rpb24gU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykgeworICAgIHRoaXMuZWxl
bWVudCA9IGVsZW1lbnQ7Cit9CisKK1N0YWdlLnByb3RvdHlwZSA9IHsKKyAgICBzaXplIDogZnVu
Y3Rpb24oKSB7CisgICAgICAgIHZhciBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0
aGlzLmVsZW1lbnQpOworICAgICAgICB2YXIgcGFkZGluZyA9IG5ldyBJbnNldHMoCisgICAgICAg
ICAgICBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nVG9wKSwKKyAgICAgICAgICAgIHBhcnNlRmxv
YXQoc3R5bGVzLnBhZGRpbmdSaWdodCksCisgICAgICAgICAgICBwYXJzZUZsb2F0KHN0eWxlcy5w
YWRkaW5nQm90dG9tKSwKKyAgICAgICAgICAgIHBhcnNlRmxvYXQoc3R5bGVzLnBhZGRpbmdUb3Ap
KTsKKyAgICAgICAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLmVsZW1lbnQuY2xpZW50V2lkdGggLSBw
YWRkaW5nLndpZHRoKCksIHRoaXMuZWxlbWVudC5jbGllbnRIZWlnaHQgLSBwYWRkaW5nLmhlaWdo
dCgpKTsKKyAgICB9LAorICAgIGNsZWFyIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0
aGlzLnR1bmUoLXRoaXMudHVuZSgwKSk7CisgICAgfSwKKyAgICByYW5kb20gOiBmdW5jdGlvbiht
aW4sIG1heCkgeworICAgICAgICByZXR1cm4gKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkg
KyBtaW47CisgICAgfSwKKyAgICByYW5kb21JbnQgOiBmdW5jdGlvbihtaW4sIG1heCkgeworICAg
ICAgICByZXR1cm4gTWF0aC5mbG9vcih0aGlzLnJhbmRvbShtaW4sIG1heCkpOworICAgIH0sCisg
ICAgcmFuZG9tUG9zaXRpb24gOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIG1heCA9IHRoaXMu
c2l6ZSgpLnN1YnRyYWN0KHRoaXMucGFydGljbGVTaXplKTsKKyAgICAgICAgcmV0dXJuIG5ldyBQ
b2ludCh0aGlzLnJhbmRvbUludCgwLCBtYXgueCksIHRoaXMucmFuZG9tSW50KDAsIG1heC55KSk7
CisgICAgfSwKKyAgICByYW5kb21WZWxvY2l0eSA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1
cm4gdGhpcy5yYW5kb20odGhpcy5fbWF4VmVsb2NpdHkgLyA4LCB0aGlzLl9tYXhWZWxvY2l0eSk7
CisgICAgfSwKKyAgICByYW5kb21BbmdsZSA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4g
dGhpcy5yYW5kb20oMCwgTWF0aC5QSSAqIDIpOworICAgIH0sCisgICAgcmFuZG9tQ29sb3IgOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgdmFyIG1pbiA9IDMyOworICAgICAgICB2YXIgbWF4ID0gMjU2
IC0gMzI7CisgICAgICAgIHJldHVybiAiIyIKKyAgICAgICAgICAgICsgdGhpcy5yYW5kb21JbnQo
bWluLCBtYXgpLnRvU3RyaW5nKDE2KQorICAgICAgICAgICAgKyB0aGlzLnJhbmRvbUludChtaW4s
IG1heCkudG9TdHJpbmcoMTYpCisgICAgICAgICAgICArIHRoaXMucmFuZG9tSW50KG1pbiwgbWF4
KS50b1N0cmluZygxNik7CisgICAgfQorfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3Jlc291cmNlcy91dGlsaXRpZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy91dGlsaXRpZXMuanMJKHJldmlzaW9u
IDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3V0aWxp
dGllcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACit3aW5kb3cuYmVuY2htYXJr
Q2xpZW50ID0geworICAgIF9wYXJzZSA6IGZ1bmN0aW9uKHN0ciwgc2VwKSB7CisgICAgICAgIHZh
ciBvdXRwdXQgPSB7fTsKKyAgICAgICAgc3RyLnNwbGl0KHNlcCkuZm9yRWFjaChmdW5jdGlvbihw
YXJ0KSB7CisgICAgICAgICAgICB2YXIgaXRlbSA9IHBhcnQuc3BsaXQoIj0iKTsKKyAgICAgICAg
ICAgIHZhciB2YWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudChpdGVtWzFdKTsKKyAgICAgICAgICAg
IGlmICh2YWx1ZVswXSA9PSAnXCcnICkKKyAgICAgICAgICAgICAgICBvdXRwdXRbaXRlbVswXV0g
PSB2YWx1ZS5zdWJzdHIoMSwgdmFsdWUubGVuZ3RoIC0gMik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgb3V0cHV0W2l0ZW1bMF1dID0gdmFsdWU7ICAgICAgICAgICAgICAgIAor
ICAgICAgICAgIH0pOworICAgICAgICByZXR1cm4gb3V0cHV0OworICAgIH0sCisgICAgcGFyc2VQ
YXJhbWV0ZXJzIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLl9wYXJzZSh3aW5k
b3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cigxKSwgIiYiKTsKKyAgICB9LAorICAgIHBhcnNlQXJn
dW1lbnRzIDogZnVuY3Rpb24oc3RyKSB7CisgICAgICAgIHJldHVybiB0aGlzLl9wYXJzZShzdHIs
ICIgIik7CisgICAgfSwKKyAgICBleHRlbmRPYmplY3QgOiBmdW5jdGlvbihvYmoxLCBvYmoyKSB7
CisgICAgICAgIGZvciAodmFyIGF0dHJuYW1lIGluIG9iajIpCisgICAgICAgICAgICBvYmoxW2F0
dHJuYW1lXSA9IG9iajJbYXR0cm5hbWVdOworICAgICAgICByZXR1cm4gb2JqMTsKKyAgICB9LAor
ICAgIGNvcHlPYmplY3QgOiBmdW5jdGlvbihvYmopIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZXh0
ZW5kT2JqZWN0KHt9LCBvYmopOworICAgIH0sCisgICAgbWVyZ2VPYmplY3RzIDogZnVuY3Rpb24o
b2JqMSwgb2JqMikgeworICAgICAgICByZXR1cm4gdGhpcy5leHRlbmRPYmplY3QodGhpcy5jb3B5
T2JqZWN0KG9iajEpLCBvYmoyKTsKKyAgICB9Cit9OworCisvLyBUaGlzIGV2ZW50IGxpc3RlbmVy
IHJ1bnMgdGhlIHRlc3QgaWYgaXQgaXMgbG9hZGVkIG91dHNpZGUgdGhlIGJlbmNobWFyayBydW5u
ZXIuCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgIGlm
ICh3aW5kb3cuc2VsZiAhPT0gd2luZG93LnRvcCkKKyAgICAgICAgcmV0dXJuOworICAgIHdpbmRv
dy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKG51bGwsIG51bGwsIDMwMDAwLCA1MCwgbnVsbCwgbnVs
bCk7CisgICAgd2luZG93LmJlbmNobWFyay5zdGFydCgpOworfSk7CisKKy8vIFRoaXMgZnVuY3Rp
b24gaXMgY2FsbGVkIGZyb20gdGhlIHN1aXRlIGNvbnRyb2xsZXIgcnVuLWNhbGxiYWNrIHdoZW4g
cnVubmluZyB0aGUgYmVuY2htYXJrIHJ1bm5lci4KK3dpbmRvdy5ydW5CZW5jaG1hcmsgPSBmdW5j
dGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7Cisg
ICAgdmFyIG1lcmdlT3B0aW9ucyA9IHdpbmRvdy5iZW5jaG1hcmtDbGllbnQubWVyZ2VPYmplY3Rz
KG9wdGlvbnMsIHdpbmRvdy5iZW5jaG1hcmtDbGllbnQucGFyc2VQYXJhbWV0ZXJzKCkpOworICAg
IHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKHN1aXRlLCB0ZXN0LCBtZXJnZU9wdGlvbnMs
IHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7CisgICAgcmV0dXJuIHdpbmRvdy5iZW5jaG1hcmsu
cnVuKCk7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3Vy
Y2VzL3lpbi15YW5nLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnN2ZwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcuc3ZnCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKKzxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjAwIDIwMCI+DQorICA8ZGVmcz4NCisgICAgPGNsaXBQYXRo
IGlkPSJsZWZ0LWhhbGYiPg0KKyAgICAgIDxyZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0iMjAwIi8+
DQorICAgIDwvY2xpcFBhdGg+DQorICAgIDxjbGlwUGF0aCBpZD0icmlnaHQtaGFsZiI+DQorICAg
ICAgPHJlY3QgeD0iMTAwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjIwMCIvPg0KKyAgICA8L2NsaXBQ
YXRoPg0KKyAgPC9kZWZzPg0KKyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iMTAwIiByPSI5OCIgZmls
bD0ibm9uZSIgc3Ryb2tlPSJncmVlbiIgc3Ryb2tlLXdpZHRoPSIyIi8+DQorICA8Y2lyY2xlIGN4
PSIxMDAiIGN5PSIxMDAiIHI9Ijk4IiBmaWxsPSJ3aGl0ZSIgY2xpcC1wYXRoPSJ1cmwoI2xlZnQt
aGFsZikiLz4NCisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjEwMCIgcj0iOTgiIGZpbGw9ImdyZWVu
IiBjbGlwLXBhdGg9InVybCgjcmlnaHQtaGFsZikiLz4NCisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9
IjUwIiAgcj0iNDkiIGZpbGw9ImdyZWVuIi8+DQorICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSIxNDgi
IHI9IjQ5IiBmaWxsPSJ3aGl0ZSIvPg0KKyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iNTAiICByPSIx
MCIgZmlsbD0id2hpdGUiLz4gICAgDQorICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSIxNDgiIHI9IjEw
IiBmaWxsPSJncmVlbiIvPg0KKzwvc3ZnPg0KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9sYXllcmlu
Zy10ZXh0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAgLnRleHQtbGF5ZXIgeworICAgICAg
Zm9udC1zaXplOiAxMS41cHg7CisgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICBsZWZ0
OiAwcHg7CisgICAgICB0b3A6IDBweDsKKyAgICAgIHBhZGRpbmc6IDVweDsKKyAgICAgIGJhY2tn
cm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICAgIH0KKyAgPC9zdHlsZT4gIAorICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvYmVuY2ht
YXJrLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48
L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48
L3NjcmlwdD4gIAorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2Ny
aXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICA8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+CisgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvbGF5ZXJpbmctdGV4dC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRp
diBpZD0ic3RhZ2UiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3Vy
Y2VzL2xheWVyaW5nLXRleHQuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDI1OSBAQAorZnVuY3Rpb24gTGF5ZXJpbmdUZXh0QW5pbWF0b3IoYmVu
Y2htYXJrKSB7CisgICAgQW5pbWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1hcmspOworfTsKKworTGF5
ZXJpbmdUZXh0QW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShBbmltYXRvci5wcm90
b3R5cGUpOworTGF5ZXJpbmdUZXh0QW5pbWF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTGF5
ZXJpbmdUZXh0QW5pbWF0b3I7CisKK0xheWVyaW5nVGV4dEFuaW1hdG9yLnByb3RvdHlwZS5hbmlt
YXRlID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKCFBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZS5j
YWxsKHRoaXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdGhpcy5fYmVuY2htYXJrLl9z
dGFnZS5hbmltYXRlKHRoaXMudGltZURlbHRhKCkpOworICAgIHJldHVybiB0cnVlOworfQorCitm
dW5jdGlvbiBMYXllcmluZ1RleHRTdGFnZShlbGVtZW50LCBvcHRpb25zKSB7CisgICAgU3RhZ2Uu
Y2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVu
dCA9IHRoaXMuZWxlbWVudDsKKyAgICB0aGlzLl90ZXh0RWxlbWVudHMgPSBbXTsKKyAgICB0aGlz
Ll90ZXh0SXRlbUluZGV4ID0gMDsKKyAgICB0aGlzLl9jb2xvckluZGV4ID0gMDsKKyAgICB0aGlz
Ll9hbmltYXRlQ291bnRzID0gMDsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zID0g
WworICAgICI8ZGl2IGlkPSdpZF8wMCcgY2xhc3M9J3RleHQtbGF5ZXInPiIsCisgICAgICAgICI8
aDIgaWQ9J2lkXzAxJz5DdXN0b21pemVkIHN0eWxlczwvaDI+IiwKKyAgICAgICAgIjxwIGlkPSdp
ZF8wMic+SWYgeW91IHdhbnQgZm9ybWF0dGluZyBjaG9pY2VzIHRoYXQgYXJlIG5vdCBhdmFpbGFi
bGUgZnJvbSB0aGUgYnVpbHQtaW4gc3R5bGVzLCBRdWljayBTdHlsZSBzZXRzLCBhbmQgdGhlbWVz
LCB5b3UgY2FuIGNyZWF0ZSBjdXN0b20gc3R5bGVzIHRvIHN1aXQgeW91ciBuZWVkcy48L3A+IiwK
KyAgICAgICAgIjxwIGlkPSdpZF8wMyc+VGhlIGVhc2llc3Qgd2F5IHRvIGNyZWF0ZSBhIGN1c3Rv
bSBzdHlsZSBpcyB0byBtb2RpZnkgYSBidWlsdC1pbiBzdHlsZSBhbmQgdGhlbiBzYXZlIGl0IGFz
IGEgbmV3IHN0eWxlLjwvcD4iLAorICAgICAgICAiPHAgaWQ9J2lkXzA0Jz5Gb3IgZXhhbXBsZSwg
eW91IG1pZ2h0IHdhbnQgdG8gZm9ybWF0IGEgcGFyYWdyYXBoIG9mIHF1b3RlZCBtYXRlcmlhbCB3
aXRoIGEgaGFsZi1pbmNoIGluZGVudCBmcm9tIHRoZSBsZWZ0IGFuZCByaWdodCBtYXJnaW5zLCBz
aW5nbGUgc3BhY2VkLiBUaGVyZSBpcyBubyBidWlsdC1pbiBzdHlsZSB0byBhY2NvbW1vZGF0ZSB0
aGlzLCBidXQgeW91IGNhbiBjcmVhdGUgYSBjdXN0b20gc3R5bGUgYnkgZG9pbmcgdGhlIGZvbGxv
d2luZzo8L3A+IiwKKyAgICAgICAgIjxvbCB0eXBlPScxJyBpZD0naWRfMDUnPiIsCisgICAgICAg
ICAgICAiPGxpIGlkPSdpZF8wNic+PHA+Q2xpY2sgaW4gdGhlIHBhcmFncmFwaCB5b3Ugd2FudCB0
byBmb3JtYXQuPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzA3Jz48cD5PbiB0
aGUgPGI+SG9tZTwvYj4gdGFiLCBjbGljayB0aGUgPGI+UGFyYWdyYXBoPC9iPiBEaWFsb2cgQm94
IExhdW5jaGVyLjwvcD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8wOCc+PHA+SW4g
dGhlIDxiPkluZGVudGF0aW9uPC9iPiBzZWN0aW9uLCB0eXBlIDxiIGNsYXNzPSdvY3BMaXRlcmFs
Jz4wLjUnPC9iPiBpbiB0aGUgPGI+TGVmdDwvYj4gYW5kIDxiPlJpZ2h0PC9iPiBib3hlcy48L3A+
PC9saT4iLAorICAgICAgICAgICAgIjxsaSBpZD0naWRfMDknPjxwPkluIHRoZSA8Yj5TcGFjaW5n
PC9iPiBzZWN0aW9uLCBpbiB0aGUgPGI+TGluZSBzcGFjaW5nPC9iPiBsaXN0LCBjbGljayA8Yj5T
aW5nbGU8L2I+LjwvcD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8xMCc+PHA+Q2xp
Y2sgPGI+T0s8L2I+LjwvcD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8xMSc+PHA+
UmlnaHQtY2xpY2sgaW4gdGhlIHBhcmFncmFwaCwgcG9pbnQgdG8gPGI+U3R5bGVzPC9iPiwgYW5k
IHRoZW4gY2xpY2sgPGI+U2F2ZSBTZWxlY3Rpb24gYXMgYSBOZXcgUXVpY2sgU3R5bGU8L2I+Ljwv
cD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8xMic+PHA+SW4gdGhlIDxiPk5hbWU8
L2I+IGJveCwgdHlwZSBhIG5hbWUgZm9yIHRoZSBzdHlsZSwgc3VjaCBhcyA8Yj5CbG9jayBxdW90
ZTwvYj4uIDwvcD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8xMyc+PHA+SWYgeW91
IHdhbnQgdGhlIHN0eWxlIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBnYWxsZXJ5IG9mIHN0eWxlcyBv
biB0aGUgPGI+SG9tZTwvYj4gdGFiLCBhbmQgaWYgeW91IHdhbnQgdGhlIHN0eWxlIHRvIGJlIGEg
bGlua2VkIHN0eWxlLCBjbGljayA8Yj5PSzwvYj4uPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8
bGkgaWQ9J2lkXzE0Jz4iLAorICAgICAgICAgICAgICAgICI8cCBpZD0naWRfMTUnPklmIHlvdSBk
b24ndCB3YW50IHRoZSBzdHlsZSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgZ2FsbGVyeSwgb3IgaWYg
eW91IHdhbnQgdGhlIHN0eWxlIHRvIGJlIGVpdGhlciBhIHBhcmFncmFwaCBvciBhIGNoYXJhY3Rl
ciBzdHlsZSwgY2xpY2sgPGI+TW9kaWZ5PC9iPiBhbmQgZG8gb25lIG9yIGJvdGggb2YgdGhlIGZv
bGxvd2luZzo8L3A+IiwKKyAgICAgICAgICAgICAgICAiPHVsIGlkPSdpZF8xNic+IiwKKyAgICAg
ICAgICAgICAgICAgICAgIjxsaSBpZD0naWRfMTcnPjxwPkF0IHRoZSBib3R0b20gb2YgdGhlIGRp
YWxvZyBib3gsIGNsZWFyIHRoZSA8Yj5BZGQgdG8gUXVpY2sgU3R5bGU8L2I+IGxpc3QgYm94Ljwv
cD48L2xpPiIsCisgICAgICAgICAgICAgICAgICAgICI8bGkgaWQ9J2lkXzE4Jz48cD5JbiB0aGUg
PGI+U3R5bGUgdHlwZTwvYj4gbGlzdCwgY2xpY2sgPGI+UGFyYWdyYXBoPC9iPiBvciA8Yj5DaGFy
YWN0ZXI8L2I+LjwvcD48L2xpPiIsCisgICAgICAgICAgICAgICAgIjwvdWw+IiwKKyAgICAgICAg
ICAgICI8L2xpPiIsCisgICAgICAgICI8L29sPiIsCisgICAgICAgICI8cCBpZD0naWRfMTknPklm
IHlvdSBzd2l0Y2ggdG8gYSBkaWZmZXJlbnQgUXVpY2sgU3R5bGUgc2V0LCB5b3UgbWF5IG5lZWQg
dG8gYWRqdXN0IHRoZSBzZXR0aW5ncyBvZiB5b3VyIGN1c3RvbSBzdHlsZS4gSW4gdGhlIGV4YW1w
bGUgaGVyZSwgaWYgeW91IGNyZWF0ZSB0aGUgQmxvY2sgcXVvdGUgc3R5bGUgd2hpbGUgdGhlIFdv
cmQgMjAwNyBRdWljayBTdHlsZSBzZXQgaXMgYXBwbGllZCwgYW5kIHRoZW4geW91IHN3aXRjaCB0
byB0aGUgVHJhZGl0aW9uYWwgUXVpY2sgU3R5bGUgc2V0LCB5b3UgY2FuIGNoYW5nZSB0aGUgQmxv
Y2sgcXVvdGUgc3R5bGUgdG8gcmVtb3ZlIHRoZSBmaXJzdC1saW5lIGluZGVudGF0aW9uIHRoYXQg
dGhlIFRyYWRpdGlvbmFsIFF1aWNrIFN0eWxlIHNldCBpbnRyb2R1Y2VzLiBUbyBjaGFuZ2UgYSBz
dHlsZSwgZG8gdGhlIGZvbGxvd2luZzo8L3A+IiwKKyAgICAgICAgIjxvbCB0eXBlPScxJyBpZD0n
aWRfMjAnPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8yMSc+PHA+T24gdGhlIDxiPkhvbWU8
L2I+IHRhYiBpbiB0aGUgPGI+U3R5bGVzPC9iPiBncm91cCwgcmlnaHQtY2xpY2sgPGI+QmxvY2sg
cXVvdGU8L2I+LCBhbmQgdGhlbiBjbGljayA8Yj5Nb2RpZnk8L2I+LjwvcD48L2xpPiIsCisgICAg
ICAgICAgICAiPGxpIGlkPSdpZF8yMic+PHA+Q2xpY2sgPGI+Rm9ybWF0PC9iPiwgYW5kIHRoZW4g
Y2xpY2sgPGI+UGFyYWdyYXBoPC9iPi48L3A+PC9saT4iLAorICAgICAgICAgICAgIjxsaSBpZD0n
aWRfMjMnPjxwPkluIHRoZSA8Yj5JbmRlbnRhdGlvbjwvYj4gc2VjdGlvbiwgaW4gdGhlIDxiPlNw
ZWNpYWw8L2I+IGxpc3QsIGNsaWNrIDxiPihub25lKTwvYj4uPC9wPjwvbGk+IiwKKyAgICAgICAg
Ijwvb2w+IiwKKyAgICAgICAgIjxwIGlkPSdpZF8yNCc+VGhlIG1vcmUgY2hhcmFjdGVyaXN0aWNz
IHRoYXQgeW91IHNwZWNpZnkgZm9yIHRoZSBzdHlsZSwgdGhlIGxlc3MgdGhlIHN0eWxlIGlzIGFm
ZmVjdGVkIGJ5IHN3aXRjaGluZyBRdWljayBTdHlsZSBzZXRzIG9yIHRoZW1lcy48L3A+IiwKKyAg
ICAiPC9kaXY+IgorXTsKKworTGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VUZXh0SXRlbSA9IGZ1bmN0
aW9uKHRleHRJdGVtKSB7CisgICAgdmFyIHByYXNlUmVzdWx0ID0ge307CisgICAgcHJhc2VSZXN1
bHQudGFnU3RhcnQgPSB0ZXh0SXRlbS5tYXRjaCgvPCguKj8pPi9nKVswXTsKKyAgICB2YXIgc3Bh
Y2VJbmRleCA9IHByYXNlUmVzdWx0LnRhZ1N0YXJ0LmluZGV4T2YoIiAiKTsKKyAgICBwcmFzZVJl
c3VsdC5ub2RlTmFtZSA9IHByYXNlUmVzdWx0LnRhZ1N0YXJ0LnN1YnN0cmluZygxLCBzcGFjZUlu
ZGV4ICE9IC0xID8gc3BhY2VJbmRleCA6IHByYXNlUmVzdWx0LnRhZ1N0YXJ0Lmxlbmd0aCAtIDEp
OworICAgIHByYXNlUmVzdWx0LmFyZ3MgPSBzcGFjZUluZGV4ICE9IC0xID8gd2luZG93LmJlbmNo
bWFya0NsaWVudC5wYXJzZUFyZ3VtZW50cyhwcmFzZVJlc3VsdC50YWdTdGFydC5zdWJzdHJpbmco
c3BhY2VJbmRleCArIDEsIHByYXNlUmVzdWx0LnRhZ1N0YXJ0Lmxlbmd0aCAtIDEpKSA6IHt9Owor
ICAgIHZhciB0YWdFbmQgPSAiPC8iICsgcHJhc2VSZXN1bHQubm9kZU5hbWUgKyAiPiI7ICAgICAg
ICAgICAgICAgIAorICAgIHByYXNlUmVzdWx0LnRhZ0VuZCA9IHRleHRJdGVtLmVuZHNXaXRoKHRh
Z0VuZCkgPyB0YWdFbmQgOiAiIjsKKyAgICByZXR1cm4gcHJhc2VSZXN1bHQ7Cit9CisKK0xheWVy
aW5nVGV4dFN0YWdlLmlzT3BlbmluZ1RleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW0pIHsKKyAg
ICByZXR1cm4gIUxheWVyaW5nVGV4dFN0YWdlLnBhcnNlVGV4dEl0ZW0odGV4dEl0ZW0pLnRhZ0Vu
ZC5sZW5ndGg7Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLmlzQ2xvc2luZ1RleHRJdGVtID0gZnVu
Y3Rpb24odGV4dEl0ZW0pIHsKKyAgICByZXR1cm4gdGV4dEl0ZW0uaW5kZXhPZigiLyIpID09ICsx
OworfQorCitMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFncyA9IExheWVyaW5nVGV4dFN0
YWdlLnRleHRJdGVtcy5tYXAoZnVuY3Rpb24odGV4dEl0ZW0peworICAgdmFyIHRleHRJdGVtRmxh
Z3MgPSB7fTsKKyAgIHRleHRJdGVtRmxhZ3MuaXNPcGVuaW5nID0gTGF5ZXJpbmdUZXh0U3RhZ2Uu
aXNPcGVuaW5nVGV4dEl0ZW0odGV4dEl0ZW0pOworICAgdGV4dEl0ZW1GbGFncy5pc0Nsb3Npbmcg
PSBMYXllcmluZ1RleHRTdGFnZS5pc0Nsb3NpbmdUZXh0SXRlbSh0ZXh0SXRlbSk7ICAgCisgICBy
ZXR1cm4gdGV4dEl0ZW1GbGFnczsKK30pOworCitMYXllcmluZ1RleHRTdGFnZS5pc0NvbG9yYWJs
ZVRleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW1GbGFncykgeworICAgIHJldHVybiAhKHRleHRJ
dGVtRmxhZ3MuaXNPcGVuaW5nIHx8IHRleHRJdGVtRmxhZ3MuaXNDbG9zaW5nKTsKK30KKworTGF5
ZXJpbmdUZXh0U3RhZ2UuaXNJbnNlcnRhYmxlVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbUZs
YWdzKSB7CisgICAgcmV0dXJuICF0ZXh0SXRlbUZsYWdzLmlzQ2xvc2luZzsKK30KKworTGF5ZXJp
bmdUZXh0U3RhZ2UuY29sb3JhYmxlVGV4dEl0ZW1zID0gTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0
ZW1zRmxhZ3MuZmlsdGVyKGZ1bmN0aW9uKHRleHRJdGVtRmxhZ3MpIHsKKyAgICByZXR1cm4gTGF5
ZXJpbmdUZXh0U3RhZ2UuaXNDb2xvcmFibGVUZXh0SXRlbSh0ZXh0SXRlbUZsYWdzKTsKK30pLmxl
bmd0aDsKKworTGF5ZXJpbmdUZXh0U3RhZ2UuaW5zZXJ0YWJsZVRleHRJdGVtcyA9IExheWVyaW5n
VGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzLmZpbHRlcihmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKSB7
CisgICAgcmV0dXJuIExheWVyaW5nVGV4dFN0YWdlLmlzSW5zZXJ0YWJsZVRleHRJdGVtKHRleHRJ
dGVtRmxhZ3MpOworfSkubGVuZ3RoOworCitMYXllcmluZ1RleHRTdGFnZS5jb2xvckluZGV4VG9U
ZXh0RWxlbWVudEluZGV4ID0gZnVuY3Rpb24oY29sb3JJbmRleCkgeworICAgIHZhciB0ZXh0RWxl
bWVudEluZGV4ID0gMDsKKyAgICB2YXIgaW5kZXggPSAwOworICAgIAorICAgIGZvciAodmFyIHRl
eHRJdGVtSW5kZXggPSAwOyB0ZXh0SXRlbUluZGV4IDwgTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0
ZW1zRmxhZ3MubGVuZ3RoOyArK3RleHRJdGVtSW5kZXgpIHsKKyAgICAgICAgaWYgKExheWVyaW5n
VGV4dFN0YWdlLmlzQ29sb3JhYmxlVGV4dEl0ZW0oTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1z
RmxhZ3NbdGV4dEl0ZW1JbmRleF0pKSB7CisgICAgICAgICAgICBpZiAoKytpbmRleCA+IGNvbG9y
SW5kZXgpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKExh
eWVyaW5nVGV4dFN0YWdlLmlzSW5zZXJ0YWJsZVRleHRJdGVtKExheWVyaW5nVGV4dFN0YWdlLnRl
eHRJdGVtc0ZsYWdzW3RleHRJdGVtSW5kZXhdKSkKKyAgICAgICAgICAgICsrdGV4dEVsZW1lbnRJ
bmRleDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRleHRFbGVtZW50SW5kZXg7Cit9CisKK0xh
eWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2UucHJvdG90eXBl
KTsKK0xheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IExheWVyaW5nVGV4
dFN0YWdlOworCitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX25leHRUZXh0SXRlbSA9IGZ1
bmN0aW9uKHRleHRJdGVtRmxhZ3MpIHsKKyAgICB2YXIgdGV4dEl0ZW0gPSBMYXllcmluZ1RleHRT
dGFnZS50ZXh0SXRlbXNbdGhpcy5fdGV4dEl0ZW1JbmRleF07CisgICAgd2luZG93LmJlbmNobWFy
a0NsaWVudC5leHRlbmRPYmplY3QodGV4dEl0ZW1GbGFncywgTGF5ZXJpbmdUZXh0U3RhZ2UudGV4
dEl0ZW1zRmxhZ3NbdGhpcy5fdGV4dEl0ZW1JbmRleF0pOworICAgIHRoaXMuX3RleHRJdGVtSW5k
ZXggPSAodGhpcy5fdGV4dEl0ZW1JbmRleCArIDEpICUgTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0
ZW1zLmxlbmd0aDsKKyAgICByZXR1cm4gdGV4dEl0ZW07Cit9CisKK0xheWVyaW5nVGV4dFN0YWdl
LnByb3RvdHlwZS5fcHJldmlvdXNUZXh0SXRlbSA9IGZ1bmN0aW9uKHRleHRJdGVtRmxhZ3MpIHsK
KyAgICB0aGlzLl90ZXh0SXRlbUluZGV4ID0gKHRoaXMuX3RleHRJdGVtSW5kZXggKyBMYXllcmlu
Z1RleHRTdGFnZS50ZXh0SXRlbXMubGVuZ3RoIC0gMSkgJSBMYXllcmluZ1RleHRTdGFnZS50ZXh0
SXRlbXMubGVuZ3RoOworICAgIHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuZXh0ZW5kT2JqZWN0KHRl
eHRJdGVtRmxhZ3MsIExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzW3RoaXMuX3RleHRJ
dGVtSW5kZXhdKTsgICAgCisgICAgcmV0dXJuIExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc1t0
aGlzLl90ZXh0SXRlbUluZGV4XTsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9w
dXNoVGV4dEVsZW1lbnQgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgdGV4dEl0ZW1GbGFncyA9IHt9
OworICAgIHZhciB0ZXh0SXRlbSA9IHRoaXMuX25leHRUZXh0SXRlbSh0ZXh0SXRlbUZsYWdzKTsK
KyAgICBmb3IgKCA7IHRleHRJdGVtRmxhZ3MuaXNDbG9zaW5nOyB0ZXh0SXRlbSA9IHRoaXMuX25l
eHRUZXh0SXRlbSh0ZXh0SXRlbUZsYWdzKSkKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJl
bnQgPSB0aGlzLl90ZXh0RWxlbWVudFBhcmVudC5wYXJlbnROb2RlOworCisgICAgdmFyIHByYXNl
UmVzdWx0ID0gTGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VUZXh0SXRlbSh0ZXh0SXRlbSk7CisgICAg
dGV4dEl0ZW0gPSB0ZXh0SXRlbS5zdWJzdHJpbmcocHJhc2VSZXN1bHQudGFnU3RhcnQubGVuZ3Ro
LCB0ZXh0SXRlbS5sZW5ndGggLSBwcmFzZVJlc3VsdC50YWdFbmQubGVuZ3RoKTsKKworICAgIHZh
ciB0ZXh0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQocHJhc2VSZXN1bHQubm9kZU5h
bWUpOworCisgICAgZm9yICh2YXIgYXR0cm5hbWUgaW4gcHJhc2VSZXN1bHQuYXJncykKKyAgICAg
ICAgdGV4dEVsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJuYW1lLCBwcmFzZVJlc3VsdC5hcmdzW2F0
dHJuYW1lXSk7CisKKyAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudC5hcHBlbmRDaGlsZCh0ZXh0
RWxlbWVudCk7CisgICAgCisgICAgaWYgKCFwcmFzZVJlc3VsdC50YWdFbmQubGVuZ3RoKQorICAg
ICAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudCA9IHRleHRFbGVtZW50OworCisgICAgdGV4dEVs
ZW1lbnQuaW5uZXJIVE1MID0gdGV4dEl0ZW07CisgICAgCisgICAgdGhpcy5fdGV4dEVsZW1lbnRz
LnB1c2godGV4dEVsZW1lbnQpOworICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3Ro
OworfQorCitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX3BvcFRleHRFbGVtZW50ID0gZnVu
Y3Rpb24oKSB7CisgICAgdmFyIHRleHRJdGVtRmxhZ3MgPSB7fTsgICAgCisgICAgdmFyIHRleHRJ
dGVtID0gdGhpcy5fcHJldmlvdXNUZXh0SXRlbSh0ZXh0SXRlbUZsYWdzKTsKKyAgICBmb3IgKCA7
IHRleHRJdGVtRmxhZ3MuaXNDbG9zaW5nOyB0ZXh0SXRlbSA9IHRoaXMuX3ByZXZpb3VzVGV4dEl0
ZW0odGV4dEl0ZW1GbGFncykpCisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGhp
cy5fdGV4dEVsZW1lbnRQYXJlbnQubGFzdENoaWxkOworCisgICAgaWYgKHRleHRJdGVtRmxhZ3Mu
aXNPcGVuaW5nKQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudCA9IHRoaXMuX3RleHRF
bGVtZW50UGFyZW50LnBhcmVudE5vZGU7CisKKyAgICB2YXIgdGV4dEVsZW1lbnQgPSB0aGlzLl90
ZXh0RWxlbWVudHNbdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aCAtIDFdOworICAgIAorICAgIGlm
ICh0ZXh0RWxlbWVudCAmJiB0ZXh0RWxlbWVudC5wYXJlbnROb2RlICYmIHRleHRFbGVtZW50LnBh
cmVudE5vZGUgPT0gdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQpCisgICAgICAgIHRoaXMuX3RleHRF
bGVtZW50UGFyZW50LnJlbW92ZUNoaWxkKHRleHRFbGVtZW50KTsKKworICAgIHRoaXMuX3RleHRF
bGVtZW50cy5wb3AoKTsKKyAgICByZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsKK30K
KworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9jb2xvclRleHRJdGVtID0gZnVuY3Rpb24o
Y29sb3IpIHsKKyAgICB2YXIgdGV4dEVsZW1lbnRJbmRleCA9IExheWVyaW5nVGV4dFN0YWdlLmNv
bG9ySW5kZXhUb1RleHRFbGVtZW50SW5kZXgodGhpcy5fY29sb3JJbmRleCk7CisgICAgZm9yICgg
OyB0ZXh0RWxlbWVudEluZGV4IDwgdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsgdGV4dEVsZW1l
bnRJbmRleCArPSBMYXllcmluZ1RleHRTdGFnZS5pbnNlcnRhYmxlVGV4dEl0ZW1zKQorICAgICAg
ICB0aGlzLl90ZXh0RWxlbWVudHNbdGV4dEVsZW1lbnRJbmRleF0uc3R5bGUuYmFja2dyb3VuZENv
bG9yID0gY29sb3I7Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5hbmltYXRlID0g
ZnVuY3Rpb24odGltZURlbHRhKSB7CisgICAgdGhpcy5fY29sb3JUZXh0SXRlbSgidHJhbnNwYXJl
bnQiKTsKKyAgICB0aGlzLl9jb2xvckluZGV4ID0gKHRoaXMuX2NvbG9ySW5kZXggKyAxKSAlIExh
eWVyaW5nVGV4dFN0YWdlLmNvbG9yYWJsZVRleHRJdGVtczsKKyAgICB0aGlzLl9jb2xvclRleHRJ
dGVtKCJZZWxsb3dHcmVlbiIpOworICAgIAorICAgIHZhciBibGFja1RleHRFbGVtZW50cyA9IE1h
dGgubWluKHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGgsIExheWVyaW5nVGV4dFN0YWdlLmluc2Vy
dGFibGVUZXh0SXRlbXMpOworICAgIHZhciBpID0gMDsKKyAgICBmb3IgKCA7IGkgPCB0aGlzLl90
ZXh0RWxlbWVudHMubGVuZ3RoIC0gYmxhY2tUZXh0RWxlbWVudHM7ICsraSkKKyAgICAgICAgdGhp
cy5fdGV4dEVsZW1lbnRzW2ldLnN0eWxlLmNvbG9yID0gKHRoaXMuX2FuaW1hdGVDb3VudHMgJiAx
KSA/ICJMaWdodFllbGxvdyIgOiAid2hpdGUiOworCisgICAgZm9yICggOyBpIDwgdGhpcy5fdGV4
dEVsZW1lbnRzLmxlbmd0aDsgKytpKQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVudHNbaV0uc3R5
bGUuY29sb3IgPSAiYmxhY2siOworICAgICAgICAKKyAgICArK3RoaXMuX2FuaW1hdGVDb3VudHM7
Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQp
IHsKKyAgICBjb3VudCA9IGNvdW50ID4gMCA/IE1hdGguZmxvb3IoY291bnQpIDogTWF0aC5jZWls
KGNvdW50KTsKKworICAgIGlmIChjb3VudCA9PSAwKQorICAgICAgICByZXR1cm4gdGhpcy5fdGV4
dEVsZW1lbnRzLmxlbmd0aDsKKworICAgIGlmIChjb3VudCA+IDApIHsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgdGhpcy5fcHVzaFRleHRFbGVt
ZW50KCk7CisgICAgICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOworICAgIH0K
KyAgICAgICAgCisgICAgY291bnQgPSBNYXRoLm1pbigtY291bnQsIHRoaXMuX3RleHRFbGVtZW50
cy5sZW5ndGgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAg
dGhpcy5fcG9wVGV4dEVsZW1lbnQoKTsKKworICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMu
bGVuZ3RoOworfQorCitmdW5jdGlvbiBMYXllcmluZ1RleHRCZW5jaG1hcmsoc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIEJlbmNobWFyay5jYWxs
KHRoaXMsIG9wdGlvbnMpOworICAgIAorICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInN0YWdlIik7CisgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgZG9j
dW1lbnQuYm9keS5vZmZzZXRXaWR0aCk7CisgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoImhlaWdo
dCIsIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0KTsKKyAgICAKKyAgICB0aGlzLl9zdGFnZSA9
IHRoaXMuY3JlYXRlU3RhZ2UoZWxlbWVudCk7CisgICAgdGhpcy5fYW5pbWF0b3IgPSB0aGlzLmNy
ZWF0ZUFuaW1hdG9yKCk7CisgICAgdGhpcy5fc3VpdGUgPSBzdWl0ZTsKKyAgICB0aGlzLl90ZXN0
ID0gdGVzdDsKKyAgICB0aGlzLl9yZWNvcmRUYWJsZSA9IHJlY29yZFRhYmxlOworICAgIHRoaXMu
X3Byb2dyZXNzQmFyID0gcHJvZ3Jlc3NCYXI7Cit9CisKK0xheWVyaW5nVGV4dEJlbmNobWFyay5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJlbmNobWFyay5wcm90b3R5cGUpOworTGF5ZXJpbmdU
ZXh0QmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IExheWVyaW5nVGV4dEJlbmNobWFy
azsKKworTGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0
aW9uKGVsZW1lbnQpIHsKKyAgICByZXR1cm4gbmV3IExheWVyaW5nVGV4dFN0YWdlKGVsZW1lbnQs
IHRoaXMuX29wdGlvbnMpOworfQorCitMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlLmNy
ZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5ldyBMYXllcmluZ1RleHRB
bmltYXRvcih0aGlzKTsKK30KKworTGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZS50dW5l
ID0gZnVuY3Rpb24oY291bnQpIHsKKyAgICByZXR1cm4gdGhpcy5fc3RhZ2UudHVuZShjb3VudCk7
Cit9CisKK0xheWVyaW5nVGV4dEJlbmNobWFyay5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigp
IHsKKyAgICByZXR1cm4gdGhpcy5fc3RhZ2UuY2xlYXIoKTsKK30KKworTGF5ZXJpbmdUZXh0QmVu
Y2htYXJrLnByb3RvdHlwZS5zaG93UmVzdWx0cyA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHByb2dyZXNz
KSB7CisgICAgaWYgKCF0aGlzLl9yZWNvcmRUYWJsZSB8fCAhdGhpcy5fcHJvZ3Jlc3NCYXIgfHwg
IXRoaXMuX3N1aXRlIHx8ICF0aGlzLl90ZXN0KQorICAgICAgICByZXR1cm47CisKKyAgICB0aGlz
Ll9yZWNvcmRUYWJsZS5zaG93UmVjb3JkKHRoaXMuX3N1aXRlLCB0aGlzLl90ZXN0LCB0aGlzLl9z
YW1wbGVyLCBtZXNzYWdlKTsKKyAgICB0aGlzLl9wcm9ncmVzc0Jhci5zZXRQb3MocHJvZ3Jlc3Mp
OworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICB3aW5kb3cuYmVu
Y2htYXJrID0gbmV3IExheWVyaW5nVGV4dEJlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcucG5nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRp
c3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFn
ZS9wbmcKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMv
eWluLXlhbmcucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcucG5nCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5wbmcJKHdvcmtpbmcgY29w
eSkKClByb3BlcnR5IGNoYW5nZXMgb246IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9yZXNvdXJjZXMveWluLXlhbmcucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUK
IyMgLTAsMCArMSAjIworaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
CmlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFHUUFBQUJrQ0FZQUFBQnc0cFZVQUFBQUJHZEJUVUVB
QUxHUEMveGhCUUFBQUNCalNGSk4KQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2
bUFBQUYzQ2N1bEU4QUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WQpBQUFDQkdsVVdIUllUVXc2
WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWla
VHB1CmN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVdFMVFJRU52Y21VZ05TNDBMakFpUGdvZ0lDQThj
bVJtT2xKRVJpQjRiV3h1Y3pweVpHWTkKSW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZN
REl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGdvZ0lDQWdJQ0E4Y21SbQpPa1JsYzJOeWFYQjBh
Vzl1SUhKa1pqcGhZbTkxZEQwaUlnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cGxlR2xtUFNKb2RI
UndPaTh2CmJuTXVZV1J2WW1VdVkyOXRMMlY0YVdZdk1TNHdMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VH
MXNibk02ZEdsbVpqMGlhSFIwY0RvdkwyNXoKTG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aVBn
b2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmxFYVcxbGJuTnBiMjQrTVRFdwpQQzlsZUdsbU9s
QnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2VUdsNFpXeFlSR2x0Wlc1
emFXOXVQakV3Ck5Ud3ZaWGhwWmpwUWFYaGxiRmhFYVcxbGJuTnBiMjQrQ2lBZ0lDQWdJQ0FnSUR4
MGFXWm1Pazl5YVdWdWRHRjBhVzl1UGpFOEwzUnAKWm1ZNlQzSnBaVzUwWVhScGIyNCtDaUFnSUNB
Z0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBnb2dJQ0E4TDNKa1pqcFNSRVkrQ2p3dgplRHA0YlhC
dFpYUmhQZ29VbkEyK0FBQU5XRWxFUVZSNEFlMWRmV3dVMVJZL3U2VkNXMHFyaUNRa1VDRlJRQUpJ
Q0FoUm9jVEVZZzBFClZFVDhDeEFTRVNJeHdoOGFCVEhCcURVR0ErODlEV0Q0eHc5UWkwRmpTRVN0
aVpGV3FSSENxNkRRQkpOWHFueklSNHJZVXM0N3Z6TU0KSFliZHptNzM3bnpzOWlTek03c3plei9P
Yis0OTU1NTc3emt4Q2preDgzZ3A0aHc1cHRLcFU4UG8yTEZCMU5KU1FpZE9GTks1Y3dWMAo0UUpS
ZTN0TXEzSEREVXpGeFVRREJuVFNvRUVkTkdSSUcxVlVuS0NCQTMrWCszdmwrRFFXaSszWFowUDZZ
VlVrUklVVEFHWktjWmJUCm9VTVRxYjcrRm1wc0xLQ2ZmeWJhTDN4c2J5ZGl0czZwbERrZUo0cEpG
UXNMaVc2N2plaXV1NGp1dnJ1VHBrejVrMGFOMmlkSi9Gc0EKMnAxS1VubjFqSUN3bE52YTl2UDI3
ZTI4YUJIenNHSE13NGN6UC9nZzg3MzNNaGNYQXdZelIwa0pjLy8rekFNSE1zK2J4NW9uOHBZeQo1
QlhUM1pVVkJveVJZdzkvOGtrN3o1L1AzS2NQYzNVMTg2Wk56Rjk5eGJ4NHNSa0F2SUFzSzJPT3g1
a2ZlSUM1dHJaZHl5UmxjNWMzClo3OUxoZWZ3OGVOSGVkMjZ5OW9TS2l1WjMzbUgrZlJwdVNWVVU4
TmNVT0FQR0c2d3lzdXRsb095b1l4UzFsd0dZallmT2ZJL1hyR0MKT1JaamZ1b3A1cDkrVWd6MG83
V1ZlZGFzWUlCd0ExTlVaSlZqeVJMV01qUFB6aGxnaE5sRCtlVEpKbjdtR2VhK2ZabWZmNTRaekhk
UwpRd1B6aUJIaEFNTUpEbG9xRHJ3OHFJUFVKZExBU0FXMjhJWU5uVHhnQVBQS2xkY0RBVkMrK1lh
NXREUjhZRGlCd1l2VXJ4OUxYUzZoClRwRURSUW85Zyt2cno2cUdCRUh0N0pyazVsVkN5d2c3R0U1
Z29BQ01IY3RhTjZsakpJQVJabS9nOWVzdnEyb0pZWjJNMEcyRnNadHkKQXBEc3VyQ1ErWlZYTHFP
dW9RVkZDbGNpbXNsL1ZUQ2pWVFEzSjRQQytqMHNBandaMDcxK1IydVpObzIxemxMM1VBRWpISjdB
WDMvZApwbXJzMnJYZEE0RzdVRzI5S2h5Vit4aGdvdTdDZzFDQUlnV3A0bmZmN1ZBTmF2dDJzTHQ3
UXNzSmFweVJMWkJSSC9CQWVCRW9LRktBCmhmejY2NTFxNW9DQVRvWDhHb0ZuaS9uSjBvVTVwcWFt
RXp3SkJCVEplRFcvOU5KbHZ2Tk9iM2xoQTNYd1lPNTBWWW1BZ1Z6QktGOTQKNHlzb2VBc1VqTW1U
RTQ4dGJBRGNaNHpTRTFVa2wzN3JBc1dmbGlJOHJ0SnVDaTNEUGVKMkErRDhma25HVkZFYWMyVHlr
Z0FVcS92Swpya3dSL2s1UTRRWFR1SmRhNndRRDF6dDI1SDdyY0lJSW1iSnRHd1I5ZHJRdlNiaEUx
VHVZRVZJVjRBRENwbHdWNWs0UTNOZlF2aXlWCjJQdzRoVnRhbW5TY2tZcHFhNFBnUEVkMVZPNW1j
cnJmTVU2UkFiTlJJUzk4M2FBajhGUUdmVTRRN0d2SW1uUXJrc3J6anovTy9PMjMKekJjdldnZXU4
VnNxLy9YekdZem9UWmxaSktFWmFwdUNPYVNuQkl1dWFRYTg4VWJ5MHVDZTZmd3lTUTlDM3JKOVpX
NlFWTXNtQkZTNgpRdHpKcm0zYnpESUlyY0NMd3RaU1lKQnNhRGliVWRjbGRkNmlKdlR1ckxaZWpN
RjkwN1lyZEUxZWhHY3llYXV6OGQ5eDQxRHFuczJuCnlCK0g2dVJTSmwyVnpiUjE2OHd5QnpMRGkv
Qk1OcGlhU1pyb3VqQmgxNU9aUjUyeXhFeGZzc2tsTDRZNDcvY0MwdlZ5WU9ieDFLbW0KWkYyWHJD
Uzdub1NYczJuOSt0RzBhQkhSQkFQakdxd21ORWtORGQ2cHBmS01keXJtbndBMEw3NDRXbm1jYXVx
NjBnSUR3SFJNSTg0Vwo0Yjd1RmVwZExRUmRIZ2FNc2dJbkpUeUVsM04wcVE1V2g1aWlmRmQ3M1hJ
SGdHQ0pVU3Jydm1SVTJhenJwa3kxRG1TYjd3TkROeUQyCjk5YldvOTIyRW1IZEdMWG5ZeDJTYWNw
WDA0bk5mUGNaaS9GZWZobHpKOG1YcmNyTlBXcXZNcUZadVFITlIrT2lHd1QzZDlpNWhPZk8KVm5L
dGxsVmJPNDFHakRDaldUbHp3ZlZNN0RMb3BXczQwTmxKdEhQbk5PZHZWd0VScEpiU2poMkZ0R0NC
ODc2NTY0Y2VJaW90TlpkZQpMcVIwNWd6UmxpMWlVMG13RlVMM1oyQkxnTDBLSFkzSk5PWERGSzY3
Vy9MNkRvM3J3b1g5OXZ0MXRZWFE1NStQcHZ2dko3cnhSdnVlCitmT1RUNXBQTStvcDl1OVB5dnNy
OVZCQXBDRlUwKzdkaFZSZG5kM3FqUkdGWXZIaTdPWVJ0ZFRQaWdINDQ0L1JiWFV4WDc1OHB0clYK
NGNPbU82bnIwOHZGaFhKZTNaTFhmVXZiK2d6dmt0VmxZWU5sUVFIUjdiZG4vLzBhUHB6bzFWZXpu
MCtVY3Zqbkg2TERoeWVpeUJZZwoyTzA2ZGFwL1ZWaTFpbWpXTFAveUMzdE8yQ2tNRElSa3Q2UHNB
OGZXNDBtVC9DMzI1czJrWXg1L2N3MW5idWZQRTMzM25haGJQQjR0ClpLN3VBUitQL2ZrKzB1REJS
Qjk4MERzMnNWbit3dys0bWd0QXB0QXZ2eERkY1lkOXk3L3o1TWxFdTNiMWdnS09OemZqYzBwYzNW
VmcKQ0k4M05naXFyQ1RhSStZY21HenltVG82aUU2ZkhoWlgzeUVWRmNHeUFpM2wrKy96VzlEMzYw
ZkFJcTZPWElZTUNSWVE1STRXaXU2cgpwb1pVQlErK1JQNlhRSnpxeE5XcnppMnFjZmxmZ0VRNVFp
WCs3YmY4RzlGRGJKdzhXUmhYRjBkbFpZbFlFOXh2R0R4dTNVcDA4Q0RSCmloWDVJZlFoUTg2ZUxZ
aXJ2NmtTODR1emphQUoyOWZHalVSLy9VVXlOV0MxbWx3Vi9wY3VFYkRvbzg2LzRFOHF6QVN6enJ4
NTFvRnkKL3ZFSHFhcCs3QmhKbDZzVm9iVnJ3MXdENzdLaHl4SkhiSDI4bnd6aEUxQUEzR3I2bWpY
WEZ4UzZmVjBkaVNXYnFMYVdDSlVPT2NVSgpidkhRZitVaW9YdUR1Ui9kSGJvOWRIL29Cc05JNkFV
RWk3ajZLR3hyQzJNUnpaWUowOGRRRUtBb1FHR0E0aEFtNmlPZGxhendqS3ZEClNNenQ1aE9oMVVD
MWhvb2RGb0ljTHl2cmpLdjNUZ2pHZkNOMEVSaUVZakRxbGtkQjhBTGx1Zm5tanJpNlVtMXBDYUlJ
NGNnVDh6SXcKMjhCOEV6U0pXOXU0K3JXRitwalBCT0VQQTJkbFpYQmN1SGlSZ0VWY25ReWp1VUMz
ejJlQzBFZjNGVlJMZ1F5NTZhYmY0NEpCUFkwZQpUZFRVbE05d1dIVUhLSmcwQzBLbVdCYUl2UUJr
SjJHMkVKNmplOG1hbDhIMHN0OWt0Y3hQNCtvTGZlTEVUdnJ4UjcrTEVONzhJT2o5ClZJblJNdSs1
cHhOWW9JWEl4S0g0UXQrN043d01DcUprV0tyazErQVIrNnVBZ1pBRnlLaFJqV3JuK2ZYWElLb2V6
anloNkx6d2dqOWwKNjl1WGFPUklCQWU0QWdqUnYraSsrNGkrL05LZkFrUWxGNHpvL2JCOWdmY1Nx
UUVmMmtJMFpNUE1tUjMweFJmNHJaZWNITWoyQW5GTQpEajd5U0ljZE5pTm01NDN0Q0dKTEdVZC9T
bGVXelJYd2RvWlJPV01SRy9pUkxkTTl1c2J6NXcvRWlvdEYxZTNxc21CcDNFUVBQMHowCjBVZFJZ
WlUvNVlRR2hNMUcyYUtxS3FLaW9rMTI4cFpRbDIvU1pEYlQvUGtkT2pDeTcvYWVMUTVrYXp0ZWVU
blJraVhvcmhJUGZHUnQKYWZZMmZWNi9NU0U2dnh3OWV1M0dmNi90QmFuZTk5ejBTYlNTbm5pQ1pk
OWJOTnJHKys4VFRaOU9oRVZtT0hDTjMweFROaFpXRkJVSgp0MWZLQUVSNDNoMWx4WEZBTnRyQ3M4
OG1mMnR4enpTbCt0YW44NXlYNHdBQUpmVXc3MXJETkhQZWV5ODVHRFpEOEl4SnN0TTFjVTdICnRZ
YUNndEJFTXVGdXpQbU1TY1lnTGZndzlHS001ZWZRWE01ZSthVnpQeDNuTTFkYXlXd05VWVNvT0dF
a2VDcnlZZ0NlTVVsZSthVjYKSCtWYXZod2xTeSt1bFRvd2d3ZTBiTGpaeUpSUlVRYWtKdzdNMEVw
a0pyR0t4TEc4YndZMnpUVEZEMFRzOUtKVW52Rkt3L1I5bUVsZQplKzJ5ekF6S2FMQUhKQyt5R1Nl
WW1iWUk5LytqS3RRemNZSnA0MmZFVGF5Ym9TYStSMDN0TmVFbUZxQUk3MmFvRTJBVDNrbE5BT0ZN
CkF5MEYyaFJrQ2c1Y20xWjM3ZnhTRmRxSm5qUHBTUGtLS0ptNUdyY3JGZFZ6cHFZVFN3VTNHOUZO
bzVFaGluTlBuZkZIRlF5VWUrdFcKYnpVN1VjdkFiN0JYdGJhYWRjWi9wWlZZNFNvd1lLeXZqeko3
MHk4N3dud25ZM2gzdjJNQVdGZUhDRzRsNEtGeGtvU3RnQzYzM3NxTQpacHdQZE81Y3o2TEtaVHVn
aTQydVlGQ2w0WHpTRFhrVVZmQTJia3kvZFVDSSt4SHl5QUhLUXZWZU9tbFNlTzFkcGw2QU1XUFNB
d1JnCldKSGFGdHI4OHVVczlWMnRHYU9sNUdyM2xhNHc3d0pqdFM4Z3VETVJVQlpxMDRSTXlUVkJq
Nmh5Q0g3V25kQjIzZ3M2c0tRTmpvQlMKcGRISW9IMTkrS0dwamlMNGRGYXRTaDBNYUZOV1JMYWUy
YWhzWnBvNkMvZXM0TVFWRmN4cjFnVFB6RXhMc0d0WDZtQmduR0dwdGhOTQo4ZE5JT3NLREVvM2to
ckRjTUxORVZhNmczSU1IZXdNQ2VZRVIrUEhqVGFpN0VTWm1JeEVwM0FhMWZaV1VNR2NhS2luVE56
M2QvMlBNCmdYQ3lUdG1RNkRvS0FlNmQ0QW9mWmlBQWxyNUJhQzJOamVteXh2L25BVVpsWmZkZ29G
WEFoSTY2U1IyZGRZN0V0UlI2aThaY1FrV2UKZmpxOFl4WjBVOTIxREZpU01kUDMxbHVkcUZNa21K
K3NrRktCb1lpNXBIUDAwTVNlZXk1Y3dFQ0FKNU1aMEo1d1lBNGNkZWhKTUs5awpqQW42ZDZuTWJB
MmxCUC92c1JqenNtWEJkbVVZWnlSVGJSSGJBN0lEVVhDd0FpZmRCUWxCTXp1ZC9LVnljOFFjM2F6
QlRLQW1UNS9PCi9QYmJlQVBsbGsrRUVYaWlRVjk1dVdVdVI2QVZsREdWa0VUcFZEN016MHBseFVn
a2E0bHJhOXY1c2NlWW9ibEFBWUF4NzlBaDg4aEEKYUNOdHQyMEs4ZzNkRXZKR1dWQ203cUxlaEpt
cHBzb21ERmlLa0EwU2M3MmRFWWtITFFmbW1BVUxtTjk4RXlHd21jK2NrY2ZTSkFocgp0QWJNWjRE
cDZJWktTNWxoNXNDQTd0RkhFZWU5WGZOT0ZNUERWQVhUU09mcWhwMDAvcFBWUjRYbDFaTEJNdldG
RHZmYisvWVYwSUVECjFqNTZlRjJEQjFWc014czdsbWpvVUd5MnR4WmExOVVSL2YwM1hLMlNPUFlr
T25LRWRQTVJQQ1JnVXo0V1RHUHJzZXgyMVEyV0kwYzIKU2o3L2thMEFvZG8yRmpwQTNHZ0xRTmha
TkZlT0tmQnJxMjV0eFhzbkhFYkNSNkc2S0JSUGJQby8wZUxVM1pSNDFZRWpGL1hqSXU0cQo0Q0ZC
N3RmTHNWTUFDUFdHL1A4RFJucS9hTTZOOHEwQUFBQUFTVVZPUks1Q1lJST0KCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>261850</attachid>
            <date>2015-09-23 17:03:18 -0700</date>
            <delta_ts>2015-09-23 17:03:18 -0700</delta_ts>
            <desc>results-individual-scores</desc>
            <filename>Screen Shot 2015-09-23 at 4.52.47 PM.png</filename>
            <type>image/png</type>
            <size>176377</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAA4sAAALECAYAAAChaqVuAAAAAXNSR0IArs4c6QAAAZ1pVFh0WE1M
OmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6
eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlv
biByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNv
bS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+OTA3PC9leGlmOlBp
eGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjcwODwvZXhpZjpQ
aXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+Cjwv
eDp4bXBtZXRhPgqxT7aKAABAAElEQVR4AeydCXyV1Zn/f+QmuclNcrMvJCEkQYJEQCMNWKCyyIgO
Ljgt2uLUtXTKzPAZ22rtuFFrdVRsZT50SqeOG/1Xq9WRig7aooIFFBDCGiDsgYQsl+y5yU3uDf/n
vHd775KQhEC23+FD7nvPe855z/m+73nvec7znOeMuOeee86BgQRIgARIgARIgARIgARIgARIgAR0
BEJ0xzwkARIgARIgARIgARIgARIgARIgAY0AhUU+CCRAAiRAAiRAAiRAAiRAAiRAAgEEKCwGIGEE
CZAACZAACZAACZAACZAACZAAhUU+AyRAAiRAAiRAAiRAAiRAAiRAAgEEKCwGIGEECZAACZAACZAA
CZAACZAACZAAhUU+AyRAAiRAAiRAAiRAAiRAAiRAAgEEKCwGIGEECZAACZAACZAACZAACZAACZAA
hUU+AyRAAiRAAiRAAiRAAiRAAiRAAgEEKCwGIGEECZAACZAACZAACZAACZAACZAAhUU+AyRAAiRA
AiRAAiRAAiRAAiRAAgEEKCwGIGEECZAACZAACZAACZAACZAACZAAhUU+AyRAAiRAAiRAAiRAAiRA
AiRAAgEEKCwGIGEECZAACZAACZAACZAACZAACZAAhUU+AyRAAiRAAiRAAiRAAiRAAiRAAgEEKCwG
IGEECZAACZAACZAACZAACZAACZAAhUU+AyRAAiRAAiRAAiRAAiRAAiRAAgEEKCwGIGEECZAACZAA
CZAACZAACZAACZAAhUU+AyRAAiRAAiRAAiRAAiRAAiRAAgEEKCwGIGEECZAACZAACZAACZAACZAA
CZAAhUU+AyRAAiRAAiRAAiRAAiRAAiRAAgEEKCwGIGEECZAACZAACZAACZAACZAACZAAhUU+AyRA
AiRAAiRAAiRAAiRAAiRAAgEEKCwGIGEECZAACZAACZAACZAACZAACZAAhUU+AyRAAiRAAiRAAiRA
AiRAAiRAAgEEKCwGIGEECZAACZAACZAACZAACZAACZAAhUU+AyRAAiRAAiRAAiRAAiRAAiRAAgEE
KCwGIGEECZAACZAACZAACZAACZAACZAAhUU+AyRAAiRAAiRAAiRAAiRAAiRAAgEEKCwGIGEECZAA
CZAACZAACZAACZAACZAAhUU+AyRAAiRAAiRAAiRAAiRAAiRAAgEEKCwGIGEECZAACZAACZAACZAA
CZAACZBA6GBFMGLECGRkZGDs2LEYOXIkzGaz57/RaByszWK9SYAESIAESIAESIAESIAEBikBm82G
hoYGz/8zZ87g8OHDKCsrw7lz5wZdq0bcc889g6rWsbGxmD59OiZPnqwJh4OOOCtMAiRAAiRAAiRA
AiRAAiQwrAgoAXLHjh3YvHkz6uvrB03bB42wGBkZiTlz5mDGjBkIDR20CtFB82CwoiRAAiRAAiRA
AiRAAiRAAn1LwG63Y9OmTfj000/R0tLSt4VfhNIGhbB41VVX4dZbb0V0dPRFQMAiSYAESIAESIAE
SIAESIAESODSEWhqasKf//xn7Nq169JdtBdXGtAqOqVB/Na3vqWZnPaibcxCAiRAAiRAAiRAAiRA
AiRAAgOOgFKC3Xnnnbj88svxzjvvQGkcB2IYsMJiWFgY7r//fowZM2YgcmOdSIAESIAESIAESIAE
SIAESOCCCCg/LHFxcXj55ZfR3t5+QWVdjMwDUlhUnk4XLVp0XkGxo6MD1dXVKC8v9/xXHocaGxsv
BiuWSQIkQAIkQAIkQAIkQAIkQAKdEoiJidF2akhPT4f7f3JyMkJCOt+xUCnHlOyzevXqAecxdUAK
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
NE5hZRsYJ7LR0+Ms20ZVEMhGuF2trDNrv9/DvCpQPzsyDjs3diK1uk8KFCq9bhQCluW6RmUhRX5S
ELDr7IvcirO4eKkEFbd/xeG8WAzu00VA+H9Sai3VQ0JAQkBCQEJAQkBCQEJAQkBCQELAEgKSsmgJ
lbb8jvY69RtCf20ZA6nuEgISAhICEgISAhICEgISAs1C4Hnnjjid9U+MCHqzWfk8rsSns86D1aGt
B0lZbOs9QKq/hICEgISAhICEgISAhICEgISAjREICRuOTzO/JIXxvI1zfjTZuXbvDFaHth4kZbGt
9wCp/hICEgISAhICEgISAhICEgISAjZGwL1XD7A/KbRuBP6zdZMvUS8hICEgISAhICEgISAhICEg
ISAhICEgIdASCLQJzyI70lYKEgISApYRaAvjo7XVsbXRa7lnib99UurY2urR2ui11ItaQx1aA40S
tpYQsM271tr+ja19W6lnY3F50uI/8b+z+KQ1mFQfCQEJAQkBCQEJAQkBCQEJAQkBCYEnC4Hf6+8s
SstQn6x+JtVGQkBCQEJAQkBCQEJAQkBCQEJAQkBCwCYIPPHLUH0iP7cJUFImEgJPEgL5qUO56jzJ
46O11bG10duU8fCk1LG11aO10Wupb7WGOrQGGiVsLSFgm3ettf0bW/u2Us+m4tLYdK0h/hOvLLJG
COl3vDW0hUSjhMAjQcB0j8GTOD5aWx1bG71N6ahPSh1bWz1aG72W+lZrqENroFHC1hICtnnXWtu/
sbVvK/VsLi6NTf97jy8tQ/29t5BEn4SAhICEgISAhICEgISAhICEgISAhMBjQEBSFh8D6FKREgIS
AhICEgISAhICEgISAhICEgISAr93BNrEMtTfeyNI9EkISAhICEgISAhICEgISAhICDxJCJRcu4FP
M79EeVllq6yWa/fOeHvMW3Dv1aNV0m8roiVl0VZISvlICEgISAhICEgISAhICEgISAhICHAIHDlw
Bt4DXsPMuZNbJSKns86D1WH+kqhWSb+tiJaWodoKSSkfCQEJAQkBCQEJAQkBCQEJAQkBCQEOgZ+r
azAi6M1Wi8aIoMFgdWjroU0riyplLWpq6qBuUi94SGnvoEZZ38T0TSpUSiQhICEgISAhICEgISAh
ICEgIfBEIKBW1ZE8XQul6uETUZ8nsRJtUllUlRdg8eDe6N7VFx7dfdDVqTfWnywF1KWYS/eLT5Yb
t7VSjkgW54sq7n3J2XT4O/WltEPh0bU/pR+PrWcpvYWglKfDZXA6lBa+PcpXxRvGwyWxuMWLlG+P
gv8GOZVTh52E8frC2hYvkytAJUewUxQutgDQ6uoSZJ8tgerR1OR3VEot9kf3RmRKiZ6mGnku5o7q
DRcaD8GxGSjR412P/LRkagP2bTwWby8Q7PM3v8hAJPUNlkfkslO4aQasebl6Amx0o66WY310FEeD
/6S1yJbfaSBnc5pKWT209Z2+7BhKzerRQJaN+KyuLMaqSTSGqTxGb47cMK7U1cVUF803l1H0rbSO
cq5DZvwsBE+ahUju7yPMjf0I05edttAutcjekMDl7TI4CluPyg0GMGUpdlI+rFyXwR9h/3kND2wE
6VZHFWsT4X5nnP3N88f0fYtrkyb0T3UYIPIAAEAASURBVOMcm/Nk3mf4uanKL2GVtt2CWR9UNNSm
/NQtcW9Ob+lZ3VgdT33nmIWxakyHuvIc8YAEyE3HAvHnSKePUKxvD+N0zX5SlSOV108ziyyPZ6Xi
NKbrxwSNDxovciOaHiIzNgqpcjaGWipYwNlKXtIgz2lRnM3p5iMkNH5LDmwinHV8aBamxyZgevRa
5FXaUDGwmk/VIme7lteRvLD1ZImW1z1E/va1Wl7JaI3C9A0FBj7Ir2gT78V4eHXRaZpXNTw8OHo3
imsYNo3h4QaiSo6uhcukYzw+L1RnQ5rHdqeuwpFls9DVxYfkaV/0dOkLf6q/Tq5onDxZh1SSTVp2
7D42pB57wW1QWbyN9Z7R2DF0Bc5dz0dZxec4vi0CayaNxZHyFzFyOrBjez5voAHVl75AFgIwYqAL
bp7dBN/gRIzYloriinxcv/4Z9m/og4TgsdhaaGGCesDa+Ck87s2hLn4zkTK8c4t3OIOX1g6DPlwD
/272LV4mV4Bd+xYrR131JSKCv2yx/H+vGctTPkbsQaKunuvEQM0ljPOZiZ+Gb0Fufire+j4BvmGa
San0wBqMnfEVwk4cQG52FMrio7HsqInRhbJSFmXAe3QCvD5Mxbm8ZLyQNB/eGy8ZQWBWrtFXWzxU
YU3PMKyhMZ2VfwCxfW4hwmcossuFhRdTmlSlpzCI6uGxcxdy8z7ES18txqAPTrWQQaEKmzwmY9ML
4Ry9cwbeQrjPYo1ATgau5T0nI9M5ArmFR5A8IA3hfdbjJnGcV0aMRkToaEwIDUbkf3lj754TOIRn
4GAC4cXtsxGx9D5Ssg8ga2UAEiLDsIkzjNHkGzYWC2+8huP5R3B4+h8QG/hX5FebZGCTR5E2Eel3
/KKVcupbgYvRfTprk2Q8n01tEpYBtoDI2v7Jz6+596Z9xig/MkBO84zEaWq3M/npCOtRgIj+izXG
LsE2NcrB5g+m9Faf341BwZqxmpszE88kLYb3B6dF+vgdJHvE4Bx+hlo7EahrbiP/7CnM/VMYzaG/
2pxmTYZ12P/+SMz7vCcOUz9NCwWi/KYiz0I/LcvbT2OgL6Jj30VkdChi4obDhQ0IdS2Kz59D6rI4
RO25gN8eCPOC5lbCFGdreYlYvEeBsyndxjgIj98ub/4JEVMYHxqNd6OD8cpXGTh08Bba20wospZP
PURe4vsIjwf25x1H1r4BSJgUgnRFPVXlLgrT0tDBbzSi/8r6RgTe6dfJhsqiMA9XV+ZC5heHX0fN
pHk1HSORhOGTM0kGtZ6H69pCXZ4L38g0oFY7Z0OszrpUj+tKxoeIYYhJeh5p+Z/helU+igtTMeJq
Eny77gY7Dqex8uRvJILfa8Gx+7iQ+j2U2/aUReVPOE3Izx/5JtydO8DBsRN8ImZg//IZ6IB/w3sS
cRKaUC7rJ5p6nN+7DZgeDJldOTYG70LQtiNYGOGNzo4d4OjcBQFRS3A8cTS+OqOzUvGalukwV79F
WiLPmnW0RB+hsvAUpmu9LP6jEvTWZZXiFIKjT+mVVnVlAcXTWEFLDqwlK2861k/SeGf8JyXrraN8
654LZznTeDzvlxeh+HuylqpKsJis2JknM7ReoN6YS14gnSHYyDKfmIGt5I3Yb8HKKlSOvmI0zG8U
fYPq+1Qk1SUyehN2Jn6k8VAwurQYiH3j8mIWQ7L0ajwbs7C/UOfZ4HlDWH6pX+IXOBqK195x+ZMH
LDttE+UxixPGqosMmDMrnly7HN1SnZREe3efJMotCd0HJ3CWcWUpeaa1VkCNt+W2Wbmt/YVKcQz+
s5/GqriBqGVzKYWSzFTIEYdNs/0hk3ljTmoyjZU0fEP43asoAt77C8KHyCAbPJIEA2DvtV80CfX/
6/EZjQPfDccxJ9gb7n18sfL6KZwJekE/KVgqV5/cRjcqxT+xifLK2joZ/WQyhMTPxRR6LvnRsjfB
Ek2KrMNAaBLmhw2CrM8ghIYMBA7+qB9HNiKVy0ZNY3cNBuLM2okcvWOmRtL7m7hPM2nl5xnYQW1y
LHEcZB7uCFlWiIK8SXBQ20M2bARCgkdgTLA/XJXfAp7xkC/zNTFc1eFS2gXMz/kIYwbL0G9YONZ5
ApkXGQOsxb/ygFmxEfCRucMvYiKCoEDhLYMHzFb1FGsTsX7HL/96dgLgtwZLI1ib+GJp6gqOl39n
df/k59a8e0t9hp+j8vvLnAFy+8px8JJ5ITxxJ+YjB/s+vy3SpvwcbHtvid6Kyydo3tvFjVVZf38s
y4ujPr4fV408cQY6Lm5YjoRRo7kXOlFV/ct1nD1dhpdDI4zeG1LZ4E75PZJPAmlHZ8GP+mng7EVY
5alA0ieGeVZTSj2+O3MB06LfxuABffHmUF8EDvOGM1Na1HdxObsQ9557Db42IEkoC0s4W8tLxOK1
NM6W6ObXUWz8Orp6ISSM8aERCPRsj8yrHkgjhcDHuR0/i2bcW8mnVNeQtFqBNMUSBPRxQ79RMZAX
HcEQF+oAqkqcvToQUe8GYIB3XwQM80fgEHczw1pTiRTj4aofb3HZTpnC5lUvRMykcZZ3g2Q/a3m4
jqrbWOM5E9MWsDH4m+alWJ11yR7TtaYoE7EnPXD4+hIEyrrA0aEDOnt4YyHJGdNC63HHiM8Y5ElG
biVvBYk/rQ7IK9cKKby63PwinVttltqCq2F4xT3xt21PWXR8BbEkyK4ZPYzc3Zuw/2gB5ORRCJgd
g0C3DujoOYQERwU+KdAqADQR/Q95V5ZM8IYdKZqF1CXeeau7vmOo1Q/JivoQPtM/pmUwg0wEMRbt
KfrLwMJPnsPxwuPYn9iDLPchnBeSWYG8AuZDTl7OrLxUTO6SQdbl2bhIwo36/i84d9AgbKt+/BcO
Xb0G0r3wQHkLh5IScXt4MmdB739yGxYeYBMjWXbHkMfkai+ysB7H8Z29yHI2FqmKOty7/QVOV9xj
qVF2Mg1Rkz5FRPYRZKXOwF7yAp0i65q6/DRnmUfoFpwjC89LnyQggbwR5pYa4XKoAH2ozE5Dyc+U
r7oOWQd3EQadzTEQ+caE1Z3Ms/HTAM6zkULtFhvwV85iXLx9MXlDMrDq6AGcyxmPs7OTSJEBmG7O
D1zZexIQMaMYS3ZGoofyHFnx5gMR5B3L24X+NGn5/5V5HyzX6XC9Jyn6EynLiUgmwa6rQx0Ov0ue
6d7kySk6jpR3qsjb8kGLLH/l1+OR3qvLsYi8HKvy52D4KyAlXBMe3CPuPepFwwTq6MIpD1du1KJn
IAmDe2Iwd8MxHKHlPFE0ZpJDKLFRUOM30jN+Ie+iZrkqLQWfeQbP9nLVjBuBco2ysMGDg0cQLhWd
hafWxaaUX8ReytfZyYLwIkCT1/QUVO0aQd7WcuQc2I2psy9gwra30NEG9JlmYec6AlW1KfCivif/
4jRWhZGy6BeClxyBqmvX6L5cbzhycZqOy3hRIwDrMqougO/UDKxLGQdn3Tv9tQOmnr+COf2dUCm/
RPxpEeaRMLdkUi+K0QXjEgOwKTAWOw+cJsPRWFJwZmBCHyd9alvdiLWJWL/jly+b+jmK04fpeXDh
yUz6PATdqFGs65/83JpxL9BnzHNU4r7OSkd8kNg+vr/xi3Vtap5Z098I0kvAVdfqDTlqTgOswa86
mnklMq9u0NLnUfCPvxBPMEh5Dm6+WJgYgw9mB5MSZnjPS9rsW2XZNeL9AeiiH3x26EwGj190KyL0
JdxFxQ+0cij4z+jaqT+6d+qN6TpDqYMrLYmfRXROxThKay566jNp+o0AztbyErF4LYqzAN18IMTG
ryEeeQCjSEFbsBCBrhZ4rSFiI++s41Oq2z+Q1xv4ZLV2WT0trU/MuQfXju2gKlPQtwsI6t6Xtif1
J8PyeOwXWMrcSOK46GI83LFPABmKgLF/S8aRoxmY5keetcQ/oTO/IFEeromYn/hnbIpLJQOmNymb
mndideZn/zjuy87lkAEzHG+YTkrO3lixKwYymt/4QS9PMrmZVpDUvrMG54oO4P0uaRjvuQalWjek
/dP2qCncTSuYEvF66iLaluDCz0a6byICNlsI0MTyH0OyDgjZlY8/Bp9Gxv+SZSNyl4YGvxnITacO
2tEVExZ4YCxNIitHjYOSlqCeI0VhbV8nKMlDyCalP3bRLq1UFmN418mcksJl4rcEipMTLQqM+zNn
kSWNYnksRMp3GYg68wMCXjhKL6JJQBvHMYZ+yadQdnAkLQcrxdreGrL0/9szpVOrDNXTpPveFvw9
SmMD/UviQEynZQfq8mIkXCULq2IO/DoTM5bNQdZvL5DCxjwmbCY1NPf87HUIGdyJ3nXFkshtqLhf
DwV5VJn3gXmOWOyFR5Np+VsM3RkH8XKM4/K1N0sYvDdWE9/St2inMiwkppecH4q+3Qnz9z/AlKUh
2HdWjjfScsjDexxTh7lRBjLszvkRHgFfmhRueEwp+m+McWsHeUoUvYzGvCmD8QLdTUtZgU0+mVBc
e8EydsqnMYxpTBRGDvMiRalOY7OrpoOR7J5H0NwNyB3+IymRXJQn4N9D5Kwcib0LUlEl6wB5rqFK
jBfL/F42KItkeCDdjwuqXzlJEnuXppFBRcG9q/iZfe2gicD+qypQSO0pJ2/kuhNHkORchXU+MRi0
zA0ViX74QqBcQwa2urNHNzfNBFJZeIwMNovJg7IF4zx4tHJFCWOho6Q0ezfCSRFj4Q/37nGexRbr
Cqoq7Jsfhx00xuF5j1M07OypHnkZKFu+BQVrX0LBtnjE+H2M3lUfw11LSN7WaFLyVyCM2lM41KPo
4DbEJl3golTdIZ7R2R53a5mAfwELN9bQCgn2qYqz+HY2mci5RM36J9wmijPC/Y5fpB2tEtEIWHXI
274S45dewBLic90oUrU1/ZOfWZPvG+4zLGvHXgNJqUpE0N/SkRX3Br5JDiMPMRBEbM4ODbdpk8kz
SyhMb9fXBwDxcVg+dBcmvXYfWwPYCgvgVhX1DVqVow+0bHaZTwLW5X8Nt47XOZ5gtsRQpeEP+jQ2
vLF7mtGSg7tMieX6vD1eHTyQ2RqNg6oacurD81OPYFrQi7j2STKCpkZjkH8+IvVjQ6XzyRinbfaT
MM66rK3lJaLxbI5zw3Rr6Bcev7r6KWlFz7w8DxxP99a9stG13io+pb5P/ZbCoa96ktF6LtpfPYmg
yEh0kX2Oac+x/jmaFMR5ePMPdTgwdyRi/bZi0J0lcDOITVz6Zv2zwMNpYuQMRSD+u5n6p5wKkFXd
MZpLGuLhNYXpGLt6Ii7VesNRQatIKDCyxeo8h5P/uKiP5Z+dVoxuVOHkDVB8lkZJ4rA7fiQnp7pv
PQV7z4vcmtWnOgG7t67Bwj0ZmLXvFBaOcm1U9lJkYQTanmeRLLg36QAIGSmCK/aRd+BOPgqy18A3
bxv8NxZwSPUdG04CWBoUqnoUH9pG/XI03GnkOfZ4jdSSHFy+rmE6IC/l/5K3sODqKRwmCzw5p3jq
mA50thwgDl5660k7dO1Krz75FvdI6ZMt51mQ7Fzg6UfM4mfmPxQOnNCuFXZZLPbMgurOLfrvgecc
23HPQDv0i6A1+iaWFTaHOj1jGKnPemqiq8mcKosYaFB2OzLPkXmwthxDSmEM7nJTs2V8fr6vETBi
aD9Z964+6N49hPMA1f1Sii+JqQ7wel5fRMe+b3HLh8xFEk3ZfqQoagIJYtiFQWQ97El/Mtr7xYTh
fylK6WoZO5UWYM2lA4JTkjDhaiKGe/qShdoX+y5Uwc6WE4qG0MfyX6XIRDjJhOuGPotSRQm+K6uB
/EcFSkg5ZsxdfvIqzz/QHk4clb/i6MwETuG6XnsYubX5SIvzQELgp5pJUFcTh+fRi/qabHk6ImmJ
j5vMF6uzZwDbL+DGt8Ll6pLb9krLmBOjOEVxQuIulCX685RgTUliWKiJN7B+4R62hLx+V3DpRBzO
xa/C16RT2T48hIqdEufghhXkBay6nk79bxvWfVJORf1KfzOwngw8bq7uCF+0lHjUCeRe0/IoVSn2
UXvO+uubZvXT0cnlTUueApcRP6S2S3mPPPhRmbhbeR7hq0nhOnEWVecPo6rsAK26oFUSe5k40xLB
cpsI9ztzGthhP4udfDA+XoHNOWfxAScQ1VnXP82za/QbsT5jlJmDO7YVbuH4SJBPGI6RAYvxWs2S
7wba1Cij5j2I0es8JAZndtIqihnR8A+YiZeWR1NhAZD1ZMqZLjBlYizx5Rl4/ekKyM9fJeMq8YzL
JahhytsjCBqBOADP6a009bhynowehilOQ4WDDNtprM4Jdqclb07oFzaDlquScJl7o8WpFMPZWl5i
bTxbVkaMbvNyLI9fTbyHuLCP5ojQGPRnlmgbBrW1fOoBkwXImH7wA/h4uKJfcAzS3qMl9/k34Sib
SLzvYwS4dYIDOQwi/55KfLQIN23Gz4V5uDx9IxmKJuJM2RXkEn8vzqbtAkkzcbpU699uiIeTsWZl
ABmeEofhQWk58i8zOfAWvlZUQS1SZ4r0+AOtaTdjE3RY1c5YOvCLO6jNnEROTk0cZJBTaVVA+Oxx
cKPxb08CiZwURRYUN34yTyy9aTICbU5ZVF49CO8+w3BexwTsOsCN9lit3TCQtqX9ixNuHWRvYRp5
RzIy/j973wIW1XXt/7s3k0giWqqUqFUMpmIyxEcRUYMoRS3xWUFFjUWSAjcUI1bUiG8l0aJW1Pgo
VrmKXCv4wohKiMpHQqxg1AQSpxUaiaBICDEEhzgk47//tc+8hznHGRjQgb2/D+acffZjrd9ee+29
115nn2wc3U8T59B+GoBdumMsXe07+YUW8I7o6elBk7Re+OFftKVOVo3Gge0IfoybzECvDcKCZtRz
goOq4vB1o8l3PWryaYeiw5PMW9QkyJpk76SXm3fRu4Ln75iUpbmhyac2aFSo5oYtBvSdt7aa3M6s
CVL1sPziGDhLPOvaWTOqpJd8hurqy6ikhf2FnL1YMs0XI6jUr42O0VRXlAouJpapNRwwpG6opl3Z
JNygSUN59WeorD6Pk6cOYpS7ZufWkN+MJ5pUaNaDtEiQvYCNpNQr6XCk7EO00xMfjf1FbAnu+EF3
MMXioBAM9QlB9K4SWsytxFtpN/EkuZ0iX6k3TqD2NsmHJ7x7dxIYXzJtiPat0Y4YFRpCcd9AqV1o
a5DpAGb50yEpXAlGC5Ww8GL3lupl8fYNDciJ90PYejccKyrArpihFhdS4liU4uhUH7yy3bBo6vky
M1aUoPI7+zuwKYsOwN1tB2p0ILh6YSQzKlV+B8HhwKuTEf1qraeDpn/XfJpHB3oEYpI3tZ2lQN4R
r9AJdOllOn3QEb8Omi6kVGrfpRlOB3sJwaUftStz77NUUHPjxNtEXO40pgp9zXRoTCwd9rM75m0U
3z2GmT6mPD9cPvUlNflCXGbMFiTqu/iiyg1JbPFPuijz3dcxgGod4dvzoW3aZOIsZJSit4bckr9/
IVSgj9G4fFpfCyWoyG2WRe/EuIHjEUDuYTRNI9f8EBy53jo60dm9H/W9XNz8RifDDag8DPTuROOo
UVCV0UnO8ScM/Uj7zDydURa7XYrjbK0uaWhVnaNjXJxuM3kmx11Jnaoux9FdZLSaM9CCQV1XW9N+
de/8PUxPOT/7nFDBM0/rDMfAM89o6iw7nYzNmcxgrAs/kR4toWmYTqZ08U37ldLhauYpNoEM19pF
dLchLwuGo5v0Cg8LD9Xh2kbKpnnIUOqDk6PSKFcaJoefBSR4Fgp/hP/ch0+i2pNwzuxMjNpPT9PO
YCFcf9FRlDpF/leGeQgtpnfE0wmqNHFt+Iq8xTLPQ5ETh+z4cIvnbYgWyh9IItDuFovO/QKEwyym
/jEZVyru0nddaKeRDpl5i9458kv8tdZa0R3Taadw99yVNNGKxGi9i0p3RGRGQrE+EotSClFD31hU
0YIqd8tShO2XwvkSFr5zBlW0G1FVdILcBYA5Q/ugr98r5NqVgG0ZCqKjDgUpm0C2N/zht30gE2aB
ifhAQe4ItWXYuziRnkj7fjHXpmmk4OLfOYsa2omoupxFFva9eKq70aTKZPJuSnMfv0BaDKwkpUlW
YapzD73HaSlYVU+jjJYx0Khty8+cPF6gRTuQkJxLA7wMyhufwC8oEtlfkZsRuQrvnrWOPhNQJ+Cz
7U3m9e9s7PXaiAIW0SeAMN8fh/0fVdCahSbW5Io0eWIKvu8tgR1buF/LxYfMUkeD3jyf8QijY7WV
Tj9DvwFyYUfTfHFvsXIHiHSWT9FPDtkE8Ry5OLOdwMwFcni8HEQcJGEnfWZGTZPd4+vn0f1E9HaR
oetz9B7w6sPCDqSyij5LEUHyOuElenfuAa7Q4ULrUq6Scu+IISGBUKzejdwS6nv0+Ypt0UlkbR6O
fv3F67U3bOqy8wijicu6nBj070T9v+KO8CfshBhZNcWxGIShdLqfjg+Vko7/fieejBUT0b9XB3uT
C6cuPanMvdidyfREPUrPH0BsPjBpWE94BEwk2UzENuHZXeQfSKW0gRj6vKbPVys+JpdVX/QxUR1G
beLcDWzIjt2ShVukz2rpcw5bZ5Fl1ssNXXv3F2T70MFC2iVqID2ZJbyL6vOcxjhgT0al2kRc7sib
ouwCVsYeFD5bosjYTfp6OrL/FAhZTbWmXavYgkVKPu3JBWkgif4DI9mC+lt6b34G4tIUZCipJ93/
Z+F03rEvdH5om9qTYil6Zd9fwlT/39Kha3ehVlZgRzTpWDrRUu5kjHtHzDykWfAyfVFdnUEy44vs
ys8R1QLvtlrk3bknRpMxL2JTFmro/IDS838XxtFpAX2IUMMuhUz2Ew6Q4SsxrZjkmd7/zaT36MlD
xfgMAovl2yFSHGdpXWKQ7w6tqnN0LIvTLTfBVqr/srJUN4qob/rilQFuuqLt9usspaeM2h/d+grv
Bk6NP4Iy+r72LXoFYSqNA2MHdIP67j+xIXwRshTVUCrvIH0V20UPg6edDuGR0uGduvcGTqfgZNEd
8iC5i9y/bSUjrC98fmWlDicvhb+wvqf9u8EOokI8Si7OhosEz3ZrgCYW5CwfiXX+NPYMW4YsgXc2
Pz6L14N20twhAl4mY5ahEndf2io4vQTJ5ytoHlKH/L++g4RdFYJ3F9v4eJZc5F2Hv4rkUFZ2Gh0F
Z6yv2I1BJ4CMAYb5iaEOftUYAVnjqDYeQ65ca4qSgVejMc6LhFIbpi1Lwqr/IQWoDfJxNAmLp/fi
towV3nnRxXcbPR8XMl0RFRwJ+QJtrBcdfrJnLt49oEtl+JUJn3QIhH8NHVDhxhY0gF9cElYE0+lP
CCE3n0qMiaKj6qM0eVZlnsEk4eXvIKTEvI8IcsFkYVpcGC3kbgvX5o0m60C9ihmhSGkk5G9AFB3D
LCclyMIccrFj7yrdyBNuad70NB1bAXSil4B1ge2psezOA2fjwqEf4UfHSbPTIv1CafFIFtuuRmkp
wrp6KJmuXCEPTWAtYaDZBhF5RhmXXE5CuQ/xQ2sKFsatTcYbdBiH80tbse7f4+kzAbSjS8Fvgq/w
a/EfTSR0wVkeguydZRg3cbwwoWCup5tydpBVr7sodk61v6Zj7hPp8KGlNAlKwfZTq/D7iZHwXK0p
lbXnTHqnta2G3q6axYGsVwDO0WdmxtChSUw+2KIkrSiUDk3pgMnbD+LT8Nnw66NtKH9a1G8Poh0v
Fb5I30vpXTE3whvyiOXYVPRH2vXRyDUo3bm/jLVobdbVa29ca6u+FopcHjQey40KX5dfgKh+93Bm
fxrGR1g2lOho8pi6AO9+utTABw3uyfmLBXd1oyLtcskOR8ijg6gC2CcttCWyfj2XXCxl5OuQl0pu
gvpnTJ7/igHagfbbilrIQ/ubmZlM22Qu6cMvB0bDe/9KTekTyKV261g6KRok6/EaWdfqunHLtmNN
cC+78GVciGSbDBSTO/oUy/2vsHt/Lqasn4LScxpdMM6TFru6QO9gs0mTuHzqErbcr05m6Mxgg2x5
9MXGQ3NJ187A0bmsbk9ym92jaTdn6TZtOUo1JevodRkeiuS4T0jv6foqvddPcsHGH5Ue99nwsJog
MuaZD15W55VK2AWRf9+OTwbOg1wrw2/sydCMoyoD5rKBY2l8i0PUrNnwFDDXvL8Y4mEYC1ktpuOW
VL3Ne6bDWUqXGOSbTm62Wue0FM4afnV0G8tz7Q8SOnVgR5rUM4trC9HlMkBcT9F3Jw363A1M1xWT
rht6OEFgZhrNJ+aPdiPKViP5y7U03xqtbVT2/uJck7mf9kGTfqR0uBMWIu36MoSRYUYTPLHu1A4M
0+40WqPDtUk12dlGg5fOm0qc5yYxYtdMXRCVcRL40yL61I2Od5rLxaxC4YrxgreMsbrQ9UsXn1dx
cksFJgfr5nC+eDf/TeHdUk2aB0QlnU2SmEoux+FYnxFEZ4DoxgnSVzKDTiBNZjI/McHRrrw6fmH/
9dprr/3nUbOxadMmiyQsXrzYYrwtkcPCP0TIYBJIC0FF1kX2vo6Tc2c4GUulhbSNo8gKT9YpNU2U
XV06Nn5sIYbVp6Yu4Oyk2U/TJyEnbCW9ACWjT3GQ0dYkqJTsIBULeUxSmd88IOsY7cmTi62zeYHm
SY3uVRWF2PuBGq/RwTlsrsk+O+HucwznaIGkm3waJadL6+pRKg6iT8RTKL84nU6UJcyN+JF6ZqhL
V09jHJqGD5UsirmurodhR+8gMIzpuGfbZcfA2aO4On5lMgpSNRNAqf4hSpsWOyeSV/Nuw96rIUmG
k7mMmxWmZnJA6ZydTSdqZsmafNtsHq2sWc10COPDqXl8WEWvBO46ebbUJlayQvJcTzrDyULb2UfW
reJRilgp/qXyGT2zVj6NsjS6bDYfxiUynmhHFzQGOTfqTJpxoTltyqpqLr1Mxpmqc6ZxzpxEY1Za
8to6HjS6W/ZQnWxtOts4so5G8TKt1SXWphOvyfRJc+k2La1l7qyj0Vo9pRvjG88nNHqUZL0J45JV
NErpMOEZTSmobvv3MwmebWwyq/g0KvOt2M3Y+O5Co5jGl2plHe3208yB+q6LtdhLYdm4imbFWMOD
MS7Nqawl10PNocv+Mtkcalo5rxMbVGxYTJmS1wEuLrZNEFl9FgOd4CCmnNhEwfbwBJVnez7Zk2oc
JdfThL0TMT8I2JZ0CvK4ZHhqdyka02FlPewl62uakyJdiC6T4qSe6SsUr6dp+FDBopiL16UnR7h4
gpS67RibluGgd6LYsbWGdQMdM4yYyIGjQkF9utX4kMBdXJ6tB1Zcnh8TWZfi30o2rZVPK4trfjLG
k9g4Ygd+m08g69M0gWvyOGkPCqwtw3rd3ZTx0VoqmpqO4WyNLrE2XVPpcNx81uopCTkR+lwLIiDV
p1u0bgmeW5Bda4uWkbHM1RrhNy5QCkvjdPzaLgi068WiXRBsQ4XIuvkhr/I8rlwtReWdH3AsPxbD
B3ZvtpXL2et3yCtosDgQSj1rQ9ByVjgCHAGOAEeAI8AR4AhwBDgCDocAXyw6XJO1MMF04uXgkfRn
z2pkXSA3vA5qWrLUM9OU/I4jwBHgCHAEOAIcAY4AR8BBEOjq6oKz2f/A2HEvOwjFpmSezb4IxkN7
D3yx2N4lgPPPEeAIcAQ4AhwBjgBHgCPAEbAzAiEzxuD9rI9pwXjRziW3TnG93LuB8dDeA18stncJ
4PxzBDgCHAGOAEeAI8AR4AhwBOyMQN9+vcH+eHBsBP7bscnn1HMEOAIcAY4AR4AjwBHgCHAEOAIc
AY5ASyDQLnYW2ZG2PHAEOAKWEWgP/cPReHQ0ei1LlnRsW+HR0fhwNHotSZEj8OAINHJsLSFgnzhH
bX9buW8vfNqKS1tL3+a/s9jWGozzwxHgCHAEOAIcAY4AR4AjwBHgCLQtBB7X7yxyN9S2JWecG44A
R4AjwBHgCHAEOAIcAY4AR4AjYBcE2rwb6rDwD+0CFC+EI9CWEChIHSWw05b7h6Px6Gj0NqU/tBUe
HY0PR6PXkmw5Ag+OQCPH1hIC9olz1Pa3lfv2wmdTcbE1nyOkb/OLRdYIIYNPOkJbcBo5Aq2CgPk7
Bm2xfzgaj45Gb1MEta3w6Gh8OBq9lmTLEXhwBBo5tpYQsE+co7a/rdy3Fz6bi4ut+R/39NwN9XFv
IU4fR4AjwBHgCHAEOAIcAY4AR4AjwBF4BAjwxeIjAJ1XyRHgCHAEOAIcAY4AR4AjwBHgCHAEHncE
2oUb6uPeCJw+jgBHgCPAEeAIcAQ4AhwBjkBbQqD0+k28n/UxKsqrHJKtXu7d8MqkEejbr7dD0m8v
ovli0V5I8nI4AhwBjgBHgCPAEeAIcAQ4AhwBAYHjGefgPeRFzFs02yEROZt9EYyHJasiHJJ+exHN
3VDthSQvhyPAEeAIcAQ4AhwBjgBHgCPAERAQ+LamFmPHveywaIwdNxyMh/Ye2vViUaWsQ21tPdRN
koIHlPcuapUNTczfpEp5Jo4AR4AjwBHgCHAEOAIcAY5Am0BAraqn+XQdlKoHbYKftshEu1wsqioK
sXJ4f7j38IOn+zD06Nwfm0+XAeoyLKLrlacrTNtaqUA4S/NRtRBfev4gAjoPoryj4NnDh/JPxY7z
lN9CUCoOwm34QSgtPGvNqOItU+GWWNyaVdpel0qB4M4RuEJgNZfeGkUhCkrqbKJBWbQPbp33wRYb
0uPSvjYx+pDE6hoFNkdGEBb9ETBrI3IUd4UcpRnbEDxhPsJnaf5iYhMQE7kR+VVMwTegIC2Z2q8/
5ZuKlbsKRWRePJ1YvQ8ht0mPra1LXVWMdbOo72ixyFUYZEpdU0w4aZ65TdiI3LL6JtFiTSYpess+
OiLoJ4Z7zJoTKFNpS1TfRdaWBIF2t+HzsTlDIWLYqkOOPl0EdmQa0knxbw3dtqSR4rFWkYdFE5hs
9Udw7BGUiihUUSx0hJCOCe+8FMUi+XXJmvyrKsW6CRGGPhK5FIvob8f5O42KlOK37Dy1KY1Ruja9
pWvTRqXYM6IO6ZH9EZ5Sqi/UWjrE04nLlr4Se1yoKpAaP18r60uRVaTRWeZFS8nzrYsntJj31/Sj
lpIRmOP8AAW7NuplJnxWBGK2FFrsq+L9oA65VEYA07/U13dkFMNeIiMlp3p8JeReetzQl9CsC2XJ
WcRoxyU2PgWTPlZYaD/xdNa3QVMJFcdRqm7x8dKUDvF+Jl6vaQmP5E5djeNr5qOH2zCaT/uhj9sg
BETu0+t3xa4IBGxREGn12EP6cPNlw/jbmN56pNIYkapouXG4cZ3tJ6YdLhbvYLNXJHaPehsXbhSg
vPJDnNwZhg2zJuN4xbMYHwPs3lVgMtGtufoRshGIsb5uuHV+G/yCEzF2ZyqKKwtw48YHSN8yEAnB
k7HjsoUB6icmTE/hUb8c6uY/Dyljuj3eki17Uk9fc+mtzonE5OO39OVZc+HUewRSUgfDyZrExmmu
Gd84+nU1NvSZgQ0k79kFGYgdeBthw0Yhp+IBur/8G4TNmYhpoRPxamQwnv/kCI4evo0nSbjLMjZg
8txPMONUBvJyIlAeH4k1mWZGF4JGPJ14vfZH1Nq6qrHNcza2/WKmgMVC39uYOWwlFGwWRoaltX1m
I8s1DHmXjyN5SBpmDtwM2yTOWs7E6VWVncHQiQnw3LMXeflv4ZefrMTQN8/QRPEBcleMQsTq+0jL
PY6Tf3oRG6KoXS0sWq7sWoAwSpeSk4HsdwKRED4D2wTDmAT/1pJudTpxHlF7FVOGzcM3Y7YjryAV
I75MgN+MEyY6mlUjjgU1V+0dFJw/g0W/mUG6/AerqbI5oawrRpIBgfWRab8PxTjvH3Dg8Ck0PPmE
WVHi/NZc3IehwQkY8FYq8nLn4ZmklfB+86zdJv9mhOhvFSl/Ruxhum0QBi1YS4dUOnHZ0ldrh4t6
pL8+Hos/7INjBceRFgpE+Echv8a8aHF5ViqOwDtoJdxjWD9KRtcc6kczjthkODSvTezeHGfge1xO
S0NH/4mI/OOrCI8Mw+8Gd2m8WJToB1e2LMDM+NuIZX14hS8SomZjhQX9K0aTeLy4nJrkkZB7qXHD
pIxm3JTnp+MoBiEyluEXiui4MXCzMJCLp7OyDZpMoxSO4nWLj5emhIj3M6l6Tcto/TsymoSNRnRS
V6QVfIAb1QUovpyKsdeS4NdjH9hxOAavPxmGvrUBAT07SJL5I03B7/3EdyclQWriw/a3WFR+g7ME
1pLxL6Ova0c4OXfBsLC5SF87Fx3xH3jPigdI8XyqH2gacPHATiAmGHJZBbYG78W4ncexPMwb3Zw7
wtm1OwIjVuFk4kR8cq7USLi1LcLWP9f+ibRErYWfds52ZBost1WXzyBGsCDTLs6EBORod8NUJWcQ
HHlGPyFSVxVSOo21rDRjI1k+D2LzLI2lPWBWst6KZmxFcmN1sR1TCvcrilD8JVlcyAK4knaLsk4f
0e4C9cci2gXSWSFNrKuJR7AjdinSLVhqjOsJiNyGHWTVXZlRCkZ3OFn+c9K2kZV3Pu0SPsCVDN2O
E+ORdqIqGgSaQBZW/Y4GozX1Y3wHZ1N62Z2yDHtiNTtdzGqaflm7wyuCQ1kmWVhXU771MxAQa8BQ
KFj4V2+wwpIlNnzNGY1iqv4K2YVfC23IrKHrMvLIWk07RxOOoMZot80YV0OZ7IqsgCla6y6Vy3bX
BFwF69lSjdVb2HW70CKTEFNamnanKvkHtlHW7B2zMVguR0j8Isyh+9Kv6+HcawBCZozFpOCxCPJ6
ElnXPJFGin2Y6xO4V1kEvPYHzBwph3z4eJosAweuf9eICLF0UvU2KqSZEdbWpaY+swG+OLdxuoDF
pKhwqvkW7tMIVvXhEexGHE4kToHcsy9C1lxGYf4sOBlGt2ZSacguRW9J9jEgNAlLZgyFfOBQhIb4
Aoe/hkp5Hdt3AevyVyDIpy+GzYhG9jJPbFuRq9cpmhrqcTXtEpbkLsWk4XIMHj0Tm7yArCs1kOLf
QJ19rqR4LM1KhYKw3rYgAHK5NxamJpOOTsMXZi4AolgQiervbuD82XI8FxomEKxZDtmHdpNSZF3g
Hzxe6COTyMpddToX02i8WDjSzSSZFL+Vn56i8WYvFgZ7Q+4TgDX5cdSm6bhmYafEpNBm3KhKTiBg
wdNYF+eLOq16tpYO8XTistUMUhtnVX6J5NNAWuZ8+Mv7ImjBCqzzKkHSe4ZxlmWSkucbOQmA/was
DmP9yA+rU98W5gH/MpOxxpXbFmMJZ6iqcP6aLyJeDcQQ70EIHB2AoJF9GxktxftBHS6uvoQ3Tq1G
COvDE2YjL9EXB75qrH9to5amCxLjgUlZEnIvNW6YlNHkmwb86xzxH/kKhg8ZhJdH+SFotDdcG1no
JdJZ2QZNJVESR4m6xcZLUzrE+5lkvaaFtPpdbVEWYk974tiNVQiSd4ezU0d08/TGctL3b4Q24K6J
vlPjZtEXqLmvIbPKyAvAdE5pYOPWRwcFT7XUi5r5ouEJv2oKAu1vsej8PGJDgQ0TR9N29zakZxZC
QbsmgQuiEeTRES5eI2lyXIL3CrVuQzQQ/S9ZW1dN84aMFpqXCeXfjXDXY61WPwD7GxbzZ1pYDLWw
g/gUpT2C5e/9DCcvn0R6Ym+y3IcIu5DqijwMCFwCBe1yZuenYnb3IwjzWYArNECp73+HC4cNyl71
9b9x9Np1sL7yk/I2jiYl4s6YZMEK6nN6J5bTQg24i+RJtHtwrR9ZWE/i5J5+SKAd09SSety78xHO
Vt5juVF+Og0Rs95HWM5xZKfOxQHaBTpTQu9eVpwVrKsI3Y4LZOH55XsJSNh/yoKlRlfPAIGnpV43
kLArF+Xf/kRY1CN7fwLC5hZj1Z5w9CxPx7ionRh96CAKqcxJSMPUnReFBVnxrpW0o3EE6zIzcCF3
Ks4vSKJJIcDW1wZ667BnxmQs/2YITpLVOIXaLjbwj4LVWAyHnw8ag3WvedIkOg6r5rzYaNBVpCwj
K2waZgv1JgFJSzAg8SphXo2juzSK5SflDWyLmofFN4ciZe1LSBfBlUjVh9KMNZi8oBDRtLuWnRmP
3YQrs+4qUteR9ayarGdncC4zhOKjsfOilDuFvshWv3DyHIerRefhpbXKKhVXcICocO1svDNC7h4R
0VAsW46gXpr4PkE0Cd8fjUVbTuA4uUNFUJ9JDnm+Ef1i6ayrt1FxTYqwti5Zr7GorkvBAKd6KD46
i3UzaLHoH4Jfkj2j+vp1uq7QG2zcOsfgUzxrYYLSJBJNMknROyAmBdV7xwK1FcjN2IeoBZdocTIC
Lk4/x0tUSvX3OsMM8IOqBOjC9JFx6Iioi59joU9nVCmukn5agcVkBFg1qx+k+DcuwR7XUjz+dI9m
DROeNfRjZzeMIx39+U3TPiSKBRHo5OGH5YnReHNBMPzMlsv2oN9SGbcyt2J5fhiWhfVt9FiKX8AF
qKnTGx7Vwsq2ltqvUTH2iVBXYIXPSqwrWIgx1GUNo461dIilE5ct+xCuKUVZfp3GjUB0JzI0QYZu
ZPD4TrtDqo+V6M/yqA9RfHC0fvy+fDqLso1ET32ZulKa8SuCs6q8BBdwCePcB9GrMT6C63G6BTda
8X4A/L7kA8z37aIhjuo5FH8Jfp0brZZsJl5aTi0XJy73jccNyyXYGvs9Kr8ij7Dg36JHFx+4dyE3
Yp2h1qQo8XTWtoFJcTbcSOEoVbfYeGlatXg/k6rXtIzWvyu/kAt4zcSvXc3qdvXG23ujIdfsG+gf
VuWkofRbNk+leTN5AdT9bgMuFGXg9e40p/TagDKtobbD0x1Qe3kfvCcm4qXUFeRa7qYvg180HYHm
a5Om1/2IcnZEyN4C/Cr4LI78H1k2wvdq6PCfi7yDJKAuvTCNLPCTSdm8M2EKlOSCegHTsXFQZyhp
h5ANSr/qrt0KVxZjTI/ZwgJHKMR/FUpOT2dDfaOQnjWfdmAo2nM5Uv51BBHnvkLgLzIpIpImaFPQ
ja4GJ59B+eHx5A5Who39zYp4UjPJYwspNNDk6bXt+EuEn5DoD2RFjKmjhVpFMRLIJTKtZCH8u9Ek
Xr4Q2T/+gjoY7SgKVBmae0nOJrJCssGlB1aF70Tl/QaU0I4qvOIFCz7jYXlmMrnhRQt1GP9TlRUI
9aSXEE+McM/VWLU6F+eNEqUU/Q2TPJ6AuqYTUg4dx7gJNGFS3cVLQ2gRl3Obpmv1KEzLpV3ak4ga
7UE55diX+zU8Az/WlsIokJFlM5cmXLTwKAjFIHfC/fU3MWd1CA7RO6JviuDg4uGNgBdcqMQRCPRh
ZRuHenyy17TezbkbMKDoJ3IVM05H115xUBx6HS6knHqI4fozXZ465EWdgt+Wg5ji25smer1xbO1x
TCVZmzmB2otC/Q8E1ahpuFrQH3ef1uV73H47oKeHRrlWXT5BxoyVtMuxHVM8O+oJVRadweJ8T5w8
6K2PU/0gzGhxYHUaGVRoUUKh8ls2mTfkY3Hi6bo/tF6W3z7h4Tya1KOqxqElcdhNMgCve7hPk3ZZ
B8Io/wjK125H4cZfonBnPKL9/4z+1X9GX+1C26SMZt08nN6ynH2YGXVEqOXn9+5BJeuDEa8BYRPX
4sWcN9Cj/Cymkl0E/mKENKDo8E7EJl0SElTfJZ3RrbMmsQX+DSs3sfJsjRfnseQcaQf/54yq/Il8
EsRDIywoqb5JVBo5Fc9tpyfkprw1/AjeOPQBelosUpxfZdUQID4Oa0ftxawX72NHIGs44HY1tQl5
w9g3kLvyO+NxYFkqquUdocgzlN7jJevoeHg6CdkyVNfkK9nTDJNcfM8W00JDd8ALw32Z44rlYEGe
ZeRhxIYy9m5U/q53MJV26lbRGGm57SwXKx0rjrNasAZMRHrRYrz883pkLBqPWP8dGHp3FTwMQ7Zg
PBDrBy7dugvVM4+fDWTY3E1zlrwZcmmSrHoqLqcWs0vIvaVxw2IZtkaqaqC4Rt5iqcfxxrhncf29
ZDJQR2JoQAHCSab1QSLdVDKiAw9vA31ZNl+I46hWiNfdycpxVUOO5X72sPHcZlbslEEm7VFquRaa
o5V8kEbP4rAvfrwwq+274ww6eF0RfFaf6gLs27EBy/cfwfxDZ7B8Qi/L5fBYmxFofzuLtPN1iw6i
kNNC8O1DZJW/W4DCnA3wy9+JgK2FAoCDJs8U3JxKVA0oPrqT5HIi+pLSdu79Ii1AcvHpDRq0WaBd
yv+j3cLCa2dwLDGQbezpLZOaBOz/j/QXhwF668kT6NGDot77J+7RYke+9jfaQYriZG7wosmc4lvt
XjtFWQpqipRrJ/TsObtnQXX3Nv33xM+caaEohCcwOOx1zDSzrLAxtPMzhp7ayUuTWk2bEPIwX8Ni
14VZ8BsHdR2zPXviGb3lpwsGxjFLLkur4defFoosyFxoNfX5/wqHCPVwG4WwJFpIPEfvcKpu4mNS
8EMGdBXSsX8ug0aQ1Z/tfRqC+r7mLprem3PvMQzu7iHCTle98r5m8LSAA8stIGhmWRZKVVUil+oN
HKxZELE4V5/xWBgxFAZECFPWNqFDwZrNKlyVt8CWuRcWzIY7vazdh/6mriZeab79wh/WYFMMEB04
nqyePvh90hXIfm40iDEiHqtA7sGJEcJCcVriXpQnBhgm2/Qu3KVDCbRrGw0fvVWkHpnzKI4WlTfq
jiGvrgBpcZ5ICHrfzN32Yemk6rU3QNbU9QAqdjqbkwfept236hsHMe3aTmx6r4KI+YH+5mIzuUZ6
9OqLmStWk244hbzrWt1gb3KZy7aFNlGTjlKRAug7YxXtgn6Oq6ficCF+HT6rfQJBSR9g02tKRAfN
wOStVZjPdtvv/qjXFzoSBR5J+oPWkD6ktkt5jXbvI7LIoCPFvy63PX8t88gmFYrT14z2A59k3apR
EMeiUdIWj6j9LI/0lC+mj9JM4i1XaJlf15HROLeH3qufG4mAwHn45dpIyh4IeR/76wxVSRZm0lp0
06hOKCspxb/Ka6H4ugSlNfWwlg6pdOKyZRmRpsSq77M+F4if6S0CDfj8Ihk9jBW6ULC0PLMDq1Z2
Jr0dX4J3c8/jTcGY2hSKGueRwtlZPp363Z8R6NEFTmSsDv9LKumSItyqNS3nYf2Aud31oPfNtz1H
hu/yVY12ZkxLs+XOspxaKkFc7i2NG5ZKaEKckxy7SPctDO5LroydMXjGXHJDpkVD3k3TwiTSWdsG
pgXaemcZR/G6HzZeGuqX7meW6zXkfoRX5FvPbDwmgQ6r2hNLB+uJHBgnzFMThxrmqU69MHPBFHhQ
/+9AA4OCFooslNz8xqRYftM8BNrdYlF57TC8B47GRZ0ilnWEB71jtXELWSKT/i1Mbp3kI/AG7Y4c
OZKNo/tpIA3tp0HZpTvG0tW+k19oUe+Inp4eNFnshR/+RVvqZNVoHNiO4Me4qdlcEh4Ly59Rz9Gx
NyTYh68bTYLqUZMP/LwDmU+MV0yUTiYswoTsNvx7QFbSbdhj4VAL0ERQF9jyThfYpEzfeWur6TCI
xkFjyaV43SqVJrJFOYxuXVrDgT6Kvy1FxPpuOFdyQZjMXthCi+qvKJ1TT9r3A742OuZPXVFKu7im
wamzZkWSXvIZqqsvo5IW9xdy9mLJ7543TWjpTk+P0UMnZ7jT7S2aDOlCLe2grdySRzZla4MFXJ01
/MyhnYTqus9QfvczlFzLwLH4EVB/o8bIRX8TJuJXC5Ix9k4SAhblGnC2ttpWSdeAnHg/hK13w7Gi
AuyKGWq0UCQC1OXkqgvMnzOwkWFkybQh2jdOO2JUaAgl/gZKvYwYiLec7iH1GrLb4cq6upRFB2jh
vwM1uhpdvTCSGXMqv4Ow0e/VyQgbtdbDwNCvdNma/ytGbwOOTvXBK9sV+ip6vswMLiWo/K4Oin+U
Y/R6tgCkhe7FPyN0IPWlIb/UtpE2C3lHvEIn0KWX6ejuiF8HTRcefi/Bv75Cu12I8Uhu6eR2inyl
Qd3U3ia95Anv3sZLRiksBCuW3Sh9eEEPUHiUVmChM+GpN6iZ5xLnt4bcgb9/IVTTbtR2y6f1Nc9s
t3u1tn8uDgrBUJ8QRO8iAxe9HvBW2k1YS4dounpx2bKgFprMk7N7P5L5XNz8RifDDag8DPTuROOo
UZDqz6ATz2PpwKrdMW+j+O4xzPQhmbNjkMK57HQyNmeWGdX2E+mSEpoC6PjRPJLqB+yQIeZ2x3bX
qg8xDymj4pp1KS6njYuVkHuJcaNxObbFqMropOT4EwY9rc1u3v5S6axtA9soM04tjqN43f9PKMDy
eGlUtoQOV9M5CpLjuVExrX3pPnwSVZmEc2ZnYtR+epp2Bgvh+gtx45gi/yvDeKAqozMz6ARVmrg2
fAW8kXkeipw4ZMeHWzxvo7X5bCv1tbvFonO/AOHAjql/TMaVirv0XRfaaaRDZt6id338En+ttVZ0
x3TaKdw9dyWdsBWJ0XpXhu6IyIyEYn0kFqUUooa+saiiBVXulqUI2y8lEpew8B06RIV2AaqKTmDy
emDO0D7o6/cKHX6TgG10pL1SVUeHo2wC7c/gD7/tA5kwG03EB/TZAlVtGfYuTqQnojMPoXLnfr6Y
RoNM/DtnUUM7IlWXs8hKuhdPdTeaVEmM0n38aCGXv5IGrlL65g0dKkPvcVoKTp6Dhfc6J686QdbP
OlxJ2yq4pXa2sDhTN9CqfEIPuLl0QA0tGLcsyKVF9Y+0UOqMF8jdd/esdfTJgTqBx21vLhF4NB7i
ZR4v0MIdSEjOpcFABuWNT+AXFInsrx4+AVT86yuTRaGGFzf8hnb5tk1MRkFVPVQ1pdhJrpa7Gzqj
o9kCXce7JK76PBp+DszagytVKto5rcSR6BmYmnId11ImY2ifHVDQqqNbnxfxIlvnPvNko8WWrr5H
+asuO48wWgyuy4lB/07UNyruCH+1WguC6kYR9QlfvDLAeDIlQ9fn6D3g1YeFHQllFX16I4LkdcJL
9A4fHXBEhx2tS6F3QoljsXQuFdL12hMTSR6NrJpOXXpStXuxO5P1z3qUnj+AWDLmTBrWEx4BE6nv
JmKb8Owu8g+kUtpADH3eqK/ZiWhxejtgKJ1Oq1i9G7klpCeUdAz5O/FkcJmI/r06ouJAJLxnHEQZ
HTJVozgDP9Jx86fJqRWM2sS5G71HTDuJW7Jwi/RZbcVVbJ1FllkvN/xMgn87saYvRpxHwOPlIEqX
hJ10WJdafRfH18+j+4noTRNiVdkFrIwlHlVSWFhQTPqaW+Lie3xBfWjOhBeMjAlUj5FsSfEr+/4S
pvr/lg47uwu1sgI7okkv0umqcif70+osn6JflDKjwjl6pUG+9iAyF5CcSNBhwJ0MmWLpuorLll1Z
IUPdaC86AXVTFmro/IDS838XxtFpAX1MMJfqz4qM3aTXpiP7T4GQ1VRr9F5Vnd0Al8JZffef2BC+
CFmKaiiVd5C+iu0kh8GTDg4zxlm8H9zB7iA6QXJZMsJ/0xVVWp1dVfvwMfJhDErJqbE8a8oRkXt6
aHnceFjt1j2XyX7CATJwJKYVo5b0tCJzL5Zf054tYdTnpNJJtYF1VEinksJRvO6nRMdLk3FVQofL
HjKeS1Pdsk+d5SOxzp/GnmHL6FM3d8iLh82Pz+L1oJ00d4iAl8h01913BHB6CZLPV9B4UIf8v75D
Z2ZUQCbT+LU9S676rsNfRXIoKztNOKHcuB+Zyq3RWNiy7Dp86QRvOwvkUramKBl4NRrjvEgotWHa
siSs+h+57hbycTQZjKd327aMNXlvodvo+biQ6Yqo4EjIF2iTe01H8p65ePeAPrv+QiZ8DiIQ/jV0
UIYbWwwBfnFJWBFMpz8hhNyNKjGGjrTfFqXJsirzDCYJh4YEISXmfUSQ+yUL0+LCaCF3W7g2bzRZ
B+pVbFxw6ouE/A2I8o+DnCYrLMwhN8IZtNi9kSfc0sj+NLrTZSd6CVgX2A4ny+48cDYuHPoRfrNC
hBMx/UJp8UgW265GaTV5eiHx2l6awNBk1H0lvQc1HXOo038jHE1DKWjg1oU+U+bBb/U84j2Bojzx
Brk0FoqDAABAAElEQVT0gg7nSb88CW/+aSvW/Xs8fXKAFpAU/Cb4Cr/sn4HHXlhyOQnlPsQTGetZ
GLc2GW/QgRzl5GlkHPQ4UGSPX79C7bcE3p/Eo+TibIPLAp5A4IqTWHVzMiZ70qSYhQnkuvcmHWBU
+SXRrtlnNdRPzyVwRQmhp83jv2gH8fMmxnkOE4qFfyTOJfhDrj6I+Z/MRkAfwowFkpeTmf5GPGqi
H4f/tVVfC2QsDxqP5UYErcsvQNTAjqSc2erYWfhchuFxB0zefhCfhs+GXx9tIxHv2duDaLKswhfp
e0meXDE3wls0napU03nE6jXU1fwrSR773cOZ/WkYHxEN2cCxyKMDoALYpyS01bL+NJfc02TkY5CX
Sm6C+mee2JTzVwwQGeCaQ7UkvVMX4N1Pl9JOiEZPgBbyyfmLyW3+CfRavRdzqI8O7UELdwrj1tIJ
m8KpnPUmbTKX9OGXA6PhvZ/6MgusP2wdC2fiRYx/TUL7/ZfkcWAAztHnjcbQYV2adghEWlGo4CKu
vP8Vdu/PxZT1dHqvKBbmdJrLr/nzZt7T6YbFVERgvy5mBRlkq/YHiX42PBTJcZ/QYWfaNmXv01N7
mOgks5LtedvbtZNQnIsEHSoj3D0k0onJll0Xi+TSE/n37fhk4DzItTL8xp4MzTiqMmAu3p874MS7
mjFonG5MYAjQ+/umY4c9UaadTy3OfcNWI/nLtTTWj9ZWwN6dmyvMO4zl26OXSD9Q3iQTMb0CsZ52
FMkQrQts0Z+3YIDutkm/kv3SSFcKhYvKPTmkWBw3mkRSo0zsIK4Lh+IQNWs2POdqHrMd1hAPmuOY
tb9oOg/xNmhUYRMiJHEUbf8O6GbluCrWz1Sf7xOobY1x1XZYuiAq4yTwp0X0qZvf6rP7xaxC4Yrx
gqHNWOfp5qkuPq/i5JYKTKZTp9msko157+a/Kbzfq0nzgOLobJLEVKQdDsf6jCA6A8QwTnjIDDqB
BMRkLCT7Iw8iCPzXa6+99h+RZ60WvWnTJot1LV682GK8LZHDwj9EyGASSAtBRVYo5uvt5NwZTsZS
aSFt4yiywtfW025JB7i6dGz82EIMq09NXcDZ6QnTp+SEraQXj2T0KQ7zQVSlpDwyC3lMSzC7e0AW
StoKIhdbZ/MCzVIa36oqCrH3AzVeo4Nz2JyXfQbD3ecYzlXSQtd4Eqy+g+Pbc9E7bCYGk/UTuIN1
nX+L23tOYtcM8wNlWA0aenT8MZ7YtQ5y63jU8WQrFqx+y0FoD7WMJsWGhbPllLpYHQ3SuKqZXFko
V4gnrp2drK1PV699f49fmYyCVM1EVKp/NKVW9t4Y20F0Mpdxs8KsTWeWzepbu/Ko7Z9ORjKrJ0Tq
mT7Rwy+aS6+UbAn9i8ndQ+ScpQPpmkZt95jwSC8SC3rSYjsYQSyFhVGyJl82t62srZjxwdS4M40v
Ol1pbV7jdM2l11o6pNKJypYxoRLX1vGgHWfoCH7J8dxKOZIgx+Ij62i0mFUTKdBF7f2QfmptP5Co
yeRRs+k2Ka1lbqyj0cr2181HLMmJtW1ggU3raLSQURclUbe142Vz+5mOFKlfW/l8K3YzNr67UKpI
8qCoo11hmjlQm7g8TP51JbVQP9YVb/xrDQ/GuBjntfW6JddDttJinL45Y5BxOQ557cSUhQ2LKVMm
O8CFXCttCaw+i4HeXBcbINjEyPbwBJVnez7Zk2ocJdfThL0TMT+IXDWTTkEel9z4vRui996lRIxb
nYg5cZH4JmkvvUNEp6/9ztJCkVFvSo85T+b3lvk1LcNyGttiRdtDtBjraGAKz3htrStOLF73vC38
ymghbI1SsTbdY4GJRP+kY1FF+25r0i4lW9b1L9pAF9MZjwmP1mIthUVrtklz62J8uDR5fGpu7Yb8
1tIhlU5UtgzV2OHKOv1srRzZgSDbihD6mRVZHpf+aAWprZvEyvY3m4+Y0GhtG5hkstONRN3Wjpet
08/sxK9RMTLasHG1NGkyStPokveDRpC0ZIQ187qWrJ+X/RghIOvmh7zK87hytRSVd37AsfxYDB/Y
3cLkvwvCD13GyKJrKLlRhR8zD2LzqAEt8o25xwgeTgpHgCPAEeAIcAQ4AhwBjgBHoF0hwBeL7aq5
rWCWTh4cTO81DX5o0g7wGOhNfw9NyBNwBDgCHAGOAEeAI8AR4Ai0MwS6urrgbPY/MHbcyw7J+dns
i2A8tPfAF4vtXQI4/xwBjgBHgCPAEeAIcAQ4AhwBOyMQMmMM3s/6mBaMF+1ccusU18u9GxgP7T3w
xWJ7lwDOP0eAI8AR4AhwBDgCHAGOAEfAzgj07dcb7I8Hx0bgvx2bfE49R4AjwBHgCHAEOAIcAY4A
R4AjwBHgCLQEAu1iZ5EdacsDR4AjYBmB9tA/HI1HR6PXsmRJx7YVHh2ND0ej15IUOQIPjkAjx9YS
AvaJc9T2t5X79sKnrbi0tfRt/juLba3BOD8cAY4AR4AjwBHgCHAEOAIcAY5A20Lgcf3OIndDbVty
xrnhCHAEOAIcAY4AR4AjwBHgCHAEOAJ2QaDNu6EOC//QLkDxQjgCbQmBgtRRAjttuX84Go+ORm9T
+kNb4dHR+HA0ei3JliPw4Ag0cmwtIWCfOEdtf1u5by98NhUXW/M5Qvo2v1hkjRAy+KQjtAWnkSPQ
KgiYv2PQFvuHo/HoaPQ2RVDbCo+Oxoej0WtJthyBB0egkWNrCQH7xDlq+9vKfXvhs7m42Jr/cU/P
3VAf9xbi9HEEOAIcAY4AR4AjwBHgCHAEOAIcgUeAAF8sPgLQeZUcAY4AR4AjwBHgCHAEOAIcAY4A
R+BxR6BduKE+7o3A6eMIcAQ4AhwBjgBHgCPAEeAItCUESq/fxPtZH6OivMoh2erl3g2vTBqBvv16
OyT99iKaLxbthSQvhyPAEeAIcAQ4AhwBjgBHgCPAERAQOJ5xDt5DXsS8RbMdEpGz2RfBeFiyKsIh
6bcX0dwN1V5I8nI4AhwBjgBHgCPAEeAIcAQ4AhwBAYFva2oxdtzLDovG2HHDwXho76FdLxZVyjrU
1tZD3SQpeEB576JW2dDE/E2q9LHLxDF87JqEE8QR4AhwBDgCHAGOAEfAIRBQq+ppPl0HpeqBQ9Db
Holsl4tFVUUhVg7vD/cefvB0H4Yenftj8+kyQF2GRXS98nSFqSwoFQhnaT6qFuJLzx9EQOdBlHcU
PHv4UP6p2HGe8lsISsVBuA0/CKWFZ60ZVbxlKtwSi+1WZWtiaG/a7QZCGy1IWXIWMbPmI1z7Fzxh
IxRaAS776IjQF9xI5mPWnECZSgqEB8iKjUCqot4oUR1ytiTAjfqT2/AI7MhUPFJjS83FZATE50GS
DYH6OqRH9kd4SqlwV5qxDcETDBjFxCYgJnIj8qtaerAzpYMRU6vIw6IJhCdhGhx7BKUiyqam6Cyl
Iz3A0kXuQ3GtjtbHv01uXTyBcNLZjHZB7izy+AAFuzbq5TZ8VgRithRq5asOufQsQJC7+diRUWxF
mwtNbfM/dY0CmyMjBFoDZm1EjuKuvgzr+o8UH8At1ge1WISvOYNbDxdeff3SF41lq+y8ri5Nfxer
65HLlqoCqfHzBczdhi9FVpEBc8s8N+bV2n5kuTxbYhvXbZ18G+pQV11AcOcEKIzavqXkQl1VjHWz
NHqDyXOuos5AiNGVVDpx+TAqoFmXrH9rx5XONK6cLm08rqhKsW5ChF4/xEQuxSL623H+jlCztbLe
LDKFzI3bX11TTDpDg7Ebjbe5ZcZjpq5GKb3QgIK0ZJIJpiOnYuWuwkc+59RRLfmrrsbxNfPRw20Y
zaf90MdtEAJobNKNYYpdEQjYoqAi6rGHdN7my5ZlT1NHPVJpHDSdb0jWzh/agEA7XCzewWavSOwe
9TYu3ChAeeWHOLkzDBtmTcbximcxPgbYvavApKPVXP0I2QjEWF833Dq/DX7BiRi7MxXFlQW4ceMD
pG8ZiITgydhx2cIA9RNrjafwqF8OdfOfh5Qx3WwQDamkrYuhfWmX4os/YwiU56fjKAYhMvZVhEeG
IjpuDNycAFXZGQydmADPPXuRl/8WfvnJSgx980zjSbe6DsUXLyB1TRwi9l/Cjz/pFiXAlV0LELb6
PlJyMpD9TiASwmdgm9YI03roP8AtRTFyaHCVB+2E4vNvGvNgRowi5c+IPUyRDUKHRveXf4OwORMx
LXQiXo0MxvOfHMHRw7fxZAt3dHM6UHsVU4bNwzdjtiOvIBUjvkyA34wTJvqLsaKuyoPcPw4/TJhH
6Q5iPJIwZnaWkO5xbxOl4gi8g1bCPYbJXTK65pDczTiCxo5B3+NyWho6+k9E5B+Z7Ibhd4O7CJPG
K1sWYGb8bcQyuVvhi4So2ViRaWYUNGvzpt1WY0OfGdhA40V2QQZiB95G2LBRyKl4YH3/gTgfyiLC
gvrggLdScYGw+EXSEnhvvdo0Us1ymctWzcV9GBqsqSsvdx6eSVoJ7zfPNuorj1626pH++ngs/rAP
jhUcR1ooEOEfhfwaMwaNbs15tbYfGRXR5Evzuq2Xb12Vd5HsGY0L+BZqrVtUy8lFNbZ5zsa2X8wU
5Hmh723MHLbSZJGqoUo8nZR86Dhq3u8D5Ce+Tv0bSM8/iexDQ5AwKwQHSxpMi5V1xUhakDGdPe33
oRjn/QMOHD6FhiefgLWyblpg0+7M259tUqztMxtZrmHIu3wcyUPSMHPgZtxqVLy4XijL2IDJcz/B
jFMZyMuJQHl8JNa0iH5rRFQzImjRHDYa0UldkVbwAW5UF6D4cirGXkuCX499YMfhGLz+ZBj61gYE
9OwgWd+PNAW/ZzTfkEzMH9qEQPtbLCq/wVmCaMn4l9HXtSOcnLtgWNhcpK+di474D7xnkcahyfKn
+oGmARcP7ARigiGXVWBr8F6M23kcy8O80c25I5xduyMwYhVOJk7EJ+csWLOepMqu/RNpiUZWr0zN
7gRrqarLZxCjtRIHTEhATonGcqIqOUPW/zP6SZ+6qpDSaXZ4SjM2knX9IDbP0ljaA2Yl63d+jK3a
boKFTbPjeb+iCMVfkrWKrGsryTqYdfqI1grVH4vICqUzUJpYOBOPYEfsUqSb7AwR0a2MoTntxzN1
tE/F5sxCZG1ZqrUoz8dxnUXZ2NJM1jZmga/Rah4pHmuKDO3Bdl8U2hmpInOfHq/gyGQU1xgWQKwd
205owL/OXcIbka9g+JBBeHmUH4JGe8OVFkEl2ceA0CQsmTEU8oFDERriCxz+Wi87egzU3+PTnMu4
97MX4aePZBf1uJp2CUtyl2LScDkGj56JTV5A1hV9ZzNJ3XI3apTl/QOXazrgjQmaWqTWeKqSEwhY
8DTWxfmiTjv/cO41ACEzxmJS8FgEeT2JrGueSKNBbpjrEy1GtiU6SrNSoUActi0IgFzujYWpyaS/
0vCF2UpK9fVtga45c1i6AQibF0fpbpJ+efzb5EZOAuC/AavDmNz5YXXq24KO/pcZj1BV4fw1X0S8
Gogh3oMQODoAQSP7wgl1uLiaZPrUaoQwuZswG3mJvjjw1Xd2bytVyT+wjUrN3jEbg+VyhMQvwhy6
L/263vr+I8pHAz6gccRvy0ksDPZGX8LinRtncG7cL4wmVU1jyZJsVX56isa9vUJdcp8ArMknmTmc
jmtmu7qPXLaUXyL5NJCWOR/+8r4IWrAC67xKkPSeYZw1RsUSr9b2I+NymnJtqW6r5Vtb4ZUta5Ew
YaJw95Pwv+XkQk3zhg3wxbmN0wV5nhQVTjXewn3DLF6gQCqduHwIWZv/T3UdSetLkFayCoEDPah/
R0NRdBwj3cy0uqwL/IPHCzp7Eu1AVZ3OxTSayy0c6QZrZb25xFpq/6oPj2A36fATiVMg9+yLkDWX
UZg/C05mGIvrN1ogVRYBr/0BM0fKIR8+nhbEwIHr9tdvzeXfOH9tURZiT3vi2I1VCJJ3h7NTR3Tz
9MZyGtPeCG3AXRM9o8bNoi9Qc19TQpWRp0kA7cTmV5gZBijZrY8O0pyNPJsuajwCjevm17Yj0P4W
i87PI5Y60oaJo2m7exvSabGhIKtv4IJoBHl0hIvXSBrcS/BeocY1ATQQ/S/tKKya5g0ZLZIuE8a/
G+GuR1qtfkDWvQcYFvNncoMZamEH8SlKewTL3/sZTl4+ifTE3rSbEiLsQqor8jAgcAkUtMuZnZ+K
2d2PIMxnAa7QJEh9/ztcOGzo7Kqv/42j166D9ZWflLdxNCkRd8YkC5Z2n9M7sTyDDYxkcZxEVu1r
/cjCehIn9/QjC9tkpJbU496dj3C28h7LjfLTaYiY9T7Cco4jO3UuDpAV6gxZ4dQVZwULPkK34wJZ
eH75XgIS9p9qbKlpZQzNaY8O/xjR+ceRsqwnNoRHIuLaSzh3OYMmCLmIjs4WdhwKEsnSvKurYGnM
y3kbN8kCn/5ZnSSPzLVH7r8ECKNdmvy98KHJf8Afj6CGcAkIT8LoQwdRWLAXLx3eiTHzchovkghd
xw/fo/Ir2l0P/i16dPGBexdy+9MaEwbEpKB671jye6xAbsY+RC24RIPtCLiYM+3Uixbn8/HmgihM
ocWgQY13RNTFz7HQpzOqFFepL6zAYlpkrZrVz7yEFr7vAP+YaCxf8DrmjA9k3UY8qCuwwmcl1hUs
xJjnAUOP1GUh15cImpwsW46gXi23UCTBtUjHT/doRJ3wLC2ItMHZDeNIf31+09Rdx3lgIEiyMflP
yWDGljf8yXqb+Bt0IxPZ494m8qgPUXxwtF63Xj6dRZyMRE8zwVOVl9BuyyWMcx9Erxj4CO5Y6YLx
qDN+X/IB5vt20YBEWB6KvwS/zmaTSS2Ezflx8hyHq0Xn4aVtEKXiCg5Qga6dn4C1/UecDzV+pGb9
jnYXNe5m9CrFvHPo1K+XHpsm0S4iW2A9u4Z0prZQtbAyqcUPOsuiNv5Ry5ay/DoZTALRXS8PMnQj
vfOd1gvABBMRXq3tRyZl2XojUre18s2qY7uQ41Z3ReFf/0D9XDebbiG5oPpkvcaiui4FA5zqofjo
LNbNoMWifwh+6WzKvFQ6cfkwLaOpd6o7X1G/B95br3VDJuNwYu499HIR18e3MrdieX4YloX11VZr
naw3lUYhn0j7V1+/TphW6I3/bp1j8CmeFQy0xvWJ6wWgT1AYsD8ai7acwHFyt4+gOWtyCA1Yj3Eo
v5ALeM3Er13NiHT1xtt7oyE3k7GqnDSUfsvmqTRvJk+Tut9twIWiDLzePQ1TvTagTKuoOjzdAbWX
95EHRiJeSl1BLvtuZhXw26Yg0P4WizQ5CtlbgHOH3oZ/fTFiabER4OUHtwm0O1dLEMp6YdoyTxzQ
TpCZC+oFTEfQoM5Q3vynMCj9qrt2K1xZjDFdBtGkepBmZ2uCJdcoTbOkZ83HME8PBMYsR8prQMK5
r1DyQSY9jKRJ8xQMHuiNqOQzeIMmOyk5tBv4pCaf/v+TbNGpjW6gQeK17fhLhJ9gaf8DWcm/q/uJ
OlExEq4xC+tCsrB6YNiMhcjeGYcO39KOojClN0yOluRsIit7XwwODsMqelp5v4HoSafOGy/sUvRl
Fp5M2qWwGFobQzYLMNC+KvdtBA3si0lvhkMOT5zcOhsDPOUIi4unXVxNymeDkpBe8KZgaXT38IQ/
ldCBMJXiseT0/1KqSCyeMxzuzw/CGylvA6ffRylhy8L3d+/jaXcfLCkhV5f4/kYUCY/bxj9VDRSE
4ZLU4+QWcgHZe8JwlIwJGUa7y2U5+zAzKon6AnDn3j2JRbMKP1pEpQFFtOCOXX+Knpag+i6Tz0cT
fvpRN+GyVP8D5L4zHgeWpSJK3hH3ma3FLChpJ3pxPslgtLfZE3veitPBxke5/3OGxSIZg0yXiVo6
VCqN2ybh/u7GBHKrp8l09V2jtnt820RG3h/dXJjOrUf+rqWYTLuEq3LC0FPLmu5HLaxmJiK96EOU
l5/BptASxPrvECYRLt26w5UWcMzzYp3/eLLkT6eJr1yX1Y6/HdDTw01oj6rLJ9CHXPYQsx1TPDvq
63hY/xHlQ1mJy/mAYn8appw6ToarZEw7nYSha/L0Czp9JVZfiMtWj5eG0E5iHNamkUH1ch6WBSZR
qSW4XW3WXx+xbMmeZtjm4nv9IrYDXhjua2yl0qIhzqvV/chqXM0TitdtrXwzd8U1wxKwqWA5PGhI
ZP1ccHtXtYRcmNGvqsahJeTBQPKHu/dwX4+1FekeKh9mZdh4q76vkcejn/Qhg/wZjQF8QTi2XRSx
AhKOW8PJYHbIoEOslnUbaTMkl2j/DrSYyT+Cct/tKLx2HO/G1CLa/88oNcNYVC+Q8Kp+0MxRDqxO
w7vxaUK1ld9aHAkMJD3iK5l2Gm0TGcIcjvEXh33x49HXQ47wHWfw7toBgs/qU12Agzs2wJN01fxD
Z/B2sIdNxfPE4gi0v8Wiuh636OVh+YQpePsQ7ZTcLUBhzgb45e9EwNZCAalBk2cKrlwlqgYUH91J
cjkRfWmt4tz7RVqc5OLTG9rBknbY/o92CwuvncGxRM0OhWFJowOdTZfjMEBvPXkCPXpQ1Hv/xD1a
9MnXMuu+Nsjc4EWrGsW3bP9QPAgDG01IdIHds6C6e5v+e+Jnzk8I98ATGBxGvvxmlhWmQjo/Y+ip
ncgKy4KatoDkYb6GnSIXtkthIbQ6hgYaGO0d6B0DIcic8HOiVreu1uHAnnXv2RkX3x4lLOL7eM6g
yaEmSPPIMN2LobQr0Yf+5GyiR4v3O0+OoEVTJLbNjcSAHoPQx3MrSn+Qtc3FopMcu+po9y+4L7mF
dMbgGXNpxxbYl3cTauoPKgK574xVZG3+HFdPxeFC/Dp8xowsVgaVcNpZBwStob5XVyAYTmIjNO/O
WVlEqyVTlWRhJs2PN43qhLKSUvyrvBaKr0tQWqObLD/ApUMJ5JobDR9mz2ihIEUHG3AVp6/p9xiY
OamzBToUB7cKC6Rz5Z8jj3Z3i3PioUiah7Nl1KYO0CbsAIiVnYdhanwJ3s09jzeH06zALDjLp5NM
/RmBHl3g5EK7239JJX1dhFta+WRuST3ofcJtz81FXvmqRpZrs+KacUsHBiVGkNfISkxL3IvyxABh
8Wht/xHlQ9UV/agvytceRDi513rI/bA+Zy6w6xKqjJWfDZRLyZbryGicI723m/ReQOA8/HJtJJUc
CHmfjiY1PGrZ0iwWAvEz/fZ6Az6/eIkGChMyIcWrtf3ItETr76TqZqU8XL7ZYmMy7VLPxUtPV0Jx
8RoZsUkffVpK/+0vFwbO6F1bph+cPPA26Y3qGwcx7dpObHqvwpBEuBJPJyUfZoU07fYnjUky7fCb
ZJDvRQbwaKS9Rq83FNyyWF7tZ3mEoy+mj+quf26trOsz2Hgh3f4/UGlzsZleJfDo1RczV6wmvXUK
edd144ymMlG9QCf6Z86jcYiMUjfqjiGPxtW0OE8kBL2vMRDaSGurJiefdrM1MU1kK7Anlg4Gs3jI
j3aemjjUME8lT6aZC6bAg/p/Bxr8FPuPCCyU3PymVVlp65W1u8Wi8tpheA8cjYu6Ca6sIzzIx3vj
Fl8g6d9C53KSj6AdvhIcOZKNo/tpshjaTyMHLt0xlq72nfxCKxcd0ZN2Cz169cIP/6It9cbzF0rH
dgQ/xk2jDQzBBjTqOeGJ4vB1o4lePWrygZ+zLTCNoUhbD9sts7xHo09g8YJe/N61DXu0p32ZJqEB
QBuMS2YTT33nra0WdiB06XS/rY+hrmbdr4F2XYzpr+YAnsu+tFtc+RlNIC8L78Y10OKZBTEe1Q3V
tGObRAr3c5RXf4bK6vM4eeogAt3V6Oz7urBAKqFdxeRlQGzQChQbtalp/Y57pyqjkzXjT6DGjIXe
nf6Do1N98Mp2hf5Jz5dH0DuJJaj8jqwM1gTaiX+FTjtLL9O1X0f8Omi6kLOJc11ram1yGt3hEYuD
QjDUJwTRu0poYr4Sb6Xd1JSpLsfRXcD8OQNb1HAgRceT5HaKfKVhZ6n2NvVZT3j3Nl0yqpk3wgQy
gGgXtd2GvCwYgm7euvr4twmdRh1LB0DsjnkbxXePYaYP8WwhlJ1OpneYyStDH36i3e8SUqUPhAMs
mFsS2zGvPkQuTi22uG9ATrwfwta74VhRAXbFDNXu+jZY3X/E+XgSzHJu7GUhE4x+KvPhQo/Awy6k
ZKuGXMW/fyFU0HvMOLR8Wl+LxT1q2XJ270d6KBc3v9HplQZUHgZ6d6Jx1ChI8WptPzIqzqZLqbrJ
t9QK+Vah+jqrcifGDRyPAHLDY7u8saSbjlz/0e5yoWNOWXQA7m47DOOBqxdG+tMYWmnqkC+VTlQ+
yKXQHsH52eeEYp55WmtEprtnnhEr+QEKj5IFMHQmPI3cHK2VdbFSHxYv1f6C05hXJyPvELXgtQPS
W8ZBXC/8PyHZkmlDoGGpI0aFhlDcN1A+jgOrlin34ZPoKgnnjLyW2KPaT09j+f5CuP7C1CilzSb8
KPK/Mox5qjLsiKcTVGni2vAV8EbmeShy4sj7K7zxeRvGhfBrmxBod4tF534BwoEDU/+YjCsVd+m7
LrTTSK4Lb9H7V36Jv9ZaK7pjOu0U7p67kk6FjMRockHThO6IyIyEYn0kFqUUooa+saiiBVUuHbAS
tl8K90tY+M4ZVNHOTFXRCUxeD8wZ2gd9/V4ht8kEbMtQEB11KEjZBLIP4Q+/7QOZoEES8YGCXMVq
y7B3cSI9MdJuFqpz7ueLaTSAxL9zFjVkDay6nEWW+L14qrvRxFFCefTxC6SJ50qacJG1kurcQ+9x
WgqPBkOiRIJ2EzpV3xEKwPM93Gh3TIVicqddfI0Uyff1kOKxTwC1x/447P+IrKYyUtjvJWPyxBT8
+/P34EeHSaRfvkMHGrmjf/9fmlTXlm5ksp/IBXslEtOKUUt9Q5G5F8sJu9+N+BWG0umfitW7kVtC
MqmkI6/fiSfr9kT079WBTnq8gJWxB6U/peHcDWx4iN2ShVvUd2orrmLrLLICemnc9h4LHI2sms7y
KfqJMpssnyN3b7ark7lALpCqulFE+sEXrwywvHixFz9SdHi8HETVJGEnffpHrb6L4+vn0f1E9KbF
kHGbdOrem1yqU3Cy6A7tFNxF7t+20qLSFz79n3/s20SRsZtwno7sPwVCVlONWxV3cKuqTtMGRnKn
vvtPeod5EbIU1VAq7yB9FdsJC4OnazV2k1u637JkhP+mK6pYfvqrqrXPZFUgRPtPXXYeYbuAdTkx
6N+JxhZtXbWqDlb3H3E+OmFISKC+DyrJpXZbNJv4DkcvmTEV1l9LyZbs+0uY6v9bOnTtLtTKCuyI
prde6SRJudNjJlvOPTHai05A3ZRFh5g9QOn5vwvj6LSAPia7FFK8SvUj69EUTylVt3Xy3REzD9HO
Hukh4a86gxbIvsiu/BxRA7vZXS50nDh16UmXe7E7k81R6gnbA4glg/akYRRvpCul0onqnl8ZzUt0
FTblt1tf4X3sqfFHUEa7bLfI/Xsq9cGxA7qZ0Kgp+nt8Qc/mTHjBaHFGw72ErDeFJPM8Uu3vETCR
5oGJ2CZgfBf5B1IpeyCGPt/ZRIeL64Wn0PU5Oodj9WHB60VZRZ/uiaD54oSXGr33aE7Xo7x3lo+k
VwJoPjBsGX3qho1LbH58Fq/TCeWgT5x4iUx33X1H0Fi2BMnnK2jMq0P+X99Bwq4KyEgHso2PZ+ng
StfhryI5lJWdJpwqazwWGsstW5BfSduGdSlXrZ5ePkrMHmXdTRxiHiXJzayb3CnWFCUDr0ZjnBcJ
pTZMW5aEVf+jmQSyKPk46sDxuRi3ZazJuzHdRs/HhUxXRAVHQr5Am9lrOpL3zMW7B7T3Rj8yGbNu
BsK/hl4Sd2NHTAB+cUlYEUynPyGE3HwqMSaKXKOihEdYlXkGk4SDMoKQEvM+IujYdRamxYXRQu62
cG3eaLIO1KvYvMepLxLyNyCKjsiXk0JkYQ65Qc2gxe6NPOGWtOLT6E6XneglYF1ge58su/PA2bhw
6Ef40bHT7EQ/v1BaPJLFtqtRWooQXFJaFUOhUvpngXbdI/0vTRpArpRL6F27gKgQHGC40lH6cyaw
Q42WIqAyRZRHZ88QesezDOMmjhcmG8yld1PODvgM6Yi0ZSUIC/wtYrUVsXYaIKLM9LQ44AU7qODC
oThEzZoNz7kaBthuTIgHyUuvBXj306W0s6ORSdBkJTl/seCirbz/FXbvz8WU9bNh/JaATrY0Jblh
LvW9LwdGw3v/Sk3UBHJl3TrWZOBuTdiEHQWTCu/hDL0TNj7CsqGkt2snfWrNOyTOLf65DH2FRhc6
OmS9AnCOPv0zhg6yYn2W6Zq0olC40pVxmwwOXoi068sQRpN/TfDEulM7MIxczQc91m1Sj+Jz5LVB
YZznEQ3p7D+9W11ycTZkRnI3OGw1kr9cSzpztDYde39xLnoqbwrGowvraUeRDHW6wBb+eQsG6G7t
8ltb9bVQzvKg8VhuVOK6/AJETbWu/4jywcqLWI5NRX809EH/SJz7y1i77mzrZMtleCiS4z6hQ9e0
/d2f3Hepr7LxR2WM+yOXrS6I/Pt2fDJwHuRavfLGngzNOKqyrj9L9SOjZrTrpQZn6+XbWK+aEyJv
Iblg40EeHYIXwD5xpK2UzSnmMjdwOrVXpytlA8XTOUFM95hz0dR7zbhSTOPK0MMJQiHT1iZj/mg3
olGhp1F4QDQX00VgP6LfKEjJulEyu17q+pkGY3L11mPM5h1/FeYXynLDuCquFzqg2/aD+DR8Nvz6
kPGIBdIL2duDHtm4qiHiYf+7ICrjJPCnRfSpG924RPPOmFUoXDFeoN14rqubS7j4vIqTWyowmU62
1bS2L97NfxMelFiThu3I0rkaialIOxyO9RlB2NjfgKOHzFgnqPBF+l6SbVfMjfA2uLY+jPR2+Py/
Xnvttf88ar43bdpkkYTFixdbjLclclj4hwgZTAJpIajIUsb88Z2cO8PJWCotpG0cRTsjZMVS04sR
ri4dGz+2EMPqU1MXcHYyuEsIyehFOiW9DCajT3GQ0dYkqJSUh97Na5THJJX5zQOyrKtocUWf9jAv
0Dyp0b2qohB7P1DjNTo4h62D2Oc73H2O4RwtsMQWRq2NoRG5D78kSxVzw3B2Zgtjhglh/N1nD+dR
rD2EeFqLUnk2i8vDqW21FMevTEZBqmYCKN4/NDIko+OszfuGmvUbQsDZyWBwsJV4JtcguXYy7wu2
FiSS3joeRTI/guhm06uVWSfSIZKyKSHDbaZNtDxq+r39G7O5bWV1/5HgQ039R+iDgm6T5tEe9LLh
xJnGuUclW9bxIK6zpBEyemptPzLKoru0jkZd6pb5tUUudBRYRbe1uEil08pzU8ZPq2gUxng277F1
vqRDgpyXaGyzStYNWfRX1tGoT974Qgo749RaHC3pN/ZeNM1yWmxcZWTYyudbsZux8d2Fxhw0ulYr
68iTiSin+YaLFTpNKMBavBrVZnuENTwY42J7DYYcLbkeMtRi+5Wk7re9OMfK4cQmwjYspky56wAX
4YQ+01ipO1afxSDroF3QNH7KJn+2hyeoPNvzyZ5U4yi5nibsnYj5QcC2pFOQxyWb+Pab09LaGJrX
L3lPixnD5h/D5Alyp7KCR7H2EOIla2xDD8VliCl0A65NY7lpct20utpFLjGZNWdeQobbTJtI8GgO
x6O4t7r/SPDBDIvN7YPW8i5M4KwZJyXobR3ZEtdZ1vIKgYemG8GsrqeFEraYXFiLi1Q6CfmwDxzN
b3+rZd0+BJuWIoWdcUoJHGU053HESb2MNmxcbVVo1uJljB2/bjICjihXTWaWZ5RGQNbND3mV53Hl
aikq7/yAY/mxGD6wu0MqHzFO2wOPYrzzeI4AR4AjwBHgCHAEOAIcAY6ALQjwxaItaLWHtHS64uCR
9NeWeW0PPLbl9uO8cQQ4AhwBjgBHgCPw2CPQ1dUFZ7P/gbHjXn7sabVE4Nnsi2A8tPfAF4vtXQI4
/xwBjgBHgCPAEeAIcAQ4AhwBOyMQMmMM3s/6mBaMF+1ccusU18u9GxgP7T3wxWJ7lwDOP0eAI8AR
4AhwBDgCHAGOAEfAzgj07dcb7I8Hx0bgvx2bfE49R4AjwBHgCHAEOAIcAY4AR4AjwBHgCLQEAu1i
Z5EdacsDR4AjYBmB9tA/HI1HR6PXsmRJx7YVHh2ND0ej15IUOQIPjkAjx9YSAvaJc9T2t5X79sKn
rbi0tfRt/juLba3BOD8cAY4AR4AjwBHgCHAEOAIcAY5A20Lgcf3OIndDbVtyxrnhCHAEOAIcAY4A
R4AjwBHgCHAEOAJ2QaDNu6EOC//QLkDxQjgCbQmBgtRRAjttuX84Go+ORm9T+kNb4dHR+HA0ei3J
liPw4Ag0cmwtIWCfOEdtf1u5by98NhUXW/M5Qvo2v1hkjRAy+KQjtAWnkSPQKgiYv2PQFvuHo/Ho
aPQ2RVDbCo+Oxoej0WtJthyBB0egkWNrCQH7xDlq+9vKfXvhs7m42Jr/cU/P3VAf9xbi9HEEOAIc
AY4AR4AjwBHgCHAEOAIcgUeAAF8sPgLQeZUcAY4AR4AjwBHgCHAEOAIcAY4AR+BxR6BduKE+7o3A
6eMIcAQ4AhwBjgBHgCPAEeAItCUESq/fxPtZH6OivMoh2erl3g2vTBqBvv16OyT99iKaLxbthSQv
hyPAEeAIcAQ4AhwBjgBHgCPAERAQOJ5xDt5DXsS8RbMdEpGz2RfBeFiyKsIh6bcX0dwN1V5I8nI4
AhwBjgBHgCPAEeAIcAQ4AhwBAYFva2oxdtzLDovG2HHDwXho76FdLxZVyjrU1tZD3SQpeEB576JW
2dDE/E2qtE1m0rWDqmkN0SYx4UxxBDgCHAGOAEeAI8ARaOsIqFX1NJ+ug1L1oK2z6rD8tcvFoqqi
ECuH94d7Dz94ug9Dj879sfl0GaAuwyK6Xnm6wrRBlQqEszQfVQvxpecPIqDzIMo7Cp49fCj/VOw4
T/ktBKXiINyGH4TSwrPWjCreMhVuicV2qrIe6ZH94UaYGP+FrzmDWyqqQqVADD2LSSs1qU+pOGKC
harqKlZOMLSDe5f+CF9zFjUmuTQ3yqJ9VNc+cPuOBXDsHKWuUWBzZITQtgGzNiJHcVdfQ03RWSya
QLJE7RscuQ/FtVrlrq7Ajsj5CJ+l+QsePh/HFfUkC6VYNyFCHx8TuRSL6G/H+Tv6MnUXqoqrWBep
LZvVW1Kne4RaRR7Vq5G34NgjKLVTh6q5mIyA+DwwsdUFdU0x8a+hw23CRuSWER+NwgMU7Nqo5yt8
VgRithTqDUe3PjqCcNIxDCd9v2hUhvURUm0iTm8DCtKSESz006lYuauwkR6yxL8xVVL1tmablDE8
tXzErDmBMn2DPZxHDT8PT/cwLIxxse66TtCT4SmmelCfV1mGPfHzBRlxG74U6Rc14wt7Lt6m+twt
cNGYXtH+LlK7uuoCyVsCFPr2qUPOlgQtjxHYkanQ9xGRIpoWrapAqhGWWUUGnWVcoLqqGOtmafo2
0225CoOOKTuv67NTwWRMGMuMM9vtujHOty6e0OsLQb5F9Jt4P9ASR2NveOelKBbJ3xQWpDAzLk9c
V0jrSuMymn79/9s7F7iqirX//zpimCJ5FO+KogesTWre0CSV0A55ydRMrV7EUss0Le3mybSy7Gie
TDPNjvqa8jdvpeU1CzkY4RUzNTmJiYqCilqEqKDw9n9m7ftm781F2OwNv/l8YK/LrJlnvrPm8swz
MysLsQsN75mvvGdbjhd8z4rUFuVj04SRWK7arlJ2jvgcXzMPA/ua286xE6Zj7Kj3EX9e37Y6bEuc
1B/2RHdWvxUst/ZCKINreRlY/9YLaFSvi/SnQ9Gi3r0Ik36FsX1PWjgSYR8mScRXsVja0w8SzeW1
oDRXsVz6CGWRdwXjqnxXKqGyeA4fBI/Cpz3eQULKHqSm78TGBZGY9Xh/rD9TH33GAp8u3GPVqbr0
4/fYhnA8GFIPZ3fMQ+jAmXhwwXIcTt+DlJRvsfrDtpg+sD8+TrTTQN1UL9XtKO/FofW6jcfSXg1K
7Q3Plb6+btIcJBzaioTEjdi24R1kzXkN4/9XFWxVtIEvxg3C9jMWI0U3bwBHtdtA5o94PCgKn7ac
hrjkBKSkJyBhuwpjEnSTEwpU9NWa3Y+lyzugmuFx/pQVgQzMajEUs+R937ZnDSa0TUNklx5aPuad
j4Ou2yRc6zsecXtWog/moNeTm7SyknfmF0xfCzwy6gmMGjUEY94YgrvqyVvvVQfdRfEaPKQfBv/P
EPRufw0r1m5GbtUq1gmQAZlng6PwnV8kYiTsoc32IrLjVBxQnR55VwZ0GY+LveZLvMtx/4npCB36
lVUZtQ6ssLN8nE06jO2iSOkiFiDpyEWzsigDRm+3eBKbRI64xPVY1Ckaw9p+gLMFgvwDidHRqNGt
H0Y99wSiRkXikQ61tfc2+9A6tO83HW1eXY6E+EWoK+Wi/dwfC4RQ9AuO80QNcDmS9+SaWeg/bj+G
bl6DuO0jkTp5FN7aoAbCnKTfSign8bowT3JObkVn4Rm0eAni4l9F4/1T0fn5rVqeOU6jVULg2F9R
WViHV5SzpKX/xAQpE8jVGgGbR6RjM7Q/ppy+Gxv3rMeXY/+KCRHPYY8aKXOSpzaBlOqprbzOyrv9
iH/DoqAxSMBl5BlmiRxYOBGRb17H0u1rsO3dcEyPGop5hkFX+2GU5KoMXj7VB6/sbIEvhWX0EGBk
t9GILzDqmIF5QU9iXt1hWt32UkgahnWZqim2l3YvQ+eB+jIbFzse1edMRfvnvzPXCyURy8EztpzV
IGr7iKnwH6ve70Wos13e76HrCgyMOisHeZnnsGfHVrz8wFDpq1xzEHNJLjtmZh2ak7oCjutK6zBK
epaP+JlPYdhkYHW89EVWdcL0xwdhZXKudYDO2qK8LBzenYDlb03CyM/24cZNi36LdSglPHPMp2HX
BxA5XNpHaSOfGDUQLfevwxdr01BVmk/HbYmT+sNKwqLUbwXLrVUQZXYigyaRPTFmTh1E7/kWKRl7
cDhxOR48OgehjZZBbYdjnmzmhc6vzkJYE2+n0tyQLviVUs87p1FWmpuVT1nMvojvJHtf69MVgX41
UM2nNrpEjsPqt8ehBv5E+8elxolfjYOmhiYXu1csAMYOhM7rDOYOXILeC9ZjSmR7NPCpAR+/hggf
OQ0bZ/bD/hg7o1lVJbKj/0X0TItRrw3mkebziVsx1mCBCOs73WRNyUneKpabraYOcd75veLvfSRJ
5/n4mvdl5HMlPnhcb7kIe3yRdl29tZajV/W0ETa9xfP6mUM4fEJUOBldmyojqpu2rDNYHFrjZbE4
GAeCrUY4Z67DxxNkxNvBKNtf6zVHYEBTBAYFoEPPAZgxMwQJ0UdNMvfuC0SOWW1u9BQLzeUjdm4U
EoInIemjx6Br4AsfH18E3jdAKo13ELoz0cJyoH8iL+MUtu29oFUeaiQuavIyGSE2Wm6+kobSmB6x
oCz90ZCefBxYY7SstEaYWIniz+gbEEtOYaPm4WMZlZ66xpAvasRORhc1q6lYyFYn6kf8s0+KRdpg
VdNbAgpaxwwJ9NifnORdmCfSb/v4SXTQ6TBo8ssYLufHL1xFzoU0LV3Dh4dBp2uDyPGTpKyc1vI7
8/wJoNsDCO/ZEe1CuyCibyh0flKxe9VGt4F98PDAB/GwjPqd3xKLwVJ+Xupez4pR9omD2oDMwncH
oI2EPWzmYryGWKzaeQ7HNy1HEiZh3kQVb3u8tHyRxBuNn0tsZs7DybhdSLzkjWflHVXOOJhzfuc6
fCpxfTVzAHRBgRj0ViL2xj+OauZWS/9AznnsOBqCkU+Eo1P7eyXdYYjoHiiDGbn4Vsp66Icb8dLA
9ghsG4p3U7Yipnddi4ZPH0RR/zvLE2fyXkk/BIx4GsO666C7r490RoAVx36XaB2n31ImZ/G6Mk+S
t30JDJmD14Z2hq5tZwwZFAKsvaCVccdptEyJdCBukYV1aIWf5SR/hbCJd2DGpBBk2fRZ9U9n4dd4
4IUJkeiiC0S3yMfQG8lITMuCszwtPOaS+bAnr7Pybi+WAx++jel9+2m39OrxVfwYvQ+vxf4DD9+n
kzZiGGYHA5sOmBpXe8EU/1r2CSzaAkRveAHdhGXExDcwIzgZc742t7Mq0DxpA2chBDHvP6bVbQ+P
jpKrZ3Fdynb6wc3Sxi/RyqyuYxjeipe6be1qHC1FC52SwR7nlO3Tpe6chTcj1fsdijeXv6P1QX6x
qd+clYO831Ow47tUNB8SqaKBnr92eEv/nDGzDNhZXQGHdaVlCLdwnHMMc95LRnTyNIS3lb5I3zFI
OrQe3dVgpaVz1hbl/YGD2xNx5c67EWr5TCkdO+Pj07QNBg2V9lHayIjgqth0NAjRojB18ctz0pY4
rj+sRS68ri9Ybq1DKKuzzEObMGFLEL5MmYYIXUP4VKuBBkHtMUXa+2eH5OI3q7KXh9OHfsal63pp
zltY4i37dZaynv1+pfRxxUpsMWPD8j6Pi0eg8imLPi0xQTpNs/r1FHP3PKzesBdJYv0KnzgGEQE1
UCu4u3SOk/H1XoMiIA3R/8ro8LTB7eElimai8H3kfn8T5by8fBlFzUeXsf+UaTCdTZ1OkwexKgLr
MOXrO7FRLHCrZzaT0dVBmhUy70wc2oS/hiSxcm6LX44nG64Ta8pEHJBGIu/670hYqzp2epdz4Vd8
cfQYVFm5mZ2GL+bMxLlei7SRyI5bFmCKpujICNHDYhU62kpGWDdi4+JWMsLWH8uTr+LKue/xXfoV
9TRSt0Rj5OPfIHL7emxbPg4rxOKwVUbh8s58p41wYsh8sRYuR+Ovp2P6Z5sdjtT8nmsouRJqXuZx
bJi8D4jwh4+cZ4ll6qUP12Bw/Ey8q1kztKjln3I5OLMdCJXG0U9/QWOoOFYLGoANu19AoI0JMe96
Br5YqFfabmanYNvCOcCAlYjZMBnbZBS4/8Af8HTseklzd3w6cQb2S38kJ2k1eo9egJ6rVmKvpOdh
ROPRBbulq2zk1EbLk38Ep2D6wlikXlZNbBYWqxH/i520Ef+l8q5MCH9ORqmv4ssnxCLdWixOhzZi
6SMZYgl4Xm/5MqShIvxUC+qNHw/tQLCBf3bSAayQhPn5VoFP23BR4ID+Ly7C+g3r8Gw3GQGc+QAa
yLWMpP9KB2cqgmR6tppKUq/vIhw3jkAYwJzdMBdT4iPxemSg4YrtTzauG5/JkzUMcvvE6d9x84q0
Gn3rm63KPvW0jvWR086mpNiGbXnujW5jx2DKxKcwvE845HUwuYxjx6TjdsY0EFPPdywOoj78bPod
OanJYkHZh97+98p09o4ysPAoVh9SAeXhhoj1u1gX9dM/ZZr1+BjUbNXUTt1gitbpgbM8cSZviwjp
OH42Bi9/+BXWy5TZkVKPLRrUUuJynH5LQZzF68o8aTN2KTKWPCgW5jOIXbMMoyfukwGH+1FLhHWc
RsuUOPNXNBbWoRVyJlOy3xCr+Iw9L6GX4DbX4pbPNcSAmeGYFzEBi9d8J4Ny/WWwZBwGt/WFszy1
DKHUjh3I66y828atrGO936yDvZ88LWXT2MurgdG7j+Cljr44n/SjtH1v4BXpCE97vJXt47d0np16
TAaTwtFQvRCa80IDUUp/t7HoejV9EBlZS9Gm2lUkff8dZgwVZbHbIDRWDZZ6my5lmQZ08jRtKxPX
jPWRPuBb+++As270Thxe2dNUPyRu2STxdEcTU3r00TorB9UCQjFl5hg8P3GgKDtG/rcmrnraOTNz
+M7qCsd1pfn5WznKOXdK6mLg6/cMU7pluvrM2CtoWquKw2ALtEXVmspygReE32gMkHfH7viOw9AK
v+GMj/lpsRaOFEX39SmIaKpkd9aWOK4/zOGpI+f1m/1yax1CWZ2lJsQCwcPQztgJNEbk1x7vLBkD
nVYujReB89ujcfyy6qdKv1ks8VmPzJKZbWvwVEPp1wXPwknDgK73Hd7ITFwms3tm4p7lb8j07nrm
QHhUYgKVT1kU++GgJXsQs+oddLt6GBOiRiEsOFTr3CZlCkevphj8ehBWGKxtagpqAh5DxL2+yD79
X61R+ltDsZgol30YvWrfi0byp1mh+hacOqL3KNMjNr2ALmKBCx87BUtHANNjTiH52w1ye5Q0ogPQ
oW17jF60Fc9KB3TpdrEGVjU+afitqpROw+VcaQxGzMe/Ror1RkYinxaL3u9ZN6UQHcZ0meYZveEl
GWENQJehL2HbgknwviwWRa1rZe7xvrZ9NgbdF4gOAyMxTe6mX88VeVZL4Z2sWXAC1QjPhkUqSrvO
2xdIevNJfbqlcm7kP0gsUiGIHnmvwb/I6KfD9M2jsCLqRewRttUs01Qb8PU2XsjCsm56jo1k3WI9
3xcKrrkwelWhq/SPXYQpQ9ugTc/B2mj14OWT8XDHQHR5tI+mSBySEXqveiFYumo9xvRtg6b+zXFP
pyBgZxoun9yjcVotI9EqTyImvqkxUKpHTnKsKDTSqZ46BPf6N8KDTz2vDR6s2nEaMolWOhSyIZJM
Z+n98oeIi52JljZKrfLi2c4bTQLqaYrZ+cSv0EKmaWHsfAwIqiFwcvRW4rUL8NH706VzKx2yjN9E
9b+KXw7FQjf2HfyYnoikPfPRO36BKJIW04llat3cKFEwV0WiiR1APq1CJN9E+XpxJQ4kJWH5pD5i
4VPviGoyZcpzt+ZmZVEGPEqqJtpGffOGvEsWzstbGpb4dUgNmY+9R9fjo7GZGNPtnwUU3zytN9lP
FMSdSE3ditlDkjGh28c4mZ2ORHl/kj6LxoDN67F3zyIM3jIHnd+KM3VELaIr4qHjPHEmb841rceL
FW9G46PJ0Vpc6Zetydmm31ogx/G6Mk+MMp3cvgzDRs+ROhg4d+WKZlksShrV80Xx55yFUYrCfmXW
xLt9sOL15Ritq4HranzOrsvFH1nq3duHKXMXyaCc8pShjaY7y1Plq3SdE3kdlncbCaRsv9VlOmbv
mYIAUXDUG6am0JldLg5JnTHhvc1yKRkZv6n2qPSc1x1SN8kshD9Mip037rovxHGPPycDq16TmQpS
TvHbFW2AqtE9ncSSOAlvR8vgcWIcXg+XwUiRNS2jtGR1zNlLZjc1qKX6FFcRv/Af6P/mPkzbbr+e
FE+wVw7Udc3l6Mu88bTUfu0wsw7bSV3hqK5UlUgpuLzr+jz6Yn8LGfzdqh8AnxiFebstRgEt43Ha
FuXo23lL/6Vy7JiPMfhsWdLzSnwQNo5pr7+U46wtcVx/GMOz/S1QvxVabm1DKN1zL0M3ulihSj8w
+VvVlk3Cssl9ZGabDlEfb8VHb7fROgq31wZWfjwLQVJ+X1i1Fe8MDChW8PTsmEDlUxbFYnFWNqzQ
9R2Ad1bJiPVve7B3+yyESuc2bO5ejdS9/Ydp09ySc3Jx+IsF8l72Q6A0fj7N7oZOGqWDKYYGRKyU
/0+shXuPbsWXMkqsLBRWbaQWmlIxJqGNnzETqqBRIzn++r+4IkqP7m29ZUa761UPwd2ko3nZbLEz
PmX5q3XUpENvdMY6N+e3NLkUhDt9qhhuVUGHSJnLbzOyohpz3+rmklpTRtKUy5PhNF1kiKZWahdq
KQuOfZcrgejGzpI1ZOsRE79G/tbjcMZSGREzh3tTGm+/7qPwUd9k9H9ZNq7xUo26wQmr06aR3xoY
+PlGbf3j3vhZ4iFb1AHHTkt//b8aPMjomxzpWvjqz6VhUulTUnjVuhM48r/aBkaN6vVA5JxkoLko
3VlqrD8I1U0jV7XRdpIaiRYG1/Uxj5F1ev6NusBflOAV4vuq9OsGLp2DwUdnopcMLjSqHYpV+zLg
VTDDxbenO9mUYuZIsXpPxeCZS5A6M0xT1JJWzhUF7jHEpB5BnFgMDm+fjKQ54/HdSS8M+kiuyaBH
Ex9vGSMIwxsLpDxsP2Ua4878KU44huCxHg3tw6kWiAWJ8zW+vbsM03uR/QAALpJJREFUxVcyiKLe
PTWFTzUqSVvM05vVkIkht+2HdUtXr8nT4/CBTHkNaBqIYW+8KWV+M+KOWXcafXSPiZXinwgPqI1q
tWRU+l/Lxd8h2RSjDlpJedK9vRJRMi01QBeK97aPAxbuw3ljQS2RfPbzBNr6JHvyXsSG8dM1RT8l
60vEZe1B9KQgTI/4xjwtvEhy2I/XlXmSJ/Ww2ik5cOg0YX4EP26ehITJM/CT7GRdtDQW1V+RgDj1
lJO8CcPmALN71MTJ5OP4JTUTSReScVwGmSxd3vndGPaeKAWbdyBj95fISF0jg1IyA2VFkngr2jto
GV5Jj53J67i8S6E0OaUE9ZeyPQ733JGOpN1HZXBV0nzwODKl/s/Rdjf0RsRb0tbKO6gGSieM1K9z
NgVxiwd6ZSEcd5oG7nJxZPc+fSNgFXa+Xp5qAXhH6q+MlJVS3yzA7K/PSDs1BjGLZebIOBk8Dh+P
xm+PkifDpV2xaLOswireiTPOKiS1odFU3y54dHIyPordgefvq10gAsfloIDXUrzgmFnBSOzXFQ7r
SjU4XxpO7YUgLnrt8zL421QGwMcgeoRMd95zVl0u4Aptiwo8UVoX7PPRh56Pfaukvh4yBh1lwEVz
1Ry3JWfPOqs/DM87/XFebp0+Wpo3ZZ63aYzHGK5sVrV4gmxwZ3djOUM/dWZncz9VrMLDJg5AgJR/
zYjx2TotpOTTF40h8rcUCPylFMLwqCCyj65F+7Y9sdtYUYkCEyDred7/MASY86vWkaqmu18sfMlY
t24bvvhMGv4hrfRprNUQD8rRso0/G9JcA03EMhXQtCmu/RILFKzfxZ+yCP6A06JsGJ2mjvRort1J
WnvM1KFWI4uXZLTzr8riZqMteZVovEsWfi+ch8V2dp5Um1wYnb6q1Z+pTrmp8GZmaNYjoz/b37/6
B8oaskC0aauTv0A0MDXWlj5rYNj8JdDJqO1rH8v0mm6KRw20eiQISZM347jWga4Cv4AAbf1jzT9S
5b5PAcOqZYj2j83pMd5P+vc/MPK9BoiRDXRUJzPhw3DglCgf2ki0+DJ13rNwaLviLtZPX31NvTr5
J2RkJCJdBhMSti/Ba480QY7XXXhfOhnpsinStlWT8OnkMfjskFJNK5LLxfbJoYh8rx6+PLQHC8d2
Nln08pRFt29H6AyNWYNOXTWF7vS5ZNkJVdbbnrTsRFoyycfeL6QHPWQYgkwKuuV9Oc77DT+fr4c5
qhMnebXho6fQRi7fH9IEVWXaKeKzzdmVmSbvZRDaNyt9lVEz4AfXNKVZvSSq+25ZXtTZyS2L8MEG
mQFgcjfFX7IU26pQo5uWw0Ze2sBMjm2RNj1Z+IHjPClM3tcGd9Kmhasy12PIIInqIrJN731hMTuJ
12V5kosvHu2Ih+brc0FJ3KTr/TLVLhnpv+trrqKmsaj+CqPi7L5xY5dXIgahc8dBGLNQBqgWTsWr
0aetHjOuB7xPNk3TXK1Wkj/6AavC8tQqoFs8cSavw/IuU8HMLkemzaqzBejdtg/CZHqYsshNkPSv
+2k3HpIp6atPGuvmGmgX8Zj2aJFfQc23838+/q3kfYjF6YvGeHKRLlOum9WUdtTCZR9aAf96H5t3
2/YLRvduMhCV/jsuyTTZP+4aotU9qv6ZMjjQ4slbP3TGGbK51wTZVOtTmZlx+LcvMayj4Z2witZZ
ObDMD6uHbvnEGTPrwB3XFY7rSmN+WYdU3DOf+s21R6rfYRwkB6pXdxRKEdoiR4/e0nXHfLRg81Jl
mY2sYR7e1sLg4O2wLbmakaY9Zq/+KJqYTsrtMdf0afzve1hEnYMYmz0xMg9uwZTP9sKvruOBmqT4
U+b+QM5J2XNCdlCVjmvuKeDZDTuQtH0Stk2OcrjfRtEY0ZclgUqnLPq0CtM27Hj0uUU4cOY3+a6L
WBpl6sKrsg4mdGY7w2hFQzwmlsJPx03FF2Lh6CnTifSuIUZuGIWk90bh5aV7cUm+sZgjClXsh/9A
5GeWWG2P9+Gld7fivIyQnz/0Ffq/Bwzv3AKBoQ/J5jfTMW9NksiRhT1LZ2O6PPr031vAS+sxzMS3
STLNL/MklrwyU+446mnr41NT+QZLQz35XbHiyYju+cRNMlK5BLc3tOhUO2mlW4SKMiXrzj6QDXgy
Jc7Fso7TubPRaB159uuMxQv6YdtnMtprEKXLmDdF0YiWdYvy+YXzWTLiexXHZdGyrt8C+6EUMSpz
DSLd/FwZEejbCPVkis8lURg/nKgU+hv4M6iDNrW0/zTZHl2+7XMgeq42LVVNefQKuEsGCmSa8KJY
6VR4ITtlP0IjRmHbiRMY37EPIuXzCNnV7kSrNjrpoIgrqlz2U+V2V/NO7kCkNFozto9F65pSNs6c
0/6UlaBmw2bAlqXYeOic5NdviP33XFHaQtBR1wzeR2W97etf4LhYexTrd8fJtNQhrQ3l6Q/8LGEO
73uXhRImSbccQcy7LOuIh2JSdJJYka5KWfintiPrg3f5IqBrhHiegwXyeZs8USrXvzdezvuhmUFp
LU2IAWH9pEzOxLwNqkz+hvgVyyX4cHRu6YuckwmYOmGltvlS3m//xayol7EpKQPZ2eewepqyREQi
yK8mOg0KlynanyI2WeoX+QzJvDFzRFG+D029SiapszxxLO9fUae5rM1+c61m1co+L59DGSl1SN97
Cqy/tJLKIk+cxuuyPPFGZ9kp0MgzJ1u2Wn93sliv+qF10+pO0iibW0XPw4ylP0qV4OXEn1Xqb/nE
RzfApHAopSNGlggoK/OGiTqr992nWWut/li1cq9Y4HKlDdqkrSnt2LwmHOepRT1+y5LqA3Amr8Py
/jfLsiCDgav0AzwqvRkZayRdIdiWfgSju7SUdeJiSfxwE85KW5kpn8aZ+7iM+gfrp7mXUhKkWWyC
nsGyA+rsTbiUl4/jOz7X2tHBYS2smFer3USiXIJPtbIt7c2OFZggg7MPd2kCrz/24dFuf5cN5n5D
XrZ8BmiMrM6W3Sl11UpHSmeck9Z8Kv2Mx7DtxXB4XcrQ17nSJipnrnOclQNpuMrIOWNmWX87qysc
15Vm5e6WxG8QqK2lf3TyOpyU9uesLJ94VNqbB9s0sMp/fRwO2qJbEqDwh53xUU/npBySdyAED7Wp
ZxFYDYdtSasWjusPy3yxCMzm0Em5lXXTrnA+uu6YIYM1E7q8jk1an0L1j7/DU7JDOeRzW8EOurv+
IfdLP+Q1LNpxRvoDWYj/5F3Zc+KMNstLDR/Wl40r/e57AouGqLCjtZ3MzeVIPFi0cWoQ2NxOuCLV
nhtHCbsvnptgyBSUtw4tAp4Yg97BZsVk8OtzMO0ZadANTtdbOo2TY9H7wwet1lg16PkCEjb4YfTA
UdBNNHgOfgyLFo/DRyuMT5t/vbzU6GY4ul2ShfX1pAESFzppDt4YKLs/YZBMfUlHr9Gynfho7Ram
bdiKh7XFzRFYOvYbjJTpkMoNnhQpipx+NMk207y8pVSpwUWZyjddpnGOls8b6KSyVG64TCMcKspu
Spx2qsxqaCiHNWURsNEpW5963Kftk0hYdQOhsu202hEzdIgojzJiW8fCr1zQnPlp4xXnv4GREzFt
9WatEdd81mqDT48ux4wxUegVJJ1pg3tt8SycmxtfQAfzukOkDNZbEmzTryw5prHVanegpSGsFgPG
I/TN8cJ9ulwJwrMynRiyMdDqxIcx8+gS6QyMQnv/qWLtfAzDpdK6qNkzm+K1xDlI7SgMDWL1fnsR
nu3cTj5BMA3/028Ugt7UR6DycZisZa1ILvP8BS05UyL6YIpFwmbE75F3/iVEH3sdkdKp0rsgzNj8
MbrU8sW9a2W6qvAM9VeDGmqK8jtYPb6N3pvshndYjsJbSUZZuSvYKmv7+oyUQYmAQLy/apy8e0Pl
kyvKU5BMx1qMNqrB8AlDjHzeptfj/bX3UpWn6ENDTJsjWQVZzBPNamnxjNrQIW65TEVTW/xr14Mw
e/snmhzZqafw6WexGPCe7BQb+SYWnXhbymdPw9Nq/eI4fV0xcgpmH3pOLAT6sotuoxDzrwctRowt
IizCodM8aetIXm/o5q/EwagnEdrC8CKLHNvmR1gp7Lbpl31DTXmSec3Ju9DWdXkS8OhEfHTwH2ae
0qlaFP+KLA3wRoDDNObg59VLJA/9MG5ke/R36M+cAQVZmO/dylEzGUDQOzNbBLTB/M2T9fWJoR3p
/fp8vDVQbYTU1OE7eCtyFPVZo7wBDsu7LBRIN5cFx6uC6mGctLUn2o5B+8+knlWur0whnvug1Tuo
v3Er/2tj1Ofzsb/teOgM8Ty7eI2+Hc0xM/fSyso4i7Ktbx/HyZTPahiCRZP2ywZzxjI7DnEip21b
cytS2j6r53wVh2NkEFNc7yBRpI1O9g5I3v0kvK6bOXdwWA6MDxl/ZWZOKQmurw/tM1O7nBrrb6d1
hbO60ijyLf3q37PD8p51XqvaeukvSZv9Qk9RvOS7k0YZtRsO2yLtrvbP2B8yX7n1I+d1eA1RetSo
c8F80zlqS2Sg1FH9USDNBvHLqn4rOZ3aGL1mI/Diy/KpG2OfQvqdY6dh7xt9tDrC8jU25kutjk9g
44dnZFPDPob+ZAg+in8eAeJZ7ydfRJK9SWYul6nJUXhvTQTeb20uRwFe5jpBXhCrdqIMxp9LjsfN
nrxtxIgRf5a3TLNnz7YrwiuvvGL3enEudonaiUEd5IW045Q1S62pqCafbahm+Vba8VvwkoyUyihW
nqyO86tVo+BtO1dUfHlSBHyq2YyoyWLBbFmU4yWf4rAdyMzJVhuq2HnGTvjmS/li7RBTkEyx9bEN
0OypwFHOmb1Y8m0eRsjGOaqPrj7f4d/xS8Ski6KrLpSRy8kWy2JeFckHSX+x86EwofQsjGwVT69q
Wdg4PxbNIoehg5/Ki3OY4ft3pC3eiIVDjV0fI0Nb9rKGQ7GVbZ5LX9bC0lI699cf6I89y/WdImfl
w2Fs2vsqCGR9om12OXzHHQZmc0OFLVYISJn0sQ3cUE7Ue2J7yyYUlE4apbQWFpeBhY+wsHV58q7l
iKT27tn6LUt51VonZV2rZlvv2ApRknMX5kmeqq8Vz2p2WBcxjaXB4pbzyoqzk/qkGGytgrQ5uWV5
De+4vfJuE5XDU1XvSsVb4newaGkw1PWF1c1OuKp3TFXvPtKmF1bH2Ca2aDLaPlX8c2floPihoWh1
pRNmRY7T8B4VpT60DbNobB212bahlc150WQsWdyO2xIn9UfJoir0qeKm89UJH+D9j15yGm6e9AEz
VR9Yym4tO22p3YdL4520G3DBi0VJgyWXgiEU/UpZ6kNFl6Kgz+LWhwVD8OAr1VSjUgxlyjqp3qil
7WBmfdXZmYrPrpMRckcVqOqsFt/JZw5K8JxX1Tx8IVNPpy/phxcigHlzNkM3aZHjdWbFF8zuE5qy
bvdOaVy0ZqHnmYsr+2bKVu8zMXzSKFycs0SmUz6GuEeMiqKK1/o5syR6pdZ8XgmPtPfVfrodvuP2
vRe8qsJ2VK6clJOCAd3ilaLG5YSFGqAowzEW6wQ6kddLlKsyq+idxGst4K2fqY6EI55FTWNR/d26
tEUNwUl94kK2TqV18o47fc7iZsnaMYsAinToqM62edgJV62zWuI+gU08ZXTqrByUUZSi6DvuoxQ5
zlJ4j5zHVcT8dx6IW9513JY4qT/cMiX2hfKSwWE/R5W7/UdK5510FDavFyBQZn2IAjHxgtsT8GoQ
irj0HTjw43Gkn7uGL+Mn4L62Dcuuo1luRGojalUiuh86iuSU87ixYSU+6NHG+VqucpOVEZMACZAA
CZAACZAACZBA+RCgslg+3N03VtnlsEN3+XNfCUtJMlnvJN+2DGhbSsExGBIgARIgARIgARIgAROB
On618N22XXiwd1fTNU86+G7bbqg0VHZHZbGyvwFMPwmQAAmQAAmQAAmQAAmUMoFBQ3vhm00/iMK4
u5RDdk1wTf0bQKWhsjsqi5X9DWD6SYAESIAESIAESIAESKCUCQS2agb1R+fZBP7i2eJTehIgARIg
ARIgARIgARIgARIggbIgUCksi2pLWzoSIAH7BCpD+fC0NHqavPbfLOdXK0oaPS0dniavvbfIE9Lg
CTKSrT0CpXPNU/O/uKmvLOksLpeK5r/Cf2exomUY00MCJEACJEACJEACJEACJFCxCLjrdxY5DbVi
vWdMDQmQAAmQAAmQAAmQAAmQAAmUCgEqi6WCkYGQAAmQAAmQAAmQAAmQAAmQQMUiQGWxYuUnU0MC
JEACJEACJEACJEACJEACpUKAymKpYGQgJEACJEACJEACJEACJEACJFCxCFBZrFj5ydSQAAmQAAmQ
AAmQAAmQAAmQQKkQoLJYKhgZCAmQAAmQAAmQAAmQAAmQAAlULAJUFitWfjI1JEACJEACJEACJEAC
JEACJFAqBKgslgpGBkICJEACJEACJEACJEACJEACFYsAlcWKlZ9MDQmQAAmQAAmQAAmQAAmQAAmU
CgEqi6WCkYGQAAmQAAmQAAmQAAmQAAmQQMUiQGWxYuUnU0MCJEACJEACJEACJEACJEACpULAq1RC
YSAkQAIkQAKlSqBKlSoIDAxE06ZN0aRJE+3P19e3VONgYCRQngSysrJw9uxZ7e/MmTM4fvw48vPz
y1Mkxk0CJEACJGBDgMqiDRCekgAJkEB5E9DpdOjfvz/q1KlT3qIwfhIoMwJq8EO96+pPucuXL2Pj
xo1ISkoqszgZMAmQAAmQQPEIcBpq8XjRNwmQAAmUGYHbbrsNAwYMwFNPPUVFscwoM2B3JaAGR9S7
r8qAKgt0JEACJEAC5U+AlsXyzwNKQAIkQAIagT59+iA0NNRE48qVK9i3bx9SU1O1qXpq2h4dCVQU
AsqyqKZY+/v7IyQkBDVr1tSSpsrAzZs3sWXLloqSVKaDBEiABDyWAJVFj806Ck4CJFCRCLRq1Qph
YWGmJB09ehRr1qzB9evXTdd4QAIViYAa/FBTTtXfzp07MXToUAQHB2tJVGXh119/xbFjxypSkpkW
EiABEvA4ApyG6nFZRoFJgAQqGgG1mc3AgQNNyVKK4vLly6komojwoKITUIMi6p1X777RqTKhygYd
CZAACZBA+RGgslh+7BkzCZAACWgE7r33XtMaxatXr2Lt2rX4888/SYcEKhUB9c6rd1+VAeXUGkZV
NuhIgARIgATKjwCVxfJjz5hJgARIQCNg2SH+/vvvce3aNZIhgUpJQL37qgwYnWXZMF7jLwmQAAmQ
gOsIUFl0HWvGRAIkQAJ2CahvKRrdkSNHjIf8JYFKScCyDFiWjUoJg4kmARIggXImQGWxnDOA0ZMA
CZBA9erVTRDUt+boSKAyE7AsA5ZlozIzYdpJgARIoLwIUFksL/KMlwRIgAQMBCy/Kfd///d/5EIC
lZqAZRmwLBuVGgoTTwIkQALlRIDKYjmBZ7QkQAIkQAIkQAIkQAIkQAIk4M4EqCy6c+5QNhIgARIg
ARIgARIgARIgARIoJwJe5RQvoyUBEiABEvAoAt7w9fUutsS58uH13GI/Vd4PmNOqPhzvVq5uK/QO
1eH68X2IO5rmVqJRGBIgARIggYpHgMpixctTpogESIAESp1A6DOvY0CgeSOeokaQsvl9fLLzYlG9
u4W/0Gdek7TW1GRJ+WYuPtnhLkqZL4Y/PwqtVTaEtsbNd6Yjwc10WbfIQApBAiRAAiRQagQ4DbXU
UDIgEiABEqi4BKpWqVKixHl53V6i54r7UECPIXjuuefw3PDe8C3uw1b+70Eng6KoLrfoFIri21Ot
AizFE294m4Z4b8cd7iNYKaaRQZEACZAACbgTAVOz405CURYSIAESIAH3IvDjti+BZnfi5s2bJsFu
ilrWvX846osemXvhCLbtPAFUNd1GVTk+d9A1VrlmujZo0UK0p3xA2QRLanCr2/U+NDYnAagTjG51
gRi3MI5exNYt+1GtcyPkpO1HvFvIZAmLxyRAAiRAAhWNAJXFipajTA8JkAAJlAGBrFMHEXfKNmBf
BEeIsijTIvOzTiBhf4KtB5edX8u9IXGJspibgyu3EGuXri1tnq6ODg/cg5i1P9tcL5/TtF1rMX9X
+cTNWEmABEiABCofASqLlS/PmWISIAESKCUCFvMgq1iYFO2E7hsUigE9O6Fh7Rrwys9Dbt41ZPwq
1siv4uDQQOYdgF6PhOEe/3r66Zd5uchIP4Zdm7fhmMF06B3UG09H/A21G+vXGMK7OaJkOmqelxf+
OLwZn+88aUcaB5d8Q9FOmUnFXdr/FZIa90b3Rt7wC74PdfGzYznVAyJr70d7oU1APWgNa77ImpKI
NWvjkCUyju/bCvjjGJb/77YCVs+ATr0R1qUV6vnq2Vy9+htOJyVix46DBfy2emg4/h54J/Ku/oqV
hrC8m4dh+MOtUQ1/4Nv5K3CqeQge/XtnNK3tK7II69wsnNgbiw27jilJ6UiABEiABEigyASoLBYZ
FT2SAAmQAAkUn4A3wp5+EX3v9ivwaP36/mjdpSO++uBfSLDRGBt3fQLPDWxXYL2gX/3G0LXrgaTN
n2KZKIK+Df+GFv7+5rCrVId/ixb6c6+WxVIWA7p30qawinkSSf9JwE6Z2tq9kYRVvSUeCPLG2mT7
+7rWbTcQzz/RFbbb/9Sq0xdTgwOxZbcX/BvJ5Fa/XJspsgF4asqz0NWyXg9aq44fGvsHoWt4D3w+
ay4OWsypbRjQEv7+ypSbZwrLt9ndCNIYXEPX4eMxqrUFD42EH+oPbIHWbWMx65NtHrg7rTl7eUQC
JEACJOBaAtzgxrW8GRsJkAAJVCoCamdRs6KYj0vpKUhJSUWmmjWqXJX6GPDqy2hnYaRE4154xkJR
zExNxv6E/UhKvaR/BlWg6zcSDzeXtYnn/ouk48m4ZAwv/wpS/puEZLm2a6+soSyy80W39obVitdO
YI8or1l7DiBTe74KgsM62g+p+cN4wVJRvJGJlONJSEnXP4nqQejb06C8ipXPKKaaMvvwREtFMRcX
JJ3JKWm4Zozp9sZ44qWnxKppdjfzZVGmcqIsmsK6mae/JuqqzqAo5mZeQLJwSLtsCg01W4Tj6R5W
KzINz/GHBEiABEiABOwToGXRPhdeJQESIAESuFUCMo2zt3Fn0RtpWDd3LvaZLIje6PXMy4gIrCWx
1EefoSE4uGKfFmPdvwUarHT5OLL2PazYbzateQcPwbsjOok/b7Tp2g6bPo/BsmQg5OlpeOxumYqa
e0amZy4rMH2z0KQ074Egw0zWS0f366ec5u7D4fT+2lTU6oGdcA8SZDKqpfPGwMHm3VKvpMRirlju
jNJ6N++FF8dEwM/acKgPoO596NzIcCPzCObOWAHzVkCNMXzyeLSuI/erN0ewaItxJm6W8ds7zkfy
N8uweId5ymlAj6cwtp9O89yiR0/47lxhktFeCLxGAiRAAiRAAkYCtCwaSfCXBEiABEigVAmEyBpF
vcHwGmIXWiqKKppcxPz730gy7EZTq1Vb8y6kJktZLi6eMqpeetFyj36NdTt3Yf/+/dh76KxJ3qrG
oU9Zq2hppDR5KOQgpHsbk6wH/mNWCffsPW14sjHu62pp45PLvh3R2rDGEVdE4bNQFNVDuadiMCt6
v9qgtaDLvYQTqalIFUtr7Lo1Foqi8pqGNSZlrzoCAm3iLRia6cq1lG+sFEV14+TOZdh1wSCFt7dh
qq3pER6QAAmQAAmQgEMCxubVoQfeIAESIAESIIHiE/DFXc0Nprobl3DmRl00bmz9zcUbV27g0u+y
DrCmqHe3N4HSidLEgpZrUharI/ylaaj7ww7E7z2CkxeV4piLfZs3QG+DLL5U9p8IQGedsnDK7M7L
R60+k3Fx1/dI6x+ExmLka9m1C7BrkykI33uCTIpX2r54+9a6o9/gcGZ7tLNZl4isn7FsvlkpVYF6
iyLn7e0rf4BPXqa2tlApvtWqWnMzCWDn4Oyho3auAhlZMh21vj4/TNNX7frkRRIgARIgARIwE6Cy
aGbBIxIgARIggVIjIIqPcfrl7f6IevXVQkM2NkhZ+zdjf89W6KSmYVapidY9Bmh/+Teu4NL5czh6
4HtsK8WdPX3bdYO/UdY8L4R2DcMdd+jFvX7dC9oyQSVK/XYI9d2EBIOx01u/76l4zMWJXxztupqF
0+euibJoUJytKNRF2JAB6HxXE/y1enVUMcpg5ad4J17FUCyLFzJ9kwAJkAAJVEYCxra5MqadaSYB
EiABEihDAsZtV4oWRb5s/2J0F7F25nvIGDIUoW1botbtei2qyu01Ud9f/QWhxwPJWPavxThmf4NS
Y0BF+g25P8jkTymEA2RzHfuuJjp1b4WEzeb1gHp/+bh+1f4T2lV7La13O7w47QnYGFudBMJbJEAC
JEACJOB6AvaaMNdLwRhJgARIgAQqGIHbIcsH9S7zIN6Z8bn9aZoOU52FuLWL5U+WBjZuhfat2yLw
7gC0bOQne6GKla9WECKf7oU3PolxGEKRbojS1sHfvMox37jbqM3DVQxmv8btO8NXlEXNuGj6tGR1
BOrqIman/V1ofGsUnEYa9vQAk6KYm5mChG/jZTOdC7hxIxdZarqt7LI6dVz3Eq2/tBGdpyRAAiRA
AiRQYgLGprzEAfBBEiABEiABEihIIA1nL+UiSD5qj1pN0VJ+DtqxAnrXDUBgvRrAzd/xc7J+P1Dv
uo3RSBSsG1fTZQ2jKE9pxxCn/r6RWHxD8PLrj0HtK+PdJFA2xYmx3hzGbJ4sKJKdK43v7wI/w/XU
b+Zi/g7znqSW3kOfmYYBamfXmmLVbA5sOgVc/PWsTEAN0hS6Zu1lPeNO83pG07O+YeiiGFi5ughs
Ul1/JT8VS2d8AttJrHVbNqGiaMWMJyRAAiRAAuVBgLuhlgd1xkkCJEAClYBAomknUT8MeLq3nRQH
4JmXxiJqRBSiRg8y7Ibqi6HPvYix48bixVefQ4DtU1m/4LJR6cwzf2uwqmZvFM/Va6OJ7TMOz70R
2qWZ4e4l7P3BvqKoPCQm/GLwJ5/s6B6iP05LxAnDZwyrNOqO5x5qZfBj/JFPYIx/yPAZEOM1/a+I
rneW30s0ebkHw8KN32Y0XeQBCZAACZAACbicAC2LLkfOCEmABEigchC4uGsrkiOCECRGtOryQfiZ
U/6Gnd/+B79cvIlGd3XA/d3amb5BmHlkr8FCmIUff81E63Zqd9LGGDl5NGK2x+Doicu4vUFLhIb9
HTqDUe5aWpL+e4ji81Km0trUDT/0HN4bN/ek4Pfzp5CWZdQs5Zatq9sNwYZdSvPTD2OfE6+5RxOQ
cqMTWsiM0lq6zqLE7hNr4EVs3p4E3UCdFnKLnqMw7e4j2H84XSyQjdC+S2vYboKqF+EiTp7Pha6F
WBxvb4FnXn4K/9mxH+dk3aNfUHv0vL81apbCZje2yeU5CZAACZAACRSXAJXF4hKjfxIgARIggSIS
SMPiD9aZpo1WqeWP8CFRCLd5Ov/Cfvx7xT7T1Z8//xxJfxsLncz69K4ThL5PyJ/pruEgPw3rlieY
rh7/SSZydtJPKK3fOhxR8pebskXWNMaZ/Nge3PNAB5PV78TeRNvbNudp2HMsEy1aixJbxR/d2vni
5MEsXNy1DJ83eRFPdGqs+a/ZqDXC5c/k5LMhaddqonEt66mocdvi0H1chPbpjer1dZJGvcJpfO7a
5UuoUsePU1GNQPhLAiRAAiRQLgQ4DbVcsDNSEiABEqggBIxfnDf+2iYrax/+NXkhdqVc0L4baHk7
99olHPxmOSb/a63JQqi/fxLLpr+P7QdTIJ9itHby+YyUg9vx/uS5+NnCEpibvBafJ6RYxeFIJH2A
vmh/l2G1oiieu3fZ35zGMvKD3x82hd+8k1khPLh2Lt7/XL7HeOWafGbDHOuV9CNYMmUWdp4xJMI4
9VQFeioGsxZ8hZTLVyyjACR9yQmf480P/4Prhjs5Ny0gGMMwzWNV36U0g8i5ZuHXIuSbeQa5jM9b
3OMhCZAACZAACTgicNuIESP+dHTTVddnz55tN6pXXnnF7nVeJAESIIGKRMCyDqzo9Z63ry985avz
ublZyHI2RdQig43PyEO4mGX4yKHFfetDb9St6ytec5Erfs1qlLWv0joL6BSGu+rcgZtZKYgxfvtR
0uet4tci8cbAyW+jq/pm5I0UzJ3yifWGPMqPt2Kilyir0PTp/VX0/5WpTFT0vGT6SIAEikbAst6z
fKK8+wWchmqZGzwmARIgARIoUwJKgSvchmctQvGeEYXyYnFjsI6v6Gfe6PT3vuikllfK5NqAO5Zg
8Y5jYuozK4phw8frFUXxkavWUNoLXCnOZa3V2ouX10iABEiABEigEAJUFgsBxNskQAIkQAIkYJ9A
Lr759gg6DdFPSQ16aBRmh19B2vmLYlX0RoPGjVHdtFHNFcSs3mY/GF4lARIgARIgATclwDWLbpox
FIsESKDyEPjzT/NqgL/8hdWyJ+V81v4VWPhNEkwrFW+XzWz8W6CFv4WieOMCYhfPRZyrDJ6eBNCO
rJZlwLJs2PHKSyRAAiRAAmVMgJbFMgbM4EmABEigMALXrl1DjRo1NG916tRx4TTKwiTj/aIQOLlj
GSb/0BihD4RCF1Af1aRlrSLrFvOvZuDXQ3sRK2sZOcu0KCT1flQZMDpVNuhIgARIgATKjwCVxfJj
z5hJgARIQCNw5swZ3HXXXdpx69atERsbSzKeRiA3DQnfrIX5Yx6elgD3kVeVAaNTZYOOBEiABEig
/AhwvlP5sWfMJEACJKAR+Omnn0wkunfvjurV1cfl6Uig8hFQ774qA0ZnWTaM1/hLAiRAAiTgOgJU
Fl3HmjGRAAmQgF0CqkN8+fJl7Z6ajjpkyBDcdtttdv3yIglUVALqnVfvvnFKtioTVBYram4zXSRA
Ap5CwG2VRS5q95RXiHKSAAncKgH1IfcNGzaYggkODkZUVBTuuOMO0zUekEBFJqDedfXOq3ff6FSZ
UGWDjgRIgAQqAwF31X3cYs2igmM7iq7Ovby8kJeXVxneD6aRBEigkhM4duwY4uLiEBYWppFQnWb1
Id59+/YhNTUVZ8+elY/YF/ZB+koOkcn3KAK+vr5o0qQJ/P39ERISgpo1a5rkV2VBlQk6EiABEqgM
BJTOY6sLqXS7gwLpFsri9evX7a7RUTuiXbhwoTK8I0wjCZAACWDr1q2oWrUqQkNDNRqq89yzZ0+S
IYFKRSAhIUErC5Uq0UwsCZBApSZguQu0JQilI5W3c4tpqJcuXbLLoXnz5nav8yIJkAAJVEQCagTx
q6++wrJly0xrGCtiOpkmErBHQK1RVO++KgPuMJpuT0ZeIwESIIGyIOBI53GkI5WFDI7CdAvLotoa
W01DsXVq++y9e/faXuY5CZAACVRoAklJSdoUvMDAQDRt2lSbqqem66lpe3QkUFEIqGnVanq1+lP9
gOPHj3ONYkXJXKaDBEigWAQsPxlk+aA7fD7ILZRFtS7BOO3KElBQUBD8/PzgDlq1pVw8JgESIIGy
JqA29vjll1+0v7KOi+GTAAmQAAmQAAmUDwGl6yidx55zh7XbbjENNTk5GdeuXSvASC30jIiIKHCd
F0iABEiABEiABEiABEiABEjA0wkoXcfe5jZKN1I6Unk7t1AW1Qj6/v377bK49957oaZi0ZEACZAA
CZAACZAACZAACZBARSGgdByl69hzSjdyh88HuYWyqAB9//33Dj+TMXToULu7pdoDy2skQAIkQAIk
QAIkQAIkQAIk4M4EqlevDqXj2HPq04FKN3IH5zbKolro7gjKnXfeieHDh6NKlSruwIwykAAJkAAJ
kAAJkAAJkAAJkECJCCidRuk2Ssex55RO5C7fVnYbZVGB2rFjB37//Xd7zNCyZUtERUVp3yCz64EX
SYAESIAESIAESIAESIAESMCNCajvKSudRuk29pzShZRO5C7OrZTFGzduYPXq1Q6/r3T33XfjxRdf
RLNmzdyFH+UgARIgARIgARIgARIgARIggUIJKB1G6TJKp7Hn1DdmlS6kdCJ3cVVkUeVb7iKMksNo
WXSkbdeoUQOdOnVC3bp1kZ6ejuvXr7uT+JSFBEiABEiABEiABEiABEiABEwE6tSpg4EDB6J///7w
8fExXbc9+O6773DgwAHby+V67hbfWbQlEBMTg0aNGuGee+6xvaWdq+1l27Vrh7Zt2+LixYua0qgU
R/V37tw5XLlyxe5zvEgCJEACJEACJEACJEACJEACZUWgZs2aaNiwoabLKH1G/Skj11/+4nxC588/
/wylA7mbu23EiBF/uptQSh41n3fkyJEO5/O6o8yUiQRIgARIgARIgARIgARIgASKQ+DEiRNYunQp
bt68WZzHXOLXuYrrEhHsR6JgLVmyxO1Msfal5VUSIAESIAESIAESIAESIAESKB4BNe1U6TzuqCiq
lLjlNFQjYvWNEbXI85dffsEjjzzidI6v8Rn+kgAJkAAJkAAJkAAJkAAJkIA7E8jOzsbXX3+Nn376
yZ3FdG9l0UhOQTx27BjCw8Nx//33w8vLrXVco9j8JQESIAESIAESIAESIAESIAETAWUM++GHHxAb
G+sRG3W67ZpFE1GbA/XxytDQUHTo0AG+vr42d3lKAiRAAiRAAiRAAiRAAiRAAu5FICsrS1tel5CQ
gD/++MO9hHMijccpi8a0qB1RGzdujMDAQG3HIaU4Gv+8vb2N3vhLAiRAAiRAAiRAAiRAAiRAAi4h
kJubC6UYGv/UlxqOHz+OtLQ0h9+Sd4lgJYzEY+dzqo9Wnj17VvsrYdr5GAmQAAmQAAmQAAmQAAmQ
AAmQgAMCbrsbqgN5eZkESIAESIAESIAESIAESIAESMAFBKgsugAyoyABEiABEiABEiABEiABEiAB
TyNAZdHTcozykgAJkAAJkAAJkAAJkAAJkIALCFBZdAFkRkECJEACJEACJEACJEACJEACnkaAyqKn
5RjlJQESIAESIAESIAESIAESIAEXEKCy6ALIjIIESIAESIAESIAESIAESIAEPI0AlUVPyzHKSwIk
QAIkQAIkQAIkQAIkQAIuIEBl0QWQGQUJkAAJkAAJkAAJkAAJkAAJeBoBKouelmOUlwRIgARIgARI
gARIgARIgARcQIDKogsgMwoSIAESIAESIAESIAESIAES8DQCVBY9LccoLwmQAAmQAAmQAAmQAAmQ
AAm4gACVRRdAZhQkQAIkQAIkQAIkQAIkQAIk4GkEqCx6Wo5RXhIgARIgARIgARIgARIgARJwAQEq
iy6AzChIgARIgARIgARIgARIgARIwNMIUFn0tByjvCRAAiRAAiRAAiRAAiRAAiTgAgJUFl0AmVGQ
AAmQAAmQAAmQAAmQAAmQgKcRoLLoaTlGeUmABEiABEiABEiABEiABEjABQSoLLoAMqMgARIgARIg
ARIgARIgARIgAU8jQGXR03KM8pIACZAACZAACZAACZAACZCACwhQWXQBZEZBAiRAAiRAAiRAAiRA
AiRAAp5GgMqip+UY5SUBEiABEiABEiABEiABEiABFxCgsugCyIyCBEiABEiABEiABEiABEiABDyN
AJVFT8sxyksCJEACJEACJEACJEACJEACLiBAZdEFkBkFCZAACZAACZAACZAACZAACXgaASqLnpZj
lJcESIAESIAESIAESIAESIAEXECAyqILIDMKEiABEiABEiABEiABEiABEvA0AlQWPS3HKC8JkAAJ
kAAJkAAJkAAJkAAJuIAAlUUXQGYUJEACJEACJEACJEACJEACJOBpBKgselqOUV4SIAESIAESIAES
IAESIAEScAEBKosugMwoSIAESIAESIAESIAESIAESMDTCFBZ9LQco7wkQAIkQAIkQAIkQAIkQAIk
4AICVBZdAJlRkAAJkAAJkAAJkAAJkAAJkICnEaCy6Gk5RnlJgARIgARIgARIgARIgARIwAUE/j8I
l8AxZFTLZAAAAABJRU5ErkJggg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261856</attachid>
            <date>2015-09-23 18:14:30 -0700</date>
            <delta_ts>2015-09-23 18:35:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149053-20150923181412.patch</filename>
            <type>text/plain</type>
            <size>154625</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAxOTIpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3OCBAQAorMjAxNS0wOS0yMyAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdv
cmsgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQuIE1hbnkgcGFydHMgb2YgdGhlIGNvZGUgd2Fz
IGNvcGllZAorICAgICAgICBmcm9tIHNwZWVkb21ldGVyIGJlbmNobWFyay4gVGhlIGJlbmNobWFy
ayBydW5uZXIncyBuYW1lIGlzICJhbmltb21ldGVyLmh0bWwiCisgICAgICAgIGJ1dCB0aGlzIGlz
IG5vdCBmaW5hbCB5ZXQgYW5kIG1vc3QgcHJvYmFibHkgaXMgZ29pbmcgdG8gY2hhbmdlLiBUaGUg
Y3NzIAorICAgICAgICBhbmQgdGhlIHBhZ2UgbGF5b3V0cyB3aWxsIGJlIHJldmlzZWQgZm9yIGJl
dHRlciBsb29raW5nLgorCisgICAgICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgYmVuY2htYXJrIGlz
IHRvIG1lYXN1cmUgdGhlIGFuaW1hdGlvbiBwZXJmb3JtYW5jZSBvZgorICAgICAgICBhIHdlYiBi
cm93c2VyIGluIGFjY3VyYXRlIHdheSBidXQgYXQgZmluZSBncmFudWxhciBsZXZlbC4gVGhlIGRl
c2lnbiBpcworICAgICAgICB0byBoYXZlIHNlcGFyYXRlIGFuaW1hdGlvbnM7IGVhY2ggc3RyZXNz
IHRlc3RzIG9uZSBvZiB0aGUgZ3JhcGhpY3MgcHJpbWl0aXZlcworICAgICAgICBzbyB3ZSBjYW4g
aWRlbnRpZnkgYnVncyBhIGxvdCBlYXNpZXIuCisKKyAgICAgICAgSW5zdGVhZCBvZiBtZWFzdXJp
bmcgdGhlIEZQUyBvZiB0aGUgYW5pbWF0aW9uLCB0aGUgImFuaW1vbWV0ZXIiIGJlbmNobWFyawor
ICAgICAgICB0cmllcyB0byBtZWFzdXJlIHRoZSB0ZXN0IGNvbXBsZXhpdHkgd2hlbiByZW5kZXJp
bmcgYXQgYSBzZXQtcG9pbnQgRlBTIHdoaWNoCisgICAgICAgIHNob3VsZCBiZSBsZXNzIHRoYW4g
NjAgRlBTLiBUaGUgImFuaW1vbWV0ZXIiIHN0YXlzIGF0IHRoZSBzZXQtcG9pbnQgRlBTCisgICAg
ICAgIGJ5IHVzaW5nIGEgY2xvc2VkLWxvb3AgY29udHJvbCBzeXN0ZW0gUElEIGZ1bmN0aW9uLiBU
aGUgZ2FpbiBvZiB0aGUgc3lzdGVtCisgICAgICAgIGlzIHBhc3NlZCBhcyBhIHBhcmFtZXRlciB3
aGVuIHJ1bm5pbmcgdGhlIHRlc3QuIE1lYXN1cmluZyB0aGUgRlBTIGZhaXRoZnVsbHkKKyAgICAg
ICAgcmVzdWx0cyBpbiB2ZXJ5IGZsdWN0dWF0aW5nIHZhbHVlcy4gU28gYSBLYWxtYW4gZmlsdGVy
IGlzIHVzZWQgdG8gZ2l2ZSBhCisgICAgICAgIGJldHRlciBlc3RpbWF0ZSBmb3IgdGhlIGN1cnJl
bnQgRlBTLgorCisgICAgICAgIFRoZSBhbmltYXRpb24gb2YgdGhlIHRlc3RzIGlzIGRvbmUgbWFu
dWFsbHkuIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGlzCisgICAgICAgIGNhbGxlZCB3aXRoIGEg
Y2FsbGJhY2suIEluc2lkZSB0aGlzIGNhbGxiYWNrLCB0aGUgdGVzdCBpcyBhbmltYXRpbmcgYnkK
KyAgICAgICAgY2hhbmdpbmcgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZWxlbWVudHMgaW5zaWRlIHRo
ZSBwYWdlLiBUaGUgdGVzdCBjb21wbGV4aXR5CisgICAgICAgIG1heSBjaGFuZ2UgYWxzbyBpZiB0
aGUgY3VycmVudCBGUFMgaXMgbm90IGVxdWFsIHRvIHRoZSBkZXNpcmVkIEZQUy4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFuaW1vbWV0ZXI6IEFk
ZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgCisg
ICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzOiBBZGRlZC4KKyAgICAg
ICAgKEFycmF5LnByb3RvdHlwZS5zd2FwKToKKyAgICAgICAgKEhlYXApOiBNaW4vTWF4IEhlYXAg
b2JqZWN0CisgICAgICAgIChIZWFwLnByb3RvdHlwZS5fcGFyZW50SW5kZXgpOiBHaXZlbiB0aGUg
Y2hpbGQgbm9kZSBpbmRleCwgaXQgcmV0dXJucyB0aGUgcGFyZW50IGluZGV4LgorICAgICAgICAo
SGVhcC5wcm90b3R5cGUuX2xlZnRJbmRleCk6IEdpdmVuIHRoZSBwYXJlbnQgbm9kZSBpbmRleCwg
aXQgcmV0dXJucyB0aGUgbGVmdCBub2RlIGluZGV4LgorICAgICAgICAoSGVhcC5wcm90b3R5cGUu
X3JpZ2h0SW5kZXgpOiBHaXZlbiB0aGUgcGFyZW50IG5vZGUgaW5kZXgsIGl0IHJldHVybnMgdGhl
IHJpZ2h0IG5vZGUgaW5kZXguCisgICAgICAgIChIZWFwLnByb3RvdHlwZS5fY2hpbGRJbmRleCk6
IEdpdmVuIHRoZSBwYXJlbnQgbm9kZSBpbmRleCwgaXQgcmV0dXJucyB0aGUgY2hpbGQgaW5kZXgg
dGhhdCBtYXkgdmlvbGF0ZSB0aGUgaGVhcCBwcm9wZXJ0eS4KKyAgICAgICAgKEhlYXAucHJvdG90
eXBlLmluaXQpOiBJbml0aWFsaXplcyB0aGUgaGVhcCBzdGF0ZS4KKyAgICAgICAgKEhlYXAucHJv
dG90eXBlLnRvcCk6IFJldHVybnMgdGhlIHZhbHVlIHN0b3JlZCBhdCB0aGUgdG9wIG9mIHRoZSBo
ZWFwLgorICAgICAgICAoSGVhcC5wcm90b3R5cGUucHVzaCk6IFB1c2hlcyBhIG5ldyBub2RlIGF0
IHRoZSB0b3Agb2YgdGhlIGhlYXAuCisgICAgICAgIChIZWFwLnByb3RvdHlwZS5wb3ApOiBFeHRy
YWN0cyB0aGUgdG9wIG5vZGUgb2YgdGhlIGhlYXAuCisgICAgICAgIChIZWFwLnByb3RvdHlwZS5f
YnViYmxlKTogRml4ZXMgdGhlIGhlYXAgcHJvcGVydHkgYnkgbW92aW5nIHVwd2FyZC4KKyAgICAg
ICAgKEhlYXAucHJvdG90eXBlLl9zaW5rKTogRml4ZXMgdGhlIGhlYXAgcHJvcGVydHkgYnkgbW92
aW5nIGRvd253YXJkLgorICAgICAgICAoSGVhcC5wcm90b3R5cGUuc3RyKTogUHJpbnRzIHRoZSBu
b2RlcyBvZiB0aGUgaGVhcCB0byBhIHN0cmluZy4KKyAgICAgICAgKEhlYXAucHJvdG90eXBlLnZh
bHVlcyk6IFJldHVybnMgdGhlIGxhc3QgInNpemUiIGhlYXAgZWxlbWVudHMgdmFsdWVzLgorICAg
ICAgICAoQWxnb3JpdGhtLmNyZWF0ZU1pbkhlYXApOiBDcmVhdGVzIGEgc2l6ZS1ib3VuZGVkIG1p
bi1oZWFwIG9iamVjdC4KKyAgICAgICAgKEFsZ29yaXRobS5jcmVhdGVNYXhIZWFwKTogQ3JlYXRl
cyBhIHNpemUtYm91bmRlZCBtYXgtaGVhcCBvYmplY3QuCisgICAgICAgIAorICAgICAgICAqIEFu
aW1vbWV0ZXIvcmVzb3VyY2VzL21haW4uanM6IEFkZGVkLgorICAgICAgICAoUG9pbnQpOiBBIHBv
aW50IG9iamVjdAorICAgICAgICAoSW5zZXRzKTogQW4gaW5zZXRzIG9iamVjdAorICAgICAgICAo
U2ltcGxlUHJvbWlzZSk6IEFuIGltcGxlbWVudGF0aW9uIGZvciBhIHByb21pc2Ugb2JqZWN0IChj
b3BpZWQgZm9ybSBzcGVlZG9tZXRlcikuCisgICAgICAgIChNYXRyaXgpOiBBIG1hdHJpeCBvYmpl
Y3QuCisgICAgICAgIChWZWN0b3IzKTogQSB2ZWN0b3Igb2Ygc2l6ZSAzIG9iamVjdC4KKyAgICAg
ICAgKE1hdHJpeDMpOiBBIG1hdHJpeCBvZiBzaXplIDN4MyBvYmplY3QuCisgICAgICAgIChPcHRp
b25zKTogQmVuY2htYXJrIHJ1bm5pbmcgb3B0aW9ucyBhcyB0aGV5IGFyZSBzZXQgYnkgdGhlIHVz
ZXIuCisgICAgICAgICAgICAgICAgCisgICAgICAgIChQcm9ncmVzc0Jhcik6IE1hbmFnZXMgYSBw
cm9ncmVzcyBiYXIgZWxlbWVudC4gVGhlIHByb2dyZXNzIGJhciBpcyBkaXZpZGVkIGludG8gZXF1
YWwgbGVuZ3RoIHJhbmdlcy4KKyAgICAgICAgKFByb2dyZXNzQmFyLnByb3RvdHlwZS5fcHJvZ3Jl
c3NUb1BlcmNlbnQpOiBDb252ZXJ0cyB0aGUgcHJvZ3Jlc3MgaW50byBhIHBlcmNlbnRhZ2UuCisg
ICAgICAgIChQcm9ncmVzc0Jhci5wcm90b3R5cGUuaW5jUmFuZ2UpOiBNb3ZlcyB0byB0aGUgbmV4
dCByYW5nZSAoYSByYW5nZSBpcyB0aGUgcnVubmluZyB0aW1lIG9mIGEgc2luZ2xlIHRlc3QpLgor
ICAgICAgICAoUHJvZ3Jlc3NCYXIucHJvdG90eXBlLnNldFBvcyk6IERyYXdzIHRoZSBjdXJyZW50
IHByb2dyZXNzIGluIHRoZSBjdXJyZW50IHJhbmdlLgorICAgICAgICAKKyAgICAgICAgKFJlY29y
ZFRhYmxlKTogU2hvd3MgdGhlIHJlc3VsdHMgb2YgcnVubmluZyBhIGJlbmNobWFyayBpbiBhIHRh
YnVsYXIgZm9ybS4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5jbGVhcik6IENsZWFy
cyB0aGUgcmVzdWx0cyB0YWJsZS4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5fc2hv
d1RpdGxlcyk6IFNob3dzIHRoZSBoZWFkZXIgdGl0bGVzIGFuZCBhcHBlbmRzIHRoZSBzdWItdGl0
bGVzIHRvIGEgcXVldWUuCisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dIZWFk
ZXIpOiBTaG93cyB0aGUgdGFibGUgaGVhZGVyIHRpdGxlcy4KKyAgICAgICAgKFJlY29yZFRhYmxl
LnByb3RvdHlwZS5fc2hvd0VtcHR5KTogU2hvd3MgYW4gZW1wdHkgdGFibGUgY2VsbC4KKyAgICAg
ICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5fc2hvd1ZhbHVlKTogU2hvd3MgYSBudW1iZXIgdmFs
dWUgaW4gdGhlIHJlc3VsdHMgdGFibGUuCisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUu
X3Nob3dTYW1wbGVzKTogU2hvd3MgYSBidXR0b24gZm9yIHRoZSBzYW1wbGVkIGRhdGEgZ3JhcGgu
CisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dUZXN0KTogU2hvd3MgdGhlIHJl
c3VsdHMgb2YgYSBzaW5nbGUgdGVzdC4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5f
c2hvd1N1aXRlKTogU2hvd3MgdGhlIHJlc3VsdHMgb2YgYSBzaW5nbGUgc3VpdGUuCisgICAgICAg
IChSZWNvcmRUYWJsZS5wcm90b3R5cGUuc2hvd1JlY29yZCk6ICAgICAgICAKKyAgICAgICAgKFJl
Y29yZFRhYmxlLnByb3RvdHlwZS5zaG93SXRlcmF0aW9ucyk6IFNob3dzIHRoZSByZXN1bHRzIG9m
IGFsbCB0aGUgc3VpdGVzIG9mIHRoZSBpdGVyYXRpb25zLiAKKyAgICAgICAgCisgICAgICAgICog
QW5pbW9tZXRlci9yZXNvdXJjZXMvc3RhdGlzdGljcy5qczogQWRkZWQuICAgICAgICAKKyAgICAg
ICAgKFN0YXRpc3RpY3Muc2FtcGxlTWVhbik6IFJldHVybnMgdGhlIHNhbXBsZSBtZWFuIGZvciBh
IHNldCBvZiBkYXRhIHBvaW50cy4KKyAgICAgICAgKFN0YXRpc3RpY3Muc2FtcGxlU3RhbmRhcmRE
ZXZpYXRpb24pOiBSZXR1cm5zIHRoZSBzYW1wbGUgc3RhbmRhcmQgZGV2aWF0aW9uIGZvciBhIHNl
dCBvZiBkYXRhIHBvaW50cy4KKyAgICAgICAgKFN0YXRpc3RpY3MuZ2VvbWV0cmljTWVhbik6IFJl
dHVybnMgdGhlIGdlb21ldHJpYyBtZWFuIG9mIGEgc2V0IG9mIGRhdGEuCisgICAgICAgIChFeHBl
cmltZW50KTogUmVwcmVzZW50cyBhIHNhbXBsaW5nIGV4cGVyaW1lbnQuIAorICAgICAgICAoRXhw
ZXJpbWVudC5wcm90b3R5cGUuX2luaXQpOiBDYWxsZWQgd2hlbiB0aGUgb2JqZWN0IGlzIGNyZWF0
ZWQgYW5kIHdoZW4gc3RhcnRTYW1wbGluZygpIGlzIGNhbGxlZC4KKyAgICAgICAgKEV4cGVyaW1l
bnQucHJvdG90eXBlLnN0YXJ0U2FtcGxpbmcpOiBDYWxsZWQgYWZ0ZXIgd2FybXVwIHBlcmlvZC4g
UmVzdGFydHMgY29sbGVjdGluZyBzYW1wbGVkIGRhdGEgcG9pbnRzLgorICAgICAgICAoRXhwZXJp
bWVudC5wcm90b3R5cGUuc2FtcGxlKTogQWRkIGEgbmV3IGRhdGEgcG9pbnQuCisgICAgICAgIChF
eHBlcmltZW50LnByb3RvdHlwZS5tZWFuKTogUmV0dXJucyB0aGUgc2FtcGxlIG1lYW4gZm9yIHRo
ZSBjdXJyZW50IHNhbXBsZWQgZGF0YSBwb2ludHMuCisgICAgICAgIChFeHBlcmltZW50LnByb3Rv
dHlwZS5zdGFuZGFyZERldmlhdGlvbik6IFJldHVybnMgdGhlIHNhbXBsZSBzdGFuZGFyZCBkZXZp
YXRpb24gZm9yIHRoZSBjdXJyZW50IHNhbXBsZWQgZGF0YSBwb2ludHMuCisgICAgICAgIChFeHBl
cmltZW50LnByb3RvdHlwZS5wZXJjZW50YWdlKTogUmV0dXJucyB0aGUgcGVyY2VudGFnZSBvZiB0
aGUgc3RhbmRhcmQgZGV2aWF0aW9uIGRpdmlkZWQgdG8gdGhlIG1lYW4uCisgICAgICAgIChFeHBl
cmltZW50LnByb3RvdHlwZS5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSk6IENhbGN1bGF0ZXMgdGhl
IGNvbmZpZGVuY2UgZGVsdGEgZm9yIHRoZSBjdXJyZW50IHNhbXBsZWQgZGF0YSBnaXZlbiBhIGNv
bmZpZGVuY2UgbGV2ZWwuCisgICAgICAgIChFeHBlcmltZW50LnByb3RvdHlwZS5jb25jZXJuKTog
UmV0dXJucyB0aGUgYXZlcmFnZSBvZiB0aGUgd29yc3QgZ2l2ZW4gcGVyY2VudGFnZSBmcm9tIHRo
ZSBzYW1wbGVkIGRhdGEuCisgICAgICAgIChFeHBlcmltZW50LnByb3RvdHlwZS5zY29yZSk6IFJl
dHVybnMgYSBzY29yZSBmb3IgdGhlIHNhbXBsZWQgZGF0YS4gSXQgaXMgdGhlIGdlb21ldHJpYyBt
ZWFuIG9mIHNhbXBsZU1lYW4gYW5kIGNvbmNlcm4uCisgICAgICAgIChTYW1wbGVyKTogUmVwcmVz
ZW50cyBhIGNvbXBvdW5kIGV4cGVyaW1lbnQuIEl0IG1hbmFnZXMgc2FtcGxpbmcgbXVsdGlwbGUg
ZGF0YSBwb2ludHMgYXQgdGhlIHNhbWUgdGltZSBvZmZzZXQuCisgICAgICAgIChTYW1wbGVyLnBy
b3RvdHlwZS5zdGFydFNhbXBsaW5nKTogQ2FsbGVkIGFmdGVyIHdhcm1pbmcgdXAgcGVyaW9kLiBS
ZXN0YXJ0cyBjb2xsZWN0aW5nIHNhbXBsZWQgZGF0YSBwb2ludHMuCisgICAgICAgIChTYW1wbGVy
LnByb3RvdHlwZS5zYW1wbGUpOiBBZGQgYSBuZXcgZGF0YSB2ZWN0b3IgYXQgYSBnaXZlbiB0aW1l
IG9mZnNldC4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXI6IEFkZGVkLgor
ICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL2FuaW1vbWV0ZXIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgKiBBbmlt
b21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5jc3M6IEFkZGVkLgorICAgICAgICBU
aGUgYmVuY2htYXJrIHJ1bm5lciBwYWdlIGFuZCBjc3MuCisgICAgICAgIAorICAgICAgICAqIEFu
aW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmpzOiBBZGRlZC4KKyAgICAgICAg
KHdpbmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQud2lsbEFkZFRlc3RGcmFtZSk6IENhbGxlZCBh
ZnRlciB0aGUgdGVzdCA8aWZyYW1lPiBpcyBjcmVhdGVkLgorICAgICAgICAod2luZG93LmJlbmNo
bWFya1J1bm5lckNsaWVudC5kaWRSdW5UZXN0KTogQ2FsbGVkIGFmdGVyIHJ1bm5pbmcgYSB0ZXN0
IGlzIGZpbmlzaGVkLgorICAgICAgICAod2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudC53aWxs
U3RhcnRGaXJzdEl0ZXJhdGlvbik6IENhbGxlZCBhdCB0aGUgYmVnaW5uaW5nIGJlZm9yZSBydW5u
aW5nIGFueSB0ZXN0LgorICAgICAgICAod2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudC5kaWRS
dW5TdWl0ZXMpOiBDYWxsZWQgYWZ0ZXIgcnVubmluZyBhbGwgdGVzdHMgb2YgYSBzdWl0ZS4KKyAg
ICAgICAgKHdpbmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQuZGlkRmluaXNoTGFzdEl0ZXJhdGlv
bik6IENhbGxlZCBhZnRlciBydW5uaW5nIHRoZSBsYXN0IHRlc3QuCisgICAgICAgIAorICAgICAg
ICAod2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudC5icm93c2VyKToKKyAgICAgICAgKHNob3dT
ZWN0aW9uKTogU2hvd3MgYSBzZWN0aW9uIGluIHRoZSBhbmltb21ldGVyLmh0bWwgcGFnZS4KKyAg
ICAgICAgKHN0YXJ0VGVzdCk6IENhbGxlZCB3aGVuIHRoZSAiU3RhcnQgVGVzdCIgYnV0dG9uIGlz
IGNsaWNrZWQuCisgICAgICAgIChzaG93UmVzdWx0cyk6IENhbGxlZCBhZnRlciBmaW5pc2hpbmcg
YWxsIHRoZSB0ZXN0cy4KKyAgICAgICAgKHNob3dHcmFwaCk6IENhbGxlZCB3aGVuICJDbGljay4u
LiIgYnV0dG9uIGluIHRoZSAiU2FtcGxlcyIgY29sdW1uIG9mIHRoZSByZXN1bHRzIHRhYmxlIGlz
IGNsaWNrZWQKKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2Vz
L2JlbmNobWFyay1ydW5uZXIuanM6IEFkZGVkLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyU3Rh
dGUpOiBUcmFja3Mgb2YgdGhlIGN1cnJlbnQgcnVubmluZyA8c3VpdGUsIHRlc3Q+CisgICAgICAg
IChCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUuY3VycmVudFN1aXRlKTogcmV0dXJucyB0
aGUgY3VycmVudCBydW5uaW5nIHN1aXRlLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyU3RhdGUu
cHJvdG90eXBlLmN1cnJlbnRUZXN0KTogcmV0dXJucyB0aGUgY3VycmVudCBydW5uaW5nIHRlc3Qu
CisgICAgICAgIChCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUuaXNGaXJzdFRlc3QpOiBy
ZXR1cm5zIHRydWUgaWYgd2UgYXJlIHJ1bm5pbmcgdGhlIGZpcnN0IHRlc3QgaW4gdGhlIGN1cnJl
bnQgc3VpdGUuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUubmV4dCk6
IGFkdmFuY2VzIHRvIHRoZSBuZXh0IHRlc3QuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXJTdGF0
ZS5wcm90b3R5cGUucHJlcGFyZUN1cnJlbnRUZXN0KTogQ3JlYXRlcyBhIG5ldyA8aWZyYW1lPiBh
bmQgd2FpdHMgZm9yIGl0IHRvIGxvYWQgYSB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKEJlbmNo
bWFya1J1bm5lcik6IE1hbmFnZXMgcnVubmluZyB0aGUgdGVzdHMgYW5kIGNvbW11bmljYXRpbmcg
d2l0aCB0aGUgYmVuY2htYXJrUnVubmVyQ2xpZW50LgorICAgICAgICAoQmVuY2htYXJrUnVubmVy
LnByb3RvdHlwZS53YWl0Rm9yRWxlbWVudCk6IFdhaXRzIGZvciBhbiBlbGVtZW50IHRvIGJlIGNy
ZWF0ZWQuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9hcHBlbmRGcmFtZSk6
IENyZWF0ZXMgYSBuZXcgPGlmcmFtZT4gZWxlbWVudC4KKyAgICAgICAgKEJlbmNobWFya1J1bm5l
ci5wcm90b3R5cGUuX3JlbW92ZUZyYW1lKTogUmVtb3ZlZCB0aGUgY3VycmVudCA8aWZyYW1lPiBl
bGVtZW50LgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcnVuVGVzdEFuZFJl
Y29yZFJlc3VsdHMpOiBSdW5zIHRoZSBjdXJyZW50IHRlc3QgYW5kIHNhdmVzIGl0cyByZXN1bHRz
LgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5zdGVwKTogRWl0aGVyIHJ1bnMg
dGhlIGN1cnJlbnQgdGVzdCBpZiB0aGVyZSBpcyBvciBzdGFydCBhIG5ldyBpdGVyYXRpb24uCisg
ICAgICAgIChCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLnJ1bkFsbFN0ZXBzKTogTG9vcHMgdG8g
cnVuIGFsbCB0aGUgdGVzdHMgYW5kIG1vdmUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgorICAgICAg
ICAodGhpcy5fcnVuTmV4dEl0ZXJhdGlvbik6IFN0YXJ0cyBhIG5ldyBpdGVyYXRpb24gb3Igc2hv
dyB0aGUgcmVzdWx0cy4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUucnVuTXVs
dGlwbGVJdGVyYXRpb25zKTogTG9vcHMgdG8gcnVuIGFsbCB0aGUgaXRlcmF0aW9ucyBhbmQgc2hv
dyB0aGUgcmVzdWx0cworICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fZmluYWxp
emUpOiBTdGFydHMgYSBuZXcgaXRlcmF0aW9uLgorCisgICAgICAgICogQW5pbW9tZXRlci9ydW5u
ZXIvcmVzb3VyY2VzL2dyYXBoLmpzOiBBZGRlZC4KKyAgICAgICAgKGdyYXBoKTogRHJhd3MgYSBj
aGFydCBmb3IgYSB0ZXN0IHNhbXBsZWQgZGF0YS4gSXQgc2hvd3MgdHdvIHktYXhpc2VzOiBvbmUg
Zm9yIHRoZSBwYXJ0aWNsZXMgYW5kIHRoZSBzZWNvbmQgZm9yIEZQUy4KKyAgICAgICAgCisgICAg
ICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHN1aXRlRnJvbU5hbWUpOiBSZXR1cm5zIGEgc3VpdGUgZ2l2ZW4gaXRzIG5hbWUuCisgICAg
ICAgICh0ZXN0RnJvbU5hbWUpOiBSZXR1cm5zIGEgdGVzdCBnaXZlbiBpdHMgc3VpdGUgYW5kIG5h
bWUuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHM6IEFkZGVkLgorICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzOiBBZGRlZC4KKyAgICAgICAg
KiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1h
Z2VzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctaW1hZ2VzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5j
aW5nLXNoYXBlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMu
aHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgVGhlIGJvdW5jaW5nIHBhcnRpY2xlcyB0ZXN0
IHBhZ2VzLiBUaGUgc2FtZSB0ZXN0cyBhcmUgZG9uZSBhcyBIVE1MIGVsZW1lbnRzLAorICAgICAg
ICBTVkdFbGVtZW50cyBvciBkcmF3biBvbiBhIGNhbnZhcy4KKyAgICAgICAgCisgICAgICAgICog
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNh
bnZhcy1pbWFnZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZSk6IEEg
c3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc0lt
YWdlLnByb3RvdHlwZS5fZHJhdyk6IERyYXdzIGFuIGltYWdlIG9uIHRoZSBjb250ZXh0IG9mIGEg
Y2FudmFzLgorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6
IE1vdmVzIHRoZSBCb3VuY2luZ0NhbnZhc0ltYWdlIHRvIGEgbmV3IGxvY2F0aW9uLgorICAgICAg
ICAKKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UpOiBBIHN1YiBjbGFzcyBvZiBC
b3VuY2luZ1BhcnRpY2xlc1N0YWdlLgorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZXNTdGFn
ZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlwZSBC
b3VuY2luZ0NhbnZhc0ltYWdlLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1h
Z2VzQW5pbWF0b3IpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLgor
ICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZXNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6
IENsZWFycyB0aGUgY29udGV4dCBiZWZvcmUgcmVkcmF3aW5nIHRoZSBwYXJ0aWNsZXMuCisgICAg
ICAgIAorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmspOiBBIHN1YiBjbGFz
cyBvZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFz
SW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBv
ZiB0eXBlIEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UuCisgICAgICAgIChCb3VuY2luZ0NhbnZh
c0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBDcmVhdGVzIGFuIGFu
aW1hdG9yIG9mIHR5cGUgQm91bmNpbmdDYW52YXNJbWFnZXNBbmltYXRvci4KKyAgICAgICAgKHdp
bmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBl
IEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLgorICAgICAgICAKKyAgICAgICAgKiBBbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFz
LXNoYXBlcy5qczogQWRkZWQuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlKTogQSBzdWIg
Y2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGUu
cHJvdG90eXBlLl9kcmF3KTogRHJhd3MgYSBzaGFwZSBvbiB0aGUgY29udGV4dCBvZiBhIGNhbnZh
cy4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLmFuaW1hdGUpOiBNb3Zl
cyB0aGUgQm91bmNpbmdDYW52YXNTaGFwZSB0byBhIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgCisg
ICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNp
bmdQYXJ0aWNsZXNTdGFnZS4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UucHJv
dG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNp
bmdDYW52YXNTaGFwZS4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc0Fu
aW1hdG9yKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci4KKyAgICAg
ICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBDbGVh
cnMgdGhlIGNvbnRleHQgYmVmb3JlIHJlZHJhd2luZyB0aGUgcGFydGljbGVzLgorICAgICAgICAK
KyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrKTogQSBzdWIgY2xhc3Mgb2Yg
Qm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBl
c0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlw
ZSBCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlLgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFw
ZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyBhbiBhbmltYXRv
ciBvZiB0eXBlIEJvdW5jaW5nQ2FudmFzU2hhcGVzQW5pbWF0b3IuCisgICAgICAgICh3aW5kb3cu
YmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBCb3Vu
Y2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWltYWdlcy5qczog
QWRkZWQuCisgICAgICAgIChCb3VuY2luZ0ltYWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQ
YXJ0aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nSW1hZ2UucHJvdG90eXBlLl9tb3ZlKTogTW92ZSB0
aGUgcGFydGljbGUgdG8gYSBuZXcgbG9jYXRpb24uIEFwcGx5IHRyYW5zZm9ybSBzaW5jZSBpdCBk
b2VzIG5vdCByZXF1aXJlIGxheW91dC4KKyAgICAgICAgKEJvdW5jaW5nSW1hZ2UucHJvdG90eXBl
LmFuaW1hdGUpOiBSb3RhdGVzIGFuZCBtb3ZlcyB0aGUgc2hhcGUgdG8gYSBuZXcgbG9jYXRpb24u
CisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdJbWFnZXNTdGFnZSk6IEEgc3ViIGNsYXNzIG9m
IEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuCisgICAgICAgIChCb3VuY2luZ0ltYWdlc1N0YWdlLnBy
b3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZSBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNp
bmdJbWFnZS4KKyAgICAgICAgKEJvdW5jaW5nSW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xl
V2lsbEJlUmVtb3ZlZCk6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGZvcm0gdGhl
IHBhcmVudCBjaGlsZHJlbiBsaXN0LgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nSW1hZ2Vz
QmVuY2htYXJrKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuCisg
ICAgICAgIChCb3VuY2luZ0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBD
cmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ0ltYWdlc1N0YWdlLgorICAgICAgICAod2lu
ZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5cGUg
Qm91bmNpbmdJbWFnZXNCZW5jaG1hcmsuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanM6
IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZVJvdGF0ZXIpOiBNYW5hZ2VzIHJvdGF0
aW5nIGEgQm91bmNpbmdQYXJ0aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVSb3RhdGVy
LnByb3RvdHlwZS5uZXh0KTogTW92ZXMgdGhlIHRpbWUgYnkgdGhlIGJlbmNobWFyaydzIGN1cnJl
bnQgdGltZURhdGEuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlUm90YXRlci5wcm90b3R5cGUu
ZGVncmVlKTogUmV0dXJucyB0aGUgY3VycmVudCByb3RhdGluZyBkZWdyZWUuCisgICAgICAgIChC
b3VuY2luZ1BhcnRpY2xlUm90YXRlci5wcm90b3R5cGUucm90YXRlWik6IFJldHVybnMgQ1NTIGZv
cm1hdHRlZCB0cmFuc2Zvcm0gcm90YXRlWigpIHZhbHVlLgorICAgICAgICAoQm91bmNpbmdQYXJ0
aWNsZVJvdGF0ZXIucHJvdG90eXBlLnJvdGF0ZSk6IFJldHVybnMgU1ZHIGZvcm1hdHRlZCB0cmFu
c2Zvcm0gcm90YXRlKCkgdmFsdWUuICAgICAgICAKKyAgICAgICAgCisgICAgICAgIChCb3VuY2lu
Z1BhcnRpY2xlKTogQmFzZSBjbGFzcyBmb3IgYSBib3VuY2luZyBwYXJ0aWNsZS4KKyAgICAgICAg
KEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlLmNlbnRlcik6IFJldHVybnMgdGhlIGNlbnRlciBw
b2ludCBvciB0aGUgcGFydGljbGUuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlw
ZS5hbmltYXRlKTogTW92ZXMgdGhlIHBhcnRpY2xlIGJhc2VkIG9uIGl0cyBjdXJyZW50IHBvc2l0
aW9uLCBhbmdsZSBhbmQgdmVsb2NpdHkuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdQYXJ0
aWNsZXNBbmltYXRvcik6IEEgc3ViIGNsYXNzIG9mIEFuaW1hdG9yLgorICAgICAgICAoQm91bmNp
bmdQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6IE1hbmFnZXMgYW5pbWF0aW5n
IHRoZSBib3VuY2luZyBwYXJ0aWNsZXMgdGhyb3VnaCB0aGUgdGVzdCBzdGFnZS4KKyAgICAgICAg
CisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0YWdlKTogUmVwcmVzZW50cyB0aGUgY29udGFp
bmVyIG9mIGFsbCB0aGUgYm91bmNpbmcgcGFydGljbGVzLgorICAgICAgICAoQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZS5wcm90b3R5cGUuc2l6ZSk6IFJldHVybnMgdGhlIHNpemUgb2YgdGhlIHN0YWdl
IGV4Y2x1ZGluZyB0aGUgQ1NTIHBhZGRpbmcuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0
YWdlLnByb3RvdHlwZS5wYXJzZVNoYXBlUGFyYW10ZXJzKTogR2V0cyB0aGUgc2hhcGUgcGFyYW1l
dGVycyBmb3Igc2hhcGUgYW5pbWF0aW5nIHRlc3RzLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNs
ZXNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IEFuaW1hdGVzIGFsbCB0aGUgcGFydGljbGVzLgor
ICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUudHVuZSk6IENoYW5nZXMg
dGhlIHRlc3QgYnkgYWRkaW5nIG9yIHJlbW92aW5nIHBhcnRpY2xlcy4KKyAgICAgICAgCisgICAg
ICAgIChCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyayk6IFJ1bnMgdGhlIGJlbmNobWFyayBmb3Ig
Ym91bmNpbmcgcGFydGljbGVzIHRlc3QuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc0JlbmNo
bWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBDcmVhdGVzIGFuIGFuaW1hdG9yIG9mIHR5
cGUgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVz
QmVuY2htYXJrLnByb3RvdHlwZS50dW5lKTogVHVuZXMgdGhlIHRlc3QgdGhyb3VnaCB0aGUgY3Vy
cmVudCBzdGFnZS4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlw
ZS5jbGVhcik6IENsZWFycyB0aGUgdGVzdCB0aHJvdWdoIHRoZSBjdXJyZW50IHN0YWdlLgorICAg
ICAgICAoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLnNob3dSZXN1bHRzKTog
U2hvd3MgdGhlIHJlc3VsdHMvcHJvZ3Jlc3MgdGhyb3VnaCBpdHMgcmVjb3JkVGFibGUgYW5kIHBy
b2dyZXNzQmFyLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc2hhcGVzLmpzOiBBZGRlZC4KKyAgICAgICAg
KEJvdW5jaW5nU2hhcGUpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlLgorICAgICAg
ICAoQm91bmNpbmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVNwYW4pOiBDcmVhdGVzIGEgPHNwYW4+
IGVsZW1lbnQgYW5kIHRha2VzIHRoZSBzaGFwZSBhbmQgY2xpcHBpbmcgY2xhc3NlcyBpbnRvIGNv
bnNpZGVyYXRpb24uCisgICAgICAgIChCb3VuY2luZ1NoYXBlLnByb3RvdHlwZS5fbW92ZSk6IE1v
dmVzIHRoZSBwYXJ0aWNsZSB0byBhIG5ldyBsb2NhdGlvbi4gQXBwbHkgdHJhbnNmb3JtIHNpbmNl
IGl0IGRvZXMgbm90IHJlcXVpcmUgbGF5b3V0LgorICAgICAgICAoQm91bmNpbmdTaGFwZS5wcm90
b3R5cGUuYW5pbWF0ZSk6IFJvdGF0ZXMgYW5kIG1vdmVzIHRoZSBzaGFwZSB0byBhIG5ldyBsb2Nh
dGlvbi4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ1NoYXBlc1N0YWdlKTogQSBzdWIgY2xh
c3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS4KKyAgICAgICAgKEJvdW5jaW5nU2hhcGVzU3Rh
Z2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUg
Qm91bmNpbmdTaGFwZS4KKyAgICAgICAgKEJvdW5jaW5nU2hhcGVzU3RhZ2UucHJvdG90eXBlLnBh
cnRpY2xlV2lsbEJlUmVtb3ZlZCk6IFJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBm
b3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4gbGlzdC4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2lu
Z1NoYXBlc0JlbmNobWFyayk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzQmVuY2ht
YXJrLgorICAgICAgICAoQm91bmNpbmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0
YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUgQm91bmNpbmdTaGFwZXNTdGFnZS4KKyAgICAg
ICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBv
ZiB0eXBlIEJvdW5jaW5nU2hhcGVzQmVuY2htYXJrLgorICAgICAgICAKKyAgICAgICAgKiBBbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLWlt
YWdlcy5qczogQWRkZWQuCisgICAgICAgIChCb3VuY2luZ1N2Z0ltYWdlKTogQSBzdWIgY2xhc3Mg
b2YgQm91bmNpbmdQYXJ0aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nU3ZnSW1hZ2UucHJvdG90eXBl
Ll9tb3ZlKTogTW92ZSB0aGUgcGFydGljbGUgdG8gYSBuZXcgbG9jYXRpb24uIEFwcGx5IHRyYW5z
Zm9ybSBzaW5jZSBpdCBkb2VzIG5vdCByZXF1aXJlIGxheW91dC4KKyAgICAgICAgKEJvdW5jaW5n
U3ZnSW1hZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBSb3RhdGVzIGFuZCBtb3ZlcyB0aGUgc2hhcGUg
dG8gYSBuZXcgbG9jYXRpb24uCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZXNT
dGFnZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuCisgICAgICAgIChC
b3VuY2luZ1N2Z0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMg
YSBwYXJ0aWNsZSBvZiB0eXBlIEJvdW5jaW5nU3ZnSW1hZ2UuCisgICAgICAgIChCb3VuY2luZ1N2
Z0ltYWdlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1vdmUgdGhl
IGNvcnJlc3BvbmRpbmcgZWxlbWVudCBmb3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4gbGlzdC4KKyAg
ICAgICAgCisgICAgICAgIChCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyayk6IEEgc3ViIGNsYXNz
IG9mIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLgorICAgICAgICAoQm91bmNpbmdTdmdJbWFn
ZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5
cGUgQm91bmNpbmdTdmdJbWFnZXNTdGFnZS4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGll
bnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJvdW5jaW5nU3ZnSW1hZ2Vz
QmVuY2htYXJrLiAKKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuanM6IEFkZGVkLgorICAg
ICAgICAoQm91bmNpbmdTdmdTaGFwZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUu
CisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlLnByb3RvdHlwZS5fY3JlYXRlQ2lyY2xlKTogUmV0
dXJucyBhIG5ld2x5IGNyZWF0ZWQgU1ZHIDxjaXJjbGU+IGVsZW1lbnQuCisgICAgICAgIChCb3Vu
Y2luZ1N2Z1NoYXBlLnByb3RvdHlwZS5fY3JlYXRlUmVjdCk6IFJldHVybnMgYSBuZXdseSBjcmVh
dGVkIFNWRyA8cmVjdD4gZWxlbWVudC4gCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlLnByb3Rv
dHlwZS5fbW92ZSk6IE1vdmUgdGhlIHBhcnRpY2xlIHRvIGEgbmV3IGxvY2F0aW9uLiBBcHBseSB0
cmFuc2Zvcm0gc2luY2UgaXQgZG9lcyBub3QgcmVxdWlyZSBsYXlvdXQuCisgICAgICAgIChCb3Vu
Y2luZ1N2Z1NoYXBlLnByb3RvdHlwZS5hbmltYXRlKTogUm90YXRlcyBhbmQgbW92ZXMgdGhlIHNo
YXBlIHRvIGEgbmV3IGxvY2F0aW9uLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hh
cGVzU3RhZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLgorICAgICAg
ICAoQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuZW5zdXJlQ2xpcFN0YXJJc0NyZWF0
ZWQpOiBFbnN1cmUgdGhlIGEgPGNsaXBQYXRoPiBlbGVtZW50IHdpdGggaWQ9InN0YXItY2xpcCIg
aXMgY3JlYXRlZC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmVu
c3VyZURlZnNJc0NyZWF0ZWQpOiBFbnN1cmUgYSA8ZGVmcz4gZWxlbWVudCBpcyBjcmVhdGVkLgor
ICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlR3JhZGllbnQp
OiBDcmVhdGVzIGEgPGxpbmVhckdyYWRpZW50PiBlbGVtZW50LgorICAgICAgICAoQm91bmNpbmdT
dmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuX2NyZWF0ZURlZnMpOiBDcmVhdGVzIGEgbmV3IDxkZWZz
PiBlbGVtZW50LgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuX2Ny
ZWF0ZUNsaXBTdGFyKTogQ3JlYXRlIGEgbmV3IDxjbGlwUGF0aD4gZWxlbWVudCB3aXRoIGlkPSJz
dGFyLWNsaXAiLgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3Jl
YXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlwZSBCb3VuY2luZ1N2Z1NoYXBl
LgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxs
QmVSZW1vdmVkKTogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZm9ybSB0aGUgcGFy
ZW50IGNoaWxkcmVuIGxpc3QuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNC
ZW5jaG1hcmspOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay4KKyAg
ICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6
IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UuCisgICAgICAg
ICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2Yg
dHlwZSBCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyay4KKyAgICAgICAgCisgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy9yZXNvdXJjZXM6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVz
dHMvcmVzb3VyY2VzL2JlbmNobWFyay5jc3M6IEFkZGVkLgorICAgICAgICBBIHNoYXJlZCBjc3Mg
Zm9yIGFsbCB0aGUgdGVzdCBwYWdlcy4gSXQgc2V0cyB0aGUgY3NzIHByb3BlcnRpZXMgZm9yIHRo
ZSB0ZXN0IHBhZ2UgYW5kIHRoZSBzdGFnZSBlbGVtZW50LgorICAgICAgICAKKyAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9iZW5jaG1hcmsuanM6IEFkZGVkLgorICAgICAgICAo
QmVuY2htYXJrU3RhdGUpOiBUcmFja3MgdGhlIHN0YXRlIG9mIHRoZSBiZW5jaG1hcmsgdGVzdC4K
KyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5fdGltZU9mZnNldCk6IFJldHVybnMg
dGhlIHRpbWVPZmZzZXQgb2YgYSBzdGFnZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3Rv
dHlwZS5fbWVzc2FnZSk6IFJldHVybnMgdGhlIG1lc3NhZ2Ugb2YgYSBzdGFnZS4KKyAgICAgICAg
KEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS51cGRhdGUpOiBTZXRzIHRoZSBjdXJyZW50VGltZU9m
ZnNldCB0byBhIG5ldyB2YWx1ZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5z
YW1wbGluZ1RpbWVPZmZzZXQpOiBSZXR1cm5zIHRoZSB0aW1lT2Zmc2V0IG9mIHRoZSBzYW1wbGlu
ZyBzdGFnZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5jdXJyZW50U3RhZ2Up
OiBSZXR1cm5zIHRoZSBjdXJyZW50IHN0YWdlIG9mIHRoZSBiZW5jaG1hcmsuCisgICAgICAgIChC
ZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuY3VycmVudE1lc3NhZ2UpOiBSZXR1cm5zIHRoZSBtZXNz
YWdlIG9mIHRoZSBjdXJyZW50IHN0YWdlIGFuZCB0aW1lT2Zmc2V0LgorICAgICAgICAoQmVuY2ht
YXJrU3RhdGUucHJvdG90eXBlLmN1cnJlbnRQcm9ncmVzcyk6IFJldHVybnMgYSBwZXJjZW50YWdl
IG9mIGhvdyBtdWNoIHRoZSBiZW5jaG1hcmsgaXMgcnVubmluZy4KKyAgICAgICAgCisgICAgICAg
IChBbmltYXRvcik6IE1hbmFnZXMgYW5pbWF0aW5nIHRoZSB0ZXN0LgorICAgICAgICAoQW5pbWF0
b3IucHJvdG90eXBlLnN0YXJ0KTogQ2FsbGVkIGlmIGFuaW1hdGluZyB1c2luZyBzZXRJbnRlcnZh
bCBpcyByZXF1ZXN0ZWQuCisgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUudGltZURlbHRhKTog
UmV0dXJucyB0aGUgY3VycmVudCB0aW1lRGVsdGEgCisgICAgICAgIChBbmltYXRvci5wcm90b3R5
cGUuYW5pbWF0ZSk6IE1hbmFnZXMgdGhlIHRlc3QgYW5pbWF0aW9uLgorICAgICAgICAoQW5pbWF0
b3IucHJvdG90eXBlLmFuaW1hdGVMb29wKTogQ2FsbGVkIGlmIGFuaW1hdGluZyB1c2luZyByZXF1
ZXN0QW5pbWF0aW9uRnJhbWUgaXMgcmVxdWVzdGVkLiAKKyAgICAgICAgCisgICAgICAgIChCZW5j
aG1hcmspOiBNYW5hZ2VzIHJ1bm5pbmcgdGhlIHRlc3QgYmVuY2htYXJrIGFuZCByZWNvcmRpbmcg
dGhlIHNhbXBsZWQgZGF0YS4KKyAgICAgICAgKEJlbmNobWFyay5wcm90b3R5cGUucGFyc2VQYXJh
bWV0ZXJzKTogUGFyc2VzIHRoZSB0ZXN0IHBhcmFtZXRlcnMuCisgICAgICAgIChCZW5jaG1hcmsu
cHJvdG90eXBlLnN0YXJ0KTogU3RhcnRzIHRoZSBiZW5jaG1hcmsuCisgICAgICAgIChCZW5jaG1h
cmsucHJvdG90eXBlLnVwZGF0ZSk6IENhbGxlZCBmcm9tIHRoZSBhbmltYXRvci5hbmltYXRlKCkg
dG8gY2hhbmdlIHRoZSBjb21wbGV4aXR5IG9mIHRoZSB0ZXN0LgorICAgICAgICAoQmVuY2htYXJr
LnByb3RvdHlwZS5yZWNvcmQpOiBTaG93cyB0aGUgY3VycmVudCAobm90IGZpbmFsKSByZXN1bHRz
IG9mIHRoZSBiZW5jaG1hcmsuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnJlc29sdmVX
aGVuRmluaXNoZWQpOiBTcGlucyB1bnRpbCB0aGUgYmVuY2htYXJrIGlzIGZpbmlzaGVkIGFuZCBy
ZXR1cm5zIGl0cyByZXN1bHRzLgorICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS5ydW4pOiBT
dGFydHMgdGhlIHRlc3QsIHJ1bnMgaXQsIHdhaXRzIHVudGlsIGl0IGlzIGZpbmlzaGVkIGFuZCBy
ZXR1cm4gaXRzIHJlc3VsdHMuCisgICAgICAgICh3aW5kb3cucnVuQmVuY2htYXJrKTogQ2FsbGVk
IGZyb20gdGhlIGJlbmNobWFyayBydW5uZXIgdGhyb3VnaCB0aGUgc3VpdGUgY29udHJvbGxlciBy
dW4tY2FsbGJhY2suIAorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291
cmNlcy9tYXRoLmpzOiBBZGRlZC4KKyAgICAgICAgKE1hdHJpeCk6IEEgbWF0cml4IG9iamVjdC4K
KyAgICAgICAgKFZlY3RvcjMpOiBBIHZlY3RvciBvZiBzaXplIDMgb2JqZWN0LgorICAgICAgICAo
TWF0cml4Myk6IEEgbWF0cml4IG9mIHNpemUgM3gzIG9iamVjdC4KKyAgICAgICAgCisgICAgICAg
IChDb250cm9sbGVyKTogQ2xvc2VkLWxvb3AgY29udHJvbGxlciBmb3IgYSBzZXQtcG9pbnQgeS4K
KyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLl9zYXQpOiBMaW1pdHMgdGhlIG91dHB1dCB0
byBhIGNlcnRhaW4gcmFuZ2UuCisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS50dW5lKTog
cHJvZHVjZXMgdGhlIHBpZCBmb3IgdGhlIGJlbmNobWFyayB3aGljaCBpcyB0cmVhdGVkIGFzIGEg
Y2xvc2VkLWxvb3Agc3lzdGVtLgorICAgICAgICAKKyAgICAgICAgKEVzdGltYXRvcik6IEltcGxl
bWVudCBLYWxtYW4gZmlsdGVyIHRvIGdldCBhbiBlc3RpbWF0ZSBmb3IgYSBzYW1wbGVkIGRhdGEg
cG9pbnQuCisgICAgICAgIChFc3RpbWF0b3IucHJvdG90eXBlLmVzdGltYXRlKTogUmV0dXJucyBh
biBlc3RpbWF0ZSBmb3IgZm9yIGEgc2FtcGxlZCBkYXRhIHBvaW50LgorICAgICAgICAKKyAgICAg
ICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qczogQWRkZWQuCisgICAgICAg
IChTdGFnZSk6IEEgYmFzZSBjbGFzcyBmb3IgbWFuYWdpbmcgdGhlIHRlc3QgY29tcGxleGl0eSBh
bmQgdGVzdCBhbmltYXRpb24uCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUuc2l6ZSk6IFJldHVy
bnMgdGhlIHNpemUgb2YgdGhlIHN0YWdlIGV4Y2x1ZGluZyB0aGUgQ1NTIHBhZGRpbmcuCisgICAg
ICAgIChTdGFnZS5wcm90b3R5cGUuY2xlYXIpOiBDbGVhcnMgdGhlIHN0YWdlIGZyb20gYWxsIGl0
cyBhbmltYXRpb24gZWxlbWVudHMuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tKTog
UmV0dXJucyBhIHJhbmRvbSBmbG9hdC4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5yYW5kb21J
bnQpOiBSZXR1cm5zIGEgcmFuZG9tIGludGVnZXIuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUu
cmFuZG9tUG9zaXRpb24pOiBSZXR1cm5zIGEgcmFuZG9tIHBvc2l0aW9uLgorICAgICAgICAoU3Rh
Z2UucHJvdG90eXBlLnJhbmRvbVZlbG9jaXR5KTogUmV0dXJucyBhIHJhbmRvbSB2ZWxvY2l0eS4K
KyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5yYW5kb21BbmdsZSk6IFJldHVybnMgYSByYW5kb20g
YW5nbGUuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tQ29sb3IpOiBSZXR1cm5zIGEg
cmFuZG9tIGNvbG9yIG5vdCB0b28gZGFyayBhbmQgbm90IHRvbyBsaWdodC4KKyAgICAgICAgCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzOiBBZGRlZC4K
KyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuX3BhcnNlKTogR2l2ZW4gYSBzZXBhcmF0
b3IgY2hhcmFjdGVyLCBpdCBwYXJlc2VzIGEgc3RyaW5nIHRvIGEgc2V0IG9mIDxrZXksIHZhbHVl
PiBwYWlycy4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQucGFyc2VQYXJhbWV0ZXJz
KTogUGFyc2VzIGEgdGVzdCBwYXJhbWV0ZXJzLgorICAgICAgICAod2luZG93LmJlbmNobWFya0Ns
aWVudC5wYXJzZUFyZ3VtZW50cyk6IFBhcnNlcyBhIHRhZyBhcmd1bWVudHMuCisgICAgICAgICh3
aW5kb3cuYmVuY2htYXJrQ2xpZW50LmV4dGVuZE9iamVjdCk6IEFkZHMgdGhlIGF0dHJpYnV0ZXMg
YW5kIHRoZWlyIHZhbHVlcyBvZiBhbiBvYmplY3QgdG8gYW5vdGhlciBvYmplY3QuCisgICAgICAg
ICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNvcHlPYmplY3QpOiBDb3BpZXMgdGhlIGF0dHJpYnV0
ZXMgYW5kIHRoZWlyIHZhbHVlcyBvZiBhbiBvYmplY3QgdG8gYSBuZXcgb2JqZWN0LgorICAgICAg
ICAod2luZG93LmJlbmNobWFya0NsaWVudC5tZXJnZU9iamVjdHMpOiBDb3BpZXMgdGhlIGF0dHJp
YnV0ZXMgYW5kIHRoZWlyIHZhbHVlcyBvZiB0d28gb2JqZWN0cyB0byBhIG5ldyBvYmplY3QuCisg
ICAgICAgICh3aW5kb3cucnVuQmVuY2htYXJrKTogQ2FsbGVkIGZyb20gdGhlIGJlbmNobWFyayBy
dW5uZXIgdGhyb3VnaCB0aGUgc3VpdGUgY29udHJvbGxlciBydW4tY2FsbGJhY2suCisgICAgICAg
IAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnBuZzogQWRk
ZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcuc3ZnOiBB
ZGRlZC4KKyAgICAgICAgSW1hZ2VzIHdoaWNoIGFyZSBzaGFyZWQgYnkgYWxsIHRoZSB0ZXN0cy4K
KyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZXh0OiBBZGRlZC4KKyAgICAg
ICAgKiBBbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgVGhpcyB0ZXN0IHN0YWNrcyBjb250YWluZXIgPGRpdj4gZWxlbWVudHMgb24gdG9wIG9m
IGVhY2ggb3RoZXIuIFRoZSB0ZXN0CisgICAgICAgIGFkZHMgdGV4dCBpdGVtcyB0byB0b3Btb3N0
IGNvbnRhaW5lciA8ZGl2PiB1bnRpbCBpdCBpcyBmdWxsLiBXaGVuIGl0IGlzCisgICAgICAgIGZ1
bGwsIGEgbmV3IGNvbnRhaW5lciA8ZGl2PiBpcyBjcmVhdGVkLgorICAgICAgICAKKyAgICAgICAg
KiBBbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgKiBBbmlt
b21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanM6IEFkZGVkLgorICAg
ICAgICAoTGF5ZXJpbmdUZXh0QW5pbWF0b3IpOiBBIHN1YiBjbGFzcyBvZiBBbmltYXRvci4KKyAg
ICAgICAgKExheWVyaW5nVGV4dEFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlKTogRm9yY2VzIGEg
cmVkcmF3IHRvIGhhcHBlbi4gSXQgY2FsbHMgdGhlIHN0YWdlIGFuaW1hdGUoKSBmdW5jdGlvbi4K
KyAgICAgICAgCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZSk6IFJlcHJlc2VudHMgdGhlIGNv
bnRhaW5lciBvZiBhbGwgdGhlIHN0YWNrZWQgdGV4dCBsYXllcnMuCisgICAgICAgIChMYXllcmlu
Z1RleHRTdGFnZS5wYXJzZVRleHRJdGVtKTogUGFyc2VzIGEgdGV4dEl0ZW0gd2hpY2ggbWF5IGJl
IGFuIG9wZW5pbmcgdGFnLCBhIGNsb3NpbmcgdGFnIG9yIGEgc2VsZi1jbG9zaW5nIHRhZy4KKyAg
ICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmlzT3BlbmluZ1RleHRJdGVtKTogUmV0dXJucyB0cnVl
IGlmIHRoZSB0ZXh0SXRlbSBpcyBhbiBvcGVuaW5nIHRhZyBlLmcuICc8b2w+Jy4KKyAgICAgICAg
KExheWVyaW5nVGV4dFN0YWdlLmlzQ2xvc2luZ1RleHRJdGVtKTogUmV0dXJucyB0cnVlIGlmICB0
aGUgdGV4dEl0ZW0gaXMgYW4gY2xvc2luZyB0YWcgZS5nLiAnPC9vbD4uCisgICAgICAgIChMYXll
cmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFncy5MYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXMu
bWFwKTogQ2FsY3VsYXRlcyBhbmQgc3RvcmVzIGlzT3BlbmluZyBhbmQgaXNDbG9zaW5nIGZsYWdz
IGZvciBlYWNoIHRleHRJdGVtLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDb2xvcmFi
bGVUZXh0SXRlbSk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgdGV4dEl0ZW0gaXMgc2VsZi1jbG9zaW5n
IHRhZyBlLmcuICc8cD4uLi48L3A+Jy4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmlzSW5z
ZXJ0YWJsZVRleHRJdGVtKTogUmV0dXJucyB0cnVlIGlmIHRoZSB0ZXh0SXRlbXMgY2F1c2VzIGEg
bmV3IGVsZW1lbnQgdG8gYmUgYWRkZWQgdG8gdGhlIHRleHQgbGF5ZXJzLgorICAgICAgICAoTGF5
ZXJpbmdUZXh0U3RhZ2UuY29sb3JhYmxlVGV4dEl0ZW1zLkxheWVyaW5nVGV4dFN0YWdlLnRleHRJ
dGVtc0ZsYWdzLmZpbHRlcik6IE51bWJlciBvZiBjb2xvcmFibGUgdGV4dEl0ZW1zLgorICAgICAg
ICAoTGF5ZXJpbmdUZXh0U3RhZ2UuaW5zZXJ0YWJsZVRleHRJdGVtcy5MYXllcmluZ1RleHRTdGFn
ZS50ZXh0SXRlbXNGbGFncy5maWx0ZXIpOiBOdW1iZXIgb2YgaW5zZXJ0YWJsZSB0ZXh0SXRlbXMu
CisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5jb2xvckluZGV4VG9UZXh0RWxlbWVudEluZGV4
KTogTWFwcyBmcm9tIGNvbG9ySW5kZXggWzAuLmNvbG9yYWJsZVRleHRJdGVtcy0xXSB0byB0ZXh0
RWxlbWVudEluZGV4IFswLi5pbnNlcnRhYmxlVGV4dEl0ZW1zLTFdLgorICAgICAgICAoTGF5ZXJp
bmdUZXh0U3RhZ2UucHJvdG90eXBlLl9uZXh0VGV4dEl0ZW0pOiBNb3ZlcyB0aGUgX3RleHRJdGVt
SW5kZXggb25lIHN0ZXAgZm9yd2FyZCBpbiBhIGxvb3AgWzAuLkxheWVyaW5nVGV4dFN0YWdlLnRl
eHRJdGVtcy5sZW5ndGgtMV0uCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUu
X3ByZXZpb3VzVGV4dEl0ZW0pOiBNb3ZlcyB0aGUgX3RleHRJdGVtSW5kZXggb25lIHN0ZXAgYmFj
a3dhcmQgaW4gYSBsb29wLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9w
dXNoVGV4dEVsZW1lbnQpOiBDcmVhdGVzIGEgbmV3IHRleHRJdGVtRWxlbWVudCBhbmQgYWRkcyBp
dCB0byB0aGUgdG9wbW9zdCBjb250YWluZXIgPGRpdj4uCisgICAgICAgIChMYXllcmluZ1RleHRT
dGFnZS5wcm90b3R5cGUuX3BvcFRleHRFbGVtZW50KTogUmVtb3ZlcyB0aGUgbGFzdCB0ZXh0SXRl
bUVsZW1lbnQgZnJvbSB0aGUgdG9wbW9zdCBjb250YWluZXIgPGRpdj4uCisgICAgICAgIChMYXll
cmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX2NvbG9yVGV4dEl0ZW0pOiBDaGFuZ2VzIHRoZSBiYWNr
Z3JvdW5kIGNvbG9yIG9mIGEgc2luZ2xlIGNvbG9yYWJsZSB0ZXh0RWxlbWVudC4gVGhlIGluZGV4
IGFkdmFuY2VzIGluIGEgY2lyY2xlIFswLi5jb2xvcmFibGVUZXh0SXRlbXMtMV0uCisgICAgICAg
IChMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IENoYW5nZXMgdGhlIGJhY2tn
cm91bmQgY29sb3IgYW5kIHRoZSB0ZXh0IGNvbG9yIG9mIHRoZSB0ZXh0RWxlbWVudHMgc3VjaCB0
aGF0IGEgcmVkcmF3IGlzIGVuZm9yY2VkLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJv
dG90eXBlLnR1bmUpOiBBZGRzIG9yIHJlbW92ZXMgdGV4dEVsZW1lbnRzIHRvIHRoZSBzdGFnZS4K
KyAgICAgICAgCisgICAgICAgIChMYXllcmluZ1RleHRCZW5jaG1hcmspOiBSdW5zIHRoZSBiZW5j
aG1hcmsgZm9yIHRoZSBsYXllcmluZyB0ZXh0IHRlc3QuCisgICAgICAgIChMYXllcmluZ1RleHRC
ZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUg
TGF5ZXJpbmdUZXh0U3RhZ2UuCisgICAgICAgIChMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90
eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyBhbiBhbmltYXRvciBvZiB0eXBlIExheWVyaW5n
VGV4dEFuaW1hdG9yLgorICAgICAgICAoTGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZS50
dW5lKTogVHVuZXMgdGhlIHRlc3QgdGhyb3VnaCB0aGUgY3VycmVudCBzdGFnZS4KKyAgICAgICAg
KExheWVyaW5nVGV4dEJlbmNobWFyay5wcm90b3R5cGUuY2xlYXIpOiBDbGVhcnMgdGhlIHRlc3Qg
dGhyb3VnaCB0aGUgY3VycmVudCBzdGFnZS4KKyAgICAgICAgKExheWVyaW5nVGV4dEJlbmNobWFy
ay5wcm90b3R5cGUuc2hvd1Jlc3VsdHMpOiBTaG93cyB0aGUgcmVzdWx0cy9wcm9ncmVzcyB0aHJv
dWdoIGl0cyByZWNvcmRUYWJsZSBhbmQgcHJvZ3Jlc3NCYXIKKyAgICAgICAgKHdpbmRvdy5iZW5j
aG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIExheWVyaW5n
VGV4dEJlbmNobWFyay4KKwogMjAxNS0wOC0yNyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFtFRkxdIFJFR1JFU1NJT04ocjE4ODc5Myk6IEl0IG1hZGUg
MjAwIGxheW91dCB0ZXN0cyBhbmQgQmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBwZXIuaHRtbCBw
ZXJmb3JtYW5jZSB0ZXN0IGZhaWwKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9y
ZXNvdXJjZXMvYWxnb3JpdGhtLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9hbGdvcml0aG0uanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMDIgQEAKK0FycmF5LnByb3RvdHlwZS5zd2FwID0gZnVuY3Rpb24oaSwgaikg
eworICAgIHZhciB0ID0gdGhpc1tpXTsKKyAgICB0aGlzW2ldID0gdGhpc1tqXTsKKyAgICB0aGlz
W2pdID0gdDsKKyAgICByZXR1cm4gdGhpczsKK30KKworZnVuY3Rpb24gSGVhcChtYXhTaXplLCBj
b21wYXJlKSB7CisgICAgdGhpcy5fbWF4U2l6ZSA9IG1heFNpemU7CisgICAgdGhpcy5fY29tcGFy
ZSA9IGNvbXBhcmU7CisgICAgdGhpcy5fc2l6ZSA9IDA7CisgICAgdGhpcy5fdmFsdWVzID0gbmV3
IEFycmF5KHRoaXMuX21heFNpemUpOworfQorCitIZWFwLnByb3RvdHlwZSA9IHsKKyAgICBfcGFy
ZW50SW5kZXggOiBmdW5jdGlvbihpKSB7CisgICAgICAgIHJldHVybiBpID4gMCA/IE1hdGguZmxv
b3IoKGkgLSAxKSAvIDIpIDogLTE7CisgICAgfSwKKyAgICBfbGVmdEluZGV4IDogZnVuY3Rpb24o
aSkgeworICAgICAgICByZXR1cm4gaSAqIDIgKyAxIDwgdGhpcy5fc2l6ZSA/IGkgKiAyICsgMSA6
IC0xOworICAgIH0sCisgICAgX3JpZ2h0SW5kZXggOiBmdW5jdGlvbihpKSB7CisgICAgICAgIHJl
dHVybiBpICogMiArIDIgPCB0aGlzLl9zaXplID8gaSAqIDIgKyAyIDogLTE7CisgICAgfSwKKyAg
ICAvLyBSZXR1cm5zIHRoZSBjaGlsZCBpbmRleCB0aGF0IG1heSB2aW9sYXRlIHRoZSBoZWFwIHBy
b3BlcnR5IGF0IGluZGV4IGkKKyAgICBfY2hpbGRJbmRleCA6IGZ1bmN0aW9uKGkpIHsKKyAgICAg
ICAgdmFyIGwgPSB0aGlzLl9sZWZ0SW5kZXgoaSk7CisgICAgICAgIHZhciByID0gdGhpcy5fcmln
aHRJbmRleChpKTsKKworICAgICAgICBpZiAobCAhPSAtMSAmJiByICE9IC0xKQorICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX2NvbXBhcmUodGhpcy5fdmFsdWVzW2xdLCB0aGlzLl92YWx1ZXNbcl0p
ID4gMCA/IGwgOiByOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGwgIT0gLTEgPyBsIDogcjsK
KyAgICB9LAorICAgIGluaXQgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5fc2l6ZSA9IDA7
CisgICAgfSwKKyAgICB0b3AgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuICF0aGlzLl9z
aXplID8gTmFOIDogdGhpcy5fdmFsdWVzWzBdOworICAgIH0sCisgICAgcHVzaCA6IGZ1bmN0aW9u
KHZhbHVlKSB7CisgICAgICAgIGlmICh0aGlzLl9zaXplID09IHRoaXMuX21heFNpemUpIHsKKyAg
ICAgICAgICAgIC8vIElmIHNpemUgaXMgYm91bmRlZCBhbmQgdGhlIG5ldyB2YWx1ZSBjYW4gYmUg
YSBwYXJlbnQgb2YgdGhlIHRvcCgpCisgICAgICAgICAgICAvLyBpZiB0aGUgc2l6ZSB3ZXJlIHVu
Ym91bmRlZCwganVzdCBpZ25vcmUgdGhlIG5ldyB2YWx1ZS4KKyAgICAgICAgICAgIGlmICh0aGlz
Ll9jb21wYXJlKHZhbHVlLCB0aGlzLnRvcCgpKSA+IDApCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgdGhpcy5wb3AoKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl92YWx1
ZXNbdGhpcy5fc2l6ZSsrXSA9IHZhbHVlOworICAgICAgICB0aGlzLl9idWJibGUodGhpcy5fc2l6
ZSAtIDEpOworICAgIH0sCisgICAgcG9wIDogZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICghdGhp
cy5fc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBOYU47CisgICAgICAgIAorICAgICAgICB0aGlz
Ll92YWx1ZXNbMF0gPSB0aGlzLl92YWx1ZXNbLS10aGlzLl9zaXplXTsKKyAgICAgICAgdGhpcy5f
c2luaygwKTsKKyAgICB9LAorICAgIF9idWJibGUgOiBmdW5jdGlvbihpKSB7CisgICAgICAgIC8v
IEZpeGVzIHRoZSBoZWFwIHBvcGVydHkgYXQgaW5kZXggaSBnaXZlbiB0aGF0IHBhcmVudCBpcyB0
aGUgb25seSBub2RlIHRoYXQKKyAgICAgICAgLy8gbWF5IHZpYWxvdGUgdGhlIGhlYXAgcHJvcGVy
dHkuCisgICAgICAgIGZvciAodmFyIHBpID0gdGhpcy5fcGFyZW50SW5kZXgoaSk7IHBpICE9IC0x
OyBpID0gcGksIHBpID0gdGhpcy5fcGFyZW50SW5kZXgocGkpKSB7CisgICAgICAgICAgICBpZiAo
dGhpcy5fY29tcGFyZSh0aGlzLl92YWx1ZXNbcGldLCB0aGlzLl92YWx1ZXNbaV0pID4gMCkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMu
X3ZhbHVlcy5zd2FwKHBpLCBpKTsKKyAgICAgICAgfQorICAgIH0sCisgICAgX3NpbmsgOiBmdW5j
dGlvbihpKSB7CisgICAgICAgIC8vIEZpeGVzIHRoZSBoZWFwIHBvcGVydHkgYXQgaW5kZXggaSBn
aXZlbiB0aGF0IGVhY2ggb2YgdGhlIGxlZnQgYW5kIHRoZSByaWdodAorICAgICAgICAvLyBzdWIt
dHJlZXMgc2F0aXNmaWVzIHRoZSBoZWFwIHByb3BlcnR5LgorICAgICAgICBmb3IgKHZhciBjaSA9
IHRoaXMuX2NoaWxkSW5kZXgoaSk7IGNpICE9IC0xOyBpID0gY2ksIGNpID0gdGhpcy5fY2hpbGRJ
bmRleChjaSkpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9jb21wYXJlKHRoaXMuX3ZhbHVlc1tp
XSwgdGhpcy5fdmFsdWVzW2NpXSkgPiAwKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgCisgICAgICAgICAgICB0aGlzLl92YWx1ZXMuc3dhcChjaSwgaSk7CisgICAgICAgIH0K
KyAgICB9LAorICAgIHN0ciA6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgb3V0ID0gIkhlYXBb
IiArIHRoaXMuX3NpemUgKyAiXSA9IFsiOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRo
aXMuX3NpemU7ICsraSkgeworICAgICAgICAgICAgb3V0ICs9IHRoaXMuX3ZhbHVlc1tpXTsKKyAg
ICAgICAgICAgIGlmIChpIDwgdGhpcy5fc2l6ZSAtIDEpCisgICAgICAgICAgICAgICAgb3V0ICs9
ICIsICI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG91dCArICJdIjsKKyAgICB9LAorICAg
IHZhbHVlcyA6IGZ1bmN0aW9uKHNpemUpIHsKKyAgICAgICAgLy8gUmV0dXJucyB0aGUgbGFzdCAi
c2l6ZSIgaGVhcCBlbGVtZW50cyB2YWx1ZXMuCisgICAgICAgIHZhciB2YWx1ZXMgPSB0aGlzLl92
YWx1ZXMuc2xpY2UoMCwgdGhpcy5fc2l6ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZXMuc29ydCh0
aGlzLl9jb21wYXJlKS5zbGljZSgwLCBNYXRoLm1pbihzaXplLCB0aGlzLl9zaXplKSk7CisgICAg
fQorfQorCit2YXIgQWxnb3JpdGhtID0geworICAgIGNyZWF0ZU1pbkhlYXAgOiBmdW5jdGlvbiht
YXhTaXplKSB7CisgICAgICAgIHJldHVybiBuZXcgSGVhcChtYXhTaXplLCBmdW5jdGlvbihhLCBi
KSB7IHJldHVybiBiIC0gYTsgfSk7CisgICAgfSwKKyAgICBjcmVhdGVNYXhIZWFwIDogZnVuY3Rp
b24obWF4U2l6ZSkgeworICAgICAgICByZXR1cm4gbmV3IEhlYXAobWF4U2l6ZSwgZnVuY3Rpb24o
YSwgYikgeyByZXR1cm4gYSAtIGI7IH0pOworICAgIH0KK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvbWFpbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL21haW4uanMJKHJldmlzaW9uIDApCisrKyBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL21haW4uanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwyNDMgQEAKK2Z1bmN0aW9uIFBvaW50KHgsIHkpIHsKKyAgICB0aGlzLnggPSB4
OworICAgIHRoaXMueSA9IHk7Cit9CisKK1BvaW50LnByb3RvdHlwZSA9IHsKKyAgICAvLyBVc2Vk
IHdoZW4gdGhlIHBvaW50IG9iamVjdCBpcyB1c2VkIGFzIGEgc2l6ZSBvYmplY3QKKyAgICB3aWR0
aCA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy54OworICAgIH0sCisgICAgLy8g
VXNlZCB3aGVuIHRoZSBwb2ludCBvYmplY3QgaXMgdXNlZCBhcyBhIHNpemUgb2JqZWN0ICAgIAor
ICAgIGhlaWdodCA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy55OworICAgIH0s
CisgICAgY2VudGVyIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhp
cy54IC8gMiwgdGhpcy55IC8gMik7CisgICAgfSwKKyAgICBhZGQgOiBmdW5jdGlvbihvdGhlcikg
eworICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMueCArIG90aGVyLngsIHRoaXMueSArIG90
aGVyLnkpOworICAgIH0sICAgIAorICAgIHN1YnRyYWN0IDogZnVuY3Rpb24ob3RoZXIpIHsKKyAg
ICAgICAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLnggLSBvdGhlci54LCB0aGlzLnkgLSBvdGhlci55
KTsKKyAgICB9LAorICAgIG11bHRpcGx5IDogZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgcmV0
dXJuIG5ldyBQb2ludCh0aGlzLnggKiBvdGhlci54LCB0aGlzLnkgKiBvdGhlci55KTsKKyAgICB9
LAorICAgIG1vdmUgOiBmdW5jdGlvbihhbmdsZSwgdmVsb2NpdHksIHRpbWVEZWx0YSkgeworICAg
ICAgICB2YXIgeCA9IHRoaXMueCArIE1hdGguY29zKGFuZ2xlKSAqIHZlbG9jaXR5ICogKHRpbWVE
ZWx0YSAvIDEwMDApOworICAgICAgICB2YXIgeSA9IHRoaXMueSArIE1hdGguc2luKGFuZ2xlKSAq
IHZlbG9jaXR5ICogKHRpbWVEZWx0YSAvIDEwMDApOworICAgICAgICByZXR1cm4gbmV3IFBvaW50
KHgsIHkpOworICAgIH0KK30KKworZnVuY3Rpb24gSW5zZXRzKHRvcCwgcmlnaHQsIGJvdHRvbSwg
bGVmdCkgeworICAgIHRoaXMudG9wID0gdG9wOworICAgIHRoaXMucmlnaHQgPSByaWdodDsKKyAg
ICB0aGlzLmJvdHRvbSA9IGJvdHRvbTsKKyAgICB0aGlzLmxlZnQgPSBsZWZ0OworfQorCitJbnNl
dHMucHJvdG90eXBlID0geworICAgIHdpZHRoIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVy
biB0aGlzLmxlZnQgKyB0aGlzLnJpZ2h0OworICAgIH0sCisgICAgaGVpZ2h0IDogZnVuY3Rpb24o
KSB7CisgICAgICAgIHJldHVybiB0aGlzLnRvcCArIHRoaXMuYm90dG9tOworICAgIH0KK30KKwor
ZnVuY3Rpb24gU2ltcGxlUHJvbWlzZSgpIHsKKyAgICB0aGlzLl9jaGFpbmVkUHJvbWlzZSA9IG51
bGw7CisgICAgdGhpcy5fY2FsbGJhY2sgPSBudWxsOworfQorCitTaW1wbGVQcm9taXNlLnByb3Rv
dHlwZS50aGVuID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7CisgICAgaWYgKHRoaXMuX2NhbGxiYWNr
KQorICAgICAgICB0aHJvdyAiU2ltcGxlUHJvbWlzZSBkb2Vzbid0IHN1cHBvcnQgbXVsdGlwbGUg
Y2FsbHMgdG8gdGhlbiI7CisgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICB0aGlz
Ll9jaGFpbmVkUHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgIAorICAgIGlmICh0aGlz
Ll9yZXNvbHZlZCkKKyAgICAgICAgdGhpcy5yZXNvbHZlKHRoaXMuX3Jlc29sdmVkVmFsdWUpOwor
CisgICAgcmV0dXJuIHRoaXMuX2NoYWluZWRQcm9taXNlOworfQorCitTaW1wbGVQcm9taXNlLnBy
b3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgaWYgKCF0aGlzLl9jYWxs
YmFjaykgeworICAgICAgICB0aGlzLl9yZXNvbHZlZCA9IHRydWU7CisgICAgICAgIHRoaXMuX3Jl
c29sdmVkVmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBy
ZXN1bHQgPSB0aGlzLl9jYWxsYmFjayh2YWx1ZSk7CisgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9m
IFNpbXBsZVByb21pc2UpIHsKKyAgICAgICAgdmFyIGNoYWluZWRQcm9taXNlID0gdGhpcy5fY2hh
aW5lZFByb21pc2U7CisgICAgICAgIHJlc3VsdC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsgY2hh
aW5lZFByb21pc2UucmVzb2x2ZShyZXN1bHQpOyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgdGhp
cy5fY2hhaW5lZFByb21pc2UucmVzb2x2ZShyZXN1bHQpOworfQorCitmdW5jdGlvbiBPcHRpb25z
KHRlc3RJbnRlcnZhbCwgZnJhbWVSYXRlKSB7CisgICAgdGhpcy50ZXN0SW50ZXJ2YWwgPSB0ZXN0
SW50ZXJ2YWw7CisgICAgdGhpcy5mcmFtZVJhdGUgPSBmcmFtZVJhdGU7Cit9CisKK2Z1bmN0aW9u
IFByb2dyZXNzQmFyKGVsZW1lbnQsIHJhbmdlcykgeworICAgIHRoaXMuZWxlbWVudCA9IGVsZW1l
bnQ7CisgICAgdGhpcy5yYW5nZXMgPSByYW5nZXM7CisgICAgdGhpcy5jdXJyZW50UmFuZ2UgPSAw
OworfQorCitQcm9ncmVzc0Jhci5wcm90b3R5cGUgPSB7CisgICAgX3Byb2dyZXNzVG9QZXJjZW50
IDogZnVuY3Rpb24ocHJvZ3Jlc3MpIHsKKyAgICAgICAgcmV0dXJuIHByb2dyZXNzICogKDEwMCAv
IHRoaXMucmFuZ2VzKTsKKyAgICB9LAorICAgIGluY1JhbmdlIDogZnVuY3Rpb24oKSB7CisgICAg
ICAgICsrdGhpcy5jdXJyZW50UmFuZ2U7CisgICAgfSwKKyAgICBzZXRQb3MgOiBmdW5jdGlvbihw
cm9ncmVzcykgeworICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLl9wcm9n
cmVzc1RvUGVyY2VudCh0aGlzLmN1cnJlbnRSYW5nZSArIHByb2dyZXNzKSArICIlIjsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIFJlY29yZFRhYmxlKGVsZW1lbnQpIHsKKyAgICB0aGlzLmVsZW1lbnQg
PSBlbGVtZW50OworICAgIHRoaXMuY2xlYXIoKTsKK30KKworUmVjb3JkVGFibGUucHJvdG90eXBl
ID0geworICAgIGNsZWFyIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuZWxlbWVudC5pbm5l
ckhUTUwgPSAiIjsKKyAgICB9LAorICAgIF9zaG93VGl0bGVzIDogZnVuY3Rpb24ocm93LCBxdWV1
ZSwgdGl0bGVzLCBtZXNzYWdlKSB7CisgICAgICAgIGZvciAodmFyIHRpdGxlID0gMDsgdGl0bGUg
PCB0aXRsZXMubGVuZ3RoOyArK3RpdGxlKSB7CisgICAgICAgICAgICB2YXIgdGggPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJ0aCIpOworICAgICAgICAgICAgdGguaW5uZXJIVE1MID0gdGl0bGVz
W3RpdGxlXS50ZXh0OworICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlICE9ICJ1bmRlZmlu
ZWQiICYmIG1lc3NhZ2UubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgdGguaW5uZXJIVE1MICs9
ICI8YnI+WyIgKyBtZXNzYWdlICsgIl0iOworICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiIjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgid2lkdGgiIGluIHRpdGxlc1t0aXRsZV0p
CisgICAgICAgICAgICAgICAgdGgud2lkdGggPSB0aXRsZXNbdGl0bGVdLndpZHRoICsgIiUiOwor
ICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKHRoKTsKKyAgICAgICAgICAgIHF1ZXVlLnB1c2go
e2VsZW1lbnQ6IHRoLCB0aXRsZXM6IHRpdGxlc1t0aXRsZV0uY2hpbGRyZW4gfSk7CisgICAgICAg
IH0KKyAgICB9LAorICAgIF9zaG93SGVhZGVyIDogZnVuY3Rpb24oc3VpdGVOYW1lLCB0aXRsZXMs
IG1lc3NhZ2UpIHsKKyAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRy
Iik7CisKKyAgICAgICAgdmFyIHF1ZXVlID0gW107CisgICAgICAgIHRoaXMuX3Nob3dUaXRsZXMo
cm93LCBxdWV1ZSwgdGl0bGVzLCBtZXNzYWdlKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVu
ZENoaWxkKHJvdyk7CisKKyAgICAgICAgd2hpbGUgKHF1ZXVlLmxlbmd0aCkgeworICAgICAgICAg
ICAgdmFyIHJvdyA9IG51bGw7CisgICAgICAgICAgICB2YXIgbGlzdCA9IFtdOworCisgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gcXVldWUubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsK
KyAgICAgICAgICAgICAgICB2YXIgZW50cnkgPSBxdWV1ZS5zaGlmdCgpOworCisgICAgICAgICAg
ICAgICAgaWYgKCFlbnRyeS50aXRsZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIGxp
c3QucHVzaChlbnRyeS5lbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFyb3cpCisgICAgICAgICAg
ICAgICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworCisgICAg
ICAgICAgICAgICAgdGhpcy5fc2hvd1RpdGxlcyhyb3csIHF1ZXVlLCBlbnRyeS50aXRsZXMsICIi
KTsKKyAgICAgICAgICAgICAgICBlbnRyeS5lbGVtZW50LmNvbFNwYW4gPSBlbnRyeS50aXRsZXMu
bGVuZ3RoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocm93KSB7CisgICAgICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHJvdyk7CisgICAgICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgICAg
ICArK2xpc3RbaV0ucm93U3BhbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisg
ICAgX3Nob3dFbXB0eSA6IGZ1bmN0aW9uKHJvdywgdGVzdE5hbWUpIHsKKyAgICAgICAgdmFyIHRk
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxk
KHRkKTsKKyAgICB9LAorICAgIF9zaG93VmFsdWUgOiBmdW5jdGlvbihyb3csIHRlc3ROYW1lLCB2
YWx1ZSkgeworICAgICAgICB2YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwor
ICAgICAgICB0ZC50ZXh0Q29udGVudCA9IHZhbHVlLnRvRml4ZWQoMik7CisgICAgICAgIHJvdy5h
cHBlbmRDaGlsZCh0ZCk7CisgICAgfSwKKyAgICBfc2hvd1NhbXBsZXMgOiBmdW5jdGlvbihyb3cs
IHRlc3ROYW1lLCBheGlzZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGltZU9mZnNldCkgeworICAgICAg
ICB2YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICB2YXIgYnV0
dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGJ1dHRvbi5jbGFz
c05hbWUgPSAic21hbGwtYnV0dG9uIjsKKyAgICAgICAgICAgIAorICAgICAgICBidXR0b24uYWRk
RXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHdpbmRvdy5z
aG93R3JhcGgodGVzdE5hbWUsIGF4aXNlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KTsK
KyAgICAgICAgfSk7CisgICAgICAgICAgICAKKyAgICAgICAgYnV0dG9uLnRleHRDb250ZW50ID0g
IkNsaWNrLi4uIjsKKyAgICAgICAgdGQuYXBwZW5kQ2hpbGQoYnV0dG9uKTsKKyAgICAgICAgcm93
LmFwcGVuZENoaWxkKHRkKTsKKyAgICB9LAorICAgIF9zaG93VGVzdCA6IGZ1bmN0aW9uKHRlc3RO
YW1lLCB0aXRsZXMsIHNhbXBsZXIsIGZpbmFsUmVzdWx0cykgeworICAgICAgICB2YXIgcm93ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKyAgICAgICAgdmFyIHRkID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgdGQudGV4dENvbnRlbnQgPSB0ZXN0TmFtZTsK
KyAgICAgICAgcm93LmFwcGVuZENoaWxkKHRkKTsKKyAgICAgICAgCisgICAgICAgIHZhciBheGlz
ZXMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgbWVhc3VyZSA9IDA7IG1lYXN1cmUgPCBzYW1wbGVy
LmV4cGVyaW1lbnRzLmxlbmd0aDsgKyttZWFzdXJlKSB7CisgICAgICAgICAgICB0aGlzLl9zaG93
VmFsdWUocm93LCB0ZXN0TmFtZSwgc2FtcGxlci5leHBlcmltZW50c1ttZWFzdXJlXS5tZWFuKCkp
OworICAgICAgICAgICAgdGhpcy5fc2hvd1ZhbHVlKHJvdywgdGVzdE5hbWUsIHNhbXBsZXIuZXhw
ZXJpbWVudHNbbWVhc3VyZV0uY29uZmlkZW5jZUludGVydmFsRGVsdGEoOTUpKTsKKyAgICAgICAg
ICAgIHRoaXMuX3Nob3dWYWx1ZShyb3csIHRlc3ROYW1lLCBzYW1wbGVyLmV4cGVyaW1lbnRzW21l
YXN1cmVdLmNvbmNlcm4oNSkpOworICAgICAgICAgICAgdGhpcy5fc2hvd1ZhbHVlKHJvdywgdGVz
dE5hbWUsIHNhbXBsZXIuZXhwZXJpbWVudHNbbWVhc3VyZV0uc3RhbmRhcmREZXZpYXRpb24oKSk7
CisgICAgICAgICAgICB0aGlzLl9zaG93VmFsdWUocm93LCB0ZXN0TmFtZSwgc2FtcGxlci5leHBl
cmltZW50c1ttZWFzdXJlXS5wZXJjZW50YWdlKCkpOworICAgICAgICAgICAgYXhpc2VzLnB1c2go
dGl0bGVzW21lYXN1cmUgKyAxXS50ZXh0KTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3No
b3dWYWx1ZShyb3csIHRlc3ROYW1lLCBzYW1wbGVyLmV4cGVyaW1lbnRzWzBdLnNjb3JlKDUpKTsK
KworICAgICAgICBpZiAoZmluYWxSZXN1bHRzKQorICAgICAgICAgICAgdGhpcy5fc2hvd1NhbXBs
ZXMocm93LCB0ZXN0TmFtZSwgYXhpc2VzLCBzYW1wbGVyLnNhbXBsZXMsIHNhbXBsZXIuc2FtcGxp
bmdUaW1lT2Zmc2V0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fc2hvd0VtcHR5
IChyb3csIHRlc3ROYW1lKTsKKyAgICAgICAgICAgIAorICAgICAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQocm93KTsKKyAgICB9LAorICAgIF9zaG93U3VpdGUgOiBmdW5jdGlvbihzdWl0ZSwg
c3VpdGVTYW1wbGVycykgeworICAgICAgICB2YXIgc2NvcmVzID0gW107ICAgICAgICAKKyAgICAg
ICAgZm9yICh2YXIgdGVzdE5hbWUgaW4gc3VpdGVTYW1wbGVycykgeworICAgICAgICAgICAgdmFy
IHRlc3QgPSB0ZXN0RnJvbU5hbWUoc3VpdGUsIHRlc3ROYW1lKTsKKyAgICAgICAgICAgIHZhciBz
YW1wbGVyID0gc3VpdGVTYW1wbGVyc1t0ZXN0TmFtZV07IAorICAgICAgICAgICAgdGhpcy5fc2hv
d1Rlc3QodGVzdE5hbWUsIHN1aXRlLnRpdGxlcywgc2FtcGxlciwgdHJ1ZSk7CisgICAgICAgICAg
ICBzY29yZXMucHVzaChzYW1wbGVyLmV4cGVyaW1lbnRzWzBdLnNjb3JlKDUpKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gc2NvcmVzOworICAgIH0sCisgICAgc2hvd1JlY29yZCA6IGZ1bmN0
aW9uKHN1aXRlLCB0ZXN0LCBzYW1wbGVyLCBtZXNzYWdlKSB7CisgICAgICAgIHRoaXMuY2xlYXIo
KTsgICAgICAgIAorICAgICAgICB0aGlzLl9zaG93SGVhZGVyKCIiLCBzdWl0ZS50aXRsZXMsIG1l
c3NhZ2UpOworICAgICAgICB0aGlzLl9zaG93VGVzdCh0ZXN0Lm5hbWUsIHN1aXRlLnRpdGxlcywg
c2FtcGxlciwgZmFsc2UpOyAgICAgICAgCisgICAgfSwKKyAgICBzaG93SXRlcmF0aW9ucyA6IGZ1
bmN0aW9uKGl0ZXJhdGlvbnNTYW1wbGVycykgeworICAgICAgICB0aGlzLmNsZWFyKCk7CisKKyAg
ICAgICAgdmFyIHNjb3JlcyA9IFtdOworICAgICAgICB2YXIgdGl0bGVzID0gbnVsbDsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVyYXRpb25zU2FtcGxlcnMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgIGZvciAodmFyIHN1aXRlTmFtZSBpbiBpdGVyYXRpb25zU2FtcGxlcnNbaV0p
IHsKKyAgICAgICAgICAgICAgICB2YXIgc3VpdGUgPSBzdWl0ZUZyb21OYW1lKHN1aXRlTmFtZSk7
CisgICAgICAgICAgICAgICAgaWYgKHRpdGxlcyAhPSBzdWl0ZS50aXRsZXMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGl0bGVzID0gc3VpdGUudGl0bGVzOworICAgICAgICAgICAgICAgICAgICB0
aGlzLl9zaG93SGVhZGVyKHN1aXRlTmFtZSwgdGl0bGVzLCAiIik7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgdmFyIHN1aXRlU2NvcmVzID0gdGhpcy5fc2hvd1N1aXRlKHN1
aXRlLCBpdGVyYXRpb25zU2FtcGxlcnNbaV1bc3VpdGVOYW1lXSk7CisgICAgICAgICAgICAgICAg
c2NvcmVzLnB1c2guYXBwbHkoc2NvcmVzLCBzdWl0ZVNjb3Jlcyk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBTdGF0aXN0aWNzLmdlb21ldHJpY01l
YW4oc2NvcmVzKTsKKyAgICB9Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
cmVzb3VyY2VzL3N0YXRpc3RpY3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTU0IEBACit2YXIgU3RhdGlzdGljcyA9IHsKKyAgICBzYW1wbGVNZWFu
IDogZnVuY3Rpb24obnVtYmVyT2ZTYW1wbGVzLCBzdW0pIHsKKyAgICAgICAgaWYgKG51bWJlck9m
U2FtcGxlcyA8IDEpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHN1bSAv
IG51bWJlck9mU2FtcGxlczsKKyAgICB9LAorICAgIHNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uIDog
ZnVuY3Rpb24obnVtYmVyT2ZTYW1wbGVzLCBzdW0sIHNxdWFyZVN1bSkgeworICAgICAgICBpZiAo
bnVtYmVyT2ZTYW1wbGVzIDwgMikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gTWF0aC5zcXJ0KChzcXVhcmVTdW0gLSBzdW0gKiBzdW0gLyBudW1iZXJPZlNhbXBsZXMpIC8g
KG51bWJlck9mU2FtcGxlcyAtIDEpKSA7CisgICAgfSwKKyAgICBnZW9tZXRyaWNNZWFuIDogZnVu
Y3Rpb24odmFsdWVzKSB7CisgICAgICAgIGlmICghdmFsdWVzLmxlbmd0aCkKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICB2YXIgcHJvZHVjdCA9IHZhbHVlcy5yZWR1Y2UoZnVuY3Rpb24o
YSwgYikgeyByZXR1cm4gYSAqIGI7IH0pOworICAgICAgICByZXR1cm4gTWF0aC5wb3cocHJvZHVj
dCwgMSAvIHZhbHVlcy5sZW5ndGgpOworICAgIH0sCisgICAgLy8gU2VlIGh0dHA6Ly9lbi53aWtp
cGVkaWEub3JnL3dpa2kvU3R1ZGVudCdzX3QtZGlzdHJpYnV0aW9uI1RhYmxlX29mX3NlbGVjdGVk
X3ZhbHVlcworICAgIC8vIFRoaXMgdGFibGUgY29udGFpbnMgb25lIHNpZGVkIChhLmsuYS4gdGFp
bCkgdmFsdWVzLgorICAgIHREaXN0cmlidXRpb25JbnZlcnNlQ0RGIDogeworICAgICAgICAwLjk6
IFsKKyAgICAgICAgICAgIDMuMDc3Njg0LCAxLjg4NTYxOCwgMS42Mzc3NDQsIDEuNTMzMjA2LCAx
LjQ3NTg4NCwgMS40Mzk3NTYsIDEuNDE0OTI0LCAxLjM5NjgxNSwgMS4zODMwMjksIDEuMzcyMTg0
LAorICAgICAgICAgICAgMS4zNjM0MzAsIDEuMzU2MjE3LCAxLjM1MDE3MSwgMS4zNDUwMzAsIDEu
MzQwNjA2LCAxLjMzNjc1NywgMS4zMzMzNzksIDEuMzMwMzkxLCAxLjMyNzcyOCwgMS4zMjUzNDEs
CisgICAgICAgICAgICAxLjMyMzE4OCwgMS4zMjEyMzcsIDEuMzE5NDYwLCAxLjMxNzgzNiwgMS4z
MTYzNDUsIDEuMzE0OTcyLCAxLjMxMzcwMywgMS4zMTI1MjcsIDEuMzExNDM0LCAxLjMxMDQxNSwK
KyAgICAgICAgICAgIDEuMzA5NDY0LCAxLjMwODU3MywgMS4zMDc3MzcsIDEuMzA2OTUyLCAxLjMw
NjIxMiwgMS4zMDU1MTQsIDEuMzA0ODU0LCAxLjMwNDIzMCwgMS4zMDM2MzksIDEuMzAzMDc3LAor
ICAgICAgICAgICAgMS4zMDI1NDMsIDEuMzAyMDM1LCAxLjMwMTU1MiwgMS4zMDEwOTAsIDEuMzAw
NjQ5LCAxLjMwMDIyOCwgMS4yOTk4MjUsIDEuMjk5NDM5LCAxLjI5OTA2OSwgMS4yOTg3MTQsCisK
KyAgICAgICAgICAgIDEuMjk4MzczLCAxLjI5ODA0NSwgMS4yOTc3MzAsIDEuMjk3NDI2LCAxLjI5
NzEzNCwgMS4yOTY4NTMsIDEuMjk2NTgxLCAxLjI5NjMxOSwgMS4yOTYwNjYsIDEuMjk1ODIxLAor
ICAgICAgICAgICAgMS4yOTU1ODUsIDEuMjk1MzU2LCAxLjI5NTEzNCwgMS4yOTQ5MjAsIDEuMjk0
NzEyLCAxLjI5NDUxMSwgMS4yOTQzMTUsIDEuMjk0MTI2LCAxLjI5Mzk0MiwgMS4yOTM3NjMsCisg
ICAgICAgICAgICAxLjI5MzU4OSwgMS4yOTM0MjEsIDEuMjkzMjU2LCAxLjI5MzA5NywgMS4yOTI5
NDEsIDEuMjkyNzkwLCAxLjI5MjY0MywgMS4yOTI1MDAsIDEuMjkyMzYwLCAxLjI5MjIyNCwKKyAg
ICAgICAgICAgIDEuMjkyMDkxLCAxLjI5MTk2MSwgMS4yOTE4MzUsIDEuMjkxNzExLCAxLjI5MTU5
MSwgMS4yOTE0NzMsIDEuMjkxMzU4LCAxLjI5MTI0NiwgMS4yOTExMzYsIDEuMjkxMDI5LAorICAg
ICAgICAgICAgMS4yOTA5MjQsIDEuMjkwODIxLCAxLjI5MDcyMSwgMS4yOTA2MjMsIDEuMjkwNTI3
LCAxLjI5MDQzMiwgMS4yOTAzNDAsIDEuMjkwMjUwLCAxLjI5MDE2MSwgMS4yOTAwNzVdLAorICAg
ICAgICAwLjk1OiBbCisgICAgICAgICAgICA2LjMxMzc1MiwgMi45MTk5ODYsIDIuMzUzMzYzLCAy
LjEzMTg0NywgMi4wMTUwNDgsIDEuOTQzMTgwLCAxLjg5NDU3OSwgMS44NTk1NDgsIDEuODMzMTEz
LCAxLjgxMjQ2MSwKKyAgICAgICAgICAgIDEuNzk1ODg1LCAxLjc4MjI4OCwgMS43NzA5MzMsIDEu
NzYxMzEwLCAxLjc1MzA1MCwgMS43NDU4ODQsIDEuNzM5NjA3LCAxLjczNDA2NCwgMS43MjkxMzMs
IDEuNzI0NzE4LAorICAgICAgICAgICAgMS43MjA3NDMsIDEuNzE3MTQ0LCAxLjcxMzg3MiwgMS43
MTA4ODIsIDEuNzA4MTQxLCAxLjcwNTYxOCwgMS43MDMyODgsIDEuNzAxMTMxLCAxLjY5OTEyNywg
MS42OTcyNjEsCisgICAgICAgICAgICAxLjY5NTUxOSwgMS42OTM4ODksIDEuNjkyMzYwLCAxLjY5
MDkyNCwgMS42ODk1NzIsIDEuNjg4Mjk4LCAxLjY4NzA5NCwgMS42ODU5NTQsIDEuNjg0ODc1LCAx
LjY4Mzg1MSwKKyAgICAgICAgICAgIDEuNjgyODc4LCAxLjY4MTk1MiwgMS42ODEwNzEsIDEuNjgw
MjMwLCAxLjY3OTQyNywgMS42Nzg2NjAsIDEuNjc3OTI3LCAxLjY3NzIyNCwgMS42NzY1NTEsIDEu
Njc1OTA1LAorCisgICAgICAgICAgICAxLjY3NTI4NSwgMS42NzQ2ODksIDEuNjc0MTE2LCAxLjY3
MzU2NSwgMS42NzMwMzQsIDEuNjcyNTIyLCAxLjY3MjAyOSwgMS42NzE1NTMsIDEuNjcxMDkzLCAx
LjY3MDY0OSwKKyAgICAgICAgICAgIDEuNjcwMjE5LCAxLjY2OTgwNCwgMS42Njk0MDIsIDEuNjY5
MDEzLCAxLjY2ODYzNiwgMS42NjgyNzEsIDEuNjY3OTE2LCAxLjY2NzU3MiwgMS42NjcyMzksIDEu
NjY2OTE0LAorICAgICAgICAgICAgMS42NjY2MDAsIDEuNjY2Mjk0LCAxLjY2NTk5NiwgMS42NjU3
MDcsIDEuNjY1NDI1LCAxLjY2NTE1MSwgMS42NjQ4ODUsIDEuNjY0NjI1LCAxLjY2NDM3MSwgMS42
NjQxMjUsCisgICAgICAgICAgICAxLjY2Mzg4NCwgMS42NjM2NDksIDEuNjYzNDIwLCAxLjY2MzE5
NywgMS42NjI5NzgsIDEuNjYyNzY1LCAxLjY2MjU1NywgMS42NjIzNTQsIDEuNjYyMTU1LCAxLjY2
MTk2MSwKKyAgICAgICAgICAgIDEuNjYxNzcxLCAxLjY2MTU4NSwgMS42NjE0MDQsIDEuNjYxMjI2
LCAxLjY2MTA1MiwgMS42NjA4ODEsIDEuNjYwNzE1LCAxLjY2MDU1MSwgMS42NjAzOTEsIDEuNjYw
MjM0XSwKKyAgICAgICAgMC45NzU6IFsKKyAgICAgICAgICAgIDEyLjcwNjIwNSwgNC4zMDI2NTMs
IDMuMTgyNDQ2LCAyLjc3NjQ0NSwgMi41NzA1ODIsIDIuNDQ2OTEyLCAyLjM2NDYyNCwgMi4zMDYw
MDQsIDIuMjYyMTU3LCAyLjIyODEzOSwKKyAgICAgICAgICAgIDIuMjAwOTg1LCAyLjE3ODgxMywg
Mi4xNjAzNjksIDIuMTQ0Nzg3LCAyLjEzMTQ1MCwgMi4xMTk5MDUsIDIuMTA5ODE2LCAyLjEwMDky
MiwgMi4wOTMwMjQsIDIuMDg1OTYzLAorICAgICAgICAgICAgMi4wNzk2MTQsIDIuMDczODczLCAy
LjA2ODY1OCwgMi4wNjM4OTksIDIuMDU5NTM5LCAyLjA1NTUyOSwgMi4wNTE4MzEsIDIuMDQ4NDA3
LCAyLjA0NTIzMCwgMi4wNDIyNzIsCisgICAgICAgICAgICAyLjAzOTUxMywgMi4wMzY5MzMsIDIu
MDM0NTE1LCAyLjAzMjI0NSwgMi4wMzAxMDgsIDIuMDI4MDk0LCAyLjAyNjE5MiwgMi4wMjQzOTQs
IDIuMDIyNjkxLCAyLjAyMTA3NSwKKyAgICAgICAgICAgIDIuMDE5NTQxLCAyLjAxODA4MiwgMi4w
MTY2OTIsIDIuMDE1MzY4LCAyLjAxNDEwMywgMi4wMTI4OTYsIDIuMDExNzQxLCAyLjAxMDYzNSwg
Mi4wMDk1NzUsIDIuMDA4NTU5LAorCisgICAgICAgICAgICAyLjAwNzU4NCwgMi4wMDY2NDcsIDIu
MDA1NzQ2LCAyLjAwNDg3OSwgMi4wMDQwNDUsIDIuMDAzMjQxLCAyLjAwMjQ2NSwgMi4wMDE3MTcs
IDIuMDAwOTk1LCAyLjAwMDI5OCwKKyAgICAgICAgICAgIDEuOTk5NjI0LCAxLjk5ODk3MiwgMS45
OTgzNDEsIDEuOTk3NzMwLCAxLjk5NzEzOCwgMS45OTY1NjQsIDEuOTk2MDA4LCAxLjk5NTQ2OSwg
MS45OTQ5NDUsIDEuOTk0NDM3LAorICAgICAgICAgICAgMS45OTM5NDMsIDEuOTkzNDY0LCAxLjk5
Mjk5NywgMS45OTI1NDMsIDEuOTkyMTAyLCAxLjk5MTY3MywgMS45OTEyNTQsIDEuOTkwODQ3LCAx
Ljk5MDQ1MCwgMS45OTAwNjMsCisgICAgICAgICAgICAxLjk4OTY4NiwgMS45ODkzMTksIDEuOTg4
OTYwLCAxLjk4ODYxMCwgMS45ODgyNjgsIDEuOTg3OTM0LCAxLjk4NzYwOCwgMS45ODcyOTAsIDEu
OTg2OTc5LCAxLjk4NjY3NSwKKyAgICAgICAgICAgIDEuOTg2Mzc3LCAxLjk4NjA4NiwgMS45ODU4
MDIsIDEuOTg1NTIzLCAxLjk4NTI1MSwgMS45ODQ5ODQsIDEuOTg0NzIzLCAxLjk4NDQ2NywgMS45
ODQyMTcsIDEuOTgzOTcyXSwKKyAgICAgICAgMC45OTogWworICAgICAgICAgICAgMzEuODIwNTE2
LCA2Ljk2NDU1NywgNC41NDA3MDMsIDMuNzQ2OTQ3LCAzLjM2NDkzMCwgMy4xNDI2NjgsIDIuOTk3
OTUyLCAyLjg5NjQ1OSwgMi44MjE0MzgsIDIuNzYzNzY5LAorICAgICAgICAgICAgMi43MTgwNzks
IDIuNjgwOTk4LCAyLjY1MDMwOSwgMi42MjQ0OTQsIDIuNjAyNDgwLCAyLjU4MzQ4NywgMi41NjY5
MzQsIDIuNTUyMzgwLCAyLjUzOTQ4MywgMi41Mjc5NzcsCisgICAgICAgICAgICAyLjUxNzY0OCwg
Mi41MDgzMjUsIDIuNDk5ODY3LCAyLjQ5MjE1OSwgMi40ODUxMDcsIDIuNDc4NjMwLCAyLjQ3MjY2
MCwgMi40NjcxNDAsIDIuNDYyMDIxLCAyLjQ1NzI2MiwKKyAgICAgICAgICAgIDIuNDUyODI0LCAy
LjQ0ODY3OCwgMi40NDQ3OTQsIDIuNDQxMTUwLCAyLjQzNzcyMywgMi40MzQ0OTQsIDIuNDMxNDQ3
LCAyLjQyODU2OCwgMi40MjU4NDEsIDIuNDIzMjU3LAorICAgICAgICAgICAgMi40MjA4MDMsIDIu
NDE4NDcwLCAyLjQxNjI1MCwgMi40MTQxMzQsIDIuNDEyMTE2LCAyLjQxMDE4OCwgMi40MDgzNDUs
IDIuNDA2NTgxLCAyLjQwNDg5MiwgMi40MDMyNzIsCisKKyAgICAgICAgICAgIDIuNDAxNzE4LCAy
LjQwMDIyNSwgMi4zOTg3OTAsIDIuMzk3NDEwLCAyLjM5NjA4MSwgMi4zOTQ4MDEsIDIuMzkzNTY4
LCAyLjM5MjM3NywgMi4zOTEyMjksIDIuMzkwMTE5LAorICAgICAgICAgICAgMi4zODkwNDcsIDIu
Mzg4MDExLCAyLjM4NzAwOCwgMi4zODYwMzcsIDIuMzg1MDk3LCAyLjM4NDE4NiwgMi4zODMzMDIs
IDIuMzgyNDQ2LCAyLjM4MTYxNSwgMi4zODA4MDcsCisgICAgICAgICAgICAyLjM4MDAyNCwgMi4z
NzkyNjIsIDIuMzc4NTIyLCAyLjM3NzgwMiwgMi4zNzcxMDIsIDIuMzc2NDIwLCAyLjM3NTc1Nywg
Mi4zNzUxMTEsIDIuMzc0NDgyLCAyLjM3Mzg2OCwKKyAgICAgICAgICAgIDIuMzczMjcwLCAyLjM3
MjY4NywgMi4zNzIxMTksIDIuMzcxNTY0LCAyLjM3MTAyMiwgMi4zNzA0OTMsIDIuMzY5OTc3LCAy
LjM2OTQ3MiwgMi4zNjg5NzksIDIuMzY4NDk3LAorICAgICAgICAgICAgMi4zNjgwMjYsIDIuMzY3
NTY2LCAyLjM2NzExNSwgMi4zNjY2NzQsIDIuMzY2MjQzLCAyLjM2NTgyMSwgMi4zNjU0MDcsIDIu
MzY1MDAyLCAyLjM2NDYwNiwgMi4zNjQyMTddCisgICAgfQorfQorCitmdW5jdGlvbiBFeHBlcmlt
ZW50KCkgeworICAgIHRoaXMuX2luaXQoKTsKKyAgICB0aGlzLl9tYXhIZWFwID0gQWxnb3JpdGht
LmNyZWF0ZU1heEhlYXAoMTAwKTsKK30KKworRXhwZXJpbWVudC5wcm90b3R5cGUgPSB7CisgICAg
X2luaXQgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5fc3VtID0gMDsKKyAgICAgICAgdGhp
cy5fc3F1YXJlU3VtID0gMDsKKyAgICAgICAgdGhpcy5fbnVtYmVyT2ZTYW1wbGVzID0gMDsKKyAg
ICB9LAorICAgIC8vIENhbGxlZCBhZnRlciBhIHdhcm0tdXAgcGVyaW9kCisgICAgc3RhcnRTYW1w
bGluZyA6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgbWVhbiA9IHRoaXMubWVhbigpOworICAg
ICAgICB0aGlzLl9pbml0KCk7CisgICAgICAgIHRoaXMuX21heEhlYXAuaW5pdCgpOworICAgICAg
ICB0aGlzLnNhbXBsZShtZWFuKTsKKyAgICB9LAorICAgIHNhbXBsZSA6IGZ1bmN0aW9uKHZhbHVl
KSB7CisgICAgICAgIHRoaXMuX3N1bSArPSB2YWx1ZTsKKyAgICAgICAgdGhpcy5fc3F1YXJlU3Vt
ICs9IHZhbHVlICogdmFsdWU7CisgICAgICAgIHRoaXMuX21heEhlYXAucHVzaCh2YWx1ZSk7Cisg
ICAgICAgICsrdGhpcy5fbnVtYmVyT2ZTYW1wbGVzOworICAgIH0sCisgICAgbWVhbiA6IGZ1bmN0
aW9uKCkgeworICAgICAgICByZXR1cm4gU3RhdGlzdGljcy5zYW1wbGVNZWFuKHRoaXMuX251bWJl
ck9mU2FtcGxlcywgdGhpcy5fc3VtKTsKKyAgICB9LAorICAgIHN0YW5kYXJkRGV2aWF0aW9uIDog
ZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBTdGF0aXN0aWNzLnNhbXBsZVN0YW5kYXJkRGV2
aWF0aW9uKHRoaXMuX251bWJlck9mU2FtcGxlcywgdGhpcy5fc3VtLCB0aGlzLl9zcXVhcmVTdW0p
OworICAgIH0sCisgICAgcGVyY2VudGFnZSA6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgbWVh
biA9IHRoaXMubWVhbigpOworICAgICAgICByZXR1cm4gbWVhbiA/IHRoaXMuc3RhbmRhcmREZXZp
YXRpb24oKSAqIDEwMCAvIG1lYW4gOiAwOworICAgIH0sCisgICAgY29uZmlkZW5jZUludGVydmFs
RGVsdGEgOiBmdW5jdGlvbihjb25maWRlbmNlTGV2ZWwpIHsKKyAgICAgICAgaWYgKHRoaXMuX251
bWJlck9mU2FtcGxlcyA8IDIpCisgICAgICAgICAgICByZXR1cm4gTmFOOworICAgICAgICAKKyAg
ICAgICAgdmFyIHByb2JhYmlsaXR5ID0gKDEwMCAtIDIgKiAoMTAwIC0gY29uZmlkZW5jZUxldmVs
KSkgLyAxMDA7CisgICAgICAgIGlmICghKHByb2JhYmlsaXR5IGluIFN0YXRpc3RpY3MudERpc3Ry
aWJ1dGlvbkludmVyc2VDREYpKQorICAgICAgICAgICAgdGhyb3cgJ1Vuc3VwcG9ydGVkIGNvbmZp
ZGVuY2UgbGV2ZWwnOworCisgICAgICAgIHZhciBjZGZGb3JQcm9iYWJpbGl0eSA9IFN0YXRpc3Rp
Y3MudERpc3RyaWJ1dGlvbkludmVyc2VDREZbcHJvYmFiaWxpdHldOworICAgICAgICB2YXIgZGVn
cmVlc09mRnJlZWRvbSA9IE1hdGgubWluKHRoaXMuX251bWJlck9mU2FtcGxlcyAtIDEsIGNkZkZv
clByb2JhYmlsaXR5Lmxlbmd0aCk7CisgICAgICAgIAorICAgICAgICB2YXIgcXVhbnRpbGUgPSBj
ZGZGb3JQcm9iYWJpbGl0eVtkZWdyZWVzT2ZGcmVlZG9tIC0gMV07IC8vIFRoZSBmaXJzdCBlbnRy
eSBpcyBmb3IgdGhlIG9uZSBkZWdyZWUgb2YgZnJlZWRvbS4KKyAgICAgICAgcmV0dXJuIHF1YW50
aWxlICogU3RhdGlzdGljcy5zYW1wbGVTdGFuZGFyZERldmlhdGlvbih0aGlzLl9udW1iZXJPZlNh
bXBsZXMsIHRoaXMuX3N1bSwgdGhpcy5fc3F1YXJlU3VtKSAvIE1hdGguc3FydCh0aGlzLl9udW1i
ZXJPZlNhbXBsZXMpOworICAgIH0sCisgICAgY29uY2VybiA6IGZ1bmN0aW9uKHBlcmNlbnRhZ2Up
IHsKKyAgICAgICAgdmFyIHNpemUgPSB0aGlzLl9udW1iZXJPZlNhbXBsZXMgKiBwZXJjZW50YWdl
IC8gMTAwOworICAgICAgICB2YXIgdmFsdWVzID0gdGhpcy5fbWF4SGVhcC52YWx1ZXMoc2l6ZSk7
CisgICAgICAgIHJldHVybiB2YWx1ZXMubGVuZ3RoID8gdmFsdWVzLnJlZHVjZShmdW5jdGlvbihh
LCBiKSB7IHJldHVybiBhICsgYjsgfSkgLyB2YWx1ZXMubGVuZ3RoIDogMDsKKyAgICB9LAorICAg
IHNjb3JlIDogZnVuY3Rpb24ocGVyY2VudGFnZSkgeworICAgICAgICByZXR1cm4gU3RhdGlzdGlj
cy5nZW9tZXRyaWNNZWFuKFt0aGlzLm1lYW4oKSwgTWF0aC5tYXgodGhpcy5jb25jZXJuKHBlcmNl
bnRhZ2UpLCAxKV0pOworICAgIH0KK30KKworZnVuY3Rpb24gU2FtcGxlcihjb3VudCkgeworICAg
IHRoaXMuZXhwZXJpbWVudHMgPSBbXTsKKyAgICB3aGlsZSAoY291bnQtLSkKKyAgICAgICAgdGhp
cy5leHBlcmltZW50cy5wdXNoKG5ldyBFeHBlcmltZW50KTsKKyAgICB0aGlzLnNhbXBsZXMgPSBb
XTsKKyAgICB0aGlzLnNhbXBsaW5nVGltZU9mZnNldCA9IDA7Cit9CisKK1NhbXBsZXIucHJvdG90
eXBlID0geworICAgIHN0YXJ0U2FtcGxpbmcgOiBmdW5jdGlvbih0aW1lT2Zmc2V0KSB7CisgICAg
ICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmV4cGVyaW1lbnRzLmxlbmd0aDsg
KytpbmRleCkKKyAgICAgICAgICAgIHRoaXMuZXhwZXJpbWVudHNbaW5kZXhdLnN0YXJ0U2FtcGxp
bmcoKTsKKyAgICAgICAgICAgIAorICAgICAgICB0aGlzLnNhbXBsaW5nVGltZU9mZnNldCA9IHRp
bWVPZmZzZXQgLyAxMDAwOworICAgIH0sCisgICAgc2FtcGxlIDogZnVuY3Rpb24odGltZU9mZnNl
dCwgdmFsdWVzKSB7CisgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoIDwgdGhpcy5leHBlcmltZW50
cy5sZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAiTm90IGVub3VnaCBzYW1wbGUgcG9pbnRzIjsK
KyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXgg
PCB0aGlzLmV4cGVyaW1lbnRzLmxlbmd0aDsgKytpbmRleCkKKyAgICAgICAgICAgIHRoaXMuZXhw
ZXJpbWVudHNbaW5kZXhdLnNhbXBsZSh2YWx1ZXNbaW5kZXhdKTsKKyAgICAgICAgICAgIAorICAg
ICAgICB0aGlzLnNhbXBsZXMucHVzaCh7IHRpbWVPZmZzZXQ6IHRpbWVPZmZzZXQgLyAxMDAwLCB2
YWx1ZXM6IHZhbHVlcyB9KTsKKyAgICB9Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcnVubmVyL2FuaW1vbWV0ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcnVubmVyL2FuaW1vbWV0ZXIuaHRtbAkocmV2aXNpb24gMCkKKysrIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvYW5pbW9tZXRlci5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvYW5pbW9tZXRlci5jc3Mi
PgorICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMv
ZDMvMy41LjUvZDMubWluLmpzIiBkZWZlcj48L3NjcmlwdD4gIAorICA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiIGRlZmVyPjwvc2NyaXB0PiAgCisgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvbWFpbi5qcyIgZGVmZXI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvdGVzdHMuanMiIGRlZmVyPSIiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMiIGRlZmVyPjwvc2NyaXB0PgorICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2FuaW1vbWV0ZXIuanMiIGRlZmVyPjwvc2NyaXB0PgorICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2dyYXBoLmpzIiBkZWZlcj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
ICA8bWFpbj4KKyAgICA8c2VjdGlvbiBpZD0iaG9tZSIgY2xhc3M9InNlbGVjdGVkIj4KKyAgICAg
IDxwPgorICAgICAgICBBbmltb21ldGVyIGlzIGEgYnJvd3NlciBiZW5jaG1hcmsgdGhhdCBtZWFz
dXJlcyB0aGUgY29tcGxleGl0eSBvZiBhbiBhbmltYXRpb24gZm9yCisgICAgICAgIHdoaWNoIGEg
YnJvd3NlciBjYW4gYWNoaWV2ZSA1MCBGUFMgKGZyYW1lIHBlciBzZWNvbmQpLiBJdCB1c2VzIGFk
YXB0aXZlIGFuaW1hdGlvbnMKKyAgICAgICAgdG8gdHVuZSB0aGVpciBjb21wbGV4aXRpZXMgdG8g
c3RheSBjbG9zZSB0byA1MCBGUFMuCisgICAgICA8L3A+CisgICAgICA8ZGl2IGNsYXNzPSJvcHRp
b25zIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29sdW1uIj4KKyAgICAgICAgICA8bGFiZWw+PGlu
cHV0IGlkPSJodG1sLXN1aXRlIiB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD4gSFRNTCBlbGVtZW50
cyBzdWl0ZTwvbGFiZWw+PGJyPgorICAgICAgICAgIDxsYWJlbD48aW5wdXQgaWQ9ImNhbnZhcy1z
dWl0ZSIgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+IENhbnZhcyBkcmF3aW5ncyBzdWl0ZTwvbGFi
ZWw+PGJyPgorICAgICAgICAgIDxsYWJlbD48aW5wdXQgaWQ9InN2Zy1zdWl0ZSIgdHlwZT0iY2hl
Y2tib3giIGNoZWNrZWQ+IFNWRyBlbGVtZW50cyBzdWl0ZTwvbGFiZWw+CisgICAgICAgIDwvZGl2
PgorICAgICAgICA8ZGl2PgorICAgICAgICAgIDxsYWJlbD5UZXN0IGludGVydmFsOiA8aW5wdXQg
aWQ9InRlc3QtaW50ZXJ2YWwiIHR5cGU9Im51bWJlciIgdmFsdWU9IjMwIj4gc2Vjb25kczwvbGFi
ZWw+PGJyPgorICAgICAgICAgIDxsYWJlbD5GcmFtZSByYXRlOiA8aW5wdXQgaWQ9ImZyYW1lLXJh
dGUiIHR5cGU9Im51bWJlciIgdmFsdWU9IjUwIj4gZnBzPC9sYWJlbD48YnI+CisgICAgICAgICAg
PGxhYmVsPjxpbnB1dCBpZD0iZXN0aW1hdGVkLWZyYW1lLXJhdGUiIHR5cGU9ImNoZWNrYm94IiBj
aGVja2VkPiBFc3RpbWF0ZWQgRnJhbWUgUmF0ZTwvbGFiZWw+PGJyPgorICAgICAgICAgIDxsYWJl
bD48aW5wdXQgaWQ9ImZpeC10ZXN0LWNvbXBsZXhpdHkiIHR5cGU9ImNoZWNrYm94Ij4gRml4IHRl
c3QgY29tcGxleGl0eSBhZnRlciB3YXJtdXA8L2xhYmVsPgorICAgICAgICA8L2Rpdj4KKyAgICAg
IDwvZGl2PgorICAgICAgPGRpdiBjbGFzcz0iYnV0dG9ucyI+CisgICAgICAgIDxidXR0b24gb25j
bGljaz0ic3RhcnRUZXN0KCkiPlN0YXJ0IFRlc3Q8L2J1dHRvbj4KKyAgICAgIDwvZGl2PgorICAg
IDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbiBpZD0icnVubmluZyI+CisgICAgICA8ZGl2IGlkPSJ0
ZXN0Q29udGFpbmVyIj48L2Rpdj4KKyAgICAgIDxkaXYgaWQ9InByb2dyZXNzIj4KKyAgICAgICAg
PGRpdiBpZD0icHJvZ3Jlc3MtY29tcGxldGVkIj48L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgICAg
PGRpdiBpZD0icmVjb3JkIj4KKyAgICAgICAgPHRhYmxlIGNsYXNzPSJyZWNvcmQtdGFibGUiPjwv
dGFibGU+CisgICAgICA8L2Rpdj4KKyAgICA8L3NlY3Rpb24+CisgICAgPHNlY3Rpb24gaWQ9InJl
c3VsdHMiPgorICAgICAgPGgxPlJlc3VsdHM8L2gxPgorICAgICAgPHRhYmxlIGNsYXNzPSJyZXN1
bHRzLXRhYmxlIj48L3RhYmxlPgorICAgICAgPGRpdiBjbGFzcz0iYnV0dG9ucyI+CisgICAgICAg
IDxidXR0b24gb25jbGljaz0ic3RhcnRUZXN0KCkiPlRlc3QgQWdhaW48L2J1dHRvbj4KKyAgICAg
IDwvZGl2PgorICAgIDwvc2VjdGlvbj4gIAorICAgIDxzZWN0aW9uIGlkPSJncmFwaCI+CisgICAg
ICA8aDE+R3JhcGg8L2gxPgorICAgICAgPGRpdiBpZD0iZ3JhcGhDb250YWluZXIiPjwvZGl2Pgor
ICAgICAgPGRpdiBjbGFzcz0iYnV0dG9ucyI+CisgICAgICAgIDxidXR0b24gb25jbGljaz0ic2hv
d1Jlc3VsdHMoKSI+UmVzdWx0czwvYnV0dG9uPgorICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InN0
YXJ0VGVzdCgpIj5UZXN0IEFnYWluPC9idXR0b24+ICAgICAgICAKKyAgICAgIDwvZGl2PgorICAg
IDwvc2VjdGlvbj4gIAorICA8L21haW4+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9h
bmltb21ldGVyLmNzcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMjE0IEBACitib2R5IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoOTYsIDk2LCA5Nik7
CisgICAgY29sb3I6IHJnYigyMzUsIDIzNSwgMjM1KTsKKyAgICBmb250LWZhbWlseTogIkhlbHZl
dGljYSBOZXVlIiwgSGVsdmV0aWNhLCBWZXJkYW5hLCBzYW5zLXNlcmlmOworfQorCittYWluIHsK
KyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgd2lkdGg6
IDgwMHB4OworICAgIGhlaWdodDogNjAwcHg7CisgICAgdG9wOiA1MCU7CisgICAgbGVmdDogNTAl
OworICAgIG1hcmdpbi10b3A6IC0zMjFweDsKKyAgICBtYXJnaW4tbGVmdDogLTQyMXB4OworICAg
IHBhZGRpbmc6IDE1cHg7CisgICAgYm9yZGVyOiA2cHggc29saWQgcmdiKDIzNSwgMjM1LCAyMzUp
OworICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7Cit9CisKK2xhYmVsLCBwIHsKKyAgICBmb250LXNp
emU6IDE2cHg7CisgICAgbGluZS1oZWlnaHQ6IDIxcHg7Cit9CisKK3NlY3Rpb24geworICAgIGRp
c3BsYXk6IG5vbmU7Cit9CisKK3NlY3Rpb24gPiBwIHsKKyAgICBtYXJnaW46IDEwcHggMjBweDsK
K30KKworc2VjdGlvbiNob21lID4gcCB7CisgICAgbWFyZ2luOiAwIGF1dG87CisgICAgd2lkdGg6
IDcwJTsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKK3NlY3Rpb24jaG9tZSA+IHA6Zmly
c3QtY2hpbGQgeworICAgIG1hcmdpbi10b3A6IDE2MHB4OworICAgIHRleHQtYWxpZ246IGNlbnRl
cjsKK30KKworc2VjdGlvbi5zZWxlY3RlZCB7CisgICAgZGlzcGxheTogYmxvY2s7Cit9CisKKyN0
ZXN0Q29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAxNXB4Owor
ICAgIGxlZnQ6IDE1cHg7CisgICAgd2lkdGg6IDgwMHB4OworICAgIGhlaWdodDogNjAwcHg7Cit9
CisKK3NlY3Rpb24jcnVubmluZyA+ICNwcm9ncmVzcyB7CisgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgIGJvdHRvbTogLTZweDsKKyAgICBsZWZ0OiA2MHB4OworICAgIHJpZ2h0OiA2MHB4Owor
ICAgIGhlaWdodDogNnB4OworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxMjgsIDEyOCwgMTI4
KTsKKyAgICBib3JkZXItbGVmdDogNnB4IHNvbGlkIHJnYig0NiwgNTEsIDU1KTsKKyAgICBib3Jk
ZXItcmlnaHQ6IDZweCBzb2xpZCByZ2IoNDYsIDUxLCA1NSk7Cit9CisKK3NlY3Rpb24jcnVubmlu
ZyAjcHJvZ3Jlc3MtY29tcGxldGVkIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9w
OiAwOworICAgIGxlZnQ6IDA7CisgICAgaGVpZ2h0OiA2cHg7CisgICAgd2lkdGg6IDA7CisgICAg
YmFja2dyb3VuZC1jb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOworfQorCitzZWN0aW9uI3J1bm5p
bmcgPiAjcmVjb3JkIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYm90dG9tOiAtMTMw
cHg7CisgICAgbGVmdDogMHB4OworICAgIHJpZ2h0OiAwcHg7CisgICAgaGVpZ2h0OiA3NXB4Owor
ICAgIGNvbG9yOiByZ2IoMTI4LCAxMjgsIDEyOCk7CisgICAgcGFkZGluZzogMTVweDsKKyAgICBi
b3JkZXI6IDZweCBzb2xpZCByZ2IoMjM1LCAyMzUsIDIzNSk7CisgICAgYm9yZGVyLXJhZGl1czog
MjBweDsKK30KKworc2VjdGlvbiNydW5uaW5nID4gI3JlY29yZCA+IHRhYmxlLAorc2VjdGlvbiNy
ZXN1bHRzID4gdGFibGUgeworICAgIHdpZHRoOiAxMDAlOworfQorCitzZWN0aW9uI3J1bm5pbmcg
PiAjcmVjb3JkID4gdGFibGUgdGQsIHRoLAorc2VjdGlvbiNyZXN1bHRzID4gdGFibGUgdGQsIHRo
IHsKKyAgICBmb250LXNpemU6IDExcHg7CisgICAgYm9yZGVyOiAxcHggc29saWQgIzk4YmYyMTsK
KyAgICBwYWRkaW5nOiAzcHggNHB4IDJweCA0cHg7Cit9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCitzZWN0aW9uI3J1bm5pbmcgPiAjcmVjb3JkID4gdGFibGUg
dHIuYWx0LCB0ZAorc2VjdGlvbiNyZXN1bHRzID4gdGFibGUgdHIuYWx0LCB0ZCB7CisgICAgY29s
b3I6ICMwMDAwMDA7CisgICAgYmFja2dyb3VuZC1jb2xvcjogI0VBRjJEMzsKK30KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorc2VjdGlvbiNydW5uaW5nID4g
I3JlY29yZCA+IHRhYmxlIHRoLAorc2VjdGlvbiNyZXN1bHRzID4gdGFibGUgdGggeworICAgIGJh
Y2tncm91bmQtY29sb3I6ICNBN0M5NDI7IAorICAgIHRleHQtYWxpZ246IGNlbnRlcjsKK30KKwor
Lm9wdGlvbnMgeworICAgIG1hcmdpbjowIGF1dG87ICAgIAorICAgIG1hcmdpbi10b3A6IDMwcHg7
CisgICAgd2lkdGg6IDUwMHB4OworICAgIGFsaWduOiBjZW50ZXI7Cit9CisKKy5jb2x1bW4gewor
ICAgIHdpZHRoOiA0NSU7CisgICAgZmxvYXQ6bGVmdDsKKyAgICBoZWlnaHQ6IDEyMHB4OworICAg
IHBhZGRpbmc6NXB4OworfQorCitpbnB1dFt0eXBlPSJudW1iZXIiXSB7CisgICB3aWR0aDo1MHB4
OworfQorCisuYnV0dG9ucyB7CisgICAgbWFyZ2luLXRvcDogMTBweDsKKyAgICB0ZXh0LWFsaWdu
OiBjZW50ZXI7CisgICAgY2xlYXI6IGJvdGg7Cit9CisKK2J1dHRvbiB7CisgICAgLXdlYmtpdC1h
cHBlYXJhbmNlOiBub25lOworICAgIGJvcmRlcjogM3B4IHNvbGlkIHJnYigyMzUsIDIzNSwgMjM1
KTsKKyAgICBib3JkZXItcmFkaXVzOiAxMHB4OworICAgIG1pbi13aWR0aDogMjAwcHg7CisgICAg
cGFkZGluZzogNXB4IDIwcHg7CisgICAgbWFyZ2luOiAwIDQwcHg7CisgICAgZm9udC1zaXplOiAy
NXB4OworICAgIGNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7CisgICAgYmFja2dyb3VuZC1jb2xv
cjogdHJhbnNwYXJlbnQ7CisKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOworfQorCiti
dXR0b246YWN0aXZlIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7
CisgICAgY29sb3I6IHJnYig0NiwgNTEsIDU1KTsKKyAgICBib3JkZXItY29sb3I6IHJnYigyMzUs
IDIzNSwgMjM1KSAhaW1wb3J0YW50OworfQorCitidXR0b246Zm9jdXMgeworICAgIG91dGxpbmU6
IG5vbmU7CisgICAgYm9yZGVyLWNvbG9yOiByZ2IoMjMyLCA3OSwgNzkpOworfQorCisuc21hbGwt
YnV0dG9uIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgYm9yZGVyOiAxcHgg
c29saWQgcmdiKDk2LCA5NiwgOTYpOworICAgIGJvcmRlci1yYWRpdXM6IDJweDsKKyAgICBwYWRk
aW5nOiAxcHggNHB4OworICAgIG1hcmdpbjogMCA0cHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
dHJhbnNwYXJlbnQ7CisgICAgY3Vyc29yOiBwb2ludGVyOworICAgIHRleHQtYWxpZ246IGNlbnRl
cjsKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOworfQorCisjZ3JhcGhDb250YWluZXIg
eworICBmb250OiAxMHB4IHNhbnMtc2VyaWY7CisgIGNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7
ICAKK30KKworLmF4aXMgcGF0aCwKKy5heGlzIGxpbmUgeworICBmaWxsOiBub25lOworICBzdHJv
a2U6IHJnYigyMzUsIDIzNSwgMjM1KTsKKyAgc2hhcGUtcmVuZGVyaW5nOiBjcmlzcEVkZ2VzOwor
fQorCisubGVmdC1zYW1wbGVzIHsKKyAgZmlsbDogbm9uZTsKKyAgc3Ryb2tlOiBzdGVlbGJsdWU7
CisgIHN0cm9rZS13aWR0aDogMS41cHg7Cit9CisKKy5yaWdodC1zYW1wbGVzIHsKKyAgICBmaWxs
OiBub25lOworICAgIHN0cm9rZTogcmVkOworICAgIHN0cm9rZS13aWR0aDogMS41cHg7Cit9CisK
Ky5zbWFwbGUtdGltZSB7CisgICAgZmlsbDogbm9uZTsKKyAgICBzdHJva2U6IGdyZWVuOworICAg
IHN0cm9rZS13aWR0aDogMS41cHg7Cit9CisKKy5sZWZ0LW1lYW4geworICAgIGZpbGw6IG5vbmU7
CisgICAgc3Ryb2tlOiB5ZWxsb3c7CisgICAgc3Ryb2tlLXdpZHRoOiAxLjVweDsKK30KKworLnJp
Z2h0LW1lYW4geworICAgIGZpbGw6IG5vbmU7CisgICAgc3Ryb2tlOiBtYWdlbnRhOworICAgIHN0
cm9rZS13aWR0aDogMS41cHg7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
cnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuanMJKHJldmlzaW9u
IDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmlt
b21ldGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA3IEBACit3aW5kb3cuYmVuY2ht
YXJrUnVubmVyQ2xpZW50ID0geworICAgIGl0ZXJhdGlvbkNvdW50OiAxLAorICAgIHRlc3RzQ291
bnQ6IG51bGwsCisgICAgcHJvZ3Jlc3NCYXI6IG51bGwsCisgICAgcmVjb3JkVGFibGU6IG51bGws
CisgICAgb3B0aW9uczogeyB0ZXN0SW50ZXJ2YWw6IDMwMDAwLCBmcmFtZVJhdGU6IDUwLCBlc3Rp
bWF0ZWRGcmFtZVJhdGU6IHRydWUsIGZpeFRlc3RDb21wbGV4aXR5IDogZmFsc2UgfSwKKyAgICBz
Y29yZTogMCwKKyAgICBfaXRlcmF0aW9uc1NhbXBsZXJzOiBbXSwKKyAgICBfcmVzdWx0c1RhYmxl
OiBudWxsLAorICAgIF9pc0Nocm9tZTogL0Nocm9tZS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50
KSAmJiAvR29vZ2xlIEluYy8udGVzdChuYXZpZ2F0b3IudmVuZG9yKSwKKyAgICBfaXNTYWZhcmk6
IC9TYWZhcmkvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgL0FwcGxlIENvbXB1dGVyLy50
ZXN0KG5hdmlnYXRvci52ZW5kb3IpLAorICAgIHdpbGxBZGRUZXN0RnJhbWU6IGZ1bmN0aW9uIChm
cmFtZSkgeworICAgICAgICB2YXIgbWFpbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm1haW4i
KTsKKyAgICAgICAgdmFyIHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShtYWluKTsKKyAgICAgICAg
ZnJhbWUuc3R5bGUubGVmdCA9IG1haW4ub2Zmc2V0TGVmdCArIHBhcnNlSW50KHN0eWxlLmJvcmRl
ckxlZnRXaWR0aCkgKyBwYXJzZUludChzdHlsZS5wYWRkaW5nTGVmdCkgKyAicHgiOworICAgICAg
ICBmcmFtZS5zdHlsZS50b3AgPSBtYWluLm9mZnNldFRvcCArIHBhcnNlSW50KHN0eWxlLmJvcmRl
clRvcFdpZHRoKSArIHBhcnNlSW50KHN0eWxlLnBhZGRpbmdUb3ApICsgInB4IjsKKyAgICB9LAor
ICAgIGRpZFJ1blRlc3Q6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGhpcy5wcm9ncmVzc0Jhci5p
bmNSYW5nZSgpOworICAgIH0sCisgICAgd2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb246IGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgdGhpcy5faXRlcmF0aW9uc1NhbXBsZXJzID0gW107CisgICAgICAgIHRo
aXMuX3Jlc3VsdHNUYWJsZSA9IG5ldyBSZWNvcmRUYWJsZShkb2N1bWVudC5xdWVyeVNlbGVjdG9y
QWxsKCIucmVzdWx0cy10YWJsZSIpWzBdKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMucHJvZ3Jl
c3NCYXIgPSBuZXcgUHJvZ3Jlc3NCYXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb2dyZXNz
LWNvbXBsZXRlZCIpLCB0aGlzLnRlc3RzQ291bnQpOworICAgICAgICB0aGlzLnJlY29yZFRhYmxl
ID0gbmV3IFJlY29yZFRhYmxlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5yZWNvcmQtdGFi
bGUiKVswXSk7CisgICAgfSwKKyAgICBkaWRSdW5TdWl0ZXM6IGZ1bmN0aW9uIChzdWl0ZXNTYW1w
bGVycykgeworICAgICAgICB0aGlzLl9pdGVyYXRpb25zU2FtcGxlcnMucHVzaChzdWl0ZXNTYW1w
bGVycyk7CisgICAgfSwKKyAgICBkaWRGaW5pc2hMYXN0SXRlcmF0aW9uOiBmdW5jdGlvbiAoKSB7
CisgICAgICAgIHRoaXMuc2NvcmUgPSB0aGlzLl9yZXN1bHRzVGFibGUuc2hvd0l0ZXJhdGlvbnMo
dGhpcy5faXRlcmF0aW9uc1NhbXBsZXJzLCAiIik7CisgICAgICAgIHNob3dSZXN1bHRzKCk7Cisg
ICAgfSwKKyAgICBicm93c2VyIDogZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh0aGlzLl9pc0No
cm9tZSkKKyAgICAgICAgICAgIHJldHVybiAiQ2hyb21lIjsKKyAgICAgICAgaWYgKHRoaXMuX2lz
U2FmYXJpKQorICAgICAgICAgICAgcmV0dXJuICJTYWZhcmkiOworICAgICAgICByZXR1cm4gIiI7
CisgICAgfQorfQorCitmdW5jdGlvbiBzaG93U2VjdGlvbihzZWN0aW9uSWRlbnRpZmllciwgcHVz
aFN0YXRlKSB7CisgICAgdmFyIGN1cnJlbnRTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoInNlY3Rpb24uc2VsZWN0ZWQiKTsKKyAgICBjb25zb2xlLmFzc2VydChjdXJyZW50
U2VjdGlvbkVsZW1lbnQpOworCisgICAgdmFyIG5ld1NlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoc2VjdGlvbklkZW50aWZpZXIpOworICAgIGNvbnNvbGUuYXNzZXJ0KG5l
d1NlY3Rpb25FbGVtZW50KTsKKworICAgIGN1cnJlbnRTZWN0aW9uRWxlbWVudC5jbGFzc0xpc3Qu
cmVtb3ZlKCJzZWxlY3RlZCIpOworICAgIG5ld1NlY3Rpb25FbGVtZW50LmNsYXNzTGlzdC5hZGQo
InNlbGVjdGVkIik7CisKKyAgICBpZiAocHVzaFN0YXRlKQorICAgICAgICBoaXN0b3J5LnB1c2hT
dGF0ZSh7c2VjdGlvbjogc2VjdGlvbklkZW50aWZpZXJ9LCBkb2N1bWVudC50aXRsZSk7Cit9CisK
K2Z1bmN0aW9uIHN0YXJ0QmVuY2htYXJrKCkgeworICAgIHZhciBjaGVja2JveGVzID0gWyAKKyAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImh0bWwtc3VpdGUiKSwgCisgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMtc3VpdGUiKSwgCisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJzdmctc3VpdGUiKQorICAgIF07CisgICAgdmFyIGVuYWJsZWRTdWl0
ZXMgPSBTdWl0ZXMuZmlsdGVyKGZ1bmN0aW9uIChzdWl0ZSwgaW5kZXgpIHsgcmV0dXJuICFzdWl0
ZS5kaXNhYmxlZCAmJiBjaGVja2JveGVzW2luZGV4XS5jaGVja2VkOyB9KTsKKyAgICB2YXIgdGVz
dHNDb3VudCA9IGVuYWJsZWRTdWl0ZXMucmVkdWNlKGZ1bmN0aW9uICh0ZXN0c0NvdW50LCBzdWl0
ZSkgeyByZXR1cm4gdGVzdHNDb3VudCArIHN1aXRlLnRlc3RzLmxlbmd0aDsgfSwgMCk7CisgICAg
YmVuY2htYXJrUnVubmVyQ2xpZW50LnRlc3RzQ291bnQgPSBiZW5jaG1hcmtSdW5uZXJDbGllbnQu
aXRlcmF0aW9uQ291bnQgKiB0ZXN0c0NvdW50OworICAgIGJlbmNobWFya1J1bm5lckNsaWVudC5v
cHRpb25zWyJ0ZXN0SW50ZXJ2YWwiXSA9IHBhcnNlSW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0ZXN0LWludGVydmFsIikudmFsdWUpICogMTAwMDsKKyAgICBiZW5jaG1hcmtSdW5uZXJDbGll
bnQub3B0aW9uc1siZnJhbWVSYXRlIl0gPSBwYXJzZUludChkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZnJhbWUtcmF0ZSIpLnZhbHVlKTsKKyAgICBiZW5jaG1hcmtSdW5uZXJDbGllbnQub3B0aW9u
c1siZXN0aW1hdGVkRnJhbWVSYXRlIl0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXN0aW1h
dGVkLWZyYW1lLXJhdGUiKS5jaGVja2VkOyAgICAKKyAgICBiZW5jaG1hcmtSdW5uZXJDbGllbnQu
b3B0aW9uc1siZml4VGVzdENvbXBsZXhpdHkiXSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJm
aXgtdGVzdC1jb21wbGV4aXR5IikuY2hlY2tlZDsKKyAgICB2YXIgcnVubmVyID0gbmV3IEJlbmNo
bWFya1J1bm5lcihlbmFibGVkU3VpdGVzLCBiZW5jaG1hcmtSdW5uZXJDbGllbnQpOworICAgIHJ1
bm5lci5ydW5NdWx0aXBsZUl0ZXJhdGlvbnMoYmVuY2htYXJrUnVubmVyQ2xpZW50Lml0ZXJhdGlv
bkNvdW50KTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIHNob3dTZWN0aW9uKCJy
dW5uaW5nIik7CisgICAgc3RhcnRCZW5jaG1hcmsoKTsKK30KKworZnVuY3Rpb24gc2hvd1Jlc3Vs
dHMoc2NvcmUpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNy
ZXN1bHRzID4gaDEiKTsKKyAgICBlbGVtZW50LnRleHRDb250ZW50ID0gIlJlc3VsdHM6IgorICAg
IAorICAgIHZhciBicm93c2VyID0gYmVuY2htYXJrUnVubmVyQ2xpZW50LmJyb3dzZXIoKTsgICAg
CisgICAgaWYgKGJyb3dzZXIubGVuZ3RoKQorICAgICAgICBlbGVtZW50LnRleHRDb250ZW50ICs9
ICIgW2Jyb3dzZXIgPSAiICsgYnJvd3NlciArICJdIjsKKworICAgIHZhciBzY29yZSA9IGJlbmNo
bWFya1J1bm5lckNsaWVudC5zY29yZS50b0ZpeGVkKDIpOworICAgIGVsZW1lbnQudGV4dENvbnRl
bnQgKz0gIiBbU2NvcmUgPSAiICsgc2NvcmUgKyAiXSI7CisgICAgICAgIAorICAgIHNob3dTZWN0
aW9uKCJyZXN1bHRzIiwgdHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHNob3dHcmFwaCh0ZXN0TmFtZSwg
YXhpc2VzLCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQpIHsKKyAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNncmFwaCA+IGgxIik7CisgICAgZWxlbWVudC50ZXh0
Q29udGVudCA9ICJHcmFwaDoiCisKKyAgICB2YXIgYnJvd3NlciA9IGJlbmNobWFya1J1bm5lckNs
aWVudC5icm93c2VyKCk7ICAgIAorICAgIGlmIChicm93c2VyLmxlbmd0aCkKKyAgICAgICAgZWxl
bWVudC50ZXh0Q29udGVudCArPSAiIFticm93c2VyID0gIiArIGJyb3dzZXIgKyAiXSI7CisKKyAg
ICBpZiAodGVzdE5hbWUubGVuZ3RoKQorICAgICAgICBlbGVtZW50LnRleHRDb250ZW50ICs9ICIg
W3Rlc3QgPSAiICsgdGVzdE5hbWUgKyAiXSI7CisgICAgICAgICAgICAKKyAgICBncmFwaCgiI2dy
YXBoQ29udGFpbmVyIiwgbmV3IFBvaW50KDcwMCwgNDAwKSwgbmV3IEluc2V0cygyMCwgNTAsIDIw
LCA1MCksIGF4aXNlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KTsKKyAgICBzaG93U2Vj
dGlvbigiZ3JhcGgiLCB0cnVlKTsgICAgCit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcnVubmVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2JlbmNobWFyay1y
dW5uZXIuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVu
bmVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTg4IEBACitmdW5jdGlvbiBCZW5jaG1hcmtSdW5uZXJTdGF0ZShzdWl0ZXMpIHsKKyAgICB0
aGlzLl9zdWl0ZXMgPSBzdWl0ZXM7CisgICAgdGhpcy5fc3VpdGVJbmRleCA9IC0xOworICAgIHRo
aXMuX3Rlc3RJbmRleCA9IDA7CisgICAgdGhpcy5uZXh0KCk7Cit9CisKK0JlbmNobWFya1J1bm5l
clN0YXRlLnByb3RvdHlwZS5jdXJyZW50U3VpdGUgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4g
dGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5kZXhdOworfQorCitCZW5jaG1hcmtSdW5uZXJTdGF0
ZS5wcm90b3R5cGUuY3VycmVudFRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgc3VpdGUgPSB0
aGlzLmN1cnJlbnRTdWl0ZSgpOworICAgIHJldHVybiBzdWl0ZSA/IHN1aXRlLnRlc3RzW3RoaXMu
X3Rlc3RJbmRleF0gOiBudWxsOworfQorCitCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUu
aXNGaXJzdFRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gIXRoaXMuX3Rlc3RJbmRleDsK
K30KKworQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbigpIHsK
KyAgICB0aGlzLl90ZXN0SW5kZXgrKzsKKworICAgIHZhciBzdWl0ZSA9IHRoaXMuX3N1aXRlc1t0
aGlzLl9zdWl0ZUluZGV4XTsKKyAgICBpZiAoc3VpdGUgJiYgdGhpcy5fdGVzdEluZGV4IDwgc3Vp
dGUudGVzdHMubGVuZ3RoKQorICAgICAgICByZXR1cm4gdGhpczsKKworICAgIHRoaXMuX3Rlc3RJ
bmRleCA9IDA7CisgICAgZG8geworICAgICAgICB0aGlzLl9zdWl0ZUluZGV4Kys7CisgICAgfSB3
aGlsZSAodGhpcy5fc3VpdGVJbmRleCA8IHRoaXMuX3N1aXRlcy5sZW5ndGggJiYgdGhpcy5fc3Vp
dGVzW3RoaXMuX3N1aXRlSW5kZXhdLmRpc2FibGVkKTsKKworICAgIHJldHVybiB0aGlzOworfQor
CitCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUucHJlcGFyZUN1cnJlbnRUZXN0ID0gZnVu
Y3Rpb24ocnVubmVyLCBmcmFtZSkgeworICAgIHZhciBzdWl0ZSA9IHRoaXMuY3VycmVudFN1aXRl
KCk7CisgICAgdmFyIHRlc3QgPSB0aGlzLmN1cnJlbnRUZXN0KCk7CisgICAgdmFyIHByb21pc2Ug
PSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICBmcmFtZS5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgc3VpdGUucHJlcGFyZShydW5uZXIsIGZyYW1lLmNvbnRlbnRXaW5kb3csIGZyYW1lLmNv
bnRlbnREb2N1bWVudCkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsgcHJvbWlzZS5yZXNvbHZlKHJl
c3VsdCk7IH0pOworICAgIH0KKyAgICBmcmFtZS5zcmMgPSB0ZXN0LnVybDsKKyAgICByZXR1cm4g
cHJvbWlzZTsKK30KKworZnVuY3Rpb24gQmVuY2htYXJrUnVubmVyKHN1aXRlcywgY2xpZW50KSB7
CisgICAgdGhpcy5fc3VpdGVzID0gc3VpdGVzOworICAgIHRoaXMuX2NsaWVudCA9IGNsaWVudDsK
K30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS53YWl0Rm9yRWxlbWVudCA9IGZ1bmN0aW9u
KHNlbGVjdG9yKSB7CisgICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICB2
YXIgY29udGVudERvY3VtZW50ID0gdGhpcy5fZnJhbWUuY29udGVudERvY3VtZW50OworCisgICAg
ZnVuY3Rpb24gcmVzb2x2ZUlmUmVhZHkoKSB7CisgICAgICAgIHZhciBlbGVtZW50ID0gY29udGVu
dERvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOworICAgICAgICBpZiAoZWxlbWVudCkK
KyAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnJlc29sdmUoZWxlbWVudCk7CisgICAgICAgIHNl
dFRpbWVvdXQocmVzb2x2ZUlmUmVhZHksIDUwKTsKKyAgICB9CisKKyAgICByZXNvbHZlSWZSZWFk
eSgpOworICAgIHJldHVybiBwcm9taXNlOworfQorCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBl
Ll9hcHBlbmRGcmFtZSA9IGZ1bmN0aW9uKHNyYykgeworICAgIHZhciBmcmFtZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGZyYW1lLnN0eWxlLndpZHRoID0gIjgwMHB4
IjsKKyAgICBmcmFtZS5zdHlsZS5oZWlnaHQgPSAiNjAwcHgiOworICAgIGZyYW1lLnN0eWxlLmJv
cmRlciA9ICIwcHggbm9uZSI7CisgICAgZnJhbWUuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUi
OworICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgic2Nyb2xsaW5nIiwgIm5vIik7CisKKyAgICB2YXIg
bWFyZ2luTGVmdCA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkubWFy
Z2luTGVmdCk7CisgICAgdmFyIG1hcmdpblRvcCA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUo
ZG9jdW1lbnQuYm9keSkubWFyZ2luVG9wKTsKKyAgICBpZiAod2luZG93LmlubmVyV2lkdGggPiA4
MDAgKyBtYXJnaW5MZWZ0ICYmIHdpbmRvdy5pbm5lckhlaWdodCA+IDYwMCArIG1hcmdpblRvcCkg
eworICAgICAgICBmcmFtZS5zdHlsZS5sZWZ0ID0gbWFyZ2luTGVmdCArICJweCI7CisgICAgICAg
IGZyYW1lLnN0eWxlLnRvcCA9IG1hcmdpblRvcCArICJweCI7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgZnJhbWUuc3R5bGUubGVmdCA9ICIwcHgiOworICAgICAgICBmcmFtZS5zdHlsZS50b3AgPSAi
MHB4IjsKKyAgICB9CisKKyAgICBpZiAodGhpcy5fY2xpZW50ICYmIHRoaXMuX2NsaWVudC53aWxs
QWRkVGVzdEZyYW1lKQorICAgICAgICB0aGlzLl9jbGllbnQud2lsbEFkZFRlc3RGcmFtZShmcmFt
ZSk7CisKKyAgICBkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShmcmFtZSwgZG9jdW1lbnQuYm9k
eS5maXJzdENoaWxkKTsKKyAgICB0aGlzLl9mcmFtZSA9IGZyYW1lOworICAgIHJldHVybiBmcmFt
ZTsKK30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcmVtb3ZlRnJhbWUgPSBmdW5jdGlv
bigpIHsKKyAgICBpZiAodGhpcy5fZnJhbWUpIHsKKyAgICAgICAgdGhpcy5fZnJhbWUucGFyZW50
Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9mcmFtZSk7CisgICAgICAgIHRoaXMuX2ZyYW1lID0gbnVs
bDsKKyAgICB9Cit9CisKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3J1blRlc3RBbmRSZWNv
cmRSZXN1bHRzID0gZnVuY3Rpb24oc3RhdGUpIHsKKyAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1w
bGVQcm9taXNlOworICAgIHZhciBzdWl0ZSA9IHN0YXRlLmN1cnJlbnRTdWl0ZSgpOworICAgIHZh
ciB0ZXN0ID0gc3RhdGUuY3VycmVudFRlc3QoKTsKKyAgICAKKyAgICBpZiAodGhpcy5fY2xpZW50
ICYmIHRoaXMuX2NsaWVudC53aWxsUnVuVGVzdFRlc3QpCisgICAgICAgIHRoaXMuX2NsaWVudC53
aWxsUnVuVGVzdChzdWl0ZSwgdGVzdCk7CisKKyAgICB2YXIgY29udGVudFdpbmRvdyA9IHRoaXMu
X2ZyYW1lLmNvbnRlbnRXaW5kb3c7CisgICAgdmFyIHNlbGYgPSB0aGlzOworCisgICAgc3VpdGUu
cnVuKGNvbnRlbnRXaW5kb3csIHRlc3QsIHRoaXMuX2NsaWVudC5vcHRpb25zLCB0aGlzLl9jbGll
bnQucmVjb3JkVGFibGUsIHRoaXMuX2NsaWVudC5wcm9ncmVzc0JhcikudGhlbihmdW5jdGlvbihz
YW1wbGVyKSB7CisgICAgICAgIHZhciBzYW1wbGVycyA9IHNlbGYuX3N1aXRlc1NhbXBsZXJzW3N1
aXRlLm5hbWVdIHx8IFtdOworICAgICAgICAKKyAgICAgICAgc2FtcGxlcnNbdGVzdC5uYW1lXSA9
IHNhbXBsZXI7CisgICAgICAgIHNlbGYuX3N1aXRlc1NhbXBsZXJzW3N1aXRlLm5hbWVdID0gc2Ft
cGxlcnM7CisKKyAgICAgICAgaWYgKHNlbGYuX2NsaWVudCAmJiBzZWxmLl9jbGllbnQuZGlkUnVu
VGVzdCkKKyAgICAgICAgICAgIHNlbGYuX2NsaWVudC5kaWRSdW5UZXN0KHN1aXRlLCB0ZXN0KTsK
KyAgICAgICAgCisgICAgICAgIHN0YXRlLm5leHQoKTsKKyAgICAgICAgaWYgKHN0YXRlLmN1cnJl
bnRTdWl0ZSgpICE9IHN1aXRlKQorICAgICAgICAgICAgc2VsZi5fcmVtb3ZlRnJhbWUoKTsKKyAg
ICAgICAgcHJvbWlzZS5yZXNvbHZlKHN0YXRlKTsKKyAgICB9KTsKKyAgICAKKyAgICByZXR1cm4g
cHJvbWlzZTsKK30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5zdGVwID0gZnVuY3Rpb24o
c3RhdGUpIHsKKyAgICBpZiAoIXN0YXRlKSB7CisgICAgICAgIHN0YXRlID0gbmV3IEJlbmNobWFy
a1J1bm5lclN0YXRlKHRoaXMuX3N1aXRlcyk7CisgICAgICAgIHRoaXMuX3N1aXRlc1NhbXBsZXJz
ID0ge307CisgICAgfQorCisgICAgdmFyIHN1aXRlID0gc3RhdGUuY3VycmVudFN1aXRlKCk7Cisg
ICAgaWYgKCFzdWl0ZSkgeworICAgICAgICB0aGlzLl9maW5hbGl6ZSgpOworICAgICAgICB2YXIg
cHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsK
KyAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAgfQorCisgICAgaWYgKHN0YXRlLmlzRmlyc3RU
ZXN0KCkpIHsKKyAgICAgICAgdGhpcy5fbWFzdXJlZFZhbHVlc0ZvckN1cnJlbnRTdWl0ZSA9IHt9
OworICAgICAgICB0aGlzLl9hcHBlbmRGcmFtZSgpOworICAgIH0KKworICAgIHZhciBzZWxmID0g
dGhpczsKKyAgICByZXR1cm4gc3RhdGUucHJlcGFyZUN1cnJlbnRUZXN0KHRoaXMsIHRoaXMuX2Zy
YW1lKS50aGVuKGZ1bmN0aW9uKHByZXBhcmVSZXR1cm5WYWx1ZSkgeworICAgICAgICByZXR1cm4g
c2VsZi5fcnVuVGVzdEFuZFJlY29yZFJlc3VsdHMoc3RhdGUpOworICAgIH0pOworfQorCitCZW5j
aG1hcmtSdW5uZXIucHJvdG90eXBlLnJ1bkFsbFN0ZXBzID0gZnVuY3Rpb24oc3RhcnRpbmdTdGF0
ZSkgeworICAgIHZhciBuZXh0Q2FsbGVlID0gdGhpcy5ydW5BbGxTdGVwcy5iaW5kKHRoaXMpOwor
ICAgIHRoaXMuc3RlcChzdGFydGluZ1N0YXRlKS50aGVuKGZ1bmN0aW9uKG5leHRTdGF0ZSkgewor
ICAgICAgICBpZiAobmV4dFN0YXRlKQorICAgICAgICAgICAgbmV4dENhbGxlZShuZXh0U3RhdGUp
OworICAgIH0pOworfQorCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLnJ1bk11bHRpcGxlSXRl
cmF0aW9ucyA9IGZ1bmN0aW9uKGl0ZXJhdGlvbkNvdW50KSB7CisgICAgdmFyIHNlbGYgPSB0aGlz
OworICAgIHZhciBjdXJyZW50SXRlcmF0aW9uID0gMDsKKworICAgIHRoaXMuX3J1bk5leHRJdGVy
YXRpb24gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgY3VycmVudEl0ZXJhdGlvbisrOworICAgICAg
ICBpZiAoY3VycmVudEl0ZXJhdGlvbiA8IGl0ZXJhdGlvbkNvdW50KQorICAgICAgICAgICAgc2Vs
Zi5ydW5BbGxTdGVwcygpOworICAgICAgICBlbHNlIGlmICh0aGlzLl9jbGllbnQgJiYgdGhpcy5f
Y2xpZW50LmRpZEZpbmlzaExhc3RJdGVyYXRpb24pCisgICAgICAgICAgICBzZWxmLl9jbGllbnQu
ZGlkRmluaXNoTGFzdEl0ZXJhdGlvbigpOworICAgIH0KKworICAgIGlmIChzZWxmLl9jbGllbnQg
JiYgc2VsZi5fY2xpZW50LndpbGxTdGFydEZpcnN0SXRlcmF0aW9uKQorICAgICAgICBzZWxmLl9j
bGllbnQud2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb24oaXRlcmF0aW9uQ291bnQpOworCisgICAgc2Vs
Zi5ydW5BbGxTdGVwcygpOworfQorCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9maW5hbGl6
ZSA9IGZ1bmN0aW9uKCkgeworICAgIHRoaXMuX3JlbW92ZUZyYW1lKCk7CisgICAgICAgIAorICAg
IGlmICh0aGlzLl9jbGllbnQgJiYgdGhpcy5fY2xpZW50LmRpZFJ1blN1aXRlcykKKyAgICAgICAg
dGhpcy5fY2xpZW50LmRpZFJ1blN1aXRlcyh0aGlzLl9zdWl0ZXNTYW1wbGVycyk7CisKKyAgICBp
ZiAodGhpcy5fcnVuTmV4dEl0ZXJhdGlvbikKKyAgICAgICAgdGhpcy5fcnVuTmV4dEl0ZXJhdGlv
bigpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJj
ZXMvZ3JhcGguanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1
bm5lci9yZXNvdXJjZXMvZ3JhcGguanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9ncmFwaC5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE0MSBAQAorZnVuY3Rpb24gZ3JhcGgoc2VsZWN0b3IsIHNpemUsIG1hcmdpbnMsIGF4
aXNlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KSB7CisKKyAgICB2YXIgZWxlbWVudCA9
IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKKyAgICB3aGlsZSAo
ZWxlbWVudC5maXJzdENoaWxkKQorICAgICAgICBlbGVtZW50LnJlbW92ZUNoaWxkKGVsZW1lbnQu
Zmlyc3RDaGlsZCk7CisKKyAgICB2YXIgeCA9IGQzLnNjYWxlLmxpbmVhcigpCisgICAgICAgICAg
ICAucmFuZ2UoWzAsIHNpemUud2lkdGgoKV0pCisgICAgICAgICAgICAuZG9tYWluKGQzLmV4dGVu
dChzYW1wbGVzLCBmdW5jdGlvbihkKSB7IHJldHVybiBkLnRpbWVPZmZzZXQ7IH0pKTsgICAgICAg
ICAgICAKKworICAgIHZhciB5TGVmdCA9IGQzLnNjYWxlLmxpbmVhcigpCisgICAgICAgICAgICAu
cmFuZ2UoW3NpemUuaGVpZ2h0KCksIDBdKQorICAgICAgICAgICAgLmRvbWFpbihbMCwgZDMubWF4
KHNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudmFsdWVzWzBdOyB9KV0pOworCisgICAg
dmFyIHlSaWdodCA9IGQzLnNjYWxlLmxpbmVhcigpCisgICAgICAgICAgICAucmFuZ2UoW3NpemUu
aGVpZ2h0KCksIDBdKQorICAgICAgICAgICAgLmRvbWFpbihbMCwgZDMubWF4KHNhbXBsZXMsIGZ1
bmN0aW9uKGQpIHsgcmV0dXJuIGQudmFsdWVzWzFdOyB9KV0pOworCisgICAgdmFyIHhBeGlzID0g
ZDMuc3ZnLmF4aXMoKQorICAgICAgICAgICAgLnNjYWxlKHgpCisgICAgICAgICAgICAub3JpZW50
KCJib3R0b20iKTsKKworICAgIHZhciB5QXhpc0xlZnQgPSBkMy5zdmcuYXhpcygpCisgICAgICAg
ICAgICAuc2NhbGUoeUxlZnQpCisgICAgICAgICAgICAub3JpZW50KCJsZWZ0Iik7CisKKyAgICB2
YXIgeUF4aXNSaWdodCA9IGQzLnN2Zy5heGlzKCkKKyAgICAgICAgICAgIC5zY2FsZSh5UmlnaHQp
CisgICAgICAgICAgICAub3JpZW50KCJyaWdodCIpOworCisgICAgdmFyIGxpbmVMZWZ0ID0gZDMu
c3ZnLmxpbmUoKQorICAgICAgICAgICAgLngoZnVuY3Rpb24oZCkgeyByZXR1cm4geChkLnRpbWVP
ZmZzZXQpOyB9KQorICAgICAgICAgICAgLnkoZnVuY3Rpb24oZCkgeyByZXR1cm4geUxlZnQoZC52
YWx1ZXNbMF0pOyB9KTsKKworICAgIHZhciBsaW5lUmlnaHQgPSBkMy5zdmcubGluZSgpCisgICAg
ICAgICAgICAueChmdW5jdGlvbihkKSB7IHJldHVybiB4KGQudGltZU9mZnNldCk7IH0pCisgICAg
ICAgICAgICAueShmdW5jdGlvbihkKSB7IHJldHVybiB5UmlnaHQoZC52YWx1ZXNbMV0pOyB9KTsK
KworICAgIHNhbXBsZXMuZm9yRWFjaChmdW5jdGlvbihkKSB7CisgICAgICAgIGQudGltZU9mZnNl
dCA9ICtkLnRpbWVPZmZzZXQ7CisgICAgICAgIGQudmFsdWVzWzBdID0gK2QudmFsdWVzWzBdOwor
ICAgICAgICBkLnZhbHVlc1sxXSA9ICtkLnZhbHVlc1sxXTsgICAgICAgIAorICAgIH0pOyAgICAK
KworICAgIHZhciBzYW1wbGVkU2FtcGxlcyA9IHNhbXBsZXMuZmlsdGVyKGZ1bmN0aW9uKGQpIHsK
KyAgICAgICAgcmV0dXJuIGQudGltZU9mZnNldCA+PSBzYW1wbGluZ1RpbWVPZmZzZXQ7CisgICAg
fSk7CisgICAgCisgICAgdmFyIG1lYW5MZWZ0ID0gZDMubWVhbihzYW1wbGVkU2FtcGxlcywgZnVu
Y3Rpb24oZCkgeworICAgICAgICByZXR1cm4gK2QudmFsdWVzWzBdOworICAgIH0pOworCisgICAg
dmFyIG1lYW5SaWdodCA9IGQzLm1lYW4oc2FtcGxlZFNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsKKyAg
ICAgICAgcmV0dXJuICtkLnZhbHVlc1sxXTsKKyAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKKyAgICB2YXIgc3ZnID0gZDMuc2VsZWN0KHNlbGVjdG9yKS5hcHBlbmQoInN2ZyIp
CisgICAgICAgIC5hdHRyKCJ3aWR0aCIsIHNpemUud2lkdGgoKSArIG1hcmdpbnMubGVmdCArIG1h
cmdpbnMucmlnaHQpCisgICAgICAgIC5hdHRyKCJoZWlnaHQiLCBzaXplLmhlaWdodCgpICsgbWFy
Z2lucy50b3AgKyBtYXJnaW5zLmJvdHRvbSkKKyAgICAgICAgLmFwcGVuZCgiZyIpCisgICAgICAg
ICAgICAuYXR0cigidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiICsgbWFyZ2lucy5sZWZ0ICsgIiwi
ICsgbWFyZ2lucy50b3AgKyAiKSIpOworCisgICAgLy8geC1heGlzCisgICAgc3ZnLmFwcGVuZCgi
ZyIpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJ4IGF4aXMiKQorICAgICAgICAuYXR0cigiZmls
bCIsICJyZ2IoMjM1LCAyMzUsIDIzNSkiKQorICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInRy
YW5zbGF0ZSgwLCIgKyBzaXplLmhlaWdodCgpICsgIikiKQorICAgICAgICAuY2FsbCh4QXhpcykK
KyAgICAgICAgLmFwcGVuZCgidGV4dCIpCisgICAgICAgICAgICAuYXR0cigiY2xhc3MiLCAibGFi
ZWwiKQorICAgICAgICAgICAgLmF0dHIoIngiLCBzaXplLndpZHRoKCkpCisgICAgICAgICAgICAu
YXR0cigieSIsIC02KQorICAgICAgICAgICAgLmF0dHIoImZpbGwiLCAicmdiKDIzNSwgMjM1LCAy
MzUpIikKKyAgICAgICAgICAgIC5zdHlsZSgidGV4dC1hbmNob3IiLCAiZW5kIikKKyAgICAgICAg
ICAgIC50ZXh0KCJ0aW1lIik7CisgICAgICAgICAgICAgICAgIAorICAgIC8vIHlMZWZ0LWF4aXMK
KyAgICBzdmcuYXBwZW5kKCJnIikKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgInkgYXhpcyIpCisg
ICAgICAgIC5hdHRyKCJmaWxsIiwgInN0ZWVsYmx1ZSIpCisgICAgICAgIC5jYWxsKHlBeGlzTGVm
dCkKKyAgICAgICAgLmFwcGVuZCgidGV4dCIpCisgICAgICAgICAgICAuYXR0cigiY2xhc3MiLCAi
bGFiZWwiKQorICAgICAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJyb3RhdGUoLTkwKSIpCisg
ICAgICAgICAgICAuYXR0cigieSIsIDYpCisgICAgICAgICAgICAuYXR0cigiZmlsbCIsICJzdGVl
bGJsdWUiKQorICAgICAgICAgICAgLmF0dHIoImR5IiwgIi43MWVtIikKKyAgICAgICAgICAgIC5z
dHlsZSgidGV4dC1hbmNob3IiLCAiZW5kIikKKyAgICAgICAgICAgIC50ZXh0KGF4aXNlc1swXSk7
CisKKyAgICAvLyB5UmlnaHQtYXhpcworICAgIHN2Zy5hcHBlbmQoImciKQorICAgICAgICAuYXR0
cigiY2xhc3MiLCAieSBheGlzIikKKyAgICAgICAgLmF0dHIoImZpbGwiLCAicmVkIikKKyAgICAg
ICAgLmF0dHIoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoIiArIHNpemUud2lkdGgoKSArICIsIDAp
IikKKyAgICAgICAgLmNhbGwoeUF4aXNSaWdodCkKKyAgICAgICAgLmFwcGVuZCgidGV4dCIpCisg
ICAgICAgICAgICAuYXR0cigiY2xhc3MiLCAibGFiZWwiKQorICAgICAgICAgICAgLmF0dHIoInRy
YW5zZm9ybSIsICJyb3RhdGUoLTkwKSIpCisgICAgICAgICAgICAuYXR0cigieSIsIDYpCisgICAg
ICAgICAgICAuYXR0cigiZmlsbCIsICJyZWQiKQorICAgICAgICAgICAgLmF0dHIoImR5IiwgIi43
MWVtIikKKyAgICAgICAgICAgIC5zdHlsZSgidGV4dC1hbmNob3IiLCAiZW5kIikKKyAgICAgICAg
ICAgIC50ZXh0KGF4aXNlc1sxXSk7CisKKyAgICAvLyBsZWZ0LW1lYW4KKyAgICBzdmcuYXBwZW5k
KCJzdmc6bGluZSIpCisgICAgICAgIC5hdHRyKCJ4MSIsIHgoMCkpCisgICAgICAgIC5hdHRyKCJ4
MiIsIHNpemUud2lkdGgoKSkKKyAgICAgICAgLmF0dHIoInkxIiwgeUxlZnQobWVhbkxlZnQpKQor
ICAgICAgICAuYXR0cigieTIiLCB5TGVmdChtZWFuTGVmdCkpCisgICAgICAgIC5hdHRyKCJjbGFz
cyIsICJsZWZ0LW1lYW4iKTsKKworICAgIC8vIHJpZ2h0LW1lYW4KKyAgICBzdmcuYXBwZW5kKCJz
dmc6bGluZSIpCisgICAgICAgIC5hdHRyKCJ4MSIsIHgoMCkpCisgICAgICAgIC5hdHRyKCJ4MiIs
IHNpemUud2lkdGgoKSkKKyAgICAgICAgLmF0dHIoInkxIiwgeVJpZ2h0KG1lYW5SaWdodCkpCisg
ICAgICAgIC5hdHRyKCJ5MiIsIHlSaWdodChtZWFuUmlnaHQpKQorICAgICAgICAuYXR0cigiY2xh
c3MiLCAicmlnaHQtbWVhbiIpOyAgICAgICAgCisKKyAgICAvLyBzYW1wbGluZ1RpbWVPZmZzZXQK
KyAgICBzdmcuYXBwZW5kKCJsaW5lIikKKyAgICAgICAgLmF0dHIoIngxIiwgeChzYW1wbGluZ1Rp
bWVPZmZzZXQpKQorICAgICAgICAuYXR0cigieDIiLCB4KHNhbXBsaW5nVGltZU9mZnNldCkpCisg
ICAgICAgIC5hdHRyKCJ5MSIsIHlMZWZ0KDApKQorICAgICAgICAuYXR0cigieTIiLCB5TGVmdCh5
QXhpc0xlZnQuc2NhbGUoKS5kb21haW4oKVsxXSkpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJz
bWFwbGUtdGltZSIpOworCisgICAgLy8gbGVmdC1zYW1wbGVzCisgICAgc3ZnLmFwcGVuZCgicGF0
aCIpCisgICAgICAgIC5kYXR1bShzYW1wbGVzKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAibGVm
dC1zYW1wbGVzIikKKyAgICAgICAgLmF0dHIoImQiLCBsaW5lTGVmdCk7CisgICAgICAgIAorICAg
IC8vIHJpZ2h0LXNhbXBsZXMKKyAgICBzdmcuYXBwZW5kKCJwYXRoIikKKyAgICAgICAgLmRhdHVt
KHNhbXBsZXMpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJyaWdodC1zYW1wbGVzIikKKyAgICAg
ICAgLmF0dHIoImQiLCBsaW5lUmlnaHQpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMJKHJldmlzaW9uIDAp
CisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy90ZXN0cy5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0MSBAQAordmFyIFRpdGxlcyA9IFsKKyAgICB7
CisgICAgICAgIHRleHQgOiAiVGVzdCBOYW1lIiwKKyAgICAgICAgd2lkdGggOiAyNSwKKyAgICAg
ICAgY2hpbGRyZW46IFtdCisgICAgfSwgeworICAgICAgICB0ZXh0IDogIkFuaW1hdGVkIEl0ZW1z
IiwKKyAgICAgICAgd2lkdGggOiAzMSwKKyAgICAgICAgY2hpbGRyZW46IFsKKyAgICAgICAgICAg
IHsgdGV4dDogICAiQXZnLiIsIHdpZHRoOiA2LCBjaGlsZHJlbjogW10gfSwKKyAgICAgICAgICAg
IHsgdGV4dDogIlx1MDBiMSIsIHdpZHRoOiA1LCBjaGlsZHJlbjogW10gfSwKKyAgICAgICAgICAg
IHsgdGV4dDogICAiVy41JSIsIHdpZHRoOiA1LCBjaGlsZHJlbjogW10gfSwKKyAgICAgICAgICAg
IHsgdGV4dDogICAiU3RkLiIsIHdpZHRoOiA1LCBjaGlsZHJlbjogW10gfSwKKyAgICAgICAgICAg
IHsgdGV4dDogICAgICAiJSIsIHdpZHRoOiA1LCBjaGlsZHJlbjogW10gfSwKKyAgICAgICAgXQor
ICAgIH0sIHsKKyAgICAgICAgdGV4dCA6ICJGUFMiLAorICAgICAgICB3aWR0aCA6IDMxLAorICAg
ICAgICBjaGlsZHJlbjogWworICAgICAgICAgICAgeyB0ZXh0OiAgICJBdmcuIiwgd2lkdGg6IDYs
IGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAiXHUwMGIxIiwgd2lkdGg6IDUs
IGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAgICJXLjUlIiwgd2lkdGg6IDUs
IGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAgICJTdGQuIiwgd2lkdGg6IDUs
IGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAgICAgICIlIiwgd2lkdGg6IDUs
IGNoaWxkcmVuOiBbXSB9LAorICAgICAgICBdCisgICAgfSwgeworICAgICAgICB0ZXh0IDogIlNj
b3JlIiwKKyAgICAgICAgd2lkdGggOiA2LAorICAgICAgICBjaGlsZHJlbjogW10KKyAgICB9LCB7
CisgICAgICAgIHRleHQgOiAiU2FtcGxlcyIsCisgICAgICAgIHdpZHRoIDogNywKKyAgICAgICAg
Y2hpbGRyZW46IFtdCisgICAgfQorXTsKKwordmFyIFN1aXRlcyA9IFtdOworCitTdWl0ZXMucHVz
aCh7CisgICAgbmFtZTogIkhUTUwgQm91bmNpbmcgUGFydGljbGVzIiwKKyAgICBwcmVwYXJlOiBm
dW5jdGlvbihydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAg
ICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCIjc3RhZ2UiKS50aGVuKGZ1bmN0aW9uIChl
bGVtZW50KSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAg
fSwgIAorICAgIHJ1bjogZnVuY3Rpb24oY29udGVudFdpbmRvdywgdGVzdCwgb3B0aW9ucywgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgICAgIHJldHVybiBjb250ZW50V2luZG93LnJ1
bkJlbmNobWFyayh0aGlzLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
OworICAgIH0sCisgICAgdGl0bGVzIDogVGl0bGVzLAorICAgIHRlc3RzOiBbCisgICAgICAgIHsg
CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
c2hhcGVzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lk
dGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKKyAgICAgICAgICAgIG5hbWU6
ICJib3VuY2luZyBjaXJjbGVzIgorICAgICAgICB9LCB7IAorICAgICAgICAgICAgdXJsOiAiLi4v
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXNoYXBlcy5odG1sP2dhaW49MSZhZGRM
aW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSZwYXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xlSGVpZ2h0PTQw
JnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKKyAgICAgICAgICAgIG5hbWU6ICJib3VuY2luZyBjbGlw
cGVkIHJlY3RzIgorICAgICAgICB9LCB7IAorICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXNoYXBlcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAm
cmVtb3ZlTGltaXQ9NSZwYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNp
cmNsZSZmaWxsPWdyYWRpZW50IiwKKyAgICAgICAgICAgIG5hbWU6ICJib3VuY2luZyBncmFkaWVu
dCBjaXJjbGVzIgorICAgICAgICB9LCB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctaW1hZ2VzLmh0bWw/Z2Fpbj0wLjQmYWRkTGltaXQ9NSZy
ZW1vdmVMaW1pdD0yJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9
Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICBuYW1lOiAiYm91bmNpbmcg
U1ZHIGltYWdlcyIKKyAgICAgICAgfSwgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWltYWdlcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAm
cmVtb3ZlTGltaXQ9NSZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3Jj
PS4uL3Jlc291cmNlcy95aW4teWFuZy5wbmciLAorICAgICAgICAgICAgbmFtZTogImJvdW5jaW5n
IFBORyBpbWFnZXMiCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL3Rl
eHQvbGF5ZXJpbmctdGV4dC5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAw
IiwKKyAgICAgICAgICAgIG5hbWU6ICJsYXllcmluZyB0ZXh0IgorICAgICAgICB9CisgICAgXQor
fSk7CisKK1N1aXRlcy5wdXNoKHsKKyAgICBuYW1lOiAiQ2FudmFzIEJvdW5jaW5nIFBhcnRpY2xl
cyIsCisgICAgcHJlcGFyZTogZnVuY3Rpb24ocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50
RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgiI3N0YWdl
IikudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7
CisgICAgICAgIH0pOworICAgIH0sICAKKyAgICBydW46IGZ1bmN0aW9uKGNvbnRlbnRXaW5kb3cs
IHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgICAgICByZXR1
cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhpcywgdGVzdCwgb3B0aW9ucywgcmVjb3Jk
VGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICB9LAorICAgIHRpdGxlcyA6IFRpdGxlcywKKyAgICB0
ZXN0czogWworICAgICAgICB7IAorICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAw
JnJlbW92ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFw
ZT1jaXJjbGUiLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBjaXJjbGVzIgor
ICAgICAgICB9LCB7IAorICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92
ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0
JmNsaXA9c3RhciIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGNsaXBwZWQg
cmVjdHMiCisgICAgICAgIH0sIHsgCisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP2dhaW49NCZhZGRMaW1pdD0x
MDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNo
YXBlPWNpcmNsZSZmaWxsPWdyYWRpZW50IiwKKyAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91
bmNpbmcgZ3JhZGllbnQgY2lyY2xlcyIKKyAgICAgICAgfSwgeyAKKyAgICAgICAgICAgIHVybDog
Ii4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/
Z2Fpbj0wLjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0xJnBhcnRpY2xlV2lkdGg9ODAmcGFydGlj
bGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAg
ICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIFNWRyBpbWFnZXMiCisgICAgICAgIH0sIHsKKyAg
ICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52
YXMtaW1hZ2VzLmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEwMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0
aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4t
eWFuZy5wbmciLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBQTkcgaW1hZ2Vz
IgorICAgICAgICB9CisgICAgXQorfSk7CisKK1N1aXRlcy5wdXNoKHsKKyAgICBuYW1lOiAiU1ZH
IEJvdW5jaW5nIFBhcnRpY2xlcyIsCisgICAgcHJlcGFyZTogZnVuY3Rpb24ocnVubmVyLCBjb250
ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0
Rm9yRWxlbWVudCgiI3N0YWdlIikudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAg
ICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sICAKKyAgICBydW46IGZ1bmN0
aW9uKGNvbnRlbnRXaW5kb3csIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jh
cikgeworICAgICAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhpcywgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICB9LAorICAgIHRpdGxl
cyA6IFRpdGxlcywKKyAgICB0ZXN0czogWworICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICIu
Li90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP2dhaW49
NiZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xl
SGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCisgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5n
IGNpcmNsZXMiLAorICAgICAgICB9LCB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP2dhaW49MC42JmFkZExpbWl0
PTEwJnJlbW92ZUxpbWl0PTEmcGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFw
ZT1yZWN0JmNsaXA9c3RhciIsCisgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIGNsaXBw
ZWQgcmVjdHMiLAorICAgICAgICB9LCB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP2dhaW49MC44JmFkZExpbWl0
PTEwJnJlbW92ZUxpbWl0PTQmcGFydGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFw
ZT1jaXJjbGUmZmlsbD1ncmFkaWVudCIsCisgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5n
IGdyYWRpZW50IGNpcmNsZXMiCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw/Z2Fpbj0wLjQm
YWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0yJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9
ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICBuYW1l
OiAiU1ZHIGJvdW5jaW5nIFNWRyBpbWFnZXMiCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHVy
bDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw/
Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9ODAmcGFydGlj
bGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCisgICAgICAg
ICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIFBORyBpbWFnZXMiCisgICAgICAgIH0KKyAgICBdCit9
KTsKKworZnVuY3Rpb24gc3VpdGVGcm9tTmFtZShuYW1lKSB7CisgICAgcmV0dXJuIFN1aXRlcy5m
aW5kKGZ1bmN0aW9uKHN1aXRlKSB7IHJldHVybiBzdWl0ZS5uYW1lID09IG5hbWU7IH0pOworfQor
CitmdW5jdGlvbiB0ZXN0RnJvbU5hbWUoc3VpdGUsIG5hbWUpIHsKKyAgICByZXR1cm4gc3VpdGUu
dGVzdHMuZmluZChmdW5jdGlvbih0ZXN0KSB7IHJldHVybiB0ZXN0Lm5hbWUgPT0gbmFtZTsgfSk7
Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNh
bnZhcy1pbWFnZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgPHN0eWxlPgorICAgIGltZy5oaWRkZW4geworICAgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOworICAgIH0KKyAgPC9zdHlsZT4KKyAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2Vz
L2JlbmNobWFyay5jc3MiPgorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRo
bS5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlzdGlj
cy5qcyI+PC9zY3JpcHQ+ICAKKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9tYWluLmpz
Ij48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3Njcmlw
dD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuanMiPjwvc2NyaXB0Pgor
ICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCisgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlw
dCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorICA8aW1nIGNsYXNzPSJoaWRkZW4iIHNyYz0iLi4vcmVzb3VyY2VzL3lp
bi15YW5nLnN2ZyI+CisgIDxpbWcgY2xhc3M9ImhpZGRlbiIgc3JjPSIuLi9yZXNvdXJjZXMveWlu
LXlhbmcucG5nIj4KKyAgPGNhbnZhcyBpZD0ic3RhZ2UiPjwvY2FudmFzPgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1j
YW52YXMtc2hhcGVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9
Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PiAgCisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0
aC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYmVuY2htYXJrLmpz
Ij48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwv
c2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4K
KyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0
PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxjYW52YXMgaWQ9InN0YWdlIj48L2NhbnZhcz4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctaW1hZ2VzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3Vu
Y2luZy1pbWFnZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctaW1hZ2VzLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorICA8c3R5bGU+CisgICAgaW1nIHsKKyAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB9
CisgIDwvc3R5bGU+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhy
ZWY9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PiAgCisgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
bWF0aC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYmVuY2htYXJr
LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMi
Pjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3Njcmlw
dD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2Ny
aXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLWltYWdlcy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0ic3RhZ2UiPjwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9ib3VuY2luZy1zaGFwZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXNoYXBl
cy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zaGFwZXMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHls
ZT4KKyAgICAuY2lyY2xlIHsKKyAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgIGJhY2tn
cm91bmQtY29sb3I6ICMwMDAwMDA7CisgICAgICBib3JkZXItcmFkaXVzOiA1MCUgNTAlOworICAg
IH0KKyAgICAucmVjdCB7CisgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiAjMDAwMDAwOworICAgIH0KKyAgICAuc3RhciB7CisgICAgICAtd2Via2l0LWNs
aXAtcGF0aDogcG9seWdvbig1MCUgMCUsIDM4JSAzOCUsIDAlIDM4JSwgMzAlIDYwJSwgMTglIDEw
MCUsIDUwJSA3NSUsIDgyJSAxMDAlLCA3MCUgNjAlLCAxMDAlIDM4JSwgNjIlIDM4JSk7CisgICAg
ICAtbXMtY2xpcC1wYXRoOiBwb2x5Z29uKDUwJSAwJSwgMzglIDM4JSwgMCUgMzglLCAzMCUgNjAl
LCAxOCUgMTAwJSwgNTAlIDc1JSwgODIlIDEwMCUsIDcwJSA2MCUsIDEwMCUgMzglLCA2MiUgMzgl
KTsgIAorICAgICAgY2xpcC1wYXRoOiBwb2x5Z29uKDUwJSAwJSwgMzglIDM4JSwgMCUgMzglLCAz
MCUgNjAlLCAxOCUgMTAwJSwgNTAlIDc1JSwgODIlIDEwMCUsIDcwJSA2MCUsIDEwMCUgMzglLCA2
MiUgMzglKTsKKyAgICB9CisgIDwvc3R5bGU+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlw
ZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PiAgCisgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0
YWdlLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0
aWNsZXMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXNo
YXBlcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0ic3RhZ2UiPjwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1p
bWFnZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9j
c3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PiAgCisgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYmVu
Y2htYXJrLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRp
ZXMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48
L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMi
Pjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxzdmcgaWQ9InN0YWdlIj48L3N2Zz4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
Ym91bmNpbmctc3ZnLXNoYXBlcy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVz
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBo
cmVmPSIuLi9yZXNvdXJjZXMvYmVuY2htYXJrLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9t
YXRoLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsu
anMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+
PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0
PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3Jp
cHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHN2ZyBpZD0ic3RhZ2UiPjwvc3ZnPgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzCShyZXZpc2lvbiAwKQorKysg
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNv
dXJjZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDgyIEBACitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc0ltYWdlKHN0YWdlKSB7CisgICAgQm91bmNp
bmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gc3RhZ2Uu
Y29udGV4dDsKKyAgICB0aGlzLl9pbWFnZUVsZW1lbnQgPSBzdGFnZS5pbWFnZUVsZW1lbnQ7Cit9
CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2lu
Z1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc0ltYWdlLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzSW1hZ2U7CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2UucHJv
dG90eXBlLl9kcmF3ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGNlbnRlciA9IHRoaXMuY2VudGVy
KCk7CisKKyAgICB0aGlzLl9jb250ZXh0LnNhdmUoKTsKKyAgICB0aGlzLl9jb250ZXh0LnRyYW5z
bGF0ZShjZW50ZXIueCwgY2VudGVyLnkpOworICAgIHRoaXMuX2NvbnRleHQucm90YXRlKHRoaXMu
X3JvdGF0ZXIuZGVncmVlKCkgKiBNYXRoLlBJIC8gMTgwKTsKKyAgICB0aGlzLl9jb250ZXh0LnRy
YW5zbGF0ZSgtdGhpcy5fc2l6ZS54IC8gMiwgLXRoaXMuX3NpemUueSAvIDIpOworICAgIAorICAg
IHRoaXMuX2NvbnRleHQuZHJhd0ltYWdlKHRoaXMuX2ltYWdlRWxlbWVudCwgMCwgMCwgdGhpcy5f
c2l6ZS54LCB0aGlzLl9zaXplLnkpOworICAgIHRoaXMuX2NvbnRleHQucmVzdG9yZSgpOworfQor
CitCb3VuY2luZ0NhbnZhc0ltYWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURl
bHRhKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMs
IHRpbWVEZWx0YSk7CisgICAgdGhpcy5fZHJhdygpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0Nh
bnZhc0ltYWdlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xl
c1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5jb250ZXh0ID0g
dGhpcy5lbGVtZW50LmdldENvbnRleHQoIjJkIik7CisgICAgdmFyIGltYWdlU3JjID0gb3B0aW9u
c1siaW1hZ2VTcmMiXSB8fCAicmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7CisgICAgCisgICAgdmFy
IGltYWdlRWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJoaWRkZW4i
KTsKKyAgICBjb25zb2xlLmFzc2VydChpbWFnZUVsZW1lbnRzLmxlbmd0aCk7CisgICAgICAgIAor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW1hZ2VFbGVtZW50cy5sZW5ndGg7ICsraSkgeworICAg
ICAgICBpZiAoaW1hZ2VFbGVtZW50c1tpXS5nZXRBdHRyaWJ1dGUoInNyYyIpID09IGltYWdlU3Jj
KSB7CisgICAgICAgICAgICB0aGlzLmltYWdlRWxlbWVudCA9IGltYWdlRWxlbWVudHNbaV07Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCisgICAgfQorCisgICAgdGhpcy5pbWFnZUVsZW1lbnQgPSB0aGlzLmltYWdlRWxlbWVu
dCB8fCBpbWFnZUVsZW1lbnRzWzBdOworfQorCitCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlLnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUp
OworQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3Vu
Y2luZ0NhbnZhc0ltYWdlc1N0YWdlOworCitCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlLnByb3Rv
dHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcgQm91bmNp
bmdDYW52YXNJbWFnZSh0aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNJbWFnZXNB
bmltYXRvcihiZW5jaG1hcmspIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLmNhbGwo
dGhpcywgYmVuY2htYXJrKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJrLl9zdGFnZS5j
b250ZXh0OworfQorCitCb3VuY2luZ0NhbnZhc0ltYWdlc0FuaW1hdG9yLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUpOworQm91bmNp
bmdDYW52YXNJbWFnZXNBbmltYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0Nh
bnZhc0ltYWdlc0FuaW1hdG9yOworCitCb3VuY2luZ0NhbnZhc0ltYWdlc0FuaW1hdG9yLnByb3Rv
dHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5fY29udGV4dC5jbGVhclJlY3Qo
MCwgMCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplKCkueCwgdGhpcy5fYmVuY2htYXJrLl9z
dGFnZS5zaXplKCkueSk7CisgICAgcmV0dXJuIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJv
dG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNJ
bWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0JhcikgeworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUs
IHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5n
Q2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQ
YXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2ht
YXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJr
OworCitCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2Ug
PSBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdl
c1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCitCb3VuY2luZ0NhbnZhc0ltYWdl
c0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlvbigpIHsKKyAgICBy
ZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0b3IodGhpcyk7Cit9CisKK3dpbmRv
dy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIHdpbmRvdy5iZW5jaG1hcmsgPSBuZXcg
Qm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29y
ZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hh
cGVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanMJKHJl
dmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTQyIEBACitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1NoYXBlKHN0YWdl
KSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9z
aGFwZSA9IHN0YWdlLnNoYXBlOworICAgIHRoaXMuX2ZpbGwgPSBzdGFnZS5maWxsOworICAgIHRo
aXMuX2NsaXAgPSBzdGFnZS5jbGlwOworICAgIHRoaXMuX2NvbnRleHQgPSBzdGFnZS5jb250ZXh0
OworICAgIHRoaXMuX2NvbG9yMCA9IHN0YWdlLnJhbmRvbUNvbG9yKCk7CisgICAgdGhpcy5fY29s
b3IxID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsgICAgCit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGUu
cHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZSk7CitC
b3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFz
U2hhcGU7CisKK0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLl9kcmF3ID0gZnVuY3Rpb24o
KSB7CisgICAgCisgICAgdGhpcy5fY29udGV4dC5zYXZlKCk7CisgICAgdGhpcy5fY29udGV4dC50
cmFuc2xhdGUodGhpcy5fcG9zaXRpb24ueCwgdGhpcy5fcG9zaXRpb24ueSk7CisKKyAgICAvLyBT
ZXR0aW5nIHRoZSBmaWxsIHN0eWxlCisgICAgc3dpdGNoICh0aGlzLl9maWxsKSB7CisgICAgY2Fz
ZSAic29saWQiOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbFN0eWxl
ID0gdGhpcy5fY29sb3IwOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgImdyYWRpZW50IjoK
KyAgICAgICAgdmFyIGdyYWRpZW50ID0gdGhpcy5fY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVu
dCgwLCAwLCB0aGlzLl9zaXplLndpZHRoKCksIDApOworICAgICAgICBncmFkaWVudC5hZGRDb2xv
clN0b3AoMCwgdGhpcy5fY29sb3IwKTsKKyAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDEs
IHRoaXMuX2NvbG9yMSk7IAorICAgICAgICB0aGlzLl9jb250ZXh0LmZpbGxTdHlsZSA9IGdyYWRp
ZW50OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyBSb3RhdGlvbiBhcm91bmQgdGhl
IGNlbnRlcgorICAgIGlmICh0aGlzLl9zaGFwZSAhPSAiY2lyY2xlIikgeworICAgICAgICB0aGlz
Ll9jb250ZXh0LnRyYW5zbGF0ZSh0aGlzLl9zaXplLnggLyAyLCB0aGlzLl9zaXplLnkgLyAyKTsK
KyAgICAgICAgdGhpcy5fY29udGV4dC5yb3RhdGUodGhpcy5fcm90YXRlci5kZWdyZWUoKSAqIE1h
dGguUEkgLyAxODApOworICAgICAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSgtdGhpcy5fc2l6
ZS54IC8gMiwgLXRoaXMuX3NpemUueSAvIDIpOworICAgIH0KKworICAgIHZhciBjbGlwUG9pbnRz
ID0gbnVsbDsKKyAgICAKKyAgICBzd2l0Y2ggKHRoaXMuX2NsaXApIHsKKyAgICBjYXNlICJzdGFy
IjoKKyAgICAgICAgY2xpcFBvaW50cyA9ICBbCisgICAgICAgICAgICBuZXcgUG9pbnQoMC41MCwg
MC4wMCksCisgICAgICAgICAgICBuZXcgUG9pbnQoMC4zOCwgMC4zOCksCisgICAgICAgICAgICBu
ZXcgUG9pbnQoMC4wMCwgMC4zOCksCisgICAgICAgICAgICBuZXcgUG9pbnQoMC4zMCwgMC42MCks
CisgICAgICAgICAgICBuZXcgUG9pbnQoMC4xOCwgMS4wMCksCisgICAgICAgICAgICBuZXcgUG9p
bnQoMC41MCwgMC43NSksCisgICAgICAgICAgICBuZXcgUG9pbnQoMC44MiwgMS4wMCksCisgICAg
ICAgICAgICBuZXcgUG9pbnQoMC43MCwgMC42MCksCisgICAgICAgICAgICBuZXcgUG9pbnQoMS4w
MCwgMC4zOCksCisgICAgICAgICAgICBuZXcgUG9pbnQoMC42MiwgMC4zOCkKKyAgICAgICAgXTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGlmIChjbGlwUG9pbnRzKSB7CisgICAg
ICAgIHRoaXMuX2NvbnRleHQuYmVnaW5QYXRoKCk7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsK
KyAgICAgICAgY2xpcFBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKHBvaW50LCBpbmRleCkgeworICAg
ICAgICAgICAgdmFyIHBvaW50ID0gc2VsZi5fc2l6ZS5tdWx0aXBseShwb2ludCk7CisgICAgICAg
ICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgICAgIHNlbGYuX2NvbnRleHQubW92ZVRvKHBv
aW50LngsIHBvaW50LnkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNlbGYu
X2NvbnRleHQubGluZVRvKHBvaW50LngsIHBvaW50LnkpOworICAgICAgICB9KTsKKyAgICAgICAg
dGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTsKKyAgICAgICAgdGhpcy5fY29udGV4dC5jbGlwKCk7
CisgICAgfQorCisgICAgLy8gU2hhcGUgZHJhd2luZworICAgIHRoaXMuX2NvbnRleHQuYmVnaW5Q
YXRoKCk7CisgICAgCisgICAgc3dpdGNoICh0aGlzLl9zaGFwZSkgeworICAgIGNhc2UgImNpcmNs
ZSI6CisgICAgZGVmYXVsdDoKKyAgICAgICAgdmFyIGNlbnRlciA9IHRoaXMuX3NpemUuY2VudGVy
KCk7CisgICAgICAgIHZhciByYWRpdXMgPSBNYXRoLm1pbih0aGlzLl9zaXplLngsIHRoaXMuX3Np
emUueSkgLyAyOworICAgICAgICB0aGlzLl9jb250ZXh0LmFyYyhjZW50ZXIueCwgY2VudGVyLnks
IHJhZGl1cywgMCwgTWF0aC5QSSAqIDIsIHRydWUpOworICAgICAgICBicmVhazsKKyAgICAgICAg
CisgICAgY2FzZSAicmVjdCI6CisgICAgICAgIHRoaXMuX2NvbnRleHQucmVjdCgwLCAwLCB0aGlz
Ll9zaXplLndpZHRoKCksIHRoaXMuX3NpemUuaGVpZ2h0KCkpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgCisgICAgdGhpcy5fY29udGV4dC5maWxsKCk7CisgICAgdGhpcy5fY29udGV4dC5y
ZXN0b3JlKCk7Cit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLmFuaW1hdGUgPSBm
dW5jdGlvbih0aW1lRGVsdGEpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmlt
YXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlzLl9kcmF3KCk7Cit9CisKK2Z1bmN0
aW9uIEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykgeworICAgIEJv
dW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0
aGlzLnBhcnNlU2hhcGVQYXJhbXRlcnMob3B0aW9ucyk7CisgICAgdGhpcy5jb250ZXh0ID0gdGhp
cy5lbGVtZW50LmdldENvbnRleHQoIjJkIikKK30KKworQm91bmNpbmdDYW52YXNTaGFwZXNTdGFn
ZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90
eXBlKTsKK0JvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0g
Qm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZTsKKworQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS5w
cm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IEJv
dW5jaW5nQ2FudmFzU2hhcGUodGhpcyk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzU2hh
cGVzQW5pbWF0b3IoYmVuY2htYXJrKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5j
YWxsKHRoaXMsIGJlbmNobWFyayk7CisgICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3Rh
Z2UuY29udGV4dDsKK30KKworQm91bmNpbmdDYW52YXNTaGFwZXNBbmltYXRvci5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlKTsKK0Jv
dW5jaW5nQ2FudmFzU2hhcGVzQW5pbWF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNp
bmdDYW52YXNTaGFwZXNBbmltYXRvcjsKKworQm91bmNpbmdDYW52YXNTaGFwZXNBbmltYXRvci5w
cm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkgeworICAgIHRoaXMuX2NvbnRleHQuY2xlYXJS
ZWN0KDAsIDAsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZSgpLngsIHRoaXMuX2JlbmNobWFy
ay5fc3RhZ2Uuc2l6ZSgpLnkpOworICAgIHJldHVybiBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9y
LnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcyk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ2Fu
dmFzU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3Vu
Y2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5j
aW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc1NoYXBlc0Jl
bmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNo
bWFyazsKKworQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0
YWdlID0gZnVuY3Rpb24oZWxlbWVudCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNT
aGFwZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKworQm91bmNpbmdDYW52YXNT
aGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKSB7Cisg
ICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yKHRoaXMpOworfQorCit3
aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICB3aW5kb3cuYmVuY2htYXJrID0g
bmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBy
ZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctaW1hZ2Vz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWltYWdlcy5qcwkocmV2aXNpb24gMCkK
KysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
cmVzb3VyY2VzL2JvdW5jaW5nLWltYWdlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1
IEBACitmdW5jdGlvbiBCb3VuY2luZ0ltYWdlKHN0YWdlKSB7CisgICAgQm91bmNpbmdQYXJ0aWNs
ZS5jYWxsKHRoaXMsIHN0YWdlKTsKKworICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImltZyIpOworICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMuX3Np
emUueCArICJweCI7CisgICAgdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuX3NpemUu
eSArICJweCI7CisgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgic3JjIiwgc3RhZ2UuaW1h
Z2VTcmMpOworICAgIAorICAgIHN0YWdlLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50
KTsKKyAgICB0aGlzLl9tb3ZlKCk7Cit9CisKK0JvdW5jaW5nSW1hZ2UucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ0ltYWdlLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nSW1hZ2U7CisKK0JvdW5jaW5nSW1hZ2UucHJv
dG90eXBlLl9tb3ZlID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRyYW5z
Zm9ybSA9ICJ0cmFuc2xhdGUoIiArIHRoaXMuX3Bvc2l0aW9uLnggKyAicHgsIiArIHRoaXMuX3Bv
c2l0aW9uLnkgKyAicHgpICIgKyB0aGlzLl9yb3RhdGVyLnJvdGF0ZVooKTsKK30KKyAgICAKK0Jv
dW5jaW5nSW1hZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpIHsKKyAg
ICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRh
KTsKKyAgICB0aGlzLl9tb3ZlKCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nSW1hZ2VzU3RhZ2Uo
ZWxlbWVudCwgb3B0aW9ucykgeworICAgIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlz
LCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0aGlzLmltYWdlU3JjID0gb3B0aW9uc1siaW1hZ2VT
cmMiXSB8fCAiLi4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7Cit9CisKK0JvdW5jaW5nSW1hZ2Vz
U3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnBy
b3RvdHlwZSk7CitCb3VuY2luZ0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJv
dW5jaW5nSW1hZ2VzU3RhZ2U7CisKK0JvdW5jaW5nSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0
ZVBhcnRpY2xlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0ltYWdlKHRo
aXMpOworfQorCitCb3VuY2luZ0ltYWdlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJl
bW92ZWQgPSBmdW5jdGlvbihwYXJ0aWNsZSkgeworICAgIGlmIChwYXJ0aWNsZS5lbGVtZW50ICYm
IHBhcnRpY2xlLmVsZW1lbnQucGFyZW50Tm9kZSAmJiBwYXJ0aWNsZS5lbGVtZW50LnBhcmVudE5v
ZGUgPT0gdGhpcy5lbGVtZW50KQorICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQocGFy
dGljbGUuZWxlbWVudCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nSW1hZ2VzQmVuY2htYXJrKHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICBCb3Vu
Y2luZ1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBy
ZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3VuY2luZ0ltYWdlc0JlbmNobWFyay5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3Rv
dHlwZSk7CitCb3VuY2luZ0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBC
b3VuY2luZ0ltYWdlc0JlbmNobWFyazsKKworQm91bmNpbmdJbWFnZXNCZW5jaG1hcmsucHJvdG90
eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkgeworICAgIHJldHVybiBuZXcgQm91
bmNpbmdJbWFnZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKword2luZG93LmJl
bmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgd2luZG93LmJlbmNobWFyayA9IG5ldyBCb3Vu
Y2luZ0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHBy
b2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNl
cy9ib3VuY2luZy1wYXJ0aWNsZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODAgQEAK
K2Z1bmN0aW9uIEJvdW5jaW5nUGFydGljbGVSb3RhdGVyKHJvdGF0ZUludGVydmFsKSB7CisgICAg
dGhpcy5fdGltZURlbHRhID0gMDsKKyAgICB0aGlzLl9yb3RhdGVJbnRlcnZhbCA9IHJvdGF0ZUlu
dGVydmFsOworfQorCitCb3VuY2luZ1BhcnRpY2xlUm90YXRlci5wcm90b3R5cGUgPSB7CisgICAg
bmV4dCA6IGZ1bmN0aW9uKHRpbWVEZWx0YSkgeworICAgICAgICB0aGlzLl90aW1lRGVsdGEgPSAo
dGhpcy5fdGltZURlbHRhICsgdGltZURlbHRhKSAlIHRoaXMuX3JvdGF0ZUludGVydmFsOworICAg
IH0sCisgICAgZGVncmVlIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiAoMzYwICogdGhp
cy5fdGltZURlbHRhKSAvIHRoaXMuX3JvdGF0ZUludGVydmFsOworICAgIH0sCisgICAgcm90YXRl
WiA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gInJvdGF0ZVooIiArIE1hdGguZmxvb3Io
dGhpcy5kZWdyZWUoKSkgKyAiZGVnKSI7CisgICAgfSwKKyAgICByb3RhdGUgOiBmdW5jdGlvbigp
IHsgICAgCisgICAgICAgIHJldHVybiAicm90YXRlKCIgKyBNYXRoLmZsb29yKHRoaXMuZGVncmVl
KCkpICsgIikgIjsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nUGFydGljbGUoc3RhZ2Up
IHsKKyAgICB0aGlzLl9zdGFnZVNpemUgPSBzdGFnZS5zaXplKCk7CisgICAgdGhpcy5fc2l6ZSA9
IHN0YWdlLnBhcnRpY2xlU2l6ZTsKKyAgICAKKyAgICB0aGlzLl9wb3NpdGlvbiA9IHN0YWdlLnJh
bmRvbVBvc2l0aW9uKCk7CisgICAgdGhpcy5fYW5nbGUgPSBzdGFnZS5yYW5kb21BbmdsZSgpOwor
ICAgIHRoaXMuX3ZlbG9jaXR5ID0gc3RhZ2UucmFuZG9tVmVsb2NpdHkoKTsKKyAgICB0aGlzLl9y
b3RhdGVyID0gc3RhZ2UucmFuZG9tUm90YXRlcigpOworfQorCitCb3VuY2luZ1BhcnRpY2xlLnBy
b3RvdHlwZSA9IHsKKyAgICBjZW50ZXIgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3Bvc2l0aW9uLmFkZCh0aGlzLl9zaXplLmNlbnRlcigpKTsKKyAgICB9LAorICAgIGFuaW1h
dGUgOiBmdW5jdGlvbih0aW1lRGVsdGEpIHsKKyAgICAgICAgdGhpcy5fcG9zaXRpb24gPSB0aGlz
Ll9wb3NpdGlvbi5tb3ZlKHRoaXMuX2FuZ2xlLCB0aGlzLl92ZWxvY2l0eSwgdGltZURlbHRhKTsK
KyAgICAgICAgdGhpcy5fcm90YXRlci5uZXh0KHRpbWVEZWx0YSk7CisKKyAgICAgICAgLy8gSWYg
cGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgcmlnaHQgc2lkZQorICAgICAgICBpZiAodGhp
cy5fcG9zaXRpb24ueCArIHRoaXMuX3NpemUueCA+IHRoaXMuX3N0YWdlU2l6ZS54KSB7CisgICAg
ICAgICAgICAvLyBJZiBkaXJlY3Rpb24gaXMgRWFzdC1Tb3V0aAorICAgICAgICAgICAgaWYgKHRo
aXMuX2FuZ2xlID49IDAgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJIC8gMikKKyAgICAgICAgICAg
ICAgICB0aGlzLl9hbmdsZSA9IE1hdGguUEkgLSB0aGlzLl9hbmdsZTsKKyAgICAgICAgICAgIC8v
IElmIGFuZ2xlIGlzIEVhc3QtTm9ydGgKKyAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX2FuZ2xl
ID4gTWF0aC5QSSAvIDIgKiAzKQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0gdGhpcy5f
YW5nbGUgLSAodGhpcy5fYW5nbGUgLSBNYXRoLlBJIC8gMiAqIDMpICogMjsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgbGVm
dCBzaWRlCisgICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbi54IDwgMCkgeworICAgICAgICAgICAg
Ly8gSWYgYW5nbGUgaXMgV2VzdC1Tb3V0aAorICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID4g
TWF0aC5QSSAvIDIgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJKQorICAgICAgICAgICAgICAgIHRo
aXMuX2FuZ2xlID0gTWF0aC5QSSAtIHRoaXMuX2FuZ2xlOworICAgICAgICAgICAgLy8gSWYgYW5n
bGUgaXMgV2VzdC1Ob3J0aAorICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5fYW5nbGUgPiBNYXRo
LlBJICYmIHRoaXMuX2FuZ2xlIDwgTWF0aC5QSSAvIDIgKiAzKQorICAgICAgICAgICAgICAgIHRo
aXMuX2FuZ2xlID0gdGhpcy5fYW5nbGUgKyAoTWF0aC5QSSAvIDIgKiAzIC0gdGhpcy5fYW5nbGUp
ICogMjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHBhcnRpY2xlIGlzIGdvaW5nIHRvIG1v
dmUgb2ZmIGJvdHRvbSBzaWRlCisgICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbi55ICsgdGhpcy5f
c2l6ZS55ID4gdGhpcy5fc3RhZ2VTaXplLnkpIHsKKyAgICAgICAgICAgIC8vIElmIGRpcmVjdGlv
biBpcyBTb3V0aAorICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID4gMCAmJiB0aGlzLl9hbmds
ZSA8IE1hdGguUEkpCisgICAgICAgICAgICAgICAgdGhpcy5fYW5nbGUgPSBNYXRoLlBJICogMiAt
IHRoaXMuX2FuZ2xlOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29p
bmcgdG8gbW92ZSBvZmYgdG9wIHNpZGUKKyAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uLnkgPCAw
KSB7CisgICAgICAgICAgICAvLyBJZiBkaXJlY3Rpb24gaXMgTm9ydGgKKyAgICAgICAgICAgIGlm
ICh0aGlzLl9hbmdsZSA+IE1hdGguUEkgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJICogMikKKyAg
ICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IHRoaXMuX2FuZ2xlIC0gKHRoaXMuX2FuZ2xlIC0g
TWF0aC5QSSkgKiAyOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBCb3VuY2luZ1Bh
cnRpY2xlc0FuaW1hdG9yKGJlbmNobWFyaykgeworICAgIEFuaW1hdG9yLmNhbGwodGhpcywgYmVu
Y2htYXJrKTsKK307CisKK0JvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShBbmltYXRvci5wcm90b3R5cGUpOworQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRv
ci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yOworCitC
b3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKSB7
CisgICAgaWYgKCFBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5hbmltYXRlKHRoaXMu
dGltZURlbHRhKCkpOworICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiBCb3VuY2luZ1Bh
cnRpY2xlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpIHsKKyAgICBTdGFnZS5jYWxsKHRoaXMsIGVs
ZW1lbnQpOworICAgIAorICAgIHRoaXMucGFydGljbGVTaXplID0gbmV3IFBvaW50KHBhcnNlSW50
KG9wdGlvbnNbInBhcnRpY2xlV2lkdGgiXSkgfHwgMTAsIHBhcnNlSW50KG9wdGlvbnNbInBhcnRp
Y2xlSGVpZ2h0Il0pIHx8IDEwKTsKKyAgICB0aGlzLnN2Z05hbWVzcGFjZSA9ICJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyI7CisgICAgdGhpcy54bGlua05hbWVzcGFjZSA9ICJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIjsKKyAgICAKKyAgICB0aGlzLl9wYXJ0aWNsZXMgPSBbXTsKKwor
ICAgIHRoaXMuX21heFZlbG9jaXR5ID0gcGFyc2VJbnQob3B0aW9uc1sibWF4VmVsb2NpdHkiXSkg
fHwgNTAwOworICAgIHRoaXMuX21heFZlbG9jaXR5ID0gTWF0aC5tYXgodGhpcy5fbWF4VmVsb2Np
dHksIDEwMCk7Cit9CisKK0JvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlOworCitCb3VuY2luZ1BhcnRp
Y2xlc1N0YWdlLnByb3RvdHlwZS5wYXJzZVNoYXBlUGFyYW10ZXJzID0gZnVuY3Rpb24ob3B0aW9u
cykgeworICAgIHRoaXMuc2hhcGUgPSBvcHRpb25zWyJzaGFwZSJdIHx8ICJjaXJjbGUiOworICAg
IHRoaXMuZmlsbCA9IG9wdGlvbnNbImZpbGwiXSB8fCAic29saWQiOworICAgIHRoaXMuY2xpcCA9
IG9wdGlvbnNbImNsaXAiXSB8fCAiIjsKK30KKworQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90
b3R5cGUucmFuZG9tUm90YXRlciA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcgQm91bmNp
bmdQYXJ0aWNsZVJvdGF0ZXIodGhpcy5yYW5kb20oMTAwMCwgMTAwMDApKTsKK30KKyAgICAKK0Jv
dW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVs
dGEpIHsKKyAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5fcGFydGljbGVzLmxlbmd0aDsgKytp
KQorICAgICAgICB0aGlzLl9wYXJ0aWNsZXNbaV0uYW5pbWF0ZSh0aW1lRGVsdGEpOworfQorICAg
IAorQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50
KSB7CisgICAgY291bnQgPSBjb3VudCA+IDAgPyBNYXRoLmZsb29yKGNvdW50KSA6IE1hdGguY2Vp
bChjb3VudCk7CisKKyAgICBpZiAoY291bnQgPT0gMCkKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Bh
cnRpY2xlcy5sZW5ndGg7CisKKyAgICBpZiAoY291bnQgPiAwKSB7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHR5cGVvZih0aGlzLmNyZWF0ZVBhcnRpY2xlKSA9PSAiZnVuY3Rpb24iKTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgdGhpcy5fcGFy
dGljbGVzLnB1c2godGhpcy5jcmVhdGVQYXJ0aWNsZSgpKTsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X3BhcnRpY2xlcy5sZW5ndGg7CisgICAgfQorCisgICAgY291bnQgPSBNYXRoLm1pbigtY291bnQs
IHRoaXMuX3BhcnRpY2xlcy5sZW5ndGgpOworICAgICAgICAKKyAgICBpZiAodHlwZW9mKHRoaXMu
cGFydGljbGVXaWxsQmVSZW1vdmVkKSA9PSAiZnVuY3Rpb24iKSB7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgIHRoaXMucGFydGljbGVXaWxsQmVS
ZW1vdmVkKHRoaXMuX3BhcnRpY2xlc1t0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoIC0gMSAtIGldKTsK
KyAgICB9CisKKyAgICB0aGlzLl9wYXJ0aWNsZXMuc3BsaWNlKC1jb3VudCwgY291bnQpOworICAg
IHJldHVybiB0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoOworfQorCitmdW5jdGlvbiBCb3VuY2luZ1Bh
cnRpY2xlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dy
ZXNzQmFyKSB7CisgICAgQmVuY2htYXJrLmNhbGwodGhpcywgb3B0aW9ucyk7CisKKyAgICB2YXIg
ZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFnZSIpOworICAgIGVsZW1lbnQu
c2V0QXR0cmlidXRlKCJ3aWR0aCIsIGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgpOworICAgIGVs
ZW1lbnQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCk7
CisKKyAgICB0aGlzLl9zdGFnZSA9IHRoaXMuY3JlYXRlU3RhZ2UoZWxlbWVudCk7CisgICAgdGhp
cy5fYW5pbWF0b3IgPSB0aGlzLmNyZWF0ZUFuaW1hdG9yKCk7CisgICAgdGhpcy5fc3VpdGUgPSBz
dWl0ZTsKKyAgICB0aGlzLl90ZXN0ID0gdGVzdDsKKyAgICB0aGlzLl9yZWNvcmRUYWJsZSA9IHJl
Y29yZFRhYmxlOworICAgIHRoaXMuX3Byb2dyZXNzQmFyID0gcHJvZ3Jlc3NCYXI7Cit9CisKK0Jv
dW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQmVuY2ht
YXJrLnByb3RvdHlwZSk7CitCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyazsKKworQm91bmNpbmdQYXJ0aWNs
ZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKSB7CisgICAg
cmV0dXJuIG5ldyBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yKHRoaXMpOworfQorCitCb3VuY2lu
Z1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KSB7Cisg
ICAgcmV0dXJuIHRoaXMuX3N0YWdlLnR1bmUoY291bnQpOworfQorCitCb3VuY2luZ1BhcnRpY2xl
c0JlbmNobWFyay5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhp
cy5fc3RhZ2UuY2xlYXIoKTsKK30KKworQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90
eXBlLnNob3dSZXN1bHRzID0gZnVuY3Rpb24obWVzc2FnZSwgcHJvZ3Jlc3MpIHsKKyAgICBpZiAo
IXRoaXMuX3JlY29yZFRhYmxlIHx8ICF0aGlzLl9wcm9ncmVzc0JhciB8fCAhdGhpcy5fc3VpdGUg
fHwgIXRoaXMuX3Rlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIHRoaXMuX3JlY29yZFRhYmxl
LnNob3dSZWNvcmQodGhpcy5fc3VpdGUsIHRoaXMuX3Rlc3QsIHRoaXMuX3NhbXBsZXIsIG1lc3Nh
Z2UpOworICAgIHRoaXMuX3Byb2dyZXNzQmFyLnNldFBvcyhwcm9ncmVzcyk7Cit9CkluZGV4OiBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1zaGFwZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc2hh
cGVzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc2hhcGVzLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nU2hhcGUoc3RhZ2UpIHsK
KyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworCisgICAgdGhpcy5lbGVt
ZW50ID0gdGhpcy5fY3JlYXRlU3BhbihzdGFnZSk7CisgICAgICAgIAorICAgIHN3aXRjaCAoc3Rh
Z2UuZmlsbCkgeworICAgIGNhc2UgInNvbGlkIjoKKyAgICBkZWZhdWx0OgorICAgICAgICB0aGlz
LmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgImdyYWRpZW50IjoKKyAgICAgICAgdGhp
cy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmQgPSAibGluZWFyLWdyYWRpZW50KCIgKyBzdGFnZS5y
YW5kb21Db2xvcigpICsgIiwgIiArIHN0YWdlLnJhbmRvbUNvbG9yKCkgKyAiKSI7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIHRoaXMuX21vdmUoKTsKK30KKworQm91bmNpbmdTaGFwZS5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlKTsKK0Jv
dW5jaW5nU2hhcGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTaGFwZTsKKworQm91
bmNpbmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVNwYW4gPSBmdW5jdGlvbihzdGFnZSkgeworICAg
IHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIHNwYW4uY2xh
c3NOYW1lID0gc3RhZ2Uuc2hhcGUgKyAiICIgKyBzdGFnZS5jbGlwOworICAgIHNwYW4uc3R5bGUu
d2lkdGggPSB0aGlzLl9zaXplLnggKyAicHgiOworICAgIHNwYW4uc3R5bGUuaGVpZ2h0ID0gdGhp
cy5fc2l6ZS55ICsgInB4IjsKKyAgICBzdGFnZS5lbGVtZW50LmFwcGVuZENoaWxkKHNwYW4pOwor
ICAgIHJldHVybiBzcGFuOworfQorCitCb3VuY2luZ1NoYXBlLnByb3RvdHlwZS5fbW92ZSA9IGZ1
bmN0aW9uKCkgeworICAgIHRoaXMuZWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSAidHJhbnNsYXRl
KCIgKyB0aGlzLl9wb3NpdGlvbi54ICsgInB4LCIgKyB0aGlzLl9wb3NpdGlvbi55ICsgInB4KSIg
KyB0aGlzLl9yb3RhdGVyLnJvdGF0ZVooKTsKK30KKyAgICAKK0JvdW5jaW5nU2hhcGUucHJvdG90
eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xl
LnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlzLl9yb3Rh
dGVyLm5leHQodGltZURlbHRhKTsgICAgCisgICAgdGhpcy5fbW92ZSgpOworfQorCitmdW5jdGlv
biBCb3VuY2luZ1NoYXBlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpIHsKKyAgICBCb3VuY2luZ1Bh
cnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5wYXJz
ZVNoYXBlUGFyYW10ZXJzKG9wdGlvbnMpOworfQorCitCb3VuY2luZ1NoYXBlc1N0YWdlLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOwor
Qm91bmNpbmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1NoYXBl
c1N0YWdlOworCitCb3VuY2luZ1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9
IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdTaGFwZSh0aGlzKTsKK30KKwor
Qm91bmNpbmdTaGFwZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkID0gZnVu
Y3Rpb24ocGFydGljbGUpIHsKKyAgICBpZiAocGFydGljbGUuZWxlbWVudCAmJiBwYXJ0aWNsZS5l
bGVtZW50LnBhcmVudE5vZGUgJiYgcGFydGljbGUuZWxlbWVudC5wYXJlbnROb2RlID09IHRoaXMu
ZWxlbWVudCkKKyAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKHBhcnRpY2xlLmVsZW1l
bnQpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwg
b3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgQm91bmNpbmdQYXJ0aWNs
ZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUs
IHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOworQm91
bmNpbmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTaGFw
ZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVT
dGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nU2hhcGVz
U3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGll
bnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBw
cm9ncmVzc0JhcikgeworICAgIHdpbmRvdy5iZW5jaG1hcmsgPSBuZXcgQm91bmNpbmdTaGFwZXNC
ZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7
Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3Vy
Y2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2lu
Zy1zdmctaW1hZ2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAKK2Z1bmN0aW9u
IEJvdW5jaW5nU3ZnSW1hZ2Uoc3RhZ2UpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhp
cywgc3RhZ2UpOworCisgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KHN0YWdlLnN2Z05hbWVzcGFjZSwgImltYWdlIik7CisgICAgdGhpcy5lbGVtZW50LnNldEF0dHJp
YnV0ZSgieCIsIDApOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInkiLCAwKTsgICAg
CisgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgid2lkdGgiLCB0aGlzLl9zaXplLngpOwor
ICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIHRoaXMuX3NpemUueSk7Cisg
ICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZU5TKHN0YWdlLnhsaW5rTmFtZXNwYWNlLCAiaHJl
ZiIsIHN0YWdlLmltYWdlU3JjKTsKKworICAgIHN0YWdlLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5lbGVtZW50KTsKKyAgICB0aGlzLl9tb3ZlKCk7ICAgIAorfQorCitCb3VuY2luZ1N2Z0ltYWdl
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUpOwor
Qm91bmNpbmdTdmdJbWFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1N2Z0ltYWdl
OworCitCb3VuY2luZ1N2Z0ltYWdlLnByb3RvdHlwZS5fbW92ZSA9IGZ1bmN0aW9uKCkgeworICAg
IHZhciBjZW50ZXIgPSB0aGlzLmNlbnRlcigpOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1
dGUoInRyYW5zZm9ybSIsIAorICAgICAgICAidHJhbnNsYXRlKCIgKyBjZW50ZXIueCArICIsICIg
KyBjZW50ZXIueSArICIpICIKKyAgICAgICAgKyB0aGlzLl9yb3RhdGVyLnJvdGF0ZSgpCisgICAg
ICAgICsgInRyYW5zbGF0ZSgiICsgLXRoaXMuX3NpemUueCAvIDIgKyAiLCAiICsgLXRoaXMuX3Np
emUueSAvIDIgKyAiKSAiKTsKK30KKworQm91bmNpbmdTdmdJbWFnZS5wcm90b3R5cGUuYW5pbWF0
ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkgeworICAgIEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBl
LmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEpOworICAgIHRoaXMuX21vdmUoKTsKK30KKwor
ZnVuY3Rpb24gQm91bmNpbmdTdmdJbWFnZXNTdGFnZShlbGVtZW50LCBvcHRpb25zKSB7CisgICAg
Qm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAg
IHRoaXMuaW1hZ2VTcmMgPSBvcHRpb25zWyJpbWFnZVNyYyJdIHx8ICJyZXNvdXJjZXMveWluLXlh
bmcuc3ZnIjsKK30KKworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3Qu
Y3JlYXRlKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnSW1h
Z2VzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdJbWFnZXNTdGFnZTsK
KworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5j
dGlvbigpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nU3ZnSW1hZ2UodGhpcyk7Cit9CisKK0Jv
dW5jaW5nU3ZnSW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCA9IGZ1
bmN0aW9uKHBhcnRpY2xlKSB7CisgICAgaWYgKHBhcnRpY2xlLmVsZW1lbnQgJiYgcGFydGljbGUu
ZWxlbWVudC5wYXJlbnROb2RlICYmIHBhcnRpY2xlLmVsZW1lbnQucGFyZW50Tm9kZSA9PSB0aGlz
LmVsZW1lbnQpCisgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZChwYXJ0aWNsZS5lbGVt
ZW50KTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIEJvdW5jaW5nUGFy
dGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRh
YmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBl
KTsKK0JvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJv
dW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrOworCitCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyay5w
cm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgcmV0dXJuIG5l
dyBCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCit3
aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICB3aW5kb3cuYmVuY2htYXJrID0g
bmV3IEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBl
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpzCShyZXZpc2lv
biAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE2MSBAQAorZnVuY3Rpb24gQm91bmNpbmdTdmdTaGFwZShzdGFnZSkgeworICAgIEJv
dW5jaW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CisgICAgdGhpcy5fc2hhcGUgPSBzdGFn
ZS5zaGFwZTsKKyAgICAKKyAgICBzd2l0Y2ggKHRoaXMuX3NoYXBlKSB7CisgICAgY2FzZSAiY2ly
Y2xlIjoKKyAgICBkZWZhdWx0OgorICAgICAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLl9jcmVhdGVD
aXJjbGUoc3RhZ2UpOworICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSAicmVjdCI6
CisgICAgICAgIHRoaXMuZWxlbWVudCA9IHRoaXMuX2NyZWF0ZVJlY3Qoc3RhZ2UpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHN0YWdlLmNsaXApIHsKKyAgICBjYXNlICJz
dGFyIjoKKyAgICAgICAgc3RhZ2UuZW5zdXJlQ2xpcFN0YXJJc0NyZWF0ZWQoKTsgICAgCisgICAg
ICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImNsaXAtcGF0aCIsICJ1cmwoI3N0YXItY2xp
cCkiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dpdGNoIChzdGFnZS5maWxsKSB7
CisgICAgY2FzZSAic29saWQiOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHRoaXMuZWxlbWVudC5z
ZXRBdHRyaWJ1dGUoImZpbGwiLCBzdGFnZS5yYW5kb21Db2xvcigpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgICAgIAorICAgIGNhc2UgImdyYWRpZW50IjoKKyAgICAgICAgdmFyIGdyYWRpZW50ID0g
c3RhZ2UuY3JlYXRlR3JhZGllbnQoMik7CisgICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1
dGUoImZpbGwiLCAidXJsKCMiICsgZ3JhZGllbnQuZ2V0QXR0cmlidXRlKCJpZCIpICsgIikiKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgdGhpcy5fbW92ZSgpOyAgICAKK30KKworQm91
bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUu
cHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91
bmNpbmdTdmdTaGFwZTsKKworQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZUNpcmNs
ZSA9IGZ1bmN0aW9uKHN0YWdlKSB7CisgICAgdmFyIGNpcmNsZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUyhzdGFnZS5zdmdOYW1lc3BhY2UsICJjaXJjbGUiKTsKKyAgICBjaXJjbGUuc2V0QXR0
cmlidXRlKCJjeCIsIHRoaXMuX3NpemUueCAvIDIpOworICAgIGNpcmNsZS5zZXRBdHRyaWJ1dGUo
ImN5IiwgdGhpcy5fc2l6ZS55IC8gMik7ICAgIAorICAgIGNpcmNsZS5zZXRBdHRyaWJ1dGUoInIi
LCBNYXRoLm1pbih0aGlzLl9zaXplLngsIHRoaXMuX3NpemUueSkgLyAyKTsKKyAgICBzdGFnZS5l
bGVtZW50LmFwcGVuZENoaWxkKGNpcmNsZSk7CisgICAgcmV0dXJuIGNpcmNsZTsKK30KKworQm91
bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVJlY3QgPSBmdW5jdGlvbihzdGFnZSkgewor
ICAgIHZhciByZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN0YWdlLnN2Z05hbWVzcGFj
ZSwgInJlY3QiKTsKKyAgICByZWN0LnNldEF0dHJpYnV0ZSgieCIsIDApOworICAgIHJlY3Quc2V0
QXR0cmlidXRlKCJ5IiwgMCk7ICAgIAorICAgIHJlY3Quc2V0QXR0cmlidXRlKCJ3aWR0aCIsIHRo
aXMuX3NpemUueCk7CisgICAgcmVjdC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIHRoaXMuX3NpemUu
eSk7CisgICAgc3RhZ2UuZWxlbWVudC5hcHBlbmRDaGlsZChyZWN0KTsgICAgCisgICAgcmV0dXJu
IHJlY3Q7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLl9tb3ZlID0gZnVuY3Rpb24o
KSB7CisgICAgdmFyIHRyYW5zZm9ybTsKKyAgICBpZiAodGhpcy5fc2hhcGUgPT0gImNpcmNsZSIp
CisgICAgICAgIHRyYW5zZm9ybSA9ICJ0cmFuc2xhdGUoIiArIHRoaXMuX3Bvc2l0aW9uLnggKyAi
LCAiICsgdGhpcy5fcG9zaXRpb24ueSArICIpIjsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIGNl
bnRlciA9IHRoaXMuY2VudGVyKCk7CisgICAgICAgIHRyYW5zZm9ybSAgPSAidHJhbnNsYXRlKCIg
KyBjZW50ZXIueCArICIsICIgKyBjZW50ZXIueSArICIpICI7CisgICAgICAgIHRyYW5zZm9ybSAr
PSB0aGlzLl9yb3RhdGVyLnJvdGF0ZSgpOworICAgICAgICB0cmFuc2Zvcm0gKz0gInRyYW5zbGF0
ZSgiICsgLXRoaXMuX3NpemUud2lkdGgoKSAvIDIgKyAiLCAiICsgLXRoaXMuX3NpemUuaGVpZ2h0
KCkgLyAyICsgIikiOworICAgIH0KKyAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJ0cmFu
c2Zvcm0iLCB0cmFuc2Zvcm0pOworfQorCitCb3VuY2luZ1N2Z1NoYXBlLnByb3RvdHlwZS5hbmlt
YXRlID0gZnVuY3Rpb24odGltZURlbHRhKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5
cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7CisgICAgdGhpcy5fbW92ZSgpOworfQor
CitmdW5jdGlvbiBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpIHsKKyAg
ICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Cisg
ICAgdGhpcy5wYXJzZVNoYXBlUGFyYW10ZXJzKG9wdGlvbnMpOworfQorCitCb3VuY2luZ1N2Z1No
YXBlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFn
ZS5wcm90b3R5cGUpOworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0
b3IgPSBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitCb3VuY2luZ1N2Z1NoYXBlc1N0
YWdlLnByb3RvdHlwZS5lbnN1cmVDbGlwU3RhcklzQ3JlYXRlZCA9IGZ1bmN0aW9uKCkgeworICAg
IHJldHVybiB0aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvcigiI3N0YXItY2xpcCIpIHx8IHRoaXMu
X2NyZWF0ZUNsaXBTdGFyKCk7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBl
LmVuc3VyZURlZnNJc0NyZWF0ZWQgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5lbGVt
ZW50LnF1ZXJ5U2VsZWN0b3IoImRlZnMiKSB8fCB0aGlzLl9jcmVhdGVEZWZzKCk7Cit9CisKK0Jv
dW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZUdyYWRpZW50ID0gZnVuY3Rpb24o
c3RvcHMpIHsKKyAgICB2YXIgZ3JhZGllbnQgID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHRo
aXMuc3ZnTmFtZXNwYWNlLCAibGluZWFyR3JhZGllbnQiKTsKKyAgICAKKyAgICBpZiAodHlwZW9m
IHRoaXMuX2dhZGllbnRzQ291bnQgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICB0aGlzLl9nYWRp
ZW50c0NvdW50ID0gMDsgICAgCisgICAgZ3JhZGllbnQuc2V0QXR0cmlidXRlKCJpZCIsICJnYWRp
ZW50LSIgKyArK3RoaXMuX2dhZGllbnRzQ291bnQpOworICAgIAorICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgc3RvcHM7ICsraSkgeworICAgICAgICB2YXIgc3RvcCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUyh0aGlzLnN2Z05hbWVzcGFjZSwgInN0b3AiKTsKKyAgICAgICAgc3RvcC5zZXRBdHRy
aWJ1dGUoIm9mZnNldCIsIGkgKiAxMDAgLyBzdG9wcyArICIlIik7CisgICAgICAgIHN0b3Auc2V0
QXR0cmlidXRlKCJzdG9wLWNvbG9yIiwgdGhpcy5yYW5kb21Db2xvcigpKTsKKyAgICAgICAgZ3Jh
ZGllbnQuYXBwZW5kQ2hpbGQoc3RvcCk7CisgICAgfQorCisgICAgdGhpcy5lbnN1cmVEZWZzSXND
cmVhdGVkKCkuYXBwZW5kQ2hpbGQoZ3JhZGllbnQpOworICAgIHJldHVybiBncmFkaWVudDsKK30K
KworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuX2NyZWF0ZURlZnMgPSBmdW5jdGlv
bigpIHsKKyAgICB2YXIgZGVmcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0aGlzLnN2Z05h
bWVzcGFjZSwiZGVmcyIpOworICAgIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUoZGVmcywgdGhp
cy5lbGVtZW50LmZpcnN0Q2hpbGQpOworICAgIHJldHVybiBkZWZzOworfQorICAgIAorQm91bmNp
bmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuX2NyZWF0ZUNsaXBTdGFyID0gZnVuY3Rpb24oKSB7
CisgICAgdmFyIGNsaXBQYXRoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHRoaXMuc3ZnTmFt
ZXNwYWNlLCAiY2xpcFBhdGgiKTsKKyAgICBjbGlwUGF0aC5zZXRBdHRyaWJ1dGUoImlkIiwgInN0
YXItY2xpcCIpOworICAgIGNsaXBQYXRoLnNldEF0dHJpYnV0ZSgiY2xpcFBhdGhVbml0cyIsICJv
YmplY3RCb3VuZGluZ0JveCIpOworICAgIAorICAgIHZhciBwYXRoID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKHRoaXMuc3ZnTmFtZXNwYWNlLCAicGF0aCIpOworICAgIHBhdGguc2V0QXR0cmli
dXRlKCJkIiwgIk0uNTAsMEwuMzgsLjM4TDAsLjM4TC4zMCwuNjBMLjE4LDFMLjUwLC43NUwuODIs
MUwuNzAsLjYwTDEsLjM4TC42MiwuMzh6Iik7CisgICAgY2xpcFBhdGguYXBwZW5kQ2hpbGQocGF0
aCk7CisgICAgCisgICAgdGhpcy5lbnN1cmVEZWZzSXNDcmVhdGVkKCkuYXBwZW5kQ2hpbGQoY2xp
cFBhdGgpOworICAgIHJldHVybiBjbGlwUGF0aDsKK30KKworQm91bmNpbmdTdmdTaGFwZXNTdGFn
ZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3
IEJvdW5jaW5nU3ZnU2hhcGUodGhpcyk7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJv
dG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xlKSB7CisgICAg
aWYgKCFwYXJ0aWNsZS5lbGVtZW50IHx8ICFwYXJ0aWNsZS5lbGVtZW50LnBhcmVudE5vZGUgfHwg
cGFydGljbGUuZWxlbWVudC5wYXJlbnROb2RlICE9IHRoaXMuZWxlbWVudCkKKyAgICAgICAgcmV0
dXJuOworICAgICAgICAKKyAgICB2YXIgZmlsbCA9IHBhcnRpY2xlLmVsZW1lbnQuZ2V0QXR0cmli
dXRlKCJmaWxsIik7CisgICAgaWYgKGZpbGwuaW5kZXhPZigidXJsKCMiKSA9PSAwKSB7CisgICAg
ICAgIHZhciBncmFkaWVudCA9IHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKGZpbGwuc3Vic3Ry
aW5nKDQsIGZpbGwubGVuZ3RoIC0gMSkpOworICAgICAgICB0aGlzLmVuc3VyZURlZnNJc0NyZWF0
ZWQoKS5yZW1vdmVDaGlsZChncmFkaWVudCk7CisgICAgfQorICAgIAorICAgIHRoaXMuZWxlbWVu
dC5yZW1vdmVDaGlsZChwYXJ0aWNsZS5lbGVtZW50KTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdT
dmdTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9n
cmVzc0JhcikgeworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3Vp
dGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5j
aW5nU3ZnU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQ
YXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJr
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrOworCitC
b3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlv
bihlbGVtZW50KSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlKGVsZW1l
bnQsIHRoaXMuX29wdGlvbnMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9
IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
IHsKKyAgICB3aW5kb3cuYmVuY2htYXJrID0gbmV3IEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJr
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9iZW5jaG1hcmsu
Y3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNv
dXJjZXMvYmVuY2htYXJrLmNzcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvYmVuY2htYXJrLmNzcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE3IEBACitodG1sIHsKKyAgaGVpZ2h0OiAxMDAlOworfQorYm9keSB7CisgIHdpZHRo
OiAxMDAlOworICBoZWlnaHQ6IDEwMCU7CisgIG92ZXJmbG93OiBoaWRkZW47CisgIG1hcmdpbjog
MDsKKyAgcGFkZGluZzogMDsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VhZWFlYTsKK30KKworI3N0
YWdlIHsKKyAgd2lkdGg6IDEwMCU7CisgIGhlaWdodDogMTAwJTsKKyAgYmFja2dyb3VuZC1jb2xv
cjogI2VhZWFlYTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9y
ZXNvdXJjZXMvYmVuY2htYXJrLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvYmVuY2htYXJrLmpzCShyZXZpc2lvbiAwKQorKysgUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9iZW5jaG1hcmsuanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxODggQEAKK2Z1bmN0aW9uIEJlbmNobWFya1N0YXRlKHRl
c3RJbnRlcnZhbCkgeworICAgIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0ID0gMDsKKyAgICB0aGlz
Ll9zdGFnZUludGVydmFsID0gdGVzdEludGVydmFsIC8gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJ
TklTSEVEOworfQorCitCZW5jaG1hcmtTdGF0ZS5zdGFnZXMgPSB7CisgICAgV0FSTUlOR19VUDog
MCwKKyAgICBTQU1QTElORzogMSwKKyAgICBGSU5JU0hFRDogMiwKKyAgICBtZXNzYWdlczogWyAi
V2FybWluZyB1cCIsICJTYW1wbGluZyIsICJGaW5pc2hlZCIgXQorfTsKKworQmVuY2htYXJrU3Rh
dGUucHJvdG90eXBlID0geworICAgIF90aW1lT2Zmc2V0IDogZnVuY3Rpb24oc3RhZ2UpIHsKKyAg
ICAgICAgcmV0dXJuIHN0YWdlICogdGhpcy5fc3RhZ2VJbnRlcnZhbDsKKyAgICB9LAorICAgIF9t
ZXNzYWdlIDogZnVuY3Rpb24oc3RhZ2UsIHRpbWVPZmZzZXQpIHsKKyAgICAgICAgaWYgKHN0YWdl
ID09IEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRCkKKyAgICAgICAgICAgIHJldHVybiBC
ZW5jaG1hcmtTdGF0ZS5zdGFnZXMubWVzc2FnZXNbc3RhZ2VdOworCisgICAgICAgIHJldHVybiBC
ZW5jaG1hcmtTdGF0ZS5zdGFnZXMubWVzc2FnZXNbc3RhZ2VdICsgIi4uLiAoIgorICAgICAgICAg
ICAgKyBNYXRoLmZsb29yKCh0aW1lT2Zmc2V0IC0gdGhpcy5fdGltZU9mZnNldChzdGFnZSkpIC8g
MTAwMCkgKyAiLyIKKyAgICAgICAgICAgICsgTWF0aC5mbG9vcigodGhpcy5fdGltZU9mZnNldChz
dGFnZSArIDEpIC0gdGhpcy5fdGltZU9mZnNldChzdGFnZSkpIC8gMTAwMCkgKyAiKSI7CisgICAg
fSwKKyAgICB1cGRhdGUgOiBmdW5jdGlvbihjdXJyZW50VGltZU9mZnNldCkgeworICAgICAgICB0
aGlzLl9jdXJyZW50VGltZU9mZnNldCA9IGN1cnJlbnRUaW1lT2Zmc2V0OworICAgIH0sCisgICAg
c2FtcGxpbmdUaW1lT2Zmc2V0IDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLl90
aW1lT2Zmc2V0KEJlbmNobWFya1N0YXRlLnN0YWdlcy5TQU1QTElORyk7CisgICAgfSwKKyAgICBj
dXJyZW50U3RhZ2UgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgZm9yICh2YXIgc3RhZ2UgPSBCZW5j
aG1hcmtTdGF0ZS5zdGFnZXMuV0FSTUlOR19VUDsgc3RhZ2UgPCBCZW5jaG1hcmtTdGF0ZS5zdGFn
ZXMuRklOSVNIRUQ7ICsrc3RhZ2UpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50VGlt
ZU9mZnNldCA8IHRoaXMuX3RpbWVPZmZzZXQoc3RhZ2UgKyAxKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RhZ2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEJlbmNobWFya1N0YXRlLnN0
YWdlcy5GSU5JU0hFRDsKKyAgICB9LAorICAgIGN1cnJlbnRNZXNzYWdlIDogZnVuY3Rpb24oKSB7
CisgICAgICAgIHJldHVybiB0aGlzLl9tZXNzYWdlKHRoaXMuY3VycmVudFN0YWdlKCksIHRoaXMu
X2N1cnJlbnRUaW1lT2Zmc2V0KTsKKyAgICB9LAorICAgIGN1cnJlbnRQcm9ncmVzcyA6IGZ1bmN0
aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgLyB0aGlzLl90
aW1lT2Zmc2V0KEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRCk7CisgICAgfQorfQorCitm
dW5jdGlvbiBBbmltYXRvcihiZW5jaG1hcmspIHsKKyAgICB0aGlzLl9iZW5jaG1hcmsgPSBiZW5j
aG1hcms7CisgICAgdGhpcy5fZnJhbWVDb3VudCA9IDA7CisgICAgdGhpcy5fZHJvcEZyYW1lQ291
bnQgPSAxOworICAgIHRoaXMuX21lYXN1cmVGcmFtZUNvdW50ID0gMzsgCisgICAgdGhpcy5fY3Vy
cmVudFRpbWVPZmZzZXQgPSAwOworICAgIHRoaXMuX2VzdGltYXRvciA9IG5ldyBFc3RpbWF0b3Io
KTsKK30KKworQW5pbWF0b3IucHJvdG90eXBlID0geworICAgIHN0YXJ0IDogZnVuY3Rpb24oKSB7
CisgICAgICAgIHRoaXMuX2ludGVydmFsSWQgPSBzZXRJbnRlcnZhbCh0aGlzLmFuaW1hdGUuYmlu
ZCh0aGlzKSwgMSk7CisgICAgfSwKKyAgICB0aW1lRGVsdGEgOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IC0gdGhpcy5fc3RhcnRUaW1lT2Zmc2V0
OworICAgIH0sCisgICAgYW5pbWF0ZSA6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgY3VycmVu
dFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKKyAgICAgICAgCisgICAgICAgIGlmICh0eXBlb2Yg
dGhpcy5fcmVmZXJlbmNlVGltZSA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICB0aGlzLl9y
ZWZlcmVuY2VUaW1lID0gY3VycmVudFRpbWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRo
aXMuX2N1cnJlbnRUaW1lT2Zmc2V0ID0gY3VycmVudFRpbWUgLSB0aGlzLl9yZWZlcmVuY2VUaW1l
OworCisgICAgICAgIGlmICghdGhpcy5fZnJhbWVDb3VudCkKKyAgICAgICAgICAgIHRoaXMuX3N0
YXJ0VGltZU9mZnNldCA9IHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0OworCisgICAgICAgIC8vIFN0
YXJ0IG1lYXN1cmluZyBhZnRlciBkcm9wcGluZyBfZHJvcEZyYW1lQ291bnQgZnJhbWVzLgorICAg
ICAgICBpZiAodGhpcy5fZnJhbWVDb3VudCA9PSB0aGlzLl9kcm9wRnJhbWVDb3VudCkKKyAgICAg
ICAgICAgIHRoaXMuX21lYXN1cmVUaW1lT2Zmc2V0ID0gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQ7
CisKKyAgICAgICAgKyt0aGlzLl9mcmFtZUNvdW50OworCisgICAgICAgIC8vIERyb3AgX2Ryb3BG
cmFtZUNvdW50IGZyYW1lcyBhbmQgbWVhc3VyZSB0aGUgYXZlcmFnZSBvZiBfbWVhc3VyZUZyYW1l
Q291bnQgZnJhbWVzLgorICAgICAgICBpZiAodGhpcy5fZnJhbWVDb3VudCA8IHRoaXMuX2Ryb3BG
cmFtZUNvdW50ICsgdGhpcy5fbWVhc3VyZUZyYW1lQ291bnQpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgICAgICAvLyBHZXQgdGhlIGF2ZXJhZ2UgRlBTIG9mIF9tZWFzdXJlRnJhbWVD
b3VudCBmcmFtZXMgb3ZlciBtZWFzdXJlVGltZURlbHRhLgorICAgICAgICB2YXIgbWVhc3VyZVRp
bWVEZWx0YSA9IHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IC0gdGhpcy5fbWVhc3VyZVRpbWVPZmZz
ZXQ7CisgICAgICAgIHZhciBjdXJyZW50RnJhbWVSYXRlID0gTWF0aC5mbG9vcigxMDAwIC8gKG1l
YXN1cmVUaW1lRGVsdGEgLyB0aGlzLl9tZWFzdXJlRnJhbWVDb3VudCkpOworICAgICAgICAgCisg
ICAgICAgIC8vIFVzZSBLYWxtYW4gZmlsdGVyIHRvIGdldCBhIG1vcmUgbm9uLWZsdWN0dWF0aW5n
IGZyYW1lIHJhdGUuCisgICAgICAgIGlmICh0aGlzLl9iZW5jaG1hcmsub3B0aW9ucy5lc3RpbWF0
ZWRGcmFtZVJhdGUpCisgICAgICAgICAgICBjdXJyZW50RnJhbWVSYXRlID0gdGhpcy5fZXN0aW1h
dG9yLmVzdGltYXRlKG1lYXN1cmVUaW1lRGVsdGEsIGN1cnJlbnRGcmFtZVJhdGUpOworICAgICAg
ICAKKyAgICAgICAgLy8gQWRqdXN0IHRoZSB0ZXN0IHRvIHJlYWNoIHRoZSBkZXNpcmVkIEZQUy4K
KyAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2JlbmNobWFyay51cGRhdGUodGhpcy5fY3VycmVu
dFRpbWVPZmZzZXQsIHRoaXMudGltZURlbHRhKCksIGN1cnJlbnRGcmFtZVJhdGUpOworICAgICAg
ICAKKyAgICAgICAgLy8gU3RvcCB0aGUgYW5pbWF0b3IgaWYgdGhlIGJlbmNobWFyayBoYXMgZmlu
aXNoZWQuCisgICAgICAgIGlmICghcmVzdWx0ICYmIHR5cGVvZiB0aGlzLl9pbnRlcnZhbElkICE9
ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbElk
KTsKKworICAgICAgICAvLyBTdGFydCB0aGUgbmV4dCBkcm9wL21lYXN1cmUgY3ljbGUuCisgICAg
ICAgIHRoaXMuX2ZyYW1lQ291bnQgPSAwOworICAgICAgICAKKyAgICAgICAgLy8gcmVzdWx0IG1h
eSBzdG9wIHRoZSBhbmltYXRvciBpZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKSBoYXMgYmVlbiB1
c2VkLgorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisgICAgYW5pbWF0ZUxvb3AgOiBm
dW5jdGlvbih0aW1lc3RhbXApIHsKKyAgICAgICAgaWYgKHRoaXMuYW5pbWF0ZSgpKQorICAgICAg
ICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0ZUxvb3AuYmluZCh0aGlzKSk7
CisgICAgfQorfQorCitmdW5jdGlvbiBCZW5jaG1hcmsob3B0aW9ucykgeworICAgIHRoaXMuX29w
dGlvbnMgPSBvcHRpb25zOworICAgIHRoaXMuX21ldGhvZCA9IHRoaXMuX29wdGlvbnNbIm1ldGhv
ZCJdIHx8ICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiOworCisgICAgdGhpcy5vcHRpb25zID0gb3B0
aW9uczsKKyAgICB0aGlzLl9yZWNvcmRJbnRlcnZhbCA9IDIwMDsgICAgCisgICAgdGhpcy5faXNT
YW1wbGluZyA9IGZhbHNlOworCisgICAgdmFyIGdhaW4gPSBwYXJzZUludCh0aGlzLl9vcHRpb25z
WyJnYWluIl0pIHx8IDE7CisgICAgdmFyIGxvd1ZhbHVlID0gLXBhcnNlSW50KHRoaXMuX29wdGlv
bnNbImFkZExpbWl0Il0pIHx8IDE7CisgICAgdmFyIGhpZ2hWYWx1ZSA9IHBhcnNlSW50KHRoaXMu
X29wdGlvbnNbInJlbW92ZUxpbWl0Il0pIHx8IDE7CisgICAgCisgICAgdGhpcy5fY29udHJvbGxl
ciA9IG5ldyBDb250cm9sbGVyKGdhaW4sIG9wdGlvbnMuZnJhbWVSYXRlLCBsb3dWYWx1ZSwgaGln
aFZhbHVlKTsKKyAgICB0aGlzLl9zYW1wbGVyID0gbmV3IFNhbXBsZXIoMik7CisgICAgdGhpcy5f
c3RhdGUgPSBuZXcgQmVuY2htYXJrU3RhdGUodGhpcy5vcHRpb25zLnRlc3RJbnRlcnZhbCk7ICAg
IAorfQorCitCZW5jaG1hcmsucHJvdG90eXBlID0geworICAgIC8vIENhbGxlZCBmcm9tIHRoZSBs
b2FkIGV2ZW50IGxpc3RlbmVyIG9yIGZyb20gdGhpcy5ydW4oKQorICAgIHN0YXJ0IDogZnVuY3Rp
b24oKSB7CisgICAgICAgIGlmICh0aGlzLl9tZXRob2QgPT0gInNldEludGVydmFsIikKKyAgICAg
ICAgICAgIHRoaXMuX2FuaW1hdG9yLnN0YXJ0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHRoaXMuX2FuaW1hdG9yLmFuaW1hdGVMb29wKCk7CisgICAgfSwKKyAgICAvLyBDYWxsZWQgZnJv
bSB0aGUgYW5pbWF0b3IgdG8gYWRqdXN0IHRoZSBjb21wbGV4aXR5IG9mIHRoZSB0ZXN0CisgICAg
dXBkYXRlIDogZnVuY3Rpb24oY3VycmVudFRpbWVPZmZzZXQsIHRpbWVEZWx0YSwgY3VycmVudEZy
YW1lUmF0ZSkgeworICAgICAgICB0aGlzLl9zdGF0ZS51cGRhdGUoY3VycmVudFRpbWVPZmZzZXQp
OworICAgICAgICAKKyAgICAgICAgdmFyIHN0YWdlID0gdGhpcy5fc3RhdGUuY3VycmVudFN0YWdl
KCk7CisgICAgICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQp
IHsKKyAgICAgICAgICAgIHRoaXMuY2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMu
U0FNUExJTkcgJiYgIXRoaXMuX2lzU2FtcGxpbmcpIHsKKyAgICAgICAgICAgIHRoaXMuX3NhbXBs
ZXIuc3RhcnRTYW1wbGluZyh0aGlzLl9zdGF0ZS5zYW1wbGluZ1RpbWVPZmZzZXQoKSk7CisgICAg
ICAgICAgICB0aGlzLl9pc1NhbXBsaW5nID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZh
ciB0dW5lVmFsdWUgPSAwOworICAgICAgICBpZiAoISh0aGlzLl9pc1NhbXBsaW5nICYmIHRoaXMu
b3B0aW9ucy5maXhUZXN0Q29tcGxleGl0eSkpIHsKKyAgICAgICAgICAgIC8vIFRoZSByZWxhdGlv
bnNoaXAgYmV0d2VlbiBmcmFtZVJhdGUgYW5kIHRlc3QgY29tcGxleGl0eSBpcyBpbnZlcnNlLXBy
b3BvcnRpb25hbCBzbyB3ZQorICAgICAgICAgICAgLy8gbmVlZCB0byB1c2UgdGhlIG5lZ2F0aXZl
IG9mIENvbnRyb2xsZXIudHVuZSgpIHRvIGNoYW5nZSB0aGUgY29tcGxleGl0eSBvZiB0aGUgdGVz
dAorICAgICAgICAgICAgdHVuZVZhbHVlID0gLXRoaXMuX2NvbnRyb2xsZXIudHVuZShjdXJyZW50
RnJhbWVSYXRlLCB0aW1lRGVsdGEgLyAxMDAwKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBj
dXJyZW50Q29tcGxleGl0eSA9IHRoaXMudHVuZSh0dW5lVmFsdWUpOworICAgICAgICB0aGlzLnJl
Y29yZChjdXJyZW50VGltZU9mZnNldCwgY3VycmVudENvbXBsZXhpdHksIGN1cnJlbnRGcmFtZVJh
dGUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorICAgIHJlY29yZCA6IGZ1bmN0aW9u
KGN1cnJlbnRUaW1lT2Zmc2V0LCBjdXJyZW50Q29tcGxleGl0eSwgY3VycmVudEZyYW1lUmF0ZSkg
eworICAgICAgICB0aGlzLl9zYW1wbGVyLnNhbXBsZShjdXJyZW50VGltZU9mZnNldCwgW2N1cnJl
bnRDb21wbGV4aXR5LCBjdXJyZW50RnJhbWVSYXRlXSk7CisgICAgICAgIAorICAgICAgICBpZiAo
dHlwZW9mIHRoaXMuX3JlY29yZFRpbWVPZmZzZXQgPT0gInVuZGVmaW5lZCIpCisgICAgICAgICAg
ICB0aGlzLl9yZWNvcmRUaW1lT2Zmc2V0ID0gY3VycmVudFRpbWVPZmZzZXQ7CisKKyAgICAgICAg
dmFyIHN0YWdlID0gdGhpcy5fc3RhdGUuY3VycmVudFN0YWdlKCk7CisgICAgICAgIGlmIChzdGFn
ZSAhPSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQgJiYgY3VycmVudFRpbWVPZmZzZXQg
PCB0aGlzLl9yZWNvcmRUaW1lT2Zmc2V0ICsgdGhpcy5fcmVjb3JkSW50ZXJ2YWwpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5zaG93UmVzdWx0cyh0aGlzLl9zdGF0ZS5jdXJy
ZW50TWVzc2FnZSgpLCB0aGlzLl9zdGF0ZS5jdXJyZW50UHJvZ3Jlc3MoKSk7CisgICAgICAgIHRo
aXMuX3JlY29yZFRpbWVPZmZzZXQgPSBjdXJyZW50VGltZU9mZnNldDsKKyAgICB9LAorICAgIHJ1
biA6IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLnN0YXJ0KCk7CisKKyAgICAgICAgdmFyIHBy
b21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAg
ICAgICBmdW5jdGlvbiByZXNvbHZlV2hlbkZpbmlzaGVkKCkgeworICAgICAgICAgICAgaWYgKHR5
cGVvZiBzZWxmLl9zdGF0ZSAhPSAidW5kZWZpbmVkIiAmJiAoc2VsZi5fc3RhdGUuY3VycmVudFN0
YWdlKCkgPT0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcHJvbWlzZS5yZXNvbHZlKHNlbGYuX3NhbXBsZXIpOworICAgICAgICAgICAgc2V0
VGltZW91dChyZXNvbHZlV2hlbkZpbmlzaGVkLmJpbmQoc2VsZiksIDUwKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgcmVzb2x2ZVdoZW5GaW5pc2hlZCgpOworICAgICAgICByZXR1cm4g
cHJvbWlzZTsKKyAgICB9Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvcmVzb3VyY2VzL21hdGguanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTg0IEBACit2YXIgTWF0cml4ID0ge307CisKK01hdHJpeC5pbml0ID0gZnVu
Y3Rpb24obSwgbiwgdikgeworICAgIHJldHVybiBBcnJheShtICogbikuZmlsbCh2KTsKK30KKwor
TWF0cml4Lnplcm9zID0gZnVuY3Rpb24obSwgbikgeworICAgIHJldHVybiBNYXRyaXguaW5pdCht
LCBuLCAwKTsKK30KKworTWF0cml4Lm9uZXMgPSBmdW5jdGlvbihtLCBuKSB7CisgICAgcmV0dXJu
IE1hdHJpeC5pbml0KG0sIG4sIDEpOworfQorCitNYXRyaXguaWRlbnRpdHkgPSBmdW5jdGlvbihu
KSB7CisgICAgdmFyIG91dCA9IG5ldyBNYXRyaXguemVyb3Mobiwgbik7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBuOyArK2kpCisgICAgICAgIG91dFtpICogbiArIGldID0gMTsKKyAgICByZXR1
cm4gb3V0OworfQorCitNYXRyaXguc3RyID0gZnVuY3Rpb24oQSwgbiwgbSkgeworICAgIHZhciBv
dXQgPSAobSA+IDEgJiYgbiA+IDEgPyAiTWF0cml4WyIgKyBuICsgIiwgIiArIG0gOiAiVmVjdG9y
WyIgKyBtICogbikgKyAiXSA9IFsiOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbiAqIG07ICsr
aSkgeworICAgICAgICBvdXQgKz0gQVtpXTsKKyAgICAgICAgaWYgKGkgPCBuICogbSAtIDEpCisg
ICAgICAgICAgICBvdXQgKz0gIiwgIjsKKyAgICB9ICAgICAgIAorICAgIHJldHVybiBvdXQgKyAi
XSI7Cit9OworCitNYXRyaXgucG9zID0gZnVuY3Rpb24obSwgaSwgaikgeworICAgIHJldHVybiBt
ICogaSArIGo7Cit9CisKK01hdHJpeC5hZGQgPSBmdW5jdGlvbihBLCBCLCBuLCBtKSB7CisgICAg
dmFyIG91dCA9IE1hdHJpeC56ZXJvcyhuLCBtKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4g
KiBtOyArK2kpCisgICAgICAgIG91dFtpXSA9IEFbaV0gKyBCW2ldOworICAgIHJldHVybiBvdXQ7
Cit9CisKK01hdHJpeC5zdWJ0cmFjdCA9IGZ1bmN0aW9uKEEsIEIsIG4sIG0pIHsKKyAgICB2YXIg
b3V0ID0gTWF0cml4Lnplcm9zKG4sIG0pOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbiAqIG07
ICsraSkKKyAgICAgICAgb3V0W2ldID0gQVtpXSAtIEJbaV07CisgICAgcmV0dXJuIG91dDsKK30K
KworTWF0cml4LnNjYWxlID0gZnVuY3Rpb24ocywgQSwgbiwgbSkgeworICAgIHZhciBvdXQgPSBN
YXRyaXguemVyb3MobiwgbSk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuICogbTsgKytpKQor
ICAgICAgICBvdXRbaV0gPSBzICogQVtpXTsKKyAgICByZXR1cm4gb3V0OworfQorCitNYXRyaXgu
dHJhbnNwb3NlID0gZnVuY3Rpb24oQSwgbiwgbSkgeworICAgIHZhciBvdXQgPSBNYXRyaXguemVy
b3MobSwgbik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgZm9y
ICh2YXIgaiA9IDA7IGogPCBtOyArK2opCisgICAgICAgICAgICBvdXRbTWF0cml4LnBvcyhuLCBp
LCBqKV0gPSBBW01hdHJpeC5wb3MobSwgaiwgaSldOworICAgIH0gICAgICAgCisgICAgcmV0dXJu
IG91dDsKK30KKworTWF0cml4Lm11bHRpcGx5ID0gZnVuY3Rpb24oQSwgQiwgbiwgbSwgcCkgewor
ICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3MobiwgcCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBuOyArK2kpIHsKKyAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwOyArK2opIHsKKyAgICAg
ICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbTsgKytrKSB7CisgICAgICAgICAgICAgICAgb3V0
W01hdHJpeC5wb3MocCwgaSwgaildICs9IEFbTWF0cml4LnBvcyhtLCBpLCBrKV0gKiBCW01hdHJp
eC5wb3MocCwgaywgaildOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiBvdXQ7Cit9CisKK3ZhciBWZWN0b3IzID0ge307CisKK1ZlY3RvcjMuemVyb3MgPSBmdW5j
dGlvbigpIHsgcmV0dXJuIE1hdHJpeC56ZXJvcygxLCAzKTsgfQorVmVjdG9yMy5vbmVzID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBNYXRyaXgub25lcygxLCAzKTsgfQorVmVjdG9yMy5zdHIgPSBmdW5j
dGlvbih2KSB7IHJldHVybiBNYXRyaXguc3RyKHYsIDEsIDMpOyB9CitWZWN0b3IzLmFkZCA9IGZ1
bmN0aW9uKHYsIHcpIHsgcmV0dXJuIE1hdHJpeC5hZGQodiwgdywgMSwgMyk7IH0KK1ZlY3RvcjMu
c3VidHJhY3QgPSBmdW5jdGlvbih2LCB3KSB7IHJldHVybiBNYXRyaXguc3VidHJhY3Qodiwgdywg
MSwgMyk7IH0KK1ZlY3RvcjMuc2NhbGUgPSBmdW5jdGlvbihzLCB2KSB7IHJldHVybiBNYXRyaXgu
c2NhbGUocywgdiwgMSwgMyk7IH0KK1ZlY3RvcjMubXVsdGlwbHlNYXRyaXgzID0gZnVuY3Rpb24o
diwgQSkgeyByZXR1cm4gTWF0cml4Lm11bHRpcGx5KHYsIEEsIDEsIDMsIDMpOyB9CitWZWN0b3Iz
Lm11bHRpcGx5VmVjdG9yMyA9IGZ1bmN0aW9uKHYsIHcpIHsKKyAgICB2YXIgb3V0ID0gMDsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDM7ICsraSkKKyAgICAgICAgb3V0ICs9IHZbaV0gKiB3W2ld
OworICAgIHJldHVybiBvdXQ7Cit9CisKK3ZhciBNYXRyaXgzID0ge307CisKK01hdHJpeDMuemVy
b3MgPSBmdW5jdGlvbigpIHsgcmV0dXJuIE1hdHJpeC56ZXJvcygzLCAzKTsgfQorTWF0cml4My5p
ZGVudGl0eSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gTWF0cml4LmlkZW50aXR5KDMsIDMpOyB9CitN
YXRyaXgzLnN0ciA9IGZ1bmN0aW9uKEEpIHsgcmV0dXJuIE1hdHJpeC5zdHIoQSwgMywgMyk7IH0K
K01hdHJpeDMucG9zID0gZnVuY3Rpb24oaSwgaikgeyByZXR1cm4gTWF0cml4LnBvcygzLCBpLCBq
KTsgfQorTWF0cml4My5hZGQgPSBmdW5jdGlvbihBLCBCKSB7IHJldHVybiBNYXRyaXguYWRkKEEs
IEIsIDMsIDMpOyB9CitNYXRyaXgzLnN1YnRyYWN0ID0gZnVuY3Rpb24oQSwgQikgeyByZXR1cm4g
TWF0cml4LnN1YnRyYWN0KEEsIEIsIDMsIDMpOyB9CitNYXRyaXgzLnNjYWxlID0gZnVuY3Rpb24o
cywgQSkgeyByZXR1cm4gTWF0cml4LnNjYWxlKHMsIEEsIDMsIDMpOyB9CitNYXRyaXgzLnRyYW5z
cG9zZSA9IGZ1bmN0aW9uKEEpIHsgcmV0dXJuIE1hdHJpeC50cmFuc3Bvc2UoQSwgMywgMyk7IH0K
K01hdHJpeDMubXVsdGlwbHlNYXRyaXgzID0gZnVuY3Rpb24oQSwgQikgeyByZXR1cm4gTWF0cml4
Lm11bHRpcGx5KEEsIEIsIDMsIDMsIDMpOyB9CitNYXRyaXgzLm11bHRpcGx5VmVjdG9yMyA9IGZ1
bmN0aW9uKEEsIHYpIHsgcmV0dXJuIE1hdHJpeC5tdWx0aXBseShBLCB2LCAzLCAzLCAxKTsgfQor
CitmdW5jdGlvbiBDb250cm9sbGVyKEssIHlzcCwgdWxvdywgdWhpZ2gpIHsKKyAgICB0aGlzLl95
c3AgPSB5c3A7CisKKyAgICB0aGlzLl9UZCA9IDU7CisgICAgdGhpcy5fVGkgPSAxNTsKKworICAg
IHRoaXMuX0twID0gSzsKKyAgICB0aGlzLl9LZCA9IEsgLyB0aGlzLl9UZDsKKyAgICB0aGlzLl9L
aSA9IEsgLyB0aGlzLl9UaTsKKworICAgIHRoaXMuX2VvbGQgPSAwOworICAgIHRoaXMuX0kgPSAw
OworfQorCitDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKKyAgICBfc2F0IDogZnVuY3Rpb24odiwg
bG93LCBoaWdoKSB7CisgICAgICAgIHJldHVybiB2IDwgbG93ID8gbG93IDogKHYgPiBoaWdoID8g
aGlnaCA6IHYpOworICAgIH0sCisgICAgdHVuZSA6IGZ1bmN0aW9uKHksIGgpIHsKKyAgICAgICAg
Ly8gQ3VycmVudCBlcnJvcgorICAgICAgICB2YXIgZSA9IHRoaXMuX3lzcCAtIHk7CisKKyAgICAg
ICAgLy8gUHJvcG9ydGlvbmFsIHRlcm0KKyAgICAgICAgdmFyIFAgPSB0aGlzLl9LcCAqIGU7Cisg
ICAgICAgIAorICAgICAgICAvLyBEZXJpdmF0aXZlIHRlcm0gaXMgdGhlIHNsb3BlIG9mIHRoZSBj
dXJ2ZSBhdCB0aGUgY3VycmVudCB0aW1lCisgICAgICAgIHZhciBEID0gdGhpcy5fS2QgKiAoZSAt
IHRoaXMuX2VvbGQpIC8gaDsKKworICAgICAgICAvLyBJbnRlZ3JhbCB0ZXJtIGlzIHRoZSBhcmVh
IHVuZGVyIHRoZSBjdXJ2ZSBzdGFydGluZyBmcm9tIHRoZSBiZWdpbmluZyB0aWxsIHRoZSBjdXJy
ZW50IHRpbWUKKyAgICAgICAgdGhpcy5fSSArPSB0aGlzLl9LaSAqICgoZSArIHRoaXMuX2VvbGQp
IC8gMikgKiBoOworCisgICAgICAgIC8vIHBpZCBjb250cm9sbGVyIHZhbHVlCisgICAgICAgIHZh
ciB2ID0gUCArIEQgKyB0aGlzLl9JOworICAgICAgICAKKyAgICAgICAgLy8gQXZvaWQgc3Bpa2Vz
IGJ5IGFwcGx5aW5nIGFjdHVhdG9yIHNhdHVhcnRpb24KKyAgICAgICAgdmFyIHUgPSB0aGlzLl9z
YXQodiwgdGhpcy5fdWxvdywgdGhpcy5fdWhpZ2gpOyAgICAgICAgCisKKyAgICAgICAgdGhpcy5f
ZW9sZCA9IGU7CisgICAgICAgIHJldHVybiB1OworICAgIH0KK30KKworZnVuY3Rpb24gRXN0aW1h
dG9yKCkgeworICAgIHRoaXMuX21hdEEgPSBNYXRyaXgzLmlkZW50aXR5KCk7CisgICAgCisgICAg
dGhpcy5fdmVjSCA9IFZlY3RvcjMuemVyb3MoKTsKKyAgICB0aGlzLl92ZWNIWzBdID0gMTsKKyAg
ICAKKyAgICB0aGlzLl9tYXRRID0gTWF0cml4My5pZGVudGl0eSgpOworICAgIHRoaXMuX1IgPSAx
MDAwOworICAgIAorICAgIHRoaXMuX3ZlY1hfZXN0ID0gVmVjdG9yMy5vbmVzKCk7CisgICAgdGhp
cy5fbWF0UF9lc3QgPSBNYXRyaXgzLnplcm9zKCk7Cit9CisKK0VzdGltYXRvci5wcm90b3R5cGUg
PSB7CisgICAgZXN0aW1hdGUgOiBmdW5jdGlvbih0aW1lRGVsdGEsIGN1cnJlbnQpIHsKKyAgICAg
ICAgLy8gVXBkYXRlIHRoZSB0cmFuc2l0aW9uIG1hdHJpeAorICAgICAgICB0aGlzLl9tYXRBW01h
dHJpeDMucG9zKDAsIDIpXSA9IDE7CisKKyAgICAgICAgLy8gUHJlZGljdGVkIHN0YXRlIGFuZCBj
b3ZhcmlhbmNlCisgICAgICAgIHZhciB2ZWNYX3ByZCA9IE1hdHJpeDMubXVsdGlwbHlWZWN0b3Iz
KHRoaXMuX21hdEEsIHRoaXMuX3ZlY1hfZXN0KTsKKyAgICAgICAgdmFyIG1hdFBfcHJkID0gTWF0
cml4My5hZGQoTWF0cml4My5tdWx0aXBseU1hdHJpeDMoTWF0cml4My5tdWx0aXBseU1hdHJpeDMo
dGhpcy5fbWF0QSwgdGhpcy5fbWF0UF9lc3QpLCBNYXRyaXgzLnRyYW5zcG9zZSh0aGlzLl9tYXRB
KSksIHRoaXMuX21hdFEpOworCisgICAgICAgIC8vIEVzdGltYXRpb24KKyAgICAgICAgdmFyIHZl
Y0IgPSBWZWN0b3IzLm11bHRpcGx5TWF0cml4Myh0aGlzLl92ZWNILCBNYXRyaXgzLnRyYW5zcG9z
ZShtYXRQX3ByZCkpOworICAgICAgICB2YXIgUyA9IFZlY3RvcjMubXVsdGlwbHlWZWN0b3IzKHZl
Y0IsIHRoaXMuX3ZlY0gpICsgdGhpcy5fUjsKKworICAgICAgICB2YXIgdmVjR2FpbiA9IFZlY3Rv
cjMuc2NhbGUoMS9TLCB2ZWNCKTsKKyAgICAgICAgCisgICAgICAgIC8vIEVzdGltYXRlZCBzdGF0
ZSBhbmQgY292YXJpYW5jZQorICAgICAgICB0aGlzLl92ZWNYX2VzdCA9IFZlY3RvcjMuYWRkKHZl
Y1hfcHJkLCBWZWN0b3IzLnNjYWxlKGN1cnJlbnQgLSBWZWN0b3IzLm11bHRpcGx5VmVjdG9yMyh0
aGlzLl92ZWNILCB2ZWNYX3ByZCksIHZlY0dhaW4pKTsKKyAgICAgICAgdGhpcy5fbWF0UF9lc3Qg
PSBNYXRyaXgzLnN1YnRyYWN0KG1hdFBfcHJkLCBNYXRyaXgzLnNjYWxlKFZlY3RvcjMubXVsdGlw
bHlWZWN0b3IzKHZlY0dhaW4sIHRoaXMuX3ZlY0gpLCBtYXRQX3ByZCkpOworCisgICAgICAgIC8v
IENvbXB1dGUgdGhlIGVzdGltYXRlZCBtZWFzdXJlbWVudAorICAgICAgICByZXR1cm4gVmVjdG9y
My5tdWx0aXBseVZlY3RvcjModGhpcy5fdmVjSCwgIHRoaXMuX3ZlY1hfZXN0KTsKKyAgICB9Cit9
CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdl
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNv
dXJjZXMvc3RhZ2UuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIg
QEAKK2Z1bmN0aW9uIFN0YWdlKGVsZW1lbnQsIG9wdGlvbnMpIHsKKyAgICB0aGlzLmVsZW1lbnQg
PSBlbGVtZW50OworfQorCitTdGFnZS5wcm90b3R5cGUgPSB7CisgICAgc2l6ZSA6IGZ1bmN0aW9u
KCkgeworICAgICAgICB2YXIgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5l
bGVtZW50KTsKKyAgICAgICAgdmFyIHBhZGRpbmcgPSBuZXcgSW5zZXRzKAorICAgICAgICAgICAg
cGFyc2VGbG9hdChzdHlsZXMucGFkZGluZ1RvcCksCisgICAgICAgICAgICBwYXJzZUZsb2F0KHN0
eWxlcy5wYWRkaW5nUmlnaHQpLAorICAgICAgICAgICAgcGFyc2VGbG9hdChzdHlsZXMucGFkZGlu
Z0JvdHRvbSksCisgICAgICAgICAgICBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nVG9wKSk7Cisg
ICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy5lbGVtZW50LmNsaWVudFdpZHRoIC0gcGFkZGlu
Zy53aWR0aCgpLCB0aGlzLmVsZW1lbnQuY2xpZW50SGVpZ2h0IC0gcGFkZGluZy5oZWlnaHQoKSk7
CisgICAgfSwKKyAgICBjbGVhciA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy50
dW5lKC10aGlzLnR1bmUoMCkpOworICAgIH0sCisgICAgcmFuZG9tIDogZnVuY3Rpb24obWluLCBt
YXgpIHsKKyAgICAgICAgcmV0dXJuIChNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikpICsgbWlu
OworICAgIH0sCisgICAgcmFuZG9tSW50IDogZnVuY3Rpb24obWluLCBtYXgpIHsKKyAgICAgICAg
cmV0dXJuIE1hdGguZmxvb3IodGhpcy5yYW5kb20obWluLCBtYXgpKTsKKyAgICB9LAorICAgIHJh
bmRvbVBvc2l0aW9uIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBtYXggPSB0aGlzLnNpemUo
KS5zdWJ0cmFjdCh0aGlzLnBhcnRpY2xlU2l6ZSk7CisgICAgICAgIHJldHVybiBuZXcgUG9pbnQo
dGhpcy5yYW5kb21JbnQoMCwgbWF4LngpLCB0aGlzLnJhbmRvbUludCgwLCBtYXgueSkpOworICAg
IH0sCisgICAgcmFuZG9tVmVsb2NpdHkgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMucmFuZG9tKHRoaXMuX21heFZlbG9jaXR5IC8gOCwgdGhpcy5fbWF4VmVsb2NpdHkpOworICAg
IH0sCisgICAgcmFuZG9tQW5nbGUgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
cmFuZG9tKDAsIE1hdGguUEkgKiAyKTsKKyAgICB9LAorICAgIHJhbmRvbUNvbG9yIDogZnVuY3Rp
b24oKSB7CisgICAgICAgIHZhciBtaW4gPSAzMjsKKyAgICAgICAgdmFyIG1heCA9IDI1NiAtIDMy
OworICAgICAgICByZXR1cm4gIiMiCisgICAgICAgICAgICArIHRoaXMucmFuZG9tSW50KG1pbiwg
bWF4KS50b1N0cmluZygxNikKKyAgICAgICAgICAgICsgdGhpcy5yYW5kb21JbnQobWluLCBtYXgp
LnRvU3RyaW5nKDE2KQorICAgICAgICAgICAgKyB0aGlzLnJhbmRvbUludChtaW4sIG1heCkudG9T
dHJpbmcoMTYpOworICAgIH0KK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzCShyZXZpc2lvbiAwKQor
KysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy91dGlsaXRpZXMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAord2luZG93LmJlbmNobWFya0NsaWVu
dCA9IHsKKyAgICBfcGFyc2UgOiBmdW5jdGlvbihzdHIsIHNlcCkgeworICAgICAgICB2YXIgb3V0
cHV0ID0ge307CisgICAgICAgIHN0ci5zcGxpdChzZXApLmZvckVhY2goZnVuY3Rpb24ocGFydCkg
eworICAgICAgICAgICAgdmFyIGl0ZW0gPSBwYXJ0LnNwbGl0KCI9Iik7CisgICAgICAgICAgICB2
YXIgdmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQoaXRlbVsxXSk7CisgICAgICAgICAgICBpZiAo
dmFsdWVbMF0gPT0gJ1wnJyApCisgICAgICAgICAgICAgICAgb3V0cHV0W2l0ZW1bMF1dID0gdmFs
dWUuc3Vic3RyKDEsIHZhbHVlLmxlbmd0aCAtIDIpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIG91dHB1dFtpdGVtWzBdXSA9IHZhbHVlOyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICB9KTsKKyAgICAgICAgcmV0dXJuIG91dHB1dDsKKyAgICB9LAorICAgIHBhcnNlUGFyYW1l
dGVycyA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2Uod2luZG93Lmxv
Y2F0aW9uLnNlYXJjaC5zdWJzdHIoMSksICImIik7CisgICAgfSwKKyAgICBwYXJzZUFyZ3VtZW50
cyA6IGZ1bmN0aW9uKHN0cikgeworICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2Uoc3RyLCAiICIp
OworICAgIH0sCisgICAgZXh0ZW5kT2JqZWN0IDogZnVuY3Rpb24ob2JqMSwgb2JqMikgeworICAg
ICAgICBmb3IgKHZhciBhdHRybmFtZSBpbiBvYmoyKQorICAgICAgICAgICAgb2JqMVthdHRybmFt
ZV0gPSBvYmoyW2F0dHJuYW1lXTsKKyAgICAgICAgcmV0dXJuIG9iajE7CisgICAgfSwKKyAgICBj
b3B5T2JqZWN0IDogZnVuY3Rpb24ob2JqKSB7CisgICAgICAgIHJldHVybiB0aGlzLmV4dGVuZE9i
amVjdCh7fSwgb2JqKTsKKyAgICB9LAorICAgIG1lcmdlT2JqZWN0cyA6IGZ1bmN0aW9uKG9iajEs
IG9iajIpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kT2JqZWN0KHRoaXMuY29weU9iamVj
dChvYmoxKSwgb2JqMik7CisgICAgfQorfTsKKworLy8gVGhpcyBldmVudCBsaXN0ZW5lciBydW5z
IHRoZSB0ZXN0IGlmIGl0IGlzIGxvYWRlZCBvdXRzaWRlIHRoZSBiZW5jaG1hcmsgcnVubmVyLgor
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICBpZiAod2lu
ZG93LnNlbGYgIT09IHdpbmRvdy50b3ApCisgICAgICAgIHJldHVybjsKKyAgICB3aW5kb3cuYmVu
Y2htYXJrQ2xpZW50LmNyZWF0ZShudWxsLCBudWxsLCAzMDAwMCwgNTAsIG51bGwsIG51bGwpOwor
ICAgIHdpbmRvdy5iZW5jaG1hcmsuc3RhcnQoKTsKK30pOworCisvLyBUaGlzIGZ1bmN0aW9uIGlz
IGNhbGxlZCBmcm9tIHRoZSBzdWl0ZSBjb250cm9sbGVyIHJ1bi1jYWxsYmFjayB3aGVuIHJ1bm5p
bmcgdGhlIGJlbmNobWFyayBydW5uZXIuCit3aW5kb3cucnVuQmVuY2htYXJrID0gZnVuY3Rpb24o
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIHZh
ciBtZXJnZU9wdGlvbnMgPSB3aW5kb3cuYmVuY2htYXJrQ2xpZW50Lm1lcmdlT2JqZWN0cyhvcHRp
b25zLCB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LnBhcnNlUGFyYW1ldGVycygpKTsKKyAgICB3aW5k
b3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZShzdWl0ZSwgdGVzdCwgbWVyZ2VPcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIHJldHVybiB3aW5kb3cuYmVuY2htYXJrLnJ1bigp
OworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95
aW4teWFuZy5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL3Jlc291cmNlcy95aW4teWFuZy5zdmcJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnN2Zwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE3IEBACis8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayIgdmlld0JveD0iMCAwIDIwMCAyMDAiPg0KKyAgPGRlZnM+DQorICAgIDxjbGlwUGF0aCBpZD0i
bGVmdC1oYWxmIj4NCisgICAgICA8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjIwMCIvPg0KKyAg
ICA8L2NsaXBQYXRoPg0KKyAgICA8Y2xpcFBhdGggaWQ9InJpZ2h0LWhhbGYiPg0KKyAgICAgIDxy
ZWN0IHg9IjEwMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIyMDAiLz4NCisgICAgPC9jbGlwUGF0aD4N
CisgIDwvZGVmcz4NCisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjEwMCIgcj0iOTgiIGZpbGw9Im5v
bmUiIHN0cm9rZT0iZ3JlZW4iIHN0cm9rZS13aWR0aD0iMiIvPg0KKyAgPGNpcmNsZSBjeD0iMTAw
IiBjeT0iMTAwIiByPSI5OCIgZmlsbD0id2hpdGUiIGNsaXAtcGF0aD0idXJsKCNsZWZ0LWhhbGYp
Ii8+DQorICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSIxMDAiIHI9Ijk4IiBmaWxsPSJncmVlbiIgY2xp
cC1wYXRoPSJ1cmwoI3JpZ2h0LWhhbGYpIi8+DQorICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSI1MCIg
IHI9IjQ5IiBmaWxsPSJncmVlbiIvPg0KKyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iMTQ4IiByPSI0
OSIgZmlsbD0id2hpdGUiLz4NCisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjUwIiAgcj0iMTAiIGZp
bGw9IndoaXRlIi8+ICAgIA0KKyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iMTQ4IiByPSIxMCIgZmls
bD0iZ3JlZW4iLz4NCis8L3N2Zz4NCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1sCShyZXZpc2lvbiAw
KQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlPgorICAgIC50ZXh0LWxheWVyIHsKKyAgICAgIGZvbnQt
c2l6ZTogMTEuNXB4OworICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgbGVmdDogMHB4
OworICAgICAgdG9wOiAwcHg7CisgICAgICBwYWRkaW5nOiA1cHg7CisgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICB9CisgIDwvc3R5bGU+ICAKKyAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5j
c3MiPgorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3Jp
cHQ+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3Jp
cHQ+ICAKKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4K
KyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2xheWVyaW5nLXRleHQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9
InN0YWdlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9s
YXllcmluZy10ZXh0LmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwyNTkgQEAKK2Z1bmN0aW9uIExheWVyaW5nVGV4dEFuaW1hdG9yKGJlbmNobWFy
aykgeworICAgIEFuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrKTsKK307CisKK0xheWVyaW5n
VGV4dEFuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQW5pbWF0b3IucHJvdG90eXBl
KTsKK0xheWVyaW5nVGV4dEFuaW1hdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IExheWVyaW5n
VGV4dEFuaW1hdG9yOworCitMYXllcmluZ1RleHRBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSA9
IGZ1bmN0aW9uKCkgeworICAgIGlmICghQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0
aGlzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uu
YW5pbWF0ZSh0aGlzLnRpbWVEZWx0YSgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rp
b24gTGF5ZXJpbmdUZXh0U3RhZ2UoZWxlbWVudCwgb3B0aW9ucykgeworICAgIFN0YWdlLmNhbGwo
dGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQgPSB0
aGlzLmVsZW1lbnQ7CisgICAgdGhpcy5fdGV4dEVsZW1lbnRzID0gW107CisgICAgdGhpcy5fdGV4
dEl0ZW1JbmRleCA9IDA7CisgICAgdGhpcy5fY29sb3JJbmRleCA9IDA7CisgICAgdGhpcy5fYW5p
bWF0ZUNvdW50cyA9IDA7Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtcyA9IFsKKyAg
ICAiPGRpdiBpZD0naWRfMDAnIGNsYXNzPSd0ZXh0LWxheWVyJz4iLAorICAgICAgICAiPGgyIGlk
PSdpZF8wMSc+Q3VzdG9taXplZCBzdHlsZXM8L2gyPiIsCisgICAgICAgICI8cCBpZD0naWRfMDIn
PklmIHlvdSB3YW50IGZvcm1hdHRpbmcgY2hvaWNlcyB0aGF0IGFyZSBub3QgYXZhaWxhYmxlIGZy
b20gdGhlIGJ1aWx0LWluIHN0eWxlcywgUXVpY2sgU3R5bGUgc2V0cywgYW5kIHRoZW1lcywgeW91
IGNhbiBjcmVhdGUgY3VzdG9tIHN0eWxlcyB0byBzdWl0IHlvdXIgbmVlZHMuPC9wPiIsCisgICAg
ICAgICI8cCBpZD0naWRfMDMnPlRoZSBlYXNpZXN0IHdheSB0byBjcmVhdGUgYSBjdXN0b20gc3R5
bGUgaXMgdG8gbW9kaWZ5IGEgYnVpbHQtaW4gc3R5bGUgYW5kIHRoZW4gc2F2ZSBpdCBhcyBhIG5l
dyBzdHlsZS48L3A+IiwKKyAgICAgICAgIjxwIGlkPSdpZF8wNCc+Rm9yIGV4YW1wbGUsIHlvdSBt
aWdodCB3YW50IHRvIGZvcm1hdCBhIHBhcmFncmFwaCBvZiBxdW90ZWQgbWF0ZXJpYWwgd2l0aCBh
IGhhbGYtaW5jaCBpbmRlbnQgZnJvbSB0aGUgbGVmdCBhbmQgcmlnaHQgbWFyZ2lucywgc2luZ2xl
IHNwYWNlZC4gVGhlcmUgaXMgbm8gYnVpbHQtaW4gc3R5bGUgdG8gYWNjb21tb2RhdGUgdGhpcywg
YnV0IHlvdSBjYW4gY3JlYXRlIGEgY3VzdG9tIHN0eWxlIGJ5IGRvaW5nIHRoZSBmb2xsb3dpbmc6
PC9wPiIsCisgICAgICAgICI8b2wgdHlwZT0nMScgaWQ9J2lkXzA1Jz4iLAorICAgICAgICAgICAg
IjxsaSBpZD0naWRfMDYnPjxwPkNsaWNrIGluIHRoZSBwYXJhZ3JhcGggeW91IHdhbnQgdG8gZm9y
bWF0LjwvcD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8wNyc+PHA+T24gdGhlIDxi
PkhvbWU8L2I+IHRhYiwgY2xpY2sgdGhlIDxiPlBhcmFncmFwaDwvYj4gRGlhbG9nIEJveCBMYXVu
Y2hlci48L3A+PC9saT4iLAorICAgICAgICAgICAgIjxsaSBpZD0naWRfMDgnPjxwPkluIHRoZSA8
Yj5JbmRlbnRhdGlvbjwvYj4gc2VjdGlvbiwgdHlwZSA8YiBjbGFzcz0nb2NwTGl0ZXJhbCc+MC41
JzwvYj4gaW4gdGhlIDxiPkxlZnQ8L2I+IGFuZCA8Yj5SaWdodDwvYj4gYm94ZXMuPC9wPjwvbGk+
IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzA5Jz48cD5JbiB0aGUgPGI+U3BhY2luZzwvYj4g
c2VjdGlvbiwgaW4gdGhlIDxiPkxpbmUgc3BhY2luZzwvYj4gbGlzdCwgY2xpY2sgPGI+U2luZ2xl
PC9iPi48L3A+PC9saT4iLAorICAgICAgICAgICAgIjxsaSBpZD0naWRfMTAnPjxwPkNsaWNrIDxi
Pk9LPC9iPi48L3A+PC9saT4iLAorICAgICAgICAgICAgIjxsaSBpZD0naWRfMTEnPjxwPlJpZ2h0
LWNsaWNrIGluIHRoZSBwYXJhZ3JhcGgsIHBvaW50IHRvIDxiPlN0eWxlczwvYj4sIGFuZCB0aGVu
IGNsaWNrIDxiPlNhdmUgU2VsZWN0aW9uIGFzIGEgTmV3IFF1aWNrIFN0eWxlPC9iPi48L3A+PC9s
aT4iLAorICAgICAgICAgICAgIjxsaSBpZD0naWRfMTInPjxwPkluIHRoZSA8Yj5OYW1lPC9iPiBi
b3gsIHR5cGUgYSBuYW1lIGZvciB0aGUgc3R5bGUsIHN1Y2ggYXMgPGI+QmxvY2sgcXVvdGU8L2I+
LiA8L3A+PC9saT4iLAorICAgICAgICAgICAgIjxsaSBpZD0naWRfMTMnPjxwPklmIHlvdSB3YW50
IHRoZSBzdHlsZSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgZ2FsbGVyeSBvZiBzdHlsZXMgb24gdGhl
IDxiPkhvbWU8L2I+IHRhYiwgYW5kIGlmIHlvdSB3YW50IHRoZSBzdHlsZSB0byBiZSBhIGxpbmtl
ZCBzdHlsZSwgY2xpY2sgPGI+T0s8L2I+LjwvcD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlk
PSdpZF8xNCc+IiwKKyAgICAgICAgICAgICAgICAiPHAgaWQ9J2lkXzE1Jz5JZiB5b3UgZG9uJ3Qg
d2FudCB0aGUgc3R5bGUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGdhbGxlcnksIG9yIGlmIHlvdSB3
YW50IHRoZSBzdHlsZSB0byBiZSBlaXRoZXIgYSBwYXJhZ3JhcGggb3IgYSBjaGFyYWN0ZXIgc3R5
bGUsIGNsaWNrIDxiPk1vZGlmeTwvYj4gYW5kIGRvIG9uZSBvciBib3RoIG9mIHRoZSBmb2xsb3dp
bmc6PC9wPiIsCisgICAgICAgICAgICAgICAgIjx1bCBpZD0naWRfMTYnPiIsCisgICAgICAgICAg
ICAgICAgICAgICI8bGkgaWQ9J2lkXzE3Jz48cD5BdCB0aGUgYm90dG9tIG9mIHRoZSBkaWFsb2cg
Ym94LCBjbGVhciB0aGUgPGI+QWRkIHRvIFF1aWNrIFN0eWxlPC9iPiBsaXN0IGJveC48L3A+PC9s
aT4iLAorICAgICAgICAgICAgICAgICAgICAiPGxpIGlkPSdpZF8xOCc+PHA+SW4gdGhlIDxiPlN0
eWxlIHR5cGU8L2I+IGxpc3QsIGNsaWNrIDxiPlBhcmFncmFwaDwvYj4gb3IgPGI+Q2hhcmFjdGVy
PC9iPi48L3A+PC9saT4iLAorICAgICAgICAgICAgICAgICI8L3VsPiIsCisgICAgICAgICAgICAi
PC9saT4iLAorICAgICAgICAiPC9vbD4iLAorICAgICAgICAiPHAgaWQ9J2lkXzE5Jz5JZiB5b3Ug
c3dpdGNoIHRvIGEgZGlmZmVyZW50IFF1aWNrIFN0eWxlIHNldCwgeW91IG1heSBuZWVkIHRvIGFk
anVzdCB0aGUgc2V0dGluZ3Mgb2YgeW91ciBjdXN0b20gc3R5bGUuIEluIHRoZSBleGFtcGxlIGhl
cmUsIGlmIHlvdSBjcmVhdGUgdGhlIEJsb2NrIHF1b3RlIHN0eWxlIHdoaWxlIHRoZSBXb3JkIDIw
MDcgUXVpY2sgU3R5bGUgc2V0IGlzIGFwcGxpZWQsIGFuZCB0aGVuIHlvdSBzd2l0Y2ggdG8gdGhl
IFRyYWRpdGlvbmFsIFF1aWNrIFN0eWxlIHNldCwgeW91IGNhbiBjaGFuZ2UgdGhlIEJsb2NrIHF1
b3RlIHN0eWxlIHRvIHJlbW92ZSB0aGUgZmlyc3QtbGluZSBpbmRlbnRhdGlvbiB0aGF0IHRoZSBU
cmFkaXRpb25hbCBRdWljayBTdHlsZSBzZXQgaW50cm9kdWNlcy4gVG8gY2hhbmdlIGEgc3R5bGUs
IGRvIHRoZSBmb2xsb3dpbmc6PC9wPiIsCisgICAgICAgICI8b2wgdHlwZT0nMScgaWQ9J2lkXzIw
Jz4iLAorICAgICAgICAgICAgIjxsaSBpZD0naWRfMjEnPjxwPk9uIHRoZSA8Yj5Ib21lPC9iPiB0
YWIgaW4gdGhlIDxiPlN0eWxlczwvYj4gZ3JvdXAsIHJpZ2h0LWNsaWNrIDxiPkJsb2NrIHF1b3Rl
PC9iPiwgYW5kIHRoZW4gY2xpY2sgPGI+TW9kaWZ5PC9iPi48L3A+PC9saT4iLAorICAgICAgICAg
ICAgIjxsaSBpZD0naWRfMjInPjxwPkNsaWNrIDxiPkZvcm1hdDwvYj4sIGFuZCB0aGVuIGNsaWNr
IDxiPlBhcmFncmFwaDwvYj4uPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzIz
Jz48cD5JbiB0aGUgPGI+SW5kZW50YXRpb248L2I+IHNlY3Rpb24sIGluIHRoZSA8Yj5TcGVjaWFs
PC9iPiBsaXN0LCBjbGljayA8Yj4obm9uZSk8L2I+LjwvcD48L2xpPiIsCisgICAgICAgICI8L29s
PiIsCisgICAgICAgICI8cCBpZD0naWRfMjQnPlRoZSBtb3JlIGNoYXJhY3RlcmlzdGljcyB0aGF0
IHlvdSBzcGVjaWZ5IGZvciB0aGUgc3R5bGUsIHRoZSBsZXNzIHRoZSBzdHlsZSBpcyBhZmZlY3Rl
ZCBieSBzd2l0Y2hpbmcgUXVpY2sgU3R5bGUgc2V0cyBvciB0aGVtZXMuPC9wPiIsCisgICAgIjwv
ZGl2PiIKK107CisKK0xheWVyaW5nVGV4dFN0YWdlLnBhcnNlVGV4dEl0ZW0gPSBmdW5jdGlvbih0
ZXh0SXRlbSkgeworICAgIHZhciBwcmFzZVJlc3VsdCA9IHt9OworICAgIHByYXNlUmVzdWx0LnRh
Z1N0YXJ0ID0gdGV4dEl0ZW0ubWF0Y2goLzwoLio/KT4vZylbMF07CisgICAgdmFyIHNwYWNlSW5k
ZXggPSBwcmFzZVJlc3VsdC50YWdTdGFydC5pbmRleE9mKCIgIik7CisgICAgcHJhc2VSZXN1bHQu
bm9kZU5hbWUgPSBwcmFzZVJlc3VsdC50YWdTdGFydC5zdWJzdHJpbmcoMSwgc3BhY2VJbmRleCAh
PSAtMSA/IHNwYWNlSW5kZXggOiBwcmFzZVJlc3VsdC50YWdTdGFydC5sZW5ndGggLSAxKTsKKyAg
ICBwcmFzZVJlc3VsdC5hcmdzID0gc3BhY2VJbmRleCAhPSAtMSA/IHdpbmRvdy5iZW5jaG1hcmtD
bGllbnQucGFyc2VBcmd1bWVudHMocHJhc2VSZXN1bHQudGFnU3RhcnQuc3Vic3RyaW5nKHNwYWNl
SW5kZXggKyAxLCBwcmFzZVJlc3VsdC50YWdTdGFydC5sZW5ndGggLSAxKSkgOiB7fTsKKyAgICB2
YXIgdGFnRW5kID0gIjwvIiArIHByYXNlUmVzdWx0Lm5vZGVOYW1lICsgIj4iOyAgICAgICAgICAg
ICAgICAKKyAgICBwcmFzZVJlc3VsdC50YWdFbmQgPSB0ZXh0SXRlbS5lbmRzV2l0aCh0YWdFbmQp
ID8gdGFnRW5kIDogIiI7CisgICAgcmV0dXJuIHByYXNlUmVzdWx0OworfQorCitMYXllcmluZ1Rl
eHRTdGFnZS5pc09wZW5pbmdUZXh0SXRlbSA9IGZ1bmN0aW9uKHRleHRJdGVtKSB7CisgICAgcmV0
dXJuICFMYXllcmluZ1RleHRTdGFnZS5wYXJzZVRleHRJdGVtKHRleHRJdGVtKS50YWdFbmQubGVu
Z3RoOworfQorCitMYXllcmluZ1RleHRTdGFnZS5pc0Nsb3NpbmdUZXh0SXRlbSA9IGZ1bmN0aW9u
KHRleHRJdGVtKSB7CisgICAgcmV0dXJuIHRleHRJdGVtLmluZGV4T2YoIi8iKSA9PSArMTsKK30K
KworTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MgPSBMYXllcmluZ1RleHRTdGFnZS50
ZXh0SXRlbXMubWFwKGZ1bmN0aW9uKHRleHRJdGVtKXsKKyAgIHZhciB0ZXh0SXRlbUZsYWdzID0g
e307CisgICB0ZXh0SXRlbUZsYWdzLmlzT3BlbmluZyA9IExheWVyaW5nVGV4dFN0YWdlLmlzT3Bl
bmluZ1RleHRJdGVtKHRleHRJdGVtKTsKKyAgIHRleHRJdGVtRmxhZ3MuaXNDbG9zaW5nID0gTGF5
ZXJpbmdUZXh0U3RhZ2UuaXNDbG9zaW5nVGV4dEl0ZW0odGV4dEl0ZW0pOyAgIAorICAgcmV0dXJu
IHRleHRJdGVtRmxhZ3M7Cit9KTsKKworTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDb2xvcmFibGVUZXh0
SXRlbSA9IGZ1bmN0aW9uKHRleHRJdGVtRmxhZ3MpIHsKKyAgICByZXR1cm4gISh0ZXh0SXRlbUZs
YWdzLmlzT3BlbmluZyB8fCB0ZXh0SXRlbUZsYWdzLmlzQ2xvc2luZyk7Cit9CisKK0xheWVyaW5n
VGV4dFN0YWdlLmlzSW5zZXJ0YWJsZVRleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW1GbGFncykg
eworICAgIHJldHVybiAhdGV4dEl0ZW1GbGFncy5pc0Nsb3Npbmc7Cit9CisKK0xheWVyaW5nVGV4
dFN0YWdlLmNvbG9yYWJsZVRleHRJdGVtcyA9IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0Zs
YWdzLmZpbHRlcihmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKSB7CisgICAgcmV0dXJuIExheWVyaW5n
VGV4dFN0YWdlLmlzQ29sb3JhYmxlVGV4dEl0ZW0odGV4dEl0ZW1GbGFncyk7Cit9KS5sZW5ndGg7
CisKK0xheWVyaW5nVGV4dFN0YWdlLmluc2VydGFibGVUZXh0SXRlbXMgPSBMYXllcmluZ1RleHRT
dGFnZS50ZXh0SXRlbXNGbGFncy5maWx0ZXIoZnVuY3Rpb24odGV4dEl0ZW1GbGFncykgeworICAg
IHJldHVybiBMYXllcmluZ1RleHRTdGFnZS5pc0luc2VydGFibGVUZXh0SXRlbSh0ZXh0SXRlbUZs
YWdzKTsKK30pLmxlbmd0aDsKKworTGF5ZXJpbmdUZXh0U3RhZ2UuY29sb3JJbmRleFRvVGV4dEVs
ZW1lbnRJbmRleCA9IGZ1bmN0aW9uKGNvbG9ySW5kZXgpIHsKKyAgICB2YXIgdGV4dEVsZW1lbnRJ
bmRleCA9IDA7CisgICAgdmFyIGluZGV4ID0gMDsKKyAgICAKKyAgICBmb3IgKHZhciB0ZXh0SXRl
bUluZGV4ID0gMDsgdGV4dEl0ZW1JbmRleCA8IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0Zs
YWdzLmxlbmd0aDsgKyt0ZXh0SXRlbUluZGV4KSB7CisgICAgICAgIGlmIChMYXllcmluZ1RleHRT
dGFnZS5pc0NvbG9yYWJsZVRleHRJdGVtKExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdz
W3RleHRJdGVtSW5kZXhdKSkgeworICAgICAgICAgICAgaWYgKCsraW5kZXggPiBjb2xvckluZGV4
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChMYXllcmlu
Z1RleHRTdGFnZS5pc0luc2VydGFibGVUZXh0SXRlbShMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRl
bXNGbGFnc1t0ZXh0SXRlbUluZGV4XSkpCisgICAgICAgICAgICArK3RleHRFbGVtZW50SW5kZXg7
CisgICAgfQorICAgIAorICAgIHJldHVybiB0ZXh0RWxlbWVudEluZGV4OworfQorCitMYXllcmlu
Z1RleHRTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlLnByb3RvdHlwZSk7CitM
YXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMYXllcmluZ1RleHRTdGFn
ZTsKKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9uZXh0VGV4dEl0ZW0gPSBmdW5jdGlv
bih0ZXh0SXRlbUZsYWdzKSB7CisgICAgdmFyIHRleHRJdGVtID0gTGF5ZXJpbmdUZXh0U3RhZ2Uu
dGV4dEl0ZW1zW3RoaXMuX3RleHRJdGVtSW5kZXhdOworICAgIHdpbmRvdy5iZW5jaG1hcmtDbGll
bnQuZXh0ZW5kT2JqZWN0KHRleHRJdGVtRmxhZ3MsIExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVt
c0ZsYWdzW3RoaXMuX3RleHRJdGVtSW5kZXhdKTsKKyAgICB0aGlzLl90ZXh0SXRlbUluZGV4ID0g
KHRoaXMuX3RleHRJdGVtSW5kZXggKyAxKSAlIExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtcy5s
ZW5ndGg7CisgICAgcmV0dXJuIHRleHRJdGVtOworfQorCitMYXllcmluZ1RleHRTdGFnZS5wcm90
b3R5cGUuX3ByZXZpb3VzVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKSB7CisgICAg
dGhpcy5fdGV4dEl0ZW1JbmRleCA9ICh0aGlzLl90ZXh0SXRlbUluZGV4ICsgTGF5ZXJpbmdUZXh0
U3RhZ2UudGV4dEl0ZW1zLmxlbmd0aCAtIDEpICUgTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1z
Lmxlbmd0aDsKKyAgICB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmV4dGVuZE9iamVjdCh0ZXh0SXRl
bUZsYWdzLCBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0aGlzLl90ZXh0SXRlbUlu
ZGV4XSk7ICAgIAorICAgIHJldHVybiBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNbdGhpcy5f
dGV4dEl0ZW1JbmRleF07Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fcHVzaFRl
eHRFbGVtZW50ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHRleHRJdGVtRmxhZ3MgPSB7fTsKKyAg
ICB2YXIgdGV4dEl0ZW0gPSB0aGlzLl9uZXh0VGV4dEl0ZW0odGV4dEl0ZW1GbGFncyk7CisgICAg
Zm9yICggOyB0ZXh0SXRlbUZsYWdzLmlzQ2xvc2luZzsgdGV4dEl0ZW0gPSB0aGlzLl9uZXh0VGV4
dEl0ZW0odGV4dEl0ZW1GbGFncykpCisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0g
dGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQucGFyZW50Tm9kZTsKKworICAgIHZhciBwcmFzZVJlc3Vs
dCA9IExheWVyaW5nVGV4dFN0YWdlLnBhcnNlVGV4dEl0ZW0odGV4dEl0ZW0pOworICAgIHRleHRJ
dGVtID0gdGV4dEl0ZW0uc3Vic3RyaW5nKHByYXNlUmVzdWx0LnRhZ1N0YXJ0Lmxlbmd0aCwgdGV4
dEl0ZW0ubGVuZ3RoIC0gcHJhc2VSZXN1bHQudGFnRW5kLmxlbmd0aCk7CisKKyAgICB2YXIgdGV4
dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHByYXNlUmVzdWx0Lm5vZGVOYW1lKTsK
KworICAgIGZvciAodmFyIGF0dHJuYW1lIGluIHByYXNlUmVzdWx0LmFyZ3MpCisgICAgICAgIHRl
eHRFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRybmFtZSwgcHJhc2VSZXN1bHQuYXJnc1thdHRybmFt
ZV0pOworCisgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQuYXBwZW5kQ2hpbGQodGV4dEVsZW1l
bnQpOworICAgIAorICAgIGlmICghcHJhc2VSZXN1bHQudGFnRW5kLmxlbmd0aCkKKyAgICAgICAg
dGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQgPSB0ZXh0RWxlbWVudDsKKworICAgIHRleHRFbGVtZW50
LmlubmVySFRNTCA9IHRleHRJdGVtOworICAgIAorICAgIHRoaXMuX3RleHRFbGVtZW50cy5wdXNo
KHRleHRFbGVtZW50KTsKKyAgICByZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsKK30K
KworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9wb3BUZXh0RWxlbWVudCA9IGZ1bmN0aW9u
KCkgeworICAgIHZhciB0ZXh0SXRlbUZsYWdzID0ge307ICAgIAorICAgIHZhciB0ZXh0SXRlbSA9
IHRoaXMuX3ByZXZpb3VzVGV4dEl0ZW0odGV4dEl0ZW1GbGFncyk7CisgICAgZm9yICggOyB0ZXh0
SXRlbUZsYWdzLmlzQ2xvc2luZzsgdGV4dEl0ZW0gPSB0aGlzLl9wcmV2aW91c1RleHRJdGVtKHRl
eHRJdGVtRmxhZ3MpKQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudCA9IHRoaXMuX3Rl
eHRFbGVtZW50UGFyZW50Lmxhc3RDaGlsZDsKKworICAgIGlmICh0ZXh0SXRlbUZsYWdzLmlzT3Bl
bmluZykKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQgPSB0aGlzLl90ZXh0RWxlbWVu
dFBhcmVudC5wYXJlbnROb2RlOworCisgICAgdmFyIHRleHRFbGVtZW50ID0gdGhpcy5fdGV4dEVs
ZW1lbnRzW3RoaXMuX3RleHRFbGVtZW50cy5sZW5ndGggLSAxXTsKKyAgICAKKyAgICBpZiAodGV4
dEVsZW1lbnQgJiYgdGV4dEVsZW1lbnQucGFyZW50Tm9kZSAmJiB0ZXh0RWxlbWVudC5wYXJlbnRO
b2RlID09IHRoaXMuX3RleHRFbGVtZW50UGFyZW50KQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVu
dFBhcmVudC5yZW1vdmVDaGlsZCh0ZXh0RWxlbWVudCk7CisKKyAgICB0aGlzLl90ZXh0RWxlbWVu
dHMucG9wKCk7CisgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7Cit9CisKK0xh
eWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fY29sb3JUZXh0SXRlbSA9IGZ1bmN0aW9uKGNvbG9y
KSB7CisgICAgdmFyIHRleHRFbGVtZW50SW5kZXggPSBMYXllcmluZ1RleHRTdGFnZS5jb2xvcklu
ZGV4VG9UZXh0RWxlbWVudEluZGV4KHRoaXMuX2NvbG9ySW5kZXgpOworICAgIGZvciAoIDsgdGV4
dEVsZW1lbnRJbmRleCA8IHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7IHRleHRFbGVtZW50SW5k
ZXggKz0gTGF5ZXJpbmdUZXh0U3RhZ2UuaW5zZXJ0YWJsZVRleHRJdGVtcykKKyAgICAgICAgdGhp
cy5fdGV4dEVsZW1lbnRzW3RleHRFbGVtZW50SW5kZXhdLnN0eWxlLmJhY2tncm91bmRDb2xvciA9
IGNvbG9yOworfQorCitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0
aW9uKHRpbWVEZWx0YSkgeworICAgIHRoaXMuX2NvbG9yVGV4dEl0ZW0oInRyYW5zcGFyZW50Iik7
CisgICAgdGhpcy5fY29sb3JJbmRleCA9ICh0aGlzLl9jb2xvckluZGV4ICsgMSkgJSBMYXllcmlu
Z1RleHRTdGFnZS5jb2xvcmFibGVUZXh0SXRlbXM7CisgICAgdGhpcy5fY29sb3JUZXh0SXRlbSgi
WWVsbG93R3JlZW4iKTsKKyAgICAKKyAgICB2YXIgYmxhY2tUZXh0RWxlbWVudHMgPSBNYXRoLm1p
bih0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoLCBMYXllcmluZ1RleHRTdGFnZS5pbnNlcnRhYmxl
VGV4dEl0ZW1zKTsKKyAgICB2YXIgaSA9IDA7CisgICAgZm9yICggOyBpIDwgdGhpcy5fdGV4dEVs
ZW1lbnRzLmxlbmd0aCAtIGJsYWNrVGV4dEVsZW1lbnRzOyArK2kpCisgICAgICAgIHRoaXMuX3Rl
eHRFbGVtZW50c1tpXS5zdHlsZS5jb2xvciA9ICh0aGlzLl9hbmltYXRlQ291bnRzICYgMSkgPyAi
TGlnaHRZZWxsb3ciIDogIndoaXRlIjsKKworICAgIGZvciAoIDsgaSA8IHRoaXMuX3RleHRFbGVt
ZW50cy5sZW5ndGg7ICsraSkKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRzW2ldLnN0eWxlLmNv
bG9yID0gImJsYWNrIjsKKyAgICAgICAgCisgICAgKyt0aGlzLl9hbmltYXRlQ291bnRzOworfQor
CitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KSB7Cisg
ICAgY291bnQgPSBjb3VudCA+IDAgPyBNYXRoLmZsb29yKGNvdW50KSA6IE1hdGguY2VpbChjb3Vu
dCk7CisKKyAgICBpZiAoY291bnQgPT0gMCkKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVt
ZW50cy5sZW5ndGg7CisKKyAgICBpZiAoY291bnQgPiAwKSB7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX3B1c2hUZXh0RWxlbWVudCgp
OworICAgICAgICByZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsKKyAgICB9CisgICAg
ICAgIAorICAgIGNvdW50ID0gTWF0aC5taW4oLWNvdW50LCB0aGlzLl90ZXh0RWxlbWVudHMubGVu
Z3RoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIHRoaXMu
X3BvcFRleHRFbGVtZW50KCk7CisKKyAgICByZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0
aDsKK30KKworZnVuY3Rpb24gTGF5ZXJpbmdUZXh0QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICBCZW5jaG1hcmsuY2FsbCh0aGlz
LCBvcHRpb25zKTsKKyAgICAKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJzdGFnZSIpOworICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsIGRvY3VtZW50
LmJvZHkub2Zmc2V0V2lkdGgpOworICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCBk
b2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCk7CisgICAgCisgICAgdGhpcy5fc3RhZ2UgPSB0aGlz
LmNyZWF0ZVN0YWdlKGVsZW1lbnQpOworICAgIHRoaXMuX2FuaW1hdG9yID0gdGhpcy5jcmVhdGVB
bmltYXRvcigpOworICAgIHRoaXMuX3N1aXRlID0gc3VpdGU7CisgICAgdGhpcy5fdGVzdCA9IHRl
c3Q7CisgICAgdGhpcy5fcmVjb3JkVGFibGUgPSByZWNvcmRUYWJsZTsKKyAgICB0aGlzLl9wcm9n
cmVzc0JhciA9IHByb2dyZXNzQmFyOworfQorCitMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZShCZW5jaG1hcmsucHJvdG90eXBlKTsKK0xheWVyaW5nVGV4dEJl
bmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMYXllcmluZ1RleHRCZW5jaG1hcms7CisK
K0xheWVyaW5nVGV4dEJlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihl
bGVtZW50KSB7CisgICAgcmV0dXJuIG5ldyBMYXllcmluZ1RleHRTdGFnZShlbGVtZW50LCB0aGlz
Ll9vcHRpb25zKTsKK30KKworTGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVB
bmltYXRvciA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcgTGF5ZXJpbmdUZXh0QW5pbWF0
b3IodGhpcyk7Cit9CisKK0xheWVyaW5nVGV4dEJlbmNobWFyay5wcm90b3R5cGUudHVuZSA9IGZ1
bmN0aW9uKGNvdW50KSB7CisgICAgcmV0dXJuIHRoaXMuX3N0YWdlLnR1bmUoY291bnQpOworfQor
CitMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24oKSB7Cisg
ICAgcmV0dXJuIHRoaXMuX3N0YWdlLmNsZWFyKCk7Cit9CisKK0xheWVyaW5nVGV4dEJlbmNobWFy
ay5wcm90b3R5cGUuc2hvd1Jlc3VsdHMgPSBmdW5jdGlvbihtZXNzYWdlLCBwcm9ncmVzcykgewor
ICAgIGlmICghdGhpcy5fcmVjb3JkVGFibGUgfHwgIXRoaXMuX3Byb2dyZXNzQmFyIHx8ICF0aGlz
Ll9zdWl0ZSB8fCAhdGhpcy5fdGVzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgdGhpcy5fcmVj
b3JkVGFibGUuc2hvd1JlY29yZCh0aGlzLl9zdWl0ZSwgdGhpcy5fdGVzdCwgdGhpcy5fc2FtcGxl
ciwgbWVzc2FnZSk7CisgICAgdGhpcy5fcHJvZ3Jlc3NCYXIuc2V0UG9zKHByb2dyZXNzKTsKK30K
Kword2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwg
b3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgd2luZG93LmJlbmNobWFy
ayA9IG5ldyBMYXllcmluZ1RleHRCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29y
ZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5
OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5n
CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15
YW5nLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL3lpbi15YW5nLnBuZwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcucG5nCSh3b3JraW5nIGNvcHkpCgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVz
b3VyY2VzL3lpbi15YW5nLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0w
LDAgKzEgIyMKK2ltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CgppVkJP
UncwS0dnb0FBQUFOU1VoRVVnQUFBR1FBQUFCa0NBWUFBQUJ3NHBWVUFBQUFCR2RCVFVFQUFMR1BD
L3hoQlFBQUFDQmpTRkpOCkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFG
M0NjdWxFOEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1kKQUFBQ0JHbFVXSFJZVFV3NlkyOXRM
bUZrYjJKbExuaHRjQUFBQUFBQVBIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdQpj
enB0WlhSaEx5SWdlRHA0YlhCMGF6MGlXRTFRSUVOdmNtVWdOUzQwTGpBaVBnb2dJQ0E4Y21SbU9s
SkVSaUI0Yld4dWN6cHlaR1k5CkltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1q
SXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBnb2dJQ0FnSUNBOGNtUm0KT2tSbGMyTnlhWEIwYVc5dUlI
SmtaanBoWW05MWREMGlJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenBsZUdsbVBTSm9kSFJ3T2k4
dgpibk11WVdSdlltVXVZMjl0TDJWNGFXWXZNUzR3THlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5N
NmRHbG1aajBpYUhSMGNEb3ZMMjV6CkxtRmtiMkpsTG1OdmJTOTBhV1ptTHpFdU1DOGlQZ29nSUNB
Z0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01URXcKUEM5bGVHbG1PbEJwZUdW
c1dVUnBiV1Z1YzJsdmJqNEtJQ0FnSUNBZ0lDQWdQR1Y0YVdZNlVHbDRaV3hZUkdsdFpXNXphVzl1
UGpFdwpOVHd2WlhocFpqcFFhWGhsYkZoRWFXMWxibk5wYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1pt
T2s5eWFXVnVkR0YwYVc5dVBqRThMM1JwClptWTZUM0pwWlc1MFlYUnBiMjQrQ2lBZ0lDQWdJRHd2
Y21SbU9rUmxjMk55YVhCMGFXOXVQZ29nSUNBOEwzSmtaanBTUkVZK0Nqd3YKZURwNGJYQnRaWFJo
UGdvVW5BMitBQUFOV0VsRVFWUjRBZTFkZld3VTFSWS91NlZDVzBxcmlDUWtVQ0ZSUUFKSUNBaFJv
Y1RFWWcwRQpWRVQ4Q3hBU0VTSXh3aDhhQlRIQnFEVUdBKzg5RFdENHh3OVFpMEZqU0VTdGlaRldx
UkhDcTZEUUJKTlhxbnpJUjRyWVVzNDd2ek1NCkhZYmR6bTczN256czlpU3pNN3N6ZXovT2IrNDk1
NTU3N3preENqa3g4M2dwNGh3NXB0S3BVOFBvMkxGQjFOSlNRaWRPRk5LNWN3VjAKNFFKUmUzdE1x
M0hERFV6RnhVUURCblRTb0VFZE5HUklHMVZVbktDQkEzK1grM3ZsK0RRV2krM1haMFA2WVZVa1JJ
VVRBR1pLY1piVApvVU1UcWI3K0ZtcHNMS0NmZnliYUwzeHNieWRpdHM2cGxEa2VKNHBKRlFzTGlX
NjdqZWl1dTRqdXZydVRwa3o1azBhTjJpZEovRnNBCjJwMUtVbm4xaklDd2xOdmE5dlAyN2UyOGFC
SHpzR0hNdzRjelAvZ2c4NzMzTWhjWEF3WXpSMGtKYy8vK3pBTUhNcytieDVvbjhwWXkKNUJYVDNa
VVZCb3lSWXc5Lzhrazd6NS9QM0tjUGMzVTE4NlpOekY5OXhieDRzUmtBdklBc0syT094NWtmZUlD
NXRyWmR5eVJsYzVjMwpaNzlMaGVmdzhlTkhlZDI2eTlvU0tpdVozM21IK2ZScHVTVlVVOE5jVU9B
UEdHNnd5c3V0bG9PeW9ZeFMxbHdHWWpZZk9mSS9YckdDCk9SWmpmdW9wNXA5K1VnejBvN1dWZWRh
c1lJQndBMU5VWkpWanlSTFdNalBQemhsZ2hObEQrZVRKSm43bUdlYStmWm1mZjU0WnpIZFMKUXdQ
emlCSGhBTU1KRGxvcURydzhxSVBVSmRMQVNBVzI4SVlOblR4Z0FQUEtsZGNEQVZDKytZYTV0RFI4
WURpQndZdlVyeDlMWFM2aApUcEVEUlFvOWcrdnJ6NnFHQkVIdDdKcms1bFZDeXdnN0dFNWdvQUNN
SGN0YU42bGpKSUFSWm0vZzllc3ZxMm9KWVoyTTBHMkZzWnR5CkFwRHN1ckNRK1pWWExxT3VvUVZG
Q2xjaW1zbC9WVENqVlRRM0o0UEMrajBzQWp3WjA3MStSMnVaTm8yMXpsTDNVQUVqSEo3QVgzL2QK
cG1yczJyWGRBNEc3VUcyOUtoeVYreGhnb3U3Q2cxQ0FJZ1dwNG5mZjdWQU5hdnQyc0x0N1Fzc0ph
cHlSTFpCUkgvQkFlQkVvS0ZLQQpoZno2NjUxcTVvQ0FUb1g4R29Gbmkvbkowb1U1cHFhbUV6d0pC
QlRKZURXLzlOSmx2dk5PYjNsaEEzWHdZTzUwVlltQWdWekJLRjk0CjR5c29lQXNVak1tVEU0OHRi
QURjWjR6U0UxVWtsMzdyQXNXZmxpSThydEp1Q2kzRFBlSjJBK0Q4ZmtuR1ZGRWFjMlR5a2dBVXEv
dksKcmt3Ui9rNVE0UVhUdUpkYTZ3UUQxenQyNUg3cmNJSUltYkp0R3dSOWRyUXZTYmhFMVR1WUVW
SVY0QURDcGx3VjVrNFEzTmZRdml5VgoyUHc0aFZ0YW1uU2NrWXBxYTRQZ1BFZDFWTzVtY3JyZk1V
NlJBYk5SSVM5ODNhQWo4RlFHZlU0UTdHdkltblFya3Nyemp6L08vTzIzCnpCY3ZXZ2V1OFZzcS8v
WHpHWXpvVFpsWkpLRVphcHVDT2FTbkJJdXVhUWE4OFVieTB1Q2U2Znd5U1E5QzNySjlaVzZRVk1z
bUJGUzYKUXR6SnJtM2J6RElJcmNDTHd0WlNZSkJzYURpYlVkY2xkZDZpSnZUdXJMWmVqTUY5MDdZ
cmRFMWVoR2N5ZWF1ejhkOXg0MURxbnMybgp5QitINnVSU0psMlZ6YlIxNjh3eUJ6TERpL0JNTnBp
YVNacm91akJoMTVPWlI1Mnl4RXhmc3NrbEw0WTQ3L2NDMHZWeVlPYngxS21tClpGMlhyQ1M3bm9T
WHMybjkrdEcwYUJIUkJBUGpHcXdtTkVrTkRkNnBwZktNZHlybW53QTBMNzQ0V25tY2F1cTYwZ0lE
d0hSTUk4NFcKNGI3dUZlcGRMUVJkSGdhTXNnSW5KVHlFbDNOMHFRNVdoNWlpZkZkNzNYSUhnR0NK
VVNycnZtUlUyYXpycGt5MURtU2I3d05ETnlEMgo5OWJXbzkyMkVtSGRHTFhuWXgyU2FjcFgwNG5O
ZlBjWmkvRmVmaGx6SjhtWHJjck5QV3F2TXFGWnVRSE5SK09pR3dUM2Q5aTVoT2ZPClZuS3RsbFZi
TzQxR2pEQ2pXVGx6d2ZWTTdETG9wV3M0ME5sSnRIUG5OT2R2VndFUnBKYlNqaDJGdEdDQjg3NjU2
NGNlSWlvdE5aZGUKTHFSMDVnelJsaTFpVTBtd0ZVTDNaMkJMZ0wwS0hZM0pOT1hERks2N1cvTDZE
bzNyd29YOTl2dDF0WVhRNTUrUHB2dnZKN3J4UnZ1ZQorZk9UVDVwUE0rb3A5dTlQeXZzcjlWQkFw
Q0ZVMCs3ZGhWUmRuZDNxalJHRll2SGk3T1lSdGRUUGlnSDQ0NC9SYlhVeFg3NThwdHJWCjRjT21P
Nm5yMDh2RmhYSmUzWkxYZlV2YitnenZrdFZsWVlObFFRSFI3YmRuLy8wYVBwem8xVmV6bjArVWN2
am5INkxEaHllaXlCWWcKMk8wNmRhcC9WVmkxaW1qV0xQL3lDM3RPMkNrTURJUmt0NlBzQThmVzQw
bVQvQzMyNXMya1l4NS9jdzFuYnVmUEUzMzNuYWhiUEI0dApaSzd1QVIrUC9mayswdURCUkI5ODBE
czJzVm4rd3crNG1ndEFwdEF2dnhEZGNZZDl5Ny96NU1sRXUzYjFnZ0tPTnpmamMwcGMzVlZnCkNJ
ODNOZ2lxckNUYUkrWWNtR3p5bVRvNmlFNmZIaFpYM3lFVkZjR3lBaTNsKysvelc5RDM2MGZBSXE2
T1hJWU1DUllRNUk0V2l1NnIKcG9aVUJRKytSUDZYUUp6cXhOV3J6aTJxY2ZsZmdFUTVRaVgrN2Jm
OEc5RkRiSnc4V1JoWEYwZGxaWWxZRTl4dkdEeHUzVXAwOENEUgppaFg1SWZRaFE4NmVMWWlydjZr
Uzg0dXpqYUFKMjlmR2pVUi8vVVV5TldDMW1sd1YvcGN1RWJEb284Ni80RThxekFTenpyeDUxb0Z5
Ci92RUhxYXArN0JoSmw2c1ZvYlZydzF3RDc3S2h5eEpIYkgyOG53emhFMUFBM0dyNm1qWFhGeFM2
ZlYwZGlTV2JxTGFXQ0pVT09jVUoKYnZIUWYrVWlvWHVEdVIvZEhibzlkSC9vQnNOSTZBVUVpN2o2
S0d4ckMyTVJ6WllKMDhkUUVLQW9RR0dBNGhBbTZpT2RsYXp3akt2RApTTXp0NWhPaDFVQzFob29k
Rm9JY0x5dnJqS3YzVGdqR2ZDTjBFUmlFWWpEcWxrZEI4QUxsdWZubWpyaTZVbTFwQ2FJSTRjZ1Q4
ekl3CjI4QjhFelNKVzl1NCtyV0YrcGpQQk9FUEEyZGxaWEJjdUhpUmdFVmNuUXlqdVVDM3oyZUMw
RWYzRlZSTGdReTU2YWJmNDRKQlBZMGUKVGRUVWxNOXdXSFVIS0pnMEMwS21XQmFJdlFCa0oyRzJF
SjZqZThtYWw4SDBzdDlrdGN4UDQrb0xmZUxFVHZyeFI3K0xFTjc4SU9qOQpWSW5STXUrNXB4Tllv
SVhJeEtINFF0KzdON3dNQ3FKa1dLcmsxK0FSKzZ1QWdaQUZ5S2hSaldybitmWFhJS29lemp5aDZM
endnajlsCjY5dVhhT1JJQkFlNEFnalJ2K2krKzRpKy9OS2ZBa1FsRjR6by9iQjlnZmNTcVFFZjJr
STBaTVBNbVIzMHhSZjRyWmVjSE1qMkFuRk0KRGo3eVNJY2ROaU5tNTQzdENHSkxHVWQvU2xlV3pS
WHdkb1pST1dNUkcvaVJMZE05dXNiejV3L0Vpb3RGMWUzcXNtQnAzRVFQUDB6MAowVWRSWVpVLzVZ
UUdoTTFHMmFLcUtxS2lvazEyOHBaUWwyL1NaRGJUL1BrZE9qQ3k3L2FlTFE1a2F6dGVlVG5Sa2lY
b3JoSVBmR1J0CmFmWTJmVjYvTVNFNnZ4dzlldTNHZjYvdEJhbmU5OXowU2JTU25uaUNaZDliTk5y
RysrOFRUWjlPaEVWbU9IQ04zMHhUTmhaV0ZCVUoKdDFmS0FFUjQzaDFseFhGQU50ckNzODhtZjJ0
eHp6U2wrdGFuODV5WDR3QUFKZlV3NzFyRE5IUGVleTg1R0RaRDhJeEpzdE0xY1U3SAp0WWFDZ3RC
RU11RnV6UG1NU2NZZ0xmZ3c5R0tNNWVmUVhNNWUrYVZ6UHgzbk0xZGF5V3dOVVlTb09HRWtlQ3J5
WWdDZU1VbGUrYVY2CkgrVmF2aHdsU3krdWxUb3dnd2UwYkxqWnlKUlJVUWFrSnc3TTBFcGtKckdL
eExHOGJ3WTJ6VFRGRDBUczlLSlVudkZLdy9SOW1FbGUKZSsyeXpBekthTEFISkMreUdTZVltYllJ
OS8rakt0UXpjWUpwNDJmRVRheWJvU2ErUjAzdE5lRW1GcUFJNzJhb0UyQVQza2xOQU9GTQpBeTBG
MmhSa0NnNWNtMVozN2Z4U0ZkcUpualBwU1BrS0tKbTVHcmNyRmRWenBxWVRTd1UzRzlGTm81RWhp
bk5QbmZGSEZReVVlK3RXCmJ6VTdVY3ZBYjdCWHRiYWFkY1ovcFpWWTRTb3dZS3l2anpKNzB5ODd3
bnduWTNoM3YyTUFXRmVIQ0c0bDRLRnhrb1N0Z0M2MzNzcU0KWnB3UGRPNWN6NkxLWlR1Z2k0MnVZ
RkNsNFh6U0RYa1VWZkEyYmt5L2RVQ0kreEh5eUFIS1F2VmVPbWxTZU8xZHBsNkFNV1BTQXdSZwpX
SkhhRnRyODh1VXM5VjJ0R2FPbDVHcjNsYTR3N3dKanRTOGd1RE1SVUJacTA0Uk15VFZCajZoeUNI
N1duZEIyM2dzNnNLUU5qb0JTCnBkSElvSDE5K0tHcGppTDRkRmF0U2gwTWFGTldSTGFlMmFoc1pw
bzZDL2VzNE1RVkZjeHIxZ1RQekV4THNHdFg2bUJnbkdHcHRoTk0KOGROSU9zS0RFbzNraHJEY01M
TkVWYTZnM0lNSGV3TUNlWUVSK1BIalRhaTdFU1ptSXhFcDNBYTFmWldVTUdjYUtpblROejNkLzJQ
TQpnWEN5VHRtUTZEb0tBZTZkNEFvZlppQUFscjVCYUMyTmplbXl4di9uQVVabFpmZGdvRlhBaEk2
NlNSMmRkWTdFdFJSNmk4WmNRa1dlCmZqcThZeFowVTkyMURGaVNNZFAzMWx1ZHFGTWttSitza0ZL
Qm9ZaTVwSFAwME1TZWV5NWN3RUNBSjVNWjBKNXdZQTRjZGVoSk1LOWsKakFuNmQ2bk1iQTJsQlAv
dnNSanpzbVhCZG1VWVp5UlRiUkhiQTdJRFVYQ3dBaWZkQlFsQk16dWQvS1Z5YzhRYzNhekJUS0Ft
VDUvTwovUGJiZUFQbGxrK0VFWGlpUVY5NXVXVXVSNkFWbERHVmtFVHBWRDdNejBwbHhVZ2thNGxy
YTl2NXNjZVlvYmxBQVlBeDc5QWg4OGhBCmFDTnR0MjBLOGczZEV2SkdXVkNtN3FMZWhKbXBwc29t
REZpS2tBMFNjNzJkRVlrSExRZm1tQVVMbU45OEV5R3dtYytja2NmU0pBaHIKdEFiTVo0RHA2SVpL
UzVsaDVzQ0E3dEZIRWVlOVhmTk9GTVBEVkFYVFNPZnFocDAwL3BQVlI0WGwxWkxCTXZXRkR2ZmIr
L1lWMElFRAoxajU2ZUYyREIxVnNNeHM3bG1qb1VHeTJ0eFphMTlVUi9mMDNYSzJTT1BZa09uS0Vk
UE1SUENSZ1V6NFdUR1Byc2V4MjFRMldJMGMyClNqNy9rYTBBb2RvMkZqcEEzR2dMUU5oWk5GZU9L
ZkJycTI1dHhYc25IRWJDUjZHNktCUlBiUG8vMGVMVTNaUjQxWUVqRi9Yakl1NHEKNENGQjd0Zkxz
Vk1BQ1BXRy9QOERSbnEvYU02TjhxMEFBQUFBU1VWT1JLNUNZSUk9Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261858</attachid>
            <date>2015-09-23 18:35:21 -0700</date>
            <delta_ts>2015-09-30 09:51:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149053-20150923183503.patch</filename>
            <type>text/plain</type>
            <size>154992</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAxOTIpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3OCBAQAorMjAxNS0wOS0yMyAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdv
cmsgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQuIE1hbnkgcGFydHMgb2YgdGhlIGNvZGUgd2Fz
IGNvcGllZAorICAgICAgICBmcm9tIHNwZWVkb21ldGVyIGJlbmNobWFyay4gVGhlIGJlbmNobWFy
ayBydW5uZXIncyBuYW1lIGlzICJhbmltb21ldGVyLmh0bWwiCisgICAgICAgIGJ1dCB0aGlzIGlz
IG5vdCBmaW5hbCB5ZXQgYW5kIG1vc3QgcHJvYmFibHkgaXMgZ29pbmcgdG8gY2hhbmdlLiBUaGUg
Y3NzIAorICAgICAgICBhbmQgdGhlIHBhZ2UgbGF5b3V0cyB3aWxsIGJlIHJldmlzZWQgZm9yIGJl
dHRlciBsb29raW5nLgorCisgICAgICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgYmVuY2htYXJrIGlz
IHRvIG1lYXN1cmUgdGhlIGFuaW1hdGlvbiBwZXJmb3JtYW5jZSBvZgorICAgICAgICBhIHdlYiBi
cm93c2VyIGluIGFjY3VyYXRlIHdheSBidXQgYXQgZmluZSBncmFudWxhciBsZXZlbC4gVGhlIGRl
c2lnbiBpcworICAgICAgICB0byBoYXZlIHNlcGFyYXRlIGFuaW1hdGlvbnM7IGVhY2ggc3RyZXNz
IHRlc3RzIG9uZSBvZiB0aGUgZ3JhcGhpY3MgcHJpbWl0aXZlcworICAgICAgICBzbyB3ZSBjYW4g
aWRlbnRpZnkgYnVncyBhIGxvdCBlYXNpZXIuCisKKyAgICAgICAgSW5zdGVhZCBvZiBtZWFzdXJp
bmcgdGhlIEZQUyBvZiB0aGUgYW5pbWF0aW9uLCB0aGUgImFuaW1vbWV0ZXIiIGJlbmNobWFyawor
ICAgICAgICB0cmllcyB0byBtZWFzdXJlIHRoZSB0ZXN0IGNvbXBsZXhpdHkgd2hlbiByZW5kZXJp
bmcgYXQgYSBzZXQtcG9pbnQgRlBTIHdoaWNoCisgICAgICAgIHNob3VsZCBiZSBsZXNzIHRoYW4g
NjAgRlBTLiBUaGUgImFuaW1vbWV0ZXIiIHN0YXlzIGF0IHRoZSBzZXQtcG9pbnQgRlBTCisgICAg
ICAgIGJ5IHVzaW5nIGEgY2xvc2VkLWxvb3AgY29udHJvbCBzeXN0ZW0gUElEIGZ1bmN0aW9uLiBU
aGUgZ2FpbiBvZiB0aGUgc3lzdGVtCisgICAgICAgIGlzIHBhc3NlZCBhcyBhIHBhcmFtZXRlciB3
aGVuIHJ1bm5pbmcgdGhlIHRlc3QuIE1lYXN1cmluZyB0aGUgRlBTIGZhaXRoZnVsbHkKKyAgICAg
ICAgcmVzdWx0cyBpbiB2ZXJ5IGZsdWN0dWF0aW5nIHZhbHVlcy4gU28gYSBLYWxtYW4gZmlsdGVy
IGlzIHVzZWQgdG8gZ2l2ZSBhCisgICAgICAgIGJldHRlciBlc3RpbWF0ZSBmb3IgdGhlIGN1cnJl
bnQgRlBTLgorCisgICAgICAgIFRoZSBhbmltYXRpb24gb2YgdGhlIHRlc3RzIGlzIGRvbmUgbWFu
dWFsbHkuIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGlzCisgICAgICAgIGNhbGxlZCB3aXRoIGEg
Y2FsbGJhY2suIEluc2lkZSB0aGlzIGNhbGxiYWNrLCB0aGUgdGVzdCBpcyBhbmltYXRpbmcgYnkK
KyAgICAgICAgY2hhbmdpbmcgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZWxlbWVudHMgaW5zaWRlIHRo
ZSBwYWdlLiBUaGUgdGVzdCBjb21wbGV4aXR5CisgICAgICAgIG1heSBjaGFuZ2UgYWxzbyBpZiB0
aGUgY3VycmVudCBGUFMgaXMgbm90IGVxdWFsIHRvIHRoZSBkZXNpcmVkIEZQUy4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFuaW1vbWV0ZXI6IEFk
ZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgCisg
ICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzOiBBZGRlZC4KKyAgICAg
ICAgKEFycmF5LnByb3RvdHlwZS5zd2FwKToKKyAgICAgICAgKEhlYXApOiBNaW4vTWF4IEhlYXAg
b2JqZWN0CisgICAgICAgIChIZWFwLnByb3RvdHlwZS5fcGFyZW50SW5kZXgpOiBHaXZlbiB0aGUg
Y2hpbGQgbm9kZSBpbmRleCwgaXQgcmV0dXJucyB0aGUgcGFyZW50IGluZGV4LgorICAgICAgICAo
SGVhcC5wcm90b3R5cGUuX2xlZnRJbmRleCk6IEdpdmVuIHRoZSBwYXJlbnQgbm9kZSBpbmRleCwg
aXQgcmV0dXJucyB0aGUgbGVmdCBub2RlIGluZGV4LgorICAgICAgICAoSGVhcC5wcm90b3R5cGUu
X3JpZ2h0SW5kZXgpOiBHaXZlbiB0aGUgcGFyZW50IG5vZGUgaW5kZXgsIGl0IHJldHVybnMgdGhl
IHJpZ2h0IG5vZGUgaW5kZXguCisgICAgICAgIChIZWFwLnByb3RvdHlwZS5fY2hpbGRJbmRleCk6
IEdpdmVuIHRoZSBwYXJlbnQgbm9kZSBpbmRleCwgaXQgcmV0dXJucyB0aGUgY2hpbGQgaW5kZXgg
dGhhdCBtYXkgdmlvbGF0ZSB0aGUgaGVhcCBwcm9wZXJ0eS4KKyAgICAgICAgKEhlYXAucHJvdG90
eXBlLmluaXQpOiBJbml0aWFsaXplcyB0aGUgaGVhcCBzdGF0ZS4KKyAgICAgICAgKEhlYXAucHJv
dG90eXBlLnRvcCk6IFJldHVybnMgdGhlIHZhbHVlIHN0b3JlZCBhdCB0aGUgdG9wIG9mIHRoZSBo
ZWFwLgorICAgICAgICAoSGVhcC5wcm90b3R5cGUucHVzaCk6IFB1c2hlcyBhIG5ldyBub2RlIGF0
IHRoZSB0b3Agb2YgdGhlIGhlYXAuCisgICAgICAgIChIZWFwLnByb3RvdHlwZS5wb3ApOiBFeHRy
YWN0cyB0aGUgdG9wIG5vZGUgb2YgdGhlIGhlYXAuCisgICAgICAgIChIZWFwLnByb3RvdHlwZS5f
YnViYmxlKTogRml4ZXMgdGhlIGhlYXAgcHJvcGVydHkgYnkgbW92aW5nIHVwd2FyZC4KKyAgICAg
ICAgKEhlYXAucHJvdG90eXBlLl9zaW5rKTogRml4ZXMgdGhlIGhlYXAgcHJvcGVydHkgYnkgbW92
aW5nIGRvd253YXJkLgorICAgICAgICAoSGVhcC5wcm90b3R5cGUuc3RyKTogUHJpbnRzIHRoZSBu
b2RlcyBvZiB0aGUgaGVhcCB0byBhIHN0cmluZy4KKyAgICAgICAgKEhlYXAucHJvdG90eXBlLnZh
bHVlcyk6IFJldHVybnMgdGhlIGxhc3QgInNpemUiIGhlYXAgZWxlbWVudHMgdmFsdWVzLgorICAg
ICAgICAoQWxnb3JpdGhtLmNyZWF0ZU1pbkhlYXApOiBDcmVhdGVzIGEgc2l6ZS1ib3VuZGVkIG1p
bi1oZWFwIG9iamVjdC4KKyAgICAgICAgKEFsZ29yaXRobS5jcmVhdGVNYXhIZWFwKTogQ3JlYXRl
cyBhIHNpemUtYm91bmRlZCBtYXgtaGVhcCBvYmplY3QuCisgICAgICAgIAorICAgICAgICAqIEFu
aW1vbWV0ZXIvcmVzb3VyY2VzL21haW4uanM6IEFkZGVkLgorICAgICAgICAoUG9pbnQpOiBBIHBv
aW50IG9iamVjdAorICAgICAgICAoSW5zZXRzKTogQW4gaW5zZXRzIG9iamVjdAorICAgICAgICAo
U2ltcGxlUHJvbWlzZSk6IEFuIGltcGxlbWVudGF0aW9uIGZvciBhIHByb21pc2Ugb2JqZWN0IChj
b3BpZWQgZm9ybSBzcGVlZG9tZXRlcikuCisgICAgICAgIChNYXRyaXgpOiBBIG1hdHJpeCBvYmpl
Y3QuCisgICAgICAgIChWZWN0b3IzKTogQSB2ZWN0b3Igb2Ygc2l6ZSAzIG9iamVjdC4KKyAgICAg
ICAgKE1hdHJpeDMpOiBBIG1hdHJpeCBvZiBzaXplIDN4MyBvYmplY3QuCisgICAgICAgIChPcHRp
b25zKTogQmVuY2htYXJrIHJ1bm5pbmcgb3B0aW9ucyBhcyB0aGV5IGFyZSBzZXQgYnkgdGhlIHVz
ZXIuCisgICAgICAgICAgICAgICAgCisgICAgICAgIChQcm9ncmVzc0Jhcik6IE1hbmFnZXMgYSBw
cm9ncmVzcyBiYXIgZWxlbWVudC4gVGhlIHByb2dyZXNzIGJhciBpcyBkaXZpZGVkIGludG8gZXF1
YWwgbGVuZ3RoIHJhbmdlcy4KKyAgICAgICAgKFByb2dyZXNzQmFyLnByb3RvdHlwZS5fcHJvZ3Jl
c3NUb1BlcmNlbnQpOiBDb252ZXJ0cyB0aGUgcHJvZ3Jlc3MgaW50byBhIHBlcmNlbnRhZ2UuCisg
ICAgICAgIChQcm9ncmVzc0Jhci5wcm90b3R5cGUuaW5jUmFuZ2UpOiBNb3ZlcyB0byB0aGUgbmV4
dCByYW5nZSAoYSByYW5nZSBpcyB0aGUgcnVubmluZyB0aW1lIG9mIGEgc2luZ2xlIHRlc3QpLgor
ICAgICAgICAoUHJvZ3Jlc3NCYXIucHJvdG90eXBlLnNldFBvcyk6IERyYXdzIHRoZSBjdXJyZW50
IHByb2dyZXNzIGluIHRoZSBjdXJyZW50IHJhbmdlLgorICAgICAgICAKKyAgICAgICAgKFJlY29y
ZFRhYmxlKTogU2hvd3MgdGhlIHJlc3VsdHMgb2YgcnVubmluZyBhIGJlbmNobWFyayBpbiBhIHRh
YnVsYXIgZm9ybS4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5jbGVhcik6IENsZWFy
cyB0aGUgcmVzdWx0cyB0YWJsZS4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5fc2hv
d1RpdGxlcyk6IFNob3dzIHRoZSBoZWFkZXIgdGl0bGVzIGFuZCBhcHBlbmRzIHRoZSBzdWItdGl0
bGVzIHRvIGEgcXVldWUuCisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dIZWFk
ZXIpOiBTaG93cyB0aGUgdGFibGUgaGVhZGVyIHRpdGxlcy4KKyAgICAgICAgKFJlY29yZFRhYmxl
LnByb3RvdHlwZS5fc2hvd0VtcHR5KTogU2hvd3MgYW4gZW1wdHkgdGFibGUgY2VsbC4KKyAgICAg
ICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5fc2hvd1ZhbHVlKTogU2hvd3MgYSBudW1iZXIgdmFs
dWUgaW4gdGhlIHJlc3VsdHMgdGFibGUuCisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUu
X3Nob3dTYW1wbGVzKTogU2hvd3MgYSBidXR0b24gZm9yIHRoZSBzYW1wbGVkIGRhdGEgZ3JhcGgu
CisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dUZXN0KTogU2hvd3MgdGhlIHJl
c3VsdHMgb2YgYSBzaW5nbGUgdGVzdC4KKyAgICAgICAgKFJlY29yZFRhYmxlLnByb3RvdHlwZS5f
c2hvd1N1aXRlKTogU2hvd3MgdGhlIHJlc3VsdHMgb2YgYSBzaW5nbGUgc3VpdGUuCisgICAgICAg
IChSZWNvcmRUYWJsZS5wcm90b3R5cGUuc2hvd1JlY29yZCk6ICAgICAgICAKKyAgICAgICAgKFJl
Y29yZFRhYmxlLnByb3RvdHlwZS5zaG93SXRlcmF0aW9ucyk6IFNob3dzIHRoZSByZXN1bHRzIG9m
IGFsbCB0aGUgc3VpdGVzIG9mIHRoZSBpdGVyYXRpb25zLiAKKyAgICAgICAgCisgICAgICAgICog
QW5pbW9tZXRlci9yZXNvdXJjZXMvc3RhdGlzdGljcy5qczogQWRkZWQuICAgICAgICAKKyAgICAg
ICAgKFN0YXRpc3RpY3Muc2FtcGxlTWVhbik6IFJldHVybnMgdGhlIHNhbXBsZSBtZWFuIGZvciBh
IHNldCBvZiBkYXRhIHBvaW50cy4KKyAgICAgICAgKFN0YXRpc3RpY3Muc2FtcGxlU3RhbmRhcmRE
ZXZpYXRpb24pOiBSZXR1cm5zIHRoZSBzYW1wbGUgc3RhbmRhcmQgZGV2aWF0aW9uIGZvciBhIHNl
dCBvZiBkYXRhIHBvaW50cy4KKyAgICAgICAgKFN0YXRpc3RpY3MuZ2VvbWV0cmljTWVhbik6IFJl
dHVybnMgdGhlIGdlb21ldHJpYyBtZWFuIG9mIGEgc2V0IG9mIGRhdGEuCisgICAgICAgIChFeHBl
cmltZW50KTogUmVwcmVzZW50cyBhIHNhbXBsaW5nIGV4cGVyaW1lbnQuIAorICAgICAgICAoRXhw
ZXJpbWVudC5wcm90b3R5cGUuX2luaXQpOiBDYWxsZWQgd2hlbiB0aGUgb2JqZWN0IGlzIGNyZWF0
ZWQgYW5kIHdoZW4gc3RhcnRTYW1wbGluZygpIGlzIGNhbGxlZC4KKyAgICAgICAgKEV4cGVyaW1l
bnQucHJvdG90eXBlLnN0YXJ0U2FtcGxpbmcpOiBDYWxsZWQgYWZ0ZXIgd2FybXVwIHBlcmlvZC4g
UmVzdGFydHMgY29sbGVjdGluZyBzYW1wbGVkIGRhdGEgcG9pbnRzLgorICAgICAgICAoRXhwZXJp
bWVudC5wcm90b3R5cGUuc2FtcGxlKTogQWRkIGEgbmV3IGRhdGEgcG9pbnQuCisgICAgICAgIChF
eHBlcmltZW50LnByb3RvdHlwZS5tZWFuKTogUmV0dXJucyB0aGUgc2FtcGxlIG1lYW4gZm9yIHRo
ZSBjdXJyZW50IHNhbXBsZWQgZGF0YSBwb2ludHMuCisgICAgICAgIChFeHBlcmltZW50LnByb3Rv
dHlwZS5zdGFuZGFyZERldmlhdGlvbik6IFJldHVybnMgdGhlIHNhbXBsZSBzdGFuZGFyZCBkZXZp
YXRpb24gZm9yIHRoZSBjdXJyZW50IHNhbXBsZWQgZGF0YSBwb2ludHMuCisgICAgICAgIChFeHBl
cmltZW50LnByb3RvdHlwZS5wZXJjZW50YWdlKTogUmV0dXJucyB0aGUgcGVyY2VudGFnZSBvZiB0
aGUgc3RhbmRhcmQgZGV2aWF0aW9uIGRpdmlkZWQgdG8gdGhlIG1lYW4uCisgICAgICAgIChFeHBl
cmltZW50LnByb3RvdHlwZS5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSk6IENhbGN1bGF0ZXMgdGhl
IGNvbmZpZGVuY2UgZGVsdGEgZm9yIHRoZSBjdXJyZW50IHNhbXBsZWQgZGF0YSBnaXZlbiBhIGNv
bmZpZGVuY2UgbGV2ZWwuCisgICAgICAgIChFeHBlcmltZW50LnByb3RvdHlwZS5jb25jZXJuKTog
UmV0dXJucyB0aGUgYXZlcmFnZSBvZiB0aGUgd29yc3QgZ2l2ZW4gcGVyY2VudGFnZSBmcm9tIHRo
ZSBzYW1wbGVkIGRhdGEuCisgICAgICAgIChFeHBlcmltZW50LnByb3RvdHlwZS5zY29yZSk6IFJl
dHVybnMgYSBzY29yZSBmb3IgdGhlIHNhbXBsZWQgZGF0YS4gSXQgaXMgdGhlIGdlb21ldHJpYyBt
ZWFuIG9mIHNhbXBsZU1lYW4gYW5kIGNvbmNlcm4uCisgICAgICAgIChTYW1wbGVyKTogUmVwcmVz
ZW50cyBhIGNvbXBvdW5kIGV4cGVyaW1lbnQuIEl0IG1hbmFnZXMgc2FtcGxpbmcgbXVsdGlwbGUg
ZGF0YSBwb2ludHMgYXQgdGhlIHNhbWUgdGltZSBvZmZzZXQuCisgICAgICAgIChTYW1wbGVyLnBy
b3RvdHlwZS5zdGFydFNhbXBsaW5nKTogQ2FsbGVkIGFmdGVyIHdhcm1pbmcgdXAgcGVyaW9kLiBS
ZXN0YXJ0cyBjb2xsZWN0aW5nIHNhbXBsZWQgZGF0YSBwb2ludHMuCisgICAgICAgIChTYW1wbGVy
LnByb3RvdHlwZS5zYW1wbGUpOiBBZGQgYSBuZXcgZGF0YSB2ZWN0b3IgYXQgYSBnaXZlbiB0aW1l
IG9mZnNldC4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXI6IEFkZGVkLgor
ICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL2FuaW1vbWV0ZXIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgKiBBbmlt
b21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5jc3M6IEFkZGVkLgorICAgICAgICBU
aGUgYmVuY2htYXJrIHJ1bm5lciBwYWdlIGFuZCBjc3MuCisgICAgICAgIAorICAgICAgICAqIEFu
aW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmpzOiBBZGRlZC4KKyAgICAgICAg
KHdpbmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQud2lsbEFkZFRlc3RGcmFtZSk6IENhbGxlZCBh
ZnRlciB0aGUgdGVzdCA8aWZyYW1lPiBpcyBjcmVhdGVkLgorICAgICAgICAod2luZG93LmJlbmNo
bWFya1J1bm5lckNsaWVudC5kaWRSdW5UZXN0KTogQ2FsbGVkIGFmdGVyIHJ1bm5pbmcgYSB0ZXN0
IGlzIGZpbmlzaGVkLgorICAgICAgICAod2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudC53aWxs
U3RhcnRGaXJzdEl0ZXJhdGlvbik6IENhbGxlZCBhdCB0aGUgYmVnaW5uaW5nIGJlZm9yZSBydW5u
aW5nIGFueSB0ZXN0LgorICAgICAgICAod2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudC5kaWRS
dW5TdWl0ZXMpOiBDYWxsZWQgYWZ0ZXIgcnVubmluZyBhbGwgdGVzdHMgb2YgYSBzdWl0ZS4KKyAg
ICAgICAgKHdpbmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQuZGlkRmluaXNoTGFzdEl0ZXJhdGlv
bik6IENhbGxlZCBhZnRlciBydW5uaW5nIHRoZSBsYXN0IHRlc3QuCisgICAgICAgIAorICAgICAg
ICAod2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudC5icm93c2VyKToKKyAgICAgICAgKHNob3dT
ZWN0aW9uKTogU2hvd3MgYSBzZWN0aW9uIGluIHRoZSBhbmltb21ldGVyLmh0bWwgcGFnZS4KKyAg
ICAgICAgKHN0YXJ0VGVzdCk6IENhbGxlZCB3aGVuIHRoZSAiU3RhcnQgVGVzdCIgYnV0dG9uIGlz
IGNsaWNrZWQuCisgICAgICAgIChzaG93UmVzdWx0cyk6IENhbGxlZCBhZnRlciBmaW5pc2hpbmcg
YWxsIHRoZSB0ZXN0cy4KKyAgICAgICAgKHNob3dHcmFwaCk6IENhbGxlZCB3aGVuICJDbGljay4u
LiIgYnV0dG9uIGluIHRoZSAiU2FtcGxlcyIgY29sdW1uIG9mIHRoZSByZXN1bHRzIHRhYmxlIGlz
IGNsaWNrZWQKKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2Vz
L2JlbmNobWFyay1ydW5uZXIuanM6IEFkZGVkLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyU3Rh
dGUpOiBUcmFja3Mgb2YgdGhlIGN1cnJlbnQgcnVubmluZyA8c3VpdGUsIHRlc3Q+CisgICAgICAg
IChCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUuY3VycmVudFN1aXRlKTogcmV0dXJucyB0
aGUgY3VycmVudCBydW5uaW5nIHN1aXRlLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyU3RhdGUu
cHJvdG90eXBlLmN1cnJlbnRUZXN0KTogcmV0dXJucyB0aGUgY3VycmVudCBydW5uaW5nIHRlc3Qu
CisgICAgICAgIChCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUuaXNGaXJzdFRlc3QpOiBy
ZXR1cm5zIHRydWUgaWYgd2UgYXJlIHJ1bm5pbmcgdGhlIGZpcnN0IHRlc3QgaW4gdGhlIGN1cnJl
bnQgc3VpdGUuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUubmV4dCk6
IGFkdmFuY2VzIHRvIHRoZSBuZXh0IHRlc3QuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXJTdGF0
ZS5wcm90b3R5cGUucHJlcGFyZUN1cnJlbnRUZXN0KTogQ3JlYXRlcyBhIG5ldyA8aWZyYW1lPiBh
bmQgd2FpdHMgZm9yIGl0IHRvIGxvYWQgYSB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKEJlbmNo
bWFya1J1bm5lcik6IE1hbmFnZXMgcnVubmluZyB0aGUgdGVzdHMgYW5kIGNvbW11bmljYXRpbmcg
d2l0aCB0aGUgYmVuY2htYXJrUnVubmVyQ2xpZW50LgorICAgICAgICAoQmVuY2htYXJrUnVubmVy
LnByb3RvdHlwZS53YWl0Rm9yRWxlbWVudCk6IFdhaXRzIGZvciBhbiBlbGVtZW50IHRvIGJlIGNy
ZWF0ZWQuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9hcHBlbmRGcmFtZSk6
IENyZWF0ZXMgYSBuZXcgPGlmcmFtZT4gZWxlbWVudC4KKyAgICAgICAgKEJlbmNobWFya1J1bm5l
ci5wcm90b3R5cGUuX3JlbW92ZUZyYW1lKTogUmVtb3ZlZCB0aGUgY3VycmVudCA8aWZyYW1lPiBl
bGVtZW50LgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcnVuVGVzdEFuZFJl
Y29yZFJlc3VsdHMpOiBSdW5zIHRoZSBjdXJyZW50IHRlc3QgYW5kIHNhdmVzIGl0cyByZXN1bHRz
LgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5zdGVwKTogRWl0aGVyIHJ1bnMg
dGhlIGN1cnJlbnQgdGVzdCBpZiB0aGVyZSBpcyBvciBzdGFydCBhIG5ldyBpdGVyYXRpb24uCisg
ICAgICAgIChCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLnJ1bkFsbFN0ZXBzKTogTG9vcHMgdG8g
cnVuIGFsbCB0aGUgdGVzdHMgYW5kIG1vdmUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgorICAgICAg
ICAodGhpcy5fcnVuTmV4dEl0ZXJhdGlvbik6IFN0YXJ0cyBhIG5ldyBpdGVyYXRpb24gb3Igc2hv
dyB0aGUgcmVzdWx0cy4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUucnVuTXVs
dGlwbGVJdGVyYXRpb25zKTogTG9vcHMgdG8gcnVuIGFsbCB0aGUgaXRlcmF0aW9ucyBhbmQgc2hv
dyB0aGUgcmVzdWx0cworICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fZmluYWxp
emUpOiBTdGFydHMgYSBuZXcgaXRlcmF0aW9uLgorCisgICAgICAgICogQW5pbW9tZXRlci9ydW5u
ZXIvcmVzb3VyY2VzL2dyYXBoLmpzOiBBZGRlZC4KKyAgICAgICAgKGdyYXBoKTogRHJhd3MgYSBj
aGFydCBmb3IgYSB0ZXN0IHNhbXBsZWQgZGF0YS4gSXQgc2hvd3MgdHdvIHktYXhpc2VzOiBvbmUg
Zm9yIHRoZSBwYXJ0aWNsZXMgYW5kIHRoZSBzZWNvbmQgZm9yIEZQUy4KKyAgICAgICAgCisgICAg
ICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHN1aXRlRnJvbU5hbWUpOiBSZXR1cm5zIGEgc3VpdGUgZ2l2ZW4gaXRzIG5hbWUuCisgICAg
ICAgICh0ZXN0RnJvbU5hbWUpOiBSZXR1cm5zIGEgdGVzdCBnaXZlbiBpdHMgc3VpdGUgYW5kIG5h
bWUuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHM6IEFkZGVkLgorICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzOiBBZGRlZC4KKyAgICAgICAg
KiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1h
Z2VzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctaW1hZ2VzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5j
aW5nLXNoYXBlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMu
aHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgVGhlIGJvdW5jaW5nIHBhcnRpY2xlcyB0ZXN0
IHBhZ2VzLiBUaGUgc2FtZSB0ZXN0cyBhcmUgZG9uZSBhcyBIVE1MIGVsZW1lbnRzLAorICAgICAg
ICBTVkdFbGVtZW50cyBvciBkcmF3biBvbiBhIGNhbnZhcy4KKyAgICAgICAgCisgICAgICAgICog
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNh
bnZhcy1pbWFnZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZSk6IEEg
c3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc0lt
YWdlLnByb3RvdHlwZS5fZHJhdyk6IERyYXdzIGFuIGltYWdlIG9uIHRoZSBjb250ZXh0IG9mIGEg
Y2FudmFzLgorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6
IE1vdmVzIHRoZSBCb3VuY2luZ0NhbnZhc0ltYWdlIHRvIGEgbmV3IGxvY2F0aW9uLgorICAgICAg
ICAKKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UpOiBBIHN1YiBjbGFzcyBvZiBC
b3VuY2luZ1BhcnRpY2xlc1N0YWdlLgorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZXNTdGFn
ZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlwZSBC
b3VuY2luZ0NhbnZhc0ltYWdlLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1h
Z2VzQW5pbWF0b3IpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLgor
ICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZXNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6
IENsZWFycyB0aGUgY29udGV4dCBiZWZvcmUgcmVkcmF3aW5nIHRoZSBwYXJ0aWNsZXMuCisgICAg
ICAgIAorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmspOiBBIHN1YiBjbGFz
cyBvZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFz
SW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBv
ZiB0eXBlIEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UuCisgICAgICAgIChCb3VuY2luZ0NhbnZh
c0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBDcmVhdGVzIGFuIGFu
aW1hdG9yIG9mIHR5cGUgQm91bmNpbmdDYW52YXNJbWFnZXNBbmltYXRvci4KKyAgICAgICAgKHdp
bmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBl
IEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLgorICAgICAgICAKKyAgICAgICAgKiBBbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFz
LXNoYXBlcy5qczogQWRkZWQuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlKTogQSBzdWIg
Y2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGUu
cHJvdG90eXBlLl9kcmF3KTogRHJhd3MgYSBzaGFwZSBvbiB0aGUgY29udGV4dCBvZiBhIGNhbnZh
cy4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLmFuaW1hdGUpOiBNb3Zl
cyB0aGUgQm91bmNpbmdDYW52YXNTaGFwZSB0byBhIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgCisg
ICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNp
bmdQYXJ0aWNsZXNTdGFnZS4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UucHJv
dG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNp
bmdDYW52YXNTaGFwZS4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc0Fu
aW1hdG9yKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci4KKyAgICAg
ICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBDbGVh
cnMgdGhlIGNvbnRleHQgYmVmb3JlIHJlZHJhd2luZyB0aGUgcGFydGljbGVzLgorICAgICAgICAK
KyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrKTogQSBzdWIgY2xhc3Mgb2Yg
Qm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBl
c0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlw
ZSBCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlLgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFw
ZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyBhbiBhbmltYXRv
ciBvZiB0eXBlIEJvdW5jaW5nQ2FudmFzU2hhcGVzQW5pbWF0b3IuCisgICAgICAgICh3aW5kb3cu
YmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBCb3Vu
Y2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWltYWdlcy5qczog
QWRkZWQuCisgICAgICAgIChCb3VuY2luZ0ltYWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQ
YXJ0aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nSW1hZ2UucHJvdG90eXBlLl9tb3ZlKTogTW92ZSB0
aGUgcGFydGljbGUgdG8gYSBuZXcgbG9jYXRpb24uIEFwcGx5IHRyYW5zZm9ybSBzaW5jZSBpdCBk
b2VzIG5vdCByZXF1aXJlIGxheW91dC4KKyAgICAgICAgKEJvdW5jaW5nSW1hZ2UucHJvdG90eXBl
LmFuaW1hdGUpOiBSb3RhdGVzIGFuZCBtb3ZlcyB0aGUgc2hhcGUgdG8gYSBuZXcgbG9jYXRpb24u
CisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdJbWFnZXNTdGFnZSk6IEEgc3ViIGNsYXNzIG9m
IEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuCisgICAgICAgIChCb3VuY2luZ0ltYWdlc1N0YWdlLnBy
b3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZSBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNp
bmdJbWFnZS4KKyAgICAgICAgKEJvdW5jaW5nSW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xl
V2lsbEJlUmVtb3ZlZCk6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGZvcm0gdGhl
IHBhcmVudCBjaGlsZHJlbiBsaXN0LgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nSW1hZ2Vz
QmVuY2htYXJrKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuCisg
ICAgICAgIChCb3VuY2luZ0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBD
cmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ0ltYWdlc1N0YWdlLgorICAgICAgICAod2lu
ZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5cGUg
Qm91bmNpbmdJbWFnZXNCZW5jaG1hcmsuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanM6
IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZVJvdGF0ZXIpOiBNYW5hZ2VzIHJvdGF0
aW5nIGEgQm91bmNpbmdQYXJ0aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVSb3RhdGVy
LnByb3RvdHlwZS5uZXh0KTogTW92ZXMgdGhlIHRpbWUgYnkgdGhlIGJlbmNobWFyaydzIGN1cnJl
bnQgdGltZURhdGEuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlUm90YXRlci5wcm90b3R5cGUu
ZGVncmVlKTogUmV0dXJucyB0aGUgY3VycmVudCByb3RhdGluZyBkZWdyZWUuCisgICAgICAgIChC
b3VuY2luZ1BhcnRpY2xlUm90YXRlci5wcm90b3R5cGUucm90YXRlWik6IFJldHVybnMgQ1NTIGZv
cm1hdHRlZCB0cmFuc2Zvcm0gcm90YXRlWigpIHZhbHVlLgorICAgICAgICAoQm91bmNpbmdQYXJ0
aWNsZVJvdGF0ZXIucHJvdG90eXBlLnJvdGF0ZSk6IFJldHVybnMgU1ZHIGZvcm1hdHRlZCB0cmFu
c2Zvcm0gcm90YXRlKCkgdmFsdWUuICAgICAgICAKKyAgICAgICAgCisgICAgICAgIChCb3VuY2lu
Z1BhcnRpY2xlKTogQmFzZSBjbGFzcyBmb3IgYSBib3VuY2luZyBwYXJ0aWNsZS4KKyAgICAgICAg
KEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlLmNlbnRlcik6IFJldHVybnMgdGhlIGNlbnRlciBw
b2ludCBvciB0aGUgcGFydGljbGUuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlw
ZS5hbmltYXRlKTogTW92ZXMgdGhlIHBhcnRpY2xlIGJhc2VkIG9uIGl0cyBjdXJyZW50IHBvc2l0
aW9uLCBhbmdsZSBhbmQgdmVsb2NpdHkuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdQYXJ0
aWNsZXNBbmltYXRvcik6IEEgc3ViIGNsYXNzIG9mIEFuaW1hdG9yLgorICAgICAgICAoQm91bmNp
bmdQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6IE1hbmFnZXMgYW5pbWF0aW5n
IHRoZSBib3VuY2luZyBwYXJ0aWNsZXMgdGhyb3VnaCB0aGUgdGVzdCBzdGFnZS4KKyAgICAgICAg
CisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0YWdlKTogUmVwcmVzZW50cyB0aGUgY29udGFp
bmVyIG9mIGFsbCB0aGUgYm91bmNpbmcgcGFydGljbGVzLgorICAgICAgICAoQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZS5wcm90b3R5cGUuc2l6ZSk6IFJldHVybnMgdGhlIHNpemUgb2YgdGhlIHN0YWdl
IGV4Y2x1ZGluZyB0aGUgQ1NTIHBhZGRpbmcuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0
YWdlLnByb3RvdHlwZS5wYXJzZVNoYXBlUGFyYW10ZXJzKTogR2V0cyB0aGUgc2hhcGUgcGFyYW1l
dGVycyBmb3Igc2hhcGUgYW5pbWF0aW5nIHRlc3RzLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNs
ZXNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IEFuaW1hdGVzIGFsbCB0aGUgcGFydGljbGVzLgor
ICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUudHVuZSk6IENoYW5nZXMg
dGhlIHRlc3QgYnkgYWRkaW5nIG9yIHJlbW92aW5nIHBhcnRpY2xlcy4KKyAgICAgICAgCisgICAg
ICAgIChCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyayk6IFJ1bnMgdGhlIGJlbmNobWFyayBmb3Ig
Ym91bmNpbmcgcGFydGljbGVzIHRlc3QuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc0JlbmNo
bWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBDcmVhdGVzIGFuIGFuaW1hdG9yIG9mIHR5
cGUgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVz
QmVuY2htYXJrLnByb3RvdHlwZS50dW5lKTogVHVuZXMgdGhlIHRlc3QgdGhyb3VnaCB0aGUgY3Vy
cmVudCBzdGFnZS4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlw
ZS5jbGVhcik6IENsZWFycyB0aGUgdGVzdCB0aHJvdWdoIHRoZSBjdXJyZW50IHN0YWdlLgorICAg
ICAgICAoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLnNob3dSZXN1bHRzKTog
U2hvd3MgdGhlIHJlc3VsdHMvcHJvZ3Jlc3MgdGhyb3VnaCBpdHMgcmVjb3JkVGFibGUgYW5kIHBy
b2dyZXNzQmFyLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc2hhcGVzLmpzOiBBZGRlZC4KKyAgICAgICAg
KEJvdW5jaW5nU2hhcGUpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlLgorICAgICAg
ICAoQm91bmNpbmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVNwYW4pOiBDcmVhdGVzIGEgPHNwYW4+
IGVsZW1lbnQgYW5kIHRha2VzIHRoZSBzaGFwZSBhbmQgY2xpcHBpbmcgY2xhc3NlcyBpbnRvIGNv
bnNpZGVyYXRpb24uCisgICAgICAgIChCb3VuY2luZ1NoYXBlLnByb3RvdHlwZS5fbW92ZSk6IE1v
dmVzIHRoZSBwYXJ0aWNsZSB0byBhIG5ldyBsb2NhdGlvbi4gQXBwbHkgdHJhbnNmb3JtIHNpbmNl
IGl0IGRvZXMgbm90IHJlcXVpcmUgbGF5b3V0LgorICAgICAgICAoQm91bmNpbmdTaGFwZS5wcm90
b3R5cGUuYW5pbWF0ZSk6IFJvdGF0ZXMgYW5kIG1vdmVzIHRoZSBzaGFwZSB0byBhIG5ldyBsb2Nh
dGlvbi4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ1NoYXBlc1N0YWdlKTogQSBzdWIgY2xh
c3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS4KKyAgICAgICAgKEJvdW5jaW5nU2hhcGVzU3Rh
Z2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUg
Qm91bmNpbmdTaGFwZS4KKyAgICAgICAgKEJvdW5jaW5nU2hhcGVzU3RhZ2UucHJvdG90eXBlLnBh
cnRpY2xlV2lsbEJlUmVtb3ZlZCk6IFJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBm
b3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4gbGlzdC4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2lu
Z1NoYXBlc0JlbmNobWFyayk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzQmVuY2ht
YXJrLgorICAgICAgICAoQm91bmNpbmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0
YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUgQm91bmNpbmdTaGFwZXNTdGFnZS4KKyAgICAg
ICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBv
ZiB0eXBlIEJvdW5jaW5nU2hhcGVzQmVuY2htYXJrLgorICAgICAgICAKKyAgICAgICAgKiBBbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLWlt
YWdlcy5qczogQWRkZWQuCisgICAgICAgIChCb3VuY2luZ1N2Z0ltYWdlKTogQSBzdWIgY2xhc3Mg
b2YgQm91bmNpbmdQYXJ0aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nU3ZnSW1hZ2UucHJvdG90eXBl
Ll9tb3ZlKTogTW92ZSB0aGUgcGFydGljbGUgdG8gYSBuZXcgbG9jYXRpb24uIEFwcGx5IHRyYW5z
Zm9ybSBzaW5jZSBpdCBkb2VzIG5vdCByZXF1aXJlIGxheW91dC4KKyAgICAgICAgKEJvdW5jaW5n
U3ZnSW1hZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBSb3RhdGVzIGFuZCBtb3ZlcyB0aGUgc2hhcGUg
dG8gYSBuZXcgbG9jYXRpb24uCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZXNT
dGFnZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuCisgICAgICAgIChC
b3VuY2luZ1N2Z0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMg
YSBwYXJ0aWNsZSBvZiB0eXBlIEJvdW5jaW5nU3ZnSW1hZ2UuCisgICAgICAgIChCb3VuY2luZ1N2
Z0ltYWdlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1vdmUgdGhl
IGNvcnJlc3BvbmRpbmcgZWxlbWVudCBmb3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4gbGlzdC4KKyAg
ICAgICAgCisgICAgICAgIChCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyayk6IEEgc3ViIGNsYXNz
IG9mIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLgorICAgICAgICAoQm91bmNpbmdTdmdJbWFn
ZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5
cGUgQm91bmNpbmdTdmdJbWFnZXNTdGFnZS4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGll
bnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJvdW5jaW5nU3ZnSW1hZ2Vz
QmVuY2htYXJrLiAKKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuanM6IEFkZGVkLgorICAg
ICAgICAoQm91bmNpbmdTdmdTaGFwZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUu
CisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlLnByb3RvdHlwZS5fY3JlYXRlQ2lyY2xlKTogUmV0
dXJucyBhIG5ld2x5IGNyZWF0ZWQgU1ZHIDxjaXJjbGU+IGVsZW1lbnQuCisgICAgICAgIChCb3Vu
Y2luZ1N2Z1NoYXBlLnByb3RvdHlwZS5fY3JlYXRlUmVjdCk6IFJldHVybnMgYSBuZXdseSBjcmVh
dGVkIFNWRyA8cmVjdD4gZWxlbWVudC4gCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlLnByb3Rv
dHlwZS5fbW92ZSk6IE1vdmUgdGhlIHBhcnRpY2xlIHRvIGEgbmV3IGxvY2F0aW9uLiBBcHBseSB0
cmFuc2Zvcm0gc2luY2UgaXQgZG9lcyBub3QgcmVxdWlyZSBsYXlvdXQuCisgICAgICAgIChCb3Vu
Y2luZ1N2Z1NoYXBlLnByb3RvdHlwZS5hbmltYXRlKTogUm90YXRlcyBhbmQgbW92ZXMgdGhlIHNo
YXBlIHRvIGEgbmV3IGxvY2F0aW9uLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hh
cGVzU3RhZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLgorICAgICAg
ICAoQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuZW5zdXJlQ2xpcFN0YXJJc0NyZWF0
ZWQpOiBFbnN1cmUgdGhlIGEgPGNsaXBQYXRoPiBlbGVtZW50IHdpdGggaWQ9InN0YXItY2xpcCIg
aXMgY3JlYXRlZC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmVu
c3VyZURlZnNJc0NyZWF0ZWQpOiBFbnN1cmUgYSA8ZGVmcz4gZWxlbWVudCBpcyBjcmVhdGVkLgor
ICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlR3JhZGllbnQp
OiBDcmVhdGVzIGEgPGxpbmVhckdyYWRpZW50PiBlbGVtZW50LgorICAgICAgICAoQm91bmNpbmdT
dmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuX2NyZWF0ZURlZnMpOiBDcmVhdGVzIGEgbmV3IDxkZWZz
PiBlbGVtZW50LgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuX2Ny
ZWF0ZUNsaXBTdGFyKTogQ3JlYXRlIGEgbmV3IDxjbGlwUGF0aD4gZWxlbWVudCB3aXRoIGlkPSJz
dGFyLWNsaXAiLgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3Jl
YXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlwZSBCb3VuY2luZ1N2Z1NoYXBl
LgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxs
QmVSZW1vdmVkKTogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZm9ybSB0aGUgcGFy
ZW50IGNoaWxkcmVuIGxpc3QuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNC
ZW5jaG1hcmspOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay4KKyAg
ICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6
IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UuCisgICAgICAg
ICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2Yg
dHlwZSBCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyay4KKyAgICAgICAgCisgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy9yZXNvdXJjZXM6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVz
dHMvcmVzb3VyY2VzL2JlbmNobWFyay5jc3M6IEFkZGVkLgorICAgICAgICBBIHNoYXJlZCBjc3Mg
Zm9yIGFsbCB0aGUgdGVzdCBwYWdlcy4gSXQgc2V0cyB0aGUgY3NzIHByb3BlcnRpZXMgZm9yIHRo
ZSB0ZXN0IHBhZ2UgYW5kIHRoZSBzdGFnZSBlbGVtZW50LgorICAgICAgICAKKyAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9iZW5jaG1hcmsuanM6IEFkZGVkLgorICAgICAgICAo
QmVuY2htYXJrU3RhdGUpOiBUcmFja3MgdGhlIHN0YXRlIG9mIHRoZSBiZW5jaG1hcmsgdGVzdC4K
KyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5fdGltZU9mZnNldCk6IFJldHVybnMg
dGhlIHRpbWVPZmZzZXQgb2YgYSBzdGFnZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3Rv
dHlwZS5fbWVzc2FnZSk6IFJldHVybnMgdGhlIG1lc3NhZ2Ugb2YgYSBzdGFnZS4KKyAgICAgICAg
KEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS51cGRhdGUpOiBTZXRzIHRoZSBjdXJyZW50VGltZU9m
ZnNldCB0byBhIG5ldyB2YWx1ZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5z
YW1wbGluZ1RpbWVPZmZzZXQpOiBSZXR1cm5zIHRoZSB0aW1lT2Zmc2V0IG9mIHRoZSBzYW1wbGlu
ZyBzdGFnZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5jdXJyZW50U3RhZ2Up
OiBSZXR1cm5zIHRoZSBjdXJyZW50IHN0YWdlIG9mIHRoZSBiZW5jaG1hcmsuCisgICAgICAgIChC
ZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuY3VycmVudE1lc3NhZ2UpOiBSZXR1cm5zIHRoZSBtZXNz
YWdlIG9mIHRoZSBjdXJyZW50IHN0YWdlIGFuZCB0aW1lT2Zmc2V0LgorICAgICAgICAoQmVuY2ht
YXJrU3RhdGUucHJvdG90eXBlLmN1cnJlbnRQcm9ncmVzcyk6IFJldHVybnMgYSBwZXJjZW50YWdl
IG9mIGhvdyBtdWNoIHRoZSBiZW5jaG1hcmsgaXMgcnVubmluZy4KKyAgICAgICAgCisgICAgICAg
IChBbmltYXRvcik6IE1hbmFnZXMgYW5pbWF0aW5nIHRoZSB0ZXN0LgorICAgICAgICAoQW5pbWF0
b3IucHJvdG90eXBlLnN0YXJ0KTogQ2FsbGVkIGlmIGFuaW1hdGluZyB1c2luZyBzZXRJbnRlcnZh
bCBpcyByZXF1ZXN0ZWQuCisgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUudGltZURlbHRhKTog
UmV0dXJucyB0aGUgY3VycmVudCB0aW1lRGVsdGEgCisgICAgICAgIChBbmltYXRvci5wcm90b3R5
cGUuYW5pbWF0ZSk6IE1hbmFnZXMgdGhlIHRlc3QgYW5pbWF0aW9uLgorICAgICAgICAoQW5pbWF0
b3IucHJvdG90eXBlLmFuaW1hdGVMb29wKTogQ2FsbGVkIGlmIGFuaW1hdGluZyB1c2luZyByZXF1
ZXN0QW5pbWF0aW9uRnJhbWUgaXMgcmVxdWVzdGVkLiAKKyAgICAgICAgCisgICAgICAgIChCZW5j
aG1hcmspOiBNYW5hZ2VzIHJ1bm5pbmcgdGhlIHRlc3QgYmVuY2htYXJrIGFuZCByZWNvcmRpbmcg
dGhlIHNhbXBsZWQgZGF0YS4KKyAgICAgICAgKEJlbmNobWFyay5wcm90b3R5cGUucGFyc2VQYXJh
bWV0ZXJzKTogUGFyc2VzIHRoZSB0ZXN0IHBhcmFtZXRlcnMuCisgICAgICAgIChCZW5jaG1hcmsu
cHJvdG90eXBlLnN0YXJ0KTogU3RhcnRzIHRoZSBiZW5jaG1hcmsuCisgICAgICAgIChCZW5jaG1h
cmsucHJvdG90eXBlLnVwZGF0ZSk6IENhbGxlZCBmcm9tIHRoZSBhbmltYXRvci5hbmltYXRlKCkg
dG8gY2hhbmdlIHRoZSBjb21wbGV4aXR5IG9mIHRoZSB0ZXN0LgorICAgICAgICAoQmVuY2htYXJr
LnByb3RvdHlwZS5yZWNvcmQpOiBTaG93cyB0aGUgY3VycmVudCAobm90IGZpbmFsKSByZXN1bHRz
IG9mIHRoZSBiZW5jaG1hcmsuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnJlc29sdmVX
aGVuRmluaXNoZWQpOiBTcGlucyB1bnRpbCB0aGUgYmVuY2htYXJrIGlzIGZpbmlzaGVkIGFuZCBy
ZXR1cm5zIGl0cyByZXN1bHRzLgorICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS5ydW4pOiBT
dGFydHMgdGhlIHRlc3QsIHJ1bnMgaXQsIHdhaXRzIHVudGlsIGl0IGlzIGZpbmlzaGVkIGFuZCBy
ZXR1cm4gaXRzIHJlc3VsdHMuCisgICAgICAgICh3aW5kb3cucnVuQmVuY2htYXJrKTogQ2FsbGVk
IGZyb20gdGhlIGJlbmNobWFyayBydW5uZXIgdGhyb3VnaCB0aGUgc3VpdGUgY29udHJvbGxlciBy
dW4tY2FsbGJhY2suIAorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291
cmNlcy9tYXRoLmpzOiBBZGRlZC4KKyAgICAgICAgKE1hdHJpeCk6IEEgbWF0cml4IG9iamVjdC4K
KyAgICAgICAgKFZlY3RvcjMpOiBBIHZlY3RvciBvZiBzaXplIDMgb2JqZWN0LgorICAgICAgICAo
TWF0cml4Myk6IEEgbWF0cml4IG9mIHNpemUgM3gzIG9iamVjdC4KKyAgICAgICAgCisgICAgICAg
IChDb250cm9sbGVyKTogQ2xvc2VkLWxvb3AgY29udHJvbGxlciBmb3IgYSBzZXQtcG9pbnQgeS4K
KyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLl9zYXQpOiBMaW1pdHMgdGhlIG91dHB1dCB0
byBhIGNlcnRhaW4gcmFuZ2UuCisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS50dW5lKTog
cHJvZHVjZXMgdGhlIHBpZCBmb3IgdGhlIGJlbmNobWFyayB3aGljaCBpcyB0cmVhdGVkIGFzIGEg
Y2xvc2VkLWxvb3Agc3lzdGVtLgorICAgICAgICAKKyAgICAgICAgKEVzdGltYXRvcik6IEltcGxl
bWVudCBLYWxtYW4gZmlsdGVyIHRvIGdldCBhbiBlc3RpbWF0ZSBmb3IgYSBzYW1wbGVkIGRhdGEg
cG9pbnQuCisgICAgICAgIChFc3RpbWF0b3IucHJvdG90eXBlLmVzdGltYXRlKTogUmV0dXJucyBh
biBlc3RpbWF0ZSBmb3IgZm9yIGEgc2FtcGxlZCBkYXRhIHBvaW50LgorICAgICAgICAKKyAgICAg
ICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qczogQWRkZWQuCisgICAgICAg
IChTdGFnZSk6IEEgYmFzZSBjbGFzcyBmb3IgbWFuYWdpbmcgdGhlIHRlc3QgY29tcGxleGl0eSBh
bmQgdGVzdCBhbmltYXRpb24uCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUuc2l6ZSk6IFJldHVy
bnMgdGhlIHNpemUgb2YgdGhlIHN0YWdlIGV4Y2x1ZGluZyB0aGUgQ1NTIHBhZGRpbmcuCisgICAg
ICAgIChTdGFnZS5wcm90b3R5cGUuY2xlYXIpOiBDbGVhcnMgdGhlIHN0YWdlIGZyb20gYWxsIGl0
cyBhbmltYXRpb24gZWxlbWVudHMuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tKTog
UmV0dXJucyBhIHJhbmRvbSBmbG9hdC4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5yYW5kb21J
bnQpOiBSZXR1cm5zIGEgcmFuZG9tIGludGVnZXIuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUu
cmFuZG9tUG9zaXRpb24pOiBSZXR1cm5zIGEgcmFuZG9tIHBvc2l0aW9uLgorICAgICAgICAoU3Rh
Z2UucHJvdG90eXBlLnJhbmRvbVZlbG9jaXR5KTogUmV0dXJucyBhIHJhbmRvbSB2ZWxvY2l0eS4K
KyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5yYW5kb21BbmdsZSk6IFJldHVybnMgYSByYW5kb20g
YW5nbGUuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tQ29sb3IpOiBSZXR1cm5zIGEg
cmFuZG9tIGNvbG9yIG5vdCB0b28gZGFyayBhbmQgbm90IHRvbyBsaWdodC4KKyAgICAgICAgCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzOiBBZGRlZC4K
KyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuX3BhcnNlKTogR2l2ZW4gYSBzZXBhcmF0
b3IgY2hhcmFjdGVyLCBpdCBwYXJlc2VzIGEgc3RyaW5nIHRvIGEgc2V0IG9mIDxrZXksIHZhbHVl
PiBwYWlycy4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQucGFyc2VQYXJhbWV0ZXJz
KTogUGFyc2VzIGEgdGVzdCBwYXJhbWV0ZXJzLgorICAgICAgICAod2luZG93LmJlbmNobWFya0Ns
aWVudC5wYXJzZUFyZ3VtZW50cyk6IFBhcnNlcyBhIHRhZyBhcmd1bWVudHMuCisgICAgICAgICh3
aW5kb3cuYmVuY2htYXJrQ2xpZW50LmV4dGVuZE9iamVjdCk6IEFkZHMgdGhlIGF0dHJpYnV0ZXMg
YW5kIHRoZWlyIHZhbHVlcyBvZiBhbiBvYmplY3QgdG8gYW5vdGhlciBvYmplY3QuCisgICAgICAg
ICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNvcHlPYmplY3QpOiBDb3BpZXMgdGhlIGF0dHJpYnV0
ZXMgYW5kIHRoZWlyIHZhbHVlcyBvZiBhbiBvYmplY3QgdG8gYSBuZXcgb2JqZWN0LgorICAgICAg
ICAod2luZG93LmJlbmNobWFya0NsaWVudC5tZXJnZU9iamVjdHMpOiBDb3BpZXMgdGhlIGF0dHJp
YnV0ZXMgYW5kIHRoZWlyIHZhbHVlcyBvZiB0d28gb2JqZWN0cyB0byBhIG5ldyBvYmplY3QuCisg
ICAgICAgICh3aW5kb3cucnVuQmVuY2htYXJrKTogQ2FsbGVkIGZyb20gdGhlIGJlbmNobWFyayBy
dW5uZXIgdGhyb3VnaCB0aGUgc3VpdGUgY29udHJvbGxlciBydW4tY2FsbGJhY2suCisgICAgICAg
IAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnBuZzogQWRk
ZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcuc3ZnOiBB
ZGRlZC4KKyAgICAgICAgSW1hZ2VzIHdoaWNoIGFyZSBzaGFyZWQgYnkgYWxsIHRoZSB0ZXN0cy4K
KyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZXh0OiBBZGRlZC4KKyAgICAg
ICAgKiBBbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgVGhpcyB0ZXN0IHN0YWNrcyBjb250YWluZXIgPGRpdj4gZWxlbWVudHMgb24gdG9wIG9m
IGVhY2ggb3RoZXIuIFRoZSB0ZXN0CisgICAgICAgIGFkZHMgdGV4dCBpdGVtcyB0byB0b3Btb3N0
IGNvbnRhaW5lciA8ZGl2PiB1bnRpbCBpdCBpcyBmdWxsLiBXaGVuIGl0IGlzCisgICAgICAgIGZ1
bGwsIGEgbmV3IGNvbnRhaW5lciA8ZGl2PiBpcyBjcmVhdGVkLgorICAgICAgICAKKyAgICAgICAg
KiBBbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgKiBBbmlt
b21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanM6IEFkZGVkLgorICAg
ICAgICAoTGF5ZXJpbmdUZXh0QW5pbWF0b3IpOiBBIHN1YiBjbGFzcyBvZiBBbmltYXRvci4KKyAg
ICAgICAgKExheWVyaW5nVGV4dEFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlKTogRm9yY2VzIGEg
cmVkcmF3IHRvIGhhcHBlbi4gSXQgY2FsbHMgdGhlIHN0YWdlIGFuaW1hdGUoKSBmdW5jdGlvbi4K
KyAgICAgICAgCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZSk6IFJlcHJlc2VudHMgdGhlIGNv
bnRhaW5lciBvZiBhbGwgdGhlIHN0YWNrZWQgdGV4dCBsYXllcnMuCisgICAgICAgIChMYXllcmlu
Z1RleHRTdGFnZS5wYXJzZVRleHRJdGVtKTogUGFyc2VzIGEgdGV4dEl0ZW0gd2hpY2ggbWF5IGJl
IGFuIG9wZW5pbmcgdGFnLCBhIGNsb3NpbmcgdGFnIG9yIGEgc2VsZi1jbG9zaW5nIHRhZy4KKyAg
ICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmlzT3BlbmluZ1RleHRJdGVtKTogUmV0dXJucyB0cnVl
IGlmIHRoZSB0ZXh0SXRlbSBpcyBhbiBvcGVuaW5nIHRhZyBlLmcuICc8b2w+Jy4KKyAgICAgICAg
KExheWVyaW5nVGV4dFN0YWdlLmlzQ2xvc2luZ1RleHRJdGVtKTogUmV0dXJucyB0cnVlIGlmICB0
aGUgdGV4dEl0ZW0gaXMgYW4gY2xvc2luZyB0YWcgZS5nLiAnPC9vbD4uCisgICAgICAgIChMYXll
cmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFncy5MYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXMu
bWFwKTogQ2FsY3VsYXRlcyBhbmQgc3RvcmVzIGlzT3BlbmluZyBhbmQgaXNDbG9zaW5nIGZsYWdz
IGZvciBlYWNoIHRleHRJdGVtLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDb2xvcmFi
bGVUZXh0SXRlbSk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgdGV4dEl0ZW0gaXMgc2VsZi1jbG9zaW5n
IHRhZyBlLmcuICc8cD4uLi48L3A+Jy4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmlzSW5z
ZXJ0YWJsZVRleHRJdGVtKTogUmV0dXJucyB0cnVlIGlmIHRoZSB0ZXh0SXRlbXMgY2F1c2VzIGEg
bmV3IGVsZW1lbnQgdG8gYmUgYWRkZWQgdG8gdGhlIHRleHQgbGF5ZXJzLgorICAgICAgICAoTGF5
ZXJpbmdUZXh0U3RhZ2UuY29sb3JhYmxlVGV4dEl0ZW1zLkxheWVyaW5nVGV4dFN0YWdlLnRleHRJ
dGVtc0ZsYWdzLmZpbHRlcik6IE51bWJlciBvZiBjb2xvcmFibGUgdGV4dEl0ZW1zLgorICAgICAg
ICAoTGF5ZXJpbmdUZXh0U3RhZ2UuaW5zZXJ0YWJsZVRleHRJdGVtcy5MYXllcmluZ1RleHRTdGFn
ZS50ZXh0SXRlbXNGbGFncy5maWx0ZXIpOiBOdW1iZXIgb2YgaW5zZXJ0YWJsZSB0ZXh0SXRlbXMu
CisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5jb2xvckluZGV4VG9UZXh0RWxlbWVudEluZGV4
KTogTWFwcyBmcm9tIGNvbG9ySW5kZXggWzAuLmNvbG9yYWJsZVRleHRJdGVtcy0xXSB0byB0ZXh0
RWxlbWVudEluZGV4IFswLi5pbnNlcnRhYmxlVGV4dEl0ZW1zLTFdLgorICAgICAgICAoTGF5ZXJp
bmdUZXh0U3RhZ2UucHJvdG90eXBlLl9uZXh0VGV4dEl0ZW0pOiBNb3ZlcyB0aGUgX3RleHRJdGVt
SW5kZXggb25lIHN0ZXAgZm9yd2FyZCBpbiBhIGxvb3AgWzAuLkxheWVyaW5nVGV4dFN0YWdlLnRl
eHRJdGVtcy5sZW5ndGgtMV0uCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUu
X3ByZXZpb3VzVGV4dEl0ZW0pOiBNb3ZlcyB0aGUgX3RleHRJdGVtSW5kZXggb25lIHN0ZXAgYmFj
a3dhcmQgaW4gYSBsb29wLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9w
dXNoVGV4dEVsZW1lbnQpOiBDcmVhdGVzIGEgbmV3IHRleHRJdGVtRWxlbWVudCBhbmQgYWRkcyBp
dCB0byB0aGUgdG9wbW9zdCBjb250YWluZXIgPGRpdj4uCisgICAgICAgIChMYXllcmluZ1RleHRT
dGFnZS5wcm90b3R5cGUuX3BvcFRleHRFbGVtZW50KTogUmVtb3ZlcyB0aGUgbGFzdCB0ZXh0SXRl
bUVsZW1lbnQgZnJvbSB0aGUgdG9wbW9zdCBjb250YWluZXIgPGRpdj4uCisgICAgICAgIChMYXll
cmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX2NvbG9yVGV4dEl0ZW0pOiBDaGFuZ2VzIHRoZSBiYWNr
Z3JvdW5kIGNvbG9yIG9mIGEgc2luZ2xlIGNvbG9yYWJsZSB0ZXh0RWxlbWVudC4gVGhlIGluZGV4
IGFkdmFuY2VzIGluIGEgY2lyY2xlIFswLi5jb2xvcmFibGVUZXh0SXRlbXMtMV0uCisgICAgICAg
IChMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IENoYW5nZXMgdGhlIGJhY2tn
cm91bmQgY29sb3IgYW5kIHRoZSB0ZXh0IGNvbG9yIG9mIHRoZSB0ZXh0RWxlbWVudHMgc3VjaCB0
aGF0IGEgcmVkcmF3IGlzIGVuZm9yY2VkLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJv
dG90eXBlLnR1bmUpOiBBZGRzIG9yIHJlbW92ZXMgdGV4dEVsZW1lbnRzIHRvIHRoZSBzdGFnZS4K
KyAgICAgICAgCisgICAgICAgIChMYXllcmluZ1RleHRCZW5jaG1hcmspOiBSdW5zIHRoZSBiZW5j
aG1hcmsgZm9yIHRoZSBsYXllcmluZyB0ZXh0IHRlc3QuCisgICAgICAgIChMYXllcmluZ1RleHRC
ZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUg
TGF5ZXJpbmdUZXh0U3RhZ2UuCisgICAgICAgIChMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90
eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyBhbiBhbmltYXRvciBvZiB0eXBlIExheWVyaW5n
VGV4dEFuaW1hdG9yLgorICAgICAgICAoTGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZS50
dW5lKTogVHVuZXMgdGhlIHRlc3QgdGhyb3VnaCB0aGUgY3VycmVudCBzdGFnZS4KKyAgICAgICAg
KExheWVyaW5nVGV4dEJlbmNobWFyay5wcm90b3R5cGUuY2xlYXIpOiBDbGVhcnMgdGhlIHRlc3Qg
dGhyb3VnaCB0aGUgY3VycmVudCBzdGFnZS4KKyAgICAgICAgKExheWVyaW5nVGV4dEJlbmNobWFy
ay5wcm90b3R5cGUuc2hvd1Jlc3VsdHMpOiBTaG93cyB0aGUgcmVzdWx0cy9wcm9ncmVzcyB0aHJv
dWdoIGl0cyByZWNvcmRUYWJsZSBhbmQgcHJvZ3Jlc3NCYXIKKyAgICAgICAgKHdpbmRvdy5iZW5j
aG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIExheWVyaW5n
VGV4dEJlbmNobWFyay4KKwogMjAxNS0wOC0yNyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFtFRkxdIFJFR1JFU1NJT04ocjE4ODc5Myk6IEl0IG1hZGUg
MjAwIGxheW91dCB0ZXN0cyBhbmQgQmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBwZXIuaHRtbCBw
ZXJmb3JtYW5jZSB0ZXN0IGZhaWwKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9y
ZXNvdXJjZXMvYWxnb3JpdGhtLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9hbGdvcml0aG0uanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMDIgQEAKK0FycmF5LnByb3RvdHlwZS5zd2FwID0gZnVuY3Rpb24oaSwgaikg
eworICAgIHZhciB0ID0gdGhpc1tpXTsKKyAgICB0aGlzW2ldID0gdGhpc1tqXTsKKyAgICB0aGlz
W2pdID0gdDsKKyAgICByZXR1cm4gdGhpczsKK30KKworZnVuY3Rpb24gSGVhcChtYXhTaXplLCBj
b21wYXJlKSB7CisgICAgdGhpcy5fbWF4U2l6ZSA9IG1heFNpemU7CisgICAgdGhpcy5fY29tcGFy
ZSA9IGNvbXBhcmU7CisgICAgdGhpcy5fc2l6ZSA9IDA7CisgICAgdGhpcy5fdmFsdWVzID0gbmV3
IEFycmF5KHRoaXMuX21heFNpemUpOworfQorCitIZWFwLnByb3RvdHlwZSA9IHsKKyAgICBfcGFy
ZW50SW5kZXggOiBmdW5jdGlvbihpKSB7CisgICAgICAgIHJldHVybiBpID4gMCA/IE1hdGguZmxv
b3IoKGkgLSAxKSAvIDIpIDogLTE7CisgICAgfSwKKyAgICBfbGVmdEluZGV4IDogZnVuY3Rpb24o
aSkgeworICAgICAgICByZXR1cm4gaSAqIDIgKyAxIDwgdGhpcy5fc2l6ZSA/IGkgKiAyICsgMSA6
IC0xOworICAgIH0sCisgICAgX3JpZ2h0SW5kZXggOiBmdW5jdGlvbihpKSB7CisgICAgICAgIHJl
dHVybiBpICogMiArIDIgPCB0aGlzLl9zaXplID8gaSAqIDIgKyAyIDogLTE7CisgICAgfSwKKyAg
ICAvLyBSZXR1cm5zIHRoZSBjaGlsZCBpbmRleCB0aGF0IG1heSB2aW9sYXRlIHRoZSBoZWFwIHBy
b3BlcnR5IGF0IGluZGV4IGkKKyAgICBfY2hpbGRJbmRleCA6IGZ1bmN0aW9uKGkpIHsKKyAgICAg
ICAgdmFyIGwgPSB0aGlzLl9sZWZ0SW5kZXgoaSk7CisgICAgICAgIHZhciByID0gdGhpcy5fcmln
aHRJbmRleChpKTsKKworICAgICAgICBpZiAobCAhPSAtMSAmJiByICE9IC0xKQorICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX2NvbXBhcmUodGhpcy5fdmFsdWVzW2xdLCB0aGlzLl92YWx1ZXNbcl0p
ID4gMCA/IGwgOiByOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGwgIT0gLTEgPyBsIDogcjsK
KyAgICB9LAorICAgIGluaXQgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5fc2l6ZSA9IDA7
CisgICAgfSwKKyAgICB0b3AgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuICF0aGlzLl9z
aXplID8gTmFOIDogdGhpcy5fdmFsdWVzWzBdOworICAgIH0sCisgICAgcHVzaCA6IGZ1bmN0aW9u
KHZhbHVlKSB7CisgICAgICAgIGlmICh0aGlzLl9zaXplID09IHRoaXMuX21heFNpemUpIHsKKyAg
ICAgICAgICAgIC8vIElmIHNpemUgaXMgYm91bmRlZCBhbmQgdGhlIG5ldyB2YWx1ZSBjYW4gYmUg
YSBwYXJlbnQgb2YgdGhlIHRvcCgpCisgICAgICAgICAgICAvLyBpZiB0aGUgc2l6ZSB3ZXJlIHVu
Ym91bmRlZCwganVzdCBpZ25vcmUgdGhlIG5ldyB2YWx1ZS4KKyAgICAgICAgICAgIGlmICh0aGlz
Ll9jb21wYXJlKHZhbHVlLCB0aGlzLnRvcCgpKSA+IDApCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgdGhpcy5wb3AoKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl92YWx1
ZXNbdGhpcy5fc2l6ZSsrXSA9IHZhbHVlOworICAgICAgICB0aGlzLl9idWJibGUodGhpcy5fc2l6
ZSAtIDEpOworICAgIH0sCisgICAgcG9wIDogZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICghdGhp
cy5fc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBOYU47CisgICAgICAgIAorICAgICAgICB0aGlz
Ll92YWx1ZXNbMF0gPSB0aGlzLl92YWx1ZXNbLS10aGlzLl9zaXplXTsKKyAgICAgICAgdGhpcy5f
c2luaygwKTsKKyAgICB9LAorICAgIF9idWJibGUgOiBmdW5jdGlvbihpKSB7CisgICAgICAgIC8v
IEZpeGVzIHRoZSBoZWFwIHBvcGVydHkgYXQgaW5kZXggaSBnaXZlbiB0aGF0IHBhcmVudCBpcyB0
aGUgb25seSBub2RlIHRoYXQKKyAgICAgICAgLy8gbWF5IHZpYWxvdGUgdGhlIGhlYXAgcHJvcGVy
dHkuCisgICAgICAgIGZvciAodmFyIHBpID0gdGhpcy5fcGFyZW50SW5kZXgoaSk7IHBpICE9IC0x
OyBpID0gcGksIHBpID0gdGhpcy5fcGFyZW50SW5kZXgocGkpKSB7CisgICAgICAgICAgICBpZiAo
dGhpcy5fY29tcGFyZSh0aGlzLl92YWx1ZXNbcGldLCB0aGlzLl92YWx1ZXNbaV0pID4gMCkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMu
X3ZhbHVlcy5zd2FwKHBpLCBpKTsKKyAgICAgICAgfQorICAgIH0sCisgICAgX3NpbmsgOiBmdW5j
dGlvbihpKSB7CisgICAgICAgIC8vIEZpeGVzIHRoZSBoZWFwIHBvcGVydHkgYXQgaW5kZXggaSBn
aXZlbiB0aGF0IGVhY2ggb2YgdGhlIGxlZnQgYW5kIHRoZSByaWdodAorICAgICAgICAvLyBzdWIt
dHJlZXMgc2F0aXNmaWVzIHRoZSBoZWFwIHByb3BlcnR5LgorICAgICAgICBmb3IgKHZhciBjaSA9
IHRoaXMuX2NoaWxkSW5kZXgoaSk7IGNpICE9IC0xOyBpID0gY2ksIGNpID0gdGhpcy5fY2hpbGRJ
bmRleChjaSkpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9jb21wYXJlKHRoaXMuX3ZhbHVlc1tp
XSwgdGhpcy5fdmFsdWVzW2NpXSkgPiAwKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgCisgICAgICAgICAgICB0aGlzLl92YWx1ZXMuc3dhcChjaSwgaSk7CisgICAgICAgIH0K
KyAgICB9LAorICAgIHN0ciA6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgb3V0ID0gIkhlYXBb
IiArIHRoaXMuX3NpemUgKyAiXSA9IFsiOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRo
aXMuX3NpemU7ICsraSkgeworICAgICAgICAgICAgb3V0ICs9IHRoaXMuX3ZhbHVlc1tpXTsKKyAg
ICAgICAgICAgIGlmIChpIDwgdGhpcy5fc2l6ZSAtIDEpCisgICAgICAgICAgICAgICAgb3V0ICs9
ICIsICI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG91dCArICJdIjsKKyAgICB9LAorICAg
IHZhbHVlcyA6IGZ1bmN0aW9uKHNpemUpIHsKKyAgICAgICAgLy8gUmV0dXJucyB0aGUgbGFzdCAi
c2l6ZSIgaGVhcCBlbGVtZW50cyB2YWx1ZXMuCisgICAgICAgIHZhciB2YWx1ZXMgPSB0aGlzLl92
YWx1ZXMuc2xpY2UoMCwgdGhpcy5fc2l6ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZXMuc29ydCh0
aGlzLl9jb21wYXJlKS5zbGljZSgwLCBNYXRoLm1pbihzaXplLCB0aGlzLl9zaXplKSk7CisgICAg
fQorfQorCit2YXIgQWxnb3JpdGhtID0geworICAgIGNyZWF0ZU1pbkhlYXAgOiBmdW5jdGlvbiht
YXhTaXplKSB7CisgICAgICAgIHJldHVybiBuZXcgSGVhcChtYXhTaXplLCBmdW5jdGlvbihhLCBi
KSB7IHJldHVybiBiIC0gYTsgfSk7CisgICAgfSwKKyAgICBjcmVhdGVNYXhIZWFwIDogZnVuY3Rp
b24obWF4U2l6ZSkgeworICAgICAgICByZXR1cm4gbmV3IEhlYXAobWF4U2l6ZSwgZnVuY3Rpb24o
YSwgYikgeyByZXR1cm4gYSAtIGI7IH0pOworICAgIH0KK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvbWFpbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL21haW4uanMJKHJldmlzaW9uIDApCisrKyBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL21haW4uanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwyNDMgQEAKK2Z1bmN0aW9uIFBvaW50KHgsIHkpIHsKKyAgICB0aGlzLnggPSB4
OworICAgIHRoaXMueSA9IHk7Cit9CisKK1BvaW50LnByb3RvdHlwZSA9IHsKKyAgICAvLyBVc2Vk
IHdoZW4gdGhlIHBvaW50IG9iamVjdCBpcyB1c2VkIGFzIGEgc2l6ZSBvYmplY3QKKyAgICB3aWR0
aCA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy54OworICAgIH0sCisgICAgLy8g
VXNlZCB3aGVuIHRoZSBwb2ludCBvYmplY3QgaXMgdXNlZCBhcyBhIHNpemUgb2JqZWN0ICAgIAor
ICAgIGhlaWdodCA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy55OworICAgIH0s
CisgICAgY2VudGVyIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhp
cy54IC8gMiwgdGhpcy55IC8gMik7CisgICAgfSwKKyAgICBhZGQgOiBmdW5jdGlvbihvdGhlcikg
eworICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMueCArIG90aGVyLngsIHRoaXMueSArIG90
aGVyLnkpOworICAgIH0sICAgIAorICAgIHN1YnRyYWN0IDogZnVuY3Rpb24ob3RoZXIpIHsKKyAg
ICAgICAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLnggLSBvdGhlci54LCB0aGlzLnkgLSBvdGhlci55
KTsKKyAgICB9LAorICAgIG11bHRpcGx5IDogZnVuY3Rpb24ob3RoZXIpIHsKKyAgICAgICAgcmV0
dXJuIG5ldyBQb2ludCh0aGlzLnggKiBvdGhlci54LCB0aGlzLnkgKiBvdGhlci55KTsKKyAgICB9
LAorICAgIG1vdmUgOiBmdW5jdGlvbihhbmdsZSwgdmVsb2NpdHksIHRpbWVEZWx0YSkgeworICAg
ICAgICB2YXIgeCA9IHRoaXMueCArIE1hdGguY29zKGFuZ2xlKSAqIHZlbG9jaXR5ICogKHRpbWVE
ZWx0YSAvIDEwMDApOworICAgICAgICB2YXIgeSA9IHRoaXMueSArIE1hdGguc2luKGFuZ2xlKSAq
IHZlbG9jaXR5ICogKHRpbWVEZWx0YSAvIDEwMDApOworICAgICAgICByZXR1cm4gbmV3IFBvaW50
KHgsIHkpOworICAgIH0KK30KKworZnVuY3Rpb24gSW5zZXRzKHRvcCwgcmlnaHQsIGJvdHRvbSwg
bGVmdCkgeworICAgIHRoaXMudG9wID0gdG9wOworICAgIHRoaXMucmlnaHQgPSByaWdodDsKKyAg
ICB0aGlzLmJvdHRvbSA9IGJvdHRvbTsKKyAgICB0aGlzLmxlZnQgPSBsZWZ0OworfQorCitJbnNl
dHMucHJvdG90eXBlID0geworICAgIHdpZHRoIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVy
biB0aGlzLmxlZnQgKyB0aGlzLnJpZ2h0OworICAgIH0sCisgICAgaGVpZ2h0IDogZnVuY3Rpb24o
KSB7CisgICAgICAgIHJldHVybiB0aGlzLnRvcCArIHRoaXMuYm90dG9tOworICAgIH0KK30KKwor
ZnVuY3Rpb24gU2ltcGxlUHJvbWlzZSgpIHsKKyAgICB0aGlzLl9jaGFpbmVkUHJvbWlzZSA9IG51
bGw7CisgICAgdGhpcy5fY2FsbGJhY2sgPSBudWxsOworfQorCitTaW1wbGVQcm9taXNlLnByb3Rv
dHlwZS50aGVuID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7CisgICAgaWYgKHRoaXMuX2NhbGxiYWNr
KQorICAgICAgICB0aHJvdyAiU2ltcGxlUHJvbWlzZSBkb2Vzbid0IHN1cHBvcnQgbXVsdGlwbGUg
Y2FsbHMgdG8gdGhlbiI7CisgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICB0aGlz
Ll9jaGFpbmVkUHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgIAorICAgIGlmICh0aGlz
Ll9yZXNvbHZlZCkKKyAgICAgICAgdGhpcy5yZXNvbHZlKHRoaXMuX3Jlc29sdmVkVmFsdWUpOwor
CisgICAgcmV0dXJuIHRoaXMuX2NoYWluZWRQcm9taXNlOworfQorCitTaW1wbGVQcm9taXNlLnBy
b3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgaWYgKCF0aGlzLl9jYWxs
YmFjaykgeworICAgICAgICB0aGlzLl9yZXNvbHZlZCA9IHRydWU7CisgICAgICAgIHRoaXMuX3Jl
c29sdmVkVmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBy
ZXN1bHQgPSB0aGlzLl9jYWxsYmFjayh2YWx1ZSk7CisgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9m
IFNpbXBsZVByb21pc2UpIHsKKyAgICAgICAgdmFyIGNoYWluZWRQcm9taXNlID0gdGhpcy5fY2hh
aW5lZFByb21pc2U7CisgICAgICAgIHJlc3VsdC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsgY2hh
aW5lZFByb21pc2UucmVzb2x2ZShyZXN1bHQpOyB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgdGhp
cy5fY2hhaW5lZFByb21pc2UucmVzb2x2ZShyZXN1bHQpOworfQorCitmdW5jdGlvbiBPcHRpb25z
KHRlc3RJbnRlcnZhbCwgZnJhbWVSYXRlKSB7CisgICAgdGhpcy50ZXN0SW50ZXJ2YWwgPSB0ZXN0
SW50ZXJ2YWw7CisgICAgdGhpcy5mcmFtZVJhdGUgPSBmcmFtZVJhdGU7Cit9CisKK2Z1bmN0aW9u
IFByb2dyZXNzQmFyKGVsZW1lbnQsIHJhbmdlcykgeworICAgIHRoaXMuZWxlbWVudCA9IGVsZW1l
bnQ7CisgICAgdGhpcy5yYW5nZXMgPSByYW5nZXM7CisgICAgdGhpcy5jdXJyZW50UmFuZ2UgPSAw
OworfQorCitQcm9ncmVzc0Jhci5wcm90b3R5cGUgPSB7CisgICAgX3Byb2dyZXNzVG9QZXJjZW50
IDogZnVuY3Rpb24ocHJvZ3Jlc3MpIHsKKyAgICAgICAgcmV0dXJuIHByb2dyZXNzICogKDEwMCAv
IHRoaXMucmFuZ2VzKTsKKyAgICB9LAorICAgIGluY1JhbmdlIDogZnVuY3Rpb24oKSB7CisgICAg
ICAgICsrdGhpcy5jdXJyZW50UmFuZ2U7CisgICAgfSwKKyAgICBzZXRQb3MgOiBmdW5jdGlvbihw
cm9ncmVzcykgeworICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLl9wcm9n
cmVzc1RvUGVyY2VudCh0aGlzLmN1cnJlbnRSYW5nZSArIHByb2dyZXNzKSArICIlIjsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIFJlY29yZFRhYmxlKGVsZW1lbnQpIHsKKyAgICB0aGlzLmVsZW1lbnQg
PSBlbGVtZW50OworICAgIHRoaXMuY2xlYXIoKTsKK30KKworUmVjb3JkVGFibGUucHJvdG90eXBl
ID0geworICAgIGNsZWFyIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuZWxlbWVudC5pbm5l
ckhUTUwgPSAiIjsKKyAgICB9LAorICAgIF9zaG93VGl0bGVzIDogZnVuY3Rpb24ocm93LCBxdWV1
ZSwgdGl0bGVzLCBtZXNzYWdlKSB7CisgICAgICAgIGZvciAodmFyIHRpdGxlID0gMDsgdGl0bGUg
PCB0aXRsZXMubGVuZ3RoOyArK3RpdGxlKSB7CisgICAgICAgICAgICB2YXIgdGggPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJ0aCIpOworICAgICAgICAgICAgdGguaW5uZXJIVE1MID0gdGl0bGVz
W3RpdGxlXS50ZXh0OworICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlICE9ICJ1bmRlZmlu
ZWQiICYmIG1lc3NhZ2UubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgdGguaW5uZXJIVE1MICs9
ICI8YnI+WyIgKyBtZXNzYWdlICsgIl0iOworICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiIjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgid2lkdGgiIGluIHRpdGxlc1t0aXRsZV0p
CisgICAgICAgICAgICAgICAgdGgud2lkdGggPSB0aXRsZXNbdGl0bGVdLndpZHRoICsgIiUiOwor
ICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKHRoKTsKKyAgICAgICAgICAgIHF1ZXVlLnB1c2go
e2VsZW1lbnQ6IHRoLCB0aXRsZXM6IHRpdGxlc1t0aXRsZV0uY2hpbGRyZW4gfSk7CisgICAgICAg
IH0KKyAgICB9LAorICAgIF9zaG93SGVhZGVyIDogZnVuY3Rpb24oc3VpdGVOYW1lLCB0aXRsZXMs
IG1lc3NhZ2UpIHsKKyAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRy
Iik7CisKKyAgICAgICAgdmFyIHF1ZXVlID0gW107CisgICAgICAgIHRoaXMuX3Nob3dUaXRsZXMo
cm93LCBxdWV1ZSwgdGl0bGVzLCBtZXNzYWdlKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVu
ZENoaWxkKHJvdyk7CisKKyAgICAgICAgd2hpbGUgKHF1ZXVlLmxlbmd0aCkgeworICAgICAgICAg
ICAgdmFyIHJvdyA9IG51bGw7CisgICAgICAgICAgICB2YXIgbGlzdCA9IFtdOworCisgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gcXVldWUubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsK
KyAgICAgICAgICAgICAgICB2YXIgZW50cnkgPSBxdWV1ZS5zaGlmdCgpOworCisgICAgICAgICAg
ICAgICAgaWYgKCFlbnRyeS50aXRsZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIGxp
c3QucHVzaChlbnRyeS5lbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFyb3cpCisgICAgICAgICAg
ICAgICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworCisgICAg
ICAgICAgICAgICAgdGhpcy5fc2hvd1RpdGxlcyhyb3csIHF1ZXVlLCBlbnRyeS50aXRsZXMsICIi
KTsKKyAgICAgICAgICAgICAgICBlbnRyeS5lbGVtZW50LmNvbFNwYW4gPSBlbnRyeS50aXRsZXMu
bGVuZ3RoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocm93KSB7CisgICAgICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHJvdyk7CisgICAgICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgICAg
ICArK2xpc3RbaV0ucm93U3BhbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisg
ICAgX3Nob3dFbXB0eSA6IGZ1bmN0aW9uKHJvdywgdGVzdE5hbWUpIHsKKyAgICAgICAgdmFyIHRk
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxk
KHRkKTsKKyAgICB9LAorICAgIF9zaG93VmFsdWUgOiBmdW5jdGlvbihyb3csIHRlc3ROYW1lLCB2
YWx1ZSkgeworICAgICAgICB2YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwor
ICAgICAgICB0ZC50ZXh0Q29udGVudCA9IHZhbHVlLnRvRml4ZWQoMik7CisgICAgICAgIHJvdy5h
cHBlbmRDaGlsZCh0ZCk7CisgICAgfSwKKyAgICBfc2hvd1NhbXBsZXMgOiBmdW5jdGlvbihyb3cs
IHRlc3ROYW1lLCBheGlzZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGltZU9mZnNldCkgeworICAgICAg
ICB2YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICB2YXIgYnV0
dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGJ1dHRvbi5jbGFz
c05hbWUgPSAic21hbGwtYnV0dG9uIjsKKyAgICAgICAgICAgIAorICAgICAgICBidXR0b24uYWRk
RXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHdpbmRvdy5z
aG93R3JhcGgodGVzdE5hbWUsIGF4aXNlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KTsK
KyAgICAgICAgfSk7CisgICAgICAgICAgICAKKyAgICAgICAgYnV0dG9uLnRleHRDb250ZW50ID0g
IkNsaWNrLi4uIjsKKyAgICAgICAgdGQuYXBwZW5kQ2hpbGQoYnV0dG9uKTsKKyAgICAgICAgcm93
LmFwcGVuZENoaWxkKHRkKTsKKyAgICB9LAorICAgIF9zaG93VGVzdCA6IGZ1bmN0aW9uKHRlc3RO
YW1lLCB0aXRsZXMsIHNhbXBsZXIsIGZpbmFsUmVzdWx0cykgeworICAgICAgICB2YXIgcm93ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKyAgICAgICAgdmFyIHRkID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgdGQudGV4dENvbnRlbnQgPSB0ZXN0TmFtZTsK
KyAgICAgICAgcm93LmFwcGVuZENoaWxkKHRkKTsKKyAgICAgICAgCisgICAgICAgIHZhciBheGlz
ZXMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgbWVhc3VyZSA9IDA7IG1lYXN1cmUgPCBzYW1wbGVy
LmV4cGVyaW1lbnRzLmxlbmd0aDsgKyttZWFzdXJlKSB7CisgICAgICAgICAgICB0aGlzLl9zaG93
VmFsdWUocm93LCB0ZXN0TmFtZSwgc2FtcGxlci5leHBlcmltZW50c1ttZWFzdXJlXS5tZWFuKCkp
OworICAgICAgICAgICAgdGhpcy5fc2hvd1ZhbHVlKHJvdywgdGVzdE5hbWUsIHNhbXBsZXIuZXhw
ZXJpbWVudHNbbWVhc3VyZV0uY29uZmlkZW5jZUludGVydmFsRGVsdGEoOTUpKTsKKyAgICAgICAg
ICAgIHRoaXMuX3Nob3dWYWx1ZShyb3csIHRlc3ROYW1lLCBzYW1wbGVyLmV4cGVyaW1lbnRzW21l
YXN1cmVdLmNvbmNlcm4oNSkpOworICAgICAgICAgICAgdGhpcy5fc2hvd1ZhbHVlKHJvdywgdGVz
dE5hbWUsIHNhbXBsZXIuZXhwZXJpbWVudHNbbWVhc3VyZV0uc3RhbmRhcmREZXZpYXRpb24oKSk7
CisgICAgICAgICAgICB0aGlzLl9zaG93VmFsdWUocm93LCB0ZXN0TmFtZSwgc2FtcGxlci5leHBl
cmltZW50c1ttZWFzdXJlXS5wZXJjZW50YWdlKCkpOworICAgICAgICAgICAgYXhpc2VzLnB1c2go
dGl0bGVzW21lYXN1cmUgKyAxXS50ZXh0KTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3No
b3dWYWx1ZShyb3csIHRlc3ROYW1lLCBzYW1wbGVyLmV4cGVyaW1lbnRzWzBdLnNjb3JlKDUpKTsK
KworICAgICAgICBpZiAoZmluYWxSZXN1bHRzKQorICAgICAgICAgICAgdGhpcy5fc2hvd1NhbXBs
ZXMocm93LCB0ZXN0TmFtZSwgYXhpc2VzLCBzYW1wbGVyLnNhbXBsZXMsIHNhbXBsZXIuc2FtcGxp
bmdUaW1lT2Zmc2V0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fc2hvd0VtcHR5
IChyb3csIHRlc3ROYW1lKTsKKyAgICAgICAgICAgIAorICAgICAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQocm93KTsKKyAgICB9LAorICAgIF9zaG93U3VpdGUgOiBmdW5jdGlvbihzdWl0ZSwg
c3VpdGVTYW1wbGVycykgeworICAgICAgICB2YXIgc2NvcmVzID0gW107ICAgICAgICAKKyAgICAg
ICAgZm9yICh2YXIgdGVzdE5hbWUgaW4gc3VpdGVTYW1wbGVycykgeworICAgICAgICAgICAgdmFy
IHRlc3QgPSB0ZXN0RnJvbU5hbWUoc3VpdGUsIHRlc3ROYW1lKTsKKyAgICAgICAgICAgIHZhciBz
YW1wbGVyID0gc3VpdGVTYW1wbGVyc1t0ZXN0TmFtZV07IAorICAgICAgICAgICAgdGhpcy5fc2hv
d1Rlc3QodGVzdE5hbWUsIHN1aXRlLnRpdGxlcywgc2FtcGxlciwgdHJ1ZSk7CisgICAgICAgICAg
ICBzY29yZXMucHVzaChzYW1wbGVyLmV4cGVyaW1lbnRzWzBdLnNjb3JlKDUpKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gc2NvcmVzOworICAgIH0sCisgICAgc2hvd1JlY29yZCA6IGZ1bmN0
aW9uKHN1aXRlLCB0ZXN0LCBzYW1wbGVyLCBtZXNzYWdlKSB7CisgICAgICAgIHRoaXMuY2xlYXIo
KTsgICAgICAgIAorICAgICAgICB0aGlzLl9zaG93SGVhZGVyKCIiLCBzdWl0ZS50aXRsZXMsIG1l
c3NhZ2UpOworICAgICAgICB0aGlzLl9zaG93VGVzdCh0ZXN0Lm5hbWUsIHN1aXRlLnRpdGxlcywg
c2FtcGxlciwgZmFsc2UpOyAgICAgICAgCisgICAgfSwKKyAgICBzaG93SXRlcmF0aW9ucyA6IGZ1
bmN0aW9uKGl0ZXJhdGlvbnNTYW1wbGVycykgeworICAgICAgICB0aGlzLmNsZWFyKCk7CisKKyAg
ICAgICAgdmFyIHNjb3JlcyA9IFtdOworICAgICAgICB2YXIgdGl0bGVzID0gbnVsbDsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVyYXRpb25zU2FtcGxlcnMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgIGZvciAodmFyIHN1aXRlTmFtZSBpbiBpdGVyYXRpb25zU2FtcGxlcnNbaV0p
IHsKKyAgICAgICAgICAgICAgICB2YXIgc3VpdGUgPSBzdWl0ZUZyb21OYW1lKHN1aXRlTmFtZSk7
CisgICAgICAgICAgICAgICAgaWYgKHRpdGxlcyAhPSBzdWl0ZS50aXRsZXMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGl0bGVzID0gc3VpdGUudGl0bGVzOworICAgICAgICAgICAgICAgICAgICB0
aGlzLl9zaG93SGVhZGVyKHN1aXRlTmFtZSwgdGl0bGVzLCAiIik7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgdmFyIHN1aXRlU2NvcmVzID0gdGhpcy5fc2hvd1N1aXRlKHN1
aXRlLCBpdGVyYXRpb25zU2FtcGxlcnNbaV1bc3VpdGVOYW1lXSk7CisgICAgICAgICAgICAgICAg
c2NvcmVzLnB1c2guYXBwbHkoc2NvcmVzLCBzdWl0ZVNjb3Jlcyk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBTdGF0aXN0aWNzLmdlb21ldHJpY01l
YW4oc2NvcmVzKTsKKyAgICB9Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
cmVzb3VyY2VzL3N0YXRpc3RpY3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTU0IEBACit2YXIgU3RhdGlzdGljcyA9IHsKKyAgICBzYW1wbGVNZWFu
IDogZnVuY3Rpb24obnVtYmVyT2ZTYW1wbGVzLCBzdW0pIHsKKyAgICAgICAgaWYgKG51bWJlck9m
U2FtcGxlcyA8IDEpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHN1bSAv
IG51bWJlck9mU2FtcGxlczsKKyAgICB9LAorICAgIHNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uIDog
ZnVuY3Rpb24obnVtYmVyT2ZTYW1wbGVzLCBzdW0sIHNxdWFyZVN1bSkgeworICAgICAgICBpZiAo
bnVtYmVyT2ZTYW1wbGVzIDwgMikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gTWF0aC5zcXJ0KChzcXVhcmVTdW0gLSBzdW0gKiBzdW0gLyBudW1iZXJPZlNhbXBsZXMpIC8g
KG51bWJlck9mU2FtcGxlcyAtIDEpKSA7CisgICAgfSwKKyAgICBnZW9tZXRyaWNNZWFuIDogZnVu
Y3Rpb24odmFsdWVzKSB7CisgICAgICAgIGlmICghdmFsdWVzLmxlbmd0aCkKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICB2YXIgcHJvZHVjdCA9IHZhbHVlcy5yZWR1Y2UoZnVuY3Rpb24o
YSwgYikgeyByZXR1cm4gYSAqIGI7IH0pOworICAgICAgICByZXR1cm4gTWF0aC5wb3cocHJvZHVj
dCwgMSAvIHZhbHVlcy5sZW5ndGgpOworICAgIH0sCisgICAgLy8gU2VlIGh0dHA6Ly9lbi53aWtp
cGVkaWEub3JnL3dpa2kvU3R1ZGVudCdzX3QtZGlzdHJpYnV0aW9uI1RhYmxlX29mX3NlbGVjdGVk
X3ZhbHVlcworICAgIC8vIFRoaXMgdGFibGUgY29udGFpbnMgb25lIHNpZGVkIChhLmsuYS4gdGFp
bCkgdmFsdWVzLgorICAgIHREaXN0cmlidXRpb25JbnZlcnNlQ0RGIDogeworICAgICAgICAwLjk6
IFsKKyAgICAgICAgICAgIDMuMDc3Njg0LCAxLjg4NTYxOCwgMS42Mzc3NDQsIDEuNTMzMjA2LCAx
LjQ3NTg4NCwgMS40Mzk3NTYsIDEuNDE0OTI0LCAxLjM5NjgxNSwgMS4zODMwMjksIDEuMzcyMTg0
LAorICAgICAgICAgICAgMS4zNjM0MzAsIDEuMzU2MjE3LCAxLjM1MDE3MSwgMS4zNDUwMzAsIDEu
MzQwNjA2LCAxLjMzNjc1NywgMS4zMzMzNzksIDEuMzMwMzkxLCAxLjMyNzcyOCwgMS4zMjUzNDEs
CisgICAgICAgICAgICAxLjMyMzE4OCwgMS4zMjEyMzcsIDEuMzE5NDYwLCAxLjMxNzgzNiwgMS4z
MTYzNDUsIDEuMzE0OTcyLCAxLjMxMzcwMywgMS4zMTI1MjcsIDEuMzExNDM0LCAxLjMxMDQxNSwK
KyAgICAgICAgICAgIDEuMzA5NDY0LCAxLjMwODU3MywgMS4zMDc3MzcsIDEuMzA2OTUyLCAxLjMw
NjIxMiwgMS4zMDU1MTQsIDEuMzA0ODU0LCAxLjMwNDIzMCwgMS4zMDM2MzksIDEuMzAzMDc3LAor
ICAgICAgICAgICAgMS4zMDI1NDMsIDEuMzAyMDM1LCAxLjMwMTU1MiwgMS4zMDEwOTAsIDEuMzAw
NjQ5LCAxLjMwMDIyOCwgMS4yOTk4MjUsIDEuMjk5NDM5LCAxLjI5OTA2OSwgMS4yOTg3MTQsCisK
KyAgICAgICAgICAgIDEuMjk4MzczLCAxLjI5ODA0NSwgMS4yOTc3MzAsIDEuMjk3NDI2LCAxLjI5
NzEzNCwgMS4yOTY4NTMsIDEuMjk2NTgxLCAxLjI5NjMxOSwgMS4yOTYwNjYsIDEuMjk1ODIxLAor
ICAgICAgICAgICAgMS4yOTU1ODUsIDEuMjk1MzU2LCAxLjI5NTEzNCwgMS4yOTQ5MjAsIDEuMjk0
NzEyLCAxLjI5NDUxMSwgMS4yOTQzMTUsIDEuMjk0MTI2LCAxLjI5Mzk0MiwgMS4yOTM3NjMsCisg
ICAgICAgICAgICAxLjI5MzU4OSwgMS4yOTM0MjEsIDEuMjkzMjU2LCAxLjI5MzA5NywgMS4yOTI5
NDEsIDEuMjkyNzkwLCAxLjI5MjY0MywgMS4yOTI1MDAsIDEuMjkyMzYwLCAxLjI5MjIyNCwKKyAg
ICAgICAgICAgIDEuMjkyMDkxLCAxLjI5MTk2MSwgMS4yOTE4MzUsIDEuMjkxNzExLCAxLjI5MTU5
MSwgMS4yOTE0NzMsIDEuMjkxMzU4LCAxLjI5MTI0NiwgMS4yOTExMzYsIDEuMjkxMDI5LAorICAg
ICAgICAgICAgMS4yOTA5MjQsIDEuMjkwODIxLCAxLjI5MDcyMSwgMS4yOTA2MjMsIDEuMjkwNTI3
LCAxLjI5MDQzMiwgMS4yOTAzNDAsIDEuMjkwMjUwLCAxLjI5MDE2MSwgMS4yOTAwNzVdLAorICAg
ICAgICAwLjk1OiBbCisgICAgICAgICAgICA2LjMxMzc1MiwgMi45MTk5ODYsIDIuMzUzMzYzLCAy
LjEzMTg0NywgMi4wMTUwNDgsIDEuOTQzMTgwLCAxLjg5NDU3OSwgMS44NTk1NDgsIDEuODMzMTEz
LCAxLjgxMjQ2MSwKKyAgICAgICAgICAgIDEuNzk1ODg1LCAxLjc4MjI4OCwgMS43NzA5MzMsIDEu
NzYxMzEwLCAxLjc1MzA1MCwgMS43NDU4ODQsIDEuNzM5NjA3LCAxLjczNDA2NCwgMS43MjkxMzMs
IDEuNzI0NzE4LAorICAgICAgICAgICAgMS43MjA3NDMsIDEuNzE3MTQ0LCAxLjcxMzg3MiwgMS43
MTA4ODIsIDEuNzA4MTQxLCAxLjcwNTYxOCwgMS43MDMyODgsIDEuNzAxMTMxLCAxLjY5OTEyNywg
MS42OTcyNjEsCisgICAgICAgICAgICAxLjY5NTUxOSwgMS42OTM4ODksIDEuNjkyMzYwLCAxLjY5
MDkyNCwgMS42ODk1NzIsIDEuNjg4Mjk4LCAxLjY4NzA5NCwgMS42ODU5NTQsIDEuNjg0ODc1LCAx
LjY4Mzg1MSwKKyAgICAgICAgICAgIDEuNjgyODc4LCAxLjY4MTk1MiwgMS42ODEwNzEsIDEuNjgw
MjMwLCAxLjY3OTQyNywgMS42Nzg2NjAsIDEuNjc3OTI3LCAxLjY3NzIyNCwgMS42NzY1NTEsIDEu
Njc1OTA1LAorCisgICAgICAgICAgICAxLjY3NTI4NSwgMS42NzQ2ODksIDEuNjc0MTE2LCAxLjY3
MzU2NSwgMS42NzMwMzQsIDEuNjcyNTIyLCAxLjY3MjAyOSwgMS42NzE1NTMsIDEuNjcxMDkzLCAx
LjY3MDY0OSwKKyAgICAgICAgICAgIDEuNjcwMjE5LCAxLjY2OTgwNCwgMS42Njk0MDIsIDEuNjY5
MDEzLCAxLjY2ODYzNiwgMS42NjgyNzEsIDEuNjY3OTE2LCAxLjY2NzU3MiwgMS42NjcyMzksIDEu
NjY2OTE0LAorICAgICAgICAgICAgMS42NjY2MDAsIDEuNjY2Mjk0LCAxLjY2NTk5NiwgMS42NjU3
MDcsIDEuNjY1NDI1LCAxLjY2NTE1MSwgMS42NjQ4ODUsIDEuNjY0NjI1LCAxLjY2NDM3MSwgMS42
NjQxMjUsCisgICAgICAgICAgICAxLjY2Mzg4NCwgMS42NjM2NDksIDEuNjYzNDIwLCAxLjY2MzE5
NywgMS42NjI5NzgsIDEuNjYyNzY1LCAxLjY2MjU1NywgMS42NjIzNTQsIDEuNjYyMTU1LCAxLjY2
MTk2MSwKKyAgICAgICAgICAgIDEuNjYxNzcxLCAxLjY2MTU4NSwgMS42NjE0MDQsIDEuNjYxMjI2
LCAxLjY2MTA1MiwgMS42NjA4ODEsIDEuNjYwNzE1LCAxLjY2MDU1MSwgMS42NjAzOTEsIDEuNjYw
MjM0XSwKKyAgICAgICAgMC45NzU6IFsKKyAgICAgICAgICAgIDEyLjcwNjIwNSwgNC4zMDI2NTMs
IDMuMTgyNDQ2LCAyLjc3NjQ0NSwgMi41NzA1ODIsIDIuNDQ2OTEyLCAyLjM2NDYyNCwgMi4zMDYw
MDQsIDIuMjYyMTU3LCAyLjIyODEzOSwKKyAgICAgICAgICAgIDIuMjAwOTg1LCAyLjE3ODgxMywg
Mi4xNjAzNjksIDIuMTQ0Nzg3LCAyLjEzMTQ1MCwgMi4xMTk5MDUsIDIuMTA5ODE2LCAyLjEwMDky
MiwgMi4wOTMwMjQsIDIuMDg1OTYzLAorICAgICAgICAgICAgMi4wNzk2MTQsIDIuMDczODczLCAy
LjA2ODY1OCwgMi4wNjM4OTksIDIuMDU5NTM5LCAyLjA1NTUyOSwgMi4wNTE4MzEsIDIuMDQ4NDA3
LCAyLjA0NTIzMCwgMi4wNDIyNzIsCisgICAgICAgICAgICAyLjAzOTUxMywgMi4wMzY5MzMsIDIu
MDM0NTE1LCAyLjAzMjI0NSwgMi4wMzAxMDgsIDIuMDI4MDk0LCAyLjAyNjE5MiwgMi4wMjQzOTQs
IDIuMDIyNjkxLCAyLjAyMTA3NSwKKyAgICAgICAgICAgIDIuMDE5NTQxLCAyLjAxODA4MiwgMi4w
MTY2OTIsIDIuMDE1MzY4LCAyLjAxNDEwMywgMi4wMTI4OTYsIDIuMDExNzQxLCAyLjAxMDYzNSwg
Mi4wMDk1NzUsIDIuMDA4NTU5LAorCisgICAgICAgICAgICAyLjAwNzU4NCwgMi4wMDY2NDcsIDIu
MDA1NzQ2LCAyLjAwNDg3OSwgMi4wMDQwNDUsIDIuMDAzMjQxLCAyLjAwMjQ2NSwgMi4wMDE3MTcs
IDIuMDAwOTk1LCAyLjAwMDI5OCwKKyAgICAgICAgICAgIDEuOTk5NjI0LCAxLjk5ODk3MiwgMS45
OTgzNDEsIDEuOTk3NzMwLCAxLjk5NzEzOCwgMS45OTY1NjQsIDEuOTk2MDA4LCAxLjk5NTQ2OSwg
MS45OTQ5NDUsIDEuOTk0NDM3LAorICAgICAgICAgICAgMS45OTM5NDMsIDEuOTkzNDY0LCAxLjk5
Mjk5NywgMS45OTI1NDMsIDEuOTkyMTAyLCAxLjk5MTY3MywgMS45OTEyNTQsIDEuOTkwODQ3LCAx
Ljk5MDQ1MCwgMS45OTAwNjMsCisgICAgICAgICAgICAxLjk4OTY4NiwgMS45ODkzMTksIDEuOTg4
OTYwLCAxLjk4ODYxMCwgMS45ODgyNjgsIDEuOTg3OTM0LCAxLjk4NzYwOCwgMS45ODcyOTAsIDEu
OTg2OTc5LCAxLjk4NjY3NSwKKyAgICAgICAgICAgIDEuOTg2Mzc3LCAxLjk4NjA4NiwgMS45ODU4
MDIsIDEuOTg1NTIzLCAxLjk4NTI1MSwgMS45ODQ5ODQsIDEuOTg0NzIzLCAxLjk4NDQ2NywgMS45
ODQyMTcsIDEuOTgzOTcyXSwKKyAgICAgICAgMC45OTogWworICAgICAgICAgICAgMzEuODIwNTE2
LCA2Ljk2NDU1NywgNC41NDA3MDMsIDMuNzQ2OTQ3LCAzLjM2NDkzMCwgMy4xNDI2NjgsIDIuOTk3
OTUyLCAyLjg5NjQ1OSwgMi44MjE0MzgsIDIuNzYzNzY5LAorICAgICAgICAgICAgMi43MTgwNzks
IDIuNjgwOTk4LCAyLjY1MDMwOSwgMi42MjQ0OTQsIDIuNjAyNDgwLCAyLjU4MzQ4NywgMi41NjY5
MzQsIDIuNTUyMzgwLCAyLjUzOTQ4MywgMi41Mjc5NzcsCisgICAgICAgICAgICAyLjUxNzY0OCwg
Mi41MDgzMjUsIDIuNDk5ODY3LCAyLjQ5MjE1OSwgMi40ODUxMDcsIDIuNDc4NjMwLCAyLjQ3MjY2
MCwgMi40NjcxNDAsIDIuNDYyMDIxLCAyLjQ1NzI2MiwKKyAgICAgICAgICAgIDIuNDUyODI0LCAy
LjQ0ODY3OCwgMi40NDQ3OTQsIDIuNDQxMTUwLCAyLjQzNzcyMywgMi40MzQ0OTQsIDIuNDMxNDQ3
LCAyLjQyODU2OCwgMi40MjU4NDEsIDIuNDIzMjU3LAorICAgICAgICAgICAgMi40MjA4MDMsIDIu
NDE4NDcwLCAyLjQxNjI1MCwgMi40MTQxMzQsIDIuNDEyMTE2LCAyLjQxMDE4OCwgMi40MDgzNDUs
IDIuNDA2NTgxLCAyLjQwNDg5MiwgMi40MDMyNzIsCisKKyAgICAgICAgICAgIDIuNDAxNzE4LCAy
LjQwMDIyNSwgMi4zOTg3OTAsIDIuMzk3NDEwLCAyLjM5NjA4MSwgMi4zOTQ4MDEsIDIuMzkzNTY4
LCAyLjM5MjM3NywgMi4zOTEyMjksIDIuMzkwMTE5LAorICAgICAgICAgICAgMi4zODkwNDcsIDIu
Mzg4MDExLCAyLjM4NzAwOCwgMi4zODYwMzcsIDIuMzg1MDk3LCAyLjM4NDE4NiwgMi4zODMzMDIs
IDIuMzgyNDQ2LCAyLjM4MTYxNSwgMi4zODA4MDcsCisgICAgICAgICAgICAyLjM4MDAyNCwgMi4z
NzkyNjIsIDIuMzc4NTIyLCAyLjM3NzgwMiwgMi4zNzcxMDIsIDIuMzc2NDIwLCAyLjM3NTc1Nywg
Mi4zNzUxMTEsIDIuMzc0NDgyLCAyLjM3Mzg2OCwKKyAgICAgICAgICAgIDIuMzczMjcwLCAyLjM3
MjY4NywgMi4zNzIxMTksIDIuMzcxNTY0LCAyLjM3MTAyMiwgMi4zNzA0OTMsIDIuMzY5OTc3LCAy
LjM2OTQ3MiwgMi4zNjg5NzksIDIuMzY4NDk3LAorICAgICAgICAgICAgMi4zNjgwMjYsIDIuMzY3
NTY2LCAyLjM2NzExNSwgMi4zNjY2NzQsIDIuMzY2MjQzLCAyLjM2NTgyMSwgMi4zNjU0MDcsIDIu
MzY1MDAyLCAyLjM2NDYwNiwgMi4zNjQyMTddCisgICAgfQorfQorCitmdW5jdGlvbiBFeHBlcmlt
ZW50KCkgeworICAgIHRoaXMuX2luaXQoKTsKKyAgICB0aGlzLl9tYXhIZWFwID0gQWxnb3JpdGht
LmNyZWF0ZU1heEhlYXAoMTAwKTsKK30KKworRXhwZXJpbWVudC5wcm90b3R5cGUgPSB7CisgICAg
X2luaXQgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5fc3VtID0gMDsKKyAgICAgICAgdGhp
cy5fc3F1YXJlU3VtID0gMDsKKyAgICAgICAgdGhpcy5fbnVtYmVyT2ZTYW1wbGVzID0gMDsKKyAg
ICB9LAorICAgIC8vIENhbGxlZCBhZnRlciBhIHdhcm0tdXAgcGVyaW9kCisgICAgc3RhcnRTYW1w
bGluZyA6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgbWVhbiA9IHRoaXMubWVhbigpOworICAg
ICAgICB0aGlzLl9pbml0KCk7CisgICAgICAgIHRoaXMuX21heEhlYXAuaW5pdCgpOworICAgICAg
ICB0aGlzLnNhbXBsZShtZWFuKTsKKyAgICB9LAorICAgIHNhbXBsZSA6IGZ1bmN0aW9uKHZhbHVl
KSB7CisgICAgICAgIHRoaXMuX3N1bSArPSB2YWx1ZTsKKyAgICAgICAgdGhpcy5fc3F1YXJlU3Vt
ICs9IHZhbHVlICogdmFsdWU7CisgICAgICAgIHRoaXMuX21heEhlYXAucHVzaCh2YWx1ZSk7Cisg
ICAgICAgICsrdGhpcy5fbnVtYmVyT2ZTYW1wbGVzOworICAgIH0sCisgICAgbWVhbiA6IGZ1bmN0
aW9uKCkgeworICAgICAgICByZXR1cm4gU3RhdGlzdGljcy5zYW1wbGVNZWFuKHRoaXMuX251bWJl
ck9mU2FtcGxlcywgdGhpcy5fc3VtKTsKKyAgICB9LAorICAgIHN0YW5kYXJkRGV2aWF0aW9uIDog
ZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBTdGF0aXN0aWNzLnNhbXBsZVN0YW5kYXJkRGV2
aWF0aW9uKHRoaXMuX251bWJlck9mU2FtcGxlcywgdGhpcy5fc3VtLCB0aGlzLl9zcXVhcmVTdW0p
OworICAgIH0sCisgICAgcGVyY2VudGFnZSA6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgbWVh
biA9IHRoaXMubWVhbigpOworICAgICAgICByZXR1cm4gbWVhbiA/IHRoaXMuc3RhbmRhcmREZXZp
YXRpb24oKSAqIDEwMCAvIG1lYW4gOiAwOworICAgIH0sCisgICAgY29uZmlkZW5jZUludGVydmFs
RGVsdGEgOiBmdW5jdGlvbihjb25maWRlbmNlTGV2ZWwpIHsKKyAgICAgICAgaWYgKHRoaXMuX251
bWJlck9mU2FtcGxlcyA8IDIpCisgICAgICAgICAgICByZXR1cm4gTmFOOworICAgICAgICAKKyAg
ICAgICAgdmFyIHByb2JhYmlsaXR5ID0gKDEwMCAtIDIgKiAoMTAwIC0gY29uZmlkZW5jZUxldmVs
KSkgLyAxMDA7CisgICAgICAgIGlmICghKHByb2JhYmlsaXR5IGluIFN0YXRpc3RpY3MudERpc3Ry
aWJ1dGlvbkludmVyc2VDREYpKQorICAgICAgICAgICAgdGhyb3cgJ1Vuc3VwcG9ydGVkIGNvbmZp
ZGVuY2UgbGV2ZWwnOworCisgICAgICAgIHZhciBjZGZGb3JQcm9iYWJpbGl0eSA9IFN0YXRpc3Rp
Y3MudERpc3RyaWJ1dGlvbkludmVyc2VDREZbcHJvYmFiaWxpdHldOworICAgICAgICB2YXIgZGVn
cmVlc09mRnJlZWRvbSA9IE1hdGgubWluKHRoaXMuX251bWJlck9mU2FtcGxlcyAtIDEsIGNkZkZv
clByb2JhYmlsaXR5Lmxlbmd0aCk7CisgICAgICAgIAorICAgICAgICB2YXIgcXVhbnRpbGUgPSBj
ZGZGb3JQcm9iYWJpbGl0eVtkZWdyZWVzT2ZGcmVlZG9tIC0gMV07IC8vIFRoZSBmaXJzdCBlbnRy
eSBpcyBmb3IgdGhlIG9uZSBkZWdyZWUgb2YgZnJlZWRvbS4KKyAgICAgICAgcmV0dXJuIHF1YW50
aWxlICogU3RhdGlzdGljcy5zYW1wbGVTdGFuZGFyZERldmlhdGlvbih0aGlzLl9udW1iZXJPZlNh
bXBsZXMsIHRoaXMuX3N1bSwgdGhpcy5fc3F1YXJlU3VtKSAvIE1hdGguc3FydCh0aGlzLl9udW1i
ZXJPZlNhbXBsZXMpOworICAgIH0sCisgICAgY29uY2VybiA6IGZ1bmN0aW9uKHBlcmNlbnRhZ2Up
IHsKKyAgICAgICAgdmFyIHNpemUgPSB0aGlzLl9udW1iZXJPZlNhbXBsZXMgKiBwZXJjZW50YWdl
IC8gMTAwOworICAgICAgICB2YXIgdmFsdWVzID0gdGhpcy5fbWF4SGVhcC52YWx1ZXMoc2l6ZSk7
CisgICAgICAgIHJldHVybiB2YWx1ZXMubGVuZ3RoID8gdmFsdWVzLnJlZHVjZShmdW5jdGlvbihh
LCBiKSB7IHJldHVybiBhICsgYjsgfSkgLyB2YWx1ZXMubGVuZ3RoIDogMDsKKyAgICB9LAorICAg
IHNjb3JlIDogZnVuY3Rpb24ocGVyY2VudGFnZSkgeworICAgICAgICByZXR1cm4gU3RhdGlzdGlj
cy5nZW9tZXRyaWNNZWFuKFt0aGlzLm1lYW4oKSwgTWF0aC5tYXgodGhpcy5jb25jZXJuKHBlcmNl
bnRhZ2UpLCAxKV0pOworICAgIH0KK30KKworZnVuY3Rpb24gU2FtcGxlcihjb3VudCkgeworICAg
IHRoaXMuZXhwZXJpbWVudHMgPSBbXTsKKyAgICB3aGlsZSAoY291bnQtLSkKKyAgICAgICAgdGhp
cy5leHBlcmltZW50cy5wdXNoKG5ldyBFeHBlcmltZW50KTsKKyAgICB0aGlzLnNhbXBsZXMgPSBb
XTsKKyAgICB0aGlzLnNhbXBsaW5nVGltZU9mZnNldCA9IDA7Cit9CisKK1NhbXBsZXIucHJvdG90
eXBlID0geworICAgIHN0YXJ0U2FtcGxpbmcgOiBmdW5jdGlvbih0aW1lT2Zmc2V0KSB7CisgICAg
ICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmV4cGVyaW1lbnRzLmxlbmd0aDsg
KytpbmRleCkKKyAgICAgICAgICAgIHRoaXMuZXhwZXJpbWVudHNbaW5kZXhdLnN0YXJ0U2FtcGxp
bmcoKTsKKyAgICAgICAgICAgIAorICAgICAgICB0aGlzLnNhbXBsaW5nVGltZU9mZnNldCA9IHRp
bWVPZmZzZXQgLyAxMDAwOworICAgIH0sCisgICAgc2FtcGxlIDogZnVuY3Rpb24odGltZU9mZnNl
dCwgdmFsdWVzKSB7CisgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoIDwgdGhpcy5leHBlcmltZW50
cy5sZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAiTm90IGVub3VnaCBzYW1wbGUgcG9pbnRzIjsK
KyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXgg
PCB0aGlzLmV4cGVyaW1lbnRzLmxlbmd0aDsgKytpbmRleCkKKyAgICAgICAgICAgIHRoaXMuZXhw
ZXJpbWVudHNbaW5kZXhdLnNhbXBsZSh2YWx1ZXNbaW5kZXhdKTsKKyAgICAgICAgICAgIAorICAg
ICAgICB0aGlzLnNhbXBsZXMucHVzaCh7IHRpbWVPZmZzZXQ6IHRpbWVPZmZzZXQgLyAxMDAwLCB2
YWx1ZXM6IHZhbHVlcyB9KTsKKyAgICB9Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcnVubmVyL2FuaW1vbWV0ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcnVubmVyL2FuaW1vbWV0ZXIuaHRtbAkocmV2aXNpb24gMCkKKysrIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvYW5pbW9tZXRlci5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvYW5pbW9tZXRlci5jc3Mi
PgorICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMv
ZDMvMy41LjUvZDMubWluLmpzIiBkZWZlcj48L3NjcmlwdD4gIAorICA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiIGRlZmVyPjwvc2NyaXB0PiAgCisgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvbWFpbi5qcyIgZGVmZXI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvdGVzdHMuanMiIGRlZmVyPSIiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMiIGRlZmVyPjwvc2NyaXB0PgorICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2FuaW1vbWV0ZXIuanMiIGRlZmVyPjwvc2NyaXB0PgorICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2dyYXBoLmpzIiBkZWZlcj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
ICA8bWFpbj4KKyAgICA8c2VjdGlvbiBpZD0iaG9tZSIgY2xhc3M9InNlbGVjdGVkIj4KKyAgICAg
IDxwPgorICAgICAgICBBbmltb21ldGVyIGlzIGEgYnJvd3NlciBiZW5jaG1hcmsgdGhhdCBtZWFz
dXJlcyB0aGUgY29tcGxleGl0eSBvZiBhbiBhbmltYXRpb24gZm9yCisgICAgICAgIHdoaWNoIGEg
YnJvd3NlciBjYW4gYWNoaWV2ZSA1MCBGUFMgKGZyYW1lIHBlciBzZWNvbmQpLiBJdCB1c2VzIGFk
YXB0aXZlIGFuaW1hdGlvbnMKKyAgICAgICAgdG8gdHVuZSB0aGVpciBjb21wbGV4aXRpZXMgdG8g
c3RheSBjbG9zZSB0byA1MCBGUFMuCisgICAgICA8L3A+CisgICAgICA8ZGl2IGNsYXNzPSJvcHRp
b25zIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29sdW1uIj4KKyAgICAgICAgICA8bGFiZWw+PGlu
cHV0IGlkPSJodG1sLXN1aXRlIiB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD4gSFRNTCBlbGVtZW50
cyBzdWl0ZTwvbGFiZWw+PGJyPgorICAgICAgICAgIDxsYWJlbD48aW5wdXQgaWQ9ImNhbnZhcy1z
dWl0ZSIgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+IENhbnZhcyBkcmF3aW5ncyBzdWl0ZTwvbGFi
ZWw+PGJyPgorICAgICAgICAgIDxsYWJlbD48aW5wdXQgaWQ9InN2Zy1zdWl0ZSIgdHlwZT0iY2hl
Y2tib3giIGNoZWNrZWQ+IFNWRyBlbGVtZW50cyBzdWl0ZTwvbGFiZWw+CisgICAgICAgIDwvZGl2
PgorICAgICAgICA8ZGl2PgorICAgICAgICAgIDxsYWJlbD5UZXN0IGludGVydmFsOiA8aW5wdXQg
aWQ9InRlc3QtaW50ZXJ2YWwiIHR5cGU9Im51bWJlciIgdmFsdWU9IjMwIj4gc2Vjb25kczwvbGFi
ZWw+PGJyPgorICAgICAgICAgIDxsYWJlbD5GcmFtZSByYXRlOiA8aW5wdXQgaWQ9ImZyYW1lLXJh
dGUiIHR5cGU9Im51bWJlciIgdmFsdWU9IjUwIj4gZnBzPC9sYWJlbD48YnI+CisgICAgICAgICAg
PGxhYmVsPjxpbnB1dCBpZD0iZXN0aW1hdGVkLWZyYW1lLXJhdGUiIHR5cGU9ImNoZWNrYm94IiBj
aGVja2VkPiBFc3RpbWF0ZWQgRnJhbWUgUmF0ZTwvbGFiZWw+PGJyPgorICAgICAgICAgIDxsYWJl
bD48aW5wdXQgaWQ9ImZpeC10ZXN0LWNvbXBsZXhpdHkiIHR5cGU9ImNoZWNrYm94Ij4gRml4IHRl
c3QgY29tcGxleGl0eSBhZnRlciB3YXJtdXA8L2xhYmVsPgorICAgICAgICA8L2Rpdj4KKyAgICAg
IDwvZGl2PgorICAgICAgPGRpdiBjbGFzcz0iYnV0dG9ucyI+CisgICAgICAgIDxidXR0b24gb25j
bGljaz0ic3RhcnRUZXN0KCkiPlN0YXJ0IFRlc3Q8L2J1dHRvbj4KKyAgICAgIDwvZGl2PgorICAg
IDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbiBpZD0icnVubmluZyI+CisgICAgICA8ZGl2IGlkPSJ0
ZXN0Q29udGFpbmVyIj48L2Rpdj4KKyAgICAgIDxkaXYgaWQ9InByb2dyZXNzIj4KKyAgICAgICAg
PGRpdiBpZD0icHJvZ3Jlc3MtY29tcGxldGVkIj48L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgICAg
PGRpdiBpZD0icmVjb3JkIj4KKyAgICAgICAgPHRhYmxlIGNsYXNzPSJyZWNvcmQtdGFibGUiPjwv
dGFibGU+CisgICAgICA8L2Rpdj4KKyAgICA8L3NlY3Rpb24+CisgICAgPHNlY3Rpb24gaWQ9InJl
c3VsdHMiPgorICAgICAgPGgxPlJlc3VsdHM8L2gxPgorICAgICAgPHRhYmxlIGNsYXNzPSJyZXN1
bHRzLXRhYmxlIj48L3RhYmxlPgorICAgICAgPGRpdiBjbGFzcz0iYnV0dG9ucyI+CisgICAgICAg
IDxidXR0b24gb25jbGljaz0ic3RhcnRUZXN0KCkiPlRlc3QgQWdhaW48L2J1dHRvbj4KKyAgICAg
IDwvZGl2PgorICAgIDwvc2VjdGlvbj4gIAorICAgIDxzZWN0aW9uIGlkPSJncmFwaCI+CisgICAg
ICA8aDE+R3JhcGg8L2gxPgorICAgICAgPGRpdiBpZD0iZ3JhcGhDb250YWluZXIiPjwvZGl2Pgor
ICAgICAgPGRpdiBjbGFzcz0iYnV0dG9ucyI+CisgICAgICAgIDxidXR0b24gb25jbGljaz0ic2hv
d1Jlc3VsdHMoKSI+UmVzdWx0czwvYnV0dG9uPgorICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InN0
YXJ0VGVzdCgpIj5UZXN0IEFnYWluPC9idXR0b24+ICAgICAgICAKKyAgICAgIDwvZGl2PgorICAg
IDwvc2VjdGlvbj4gIAorICA8L21haW4+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9h
bmltb21ldGVyLmNzcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMjE0IEBACitib2R5IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoOTYsIDk2LCA5Nik7
CisgICAgY29sb3I6IHJnYigyMzUsIDIzNSwgMjM1KTsKKyAgICBmb250LWZhbWlseTogIkhlbHZl
dGljYSBOZXVlIiwgSGVsdmV0aWNhLCBWZXJkYW5hLCBzYW5zLXNlcmlmOworfQorCittYWluIHsK
KyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgd2lkdGg6
IDgwMHB4OworICAgIGhlaWdodDogNjAwcHg7CisgICAgdG9wOiA1MCU7CisgICAgbGVmdDogNTAl
OworICAgIG1hcmdpbi10b3A6IC0zMjFweDsKKyAgICBtYXJnaW4tbGVmdDogLTQyMXB4OworICAg
IHBhZGRpbmc6IDE1cHg7CisgICAgYm9yZGVyOiA2cHggc29saWQgcmdiKDIzNSwgMjM1LCAyMzUp
OworICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7Cit9CisKK2xhYmVsLCBwIHsKKyAgICBmb250LXNp
emU6IDE2cHg7CisgICAgbGluZS1oZWlnaHQ6IDIxcHg7Cit9CisKK3NlY3Rpb24geworICAgIGRp
c3BsYXk6IG5vbmU7Cit9CisKK3NlY3Rpb24gPiBwIHsKKyAgICBtYXJnaW46IDEwcHggMjBweDsK
K30KKworc2VjdGlvbiNob21lID4gcCB7CisgICAgbWFyZ2luOiAwIGF1dG87CisgICAgd2lkdGg6
IDcwJTsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKK3NlY3Rpb24jaG9tZSA+IHA6Zmly
c3QtY2hpbGQgeworICAgIG1hcmdpbi10b3A6IDE2MHB4OworICAgIHRleHQtYWxpZ246IGNlbnRl
cjsKK30KKworc2VjdGlvbi5zZWxlY3RlZCB7CisgICAgZGlzcGxheTogYmxvY2s7Cit9CisKKyN0
ZXN0Q29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAxNXB4Owor
ICAgIGxlZnQ6IDE1cHg7CisgICAgd2lkdGg6IDgwMHB4OworICAgIGhlaWdodDogNjAwcHg7Cit9
CisKK3NlY3Rpb24jcnVubmluZyA+ICNwcm9ncmVzcyB7CisgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgIGJvdHRvbTogLTZweDsKKyAgICBsZWZ0OiA2MHB4OworICAgIHJpZ2h0OiA2MHB4Owor
ICAgIGhlaWdodDogNnB4OworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxMjgsIDEyOCwgMTI4
KTsKKyAgICBib3JkZXItbGVmdDogNnB4IHNvbGlkIHJnYig0NiwgNTEsIDU1KTsKKyAgICBib3Jk
ZXItcmlnaHQ6IDZweCBzb2xpZCByZ2IoNDYsIDUxLCA1NSk7Cit9CisKK3NlY3Rpb24jcnVubmlu
ZyAjcHJvZ3Jlc3MtY29tcGxldGVkIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9w
OiAwOworICAgIGxlZnQ6IDA7CisgICAgaGVpZ2h0OiA2cHg7CisgICAgd2lkdGg6IDA7CisgICAg
YmFja2dyb3VuZC1jb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOworfQorCitzZWN0aW9uI3J1bm5p
bmcgPiAjcmVjb3JkIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYm90dG9tOiAtMTMw
cHg7CisgICAgbGVmdDogMHB4OworICAgIHJpZ2h0OiAwcHg7CisgICAgaGVpZ2h0OiA3NXB4Owor
ICAgIGNvbG9yOiByZ2IoMTI4LCAxMjgsIDEyOCk7CisgICAgcGFkZGluZzogMTVweDsKKyAgICBi
b3JkZXI6IDZweCBzb2xpZCByZ2IoMjM1LCAyMzUsIDIzNSk7CisgICAgYm9yZGVyLXJhZGl1czog
MjBweDsKK30KKworc2VjdGlvbiNydW5uaW5nID4gI3JlY29yZCA+IHRhYmxlLAorc2VjdGlvbiNy
ZXN1bHRzID4gdGFibGUgeworICAgIHdpZHRoOiAxMDAlOworfQorCitzZWN0aW9uI3J1bm5pbmcg
PiAjcmVjb3JkID4gdGFibGUgdGQsIHRoLAorc2VjdGlvbiNyZXN1bHRzID4gdGFibGUgdGQsIHRo
IHsKKyAgICBmb250LXNpemU6IDExcHg7CisgICAgYm9yZGVyOiAxcHggc29saWQgIzk4YmYyMTsK
KyAgICBwYWRkaW5nOiAzcHggNHB4IDJweCA0cHg7Cit9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCitzZWN0aW9uI3J1bm5pbmcgPiAjcmVjb3JkID4gdGFibGUg
dHIuYWx0LCB0ZAorc2VjdGlvbiNyZXN1bHRzID4gdGFibGUgdHIuYWx0LCB0ZCB7CisgICAgY29s
b3I6ICMwMDAwMDA7CisgICAgYmFja2dyb3VuZC1jb2xvcjogI0VBRjJEMzsKK30KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorc2VjdGlvbiNydW5uaW5nID4g
I3JlY29yZCA+IHRhYmxlIHRoLAorc2VjdGlvbiNyZXN1bHRzID4gdGFibGUgdGggeworICAgIGJh
Y2tncm91bmQtY29sb3I6ICNBN0M5NDI7IAorICAgIHRleHQtYWxpZ246IGNlbnRlcjsKK30KKwor
Lm9wdGlvbnMgeworICAgIG1hcmdpbjowIGF1dG87ICAgIAorICAgIG1hcmdpbi10b3A6IDMwcHg7
CisgICAgd2lkdGg6IDUwMHB4OworICAgIGFsaWduOiBjZW50ZXI7Cit9CisKKy5jb2x1bW4gewor
ICAgIHdpZHRoOiA0NSU7CisgICAgZmxvYXQ6bGVmdDsKKyAgICBoZWlnaHQ6IDEyMHB4OworICAg
IHBhZGRpbmc6NXB4OworfQorCitpbnB1dFt0eXBlPSJudW1iZXIiXSB7CisgICB3aWR0aDo1MHB4
OworfQorCisuYnV0dG9ucyB7CisgICAgbWFyZ2luLXRvcDogMTBweDsKKyAgICB0ZXh0LWFsaWdu
OiBjZW50ZXI7CisgICAgY2xlYXI6IGJvdGg7Cit9CisKK2J1dHRvbiB7CisgICAgLXdlYmtpdC1h
cHBlYXJhbmNlOiBub25lOworICAgIGJvcmRlcjogM3B4IHNvbGlkIHJnYigyMzUsIDIzNSwgMjM1
KTsKKyAgICBib3JkZXItcmFkaXVzOiAxMHB4OworICAgIG1pbi13aWR0aDogMjAwcHg7CisgICAg
cGFkZGluZzogNXB4IDIwcHg7CisgICAgbWFyZ2luOiAwIDQwcHg7CisgICAgZm9udC1zaXplOiAy
NXB4OworICAgIGNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7CisgICAgYmFja2dyb3VuZC1jb2xv
cjogdHJhbnNwYXJlbnQ7CisKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOworfQorCiti
dXR0b246YWN0aXZlIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7
CisgICAgY29sb3I6IHJnYig0NiwgNTEsIDU1KTsKKyAgICBib3JkZXItY29sb3I6IHJnYigyMzUs
IDIzNSwgMjM1KSAhaW1wb3J0YW50OworfQorCitidXR0b246Zm9jdXMgeworICAgIG91dGxpbmU6
IG5vbmU7CisgICAgYm9yZGVyLWNvbG9yOiByZ2IoMjMyLCA3OSwgNzkpOworfQorCisuc21hbGwt
YnV0dG9uIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CisgICAgYm9yZGVyOiAxcHgg
c29saWQgcmdiKDk2LCA5NiwgOTYpOworICAgIGJvcmRlci1yYWRpdXM6IDJweDsKKyAgICBwYWRk
aW5nOiAxcHggNHB4OworICAgIG1hcmdpbjogMCA0cHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
dHJhbnNwYXJlbnQ7CisgICAgY3Vyc29yOiBwb2ludGVyOworICAgIHRleHQtYWxpZ246IGNlbnRl
cjsKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOworfQorCisjZ3JhcGhDb250YWluZXIg
eworICBmb250OiAxMHB4IHNhbnMtc2VyaWY7CisgIGNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7
ICAKK30KKworLmF4aXMgcGF0aCwKKy5heGlzIGxpbmUgeworICBmaWxsOiBub25lOworICBzdHJv
a2U6IHJnYigyMzUsIDIzNSwgMjM1KTsKKyAgc2hhcGUtcmVuZGVyaW5nOiBjcmlzcEVkZ2VzOwor
fQorCisubGVmdC1zYW1wbGVzIHsKKyAgZmlsbDogbm9uZTsKKyAgc3Ryb2tlOiBzdGVlbGJsdWU7
CisgIHN0cm9rZS13aWR0aDogMS41cHg7Cit9CisKKy5yaWdodC1zYW1wbGVzIHsKKyAgICBmaWxs
OiBub25lOworICAgIHN0cm9rZTogcmVkOworICAgIHN0cm9rZS13aWR0aDogMS41cHg7Cit9CisK
Ky5zbWFwbGUtdGltZSB7CisgICAgZmlsbDogbm9uZTsKKyAgICBzdHJva2U6IGdyZWVuOworICAg
IHN0cm9rZS13aWR0aDogMS41cHg7Cit9CisKKy5sZWZ0LW1lYW4geworICAgIGZpbGw6IG5vbmU7
CisgICAgc3Ryb2tlOiB5ZWxsb3c7CisgICAgc3Ryb2tlLXdpZHRoOiAxLjVweDsKK30KKworLnJp
Z2h0LW1lYW4geworICAgIGZpbGw6IG5vbmU7CisgICAgc3Ryb2tlOiBtYWdlbnRhOworICAgIHN0
cm9rZS13aWR0aDogMS41cHg7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
cnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuanMJKHJldmlzaW9u
IDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmlt
b21ldGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA3IEBACit3aW5kb3cuYmVuY2ht
YXJrUnVubmVyQ2xpZW50ID0geworICAgIGl0ZXJhdGlvbkNvdW50OiAxLAorICAgIHRlc3RzQ291
bnQ6IG51bGwsCisgICAgcHJvZ3Jlc3NCYXI6IG51bGwsCisgICAgcmVjb3JkVGFibGU6IG51bGws
CisgICAgb3B0aW9uczogeyB0ZXN0SW50ZXJ2YWw6IDMwMDAwLCBmcmFtZVJhdGU6IDUwLCBlc3Rp
bWF0ZWRGcmFtZVJhdGU6IHRydWUsIGZpeFRlc3RDb21wbGV4aXR5IDogZmFsc2UgfSwKKyAgICBz
Y29yZTogMCwKKyAgICBfaXRlcmF0aW9uc1NhbXBsZXJzOiBbXSwKKyAgICBfcmVzdWx0c1RhYmxl
OiBudWxsLAorICAgIF9pc0Nocm9tZTogL0Nocm9tZS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50
KSAmJiAvR29vZ2xlIEluYy8udGVzdChuYXZpZ2F0b3IudmVuZG9yKSwKKyAgICBfaXNTYWZhcmk6
IC9TYWZhcmkvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgL0FwcGxlIENvbXB1dGVyLy50
ZXN0KG5hdmlnYXRvci52ZW5kb3IpLAorICAgIHdpbGxBZGRUZXN0RnJhbWU6IGZ1bmN0aW9uIChm
cmFtZSkgeworICAgICAgICB2YXIgbWFpbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm1haW4i
KTsKKyAgICAgICAgdmFyIHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShtYWluKTsKKyAgICAgICAg
ZnJhbWUuc3R5bGUubGVmdCA9IG1haW4ub2Zmc2V0TGVmdCArIHBhcnNlSW50KHN0eWxlLmJvcmRl
ckxlZnRXaWR0aCkgKyBwYXJzZUludChzdHlsZS5wYWRkaW5nTGVmdCkgKyAicHgiOworICAgICAg
ICBmcmFtZS5zdHlsZS50b3AgPSBtYWluLm9mZnNldFRvcCArIHBhcnNlSW50KHN0eWxlLmJvcmRl
clRvcFdpZHRoKSArIHBhcnNlSW50KHN0eWxlLnBhZGRpbmdUb3ApICsgInB4IjsKKyAgICB9LAor
ICAgIGRpZFJ1blRlc3Q6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGhpcy5wcm9ncmVzc0Jhci5p
bmNSYW5nZSgpOworICAgIH0sCisgICAgd2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb246IGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgdGhpcy5faXRlcmF0aW9uc1NhbXBsZXJzID0gW107CisgICAgICAgIHRo
aXMuX3Jlc3VsdHNUYWJsZSA9IG5ldyBSZWNvcmRUYWJsZShkb2N1bWVudC5xdWVyeVNlbGVjdG9y
QWxsKCIucmVzdWx0cy10YWJsZSIpWzBdKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMucHJvZ3Jl
c3NCYXIgPSBuZXcgUHJvZ3Jlc3NCYXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb2dyZXNz
LWNvbXBsZXRlZCIpLCB0aGlzLnRlc3RzQ291bnQpOworICAgICAgICB0aGlzLnJlY29yZFRhYmxl
ID0gbmV3IFJlY29yZFRhYmxlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5yZWNvcmQtdGFi
bGUiKVswXSk7CisgICAgfSwKKyAgICBkaWRSdW5TdWl0ZXM6IGZ1bmN0aW9uIChzdWl0ZXNTYW1w
bGVycykgeworICAgICAgICB0aGlzLl9pdGVyYXRpb25zU2FtcGxlcnMucHVzaChzdWl0ZXNTYW1w
bGVycyk7CisgICAgfSwKKyAgICBkaWRGaW5pc2hMYXN0SXRlcmF0aW9uOiBmdW5jdGlvbiAoKSB7
CisgICAgICAgIHRoaXMuc2NvcmUgPSB0aGlzLl9yZXN1bHRzVGFibGUuc2hvd0l0ZXJhdGlvbnMo
dGhpcy5faXRlcmF0aW9uc1NhbXBsZXJzLCAiIik7CisgICAgICAgIHNob3dSZXN1bHRzKCk7Cisg
ICAgfSwKKyAgICBicm93c2VyIDogZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh0aGlzLl9pc0No
cm9tZSkKKyAgICAgICAgICAgIHJldHVybiAiQ2hyb21lIjsKKyAgICAgICAgaWYgKHRoaXMuX2lz
U2FmYXJpKQorICAgICAgICAgICAgcmV0dXJuICJTYWZhcmkiOworICAgICAgICByZXR1cm4gIiI7
CisgICAgfQorfQorCitmdW5jdGlvbiBzaG93U2VjdGlvbihzZWN0aW9uSWRlbnRpZmllciwgcHVz
aFN0YXRlKSB7CisgICAgdmFyIGN1cnJlbnRTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoInNlY3Rpb24uc2VsZWN0ZWQiKTsKKyAgICBjb25zb2xlLmFzc2VydChjdXJyZW50
U2VjdGlvbkVsZW1lbnQpOworCisgICAgdmFyIG5ld1NlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoc2VjdGlvbklkZW50aWZpZXIpOworICAgIGNvbnNvbGUuYXNzZXJ0KG5l
d1NlY3Rpb25FbGVtZW50KTsKKworICAgIGN1cnJlbnRTZWN0aW9uRWxlbWVudC5jbGFzc0xpc3Qu
cmVtb3ZlKCJzZWxlY3RlZCIpOworICAgIG5ld1NlY3Rpb25FbGVtZW50LmNsYXNzTGlzdC5hZGQo
InNlbGVjdGVkIik7CisKKyAgICBpZiAocHVzaFN0YXRlKQorICAgICAgICBoaXN0b3J5LnB1c2hT
dGF0ZSh7c2VjdGlvbjogc2VjdGlvbklkZW50aWZpZXJ9LCBkb2N1bWVudC50aXRsZSk7Cit9CisK
K2Z1bmN0aW9uIHN0YXJ0QmVuY2htYXJrKCkgeworICAgIHZhciBjaGVja2JveGVzID0gWyAKKyAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImh0bWwtc3VpdGUiKSwgCisgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMtc3VpdGUiKSwgCisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJzdmctc3VpdGUiKQorICAgIF07CisgICAgdmFyIGVuYWJsZWRTdWl0
ZXMgPSBTdWl0ZXMuZmlsdGVyKGZ1bmN0aW9uIChzdWl0ZSwgaW5kZXgpIHsgcmV0dXJuICFzdWl0
ZS5kaXNhYmxlZCAmJiBjaGVja2JveGVzW2luZGV4XS5jaGVja2VkOyB9KTsKKyAgICB2YXIgdGVz
dHNDb3VudCA9IGVuYWJsZWRTdWl0ZXMucmVkdWNlKGZ1bmN0aW9uICh0ZXN0c0NvdW50LCBzdWl0
ZSkgeyByZXR1cm4gdGVzdHNDb3VudCArIHN1aXRlLnRlc3RzLmxlbmd0aDsgfSwgMCk7CisgICAg
YmVuY2htYXJrUnVubmVyQ2xpZW50LnRlc3RzQ291bnQgPSBiZW5jaG1hcmtSdW5uZXJDbGllbnQu
aXRlcmF0aW9uQ291bnQgKiB0ZXN0c0NvdW50OworICAgIGJlbmNobWFya1J1bm5lckNsaWVudC5v
cHRpb25zWyJ0ZXN0SW50ZXJ2YWwiXSA9IHBhcnNlSW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0ZXN0LWludGVydmFsIikudmFsdWUpICogMTAwMDsKKyAgICBiZW5jaG1hcmtSdW5uZXJDbGll
bnQub3B0aW9uc1siZnJhbWVSYXRlIl0gPSBwYXJzZUludChkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZnJhbWUtcmF0ZSIpLnZhbHVlKTsKKyAgICBiZW5jaG1hcmtSdW5uZXJDbGllbnQub3B0aW9u
c1siZXN0aW1hdGVkRnJhbWVSYXRlIl0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXN0aW1h
dGVkLWZyYW1lLXJhdGUiKS5jaGVja2VkOyAgICAKKyAgICBiZW5jaG1hcmtSdW5uZXJDbGllbnQu
b3B0aW9uc1siZml4VGVzdENvbXBsZXhpdHkiXSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJm
aXgtdGVzdC1jb21wbGV4aXR5IikuY2hlY2tlZDsKKyAgICB2YXIgcnVubmVyID0gbmV3IEJlbmNo
bWFya1J1bm5lcihlbmFibGVkU3VpdGVzLCBiZW5jaG1hcmtSdW5uZXJDbGllbnQpOworICAgIHJ1
bm5lci5ydW5NdWx0aXBsZUl0ZXJhdGlvbnMoYmVuY2htYXJrUnVubmVyQ2xpZW50Lml0ZXJhdGlv
bkNvdW50KTsKK30KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIHNob3dTZWN0aW9uKCJy
dW5uaW5nIik7CisgICAgc3RhcnRCZW5jaG1hcmsoKTsKK30KKworZnVuY3Rpb24gc2hvd1Jlc3Vs
dHMoc2NvcmUpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNy
ZXN1bHRzID4gaDEiKTsKKyAgICBlbGVtZW50LnRleHRDb250ZW50ID0gIlJlc3VsdHM6IgorICAg
IAorICAgIHZhciBicm93c2VyID0gYmVuY2htYXJrUnVubmVyQ2xpZW50LmJyb3dzZXIoKTsgICAg
CisgICAgaWYgKGJyb3dzZXIubGVuZ3RoKQorICAgICAgICBlbGVtZW50LnRleHRDb250ZW50ICs9
ICIgW2Jyb3dzZXIgPSAiICsgYnJvd3NlciArICJdIjsKKworICAgIHZhciBzY29yZSA9IGJlbmNo
bWFya1J1bm5lckNsaWVudC5zY29yZS50b0ZpeGVkKDIpOworICAgIGVsZW1lbnQudGV4dENvbnRl
bnQgKz0gIiBbU2NvcmUgPSAiICsgc2NvcmUgKyAiXSI7CisgICAgICAgIAorICAgIHNob3dTZWN0
aW9uKCJyZXN1bHRzIiwgdHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHNob3dHcmFwaCh0ZXN0TmFtZSwg
YXhpc2VzLCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQpIHsKKyAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNncmFwaCA+IGgxIik7CisgICAgZWxlbWVudC50ZXh0
Q29udGVudCA9ICJHcmFwaDoiCisKKyAgICB2YXIgYnJvd3NlciA9IGJlbmNobWFya1J1bm5lckNs
aWVudC5icm93c2VyKCk7ICAgIAorICAgIGlmIChicm93c2VyLmxlbmd0aCkKKyAgICAgICAgZWxl
bWVudC50ZXh0Q29udGVudCArPSAiIFticm93c2VyID0gIiArIGJyb3dzZXIgKyAiXSI7CisKKyAg
ICBpZiAodGVzdE5hbWUubGVuZ3RoKQorICAgICAgICBlbGVtZW50LnRleHRDb250ZW50ICs9ICIg
W3Rlc3QgPSAiICsgdGVzdE5hbWUgKyAiXSI7CisgICAgICAgICAgICAKKyAgICBncmFwaCgiI2dy
YXBoQ29udGFpbmVyIiwgbmV3IFBvaW50KDcwMCwgNDAwKSwgbmV3IEluc2V0cygyMCwgNTAsIDIw
LCA1MCksIGF4aXNlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KTsKKyAgICBzaG93U2Vj
dGlvbigiZ3JhcGgiLCB0cnVlKTsgICAgCit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcnVubmVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2JlbmNobWFyay1y
dW5uZXIuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVu
bmVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTg4IEBACitmdW5jdGlvbiBCZW5jaG1hcmtSdW5uZXJTdGF0ZShzdWl0ZXMpIHsKKyAgICB0
aGlzLl9zdWl0ZXMgPSBzdWl0ZXM7CisgICAgdGhpcy5fc3VpdGVJbmRleCA9IC0xOworICAgIHRo
aXMuX3Rlc3RJbmRleCA9IDA7CisgICAgdGhpcy5uZXh0KCk7Cit9CisKK0JlbmNobWFya1J1bm5l
clN0YXRlLnByb3RvdHlwZS5jdXJyZW50U3VpdGUgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4g
dGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5kZXhdOworfQorCitCZW5jaG1hcmtSdW5uZXJTdGF0
ZS5wcm90b3R5cGUuY3VycmVudFRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgc3VpdGUgPSB0
aGlzLmN1cnJlbnRTdWl0ZSgpOworICAgIHJldHVybiBzdWl0ZSA/IHN1aXRlLnRlc3RzW3RoaXMu
X3Rlc3RJbmRleF0gOiBudWxsOworfQorCitCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUu
aXNGaXJzdFRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gIXRoaXMuX3Rlc3RJbmRleDsK
K30KKworQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbigpIHsK
KyAgICB0aGlzLl90ZXN0SW5kZXgrKzsKKworICAgIHZhciBzdWl0ZSA9IHRoaXMuX3N1aXRlc1t0
aGlzLl9zdWl0ZUluZGV4XTsKKyAgICBpZiAoc3VpdGUgJiYgdGhpcy5fdGVzdEluZGV4IDwgc3Vp
dGUudGVzdHMubGVuZ3RoKQorICAgICAgICByZXR1cm4gdGhpczsKKworICAgIHRoaXMuX3Rlc3RJ
bmRleCA9IDA7CisgICAgZG8geworICAgICAgICB0aGlzLl9zdWl0ZUluZGV4Kys7CisgICAgfSB3
aGlsZSAodGhpcy5fc3VpdGVJbmRleCA8IHRoaXMuX3N1aXRlcy5sZW5ndGggJiYgdGhpcy5fc3Vp
dGVzW3RoaXMuX3N1aXRlSW5kZXhdLmRpc2FibGVkKTsKKworICAgIHJldHVybiB0aGlzOworfQor
CitCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUucHJlcGFyZUN1cnJlbnRUZXN0ID0gZnVu
Y3Rpb24ocnVubmVyLCBmcmFtZSkgeworICAgIHZhciBzdWl0ZSA9IHRoaXMuY3VycmVudFN1aXRl
KCk7CisgICAgdmFyIHRlc3QgPSB0aGlzLmN1cnJlbnRUZXN0KCk7CisgICAgdmFyIHByb21pc2Ug
PSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICBmcmFtZS5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgc3VpdGUucHJlcGFyZShydW5uZXIsIGZyYW1lLmNvbnRlbnRXaW5kb3csIGZyYW1lLmNv
bnRlbnREb2N1bWVudCkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsgcHJvbWlzZS5yZXNvbHZlKHJl
c3VsdCk7IH0pOworICAgIH0KKyAgICBmcmFtZS5zcmMgPSB0ZXN0LnVybDsKKyAgICByZXR1cm4g
cHJvbWlzZTsKK30KKworZnVuY3Rpb24gQmVuY2htYXJrUnVubmVyKHN1aXRlcywgY2xpZW50KSB7
CisgICAgdGhpcy5fc3VpdGVzID0gc3VpdGVzOworICAgIHRoaXMuX2NsaWVudCA9IGNsaWVudDsK
K30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS53YWl0Rm9yRWxlbWVudCA9IGZ1bmN0aW9u
KHNlbGVjdG9yKSB7CisgICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICB2
YXIgY29udGVudERvY3VtZW50ID0gdGhpcy5fZnJhbWUuY29udGVudERvY3VtZW50OworCisgICAg
ZnVuY3Rpb24gcmVzb2x2ZUlmUmVhZHkoKSB7CisgICAgICAgIHZhciBlbGVtZW50ID0gY29udGVu
dERvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOworICAgICAgICBpZiAoZWxlbWVudCkK
KyAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnJlc29sdmUoZWxlbWVudCk7CisgICAgICAgIHNl
dFRpbWVvdXQocmVzb2x2ZUlmUmVhZHksIDUwKTsKKyAgICB9CisKKyAgICByZXNvbHZlSWZSZWFk
eSgpOworICAgIHJldHVybiBwcm9taXNlOworfQorCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBl
Ll9hcHBlbmRGcmFtZSA9IGZ1bmN0aW9uKHNyYykgeworICAgIHZhciBmcmFtZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGZyYW1lLnN0eWxlLndpZHRoID0gIjgwMHB4
IjsKKyAgICBmcmFtZS5zdHlsZS5oZWlnaHQgPSAiNjAwcHgiOworICAgIGZyYW1lLnN0eWxlLmJv
cmRlciA9ICIwcHggbm9uZSI7CisgICAgZnJhbWUuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUi
OworICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgic2Nyb2xsaW5nIiwgIm5vIik7CisKKyAgICB2YXIg
bWFyZ2luTGVmdCA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkubWFy
Z2luTGVmdCk7CisgICAgdmFyIG1hcmdpblRvcCA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUo
ZG9jdW1lbnQuYm9keSkubWFyZ2luVG9wKTsKKyAgICBpZiAod2luZG93LmlubmVyV2lkdGggPiA4
MDAgKyBtYXJnaW5MZWZ0ICYmIHdpbmRvdy5pbm5lckhlaWdodCA+IDYwMCArIG1hcmdpblRvcCkg
eworICAgICAgICBmcmFtZS5zdHlsZS5sZWZ0ID0gbWFyZ2luTGVmdCArICJweCI7CisgICAgICAg
IGZyYW1lLnN0eWxlLnRvcCA9IG1hcmdpblRvcCArICJweCI7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgZnJhbWUuc3R5bGUubGVmdCA9ICIwcHgiOworICAgICAgICBmcmFtZS5zdHlsZS50b3AgPSAi
MHB4IjsKKyAgICB9CisKKyAgICBpZiAodGhpcy5fY2xpZW50ICYmIHRoaXMuX2NsaWVudC53aWxs
QWRkVGVzdEZyYW1lKQorICAgICAgICB0aGlzLl9jbGllbnQud2lsbEFkZFRlc3RGcmFtZShmcmFt
ZSk7CisKKyAgICBkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShmcmFtZSwgZG9jdW1lbnQuYm9k
eS5maXJzdENoaWxkKTsKKyAgICB0aGlzLl9mcmFtZSA9IGZyYW1lOworICAgIHJldHVybiBmcmFt
ZTsKK30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcmVtb3ZlRnJhbWUgPSBmdW5jdGlv
bigpIHsKKyAgICBpZiAodGhpcy5fZnJhbWUpIHsKKyAgICAgICAgdGhpcy5fZnJhbWUucGFyZW50
Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9mcmFtZSk7CisgICAgICAgIHRoaXMuX2ZyYW1lID0gbnVs
bDsKKyAgICB9Cit9CisKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3J1blRlc3RBbmRSZWNv
cmRSZXN1bHRzID0gZnVuY3Rpb24oc3RhdGUpIHsKKyAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1w
bGVQcm9taXNlOworICAgIHZhciBzdWl0ZSA9IHN0YXRlLmN1cnJlbnRTdWl0ZSgpOworICAgIHZh
ciB0ZXN0ID0gc3RhdGUuY3VycmVudFRlc3QoKTsKKyAgICAKKyAgICBpZiAodGhpcy5fY2xpZW50
ICYmIHRoaXMuX2NsaWVudC53aWxsUnVuVGVzdFRlc3QpCisgICAgICAgIHRoaXMuX2NsaWVudC53
aWxsUnVuVGVzdChzdWl0ZSwgdGVzdCk7CisKKyAgICB2YXIgY29udGVudFdpbmRvdyA9IHRoaXMu
X2ZyYW1lLmNvbnRlbnRXaW5kb3c7CisgICAgdmFyIHNlbGYgPSB0aGlzOworCisgICAgc3VpdGUu
cnVuKGNvbnRlbnRXaW5kb3csIHRlc3QsIHRoaXMuX2NsaWVudC5vcHRpb25zLCB0aGlzLl9jbGll
bnQucmVjb3JkVGFibGUsIHRoaXMuX2NsaWVudC5wcm9ncmVzc0JhcikudGhlbihmdW5jdGlvbihz
YW1wbGVyKSB7CisgICAgICAgIHZhciBzYW1wbGVycyA9IHNlbGYuX3N1aXRlc1NhbXBsZXJzW3N1
aXRlLm5hbWVdIHx8IFtdOworICAgICAgICAKKyAgICAgICAgc2FtcGxlcnNbdGVzdC5uYW1lXSA9
IHNhbXBsZXI7CisgICAgICAgIHNlbGYuX3N1aXRlc1NhbXBsZXJzW3N1aXRlLm5hbWVdID0gc2Ft
cGxlcnM7CisKKyAgICAgICAgaWYgKHNlbGYuX2NsaWVudCAmJiBzZWxmLl9jbGllbnQuZGlkUnVu
VGVzdCkKKyAgICAgICAgICAgIHNlbGYuX2NsaWVudC5kaWRSdW5UZXN0KHN1aXRlLCB0ZXN0KTsK
KyAgICAgICAgCisgICAgICAgIHN0YXRlLm5leHQoKTsKKyAgICAgICAgaWYgKHN0YXRlLmN1cnJl
bnRTdWl0ZSgpICE9IHN1aXRlKQorICAgICAgICAgICAgc2VsZi5fcmVtb3ZlRnJhbWUoKTsKKyAg
ICAgICAgcHJvbWlzZS5yZXNvbHZlKHN0YXRlKTsKKyAgICB9KTsKKyAgICAKKyAgICByZXR1cm4g
cHJvbWlzZTsKK30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5zdGVwID0gZnVuY3Rpb24o
c3RhdGUpIHsKKyAgICBpZiAoIXN0YXRlKSB7CisgICAgICAgIHN0YXRlID0gbmV3IEJlbmNobWFy
a1J1bm5lclN0YXRlKHRoaXMuX3N1aXRlcyk7CisgICAgICAgIHRoaXMuX3N1aXRlc1NhbXBsZXJz
ID0ge307CisgICAgfQorCisgICAgdmFyIHN1aXRlID0gc3RhdGUuY3VycmVudFN1aXRlKCk7Cisg
ICAgaWYgKCFzdWl0ZSkgeworICAgICAgICB0aGlzLl9maW5hbGl6ZSgpOworICAgICAgICB2YXIg
cHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsK
KyAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAgfQorCisgICAgaWYgKHN0YXRlLmlzRmlyc3RU
ZXN0KCkpIHsKKyAgICAgICAgdGhpcy5fbWFzdXJlZFZhbHVlc0ZvckN1cnJlbnRTdWl0ZSA9IHt9
OworICAgICAgICB0aGlzLl9hcHBlbmRGcmFtZSgpOworICAgIH0KKworICAgIHZhciBzZWxmID0g
dGhpczsKKyAgICByZXR1cm4gc3RhdGUucHJlcGFyZUN1cnJlbnRUZXN0KHRoaXMsIHRoaXMuX2Zy
YW1lKS50aGVuKGZ1bmN0aW9uKHByZXBhcmVSZXR1cm5WYWx1ZSkgeworICAgICAgICByZXR1cm4g
c2VsZi5fcnVuVGVzdEFuZFJlY29yZFJlc3VsdHMoc3RhdGUpOworICAgIH0pOworfQorCitCZW5j
aG1hcmtSdW5uZXIucHJvdG90eXBlLnJ1bkFsbFN0ZXBzID0gZnVuY3Rpb24oc3RhcnRpbmdTdGF0
ZSkgeworICAgIHZhciBuZXh0Q2FsbGVlID0gdGhpcy5ydW5BbGxTdGVwcy5iaW5kKHRoaXMpOwor
ICAgIHRoaXMuc3RlcChzdGFydGluZ1N0YXRlKS50aGVuKGZ1bmN0aW9uKG5leHRTdGF0ZSkgewor
ICAgICAgICBpZiAobmV4dFN0YXRlKQorICAgICAgICAgICAgbmV4dENhbGxlZShuZXh0U3RhdGUp
OworICAgIH0pOworfQorCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLnJ1bk11bHRpcGxlSXRl
cmF0aW9ucyA9IGZ1bmN0aW9uKGl0ZXJhdGlvbkNvdW50KSB7CisgICAgdmFyIHNlbGYgPSB0aGlz
OworICAgIHZhciBjdXJyZW50SXRlcmF0aW9uID0gMDsKKworICAgIHRoaXMuX3J1bk5leHRJdGVy
YXRpb24gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgY3VycmVudEl0ZXJhdGlvbisrOworICAgICAg
ICBpZiAoY3VycmVudEl0ZXJhdGlvbiA8IGl0ZXJhdGlvbkNvdW50KQorICAgICAgICAgICAgc2Vs
Zi5ydW5BbGxTdGVwcygpOworICAgICAgICBlbHNlIGlmICh0aGlzLl9jbGllbnQgJiYgdGhpcy5f
Y2xpZW50LmRpZEZpbmlzaExhc3RJdGVyYXRpb24pCisgICAgICAgICAgICBzZWxmLl9jbGllbnQu
ZGlkRmluaXNoTGFzdEl0ZXJhdGlvbigpOworICAgIH0KKworICAgIGlmIChzZWxmLl9jbGllbnQg
JiYgc2VsZi5fY2xpZW50LndpbGxTdGFydEZpcnN0SXRlcmF0aW9uKQorICAgICAgICBzZWxmLl9j
bGllbnQud2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb24oaXRlcmF0aW9uQ291bnQpOworCisgICAgc2Vs
Zi5ydW5BbGxTdGVwcygpOworfQorCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9maW5hbGl6
ZSA9IGZ1bmN0aW9uKCkgeworICAgIHRoaXMuX3JlbW92ZUZyYW1lKCk7CisgICAgICAgIAorICAg
IGlmICh0aGlzLl9jbGllbnQgJiYgdGhpcy5fY2xpZW50LmRpZFJ1blN1aXRlcykKKyAgICAgICAg
dGhpcy5fY2xpZW50LmRpZFJ1blN1aXRlcyh0aGlzLl9zdWl0ZXNTYW1wbGVycyk7CisKKyAgICBp
ZiAodGhpcy5fcnVuTmV4dEl0ZXJhdGlvbikKKyAgICAgICAgdGhpcy5fcnVuTmV4dEl0ZXJhdGlv
bigpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJj
ZXMvZ3JhcGguanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1
bm5lci9yZXNvdXJjZXMvZ3JhcGguanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9ncmFwaC5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE0MSBAQAorZnVuY3Rpb24gZ3JhcGgoc2VsZWN0b3IsIHNpemUsIG1hcmdpbnMsIGF4
aXNlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KSB7CisKKyAgICB2YXIgZWxlbWVudCA9
IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKKyAgICB3aGlsZSAo
ZWxlbWVudC5maXJzdENoaWxkKQorICAgICAgICBlbGVtZW50LnJlbW92ZUNoaWxkKGVsZW1lbnQu
Zmlyc3RDaGlsZCk7CisKKyAgICB2YXIgeCA9IGQzLnNjYWxlLmxpbmVhcigpCisgICAgICAgICAg
ICAucmFuZ2UoWzAsIHNpemUud2lkdGgoKV0pCisgICAgICAgICAgICAuZG9tYWluKGQzLmV4dGVu
dChzYW1wbGVzLCBmdW5jdGlvbihkKSB7IHJldHVybiBkLnRpbWVPZmZzZXQ7IH0pKTsgICAgICAg
ICAgICAKKworICAgIHZhciB5TGVmdCA9IGQzLnNjYWxlLmxpbmVhcigpCisgICAgICAgICAgICAu
cmFuZ2UoW3NpemUuaGVpZ2h0KCksIDBdKQorICAgICAgICAgICAgLmRvbWFpbihbMCwgZDMubWF4
KHNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudmFsdWVzWzBdOyB9KV0pOworCisgICAg
dmFyIHlSaWdodCA9IGQzLnNjYWxlLmxpbmVhcigpCisgICAgICAgICAgICAucmFuZ2UoW3NpemUu
aGVpZ2h0KCksIDBdKQorICAgICAgICAgICAgLmRvbWFpbihbMCwgZDMubWF4KHNhbXBsZXMsIGZ1
bmN0aW9uKGQpIHsgcmV0dXJuIGQudmFsdWVzWzFdOyB9KV0pOworCisgICAgdmFyIHhBeGlzID0g
ZDMuc3ZnLmF4aXMoKQorICAgICAgICAgICAgLnNjYWxlKHgpCisgICAgICAgICAgICAub3JpZW50
KCJib3R0b20iKTsKKworICAgIHZhciB5QXhpc0xlZnQgPSBkMy5zdmcuYXhpcygpCisgICAgICAg
ICAgICAuc2NhbGUoeUxlZnQpCisgICAgICAgICAgICAub3JpZW50KCJsZWZ0Iik7CisKKyAgICB2
YXIgeUF4aXNSaWdodCA9IGQzLnN2Zy5heGlzKCkKKyAgICAgICAgICAgIC5zY2FsZSh5UmlnaHQp
CisgICAgICAgICAgICAub3JpZW50KCJyaWdodCIpOworCisgICAgdmFyIGxpbmVMZWZ0ID0gZDMu
c3ZnLmxpbmUoKQorICAgICAgICAgICAgLngoZnVuY3Rpb24oZCkgeyByZXR1cm4geChkLnRpbWVP
ZmZzZXQpOyB9KQorICAgICAgICAgICAgLnkoZnVuY3Rpb24oZCkgeyByZXR1cm4geUxlZnQoZC52
YWx1ZXNbMF0pOyB9KTsKKworICAgIHZhciBsaW5lUmlnaHQgPSBkMy5zdmcubGluZSgpCisgICAg
ICAgICAgICAueChmdW5jdGlvbihkKSB7IHJldHVybiB4KGQudGltZU9mZnNldCk7IH0pCisgICAg
ICAgICAgICAueShmdW5jdGlvbihkKSB7IHJldHVybiB5UmlnaHQoZC52YWx1ZXNbMV0pOyB9KTsK
KworICAgIHNhbXBsZXMuZm9yRWFjaChmdW5jdGlvbihkKSB7CisgICAgICAgIGQudGltZU9mZnNl
dCA9ICtkLnRpbWVPZmZzZXQ7CisgICAgICAgIGQudmFsdWVzWzBdID0gK2QudmFsdWVzWzBdOwor
ICAgICAgICBkLnZhbHVlc1sxXSA9ICtkLnZhbHVlc1sxXTsgICAgICAgIAorICAgIH0pOyAgICAK
KworICAgIHZhciBzYW1wbGVkU2FtcGxlcyA9IHNhbXBsZXMuZmlsdGVyKGZ1bmN0aW9uKGQpIHsK
KyAgICAgICAgcmV0dXJuIGQudGltZU9mZnNldCA+PSBzYW1wbGluZ1RpbWVPZmZzZXQ7CisgICAg
fSk7CisgICAgCisgICAgdmFyIG1lYW5MZWZ0ID0gZDMubWVhbihzYW1wbGVkU2FtcGxlcywgZnVu
Y3Rpb24oZCkgeworICAgICAgICByZXR1cm4gK2QudmFsdWVzWzBdOworICAgIH0pOworCisgICAg
dmFyIG1lYW5SaWdodCA9IGQzLm1lYW4oc2FtcGxlZFNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsKKyAg
ICAgICAgcmV0dXJuICtkLnZhbHVlc1sxXTsKKyAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKKyAgICB2YXIgc3ZnID0gZDMuc2VsZWN0KHNlbGVjdG9yKS5hcHBlbmQoInN2ZyIp
CisgICAgICAgIC5hdHRyKCJ3aWR0aCIsIHNpemUud2lkdGgoKSArIG1hcmdpbnMubGVmdCArIG1h
cmdpbnMucmlnaHQpCisgICAgICAgIC5hdHRyKCJoZWlnaHQiLCBzaXplLmhlaWdodCgpICsgbWFy
Z2lucy50b3AgKyBtYXJnaW5zLmJvdHRvbSkKKyAgICAgICAgLmFwcGVuZCgiZyIpCisgICAgICAg
ICAgICAuYXR0cigidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiICsgbWFyZ2lucy5sZWZ0ICsgIiwi
ICsgbWFyZ2lucy50b3AgKyAiKSIpOworCisgICAgLy8geC1heGlzCisgICAgc3ZnLmFwcGVuZCgi
ZyIpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJ4IGF4aXMiKQorICAgICAgICAuYXR0cigiZmls
bCIsICJyZ2IoMjM1LCAyMzUsIDIzNSkiKQorICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInRy
YW5zbGF0ZSgwLCIgKyBzaXplLmhlaWdodCgpICsgIikiKQorICAgICAgICAuY2FsbCh4QXhpcykK
KyAgICAgICAgLmFwcGVuZCgidGV4dCIpCisgICAgICAgICAgICAuYXR0cigiY2xhc3MiLCAibGFi
ZWwiKQorICAgICAgICAgICAgLmF0dHIoIngiLCBzaXplLndpZHRoKCkpCisgICAgICAgICAgICAu
YXR0cigieSIsIC02KQorICAgICAgICAgICAgLmF0dHIoImZpbGwiLCAicmdiKDIzNSwgMjM1LCAy
MzUpIikKKyAgICAgICAgICAgIC5zdHlsZSgidGV4dC1hbmNob3IiLCAiZW5kIikKKyAgICAgICAg
ICAgIC50ZXh0KCJ0aW1lIik7CisgICAgICAgICAgICAgICAgIAorICAgIC8vIHlMZWZ0LWF4aXMK
KyAgICBzdmcuYXBwZW5kKCJnIikKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgInkgYXhpcyIpCisg
ICAgICAgIC5hdHRyKCJmaWxsIiwgInN0ZWVsYmx1ZSIpCisgICAgICAgIC5jYWxsKHlBeGlzTGVm
dCkKKyAgICAgICAgLmFwcGVuZCgidGV4dCIpCisgICAgICAgICAgICAuYXR0cigiY2xhc3MiLCAi
bGFiZWwiKQorICAgICAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJyb3RhdGUoLTkwKSIpCisg
ICAgICAgICAgICAuYXR0cigieSIsIDYpCisgICAgICAgICAgICAuYXR0cigiZmlsbCIsICJzdGVl
bGJsdWUiKQorICAgICAgICAgICAgLmF0dHIoImR5IiwgIi43MWVtIikKKyAgICAgICAgICAgIC5z
dHlsZSgidGV4dC1hbmNob3IiLCAiZW5kIikKKyAgICAgICAgICAgIC50ZXh0KGF4aXNlc1swXSk7
CisKKyAgICAvLyB5UmlnaHQtYXhpcworICAgIHN2Zy5hcHBlbmQoImciKQorICAgICAgICAuYXR0
cigiY2xhc3MiLCAieSBheGlzIikKKyAgICAgICAgLmF0dHIoImZpbGwiLCAicmVkIikKKyAgICAg
ICAgLmF0dHIoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoIiArIHNpemUud2lkdGgoKSArICIsIDAp
IikKKyAgICAgICAgLmNhbGwoeUF4aXNSaWdodCkKKyAgICAgICAgLmFwcGVuZCgidGV4dCIpCisg
ICAgICAgICAgICAuYXR0cigiY2xhc3MiLCAibGFiZWwiKQorICAgICAgICAgICAgLmF0dHIoInRy
YW5zZm9ybSIsICJyb3RhdGUoLTkwKSIpCisgICAgICAgICAgICAuYXR0cigieSIsIDYpCisgICAg
ICAgICAgICAuYXR0cigiZmlsbCIsICJyZWQiKQorICAgICAgICAgICAgLmF0dHIoImR5IiwgIi43
MWVtIikKKyAgICAgICAgICAgIC5zdHlsZSgidGV4dC1hbmNob3IiLCAiZW5kIikKKyAgICAgICAg
ICAgIC50ZXh0KGF4aXNlc1sxXSk7CisKKyAgICAvLyBsZWZ0LW1lYW4KKyAgICBzdmcuYXBwZW5k
KCJzdmc6bGluZSIpCisgICAgICAgIC5hdHRyKCJ4MSIsIHgoMCkpCisgICAgICAgIC5hdHRyKCJ4
MiIsIHNpemUud2lkdGgoKSkKKyAgICAgICAgLmF0dHIoInkxIiwgeUxlZnQobWVhbkxlZnQpKQor
ICAgICAgICAuYXR0cigieTIiLCB5TGVmdChtZWFuTGVmdCkpCisgICAgICAgIC5hdHRyKCJjbGFz
cyIsICJsZWZ0LW1lYW4iKTsKKworICAgIC8vIHJpZ2h0LW1lYW4KKyAgICBzdmcuYXBwZW5kKCJz
dmc6bGluZSIpCisgICAgICAgIC5hdHRyKCJ4MSIsIHgoMCkpCisgICAgICAgIC5hdHRyKCJ4MiIs
IHNpemUud2lkdGgoKSkKKyAgICAgICAgLmF0dHIoInkxIiwgeVJpZ2h0KG1lYW5SaWdodCkpCisg
ICAgICAgIC5hdHRyKCJ5MiIsIHlSaWdodChtZWFuUmlnaHQpKQorICAgICAgICAuYXR0cigiY2xh
c3MiLCAicmlnaHQtbWVhbiIpOyAgICAgICAgCisKKyAgICAvLyBzYW1wbGluZ1RpbWVPZmZzZXQK
KyAgICBzdmcuYXBwZW5kKCJsaW5lIikKKyAgICAgICAgLmF0dHIoIngxIiwgeChzYW1wbGluZ1Rp
bWVPZmZzZXQpKQorICAgICAgICAuYXR0cigieDIiLCB4KHNhbXBsaW5nVGltZU9mZnNldCkpCisg
ICAgICAgIC5hdHRyKCJ5MSIsIHlMZWZ0KDApKQorICAgICAgICAuYXR0cigieTIiLCB5TGVmdCh5
QXhpc0xlZnQuc2NhbGUoKS5kb21haW4oKVsxXSkpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJz
bWFwbGUtdGltZSIpOworCisgICAgLy8gbGVmdC1zYW1wbGVzCisgICAgc3ZnLmFwcGVuZCgicGF0
aCIpCisgICAgICAgIC5kYXR1bShzYW1wbGVzKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAibGVm
dC1zYW1wbGVzIikKKyAgICAgICAgLmF0dHIoImQiLCBsaW5lTGVmdCk7CisgICAgICAgIAorICAg
IC8vIHJpZ2h0LXNhbXBsZXMKKyAgICBzdmcuYXBwZW5kKCJwYXRoIikKKyAgICAgICAgLmRhdHVt
KHNhbXBsZXMpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJyaWdodC1zYW1wbGVzIikKKyAgICAg
ICAgLmF0dHIoImQiLCBsaW5lUmlnaHQpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMJKHJldmlzaW9uIDAp
CisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy90ZXN0cy5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0MSBAQAordmFyIFRpdGxlcyA9IFsKKyAgICB7
CisgICAgICAgIHRleHQgOiAiVGVzdCBOYW1lIiwKKyAgICAgICAgd2lkdGggOiAyNSwKKyAgICAg
ICAgY2hpbGRyZW46IFtdCisgICAgfSwgeworICAgICAgICB0ZXh0IDogIkFuaW1hdGVkIEl0ZW1z
IiwKKyAgICAgICAgd2lkdGggOiAzMSwKKyAgICAgICAgY2hpbGRyZW46IFsKKyAgICAgICAgICAg
IHsgdGV4dDogICAiQXZnLiIsIHdpZHRoOiA2LCBjaGlsZHJlbjogW10gfSwKKyAgICAgICAgICAg
IHsgdGV4dDogIlx1MDBiMSIsIHdpZHRoOiA1LCBjaGlsZHJlbjogW10gfSwKKyAgICAgICAgICAg
IHsgdGV4dDogICAiVy41JSIsIHdpZHRoOiA1LCBjaGlsZHJlbjogW10gfSwKKyAgICAgICAgICAg
IHsgdGV4dDogICAiU3RkLiIsIHdpZHRoOiA1LCBjaGlsZHJlbjogW10gfSwKKyAgICAgICAgICAg
IHsgdGV4dDogICAgICAiJSIsIHdpZHRoOiA1LCBjaGlsZHJlbjogW10gfSwKKyAgICAgICAgXQor
ICAgIH0sIHsKKyAgICAgICAgdGV4dCA6ICJGUFMiLAorICAgICAgICB3aWR0aCA6IDMxLAorICAg
ICAgICBjaGlsZHJlbjogWworICAgICAgICAgICAgeyB0ZXh0OiAgICJBdmcuIiwgd2lkdGg6IDYs
IGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAiXHUwMGIxIiwgd2lkdGg6IDUs
IGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAgICJXLjUlIiwgd2lkdGg6IDUs
IGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAgICJTdGQuIiwgd2lkdGg6IDUs
IGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAgICAgICIlIiwgd2lkdGg6IDUs
IGNoaWxkcmVuOiBbXSB9LAorICAgICAgICBdCisgICAgfSwgeworICAgICAgICB0ZXh0IDogIlNj
b3JlIiwKKyAgICAgICAgd2lkdGggOiA2LAorICAgICAgICBjaGlsZHJlbjogW10KKyAgICB9LCB7
CisgICAgICAgIHRleHQgOiAiU2FtcGxlcyIsCisgICAgICAgIHdpZHRoIDogNywKKyAgICAgICAg
Y2hpbGRyZW46IFtdCisgICAgfQorXTsKKwordmFyIFN1aXRlcyA9IFtdOworCitTdWl0ZXMucHVz
aCh7CisgICAgbmFtZTogIkhUTUwgQm91bmNpbmcgUGFydGljbGVzIiwKKyAgICBwcmVwYXJlOiBm
dW5jdGlvbihydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworICAgICAg
ICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCIjc3RhZ2UiKS50aGVuKGZ1bmN0aW9uIChl
bGVtZW50KSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAg
fSwgIAorICAgIHJ1bjogZnVuY3Rpb24oY29udGVudFdpbmRvdywgdGVzdCwgb3B0aW9ucywgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgICAgIHJldHVybiBjb250ZW50V2luZG93LnJ1
bkJlbmNobWFyayh0aGlzLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
OworICAgIH0sCisgICAgdGl0bGVzIDogVGl0bGVzLAorICAgIHRlc3RzOiBbCisgICAgICAgIHsg
CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
c2hhcGVzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lk
dGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKKyAgICAgICAgICAgIG5hbWU6
ICJib3VuY2luZyBjaXJjbGVzIgorICAgICAgICB9LCB7IAorICAgICAgICAgICAgdXJsOiAiLi4v
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXNoYXBlcy5odG1sP2dhaW49MSZhZGRM
aW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSZwYXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xlSGVpZ2h0PTQw
JnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKKyAgICAgICAgICAgIG5hbWU6ICJib3VuY2luZyBjbGlw
cGVkIHJlY3RzIgorICAgICAgICB9LCB7IAorICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXNoYXBlcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAm
cmVtb3ZlTGltaXQ9NSZwYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNp
cmNsZSZmaWxsPWdyYWRpZW50IiwKKyAgICAgICAgICAgIG5hbWU6ICJib3VuY2luZyBncmFkaWVu
dCBjaXJjbGVzIgorICAgICAgICB9LCB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctaW1hZ2VzLmh0bWw/Z2Fpbj0wLjQmYWRkTGltaXQ9NSZy
ZW1vdmVMaW1pdD0yJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9
Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICBuYW1lOiAiYm91bmNpbmcg
U1ZHIGltYWdlcyIKKyAgICAgICAgfSwgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWltYWdlcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAm
cmVtb3ZlTGltaXQ9NSZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3Jj
PS4uL3Jlc291cmNlcy95aW4teWFuZy5wbmciLAorICAgICAgICAgICAgbmFtZTogImJvdW5jaW5n
IFBORyBpbWFnZXMiCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL3Rl
eHQvbGF5ZXJpbmctdGV4dC5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAw
IiwKKyAgICAgICAgICAgIG5hbWU6ICJsYXllcmluZyB0ZXh0IgorICAgICAgICB9CisgICAgXQor
fSk7CisKK1N1aXRlcy5wdXNoKHsKKyAgICBuYW1lOiAiQ2FudmFzIEJvdW5jaW5nIFBhcnRpY2xl
cyIsCisgICAgcHJlcGFyZTogZnVuY3Rpb24ocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50
RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgiI3N0YWdl
IikudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7
CisgICAgICAgIH0pOworICAgIH0sICAKKyAgICBydW46IGZ1bmN0aW9uKGNvbnRlbnRXaW5kb3cs
IHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgICAgICByZXR1
cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhpcywgdGVzdCwgb3B0aW9ucywgcmVjb3Jk
VGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICB9LAorICAgIHRpdGxlcyA6IFRpdGxlcywKKyAgICB0
ZXN0czogWworICAgICAgICB7IAorICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAw
JnJlbW92ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFw
ZT1jaXJjbGUiLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBjaXJjbGVzIgor
ICAgICAgICB9LCB7IAorICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92
ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0
JmNsaXA9c3RhciIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGNsaXBwZWQg
cmVjdHMiCisgICAgICAgIH0sIHsgCisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP2dhaW49NCZhZGRMaW1pdD0x
MDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNo
YXBlPWNpcmNsZSZmaWxsPWdyYWRpZW50IiwKKyAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91
bmNpbmcgZ3JhZGllbnQgY2lyY2xlcyIKKyAgICAgICAgfSwgeyAKKyAgICAgICAgICAgIHVybDog
Ii4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/
Z2Fpbj0wLjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0xJnBhcnRpY2xlV2lkdGg9ODAmcGFydGlj
bGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAg
ICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIFNWRyBpbWFnZXMiCisgICAgICAgIH0sIHsKKyAg
ICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52
YXMtaW1hZ2VzLmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEwMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0
aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4t
eWFuZy5wbmciLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBQTkcgaW1hZ2Vz
IgorICAgICAgICB9CisgICAgXQorfSk7CisKK1N1aXRlcy5wdXNoKHsKKyAgICBuYW1lOiAiU1ZH
IEJvdW5jaW5nIFBhcnRpY2xlcyIsCisgICAgcHJlcGFyZTogZnVuY3Rpb24ocnVubmVyLCBjb250
ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0
Rm9yRWxlbWVudCgiI3N0YWdlIikudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAg
ICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sICAKKyAgICBydW46IGZ1bmN0
aW9uKGNvbnRlbnRXaW5kb3csIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jh
cikgeworICAgICAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhpcywgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICB9LAorICAgIHRpdGxl
cyA6IFRpdGxlcywKKyAgICB0ZXN0czogWworICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICIu
Li90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP2dhaW49
NiZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xl
SGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCisgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5n
IGNpcmNsZXMiLAorICAgICAgICB9LCB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP2dhaW49MC42JmFkZExpbWl0
PTEwJnJlbW92ZUxpbWl0PTEmcGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFw
ZT1yZWN0JmNsaXA9c3RhciIsCisgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIGNsaXBw
ZWQgcmVjdHMiLAorICAgICAgICB9LCB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP2dhaW49MC44JmFkZExpbWl0
PTEwJnJlbW92ZUxpbWl0PTQmcGFydGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFw
ZT1jaXJjbGUmZmlsbD1ncmFkaWVudCIsCisgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5n
IGdyYWRpZW50IGNpcmNsZXMiCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw/Z2Fpbj0wLjQm
YWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0yJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9
ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICBuYW1l
OiAiU1ZHIGJvdW5jaW5nIFNWRyBpbWFnZXMiCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgIHVy
bDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw/
Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9ODAmcGFydGlj
bGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCisgICAgICAg
ICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIFBORyBpbWFnZXMiCisgICAgICAgIH0KKyAgICBdCit9
KTsKKworZnVuY3Rpb24gc3VpdGVGcm9tTmFtZShuYW1lKSB7CisgICAgcmV0dXJuIFN1aXRlcy5m
aW5kKGZ1bmN0aW9uKHN1aXRlKSB7IHJldHVybiBzdWl0ZS5uYW1lID09IG5hbWU7IH0pOworfQor
CitmdW5jdGlvbiB0ZXN0RnJvbU5hbWUoc3VpdGUsIG5hbWUpIHsKKyAgICByZXR1cm4gc3VpdGUu
dGVzdHMuZmluZChmdW5jdGlvbih0ZXN0KSB7IHJldHVybiB0ZXN0Lm5hbWUgPT0gbmFtZTsgfSk7
Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNh
bnZhcy1pbWFnZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgPHN0eWxlPgorICAgIGltZy5oaWRkZW4geworICAgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOworICAgIH0KKyAgPC9zdHlsZT4KKyAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2Vz
L2JlbmNobWFyay5jc3MiPgorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRo
bS5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlzdGlj
cy5qcyI+PC9zY3JpcHQ+ICAKKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9tYWluLmpz
Ij48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3Njcmlw
dD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuanMiPjwvc2NyaXB0Pgor
ICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCisgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlw
dCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorICA8aW1nIGNsYXNzPSJoaWRkZW4iIHNyYz0iLi4vcmVzb3VyY2VzL3lp
bi15YW5nLnN2ZyI+CisgIDxpbWcgY2xhc3M9ImhpZGRlbiIgc3JjPSIuLi9yZXNvdXJjZXMveWlu
LXlhbmcucG5nIj4KKyAgPGNhbnZhcyBpZD0ic3RhZ2UiPjwvY2FudmFzPgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1j
YW52YXMtc2hhcGVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9
Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PiAgCisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0
aC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYmVuY2htYXJrLmpz
Ij48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwv
c2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4K
KyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0
PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxjYW52YXMgaWQ9InN0YWdlIj48L2NhbnZhcz4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctaW1hZ2VzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3Vu
Y2luZy1pbWFnZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctaW1hZ2VzLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorICA8c3R5bGU+CisgICAgaW1nIHsKKyAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB9
CisgIDwvc3R5bGU+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhy
ZWY9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PiAgCisgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
bWF0aC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYmVuY2htYXJr
LmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMi
Pjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3Njcmlw
dD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2Ny
aXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLWltYWdlcy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0ic3RhZ2UiPjwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9ib3VuY2luZy1zaGFwZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXNoYXBl
cy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zaGFwZXMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHls
ZT4KKyAgICAuY2lyY2xlIHsKKyAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgIGJhY2tn
cm91bmQtY29sb3I6ICMwMDAwMDA7CisgICAgICBib3JkZXItcmFkaXVzOiA1MCUgNTAlOworICAg
IH0KKyAgICAucmVjdCB7CisgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiAjMDAwMDAwOworICAgIH0KKyAgICAuc3RhciB7CisgICAgICAtd2Via2l0LWNs
aXAtcGF0aDogcG9seWdvbig1MCUgMCUsIDM4JSAzOCUsIDAlIDM4JSwgMzAlIDYwJSwgMTglIDEw
MCUsIDUwJSA3NSUsIDgyJSAxMDAlLCA3MCUgNjAlLCAxMDAlIDM4JSwgNjIlIDM4JSk7CisgICAg
ICAtbXMtY2xpcC1wYXRoOiBwb2x5Z29uKDUwJSAwJSwgMzglIDM4JSwgMCUgMzglLCAzMCUgNjAl
LCAxOCUgMTAwJSwgNTAlIDc1JSwgODIlIDEwMCUsIDcwJSA2MCUsIDEwMCUgMzglLCA2MiUgMzgl
KTsgIAorICAgICAgY2xpcC1wYXRoOiBwb2x5Z29uKDUwJSAwJSwgMzglIDM4JSwgMCUgMzglLCAz
MCUgNjAlLCAxOCUgMTAwJSwgNTAlIDc1JSwgODIlIDEwMCUsIDcwJSA2MCUsIDEwMCUgMzglLCA2
MiUgMzglKTsKKyAgICB9CisgIDwvc3R5bGU+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlw
ZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PiAgCisgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0
YWdlLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0
aWNsZXMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXNo
YXBlcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0ic3RhZ2UiPjwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1p
bWFnZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9j
c3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PiAgCisgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYmVu
Y2htYXJrLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRp
ZXMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48
L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMi
Pjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxzdmcgaWQ9InN0YWdlIj48L3N2Zz4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
Ym91bmNpbmctc3ZnLXNoYXBlcy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVz
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBo
cmVmPSIuLi9yZXNvdXJjZXMvYmVuY2htYXJrLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9t
YXRoLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsu
anMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+
PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0
PgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3Jp
cHQ+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHN2ZyBpZD0ic3RhZ2UiPjwvc3ZnPgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzCShyZXZpc2lvbiAwKQorKysg
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNv
dXJjZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDgyIEBACitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc0ltYWdlKHN0YWdlKSB7CisgICAgQm91bmNp
bmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gc3RhZ2Uu
Y29udGV4dDsKKyAgICB0aGlzLl9pbWFnZUVsZW1lbnQgPSBzdGFnZS5pbWFnZUVsZW1lbnQ7Cit9
CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2lu
Z1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc0ltYWdlLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzSW1hZ2U7CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2UucHJv
dG90eXBlLl9kcmF3ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGNlbnRlciA9IHRoaXMuY2VudGVy
KCk7CisKKyAgICB0aGlzLl9jb250ZXh0LnNhdmUoKTsKKyAgICB0aGlzLl9jb250ZXh0LnRyYW5z
bGF0ZShjZW50ZXIueCwgY2VudGVyLnkpOworICAgIHRoaXMuX2NvbnRleHQucm90YXRlKHRoaXMu
X3JvdGF0ZXIuZGVncmVlKCkgKiBNYXRoLlBJIC8gMTgwKTsKKyAgICB0aGlzLl9jb250ZXh0LnRy
YW5zbGF0ZSgtdGhpcy5fc2l6ZS54IC8gMiwgLXRoaXMuX3NpemUueSAvIDIpOworICAgIAorICAg
IHRoaXMuX2NvbnRleHQuZHJhd0ltYWdlKHRoaXMuX2ltYWdlRWxlbWVudCwgMCwgMCwgdGhpcy5f
c2l6ZS54LCB0aGlzLl9zaXplLnkpOworICAgIHRoaXMuX2NvbnRleHQucmVzdG9yZSgpOworfQor
CitCb3VuY2luZ0NhbnZhc0ltYWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURl
bHRhKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMs
IHRpbWVEZWx0YSk7CisgICAgdGhpcy5fZHJhdygpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0Nh
bnZhc0ltYWdlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xl
c1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5jb250ZXh0ID0g
dGhpcy5lbGVtZW50LmdldENvbnRleHQoIjJkIik7CisgICAgdmFyIGltYWdlU3JjID0gb3B0aW9u
c1siaW1hZ2VTcmMiXSB8fCAicmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7CisgICAgCisgICAgdmFy
IGltYWdlRWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJoaWRkZW4i
KTsKKyAgICBjb25zb2xlLmFzc2VydChpbWFnZUVsZW1lbnRzLmxlbmd0aCk7CisgICAgICAgIAor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW1hZ2VFbGVtZW50cy5sZW5ndGg7ICsraSkgeworICAg
ICAgICBpZiAoaW1hZ2VFbGVtZW50c1tpXS5nZXRBdHRyaWJ1dGUoInNyYyIpID09IGltYWdlU3Jj
KSB7CisgICAgICAgICAgICB0aGlzLmltYWdlRWxlbWVudCA9IGltYWdlRWxlbWVudHNbaV07Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCisgICAgfQorCisgICAgdGhpcy5pbWFnZUVsZW1lbnQgPSB0aGlzLmltYWdlRWxlbWVu
dCB8fCBpbWFnZUVsZW1lbnRzWzBdOworfQorCitCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlLnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUp
OworQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3Vu
Y2luZ0NhbnZhc0ltYWdlc1N0YWdlOworCitCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlLnByb3Rv
dHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcgQm91bmNp
bmdDYW52YXNJbWFnZSh0aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNJbWFnZXNB
bmltYXRvcihiZW5jaG1hcmspIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLmNhbGwo
dGhpcywgYmVuY2htYXJrKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJrLl9zdGFnZS5j
b250ZXh0OworfQorCitCb3VuY2luZ0NhbnZhc0ltYWdlc0FuaW1hdG9yLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUpOworQm91bmNp
bmdDYW52YXNJbWFnZXNBbmltYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0Nh
bnZhc0ltYWdlc0FuaW1hdG9yOworCitCb3VuY2luZ0NhbnZhc0ltYWdlc0FuaW1hdG9yLnByb3Rv
dHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5fY29udGV4dC5jbGVhclJlY3Qo
MCwgMCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplKCkueCwgdGhpcy5fYmVuY2htYXJrLl9z
dGFnZS5zaXplKCkueSk7CisgICAgcmV0dXJuIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJv
dG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNJ
bWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0JhcikgeworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUs
IHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5n
Q2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQ
YXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2ht
YXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJr
OworCitCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2Ug
PSBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdl
c1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCitCb3VuY2luZ0NhbnZhc0ltYWdl
c0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlvbigpIHsKKyAgICBy
ZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzSW1hZ2VzQW5pbWF0b3IodGhpcyk7Cit9CisKK3dpbmRv
dy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIHdpbmRvdy5iZW5jaG1hcmsgPSBuZXcg
Qm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29y
ZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hh
cGVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanMJKHJl
dmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTQyIEBACitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1NoYXBlKHN0YWdl
KSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9z
aGFwZSA9IHN0YWdlLnNoYXBlOworICAgIHRoaXMuX2ZpbGwgPSBzdGFnZS5maWxsOworICAgIHRo
aXMuX2NsaXAgPSBzdGFnZS5jbGlwOworICAgIHRoaXMuX2NvbnRleHQgPSBzdGFnZS5jb250ZXh0
OworICAgIHRoaXMuX2NvbG9yMCA9IHN0YWdlLnJhbmRvbUNvbG9yKCk7CisgICAgdGhpcy5fY29s
b3IxID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsgICAgCit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGUu
cHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZSk7CitC
b3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFz
U2hhcGU7CisKK0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLl9kcmF3ID0gZnVuY3Rpb24o
KSB7CisgICAgCisgICAgdGhpcy5fY29udGV4dC5zYXZlKCk7CisgICAgdGhpcy5fY29udGV4dC50
cmFuc2xhdGUodGhpcy5fcG9zaXRpb24ueCwgdGhpcy5fcG9zaXRpb24ueSk7CisKKyAgICAvLyBT
ZXR0aW5nIHRoZSBmaWxsIHN0eWxlCisgICAgc3dpdGNoICh0aGlzLl9maWxsKSB7CisgICAgY2Fz
ZSAic29saWQiOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbFN0eWxl
ID0gdGhpcy5fY29sb3IwOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgImdyYWRpZW50IjoK
KyAgICAgICAgdmFyIGdyYWRpZW50ID0gdGhpcy5fY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVu
dCgwLCAwLCB0aGlzLl9zaXplLndpZHRoKCksIDApOworICAgICAgICBncmFkaWVudC5hZGRDb2xv
clN0b3AoMCwgdGhpcy5fY29sb3IwKTsKKyAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDEs
IHRoaXMuX2NvbG9yMSk7IAorICAgICAgICB0aGlzLl9jb250ZXh0LmZpbGxTdHlsZSA9IGdyYWRp
ZW50OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyBSb3RhdGlvbiBhcm91bmQgdGhl
IGNlbnRlcgorICAgIGlmICh0aGlzLl9zaGFwZSAhPSAiY2lyY2xlIikgeworICAgICAgICB0aGlz
Ll9jb250ZXh0LnRyYW5zbGF0ZSh0aGlzLl9zaXplLnggLyAyLCB0aGlzLl9zaXplLnkgLyAyKTsK
KyAgICAgICAgdGhpcy5fY29udGV4dC5yb3RhdGUodGhpcy5fcm90YXRlci5kZWdyZWUoKSAqIE1h
dGguUEkgLyAxODApOworICAgICAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSgtdGhpcy5fc2l6
ZS54IC8gMiwgLXRoaXMuX3NpemUueSAvIDIpOworICAgIH0KKworICAgIHZhciBjbGlwUG9pbnRz
ID0gbnVsbDsKKyAgICAKKyAgICBzd2l0Y2ggKHRoaXMuX2NsaXApIHsKKyAgICBjYXNlICJzdGFy
IjoKKyAgICAgICAgY2xpcFBvaW50cyA9ICBbCisgICAgICAgICAgICBuZXcgUG9pbnQoMC41MCwg
MC4wMCksCisgICAgICAgICAgICBuZXcgUG9pbnQoMC4zOCwgMC4zOCksCisgICAgICAgICAgICBu
ZXcgUG9pbnQoMC4wMCwgMC4zOCksCisgICAgICAgICAgICBuZXcgUG9pbnQoMC4zMCwgMC42MCks
CisgICAgICAgICAgICBuZXcgUG9pbnQoMC4xOCwgMS4wMCksCisgICAgICAgICAgICBuZXcgUG9p
bnQoMC41MCwgMC43NSksCisgICAgICAgICAgICBuZXcgUG9pbnQoMC44MiwgMS4wMCksCisgICAg
ICAgICAgICBuZXcgUG9pbnQoMC43MCwgMC42MCksCisgICAgICAgICAgICBuZXcgUG9pbnQoMS4w
MCwgMC4zOCksCisgICAgICAgICAgICBuZXcgUG9pbnQoMC42MiwgMC4zOCkKKyAgICAgICAgXTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGlmIChjbGlwUG9pbnRzKSB7CisgICAg
ICAgIHRoaXMuX2NvbnRleHQuYmVnaW5QYXRoKCk7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsK
KyAgICAgICAgY2xpcFBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKHBvaW50LCBpbmRleCkgeworICAg
ICAgICAgICAgdmFyIHBvaW50ID0gc2VsZi5fc2l6ZS5tdWx0aXBseShwb2ludCk7CisgICAgICAg
ICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgICAgIHNlbGYuX2NvbnRleHQubW92ZVRvKHBv
aW50LngsIHBvaW50LnkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNlbGYu
X2NvbnRleHQubGluZVRvKHBvaW50LngsIHBvaW50LnkpOworICAgICAgICB9KTsKKyAgICAgICAg
dGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTsKKyAgICAgICAgdGhpcy5fY29udGV4dC5jbGlwKCk7
CisgICAgfQorCisgICAgLy8gU2hhcGUgZHJhd2luZworICAgIHRoaXMuX2NvbnRleHQuYmVnaW5Q
YXRoKCk7CisgICAgCisgICAgc3dpdGNoICh0aGlzLl9zaGFwZSkgeworICAgIGNhc2UgImNpcmNs
ZSI6CisgICAgZGVmYXVsdDoKKyAgICAgICAgdmFyIGNlbnRlciA9IHRoaXMuX3NpemUuY2VudGVy
KCk7CisgICAgICAgIHZhciByYWRpdXMgPSBNYXRoLm1pbih0aGlzLl9zaXplLngsIHRoaXMuX3Np
emUueSkgLyAyOworICAgICAgICB0aGlzLl9jb250ZXh0LmFyYyhjZW50ZXIueCwgY2VudGVyLnks
IHJhZGl1cywgMCwgTWF0aC5QSSAqIDIsIHRydWUpOworICAgICAgICBicmVhazsKKyAgICAgICAg
CisgICAgY2FzZSAicmVjdCI6CisgICAgICAgIHRoaXMuX2NvbnRleHQucmVjdCgwLCAwLCB0aGlz
Ll9zaXplLndpZHRoKCksIHRoaXMuX3NpemUuaGVpZ2h0KCkpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgCisgICAgdGhpcy5fY29udGV4dC5maWxsKCk7CisgICAgdGhpcy5fY29udGV4dC5y
ZXN0b3JlKCk7Cit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLmFuaW1hdGUgPSBm
dW5jdGlvbih0aW1lRGVsdGEpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmlt
YXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlzLl9kcmF3KCk7Cit9CisKK2Z1bmN0
aW9uIEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykgeworICAgIEJv
dW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0
aGlzLnBhcnNlU2hhcGVQYXJhbXRlcnMob3B0aW9ucyk7CisgICAgdGhpcy5jb250ZXh0ID0gdGhp
cy5lbGVtZW50LmdldENvbnRleHQoIjJkIikKK30KKworQm91bmNpbmdDYW52YXNTaGFwZXNTdGFn
ZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90
eXBlKTsKK0JvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0g
Qm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZTsKKworQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS5w
cm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3IEJv
dW5jaW5nQ2FudmFzU2hhcGUodGhpcyk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzU2hh
cGVzQW5pbWF0b3IoYmVuY2htYXJrKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5j
YWxsKHRoaXMsIGJlbmNobWFyayk7CisgICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3Rh
Z2UuY29udGV4dDsKK30KKworQm91bmNpbmdDYW52YXNTaGFwZXNBbmltYXRvci5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlKTsKK0Jv
dW5jaW5nQ2FudmFzU2hhcGVzQW5pbWF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNp
bmdDYW52YXNTaGFwZXNBbmltYXRvcjsKKworQm91bmNpbmdDYW52YXNTaGFwZXNBbmltYXRvci5w
cm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkgeworICAgIHRoaXMuX2NvbnRleHQuY2xlYXJS
ZWN0KDAsIDAsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZSgpLngsIHRoaXMuX2JlbmNobWFy
ay5fc3RhZ2Uuc2l6ZSgpLnkpOworICAgIHJldHVybiBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9y
LnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcyk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ2Fu
dmFzU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3Vu
Y2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5j
aW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc1NoYXBlc0Jl
bmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNo
bWFyazsKKworQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0
YWdlID0gZnVuY3Rpb24oZWxlbWVudCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNT
aGFwZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKworQm91bmNpbmdDYW52YXNT
aGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKSB7Cisg
ICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc1NoYXBlc0FuaW1hdG9yKHRoaXMpOworfQorCit3
aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICB3aW5kb3cuYmVuY2htYXJrID0g
bmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBy
ZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctaW1hZ2Vz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWltYWdlcy5qcwkocmV2aXNpb24gMCkK
KysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
cmVzb3VyY2VzL2JvdW5jaW5nLWltYWdlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1
IEBACitmdW5jdGlvbiBCb3VuY2luZ0ltYWdlKHN0YWdlKSB7CisgICAgQm91bmNpbmdQYXJ0aWNs
ZS5jYWxsKHRoaXMsIHN0YWdlKTsKKworICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImltZyIpOworICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMuX3Np
emUueCArICJweCI7CisgICAgdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuX3NpemUu
eSArICJweCI7CisgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgic3JjIiwgc3RhZ2UuaW1h
Z2VTcmMpOworICAgIAorICAgIHN0YWdlLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50
KTsKKyAgICB0aGlzLl9tb3ZlKCk7Cit9CisKK0JvdW5jaW5nSW1hZ2UucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ0ltYWdlLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nSW1hZ2U7CisKK0JvdW5jaW5nSW1hZ2UucHJv
dG90eXBlLl9tb3ZlID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRyYW5z
Zm9ybSA9ICJ0cmFuc2xhdGUoIiArIHRoaXMuX3Bvc2l0aW9uLnggKyAicHgsIiArIHRoaXMuX3Bv
c2l0aW9uLnkgKyAicHgpICIgKyB0aGlzLl9yb3RhdGVyLnJvdGF0ZVooKTsKK30KKyAgICAKK0Jv
dW5jaW5nSW1hZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpIHsKKyAg
ICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRh
KTsKKyAgICB0aGlzLl9tb3ZlKCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nSW1hZ2VzU3RhZ2Uo
ZWxlbWVudCwgb3B0aW9ucykgeworICAgIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlz
LCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0aGlzLmltYWdlU3JjID0gb3B0aW9uc1siaW1hZ2VT
cmMiXSB8fCAiLi4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7Cit9CisKK0JvdW5jaW5nSW1hZ2Vz
U3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnBy
b3RvdHlwZSk7CitCb3VuY2luZ0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJv
dW5jaW5nSW1hZ2VzU3RhZ2U7CisKK0JvdW5jaW5nSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0
ZVBhcnRpY2xlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0ltYWdlKHRo
aXMpOworfQorCitCb3VuY2luZ0ltYWdlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJl
bW92ZWQgPSBmdW5jdGlvbihwYXJ0aWNsZSkgeworICAgIGlmIChwYXJ0aWNsZS5lbGVtZW50ICYm
IHBhcnRpY2xlLmVsZW1lbnQucGFyZW50Tm9kZSAmJiBwYXJ0aWNsZS5lbGVtZW50LnBhcmVudE5v
ZGUgPT0gdGhpcy5lbGVtZW50KQorICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQocGFy
dGljbGUuZWxlbWVudCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nSW1hZ2VzQmVuY2htYXJrKHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICBCb3Vu
Y2luZ1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBy
ZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3VuY2luZ0ltYWdlc0JlbmNobWFyay5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3Rv
dHlwZSk7CitCb3VuY2luZ0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBC
b3VuY2luZ0ltYWdlc0JlbmNobWFyazsKKworQm91bmNpbmdJbWFnZXNCZW5jaG1hcmsucHJvdG90
eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkgeworICAgIHJldHVybiBuZXcgQm91
bmNpbmdJbWFnZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKword2luZG93LmJl
bmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgd2luZG93LmJlbmNobWFyayA9IG5ldyBCb3Vu
Y2luZ0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHBy
b2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNl
cy9ib3VuY2luZy1wYXJ0aWNsZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODAgQEAK
K2Z1bmN0aW9uIEJvdW5jaW5nUGFydGljbGVSb3RhdGVyKHJvdGF0ZUludGVydmFsKSB7CisgICAg
dGhpcy5fdGltZURlbHRhID0gMDsKKyAgICB0aGlzLl9yb3RhdGVJbnRlcnZhbCA9IHJvdGF0ZUlu
dGVydmFsOworfQorCitCb3VuY2luZ1BhcnRpY2xlUm90YXRlci5wcm90b3R5cGUgPSB7CisgICAg
bmV4dCA6IGZ1bmN0aW9uKHRpbWVEZWx0YSkgeworICAgICAgICB0aGlzLl90aW1lRGVsdGEgPSAo
dGhpcy5fdGltZURlbHRhICsgdGltZURlbHRhKSAlIHRoaXMuX3JvdGF0ZUludGVydmFsOworICAg
IH0sCisgICAgZGVncmVlIDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiAoMzYwICogdGhp
cy5fdGltZURlbHRhKSAvIHRoaXMuX3JvdGF0ZUludGVydmFsOworICAgIH0sCisgICAgcm90YXRl
WiA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gInJvdGF0ZVooIiArIE1hdGguZmxvb3Io
dGhpcy5kZWdyZWUoKSkgKyAiZGVnKSI7CisgICAgfSwKKyAgICByb3RhdGUgOiBmdW5jdGlvbigp
IHsgICAgCisgICAgICAgIHJldHVybiAicm90YXRlKCIgKyBNYXRoLmZsb29yKHRoaXMuZGVncmVl
KCkpICsgIikgIjsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nUGFydGljbGUoc3RhZ2Up
IHsKKyAgICB0aGlzLl9zdGFnZVNpemUgPSBzdGFnZS5zaXplKCk7CisgICAgdGhpcy5fc2l6ZSA9
IHN0YWdlLnBhcnRpY2xlU2l6ZTsKKyAgICAKKyAgICB0aGlzLl9wb3NpdGlvbiA9IHN0YWdlLnJh
bmRvbVBvc2l0aW9uKCk7CisgICAgdGhpcy5fYW5nbGUgPSBzdGFnZS5yYW5kb21BbmdsZSgpOwor
ICAgIHRoaXMuX3ZlbG9jaXR5ID0gc3RhZ2UucmFuZG9tVmVsb2NpdHkoKTsKKyAgICB0aGlzLl9y
b3RhdGVyID0gc3RhZ2UucmFuZG9tUm90YXRlcigpOworfQorCitCb3VuY2luZ1BhcnRpY2xlLnBy
b3RvdHlwZSA9IHsKKyAgICBjZW50ZXIgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3Bvc2l0aW9uLmFkZCh0aGlzLl9zaXplLmNlbnRlcigpKTsKKyAgICB9LAorICAgIGFuaW1h
dGUgOiBmdW5jdGlvbih0aW1lRGVsdGEpIHsKKyAgICAgICAgdGhpcy5fcG9zaXRpb24gPSB0aGlz
Ll9wb3NpdGlvbi5tb3ZlKHRoaXMuX2FuZ2xlLCB0aGlzLl92ZWxvY2l0eSwgdGltZURlbHRhKTsK
KyAgICAgICAgdGhpcy5fcm90YXRlci5uZXh0KHRpbWVEZWx0YSk7CisKKyAgICAgICAgLy8gSWYg
cGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgcmlnaHQgc2lkZQorICAgICAgICBpZiAodGhp
cy5fcG9zaXRpb24ueCArIHRoaXMuX3NpemUueCA+IHRoaXMuX3N0YWdlU2l6ZS54KSB7CisgICAg
ICAgICAgICAvLyBJZiBkaXJlY3Rpb24gaXMgRWFzdC1Tb3V0aAorICAgICAgICAgICAgaWYgKHRo
aXMuX2FuZ2xlID49IDAgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJIC8gMikKKyAgICAgICAgICAg
ICAgICB0aGlzLl9hbmdsZSA9IE1hdGguUEkgLSB0aGlzLl9hbmdsZTsKKyAgICAgICAgICAgIC8v
IElmIGFuZ2xlIGlzIEVhc3QtTm9ydGgKKyAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX2FuZ2xl
ID4gTWF0aC5QSSAvIDIgKiAzKQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0gdGhpcy5f
YW5nbGUgLSAodGhpcy5fYW5nbGUgLSBNYXRoLlBJIC8gMiAqIDMpICogMjsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgbGVm
dCBzaWRlCisgICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbi54IDwgMCkgeworICAgICAgICAgICAg
Ly8gSWYgYW5nbGUgaXMgV2VzdC1Tb3V0aAorICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID4g
TWF0aC5QSSAvIDIgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJKQorICAgICAgICAgICAgICAgIHRo
aXMuX2FuZ2xlID0gTWF0aC5QSSAtIHRoaXMuX2FuZ2xlOworICAgICAgICAgICAgLy8gSWYgYW5n
bGUgaXMgV2VzdC1Ob3J0aAorICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5fYW5nbGUgPiBNYXRo
LlBJICYmIHRoaXMuX2FuZ2xlIDwgTWF0aC5QSSAvIDIgKiAzKQorICAgICAgICAgICAgICAgIHRo
aXMuX2FuZ2xlID0gdGhpcy5fYW5nbGUgKyAoTWF0aC5QSSAvIDIgKiAzIC0gdGhpcy5fYW5nbGUp
ICogMjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHBhcnRpY2xlIGlzIGdvaW5nIHRvIG1v
dmUgb2ZmIGJvdHRvbSBzaWRlCisgICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbi55ICsgdGhpcy5f
c2l6ZS55ID4gdGhpcy5fc3RhZ2VTaXplLnkpIHsKKyAgICAgICAgICAgIC8vIElmIGRpcmVjdGlv
biBpcyBTb3V0aAorICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID4gMCAmJiB0aGlzLl9hbmds
ZSA8IE1hdGguUEkpCisgICAgICAgICAgICAgICAgdGhpcy5fYW5nbGUgPSBNYXRoLlBJICogMiAt
IHRoaXMuX2FuZ2xlOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29p
bmcgdG8gbW92ZSBvZmYgdG9wIHNpZGUKKyAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uLnkgPCAw
KSB7CisgICAgICAgICAgICAvLyBJZiBkaXJlY3Rpb24gaXMgTm9ydGgKKyAgICAgICAgICAgIGlm
ICh0aGlzLl9hbmdsZSA+IE1hdGguUEkgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJICogMikKKyAg
ICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IHRoaXMuX2FuZ2xlIC0gKHRoaXMuX2FuZ2xlIC0g
TWF0aC5QSSkgKiAyOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBCb3VuY2luZ1Bh
cnRpY2xlc0FuaW1hdG9yKGJlbmNobWFyaykgeworICAgIEFuaW1hdG9yLmNhbGwodGhpcywgYmVu
Y2htYXJrKTsKK307CisKK0JvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShBbmltYXRvci5wcm90b3R5cGUpOworQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRv
ci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yOworCitC
b3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKSB7
CisgICAgaWYgKCFBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5hbmltYXRlKHRoaXMu
dGltZURlbHRhKCkpOworICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiBCb3VuY2luZ1Bh
cnRpY2xlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpIHsKKyAgICBTdGFnZS5jYWxsKHRoaXMsIGVs
ZW1lbnQpOworICAgIAorICAgIHRoaXMucGFydGljbGVTaXplID0gbmV3IFBvaW50KHBhcnNlSW50
KG9wdGlvbnNbInBhcnRpY2xlV2lkdGgiXSkgfHwgMTAsIHBhcnNlSW50KG9wdGlvbnNbInBhcnRp
Y2xlSGVpZ2h0Il0pIHx8IDEwKTsKKyAgICB0aGlzLnN2Z05hbWVzcGFjZSA9ICJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyI7CisgICAgdGhpcy54bGlua05hbWVzcGFjZSA9ICJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIjsKKyAgICAKKyAgICB0aGlzLl9wYXJ0aWNsZXMgPSBbXTsKKwor
ICAgIHRoaXMuX21heFZlbG9jaXR5ID0gcGFyc2VJbnQob3B0aW9uc1sibWF4VmVsb2NpdHkiXSkg
fHwgNTAwOworICAgIHRoaXMuX21heFZlbG9jaXR5ID0gTWF0aC5tYXgodGhpcy5fbWF4VmVsb2Np
dHksIDEwMCk7Cit9CisKK0JvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlOworCitCb3VuY2luZ1BhcnRp
Y2xlc1N0YWdlLnByb3RvdHlwZS5wYXJzZVNoYXBlUGFyYW10ZXJzID0gZnVuY3Rpb24ob3B0aW9u
cykgeworICAgIHRoaXMuc2hhcGUgPSBvcHRpb25zWyJzaGFwZSJdIHx8ICJjaXJjbGUiOworICAg
IHRoaXMuZmlsbCA9IG9wdGlvbnNbImZpbGwiXSB8fCAic29saWQiOworICAgIHRoaXMuY2xpcCA9
IG9wdGlvbnNbImNsaXAiXSB8fCAiIjsKK30KKworQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90
b3R5cGUucmFuZG9tUm90YXRlciA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcgQm91bmNp
bmdQYXJ0aWNsZVJvdGF0ZXIodGhpcy5yYW5kb20oMTAwMCwgMTAwMDApKTsKK30KKyAgICAKK0Jv
dW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVs
dGEpIHsKKyAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5fcGFydGljbGVzLmxlbmd0aDsgKytp
KQorICAgICAgICB0aGlzLl9wYXJ0aWNsZXNbaV0uYW5pbWF0ZSh0aW1lRGVsdGEpOworfQorICAg
IAorQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50
KSB7CisgICAgY291bnQgPSBjb3VudCA+IDAgPyBNYXRoLmZsb29yKGNvdW50KSA6IE1hdGguY2Vp
bChjb3VudCk7CisKKyAgICBpZiAoY291bnQgPT0gMCkKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Bh
cnRpY2xlcy5sZW5ndGg7CisKKyAgICBpZiAoY291bnQgPiAwKSB7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHR5cGVvZih0aGlzLmNyZWF0ZVBhcnRpY2xlKSA9PSAiZnVuY3Rpb24iKTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgdGhpcy5fcGFy
dGljbGVzLnB1c2godGhpcy5jcmVhdGVQYXJ0aWNsZSgpKTsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X3BhcnRpY2xlcy5sZW5ndGg7CisgICAgfQorCisgICAgY291bnQgPSBNYXRoLm1pbigtY291bnQs
IHRoaXMuX3BhcnRpY2xlcy5sZW5ndGgpOworICAgICAgICAKKyAgICBpZiAodHlwZW9mKHRoaXMu
cGFydGljbGVXaWxsQmVSZW1vdmVkKSA9PSAiZnVuY3Rpb24iKSB7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgIHRoaXMucGFydGljbGVXaWxsQmVS
ZW1vdmVkKHRoaXMuX3BhcnRpY2xlc1t0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoIC0gMSAtIGldKTsK
KyAgICB9CisKKyAgICB0aGlzLl9wYXJ0aWNsZXMuc3BsaWNlKC1jb3VudCwgY291bnQpOworICAg
IHJldHVybiB0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoOworfQorCitmdW5jdGlvbiBCb3VuY2luZ1Bh
cnRpY2xlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dy
ZXNzQmFyKSB7CisgICAgQmVuY2htYXJrLmNhbGwodGhpcywgb3B0aW9ucyk7CisKKyAgICB2YXIg
ZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFnZSIpOworICAgIGVsZW1lbnQu
c2V0QXR0cmlidXRlKCJ3aWR0aCIsIGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgpOworICAgIGVs
ZW1lbnQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCk7
CisKKyAgICB0aGlzLl9zdGFnZSA9IHRoaXMuY3JlYXRlU3RhZ2UoZWxlbWVudCk7CisgICAgdGhp
cy5fYW5pbWF0b3IgPSB0aGlzLmNyZWF0ZUFuaW1hdG9yKCk7CisgICAgdGhpcy5fc3VpdGUgPSBz
dWl0ZTsKKyAgICB0aGlzLl90ZXN0ID0gdGVzdDsKKyAgICB0aGlzLl9yZWNvcmRUYWJsZSA9IHJl
Y29yZFRhYmxlOworICAgIHRoaXMuX3Byb2dyZXNzQmFyID0gcHJvZ3Jlc3NCYXI7Cit9CisKK0Jv
dW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQmVuY2ht
YXJrLnByb3RvdHlwZSk7CitCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyazsKKworQm91bmNpbmdQYXJ0aWNs
ZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKSB7CisgICAg
cmV0dXJuIG5ldyBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yKHRoaXMpOworfQorCitCb3VuY2lu
Z1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KSB7Cisg
ICAgcmV0dXJuIHRoaXMuX3N0YWdlLnR1bmUoY291bnQpOworfQorCitCb3VuY2luZ1BhcnRpY2xl
c0JlbmNobWFyay5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhp
cy5fc3RhZ2UuY2xlYXIoKTsKK30KKworQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90
eXBlLnNob3dSZXN1bHRzID0gZnVuY3Rpb24obWVzc2FnZSwgcHJvZ3Jlc3MpIHsKKyAgICBpZiAo
IXRoaXMuX3JlY29yZFRhYmxlIHx8ICF0aGlzLl9wcm9ncmVzc0JhciB8fCAhdGhpcy5fc3VpdGUg
fHwgIXRoaXMuX3Rlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIHRoaXMuX3JlY29yZFRhYmxl
LnNob3dSZWNvcmQodGhpcy5fc3VpdGUsIHRoaXMuX3Rlc3QsIHRoaXMuX3NhbXBsZXIsIG1lc3Nh
Z2UpOworICAgIHRoaXMuX3Byb2dyZXNzQmFyLnNldFBvcyhwcm9ncmVzcyk7Cit9CkluZGV4OiBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1zaGFwZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc2hh
cGVzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc2hhcGVzLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nU2hhcGUoc3RhZ2UpIHsK
KyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworCisgICAgdGhpcy5lbGVt
ZW50ID0gdGhpcy5fY3JlYXRlU3BhbihzdGFnZSk7CisgICAgICAgIAorICAgIHN3aXRjaCAoc3Rh
Z2UuZmlsbCkgeworICAgIGNhc2UgInNvbGlkIjoKKyAgICBkZWZhdWx0OgorICAgICAgICB0aGlz
LmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgImdyYWRpZW50IjoKKyAgICAgICAgdGhp
cy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmQgPSAibGluZWFyLWdyYWRpZW50KCIgKyBzdGFnZS5y
YW5kb21Db2xvcigpICsgIiwgIiArIHN0YWdlLnJhbmRvbUNvbG9yKCkgKyAiKSI7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIHRoaXMuX21vdmUoKTsKK30KKworQm91bmNpbmdTaGFwZS5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlKTsKK0Jv
dW5jaW5nU2hhcGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTaGFwZTsKKworQm91
bmNpbmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVNwYW4gPSBmdW5jdGlvbihzdGFnZSkgeworICAg
IHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIHNwYW4uY2xh
c3NOYW1lID0gc3RhZ2Uuc2hhcGUgKyAiICIgKyBzdGFnZS5jbGlwOworICAgIHNwYW4uc3R5bGUu
d2lkdGggPSB0aGlzLl9zaXplLnggKyAicHgiOworICAgIHNwYW4uc3R5bGUuaGVpZ2h0ID0gdGhp
cy5fc2l6ZS55ICsgInB4IjsKKyAgICBzdGFnZS5lbGVtZW50LmFwcGVuZENoaWxkKHNwYW4pOwor
ICAgIHJldHVybiBzcGFuOworfQorCitCb3VuY2luZ1NoYXBlLnByb3RvdHlwZS5fbW92ZSA9IGZ1
bmN0aW9uKCkgeworICAgIHRoaXMuZWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSAidHJhbnNsYXRl
KCIgKyB0aGlzLl9wb3NpdGlvbi54ICsgInB4LCIgKyB0aGlzLl9wb3NpdGlvbi55ICsgInB4KSIg
KyB0aGlzLl9yb3RhdGVyLnJvdGF0ZVooKTsKK30KKyAgICAKK0JvdW5jaW5nU2hhcGUucHJvdG90
eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xl
LnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlzLl9yb3Rh
dGVyLm5leHQodGltZURlbHRhKTsgICAgCisgICAgdGhpcy5fbW92ZSgpOworfQorCitmdW5jdGlv
biBCb3VuY2luZ1NoYXBlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpIHsKKyAgICBCb3VuY2luZ1Bh
cnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5wYXJz
ZVNoYXBlUGFyYW10ZXJzKG9wdGlvbnMpOworfQorCitCb3VuY2luZ1NoYXBlc1N0YWdlLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOwor
Qm91bmNpbmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1NoYXBl
c1N0YWdlOworCitCb3VuY2luZ1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9
IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBuZXcgQm91bmNpbmdTaGFwZSh0aGlzKTsKK30KKwor
Qm91bmNpbmdTaGFwZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkID0gZnVu
Y3Rpb24ocGFydGljbGUpIHsKKyAgICBpZiAocGFydGljbGUuZWxlbWVudCAmJiBwYXJ0aWNsZS5l
bGVtZW50LnBhcmVudE5vZGUgJiYgcGFydGljbGUuZWxlbWVudC5wYXJlbnROb2RlID09IHRoaXMu
ZWxlbWVudCkKKyAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKHBhcnRpY2xlLmVsZW1l
bnQpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwg
b3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7CisgICAgQm91bmNpbmdQYXJ0aWNs
ZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUs
IHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOworQm91
bmNpbmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTaGFw
ZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVT
dGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nU2hhcGVz
U3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGll
bnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBw
cm9ncmVzc0JhcikgeworICAgIHdpbmRvdy5iZW5jaG1hcmsgPSBuZXcgQm91bmNpbmdTaGFwZXNC
ZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7
Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3Vy
Y2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2lu
Zy1zdmctaW1hZ2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAKK2Z1bmN0aW9u
IEJvdW5jaW5nU3ZnSW1hZ2Uoc3RhZ2UpIHsKKyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhp
cywgc3RhZ2UpOworCisgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KHN0YWdlLnN2Z05hbWVzcGFjZSwgImltYWdlIik7CisgICAgdGhpcy5lbGVtZW50LnNldEF0dHJp
YnV0ZSgieCIsIDApOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInkiLCAwKTsgICAg
CisgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgid2lkdGgiLCB0aGlzLl9zaXplLngpOwor
ICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIHRoaXMuX3NpemUueSk7Cisg
ICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZU5TKHN0YWdlLnhsaW5rTmFtZXNwYWNlLCAiaHJl
ZiIsIHN0YWdlLmltYWdlU3JjKTsKKworICAgIHN0YWdlLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5lbGVtZW50KTsKKyAgICB0aGlzLl9tb3ZlKCk7ICAgIAorfQorCitCb3VuY2luZ1N2Z0ltYWdl
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUpOwor
Qm91bmNpbmdTdmdJbWFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1N2Z0ltYWdl
OworCitCb3VuY2luZ1N2Z0ltYWdlLnByb3RvdHlwZS5fbW92ZSA9IGZ1bmN0aW9uKCkgeworICAg
IHZhciBjZW50ZXIgPSB0aGlzLmNlbnRlcigpOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1
dGUoInRyYW5zZm9ybSIsIAorICAgICAgICAidHJhbnNsYXRlKCIgKyBjZW50ZXIueCArICIsICIg
KyBjZW50ZXIueSArICIpICIKKyAgICAgICAgKyB0aGlzLl9yb3RhdGVyLnJvdGF0ZSgpCisgICAg
ICAgICsgInRyYW5zbGF0ZSgiICsgLXRoaXMuX3NpemUueCAvIDIgKyAiLCAiICsgLXRoaXMuX3Np
emUueSAvIDIgKyAiKSAiKTsKK30KKworQm91bmNpbmdTdmdJbWFnZS5wcm90b3R5cGUuYW5pbWF0
ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkgeworICAgIEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBl
LmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEpOworICAgIHRoaXMuX21vdmUoKTsKK30KKwor
ZnVuY3Rpb24gQm91bmNpbmdTdmdJbWFnZXNTdGFnZShlbGVtZW50LCBvcHRpb25zKSB7CisgICAg
Qm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAg
IHRoaXMuaW1hZ2VTcmMgPSBvcHRpb25zWyJpbWFnZVNyYyJdIHx8ICJyZXNvdXJjZXMveWluLXlh
bmcuc3ZnIjsKK30KKworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3Qu
Y3JlYXRlKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnSW1h
Z2VzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdJbWFnZXNTdGFnZTsK
KworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5j
dGlvbigpIHsKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nU3ZnSW1hZ2UodGhpcyk7Cit9CisKK0Jv
dW5jaW5nU3ZnSW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCA9IGZ1
bmN0aW9uKHBhcnRpY2xlKSB7CisgICAgaWYgKHBhcnRpY2xlLmVsZW1lbnQgJiYgcGFydGljbGUu
ZWxlbWVudC5wYXJlbnROb2RlICYmIHBhcnRpY2xlLmVsZW1lbnQucGFyZW50Tm9kZSA9PSB0aGlz
LmVsZW1lbnQpCisgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZChwYXJ0aWNsZS5lbGVt
ZW50KTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikgeworICAgIEJvdW5jaW5nUGFy
dGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRh
YmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBl
KTsKK0JvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJv
dW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrOworCitCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyay5w
cm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgcmV0dXJuIG5l
dyBCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCit3
aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICB3aW5kb3cuYmVuY2htYXJrID0g
bmV3IEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBl
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpzCShyZXZpc2lv
biAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE2MSBAQAorZnVuY3Rpb24gQm91bmNpbmdTdmdTaGFwZShzdGFnZSkgeworICAgIEJv
dW5jaW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CisgICAgdGhpcy5fc2hhcGUgPSBzdGFn
ZS5zaGFwZTsKKyAgICAKKyAgICBzd2l0Y2ggKHRoaXMuX3NoYXBlKSB7CisgICAgY2FzZSAiY2ly
Y2xlIjoKKyAgICBkZWZhdWx0OgorICAgICAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLl9jcmVhdGVD
aXJjbGUoc3RhZ2UpOworICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSAicmVjdCI6
CisgICAgICAgIHRoaXMuZWxlbWVudCA9IHRoaXMuX2NyZWF0ZVJlY3Qoc3RhZ2UpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHN0YWdlLmNsaXApIHsKKyAgICBjYXNlICJz
dGFyIjoKKyAgICAgICAgc3RhZ2UuZW5zdXJlQ2xpcFN0YXJJc0NyZWF0ZWQoKTsgICAgCisgICAg
ICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImNsaXAtcGF0aCIsICJ1cmwoI3N0YXItY2xp
cCkiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dpdGNoIChzdGFnZS5maWxsKSB7
CisgICAgY2FzZSAic29saWQiOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHRoaXMuZWxlbWVudC5z
ZXRBdHRyaWJ1dGUoImZpbGwiLCBzdGFnZS5yYW5kb21Db2xvcigpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgICAgIAorICAgIGNhc2UgImdyYWRpZW50IjoKKyAgICAgICAgdmFyIGdyYWRpZW50ID0g
c3RhZ2UuY3JlYXRlR3JhZGllbnQoMik7CisgICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1
dGUoImZpbGwiLCAidXJsKCMiICsgZ3JhZGllbnQuZ2V0QXR0cmlidXRlKCJpZCIpICsgIikiKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgdGhpcy5fbW92ZSgpOyAgICAKK30KKworQm91
bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUu
cHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91
bmNpbmdTdmdTaGFwZTsKKworQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZUNpcmNs
ZSA9IGZ1bmN0aW9uKHN0YWdlKSB7CisgICAgdmFyIGNpcmNsZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUyhzdGFnZS5zdmdOYW1lc3BhY2UsICJjaXJjbGUiKTsKKyAgICBjaXJjbGUuc2V0QXR0
cmlidXRlKCJjeCIsIHRoaXMuX3NpemUueCAvIDIpOworICAgIGNpcmNsZS5zZXRBdHRyaWJ1dGUo
ImN5IiwgdGhpcy5fc2l6ZS55IC8gMik7ICAgIAorICAgIGNpcmNsZS5zZXRBdHRyaWJ1dGUoInIi
LCBNYXRoLm1pbih0aGlzLl9zaXplLngsIHRoaXMuX3NpemUueSkgLyAyKTsKKyAgICBzdGFnZS5l
bGVtZW50LmFwcGVuZENoaWxkKGNpcmNsZSk7CisgICAgcmV0dXJuIGNpcmNsZTsKK30KKworQm91
bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVJlY3QgPSBmdW5jdGlvbihzdGFnZSkgewor
ICAgIHZhciByZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN0YWdlLnN2Z05hbWVzcGFj
ZSwgInJlY3QiKTsKKyAgICByZWN0LnNldEF0dHJpYnV0ZSgieCIsIDApOworICAgIHJlY3Quc2V0
QXR0cmlidXRlKCJ5IiwgMCk7ICAgIAorICAgIHJlY3Quc2V0QXR0cmlidXRlKCJ3aWR0aCIsIHRo
aXMuX3NpemUueCk7CisgICAgcmVjdC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIHRoaXMuX3NpemUu
eSk7CisgICAgc3RhZ2UuZWxlbWVudC5hcHBlbmRDaGlsZChyZWN0KTsgICAgCisgICAgcmV0dXJu
IHJlY3Q7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLl9tb3ZlID0gZnVuY3Rpb24o
KSB7CisgICAgdmFyIHRyYW5zZm9ybTsKKyAgICBpZiAodGhpcy5fc2hhcGUgPT0gImNpcmNsZSIp
CisgICAgICAgIHRyYW5zZm9ybSA9ICJ0cmFuc2xhdGUoIiArIHRoaXMuX3Bvc2l0aW9uLnggKyAi
LCAiICsgdGhpcy5fcG9zaXRpb24ueSArICIpIjsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIGNl
bnRlciA9IHRoaXMuY2VudGVyKCk7CisgICAgICAgIHRyYW5zZm9ybSAgPSAidHJhbnNsYXRlKCIg
KyBjZW50ZXIueCArICIsICIgKyBjZW50ZXIueSArICIpICI7CisgICAgICAgIHRyYW5zZm9ybSAr
PSB0aGlzLl9yb3RhdGVyLnJvdGF0ZSgpOworICAgICAgICB0cmFuc2Zvcm0gKz0gInRyYW5zbGF0
ZSgiICsgLXRoaXMuX3NpemUud2lkdGgoKSAvIDIgKyAiLCAiICsgLXRoaXMuX3NpemUuaGVpZ2h0
KCkgLyAyICsgIikiOworICAgIH0KKyAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJ0cmFu
c2Zvcm0iLCB0cmFuc2Zvcm0pOworfQorCitCb3VuY2luZ1N2Z1NoYXBlLnByb3RvdHlwZS5hbmlt
YXRlID0gZnVuY3Rpb24odGltZURlbHRhKSB7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5
cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7CisgICAgdGhpcy5fbW92ZSgpOworfQor
CitmdW5jdGlvbiBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpIHsKKyAg
ICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Cisg
ICAgdGhpcy5wYXJzZVNoYXBlUGFyYW10ZXJzKG9wdGlvbnMpOworfQorCitCb3VuY2luZ1N2Z1No
YXBlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFn
ZS5wcm90b3R5cGUpOworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0
b3IgPSBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitCb3VuY2luZ1N2Z1NoYXBlc1N0
YWdlLnByb3RvdHlwZS5lbnN1cmVDbGlwU3RhcklzQ3JlYXRlZCA9IGZ1bmN0aW9uKCkgeworICAg
IHJldHVybiB0aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvcigiI3N0YXItY2xpcCIpIHx8IHRoaXMu
X2NyZWF0ZUNsaXBTdGFyKCk7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBl
LmVuc3VyZURlZnNJc0NyZWF0ZWQgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5lbGVt
ZW50LnF1ZXJ5U2VsZWN0b3IoImRlZnMiKSB8fCB0aGlzLl9jcmVhdGVEZWZzKCk7Cit9CisKK0Jv
dW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZUdyYWRpZW50ID0gZnVuY3Rpb24o
c3RvcHMpIHsKKyAgICB2YXIgZ3JhZGllbnQgID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHRo
aXMuc3ZnTmFtZXNwYWNlLCAibGluZWFyR3JhZGllbnQiKTsKKyAgICAKKyAgICBpZiAodHlwZW9m
IHRoaXMuX2dhZGllbnRzQ291bnQgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICB0aGlzLl9nYWRp
ZW50c0NvdW50ID0gMDsgICAgCisgICAgZ3JhZGllbnQuc2V0QXR0cmlidXRlKCJpZCIsICJnYWRp
ZW50LSIgKyArK3RoaXMuX2dhZGllbnRzQ291bnQpOworICAgIAorICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgc3RvcHM7ICsraSkgeworICAgICAgICB2YXIgc3RvcCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUyh0aGlzLnN2Z05hbWVzcGFjZSwgInN0b3AiKTsKKyAgICAgICAgc3RvcC5zZXRBdHRy
aWJ1dGUoIm9mZnNldCIsIGkgKiAxMDAgLyBzdG9wcyArICIlIik7CisgICAgICAgIHN0b3Auc2V0
QXR0cmlidXRlKCJzdG9wLWNvbG9yIiwgdGhpcy5yYW5kb21Db2xvcigpKTsKKyAgICAgICAgZ3Jh
ZGllbnQuYXBwZW5kQ2hpbGQoc3RvcCk7CisgICAgfQorCisgICAgdGhpcy5lbnN1cmVEZWZzSXND
cmVhdGVkKCkuYXBwZW5kQ2hpbGQoZ3JhZGllbnQpOworICAgIHJldHVybiBncmFkaWVudDsKK30K
KworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuX2NyZWF0ZURlZnMgPSBmdW5jdGlv
bigpIHsKKyAgICB2YXIgZGVmcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0aGlzLnN2Z05h
bWVzcGFjZSwiZGVmcyIpOworICAgIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUoZGVmcywgdGhp
cy5lbGVtZW50LmZpcnN0Q2hpbGQpOworICAgIHJldHVybiBkZWZzOworfQorICAgIAorQm91bmNp
bmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuX2NyZWF0ZUNsaXBTdGFyID0gZnVuY3Rpb24oKSB7
CisgICAgdmFyIGNsaXBQYXRoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHRoaXMuc3ZnTmFt
ZXNwYWNlLCAiY2xpcFBhdGgiKTsKKyAgICBjbGlwUGF0aC5zZXRBdHRyaWJ1dGUoImlkIiwgInN0
YXItY2xpcCIpOworICAgIGNsaXBQYXRoLnNldEF0dHJpYnV0ZSgiY2xpcFBhdGhVbml0cyIsICJv
YmplY3RCb3VuZGluZ0JveCIpOworICAgIAorICAgIHZhciBwYXRoID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKHRoaXMuc3ZnTmFtZXNwYWNlLCAicGF0aCIpOworICAgIHBhdGguc2V0QXR0cmli
dXRlKCJkIiwgIk0uNTAsMEwuMzgsLjM4TDAsLjM4TC4zMCwuNjBMLjE4LDFMLjUwLC43NUwuODIs
MUwuNzAsLjYwTDEsLjM4TC42MiwuMzh6Iik7CisgICAgY2xpcFBhdGguYXBwZW5kQ2hpbGQocGF0
aCk7CisgICAgCisgICAgdGhpcy5lbnN1cmVEZWZzSXNDcmVhdGVkKCkuYXBwZW5kQ2hpbGQoY2xp
cFBhdGgpOworICAgIHJldHVybiBjbGlwUGF0aDsKK30KKworQm91bmNpbmdTdmdTaGFwZXNTdGFn
ZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gbmV3
IEJvdW5jaW5nU3ZnU2hhcGUodGhpcyk7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJv
dG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xlKSB7CisgICAg
aWYgKCFwYXJ0aWNsZS5lbGVtZW50IHx8ICFwYXJ0aWNsZS5lbGVtZW50LnBhcmVudE5vZGUgfHwg
cGFydGljbGUuZWxlbWVudC5wYXJlbnROb2RlICE9IHRoaXMuZWxlbWVudCkKKyAgICAgICAgcmV0
dXJuOworICAgICAgICAKKyAgICB2YXIgZmlsbCA9IHBhcnRpY2xlLmVsZW1lbnQuZ2V0QXR0cmli
dXRlKCJmaWxsIik7CisgICAgaWYgKGZpbGwuaW5kZXhPZigidXJsKCMiKSA9PSAwKSB7CisgICAg
ICAgIHZhciBncmFkaWVudCA9IHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKGZpbGwuc3Vic3Ry
aW5nKDQsIGZpbGwubGVuZ3RoIC0gMSkpOworICAgICAgICB0aGlzLmVuc3VyZURlZnNJc0NyZWF0
ZWQoKS5yZW1vdmVDaGlsZChncmFkaWVudCk7CisgICAgfQorICAgIAorICAgIHRoaXMuZWxlbWVu
dC5yZW1vdmVDaGlsZChwYXJ0aWNsZS5lbGVtZW50KTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdT
dmdTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9n
cmVzc0JhcikgeworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3Vp
dGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5j
aW5nU3ZnU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQ
YXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJr
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrOworCitC
b3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlv
bihlbGVtZW50KSB7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlKGVsZW1l
bnQsIHRoaXMuX29wdGlvbnMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9
IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
IHsKKyAgICB3aW5kb3cuYmVuY2htYXJrID0gbmV3IEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJr
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9iZW5jaG1hcmsu
Y3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNv
dXJjZXMvYmVuY2htYXJrLmNzcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvYmVuY2htYXJrLmNzcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE3IEBACitodG1sIHsKKyAgaGVpZ2h0OiAxMDAlOworfQorYm9keSB7CisgIHdpZHRo
OiAxMDAlOworICBoZWlnaHQ6IDEwMCU7CisgIG92ZXJmbG93OiBoaWRkZW47CisgIG1hcmdpbjog
MDsKKyAgcGFkZGluZzogMDsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VhZWFlYTsKK30KKworI3N0
YWdlIHsKKyAgd2lkdGg6IDEwMCU7CisgIGhlaWdodDogMTAwJTsKKyAgYmFja2dyb3VuZC1jb2xv
cjogI2VhZWFlYTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9y
ZXNvdXJjZXMvYmVuY2htYXJrLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvYmVuY2htYXJrLmpzCShyZXZpc2lvbiAwKQorKysgUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9iZW5jaG1hcmsuanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxODggQEAKK2Z1bmN0aW9uIEJlbmNobWFya1N0YXRlKHRl
c3RJbnRlcnZhbCkgeworICAgIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0ID0gMDsKKyAgICB0aGlz
Ll9zdGFnZUludGVydmFsID0gdGVzdEludGVydmFsIC8gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJ
TklTSEVEOworfQorCitCZW5jaG1hcmtTdGF0ZS5zdGFnZXMgPSB7CisgICAgV0FSTUlOR19VUDog
MCwKKyAgICBTQU1QTElORzogMSwKKyAgICBGSU5JU0hFRDogMiwKKyAgICBtZXNzYWdlczogWyAi
V2FybWluZyB1cCIsICJTYW1wbGluZyIsICJGaW5pc2hlZCIgXQorfTsKKworQmVuY2htYXJrU3Rh
dGUucHJvdG90eXBlID0geworICAgIF90aW1lT2Zmc2V0IDogZnVuY3Rpb24oc3RhZ2UpIHsKKyAg
ICAgICAgcmV0dXJuIHN0YWdlICogdGhpcy5fc3RhZ2VJbnRlcnZhbDsKKyAgICB9LAorICAgIF9t
ZXNzYWdlIDogZnVuY3Rpb24oc3RhZ2UsIHRpbWVPZmZzZXQpIHsKKyAgICAgICAgaWYgKHN0YWdl
ID09IEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRCkKKyAgICAgICAgICAgIHJldHVybiBC
ZW5jaG1hcmtTdGF0ZS5zdGFnZXMubWVzc2FnZXNbc3RhZ2VdOworCisgICAgICAgIHJldHVybiBC
ZW5jaG1hcmtTdGF0ZS5zdGFnZXMubWVzc2FnZXNbc3RhZ2VdICsgIi4uLiAoIgorICAgICAgICAg
ICAgKyBNYXRoLmZsb29yKCh0aW1lT2Zmc2V0IC0gdGhpcy5fdGltZU9mZnNldChzdGFnZSkpIC8g
MTAwMCkgKyAiLyIKKyAgICAgICAgICAgICsgTWF0aC5mbG9vcigodGhpcy5fdGltZU9mZnNldChz
dGFnZSArIDEpIC0gdGhpcy5fdGltZU9mZnNldChzdGFnZSkpIC8gMTAwMCkgKyAiKSI7CisgICAg
fSwKKyAgICB1cGRhdGUgOiBmdW5jdGlvbihjdXJyZW50VGltZU9mZnNldCkgeworICAgICAgICB0
aGlzLl9jdXJyZW50VGltZU9mZnNldCA9IGN1cnJlbnRUaW1lT2Zmc2V0OworICAgIH0sCisgICAg
c2FtcGxpbmdUaW1lT2Zmc2V0IDogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLl90
aW1lT2Zmc2V0KEJlbmNobWFya1N0YXRlLnN0YWdlcy5TQU1QTElORyk7CisgICAgfSwKKyAgICBj
dXJyZW50U3RhZ2UgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgZm9yICh2YXIgc3RhZ2UgPSBCZW5j
aG1hcmtTdGF0ZS5zdGFnZXMuV0FSTUlOR19VUDsgc3RhZ2UgPCBCZW5jaG1hcmtTdGF0ZS5zdGFn
ZXMuRklOSVNIRUQ7ICsrc3RhZ2UpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50VGlt
ZU9mZnNldCA8IHRoaXMuX3RpbWVPZmZzZXQoc3RhZ2UgKyAxKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RhZ2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEJlbmNobWFya1N0YXRlLnN0
YWdlcy5GSU5JU0hFRDsKKyAgICB9LAorICAgIGN1cnJlbnRNZXNzYWdlIDogZnVuY3Rpb24oKSB7
CisgICAgICAgIHJldHVybiB0aGlzLl9tZXNzYWdlKHRoaXMuY3VycmVudFN0YWdlKCksIHRoaXMu
X2N1cnJlbnRUaW1lT2Zmc2V0KTsKKyAgICB9LAorICAgIGN1cnJlbnRQcm9ncmVzcyA6IGZ1bmN0
aW9uKCkgeworICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgLyB0aGlzLl90
aW1lT2Zmc2V0KEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRCk7CisgICAgfQorfQorCitm
dW5jdGlvbiBBbmltYXRvcihiZW5jaG1hcmspIHsKKyAgICB0aGlzLl9iZW5jaG1hcmsgPSBiZW5j
aG1hcms7CisgICAgdGhpcy5fZnJhbWVDb3VudCA9IDA7CisgICAgdGhpcy5fZHJvcEZyYW1lQ291
bnQgPSAxOworICAgIHRoaXMuX21lYXN1cmVGcmFtZUNvdW50ID0gMzsgCisgICAgdGhpcy5fY3Vy
cmVudFRpbWVPZmZzZXQgPSAwOworICAgIHRoaXMuX2VzdGltYXRvciA9IG5ldyBFc3RpbWF0b3Io
KTsKK30KKworQW5pbWF0b3IucHJvdG90eXBlID0geworICAgIHN0YXJ0IDogZnVuY3Rpb24oKSB7
CisgICAgICAgIHRoaXMuX2ludGVydmFsSWQgPSBzZXRJbnRlcnZhbCh0aGlzLmFuaW1hdGUuYmlu
ZCh0aGlzKSwgMSk7CisgICAgfSwKKyAgICB0aW1lRGVsdGEgOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IC0gdGhpcy5fc3RhcnRUaW1lT2Zmc2V0
OworICAgIH0sCisgICAgYW5pbWF0ZSA6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgY3VycmVu
dFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKKyAgICAgICAgCisgICAgICAgIGlmICh0eXBlb2Yg
dGhpcy5fcmVmZXJlbmNlVGltZSA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICB0aGlzLl9y
ZWZlcmVuY2VUaW1lID0gY3VycmVudFRpbWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRo
aXMuX2N1cnJlbnRUaW1lT2Zmc2V0ID0gY3VycmVudFRpbWUgLSB0aGlzLl9yZWZlcmVuY2VUaW1l
OworCisgICAgICAgIGlmICghdGhpcy5fZnJhbWVDb3VudCkKKyAgICAgICAgICAgIHRoaXMuX3N0
YXJ0VGltZU9mZnNldCA9IHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0OworCisgICAgICAgIC8vIFN0
YXJ0IG1lYXN1cmluZyBhZnRlciBkcm9wcGluZyBfZHJvcEZyYW1lQ291bnQgZnJhbWVzLgorICAg
ICAgICBpZiAodGhpcy5fZnJhbWVDb3VudCA9PSB0aGlzLl9kcm9wRnJhbWVDb3VudCkKKyAgICAg
ICAgICAgIHRoaXMuX21lYXN1cmVUaW1lT2Zmc2V0ID0gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQ7
CisKKyAgICAgICAgKyt0aGlzLl9mcmFtZUNvdW50OworCisgICAgICAgIC8vIERyb3AgX2Ryb3BG
cmFtZUNvdW50IGZyYW1lcyBhbmQgbWVhc3VyZSB0aGUgYXZlcmFnZSBvZiBfbWVhc3VyZUZyYW1l
Q291bnQgZnJhbWVzLgorICAgICAgICBpZiAodGhpcy5fZnJhbWVDb3VudCA8IHRoaXMuX2Ryb3BG
cmFtZUNvdW50ICsgdGhpcy5fbWVhc3VyZUZyYW1lQ291bnQpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgICAgICAvLyBHZXQgdGhlIGF2ZXJhZ2UgRlBTIG9mIF9tZWFzdXJlRnJhbWVD
b3VudCBmcmFtZXMgb3ZlciBtZWFzdXJlVGltZURlbHRhLgorICAgICAgICB2YXIgbWVhc3VyZVRp
bWVEZWx0YSA9IHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IC0gdGhpcy5fbWVhc3VyZVRpbWVPZmZz
ZXQ7CisgICAgICAgIHZhciBjdXJyZW50RnJhbWVSYXRlID0gTWF0aC5mbG9vcigxMDAwIC8gKG1l
YXN1cmVUaW1lRGVsdGEgLyB0aGlzLl9tZWFzdXJlRnJhbWVDb3VudCkpOworICAgICAgICAgCisg
ICAgICAgIC8vIFVzZSBLYWxtYW4gZmlsdGVyIHRvIGdldCBhIG1vcmUgbm9uLWZsdWN0dWF0aW5n
IGZyYW1lIHJhdGUuCisgICAgICAgIGlmICh0aGlzLl9iZW5jaG1hcmsub3B0aW9ucy5lc3RpbWF0
ZWRGcmFtZVJhdGUpCisgICAgICAgICAgICBjdXJyZW50RnJhbWVSYXRlID0gdGhpcy5fZXN0aW1h
dG9yLmVzdGltYXRlKG1lYXN1cmVUaW1lRGVsdGEsIGN1cnJlbnRGcmFtZVJhdGUpOworICAgICAg
ICAKKyAgICAgICAgLy8gQWRqdXN0IHRoZSB0ZXN0IHRvIHJlYWNoIHRoZSBkZXNpcmVkIEZQUy4K
KyAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2JlbmNobWFyay51cGRhdGUodGhpcy5fY3VycmVu
dFRpbWVPZmZzZXQsIHRoaXMudGltZURlbHRhKCksIGN1cnJlbnRGcmFtZVJhdGUpOworICAgICAg
ICAKKyAgICAgICAgLy8gU3RvcCB0aGUgYW5pbWF0b3IgaWYgdGhlIGJlbmNobWFyayBoYXMgZmlu
aXNoZWQuCisgICAgICAgIGlmICghcmVzdWx0ICYmIHR5cGVvZiB0aGlzLl9pbnRlcnZhbElkICE9
ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbElk
KTsKKworICAgICAgICAvLyBTdGFydCB0aGUgbmV4dCBkcm9wL21lYXN1cmUgY3ljbGUuCisgICAg
ICAgIHRoaXMuX2ZyYW1lQ291bnQgPSAwOworICAgICAgICAKKyAgICAgICAgLy8gcmVzdWx0IG1h
eSBzdG9wIHRoZSBhbmltYXRvciBpZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKSBoYXMgYmVlbiB1
c2VkLgorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisgICAgYW5pbWF0ZUxvb3AgOiBm
dW5jdGlvbih0aW1lc3RhbXApIHsKKyAgICAgICAgaWYgKHRoaXMuYW5pbWF0ZSgpKQorICAgICAg
ICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0ZUxvb3AuYmluZCh0aGlzKSk7
CisgICAgfQorfQorCitmdW5jdGlvbiBCZW5jaG1hcmsob3B0aW9ucykgeworICAgIHRoaXMuX29w
dGlvbnMgPSBvcHRpb25zOworICAgIHRoaXMuX21ldGhvZCA9IHRoaXMuX29wdGlvbnNbIm1ldGhv
ZCJdIHx8ICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiOworCisgICAgdGhpcy5vcHRpb25zID0gb3B0
aW9uczsKKyAgICB0aGlzLl9yZWNvcmRJbnRlcnZhbCA9IDIwMDsgICAgCisgICAgdGhpcy5faXNT
YW1wbGluZyA9IGZhbHNlOworCisgICAgdmFyIGdhaW4gPSBwYXJzZUludCh0aGlzLl9vcHRpb25z
WyJnYWluIl0pIHx8IDE7CisgICAgdmFyIGxvd1ZhbHVlID0gLXBhcnNlSW50KHRoaXMuX29wdGlv
bnNbImFkZExpbWl0Il0pIHx8IDE7CisgICAgdmFyIGhpZ2hWYWx1ZSA9IHBhcnNlSW50KHRoaXMu
X29wdGlvbnNbInJlbW92ZUxpbWl0Il0pIHx8IDE7CisgICAgCisgICAgdGhpcy5fY29udHJvbGxl
ciA9IG5ldyBDb250cm9sbGVyKGdhaW4sIG9wdGlvbnMuZnJhbWVSYXRlLCBsb3dWYWx1ZSwgaGln
aFZhbHVlKTsKKyAgICB0aGlzLl9zYW1wbGVyID0gbmV3IFNhbXBsZXIoMik7CisgICAgdGhpcy5f
c3RhdGUgPSBuZXcgQmVuY2htYXJrU3RhdGUodGhpcy5vcHRpb25zLnRlc3RJbnRlcnZhbCk7ICAg
IAorfQorCitCZW5jaG1hcmsucHJvdG90eXBlID0geworICAgIC8vIENhbGxlZCBmcm9tIHRoZSBs
b2FkIGV2ZW50IGxpc3RlbmVyIG9yIGZyb20gdGhpcy5ydW4oKQorICAgIHN0YXJ0IDogZnVuY3Rp
b24oKSB7CisgICAgICAgIGlmICh0aGlzLl9tZXRob2QgPT0gInNldEludGVydmFsIikKKyAgICAg
ICAgICAgIHRoaXMuX2FuaW1hdG9yLnN0YXJ0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHRoaXMuX2FuaW1hdG9yLmFuaW1hdGVMb29wKCk7CisgICAgfSwKKyAgICAvLyBDYWxsZWQgZnJv
bSB0aGUgYW5pbWF0b3IgdG8gYWRqdXN0IHRoZSBjb21wbGV4aXR5IG9mIHRoZSB0ZXN0CisgICAg
dXBkYXRlIDogZnVuY3Rpb24oY3VycmVudFRpbWVPZmZzZXQsIHRpbWVEZWx0YSwgY3VycmVudEZy
YW1lUmF0ZSkgeworICAgICAgICB0aGlzLl9zdGF0ZS51cGRhdGUoY3VycmVudFRpbWVPZmZzZXQp
OworICAgICAgICAKKyAgICAgICAgdmFyIHN0YWdlID0gdGhpcy5fc3RhdGUuY3VycmVudFN0YWdl
KCk7CisgICAgICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQp
IHsKKyAgICAgICAgICAgIHRoaXMuY2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMu
U0FNUExJTkcgJiYgIXRoaXMuX2lzU2FtcGxpbmcpIHsKKyAgICAgICAgICAgIHRoaXMuX3NhbXBs
ZXIuc3RhcnRTYW1wbGluZyh0aGlzLl9zdGF0ZS5zYW1wbGluZ1RpbWVPZmZzZXQoKSk7CisgICAg
ICAgICAgICB0aGlzLl9pc1NhbXBsaW5nID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZh
ciB0dW5lVmFsdWUgPSAwOworICAgICAgICBpZiAoISh0aGlzLl9pc1NhbXBsaW5nICYmIHRoaXMu
b3B0aW9ucy5maXhUZXN0Q29tcGxleGl0eSkpIHsKKyAgICAgICAgICAgIC8vIFRoZSByZWxhdGlv
bnNoaXAgYmV0d2VlbiBmcmFtZVJhdGUgYW5kIHRlc3QgY29tcGxleGl0eSBpcyBpbnZlcnNlLXBy
b3BvcnRpb25hbCBzbyB3ZQorICAgICAgICAgICAgLy8gbmVlZCB0byB1c2UgdGhlIG5lZ2F0aXZl
IG9mIENvbnRyb2xsZXIudHVuZSgpIHRvIGNoYW5nZSB0aGUgY29tcGxleGl0eSBvZiB0aGUgdGVz
dAorICAgICAgICAgICAgdHVuZVZhbHVlID0gLXRoaXMuX2NvbnRyb2xsZXIudHVuZShjdXJyZW50
RnJhbWVSYXRlLCB0aW1lRGVsdGEgLyAxMDAwKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBj
dXJyZW50Q29tcGxleGl0eSA9IHRoaXMudHVuZSh0dW5lVmFsdWUpOworICAgICAgICB0aGlzLnJl
Y29yZChjdXJyZW50VGltZU9mZnNldCwgY3VycmVudENvbXBsZXhpdHksIGN1cnJlbnRGcmFtZVJh
dGUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorICAgIHJlY29yZCA6IGZ1bmN0aW9u
KGN1cnJlbnRUaW1lT2Zmc2V0LCBjdXJyZW50Q29tcGxleGl0eSwgY3VycmVudEZyYW1lUmF0ZSkg
eworICAgICAgICB0aGlzLl9zYW1wbGVyLnNhbXBsZShjdXJyZW50VGltZU9mZnNldCwgW2N1cnJl
bnRDb21wbGV4aXR5LCBjdXJyZW50RnJhbWVSYXRlXSk7CisgICAgICAgIAorICAgICAgICBpZiAo
dHlwZW9mIHRoaXMuX3JlY29yZFRpbWVPZmZzZXQgPT0gInVuZGVmaW5lZCIpCisgICAgICAgICAg
ICB0aGlzLl9yZWNvcmRUaW1lT2Zmc2V0ID0gY3VycmVudFRpbWVPZmZzZXQ7CisKKyAgICAgICAg
dmFyIHN0YWdlID0gdGhpcy5fc3RhdGUuY3VycmVudFN0YWdlKCk7CisgICAgICAgIGlmIChzdGFn
ZSAhPSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQgJiYgY3VycmVudFRpbWVPZmZzZXQg
PCB0aGlzLl9yZWNvcmRUaW1lT2Zmc2V0ICsgdGhpcy5fcmVjb3JkSW50ZXJ2YWwpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5zaG93UmVzdWx0cyh0aGlzLl9zdGF0ZS5jdXJy
ZW50TWVzc2FnZSgpLCB0aGlzLl9zdGF0ZS5jdXJyZW50UHJvZ3Jlc3MoKSk7CisgICAgICAgIHRo
aXMuX3JlY29yZFRpbWVPZmZzZXQgPSBjdXJyZW50VGltZU9mZnNldDsKKyAgICB9LAorICAgIHJ1
biA6IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLnN0YXJ0KCk7CisKKyAgICAgICAgdmFyIHBy
b21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAg
ICAgICBmdW5jdGlvbiByZXNvbHZlV2hlbkZpbmlzaGVkKCkgeworICAgICAgICAgICAgaWYgKHR5
cGVvZiBzZWxmLl9zdGF0ZSAhPSAidW5kZWZpbmVkIiAmJiAoc2VsZi5fc3RhdGUuY3VycmVudFN0
YWdlKCkgPT0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcHJvbWlzZS5yZXNvbHZlKHNlbGYuX3NhbXBsZXIpOworICAgICAgICAgICAgc2V0
VGltZW91dChyZXNvbHZlV2hlbkZpbmlzaGVkLmJpbmQoc2VsZiksIDUwKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgcmVzb2x2ZVdoZW5GaW5pc2hlZCgpOworICAgICAgICByZXR1cm4g
cHJvbWlzZTsKKyAgICB9Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvcmVzb3VyY2VzL21hdGguanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMjA4IEBACit2YXIgTWF0cml4ID0geworICAgIGluaXQgOiBmdW5jdGlvbiht
LCBuLCB2KSB7CisgICAgICAgIHJldHVybiBBcnJheShtICogbikuZmlsbCh2KTsKKyAgICB9LAor
ICAgIHplcm9zIDogZnVuY3Rpb24obSwgbikgeworICAgICAgICByZXR1cm4gTWF0cml4LmluaXQo
bSwgbiwgMCk7CisgICAgfSwKKyAgICBvbmVzIDogZnVuY3Rpb24obSwgbikgeworICAgICAgICBy
ZXR1cm4gTWF0cml4LmluaXQobSwgbiwgMSk7CisgICAgfSwKKyAgICBpZGVudGl0eSA6IGZ1bmN0
aW9uKG4pIHsKKyAgICAgICAgdmFyIG91dCA9IG5ldyBNYXRyaXguemVyb3Mobiwgbik7CisgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKQorICAgICAgICAgICAgb3V0W2kgKiBuICsg
aV0gPSAxOworICAgICAgICByZXR1cm4gb3V0OworICAgIH0sCisgICAgc3RyIDogZnVuY3Rpb24o
QSwgbiwgbSkgeworICAgICAgICB2YXIgb3V0ID0gKG0gPiAxICYmIG4gPiAxID8gIk1hdHJpeFsi
ICsgbiArICIsICIgKyBtIDogIlZlY3RvclsiICsgbSAqIG4pICsgIl0gPSBbIjsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBuICogbTsgKytpKSB7CisgICAgICAgICAgICBvdXQgKz0gQVtp
XTsKKyAgICAgICAgICAgIGlmIChpIDwgbiAqIG0gLSAxKQorICAgICAgICAgICAgICAgIG91dCAr
PSAiLCAiOworICAgICAgICB9ICAgICAgIAorICAgICAgICByZXR1cm4gb3V0ICsgIl0iOworICAg
IH0sCisgICAgcG9zIDogZnVuY3Rpb24obSwgaSwgaikgeworICAgICAgICByZXR1cm4gbSAqIGkg
KyBqOworICAgIH0sCisgICAgYWRkIDogZnVuY3Rpb24oQSwgQiwgbiwgbSkgeworICAgICAgICB2
YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIG0pOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IG4gKiBtOyArK2kpCisgICAgICAgICAgICBvdXRbaV0gPSBBW2ldICsgQltpXTsKKyAgICAgICAg
cmV0dXJuIG91dDsKKyAgICB9LAorICAgIHN1YnRyYWN0IDogZnVuY3Rpb24oQSwgQiwgbiwgbSkg
eworICAgICAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIG0pOworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG4gKiBtOyArK2kpCisgICAgICAgICAgICBvdXRbaV0gPSBBW2ldIC0gQltp
XTsKKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9LAorICAgIHNjYWxlIDogZnVuY3Rpb24ocywg
QSwgbiwgbSkgeworICAgICAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIG0pOworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG4gKiBtOyArK2kpCisgICAgICAgICAgICBvdXRbaV0gPSBz
ICogQVtpXTsKKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9LAorICAgIHRyYW5zcG9zZSA6IGZ1
bmN0aW9uKEEsIG4sIG0pIHsKKyAgICAgICAgdmFyIG91dCA9IE1hdHJpeC56ZXJvcyhtLCBuKTsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIGZvciAo
dmFyIGogPSAwOyBqIDwgbTsgKytqKQorICAgICAgICAgICAgICAgIG91dFtNYXRyaXgucG9zKG4s
IGksIGopXSA9IEFbTWF0cml4LnBvcyhtLCBqLCBpKV07CisgICAgICAgIH0gICAgICAgCisgICAg
ICAgIHJldHVybiBvdXQ7CisgICAgfSwKKyAgICBtdWx0aXBseSA6IGZ1bmN0aW9uKEEsIEIsIG4s
IG0sIHApIHsKKyAgICAgICAgdmFyIG91dCA9IE1hdHJpeC56ZXJvcyhuLCBwKTsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGogPSAw
OyBqIDwgcDsgKytqKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBtOyAr
K2spIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0W01hdHJpeC5wb3MocCwgaSwgaildICs9IEFb
TWF0cml4LnBvcyhtLCBpLCBrKV0gKiBCW01hdHJpeC5wb3MocCwgaywgaildOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gb3V0Owor
ICAgIH0KK30KKwordmFyIFZlY3RvcjMgPSB7CisgICAgemVyb3MgOiBmdW5jdGlvbigpIHsKKyAg
ICAgICAgcmV0dXJuIE1hdHJpeC56ZXJvcygxLCAzKTsKKyAgICB9LAorICAgIG9uZXMgOiBmdW5j
dGlvbigpIHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC5vbmVzKDEsIDMpOworICAgIH0sCisgICAg
c3RyIDogZnVuY3Rpb24odikgeworICAgICAgICByZXR1cm4gTWF0cml4LnN0cih2LCAxLCAzKTsK
KyAgICB9LAorICAgIGFkZCA6IGZ1bmN0aW9uKHYsIHcpIHsKKyAgICAgICAgcmV0dXJuIE1hdHJp
eC5hZGQodiwgdywgMSwgMyk7CisgICAgfSwKKyAgICBzdWJ0cmFjdCA6IGZ1bmN0aW9uKHYsIHcp
IHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC5zdWJ0cmFjdCh2LCB3LCAxLCAzKTsKKyAgICB9LAor
ICAgIHNjYWxlIDogZnVuY3Rpb24ocywgdikgeworICAgICAgICByZXR1cm4gTWF0cml4LnNjYWxl
KHMsIHYsIDEsIDMpOworICAgIH0sCisgICAgbXVsdGlwbHlNYXRyaXgzIDogZnVuY3Rpb24odiwg
QSkgeworICAgICAgICByZXR1cm4gTWF0cml4Lm11bHRpcGx5KHYsIEEsIDEsIDMsIDMpOworICAg
IH0sCisgICAgbXVsdGlwbHlWZWN0b3IzIDogZnVuY3Rpb24odiwgdykgeworICAgICAgICB2YXIg
b3V0ID0gMDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzOyArK2kpCisgICAgICAgICAg
ICBvdXQgKz0gdltpXSAqIHdbaV07CisgICAgICAgIHJldHVybiBvdXQ7CisgICAgfQorfQorCit2
YXIgTWF0cml4MyA9IHsKKyAgICB6ZXJvcyA6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4g
TWF0cml4Lnplcm9zKDMsIDMpOworICAgIH0sCisgICAgaWRlbnRpdHkgOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgcmV0dXJuIE1hdHJpeC5pZGVudGl0eSgzLCAzKTsKKyAgICB9LAorICAgIHN0ciA6
IGZ1bmN0aW9uKEEpIHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC5zdHIoQSwgMywgMyk7CisgICAg
fSwKKyAgICBwb3MgOiBmdW5jdGlvbihpLCBqKSB7CisgICAgICAgIHJldHVybiBNYXRyaXgucG9z
KDMsIGksIGopOworICAgIH0sCisgICAgYWRkIDogZnVuY3Rpb24oQSwgQikgeworICAgICAgICBy
ZXR1cm4gTWF0cml4LmFkZChBLCBCLCAzLCAzKTsKKyAgICB9LAorICAgIHN1YnRyYWN0IDogZnVu
Y3Rpb24oQSwgQikgeworICAgICAgICByZXR1cm4gTWF0cml4LnN1YnRyYWN0KEEsIEIsIDMsIDMp
OworICAgIH0sCisgICAgc2NhbGUgOiBmdW5jdGlvbihzLCBBKSB7CisgICAgICAgIHJldHVybiBN
YXRyaXguc2NhbGUocywgQSwgMywgMyk7CisgICAgfSwKKyAgICB0cmFuc3Bvc2UgOiBmdW5jdGlv
bihBKSB7CisgICAgICAgIHJldHVybiBNYXRyaXgudHJhbnNwb3NlKEEsIDMsIDMpOworICAgIH0s
CisgICAgbXVsdGlwbHlNYXRyaXgzIDogZnVuY3Rpb24oQSwgQikgeworICAgICAgICByZXR1cm4g
TWF0cml4Lm11bHRpcGx5KEEsIEIsIDMsIDMsIDMpOworICAgIH0sCisgICAgbXVsdGlwbHlWZWN0
b3IzIDogZnVuY3Rpb24oQSwgdikgeworICAgICAgICByZXR1cm4gTWF0cml4Lm11bHRpcGx5KEEs
IHYsIDMsIDMsIDEpOworICAgIH0KK30KKworZnVuY3Rpb24gQ29udHJvbGxlcihLLCB5c3AsIHVs
b3csIHVoaWdoKSB7CisgICAgdGhpcy5feXNwID0geXNwOworCisgICAgdGhpcy5fVGQgPSA1Owor
ICAgIHRoaXMuX1RpID0gMTU7CisKKyAgICB0aGlzLl9LcCA9IEs7CisgICAgdGhpcy5fS2QgPSBL
IC8gdGhpcy5fVGQ7CisgICAgdGhpcy5fS2kgPSBLIC8gdGhpcy5fVGk7CisKKyAgICB0aGlzLl9l
b2xkID0gMDsKKyAgICB0aGlzLl9JID0gMDsKK30KKworQ29udHJvbGxlci5wcm90b3R5cGUgPSB7
CisgICAgX3NhdCA6IGZ1bmN0aW9uKHYsIGxvdywgaGlnaCkgeworICAgICAgICByZXR1cm4gdiA8
IGxvdyA/IGxvdyA6ICh2ID4gaGlnaCA/IGhpZ2ggOiB2KTsKKyAgICB9LAorICAgIHR1bmUgOiBm
dW5jdGlvbih5LCBoKSB7CisgICAgICAgIC8vIEN1cnJlbnQgZXJyb3IKKyAgICAgICAgdmFyIGUg
PSB0aGlzLl95c3AgLSB5OworCisgICAgICAgIC8vIFByb3BvcnRpb25hbCB0ZXJtCisgICAgICAg
IHZhciBQID0gdGhpcy5fS3AgKiBlOworICAgICAgICAKKyAgICAgICAgLy8gRGVyaXZhdGl2ZSB0
ZXJtIGlzIHRoZSBzbG9wZSBvZiB0aGUgY3VydmUgYXQgdGhlIGN1cnJlbnQgdGltZQorICAgICAg
ICB2YXIgRCA9IHRoaXMuX0tkICogKGUgLSB0aGlzLl9lb2xkKSAvIGg7CisKKyAgICAgICAgLy8g
SW50ZWdyYWwgdGVybSBpcyB0aGUgYXJlYSB1bmRlciB0aGUgY3VydmUgc3RhcnRpbmcgZnJvbSB0
aGUgYmVnaW5pbmcgdGlsbCB0aGUgY3VycmVudCB0aW1lCisgICAgICAgIHRoaXMuX0kgKz0gdGhp
cy5fS2kgKiAoKGUgKyB0aGlzLl9lb2xkKSAvIDIpICogaDsKKworICAgICAgICAvLyBwaWQgY29u
dHJvbGxlciB2YWx1ZQorICAgICAgICB2YXIgdiA9IFAgKyBEICsgdGhpcy5fSTsKKyAgICAgICAg
CisgICAgICAgIC8vIEF2b2lkIHNwaWtlcyBieSBhcHBseWluZyBhY3R1YXRvciBzYXR1YXJ0aW9u
CisgICAgICAgIHZhciB1ID0gdGhpcy5fc2F0KHYsIHRoaXMuX3Vsb3csIHRoaXMuX3VoaWdoKTsg
ICAgICAgIAorCisgICAgICAgIHRoaXMuX2VvbGQgPSBlOworICAgICAgICByZXR1cm4gdTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIEVzdGltYXRvcigpIHsKKyAgICB0aGlzLl9tYXRBID0gTWF0cml4
My5pZGVudGl0eSgpOworICAgIAorICAgIHRoaXMuX3ZlY0ggPSBWZWN0b3IzLnplcm9zKCk7Cisg
ICAgdGhpcy5fdmVjSFswXSA9IDE7CisgICAgCisgICAgdGhpcy5fbWF0USA9IE1hdHJpeDMuaWRl
bnRpdHkoKTsKKyAgICB0aGlzLl9SID0gMTAwMDsKKyAgICAKKyAgICB0aGlzLl92ZWNYX2VzdCA9
IFZlY3RvcjMub25lcygpOworICAgIHRoaXMuX21hdFBfZXN0ID0gTWF0cml4My56ZXJvcygpOwor
fQorCitFc3RpbWF0b3IucHJvdG90eXBlID0geworICAgIGVzdGltYXRlIDogZnVuY3Rpb24odGlt
ZURlbHRhLCBjdXJyZW50KSB7CisgICAgICAgIC8vIFVwZGF0ZSB0aGUgdHJhbnNpdGlvbiBtYXRy
aXgKKyAgICAgICAgdGhpcy5fbWF0QVtNYXRyaXgzLnBvcygwLCAyKV0gPSAxOworCisgICAgICAg
IC8vIFByZWRpY3RlZCBzdGF0ZSBhbmQgY292YXJpYW5jZQorICAgICAgICB2YXIgdmVjWF9wcmQg
PSBNYXRyaXgzLm11bHRpcGx5VmVjdG9yMyh0aGlzLl9tYXRBLCB0aGlzLl92ZWNYX2VzdCk7Cisg
ICAgICAgIHZhciBtYXRQX3ByZCA9IE1hdHJpeDMuYWRkKE1hdHJpeDMubXVsdGlwbHlNYXRyaXgz
KE1hdHJpeDMubXVsdGlwbHlNYXRyaXgzKHRoaXMuX21hdEEsIHRoaXMuX21hdFBfZXN0KSwgTWF0
cml4My50cmFuc3Bvc2UodGhpcy5fbWF0QSkpLCB0aGlzLl9tYXRRKTsKKworICAgICAgICAvLyBF
c3RpbWF0aW9uCisgICAgICAgIHZhciB2ZWNCID0gVmVjdG9yMy5tdWx0aXBseU1hdHJpeDModGhp
cy5fdmVjSCwgTWF0cml4My50cmFuc3Bvc2UobWF0UF9wcmQpKTsKKyAgICAgICAgdmFyIFMgPSBW
ZWN0b3IzLm11bHRpcGx5VmVjdG9yMyh2ZWNCLCB0aGlzLl92ZWNIKSArIHRoaXMuX1I7CisKKyAg
ICAgICAgdmFyIHZlY0dhaW4gPSBWZWN0b3IzLnNjYWxlKDEvUywgdmVjQik7CisgICAgICAgIAor
ICAgICAgICAvLyBFc3RpbWF0ZWQgc3RhdGUgYW5kIGNvdmFyaWFuY2UKKyAgICAgICAgdGhpcy5f
dmVjWF9lc3QgPSBWZWN0b3IzLmFkZCh2ZWNYX3ByZCwgVmVjdG9yMy5zY2FsZShjdXJyZW50IC0g
VmVjdG9yMy5tdWx0aXBseVZlY3RvcjModGhpcy5fdmVjSCwgdmVjWF9wcmQpLCB2ZWNHYWluKSk7
CisgICAgICAgIHRoaXMuX21hdFBfZXN0ID0gTWF0cml4My5zdWJ0cmFjdChtYXRQX3ByZCwgTWF0
cml4My5zY2FsZShWZWN0b3IzLm11bHRpcGx5VmVjdG9yMyh2ZWNHYWluLCB0aGlzLl92ZWNIKSwg
bWF0UF9wcmQpKTsKKworICAgICAgICAvLyBDb21wdXRlIHRoZSBlc3RpbWF0ZWQgbWVhc3VyZW1l
bnQKKyAgICAgICAgcmV0dXJuIFZlY3RvcjMubXVsdGlwbHlWZWN0b3IzKHRoaXMuX3ZlY0gsICB0
aGlzLl92ZWNYX2VzdCk7CisgICAgfQorfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzCShyZXZpc2lvbiAwKQorKysg
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACitmdW5jdGlvbiBTdGFnZShlbGVtZW50LCBvcHRp
b25zKSB7CisgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDsKK30KKworU3RhZ2UucHJvdG90eXBl
ID0geworICAgIHNpemUgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHN0eWxlcyA9IHdpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudCk7CisgICAgICAgIHZhciBwYWRkaW5nID0g
bmV3IEluc2V0cygKKyAgICAgICAgICAgIHBhcnNlRmxvYXQoc3R5bGVzLnBhZGRpbmdUb3ApLAor
ICAgICAgICAgICAgcGFyc2VGbG9hdChzdHlsZXMucGFkZGluZ1JpZ2h0KSwKKyAgICAgICAgICAg
IHBhcnNlRmxvYXQoc3R5bGVzLnBhZGRpbmdCb3R0b20pLAorICAgICAgICAgICAgcGFyc2VGbG9h
dChzdHlsZXMucGFkZGluZ1RvcCkpOworICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMuZWxl
bWVudC5jbGllbnRXaWR0aCAtIHBhZGRpbmcud2lkdGgoKSwgdGhpcy5lbGVtZW50LmNsaWVudEhl
aWdodCAtIHBhZGRpbmcuaGVpZ2h0KCkpOworICAgIH0sCisgICAgY2xlYXIgOiBmdW5jdGlvbigp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMudHVuZSgtdGhpcy50dW5lKDApKTsKKyAgICB9LAorICAg
IHJhbmRvbSA6IGZ1bmN0aW9uKG1pbiwgbWF4KSB7CisgICAgICAgIHJldHVybiAoTWF0aC5yYW5k
b20oKSAqIChtYXggLSBtaW4pKSArIG1pbjsKKyAgICB9LAorICAgIHJhbmRvbUludCA6IGZ1bmN0
aW9uKG1pbiwgbWF4KSB7CisgICAgICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMucmFuZG9tKG1p
biwgbWF4KSk7CisgICAgfSwKKyAgICByYW5kb21Qb3NpdGlvbiA6IGZ1bmN0aW9uKCkgeworICAg
ICAgICB2YXIgbWF4ID0gdGhpcy5zaXplKCkuc3VidHJhY3QodGhpcy5wYXJ0aWNsZVNpemUpOwor
ICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMucmFuZG9tSW50KDAsIG1heC54KSwgdGhpcy5y
YW5kb21JbnQoMCwgbWF4LnkpKTsKKyAgICB9LAorICAgIHJhbmRvbVZlbG9jaXR5IDogZnVuY3Rp
b24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLnJhbmRvbSh0aGlzLl9tYXhWZWxvY2l0eSAvIDgs
IHRoaXMuX21heFZlbG9jaXR5KTsKKyAgICB9LAorICAgIHJhbmRvbUFuZ2xlIDogZnVuY3Rpb24o
KSB7CisgICAgICAgIHJldHVybiB0aGlzLnJhbmRvbSgwLCBNYXRoLlBJICogMik7CisgICAgfSwK
KyAgICByYW5kb21Db2xvciA6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgbWluID0gMzI7Cisg
ICAgICAgIHZhciBtYXggPSAyNTYgLSAzMjsKKyAgICAgICAgcmV0dXJuICIjIgorICAgICAgICAg
ICAgKyB0aGlzLnJhbmRvbUludChtaW4sIG1heCkudG9TdHJpbmcoMTYpCisgICAgICAgICAgICAr
IHRoaXMucmFuZG9tSW50KG1pbiwgbWF4KS50b1N0cmluZygxNikKKyAgICAgICAgICAgICsgdGhp
cy5yYW5kb21JbnQobWluLCBtYXgpLnRvU3RyaW5nKDE2KTsKKyAgICB9Cit9CkluZGV4OiBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3V0aWxpdGllcy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3V0
aWxpdGllcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYg
QEAKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQgPSB7CisgICAgX3BhcnNlIDogZnVuY3Rpb24oc3Ry
LCBzZXApIHsKKyAgICAgICAgdmFyIG91dHB1dCA9IHt9OworICAgICAgICBzdHIuc3BsaXQoc2Vw
KS5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQpIHsKKyAgICAgICAgICAgIHZhciBpdGVtID0gcGFydC5z
cGxpdCgiPSIpOworICAgICAgICAgICAgdmFyIHZhbHVlID0gZGVjb2RlVVJJQ29tcG9uZW50KGl0
ZW1bMV0pOworICAgICAgICAgICAgaWYgKHZhbHVlWzBdID09ICdcJycgKQorICAgICAgICAgICAg
ICAgIG91dHB1dFtpdGVtWzBdXSA9IHZhbHVlLnN1YnN0cigxLCB2YWx1ZS5sZW5ndGggLSAyKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvdXRwdXRbaXRlbVswXV0gPSB2YWx1
ZTsgICAgICAgICAgICAgICAgCisgICAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBvdXRwdXQ7
CisgICAgfSwKKyAgICBwYXJzZVBhcmFtZXRlcnMgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX3BhcnNlKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyKDEpLCAiJiIpOwor
ICAgIH0sCisgICAgcGFyc2VBcmd1bWVudHMgOiBmdW5jdGlvbihzdHIpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX3BhcnNlKHN0ciwgIiAiKTsKKyAgICB9LAorICAgIGV4dGVuZE9iamVjdCA6IGZ1
bmN0aW9uKG9iajEsIG9iajIpIHsKKyAgICAgICAgZm9yICh2YXIgYXR0cm5hbWUgaW4gb2JqMikK
KyAgICAgICAgICAgIG9iajFbYXR0cm5hbWVdID0gb2JqMlthdHRybmFtZV07CisgICAgICAgIHJl
dHVybiBvYmoxOworICAgIH0sCisgICAgY29weU9iamVjdCA6IGZ1bmN0aW9uKG9iaikgeworICAg
ICAgICByZXR1cm4gdGhpcy5leHRlbmRPYmplY3Qoe30sIG9iaik7CisgICAgfSwKKyAgICBtZXJn
ZU9iamVjdHMgOiBmdW5jdGlvbihvYmoxLCBvYmoyKSB7CisgICAgICAgIHJldHVybiB0aGlzLmV4
dGVuZE9iamVjdCh0aGlzLmNvcHlPYmplY3Qob2JqMSksIG9iajIpOworICAgIH0KK307CisKKy8v
IFRoaXMgZXZlbnQgbGlzdGVuZXIgcnVucyB0aGUgdGVzdCBpZiBpdCBpcyBsb2FkZWQgb3V0c2lk
ZSB0aGUgYmVuY2htYXJrIHJ1bm5lci4KK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwg
ZnVuY3Rpb24oKSB7CisgICAgaWYgKHdpbmRvdy5zZWxmICE9PSB3aW5kb3cudG9wKQorICAgICAg
ICByZXR1cm47CisgICAgd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUobnVsbCwgbnVsbCwg
MzAwMDAsIDUwLCBudWxsLCBudWxsKTsKKyAgICB3aW5kb3cuYmVuY2htYXJrLnN0YXJ0KCk7Cit9
KTsKKworLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgc3VpdGUgY29udHJvbGxl
ciBydW4tY2FsbGJhY2sgd2hlbiBydW5uaW5nIHRoZSBiZW5jaG1hcmsgcnVubmVyLgord2luZG93
LnJ1bkJlbmNobWFyayA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpIHsKKyAgICB2YXIgbWVyZ2VPcHRpb25zID0gd2luZG93LmJlbmNobWFy
a0NsaWVudC5tZXJnZU9iamVjdHMob3B0aW9ucywgd2luZG93LmJlbmNobWFya0NsaWVudC5wYXJz
ZVBhcmFtZXRlcnMoKSk7CisgICAgd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUoc3VpdGUs
IHRlc3QsIG1lcmdlT3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICByZXR1
cm4gd2luZG93LmJlbmNobWFyay5ydW4oKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcuc3ZnCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcuc3ZnCShyZXZp
c2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95
aW4teWFuZy5zdmcJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBAQAorPHN2ZyB2ZXJzaW9u
PSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCAyMDAgMjAwIj4NCisgIDxk
ZWZzPg0KKyAgICA8Y2xpcFBhdGggaWQ9ImxlZnQtaGFsZiI+DQorICAgICAgPHJlY3Qgd2lkdGg9
IjEwMCIgaGVpZ2h0PSIyMDAiLz4NCisgICAgPC9jbGlwUGF0aD4NCisgICAgPGNsaXBQYXRoIGlk
PSJyaWdodC1oYWxmIj4NCisgICAgICA8cmVjdCB4PSIxMDAiIHdpZHRoPSIxMDAiIGhlaWdodD0i
MjAwIi8+DQorICAgIDwvY2xpcFBhdGg+DQorICA8L2RlZnM+DQorICA8Y2lyY2xlIGN4PSIxMDAi
IGN5PSIxMDAiIHI9Ijk4IiBmaWxsPSJub25lIiBzdHJva2U9ImdyZWVuIiBzdHJva2Utd2lkdGg9
IjIiLz4NCisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjEwMCIgcj0iOTgiIGZpbGw9IndoaXRlIiBj
bGlwLXBhdGg9InVybCgjbGVmdC1oYWxmKSIvPg0KKyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iMTAw
IiByPSI5OCIgZmlsbD0iZ3JlZW4iIGNsaXAtcGF0aD0idXJsKCNyaWdodC1oYWxmKSIvPg0KKyAg
PGNpcmNsZSBjeD0iMTAwIiBjeT0iNTAiICByPSI0OSIgZmlsbD0iZ3JlZW4iLz4NCisgIDxjaXJj
bGUgY3g9IjEwMCIgY3k9IjE0OCIgcj0iNDkiIGZpbGw9IndoaXRlIi8+DQorICA8Y2lyY2xlIGN4
PSIxMDAiIGN5PSI1MCIgIHI9IjEwIiBmaWxsPSJ3aGl0ZSIvPiAgICANCisgIDxjaXJjbGUgY3g9
IjEwMCIgY3k9IjE0OCIgcj0iMTAiIGZpbGw9ImdyZWVuIi8+DQorPC9zdmc+DQpJbmRleDogUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L2xheWVy
aW5nLXRleHQuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4KKyAgICAu
dGV4dC1sYXllciB7CisgICAgICBmb250LXNpemU6IDExLjVweDsKKyAgICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICAgIGxlZnQ6IDBweDsKKyAgICAgIHRvcDogMHB4OworICAgICAgcGFkZGlu
ZzogNXB4OworICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgfQorICA8
L3N0eWxlPiAgCisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9
Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuY3NzIj4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PiAgCisgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0
aC5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYmVuY2htYXJrLmpz
Ij48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwv
c2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4K
KyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9sYXllcmluZy10ZXh0LmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorICA8ZGl2IGlkPSJzdGFnZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMv
bGF5ZXJpbmctdGV4dC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qcwkocmV2aXNpb24gMCkKKysr
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmlu
Zy10ZXh0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjU5IEBACitmdW5jdGlvbiBMYXll
cmluZ1RleHRBbmltYXRvcihiZW5jaG1hcmspIHsKKyAgICBBbmltYXRvci5jYWxsKHRoaXMsIGJl
bmNobWFyayk7Cit9OworCitMYXllcmluZ1RleHRBbmltYXRvci5wcm90b3R5cGUgPSBPYmplY3Qu
Y3JlYXRlKEFuaW1hdG9yLnByb3RvdHlwZSk7CitMYXllcmluZ1RleHRBbmltYXRvci5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBMYXllcmluZ1RleHRBbmltYXRvcjsKKworTGF5ZXJpbmdUZXh0QW5p
bWF0b3IucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAoIUFuaW1hdG9y
LnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLmFuaW1hdGUodGhpcy50aW1lRGVsdGEoKSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIExheWVyaW5nVGV4dFN0YWdlKGVsZW1lbnQsIG9w
dGlvbnMpIHsKKyAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgIHRo
aXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGhpcy5lbGVtZW50OworICAgIHRoaXMuX3RleHRFbGVt
ZW50cyA9IFtdOworICAgIHRoaXMuX3RleHRJdGVtSW5kZXggPSAwOworICAgIHRoaXMuX2NvbG9y
SW5kZXggPSAwOworICAgIHRoaXMuX2FuaW1hdGVDb3VudHMgPSAwOworfQorCitMYXllcmluZ1Rl
eHRTdGFnZS50ZXh0SXRlbXMgPSBbCisgICAgIjxkaXYgaWQ9J2lkXzAwJyBjbGFzcz0ndGV4dC1s
YXllcic+IiwKKyAgICAgICAgIjxoMiBpZD0naWRfMDEnPkN1c3RvbWl6ZWQgc3R5bGVzPC9oMj4i
LAorICAgICAgICAiPHAgaWQ9J2lkXzAyJz5JZiB5b3Ugd2FudCBmb3JtYXR0aW5nIGNob2ljZXMg
dGhhdCBhcmUgbm90IGF2YWlsYWJsZSBmcm9tIHRoZSBidWlsdC1pbiBzdHlsZXMsIFF1aWNrIFN0
eWxlIHNldHMsIGFuZCB0aGVtZXMsIHlvdSBjYW4gY3JlYXRlIGN1c3RvbSBzdHlsZXMgdG8gc3Vp
dCB5b3VyIG5lZWRzLjwvcD4iLAorICAgICAgICAiPHAgaWQ9J2lkXzAzJz5UaGUgZWFzaWVzdCB3
YXkgdG8gY3JlYXRlIGEgY3VzdG9tIHN0eWxlIGlzIHRvIG1vZGlmeSBhIGJ1aWx0LWluIHN0eWxl
IGFuZCB0aGVuIHNhdmUgaXQgYXMgYSBuZXcgc3R5bGUuPC9wPiIsCisgICAgICAgICI8cCBpZD0n
aWRfMDQnPkZvciBleGFtcGxlLCB5b3UgbWlnaHQgd2FudCB0byBmb3JtYXQgYSBwYXJhZ3JhcGgg
b2YgcXVvdGVkIG1hdGVyaWFsIHdpdGggYSBoYWxmLWluY2ggaW5kZW50IGZyb20gdGhlIGxlZnQg
YW5kIHJpZ2h0IG1hcmdpbnMsIHNpbmdsZSBzcGFjZWQuIFRoZXJlIGlzIG5vIGJ1aWx0LWluIHN0
eWxlIHRvIGFjY29tbW9kYXRlIHRoaXMsIGJ1dCB5b3UgY2FuIGNyZWF0ZSBhIGN1c3RvbSBzdHls
ZSBieSBkb2luZyB0aGUgZm9sbG93aW5nOjwvcD4iLAorICAgICAgICAiPG9sIHR5cGU9JzEnIGlk
PSdpZF8wNSc+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzA2Jz48cD5DbGljayBpbiB0aGUg
cGFyYWdyYXBoIHlvdSB3YW50IHRvIGZvcm1hdC48L3A+PC9saT4iLAorICAgICAgICAgICAgIjxs
aSBpZD0naWRfMDcnPjxwPk9uIHRoZSA8Yj5Ib21lPC9iPiB0YWIsIGNsaWNrIHRoZSA8Yj5QYXJh
Z3JhcGg8L2I+IERpYWxvZyBCb3ggTGF1bmNoZXIuPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8
bGkgaWQ9J2lkXzA4Jz48cD5JbiB0aGUgPGI+SW5kZW50YXRpb248L2I+IHNlY3Rpb24sIHR5cGUg
PGIgY2xhc3M9J29jcExpdGVyYWwnPjAuNSc8L2I+IGluIHRoZSA8Yj5MZWZ0PC9iPiBhbmQgPGI+
UmlnaHQ8L2I+IGJveGVzLjwvcD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8wOSc+
PHA+SW4gdGhlIDxiPlNwYWNpbmc8L2I+IHNlY3Rpb24sIGluIHRoZSA8Yj5MaW5lIHNwYWNpbmc8
L2I+IGxpc3QsIGNsaWNrIDxiPlNpbmdsZTwvYj4uPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8
bGkgaWQ9J2lkXzEwJz48cD5DbGljayA8Yj5PSzwvYj4uPC9wPjwvbGk+IiwKKyAgICAgICAgICAg
ICI8bGkgaWQ9J2lkXzExJz48cD5SaWdodC1jbGljayBpbiB0aGUgcGFyYWdyYXBoLCBwb2ludCB0
byA8Yj5TdHlsZXM8L2I+LCBhbmQgdGhlbiBjbGljayA8Yj5TYXZlIFNlbGVjdGlvbiBhcyBhIE5l
dyBRdWljayBTdHlsZTwvYj4uPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzEy
Jz48cD5JbiB0aGUgPGI+TmFtZTwvYj4gYm94LCB0eXBlIGEgbmFtZSBmb3IgdGhlIHN0eWxlLCBz
dWNoIGFzIDxiPkJsb2NrIHF1b3RlPC9iPi4gPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8bGkg
aWQ9J2lkXzEzJz48cD5JZiB5b3Ugd2FudCB0aGUgc3R5bGUgdG8gYmUgaW5jbHVkZWQgaW4gdGhl
IGdhbGxlcnkgb2Ygc3R5bGVzIG9uIHRoZSA8Yj5Ib21lPC9iPiB0YWIsIGFuZCBpZiB5b3Ugd2Fu
dCB0aGUgc3R5bGUgdG8gYmUgYSBsaW5rZWQgc3R5bGUsIGNsaWNrIDxiPk9LPC9iPi48L3A+PC9s
aT4iLAorICAgICAgICAgICAgIjxsaSBpZD0naWRfMTQnPiIsCisgICAgICAgICAgICAgICAgIjxw
IGlkPSdpZF8xNSc+SWYgeW91IGRvbid0IHdhbnQgdGhlIHN0eWxlIHRvIGJlIGluY2x1ZGVkIGlu
IHRoZSBnYWxsZXJ5LCBvciBpZiB5b3Ugd2FudCB0aGUgc3R5bGUgdG8gYmUgZWl0aGVyIGEgcGFy
YWdyYXBoIG9yIGEgY2hhcmFjdGVyIHN0eWxlLCBjbGljayA8Yj5Nb2RpZnk8L2I+IGFuZCBkbyBv
bmUgb3IgYm90aCBvZiB0aGUgZm9sbG93aW5nOjwvcD4iLAorICAgICAgICAgICAgICAgICI8dWwg
aWQ9J2lkXzE2Jz4iLAorICAgICAgICAgICAgICAgICAgICAiPGxpIGlkPSdpZF8xNyc+PHA+QXQg
dGhlIGJvdHRvbSBvZiB0aGUgZGlhbG9nIGJveCwgY2xlYXIgdGhlIDxiPkFkZCB0byBRdWljayBT
dHlsZTwvYj4gbGlzdCBib3guPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICAgICAgICAgIjxsaSBp
ZD0naWRfMTgnPjxwPkluIHRoZSA8Yj5TdHlsZSB0eXBlPC9iPiBsaXN0LCBjbGljayA8Yj5QYXJh
Z3JhcGg8L2I+IG9yIDxiPkNoYXJhY3RlcjwvYj4uPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICAg
ICAiPC91bD4iLAorICAgICAgICAgICAgIjwvbGk+IiwKKyAgICAgICAgIjwvb2w+IiwKKyAgICAg
ICAgIjxwIGlkPSdpZF8xOSc+SWYgeW91IHN3aXRjaCB0byBhIGRpZmZlcmVudCBRdWljayBTdHls
ZSBzZXQsIHlvdSBtYXkgbmVlZCB0byBhZGp1c3QgdGhlIHNldHRpbmdzIG9mIHlvdXIgY3VzdG9t
IHN0eWxlLiBJbiB0aGUgZXhhbXBsZSBoZXJlLCBpZiB5b3UgY3JlYXRlIHRoZSBCbG9jayBxdW90
ZSBzdHlsZSB3aGlsZSB0aGUgV29yZCAyMDA3IFF1aWNrIFN0eWxlIHNldCBpcyBhcHBsaWVkLCBh
bmQgdGhlbiB5b3Ugc3dpdGNoIHRvIHRoZSBUcmFkaXRpb25hbCBRdWljayBTdHlsZSBzZXQsIHlv
dSBjYW4gY2hhbmdlIHRoZSBCbG9jayBxdW90ZSBzdHlsZSB0byByZW1vdmUgdGhlIGZpcnN0LWxp
bmUgaW5kZW50YXRpb24gdGhhdCB0aGUgVHJhZGl0aW9uYWwgUXVpY2sgU3R5bGUgc2V0IGludHJv
ZHVjZXMuIFRvIGNoYW5nZSBhIHN0eWxlLCBkbyB0aGUgZm9sbG93aW5nOjwvcD4iLAorICAgICAg
ICAiPG9sIHR5cGU9JzEnIGlkPSdpZF8yMCc+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzIx
Jz48cD5PbiB0aGUgPGI+SG9tZTwvYj4gdGFiIGluIHRoZSA8Yj5TdHlsZXM8L2I+IGdyb3VwLCBy
aWdodC1jbGljayA8Yj5CbG9jayBxdW90ZTwvYj4sIGFuZCB0aGVuIGNsaWNrIDxiPk1vZGlmeTwv
Yj4uPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzIyJz48cD5DbGljayA8Yj5G
b3JtYXQ8L2I+LCBhbmQgdGhlbiBjbGljayA8Yj5QYXJhZ3JhcGg8L2I+LjwvcD48L2xpPiIsCisg
ICAgICAgICAgICAiPGxpIGlkPSdpZF8yMyc+PHA+SW4gdGhlIDxiPkluZGVudGF0aW9uPC9iPiBz
ZWN0aW9uLCBpbiB0aGUgPGI+U3BlY2lhbDwvYj4gbGlzdCwgY2xpY2sgPGI+KG5vbmUpPC9iPi48
L3A+PC9saT4iLAorICAgICAgICAiPC9vbD4iLAorICAgICAgICAiPHAgaWQ9J2lkXzI0Jz5UaGUg
bW9yZSBjaGFyYWN0ZXJpc3RpY3MgdGhhdCB5b3Ugc3BlY2lmeSBmb3IgdGhlIHN0eWxlLCB0aGUg
bGVzcyB0aGUgc3R5bGUgaXMgYWZmZWN0ZWQgYnkgc3dpdGNoaW5nIFF1aWNrIFN0eWxlIHNldHMg
b3IgdGhlbWVzLjwvcD4iLAorICAgICI8L2Rpdj4iCitdOworCitMYXllcmluZ1RleHRTdGFnZS5w
YXJzZVRleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW0pIHsKKyAgICB2YXIgcHJhc2VSZXN1bHQg
PSB7fTsKKyAgICBwcmFzZVJlc3VsdC50YWdTdGFydCA9IHRleHRJdGVtLm1hdGNoKC88KC4qPyk+
L2cpWzBdOworICAgIHZhciBzcGFjZUluZGV4ID0gcHJhc2VSZXN1bHQudGFnU3RhcnQuaW5kZXhP
ZigiICIpOworICAgIHByYXNlUmVzdWx0Lm5vZGVOYW1lID0gcHJhc2VSZXN1bHQudGFnU3RhcnQu
c3Vic3RyaW5nKDEsIHNwYWNlSW5kZXggIT0gLTEgPyBzcGFjZUluZGV4IDogcHJhc2VSZXN1bHQu
dGFnU3RhcnQubGVuZ3RoIC0gMSk7CisgICAgcHJhc2VSZXN1bHQuYXJncyA9IHNwYWNlSW5kZXgg
IT0gLTEgPyB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LnBhcnNlQXJndW1lbnRzKHByYXNlUmVzdWx0
LnRhZ1N0YXJ0LnN1YnN0cmluZyhzcGFjZUluZGV4ICsgMSwgcHJhc2VSZXN1bHQudGFnU3RhcnQu
bGVuZ3RoIC0gMSkpIDoge307CisgICAgdmFyIHRhZ0VuZCA9ICI8LyIgKyBwcmFzZVJlc3VsdC5u
b2RlTmFtZSArICI+IjsgICAgICAgICAgICAgICAgCisgICAgcHJhc2VSZXN1bHQudGFnRW5kID0g
dGV4dEl0ZW0uZW5kc1dpdGgodGFnRW5kKSA/IHRhZ0VuZCA6ICIiOworICAgIHJldHVybiBwcmFz
ZVJlc3VsdDsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UuaXNPcGVuaW5nVGV4dEl0ZW0gPSBmdW5j
dGlvbih0ZXh0SXRlbSkgeworICAgIHJldHVybiAhTGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VUZXh0
SXRlbSh0ZXh0SXRlbSkudGFnRW5kLmxlbmd0aDsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UuaXND
bG9zaW5nVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbSkgeworICAgIHJldHVybiB0ZXh0SXRl
bS5pbmRleE9mKCIvIikgPT0gKzE7Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0Zs
YWdzID0gTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zLm1hcChmdW5jdGlvbih0ZXh0SXRlbSl7
CisgICB2YXIgdGV4dEl0ZW1GbGFncyA9IHt9OworICAgdGV4dEl0ZW1GbGFncy5pc09wZW5pbmcg
PSBMYXllcmluZ1RleHRTdGFnZS5pc09wZW5pbmdUZXh0SXRlbSh0ZXh0SXRlbSk7CisgICB0ZXh0
SXRlbUZsYWdzLmlzQ2xvc2luZyA9IExheWVyaW5nVGV4dFN0YWdlLmlzQ2xvc2luZ1RleHRJdGVt
KHRleHRJdGVtKTsgICAKKyAgIHJldHVybiB0ZXh0SXRlbUZsYWdzOworfSk7CisKK0xheWVyaW5n
VGV4dFN0YWdlLmlzQ29sb3JhYmxlVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKSB7
CisgICAgcmV0dXJuICEodGV4dEl0ZW1GbGFncy5pc09wZW5pbmcgfHwgdGV4dEl0ZW1GbGFncy5p
c0Nsb3NpbmcpOworfQorCitMYXllcmluZ1RleHRTdGFnZS5pc0luc2VydGFibGVUZXh0SXRlbSA9
IGZ1bmN0aW9uKHRleHRJdGVtRmxhZ3MpIHsKKyAgICByZXR1cm4gIXRleHRJdGVtRmxhZ3MuaXND
bG9zaW5nOworfQorCitMYXllcmluZ1RleHRTdGFnZS5jb2xvcmFibGVUZXh0SXRlbXMgPSBMYXll
cmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFncy5maWx0ZXIoZnVuY3Rpb24odGV4dEl0ZW1GbGFn
cykgeworICAgIHJldHVybiBMYXllcmluZ1RleHRTdGFnZS5pc0NvbG9yYWJsZVRleHRJdGVtKHRl
eHRJdGVtRmxhZ3MpOworfSkubGVuZ3RoOworCitMYXllcmluZ1RleHRTdGFnZS5pbnNlcnRhYmxl
VGV4dEl0ZW1zID0gTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MuZmlsdGVyKGZ1bmN0
aW9uKHRleHRJdGVtRmxhZ3MpIHsKKyAgICByZXR1cm4gTGF5ZXJpbmdUZXh0U3RhZ2UuaXNJbnNl
cnRhYmxlVGV4dEl0ZW0odGV4dEl0ZW1GbGFncyk7Cit9KS5sZW5ndGg7CisKK0xheWVyaW5nVGV4
dFN0YWdlLmNvbG9ySW5kZXhUb1RleHRFbGVtZW50SW5kZXggPSBmdW5jdGlvbihjb2xvckluZGV4
KSB7CisgICAgdmFyIHRleHRFbGVtZW50SW5kZXggPSAwOworICAgIHZhciBpbmRleCA9IDA7Cisg
ICAgCisgICAgZm9yICh2YXIgdGV4dEl0ZW1JbmRleCA9IDA7IHRleHRJdGVtSW5kZXggPCBMYXll
cmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFncy5sZW5ndGg7ICsrdGV4dEl0ZW1JbmRleCkgewor
ICAgICAgICBpZiAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDb2xvcmFibGVUZXh0SXRlbShMYXllcmlu
Z1RleHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0ZXh0SXRlbUluZGV4XSkpIHsKKyAgICAgICAgICAg
IGlmICgrK2luZGV4ID4gY29sb3JJbmRleCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNJbnNlcnRhYmxlVGV4dEl0ZW0o
TGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3NbdGV4dEl0ZW1JbmRleF0pKQorICAgICAg
ICAgICAgKyt0ZXh0RWxlbWVudEluZGV4OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdGV4dEVs
ZW1lbnRJbmRleDsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZShTdGFnZS5wcm90b3R5cGUpOworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0gTGF5ZXJpbmdUZXh0U3RhZ2U7CisKK0xheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlw
ZS5fbmV4dFRleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW1GbGFncykgeworICAgIHZhciB0ZXh0
SXRlbSA9IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc1t0aGlzLl90ZXh0SXRlbUluZGV4XTsK
KyAgICB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmV4dGVuZE9iamVjdCh0ZXh0SXRlbUZsYWdzLCBM
YXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0aGlzLl90ZXh0SXRlbUluZGV4XSk7Cisg
ICAgdGhpcy5fdGV4dEl0ZW1JbmRleCA9ICh0aGlzLl90ZXh0SXRlbUluZGV4ICsgMSkgJSBMYXll
cmluZ1RleHRTdGFnZS50ZXh0SXRlbXMubGVuZ3RoOworICAgIHJldHVybiB0ZXh0SXRlbTsKK30K
KworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9wcmV2aW91c1RleHRJdGVtID0gZnVuY3Rp
b24odGV4dEl0ZW1GbGFncykgeworICAgIHRoaXMuX3RleHRJdGVtSW5kZXggPSAodGhpcy5fdGV4
dEl0ZW1JbmRleCArIExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtcy5sZW5ndGggLSAxKSAlIExh
eWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtcy5sZW5ndGg7CisgICAgd2luZG93LmJlbmNobWFya0Ns
aWVudC5leHRlbmRPYmplY3QodGV4dEl0ZW1GbGFncywgTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0
ZW1zRmxhZ3NbdGhpcy5fdGV4dEl0ZW1JbmRleF0pOyAgICAKKyAgICByZXR1cm4gTGF5ZXJpbmdU
ZXh0U3RhZ2UudGV4dEl0ZW1zW3RoaXMuX3RleHRJdGVtSW5kZXhdOworfQorCitMYXllcmluZ1Rl
eHRTdGFnZS5wcm90b3R5cGUuX3B1c2hUZXh0RWxlbWVudCA9IGZ1bmN0aW9uKCkgeworICAgIHZh
ciB0ZXh0SXRlbUZsYWdzID0ge307CisgICAgdmFyIHRleHRJdGVtID0gdGhpcy5fbmV4dFRleHRJ
dGVtKHRleHRJdGVtRmxhZ3MpOworICAgIGZvciAoIDsgdGV4dEl0ZW1GbGFncy5pc0Nsb3Npbmc7
IHRleHRJdGVtID0gdGhpcy5fbmV4dFRleHRJdGVtKHRleHRJdGVtRmxhZ3MpKQorICAgICAgICB0
aGlzLl90ZXh0RWxlbWVudFBhcmVudCA9IHRoaXMuX3RleHRFbGVtZW50UGFyZW50LnBhcmVudE5v
ZGU7CisKKyAgICB2YXIgcHJhc2VSZXN1bHQgPSBMYXllcmluZ1RleHRTdGFnZS5wYXJzZVRleHRJ
dGVtKHRleHRJdGVtKTsKKyAgICB0ZXh0SXRlbSA9IHRleHRJdGVtLnN1YnN0cmluZyhwcmFzZVJl
c3VsdC50YWdTdGFydC5sZW5ndGgsIHRleHRJdGVtLmxlbmd0aCAtIHByYXNlUmVzdWx0LnRhZ0Vu
ZC5sZW5ndGgpOworCisgICAgdmFyIHRleHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dChwcmFzZVJlc3VsdC5ub2RlTmFtZSk7CisKKyAgICBmb3IgKHZhciBhdHRybmFtZSBpbiBwcmFz
ZVJlc3VsdC5hcmdzKQorICAgICAgICB0ZXh0RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cm5hbWUs
IHByYXNlUmVzdWx0LmFyZ3NbYXR0cm5hbWVdKTsKKworICAgIHRoaXMuX3RleHRFbGVtZW50UGFy
ZW50LmFwcGVuZENoaWxkKHRleHRFbGVtZW50KTsKKyAgICAKKyAgICBpZiAoIXByYXNlUmVzdWx0
LnRhZ0VuZC5sZW5ndGgpCisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGV4dEVs
ZW1lbnQ7CisKKyAgICB0ZXh0RWxlbWVudC5pbm5lckhUTUwgPSB0ZXh0SXRlbTsKKyAgICAKKyAg
ICB0aGlzLl90ZXh0RWxlbWVudHMucHVzaCh0ZXh0RWxlbWVudCk7CisgICAgcmV0dXJuIHRoaXMu
X3RleHRFbGVtZW50cy5sZW5ndGg7Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5f
cG9wVGV4dEVsZW1lbnQgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgdGV4dEl0ZW1GbGFncyA9IHt9
OyAgICAKKyAgICB2YXIgdGV4dEl0ZW0gPSB0aGlzLl9wcmV2aW91c1RleHRJdGVtKHRleHRJdGVt
RmxhZ3MpOworICAgIGZvciAoIDsgdGV4dEl0ZW1GbGFncy5pc0Nsb3Npbmc7IHRleHRJdGVtID0g
dGhpcy5fcHJldmlvdXNUZXh0SXRlbSh0ZXh0SXRlbUZsYWdzKSkKKyAgICAgICAgdGhpcy5fdGV4
dEVsZW1lbnRQYXJlbnQgPSB0aGlzLl90ZXh0RWxlbWVudFBhcmVudC5sYXN0Q2hpbGQ7CisKKyAg
ICBpZiAodGV4dEl0ZW1GbGFncy5pc09wZW5pbmcpCisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50
UGFyZW50ID0gdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQucGFyZW50Tm9kZTsKKworICAgIHZhciB0
ZXh0RWxlbWVudCA9IHRoaXMuX3RleHRFbGVtZW50c1t0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3Ro
IC0gMV07CisgICAgCisgICAgaWYgKHRleHRFbGVtZW50ICYmIHRleHRFbGVtZW50LnBhcmVudE5v
ZGUgJiYgdGV4dEVsZW1lbnQucGFyZW50Tm9kZSA9PSB0aGlzLl90ZXh0RWxlbWVudFBhcmVudCkK
KyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQucmVtb3ZlQ2hpbGQodGV4dEVsZW1lbnQp
OworCisgICAgdGhpcy5fdGV4dEVsZW1lbnRzLnBvcCgpOworICAgIHJldHVybiB0aGlzLl90ZXh0
RWxlbWVudHMubGVuZ3RoOworfQorCitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX2NvbG9y
VGV4dEl0ZW0gPSBmdW5jdGlvbihjb2xvcikgeworICAgIHZhciB0ZXh0RWxlbWVudEluZGV4ID0g
TGF5ZXJpbmdUZXh0U3RhZ2UuY29sb3JJbmRleFRvVGV4dEVsZW1lbnRJbmRleCh0aGlzLl9jb2xv
ckluZGV4KTsKKyAgICBmb3IgKCA7IHRleHRFbGVtZW50SW5kZXggPCB0aGlzLl90ZXh0RWxlbWVu
dHMubGVuZ3RoOyB0ZXh0RWxlbWVudEluZGV4ICs9IExheWVyaW5nVGV4dFN0YWdlLmluc2VydGFi
bGVUZXh0SXRlbXMpCisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50c1t0ZXh0RWxlbWVudEluZGV4
XS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2Uu
cHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpIHsKKyAgICB0aGlzLl9jb2xv
clRleHRJdGVtKCJ0cmFuc3BhcmVudCIpOworICAgIHRoaXMuX2NvbG9ySW5kZXggPSAodGhpcy5f
Y29sb3JJbmRleCArIDEpICUgTGF5ZXJpbmdUZXh0U3RhZ2UuY29sb3JhYmxlVGV4dEl0ZW1zOwor
ICAgIHRoaXMuX2NvbG9yVGV4dEl0ZW0oIlllbGxvd0dyZWVuIik7CisgICAgCisgICAgdmFyIGJs
YWNrVGV4dEVsZW1lbnRzID0gTWF0aC5taW4odGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aCwgTGF5
ZXJpbmdUZXh0U3RhZ2UuaW5zZXJ0YWJsZVRleHRJdGVtcyk7CisgICAgdmFyIGkgPSAwOworICAg
IGZvciAoIDsgaSA8IHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGggLSBibGFja1RleHRFbGVtZW50
czsgKytpKQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVudHNbaV0uc3R5bGUuY29sb3IgPSAodGhp
cy5fYW5pbWF0ZUNvdW50cyAmIDEpID8gIkxpZ2h0WWVsbG93IiA6ICJ3aGl0ZSI7CisKKyAgICBm
b3IgKCA7IGkgPCB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOyArK2kpCisgICAgICAgIHRoaXMu
X3RleHRFbGVtZW50c1tpXS5zdHlsZS5jb2xvciA9ICJibGFjayI7CisgICAgICAgIAorICAgICsr
dGhpcy5fYW5pbWF0ZUNvdW50czsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLnR1
bmUgPSBmdW5jdGlvbihjb3VudCkgeworICAgIGNvdW50ID0gY291bnQgPiAwID8gTWF0aC5mbG9v
cihjb3VudCkgOiBNYXRoLmNlaWwoY291bnQpOworCisgICAgaWYgKGNvdW50ID09IDApCisgICAg
ICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOworCisgICAgaWYgKGNvdW50ID4g
MCkgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAg
ICB0aGlzLl9wdXNoVGV4dEVsZW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVt
ZW50cy5sZW5ndGg7CisgICAgfQorICAgICAgICAKKyAgICBjb3VudCA9IE1hdGgubWluKC1jb3Vu
dCwgdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBj
b3VudDsgKytpKQorICAgICAgICB0aGlzLl9wb3BUZXh0RWxlbWVudCgpOworCisgICAgcmV0dXJu
IHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7Cit9CisKK2Z1bmN0aW9uIExheWVyaW5nVGV4dEJl
bmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7
CisgICAgQmVuY2htYXJrLmNhbGwodGhpcywgb3B0aW9ucyk7CisgICAgCisgICAgdmFyIGVsZW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhZ2UiKTsKKyAgICBlbGVtZW50LnNldEF0
dHJpYnV0ZSgid2lkdGgiLCBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoKTsKKyAgICBlbGVtZW50
LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQpOworICAg
IAorICAgIHRoaXMuX3N0YWdlID0gdGhpcy5jcmVhdGVTdGFnZShlbGVtZW50KTsKKyAgICB0aGlz
Ll9hbmltYXRvciA9IHRoaXMuY3JlYXRlQW5pbWF0b3IoKTsKKyAgICB0aGlzLl9zdWl0ZSA9IHN1
aXRlOworICAgIHRoaXMuX3Rlc3QgPSB0ZXN0OworICAgIHRoaXMuX3JlY29yZFRhYmxlID0gcmVj
b3JkVGFibGU7CisgICAgdGhpcy5fcHJvZ3Jlc3NCYXIgPSBwcm9ncmVzc0JhcjsKK30KKworTGF5
ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQmVuY2htYXJrLnBy
b3RvdHlwZSk7CitMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0g
TGF5ZXJpbmdUZXh0QmVuY2htYXJrOworCitMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBl
LmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkgeworICAgIHJldHVybiBuZXcgTGF5ZXJp
bmdUZXh0U3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK0xheWVyaW5nVGV4dEJl
bmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1
cm4gbmV3IExheWVyaW5nVGV4dEFuaW1hdG9yKHRoaXMpOworfQorCitMYXllcmluZ1RleHRCZW5j
aG1hcmsucHJvdG90eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkgeworICAgIHJldHVybiB0aGlz
Ll9zdGFnZS50dW5lKGNvdW50KTsKK30KKworTGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlw
ZS5jbGVhciA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLl9zdGFnZS5jbGVhcigpOwor
fQorCitMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlLnNob3dSZXN1bHRzID0gZnVuY3Rp
b24obWVzc2FnZSwgcHJvZ3Jlc3MpIHsKKyAgICBpZiAoIXRoaXMuX3JlY29yZFRhYmxlIHx8ICF0
aGlzLl9wcm9ncmVzc0JhciB8fCAhdGhpcy5fc3VpdGUgfHwgIXRoaXMuX3Rlc3QpCisgICAgICAg
IHJldHVybjsKKworICAgIHRoaXMuX3JlY29yZFRhYmxlLnNob3dSZWNvcmQodGhpcy5fc3VpdGUs
IHRoaXMuX3Rlc3QsIHRoaXMuX3NhbXBsZXIsIG1lc3NhZ2UpOworICAgIHRoaXMuX3Byb2dyZXNz
QmFyLnNldFBvcyhwcm9ncmVzcyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRl
ID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jh
cikgeworICAgIHdpbmRvdy5iZW5jaG1hcmsgPSBuZXcgTGF5ZXJpbmdUZXh0QmVuY2htYXJrKHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDog
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5wbmcK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4K
c3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5wbmcJKHJldmlzaW9u
IDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15
YW5nLnBuZwkod29ya2luZyBjb3B5KQoKUHJvcGVydHkgY2hhbmdlcyBvbjogUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5wbmcKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpB
ZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCitpbWFnZS9wbmcKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQoKaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdRQUFBQmtDQVlB
QUFCdzRwVlVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTgpBQUI2SmdBQWdJUUFBUG9B
QUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFt
cHdZCkFBQUNCR2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQSGc2ZUcxd2JXVjBZ
U0I0Yld4dWN6cDRQU0poWkc5aVpUcHUKY3pwdFpYUmhMeUlnZURwNGJYQjBhejBpV0UxUUlFTnZj
bVVnTlM0MExqQWlQZ29nSUNBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOQpJbWgwZEhBNkx5OTNk
M2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQZ29nSUNBZ0lD
QThjbVJtCk9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lD
QjRiV3h1Y3pwbGVHbG1QU0pvZEhSd09pOHYKYm5NdVlXUnZZbVV1WTI5dEwyVjRhV1l2TVM0d0x5
SUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZkR2xtWmowaWFIUjBjRG92TDI1egpMbUZrYjJKbExt
TnZiUzkwYVdabUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBRYVhobGJGbEVhVzFsYm5O
cGIyNCtNVEV3ClBDOWxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajRLSUNBZ0lDQWdJQ0FnUEdW
NGFXWTZVR2w0Wld4WVJHbHRaVzV6YVc5dVBqRXcKTlR3dlpYaHBaanBRYVhobGJGaEVhVzFsYm5O
cGIyNCtDaUFnSUNBZ0lDQWdJRHgwYVdabU9rOXlhV1Z1ZEdGMGFXOXVQakU4TDNScApabVk2VDNK
cFpXNTBZWFJwYjI0K0NpQWdJQ0FnSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ0lDQThMM0pr
WmpwU1JFWStDand2CmVEcDRiWEJ0WlhSaFBnb1VuQTIrQUFBTldFbEVRVlI0QWUxZGZXd1UxUlkv
dTZWQ1cwcXJpQ1FrVUNGUlFBSklDQWhSb2NURVlnMEUKVkVUOEN4QVNFU0l4d2g4YUJUSEJxRFVH
QSs4OURXRDR4dzlRaTBGalNFU3RpWkZXcVJIQ3E2RFFCSk5YcW56SVI0cllVczQ3dnpNTQpIWWJk
em03MzduenM5aVN6TTdzemV6L09iKzQ5NTU1Nzd6a3hDamt4ODNncDRodzVwdEtwVThQbzJMRkIx
TkpTUWlkT0ZOSzVjd1YwCjRRSlJlM3RNcTNIRERVekZ4VVFEQm5UU29FRWROR1JJRzFWVW5LQ0JB
MytYKzN2bCtEUVdpKzNYWjBQNllWVWtSSVVUQUdaS2NaYlQKb1VNVHFiNytGbXBzTEtDZmZ5YmFM
M3hzYnlkaXRzNnBsRGtlSjRwSkZRc0xpVzY3amVpdXU0anV2cnVUcGt6NWswYU4yaWRKL0ZzQQoy
cDFLVW5uMWpJQ3dsTnZhOXZQMjdlMjhhQkh6c0dITXc0Y3pQL2dnODczM01oY1hBd1l6UjBrSmMv
Lyt6QU1ITXMrYng1b244cFl5CjVCWFQzWlVWQm95Ull3OS84a2s3ejUvUDNLY1BjM1UxODZaTnpG
OTl4Yng0c1JrQXZJQXNLMk9PeDVrZmVJQzV0clpkeXlSbGM1YzMKWjc5TGhlZnc4ZU5IZWQyNnk5
b1NLaXVaMzNtSCtmUnB1U1ZVVThOY1VPQVBHRzZ3eXN1dGxvT3lvWXhTMWx3R1lqWWZPZkkvWHJH
QwpPUlpqZnVvcDVwOStVZ3owbzdXVmVkYXNZSUJ3QTFOVVpKVmp5UkxXTWpQUHpobGdoTmxEK2VU
SkpuN21HZWErZlptZmY1NFp6SGRTClF3UHppQkhoQU1NSkRsb3FEcnc4cUlQVUpkTEFTQVcyOElZ
Tm5UeGdBUFBLbGRjREFWQysrWWE1dERSOFlEaUJ3WXZVcng5TFhTNmgKVHBFRFJRbzlnK3ZyejZx
R0JFSHQ3SnJrNWxWQ3l3ZzdHRTVnb0FDTUhjdGFONmxqSklBUlptL2c5ZXN2cTJvSllaMk0wRzJG
c1p0eQpBcERzdXJDUStaVlhMcU91b1FWRkNsY2ltc2wvVlRDalZUUTNKNFBDK2owc0Fqd1owNzEr
UjJ1Wk5vMjF6bEwzVUFFakhKN0FYMy9kCnBtcnMyclhkQTRHN1VHMjlLaHlWK3hoZ291N0NnMUNB
SWdXcDRuZmY3VkFOYXZ0MnNMdDdRc3NKYXB5UkxaQlJIL0JBZUJFb0tGS0EKaGZ6NjY1MXE1b0NB
VG9YOEdvRm5pL25KMG9VNXBxYW1FendKQkJUSmVEVy85TkpsdnZOT2IzbGhBM1h3WU81MFZZbUFn
VnpCS0Y5NAo0eXNvZUFzVWpNbVRFNDh0YkFEY1o0elNFMVVrbDM3ckFzV2ZsaUk4cnRKdUNpM0RQ
ZUoyQStEOGZrbkdWRkVhYzJUeWtnQVVxL3ZLCnJrd1IvazVRNFFYVHVKZGE2d1FEMXp0MjVIN3Jj
SUlJbWJKdEd3UjlkclF2U2JoRTFUdVlFVklWNEFEQ3Bsd1Y1azRRM05mUXZpeVYKMlB3NGhWdGFt
blNja1lwcWE0UGdQRWQxVk81bWNycmZNVTZSQWJOUklTOTgzYUFqOEZRR2ZVNFE3R3ZJbW5Rcmtz
cnpqei9PL08yMwp6QmN2V2dldThWc3EvL1h6R1l6b1RabFpKS0VaYXB1Q09hU25CSXV1YVFhODhV
YnkwdUNlNmZ3eVNROUMzcko5Wlc2UVZNc21CRlM2ClF0ekpybTNiekRJSXJjQ0x3dFpTWUpCc2FE
aWJVZGNsZGQ2aUp2VHVyTFplak1GOTA3WXJkRTFlaEdjeWVhdXo4ZDl4NDFEcW5zMm4KeUIrSDZ1
UlNKbDJWemJSMTY4d3lCekxEaS9CTU5waWFTWnJvdWpCaDE1T1pSNTJ5eEV4ZnNza2xMNFk0Ny9j
QzB2VnlZT2J4MUttbQpaRjJYckNTN25vU1hzMm45K3RHMGFCSFJCQVBqR3F3bU5Fa05EZDZwcGZL
TWR5cm1ud0EwTDc0NFdubWNhdXE2MGdJRHdIUk1JODRXCjRiN3VGZXBkTFFSZEhnYU1zZ0luSlR5
RWwzTjBxUTVXaDVpaWZGZDczWElIZ0dDSlVTcnJ2bVJVMmF6cnBreTFEbVNiN3dORE55RDIKOTli
V285MjJFbUhkR0xYbll4MlNhY3BYMDRuTmZQY1ppL0ZlZmhseko4bVhyY3JOUFdxdk1xRlp1UUhO
UitPaUd3VDNkOWk1aE9mTwpWbkt0bGxWYk80MUdqRENqV1RsendmVk03RExvcFdzNDBObEp0SFBu
Tk9kdlZ3RVJwSmJTamgyRnRHQ0I4NzY1NjRjZUlpb3ROWmRlCkxxUjA1Z3pSbGkxaVUwbXdGVUwz
WjJCTGdMMEtIWTNKTk9YREZLNjdXL0w2RG8zcndvWDk5dnQxdFlYUTU1K1BwdnZ2SjdyeFJ2dWUK
K2ZPVFQ1cFBNK29wOXU5UHl2c3I5VkJBcENGVTArN2RoVlJkbmQzcWpSR0ZZdkhpN09ZUnRkVFBp
Z0g0NDQvUmJYVXhYNzU4cHRyVgo0Y09tTzZucjA4dkZoWEplM1pMWGZVdmIrZ3p2a3RWbFlZTmxR
UUhSN2Jkbi8vMGFQcHpvMVZlem4wK1VjdmpuSDZMRGh5ZWl5QllnCjJPMDZkYXAvVlZpMWltaldM
UC95QzN0TzJDa01ESVJrdDZQc0E4Zlc0MG1UL0MzMjVzMmtZeDUvY3cxbmJ1ZlBFMzMzbmFoYlBC
NHQKWks3dUFSK1AvZmsrMHVEQlJCOTgwRHMyc1ZuK3d3KzRtZ3RBcHRBdnZ4RGRjWWQ5eTcvejVN
bEV1M2IxZ2dLT056ZmpjMHBjM1ZWZwpDSTgzTmdpcXJDVGFJK1ljbUd6eW1UbzZpRTZmSGhaWDN5
RVZGY0d5QWkzbCsrL3pXOUQzNjBmQUlxNk9YSVlNQ1JZUTVJNFdpdTZyCnBvWlVCUSsrUlA2WFFK
enF4TldyemkycWNmbGZnRVE1UWlYKzdiZjhHOUZEYkp3OFdSaFhGMGRsWllsWUU5eHZHRHh1M1Vw
MDhDRFIKaWhYNUlmUWhRODZlTFlpcnY2a1M4NHV6amFBSjI5ZkdqVVIvL1VVeU5XQzFtbHdWL3Bj
dUViRG9vODYvNEU4cXpBU3p6cng1MW9GeQovdkVIcWFwKzdCaEpsNnNWb2JWcncxd0Q3N0toeXhK
SGJIMjhud3poRTFBQTNHcjZtalhYRnhTNmZWMGRpU1dicUxhV0NKVU9PY1VKCmJ2SFFmK1Vpb1h1
RHVSL2RIYm85ZEgvb0JzTkk2QVVFaTdqNktHeHJDMk1SelpZSjA4ZFFFS0FvUUdHQTRoQW02aU9k
bGF6d2pLdkQKU016dDVoT2gxVUMxaG9vZEZvSWNMeXZyakt2M1RnakdmQ04wRVJpRVlqRHFsa2RC
OEFMbHVmbm1qcmk2VW0xcENhSUk0Y2dUOHpJdwoyOEI4RXpTSlc5dTQrcldGK3BqUEJPRVBBMmRs
WlhCY3VIaVJnRVZjblF5anVVQzN6MmVDMEVmM0ZWUkxnUXk1NmFiZjQ0SkJQWTBlClRkVFVsTTl3
V0hVSEtKZzBDMEttV0JhSXZRQmtKMkcyRUo2amU4bWFsOEgwc3Q5a3RjeFA0K29MZmVMRVR2cnhS
NytMRU43OElPajkKVkluUk11KzVweE5Zb0lYSXhLSDRRdCs3Tjd3TUNxSmtXS3JrMStBUis2dUFn
WkFGeUtoUmpXcm4rZlhYSUtvZXpqeWg2THp3Z2o5bAo2OXVYYU9SSUJBZTRBZ2pSditpKys0aSsv
TktmQWtRbEY0em8vYkI5Z2ZjU3FRRWYya0kwWk1QTW1SMzB4UmY0clplY0hNajJBbkZNCkRqN3lT
SWNkTmlObTU0M3RDR0pMR1VkL1NsZVd6Ulh3ZG9aUk9XTVJHL2lSTGRNOXVzYno1dy9FaW90RjFl
M3FzbUJwM0VRUFAwejAKMFVkUllaVS81WVFHaE0xRzJhS3FLcUtpb2sxMjhwWlFsMi9TWkRiVC9Q
a2RPakN5Ny9hZUxRNWthenRlZVRuUmtpWG9yaElQZkdSdAphZlkyZlY2L01TRTZ2eHc5ZXUzR2Y2
L3RCYW5lOTl6MFNiU1NubmlDWmQ5Yk5OckcrKzhUVFo5T2hFVm1PSENOMzB4VE5oWldGQlVKCnQx
ZktBRVI0M2gxbHhYRkFOdHJDczg4bWYydHh6elNsK3Rhbjg1eVg0d0FBSmZVdzcxckROSFBlZXk4
NUdEWkQ4SXhKc3RNMWNVN0gKdFlhQ2d0QkVNdUZ1elBtTVNjWWdMZmd3OUdLTTVlZlFYTTVlK2FW
elB4M25NMWRheVd3TlVZU29PR0VrZUNyeVlnQ2VNVWxlK2FWNgpIK1Zhdmh3bFN5K3VsVG93Z3dl
MGJMalp5SlJSVVFha0p3N00wRXBrSnJHS3hMRzhid1kyelRURkQwVHM5S0pVbnZGS3cvUjltRWxl
CmUrMnl6QXpLYUxBSEpDK3lHU2VZbWJZSTkvK2pLdFF6Y1lKcDQyZkVUYXlib1NhK1IwM3ROZUVt
RnFBSTcyYW9FMkFUM2tsTkFPRk0KQXkwRjJoUmtDZzVjbTFaMzdmeFNGZHFKbmpQcFNQa0tLSm01
R3JjckZkVnpwcVlUU3dVM0c5Rk5vNUVoaW5OUG5mRkhGUXlVZSt0VwpielU3VWN2QWI3Qlh0YmFh
ZGNaL3BaVlk0U293WUt5dmp6SjcweTg3d253blkzaDN2Mk1BV0ZlSENHNGw0S0Z4a29TdGdDNjMz
c3FNClpwd1BkTzVjejZMS1pUdWdpNDJ1WUZDbDRYelNEWGtVVmZBMmJreS9kVUNJK3hIeXlBSEtR
dlZlT21sU2VPMWRwbDZBTVdQU0F3UmcKV0pIYUZ0cjg4dVVzOVYydEdhT2w1R3IzbGE0dzd3Smp0
UzhndURNUlVCWnEwNFJNeVRWQmo2aHlDSDdXbmRCMjNnczZzS1FOam9CUwpwZEhJb0gxOStLR3Bq
aUw0ZEZhdFNoME1hRk5XUkxhZTJhaHNacG82Qy9lczRNUVZGY3hyMWdUUHpFeExzR3RYNm1CZ25H
R3B0aE5NCjhkTklPc0tERW8za2hyRGNNTE5FVmE2ZzNJTUhld01DZVlFUitQSGpUYWk3RVNabUl4
RXAzQWExZlpXVU1HY2FLaW5UTnozZC8yUE0KZ1hDeVR0bVE2RG9LQWU2ZDRBb2ZaaUFBbHI1QmFD
Mk5qZW15eHYvbkFVWmxaZmRnb0ZYQWhJNjZTUjJkZFk3RXRSUjZpOFpjUWtXZQpmanE4WXhaMFU5
MjFERmlTTWRQMzFsdWRxRk1rbUorc2tGS0JvWWk1cEhQMDBNU2VleTVjd0VDQUo1TVowSjV3WUE0
Y2RlaEpNSzlrCmpBbjZkNm5NYkEybEJQL3ZzUmp6c21YQmRtVVlaeVJUYlJIYkE3SURVWEN3QWlm
ZEJRbEJNenVkL0tWeWM4UWMzYXpCVEtBbVQ1L08KL1BiYmVBUGxsaytFRVhpaVFWOTV1V1V1UjZB
VmxER1ZrRVRwVkQ3TXowcGx4VWdrYTRscmE5djVzY2VZb2JsQUFZQXg3OUFoODhoQQphQ050dDIw
SzhnM2RFdkpHV1ZDbTdxTGVoSm1wcHNvbURGaUtrQTBTYzcyZEVZa0hMUWZtbUFVTG1OOThFeUd3
bWMrY2tjZlNKQWhyCnRBYk1aNERwNklaS1M1bGg1c0NBN3RGSEVlZTlYZk5PRk1QRFZBWFRTT2Zx
aHAwMC9wUFZSNFhsMVpMQk12V0ZEdmZiKy9ZVjBJRUQKMWo1NmVGMkRCMVZzTXhzN2xtam9VR3ky
dHhaYTE5VVIvZjAzWEsyU09QWWtPbktFZFBNUlBDUmdVejRXVEdQcnNleDIxUTJXSTBjMgpTajcv
a2EwQW9kbzJGanBBM0dnTFFOaFpORmVPS2ZCcnEyNXR4WHNuSEViQ1I2RzZLQlJQYlBvLzBlTFUz
WlI0MVlFakYvWGpJdTRxCjRDRkI3dGZMc1ZNQUNQV0cvUDhEUm5xL2FNNk44cTBBQUFBQVNVVk9S
SzVDWUlJPQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262169</attachid>
            <date>2015-09-30 09:46:08 -0700</date>
            <delta_ts>2015-09-30 18:18:35 -0700</delta_ts>
            <desc>[shared]</desc>
            <filename>shared.patch</filename>
            <type>text/plain</type>
            <size>28669</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAzMzEpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5NCBAQAorMjAxNS0wOS0yOSAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IEluc3RlYWQgb2YgbWVhc3VyaW5nIHRoZSBGUFMgb2YgdGhlIGFuaW1hdGlvbiwgdGhpcyBiZW5j
aG1hcmsgbWVhc3VyZXMgdGhlCisgICAgICAgIHRlc3QgY29tcGxleGl0eSB3aGVuIHJlbmRlcmlu
ZyBhdCBhIHNldC1wb2ludCBGUFMgd2hpY2ggc2hvdWxkIGJlIGxvd2VyCisgICAgICAgIHRoYW4g
NjAgRlBTLiBUaGlzIGJlbmNobWFyayB0cmllcyB0byBzdGF5IGF0IHRoZSBzZXQtcG9pbnQgRlBT
IGJ5IHVzaW5nCisgICAgICAgIGEgY2xvc2VkIGxvb3AgY29udHJvbCBzeXN0ZW0gUElEIGZ1bmN0
aW9uLiBUaGUgZ2FpbiBvZiB0aGUgc3lzdGVtIGlzIHBhc3NlZAorICAgICAgICBhcyBhIHBhcmFt
ZXRlciB3aGVuIHJ1bm5pbmcgdGhlIHRlc3QuIE1lYXN1cmluZyB0aGUgRlBTIGZhaXRoZnVsbHkg
cmVzdWx0cworICAgICAgICB2ZXJ5IGZsdWN0dWF0aW5nIHZhbHVlcy4gQSBLYWxtYW4gZmlsdGVy
IGlzIHVzZWQgdG8gZ2l2ZSBhIGJldHRlciBlc3RpbWF0ZQorICAgICAgICBmb3IgdGhlIGN1cnJl
bnQgRlBTLgorCisgICAgICAgIFRoZSBhbmltYXRpb24gb2YgdGhlIHRlc3RzIGlzIGRvbmUgbWFu
dWFsbHkuIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGlzCisgICAgICAgIGNhbGxlZCB3aXRoIGEg
Y2FsbGJhY2suIEluc2lkZSB0aGlzIGNhbGxiYWNrLCB0aGUgdGVzdCBpcyBhbmltYXRpbmcgYnkK
KyAgICAgICAgY2hhbmdpbmcgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZWxlbWVudHMgaW5zaWRlIHRo
ZSBwYWdlLiBUaGUgdGVzdCBjb21wbGV4aXR5CisgICAgICAgIG1heSBjaGFuZ2UgYWxzbyBpZiB0
aGUgY3VycmVudCBGUFMgaXMgbm90IGVxdWFsIHRvIHRoZSBkZXNpcmVkIEZQUy4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgc3BsaXQgdG8gdGhlc2Ugc21hbGxlciBwYXRjaGVzOgor
ICAgICAgICBbc2hhcmVkXTogU2hhcmVkIG9iamVjdHMgdXNlZCBieSB0aGUgdGVzdHMgYW5kIHRo
ZSBydW5uZXIuCisgICAgICAgIFtiZW5jaG1hcmtdOiBNYW5hZ2luZyBhbmltYXRpbmcgYW5kIHR1
bmluZyB0aGUgdGVzdHMuCisgICAgICAgIFtzdGFnZV06IEJhc2Ugb2JqZWN0cyBmb3Igc3RhZ2Ut
YmFzZWQgdGVzdHMuCisgICAgICAgIFtib3VuY2luZy1jc3MtcGFydGljbGVzXTogRXhhbXBsZXMg
Zm9yIGFuaW1hdGluZyBIVE1MRWxlbWVudHMuCisgICAgICAgIFtib3VuY2luZy1jYW52YXMtcGFy
dGljbGVzXTogRXhhbXBsZXMgZm9yIGFuaW1hdGlvbnMgb24gYSBjYW52YXMuCisgICAgICAgIFti
b3VuY2luZy1zdmctcGFydGljbGVzXTogRXhhbXBsZXMgZm9yIGFuaW1hdGluZyBTVkdFbGVtZW50
cy4KKyAgICAgICAgW3RleHRdOiBBbiBleGFtcGxlIGZvciBhbmltYXRpbmcgdGV4dCBvbiBhIENT
UyBzdGFnZS4KKyAgICAgICAgW3RlbXBsYXRlXTogRW1wdHkgdGVtcGxhdGVzIGZvciBuZXcgdGVz
dHMuCisgICAgICAgIFtydW5uZXJdOiBUaGUgYmVuY2htYXJrIHRlc3QgaGFybmVzcy4KKworICAg
ICAgICBbc2hhcmVkXQorICAgICAgICBUaGlzIHBhdGNoIHJlcHJlc2VudHMgdGhlIHNoYXJlZCBv
YmplY3RzIHdoaWNoIGFyZSB1c2VkIGJ5IHRoZSB0ZXN0cyBhbmQKKyAgICAgICAgdGhlIGJlbmNo
bWFyay1ydW5uZXIuCisKKyAgICAgICAgKiBBbmltb21ldGVyOiBBZGRlZC4KKyAgICAgICAgKiBB
bmltb21ldGVyL3Jlc291cmNlczogQWRkZWQuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0
ZXIvcmVzb3VyY2VzL2FsZ29yaXRobS5qczogQWRkZWQuCisgICAgICAgIChBcnJheS5wcm90b3R5
cGUuc3dhcCk6CisgICAgICAgIChIZWFwKTogTWluL01heCBIZWFwIG9iamVjdAorICAgICAgICAo
SGVhcC5wcm90b3R5cGUuX3BhcmVudEluZGV4KTogR2l2ZW4gdGhlIGNoaWxkIG5vZGUgaW5kZXgs
IGl0IHJldHVybnMgdGhlIHBhcmVudCBpbmRleC4KKyAgICAgICAgKEhlYXAucHJvdG90eXBlLl9s
ZWZ0SW5kZXgpOiBHaXZlbiB0aGUgcGFyZW50IG5vZGUgaW5kZXgsIGl0IHJldHVybnMgdGhlIGxl
ZnQgbm9kZSBpbmRleC4KKyAgICAgICAgKEhlYXAucHJvdG90eXBlLl9yaWdodEluZGV4KTogR2l2
ZW4gdGhlIHBhcmVudCBub2RlIGluZGV4LCBpdCByZXR1cm5zIHRoZSByaWdodCBub2RlIGluZGV4
LgorICAgICAgICAoSGVhcC5wcm90b3R5cGUuX2NoaWxkSW5kZXgpOiBHaXZlbiB0aGUgcGFyZW50
IG5vZGUgaW5kZXgsIGl0IHJldHVybnMgdGhlIGNoaWxkIGluZGV4IHRoYXQgbWF5IHZpb2xhdGUg
dGhlIGhlYXAgcHJvcGVydHkuCisgICAgICAgIChIZWFwLnByb3RvdHlwZS5pbml0KTogSW5pdGlh
bGl6ZXMgdGhlIGhlYXAgc3RhdGUuCisgICAgICAgIChIZWFwLnByb3RvdHlwZS50b3ApOiBSZXR1
cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgdGhlIHRvcCBvZiB0aGUgaGVhcC4KKyAgICAgICAgKEhl
YXAucHJvdG90eXBlLnB1c2gpOiBQdXNoZXMgYSBuZXcgbm9kZSBhdCB0aGUgdG9wIG9mIHRoZSBo
ZWFwLgorICAgICAgICAoSGVhcC5wcm90b3R5cGUucG9wKTogRXh0cmFjdHMgdGhlIHRvcCBub2Rl
IG9mIHRoZSBoZWFwLgorICAgICAgICAoSGVhcC5wcm90b3R5cGUuX2J1YmJsZSk6IEZpeGVzIHRo
ZSBoZWFwIHByb3BlcnR5IGJ5IG1vdmluZyB1cHdhcmQuCisgICAgICAgIChIZWFwLnByb3RvdHlw
ZS5fc2luayk6IEZpeGVzIHRoZSBoZWFwIHByb3BlcnR5IGJ5IG1vdmluZyBkb3dud2FyZC4KKyAg
ICAgICAgKEhlYXAucHJvdG90eXBlLnN0cik6IFByaW50cyB0aGUgbm9kZXMgb2YgdGhlIGhlYXAg
dG8gYSBzdHJpbmcuCisgICAgICAgIChIZWFwLnByb3RvdHlwZS52YWx1ZXMpOiBSZXR1cm5zIHRo
ZSBsYXN0ICJzaXplIiBoZWFwIGVsZW1lbnRzIHZhbHVlcy4KKyAgICAgICAgCisgICAgICAgIChB
bGdvcml0aG0uY3JlYXRlTWluSGVhcCk6IENyZWF0ZXMgYSBzaXplLWJvdW5kZWQgbWluLWhlYXAg
b2JqZWN0LgorICAgICAgICAoQWxnb3JpdGhtLmNyZWF0ZU1heEhlYXApOiBDcmVhdGVzIGEgc2l6
ZS1ib3VuZGVkIG1heC1oZWFwIG9iamVjdC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3Vy
Y2VzL21haW4uanM6IEFkZGVkLgorICAgICAgICAoUG9pbnQpOiBBIHBvaW50IG9iamVjdAorICAg
ICAgICAoSW5zZXRzKTogQW4gaW5zZXRzIG9iamVjdAorICAgICAgICAoU2ltcGxlUHJvbWlzZSk6
IEFuIGltcGxlbWVudGF0aW9uIGZvciBhIHByb21pc2Ugb2JqZWN0IChjb3BpZWQgZm9ybSBzcGVl
ZG9tZXRlcikuCisgICAgICAgIChNYXRyaXgpOiBBIG1hdHJpeCBvYmplY3QuCisgICAgICAgIChW
ZWN0b3IzKTogQSB2ZWN0b3Igb2Ygc2l6ZSAzIG9iamVjdC4KKyAgICAgICAgKE1hdHJpeDMpOiBB
IG1hdHJpeCBvZiBzaXplIDN4MyBvYmplY3QuCisgICAgICAgIChPcHRpb25zKTogQmVuY2htYXJr
IHJ1bm5pbmcgb3B0aW9ucyBhcyB0aGV5IGFyZSBzZXQgYnkgdGhlIHVzZXIuCisgICAgICAgIAor
ICAgICAgICAoUHJvZ3Jlc3NCYXIpOiBNYW5hZ2VzIGEgcHJvZ3Jlc3MgYmFyIGVsZW1lbnQuIFRo
ZSBwcm9ncmVzcyBiYXIgaXMgZGl2aWRlZCBpbnRvIGVxdWFsIGxlbmd0aCByYW5nZXMuCisgICAg
ICAgIChQcm9ncmVzc0Jhci5wcm90b3R5cGUuX3Byb2dyZXNzVG9QZXJjZW50KTogQ29udmVydHMg
dGhlIHByb2dyZXNzIGludG8gYSBwZXJjZW50YWdlLgorICAgICAgICAoUHJvZ3Jlc3NCYXIucHJv
dG90eXBlLmluY1JhbmdlKTogTW92ZXMgdG8gdGhlIG5leHQgcmFuZ2UgKGEgcmFuZ2UgaXMgdGhl
IHJ1bm5pbmcgdGltZSBvZiBhIHNpbmdsZSB0ZXN0KS4KKyAgICAgICAgKFByb2dyZXNzQmFyLnBy
b3RvdHlwZS5zZXRQb3MpOiBEcmF3cyB0aGUgY3VycmVudCBwcm9ncmVzcyBpbiB0aGUgY3VycmVu
dCByYW5nZS4KKyAgICAgICAgCisgICAgICAgIChSZWNvcmRUYWJsZSk6IFNob3dzIHRoZSByZXN1
bHRzIG9mIHJ1bm5pbmcgYSBiZW5jaG1hcmsgaW4gYSB0YWJ1bGFyIGZvcm0uCisgICAgICAgIChS
ZWNvcmRUYWJsZS5wcm90b3R5cGUuY2xlYXIpOiBDbGVhcnMgdGhlIHJlc3VsdHMgdGFibGUuCisg
ICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dUaXRsZXMpOiBTaG93cyB0aGUgaGVh
ZGVyIHRpdGxlcyBhbmQgYXBwZW5kcyB0aGUgc3ViLXRpdGxlcyB0byBhIHF1ZXVlLgorICAgICAg
ICAoUmVjb3JkVGFibGUucHJvdG90eXBlLl9zaG93SGVhZGVyKTogU2hvd3MgdGhlIHRhYmxlIGhl
YWRlciB0aXRsZXMuCisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dFbXB0eSk6
IFNob3dzIGFuIGVtcHR5IHRhYmxlIGNlbGwuCisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5
cGUuX3Nob3dWYWx1ZSk6IFNob3dzIGEgbnVtYmVyIHZhbHVlIGluIHRoZSByZXN1bHRzIHRhYmxl
LgorICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLl9zaG93U2FtcGxlcyk6IFNob3dzIGEg
YnV0dG9uIGZvciB0aGUgc2FtcGxlZCBkYXRhIGdyYXBoLgorICAgICAgICAoUmVjb3JkVGFibGUu
cHJvdG90eXBlLl9zaG93VGVzdCk6IFNob3dzIHRoZSByZXN1bHRzIG9mIGEgc2luZ2xlIHRlc3Qu
CisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dTdWl0ZSk6IFNob3dzIHRoZSBy
ZXN1bHRzIG9mIGEgc2luZ2xlIHN1aXRlLgorICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBl
LnNob3dSZWNvcmQpOiBTaG93cyBhIHNpbmdsZSBpdGVyYXRpb24gZm9yIGEgc2luZ2xlIHRlc3Qu
CisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuc2hvd0l0ZXJhdGlvbnMpOiBTaG93cyB0
aGUgcmVzdWx0cyBvZiBhbGwgdGhlIHN1aXRlcyBvZiB0aGUgaXRlcmF0aW9ucy4gCisgICAgICAg
IAorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL3N0YXRpc3RpY3MuanM6IEFkZGVkLiAg
ICAgICAgCisgICAgICAgIChTdGF0aXN0aWNzLnNhbXBsZU1lYW4pOiBSZXR1cm5zIHRoZSBzYW1w
bGUgbWVhbiBmb3IgYSBzZXQgb2YgZGF0YSBwb2ludHMuCisgICAgICAgIChTdGF0aXN0aWNzLnNh
bXBsZVN0YW5kYXJkRGV2aWF0aW9uKTogUmV0dXJucyB0aGUgc2FtcGxlIHN0YW5kYXJkIGRldmlh
dGlvbiBmb3IgYSBzZXQgb2YgZGF0YSBwb2ludHMuCisgICAgICAgIChTdGF0aXN0aWNzLmdlb21l
dHJpY01lYW4pOiBSZXR1cm5zIHRoZSBnZW9tZXRyaWMgbWVhbiBvZiBhIHNldCBvZiBkYXRhLgor
ICAgICAgICAoU3RhdGlzdGljcy5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSk6IENhbGN1bGF0ZXMg
dGhlIGNvbmZpZGVuY2UgZGVsdGEgZm9yIHNhbXBsZWQgZGF0YSBnaXZlbiBhIGNvbmZpZGVuY2Ug
bGV2ZWwuCisgICAgICAgIAorICAgICAgICAoRXhwZXJpbWVudCk6IFJlcHJlc2VudHMgYSBzYW1w
bGluZyBleHBlcmltZW50LiAKKyAgICAgICAgKEV4cGVyaW1lbnQucHJvdG90eXBlLl9pbml0KTog
Q2FsbGVkIHdoZW4gdGhlIG9iamVjdCBpcyBjcmVhdGVkIGFuZCB3aGVuIHN0YXJ0U2FtcGxpbmco
KSBpcyBjYWxsZWQuCisgICAgICAgIChFeHBlcmltZW50LnByb3RvdHlwZS5zdGFydFNhbXBsaW5n
KTogQ2FsbGVkIGFmdGVyIHdhcm11cCBwZXJpb2QuIFJlc3RhcnRzIGNvbGxlY3Rpbmcgc2FtcGxl
ZCBkYXRhIHBvaW50cy4KKyAgICAgICAgKEV4cGVyaW1lbnQucHJvdG90eXBlLnNhbXBsZSk6IEFk
ZCBhIG5ldyBkYXRhIHBvaW50LgorICAgICAgICAoRXhwZXJpbWVudC5wcm90b3R5cGUubWVhbik6
IFJldHVybnMgdGhlIHNhbXBsZSBtZWFuIGZvciB0aGUgY3VycmVudCBzYW1wbGVkIGRhdGEgcG9p
bnRzLgorICAgICAgICAoRXhwZXJpbWVudC5wcm90b3R5cGUuc3RhbmRhcmREZXZpYXRpb24pOiBS
ZXR1cm5zIHRoZSBzYW1wbGUgc3RhbmRhcmQgZGV2aWF0aW9uIGZvciB0aGUgY3VycmVudCBzYW1w
bGVkIGRhdGEgcG9pbnRzLgorICAgICAgICAoRXhwZXJpbWVudC5wcm90b3R5cGUucGVyY2VudGFn
ZSk6IFJldHVybnMgdGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIHN0YW5kYXJkIGRldmlhdGlvbiBkaXZp
ZGVkIHRvIHRoZSBtZWFuLgorICAgICAgICAoRXhwZXJpbWVudC5wcm90b3R5cGUuY29uZmlkZW5j
ZUludGVydmFsRGVsdGEpOiBDYWxjdWxhdGVzIHRoZSBjb25maWRlbmNlIGRlbHRhIGZvciB0aGUg
Y3VycmVudCBzYW1wbGVkIGRhdGEgZ2l2ZW4gYSBjb25maWRlbmNlIGxldmVsLgorICAgICAgICAo
RXhwZXJpbWVudC5wcm90b3R5cGUuY29uY2Vybik6IFJldHVybnMgdGhlIGF2ZXJhZ2Ugb2YgdGhl
IHdvcnN0IGdpdmVuIHBlcmNlbnRhZ2UgZnJvbSB0aGUgc2FtcGxlZCBkYXRhLgorICAgICAgICAo
RXhwZXJpbWVudC5wcm90b3R5cGUuc2NvcmUpOiBSZXR1cm5zIGEgc2NvcmUgZm9yIHRoZSBzYW1w
bGVkIGRhdGEuIEl0IGlzIHRoZSBnZW9tZXRyaWMgbWVhbiBvZiBzYW1wbGVNZWFuIGFuZCBjb25j
ZXJuLgorICAgICAgICAKKyAgICAgICAgKFNhbXBsZXIpOiBSZXByZXNlbnRzIGEgY29tcG91bmQg
ZXhwZXJpbWVudC4gSXQgbWFuYWdlcyBzYW1wbGluZyBtdWx0aXBsZSBkYXRhIHBvaW50cyBhdCB0
aGUgc2FtZSB0aW1lIG9mZnNldC4KKyAgICAgICAgKFNhbXBsZXIucHJvdG90eXBlLnN0YXJ0U2Ft
cGxpbmcpOiBDYWxsZWQgYWZ0ZXIgd2FybWluZyB1cCBwZXJpb2QuIFJlc3RhcnRzIGNvbGxlY3Rp
bmcgc2FtcGxlZCBkYXRhIHBvaW50cy4KKyAgICAgICAgKFNhbXBsZXIucHJvdG90eXBlLnNhbXBs
ZSk6IEFkZCBhIG5ldyBkYXRhIHZlY3RvciBhdCBhIGdpdmVuIHRpbWUgb2Zmc2V0LgorICAgICAg
ICAKIDIwMTUtMDgtMjcgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBbRUZMXSBSRUdSRVNTSU9OKHIxODg3OTMpOiBJdCBtYWRlIDIwMCBsYXlvdXQgdGVz
dHMgYW5kIEJpbmRpbmdzL2V2ZW50LXRhcmdldC13cmFwcGVyLmh0bWwgcGVyZm9ybWFuY2UgdGVz
dCBmYWlsCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2FsZ29y
aXRobS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3Vy
Y2VzL2FsZ29yaXRobS5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMw
IEBACitBcnJheS5wcm90b3R5cGUuc3dhcCA9IGZ1bmN0aW9uKGksIGopCit7CisgICAgdmFyIHQg
PSB0aGlzW2ldOworICAgIHRoaXNbaV0gPSB0aGlzW2pdOworICAgIHRoaXNbal0gPSB0OworICAg
IHJldHVybiB0aGlzOworfQorCitmdW5jdGlvbiBIZWFwKG1heFNpemUsIGNvbXBhcmUpCit7Cisg
ICAgdGhpcy5fbWF4U2l6ZSA9IG1heFNpemU7CisgICAgdGhpcy5fY29tcGFyZSA9IGNvbXBhcmU7
CisgICAgdGhpcy5fc2l6ZSA9IDA7CisgICAgdGhpcy5fdmFsdWVzID0gbmV3IEFycmF5KHRoaXMu
X21heFNpemUpOworfQorCitIZWFwLnByb3RvdHlwZSA9Cit7CisgICAgX3BhcmVudEluZGV4OiBm
dW5jdGlvbihpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGkgPiAwID8gTWF0aC5mbG9vcigoaSAt
IDEpIC8gMikgOiAtMTsKKyAgICB9LAorICAgIAorICAgIF9sZWZ0SW5kZXg6IGZ1bmN0aW9uKGkp
CisgICAgeworICAgICAgICByZXR1cm4gaSAqIDIgKyAxIDwgdGhpcy5fc2l6ZSA/IGkgKiAyICsg
MSA6IC0xOworICAgIH0sCisgICAgCisgICAgX3JpZ2h0SW5kZXg6IGZ1bmN0aW9uKGkpCisgICAg
eworICAgICAgICByZXR1cm4gaSAqIDIgKyAyIDwgdGhpcy5fc2l6ZSA/IGkgKiAyICsgMiA6IC0x
OworICAgIH0sCisgICAgCisgICAgLy8gUmV0dXJucyB0aGUgY2hpbGQgaW5kZXggdGhhdCBtYXkg
dmlvbGF0ZSB0aGUgaGVhcCBwcm9wZXJ0eSBhdCBpbmRleCBpLgorICAgIF9jaGlsZEluZGV4OiBm
dW5jdGlvbihpKQorICAgIHsKKyAgICAgICAgdmFyIGwgPSB0aGlzLl9sZWZ0SW5kZXgoaSk7Cisg
ICAgICAgIHZhciByID0gdGhpcy5fcmlnaHRJbmRleChpKTsKKworICAgICAgICBpZiAobCAhPSAt
MSAmJiByICE9IC0xKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBhcmUodGhpcy5fdmFs
dWVzW2xdLCB0aGlzLl92YWx1ZXNbcl0pID4gMCA/IGwgOiByOworICAgICAgICAKKyAgICAgICAg
cmV0dXJuIGwgIT0gLTEgPyBsIDogcjsKKyAgICB9LAorICAgIAorICAgIGluaXQ6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHRoaXMuX3NpemUgPSAwOworICAgIH0sCisgICAgCisgICAgdG9w
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc2l6ZSA/IHRoaXMuX3Zh
bHVlc1swXSA6IE5hTjsKKyAgICB9LAorICAgIAorICAgIHB1c2g6IGZ1bmN0aW9uKHZhbHVlKQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3NpemUgPT0gdGhpcy5fbWF4U2l6ZSkgeworICAgICAg
ICAgICAgLy8gSWYgc2l6ZSBpcyBib3VuZGVkIGFuZCB0aGUgbmV3IHZhbHVlIGNhbiBiZSBhIHBh
cmVudCBvZiB0aGUgdG9wKCkKKyAgICAgICAgICAgIC8vIGlmIHRoZSBzaXplIHdlcmUgdW5ib3Vu
ZGVkLCBqdXN0IGlnbm9yZSB0aGUgbmV3IHZhbHVlLgorICAgICAgICAgICAgaWYgKHRoaXMuX2Nv
bXBhcmUodmFsdWUsIHRoaXMudG9wKCkpID4gMCkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB0aGlzLnBvcCgpOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3ZhbHVlc1t0
aGlzLl9zaXplKytdID0gdmFsdWU7CisgICAgICAgIHRoaXMuX2J1YmJsZSh0aGlzLl9zaXplIC0g
MSk7CisgICAgfSwKKworICAgIHBvcDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0
aGlzLl9zaXplKQorICAgICAgICAgICAgcmV0dXJuIE5hTjsKKyAgICAgICAgCisgICAgICAgIHRo
aXMuX3ZhbHVlc1swXSA9IHRoaXMuX3ZhbHVlc1stLXRoaXMuX3NpemVdOworICAgICAgICB0aGlz
Ll9zaW5rKDApOworICAgIH0sCisgICAgCisgICAgX2J1YmJsZTogZnVuY3Rpb24oaSkKKyAgICB7
CisgICAgICAgIC8vIEZpeGVzIHRoZSBoZWFwIHBvcGVydHkgYXQgaW5kZXggaSBnaXZlbiB0aGF0
IHBhcmVudCBpcyB0aGUgb25seSBub2RlIHRoYXQKKyAgICAgICAgLy8gbWF5IHZpYWxvdGUgdGhl
IGhlYXAgcHJvcGVydHkuCisgICAgICAgIGZvciAodmFyIHBpID0gdGhpcy5fcGFyZW50SW5kZXgo
aSk7IHBpICE9IC0xOyBpID0gcGksIHBpID0gdGhpcy5fcGFyZW50SW5kZXgocGkpKSB7CisgICAg
ICAgICAgICBpZiAodGhpcy5fY29tcGFyZSh0aGlzLl92YWx1ZXNbcGldLCB0aGlzLl92YWx1ZXNb
aV0pID4gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIHRoaXMuX3ZhbHVlcy5zd2FwKHBpLCBpKTsKKyAgICAgICAgfQorICAgIH0sCisgICAg
CisgICAgX3Npbms6IGZ1bmN0aW9uKGkpCisgICAgeworICAgICAgICAvLyBGaXhlcyB0aGUgaGVh
cCBwb3BlcnR5IGF0IGluZGV4IGkgZ2l2ZW4gdGhhdCBlYWNoIG9mIHRoZSBsZWZ0IGFuZCB0aGUg
cmlnaHQKKyAgICAgICAgLy8gc3ViLXRyZWVzIHNhdGlzZmllcyB0aGUgaGVhcCBwcm9wZXJ0eS4K
KyAgICAgICAgZm9yICh2YXIgY2kgPSB0aGlzLl9jaGlsZEluZGV4KGkpOyBjaSAhPSAtMTsgaSA9
IGNpLCBjaSA9IHRoaXMuX2NoaWxkSW5kZXgoY2kpKSB7CisgICAgICAgICAgICBpZiAodGhpcy5f
Y29tcGFyZSh0aGlzLl92YWx1ZXNbaV0sIHRoaXMuX3ZhbHVlc1tjaV0pID4gMCkKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5fdmFsdWVzLnN3
YXAoY2ksIGkpOworICAgICAgICB9CisgICAgfSwKKyAgICAKKyAgICBzdHI6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHZhciBvdXQgPSAiSGVhcFsiICsgdGhpcy5fc2l6ZSArICJdID0gWyI7
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2l6ZTsgKytpKSB7CisgICAgICAg
ICAgICBvdXQgKz0gdGhpcy5fdmFsdWVzW2ldOworICAgICAgICAgICAgaWYgKGkgPCB0aGlzLl9z
aXplIC0gMSkKKyAgICAgICAgICAgICAgICBvdXQgKz0gIiwgIjsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gb3V0ICsgIl0iOworICAgIH0sCisgICAgCisgICAgdmFsdWVzOiBmdW5jdGlvbihz
aXplKSB7CisgICAgICAgIC8vIFJldHVybnMgdGhlIGxhc3QgInNpemUiIGhlYXAgZWxlbWVudHMg
dmFsdWVzLgorICAgICAgICB2YXIgdmFsdWVzID0gdGhpcy5fdmFsdWVzLnNsaWNlKDAsIHRoaXMu
X3NpemUpOworICAgICAgICByZXR1cm4gdmFsdWVzLnNvcnQodGhpcy5fY29tcGFyZSkuc2xpY2Uo
MCwgTWF0aC5taW4oc2l6ZSwgdGhpcy5fc2l6ZSkpOworICAgIH0KK30KKwordmFyIEFsZ29yaXRo
bSA9Cit7CisgICAgY3JlYXRlTWluSGVhcDogZnVuY3Rpb24obWF4U2l6ZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBuZXcgSGVhcChtYXhTaXplLCBmdW5jdGlvbihhLCBiKSB7IHJldHVybiBiIC0g
YTsgfSk7CisgICAgfSwKKyAgICAKKyAgICBjcmVhdGVNYXhIZWFwOiBmdW5jdGlvbihtYXhTaXpl
KSB7CisgICAgICAgIHJldHVybiBuZXcgSGVhcChtYXhTaXplLCBmdW5jdGlvbihhLCBiKSB7IHJl
dHVybiBhIC0gYjsgfSk7CisgICAgfQorfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Jlc291cmNlcy9tYWluLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci9yZXNvdXJjZXMvbWFpbi5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvbWFpbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDI5NiBAQAorZnVuY3Rpb24gUG9pbnQoeCwgeSkKK3sKKyAgICB0aGlzLnggPSB4OworICAgIHRo
aXMueSA9IHk7Cit9CisKK1BvaW50LnByb3RvdHlwZSA9Cit7CisgICAgLy8gVXNlZCB3aGVuIHRo
ZSBwb2ludCBvYmplY3QgaXMgdXNlZCBhcyBhIHNpemUgb2JqZWN0CisgICAgZ2V0IHdpZHRoKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLng7CisgICAgfSwKKyAgICAKKyAgICAvLyBVc2Vk
IHdoZW4gdGhlIHBvaW50IG9iamVjdCBpcyB1c2VkIGFzIGEgc2l6ZSBvYmplY3QgICAgCisgICAg
Z2V0IGhlaWdodCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy55OworICAgIH0sCisgICAg
CisgICAgZ2V0IGNlbnRlcigpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMu
eCAvIDIsIHRoaXMueSAvIDIpOworICAgIH0sCisgICAgCisgICAgYWRkOiBmdW5jdGlvbihvdGhl
cikKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy54ICsgb3RoZXIueCwgdGhp
cy55ICsgb3RoZXIueSk7CisgICAgfSwKKyAgICAKKyAgICBzdWJ0cmFjdDogZnVuY3Rpb24ob3Ro
ZXIpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMueCAtIG90aGVyLngsIHRo
aXMueSAtIG90aGVyLnkpOworICAgIH0sCisgICAgCisgICAgbXVsdGlwbHk6IGZ1bmN0aW9uKG90
aGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLnggKiBvdGhlci54LCB0
aGlzLnkgKiBvdGhlci55KTsKKyAgICB9LAorICAgIAorICAgIG1vdmU6IGZ1bmN0aW9uKGFuZ2xl
LCB2ZWxvY2l0eSwgdGltZURlbHRhKQorICAgIHsKKyAgICAgICAgdmFyIHggPSB0aGlzLnggKyBN
YXRoLmNvcyhhbmdsZSkgKiB2ZWxvY2l0eSAqICh0aW1lRGVsdGEgLyAxMDAwKTsKKyAgICAgICAg
dmFyIHkgPSB0aGlzLnkgKyBNYXRoLnNpbihhbmdsZSkgKiB2ZWxvY2l0eSAqICh0aW1lRGVsdGEg
LyAxMDAwKTsKKyAgICAgICAgcmV0dXJuIG5ldyBQb2ludCh4LCB5KTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIEluc2V0cyh0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQpCit7CisgICAgdGhpcy50b3Ag
PSB0b3A7CisgICAgdGhpcy5yaWdodCA9IHJpZ2h0OworICAgIHRoaXMuYm90dG9tID0gYm90dG9t
OworICAgIHRoaXMubGVmdCA9IGxlZnQ7Cit9CisKK0luc2V0cy5wcm90b3R5cGUgPQoreworICAg
IGdldCB3aWR0aCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubGVmdCArIHRoaXMucmlnaHQ7Cisg
ICAgfSwKKyAgICBnZXQgaGVpZ2h0KCkgeworICAgICAgICByZXR1cm4gdGhpcy50b3AgKyB0aGlz
LmJvdHRvbTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIFNpbXBsZVByb21pc2UoKQoreworICAgIHRo
aXMuX2NoYWluZWRQcm9taXNlID0gbnVsbDsKKyAgICB0aGlzLl9jYWxsYmFjayA9IG51bGw7Cit9
CisKK1NpbXBsZVByb21pc2UucHJvdG90eXBlLnRoZW4gPSBmdW5jdGlvbiAoY2FsbGJhY2spCit7
CisgICAgaWYgKHRoaXMuX2NhbGxiYWNrKQorICAgICAgICB0aHJvdyAiU2ltcGxlUHJvbWlzZSBk
b2Vzbid0IHN1cHBvcnQgbXVsdGlwbGUgY2FsbHMgdG8gdGhlbiI7CisgICAgICAgIAorICAgIHRo
aXMuX2NhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgdGhpcy5fY2hhaW5lZFByb21pc2UgPSBuZXcg
U2ltcGxlUHJvbWlzZTsKKyAgICAKKyAgICBpZiAodGhpcy5fcmVzb2x2ZWQpCisgICAgICAgIHRo
aXMucmVzb2x2ZSh0aGlzLl9yZXNvbHZlZFZhbHVlKTsKKworICAgIHJldHVybiB0aGlzLl9jaGFp
bmVkUHJvbWlzZTsKK30KKworU2ltcGxlUHJvbWlzZS5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0
aW9uICh2YWx1ZSkKK3sKKyAgICBpZiAoIXRoaXMuX2NhbGxiYWNrKSB7CisgICAgICAgIHRoaXMu
X3Jlc29sdmVkID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fcmVzb2x2ZWRWYWx1ZSA9IHZhbHVlOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2NhbGxiYWNr
KHZhbHVlKTsKKyAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgU2ltcGxlUHJvbWlzZSkgeworICAg
ICAgICB2YXIgY2hhaW5lZFByb21pc2UgPSB0aGlzLl9jaGFpbmVkUHJvbWlzZTsKKyAgICAgICAg
cmVzdWx0LnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeyBjaGFpbmVkUHJvbWlzZS5yZXNvbHZlKHJl
c3VsdCk7IH0pOworICAgIH0gZWxzZQorICAgICAgICB0aGlzLl9jaGFpbmVkUHJvbWlzZS5yZXNv
bHZlKHJlc3VsdCk7Cit9CisKK2Z1bmN0aW9uIE9wdGlvbnModGVzdEludGVydmFsLCBmcmFtZVJh
dGUpCit7CisgICAgdGhpcy50ZXN0SW50ZXJ2YWwgPSB0ZXN0SW50ZXJ2YWw7CisgICAgdGhpcy5m
cmFtZVJhdGUgPSBmcmFtZVJhdGU7Cit9CisKK2Z1bmN0aW9uIFByb2dyZXNzQmFyKGVsZW1lbnQs
IHJhbmdlcykKK3sKKyAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50OworICAgIHRoaXMucmFuZ2Vz
ID0gcmFuZ2VzOworICAgIHRoaXMuY3VycmVudFJhbmdlID0gMDsKK30KKworUHJvZ3Jlc3NCYXIu
cHJvdG90eXBlID0KK3sKKyAgICBfcHJvZ3Jlc3NUb1BlcmNlbnQ6IGZ1bmN0aW9uKHByb2dyZXNz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHByb2dyZXNzICogKDEwMCAvIHRoaXMucmFuZ2VzKTsK
KyAgICB9LAorICAgIAorICAgIGluY1JhbmdlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICAr
K3RoaXMuY3VycmVudFJhbmdlOworICAgIH0sCisgICAgCisgICAgc2V0UG9zOiBmdW5jdGlvbihw
cm9ncmVzcykKKyAgICB7CisgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMu
X3Byb2dyZXNzVG9QZXJjZW50KHRoaXMuY3VycmVudFJhbmdlICsgcHJvZ3Jlc3MpICsgIiUiOwor
ICAgIH0KK30KKworZnVuY3Rpb24gUmVjb3JkVGFibGUoZWxlbWVudCkKK3sKKyAgICB0aGlzLmVs
ZW1lbnQgPSBlbGVtZW50OworICAgIHRoaXMuY2xlYXIoKTsKK30KKworUmVjb3JkVGFibGUucHJv
dG90eXBlID0KK3sKKyAgICBjbGVhcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5l
bGVtZW50LmlubmVySFRNTCA9ICIiOworICAgIH0sCisgICAgCisgICAgX3Nob3dUaXRsZXM6IGZ1
bmN0aW9uKHJvdywgcXVldWUsIHRpdGxlcywgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHRpdGxl
cy5mb3JFYWNoKGZ1bmN0aW9uICh0aXRsZSkgeworICAgICAgICAgICAgdmFyIHRoID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgidGgiKTsKKyAgICAgICAgICAgIHRoLnRleHRDb250ZW50ID0gdGl0
bGUudGV4dDsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSAhPSAidW5kZWZpbmVkIiAm
JiBtZXNzYWdlLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIHRoLmlubmVySFRNTCArPSAiPGJy
PlsiICsgbWVzc2FnZSArICJdIjsKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gIiI7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoIndpZHRoIiBpbiB0aXRsZSkKKyAgICAgICAgICAg
ICAgICB0aC53aWR0aCA9IHRpdGxlLndpZHRoICsgIiUiOworICAgICAgICAgICAgcm93LmFwcGVu
ZENoaWxkKHRoKTsKKyAgICAgICAgICAgIHF1ZXVlLnB1c2goe2VsZW1lbnQ6IHRoLCB0aXRsZXM6
IHRpdGxlLmNoaWxkcmVuIH0pOworICAgICAgICB9KTsKKyAgICB9LAorICAgIAorICAgIF9zaG93
SGVhZGVyOiBmdW5jdGlvbihzdWl0ZU5hbWUsIHRpdGxlcywgbWVzc2FnZSkKKyAgICB7CisgICAg
ICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworCisgICAgICAgIHZh
ciBxdWV1ZSA9IFtdOworICAgICAgICB0aGlzLl9zaG93VGl0bGVzKHJvdywgcXVldWUsIHRpdGxl
cywgbWVzc2FnZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChyb3cpOworCisg
ICAgICAgIHdoaWxlIChxdWV1ZS5sZW5ndGgpIHsKKyAgICAgICAgICAgIHZhciByb3cgPSBudWxs
OworICAgICAgICAgICAgdmFyIGVudHJpZXMgPSBbXTsKKworICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDAsIGxlbiA9IHF1ZXVlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7CisgICAgICAgICAgICAg
ICAgdmFyIGVudHJ5ID0gcXVldWUuc2hpZnQoKTsKKworICAgICAgICAgICAgICAgIGlmICghZW50
cnkudGl0bGVzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICBlbnRyaWVzLnB1c2goZW50
cnkuZWxlbWVudCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIGlmICghcm93KQorICAgICAgICAgICAgICAgICAgICB2
YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKworICAgICAgICAgICAgICAg
IHRoaXMuX3Nob3dUaXRsZXMocm93LCBxdWV1ZSwgZW50cnkudGl0bGVzLCAiIik7CisgICAgICAg
ICAgICAgICAgZW50cnkuZWxlbWVudC5jb2xTcGFuID0gZW50cnkudGl0bGVzLmxlbmd0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHJvdykgeworICAgICAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5hcHBlbmRDaGlsZChyb3cpOworICAgICAgICAgICAgICAgIGVudHJpZXMuZm9y
RWFjaChmdW5jdGlvbihlbnRyeSkgeworICAgICAgICAgICAgICAgICAgICArK2VudHJ5LnJvd1Nw
YW47CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
LAorICAgIAorICAgIF9zaG93RW1wdHk6IGZ1bmN0aW9uKHJvdywgdGVzdE5hbWUpCisgICAgewor
ICAgICAgICB2YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICBy
b3cuYXBwZW5kQ2hpbGQodGQpOworICAgIH0sCisgICAgCisgICAgX3Nob3dWYWx1ZTogZnVuY3Rp
b24ocm93LCB0ZXN0TmFtZSwgdmFsdWUpCisgICAgeworICAgICAgICB2YXIgdGQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICB0ZC50ZXh0Q29udGVudCA9IHZhbHVlLnRv
Rml4ZWQoMik7CisgICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0ZCk7CisgICAgfSwKKyAgICAKKyAg
ICBfc2hvd1NhbXBsZXM6IGZ1bmN0aW9uKHJvdywgdGVzdE5hbWUsIGF4ZXMsIHNhbXBsZXMsIHNh
bXBsaW5nVGltZU9mZnNldCkKKyAgICB7CisgICAgICAgIHZhciB0ZCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInRkIik7CisgICAgICAgIHZhciBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgICAgICAgYnV0dG9uLmNsYXNzTmFtZSA9ICJzbWFsbC1idXR0b24iOwor
ICAgICAgICAgICAgCisgICAgICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgd2luZG93LnNob3dHcmFwaCh0ZXN0TmFtZSwgYXhlcywg
c2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KTsKKyAgICAgICAgfSk7CisgICAgICAgICAgICAK
KyAgICAgICAgYnV0dG9uLnRleHRDb250ZW50ID0gIkdyYXBoLi4uIjsKKyAgICAgICAgdGQuYXBw
ZW5kQ2hpbGQoYnV0dG9uKTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxkKHRkKTsKKyAgICB9LAor
ICAgIAorICAgIF9zaG93VGVzdDogZnVuY3Rpb24odGVzdE5hbWUsIHRpdGxlcywgc2FtcGxlciwg
ZmluYWxSZXN1bHRzKQorICAgIHsKKyAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInRyIik7CisgICAgICAgIHZhciB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRk
Iik7CisgICAgICAgIAorICAgICAgICB0ZC50ZXh0Q29udGVudCA9IHRlc3ROYW1lOworICAgICAg
ICByb3cuYXBwZW5kQ2hpbGQodGQpOworICAgICAgICAKKyAgICAgICAgdmFyIGF4ZXMgPSBbXTsK
KyAgICAgICAgc2FtcGxlci5leHBlcmltZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGV4cGVyaW1lbnQs
IGluZGV4KSB7CisgICAgICAgICAgICB0aGlzLl9zaG93VmFsdWUocm93LCB0ZXN0TmFtZSwgZXhw
ZXJpbWVudC5tZWFuKCkpOworICAgICAgICAgICAgdGhpcy5fc2hvd1ZhbHVlKHJvdywgdGVzdE5h
bWUsIGV4cGVyaW1lbnQuY29uZmlkZW5jZUludGVydmFsRGVsdGEoRXhwZXJpbWVudC5kZWZhdWx0
cy5DT05GSURFTkNFKSk7CisgICAgICAgICAgICB0aGlzLl9zaG93VmFsdWUocm93LCB0ZXN0TmFt
ZSwgZXhwZXJpbWVudC5jb25jZXJuKEV4cGVyaW1lbnQuZGVmYXVsdHMuQ09OQ0VSTikpOworICAg
ICAgICAgICAgdGhpcy5fc2hvd1ZhbHVlKHJvdywgdGVzdE5hbWUsIGV4cGVyaW1lbnQuc3RhbmRh
cmREZXZpYXRpb24oKSk7CisgICAgICAgICAgICB0aGlzLl9zaG93VmFsdWUocm93LCB0ZXN0TmFt
ZSwgZXhwZXJpbWVudC5wZXJjZW50YWdlKCkpOworICAgICAgICAgICAgYXhlcy5wdXNoKHRpdGxl
c1tpbmRleCArIDFdLnRleHQpOworICAgICAgICAgICAgCisgICAgICAgIH0sIHRoaXMpOworCisg
ICAgICAgIHRoaXMuX3Nob3dWYWx1ZShyb3csIHRlc3ROYW1lLCBzYW1wbGVyLmV4cGVyaW1lbnRz
WzBdLnNjb3JlKEV4cGVyaW1lbnQuZGVmYXVsdHMuQ09OQ0VSTikpOworCisgICAgICAgIGlmIChm
aW5hbFJlc3VsdHMpCisgICAgICAgICAgICB0aGlzLl9zaG93U2FtcGxlcyhyb3csIHRlc3ROYW1l
LCBheGVzLCBzYW1wbGVyLnNhbXBsZXMsIHNhbXBsZXIuc2FtcGxpbmdUaW1lT2Zmc2V0KTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fc2hvd0VtcHR5KHJvdywgdGVzdE5hbWUpOwor
ICAgICAgICAgICAgCisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChyb3cpOworICAg
IH0sCisgICAgCisgICAgX3Nob3dTdWl0ZTogZnVuY3Rpb24oc3VpdGUsIHN1aXRlU2FtcGxlcnMp
CisgICAgeworICAgICAgICB2YXIgc2NvcmVzID0gW107ICAgICAgICAKKyAgICAgICAgZm9yICh2
YXIgdGVzdE5hbWUgaW4gc3VpdGVTYW1wbGVycykgeworICAgICAgICAgICAgdmFyIHRlc3QgPSB0
ZXN0RnJvbU5hbWUoc3VpdGUsIHRlc3ROYW1lKTsKKyAgICAgICAgICAgIHZhciBzYW1wbGVyID0g
c3VpdGVTYW1wbGVyc1t0ZXN0TmFtZV07IAorICAgICAgICAgICAgdGhpcy5fc2hvd1Rlc3QodGVz
dE5hbWUsIHN1aXRlLnRpdGxlcywgc2FtcGxlciwgdHJ1ZSk7CisgICAgICAgICAgICBzY29yZXMu
cHVzaChzYW1wbGVyLmV4cGVyaW1lbnRzWzBdLnNjb3JlKEV4cGVyaW1lbnQuZGVmYXVsdHMuQ09O
Q0VSTikpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzY29yZXM7CisgICAgfSwKKyAgICAK
KyAgICBzaG93UmVjb3JkOiBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgc2FtcGxlciwgbWVzc2FnZSkK
KyAgICB7CisgICAgICAgIHRoaXMuY2xlYXIoKTsgICAgICAgIAorICAgICAgICB0aGlzLl9zaG93
SGVhZGVyKCIiLCBzdWl0ZS50aXRsZXMsIG1lc3NhZ2UpOworICAgICAgICB0aGlzLl9zaG93VGVz
dCh0ZXN0Lm5hbWUsIHN1aXRlLnRpdGxlcywgc2FtcGxlciwgZmFsc2UpOyAgICAgICAgCisgICAg
fSwKKyAgICAKKyAgICBzaG93SXRlcmF0aW9uczogZnVuY3Rpb24oaXRlcmF0aW9uc1NhbXBsZXJz
KQorICAgIHsKKyAgICAgICAgdGhpcy5jbGVhcigpOworCisgICAgICAgIHZhciBzY29yZXMgPSBb
XTsKKyAgICAgICAgdmFyIHRpdGxlcyA9IG51bGw7CisgICAgICAgIGl0ZXJhdGlvbnNTYW1wbGVy
cy5mb3JFYWNoKGZ1bmN0aW9uKHN1aXRlc1NhbXBsZXJzKSB7CisgICAgICAgICAgICBmb3IgKHZh
ciBzdWl0ZU5hbWUgaW4gc3VpdGVzU2FtcGxlcnMpIHsKKyAgICAgICAgICAgICAgICB2YXIgc3Vp
dGUgPSBzdWl0ZUZyb21OYW1lKHN1aXRlTmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKHRpdGxl
cyAhPSBzdWl0ZS50aXRsZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgdGl0bGVzID0gc3VpdGUu
dGl0bGVzOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9zaG93SGVhZGVyKHN1aXRlTmFtZSwg
dGl0bGVzLCAiIik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdmFyIHN1
aXRlU2NvcmVzID0gdGhpcy5fc2hvd1N1aXRlKHN1aXRlLCBzdWl0ZXNTYW1wbGVyc1tzdWl0ZU5h
bWVdKTsKKyAgICAgICAgICAgICAgICBzY29yZXMucHVzaC5hcHBseShzY29yZXMsIHN1aXRlU2Nv
cmVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwgdGhpcyk7CisgICAgICAgIAorICAgICAg
ICByZXR1cm4gU3RhdGlzdGljcy5nZW9tZXRyaWNNZWFuKHNjb3Jlcyk7CisgICAgfQorfQpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvc3RhdGlz
dGljcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNv
dXJjZXMvc3RhdGlzdGljcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5NyBAQAordmFy
IFN0YXRpc3RpY3MgPQoreworICAgIHNhbXBsZU1lYW46IGZ1bmN0aW9uKG51bWJlck9mU2FtcGxl
cywgc3VtKQorICAgIHsKKyAgICAgICAgaWYgKG51bWJlck9mU2FtcGxlcyA8IDEpCisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHN1bSAvIG51bWJlck9mU2FtcGxlczsKKyAg
ICB9LAorICAgIAorICAgIHNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uOiBmdW5jdGlvbihudW1iZXJP
ZlNhbXBsZXMsIHN1bSwgc3F1YXJlU3VtKQorICAgIHsKKyAgICAgICAgaWYgKG51bWJlck9mU2Ft
cGxlcyA8IDIpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIE1hdGguc3Fy
dCgoc3F1YXJlU3VtIC0gc3VtICogc3VtIC8gbnVtYmVyT2ZTYW1wbGVzKSAvIChudW1iZXJPZlNh
bXBsZXMgLSAxKSkgOworICAgIH0sCisgICAgCisgICAgZ2VvbWV0cmljTWVhbjogZnVuY3Rpb24o
dmFsdWVzKQorICAgIHsKKyAgICAgICAgaWYgKCF2YWx1ZXMubGVuZ3RoKQorICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHZhciBwcm9kdWN0ID0gdmFsdWVzLnJlZHVjZShmdW5jdGlvbihh
LCBiKSB7IHJldHVybiBhICogYjsgfSk7CisgICAgICAgIHJldHVybiBNYXRoLnBvdyhwcm9kdWN0
LCAxIC8gdmFsdWVzLmxlbmd0aCk7CisgICAgfSwKKyAgICAKKyAgICAvLyBTZWUgaHR0cDovL2Vu
Lndpa2lwZWRpYS5vcmcvd2lraS9TdHVkZW50J3NfdC1kaXN0cmlidXRpb24jVGFibGVfb2Zfc2Vs
ZWN0ZWRfdmFsdWVzCisgICAgLy8gVGhpcyB0YWJsZSBjb250YWlucyBvbmUgc2lkZWQgKGEuay5h
LiB0YWlsKSB2YWx1ZXMuCisgICAgdERpc3RyaWJ1dGlvbkludmVyc2VDREY6IHsKKyAgICAgICAg
MC45OiBbCisgICAgICAgICAgICAzLjA3NzY4NCwgMS44ODU2MTgsIDEuNjM3NzQ0LCAxLjUzMzIw
NiwgMS40NzU4ODQsIDEuNDM5NzU2LCAxLjQxNDkyNCwgMS4zOTY4MTUsIDEuMzgzMDI5LCAxLjM3
MjE4NCwKKyAgICAgICAgICAgIDEuMzYzNDMwLCAxLjM1NjIxNywgMS4zNTAxNzEsIDEuMzQ1MDMw
LCAxLjM0MDYwNiwgMS4zMzY3NTcsIDEuMzMzMzc5LCAxLjMzMDM5MSwgMS4zMjc3MjgsIDEuMzI1
MzQxLAorICAgICAgICAgICAgMS4zMjMxODgsIDEuMzIxMjM3LCAxLjMxOTQ2MCwgMS4zMTc4MzYs
IDEuMzE2MzQ1LCAxLjMxNDk3MiwgMS4zMTM3MDMsIDEuMzEyNTI3LCAxLjMxMTQzNCwgMS4zMTA0
MTUsCisgICAgICAgICAgICAxLjMwOTQ2NCwgMS4zMDg1NzMsIDEuMzA3NzM3LCAxLjMwNjk1Miwg
MS4zMDYyMTIsIDEuMzA1NTE0LCAxLjMwNDg1NCwgMS4zMDQyMzAsIDEuMzAzNjM5LCAxLjMwMzA3
NywKKyAgICAgICAgICAgIDEuMzAyNTQzLCAxLjMwMjAzNSwgMS4zMDE1NTIsIDEuMzAxMDkwLCAx
LjMwMDY0OSwgMS4zMDAyMjgsIDEuMjk5ODI1LCAxLjI5OTQzOSwgMS4yOTkwNjksIDEuMjk4NzE0
LAorCisgICAgICAgICAgICAxLjI5ODM3MywgMS4yOTgwNDUsIDEuMjk3NzMwLCAxLjI5NzQyNiwg
MS4yOTcxMzQsIDEuMjk2ODUzLCAxLjI5NjU4MSwgMS4yOTYzMTksIDEuMjk2MDY2LCAxLjI5NTgy
MSwKKyAgICAgICAgICAgIDEuMjk1NTg1LCAxLjI5NTM1NiwgMS4yOTUxMzQsIDEuMjk0OTIwLCAx
LjI5NDcxMiwgMS4yOTQ1MTEsIDEuMjk0MzE1LCAxLjI5NDEyNiwgMS4yOTM5NDIsIDEuMjkzNzYz
LAorICAgICAgICAgICAgMS4yOTM1ODksIDEuMjkzNDIxLCAxLjI5MzI1NiwgMS4yOTMwOTcsIDEu
MjkyOTQxLCAxLjI5Mjc5MCwgMS4yOTI2NDMsIDEuMjkyNTAwLCAxLjI5MjM2MCwgMS4yOTIyMjQs
CisgICAgICAgICAgICAxLjI5MjA5MSwgMS4yOTE5NjEsIDEuMjkxODM1LCAxLjI5MTcxMSwgMS4y
OTE1OTEsIDEuMjkxNDczLCAxLjI5MTM1OCwgMS4yOTEyNDYsIDEuMjkxMTM2LCAxLjI5MTAyOSwK
KyAgICAgICAgICAgIDEuMjkwOTI0LCAxLjI5MDgyMSwgMS4yOTA3MjEsIDEuMjkwNjIzLCAxLjI5
MDUyNywgMS4yOTA0MzIsIDEuMjkwMzQwLCAxLjI5MDI1MCwgMS4yOTAxNjEsIDEuMjkwMDc1XSwK
KyAgICAgICAgMC45NTogWworICAgICAgICAgICAgNi4zMTM3NTIsIDIuOTE5OTg2LCAyLjM1MzM2
MywgMi4xMzE4NDcsIDIuMDE1MDQ4LCAxLjk0MzE4MCwgMS44OTQ1NzksIDEuODU5NTQ4LCAxLjgz
MzExMywgMS44MTI0NjEsCisgICAgICAgICAgICAxLjc5NTg4NSwgMS43ODIyODgsIDEuNzcwOTMz
LCAxLjc2MTMxMCwgMS43NTMwNTAsIDEuNzQ1ODg0LCAxLjczOTYwNywgMS43MzQwNjQsIDEuNzI5
MTMzLCAxLjcyNDcxOCwKKyAgICAgICAgICAgIDEuNzIwNzQzLCAxLjcxNzE0NCwgMS43MTM4NzIs
IDEuNzEwODgyLCAxLjcwODE0MSwgMS43MDU2MTgsIDEuNzAzMjg4LCAxLjcwMTEzMSwgMS42OTkx
MjcsIDEuNjk3MjYxLAorICAgICAgICAgICAgMS42OTU1MTksIDEuNjkzODg5LCAxLjY5MjM2MCwg
MS42OTA5MjQsIDEuNjg5NTcyLCAxLjY4ODI5OCwgMS42ODcwOTQsIDEuNjg1OTU0LCAxLjY4NDg3
NSwgMS42ODM4NTEsCisgICAgICAgICAgICAxLjY4Mjg3OCwgMS42ODE5NTIsIDEuNjgxMDcxLCAx
LjY4MDIzMCwgMS42Nzk0MjcsIDEuNjc4NjYwLCAxLjY3NzkyNywgMS42NzcyMjQsIDEuNjc2NTUx
LCAxLjY3NTkwNSwKKworICAgICAgICAgICAgMS42NzUyODUsIDEuNjc0Njg5LCAxLjY3NDExNiwg
MS42NzM1NjUsIDEuNjczMDM0LCAxLjY3MjUyMiwgMS42NzIwMjksIDEuNjcxNTUzLCAxLjY3MTA5
MywgMS42NzA2NDksCisgICAgICAgICAgICAxLjY3MDIxOSwgMS42Njk4MDQsIDEuNjY5NDAyLCAx
LjY2OTAxMywgMS42Njg2MzYsIDEuNjY4MjcxLCAxLjY2NzkxNiwgMS42Njc1NzIsIDEuNjY3MjM5
LCAxLjY2NjkxNCwKKyAgICAgICAgICAgIDEuNjY2NjAwLCAxLjY2NjI5NCwgMS42NjU5OTYsIDEu
NjY1NzA3LCAxLjY2NTQyNSwgMS42NjUxNTEsIDEuNjY0ODg1LCAxLjY2NDYyNSwgMS42NjQzNzEs
IDEuNjY0MTI1LAorICAgICAgICAgICAgMS42NjM4ODQsIDEuNjYzNjQ5LCAxLjY2MzQyMCwgMS42
NjMxOTcsIDEuNjYyOTc4LCAxLjY2Mjc2NSwgMS42NjI1NTcsIDEuNjYyMzU0LCAxLjY2MjE1NSwg
MS42NjE5NjEsCisgICAgICAgICAgICAxLjY2MTc3MSwgMS42NjE1ODUsIDEuNjYxNDA0LCAxLjY2
MTIyNiwgMS42NjEwNTIsIDEuNjYwODgxLCAxLjY2MDcxNSwgMS42NjA1NTEsIDEuNjYwMzkxLCAx
LjY2MDIzNF0sCisgICAgICAgIDAuOTc1OiBbCisgICAgICAgICAgICAxMi43MDYyMDUsIDQuMzAy
NjUzLCAzLjE4MjQ0NiwgMi43NzY0NDUsIDIuNTcwNTgyLCAyLjQ0NjkxMiwgMi4zNjQ2MjQsIDIu
MzA2MDA0LCAyLjI2MjE1NywgMi4yMjgxMzksCisgICAgICAgICAgICAyLjIwMDk4NSwgMi4xNzg4
MTMsIDIuMTYwMzY5LCAyLjE0NDc4NywgMi4xMzE0NTAsIDIuMTE5OTA1LCAyLjEwOTgxNiwgMi4x
MDA5MjIsIDIuMDkzMDI0LCAyLjA4NTk2MywKKyAgICAgICAgICAgIDIuMDc5NjE0LCAyLjA3Mzg3
MywgMi4wNjg2NTgsIDIuMDYzODk5LCAyLjA1OTUzOSwgMi4wNTU1MjksIDIuMDUxODMxLCAyLjA0
ODQwNywgMi4wNDUyMzAsIDIuMDQyMjcyLAorICAgICAgICAgICAgMi4wMzk1MTMsIDIuMDM2OTMz
LCAyLjAzNDUxNSwgMi4wMzIyNDUsIDIuMDMwMTA4LCAyLjAyODA5NCwgMi4wMjYxOTIsIDIuMDI0
Mzk0LCAyLjAyMjY5MSwgMi4wMjEwNzUsCisgICAgICAgICAgICAyLjAxOTU0MSwgMi4wMTgwODIs
IDIuMDE2NjkyLCAyLjAxNTM2OCwgMi4wMTQxMDMsIDIuMDEyODk2LCAyLjAxMTc0MSwgMi4wMTA2
MzUsIDIuMDA5NTc1LCAyLjAwODU1OSwKKworICAgICAgICAgICAgMi4wMDc1ODQsIDIuMDA2NjQ3
LCAyLjAwNTc0NiwgMi4wMDQ4NzksIDIuMDA0MDQ1LCAyLjAwMzI0MSwgMi4wMDI0NjUsIDIuMDAx
NzE3LCAyLjAwMDk5NSwgMi4wMDAyOTgsCisgICAgICAgICAgICAxLjk5OTYyNCwgMS45OTg5NzIs
IDEuOTk4MzQxLCAxLjk5NzczMCwgMS45OTcxMzgsIDEuOTk2NTY0LCAxLjk5NjAwOCwgMS45OTU0
NjksIDEuOTk0OTQ1LCAxLjk5NDQzNywKKyAgICAgICAgICAgIDEuOTkzOTQzLCAxLjk5MzQ2NCwg
MS45OTI5OTcsIDEuOTkyNTQzLCAxLjk5MjEwMiwgMS45OTE2NzMsIDEuOTkxMjU0LCAxLjk5MDg0
NywgMS45OTA0NTAsIDEuOTkwMDYzLAorICAgICAgICAgICAgMS45ODk2ODYsIDEuOTg5MzE5LCAx
Ljk4ODk2MCwgMS45ODg2MTAsIDEuOTg4MjY4LCAxLjk4NzkzNCwgMS45ODc2MDgsIDEuOTg3Mjkw
LCAxLjk4Njk3OSwgMS45ODY2NzUsCisgICAgICAgICAgICAxLjk4NjM3NywgMS45ODYwODYsIDEu
OTg1ODAyLCAxLjk4NTUyMywgMS45ODUyNTEsIDEuOTg0OTg0LCAxLjk4NDcyMywgMS45ODQ0Njcs
IDEuOTg0MjE3LCAxLjk4Mzk3Ml0sCisgICAgICAgIDAuOTk6IFsKKyAgICAgICAgICAgIDMxLjgy
MDUxNiwgNi45NjQ1NTcsIDQuNTQwNzAzLCAzLjc0Njk0NywgMy4zNjQ5MzAsIDMuMTQyNjY4LCAy
Ljk5Nzk1MiwgMi44OTY0NTksIDIuODIxNDM4LCAyLjc2Mzc2OSwKKyAgICAgICAgICAgIDIuNzE4
MDc5LCAyLjY4MDk5OCwgMi42NTAzMDksIDIuNjI0NDk0LCAyLjYwMjQ4MCwgMi41ODM0ODcsIDIu
NTY2OTM0LCAyLjU1MjM4MCwgMi41Mzk0ODMsIDIuNTI3OTc3LAorICAgICAgICAgICAgMi41MTc2
NDgsIDIuNTA4MzI1LCAyLjQ5OTg2NywgMi40OTIxNTksIDIuNDg1MTA3LCAyLjQ3ODYzMCwgMi40
NzI2NjAsIDIuNDY3MTQwLCAyLjQ2MjAyMSwgMi40NTcyNjIsCisgICAgICAgICAgICAyLjQ1Mjgy
NCwgMi40NDg2NzgsIDIuNDQ0Nzk0LCAyLjQ0MTE1MCwgMi40Mzc3MjMsIDIuNDM0NDk0LCAyLjQz
MTQ0NywgMi40Mjg1NjgsIDIuNDI1ODQxLCAyLjQyMzI1NywKKyAgICAgICAgICAgIDIuNDIwODAz
LCAyLjQxODQ3MCwgMi40MTYyNTAsIDIuNDE0MTM0LCAyLjQxMjExNiwgMi40MTAxODgsIDIuNDA4
MzQ1LCAyLjQwNjU4MSwgMi40MDQ4OTIsIDIuNDAzMjcyLAorCisgICAgICAgICAgICAyLjQwMTcx
OCwgMi40MDAyMjUsIDIuMzk4NzkwLCAyLjM5NzQxMCwgMi4zOTYwODEsIDIuMzk0ODAxLCAyLjM5
MzU2OCwgMi4zOTIzNzcsIDIuMzkxMjI5LCAyLjM5MDExOSwKKyAgICAgICAgICAgIDIuMzg5MDQ3
LCAyLjM4ODAxMSwgMi4zODcwMDgsIDIuMzg2MDM3LCAyLjM4NTA5NywgMi4zODQxODYsIDIuMzgz
MzAyLCAyLjM4MjQ0NiwgMi4zODE2MTUsIDIuMzgwODA3LAorICAgICAgICAgICAgMi4zODAwMjQs
IDIuMzc5MjYyLCAyLjM3ODUyMiwgMi4zNzc4MDIsIDIuMzc3MTAyLCAyLjM3NjQyMCwgMi4zNzU3
NTcsIDIuMzc1MTExLCAyLjM3NDQ4MiwgMi4zNzM4NjgsCisgICAgICAgICAgICAyLjM3MzI3MCwg
Mi4zNzI2ODcsIDIuMzcyMTE5LCAyLjM3MTU2NCwgMi4zNzEwMjIsIDIuMzcwNDkzLCAyLjM2OTk3
NywgMi4zNjk0NzIsIDIuMzY4OTc5LCAyLjM2ODQ5NywKKyAgICAgICAgICAgIDIuMzY4MDI2LCAy
LjM2NzU2NiwgMi4zNjcxMTUsIDIuMzY2Njc0LCAyLjM2NjI0MywgMi4zNjU4MjEsIDIuMzY1NDA3
LCAyLjM2NTAwMiwgMi4zNjQ2MDYsIDIuMzY0MjE3XQorICAgIH0sCisgICAgCisgICAgY29uZmlk
ZW5jZUludGVydmFsRGVsdGE6IGZ1bmN0aW9uKG51bWJlck9mU2FtcGxlcywgc3VtLCBzcXVhcmVT
dW0sIGNvbmZpZGVuY2VMZXZlbCkKKyAgICB7CisgICAgICAgIGlmIChudW1iZXJPZlNhbXBsZXMg
PCAyKQorICAgICAgICAgICAgcmV0dXJuIE5hTjsKKyAgICAKKyAgICAgICAgdmFyIHByb2JhYmls
aXR5ID0gKDEwMCAtIDIgKiAoMTAwIC0gY29uZmlkZW5jZUxldmVsKSkgLyAxMDA7CisgICAgICAg
IGlmICghKHByb2JhYmlsaXR5IGluIFN0YXRpc3RpY3MudERpc3RyaWJ1dGlvbkludmVyc2VDREYp
KQorICAgICAgICAgICAgdGhyb3cgJ1Vuc3VwcG9ydGVkIGNvbmZpZGVuY2UgbGV2ZWwnOworCisg
ICAgICAgIHZhciBjZGZGb3JQcm9iYWJpbGl0eSA9IFN0YXRpc3RpY3MudERpc3RyaWJ1dGlvbklu
dmVyc2VDREZbcHJvYmFiaWxpdHldOworICAgICAgICB2YXIgZGVncmVlc09mRnJlZWRvbSA9IE1h
dGgubWluKG51bWJlck9mU2FtcGxlcyAtIDEsIGNkZkZvclByb2JhYmlsaXR5Lmxlbmd0aCk7Cisg
ICAgCisgICAgICAgIHZhciBxdWFudGlsZSA9IGNkZkZvclByb2JhYmlsaXR5W2RlZ3JlZXNPZkZy
ZWVkb20gLSAxXTsgLy8gVGhlIGZpcnN0IGVudHJ5IGlzIGZvciB0aGUgb25lIGRlZ3JlZSBvZiBm
cmVlZG9tLgorICAgICAgICByZXR1cm4gcXVhbnRpbGUgKiBTdGF0aXN0aWNzLnNhbXBsZVN0YW5k
YXJkRGV2aWF0aW9uKG51bWJlck9mU2FtcGxlcywgc3VtLCBzcXVhcmVTdW0pIC8gTWF0aC5zcXJ0
KG51bWJlck9mU2FtcGxlcyk7CisgICAgfQorfQorCitmdW5jdGlvbiBFeHBlcmltZW50KCkKK3sK
KyAgICB0aGlzLl9pbml0KCk7CisgICAgdGhpcy5fbWF4SGVhcCA9IEFsZ29yaXRobS5jcmVhdGVN
YXhIZWFwKEV4cGVyaW1lbnQuZGVmYXVsdHMuQ09OQ0VSTl9TSVpFKTsKK30KKworRXhwZXJpbWVu
dC5kZWZhdWx0cyA9Cit7CisgICAgQ09OQ0VSTjogNSwKKyAgICBDT05GSURFTkNFOiA5NSwKKyAg
ICBDT05DRVJOX1NJWkU6IDEwMCwKK30KKworRXhwZXJpbWVudC5wcm90b3R5cGUgPQoreworICAg
IF9pbml0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9zdW0gPSAwOworICAgICAg
ICB0aGlzLl9zcXVhcmVTdW0gPSAwOworICAgICAgICB0aGlzLl9udW1iZXJPZlNhbXBsZXMgPSAw
OworICAgIH0sCisgICAgCisgICAgLy8gQ2FsbGVkIGFmdGVyIGEgd2FybS11cCBwZXJpb2QKKyAg
ICBzdGFydFNhbXBsaW5nOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgbWVhbiA9IHRo
aXMubWVhbigpOworICAgICAgICB0aGlzLl9pbml0KCk7CisgICAgICAgIHRoaXMuX21heEhlYXAu
aW5pdCgpOworICAgICAgICB0aGlzLnNhbXBsZShtZWFuKTsKKyAgICB9LAorICAgIAorICAgIHNh
bXBsZTogZnVuY3Rpb24odmFsdWUpCisgICAgeworICAgICAgICB0aGlzLl9zdW0gKz0gdmFsdWU7
CisgICAgICAgIHRoaXMuX3NxdWFyZVN1bSArPSB2YWx1ZSAqIHZhbHVlOworICAgICAgICB0aGlz
Ll9tYXhIZWFwLnB1c2godmFsdWUpOworICAgICAgICArK3RoaXMuX251bWJlck9mU2FtcGxlczsK
KyAgICB9LAorICAgIAorICAgIG1lYW46IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBTdGF0aXN0aWNzLnNhbXBsZU1lYW4odGhpcy5fbnVtYmVyT2ZTYW1wbGVzLCB0aGlzLl9zdW0p
OworICAgIH0sCisgICAgCisgICAgc3RhbmRhcmREZXZpYXRpb246IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBTdGF0aXN0aWNzLnNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uKHRoaXMu
X251bWJlck9mU2FtcGxlcywgdGhpcy5fc3VtLCB0aGlzLl9zcXVhcmVTdW0pOworICAgIH0sCisg
ICAgCisgICAgcGVyY2VudGFnZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIG1lYW4g
PSB0aGlzLm1lYW4oKTsKKyAgICAgICAgcmV0dXJuIG1lYW4gPyB0aGlzLnN0YW5kYXJkRGV2aWF0
aW9uKCkgKiAxMDAgLyBtZWFuIDogMDsKKyAgICB9LAorICAgIAorICAgIGNvbmZpZGVuY2VJbnRl
cnZhbERlbHRhOiBmdW5jdGlvbihjb25maWRlbmNlTGV2ZWwpCisgICAgeworICAgICAgICByZXR1
cm4gU3RhdGlzdGljcy5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSh0aGlzLl9udW1iZXJPZlNhbXBs
ZXMsIHRoaXMuX3N1bSwgdGhpcy5fc3F1YXJlU3VtLCBjb25maWRlbmNlTGV2ZWwpCisgICAgfSwK
KyAgICAKKyAgICBjb25jZXJuOiBmdW5jdGlvbihwZXJjZW50YWdlKQorICAgIHsKKyAgICAgICAg
dmFyIHNpemUgPSBNYXRoLmNlaWwodGhpcy5fbnVtYmVyT2ZTYW1wbGVzICogcGVyY2VudGFnZSAv
IDEwMCk7CisgICAgICAgIHZhciB2YWx1ZXMgPSB0aGlzLl9tYXhIZWFwLnZhbHVlcyhzaXplKTsK
KyAgICAgICAgcmV0dXJuIHZhbHVlcy5sZW5ndGggPyB2YWx1ZXMucmVkdWNlKGZ1bmN0aW9uKGEs
IGIpIHsgcmV0dXJuIGEgKyBiOyB9KSAvIHZhbHVlcy5sZW5ndGggOiAwOworICAgIH0sCisgICAg
CisgICAgc2NvcmU6IGZ1bmN0aW9uKHBlcmNlbnRhZ2UpCisgICAgeworICAgICAgICByZXR1cm4g
U3RhdGlzdGljcy5nZW9tZXRyaWNNZWFuKFt0aGlzLm1lYW4oKSwgTWF0aC5tYXgodGhpcy5jb25j
ZXJuKHBlcmNlbnRhZ2UpLCAxKV0pOworICAgIH0KK30KKworZnVuY3Rpb24gU2FtcGxlcihjb3Vu
dCkKK3sKKyAgICB0aGlzLmV4cGVyaW1lbnRzID0gW107CisgICAgd2hpbGUgKGNvdW50LS0pCisg
ICAgICAgIHRoaXMuZXhwZXJpbWVudHMucHVzaChuZXcgRXhwZXJpbWVudCgpKTsKKyAgICB0aGlz
LnNhbXBsZXMgPSBbXTsKKyAgICB0aGlzLnNhbXBsaW5nVGltZU9mZnNldCA9IDA7Cit9CisKK1Nh
bXBsZXIucHJvdG90eXBlID0KK3sKKyAgICBzdGFydFNhbXBsaW5nOiBmdW5jdGlvbih0aW1lT2Zm
c2V0KQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuZXhw
ZXJpbWVudHMubGVuZ3RoOyArK2luZGV4KQorICAgICAgICAgICAgdGhpcy5leHBlcmltZW50c1tp
bmRleF0uc3RhcnRTYW1wbGluZygpOworICAgICAgICAgICAgCisgICAgICAgIHRoaXMuc2FtcGxp
bmdUaW1lT2Zmc2V0ID0gdGltZU9mZnNldCAvIDEwMDA7CisgICAgfSwKKyAgICAKKyAgICBzYW1w
bGU6IGZ1bmN0aW9uKHRpbWVPZmZzZXQsIHZhbHVlcykKKyAgICB7CisgICAgICAgIGlmICh2YWx1
ZXMubGVuZ3RoIDwgdGhpcy5leHBlcmltZW50cy5sZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAi
Tm90IGVub3VnaCBzYW1wbGUgcG9pbnRzIjsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
IGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmV4cGVyaW1lbnRzLmxlbmd0aDsgKytp
bmRleCkKKyAgICAgICAgICAgIHRoaXMuZXhwZXJpbWVudHNbaW5kZXhdLnNhbXBsZSh2YWx1ZXNb
aW5kZXhdKTsKKyAgICAgICAgICAgIAorICAgICAgICB0aGlzLnNhbXBsZXMucHVzaCh7IHRpbWVP
ZmZzZXQ6IHRpbWVPZmZzZXQgLyAxMDAwLCB2YWx1ZXM6IHZhbHVlcyB9KTsKKyAgICB9Cit9Cg==
</data>
<flag name="review"
          id="287346"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262170</attachid>
            <date>2015-09-30 09:47:34 -0700</date>
            <delta_ts>2015-10-01 14:19:48 -0700</delta_ts>
            <desc>[benchmark]</desc>
            <filename>benchmark.patch</filename>
            <type>text/plain</type>
            <size>19436</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAzMzEpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5NCBAQAorMjAxNS0wOS0yOSAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IEluc3RlYWQgb2YgbWVhc3VyaW5nIHRoZSBGUFMgb2YgdGhlIGFuaW1hdGlvbiwgdGhpcyBiZW5j
aG1hcmsgbWVhc3VyZXMgdGhlCisgICAgICAgIHRlc3QgY29tcGxleGl0eSB3aGVuIHJlbmRlcmlu
ZyBhdCBhIHNldC1wb2ludCBGUFMgd2hpY2ggc2hvdWxkIGJlIGxvd2VyCisgICAgICAgIHRoYW4g
NjAgRlBTLiBUaGlzIGJlbmNobWFyayB0cmllcyB0byBzdGF5IGF0IHRoZSBzZXQtcG9pbnQgRlBT
IGJ5IHVzaW5nCisgICAgICAgIGEgY2xvc2VkIGxvb3AgY29udHJvbCBzeXN0ZW0gUElEIGZ1bmN0
aW9uLiBUaGUgZ2FpbiBvZiB0aGUgc3lzdGVtIGlzIHBhc3NlZAorICAgICAgICBhcyBhIHBhcmFt
ZXRlciB3aGVuIHJ1bm5pbmcgdGhlIHRlc3QuIE1lYXN1cmluZyB0aGUgRlBTIGZhaXRoZnVsbHkg
cmVzdWx0cworICAgICAgICB2ZXJ5IGZsdWN0dWF0aW5nIHZhbHVlcy4gQSBLYWxtYW4gZmlsdGVy
IGlzIHVzZWQgdG8gZ2l2ZSBhIGJldHRlciBlc3RpbWF0ZQorICAgICAgICBmb3IgdGhlIGN1cnJl
bnQgRlBTLgorCisgICAgICAgIFRoZSBhbmltYXRpb24gb2YgdGhlIHRlc3RzIGlzIGRvbmUgbWFu
dWFsbHkuIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGlzCisgICAgICAgIGNhbGxlZCB3aXRoIGEg
Y2FsbGJhY2suIEluc2lkZSB0aGlzIGNhbGxiYWNrLCB0aGUgdGVzdCBpcyBhbmltYXRpbmcgYnkK
KyAgICAgICAgY2hhbmdpbmcgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZWxlbWVudHMgaW5zaWRlIHRo
ZSBwYWdlLiBUaGUgdGVzdCBjb21wbGV4aXR5CisgICAgICAgIG1heSBjaGFuZ2UgYWxzbyBpZiB0
aGUgY3VycmVudCBGUFMgaXMgbm90IGVxdWFsIHRvIHRoZSBkZXNpcmVkIEZQUy4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgc3BsaXQgdG8gdGhlc2Ugc21hbGxlciBwYXRjaGVzOgor
ICAgICAgICBbc2hhcmVkXTogU2hhcmVkIG9iamVjdHMgdXNlZCBieSB0aGUgdGVzdHMgYW5kIHRo
ZSBydW5uZXIuCisgICAgICAgIFtiZW5jaG1hcmtdOiBNYW5hZ2luZyBhbmltYXRpbmcgYW5kIHR1
bmluZyB0aGUgdGVzdHMuCisgICAgICAgIFtzdGFnZV06IEJhc2Ugb2JqZWN0cyBmb3Igc3RhZ2Ut
YmFzZWQgdGVzdHMuCisgICAgICAgIFtib3VuY2luZy1jc3MtcGFydGljbGVzXTogRXhhbXBsZXMg
Zm9yIGFuaW1hdGluZyBIVE1MRWxlbWVudHMuCisgICAgICAgIFtib3VuY2luZy1jYW52YXMtcGFy
dGljbGVzXTogRXhhbXBsZXMgZm9yIGFuaW1hdGlvbnMgb24gYSBjYW52YXMuCisgICAgICAgIFti
b3VuY2luZy1zdmctcGFydGljbGVzXTogRXhhbXBsZXMgZm9yIGFuaW1hdGluZyBTVkdFbGVtZW50
cy4KKyAgICAgICAgW3RleHRdOiBBbiBleGFtcGxlIGZvciBhbmltYXRpbmcgdGV4dCBvbiBhIENT
UyBzdGFnZS4KKyAgICAgICAgW3RlbXBsYXRlXTogRW1wdHkgdGVtcGxhdGVzIGZvciBuZXcgdGVz
dHMuCisgICAgICAgIFtydW5uZXJdOiBUaGUgYmVuY2htYXJrIHRlc3QgaGFybmVzcy4KKworICAg
ICAgICBbYmVuY2htYXJrXQorICAgICAgICBUaGlzIHBhdGNoIHJlcHJlc2VudHMgdGhlIG1lY2hh
bmljcyBmb3IgcnVubmluZyBhIGJlbmNobWFyay4gRnJvbSBhbiBlbXB0eQorICAgICAgICB0ZXN0
IHBhZ2UsIHRoaXMgc2V0IG9mIGNsYXNzZXMgYXJlIHJlc3BvbnNpYmxlIGZvciBtZWFzdXJpbmcg
dGhlIGN1cnJlbnQKKyAgICAgICAgZnJhbWUgcmF0ZSBhbmQgY2hhbmdpbmcgdGhlIHRlc3QgdG8g
cmVhY2ggYSBkZXNpcmVkIEZQUy4gSXQga2VlcHMgYXNraW5nCisgICAgICAgIHRoZSB0ZXN0IHBh
Z2UgdG8gdHVuZSBpdHNlbGYgYnkgYSBjZXJ0YWluIHZhbHVlIHRvIGluY3JlYXNlIG9yIGRlY3Jl
YXNlCisgICAgICAgIHRoZSBmcmFtZSByYXRlLiBJdCBpcyBhbHNvIHJlc3BvbnNpYmxlIGZvciBz
YW1wbGluZyB0aGUgdGVzdCBzdGF0ZSBhbmQgdGhlCisgICAgICAgIGNvcnJlc3BvbmRpbmcgZnJh
bWUgcmF0ZS4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlcjogQWRkZWQuCisgICAgICAg
ICogQW5pbW9tZXRlci90ZXN0czogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9y
ZXNvdXJjZXM6IEFkZGVkLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jl
c291cmNlcy9iZW5jaG1hcmsuanM6IEFkZGVkLgorICAgICAgICAoQmVuY2htYXJrU3RhdGUpOiBU
cmFja3MgdGhlIHN0YXRlIG9mIHRoZSBiZW5jaG1hcmsgdGVzdC4KKyAgICAgICAgKEJlbmNobWFy
a1N0YXRlLnByb3RvdHlwZS5fdGltZU9mZnNldCk6IFJldHVybnMgdGhlIHRpbWVPZmZzZXQgb2Yg
YSBzdGFnZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5fbWVzc2FnZSk6IFJl
dHVybnMgdGhlIG1lc3NhZ2Ugb2YgYSBzdGFnZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnBy
b3RvdHlwZS51cGRhdGUpOiBTZXRzIHRoZSBjdXJyZW50VGltZU9mZnNldCB0byBhIG5ldyB2YWx1
ZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5zYW1wbGluZ1RpbWVPZmZzZXQp
OiBSZXR1cm5zIHRoZSB0aW1lT2Zmc2V0IG9mIHRoZSBzYW1wbGluZyBzdGFnZS4KKyAgICAgICAg
KEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5jdXJyZW50U3RhZ2UpOiBSZXR1cm5zIHRoZSBjdXJy
ZW50IHN0YWdlIG9mIHRoZSBiZW5jaG1hcmsuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90
b3R5cGUuY3VycmVudE1lc3NhZ2UpOiBSZXR1cm5zIHRoZSBtZXNzYWdlIG9mIHRoZSBjdXJyZW50
IHN0YWdlIGFuZCB0aW1lT2Zmc2V0LgorICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBl
LmN1cnJlbnRQcm9ncmVzcyk6IFJldHVybnMgYSBwZXJjZW50YWdlIG9mIGhvdyBtdWNoIHRoZSBi
ZW5jaG1hcmsgaXMgcnVubmluZy4KKyAgICAgICAgCisgICAgICAgIChBbmltYXRvcik6IE1hbmFn
ZXMgYW5pbWF0aW5nIHRoZSB0ZXN0LgorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0
KTogQ2FsbGVkIGlmIGFuaW1hdGluZyB1c2luZyBzZXRJbnRlcnZhbCBpcyByZXF1ZXN0ZWQuCisg
ICAgICAgIChBbmltYXRvci5wcm90b3R5cGUudGltZURlbHRhKTogUmV0dXJucyB0aGUgY3VycmVu
dCB0aW1lRGVsdGEgCisgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6IE1hbmFn
ZXMgdGhlIHRlc3QgYW5pbWF0aW9uLgorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBlLmFuaW1h
dGVMb29wKTogQ2FsbGVkIGlmIGFuaW1hdGluZyB1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUg
aXMgcmVxdWVzdGVkLiAKKworICAgICAgICAoQmVuY2htYXJrKTogTWFuYWdlcyBydW5uaW5nIHRo
ZSB0ZXN0IGJlbmNobWFyayBhbmQgcmVjb3JkaW5nIHRoZSBzYW1wbGVkIGRhdGEuCisgICAgICAg
IChCZW5jaG1hcmsucHJvdG90eXBlLnN0YXJ0KTogU3RhcnRzIHRoZSBiZW5jaG1hcmsuCisgICAg
ICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnVwZGF0ZSk6IENhbGxlZCBmcm9tIHRoZSBhbmltYXRv
ci5hbmltYXRlKCkgdG8gY2hhbmdlIHRoZSBjb21wbGV4aXR5IG9mIHRoZSB0ZXN0LgorICAgICAg
ICAoQmVuY2htYXJrLnByb3RvdHlwZS5yZWNvcmQpOiBTaG93cyB0aGUgY3VycmVudCAobm90IGZp
bmFsKSByZXN1bHRzIG9mIHRoZSBiZW5jaG1hcmsuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90
eXBlLnJlc29sdmVXaGVuRmluaXNoZWQpOiBTcGlucyB1bnRpbCB0aGUgYmVuY2htYXJrIGlzIGZp
bmlzaGVkIGFuZCByZXR1cm5zIGl0cyByZXN1bHRzLgorICAgICAgICAoQmVuY2htYXJrLnByb3Rv
dHlwZS5ydW4pOiBTdGFydHMgdGhlIHRlc3QsIHJ1bnMgaXQsIHdhaXRzIHVudGlsIGl0IGlzIGZp
bmlzaGVkIGFuZCByZXR1cm4gaXRzIHJlc3VsdHMuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Rl
c3RzL3Jlc291cmNlcy9tYXRoLmpzOiBBZGRlZC4KKyAgICAgICAgKE1hdHJpeCk6IEEgbWF0cml4
IG9iamVjdC4KKyAgICAgICAgKFZlY3RvcjMpOiBBIHZlY3RvciBvZiBzaXplIDMgb2JqZWN0Lgor
ICAgICAgICAoTWF0cml4Myk6IEEgbWF0cml4IG9mIHNpemUgM3gzIG9iamVjdC4KKyAgICAgICAg
CisgICAgICAgIChQSURDb250cm9sbGVyKTogQ2xvc2VkLWxvb3AgY29udHJvbGxlciBmb3IgYSBz
ZXQtcG9pbnQgeS4KKyAgICAgICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl9zYXQpOiBMaW1p
dHMgdGhlIG91dHB1dCB0byBhIGNlcnRhaW4gcmFuZ2UuCisgICAgICAgIChQSURDb250cm9sbGVy
LnByb3RvdHlwZS50dW5lKTogR2l2ZW4gdGhlIGN1cnJlbnQgb3V0cHV0IG9mIGEgc3lzdGVtLCBp
dCBwcm9kdWNlcyBhIG5ldyBwaWQgdmFsdWUgZm9yIHR1bmluZyBpdC4KKyAgICAgICAgCisgICAg
ICAgIChLYWxtYW5Fc3RpbWF0b3IpOiBJbXBsZW1lbnQgS2FsbWFuIGZpbHRlciB0byBnZXQgYW4g
ZXN0aW1hdGUgZm9yIGEgc2FtcGxlZCBkYXRhIHBvaW50LgorICAgICAgICAoS2FsbWFuRXN0aW1h
dG9yLnByb3RvdHlwZS5lc3RpbWF0ZSk6IFJldHVybnMgYW4gZXN0aW1hdGUgZm9yIGZvciBhIHNh
bXBsZWQgZGF0YSBwb2ludC4KKwogMjAxNS0wOC0yNyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3Nz
eUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtFRkxdIFJFR1JFU1NJT04ocjE4ODc5Myk6IEl0IG1h
ZGUgMjAwIGxheW91dCB0ZXN0cyBhbmQgQmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBwZXIuaHRt
bCBwZXJmb3JtYW5jZSB0ZXN0IGZhaWwKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9yZXNvdXJjZXMvYmVuY2htYXJrLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvYmVuY2htYXJrLmpzCShyZXZpc2lvbiAw
KQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9iZW5jaG1h
cmsuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMjMgQEAKK2Z1bmN0aW9uIEJlbmNobWFy
a1N0YXRlKHRlc3RJbnRlcnZhbCkKK3sKKyAgICB0aGlzLl9jdXJyZW50VGltZU9mZnNldCA9IDA7
CisgICAgdGhpcy5fc3RhZ2VJbnRlcnZhbCA9IHRlc3RJbnRlcnZhbCAvIEJlbmNobWFya1N0YXRl
LnN0YWdlcy5GSU5JU0hFRDsKK30KKworQmVuY2htYXJrU3RhdGUuc3RhZ2VzID0KK3sKKyAgICBX
QVJNSU5HX1VQOiAwLAorICAgIFNBTVBMSU5HOiAxLAorICAgIEZJTklTSEVEOiAyLAorICAgIG1l
c3NhZ2VzOiBbICJXYXJtaW5nIHVwIiwgIlNhbXBsaW5nIiwgIkZpbmlzaGVkIiBdCit9OworCitC
ZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUgPQoreworICAgIF90aW1lT2Zmc2V0OiBmdW5jdGlvbihz
dGFnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGFnZSAqIHRoaXMuX3N0YWdlSW50ZXJ2YWw7
CisgICAgfSwKKyAgICAKKyAgICBfbWVzc2FnZTogZnVuY3Rpb24oc3RhZ2UsIHRpbWVPZmZzZXQp
CisgICAgeworICAgICAgICBpZiAoc3RhZ2UgPT0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklT
SEVEKQorICAgICAgICAgICAgcmV0dXJuIEJlbmNobWFya1N0YXRlLnN0YWdlcy5tZXNzYWdlc1tz
dGFnZV07CisKKyAgICAgICAgcmV0dXJuIEJlbmNobWFya1N0YXRlLnN0YWdlcy5tZXNzYWdlc1tz
dGFnZV0gKyAiLi4uICgiCisgICAgICAgICAgICArIE1hdGguZmxvb3IoKHRpbWVPZmZzZXQgLSB0
aGlzLl90aW1lT2Zmc2V0KHN0YWdlKSkgLyAxMDAwKSArICIvIgorICAgICAgICAgICAgKyBNYXRo
LmZsb29yKCh0aGlzLl90aW1lT2Zmc2V0KHN0YWdlICsgMSkgLSB0aGlzLl90aW1lT2Zmc2V0KHN0
YWdlKSkgLyAxMDAwKSArICIpIjsKKyAgICB9LAorICAgIAorICAgIHVwZGF0ZTogZnVuY3Rpb24o
Y3VycmVudFRpbWVPZmZzZXQpCisgICAgeworICAgICAgICB0aGlzLl9jdXJyZW50VGltZU9mZnNl
dCA9IGN1cnJlbnRUaW1lT2Zmc2V0OworICAgIH0sCisgICAgCisgICAgc2FtcGxpbmdUaW1lT2Zm
c2V0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdGltZU9mZnNldChC
ZW5jaG1hcmtTdGF0ZS5zdGFnZXMuU0FNUExJTkcpOworICAgIH0sCisgICAgCisgICAgY3VycmVu
dFN0YWdlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmb3IgKHZhciBzdGFnZSA9IEJlbmNo
bWFya1N0YXRlLnN0YWdlcy5XQVJNSU5HX1VQOyBzdGFnZSA8IEJlbmNobWFya1N0YXRlLnN0YWdl
cy5GSU5JU0hFRDsgKytzdGFnZSkgeworICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRUaW1l
T2Zmc2V0IDwgdGhpcy5fdGltZU9mZnNldChzdGFnZSArIDEpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBzdGFnZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gQmVuY2htYXJrU3RhdGUuc3Rh
Z2VzLkZJTklTSEVEOworICAgIH0sCisgICAgCisgICAgY3VycmVudE1lc3NhZ2U6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9tZXNzYWdlKHRoaXMuY3VycmVudFN0YWdl
KCksIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0KTsKKyAgICB9LAorICAgIAorICAgIGN1cnJlbnRQ
cm9ncmVzczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRU
aW1lT2Zmc2V0IC8gdGhpcy5fdGltZU9mZnNldChCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNI
RUQpOworICAgIH0KK30KKworZnVuY3Rpb24gQW5pbWF0b3IoYmVuY2htYXJrKQoreworICAgIHRo
aXMuX2JlbmNobWFyayA9IGJlbmNobWFyazsKKyAgICB0aGlzLl9mcmFtZUNvdW50ID0gMDsKKyAg
ICB0aGlzLl9kcm9wRnJhbWVDb3VudCA9IDE7CisgICAgdGhpcy5fbWVhc3VyZUZyYW1lQ291bnQg
PSAzOyAKKyAgICB0aGlzLl9yZWZlcmVuY2VUaW1lID0gMDsKKyAgICB0aGlzLl9jdXJyZW50VGlt
ZU9mZnNldCA9IDA7CisgICAgdGhpcy5fZXN0aW1hdG9yID0gbmV3IEthbG1hbkVzdGltYXRvcigp
OworfQorCitBbmltYXRvci5wcm90b3R5cGUgPQoreworICAgIHN0YXJ0OiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICB0aGlzLl9pbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwodGhpcy5hbmltYXRl
LmJpbmQodGhpcyksIDEpOworICAgIH0sCisgICAgCisgICAgdGltZURlbHRhOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgLSB0aGlzLl9z
dGFydFRpbWVPZmZzZXQ7CisgICAgfSwKKyAgICAKKyAgICBhbmltYXRlOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICB2YXIgY3VycmVudFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKKyAgICAg
ICAgCisgICAgICAgIGlmICghdGhpcy5fcmVmZXJlbmNlVGltZSkKKyAgICAgICAgICAgIHRoaXMu
X3JlZmVyZW5jZVRpbWUgPSBjdXJyZW50VGltZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
dGhpcy5fY3VycmVudFRpbWVPZmZzZXQgPSBjdXJyZW50VGltZSAtIHRoaXMuX3JlZmVyZW5jZVRp
bWU7CisKKyAgICAgICAgaWYgKCF0aGlzLl9mcmFtZUNvdW50KQorICAgICAgICAgICAgdGhpcy5f
c3RhcnRUaW1lT2Zmc2V0ID0gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQ7CisKKyAgICAgICAgLy8g
U3RhcnQgbWVhc3VyaW5nIGFmdGVyIGRyb3BwaW5nIF9kcm9wRnJhbWVDb3VudCBmcmFtZXMuCisg
ICAgICAgIGlmICh0aGlzLl9mcmFtZUNvdW50ID09IHRoaXMuX2Ryb3BGcmFtZUNvdW50KQorICAg
ICAgICAgICAgdGhpcy5fbWVhc3VyZVRpbWVPZmZzZXQgPSB0aGlzLl9jdXJyZW50VGltZU9mZnNl
dDsKKworICAgICAgICArK3RoaXMuX2ZyYW1lQ291bnQ7CisKKyAgICAgICAgLy8gRHJvcCBfZHJv
cEZyYW1lQ291bnQgZnJhbWVzIGFuZCBtZWFzdXJlIHRoZSBhdmVyYWdlIG9mIF9tZWFzdXJlRnJh
bWVDb3VudCBmcmFtZXMuCisgICAgICAgIGlmICh0aGlzLl9mcmFtZUNvdW50IDwgdGhpcy5fZHJv
cEZyYW1lQ291bnQgKyB0aGlzLl9tZWFzdXJlRnJhbWVDb3VudCkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgICAgIC8vIEdldCB0aGUgYXZlcmFnZSBGUFMgb2YgX21lYXN1cmVGcmFt
ZUNvdW50IGZyYW1lcyBvdmVyIG1lYXN1cmVUaW1lRGVsdGEuCisgICAgICAgIHZhciBtZWFzdXJl
VGltZURlbHRhID0gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgLSB0aGlzLl9tZWFzdXJlVGltZU9m
ZnNldDsKKyAgICAgICAgdmFyIGN1cnJlbnRGcmFtZVJhdGUgPSBNYXRoLmZsb29yKDEwMDAgLyAo
bWVhc3VyZVRpbWVEZWx0YSAvIHRoaXMuX21lYXN1cmVGcmFtZUNvdW50KSk7CisgICAgICAgICAK
KyAgICAgICAgLy8gVXNlIEthbG1hbiBmaWx0ZXIgdG8gZ2V0IGEgbW9yZSBub24tZmx1Y3R1YXRp
bmcgZnJhbWUgcmF0ZS4KKyAgICAgICAgaWYgKHRoaXMuX2JlbmNobWFyay5vcHRpb25zLmVzdGlt
YXRlZEZyYW1lUmF0ZSkKKyAgICAgICAgICAgIGN1cnJlbnRGcmFtZVJhdGUgPSB0aGlzLl9lc3Rp
bWF0b3IuZXN0aW1hdGUobWVhc3VyZVRpbWVEZWx0YSwgY3VycmVudEZyYW1lUmF0ZSk7CisgICAg
ICAgIAorICAgICAgICAvLyBBZGp1c3QgdGhlIHRlc3QgdG8gcmVhY2ggdGhlIGRlc2lyZWQgRlBT
LgorICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fYmVuY2htYXJrLnVwZGF0ZSh0aGlzLl9jdXJy
ZW50VGltZU9mZnNldCwgdGhpcy50aW1lRGVsdGEoKSwgY3VycmVudEZyYW1lUmF0ZSk7CisgICAg
ICAgIAorICAgICAgICAvLyBTdG9wIHRoZSBhbmltYXRvciBpZiB0aGUgYmVuY2htYXJrIGhhcyBm
aW5pc2hlZC4KKyAgICAgICAgaWYgKCFyZXN1bHQgJiYgdHlwZW9mIHRoaXMuX2ludGVydmFsSWQg
IT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuX2ludGVydmFs
SWQpOworCisgICAgICAgIC8vIFN0YXJ0IHRoZSBuZXh0IGRyb3AvbWVhc3VyZSBjeWNsZS4KKyAg
ICAgICAgdGhpcy5fZnJhbWVDb3VudCA9IDA7CisgICAgICAgIAorICAgICAgICAvLyByZXN1bHQg
bWF5IHN0b3AgdGhlIGFuaW1hdG9yIGlmIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGhhcyBiZWVu
IHVzZWQuCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKyAgICAKKyAgICBhbmltYXRl
TG9vcDogZnVuY3Rpb24odGltZXN0YW1wKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuYW5pbWF0
ZSgpKQorICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0ZUxvb3Au
YmluZCh0aGlzKSk7CisgICAgfQorfQorCitmdW5jdGlvbiBCZW5jaG1hcmsob3B0aW9ucykKK3sK
KyAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9uczsKKyAgICB0aGlzLl9tZXRob2QgPSB0aGlzLl9v
cHRpb25zWyJtZXRob2QiXSB8fCAicmVxdWVzdEFuaW1hdGlvbkZyYW1lIjsKKworICAgIHRoaXMu
b3B0aW9ucyA9IG9wdGlvbnM7CisgICAgdGhpcy5fcmVjb3JkSW50ZXJ2YWwgPSAyMDA7ICAgIAor
ICAgIHRoaXMuX2lzU2FtcGxpbmcgPSBmYWxzZTsKKworICAgIHZhciBnYWluID0gcGFyc2VJbnQo
dGhpcy5fb3B0aW9uc1siZ2FpbiJdKSB8fCAxOworICAgIHZhciBsb3dWYWx1ZSA9IC1wYXJzZUlu
dCh0aGlzLl9vcHRpb25zWyJhZGRMaW1pdCJdKSB8fCAxOworICAgIHZhciBoaWdoVmFsdWUgPSBw
YXJzZUludCh0aGlzLl9vcHRpb25zWyJyZW1vdmVMaW1pdCJdKSB8fCAxOworICAgIAorICAgIHRo
aXMuX2NvbnRyb2xsZXIgPSBuZXcgUElEQ29udHJvbGxlcihnYWluLCBvcHRpb25zLmZyYW1lUmF0
ZSwgbG93VmFsdWUsIGhpZ2hWYWx1ZSk7CisgICAgdGhpcy5fc2FtcGxlciA9IG5ldyBTYW1wbGVy
KDIpOworICAgIHRoaXMuX3N0YXRlID0gbmV3IEJlbmNobWFya1N0YXRlKHRoaXMub3B0aW9ucy50
ZXN0SW50ZXJ2YWwpOyAgICAKK30KKworQmVuY2htYXJrLnByb3RvdHlwZSA9Cit7CisgICAgLy8g
Q2FsbGVkIGZyb20gdGhlIGxvYWQgZXZlbnQgbGlzdGVuZXIgb3IgZnJvbSB0aGlzLnJ1bigpLgor
ICAgIHN0YXJ0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fbWV0aG9kID09
ICJzZXRJbnRlcnZhbCIpCisgICAgICAgICAgICB0aGlzLl9hbmltYXRvci5zdGFydCgpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9hbmltYXRvci5hbmltYXRlTG9vcCgpOworICAg
IH0sCisgICAgCisgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGFuaW1hdG9yIHRvIGFkanVzdCB0aGUg
Y29tcGxleGl0eSBvZiB0aGUgdGVzdC4KKyAgICB1cGRhdGU6IGZ1bmN0aW9uKGN1cnJlbnRUaW1l
T2Zmc2V0LCB0aW1lRGVsdGEsIGN1cnJlbnRGcmFtZVJhdGUpCisgICAgeworICAgICAgICB0aGlz
Ll9zdGF0ZS51cGRhdGUoY3VycmVudFRpbWVPZmZzZXQpOworICAgICAgICAKKyAgICAgICAgdmFy
IHN0YWdlID0gdGhpcy5fc3RhdGUuY3VycmVudFN0YWdlKCk7CisgICAgICAgIGlmIChzdGFnZSA9
PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQpIHsKKyAgICAgICAgICAgIHRoaXMuY2xl
YXIoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuU0FNUExJTkcgJiYgIXRoaXMuX2lzU2Ft
cGxpbmcpIHsKKyAgICAgICAgICAgIHRoaXMuX3NhbXBsZXIuc3RhcnRTYW1wbGluZyh0aGlzLl9z
dGF0ZS5zYW1wbGluZ1RpbWVPZmZzZXQoKSk7CisgICAgICAgICAgICB0aGlzLl9pc1NhbXBsaW5n
ID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0dW5lVmFsdWUgPSAwOworICAgICAg
ICBpZiAoISh0aGlzLl9pc1NhbXBsaW5nICYmIHRoaXMub3B0aW9ucy5maXhUZXN0Q29tcGxleGl0
eSkpIHsKKyAgICAgICAgICAgIC8vIFRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBmcmFtZVJhdGUg
YW5kIHRlc3QgY29tcGxleGl0eSBpcyBpbnZlcnNlLXByb3BvcnRpb25hbCBzbyB3ZQorICAgICAg
ICAgICAgLy8gbmVlZCB0byB1c2UgdGhlIG5lZ2F0aXZlIG9mIFBJRENvbnRyb2xsZXIudHVuZSgp
IHRvIGNoYW5nZSB0aGUgY29tcGxleGl0eSBvZiB0aGUgdGVzdC4KKyAgICAgICAgICAgIHR1bmVW
YWx1ZSA9IC10aGlzLl9jb250cm9sbGVyLnR1bmUoY3VycmVudEZyYW1lUmF0ZSwgdGltZURlbHRh
IC8gMTAwMCk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgY3VycmVudENvbXBsZXhpdHkgPSB0
aGlzLnR1bmUodHVuZVZhbHVlKTsKKyAgICAgICAgdGhpcy5yZWNvcmQoY3VycmVudFRpbWVPZmZz
ZXQsIGN1cnJlbnRDb21wbGV4aXR5LCBjdXJyZW50RnJhbWVSYXRlKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfSwKKyAgICAKKyAgICByZWNvcmQ6IGZ1bmN0aW9uKGN1cnJlbnRUaW1lT2Zm
c2V0LCBjdXJyZW50Q29tcGxleGl0eSwgY3VycmVudEZyYW1lUmF0ZSkKKyAgICB7CisgICAgICAg
IHRoaXMuX3NhbXBsZXIuc2FtcGxlKGN1cnJlbnRUaW1lT2Zmc2V0LCBbY3VycmVudENvbXBsZXhp
dHksIGN1cnJlbnRGcmFtZVJhdGVdKTsKKyAgICAgICAgCisgICAgICAgIGlmICh0eXBlb2YgdGhp
cy5fcmVjb3JkVGltZU9mZnNldCA9PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHRoaXMuX3Jl
Y29yZFRpbWVPZmZzZXQgPSBjdXJyZW50VGltZU9mZnNldDsKKworICAgICAgICB2YXIgc3RhZ2Ug
PSB0aGlzLl9zdGF0ZS5jdXJyZW50U3RhZ2UoKTsKKyAgICAgICAgaWYgKHN0YWdlICE9IEJlbmNo
bWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRCAmJiBjdXJyZW50VGltZU9mZnNldCA8IHRoaXMuX3Jl
Y29yZFRpbWVPZmZzZXQgKyB0aGlzLl9yZWNvcmRJbnRlcnZhbCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICB0aGlzLnNob3dSZXN1bHRzKHRoaXMuX3N0YXRlLmN1cnJlbnRNZXNzYWdl
KCksIHRoaXMuX3N0YXRlLmN1cnJlbnRQcm9ncmVzcygpKTsKKyAgICAgICAgdGhpcy5fcmVjb3Jk
VGltZU9mZnNldCA9IGN1cnJlbnRUaW1lT2Zmc2V0OworICAgIH0sCisgICAgCisgICAgcnVuOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLnN0YXJ0KCk7CisKKyAgICAgICAgdmFyIHBy
b21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAg
ICAgICBmdW5jdGlvbiByZXNvbHZlV2hlbkZpbmlzaGVkKCkgeworICAgICAgICAgICAgaWYgKHR5
cGVvZiBzZWxmLl9zdGF0ZSAhPSAidW5kZWZpbmVkIiAmJiAoc2VsZi5fc3RhdGUuY3VycmVudFN0
YWdlKCkgPT0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcHJvbWlzZS5yZXNvbHZlKHNlbGYuX3NhbXBsZXIpOworICAgICAgICAgICAgc2V0
VGltZW91dChyZXNvbHZlV2hlbkZpbmlzaGVkLmJpbmQoc2VsZiksIDUwKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgcmVzb2x2ZVdoZW5GaW5pc2hlZCgpOworICAgICAgICByZXR1cm4g
cHJvbWlzZTsKKyAgICB9Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvcmVzb3VyY2VzL21hdGguanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMjc0IEBACit2YXIgTWF0cml4ID0KK3sKKyAgICBpbml0OiBmdW5jdGlvbiht
LCBuLCB2KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5KG0gKiBuKS5maWxsKHYpOworICAg
IH0sCisgICAgCisgICAgemVyb3M6IGZ1bmN0aW9uKG0sIG4pCisgICAgeworICAgICAgICByZXR1
cm4gTWF0cml4LmluaXQobSwgbiwgMCk7CisgICAgfSwKKyAgICAKKyAgICBvbmVzOiBmdW5jdGlv
bihtLCBuKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC5pbml0KG0sIG4sIDEpOworICAg
IH0sCisgICAgCisgICAgaWRlbnRpdHk6IGZ1bmN0aW9uKG4pCisgICAgeworICAgICAgICB2YXIg
b3V0ID0gbmV3IE1hdHJpeC56ZXJvcyhuLCBuKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBuOyArK2kpCisgICAgICAgICAgICBvdXRbaSAqIG4gKyBpXSA9IDE7CisgICAgICAgIHJldHVy
biBvdXQ7CisgICAgfSwKKyAgICAKKyAgICBzdHI6IGZ1bmN0aW9uKEEsIG4sIG0pCisgICAgewor
ICAgICAgICB2YXIgb3V0ID0gKG0gPiAxICYmIG4gPiAxID8gIk1hdHJpeFsiICsgbiArICIsICIg
KyBtIDogIlZlY3RvclsiICsgbSAqIG4pICsgIl0gPSBbIjsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBuICogbTsgKytpKSB7CisgICAgICAgICAgICBvdXQgKz0gQVtpXTsKKyAgICAgICAg
ICAgIGlmIChpIDwgbiAqIG0gLSAxKQorICAgICAgICAgICAgICAgIG91dCArPSAiLCAiOworICAg
ICAgICB9ICAgICAgIAorICAgICAgICByZXR1cm4gb3V0ICsgIl0iOworICAgIH0sCisgICAgCisg
ICAgcG9zOiBmdW5jdGlvbihtLCBpLCBqKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG0gKiBpICsg
ajsKKyAgICB9LAorICAgIAorICAgIGFkZDogZnVuY3Rpb24oQSwgQiwgbiwgbSkKKyAgICB7Cisg
ICAgICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3MobiwgbSk7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbiAqIG07ICsraSkKKyAgICAgICAgICAgIG91dFtpXSA9IEFbaV0gKyBCW2ldOwor
ICAgICAgICByZXR1cm4gb3V0OworICAgIH0sCisgICAgCisgICAgc3VidHJhY3Q6IGZ1bmN0aW9u
KEEsIEIsIG4sIG0pCisgICAgeworICAgICAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIG0p
OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4gKiBtOyArK2kpCisgICAgICAgICAgICBv
dXRbaV0gPSBBW2ldIC0gQltpXTsKKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9LAorICAgIAor
ICAgIHNjYWxlOiBmdW5jdGlvbihzLCBBLCBuLCBtKQorICAgIHsKKyAgICAgICAgdmFyIG91dCA9
IE1hdHJpeC56ZXJvcyhuLCBtKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuICogbTsg
KytpKQorICAgICAgICAgICAgb3V0W2ldID0gcyAqIEFbaV07CisgICAgICAgIHJldHVybiBvdXQ7
CisgICAgfSwKKyAgICAKKyAgICB0cmFuc3Bvc2U6IGZ1bmN0aW9uKEEsIG4sIG0pCisgICAgewor
ICAgICAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG0sIG4pOworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBtOyAr
K2opCisgICAgICAgICAgICAgICAgb3V0W01hdHJpeC5wb3MobiwgaSwgaildID0gQVtNYXRyaXgu
cG9zKG0sIGosIGkpXTsKKyAgICAgICAgfSAgICAgICAKKyAgICAgICAgcmV0dXJuIG91dDsKKyAg
ICB9LAorICAgIAorICAgIG11bHRpcGx5OiBmdW5jdGlvbihBLCBCLCBuLCBtLCBwKQorICAgIHsK
KyAgICAgICAgdmFyIG91dCA9IE1hdHJpeC56ZXJvcyhuLCBwKTsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcDsg
KytqKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBtOyArK2spIHsKKyAg
ICAgICAgICAgICAgICAgICAgb3V0W01hdHJpeC5wb3MocCwgaSwgaildICs9IEFbTWF0cml4LnBv
cyhtLCBpLCBrKV0gKiBCW01hdHJpeC5wb3MocCwgaywgaildOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gb3V0OworICAgIH0KK30K
KwordmFyIFZlY3RvcjMgPQoreworICAgIHplcm9zOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICByZXR1cm4gTWF0cml4Lnplcm9zKDEsIDMpOworICAgIH0sCisgICAgCisgICAgb25lczogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC5vbmVzKDEsIDMpOworICAgIH0s
CisgICAgCisgICAgc3RyOiBmdW5jdGlvbih2KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJp
eC5zdHIodiwgMSwgMyk7CisgICAgfSwKKyAgICAKKyAgICBhZGQ6IGZ1bmN0aW9uKHYsIHcpCisg
ICAgeworICAgICAgICByZXR1cm4gTWF0cml4LmFkZCh2LCB3LCAxLCAzKTsKKyAgICB9LAorICAg
IAorICAgIHN1YnRyYWN0OiBmdW5jdGlvbih2LCB3KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1h
dHJpeC5zdWJ0cmFjdCh2LCB3LCAxLCAzKTsKKyAgICB9LAorICAgIAorICAgIHNjYWxlOiBmdW5j
dGlvbihzLCB2KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC5zY2FsZShzLCB2LCAxLCAz
KTsKKyAgICB9LAorICAgIAorICAgIG11bHRpcGx5TWF0cml4MzogZnVuY3Rpb24odiwgQSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBNYXRyaXgubXVsdGlwbHkodiwgQSwgMSwgMywgMyk7CisgICAg
fSwKKyAgICAKKyAgICBtdWx0aXBseVZlY3RvcjM6IGZ1bmN0aW9uKHYsIHcpCisgICAgeworICAg
ICAgICB2YXIgb3V0ID0gMDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzOyArK2kpCisg
ICAgICAgICAgICBvdXQgKz0gdltpXSAqIHdbaV07CisgICAgICAgIHJldHVybiBvdXQ7CisgICAg
fQorfQorCit2YXIgTWF0cml4MyA9Cit7CisgICAgemVyb3M6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBNYXRyaXguemVyb3MoMywgMyk7CisgICAgfSwKKyAgICAKKyAgICBpZGVu
dGl0eTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC5pZGVudGl0eSgz
LCAzKTsKKyAgICB9LAorICAgIAorICAgIHN0cjogZnVuY3Rpb24oQSkKKyAgICB7CisgICAgICAg
IHJldHVybiBNYXRyaXguc3RyKEEsIDMsIDMpOworICAgIH0sCisgICAgCisgICAgcG9zOiBmdW5j
dGlvbihpLCBqKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC5wb3MoMywgaSwgaik7Cisg
ICAgfSwKKyAgICAKKyAgICBhZGQ6IGZ1bmN0aW9uKEEsIEIpCisgICAgeworICAgICAgICByZXR1
cm4gTWF0cml4LmFkZChBLCBCLCAzLCAzKTsKKyAgICB9LAorICAgIAorICAgIHN1YnRyYWN0OiBm
dW5jdGlvbihBLCBCKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC5zdWJ0cmFjdChBLCBC
LCAzLCAzKTsKKyAgICB9LAorICAgIAorICAgIHNjYWxlOiBmdW5jdGlvbihzLCBBKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIE1hdHJpeC5zY2FsZShzLCBBLCAzLCAzKTsKKyAgICB9LAorICAgIAor
ICAgIHRyYW5zcG9zZTogZnVuY3Rpb24oQSkKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRyaXgu
dHJhbnNwb3NlKEEsIDMsIDMpOworICAgIH0sCisgICAgCisgICAgbXVsdGlwbHlNYXRyaXgzOiBm
dW5jdGlvbihBLCBCKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC5tdWx0aXBseShBLCBC
LCAzLCAzLCAzKTsKKyAgICB9LAorICAgIAorICAgIG11bHRpcGx5VmVjdG9yMzogZnVuY3Rpb24o
QSwgdikKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRyaXgubXVsdGlwbHkoQSwgdiwgMywgMywg
MSk7CisgICAgfQorfQorCitmdW5jdGlvbiBQSURDb250cm9sbGVyKEssIHlzcCwgdWxvdywgdWhp
Z2gpCit7CisgICAgdGhpcy5feXNwID0geXNwOworCisgICAgdGhpcy5fVGQgPSA1OworICAgIHRo
aXMuX1RpID0gMTU7CisKKyAgICB0aGlzLl9LcCA9IEs7CisgICAgdGhpcy5fS2QgPSBLIC8gdGhp
cy5fVGQ7CisgICAgdGhpcy5fS2kgPSBLIC8gdGhpcy5fVGk7CisKKyAgICB0aGlzLl9lb2xkID0g
MDsKKyAgICB0aGlzLl9JID0gMDsKK30KKworUElEQ29udHJvbGxlci5wcm90b3R5cGUgPQorewor
ICAgIF9zYXQ6IGZ1bmN0aW9uKHYsIGxvdywgaGlnaCkKKyAgICB7CisgICAgICAgIHJldHVybiB2
IDwgbG93ID8gbG93IDogKHYgPiBoaWdoID8gaGlnaCA6IHYpOworICAgIH0sCisgICAgCisgICAg
dHVuZTogZnVuY3Rpb24oeSwgaCkKKyAgICB7CisgICAgICAgIC8vIEN1cnJlbnQgZXJyb3IKKyAg
ICAgICAgdmFyIGUgPSB0aGlzLl95c3AgLSB5OworCisgICAgICAgIC8vIFByb3BvcnRpb25hbCB0
ZXJtCisgICAgICAgIHZhciBQID0gdGhpcy5fS3AgKiBlOworICAgICAgICAKKyAgICAgICAgLy8g
RGVyaXZhdGl2ZSB0ZXJtIGlzIHRoZSBzbG9wZSBvZiB0aGUgY3VydmUgYXQgdGhlIGN1cnJlbnQg
dGltZQorICAgICAgICB2YXIgRCA9IHRoaXMuX0tkICogKGUgLSB0aGlzLl9lb2xkKSAvIGg7CisK
KyAgICAgICAgLy8gSW50ZWdyYWwgdGVybSBpcyB0aGUgYXJlYSB1bmRlciB0aGUgY3VydmUgc3Rh
cnRpbmcgZnJvbSB0aGUgYmVnaW5pbmcgdGlsbCB0aGUgY3VycmVudCB0aW1lCisgICAgICAgIHRo
aXMuX0kgKz0gdGhpcy5fS2kgKiAoKGUgKyB0aGlzLl9lb2xkKSAvIDIpICogaDsKKworICAgICAg
ICAvLyBwaWQgY29udHJvbGxlciB2YWx1ZQorICAgICAgICB2YXIgdiA9IFAgKyBEICsgdGhpcy5f
STsKKyAgICAgICAgCisgICAgICAgIC8vIEF2b2lkIHNwaWtlcyBieSBhcHBseWluZyBhY3R1YXRv
ciBzYXR1YXJ0aW9uCisgICAgICAgIHZhciB1ID0gdGhpcy5fc2F0KHYsIHRoaXMuX3Vsb3csIHRo
aXMuX3VoaWdoKTsgICAgICAgIAorCisgICAgICAgIHRoaXMuX2VvbGQgPSBlOworICAgICAgICBy
ZXR1cm4gdTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEthbG1hbkVzdGltYXRvcigpCit7CisgICAg
dGhpcy5fbWF0QSA9IE1hdHJpeDMuaWRlbnRpdHkoKTsKKyAgICAKKyAgICB0aGlzLl92ZWNIID0g
VmVjdG9yMy56ZXJvcygpOworICAgIHRoaXMuX3ZlY0hbMF0gPSAxOworICAgIAorICAgIHRoaXMu
X21hdFEgPSBNYXRyaXgzLmlkZW50aXR5KCk7CisgICAgdGhpcy5fUiA9IDEwMDA7CisgICAgCisg
ICAgdGhpcy5fdmVjWF9lc3QgPSBWZWN0b3IzLm9uZXMoKTsKKyAgICB0aGlzLl9tYXRQX2VzdCA9
IE1hdHJpeDMuemVyb3MoKTsKK30KKworS2FsbWFuRXN0aW1hdG9yLnByb3RvdHlwZSA9Cit7Cisg
ICAgZXN0aW1hdGU6IGZ1bmN0aW9uKHRpbWVEZWx0YSwgY3VycmVudCkKKyAgICB7CisgICAgICAg
IC8vIFVwZGF0ZSB0aGUgdHJhbnNpdGlvbiBtYXRyaXgKKyAgICAgICAgdGhpcy5fbWF0QVtNYXRy
aXgzLnBvcygwLCAyKV0gPSAxOworCisgICAgICAgIC8vIFByZWRpY3RlZCBzdGF0ZSBhbmQgY292
YXJpYW5jZQorICAgICAgICB2YXIgdmVjWF9wcmQgPSBNYXRyaXgzLm11bHRpcGx5VmVjdG9yMyh0
aGlzLl9tYXRBLCB0aGlzLl92ZWNYX2VzdCk7CisgICAgICAgIHZhciBtYXRQX3ByZCA9IE1hdHJp
eDMuYWRkKE1hdHJpeDMubXVsdGlwbHlNYXRyaXgzKE1hdHJpeDMubXVsdGlwbHlNYXRyaXgzKHRo
aXMuX21hdEEsIHRoaXMuX21hdFBfZXN0KSwgTWF0cml4My50cmFuc3Bvc2UodGhpcy5fbWF0QSkp
LCB0aGlzLl9tYXRRKTsKKworICAgICAgICAvLyBFc3RpbWF0aW9uCisgICAgICAgIHZhciB2ZWNC
ID0gVmVjdG9yMy5tdWx0aXBseU1hdHJpeDModGhpcy5fdmVjSCwgTWF0cml4My50cmFuc3Bvc2Uo
bWF0UF9wcmQpKTsKKyAgICAgICAgdmFyIFMgPSBWZWN0b3IzLm11bHRpcGx5VmVjdG9yMyh2ZWNC
LCB0aGlzLl92ZWNIKSArIHRoaXMuX1I7CisKKyAgICAgICAgdmFyIHZlY0dhaW4gPSBWZWN0b3Iz
LnNjYWxlKDEvUywgdmVjQik7CisgICAgICAgIAorICAgICAgICAvLyBFc3RpbWF0ZWQgc3RhdGUg
YW5kIGNvdmFyaWFuY2UKKyAgICAgICAgdGhpcy5fdmVjWF9lc3QgPSBWZWN0b3IzLmFkZCh2ZWNY
X3ByZCwgVmVjdG9yMy5zY2FsZShjdXJyZW50IC0gVmVjdG9yMy5tdWx0aXBseVZlY3RvcjModGhp
cy5fdmVjSCwgdmVjWF9wcmQpLCB2ZWNHYWluKSk7CisgICAgICAgIHRoaXMuX21hdFBfZXN0ID0g
TWF0cml4My5zdWJ0cmFjdChtYXRQX3ByZCwgTWF0cml4My5zY2FsZShWZWN0b3IzLm11bHRpcGx5
VmVjdG9yMyh2ZWNHYWluLCB0aGlzLl92ZWNIKSwgbWF0UF9wcmQpKTsKKworICAgICAgICAvLyBD
b21wdXRlIHRoZSBlc3RpbWF0ZWQgbWVhc3VyZW1lbnQKKyAgICAgICAgcmV0dXJuIFZlY3RvcjMu
bXVsdGlwbHlWZWN0b3IzKHRoaXMuX3ZlY0gsICB0aGlzLl92ZWNYX2VzdCk7CisgICAgfQorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262171</attachid>
            <date>2015-09-30 09:47:58 -0700</date>
            <delta_ts>2015-10-01 14:19:52 -0700</delta_ts>
            <desc>[stage]</desc>
            <filename>stage.patch</filename>
            <type>text/plain</type>
            <size>19428</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAzMzEpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5NCBAQAorMjAxNS0wOS0yOSAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IEluc3RlYWQgb2YgbWVhc3VyaW5nIHRoZSBGUFMgb2YgdGhlIGFuaW1hdGlvbiwgdGhpcyBiZW5j
aG1hcmsgbWVhc3VyZXMgdGhlCisgICAgICAgIHRlc3QgY29tcGxleGl0eSB3aGVuIHJlbmRlcmlu
ZyBhdCBhIHNldC1wb2ludCBGUFMgd2hpY2ggc2hvdWxkIGJlIGxvd2VyCisgICAgICAgIHRoYW4g
NjAgRlBTLiBUaGlzIGJlbmNobWFyayB0cmllcyB0byBzdGF5IGF0IHRoZSBzZXQtcG9pbnQgRlBT
IGJ5IHVzaW5nCisgICAgICAgIGEgY2xvc2VkIGxvb3AgY29udHJvbCBzeXN0ZW0gUElEIGZ1bmN0
aW9uLiBUaGUgZ2FpbiBvZiB0aGUgc3lzdGVtIGlzIHBhc3NlZAorICAgICAgICBhcyBhIHBhcmFt
ZXRlciB3aGVuIHJ1bm5pbmcgdGhlIHRlc3QuIE1lYXN1cmluZyB0aGUgRlBTIGZhaXRoZnVsbHkg
cmVzdWx0cworICAgICAgICB2ZXJ5IGZsdWN0dWF0aW5nIHZhbHVlcy4gQSBLYWxtYW4gZmlsdGVy
IGlzIHVzZWQgdG8gZ2l2ZSBhIGJldHRlciBlc3RpbWF0ZQorICAgICAgICBmb3IgdGhlIGN1cnJl
bnQgRlBTLgorCisgICAgICAgIFRoZSBhbmltYXRpb24gb2YgdGhlIHRlc3RzIGlzIGRvbmUgbWFu
dWFsbHkuIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGlzCisgICAgICAgIGNhbGxlZCB3aXRoIGEg
Y2FsbGJhY2suIEluc2lkZSB0aGlzIGNhbGxiYWNrLCB0aGUgdGVzdCBpcyBhbmltYXRpbmcgYnkK
KyAgICAgICAgY2hhbmdpbmcgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZWxlbWVudHMgaW5zaWRlIHRo
ZSBwYWdlLiBUaGUgdGVzdCBjb21wbGV4aXR5CisgICAgICAgIG1heSBjaGFuZ2UgYWxzbyBpZiB0
aGUgY3VycmVudCBGUFMgaXMgbm90IGVxdWFsIHRvIHRoZSBkZXNpcmVkIEZQUy4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgc3BsaXQgdG8gdGhlc2Ugc21hbGxlciBwYXRjaGVzOgor
ICAgICAgICBbc2hhcmVkXTogU2hhcmVkIG9iamVjdHMgdXNlZCBieSB0aGUgdGVzdHMgYW5kIHRo
ZSBydW5uZXIuCisgICAgICAgIFtiZW5jaG1hcmtdOiBNYW5hZ2luZyBhbmltYXRpbmcgYW5kIHR1
bmluZyB0aGUgdGVzdHMuCisgICAgICAgIFtzdGFnZV06IEJhc2Ugb2JqZWN0cyBmb3Igc3RhZ2Ut
YmFzZWQgdGVzdHMuCisgICAgICAgIFtib3VuY2luZy1jc3MtcGFydGljbGVzXTogRXhhbXBsZXMg
Zm9yIGFuaW1hdGluZyBIVE1MRWxlbWVudHMuCisgICAgICAgIFtib3VuY2luZy1jYW52YXMtcGFy
dGljbGVzXTogRXhhbXBsZXMgZm9yIGFuaW1hdGlvbnMgb24gYSBjYW52YXMuCisgICAgICAgIFti
b3VuY2luZy1zdmctcGFydGljbGVzXTogRXhhbXBsZXMgZm9yIGFuaW1hdGluZyBTVkdFbGVtZW50
cy4KKyAgICAgICAgW3RleHRdOiBBbiBleGFtcGxlIGZvciBhbmltYXRpbmcgdGV4dCBvbiBhIENT
UyBzdGFnZS4KKyAgICAgICAgW3RlbXBsYXRlXTogRW1wdHkgdGVtcGxhdGVzIGZvciBuZXcgdGVz
dHMuCisgICAgICAgIFtydW5uZXJdOiBUaGUgYmVuY2htYXJrIHRlc3QgaGFybmVzcy4KKworICAg
ICAgICBbc3RhZ2VdCisgICAgICAgIFRoaXMgcGF0Y2ggcmVwcmVzZW50cyB0aGUgc3RhZ2Ugb24g
d2hpY2ggdGhlIGFuaW1hdGlvbiBoYXBwZW5zLiBUaGUgY29uY3JldGUKKyAgICAgICAgc3RhZ2Ug
Y2FuIGJlIGEgQ1NTLCBhIGNhbnZhcyBvciBhbiBTVkcgc3RhZ2UuIFRoZSBjbGFzc2VzIGluIHRo
aXMgcGF0Y2gKKyAgICAgICAgcHJvdmlkZXMgdGhlIHNoYXJlZCBmdW5jdGlvbmFsaXRpZXMgYW5k
IGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIGFsbCB0eXBlcworICAgICAgICBvZiBzdGFnZXMu
CisKKyAgICAgICAgKiBBbmltb21ldGVyOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rl
c3RzOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlczogQWRkZWQu
CisKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5jc3M6IEFkZGVk
LgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzOiBBZGRlZC4K
KyAgICAgICAgKFN0YWdlKTogQSBiYXNlIGNsYXNzIGZvciBtYW5hZ2luZyB0aGUgdGVzdCBjb21w
bGV4aXR5IGFuZCB0ZXN0IGFuaW1hdGlvbi4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5nZXQg
c2l6ZSk6IFJldHVybnMgdGhlIHNpemUgb2YgdGhlIHN0YWdlIGV4Y2x1ZGluZyB0aGUgQ1NTIHBh
ZGRpbmcuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tKTogUmV0dXJucyBhIHJhbmRv
bSBmbG9hdC4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5yYW5kb21JbnQpOiBSZXR1cm5zIGEg
cmFuZG9tIGludGVnZXIuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tUG9zaXRpb24p
OiBSZXR1cm5zIGEgcmFuZG9tIHBvc2l0aW9uLgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLnJh
bmRvbVZlbG9jaXR5KTogUmV0dXJucyBhIHJhbmRvbSB2ZWxvY2l0eS4KKyAgICAgICAgKFN0YWdl
LnByb3RvdHlwZS5yYW5kb21BbmdsZSk6IFJldHVybnMgYSByYW5kb20gYW5nbGUuCisgICAgICAg
IChTdGFnZS5wcm90b3R5cGUucmFuZG9tQ29sb3IpOiBSZXR1cm5zIGEgcmFuZG9tIGNvbG9yIG5v
dCB0b28gZGFyayBhbmQgbm90IHRvbyBsaWdodC4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS50
dW5lKTogQSBub3QtaW1wbGVtZW50ZWQgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uLgorICAgICAg
ICAoU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBBIG5vdC1pbXBsZW1lbnRlZCB2ZXJzaW9uIG9m
IHRoaXMgZnVuY3Rpb24uCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUuY2xlYXIpOiBDbGVhcnMg
dGhlIHN0YWdlIGZyb20gYWxsIGl0cyBhbmltYXRpb24gZWxlbWVudHMuCisgICAgICAgIAorICAg
ICAgICAoU3RhZ2VBbmltYXRvcik6IEEgYmFzZSBjbGFzcyBmb3IgdGhlIHN0YWdlLWJhc2VkIGFu
aW1hdG9ycy4KKyAgICAgICAgKFN0YWdlQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBDYWxs
cyBBbmltYXRvci5hbmltYXRlKCkgd2hpY2ggdXBkYXRlcyB0aGUgdGVzdCBwYWdlIGFuZCB0aGVu
IGNhbGxzIFN0YWdlLmFuaW1hdGUoKSB0byBmb3JjZSByZWRyYXcuCisgICAgICAgIAorICAgICAg
ICAoU3RhZ2VCZW5jaG1hcmspOiBBIGJhc2UgY2xhc3MgZm9yIHRoZSBzdGFnZS1iYXNlZCBiZW5j
aG1hcmtzLgorICAgICAgICAoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTog
Q3JlYXRlcyB0aGUgZGVmYXVsdCBzdGFnZS4KKyAgICAgICAgKFN0YWdlQmVuY2htYXJrLnByb3Rv
dHlwZS5jcmVhdGVBbmltYXRvcik6IENyZWF0ZXMgdGhlIGRlZmF1bHQgYW5pbWF0b3IuCisgICAg
ICAgIChTdGFnZUJlbmNobWFyay5wcm90b3R5cGUudHVuZSk6IERlbGVnYXRlcyB0aGUgY2FsbCB0
byBzdGFnZS4KKyAgICAgICAgKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5jbGVhcik6IERlbGVn
YXRlcyB0aGUgY2FsbCB0byBzdGFnZS4KKyAgICAgICAgKFN0YWdlQmVuY2htYXJrLnByb3RvdHlw
ZS5zaG93UmVzdWx0cyk6IFNob3dzIHRoZSByZXN1bHRzL3Byb2dyZXNzIHRocm91Z2ggaXRzIHJl
Y29yZFRhYmxlIGFuZCBwcm9ncmVzc0Jhci4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKHdpbmRvdy5i
ZW5jaG1hcmtDbGllbnQuX3BhcnNlKTogR2l2ZW4gYSBzZXBhcmF0b3IgY2hhcmFjdGVyLCBpdCBw
YXJlc2VzIGEgc3RyaW5nIHRvIGEgc2V0IG9mIDxrZXksIHZhbHVlPiBwYWlycy4KKyAgICAgICAg
KHdpbmRvdy5iZW5jaG1hcmtDbGllbnQucGFyc2VQYXJhbWV0ZXJzKTogUGFyc2VzIGEgdGVzdCBw
YXJhbWV0ZXJzLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5wYXJzZUFyZ3VtZW50
cyk6IFBhcnNlcyBhIHRhZyBhcmd1bWVudHMuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xp
ZW50LmV4dGVuZE9iamVjdCk6IEFkZHMgdGhlIGF0dHJpYnV0ZXMgYW5kIHRoZWlyIHZhbHVlcyBv
ZiBhbiBvYmplY3QgdG8gYW5vdGhlciBvYmplY3QuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJr
Q2xpZW50LmNvcHlPYmplY3QpOiBDb3BpZXMgdGhlIGF0dHJpYnV0ZXMgYW5kIHRoZWlyIHZhbHVl
cyBvZiBhbiBvYmplY3QgdG8gYSBuZXcgb2JqZWN0LgorICAgICAgICAod2luZG93LmJlbmNobWFy
a0NsaWVudC5tZXJnZU9iamVjdHMpOiBDb3BpZXMgdGhlIGF0dHJpYnV0ZXMgYW5kIHRoZWlyIHZh
bHVlcyBvZiB0d28gb2JqZWN0cyB0byBhIG5ldyBvYmplY3QuCisgICAgICAgICh3aW5kb3cuYmVu
Y2htYXJrQ2xpZW50LmNyZWF0ZVN2Z0VsZW1lbnQpOiBDcmVhdGVzIGFuIFNWR0VsZW1lbnQgZ2l2
ZW4gaXRzIG5hbWUgYW5kIGl0cyBhdHRyaWJ1dGVzLgorICAgICAgICAod2luZG93LnJ1bkJlbmNo
bWFyayk6IENhbGxlZCBmcm9tIHRoZSBiZW5jaG1hcmsgcnVubmVyIHRocm91Z2ggdGhlIHN1aXRl
IGNvbnRyb2xsZXIgcnVuLWNhbGxiYWNrLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVy
L3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5wbmc6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0
ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnN2ZzogQWRkZWQuCisgICAgICAgIFNoYXJlZCBp
bWFnZXMuCisgICAgICAgIAogMjAxNS0wOC0yNyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFtFRkxdIFJFR1JFU1NJT04ocjE4ODc5Myk6IEl0IG1hZGUg
MjAwIGxheW91dCB0ZXN0cyBhbmQgQmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBwZXIuaHRtbCBw
ZXJmb3JtYW5jZSB0ZXN0IGZhaWwKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuY3NzCShyZXZpc2lvbiAwKQorKysgUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5jc3MJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxNyBAQAoraHRtbCB7CisgIGhlaWdodDogMTAwJTsKK30KK2Jv
ZHkgeworICB3aWR0aDogMTAwJTsKKyAgaGVpZ2h0OiAxMDAlOworICBvdmVyZmxvdzogaGlkZGVu
OworICBtYXJnaW46IDA7CisgIHBhZGRpbmc6IDA7CisgIGJhY2tncm91bmQtY29sb3I6ICNlYWVh
ZWE7Cit9CisKKyNzdGFnZSB7CisgIHdpZHRoOiAxMDAlOworICBoZWlnaHQ6IDEwMCU7CisgIGJh
Y2tncm91bmQtY29sb3I6ICNlYWVhZWE7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMJKHJldmlzaW9uIDApCisr
KyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMyIEBACitmdW5jdGlvbiBTdGFnZShlbGVtZW50LCBv
cHRpb25zKQoreworICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7Cit9CisKK1N0YWdlLnByb3Rv
dHlwZSA9Cit7CisgICAgZ2V0IHNpemUoKQorICAgIHsKKyAgICAgICAgdmFyIHN0eWxlcyA9IHdp
bmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudCk7CisgICAgICAgIHZhciBwYWRkaW5n
ID0gbmV3IEluc2V0cygKKyAgICAgICAgICAgIHBhcnNlRmxvYXQoc3R5bGVzLnBhZGRpbmdUb3Ap
LAorICAgICAgICAgICAgcGFyc2VGbG9hdChzdHlsZXMucGFkZGluZ1JpZ2h0KSwKKyAgICAgICAg
ICAgIHBhcnNlRmxvYXQoc3R5bGVzLnBhZGRpbmdCb3R0b20pLAorICAgICAgICAgICAgcGFyc2VG
bG9hdChzdHlsZXMucGFkZGluZ1RvcCkpOworICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMu
ZWxlbWVudC5jbGllbnRXaWR0aCAtIHBhZGRpbmcud2lkdGgsIHRoaXMuZWxlbWVudC5jbGllbnRI
ZWlnaHQgLSBwYWRkaW5nLmhlaWdodCk7CisgICAgfSwKKyAgICAKKyAgICByYW5kb206IGZ1bmN0
aW9uKG1pbiwgbWF4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIChNYXRoLnJhbmRvbSgpICogKG1h
eCAtIG1pbikpICsgbWluOworICAgIH0sCisgICAgCisgICAgcmFuZG9tSW50OiBmdW5jdGlvbiht
aW4sIG1heCkKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMucmFuZG9tKG1p
biwgbWF4KSk7CisgICAgfSwKKyAgICAKKyAgICByYW5kb21Qb3NpdGlvbjogZnVuY3Rpb24obWF4
UG9zaXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMucmFuZG9tSW50
KDAsIG1heFBvc2l0aW9uLngpLCB0aGlzLnJhbmRvbUludCgwLCBtYXhQb3NpdGlvbi55KSk7Cisg
ICAgfSwKKyAgICAKKyAgICByYW5kb21WZWxvY2l0eTogZnVuY3Rpb24obWF4VmVsb2NpdHkpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5yYW5kb20obWF4VmVsb2NpdHkgLyA4LCBtYXhWZWxv
Y2l0eSk7CisgICAgfSwKKyAgICAKKyAgICByYW5kb21BbmdsZTogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMucmFuZG9tKDAsIE1hdGguUEkgKiAyKTsKKyAgICB9LAorICAg
IAorICAgIHJhbmRvbUNvbG9yOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgbWluID0g
MzI7CisgICAgICAgIHZhciBtYXggPSAyNTYgLSAzMjsKKyAgICAgICAgcmV0dXJuICIjIgorICAg
ICAgICAgICAgKyB0aGlzLnJhbmRvbUludChtaW4sIG1heCkudG9TdHJpbmcoMTYpCisgICAgICAg
ICAgICArIHRoaXMucmFuZG9tSW50KG1pbiwgbWF4KS50b1N0cmluZygxNikKKyAgICAgICAgICAg
ICsgdGhpcy5yYW5kb21JbnQobWluLCBtYXgpLnRvU3RyaW5nKDE2KTsKKyAgICB9LAorICAgIAor
ICAgIHR1bmU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRocm93ICJOb3QgaW1wbGVtZW50
ZWQiOworICAgIH0sCisgICAgCisgICAgYW5pbWF0ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdGhyb3cgIk5vdCBpbXBsZW1lbnRlZCI7CisgICAgfSwKKyAgICAKKyAgICBjbGVhcjogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudHVuZSgtdGhpcy50dW5lKDApKTsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIFN0YWdlQW5pbWF0b3IoYmVuY2htYXJrKQoreworICAgIEFu
aW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrKTsKK307CisKK1N0YWdlQW5pbWF0b3IucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZShBbmltYXRvci5wcm90b3R5cGUpOworU3RhZ2VBbmltYXRvci5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBTdGFnZUFuaW1hdG9yOworCitTdGFnZUFuaW1hdG9yLnBy
b3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQoreworICAgIGlmICghQW5pbWF0b3IucHJvdG90
eXBlLmFuaW1hdGUuY2FsbCh0aGlzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHRoaXMu
X2JlbmNobWFyay5fc3RhZ2UuYW5pbWF0ZSh0aGlzLnRpbWVEZWx0YSgpKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworZnVuY3Rpb24gU3RhZ2VCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBv
cHRpb25zKTsKKyAgICAKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJzdGFnZSIpOworICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsIGRvY3VtZW50LmJv
ZHkub2Zmc2V0V2lkdGgpOworICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCBkb2N1
bWVudC5ib2R5Lm9mZnNldEhlaWdodCk7CisgICAgCisgICAgdGhpcy5fc3RhZ2UgPSB0aGlzLmNy
ZWF0ZVN0YWdlKGVsZW1lbnQpOworICAgIHRoaXMuX2FuaW1hdG9yID0gdGhpcy5jcmVhdGVBbmlt
YXRvcigpOworICAgIHRoaXMuX3N1aXRlID0gc3VpdGU7CisgICAgdGhpcy5fdGVzdCA9IHRlc3Q7
CisgICAgdGhpcy5fcmVjb3JkVGFibGUgPSByZWNvcmRUYWJsZTsKKyAgICB0aGlzLl9wcm9ncmVz
c0JhciA9IHByb2dyZXNzQmFyOworfQorCitTdGFnZUJlbmNobWFyay5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKEJlbmNobWFyay5wcm90b3R5cGUpOworU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gU3RhZ2VCZW5jaG1hcms7CisKK1N0YWdlQmVuY2htYXJrLnByb3RvdHlw
ZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgcmV0dXJuIG5ldyBTdGFn
ZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKworU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBl
LmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiBuZXcgU3RhZ2VBbmlt
YXRvcih0aGlzKTsKK30KKworU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLnR1bmUgPSBmdW5jdGlv
bihjb3VudCkKK3sKKyAgICByZXR1cm4gdGhpcy5fc3RhZ2UudHVuZShjb3VudCk7Cit9CisKK1N0
YWdlQmVuY2htYXJrLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4g
dGhpcy5fc3RhZ2UuY2xlYXIoKTsKK30KKworU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLnNob3dS
ZXN1bHRzID0gZnVuY3Rpb24obWVzc2FnZSwgcHJvZ3Jlc3MpCit7CisgICAgaWYgKCF0aGlzLl9y
ZWNvcmRUYWJsZSB8fCAhdGhpcy5fcHJvZ3Jlc3NCYXIgfHwgIXRoaXMuX3N1aXRlIHx8ICF0aGlz
Ll90ZXN0KQorICAgICAgICByZXR1cm47CisKKyAgICB0aGlzLl9yZWNvcmRUYWJsZS5zaG93UmVj
b3JkKHRoaXMuX3N1aXRlLCB0aGlzLl90ZXN0LCB0aGlzLl9zYW1wbGVyLCBtZXNzYWdlKTsKKyAg
ICB0aGlzLl9wcm9ncmVzc0Jhci5zZXRQb3MocHJvZ3Jlc3MpOworfQpJbmRleDogUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy91dGlsaXRpZXMuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy91dGlsaXRp
ZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL3V0aWxpdGllcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3IEBACit3
aW5kb3cuYmVuY2htYXJrQ2xpZW50ID0KK3sKKyAgICBfcGFyc2U6IGZ1bmN0aW9uKHN0ciwgc2Vw
KQorICAgIHsKKyAgICAgICAgdmFyIG91dHB1dCA9IHt9OworICAgICAgICBzdHIuc3BsaXQoc2Vw
KS5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQpIHsKKyAgICAgICAgICAgIHZhciBpdGVtID0gcGFydC5z
cGxpdCgiPSIpOworICAgICAgICAgICAgdmFyIHZhbHVlID0gZGVjb2RlVVJJQ29tcG9uZW50KGl0
ZW1bMV0pOworICAgICAgICAgICAgaWYgKHZhbHVlWzBdID09ICInIiApCisgICAgICAgICAgICAg
ICAgb3V0cHV0W2l0ZW1bMF1dID0gdmFsdWUuc3Vic3RyKDEsIHZhbHVlLmxlbmd0aCAtIDIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG91dHB1dFtpdGVtWzBdXSA9IHZhbHVl
OyAgICAgICAgICAgICAgICAKKyAgICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIG91dHB1dDsK
KyAgICB9LAorICAgIAorICAgIHBhcnNlUGFyYW1ldGVyczogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyKDEp
LCAiJiIpOworICAgIH0sCisgICAgCisgICAgcGFyc2VBcmd1bWVudHM6IGZ1bmN0aW9uKHN0cikK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wYXJzZShzdHIsICIgIik7CisgICAgfSwKKyAg
ICAKKyAgICBleHRlbmRPYmplY3Q6IGZ1bmN0aW9uKG9iajEsIG9iajIpCisgICAgeworICAgICAg
ICBmb3IgKHZhciBhdHRybmFtZSBpbiBvYmoyKQorICAgICAgICAgICAgb2JqMVthdHRybmFtZV0g
PSBvYmoyW2F0dHJuYW1lXTsKKyAgICAgICAgcmV0dXJuIG9iajE7CisgICAgfSwKKyAgICAKKyAg
ICBjb3B5T2JqZWN0OiBmdW5jdGlvbihvYmopCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5l
eHRlbmRPYmplY3Qoe30sIG9iaik7CisgICAgfSwKKyAgICAKKyAgICBtZXJnZU9iamVjdHM6IGZ1
bmN0aW9uKG9iajEsIG9iajIpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5leHRlbmRPYmpl
Y3QodGhpcy5jb3B5T2JqZWN0KG9iajEpLCBvYmoyKTsKKyAgICB9LAorICAgIAorICAgIGNyZWF0
ZVN2Z0VsZW1lbnQ6IGZ1bmN0aW9uKG5hbWUsIGF0dHJzLCB4bGlua0F0dHJzLCBwYXJlbnQpCisg
ICAgeworICAgICAgICBjb25zdCBzdmdOYW1lc3BhY2UgPSAiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciOworICAgICAgICBjb25zdCB4bGlua05hbWVzcGFjZSA9ICJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIjsKKworICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUyhzdmdOYW1lc3BhY2UsIG5hbWUpOworICAgICAgICAKKyAgICAgICAgZm9yICh2YXIg
a2V5IGluIGF0dHJzKQorICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRy
c1trZXldKTsKKyAgICAgICAgICAgIAorICAgICAgICBmb3IgKHZhciBrZXkgaW4geGxpbmtBdHRy
cykKKyAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlTlMoeGxpbmtOYW1lc3BhY2UsIGtl
eSwgeGxpbmtBdHRyc1trZXldKTsKKyAgICAgICAgICAgIAorICAgICAgICBwYXJlbnQuYXBwZW5k
Q2hpbGQoZWxlbWVudCk7CisgICAgICAgIHJldHVybiBlbGVtZW50OworICAgIH0KK307CisKKy8v
IFRoaXMgZXZlbnQgbGlzdGVuZXIgcnVucyB0aGUgdGVzdCBpZiBpdCBpcyBsb2FkZWQgb3V0c2lk
ZSB0aGUgYmVuY2htYXJrIHJ1bm5lci4KK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwg
ZnVuY3Rpb24oKQoreworICAgIGlmICh3aW5kb3cuc2VsZiAhPT0gd2luZG93LnRvcCkKKyAgICAg
ICAgcmV0dXJuOworICAgIHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKG51bGwsIG51bGws
IDMwMDAwLCA1MCwgbnVsbCwgbnVsbCk7CisgICAgd2luZG93LmJlbmNobWFyay5zdGFydCgpOwor
fSk7CisKKy8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIHN1aXRlIGNvbnRyb2xs
ZXIgcnVuLWNhbGxiYWNrIHdoZW4gcnVubmluZyB0aGUgYmVuY2htYXJrIHJ1bm5lci4KK3dpbmRv
dy5ydW5CZW5jaG1hcmsgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFi
bGUsIHByb2dyZXNzQmFyKQoreworICAgIHZhciBtZXJnZU9wdGlvbnMgPSB3aW5kb3cuYmVuY2ht
YXJrQ2xpZW50Lm1lcmdlT2JqZWN0cyhvcHRpb25zLCB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LnBh
cnNlUGFyYW1ldGVycygpKTsKKyAgICB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZShzdWl0
ZSwgdGVzdCwgbWVyZ2VPcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIHJl
dHVybiB3aW5kb3cuYmVuY2htYXJrLnJ1bigpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5zdmcKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5zdmcJKHJl
dmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2Vz
L3lpbi15YW5nLnN2Zwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACis8c3ZnIHZlcnNp
b249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmlld0JveD0iMCAwIDIwMCAyMDAiPgorICA8
ZGVmcz4KKyAgICA8Y2xpcFBhdGggaWQ9ImxlZnQtaGFsZiI+CisgICAgICA8cmVjdCB3aWR0aD0i
MTAwIiBoZWlnaHQ9IjIwMCIvPgorICAgIDwvY2xpcFBhdGg+CisgICAgPGNsaXBQYXRoIGlkPSJy
aWdodC1oYWxmIj4KKyAgICAgIDxyZWN0IHg9IjEwMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIyMDAi
Lz4KKyAgICA8L2NsaXBQYXRoPgorICA8L2RlZnM+CisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjEw
MCIgcj0iOTgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iZ3JlZW4iIHN0cm9rZS13aWR0aD0iMiIvPgor
ICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSIxMDAiIHI9Ijk4IiBmaWxsPSJ3aGl0ZSIgY2xpcC1wYXRo
PSJ1cmwoI2xlZnQtaGFsZikiLz4KKyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iMTAwIiByPSI5OCIg
ZmlsbD0iZ3JlZW4iIGNsaXAtcGF0aD0idXJsKCNyaWdodC1oYWxmKSIvPgorICA8Y2lyY2xlIGN4
PSIxMDAiIGN5PSI1MCIgIHI9IjQ5IiBmaWxsPSJncmVlbiIvPgorICA8Y2lyY2xlIGN4PSIxMDAi
IGN5PSIxNDgiIHI9IjQ5IiBmaWxsPSJ3aGl0ZSIvPgorICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSI1
MCIgIHI9IjEwIiBmaWxsPSJ3aGl0ZSIvPiAgICAKKyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iMTQ4
IiByPSIxMCIgZmlsbD0iZ3JlZW4iLz4KKzwvc3ZnPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5wbmcKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3Qg
ZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGlt
YWdlL3BuZwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNl
cy95aW4teWFuZy5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5wbmcJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnBuZwkod29ya2luZyBj
b3B5KQoKUHJvcGVydHkgY2hhbmdlcyBvbjogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL3Jlc291cmNlcy95aW4teWFuZy5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlw
ZQojIyAtMCwwICsxICMjCitpbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQoKaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdRQUFBQmtDQVlBQUFCdzRwVlVBQUFBQkdkQlRV
RUFBTEdQQy94aEJRQUFBQ0JqU0ZKTgpBQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FB
QTZtQUFBRjNDY3VsRThBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZCkFBQUNCR2xVV0hSWVRV
dzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5
aVpUcHUKY3pwdFpYUmhMeUlnZURwNGJYQjBhejBpV0UxUUlFTnZjbVVnTlM0MExqQWlQZ29nSUNB
OGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOQpJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rr
dk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQZ29nSUNBZ0lDQThjbVJtCk9rUmxjMk55YVhC
MGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwbGVHbG1QU0pv
ZEhSd09pOHYKYm5NdVlXUnZZbVV1WTI5dEwyVjRhV1l2TVM0d0x5SUtJQ0FnSUNBZ0lDQWdJQ0Fn
ZUcxc2JuTTZkR2xtWmowaWFIUjBjRG92TDI1egpMbUZrYjJKbExtTnZiUzkwYVdabUx6RXVNQzhp
UGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBRYVhobGJGbEVhVzFsYm5OcGIyNCtNVEV3ClBDOWxlR2xt
T2xCcGVHVnNXVVJwYldWdWMybHZiajRLSUNBZ0lDQWdJQ0FnUEdWNGFXWTZVR2w0Wld4WVJHbHRa
VzV6YVc5dVBqRXcKTlR3dlpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lDQWdJ
RHgwYVdabU9rOXlhV1Z1ZEdGMGFXOXVQakU4TDNScApabVk2VDNKcFpXNTBZWFJwYjI0K0NpQWdJ
Q0FnSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ0lDQThMM0prWmpwU1JFWStDand2CmVEcDRi
WEJ0WlhSaFBnb1VuQTIrQUFBTldFbEVRVlI0QWUxZGZXd1UxUlkvdTZWQ1cwcXJpQ1FrVUNGUlFB
SklDQWhSb2NURVlnMEUKVkVUOEN4QVNFU0l4d2g4YUJUSEJxRFVHQSs4OURXRDR4dzlRaTBGalNF
U3RpWkZXcVJIQ3E2RFFCSk5YcW56SVI0cllVczQ3dnpNTQpIWWJkem03MzduenM5aVN6TTdzemV6
L09iKzQ5NTU1Nzd6a3hDamt4ODNncDRodzVwdEtwVThQbzJMRkIxTkpTUWlkT0ZOSzVjd1YwCjRR
SlJlM3RNcTNIRERVekZ4VVFEQm5UU29FRWROR1JJRzFWVW5LQ0JBMytYKzN2bCtEUVdpKzNYWjBQ
NllWVWtSSVVUQUdaS2NaYlQKb1VNVHFiNytGbXBzTEtDZmZ5YmFMM3hzYnlkaXRzNnBsRGtlSjRw
SkZRc0xpVzY3amVpdXU0anV2cnVUcGt6NWswYU4yaWRKL0ZzQQoycDFLVW5uMWpJQ3dsTnZhOXZQ
MjdlMjhhQkh6c0dITXc0Y3pQL2dnODczM01oY1hBd1l6UjBrSmMvLyt6QU1ITXMrYng1b244cFl5
CjVCWFQzWlVWQm95Ull3OS84a2s3ejUvUDNLY1BjM1UxODZaTnpGOTl4Yng0c1JrQXZJQXNLMk9P
eDVrZmVJQzV0clpkeXlSbGM1YzMKWjc5TGhlZnc4ZU5IZWQyNnk5b1NLaXVaMzNtSCtmUnB1U1ZV
VThOY1VPQVBHRzZ3eXN1dGxvT3lvWXhTMWx3R1lqWWZPZkkvWHJHQwpPUlpqZnVvcDVwOStVZ3ow
bzdXVmVkYXNZSUJ3QTFOVVpKVmp5UkxXTWpQUHpobGdoTmxEK2VUSkpuN21HZWErZlptZmY1NFp6
SGRTClF3UHppQkhoQU1NSkRsb3FEcnc4cUlQVUpkTEFTQVcyOElZTm5UeGdBUFBLbGRjREFWQysr
WWE1dERSOFlEaUJ3WXZVcng5TFhTNmgKVHBFRFJRbzlnK3ZyejZxR0JFSHQ3SnJrNWxWQ3l3ZzdH
RTVnb0FDTUhjdGFONmxqSklBUlptL2c5ZXN2cTJvSllaMk0wRzJGc1p0eQpBcERzdXJDUStaVlhM
cU91b1FWRkNsY2ltc2wvVlRDalZUUTNKNFBDK2owc0Fqd1owNzErUjJ1Wk5vMjF6bEwzVUFFakhK
N0FYMy9kCnBtcnMyclhkQTRHN1VHMjlLaHlWK3hoZ291N0NnMUNBSWdXcDRuZmY3VkFOYXZ0MnNM
dDdRc3NKYXB5UkxaQlJIL0JBZUJFb0tGS0EKaGZ6NjY1MXE1b0NBVG9YOEdvRm5pL25KMG9VNXBx
YW1FendKQkJUSmVEVy85TkpsdnZOT2IzbGhBM1h3WU81MFZZbUFnVnpCS0Y5NAo0eXNvZUFzVWpN
bVRFNDh0YkFEY1o0elNFMVVrbDM3ckFzV2ZsaUk4cnRKdUNpM0RQZUoyQStEOGZrbkdWRkVhYzJU
eWtnQVVxL3ZLCnJrd1IvazVRNFFYVHVKZGE2d1FEMXp0MjVIN3JjSUlJbWJKdEd3UjlkclF2U2Jo
RTFUdVlFVklWNEFEQ3Bsd1Y1azRRM05mUXZpeVYKMlB3NGhWdGFtblNja1lwcWE0UGdQRWQxVk81
bWNycmZNVTZSQWJOUklTOTgzYUFqOEZRR2ZVNFE3R3ZJbW5Rcmtzcnpqei9PL08yMwp6QmN2V2dl
dThWc3EvL1h6R1l6b1RabFpKS0VaYXB1Q09hU25CSXV1YVFhODhVYnkwdUNlNmZ3eVNROUMzcko5
Wlc2UVZNc21CRlM2ClF0ekpybTNiekRJSXJjQ0x3dFpTWUpCc2FEaWJVZGNsZGQ2aUp2VHVyTFpl
ak1GOTA3WXJkRTFlaEdjeWVhdXo4ZDl4NDFEcW5zMm4KeUIrSDZ1UlNKbDJWemJSMTY4d3lCekxE
aS9CTU5waWFTWnJvdWpCaDE1T1pSNTJ5eEV4ZnNza2xMNFk0Ny9jQzB2VnlZT2J4MUttbQpaRjJY
ckNTN25vU1hzMm45K3RHMGFCSFJCQVBqR3F3bU5Fa05EZDZwcGZLTWR5cm1ud0EwTDc0NFdubWNh
dXE2MGdJRHdIUk1JODRXCjRiN3VGZXBkTFFSZEhnYU1zZ0luSlR5RWwzTjBxUTVXaDVpaWZGZDcz
WElIZ0dDSlVTcnJ2bVJVMmF6cnBreTFEbVNiN3dORE55RDIKOTliV285MjJFbUhkR0xYbll4MlNh
Y3BYMDRuTmZQY1ppL0ZlZmhseko4bVhyY3JOUFdxdk1xRlp1UUhOUitPaUd3VDNkOWk1aE9mTwpW
bkt0bGxWYk80MUdqRENqV1RsendmVk03RExvcFdzNDBObEp0SFBuTk9kdlZ3RVJwSmJTamgyRnRH
Q0I4NzY1NjRjZUlpb3ROWmRlCkxxUjA1Z3pSbGkxaVUwbXdGVUwzWjJCTGdMMEtIWTNKTk9YREZL
NjdXL0w2RG8zcndvWDk5dnQxdFlYUTU1K1BwdnZ2SjdyeFJ2dWUKK2ZPVFQ1cFBNK29wOXU5UHl2
c3I5VkJBcENGVTArN2RoVlJkbmQzcWpSR0ZZdkhpN09ZUnRkVFBpZ0g0NDQvUmJYVXhYNzU4cHRy
Vgo0Y09tTzZucjA4dkZoWEplM1pMWGZVdmIrZ3p2a3RWbFlZTmxRUUhSN2Jkbi8vMGFQcHpvMVZl
em4wK1VjdmpuSDZMRGh5ZWl5QllnCjJPMDZkYXAvVlZpMWltaldMUC95QzN0TzJDa01ESVJrdDZQ
c0E4Zlc0MG1UL0MzMjVzMmtZeDUvY3cxbmJ1ZlBFMzMzbmFoYlBCNHQKWks3dUFSK1AvZmsrMHVE
QlJCOTgwRHMyc1ZuK3d3KzRtZ3RBcHRBdnZ4RGRjWWQ5eTcvejVNbEV1M2IxZ2dLT056ZmpjMHBj
M1ZWZwpDSTgzTmdpcXJDVGFJK1ljbUd6eW1UbzZpRTZmSGhaWDN5RVZGY0d5QWkzbCsrL3pXOUQz
NjBmQUlxNk9YSVlNQ1JZUTVJNFdpdTZyCnBvWlVCUSsrUlA2WFFKenF4TldyemkycWNmbGZnRVE1
UWlYKzdiZjhHOUZEYkp3OFdSaFhGMGRsWllsWUU5eHZHRHh1M1VwMDhDRFIKaWhYNUlmUWhRODZl
TFlpcnY2a1M4NHV6amFBSjI5ZkdqVVIvL1VVeU5XQzFtbHdWL3BjdUViRG9vODYvNEU4cXpBU3p6
cng1MW9GeQovdkVIcWFwKzdCaEpsNnNWb2JWcncxd0Q3N0toeXhKSGJIMjhud3poRTFBQTNHcjZt
alhYRnhTNmZWMGRpU1dicUxhV0NKVU9PY1VKCmJ2SFFmK1Vpb1h1RHVSL2RIYm85ZEgvb0JzTkk2
QVVFaTdqNktHeHJDMk1SelpZSjA4ZFFFS0FvUUdHQTRoQW02aU9kbGF6d2pLdkQKU016dDVoT2gx
VUMxaG9vZEZvSWNMeXZyakt2M1RnakdmQ04wRVJpRVlqRHFsa2RCOEFMbHVmbm1qcmk2VW0xcENh
SUk0Y2dUOHpJdwoyOEI4RXpTSlc5dTQrcldGK3BqUEJPRVBBMmRsWlhCY3VIaVJnRVZjblF5anVV
QzN6MmVDMEVmM0ZWUkxnUXk1NmFiZjQ0SkJQWTBlClRkVFVsTTl3V0hVSEtKZzBDMEttV0JhSXZR
QmtKMkcyRUo2amU4bWFsOEgwc3Q5a3RjeFA0K29MZmVMRVR2cnhSNytMRU43OElPajkKVkluUk11
KzVweE5Zb0lYSXhLSDRRdCs3Tjd3TUNxSmtXS3JrMStBUis2dUFnWkFGeUtoUmpXcm4rZlhYSUtv
ZXpqeWg2THp3Z2o5bAo2OXVYYU9SSUJBZTRBZ2pSditpKys0aSsvTktmQWtRbEY0em8vYkI5Z2Zj
U3FRRWYya0kwWk1QTW1SMzB4UmY0clplY0hNajJBbkZNCkRqN3lTSWNkTmlObTU0M3RDR0pMR1Vk
L1NsZVd6Ulh3ZG9aUk9XTVJHL2lSTGRNOXVzYno1dy9FaW90RjFlM3FzbUJwM0VRUFAwejAKMFVk
UllaVS81WVFHaE0xRzJhS3FLcUtpb2sxMjhwWlFsMi9TWkRiVC9Qa2RPakN5Ny9hZUxRNWthenRl
ZVRuUmtpWG9yaElQZkdSdAphZlkyZlY2L01TRTZ2eHc5ZXUzR2Y2L3RCYW5lOTl6MFNiU1NubmlD
WmQ5Yk5OckcrKzhUVFo5T2hFVm1PSENOMzB4VE5oWldGQlVKCnQxZktBRVI0M2gxbHhYRkFOdHJD
czg4bWYydHh6elNsK3Rhbjg1eVg0d0FBSmZVdzcxckROSFBlZXk4NUdEWkQ4SXhKc3RNMWNVN0gK
dFlhQ2d0QkVNdUZ1elBtTVNjWWdMZmd3OUdLTTVlZlFYTTVlK2FWelB4M25NMWRheVd3TlVZU29P
R0VrZUNyeVlnQ2VNVWxlK2FWNgpIK1Zhdmh3bFN5K3VsVG93Z3dlMGJMalp5SlJSVVFha0p3N00w
RXBrSnJHS3hMRzhid1kyelRURkQwVHM5S0pVbnZGS3cvUjltRWxlCmUrMnl6QXpLYUxBSEpDK3lH
U2VZbWJZSTkvK2pLdFF6Y1lKcDQyZkVUYXlib1NhK1IwM3ROZUVtRnFBSTcyYW9FMkFUM2tsTkFP
Rk0KQXkwRjJoUmtDZzVjbTFaMzdmeFNGZHFKbmpQcFNQa0tLSm01R3JjckZkVnpwcVlUU3dVM0c5
Rk5vNUVoaW5OUG5mRkhGUXlVZSt0VwpielU3VWN2QWI3Qlh0YmFhZGNaL3BaVlk0U293WUt5dmp6
SjcweTg3d253blkzaDN2Mk1BV0ZlSENHNGw0S0Z4a29TdGdDNjMzc3FNClpwd1BkTzVjejZMS1pU
dWdpNDJ1WUZDbDRYelNEWGtVVmZBMmJreS9kVUNJK3hIeXlBSEtRdlZlT21sU2VPMWRwbDZBTVdQ
U0F3UmcKV0pIYUZ0cjg4dVVzOVYydEdhT2w1R3IzbGE0dzd3Smp0UzhndURNUlVCWnEwNFJNeVRW
Qmo2aHlDSDdXbmRCMjNnczZzS1FOam9CUwpwZEhJb0gxOStLR3BqaUw0ZEZhdFNoME1hRk5XUkxh
ZTJhaHNacG82Qy9lczRNUVZGY3hyMWdUUHpFeExzR3RYNm1CZ25HR3B0aE5NCjhkTklPc0tERW8z
a2hyRGNNTE5FVmE2ZzNJTUhld01DZVlFUitQSGpUYWk3RVNabUl4RXAzQWExZlpXVU1HY2FLaW5U
TnozZC8yUE0KZ1hDeVR0bVE2RG9LQWU2ZDRBb2ZaaUFBbHI1QmFDMk5qZW15eHYvbkFVWmxaZmRn
b0ZYQWhJNjZTUjJkZFk3RXRSUjZpOFpjUWtXZQpmanE4WXhaMFU5MjFERmlTTWRQMzFsdWRxRk1r
bUorc2tGS0JvWWk1cEhQMDBNU2VleTVjd0VDQUo1TVowSjV3WUE0Y2RlaEpNSzlrCmpBbjZkNm5N
YkEybEJQL3ZzUmp6c21YQmRtVVlaeVJUYlJIYkE3SURVWEN3QWlmZEJRbEJNenVkL0tWeWM4UWMz
YXpCVEtBbVQ1L08KL1BiYmVBUGxsaytFRVhpaVFWOTV1V1V1UjZBVmxER1ZrRVRwVkQ3TXowcGx4
VWdrYTRscmE5djVzY2VZb2JsQUFZQXg3OUFoODhoQQphQ050dDIwSzhnM2RFdkpHV1ZDbTdxTGVo
Sm1wcHNvbURGaUtrQTBTYzcyZEVZa0hMUWZtbUFVTG1OOThFeUd3bWMrY2tjZlNKQWhyCnRBYk1a
NERwNklaS1M1bGg1c0NBN3RGSEVlZTlYZk5PRk1QRFZBWFRTT2ZxaHAwMC9wUFZSNFhsMVpMQk12
V0ZEdmZiKy9ZVjBJRUQKMWo1NmVGMkRCMVZzTXhzN2xtam9VR3kydHhaYTE5VVIvZjAzWEsyU09Q
WWtPbktFZFBNUlBDUmdVejRXVEdQcnNleDIxUTJXSTBjMgpTajcva2EwQW9kbzJGanBBM0dnTFFO
aFpORmVPS2ZCcnEyNXR4WHNuSEViQ1I2RzZLQlJQYlBvLzBlTFUzWlI0MVlFakYvWGpJdTRxCjRD
RkI3dGZMc1ZNQUNQV0cvUDhEUm5xL2FNNk44cTBBQUFBQVNVVk9SSzVDWUlJPQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262172</attachid>
            <date>2015-09-30 09:48:40 -0700</date>
            <delta_ts>2015-10-01 14:19:57 -0700</delta_ts>
            <desc>[bouncing-css-particles]</desc>
            <filename>bouncing-css-particles.patch</filename>
            <type>text/plain</type>
            <size>21042</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAzMzEpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5NCBAQAorMjAxNS0wOS0yOSAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IEluc3RlYWQgb2YgbWVhc3VyaW5nIHRoZSBGUFMgb2YgdGhlIGFuaW1hdGlvbiwgdGhpcyBiZW5j
aG1hcmsgbWVhc3VyZXMgdGhlCisgICAgICAgIHRlc3QgY29tcGxleGl0eSB3aGVuIHJlbmRlcmlu
ZyBhdCBhIHNldC1wb2ludCBGUFMgd2hpY2ggc2hvdWxkIGJlIGxvd2VyCisgICAgICAgIHRoYW4g
NjAgRlBTLiBUaGlzIGJlbmNobWFyayB0cmllcyB0byBzdGF5IGF0IHRoZSBzZXQtcG9pbnQgRlBT
IGJ5IHVzaW5nCisgICAgICAgIGEgY2xvc2VkIGxvb3AgY29udHJvbCBzeXN0ZW0gUElEIGZ1bmN0
aW9uLiBUaGUgZ2FpbiBvZiB0aGUgc3lzdGVtIGlzIHBhc3NlZAorICAgICAgICBhcyBhIHBhcmFt
ZXRlciB3aGVuIHJ1bm5pbmcgdGhlIHRlc3QuIE1lYXN1cmluZyB0aGUgRlBTIGZhaXRoZnVsbHkg
cmVzdWx0cworICAgICAgICB2ZXJ5IGZsdWN0dWF0aW5nIHZhbHVlcy4gQSBLYWxtYW4gZmlsdGVy
IGlzIHVzZWQgdG8gZ2l2ZSBhIGJldHRlciBlc3RpbWF0ZQorICAgICAgICBmb3IgdGhlIGN1cnJl
bnQgRlBTLgorCisgICAgICAgIFRoZSBhbmltYXRpb24gb2YgdGhlIHRlc3RzIGlzIGRvbmUgbWFu
dWFsbHkuIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGlzCisgICAgICAgIGNhbGxlZCB3aXRoIGEg
Y2FsbGJhY2suIEluc2lkZSB0aGlzIGNhbGxiYWNrLCB0aGUgdGVzdCBpcyBhbmltYXRpbmcgYnkK
KyAgICAgICAgY2hhbmdpbmcgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZWxlbWVudHMgaW5zaWRlIHRo
ZSBwYWdlLiBUaGUgdGVzdCBjb21wbGV4aXR5CisgICAgICAgIG1heSBjaGFuZ2UgYWxzbyBpZiB0
aGUgY3VycmVudCBGUFMgaXMgbm90IGVxdWFsIHRvIHRoZSBkZXNpcmVkIEZQUy4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgc3BsaXQgdG8gdGhlc2Ugc21hbGxlciBwYXRjaGVzOgor
ICAgICAgICBbc2hhcmVkXTogU2hhcmVkIG9iamVjdHMgdXNlZCBieSB0aGUgdGVzdHMgYW5kIHRo
ZSBydW5uZXIuCisgICAgICAgIFtiZW5jaG1hcmtdOiBNYW5hZ2luZyBhbmltYXRpbmcgYW5kIHR1
bmluZyB0aGUgdGVzdHMuCisgICAgICAgIFtzdGFnZV06IEJhc2Ugb2JqZWN0cyBmb3Igc3RhZ2Ut
YmFzZWQgdGVzdHMuCisgICAgICAgIFtib3VuY2luZy1jc3MtcGFydGljbGVzXTogRXhhbXBsZXMg
Zm9yIGFuaW1hdGluZyBIVE1MRWxlbWVudHMuCisgICAgICAgIFtib3VuY2luZy1jYW52YXMtcGFy
dGljbGVzXTogRXhhbXBsZXMgZm9yIGFuaW1hdGlvbnMgb24gYSBjYW52YXMuCisgICAgICAgIFti
b3VuY2luZy1zdmctcGFydGljbGVzXTogRXhhbXBsZXMgZm9yIGFuaW1hdGluZyBTVkdFbGVtZW50
cy4KKyAgICAgICAgW3RleHRdOiBBbiBleGFtcGxlIGZvciBhbmltYXRpbmcgdGV4dCBvbiBhIENT
UyBzdGFnZS4KKyAgICAgICAgW3RlbXBsYXRlXTogRW1wdHkgdGVtcGxhdGVzIGZvciBuZXcgdGVz
dHMuCisgICAgICAgIFtydW5uZXJdOiBUaGUgYmVuY2htYXJrIHRlc3QgaGFybmVzcy4KKworICAg
ICAgICBbYm91bmNpbmctY3NzLXBhcnRpY2xlc10KKyAgICAgICAgVGhpcyBwYXRjaCByZXByZXNl
bnRzIHRoZSBib3VuY2luZyBDU1MgcGFydGljbGVzIHRlc3RzLiBUaGVzZSB0ZXN0cyBydW4gb24K
KyAgICAgICAgQ1NTIHN0YWdlcy4gVGhlIHBhZ2VzIGFuZCB0aGUgc2NyaXB0cyBjYW4gYmUgdXNl
ZCBmb3IgcnVubmluZyBkaWZmZXJlbnQga2luZHMKKyAgICAgICAgb2YgdGVzdHMuIFRoaXMgaXMg
Y29udHJvbGxlZCBicCBwYXNzaW5nIHBhcmFtZXRlcnMgaW4gdGhlIHVybHMuCisKKyAgICAgICAg
KiBBbmltb21ldGVyOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzOiBBZGRlZC4K
KyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlczogQWRkZWQuCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzOiBB
ZGRlZC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2Jv
dW5jaW5nLWNzcy1pbWFnZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgQm91bmNpbmcgQ1NTIHBhcnRpY2xlcyB0ZXN0IHBhZ2VzLgorCisgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRp
Y2xlcy5qczogQWRkZWQuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlUm90YXRlcik6IE1hbmFn
ZXMgcm90YXRpbmcgYSBCb3VuY2luZ1BhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNs
ZVJvdGF0ZXIucHJvdG90eXBlLm5leHQpOiBNb3ZlcyB0aGUgdGltZSBieSB0aGUgYmVuY2htYXJr
J3MgY3VycmVudCB0aW1lRGF0YS4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVSb3RhdGVyLnBy
b3RvdHlwZS5kZWdyZWUpOiBSZXR1cm5zIHRoZSBjdXJyZW50IHJvdGF0aW5nIGRlZ3JlZS4KKyAg
ICAgICAgKEJvdW5jaW5nUGFydGljbGVSb3RhdGVyLnByb3RvdHlwZS5yb3RhdGVaKTogUmV0dXJu
cyBDU1MgZm9ybWF0dGVkIHRyYW5zZm9ybSByb3RhdGVaKCkgdmFsdWUuCisgICAgICAgIChCb3Vu
Y2luZ1BhcnRpY2xlUm90YXRlci5wcm90b3R5cGUucm90YXRlKTogUmV0dXJucyBTVkcgZm9ybWF0
dGVkIHRyYW5zZm9ybSByb3RhdGUoKSB2YWx1ZS4gICAgICAgIAorICAgICAgICAKKyAgICAgICAg
KEJvdW5jaW5nUGFydGljbGUpOiBCYXNlIGNsYXNzIGZvciBhIGJvdW5jaW5nIHBhcnRpY2xlLgor
ICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuY2VudGVyKTogUmV0dXJucyB0aGUg
Y2VudGVyIHBvaW50IG9yIHRoZSBwYXJ0aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGUu
cHJvdG90eXBlLmFuaW1hdGUpOiBNb3ZlcyB0aGUgcGFydGljbGUgYmFzZWQgb24gaXRzIGN1cnJl
bnQgcG9zaXRpb24sIGFuZ2xlIGFuZCB2ZWxvY2l0eS4KKyAgICAgICAgCisgICAgICAgIChCb3Vu
Y2luZ1BhcnRpY2xlc0FuaW1hdG9yKTogQSBzdWIgY2xhc3Mgb2YgQW5pbWF0b3IuCisgICAgICAg
IAorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZSk6IFJlcHJlc2VudHMgdGhlIGNvbnRh
aW5lciBvZiBhbGwgdGhlIGJvdW5jaW5nIHBhcnRpY2xlcy4KKyAgICAgICAgKEJvdW5jaW5nUGFy
dGljbGVzU3RhZ2UucHJvdG90eXBlLnBhcnNlU2hhcGVQYXJhbXRlcnMpOiBHZXRzIHRoZSBzaGFw
ZSBwYXJhbWV0ZXJzIGZvciBzaGFwZSBhbmltYXRpbmcgdGVzdHMuCisgICAgICAgIChCb3VuY2lu
Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5yYW5kb21Sb3RhdGVyKTogQ3JlYXRlcyBhIHJvdGF0
ZXIgZm9yIHRoZSBwYXJ0aWNsZXMuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnBy
b3RvdHlwZS5hbmltYXRlKTogQW5pbWF0ZXMgYWxsIHRoZSBwYXJ0aWNsZXMuCisgICAgICAgIChC
b3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS50dW5lKTogQ2hhbmdlcyB0aGUgdGVzdCBi
eSBhZGRpbmcgb3IgcmVtb3ZpbmcgcGFydGljbGVzLgorICAgICAgICAKKyAgICAgICAgKEJvdW5j
aW5nUGFydGljbGVzQmVuY2htYXJrKTogUnVucyB0aGUgYmVuY2htYXJrIGZvciBib3VuY2luZyBw
YXJ0aWNsZXMgdGVzdC4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3Rv
dHlwZS5jcmVhdGVBbmltYXRvcik6IENyZWF0ZXMgYW4gYW5pbWF0b3Igb2YgdHlwZSBCb3VuY2lu
Z1BhcnRpY2xlc0FuaW1hdG9yLgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1zaGFwZXMuanM6IEFkZGVkLgorICAg
ICAgICAoQm91bmNpbmdDc3NTaGFwZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUg
Zm9yIGFuaW1hdGluZyBDU1Mgc2hhcGVzLgorICAgICAgICAoQm91bmNpbmdDc3NTaGFwZS5wcm90
b3R5cGUuX2NyZWF0ZVNwYW4pOiBDcmVhdGVzIGEgPHNwYW4+IGVsZW1lbnQgYW5kIHRha2VzIHRo
ZSBzaGFwZSBhbmQgY2xpcHBpbmcgY2xhc3NlcyBpbnRvIGNvbnNpZGVyYXRpb24uCisgICAgICAg
IChCb3VuY2luZ0Nzc1NoYXBlLnByb3RvdHlwZS5fbW92ZSk6IE1vdmVzIHRoZSBwYXJ0aWNsZSB0
byBhIG5ldyBsb2NhdGlvbi4gQXBwbHkgdHJhbnNmb3JtIHNpbmNlIGl0IGRvZXMgbm90IHJlcXVp
cmUgbGF5b3V0LgorICAgICAgICAoQm91bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUuYW5pbWF0ZSk6
IFJvdGF0ZXMgYW5kIG1vdmVzIHRoZSBzaGFwZSB0byBhIG5ldyBsb2NhdGlvbi4KKyAgICAgICAg
CisgICAgICAgIChCb3VuY2luZ0Nzc1NoYXBlc1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNp
bmdQYXJ0aWNsZXNTdGFnZSBmb3IgYW5pbWF0aW5nIENTUyBzaGFwZXMuCisgICAgICAgIChCb3Vu
Y2luZ0Nzc1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBw
YXJ0aWNsZSBvZiB0eXBlIEJvdW5jaW5nQ3NzU2hhcGUuCisgICAgICAgIChCb3VuY2luZ0Nzc1No
YXBlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1vdmVzIHRoZSBj
b3JyZXNwb25kaW5nIGVsZW1lbnQgZm9ybSB0aGUgcGFyZW50IGNoaWxkcmVuIGxpc3QuCisgICAg
ICAgIAorICAgICAgICAoQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmspOiBBIHN1YiBjbGFzcyBv
ZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyayBmb3IgYW5pbWF0aW5nIENTUyBzaGFwZXMuCisg
ICAgICAgIChCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2Up
OiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ0Nzc1NoYXBlc1N0YWdlLgorICAgICAg
ICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJrIG9m
IHR5cGUgQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmsuCisKKyAgICAgICAgKiBBbmltb21ldGVy
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdlcy5q
czogQWRkZWQuCisgICAgICAgIChCb3VuY2luZ0Nzc0ltYWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91
bmNpbmdQYXJ0aWNsZSBmb3IgYW5pbWF0aW5nIENTUyBpbWFnZXMuCisgICAgICAgIChCb3VuY2lu
Z0Nzc0ltYWdlLnByb3RvdHlwZS5fbW92ZSk6IE1vdmUgdGhlIHBhcnRpY2xlIHRvIGEgbmV3IGxv
Y2F0aW9uLiBBcHBseSB0cmFuc2Zvcm0gc2luY2UgaXQgZG9lcyBub3QgcmVxdWlyZSBsYXlvdXQu
CisgICAgICAgIChCb3VuY2luZ0Nzc0ltYWdlLnByb3RvdHlwZS5hbmltYXRlKTogUm90YXRlcyBh
bmQgbW92ZXMgdGhlIHNoYXBlIHRvIGEgbmV3IGxvY2F0aW9uLgorICAgICAgICAKKyAgICAgICAg
KEJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xl
c1N0YWdlIGZvciBhbmltYXRpbmcgQ1NTIGltYWdlcy4KKyAgICAgICAgKEJvdW5jaW5nQ3NzSW1h
Z2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9m
IHR5cGUgQm91bmNpbmdDc3NJbWFnZS4KKyAgICAgICAgKEJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2Uu
cHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCk6IFJlbW92ZXMgdGhlIGNvcnJlc3BvbmRp
bmcgZWxlbWVudCBmb3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4gbGlzdC4KKyAgICAgICAgCisgICAg
ICAgIChCb3VuY2luZ0Nzc0ltYWdlc0JlbmNobWFyayk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5n
UGFydGljbGVzQmVuY2htYXJrIGZvciBhbmltYXRpbmcgQ1NTIGltYWdlcy4KKyAgICAgICAgKEJv
dW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMg
YSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UuCisgICAgICAgICh3aW5kb3cu
YmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBCb3Vu
Y2luZ0Nzc0ltYWdlc0JlbmNobWFyay4KKwogMjAxNS0wOC0yNyAgQ3NhYmEgT3N6dHJvZ29uw6Fj
ICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtFRkxdIFJFR1JFU1NJT04ocjE4ODc5Myk6
IEl0IG1hZGUgMjAwIGxheW91dCB0ZXN0cyBhbmQgQmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBw
ZXIuaHRtbCBwZXJmb3JtYW5jZSB0ZXN0IGZhaWwKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2lu
Zy1jc3MtaW1hZ2VzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgaW1nIHsKKyAg
ICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cisg
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3Vy
Y2VzL3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0
aG0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlz
dGljcy5qcyI+PC9zY3JpcHQ+ICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL21h
aW4uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwv
c2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3Jp
cHQ+ICAKKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1jc3MtaW1hZ2Vz
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9InN0YWdlIj48L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hh
cGVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgLmNpcmNsZSB7CisgICAgICAg
ICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAj
MDAwMDAwOworICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlIDUwJTsKKyAgICAgICAgfQor
ICAgICAgICAucmVjdCB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAg
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOworICAgICAgICB9CisgICAgICAgIC5zdGFy
IHsKKyAgICAgICAgICAgIC13ZWJraXQtY2xpcC1wYXRoOiBwb2x5Z29uKDUwJSAwJSwgMzglIDM4
JSwgMCUgMzglLCAzMCUgNjAlLCAxOCUgMTAwJSwgNTAlIDc1JSwgODIlIDEwMCUsIDcwJSA2MCUs
IDEwMCUgMzglLCA2MiUgMzglKTsKKyAgICAgICAgICAgIC1tcy1jbGlwLXBhdGg6IHBvbHlnb24o
NTAlIDAlLCAzOCUgMzglLCAwJSAzOCUsIDMwJSA2MCUsIDE4JSAxMDAlLCA1MCUgNzUlLCA4MiUg
MTAwJSwgNzAlIDYwJSwgMTAwJSAzOCUsIDYyJSAzOCUpOyAgCisgICAgICAgICAgICBjbGlwLXBh
dGg6IHBvbHlnb24oNTAlIDAlLCAzOCUgMzglLCAwJSAzOCUsIDMwJSA2MCUsIDE4JSAxMDAlLCA1
MCUgNzUlLCA4MiUgMTAwJSwgNzAlIDYwJSwgMTAwJSAzOCUsIDYyJSAzOCUpOworICAgICAgICB9
CisgICAgPC9zdHlsZT4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3Nz
IiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4gIAorICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3N0YWdlLmpzIj48L3NjcmlwdD4gIAorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNp
bmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Jv
dW5jaW5nLWNzcy1zaGFwZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRp
diBpZD0ic3RhZ2UiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNp
bmctY3NzLWltYWdlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3MtaW1hZ2Vz
LmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdlcy5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACitmdW5jdGlvbiBCb3VuY2luZ0Nzc0ltYWdlKHN0YWdl
KQoreworICAgIEJvdW5jaW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CisKKyAgICB0aGlz
LmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICB0aGlzLmVsZW1l
bnQuc3R5bGUud2lkdGggPSB0aGlzLl9zaXplLnggKyAicHgiOworICAgIHRoaXMuZWxlbWVudC5z
dHlsZS5oZWlnaHQgPSB0aGlzLl9zaXplLnkgKyAicHgiOworICAgIHRoaXMuZWxlbWVudC5zZXRB
dHRyaWJ1dGUoInNyYyIsIHN0YWdlLmltYWdlU3JjKTsKKyAgICAKKyAgICBzdGFnZS5lbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7CisgICAgdGhpcy5fbW92ZSgpOworfQorCitCb3Vu
Y2luZ0Nzc0ltYWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5w
cm90b3R5cGUpOworQm91bmNpbmdDc3NJbWFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3Vu
Y2luZ0Nzc0ltYWdlOworCitCb3VuY2luZ0Nzc0ltYWdlLnByb3RvdHlwZS5fbW92ZSA9IGZ1bmN0
aW9uKCkKK3sKKyAgICB0aGlzLmVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZSgi
ICsgdGhpcy5fcG9zaXRpb24ueCArICJweCwiICsgdGhpcy5fcG9zaXRpb24ueSArICJweCkgIiAr
IHRoaXMuX3JvdGF0ZXIucm90YXRlWigpOworfQorICAgIAorQm91bmNpbmdDc3NJbWFnZS5wcm90
b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAgICBCb3VuY2luZ1BhcnRp
Y2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlzLl9t
b3ZlKCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UoZWxlbWVudCwgb3B0
aW9ucykKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwg
b3B0aW9ucyk7CisgICAgdGhpcy5pbWFnZVNyYyA9IG9wdGlvbnNbImltYWdlU3JjIl0gfHwgIi4u
L3Jlc291cmNlcy95aW4teWFuZy5zdmciOworfQorCitCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlLnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUp
OworQm91bmNpbmdDc3NJbWFnZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2lu
Z0Nzc0ltYWdlc1N0YWdlOworCitCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVh
dGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ3NzSW1h
Z2UodGhpcyk7Cit9CisKK0JvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xl
V2lsbEJlUmVtb3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xlKQoreworICAgIGlmIChwYXJ0aWNsZS5l
bGVtZW50ICYmIHBhcnRpY2xlLmVsZW1lbnQucGFyZW50Tm9kZSAmJiBwYXJ0aWNsZS5lbGVtZW50
LnBhcmVudE5vZGUgPT0gdGhpcy5lbGVtZW50KQorICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3Zl
Q2hpbGQocGFydGljbGUuZWxlbWVudCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ3NzSW1hZ2Vz
QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
Cit7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdDc3NJ
bWFnZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xl
c0JlbmNobWFyay5wcm90b3R5cGUpOworQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcms7CisKK0JvdW5jaW5n
Q3NzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1l
bnQpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRo
aXMuX29wdGlvbnMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0
aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7Cisg
ICAgd2luZG93LmJlbmNobWFyayA9IG5ldyBCb3VuY2luZ0Nzc0ltYWdlc0JlbmNobWFyayhzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3Vy
Y2VzL2JvdW5jaW5nLWNzcy1zaGFwZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmct
Y3NzLXNoYXBlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1zaGFwZXMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MiBAQAorZnVuY3Rpb24gQm91bmNpbmdDc3NT
aGFwZShzdGFnZSkKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOwor
CisgICAgdGhpcy5lbGVtZW50ID0gdGhpcy5fY3JlYXRlU3BhbihzdGFnZSk7CisgICAgICAgIAor
ICAgIHN3aXRjaCAoc3RhZ2UuZmlsbCkgeworICAgIGNhc2UgInNvbGlkIjoKKyAgICBkZWZhdWx0
OgorICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gc3RhZ2UucmFu
ZG9tQ29sb3IoKTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgImdyYWRpZW50
IjoKKyAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmQgPSAibGluZWFyLWdyYWRp
ZW50KCIgKyBzdGFnZS5yYW5kb21Db2xvcigpICsgIiwgIiArIHN0YWdlLnJhbmRvbUNvbG9yKCkg
KyAiKSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHRoaXMuX21vdmUoKTsKK30KKwor
Qm91bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGlj
bGUucHJvdG90eXBlKTsKK0JvdW5jaW5nQ3NzU2hhcGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0g
Qm91bmNpbmdDc3NTaGFwZTsKKworQm91bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVNw
YW4gPSBmdW5jdGlvbihzdGFnZSkKK3sKKyAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNwYW4iKTsKKyAgICBzcGFuLmNsYXNzTmFtZSA9IHN0YWdlLnNoYXBlICsgIiAiICsg
c3RhZ2UuY2xpcDsKKyAgICBzcGFuLnN0eWxlLndpZHRoID0gdGhpcy5fc2l6ZS54ICsgInB4IjsK
KyAgICBzcGFuLnN0eWxlLmhlaWdodCA9IHRoaXMuX3NpemUueSArICJweCI7CisgICAgc3RhZ2Uu
ZWxlbWVudC5hcHBlbmRDaGlsZChzcGFuKTsKKyAgICByZXR1cm4gc3BhbjsKK30KKworQm91bmNp
bmdDc3NTaGFwZS5wcm90b3R5cGUuX21vdmUgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5lbGVt
ZW50LnN0eWxlLnRyYW5zZm9ybSA9ICJ0cmFuc2xhdGUoIiArIHRoaXMuX3Bvc2l0aW9uLnggKyAi
cHgsIiArIHRoaXMuX3Bvc2l0aW9uLnkgKyAicHgpIiArIHRoaXMuX3JvdGF0ZXIucm90YXRlWigp
OworfQorICAgIAorQm91bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9u
KHRpbWVEZWx0YSkKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNh
bGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlzLl9yb3RhdGVyLm5leHQodGltZURlbHRhKTsg
ICAgCisgICAgdGhpcy5fbW92ZSgpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0Nzc1NoYXBlc1N0
YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxs
KHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgIHRoaXMucGFyc2VTaGFwZVBhcmFtdGVycyhv
cHRpb25zKTsKK30KKworQm91bmNpbmdDc3NTaGFwZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3Qu
Y3JlYXRlKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nQ3NzU2hh
cGVzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDc3NTaGFwZXNTdGFnZTsK
KworQm91bmNpbmdDc3NTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5j
dGlvbigpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nzc1NoYXBlKHRoaXMpOworfQorCitC
b3VuY2luZ0Nzc1NoYXBlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQgPSBm
dW5jdGlvbihwYXJ0aWNsZSkKK3sKKyAgICBpZiAocGFydGljbGUuZWxlbWVudCAmJiBwYXJ0aWNs
ZS5lbGVtZW50LnBhcmVudE5vZGUgJiYgcGFydGljbGUuZWxlbWVudC5wYXJlbnROb2RlID09IHRo
aXMuZWxlbWVudCkKKyAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKHBhcnRpY2xlLmVs
ZW1lbnQpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyayhzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIEJvdW5jaW5n
UGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29y
ZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJrLnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90
eXBlKTsKK0JvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IEJvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJrOworCitCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFy
ay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQoreworICAgIHJldHVy
biBuZXcgQm91bmNpbmdDc3NTaGFwZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30K
Kword2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwg
b3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIHdpbmRvdy5iZW5jaG1h
cmsgPSBuZXcgQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0
aWNsZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzCShyZXZp
c2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTY2IEBACitmdW5jdGlvbiBCb3VuY2luZ1BhcnRpY2xlUm90YXRlcihyb3RhdGVJ
bnRlcnZhbCkKK3sKKyAgICB0aGlzLl90aW1lRGVsdGEgPSAwOworICAgIHRoaXMuX3JvdGF0ZUlu
dGVydmFsID0gcm90YXRlSW50ZXJ2YWw7Cit9CisKK0JvdW5jaW5nUGFydGljbGVSb3RhdGVyLnBy
b3RvdHlwZSA9Cit7CisgICAgbmV4dDogZnVuY3Rpb24odGltZURlbHRhKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fdGltZURlbHRhID0gKHRoaXMuX3RpbWVEZWx0YSArIHRpbWVEZWx0YSkgJSB0aGlz
Ll9yb3RhdGVJbnRlcnZhbDsKKyAgICB9LAorICAgIAorICAgIGRlZ3JlZTogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuICgzNjAgKiB0aGlzLl90aW1lRGVsdGEpIC8gdGhpcy5fcm90
YXRlSW50ZXJ2YWw7CisgICAgfSwKKyAgICAKKyAgICByb3RhdGVaOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICByZXR1cm4gInJvdGF0ZVooIiArIE1hdGguZmxvb3IodGhpcy5kZWdyZWUoKSkg
KyAiZGVnKSI7CisgICAgfSwKKyAgICAKKyAgICByb3RhdGU6IGZ1bmN0aW9uKGNlbnRlcikKKyAg
ICB7CisgICAgICAgIHJldHVybiAicm90YXRlKCIgKyBNYXRoLmZsb29yKHRoaXMuZGVncmVlKCkp
ICsgIiwgIiArIGNlbnRlci54ICsgIiwiICsgY2VudGVyLnkgKyAiKSI7CisgICAgfQorfQorCitm
dW5jdGlvbiBCb3VuY2luZ1BhcnRpY2xlKHN0YWdlKQoreworICAgIHRoaXMuX3N0YWdlU2l6ZSA9
IHN0YWdlLnNpemU7CisgICAgdGhpcy5fc2l6ZSA9IHN0YWdlLnBhcnRpY2xlU2l6ZTsKKyAgICAK
KyAgICB0aGlzLl9wb3NpdGlvbiA9IHN0YWdlLnJhbmRvbVBvc2l0aW9uKHN0YWdlLnNpemUuc3Vi
dHJhY3Qoc3RhZ2UucGFydGljbGVTaXplKSk7CisgICAgdGhpcy5fYW5nbGUgPSBzdGFnZS5yYW5k
b21BbmdsZSgpOworICAgIHRoaXMuX3ZlbG9jaXR5ID0gc3RhZ2UucmFuZG9tVmVsb2NpdHkoc3Rh
Z2UubWF4VmVsb2NpdHkpOworICAgIHRoaXMuX3JvdGF0ZXIgPSBzdGFnZS5yYW5kb21Sb3RhdGVy
KCk7Cit9CisKK0JvdW5jaW5nUGFydGljbGUucHJvdG90eXBlID0KK3sKKyAgICBnZXQgY2VudGVy
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlvbi5hZGQodGhpcy5fc2l6ZS5j
ZW50ZXIpOworICAgIH0sCisgICAgCisgICAgYW5pbWF0ZTogZnVuY3Rpb24odGltZURlbHRhKQor
ICAgIHsKKyAgICAgICAgdGhpcy5fcG9zaXRpb24gPSB0aGlzLl9wb3NpdGlvbi5tb3ZlKHRoaXMu
X2FuZ2xlLCB0aGlzLl92ZWxvY2l0eSwgdGltZURlbHRhKTsKKyAgICAgICAgdGhpcy5fcm90YXRl
ci5uZXh0KHRpbWVEZWx0YSk7CisKKyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8g
bW92ZSBvZmYgcmlnaHQgc2lkZQorICAgICAgICBpZiAodGhpcy5fcG9zaXRpb24ueCArIHRoaXMu
X3NpemUueCA+IHRoaXMuX3N0YWdlU2l6ZS54KSB7CisgICAgICAgICAgICAvLyBJZiBkaXJlY3Rp
b24gaXMgRWFzdC1Tb3V0aAorICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID49IDAgJiYgdGhp
cy5fYW5nbGUgPCBNYXRoLlBJIC8gMikKKyAgICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IE1h
dGguUEkgLSB0aGlzLl9hbmdsZTsKKyAgICAgICAgICAgIC8vIElmIGFuZ2xlIGlzIEVhc3QtTm9y
dGgKKyAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX2FuZ2xlID4gTWF0aC5QSSAvIDIgKiAzKQor
ICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0gdGhpcy5fYW5nbGUgLSAodGhpcy5fYW5nbGUg
LSBNYXRoLlBJIC8gMiAqIDMpICogMjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8g
SWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgbGVmdCBzaWRlCisgICAgICAgIGlmICh0
aGlzLl9wb3NpdGlvbi54IDwgMCkgeworICAgICAgICAgICAgLy8gSWYgYW5nbGUgaXMgV2VzdC1T
b3V0aAorICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID4gTWF0aC5QSSAvIDIgJiYgdGhpcy5f
YW5nbGUgPCBNYXRoLlBJKQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0gTWF0aC5QSSAt
IHRoaXMuX2FuZ2xlOworICAgICAgICAgICAgLy8gSWYgYW5nbGUgaXMgV2VzdC1Ob3J0aAorICAg
ICAgICAgICAgZWxzZSBpZiAodGhpcy5fYW5nbGUgPiBNYXRoLlBJICYmIHRoaXMuX2FuZ2xlIDwg
TWF0aC5QSSAvIDIgKiAzKQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0gdGhpcy5fYW5n
bGUgKyAoTWF0aC5QSSAvIDIgKiAzIC0gdGhpcy5fYW5nbGUpICogMjsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIElmIHBhcnRpY2xlIGlzIGdvaW5nIHRvIG1vdmUgb2ZmIGJvdHRvbSBzaWRlCisg
ICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbi55ICsgdGhpcy5fc2l6ZS55ID4gdGhpcy5fc3RhZ2VT
aXplLnkpIHsKKyAgICAgICAgICAgIC8vIElmIGRpcmVjdGlvbiBpcyBTb3V0aAorICAgICAgICAg
ICAgaWYgKHRoaXMuX2FuZ2xlID4gMCAmJiB0aGlzLl9hbmdsZSA8IE1hdGguUEkpCisgICAgICAg
ICAgICAgICAgdGhpcy5fYW5nbGUgPSBNYXRoLlBJICogMiAtIHRoaXMuX2FuZ2xlOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgdG9wIHNp
ZGUKKyAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uLnkgPCAwKSB7CisgICAgICAgICAgICAvLyBJ
ZiBkaXJlY3Rpb24gaXMgTm9ydGgKKyAgICAgICAgICAgIGlmICh0aGlzLl9hbmdsZSA+IE1hdGgu
UEkgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJICogMikKKyAgICAgICAgICAgICAgICB0aGlzLl9h
bmdsZSA9IHRoaXMuX2FuZ2xlIC0gKHRoaXMuX2FuZ2xlIC0gTWF0aC5QSSkgKiAyOworICAgICAg
ICB9CisgICAgfQorfQorCitmdW5jdGlvbiBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yKGJlbmNo
bWFyaykKK3sKKyAgICBTdGFnZUFuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrKTsKK307CisK
K0JvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFn
ZUFuaW1hdG9yLnByb3RvdHlwZSk7CitCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3I7CisKK2Z1bmN0aW9uIEJv
dW5jaW5nUGFydGljbGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBTdGFnZS5jYWxs
KHRoaXMsIGVsZW1lbnQpOworICAgIAorICAgIHRoaXMucGFydGljbGVTaXplID0gbmV3IFBvaW50
KHBhcnNlSW50KG9wdGlvbnNbInBhcnRpY2xlV2lkdGgiXSkgfHwgMTAsIHBhcnNlSW50KG9wdGlv
bnNbInBhcnRpY2xlSGVpZ2h0Il0pIHx8IDEwKTsKKyAgICB0aGlzLl9wYXJ0aWNsZXMgPSBbXTsK
KworICAgIHRoaXMubWF4VmVsb2NpdHkgPSBwYXJzZUludChvcHRpb25zWyJtYXhWZWxvY2l0eSJd
KSB8fCA1MDA7CisgICAgdGhpcy5tYXhWZWxvY2l0eSA9IE1hdGgubWF4KHRoaXMubWF4VmVsb2Np
dHksIDEwMCk7Cit9CisKK0JvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlOworCitCb3VuY2luZ1BhcnRp
Y2xlc1N0YWdlLnByb3RvdHlwZS5wYXJzZVNoYXBlUGFyYW10ZXJzID0gZnVuY3Rpb24ob3B0aW9u
cykKK3sKKyAgICB0aGlzLnNoYXBlID0gb3B0aW9uc1sic2hhcGUiXSB8fCAiY2lyY2xlIjsKKyAg
ICB0aGlzLmZpbGwgPSBvcHRpb25zWyJmaWxsIl0gfHwgInNvbGlkIjsKKyAgICB0aGlzLmNsaXAg
PSBvcHRpb25zWyJjbGlwIl0gfHwgIiI7Cit9CisKK0JvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJv
dG90eXBlLnJhbmRvbVJvdGF0ZXIgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIG5ldyBCb3Vu
Y2luZ1BhcnRpY2xlUm90YXRlcih0aGlzLnJhbmRvbSgxMDAwLCAxMDAwMCkpOworfQorICAgIAor
Qm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVE
ZWx0YSkKK3sKKyAgICB0aGlzLl9wYXJ0aWNsZXMuZm9yRWFjaChmdW5jdGlvbihwYXJ0aWNsZSkg
eworICAgICAgICBwYXJ0aWNsZS5hbmltYXRlKHRpbWVEZWx0YSk7CisgICAgfSk7Cit9CisgICAg
CitCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQp
Cit7CisgICAgY291bnQgPSBjb3VudCA+IDAgPyBNYXRoLmZsb29yKGNvdW50KSA6IE1hdGguY2Vp
bChjb3VudCk7CisKKyAgICBpZiAoY291bnQgPT0gMCkKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Bh
cnRpY2xlcy5sZW5ndGg7CisKKyAgICBpZiAoY291bnQgPiAwKSB7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHR5cGVvZih0aGlzLmNyZWF0ZVBhcnRpY2xlKSA9PSAiZnVuY3Rpb24iKTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgdGhpcy5fcGFy
dGljbGVzLnB1c2godGhpcy5jcmVhdGVQYXJ0aWNsZSgpKTsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X3BhcnRpY2xlcy5sZW5ndGg7CisgICAgfQorCisgICAgY291bnQgPSBNYXRoLm1pbigtY291bnQs
IHRoaXMuX3BhcnRpY2xlcy5sZW5ndGgpOworICAgICAgICAKKyAgICBpZiAodHlwZW9mKHRoaXMu
cGFydGljbGVXaWxsQmVSZW1vdmVkKSA9PSAiZnVuY3Rpb24iKSB7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgIHRoaXMucGFydGljbGVXaWxsQmVS
ZW1vdmVkKHRoaXMuX3BhcnRpY2xlc1t0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoIC0gMSAtIGldKTsK
KyAgICB9CisKKyAgICB0aGlzLl9wYXJ0aWNsZXMuc3BsaWNlKC1jb3VudCwgY291bnQpOworICAg
IHJldHVybiB0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoOworfQorCitmdW5jdGlvbiBCb3VuY2luZ1Bh
cnRpY2xlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dy
ZXNzQmFyKQoreworICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nUGFydGljbGVz
QmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VCZW5jaG1hcmsucHJvdG90
eXBlKTsKK0JvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrOworCitCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFy
ay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIG5l
dyBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yKHRoaXMpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262173</attachid>
            <date>2015-09-30 09:49:06 -0700</date>
            <delta_ts>2015-10-01 14:20:01 -0700</delta_ts>
            <desc>[bouncing-canvas-particles]</desc>
            <filename>bouncing-canvas-particles.patch</filename>
            <type>text/plain</type>
            <size>17668</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAzMzEpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5NCBAQAorMjAxNS0wOS0yOSAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IEluc3RlYWQgb2YgbWVhc3VyaW5nIHRoZSBGUFMgb2YgdGhlIGFuaW1hdGlvbiwgdGhpcyBiZW5j
aG1hcmsgbWVhc3VyZXMgdGhlCisgICAgICAgIHRlc3QgY29tcGxleGl0eSB3aGVuIHJlbmRlcmlu
ZyBhdCBhIHNldC1wb2ludCBGUFMgd2hpY2ggc2hvdWxkIGJlIGxvd2VyCisgICAgICAgIHRoYW4g
NjAgRlBTLiBUaGlzIGJlbmNobWFyayB0cmllcyB0byBzdGF5IGF0IHRoZSBzZXQtcG9pbnQgRlBT
IGJ5IHVzaW5nCisgICAgICAgIGEgY2xvc2VkIGxvb3AgY29udHJvbCBzeXN0ZW0gUElEIGZ1bmN0
aW9uLiBUaGUgZ2FpbiBvZiB0aGUgc3lzdGVtIGlzIHBhc3NlZAorICAgICAgICBhcyBhIHBhcmFt
ZXRlciB3aGVuIHJ1bm5pbmcgdGhlIHRlc3QuIE1lYXN1cmluZyB0aGUgRlBTIGZhaXRoZnVsbHkg
cmVzdWx0cworICAgICAgICB2ZXJ5IGZsdWN0dWF0aW5nIHZhbHVlcy4gQSBLYWxtYW4gZmlsdGVy
IGlzIHVzZWQgdG8gZ2l2ZSBhIGJldHRlciBlc3RpbWF0ZQorICAgICAgICBmb3IgdGhlIGN1cnJl
bnQgRlBTLgorCisgICAgICAgIFRoZSBhbmltYXRpb24gb2YgdGhlIHRlc3RzIGlzIGRvbmUgbWFu
dWFsbHkuIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGlzCisgICAgICAgIGNhbGxlZCB3aXRoIGEg
Y2FsbGJhY2suIEluc2lkZSB0aGlzIGNhbGxiYWNrLCB0aGUgdGVzdCBpcyBhbmltYXRpbmcgYnkK
KyAgICAgICAgY2hhbmdpbmcgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZWxlbWVudHMgaW5zaWRlIHRo
ZSBwYWdlLiBUaGUgdGVzdCBjb21wbGV4aXR5CisgICAgICAgIG1heSBjaGFuZ2UgYWxzbyBpZiB0
aGUgY3VycmVudCBGUFMgaXMgbm90IGVxdWFsIHRvIHRoZSBkZXNpcmVkIEZQUy4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgc3BsaXQgdG8gdGhlc2Ugc21hbGxlciBwYXRjaGVzOgor
ICAgICAgICBbc2hhcmVkXTogU2hhcmVkIG9iamVjdHMgdXNlZCBieSB0aGUgdGVzdHMgYW5kIHRo
ZSBydW5uZXIuCisgICAgICAgIFtiZW5jaG1hcmtdOiBNYW5hZ2luZyBhbmltYXRpbmcgYW5kIHR1
bmluZyB0aGUgdGVzdHMuCisgICAgICAgIFtzdGFnZV06IEJhc2Ugb2JqZWN0cyBmb3Igc3RhZ2Ut
YmFzZWQgdGVzdHMuCisgICAgICAgIFtib3VuY2luZy1jc3MtcGFydGljbGVzXTogRXhhbXBsZXMg
Zm9yIGFuaW1hdGluZyBIVE1MRWxlbWVudHMuCisgICAgICAgIFtib3VuY2luZy1jYW52YXMtcGFy
dGljbGVzXTogRXhhbXBsZXMgZm9yIGFuaW1hdGlvbnMgb24gYSBjYW52YXMuCisgICAgICAgIFti
b3VuY2luZy1zdmctcGFydGljbGVzXTogRXhhbXBsZXMgZm9yIGFuaW1hdGluZyBTVkdFbGVtZW50
cy4KKyAgICAgICAgW3RleHRdOiBBbiBleGFtcGxlIGZvciBhbmltYXRpbmcgdGV4dCBvbiBhIENT
UyBzdGFnZS4KKyAgICAgICAgW3RlbXBsYXRlXTogRW1wdHkgdGVtcGxhdGVzIGZvciBuZXcgdGVz
dHMuCisgICAgICAgIFtydW5uZXJdOiBUaGUgYmVuY2htYXJrIHRlc3QgaGFybmVzcy4KKworICAg
ICAgICBbYm91bmNpbmctY2FudmFzLXBhcnRpY2xlc10KKyAgICAgICAgVGhpcyBwYXRjaCByZXBy
ZXNlbnRzIHRoZSBib3VuY2luZyBjYW52YXMgcGFydGljbGVzIHRlc3RzLiBUaGVzZSB0ZXN0cyBy
dW4gb24KKyAgICAgICAgY2FudmFzIHN0YWdlcy4gVGhlIHBhZ2VzIGFuZCB0aGUgc2NyaXB0cyBj
YW4gYmUgdXNlZCBmb3IgcnVubmluZyBkaWZmZXJlbnQga2luZHMKKyAgICAgICAgb2YgdGVzdHMu
IFRoaXMgaXMgY29udHJvbGxlZCBicCBwYXNzaW5nIHBhcmFtZXRlcnMgaW4gdGhlIHVybHMuCisK
KyAgICAgICAgKiBBbmltb21ldGVyOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3Rz
OiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlczog
QWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVz
b3VyY2VzOiBBZGRlZC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgQm91bmNpbmcgY2FudmFzIHBhcnRpY2xlcyB0ZXN0IHBhZ2Vz
LgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3Vy
Y2VzL2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNp
bmdDYW52YXNQYXJ0aWNsZSk6IEEgYmFzZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZSBm
b3IgYW5pbWF0aW5nIGNhbnZhcyBwYXJ0aWNsZXMuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlLnByb3RvdHlwZS5fYXBwbHlSb3RhdGlvbik6IEFwcGx5IHRoZSBwYXJ0aWNsZSByb3Rh
dGlvbi1hcm91bmQtY2VudGVyIHRyYW5zZm9ybSB0byB0aGUgY2FudmFzIGNvbnRleHQuCisgICAg
ICAgIChCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZS5fYXBwbHlDbGlwcGluZyk6IEFw
cGx5IHRoZSBwYXJ0aWNsZSBjbGlwcGluZyB0byB0aGUgY2FudmFzIGNvbnRleHQuCisgICAgICAg
IChCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZS5fZHJhdyk6IEEgbm9uLWltcGxlbWVu
dGVkIHZlcnNpb24gb2YgdGhlIGRyYXdpbmcgZnVuY3Rpb24uCisgICAgICAgIChCb3VuY2luZ0Nh
bnZhc1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlKTogQ2FycmllcyBvdXQgYWxsIHRoZSBzdGVw
cyB0byByZWRyYXcgdGhlIGNhbnZhcyBwYXJ0aWNsZS4KKyAgICAgICAgCisgICAgICAgIChCb3Vu
Y2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdlKTogQSBiYXNlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1Bh
cnRpY2xlc1N0YWdlIGZvciBhbmltYXRpbmcgY2FudmFzIHBhcnRpY2xlcy4KKyAgICAgICAgCisg
ICAgICAgIChCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yKTogQSBjb25jcmV0ZSBzdWIt
Y2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvciBmb3IgYW5pbWF0aW5nIGNhbnZhcyBw
YXJ0aWNsZXMuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yLnByb3Rv
dHlwZS5hbmltYXRlKTogT3ZlcnJpZGVzIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB0byBjbGVhciB0
aGUgY2FudmFzIGJlZm9yZSByZWRyYXdpbmcgdGhlIHN0YWdlLgorICAgICAgICAKKyAgICAgICAg
KEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrKTogQSBiYXNlIHN1Yi1jbGFzcyBvZiBT
dGFnZUJlbmNobWFyayBmb3IgYW5pbWF0aW5nIGNhbnZhcyBwYXJ0aWNsZXMuCisgICAgICAgIChC
b3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3Ip
OiBDcmVhdGVzIHRoZSBjYW52YXMgcGFydGljbGVzIGFuaW1hdG9yLgorICAgICAgICAKKyAgICAg
ICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNp
bmctY2FudmFzLXNoYXBlcy5qczogQWRkZWQuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBl
KTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdDYW52YXNQYXJ0aWNsZSBmb3IgYW5p
bWF0aW5nIGNhbnZhcyBzaGFwZXMuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3Rv
dHlwZS5fYXBwbHlGaWxsKTogU2V0cyB0aGUgZmlsbFN0eWxlIGluIHRoZSBjYW52YXMgY29udGV4
dC4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLl9kcmF3U2hhcGUpOiBD
YXJyaWVzIG91dCB0aGUgYWN0dWFsIGRyYXdpbmcuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1No
YXBlLnByb3RvdHlwZS5fZHJhdyk6IENhcnJpZXMgb3V0IGFsbCB0aGUgc3RlcHMgdG8gZHJhdyB0
aGUgc2hhcGUuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZSk6
IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nQ2FudmFzUGFydGljbGUgZm9yIGFuaW1h
dGluZyBjYW52YXMgc2hhcGVzLgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS5w
cm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlwZSBCb3Vu
Y2luZ0NhbnZhc1NoYXBlLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVz
QmVuY2htYXJrKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdDYW52YXNQYXJ0aWNs
ZXNCZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBjYW52YXMgc2hhcGVzLgorICAgICAgICAoQm91bmNp
bmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBh
IHN0YWdlIG9mIHR5cGUgQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS4KKyAgICAgICAgKHdpbmRv
dy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJv
dW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrLgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanM6
IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZSk6IEEgY29uY3JldGUgc3ViLWNs
YXNzIG9mIEJvdW5jaW5nQ2FudmFzUGFydGljbGUgZm9yIGFuaW1hdGluZyBjYW52YXMgaW1hZ2Vz
LgorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZS5wcm90b3R5cGUuX2RyYXcpOiBEcmF3cyBh
biBpbWFnZSBvbiB0aGUgY29udGV4dCBvZiBhIGNhbnZhcy4KKyAgICAgICAgCisgICAgICAgIChC
b3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNp
bmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBjYW52YXMgaW1hZ2VzLgor
ICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGlj
bGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlwZSBCb3VuY2luZ0NhbnZhc0ltYWdlLgorICAg
ICAgICAKKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrKTogQSBjb25jcmV0
ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsgZm9yIGFuaW1h
dGluZyBjYW52YXMgaW1hZ2VzLgorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1h
cmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUgQm91bmNp
bmdDYW52YXNJbWFnZXNTdGFnZS4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3Jl
YXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVu
Y2htYXJrLgorCiAyMDE1LTA4LTI3ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW0VGTF0gUkVHUkVTU0lPTihyMTg4NzkzKTogSXQgbWFkZSAyMDAgbGF5
b3V0IHRlc3RzIGFuZCBCaW5kaW5ncy9ldmVudC10YXJnZXQtd3JhcHBlci5odG1sIHBlcmZvcm1h
bmNlIHRlc3QgZmFpbApJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9i
b3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1p
bWFnZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICBpbWcuaGlkZGVuIHsKKyAg
ICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgIHZpc2liaWxpdHk6IGhp
ZGRlbjsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+CisgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+ICAKKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+ICAKKyAgICA8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy9ib3VuY2luZy1jYW52YXMtcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGltZyBjbGFzcz0iaGlkZGVuIiBzcmM9Ii4uL3Jl
c291cmNlcy95aW4teWFuZy5zdmciPgorICAgIDxpbWcgY2xhc3M9ImhpZGRlbiIgc3JjPSIuLi9y
ZXNvdXJjZXMveWluLXlhbmcucG5nIj4KKyAgICA8Y2FudmFzIGlkPSJzdGFnZSI+PC9jYW52YXM+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2Fu
dmFzLXNoYXBlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9
InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKyAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4gIAorICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAorICAgIDxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4gIAorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKyAgICA8Y2FudmFzIGlkPSJzdGFnZSI+PC9jYW52YXM+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMJKHJldmlzaW9uIDApCisrKyBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDkgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzSW1hZ2Uoc3RhZ2UpCit7CisgICAgQm91bmNp
bmdDYW52YXNQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9pbWFnZUVsZW1l
bnQgPSBzdGFnZS5pbWFnZUVsZW1lbnQ7CisgICAgdGhpcy5fc2hhcGUgPSAiaW1hZ2UiOworfQor
CitCb3VuY2luZ0NhbnZhc0ltYWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdD
YW52YXNQYXJ0aWNsZS5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNJbWFnZS5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc0ltYWdlOworCitCb3VuY2luZ0NhbnZhc0ltYWdl
LnByb3RvdHlwZS5fZHJhdyA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9hcHBseVJvdGF0aW9u
KCk7CisgICAgdGhpcy5fY29udGV4dC5kcmF3SW1hZ2UodGhpcy5faW1hZ2VFbGVtZW50LCAwLCAw
LCB0aGlzLl9zaXplLngsIHRoaXMuX3NpemUueSk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ2Fu
dmFzSW1hZ2VzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisKKyAgICB2YXIgaW1h
Z2VTcmMgPSBvcHRpb25zWyJpbWFnZVNyYyJdIHx8ICJyZXNvdXJjZXMveWluLXlhbmcuc3ZnIjsK
KyAgICB0aGlzLmltYWdlRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5oaWRkZW5b
c3JjPVwiIiArIGltYWdlU3JjICsgIlwiXSIpOworfQorCitCb3VuY2luZ0NhbnZhc0ltYWdlc1N0
YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFn
ZS5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlOworCitCb3VuY2luZ0NhbnZhc0ltYWdl
c1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1
cm4gbmV3IEJvdW5jaW5nQ2FudmFzSW1hZ2UodGhpcyk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5n
Q2FudmFzSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwg
cHJvZ3Jlc3NCYXIpCit7CisgICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsuY2Fs
bCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsK
K30KKworQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZShCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOworQm91bmNp
bmdDYW52YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdD
YW52YXNJbWFnZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLnBy
b3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgcmV0dXJuIG5l
dyBCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQor
Cit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBv
cHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgd2luZG93LmJlbmNobWFy
ayA9IG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNh
bnZhcy1wYXJ0aWNsZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXBh
cnRpY2xlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNs
ZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDcgQEAKK2Z1bmN0aW9uIEJvdW5jaW5n
Q2FudmFzUGFydGljbGUoc3RhZ2UpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRoaXMs
IHN0YWdlKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gc3RhZ2UuY29udGV4dDsKKyAgICB0aGlzLl9z
aGFwZSA9ICIiOworICAgIHRoaXMuX2NsaXAgPSBzdGFnZS5jbGlwOworfQorCitCb3VuY2luZ0Nh
bnZhc1BhcnRpY2xlLmNsaXBzID0KK3sKKyAgICBzdGFyOgorICAgIFsKKyAgICAgICAgbmV3IFBv
aW50KDAuNTAsIDAuMDApLAorICAgICAgICBuZXcgUG9pbnQoMC4zOCwgMC4zOCksCisgICAgICAg
IG5ldyBQb2ludCgwLjAwLCAwLjM4KSwKKyAgICAgICAgbmV3IFBvaW50KDAuMzAsIDAuNjApLAor
ICAgICAgICBuZXcgUG9pbnQoMC4xOCwgMS4wMCksCisgICAgICAgIG5ldyBQb2ludCgwLjUwLCAw
Ljc1KSwKKyAgICAgICAgbmV3IFBvaW50KDAuODIsIDEuMDApLAorICAgICAgICBuZXcgUG9pbnQo
MC43MCwgMC42MCksCisgICAgICAgIG5ldyBQb2ludCgxLjAwLCAwLjM4KSwKKyAgICAgICAgbmV3
IFBvaW50KDAuNjIsIDAuMzgpCisgICAgXSwKK307CisKK0JvdW5jaW5nQ2FudmFzUGFydGljbGUu
cHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZSk7CitC
b3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2Fu
dmFzUGFydGljbGU7CisKK0JvdW5jaW5nQ2FudmFzUGFydGljbGUucHJvdG90eXBlLl9hcHBseVJv
dGF0aW9uID0gZnVuY3Rpb24oKQoreworICAgIGlmICh0aGlzLl9zaGFwZSA9PSAiY2lyY2xlIikK
KyAgICAgICAgcmV0dXJuOworCisgICAgdGhpcy5fY29udGV4dC50cmFuc2xhdGUodGhpcy5fc2l6
ZS54IC8gMiwgdGhpcy5fc2l6ZS55IC8gMik7CisgICAgdGhpcy5fY29udGV4dC5yb3RhdGUodGhp
cy5fcm90YXRlci5kZWdyZWUoKSAqIE1hdGguUEkgLyAxODApOworICAgIHRoaXMuX2NvbnRleHQu
dHJhbnNsYXRlKC10aGlzLl9zaXplLnggLyAyLCAtdGhpcy5fc2l6ZS55IC8gMik7Cit9CisKK0Jv
dW5jaW5nQ2FudmFzUGFydGljbGUucHJvdG90eXBlLl9hcHBseUNsaXBwaW5nID0gZnVuY3Rpb24o
KQoreworICAgIHZhciBjbGlwUG9pbnRzID0gQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5jbGlwc1t0
aGlzLl9jbGlwXTsKKyAgICBpZiAoIWNsaXBQb2ludHMpCisgICAgICAgIHJldHVybjsKKyAgICAg
ICAgCisgICAgdGhpcy5fY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICBjbGlwUG9pbnRzLmZvckVh
Y2goZnVuY3Rpb24ocG9pbnQsIGluZGV4KSB7CisgICAgICAgIHZhciBwb2ludCA9IHRoaXMuX3Np
emUubXVsdGlwbHkocG9pbnQpOworICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgdGhp
cy5fY29udGV4dC5tb3ZlVG8ocG9pbnQueCwgcG9pbnQueSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHRoaXMuX2NvbnRleHQubGluZVRvKHBvaW50LngsIHBvaW50LnkpOworICAgIH0sIHRo
aXMpOworCisgICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTsKKyAgICB0aGlzLl9jb250ZXh0
LmNsaXAoKTsKK30KKworQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5cGUuX2RyYXcgPSBm
dW5jdGlvbigpCit7CisgICAgdGhyb3cgIk5vdCBpbXBsZW1lbnRlZCI7Cit9CisKK0JvdW5jaW5n
Q2FudmFzUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCit7
CisgICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVE
ZWx0YSk7CisgICAgdGhpcy5fY29udGV4dC5zYXZlKCk7CisgICAgdGhpcy5fY29udGV4dC50cmFu
c2xhdGUodGhpcy5fcG9zaXRpb24ueCwgdGhpcy5fcG9zaXRpb24ueSk7CisgICAgdGhpcy5fZHJh
dygpOworICAgIHRoaXMuX2NvbnRleHQucmVzdG9yZSgpOworfQorCitmdW5jdGlvbiBCb3VuY2lu
Z0NhbnZhc1BhcnRpY2xlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7CisgICAgQm91bmNpbmdQ
YXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgIHRoaXMuY29u
dGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOworfQorCitCb3VuY2luZ0NhbnZh
c1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNs
ZXNTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnZS5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdlOworCitmdW5jdGlv
biBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yKGJlbmNobWFyaykKK3sKKyAgICBCb3Vu
Y2luZ1BhcnRpY2xlc0FuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrKTsKKyAgICB0aGlzLl9j
b250ZXh0ID0gYmVuY2htYXJrLl9zdGFnZS5jb250ZXh0OworfQorCitCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNs
ZXNBbmltYXRvci5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvci5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yOwor
CitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVu
Y3Rpb24oKQoreworICAgIHRoaXMuX2NvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuX2JlbmNo
bWFyay5fc3RhZ2Uuc2l6ZS54LCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUueSk7CisgICAg
cmV0dXJuIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0
aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsoc3Vp
dGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICBTdGFn
ZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwg
cHJvZ3Jlc3NCYXIpOworfQorCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7CitCb3VuY2lu
Z0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2lu
Z0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyazsKKworQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5j
aG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQoreworICAgIHJldHVy
biBuZXcgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvcih0aGlzKTsKK30KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanMJKHJldmlzaW9u
IDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsODggQEAKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzU2hhcGUoc3RhZ2UpCit7Cisg
ICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9m
aWxsID0gc3RhZ2UuZmlsbDsKKyAgICB0aGlzLl9zaGFwZSA9IHN0YWdlLnNoYXBlOworICAgIHRo
aXMuX2NvbG9yMCA9IHN0YWdlLnJhbmRvbUNvbG9yKCk7CisgICAgdGhpcy5fY29sb3IxID0gc3Rh
Z2UucmFuZG9tQ29sb3IoKTsgICAgCit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBl
ID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3Vu
Y2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzU2hh
cGU7CisKK0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLl9hcHBseUZpbGwgPSBmdW5jdGlv
bigpCit7CisgICAgc3dpdGNoICh0aGlzLl9maWxsKSB7CisgICAgY2FzZSAiZ3JhZGllbnQiOgor
ICAgICAgICB2YXIgZ3JhZGllbnQgPSB0aGlzLl9jb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50
KDAsIDAsIHRoaXMuX3NpemUud2lkdGgsIDApOworICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0
b3AoMCwgdGhpcy5fY29sb3IwKTsKKyAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDEsIHRo
aXMuX2NvbG9yMSk7IAorICAgICAgICB0aGlzLl9jb250ZXh0LmZpbGxTdHlsZSA9IGdyYWRpZW50
OworICAgICAgICBicmVhazsKKyAgICAKKyAgICBjYXNlICJzb2xpZCI6CisgICAgZGVmYXVsdDoK
KyAgICAgICAgdGhpcy5fY29udGV4dC5maWxsU3R5bGUgPSB0aGlzLl9jb2xvcjA7CisgICAgICAg
IGJyZWFrOworICAgIH0KK30KKworQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUuX2RyYXdT
aGFwZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgpOworCisg
ICAgc3dpdGNoICh0aGlzLl9zaGFwZSkgeworICAgIGNhc2UgInJlY3QiOgorICAgICAgICB0aGlz
Ll9jb250ZXh0LnJlY3QoMCwgMCwgdGhpcy5fc2l6ZS53aWR0aCwgdGhpcy5fc2l6ZS5oZWlnaHQp
OworICAgICAgICBicmVhazsKKyAgICAKKyAgICBjYXNlICJjaXJjbGUiOgorICAgIGRlZmF1bHQ6
CisgICAgICAgIHZhciBjZW50ZXIgPSB0aGlzLl9zaXplLmNlbnRlcjsKKyAgICAgICAgdmFyIHJh
ZGl1cyA9IE1hdGgubWluKHRoaXMuX3NpemUueCwgdGhpcy5fc2l6ZS55KSAvIDI7CisgICAgICAg
IHRoaXMuX2NvbnRleHQuYXJjKGNlbnRlci54LCBjZW50ZXIueSwgcmFkaXVzLCAwLCBNYXRoLlBJ
ICogMiwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHRoaXMuX2NvbnRleHQu
ZmlsbCgpOworfQorCitCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5fZHJhdyA9IGZ1bmN0
aW9uKCkKK3sKKyAgICB0aGlzLl9hcHBseUZpbGwoKTsKKyAgICB0aGlzLl9hcHBseVJvdGF0aW9u
KCk7CisgICAgdGhpcy5fYXBwbHlDbGlwcGluZygpOworICAgIHRoaXMuX2RyYXdTaGFwZSgpOwor
fQorCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMp
Cit7CisgICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQs
IG9wdGlvbnMpOworICAgIHRoaXMucGFyc2VTaGFwZVBhcmFtdGVycyhvcHRpb25zKTsKK30KKwor
Qm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5j
aW5nQ2FudmFzUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzU2hhcGVz
U3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZTsK
KworQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBm
dW5jdGlvbigpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc1NoYXBlKHRoaXMpOwor
fQorCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwg
b3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIEJvdW5jaW5nQ2FudmFz
UGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29y
ZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJr
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1h
cmsucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrOworCitCb3VuY2luZ0Nh
bnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVt
ZW50KQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZShlbGVtZW50
LCB0aGlzLl9vcHRpb25zKTsKK30KKword2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBm
dW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQor
eworICAgIHdpbmRvdy5iZW5jaG1hcmsgPSBuZXcgQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1h
cmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262174</attachid>
            <date>2015-09-30 09:49:26 -0700</date>
            <delta_ts>2015-10-01 14:20:05 -0700</delta_ts>
            <desc>[bouncing-svg-particles]</desc>
            <filename>bouncing-svg-particles.patch</filename>
            <type>text/plain</type>
            <size>17073</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAzMzEpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5NCBAQAorMjAxNS0wOS0yOSAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IEluc3RlYWQgb2YgbWVhc3VyaW5nIHRoZSBGUFMgb2YgdGhlIGFuaW1hdGlvbiwgdGhpcyBiZW5j
aG1hcmsgbWVhc3VyZXMgdGhlCisgICAgICAgIHRlc3QgY29tcGxleGl0eSB3aGVuIHJlbmRlcmlu
ZyBhdCBhIHNldC1wb2ludCBGUFMgd2hpY2ggc2hvdWxkIGJlIGxvd2VyCisgICAgICAgIHRoYW4g
NjAgRlBTLiBUaGlzIGJlbmNobWFyayB0cmllcyB0byBzdGF5IGF0IHRoZSBzZXQtcG9pbnQgRlBT
IGJ5IHVzaW5nCisgICAgICAgIGEgY2xvc2VkIGxvb3AgY29udHJvbCBzeXN0ZW0gUElEIGZ1bmN0
aW9uLiBUaGUgZ2FpbiBvZiB0aGUgc3lzdGVtIGlzIHBhc3NlZAorICAgICAgICBhcyBhIHBhcmFt
ZXRlciB3aGVuIHJ1bm5pbmcgdGhlIHRlc3QuIE1lYXN1cmluZyB0aGUgRlBTIGZhaXRoZnVsbHkg
cmVzdWx0cworICAgICAgICB2ZXJ5IGZsdWN0dWF0aW5nIHZhbHVlcy4gQSBLYWxtYW4gZmlsdGVy
IGlzIHVzZWQgdG8gZ2l2ZSBhIGJldHRlciBlc3RpbWF0ZQorICAgICAgICBmb3IgdGhlIGN1cnJl
bnQgRlBTLgorCisgICAgICAgIFRoZSBhbmltYXRpb24gb2YgdGhlIHRlc3RzIGlzIGRvbmUgbWFu
dWFsbHkuIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGlzCisgICAgICAgIGNhbGxlZCB3aXRoIGEg
Y2FsbGJhY2suIEluc2lkZSB0aGlzIGNhbGxiYWNrLCB0aGUgdGVzdCBpcyBhbmltYXRpbmcgYnkK
KyAgICAgICAgY2hhbmdpbmcgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZWxlbWVudHMgaW5zaWRlIHRo
ZSBwYWdlLiBUaGUgdGVzdCBjb21wbGV4aXR5CisgICAgICAgIG1heSBjaGFuZ2UgYWxzbyBpZiB0
aGUgY3VycmVudCBGUFMgaXMgbm90IGVxdWFsIHRvIHRoZSBkZXNpcmVkIEZQUy4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgc3BsaXQgdG8gdGhlc2Ugc21hbGxlciBwYXRjaGVzOgor
ICAgICAgICBbc2hhcmVkXTogU2hhcmVkIG9iamVjdHMgdXNlZCBieSB0aGUgdGVzdHMgYW5kIHRo
ZSBydW5uZXIuCisgICAgICAgIFtiZW5jaG1hcmtdOiBNYW5hZ2luZyBhbmltYXRpbmcgYW5kIHR1
bmluZyB0aGUgdGVzdHMuCisgICAgICAgIFtzdGFnZV06IEJhc2Ugb2JqZWN0cyBmb3Igc3RhZ2Ut
YmFzZWQgdGVzdHMuCisgICAgICAgIFtib3VuY2luZy1jc3MtcGFydGljbGVzXTogRXhhbXBsZXMg
Zm9yIGFuaW1hdGluZyBIVE1MRWxlbWVudHMuCisgICAgICAgIFtib3VuY2luZy1jYW52YXMtcGFy
dGljbGVzXTogRXhhbXBsZXMgZm9yIGFuaW1hdGlvbnMgb24gYSBjYW52YXMuCisgICAgICAgIFti
b3VuY2luZy1zdmctcGFydGljbGVzXTogRXhhbXBsZXMgZm9yIGFuaW1hdGluZyBTVkdFbGVtZW50
cy4KKyAgICAgICAgW3RleHRdOiBBbiBleGFtcGxlIGZvciBhbmltYXRpbmcgdGV4dCBvbiBhIENT
UyBzdGFnZS4KKyAgICAgICAgW3RlbXBsYXRlXTogRW1wdHkgdGVtcGxhdGVzIGZvciBuZXcgdGVz
dHMuCisgICAgICAgIFtydW5uZXJdOiBUaGUgYmVuY2htYXJrIHRlc3QgaGFybmVzcy4KKworICAg
ICAgICBbYm91bmNpbmctc3ZnLXBhcnRpY2xlc10KKyAgICAgICAgVGhpcyBwYXRjaCByZXByZXNl
bnRzIHRoZSBTVkcgYm91bmNpbmcgcGFydGljbGVzIHRlc3RzLiBUaGVzZSB0ZXN0cyBydW4gb24K
KyAgICAgICAgU1ZHIHN0YWdlcy4gVGhlIHBhZ2VzIGFuZCB0aGUgc2NyaXB0cyBjYW4gYmUgdXNl
ZCBmb3IgcnVubmluZyBkaWZmZXJlbnQga2luZHMKKyAgICAgICAgb2YgdGVzdHMuIFRoaXMgaXMg
Y29udHJvbGxlZCBicCBwYXNzaW5nIHBhcmFtZXRlcnMgaW4gdGhlIHVybHMuCisKKyAgICAgICAg
KiBBbmltb21ldGVyOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzOiBBZGRlZC4K
KyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlczogQWRkZWQuCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzOiBB
ZGRlZC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2Jv
dW5jaW5nLXN2Zy1pbWFnZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgQm91bmNpbmcgU1ZHIHBhcnRpY2xlcyB0ZXN0IHBhZ2VzLgorCisgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1w
YXJ0aWNsZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdTdmdQYXJ0aWNsZSk6IEEgYmFz
ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZSBmb3IgYW5pbWF0aW5nIFNWRyBwYXJ0aWNs
ZXMuCisgICAgICAgIChCb3VuY2luZ1N2Z1BhcnRpY2xlLnByb3RvdHlwZS5fYXBwbHlDbGlwcGlu
Zyk6IEFwcGx5IHRoZSBwYXJ0aWNsZSBjbGlwcGluZyBieSBzZXR0aW5nIHRoZSAnY2xpcC1wYXRo
JyBhdHRyaWJ1dGUgb2YgdGhlIFNWR0VsZW1lbnQuCisgICAgICAgIChCb3VuY2luZ1N2Z1BhcnRp
Y2xlLnByb3RvdHlwZS5fbW92ZSk6IE1vdmVzIHRoZSBwYXJ0aWNsZSB0byBhIG5ldyBsb2NhdGlv
bi4gQXBwbHkgdHJhbnNmb3JtIHNpbmNlIGl0IGRvZXMgbm90IHJlcXVpcmUgbGF5b3V0LgorICAg
ICAgICAoQm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZSk6IFJvdGF0ZXMgYW5k
IG1vdmVzIHRoZSBzaGFwZSB0byBhIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgKEJvdW5jaW5nU3Zn
UGFydGljbGVzU3RhZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlIGZv
ciBhbmltYXRpbmcgU1ZHRWxlbWVudHMuCisgICAgICAgIChCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0
YWdlLnByb3RvdHlwZS5fY3JlYXRlRGVmcyk6IENyZWF0ZXMgYW4gU1ZHRGVmc0VsZW1lbnQuCisg
ICAgICAgIChCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5fZW5zdXJlRGVmc0lz
Q3JlYXRlZCk6IEVuc3VyZXMgdGhlcmUgaXMgb25seSBvbmUgU1ZHRGVmc0VsZW1lbnQgaXMgY3Jl
YXRlZC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLl9jcmVh
dGVDbGlwU3Rhcik6IENyZWF0ZXMgYW4gU1ZHQ2xpcFBhdGhFbGVtZW50IGFuZCBzZXRzIGl0cyAn
ZCcgYXR0cmlidXRlIHRvIGEgc3RhciBsaWtlIHNoYXBlLgorICAgICAgICAoQm91bmNpbmdTdmdQ
YXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuZW5zdXJlQ2xpcFN0YXJJc0NyZWF0ZWQpOiBFbnN1cmUg
dGhlcmUgaXMgb25seSBvbmUgc3RhciBTVkdDbGlwUGF0aEVsZW1lbnQgaXMgY3JlYXRlZC4KKyAg
ICAgICAgKEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJl
UmVtb3ZlZCk6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGZvcm0gdGhlIHBhcmVu
dCBjaGlsZHJlbiBsaXN0LgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuanM6IEFkZGVkLgorICAgICAg
ICAoQm91bmNpbmdTdmdTaGFwZSk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nU1ZH
UGFydGljbGUgZm9yIGFuaW1hdGluZyBTVkcgc2hhcGVzLgorICAgICAgICAoQm91bmNpbmdTdmdT
aGFwZS5wcm90b3R5cGUuX2NyZWF0ZVNoYXBlKTogQ3JlYXRlcyBhbiBTVkcgc2hhcGUuCisgICAg
ICAgIChCb3VuY2luZ1N2Z1NoYXBlLnByb3RvdHlwZS5fYXBwbHlGaWxsKTogQXBwbGllcyB0aGUg
c2VsZWN0ZWQgZmlsbCBzdHlsZSB0byB0aGUgU1ZHIHNoYXBlLgorICAgICAgICAKKyAgICAgICAg
KEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBCb3VuY2lu
Z1N2Z1BhcnRpY2xlc1N0YWdlIGZvciBhbmltYXRpbmcgU1ZHIHNoYXBlcy4KKyAgICAgICAgKEJv
dW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZUdyYWRpZW50KTogQ3JlYXRlcyBh
biBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0
YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0aWNsZSBvZiB0eXBl
IEJvdW5jaW5nU3ZnU2hhcGUuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3Rv
dHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBFbnN1cmVzIHRoZSBhdHRhY2hlZCBTVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBTVkdEZWZzRWxlbWVudC4KKyAg
ICAgICAgCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyayk6IEEgY29uY3JldGUg
c3ViLWNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrIGZvciBhbmltYXRpbmcgU1ZH
IGltYWdlcy4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5j
cmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nU3ZnU2hhcGVzU3Rh
Z2UuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IHJlYXRlcyBhIGJl
bmNobWFyayBvZiB0eXBlIEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrLgorICAgICAgICAKKyAg
ICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91
bmNpbmctc3ZnLWltYWdlcy5qczogQWRkZWQuCisgICAgICAgIChCb3VuY2luZ1N2Z0ltYWdlKTog
QSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdTVkdQYXJ0aWNsZSBmb3IgYW5pbWF0aW5n
IFNWRyBpbWFnZXMuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZXNTdGFnZSk6
IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nU1ZHUGFydGljbGVzQmVuY2htYXJrIGZv
ciBhbmltYXRpbmcgU1ZHIGltYWdlcy4KKyAgICAgICAgKEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2Uu
cHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91
bmNpbmdTdmdJbWFnZS4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ1N2Z0ltYWdlc0JlbmNo
bWFyayk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJr
IGZvciBhbmltYXRpbmcgU1ZHIGltYWdlcy4KKyAgICAgICAgKEJvdW5jaW5nU3ZnSW1hZ2VzQmVu
Y2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJv
dW5jaW5nU3ZnSW1hZ2VzU3RhZ2UuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNy
ZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBCb3VuY2luZ1N2Z0ltYWdlc0JlbmNo
bWFyay4gCisKIDIwMTUtMDgtMjcgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBbRUZMXSBSRUdSRVNTSU9OKHIxODg3OTMpOiBJdCBtYWRlIDIwMCBsYXlv
dXQgdGVzdHMgYW5kIEJpbmRpbmdzL2V2ZW50LXRhcmdldC13cmFwcGVyLmh0bWwgcGVyZm9ybWFu
Y2UgdGVzdCBmYWlsCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5j
aW5nLXN2Zy1pbWFnZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVm
PSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4gIAorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+ICAgIAorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYmVu
Y2htYXJrLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdl
LmpzIj48L3NjcmlwdD4gIAorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFy
dGljbGVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5n
LXN2Zy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
Ym91bmNpbmctc3ZnLWltYWdlcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8
c3ZnIGlkPSJzdGFnZSI+PC9zdmc+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1z
aGFwZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbAkocmV2aXNpb24g
MCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bGluayByZWw9InN0eWxl
c2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+ICAKKyAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1zdmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHN2ZyBpZD0ic3RhZ2UiPjwvc3ZnPgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jl
c291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91
bmNpbmctc3ZnLWltYWdlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACitmdW5j
dGlvbiBCb3VuY2luZ1N2Z0ltYWdlKHN0YWdlKQoreworICAgIEJvdW5jaW5nU3ZnUGFydGljbGUu
Y2FsbCh0aGlzLCBzdGFnZSk7CisgICAgdGhpcy5fc2hhcGUgPSAiaW1hZ2UiOworICAgIAorICAg
IHZhciBhdHRycyA9IHsgJ3gnOiAwLCAneSc6IDAsICd3aWR0aCc6IHRoaXMuX3NpemUueCwgJ2hl
aWdodCc6IHRoaXMuX3NpemUueSB9OworICAgIHZhciB4bGlua0F0dHJzID0geyAnaHJlZic6IHN0
YWdlLmltYWdlU3JjIH07CisgICAgdGhpcy5lbGVtZW50ICA9IHdpbmRvdy5iZW5jaG1hcmtDbGll
bnQuY3JlYXRlU3ZnRWxlbWVudCgiaW1hZ2UiLCBhdHRycywgeGxpbmtBdHRycywgc3RhZ2UuZWxl
bWVudCk7CisgICAgdGhpcy5fbW92ZSgpOworfQorCitCb3VuY2luZ1N2Z0ltYWdlLnByb3RvdHlw
ZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5cGUpOworQm91bmNp
bmdTdmdJbWFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1N2Z0ltYWdlOworCitm
dW5jdGlvbiBCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7CisgICAg
Qm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAg
IHRoaXMuaW1hZ2VTcmMgPSBvcHRpb25zWyJpbWFnZVNyYyJdIHx8ICJyZXNvdXJjZXMveWluLXlh
bmcuc3ZnIjsKK30KKworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3Qu
Y3JlYXRlKEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nU3Zn
SW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdJbWFnZXNTdGFn
ZTsKKworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBm
dW5jdGlvbigpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z0ltYWdlKHRoaXMpOworfQor
CitmdW5jdGlvbiBCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIEJvdW5jaW5nUGFydGljbGVzQmVu
Y2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9n
cmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5j
aW5nU3ZnSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU3Zn
SW1hZ2VzQmVuY2htYXJrOworCitCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUu
Y3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQoreworICAgIHJldHVybiBuZXcgQm91bmNp
bmdTdmdJbWFnZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKword2luZG93LmJl
bmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIHdpbmRvdy5iZW5jaG1hcmsgPSBuZXcgQm91
bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxl
LCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctcGFydGljbGVzLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1wYXJ0aWNsZXMuanMJKHJldmlzaW9u
IDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctcGFydGljbGVzLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNzAgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnUGFydGljbGUoc3RhZ2UpCit7Cisg
ICAgQm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKK30KKworQm91bmNpbmdTdmdQ
YXJ0aWNsZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90
eXBlKTsKK0JvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNp
bmdQYXJ0aWNsZTsKKworQm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5cGUuX2FwcGx5Q2xpcHBp
bmcgPSBmdW5jdGlvbihzdGFnZSkKK3sKKyAgICBpZiAoc3RhZ2UuY2xpcCAhPSAic3RhciIpCisg
ICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgc3RhZ2UuZW5zdXJlQ2xpcFN0YXJJc0NyZWF0
ZWQoKTsKKyAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJjbGlwLXBhdGgiLCAidXJsKCNz
dGFyLWNsaXApIik7Cit9CisKK0JvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBlLl9tb3ZlID0g
ZnVuY3Rpb24oKQoreworICAgIHZhciB0cmFuc2Zvcm0gPSAidHJhbnNsYXRlKCIgKyB0aGlzLl9w
b3NpdGlvbi54ICsgIiwgIiArIHRoaXMuX3Bvc2l0aW9uLnkgKyAiKSI7CisgICAgaWYgKHRoaXMu
X3NoYXBlICE9ICJjaXJjbGUiKQorICAgICAgICB0cmFuc2Zvcm0gKz0gdGhpcy5fcm90YXRlci5y
b3RhdGUodGhpcy5fc2l6ZS5jZW50ZXIpOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUo
InRyYW5zZm9ybSIsIHRyYW5zZm9ybSk7Cit9CisKK0JvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90
eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCit7CisgICAgQm91bmNpbmdQYXJ0aWNs
ZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7CisgICAgdGhpcy5fbW92
ZSgpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlKGVsZW1lbnQsIG9w
dGlvbnMpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQs
IG9wdGlvbnMpOworfQorCitCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdT
dmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1N2Z1BhcnRp
Y2xlc1N0YWdlOworCitCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5fY3JlYXRl
RGVmcyA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gd2luZG93LmJlbmNobWFya0NsaWVudC5j
cmVhdGVTdmdFbGVtZW50KCJkZWZzIiwge30sIHt9LCB0aGlzLmVsZW1lbnQpOworfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CitCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5fZW5zdXJlRGVmc0lzQ3JlYXRl
ZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gdGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3Io
ImRlZnMiKSB8fCB0aGlzLl9jcmVhdGVEZWZzKCk7Cit9CisKK0JvdW5jaW5nU3ZnUGFydGljbGVz
U3RhZ2UucHJvdG90eXBlLl9jcmVhdGVDbGlwU3RhciA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIg
YXR0cnMgPSB7ICdpZCc6ICJzdGFyLWNsaXAiLCAnY2xpcFBhdGhVbml0cyc6ICJvYmplY3RCb3Vu
ZGluZ0JveCIgfTsKKyAgICB2YXIgY2xpcFBhdGggID0gd2luZG93LmJlbmNobWFya0NsaWVudC5j
cmVhdGVTdmdFbGVtZW50KCJjbGlwUGF0aCIsIGF0dHJzLCB7fSwgdGhpcy5fZW5zdXJlRGVmc0lz
Q3JlYXRlZCgpKTsKKworICAgIGF0dHJzID0geyAnZCc6ICJNLjUwLDBMLjM4LC4zOEwwLC4zOEwu
MzAsLjYwTC4xOCwxTC41MCwuNzVMLjgyLDFMLjcwLC42MEwxLC4zOEwuNjIsLjM4eiIgfTsKKyAg
ICB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZVN2Z0VsZW1lbnQoInBhdGgiLCBhdHRycywg
e30sIGNsaXBQYXRoKTsKKworICAgIHJldHVybiBjbGlwUGF0aDsKK30KKworQm91bmNpbmdTdmdQ
YXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuZW5zdXJlQ2xpcFN0YXJJc0NyZWF0ZWQgPSBmdW5jdGlv
bigpCit7CisgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKCIjc3Rhci1jbGlw
IikgfHwgdGhpcy5fY3JlYXRlQ2xpcFN0YXIoKTsKK30KKworQm91bmNpbmdTdmdQYXJ0aWNsZXNT
dGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkID0gZnVuY3Rpb24ocGFydGljbGUp
Cit7CisgICAgaWYgKHBhcnRpY2xlLmVsZW1lbnQgJiYgcGFydGljbGUuZWxlbWVudC5wYXJlbnRO
b2RlICYmIHBhcnRpY2xlLmVsZW1lbnQucGFyZW50Tm9kZSA9PSB0aGlzLmVsZW1lbnQpCisgICAg
ICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZChwYXJ0aWNsZS5lbGVtZW50KTsKK30KSW5kZXg6
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVz
b3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNp
bmctc3ZnLXNoYXBlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFw
ZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQgQEAKK2Z1bmN0aW9uIEJvdW5jaW5n
U3ZnU2hhcGUoc3RhZ2UpCit7CisgICAgQm91bmNpbmdTdmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0
YWdlKTsKKyAgICB0aGlzLl9zaGFwZSA9IHN0YWdlLnNoYXBlOworICAgIHRoaXMuX2ZpbGwgPSBz
dGFnZS5maWxsOworICAgIAorICAgIHRoaXMuX2NyZWF0ZVNoYXBlKHN0YWdlKTsKKyAgICB0aGlz
Ll9hcHBseUNsaXBwaW5nKHN0YWdlKTsKKyAgICB0aGlzLl9hcHBseUZpbGwoc3RhZ2UpOworCisg
ICAgdGhpcy5fbW92ZSgpOyAgICAKK30KKworQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKEJvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBlKTsKK0JvdW5jaW5nU3Zn
U2hhcGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdTaGFwZTsKKworQm91bmNp
bmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVNoYXBlID0gZnVuY3Rpb24oc3RhZ2UpCit7Cisg
ICAgc3dpdGNoICh0aGlzLl9zaGFwZSkgeworICAgIGNhc2UgInJlY3QiOgorICAgICAgICB2YXIg
YXR0cnMgPSB7ICd4JzogMCwgJ3knOiAwLCAnd2lkdGgnOiB0aGlzLl9zaXplLngsICdoZWlnaHQn
OiB0aGlzLl9zaXplLnkgfTsKKyAgICAgICAgdGhpcy5lbGVtZW50ID0gd2luZG93LmJlbmNobWFy
a0NsaWVudC5jcmVhdGVTdmdFbGVtZW50KCJyZWN0IiwgYXR0cnMsIHt9LCBzdGFnZS5lbGVtZW50
KTsKKyAgICAgICAgYnJlYWs7CisgICAgCisgICAgY2FzZSAiY2lyY2xlIjoKKyAgICBkZWZhdWx0
OgorICAgICAgICB2YXIgYXR0cnMgPSB7ICdjeCc6IHRoaXMuX3NpemUueCAvIDIsICdjeSc6IHRo
aXMuX3NpemUueSAvIDIsICdyJzogTWF0aC5taW4odGhpcy5fc2l6ZS54LCB0aGlzLl9zaXplLnkp
IC8gMiB9OworICAgICAgICB0aGlzLmVsZW1lbnQgPSB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNy
ZWF0ZVN2Z0VsZW1lbnQoImNpcmNsZSIsIGF0dHJzLCB7fSwgc3RhZ2UuZWxlbWVudCk7CisgICAg
ICAgIGJyZWFrOyAgICAgICAgCisgICAgfQorfQorCitCb3VuY2luZ1N2Z1NoYXBlLnByb3RvdHlw
ZS5fYXBwbHlGaWxsID0gZnVuY3Rpb24oc3RhZ2UpCit7CisgICAgc3dpdGNoICh0aGlzLl9maWxs
KSB7CisgICAgY2FzZSAiZ3JhZGllbnQiOgorICAgICAgICB2YXIgZ3JhZGllbnQgPSBzdGFnZS5j
cmVhdGVHcmFkaWVudCgyKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiZmls
bCIsICJ1cmwoIyIgKyBncmFkaWVudC5nZXRBdHRyaWJ1dGUoImlkIikgKyAiKSIpOworICAgICAg
ICBicmVhazsKKyAgICAKKyAgICBjYXNlICJzb2xpZCI6CisgICAgZGVmYXVsdDoKKyAgICAgICAg
dGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiZmlsbCIsIHN0YWdlLnJhbmRvbUNvbG9yKCkpOwor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnU2hhcGVzU3Rh
Z2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLmNh
bGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5wYXJzZVNoYXBlUGFyYW10ZXJz
KG9wdGlvbnMpOworICAgIHRoaXMuX2dyYWRpZW50c0NvdW50ID0gMDsKK30KKworQm91bmNpbmdT
dmdTaGFwZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nU3ZnUGFydGlj
bGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNv
bnN0cnVjdG9yID0gQm91bmNpbmdTdmdTaGFwZXNTdGFnZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorQm91bmNpbmdTdmdT
aGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlR3JhZGllbnQgPSBmdW5jdGlvbihzdG9wcykKK3sK
KyAgICB2YXIgYXR0cnMgPSB7ICdpZCc6ICJnYWRpZW50LSIgKyArK3RoaXMuX2dyYWRpZW50c0Nv
dW50IH07CisgICAgdmFyIGdyYWRpZW50ICA9IHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRl
U3ZnRWxlbWVudCgibGluZWFyR3JhZGllbnQiLCBhdHRycywge30sIHRoaXMuX2Vuc3VyZURlZnNJ
c0NyZWF0ZWQoKSk7ICAgIAorICAgIAorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RvcHM7ICsr
aSkgeworICAgICAgICB2YXIgYXR0cnMgPSB7ICdvZmZzZXQnOiBpICogMTAwIC8gc3RvcHMgKyAi
JSIsICdzdG9wLWNvbG9yJzogdGhpcy5yYW5kb21Db2xvcigpIH07CisgICAgICAgIHdpbmRvdy5i
ZW5jaG1hcmtDbGllbnQuY3JlYXRlU3ZnRWxlbWVudCgic3RvcCIsIGF0dHJzLCB7fSwgZ3JhZGll
bnQpOworICAgIH0KKworICAgIHJldHVybiBncmFkaWVudDsKK30KKworQm91bmNpbmdTdmdTaGFw
ZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpCit7CisgICAgcmV0
dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBlKHRoaXMpOworfQorCitCb3VuY2luZ1N2Z1NoYXBlc1N0
YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQgPSBmdW5jdGlvbihwYXJ0aWNsZSkK
K3sKKyAgICBCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxC
ZVJlbW92ZWQuY2FsbCh0aGlzLCBwYXJ0aWNsZSk7CisKKyAgICB2YXIgZmlsbCA9IHBhcnRpY2xl
LmVsZW1lbnQuZ2V0QXR0cmlidXRlKCJmaWxsIik7CisgICAgaWYgKGZpbGwuaW5kZXhPZigidXJs
KCMiKSAhPSAwKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIHZhciBncmFkaWVudCA9
IHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKGZpbGwuc3Vic3RyaW5nKDQsIGZpbGwubGVuZ3Ro
IC0gMSkpOworICAgIHRoaXMuX2Vuc3VyZURlZnNJc0NyZWF0ZWQoKS5yZW1vdmVDaGlsZChncmFk
aWVudCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgQm91bmNpbmdQ
YXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3Jk
VGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5
cGUpOworQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0g
Qm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJr
LnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgcmV0dXJu
IG5ldyBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQor
Cit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBv
cHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgd2luZG93LmJlbmNobWFy
ayA9IG5ldyBCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262175</attachid>
            <date>2015-09-30 09:49:59 -0700</date>
            <delta_ts>2015-10-01 14:20:09 -0700</delta_ts>
            <desc>[text]</desc>
            <filename>text.patch</filename>
            <type>text/plain</type>
            <size>17389</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAzMzEpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5NCBAQAorMjAxNS0wOS0yOSAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IEluc3RlYWQgb2YgbWVhc3VyaW5nIHRoZSBGUFMgb2YgdGhlIGFuaW1hdGlvbiwgdGhpcyBiZW5j
aG1hcmsgbWVhc3VyZXMgdGhlCisgICAgICAgIHRlc3QgY29tcGxleGl0eSB3aGVuIHJlbmRlcmlu
ZyBhdCBhIHNldC1wb2ludCBGUFMgd2hpY2ggc2hvdWxkIGJlIGxvd2VyCisgICAgICAgIHRoYW4g
NjAgRlBTLiBUaGlzIGJlbmNobWFyayB0cmllcyB0byBzdGF5IGF0IHRoZSBzZXQtcG9pbnQgRlBT
IGJ5IHVzaW5nCisgICAgICAgIGEgY2xvc2VkIGxvb3AgY29udHJvbCBzeXN0ZW0gUElEIGZ1bmN0
aW9uLiBUaGUgZ2FpbiBvZiB0aGUgc3lzdGVtIGlzIHBhc3NlZAorICAgICAgICBhcyBhIHBhcmFt
ZXRlciB3aGVuIHJ1bm5pbmcgdGhlIHRlc3QuIE1lYXN1cmluZyB0aGUgRlBTIGZhaXRoZnVsbHkg
cmVzdWx0cworICAgICAgICB2ZXJ5IGZsdWN0dWF0aW5nIHZhbHVlcy4gQSBLYWxtYW4gZmlsdGVy
IGlzIHVzZWQgdG8gZ2l2ZSBhIGJldHRlciBlc3RpbWF0ZQorICAgICAgICBmb3IgdGhlIGN1cnJl
bnQgRlBTLgorCisgICAgICAgIFRoZSBhbmltYXRpb24gb2YgdGhlIHRlc3RzIGlzIGRvbmUgbWFu
dWFsbHkuIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGlzCisgICAgICAgIGNhbGxlZCB3aXRoIGEg
Y2FsbGJhY2suIEluc2lkZSB0aGlzIGNhbGxiYWNrLCB0aGUgdGVzdCBpcyBhbmltYXRpbmcgYnkK
KyAgICAgICAgY2hhbmdpbmcgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZWxlbWVudHMgaW5zaWRlIHRo
ZSBwYWdlLiBUaGUgdGVzdCBjb21wbGV4aXR5CisgICAgICAgIG1heSBjaGFuZ2UgYWxzbyBpZiB0
aGUgY3VycmVudCBGUFMgaXMgbm90IGVxdWFsIHRvIHRoZSBkZXNpcmVkIEZQUy4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgc3BsaXQgdG8gdGhlc2Ugc21hbGxlciBwYXRjaGVzOgor
ICAgICAgICBbc2hhcmVkXTogU2hhcmVkIG9iamVjdHMgdXNlZCBieSB0aGUgdGVzdHMgYW5kIHRo
ZSBydW5uZXIuCisgICAgICAgIFtiZW5jaG1hcmtdOiBNYW5hZ2luZyBhbmltYXRpbmcgYW5kIHR1
bmluZyB0aGUgdGVzdHMuCisgICAgICAgIFtzdGFnZV06IEJhc2Ugb2JqZWN0cyBmb3Igc3RhZ2Ut
YmFzZWQgdGVzdHMuCisgICAgICAgIFtib3VuY2luZy1jc3MtcGFydGljbGVzXTogRXhhbXBsZXMg
Zm9yIGFuaW1hdGluZyBIVE1MRWxlbWVudHMuCisgICAgICAgIFtib3VuY2luZy1jYW52YXMtcGFy
dGljbGVzXTogRXhhbXBsZXMgZm9yIGFuaW1hdGlvbnMgb24gYSBjYW52YXMuCisgICAgICAgIFti
b3VuY2luZy1zdmctcGFydGljbGVzXTogRXhhbXBsZXMgZm9yIGFuaW1hdGluZyBTVkdFbGVtZW50
cy4KKyAgICAgICAgW3RleHRdOiBBbiBleGFtcGxlIGZvciBhbmltYXRpbmcgdGV4dCBvbiBhIENT
UyBzdGFnZS4KKyAgICAgICAgW3RlbXBsYXRlXTogRW1wdHkgdGVtcGxhdGVzIGZvciBuZXcgdGVz
dHMuCisgICAgICAgIFtydW5uZXJdOiBUaGUgYmVuY2htYXJrIHRlc3QgaGFybmVzcy4KKworICAg
ICAgICBbdGV4dF0KKyAgICAgICAgVGhpcyBwYXRjaCByZXByZXNlbnRzIHRoZSB0ZXh0IGFuaW1h
dGluZyB0ZXN0cyB3aGljaCBydW5zIG9ubHkgb24gQ1NTIHN0YWdlLgorCisgICAgICAgICogQW5p
bW9tZXRlcjogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0czogQWRkZWQuCisgICAg
ICAgICogQW5pbW9tZXRlci90ZXN0cy90ZXh0OiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVy
L3Rlc3RzL3RleHQvcmVzb3VyY2VzOiBBZGRlZC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVz
dHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0bWw6IEFkZGVkLgorICAgICAgICBUZXh0IHRlc3QgcGFn
ZS4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmct
dGV4dC5qczogQWRkZWQuCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZSk6IFJlcHJlc2VudHMg
dGhlIGNvbnRhaW5lciBvZiBhbGwgdGhlIHN0YWNrZWQgdGV4dCBsYXllcnMuCisgICAgICAgIChM
YXllcmluZ1RleHRTdGFnZS5wYXJzZVRleHRJdGVtKTogUGFyc2VzIGEgdGV4dEl0ZW0gd2hpY2gg
bWF5IGJlIGFuIG9wZW5pbmcgdGFnLCBhIGNsb3NpbmcgdGFnIG9yIGEgc2VsZi1jbG9zaW5nIHRh
Zy4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmlzT3BlbmluZ1RleHRJdGVtKTogUmV0dXJu
cyB0cnVlIGlmIHRoZSB0ZXh0SXRlbSBpcyBhbiBvcGVuaW5nIHRhZyBlLmcuICc8b2w+Jy4KKyAg
ICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmlzQ2xvc2luZ1RleHRJdGVtKTogUmV0dXJucyB0cnVl
IGlmICB0aGUgdGV4dEl0ZW0gaXMgYW4gY2xvc2luZyB0YWcgZS5nLiAnPC9vbD4uCisgICAgICAg
IChMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFncy5MYXllcmluZ1RleHRTdGFnZS50ZXh0
SXRlbXMubWFwKTogQ2FsY3VsYXRlcyBhbmQgc3RvcmVzIGlzT3BlbmluZyBhbmQgaXNDbG9zaW5n
IGZsYWdzIGZvciBlYWNoIHRleHRJdGVtLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXND
b2xvcmFibGVUZXh0SXRlbSk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgdGV4dEl0ZW0gaXMgc2VsZi1j
bG9zaW5nIHRhZyBlLmcuICc8cD4uLi48L3A+Jy4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdl
LmlzSW5zZXJ0YWJsZVRleHRJdGVtKTogUmV0dXJucyB0cnVlIGlmIHRoZSB0ZXh0SXRlbXMgY2F1
c2VzIGEgbmV3IGVsZW1lbnQgdG8gYmUgYWRkZWQgdG8gdGhlIHRleHQgbGF5ZXJzLgorICAgICAg
ICAoTGF5ZXJpbmdUZXh0U3RhZ2UuY29sb3JhYmxlVGV4dEl0ZW1zLkxheWVyaW5nVGV4dFN0YWdl
LnRleHRJdGVtc0ZsYWdzLmZpbHRlcik6IE51bWJlciBvZiBjb2xvcmFibGUgdGV4dEl0ZW1zLgor
ICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuaW5zZXJ0YWJsZVRleHRJdGVtcy5MYXllcmluZ1Rl
eHRTdGFnZS50ZXh0SXRlbXNGbGFncy5maWx0ZXIpOiBOdW1iZXIgb2YgaW5zZXJ0YWJsZSB0ZXh0
SXRlbXMuCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5jb2xvckluZGV4VG9UZXh0RWxlbWVu
dEluZGV4KTogTWFwcyBmcm9tIGNvbG9ySW5kZXggWzAuLmNvbG9yYWJsZVRleHRJdGVtcy0xXSB0
byB0ZXh0RWxlbWVudEluZGV4IFswLi5pbnNlcnRhYmxlVGV4dEl0ZW1zLTFdLgorICAgICAgICAo
TGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9uZXh0VGV4dEl0ZW0pOiBNb3ZlcyB0aGUgX3Rl
eHRJdGVtSW5kZXggb25lIHN0ZXAgZm9yd2FyZCBpbiBhIGxvb3AgWzAuLkxheWVyaW5nVGV4dFN0
YWdlLnRleHRJdGVtcy5sZW5ndGgtMV0uCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5wcm90
b3R5cGUuX3ByZXZpb3VzVGV4dEl0ZW0pOiBNb3ZlcyB0aGUgX3RleHRJdGVtSW5kZXggb25lIHN0
ZXAgYmFja3dhcmQgaW4gYSBsb29wLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90
eXBlLl9wdXNoVGV4dEVsZW1lbnQpOiBDcmVhdGVzIGEgbmV3IHRleHRJdGVtRWxlbWVudCBhbmQg
YWRkcyBpdCB0byB0aGUgdG9wbW9zdCBjb250YWluZXIgPGRpdj4uCisgICAgICAgIChMYXllcmlu
Z1RleHRTdGFnZS5wcm90b3R5cGUuX3BvcFRleHRFbGVtZW50KTogUmVtb3ZlcyB0aGUgbGFzdCB0
ZXh0SXRlbUVsZW1lbnQgZnJvbSB0aGUgdG9wbW9zdCBjb250YWluZXIgPGRpdj4uCisgICAgICAg
IChMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX2NvbG9yVGV4dEl0ZW0pOiBDaGFuZ2VzIHRo
ZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGEgc2luZ2xlIGNvbG9yYWJsZSB0ZXh0RWxlbWVudC4gVGhl
IGluZGV4IGFkdmFuY2VzIGluIGEgY2lyY2xlIFswLi5jb2xvcmFibGVUZXh0SXRlbXMtMV0uCisg
ICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IENoYW5nZXMgdGhl
IGJhY2tncm91bmQgY29sb3IgYW5kIHRoZSB0ZXh0IGNvbG9yIG9mIHRoZSB0ZXh0RWxlbWVudHMg
c3VjaCB0aGF0IGEgcmVkcmF3IGlzIGVuZm9yY2VkLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3Rh
Z2UucHJvdG90eXBlLnR1bmUpOiBBZGRzIG9yIHJlbW92ZXMgdGV4dEVsZW1lbnRzIHRvIHRoZSBz
dGFnZS4KKworICAgICAgICAoTGF5ZXJpbmdUZXh0QmVuY2htYXJrKTogUnVucyB0aGUgYmVuY2ht
YXJrIGZvciB0aGUgbGF5ZXJpbmcgdGV4dCB0ZXN0LgorICAgICAgICAoTGF5ZXJpbmdUZXh0QmVu
Y2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIExh
eWVyaW5nVGV4dFN0YWdlLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUp
OiBDcmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5cGUgTGF5ZXJpbmdUZXh0QmVuY2htYXJrLgorCiAy
MDE1LTA4LTI3ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW0VGTF0gUkVHUkVTU0lPTihyMTg4NzkzKTogSXQgbWFkZSAyMDAgbGF5b3V0IHRlc3RzIGFu
ZCBCaW5kaW5ncy9ldmVudC10YXJnZXQtd3JhcHBlci5odG1sIHBlcmZvcm1hbmNlIHRlc3QgZmFp
bApJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmct
dGV4dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAg
PHN0eWxlPgorICAgICAgICAudGV4dC1sYXllciB7CisgICAgICAgICAgICBmb250LXNpemU6IDEx
LjVweDsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgIGxlZnQ6
IDBweDsKKyAgICAgICAgICAgIHRvcDogMHB4OworICAgICAgICAgICAgcGFkZGluZzogNXB4Owor
ICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgICAgIH0KKyAg
ICA8L3N0eWxlPiAgCisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIg
aHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+ICAKKyAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91
dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9z
dGFnZS5qcyI+PC9zY3JpcHQ+ICAKKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xheWVyaW5n
LXRleHQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0ic3RhZ2Ui
PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5n
LXRleHQuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDIzNSBAQAorZnVuY3Rpb24gTGF5ZXJpbmdUZXh0U3RhZ2UoZWxlbWVudCwgb3B0aW9ucykK
K3sKKyAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgIHRoaXMuX3Rl
eHRFbGVtZW50UGFyZW50ID0gdGhpcy5lbGVtZW50OworICAgIHRoaXMuX3RleHRFbGVtZW50cyA9
IFtdOworICAgIHRoaXMuX3RleHRJdGVtSW5kZXggPSAwOworICAgIHRoaXMuX2NvbG9ySW5kZXgg
PSAwOworICAgIHRoaXMuX2FuaW1hdGVDb3VudHMgPSAwOworfQorCitMYXllcmluZ1RleHRTdGFn
ZS50ZXh0SXRlbXMgPQorWworICAgICI8ZGl2IGlkPSdpZF8wMCcgY2xhc3M9J3RleHQtbGF5ZXIn
PiIsCisgICAgICAgICI8aDIgaWQ9J2lkXzAxJz5DdXN0b21pemVkIHN0eWxlczwvaDI+IiwKKyAg
ICAgICAgIjxwIGlkPSdpZF8wMic+SWYgeW91IHdhbnQgZm9ybWF0dGluZyBjaG9pY2VzIHRoYXQg
YXJlIG5vdCBhdmFpbGFibGUgZnJvbSB0aGUgYnVpbHQtaW4gc3R5bGVzLCBRdWljayBTdHlsZSBz
ZXRzLCBhbmQgdGhlbWVzLCB5b3UgY2FuIGNyZWF0ZSBjdXN0b20gc3R5bGVzIHRvIHN1aXQgeW91
ciBuZWVkcy48L3A+IiwKKyAgICAgICAgIjxwIGlkPSdpZF8wMyc+VGhlIGVhc2llc3Qgd2F5IHRv
IGNyZWF0ZSBhIGN1c3RvbSBzdHlsZSBpcyB0byBtb2RpZnkgYSBidWlsdC1pbiBzdHlsZSBhbmQg
dGhlbiBzYXZlIGl0IGFzIGEgbmV3IHN0eWxlLjwvcD4iLAorICAgICAgICAiPHAgaWQ9J2lkXzA0
Jz5Gb3IgZXhhbXBsZSwgeW91IG1pZ2h0IHdhbnQgdG8gZm9ybWF0IGEgcGFyYWdyYXBoIG9mIHF1
b3RlZCBtYXRlcmlhbCB3aXRoIGEgaGFsZi1pbmNoIGluZGVudCBmcm9tIHRoZSBsZWZ0IGFuZCBy
aWdodCBtYXJnaW5zLCBzaW5nbGUgc3BhY2VkLiBUaGVyZSBpcyBubyBidWlsdC1pbiBzdHlsZSB0
byBhY2NvbW1vZGF0ZSB0aGlzLCBidXQgeW91IGNhbiBjcmVhdGUgYSBjdXN0b20gc3R5bGUgYnkg
ZG9pbmcgdGhlIGZvbGxvd2luZzo8L3A+IiwKKyAgICAgICAgIjxvbCB0eXBlPScxJyBpZD0naWRf
MDUnPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8wNic+PHA+Q2xpY2sgaW4gdGhlIHBhcmFn
cmFwaCB5b3Ugd2FudCB0byBmb3JtYXQuPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9
J2lkXzA3Jz48cD5PbiB0aGUgPGI+SG9tZTwvYj4gdGFiLCBjbGljayB0aGUgPGI+UGFyYWdyYXBo
PC9iPiBEaWFsb2cgQm94IExhdW5jaGVyLjwvcD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlk
PSdpZF8wOCc+PHA+SW4gdGhlIDxiPkluZGVudGF0aW9uPC9iPiBzZWN0aW9uLCB0eXBlIDxiIGNs
YXNzPSdvY3BMaXRlcmFsJz4wLjUnPC9iPiBpbiB0aGUgPGI+TGVmdDwvYj4gYW5kIDxiPlJpZ2h0
PC9iPiBib3hlcy48L3A+PC9saT4iLAorICAgICAgICAgICAgIjxsaSBpZD0naWRfMDknPjxwPklu
IHRoZSA8Yj5TcGFjaW5nPC9iPiBzZWN0aW9uLCBpbiB0aGUgPGI+TGluZSBzcGFjaW5nPC9iPiBs
aXN0LCBjbGljayA8Yj5TaW5nbGU8L2I+LjwvcD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlk
PSdpZF8xMCc+PHA+Q2xpY2sgPGI+T0s8L2I+LjwvcD48L2xpPiIsCisgICAgICAgICAgICAiPGxp
IGlkPSdpZF8xMSc+PHA+UmlnaHQtY2xpY2sgaW4gdGhlIHBhcmFncmFwaCwgcG9pbnQgdG8gPGI+
U3R5bGVzPC9iPiwgYW5kIHRoZW4gY2xpY2sgPGI+U2F2ZSBTZWxlY3Rpb24gYXMgYSBOZXcgUXVp
Y2sgU3R5bGU8L2I+LjwvcD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8xMic+PHA+
SW4gdGhlIDxiPk5hbWU8L2I+IGJveCwgdHlwZSBhIG5hbWUgZm9yIHRoZSBzdHlsZSwgc3VjaCBh
cyA8Yj5CbG9jayBxdW90ZTwvYj4uIDwvcD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdp
ZF8xMyc+PHA+SWYgeW91IHdhbnQgdGhlIHN0eWxlIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBnYWxs
ZXJ5IG9mIHN0eWxlcyBvbiB0aGUgPGI+SG9tZTwvYj4gdGFiLCBhbmQgaWYgeW91IHdhbnQgdGhl
IHN0eWxlIHRvIGJlIGEgbGlua2VkIHN0eWxlLCBjbGljayA8Yj5PSzwvYj4uPC9wPjwvbGk+IiwK
KyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzE0Jz4iLAorICAgICAgICAgICAgICAgICI8cCBpZD0n
aWRfMTUnPklmIHlvdSBkb24ndCB3YW50IHRoZSBzdHlsZSB0byBiZSBpbmNsdWRlZCBpbiB0aGUg
Z2FsbGVyeSwgb3IgaWYgeW91IHdhbnQgdGhlIHN0eWxlIHRvIGJlIGVpdGhlciBhIHBhcmFncmFw
aCBvciBhIGNoYXJhY3RlciBzdHlsZSwgY2xpY2sgPGI+TW9kaWZ5PC9iPiBhbmQgZG8gb25lIG9y
IGJvdGggb2YgdGhlIGZvbGxvd2luZzo8L3A+IiwKKyAgICAgICAgICAgICAgICAiPHVsIGlkPSdp
ZF8xNic+IiwKKyAgICAgICAgICAgICAgICAgICAgIjxsaSBpZD0naWRfMTcnPjxwPkF0IHRoZSBi
b3R0b20gb2YgdGhlIGRpYWxvZyBib3gsIGNsZWFyIHRoZSA8Yj5BZGQgdG8gUXVpY2sgU3R5bGU8
L2I+IGxpc3QgYm94LjwvcD48L2xpPiIsCisgICAgICAgICAgICAgICAgICAgICI8bGkgaWQ9J2lk
XzE4Jz48cD5JbiB0aGUgPGI+U3R5bGUgdHlwZTwvYj4gbGlzdCwgY2xpY2sgPGI+UGFyYWdyYXBo
PC9iPiBvciA8Yj5DaGFyYWN0ZXI8L2I+LjwvcD48L2xpPiIsCisgICAgICAgICAgICAgICAgIjwv
dWw+IiwKKyAgICAgICAgICAgICI8L2xpPiIsCisgICAgICAgICI8L29sPiIsCisgICAgICAgICI8
cCBpZD0naWRfMTknPklmIHlvdSBzd2l0Y2ggdG8gYSBkaWZmZXJlbnQgUXVpY2sgU3R5bGUgc2V0
LCB5b3UgbWF5IG5lZWQgdG8gYWRqdXN0IHRoZSBzZXR0aW5ncyBvZiB5b3VyIGN1c3RvbSBzdHls
ZS4gSW4gdGhlIGV4YW1wbGUgaGVyZSwgaWYgeW91IGNyZWF0ZSB0aGUgQmxvY2sgcXVvdGUgc3R5
bGUgd2hpbGUgdGhlIFdvcmQgMjAwNyBRdWljayBTdHlsZSBzZXQgaXMgYXBwbGllZCwgYW5kIHRo
ZW4geW91IHN3aXRjaCB0byB0aGUgVHJhZGl0aW9uYWwgUXVpY2sgU3R5bGUgc2V0LCB5b3UgY2Fu
IGNoYW5nZSB0aGUgQmxvY2sgcXVvdGUgc3R5bGUgdG8gcmVtb3ZlIHRoZSBmaXJzdC1saW5lIGlu
ZGVudGF0aW9uIHRoYXQgdGhlIFRyYWRpdGlvbmFsIFF1aWNrIFN0eWxlIHNldCBpbnRyb2R1Y2Vz
LiBUbyBjaGFuZ2UgYSBzdHlsZSwgZG8gdGhlIGZvbGxvd2luZzo8L3A+IiwKKyAgICAgICAgIjxv
bCB0eXBlPScxJyBpZD0naWRfMjAnPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8yMSc+PHA+
T24gdGhlIDxiPkhvbWU8L2I+IHRhYiBpbiB0aGUgPGI+U3R5bGVzPC9iPiBncm91cCwgcmlnaHQt
Y2xpY2sgPGI+QmxvY2sgcXVvdGU8L2I+LCBhbmQgdGhlbiBjbGljayA8Yj5Nb2RpZnk8L2I+Ljwv
cD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8yMic+PHA+Q2xpY2sgPGI+Rm9ybWF0
PC9iPiwgYW5kIHRoZW4gY2xpY2sgPGI+UGFyYWdyYXBoPC9iPi48L3A+PC9saT4iLAorICAgICAg
ICAgICAgIjxsaSBpZD0naWRfMjMnPjxwPkluIHRoZSA8Yj5JbmRlbnRhdGlvbjwvYj4gc2VjdGlv
biwgaW4gdGhlIDxiPlNwZWNpYWw8L2I+IGxpc3QsIGNsaWNrIDxiPihub25lKTwvYj4uPC9wPjwv
bGk+IiwKKyAgICAgICAgIjwvb2w+IiwKKyAgICAgICAgIjxwIGlkPSdpZF8yNCc+VGhlIG1vcmUg
Y2hhcmFjdGVyaXN0aWNzIHRoYXQgeW91IHNwZWNpZnkgZm9yIHRoZSBzdHlsZSwgdGhlIGxlc3Mg
dGhlIHN0eWxlIGlzIGFmZmVjdGVkIGJ5IHN3aXRjaGluZyBRdWljayBTdHlsZSBzZXRzIG9yIHRo
ZW1lcy48L3A+IiwKKyAgICAiPC9kaXY+IgorXTsKKworTGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VU
ZXh0SXRlbSA9IGZ1bmN0aW9uKHRleHRJdGVtKQoreworICAgIHZhciBwcmFzZVJlc3VsdCA9IHt9
OworICAgIHByYXNlUmVzdWx0LnRhZ1N0YXJ0ID0gdGV4dEl0ZW0ubWF0Y2goLzwoLio/KT4vZylb
MF07CisgICAgdmFyIHNwYWNlSW5kZXggPSBwcmFzZVJlc3VsdC50YWdTdGFydC5pbmRleE9mKCIg
Iik7CisgICAgcHJhc2VSZXN1bHQubm9kZU5hbWUgPSBwcmFzZVJlc3VsdC50YWdTdGFydC5zdWJz
dHJpbmcoMSwgc3BhY2VJbmRleCAhPSAtMSA/IHNwYWNlSW5kZXggOiBwcmFzZVJlc3VsdC50YWdT
dGFydC5sZW5ndGggLSAxKTsKKyAgICBwcmFzZVJlc3VsdC5hcmdzID0gc3BhY2VJbmRleCAhPSAt
MSA/IHdpbmRvdy5iZW5jaG1hcmtDbGllbnQucGFyc2VBcmd1bWVudHMocHJhc2VSZXN1bHQudGFn
U3RhcnQuc3Vic3RyaW5nKHNwYWNlSW5kZXggKyAxLCBwcmFzZVJlc3VsdC50YWdTdGFydC5sZW5n
dGggLSAxKSkgOiB7fTsKKyAgICB2YXIgdGFnRW5kID0gIjwvIiArIHByYXNlUmVzdWx0Lm5vZGVO
YW1lICsgIj4iOyAgICAgICAgICAgICAgICAKKyAgICBwcmFzZVJlc3VsdC50YWdFbmQgPSB0ZXh0
SXRlbS5lbmRzV2l0aCh0YWdFbmQpID8gdGFnRW5kIDogIiI7CisgICAgcmV0dXJuIHByYXNlUmVz
dWx0OworfQorCitMYXllcmluZ1RleHRTdGFnZS5pc09wZW5pbmdUZXh0SXRlbSA9IGZ1bmN0aW9u
KHRleHRJdGVtKQoreworICAgIHJldHVybiAhTGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VUZXh0SXRl
bSh0ZXh0SXRlbSkudGFnRW5kLmxlbmd0aDsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDbG9z
aW5nVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbSkKK3sKKyAgICByZXR1cm4gdGV4dEl0ZW0u
aW5kZXhPZigiLyIpID09ICsxOworfQorCitMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFn
cyA9IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtcy5tYXAoZnVuY3Rpb24odGV4dEl0ZW0pCit7
CisgICB2YXIgdGV4dEl0ZW1GbGFncyA9IHt9OworICAgdGV4dEl0ZW1GbGFncy5pc09wZW5pbmcg
PSBMYXllcmluZ1RleHRTdGFnZS5pc09wZW5pbmdUZXh0SXRlbSh0ZXh0SXRlbSk7CisgICB0ZXh0
SXRlbUZsYWdzLmlzQ2xvc2luZyA9IExheWVyaW5nVGV4dFN0YWdlLmlzQ2xvc2luZ1RleHRJdGVt
KHRleHRJdGVtKTsgICAKKyAgIHJldHVybiB0ZXh0SXRlbUZsYWdzOworfSk7CisKK0xheWVyaW5n
VGV4dFN0YWdlLmlzQ29sb3JhYmxlVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKQor
eworICAgIHJldHVybiAhKHRleHRJdGVtRmxhZ3MuaXNPcGVuaW5nIHx8IHRleHRJdGVtRmxhZ3Mu
aXNDbG9zaW5nKTsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UuaXNJbnNlcnRhYmxlVGV4dEl0ZW0g
PSBmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKQoreworICAgIHJldHVybiAhdGV4dEl0ZW1GbGFncy5p
c0Nsb3Npbmc7Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLmNvbG9yYWJsZVRleHRJdGVtcyA9IExh
eWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzLmZpbHRlcihmdW5jdGlvbih0ZXh0SXRlbUZs
YWdzKQoreworICAgIHJldHVybiBMYXllcmluZ1RleHRTdGFnZS5pc0NvbG9yYWJsZVRleHRJdGVt
KHRleHRJdGVtRmxhZ3MpOworfSkubGVuZ3RoOworCitMYXllcmluZ1RleHRTdGFnZS5pbnNlcnRh
YmxlVGV4dEl0ZW1zID0gTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MuZmlsdGVyKGZ1
bmN0aW9uKHRleHRJdGVtRmxhZ3MpCit7CisgICAgcmV0dXJuIExheWVyaW5nVGV4dFN0YWdlLmlz
SW5zZXJ0YWJsZVRleHRJdGVtKHRleHRJdGVtRmxhZ3MpOworfSkubGVuZ3RoOworCitMYXllcmlu
Z1RleHRTdGFnZS5jb2xvckluZGV4VG9UZXh0RWxlbWVudEluZGV4ID0gZnVuY3Rpb24oY29sb3JJ
bmRleCkKK3sKKyAgICB2YXIgdGV4dEVsZW1lbnRJbmRleCA9IDA7CisgICAgdmFyIGluZGV4ID0g
MDsKKyAgICAKKyAgICBmb3IgKHZhciB0ZXh0SXRlbUluZGV4ID0gMDsgdGV4dEl0ZW1JbmRleCA8
IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzLmxlbmd0aDsgKyt0ZXh0SXRlbUluZGV4
KSB7CisgICAgICAgIGlmIChMYXllcmluZ1RleHRTdGFnZS5pc0NvbG9yYWJsZVRleHRJdGVtKExh
eWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzW3RleHRJdGVtSW5kZXhdKSkgeworICAgICAg
ICAgICAgaWYgKCsraW5kZXggPiBjb2xvckluZGV4KQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGlmIChMYXllcmluZ1RleHRTdGFnZS5pc0luc2VydGFibGVUZXh0
SXRlbShMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0ZXh0SXRlbUluZGV4XSkpCisg
ICAgICAgICAgICArK3RleHRFbGVtZW50SW5kZXg7CisgICAgfQorICAgIAorICAgIHJldHVybiB0
ZXh0RWxlbWVudEluZGV4OworfQorCitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKFN0YWdlLnByb3RvdHlwZSk7CitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBMYXllcmluZ1RleHRTdGFnZTsKKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJv
dG90eXBlLl9uZXh0VGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKQoreworICAgIHZh
ciB0ZXh0SXRlbSA9IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc1t0aGlzLl90ZXh0SXRlbUlu
ZGV4XTsKKyAgICB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmV4dGVuZE9iamVjdCh0ZXh0SXRlbUZs
YWdzLCBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0aGlzLl90ZXh0SXRlbUluZGV4
XSk7CisgICAgdGhpcy5fdGV4dEl0ZW1JbmRleCA9ICh0aGlzLl90ZXh0SXRlbUluZGV4ICsgMSkg
JSBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXMubGVuZ3RoOworICAgIHJldHVybiB0ZXh0SXRl
bTsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9wcmV2aW91c1RleHRJdGVtID0g
ZnVuY3Rpb24odGV4dEl0ZW1GbGFncykKK3sKKyAgICB0aGlzLl90ZXh0SXRlbUluZGV4ID0gKHRo
aXMuX3RleHRJdGVtSW5kZXggKyBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXMubGVuZ3RoIC0g
MSkgJSBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXMubGVuZ3RoOworICAgIHdpbmRvdy5iZW5j
aG1hcmtDbGllbnQuZXh0ZW5kT2JqZWN0KHRleHRJdGVtRmxhZ3MsIExheWVyaW5nVGV4dFN0YWdl
LnRleHRJdGVtc0ZsYWdzW3RoaXMuX3RleHRJdGVtSW5kZXhdKTsgICAgCisgICAgcmV0dXJuIExh
eWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc1t0aGlzLl90ZXh0SXRlbUluZGV4XTsKK30KKworTGF5
ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9wdXNoVGV4dEVsZW1lbnQgPSBmdW5jdGlvbigpCit7
CisgICAgdmFyIHRleHRJdGVtRmxhZ3MgPSB7fTsKKyAgICB2YXIgdGV4dEl0ZW0gPSB0aGlzLl9u
ZXh0VGV4dEl0ZW0odGV4dEl0ZW1GbGFncyk7CisgICAgZm9yICggOyB0ZXh0SXRlbUZsYWdzLmlz
Q2xvc2luZzsgdGV4dEl0ZW0gPSB0aGlzLl9uZXh0VGV4dEl0ZW0odGV4dEl0ZW1GbGFncykpCisg
ICAgICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQu
cGFyZW50Tm9kZTsKKworICAgIHZhciBwcmFzZVJlc3VsdCA9IExheWVyaW5nVGV4dFN0YWdlLnBh
cnNlVGV4dEl0ZW0odGV4dEl0ZW0pOworICAgIHRleHRJdGVtID0gdGV4dEl0ZW0uc3Vic3RyaW5n
KHByYXNlUmVzdWx0LnRhZ1N0YXJ0Lmxlbmd0aCwgdGV4dEl0ZW0ubGVuZ3RoIC0gcHJhc2VSZXN1
bHQudGFnRW5kLmxlbmd0aCk7CisKKyAgICB2YXIgdGV4dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KHByYXNlUmVzdWx0Lm5vZGVOYW1lKTsKKworICAgIGZvciAodmFyIGF0dHJuYW1l
IGluIHByYXNlUmVzdWx0LmFyZ3MpCisgICAgICAgIHRleHRFbGVtZW50LnNldEF0dHJpYnV0ZShh
dHRybmFtZSwgcHJhc2VSZXN1bHQuYXJnc1thdHRybmFtZV0pOworCisgICAgdGhpcy5fdGV4dEVs
ZW1lbnRQYXJlbnQuYXBwZW5kQ2hpbGQodGV4dEVsZW1lbnQpOworICAgIAorICAgIGlmICghcHJh
c2VSZXN1bHQudGFnRW5kLmxlbmd0aCkKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQg
PSB0ZXh0RWxlbWVudDsKKworICAgIHRleHRFbGVtZW50LmlubmVySFRNTCA9IHRleHRJdGVtOwor
ICAgIAorICAgIHRoaXMuX3RleHRFbGVtZW50cy5wdXNoKHRleHRFbGVtZW50KTsKKyAgICByZXR1
cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJv
dG90eXBlLl9wb3BUZXh0RWxlbWVudCA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgdGV4dEl0ZW1G
bGFncyA9IHt9OyAgICAKKyAgICB2YXIgdGV4dEl0ZW0gPSB0aGlzLl9wcmV2aW91c1RleHRJdGVt
KHRleHRJdGVtRmxhZ3MpOworICAgIGZvciAoIDsgdGV4dEl0ZW1GbGFncy5pc0Nsb3Npbmc7IHRl
eHRJdGVtID0gdGhpcy5fcHJldmlvdXNUZXh0SXRlbSh0ZXh0SXRlbUZsYWdzKSkKKyAgICAgICAg
dGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQgPSB0aGlzLl90ZXh0RWxlbWVudFBhcmVudC5sYXN0Q2hp
bGQ7CisKKyAgICBpZiAodGV4dEl0ZW1GbGFncy5pc09wZW5pbmcpCisgICAgICAgIHRoaXMuX3Rl
eHRFbGVtZW50UGFyZW50ID0gdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQucGFyZW50Tm9kZTsKKwor
ICAgIHZhciB0ZXh0RWxlbWVudCA9IHRoaXMuX3RleHRFbGVtZW50c1t0aGlzLl90ZXh0RWxlbWVu
dHMubGVuZ3RoIC0gMV07CisgICAgCisgICAgaWYgKHRleHRFbGVtZW50ICYmIHRleHRFbGVtZW50
LnBhcmVudE5vZGUgJiYgdGV4dEVsZW1lbnQucGFyZW50Tm9kZSA9PSB0aGlzLl90ZXh0RWxlbWVu
dFBhcmVudCkKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQucmVtb3ZlQ2hpbGQodGV4
dEVsZW1lbnQpOworCisgICAgdGhpcy5fdGV4dEVsZW1lbnRzLnBvcCgpOworICAgIHJldHVybiB0
aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOworfQorCitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5
cGUuX2NvbG9yVGV4dEl0ZW0gPSBmdW5jdGlvbihjb2xvcikKK3sKKyAgICB2YXIgdGV4dEVsZW1l
bnRJbmRleCA9IExheWVyaW5nVGV4dFN0YWdlLmNvbG9ySW5kZXhUb1RleHRFbGVtZW50SW5kZXgo
dGhpcy5fY29sb3JJbmRleCk7CisgICAgZm9yICggOyB0ZXh0RWxlbWVudEluZGV4IDwgdGhpcy5f
dGV4dEVsZW1lbnRzLmxlbmd0aDsgdGV4dEVsZW1lbnRJbmRleCArPSBMYXllcmluZ1RleHRTdGFn
ZS5pbnNlcnRhYmxlVGV4dEl0ZW1zKQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVudHNbdGV4dEVs
ZW1lbnRJbmRleF0uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gY29sb3I7Cit9CisKK0xheWVyaW5n
VGV4dFN0YWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQoreworICAg
IHRoaXMuX2NvbG9yVGV4dEl0ZW0oInRyYW5zcGFyZW50Iik7CisgICAgdGhpcy5fY29sb3JJbmRl
eCA9ICh0aGlzLl9jb2xvckluZGV4ICsgMSkgJSBMYXllcmluZ1RleHRTdGFnZS5jb2xvcmFibGVU
ZXh0SXRlbXM7CisgICAgdGhpcy5fY29sb3JUZXh0SXRlbSgiWWVsbG93R3JlZW4iKTsKKyAgICAK
KyAgICB2YXIgYmxhY2tUZXh0RWxlbWVudHMgPSBNYXRoLm1pbih0aGlzLl90ZXh0RWxlbWVudHMu
bGVuZ3RoLCBMYXllcmluZ1RleHRTdGFnZS5pbnNlcnRhYmxlVGV4dEl0ZW1zKTsKKyAgICB2YXIg
aSA9IDA7CisgICAgZm9yICggOyBpIDwgdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aCAtIGJsYWNr
VGV4dEVsZW1lbnRzOyArK2kpCisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50c1tpXS5zdHlsZS5j
b2xvciA9ICh0aGlzLl9hbmltYXRlQ291bnRzICYgMSkgPyAiTGlnaHRZZWxsb3ciIDogIndoaXRl
IjsKKworICAgIGZvciAoIDsgaSA8IHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7ICsraSkKKyAg
ICAgICAgdGhpcy5fdGV4dEVsZW1lbnRzW2ldLnN0eWxlLmNvbG9yID0gImJsYWNrIjsKKyAgICAg
ICAgCisgICAgKyt0aGlzLl9hbmltYXRlQ291bnRzOworfQorCitMYXllcmluZ1RleHRTdGFnZS5w
cm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KQoreworICAgIGNvdW50ID0gY291bnQgPiAw
ID8gTWF0aC5mbG9vcihjb3VudCkgOiBNYXRoLmNlaWwoY291bnQpOworCisgICAgaWYgKGNvdW50
ID09IDApCisgICAgICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOworCisgICAg
aWYgKGNvdW50ID4gMCkgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kp
CisgICAgICAgICAgICB0aGlzLl9wdXNoVGV4dEVsZW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3RleHRFbGVtZW50cy5sZW5ndGg7CisgICAgfQorICAgICAgICAKKyAgICBjb3VudCA9IE1h
dGgubWluKC1jb3VudCwgdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aCk7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICB0aGlzLl9wb3BUZXh0RWxlbWVudCgpOwor
CisgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7Cit9CisKK2Z1bmN0aW9uIExh
eWVyaW5nVGV4dEJlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHBy
b2dyZXNzQmFyKQoreworICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0xheWVyaW5nVGV4dEJl
bmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlw
ZSk7CitMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTGF5ZXJp
bmdUZXh0QmVuY2htYXJrOworCitMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0
ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKK3sKKyAgICByZXR1cm4gbmV3IExheWVyaW5nVGV4
dFN0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xp
ZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwg
cHJvZ3Jlc3NCYXIpCit7CisgICAgd2luZG93LmJlbmNobWFyayA9IG5ldyBMYXllcmluZ1RleHRC
ZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7
Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262176</attachid>
            <date>2015-09-30 09:50:20 -0700</date>
            <delta_ts>2015-10-01 14:20:14 -0700</delta_ts>
            <desc>[template]</desc>
            <filename>template.patch</filename>
            <type>text/plain</type>
            <size>14670</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAzMzEpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5NCBAQAorMjAxNS0wOS0yOSAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IEluc3RlYWQgb2YgbWVhc3VyaW5nIHRoZSBGUFMgb2YgdGhlIGFuaW1hdGlvbiwgdGhpcyBiZW5j
aG1hcmsgbWVhc3VyZXMgdGhlCisgICAgICAgIHRlc3QgY29tcGxleGl0eSB3aGVuIHJlbmRlcmlu
ZyBhdCBhIHNldC1wb2ludCBGUFMgd2hpY2ggc2hvdWxkIGJlIGxvd2VyCisgICAgICAgIHRoYW4g
NjAgRlBTLiBUaGlzIGJlbmNobWFyayB0cmllcyB0byBzdGF5IGF0IHRoZSBzZXQtcG9pbnQgRlBT
IGJ5IHVzaW5nCisgICAgICAgIGEgY2xvc2VkIGxvb3AgY29udHJvbCBzeXN0ZW0gUElEIGZ1bmN0
aW9uLiBUaGUgZ2FpbiBvZiB0aGUgc3lzdGVtIGlzIHBhc3NlZAorICAgICAgICBhcyBhIHBhcmFt
ZXRlciB3aGVuIHJ1bm5pbmcgdGhlIHRlc3QuIE1lYXN1cmluZyB0aGUgRlBTIGZhaXRoZnVsbHkg
cmVzdWx0cworICAgICAgICB2ZXJ5IGZsdWN0dWF0aW5nIHZhbHVlcy4gQSBLYWxtYW4gZmlsdGVy
IGlzIHVzZWQgdG8gZ2l2ZSBhIGJldHRlciBlc3RpbWF0ZQorICAgICAgICBmb3IgdGhlIGN1cnJl
bnQgRlBTLgorCisgICAgICAgIFRoZSBhbmltYXRpb24gb2YgdGhlIHRlc3RzIGlzIGRvbmUgbWFu
dWFsbHkuIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGlzCisgICAgICAgIGNhbGxlZCB3aXRoIGEg
Y2FsbGJhY2suIEluc2lkZSB0aGlzIGNhbGxiYWNrLCB0aGUgdGVzdCBpcyBhbmltYXRpbmcgYnkK
KyAgICAgICAgY2hhbmdpbmcgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZWxlbWVudHMgaW5zaWRlIHRo
ZSBwYWdlLiBUaGUgdGVzdCBjb21wbGV4aXR5CisgICAgICAgIG1heSBjaGFuZ2UgYWxzbyBpZiB0
aGUgY3VycmVudCBGUFMgaXMgbm90IGVxdWFsIHRvIHRoZSBkZXNpcmVkIEZQUy4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgc3BsaXQgdG8gdGhlc2Ugc21hbGxlciBwYXRjaGVzOgor
ICAgICAgICBbc2hhcmVkXTogU2hhcmVkIG9iamVjdHMgdXNlZCBieSB0aGUgdGVzdHMgYW5kIHRo
ZSBydW5uZXIuCisgICAgICAgIFtiZW5jaG1hcmtdOiBNYW5hZ2luZyBhbmltYXRpbmcgYW5kIHR1
bmluZyB0aGUgdGVzdHMuCisgICAgICAgIFtzdGFnZV06IEJhc2Ugb2JqZWN0cyBmb3Igc3RhZ2Ut
YmFzZWQgdGVzdHMuCisgICAgICAgIFtib3VuY2luZy1jc3MtcGFydGljbGVzXTogRXhhbXBsZXMg
Zm9yIGFuaW1hdGluZyBIVE1MRWxlbWVudHMuCisgICAgICAgIFtib3VuY2luZy1jYW52YXMtcGFy
dGljbGVzXTogRXhhbXBsZXMgZm9yIGFuaW1hdGlvbnMgb24gYSBjYW52YXMuCisgICAgICAgIFti
b3VuY2luZy1zdmctcGFydGljbGVzXTogRXhhbXBsZXMgZm9yIGFuaW1hdGluZyBTVkdFbGVtZW50
cy4KKyAgICAgICAgW3RleHRdOiBBbiBleGFtcGxlIGZvciBhbmltYXRpbmcgdGV4dCBvbiBhIENT
UyBzdGFnZS4KKyAgICAgICAgW3RlbXBsYXRlXTogRW1wdHkgdGVtcGxhdGVzIGZvciBuZXcgdGVz
dHMuCisgICAgICAgIFtydW5uZXJdOiBUaGUgYmVuY2htYXJrIHRlc3QgaGFybmVzcy4KKworICAg
ICAgICBbdGVtcGxhdGVdCisgICAgICAgIFRoaXMgcGF0Y2ggcmVwcmVzZW50cyB0aGUgdGVtcGxh
dGUgcGFydCBvZiB0aGUgb3JpZ2luYWwgcGF0Y2guIFRoZSB0ZW1wbGF0ZQorICAgICAgICB0ZXN0
cyBkbyBub3RoaW5nLiBCdXQgdGhleSBjYW4gYmUgdXNlZCBieSBuZXcgdGVzdHMuIEFuaW1hdGVk
IGl0ZW1zIGNhbiBiZQorICAgICAgICBjcmVhdGVkLCBtb3ZlZCBhbmQgcmVkcmF3biBieSBmaWxs
aW5nIHRoZSBlbXB0eSBtZXRob2RzLgorCisgICAgICAgICogQW5pbW9tZXRlcjogQWRkZWQuCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0czogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90
ZXN0cy90ZW1wbGF0ZTogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0
ZS9yZXNvdXJjZXM6IEFkZGVkLgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0
ZS90ZW1wbGF0ZS1jYW52YXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0
cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jc3MuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1zdmcuaHRtbDogQWRkZWQuCisgICAgICAgIFRlbXBs
YXRlIHRlc3QgcGFnZXMuIFRoZXkgY2FuIGJlIHVzZWQgYXMgdGhleSBhcmUuIENTUyBhdHRyaWJ1
dGVzIG9yIGhpZGRlbgorICAgICAgICBlbGVtZW50cyBjYW4gYmUgYWRkZWQgaWYgbmVlZGVkLgor
CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUt
Y3NzLmpzOiBBZGRlZC4KKyAgICAgICAgKFRlbXBsYXRlU3RhZ2UpOiBBIHNldCBvZiBvYmplY3Rz
IHRvIGNyZWF0ZSBhbmQgYW5pbWF0ZSBIVE1MRWxlbWVudHMuCisgICAgICAgIChUZW1wbGF0ZVN0
YWdlLnByb3RvdHlwZS50dW5lKTogQ2hhbmdlcyB0aGUgdGVzdCBieSBhZGRpbmcgb3IgcmVtb3Zp
bmcgZWxlbWVudHMuCisgICAgICAgIChUZW1wbGF0ZVN0YWdlLnByb3RvdHlwZS5hbmltYXRlKTog
QW5pbWF0ZXMgdGhlIHRlc3QgZWxlbWVudHMuCisgICAgICAgIChUZW1wbGF0ZUJlbmNobWFyay5w
cm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIHRoZSB0ZXN0IHN0YWdlLgorICAgICAgICAo
d2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIHRoZSB0ZXN0IGJlbmNobWFy
ay4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJj
ZXMvdGVtcGxhdGUtY2FudmFzLmpzOiBBZGRlZC4KKyAgICAgICAgKFRlbXBsYXRlQ2FudmFzT2Jq
ZWN0KTogQSBzZXQgb2Ygb2JqZWN0cyB0byBjcmVhdGUgYW5kIGFuaW1hdGUgY2FudmFzIEVsZW1l
bnRzLgorICAgICAgICAoVGVtcGxhdGVDYW52YXNPYmplY3QucHJvdG90eXBlLmFuaW1hdGUpOiBB
bmltYXRlcyB0aGUgZWxlbWVudC4KKyAgICAgICAgKFRlbXBsYXRlQ2FudmFzU3RhZ2UucHJvdG90
eXBlLnR1bmUpOiBDaGFuZ2VzIHRoZSB0ZXN0IGJ5IGFkZGluZyBvciByZW1vdmluZyBlbGVtZW50
cy4KKyAgICAgICAgKFRlbXBsYXRlQ2FudmFzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBBbmlt
YXRlcyB0aGUgdGVzdCBlbGVtZW50cy4KKyAgICAgICAgKFRlbXBsYXRlQ2FudmFzQmVuY2htYXJr
LnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgdGhlIHRlc3Qgc3RhZ2UuCisgICAgICAg
ICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgdGhlIHRlc3QgYmVuY2ht
YXJrLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291
cmNlcy90ZW1wbGF0ZS1zdmcuanM6IEFkZGVkLgorICAgICAgICAoVGVtcGxhdGVTdmdTdGFnZSk6
IEEgc2V0IG9mIG9iamVjdHMgdG8gY3JlYXRlIGFuZCBhbmltYXRlIFNWR0VsZW1lbnRzLgorICAg
ICAgICAoVGVtcGxhdGVTdmdTdGFnZS5wcm90b3R5cGUudHVuZSk6IENoYW5nZXMgdGhlIHRlc3Qg
YnkgYWRkaW5nIG9yIHJlbW92aW5nIGVsZW1lbnRzLgorICAgICAgICAoVGVtcGxhdGVTdmdTdGFn
ZS5wcm90b3R5cGUuYW5pbWF0ZSk6IEFuaW1hdGVzIHRoZSB0ZXN0IGVsZW1lbnRzLgorICAgICAg
ICAoVGVtcGxhdGVTdmdCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyB0
aGUgdGVzdCBzdGFnZS4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTog
Q3JlYXRlcyB0aGUgdGVzdCBiZW5jaG1hcmsuCisKIDIwMTUtMDgtMjcgIENzYWJhIE9zenRyb2dv
bsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbRUZMXSBSRUdSRVNTSU9OKHIxODg3
OTMpOiBJdCBtYWRlIDIwMCBsYXlvdXQgdGVzdHMgYW5kIEJpbmRpbmdzL2V2ZW50LXRhcmdldC13
cmFwcGVyLmh0bWwgcGVyZm9ybWFuY2UgdGVzdCBmYWlsCkluZGV4OiBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtY2FudmFzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRl
LWNhbnZhcy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNhbnZhcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2Uu
Y3NzIj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48
L3NjcmlwdD4gIAorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAg
IAorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYmVuY2htYXJrLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RlbXBsYXRlLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgICA8Y2FudmFzIGlkPSJzdGFnZSI+PC9jYW52YXM+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUv
dGVtcGxhdGUtY3NzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNzcy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNzcy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVm
PSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4gIAorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+ICAgIAorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYmVu
Y2htYXJrLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdl
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RlbXBsYXRlLWNzcy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJzdGFnZSI+PC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvdGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLXN2Zy5odG1sCShyZXZpc2lv
biAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBs
YXRlLXN2Zy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRl
eHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKyAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4gIAorICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAorICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rl
bXBsYXRlLXN2Zy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8c3ZnIGlkPSJz
dGFnZSI+PC9zdmc+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNhbnZhcy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVz
b3VyY2VzL3RlbXBsYXRlLWNhbnZhcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFzLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODkgQEAKK2Z1bmN0aW9uIFRlbXBsYXRlQ2FudmFz
T2JqZWN0KHN0YWdlKQoreworICAgIC8vIEZvciB0aGUgY2FudmFzIHN0YWdlLCBtb3N0IGxpa2Vs
eSB5b3Ugd2lsbCBuZWVkIHRvIGNyZWF0ZSB5b3VyCisgICAgLy8gYW5pbWF0ZWQgb2JqZWN0IHNp
bmNlIGl0J3Mgb25seSBkcmF3IHRpbWUgdGhpbmcuCisgICAgCisgICAgLy8gVE9ETzogZmlsbCBp
biB5b3VyIG9iamVjdCBkYXRhLgorfQorCitUZW1wbGF0ZUNhbnZhc09iamVjdC5wcm90b3R5cGUu
YW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAgICAvLyBSZWRyYXcgdGhlIGFuaW1h
dGVkIG9iamVjdC4gVGhlIGxhc3QgdGltZSB0aGlzIGFuaW1hdGVkCisgICAgLy8gaXRlbSB3YXMg
ZHJhd24gYmVmb3JlICd0aW1lRGVsdGEnLgorICAgIAorICAgIC8vIFRPRE86IHJlZHJhdyB0aGUg
b2JqZWN0LgorfQorCitmdW5jdGlvbiBUZW1wbGF0ZUNhbnZhc1N0YWdlKGVsZW1lbnQsIG9wdGlv
bnMpCit7CisgICAgU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0aGlz
LmNvbnRleHQgPSB0aGlzLmVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKTsKK30KKworVGVtcGxhdGVD
YW52YXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlLnByb3RvdHlwZSk7CitU
ZW1wbGF0ZUNhbnZhc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRlbXBsYXRlQ2FudmFz
U3RhZ2U7CisKK1RlbXBsYXRlQ2FudmFzU3RhZ2UucHJvdG90eXBlLnR1bmUgPSBmdW5jdGlvbihj
b3VudCkKK3sKKyAgICAvLyBJZiBjb3VudCBpcyAtdmUsIC1jb3VudCBlbGVtZW50cyBuZWVkIHRv
IGJlIHJlbW92ZWQgZm9ybSB0aGUKKyAgICAvLyBzdGFnZS4gSWYgY291bnQgaXMgK3ZlLCArY291
bnQgZWxlbWVudHMgbmVlZCB0byBiZSBhZGRlZCB0bworICAgIC8vIHRoZSBzdGFnZS4KKyAgICAK
KyAgICAvLyBUT0RPOiBjaGFuZ2Ugb2JqZWN0cyBpbiB0aGUgc3RhZ2UuCisgICAgCisgICAgLy8g
UmV0dXJuIHRoZSBudW1iZXIgb2YgYWxsIHRoZSBlbGVtZW50cyBpbiB0aGUgc3RhZ2UuCisgICAg
Ly8gVGhpcyBudW1iZXIgaXMgcmVjb3JkZWQgaW4gdGhlIHNhbXBsZWQgZGF0YS4KKyAgICAKKyAg
ICAvLyBUT0RPOiByZXR1cm4gdGhlIGNvdW50IG9mIHRoZSBvYmplY3RzIGluIHRoZSBzdGFnZS4K
KyAgICByZXR1cm4gMDsKK30KKworVGVtcGxhdGVDYW52YXNTdGFnZS5wcm90b3R5cGUuYW5pbWF0
ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAgICAvLyBBbmltYXRlIHRoZSBlbGVtZW50cyBz
dWNoIHRoYXQgYWxsIG9mIHRoZW0gYXJlIHJlZHJhd24uIE1vc3QKKyAgICAvLyBsaWtlbHkgeW91
IHdpbGwgbmVlZCB0byBjYWxsIFRlbXBsYXRlQ2FudmFzT2JqZWN0LmFuaW1hdGUoKQorICAgIC8v
IGZvciBhbGwgeW91ciBhbmltYXRlZCBvYmplY3RzIGhlcmUuCit9CisKK2Z1bmN0aW9uIFRlbXBs
YXRlQ2FudmFzQW5pbWF0b3IoYmVuY2htYXJrKQoreworICAgIEFuaW1hdG9yLmNhbGwodGhpcywg
YmVuY2htYXJrKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJrLl9zdGFnZS5jb250ZXh0
OworfQorCitUZW1wbGF0ZUNhbnZhc0FuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
U3RhZ2VBbmltYXRvci5wcm90b3R5cGUpOworVGVtcGxhdGVDYW52YXNBbmltYXRvci5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBUZW1wbGF0ZUNhbnZhc0FuaW1hdG9yOworCitUZW1wbGF0ZUNhbnZh
c0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQoreworICAgIC8vIE1vc3Qg
bGlrZWx5IHlvdSB3aWxsIG5lZWQgdG8gY2xlYXIgdGhlIGNhbnZhcyB3aXRoIGV2ZXJ5IHJlZHJh
dy4KKyAgICB0aGlzLl9jb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLl9iZW5jaG1hcmsuX3N0
YWdlLnNpemUueCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLnkpOworICAgIHJldHVybiBT
dGFnZUFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcyk7Cit9CisKK2Z1bmN0aW9u
IFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworVGVtcGxhdGVD
YW52YXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNobWFyay5w
cm90b3R5cGUpOworVGVtcGxhdGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gVGVtcGxhdGVDYW52YXNCZW5jaG1hcms7CisKK1RlbXBsYXRlQ2FudmFzQmVuY2htYXJrLnBy
b3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgLy8gQXR0YWNo
IHRoZSBzdGFnZSB0byB0aGUgYmVuY2htYXJrLgorICAgIHJldHVybiBuZXcgVGVtcGxhdGVDYW52
YXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKworVGVtcGxhdGVDYW52YXNCZW5j
aG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQoreworICAgIC8vIEF0
dGFjaCB0aGUgYW5pbWF0b3IgdG8gdGhlIGJlbmNobWFyay4KKyAgICByZXR1cm4gbmV3IFRlbXBs
YXRlQ2FudmFzQW5pbWF0b3IodGhpcyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3Jl
YXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0JhcikKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSB0ZXN0IGhh
cm5lc3Mgd2hpY2ggc3RhcnRzIHRoZQorICAgIC8vIHRlc3QgYnkgY3JlYXRpbmcgeW91ciBiZW5j
aG1hcmsgb2JqZWN0LgorICAgIHdpbmRvdy5iZW5jaG1hcmsgPSBuZXcgVGVtcGxhdGVDYW52YXNC
ZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7
Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVz
b3VyY2VzL3RlbXBsYXRlLWNzcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNzcy5qcwkocmV2aXNp
b24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNv
dXJjZXMvdGVtcGxhdGUtY3NzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKK2Z1
bmN0aW9uIFRlbXBsYXRlU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBTdGFnZS5jYWxs
KHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworfQorCitUZW1wbGF0ZVN0YWdlLnByb3RvdHlwZSA9
IE9iamVjdC5jcmVhdGUoU3RhZ2UucHJvdG90eXBlKTsKK1RlbXBsYXRlU3RhZ2UucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gVGVtcGxhdGVTdGFnZTsKKworVGVtcGxhdGVTdGFnZS5wcm90b3R5cGUu
dHVuZSA9IGZ1bmN0aW9uKGNvdW50KQoreworICAgIC8vIElmIGNvdW50IGlzIC12ZSwgLWNvdW50
IGVsZW1lbnRzIG5lZWQgdG8gYmUgcmVtb3ZlZCBmb3JtIHRoZQorICAgIC8vIHN0YWdlLiBJZiBj
b3VudCBpcyArdmUsICtjb3VudCBlbGVtZW50cyBuZWVkIHRvIGJlIGFkZGVkIHRvCisgICAgLy8g
dGhlIHN0YWdlLgorICAgIAorICAgIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGFsbCB0aGUgZWxl
bWVudHMgaW4gdGhlIHN0YWdlLgorICAgIHJldHVybiAwOworfQorCitUZW1wbGF0ZVN0YWdlLnBy
b3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQoreworICAgIC8vIEFuaW1hdGUg
dGhlIGVsZW1lbnRzIHN1Y2ggdGhhdCBhbGwgb2YgdGhlbSBhcmUgcmVkcmF3bi4gWW91IAorICAg
IC8vIG1heSBuZWVkIHRvIGRlZmluZSB5b3VyIG9iamVjdCBzbyBpdCBrZWVwcyBpdHMgYW5pbWF0
aW9uIGRhdGEuCisgICAgLy8gVGhpcyBvYmplY3Qgc2hvdWxkIGVuY2Fwc3VsYXRlIGEgY29ycm9z
cG9uZGluZyBIVE1MRWxlbWVudC4KKyAgICAvLyBZb3UgbWF5IGFsc28gZGVmaW5lIGEgbWV0aG9k
IGNhbGxlZCBhbmltYXRlKCkgaW4gdGhpcyBvYmplY3QKKyAgICAvLyBhbmQganVzdCBjYWxsIHRo
aXMgZnVuY3Rpb24gaGVyZSBmb3IgYWxsIHRoZSBlbGVtZW50cy4KK30KKworZnVuY3Rpb24gVGVt
cGxhdGVCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0JhcikKK3sKKyAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitUZW1wbGF0ZUJlbmNobWFyay5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7CitUZW1w
bGF0ZUJlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUZW1wbGF0ZUJlbmNobWFyazsK
KworVGVtcGxhdGVCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxl
bWVudCkKK3sKKyAgICAvLyBZb3UgbmVlZCB0byBvdmVycmlkZSB0aGlzIG1ldGhvZCBzdWNoIHRo
YXQgeW91ciBzdGFnZSBpcyBob29rZWQKKyAgICAvLyB1cCB0byB0aGUgYmVuY2htYXJrLgorICAg
IHJldHVybiBuZXcgVGVtcGxhdGVTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKwor
d2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIC8vIFRoaXMgZnVuY3Rpb24g
aXMgY2FsbGVkIGZyb20gdGhlIHRlc3QgaGFybmVzcyB3aGljaCBzdGFydHMgdGhlCisgICAgLy8g
dGVzdCBieSBjcmVhdGluZyB5b3VyIGJlbmNobWFyayBvYmplY3QuCisgICAgd2luZG93LmJlbmNo
bWFyayA9IG5ldyBUZW1wbGF0ZUJlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3Jk
VGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVt
cGxhdGUtc3ZnLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1zdmcuanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0OCBAQAorZnVuY3Rpb24gVGVtcGxhdGVTdmdTdGFnZShlbGVtZW50LCBvcHRp
b25zKQoreworICAgIFN0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Cit9CisKK1Rl
bXBsYXRlU3ZnU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUp
OworVGVtcGxhdGVTdmdTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUZW1wbGF0ZVN2Z1N0
YWdlOworCitUZW1wbGF0ZVN2Z1N0YWdlLnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQp
Cit7CisgICAgLy8gSWYgY291bnQgaXMgLXZlLCAtY291bnQgZWxlbWVudHMgbmVlZCB0byBiZSBy
ZW1vdmVkIGZvcm0gdGhlCisgICAgLy8gc3RhZ2UuIElmIGNvdW50IGlzICt2ZSwgK2NvdW50IGVs
ZW1lbnRzIG5lZWQgdG8gYmUgYWRkZWQgdG8KKyAgICAvLyB0aGUgc3RhZ2UuCisKKyAgICAvLyBS
ZXR1cm4gdGhlIG51bWJlciBvZiBhbGwgdGhlIGVsZW1lbnRzIGluIHRoZSBzdGFnZS4KKyAgICBy
ZXR1cm4gMDsKK30KKworVGVtcGxhdGVTdmdTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0
aW9uKHRpbWVEZWx0YSkKK3sKKyAgICAvLyBBbmltYXRlIHRoZSBlbGVtZW50cyBzdWNoIHRoYXQg
YWxsIG9mIHRoZW0gYXJlIHJlZHJhd24uIFlvdSAKKyAgICAvLyBtYXkgbmVlZCB0byBkZWZpbmUg
eW91ciBvYmplY3Qgc28gaXQga2VlcHMgaXRzIGFuaW1hdGlvbiBkYXRhLgorICAgIC8vIFRoaXMg
b2JqZWN0IHNob3VsZCBlbmNhcHN1bGF0ZSBhIGNvcnJvc3BvbmRpbmcgU1ZHRWxlbWVudC4KKyAg
ICAvLyBZb3UgbWF5IGFsc28gZGVmaW5lIGEgbWV0aG9kIGNhbGxlZCBhbmltYXRlKCkgaW4gdGhp
cyBvYmplY3QKKyAgICAvLyBhbmQganVzdCBjYWxsIHRoaXMgZnVuY3Rpb24gaGVyZSBmb3IgYWxs
IHRoZSBlbGVtZW50cy4KK30KKworZnVuY3Rpb24gVGVtcGxhdGVTdmdCZW5jaG1hcmsoc3VpdGUs
IHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICBTdGFnZUJl
bmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpOworfQorCitUZW1wbGF0ZVN2Z0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3Qu
Y3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7CitUZW1wbGF0ZVN2Z0JlbmNobWFyay5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBUZW1wbGF0ZVN2Z0JlbmNobWFyazsKKworVGVtcGxhdGVT
dmdCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKK3sK
KyAgICAvLyBZb3UgbmVlZCB0byBvdmVycmlkZSB0aGlzIG1ldGhvZCBzdWNoIHRoYXQgeW91ciBz
dGFnZSBpcyBob29rZWQKKyAgICAvLyB1cCB0byB0aGUgYmVuY2htYXJrLgorICAgIHJldHVybiBu
ZXcgVGVtcGxhdGVTdmdTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKword2luZG93
LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2Fs
bGVkIGZyb20gdGhlIHRlc3QgaGFybmVzcyB3aGljaCBzdGFydHMgdGhlCisgICAgLy8gdGVzdCBi
eSBjcmVhdGluZyB5b3VyIGJlbmNobWFyayBvYmplY3QuCisgICAgd2luZG93LmJlbmNobWFyayA9
IG5ldyBUZW1wbGF0ZVN2Z0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFi
bGUsIHByb2dyZXNzQmFyKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262177</attachid>
            <date>2015-09-30 09:50:40 -0700</date>
            <delta_ts>2015-09-30 15:56:26 -0700</delta_ts>
            <desc>[runner]</desc>
            <filename>runner.patch</filename>
            <type>text/plain</type>
            <size>36743</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAzMzEpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5NCBAQAorMjAxNS0wOS0yOSAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IEluc3RlYWQgb2YgbWVhc3VyaW5nIHRoZSBGUFMgb2YgdGhlIGFuaW1hdGlvbiwgdGhpcyBiZW5j
aG1hcmsgbWVhc3VyZXMgdGhlCisgICAgICAgIHRlc3QgY29tcGxleGl0eSB3aGVuIHJlbmRlcmlu
ZyBhdCBhIHNldC1wb2ludCBGUFMgd2hpY2ggc2hvdWxkIGJlIGxvd2VyCisgICAgICAgIHRoYW4g
NjAgRlBTLiBUaGlzIGJlbmNobWFyayB0cmllcyB0byBzdGF5IGF0IHRoZSBzZXQtcG9pbnQgRlBT
IGJ5IHVzaW5nCisgICAgICAgIGEgY2xvc2VkIGxvb3AgY29udHJvbCBzeXN0ZW0gUElEIGZ1bmN0
aW9uLiBUaGUgZ2FpbiBvZiB0aGUgc3lzdGVtIGlzIHBhc3NlZAorICAgICAgICBhcyBhIHBhcmFt
ZXRlciB3aGVuIHJ1bm5pbmcgdGhlIHRlc3QuIE1lYXN1cmluZyB0aGUgRlBTIGZhaXRoZnVsbHkg
cmVzdWx0cworICAgICAgICB2ZXJ5IGZsdWN0dWF0aW5nIHZhbHVlcy4gQSBLYWxtYW4gZmlsdGVy
IGlzIHVzZWQgdG8gZ2l2ZSBhIGJldHRlciBlc3RpbWF0ZQorICAgICAgICBmb3IgdGhlIGN1cnJl
bnQgRlBTLgorCisgICAgICAgIFRoZSBhbmltYXRpb24gb2YgdGhlIHRlc3RzIGlzIGRvbmUgbWFu
dWFsbHkuIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGlzCisgICAgICAgIGNhbGxlZCB3aXRoIGEg
Y2FsbGJhY2suIEluc2lkZSB0aGlzIGNhbGxiYWNrLCB0aGUgdGVzdCBpcyBhbmltYXRpbmcgYnkK
KyAgICAgICAgY2hhbmdpbmcgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZWxlbWVudHMgaW5zaWRlIHRo
ZSBwYWdlLiBUaGUgdGVzdCBjb21wbGV4aXR5CisgICAgICAgIG1heSBjaGFuZ2UgYWxzbyBpZiB0
aGUgY3VycmVudCBGUFMgaXMgbm90IGVxdWFsIHRvIHRoZSBkZXNpcmVkIEZQUy4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgc3BsaXQgdG8gdGhlc2Ugc21hbGxlciBwYXRjaGVzOgor
ICAgICAgICBbc2hhcmVkXTogU2hhcmVkIG9iamVjdHMgdXNlZCBieSB0aGUgdGVzdHMgYW5kIHRo
ZSBydW5uZXIuCisgICAgICAgIFtiZW5jaG1hcmtdOiBNYW5hZ2luZyBhbmltYXRpbmcgYW5kIHR1
bmluZyB0aGUgdGVzdHMuCisgICAgICAgIFtzdGFnZV06IEJhc2Ugb2JqZWN0cyBmb3Igc3RhZ2Ut
YmFzZWQgdGVzdHMuCisgICAgICAgIFtib3VuY2luZy1jc3MtcGFydGljbGVzXTogRXhhbXBsZXMg
Zm9yIGFuaW1hdGluZyBIVE1MRWxlbWVudHMuCisgICAgICAgIFtib3VuY2luZy1jYW52YXMtcGFy
dGljbGVzXTogRXhhbXBsZXMgZm9yIGFuaW1hdGlvbnMgb24gYSBjYW52YXMuCisgICAgICAgIFti
b3VuY2luZy1zdmctcGFydGljbGVzXTogRXhhbXBsZXMgZm9yIGFuaW1hdGluZyBTVkdFbGVtZW50
cy4KKyAgICAgICAgW3RleHRdOiBBbiBleGFtcGxlIGZvciBhbmltYXRpbmcgdGV4dCBvbiBhIENT
UyBzdGFnZS4KKyAgICAgICAgW3RlbXBsYXRlXTogRW1wdHkgdGVtcGxhdGVzIGZvciBuZXcgdGVz
dHMuCisgICAgICAgIFtydW5uZXJdOiBUaGUgYmVuY2htYXJrIHRlc3QgaGFybmVzcy4KKworICAg
ICAgICBbcnVubmVyXQorICAgICAgICBUaGlzIHBhdGNoIHJlcHJlc2VudHMgdGhlIHRlc3QgcnVu
bmVyLiBGcm9tIHRoZSBob21lIHBhZ2UsIGl0IGNvbGxlY3RzIHRoZQorICAgICAgICBzZWxlY3Rl
ZCB0ZXN0IHN1aXRlcyBhbmQgdGhlIHJ1bm5pbmcgb3B0aW9ucy4gSXQgbG9vcHMgdGhyb3VnaCBh
bGwgdGhlIHRlc3RzLAorICAgICAgICBydW5zIHRoZW0gYW5kIGNvbGxlY3RzIHRoZWlyIHJ1bm5p
bmcgcmVzdWx0cy4gQXQgdGhlIGVuZCwgaXQgc2hvd3Mgc3VtbWFyeSAKKyAgICAgICAgcmVzdWx0
cyBhbmQgYSBmaW5hbCBzY29yZS4gSXQgY2FuIGFsc28gc2hvdyBhIGNoYXJ0IGZvciBhIHRlc3Qg
c2FtcGxlZCBkYXRhLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyOiBBZGRlZC4KKyAg
ICAgICAgKiBBbmltb21ldGVyL3J1bm5lcjogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci9y
dW5uZXIvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgKiBBbmlt
b21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0
ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzczogQWRkZWQuCisgICAgICAgIFRoZSBi
ZW5jaG1hcmsgcnVubmVyIHBhZ2UgYW5kIGNzcy4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9t
ZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuanM6IEFkZGVkLgorICAgICAgICAod2lu
ZG93LmJlbmNobWFya1J1bm5lckNsaWVudC53aWxsQWRkVGVzdEZyYW1lKTogQ2FsbGVkIGFmdGVy
IHRoZSB0ZXN0IDxpZnJhbWU+IGlzIGNyZWF0ZWQuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJr
UnVubmVyQ2xpZW50LmRpZFJ1blRlc3QpOiBDYWxsZWQgYWZ0ZXIgcnVubmluZyBhIHRlc3QgaXMg
ZmluaXNoZWQuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LndpbGxTdGFy
dEZpcnN0SXRlcmF0aW9uKTogQ2FsbGVkIGF0IHRoZSBiZWdpbm5pbmcgYmVmb3JlIHJ1bm5pbmcg
YW55IHRlc3QuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LmRpZFJ1blN1
aXRlcyk6IENhbGxlZCBhZnRlciBydW5uaW5nIGFsbCB0ZXN0cyBvZiBhIHN1aXRlLgorICAgICAg
ICAod2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0aW9uKTog
Q2FsbGVkIGFmdGVyIHJ1bm5pbmcgdGhlIGxhc3QgdGVzdC4KKyAgICAgICAgCisgICAgICAgICh3
aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LmJyb3dzZXIpOgorICAgICAgICAoc2hvd1NlY3Rp
b24pOiBTaG93cyBhIHNlY3Rpb24gaW4gdGhlIGFuaW1vbWV0ZXIuaHRtbCBwYWdlLgorICAgICAg
ICAoc3RhcnRUZXN0KTogQ2FsbGVkIHdoZW4gdGhlICJTdGFydCBUZXN0IiBidXR0b24gaXMgY2xp
Y2tlZC4KKyAgICAgICAgKHNob3dSZXN1bHRzKTogQ2FsbGVkIGFmdGVyIGZpbmlzaGluZyBhbGwg
dGhlIHRlc3RzLgorICAgICAgICAoc2hvd0dyYXBoKTogQ2FsbGVkIHdoZW4gIkNsaWNrLi4uIiBi
dXR0b24gaW4gdGhlICJTYW1wbGVzIiBjb2x1bW4gb2YgdGhlIHJlc3VsdHMgdGFibGUgaXMgY2xp
Y2tlZAorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYmVu
Y2htYXJrLXJ1bm5lci5qczogQWRkZWQuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXJTdGF0ZSk6
IFRyYWNrcyB0aGUgY3VycmVudCBydW5uaW5nIDxzdWl0ZSwgdGVzdD4KKyAgICAgICAgKEJlbmNo
bWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5jdXJyZW50U3VpdGUpOiBSZXR1cm5zIHRoZSBjdXJy
ZW50IHJ1bm5pbmcgc3VpdGUuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5
cGUuY3VycmVudFRlc3QpOiBSZXR1cm5zIHRoZSBjdXJyZW50IHJ1bm5pbmcgdGVzdC4KKyAgICAg
ICAgKEJlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5pc0ZpcnN0VGVzdCk6IFJldHVybnMg
dHJ1ZSBpZiB3ZSBhcmUgcnVubmluZyB0aGUgZmlyc3QgdGVzdCBpbiB0aGUgY3VycmVudCBzdWl0
ZS4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5uZXh0KTogQWR2YW5j
ZXMgdG8gdGhlIG5leHQgdGVzdC4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lclN0YXRlLnByb3Rv
dHlwZS5wcmVwYXJlQ3VycmVudFRlc3QpOiBDcmVhdGVzIGEgbmV3IDxpZnJhbWU+IGFuZCB3YWl0
cyBmb3IgaXQgdG8gbG9hZCBhIHRlc3QuCisKKyAgICAgICAgKEJlbmNobWFya1J1bm5lcik6IE1h
bmFnZXMgcnVubmluZyB0aGUgdGVzdHMgYW5kIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgYmVuY2ht
YXJrUnVubmVyQ2xpZW50LgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS53YWl0
Rm9yRWxlbWVudCk6IFdhaXRzIGZvciBhbiBlbGVtZW50IHRvIGJlIGNyZWF0ZWQuCisgICAgICAg
IChCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9hcHBlbmRGcmFtZSk6IENyZWF0ZXMgYSBuZXcg
PGlmcmFtZT4gZWxlbWVudC4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3Jl
bW92ZUZyYW1lKTogUmVtb3ZlZCB0aGUgY3VycmVudCA8aWZyYW1lPiBlbGVtZW50LgorICAgICAg
ICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcnVuVGVzdEFuZFJlY29yZFJlc3VsdHMpOiBS
dW5zIHRoZSBjdXJyZW50IHRlc3QgYW5kIHNhdmVzIGl0cyByZXN1bHRzLgorICAgICAgICAoQmVu
Y2htYXJrUnVubmVyLnByb3RvdHlwZS5zdGVwKTogRWl0aGVyIHJ1bnMgdGhlIGN1cnJlbnQgdGVz
dCBpZiB0aGVyZSBpcyBvciBzdGFydCBhIG5ldyBpdGVyYXRpb24uCisgICAgICAgIChCZW5jaG1h
cmtSdW5uZXIucHJvdG90eXBlLnJ1bkFsbFN0ZXBzKTogTG9vcHMgdG8gcnVuIGFsbCB0aGUgdGVz
dHMgYW5kIG1vdmUgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgorICAgICAgICAodGhpcy5fcnVuTmV4
dEl0ZXJhdGlvbik6IFN0YXJ0cyBhIG5ldyBpdGVyYXRpb24gb3Igc2hvdyB0aGUgcmVzdWx0cy4K
KyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUucnVuTXVsdGlwbGVJdGVyYXRpb25z
KTogTG9vcHMgdG8gcnVuIGFsbCB0aGUgaXRlcmF0aW9ucyBhbmQgc2hvdyB0aGUgcmVzdWx0cwor
ICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fZmluYWxpemUpOiBTdGFydHMgYSBu
ZXcgaXRlcmF0aW9uLgorCisgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2dy
YXBoLmpzOiBBZGRlZC4KKyAgICAgICAgKGdyYXBoKTogRHJhd3MgYSBjaGFydCBmb3IgYSB0ZXN0
IHNhbXBsZWQgZGF0YS4gSXQgc2hvd3MgdHdvIHktYXhlczogb25lIGZvciB0aGUgYW5pbWF0ZWQg
aXRlbXMgYW5kIHRoZSBzZWNvbmQgZm9yIEZQUy4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9t
ZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzOiBBZGRlZC4KKyAgICAgICAgKHN1aXRlRnJv
bU5hbWUpOiBSZXR1cm5zIGEgc3VpdGUgZ2l2ZW4gaXRzIG5hbWUuCisgICAgICAgICh0ZXN0RnJv
bU5hbWUpOiBSZXR1cm5zIGEgdGVzdCBnaXZlbiBpdHMgc3VpdGUgYW5kIG5hbWUuCisKIDIwMTUt
MDgtMjcgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBb
RUZMXSBSRUdSRVNTSU9OKHIxODg3OTMpOiBJdCBtYWRlIDIwMCBsYXlvdXQgdGVzdHMgYW5kIEJp
bmRpbmdzL2V2ZW50LXRhcmdldC13cmFwcGVyLmh0bWwgcGVyZm9ybWFuY2UgdGVzdCBmYWlsCklu
ZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL2FuaW1vbWV0ZXIuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL2FuaW1vbWV0
ZXIuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5u
ZXIvYW5pbW9tZXRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjUgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9InJlc291cmNlcy9hbmltb21ldGVyLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8v
Y2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2QzLzMuNS41L2QzLm1pbi5qcyIgZGVmZXI+
PC9zY3JpcHQ+ICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMi
IGRlZmVyPjwvc2NyaXB0PiAgCisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpz
IiBkZWZlcj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3RzLmpzIiBk
ZWZlcj0iIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JlbmNobWFyay1y
dW5uZXIuanMiIGRlZmVyPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYW5p
bW9tZXRlci5qcyIgZGVmZXI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9n
cmFwaC5qcyIgZGVmZXI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8bWFpbj4KKyAg
ICAgICAgPHNlY3Rpb24gaWQ9ImhvbWUiIGNsYXNzPSJzZWxlY3RlZCI+CisgICAgICAgICAgICA8
cD4KKyAgICAgICAgICAgICAgICBBbmltb21ldGVyIGlzIGEgYnJvd3NlciBiZW5jaG1hcmsgdGhh
dCBtZWFzdXJlcyB0aGUgY29tcGxleGl0eSBvZiBhbiBhbmltYXRpb24gZm9yCisgICAgICAgICAg
ICAgICAgd2hpY2ggYSBicm93c2VyIGNhbiBhY2hpZXZlIDUwIEZQUyAoZnJhbWUgcGVyIHNlY29u
ZCkuIEl0IHVzZXMgYWRhcHRpdmUgYW5pbWF0aW9ucworICAgICAgICAgICAgICAgIHRvIHR1bmUg
dGhlaXIgY29tcGxleGl0aWVzIHRvIHN0YXkgY2xvc2UgdG8gNTAgRlBTLgorICAgICAgICAgICAg
PC9wPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3B0aW9ucyI+CisgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iY29sdW1uIj4KKyAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCBp
ZD0iaHRtbC1zdWl0ZSIgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+IEhUTUwgZWxlbWVudHMgc3Vp
dGU8L2xhYmVsPjxicj4KKyAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD0iY2Fu
dmFzLXN1aXRlIiB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD4gQ2FudmFzIGRyYXdpbmdzIHN1aXRl
PC9sYWJlbD48YnI+CisgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48aW5wdXQgaWQ9InN2Zy1z
dWl0ZSIgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+IFNWRyBlbGVtZW50cyBzdWl0ZTwvbGFiZWw+
PGJyPgorICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PGlucHV0IGlkPSJ0ZW1wbGF0ZS1zdWl0
ZSIgdHlwZT0iY2hlY2tib3giPiBUZW1wbGF0ZSBzdWl0ZTwvbGFiZWw+CisgICAgICAgICAgICAg
ICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdj4KKyAgICAgICAgICAgICAgICAgICAgPGxh
YmVsPlRlc3QgaW50ZXJ2YWw6IDxpbnB1dCBpZD0idGVzdC1pbnRlcnZhbCIgdHlwZT0ibnVtYmVy
IiB2YWx1ZT0iMzAiPiBzZWNvbmRzPC9sYWJlbD48YnI+CisgICAgICAgICAgICAgICAgICAgIDxs
YWJlbD5GcmFtZSByYXRlOiA8aW5wdXQgaWQ9ImZyYW1lLXJhdGUiIHR5cGU9Im51bWJlciIgdmFs
dWU9IjUwIj4gZnBzPC9sYWJlbD48YnI+CisgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48aW5w
dXQgaWQ9ImVzdGltYXRlZC1mcmFtZS1yYXRlIiB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD4gRXN0
aW1hdGVkIEZyYW1lIFJhdGU8L2xhYmVsPjxicj4KKyAgICAgICAgICAgICAgICAgICAgPGxhYmVs
PjxpbnB1dCBpZD0iZml4LXRlc3QtY29tcGxleGl0eSIgdHlwZT0iY2hlY2tib3giPiBGaXggdGVz
dCBjb21wbGV4aXR5IGFmdGVyIHdhcm11cDwvbGFiZWw+CisgICAgICAgICAgICAgICAgPC9kaXY+
CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbnMiPgor
ICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0ic3RhcnRUZXN0KCkiPlN0YXJ0IFRlc3Q8
L2J1dHRvbj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L3NlY3Rpb24+CisgICAgICAg
IDxzZWN0aW9uIGlkPSJydW5uaW5nIj4KKyAgICAgICAgICAgIDxkaXYgaWQ9InRlc3RDb250YWlu
ZXIiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBpZD0icHJvZ3Jlc3MiPgorICAgICAgICAgICAg
ICAgIDxkaXYgaWQ9InByb2dyZXNzLWNvbXBsZXRlZCI+PC9kaXY+CisgICAgICAgICAgICA8L2Rp
dj4KKyAgICAgICAgICAgIDxkaXYgaWQ9InJlY29yZCI+CisgICAgICAgICAgICAgICAgPHRhYmxl
IGNsYXNzPSJyZWNvcmQtdGFibGUiPjwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAg
ICAgPC9zZWN0aW9uPgorICAgICAgICA8c2VjdGlvbiBpZD0icmVzdWx0cyI+CisgICAgICAgICAg
ICA8aDE+UmVzdWx0czwvaDE+CisgICAgICAgICAgICA8dGFibGUgY2xhc3M9InJlc3VsdHMtdGFi
bGUiPjwvdGFibGU+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b25zIj4KKyAgICAgICAg
ICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InN0YXJ0VGVzdCgpIj5UZXN0IEFnYWluPC9idXR0b24+
CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9zZWN0aW9uPiAgCisgICAgICAgIDxzZWN0
aW9uIGlkPSJncmFwaCI+CisgICAgICAgICAgICA8aDE+R3JhcGg8L2gxPgorICAgICAgICAgICAg
PGRpdiBpZD0iZ3JhcGhDb250YWluZXIiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0i
YnV0dG9ucyI+CisgICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJzaG93UmVzdWx0cygp
Ij5SZXN1bHRzPC9idXR0b24+CisgICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJzdGFy
dFRlc3QoKSI+VGVzdCBBZ2FpbjwvYnV0dG9uPiAgICAgICAgCisgICAgICAgICAgICA8L2Rpdj4K
KyAgICAgICAgPC9zZWN0aW9uPiAgCisgICAgPC9tYWluPgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRl
ci5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9y
ZXNvdXJjZXMvYW5pbW9tZXRlci5jc3MJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDIyMSBAQAorYm9keSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDk2
LCA5NiwgOTYpOworICAgIGNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7CisgICAgZm9udC1mYW1p
bHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgVmVyZGFuYSwgc2Fucy1zZXJpZjsKK30K
KworbWFpbiB7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgIHdpZHRoOiA4MDBweDsKKyAgICBoZWlnaHQ6IDYwMHB4OworICAgIHRvcDogNTAlOworICAg
IGxlZnQ6IDUwJTsKKyAgICBtYXJnaW4tdG9wOiAtMzIxcHg7CisgICAgbWFyZ2luLWxlZnQ6IC00
MjFweDsKKyAgICBwYWRkaW5nOiAxNXB4OworICAgIGJvcmRlcjogNnB4IHNvbGlkIHJnYigyMzUs
IDIzNSwgMjM1KTsKKyAgICBib3JkZXItcmFkaXVzOiAyMHB4OworfQorCitpZnJhbWUgeworICAg
IHdpZHRoOiA4MDBweDsKKyAgICBoZWlnaHQ6IDYwMHB4OworICAgIGJvcmRlcjogMHB4IG5vbmU7
CisgICAgcG9zaXRpb246IGFic29sdXRlOworfQorCitsYWJlbCwgcCB7CisgICAgZm9udC1zaXpl
OiAxNnB4OworICAgIGxpbmUtaGVpZ2h0OiAyMXB4OworfQorCitzZWN0aW9uIHsKKyAgICBkaXNw
bGF5OiBub25lOworfQorCitzZWN0aW9uID4gcCB7CisgICAgbWFyZ2luOiAxMHB4IDIwcHg7Cit9
CisKK3NlY3Rpb24jaG9tZSA+IHAgeworICAgIG1hcmdpbjogMCBhdXRvOworICAgIHdpZHRoOiA3
MCU7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworfQorCitzZWN0aW9uI2hvbWUgPiBwOmZpcnN0
LWNoaWxkIHsKKyAgICBtYXJnaW4tdG9wOiAxNjBweDsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7
Cit9CisKK3NlY3Rpb24uc2VsZWN0ZWQgeworICAgIGRpc3BsYXk6IGJsb2NrOworfQorCisjdGVz
dENvbnRhaW5lciB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMTVweDsKKyAg
ICBsZWZ0OiAxNXB4OworICAgIHdpZHRoOiA4MDBweDsKKyAgICBoZWlnaHQ6IDYwMHB4OworfQor
CitzZWN0aW9uI3J1bm5pbmcgPiAjcHJvZ3Jlc3MgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgICBib3R0b206IC02cHg7CisgICAgbGVmdDogNjBweDsKKyAgICByaWdodDogNjBweDsKKyAg
ICBoZWlnaHQ6IDZweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTI4LCAxMjgsIDEyOCk7
CisgICAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCByZ2IoNDYsIDUxLCA1NSk7CisgICAgYm9yZGVy
LXJpZ2h0OiA2cHggc29saWQgcmdiKDQ2LCA1MSwgNTUpOworfQorCitzZWN0aW9uI3J1bm5pbmcg
I3Byb2dyZXNzLWNvbXBsZXRlZCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDog
MDsKKyAgICBsZWZ0OiAwOworICAgIGhlaWdodDogNnB4OworICAgIHdpZHRoOiAwOworICAgIGJh
Y2tncm91bmQtY29sb3I6IHJnYigyMzUsIDIzNSwgMjM1KTsKK30KKworc2VjdGlvbiNydW5uaW5n
ID4gI3JlY29yZCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGJvdHRvbTogLTEzMHB4
OworICAgIGxlZnQ6IDBweDsKKyAgICByaWdodDogMHB4OworICAgIGhlaWdodDogNzVweDsKKyAg
ICBjb2xvcjogcmdiKDEyOCwgMTI4LCAxMjgpOworICAgIHBhZGRpbmc6IDE1cHg7CisgICAgYm9y
ZGVyOiA2cHggc29saWQgcmdiKDIzNSwgMjM1LCAyMzUpOworICAgIGJvcmRlci1yYWRpdXM6IDIw
cHg7Cit9CisKK3NlY3Rpb24jcnVubmluZyA+ICNyZWNvcmQgPiB0YWJsZSwKK3NlY3Rpb24jcmVz
dWx0cyA+IHRhYmxlIHsKKyAgICB3aWR0aDogMTAwJTsKK30KKworc2VjdGlvbiNydW5uaW5nID4g
I3JlY29yZCA+IHRhYmxlIHRkLCB0aCwKK3NlY3Rpb24jcmVzdWx0cyA+IHRhYmxlIHRkLCB0aCB7
CisgICAgZm9udC1zaXplOiAxMXB4OworICAgIGJvcmRlcjogMXB4IHNvbGlkICM5OGJmMjE7Cisg
ICAgcGFkZGluZzogM3B4IDRweCAycHggNHB4OworfQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAorc2VjdGlvbiNydW5uaW5nID4gI3JlY29yZCA+IHRhYmxlIHRy
LmFsdCwgdGQKK3NlY3Rpb24jcmVzdWx0cyA+IHRhYmxlIHRyLmFsdCwgdGQgeworICAgIGNvbG9y
OiAjMDAwMDAwOworICAgIGJhY2tncm91bmQtY29sb3I6ICNFQUYyRDM7Cit9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK3NlY3Rpb24jcnVubmluZyA+ICNy
ZWNvcmQgPiB0YWJsZSB0aCwKK3NlY3Rpb24jcmVzdWx0cyA+IHRhYmxlIHRoIHsKKyAgICBiYWNr
Z3JvdW5kLWNvbG9yOiAjQTdDOTQyOyAKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKKy5v
cHRpb25zIHsKKyAgICBtYXJnaW46MCBhdXRvOyAgICAKKyAgICBtYXJnaW4tdG9wOiAzMHB4Owor
ICAgIHdpZHRoOiA1MDBweDsKKyAgICBhbGlnbjogY2VudGVyOworfQorCisuY29sdW1uIHsKKyAg
ICB3aWR0aDogNDUlOworICAgIGZsb2F0OmxlZnQ7CisgICAgaGVpZ2h0OiAxMjBweDsKKyAgICBw
YWRkaW5nOjVweDsKK30KKworaW5wdXRbdHlwZT0ibnVtYmVyIl0geworICAgd2lkdGg6NTBweDsK
K30KKworLmJ1dHRvbnMgeworICAgIG1hcmdpbi10b3A6IDEwcHg7CisgICAgdGV4dC1hbGlnbjog
Y2VudGVyOworICAgIGNsZWFyOiBib3RoOworfQorCitidXR0b24geworICAgIC13ZWJraXQtYXBw
ZWFyYW5jZTogbm9uZTsKKyAgICBib3JkZXI6IDNweCBzb2xpZCByZ2IoMjM1LCAyMzUsIDIzNSk7
CisgICAgYm9yZGVyLXJhZGl1czogMTBweDsKKyAgICBtaW4td2lkdGg6IDIwMHB4OworICAgIHBh
ZGRpbmc6IDVweCAyMHB4OworICAgIG1hcmdpbjogMCA0MHB4OworICAgIGZvbnQtc2l6ZTogMjVw
eDsKKyAgICBjb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOworICAgIGJhY2tncm91bmQtY29sb3I6
IHRyYW5zcGFyZW50OworCisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKK30KKworYnV0
dG9uOmFjdGl2ZSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOwor
ICAgIGNvbG9yOiByZ2IoNDYsIDUxLCA1NSk7CisgICAgYm9yZGVyLWNvbG9yOiByZ2IoMjM1LCAy
MzUsIDIzNSkgIWltcG9ydGFudDsKK30KKworYnV0dG9uOmZvY3VzIHsKKyAgICBvdXRsaW5lOiBu
b25lOworICAgIGJvcmRlci1jb2xvcjogcmdiKDIzMiwgNzksIDc5KTsKK30KKworLnNtYWxsLWJ1
dHRvbiB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgIGJvcmRlcjogMXB4IHNv
bGlkIHJnYig5NiwgOTYsIDk2KTsKKyAgICBib3JkZXItcmFkaXVzOiAycHg7CisgICAgcGFkZGlu
ZzogMXB4IDRweDsKKyAgICBtYXJnaW46IDAgNHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IHRy
YW5zcGFyZW50OworICAgIGN1cnNvcjogcG9pbnRlcjsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7
CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKK30KKworI2dyYXBoQ29udGFpbmVyIHsK
KyAgZm9udDogMTBweCBzYW5zLXNlcmlmOworICBjb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOyAg
Cit9CisKKy5heGlzIHBhdGgsCisuYXhpcyBsaW5lIHsKKyAgZmlsbDogbm9uZTsKKyAgc3Ryb2tl
OiByZ2IoMjM1LCAyMzUsIDIzNSk7CisgIHNoYXBlLXJlbmRlcmluZzogY3Jpc3BFZGdlczsKK30K
KworLmxlZnQtc2FtcGxlcyB7CisgIGZpbGw6IG5vbmU7CisgIHN0cm9rZTogc3RlZWxibHVlOwor
ICBzdHJva2Utd2lkdGg6IDEuNXB4OworfQorCisucmlnaHQtc2FtcGxlcyB7CisgICAgZmlsbDog
bm9uZTsKKyAgICBzdHJva2U6IHJlZDsKKyAgICBzdHJva2Utd2lkdGg6IDEuNXB4OworfQorCisu
c21hcGxlLXRpbWUgeworICAgIGZpbGw6IG5vbmU7CisgICAgc3Ryb2tlOiBncmVlbjsKKyAgICBz
dHJva2Utd2lkdGg6IDEuNXB4OworfQorCisubGVmdC1tZWFuIHsKKyAgICBmaWxsOiBub25lOwor
ICAgIHN0cm9rZTogeWVsbG93OworICAgIHN0cm9rZS13aWR0aDogMS41cHg7Cit9CisKKy5yaWdo
dC1tZWFuIHsKKyAgICBmaWxsOiBub25lOworICAgIHN0cm9rZTogbWFnZW50YTsKKyAgICBzdHJv
a2Utd2lkdGg6IDEuNXB4OworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1
bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmpzCShyZXZpc2lvbiAw
KQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9t
ZXRlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyNiBAQAord2luZG93LmJlbmNobWFy
a1J1bm5lckNsaWVudCA9Cit7CisgICAgaXRlcmF0aW9uQ291bnQ6IDEsCisgICAgdGVzdHNDb3Vu
dDogbnVsbCwKKyAgICBwcm9ncmVzc0JhcjogbnVsbCwKKyAgICByZWNvcmRUYWJsZTogbnVsbCwK
KyAgICBvcHRpb25zOiB7IHRlc3RJbnRlcnZhbDogMzAwMDAsIGZyYW1lUmF0ZTogNTAsIGVzdGlt
YXRlZEZyYW1lUmF0ZTogdHJ1ZSwgZml4VGVzdENvbXBsZXhpdHkgOiBmYWxzZSB9LAorICAgIHNj
b3JlOiAwLAorICAgIF9pdGVyYXRpb25zU2FtcGxlcnM6IFtdLAorICAgIF9yZXN1bHRzVGFibGU6
IG51bGwsCisgICAgX2lzQ2hyb21lOiAvQ2hyb21lLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQp
ICYmIC9Hb29nbGUgSW5jLy50ZXN0KG5hdmlnYXRvci52ZW5kb3IpLAorICAgIF9pc1NhZmFyaTog
L1NhZmFyaS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJiAvQXBwbGUgQ29tcHV0ZXIvLnRl
c3QobmF2aWdhdG9yLnZlbmRvciksCisgICAgCisgICAgd2lsbEFkZFRlc3RGcmFtZTogZnVuY3Rp
b24gKGZyYW1lKQorICAgIHsKKyAgICAgICAgdmFyIG1haW4gPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCJtYWluIik7CisgICAgICAgIHZhciBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUobWFpbik7
CisgICAgICAgIGZyYW1lLnN0eWxlLmxlZnQgPSBtYWluLm9mZnNldExlZnQgKyBwYXJzZUludChz
dHlsZS5ib3JkZXJMZWZ0V2lkdGgpICsgcGFyc2VJbnQoc3R5bGUucGFkZGluZ0xlZnQpICsgInB4
IjsKKyAgICAgICAgZnJhbWUuc3R5bGUudG9wID0gbWFpbi5vZmZzZXRUb3AgKyBwYXJzZUludChz
dHlsZS5ib3JkZXJUb3BXaWR0aCkgKyBwYXJzZUludChzdHlsZS5wYWRkaW5nVG9wKSArICJweCI7
CisgICAgfSwKKyAgICAKKyAgICBkaWRSdW5UZXN0OiBmdW5jdGlvbiAoKQorICAgIHsKKyAgICAg
ICAgdGhpcy5wcm9ncmVzc0Jhci5pbmNSYW5nZSgpOworICAgIH0sCisgICAgCisgICAgd2lsbFN0
YXJ0Rmlyc3RJdGVyYXRpb246IGZ1bmN0aW9uICgpCisgICAgeworICAgICAgICB0aGlzLl9pdGVy
YXRpb25zU2FtcGxlcnMgPSBbXTsKKyAgICAgICAgdGhpcy5fcmVzdWx0c1RhYmxlID0gbmV3IFJl
Y29yZFRhYmxlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5yZXN1bHRzLXRhYmxlIilbMF0p
OworICAgICAgICAKKyAgICAgICAgdGhpcy5wcm9ncmVzc0JhciA9IG5ldyBQcm9ncmVzc0Jhcihk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJvZ3Jlc3MtY29tcGxldGVkIiksIHRoaXMudGVzdHND
b3VudCk7CisgICAgICAgIHRoaXMucmVjb3JkVGFibGUgPSBuZXcgUmVjb3JkVGFibGUoZG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbCgiLnJlY29yZC10YWJsZSIpWzBdKTsKKyAgICB9LAorICAgIAor
ICAgIGRpZFJ1blN1aXRlczogZnVuY3Rpb24gKHN1aXRlc1NhbXBsZXJzKQorICAgIHsKKyAgICAg
ICAgdGhpcy5faXRlcmF0aW9uc1NhbXBsZXJzLnB1c2goc3VpdGVzU2FtcGxlcnMpOworICAgIH0s
CisgICAgCisgICAgZGlkRmluaXNoTGFzdEl0ZXJhdGlvbjogZnVuY3Rpb24gKCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuc2NvcmUgPSB0aGlzLl9yZXN1bHRzVGFibGUuc2hvd0l0ZXJhdGlvbnModGhp
cy5faXRlcmF0aW9uc1NhbXBsZXJzLCAiIik7CisgICAgICAgIHNob3dSZXN1bHRzKCk7CisgICAg
fSwKKyAgICAKKyAgICBicm93c2VyOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhp
cy5faXNDaHJvbWUpCisgICAgICAgICAgICByZXR1cm4gIkNocm9tZSI7CisgICAgICAgIGlmICh0
aGlzLl9pc1NhZmFyaSkKKyAgICAgICAgICAgIHJldHVybiAiU2FmYXJpIjsKKyAgICAgICAgcmV0
dXJuICIiOworICAgIH0KK30KKworZnVuY3Rpb24gc2hvd1NlY3Rpb24oc2VjdGlvbklkZW50aWZp
ZXIsIHB1c2hTdGF0ZSkKK3sKKyAgICB2YXIgY3VycmVudFNlY3Rpb25FbGVtZW50ID0gZG9jdW1l
bnQucXVlcnlTZWxlY3Rvcigic2VjdGlvbi5zZWxlY3RlZCIpOworICAgIGNvbnNvbGUuYXNzZXJ0
KGN1cnJlbnRTZWN0aW9uRWxlbWVudCk7CisKKyAgICB2YXIgbmV3U2VjdGlvbkVsZW1lbnQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWN0aW9uSWRlbnRpZmllcik7CisgICAgY29uc29sZS5h
c3NlcnQobmV3U2VjdGlvbkVsZW1lbnQpOworCisgICAgY3VycmVudFNlY3Rpb25FbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoInNlbGVjdGVkIik7CisgICAgbmV3U2VjdGlvbkVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgic2VsZWN0ZWQiKTsKKworICAgIGlmIChwdXNoU3RhdGUpCisgICAgICAgIGhpc3Rv
cnkucHVzaFN0YXRlKHtzZWN0aW9uOiBzZWN0aW9uSWRlbnRpZmllcn0sIGRvY3VtZW50LnRpdGxl
KTsKK30KKworZnVuY3Rpb24gc3RhcnRCZW5jaG1hcmsoKQoreworICAgIHZhciBjaGVja2JveGVz
ID0gWyAKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImh0bWwtc3VpdGUiKSwgCisg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMtc3VpdGUiKSwgCisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdmctc3VpdGUiKSwKKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlbXBsYXRlLXN1aXRlIiksCisgICAgXTsKKyAgICB2YXIgZW5hYmxl
ZFN1aXRlcyA9IFN1aXRlcy5maWx0ZXIoZnVuY3Rpb24gKHN1aXRlLCBpbmRleCkgeyByZXR1cm4g
IXN1aXRlLmRpc2FibGVkICYmIGNoZWNrYm94ZXNbaW5kZXhdLmNoZWNrZWQ7IH0pOworICAgIHZh
ciB0ZXN0c0NvdW50ID0gZW5hYmxlZFN1aXRlcy5yZWR1Y2UoZnVuY3Rpb24gKHRlc3RzQ291bnQs
IHN1aXRlKSB7IHJldHVybiB0ZXN0c0NvdW50ICsgc3VpdGUudGVzdHMubGVuZ3RoOyB9LCAwKTsK
KyAgICBiZW5jaG1hcmtSdW5uZXJDbGllbnQudGVzdHNDb3VudCA9IGJlbmNobWFya1J1bm5lckNs
aWVudC5pdGVyYXRpb25Db3VudCAqIHRlc3RzQ291bnQ7CisgICAgYmVuY2htYXJrUnVubmVyQ2xp
ZW50Lm9wdGlvbnNbInRlc3RJbnRlcnZhbCJdID0gcGFyc2VJbnQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3QtaW50ZXJ2YWwiKS52YWx1ZSkgKiAxMDAwOworICAgIGJlbmNobWFya1J1bm5l
ckNsaWVudC5vcHRpb25zWyJmcmFtZVJhdGUiXSA9IHBhcnNlSW50KGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJmcmFtZS1yYXRlIikudmFsdWUpOworICAgIGJlbmNobWFya1J1bm5lckNsaWVudC5v
cHRpb25zWyJlc3RpbWF0ZWRGcmFtZVJhdGUiXSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJl
c3RpbWF0ZWQtZnJhbWUtcmF0ZSIpLmNoZWNrZWQ7ICAgIAorICAgIGJlbmNobWFya1J1bm5lckNs
aWVudC5vcHRpb25zWyJmaXhUZXN0Q29tcGxleGl0eSJdID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImZpeC10ZXN0LWNvbXBsZXhpdHkiKS5jaGVja2VkOworICAgIHZhciBydW5uZXIgPSBuZXcg
QmVuY2htYXJrUnVubmVyKGVuYWJsZWRTdWl0ZXMsIGJlbmNobWFya1J1bm5lckNsaWVudCk7Cisg
ICAgcnVubmVyLnJ1bk11bHRpcGxlSXRlcmF0aW9ucyhiZW5jaG1hcmtSdW5uZXJDbGllbnQuaXRl
cmF0aW9uQ291bnQpOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKQoreworICAgIHNob3dTZWN0
aW9uKCJydW5uaW5nIik7CisgICAgc3RhcnRCZW5jaG1hcmsoKTsKK30KKworZnVuY3Rpb24gc2hv
d1Jlc3VsdHMoc2NvcmUpCit7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCIjcmVzdWx0cyA+IGgxIik7CisgICAgZWxlbWVudC50ZXh0Q29udGVudCA9ICJSZXN1bHRz
OiIKKyAgICAKKyAgICB2YXIgYnJvd3NlciA9IGJlbmNobWFya1J1bm5lckNsaWVudC5icm93c2Vy
KCk7ICAgIAorICAgIGlmIChicm93c2VyLmxlbmd0aCkKKyAgICAgICAgZWxlbWVudC50ZXh0Q29u
dGVudCArPSAiIFticm93c2VyID0gIiArIGJyb3dzZXIgKyAiXSI7CisKKyAgICB2YXIgc2NvcmUg
PSBiZW5jaG1hcmtSdW5uZXJDbGllbnQuc2NvcmUudG9GaXhlZCgyKTsKKyAgICBlbGVtZW50LnRl
eHRDb250ZW50ICs9ICIgW1Njb3JlID0gIiArIHNjb3JlICsgIl0iOworICAgICAgICAKKyAgICBz
aG93U2VjdGlvbigicmVzdWx0cyIsIHRydWUpOworfQorCitmdW5jdGlvbiBzaG93R3JhcGgodGVz
dE5hbWUsIGF4ZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGltZU9mZnNldCkKK3sKKyAgICB2YXIgZWxl
bWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNncmFwaCA+IGgxIik7CisgICAgZWxlbWVu
dC50ZXh0Q29udGVudCA9ICJHcmFwaDoiCisKKyAgICB2YXIgYnJvd3NlciA9IGJlbmNobWFya1J1
bm5lckNsaWVudC5icm93c2VyKCk7ICAgIAorICAgIGlmIChicm93c2VyLmxlbmd0aCkKKyAgICAg
ICAgZWxlbWVudC50ZXh0Q29udGVudCArPSAiIFticm93c2VyID0gIiArIGJyb3dzZXIgKyAiXSI7
CisKKyAgICBpZiAodGVzdE5hbWUubGVuZ3RoKQorICAgICAgICBlbGVtZW50LnRleHRDb250ZW50
ICs9ICIgW3Rlc3QgPSAiICsgdGVzdE5hbWUgKyAiXSI7CisgICAgICAgICAgICAKKyAgICBncmFw
aCgiI2dyYXBoQ29udGFpbmVyIiwgbmV3IFBvaW50KDcwMCwgNDAwKSwgbmV3IEluc2V0cygyMCwg
NTAsIDIwLCA1MCksIGF4ZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGltZU9mZnNldCk7CisgICAgc2hv
d1NlY3Rpb24oImdyYXBoIiwgdHJ1ZSk7ICAgIAorfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9iZW5jaG1h
cmstcnVubmVyLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3J1bm5lci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE5OCBAQAorZnVuY3Rpb24gQmVuY2htYXJrUnVubmVyU3RhdGUoc3VpdGVzKQorewor
ICAgIHRoaXMuX3N1aXRlcyA9IHN1aXRlczsKKyAgICB0aGlzLl9zdWl0ZUluZGV4ID0gLTE7Cisg
ICAgdGhpcy5fdGVzdEluZGV4ID0gMDsKKyAgICB0aGlzLm5leHQoKTsKK30KKworQmVuY2htYXJr
UnVubmVyU3RhdGUucHJvdG90eXBlLmN1cnJlbnRTdWl0ZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICBy
ZXR1cm4gdGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5kZXhdOworfQorCitCZW5jaG1hcmtSdW5u
ZXJTdGF0ZS5wcm90b3R5cGUuY3VycmVudFRlc3QgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIHN1
aXRlID0gdGhpcy5jdXJyZW50U3VpdGUoKTsKKyAgICByZXR1cm4gc3VpdGUgPyBzdWl0ZS50ZXN0
c1t0aGlzLl90ZXN0SW5kZXhdIDogbnVsbDsKK30KKworQmVuY2htYXJrUnVubmVyU3RhdGUucHJv
dG90eXBlLmlzRmlyc3RUZXN0ID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiAhdGhpcy5fdGVz
dEluZGV4OworfQorCitCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUubmV4dCA9IGZ1bmN0
aW9uKCkKK3sKKyAgICB0aGlzLl90ZXN0SW5kZXgrKzsKKworICAgIHZhciBzdWl0ZSA9IHRoaXMu
X3N1aXRlc1t0aGlzLl9zdWl0ZUluZGV4XTsKKyAgICBpZiAoc3VpdGUgJiYgdGhpcy5fdGVzdElu
ZGV4IDwgc3VpdGUudGVzdHMubGVuZ3RoKQorICAgICAgICByZXR1cm4gdGhpczsKKworICAgIHRo
aXMuX3Rlc3RJbmRleCA9IDA7CisgICAgZG8geworICAgICAgICB0aGlzLl9zdWl0ZUluZGV4Kys7
CisgICAgfSB3aGlsZSAodGhpcy5fc3VpdGVJbmRleCA8IHRoaXMuX3N1aXRlcy5sZW5ndGggJiYg
dGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5kZXhdLmRpc2FibGVkKTsKKworICAgIHJldHVybiB0
aGlzOworfQorCitCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUucHJlcGFyZUN1cnJlbnRU
ZXN0ID0gZnVuY3Rpb24ocnVubmVyLCBmcmFtZSkKK3sKKyAgICB2YXIgc3VpdGUgPSB0aGlzLmN1
cnJlbnRTdWl0ZSgpOworICAgIHZhciB0ZXN0ID0gdGhpcy5jdXJyZW50VGVzdCgpOworICAgIHZh
ciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7CisgICAgZnJhbWUub25sb2FkID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIHN1aXRlLnByZXBhcmUocnVubmVyLCBmcmFtZS5jb250ZW50V2luZG93
LCBmcmFtZS5jb250ZW50RG9jdW1lbnQpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7IHByb21pc2Uu
cmVzb2x2ZShyZXN1bHQpOyB9KTsKKyAgICB9CisgICAgZnJhbWUuc3JjID0gdGVzdC51cmw7Cisg
ICAgcmV0dXJuIHByb21pc2U7Cit9CisKK2Z1bmN0aW9uIEJlbmNobWFya1J1bm5lcihzdWl0ZXMs
IGNsaWVudCkKK3sKKyAgICB0aGlzLl9zdWl0ZXMgPSBzdWl0ZXM7CisgICAgdGhpcy5fY2xpZW50
ID0gY2xpZW50OworfQorCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLndhaXRGb3JFbGVtZW50
ID0gZnVuY3Rpb24oc2VsZWN0b3IpCit7CisgICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJv
bWlzZTsKKyAgICB2YXIgY29udGVudERvY3VtZW50ID0gdGhpcy5fZnJhbWUuY29udGVudERvY3Vt
ZW50OworCisgICAgZnVuY3Rpb24gcmVzb2x2ZUlmUmVhZHkoKSB7CisgICAgICAgIHZhciBlbGVt
ZW50ID0gY29udGVudERvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOworICAgICAgICBp
ZiAoZWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnJlc29sdmUoZWxlbWVudCk7
CisgICAgICAgIHNldFRpbWVvdXQocmVzb2x2ZUlmUmVhZHksIDUwKTsKKyAgICB9CisKKyAgICBy
ZXNvbHZlSWZSZWFkeSgpOworICAgIHJldHVybiBwcm9taXNlOworfQorCitCZW5jaG1hcmtSdW5u
ZXIucHJvdG90eXBlLl9hcHBlbmRGcmFtZSA9IGZ1bmN0aW9uKHNyYykKK3sKKyAgICB2YXIgZnJh
bWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBmcmFtZS5zZXRBdHRy
aWJ1dGUoInNjcm9sbGluZyIsICJubyIpOworCisgICAgdmFyIG1hcmdpbkxlZnQgPSBwYXJzZUlu
dChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLm1hcmdpbkxlZnQpOworICAgIHZhciBt
YXJnaW5Ub3AgPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLm1hcmdp
blRvcCk7CisgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoID4gODAwICsgbWFyZ2luTGVmdCAmJiB3
aW5kb3cuaW5uZXJIZWlnaHQgPiA2MDAgKyBtYXJnaW5Ub3ApIHsKKyAgICAgICAgZnJhbWUuc3R5
bGUubGVmdCA9IG1hcmdpbkxlZnQgKyAicHgiOworICAgICAgICBmcmFtZS5zdHlsZS50b3AgPSBt
YXJnaW5Ub3AgKyAicHgiOworICAgIH0gZWxzZSB7CisgICAgICAgIGZyYW1lLnN0eWxlLmxlZnQg
PSAiMHB4IjsKKyAgICAgICAgZnJhbWUuc3R5bGUudG9wID0gIjBweCI7CisgICAgfQorCisgICAg
aWYgKHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGllbnQud2lsbEFkZFRlc3RGcmFtZSkKKyAgICAg
ICAgdGhpcy5fY2xpZW50LndpbGxBZGRUZXN0RnJhbWUoZnJhbWUpOworCisgICAgZG9jdW1lbnQu
Ym9keS5pbnNlcnRCZWZvcmUoZnJhbWUsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisgICAg
dGhpcy5fZnJhbWUgPSBmcmFtZTsKKyAgICByZXR1cm4gZnJhbWU7Cit9CisKK0JlbmNobWFya1J1
bm5lci5wcm90b3R5cGUuX3JlbW92ZUZyYW1lID0gZnVuY3Rpb24oKQoreworICAgIGlmICh0aGlz
Ll9mcmFtZSkgeworICAgICAgICB0aGlzLl9mcmFtZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRo
aXMuX2ZyYW1lKTsKKyAgICAgICAgdGhpcy5fZnJhbWUgPSBudWxsOworICAgIH0KK30KKworQmVu
Y2htYXJrUnVubmVyLnByb3RvdHlwZS5fcnVuVGVzdEFuZFJlY29yZFJlc3VsdHMgPSBmdW5jdGlv
bihzdGF0ZSkKK3sKKyAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgIHZh
ciBzdWl0ZSA9IHN0YXRlLmN1cnJlbnRTdWl0ZSgpOworICAgIHZhciB0ZXN0ID0gc3RhdGUuY3Vy
cmVudFRlc3QoKTsKKyAgICAKKyAgICBpZiAodGhpcy5fY2xpZW50ICYmIHRoaXMuX2NsaWVudC53
aWxsUnVuVGVzdFRlc3QpCisgICAgICAgIHRoaXMuX2NsaWVudC53aWxsUnVuVGVzdChzdWl0ZSwg
dGVzdCk7CisKKyAgICB2YXIgY29udGVudFdpbmRvdyA9IHRoaXMuX2ZyYW1lLmNvbnRlbnRXaW5k
b3c7CisgICAgdmFyIHNlbGYgPSB0aGlzOworCisgICAgc3VpdGUucnVuKGNvbnRlbnRXaW5kb3cs
IHRlc3QsIHRoaXMuX2NsaWVudC5vcHRpb25zLCB0aGlzLl9jbGllbnQucmVjb3JkVGFibGUsIHRo
aXMuX2NsaWVudC5wcm9ncmVzc0JhcikudGhlbihmdW5jdGlvbihzYW1wbGVyKSB7CisgICAgICAg
IHZhciBzYW1wbGVycyA9IHNlbGYuX3N1aXRlc1NhbXBsZXJzW3N1aXRlLm5hbWVdIHx8IFtdOwor
ICAgICAgICAKKyAgICAgICAgc2FtcGxlcnNbdGVzdC5uYW1lXSA9IHNhbXBsZXI7CisgICAgICAg
IHNlbGYuX3N1aXRlc1NhbXBsZXJzW3N1aXRlLm5hbWVdID0gc2FtcGxlcnM7CisKKyAgICAgICAg
aWYgKHNlbGYuX2NsaWVudCAmJiBzZWxmLl9jbGllbnQuZGlkUnVuVGVzdCkKKyAgICAgICAgICAg
IHNlbGYuX2NsaWVudC5kaWRSdW5UZXN0KHN1aXRlLCB0ZXN0KTsKKyAgICAgICAgCisgICAgICAg
IHN0YXRlLm5leHQoKTsKKyAgICAgICAgaWYgKHN0YXRlLmN1cnJlbnRTdWl0ZSgpICE9IHN1aXRl
KQorICAgICAgICAgICAgc2VsZi5fcmVtb3ZlRnJhbWUoKTsKKyAgICAgICAgcHJvbWlzZS5yZXNv
bHZlKHN0YXRlKTsKKyAgICB9KTsKKyAgICAKKyAgICByZXR1cm4gcHJvbWlzZTsKK30KKworQmVu
Y2htYXJrUnVubmVyLnByb3RvdHlwZS5zdGVwID0gZnVuY3Rpb24oc3RhdGUpCit7CisgICAgaWYg
KCFzdGF0ZSkgeworICAgICAgICBzdGF0ZSA9IG5ldyBCZW5jaG1hcmtSdW5uZXJTdGF0ZSh0aGlz
Ll9zdWl0ZXMpOworICAgICAgICB0aGlzLl9zdWl0ZXNTYW1wbGVycyA9IHt9OworICAgIH0KKwor
ICAgIHZhciBzdWl0ZSA9IHN0YXRlLmN1cnJlbnRTdWl0ZSgpOworICAgIGlmICghc3VpdGUpIHsK
KyAgICAgICAgdGhpcy5fZmluYWxpemUoKTsKKyAgICAgICAgdmFyIHByb21pc2UgPSBuZXcgU2lt
cGxlUHJvbWlzZTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybiBw
cm9taXNlOworICAgIH0KKworICAgIGlmIChzdGF0ZS5pc0ZpcnN0VGVzdCgpKSB7CisgICAgICAg
IHRoaXMuX21hc3VyZWRWYWx1ZXNGb3JDdXJyZW50U3VpdGUgPSB7fTsKKyAgICAgICAgdGhpcy5f
YXBwZW5kRnJhbWUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdGUucHJlcGFyZUN1cnJlbnRU
ZXN0KHRoaXMsIHRoaXMuX2ZyYW1lKS50aGVuKGZ1bmN0aW9uKHByZXBhcmVSZXR1cm5WYWx1ZSkg
eworICAgICAgICByZXR1cm4gdGhpcy5fcnVuVGVzdEFuZFJlY29yZFJlc3VsdHMoc3RhdGUpOwor
ICAgIH0uYmluZCh0aGlzKSk7Cit9CisKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUucnVuQWxs
U3RlcHMgPSBmdW5jdGlvbihzdGFydGluZ1N0YXRlKQoreworICAgIHZhciBuZXh0Q2FsbGVlID0g
dGhpcy5ydW5BbGxTdGVwcy5iaW5kKHRoaXMpOworICAgIHRoaXMuc3RlcChzdGFydGluZ1N0YXRl
KS50aGVuKGZ1bmN0aW9uKG5leHRTdGF0ZSkgeworICAgICAgICBpZiAobmV4dFN0YXRlKQorICAg
ICAgICAgICAgbmV4dENhbGxlZShuZXh0U3RhdGUpOworICAgIH0pOworfQorCitCZW5jaG1hcmtS
dW5uZXIucHJvdG90eXBlLnJ1bk11bHRpcGxlSXRlcmF0aW9ucyA9IGZ1bmN0aW9uKGl0ZXJhdGlv
bkNvdW50KQoreworICAgIHZhciBzZWxmID0gdGhpczsKKyAgICB2YXIgY3VycmVudEl0ZXJhdGlv
biA9IDA7CisKKyAgICB0aGlzLl9ydW5OZXh0SXRlcmF0aW9uID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgIGN1cnJlbnRJdGVyYXRpb24rKzsKKyAgICAgICAgaWYgKGN1cnJlbnRJdGVyYXRpb24gPCBp
dGVyYXRpb25Db3VudCkKKyAgICAgICAgICAgIHNlbGYucnVuQWxsU3RlcHMoKTsKKyAgICAgICAg
ZWxzZSBpZiAodGhpcy5fY2xpZW50ICYmIHRoaXMuX2NsaWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0
aW9uKQorICAgICAgICAgICAgc2VsZi5fY2xpZW50LmRpZEZpbmlzaExhc3RJdGVyYXRpb24oKTsK
KyAgICB9CisKKyAgICBpZiAoc2VsZi5fY2xpZW50ICYmIHNlbGYuX2NsaWVudC53aWxsU3RhcnRG
aXJzdEl0ZXJhdGlvbikKKyAgICAgICAgc2VsZi5fY2xpZW50LndpbGxTdGFydEZpcnN0SXRlcmF0
aW9uKGl0ZXJhdGlvbkNvdW50KTsKKworICAgIHNlbGYucnVuQWxsU3RlcHMoKTsKK30KKworQmVu
Y2htYXJrUnVubmVyLnByb3RvdHlwZS5fZmluYWxpemUgPSBmdW5jdGlvbigpCit7CisgICAgdGhp
cy5fcmVtb3ZlRnJhbWUoKTsKKyAgICAgICAgCisgICAgaWYgKHRoaXMuX2NsaWVudCAmJiB0aGlz
Ll9jbGllbnQuZGlkUnVuU3VpdGVzKQorICAgICAgICB0aGlzLl9jbGllbnQuZGlkUnVuU3VpdGVz
KHRoaXMuX3N1aXRlc1NhbXBsZXJzKTsKKworICAgIGlmICh0aGlzLl9ydW5OZXh0SXRlcmF0aW9u
KQorICAgICAgICB0aGlzLl9ydW5OZXh0SXRlcmF0aW9uKCk7Cit9CkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9ncmFwaC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9ncmFwaC5qcwko
cmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3Vy
Y2VzL2dyYXBoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQwIEBACitmdW5jdGlvbiBn
cmFwaChzZWxlY3Rvciwgc2l6ZSwgbWFyZ2lucywgYXhlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1l
T2Zmc2V0KQoreworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxl
Y3Rvcik7CisgICAgZWxlbWVudC50ZXh0Q29udGVudCA9IG51bGw7CisKKyAgICB2YXIgeCA9IGQz
LnNjYWxlLmxpbmVhcigpCisgICAgICAgICAgICAucmFuZ2UoWzAsIHNpemUud2lkdGhdKQorICAg
ICAgICAgICAgLmRvbWFpbihkMy5leHRlbnQoc2FtcGxlcywgZnVuY3Rpb24oZCkgeyByZXR1cm4g
ZC50aW1lT2Zmc2V0OyB9KSk7ICAgICAgICAgICAgCisKKyAgICB2YXIgeUxlZnQgPSBkMy5zY2Fs
ZS5saW5lYXIoKQorICAgICAgICAgICAgLnJhbmdlKFtzaXplLmhlaWdodCwgMF0pCisgICAgICAg
ICAgICAuZG9tYWluKFswLCBkMy5tYXgoc2FtcGxlcywgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC52
YWx1ZXNbMF07IH0pXSk7CisKKyAgICB2YXIgeVJpZ2h0ID0gZDMuc2NhbGUubGluZWFyKCkKKyAg
ICAgICAgICAgIC5yYW5nZShbc2l6ZS5oZWlnaHQsIDBdKQorICAgICAgICAgICAgLmRvbWFpbihb
MCwgZDMubWF4KHNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudmFsdWVzWzFdOyB9KV0p
OworCisgICAgdmFyIHhBeGlzID0gZDMuc3ZnLmF4aXMoKQorICAgICAgICAgICAgLnNjYWxlKHgp
CisgICAgICAgICAgICAub3JpZW50KCJib3R0b20iKTsKKworICAgIHZhciB5QXhpc0xlZnQgPSBk
My5zdmcuYXhpcygpCisgICAgICAgICAgICAuc2NhbGUoeUxlZnQpCisgICAgICAgICAgICAub3Jp
ZW50KCJsZWZ0Iik7CisKKyAgICB2YXIgeUF4aXNSaWdodCA9IGQzLnN2Zy5heGlzKCkKKyAgICAg
ICAgICAgIC5zY2FsZSh5UmlnaHQpCisgICAgICAgICAgICAub3JpZW50KCJyaWdodCIpOworCisg
ICAgdmFyIGxpbmVMZWZ0ID0gZDMuc3ZnLmxpbmUoKQorICAgICAgICAgICAgLngoZnVuY3Rpb24o
ZCkgeyByZXR1cm4geChkLnRpbWVPZmZzZXQpOyB9KQorICAgICAgICAgICAgLnkoZnVuY3Rpb24o
ZCkgeyByZXR1cm4geUxlZnQoZC52YWx1ZXNbMF0pOyB9KTsKKworICAgIHZhciBsaW5lUmlnaHQg
PSBkMy5zdmcubGluZSgpCisgICAgICAgICAgICAueChmdW5jdGlvbihkKSB7IHJldHVybiB4KGQu
dGltZU9mZnNldCk7IH0pCisgICAgICAgICAgICAueShmdW5jdGlvbihkKSB7IHJldHVybiB5Umln
aHQoZC52YWx1ZXNbMV0pOyB9KTsKKworICAgIHNhbXBsZXMuZm9yRWFjaChmdW5jdGlvbihkKSB7
CisgICAgICAgIGQudGltZU9mZnNldCA9ICtkLnRpbWVPZmZzZXQ7CisgICAgICAgIGQudmFsdWVz
WzBdID0gK2QudmFsdWVzWzBdOworICAgICAgICBkLnZhbHVlc1sxXSA9ICtkLnZhbHVlc1sxXTsg
ICAgICAgIAorICAgIH0pOyAgICAKKworICAgIHZhciBzYW1wbGVkU2FtcGxlcyA9IHNhbXBsZXMu
ZmlsdGVyKGZ1bmN0aW9uKGQpIHsKKyAgICAgICAgcmV0dXJuIGQudGltZU9mZnNldCA+PSBzYW1w
bGluZ1RpbWVPZmZzZXQ7CisgICAgfSk7CisgICAgCisgICAgdmFyIG1lYW5MZWZ0ID0gZDMubWVh
bihzYW1wbGVkU2FtcGxlcywgZnVuY3Rpb24oZCkgeworICAgICAgICByZXR1cm4gK2QudmFsdWVz
WzBdOworICAgIH0pOworCisgICAgdmFyIG1lYW5SaWdodCA9IGQzLm1lYW4oc2FtcGxlZFNhbXBs
ZXMsIGZ1bmN0aW9uKGQpIHsKKyAgICAgICAgcmV0dXJuICtkLnZhbHVlc1sxXTsKKyAgICB9KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB2YXIgc3ZnID0gZDMuc2VsZWN0KHNl
bGVjdG9yKS5hcHBlbmQoInN2ZyIpCisgICAgICAgIC5hdHRyKCJ3aWR0aCIsIHNpemUud2lkdGgg
KyBtYXJnaW5zLmxlZnQgKyBtYXJnaW5zLnJpZ2h0KQorICAgICAgICAuYXR0cigiaGVpZ2h0Iiwg
c2l6ZS5oZWlnaHQgKyBtYXJnaW5zLnRvcCArIG1hcmdpbnMuYm90dG9tKQorICAgICAgICAuYXBw
ZW5kKCJnIikKKyAgICAgICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAidHJhbnNsYXRlKCIgKyBt
YXJnaW5zLmxlZnQgKyAiLCIgKyBtYXJnaW5zLnRvcCArICIpIik7CisKKyAgICAvLyB4LWF4aXMK
KyAgICBzdmcuYXBwZW5kKCJnIikKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgInggYXhpcyIpCisg
ICAgICAgIC5hdHRyKCJmaWxsIiwgInJnYigyMzUsIDIzNSwgMjM1KSIpCisgICAgICAgIC5hdHRy
KCJ0cmFuc2Zvcm0iLCAidHJhbnNsYXRlKDAsIiArIHNpemUuaGVpZ2h0ICsgIikiKQorICAgICAg
ICAuY2FsbCh4QXhpcykKKyAgICAgICAgLmFwcGVuZCgidGV4dCIpCisgICAgICAgICAgICAuYXR0
cigiY2xhc3MiLCAibGFiZWwiKQorICAgICAgICAgICAgLmF0dHIoIngiLCBzaXplLndpZHRoKQor
ICAgICAgICAgICAgLmF0dHIoInkiLCAtNikKKyAgICAgICAgICAgIC5hdHRyKCJmaWxsIiwgInJn
YigyMzUsIDIzNSwgMjM1KSIpCisgICAgICAgICAgICAuc3R5bGUoInRleHQtYW5jaG9yIiwgImVu
ZCIpCisgICAgICAgICAgICAudGV4dCgidGltZSIpOworICAgICAgICAgICAgICAgICAKKyAgICAv
LyB5TGVmdC1heGlzCisgICAgc3ZnLmFwcGVuZCgiZyIpCisgICAgICAgIC5hdHRyKCJjbGFzcyIs
ICJ5IGF4aXMiKQorICAgICAgICAuYXR0cigiZmlsbCIsICJzdGVlbGJsdWUiKQorICAgICAgICAu
Y2FsbCh5QXhpc0xlZnQpCisgICAgICAgIC5hcHBlbmQoInRleHQiKQorICAgICAgICAgICAgLmF0
dHIoImNsYXNzIiwgImxhYmVsIikKKyAgICAgICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAicm90
YXRlKC05MCkiKQorICAgICAgICAgICAgLmF0dHIoInkiLCA2KQorICAgICAgICAgICAgLmF0dHIo
ImZpbGwiLCAic3RlZWxibHVlIikKKyAgICAgICAgICAgIC5hdHRyKCJkeSIsICIuNzFlbSIpCisg
ICAgICAgICAgICAuc3R5bGUoInRleHQtYW5jaG9yIiwgImVuZCIpCisgICAgICAgICAgICAudGV4
dChheGVzWzBdKTsKKworICAgIC8vIHlSaWdodC1heGlzCisgICAgc3ZnLmFwcGVuZCgiZyIpCisg
ICAgICAgIC5hdHRyKCJjbGFzcyIsICJ5IGF4aXMiKQorICAgICAgICAuYXR0cigiZmlsbCIsICJy
ZWQiKQorICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiICsgc2l6ZS53aWR0
aCArICIsIDApIikKKyAgICAgICAgLmNhbGwoeUF4aXNSaWdodCkKKyAgICAgICAgLmFwcGVuZCgi
dGV4dCIpCisgICAgICAgICAgICAuYXR0cigiY2xhc3MiLCAibGFiZWwiKQorICAgICAgICAgICAg
LmF0dHIoInRyYW5zZm9ybSIsICJyb3RhdGUoLTkwKSIpCisgICAgICAgICAgICAuYXR0cigieSIs
IDYpCisgICAgICAgICAgICAuYXR0cigiZmlsbCIsICJyZWQiKQorICAgICAgICAgICAgLmF0dHIo
ImR5IiwgIi43MWVtIikKKyAgICAgICAgICAgIC5zdHlsZSgidGV4dC1hbmNob3IiLCAiZW5kIikK
KyAgICAgICAgICAgIC50ZXh0KGF4ZXNbMV0pOworCisgICAgLy8gbGVmdC1tZWFuCisgICAgc3Zn
LmFwcGVuZCgic3ZnOmxpbmUiKQorICAgICAgICAuYXR0cigieDEiLCB4KDApKQorICAgICAgICAu
YXR0cigieDIiLCBzaXplLndpZHRoKQorICAgICAgICAuYXR0cigieTEiLCB5TGVmdChtZWFuTGVm
dCkpCisgICAgICAgIC5hdHRyKCJ5MiIsIHlMZWZ0KG1lYW5MZWZ0KSkKKyAgICAgICAgLmF0dHIo
ImNsYXNzIiwgImxlZnQtbWVhbiIpOworCisgICAgLy8gcmlnaHQtbWVhbgorICAgIHN2Zy5hcHBl
bmQoInN2ZzpsaW5lIikKKyAgICAgICAgLmF0dHIoIngxIiwgeCgwKSkKKyAgICAgICAgLmF0dHIo
IngyIiwgc2l6ZS53aWR0aCkKKyAgICAgICAgLmF0dHIoInkxIiwgeVJpZ2h0KG1lYW5SaWdodCkp
CisgICAgICAgIC5hdHRyKCJ5MiIsIHlSaWdodChtZWFuUmlnaHQpKQorICAgICAgICAuYXR0cigi
Y2xhc3MiLCAicmlnaHQtbWVhbiIpOyAgICAgICAgCisKKyAgICAvLyBzYW1wbGluZ1RpbWVPZmZz
ZXQKKyAgICBzdmcuYXBwZW5kKCJsaW5lIikKKyAgICAgICAgLmF0dHIoIngxIiwgeChzYW1wbGlu
Z1RpbWVPZmZzZXQpKQorICAgICAgICAuYXR0cigieDIiLCB4KHNhbXBsaW5nVGltZU9mZnNldCkp
CisgICAgICAgIC5hdHRyKCJ5MSIsIHlMZWZ0KDApKQorICAgICAgICAuYXR0cigieTIiLCB5TGVm
dCh5QXhpc0xlZnQuc2NhbGUoKS5kb21haW4oKVsxXSkpCisgICAgICAgIC5hdHRyKCJjbGFzcyIs
ICJzbWFwbGUtdGltZSIpOworCisgICAgLy8gbGVmdC1zYW1wbGVzCisgICAgc3ZnLmFwcGVuZCgi
cGF0aCIpCisgICAgICAgIC5kYXR1bShzYW1wbGVzKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAi
bGVmdC1zYW1wbGVzIikKKyAgICAgICAgLmF0dHIoImQiLCBsaW5lTGVmdCk7CisgICAgICAgIAor
ICAgIC8vIHJpZ2h0LXNhbXBsZXMKKyAgICBzdmcuYXBwZW5kKCJwYXRoIikKKyAgICAgICAgLmRh
dHVtKHNhbXBsZXMpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJyaWdodC1zYW1wbGVzIikKKyAg
ICAgICAgLmF0dHIoImQiLCBsaW5lUmlnaHQpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMJKHJldmlzaW9u
IDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy90ZXN0
cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIxMCBAQAordmFyIFRpdGxlcyA9CitbCisg
ICAgeworICAgICAgICB0ZXh0OiAiVGVzdCBOYW1lIiwKKyAgICAgICAgd2lkdGg6IDI1LAorICAg
ICAgICBjaGlsZHJlbjogW10KKyAgICB9LAorICAgIHsKKyAgICAgICAgdGV4dDogIkFuaW1hdGVk
IEl0ZW1zIiwKKyAgICAgICAgd2lkdGg6IDMxLAorICAgICAgICBjaGlsZHJlbjoKKyAgICAgICAg
WworICAgICAgICAgICAgeyB0ZXh0OiAgICJBdmcuIiwgd2lkdGg6IDYsIGNoaWxkcmVuOiBbXSB9
LAorICAgICAgICAgICAgeyB0ZXh0OiAiXHUwMGIxIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9
LAorICAgICAgICAgICAgeyB0ZXh0OiAgICJXLjUlIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9
LAorICAgICAgICAgICAgeyB0ZXh0OiAgICJTdGQuIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9
LAorICAgICAgICAgICAgeyB0ZXh0OiAgICAgICIlIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9
LAorICAgICAgICBdCisgICAgfSwKKyAgICB7CisgICAgICAgIHRleHQ6ICJGUFMiLAorICAgICAg
ICB3aWR0aDogMzEsCisgICAgICAgIGNoaWxkcmVuOgorICAgICAgICBbCisgICAgICAgICAgICB7
IHRleHQ6ICAgIkF2Zy4iLCB3aWR0aDogNiwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7
IHRleHQ6ICJcdTAwYjEiLCB3aWR0aDogNSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7
IHRleHQ6ICAgIlcuNSUiLCB3aWR0aDogNSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7
IHRleHQ6ICAgIlN0ZC4iLCB3aWR0aDogNSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7
IHRleHQ6ICAgICAgIiUiLCB3aWR0aDogNSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgIF0KKyAg
ICB9LAorICAgIHsKKyAgICAgICAgdGV4dDogIlNjb3JlIiwKKyAgICAgICAgd2lkdGg6IDYsCisg
ICAgICAgIGNoaWxkcmVuOiBbXQorICAgIH0sCisgICAgeworICAgICAgICB0ZXh0OiAiU2FtcGxl
cyIsCisgICAgICAgIHdpZHRoOiA3LAorICAgICAgICBjaGlsZHJlbjogW10KKyAgICB9CitdOwor
Cit2YXIgU3VpdGVzID0gW107CisKK1N1aXRlcy5wdXNoKHsKKyAgICBuYW1lOiAiSFRNTCBCb3Vu
Y2luZyBQYXJ0aWNsZXMiLAorICAgIHByZXBhcmU6IGZ1bmN0aW9uKHJ1bm5lciwgY29udGVudFdp
bmRvdywgY29udGVudERvY3VtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0
Rm9yRWxlbWVudCgiI3N0YWdlIikudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAg
ICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAgCisgICAgcnVuOiBm
dW5jdGlvbihjb250ZW50V2luZG93LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jl
c3NCYXIpCisgICAgeworICAgICAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmso
dGhpcywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICB9LAor
CisgICAgdGl0bGVzOiBUaXRsZXMsCisgICAgdGVzdHM6IFsKKyAgICAgICAgeyAKKyAgICAgICAg
ICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVz
Lmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9MTIm
cGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKKyAgICAgICAgICAgIG5hbWU6ICJib3Vu
Y2luZyBjaXJjbGVzIgorICAgICAgICB9LAorICAgICAgICB7IAorICAgICAgICAgICAgdXJsOiAi
Li4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbD9nYWlu
PTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhl
aWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3RhciIsCisgICAgICAgICAgICBuYW1lOiAiYm91bmNp
bmcgY2xpcHBlZCByZWN0cyIKKyAgICAgICAgfSwKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHVy
bDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/
Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9NTAmcGFydGlj
bGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3JhZGllbnQiLAorICAgICAgICAgICAgbmFt
ZTogImJvdW5jaW5nIGdyYWRpZW50IGNpcmNsZXMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mt
aW1hZ2VzLmh0bWw/Z2Fpbj0wLjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0yJnBhcnRpY2xlV2lk
dGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2
ZyIsCisgICAgICAgICAgICBuYW1lOiAiYm91bmNpbmcgU1ZHIGltYWdlcyIKKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0
PTUmcGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJj
ZXMveWluLXlhbmcucG5nIiwKKyAgICAgICAgICAgIG5hbWU6ICJib3VuY2luZyBQTkcgaW1hZ2Vz
IgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy90ZXh0
L2xheWVyaW5nLXRleHQuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMCIs
CisgICAgICAgICAgICBuYW1lOiAibGF5ZXJpbmcgdGV4dCIKKyAgICAgICAgfSwKKyAgICBdCit9
KTsKKworU3VpdGVzLnB1c2goCit7CisgICAgbmFtZTogIkNhbnZhcyBCb3VuY2luZyBQYXJ0aWNs
ZXMiLAorICAgIHByZXBhcmU6IGZ1bmN0aW9uKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVu
dERvY3VtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgi
I3N0YWdlIikudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgcmV0dXJuIGVs
ZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sICAKKyAgICAKKyAgICBydW46IGZ1bmN0aW9uKGNv
bnRlbnRXaW5kb3csIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKKyAg
ICB7CisgICAgICAgIHJldHVybiBjb250ZW50V2luZG93LnJ1bkJlbmNobWFyayh0aGlzLCB0ZXN0
LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIH0sCisgICAgCisgICAg
dGl0bGVzOiBUaXRsZXMsCisgICAgdGVzdHM6CisgICAgWworICAgICAgICB7IAorICAgICAgICAg
ICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFw
ZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0
aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUiLAorICAgICAgICAgICAgbmFtZTog
ImNhbnZhcyBib3VuY2luZyBjaXJjbGVzIgorICAgICAgICB9LAorICAgICAgICB7IAorICAgICAg
ICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1z
aGFwZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMDAmcGFydGljbGVX
aWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3RhciIsCisgICAgICAg
ICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGNsaXBwZWQgcmVjdHMiCisgICAgICAgIH0sCisg
ICAgICAgIHsgCisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
Ym91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGlt
aXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZm
aWxsPWdyYWRpZW50IiwKKyAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgZ3JhZGll
bnQgY2lyY2xlcyIKKyAgICAgICAgfSwKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHVybDogIi4u
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/Z2Fp
bj0wLjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0xJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVI
ZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAg
ICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIFNWRyBpbWFnZXMiCisgICAgICAgIH0sCisgICAgICAg
IHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2lu
Zy1jYW52YXMtaW1hZ2VzLmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEwMDAmcmVtb3ZlTGltaXQ9MTAw
MCZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNl
cy95aW4teWFuZy5wbmciLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBQTkcg
aW1hZ2VzIgorICAgICAgICB9LAorICAgIF0KK30pOworCitTdWl0ZXMucHVzaCgKK3sKKyAgICBu
YW1lOiAiU1ZHIEJvdW5jaW5nIFBhcnRpY2xlcyIsCisgICAgcHJlcGFyZTogZnVuY3Rpb24ocnVu
bmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpCisgICAgeworICAgICAgICByZXR1
cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCIjc3RhZ2UiKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50
KSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAgfSwKKyAg
ICAKKyAgICBydW46IGZ1bmN0aW9uKGNvbnRlbnRXaW5kb3csIHRlc3QsIG9wdGlvbnMsIHJlY29y
ZFRhYmxlLCBwcm9ncmVzc0JhcikKKyAgICB7CisgICAgICAgIHJldHVybiBjb250ZW50V2luZG93
LnJ1bkJlbmNobWFyayh0aGlzLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NC
YXIpOworICAgIH0sCisgICAgCisgICAgdGl0bGVzOiBUaXRsZXMsCisgICAgdGVzdHM6CisgICAg
WworICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP2dhaW49NiZhZGRMaW1pdD0xMDAmcmVtb3ZlTGlt
aXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIs
CisgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIGNpcmNsZXMiLAorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
Ym91bmNpbmctc3ZnLXNoYXBlcy5odG1sP2dhaW49MC42JmFkZExpbWl0PTEwJnJlbW92ZUxpbWl0
PTEmcGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3Rh
ciIsCisgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIGNsaXBwZWQgcmVjdHMiLAorICAg
ICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP2dhaW49MC44JmFkZExpbWl0PTEwJnJl
bW92ZUxpbWl0PTQmcGFydGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJj
bGUmZmlsbD1ncmFkaWVudCIsCisgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIGdyYWRp
ZW50IGNpcmNsZXMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4u
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw/Z2Fpbj0w
LjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0yJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWln
aHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICBu
YW1lOiAiU1ZHIGJvdW5jaW5nIFNWRyBpbWFnZXMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmct
aW1hZ2VzLmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lk
dGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBu
ZyIsCisgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIFBORyBpbWFnZXMiCisgICAgICAg
IH0sCisgICAgXQorfSk7CisKK1N1aXRlcy5wdXNoKAoreworICAgIG5hbWU6ICJTdGFnZSBUZW1w
bGF0ZXMgKENhbiBiZSB1c2VkIGZvciBuZXcgdGVzdHMpIiwKKyAgICBwcmVwYXJlOiBmdW5jdGlv
bihydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkKKyAgICB7CisgICAgICAg
IHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoIiNzdGFnZSIpLnRoZW4oZnVuY3Rpb24gKGVs
ZW1lbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsKKyAgICB9
LAorICAgIAorICAgIHJ1bjogZnVuY3Rpb24oY29udGVudFdpbmRvdywgdGVzdCwgb3B0aW9ucywg
cmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRX
aW5kb3cucnVuQmVuY2htYXJrKHRoaXMsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9n
cmVzc0Jhcik7CisgICAgfSwKKyAgICAKKyAgICB0aXRsZXM6IFRpdGxlcywKKyAgICB0ZXN0czoK
KyAgICBbCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL3RlbXBsYXRlL3Rl
bXBsYXRlLWNzcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSIsCisgICAg
ICAgICAgICBuYW1lOiAidGVtcGxhdGUiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHVybDogIi4uL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNhbnZhcy5odG1sP2dhaW49MSZh
ZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIHRl
bXBsYXRlIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0
cy90ZW1wbGF0ZS90ZW1wbGF0ZS1zdmcuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxp
bWl0PTUmPG90aGVyX3BhcmFtdGVyPj08dmFsdWU+IiwKKyAgICAgICAgICAgIG5hbWU6ICJzdmcg
dGVtcGxhdGUiCisgICAgICAgIH0sCisgICAgXQorfSk7CisKK2Z1bmN0aW9uIHN1aXRlRnJvbU5h
bWUobmFtZSkgeworICAgIHJldHVybiBTdWl0ZXMuZmluZChmdW5jdGlvbihzdWl0ZSkgeyByZXR1
cm4gc3VpdGUubmFtZSA9PSBuYW1lOyB9KTsKK30KKworZnVuY3Rpb24gdGVzdEZyb21OYW1lKHN1
aXRlLCBuYW1lKSB7CisgICAgcmV0dXJuIHN1aXRlLnRlc3RzLmZpbmQoZnVuY3Rpb24odGVzdCkg
eyByZXR1cm4gdGVzdC5uYW1lID09IG5hbWU7IH0pOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262179</attachid>
            <date>2015-09-30 09:52:09 -0700</date>
            <delta_ts>2015-10-01 14:20:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149053-20150930095144.patch</filename>
            <type>text/plain</type>
            <size>175271</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAzMzEpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5NCBAQAorMjAxNS0wOS0yOSAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IEluc3RlYWQgb2YgbWVhc3VyaW5nIHRoZSBGUFMgb2YgdGhlIGFuaW1hdGlvbiwgdGhpcyBiZW5j
aG1hcmsgbWVhc3VyZXMgdGhlCisgICAgICAgIHRlc3QgY29tcGxleGl0eSB3aGVuIHJlbmRlcmlu
ZyBhdCBhIHNldC1wb2ludCBGUFMgd2hpY2ggc2hvdWxkIGJlIGxvd2VyCisgICAgICAgIHRoYW4g
NjAgRlBTLiBUaGlzIGJlbmNobWFyayB0cmllcyB0byBzdGF5IGF0IHRoZSBzZXQtcG9pbnQgRlBT
IGJ5IHVzaW5nCisgICAgICAgIGEgY2xvc2VkIGxvb3AgY29udHJvbCBzeXN0ZW0gUElEIGZ1bmN0
aW9uLiBUaGUgZ2FpbiBvZiB0aGUgc3lzdGVtIGlzIHBhc3NlZAorICAgICAgICBhcyBhIHBhcmFt
ZXRlciB3aGVuIHJ1bm5pbmcgdGhlIHRlc3QuIE1lYXN1cmluZyB0aGUgRlBTIGZhaXRoZnVsbHkg
cmVzdWx0cworICAgICAgICB2ZXJ5IGZsdWN0dWF0aW5nIHZhbHVlcy4gQSBLYWxtYW4gZmlsdGVy
IGlzIHVzZWQgdG8gZ2l2ZSBhIGJldHRlciBlc3RpbWF0ZQorICAgICAgICBmb3IgdGhlIGN1cnJl
bnQgRlBTLgorCisgICAgICAgIFRoZSBhbmltYXRpb24gb2YgdGhlIHRlc3RzIGlzIGRvbmUgbWFu
dWFsbHkuIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGlzCisgICAgICAgIGNhbGxlZCB3aXRoIGEg
Y2FsbGJhY2suIEluc2lkZSB0aGlzIGNhbGxiYWNrLCB0aGUgdGVzdCBpcyBhbmltYXRpbmcgYnkK
KyAgICAgICAgY2hhbmdpbmcgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZWxlbWVudHMgaW5zaWRlIHRo
ZSBwYWdlLiBUaGUgdGVzdCBjb21wbGV4aXR5CisgICAgICAgIG1heSBjaGFuZ2UgYWxzbyBpZiB0
aGUgY3VycmVudCBGUFMgaXMgbm90IGVxdWFsIHRvIHRoZSBkZXNpcmVkIEZQUy4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgc3BsaXQgdG8gdGhlc2Ugc21hbGxlciBwYXRjaGVzOgor
ICAgICAgICBbc2hhcmVkXTogU2hhcmVkIG9iamVjdHMgdXNlZCBieSB0aGUgdGVzdHMgYW5kIHRo
ZSBydW5uZXIuCisgICAgICAgIFtiZW5jaG1hcmtdOiBNYW5hZ2luZyBhbmltYXRpbmcgYW5kIHR1
bmluZyB0aGUgdGVzdHMuCisgICAgICAgIFtzdGFnZV06IEJhc2Ugb2JqZWN0cyBmb3Igc3RhZ2Ut
YmFzZWQgdGVzdHMuCisgICAgICAgIFtib3VuY2luZy1jc3MtcGFydGljbGVzXTogRXhhbXBsZXMg
Zm9yIGFuaW1hdGluZyBIVE1MRWxlbWVudHMuCisgICAgICAgIFtib3VuY2luZy1jYW52YXMtcGFy
dGljbGVzXTogRXhhbXBsZXMgZm9yIGFuaW1hdGlvbnMgb24gYSBjYW52YXMuCisgICAgICAgIFti
b3VuY2luZy1zdmctcGFydGljbGVzXTogRXhhbXBsZXMgZm9yIGFuaW1hdGluZyBTVkdFbGVtZW50
cy4KKyAgICAgICAgW3RleHRdOiBBbiBleGFtcGxlIGZvciBhbmltYXRpbmcgdGV4dCBvbiBhIENT
UyBzdGFnZS4KKyAgICAgICAgW3RlbXBsYXRlXTogRW1wdHkgdGVtcGxhdGVzIGZvciBuZXcgdGVz
dHMuCisgICAgICAgIFtydW5uZXJdOiBUaGUgYmVuY2htYXJrIHRlc3QgaGFybmVzcy4KKworICAg
ICAgICBbc2hhcmVkXQorICAgICAgICBUaGlzIHBhdGNoIHJlcHJlc2VudHMgdGhlIHNoYXJlZCBv
YmplY3RzIHdoaWNoIGFyZSB1c2VkIGJ5IHRoZSB0ZXN0cyBhbmQKKyAgICAgICAgdGhlIGJlbmNo
bWFyay1ydW5uZXIuCisKKyAgICAgICAgKiBBbmltb21ldGVyOiBBZGRlZC4KKyAgICAgICAgKiBB
bmltb21ldGVyL3Jlc291cmNlczogQWRkZWQuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0
ZXIvcmVzb3VyY2VzL2FsZ29yaXRobS5qczogQWRkZWQuCisgICAgICAgIChBcnJheS5wcm90b3R5
cGUuc3dhcCk6CisgICAgICAgIChIZWFwKTogTWluL01heCBIZWFwIG9iamVjdAorICAgICAgICAo
SGVhcC5wcm90b3R5cGUuX3BhcmVudEluZGV4KTogR2l2ZW4gdGhlIGNoaWxkIG5vZGUgaW5kZXgs
IGl0IHJldHVybnMgdGhlIHBhcmVudCBpbmRleC4KKyAgICAgICAgKEhlYXAucHJvdG90eXBlLl9s
ZWZ0SW5kZXgpOiBHaXZlbiB0aGUgcGFyZW50IG5vZGUgaW5kZXgsIGl0IHJldHVybnMgdGhlIGxl
ZnQgbm9kZSBpbmRleC4KKyAgICAgICAgKEhlYXAucHJvdG90eXBlLl9yaWdodEluZGV4KTogR2l2
ZW4gdGhlIHBhcmVudCBub2RlIGluZGV4LCBpdCByZXR1cm5zIHRoZSByaWdodCBub2RlIGluZGV4
LgorICAgICAgICAoSGVhcC5wcm90b3R5cGUuX2NoaWxkSW5kZXgpOiBHaXZlbiB0aGUgcGFyZW50
IG5vZGUgaW5kZXgsIGl0IHJldHVybnMgdGhlIGNoaWxkIGluZGV4IHRoYXQgbWF5IHZpb2xhdGUg
dGhlIGhlYXAgcHJvcGVydHkuCisgICAgICAgIChIZWFwLnByb3RvdHlwZS5pbml0KTogSW5pdGlh
bGl6ZXMgdGhlIGhlYXAgc3RhdGUuCisgICAgICAgIChIZWFwLnByb3RvdHlwZS50b3ApOiBSZXR1
cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgdGhlIHRvcCBvZiB0aGUgaGVhcC4KKyAgICAgICAgKEhl
YXAucHJvdG90eXBlLnB1c2gpOiBQdXNoZXMgYSBuZXcgbm9kZSBhdCB0aGUgdG9wIG9mIHRoZSBo
ZWFwLgorICAgICAgICAoSGVhcC5wcm90b3R5cGUucG9wKTogRXh0cmFjdHMgdGhlIHRvcCBub2Rl
IG9mIHRoZSBoZWFwLgorICAgICAgICAoSGVhcC5wcm90b3R5cGUuX2J1YmJsZSk6IEZpeGVzIHRo
ZSBoZWFwIHByb3BlcnR5IGJ5IG1vdmluZyB1cHdhcmQuCisgICAgICAgIChIZWFwLnByb3RvdHlw
ZS5fc2luayk6IEZpeGVzIHRoZSBoZWFwIHByb3BlcnR5IGJ5IG1vdmluZyBkb3dud2FyZC4KKyAg
ICAgICAgKEhlYXAucHJvdG90eXBlLnN0cik6IFByaW50cyB0aGUgbm9kZXMgb2YgdGhlIGhlYXAg
dG8gYSBzdHJpbmcuCisgICAgICAgIChIZWFwLnByb3RvdHlwZS52YWx1ZXMpOiBSZXR1cm5zIHRo
ZSBsYXN0ICJzaXplIiBoZWFwIGVsZW1lbnRzIHZhbHVlcy4KKyAgICAgICAgCisgICAgICAgIChB
bGdvcml0aG0uY3JlYXRlTWluSGVhcCk6IENyZWF0ZXMgYSBzaXplLWJvdW5kZWQgbWluLWhlYXAg
b2JqZWN0LgorICAgICAgICAoQWxnb3JpdGhtLmNyZWF0ZU1heEhlYXApOiBDcmVhdGVzIGEgc2l6
ZS1ib3VuZGVkIG1heC1oZWFwIG9iamVjdC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3Vy
Y2VzL21haW4uanM6IEFkZGVkLgorICAgICAgICAoUG9pbnQpOiBBIHBvaW50IG9iamVjdAorICAg
ICAgICAoSW5zZXRzKTogQW4gaW5zZXRzIG9iamVjdAorICAgICAgICAoU2ltcGxlUHJvbWlzZSk6
IEFuIGltcGxlbWVudGF0aW9uIGZvciBhIHByb21pc2Ugb2JqZWN0IChjb3BpZWQgZm9ybSBzcGVl
ZG9tZXRlcikuCisgICAgICAgIChNYXRyaXgpOiBBIG1hdHJpeCBvYmplY3QuCisgICAgICAgIChW
ZWN0b3IzKTogQSB2ZWN0b3Igb2Ygc2l6ZSAzIG9iamVjdC4KKyAgICAgICAgKE1hdHJpeDMpOiBB
IG1hdHJpeCBvZiBzaXplIDN4MyBvYmplY3QuCisgICAgICAgIChPcHRpb25zKTogQmVuY2htYXJr
IHJ1bm5pbmcgb3B0aW9ucyBhcyB0aGV5IGFyZSBzZXQgYnkgdGhlIHVzZXIuCisgICAgICAgIAor
ICAgICAgICAoUHJvZ3Jlc3NCYXIpOiBNYW5hZ2VzIGEgcHJvZ3Jlc3MgYmFyIGVsZW1lbnQuIFRo
ZSBwcm9ncmVzcyBiYXIgaXMgZGl2aWRlZCBpbnRvIGVxdWFsIGxlbmd0aCByYW5nZXMuCisgICAg
ICAgIChQcm9ncmVzc0Jhci5wcm90b3R5cGUuX3Byb2dyZXNzVG9QZXJjZW50KTogQ29udmVydHMg
dGhlIHByb2dyZXNzIGludG8gYSBwZXJjZW50YWdlLgorICAgICAgICAoUHJvZ3Jlc3NCYXIucHJv
dG90eXBlLmluY1JhbmdlKTogTW92ZXMgdG8gdGhlIG5leHQgcmFuZ2UgKGEgcmFuZ2UgaXMgdGhl
IHJ1bm5pbmcgdGltZSBvZiBhIHNpbmdsZSB0ZXN0KS4KKyAgICAgICAgKFByb2dyZXNzQmFyLnBy
b3RvdHlwZS5zZXRQb3MpOiBEcmF3cyB0aGUgY3VycmVudCBwcm9ncmVzcyBpbiB0aGUgY3VycmVu
dCByYW5nZS4KKyAgICAgICAgCisgICAgICAgIChSZWNvcmRUYWJsZSk6IFNob3dzIHRoZSByZXN1
bHRzIG9mIHJ1bm5pbmcgYSBiZW5jaG1hcmsgaW4gYSB0YWJ1bGFyIGZvcm0uCisgICAgICAgIChS
ZWNvcmRUYWJsZS5wcm90b3R5cGUuY2xlYXIpOiBDbGVhcnMgdGhlIHJlc3VsdHMgdGFibGUuCisg
ICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dUaXRsZXMpOiBTaG93cyB0aGUgaGVh
ZGVyIHRpdGxlcyBhbmQgYXBwZW5kcyB0aGUgc3ViLXRpdGxlcyB0byBhIHF1ZXVlLgorICAgICAg
ICAoUmVjb3JkVGFibGUucHJvdG90eXBlLl9zaG93SGVhZGVyKTogU2hvd3MgdGhlIHRhYmxlIGhl
YWRlciB0aXRsZXMuCisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dFbXB0eSk6
IFNob3dzIGFuIGVtcHR5IHRhYmxlIGNlbGwuCisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5
cGUuX3Nob3dWYWx1ZSk6IFNob3dzIGEgbnVtYmVyIHZhbHVlIGluIHRoZSByZXN1bHRzIHRhYmxl
LgorICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLl9zaG93U2FtcGxlcyk6IFNob3dzIGEg
YnV0dG9uIGZvciB0aGUgc2FtcGxlZCBkYXRhIGdyYXBoLgorICAgICAgICAoUmVjb3JkVGFibGUu
cHJvdG90eXBlLl9zaG93VGVzdCk6IFNob3dzIHRoZSByZXN1bHRzIG9mIGEgc2luZ2xlIHRlc3Qu
CisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dTdWl0ZSk6IFNob3dzIHRoZSBy
ZXN1bHRzIG9mIGEgc2luZ2xlIHN1aXRlLgorICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBl
LnNob3dSZWNvcmQpOiBTaG93cyBhIHNpbmdsZSBpdGVyYXRpb24gZm9yIGEgc2luZ2xlIHRlc3Qu
CisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuc2hvd0l0ZXJhdGlvbnMpOiBTaG93cyB0
aGUgcmVzdWx0cyBvZiBhbGwgdGhlIHN1aXRlcyBvZiB0aGUgaXRlcmF0aW9ucy4gCisgICAgICAg
IAorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL3N0YXRpc3RpY3MuanM6IEFkZGVkLiAg
ICAgICAgCisgICAgICAgIChTdGF0aXN0aWNzLnNhbXBsZU1lYW4pOiBSZXR1cm5zIHRoZSBzYW1w
bGUgbWVhbiBmb3IgYSBzZXQgb2YgZGF0YSBwb2ludHMuCisgICAgICAgIChTdGF0aXN0aWNzLnNh
bXBsZVN0YW5kYXJkRGV2aWF0aW9uKTogUmV0dXJucyB0aGUgc2FtcGxlIHN0YW5kYXJkIGRldmlh
dGlvbiBmb3IgYSBzZXQgb2YgZGF0YSBwb2ludHMuCisgICAgICAgIChTdGF0aXN0aWNzLmdlb21l
dHJpY01lYW4pOiBSZXR1cm5zIHRoZSBnZW9tZXRyaWMgbWVhbiBvZiBhIHNldCBvZiBkYXRhLgor
ICAgICAgICAoU3RhdGlzdGljcy5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSk6IENhbGN1bGF0ZXMg
dGhlIGNvbmZpZGVuY2UgZGVsdGEgZm9yIHNhbXBsZWQgZGF0YSBnaXZlbiBhIGNvbmZpZGVuY2Ug
bGV2ZWwuCisgICAgICAgIAorICAgICAgICAoRXhwZXJpbWVudCk6IFJlcHJlc2VudHMgYSBzYW1w
bGluZyBleHBlcmltZW50LiAKKyAgICAgICAgKEV4cGVyaW1lbnQucHJvdG90eXBlLl9pbml0KTog
Q2FsbGVkIHdoZW4gdGhlIG9iamVjdCBpcyBjcmVhdGVkIGFuZCB3aGVuIHN0YXJ0U2FtcGxpbmco
KSBpcyBjYWxsZWQuCisgICAgICAgIChFeHBlcmltZW50LnByb3RvdHlwZS5zdGFydFNhbXBsaW5n
KTogQ2FsbGVkIGFmdGVyIHdhcm11cCBwZXJpb2QuIFJlc3RhcnRzIGNvbGxlY3Rpbmcgc2FtcGxl
ZCBkYXRhIHBvaW50cy4KKyAgICAgICAgKEV4cGVyaW1lbnQucHJvdG90eXBlLnNhbXBsZSk6IEFk
ZCBhIG5ldyBkYXRhIHBvaW50LgorICAgICAgICAoRXhwZXJpbWVudC5wcm90b3R5cGUubWVhbik6
IFJldHVybnMgdGhlIHNhbXBsZSBtZWFuIGZvciB0aGUgY3VycmVudCBzYW1wbGVkIGRhdGEgcG9p
bnRzLgorICAgICAgICAoRXhwZXJpbWVudC5wcm90b3R5cGUuc3RhbmRhcmREZXZpYXRpb24pOiBS
ZXR1cm5zIHRoZSBzYW1wbGUgc3RhbmRhcmQgZGV2aWF0aW9uIGZvciB0aGUgY3VycmVudCBzYW1w
bGVkIGRhdGEgcG9pbnRzLgorICAgICAgICAoRXhwZXJpbWVudC5wcm90b3R5cGUucGVyY2VudGFn
ZSk6IFJldHVybnMgdGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIHN0YW5kYXJkIGRldmlhdGlvbiBkaXZp
ZGVkIHRvIHRoZSBtZWFuLgorICAgICAgICAoRXhwZXJpbWVudC5wcm90b3R5cGUuY29uZmlkZW5j
ZUludGVydmFsRGVsdGEpOiBDYWxjdWxhdGVzIHRoZSBjb25maWRlbmNlIGRlbHRhIGZvciB0aGUg
Y3VycmVudCBzYW1wbGVkIGRhdGEgZ2l2ZW4gYSBjb25maWRlbmNlIGxldmVsLgorICAgICAgICAo
RXhwZXJpbWVudC5wcm90b3R5cGUuY29uY2Vybik6IFJldHVybnMgdGhlIGF2ZXJhZ2Ugb2YgdGhl
IHdvcnN0IGdpdmVuIHBlcmNlbnRhZ2UgZnJvbSB0aGUgc2FtcGxlZCBkYXRhLgorICAgICAgICAo
RXhwZXJpbWVudC5wcm90b3R5cGUuc2NvcmUpOiBSZXR1cm5zIGEgc2NvcmUgZm9yIHRoZSBzYW1w
bGVkIGRhdGEuIEl0IGlzIHRoZSBnZW9tZXRyaWMgbWVhbiBvZiBzYW1wbGVNZWFuIGFuZCBjb25j
ZXJuLgorICAgICAgICAKKyAgICAgICAgKFNhbXBsZXIpOiBSZXByZXNlbnRzIGEgY29tcG91bmQg
ZXhwZXJpbWVudC4gSXQgbWFuYWdlcyBzYW1wbGluZyBtdWx0aXBsZSBkYXRhIHBvaW50cyBhdCB0
aGUgc2FtZSB0aW1lIG9mZnNldC4KKyAgICAgICAgKFNhbXBsZXIucHJvdG90eXBlLnN0YXJ0U2Ft
cGxpbmcpOiBDYWxsZWQgYWZ0ZXIgd2FybWluZyB1cCBwZXJpb2QuIFJlc3RhcnRzIGNvbGxlY3Rp
bmcgc2FtcGxlZCBkYXRhIHBvaW50cy4KKyAgICAgICAgKFNhbXBsZXIucHJvdG90eXBlLnNhbXBs
ZSk6IEFkZCBhIG5ldyBkYXRhIHZlY3RvciBhdCBhIGdpdmVuIHRpbWUgb2Zmc2V0LgorICAgICAg
ICAKKyAgICAgICAgW2JlbmNobWFya10KKyAgICAgICAgVGhpcyBwYXRjaCByZXByZXNlbnRzIHRo
ZSBtZWNoYW5pY3MgZm9yIHJ1bm5pbmcgYSBiZW5jaG1hcmsuIEZyb20gYW4gZW1wdHkKKyAgICAg
ICAgdGVzdCBwYWdlLCB0aGlzIHNldCBvZiBjbGFzc2VzIGFyZSByZXNwb25zaWJsZSBmb3IgbWVh
c3VyaW5nIHRoZSBjdXJyZW50CisgICAgICAgIGZyYW1lIHJhdGUgYW5kIGNoYW5naW5nIHRoZSB0
ZXN0IHRvIHJlYWNoIGEgZGVzaXJlZCBGUFMuIEl0IGtlZXBzIGFza2luZworICAgICAgICB0aGUg
dGVzdCBwYWdlIHRvIHR1bmUgaXRzZWxmIGJ5IGEgY2VydGFpbiB2YWx1ZSB0byBpbmNyZWFzZSBv
ciBkZWNyZWFzZQorICAgICAgICB0aGUgZnJhbWUgcmF0ZS4gSXQgaXMgYWxzbyByZXNwb25zaWJs
ZSBmb3Igc2FtcGxpbmcgdGhlIHRlc3Qgc3RhdGUgYW5kIHRoZQorICAgICAgICBjb3JyZXNwb25k
aW5nIGZyYW1lIHJhdGUuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXI6IEFkZGVkLgor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHM6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90
ZXN0cy9yZXNvdXJjZXMvYmVuY2htYXJrLmpzOiBBZGRlZC4KKyAgICAgICAgKEJlbmNobWFya1N0
YXRlKTogVHJhY2tzIHRoZSBzdGF0ZSBvZiB0aGUgYmVuY2htYXJrIHRlc3QuCisgICAgICAgIChC
ZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuX3RpbWVPZmZzZXQpOiBSZXR1cm5zIHRoZSB0aW1lT2Zm
c2V0IG9mIGEgc3RhZ2UuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuX21lc3Nh
Z2UpOiBSZXR1cm5zIHRoZSBtZXNzYWdlIG9mIGEgc3RhZ2UuCisgICAgICAgIChCZW5jaG1hcmtT
dGF0ZS5wcm90b3R5cGUudXBkYXRlKTogU2V0cyB0aGUgY3VycmVudFRpbWVPZmZzZXQgdG8gYSBu
ZXcgdmFsdWUuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuc2FtcGxpbmdUaW1l
T2Zmc2V0KTogUmV0dXJucyB0aGUgdGltZU9mZnNldCBvZiB0aGUgc2FtcGxpbmcgc3RhZ2UuCisg
ICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuY3VycmVudFN0YWdlKTogUmV0dXJucyB0
aGUgY3VycmVudCBzdGFnZSBvZiB0aGUgYmVuY2htYXJrLgorICAgICAgICAoQmVuY2htYXJrU3Rh
dGUucHJvdG90eXBlLmN1cnJlbnRNZXNzYWdlKTogUmV0dXJucyB0aGUgbWVzc2FnZSBvZiB0aGUg
Y3VycmVudCBzdGFnZSBhbmQgdGltZU9mZnNldC4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnBy
b3RvdHlwZS5jdXJyZW50UHJvZ3Jlc3MpOiBSZXR1cm5zIGEgcGVyY2VudGFnZSBvZiBob3cgbXVj
aCB0aGUgYmVuY2htYXJrIGlzIHJ1bm5pbmcuCisgICAgICAgIAorICAgICAgICAoQW5pbWF0b3Ip
OiBNYW5hZ2VzIGFuaW1hdGluZyB0aGUgdGVzdC4KKyAgICAgICAgKEFuaW1hdG9yLnByb3RvdHlw
ZS5zdGFydCk6IENhbGxlZCBpZiBhbmltYXRpbmcgdXNpbmcgc2V0SW50ZXJ2YWwgaXMgcmVxdWVz
dGVkLgorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBlLnRpbWVEZWx0YSk6IFJldHVybnMgdGhl
IGN1cnJlbnQgdGltZURlbHRhIAorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUp
OiBNYW5hZ2VzIHRoZSB0ZXN0IGFuaW1hdGlvbi4KKyAgICAgICAgKEFuaW1hdG9yLnByb3RvdHlw
ZS5hbmltYXRlTG9vcCk6IENhbGxlZCBpZiBhbmltYXRpbmcgdXNpbmcgcmVxdWVzdEFuaW1hdGlv
bkZyYW1lIGlzIHJlcXVlc3RlZC4gCisKKyAgICAgICAgKEJlbmNobWFyayk6IE1hbmFnZXMgcnVu
bmluZyB0aGUgdGVzdCBiZW5jaG1hcmsgYW5kIHJlY29yZGluZyB0aGUgc2FtcGxlZCBkYXRhLgor
ICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS5zdGFydCk6IFN0YXJ0cyB0aGUgYmVuY2htYXJr
LgorICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS51cGRhdGUpOiBDYWxsZWQgZnJvbSB0aGUg
YW5pbWF0b3IuYW5pbWF0ZSgpIHRvIGNoYW5nZSB0aGUgY29tcGxleGl0eSBvZiB0aGUgdGVzdC4K
KyAgICAgICAgKEJlbmNobWFyay5wcm90b3R5cGUucmVjb3JkKTogU2hvd3MgdGhlIGN1cnJlbnQg
KG5vdCBmaW5hbCkgcmVzdWx0cyBvZiB0aGUgYmVuY2htYXJrLgorICAgICAgICAoQmVuY2htYXJr
LnByb3RvdHlwZS5yZXNvbHZlV2hlbkZpbmlzaGVkKTogU3BpbnMgdW50aWwgdGhlIGJlbmNobWFy
ayBpcyBmaW5pc2hlZCBhbmQgcmV0dXJucyBpdHMgcmVzdWx0cy4KKyAgICAgICAgKEJlbmNobWFy
ay5wcm90b3R5cGUucnVuKTogU3RhcnRzIHRoZSB0ZXN0LCBydW5zIGl0LCB3YWl0cyB1bnRpbCBp
dCBpcyBmaW5pc2hlZCBhbmQgcmV0dXJuIGl0cyByZXN1bHRzLgorCisgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy9yZXNvdXJjZXMvbWF0aC5qczogQWRkZWQuCisgICAgICAgIChNYXRyaXgpOiBB
IG1hdHJpeCBvYmplY3QuCisgICAgICAgIChWZWN0b3IzKTogQSB2ZWN0b3Igb2Ygc2l6ZSAzIG9i
amVjdC4KKyAgICAgICAgKE1hdHJpeDMpOiBBIG1hdHJpeCBvZiBzaXplIDN4MyBvYmplY3QuCisg
ICAgICAgIAorICAgICAgICAoUElEQ29udHJvbGxlcik6IENsb3NlZC1sb29wIGNvbnRyb2xsZXIg
Zm9yIGEgc2V0LXBvaW50IHkuCisgICAgICAgIChQSURDb250cm9sbGVyLnByb3RvdHlwZS5fc2F0
KTogTGltaXRzIHRoZSBvdXRwdXQgdG8gYSBjZXJ0YWluIHJhbmdlLgorICAgICAgICAoUElEQ29u
dHJvbGxlci5wcm90b3R5cGUudHVuZSk6IEdpdmVuIHRoZSBjdXJyZW50IG91dHB1dCBvZiBhIHN5
c3RlbSwgaXQgcHJvZHVjZXMgYSBuZXcgcGlkIHZhbHVlIGZvciB0dW5pbmcgaXQuCisgICAgICAg
IAorICAgICAgICAoS2FsbWFuRXN0aW1hdG9yKTogSW1wbGVtZW50IEthbG1hbiBmaWx0ZXIgdG8g
Z2V0IGFuIGVzdGltYXRlIGZvciBhIHNhbXBsZWQgZGF0YSBwb2ludC4KKyAgICAgICAgKEthbG1h
bkVzdGltYXRvci5wcm90b3R5cGUuZXN0aW1hdGUpOiBSZXR1cm5zIGFuIGVzdGltYXRlIGZvciBm
b3IgYSBzYW1wbGVkIGRhdGEgcG9pbnQuCisgICAgICAgIAorICAgICAgICBbc3RhZ2VdCisgICAg
ICAgIFRoaXMgcGF0Y2ggcmVwcmVzZW50cyB0aGUgc3RhZ2Ugb24gd2hpY2ggdGhlIGFuaW1hdGlv
biBoYXBwZW5zLiBUaGUgY29uY3JldGUKKyAgICAgICAgc3RhZ2UgY2FuIGJlIGEgQ1NTLCBhIGNh
bnZhcyBvciBhbiBTVkcgc3RhZ2UuIFRoZSBjbGFzc2VzIGluIHRoaXMgcGF0Y2gKKyAgICAgICAg
cHJvdmlkZXMgdGhlIHNoYXJlZCBmdW5jdGlvbmFsaXRpZXMgYW5kIGRlZmF1bHQgaW1wbGVtZW50
YXRpb24gZm9yIGFsbCB0eXBlcworICAgICAgICBvZiBzdGFnZXMuCisKKyAgICAgICAgKiBBbmlt
b21ldGVyOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzOiBBZGRlZC4KKyAgICAg
ICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlczogQWRkZWQuCisKKyAgICAgICAgKiBBbmlt
b21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5jc3M6IEFkZGVkLgorICAgICAgICAqIEFuaW1v
bWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzOiBBZGRlZC4KKyAgICAgICAgKFN0YWdlKTog
QSBiYXNlIGNsYXNzIGZvciBtYW5hZ2luZyB0aGUgdGVzdCBjb21wbGV4aXR5IGFuZCB0ZXN0IGFu
aW1hdGlvbi4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5nZXQgc2l6ZSk6IFJldHVybnMgdGhl
IHNpemUgb2YgdGhlIHN0YWdlIGV4Y2x1ZGluZyB0aGUgQ1NTIHBhZGRpbmcuCisgICAgICAgIChT
dGFnZS5wcm90b3R5cGUucmFuZG9tKTogUmV0dXJucyBhIHJhbmRvbSBmbG9hdC4KKyAgICAgICAg
KFN0YWdlLnByb3RvdHlwZS5yYW5kb21JbnQpOiBSZXR1cm5zIGEgcmFuZG9tIGludGVnZXIuCisg
ICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tUG9zaXRpb24pOiBSZXR1cm5zIGEgcmFuZG9t
IHBvc2l0aW9uLgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLnJhbmRvbVZlbG9jaXR5KTogUmV0
dXJucyBhIHJhbmRvbSB2ZWxvY2l0eS4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5yYW5kb21B
bmdsZSk6IFJldHVybnMgYSByYW5kb20gYW5nbGUuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUu
cmFuZG9tQ29sb3IpOiBSZXR1cm5zIGEgcmFuZG9tIGNvbG9yIG5vdCB0b28gZGFyayBhbmQgbm90
IHRvbyBsaWdodC4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS50dW5lKTogQSBub3QtaW1wbGVt
ZW50ZWQgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAoU3RhZ2UucHJvdG90eXBl
LmFuaW1hdGUpOiBBIG5vdC1pbXBsZW1lbnRlZCB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24uCisg
ICAgICAgIChTdGFnZS5wcm90b3R5cGUuY2xlYXIpOiBDbGVhcnMgdGhlIHN0YWdlIGZyb20gYWxs
IGl0cyBhbmltYXRpb24gZWxlbWVudHMuCisgICAgICAgIAorICAgICAgICAoU3RhZ2VBbmltYXRv
cik6IEEgYmFzZSBjbGFzcyBmb3IgdGhlIHN0YWdlLWJhc2VkIGFuaW1hdG9ycy4KKyAgICAgICAg
KFN0YWdlQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBDYWxscyBBbmltYXRvci5hbmltYXRl
KCkgd2hpY2ggdXBkYXRlcyB0aGUgdGVzdCBwYWdlIGFuZCB0aGVuIGNhbGxzIFN0YWdlLmFuaW1h
dGUoKSB0byBmb3JjZSByZWRyYXcuCisgICAgICAgIAorICAgICAgICAoU3RhZ2VCZW5jaG1hcmsp
OiBBIGJhc2UgY2xhc3MgZm9yIHRoZSBzdGFnZS1iYXNlZCBiZW5jaG1hcmtzLgorICAgICAgICAo
U3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyB0aGUgZGVmYXVs
dCBzdGFnZS4KKyAgICAgICAgKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRv
cik6IENyZWF0ZXMgdGhlIGRlZmF1bHQgYW5pbWF0b3IuCisgICAgICAgIChTdGFnZUJlbmNobWFy
ay5wcm90b3R5cGUudHVuZSk6IERlbGVnYXRlcyB0aGUgY2FsbCB0byBzdGFnZS4KKyAgICAgICAg
KFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5jbGVhcik6IERlbGVnYXRlcyB0aGUgY2FsbCB0byBz
dGFnZS4KKyAgICAgICAgKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5zaG93UmVzdWx0cyk6IFNo
b3dzIHRoZSByZXN1bHRzL3Byb2dyZXNzIHRocm91Z2ggaXRzIHJlY29yZFRhYmxlIGFuZCBwcm9n
cmVzc0Jhci4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMv
dXRpbGl0aWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuX3Bh
cnNlKTogR2l2ZW4gYSBzZXBhcmF0b3IgY2hhcmFjdGVyLCBpdCBwYXJlc2VzIGEgc3RyaW5nIHRv
IGEgc2V0IG9mIDxrZXksIHZhbHVlPiBwYWlycy4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtD
bGllbnQucGFyc2VQYXJhbWV0ZXJzKTogUGFyc2VzIGEgdGVzdCBwYXJhbWV0ZXJzLgorICAgICAg
ICAod2luZG93LmJlbmNobWFya0NsaWVudC5wYXJzZUFyZ3VtZW50cyk6IFBhcnNlcyBhIHRhZyBh
cmd1bWVudHMuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmV4dGVuZE9iamVjdCk6
IEFkZHMgdGhlIGF0dHJpYnV0ZXMgYW5kIHRoZWlyIHZhbHVlcyBvZiBhbiBvYmplY3QgdG8gYW5v
dGhlciBvYmplY3QuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNvcHlPYmplY3Qp
OiBDb3BpZXMgdGhlIGF0dHJpYnV0ZXMgYW5kIHRoZWlyIHZhbHVlcyBvZiBhbiBvYmplY3QgdG8g
YSBuZXcgb2JqZWN0LgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5tZXJnZU9iamVj
dHMpOiBDb3BpZXMgdGhlIGF0dHJpYnV0ZXMgYW5kIHRoZWlyIHZhbHVlcyBvZiB0d28gb2JqZWN0
cyB0byBhIG5ldyBvYmplY3QuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0
ZVN2Z0VsZW1lbnQpOiBDcmVhdGVzIGFuIFNWR0VsZW1lbnQgZ2l2ZW4gaXRzIG5hbWUgYW5kIGl0
cyBhdHRyaWJ1dGVzLgorICAgICAgICAod2luZG93LnJ1bkJlbmNobWFyayk6IENhbGxlZCBmcm9t
IHRoZSBiZW5jaG1hcmsgcnVubmVyIHRocm91Z2ggdGhlIHN1aXRlIGNvbnRyb2xsZXIgcnVuLWNh
bGxiYWNrLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95
aW4teWFuZy5wbmc6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2Vz
L3lpbi15YW5nLnN2ZzogQWRkZWQuCisgICAgICAgIFNoYXJlZCBpbWFnZXMuCisgICAgICAgIAor
ICAgICAgICBbYm91bmNpbmctY3NzLXBhcnRpY2xlc10KKyAgICAgICAgVGhpcyBwYXRjaCByZXBy
ZXNlbnRzIHRoZSBib3VuY2luZyBDU1MgcGFydGljbGVzIHRlc3RzLiBUaGVzZSB0ZXN0cyBydW4g
b24KKyAgICAgICAgQ1NTIHN0YWdlcy4gVGhlIHBhZ2VzIGFuZCB0aGUgc2NyaXB0cyBjYW4gYmUg
dXNlZCBmb3IgcnVubmluZyBkaWZmZXJlbnQga2luZHMKKyAgICAgICAgb2YgdGVzdHMuIFRoaXMg
aXMgY29udHJvbGxlZCBicCBwYXNzaW5nIHBhcmFtZXRlcnMgaW4gdGhlIHVybHMuCisKKyAgICAg
ICAgKiBBbmltb21ldGVyOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzOiBBZGRl
ZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlczogQWRkZWQu
CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2Vz
OiBBZGRlZC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90
ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sOiBBZGRlZC4K
KyAgICAgICAgQm91bmNpbmcgQ1NTIHBhcnRpY2xlcyB0ZXN0IHBhZ2VzLgorCisgICAgICAgICog
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBh
cnRpY2xlcy5qczogQWRkZWQuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlUm90YXRlcik6IE1h
bmFnZXMgcm90YXRpbmcgYSBCb3VuY2luZ1BhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdQYXJ0
aWNsZVJvdGF0ZXIucHJvdG90eXBlLm5leHQpOiBNb3ZlcyB0aGUgdGltZSBieSB0aGUgYmVuY2ht
YXJrJ3MgY3VycmVudCB0aW1lRGF0YS4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVSb3RhdGVy
LnByb3RvdHlwZS5kZWdyZWUpOiBSZXR1cm5zIHRoZSBjdXJyZW50IHJvdGF0aW5nIGRlZ3JlZS4K
KyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVSb3RhdGVyLnByb3RvdHlwZS5yb3RhdGVaKTogUmV0
dXJucyBDU1MgZm9ybWF0dGVkIHRyYW5zZm9ybSByb3RhdGVaKCkgdmFsdWUuCisgICAgICAgIChC
b3VuY2luZ1BhcnRpY2xlUm90YXRlci5wcm90b3R5cGUucm90YXRlKTogUmV0dXJucyBTVkcgZm9y
bWF0dGVkIHRyYW5zZm9ybSByb3RhdGUoKSB2YWx1ZS4gICAgICAgIAorICAgICAgICAKKyAgICAg
ICAgKEJvdW5jaW5nUGFydGljbGUpOiBCYXNlIGNsYXNzIGZvciBhIGJvdW5jaW5nIHBhcnRpY2xl
LgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuY2VudGVyKTogUmV0dXJucyB0
aGUgY2VudGVyIHBvaW50IG9yIHRoZSBwYXJ0aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nUGFydGlj
bGUucHJvdG90eXBlLmFuaW1hdGUpOiBNb3ZlcyB0aGUgcGFydGljbGUgYmFzZWQgb24gaXRzIGN1
cnJlbnQgcG9zaXRpb24sIGFuZ2xlIGFuZCB2ZWxvY2l0eS4KKyAgICAgICAgCisgICAgICAgIChC
b3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yKTogQSBzdWIgY2xhc3Mgb2YgQW5pbWF0b3IuCisgICAg
ICAgIAorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZSk6IFJlcHJlc2VudHMgdGhlIGNv
bnRhaW5lciBvZiBhbGwgdGhlIGJvdW5jaW5nIHBhcnRpY2xlcy4KKyAgICAgICAgKEJvdW5jaW5n
UGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnBhcnNlU2hhcGVQYXJhbXRlcnMpOiBHZXRzIHRoZSBz
aGFwZSBwYXJhbWV0ZXJzIGZvciBzaGFwZSBhbmltYXRpbmcgdGVzdHMuCisgICAgICAgIChCb3Vu
Y2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5yYW5kb21Sb3RhdGVyKTogQ3JlYXRlcyBhIHJv
dGF0ZXIgZm9yIHRoZSBwYXJ0aWNsZXMuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0YWdl
LnByb3RvdHlwZS5hbmltYXRlKTogQW5pbWF0ZXMgYWxsIHRoZSBwYXJ0aWNsZXMuCisgICAgICAg
IChCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS50dW5lKTogQ2hhbmdlcyB0aGUgdGVz
dCBieSBhZGRpbmcgb3IgcmVtb3ZpbmcgcGFydGljbGVzLgorICAgICAgICAKKyAgICAgICAgKEJv
dW5jaW5nUGFydGljbGVzQmVuY2htYXJrKTogUnVucyB0aGUgYmVuY2htYXJrIGZvciBib3VuY2lu
ZyBwYXJ0aWNsZXMgdGVzdC4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnBy
b3RvdHlwZS5jcmVhdGVBbmltYXRvcik6IENyZWF0ZXMgYW4gYW5pbWF0b3Igb2YgdHlwZSBCb3Vu
Y2luZ1BhcnRpY2xlc0FuaW1hdG9yLgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1zaGFwZXMuanM6IEFkZGVkLgor
ICAgICAgICAoQm91bmNpbmdDc3NTaGFwZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGlj
bGUgZm9yIGFuaW1hdGluZyBDU1Mgc2hhcGVzLgorICAgICAgICAoQm91bmNpbmdDc3NTaGFwZS5w
cm90b3R5cGUuX2NyZWF0ZVNwYW4pOiBDcmVhdGVzIGEgPHNwYW4+IGVsZW1lbnQgYW5kIHRha2Vz
IHRoZSBzaGFwZSBhbmQgY2xpcHBpbmcgY2xhc3NlcyBpbnRvIGNvbnNpZGVyYXRpb24uCisgICAg
ICAgIChCb3VuY2luZ0Nzc1NoYXBlLnByb3RvdHlwZS5fbW92ZSk6IE1vdmVzIHRoZSBwYXJ0aWNs
ZSB0byBhIG5ldyBsb2NhdGlvbi4gQXBwbHkgdHJhbnNmb3JtIHNpbmNlIGl0IGRvZXMgbm90IHJl
cXVpcmUgbGF5b3V0LgorICAgICAgICAoQm91bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUuYW5pbWF0
ZSk6IFJvdGF0ZXMgYW5kIG1vdmVzIHRoZSBzaGFwZSB0byBhIG5ldyBsb2NhdGlvbi4KKyAgICAg
ICAgCisgICAgICAgIChCb3VuY2luZ0Nzc1NoYXBlc1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91
bmNpbmdQYXJ0aWNsZXNTdGFnZSBmb3IgYW5pbWF0aW5nIENTUyBzaGFwZXMuCisgICAgICAgIChC
b3VuY2luZ0Nzc1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMg
YSBwYXJ0aWNsZSBvZiB0eXBlIEJvdW5jaW5nQ3NzU2hhcGUuCisgICAgICAgIChCb3VuY2luZ0Nz
c1NoYXBlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1vdmVzIHRo
ZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZm9ybSB0aGUgcGFyZW50IGNoaWxkcmVuIGxpc3QuCisg
ICAgICAgIAorICAgICAgICAoQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmspOiBBIHN1YiBjbGFz
cyBvZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyayBmb3IgYW5pbWF0aW5nIENTUyBzaGFwZXMu
CisgICAgICAgIChCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3Rh
Z2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ0Nzc1NoYXBlc1N0YWdlLgorICAg
ICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJr
IG9mIHR5cGUgQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmsuCisKKyAgICAgICAgKiBBbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdl
cy5qczogQWRkZWQuCisgICAgICAgIChCb3VuY2luZ0Nzc0ltYWdlKTogQSBzdWIgY2xhc3Mgb2Yg
Qm91bmNpbmdQYXJ0aWNsZSBmb3IgYW5pbWF0aW5nIENTUyBpbWFnZXMuCisgICAgICAgIChCb3Vu
Y2luZ0Nzc0ltYWdlLnByb3RvdHlwZS5fbW92ZSk6IE1vdmUgdGhlIHBhcnRpY2xlIHRvIGEgbmV3
IGxvY2F0aW9uLiBBcHBseSB0cmFuc2Zvcm0gc2luY2UgaXQgZG9lcyBub3QgcmVxdWlyZSBsYXlv
dXQuCisgICAgICAgIChCb3VuY2luZ0Nzc0ltYWdlLnByb3RvdHlwZS5hbmltYXRlKTogUm90YXRl
cyBhbmQgbW92ZXMgdGhlIHNoYXBlIHRvIGEgbmV3IGxvY2F0aW9uLgorICAgICAgICAKKyAgICAg
ICAgKEJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRp
Y2xlc1N0YWdlIGZvciBhbmltYXRpbmcgQ1NTIGltYWdlcy4KKyAgICAgICAgKEJvdW5jaW5nQ3Nz
SW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xl
IG9mIHR5cGUgQm91bmNpbmdDc3NJbWFnZS4KKyAgICAgICAgKEJvdW5jaW5nQ3NzSW1hZ2VzU3Rh
Z2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCk6IFJlbW92ZXMgdGhlIGNvcnJlc3Bv
bmRpbmcgZWxlbWVudCBmb3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4gbGlzdC4KKyAgICAgICAgCisg
ICAgICAgIChCb3VuY2luZ0Nzc0ltYWdlc0JlbmNobWFyayk6IEEgc3ViIGNsYXNzIG9mIEJvdW5j
aW5nUGFydGljbGVzQmVuY2htYXJrIGZvciBhbmltYXRpbmcgQ1NTIGltYWdlcy4KKyAgICAgICAg
KEJvdW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0
ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UuCisgICAgICAgICh3aW5k
b3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBC
b3VuY2luZ0Nzc0ltYWdlc0JlbmNobWFyay4KKworICAgICAgICBbYm91bmNpbmctY2FudmFzLXBh
cnRpY2xlc10KKyAgICAgICAgVGhpcyBwYXRjaCByZXByZXNlbnRzIHRoZSBib3VuY2luZyBjYW52
YXMgcGFydGljbGVzIHRlc3RzLiBUaGVzZSB0ZXN0cyBydW4gb24KKyAgICAgICAgY2FudmFzIHN0
YWdlcy4gVGhlIHBhZ2VzIGFuZCB0aGUgc2NyaXB0cyBjYW4gYmUgdXNlZCBmb3IgcnVubmluZyBk
aWZmZXJlbnQga2luZHMKKyAgICAgICAgb2YgdGVzdHMuIFRoaXMgaXMgY29udHJvbGxlZCBicCBw
YXNzaW5nIHBhcmFtZXRlcnMgaW4gdGhlIHVybHMuCisKKyAgICAgICAgKiBBbmltb21ldGVyOiBB
ZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzOiBBZGRlZC4KKyAgICAgICAgKiBBbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlczogQWRkZWQuCisgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzOiBBZGRlZC4KKworICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1p
bWFnZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgQm91
bmNpbmcgY2FudmFzIHBhcnRpY2xlcyB0ZXN0IHBhZ2VzLgorCisgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1wYXJ0
aWNsZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNsZSk6IEEgYmFz
ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZSBmb3IgYW5pbWF0aW5nIGNhbnZhcyBwYXJ0
aWNsZXMuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZS5fYXBwbHlS
b3RhdGlvbik6IEFwcGx5IHRoZSBwYXJ0aWNsZSByb3RhdGlvbi1hcm91bmQtY2VudGVyIHRyYW5z
Zm9ybSB0byB0aGUgY2FudmFzIGNvbnRleHQuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1BhcnRp
Y2xlLnByb3RvdHlwZS5fYXBwbHlDbGlwcGluZyk6IEFwcGx5IHRoZSBwYXJ0aWNsZSBjbGlwcGlu
ZyB0byB0aGUgY2FudmFzIGNvbnRleHQuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1BhcnRpY2xl
LnByb3RvdHlwZS5fZHJhdyk6IEEgbm9uLWltcGxlbWVudGVkIHZlcnNpb24gb2YgdGhlIGRyYXdp
bmcgZnVuY3Rpb24uCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZS5h
bmltYXRlKTogQ2FycmllcyBvdXQgYWxsIHRoZSBzdGVwcyB0byByZWRyYXcgdGhlIGNhbnZhcyBw
YXJ0aWNsZS4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdl
KTogQSBiYXNlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlIGZvciBhbmltYXRp
bmcgY2FudmFzIHBhcnRpY2xlcy4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlc0FuaW1hdG9yKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNs
ZXNBbmltYXRvciBmb3IgYW5pbWF0aW5nIGNhbnZhcyBwYXJ0aWNsZXMuCisgICAgICAgIChCb3Vu
Y2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlKTogT3ZlcnJpZGVz
IHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB0byBjbGVhciB0aGUgY2FudmFzIGJlZm9yZSByZWRyYXdp
bmcgdGhlIHN0YWdlLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzUGFydGljbGVz
QmVuY2htYXJrKTogQSBiYXNlIHN1Yi1jbGFzcyBvZiBTdGFnZUJlbmNobWFyayBmb3IgYW5pbWF0
aW5nIGNhbnZhcyBwYXJ0aWNsZXMuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0Jl
bmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBDcmVhdGVzIHRoZSBjYW52YXMgcGFy
dGljbGVzIGFuaW1hdG9yLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qczogQWRk
ZWQuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mg
b2YgQm91bmNpbmdDYW52YXNQYXJ0aWNsZSBmb3IgYW5pbWF0aW5nIGNhbnZhcyBzaGFwZXMuCisg
ICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5fYXBwbHlGaWxsKTogU2V0cyB0
aGUgZmlsbFN0eWxlIGluIHRoZSBjYW52YXMgY29udGV4dC4KKyAgICAgICAgKEJvdW5jaW5nQ2Fu
dmFzU2hhcGUucHJvdG90eXBlLl9kcmF3U2hhcGUpOiBDYXJyaWVzIG91dCB0aGUgYWN0dWFsIGRy
YXdpbmcuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5fZHJhdyk6IENh
cnJpZXMgb3V0IGFsbCB0aGUgc3RlcHMgdG8gZHJhdyB0aGUgc2hhcGUuCisgICAgICAgIAorICAg
ICAgICAoQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZSk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9m
IEJvdW5jaW5nQ2FudmFzUGFydGljbGUgZm9yIGFuaW1hdGluZyBjYW52YXMgc2hhcGVzLgorICAg
ICAgICAoQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUp
OiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlwZSBCb3VuY2luZ0NhbnZhc1NoYXBlLgorICAgICAg
ICAKKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrKTogQSBjb25jcmV0ZSBz
dWItY2xhc3Mgb2YgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsgZm9yIGFuaW1hdGlu
ZyBjYW52YXMgc2hhcGVzLgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsu
cHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUgQm91bmNpbmdD
YW52YXNTaGFwZXNTdGFnZS4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRl
KTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2ht
YXJrLgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVz
b3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNp
bmdDYW52YXNJbWFnZSk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nQ2FudmFzUGFy
dGljbGUgZm9yIGFuaW1hdGluZyBjYW52YXMgaW1hZ2VzLgorICAgICAgICAoQm91bmNpbmdDYW52
YXNJbWFnZS5wcm90b3R5cGUuX2RyYXcpOiBEcmF3cyBhbiBpbWFnZSBvbiB0aGUgY29udGV4dCBv
ZiBhIGNhbnZhcy4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdl
KTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1h
cmsgZm9yIGFuaW1hdGluZyBjYW52YXMgaW1hZ2VzLgorICAgICAgICAoQm91bmNpbmdDYW52YXNJ
bWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFydGljbGUg
b2YgdHlwZSBCb3VuY2luZ0NhbnZhc0ltYWdlLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5n
Q2FudmFzSW1hZ2VzQmVuY2htYXJrKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdD
YW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBjYW52YXMgaW1hZ2VzLgorICAg
ICAgICAoQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdl
KTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUgQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS4KKyAg
ICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFy
ayBvZiB0eXBlIEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLgorCisgICAgICAgIFtib3Vu
Y2luZy1zdmctcGFydGljbGVzXQorICAgICAgICBUaGlzIHBhdGNoIHJlcHJlc2VudHMgdGhlIFNW
RyBib3VuY2luZyBwYXJ0aWNsZXMgdGVzdHMuIFRoZXNlIHRlc3RzIHJ1biBvbgorICAgICAgICBT
Vkcgc3RhZ2VzLiBUaGUgcGFnZXMgYW5kIHRoZSBzY3JpcHRzIGNhbiBiZSB1c2VkIGZvciBydW5u
aW5nIGRpZmZlcmVudCBraW5kcworICAgICAgICBvZiB0ZXN0cy4gVGhpcyBpcyBjb250cm9sbGVk
IGJwIHBhc3NpbmcgcGFyYW1ldGVycyBpbiB0aGUgdXJscy4KKworICAgICAgICAqIEFuaW1vbWV0
ZXI6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHM6IEFkZGVkLgorICAgICAgICAq
IEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzOiBBZGRlZC4KKyAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXM6IEFkZGVkLgorCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3Zn
LWltYWdlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw6IEFkZGVkLgorICAgICAgICBCb3Vu
Y2luZyBTVkcgcGFydGljbGVzIHRlc3QgcGFnZXMuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXBhcnRpY2xlcy5q
czogQWRkZWQuCisgICAgICAgIChCb3VuY2luZ1N2Z1BhcnRpY2xlKTogQSBiYXNlIHN1Yi1jbGFz
cyBvZiBCb3VuY2luZ1BhcnRpY2xlIGZvciBhbmltYXRpbmcgU1ZHIHBhcnRpY2xlcy4KKyAgICAg
ICAgKEJvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBlLl9hcHBseUNsaXBwaW5nKTogQXBwbHkg
dGhlIHBhcnRpY2xlIGNsaXBwaW5nIGJ5IHNldHRpbmcgdGhlICdjbGlwLXBhdGgnIGF0dHJpYnV0
ZSBvZiB0aGUgU1ZHRWxlbWVudC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90
eXBlLl9tb3ZlKTogTW92ZXMgdGhlIHBhcnRpY2xlIHRvIGEgbmV3IGxvY2F0aW9uLiBBcHBseSB0
cmFuc2Zvcm0gc2luY2UgaXQgZG9lcyBub3QgcmVxdWlyZSBsYXlvdXQuCisgICAgICAgIChCb3Vu
Y2luZ1N2Z1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlKTogUm90YXRlcyBhbmQgbW92ZXMgdGhl
IHNoYXBlIHRvIGEgbmV3IGxvY2F0aW9uLgorICAgICAgICAoQm91bmNpbmdTdmdQYXJ0aWNsZXNT
dGFnZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UgZm9yIGFuaW1hdGlu
ZyBTVkdFbGVtZW50cy4KKyAgICAgICAgKEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90
eXBlLl9jcmVhdGVEZWZzKTogQ3JlYXRlcyBhbiBTVkdEZWZzRWxlbWVudC4KKyAgICAgICAgKEJv
dW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLl9lbnN1cmVEZWZzSXNDcmVhdGVkKTog
RW5zdXJlcyB0aGVyZSBpcyBvbmx5IG9uZSBTVkdEZWZzRWxlbWVudCBpcyBjcmVhdGVkLgorICAg
ICAgICAoQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuX2NyZWF0ZUNsaXBTdGFy
KTogQ3JlYXRlcyBhbiBTVkdDbGlwUGF0aEVsZW1lbnQgYW5kIHNldHMgaXRzICdkJyBhdHRyaWJ1
dGUgdG8gYSBzdGFyIGxpa2Ugc2hhcGUuCisgICAgICAgIChCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0
YWdlLnByb3RvdHlwZS5lbnN1cmVDbGlwU3RhcklzQ3JlYXRlZCk6IEVuc3VyZSB0aGVyZSBpcyBv
bmx5IG9uZSBzdGFyIFNWR0NsaXBQYXRoRWxlbWVudCBpcyBjcmVhdGVkLgorICAgICAgICAoQm91
bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkKTog
UmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZm9ybSB0aGUgcGFyZW50IGNoaWxkcmVu
IGxpc3QuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9y
ZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qczogQWRkZWQuCisgICAgICAgIChCb3VuY2lu
Z1N2Z1NoYXBlKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdTVkdQYXJ0aWNsZSBm
b3IgYW5pbWF0aW5nIFNWRyBzaGFwZXMuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlLnByb3Rv
dHlwZS5fY3JlYXRlU2hhcGUpOiBDcmVhdGVzIGFuIFNWRyBzaGFwZS4KKyAgICAgICAgKEJvdW5j
aW5nU3ZnU2hhcGUucHJvdG90eXBlLl9hcHBseUZpbGwpOiBBcHBsaWVzIHRoZSBzZWxlY3RlZCBm
aWxsIHN0eWxlIHRvIHRoZSBTVkcgc2hhcGUuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdT
dmdTaGFwZXNTdGFnZSk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nU3ZnUGFydGlj
bGVzU3RhZ2UgZm9yIGFuaW1hdGluZyBTVkcgc2hhcGVzLgorICAgICAgICAoQm91bmNpbmdTdmdT
aGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlR3JhZGllbnQpOiBDcmVhdGVzIGFuIFNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90
eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNpbmdT
dmdTaGFwZS4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLnBhcnRp
Y2xlV2lsbEJlUmVtb3ZlZCk6IEVuc3VyZXMgdGhlIGF0dGFjaGVkIFNWR0xpbmVhckdyYWRpZW50
RWxlbWVudCBpcyByZW1vdmVkIGZyb20gdGhlIFNWR0RlZnNFbGVtZW50LgorICAgICAgICAKKyAg
ICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mg
b2YgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBTVkcgaW1hZ2VzLgor
ICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdl
KTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUgQm91bmNpbmdTdmdTaGFwZXNTdGFnZS4KKyAgICAg
ICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogcmVhdGVzIGEgYmVuY2htYXJrIG9m
IHR5cGUgQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsuCisgICAgICAgIAorICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmct
aW1hZ2VzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnSW1hZ2UpOiBBIGNvbmNyZXRl
IHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1NWR1BhcnRpY2xlIGZvciBhbmltYXRpbmcgU1ZHIGltYWdl
cy4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlKTogQSBjb25jcmV0
ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdTVkdQYXJ0aWNsZXNCZW5jaG1hcmsgZm9yIGFuaW1hdGlu
ZyBTVkcgaW1hZ2VzLgorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUu
Y3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlwZSBCb3VuY2luZ1N2Z0lt
YWdlLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrKTogQSBj
b25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsgZm9yIGFuaW1h
dGluZyBTVkcgaW1hZ2VzLgorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsucHJv
dG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUgQm91bmNpbmdTdmdJ
bWFnZXNTdGFnZS4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3Jl
YXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrLiAKKwor
ICAgICAgICBbdGV4dF0KKyAgICAgICAgVGhpcyBwYXRjaCByZXByZXNlbnRzIHRoZSB0ZXh0IGFu
aW1hdGluZyB0ZXN0cyB3aGljaCBydW5zIG9ubHkgb24gQ1NTIHN0YWdlLgorCisgICAgICAgICog
QW5pbW9tZXRlcjogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0czogQWRkZWQuCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZXh0OiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21l
dGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzOiBBZGRlZC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0bWw6IEFkZGVkLgorICAgICAgICBUZXh0IHRlc3Qg
cGFnZS4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJp
bmctdGV4dC5qczogQWRkZWQuCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZSk6IFJlcHJlc2Vu
dHMgdGhlIGNvbnRhaW5lciBvZiBhbGwgdGhlIHN0YWNrZWQgdGV4dCBsYXllcnMuCisgICAgICAg
IChMYXllcmluZ1RleHRTdGFnZS5wYXJzZVRleHRJdGVtKTogUGFyc2VzIGEgdGV4dEl0ZW0gd2hp
Y2ggbWF5IGJlIGFuIG9wZW5pbmcgdGFnLCBhIGNsb3NpbmcgdGFnIG9yIGEgc2VsZi1jbG9zaW5n
IHRhZy4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmlzT3BlbmluZ1RleHRJdGVtKTogUmV0
dXJucyB0cnVlIGlmIHRoZSB0ZXh0SXRlbSBpcyBhbiBvcGVuaW5nIHRhZyBlLmcuICc8b2w+Jy4K
KyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmlzQ2xvc2luZ1RleHRJdGVtKTogUmV0dXJucyB0
cnVlIGlmICB0aGUgdGV4dEl0ZW0gaXMgYW4gY2xvc2luZyB0YWcgZS5nLiAnPC9vbD4uCisgICAg
ICAgIChMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFncy5MYXllcmluZ1RleHRTdGFnZS50
ZXh0SXRlbXMubWFwKTogQ2FsY3VsYXRlcyBhbmQgc3RvcmVzIGlzT3BlbmluZyBhbmQgaXNDbG9z
aW5nIGZsYWdzIGZvciBlYWNoIHRleHRJdGVtLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2Uu
aXNDb2xvcmFibGVUZXh0SXRlbSk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgdGV4dEl0ZW0gaXMgc2Vs
Zi1jbG9zaW5nIHRhZyBlLmcuICc8cD4uLi48L3A+Jy4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0
YWdlLmlzSW5zZXJ0YWJsZVRleHRJdGVtKTogUmV0dXJucyB0cnVlIGlmIHRoZSB0ZXh0SXRlbXMg
Y2F1c2VzIGEgbmV3IGVsZW1lbnQgdG8gYmUgYWRkZWQgdG8gdGhlIHRleHQgbGF5ZXJzLgorICAg
ICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuY29sb3JhYmxlVGV4dEl0ZW1zLkxheWVyaW5nVGV4dFN0
YWdlLnRleHRJdGVtc0ZsYWdzLmZpbHRlcik6IE51bWJlciBvZiBjb2xvcmFibGUgdGV4dEl0ZW1z
LgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuaW5zZXJ0YWJsZVRleHRJdGVtcy5MYXllcmlu
Z1RleHRTdGFnZS50ZXh0SXRlbXNGbGFncy5maWx0ZXIpOiBOdW1iZXIgb2YgaW5zZXJ0YWJsZSB0
ZXh0SXRlbXMuCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5jb2xvckluZGV4VG9UZXh0RWxl
bWVudEluZGV4KTogTWFwcyBmcm9tIGNvbG9ySW5kZXggWzAuLmNvbG9yYWJsZVRleHRJdGVtcy0x
XSB0byB0ZXh0RWxlbWVudEluZGV4IFswLi5pbnNlcnRhYmxlVGV4dEl0ZW1zLTFdLgorICAgICAg
ICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9uZXh0VGV4dEl0ZW0pOiBNb3ZlcyB0aGUg
X3RleHRJdGVtSW5kZXggb25lIHN0ZXAgZm9yd2FyZCBpbiBhIGxvb3AgWzAuLkxheWVyaW5nVGV4
dFN0YWdlLnRleHRJdGVtcy5sZW5ndGgtMV0uCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5w
cm90b3R5cGUuX3ByZXZpb3VzVGV4dEl0ZW0pOiBNb3ZlcyB0aGUgX3RleHRJdGVtSW5kZXggb25l
IHN0ZXAgYmFja3dhcmQgaW4gYSBsb29wLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJv
dG90eXBlLl9wdXNoVGV4dEVsZW1lbnQpOiBDcmVhdGVzIGEgbmV3IHRleHRJdGVtRWxlbWVudCBh
bmQgYWRkcyBpdCB0byB0aGUgdG9wbW9zdCBjb250YWluZXIgPGRpdj4uCisgICAgICAgIChMYXll
cmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX3BvcFRleHRFbGVtZW50KTogUmVtb3ZlcyB0aGUgbGFz
dCB0ZXh0SXRlbUVsZW1lbnQgZnJvbSB0aGUgdG9wbW9zdCBjb250YWluZXIgPGRpdj4uCisgICAg
ICAgIChMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX2NvbG9yVGV4dEl0ZW0pOiBDaGFuZ2Vz
IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGEgc2luZ2xlIGNvbG9yYWJsZSB0ZXh0RWxlbWVudC4g
VGhlIGluZGV4IGFkdmFuY2VzIGluIGEgY2lyY2xlIFswLi5jb2xvcmFibGVUZXh0SXRlbXMtMV0u
CisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IENoYW5nZXMg
dGhlIGJhY2tncm91bmQgY29sb3IgYW5kIHRoZSB0ZXh0IGNvbG9yIG9mIHRoZSB0ZXh0RWxlbWVu
dHMgc3VjaCB0aGF0IGEgcmVkcmF3IGlzIGVuZm9yY2VkLgorICAgICAgICAoTGF5ZXJpbmdUZXh0
U3RhZ2UucHJvdG90eXBlLnR1bmUpOiBBZGRzIG9yIHJlbW92ZXMgdGV4dEVsZW1lbnRzIHRvIHRo
ZSBzdGFnZS4KKworICAgICAgICAoTGF5ZXJpbmdUZXh0QmVuY2htYXJrKTogUnVucyB0aGUgYmVu
Y2htYXJrIGZvciB0aGUgbGF5ZXJpbmcgdGV4dCB0ZXN0LgorICAgICAgICAoTGF5ZXJpbmdUZXh0
QmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBl
IExheWVyaW5nVGV4dFN0YWdlLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVh
dGUpOiBDcmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5cGUgTGF5ZXJpbmdUZXh0QmVuY2htYXJrLgor
CisgICAgICAgIFt0ZW1wbGF0ZV0KKyAgICAgICAgVGhpcyBwYXRjaCByZXByZXNlbnRzIHRoZSB0
ZW1wbGF0ZSBwYXJ0IG9mIHRoZSBvcmlnaW5hbCBwYXRjaC4gVGhlIHRlbXBsYXRlCisgICAgICAg
IHRlc3RzIGRvIG5vdGhpbmcuIEJ1dCB0aGV5IGNhbiBiZSB1c2VkIGJ5IG5ldyB0ZXN0cy4gQW5p
bWF0ZWQgaXRlbXMgY2FuIGJlCisgICAgICAgIGNyZWF0ZWQsIG1vdmVkIGFuZCByZWRyYXduIGJ5
IGZpbGxpbmcgdGhlIGVtcHR5IG1ldGhvZHMuCisKKyAgICAgICAgKiBBbmltb21ldGVyOiBBZGRl
ZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21l
dGVyL3Rlc3RzL3RlbXBsYXRlOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Rl
bXBsYXRlL3Jlc291cmNlczogQWRkZWQuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Rl
bXBsYXRlL3RlbXBsYXRlLWNhbnZhcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVy
L3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNzcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBBbmlt
b21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLXN2Zy5odG1sOiBBZGRlZC4KKyAgICAgICAg
VGVtcGxhdGUgdGVzdCBwYWdlcy4gVGhleSBjYW4gYmUgdXNlZCBhcyB0aGV5IGFyZS4gQ1NTIGF0
dHJpYnV0ZXMgb3IgaGlkZGVuCisgICAgICAgIGVsZW1lbnRzIGNhbiBiZSBhZGRlZCBpZiBuZWVk
ZWQuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1w
bGF0ZS1jc3MuanM6IEFkZGVkLgorICAgICAgICAoVGVtcGxhdGVTdGFnZSk6IEEgc2V0IG9mIG9i
amVjdHMgdG8gY3JlYXRlIGFuZCBhbmltYXRlIEhUTUxFbGVtZW50cy4KKyAgICAgICAgKFRlbXBs
YXRlU3RhZ2UucHJvdG90eXBlLnR1bmUpOiBDaGFuZ2VzIHRoZSB0ZXN0IGJ5IGFkZGluZyBvciBy
ZW1vdmluZyBlbGVtZW50cy4KKyAgICAgICAgKFRlbXBsYXRlU3RhZ2UucHJvdG90eXBlLmFuaW1h
dGUpOiBBbmltYXRlcyB0aGUgdGVzdCBlbGVtZW50cy4KKyAgICAgICAgKFRlbXBsYXRlQmVuY2ht
YXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgdGhlIHRlc3Qgc3RhZ2UuCisgICAg
ICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgdGhlIHRlc3QgYmVu
Y2htYXJrLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jl
c291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanM6IEFkZGVkLgorICAgICAgICAoVGVtcGxhdGVDYW52
YXNPYmplY3QpOiBBIHNldCBvZiBvYmplY3RzIHRvIGNyZWF0ZSBhbmQgYW5pbWF0ZSBjYW52YXMg
RWxlbWVudHMuCisgICAgICAgIChUZW1wbGF0ZUNhbnZhc09iamVjdC5wcm90b3R5cGUuYW5pbWF0
ZSk6IEFuaW1hdGVzIHRoZSBlbGVtZW50LgorICAgICAgICAoVGVtcGxhdGVDYW52YXNTdGFnZS5w
cm90b3R5cGUudHVuZSk6IENoYW5nZXMgdGhlIHRlc3QgYnkgYWRkaW5nIG9yIHJlbW92aW5nIGVs
ZW1lbnRzLgorICAgICAgICAoVGVtcGxhdGVDYW52YXNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6
IEFuaW1hdGVzIHRoZSB0ZXN0IGVsZW1lbnRzLgorICAgICAgICAoVGVtcGxhdGVDYW52YXNCZW5j
aG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyB0aGUgdGVzdCBzdGFnZS4KKyAg
ICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyB0aGUgdGVzdCBi
ZW5jaG1hcmsuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUv
cmVzb3VyY2VzL3RlbXBsYXRlLXN2Zy5qczogQWRkZWQuCisgICAgICAgIChUZW1wbGF0ZVN2Z1N0
YWdlKTogQSBzZXQgb2Ygb2JqZWN0cyB0byBjcmVhdGUgYW5kIGFuaW1hdGUgU1ZHRWxlbWVudHMu
CisgICAgICAgIChUZW1wbGF0ZVN2Z1N0YWdlLnByb3RvdHlwZS50dW5lKTogQ2hhbmdlcyB0aGUg
dGVzdCBieSBhZGRpbmcgb3IgcmVtb3ZpbmcgZWxlbWVudHMuCisgICAgICAgIChUZW1wbGF0ZVN2
Z1N0YWdlLnByb3RvdHlwZS5hbmltYXRlKTogQW5pbWF0ZXMgdGhlIHRlc3QgZWxlbWVudHMuCisg
ICAgICAgIChUZW1wbGF0ZVN2Z0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVh
dGVzIHRoZSB0ZXN0IHN0YWdlLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVh
dGUpOiBDcmVhdGVzIHRoZSB0ZXN0IGJlbmNobWFyay4KKworICAgICAgICBbcnVubmVyXQorICAg
ICAgICBUaGlzIHBhdGNoIHJlcHJlc2VudHMgdGhlIHRlc3QgcnVubmVyLiBGcm9tIHRoZSBob21l
IHBhZ2UsIGl0IGNvbGxlY3RzIHRoZQorICAgICAgICBzZWxlY3RlZCB0ZXN0IHN1aXRlcyBhbmQg
dGhlIHJ1bm5pbmcgb3B0aW9ucy4gSXQgbG9vcHMgdGhyb3VnaCBhbGwgdGhlIHRlc3RzLAorICAg
ICAgICBydW5zIHRoZW0gYW5kIGNvbGxlY3RzIHRoZWlyIHJ1bm5pbmcgcmVzdWx0cy4gQXQgdGhl
IGVuZCwgaXQgc2hvd3Mgc3VtbWFyeSAKKyAgICAgICAgcmVzdWx0cyBhbmQgYSBmaW5hbCBzY29y
ZS4gSXQgY2FuIGFsc28gc2hvdyBhIGNoYXJ0IGZvciBhIHRlc3Qgc2FtcGxlZCBkYXRhLgorICAg
ICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVy
L3J1bm5lcjogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzOiBB
ZGRlZC4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9hbmlt
b21ldGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNl
cy9hbmltb21ldGVyLmNzczogQWRkZWQuCisgICAgICAgIFRoZSBiZW5jaG1hcmsgcnVubmVyIHBh
Z2UgYW5kIGNzcy4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3Vy
Y2VzL2FuaW1vbWV0ZXIuanM6IEFkZGVkLgorICAgICAgICAod2luZG93LmJlbmNobWFya1J1bm5l
ckNsaWVudC53aWxsQWRkVGVzdEZyYW1lKTogQ2FsbGVkIGFmdGVyIHRoZSB0ZXN0IDxpZnJhbWU+
IGlzIGNyZWF0ZWQuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LmRpZFJ1
blRlc3QpOiBDYWxsZWQgYWZ0ZXIgcnVubmluZyBhIHRlc3QgaXMgZmluaXNoZWQuCisgICAgICAg
ICh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LndpbGxTdGFydEZpcnN0SXRlcmF0aW9uKTog
Q2FsbGVkIGF0IHRoZSBiZWdpbm5pbmcgYmVmb3JlIHJ1bm5pbmcgYW55IHRlc3QuCisgICAgICAg
ICh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LmRpZFJ1blN1aXRlcyk6IENhbGxlZCBhZnRl
ciBydW5uaW5nIGFsbCB0ZXN0cyBvZiBhIHN1aXRlLgorICAgICAgICAod2luZG93LmJlbmNobWFy
a1J1bm5lckNsaWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0aW9uKTogQ2FsbGVkIGFmdGVyIHJ1bm5p
bmcgdGhlIGxhc3QgdGVzdC4KKyAgICAgICAgCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrUnVu
bmVyQ2xpZW50LmJyb3dzZXIpOgorICAgICAgICAoc2hvd1NlY3Rpb24pOiBTaG93cyBhIHNlY3Rp
b24gaW4gdGhlIGFuaW1vbWV0ZXIuaHRtbCBwYWdlLgorICAgICAgICAoc3RhcnRUZXN0KTogQ2Fs
bGVkIHdoZW4gdGhlICJTdGFydCBUZXN0IiBidXR0b24gaXMgY2xpY2tlZC4KKyAgICAgICAgKHNo
b3dSZXN1bHRzKTogQ2FsbGVkIGFmdGVyIGZpbmlzaGluZyBhbGwgdGhlIHRlc3RzLgorICAgICAg
ICAoc2hvd0dyYXBoKTogQ2FsbGVkIHdoZW4gIkNsaWNrLi4uIiBidXR0b24gaW4gdGhlICJTYW1w
bGVzIiBjb2x1bW4gb2YgdGhlIHJlc3VsdHMgdGFibGUgaXMgY2xpY2tlZAorICAgICAgICAKKyAg
ICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qczog
QWRkZWQuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXJTdGF0ZSk6IFRyYWNrcyB0aGUgY3VycmVu
dCBydW5uaW5nIDxzdWl0ZSwgdGVzdD4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lclN0YXRlLnBy
b3RvdHlwZS5jdXJyZW50U3VpdGUpOiBSZXR1cm5zIHRoZSBjdXJyZW50IHJ1bm5pbmcgc3VpdGUu
CisgICAgICAgIChCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUuY3VycmVudFRlc3QpOiBS
ZXR1cm5zIHRoZSBjdXJyZW50IHJ1bm5pbmcgdGVzdC4KKyAgICAgICAgKEJlbmNobWFya1J1bm5l
clN0YXRlLnByb3RvdHlwZS5pc0ZpcnN0VGVzdCk6IFJldHVybnMgdHJ1ZSBpZiB3ZSBhcmUgcnVu
bmluZyB0aGUgZmlyc3QgdGVzdCBpbiB0aGUgY3VycmVudCBzdWl0ZS4KKyAgICAgICAgKEJlbmNo
bWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5uZXh0KTogQWR2YW5jZXMgdG8gdGhlIG5leHQgdGVz
dC4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5wcmVwYXJlQ3VycmVu
dFRlc3QpOiBDcmVhdGVzIGEgbmV3IDxpZnJhbWU+IGFuZCB3YWl0cyBmb3IgaXQgdG8gbG9hZCBh
IHRlc3QuCisKKyAgICAgICAgKEJlbmNobWFya1J1bm5lcik6IE1hbmFnZXMgcnVubmluZyB0aGUg
dGVzdHMgYW5kIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgYmVuY2htYXJrUnVubmVyQ2xpZW50Lgor
ICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS53YWl0Rm9yRWxlbWVudCk6IFdhaXRz
IGZvciBhbiBlbGVtZW50IHRvIGJlIGNyZWF0ZWQuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIu
cHJvdG90eXBlLl9hcHBlbmRGcmFtZSk6IENyZWF0ZXMgYSBuZXcgPGlmcmFtZT4gZWxlbWVudC4K
KyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3JlbW92ZUZyYW1lKTogUmVtb3Zl
ZCB0aGUgY3VycmVudCA8aWZyYW1lPiBlbGVtZW50LgorICAgICAgICAoQmVuY2htYXJrUnVubmVy
LnByb3RvdHlwZS5fcnVuVGVzdEFuZFJlY29yZFJlc3VsdHMpOiBSdW5zIHRoZSBjdXJyZW50IHRl
c3QgYW5kIHNhdmVzIGl0cyByZXN1bHRzLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3Rv
dHlwZS5zdGVwKTogRWl0aGVyIHJ1bnMgdGhlIGN1cnJlbnQgdGVzdCBpZiB0aGVyZSBpcyBvciBz
dGFydCBhIG5ldyBpdGVyYXRpb24uCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBl
LnJ1bkFsbFN0ZXBzKTogTG9vcHMgdG8gcnVuIGFsbCB0aGUgdGVzdHMgYW5kIG1vdmUgdG8gdGhl
IG5leHQgaXRlcmF0aW9uLgorICAgICAgICAodGhpcy5fcnVuTmV4dEl0ZXJhdGlvbik6IFN0YXJ0
cyBhIG5ldyBpdGVyYXRpb24gb3Igc2hvdyB0aGUgcmVzdWx0cy4KKyAgICAgICAgKEJlbmNobWFy
a1J1bm5lci5wcm90b3R5cGUucnVuTXVsdGlwbGVJdGVyYXRpb25zKTogTG9vcHMgdG8gcnVuIGFs
bCB0aGUgaXRlcmF0aW9ucyBhbmQgc2hvdyB0aGUgcmVzdWx0cworICAgICAgICAoQmVuY2htYXJr
UnVubmVyLnByb3RvdHlwZS5fZmluYWxpemUpOiBTdGFydHMgYSBuZXcgaXRlcmF0aW9uLgorCisg
ICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2dyYXBoLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGdyYXBoKTogRHJhd3MgYSBjaGFydCBmb3IgYSB0ZXN0IHNhbXBsZWQgZGF0YS4gSXQg
c2hvd3MgdHdvIHktYXhlczogb25lIGZvciB0aGUgYW5pbWF0ZWQgaXRlbXMgYW5kIHRoZSBzZWNv
bmQgZm9yIEZQUy4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3Vy
Y2VzL3Rlc3RzLmpzOiBBZGRlZC4KKyAgICAgICAgKHN1aXRlRnJvbU5hbWUpOiBSZXR1cm5zIGEg
c3VpdGUgZ2l2ZW4gaXRzIG5hbWUuCisgICAgICAgICh0ZXN0RnJvbU5hbWUpOiBSZXR1cm5zIGEg
dGVzdCBnaXZlbiBpdHMgc3VpdGUgYW5kIG5hbWUuCisKIDIwMTUtMDgtMjcgIENzYWJhIE9zenRy
b2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbRUZMXSBSRUdSRVNTSU9OKHIx
ODg3OTMpOiBJdCBtYWRlIDIwMCBsYXlvdXQgdGVzdHMgYW5kIEJpbmRpbmdzL2V2ZW50LXRhcmdl
dC13cmFwcGVyLmh0bWwgcGVyZm9ybWFuY2UgdGVzdCBmYWlsCkluZGV4OiBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2FsZ29yaXRobS5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2FsZ29yaXRobS5qcwkocmV2aXNpb24g
MCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvYWxnb3JpdGhtLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMwIEBACitBcnJheS5wcm90b3R5cGUuc3dhcCA9
IGZ1bmN0aW9uKGksIGopCit7CisgICAgdmFyIHQgPSB0aGlzW2ldOworICAgIHRoaXNbaV0gPSB0
aGlzW2pdOworICAgIHRoaXNbal0gPSB0OworICAgIHJldHVybiB0aGlzOworfQorCitmdW5jdGlv
biBIZWFwKG1heFNpemUsIGNvbXBhcmUpCit7CisgICAgdGhpcy5fbWF4U2l6ZSA9IG1heFNpemU7
CisgICAgdGhpcy5fY29tcGFyZSA9IGNvbXBhcmU7CisgICAgdGhpcy5fc2l6ZSA9IDA7CisgICAg
dGhpcy5fdmFsdWVzID0gbmV3IEFycmF5KHRoaXMuX21heFNpemUpOworfQorCitIZWFwLnByb3Rv
dHlwZSA9Cit7CisgICAgX3BhcmVudEluZGV4OiBmdW5jdGlvbihpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGkgPiAwID8gTWF0aC5mbG9vcigoaSAtIDEpIC8gMikgOiAtMTsKKyAgICB9LAorICAg
IAorICAgIF9sZWZ0SW5kZXg6IGZ1bmN0aW9uKGkpCisgICAgeworICAgICAgICByZXR1cm4gaSAq
IDIgKyAxIDwgdGhpcy5fc2l6ZSA/IGkgKiAyICsgMSA6IC0xOworICAgIH0sCisgICAgCisgICAg
X3JpZ2h0SW5kZXg6IGZ1bmN0aW9uKGkpCisgICAgeworICAgICAgICByZXR1cm4gaSAqIDIgKyAy
IDwgdGhpcy5fc2l6ZSA/IGkgKiAyICsgMiA6IC0xOworICAgIH0sCisgICAgCisgICAgLy8gUmV0
dXJucyB0aGUgY2hpbGQgaW5kZXggdGhhdCBtYXkgdmlvbGF0ZSB0aGUgaGVhcCBwcm9wZXJ0eSBh
dCBpbmRleCBpLgorICAgIF9jaGlsZEluZGV4OiBmdW5jdGlvbihpKQorICAgIHsKKyAgICAgICAg
dmFyIGwgPSB0aGlzLl9sZWZ0SW5kZXgoaSk7CisgICAgICAgIHZhciByID0gdGhpcy5fcmlnaHRJ
bmRleChpKTsKKworICAgICAgICBpZiAobCAhPSAtMSAmJiByICE9IC0xKQorICAgICAgICAgICAg
cmV0dXJuIHRoaXMuX2NvbXBhcmUodGhpcy5fdmFsdWVzW2xdLCB0aGlzLl92YWx1ZXNbcl0pID4g
MCA/IGwgOiByOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGwgIT0gLTEgPyBsIDogcjsKKyAg
ICB9LAorICAgIAorICAgIGluaXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Np
emUgPSAwOworICAgIH0sCisgICAgCisgICAgdG9wOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fc2l6ZSA/IHRoaXMuX3ZhbHVlc1swXSA6IE5hTjsKKyAgICB9LAorICAg
IAorICAgIHB1c2g6IGZ1bmN0aW9uKHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3Np
emUgPT0gdGhpcy5fbWF4U2l6ZSkgeworICAgICAgICAgICAgLy8gSWYgc2l6ZSBpcyBib3VuZGVk
IGFuZCB0aGUgbmV3IHZhbHVlIGNhbiBiZSBhIHBhcmVudCBvZiB0aGUgdG9wKCkKKyAgICAgICAg
ICAgIC8vIGlmIHRoZSBzaXplIHdlcmUgdW5ib3VuZGVkLCBqdXN0IGlnbm9yZSB0aGUgbmV3IHZh
bHVlLgorICAgICAgICAgICAgaWYgKHRoaXMuX2NvbXBhcmUodmFsdWUsIHRoaXMudG9wKCkpID4g
MCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB0aGlzLnBvcCgpOworICAg
ICAgICB9CisgICAgICAgIHRoaXMuX3ZhbHVlc1t0aGlzLl9zaXplKytdID0gdmFsdWU7CisgICAg
ICAgIHRoaXMuX2J1YmJsZSh0aGlzLl9zaXplIC0gMSk7CisgICAgfSwKKworICAgIHBvcDogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9zaXplKQorICAgICAgICAgICAgcmV0
dXJuIE5hTjsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX3ZhbHVlc1swXSA9IHRoaXMuX3ZhbHVl
c1stLXRoaXMuX3NpemVdOworICAgICAgICB0aGlzLl9zaW5rKDApOworICAgIH0sCisgICAgCisg
ICAgX2J1YmJsZTogZnVuY3Rpb24oaSkKKyAgICB7CisgICAgICAgIC8vIEZpeGVzIHRoZSBoZWFw
IHBvcGVydHkgYXQgaW5kZXggaSBnaXZlbiB0aGF0IHBhcmVudCBpcyB0aGUgb25seSBub2RlIHRo
YXQKKyAgICAgICAgLy8gbWF5IHZpYWxvdGUgdGhlIGhlYXAgcHJvcGVydHkuCisgICAgICAgIGZv
ciAodmFyIHBpID0gdGhpcy5fcGFyZW50SW5kZXgoaSk7IHBpICE9IC0xOyBpID0gcGksIHBpID0g
dGhpcy5fcGFyZW50SW5kZXgocGkpKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fY29tcGFyZSh0
aGlzLl92YWx1ZXNbcGldLCB0aGlzLl92YWx1ZXNbaV0pID4gMCkKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVlcy5zd2FwKHBp
LCBpKTsKKyAgICAgICAgfQorICAgIH0sCisgICAgCisgICAgX3Npbms6IGZ1bmN0aW9uKGkpCisg
ICAgeworICAgICAgICAvLyBGaXhlcyB0aGUgaGVhcCBwb3BlcnR5IGF0IGluZGV4IGkgZ2l2ZW4g
dGhhdCBlYWNoIG9mIHRoZSBsZWZ0IGFuZCB0aGUgcmlnaHQKKyAgICAgICAgLy8gc3ViLXRyZWVz
IHNhdGlzZmllcyB0aGUgaGVhcCBwcm9wZXJ0eS4KKyAgICAgICAgZm9yICh2YXIgY2kgPSB0aGlz
Ll9jaGlsZEluZGV4KGkpOyBjaSAhPSAtMTsgaSA9IGNpLCBjaSA9IHRoaXMuX2NoaWxkSW5kZXgo
Y2kpKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fY29tcGFyZSh0aGlzLl92YWx1ZXNbaV0sIHRo
aXMuX3ZhbHVlc1tjaV0pID4gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgdGhpcy5fdmFsdWVzLnN3YXAoY2ksIGkpOworICAgICAgICB9CisgICAg
fSwKKyAgICAKKyAgICBzdHI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBvdXQgPSAi
SGVhcFsiICsgdGhpcy5fc2l6ZSArICJdID0gWyI7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGhpcy5fc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBvdXQgKz0gdGhpcy5fdmFsdWVzW2ld
OworICAgICAgICAgICAgaWYgKGkgPCB0aGlzLl9zaXplIC0gMSkKKyAgICAgICAgICAgICAgICBv
dXQgKz0gIiwgIjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gb3V0ICsgIl0iOworICAgIH0s
CisgICAgCisgICAgdmFsdWVzOiBmdW5jdGlvbihzaXplKSB7CisgICAgICAgIC8vIFJldHVybnMg
dGhlIGxhc3QgInNpemUiIGhlYXAgZWxlbWVudHMgdmFsdWVzLgorICAgICAgICB2YXIgdmFsdWVz
ID0gdGhpcy5fdmFsdWVzLnNsaWNlKDAsIHRoaXMuX3NpemUpOworICAgICAgICByZXR1cm4gdmFs
dWVzLnNvcnQodGhpcy5fY29tcGFyZSkuc2xpY2UoMCwgTWF0aC5taW4oc2l6ZSwgdGhpcy5fc2l6
ZSkpOworICAgIH0KK30KKwordmFyIEFsZ29yaXRobSA9Cit7CisgICAgY3JlYXRlTWluSGVhcDog
ZnVuY3Rpb24obWF4U2l6ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgSGVhcChtYXhTaXpl
LCBmdW5jdGlvbihhLCBiKSB7IHJldHVybiBiIC0gYTsgfSk7CisgICAgfSwKKyAgICAKKyAgICBj
cmVhdGVNYXhIZWFwOiBmdW5jdGlvbihtYXhTaXplKSB7CisgICAgICAgIHJldHVybiBuZXcgSGVh
cChtYXhTaXplLCBmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhIC0gYjsgfSk7CisgICAgfQorfQpJ
bmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9tYWluLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvbWFpbi5qcwko
cmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvbWFp
bi5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5NiBAQAorZnVuY3Rpb24gUG9pbnQoeCwg
eSkKK3sKKyAgICB0aGlzLnggPSB4OworICAgIHRoaXMueSA9IHk7Cit9CisKK1BvaW50LnByb3Rv
dHlwZSA9Cit7CisgICAgLy8gVXNlZCB3aGVuIHRoZSBwb2ludCBvYmplY3QgaXMgdXNlZCBhcyBh
IHNpemUgb2JqZWN0CisgICAgZ2V0IHdpZHRoKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Lng7CisgICAgfSwKKyAgICAKKyAgICAvLyBVc2VkIHdoZW4gdGhlIHBvaW50IG9iamVjdCBpcyB1
c2VkIGFzIGEgc2l6ZSBvYmplY3QgICAgCisgICAgZ2V0IGhlaWdodCgpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy55OworICAgIH0sCisgICAgCisgICAgZ2V0IGNlbnRlcigpCisgICAgewor
ICAgICAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMueCAvIDIsIHRoaXMueSAvIDIpOworICAgIH0s
CisgICAgCisgICAgYWRkOiBmdW5jdGlvbihvdGhlcikKKyAgICB7CisgICAgICAgIHJldHVybiBu
ZXcgUG9pbnQodGhpcy54ICsgb3RoZXIueCwgdGhpcy55ICsgb3RoZXIueSk7CisgICAgfSwKKyAg
ICAKKyAgICBzdWJ0cmFjdDogZnVuY3Rpb24ob3RoZXIpCisgICAgeworICAgICAgICByZXR1cm4g
bmV3IFBvaW50KHRoaXMueCAtIG90aGVyLngsIHRoaXMueSAtIG90aGVyLnkpOworICAgIH0sCisg
ICAgCisgICAgbXVsdGlwbHk6IGZ1bmN0aW9uKG90aGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG5ldyBQb2ludCh0aGlzLnggKiBvdGhlci54LCB0aGlzLnkgKiBvdGhlci55KTsKKyAgICB9LAor
ICAgIAorICAgIG1vdmU6IGZ1bmN0aW9uKGFuZ2xlLCB2ZWxvY2l0eSwgdGltZURlbHRhKQorICAg
IHsKKyAgICAgICAgdmFyIHggPSB0aGlzLnggKyBNYXRoLmNvcyhhbmdsZSkgKiB2ZWxvY2l0eSAq
ICh0aW1lRGVsdGEgLyAxMDAwKTsKKyAgICAgICAgdmFyIHkgPSB0aGlzLnkgKyBNYXRoLnNpbihh
bmdsZSkgKiB2ZWxvY2l0eSAqICh0aW1lRGVsdGEgLyAxMDAwKTsKKyAgICAgICAgcmV0dXJuIG5l
dyBQb2ludCh4LCB5KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEluc2V0cyh0b3AsIHJpZ2h0LCBi
b3R0b20sIGxlZnQpCit7CisgICAgdGhpcy50b3AgPSB0b3A7CisgICAgdGhpcy5yaWdodCA9IHJp
Z2h0OworICAgIHRoaXMuYm90dG9tID0gYm90dG9tOworICAgIHRoaXMubGVmdCA9IGxlZnQ7Cit9
CisKK0luc2V0cy5wcm90b3R5cGUgPQoreworICAgIGdldCB3aWR0aCgpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMubGVmdCArIHRoaXMucmlnaHQ7CisgICAgfSwKKyAgICBnZXQgaGVpZ2h0KCkgewor
ICAgICAgICByZXR1cm4gdGhpcy50b3AgKyB0aGlzLmJvdHRvbTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIFNpbXBsZVByb21pc2UoKQoreworICAgIHRoaXMuX2NoYWluZWRQcm9taXNlID0gbnVsbDsK
KyAgICB0aGlzLl9jYWxsYmFjayA9IG51bGw7Cit9CisKK1NpbXBsZVByb21pc2UucHJvdG90eXBl
LnRoZW4gPSBmdW5jdGlvbiAoY2FsbGJhY2spCit7CisgICAgaWYgKHRoaXMuX2NhbGxiYWNrKQor
ICAgICAgICB0aHJvdyAiU2ltcGxlUHJvbWlzZSBkb2Vzbid0IHN1cHBvcnQgbXVsdGlwbGUgY2Fs
bHMgdG8gdGhlbiI7CisgICAgICAgIAorICAgIHRoaXMuX2NhbGxiYWNrID0gY2FsbGJhY2s7Cisg
ICAgdGhpcy5fY2hhaW5lZFByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICAKKyAgICBp
ZiAodGhpcy5fcmVzb2x2ZWQpCisgICAgICAgIHRoaXMucmVzb2x2ZSh0aGlzLl9yZXNvbHZlZFZh
bHVlKTsKKworICAgIHJldHVybiB0aGlzLl9jaGFpbmVkUHJvbWlzZTsKK30KKworU2ltcGxlUHJv
bWlzZS5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uICh2YWx1ZSkKK3sKKyAgICBpZiAoIXRo
aXMuX2NhbGxiYWNrKSB7CisgICAgICAgIHRoaXMuX3Jlc29sdmVkID0gdHJ1ZTsKKyAgICAgICAg
dGhpcy5fcmVzb2x2ZWRWYWx1ZSA9IHZhbHVlOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgdmFyIHJlc3VsdCA9IHRoaXMuX2NhbGxiYWNrKHZhbHVlKTsKKyAgICBpZiAocmVzdWx0IGlu
c3RhbmNlb2YgU2ltcGxlUHJvbWlzZSkgeworICAgICAgICB2YXIgY2hhaW5lZFByb21pc2UgPSB0
aGlzLl9jaGFpbmVkUHJvbWlzZTsKKyAgICAgICAgcmVzdWx0LnRoZW4oZnVuY3Rpb24gKHJlc3Vs
dCkgeyBjaGFpbmVkUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7IH0pOworICAgIH0gZWxzZQorICAg
ICAgICB0aGlzLl9jaGFpbmVkUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7Cit9CisKK2Z1bmN0aW9u
IE9wdGlvbnModGVzdEludGVydmFsLCBmcmFtZVJhdGUpCit7CisgICAgdGhpcy50ZXN0SW50ZXJ2
YWwgPSB0ZXN0SW50ZXJ2YWw7CisgICAgdGhpcy5mcmFtZVJhdGUgPSBmcmFtZVJhdGU7Cit9CisK
K2Z1bmN0aW9uIFByb2dyZXNzQmFyKGVsZW1lbnQsIHJhbmdlcykKK3sKKyAgICB0aGlzLmVsZW1l
bnQgPSBlbGVtZW50OworICAgIHRoaXMucmFuZ2VzID0gcmFuZ2VzOworICAgIHRoaXMuY3VycmVu
dFJhbmdlID0gMDsKK30KKworUHJvZ3Jlc3NCYXIucHJvdG90eXBlID0KK3sKKyAgICBfcHJvZ3Jl
c3NUb1BlcmNlbnQ6IGZ1bmN0aW9uKHByb2dyZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBy
b2dyZXNzICogKDEwMCAvIHRoaXMucmFuZ2VzKTsKKyAgICB9LAorICAgIAorICAgIGluY1Jhbmdl
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICArK3RoaXMuY3VycmVudFJhbmdlOworICAgIH0s
CisgICAgCisgICAgc2V0UG9zOiBmdW5jdGlvbihwcm9ncmVzcykKKyAgICB7CisgICAgICAgIHRo
aXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMuX3Byb2dyZXNzVG9QZXJjZW50KHRoaXMuY3Vy
cmVudFJhbmdlICsgcHJvZ3Jlc3MpICsgIiUiOworICAgIH0KK30KKworZnVuY3Rpb24gUmVjb3Jk
VGFibGUoZWxlbWVudCkKK3sKKyAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50OworICAgIHRoaXMu
Y2xlYXIoKTsKK30KKworUmVjb3JkVGFibGUucHJvdG90eXBlID0KK3sKKyAgICBjbGVhcjogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5lbGVtZW50LmlubmVySFRNTCA9ICIiOworICAg
IH0sCisgICAgCisgICAgX3Nob3dUaXRsZXM6IGZ1bmN0aW9uKHJvdywgcXVldWUsIHRpdGxlcywg
bWVzc2FnZSkKKyAgICB7CisgICAgICAgIHRpdGxlcy5mb3JFYWNoKGZ1bmN0aW9uICh0aXRsZSkg
eworICAgICAgICAgICAgdmFyIHRoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKTsKKyAg
ICAgICAgICAgIHRoLnRleHRDb250ZW50ID0gdGl0bGUudGV4dDsKKyAgICAgICAgICAgIGlmICh0
eXBlb2YgbWVzc2FnZSAhPSAidW5kZWZpbmVkIiAmJiBtZXNzYWdlLmxlbmd0aCkgeworICAgICAg
ICAgICAgICAgIHRoLmlubmVySFRNTCArPSAiPGJyPlsiICsgbWVzc2FnZSArICJdIjsKKyAgICAg
ICAgICAgICAgICBtZXNzYWdlID0gIiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
IndpZHRoIiBpbiB0aXRsZSkKKyAgICAgICAgICAgICAgICB0aC53aWR0aCA9IHRpdGxlLndpZHRo
ICsgIiUiOworICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKHRoKTsKKyAgICAgICAgICAgIHF1
ZXVlLnB1c2goe2VsZW1lbnQ6IHRoLCB0aXRsZXM6IHRpdGxlLmNoaWxkcmVuIH0pOworICAgICAg
ICB9KTsKKyAgICB9LAorICAgIAorICAgIF9zaG93SGVhZGVyOiBmdW5jdGlvbihzdWl0ZU5hbWUs
IHRpdGxlcywgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJ0ciIpOworCisgICAgICAgIHZhciBxdWV1ZSA9IFtdOworICAgICAgICB0aGlz
Ll9zaG93VGl0bGVzKHJvdywgcXVldWUsIHRpdGxlcywgbWVzc2FnZSk7CisgICAgICAgIHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZChyb3cpOworCisgICAgICAgIHdoaWxlIChxdWV1ZS5sZW5ndGgp
IHsKKyAgICAgICAgICAgIHZhciByb3cgPSBudWxsOworICAgICAgICAgICAgdmFyIGVudHJpZXMg
PSBbXTsKKworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHF1ZXVlLmxlbmd0aDsg
aSA8IGxlbjsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gcXVldWUuc2hpZnQo
KTsKKworICAgICAgICAgICAgICAgIGlmICghZW50cnkudGl0bGVzLmxlbmd0aCkgeworICAgICAg
ICAgICAgICAgICAgICBlbnRyaWVzLnB1c2goZW50cnkuZWxlbWVudCk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlm
ICghcm93KQorICAgICAgICAgICAgICAgICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgidHIiKTsKKworICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dUaXRsZXMocm93LCBxdWV1
ZSwgZW50cnkudGl0bGVzLCAiIik7CisgICAgICAgICAgICAgICAgZW50cnkuZWxlbWVudC5jb2xT
cGFuID0gZW50cnkudGl0bGVzLmxlbmd0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKHJvdykgeworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChyb3cp
OworICAgICAgICAgICAgICAgIGVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihlbnRyeSkgeworICAg
ICAgICAgICAgICAgICAgICArK2VudHJ5LnJvd1NwYW47CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9LAorICAgIAorICAgIF9zaG93RW1wdHk6IGZ1
bmN0aW9uKHJvdywgdGVzdE5hbWUpCisgICAgeworICAgICAgICB2YXIgdGQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGQpOworICAgIH0s
CisgICAgCisgICAgX3Nob3dWYWx1ZTogZnVuY3Rpb24ocm93LCB0ZXN0TmFtZSwgdmFsdWUpCisg
ICAgeworICAgICAgICB2YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAg
ICAgICB0ZC50ZXh0Q29udGVudCA9IHZhbHVlLnRvRml4ZWQoMik7CisgICAgICAgIHJvdy5hcHBl
bmRDaGlsZCh0ZCk7CisgICAgfSwKKyAgICAKKyAgICBfc2hvd1NhbXBsZXM6IGZ1bmN0aW9uKHJv
dywgdGVzdE5hbWUsIGF4ZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGltZU9mZnNldCkKKyAgICB7Cisg
ICAgICAgIHZhciB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgICAgIHZh
ciBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgYnV0dG9u
LmNsYXNzTmFtZSA9ICJzbWFsbC1idXR0b24iOworICAgICAgICAgICAgCisgICAgICAgIGJ1dHRv
bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgd2lu
ZG93LnNob3dHcmFwaCh0ZXN0TmFtZSwgYXhlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0
KTsKKyAgICAgICAgfSk7CisgICAgICAgICAgICAKKyAgICAgICAgYnV0dG9uLnRleHRDb250ZW50
ID0gIkdyYXBoLi4uIjsKKyAgICAgICAgdGQuYXBwZW5kQ2hpbGQoYnV0dG9uKTsKKyAgICAgICAg
cm93LmFwcGVuZENoaWxkKHRkKTsKKyAgICB9LAorICAgIAorICAgIF9zaG93VGVzdDogZnVuY3Rp
b24odGVzdE5hbWUsIHRpdGxlcywgc2FtcGxlciwgZmluYWxSZXN1bHRzKQorICAgIHsKKyAgICAg
ICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisgICAgICAgIHZhciB0
ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgICAgIAorICAgICAgICB0ZC50
ZXh0Q29udGVudCA9IHRlc3ROYW1lOworICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGQpOworICAg
ICAgICAKKyAgICAgICAgdmFyIGF4ZXMgPSBbXTsKKyAgICAgICAgc2FtcGxlci5leHBlcmltZW50
cy5mb3JFYWNoKGZ1bmN0aW9uKGV4cGVyaW1lbnQsIGluZGV4KSB7CisgICAgICAgICAgICB0aGlz
Ll9zaG93VmFsdWUocm93LCB0ZXN0TmFtZSwgZXhwZXJpbWVudC5tZWFuKCkpOworICAgICAgICAg
ICAgdGhpcy5fc2hvd1ZhbHVlKHJvdywgdGVzdE5hbWUsIGV4cGVyaW1lbnQuY29uZmlkZW5jZUlu
dGVydmFsRGVsdGEoRXhwZXJpbWVudC5kZWZhdWx0cy5DT05GSURFTkNFKSk7CisgICAgICAgICAg
ICB0aGlzLl9zaG93VmFsdWUocm93LCB0ZXN0TmFtZSwgZXhwZXJpbWVudC5jb25jZXJuKEV4cGVy
aW1lbnQuZGVmYXVsdHMuQ09OQ0VSTikpOworICAgICAgICAgICAgdGhpcy5fc2hvd1ZhbHVlKHJv
dywgdGVzdE5hbWUsIGV4cGVyaW1lbnQuc3RhbmRhcmREZXZpYXRpb24oKSk7CisgICAgICAgICAg
ICB0aGlzLl9zaG93VmFsdWUocm93LCB0ZXN0TmFtZSwgZXhwZXJpbWVudC5wZXJjZW50YWdlKCkp
OworICAgICAgICAgICAgYXhlcy5wdXNoKHRpdGxlc1tpbmRleCArIDFdLnRleHQpOworICAgICAg
ICAgICAgCisgICAgICAgIH0sIHRoaXMpOworCisgICAgICAgIHRoaXMuX3Nob3dWYWx1ZShyb3cs
IHRlc3ROYW1lLCBzYW1wbGVyLmV4cGVyaW1lbnRzWzBdLnNjb3JlKEV4cGVyaW1lbnQuZGVmYXVs
dHMuQ09OQ0VSTikpOworCisgICAgICAgIGlmIChmaW5hbFJlc3VsdHMpCisgICAgICAgICAgICB0
aGlzLl9zaG93U2FtcGxlcyhyb3csIHRlc3ROYW1lLCBheGVzLCBzYW1wbGVyLnNhbXBsZXMsIHNh
bXBsZXIuc2FtcGxpbmdUaW1lT2Zmc2V0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhp
cy5fc2hvd0VtcHR5KHJvdywgdGVzdE5hbWUpOworICAgICAgICAgICAgCisgICAgICAgIHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZChyb3cpOworICAgIH0sCisgICAgCisgICAgX3Nob3dTdWl0ZTog
ZnVuY3Rpb24oc3VpdGUsIHN1aXRlU2FtcGxlcnMpCisgICAgeworICAgICAgICB2YXIgc2NvcmVz
ID0gW107ICAgICAgICAKKyAgICAgICAgZm9yICh2YXIgdGVzdE5hbWUgaW4gc3VpdGVTYW1wbGVy
cykgeworICAgICAgICAgICAgdmFyIHRlc3QgPSB0ZXN0RnJvbU5hbWUoc3VpdGUsIHRlc3ROYW1l
KTsKKyAgICAgICAgICAgIHZhciBzYW1wbGVyID0gc3VpdGVTYW1wbGVyc1t0ZXN0TmFtZV07IAor
ICAgICAgICAgICAgdGhpcy5fc2hvd1Rlc3QodGVzdE5hbWUsIHN1aXRlLnRpdGxlcywgc2FtcGxl
ciwgdHJ1ZSk7CisgICAgICAgICAgICBzY29yZXMucHVzaChzYW1wbGVyLmV4cGVyaW1lbnRzWzBd
LnNjb3JlKEV4cGVyaW1lbnQuZGVmYXVsdHMuQ09OQ0VSTikpOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBzY29yZXM7CisgICAgfSwKKyAgICAKKyAgICBzaG93UmVjb3JkOiBmdW5jdGlvbihz
dWl0ZSwgdGVzdCwgc2FtcGxlciwgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHRoaXMuY2xlYXIo
KTsgICAgICAgIAorICAgICAgICB0aGlzLl9zaG93SGVhZGVyKCIiLCBzdWl0ZS50aXRsZXMsIG1l
c3NhZ2UpOworICAgICAgICB0aGlzLl9zaG93VGVzdCh0ZXN0Lm5hbWUsIHN1aXRlLnRpdGxlcywg
c2FtcGxlciwgZmFsc2UpOyAgICAgICAgCisgICAgfSwKKyAgICAKKyAgICBzaG93SXRlcmF0aW9u
czogZnVuY3Rpb24oaXRlcmF0aW9uc1NhbXBsZXJzKQorICAgIHsKKyAgICAgICAgdGhpcy5jbGVh
cigpOworCisgICAgICAgIHZhciBzY29yZXMgPSBbXTsKKyAgICAgICAgdmFyIHRpdGxlcyA9IG51
bGw7CisgICAgICAgIGl0ZXJhdGlvbnNTYW1wbGVycy5mb3JFYWNoKGZ1bmN0aW9uKHN1aXRlc1Nh
bXBsZXJzKSB7CisgICAgICAgICAgICBmb3IgKHZhciBzdWl0ZU5hbWUgaW4gc3VpdGVzU2FtcGxl
cnMpIHsKKyAgICAgICAgICAgICAgICB2YXIgc3VpdGUgPSBzdWl0ZUZyb21OYW1lKHN1aXRlTmFt
ZSk7CisgICAgICAgICAgICAgICAgaWYgKHRpdGxlcyAhPSBzdWl0ZS50aXRsZXMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdGl0bGVzID0gc3VpdGUudGl0bGVzOworICAgICAgICAgICAgICAgICAg
ICB0aGlzLl9zaG93SGVhZGVyKHN1aXRlTmFtZSwgdGl0bGVzLCAiIik7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgdmFyIHN1aXRlU2NvcmVzID0gdGhpcy5fc2hvd1N1aXRl
KHN1aXRlLCBzdWl0ZXNTYW1wbGVyc1tzdWl0ZU5hbWVdKTsKKyAgICAgICAgICAgICAgICBzY29y
ZXMucHVzaC5hcHBseShzY29yZXMsIHN1aXRlU2NvcmVzKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSwgdGhpcyk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gU3RhdGlzdGljcy5nZW9tZXRy
aWNNZWFuKHNjb3Jlcyk7CisgICAgfQorfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcwkocmV2aXNpb24gMCkKKysrIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDE5NyBAQAordmFyIFN0YXRpc3RpY3MgPQoreworICAgIHNhbXBs
ZU1lYW46IGZ1bmN0aW9uKG51bWJlck9mU2FtcGxlcywgc3VtKQorICAgIHsKKyAgICAgICAgaWYg
KG51bWJlck9mU2FtcGxlcyA8IDEpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIHN1bSAvIG51bWJlck9mU2FtcGxlczsKKyAgICB9LAorICAgIAorICAgIHNhbXBsZVN0YW5k
YXJkRGV2aWF0aW9uOiBmdW5jdGlvbihudW1iZXJPZlNhbXBsZXMsIHN1bSwgc3F1YXJlU3VtKQor
ICAgIHsKKyAgICAgICAgaWYgKG51bWJlck9mU2FtcGxlcyA8IDIpCisgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIE1hdGguc3FydCgoc3F1YXJlU3VtIC0gc3VtICogc3VtIC8g
bnVtYmVyT2ZTYW1wbGVzKSAvIChudW1iZXJPZlNhbXBsZXMgLSAxKSkgOworICAgIH0sCisgICAg
CisgICAgZ2VvbWV0cmljTWVhbjogZnVuY3Rpb24odmFsdWVzKQorICAgIHsKKyAgICAgICAgaWYg
KCF2YWx1ZXMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHZhciBwcm9k
dWN0ID0gdmFsdWVzLnJlZHVjZShmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhICogYjsgfSk7Cisg
ICAgICAgIHJldHVybiBNYXRoLnBvdyhwcm9kdWN0LCAxIC8gdmFsdWVzLmxlbmd0aCk7CisgICAg
fSwKKyAgICAKKyAgICAvLyBTZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdHVkZW50
J3NfdC1kaXN0cmlidXRpb24jVGFibGVfb2Zfc2VsZWN0ZWRfdmFsdWVzCisgICAgLy8gVGhpcyB0
YWJsZSBjb250YWlucyBvbmUgc2lkZWQgKGEuay5hLiB0YWlsKSB2YWx1ZXMuCisgICAgdERpc3Ry
aWJ1dGlvbkludmVyc2VDREY6IHsKKyAgICAgICAgMC45OiBbCisgICAgICAgICAgICAzLjA3NzY4
NCwgMS44ODU2MTgsIDEuNjM3NzQ0LCAxLjUzMzIwNiwgMS40NzU4ODQsIDEuNDM5NzU2LCAxLjQx
NDkyNCwgMS4zOTY4MTUsIDEuMzgzMDI5LCAxLjM3MjE4NCwKKyAgICAgICAgICAgIDEuMzYzNDMw
LCAxLjM1NjIxNywgMS4zNTAxNzEsIDEuMzQ1MDMwLCAxLjM0MDYwNiwgMS4zMzY3NTcsIDEuMzMz
Mzc5LCAxLjMzMDM5MSwgMS4zMjc3MjgsIDEuMzI1MzQxLAorICAgICAgICAgICAgMS4zMjMxODgs
IDEuMzIxMjM3LCAxLjMxOTQ2MCwgMS4zMTc4MzYsIDEuMzE2MzQ1LCAxLjMxNDk3MiwgMS4zMTM3
MDMsIDEuMzEyNTI3LCAxLjMxMTQzNCwgMS4zMTA0MTUsCisgICAgICAgICAgICAxLjMwOTQ2NCwg
MS4zMDg1NzMsIDEuMzA3NzM3LCAxLjMwNjk1MiwgMS4zMDYyMTIsIDEuMzA1NTE0LCAxLjMwNDg1
NCwgMS4zMDQyMzAsIDEuMzAzNjM5LCAxLjMwMzA3NywKKyAgICAgICAgICAgIDEuMzAyNTQzLCAx
LjMwMjAzNSwgMS4zMDE1NTIsIDEuMzAxMDkwLCAxLjMwMDY0OSwgMS4zMDAyMjgsIDEuMjk5ODI1
LCAxLjI5OTQzOSwgMS4yOTkwNjksIDEuMjk4NzE0LAorCisgICAgICAgICAgICAxLjI5ODM3Mywg
MS4yOTgwNDUsIDEuMjk3NzMwLCAxLjI5NzQyNiwgMS4yOTcxMzQsIDEuMjk2ODUzLCAxLjI5NjU4
MSwgMS4yOTYzMTksIDEuMjk2MDY2LCAxLjI5NTgyMSwKKyAgICAgICAgICAgIDEuMjk1NTg1LCAx
LjI5NTM1NiwgMS4yOTUxMzQsIDEuMjk0OTIwLCAxLjI5NDcxMiwgMS4yOTQ1MTEsIDEuMjk0MzE1
LCAxLjI5NDEyNiwgMS4yOTM5NDIsIDEuMjkzNzYzLAorICAgICAgICAgICAgMS4yOTM1ODksIDEu
MjkzNDIxLCAxLjI5MzI1NiwgMS4yOTMwOTcsIDEuMjkyOTQxLCAxLjI5Mjc5MCwgMS4yOTI2NDMs
IDEuMjkyNTAwLCAxLjI5MjM2MCwgMS4yOTIyMjQsCisgICAgICAgICAgICAxLjI5MjA5MSwgMS4y
OTE5NjEsIDEuMjkxODM1LCAxLjI5MTcxMSwgMS4yOTE1OTEsIDEuMjkxNDczLCAxLjI5MTM1OCwg
MS4yOTEyNDYsIDEuMjkxMTM2LCAxLjI5MTAyOSwKKyAgICAgICAgICAgIDEuMjkwOTI0LCAxLjI5
MDgyMSwgMS4yOTA3MjEsIDEuMjkwNjIzLCAxLjI5MDUyNywgMS4yOTA0MzIsIDEuMjkwMzQwLCAx
LjI5MDI1MCwgMS4yOTAxNjEsIDEuMjkwMDc1XSwKKyAgICAgICAgMC45NTogWworICAgICAgICAg
ICAgNi4zMTM3NTIsIDIuOTE5OTg2LCAyLjM1MzM2MywgMi4xMzE4NDcsIDIuMDE1MDQ4LCAxLjk0
MzE4MCwgMS44OTQ1NzksIDEuODU5NTQ4LCAxLjgzMzExMywgMS44MTI0NjEsCisgICAgICAgICAg
ICAxLjc5NTg4NSwgMS43ODIyODgsIDEuNzcwOTMzLCAxLjc2MTMxMCwgMS43NTMwNTAsIDEuNzQ1
ODg0LCAxLjczOTYwNywgMS43MzQwNjQsIDEuNzI5MTMzLCAxLjcyNDcxOCwKKyAgICAgICAgICAg
IDEuNzIwNzQzLCAxLjcxNzE0NCwgMS43MTM4NzIsIDEuNzEwODgyLCAxLjcwODE0MSwgMS43MDU2
MTgsIDEuNzAzMjg4LCAxLjcwMTEzMSwgMS42OTkxMjcsIDEuNjk3MjYxLAorICAgICAgICAgICAg
MS42OTU1MTksIDEuNjkzODg5LCAxLjY5MjM2MCwgMS42OTA5MjQsIDEuNjg5NTcyLCAxLjY4ODI5
OCwgMS42ODcwOTQsIDEuNjg1OTU0LCAxLjY4NDg3NSwgMS42ODM4NTEsCisgICAgICAgICAgICAx
LjY4Mjg3OCwgMS42ODE5NTIsIDEuNjgxMDcxLCAxLjY4MDIzMCwgMS42Nzk0MjcsIDEuNjc4NjYw
LCAxLjY3NzkyNywgMS42NzcyMjQsIDEuNjc2NTUxLCAxLjY3NTkwNSwKKworICAgICAgICAgICAg
MS42NzUyODUsIDEuNjc0Njg5LCAxLjY3NDExNiwgMS42NzM1NjUsIDEuNjczMDM0LCAxLjY3MjUy
MiwgMS42NzIwMjksIDEuNjcxNTUzLCAxLjY3MTA5MywgMS42NzA2NDksCisgICAgICAgICAgICAx
LjY3MDIxOSwgMS42Njk4MDQsIDEuNjY5NDAyLCAxLjY2OTAxMywgMS42Njg2MzYsIDEuNjY4Mjcx
LCAxLjY2NzkxNiwgMS42Njc1NzIsIDEuNjY3MjM5LCAxLjY2NjkxNCwKKyAgICAgICAgICAgIDEu
NjY2NjAwLCAxLjY2NjI5NCwgMS42NjU5OTYsIDEuNjY1NzA3LCAxLjY2NTQyNSwgMS42NjUxNTEs
IDEuNjY0ODg1LCAxLjY2NDYyNSwgMS42NjQzNzEsIDEuNjY0MTI1LAorICAgICAgICAgICAgMS42
NjM4ODQsIDEuNjYzNjQ5LCAxLjY2MzQyMCwgMS42NjMxOTcsIDEuNjYyOTc4LCAxLjY2Mjc2NSwg
MS42NjI1NTcsIDEuNjYyMzU0LCAxLjY2MjE1NSwgMS42NjE5NjEsCisgICAgICAgICAgICAxLjY2
MTc3MSwgMS42NjE1ODUsIDEuNjYxNDA0LCAxLjY2MTIyNiwgMS42NjEwNTIsIDEuNjYwODgxLCAx
LjY2MDcxNSwgMS42NjA1NTEsIDEuNjYwMzkxLCAxLjY2MDIzNF0sCisgICAgICAgIDAuOTc1OiBb
CisgICAgICAgICAgICAxMi43MDYyMDUsIDQuMzAyNjUzLCAzLjE4MjQ0NiwgMi43NzY0NDUsIDIu
NTcwNTgyLCAyLjQ0NjkxMiwgMi4zNjQ2MjQsIDIuMzA2MDA0LCAyLjI2MjE1NywgMi4yMjgxMzks
CisgICAgICAgICAgICAyLjIwMDk4NSwgMi4xNzg4MTMsIDIuMTYwMzY5LCAyLjE0NDc4NywgMi4x
MzE0NTAsIDIuMTE5OTA1LCAyLjEwOTgxNiwgMi4xMDA5MjIsIDIuMDkzMDI0LCAyLjA4NTk2MywK
KyAgICAgICAgICAgIDIuMDc5NjE0LCAyLjA3Mzg3MywgMi4wNjg2NTgsIDIuMDYzODk5LCAyLjA1
OTUzOSwgMi4wNTU1MjksIDIuMDUxODMxLCAyLjA0ODQwNywgMi4wNDUyMzAsIDIuMDQyMjcyLAor
ICAgICAgICAgICAgMi4wMzk1MTMsIDIuMDM2OTMzLCAyLjAzNDUxNSwgMi4wMzIyNDUsIDIuMDMw
MTA4LCAyLjAyODA5NCwgMi4wMjYxOTIsIDIuMDI0Mzk0LCAyLjAyMjY5MSwgMi4wMjEwNzUsCisg
ICAgICAgICAgICAyLjAxOTU0MSwgMi4wMTgwODIsIDIuMDE2NjkyLCAyLjAxNTM2OCwgMi4wMTQx
MDMsIDIuMDEyODk2LCAyLjAxMTc0MSwgMi4wMTA2MzUsIDIuMDA5NTc1LCAyLjAwODU1OSwKKwor
ICAgICAgICAgICAgMi4wMDc1ODQsIDIuMDA2NjQ3LCAyLjAwNTc0NiwgMi4wMDQ4NzksIDIuMDA0
MDQ1LCAyLjAwMzI0MSwgMi4wMDI0NjUsIDIuMDAxNzE3LCAyLjAwMDk5NSwgMi4wMDAyOTgsCisg
ICAgICAgICAgICAxLjk5OTYyNCwgMS45OTg5NzIsIDEuOTk4MzQxLCAxLjk5NzczMCwgMS45OTcx
MzgsIDEuOTk2NTY0LCAxLjk5NjAwOCwgMS45OTU0NjksIDEuOTk0OTQ1LCAxLjk5NDQzNywKKyAg
ICAgICAgICAgIDEuOTkzOTQzLCAxLjk5MzQ2NCwgMS45OTI5OTcsIDEuOTkyNTQzLCAxLjk5MjEw
MiwgMS45OTE2NzMsIDEuOTkxMjU0LCAxLjk5MDg0NywgMS45OTA0NTAsIDEuOTkwMDYzLAorICAg
ICAgICAgICAgMS45ODk2ODYsIDEuOTg5MzE5LCAxLjk4ODk2MCwgMS45ODg2MTAsIDEuOTg4MjY4
LCAxLjk4NzkzNCwgMS45ODc2MDgsIDEuOTg3MjkwLCAxLjk4Njk3OSwgMS45ODY2NzUsCisgICAg
ICAgICAgICAxLjk4NjM3NywgMS45ODYwODYsIDEuOTg1ODAyLCAxLjk4NTUyMywgMS45ODUyNTEs
IDEuOTg0OTg0LCAxLjk4NDcyMywgMS45ODQ0NjcsIDEuOTg0MjE3LCAxLjk4Mzk3Ml0sCisgICAg
ICAgIDAuOTk6IFsKKyAgICAgICAgICAgIDMxLjgyMDUxNiwgNi45NjQ1NTcsIDQuNTQwNzAzLCAz
Ljc0Njk0NywgMy4zNjQ5MzAsIDMuMTQyNjY4LCAyLjk5Nzk1MiwgMi44OTY0NTksIDIuODIxNDM4
LCAyLjc2Mzc2OSwKKyAgICAgICAgICAgIDIuNzE4MDc5LCAyLjY4MDk5OCwgMi42NTAzMDksIDIu
NjI0NDk0LCAyLjYwMjQ4MCwgMi41ODM0ODcsIDIuNTY2OTM0LCAyLjU1MjM4MCwgMi41Mzk0ODMs
IDIuNTI3OTc3LAorICAgICAgICAgICAgMi41MTc2NDgsIDIuNTA4MzI1LCAyLjQ5OTg2NywgMi40
OTIxNTksIDIuNDg1MTA3LCAyLjQ3ODYzMCwgMi40NzI2NjAsIDIuNDY3MTQwLCAyLjQ2MjAyMSwg
Mi40NTcyNjIsCisgICAgICAgICAgICAyLjQ1MjgyNCwgMi40NDg2NzgsIDIuNDQ0Nzk0LCAyLjQ0
MTE1MCwgMi40Mzc3MjMsIDIuNDM0NDk0LCAyLjQzMTQ0NywgMi40Mjg1NjgsIDIuNDI1ODQxLCAy
LjQyMzI1NywKKyAgICAgICAgICAgIDIuNDIwODAzLCAyLjQxODQ3MCwgMi40MTYyNTAsIDIuNDE0
MTM0LCAyLjQxMjExNiwgMi40MTAxODgsIDIuNDA4MzQ1LCAyLjQwNjU4MSwgMi40MDQ4OTIsIDIu
NDAzMjcyLAorCisgICAgICAgICAgICAyLjQwMTcxOCwgMi40MDAyMjUsIDIuMzk4NzkwLCAyLjM5
NzQxMCwgMi4zOTYwODEsIDIuMzk0ODAxLCAyLjM5MzU2OCwgMi4zOTIzNzcsIDIuMzkxMjI5LCAy
LjM5MDExOSwKKyAgICAgICAgICAgIDIuMzg5MDQ3LCAyLjM4ODAxMSwgMi4zODcwMDgsIDIuMzg2
MDM3LCAyLjM4NTA5NywgMi4zODQxODYsIDIuMzgzMzAyLCAyLjM4MjQ0NiwgMi4zODE2MTUsIDIu
MzgwODA3LAorICAgICAgICAgICAgMi4zODAwMjQsIDIuMzc5MjYyLCAyLjM3ODUyMiwgMi4zNzc4
MDIsIDIuMzc3MTAyLCAyLjM3NjQyMCwgMi4zNzU3NTcsIDIuMzc1MTExLCAyLjM3NDQ4MiwgMi4z
NzM4NjgsCisgICAgICAgICAgICAyLjM3MzI3MCwgMi4zNzI2ODcsIDIuMzcyMTE5LCAyLjM3MTU2
NCwgMi4zNzEwMjIsIDIuMzcwNDkzLCAyLjM2OTk3NywgMi4zNjk0NzIsIDIuMzY4OTc5LCAyLjM2
ODQ5NywKKyAgICAgICAgICAgIDIuMzY4MDI2LCAyLjM2NzU2NiwgMi4zNjcxMTUsIDIuMzY2Njc0
LCAyLjM2NjI0MywgMi4zNjU4MjEsIDIuMzY1NDA3LCAyLjM2NTAwMiwgMi4zNjQ2MDYsIDIuMzY0
MjE3XQorICAgIH0sCisgICAgCisgICAgY29uZmlkZW5jZUludGVydmFsRGVsdGE6IGZ1bmN0aW9u
KG51bWJlck9mU2FtcGxlcywgc3VtLCBzcXVhcmVTdW0sIGNvbmZpZGVuY2VMZXZlbCkKKyAgICB7
CisgICAgICAgIGlmIChudW1iZXJPZlNhbXBsZXMgPCAyKQorICAgICAgICAgICAgcmV0dXJuIE5h
TjsKKyAgICAKKyAgICAgICAgdmFyIHByb2JhYmlsaXR5ID0gKDEwMCAtIDIgKiAoMTAwIC0gY29u
ZmlkZW5jZUxldmVsKSkgLyAxMDA7CisgICAgICAgIGlmICghKHByb2JhYmlsaXR5IGluIFN0YXRp
c3RpY3MudERpc3RyaWJ1dGlvbkludmVyc2VDREYpKQorICAgICAgICAgICAgdGhyb3cgJ1Vuc3Vw
cG9ydGVkIGNvbmZpZGVuY2UgbGV2ZWwnOworCisgICAgICAgIHZhciBjZGZGb3JQcm9iYWJpbGl0
eSA9IFN0YXRpc3RpY3MudERpc3RyaWJ1dGlvbkludmVyc2VDREZbcHJvYmFiaWxpdHldOworICAg
ICAgICB2YXIgZGVncmVlc09mRnJlZWRvbSA9IE1hdGgubWluKG51bWJlck9mU2FtcGxlcyAtIDEs
IGNkZkZvclByb2JhYmlsaXR5Lmxlbmd0aCk7CisgICAgCisgICAgICAgIHZhciBxdWFudGlsZSA9
IGNkZkZvclByb2JhYmlsaXR5W2RlZ3JlZXNPZkZyZWVkb20gLSAxXTsgLy8gVGhlIGZpcnN0IGVu
dHJ5IGlzIGZvciB0aGUgb25lIGRlZ3JlZSBvZiBmcmVlZG9tLgorICAgICAgICByZXR1cm4gcXVh
bnRpbGUgKiBTdGF0aXN0aWNzLnNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uKG51bWJlck9mU2FtcGxl
cywgc3VtLCBzcXVhcmVTdW0pIC8gTWF0aC5zcXJ0KG51bWJlck9mU2FtcGxlcyk7CisgICAgfQor
fQorCitmdW5jdGlvbiBFeHBlcmltZW50KCkKK3sKKyAgICB0aGlzLl9pbml0KCk7CisgICAgdGhp
cy5fbWF4SGVhcCA9IEFsZ29yaXRobS5jcmVhdGVNYXhIZWFwKEV4cGVyaW1lbnQuZGVmYXVsdHMu
Q09OQ0VSTl9TSVpFKTsKK30KKworRXhwZXJpbWVudC5kZWZhdWx0cyA9Cit7CisgICAgQ09OQ0VS
TjogNSwKKyAgICBDT05GSURFTkNFOiA5NSwKKyAgICBDT05DRVJOX1NJWkU6IDEwMCwKK30KKwor
RXhwZXJpbWVudC5wcm90b3R5cGUgPQoreworICAgIF9pbml0OiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB0aGlzLl9zdW0gPSAwOworICAgICAgICB0aGlzLl9zcXVhcmVTdW0gPSAwOworICAg
ICAgICB0aGlzLl9udW1iZXJPZlNhbXBsZXMgPSAwOworICAgIH0sCisgICAgCisgICAgLy8gQ2Fs
bGVkIGFmdGVyIGEgd2FybS11cCBwZXJpb2QKKyAgICBzdGFydFNhbXBsaW5nOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB2YXIgbWVhbiA9IHRoaXMubWVhbigpOworICAgICAgICB0aGlzLl9p
bml0KCk7CisgICAgICAgIHRoaXMuX21heEhlYXAuaW5pdCgpOworICAgICAgICB0aGlzLnNhbXBs
ZShtZWFuKTsKKyAgICB9LAorICAgIAorICAgIHNhbXBsZTogZnVuY3Rpb24odmFsdWUpCisgICAg
eworICAgICAgICB0aGlzLl9zdW0gKz0gdmFsdWU7CisgICAgICAgIHRoaXMuX3NxdWFyZVN1bSAr
PSB2YWx1ZSAqIHZhbHVlOworICAgICAgICB0aGlzLl9tYXhIZWFwLnB1c2godmFsdWUpOworICAg
ICAgICArK3RoaXMuX251bWJlck9mU2FtcGxlczsKKyAgICB9LAorICAgIAorICAgIG1lYW46IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBTdGF0aXN0aWNzLnNhbXBsZU1lYW4odGhp
cy5fbnVtYmVyT2ZTYW1wbGVzLCB0aGlzLl9zdW0pOworICAgIH0sCisgICAgCisgICAgc3RhbmRh
cmREZXZpYXRpb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBTdGF0aXN0aWNz
LnNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uKHRoaXMuX251bWJlck9mU2FtcGxlcywgdGhpcy5fc3Vt
LCB0aGlzLl9zcXVhcmVTdW0pOworICAgIH0sCisgICAgCisgICAgcGVyY2VudGFnZTogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdmFyIG1lYW4gPSB0aGlzLm1lYW4oKTsKKyAgICAgICAgcmV0
dXJuIG1lYW4gPyB0aGlzLnN0YW5kYXJkRGV2aWF0aW9uKCkgKiAxMDAgLyBtZWFuIDogMDsKKyAg
ICB9LAorICAgIAorICAgIGNvbmZpZGVuY2VJbnRlcnZhbERlbHRhOiBmdW5jdGlvbihjb25maWRl
bmNlTGV2ZWwpCisgICAgeworICAgICAgICByZXR1cm4gU3RhdGlzdGljcy5jb25maWRlbmNlSW50
ZXJ2YWxEZWx0YSh0aGlzLl9udW1iZXJPZlNhbXBsZXMsIHRoaXMuX3N1bSwgdGhpcy5fc3F1YXJl
U3VtLCBjb25maWRlbmNlTGV2ZWwpCisgICAgfSwKKyAgICAKKyAgICBjb25jZXJuOiBmdW5jdGlv
bihwZXJjZW50YWdlKQorICAgIHsKKyAgICAgICAgdmFyIHNpemUgPSBNYXRoLmNlaWwodGhpcy5f
bnVtYmVyT2ZTYW1wbGVzICogcGVyY2VudGFnZSAvIDEwMCk7CisgICAgICAgIHZhciB2YWx1ZXMg
PSB0aGlzLl9tYXhIZWFwLnZhbHVlcyhzaXplKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlcy5sZW5n
dGggPyB2YWx1ZXMucmVkdWNlKGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEgKyBiOyB9KSAvIHZh
bHVlcy5sZW5ndGggOiAwOworICAgIH0sCisgICAgCisgICAgc2NvcmU6IGZ1bmN0aW9uKHBlcmNl
bnRhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gU3RhdGlzdGljcy5nZW9tZXRyaWNNZWFuKFt0
aGlzLm1lYW4oKSwgTWF0aC5tYXgodGhpcy5jb25jZXJuKHBlcmNlbnRhZ2UpLCAxKV0pOworICAg
IH0KK30KKworZnVuY3Rpb24gU2FtcGxlcihjb3VudCkKK3sKKyAgICB0aGlzLmV4cGVyaW1lbnRz
ID0gW107CisgICAgd2hpbGUgKGNvdW50LS0pCisgICAgICAgIHRoaXMuZXhwZXJpbWVudHMucHVz
aChuZXcgRXhwZXJpbWVudCgpKTsKKyAgICB0aGlzLnNhbXBsZXMgPSBbXTsKKyAgICB0aGlzLnNh
bXBsaW5nVGltZU9mZnNldCA9IDA7Cit9CisKK1NhbXBsZXIucHJvdG90eXBlID0KK3sKKyAgICBz
dGFydFNhbXBsaW5nOiBmdW5jdGlvbih0aW1lT2Zmc2V0KQorICAgIHsKKyAgICAgICAgZm9yICh2
YXIgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuZXhwZXJpbWVudHMubGVuZ3RoOyArK2luZGV4KQor
ICAgICAgICAgICAgdGhpcy5leHBlcmltZW50c1tpbmRleF0uc3RhcnRTYW1wbGluZygpOworICAg
ICAgICAgICAgCisgICAgICAgIHRoaXMuc2FtcGxpbmdUaW1lT2Zmc2V0ID0gdGltZU9mZnNldCAv
IDEwMDA7CisgICAgfSwKKyAgICAKKyAgICBzYW1wbGU6IGZ1bmN0aW9uKHRpbWVPZmZzZXQsIHZh
bHVlcykKKyAgICB7CisgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoIDwgdGhpcy5leHBlcmltZW50
cy5sZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAiTm90IGVub3VnaCBzYW1wbGUgcG9pbnRzIjsK
KyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXgg
PCB0aGlzLmV4cGVyaW1lbnRzLmxlbmd0aDsgKytpbmRleCkKKyAgICAgICAgICAgIHRoaXMuZXhw
ZXJpbWVudHNbaW5kZXhdLnNhbXBsZSh2YWx1ZXNbaW5kZXhdKTsKKyAgICAgICAgICAgIAorICAg
ICAgICB0aGlzLnNhbXBsZXMucHVzaCh7IHRpbWVPZmZzZXQ6IHRpbWVPZmZzZXQgLyAxMDAwLCB2
YWx1ZXM6IHZhbHVlcyB9KTsKKyAgICB9Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcnVubmVyL2FuaW1vbWV0ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcnVubmVyL2FuaW1vbWV0ZXIuaHRtbAkocmV2aXNpb24gMCkKKysrIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvYW5pbW9tZXRlci5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9hbmltb21ldGVyLmNz
cyI+CisgICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9s
aWJzL2QzLzMuNS41L2QzLm1pbi5qcyIgZGVmZXI+PC9zY3JpcHQ+ICAKKyAgICA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiIGRlZmVyPjwvc2NyaXB0PiAgCisgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIiBkZWZlcj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3Rlc3RzLmpzIiBkZWZlcj0iIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMiIGRlZmVyPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYW5pbW9tZXRlci5qcyIgZGVmZXI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ncmFwaC5qcyIgZGVmZXI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKyAgICA8bWFpbj4KKyAgICAgICAgPHNlY3Rpb24gaWQ9ImhvbWUiIGNs
YXNzPSJzZWxlY3RlZCI+CisgICAgICAgICAgICA8cD4KKyAgICAgICAgICAgICAgICBBbmltb21l
dGVyIGlzIGEgYnJvd3NlciBiZW5jaG1hcmsgdGhhdCBtZWFzdXJlcyB0aGUgY29tcGxleGl0eSBv
ZiBhbiBhbmltYXRpb24gZm9yCisgICAgICAgICAgICAgICAgd2hpY2ggYSBicm93c2VyIGNhbiBh
Y2hpZXZlIDUwIEZQUyAoZnJhbWUgcGVyIHNlY29uZCkuIEl0IHVzZXMgYWRhcHRpdmUgYW5pbWF0
aW9ucworICAgICAgICAgICAgICAgIHRvIHR1bmUgdGhlaXIgY29tcGxleGl0aWVzIHRvIHN0YXkg
Y2xvc2UgdG8gNTAgRlBTLgorICAgICAgICAgICAgPC9wPgorICAgICAgICAgICAgPGRpdiBjbGFz
cz0ib3B0aW9ucyI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sdW1uIj4KKyAgICAg
ICAgICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD0iaHRtbC1zdWl0ZSIgdHlwZT0iY2hlY2ti
b3giIGNoZWNrZWQ+IEhUTUwgZWxlbWVudHMgc3VpdGU8L2xhYmVsPjxicj4KKyAgICAgICAgICAg
ICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD0iY2FudmFzLXN1aXRlIiB0eXBlPSJjaGVja2JveCIg
Y2hlY2tlZD4gQ2FudmFzIGRyYXdpbmdzIHN1aXRlPC9sYWJlbD48YnI+CisgICAgICAgICAgICAg
ICAgICAgIDxsYWJlbD48aW5wdXQgaWQ9InN2Zy1zdWl0ZSIgdHlwZT0iY2hlY2tib3giIGNoZWNr
ZWQ+IFNWRyBlbGVtZW50cyBzdWl0ZTwvbGFiZWw+PGJyPgorICAgICAgICAgICAgICAgICAgICA8
bGFiZWw+PGlucHV0IGlkPSJ0ZW1wbGF0ZS1zdWl0ZSIgdHlwZT0iY2hlY2tib3giPiBUZW1wbGF0
ZSBzdWl0ZTwvbGFiZWw+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAg
PGRpdj4KKyAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlRlc3QgaW50ZXJ2YWw6IDxpbnB1dCBp
ZD0idGVzdC1pbnRlcnZhbCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMzAiPiBzZWNvbmRzPC9sYWJl
bD48YnI+CisgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5GcmFtZSByYXRlOiA8aW5wdXQgaWQ9
ImZyYW1lLXJhdGUiIHR5cGU9Im51bWJlciIgdmFsdWU9IjUwIj4gZnBzPC9sYWJlbD48YnI+Cisg
ICAgICAgICAgICAgICAgICAgIDxsYWJlbD48aW5wdXQgaWQ9ImVzdGltYXRlZC1mcmFtZS1yYXRl
IiB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD4gRXN0aW1hdGVkIEZyYW1lIFJhdGU8L2xhYmVsPjxi
cj4KKyAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD0iZml4LXRlc3QtY29tcGxl
eGl0eSIgdHlwZT0iY2hlY2tib3giPiBGaXggdGVzdCBjb21wbGV4aXR5IGFmdGVyIHdhcm11cDwv
bGFiZWw+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbnMiPgorICAgICAgICAgICAgICAgIDxidXR0b24gb25j
bGljaz0ic3RhcnRUZXN0KCkiPlN0YXJ0IFRlc3Q8L2J1dHRvbj4KKyAgICAgICAgICAgIDwvZGl2
PgorICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxzZWN0aW9uIGlkPSJydW5uaW5nIj4KKyAg
ICAgICAgICAgIDxkaXYgaWQ9InRlc3RDb250YWluZXIiPjwvZGl2PgorICAgICAgICAgICAgPGRp
diBpZD0icHJvZ3Jlc3MiPgorICAgICAgICAgICAgICAgIDxkaXYgaWQ9InByb2dyZXNzLWNvbXBs
ZXRlZCI+PC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgaWQ9InJl
Y29yZCI+CisgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJyZWNvcmQtdGFibGUiPjwvdGFi
bGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8c2Vj
dGlvbiBpZD0icmVzdWx0cyI+CisgICAgICAgICAgICA8aDE+UmVzdWx0czwvaDE+CisgICAgICAg
ICAgICA8dGFibGUgY2xhc3M9InJlc3VsdHMtdGFibGUiPjwvdGFibGU+CisgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJidXR0b25zIj4KKyAgICAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InN0
YXJ0VGVzdCgpIj5UZXN0IEFnYWluPC9idXR0b24+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAg
ICAgPC9zZWN0aW9uPiAgCisgICAgICAgIDxzZWN0aW9uIGlkPSJncmFwaCI+CisgICAgICAgICAg
ICA8aDE+R3JhcGg8L2gxPgorICAgICAgICAgICAgPGRpdiBpZD0iZ3JhcGhDb250YWluZXIiPjwv
ZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9ucyI+CisgICAgICAgICAgICAgICAg
PGJ1dHRvbiBvbmNsaWNrPSJzaG93UmVzdWx0cygpIj5SZXN1bHRzPC9idXR0b24+CisgICAgICAg
ICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJzdGFydFRlc3QoKSI+VGVzdCBBZ2FpbjwvYnV0dG9u
PiAgICAgICAgCisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9zZWN0aW9uPiAgCisgICAg
PC9tYWluPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5jc3MKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5jc3MJKHJl
dmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNl
cy9hbmltb21ldGVyLmNzcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIyMSBAQAorYm9keSB7
CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDk2LCA5NiwgOTYpOworICAgIGNvbG9yOiByZ2Io
MjM1LCAyMzUsIDIzNSk7CisgICAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZl
dGljYSwgVmVyZGFuYSwgc2Fucy1zZXJpZjsKK30KKworbWFpbiB7CisgICAgZGlzcGxheTogYmxv
Y2s7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHdpZHRoOiA4MDBweDsKKyAgICBoZWln
aHQ6IDYwMHB4OworICAgIHRvcDogNTAlOworICAgIGxlZnQ6IDUwJTsKKyAgICBtYXJnaW4tdG9w
OiAtMzIxcHg7CisgICAgbWFyZ2luLWxlZnQ6IC00MjFweDsKKyAgICBwYWRkaW5nOiAxNXB4Owor
ICAgIGJvcmRlcjogNnB4IHNvbGlkIHJnYigyMzUsIDIzNSwgMjM1KTsKKyAgICBib3JkZXItcmFk
aXVzOiAyMHB4OworfQorCitpZnJhbWUgeworICAgIHdpZHRoOiA4MDBweDsKKyAgICBoZWlnaHQ6
IDYwMHB4OworICAgIGJvcmRlcjogMHB4IG5vbmU7CisgICAgcG9zaXRpb246IGFic29sdXRlOwor
fQorCitsYWJlbCwgcCB7CisgICAgZm9udC1zaXplOiAxNnB4OworICAgIGxpbmUtaGVpZ2h0OiAy
MXB4OworfQorCitzZWN0aW9uIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCitzZWN0aW9uID4g
cCB7CisgICAgbWFyZ2luOiAxMHB4IDIwcHg7Cit9CisKK3NlY3Rpb24jaG9tZSA+IHAgeworICAg
IG1hcmdpbjogMCBhdXRvOworICAgIHdpZHRoOiA3MCU7CisgICAgdGV4dC1hbGlnbjogY2VudGVy
OworfQorCitzZWN0aW9uI2hvbWUgPiBwOmZpcnN0LWNoaWxkIHsKKyAgICBtYXJnaW4tdG9wOiAx
NjBweDsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKK3NlY3Rpb24uc2VsZWN0ZWQgewor
ICAgIGRpc3BsYXk6IGJsb2NrOworfQorCisjdGVzdENvbnRhaW5lciB7CisgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgIHRvcDogMTVweDsKKyAgICBsZWZ0OiAxNXB4OworICAgIHdpZHRoOiA4
MDBweDsKKyAgICBoZWlnaHQ6IDYwMHB4OworfQorCitzZWN0aW9uI3J1bm5pbmcgPiAjcHJvZ3Jl
c3MgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBib3R0b206IC02cHg7CisgICAgbGVm
dDogNjBweDsKKyAgICByaWdodDogNjBweDsKKyAgICBoZWlnaHQ6IDZweDsKKyAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiByZ2IoMTI4LCAxMjgsIDEyOCk7CisgICAgYm9yZGVyLWxlZnQ6IDZweCBzb2xp
ZCByZ2IoNDYsIDUxLCA1NSk7CisgICAgYm9yZGVyLXJpZ2h0OiA2cHggc29saWQgcmdiKDQ2LCA1
MSwgNTUpOworfQorCitzZWN0aW9uI3J1bm5pbmcgI3Byb2dyZXNzLWNvbXBsZXRlZCB7CisgICAg
cG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAgIGhlaWdo
dDogNnB4OworICAgIHdpZHRoOiAwOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzUsIDIz
NSwgMjM1KTsKK30KKworc2VjdGlvbiNydW5uaW5nID4gI3JlY29yZCB7CisgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgIGJvdHRvbTogLTEzMHB4OworICAgIGxlZnQ6IDBweDsKKyAgICByaWdo
dDogMHB4OworICAgIGhlaWdodDogNzVweDsKKyAgICBjb2xvcjogcmdiKDEyOCwgMTI4LCAxMjgp
OworICAgIHBhZGRpbmc6IDE1cHg7CisgICAgYm9yZGVyOiA2cHggc29saWQgcmdiKDIzNSwgMjM1
LCAyMzUpOworICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7Cit9CisKK3NlY3Rpb24jcnVubmluZyA+
ICNyZWNvcmQgPiB0YWJsZSwKK3NlY3Rpb24jcmVzdWx0cyA+IHRhYmxlIHsKKyAgICB3aWR0aDog
MTAwJTsKK30KKworc2VjdGlvbiNydW5uaW5nID4gI3JlY29yZCA+IHRhYmxlIHRkLCB0aCwKK3Nl
Y3Rpb24jcmVzdWx0cyA+IHRhYmxlIHRkLCB0aCB7CisgICAgZm9udC1zaXplOiAxMXB4OworICAg
IGJvcmRlcjogMXB4IHNvbGlkICM5OGJmMjE7CisgICAgcGFkZGluZzogM3B4IDRweCAycHggNHB4
OworfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorc2VjdGlv
biNydW5uaW5nID4gI3JlY29yZCA+IHRhYmxlIHRyLmFsdCwgdGQKK3NlY3Rpb24jcmVzdWx0cyA+
IHRhYmxlIHRyLmFsdCwgdGQgeworICAgIGNvbG9yOiAjMDAwMDAwOworICAgIGJhY2tncm91bmQt
Y29sb3I6ICNFQUYyRDM7Cit9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKK3NlY3Rpb24jcnVubmluZyA+ICNyZWNvcmQgPiB0YWJsZSB0aCwKK3NlY3Rpb24j
cmVzdWx0cyA+IHRhYmxlIHRoIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQTdDOTQyOyAKKyAg
ICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKKy5vcHRpb25zIHsKKyAgICBtYXJnaW46MCBhdXRv
OyAgICAKKyAgICBtYXJnaW4tdG9wOiAzMHB4OworICAgIHdpZHRoOiA1MDBweDsKKyAgICBhbGln
bjogY2VudGVyOworfQorCisuY29sdW1uIHsKKyAgICB3aWR0aDogNDUlOworICAgIGZsb2F0Omxl
ZnQ7CisgICAgaGVpZ2h0OiAxMjBweDsKKyAgICBwYWRkaW5nOjVweDsKK30KKworaW5wdXRbdHlw
ZT0ibnVtYmVyIl0geworICAgd2lkdGg6NTBweDsKK30KKworLmJ1dHRvbnMgeworICAgIG1hcmdp
bi10b3A6IDEwcHg7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIGNsZWFyOiBib3RoOwor
fQorCitidXR0b24geworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKKyAgICBib3JkZXI6
IDNweCBzb2xpZCByZ2IoMjM1LCAyMzUsIDIzNSk7CisgICAgYm9yZGVyLXJhZGl1czogMTBweDsK
KyAgICBtaW4td2lkdGg6IDIwMHB4OworICAgIHBhZGRpbmc6IDVweCAyMHB4OworICAgIG1hcmdp
bjogMCA0MHB4OworICAgIGZvbnQtc2l6ZTogMjVweDsKKyAgICBjb2xvcjogcmdiKDIzNSwgMjM1
LCAyMzUpOworICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworCisgICAgLXdlYmtp
dC11c2VyLXNlbGVjdDogbm9uZTsKK30KKworYnV0dG9uOmFjdGl2ZSB7CisgICAgYmFja2dyb3Vu
ZC1jb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOworICAgIGNvbG9yOiByZ2IoNDYsIDUxLCA1NSk7
CisgICAgYm9yZGVyLWNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSkgIWltcG9ydGFudDsKK30KKwor
YnV0dG9uOmZvY3VzIHsKKyAgICBvdXRsaW5lOiBub25lOworICAgIGJvcmRlci1jb2xvcjogcmdi
KDIzMiwgNzksIDc5KTsKK30KKworLnNtYWxsLWJ1dHRvbiB7CisgICAgLXdlYmtpdC1hcHBlYXJh
bmNlOiBub25lOworICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYig5NiwgOTYsIDk2KTsKKyAgICBi
b3JkZXItcmFkaXVzOiAycHg7CisgICAgcGFkZGluZzogMXB4IDRweDsKKyAgICBtYXJnaW46IDAg
NHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICAgIGN1cnNvcjogcG9p
bnRlcjsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDog
bm9uZTsKK30KKworI2dyYXBoQ29udGFpbmVyIHsKKyAgZm9udDogMTBweCBzYW5zLXNlcmlmOwor
ICBjb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOyAgCit9CisKKy5heGlzIHBhdGgsCisuYXhpcyBs
aW5lIHsKKyAgZmlsbDogbm9uZTsKKyAgc3Ryb2tlOiByZ2IoMjM1LCAyMzUsIDIzNSk7CisgIHNo
YXBlLXJlbmRlcmluZzogY3Jpc3BFZGdlczsKK30KKworLmxlZnQtc2FtcGxlcyB7CisgIGZpbGw6
IG5vbmU7CisgIHN0cm9rZTogc3RlZWxibHVlOworICBzdHJva2Utd2lkdGg6IDEuNXB4OworfQor
CisucmlnaHQtc2FtcGxlcyB7CisgICAgZmlsbDogbm9uZTsKKyAgICBzdHJva2U6IHJlZDsKKyAg
ICBzdHJva2Utd2lkdGg6IDEuNXB4OworfQorCisuc21hcGxlLXRpbWUgeworICAgIGZpbGw6IG5v
bmU7CisgICAgc3Ryb2tlOiBncmVlbjsKKyAgICBzdHJva2Utd2lkdGg6IDEuNXB4OworfQorCisu
bGVmdC1tZWFuIHsKKyAgICBmaWxsOiBub25lOworICAgIHN0cm9rZTogeWVsbG93OworICAgIHN0
cm9rZS13aWR0aDogMS41cHg7Cit9CisKKy5yaWdodC1tZWFuIHsKKyAgICBmaWxsOiBub25lOwor
ICAgIHN0cm9rZTogbWFnZW50YTsKKyAgICBzdHJva2Utd2lkdGg6IDEuNXB4OworfQpJbmRleDog
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291
cmNlcy9hbmltb21ldGVyLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEyNiBAQAord2luZG93LmJlbmNobWFya1J1bm5lckNsaWVudCA9Cit7CisgICAgaXRl
cmF0aW9uQ291bnQ6IDEsCisgICAgdGVzdHNDb3VudDogbnVsbCwKKyAgICBwcm9ncmVzc0Jhcjog
bnVsbCwKKyAgICByZWNvcmRUYWJsZTogbnVsbCwKKyAgICBvcHRpb25zOiB7IHRlc3RJbnRlcnZh
bDogMzAwMDAsIGZyYW1lUmF0ZTogNTAsIGVzdGltYXRlZEZyYW1lUmF0ZTogdHJ1ZSwgZml4VGVz
dENvbXBsZXhpdHkgOiBmYWxzZSB9LAorICAgIHNjb3JlOiAwLAorICAgIF9pdGVyYXRpb25zU2Ft
cGxlcnM6IFtdLAorICAgIF9yZXN1bHRzVGFibGU6IG51bGwsCisgICAgX2lzQ2hyb21lOiAvQ2hy
b21lLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmIC9Hb29nbGUgSW5jLy50ZXN0KG5hdmln
YXRvci52ZW5kb3IpLAorICAgIF9pc1NhZmFyaTogL1NhZmFyaS8udGVzdChuYXZpZ2F0b3IudXNl
ckFnZW50KSAmJiAvQXBwbGUgQ29tcHV0ZXIvLnRlc3QobmF2aWdhdG9yLnZlbmRvciksCisgICAg
CisgICAgd2lsbEFkZFRlc3RGcmFtZTogZnVuY3Rpb24gKGZyYW1lKQorICAgIHsKKyAgICAgICAg
dmFyIG1haW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJtYWluIik7CisgICAgICAgIHZhciBz
dHlsZSA9IGdldENvbXB1dGVkU3R5bGUobWFpbik7CisgICAgICAgIGZyYW1lLnN0eWxlLmxlZnQg
PSBtYWluLm9mZnNldExlZnQgKyBwYXJzZUludChzdHlsZS5ib3JkZXJMZWZ0V2lkdGgpICsgcGFy
c2VJbnQoc3R5bGUucGFkZGluZ0xlZnQpICsgInB4IjsKKyAgICAgICAgZnJhbWUuc3R5bGUudG9w
ID0gbWFpbi5vZmZzZXRUb3AgKyBwYXJzZUludChzdHlsZS5ib3JkZXJUb3BXaWR0aCkgKyBwYXJz
ZUludChzdHlsZS5wYWRkaW5nVG9wKSArICJweCI7CisgICAgfSwKKyAgICAKKyAgICBkaWRSdW5U
ZXN0OiBmdW5jdGlvbiAoKQorICAgIHsKKyAgICAgICAgdGhpcy5wcm9ncmVzc0Jhci5pbmNSYW5n
ZSgpOworICAgIH0sCisgICAgCisgICAgd2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb246IGZ1bmN0aW9u
ICgpCisgICAgeworICAgICAgICB0aGlzLl9pdGVyYXRpb25zU2FtcGxlcnMgPSBbXTsKKyAgICAg
ICAgdGhpcy5fcmVzdWx0c1RhYmxlID0gbmV3IFJlY29yZFRhYmxlKGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3JBbGwoIi5yZXN1bHRzLXRhYmxlIilbMF0pOworICAgICAgICAKKyAgICAgICAgdGhpcy5w
cm9ncmVzc0JhciA9IG5ldyBQcm9ncmVzc0Jhcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJv
Z3Jlc3MtY29tcGxldGVkIiksIHRoaXMudGVzdHNDb3VudCk7CisgICAgICAgIHRoaXMucmVjb3Jk
VGFibGUgPSBuZXcgUmVjb3JkVGFibGUoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnJlY29y
ZC10YWJsZSIpWzBdKTsKKyAgICB9LAorICAgIAorICAgIGRpZFJ1blN1aXRlczogZnVuY3Rpb24g
KHN1aXRlc1NhbXBsZXJzKQorICAgIHsKKyAgICAgICAgdGhpcy5faXRlcmF0aW9uc1NhbXBsZXJz
LnB1c2goc3VpdGVzU2FtcGxlcnMpOworICAgIH0sCisgICAgCisgICAgZGlkRmluaXNoTGFzdEl0
ZXJhdGlvbjogZnVuY3Rpb24gKCkKKyAgICB7CisgICAgICAgIHRoaXMuc2NvcmUgPSB0aGlzLl9y
ZXN1bHRzVGFibGUuc2hvd0l0ZXJhdGlvbnModGhpcy5faXRlcmF0aW9uc1NhbXBsZXJzLCAiIik7
CisgICAgICAgIHNob3dSZXN1bHRzKCk7CisgICAgfSwKKyAgICAKKyAgICBicm93c2VyOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5faXNDaHJvbWUpCisgICAgICAgICAgICBy
ZXR1cm4gIkNocm9tZSI7CisgICAgICAgIGlmICh0aGlzLl9pc1NhZmFyaSkKKyAgICAgICAgICAg
IHJldHVybiAiU2FmYXJpIjsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KK30KKworZnVuY3Rp
b24gc2hvd1NlY3Rpb24oc2VjdGlvbklkZW50aWZpZXIsIHB1c2hTdGF0ZSkKK3sKKyAgICB2YXIg
Y3VycmVudFNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2VjdGlvbi5z
ZWxlY3RlZCIpOworICAgIGNvbnNvbGUuYXNzZXJ0KGN1cnJlbnRTZWN0aW9uRWxlbWVudCk7CisK
KyAgICB2YXIgbmV3U2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWN0
aW9uSWRlbnRpZmllcik7CisgICAgY29uc29sZS5hc3NlcnQobmV3U2VjdGlvbkVsZW1lbnQpOwor
CisgICAgY3VycmVudFNlY3Rpb25FbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInNlbGVjdGVkIik7
CisgICAgbmV3U2VjdGlvbkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQiKTsKKworICAg
IGlmIChwdXNoU3RhdGUpCisgICAgICAgIGhpc3RvcnkucHVzaFN0YXRlKHtzZWN0aW9uOiBzZWN0
aW9uSWRlbnRpZmllcn0sIGRvY3VtZW50LnRpdGxlKTsKK30KKworZnVuY3Rpb24gc3RhcnRCZW5j
aG1hcmsoKQoreworICAgIHZhciBjaGVja2JveGVzID0gWyAKKyAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImh0bWwtc3VpdGUiKSwgCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjYW52YXMtc3VpdGUiKSwgCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
dmctc3VpdGUiKSwKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlbXBsYXRlLXN1
aXRlIiksCisgICAgXTsKKyAgICB2YXIgZW5hYmxlZFN1aXRlcyA9IFN1aXRlcy5maWx0ZXIoZnVu
Y3Rpb24gKHN1aXRlLCBpbmRleCkgeyByZXR1cm4gIXN1aXRlLmRpc2FibGVkICYmIGNoZWNrYm94
ZXNbaW5kZXhdLmNoZWNrZWQ7IH0pOworICAgIHZhciB0ZXN0c0NvdW50ID0gZW5hYmxlZFN1aXRl
cy5yZWR1Y2UoZnVuY3Rpb24gKHRlc3RzQ291bnQsIHN1aXRlKSB7IHJldHVybiB0ZXN0c0NvdW50
ICsgc3VpdGUudGVzdHMubGVuZ3RoOyB9LCAwKTsKKyAgICBiZW5jaG1hcmtSdW5uZXJDbGllbnQu
dGVzdHNDb3VudCA9IGJlbmNobWFya1J1bm5lckNsaWVudC5pdGVyYXRpb25Db3VudCAqIHRlc3Rz
Q291bnQ7CisgICAgYmVuY2htYXJrUnVubmVyQ2xpZW50Lm9wdGlvbnNbInRlc3RJbnRlcnZhbCJd
ID0gcGFyc2VJbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QtaW50ZXJ2YWwiKS52YWx1
ZSkgKiAxMDAwOworICAgIGJlbmNobWFya1J1bm5lckNsaWVudC5vcHRpb25zWyJmcmFtZVJhdGUi
XSA9IHBhcnNlSW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZS1yYXRlIikudmFsdWUp
OworICAgIGJlbmNobWFya1J1bm5lckNsaWVudC5vcHRpb25zWyJlc3RpbWF0ZWRGcmFtZVJhdGUi
XSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlc3RpbWF0ZWQtZnJhbWUtcmF0ZSIpLmNoZWNr
ZWQ7ICAgIAorICAgIGJlbmNobWFya1J1bm5lckNsaWVudC5vcHRpb25zWyJmaXhUZXN0Q29tcGxl
eGl0eSJdID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpeC10ZXN0LWNvbXBsZXhpdHkiKS5j
aGVja2VkOworICAgIHZhciBydW5uZXIgPSBuZXcgQmVuY2htYXJrUnVubmVyKGVuYWJsZWRTdWl0
ZXMsIGJlbmNobWFya1J1bm5lckNsaWVudCk7CisgICAgcnVubmVyLnJ1bk11bHRpcGxlSXRlcmF0
aW9ucyhiZW5jaG1hcmtSdW5uZXJDbGllbnQuaXRlcmF0aW9uQ291bnQpOworfQorCitmdW5jdGlv
biBzdGFydFRlc3QoKQoreworICAgIHNob3dTZWN0aW9uKCJydW5uaW5nIik7CisgICAgc3RhcnRC
ZW5jaG1hcmsoKTsKK30KKworZnVuY3Rpb24gc2hvd1Jlc3VsdHMoc2NvcmUpCit7CisgICAgdmFy
IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcmVzdWx0cyA+IGgxIik7CisgICAg
ZWxlbWVudC50ZXh0Q29udGVudCA9ICJSZXN1bHRzOiIKKyAgICAKKyAgICB2YXIgYnJvd3NlciA9
IGJlbmNobWFya1J1bm5lckNsaWVudC5icm93c2VyKCk7ICAgIAorICAgIGlmIChicm93c2VyLmxl
bmd0aCkKKyAgICAgICAgZWxlbWVudC50ZXh0Q29udGVudCArPSAiIFticm93c2VyID0gIiArIGJy
b3dzZXIgKyAiXSI7CisKKyAgICB2YXIgc2NvcmUgPSBiZW5jaG1hcmtSdW5uZXJDbGllbnQuc2Nv
cmUudG9GaXhlZCgyKTsKKyAgICBlbGVtZW50LnRleHRDb250ZW50ICs9ICIgW1Njb3JlID0gIiAr
IHNjb3JlICsgIl0iOworICAgICAgICAKKyAgICBzaG93U2VjdGlvbigicmVzdWx0cyIsIHRydWUp
OworfQorCitmdW5jdGlvbiBzaG93R3JhcGgodGVzdE5hbWUsIGF4ZXMsIHNhbXBsZXMsIHNhbXBs
aW5nVGltZU9mZnNldCkKK3sKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoIiNncmFwaCA+IGgxIik7CisgICAgZWxlbWVudC50ZXh0Q29udGVudCA9ICJHcmFwaDoiCisK
KyAgICB2YXIgYnJvd3NlciA9IGJlbmNobWFya1J1bm5lckNsaWVudC5icm93c2VyKCk7ICAgIAor
ICAgIGlmIChicm93c2VyLmxlbmd0aCkKKyAgICAgICAgZWxlbWVudC50ZXh0Q29udGVudCArPSAi
IFticm93c2VyID0gIiArIGJyb3dzZXIgKyAiXSI7CisKKyAgICBpZiAodGVzdE5hbWUubGVuZ3Ro
KQorICAgICAgICBlbGVtZW50LnRleHRDb250ZW50ICs9ICIgW3Rlc3QgPSAiICsgdGVzdE5hbWUg
KyAiXSI7CisgICAgICAgICAgICAKKyAgICBncmFwaCgiI2dyYXBoQ29udGFpbmVyIiwgbmV3IFBv
aW50KDcwMCwgNDAwKSwgbmV3IEluc2V0cygyMCwgNTAsIDIwLCA1MCksIGF4ZXMsIHNhbXBsZXMs
IHNhbXBsaW5nVGltZU9mZnNldCk7CisgICAgc2hvd1NlY3Rpb24oImdyYXBoIiwgdHJ1ZSk7ICAg
IAorfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMv
YmVuY2htYXJrLXJ1bm5lci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcnVubmVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzCShyZXZpc2lvbiAwKQor
KysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYmVuY2htYXJr
LXJ1bm5lci5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5OCBAQAorZnVuY3Rpb24gQmVu
Y2htYXJrUnVubmVyU3RhdGUoc3VpdGVzKQoreworICAgIHRoaXMuX3N1aXRlcyA9IHN1aXRlczsK
KyAgICB0aGlzLl9zdWl0ZUluZGV4ID0gLTE7CisgICAgdGhpcy5fdGVzdEluZGV4ID0gMDsKKyAg
ICB0aGlzLm5leHQoKTsKK30KKworQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmN1cnJl
bnRTdWl0ZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gdGhpcy5fc3VpdGVzW3RoaXMuX3N1
aXRlSW5kZXhdOworfQorCitCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUuY3VycmVudFRl
c3QgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIHN1aXRlID0gdGhpcy5jdXJyZW50U3VpdGUoKTsK
KyAgICByZXR1cm4gc3VpdGUgPyBzdWl0ZS50ZXN0c1t0aGlzLl90ZXN0SW5kZXhdIDogbnVsbDsK
K30KKworQmVuY2htYXJrUnVubmVyU3RhdGUucHJvdG90eXBlLmlzRmlyc3RUZXN0ID0gZnVuY3Rp
b24oKQoreworICAgIHJldHVybiAhdGhpcy5fdGVzdEluZGV4OworfQorCitCZW5jaG1hcmtSdW5u
ZXJTdGF0ZS5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl90ZXN0SW5k
ZXgrKzsKKworICAgIHZhciBzdWl0ZSA9IHRoaXMuX3N1aXRlc1t0aGlzLl9zdWl0ZUluZGV4XTsK
KyAgICBpZiAoc3VpdGUgJiYgdGhpcy5fdGVzdEluZGV4IDwgc3VpdGUudGVzdHMubGVuZ3RoKQor
ICAgICAgICByZXR1cm4gdGhpczsKKworICAgIHRoaXMuX3Rlc3RJbmRleCA9IDA7CisgICAgZG8g
eworICAgICAgICB0aGlzLl9zdWl0ZUluZGV4Kys7CisgICAgfSB3aGlsZSAodGhpcy5fc3VpdGVJ
bmRleCA8IHRoaXMuX3N1aXRlcy5sZW5ndGggJiYgdGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5k
ZXhdLmRpc2FibGVkKTsKKworICAgIHJldHVybiB0aGlzOworfQorCitCZW5jaG1hcmtSdW5uZXJT
dGF0ZS5wcm90b3R5cGUucHJlcGFyZUN1cnJlbnRUZXN0ID0gZnVuY3Rpb24ocnVubmVyLCBmcmFt
ZSkKK3sKKyAgICB2YXIgc3VpdGUgPSB0aGlzLmN1cnJlbnRTdWl0ZSgpOworICAgIHZhciB0ZXN0
ID0gdGhpcy5jdXJyZW50VGVzdCgpOworICAgIHZhciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21p
c2U7CisgICAgZnJhbWUub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHN1aXRlLnByZXBh
cmUocnVubmVyLCBmcmFtZS5jb250ZW50V2luZG93LCBmcmFtZS5jb250ZW50RG9jdW1lbnQpLnRo
ZW4oZnVuY3Rpb24ocmVzdWx0KSB7IHByb21pc2UucmVzb2x2ZShyZXN1bHQpOyB9KTsKKyAgICB9
CisgICAgZnJhbWUuc3JjID0gdGVzdC51cmw7CisgICAgcmV0dXJuIHByb21pc2U7Cit9CisKK2Z1
bmN0aW9uIEJlbmNobWFya1J1bm5lcihzdWl0ZXMsIGNsaWVudCkKK3sKKyAgICB0aGlzLl9zdWl0
ZXMgPSBzdWl0ZXM7CisgICAgdGhpcy5fY2xpZW50ID0gY2xpZW50OworfQorCitCZW5jaG1hcmtS
dW5uZXIucHJvdG90eXBlLndhaXRGb3JFbGVtZW50ID0gZnVuY3Rpb24oc2VsZWN0b3IpCit7Cisg
ICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICB2YXIgY29udGVudERvY3Vt
ZW50ID0gdGhpcy5fZnJhbWUuY29udGVudERvY3VtZW50OworCisgICAgZnVuY3Rpb24gcmVzb2x2
ZUlmUmVhZHkoKSB7CisgICAgICAgIHZhciBlbGVtZW50ID0gY29udGVudERvY3VtZW50LnF1ZXJ5
U2VsZWN0b3Ioc2VsZWN0b3IpOworICAgICAgICBpZiAoZWxlbWVudCkKKyAgICAgICAgICAgIHJl
dHVybiBwcm9taXNlLnJlc29sdmUoZWxlbWVudCk7CisgICAgICAgIHNldFRpbWVvdXQocmVzb2x2
ZUlmUmVhZHksIDUwKTsKKyAgICB9CisKKyAgICByZXNvbHZlSWZSZWFkeSgpOworICAgIHJldHVy
biBwcm9taXNlOworfQorCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9hcHBlbmRGcmFtZSA9
IGZ1bmN0aW9uKHNyYykKK3sKKyAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpZnJhbWUiKTsKKyAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoInNjcm9sbGluZyIsICJubyIpOwor
CisgICAgdmFyIG1hcmdpbkxlZnQgPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50
LmJvZHkpLm1hcmdpbkxlZnQpOworICAgIHZhciBtYXJnaW5Ub3AgPSBwYXJzZUludChnZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLm1hcmdpblRvcCk7CisgICAgaWYgKHdpbmRvdy5pbm5l
cldpZHRoID4gODAwICsgbWFyZ2luTGVmdCAmJiB3aW5kb3cuaW5uZXJIZWlnaHQgPiA2MDAgKyBt
YXJnaW5Ub3ApIHsKKyAgICAgICAgZnJhbWUuc3R5bGUubGVmdCA9IG1hcmdpbkxlZnQgKyAicHgi
OworICAgICAgICBmcmFtZS5zdHlsZS50b3AgPSBtYXJnaW5Ub3AgKyAicHgiOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGZyYW1lLnN0eWxlLmxlZnQgPSAiMHB4IjsKKyAgICAgICAgZnJhbWUuc3R5
bGUudG9wID0gIjBweCI7CisgICAgfQorCisgICAgaWYgKHRoaXMuX2NsaWVudCAmJiB0aGlzLl9j
bGllbnQud2lsbEFkZFRlc3RGcmFtZSkKKyAgICAgICAgdGhpcy5fY2xpZW50LndpbGxBZGRUZXN0
RnJhbWUoZnJhbWUpOworCisgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZnJhbWUsIGRv
Y3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisgICAgdGhpcy5fZnJhbWUgPSBmcmFtZTsKKyAgICBy
ZXR1cm4gZnJhbWU7Cit9CisKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3JlbW92ZUZyYW1l
ID0gZnVuY3Rpb24oKQoreworICAgIGlmICh0aGlzLl9mcmFtZSkgeworICAgICAgICB0aGlzLl9m
cmFtZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX2ZyYW1lKTsKKyAgICAgICAgdGhpcy5f
ZnJhbWUgPSBudWxsOworICAgIH0KK30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcnVu
VGVzdEFuZFJlY29yZFJlc3VsdHMgPSBmdW5jdGlvbihzdGF0ZSkKK3sKKyAgICB2YXIgcHJvbWlz
ZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgIHZhciBzdWl0ZSA9IHN0YXRlLmN1cnJlbnRTdWl0
ZSgpOworICAgIHZhciB0ZXN0ID0gc3RhdGUuY3VycmVudFRlc3QoKTsKKyAgICAKKyAgICBpZiAo
dGhpcy5fY2xpZW50ICYmIHRoaXMuX2NsaWVudC53aWxsUnVuVGVzdFRlc3QpCisgICAgICAgIHRo
aXMuX2NsaWVudC53aWxsUnVuVGVzdChzdWl0ZSwgdGVzdCk7CisKKyAgICB2YXIgY29udGVudFdp
bmRvdyA9IHRoaXMuX2ZyYW1lLmNvbnRlbnRXaW5kb3c7CisgICAgdmFyIHNlbGYgPSB0aGlzOwor
CisgICAgc3VpdGUucnVuKGNvbnRlbnRXaW5kb3csIHRlc3QsIHRoaXMuX2NsaWVudC5vcHRpb25z
LCB0aGlzLl9jbGllbnQucmVjb3JkVGFibGUsIHRoaXMuX2NsaWVudC5wcm9ncmVzc0JhcikudGhl
bihmdW5jdGlvbihzYW1wbGVyKSB7CisgICAgICAgIHZhciBzYW1wbGVycyA9IHNlbGYuX3N1aXRl
c1NhbXBsZXJzW3N1aXRlLm5hbWVdIHx8IFtdOworICAgICAgICAKKyAgICAgICAgc2FtcGxlcnNb
dGVzdC5uYW1lXSA9IHNhbXBsZXI7CisgICAgICAgIHNlbGYuX3N1aXRlc1NhbXBsZXJzW3N1aXRl
Lm5hbWVdID0gc2FtcGxlcnM7CisKKyAgICAgICAgaWYgKHNlbGYuX2NsaWVudCAmJiBzZWxmLl9j
bGllbnQuZGlkUnVuVGVzdCkKKyAgICAgICAgICAgIHNlbGYuX2NsaWVudC5kaWRSdW5UZXN0KHN1
aXRlLCB0ZXN0KTsKKyAgICAgICAgCisgICAgICAgIHN0YXRlLm5leHQoKTsKKyAgICAgICAgaWYg
KHN0YXRlLmN1cnJlbnRTdWl0ZSgpICE9IHN1aXRlKQorICAgICAgICAgICAgc2VsZi5fcmVtb3Zl
RnJhbWUoKTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHN0YXRlKTsKKyAgICB9KTsKKyAgICAK
KyAgICByZXR1cm4gcHJvbWlzZTsKK30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5zdGVw
ID0gZnVuY3Rpb24oc3RhdGUpCit7CisgICAgaWYgKCFzdGF0ZSkgeworICAgICAgICBzdGF0ZSA9
IG5ldyBCZW5jaG1hcmtSdW5uZXJTdGF0ZSh0aGlzLl9zdWl0ZXMpOworICAgICAgICB0aGlzLl9z
dWl0ZXNTYW1wbGVycyA9IHt9OworICAgIH0KKworICAgIHZhciBzdWl0ZSA9IHN0YXRlLmN1cnJl
bnRTdWl0ZSgpOworICAgIGlmICghc3VpdGUpIHsKKyAgICAgICAgdGhpcy5fZmluYWxpemUoKTsK
KyAgICAgICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybiBwcm9taXNlOworICAgIH0KKworICAgIGlmIChz
dGF0ZS5pc0ZpcnN0VGVzdCgpKSB7CisgICAgICAgIHRoaXMuX21hc3VyZWRWYWx1ZXNGb3JDdXJy
ZW50U3VpdGUgPSB7fTsKKyAgICAgICAgdGhpcy5fYXBwZW5kRnJhbWUoKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gc3RhdGUucHJlcGFyZUN1cnJlbnRUZXN0KHRoaXMsIHRoaXMuX2ZyYW1lKS50aGVu
KGZ1bmN0aW9uKHByZXBhcmVSZXR1cm5WYWx1ZSkgeworICAgICAgICByZXR1cm4gdGhpcy5fcnVu
VGVzdEFuZFJlY29yZFJlc3VsdHMoc3RhdGUpOworICAgIH0uYmluZCh0aGlzKSk7Cit9CisKK0Jl
bmNobWFya1J1bm5lci5wcm90b3R5cGUucnVuQWxsU3RlcHMgPSBmdW5jdGlvbihzdGFydGluZ1N0
YXRlKQoreworICAgIHZhciBuZXh0Q2FsbGVlID0gdGhpcy5ydW5BbGxTdGVwcy5iaW5kKHRoaXMp
OworICAgIHRoaXMuc3RlcChzdGFydGluZ1N0YXRlKS50aGVuKGZ1bmN0aW9uKG5leHRTdGF0ZSkg
eworICAgICAgICBpZiAobmV4dFN0YXRlKQorICAgICAgICAgICAgbmV4dENhbGxlZShuZXh0U3Rh
dGUpOworICAgIH0pOworfQorCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLnJ1bk11bHRpcGxl
SXRlcmF0aW9ucyA9IGZ1bmN0aW9uKGl0ZXJhdGlvbkNvdW50KQoreworICAgIHZhciBzZWxmID0g
dGhpczsKKyAgICB2YXIgY3VycmVudEl0ZXJhdGlvbiA9IDA7CisKKyAgICB0aGlzLl9ydW5OZXh0
SXRlcmF0aW9uID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGN1cnJlbnRJdGVyYXRpb24rKzsKKyAg
ICAgICAgaWYgKGN1cnJlbnRJdGVyYXRpb24gPCBpdGVyYXRpb25Db3VudCkKKyAgICAgICAgICAg
IHNlbGYucnVuQWxsU3RlcHMoKTsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5fY2xpZW50ICYmIHRo
aXMuX2NsaWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0aW9uKQorICAgICAgICAgICAgc2VsZi5fY2xp
ZW50LmRpZEZpbmlzaExhc3RJdGVyYXRpb24oKTsKKyAgICB9CisKKyAgICBpZiAoc2VsZi5fY2xp
ZW50ICYmIHNlbGYuX2NsaWVudC53aWxsU3RhcnRGaXJzdEl0ZXJhdGlvbikKKyAgICAgICAgc2Vs
Zi5fY2xpZW50LndpbGxTdGFydEZpcnN0SXRlcmF0aW9uKGl0ZXJhdGlvbkNvdW50KTsKKworICAg
IHNlbGYucnVuQWxsU3RlcHMoKTsKK30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fZmlu
YWxpemUgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5fcmVtb3ZlRnJhbWUoKTsKKyAgICAgICAg
CisgICAgaWYgKHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGllbnQuZGlkUnVuU3VpdGVzKQorICAg
ICAgICB0aGlzLl9jbGllbnQuZGlkUnVuU3VpdGVzKHRoaXMuX3N1aXRlc1NhbXBsZXJzKTsKKwor
ICAgIGlmICh0aGlzLl9ydW5OZXh0SXRlcmF0aW9uKQorICAgICAgICB0aGlzLl9ydW5OZXh0SXRl
cmF0aW9uKCk7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jl
c291cmNlcy9ncmFwaC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvcnVubmVyL3Jlc291cmNlcy9ncmFwaC5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2dyYXBoLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTQwIEBACitmdW5jdGlvbiBncmFwaChzZWxlY3Rvciwgc2l6ZSwgbWFyZ2lu
cywgYXhlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KQoreworICAgIHZhciBlbGVtZW50
ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CisgICAgZWxlbWVudC50ZXh0Q29u
dGVudCA9IG51bGw7CisKKyAgICB2YXIgeCA9IGQzLnNjYWxlLmxpbmVhcigpCisgICAgICAgICAg
ICAucmFuZ2UoWzAsIHNpemUud2lkdGhdKQorICAgICAgICAgICAgLmRvbWFpbihkMy5leHRlbnQo
c2FtcGxlcywgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC50aW1lT2Zmc2V0OyB9KSk7ICAgICAgICAg
ICAgCisKKyAgICB2YXIgeUxlZnQgPSBkMy5zY2FsZS5saW5lYXIoKQorICAgICAgICAgICAgLnJh
bmdlKFtzaXplLmhlaWdodCwgMF0pCisgICAgICAgICAgICAuZG9tYWluKFswLCBkMy5tYXgoc2Ft
cGxlcywgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC52YWx1ZXNbMF07IH0pXSk7CisKKyAgICB2YXIg
eVJpZ2h0ID0gZDMuc2NhbGUubGluZWFyKCkKKyAgICAgICAgICAgIC5yYW5nZShbc2l6ZS5oZWln
aHQsIDBdKQorICAgICAgICAgICAgLmRvbWFpbihbMCwgZDMubWF4KHNhbXBsZXMsIGZ1bmN0aW9u
KGQpIHsgcmV0dXJuIGQudmFsdWVzWzFdOyB9KV0pOworCisgICAgdmFyIHhBeGlzID0gZDMuc3Zn
LmF4aXMoKQorICAgICAgICAgICAgLnNjYWxlKHgpCisgICAgICAgICAgICAub3JpZW50KCJib3R0
b20iKTsKKworICAgIHZhciB5QXhpc0xlZnQgPSBkMy5zdmcuYXhpcygpCisgICAgICAgICAgICAu
c2NhbGUoeUxlZnQpCisgICAgICAgICAgICAub3JpZW50KCJsZWZ0Iik7CisKKyAgICB2YXIgeUF4
aXNSaWdodCA9IGQzLnN2Zy5heGlzKCkKKyAgICAgICAgICAgIC5zY2FsZSh5UmlnaHQpCisgICAg
ICAgICAgICAub3JpZW50KCJyaWdodCIpOworCisgICAgdmFyIGxpbmVMZWZ0ID0gZDMuc3ZnLmxp
bmUoKQorICAgICAgICAgICAgLngoZnVuY3Rpb24oZCkgeyByZXR1cm4geChkLnRpbWVPZmZzZXQp
OyB9KQorICAgICAgICAgICAgLnkoZnVuY3Rpb24oZCkgeyByZXR1cm4geUxlZnQoZC52YWx1ZXNb
MF0pOyB9KTsKKworICAgIHZhciBsaW5lUmlnaHQgPSBkMy5zdmcubGluZSgpCisgICAgICAgICAg
ICAueChmdW5jdGlvbihkKSB7IHJldHVybiB4KGQudGltZU9mZnNldCk7IH0pCisgICAgICAgICAg
ICAueShmdW5jdGlvbihkKSB7IHJldHVybiB5UmlnaHQoZC52YWx1ZXNbMV0pOyB9KTsKKworICAg
IHNhbXBsZXMuZm9yRWFjaChmdW5jdGlvbihkKSB7CisgICAgICAgIGQudGltZU9mZnNldCA9ICtk
LnRpbWVPZmZzZXQ7CisgICAgICAgIGQudmFsdWVzWzBdID0gK2QudmFsdWVzWzBdOworICAgICAg
ICBkLnZhbHVlc1sxXSA9ICtkLnZhbHVlc1sxXTsgICAgICAgIAorICAgIH0pOyAgICAKKworICAg
IHZhciBzYW1wbGVkU2FtcGxlcyA9IHNhbXBsZXMuZmlsdGVyKGZ1bmN0aW9uKGQpIHsKKyAgICAg
ICAgcmV0dXJuIGQudGltZU9mZnNldCA+PSBzYW1wbGluZ1RpbWVPZmZzZXQ7CisgICAgfSk7Cisg
ICAgCisgICAgdmFyIG1lYW5MZWZ0ID0gZDMubWVhbihzYW1wbGVkU2FtcGxlcywgZnVuY3Rpb24o
ZCkgeworICAgICAgICByZXR1cm4gK2QudmFsdWVzWzBdOworICAgIH0pOworCisgICAgdmFyIG1l
YW5SaWdodCA9IGQzLm1lYW4oc2FtcGxlZFNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsKKyAgICAgICAg
cmV0dXJuICtkLnZhbHVlc1sxXTsKKyAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKKyAgICB2YXIgc3ZnID0gZDMuc2VsZWN0KHNlbGVjdG9yKS5hcHBlbmQoInN2ZyIpCisgICAg
ICAgIC5hdHRyKCJ3aWR0aCIsIHNpemUud2lkdGggKyBtYXJnaW5zLmxlZnQgKyBtYXJnaW5zLnJp
Z2h0KQorICAgICAgICAuYXR0cigiaGVpZ2h0Iiwgc2l6ZS5oZWlnaHQgKyBtYXJnaW5zLnRvcCAr
IG1hcmdpbnMuYm90dG9tKQorICAgICAgICAuYXBwZW5kKCJnIikKKyAgICAgICAgICAgIC5hdHRy
KCJ0cmFuc2Zvcm0iLCAidHJhbnNsYXRlKCIgKyBtYXJnaW5zLmxlZnQgKyAiLCIgKyBtYXJnaW5z
LnRvcCArICIpIik7CisKKyAgICAvLyB4LWF4aXMKKyAgICBzdmcuYXBwZW5kKCJnIikKKyAgICAg
ICAgLmF0dHIoImNsYXNzIiwgInggYXhpcyIpCisgICAgICAgIC5hdHRyKCJmaWxsIiwgInJnYigy
MzUsIDIzNSwgMjM1KSIpCisgICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAidHJhbnNsYXRlKDAs
IiArIHNpemUuaGVpZ2h0ICsgIikiKQorICAgICAgICAuY2FsbCh4QXhpcykKKyAgICAgICAgLmFw
cGVuZCgidGV4dCIpCisgICAgICAgICAgICAuYXR0cigiY2xhc3MiLCAibGFiZWwiKQorICAgICAg
ICAgICAgLmF0dHIoIngiLCBzaXplLndpZHRoKQorICAgICAgICAgICAgLmF0dHIoInkiLCAtNikK
KyAgICAgICAgICAgIC5hdHRyKCJmaWxsIiwgInJnYigyMzUsIDIzNSwgMjM1KSIpCisgICAgICAg
ICAgICAuc3R5bGUoInRleHQtYW5jaG9yIiwgImVuZCIpCisgICAgICAgICAgICAudGV4dCgidGlt
ZSIpOworICAgICAgICAgICAgICAgICAKKyAgICAvLyB5TGVmdC1heGlzCisgICAgc3ZnLmFwcGVu
ZCgiZyIpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJ5IGF4aXMiKQorICAgICAgICAuYXR0cigi
ZmlsbCIsICJzdGVlbGJsdWUiKQorICAgICAgICAuY2FsbCh5QXhpc0xlZnQpCisgICAgICAgIC5h
cHBlbmQoInRleHQiKQorICAgICAgICAgICAgLmF0dHIoImNsYXNzIiwgImxhYmVsIikKKyAgICAg
ICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAicm90YXRlKC05MCkiKQorICAgICAgICAgICAgLmF0
dHIoInkiLCA2KQorICAgICAgICAgICAgLmF0dHIoImZpbGwiLCAic3RlZWxibHVlIikKKyAgICAg
ICAgICAgIC5hdHRyKCJkeSIsICIuNzFlbSIpCisgICAgICAgICAgICAuc3R5bGUoInRleHQtYW5j
aG9yIiwgImVuZCIpCisgICAgICAgICAgICAudGV4dChheGVzWzBdKTsKKworICAgIC8vIHlSaWdo
dC1heGlzCisgICAgc3ZnLmFwcGVuZCgiZyIpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJ5IGF4
aXMiKQorICAgICAgICAuYXR0cigiZmlsbCIsICJyZWQiKQorICAgICAgICAuYXR0cigidHJhbnNm
b3JtIiwgInRyYW5zbGF0ZSgiICsgc2l6ZS53aWR0aCArICIsIDApIikKKyAgICAgICAgLmNhbGwo
eUF4aXNSaWdodCkKKyAgICAgICAgLmFwcGVuZCgidGV4dCIpCisgICAgICAgICAgICAuYXR0cigi
Y2xhc3MiLCAibGFiZWwiKQorICAgICAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJyb3RhdGUo
LTkwKSIpCisgICAgICAgICAgICAuYXR0cigieSIsIDYpCisgICAgICAgICAgICAuYXR0cigiZmls
bCIsICJyZWQiKQorICAgICAgICAgICAgLmF0dHIoImR5IiwgIi43MWVtIikKKyAgICAgICAgICAg
IC5zdHlsZSgidGV4dC1hbmNob3IiLCAiZW5kIikKKyAgICAgICAgICAgIC50ZXh0KGF4ZXNbMV0p
OworCisgICAgLy8gbGVmdC1tZWFuCisgICAgc3ZnLmFwcGVuZCgic3ZnOmxpbmUiKQorICAgICAg
ICAuYXR0cigieDEiLCB4KDApKQorICAgICAgICAuYXR0cigieDIiLCBzaXplLndpZHRoKQorICAg
ICAgICAuYXR0cigieTEiLCB5TGVmdChtZWFuTGVmdCkpCisgICAgICAgIC5hdHRyKCJ5MiIsIHlM
ZWZ0KG1lYW5MZWZ0KSkKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgImxlZnQtbWVhbiIpOworCisg
ICAgLy8gcmlnaHQtbWVhbgorICAgIHN2Zy5hcHBlbmQoInN2ZzpsaW5lIikKKyAgICAgICAgLmF0
dHIoIngxIiwgeCgwKSkKKyAgICAgICAgLmF0dHIoIngyIiwgc2l6ZS53aWR0aCkKKyAgICAgICAg
LmF0dHIoInkxIiwgeVJpZ2h0KG1lYW5SaWdodCkpCisgICAgICAgIC5hdHRyKCJ5MiIsIHlSaWdo
dChtZWFuUmlnaHQpKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAicmlnaHQtbWVhbiIpOyAgICAg
ICAgCisKKyAgICAvLyBzYW1wbGluZ1RpbWVPZmZzZXQKKyAgICBzdmcuYXBwZW5kKCJsaW5lIikK
KyAgICAgICAgLmF0dHIoIngxIiwgeChzYW1wbGluZ1RpbWVPZmZzZXQpKQorICAgICAgICAuYXR0
cigieDIiLCB4KHNhbXBsaW5nVGltZU9mZnNldCkpCisgICAgICAgIC5hdHRyKCJ5MSIsIHlMZWZ0
KDApKQorICAgICAgICAuYXR0cigieTIiLCB5TGVmdCh5QXhpc0xlZnQuc2NhbGUoKS5kb21haW4o
KVsxXSkpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJzbWFwbGUtdGltZSIpOworCisgICAgLy8g
bGVmdC1zYW1wbGVzCisgICAgc3ZnLmFwcGVuZCgicGF0aCIpCisgICAgICAgIC5kYXR1bShzYW1w
bGVzKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAibGVmdC1zYW1wbGVzIikKKyAgICAgICAgLmF0
dHIoImQiLCBsaW5lTGVmdCk7CisgICAgICAgIAorICAgIC8vIHJpZ2h0LXNhbXBsZXMKKyAgICBz
dmcuYXBwZW5kKCJwYXRoIikKKyAgICAgICAgLmRhdHVtKHNhbXBsZXMpCisgICAgICAgIC5hdHRy
KCJjbGFzcyIsICJyaWdodC1zYW1wbGVzIikKKyAgICAgICAgLmF0dHIoImQiLCBsaW5lUmlnaHQp
OworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMv
dGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5l
ci9yZXNvdXJjZXMvdGVzdHMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy90ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDIxMCBAQAordmFyIFRpdGxlcyA9CitbCisgICAgeworICAgICAgICB0ZXh0OiAiVGVzdCBO
YW1lIiwKKyAgICAgICAgd2lkdGg6IDI1LAorICAgICAgICBjaGlsZHJlbjogW10KKyAgICB9LAor
ICAgIHsKKyAgICAgICAgdGV4dDogIkFuaW1hdGVkIEl0ZW1zIiwKKyAgICAgICAgd2lkdGg6IDMx
LAorICAgICAgICBjaGlsZHJlbjoKKyAgICAgICAgWworICAgICAgICAgICAgeyB0ZXh0OiAgICJB
dmcuIiwgd2lkdGg6IDYsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAiXHUw
MGIxIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAgICJX
LjUlIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAgICJT
dGQuIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAgICAg
ICIlIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICBdCisgICAgfSwKKyAgICB7
CisgICAgICAgIHRleHQ6ICJGUFMiLAorICAgICAgICB3aWR0aDogMzEsCisgICAgICAgIGNoaWxk
cmVuOgorICAgICAgICBbCisgICAgICAgICAgICB7IHRleHQ6ICAgIkF2Zy4iLCB3aWR0aDogNiwg
Y2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICJcdTAwYjEiLCB3aWR0aDogNSwg
Y2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICAgIlcuNSUiLCB3aWR0aDogNSwg
Y2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICAgIlN0ZC4iLCB3aWR0aDogNSwg
Y2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICAgICAgIiUiLCB3aWR0aDogNSwg
Y2hpbGRyZW46IFtdIH0sCisgICAgICAgIF0KKyAgICB9LAorICAgIHsKKyAgICAgICAgdGV4dDog
IlNjb3JlIiwKKyAgICAgICAgd2lkdGg6IDYsCisgICAgICAgIGNoaWxkcmVuOiBbXQorICAgIH0s
CisgICAgeworICAgICAgICB0ZXh0OiAiU2FtcGxlcyIsCisgICAgICAgIHdpZHRoOiA3LAorICAg
ICAgICBjaGlsZHJlbjogW10KKyAgICB9CitdOworCit2YXIgU3VpdGVzID0gW107CisKK1N1aXRl
cy5wdXNoKHsKKyAgICBuYW1lOiAiSFRNTCBCb3VuY2luZyBQYXJ0aWNsZXMiLAorICAgIHByZXBh
cmU6IGZ1bmN0aW9uKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgiI3N0YWdlIikudGhlbihm
dW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAg
IH0pOworICAgIH0sCisgICAgCisgICAgcnVuOiBmdW5jdGlvbihjb250ZW50V2luZG93LCB0ZXN0
LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCisgICAgeworICAgICAgICByZXR1
cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhpcywgdGVzdCwgb3B0aW9ucywgcmVjb3Jk
VGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICB9LAorCisgICAgdGl0bGVzOiBUaXRsZXMsCisgICAg
dGVzdHM6IFsKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZy
ZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2ly
Y2xlIiwKKyAgICAgICAgICAgIG5hbWU6ICJib3VuY2luZyBjaXJjbGVzIgorICAgICAgICB9LAor
ICAgICAgICB7IAorICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0
PTUmcGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3Rh
ciIsCisgICAgICAgICAgICBuYW1lOiAiYm91bmNpbmcgY2xpcHBlZCByZWN0cyIKKyAgICAgICAg
fSwKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVM
aW1pdD01JnBhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZp
bGw9Z3JhZGllbnQiLAorICAgICAgICAgICAgbmFtZTogImJvdW5jaW5nIGdyYWRpZW50IGNpcmNs
ZXMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWw/Z2Fpbj0wLjQmYWRkTGlt
aXQ9NSZyZW1vdmVMaW1pdD0yJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1h
Z2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICBuYW1lOiAiYm91
bmNpbmcgU1ZHIGltYWdlcyIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJs
OiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRtbD9n
YWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFydGljbGVXaWR0aD04MCZwYXJ0aWNs
ZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcucG5nIiwKKyAgICAgICAg
ICAgIG5hbWU6ICJib3VuY2luZyBQTkcgaW1hZ2VzIgorICAgICAgICB9LAorICAgICAgICB7Cisg
ICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbD9nYWluPTQm
YWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMCIsCisgICAgICAgICAgICBuYW1lOiAibGF5ZXJp
bmcgdGV4dCIKKyAgICAgICAgfSwKKyAgICBdCit9KTsKKworU3VpdGVzLnB1c2goCit7CisgICAg
bmFtZTogIkNhbnZhcyBCb3VuY2luZyBQYXJ0aWNsZXMiLAorICAgIHByZXBhcmU6IGZ1bmN0aW9u
KHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgiI3N0YWdlIikudGhlbihmdW5jdGlvbiAoZWxl
bWVudCkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0s
ICAKKyAgICAKKyAgICBydW46IGZ1bmN0aW9uKGNvbnRlbnRXaW5kb3csIHRlc3QsIG9wdGlvbnMs
IHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKKyAgICB7CisgICAgICAgIHJldHVybiBjb250ZW50
V2luZG93LnJ1bkJlbmNobWFyayh0aGlzLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpOworICAgIH0sCisgICAgCisgICAgdGl0bGVzOiBUaXRsZXMsCisgICAgdGVzdHM6
CisgICAgWworICAgICAgICB7IAorICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAw
JnJlbW92ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFw
ZT1jaXJjbGUiLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBjaXJjbGVzIgor
ICAgICAgICB9LAorICAgICAgICB7IAorICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9
MTAwJnJlbW92ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZz
aGFwZT1yZWN0JmNsaXA9c3RhciIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5n
IGNsaXBwZWQgcmVjdHMiCisgICAgICAgIH0sCisgICAgICAgIHsgCisgICAgICAgICAgICB1cmw6
ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1s
P2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTUwJnBh
cnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRpZW50IiwKKyAgICAgICAgICAg
IG5hbWU6ICJjYW52YXMgYm91bmNpbmcgZ3JhZGllbnQgY2lyY2xlcyIKKyAgICAgICAgfSwKKyAg
ICAgICAgeyAKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9i
b3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/Z2Fpbj0wLjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1p
dD0xJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3Vy
Y2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIFNW
RyBpbWFnZXMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/Z2Fpbj00
JmFkZExpbWl0PTEwMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xl
SGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5wbmciLAorICAgICAgICAg
ICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBQTkcgaW1hZ2VzIgorICAgICAgICB9LAorICAgIF0K
K30pOworCitTdWl0ZXMucHVzaCgKK3sKKyAgICBuYW1lOiAiU1ZHIEJvdW5jaW5nIFBhcnRpY2xl
cyIsCisgICAgcHJlcGFyZTogZnVuY3Rpb24ocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50
RG9jdW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCIj
c3RhZ2UiKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICByZXR1cm4gZWxl
bWVudDsKKyAgICAgICAgfSk7CisgICAgfSwKKyAgICAKKyAgICBydW46IGZ1bmN0aW9uKGNvbnRl
bnRXaW5kb3csIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKKyAgICB7
CisgICAgICAgIHJldHVybiBjb250ZW50V2luZG93LnJ1bkJlbmNobWFyayh0aGlzLCB0ZXN0LCBv
cHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIH0sCisgICAgCisgICAgdGl0
bGVzOiBUaXRsZXMsCisgICAgdGVzdHM6CisgICAgWworICAgICAgICB7CisgICAgICAgICAgICB1
cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1s
P2dhaW49NiZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTEyJnBh
cnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCisgICAgICAgICAgICBuYW1lOiAiU1ZHIGJv
dW5jaW5nIGNpcmNsZXMiLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6
ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP2dh
aW49MC42JmFkZExpbWl0PTEwJnJlbW92ZUxpbWl0PTEmcGFydGljbGVXaWR0aD00MCZwYXJ0aWNs
ZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3RhciIsCisgICAgICAgICAgICBuYW1lOiAiU1ZH
IGJvdW5jaW5nIGNsaXBwZWQgcmVjdHMiLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg
ICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBl
cy5odG1sP2dhaW49MC44JmFkZExpbWl0PTEwJnJlbW92ZUxpbWl0PTQmcGFydGljbGVXaWR0aD01
MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVudCIsCisgICAgICAg
ICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIGdyYWRpZW50IGNpcmNsZXMiCisgICAgICAgIH0sCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9i
b3VuY2luZy1zdmctaW1hZ2VzLmh0bWw/Z2Fpbj0wLjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0y
JnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2Vz
L3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIFNWRyBpbWFn
ZXMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw/Z2Fpbj00JmFkZExpbWl0
PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1h
Z2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCisgICAgICAgICAgICBuYW1lOiAiU1ZH
IGJvdW5jaW5nIFBORyBpbWFnZXMiCisgICAgICAgIH0sCisgICAgXQorfSk7CisKK1N1aXRlcy5w
dXNoKAoreworICAgIG5hbWU6ICJTdGFnZSBUZW1wbGF0ZXMgKENhbiBiZSB1c2VkIGZvciBuZXcg
dGVzdHMpIiwKKyAgICBwcmVwYXJlOiBmdW5jdGlvbihydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNv
bnRlbnREb2N1bWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1l
bnQoIiNzdGFnZSIpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIHJldHVy
biBlbGVtZW50OworICAgICAgICB9KTsKKyAgICB9LAorICAgIAorICAgIHJ1bjogZnVuY3Rpb24o
Y29udGVudFdpbmRvdywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRXaW5kb3cucnVuQmVuY2htYXJrKHRoaXMsIHRl
c3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7CisgICAgfSwKKyAgICAKKyAg
ICB0aXRsZXM6IFRpdGxlcywKKyAgICB0ZXN0czoKKyAgICBbCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHVybDogIi4uL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNzcy5odG1sP2dhaW49MSZhZGRM
aW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSIsCisgICAgICAgICAgICBuYW1lOiAidGVtcGxhdGUiCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL3RlbXBsYXRl
L3RlbXBsYXRlLWNhbnZhcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSIs
CisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIHRlbXBsYXRlIgorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1zdmcuaHRt
bD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmPG90aGVyX3BhcmFtdGVyPj08dmFs
dWU+IiwKKyAgICAgICAgICAgIG5hbWU6ICJzdmcgdGVtcGxhdGUiCisgICAgICAgIH0sCisgICAg
XQorfSk7CisKK2Z1bmN0aW9uIHN1aXRlRnJvbU5hbWUobmFtZSkgeworICAgIHJldHVybiBTdWl0
ZXMuZmluZChmdW5jdGlvbihzdWl0ZSkgeyByZXR1cm4gc3VpdGUubmFtZSA9PSBuYW1lOyB9KTsK
K30KKworZnVuY3Rpb24gdGVzdEZyb21OYW1lKHN1aXRlLCBuYW1lKSB7CisgICAgcmV0dXJuIHN1
aXRlLnRlc3RzLmZpbmQoZnVuY3Rpb24odGVzdCkgeyByZXR1cm4gdGVzdC5uYW1lID09IG5hbWU7
IH0pOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2lu
Zy1jYW52YXMtaW1hZ2VzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICBpbWcuaGlkZGVuIHsKKyAgICAgICAg
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsK
KyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBl
PSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+ICAKKyAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+ICAKKyAgICA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy9ib3VuY2luZy1jYW52YXMtcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+CisgICAgPGltZyBjbGFzcz0iaGlkZGVuIiBzcmM9Ii4uL3Jlc291cmNl
cy95aW4teWFuZy5zdmciPgorICAgIDxpbWcgY2xhc3M9ImhpZGRlbiIgc3JjPSIuLi9yZXNvdXJj
ZXMveWluLXlhbmcucG5nIj4KKyAgICA8Y2FudmFzIGlkPSJzdGFnZSI+PC9jYW52YXM+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2Jv
dW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNo
YXBlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQv
Y3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4gIAorICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3N0YWdlLmpzIj48L3NjcmlwdD4gIAorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91
bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgICA8Y2FudmFzIGlkPSJzdGFnZSI+PC9jYW52YXM+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1p
bWFnZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KyAgICA8c3R5bGU+CisgICAgICAgIGltZyB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
dHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgorICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PiAgCisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAgCisgICAgPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCisgICAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdlcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgICA8ZGl2IGlkPSJzdGFnZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2Jv
dW5jaW5nLWNzcy1zaGFwZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRt
bAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5
bGU+CisgICAgICAgIC5jaXJjbGUgeworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsKKyAgICAgICAgICAgIGJvcmRl
ci1yYWRpdXM6IDUwJSA1MCU7CisgICAgICAgIH0KKyAgICAgICAgLnJlY3QgeworICAgICAgICAg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAw
MDAwMDsKKyAgICAgICAgfQorICAgICAgICAuc3RhciB7CisgICAgICAgICAgICAtd2Via2l0LWNs
aXAtcGF0aDogcG9seWdvbig1MCUgMCUsIDM4JSAzOCUsIDAlIDM4JSwgMzAlIDYwJSwgMTglIDEw
MCUsIDUwJSA3NSUsIDgyJSAxMDAlLCA3MCUgNjAlLCAxMDAlIDM4JSwgNjIlIDM4JSk7CisgICAg
ICAgICAgICAtbXMtY2xpcC1wYXRoOiBwb2x5Z29uKDUwJSAwJSwgMzglIDM4JSwgMCUgMzglLCAz
MCUgNjAlLCAxOCUgMTAwJSwgNTAlIDc1JSwgODIlIDEwMCUsIDcwJSA2MCUsIDEwMCUgMzglLCA2
MiUgMzglKTsgIAorICAgICAgICAgICAgY2xpcC1wYXRoOiBwb2x5Z29uKDUwJSAwJSwgMzglIDM4
JSwgMCUgMzglLCAzMCUgNjAlLCAxOCUgMTAwJSwgNTAlIDc1JSwgODIlIDEwMCUsIDcwJSA2MCUs
IDEwMCUgMzglLCA2MiUgMzglKTsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdl
LmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+
PC9zY3JpcHQ+ICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL21haW4uanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAg
ICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+ICAKKyAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9InN0YWdlIj48L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctc3ZnLWltYWdlcy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9
Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PiAgCisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L21hdGguanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0
aWVzLmpzIj48L3NjcmlwdD4gICAgCisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9iZW5j
aG1hcmsuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2Uu
anMiPjwvc2NyaXB0PiAgCisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0
aWNsZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmct
c3ZnLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9i
b3VuY2luZy1zdmctaW1hZ2VzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxz
dmcgaWQ9InN0YWdlIj48L3N2Zz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNo
YXBlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sCShyZXZpc2lvbiAw
KQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAorICAgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4gIAorICAgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8c3ZnIGlkPSJzdGFnZSI+PC9zdmc+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
cmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNl
cy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkg
QEAKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzSW1hZ2Uoc3RhZ2UpCit7CisgICAgQm91bmNpbmdD
YW52YXNQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9pbWFnZUVsZW1lbnQg
PSBzdGFnZS5pbWFnZUVsZW1lbnQ7CisgICAgdGhpcy5fc2hhcGUgPSAiaW1hZ2UiOworfQorCitC
b3VuY2luZ0NhbnZhc0ltYWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdDYW52
YXNQYXJ0aWNsZS5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNJbWFnZS5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc0ltYWdlOworCitCb3VuY2luZ0NhbnZhc0ltYWdlLnBy
b3RvdHlwZS5fZHJhdyA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9hcHBseVJvdGF0aW9uKCk7
CisgICAgdGhpcy5fY29udGV4dC5kcmF3SW1hZ2UodGhpcy5faW1hZ2VFbGVtZW50LCAwLCAwLCB0
aGlzLl9zaXplLngsIHRoaXMuX3NpemUueSk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFz
SW1hZ2VzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBCb3VuY2luZ0NhbnZhc1BhcnRp
Y2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisKKyAgICB2YXIgaW1hZ2VT
cmMgPSBvcHRpb25zWyJpbWFnZVNyYyJdIHx8ICJyZXNvdXJjZXMveWluLXlhbmcuc3ZnIjsKKyAg
ICB0aGlzLmltYWdlRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5oaWRkZW5bc3Jj
PVwiIiArIGltYWdlU3JjICsgIlwiXSIpOworfQorCitCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdl
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnZS5w
cm90b3R5cGUpOworQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0
b3IgPSBCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlOworCitCb3VuY2luZ0NhbnZhc0ltYWdlc1N0
YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4g
bmV3IEJvdW5jaW5nQ2FudmFzSW1hZ2UodGhpcyk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ2Fu
dmFzSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpCit7CisgICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0
aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30K
KworQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOworQm91bmNpbmdD
YW52YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52
YXNJbWFnZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3Rv
dHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgcmV0dXJuIG5ldyBC
b3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCit3
aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgd2luZG93LmJlbmNobWFyayA9
IG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZh
cy1wYXJ0aWNsZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXBhcnRp
Y2xlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDcgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nQ2Fu
dmFzUGFydGljbGUoc3RhZ2UpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0
YWdlKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gc3RhZ2UuY29udGV4dDsKKyAgICB0aGlzLl9zaGFw
ZSA9ICIiOworICAgIHRoaXMuX2NsaXAgPSBzdGFnZS5jbGlwOworfQorCitCb3VuY2luZ0NhbnZh
c1BhcnRpY2xlLmNsaXBzID0KK3sKKyAgICBzdGFyOgorICAgIFsKKyAgICAgICAgbmV3IFBvaW50
KDAuNTAsIDAuMDApLAorICAgICAgICBuZXcgUG9pbnQoMC4zOCwgMC4zOCksCisgICAgICAgIG5l
dyBQb2ludCgwLjAwLCAwLjM4KSwKKyAgICAgICAgbmV3IFBvaW50KDAuMzAsIDAuNjApLAorICAg
ICAgICBuZXcgUG9pbnQoMC4xOCwgMS4wMCksCisgICAgICAgIG5ldyBQb2ludCgwLjUwLCAwLjc1
KSwKKyAgICAgICAgbmV3IFBvaW50KDAuODIsIDEuMDApLAorICAgICAgICBuZXcgUG9pbnQoMC43
MCwgMC42MCksCisgICAgICAgIG5ldyBQb2ludCgxLjAwLCAwLjM4KSwKKyAgICAgICAgbmV3IFBv
aW50KDAuNjIsIDAuMzgpCisgICAgXSwKK307CisKK0JvdW5jaW5nQ2FudmFzUGFydGljbGUucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3Vu
Y2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFz
UGFydGljbGU7CisKK0JvdW5jaW5nQ2FudmFzUGFydGljbGUucHJvdG90eXBlLl9hcHBseVJvdGF0
aW9uID0gZnVuY3Rpb24oKQoreworICAgIGlmICh0aGlzLl9zaGFwZSA9PSAiY2lyY2xlIikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgdGhpcy5fY29udGV4dC50cmFuc2xhdGUodGhpcy5fc2l6ZS54
IC8gMiwgdGhpcy5fc2l6ZS55IC8gMik7CisgICAgdGhpcy5fY29udGV4dC5yb3RhdGUodGhpcy5f
cm90YXRlci5kZWdyZWUoKSAqIE1hdGguUEkgLyAxODApOworICAgIHRoaXMuX2NvbnRleHQudHJh
bnNsYXRlKC10aGlzLl9zaXplLnggLyAyLCAtdGhpcy5fc2l6ZS55IC8gMik7Cit9CisKK0JvdW5j
aW5nQ2FudmFzUGFydGljbGUucHJvdG90eXBlLl9hcHBseUNsaXBwaW5nID0gZnVuY3Rpb24oKQor
eworICAgIHZhciBjbGlwUG9pbnRzID0gQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5jbGlwc1t0aGlz
Ll9jbGlwXTsKKyAgICBpZiAoIWNsaXBQb2ludHMpCisgICAgICAgIHJldHVybjsKKyAgICAgICAg
CisgICAgdGhpcy5fY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICBjbGlwUG9pbnRzLmZvckVhY2go
ZnVuY3Rpb24ocG9pbnQsIGluZGV4KSB7CisgICAgICAgIHZhciBwb2ludCA9IHRoaXMuX3NpemUu
bXVsdGlwbHkocG9pbnQpOworICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgdGhpcy5f
Y29udGV4dC5tb3ZlVG8ocG9pbnQueCwgcG9pbnQueSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHRoaXMuX2NvbnRleHQubGluZVRvKHBvaW50LngsIHBvaW50LnkpOworICAgIH0sIHRoaXMp
OworCisgICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTsKKyAgICB0aGlzLl9jb250ZXh0LmNs
aXAoKTsKK30KKworQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5cGUuX2RyYXcgPSBmdW5j
dGlvbigpCit7CisgICAgdGhyb3cgIk5vdCBpbXBsZW1lbnRlZCI7Cit9CisKK0JvdW5jaW5nQ2Fu
dmFzUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCit7Cisg
ICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0
YSk7CisgICAgdGhpcy5fY29udGV4dC5zYXZlKCk7CisgICAgdGhpcy5fY29udGV4dC50cmFuc2xh
dGUodGhpcy5fcG9zaXRpb24ueCwgdGhpcy5fcG9zaXRpb24ueSk7CisgICAgdGhpcy5fZHJhdygp
OworICAgIHRoaXMuX2NvbnRleHQucmVzdG9yZSgpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0Nh
bnZhc1BhcnRpY2xlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7CisgICAgQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgIHRoaXMuY29udGV4
dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOworfQorCitCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNT
dGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdlOworCitmdW5jdGlvbiBC
b3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yKGJlbmNobWFyaykKK3sKKyAgICBCb3VuY2lu
Z1BhcnRpY2xlc0FuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrKTsKKyAgICB0aGlzLl9jb250
ZXh0ID0gYmVuY2htYXJrLl9zdGFnZS5jb250ZXh0OworfQorCitCb3VuY2luZ0NhbnZhc1BhcnRp
Y2xlc0FuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNB
bmltYXRvci5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvci5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yOworCitC
b3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rp
b24oKQoreworICAgIHRoaXMuX2NvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuX2JlbmNobWFy
ay5fc3RhZ2Uuc2l6ZS54LCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUueSk7CisgICAgcmV0
dXJuIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlz
KTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsoc3VpdGUs
IHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICBTdGFnZUJl
bmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpOworfQorCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5
cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7CitCb3VuY2luZ0Nh
bnZhc1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0Nh
bnZhc1BhcnRpY2xlc0JlbmNobWFyazsKKworQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1h
cmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiBu
ZXcgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvcih0aGlzKTsKK30KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanMJKHJldmlzaW9uIDAp
CisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsODggQEAKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzU2hhcGUoc3RhZ2UpCit7CisgICAg
Qm91bmNpbmdDYW52YXNQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9maWxs
ID0gc3RhZ2UuZmlsbDsKKyAgICB0aGlzLl9zaGFwZSA9IHN0YWdlLnNoYXBlOworICAgIHRoaXMu
X2NvbG9yMCA9IHN0YWdlLnJhbmRvbUNvbG9yKCk7CisgICAgdGhpcy5fY29sb3IxID0gc3RhZ2Uu
cmFuZG9tQ29sb3IoKTsgICAgCit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2lu
Z0NhbnZhc1NoYXBlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzU2hhcGU7
CisKK0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLl9hcHBseUZpbGwgPSBmdW5jdGlvbigp
Cit7CisgICAgc3dpdGNoICh0aGlzLl9maWxsKSB7CisgICAgY2FzZSAiZ3JhZGllbnQiOgorICAg
ICAgICB2YXIgZ3JhZGllbnQgPSB0aGlzLl9jb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAs
IDAsIHRoaXMuX3NpemUud2lkdGgsIDApOworICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3Ao
MCwgdGhpcy5fY29sb3IwKTsKKyAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDEsIHRoaXMu
X2NvbG9yMSk7IAorICAgICAgICB0aGlzLl9jb250ZXh0LmZpbGxTdHlsZSA9IGdyYWRpZW50Owor
ICAgICAgICBicmVhazsKKyAgICAKKyAgICBjYXNlICJzb2xpZCI6CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgdGhpcy5fY29udGV4dC5maWxsU3R5bGUgPSB0aGlzLl9jb2xvcjA7CisgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKworQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUuX2RyYXdTaGFw
ZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgpOworCisgICAg
c3dpdGNoICh0aGlzLl9zaGFwZSkgeworICAgIGNhc2UgInJlY3QiOgorICAgICAgICB0aGlzLl9j
b250ZXh0LnJlY3QoMCwgMCwgdGhpcy5fc2l6ZS53aWR0aCwgdGhpcy5fc2l6ZS5oZWlnaHQpOwor
ICAgICAgICBicmVhazsKKyAgICAKKyAgICBjYXNlICJjaXJjbGUiOgorICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHZhciBjZW50ZXIgPSB0aGlzLl9zaXplLmNlbnRlcjsKKyAgICAgICAgdmFyIHJhZGl1
cyA9IE1hdGgubWluKHRoaXMuX3NpemUueCwgdGhpcy5fc2l6ZS55KSAvIDI7CisgICAgICAgIHRo
aXMuX2NvbnRleHQuYXJjKGNlbnRlci54LCBjZW50ZXIueSwgcmFkaXVzLCAwLCBNYXRoLlBJICog
MiwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHRoaXMuX2NvbnRleHQuZmls
bCgpOworfQorCitCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5fZHJhdyA9IGZ1bmN0aW9u
KCkKK3sKKyAgICB0aGlzLl9hcHBseUZpbGwoKTsKKyAgICB0aGlzLl9hcHBseVJvdGF0aW9uKCk7
CisgICAgdGhpcy5fYXBwbHlDbGlwcGluZygpOworICAgIHRoaXMuX2RyYXdTaGFwZSgpOworfQor
CitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7
CisgICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9w
dGlvbnMpOworICAgIHRoaXMucGFyc2VTaGFwZVBhcmFtdGVycyhvcHRpb25zKTsKK30KKworQm91
bmNpbmdDYW52YXNTaGFwZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5n
Q2FudmFzUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzU2hhcGVzU3Rh
Z2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZTsKKwor
Qm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5j
dGlvbigpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc1NoYXBlKHRoaXMpOworfQor
CitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIEJvdW5jaW5nQ2FudmFzUGFy
dGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRh
YmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrLnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsu
cHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrOworCitCb3VuY2luZ0NhbnZh
c1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50
KQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZShlbGVtZW50LCB0
aGlzLl9vcHRpb25zKTsKK30KKword2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5j
dGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQorewor
ICAgIHdpbmRvdy5iZW5jaG1hcmsgPSBuZXcgQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmso
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4
OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jl
c291cmNlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5j
aW5nLWNzcy1pbWFnZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3MtaW1h
Z2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjQgQEAKK2Z1bmN0aW9uIEJvdW5jaW5n
Q3NzSW1hZ2Uoc3RhZ2UpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdl
KTsKKworICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOwor
ICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMuX3NpemUueCArICJweCI7CisgICAg
dGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuX3NpemUueSArICJweCI7CisgICAgdGhp
cy5lbGVtZW50LnNldEF0dHJpYnV0ZSgic3JjIiwgc3RhZ2UuaW1hZ2VTcmMpOworICAgIAorICAg
IHN0YWdlLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTsKKyAgICB0aGlzLl9tb3Zl
KCk7Cit9CisKK0JvdW5jaW5nQ3NzSW1hZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3Vu
Y2luZ1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ0Nzc0ltYWdlLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IEJvdW5jaW5nQ3NzSW1hZ2U7CisKK0JvdW5jaW5nQ3NzSW1hZ2UucHJvdG90eXBl
Ll9tb3ZlID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuZWxlbWVudC5zdHlsZS50cmFuc2Zvcm0g
PSAidHJhbnNsYXRlKCIgKyB0aGlzLl9wb3NpdGlvbi54ICsgInB4LCIgKyB0aGlzLl9wb3NpdGlv
bi55ICsgInB4KSAiICsgdGhpcy5fcm90YXRlci5yb3RhdGVaKCk7Cit9CisgICAgCitCb3VuY2lu
Z0Nzc0ltYWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQoreworICAg
IEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEp
OworICAgIHRoaXMuX21vdmUoKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDc3NJbWFnZXNTdGFn
ZShlbGVtZW50LCBvcHRpb25zKQoreworICAgIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0
aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0aGlzLmltYWdlU3JjID0gb3B0aW9uc1siaW1h
Z2VTcmMiXSB8fCAiLi4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7Cit9CisKK0JvdW5jaW5nQ3Nz
SW1hZ2VzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc1N0
YWdlLnByb3RvdHlwZSk7CitCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IEJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2U7CisKK0JvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2Uu
cHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiBuZXcg
Qm91bmNpbmdDc3NJbWFnZSh0aGlzKTsKK30KKworQm91bmNpbmdDc3NJbWFnZXNTdGFnZS5wcm90
b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkID0gZnVuY3Rpb24ocGFydGljbGUpCit7CisgICAg
aWYgKHBhcnRpY2xlLmVsZW1lbnQgJiYgcGFydGljbGUuZWxlbWVudC5wYXJlbnROb2RlICYmIHBh
cnRpY2xlLmVsZW1lbnQucGFyZW50Tm9kZSA9PSB0aGlzLmVsZW1lbnQpCisgICAgICAgIHRoaXMu
ZWxlbWVudC5yZW1vdmVDaGlsZChwYXJ0aWNsZS5lbGVtZW50KTsKK30KKworZnVuY3Rpb24gQm91
bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxl
LCBwcm9ncmVzc0JhcikKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRo
aXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQor
CitCb3VuY2luZ0Nzc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJv
dW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSk7CitCb3VuY2luZ0Nzc0ltYWdlc0Jl
bmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0Nzc0ltYWdlc0JlbmNobWFy
azsKKworQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0g
ZnVuY3Rpb24oZWxlbWVudCkKK3sKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ3NzSW1hZ2VzU3Rh
Z2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQu
Y3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9n
cmVzc0JhcikKK3sKKyAgICB3aW5kb3cuYmVuY2htYXJrID0gbmV3IEJvdW5jaW5nQ3NzSW1hZ2Vz
QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
OworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLXNoYXBlcy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNp
bmctY3NzLXNoYXBlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBACitmdW5jdGlv
biBCb3VuY2luZ0Nzc1NoYXBlKHN0YWdlKQoreworICAgIEJvdW5jaW5nUGFydGljbGUuY2FsbCh0
aGlzLCBzdGFnZSk7CisKKyAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLl9jcmVhdGVTcGFuKHN0YWdl
KTsKKyAgICAgICAgCisgICAgc3dpdGNoIChzdGFnZS5maWxsKSB7CisgICAgY2FzZSAic29saWQi
OgorICAgIGRlZmF1bHQ6CisgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29s
b3IgPSBzdGFnZS5yYW5kb21Db2xvcigpOworICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAg
Y2FzZSAiZ3JhZGllbnQiOgorICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZCA9
ICJsaW5lYXItZ3JhZGllbnQoIiArIHN0YWdlLnJhbmRvbUNvbG9yKCkgKyAiLCAiICsgc3RhZ2Uu
cmFuZG9tQ29sb3IoKSArICIpIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgdGhpcy5f
bW92ZSgpOworfQorCitCb3VuY2luZ0Nzc1NoYXBlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
Qm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUpOworQm91bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBCb3VuY2luZ0Nzc1NoYXBlOworCitCb3VuY2luZ0Nzc1NoYXBlLnByb3Rv
dHlwZS5fY3JlYXRlU3BhbiA9IGZ1bmN0aW9uKHN0YWdlKQoreworICAgIHZhciBzcGFuID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIHNwYW4uY2xhc3NOYW1lID0gc3RhZ2Uu
c2hhcGUgKyAiICIgKyBzdGFnZS5jbGlwOworICAgIHNwYW4uc3R5bGUud2lkdGggPSB0aGlzLl9z
aXplLnggKyAicHgiOworICAgIHNwYW4uc3R5bGUuaGVpZ2h0ID0gdGhpcy5fc2l6ZS55ICsgInB4
IjsKKyAgICBzdGFnZS5lbGVtZW50LmFwcGVuZENoaWxkKHNwYW4pOworICAgIHJldHVybiBzcGFu
OworfQorCitCb3VuY2luZ0Nzc1NoYXBlLnByb3RvdHlwZS5fbW92ZSA9IGZ1bmN0aW9uKCkKK3sK
KyAgICB0aGlzLmVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZSgiICsgdGhpcy5f
cG9zaXRpb24ueCArICJweCwiICsgdGhpcy5fcG9zaXRpb24ueSArICJweCkiICsgdGhpcy5fcm90
YXRlci5yb3RhdGVaKCk7Cit9CisgICAgCitCb3VuY2luZ0Nzc1NoYXBlLnByb3RvdHlwZS5hbmlt
YXRlID0gZnVuY3Rpb24odGltZURlbHRhKQoreworICAgIEJvdW5jaW5nUGFydGljbGUucHJvdG90
eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEpOworICAgIHRoaXMuX3JvdGF0ZXIubmV4
dCh0aW1lRGVsdGEpOyAgICAKKyAgICB0aGlzLl9tb3ZlKCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5j
aW5nQ3NzU2hhcGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBCb3VuY2luZ1BhcnRp
Y2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5wYXJzZVNo
YXBlUGFyYW10ZXJzKG9wdGlvbnMpOworfQorCitCb3VuY2luZ0Nzc1NoYXBlc1N0YWdlLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOwor
Qm91bmNpbmdDc3NTaGFwZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0Nz
c1NoYXBlc1N0YWdlOworCitCb3VuY2luZ0Nzc1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQ
YXJ0aWNsZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ3NzU2hhcGUo
dGhpcyk7Cit9CisKK0JvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2ls
bEJlUmVtb3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xlKQoreworICAgIGlmIChwYXJ0aWNsZS5lbGVt
ZW50ICYmIHBhcnRpY2xlLmVsZW1lbnQucGFyZW50Tm9kZSAmJiBwYXJ0aWNsZS5lbGVtZW50LnBh
cmVudE5vZGUgPT0gdGhpcy5lbGVtZW50KQorICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hp
bGQocGFydGljbGUuZWxlbWVudCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ3NzU2hhcGVzQmVu
Y2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7
CisgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwg
b3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdDc3NTaGFw
ZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0Jl
bmNobWFyay5wcm90b3R5cGUpOworQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nQ3Nz
U2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQp
Cit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nzc1NoYXBlc1N0YWdlKGVsZW1lbnQsIHRoaXMu
X29wdGlvbnMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9u
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAg
d2luZG93LmJlbmNobWFyayA9IG5ldyBCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyayhzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2Vz
L2JvdW5jaW5nLXBhcnRpY2xlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0
aWNsZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxNjYgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nUGFydGljbGVS
b3RhdGVyKHJvdGF0ZUludGVydmFsKQoreworICAgIHRoaXMuX3RpbWVEZWx0YSA9IDA7CisgICAg
dGhpcy5fcm90YXRlSW50ZXJ2YWwgPSByb3RhdGVJbnRlcnZhbDsKK30KKworQm91bmNpbmdQYXJ0
aWNsZVJvdGF0ZXIucHJvdG90eXBlID0KK3sKKyAgICBuZXh0OiBmdW5jdGlvbih0aW1lRGVsdGEp
CisgICAgeworICAgICAgICB0aGlzLl90aW1lRGVsdGEgPSAodGhpcy5fdGltZURlbHRhICsgdGlt
ZURlbHRhKSAlIHRoaXMuX3JvdGF0ZUludGVydmFsOworICAgIH0sCisgICAgCisgICAgZGVncmVl
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gKDM2MCAqIHRoaXMuX3RpbWVEZWx0
YSkgLyB0aGlzLl9yb3RhdGVJbnRlcnZhbDsKKyAgICB9LAorICAgIAorICAgIHJvdGF0ZVo6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiAicm90YXRlWigiICsgTWF0aC5mbG9vcih0
aGlzLmRlZ3JlZSgpKSArICJkZWcpIjsKKyAgICB9LAorICAgIAorICAgIHJvdGF0ZTogZnVuY3Rp
b24oY2VudGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuICJyb3RhdGUoIiArIE1hdGguZmxvb3Io
dGhpcy5kZWdyZWUoKSkgKyAiLCAiICsgY2VudGVyLnggKyAiLCIgKyBjZW50ZXIueSArICIpIjsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nUGFydGljbGUoc3RhZ2UpCit7CisgICAgdGhp
cy5fc3RhZ2VTaXplID0gc3RhZ2Uuc2l6ZTsKKyAgICB0aGlzLl9zaXplID0gc3RhZ2UucGFydGlj
bGVTaXplOworICAgIAorICAgIHRoaXMuX3Bvc2l0aW9uID0gc3RhZ2UucmFuZG9tUG9zaXRpb24o
c3RhZ2Uuc2l6ZS5zdWJ0cmFjdChzdGFnZS5wYXJ0aWNsZVNpemUpKTsKKyAgICB0aGlzLl9hbmds
ZSA9IHN0YWdlLnJhbmRvbUFuZ2xlKCk7CisgICAgdGhpcy5fdmVsb2NpdHkgPSBzdGFnZS5yYW5k
b21WZWxvY2l0eShzdGFnZS5tYXhWZWxvY2l0eSk7CisgICAgdGhpcy5fcm90YXRlciA9IHN0YWdl
LnJhbmRvbVJvdGF0ZXIoKTsKK30KKworQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUgPQorewor
ICAgIGdldCBjZW50ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uLmFk
ZCh0aGlzLl9zaXplLmNlbnRlcik7CisgICAgfSwKKyAgICAKKyAgICBhbmltYXRlOiBmdW5jdGlv
bih0aW1lRGVsdGEpCisgICAgeworICAgICAgICB0aGlzLl9wb3NpdGlvbiA9IHRoaXMuX3Bvc2l0
aW9uLm1vdmUodGhpcy5fYW5nbGUsIHRoaXMuX3ZlbG9jaXR5LCB0aW1lRGVsdGEpOworICAgICAg
ICB0aGlzLl9yb3RhdGVyLm5leHQodGltZURlbHRhKTsKKworICAgICAgICAvLyBJZiBwYXJ0aWNs
ZSBpcyBnb2luZyB0byBtb3ZlIG9mZiByaWdodCBzaWRlCisgICAgICAgIGlmICh0aGlzLl9wb3Np
dGlvbi54ICsgdGhpcy5fc2l6ZS54ID4gdGhpcy5fc3RhZ2VTaXplLngpIHsKKyAgICAgICAgICAg
IC8vIElmIGRpcmVjdGlvbiBpcyBFYXN0LVNvdXRoCisgICAgICAgICAgICBpZiAodGhpcy5fYW5n
bGUgPj0gMCAmJiB0aGlzLl9hbmdsZSA8IE1hdGguUEkgLyAyKQorICAgICAgICAgICAgICAgIHRo
aXMuX2FuZ2xlID0gTWF0aC5QSSAtIHRoaXMuX2FuZ2xlOworICAgICAgICAgICAgLy8gSWYgYW5n
bGUgaXMgRWFzdC1Ob3J0aAorICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5fYW5nbGUgPiBNYXRo
LlBJIC8gMiAqIDMpCisgICAgICAgICAgICAgICAgdGhpcy5fYW5nbGUgPSB0aGlzLl9hbmdsZSAt
ICh0aGlzLl9hbmdsZSAtIE1hdGguUEkgLyAyICogMykgKiAyOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICAvLyBJZiBwYXJ0aWNsZSBpcyBnb2luZyB0byBtb3ZlIG9mZiBsZWZ0IHNpZGUK
KyAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uLnggPCAwKSB7CisgICAgICAgICAgICAvLyBJZiBh
bmdsZSBpcyBXZXN0LVNvdXRoCisgICAgICAgICAgICBpZiAodGhpcy5fYW5nbGUgPiBNYXRoLlBJ
IC8gMiAmJiB0aGlzLl9hbmdsZSA8IE1hdGguUEkpCisgICAgICAgICAgICAgICAgdGhpcy5fYW5n
bGUgPSBNYXRoLlBJIC0gdGhpcy5fYW5nbGU7CisgICAgICAgICAgICAvLyBJZiBhbmdsZSBpcyBX
ZXN0LU5vcnRoCisgICAgICAgICAgICBlbHNlIGlmICh0aGlzLl9hbmdsZSA+IE1hdGguUEkgJiYg
dGhpcy5fYW5nbGUgPCBNYXRoLlBJIC8gMiAqIDMpCisgICAgICAgICAgICAgICAgdGhpcy5fYW5n
bGUgPSB0aGlzLl9hbmdsZSArIChNYXRoLlBJIC8gMiAqIDMgLSB0aGlzLl9hbmdsZSkgKiAyOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYg
Ym90dG9tIHNpZGUKKyAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uLnkgKyB0aGlzLl9zaXplLnkg
PiB0aGlzLl9zdGFnZVNpemUueSkgeworICAgICAgICAgICAgLy8gSWYgZGlyZWN0aW9uIGlzIFNv
dXRoCisgICAgICAgICAgICBpZiAodGhpcy5fYW5nbGUgPiAwICYmIHRoaXMuX2FuZ2xlIDwgTWF0
aC5QSSkKKyAgICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IE1hdGguUEkgKiAyIC0gdGhpcy5f
YW5nbGU7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiBwYXJ0aWNsZSBpcyBnb2luZyB0byBt
b3ZlIG9mZiB0b3Agc2lkZQorICAgICAgICBpZiAodGhpcy5fcG9zaXRpb24ueSA8IDApIHsKKyAg
ICAgICAgICAgIC8vIElmIGRpcmVjdGlvbiBpcyBOb3J0aAorICAgICAgICAgICAgaWYgKHRoaXMu
X2FuZ2xlID4gTWF0aC5QSSAmJiB0aGlzLl9hbmdsZSA8IE1hdGguUEkgKiAyKQorICAgICAgICAg
ICAgICAgIHRoaXMuX2FuZ2xlID0gdGhpcy5fYW5nbGUgLSAodGhpcy5fYW5nbGUgLSBNYXRoLlBJ
KSAqIDI7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nUGFydGljbGVz
QW5pbWF0b3IoYmVuY2htYXJrKQoreworICAgIFN0YWdlQW5pbWF0b3IuY2FsbCh0aGlzLCBiZW5j
aG1hcmspOworfTsKKworQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKFN0YWdlQW5pbWF0b3IucHJvdG90eXBlKTsKK0JvdW5jaW5nUGFydGljbGVzQW5p
bWF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvcjsK
KworZnVuY3Rpb24gQm91bmNpbmdQYXJ0aWNsZXNTdGFnZShlbGVtZW50LCBvcHRpb25zKQorewor
ICAgIFN0YWdlLmNhbGwodGhpcywgZWxlbWVudCk7CisgICAgCisgICAgdGhpcy5wYXJ0aWNsZVNp
emUgPSBuZXcgUG9pbnQocGFyc2VJbnQob3B0aW9uc1sicGFydGljbGVXaWR0aCJdKSB8fCAxMCwg
cGFyc2VJbnQob3B0aW9uc1sicGFydGljbGVIZWlnaHQiXSkgfHwgMTApOworICAgIHRoaXMuX3Bh
cnRpY2xlcyA9IFtdOworCisgICAgdGhpcy5tYXhWZWxvY2l0eSA9IHBhcnNlSW50KG9wdGlvbnNb
Im1heFZlbG9jaXR5Il0pIHx8IDUwMDsKKyAgICB0aGlzLm1heFZlbG9jaXR5ID0gTWF0aC5tYXgo
dGhpcy5tYXhWZWxvY2l0eSwgMTAwKTsKK30KKworQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlLnByb3RvdHlwZSk7CitCb3VuY2luZ1BhcnRpY2xl
c1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nUGFydGljbGVzU3RhZ2U7CisK
K0JvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnBhcnNlU2hhcGVQYXJhbXRlcnMgPSBm
dW5jdGlvbihvcHRpb25zKQoreworICAgIHRoaXMuc2hhcGUgPSBvcHRpb25zWyJzaGFwZSJdIHx8
ICJjaXJjbGUiOworICAgIHRoaXMuZmlsbCA9IG9wdGlvbnNbImZpbGwiXSB8fCAic29saWQiOwor
ICAgIHRoaXMuY2xpcCA9IG9wdGlvbnNbImNsaXAiXSB8fCAiIjsKK30KKworQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZS5wcm90b3R5cGUucmFuZG9tUm90YXRlciA9IGZ1bmN0aW9uKCkKK3sKKyAgICBy
ZXR1cm4gbmV3IEJvdW5jaW5nUGFydGljbGVSb3RhdGVyKHRoaXMucmFuZG9tKDEwMDAsIDEwMDAw
KSk7Cit9CisgICAgCitCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5hbmltYXRlID0g
ZnVuY3Rpb24odGltZURlbHRhKQoreworICAgIHRoaXMuX3BhcnRpY2xlcy5mb3JFYWNoKGZ1bmN0
aW9uKHBhcnRpY2xlKSB7CisgICAgICAgIHBhcnRpY2xlLmFuaW1hdGUodGltZURlbHRhKTsKKyAg
ICB9KTsKK30KKyAgICAKK0JvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnR1bmUgPSBm
dW5jdGlvbihjb3VudCkKK3sKKyAgICBjb3VudCA9IGNvdW50ID4gMCA/IE1hdGguZmxvb3IoY291
bnQpIDogTWF0aC5jZWlsKGNvdW50KTsKKworICAgIGlmIChjb3VudCA9PSAwKQorICAgICAgICBy
ZXR1cm4gdGhpcy5fcGFydGljbGVzLmxlbmd0aDsKKworICAgIGlmIChjb3VudCA+IDApIHsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mKHRoaXMuY3JlYXRlUGFydGljbGUpID09ICJmdW5j
dGlvbiIpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAg
ICAgICB0aGlzLl9wYXJ0aWNsZXMucHVzaCh0aGlzLmNyZWF0ZVBhcnRpY2xlKCkpOworICAgICAg
ICByZXR1cm4gdGhpcy5fcGFydGljbGVzLmxlbmd0aDsKKyAgICB9CisKKyAgICBjb3VudCA9IE1h
dGgubWluKC1jb3VudCwgdGhpcy5fcGFydGljbGVzLmxlbmd0aCk7CisgICAgICAgIAorICAgIGlm
ICh0eXBlb2YodGhpcy5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpID09ICJmdW5jdGlvbiIpIHsKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgdGhpcy5w
YXJ0aWNsZVdpbGxCZVJlbW92ZWQodGhpcy5fcGFydGljbGVzW3RoaXMuX3BhcnRpY2xlcy5sZW5n
dGggLSAxIC0gaV0pOworICAgIH0KKworICAgIHRoaXMuX3BhcnRpY2xlcy5zcGxpY2UoLWNvdW50
LCBjb3VudCk7CisgICAgcmV0dXJuIHRoaXMuX3BhcnRpY2xlcy5sZW5ndGg7Cit9CisKK2Z1bmN0
aW9uIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBz
dWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91
bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJl
bmNobWFyay5wcm90b3R5cGUpOworQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nUGFy
dGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvciA9IGZ1bmN0aW9uKCkKK3sK
KyAgICByZXR1cm4gbmV3IEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IodGhpcyk7Cit9ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzCShyZXZpc2lvbiAw
KQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ1IEBACitmdW5jdGlvbiBCb3VuY2luZ1N2Z0ltYWdlKHN0YWdlKQoreworICAgIEJvdW5j
aW5nU3ZnUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CisgICAgdGhpcy5fc2hhcGUgPSAiaW1h
Z2UiOworICAgIAorICAgIHZhciBhdHRycyA9IHsgJ3gnOiAwLCAneSc6IDAsICd3aWR0aCc6IHRo
aXMuX3NpemUueCwgJ2hlaWdodCc6IHRoaXMuX3NpemUueSB9OworICAgIHZhciB4bGlua0F0dHJz
ID0geyAnaHJlZic6IHN0YWdlLmltYWdlU3JjIH07CisgICAgdGhpcy5lbGVtZW50ICA9IHdpbmRv
dy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlU3ZnRWxlbWVudCgiaW1hZ2UiLCBhdHRycywgeGxpbmtB
dHRycywgc3RhZ2UuZWxlbWVudCk7CisgICAgdGhpcy5fbW92ZSgpOworfQorCitCb3VuY2luZ1N2
Z0ltYWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90
b3R5cGUpOworQm91bmNpbmdTdmdJbWFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2lu
Z1N2Z0ltYWdlOworCitmdW5jdGlvbiBCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlKGVsZW1lbnQsIG9w
dGlvbnMpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQs
IG9wdGlvbnMpOworICAgIHRoaXMuaW1hZ2VTcmMgPSBvcHRpb25zWyJpbWFnZVNyYyJdIHx8ICJy
ZXNvdXJjZXMveWluLXlhbmcuc3ZnIjsKK30KKworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBl
KTsKK0JvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNp
bmdTdmdJbWFnZXNTdGFnZTsKKworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3Jl
YXRlUGFydGljbGUgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z0lt
YWdlKHRoaXMpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyayhzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIEJvdW5j
aW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJl
Y29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJr
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJv
dG90eXBlKTsKK0JvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciA9IEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrOworCitCb3VuY2luZ1N2Z0ltYWdlc0JlbmNo
bWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQoreworICAgIHJl
dHVybiBuZXcgQm91bmNpbmdTdmdJbWFnZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsK
K30KKword2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIHdpbmRvdy5iZW5j
aG1hcmsgPSBuZXcgQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1z
dmctcGFydGljbGVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1wYXJ0aWNs
ZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctcGFydGljbGVzLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzAgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnUGFydGlj
bGUoc3RhZ2UpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKK30K
KworQm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5n
UGFydGljbGUucHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0gQm91bmNpbmdQYXJ0aWNsZTsKKworQm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5
cGUuX2FwcGx5Q2xpcHBpbmcgPSBmdW5jdGlvbihzdGFnZSkKK3sKKyAgICBpZiAoc3RhZ2UuY2xp
cCAhPSAic3RhciIpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgc3RhZ2UuZW5zdXJl
Q2xpcFN0YXJJc0NyZWF0ZWQoKTsKKyAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJjbGlw
LXBhdGgiLCAidXJsKCNzdGFyLWNsaXApIik7Cit9CisKK0JvdW5jaW5nU3ZnUGFydGljbGUucHJv
dG90eXBlLl9tb3ZlID0gZnVuY3Rpb24oKQoreworICAgIHZhciB0cmFuc2Zvcm0gPSAidHJhbnNs
YXRlKCIgKyB0aGlzLl9wb3NpdGlvbi54ICsgIiwgIiArIHRoaXMuX3Bvc2l0aW9uLnkgKyAiKSI7
CisgICAgaWYgKHRoaXMuX3NoYXBlICE9ICJjaXJjbGUiKQorICAgICAgICB0cmFuc2Zvcm0gKz0g
dGhpcy5fcm90YXRlci5yb3RhdGUodGhpcy5fc2l6ZS5jZW50ZXIpOworICAgIHRoaXMuZWxlbWVu
dC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsIHRyYW5zZm9ybSk7Cit9CisKK0JvdW5jaW5nU3Zn
UGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCit7CisgICAg
Qm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7
CisgICAgdGhpcy5fbW92ZSgpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0
YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxs
KHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworfQorCitCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdl
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5
cGUpOworQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBC
b3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlOworCitCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnBy
b3RvdHlwZS5fY3JlYXRlRGVmcyA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gd2luZG93LmJl
bmNobWFya0NsaWVudC5jcmVhdGVTdmdFbGVtZW50KCJkZWZzIiwge30sIHt9LCB0aGlzLmVsZW1l
bnQpOworfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCitCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5fZW5z
dXJlRGVmc0lzQ3JlYXRlZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gdGhpcy5lbGVtZW50
LnF1ZXJ5U2VsZWN0b3IoImRlZnMiKSB8fCB0aGlzLl9jcmVhdGVEZWZzKCk7Cit9CisKK0JvdW5j
aW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLl9jcmVhdGVDbGlwU3RhciA9IGZ1bmN0aW9u
KCkKK3sKKyAgICB2YXIgYXR0cnMgPSB7ICdpZCc6ICJzdGFyLWNsaXAiLCAnY2xpcFBhdGhVbml0
cyc6ICJvYmplY3RCb3VuZGluZ0JveCIgfTsKKyAgICB2YXIgY2xpcFBhdGggID0gd2luZG93LmJl
bmNobWFya0NsaWVudC5jcmVhdGVTdmdFbGVtZW50KCJjbGlwUGF0aCIsIGF0dHJzLCB7fSwgdGhp
cy5fZW5zdXJlRGVmc0lzQ3JlYXRlZCgpKTsKKworICAgIGF0dHJzID0geyAnZCc6ICJNLjUwLDBM
LjM4LC4zOEwwLC4zOEwuMzAsLjYwTC4xOCwxTC41MCwuNzVMLjgyLDFMLjcwLC42MEwxLC4zOEwu
NjIsLjM4eiIgfTsKKyAgICB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZVN2Z0VsZW1lbnQo
InBhdGgiLCBhdHRycywge30sIGNsaXBQYXRoKTsKKworICAgIHJldHVybiBjbGlwUGF0aDsKK30K
KworQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuZW5zdXJlQ2xpcFN0YXJJc0Ny
ZWF0ZWQgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5xdWVyeVNlbGVj
dG9yKCIjc3Rhci1jbGlwIikgfHwgdGhpcy5fY3JlYXRlQ2xpcFN0YXIoKTsKK30KKworQm91bmNp
bmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkID0gZnVu
Y3Rpb24ocGFydGljbGUpCit7CisgICAgaWYgKHBhcnRpY2xlLmVsZW1lbnQgJiYgcGFydGljbGUu
ZWxlbWVudC5wYXJlbnROb2RlICYmIHBhcnRpY2xlLmVsZW1lbnQucGFyZW50Tm9kZSA9PSB0aGlz
LmVsZW1lbnQpCisgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZChwYXJ0aWNsZS5lbGVt
ZW50KTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9y
ZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLXN2Zy1zaGFwZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQgQEAKK2Z1
bmN0aW9uIEJvdW5jaW5nU3ZnU2hhcGUoc3RhZ2UpCit7CisgICAgQm91bmNpbmdTdmdQYXJ0aWNs
ZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9zaGFwZSA9IHN0YWdlLnNoYXBlOworICAg
IHRoaXMuX2ZpbGwgPSBzdGFnZS5maWxsOworICAgIAorICAgIHRoaXMuX2NyZWF0ZVNoYXBlKHN0
YWdlKTsKKyAgICB0aGlzLl9hcHBseUNsaXBwaW5nKHN0YWdlKTsKKyAgICB0aGlzLl9hcHBseUZp
bGwoc3RhZ2UpOworCisgICAgdGhpcy5fbW92ZSgpOyAgICAKK30KKworQm91bmNpbmdTdmdTaGFw
ZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBl
KTsKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdT
aGFwZTsKKworQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVNoYXBlID0gZnVuY3Rp
b24oc3RhZ2UpCit7CisgICAgc3dpdGNoICh0aGlzLl9zaGFwZSkgeworICAgIGNhc2UgInJlY3Qi
OgorICAgICAgICB2YXIgYXR0cnMgPSB7ICd4JzogMCwgJ3knOiAwLCAnd2lkdGgnOiB0aGlzLl9z
aXplLngsICdoZWlnaHQnOiB0aGlzLl9zaXplLnkgfTsKKyAgICAgICAgdGhpcy5lbGVtZW50ID0g
d2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGVTdmdFbGVtZW50KCJyZWN0IiwgYXR0cnMsIHt9
LCBzdGFnZS5lbGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgCisgICAgY2FzZSAiY2lyY2xl
IjoKKyAgICBkZWZhdWx0OgorICAgICAgICB2YXIgYXR0cnMgPSB7ICdjeCc6IHRoaXMuX3NpemUu
eCAvIDIsICdjeSc6IHRoaXMuX3NpemUueSAvIDIsICdyJzogTWF0aC5taW4odGhpcy5fc2l6ZS54
LCB0aGlzLl9zaXplLnkpIC8gMiB9OworICAgICAgICB0aGlzLmVsZW1lbnQgPSB3aW5kb3cuYmVu
Y2htYXJrQ2xpZW50LmNyZWF0ZVN2Z0VsZW1lbnQoImNpcmNsZSIsIGF0dHJzLCB7fSwgc3RhZ2Uu
ZWxlbWVudCk7CisgICAgICAgIGJyZWFrOyAgICAgICAgCisgICAgfQorfQorCitCb3VuY2luZ1N2
Z1NoYXBlLnByb3RvdHlwZS5fYXBwbHlGaWxsID0gZnVuY3Rpb24oc3RhZ2UpCit7CisgICAgc3dp
dGNoICh0aGlzLl9maWxsKSB7CisgICAgY2FzZSAiZ3JhZGllbnQiOgorICAgICAgICB2YXIgZ3Jh
ZGllbnQgPSBzdGFnZS5jcmVhdGVHcmFkaWVudCgyKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LnNl
dEF0dHJpYnV0ZSgiZmlsbCIsICJ1cmwoIyIgKyBncmFkaWVudC5nZXRBdHRyaWJ1dGUoImlkIikg
KyAiKSIpOworICAgICAgICBicmVhazsKKyAgICAKKyAgICBjYXNlICJzb2xpZCI6CisgICAgZGVm
YXVsdDoKKyAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiZmlsbCIsIHN0YWdlLnJh
bmRvbUNvbG9yKCkpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEJvdW5j
aW5nU3ZnU2hhcGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBCb3VuY2luZ1N2Z1Bh
cnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5wYXJz
ZVNoYXBlUGFyYW10ZXJzKG9wdGlvbnMpOworICAgIHRoaXMuX2dyYWRpZW50c0NvdW50ID0gMDsK
K30KKworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJv
dW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnU2hhcGVzU3Rh
Z2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdTaGFwZXNTdGFnZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAorQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlR3JhZGllbnQgPSBmdW5j
dGlvbihzdG9wcykKK3sKKyAgICB2YXIgYXR0cnMgPSB7ICdpZCc6ICJnYWRpZW50LSIgKyArK3Ro
aXMuX2dyYWRpZW50c0NvdW50IH07CisgICAgdmFyIGdyYWRpZW50ICA9IHdpbmRvdy5iZW5jaG1h
cmtDbGllbnQuY3JlYXRlU3ZnRWxlbWVudCgibGluZWFyR3JhZGllbnQiLCBhdHRycywge30sIHRo
aXMuX2Vuc3VyZURlZnNJc0NyZWF0ZWQoKSk7ICAgIAorICAgIAorICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgc3RvcHM7ICsraSkgeworICAgICAgICB2YXIgYXR0cnMgPSB7ICdvZmZzZXQnOiBpICog
MTAwIC8gc3RvcHMgKyAiJSIsICdzdG9wLWNvbG9yJzogdGhpcy5yYW5kb21Db2xvcigpIH07Cisg
ICAgICAgIHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlU3ZnRWxlbWVudCgic3RvcCIsIGF0
dHJzLCB7fSwgZ3JhZGllbnQpOworICAgIH0KKworICAgIHJldHVybiBncmFkaWVudDsKK30KKwor
Qm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlv
bigpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBlKHRoaXMpOworfQorCitCb3Vu
Y2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQgPSBmdW5j
dGlvbihwYXJ0aWNsZSkKK3sKKyAgICBCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlw
ZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQuY2FsbCh0aGlzLCBwYXJ0aWNsZSk7CisKKyAgICB2YXIg
ZmlsbCA9IHBhcnRpY2xlLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCJmaWxsIik7CisgICAgaWYgKGZp
bGwuaW5kZXhPZigidXJsKCMiKSAhPSAwKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAg
IHZhciBncmFkaWVudCA9IHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKGZpbGwuc3Vic3RyaW5n
KDQsIGZpbGwubGVuZ3RoIC0gMSkpOworICAgIHRoaXMuX2Vuc3VyZURlZnNJc0NyZWF0ZWQoKS5y
ZW1vdmVDaGlsZChncmFkaWVudCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnU2hhcGVzQmVu
Y2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7
CisgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwg
b3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdTdmdTaGFw
ZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0Jl
bmNobWFyay5wcm90b3R5cGUpOworQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nU3Zn
U2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQp
Cit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlKGVsZW1lbnQsIHRoaXMu
X29wdGlvbnMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9u
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAg
d2luZG93LmJlbmNobWFyayA9IG5ldyBCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyayhzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvYmVuY2htYXJrLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvYmVu
Y2htYXJrLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL3Jlc291cmNlcy9iZW5jaG1hcmsuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMjMg
QEAKK2Z1bmN0aW9uIEJlbmNobWFya1N0YXRlKHRlc3RJbnRlcnZhbCkKK3sKKyAgICB0aGlzLl9j
dXJyZW50VGltZU9mZnNldCA9IDA7CisgICAgdGhpcy5fc3RhZ2VJbnRlcnZhbCA9IHRlc3RJbnRl
cnZhbCAvIEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRDsKK30KKworQmVuY2htYXJrU3Rh
dGUuc3RhZ2VzID0KK3sKKyAgICBXQVJNSU5HX1VQOiAwLAorICAgIFNBTVBMSU5HOiAxLAorICAg
IEZJTklTSEVEOiAyLAorICAgIG1lc3NhZ2VzOiBbICJXYXJtaW5nIHVwIiwgIlNhbXBsaW5nIiwg
IkZpbmlzaGVkIiBdCit9OworCitCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUgPQoreworICAgIF90
aW1lT2Zmc2V0OiBmdW5jdGlvbihzdGFnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGFnZSAq
IHRoaXMuX3N0YWdlSW50ZXJ2YWw7CisgICAgfSwKKyAgICAKKyAgICBfbWVzc2FnZTogZnVuY3Rp
b24oc3RhZ2UsIHRpbWVPZmZzZXQpCisgICAgeworICAgICAgICBpZiAoc3RhZ2UgPT0gQmVuY2ht
YXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEKQorICAgICAgICAgICAgcmV0dXJuIEJlbmNobWFya1N0
YXRlLnN0YWdlcy5tZXNzYWdlc1tzdGFnZV07CisKKyAgICAgICAgcmV0dXJuIEJlbmNobWFya1N0
YXRlLnN0YWdlcy5tZXNzYWdlc1tzdGFnZV0gKyAiLi4uICgiCisgICAgICAgICAgICArIE1hdGgu
Zmxvb3IoKHRpbWVPZmZzZXQgLSB0aGlzLl90aW1lT2Zmc2V0KHN0YWdlKSkgLyAxMDAwKSArICIv
IgorICAgICAgICAgICAgKyBNYXRoLmZsb29yKCh0aGlzLl90aW1lT2Zmc2V0KHN0YWdlICsgMSkg
LSB0aGlzLl90aW1lT2Zmc2V0KHN0YWdlKSkgLyAxMDAwKSArICIpIjsKKyAgICB9LAorICAgIAor
ICAgIHVwZGF0ZTogZnVuY3Rpb24oY3VycmVudFRpbWVPZmZzZXQpCisgICAgeworICAgICAgICB0
aGlzLl9jdXJyZW50VGltZU9mZnNldCA9IGN1cnJlbnRUaW1lT2Zmc2V0OworICAgIH0sCisgICAg
CisgICAgc2FtcGxpbmdUaW1lT2Zmc2V0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fdGltZU9mZnNldChCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuU0FNUExJTkcpOworICAg
IH0sCisgICAgCisgICAgY3VycmVudFN0YWdlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBm
b3IgKHZhciBzdGFnZSA9IEJlbmNobWFya1N0YXRlLnN0YWdlcy5XQVJNSU5HX1VQOyBzdGFnZSA8
IEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRDsgKytzdGFnZSkgeworICAgICAgICAgICAg
aWYgKHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IDwgdGhpcy5fdGltZU9mZnNldChzdGFnZSArIDEp
KQorICAgICAgICAgICAgICAgIHJldHVybiBzdGFnZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEOworICAgIH0sCisgICAgCisgICAgY3Vy
cmVudE1lc3NhZ2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9tZXNz
YWdlKHRoaXMuY3VycmVudFN0YWdlKCksIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0KTsKKyAgICB9
LAorICAgIAorICAgIGN1cnJlbnRQcm9ncmVzczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IC8gdGhpcy5fdGltZU9mZnNldChCZW5jaG1h
cmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQpOworICAgIH0KK30KKworZnVuY3Rpb24gQW5pbWF0b3Io
YmVuY2htYXJrKQoreworICAgIHRoaXMuX2JlbmNobWFyayA9IGJlbmNobWFyazsKKyAgICB0aGlz
Ll9mcmFtZUNvdW50ID0gMDsKKyAgICB0aGlzLl9kcm9wRnJhbWVDb3VudCA9IDE7CisgICAgdGhp
cy5fbWVhc3VyZUZyYW1lQ291bnQgPSAzOyAKKyAgICB0aGlzLl9yZWZlcmVuY2VUaW1lID0gMDsK
KyAgICB0aGlzLl9jdXJyZW50VGltZU9mZnNldCA9IDA7CisgICAgdGhpcy5fZXN0aW1hdG9yID0g
bmV3IEthbG1hbkVzdGltYXRvcigpOworfQorCitBbmltYXRvci5wcm90b3R5cGUgPQoreworICAg
IHN0YXJ0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9pbnRlcnZhbElkID0gc2V0
SW50ZXJ2YWwodGhpcy5hbmltYXRlLmJpbmQodGhpcyksIDEpOworICAgIH0sCisgICAgCisgICAg
dGltZURlbHRhOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVu
dFRpbWVPZmZzZXQgLSB0aGlzLl9zdGFydFRpbWVPZmZzZXQ7CisgICAgfSwKKyAgICAKKyAgICBh
bmltYXRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgY3VycmVudFRpbWUgPSBwZXJm
b3JtYW5jZS5ub3coKTsKKyAgICAgICAgCisgICAgICAgIGlmICghdGhpcy5fcmVmZXJlbmNlVGlt
ZSkKKyAgICAgICAgICAgIHRoaXMuX3JlZmVyZW5jZVRpbWUgPSBjdXJyZW50VGltZTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgPSBjdXJyZW50VGlt
ZSAtIHRoaXMuX3JlZmVyZW5jZVRpbWU7CisKKyAgICAgICAgaWYgKCF0aGlzLl9mcmFtZUNvdW50
KQorICAgICAgICAgICAgdGhpcy5fc3RhcnRUaW1lT2Zmc2V0ID0gdGhpcy5fY3VycmVudFRpbWVP
ZmZzZXQ7CisKKyAgICAgICAgLy8gU3RhcnQgbWVhc3VyaW5nIGFmdGVyIGRyb3BwaW5nIF9kcm9w
RnJhbWVDb3VudCBmcmFtZXMuCisgICAgICAgIGlmICh0aGlzLl9mcmFtZUNvdW50ID09IHRoaXMu
X2Ryb3BGcmFtZUNvdW50KQorICAgICAgICAgICAgdGhpcy5fbWVhc3VyZVRpbWVPZmZzZXQgPSB0
aGlzLl9jdXJyZW50VGltZU9mZnNldDsKKworICAgICAgICArK3RoaXMuX2ZyYW1lQ291bnQ7CisK
KyAgICAgICAgLy8gRHJvcCBfZHJvcEZyYW1lQ291bnQgZnJhbWVzIGFuZCBtZWFzdXJlIHRoZSBh
dmVyYWdlIG9mIF9tZWFzdXJlRnJhbWVDb3VudCBmcmFtZXMuCisgICAgICAgIGlmICh0aGlzLl9m
cmFtZUNvdW50IDwgdGhpcy5fZHJvcEZyYW1lQ291bnQgKyB0aGlzLl9tZWFzdXJlRnJhbWVDb3Vu
dCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIC8vIEdldCB0aGUgYXZlcmFn
ZSBGUFMgb2YgX21lYXN1cmVGcmFtZUNvdW50IGZyYW1lcyBvdmVyIG1lYXN1cmVUaW1lRGVsdGEu
CisgICAgICAgIHZhciBtZWFzdXJlVGltZURlbHRhID0gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQg
LSB0aGlzLl9tZWFzdXJlVGltZU9mZnNldDsKKyAgICAgICAgdmFyIGN1cnJlbnRGcmFtZVJhdGUg
PSBNYXRoLmZsb29yKDEwMDAgLyAobWVhc3VyZVRpbWVEZWx0YSAvIHRoaXMuX21lYXN1cmVGcmFt
ZUNvdW50KSk7CisgICAgICAgICAKKyAgICAgICAgLy8gVXNlIEthbG1hbiBmaWx0ZXIgdG8gZ2V0
IGEgbW9yZSBub24tZmx1Y3R1YXRpbmcgZnJhbWUgcmF0ZS4KKyAgICAgICAgaWYgKHRoaXMuX2Jl
bmNobWFyay5vcHRpb25zLmVzdGltYXRlZEZyYW1lUmF0ZSkKKyAgICAgICAgICAgIGN1cnJlbnRG
cmFtZVJhdGUgPSB0aGlzLl9lc3RpbWF0b3IuZXN0aW1hdGUobWVhc3VyZVRpbWVEZWx0YSwgY3Vy
cmVudEZyYW1lUmF0ZSk7CisgICAgICAgIAorICAgICAgICAvLyBBZGp1c3QgdGhlIHRlc3QgdG8g
cmVhY2ggdGhlIGRlc2lyZWQgRlBTLgorICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fYmVuY2ht
YXJrLnVwZGF0ZSh0aGlzLl9jdXJyZW50VGltZU9mZnNldCwgdGhpcy50aW1lRGVsdGEoKSwgY3Vy
cmVudEZyYW1lUmF0ZSk7CisgICAgICAgIAorICAgICAgICAvLyBTdG9wIHRoZSBhbmltYXRvciBp
ZiB0aGUgYmVuY2htYXJrIGhhcyBmaW5pc2hlZC4KKyAgICAgICAgaWYgKCFyZXN1bHQgJiYgdHlw
ZW9mIHRoaXMuX2ludGVydmFsSWQgIT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICBjbGVhcklu
dGVydmFsKHRoaXMuX2ludGVydmFsSWQpOworCisgICAgICAgIC8vIFN0YXJ0IHRoZSBuZXh0IGRy
b3AvbWVhc3VyZSBjeWNsZS4KKyAgICAgICAgdGhpcy5fZnJhbWVDb3VudCA9IDA7CisgICAgICAg
IAorICAgICAgICAvLyByZXN1bHQgbWF5IHN0b3AgdGhlIGFuaW1hdG9yIGlmIHJlcXVlc3RBbmlt
YXRpb25GcmFtZSgpIGhhcyBiZWVuIHVzZWQuCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fSwKKyAgICAKKyAgICBhbmltYXRlTG9vcDogZnVuY3Rpb24odGltZXN0YW1wKQorICAgIHsKKyAg
ICAgICAgaWYgKHRoaXMuYW5pbWF0ZSgpKQorICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZy
YW1lKHRoaXMuYW5pbWF0ZUxvb3AuYmluZCh0aGlzKSk7CisgICAgfQorfQorCitmdW5jdGlvbiBC
ZW5jaG1hcmsob3B0aW9ucykKK3sKKyAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9uczsKKyAgICB0
aGlzLl9tZXRob2QgPSB0aGlzLl9vcHRpb25zWyJtZXRob2QiXSB8fCAicmVxdWVzdEFuaW1hdGlv
bkZyYW1lIjsKKworICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7CisgICAgdGhpcy5fcmVjb3Jk
SW50ZXJ2YWwgPSAyMDA7ICAgIAorICAgIHRoaXMuX2lzU2FtcGxpbmcgPSBmYWxzZTsKKworICAg
IHZhciBnYWluID0gcGFyc2VJbnQodGhpcy5fb3B0aW9uc1siZ2FpbiJdKSB8fCAxOworICAgIHZh
ciBsb3dWYWx1ZSA9IC1wYXJzZUludCh0aGlzLl9vcHRpb25zWyJhZGRMaW1pdCJdKSB8fCAxOwor
ICAgIHZhciBoaWdoVmFsdWUgPSBwYXJzZUludCh0aGlzLl9vcHRpb25zWyJyZW1vdmVMaW1pdCJd
KSB8fCAxOworICAgIAorICAgIHRoaXMuX2NvbnRyb2xsZXIgPSBuZXcgUElEQ29udHJvbGxlcihn
YWluLCBvcHRpb25zLmZyYW1lUmF0ZSwgbG93VmFsdWUsIGhpZ2hWYWx1ZSk7CisgICAgdGhpcy5f
c2FtcGxlciA9IG5ldyBTYW1wbGVyKDIpOworICAgIHRoaXMuX3N0YXRlID0gbmV3IEJlbmNobWFy
a1N0YXRlKHRoaXMub3B0aW9ucy50ZXN0SW50ZXJ2YWwpOyAgICAKK30KKworQmVuY2htYXJrLnBy
b3RvdHlwZSA9Cit7CisgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGxvYWQgZXZlbnQgbGlzdGVuZXIg
b3IgZnJvbSB0aGlzLnJ1bigpLgorICAgIHN0YXJ0OiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICBpZiAodGhpcy5fbWV0aG9kID09ICJzZXRJbnRlcnZhbCIpCisgICAgICAgICAgICB0aGlzLl9h
bmltYXRvci5zdGFydCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9hbmltYXRv
ci5hbmltYXRlTG9vcCgpOworICAgIH0sCisgICAgCisgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGFu
aW1hdG9yIHRvIGFkanVzdCB0aGUgY29tcGxleGl0eSBvZiB0aGUgdGVzdC4KKyAgICB1cGRhdGU6
IGZ1bmN0aW9uKGN1cnJlbnRUaW1lT2Zmc2V0LCB0aW1lRGVsdGEsIGN1cnJlbnRGcmFtZVJhdGUp
CisgICAgeworICAgICAgICB0aGlzLl9zdGF0ZS51cGRhdGUoY3VycmVudFRpbWVPZmZzZXQpOwor
ICAgICAgICAKKyAgICAgICAgdmFyIHN0YWdlID0gdGhpcy5fc3RhdGUuY3VycmVudFN0YWdlKCk7
CisgICAgICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQpIHsK
KyAgICAgICAgICAgIHRoaXMuY2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuU0FN
UExJTkcgJiYgIXRoaXMuX2lzU2FtcGxpbmcpIHsKKyAgICAgICAgICAgIHRoaXMuX3NhbXBsZXIu
c3RhcnRTYW1wbGluZyh0aGlzLl9zdGF0ZS5zYW1wbGluZ1RpbWVPZmZzZXQoKSk7CisgICAgICAg
ICAgICB0aGlzLl9pc1NhbXBsaW5nID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0
dW5lVmFsdWUgPSAwOworICAgICAgICBpZiAoISh0aGlzLl9pc1NhbXBsaW5nICYmIHRoaXMub3B0
aW9ucy5maXhUZXN0Q29tcGxleGl0eSkpIHsKKyAgICAgICAgICAgIC8vIFRoZSByZWxhdGlvbnNo
aXAgYmV0d2VlbiBmcmFtZVJhdGUgYW5kIHRlc3QgY29tcGxleGl0eSBpcyBpbnZlcnNlLXByb3Bv
cnRpb25hbCBzbyB3ZQorICAgICAgICAgICAgLy8gbmVlZCB0byB1c2UgdGhlIG5lZ2F0aXZlIG9m
IFBJRENvbnRyb2xsZXIudHVuZSgpIHRvIGNoYW5nZSB0aGUgY29tcGxleGl0eSBvZiB0aGUgdGVz
dC4KKyAgICAgICAgICAgIHR1bmVWYWx1ZSA9IC10aGlzLl9jb250cm9sbGVyLnR1bmUoY3VycmVu
dEZyYW1lUmF0ZSwgdGltZURlbHRhIC8gMTAwMCk7CisgICAgICAgIH0KKworICAgICAgICB2YXIg
Y3VycmVudENvbXBsZXhpdHkgPSB0aGlzLnR1bmUodHVuZVZhbHVlKTsKKyAgICAgICAgdGhpcy5y
ZWNvcmQoY3VycmVudFRpbWVPZmZzZXQsIGN1cnJlbnRDb21wbGV4aXR5LCBjdXJyZW50RnJhbWVS
YXRlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKyAgICAKKyAgICByZWNvcmQ6IGZ1
bmN0aW9uKGN1cnJlbnRUaW1lT2Zmc2V0LCBjdXJyZW50Q29tcGxleGl0eSwgY3VycmVudEZyYW1l
UmF0ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3NhbXBsZXIuc2FtcGxlKGN1cnJlbnRUaW1lT2Zm
c2V0LCBbY3VycmVudENvbXBsZXhpdHksIGN1cnJlbnRGcmFtZVJhdGVdKTsKKyAgICAgICAgCisg
ICAgICAgIGlmICh0eXBlb2YgdGhpcy5fcmVjb3JkVGltZU9mZnNldCA9PSAidW5kZWZpbmVkIikK
KyAgICAgICAgICAgIHRoaXMuX3JlY29yZFRpbWVPZmZzZXQgPSBjdXJyZW50VGltZU9mZnNldDsK
KworICAgICAgICB2YXIgc3RhZ2UgPSB0aGlzLl9zdGF0ZS5jdXJyZW50U3RhZ2UoKTsKKyAgICAg
ICAgaWYgKHN0YWdlICE9IEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRCAmJiBjdXJyZW50
VGltZU9mZnNldCA8IHRoaXMuX3JlY29yZFRpbWVPZmZzZXQgKyB0aGlzLl9yZWNvcmRJbnRlcnZh
bCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLnNob3dSZXN1bHRzKHRoaXMu
X3N0YXRlLmN1cnJlbnRNZXNzYWdlKCksIHRoaXMuX3N0YXRlLmN1cnJlbnRQcm9ncmVzcygpKTsK
KyAgICAgICAgdGhpcy5fcmVjb3JkVGltZU9mZnNldCA9IGN1cnJlbnRUaW1lT2Zmc2V0OworICAg
IH0sCisgICAgCisgICAgcnVuOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLnN0YXJ0
KCk7CisKKyAgICAgICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICAgICAg
dmFyIHNlbGYgPSB0aGlzOworICAgICAgICBmdW5jdGlvbiByZXNvbHZlV2hlbkZpbmlzaGVkKCkg
eworICAgICAgICAgICAgaWYgKHR5cGVvZiBzZWxmLl9zdGF0ZSAhPSAidW5kZWZpbmVkIiAmJiAo
c2VsZi5fc3RhdGUuY3VycmVudFN0YWdlKCkgPT0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklT
SEVEKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZS5yZXNvbHZlKHNlbGYuX3NhbXBs
ZXIpOworICAgICAgICAgICAgc2V0VGltZW91dChyZXNvbHZlV2hlbkZpbmlzaGVkLmJpbmQoc2Vs
ZiksIDUwKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmVzb2x2ZVdoZW5GaW5pc2hl
ZCgpOworICAgICAgICByZXR1cm4gcHJvbWlzZTsKKyAgICB9Cit9CkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzCShyZXZp
c2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9t
YXRoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjc0IEBACit2YXIgTWF0cml4ID0KK3sK
KyAgICBpbml0OiBmdW5jdGlvbihtLCBuLCB2KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5
KG0gKiBuKS5maWxsKHYpOworICAgIH0sCisgICAgCisgICAgemVyb3M6IGZ1bmN0aW9uKG0sIG4p
CisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LmluaXQobSwgbiwgMCk7CisgICAgfSwKKyAg
ICAKKyAgICBvbmVzOiBmdW5jdGlvbihtLCBuKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJp
eC5pbml0KG0sIG4sIDEpOworICAgIH0sCisgICAgCisgICAgaWRlbnRpdHk6IGZ1bmN0aW9uKG4p
CisgICAgeworICAgICAgICB2YXIgb3V0ID0gbmV3IE1hdHJpeC56ZXJvcyhuLCBuKTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpCisgICAgICAgICAgICBvdXRbaSAqIG4gKyBp
XSA9IDE7CisgICAgICAgIHJldHVybiBvdXQ7CisgICAgfSwKKyAgICAKKyAgICBzdHI6IGZ1bmN0
aW9uKEEsIG4sIG0pCisgICAgeworICAgICAgICB2YXIgb3V0ID0gKG0gPiAxICYmIG4gPiAxID8g
Ik1hdHJpeFsiICsgbiArICIsICIgKyBtIDogIlZlY3RvclsiICsgbSAqIG4pICsgIl0gPSBbIjsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuICogbTsgKytpKSB7CisgICAgICAgICAgICBv
dXQgKz0gQVtpXTsKKyAgICAgICAgICAgIGlmIChpIDwgbiAqIG0gLSAxKQorICAgICAgICAgICAg
ICAgIG91dCArPSAiLCAiOworICAgICAgICB9ICAgICAgIAorICAgICAgICByZXR1cm4gb3V0ICsg
Il0iOworICAgIH0sCisgICAgCisgICAgcG9zOiBmdW5jdGlvbihtLCBpLCBqKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG0gKiBpICsgajsKKyAgICB9LAorICAgIAorICAgIGFkZDogZnVuY3Rpb24o
QSwgQiwgbiwgbSkKKyAgICB7CisgICAgICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3MobiwgbSk7
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbiAqIG07ICsraSkKKyAgICAgICAgICAgIG91
dFtpXSA9IEFbaV0gKyBCW2ldOworICAgICAgICByZXR1cm4gb3V0OworICAgIH0sCisgICAgCisg
ICAgc3VidHJhY3Q6IGZ1bmN0aW9uKEEsIEIsIG4sIG0pCisgICAgeworICAgICAgICB2YXIgb3V0
ID0gTWF0cml4Lnplcm9zKG4sIG0pOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4gKiBt
OyArK2kpCisgICAgICAgICAgICBvdXRbaV0gPSBBW2ldIC0gQltpXTsKKyAgICAgICAgcmV0dXJu
IG91dDsKKyAgICB9LAorICAgIAorICAgIHNjYWxlOiBmdW5jdGlvbihzLCBBLCBuLCBtKQorICAg
IHsKKyAgICAgICAgdmFyIG91dCA9IE1hdHJpeC56ZXJvcyhuLCBtKTsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBuICogbTsgKytpKQorICAgICAgICAgICAgb3V0W2ldID0gcyAqIEFbaV07
CisgICAgICAgIHJldHVybiBvdXQ7CisgICAgfSwKKyAgICAKKyAgICB0cmFuc3Bvc2U6IGZ1bmN0
aW9uKEEsIG4sIG0pCisgICAgeworICAgICAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG0sIG4p
OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICAgICAgZm9y
ICh2YXIgaiA9IDA7IGogPCBtOyArK2opCisgICAgICAgICAgICAgICAgb3V0W01hdHJpeC5wb3Mo
biwgaSwgaildID0gQVtNYXRyaXgucG9zKG0sIGosIGkpXTsKKyAgICAgICAgfSAgICAgICAKKyAg
ICAgICAgcmV0dXJuIG91dDsKKyAgICB9LAorICAgIAorICAgIG11bHRpcGx5OiBmdW5jdGlvbihB
LCBCLCBuLCBtLCBwKQorICAgIHsKKyAgICAgICAgdmFyIG91dCA9IE1hdHJpeC56ZXJvcyhuLCBw
KTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIGZv
ciAodmFyIGogPSAwOyBqIDwgcDsgKytqKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgayA9
IDA7IGsgPCBtOyArK2spIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0W01hdHJpeC5wb3MocCwg
aSwgaildICs9IEFbTWF0cml4LnBvcyhtLCBpLCBrKV0gKiBCW01hdHJpeC5wb3MocCwgaywgaild
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gb3V0OworICAgIH0KK30KKwordmFyIFZlY3RvcjMgPQoreworICAgIHplcm9zOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4Lnplcm9zKDEsIDMpOworICAgIH0s
CisgICAgCisgICAgb25lczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJp
eC5vbmVzKDEsIDMpOworICAgIH0sCisgICAgCisgICAgc3RyOiBmdW5jdGlvbih2KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIE1hdHJpeC5zdHIodiwgMSwgMyk7CisgICAgfSwKKyAgICAKKyAgICBh
ZGQ6IGZ1bmN0aW9uKHYsIHcpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LmFkZCh2LCB3
LCAxLCAzKTsKKyAgICB9LAorICAgIAorICAgIHN1YnRyYWN0OiBmdW5jdGlvbih2LCB3KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC5zdWJ0cmFjdCh2LCB3LCAxLCAzKTsKKyAgICB9LAor
ICAgIAorICAgIHNjYWxlOiBmdW5jdGlvbihzLCB2KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1h
dHJpeC5zY2FsZShzLCB2LCAxLCAzKTsKKyAgICB9LAorICAgIAorICAgIG11bHRpcGx5TWF0cml4
MzogZnVuY3Rpb24odiwgQSkKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRyaXgubXVsdGlwbHko
diwgQSwgMSwgMywgMyk7CisgICAgfSwKKyAgICAKKyAgICBtdWx0aXBseVZlY3RvcjM6IGZ1bmN0
aW9uKHYsIHcpCisgICAgeworICAgICAgICB2YXIgb3V0ID0gMDsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAzOyArK2kpCisgICAgICAgICAgICBvdXQgKz0gdltpXSAqIHdbaV07CisgICAg
ICAgIHJldHVybiBvdXQ7CisgICAgfQorfQorCit2YXIgTWF0cml4MyA9Cit7CisgICAgemVyb3M6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRyaXguemVyb3MoMywgMyk7Cisg
ICAgfSwKKyAgICAKKyAgICBpZGVudGl0eTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIE1hdHJpeC5pZGVudGl0eSgzLCAzKTsKKyAgICB9LAorICAgIAorICAgIHN0cjogZnVuY3Rp
b24oQSkKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRyaXguc3RyKEEsIDMsIDMpOworICAgIH0s
CisgICAgCisgICAgcG9zOiBmdW5jdGlvbihpLCBqKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1h
dHJpeC5wb3MoMywgaSwgaik7CisgICAgfSwKKyAgICAKKyAgICBhZGQ6IGZ1bmN0aW9uKEEsIEIp
CisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LmFkZChBLCBCLCAzLCAzKTsKKyAgICB9LAor
ICAgIAorICAgIHN1YnRyYWN0OiBmdW5jdGlvbihBLCBCKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IE1hdHJpeC5zdWJ0cmFjdChBLCBCLCAzLCAzKTsKKyAgICB9LAorICAgIAorICAgIHNjYWxlOiBm
dW5jdGlvbihzLCBBKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC5zY2FsZShzLCBBLCAz
LCAzKTsKKyAgICB9LAorICAgIAorICAgIHRyYW5zcG9zZTogZnVuY3Rpb24oQSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBNYXRyaXgudHJhbnNwb3NlKEEsIDMsIDMpOworICAgIH0sCisgICAgCisg
ICAgbXVsdGlwbHlNYXRyaXgzOiBmdW5jdGlvbihBLCBCKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IE1hdHJpeC5tdWx0aXBseShBLCBCLCAzLCAzLCAzKTsKKyAgICB9LAorICAgIAorICAgIG11bHRp
cGx5VmVjdG9yMzogZnVuY3Rpb24oQSwgdikKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRyaXgu
bXVsdGlwbHkoQSwgdiwgMywgMywgMSk7CisgICAgfQorfQorCitmdW5jdGlvbiBQSURDb250cm9s
bGVyKEssIHlzcCwgdWxvdywgdWhpZ2gpCit7CisgICAgdGhpcy5feXNwID0geXNwOworCisgICAg
dGhpcy5fVGQgPSA1OworICAgIHRoaXMuX1RpID0gMTU7CisKKyAgICB0aGlzLl9LcCA9IEs7Cisg
ICAgdGhpcy5fS2QgPSBLIC8gdGhpcy5fVGQ7CisgICAgdGhpcy5fS2kgPSBLIC8gdGhpcy5fVGk7
CisKKyAgICB0aGlzLl9lb2xkID0gMDsKKyAgICB0aGlzLl9JID0gMDsKK30KKworUElEQ29udHJv
bGxlci5wcm90b3R5cGUgPQoreworICAgIF9zYXQ6IGZ1bmN0aW9uKHYsIGxvdywgaGlnaCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB2IDwgbG93ID8gbG93IDogKHYgPiBoaWdoID8gaGlnaCA6IHYp
OworICAgIH0sCisgICAgCisgICAgdHVuZTogZnVuY3Rpb24oeSwgaCkKKyAgICB7CisgICAgICAg
IC8vIEN1cnJlbnQgZXJyb3IKKyAgICAgICAgdmFyIGUgPSB0aGlzLl95c3AgLSB5OworCisgICAg
ICAgIC8vIFByb3BvcnRpb25hbCB0ZXJtCisgICAgICAgIHZhciBQID0gdGhpcy5fS3AgKiBlOwor
ICAgICAgICAKKyAgICAgICAgLy8gRGVyaXZhdGl2ZSB0ZXJtIGlzIHRoZSBzbG9wZSBvZiB0aGUg
Y3VydmUgYXQgdGhlIGN1cnJlbnQgdGltZQorICAgICAgICB2YXIgRCA9IHRoaXMuX0tkICogKGUg
LSB0aGlzLl9lb2xkKSAvIGg7CisKKyAgICAgICAgLy8gSW50ZWdyYWwgdGVybSBpcyB0aGUgYXJl
YSB1bmRlciB0aGUgY3VydmUgc3RhcnRpbmcgZnJvbSB0aGUgYmVnaW5pbmcgdGlsbCB0aGUgY3Vy
cmVudCB0aW1lCisgICAgICAgIHRoaXMuX0kgKz0gdGhpcy5fS2kgKiAoKGUgKyB0aGlzLl9lb2xk
KSAvIDIpICogaDsKKworICAgICAgICAvLyBwaWQgY29udHJvbGxlciB2YWx1ZQorICAgICAgICB2
YXIgdiA9IFAgKyBEICsgdGhpcy5fSTsKKyAgICAgICAgCisgICAgICAgIC8vIEF2b2lkIHNwaWtl
cyBieSBhcHBseWluZyBhY3R1YXRvciBzYXR1YXJ0aW9uCisgICAgICAgIHZhciB1ID0gdGhpcy5f
c2F0KHYsIHRoaXMuX3Vsb3csIHRoaXMuX3VoaWdoKTsgICAgICAgIAorCisgICAgICAgIHRoaXMu
X2VvbGQgPSBlOworICAgICAgICByZXR1cm4gdTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEthbG1h
bkVzdGltYXRvcigpCit7CisgICAgdGhpcy5fbWF0QSA9IE1hdHJpeDMuaWRlbnRpdHkoKTsKKyAg
ICAKKyAgICB0aGlzLl92ZWNIID0gVmVjdG9yMy56ZXJvcygpOworICAgIHRoaXMuX3ZlY0hbMF0g
PSAxOworICAgIAorICAgIHRoaXMuX21hdFEgPSBNYXRyaXgzLmlkZW50aXR5KCk7CisgICAgdGhp
cy5fUiA9IDEwMDA7CisgICAgCisgICAgdGhpcy5fdmVjWF9lc3QgPSBWZWN0b3IzLm9uZXMoKTsK
KyAgICB0aGlzLl9tYXRQX2VzdCA9IE1hdHJpeDMuemVyb3MoKTsKK30KKworS2FsbWFuRXN0aW1h
dG9yLnByb3RvdHlwZSA9Cit7CisgICAgZXN0aW1hdGU6IGZ1bmN0aW9uKHRpbWVEZWx0YSwgY3Vy
cmVudCkKKyAgICB7CisgICAgICAgIC8vIFVwZGF0ZSB0aGUgdHJhbnNpdGlvbiBtYXRyaXgKKyAg
ICAgICAgdGhpcy5fbWF0QVtNYXRyaXgzLnBvcygwLCAyKV0gPSAxOworCisgICAgICAgIC8vIFBy
ZWRpY3RlZCBzdGF0ZSBhbmQgY292YXJpYW5jZQorICAgICAgICB2YXIgdmVjWF9wcmQgPSBNYXRy
aXgzLm11bHRpcGx5VmVjdG9yMyh0aGlzLl9tYXRBLCB0aGlzLl92ZWNYX2VzdCk7CisgICAgICAg
IHZhciBtYXRQX3ByZCA9IE1hdHJpeDMuYWRkKE1hdHJpeDMubXVsdGlwbHlNYXRyaXgzKE1hdHJp
eDMubXVsdGlwbHlNYXRyaXgzKHRoaXMuX21hdEEsIHRoaXMuX21hdFBfZXN0KSwgTWF0cml4My50
cmFuc3Bvc2UodGhpcy5fbWF0QSkpLCB0aGlzLl9tYXRRKTsKKworICAgICAgICAvLyBFc3RpbWF0
aW9uCisgICAgICAgIHZhciB2ZWNCID0gVmVjdG9yMy5tdWx0aXBseU1hdHJpeDModGhpcy5fdmVj
SCwgTWF0cml4My50cmFuc3Bvc2UobWF0UF9wcmQpKTsKKyAgICAgICAgdmFyIFMgPSBWZWN0b3Iz
Lm11bHRpcGx5VmVjdG9yMyh2ZWNCLCB0aGlzLl92ZWNIKSArIHRoaXMuX1I7CisKKyAgICAgICAg
dmFyIHZlY0dhaW4gPSBWZWN0b3IzLnNjYWxlKDEvUywgdmVjQik7CisgICAgICAgIAorICAgICAg
ICAvLyBFc3RpbWF0ZWQgc3RhdGUgYW5kIGNvdmFyaWFuY2UKKyAgICAgICAgdGhpcy5fdmVjWF9l
c3QgPSBWZWN0b3IzLmFkZCh2ZWNYX3ByZCwgVmVjdG9yMy5zY2FsZShjdXJyZW50IC0gVmVjdG9y
My5tdWx0aXBseVZlY3RvcjModGhpcy5fdmVjSCwgdmVjWF9wcmQpLCB2ZWNHYWluKSk7CisgICAg
ICAgIHRoaXMuX21hdFBfZXN0ID0gTWF0cml4My5zdWJ0cmFjdChtYXRQX3ByZCwgTWF0cml4My5z
Y2FsZShWZWN0b3IzLm11bHRpcGx5VmVjdG9yMyh2ZWNHYWluLCB0aGlzLl92ZWNIKSwgbWF0UF9w
cmQpKTsKKworICAgICAgICAvLyBDb21wdXRlIHRoZSBlc3RpbWF0ZWQgbWVhc3VyZW1lbnQKKyAg
ICAgICAgcmV0dXJuIFZlY3RvcjMubXVsdGlwbHlWZWN0b3IzKHRoaXMuX3ZlY0gsICB0aGlzLl92
ZWNYX2VzdCk7CisgICAgfQorfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL3Jlc291cmNlcy9zdGFnZS5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5jc3MJKHJldmlzaW9uIDApCisrKyBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmNzcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACitodG1sIHsKKyAgaGVpZ2h0OiAxMDAlOworfQorYm9k
eSB7CisgIHdpZHRoOiAxMDAlOworICBoZWlnaHQ6IDEwMCU7CisgIG92ZXJmbG93OiBoaWRkZW47
CisgIG1hcmdpbjogMDsKKyAgcGFkZGluZzogMDsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VhZWFl
YTsKK30KKworI3N0YWdlIHsKKyAgd2lkdGg6IDEwMCU7CisgIGhlaWdodDogMTAwJTsKKyAgYmFj
a2dyb3VuZC1jb2xvcjogI2VhZWFlYTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qcwkocmV2aXNpb24gMCkKKysr
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzIgQEAKK2Z1bmN0aW9uIFN0YWdlKGVsZW1lbnQsIG9w
dGlvbnMpCit7CisgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDsKK30KKworU3RhZ2UucHJvdG90
eXBlID0KK3sKKyAgICBnZXQgc2l6ZSgpCisgICAgeworICAgICAgICB2YXIgc3R5bGVzID0gd2lu
ZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5lbGVtZW50KTsKKyAgICAgICAgdmFyIHBhZGRpbmcg
PSBuZXcgSW5zZXRzKAorICAgICAgICAgICAgcGFyc2VGbG9hdChzdHlsZXMucGFkZGluZ1RvcCks
CisgICAgICAgICAgICBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nUmlnaHQpLAorICAgICAgICAg
ICAgcGFyc2VGbG9hdChzdHlsZXMucGFkZGluZ0JvdHRvbSksCisgICAgICAgICAgICBwYXJzZUZs
b2F0KHN0eWxlcy5wYWRkaW5nVG9wKSk7CisgICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy5l
bGVtZW50LmNsaWVudFdpZHRoIC0gcGFkZGluZy53aWR0aCwgdGhpcy5lbGVtZW50LmNsaWVudEhl
aWdodCAtIHBhZGRpbmcuaGVpZ2h0KTsKKyAgICB9LAorICAgIAorICAgIHJhbmRvbTogZnVuY3Rp
b24obWluLCBtYXgpCisgICAgeworICAgICAgICByZXR1cm4gKE1hdGgucmFuZG9tKCkgKiAobWF4
IC0gbWluKSkgKyBtaW47CisgICAgfSwKKyAgICAKKyAgICByYW5kb21JbnQ6IGZ1bmN0aW9uKG1p
biwgbWF4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy5yYW5kb20obWlu
LCBtYXgpKTsKKyAgICB9LAorICAgIAorICAgIHJhbmRvbVBvc2l0aW9uOiBmdW5jdGlvbihtYXhQ
b3NpdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy5yYW5kb21JbnQo
MCwgbWF4UG9zaXRpb24ueCksIHRoaXMucmFuZG9tSW50KDAsIG1heFBvc2l0aW9uLnkpKTsKKyAg
ICB9LAorICAgIAorICAgIHJhbmRvbVZlbG9jaXR5OiBmdW5jdGlvbihtYXhWZWxvY2l0eSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLnJhbmRvbShtYXhWZWxvY2l0eSAvIDgsIG1heFZlbG9j
aXR5KTsKKyAgICB9LAorICAgIAorICAgIHJhbmRvbUFuZ2xlOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5yYW5kb20oMCwgTWF0aC5QSSAqIDIpOworICAgIH0sCisgICAg
CisgICAgcmFuZG9tQ29sb3I6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBtaW4gPSAz
MjsKKyAgICAgICAgdmFyIG1heCA9IDI1NiAtIDMyOworICAgICAgICByZXR1cm4gIiMiCisgICAg
ICAgICAgICArIHRoaXMucmFuZG9tSW50KG1pbiwgbWF4KS50b1N0cmluZygxNikKKyAgICAgICAg
ICAgICsgdGhpcy5yYW5kb21JbnQobWluLCBtYXgpLnRvU3RyaW5nKDE2KQorICAgICAgICAgICAg
KyB0aGlzLnJhbmRvbUludChtaW4sIG1heCkudG9TdHJpbmcoMTYpOworICAgIH0sCisgICAgCisg
ICAgdHVuZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhyb3cgIk5vdCBpbXBsZW1lbnRl
ZCI7CisgICAgfSwKKyAgICAKKyAgICBhbmltYXRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB0aHJvdyAiTm90IGltcGxlbWVudGVkIjsKKyAgICB9LAorICAgIAorICAgIGNsZWFyOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy50dW5lKC10aGlzLnR1bmUoMCkpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gU3RhZ2VBbmltYXRvcihiZW5jaG1hcmspCit7CisgICAgQW5p
bWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1hcmspOworfTsKKworU3RhZ2VBbmltYXRvci5wcm90b3R5
cGUgPSBPYmplY3QuY3JlYXRlKEFuaW1hdG9yLnByb3RvdHlwZSk7CitTdGFnZUFuaW1hdG9yLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciA9IFN0YWdlQW5pbWF0b3I7CisKK1N0YWdlQW5pbWF0b3IucHJv
dG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpCit7CisgICAgaWYgKCFBbmltYXRvci5wcm90b3R5
cGUuYW5pbWF0ZS5jYWxsKHRoaXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdGhpcy5f
YmVuY2htYXJrLl9zdGFnZS5hbmltYXRlKHRoaXMudGltZURlbHRhKCkpOworICAgIHJldHVybiB0
cnVlOworfQorCitmdW5jdGlvbiBTdGFnZUJlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIEJlbmNobWFyay5jYWxsKHRoaXMsIG9w
dGlvbnMpOworICAgIAorICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InN0YWdlIik7CisgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgZG9jdW1lbnQuYm9k
eS5vZmZzZXRXaWR0aCk7CisgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIGRvY3Vt
ZW50LmJvZHkub2Zmc2V0SGVpZ2h0KTsKKyAgICAKKyAgICB0aGlzLl9zdGFnZSA9IHRoaXMuY3Jl
YXRlU3RhZ2UoZWxlbWVudCk7CisgICAgdGhpcy5fYW5pbWF0b3IgPSB0aGlzLmNyZWF0ZUFuaW1h
dG9yKCk7CisgICAgdGhpcy5fc3VpdGUgPSBzdWl0ZTsKKyAgICB0aGlzLl90ZXN0ID0gdGVzdDsK
KyAgICB0aGlzLl9yZWNvcmRUYWJsZSA9IHJlY29yZFRhYmxlOworICAgIHRoaXMuX3Byb2dyZXNz
QmFyID0gcHJvZ3Jlc3NCYXI7Cit9CisKK1N0YWdlQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUoQmVuY2htYXJrLnByb3RvdHlwZSk7CitTdGFnZUJlbmNobWFyay5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBTdGFnZUJlbmNobWFyazsKKworU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBl
LmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKK3sKKyAgICByZXR1cm4gbmV3IFN0YWdl
KGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCitTdGFnZUJlbmNobWFyay5wcm90b3R5cGUu
Y3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIG5ldyBTdGFnZUFuaW1h
dG9yKHRoaXMpOworfQorCitTdGFnZUJlbmNobWFyay5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9u
KGNvdW50KQoreworICAgIHJldHVybiB0aGlzLl9zdGFnZS50dW5lKGNvdW50KTsKK30KKworU3Rh
Z2VCZW5jaG1hcmsucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiB0
aGlzLl9zdGFnZS5jbGVhcigpOworfQorCitTdGFnZUJlbmNobWFyay5wcm90b3R5cGUuc2hvd1Jl
c3VsdHMgPSBmdW5jdGlvbihtZXNzYWdlLCBwcm9ncmVzcykKK3sKKyAgICBpZiAoIXRoaXMuX3Jl
Y29yZFRhYmxlIHx8ICF0aGlzLl9wcm9ncmVzc0JhciB8fCAhdGhpcy5fc3VpdGUgfHwgIXRoaXMu
X3Rlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIHRoaXMuX3JlY29yZFRhYmxlLnNob3dSZWNv
cmQodGhpcy5fc3VpdGUsIHRoaXMuX3Rlc3QsIHRoaXMuX3NhbXBsZXIsIG1lc3NhZ2UpOworICAg
IHRoaXMuX3Byb2dyZXNzQmFyLnNldFBvcyhwcm9ncmVzcyk7Cit9CkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3V0aWxpdGllcy5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3V0aWxpdGll
cy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9y
ZXNvdXJjZXMvdXRpbGl0aWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAKK3dp
bmRvdy5iZW5jaG1hcmtDbGllbnQgPQoreworICAgIF9wYXJzZTogZnVuY3Rpb24oc3RyLCBzZXAp
CisgICAgeworICAgICAgICB2YXIgb3V0cHV0ID0ge307CisgICAgICAgIHN0ci5zcGxpdChzZXAp
LmZvckVhY2goZnVuY3Rpb24ocGFydCkgeworICAgICAgICAgICAgdmFyIGl0ZW0gPSBwYXJ0LnNw
bGl0KCI9Iik7CisgICAgICAgICAgICB2YXIgdmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQoaXRl
bVsxXSk7CisgICAgICAgICAgICBpZiAodmFsdWVbMF0gPT0gIiciICkKKyAgICAgICAgICAgICAg
ICBvdXRwdXRbaXRlbVswXV0gPSB2YWx1ZS5zdWJzdHIoMSwgdmFsdWUubGVuZ3RoIC0gMik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3V0cHV0W2l0ZW1bMF1dID0gdmFsdWU7
ICAgICAgICAgICAgICAgIAorICAgICAgICAgIH0pOworICAgICAgICByZXR1cm4gb3V0cHV0Owor
ICAgIH0sCisgICAgCisgICAgcGFyc2VQYXJhbWV0ZXJzOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fcGFyc2Uod2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHIoMSks
ICImIik7CisgICAgfSwKKyAgICAKKyAgICBwYXJzZUFyZ3VtZW50czogZnVuY3Rpb24oc3RyKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlKHN0ciwgIiAiKTsKKyAgICB9LAorICAg
IAorICAgIGV4dGVuZE9iamVjdDogZnVuY3Rpb24ob2JqMSwgb2JqMikKKyAgICB7CisgICAgICAg
IGZvciAodmFyIGF0dHJuYW1lIGluIG9iajIpCisgICAgICAgICAgICBvYmoxW2F0dHJuYW1lXSA9
IG9iajJbYXR0cm5hbWVdOworICAgICAgICByZXR1cm4gb2JqMTsKKyAgICB9LAorICAgIAorICAg
IGNvcHlPYmplY3Q6IGZ1bmN0aW9uKG9iaikKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmV4
dGVuZE9iamVjdCh7fSwgb2JqKTsKKyAgICB9LAorICAgIAorICAgIG1lcmdlT2JqZWN0czogZnVu
Y3Rpb24ob2JqMSwgb2JqMikKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmV4dGVuZE9iamVj
dCh0aGlzLmNvcHlPYmplY3Qob2JqMSksIG9iajIpOworICAgIH0sCisgICAgCisgICAgY3JlYXRl
U3ZnRWxlbWVudDogZnVuY3Rpb24obmFtZSwgYXR0cnMsIHhsaW5rQXR0cnMsIHBhcmVudCkKKyAg
ICB7CisgICAgICAgIGNvbnN0IHN2Z05hbWVzcGFjZSA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyI7CisgICAgICAgIGNvbnN0IHhsaW5rTmFtZXNwYWNlID0gImh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiOworCisgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKHN2Z05hbWVzcGFjZSwgbmFtZSk7CisgICAgICAgIAorICAgICAgICBmb3IgKHZhciBr
ZXkgaW4gYXR0cnMpCisgICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShrZXksIGF0dHJz
W2tleV0pOworICAgICAgICAgICAgCisgICAgICAgIGZvciAodmFyIGtleSBpbiB4bGlua0F0dHJz
KQorICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyh4bGlua05hbWVzcGFjZSwga2V5
LCB4bGlua0F0dHJzW2tleV0pOworICAgICAgICAgICAgCisgICAgICAgIHBhcmVudC5hcHBlbmRD
aGlsZChlbGVtZW50KTsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgfQorfTsKKworLy8g
VGhpcyBldmVudCBsaXN0ZW5lciBydW5zIHRoZSB0ZXN0IGlmIGl0IGlzIGxvYWRlZCBvdXRzaWRl
IHRoZSBiZW5jaG1hcmsgcnVubmVyLgord2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBm
dW5jdGlvbigpCit7CisgICAgaWYgKHdpbmRvdy5zZWxmICE9PSB3aW5kb3cudG9wKQorICAgICAg
ICByZXR1cm47CisgICAgd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUobnVsbCwgbnVsbCwg
MzAwMDAsIDUwLCBudWxsLCBudWxsKTsKKyAgICB3aW5kb3cuYmVuY2htYXJrLnN0YXJ0KCk7Cit9
KTsKKworLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgc3VpdGUgY29udHJvbGxl
ciBydW4tY2FsbGJhY2sgd2hlbiBydW5uaW5nIHRoZSBiZW5jaG1hcmsgcnVubmVyLgord2luZG93
LnJ1bkJlbmNobWFyayA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgdmFyIG1lcmdlT3B0aW9ucyA9IHdpbmRvdy5iZW5jaG1h
cmtDbGllbnQubWVyZ2VPYmplY3RzKG9wdGlvbnMsIHdpbmRvdy5iZW5jaG1hcmtDbGllbnQucGFy
c2VQYXJhbWV0ZXJzKCkpOworICAgIHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKHN1aXRl
LCB0ZXN0LCBtZXJnZU9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7CisgICAgcmV0
dXJuIHdpbmRvdy5iZW5jaG1hcmsucnVuKCk7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnN2Zwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnN2ZwkocmV2
aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMv
eWluLXlhbmcuc3ZnCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKKzxzdmcgdmVyc2lv
bj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjAwIDIwMCI+DQorICA8
ZGVmcz4NCisgICAgPGNsaXBQYXRoIGlkPSJsZWZ0LWhhbGYiPg0KKyAgICAgIDxyZWN0IHdpZHRo
PSIxMDAiIGhlaWdodD0iMjAwIi8+DQorICAgIDwvY2xpcFBhdGg+DQorICAgIDxjbGlwUGF0aCBp
ZD0icmlnaHQtaGFsZiI+DQorICAgICAgPHJlY3QgeD0iMTAwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9
IjIwMCIvPg0KKyAgICA8L2NsaXBQYXRoPg0KKyAgPC9kZWZzPg0KKyAgPGNpcmNsZSBjeD0iMTAw
IiBjeT0iMTAwIiByPSI5OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJncmVlbiIgc3Ryb2tlLXdpZHRo
PSIyIi8+DQorICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSIxMDAiIHI9Ijk4IiBmaWxsPSJ3aGl0ZSIg
Y2xpcC1wYXRoPSJ1cmwoI2xlZnQtaGFsZikiLz4NCisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjEw
MCIgcj0iOTgiIGZpbGw9ImdyZWVuIiBjbGlwLXBhdGg9InVybCgjcmlnaHQtaGFsZikiLz4NCisg
IDxjaXJjbGUgY3g9IjEwMCIgY3k9IjUwIiAgcj0iNDkiIGZpbGw9ImdyZWVuIi8+DQorICA8Y2ly
Y2xlIGN4PSIxMDAiIGN5PSIxNDgiIHI9IjQ5IiBmaWxsPSJ3aGl0ZSIvPg0KKyAgPGNpcmNsZSBj
eD0iMTAwIiBjeT0iNTAiICByPSIxMCIgZmlsbD0id2hpdGUiLz4gICAgDQorICA8Y2lyY2xlIGN4
PSIxMDAiIGN5PSIxNDgiIHI9IjEwIiBmaWxsPSJncmVlbiIvPg0KKzwvc3ZnPg0KSW5kZXg6IFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jYW52YXMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVt
cGxhdGUvdGVtcGxhdGUtY2FudmFzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtY2FudmFzLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jl
c291cmNlcy9zdGFnZS5jc3MiPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxn
b3JpdGhtLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0
YXRpc3RpY3MuanMiPjwvc2NyaXB0PiAgCisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9tYWluLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGgu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpz
Ij48L3NjcmlwdD4gICAgCisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFzLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxjYW52YXMgaWQ9InN0YWdlIj48L2NhbnZh
cz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jc3MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtY3NzLmh0bWwJKHJldmlz
aW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVt
cGxhdGUtY3NzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0i
dGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgorICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PiAgCisgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAgCisgICAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9iZW5jaG1hcmsuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
dGVtcGxhdGUtY3NzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9
InN0YWdlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1zdmcuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtc3Zn
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
dGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PiAg
CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAgCisgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9iZW5jaG1hcmsuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
ICAgIDxzdmcgaWQ9InN0YWdlIj48L3N2Zz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUt
Y2FudmFzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFzLmpzCShyZXZpc2lvbiAwKQorKysg
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1w
bGF0ZS1jYW52YXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OSBAQAorZnVuY3Rpb24g
VGVtcGxhdGVDYW52YXNPYmplY3Qoc3RhZ2UpCit7CisgICAgLy8gRm9yIHRoZSBjYW52YXMgc3Rh
Z2UsIG1vc3QgbGlrZWx5IHlvdSB3aWxsIG5lZWQgdG8gY3JlYXRlIHlvdXIKKyAgICAvLyBhbmlt
YXRlZCBvYmplY3Qgc2luY2UgaXQncyBvbmx5IGRyYXcgdGltZSB0aGluZy4KKyAgICAKKyAgICAv
LyBUT0RPOiBmaWxsIGluIHlvdXIgb2JqZWN0IGRhdGEuCit9CisKK1RlbXBsYXRlQ2FudmFzT2Jq
ZWN0LnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQoreworICAgIC8vIFJl
ZHJhdyB0aGUgYW5pbWF0ZWQgb2JqZWN0LiBUaGUgbGFzdCB0aW1lIHRoaXMgYW5pbWF0ZWQKKyAg
ICAvLyBpdGVtIHdhcyBkcmF3biBiZWZvcmUgJ3RpbWVEZWx0YScuCisgICAgCisgICAgLy8gVE9E
TzogcmVkcmF3IHRoZSBvYmplY3QuCit9CisKK2Z1bmN0aW9uIFRlbXBsYXRlQ2FudmFzU3RhZ2Uo
ZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlv
bnMpOworICAgIHRoaXMuY29udGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOwor
fQorCitUZW1wbGF0ZUNhbnZhc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2Uu
cHJvdG90eXBlKTsKK1RlbXBsYXRlQ2FudmFzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0g
VGVtcGxhdGVDYW52YXNTdGFnZTsKKworVGVtcGxhdGVDYW52YXNTdGFnZS5wcm90b3R5cGUudHVu
ZSA9IGZ1bmN0aW9uKGNvdW50KQoreworICAgIC8vIElmIGNvdW50IGlzIC12ZSwgLWNvdW50IGVs
ZW1lbnRzIG5lZWQgdG8gYmUgcmVtb3ZlZCBmb3JtIHRoZQorICAgIC8vIHN0YWdlLiBJZiBjb3Vu
dCBpcyArdmUsICtjb3VudCBlbGVtZW50cyBuZWVkIHRvIGJlIGFkZGVkIHRvCisgICAgLy8gdGhl
IHN0YWdlLgorICAgIAorICAgIC8vIFRPRE86IGNoYW5nZSBvYmplY3RzIGluIHRoZSBzdGFnZS4K
KyAgICAKKyAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBhbGwgdGhlIGVsZW1lbnRzIGluIHRo
ZSBzdGFnZS4KKyAgICAvLyBUaGlzIG51bWJlciBpcyByZWNvcmRlZCBpbiB0aGUgc2FtcGxlZCBk
YXRhLgorICAgIAorICAgIC8vIFRPRE86IHJldHVybiB0aGUgY291bnQgb2YgdGhlIG9iamVjdHMg
aW4gdGhlIHN0YWdlLgorICAgIHJldHVybiAwOworfQorCitUZW1wbGF0ZUNhbnZhc1N0YWdlLnBy
b3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQoreworICAgIC8vIEFuaW1hdGUg
dGhlIGVsZW1lbnRzIHN1Y2ggdGhhdCBhbGwgb2YgdGhlbSBhcmUgcmVkcmF3bi4gTW9zdAorICAg
IC8vIGxpa2VseSB5b3Ugd2lsbCBuZWVkIHRvIGNhbGwgVGVtcGxhdGVDYW52YXNPYmplY3QuYW5p
bWF0ZSgpCisgICAgLy8gZm9yIGFsbCB5b3VyIGFuaW1hdGVkIG9iamVjdHMgaGVyZS4KK30KKwor
ZnVuY3Rpb24gVGVtcGxhdGVDYW52YXNBbmltYXRvcihiZW5jaG1hcmspCit7CisgICAgQW5pbWF0
b3IuY2FsbCh0aGlzLCBiZW5jaG1hcmspOworICAgIHRoaXMuX2NvbnRleHQgPSBiZW5jaG1hcmsu
X3N0YWdlLmNvbnRleHQ7Cit9CisKK1RlbXBsYXRlQ2FudmFzQW5pbWF0b3IucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShTdGFnZUFuaW1hdG9yLnByb3RvdHlwZSk7CitUZW1wbGF0ZUNhbnZhc0Fu
aW1hdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRlbXBsYXRlQ2FudmFzQW5pbWF0b3I7CisK
K1RlbXBsYXRlQ2FudmFzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpCit7
CisgICAgLy8gTW9zdCBsaWtlbHkgeW91IHdpbGwgbmVlZCB0byBjbGVhciB0aGUgY2FudmFzIHdp
dGggZXZlcnkgcmVkcmF3LgorICAgIHRoaXMuX2NvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMu
X2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS54LCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUueSk7
CisgICAgcmV0dXJuIFN0YWdlQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKTsK
K30KKworZnVuY3Rpb24gVGVtcGxhdGVDYW52YXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICBTdGFnZUJlbmNobWFyay5jYWxs
KHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOwor
fQorCitUZW1wbGF0ZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0
YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7CitUZW1wbGF0ZUNhbnZhc0JlbmNobWFyay5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBUZW1wbGF0ZUNhbnZhc0JlbmNobWFyazsKKworVGVtcGxhdGVDYW52
YXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKK3sK
KyAgICAvLyBBdHRhY2ggdGhlIHN0YWdlIHRvIHRoZSBiZW5jaG1hcmsuCisgICAgcmV0dXJuIG5l
dyBUZW1wbGF0ZUNhbnZhc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCitUZW1w
bGF0ZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlvbigp
Cit7CisgICAgLy8gQXR0YWNoIHRoZSBhbmltYXRvciB0byB0aGUgYmVuY2htYXJrLgorICAgIHJl
dHVybiBuZXcgVGVtcGxhdGVDYW52YXNBbmltYXRvcih0aGlzKTsKK30KKword2luZG93LmJlbmNo
bWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3Jk
VGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZy
b20gdGhlIHRlc3QgaGFybmVzcyB3aGljaCBzdGFydHMgdGhlCisgICAgLy8gdGVzdCBieSBjcmVh
dGluZyB5b3VyIGJlbmNobWFyayBvYmplY3QuCisgICAgd2luZG93LmJlbmNobWFyayA9IG5ldyBU
ZW1wbGF0ZUNhbnZhc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUs
IHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY3NzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUt
Y3NzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jc3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0OCBAQAorZnVuY3Rpb24gVGVtcGxhdGVTdGFnZShlbGVtZW50LCBvcHRpb25zKQorewor
ICAgIFN0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Cit9CisKK1RlbXBsYXRlU3Rh
Z2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOworVGVtcGxhdGVT
dGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUZW1wbGF0ZVN0YWdlOworCitUZW1wbGF0ZVN0
YWdlLnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQpCit7CisgICAgLy8gSWYgY291bnQg
aXMgLXZlLCAtY291bnQgZWxlbWVudHMgbmVlZCB0byBiZSByZW1vdmVkIGZvcm0gdGhlCisgICAg
Ly8gc3RhZ2UuIElmIGNvdW50IGlzICt2ZSwgK2NvdW50IGVsZW1lbnRzIG5lZWQgdG8gYmUgYWRk
ZWQgdG8KKyAgICAvLyB0aGUgc3RhZ2UuCisgICAgCisgICAgLy8gUmV0dXJuIHRoZSBudW1iZXIg
b2YgYWxsIHRoZSBlbGVtZW50cyBpbiB0aGUgc3RhZ2UuCisgICAgcmV0dXJuIDA7Cit9CisKK1Rl
bXBsYXRlU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCit7Cisg
ICAgLy8gQW5pbWF0ZSB0aGUgZWxlbWVudHMgc3VjaCB0aGF0IGFsbCBvZiB0aGVtIGFyZSByZWRy
YXduLiBZb3UgCisgICAgLy8gbWF5IG5lZWQgdG8gZGVmaW5lIHlvdXIgb2JqZWN0IHNvIGl0IGtl
ZXBzIGl0cyBhbmltYXRpb24gZGF0YS4KKyAgICAvLyBUaGlzIG9iamVjdCBzaG91bGQgZW5jYXBz
dWxhdGUgYSBjb3Jyb3Nwb25kaW5nIEhUTUxFbGVtZW50LgorICAgIC8vIFlvdSBtYXkgYWxzbyBk
ZWZpbmUgYSBtZXRob2QgY2FsbGVkIGFuaW1hdGUoKSBpbiB0aGlzIG9iamVjdAorICAgIC8vIGFu
ZCBqdXN0IGNhbGwgdGhpcyBmdW5jdGlvbiBoZXJlIGZvciBhbGwgdGhlIGVsZW1lbnRzLgorfQor
CitmdW5jdGlvbiBUZW1wbGF0ZUJlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3Jk
VGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3Vp
dGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK1RlbXBs
YXRlQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VCZW5jaG1hcmsucHJv
dG90eXBlKTsKK1RlbXBsYXRlQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRlbXBs
YXRlQmVuY2htYXJrOworCitUZW1wbGF0ZUJlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2Ug
PSBmdW5jdGlvbihlbGVtZW50KQoreworICAgIC8vIFlvdSBuZWVkIHRvIG92ZXJyaWRlIHRoaXMg
bWV0aG9kIHN1Y2ggdGhhdCB5b3VyIHN0YWdlIGlzIGhvb2tlZAorICAgIC8vIHVwIHRvIHRoZSBi
ZW5jaG1hcmsuCisgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZVN0YWdlKGVsZW1lbnQsIHRoaXMuX29w
dGlvbnMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgLy8g
VGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgdGVzdCBoYXJuZXNzIHdoaWNoIHN0YXJ0
cyB0aGUKKyAgICAvLyB0ZXN0IGJ5IGNyZWF0aW5nIHlvdXIgYmVuY2htYXJrIG9iamVjdC4KKyAg
ICB3aW5kb3cuYmVuY2htYXJrID0gbmV3IFRlbXBsYXRlQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBv
cHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1zdmcuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRl
L3Jlc291cmNlcy90ZW1wbGF0ZS1zdmcuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLXN2Zy5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACitmdW5jdGlvbiBUZW1wbGF0ZVN2Z1N0YWdl
KGVsZW1lbnQsIG9wdGlvbnMpCit7CisgICAgU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRp
b25zKTsKK30KKworVGVtcGxhdGVTdmdTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0
YWdlLnByb3RvdHlwZSk7CitUZW1wbGF0ZVN2Z1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IFRlbXBsYXRlU3ZnU3RhZ2U7CisKK1RlbXBsYXRlU3ZnU3RhZ2UucHJvdG90eXBlLnR1bmUgPSBm
dW5jdGlvbihjb3VudCkKK3sKKyAgICAvLyBJZiBjb3VudCBpcyAtdmUsIC1jb3VudCBlbGVtZW50
cyBuZWVkIHRvIGJlIHJlbW92ZWQgZm9ybSB0aGUKKyAgICAvLyBzdGFnZS4gSWYgY291bnQgaXMg
K3ZlLCArY291bnQgZWxlbWVudHMgbmVlZCB0byBiZSBhZGRlZCB0bworICAgIC8vIHRoZSBzdGFn
ZS4KKworICAgIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGFsbCB0aGUgZWxlbWVudHMgaW4gdGhl
IHN0YWdlLgorICAgIHJldHVybiAwOworfQorCitUZW1wbGF0ZVN2Z1N0YWdlLnByb3RvdHlwZS5h
bmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQoreworICAgIC8vIEFuaW1hdGUgdGhlIGVsZW1l
bnRzIHN1Y2ggdGhhdCBhbGwgb2YgdGhlbSBhcmUgcmVkcmF3bi4gWW91IAorICAgIC8vIG1heSBu
ZWVkIHRvIGRlZmluZSB5b3VyIG9iamVjdCBzbyBpdCBrZWVwcyBpdHMgYW5pbWF0aW9uIGRhdGEu
CisgICAgLy8gVGhpcyBvYmplY3Qgc2hvdWxkIGVuY2Fwc3VsYXRlIGEgY29ycm9zcG9uZGluZyBT
VkdFbGVtZW50LgorICAgIC8vIFlvdSBtYXkgYWxzbyBkZWZpbmUgYSBtZXRob2QgY2FsbGVkIGFu
aW1hdGUoKSBpbiB0aGlzIG9iamVjdAorICAgIC8vIGFuZCBqdXN0IGNhbGwgdGhpcyBmdW5jdGlv
biBoZXJlIGZvciBhbGwgdGhlIGVsZW1lbnRzLgorfQorCitmdW5jdGlvbiBUZW1wbGF0ZVN2Z0Jl
bmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQor
eworICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJl
Y29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK1RlbXBsYXRlU3ZnQmVuY2htYXJrLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlKTsKK1RlbXBsYXRl
U3ZnQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRlbXBsYXRlU3ZnQmVuY2htYXJr
OworCitUZW1wbGF0ZVN2Z0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlv
bihlbGVtZW50KQoreworICAgIC8vIFlvdSBuZWVkIHRvIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHN1
Y2ggdGhhdCB5b3VyIHN0YWdlIGlzIGhvb2tlZAorICAgIC8vIHVwIHRvIHRoZSBiZW5jaG1hcmsu
CisgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZVN2Z1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMp
OworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgLy8gVGhpcyBm
dW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgdGVzdCBoYXJuZXNzIHdoaWNoIHN0YXJ0cyB0aGUK
KyAgICAvLyB0ZXN0IGJ5IGNyZWF0aW5nIHlvdXIgYmVuY2htYXJrIG9iamVjdC4KKyAgICB3aW5k
b3cuYmVuY2htYXJrID0gbmV3IFRlbXBsYXRlU3ZnQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRt
bAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0
L2xheWVyaW5nLXRleHQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICAudGV4dC1s
YXllciB7CisgICAgICAgICAgICBmb250LXNpemU6IDExLjVweDsKKyAgICAgICAgICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgIGxlZnQ6IDBweDsKKyAgICAgICAgICAgIHRvcDog
MHB4OworICAgICAgICAgICAgcGFkZGluZzogNXB4OworICAgICAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjogdHJhbnNwYXJlbnQ7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPiAgCisgICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdl
LmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+
PC9zY3JpcHQ+ICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL21haW4uanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAg
ICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+ICAKKyAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0ic3RhZ2UiPjwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2Vz
L2xheWVyaW5nLXRleHQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanMJKHJldmlzaW9uIDApCisr
KyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJp
bmctdGV4dC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIzNSBAQAorZnVuY3Rpb24gTGF5
ZXJpbmdUZXh0U3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBTdGFnZS5jYWxsKHRoaXMs
IGVsZW1lbnQsIG9wdGlvbnMpOworICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGhpcy5l
bGVtZW50OworICAgIHRoaXMuX3RleHRFbGVtZW50cyA9IFtdOworICAgIHRoaXMuX3RleHRJdGVt
SW5kZXggPSAwOworICAgIHRoaXMuX2NvbG9ySW5kZXggPSAwOworICAgIHRoaXMuX2FuaW1hdGVD
b3VudHMgPSAwOworfQorCitMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXMgPQorWworICAgICI8
ZGl2IGlkPSdpZF8wMCcgY2xhc3M9J3RleHQtbGF5ZXInPiIsCisgICAgICAgICI8aDIgaWQ9J2lk
XzAxJz5DdXN0b21pemVkIHN0eWxlczwvaDI+IiwKKyAgICAgICAgIjxwIGlkPSdpZF8wMic+SWYg
eW91IHdhbnQgZm9ybWF0dGluZyBjaG9pY2VzIHRoYXQgYXJlIG5vdCBhdmFpbGFibGUgZnJvbSB0
aGUgYnVpbHQtaW4gc3R5bGVzLCBRdWljayBTdHlsZSBzZXRzLCBhbmQgdGhlbWVzLCB5b3UgY2Fu
IGNyZWF0ZSBjdXN0b20gc3R5bGVzIHRvIHN1aXQgeW91ciBuZWVkcy48L3A+IiwKKyAgICAgICAg
IjxwIGlkPSdpZF8wMyc+VGhlIGVhc2llc3Qgd2F5IHRvIGNyZWF0ZSBhIGN1c3RvbSBzdHlsZSBp
cyB0byBtb2RpZnkgYSBidWlsdC1pbiBzdHlsZSBhbmQgdGhlbiBzYXZlIGl0IGFzIGEgbmV3IHN0
eWxlLjwvcD4iLAorICAgICAgICAiPHAgaWQ9J2lkXzA0Jz5Gb3IgZXhhbXBsZSwgeW91IG1pZ2h0
IHdhbnQgdG8gZm9ybWF0IGEgcGFyYWdyYXBoIG9mIHF1b3RlZCBtYXRlcmlhbCB3aXRoIGEgaGFs
Zi1pbmNoIGluZGVudCBmcm9tIHRoZSBsZWZ0IGFuZCByaWdodCBtYXJnaW5zLCBzaW5nbGUgc3Bh
Y2VkLiBUaGVyZSBpcyBubyBidWlsdC1pbiBzdHlsZSB0byBhY2NvbW1vZGF0ZSB0aGlzLCBidXQg
eW91IGNhbiBjcmVhdGUgYSBjdXN0b20gc3R5bGUgYnkgZG9pbmcgdGhlIGZvbGxvd2luZzo8L3A+
IiwKKyAgICAgICAgIjxvbCB0eXBlPScxJyBpZD0naWRfMDUnPiIsCisgICAgICAgICAgICAiPGxp
IGlkPSdpZF8wNic+PHA+Q2xpY2sgaW4gdGhlIHBhcmFncmFwaCB5b3Ugd2FudCB0byBmb3JtYXQu
PC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lkXzA3Jz48cD5PbiB0aGUgPGI+SG9t
ZTwvYj4gdGFiLCBjbGljayB0aGUgPGI+UGFyYWdyYXBoPC9iPiBEaWFsb2cgQm94IExhdW5jaGVy
LjwvcD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8wOCc+PHA+SW4gdGhlIDxiPklu
ZGVudGF0aW9uPC9iPiBzZWN0aW9uLCB0eXBlIDxiIGNsYXNzPSdvY3BMaXRlcmFsJz4wLjUnPC9i
PiBpbiB0aGUgPGI+TGVmdDwvYj4gYW5kIDxiPlJpZ2h0PC9iPiBib3hlcy48L3A+PC9saT4iLAor
ICAgICAgICAgICAgIjxsaSBpZD0naWRfMDknPjxwPkluIHRoZSA8Yj5TcGFjaW5nPC9iPiBzZWN0
aW9uLCBpbiB0aGUgPGI+TGluZSBzcGFjaW5nPC9iPiBsaXN0LCBjbGljayA8Yj5TaW5nbGU8L2I+
LjwvcD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8xMCc+PHA+Q2xpY2sgPGI+T0s8
L2I+LjwvcD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8xMSc+PHA+UmlnaHQtY2xp
Y2sgaW4gdGhlIHBhcmFncmFwaCwgcG9pbnQgdG8gPGI+U3R5bGVzPC9iPiwgYW5kIHRoZW4gY2xp
Y2sgPGI+U2F2ZSBTZWxlY3Rpb24gYXMgYSBOZXcgUXVpY2sgU3R5bGU8L2I+LjwvcD48L2xpPiIs
CisgICAgICAgICAgICAiPGxpIGlkPSdpZF8xMic+PHA+SW4gdGhlIDxiPk5hbWU8L2I+IGJveCwg
dHlwZSBhIG5hbWUgZm9yIHRoZSBzdHlsZSwgc3VjaCBhcyA8Yj5CbG9jayBxdW90ZTwvYj4uIDwv
cD48L2xpPiIsCisgICAgICAgICAgICAiPGxpIGlkPSdpZF8xMyc+PHA+SWYgeW91IHdhbnQgdGhl
IHN0eWxlIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBnYWxsZXJ5IG9mIHN0eWxlcyBvbiB0aGUgPGI+
SG9tZTwvYj4gdGFiLCBhbmQgaWYgeW91IHdhbnQgdGhlIHN0eWxlIHRvIGJlIGEgbGlua2VkIHN0
eWxlLCBjbGljayA8Yj5PSzwvYj4uPC9wPjwvbGk+IiwKKyAgICAgICAgICAgICI8bGkgaWQ9J2lk
XzE0Jz4iLAorICAgICAgICAgICAgICAgICI8cCBpZD0naWRfMTUnPklmIHlvdSBkb24ndCB3YW50
IHRoZSBzdHlsZSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgZ2FsbGVyeSwgb3IgaWYgeW91IHdhbnQg
dGhlIHN0eWxlIHRvIGJlIGVpdGhlciBhIHBhcmFncmFwaCBvciBhIGNoYXJhY3RlciBzdHlsZSwg
Y2xpY2sgPGI+TW9kaWZ5PC9iPiBhbmQgZG8gb25lIG9yIGJvdGggb2YgdGhlIGZvbGxvd2luZzo8
L3A+IiwKKyAgICAgICAgICAgICAgICAiPHVsIGlkPSdpZF8xNic+IiwKKyAgICAgICAgICAgICAg
ICAgICAgIjxsaSBpZD0naWRfMTcnPjxwPkF0IHRoZSBib3R0b20gb2YgdGhlIGRpYWxvZyBib3gs
IGNsZWFyIHRoZSA8Yj5BZGQgdG8gUXVpY2sgU3R5bGU8L2I+IGxpc3QgYm94LjwvcD48L2xpPiIs
CisgICAgICAgICAgICAgICAgICAgICI8bGkgaWQ9J2lkXzE4Jz48cD5JbiB0aGUgPGI+U3R5bGUg
dHlwZTwvYj4gbGlzdCwgY2xpY2sgPGI+UGFyYWdyYXBoPC9iPiBvciA8Yj5DaGFyYWN0ZXI8L2I+
LjwvcD48L2xpPiIsCisgICAgICAgICAgICAgICAgIjwvdWw+IiwKKyAgICAgICAgICAgICI8L2xp
PiIsCisgICAgICAgICI8L29sPiIsCisgICAgICAgICI8cCBpZD0naWRfMTknPklmIHlvdSBzd2l0
Y2ggdG8gYSBkaWZmZXJlbnQgUXVpY2sgU3R5bGUgc2V0LCB5b3UgbWF5IG5lZWQgdG8gYWRqdXN0
IHRoZSBzZXR0aW5ncyBvZiB5b3VyIGN1c3RvbSBzdHlsZS4gSW4gdGhlIGV4YW1wbGUgaGVyZSwg
aWYgeW91IGNyZWF0ZSB0aGUgQmxvY2sgcXVvdGUgc3R5bGUgd2hpbGUgdGhlIFdvcmQgMjAwNyBR
dWljayBTdHlsZSBzZXQgaXMgYXBwbGllZCwgYW5kIHRoZW4geW91IHN3aXRjaCB0byB0aGUgVHJh
ZGl0aW9uYWwgUXVpY2sgU3R5bGUgc2V0LCB5b3UgY2FuIGNoYW5nZSB0aGUgQmxvY2sgcXVvdGUg
c3R5bGUgdG8gcmVtb3ZlIHRoZSBmaXJzdC1saW5lIGluZGVudGF0aW9uIHRoYXQgdGhlIFRyYWRp
dGlvbmFsIFF1aWNrIFN0eWxlIHNldCBpbnRyb2R1Y2VzLiBUbyBjaGFuZ2UgYSBzdHlsZSwgZG8g
dGhlIGZvbGxvd2luZzo8L3A+IiwKKyAgICAgICAgIjxvbCB0eXBlPScxJyBpZD0naWRfMjAnPiIs
CisgICAgICAgICAgICAiPGxpIGlkPSdpZF8yMSc+PHA+T24gdGhlIDxiPkhvbWU8L2I+IHRhYiBp
biB0aGUgPGI+U3R5bGVzPC9iPiBncm91cCwgcmlnaHQtY2xpY2sgPGI+QmxvY2sgcXVvdGU8L2I+
LCBhbmQgdGhlbiBjbGljayA8Yj5Nb2RpZnk8L2I+LjwvcD48L2xpPiIsCisgICAgICAgICAgICAi
PGxpIGlkPSdpZF8yMic+PHA+Q2xpY2sgPGI+Rm9ybWF0PC9iPiwgYW5kIHRoZW4gY2xpY2sgPGI+
UGFyYWdyYXBoPC9iPi48L3A+PC9saT4iLAorICAgICAgICAgICAgIjxsaSBpZD0naWRfMjMnPjxw
PkluIHRoZSA8Yj5JbmRlbnRhdGlvbjwvYj4gc2VjdGlvbiwgaW4gdGhlIDxiPlNwZWNpYWw8L2I+
IGxpc3QsIGNsaWNrIDxiPihub25lKTwvYj4uPC9wPjwvbGk+IiwKKyAgICAgICAgIjwvb2w+IiwK
KyAgICAgICAgIjxwIGlkPSdpZF8yNCc+VGhlIG1vcmUgY2hhcmFjdGVyaXN0aWNzIHRoYXQgeW91
IHNwZWNpZnkgZm9yIHRoZSBzdHlsZSwgdGhlIGxlc3MgdGhlIHN0eWxlIGlzIGFmZmVjdGVkIGJ5
IHN3aXRjaGluZyBRdWljayBTdHlsZSBzZXRzIG9yIHRoZW1lcy48L3A+IiwKKyAgICAiPC9kaXY+
IgorXTsKKworTGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VUZXh0SXRlbSA9IGZ1bmN0aW9uKHRleHRJ
dGVtKQoreworICAgIHZhciBwcmFzZVJlc3VsdCA9IHt9OworICAgIHByYXNlUmVzdWx0LnRhZ1N0
YXJ0ID0gdGV4dEl0ZW0ubWF0Y2goLzwoLio/KT4vZylbMF07CisgICAgdmFyIHNwYWNlSW5kZXgg
PSBwcmFzZVJlc3VsdC50YWdTdGFydC5pbmRleE9mKCIgIik7CisgICAgcHJhc2VSZXN1bHQubm9k
ZU5hbWUgPSBwcmFzZVJlc3VsdC50YWdTdGFydC5zdWJzdHJpbmcoMSwgc3BhY2VJbmRleCAhPSAt
MSA/IHNwYWNlSW5kZXggOiBwcmFzZVJlc3VsdC50YWdTdGFydC5sZW5ndGggLSAxKTsKKyAgICBw
cmFzZVJlc3VsdC5hcmdzID0gc3BhY2VJbmRleCAhPSAtMSA/IHdpbmRvdy5iZW5jaG1hcmtDbGll
bnQucGFyc2VBcmd1bWVudHMocHJhc2VSZXN1bHQudGFnU3RhcnQuc3Vic3RyaW5nKHNwYWNlSW5k
ZXggKyAxLCBwcmFzZVJlc3VsdC50YWdTdGFydC5sZW5ndGggLSAxKSkgOiB7fTsKKyAgICB2YXIg
dGFnRW5kID0gIjwvIiArIHByYXNlUmVzdWx0Lm5vZGVOYW1lICsgIj4iOyAgICAgICAgICAgICAg
ICAKKyAgICBwcmFzZVJlc3VsdC50YWdFbmQgPSB0ZXh0SXRlbS5lbmRzV2l0aCh0YWdFbmQpID8g
dGFnRW5kIDogIiI7CisgICAgcmV0dXJuIHByYXNlUmVzdWx0OworfQorCitMYXllcmluZ1RleHRT
dGFnZS5pc09wZW5pbmdUZXh0SXRlbSA9IGZ1bmN0aW9uKHRleHRJdGVtKQoreworICAgIHJldHVy
biAhTGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VUZXh0SXRlbSh0ZXh0SXRlbSkudGFnRW5kLmxlbmd0
aDsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDbG9zaW5nVGV4dEl0ZW0gPSBmdW5jdGlvbih0
ZXh0SXRlbSkKK3sKKyAgICByZXR1cm4gdGV4dEl0ZW0uaW5kZXhPZigiLyIpID09ICsxOworfQor
CitMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFncyA9IExheWVyaW5nVGV4dFN0YWdlLnRl
eHRJdGVtcy5tYXAoZnVuY3Rpb24odGV4dEl0ZW0pCit7CisgICB2YXIgdGV4dEl0ZW1GbGFncyA9
IHt9OworICAgdGV4dEl0ZW1GbGFncy5pc09wZW5pbmcgPSBMYXllcmluZ1RleHRTdGFnZS5pc09w
ZW5pbmdUZXh0SXRlbSh0ZXh0SXRlbSk7CisgICB0ZXh0SXRlbUZsYWdzLmlzQ2xvc2luZyA9IExh
eWVyaW5nVGV4dFN0YWdlLmlzQ2xvc2luZ1RleHRJdGVtKHRleHRJdGVtKTsgICAKKyAgIHJldHVy
biB0ZXh0SXRlbUZsYWdzOworfSk7CisKK0xheWVyaW5nVGV4dFN0YWdlLmlzQ29sb3JhYmxlVGV4
dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKQoreworICAgIHJldHVybiAhKHRleHRJdGVt
RmxhZ3MuaXNPcGVuaW5nIHx8IHRleHRJdGVtRmxhZ3MuaXNDbG9zaW5nKTsKK30KKworTGF5ZXJp
bmdUZXh0U3RhZ2UuaXNJbnNlcnRhYmxlVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbUZsYWdz
KQoreworICAgIHJldHVybiAhdGV4dEl0ZW1GbGFncy5pc0Nsb3Npbmc7Cit9CisKK0xheWVyaW5n
VGV4dFN0YWdlLmNvbG9yYWJsZVRleHRJdGVtcyA9IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVt
c0ZsYWdzLmZpbHRlcihmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKQoreworICAgIHJldHVybiBMYXll
cmluZ1RleHRTdGFnZS5pc0NvbG9yYWJsZVRleHRJdGVtKHRleHRJdGVtRmxhZ3MpOworfSkubGVu
Z3RoOworCitMYXllcmluZ1RleHRTdGFnZS5pbnNlcnRhYmxlVGV4dEl0ZW1zID0gTGF5ZXJpbmdU
ZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MuZmlsdGVyKGZ1bmN0aW9uKHRleHRJdGVtRmxhZ3MpCit7
CisgICAgcmV0dXJuIExheWVyaW5nVGV4dFN0YWdlLmlzSW5zZXJ0YWJsZVRleHRJdGVtKHRleHRJ
dGVtRmxhZ3MpOworfSkubGVuZ3RoOworCitMYXllcmluZ1RleHRTdGFnZS5jb2xvckluZGV4VG9U
ZXh0RWxlbWVudEluZGV4ID0gZnVuY3Rpb24oY29sb3JJbmRleCkKK3sKKyAgICB2YXIgdGV4dEVs
ZW1lbnRJbmRleCA9IDA7CisgICAgdmFyIGluZGV4ID0gMDsKKyAgICAKKyAgICBmb3IgKHZhciB0
ZXh0SXRlbUluZGV4ID0gMDsgdGV4dEl0ZW1JbmRleCA8IExheWVyaW5nVGV4dFN0YWdlLnRleHRJ
dGVtc0ZsYWdzLmxlbmd0aDsgKyt0ZXh0SXRlbUluZGV4KSB7CisgICAgICAgIGlmIChMYXllcmlu
Z1RleHRTdGFnZS5pc0NvbG9yYWJsZVRleHRJdGVtKExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVt
c0ZsYWdzW3RleHRJdGVtSW5kZXhdKSkgeworICAgICAgICAgICAgaWYgKCsraW5kZXggPiBjb2xv
ckluZGV4KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChM
YXllcmluZ1RleHRTdGFnZS5pc0luc2VydGFibGVUZXh0SXRlbShMYXllcmluZ1RleHRTdGFnZS50
ZXh0SXRlbXNGbGFnc1t0ZXh0SXRlbUluZGV4XSkpCisgICAgICAgICAgICArK3RleHRFbGVtZW50
SW5kZXg7CisgICAgfQorICAgIAorICAgIHJldHVybiB0ZXh0RWxlbWVudEluZGV4OworfQorCitM
YXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlLnByb3RvdHlw
ZSk7CitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMYXllcmluZ1Rl
eHRTdGFnZTsKKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9uZXh0VGV4dEl0ZW0gPSBm
dW5jdGlvbih0ZXh0SXRlbUZsYWdzKQoreworICAgIHZhciB0ZXh0SXRlbSA9IExheWVyaW5nVGV4
dFN0YWdlLnRleHRJdGVtc1t0aGlzLl90ZXh0SXRlbUluZGV4XTsKKyAgICB3aW5kb3cuYmVuY2ht
YXJrQ2xpZW50LmV4dGVuZE9iamVjdCh0ZXh0SXRlbUZsYWdzLCBMYXllcmluZ1RleHRTdGFnZS50
ZXh0SXRlbXNGbGFnc1t0aGlzLl90ZXh0SXRlbUluZGV4XSk7CisgICAgdGhpcy5fdGV4dEl0ZW1J
bmRleCA9ICh0aGlzLl90ZXh0SXRlbUluZGV4ICsgMSkgJSBMYXllcmluZ1RleHRTdGFnZS50ZXh0
SXRlbXMubGVuZ3RoOworICAgIHJldHVybiB0ZXh0SXRlbTsKK30KKworTGF5ZXJpbmdUZXh0U3Rh
Z2UucHJvdG90eXBlLl9wcmV2aW91c1RleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW1GbGFncykK
K3sKKyAgICB0aGlzLl90ZXh0SXRlbUluZGV4ID0gKHRoaXMuX3RleHRJdGVtSW5kZXggKyBMYXll
cmluZ1RleHRTdGFnZS50ZXh0SXRlbXMubGVuZ3RoIC0gMSkgJSBMYXllcmluZ1RleHRTdGFnZS50
ZXh0SXRlbXMubGVuZ3RoOworICAgIHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuZXh0ZW5kT2JqZWN0
KHRleHRJdGVtRmxhZ3MsIExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzW3RoaXMuX3Rl
eHRJdGVtSW5kZXhdKTsgICAgCisgICAgcmV0dXJuIExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVt
c1t0aGlzLl90ZXh0SXRlbUluZGV4XTsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBl
Ll9wdXNoVGV4dEVsZW1lbnQgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIHRleHRJdGVtRmxhZ3Mg
PSB7fTsKKyAgICB2YXIgdGV4dEl0ZW0gPSB0aGlzLl9uZXh0VGV4dEl0ZW0odGV4dEl0ZW1GbGFn
cyk7CisgICAgZm9yICggOyB0ZXh0SXRlbUZsYWdzLmlzQ2xvc2luZzsgdGV4dEl0ZW0gPSB0aGlz
Ll9uZXh0VGV4dEl0ZW0odGV4dEl0ZW1GbGFncykpCisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50
UGFyZW50ID0gdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQucGFyZW50Tm9kZTsKKworICAgIHZhciBw
cmFzZVJlc3VsdCA9IExheWVyaW5nVGV4dFN0YWdlLnBhcnNlVGV4dEl0ZW0odGV4dEl0ZW0pOwor
ICAgIHRleHRJdGVtID0gdGV4dEl0ZW0uc3Vic3RyaW5nKHByYXNlUmVzdWx0LnRhZ1N0YXJ0Lmxl
bmd0aCwgdGV4dEl0ZW0ubGVuZ3RoIC0gcHJhc2VSZXN1bHQudGFnRW5kLmxlbmd0aCk7CisKKyAg
ICB2YXIgdGV4dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHByYXNlUmVzdWx0Lm5v
ZGVOYW1lKTsKKworICAgIGZvciAodmFyIGF0dHJuYW1lIGluIHByYXNlUmVzdWx0LmFyZ3MpCisg
ICAgICAgIHRleHRFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRybmFtZSwgcHJhc2VSZXN1bHQuYXJn
c1thdHRybmFtZV0pOworCisgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQuYXBwZW5kQ2hpbGQo
dGV4dEVsZW1lbnQpOworICAgIAorICAgIGlmICghcHJhc2VSZXN1bHQudGFnRW5kLmxlbmd0aCkK
KyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQgPSB0ZXh0RWxlbWVudDsKKworICAgIHRl
eHRFbGVtZW50LmlubmVySFRNTCA9IHRleHRJdGVtOworICAgIAorICAgIHRoaXMuX3RleHRFbGVt
ZW50cy5wdXNoKHRleHRFbGVtZW50KTsKKyAgICByZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxl
bmd0aDsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9wb3BUZXh0RWxlbWVudCA9
IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgdGV4dEl0ZW1GbGFncyA9IHt9OyAgICAKKyAgICB2YXIg
dGV4dEl0ZW0gPSB0aGlzLl9wcmV2aW91c1RleHRJdGVtKHRleHRJdGVtRmxhZ3MpOworICAgIGZv
ciAoIDsgdGV4dEl0ZW1GbGFncy5pc0Nsb3Npbmc7IHRleHRJdGVtID0gdGhpcy5fcHJldmlvdXNU
ZXh0SXRlbSh0ZXh0SXRlbUZsYWdzKSkKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQg
PSB0aGlzLl90ZXh0RWxlbWVudFBhcmVudC5sYXN0Q2hpbGQ7CisKKyAgICBpZiAodGV4dEl0ZW1G
bGFncy5pc09wZW5pbmcpCisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGhpcy5f
dGV4dEVsZW1lbnRQYXJlbnQucGFyZW50Tm9kZTsKKworICAgIHZhciB0ZXh0RWxlbWVudCA9IHRo
aXMuX3RleHRFbGVtZW50c1t0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoIC0gMV07CisgICAgCisg
ICAgaWYgKHRleHRFbGVtZW50ICYmIHRleHRFbGVtZW50LnBhcmVudE5vZGUgJiYgdGV4dEVsZW1l
bnQucGFyZW50Tm9kZSA9PSB0aGlzLl90ZXh0RWxlbWVudFBhcmVudCkKKyAgICAgICAgdGhpcy5f
dGV4dEVsZW1lbnRQYXJlbnQucmVtb3ZlQ2hpbGQodGV4dEVsZW1lbnQpOworCisgICAgdGhpcy5f
dGV4dEVsZW1lbnRzLnBvcCgpOworICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3Ro
OworfQorCitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX2NvbG9yVGV4dEl0ZW0gPSBmdW5j
dGlvbihjb2xvcikKK3sKKyAgICB2YXIgdGV4dEVsZW1lbnRJbmRleCA9IExheWVyaW5nVGV4dFN0
YWdlLmNvbG9ySW5kZXhUb1RleHRFbGVtZW50SW5kZXgodGhpcy5fY29sb3JJbmRleCk7CisgICAg
Zm9yICggOyB0ZXh0RWxlbWVudEluZGV4IDwgdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsgdGV4
dEVsZW1lbnRJbmRleCArPSBMYXllcmluZ1RleHRTdGFnZS5pbnNlcnRhYmxlVGV4dEl0ZW1zKQor
ICAgICAgICB0aGlzLl90ZXh0RWxlbWVudHNbdGV4dEVsZW1lbnRJbmRleF0uc3R5bGUuYmFja2dy
b3VuZENvbG9yID0gY29sb3I7Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5hbmlt
YXRlID0gZnVuY3Rpb24odGltZURlbHRhKQoreworICAgIHRoaXMuX2NvbG9yVGV4dEl0ZW0oInRy
YW5zcGFyZW50Iik7CisgICAgdGhpcy5fY29sb3JJbmRleCA9ICh0aGlzLl9jb2xvckluZGV4ICsg
MSkgJSBMYXllcmluZ1RleHRTdGFnZS5jb2xvcmFibGVUZXh0SXRlbXM7CisgICAgdGhpcy5fY29s
b3JUZXh0SXRlbSgiWWVsbG93R3JlZW4iKTsKKyAgICAKKyAgICB2YXIgYmxhY2tUZXh0RWxlbWVu
dHMgPSBNYXRoLm1pbih0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoLCBMYXllcmluZ1RleHRTdGFn
ZS5pbnNlcnRhYmxlVGV4dEl0ZW1zKTsKKyAgICB2YXIgaSA9IDA7CisgICAgZm9yICggOyBpIDwg
dGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aCAtIGJsYWNrVGV4dEVsZW1lbnRzOyArK2kpCisgICAg
ICAgIHRoaXMuX3RleHRFbGVtZW50c1tpXS5zdHlsZS5jb2xvciA9ICh0aGlzLl9hbmltYXRlQ291
bnRzICYgMSkgPyAiTGlnaHRZZWxsb3ciIDogIndoaXRlIjsKKworICAgIGZvciAoIDsgaSA8IHRo
aXMuX3RleHRFbGVtZW50cy5sZW5ndGg7ICsraSkKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRz
W2ldLnN0eWxlLmNvbG9yID0gImJsYWNrIjsKKyAgICAgICAgCisgICAgKyt0aGlzLl9hbmltYXRl
Q291bnRzOworfQorCitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9u
KGNvdW50KQoreworICAgIGNvdW50ID0gY291bnQgPiAwID8gTWF0aC5mbG9vcihjb3VudCkgOiBN
YXRoLmNlaWwoY291bnQpOworCisgICAgaWYgKGNvdW50ID09IDApCisgICAgICAgIHJldHVybiB0
aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOworCisgICAgaWYgKGNvdW50ID4gMCkgeworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICB0aGlzLl9wdXNo
VGV4dEVsZW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7
CisgICAgfQorICAgICAgICAKKyAgICBjb3VudCA9IE1hdGgubWluKC1jb3VudCwgdGhpcy5fdGV4
dEVsZW1lbnRzLmxlbmd0aCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQor
ICAgICAgICB0aGlzLl9wb3BUZXh0RWxlbWVudCgpOworCisgICAgcmV0dXJuIHRoaXMuX3RleHRF
bGVtZW50cy5sZW5ndGg7Cit9CisKK2Z1bmN0aW9uIExheWVyaW5nVGV4dEJlbmNobWFyayhzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIFN0YWdl
QmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBw
cm9ncmVzc0Jhcik7Cit9CisKK0xheWVyaW5nVGV4dEJlbmNobWFyay5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7CitMYXllcmluZ1RleHRCZW5jaG1h
cmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTGF5ZXJpbmdUZXh0QmVuY2htYXJrOworCitMYXll
cmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVu
dCkKK3sKKyAgICByZXR1cm4gbmV3IExheWVyaW5nVGV4dFN0YWdlKGVsZW1lbnQsIHRoaXMuX29w
dGlvbnMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgd2lu
ZG93LmJlbmNobWFyayA9IG5ldyBMYXllcmluZ1RleHRCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnBuZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNh
bm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBl
ID0gaW1hZ2UvcG5nCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVz
b3VyY2VzL3lpbi15YW5nLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnBuZwkocmV2aXNpb24gMCkKKysrIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcucG5nCSh3b3Jr
aW5nIGNvcHkpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWlt
ZS10eXBlCiMjIC0wLDAgKzEgIyMKK2ltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHBy
b3BlcnR5CgppVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBR1FBQUFCa0NBWUFBQUJ3NHBWVUFBQUFC
R2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOCkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFB
T3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1kKQUFBQ0JHbFVX
SFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBT
SmhaRzlpWlRwdQpjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlXRTFRSUVOdmNtVWdOUzQwTGpBaVBn
b2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5CkltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6
RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBnb2dJQ0FnSUNBOGNtUm0KT2tSbGMy
TnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenBsZUds
bVBTSm9kSFJ3T2k4dgpibk11WVdSdlltVXVZMjl0TDJWNGFXWXZNUzR3THlJS0lDQWdJQ0FnSUNB
Z0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6CkxtRmtiMkpsTG1OdmJTOTBhV1ptTHpF
dU1DOGlQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01URXcKUEM5
bGVHbG1PbEJwZUdWc1dVUnBiV1Z1YzJsdmJqNEtJQ0FnSUNBZ0lDQWdQR1Y0YVdZNlVHbDRaV3hZ
UkdsdFpXNXphVzl1UGpFdwpOVHd2WlhocFpqcFFhWGhsYkZoRWFXMWxibk5wYjI0K0NpQWdJQ0Fn
SUNBZ0lEeDBhV1ptT2s5eWFXVnVkR0YwYVc5dVBqRThMM1JwClptWTZUM0pwWlc1MFlYUnBiMjQr
Q2lBZ0lDQWdJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQZ29nSUNBOEwzSmtaanBTUkVZK0Nqd3YK
ZURwNGJYQnRaWFJoUGdvVW5BMitBQUFOV0VsRVFWUjRBZTFkZld3VTFSWS91NlZDVzBxcmlDUWtV
Q0ZSUUFKSUNBaFJvY1RFWWcwRQpWRVQ4Q3hBU0VTSXh3aDhhQlRIQnFEVUdBKzg5RFdENHh3OVFp
MEZqU0VTdGlaRldxUkhDcTZEUUJKTlhxbnpJUjRyWVVzNDd2ek1NCkhZYmR6bTczN256czlpU3pN
N3N6ZXovT2IrNDk1NTU3N3preENqa3g4M2dwNGh3NXB0S3BVOFBvMkxGQjFOSlNRaWRPRk5LNWN3
VjAKNFFKUmUzdE1xM0hERFV6RnhVUURCblRTb0VFZE5HUklHMVZVbktDQkEzK1grM3ZsK0RRV2kr
M1haMFA2WVZVa1JJVVRBR1pLY1piVApvVU1UcWI3K0ZtcHNMS0NmZnliYUwzeHNieWRpdHM2cGxE
a2VKNHBKRlFzTGlXNjdqZWl1dTRqdXZydVRwa3o1azBhTjJpZEovRnNBCjJwMUtVbm4xaklDd2xO
dmE5dlAyN2UyOGFCSHpzR0hNdzRjelAvZ2c4NzMzTWhjWEF3WXpSMGtKYy8vK3pBTUhNcytieDVv
bjhwWXkKNUJYVDNaVVZCb3lSWXc5Lzhrazd6NS9QM0tjUGMzVTE4NlpOekY5OXhieDRzUmtBdklB
c0syT094NWtmZUlDNXRyWmR5eVJsYzVjMwpaNzlMaGVmdzhlTkhlZDI2eTlvU0tpdVozM21IK2ZS
cHVTVlVVOE5jVU9BUEdHNnd5c3V0bG9PeW9ZeFMxbHdHWWpZZk9mSS9YckdDCk9SWmpmdW9wNXA5
K1VnejBvN1dWZWRhc1lJQndBMU5VWkpWanlSTFdNalBQemhsZ2hObEQrZVRKSm43bUdlYStmWm1m
ZjU0WnpIZFMKUXdQemlCSGhBTU1KRGxvcURydzhxSVBVSmRMQVNBVzI4SVlOblR4Z0FQUEtsZGNE
QVZDKytZYTV0RFI4WURpQndZdlVyeDlMWFM2aApUcEVEUlFvOWcrdnJ6NnFHQkVIdDdKcms1bFZD
eXdnN0dFNWdvQUNNSGN0YU42bGpKSUFSWm0vZzllc3ZxMm9KWVoyTTBHMkZzWnR5CkFwRHN1ckNR
K1pWWExxT3VvUVZGQ2xjaW1zbC9WVENqVlRRM0o0UEMrajBzQWp3WjA3MStSMnVaTm8yMXpsTDNV
QUVqSEo3QVgzL2QKcG1yczJyWGRBNEc3VUcyOUtoeVYreGhnb3U3Q2cxQ0FJZ1dwNG5mZjdWQU5h
dnQyc0x0N1Fzc0phcHlSTFpCUkgvQkFlQkVvS0ZLQQpoZno2NjUxcTVvQ0FUb1g4R29Gbmkvbkow
b1U1cHFhbUV6d0pCQlRKZURXLzlOSmx2dk5PYjNsaEEzWHdZTzUwVlltQWdWekJLRjk0CjR5c29l
QXNVak1tVEU0OHRiQURjWjR6U0UxVWtsMzdyQXNXZmxpSThydEp1Q2kzRFBlSjJBK0Q4ZmtuR1ZG
RWFjMlR5a2dBVXEvdksKcmt3Ui9rNVE0UVhUdUpkYTZ3UUQxenQyNUg3cmNJSUltYkp0R3dSOWRy
UXZTYmhFMVR1WUVWSVY0QURDcGx3VjVrNFEzTmZRdml5VgoyUHc0aFZ0YW1uU2NrWXBxYTRQZ1BF
ZDFWTzVtY3JyZk1VNlJBYk5SSVM5ODNhQWo4RlFHZlU0UTdHdkltblFya3Nyemp6L08vTzIzCnpC
Y3ZXZ2V1OFZzcS8vWHpHWXpvVFpsWkpLRVphcHVDT2FTbkJJdXVhUWE4OFVieTB1Q2U2Znd5U1E5
QzNySjlaVzZRVk1zbUJGUzYKUXR6SnJtM2J6RElJcmNDTHd0WlNZSkJzYURpYlVkY2xkZDZpSnZU
dXJMWmVqTUY5MDdZcmRFMWVoR2N5ZWF1ejhkOXg0MURxbnMybgp5QitINnVSU0psMlZ6YlIxNjh3
eUJ6TERpL0JNTnBpYVNacm91akJoMTVPWlI1Mnl4RXhmc3NrbEw0WTQ3L2NDMHZWeVlPYngxS21t
ClpGMlhyQ1M3bm9TWHMybjkrdEcwYUJIUkJBUGpHcXdtTkVrTkRkNnBwZktNZHlybW53QTBMNzQ0
V25tY2F1cTYwZ0lEd0hSTUk4NFcKNGI3dUZlcGRMUVJkSGdhTXNnSW5KVHlFbDNOMHFRNVdoNWlp
ZkZkNzNYSUhnR0NKVVNycnZtUlUyYXpycGt5MURtU2I3d05ETnlEMgo5OWJXbzkyMkVtSGRHTFhu
WXgyU2FjcFgwNG5OZlBjWmkvRmVmaGx6SjhtWHJjck5QV3F2TXFGWnVRSE5SK09pR3dUM2Q5aTVo
T2ZPClZuS3RsbFZiTzQxR2pEQ2pXVGx6d2ZWTTdETG9wV3M0ME5sSnRIUG5OT2R2VndFUnBKYlNq
aDJGdEdDQjg3NjU2NGNlSWlvdE5aZGUKTHFSMDVnelJsaTFpVTBtd0ZVTDNaMkJMZ0wwS0hZM0pO
T1hERks2N1cvTDZEbzNyd29YOTl2dDF0WVhRNTUrUHB2dnZKN3J4UnZ1ZQorZk9UVDVwUE0rb3A5
dTlQeXZzcjlWQkFwQ0ZVMCs3ZGhWUmRuZDNxalJHRll2SGk3T1lSdGRUUGlnSDQ0NC9SYlhVeFg3
NThwdHJWCjRjT21PNm5yMDh2RmhYSmUzWkxYZlV2YitnenZrdFZsWVlObFFRSFI3YmRuLy8wYVBw
em8xVmV6bjArVWN2am5INkxEaHllaXlCWWcKMk8wNmRhcC9WVmkxaW1qV0xQL3lDM3RPMkNrTURJ
Umt0NlBzQThmVzQwbVQvQzMyNXMya1l4NS9jdzFuYnVmUEUzMzNuYWhiUEI0dApaSzd1QVIrUC9m
ayswdURCUkI5ODBEczJzVm4rd3crNG1ndEFwdEF2dnhEZGNZZDl5Ny96NU1sRXUzYjFnZ0tPTnpm
amMwcGMzVlZnCkNJODNOZ2lxckNUYUkrWWNtR3p5bVRvNmlFNmZIaFpYM3lFVkZjR3lBaTNsKysv
elc5RDM2MGZBSXE2T1hJWU1DUllRNUk0V2l1NnIKcG9aVUJRKytSUDZYUUp6cXhOV3J6aTJxY2Zs
ZmdFUTVRaVgrN2JmOEc5RkRiSnc4V1JoWEYwZGxaWWxZRTl4dkdEeHUzVXAwOENEUgppaFg1SWZR
aFE4NmVMWWlydjZrUzg0dXpqYUFKMjlmR2pVUi8vVVV5TldDMW1sd1YvcGN1RWJEb284Ni80RThx
ekFTenpyeDUxb0Z5Ci92RUhxYXArN0JoSmw2c1ZvYlZydzF3RDc3S2h5eEpIYkgyOG53emhFMUFB
M0dyNm1qWFhGeFM2ZlYwZGlTV2JxTGFXQ0pVT09jVUoKYnZIUWYrVWlvWHVEdVIvZEhibzlkSC9v
QnNOSTZBVUVpN2o2S0d4ckMyTVJ6WllKMDhkUUVLQW9RR0dBNGhBbTZpT2RsYXp3akt2RApTTXp0
NWhPaDFVQzFob29kRm9JY0x5dnJqS3YzVGdqR2ZDTjBFUmlFWWpEcWxrZEI4QUxsdWZubWpyaTZV
bTFwQ2FJSTRjZ1Q4ekl3CjI4QjhFelNKVzl1NCtyV0YrcGpQQk9FUEEyZGxaWEJjdUhpUmdFVmNu
UXlqdVVDM3oyZUMwRWYzRlZSTGdReTU2YWJmNDRKQlBZMGUKVGRUVWxNOXdXSFVIS0pnMEMwS21X
QmFJdlFCa0oyRzJFSjZqZThtYWw4SDBzdDlrdGN4UDQrb0xmZUxFVHZyeFI3K0xFTjc4SU9qOQpW
SW5STXUrNXB4TllvSVhJeEtINFF0KzdON3dNQ3FKa1dLcmsxK0FSKzZ1QWdaQUZ5S2hSaldybitm
WFhJS29lemp5aDZMendnajlsCjY5dVhhT1JJQkFlNEFnalJ2K2krKzRpKy9OS2ZBa1FsRjR6by9i
QjlnZmNTcVFFZjJrSTBaTVBNbVIzMHhSZjRyWmVjSE1qMkFuRk0KRGo3eVNJY2ROaU5tNTQzdENH
SkxHVWQvU2xlV3pSWHdkb1pST1dNUkcvaVJMZE05dXNiejV3L0Vpb3RGMWUzcXNtQnAzRVFQUDB6
MAowVWRSWVpVLzVZUUdoTTFHMmFLcUtxS2lvazEyOHBaUWwyL1NaRGJUL1BrZE9qQ3k3L2FlTFE1
a2F6dGVlVG5Sa2lYb3JoSVBmR1J0CmFmWTJmVjYvTVNFNnZ4dzlldTNHZjYvdEJhbmU5OXowU2JT
U25uaUNaZDliTk5yRysrOFRUWjlPaEVWbU9IQ04zMHhUTmhaV0ZCVUoKdDFmS0FFUjQzaDFseFhG
QU50ckNzODhtZjJ0eHp6U2wrdGFuODV5WDR3QUFKZlV3NzFyRE5IUGVleTg1R0RaRDhJeEpzdE0x
Y1U3SAp0WWFDZ3RCRU11RnV6UG1NU2NZZ0xmZ3c5R0tNNWVmUVhNNWUrYVZ6UHgzbk0xZGF5V3dO
VVlTb09HRWtlQ3J5WWdDZU1VbGUrYVY2CkgrVmF2aHdsU3krdWxUb3dnd2UwYkxqWnlKUlJVUWFr
Snc3TTBFcGtKckdLeExHOGJ3WTJ6VFRGRDBUczlLSlVudkZLdy9SOW1FbGUKZSsyeXpBekthTEFI
SkMreUdTZVltYllJOS8rakt0UXpjWUpwNDJmRVRheWJvU2ErUjAzdE5lRW1GcUFJNzJhb0UyQVQz
a2xOQU9GTQpBeTBGMmhSa0NnNWNtMVozN2Z4U0ZkcUpualBwU1BrS0tKbTVHcmNyRmRWenBxWVRT
d1UzRzlGTm81RWhpbk5QbmZGSEZReVVlK3RXCmJ6VTdVY3ZBYjdCWHRiYWFkY1ovcFpWWTRTb3dZ
S3l2anpKNzB5ODd3bnduWTNoM3YyTUFXRmVIQ0c0bDRLRnhrb1N0Z0M2MzNzcU0KWnB3UGRPNWN6
NkxLWlR1Z2k0MnVZRkNsNFh6U0RYa1VWZkEyYmt5L2RVQ0kreEh5eUFIS1F2VmVPbWxTZU8xZHBs
NkFNV1BTQXdSZwpXSkhhRnRyODh1VXM5VjJ0R2FPbDVHcjNsYTR3N3dKanRTOGd1RE1SVUJacTA0
Uk15VFZCajZoeUNIN1duZEIyM2dzNnNLUU5qb0JTCnBkSElvSDE5K0tHcGppTDRkRmF0U2gwTWFG
TldSTGFlMmFoc1pwbzZDL2VzNE1RVkZjeHIxZ1RQekV4THNHdFg2bUJnbkdHcHRoTk0KOGROSU9z
S0RFbzNraHJEY01MTkVWYTZnM0lNSGV3TUNlWUVSK1BIalRhaTdFU1ptSXhFcDNBYTFmWldVTUdj
YUtpblROejNkLzJQTQpnWEN5VHRtUTZEb0tBZTZkNEFvZlppQUFscjVCYUMyTmplbXl4di9uQVVa
bFpmZGdvRlhBaEk2NlNSMmRkWTdFdFJSNmk4WmNRa1dlCmZqcThZeFowVTkyMURGaVNNZFAzMWx1
ZHFGTWttSitza0ZLQm9ZaTVwSFAwME1TZWV5NWN3RUNBSjVNWjBKNXdZQTRjZGVoSk1LOWsKakFu
NmQ2bk1iQTJsQlAvdnNSanpzbVhCZG1VWVp5UlRiUkhiQTdJRFVYQ3dBaWZkQlFsQk16dWQvS1Z5
YzhRYzNhekJUS0FtVDUvTwovUGJiZUFQbGxrK0VFWGlpUVY5NXVXVXVSNkFWbERHVmtFVHBWRDdN
ejBwbHhVZ2thNGxyYTl2NXNjZVlvYmxBQVlBeDc5QWg4OGhBCmFDTnR0MjBLOGczZEV2SkdXVkNt
N3FMZWhKbXBwc29tREZpS2tBMFNjNzJkRVlrSExRZm1tQVVMbU45OEV5R3dtYytja2NmU0pBaHIK
dEFiTVo0RHA2SVpLUzVsaDVzQ0E3dEZIRWVlOVhmTk9GTVBEVkFYVFNPZnFocDAwL3BQVlI0WGwx
WkxCTXZXRkR2ZmIrL1lWMElFRAoxajU2ZUYyREIxVnNNeHM3bG1qb1VHeTJ0eFphMTlVUi9mMDNY
SzJTT1BZa09uS0VkUE1SUENSZ1V6NFdUR1Byc2V4MjFRMldJMGMyClNqNy9rYTBBb2RvMkZqcEEz
R2dMUU5oWk5GZU9LZkJycTI1dHhYc25IRWJDUjZHNktCUlBiUG8vMGVMVTNaUjQxWUVqRi9Yakl1
NHEKNENGQjd0ZkxzVk1BQ1BXRy9QOERSbnEvYU02TjhxMEFBQUFBU1VWT1JLNUNZSUk9Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262284</attachid>
            <date>2015-10-01 14:20:24 -0700</date>
            <delta_ts>2015-10-01 17:48:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149053-20151001141958.patch</filename>
            <type>text/plain</type>
            <size>344645</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTA0MjUpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3MSBAQAorMjAxNS0xMC0wMSAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IEluc3RlYWQgb2YgbWVhc3VyaW5nIHRoZSBGUFMgb2YgdGhlIGFuaW1hdGlvbiwgdGhpcyBiZW5j
aG1hcmsgbWVhc3VyZXMgdGhlCisgICAgICAgIHRlc3QgY29tcGxleGl0eSB3aGVuIHJlbmRlcmlu
ZyBhdCBhIHNldC1wb2ludCBGUFMgd2hpY2ggc2hvdWxkIGJlIGxvd2VyCisgICAgICAgIHRoYW4g
NjAgRlBTLiBUaGlzIGJlbmNobWFyayB0cmllcyB0byBzdGF5IGF0IHRoZSBzZXQtcG9pbnQgRlBT
IGJ5IHVzaW5nCisgICAgICAgIGEgY2xvc2VkIGxvb3AgY29udHJvbCBzeXN0ZW0gUElEIGZ1bmN0
aW9uLiBUaGUgZ2FpbiBvZiB0aGUgc3lzdGVtIGlzIHBhc3NlZAorICAgICAgICBhcyBhIHBhcmFt
ZXRlciB3aGVuIHJ1bm5pbmcgdGhlIHRlc3QuIE1lYXN1cmluZyB0aGUgRlBTIGZhaXRoZnVsbHkg
cmVzdWx0cworICAgICAgICB2ZXJ5IGZsdWN0dWF0aW5nIHZhbHVlcy4gQSBLYWxtYW4gZmlsdGVy
IGlzIHVzZWQgdG8gZ2l2ZSBhIGJldHRlciBlc3RpbWF0ZQorICAgICAgICBmb3IgdGhlIGN1cnJl
bnQgRlBTLgorCisgICAgICAgIFRoZSBhbmltYXRpb24gb2YgdGhlIHRlc3RzIGlzIGRvbmUgbWFu
dWFsbHkuIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGlzCisgICAgICAgIGNhbGxlZCB3aXRoIGEg
Y2FsbGJhY2suIEluc2lkZSB0aGlzIGNhbGxiYWNrLCB0aGUgdGVzdCBpcyBhbmltYXRpbmcgYnkK
KyAgICAgICAgY2hhbmdpbmcgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZWxlbWVudHMgaW5zaWRlIHRo
ZSBwYWdlLiBUaGUgdGVzdCBjb21wbGV4aXR5CisgICAgICAgIG1heSBjaGFuZ2UgYWxzbyBpZiB0
aGUgY3VycmVudCBGUFMgaXMgbm90IGVxdWFsIHRvIHRoZSBkZXNpcmVkIEZQUy4KKyAgICAgICAg
CisgICAgICAgICogQW5pbW9tZXRlcjogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci9yZXNv
dXJjZXM6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2FsZ29yaXRobS5q
czogQWRkZWQuCisgICAgICAgIChBcnJheS5wcm90b3R5cGUuc3dhcCk6IFN3YXBzIHR3byBlbGVt
ZW50cyBpbiBhbiBhcnJheS4KKyAgICAgICAgKEhlYXApOiBCaW5hcnkgTWluL01heCBIZWFwIG9i
amVjdAorICAgICAgICAoSGVhcC5wcm90b3R5cGUuX3BhcmVudEluZGV4KTogR2l2ZW4gdGhlIGNo
aWxkIG5vZGUgaW5kZXgsIGl0IHJldHVybnMgdGhlIHBhcmVudCBpbmRleC4KKyAgICAgICAgKEhl
YXAucHJvdG90eXBlLl9sZWZ0SW5kZXgpOiBHaXZlbiB0aGUgcGFyZW50IG5vZGUgaW5kZXgsIGl0
IHJldHVybnMgdGhlIGxlZnQgbm9kZSBpbmRleC4KKyAgICAgICAgKEhlYXAucHJvdG90eXBlLl9y
aWdodEluZGV4KTogR2l2ZW4gdGhlIHBhcmVudCBub2RlIGluZGV4LCBpdCByZXR1cm5zIHRoZSBy
aWdodCBub2RlIGluZGV4LgorICAgICAgICAoSGVhcC5wcm90b3R5cGUuX2NoaWxkSW5kZXgpOiBH
aXZlbiB0aGUgcGFyZW50IG5vZGUgaW5kZXgsIGl0IHJldHVybnMgdGhlIGNoaWxkIGluZGV4IHRo
YXQgbWF5IHZpb2xhdGUgdGhlIGhlYXAgcHJvcGVydHkuCisgICAgICAgIChIZWFwLnByb3RvdHlw
ZS5pbml0KTogSW5pdGlhbGl6ZXMgdGhlIGhlYXAgc3RhdGUuCisgICAgICAgIChIZWFwLnByb3Rv
dHlwZS50b3ApOiBSZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgdGhlIHRvcCBvZiB0aGUgaGVh
cC4KKyAgICAgICAgKEhlYXAucHJvdG90eXBlLnB1c2gpOiBQdXNoZXMgYSBuZXcgbm9kZSBhdCB0
aGUgdG9wIG9mIHRoZSBoZWFwLgorICAgICAgICAoSGVhcC5wcm90b3R5cGUucG9wKTogRXh0cmFj
dHMgdGhlIHRvcCBub2RlIG9mIHRoZSBoZWFwLgorICAgICAgICAoSGVhcC5wcm90b3R5cGUuX2J1
YmJsZSk6IEZpeGVzIHRoZSBoZWFwIHByb3BlcnR5IGJ5IG1vdmluZyB1cHdhcmQuCisgICAgICAg
IChIZWFwLnByb3RvdHlwZS5fc2luayk6IEZpeGVzIHRoZSBoZWFwIHByb3BlcnR5IGJ5IG1vdmlu
ZyBkb3dud2FyZC4KKyAgICAgICAgKEhlYXAucHJvdG90eXBlLnN0cik6IFByaW50cyB0aGUgbm9k
ZXMgb2YgdGhlIGhlYXAgdG8gYSBzdHJpbmcuCisgICAgICAgIChIZWFwLnByb3RvdHlwZS52YWx1
ZXMpOiBSZXR1cm5zIHRoZSBsYXN0ICJzaXplIiBoZWFwIGVsZW1lbnRzIHZhbHVlcy4KKyAgICAg
ICAgCisgICAgICAgIChBbGdvcml0aG0uY3JlYXRlTWluSGVhcCk6IENyZWF0ZXMgYSBzaXplLWJv
dW5kZWQgbWluLWhlYXAgb2JqZWN0LgorICAgICAgICAoQWxnb3JpdGhtLmNyZWF0ZU1heEhlYXAp
OiBDcmVhdGVzIGEgc2l6ZS1ib3VuZGVkIG1heC1oZWFwIG9iamVjdC4KKyAgICAgICAgCisgICAg
ICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qczogQWRkZWQuCisgICAgICAg
IChQb2ludCk6IFBvaW50IG9iamVjdCBidXQgY2FuIGJlIHVzZWQgYXMgc2l6ZSBhbHNvLgorICAg
ICAgICAoUG9pbnQucG9pbnRPbkNpcmNsZSk6IEdpdmVuLCB0aGUgcmFkaXVzIG9mIHRoZSBjaXJj
bGUgYW5kIHRoZSBhbmdsZSBvZiB0aGUgcG9pbnQsIGl0IHJldHVybnMgYSBwb2ludCBvYmplY3Qu
CisgICAgICAgIChQb2ludC5wb2ludE9uRWxsaXBzZSk6IEdpdmVuLCB0aGUgcmFkaXVzZXMgb2Yg
dGhlIGVsbGlwc2UgYW5kIHRoZSBhbmdsZSBvZiB0aGUgcG9pbnQsIGl0IHJldHVybnMgYSBwb2lu
dCBvYmplY3QuCisgICAgICAgIChQb2ludC5wcm90b3R5cGUuZ2V0IHdpZHRoKTogU2hvdWxkIGJl
IGNhbGxlZCB3aGVuIHRoZSBwb2ludCBpcyB1c2VkIGFzIHNpemUuCisgICAgICAgIChQb2ludC5w
cm90b3R5cGUuZ2V0IGhlaWdodCk6IFNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgcG9pbnQgaXMg
dXNlZCBhcyBzaXplLgorICAgICAgICAoUG9pbnQucHJvdG90eXBlLmdldCBjZW50ZXIpOiBTaG91
bGQgYmUgY2FsbGVkIHdoZW4gdGhlIHBvaW50IGlzIHVzZWQgYXMgc2l6ZS4KKyAgICAgICAgKFBv
aW50LnByb3RvdHlwZS5hZGQpOiBSZXR1cm5zIGEgbmV3IHBvaW50ID0gdGhpcyArIG90aGVyLgor
ICAgICAgICAoUG9pbnQucHJvdG90eXBlLnN1YnRyYWN0KTogUmV0dXJucyBhIG5ldyBwb2ludCA9
IHRoaXMgLSBvdGhlci4KKyAgICAgICAgKFBvaW50LnByb3RvdHlwZS5tdWx0aXBseSk6IFJldHVy
bnMgYSBuZXcgcG9pbnQgPSB0aGlzICogb3RoZXIuCisgICAgICAgIChQb2ludC5wcm90b3R5cGUu
bW92ZSk6IE1vdmVzIHRoZSBwb2ludCBpbiBhIGdpdmVuIGRpcmVjdGlvbiwgdmVsb2NpdHksIHRp
bWUgcGVyaW9kLgorICAgICAgICAKKyAgICAgICAgKEluc2V0cyk6IFJlcHJlc2VudHMgYm9yZGVy
cyBvZiBhIGNvbnRhaW5lci4KKyAgICAgICAgKEluc2V0cy5wcm90b3R5cGUuZ2V0IHdpZHRoKTog
UmV0dXJucyBsZWZ0ICsgcmlnaHQuCisgICAgICAgIChJbnNldHMucHJvdG90eXBlLmdldCBoZWln
aHQpOiBSZXR1cm5zIHRvcCArIGJvdHRvbS4KKyAgICAgICAgCisgICAgICAgIChTaW1wbGVQcm9t
aXNlKToKKyAgICAgICAgKFNpbXBsZVByb21pc2UucHJvdG90eXBlLnRoZW4pOgorICAgICAgICAo
U2ltcGxlUHJvbWlzZS5wcm90b3R5cGUucmVzb2x2ZSk6CisgICAgICAgIE1vdmVkIGZyb20gQW5p
bW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMgc2luY2UgdGVzdHMg
YWxzbyBuZWVkIGl0LgorICAgICAgICAKKyAgICAgICAgKE9wdGlvbnMpOiBCZW5jaG1hcmsgcnVu
bmluZyBvcHRpb25zIGFzIHRoZXkgYXJlIHNldCBieSB0aGUgdXNlci4KKworICAgICAgICAoUHJv
Z3Jlc3NCYXIpOiBNYW5hZ2VzIGEgcHJvZ3Jlc3MgYmFyIGVsZW1lbnQuIFRoZSBwcm9ncmVzcyBi
YXIgaXMgZGl2aWRlZCBpbnRvIGVxdWFsIGxlbmd0aCByYW5nZXMuCisgICAgICAgIChQcm9ncmVz
c0Jhci5wcm90b3R5cGUuX3Byb2dyZXNzVG9QZXJjZW50KTogQ29udmVydHMgdGhlIHByb2dyZXNz
IGludG8gYSBwZXJjZW50YWdlLgorICAgICAgICAoUHJvZ3Jlc3NCYXIucHJvdG90eXBlLmluY1Jh
bmdlKTogTW92ZXMgdG8gdGhlIG5leHQgcmFuZ2UgKGEgcmFuZ2UgaXMgdGhlIHJ1bm5pbmcgdGlt
ZSBvZiBhIHNpbmdsZSB0ZXN0KS4KKyAgICAgICAgKFByb2dyZXNzQmFyLnByb3RvdHlwZS5zZXRQ
b3MpOiBEcmF3cyB0aGUgY3VycmVudCBwcm9ncmVzcyBpbiB0aGUgY3VycmVudCByYW5nZS4KKyAg
ICAgICAgCisgICAgICAgIChSZWNvcmRUYWJsZSk6IFNob3dzIHRoZSByZXN1bHRzIG9mIHJ1bm5p
bmcgYSBiZW5jaG1hcmsgaW4gYSB0YWJ1bGFyIGZvcm0uCisgICAgICAgIChSZWNvcmRUYWJsZS5w
cm90b3R5cGUuY2xlYXIpOiBDbGVhcnMgdGhlIHJlc3VsdHMgdGFibGUuCisgICAgICAgIChSZWNv
cmRUYWJsZS5wcm90b3R5cGUuX3Nob3dUaXRsZXMpOiBTaG93cyB0aGUgaGVhZGVyIHRpdGxlcyBh
bmQgYXBwZW5kcyB0aGUgc3ViLXRpdGxlcyB0byBhIHF1ZXVlLgorICAgICAgICAoUmVjb3JkVGFi
bGUucHJvdG90eXBlLl9zaG93SGVhZGVyKTogU2hvd3MgdGhlIHRhYmxlIGhlYWRlciB0aXRsZXMu
CisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dFbXB0eSk6IFNob3dzIGFuIGVt
cHR5IHRhYmxlIGNlbGwuCisgICAgICAgIChSZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dWYWx1
ZSk6IFNob3dzIGEgbnVtYmVyIHZhbHVlIGluIHRoZSByZXN1bHRzIHRhYmxlLgorICAgICAgICAo
UmVjb3JkVGFibGUucHJvdG90eXBlLl9zaG93U2FtcGxlcyk6IFNob3dzIGEgYnV0dG9uIGZvciB0
aGUgc2FtcGxlZCBkYXRhIGdyYXBoLgorICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLl9z
aG93VGVzdCk6IFNob3dzIHRoZSByZXN1bHRzIG9mIGEgc2luZ2xlIHRlc3QuCisgICAgICAgIChS
ZWNvcmRUYWJsZS5wcm90b3R5cGUuX3Nob3dTdWl0ZSk6IFNob3dzIHRoZSByZXN1bHRzIG9mIGEg
c2luZ2xlIHN1aXRlLgorICAgICAgICAoUmVjb3JkVGFibGUucHJvdG90eXBlLnNob3dSZWNvcmQp
OiBTaG93cyBhIHNpbmdsZSBpdGVyYXRpb24gZm9yIGEgc2luZ2xlIHRlc3QuCisgICAgICAgIChS
ZWNvcmRUYWJsZS5wcm90b3R5cGUuc2hvd0l0ZXJhdGlvbnMpOiBTaG93cyB0aGUgcmVzdWx0cyBv
ZiBhbGwgdGhlIHN1aXRlcyBvZiB0aGUgaXRlcmF0aW9ucy4gCisgICAgICAgIAorICAgICAgICAq
IEFuaW1vbWV0ZXIvcmVzb3VyY2VzL3NhbXBsZXIuanM6IEFkZGVkLgorICAgICAgICAoRXhwZXJp
bWVudCk6IFJlcHJlc2VudHMgYSBzYW1wbGluZyBleHBlcmltZW50LiAKKyAgICAgICAgKEV4cGVy
aW1lbnQucHJvdG90eXBlLl9pbml0KTogQ2FsbGVkIHdoZW4gdGhlIG9iamVjdCBpcyBjcmVhdGVk
IGFuZCB3aGVuIHN0YXJ0U2FtcGxpbmcoKSBpcyBjYWxsZWQuCisgICAgICAgIChFeHBlcmltZW50
LnByb3RvdHlwZS5zdGFydFNhbXBsaW5nKTogQ2FsbGVkIGFmdGVyIHdhcm11cCBwZXJpb2QuIFJl
c3RhcnRzIGNvbGxlY3Rpbmcgc2FtcGxlZCBkYXRhIHBvaW50cy4KKyAgICAgICAgKEV4cGVyaW1l
bnQucHJvdG90eXBlLnNhbXBsZSk6IEFkZCBhIG5ldyBkYXRhIHBvaW50LgorICAgICAgICAoRXhw
ZXJpbWVudC5wcm90b3R5cGUubWVhbik6IFJldHVybnMgdGhlIHNhbXBsZSBtZWFuIGZvciB0aGUg
Y3VycmVudCBzYW1wbGVkIGRhdGEgcG9pbnRzLgorICAgICAgICAoRXhwZXJpbWVudC5wcm90b3R5
cGUuc3RhbmRhcmREZXZpYXRpb24pOiBSZXR1cm5zIHRoZSBzYW1wbGUgc3RhbmRhcmQgZGV2aWF0
aW9uIGZvciB0aGUgY3VycmVudCBzYW1wbGVkIGRhdGEgcG9pbnRzLgorICAgICAgICAoRXhwZXJp
bWVudC5wcm90b3R5cGUucGVyY2VudGFnZSk6IFJldHVybnMgdGhlIHBlcmNlbnRhZ2Ugb2YgdGhl
IHN0YW5kYXJkIGRldmlhdGlvbiBkaXZpZGVkIHRvIHRoZSBtZWFuLgorICAgICAgICAoRXhwZXJp
bWVudC5wcm90b3R5cGUuY29uZmlkZW5jZUludGVydmFsRGVsdGEpOiBDYWxjdWxhdGVzIHRoZSBj
b25maWRlbmNlIGRlbHRhIGZvciB0aGUgY3VycmVudCBzYW1wbGVkIGRhdGEgZ2l2ZW4gYSBjb25m
aWRlbmNlIGxldmVsLgorICAgICAgICAoRXhwZXJpbWVudC5wcm90b3R5cGUuY29uY2Vybik6IFJl
dHVybnMgdGhlIGF2ZXJhZ2Ugb2YgdGhlIHdvcnN0IGdpdmVuIHBlcmNlbnRhZ2UgZnJvbSB0aGUg
c2FtcGxlZCBkYXRhLgorICAgICAgICAoRXhwZXJpbWVudC5wcm90b3R5cGUuc2NvcmUpOiBSZXR1
cm5zIGEgc2NvcmUgZm9yIHRoZSBzYW1wbGVkIGRhdGEuIEl0IGlzIHRoZSBnZW9tZXRyaWMgbWVh
biBvZiBzYW1wbGVNZWFuIGFuZCBjb25jZXJuLgorICAgICAgICAKKyAgICAgICAgKFNhbXBsZXIp
OiBSZXByZXNlbnRzIGEgY29tcG91bmQgZXhwZXJpbWVudC4gSXQgbWFuYWdlcyBzYW1wbGluZyBt
dWx0aXBsZSBkYXRhIHBvaW50cyBhdCB0aGUgc2FtZSB0aW1lIG9mZnNldC4KKyAgICAgICAgKFNh
bXBsZXIucHJvdG90eXBlLnN0YXJ0U2FtcGxpbmcpOiBDYWxsZWQgYWZ0ZXIgd2FybWluZyB1cCBw
ZXJpb2QuIFJlc3RhcnRzIGNvbGxlY3Rpbmcgc2FtcGxlZCBkYXRhIHBvaW50cy4KKyAgICAgICAg
KFNhbXBsZXIucHJvdG90eXBlLnNhbXBsZSk6IEFkZCBhIG5ldyBkYXRhIHZlY3RvciBhdCBhIGdp
dmVuIHRpbWUgb2Zmc2V0LgorCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvc3RhdGlz
dGljcy5qczogQ29waWVkIGZyb20gUGVyZm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvc3RhdGlzdGlj
cy5qcy4KKyAgICAgICAgKFN0YXRpc3RpY3MubmV3LnRoaXMuc2FtcGxlTWVhbik6IFJldHVybnMg
dGhlIHNhbXBsZSBtZWFuIGZvciBhIHNldCBvZiBkYXRhIHBvaW50cy4KKyAgICAgICAgKFN0YXRp
c3RpY3MubmV3LnRoaXMuZ2VvbWV0cmljTWVhbik6IFJldHVybnMgdGhlIGdlb21ldHJpYyBtZWFu
IG9mIGEgc2V0IG9mIGRhdGEuCisgICAgICAgIChTdGF0aXN0aWNzLm5ldy50aGlzLnN1cHBvcnRl
ZENvbmZpZGVuY2VMZXZlbHMpOgorICAgICAgICAoU3RhdGlzdGljcy5uZXcudGhpcy5jb25maWRl
bmNlSW50ZXJ2YWxEZWx0YSk6CisKKyAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lcjogQWRkZWQu
CisgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAg
VGhpcyBkaXJlY3RvcnkgaW5jbHVkZXMgdGVzdCBydW5uZXIgYW5kIGEgdGFibGUgb2YgdGhlIHRl
c3RzIHN1aXRlcyB0byBiZQorICAgICAgICBydW4uIEZyb20gdGhlIGhvbWUgcGFnZSwgaXQgY29s
bGVjdHMgdGhlIHNlbGVjdGVkIHRlc3Qgc3VpdGVzIGFuZCB0aGUgCisgICAgICAgIHJ1bm5pbmcg
b3B0aW9ucy4gSXQgbG9vcHMgdGhyb3VnaCBhbGwgdGhlIHRlc3RzLCBydW5zIHRoZW0gYW5kIGNv
bGxlY3RzCisgICAgICAgIHRoZWlyIHJ1bm5pbmcgcmVzdWx0cy4gQXQgdGhlIGVuZCwgaXQgc2hv
d3Mgc3VtbWFyeSByZXN1bHRzIGFuZCBhIGZpbmFsCisgICAgICAgIHNjb3JlLiBJdCBjYW4gYWxz
byBzaG93IGEgY2hhcnQgZm9yIGEgdGVzdCBzYW1wbGVkIGRhdGEuCisKKyAgICAgICAgKiBBbmlt
b21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0
ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzczogQWRkZWQuCisgICAgICAgIFRoZSBi
ZW5jaG1hcmsgcnVubmVyIHBhZ2UgYW5kIGNzcy4gICAgICAgIAorICAgICAgICAKKyAgICAgICAg
KiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qczogQWRkZWQuCisgICAg
ICAgICh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LndpbGxBZGRUZXN0RnJhbWUpOiBDYWxs
ZWQgYWZ0ZXIgdGhlIHRlc3QgPGlmcmFtZT4gaXMgY3JlYXRlZC4KKyAgICAgICAgKHdpbmRvdy5i
ZW5jaG1hcmtSdW5uZXJDbGllbnQuZGlkUnVuVGVzdCk6IENhbGxlZCBhZnRlciBydW5uaW5nIGEg
dGVzdCBpcyBmaW5pc2hlZC4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQu
d2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb24pOiBDYWxsZWQgYXQgdGhlIGJlZ2lubmluZyBiZWZvcmUg
cnVubmluZyBhbnkgdGVzdC4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQu
ZGlkUnVuU3VpdGVzKTogQ2FsbGVkIGFmdGVyIHJ1bm5pbmcgYWxsIHRlc3RzIG9mIGEgc3VpdGUu
CisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrUnVubmVyQ2xpZW50LmRpZEZpbmlzaExhc3RJdGVy
YXRpb24pOiBDYWxsZWQgYWZ0ZXIgcnVubmluZyB0aGUgbGFzdCB0ZXN0LgorICAgICAgICAKKyAg
ICAgICAgKHNob3dTZWN0aW9uKTogU2hvd3MgYSBzZWN0aW9uIGluIHRoZSBhbmltb21ldGVyLmh0
bWwgcGFnZS4KKyAgICAgICAgKHN0YXJ0VGVzdCk6IENhbGxlZCB3aGVuIHRoZSAiU3RhcnQgVGVz
dCIgYnV0dG9uIGlzIGNsaWNrZWQuCisgICAgICAgIChzaG93UmVzdWx0cyk6IENhbGxlZCBhZnRl
ciBmaW5pc2hpbmcgYWxsIHRoZSB0ZXN0cy4KKyAgICAgICAgKHNob3dHcmFwaCk6IENhbGxlZCB3
aGVuICJDbGljay4uLiIgYnV0dG9uIGluIHRoZSAiU2FtcGxlcyIgY29sdW1uIG9mIHRoZSByZXN1
bHRzIHRhYmxlIGlzIGNsaWNrZWQKKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci9ydW5u
ZXIvcmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanM6IENvcGllZCBmcm9tIFBlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMuCisgICAgICAg
IChCZW5jaG1hcmtSdW5uZXJTdGF0ZSk6IFRyYWNrcyB0aGUgY3VycmVudCBydW5uaW5nIDxzdWl0
ZSwgdGVzdD4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5jdXJyZW50
U3VpdGUpOiBSZXR1cm5zIHRoZSBjdXJyZW50IHJ1bm5pbmcgc3VpdGUuCisgICAgICAgIChCZW5j
aG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUuY3VycmVudFRlc3QpOiBSZXR1cm5zIHRoZSBjdXJy
ZW50IHJ1bm5pbmcgdGVzdC4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlw
ZS5pc0ZpcnN0VGVzdCk6IFJldHVybnMgdHJ1ZSBpZiB3ZSBhcmUgcnVubmluZyB0aGUgZmlyc3Qg
dGVzdCBpbiB0aGUgY3VycmVudCBzdWl0ZS4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lclN0YXRl
LnByb3RvdHlwZS5uZXh0KTogQWR2YW5jZXMgdG8gdGhlIG5leHQgdGVzdC4KKyAgICAgICAgKEJl
bmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5wcmVwYXJlQ3VycmVudFRlc3QpOiBDcmVhdGVz
IGEgbmV3IDxpZnJhbWU+IGFuZCB3YWl0cyBmb3IgaXQgdG8gbG9hZCBhIHRlc3QuCisgICAgICAg
IAorICAgICAgICAoQmVuY2htYXJrUnVubmVyKTogTWFuYWdlcyBydW5uaW5nIHRoZSB0ZXN0cyBh
bmQgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBiZW5jaG1hcmtSdW5uZXJDbGllbnQuCisgICAgICAg
IChCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLndhaXRGb3JFbGVtZW50KTogV2FpdHMgZm9yIGFu
IGVsZW1lbnQgdG8gYmUgY3JlYXRlZC4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5
cGUuX2FwcGVuZEZyYW1lKTogQ3JlYXRlcyBhIG5ldyA8aWZyYW1lPiBlbGVtZW50LgorICAgICAg
ICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcmVtb3ZlRnJhbWUpOiBSZW1vdmVkIHRoZSBj
dXJyZW50IDxpZnJhbWU+IGVsZW1lbnQuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIucHJvdG90
eXBlLl9ydW5UZXN0QW5kUmVjb3JkUmVzdWx0cyk6IFJ1bnMgdGhlIGN1cnJlbnQgdGVzdCBhbmQg
c2F2ZXMgaXRzIHJlc3VsdHMuCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLnN0
ZXApOiBFaXRoZXIgcnVucyB0aGUgY3VycmVudCB0ZXN0IGlmIHRoZXJlIGlzIG9yIHN0YXJ0IGEg
bmV3IGl0ZXJhdGlvbi4KKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUucnVuQWxs
U3RlcHMpOiBMb29wcyB0byBydW4gYWxsIHRoZSB0ZXN0cyBhbmQgbW92ZSB0byB0aGUgbmV4dCBp
dGVyYXRpb24uCisgICAgICAgICh0aGlzLl9ydW5OZXh0SXRlcmF0aW9uKTogU3RhcnRzIGEgbmV3
IGl0ZXJhdGlvbiBvciBzaG93IHRoZSByZXN1bHRzLgorICAgICAgICAoQmVuY2htYXJrUnVubmVy
LnByb3RvdHlwZS5ydW5NdWx0aXBsZUl0ZXJhdGlvbnMpOiBMb29wcyB0byBydW4gYWxsIHRoZSBp
dGVyYXRpb25zIGFuZCBzaG93IHRoZSByZXN1bHRzCisgICAgICAgIChCZW5jaG1hcmtSdW5uZXIu
cHJvdG90eXBlLl9maW5hbGl6ZSk6IEZpbmFsaXplcyB0aGUgY3VycmVudCBpdGVyYXRpb24gYW5k
IHN0YXJ0cyBhIG5ldyBvbmUuCisKKyAgICAgICAgKFNpbXBsZVByb21pc2UpOiBEZWxldGVkLgor
ICAgICAgICAoU2ltcGxlUHJvbWlzZS5wcm90b3R5cGUudGhlbik6IERlbGV0ZWQuCisgICAgICAg
IChTaW1wbGVQcm9taXNlLnByb3RvdHlwZS5yZXNvbHZlKTogRGVsZXRlZC4KKyAgICAgICAgKEJl
bmNobWFya1Rlc3RTdGVwKTogRGVsZXRlZC4KKyAgICAgICAgKEZpYm9uYWNjaSk6IERlbGV0ZWQu
CisgICAgICAgIFNpbXBsZVByb21pc2Ugd2FzIG1vdmVkIHQgQW5pbW9tZXRlci9yZXNvdXJjZXMv
ZXh0ZW5zaW9ucy5qcyBiZWNhdXNlIGl0IGlzIHVzZWQgYnkgdGhlIHJ1bm5lciBhbmQgdGhlIHRl
c3RzLgorICAgICAgICAKKyAgICAgICAgKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3dhaXRB
bmRXYXJtVXApOiBEZWxldGVkLgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5f
cnVuVGVzdCk6IERlbGV0ZWQuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuY3Vy
cmVudFN1aXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5j
dXJyZW50VGVzdCk6IERlbGV0ZWQuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUu
bmV4dCk6IERlbGV0ZWQuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuaXNGaXJz
dFRlc3QpOiBEZWxldGVkLgorICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBlLnByZXBh
cmVDdXJyZW50U3VpdGUpOiBEZWxldGVkLgorICAgICAgICBCZW5jaG1hcmtTdGF0ZSB3YXMgcmVu
YW1lZCB0byBCZW5jaG1hcmtSdW5uZXJTdGF0ZSB0byBub3QgYmUgY29uZnVzZWQgd2l0aCB0aGUg
dGVzdHMgQmVuY2htYXJrU3RhdGUuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVu
bmVyL3Jlc291cmNlcy9kMy5taW4uanM6IENvcGllZCBmcm9tIFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjIvanMvZDMvZDMubWluLmpzLgorICAgICAgICBOZWVkZWQgZm9yIGRyYXdp
bmcgY2hhcnRzIGZvciB0aGUgc2FtcGxlZCBzY29yZXMgYW5kIGZyYW1lIHJhdGVzLgorICAgICAg
ICAKKyAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvZ3JhcGguanM6IEFkZGVk
LgorICAgICAgICAoZ3JhcGgpOiBEcmF3cyBhIGNoYXJ0IGZvciBhIHRlc3Qgc2FtcGxlZCBkYXRh
LiBJdCBzaG93cyB0d28geS1heGVzOiBvbmUgZm9yIHRoZSBhbmltYXRlZCBpdGVtcyBhbmQgdGhl
IHNlY29uZCBmb3IgRlBTLgorCisgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2Vz
L3Rlc3RzLmpzOiBBZGRlZC4KKyAgICAgICAgKFN1aXRlcy5wdXNoLnByZXBhcmUpOgorICAgICAg
ICAoU3VpdGVzLnB1c2gucnVuKToKKyAgICAgICAgKHN1aXRlRnJvbU5hbWUpOgorCisgICAgICAg
ICogQW5pbW9tZXRlci90ZXN0czogQWRkZWQuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVy
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXM6IEFkZGVkLgorICAgICAgICAKKyAg
ICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52
YXMtaW1hZ2VzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdl
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbDogQWRk
ZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctc3ZnLXNoYXBlcy5odG1sOiBBZGRlZC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanM6IEFkZGVk
LgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZSk6IEJhc2UgY2xhc3MgZm9yIGEgYm91bmNpbmcg
cGFydGljbGUuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5jZW50ZXIpOiBS
ZXR1cm5zIHRoZSBjZW50ZXIgcG9pbnQgb3IgdGhlIHBhcnRpY2xlLgorICAgICAgICAoQm91bmNp
bmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZSk6IE1vdmVzIHRoZSBwYXJ0aWNsZSBiYXNlZCBv
biBpdHMgY3VycmVudCBwb3NpdGlvbiwgYW5nbGUgYW5kIHZlbG9jaXR5LgorICAgICAgICAKKyAg
ICAgICAgKEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IpOiBBIHN1YiBjbGFzcyBvZiBBbmltYXRv
ci4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0YWdlKTogUmVwcmVzZW50
cyB0aGUgY29udGFpbmVyIG9mIGFsbCB0aGUgYm91bmNpbmcgcGFydGljbGVzLgorICAgICAgICAo
Qm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucGFyc2VTaGFwZVBhcmFtdGVycyk6IEdl
dHMgdGhlIHNoYXBlIHBhcmFtZXRlcnMgZm9yIHNoYXBlIGFuaW1hdGluZyB0ZXN0cy4KKyAgICAg
ICAgKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnJhbmRvbVJvdGF0ZXIpOiBDcmVh
dGVzIGEgcm90YXRlciBmb3IgdGhlIHBhcnRpY2xlcy4KKyAgICAgICAgKEJvdW5jaW5nUGFydGlj
bGVzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBBbmltYXRlcyBhbGwgdGhlIHBhcnRpY2xlcy4K
KyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnR1bmUpOiBDaGFuZ2Vz
IHRoZSB0ZXN0IGJ5IGFkZGluZyBvciByZW1vdmluZyBwYXJ0aWNsZXMuCisgICAgICAgIAorICAg
ICAgICAoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmspOiBSdW5zIHRoZSBiZW5jaG1hcmsgZm9y
IGJvdW5jaW5nIHBhcnRpY2xlcyB0ZXN0LgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNCZW5j
aG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyBhbiBhbmltYXRvciBvZiB0
eXBlIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLXNoYXBlcy5qczog
QWRkZWQuCisgICAgICAgIChCb3VuY2luZ0Nzc1NoYXBlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNp
bmdQYXJ0aWNsZSBmb3IgYW5pbWF0aW5nIENTUyBzaGFwZXMuCisgICAgICAgIChCb3VuY2luZ0Nz
c1NoYXBlLnByb3RvdHlwZS5fY3JlYXRlU3Bhbik6IENyZWF0ZXMgYSA8c3Bhbj4gZWxlbWVudCBh
bmQgdGFrZXMgdGhlIHNoYXBlIGFuZCBjbGlwcGluZyBjbGFzc2VzIGludG8gY29uc2lkZXJhdGlv
bi4KKyAgICAgICAgKEJvdW5jaW5nQ3NzU2hhcGUucHJvdG90eXBlLl9tb3ZlKTogTW92ZXMgdGhl
IHBhcnRpY2xlIHRvIGEgbmV3IGxvY2F0aW9uLiBBcHBseSB0cmFuc2Zvcm0gc2luY2UgaXQgZG9l
cyBub3QgcmVxdWlyZSBsYXlvdXQuCisgICAgICAgIChCb3VuY2luZ0Nzc1NoYXBlLnByb3RvdHlw
ZS5hbmltYXRlKTogUm90YXRlcyBhbmQgbW92ZXMgdGhlIHNoYXBlIHRvIGEgbmV3IGxvY2F0aW9u
LgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UpOiBBIHN1YiBjbGFz
cyBvZiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlIGZvciBhbmltYXRpbmcgQ1NTIHNoYXBlcy4KKyAg
ICAgICAgKEJvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTog
Q3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNpbmdDc3NTaGFwZS4KKyAgICAgICAgKEJv
dW5jaW5nQ3NzU2hhcGVzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCk6IFJl
bW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBmb3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4g
bGlzdC4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyayk6IEEg
c3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrIGZvciBhbmltYXRpbmcgQ1NT
IHNoYXBlcy4KKyAgICAgICAgKEJvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5j
cmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nQ3NzU2hhcGVzU3Rh
Z2UuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBi
ZW5jaG1hcmsgb2YgdHlwZSBCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyay4KKyAgICAgICAgCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLWNzcy1pbWFnZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdDc3NJbWFnZSk6
IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUgZm9yIGFuaW1hdGluZyBDU1MgaW1hZ2Vz
LgorICAgICAgICAoQm91bmNpbmdDc3NJbWFnZS5wcm90b3R5cGUuX21vdmUpOiBNb3ZlIHRoZSBw
YXJ0aWNsZSB0byBhIG5ldyBsb2NhdGlvbi4gQXBwbHkgdHJhbnNmb3JtIHNpbmNlIGl0IGRvZXMg
bm90IHJlcXVpcmUgbGF5b3V0LgorICAgICAgICAoQm91bmNpbmdDc3NJbWFnZS5wcm90b3R5cGUu
YW5pbWF0ZSk6IFJvdGF0ZXMgYW5kIG1vdmVzIHRoZSBzaGFwZSB0byBhIG5ldyBsb2NhdGlvbi4K
KyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlKTogQSBzdWIgY2xhc3Mg
b2YgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZSBmb3IgYW5pbWF0aW5nIENTUyBpbWFnZXMuCisgICAg
ICAgIChCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENy
ZWF0ZXMgYSBwYXJ0aWNsZSBvZiB0eXBlIEJvdW5jaW5nQ3NzSW1hZ2UuCisgICAgICAgIChCb3Vu
Y2luZ0Nzc0ltYWdlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1v
dmVzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZm9ybSB0aGUgcGFyZW50IGNoaWxkcmVuIGxp
c3QuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmspOiBBIHN1
YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyayBmb3IgYW5pbWF0aW5nIENTUyBp
bWFnZXMuCisgICAgICAgIChCb3VuY2luZ0Nzc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3Jl
YXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ0Nzc0ltYWdlc1N0YWdl
LgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVu
Y2htYXJrIG9mIHR5cGUgQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsuCisgICAgICAgIAorICAg
ICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3Vu
Y2luZy1jYW52YXMtcGFydGljbGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFz
UGFydGljbGUpOiBBIGJhc2Ugc3ViLWNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUgZm9yIGFuaW1h
dGluZyBjYW52YXMgcGFydGljbGVzLgorICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5w
cm90b3R5cGUuX2FwcGx5Um90YXRpb24pOiBBcHBseSB0aGUgcGFydGljbGUgcm90YXRpb24tYXJv
dW5kLWNlbnRlciB0cmFuc2Zvcm0gdG8gdGhlIGNhbnZhcyBjb250ZXh0LgorICAgICAgICAoQm91
bmNpbmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5cGUuX2FwcGx5Q2xpcHBpbmcpOiBBcHBseSB0aGUg
cGFydGljbGUgY2xpcHBpbmcgdG8gdGhlIGNhbnZhcyBjb250ZXh0LgorICAgICAgICAoQm91bmNp
bmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5cGUuX2RyYXcpOiBBIG5vbi1pbXBsZW1lbnRlZCB2ZXJz
aW9uIG9mIHRoZSBkcmF3aW5nIGZ1bmN0aW9uLgorICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0
aWNsZS5wcm90b3R5cGUuYW5pbWF0ZSk6IENhcnJpZXMgb3V0IGFsbCB0aGUgc3RlcHMgdG8gcmVk
cmF3IHRoZSBjYW52YXMgcGFydGljbGUuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdDYW52
YXNQYXJ0aWNsZXNTdGFnZSk6IEEgYmFzZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNT
dGFnZSBmb3IgYW5pbWF0aW5nIGNhbnZhcyBwYXJ0aWNsZXMuCisgICAgICAgIAorICAgICAgICAo
Qm91bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvcik6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9m
IEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IgZm9yIGFuaW1hdGluZyBjYW52YXMgcGFydGljbGVz
LgorICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUuYW5p
bWF0ZSk6IE92ZXJyaWRlcyB0aGUgYmFzZSBjbGFzcyBtZXRob2QgdG8gY2xlYXIgdGhlIGNhbnZh
cyBiZWZvcmUgcmVkcmF3aW5nIHRoZSBzdGFnZS4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2lu
Z0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyayk6IEEgYmFzZSBzdWItY2xhc3Mgb2YgU3RhZ2VCZW5j
aG1hcmsgZm9yIGFuaW1hdGluZyBjYW52YXMgcGFydGljbGVzLgorICAgICAgICAoQm91bmNpbmdD
YW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRl
cyB0aGUgY2FudmFzIHBhcnRpY2xlcyBhbmltYXRvci4KKyAgICAgICAgCisgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZh
cy1zaGFwZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZSk6IEEgY29u
Y3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nQ2FudmFzUGFydGljbGUgZm9yIGFuaW1hdGluZyBj
YW52YXMgc2hhcGVzLgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUuX2Fw
cGx5RmlsbCk6IFNldHMgdGhlIGZpbGxTdHlsZSBpbiB0aGUgY2FudmFzIGNvbnRleHQuCisgICAg
ICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5fZHJhd1NoYXBlKTogQ2FycmllcyBv
dXQgdGhlIGFjdHVhbCBkcmF3aW5nLgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZS5wcm90
b3R5cGUuX2RyYXcpOiBDYXJyaWVzIG91dCBhbGwgdGhlIHN0ZXBzIHRvIGRyYXcgdGhlIHNoYXBl
LgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UpOiBBIGNvbmNy
ZXRlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlIGZvciBhbmltYXRpbmcgY2Fu
dmFzIHNoYXBlcy4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UucHJvdG90eXBl
LmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNpbmdDYW52
YXNTaGFwZS4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFy
ayk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2ht
YXJrIGZvciBhbmltYXRpbmcgY2FudmFzIHNoYXBlcy4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFz
U2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBv
ZiB0eXBlIEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UuCisgICAgICAgICh3aW5kb3cuYmVuY2ht
YXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBCb3VuY2luZ0Nh
bnZhc1NoYXBlc0JlbmNobWFyay4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzOiBBZGRlZC4K
KyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2UpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBC
b3VuY2luZ0NhbnZhc1BhcnRpY2xlIGZvciBhbmltYXRpbmcgY2FudmFzIGltYWdlcy4KKyAgICAg
ICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90eXBlLl9kcmF3KTogRHJhd3MgYW4gaW1hZ2Ug
b24gdGhlIGNvbnRleHQgb2YgYSBjYW52YXMuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdD
YW52YXNJbWFnZXNTdGFnZSk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nQ2FudmFz
UGFydGljbGVzQmVuY2htYXJrIGZvciBhbmltYXRpbmcgY2FudmFzIGltYWdlcy4KKyAgICAgICAg
KEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3Jl
YXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNpbmdDYW52YXNJbWFnZS4KKyAgICAgICAgCisg
ICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayk6IEEgY29uY3JldGUgc3ViLWNs
YXNzIG9mIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrIGZvciBhbmltYXRpbmcgY2Fu
dmFzIGltYWdlcy4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3Rv
dHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nQ2FudmFz
SW1hZ2VzU3RhZ2UuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENy
ZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay4K
KworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNl
cy9ib3VuY2luZy1zdmctcGFydGljbGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nU3Zn
UGFydGljbGUpOiBBIGJhc2Ugc3ViLWNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUgZm9yIGFuaW1h
dGluZyBTVkcgcGFydGljbGVzLgorICAgICAgICAoQm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5
cGUuX2FwcGx5Q2xpcHBpbmcpOiBBcHBseSB0aGUgcGFydGljbGUgY2xpcHBpbmcgYnkgc2V0dGlu
ZyB0aGUgJ2NsaXAtcGF0aCcgYXR0cmlidXRlIG9mIHRoZSBTVkdFbGVtZW50LgorICAgICAgICAo
Qm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5cGUuX21vdmUpOiBNb3ZlcyB0aGUgcGFydGljbGUg
dG8gYSBuZXcgbG9jYXRpb24uIEFwcGx5IHRyYW5zZm9ybSBzaW5jZSBpdCBkb2VzIG5vdCByZXF1
aXJlIGxheW91dC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBlLmFuaW1h
dGUpOiBSb3RhdGVzIGFuZCBtb3ZlcyB0aGUgc2hhcGUgdG8gYSBuZXcgbG9jYXRpb24uCisgICAg
ICAgIChCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQ
YXJ0aWNsZXNTdGFnZSBmb3IgYW5pbWF0aW5nIFNWR0VsZW1lbnRzLgorICAgICAgICAoQm91bmNp
bmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuX2NyZWF0ZURlZnMpOiBDcmVhdGVzIGFuIFNW
R0RlZnNFbGVtZW50LgorICAgICAgICAoQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5
cGUuX2Vuc3VyZURlZnNJc0NyZWF0ZWQpOiBFbnN1cmVzIHRoZXJlIGlzIG9ubHkgb25lIFNWR0Rl
ZnNFbGVtZW50IGlzIGNyZWF0ZWQuCisgICAgICAgIChCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdl
LnByb3RvdHlwZS5fY3JlYXRlQ2xpcFN0YXIpOiBDcmVhdGVzIGFuIFNWR0NsaXBQYXRoRWxlbWVu
dCBhbmQgc2V0cyBpdHMgJ2QnIGF0dHJpYnV0ZSB0byBhIHN0YXIgbGlrZSBzaGFwZS4KKyAgICAg
ICAgKEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmVuc3VyZUNsaXBTdGFySXND
cmVhdGVkKTogRW5zdXJlIHRoZXJlIGlzIG9ubHkgb25lIHN0YXIgU1ZHQ2xpcFBhdGhFbGVtZW50
IGlzIGNyZWF0ZWQuCisgICAgICAgIChCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlw
ZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVu
dCBmb3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4gbGlzdC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpz
OiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGUpOiBBIGNvbmNyZXRlIHN1Yi1jbGFz
cyBvZiBCb3VuY2luZ1NWR1BhcnRpY2xlIGZvciBhbmltYXRpbmcgU1ZHIHNoYXBlcy4KKyAgICAg
ICAgKEJvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLl9jcmVhdGVTaGFwZSk6IENyZWF0ZXMgYW4g
U1ZHIHNoYXBlLgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2FwcGx5Rmls
bCk6IEFwcGxpZXMgdGhlIHNlbGVjdGVkIGZpbGwgc3R5bGUgdG8gdGhlIFNWRyBzaGFwZS4KKyAg
ICAgICAgCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlKTogQSBjb25jcmV0ZSBzdWIt
Y2xhc3Mgb2YgQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZSBmb3IgYW5pbWF0aW5nIFNWRyBzaGFw
ZXMuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVHcmFk
aWVudCk6IENyZWF0ZXMgYW4gU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LgorICAgICAgICAoQm91
bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEg
cGFydGljbGUgb2YgdHlwZSBCb3VuY2luZ1N2Z1NoYXBlLgorICAgICAgICAoQm91bmNpbmdTdmdT
aGFwZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkKTogRW5zdXJlcyB0aGUg
YXR0YWNoZWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50IGlzIHJlbW92ZWQgZnJvbSB0aGUgU1ZH
RGVmc0VsZW1lbnQuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1h
cmspOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyayBm
b3IgYW5pbWF0aW5nIFNWRyBpbWFnZXMuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc0JlbmNo
bWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3Vu
Y2luZ1N2Z1NoYXBlc1N0YWdlLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVh
dGUpOiBDcmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5cGUgQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1h
cmsuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJv
dW5jaW5nU3ZnSW1hZ2UpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1NWR1BhcnRp
Y2xlIGZvciBhbmltYXRpbmcgU1ZHIGltYWdlcy4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2lu
Z1N2Z0ltYWdlc1N0YWdlKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdTVkdQYXJ0
aWNsZXNCZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBTVkcgaW1hZ2VzLgorICAgICAgICAoQm91bmNp
bmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFy
dGljbGUgb2YgdHlwZSBCb3VuY2luZ1N2Z0ltYWdlLgorICAgICAgICAKKyAgICAgICAgKEJvdW5j
aW5nU3ZnSW1hZ2VzQmVuY2htYXJrKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdQ
YXJ0aWNsZXNCZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBTVkcgaW1hZ2VzLgorICAgICAgICAoQm91
bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBh
IHN0YWdlIG9mIHR5cGUgQm91bmNpbmdTdmdJbWFnZXNTdGFnZS4KKyAgICAgICAgKHdpbmRvdy5i
ZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJvdW5j
aW5nU3ZnSW1hZ2VzQmVuY2htYXJrLiAKKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVz
b3VyY2VzOiBBZGRlZC4KKyAgICAgICAgVGhpcyBkaXJlY3RvcnkgaW5jbHVkZXMgdGhlIHNjcmlw
dCB3aGljaCBpcyByZXF1aXJlZCB0byBydW4gYW4gYWRhcHRpdmUgCisgICAgICAgIGdyYXBoaWNz
IGJlbmNobWFyay4gRnJvbSBhbiBlbXB0eSB0ZXN0IHBhZ2UsIHRoZSBzZXQgb2YgY2xhc3NlcyBp
biB0aGlzCisgICAgICAgIGRpcmVjdG9yeSBhcmUgcmVzcG9uc2libGUgZm9yIG1lYXN1cmluZyB0
aGUgY3VycmVudCBmcmFtZSByYXRlIGFuZAorICAgICAgICBjaGFuZ2luZyB0aGUgdGVzdCB0byBy
ZWFjaCBhIGRlc2lyZWQgRlBTLiBJdCBrZWVwcyBhc2tpbmcgdGhlIHRlc3QgcGFnZQorICAgICAg
ICB0byB0dW5lIGl0c2VsZiBieSBhIGNlcnRhaW4gdmFsdWUgdG8gaW5jcmVhc2Ugb3IgZGVjcmVh
c2UgdGhlIGZyYW1lIHJhdGUuCisgICAgICAgIEl0J3MgYWxzbyByZXNwb25zaWJsZSBmb3Igc2Ft
cGxpbmcgdGhlIHRlc3Qgc3RhdGUgYW5kIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgIGZyYW1l
IHJhdGUuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21h
aW4uanM6IEFkZGVkLgorICAgICAgICAoQmVuY2htYXJrU3RhdGUpOiBUcmFja3MgdGhlIHN0YXRl
IG9mIHRoZSBiZW5jaG1hcmsgdGVzdC4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlw
ZS5fdGltZU9mZnNldCk6IFJldHVybnMgdGhlIHRpbWVPZmZzZXQgb2YgYSBzdGFnZS4KKyAgICAg
ICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5fbWVzc2FnZSk6IFJldHVybnMgdGhlIG1lc3Nh
Z2Ugb2YgYSBzdGFnZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS51cGRhdGUp
OiBTZXRzIHRoZSBjdXJyZW50VGltZU9mZnNldCB0byBhIG5ldyB2YWx1ZS4KKyAgICAgICAgKEJl
bmNobWFya1N0YXRlLnByb3RvdHlwZS5zYW1wbGluZ1RpbWVPZmZzZXQpOiBSZXR1cm5zIHRoZSB0
aW1lT2Zmc2V0IG9mIHRoZSBzYW1wbGluZyBzdGFnZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRl
LnByb3RvdHlwZS5jdXJyZW50U3RhZ2UpOiBSZXR1cm5zIHRoZSBjdXJyZW50IHN0YWdlIG9mIHRo
ZSBiZW5jaG1hcmsuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuY3VycmVudE1l
c3NhZ2UpOiBSZXR1cm5zIHRoZSBtZXNzYWdlIG9mIHRoZSBjdXJyZW50IHN0YWdlIGFuZCB0aW1l
T2Zmc2V0LgorICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBlLmN1cnJlbnRQcm9ncmVz
cyk6IFJldHVybnMgYSBwZXJjZW50YWdlIG9mIGhvdyBtdWNoIHRoZSBiZW5jaG1hcmsgaXMgcnVu
bmluZy4KKyAgICAgICAgCisgICAgICAgIChBbmltYXRvcik6IE1hbmFnZXMgYW5pbWF0aW5nIHRo
ZSB0ZXN0LgorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0KTogQ2FsbGVkIGlmIGFu
aW1hdGluZyB1c2luZyBzZXRJbnRlcnZhbCBpcyByZXF1ZXN0ZWQuCisgICAgICAgIChBbmltYXRv
ci5wcm90b3R5cGUudGltZURlbHRhKTogUmV0dXJucyB0aGUgY3VycmVudCB0aW1lRGVsdGEgCisg
ICAgICAgIChBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6IE1hbmFnZXMgdGhlIHRlc3QgYW5p
bWF0aW9uLgorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGVMb29wKTogQ2FsbGVk
IGlmIGFuaW1hdGluZyB1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaXMgcmVxdWVzdGVkLiAK
KworICAgICAgICAoQmVuY2htYXJrKTogTWFuYWdlcyBydW5uaW5nIHRoZSB0ZXN0IGJlbmNobWFy
ayBhbmQgcmVjb3JkaW5nIHRoZSBzYW1wbGVkIGRhdGEuCisgICAgICAgIChCZW5jaG1hcmsucHJv
dG90eXBlLnN0YXJ0KTogU3RhcnRzIHRoZSBiZW5jaG1hcmsuCisgICAgICAgIChCZW5jaG1hcmsu
cHJvdG90eXBlLnVwZGF0ZSk6IENhbGxlZCBmcm9tIHRoZSBhbmltYXRvci5hbmltYXRlKCkgdG8g
Y2hhbmdlIHRoZSBjb21wbGV4aXR5IG9mIHRoZSB0ZXN0LgorICAgICAgICAoQmVuY2htYXJrLnBy
b3RvdHlwZS5yZWNvcmQpOiBTaG93cyB0aGUgY3VycmVudCAobm90IGZpbmFsKSByZXN1bHRzIG9m
IHRoZSBiZW5jaG1hcmsuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnJlc29sdmVXaGVu
RmluaXNoZWQpOiBTcGlucyB1bnRpbCB0aGUgYmVuY2htYXJrIGlzIGZpbmlzaGVkIGFuZCByZXR1
cm5zIGl0cyByZXN1bHRzLgorICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS5ydW4pOiBTdGFy
dHMgdGhlIHRlc3QsIHJ1bnMgaXQsIHdhaXRzIHVudGlsIGl0IGlzIGZpbmlzaGVkIGFuZCByZXR1
cm4gaXRzIHJlc3VsdHMuCisgICAgICAgICh3aW5kb3cucnVuQmVuY2htYXJrKTogQ2FsbGVkIGZy
b20gdGhlIGJlbmNobWFyayBydW5uZXIgdGhyb3VnaCB0aGUgc3VpdGUgY29udHJvbGxlciBydW4t
Y2FsbGJhY2suCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpz
OiBBZGRlZC4KKyAgICAgICAgKE1hdHJpeCk6IEEgbWF0cml4IG9iamVjdC4KKyAgICAgICAgKFZl
Y3RvcjMpOiBBIHZlY3RvciBvZiBzaXplIDMgb2JqZWN0LgorICAgICAgICAoTWF0cml4Myk6IEEg
bWF0cml4IG9mIHNpemUgM3gzIG9iamVjdC4KKyAgICAgICAgCisgICAgICAgIChQSURDb250cm9s
bGVyKTogQ2xvc2VkLWxvb3AgY29udHJvbGxlciBmb3IgYSBzZXQtcG9pbnQgeS4KKyAgICAgICAg
KFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl9zYXQpOiBMaW1pdHMgdGhlIG91dHB1dCB0byBhIGNl
cnRhaW4gcmFuZ2UuCisgICAgICAgIChQSURDb250cm9sbGVyLnByb3RvdHlwZS50dW5lKTogR2l2
ZW4gdGhlIGN1cnJlbnQgb3V0cHV0IG9mIGEgc3lzdGVtLCBpdCBwcm9kdWNlcyBhIG5ldyBwaWQg
dmFsdWUgZm9yIHR1bmluZyBpdC4KKyAgICAgICAgCisgICAgICAgIChLYWxtYW5Fc3RpbWF0b3Ip
OiBJbXBsZW1lbnQgS2FsbWFuIGZpbHRlciB0byBnZXQgYW4gZXN0aW1hdGUgZm9yIGEgc2FtcGxl
ZCBkYXRhIHBvaW50LgorICAgICAgICAoS2FsbWFuRXN0aW1hdG9yLnByb3RvdHlwZS5lc3RpbWF0
ZSk6IFJldHVybnMgYW4gZXN0aW1hdGUgZm9yIGZvciBhIHNhbXBsZWQgZGF0YSBwb2ludC4KKwor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3V0aWxpdGllcy5qczogQWRkZWQu
CisgICAgICAgICh3aW5kb3cuVXRpbGl0aWVzLl9wYXJzZSk6IEdpdmVuIGEgc2VwYXJhdG9yIGNo
YXJhY3RlciwgaXQgcGFyZXNlcyBhIHN0cmluZyB0byBhIHNldCBvZiA8a2V5LCB2YWx1ZT4gcGFp
cnMuCisgICAgICAgICh3aW5kb3cuVXRpbGl0aWVzLnBhcnNlUGFyYW1ldGVycyk6IFBhcnNlcyBh
IHRlc3QgcGFyYW1ldGVycy4KKyAgICAgICAgKHdpbmRvdy5VdGlsaXRpZXMucGFyc2VBcmd1bWVu
dHMpOiBQYXJzZXMgYSB0YWcgYXJndW1lbnRzLgorICAgICAgICAod2luZG93LlV0aWxpdGllcy5l
eHRlbmRPYmplY3QpOiBBZGRzIHRoZSBhdHRyaWJ1dGVzIGFuZCB0aGVpciB2YWx1ZXMgb2YgYW4g
b2JqZWN0IHRvIGFub3RoZXIgb2JqZWN0LgorICAgICAgICAod2luZG93LlV0aWxpdGllcy5jb3B5
T2JqZWN0KTogQ29waWVzIHRoZSBhdHRyaWJ1dGVzIGFuZCB0aGVpciB2YWx1ZXMgb2YgYW4gb2Jq
ZWN0IHRvIGEgbmV3IG9iamVjdC4KKyAgICAgICAgKHdpbmRvdy5VdGlsaXRpZXMubWVyZ2VPYmpl
Y3RzKTogQ29waWVzIHRoZSBhdHRyaWJ1dGVzIGFuZCB0aGVpciB2YWx1ZXMgb2YgdHdvIG9iamVj
dHMgdG8gYSBuZXcgb2JqZWN0LgorICAgICAgICAod2luZG93LlV0aWxpdGllcy5jcmVhdGVTdmdF
bGVtZW50KTogQ3JlYXRlcyBhbiBTVkdFbGVtZW50IGdpdmVuIGl0cyBuYW1lIGFuZCBpdHMgYXR0
cmlidXRlcy4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMv
c3RhZ2UuY3NzOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9z
dGFnZS5qczogQWRkZWQuCisgICAgICAgIChSb3RhdGVyKTogTWFuYWdlcyByb3RhdGluZyBhbiBh
bmdsZSB3aXRoaW4gYSBmaXhlZCB0aW1lIGludGVydmFsLgorICAgICAgICAoUm90YXRlci5wcm90
b3R5cGUuZ2V0IGludGVydmFsKTogUmV0dXJucyB0aGUgdGltZSBpbnRlcnZhbCB3aGljaCBpcyBy
ZXF1aXJlZCB0byByb3RhdGUgMzYwIGRlZ3JlZXMuCisgICAgICAgIChSb3RhdGVyLnByb3RvdHlw
ZS5uZXh0KTogTW92ZXMgdGhlIGN1cnJlbnQgdGltZSBieSBhIGRlbHRhLgorICAgICAgICAoUm90
YXRlci5wcm90b3R5cGUuZGVncmVlKTogUmV0dXJucyB0aGUgY3VycmVudCByb3RhdGluZyBkZWdy
ZWUuCisgICAgICAgIChSb3RhdGVyLnByb3RvdHlwZS5yb3RhdGVaKTogUmV0dXJucyBDU1MgZm9y
bWF0dGVkIHRyYW5zZm9ybSByb3RhdGVaKCkgc3RyaW5nIGZvciB0aGUgY3VycmVudCBkZWdyZWUu
CisgICAgICAgIChSb3RhdGVyLnByb3RvdHlwZS5yb3RhdGUpOiBSZXR1cm5zIFNWRyBmb3JtYXR0
ZWQgdHJhbnNmb3JtIHJvdGF0ZSgpIHN0cmluZyBmb3IgdGhlIGN1cnJlbnQgZGVncmVlLgorICAg
ICAgICAKKyAgICAgICAgKFN0YWdlKTogQSBiYXNlIGNsYXNzIGZvciBtYW5hZ2luZyB0aGUgdGVz
dCBjb21wbGV4aXR5IGFuZCB0ZXN0IGFuaW1hdGlvbi4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlw
ZS5nZXQgc2l6ZSk6IFJldHVybnMgdGhlIHNpemUgb2YgdGhlIHN0YWdlIGV4Y2x1ZGluZyB0aGUg
Q1NTIHBhZGRpbmcuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tKTogUmV0dXJucyBh
IHJhbmRvbSBmbG9hdC4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5yYW5kb21JbnQpOiBSZXR1
cm5zIGEgcmFuZG9tIGludGVnZXIuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tUG9z
aXRpb24pOiBSZXR1cm5zIGEgcmFuZG9tIHBvc2l0aW9uLgorICAgICAgICAoU3RhZ2UucHJvdG90
eXBlLnJhbmRvbVZlbG9jaXR5KTogUmV0dXJucyBhIHJhbmRvbSB2ZWxvY2l0eS4KKyAgICAgICAg
KFN0YWdlLnByb3RvdHlwZS5yYW5kb21BbmdsZSk6IFJldHVybnMgYSByYW5kb20gYW5nbGUuCisg
ICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tQ29sb3IpOiBSZXR1cm5zIGEgcmFuZG9tIGNv
bG9yIG5vdCB0b28gZGFyayBhbmQgbm90IHRvbyBsaWdodC4KKyAgICAgICAgKFN0YWdlLnByb3Rv
dHlwZS5yYW5kb21Sb3RhdGVyKTogQ3JlYXRlcyBhIHJhbmRvbSByb3RhdGVyLiBJdHMgdmVsb2Np
dHkgZGVwZW5kcyBvbiBjaG9vc2luZyBhIHJhbmRvbSByb3RhdGlvbiB0aW1lIGludGVydmFsLgor
ICAgICAgICAoU3RhZ2UucHJvdG90eXBlLnR1bmUpOiBBIG5vdC1pbXBsZW1lbnRlZCB2ZXJzaW9u
IG9mIHRoaXMgZnVuY3Rpb24uCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IEEg
bm90LWltcGxlbWVudGVkIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgKFN0YWdl
LnByb3RvdHlwZS5jbGVhcik6IENsZWFycyB0aGUgc3RhZ2UgZnJvbSBhbGwgaXRzIGFuaW1hdGlv
biBlbGVtZW50cy4KKyAgICAgICAgCisgICAgICAgIChTdGFnZUFuaW1hdG9yKTogQSBiYXNlIGNs
YXNzIGZvciB0aGUgc3RhZ2UtYmFzZWQgYW5pbWF0b3JzLgorICAgICAgICAoU3RhZ2VBbmltYXRv
ci5wcm90b3R5cGUuYW5pbWF0ZSk6IENhbGxzIEFuaW1hdG9yLmFuaW1hdGUoKSB3aGljaCB1cGRh
dGVzIHRoZSB0ZXN0IHBhZ2UgYW5kIHRoZW4gY2FsbHMgU3RhZ2UuYW5pbWF0ZSgpIHRvIGZvcmNl
IHJlZHJhdy4KKyAgICAgICAgCisgICAgICAgIChTdGFnZUJlbmNobWFyayk6IEEgYmFzZSBjbGFz
cyBmb3IgdGhlIHN0YWdlLWJhc2VkIGJlbmNobWFya3MuCisgICAgICAgIChTdGFnZUJlbmNobWFy
ay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIHRoZSBkZWZhdWx0IHN0YWdlLgorICAg
ICAgICAoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyB0
aGUgZGVmYXVsdCBhbmltYXRvci4KKyAgICAgICAgKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS50
dW5lKTogRGVsZWdhdGVzIHRoZSBjYWxsIHRvIHN0YWdlLgorICAgICAgICAoU3RhZ2VCZW5jaG1h
cmsucHJvdG90eXBlLmNsZWFyKTogRGVsZWdhdGVzIHRoZSBjYWxsIHRvIHN0YWdlLgorICAgICAg
ICAoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLnNob3dSZXN1bHRzKTogU2hvd3MgdGhlIHJlc3Vs
dHMvcHJvZ3Jlc3MgdGhyb3VnaCBpdHMgcmVjb3JkVGFibGUgYW5kIHByb2dyZXNzQmFyLgorICAg
ICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5wbmc6
IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnN2
ZzogQWRkZWQuCisgICAgICAgIFRoZXNlIGltYWdlcyBhcmUgc2hhcmVkIGFtb25nIGFsbCB0aGUg
dGVzdHMuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGU6IEFk
ZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzOiBBZGRl
ZC4KKyAgICAgICAgVGhpcyBkaXJlY3RvcnkgaW5jbHVkZXMgdGVtcGxhdGUgdGVzdHMgd2hpY2gg
ZG8gbm90aGluZy4gVGhleSBjYW4gYmUgdXNlZAorICAgICAgICB0byBhdXRob3IgbmV3IHRlc3Rz
LiBBbmltYXRlZCBpdGVtcyBjYW4gYmUgY3JlYXRlZCwgbW92ZWQgYW5kIHJlZHJhd24gYnkKKyAg
ICAgICAgcmVtb3ZpbmcgdGhlIFRPRE8gY29tbWVudHMgaW4gdGhlIHNjcmlwdCBmaWxlcyBhbmQg
d3JpdGluZyBhY3R1YWwgY29kZS4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxh
dGUvdGVtcGxhdGUtY3NzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMv
dGVtcGxhdGUvdGVtcGxhdGUtY2FudmFzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0
ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0bWw6IEFkZGVkLgorICAgICAgICBUZW1w
bGF0ZSB0ZXN0IHBhZ2VzLiBUaGV5IGNhbiBiZSB1c2VkIGFzIHRoZXkgYXJlLiBDU1MgYXR0cmli
dXRlcyBvciBoaWRkZW4KKyAgICAgICAgZWxlbWVudHMgY2FuIGJlIGFkZGVkIHRvIHRoZXNlIGRl
cml2ZWQgdGVzdCBwYWdlcyBpZiBuZWVkZWQuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0
ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNzcy5qczogQWRkZWQuCisgICAg
ICAgIAorICAgICAgICAoVGVtcGxhdGVDc3NTdGFnZSk6IEEgc3RhZ2UgdG8gY3JlYXRlIGFuZCBh
bmltYXRlIEhUTUxFbGVtZW50cy4KKyAgICAgICAgKFRlbXBsYXRlQ3NzU3RhZ2UucHJvdG90eXBl
LnR1bmUpOiBDaGFuZ2VzIHRoZSB0ZXN0IGJ5IGFkZGluZyBvciByZW1vdmluZyBlbGVtZW50cy4K
KyAgICAgICAgKFRlbXBsYXRlQ3NzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBBbmltYXRlcyB0
aGUgdGVzdCBlbGVtZW50cy4KKyAgICAgICAgKFRlbXBsYXRlQ3NzQmVuY2htYXJrKTogCisgICAg
ICAgIChUZW1wbGF0ZUNzc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVz
IHRoZSB0ZXN0IHN0YWdlLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUp
OiBDcmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5cGUgVGVtcGxhdGVDc3NCZW5jaG1hcmsuCisgICAg
ICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBs
YXRlLWNhbnZhcy5qczogQWRkZWQuCisgICAgICAgIChUZW1wbGF0ZUNhbnZhc09iamVjdCk6Cisg
ICAgICAgIChUZW1wbGF0ZUNhbnZhc09iamVjdC5wcm90b3R5cGUuX2RyYXcpOiBEcmF3cyB0aGUg
b2JqZWN0cyBvbiB0aGUgY2FudmFzIGNvbnRleHQuCisgICAgICAgIChUZW1wbGF0ZUNhbnZhc09i
amVjdC5wcm90b3R5cGUuYW5pbWF0ZSk6IE1vdmVzIGFuZCByZWRyYXdzIHRoZSBvYmplY3QuCisg
ICAgICAgIChUZW1wbGF0ZUNhbnZhc1N0YWdlKTogQSBzdGFnZSB0byBjcmVhdGUgYW5kIGFuaW1h
dGUgZHJhd2luZyBlbGVtZW50cy4KKyAgICAgICAgKFRlbXBsYXRlQ2FudmFzU3RhZ2UucHJvdG90
eXBlLnR1bmUpOiBoYW5nZXMgdGhlIHRlc3QgYnkgYWRkaW5nIG9yIHJlbW92aW5nIGVsZW1lbnRz
LgorICAgICAgICAoVGVtcGxhdGVDYW52YXNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6ICBBbmlt
YXRlcyB0aGUgdGVzdCBlbGVtZW50cy4KKyAgICAgICAgKFRlbXBsYXRlQ2FudmFzQW5pbWF0b3Iu
cHJvdG90eXBlLmFuaW1hdGUpOiBTdGFydHMgdGhlIGFuaW1hdGlvbiBldmVyeSBmcmFtZS4KKyAg
ICAgICAgKFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrKTogCisgICAgICAgIChUZW1wbGF0ZUNhbnZh
c0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlw
ZSBUZW1wbGF0ZUNhbnZhc1N0YWdlLgorICAgICAgICAoVGVtcGxhdGVDYW52YXNCZW5jaG1hcmsu
cHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyBhIGFuaW1hdG9yIG9mIHR5cGUgVGVt
cGxhdGVDYW52YXNBbmltYXRvci4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3Jl
YXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIFRlbXBsYXRlQ2FudmFzQmVuY2htYXJr
LgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNl
cy90ZW1wbGF0ZS1zdmcuanM6IEFkZGVkLgorICAgICAgICAoVGVtcGxhdGVTdmdTdGFnZSk6IEEg
c3RhZ2UgdG8gY3JlYXRlIGFuZCBhbmltYXRlIFNWR0VsZW1lbnRzLgorICAgICAgICAoVGVtcGxh
dGVTdmdTdGFnZS5wcm90b3R5cGUudHVuZSk6IENoYW5nZXMgdGhlIHRlc3QgYnkgYWRkaW5nIG9y
IHJlbW92aW5nIGVsZW1lbnRzLgorICAgICAgICAoVGVtcGxhdGVTdmdTdGFnZS5wcm90b3R5cGUu
YW5pbWF0ZSk6IEFuaW1hdGVzIHRoZSB0ZXN0IGVsZW1lbnRzLgorICAgICAgICAoVGVtcGxhdGVT
dmdCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5
cGUgVGVtcGxhdGVTdmdTdGFnZS4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3Jl
YXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIFRlbXBsYXRlU3ZnQmVuY2htYXJrLgor
ICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RleHQ6IEFkZGVkLgorICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXM6IEFkZGVkLgorICAgICAgICBUaGlz
IGRpcmVjdG9yeSBpbmNsdWRlcyB0aGUgdGV4dCBhbmltYXRpbmcgdGVzdHMgd2hpY2ggY3VycmVu
dGx5IHJ1bnMKKyAgICAgICAgb24gQ1NTIHN0YWdlIG9ubHkuCisgICAgICAgIAorICAgICAgICAq
IEFuaW1vbWV0ZXIvdGVzdHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0bWw6IEFkZGVkLgorICAgICAg
ICBUZXh0IHRlc3QgcGFnZS4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90
ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzOiBBZGRlZC4KKyAgICAgICAgKExheWVyaW5n
VGV4dFN0YWdlKTogUmVwcmVzZW50cyB0aGUgY29udGFpbmVyIG9mIGFsbCB0aGUgc3RhY2tlZCB0
ZXh0IGxheWVycy4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLnBhcnNlVGV4dEl0ZW0pOiBQ
YXJzZXMgYSB0ZXh0SXRlbSB3aGljaCBtYXkgYmUgYW4gb3BlbmluZyB0YWcsIGEgY2xvc2luZyB0
YWcgb3IgYSBzZWxmLWNsb3NpbmcgdGFnLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNP
cGVuaW5nVGV4dEl0ZW0pOiBSZXR1cm5zIHRydWUgaWYgdGhlIHRleHRJdGVtIGlzIGFuIG9wZW5p
bmcgdGFnIGUuZy4gJzxvbD4nLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDbG9zaW5n
VGV4dEl0ZW0pOiBSZXR1cm5zIHRydWUgaWYgIHRoZSB0ZXh0SXRlbSBpcyBhbiBjbG9zaW5nIHRh
ZyBlLmcuICc8L29sPi4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdz
LkxheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtcy5tYXApOiBDYWxjdWxhdGVzIGFuZCBzdG9yZXMg
aXNPcGVuaW5nIGFuZCBpc0Nsb3NpbmcgZmxhZ3MgZm9yIGVhY2ggdGV4dEl0ZW0uCisgICAgICAg
IChMYXllcmluZ1RleHRTdGFnZS5pc0NvbG9yYWJsZVRleHRJdGVtKTogUmV0dXJucyB0cnVlIGlm
IHRoZSB0ZXh0SXRlbSBpcyBzZWxmLWNsb3NpbmcgdGFnIGUuZy4gJzxwPi4uLjwvcD4nLgorICAg
ICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNJbnNlcnRhYmxlVGV4dEl0ZW0pOiBSZXR1cm5zIHRy
dWUgaWYgdGhlIHRleHRJdGVtcyBjYXVzZXMgYSBuZXcgZWxlbWVudCB0byBiZSBhZGRlZCB0byB0
aGUgdGV4dCBsYXllcnMuCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5jb2xvcmFibGVUZXh0
SXRlbXMuTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MuZmlsdGVyKTogTnVtYmVyIG9m
IGNvbG9yYWJsZSB0ZXh0SXRlbXMuCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5pbnNlcnRh
YmxlVGV4dEl0ZW1zLkxheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzLmZpbHRlcik6IE51
bWJlciBvZiBpbnNlcnRhYmxlIHRleHRJdGVtcy4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdl
LmNvbG9ySW5kZXhUb1RleHRFbGVtZW50SW5kZXgpOiBNYXBzIGZyb20gY29sb3JJbmRleCBbMC4u
Y29sb3JhYmxlVGV4dEl0ZW1zLTFdIHRvIHRleHRFbGVtZW50SW5kZXggWzAuLmluc2VydGFibGVU
ZXh0SXRlbXMtMV0uCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX25leHRU
ZXh0SXRlbSk6IE1vdmVzIHRoZSBfdGV4dEl0ZW1JbmRleCBvbmUgc3RlcCBmb3J3YXJkIGluIGEg
bG9vcCBbMC4uTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zLmxlbmd0aC0xXS4KKyAgICAgICAg
KExheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fcHJldmlvdXNUZXh0SXRlbSk6IE1vdmVzIHRo
ZSBfdGV4dEl0ZW1JbmRleCBvbmUgc3RlcCBiYWNrd2FyZCBpbiBhIGxvb3AuCisgICAgICAgIChM
YXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX3B1c2hUZXh0RWxlbWVudCk6IENyZWF0ZXMgYSBu
ZXcgdGV4dEl0ZW1FbGVtZW50IGFuZCBhZGRzIGl0IHRvIHRoZSB0b3Btb3N0IGNvbnRhaW5lciA8
ZGl2Pi4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fcG9wVGV4dEVsZW1l
bnQpOiBSZW1vdmVzIHRoZSBsYXN0IHRleHRJdGVtRWxlbWVudCBmcm9tIHRoZSB0b3Btb3N0IGNv
bnRhaW5lciA8ZGl2Pi4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fY29s
b3JUZXh0SXRlbSk6IENoYW5nZXMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgYSBzaW5nbGUgY29s
b3JhYmxlIHRleHRFbGVtZW50LiBUaGUgaW5kZXggYWR2YW5jZXMgaW4gYSBjaXJjbGUgWzAuLmNv
bG9yYWJsZVRleHRJdGVtcy0xXS4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlw
ZS5hbmltYXRlKTogQ2hhbmdlcyB0aGUgYmFja2dyb3VuZCBjb2xvciBhbmQgdGhlIHRleHQgY29s
b3Igb2YgdGhlIHRleHRFbGVtZW50cyBzdWNoIHRoYXQgYSByZWRyYXcgaXMgZW5mb3JjZWQuCisg
ICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUudHVuZSk6IEFkZHMgb3IgcmVtb3Zl
cyB0ZXh0RWxlbWVudHMgdG8gdGhlIHN0YWdlLgorCisgICAgICAgIChMYXllcmluZ1RleHRCZW5j
aG1hcmspOiBSdW5zIHRoZSBiZW5jaG1hcmsgZm9yIHRoZSBsYXllcmluZyB0ZXh0IHRlc3QuCisg
ICAgICAgIChMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3Jl
YXRlcyBhIHN0YWdlIG9mIHR5cGUgTGF5ZXJpbmdUZXh0U3RhZ2UuCisgICAgICAgICh3aW5kb3cu
YmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBMYXll
cmluZ1RleHRCZW5jaG1hcmsuCisgICAgICAgIAorICAgICAgICAqIFNraXBwZWQ6IFNraXAgdGhl
IEFuaW1vbWV0ZXIgYmVuY2htYXJrIGZvciBub3cuCisKIDIwMTUtMDgtMjcgIENzYWJhIE9zenRy
b2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbRUZMXSBSRUdSRVNTSU9OKHIx
ODg3OTMpOiBJdCBtYWRlIDIwMCBsYXlvdXQgdGVzdHMgYW5kIEJpbmRpbmdzL2V2ZW50LXRhcmdl
dC13cmFwcGVyLmh0bWwgcGVyZm9ybWFuY2UgdGVzdCBmYWlsCkluZGV4OiBQZXJmb3JtYW5jZVRl
c3RzL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Ta2lwcGVkCShyZXZp
c2lvbiAxOTAyNzgpCisrKyBQZXJmb3JtYW5jZVRlc3RzL1NraXBwZWQJKHdvcmtpbmcgY29weSkK
QEAgLTk2LDMgKzk2LDYgQEAgRHJvbWFlby9qc2xpYi1tb2RpZnktcHJvdG90eXBlLmh0bWwKICMg
W0VGTF0gUkVHUkVTU0lPTihyMTg4NzkzKTogSXQgbWFkZSAyMDAgbGF5b3V0IHRlc3RzIGFuZCBC
aW5kaW5ncy9ldmVudC10YXJnZXQtd3JhcHBlci5odG1sIHBlcmZvcm1hbmNlIHRlc3QgZmFpbAog
IyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDcwCiBbIEVGTCBd
IEJpbmRpbmdzL2V2ZW50LXRhcmdldC13cmFwcGVyLmh0bWwKKworIyBTdGlsbCB1bmRlciBkZXZl
bG9wbWVudCBzbyBza2lwIGl0IGZvciBub3cuCitBbmltb21ldGVyCkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2FsZ29yaXRobS5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2FsZ29yaXRobS5qcwkocmV2aXNp
b24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvYWxnb3JpdGht
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQyIEBACitBcnJheS5wcm90b3R5cGUuc3dh
cCA9IGZ1bmN0aW9uKGksIGopCit7CisgICAgdmFyIHQgPSB0aGlzW2ldOworICAgIHRoaXNbaV0g
PSB0aGlzW2pdOworICAgIHRoaXNbal0gPSB0OworICAgIHJldHVybiB0aGlzOworfQorCitmdW5j
dGlvbiBIZWFwKG1heFNpemUsIGNvbXBhcmUpCit7CisgICAgdGhpcy5fbWF4U2l6ZSA9IG1heFNp
emU7CisgICAgdGhpcy5fY29tcGFyZSA9IGNvbXBhcmU7CisgICAgdGhpcy5fc2l6ZSA9IDA7Cisg
ICAgdGhpcy5fdmFsdWVzID0gbmV3IEFycmF5KHRoaXMuX21heFNpemUpOworfQorCitIZWFwLnBy
b3RvdHlwZSA9Cit7CisgICAgLy8gVGhpcyBpcyBhIGJpbmFyeSBoZWFwIHJlcHJlc2VudGVkIGlu
IGFuIGFycmF5LiBUaGUgcm9vdCBlbGVtZW50IGlzIHN0b3JlZAorICAgIC8vIGluIHRoZSBmaXJz
dCBlbGVtZW50IGluIHRoZSBhcnJheS4gVGhlIHJvb3QgaXMgZm9sbG93ZWQgYnkgaXRzIHR3byBj
aGlsZHJlbi4KKyAgICAvLyBUaGVuIGl0cyBmb3VyIGdyYW5kY2hpbGRyZW4gYW5kIHNvIG9uLiBT
byBldmVyeSBsZXZlbCBpbiB0aGUgYmluYXJ5IGhlYXAgaXMKKyAgICAvLyBkb3VibGVkIGluIHRo
ZSBmb2xsb3dpbmcgbGV2ZWwuIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiB0aGUgbm9kZSBpbmRpY2Vz
IGFuZAorICAgIC8vIGhvdyB0aGV5IGFyZSByZWxhdGVkIHRvIHRoZWlyIHBhcmVudHMgYW5kIGNo
aWxkcmVuLgorICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vICAgICAgICAgICAgICAw
ICAgICAgIDEgICAgICAgMiAgICAgICAzICAgICAgIDQgICAgICAgNSAgICAgICA2CisgICAgLy8g
UEFSRU5UICAgICAgIC0xICAgICAgMCAgICAgICAwICAgICAgIDEgICAgICAgMSAgICAgICAyICAg
ICAgIDIKKyAgICAvLyBMRUZUICAgICAgICAgMSAgICAgICAzICAgICAgIDUgICAgICAgNyAgICAg
ICA5ICAgICAgIDExICAgICAgMTMKKyAgICAvLyBSSUdIVCAgICAgICAgMiAgICAgICA0ICAgICAg
IDYgICAgICAgOCAgICAgICAxMCAgICAgIDEyICAgICAgMTQKKyAgICAvLyA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KKyAgICBfcGFyZW50SW5kZXg6IGZ1bmN0aW9uKGkpCisgICAgeworICAgICAgICByZXR1
cm4gaSA+IDAgPyBNYXRoLmZsb29yKChpIC0gMSkgLyAyKSA6IC0xOworICAgIH0sCisgICAgCisg
ICAgX2xlZnRJbmRleDogZnVuY3Rpb24oaSkKKyAgICB7CisgICAgICAgIHZhciBsZWZ0SW5kZXgg
PSBpICogMiArIDE7CisgICAgICAgIHJldHVybiBsZWZ0SW5kZXggPCB0aGlzLl9zaXplID8gbGVm
dEluZGV4IDogLTE7CisgICAgfSwKKyAgICAKKyAgICBfcmlnaHRJbmRleDogZnVuY3Rpb24oaSkK
KyAgICB7CisgICAgICAgIHZhciByaWdodEluZGV4ID0gaSAqIDIgKyAyOworICAgICAgICByZXR1
cm4gcmlnaHRJbmRleCA8IHRoaXMuX3NpemUgPyByaWdodEluZGV4IDogLTE7CisgICAgfSwKKyAg
ICAKKyAgICAvLyBSZXR1cm4gdGhlIGNoaWxkIGluZGV4IHRoYXQgbWF5IHZpb2xhdGUgdGhlIGhl
YXAgcHJvcGVydHkgYXQgaW5kZXggaS4KKyAgICBfY2hpbGRJbmRleDogZnVuY3Rpb24oaSkKKyAg
ICB7CisgICAgICAgIHZhciBsZWZ0ID0gdGhpcy5fbGVmdEluZGV4KGkpOworICAgICAgICB2YXIg
cmlnaHQgPSB0aGlzLl9yaWdodEluZGV4KGkpOworCisgICAgICAgIGlmIChsZWZ0ICE9IC0xICYm
IHJpZ2h0ICE9IC0xKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBhcmUodGhpcy5fdmFs
dWVzW2xlZnRdLCB0aGlzLl92YWx1ZXNbcmlnaHRdKSA+IDAgPyBsZWZ0IDogcmlnaHQ7CisgICAg
ICAgIAorICAgICAgICByZXR1cm4gbGVmdCAhPSAtMSA/IGxlZnQgOiByaWdodDsKKyAgICB9LAor
ICAgIAorICAgIGluaXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3NpemUgPSAw
OworICAgIH0sCisgICAgCisgICAgdG9wOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fc2l6ZSA/IHRoaXMuX3ZhbHVlc1swXSA6IE5hTjsKKyAgICB9LAorICAgIAorICAg
IHB1c2g6IGZ1bmN0aW9uKHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3NpemUgPT0g
dGhpcy5fbWF4U2l6ZSkgeworICAgICAgICAgICAgLy8gSWYgc2l6ZSBpcyBib3VuZGVkIGFuZCB0
aGUgbmV3IHZhbHVlIGNhbiBiZSBhIHBhcmVudCBvZiB0aGUgdG9wKCkKKyAgICAgICAgICAgIC8v
IGlmIHRoZSBzaXplIHdlcmUgdW5ib3VuZGVkLCBqdXN0IGlnbm9yZSB0aGUgbmV3IHZhbHVlLgor
ICAgICAgICAgICAgaWYgKHRoaXMuX2NvbXBhcmUodmFsdWUsIHRoaXMudG9wKCkpID4gMCkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB0aGlzLnBvcCgpOworICAgICAgICB9
CisgICAgICAgIHRoaXMuX3ZhbHVlc1t0aGlzLl9zaXplKytdID0gdmFsdWU7CisgICAgICAgIHRo
aXMuX2J1YmJsZSh0aGlzLl9zaXplIC0gMSk7CisgICAgfSwKKworICAgIHBvcDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9zaXplKQorICAgICAgICAgICAgcmV0dXJuIE5h
TjsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX3ZhbHVlc1swXSA9IHRoaXMuX3ZhbHVlc1stLXRo
aXMuX3NpemVdOworICAgICAgICB0aGlzLl9zaW5rKDApOworICAgIH0sCisgICAgCisgICAgX2J1
YmJsZTogZnVuY3Rpb24oaSkKKyAgICB7CisgICAgICAgIC8vIEZpeCB0aGUgaGVhcCBwcm9wZXJ0
eSBhdCBpbmRleCBpIGdpdmVuIHRoYXQgcGFyZW50IGlzIHRoZSBvbmx5IG5vZGUgdGhhdAorICAg
ICAgICAvLyBtYXkgdmlvbGF0ZSB0aGUgaGVhcCBwcm9wZXJ0eS4KKyAgICAgICAgZm9yICh2YXIg
cGkgPSB0aGlzLl9wYXJlbnRJbmRleChpKTsgcGkgIT0gLTE7IGkgPSBwaSwgcGkgPSB0aGlzLl9w
YXJlbnRJbmRleChwaSkpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9jb21wYXJlKHRoaXMuX3Zh
bHVlc1twaV0sIHRoaXMuX3ZhbHVlc1tpXSkgPiAwKQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5fdmFsdWVzLnN3YXAocGksIGkpOwor
ICAgICAgICB9CisgICAgfSwKKyAgICAKKyAgICBfc2luazogZnVuY3Rpb24oaSkKKyAgICB7Cisg
ICAgICAgIC8vIEZpeCB0aGUgaGVhcCBwcm9wZXJ0eSBhdCBpbmRleCBpIGdpdmVuIHRoYXQgZWFj
aCBvZiB0aGUgbGVmdCBhbmQgdGhlIHJpZ2h0CisgICAgICAgIC8vIHN1Yi10cmVlcyBzYXRpc2Zp
ZXMgdGhlIGhlYXAgcHJvcGVydHkuCisgICAgICAgIGZvciAodmFyIGNpID0gdGhpcy5fY2hpbGRJ
bmRleChpKTsgY2kgIT0gLTE7IGkgPSBjaSwgY2kgPSB0aGlzLl9jaGlsZEluZGV4KGNpKSkgewor
ICAgICAgICAgICAgaWYgKHRoaXMuX2NvbXBhcmUodGhpcy5fdmFsdWVzW2ldLCB0aGlzLl92YWx1
ZXNbY2ldKSA+IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIHRoaXMuX3ZhbHVlcy5zd2FwKGNpLCBpKTsKKyAgICAgICAgfQorICAgIH0sCisgICAg
CisgICAgc3RyOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgb3V0ID0gIkhlYXBbIiAr
IHRoaXMuX3NpemUgKyAiXSA9IFsiOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMu
X3NpemU7ICsraSkgeworICAgICAgICAgICAgb3V0ICs9IHRoaXMuX3ZhbHVlc1tpXTsKKyAgICAg
ICAgICAgIGlmIChpIDwgdGhpcy5fc2l6ZSAtIDEpCisgICAgICAgICAgICAgICAgb3V0ICs9ICIs
ICI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG91dCArICJdIjsKKyAgICB9LAorICAgIAor
ICAgIHZhbHVlczogZnVuY3Rpb24oc2l6ZSkgeworICAgICAgICAvLyBSZXR1cm4gdGhlIGxhc3Qg
InNpemUiIGhlYXAgZWxlbWVudHMgdmFsdWVzLgorICAgICAgICB2YXIgdmFsdWVzID0gdGhpcy5f
dmFsdWVzLnNsaWNlKDAsIHRoaXMuX3NpemUpOworICAgICAgICByZXR1cm4gdmFsdWVzLnNvcnQo
dGhpcy5fY29tcGFyZSkuc2xpY2UoMCwgTWF0aC5taW4oc2l6ZSwgdGhpcy5fc2l6ZSkpOworICAg
IH0KK30KKwordmFyIEFsZ29yaXRobSA9IHsKKyAgICBjcmVhdGVNaW5IZWFwOiBmdW5jdGlvbiht
YXhTaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBIZWFwKG1heFNpemUsIGZ1bmN0aW9u
KGEsIGIpIHsgcmV0dXJuIGIgLSBhOyB9KTsKKyAgICB9LAorICAgIAorICAgIGNyZWF0ZU1heEhl
YXA6IGZ1bmN0aW9uKG1heFNpemUpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBIZWFwKG1heFNpemUs
IGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEgLSBiOyB9KTsKKyAgICB9Cit9CkluZGV4OiBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpz
CShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9l
eHRlbnNpb25zLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzA2IEBACitmdW5jdGlvbiBQ
b2ludCh4LCB5KQoreworICAgIHRoaXMueCA9IHg7CisgICAgdGhpcy55ID0geTsKK30KKworUG9p
bnQucG9pbnRPbkNpcmNsZSA9IGZ1bmN0aW9uKGFuZ2xlLCByYWRpdXMpCit7CisgICAgcmV0dXJu
IG5ldyBQb2ludChyYWRpdXMgKiBNYXRoLmNvcyhhbmdsZSksIHJhZGl1cyAqIE1hdGguc2luKGFu
Z2xlKSk7Cit9CisKK1BvaW50LnBvaW50T25FbGxpcHNlID0gZnVuY3Rpb24oYW5nbGUsIHJhZGl1
c2VzKQoreworICAgIHJldHVybiBuZXcgUG9pbnQocmFkaXVzZXMueCAqIE1hdGguY29zKGFuZ2xl
KSwgcmFkaXVzZXMueSAqIE1hdGguc2luKGFuZ2xlKSk7Cit9CisKK1BvaW50LnByb3RvdHlwZSA9
Cit7CisgICAgLy8gVXNlZCB3aGVuIHRoZSBwb2ludCBvYmplY3QgaXMgdXNlZCBhcyBhIHNpemUg
b2JqZWN0LgorICAgIGdldCB3aWR0aCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy54Owor
ICAgIH0sCisgICAgCisgICAgLy8gVXNlZCB3aGVuIHRoZSBwb2ludCBvYmplY3QgaXMgdXNlZCBh
cyBhIHNpemUgb2JqZWN0LgorICAgIGdldCBoZWlnaHQoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMueTsKKyAgICB9LAorICAgIAorICAgIC8vIFVzZWQgd2hlbiB0aGUgcG9pbnQgb2JqZWN0
IGlzIHVzZWQgYXMgYSBzaXplIG9iamVjdC4KKyAgICBnZXQgY2VudGVyKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy54IC8gMiwgdGhpcy55IC8gMik7CisgICAgfSwKKyAg
ICAKKyAgICBhZGQ6IGZ1bmN0aW9uKG90aGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQ
b2ludCh0aGlzLnggKyBvdGhlci54LCB0aGlzLnkgKyBvdGhlci55KTsKKyAgICB9LAorICAgIAor
ICAgIHN1YnRyYWN0OiBmdW5jdGlvbihvdGhlcikKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcg
UG9pbnQodGhpcy54IC0gb3RoZXIueCwgdGhpcy55IC0gb3RoZXIueSk7CisgICAgfSwKKyAgICAK
KyAgICBtdWx0aXBseTogZnVuY3Rpb24ob3RoZXIpCisgICAgeworICAgICAgICByZXR1cm4gbmV3
IFBvaW50KHRoaXMueCAqIG90aGVyLngsIHRoaXMueSAqIG90aGVyLnkpOworICAgIH0sCisgICAg
CisgICAgbW92ZTogZnVuY3Rpb24oYW5nbGUsIHZlbG9jaXR5LCB0aW1lRGVsdGEpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5hZGQoUG9pbnQucG9pbnRPbkNpcmNsZShhbmdsZSwgdmVsb2Np
dHkgKiAodGltZURlbHRhIC8gMTAwMCkpKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEluc2V0cyh0
b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQpCit7CisgICAgdGhpcy50b3AgPSB0b3A7CisgICAgdGhp
cy5yaWdodCA9IHJpZ2h0OworICAgIHRoaXMuYm90dG9tID0gYm90dG9tOworICAgIHRoaXMubGVm
dCA9IGxlZnQ7Cit9CisKK0luc2V0cy5wcm90b3R5cGUgPQoreworICAgIGdldCB3aWR0aCgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMubGVmdCArIHRoaXMucmlnaHQ7CisgICAgfSwKKworICAgIGdl
dCBoZWlnaHQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnRvcCArIHRoaXMuYm90dG9tOworICAg
IH0KK30KKworZnVuY3Rpb24gU2ltcGxlUHJvbWlzZSgpCit7CisgICAgdGhpcy5fY2hhaW5lZFBy
b21pc2UgPSBudWxsOworICAgIHRoaXMuX2NhbGxiYWNrID0gbnVsbDsKK30KKworU2ltcGxlUHJv
bWlzZS5wcm90b3R5cGUudGhlbiA9IGZ1bmN0aW9uIChjYWxsYmFjaykKK3sKKyAgICBpZiAodGhp
cy5fY2FsbGJhY2spCisgICAgICAgIHRocm93ICJTaW1wbGVQcm9taXNlIGRvZXNuJ3Qgc3VwcG9y
dCBtdWx0aXBsZSBjYWxscyB0byB0aGVuIjsKKyAgICAgICAgCisgICAgdGhpcy5fY2FsbGJhY2sg
PSBjYWxsYmFjazsKKyAgICB0aGlzLl9jaGFpbmVkUHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNl
OworICAgIAorICAgIGlmICh0aGlzLl9yZXNvbHZlZCkKKyAgICAgICAgdGhpcy5yZXNvbHZlKHRo
aXMuX3Jlc29sdmVkVmFsdWUpOworCisgICAgcmV0dXJuIHRoaXMuX2NoYWluZWRQcm9taXNlOwor
fQorCitTaW1wbGVQcm9taXNlLnByb3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKQor
eworICAgIGlmICghdGhpcy5fY2FsbGJhY2spIHsKKyAgICAgICAgdGhpcy5fcmVzb2x2ZWQgPSB0
cnVlOworICAgICAgICB0aGlzLl9yZXNvbHZlZFZhbHVlID0gdmFsdWU7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICB2YXIgcmVzdWx0ID0gdGhpcy5fY2FsbGJhY2sodmFsdWUpOworICAg
IGlmIChyZXN1bHQgaW5zdGFuY2VvZiBTaW1wbGVQcm9taXNlKSB7CisgICAgICAgIHZhciBjaGFp
bmVkUHJvbWlzZSA9IHRoaXMuX2NoYWluZWRQcm9taXNlOworICAgICAgICByZXN1bHQudGhlbihm
dW5jdGlvbiAocmVzdWx0KSB7IGNoYWluZWRQcm9taXNlLnJlc29sdmUocmVzdWx0KTsgfSk7Cisg
ICAgfSBlbHNlCisgICAgICAgIHRoaXMuX2NoYWluZWRQcm9taXNlLnJlc29sdmUocmVzdWx0KTsK
K30KKworZnVuY3Rpb24gT3B0aW9ucyh0ZXN0SW50ZXJ2YWwsIGZyYW1lUmF0ZSkKK3sKKyAgICB0
aGlzLnRlc3RJbnRlcnZhbCA9IHRlc3RJbnRlcnZhbDsKKyAgICB0aGlzLmZyYW1lUmF0ZSA9IGZy
YW1lUmF0ZTsKK30KKworZnVuY3Rpb24gUHJvZ3Jlc3NCYXIoZWxlbWVudCwgcmFuZ2VzKQorewor
ICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7CisgICAgdGhpcy5yYW5nZXMgPSByYW5nZXM7Cisg
ICAgdGhpcy5jdXJyZW50UmFuZ2UgPSAwOworfQorCitQcm9ncmVzc0Jhci5wcm90b3R5cGUgPQor
eworICAgIF9wcm9ncmVzc1RvUGVyY2VudDogZnVuY3Rpb24ocHJvZ3Jlc3MpCisgICAgeworICAg
ICAgICByZXR1cm4gcHJvZ3Jlc3MgKiAoMTAwIC8gdGhpcy5yYW5nZXMpOworICAgIH0sCisgICAg
CisgICAgaW5jUmFuZ2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgICsrdGhpcy5jdXJyZW50
UmFuZ2U7CisgICAgfSwKKyAgICAKKyAgICBzZXRQb3M6IGZ1bmN0aW9uKHByb2dyZXNzKQorICAg
IHsKKyAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy5fcHJvZ3Jlc3NUb1Bl
cmNlbnQodGhpcy5jdXJyZW50UmFuZ2UgKyBwcm9ncmVzcykgKyAiJSI7CisgICAgfQorfQorCitm
dW5jdGlvbiBSZWNvcmRUYWJsZShlbGVtZW50KQoreworICAgIHRoaXMuZWxlbWVudCA9IGVsZW1l
bnQ7CisgICAgdGhpcy5jbGVhcigpOworfQorCitSZWNvcmRUYWJsZS5wcm90b3R5cGUgPQorewor
ICAgIGNsZWFyOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmVsZW1lbnQuaW5uZXJI
VE1MID0gIiI7CisgICAgfSwKKyAgICAKKyAgICBfc2hvd1RpdGxlczogZnVuY3Rpb24ocm93LCBx
dWV1ZSwgdGl0bGVzLCBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgdGl0bGVzLmZvckVhY2goZnVu
Y3Rpb24gKHRpdGxlKSB7CisgICAgICAgICAgICB2YXIgdGggPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJ0aCIpOworICAgICAgICAgICAgdGgudGV4dENvbnRlbnQgPSB0aXRsZS50ZXh0OworICAg
ICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlICE9ICJ1bmRlZmluZWQiICYmIG1lc3NhZ2UubGVu
Z3RoKSB7CisgICAgICAgICAgICAgICAgdGguaW5uZXJIVE1MICs9ICI8YnI+WyIgKyBtZXNzYWdl
ICsgIl0iOworICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiIjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmICgid2lkdGgiIGluIHRpdGxlKQorICAgICAgICAgICAgICAgIHRoLndpZHRo
ID0gdGl0bGUud2lkdGggKyAiJSI7CisgICAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGgpOwor
ICAgICAgICAgICAgcXVldWUucHVzaCh7ZWxlbWVudDogdGgsIHRpdGxlczogdGl0bGUuY2hpbGRy
ZW4gfSk7CisgICAgICAgIH0pOworICAgIH0sCisgICAgCisgICAgX3Nob3dIZWFkZXI6IGZ1bmN0
aW9uKHN1aXRlTmFtZSwgdGl0bGVzLCBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgdmFyIHJvdyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisKKyAgICAgICAgdmFyIHF1ZXVlID0gW107
CisgICAgICAgIHRoaXMuX3Nob3dUaXRsZXMocm93LCBxdWV1ZSwgdGl0bGVzLCBtZXNzYWdlKTsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHJvdyk7CisKKyAgICAgICAgd2hpbGUg
KHF1ZXVlLmxlbmd0aCkgeworICAgICAgICAgICAgdmFyIHJvdyA9IG51bGw7CisgICAgICAgICAg
ICB2YXIgZW50cmllcyA9IFtdOworCisgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0g
cXVldWUubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2YXIgZW50cnkg
PSBxdWV1ZS5zaGlmdCgpOworCisgICAgICAgICAgICAgICAgaWYgKCFlbnRyeS50aXRsZXMubGVu
Z3RoKSB7CisgICAgICAgICAgICAgICAgICAgIGVudHJpZXMucHVzaChlbnRyeS5lbGVtZW50KTsK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgaWYgKCFyb3cpCisgICAgICAgICAgICAgICAgICAgIHZhciByb3cgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworCisgICAgICAgICAgICAgICAgdGhpcy5fc2hvd1Rp
dGxlcyhyb3csIHF1ZXVlLCBlbnRyeS50aXRsZXMsICIiKTsKKyAgICAgICAgICAgICAgICBlbnRy
eS5lbGVtZW50LmNvbFNwYW4gPSBlbnRyeS50aXRsZXMubGVuZ3RoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAocm93KSB7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFw
cGVuZENoaWxkKHJvdyk7CisgICAgICAgICAgICAgICAgZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9u
KGVudHJ5KSB7CisgICAgICAgICAgICAgICAgICAgICsrZW50cnkucm93U3BhbjsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisgICAgCisgICAg
X3Nob3dFbXB0eTogZnVuY3Rpb24ocm93LCB0ZXN0TmFtZSkKKyAgICB7CisgICAgICAgIHZhciB0
ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgICAgIHJvdy5hcHBlbmRDaGls
ZCh0ZCk7CisgICAgfSwKKyAgICAKKyAgICBfc2hvd1ZhbHVlOiBmdW5jdGlvbihyb3csIHRlc3RO
YW1lLCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHZhciB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInRkIik7CisgICAgICAgIHRkLnRleHRDb250ZW50ID0gdmFsdWUudG9GaXhlZCgyKTsKKyAg
ICAgICAgcm93LmFwcGVuZENoaWxkKHRkKTsKKyAgICB9LAorICAgIAorICAgIF9zaG93U2FtcGxl
czogZnVuY3Rpb24ocm93LCB0ZXN0TmFtZSwgYXhlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zm
c2V0KQorICAgIHsKKyAgICAgICAgdmFyIHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQi
KTsKKyAgICAgICAgdmFyIGJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
ICAgICAgICBidXR0b24uY2xhc3NOYW1lID0gInNtYWxsLWJ1dHRvbiI7CisgICAgICAgICAgICAK
KyAgICAgICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICB3aW5kb3cuc2hvd0dyYXBoKHRlc3ROYW1lLCBheGVzLCBzYW1wbGVzLCBzYW1w
bGluZ1RpbWVPZmZzZXQpOworICAgICAgICB9KTsKKyAgICAgICAgICAgIAorICAgICAgICBidXR0
b24udGV4dENvbnRlbnQgPSAiR3JhcGguLi4iOworICAgICAgICB0ZC5hcHBlbmRDaGlsZChidXR0
b24pOworICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGQpOworICAgIH0sCisgICAgCisgICAgX3No
b3dUZXN0OiBmdW5jdGlvbih0ZXN0TmFtZSwgdGl0bGVzLCBzYW1wbGVyLCBmaW5hbFJlc3VsdHMp
CisgICAgeworICAgICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsK
KyAgICAgICAgdmFyIHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAg
CisgICAgICAgIHRkLnRleHRDb250ZW50ID0gdGVzdE5hbWU7CisgICAgICAgIHJvdy5hcHBlbmRD
aGlsZCh0ZCk7CisgICAgICAgIAorICAgICAgICB2YXIgYXhlcyA9IFtdOworICAgICAgICBzYW1w
bGVyLmV4cGVyaW1lbnRzLmZvckVhY2goZnVuY3Rpb24oZXhwZXJpbWVudCwgaW5kZXgpIHsKKyAg
ICAgICAgICAgIHRoaXMuX3Nob3dWYWx1ZShyb3csIHRlc3ROYW1lLCBleHBlcmltZW50Lm1lYW4o
KSk7CisgICAgICAgICAgICB0aGlzLl9zaG93VmFsdWUocm93LCB0ZXN0TmFtZSwgZXhwZXJpbWVu
dC5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YShFeHBlcmltZW50LmRlZmF1bHRzLkNPTkZJREVOQ0Up
KTsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dWYWx1ZShyb3csIHRlc3ROYW1lLCBleHBlcmltZW50
LmNvbmNlcm4oRXhwZXJpbWVudC5kZWZhdWx0cy5DT05DRVJOKSk7CisgICAgICAgICAgICB0aGlz
Ll9zaG93VmFsdWUocm93LCB0ZXN0TmFtZSwgZXhwZXJpbWVudC5zdGFuZGFyZERldmlhdGlvbigp
KTsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dWYWx1ZShyb3csIHRlc3ROYW1lLCBleHBlcmltZW50
LnBlcmNlbnRhZ2UoKSk7CisgICAgICAgICAgICBheGVzLnB1c2godGl0bGVzW2luZGV4ICsgMV0u
dGV4dCk7CisgICAgICAgICAgICAKKyAgICAgICAgfSwgdGhpcyk7CisKKyAgICAgICAgdGhpcy5f
c2hvd1ZhbHVlKHJvdywgdGVzdE5hbWUsIHNhbXBsZXIuZXhwZXJpbWVudHNbMF0uc2NvcmUoRXhw
ZXJpbWVudC5kZWZhdWx0cy5DT05DRVJOKSk7CisKKyAgICAgICAgaWYgKGZpbmFsUmVzdWx0cykK
KyAgICAgICAgICAgIHRoaXMuX3Nob3dTYW1wbGVzKHJvdywgdGVzdE5hbWUsIGF4ZXMsIHNhbXBs
ZXIuc2FtcGxlcywgc2FtcGxlci5zYW1wbGluZ1RpbWVPZmZzZXQpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICB0aGlzLl9zaG93RW1wdHkocm93LCB0ZXN0TmFtZSk7CisgICAgICAgICAgICAK
KyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHJvdyk7CisgICAgfSwKKyAgICAKKyAg
ICBfc2hvd1N1aXRlOiBmdW5jdGlvbihzdWl0ZSwgc3VpdGVTYW1wbGVycykKKyAgICB7CisgICAg
ICAgIHZhciBzY29yZXMgPSBbXTsgICAgICAgIAorICAgICAgICBmb3IgKHZhciB0ZXN0TmFtZSBp
biBzdWl0ZVNhbXBsZXJzKSB7CisgICAgICAgICAgICB2YXIgdGVzdCA9IHRlc3RGcm9tTmFtZShz
dWl0ZSwgdGVzdE5hbWUpOworICAgICAgICAgICAgdmFyIHNhbXBsZXIgPSBzdWl0ZVNhbXBsZXJz
W3Rlc3ROYW1lXTsgCisgICAgICAgICAgICB0aGlzLl9zaG93VGVzdCh0ZXN0TmFtZSwgc3VpdGUu
dGl0bGVzLCBzYW1wbGVyLCB0cnVlKTsKKyAgICAgICAgICAgIHNjb3Jlcy5wdXNoKHNhbXBsZXIu
ZXhwZXJpbWVudHNbMF0uc2NvcmUoRXhwZXJpbWVudC5kZWZhdWx0cy5DT05DRVJOKSk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHNjb3JlczsKKyAgICB9LAorICAgIAorICAgIHNob3dSZWNv
cmQ6IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBzYW1wbGVyLCBtZXNzYWdlKQorICAgIHsKKyAgICAg
ICAgdGhpcy5jbGVhcigpOyAgICAgICAgCisgICAgICAgIHRoaXMuX3Nob3dIZWFkZXIoIiIsIHN1
aXRlLnRpdGxlcywgbWVzc2FnZSk7CisgICAgICAgIHRoaXMuX3Nob3dUZXN0KHRlc3QubmFtZSwg
c3VpdGUudGl0bGVzLCBzYW1wbGVyLCBmYWxzZSk7ICAgICAgICAKKyAgICB9LAorICAgIAorICAg
IHNob3dJdGVyYXRpb25zOiBmdW5jdGlvbihpdGVyYXRpb25zU2FtcGxlcnMpCisgICAgeworICAg
ICAgICB0aGlzLmNsZWFyKCk7CisKKyAgICAgICAgdmFyIHNjb3JlcyA9IFtdOworICAgICAgICB2
YXIgdGl0bGVzID0gbnVsbDsKKyAgICAgICAgaXRlcmF0aW9uc1NhbXBsZXJzLmZvckVhY2goZnVu
Y3Rpb24oc3VpdGVzU2FtcGxlcnMpIHsKKyAgICAgICAgICAgIGZvciAodmFyIHN1aXRlTmFtZSBp
biBzdWl0ZXNTYW1wbGVycykgeworICAgICAgICAgICAgICAgIHZhciBzdWl0ZSA9IHN1aXRlRnJv
bU5hbWUoc3VpdGVOYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAodGl0bGVzICE9IHN1aXRlLnRp
dGxlcykgeworICAgICAgICAgICAgICAgICAgICB0aXRsZXMgPSBzdWl0ZS50aXRsZXM7CisgICAg
ICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dIZWFkZXIoc3VpdGVOYW1lLCB0aXRsZXMsICIiKTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB2YXIgc3VpdGVTY29yZXMgPSB0
aGlzLl9zaG93U3VpdGUoc3VpdGUsIHN1aXRlc1NhbXBsZXJzW3N1aXRlTmFtZV0pOworICAgICAg
ICAgICAgICAgIHNjb3Jlcy5wdXNoLmFwcGx5KHNjb3Jlcywgc3VpdGVTY29yZXMpOworICAgICAg
ICAgICAgfQorICAgICAgICB9LCB0aGlzKTsKKworICAgICAgICByZXR1cm4gU3RhdGlzdGljcy5n
ZW9tZXRyaWNNZWFuKHNjb3Jlcyk7CisgICAgfQorfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9zYW1wbGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvc2FtcGxlci5qcwkocmV2aXNpb24gMCkKKysrIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvc2FtcGxlci5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEwMyBAQAorZnVuY3Rpb24gRXhwZXJpbWVudCgpCit7CisgICAgdGhp
cy5faW5pdCgpOworICAgIHRoaXMuX21heEhlYXAgPSBBbGdvcml0aG0uY3JlYXRlTWF4SGVhcChF
eHBlcmltZW50LmRlZmF1bHRzLkNPTkNFUk5fU0laRSk7Cit9CisKK0V4cGVyaW1lbnQuZGVmYXVs
dHMgPQoreworICAgIENPTkNFUk46IDUsCisgICAgQ09ORklERU5DRTogMC45LAorICAgIENPTkNF
Uk5fU0laRTogMTAwLAorfQorCitFeHBlcmltZW50LnByb3RvdHlwZSA9Cit7CisgICAgX2luaXQ6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3N1bSA9IDA7CisgICAgICAgIHRoaXMu
X3NxdWFyZVN1bSA9IDA7CisgICAgICAgIHRoaXMuX251bWJlck9mU2FtcGxlcyA9IDA7CisgICAg
fSwKKyAgICAKKyAgICAvLyBDYWxsZWQgYWZ0ZXIgYSB3YXJtLXVwIHBlcmlvZAorICAgIHN0YXJ0
U2FtcGxpbmc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBtZWFuID0gdGhpcy5tZWFu
KCk7CisgICAgICAgIHRoaXMuX2luaXQoKTsKKyAgICAgICAgdGhpcy5fbWF4SGVhcC5pbml0KCk7
CisgICAgICAgIHRoaXMuc2FtcGxlKG1lYW4pOworICAgIH0sCisgICAgCisgICAgc2FtcGxlOiBm
dW5jdGlvbih2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3N1bSArPSB2YWx1ZTsKKyAgICAg
ICAgdGhpcy5fc3F1YXJlU3VtICs9IHZhbHVlICogdmFsdWU7CisgICAgICAgIHRoaXMuX21heEhl
YXAucHVzaCh2YWx1ZSk7CisgICAgICAgICsrdGhpcy5fbnVtYmVyT2ZTYW1wbGVzOworICAgIH0s
CisgICAgCisgICAgbWVhbjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0YXRp
c3RpY3Muc2FtcGxlTWVhbih0aGlzLl9udW1iZXJPZlNhbXBsZXMsIHRoaXMuX3N1bSk7CisgICAg
fSwKKyAgICAKKyAgICBzdGFuZGFyZERldmlhdGlvbjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFN0YXRpc3RpY3Muc2FtcGxlU3RhbmRhcmREZXZpYXRpb24odGhpcy5fbnVtYmVy
T2ZTYW1wbGVzLCB0aGlzLl9zdW0sIHRoaXMuX3NxdWFyZVN1bSk7CisgICAgfSwKKyAgICAKKyAg
ICBwZXJjZW50YWdlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgbWVhbiA9IHRoaXMu
bWVhbigpOworICAgICAgICByZXR1cm4gbWVhbiA/IHRoaXMuc3RhbmRhcmREZXZpYXRpb24oKSAq
IDEwMCAvIG1lYW4gOiAwOworICAgIH0sCisgICAgCisgICAgY29uZmlkZW5jZUludGVydmFsRGVs
dGE6IGZ1bmN0aW9uKGNvbmZpZGVuY2VMZXZlbCkKKyAgICB7CisgICAgICAgIHJldHVybiBTdGF0
aXN0aWNzLmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhKGNvbmZpZGVuY2VMZXZlbCwgdGhpcy5fbnVt
YmVyT2ZTYW1wbGVzLCB0aGlzLl9zdW0sIHRoaXMuX3NxdWFyZVN1bSk7CisgICAgfSwKKyAgICAK
KyAgICBjb25jZXJuOiBmdW5jdGlvbihwZXJjZW50YWdlKQorICAgIHsKKyAgICAgICAgdmFyIHNp
emUgPSBNYXRoLmNlaWwodGhpcy5fbnVtYmVyT2ZTYW1wbGVzICogcGVyY2VudGFnZSAvIDEwMCk7
CisgICAgICAgIHZhciB2YWx1ZXMgPSB0aGlzLl9tYXhIZWFwLnZhbHVlcyhzaXplKTsKKyAgICAg
ICAgcmV0dXJuIHZhbHVlcy5sZW5ndGggPyB2YWx1ZXMucmVkdWNlKGZ1bmN0aW9uKGEsIGIpIHsg
cmV0dXJuIGEgKyBiOyB9KSAvIHZhbHVlcy5sZW5ndGggOiAwOworICAgIH0sCisgICAgCisgICAg
c2NvcmU6IGZ1bmN0aW9uKHBlcmNlbnRhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gU3RhdGlz
dGljcy5nZW9tZXRyaWNNZWFuKFt0aGlzLm1lYW4oKSwgTWF0aC5tYXgodGhpcy5jb25jZXJuKHBl
cmNlbnRhZ2UpLCAxKV0pOworICAgIH0KK30KKworZnVuY3Rpb24gU2FtcGxlcihjb3VudCkKK3sK
KyAgICB0aGlzLmV4cGVyaW1lbnRzID0gW107CisgICAgd2hpbGUgKGNvdW50LS0pCisgICAgICAg
IHRoaXMuZXhwZXJpbWVudHMucHVzaChuZXcgRXhwZXJpbWVudCgpKTsKKyAgICB0aGlzLnNhbXBs
ZXMgPSBbXTsKKyAgICB0aGlzLnNhbXBsaW5nVGltZU9mZnNldCA9IDA7Cit9CisKK1NhbXBsZXIu
cHJvdG90eXBlID0KK3sKKyAgICBzdGFydFNhbXBsaW5nOiBmdW5jdGlvbih0aW1lT2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuZXhwZXJpbWVu
dHMubGVuZ3RoOyArK2luZGV4KQorICAgICAgICAgICAgdGhpcy5leHBlcmltZW50c1tpbmRleF0u
c3RhcnRTYW1wbGluZygpOworICAgICAgICAgICAgCisgICAgICAgIHRoaXMuc2FtcGxpbmdUaW1l
T2Zmc2V0ID0gdGltZU9mZnNldCAvIDEwMDA7CisgICAgfSwKKyAgICAKKyAgICBzYW1wbGU6IGZ1
bmN0aW9uKHRpbWVPZmZzZXQsIHZhbHVlcykKKyAgICB7CisgICAgICAgIGlmICh2YWx1ZXMubGVu
Z3RoIDwgdGhpcy5leHBlcmltZW50cy5sZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAiTm90IGVu
b3VnaCBzYW1wbGUgcG9pbnRzIjsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGZvciAo
dmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmV4cGVyaW1lbnRzLmxlbmd0aDsgKytpbmRleCkK
KyAgICAgICAgICAgIHRoaXMuZXhwZXJpbWVudHNbaW5kZXhdLnNhbXBsZSh2YWx1ZXNbaW5kZXhd
KTsKKyAgICAgICAgICAgIAorICAgICAgICB0aGlzLnNhbXBsZXMucHVzaCh7IHRpbWVPZmZzZXQ6
IHRpbWVPZmZzZXQgLyAxMDAwLCB2YWx1ZXM6IHZhbHVlcyB9KTsKKyAgICB9Cit9CkluZGV4OiBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9zdGF0aXN0aWNz
LmpzCShyZXZpc2lvbiAxOTAyNzgpCShmcm9tIFBlcmZvcm1hbmNlVGVzdHMvcmVzb3VyY2VzL3N0
YXRpc3RpY3MuanM6MTkwMjc4KQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291
cmNlcy9zdGF0aXN0aWNzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQ1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKwordmFyIFN0YXRpc3RpY3MgPSBuZXcgKGZ1bmN0aW9uICgpIHsKKworICAg
IHRoaXMubWF4ID0gZnVuY3Rpb24gKHZhbHVlcykgeworICAgICAgICByZXR1cm4gTWF0aC5tYXgu
YXBwbHkoTWF0aCwgdmFsdWVzKTsKKyAgICB9CisKKyAgICB0aGlzLm1pbiA9IGZ1bmN0aW9uICh2
YWx1ZXMpIHsKKyAgICAgICAgcmV0dXJuIE1hdGgubWluLmFwcGx5KE1hdGgsIHZhbHVlcyk7Cisg
ICAgfQorCisgICAgdGhpcy5zdW0gPSBmdW5jdGlvbiAodmFsdWVzKSB7CisgICAgICAgIHJldHVy
biB2YWx1ZXMucmVkdWNlKGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhICsgYjsgfSwgMCk7Cisg
ICAgfQorCisgICAgdGhpcy5zcXVhcmVTdW0gPSBmdW5jdGlvbiAodmFsdWVzKSB7CisgICAgICAg
IHJldHVybiB2YWx1ZXMucmVkdWNlKGZ1bmN0aW9uIChzdW0sIHZhbHVlKSB7IHJldHVybiBzdW0g
KyB2YWx1ZSAqIHZhbHVlO30sIDApOworICAgIH0KKworICAgIC8vIFdpdGggc3VtIGFuZCBzdW0g
b2Ygc3F1YXJlcywgd2UgY2FuIGNvbXB1dGUgdGhlIHNhbXBsZSBzdGFuZGFyZCBkZXZpYXRpb24g
aW4gTygxKS4KKyAgICAvLyBTZWUgaHR0cHM6Ly9ybml3YS5jb20vMjAxMi0xMS0xMC9zYW1wbGUt
c3RhbmRhcmQtZGV2aWF0aW9uLWluLXRlcm1zLW9mLXN1bS1hbmQtc3F1YXJlLXN1bS1vZi1zYW1w
bGVzLworICAgIHRoaXMuc2FtcGxlU3RhbmRhcmREZXZpYXRpb24gPSBmdW5jdGlvbiAobnVtYmVy
T2ZTYW1wbGVzLCBzdW0sIHNxdWFyZVN1bSkgeworICAgICAgICBpZiAobnVtYmVyT2ZTYW1wbGVz
IDwgMikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KHNx
dWFyZVN1bSAvIChudW1iZXJPZlNhbXBsZXMgLSAxKQorICAgICAgICAgICAgLSBzdW0gKiBzdW0g
LyAobnVtYmVyT2ZTYW1wbGVzIC0gMSkgLyBudW1iZXJPZlNhbXBsZXMpOworICAgIH0KKworICAg
IHRoaXMuc3VwcG9ydGVkQ29uZmlkZW5jZUxldmVscyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
dmFyIHN1cHBvcnRlZExldmVscyA9IFtdOworICAgICAgICBmb3IgKHZhciBxdWFudGlsZSBpbiB0
RGlzdHJpYnV0aW9uSW52ZXJzZUNERikKKyAgICAgICAgICAgIHN1cHBvcnRlZExldmVscy5wdXNo
KCgxIC0gKDEgLSBxdWFudGlsZSkgKiAyKS50b0ZpeGVkKDIpKTsKKyAgICAgICAgcmV0dXJuIHN1
cHBvcnRlZExldmVsczsKKyAgICB9CisKKyAgICAvLyBDb21wdXRlcyB0aGUgZGVsdGEgZCBzLnQu
IChtZWFuIC0gZCwgbWVhbiArIGQpIGlzIHRoZSBjb25maWRlbmNlIGludGVydmFsIHdpdGggdGhl
IHNwZWNpZmllZCBjb25maWRlbmNlIGxldmVsIGluIE8oMSkuCisgICAgdGhpcy5jb25maWRlbmNl
SW50ZXJ2YWxEZWx0YSA9IGZ1bmN0aW9uIChjb25maWRlbmNlTGV2ZWwsIG51bWJlck9mU2FtcGxl
cywgc3VtLCBzcXVhcmVTdW0pIHsKKyAgICAgICAgdmFyIHByb2JhYmlsaXR5ID0gKDEgLSAoMSAt
IGNvbmZpZGVuY2VMZXZlbCkgLyAyKTsKKyAgICAgICAgaWYgKCEocHJvYmFiaWxpdHkgaW4gdERp
c3RyaWJ1dGlvbkludmVyc2VDREYpKSB7CisgICAgICAgICAgICB0aHJvdyAnV2Ugb25seSBzdXBw
b3J0ICcgKyB0aGlzLnN1cHBvcnRlZENvbmZpZGVuY2VMZXZlbHMoKS5tYXAoCisgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKGxldmVsKSB7IHJldHVybiBsZXZlbCAqIDEwMCArICclJzsgfSApLmpv
aW4oJywgJykgKyAnIGNvbmZpZGVuY2UgaW50ZXJ2YWxzLic7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKG51bWJlck9mU2FtcGxlcyAtIDIgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5hTjsKKwor
ICAgICAgICB2YXIgY2RmRm9yUHJvYmFiaWxpdHkgPSB0RGlzdHJpYnV0aW9uSW52ZXJzZUNERltw
cm9iYWJpbGl0eV07CisgICAgICAgIHZhciBkZWdyZWVzT2ZGcmVlZG9tID0gbnVtYmVyT2ZTYW1w
bGVzIC0gMTsKKyAgICAgICAgaWYgKGRlZ3JlZXNPZkZyZWVkb20gPiBjZGZGb3JQcm9iYWJpbGl0
eS5sZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAnV2Ugb25seSBzdXBwb3J0IHVwIHRvICcgKyBk
ZWx0YXMubGVuZ3RoICsgJyBkZWdyZWVzIG9mIGZyZWVkb20nOworCisgICAgICAgIC8vIHREaXN0
cmlidXRpb25RdWFudGlsZShkZWdyZWVzT2ZGcmVlZG9tLCBjb25maWRlbmNlTGV2ZWwpICogc2Ft
cGxlU3RhbmRhcmREZXZpYXRpb24gLyBzcXJ0KG51bWJlck9mU2FtcGxlcykgKiBTL3NxcnQobnVt
YmVyT2ZTYW1wbGVzKQorICAgICAgICB2YXIgcXVhbnRpbGUgPSBjZGZGb3JQcm9iYWJpbGl0eVtk
ZWdyZWVzT2ZGcmVlZG9tIC0gMV07IC8vIFRoZSBmaXJzdCBlbnRyeSBpcyBmb3IgdGhlIG9uZSBk
ZWdyZWUgb2YgZnJlZWRvbS4KKyAgICAgICAgcmV0dXJuIHF1YW50aWxlICogdGhpcy5zYW1wbGVT
dGFuZGFyZERldmlhdGlvbihudW1iZXJPZlNhbXBsZXMsIHN1bSwgc3F1YXJlU3VtKSAvIE1hdGgu
c3FydChudW1iZXJPZlNhbXBsZXMpOworICAgIH0KKworICAgIHRoaXMuY29uZmlkZW5jZUludGVy
dmFsID0gZnVuY3Rpb24gKHZhbHVlcywgcHJvYmFiaWxpdHkpIHsKKyAgICAgICAgdmFyIHN1bSA9
IHRoaXMuc3VtKHZhbHVlcyk7CisgICAgICAgIHZhciBtZWFuID0gc3VtIC8gdmFsdWVzLmxlbmd0
aDsKKyAgICAgICAgdmFyIGRlbHRhID0gdGhpcy5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YShwcm9i
YWJpbGl0eSB8fCAwLjk1LCB2YWx1ZXMubGVuZ3RoLCBzdW0sIHRoaXMuc3F1YXJlU3VtKHZhbHVl
cykpOworICAgICAgICByZXR1cm4gW21lYW4gLSBkZWx0YSwgbWVhbiArIGRlbHRhXTsKKyAgICB9
CisKKyAgICAvLyBTZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdHVkZW50J3NfdC1k
aXN0cmlidXRpb24jVGFibGVfb2Zfc2VsZWN0ZWRfdmFsdWVzCisgICAgLy8gVGhpcyB0YWJsZSBj
b250YWlucyBvbmUgc2lkZWQgKGEuay5hLiB0YWlsKSB2YWx1ZXMuCisgICAgdmFyIHREaXN0cmli
dXRpb25JbnZlcnNlQ0RGID0geworICAgICAgICAwLjk6IFsKKyAgICAgICAgICAgIDMuMDc3Njg0
LCAxLjg4NTYxOCwgMS42Mzc3NDQsIDEuNTMzMjA2LCAxLjQ3NTg4NCwgMS40Mzk3NTYsIDEuNDE0
OTI0LCAxLjM5NjgxNSwgMS4zODMwMjksIDEuMzcyMTg0LAorICAgICAgICAgICAgMS4zNjM0MzAs
IDEuMzU2MjE3LCAxLjM1MDE3MSwgMS4zNDUwMzAsIDEuMzQwNjA2LCAxLjMzNjc1NywgMS4zMzMz
NzksIDEuMzMwMzkxLCAxLjMyNzcyOCwgMS4zMjUzNDEsCisgICAgICAgICAgICAxLjMyMzE4OCwg
MS4zMjEyMzcsIDEuMzE5NDYwLCAxLjMxNzgzNiwgMS4zMTYzNDUsIDEuMzE0OTcyLCAxLjMxMzcw
MywgMS4zMTI1MjcsIDEuMzExNDM0LCAxLjMxMDQxNSwKKyAgICAgICAgICAgIDEuMzA5NDY0LCAx
LjMwODU3MywgMS4zMDc3MzcsIDEuMzA2OTUyLCAxLjMwNjIxMiwgMS4zMDU1MTQsIDEuMzA0ODU0
LCAxLjMwNDIzMCwgMS4zMDM2MzksIDEuMzAzMDc3LAorICAgICAgICAgICAgMS4zMDI1NDMsIDEu
MzAyMDM1LCAxLjMwMTU1MiwgMS4zMDEwOTAsIDEuMzAwNjQ5LCAxLjMwMDIyOCwgMS4yOTk4MjUs
IDEuMjk5NDM5LCAxLjI5OTA2OSwgMS4yOTg3MTQsCisKKyAgICAgICAgICAgIDEuMjk4MzczLCAx
LjI5ODA0NSwgMS4yOTc3MzAsIDEuMjk3NDI2LCAxLjI5NzEzNCwgMS4yOTY4NTMsIDEuMjk2NTgx
LCAxLjI5NjMxOSwgMS4yOTYwNjYsIDEuMjk1ODIxLAorICAgICAgICAgICAgMS4yOTU1ODUsIDEu
Mjk1MzU2LCAxLjI5NTEzNCwgMS4yOTQ5MjAsIDEuMjk0NzEyLCAxLjI5NDUxMSwgMS4yOTQzMTUs
IDEuMjk0MTI2LCAxLjI5Mzk0MiwgMS4yOTM3NjMsCisgICAgICAgICAgICAxLjI5MzU4OSwgMS4y
OTM0MjEsIDEuMjkzMjU2LCAxLjI5MzA5NywgMS4yOTI5NDEsIDEuMjkyNzkwLCAxLjI5MjY0Mywg
MS4yOTI1MDAsIDEuMjkyMzYwLCAxLjI5MjIyNCwKKyAgICAgICAgICAgIDEuMjkyMDkxLCAxLjI5
MTk2MSwgMS4yOTE4MzUsIDEuMjkxNzExLCAxLjI5MTU5MSwgMS4yOTE0NzMsIDEuMjkxMzU4LCAx
LjI5MTI0NiwgMS4yOTExMzYsIDEuMjkxMDI5LAorICAgICAgICAgICAgMS4yOTA5MjQsIDEuMjkw
ODIxLCAxLjI5MDcyMSwgMS4yOTA2MjMsIDEuMjkwNTI3LCAxLjI5MDQzMiwgMS4yOTAzNDAsIDEu
MjkwMjUwLCAxLjI5MDE2MSwgMS4yOTAwNzVdLAorICAgICAgICAwLjk1OiBbCisgICAgICAgICAg
ICA2LjMxMzc1MiwgMi45MTk5ODYsIDIuMzUzMzYzLCAyLjEzMTg0NywgMi4wMTUwNDgsIDEuOTQz
MTgwLCAxLjg5NDU3OSwgMS44NTk1NDgsIDEuODMzMTEzLCAxLjgxMjQ2MSwKKyAgICAgICAgICAg
IDEuNzk1ODg1LCAxLjc4MjI4OCwgMS43NzA5MzMsIDEuNzYxMzEwLCAxLjc1MzA1MCwgMS43NDU4
ODQsIDEuNzM5NjA3LCAxLjczNDA2NCwgMS43MjkxMzMsIDEuNzI0NzE4LAorICAgICAgICAgICAg
MS43MjA3NDMsIDEuNzE3MTQ0LCAxLjcxMzg3MiwgMS43MTA4ODIsIDEuNzA4MTQxLCAxLjcwNTYx
OCwgMS43MDMyODgsIDEuNzAxMTMxLCAxLjY5OTEyNywgMS42OTcyNjEsCisgICAgICAgICAgICAx
LjY5NTUxOSwgMS42OTM4ODksIDEuNjkyMzYwLCAxLjY5MDkyNCwgMS42ODk1NzIsIDEuNjg4Mjk4
LCAxLjY4NzA5NCwgMS42ODU5NTQsIDEuNjg0ODc1LCAxLjY4Mzg1MSwKKyAgICAgICAgICAgIDEu
NjgyODc4LCAxLjY4MTk1MiwgMS42ODEwNzEsIDEuNjgwMjMwLCAxLjY3OTQyNywgMS42Nzg2NjAs
IDEuNjc3OTI3LCAxLjY3NzIyNCwgMS42NzY1NTEsIDEuNjc1OTA1LAorCisgICAgICAgICAgICAx
LjY3NTI4NSwgMS42NzQ2ODksIDEuNjc0MTE2LCAxLjY3MzU2NSwgMS42NzMwMzQsIDEuNjcyNTIy
LCAxLjY3MjAyOSwgMS42NzE1NTMsIDEuNjcxMDkzLCAxLjY3MDY0OSwKKyAgICAgICAgICAgIDEu
NjcwMjE5LCAxLjY2OTgwNCwgMS42Njk0MDIsIDEuNjY5MDEzLCAxLjY2ODYzNiwgMS42NjgyNzEs
IDEuNjY3OTE2LCAxLjY2NzU3MiwgMS42NjcyMzksIDEuNjY2OTE0LAorICAgICAgICAgICAgMS42
NjY2MDAsIDEuNjY2Mjk0LCAxLjY2NTk5NiwgMS42NjU3MDcsIDEuNjY1NDI1LCAxLjY2NTE1MSwg
MS42NjQ4ODUsIDEuNjY0NjI1LCAxLjY2NDM3MSwgMS42NjQxMjUsCisgICAgICAgICAgICAxLjY2
Mzg4NCwgMS42NjM2NDksIDEuNjYzNDIwLCAxLjY2MzE5NywgMS42NjI5NzgsIDEuNjYyNzY1LCAx
LjY2MjU1NywgMS42NjIzNTQsIDEuNjYyMTU1LCAxLjY2MTk2MSwKKyAgICAgICAgICAgIDEuNjYx
NzcxLCAxLjY2MTU4NSwgMS42NjE0MDQsIDEuNjYxMjI2LCAxLjY2MTA1MiwgMS42NjA4ODEsIDEu
NjYwNzE1LCAxLjY2MDU1MSwgMS42NjAzOTEsIDEuNjYwMjM0XSwKKyAgICAgICAgMC45NzU6IFsK
KyAgICAgICAgICAgIDEyLjcwNjIwNSwgNC4zMDI2NTMsIDMuMTgyNDQ2LCAyLjc3NjQ0NSwgMi41
NzA1ODIsIDIuNDQ2OTEyLCAyLjM2NDYyNCwgMi4zMDYwMDQsIDIuMjYyMTU3LCAyLjIyODEzOSwK
KyAgICAgICAgICAgIDIuMjAwOTg1LCAyLjE3ODgxMywgMi4xNjAzNjksIDIuMTQ0Nzg3LCAyLjEz
MTQ1MCwgMi4xMTk5MDUsIDIuMTA5ODE2LCAyLjEwMDkyMiwgMi4wOTMwMjQsIDIuMDg1OTYzLAor
ICAgICAgICAgICAgMi4wNzk2MTQsIDIuMDczODczLCAyLjA2ODY1OCwgMi4wNjM4OTksIDIuMDU5
NTM5LCAyLjA1NTUyOSwgMi4wNTE4MzEsIDIuMDQ4NDA3LCAyLjA0NTIzMCwgMi4wNDIyNzIsCisg
ICAgICAgICAgICAyLjAzOTUxMywgMi4wMzY5MzMsIDIuMDM0NTE1LCAyLjAzMjI0NSwgMi4wMzAx
MDgsIDIuMDI4MDk0LCAyLjAyNjE5MiwgMi4wMjQzOTQsIDIuMDIyNjkxLCAyLjAyMTA3NSwKKyAg
ICAgICAgICAgIDIuMDE5NTQxLCAyLjAxODA4MiwgMi4wMTY2OTIsIDIuMDE1MzY4LCAyLjAxNDEw
MywgMi4wMTI4OTYsIDIuMDExNzQxLCAyLjAxMDYzNSwgMi4wMDk1NzUsIDIuMDA4NTU5LAorCisg
ICAgICAgICAgICAyLjAwNzU4NCwgMi4wMDY2NDcsIDIuMDA1NzQ2LCAyLjAwNDg3OSwgMi4wMDQw
NDUsIDIuMDAzMjQxLCAyLjAwMjQ2NSwgMi4wMDE3MTcsIDIuMDAwOTk1LCAyLjAwMDI5OCwKKyAg
ICAgICAgICAgIDEuOTk5NjI0LCAxLjk5ODk3MiwgMS45OTgzNDEsIDEuOTk3NzMwLCAxLjk5NzEz
OCwgMS45OTY1NjQsIDEuOTk2MDA4LCAxLjk5NTQ2OSwgMS45OTQ5NDUsIDEuOTk0NDM3LAorICAg
ICAgICAgICAgMS45OTM5NDMsIDEuOTkzNDY0LCAxLjk5Mjk5NywgMS45OTI1NDMsIDEuOTkyMTAy
LCAxLjk5MTY3MywgMS45OTEyNTQsIDEuOTkwODQ3LCAxLjk5MDQ1MCwgMS45OTAwNjMsCisgICAg
ICAgICAgICAxLjk4OTY4NiwgMS45ODkzMTksIDEuOTg4OTYwLCAxLjk4ODYxMCwgMS45ODgyNjgs
IDEuOTg3OTM0LCAxLjk4NzYwOCwgMS45ODcyOTAsIDEuOTg2OTc5LCAxLjk4NjY3NSwKKyAgICAg
ICAgICAgIDEuOTg2Mzc3LCAxLjk4NjA4NiwgMS45ODU4MDIsIDEuOTg1NTIzLCAxLjk4NTI1MSwg
MS45ODQ5ODQsIDEuOTg0NzIzLCAxLjk4NDQ2NywgMS45ODQyMTcsIDEuOTgzOTcyXSwKKyAgICAg
ICAgMC45OTogWworICAgICAgICAgICAgMzEuODIwNTE2LCA2Ljk2NDU1NywgNC41NDA3MDMsIDMu
NzQ2OTQ3LCAzLjM2NDkzMCwgMy4xNDI2NjgsIDIuOTk3OTUyLCAyLjg5NjQ1OSwgMi44MjE0Mzgs
IDIuNzYzNzY5LAorICAgICAgICAgICAgMi43MTgwNzksIDIuNjgwOTk4LCAyLjY1MDMwOSwgMi42
MjQ0OTQsIDIuNjAyNDgwLCAyLjU4MzQ4NywgMi41NjY5MzQsIDIuNTUyMzgwLCAyLjUzOTQ4Mywg
Mi41Mjc5NzcsCisgICAgICAgICAgICAyLjUxNzY0OCwgMi41MDgzMjUsIDIuNDk5ODY3LCAyLjQ5
MjE1OSwgMi40ODUxMDcsIDIuNDc4NjMwLCAyLjQ3MjY2MCwgMi40NjcxNDAsIDIuNDYyMDIxLCAy
LjQ1NzI2MiwKKyAgICAgICAgICAgIDIuNDUyODI0LCAyLjQ0ODY3OCwgMi40NDQ3OTQsIDIuNDQx
MTUwLCAyLjQzNzcyMywgMi40MzQ0OTQsIDIuNDMxNDQ3LCAyLjQyODU2OCwgMi40MjU4NDEsIDIu
NDIzMjU3LAorICAgICAgICAgICAgMi40MjA4MDMsIDIuNDE4NDcwLCAyLjQxNjI1MCwgMi40MTQx
MzQsIDIuNDEyMTE2LCAyLjQxMDE4OCwgMi40MDgzNDUsIDIuNDA2NTgxLCAyLjQwNDg5MiwgMi40
MDMyNzIsCisKKyAgICAgICAgICAgIDIuNDAxNzE4LCAyLjQwMDIyNSwgMi4zOTg3OTAsIDIuMzk3
NDEwLCAyLjM5NjA4MSwgMi4zOTQ4MDEsIDIuMzkzNTY4LCAyLjM5MjM3NywgMi4zOTEyMjksIDIu
MzkwMTE5LAorICAgICAgICAgICAgMi4zODkwNDcsIDIuMzg4MDExLCAyLjM4NzAwOCwgMi4zODYw
MzcsIDIuMzg1MDk3LCAyLjM4NDE4NiwgMi4zODMzMDIsIDIuMzgyNDQ2LCAyLjM4MTYxNSwgMi4z
ODA4MDcsCisgICAgICAgICAgICAyLjM4MDAyNCwgMi4zNzkyNjIsIDIuMzc4NTIyLCAyLjM3Nzgw
MiwgMi4zNzcxMDIsIDIuMzc2NDIwLCAyLjM3NTc1NywgMi4zNzUxMTEsIDIuMzc0NDgyLCAyLjM3
Mzg2OCwKKyAgICAgICAgICAgIDIuMzczMjcwLCAyLjM3MjY4NywgMi4zNzIxMTksIDIuMzcxNTY0
LCAyLjM3MTAyMiwgMi4zNzA0OTMsIDIuMzY5OTc3LCAyLjM2OTQ3MiwgMi4zNjg5NzksIDIuMzY4
NDk3LAorICAgICAgICAgICAgMi4zNjgwMjYsIDIuMzY3NTY2LCAyLjM2NzExNSwgMi4zNjY2NzQs
IDIuMzY2MjQzLCAyLjM2NTgyMSwgMi4zNjU0MDcsIDIuMzY1MDAyLCAyLjM2NDYwNiwgMi4zNjQy
MTddCisgICAgfTsKKworfSkoKTsKKworaWYgKHR5cGVvZiBtb2R1bGUgIT0gJ3VuZGVmaW5lZCcp
IHsKKyAgICBmb3IgKHZhciBrZXkgaW4gU3RhdGlzdGljcykKKyAgICAgICAgbW9kdWxlLmV4cG9y
dHNba2V5XSA9IFN0YXRpc3RpY3Nba2V5XTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMJKHdvcmtpbmcgY29weSkK
KysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcwko
d29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsMTIgQEAgdmFyIFN0YXRpc3RpY3MgPSBuZXcgKGZ1
bmN0aW9uICgpIHsKICAgICAgICAgcmV0dXJuIHZhbHVlcy5yZWR1Y2UoZnVuY3Rpb24gKHN1bSwg
dmFsdWUpIHsgcmV0dXJuIHN1bSArIHZhbHVlICogdmFsdWU7fSwgMCk7CiAgICAgfQogCisgICAg
dGhpcy5zYW1wbGVNZWFuID0gZnVuY3Rpb24obnVtYmVyT2ZTYW1wbGVzLCBzdW0pIHsKKyAgICAg
ICAgaWYgKG51bWJlck9mU2FtcGxlcyA8IDEpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIHN1bSAvIG51bWJlck9mU2FtcGxlczsKKyAgICB9CisKICAgICAvLyBXaXRoIHN1
bSBhbmQgc3VtIG9mIHNxdWFyZXMsIHdlIGNhbiBjb21wdXRlIHRoZSBzYW1wbGUgc3RhbmRhcmQg
ZGV2aWF0aW9uIGluIE8oMSkuCiAgICAgLy8gU2VlIGh0dHBzOi8vcm5pd2EuY29tLzIwMTItMTEt
MTAvc2FtcGxlLXN0YW5kYXJkLWRldmlhdGlvbi1pbi10ZXJtcy1vZi1zdW0tYW5kLXNxdWFyZS1z
dW0tb2Ytc2FtcGxlcy8KICAgICB0aGlzLnNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uID0gZnVuY3Rp
b24gKG51bWJlck9mU2FtcGxlcywgc3VtLCBzcXVhcmVTdW0pIHsKQEAgLTQ5LDYgKzU1LDEzIEBA
IHZhciBTdGF0aXN0aWNzID0gbmV3IChmdW5jdGlvbiAoKSB7CiAgICAgICAgIHJldHVybiBNYXRo
LnNxcnQoc3F1YXJlU3VtIC8gKG51bWJlck9mU2FtcGxlcyAtIDEpCiAgICAgICAgICAgICAtIHN1
bSAqIHN1bSAvIChudW1iZXJPZlNhbXBsZXMgLSAxKSAvIG51bWJlck9mU2FtcGxlcyk7CiAgICAg
fQorICAgIAorICAgIHRoaXMuZ2VvbWV0cmljTWVhbiA9IGZ1bmN0aW9uKHZhbHVlcykgeworICAg
ICAgICBpZiAoIXZhbHVlcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
dmFyIHJvb3RzID0gdmFsdWVzLm1hcChmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gIE1hdGgucG93
KHZhbHVlLCAxIC8gdmFsdWVzLmxlbmd0aCk7IH0pCisgICAgICAgIHJldHVybiByb290cy5yZWR1
Y2UoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYSAqIGI7IH0pOworICAgIH0KIAogICAgIHRoaXMu
c3VwcG9ydGVkQ29uZmlkZW5jZUxldmVscyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgdmFyIHN1
cHBvcnRlZExldmVscyA9IFtdOwpAQCAtNjgsOSArODEsNyBAQCB2YXIgU3RhdGlzdGljcyA9IG5l
dyAoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgcmV0dXJuIE5hTjsKIAogICAgICAgICB2YXIg
Y2RmRm9yUHJvYmFiaWxpdHkgPSB0RGlzdHJpYnV0aW9uSW52ZXJzZUNERltwcm9iYWJpbGl0eV07
Ci0gICAgICAgIHZhciBkZWdyZWVzT2ZGcmVlZG9tID0gbnVtYmVyT2ZTYW1wbGVzIC0gMTsKLSAg
ICAgICAgaWYgKGRlZ3JlZXNPZkZyZWVkb20gPiBjZGZGb3JQcm9iYWJpbGl0eS5sZW5ndGgpCi0g
ICAgICAgICAgICB0aHJvdyAnV2Ugb25seSBzdXBwb3J0IHVwIHRvICcgKyBkZWx0YXMubGVuZ3Ro
ICsgJyBkZWdyZWVzIG9mIGZyZWVkb20nOworICAgICAgICB2YXIgZGVncmVlc09mRnJlZWRvbSA9
IE1hdGgubWluKG51bWJlck9mU2FtcGxlcyAtIDEsIGNkZkZvclByb2JhYmlsaXR5Lmxlbmd0aCk7
CiAKICAgICAgICAgLy8gdERpc3RyaWJ1dGlvblF1YW50aWxlKGRlZ3JlZXNPZkZyZWVkb20sIGNv
bmZpZGVuY2VMZXZlbCkgKiBzYW1wbGVTdGFuZGFyZERldmlhdGlvbiAvIHNxcnQobnVtYmVyT2ZT
YW1wbGVzKSAqIFMvc3FydChudW1iZXJPZlNhbXBsZXMpCiAgICAgICAgIHZhciBxdWFudGlsZSA9
IGNkZkZvclByb2JhYmlsaXR5W2RlZ3JlZXNPZkZyZWVkb20gLSAxXTsgLy8gVGhlIGZpcnN0IGVu
dHJ5IGlzIGZvciB0aGUgb25lIGRlZ3JlZSBvZiBmcmVlZG9tLgpJbmRleDogUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwJKHJldmlzaW9u
IDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL2FuaW1vbWV0ZXIuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvYW5p
bW9tZXRlci5jc3MiPgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5q
cyIgZGVmZXI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zYW1wbGVy
LmpzIiBkZWZlcj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2V4dGVu
c2lvbnMuanMiIGRlZmVyPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVz
dHMuanMiIGRlZmVyPSIiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYmVu
Y2htYXJrLXJ1bm5lci5qcyIgZGVmZXI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291
cmNlcy9hbmltb21ldGVyLmpzIiBkZWZlcj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2QzLm1pbi5qcyIgZGVmZXI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291
cmNlcy9ncmFwaC5qcyIgZGVmZXI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8bWFp
bj4KKyAgICAgICAgPHNlY3Rpb24gaWQ9ImhvbWUiIGNsYXNzPSJzZWxlY3RlZCI+CisgICAgICAg
ICAgICA8cD4KKyAgICAgICAgICAgICAgICBBbmltb21ldGVyIGlzIGEgYnJvd3NlciBiZW5jaG1h
cmsgdGhhdCBtZWFzdXJlcyB0aGUgY29tcGxleGl0eSBvZiBhbiBhbmltYXRpb24gZm9yCisgICAg
ICAgICAgICAgICAgd2hpY2ggYSBicm93c2VyIGNhbiBhY2hpZXZlIDUwIEZQUyAoZnJhbWUgcGVy
IHNlY29uZCkuIEl0IHVzZXMgYWRhcHRpdmUgYW5pbWF0aW9ucworICAgICAgICAgICAgICAgIHRv
IHR1bmUgdGhlaXIgY29tcGxleGl0aWVzIHRvIHN0YXkgY2xvc2UgdG8gNTAgRlBTLgorICAgICAg
ICAgICAgPC9wPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3B0aW9ucyI+CisgICAgICAgICAg
ICAgICAgPGRpdiBjbGFzcz0iY29sdW1uIj4KKyAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjxp
bnB1dCBpZD0iaHRtbC1zdWl0ZSIgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+IEhUTUwgZWxlbWVu
dHMgc3VpdGU8L2xhYmVsPjxicj4KKyAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCBp
ZD0iY2FudmFzLXN1aXRlIiB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD4gQ2FudmFzIGRyYXdpbmdz
IHN1aXRlPC9sYWJlbD48YnI+CisgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48aW5wdXQgaWQ9
InN2Zy1zdWl0ZSIgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+IFNWRyBlbGVtZW50cyBzdWl0ZTwv
bGFiZWw+PGJyPgorICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PGlucHV0IGlkPSJ0ZW1wbGF0
ZS1zdWl0ZSIgdHlwZT0iY2hlY2tib3giPiBUZW1wbGF0ZSBzdWl0ZTwvbGFiZWw+CisgICAgICAg
ICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdj4KKyAgICAgICAgICAgICAgICAg
ICAgPGxhYmVsPlRlc3QgaW50ZXJ2YWw6IDxpbnB1dCBpZD0idGVzdC1pbnRlcnZhbCIgdHlwZT0i
bnVtYmVyIiB2YWx1ZT0iMzAiPiBzZWNvbmRzPC9sYWJlbD48YnI+CisgICAgICAgICAgICAgICAg
ICAgIDxsYWJlbD5GcmFtZSByYXRlOiA8aW5wdXQgaWQ9ImZyYW1lLXJhdGUiIHR5cGU9Im51bWJl
ciIgdmFsdWU9IjUwIj4gZnBzPC9sYWJlbD48YnI+CisgICAgICAgICAgICAgICAgICAgIDxsYWJl
bD48aW5wdXQgaWQ9ImVzdGltYXRlZC1mcmFtZS1yYXRlIiB0eXBlPSJjaGVja2JveCIgY2hlY2tl
ZD4gRXN0aW1hdGVkIEZyYW1lIFJhdGU8L2xhYmVsPjxicj4KKyAgICAgICAgICAgICAgICAgICAg
PGxhYmVsPjxpbnB1dCBpZD0iZml4LXRlc3QtY29tcGxleGl0eSIgdHlwZT0iY2hlY2tib3giPiBG
aXggdGVzdCBjb21wbGV4aXR5IGFmdGVyIHdhcm11cDwvbGFiZWw+CisgICAgICAgICAgICAgICAg
PC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRv
bnMiPgorICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0ic3RhcnRUZXN0KCkiPlN0YXJ0
IFRlc3Q8L2J1dHRvbj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L3NlY3Rpb24+Cisg
ICAgICAgIDxzZWN0aW9uIGlkPSJydW5uaW5nIj4KKyAgICAgICAgICAgIDxkaXYgaWQ9InRlc3RD
b250YWluZXIiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBpZD0icHJvZ3Jlc3MiPgorICAgICAg
ICAgICAgICAgIDxkaXYgaWQ9InByb2dyZXNzLWNvbXBsZXRlZCI+PC9kaXY+CisgICAgICAgICAg
ICA8L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgaWQ9InJlY29yZCI+CisgICAgICAgICAgICAgICAg
PHRhYmxlIGNsYXNzPSJyZWNvcmQtdGFibGUiPjwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4K
KyAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8c2VjdGlvbiBpZD0icmVzdWx0cyI+CisgICAg
ICAgICAgICA8aDE+UmVzdWx0czwvaDE+CisgICAgICAgICAgICA8dGFibGUgY2xhc3M9InJlc3Vs
dHMtdGFibGUiPjwvdGFibGU+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b25zIj4KKyAg
ICAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InN0YXJ0VGVzdCgpIj5UZXN0IEFnYWluPC9i
dXR0b24+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9zZWN0aW9uPiAgCisgICAgICAg
IDxzZWN0aW9uIGlkPSJncmFwaCI+CisgICAgICAgICAgICA8aDE+R3JhcGg8L2gxPgorICAgICAg
ICAgICAgPGRpdiBpZD0iZ3JhcGhDb250YWluZXIiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBj
bGFzcz0iYnV0dG9ucyI+CisgICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJzaG93UmVz
dWx0cygpIj5SZXN1bHRzPC9idXR0b24+CisgICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNr
PSJzdGFydFRlc3QoKSI+VGVzdCBBZ2FpbjwvYnV0dG9uPiAgICAgICAgCisgICAgICAgICAgICA8
L2Rpdj4KKyAgICAgICAgPC9zZWN0aW9uPiAgCisgICAgPC9tYWluPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5p
bW9tZXRlci5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1
bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5jc3MJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDIyMSBAQAorYm9keSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
cmdiKDk2LCA5NiwgOTYpOworICAgIGNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7CisgICAgZm9u
dC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgVmVyZGFuYSwgc2Fucy1zZXJp
ZjsKK30KKworbWFpbiB7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIHdpZHRoOiA4MDBweDsKKyAgICBoZWlnaHQ6IDYwMHB4OworICAgIHRvcDogNTAl
OworICAgIGxlZnQ6IDUwJTsKKyAgICBtYXJnaW4tdG9wOiAtMzIxcHg7CisgICAgbWFyZ2luLWxl
ZnQ6IC00MjFweDsKKyAgICBwYWRkaW5nOiAxNXB4OworICAgIGJvcmRlcjogNnB4IHNvbGlkIHJn
YigyMzUsIDIzNSwgMjM1KTsKKyAgICBib3JkZXItcmFkaXVzOiAyMHB4OworfQorCitpZnJhbWUg
eworICAgIHdpZHRoOiA4MDBweDsKKyAgICBoZWlnaHQ6IDYwMHB4OworICAgIGJvcmRlcjogMHB4
IG5vbmU7CisgICAgcG9zaXRpb246IGFic29sdXRlOworfQorCitsYWJlbCwgcCB7CisgICAgZm9u
dC1zaXplOiAxNnB4OworICAgIGxpbmUtaGVpZ2h0OiAyMXB4OworfQorCitzZWN0aW9uIHsKKyAg
ICBkaXNwbGF5OiBub25lOworfQorCitzZWN0aW9uID4gcCB7CisgICAgbWFyZ2luOiAxMHB4IDIw
cHg7Cit9CisKK3NlY3Rpb24jaG9tZSA+IHAgeworICAgIG1hcmdpbjogMCBhdXRvOworICAgIHdp
ZHRoOiA3MCU7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworfQorCitzZWN0aW9uI2hvbWUgPiBw
OmZpcnN0LWNoaWxkIHsKKyAgICBtYXJnaW4tdG9wOiAxNjBweDsKKyAgICB0ZXh0LWFsaWduOiBj
ZW50ZXI7Cit9CisKK3NlY3Rpb24uc2VsZWN0ZWQgeworICAgIGRpc3BsYXk6IGJsb2NrOworfQor
CisjdGVzdENvbnRhaW5lciB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMTVw
eDsKKyAgICBsZWZ0OiAxNXB4OworICAgIHdpZHRoOiA4MDBweDsKKyAgICBoZWlnaHQ6IDYwMHB4
OworfQorCitzZWN0aW9uI3J1bm5pbmcgPiAjcHJvZ3Jlc3MgeworICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKKyAgICBib3R0b206IC02cHg7CisgICAgbGVmdDogNjBweDsKKyAgICByaWdodDogNjBw
eDsKKyAgICBoZWlnaHQ6IDZweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTI4LCAxMjgs
IDEyOCk7CisgICAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCByZ2IoNDYsIDUxLCA1NSk7CisgICAg
Ym9yZGVyLXJpZ2h0OiA2cHggc29saWQgcmdiKDQ2LCA1MSwgNTUpOworfQorCitzZWN0aW9uI3J1
bm5pbmcgI3Byb2dyZXNzLWNvbXBsZXRlZCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
IHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAgIGhlaWdodDogNnB4OworICAgIHdpZHRoOiAwOwor
ICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzUsIDIzNSwgMjM1KTsKK30KKworc2VjdGlvbiNy
dW5uaW5nID4gI3JlY29yZCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGJvdHRvbTog
LTEzMHB4OworICAgIGxlZnQ6IDBweDsKKyAgICByaWdodDogMHB4OworICAgIGhlaWdodDogNzVw
eDsKKyAgICBjb2xvcjogcmdiKDEyOCwgMTI4LCAxMjgpOworICAgIHBhZGRpbmc6IDE1cHg7Cisg
ICAgYm9yZGVyOiA2cHggc29saWQgcmdiKDIzNSwgMjM1LCAyMzUpOworICAgIGJvcmRlci1yYWRp
dXM6IDIwcHg7Cit9CisKK3NlY3Rpb24jcnVubmluZyA+ICNyZWNvcmQgPiB0YWJsZSwKK3NlY3Rp
b24jcmVzdWx0cyA+IHRhYmxlIHsKKyAgICB3aWR0aDogMTAwJTsKK30KKworc2VjdGlvbiNydW5u
aW5nID4gI3JlY29yZCA+IHRhYmxlIHRkLCB0aCwKK3NlY3Rpb24jcmVzdWx0cyA+IHRhYmxlIHRk
LCB0aCB7CisgICAgZm9udC1zaXplOiAxMXB4OworICAgIGJvcmRlcjogMXB4IHNvbGlkICM5OGJm
MjE7CisgICAgcGFkZGluZzogM3B4IDRweCAycHggNHB4OworfQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAorc2VjdGlvbiNydW5uaW5nID4gI3JlY29yZCA+IHRh
YmxlIHRyLmFsdCwgdGQKK3NlY3Rpb24jcmVzdWx0cyA+IHRhYmxlIHRyLmFsdCwgdGQgeworICAg
IGNvbG9yOiAjMDAwMDAwOworICAgIGJhY2tncm91bmQtY29sb3I6ICNFQUYyRDM7Cit9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK3NlY3Rpb24jcnVubmlu
ZyA+ICNyZWNvcmQgPiB0YWJsZSB0aCwKK3NlY3Rpb24jcmVzdWx0cyA+IHRhYmxlIHRoIHsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiAjQTdDOTQyOyAKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9
CisKKy5vcHRpb25zIHsKKyAgICBtYXJnaW46MCBhdXRvOyAgICAKKyAgICBtYXJnaW4tdG9wOiAz
MHB4OworICAgIHdpZHRoOiA1MDBweDsKKyAgICBhbGlnbjogY2VudGVyOworfQorCisuY29sdW1u
IHsKKyAgICB3aWR0aDogNDUlOworICAgIGZsb2F0OmxlZnQ7CisgICAgaGVpZ2h0OiAxMjBweDsK
KyAgICBwYWRkaW5nOjVweDsKK30KKworaW5wdXRbdHlwZT0ibnVtYmVyIl0geworICAgd2lkdGg6
NTBweDsKK30KKworLmJ1dHRvbnMgeworICAgIG1hcmdpbi10b3A6IDEwcHg7CisgICAgdGV4dC1h
bGlnbjogY2VudGVyOworICAgIGNsZWFyOiBib3RoOworfQorCitidXR0b24geworICAgIC13ZWJr
aXQtYXBwZWFyYW5jZTogbm9uZTsKKyAgICBib3JkZXI6IDNweCBzb2xpZCByZ2IoMjM1LCAyMzUs
IDIzNSk7CisgICAgYm9yZGVyLXJhZGl1czogMTBweDsKKyAgICBtaW4td2lkdGg6IDIwMHB4Owor
ICAgIHBhZGRpbmc6IDVweCAyMHB4OworICAgIG1hcmdpbjogMCA0MHB4OworICAgIGZvbnQtc2l6
ZTogMjVweDsKKyAgICBjb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOworICAgIGJhY2tncm91bmQt
Y29sb3I6IHRyYW5zcGFyZW50OworCisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKK30K
KworYnV0dG9uOmFjdGl2ZSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzNSwgMjM1LCAy
MzUpOworICAgIGNvbG9yOiByZ2IoNDYsIDUxLCA1NSk7CisgICAgYm9yZGVyLWNvbG9yOiByZ2Io
MjM1LCAyMzUsIDIzNSkgIWltcG9ydGFudDsKK30KKworYnV0dG9uOmZvY3VzIHsKKyAgICBvdXRs
aW5lOiBub25lOworICAgIGJvcmRlci1jb2xvcjogcmdiKDIzMiwgNzksIDc5KTsKK30KKworLnNt
YWxsLWJ1dHRvbiB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgIGJvcmRlcjog
MXB4IHNvbGlkIHJnYig5NiwgOTYsIDk2KTsKKyAgICBib3JkZXItcmFkaXVzOiAycHg7CisgICAg
cGFkZGluZzogMXB4IDRweDsKKyAgICBtYXJnaW46IDAgNHB4OworICAgIGJhY2tncm91bmQtY29s
b3I6IHRyYW5zcGFyZW50OworICAgIGN1cnNvcjogcG9pbnRlcjsKKyAgICB0ZXh0LWFsaWduOiBj
ZW50ZXI7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKK30KKworI2dyYXBoQ29udGFp
bmVyIHsKKyAgZm9udDogMTBweCBzYW5zLXNlcmlmOworICBjb2xvcjogcmdiKDIzNSwgMjM1LCAy
MzUpOyAgCit9CisKKy5heGlzIHBhdGgsCisuYXhpcyBsaW5lIHsKKyAgZmlsbDogbm9uZTsKKyAg
c3Ryb2tlOiByZ2IoMjM1LCAyMzUsIDIzNSk7CisgIHNoYXBlLXJlbmRlcmluZzogY3Jpc3BFZGdl
czsKK30KKworLmxlZnQtc2FtcGxlcyB7CisgIGZpbGw6IG5vbmU7CisgIHN0cm9rZTogc3RlZWxi
bHVlOworICBzdHJva2Utd2lkdGg6IDEuNXB4OworfQorCisucmlnaHQtc2FtcGxlcyB7CisgICAg
ZmlsbDogbm9uZTsKKyAgICBzdHJva2U6IHJlZDsKKyAgICBzdHJva2Utd2lkdGg6IDEuNXB4Owor
fQorCisuc21hcGxlLXRpbWUgeworICAgIGZpbGw6IG5vbmU7CisgICAgc3Ryb2tlOiBncmVlbjsK
KyAgICBzdHJva2Utd2lkdGg6IDEuNXB4OworfQorCisubGVmdC1tZWFuIHsKKyAgICBmaWxsOiBu
b25lOworICAgIHN0cm9rZTogeWVsbG93OworICAgIHN0cm9rZS13aWR0aDogMS41cHg7Cit9CisK
Ky5yaWdodC1tZWFuIHsKKyAgICBmaWxsOiBub25lOworICAgIHN0cm9rZTogbWFnZW50YTsKKyAg
ICBzdHJva2Utd2lkdGg6IDEuNXB4OworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmpzCShyZXZp
c2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMv
YW5pbW9tZXRlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNiBAQAord2luZG93LmJl
bmNobWFya1J1bm5lckNsaWVudCA9IHsKKyAgICBpdGVyYXRpb25Db3VudDogMSwKKyAgICB0ZXN0
c0NvdW50OiBudWxsLAorICAgIHByb2dyZXNzQmFyOiBudWxsLAorICAgIHJlY29yZFRhYmxlOiBu
dWxsLAorICAgIG9wdGlvbnM6IHsgdGVzdEludGVydmFsOiAzMDAwMCwgZnJhbWVSYXRlOiA1MCwg
ZXN0aW1hdGVkRnJhbWVSYXRlOiB0cnVlLCBmaXhUZXN0Q29tcGxleGl0eSA6IGZhbHNlIH0sCisg
ICAgc2NvcmU6IDAsCisgICAgX2l0ZXJhdGlvbnNTYW1wbGVyczogW10sCisgICAgX3Jlc3VsdHNU
YWJsZTogbnVsbCwKKyAgICAKKyAgICB3aWxsQWRkVGVzdEZyYW1lOiBmdW5jdGlvbiAoZnJhbWUp
CisgICAgeworICAgICAgICB2YXIgbWFpbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm1haW4i
KTsKKyAgICAgICAgdmFyIHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShtYWluKTsKKyAgICAgICAg
ZnJhbWUuc3R5bGUubGVmdCA9IG1haW4ub2Zmc2V0TGVmdCArIHBhcnNlSW50KHN0eWxlLmJvcmRl
ckxlZnRXaWR0aCkgKyBwYXJzZUludChzdHlsZS5wYWRkaW5nTGVmdCkgKyAicHgiOworICAgICAg
ICBmcmFtZS5zdHlsZS50b3AgPSBtYWluLm9mZnNldFRvcCArIHBhcnNlSW50KHN0eWxlLmJvcmRl
clRvcFdpZHRoKSArIHBhcnNlSW50KHN0eWxlLnBhZGRpbmdUb3ApICsgInB4IjsKKyAgICB9LAor
ICAgIAorICAgIGRpZFJ1blRlc3Q6IGZ1bmN0aW9uICgpCisgICAgeworICAgICAgICB0aGlzLnBy
b2dyZXNzQmFyLmluY1JhbmdlKCk7CisgICAgfSwKKyAgICAKKyAgICB3aWxsU3RhcnRGaXJzdEl0
ZXJhdGlvbjogZnVuY3Rpb24gKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2l0ZXJhdGlvbnNTYW1w
bGVycyA9IFtdOworICAgICAgICB0aGlzLl9yZXN1bHRzVGFibGUgPSBuZXcgUmVjb3JkVGFibGUo
ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnJlc3VsdHMtdGFibGUiKVswXSk7CisgICAgICAg
IAorICAgICAgICB0aGlzLnByb2dyZXNzQmFyID0gbmV3IFByb2dyZXNzQmFyKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJwcm9ncmVzcy1jb21wbGV0ZWQiKSwgdGhpcy50ZXN0c0NvdW50KTsKKyAg
ICAgICAgdGhpcy5yZWNvcmRUYWJsZSA9IG5ldyBSZWNvcmRUYWJsZShkb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCIucmVjb3JkLXRhYmxlIilbMF0pOworICAgIH0sCisgICAgCisgICAgZGlkUnVu
U3VpdGVzOiBmdW5jdGlvbiAoc3VpdGVzU2FtcGxlcnMpCisgICAgeworICAgICAgICB0aGlzLl9p
dGVyYXRpb25zU2FtcGxlcnMucHVzaChzdWl0ZXNTYW1wbGVycyk7CisgICAgfSwKKyAgICAKKyAg
ICBkaWRGaW5pc2hMYXN0SXRlcmF0aW9uOiBmdW5jdGlvbiAoKQorICAgIHsKKyAgICAgICAgdGhp
cy5zY29yZSA9IHRoaXMuX3Jlc3VsdHNUYWJsZS5zaG93SXRlcmF0aW9ucyh0aGlzLl9pdGVyYXRp
b25zU2FtcGxlcnMsICIiKTsKKyAgICAgICAgc2hvd1Jlc3VsdHMoKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHNob3dTZWN0aW9uKHNlY3Rpb25JZGVudGlmaWVyLCBwdXNoU3RhdGUpCit7CisgICAg
dmFyIGN1cnJlbnRTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNlY3Rp
b24uc2VsZWN0ZWQiKTsKKyAgICBjb25zb2xlLmFzc2VydChjdXJyZW50U2VjdGlvbkVsZW1lbnQp
OworCisgICAgdmFyIG5ld1NlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
c2VjdGlvbklkZW50aWZpZXIpOworICAgIGNvbnNvbGUuYXNzZXJ0KG5ld1NlY3Rpb25FbGVtZW50
KTsKKworICAgIGN1cnJlbnRTZWN0aW9uRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3Rl
ZCIpOworICAgIG5ld1NlY3Rpb25FbGVtZW50LmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkIik7CisK
KyAgICBpZiAocHVzaFN0YXRlKQorICAgICAgICBoaXN0b3J5LnB1c2hTdGF0ZSh7c2VjdGlvbjog
c2VjdGlvbklkZW50aWZpZXJ9LCBkb2N1bWVudC50aXRsZSk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0
QmVuY2htYXJrKCkKK3sKKyAgICB2YXIgY2hlY2tib3hlcyA9IFsgCisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJodG1sLXN1aXRlIiksIAorICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY2FudmFzLXN1aXRlIiksIAorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic3ZnLXN1aXRlIiksCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZW1wbGF0
ZS1zdWl0ZSIpLAorICAgIF07CisgICAgdmFyIGVuYWJsZWRTdWl0ZXMgPSBTdWl0ZXMuZmlsdGVy
KGZ1bmN0aW9uIChzdWl0ZSwgaW5kZXgpIHsgcmV0dXJuICFzdWl0ZS5kaXNhYmxlZCAmJiBjaGVj
a2JveGVzW2luZGV4XS5jaGVja2VkOyB9KTsKKyAgICB2YXIgdGVzdHNDb3VudCA9IGVuYWJsZWRT
dWl0ZXMucmVkdWNlKGZ1bmN0aW9uICh0ZXN0c0NvdW50LCBzdWl0ZSkgeyByZXR1cm4gdGVzdHND
b3VudCArIHN1aXRlLnRlc3RzLmxlbmd0aDsgfSwgMCk7CisgICAgYmVuY2htYXJrUnVubmVyQ2xp
ZW50LnRlc3RzQ291bnQgPSBiZW5jaG1hcmtSdW5uZXJDbGllbnQuaXRlcmF0aW9uQ291bnQgKiB0
ZXN0c0NvdW50OworICAgIGJlbmNobWFya1J1bm5lckNsaWVudC5vcHRpb25zWyJ0ZXN0SW50ZXJ2
YWwiXSA9IHBhcnNlSW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LWludGVydmFsIiku
dmFsdWUpICogMTAwMDsKKyAgICBiZW5jaG1hcmtSdW5uZXJDbGllbnQub3B0aW9uc1siZnJhbWVS
YXRlIl0gPSBwYXJzZUludChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhbWUtcmF0ZSIpLnZh
bHVlKTsKKyAgICBiZW5jaG1hcmtSdW5uZXJDbGllbnQub3B0aW9uc1siZXN0aW1hdGVkRnJhbWVS
YXRlIl0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXN0aW1hdGVkLWZyYW1lLXJhdGUiKS5j
aGVja2VkOyAgICAKKyAgICBiZW5jaG1hcmtSdW5uZXJDbGllbnQub3B0aW9uc1siZml4VGVzdENv
bXBsZXhpdHkiXSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaXgtdGVzdC1jb21wbGV4aXR5
IikuY2hlY2tlZDsKKyAgICB2YXIgcnVubmVyID0gbmV3IEJlbmNobWFya1J1bm5lcihlbmFibGVk
U3VpdGVzLCBiZW5jaG1hcmtSdW5uZXJDbGllbnQpOworICAgIHJ1bm5lci5ydW5NdWx0aXBsZUl0
ZXJhdGlvbnMoYmVuY2htYXJrUnVubmVyQ2xpZW50Lml0ZXJhdGlvbkNvdW50KTsKK30KKworZnVu
Y3Rpb24gc3RhcnRUZXN0KCkKK3sKKyAgICBzaG93U2VjdGlvbigicnVubmluZyIpOworICAgIHN0
YXJ0QmVuY2htYXJrKCk7Cit9CisKK2Z1bmN0aW9uIHNob3dSZXN1bHRzKHNjb3JlKQoreworICAg
IHZhciBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3Jlc3VsdHMgPiBoMSIpOwor
ICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSAiUmVzdWx0czoiCisgICAgCisgICAgdmFyIHNjb3Jl
ID0gYmVuY2htYXJrUnVubmVyQ2xpZW50LnNjb3JlLnRvRml4ZWQoMik7CisgICAgZWxlbWVudC50
ZXh0Q29udGVudCArPSAiIFtTY29yZSA9ICIgKyBzY29yZSArICJdIjsKKyAgICAgICAgCisgICAg
c2hvd1NlY3Rpb24oInJlc3VsdHMiLCB0cnVlKTsKK30KKworZnVuY3Rpb24gc2hvd0dyYXBoKHRl
c3ROYW1lLCBheGVzLCBzYW1wbGVzLCBzYW1wbGluZ1RpbWVPZmZzZXQpCit7CisgICAgdmFyIGVs
ZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZ3JhcGggPiBoMSIpOworICAgIGVsZW1l
bnQudGV4dENvbnRlbnQgPSAiR3JhcGg6IgorCisgICAgaWYgKHRlc3ROYW1lLmxlbmd0aCkKKyAg
ICAgICAgZWxlbWVudC50ZXh0Q29udGVudCArPSAiIFt0ZXN0ID0gIiArIHRlc3ROYW1lICsgIl0i
OworICAgICAgICAgICAgCisgICAgZ3JhcGgoIiNncmFwaENvbnRhaW5lciIsIG5ldyBQb2ludCg3
MDAsIDQwMCksIG5ldyBJbnNldHMoMjAsIDUwLCAyMCwgNTApLCBheGVzLCBzYW1wbGVzLCBzYW1w
bGluZ1RpbWVPZmZzZXQpOworICAgIHNob3dTZWN0aW9uKCJncmFwaCIsIHRydWUpOyAgICAKK30K
SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2JlbmNo
bWFyay1ydW5uZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3J1bm5lci9yZXNvdXJjZXMvYmVuY2htYXJrLXJ1bm5lci5qcwkocmV2aXNpb24gMTkwMjc4KQko
ZnJvbSBQZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVu
bmVyLmpzOjE5MDI3OCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVz
b3VyY2VzL2JlbmNobWFyay1ydW5uZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNzAg
QEAKKy8vIEZJWE1FOiBVc2UgdGhlIHJlYWwgcHJvbWlzZSBpZiBhdmFpbGFibGUuCisvLyBGSVhN
RTogTWFrZSBzdXJlIHRoaXMgaW50ZXJmYWNlIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgcmVhbCBQ
cm9taXNlLgorZnVuY3Rpb24gU2ltcGxlUHJvbWlzZSgpIHsKKyAgICB0aGlzLl9jaGFpbmVkUHJv
bWlzZSA9IG51bGw7CisgICAgdGhpcy5fY2FsbGJhY2sgPSBudWxsOworfQorCitTaW1wbGVQcm9t
aXNlLnByb3RvdHlwZS50aGVuID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7CisgICAgaWYgKHRoaXMu
X2NhbGxiYWNrKQorICAgICAgICB0aHJvdyAiU2ltcGxlUHJvbWlzZSBkb2Vzbid0IHN1cHBvcnQg
bXVsdGlwbGUgY2FsbHMgdG8gdGhlbiI7CisgICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjazsK
KyAgICB0aGlzLl9jaGFpbmVkUHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgIAorICAg
IGlmICh0aGlzLl9yZXNvbHZlZCkKKyAgICAgICAgdGhpcy5yZXNvbHZlKHRoaXMuX3Jlc29sdmVk
VmFsdWUpOworCisgICAgcmV0dXJuIHRoaXMuX2NoYWluZWRQcm9taXNlOworfQorCitTaW1wbGVQ
cm9taXNlLnByb3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgaWYgKCF0
aGlzLl9jYWxsYmFjaykgeworICAgICAgICB0aGlzLl9yZXNvbHZlZCA9IHRydWU7CisgICAgICAg
IHRoaXMuX3Jlc29sdmVkVmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHZhciByZXN1bHQgPSB0aGlzLl9jYWxsYmFjayh2YWx1ZSk7CisgICAgaWYgKHJlc3VsdCBp
bnN0YW5jZW9mIFNpbXBsZVByb21pc2UpIHsKKyAgICAgICAgdmFyIGNoYWluZWRQcm9taXNlID0g
dGhpcy5fY2hhaW5lZFByb21pc2U7CisgICAgICAgIHJlc3VsdC50aGVuKGZ1bmN0aW9uIChyZXN1
bHQpIHsgY2hhaW5lZFByb21pc2UucmVzb2x2ZShyZXN1bHQpOyB9KTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgdGhpcy5fY2hhaW5lZFByb21pc2UucmVzb2x2ZShyZXN1bHQpOworfQorCitmdW5jdGlv
biBCZW5jaG1hcmtUZXN0U3RlcCh0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uKSB7CisgICAgdGhpcy5u
YW1lID0gdGVzdE5hbWU7CisgICAgdGhpcy5ydW4gPSB0ZXN0RnVuY3Rpb247Cit9CisKK2Z1bmN0
aW9uIEJlbmNobWFya1J1bm5lcihzdWl0ZXMsIGNsaWVudCkgeworICAgIHRoaXMuX3N1aXRlcyA9
IHN1aXRlczsKKyAgICB0aGlzLl9wcmVwYXJlUmV0dXJuVmFsdWUgPSBudWxsOworICAgIHRoaXMu
X2NsaWVudCA9IGNsaWVudDsKK30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS53YWl0Rm9y
RWxlbWVudCA9IGZ1bmN0aW9uIChzZWxlY3RvcikgeworICAgIHZhciBwcm9taXNlID0gbmV3IFNp
bXBsZVByb21pc2U7CisgICAgdmFyIGNvbnRlbnREb2N1bWVudCA9IHRoaXMuX2ZyYW1lLmNvbnRl
bnREb2N1bWVudDsKKworICAgIGZ1bmN0aW9uIHJlc29sdmVJZlJlYWR5KCkgeworICAgICAgICB2
YXIgZWxlbWVudCA9IGNvbnRlbnREb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKKyAg
ICAgICAgaWYgKGVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gcHJvbWlzZS5yZXNvbHZlKGVs
ZW1lbnQpOworICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmVJZlJlYWR5LCA1MCk7CisgICAgfQor
CisgICAgcmVzb2x2ZUlmUmVhZHkoKTsKKyAgICByZXR1cm4gcHJvbWlzZTsKK30KKworQmVuY2ht
YXJrUnVubmVyLnByb3RvdHlwZS5fcmVtb3ZlRnJhbWUgPSBmdW5jdGlvbiAoKSB7CisgICAgaWYg
KHRoaXMuX2ZyYW1lKSB7CisgICAgICAgIHRoaXMuX2ZyYW1lLnBhcmVudE5vZGUucmVtb3ZlQ2hp
bGQodGhpcy5fZnJhbWUpOworICAgICAgICB0aGlzLl9mcmFtZSA9IG51bGw7CisgICAgfQorfQor
CitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9hcHBlbmRGcmFtZSA9IGZ1bmN0aW9uIChzcmMp
IHsKKyAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKKyAg
ICBmcmFtZS5zdHlsZS53aWR0aCA9ICc4MDBweCc7CisgICAgZnJhbWUuc3R5bGUuaGVpZ2h0ID0g
JzYwMHB4JzsKKyAgICBmcmFtZS5zdHlsZS5ib3JkZXIgPSAnMHB4IG5vbmUnOworICAgIGZyYW1l
LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKKyAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoJ3Nj
cm9sbGluZycsICdubycpOworCisgICAgdmFyIG1hcmdpbkxlZnQgPSBwYXJzZUludChnZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLm1hcmdpbkxlZnQpOworICAgIHZhciBtYXJnaW5Ub3Ag
PSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLm1hcmdpblRvcCk7Cisg
ICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoID4gODAwICsgbWFyZ2luTGVmdCAmJiB3aW5kb3cuaW5u
ZXJIZWlnaHQgPiA2MDAgKyBtYXJnaW5Ub3ApIHsKKyAgICAgICAgZnJhbWUuc3R5bGUubGVmdCA9
IG1hcmdpbkxlZnQgKyAncHgnOworICAgICAgICBmcmFtZS5zdHlsZS50b3AgPSBtYXJnaW5Ub3Ag
KyAncHgnOworICAgIH0gZWxzZSB7CisgICAgICAgIGZyYW1lLnN0eWxlLmxlZnQgPSAnMHB4JzsK
KyAgICAgICAgZnJhbWUuc3R5bGUudG9wID0gJzBweCc7CisgICAgfQorCisgICAgaWYgKHRoaXMu
X2NsaWVudCAmJiB0aGlzLl9jbGllbnQud2lsbEFkZFRlc3RGcmFtZSkKKyAgICAgICAgdGhpcy5f
Y2xpZW50LndpbGxBZGRUZXN0RnJhbWUoZnJhbWUpOworCisgICAgZG9jdW1lbnQuYm9keS5pbnNl
cnRCZWZvcmUoZnJhbWUsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisgICAgdGhpcy5fZnJh
bWUgPSBmcmFtZTsKKyAgICByZXR1cm4gZnJhbWU7Cit9CisKK0JlbmNobWFya1J1bm5lci5wcm90
b3R5cGUuX3dhaXRBbmRXYXJtVXAgPSBmdW5jdGlvbiAoKSB7CisgICAgdmFyIHN0YXJ0VGltZSA9
IERhdGUubm93KCk7CisKKyAgICBmdW5jdGlvbiBGaWJvbmFjY2kobikgeworICAgICAgICBpZiAo
RGF0ZS5ub3coKSAtIHN0YXJ0VGltZSA+IDEwMCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgaWYgKG4gPD0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBlbHNlIGlmIChu
ID09IDEpCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgcmV0dXJuIEZpYm9uYWNjaShu
IC0gMikgKyBGaWJvbmFjY2kobiAtIDEpOworICAgIH0KKworICAgIHZhciBwcm9taXNlID0gbmV3
IFNpbXBsZVByb21pc2U7CisgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgIEZp
Ym9uYWNjaSgxMDApOworICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKKyAgICB9LCAyMDApOwor
ICAgIHJldHVybiBwcm9taXNlOworfQorCisvLyBUaGlzIGZ1bmN0aW9uIG91Z2h0IGJlIGFzIHNp
bXBsZSBhcyBwb3NzaWJsZS4gRG9uJ3QgZXZlbiB1c2UgU2ltcGxlUHJvbWlzZS4KK0JlbmNobWFy
a1J1bm5lci5wcm90b3R5cGUuX3J1blRlc3QgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdEZ1bmN0aW9u
LCBwcmVwYXJlUmV0dXJuVmFsdWUsIGNhbGxiYWNrKQoreworICAgIHZhciBub3cgPSB3aW5kb3cu
cGVyZm9ybWFuY2UgJiYgd2luZG93LnBlcmZvcm1hbmNlLm5vdyA/IGZ1bmN0aW9uICgpIHsgcmV0
dXJuIHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKTsgfSA6IERhdGUubm93OworCisgICAgdmFyIGNv
bnRlbnRXaW5kb3cgPSB0aGlzLl9mcmFtZS5jb250ZW50V2luZG93OworICAgIHZhciBjb250ZW50
RG9jdW1lbnQgPSB0aGlzLl9mcmFtZS5jb250ZW50RG9jdW1lbnQ7CisKKyAgICB2YXIgc3RhcnRU
aW1lID0gbm93KCk7CisgICAgdGVzdEZ1bmN0aW9uKHByZXBhcmVSZXR1cm5WYWx1ZSwgY29udGVu
dFdpbmRvdywgY29udGVudERvY3VtZW50KTsKKyAgICB2YXIgZW5kVGltZSA9IG5vdygpOworICAg
IHZhciBzeW5jVGltZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7CisKKyAgICB2YXIgc3RhcnRUaW1l
ID0gbm93KCk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBlbmRU
aW1lID0gbm93KCk7CisgICAgICAgIGNhbGxiYWNrKHN5bmNUaW1lLCBlbmRUaW1lIC0gc3RhcnRU
aW1lKTsKKyAgICB9LCAwKTsKK30KKworZnVuY3Rpb24gQmVuY2htYXJrU3RhdGUoc3VpdGVzKSB7
CisgICAgdGhpcy5fc3VpdGVzID0gc3VpdGVzOworICAgIHRoaXMuX3N1aXRlSW5kZXggPSAtMTsK
KyAgICB0aGlzLl90ZXN0SW5kZXggPSAwOworICAgIHRoaXMubmV4dCgpOworfQorCitCZW5jaG1h
cmtTdGF0ZS5wcm90b3R5cGUuY3VycmVudFN1aXRlID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJu
IHRoaXMuX3N1aXRlc1t0aGlzLl9zdWl0ZUluZGV4XTsKK30KKworQmVuY2htYXJrU3RhdGUucHJv
dG90eXBlLmN1cnJlbnRUZXN0ID0gZnVuY3Rpb24gKCkgeworICAgIHZhciBzdWl0ZSA9IHRoaXMu
Y3VycmVudFN1aXRlKCk7CisgICAgcmV0dXJuIHN1aXRlID8gc3VpdGUudGVzdHNbdGhpcy5fdGVz
dEluZGV4XSA6IG51bGw7Cit9CisKK0JlbmNobWFya1N0YXRlLnByb3RvdHlwZS5uZXh0ID0gZnVu
Y3Rpb24gKCkgeworICAgIHRoaXMuX3Rlc3RJbmRleCsrOworCisgICAgdmFyIHN1aXRlID0gdGhp
cy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5kZXhdOworICAgIGlmIChzdWl0ZSAmJiB0aGlzLl90ZXN0
SW5kZXggPCBzdWl0ZS50ZXN0cy5sZW5ndGgpCisgICAgICAgIHJldHVybiB0aGlzOworCisgICAg
dGhpcy5fdGVzdEluZGV4ID0gMDsKKyAgICBkbyB7CisgICAgICAgIHRoaXMuX3N1aXRlSW5kZXgr
KzsKKyAgICB9IHdoaWxlICh0aGlzLl9zdWl0ZUluZGV4IDwgdGhpcy5fc3VpdGVzLmxlbmd0aCAm
JiB0aGlzLl9zdWl0ZXNbdGhpcy5fc3VpdGVJbmRleF0uZGlzYWJsZWQpOworCisgICAgcmV0dXJu
IHRoaXM7Cit9CisKK0JlbmNobWFya1N0YXRlLnByb3RvdHlwZS5pc0ZpcnN0VGVzdCA9IGZ1bmN0
aW9uICgpIHsKKyAgICByZXR1cm4gIXRoaXMuX3Rlc3RJbmRleDsKK30KKworQmVuY2htYXJrU3Rh
dGUucHJvdG90eXBlLnByZXBhcmVDdXJyZW50U3VpdGUgPSBmdW5jdGlvbiAocnVubmVyLCBmcmFt
ZSkgeworICAgIHZhciBzdWl0ZSA9IHRoaXMuY3VycmVudFN1aXRlKCk7CisgICAgdmFyIHByb21p
c2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICBmcmFtZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7
CisgICAgICAgIHN1aXRlLnByZXBhcmUocnVubmVyLCBmcmFtZS5jb250ZW50V2luZG93LCBmcmFt
ZS5jb250ZW50RG9jdW1lbnQpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeyBwcm9taXNlLnJlc29s
dmUocmVzdWx0KTsgfSk7CisgICAgfQorICAgIGZyYW1lLnNyYyA9ICdyZXNvdXJjZXMvJyArIHN1
aXRlLnVybDsKKyAgICByZXR1cm4gcHJvbWlzZTsKK30KKworQmVuY2htYXJrUnVubmVyLnByb3Rv
dHlwZS5zdGVwID0gZnVuY3Rpb24gKHN0YXRlKSB7CisgICAgaWYgKCFzdGF0ZSkgeworICAgICAg
ICBzdGF0ZSA9IG5ldyBCZW5jaG1hcmtTdGF0ZSh0aGlzLl9zdWl0ZXMpOworICAgICAgICB0aGlz
Ll9tZWFzdXJlZFZhbHVlcyA9IHt0ZXN0czoge30sIHRvdGFsOiAwfTsKKyAgICB9CisKKyAgICB2
YXIgc3VpdGUgPSBzdGF0ZS5jdXJyZW50U3VpdGUoKTsKKyAgICBpZiAoIXN1aXRlKSB7CisgICAg
ICAgIHRoaXMuX2ZpbmFsaXplKCk7CisgICAgICAgIHZhciBwcm9taXNlID0gbmV3IFNpbXBsZVBy
b21pc2U7CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworICAgICAgICByZXR1cm4gcHJvbWlz
ZTsKKyAgICB9CisKKyAgICBpZiAoc3RhdGUuaXNGaXJzdFRlc3QoKSkgeworICAgICAgICB0aGlz
Ll9tYXN1cmVkVmFsdWVzRm9yQ3VycmVudFN1aXRlID0ge307CisgICAgICAgIHZhciBzZWxmID0g
dGhpczsKKyAgICAgICAgcmV0dXJuIHN0YXRlLnByZXBhcmVDdXJyZW50U3VpdGUodGhpcywgdGhp
cy5fYXBwZW5kRnJhbWUoKSkudGhlbihmdW5jdGlvbiAocHJlcGFyZVJldHVyblZhbHVlKSB7Cisg
ICAgICAgICAgICBzZWxmLl9wcmVwYXJlUmV0dXJuVmFsdWUgPSBwcmVwYXJlUmV0dXJuVmFsdWU7
CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcnVuVGVzdEFuZFJlY29yZFJlc3VsdHMoc3RhdGUp
OworICAgICAgICB9KTsKKyAgICB9CisKKyAgICByZXR1cm4gdGhpcy5fcnVuVGVzdEFuZFJlY29y
ZFJlc3VsdHMoc3RhdGUpOworfQorCitCZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLnJ1bkFsbFN0
ZXBzID0gZnVuY3Rpb24gKHN0YXJ0aW5nU3RhdGUpIHsKKyAgICB2YXIgbmV4dENhbGxlZSA9IHRo
aXMucnVuQWxsU3RlcHMuYmluZCh0aGlzKTsKKyAgICB0aGlzLnN0ZXAoc3RhcnRpbmdTdGF0ZSku
dGhlbihmdW5jdGlvbiAobmV4dFN0YXRlKSB7CisgICAgICAgIGlmIChuZXh0U3RhdGUpCisgICAg
ICAgICAgICBuZXh0Q2FsbGVlKG5leHRTdGF0ZSk7CisgICAgfSk7Cit9CisKK0JlbmNobWFya1J1
bm5lci5wcm90b3R5cGUucnVuTXVsdGlwbGVJdGVyYXRpb25zID0gZnVuY3Rpb24gKGl0ZXJhdGlv
bkNvdW50KSB7CisgICAgdmFyIHNlbGYgPSB0aGlzOworICAgIHZhciBjdXJyZW50SXRlcmF0aW9u
ID0gMDsKKworICAgIHRoaXMuX3J1bk5leHRJdGVyYXRpb24gPSBmdW5jdGlvbiAoKSB7CisgICAg
ICAgIGN1cnJlbnRJdGVyYXRpb24rKzsKKyAgICAgICAgaWYgKGN1cnJlbnRJdGVyYXRpb24gPCBp
dGVyYXRpb25Db3VudCkKKyAgICAgICAgICAgIHNlbGYucnVuQWxsU3RlcHMoKTsKKyAgICAgICAg
ZWxzZSBpZiAodGhpcy5fY2xpZW50ICYmIHRoaXMuX2NsaWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0
aW9uKQorICAgICAgICAgICAgdGhpcy5fY2xpZW50LmRpZEZpbmlzaExhc3RJdGVyYXRpb24oKTsK
KyAgICB9CisKKyAgICBpZiAodGhpcy5fY2xpZW50ICYmIHRoaXMuX2NsaWVudC53aWxsU3RhcnRG
aXJzdEl0ZXJhdGlvbikKKyAgICAgICAgdGhpcy5fY2xpZW50LndpbGxTdGFydEZpcnN0SXRlcmF0
aW9uKGl0ZXJhdGlvbkNvdW50KTsKKworICAgIHNlbGYucnVuQWxsU3RlcHMoKTsKK30KKworQmVu
Y2htYXJrUnVubmVyLnByb3RvdHlwZS5fcnVuVGVzdEFuZFJlY29yZFJlc3VsdHMgPSBmdW5jdGlv
biAoc3RhdGUpIHsKKyAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQcm9taXNlOworICAgIHZh
ciBzdWl0ZSA9IHN0YXRlLmN1cnJlbnRTdWl0ZSgpOworICAgIHZhciB0ZXN0ID0gc3RhdGUuY3Vy
cmVudFRlc3QoKTsKKworICAgIGlmICh0aGlzLl9jbGllbnQgJiYgdGhpcy5fY2xpZW50LndpbGxS
dW5UZXN0KQorICAgICAgICB0aGlzLl9jbGllbnQud2lsbFJ1blRlc3Qoc3VpdGUsIHRlc3QpOwor
CisgICAgdmFyIHNlbGYgPSB0aGlzOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAg
ICAgICBzZWxmLl9ydW5UZXN0KHN1aXRlLCB0ZXN0LnJ1biwgc2VsZi5fcHJlcGFyZVJldHVyblZh
bHVlLCBmdW5jdGlvbiAoc3luY1RpbWUsIGFzeW5jVGltZSkgeworICAgICAgICAgICAgdmFyIHN1
aXRlUmVzdWx0cyA9IHNlbGYuX21lYXN1cmVkVmFsdWVzLnRlc3RzW3N1aXRlLm5hbWVdIHx8IHt0
ZXN0czp7fSwgdG90YWw6IDB9OworICAgICAgICAgICAgdmFyIHRvdGFsID0gc3luY1RpbWUgKyBh
c3luY1RpbWU7CisgICAgICAgICAgICBzZWxmLl9tZWFzdXJlZFZhbHVlcy50ZXN0c1tzdWl0ZS5u
YW1lXSA9IHN1aXRlUmVzdWx0czsKKyAgICAgICAgICAgIHN1aXRlUmVzdWx0cy50ZXN0c1t0ZXN0
Lm5hbWVdID0ge3Rlc3RzOiB7J1N5bmMnOiBzeW5jVGltZSwgJ0FzeW5jJzogYXN5bmNUaW1lfSwg
dG90YWw6IHRvdGFsfTsKKyAgICAgICAgICAgIHN1aXRlUmVzdWx0cy50b3RhbCArPSB0b3RhbDsK
KyAgICAgICAgICAgIHNlbGYuX21lYXN1cmVkVmFsdWVzLnRvdGFsICs9IHRvdGFsOworCisgICAg
ICAgICAgICBpZiAoc2VsZi5fY2xpZW50ICYmIHNlbGYuX2NsaWVudC5kaWRSdW5UZXN0KQorICAg
ICAgICAgICAgICAgIHNlbGYuX2NsaWVudC5kaWRSdW5UZXN0KHN1aXRlLCB0ZXN0KTsKKworICAg
ICAgICAgICAgc3RhdGUubmV4dCgpOworICAgICAgICAgICAgaWYgKHN0YXRlLmN1cnJlbnRTdWl0
ZSgpICE9IHN1aXRlKQorICAgICAgICAgICAgICAgIHNlbGYuX3JlbW92ZUZyYW1lKCk7CisgICAg
ICAgICAgICBwcm9taXNlLnJlc29sdmUoc3RhdGUpOworICAgICAgICB9KTsKKyAgICB9LCAwKTsK
KyAgICByZXR1cm4gcHJvbWlzZTsKK30KKworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fZmlu
YWxpemUgPSBmdW5jdGlvbiAoKSB7CisgICAgdGhpcy5fcmVtb3ZlRnJhbWUoKTsKKworICAgIGlm
ICh0aGlzLl9jbGllbnQgJiYgdGhpcy5fY2xpZW50LmRpZFJ1blN1aXRlcykKKyAgICAgICAgdGhp
cy5fY2xpZW50LmRpZFJ1blN1aXRlcyh0aGlzLl9tZWFzdXJlZFZhbHVlcyk7CisKKyAgICBpZiAo
dGhpcy5fcnVuTmV4dEl0ZXJhdGlvbikKKyAgICAgICAgdGhpcy5fcnVuTmV4dEl0ZXJhdGlvbigp
OworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMv
YmVuY2htYXJrLXJ1bm5lci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcnVubmVyL3Jlc291cmNlcy9iZW5jaG1hcmstcnVubmVyLmpzCSh3b3JraW5nIGNvcHkp
CisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9iZW5jaG1h
cmstcnVubmVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ5ICsxLDYzIEBACi0vLyBGSVhNRTog
VXNlIHRoZSByZWFsIHByb21pc2UgaWYgYXZhaWxhYmxlLgotLy8gRklYTUU6IE1ha2Ugc3VyZSB0
aGlzIGludGVyZmFjZSBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHJlYWwgUHJvbWlzZS4KLWZ1bmN0
aW9uIFNpbXBsZVByb21pc2UoKSB7Ci0gICAgdGhpcy5fY2hhaW5lZFByb21pc2UgPSBudWxsOwot
ICAgIHRoaXMuX2NhbGxiYWNrID0gbnVsbDsKK2Z1bmN0aW9uIEJlbmNobWFya1J1bm5lclN0YXRl
KHN1aXRlcykKK3sKKyAgICB0aGlzLl9zdWl0ZXMgPSBzdWl0ZXM7CisgICAgdGhpcy5fc3VpdGVJ
bmRleCA9IC0xOworICAgIHRoaXMuX3Rlc3RJbmRleCA9IDA7CisgICAgdGhpcy5uZXh0KCk7CiB9
CiAKLVNpbXBsZVByb21pc2UucHJvdG90eXBlLnRoZW4gPSBmdW5jdGlvbiAoY2FsbGJhY2spIHsK
LSAgICBpZiAodGhpcy5fY2FsbGJhY2spCi0gICAgICAgIHRocm93ICJTaW1wbGVQcm9taXNlIGRv
ZXNuJ3Qgc3VwcG9ydCBtdWx0aXBsZSBjYWxscyB0byB0aGVuIjsKLSAgICB0aGlzLl9jYWxsYmFj
ayA9IGNhbGxiYWNrOwotICAgIHRoaXMuX2NoYWluZWRQcm9taXNlID0gbmV3IFNpbXBsZVByb21p
c2U7Ci0gICAgCi0gICAgaWYgKHRoaXMuX3Jlc29sdmVkKQotICAgICAgICB0aGlzLnJlc29sdmUo
dGhpcy5fcmVzb2x2ZWRWYWx1ZSk7CitCZW5jaG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUuY3Vy
cmVudFN1aXRlID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiB0aGlzLl9zdWl0ZXNbdGhpcy5f
c3VpdGVJbmRleF07Cit9CiAKLSAgICByZXR1cm4gdGhpcy5fY2hhaW5lZFByb21pc2U7CitCZW5j
aG1hcmtSdW5uZXJTdGF0ZS5wcm90b3R5cGUuY3VycmVudFRlc3QgPSBmdW5jdGlvbigpCit7Cisg
ICAgdmFyIHN1aXRlID0gdGhpcy5jdXJyZW50U3VpdGUoKTsKKyAgICByZXR1cm4gc3VpdGUgPyBz
dWl0ZS50ZXN0c1t0aGlzLl90ZXN0SW5kZXhdIDogbnVsbDsKIH0KIAotU2ltcGxlUHJvbWlzZS5w
cm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uICh2YWx1ZSkgewotICAgIGlmICghdGhpcy5fY2Fs
bGJhY2spIHsKLSAgICAgICAgdGhpcy5fcmVzb2x2ZWQgPSB0cnVlOwotICAgICAgICB0aGlzLl9y
ZXNvbHZlZFZhbHVlID0gdmFsdWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CitCZW5jaG1hcmtS
dW5uZXJTdGF0ZS5wcm90b3R5cGUuaXNGaXJzdFRlc3QgPSBmdW5jdGlvbigpCit7CisgICAgcmV0
dXJuICF0aGlzLl90ZXN0SW5kZXg7Cit9CisKK0JlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlw
ZS5uZXh0ID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX3Rlc3RJbmRleCsrOworCisgICAgdmFy
IHN1aXRlID0gdGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRlSW5kZXhdOworICAgIGlmIChzdWl0ZSAm
JiB0aGlzLl90ZXN0SW5kZXggPCBzdWl0ZS50ZXN0cy5sZW5ndGgpCisgICAgICAgIHJldHVybiB0
aGlzOworCisgICAgdGhpcy5fdGVzdEluZGV4ID0gMDsKKyAgICBkbyB7CisgICAgICAgIHRoaXMu
X3N1aXRlSW5kZXgrKzsKKyAgICB9IHdoaWxlICh0aGlzLl9zdWl0ZUluZGV4IDwgdGhpcy5fc3Vp
dGVzLmxlbmd0aCAmJiB0aGlzLl9zdWl0ZXNbdGhpcy5fc3VpdGVJbmRleF0uZGlzYWJsZWQpOwog
Ci0gICAgdmFyIHJlc3VsdCA9IHRoaXMuX2NhbGxiYWNrKHZhbHVlKTsKLSAgICBpZiAocmVzdWx0
IGluc3RhbmNlb2YgU2ltcGxlUHJvbWlzZSkgewotICAgICAgICB2YXIgY2hhaW5lZFByb21pc2Ug
PSB0aGlzLl9jaGFpbmVkUHJvbWlzZTsKLSAgICAgICAgcmVzdWx0LnRoZW4oZnVuY3Rpb24gKHJl
c3VsdCkgeyBjaGFpbmVkUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7IH0pOwotICAgIH0gZWxzZQot
ICAgICAgICB0aGlzLl9jaGFpbmVkUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAgcmV0dXJu
IHRoaXM7CiB9CiAKLWZ1bmN0aW9uIEJlbmNobWFya1Rlc3RTdGVwKHRlc3ROYW1lLCB0ZXN0RnVu
Y3Rpb24pIHsKLSAgICB0aGlzLm5hbWUgPSB0ZXN0TmFtZTsKLSAgICB0aGlzLnJ1biA9IHRlc3RG
dW5jdGlvbjsKK0JlbmNobWFya1J1bm5lclN0YXRlLnByb3RvdHlwZS5wcmVwYXJlQ3VycmVudFRl
c3QgPSBmdW5jdGlvbihydW5uZXIsIGZyYW1lKQoreworICAgIHZhciBzdWl0ZSA9IHRoaXMuY3Vy
cmVudFN1aXRlKCk7CisgICAgdmFyIHRlc3QgPSB0aGlzLmN1cnJlbnRUZXN0KCk7CisgICAgdmFy
IHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICBmcmFtZS5vbmxvYWQgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgc3VpdGUucHJlcGFyZShydW5uZXIsIGZyYW1lLmNvbnRlbnRXaW5kb3cs
IGZyYW1lLmNvbnRlbnREb2N1bWVudCkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsgcHJvbWlzZS5y
ZXNvbHZlKHJlc3VsdCk7IH0pOworICAgIH0KKyAgICBmcmFtZS5zcmMgPSB0ZXN0LnVybDsKKyAg
ICByZXR1cm4gcHJvbWlzZTsKIH0KIAotZnVuY3Rpb24gQmVuY2htYXJrUnVubmVyKHN1aXRlcywg
Y2xpZW50KSB7CitmdW5jdGlvbiBCZW5jaG1hcmtSdW5uZXIoc3VpdGVzLCBjbGllbnQpCit7CiAg
ICAgdGhpcy5fc3VpdGVzID0gc3VpdGVzOwotICAgIHRoaXMuX3ByZXBhcmVSZXR1cm5WYWx1ZSA9
IG51bGw7CiAgICAgdGhpcy5fY2xpZW50ID0gY2xpZW50OwogfQogCi1CZW5jaG1hcmtSdW5uZXIu
cHJvdG90eXBlLndhaXRGb3JFbGVtZW50ID0gZnVuY3Rpb24gKHNlbGVjdG9yKSB7CitCZW5jaG1h
cmtSdW5uZXIucHJvdG90eXBlLndhaXRGb3JFbGVtZW50ID0gZnVuY3Rpb24oc2VsZWN0b3IpCit7
CiAgICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKICAgICB2YXIgY29udGVudERv
Y3VtZW50ID0gdGhpcy5fZnJhbWUuY29udGVudERvY3VtZW50OwogCkBAIC01OCwyOSArNzIsMTkg
QEAgQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS53YWl0Rm9yRWxlbWVudAogICAgIHJldHVybiBw
cm9taXNlOwogfQogCi1CZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9yZW1vdmVGcmFtZSA9IGZ1
bmN0aW9uICgpIHsKLSAgICBpZiAodGhpcy5fZnJhbWUpIHsKLSAgICAgICAgdGhpcy5fZnJhbWUu
cGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9mcmFtZSk7Ci0gICAgICAgIHRoaXMuX2ZyYW1l
ID0gbnVsbDsKLSAgICB9Ci19Ci0KLUJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX2FwcGVuZEZy
YW1lID0gZnVuY3Rpb24gKHNyYykgewotICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2lmcmFtZScpOwotICAgIGZyYW1lLnN0eWxlLndpZHRoID0gJzgwMHB4JzsKLSAgICBm
cmFtZS5zdHlsZS5oZWlnaHQgPSAnNjAwcHgnOwotICAgIGZyYW1lLnN0eWxlLmJvcmRlciA9ICcw
cHggbm9uZSc7Ci0gICAgZnJhbWUuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOwotICAgIGZy
YW1lLnNldEF0dHJpYnV0ZSgnc2Nyb2xsaW5nJywgJ25vJyk7CitCZW5jaG1hcmtSdW5uZXIucHJv
dG90eXBlLl9hcHBlbmRGcmFtZSA9IGZ1bmN0aW9uKHNyYykKK3sKKyAgICB2YXIgZnJhbWUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBmcmFtZS5zZXRBdHRyaWJ1dGUo
InNjcm9sbGluZyIsICJubyIpOwogCiAgICAgdmFyIG1hcmdpbkxlZnQgPSBwYXJzZUludChnZXRD
b21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLm1hcmdpbkxlZnQpOwogICAgIHZhciBtYXJnaW5U
b3AgPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLm1hcmdpblRvcCk7
CiAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoID4gODAwICsgbWFyZ2luTGVmdCAmJiB3aW5kb3cu
aW5uZXJIZWlnaHQgPiA2MDAgKyBtYXJnaW5Ub3ApIHsKLSAgICAgICAgZnJhbWUuc3R5bGUubGVm
dCA9IG1hcmdpbkxlZnQgKyAncHgnOwotICAgICAgICBmcmFtZS5zdHlsZS50b3AgPSBtYXJnaW5U
b3AgKyAncHgnOworICAgICAgICBmcmFtZS5zdHlsZS5sZWZ0ID0gbWFyZ2luTGVmdCArICJweCI7
CisgICAgICAgIGZyYW1lLnN0eWxlLnRvcCA9IG1hcmdpblRvcCArICJweCI7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgZnJhbWUuc3R5bGUubGVmdCA9ICcwcHgnOwotICAgICAgICBmcmFtZS5zdHls
ZS50b3AgPSAnMHB4JzsKKyAgICAgICAgZnJhbWUuc3R5bGUubGVmdCA9ICIwcHgiOworICAgICAg
ICBmcmFtZS5zdHlsZS50b3AgPSAiMHB4IjsKICAgICB9CiAKICAgICBpZiAodGhpcy5fY2xpZW50
ICYmIHRoaXMuX2NsaWVudC53aWxsQWRkVGVzdEZyYW1lKQpAQCAtOTEsOTYgKzk1LDQ5IEBAIEJl
bmNobWFya1J1bm5lci5wcm90b3R5cGUuX2FwcGVuZEZyYW1lID0KICAgICByZXR1cm4gZnJhbWU7
CiB9CiAKLUJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3dhaXRBbmRXYXJtVXAgPSBmdW5jdGlv
biAoKSB7Ci0gICAgdmFyIHN0YXJ0VGltZSA9IERhdGUubm93KCk7Ci0KLSAgICBmdW5jdGlvbiBG
aWJvbmFjY2kobikgewotICAgICAgICBpZiAoRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSA+IDEwMCkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKG4gPD0gMCkKLSAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICBlbHNlIGlmIChuID09IDEpCi0gICAgICAgICAgICByZXR1cm4gMTsK
LSAgICAgICAgcmV0dXJuIEZpYm9uYWNjaShuIC0gMikgKyBGaWJvbmFjY2kobiAtIDEpOworQmVu
Y2htYXJrUnVubmVyLnByb3RvdHlwZS5fcmVtb3ZlRnJhbWUgPSBmdW5jdGlvbigpCit7CisgICAg
aWYgKHRoaXMuX2ZyYW1lKSB7CisgICAgICAgIHRoaXMuX2ZyYW1lLnBhcmVudE5vZGUucmVtb3Zl
Q2hpbGQodGhpcy5fZnJhbWUpOworICAgICAgICB0aGlzLl9mcmFtZSA9IG51bGw7CiAgICAgfQot
Ci0gICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKLSAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uICgpIHsKLSAgICAgICAgRmlib25hY2NpKDEwMCk7Ci0gICAgICAgIHByb21pc2UucmVz
b2x2ZSgpOwotICAgIH0sIDIwMCk7Ci0gICAgcmV0dXJuIHByb21pc2U7CiB9CiAKLS8vIFRoaXMg
ZnVuY3Rpb24gb3VnaHQgYmUgYXMgc2ltcGxlIGFzIHBvc3NpYmxlLiBEb24ndCBldmVuIHVzZSBT
aW1wbGVQcm9taXNlLgotQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcnVuVGVzdCA9IGZ1bmN0
aW9uKHN1aXRlLCB0ZXN0RnVuY3Rpb24sIHByZXBhcmVSZXR1cm5WYWx1ZSwgY2FsbGJhY2spCitC
ZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9ydW5UZXN0QW5kUmVjb3JkUmVzdWx0cyA9IGZ1bmN0
aW9uKHN0YXRlKQogewotICAgIHZhciBub3cgPSB3aW5kb3cucGVyZm9ybWFuY2UgJiYgd2luZG93
LnBlcmZvcm1hbmNlLm5vdyA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHdpbmRvdy5wZXJmb3JtYW5j
ZS5ub3coKTsgfSA6IERhdGUubm93OworICAgIHZhciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21p
c2U7CisgICAgdmFyIHN1aXRlID0gc3RhdGUuY3VycmVudFN1aXRlKCk7CisgICAgdmFyIHRlc3Qg
PSBzdGF0ZS5jdXJyZW50VGVzdCgpOworICAgIAorICAgIGlmICh0aGlzLl9jbGllbnQgJiYgdGhp
cy5fY2xpZW50LndpbGxSdW5UZXN0VGVzdCkKKyAgICAgICAgdGhpcy5fY2xpZW50LndpbGxSdW5U
ZXN0KHN1aXRlLCB0ZXN0KTsKIAogICAgIHZhciBjb250ZW50V2luZG93ID0gdGhpcy5fZnJhbWUu
Y29udGVudFdpbmRvdzsKLSAgICB2YXIgY29udGVudERvY3VtZW50ID0gdGhpcy5fZnJhbWUuY29u
dGVudERvY3VtZW50OwotCi0gICAgdmFyIHN0YXJ0VGltZSA9IG5vdygpOwotICAgIHRlc3RGdW5j
dGlvbihwcmVwYXJlUmV0dXJuVmFsdWUsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCk7
Ci0gICAgdmFyIGVuZFRpbWUgPSBub3coKTsKLSAgICB2YXIgc3luY1RpbWUgPSBlbmRUaW1lIC0g
c3RhcnRUaW1lOwotCi0gICAgdmFyIHN0YXJ0VGltZSA9IG5vdygpOwotICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgZW5kVGltZSA9IG5vdygpOwotICAgICAgICBjYWxs
YmFjayhzeW5jVGltZSwgZW5kVGltZSAtIHN0YXJ0VGltZSk7Ci0gICAgfSwgMCk7Ci19Ci0KLWZ1
bmN0aW9uIEJlbmNobWFya1N0YXRlKHN1aXRlcykgewotICAgIHRoaXMuX3N1aXRlcyA9IHN1aXRl
czsKLSAgICB0aGlzLl9zdWl0ZUluZGV4ID0gLTE7Ci0gICAgdGhpcy5fdGVzdEluZGV4ID0gMDsK
LSAgICB0aGlzLm5leHQoKTsKLX0KLQotQmVuY2htYXJrU3RhdGUucHJvdG90eXBlLmN1cnJlbnRT
dWl0ZSA9IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiB0aGlzLl9zdWl0ZXNbdGhpcy5fc3VpdGVJ
bmRleF07Ci19Ci0KLUJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5jdXJyZW50VGVzdCA9IGZ1bmN0
aW9uICgpIHsKLSAgICB2YXIgc3VpdGUgPSB0aGlzLmN1cnJlbnRTdWl0ZSgpOwotICAgIHJldHVy
biBzdWl0ZSA/IHN1aXRlLnRlc3RzW3RoaXMuX3Rlc3RJbmRleF0gOiBudWxsOwotfQotCi1CZW5j
aG1hcmtTdGF0ZS5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICgpIHsKLSAgICB0aGlzLl90ZXN0
SW5kZXgrKzsKLQotICAgIHZhciBzdWl0ZSA9IHRoaXMuX3N1aXRlc1t0aGlzLl9zdWl0ZUluZGV4
XTsKLSAgICBpZiAoc3VpdGUgJiYgdGhpcy5fdGVzdEluZGV4IDwgc3VpdGUudGVzdHMubGVuZ3Ro
KQotICAgICAgICByZXR1cm4gdGhpczsKLQotICAgIHRoaXMuX3Rlc3RJbmRleCA9IDA7Ci0gICAg
ZG8gewotICAgICAgICB0aGlzLl9zdWl0ZUluZGV4Kys7Ci0gICAgfSB3aGlsZSAodGhpcy5fc3Vp
dGVJbmRleCA8IHRoaXMuX3N1aXRlcy5sZW5ndGggJiYgdGhpcy5fc3VpdGVzW3RoaXMuX3N1aXRl
SW5kZXhdLmRpc2FibGVkKTsKLQotICAgIHJldHVybiB0aGlzOwotfQotCi1CZW5jaG1hcmtTdGF0
ZS5wcm90b3R5cGUuaXNGaXJzdFRlc3QgPSBmdW5jdGlvbiAoKSB7Ci0gICAgcmV0dXJuICF0aGlz
Ll90ZXN0SW5kZXg7Ci19CisgICAgdmFyIHNlbGYgPSB0aGlzOwogCi1CZW5jaG1hcmtTdGF0ZS5w
cm90b3R5cGUucHJlcGFyZUN1cnJlbnRTdWl0ZSA9IGZ1bmN0aW9uIChydW5uZXIsIGZyYW1lKSB7
Ci0gICAgdmFyIHN1aXRlID0gdGhpcy5jdXJyZW50U3VpdGUoKTsKLSAgICB2YXIgcHJvbWlzZSA9
IG5ldyBTaW1wbGVQcm9taXNlOwotICAgIGZyYW1lLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgc3VpdGUucHJlcGFyZShydW5uZXIsIGZyYW1lLmNvbnRlbnRXaW5kb3csIGZyYW1lLmNv
bnRlbnREb2N1bWVudCkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7IHByb21pc2UucmVzb2x2ZShy
ZXN1bHQpOyB9KTsKLSAgICB9Ci0gICAgZnJhbWUuc3JjID0gJ3Jlc291cmNlcy8nICsgc3VpdGUu
dXJsOworICAgIHN1aXRlLnJ1bihjb250ZW50V2luZG93LCB0ZXN0LCB0aGlzLl9jbGllbnQub3B0
aW9ucywgdGhpcy5fY2xpZW50LnJlY29yZFRhYmxlLCB0aGlzLl9jbGllbnQucHJvZ3Jlc3NCYXIp
LnRoZW4oZnVuY3Rpb24oc2FtcGxlcikgeworICAgICAgICB2YXIgc2FtcGxlcnMgPSBzZWxmLl9z
dWl0ZXNTYW1wbGVyc1tzdWl0ZS5uYW1lXSB8fCBbXTsKKyAgICAgICAgCisgICAgICAgIHNhbXBs
ZXJzW3Rlc3QubmFtZV0gPSBzYW1wbGVyOworICAgICAgICBzZWxmLl9zdWl0ZXNTYW1wbGVyc1tz
dWl0ZS5uYW1lXSA9IHNhbXBsZXJzOworCisgICAgICAgIGlmIChzZWxmLl9jbGllbnQgJiYgc2Vs
Zi5fY2xpZW50LmRpZFJ1blRlc3QpCisgICAgICAgICAgICBzZWxmLl9jbGllbnQuZGlkUnVuVGVz
dChzdWl0ZSwgdGVzdCk7CisgICAgICAgIAorICAgICAgICBzdGF0ZS5uZXh0KCk7CisgICAgICAg
IGlmIChzdGF0ZS5jdXJyZW50U3VpdGUoKSAhPSBzdWl0ZSkKKyAgICAgICAgICAgIHNlbGYuX3Jl
bW92ZUZyYW1lKCk7CisgICAgICAgIHByb21pc2UucmVzb2x2ZShzdGF0ZSk7CisgICAgfSk7Cisg
ICAgCiAgICAgcmV0dXJuIHByb21pc2U7CiB9CiAKLUJlbmNobWFya1J1bm5lci5wcm90b3R5cGUu
c3RlcCA9IGZ1bmN0aW9uIChzdGF0ZSkgeworQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5zdGVw
ID0gZnVuY3Rpb24oc3RhdGUpCit7CiAgICAgaWYgKCFzdGF0ZSkgewotICAgICAgICBzdGF0ZSA9
IG5ldyBCZW5jaG1hcmtTdGF0ZSh0aGlzLl9zdWl0ZXMpOwotICAgICAgICB0aGlzLl9tZWFzdXJl
ZFZhbHVlcyA9IHt0ZXN0czoge30sIHRvdGFsOiAwfTsKKyAgICAgICAgc3RhdGUgPSBuZXcgQmVu
Y2htYXJrUnVubmVyU3RhdGUodGhpcy5fc3VpdGVzKTsKKyAgICAgICAgdGhpcy5fc3VpdGVzU2Ft
cGxlcnMgPSB7fTsKICAgICB9CiAKICAgICB2YXIgc3VpdGUgPSBzdGF0ZS5jdXJyZW50U3VpdGUo
KTsKQEAgLTE5Myw3NyArMTUwLDQ4IEBAIEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuc3RlcCA9
IGZ1bmN0aW8KIAogICAgIGlmIChzdGF0ZS5pc0ZpcnN0VGVzdCgpKSB7CiAgICAgICAgIHRoaXMu
X21hc3VyZWRWYWx1ZXNGb3JDdXJyZW50U3VpdGUgPSB7fTsKLSAgICAgICAgdmFyIHNlbGYgPSB0
aGlzOwotICAgICAgICByZXR1cm4gc3RhdGUucHJlcGFyZUN1cnJlbnRTdWl0ZSh0aGlzLCB0aGlz
Ll9hcHBlbmRGcmFtZSgpKS50aGVuKGZ1bmN0aW9uIChwcmVwYXJlUmV0dXJuVmFsdWUpIHsKLSAg
ICAgICAgICAgIHNlbGYuX3ByZXBhcmVSZXR1cm5WYWx1ZSA9IHByZXBhcmVSZXR1cm5WYWx1ZTsK
LSAgICAgICAgICAgIHJldHVybiBzZWxmLl9ydW5UZXN0QW5kUmVjb3JkUmVzdWx0cyhzdGF0ZSk7
Ci0gICAgICAgIH0pOworICAgICAgICB0aGlzLl9hcHBlbmRGcmFtZSgpOwogICAgIH0KIAotICAg
IHJldHVybiB0aGlzLl9ydW5UZXN0QW5kUmVjb3JkUmVzdWx0cyhzdGF0ZSk7CisgICAgcmV0dXJu
IHN0YXRlLnByZXBhcmVDdXJyZW50VGVzdCh0aGlzLCB0aGlzLl9mcmFtZSkudGhlbihmdW5jdGlv
bihwcmVwYXJlUmV0dXJuVmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3J1blRlc3RBbmRS
ZWNvcmRSZXN1bHRzKHN0YXRlKTsKKyAgICB9LmJpbmQodGhpcykpOwogfQogCi1CZW5jaG1hcmtS
dW5uZXIucHJvdG90eXBlLnJ1bkFsbFN0ZXBzID0gZnVuY3Rpb24gKHN0YXJ0aW5nU3RhdGUpIHsK
K0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUucnVuQWxsU3RlcHMgPSBmdW5jdGlvbihzdGFydGlu
Z1N0YXRlKQorewogICAgIHZhciBuZXh0Q2FsbGVlID0gdGhpcy5ydW5BbGxTdGVwcy5iaW5kKHRo
aXMpOwotICAgIHRoaXMuc3RlcChzdGFydGluZ1N0YXRlKS50aGVuKGZ1bmN0aW9uIChuZXh0U3Rh
dGUpIHsKKyAgICB0aGlzLnN0ZXAoc3RhcnRpbmdTdGF0ZSkudGhlbihmdW5jdGlvbihuZXh0U3Rh
dGUpIHsKICAgICAgICAgaWYgKG5leHRTdGF0ZSkKICAgICAgICAgICAgIG5leHRDYWxsZWUobmV4
dFN0YXRlKTsKICAgICB9KTsKIH0KIAotQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5ydW5NdWx0
aXBsZUl0ZXJhdGlvbnMgPSBmdW5jdGlvbiAoaXRlcmF0aW9uQ291bnQpIHsKK0JlbmNobWFya1J1
bm5lci5wcm90b3R5cGUucnVuTXVsdGlwbGVJdGVyYXRpb25zID0gZnVuY3Rpb24oaXRlcmF0aW9u
Q291bnQpCit7CiAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgIHZhciBjdXJyZW50SXRlcmF0aW9u
ID0gMDsKIAotICAgIHRoaXMuX3J1bk5leHRJdGVyYXRpb24gPSBmdW5jdGlvbiAoKSB7CisgICAg
dGhpcy5fcnVuTmV4dEl0ZXJhdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICBjdXJyZW50SXRl
cmF0aW9uKys7CiAgICAgICAgIGlmIChjdXJyZW50SXRlcmF0aW9uIDwgaXRlcmF0aW9uQ291bnQp
CiAgICAgICAgICAgICBzZWxmLnJ1bkFsbFN0ZXBzKCk7CiAgICAgICAgIGVsc2UgaWYgKHRoaXMu
X2NsaWVudCAmJiB0aGlzLl9jbGllbnQuZGlkRmluaXNoTGFzdEl0ZXJhdGlvbikKLSAgICAgICAg
ICAgIHRoaXMuX2NsaWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0aW9uKCk7CisgICAgICAgICAgICBz
ZWxmLl9jbGllbnQuZGlkRmluaXNoTGFzdEl0ZXJhdGlvbigpOwogICAgIH0KIAotICAgIGlmICh0
aGlzLl9jbGllbnQgJiYgdGhpcy5fY2xpZW50LndpbGxTdGFydEZpcnN0SXRlcmF0aW9uKQotICAg
ICAgICB0aGlzLl9jbGllbnQud2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb24oaXRlcmF0aW9uQ291bnQp
OworICAgIGlmIChzZWxmLl9jbGllbnQgJiYgc2VsZi5fY2xpZW50LndpbGxTdGFydEZpcnN0SXRl
cmF0aW9uKQorICAgICAgICBzZWxmLl9jbGllbnQud2lsbFN0YXJ0Rmlyc3RJdGVyYXRpb24oaXRl
cmF0aW9uQ291bnQpOwogCiAgICAgc2VsZi5ydW5BbGxTdGVwcygpOwogfQogCi1CZW5jaG1hcmtS
dW5uZXIucHJvdG90eXBlLl9ydW5UZXN0QW5kUmVjb3JkUmVzdWx0cyA9IGZ1bmN0aW9uIChzdGF0
ZSkgewotICAgIHZhciBwcm9taXNlID0gbmV3IFNpbXBsZVByb21pc2U7Ci0gICAgdmFyIHN1aXRl
ID0gc3RhdGUuY3VycmVudFN1aXRlKCk7Ci0gICAgdmFyIHRlc3QgPSBzdGF0ZS5jdXJyZW50VGVz
dCgpOwotCi0gICAgaWYgKHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGllbnQud2lsbFJ1blRlc3Qp
Ci0gICAgICAgIHRoaXMuX2NsaWVudC53aWxsUnVuVGVzdChzdWl0ZSwgdGVzdCk7Ci0KLSAgICB2
YXIgc2VsZiA9IHRoaXM7Ci0gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHNl
bGYuX3J1blRlc3Qoc3VpdGUsIHRlc3QucnVuLCBzZWxmLl9wcmVwYXJlUmV0dXJuVmFsdWUsIGZ1
bmN0aW9uIChzeW5jVGltZSwgYXN5bmNUaW1lKSB7Ci0gICAgICAgICAgICB2YXIgc3VpdGVSZXN1
bHRzID0gc2VsZi5fbWVhc3VyZWRWYWx1ZXMudGVzdHNbc3VpdGUubmFtZV0gfHwge3Rlc3RzOnt9
LCB0b3RhbDogMH07Ci0gICAgICAgICAgICB2YXIgdG90YWwgPSBzeW5jVGltZSArIGFzeW5jVGlt
ZTsKLSAgICAgICAgICAgIHNlbGYuX21lYXN1cmVkVmFsdWVzLnRlc3RzW3N1aXRlLm5hbWVdID0g
c3VpdGVSZXN1bHRzOwotICAgICAgICAgICAgc3VpdGVSZXN1bHRzLnRlc3RzW3Rlc3QubmFtZV0g
PSB7dGVzdHM6IHsnU3luYyc6IHN5bmNUaW1lLCAnQXN5bmMnOiBhc3luY1RpbWV9LCB0b3RhbDog
dG90YWx9OwotICAgICAgICAgICAgc3VpdGVSZXN1bHRzLnRvdGFsICs9IHRvdGFsOwotICAgICAg
ICAgICAgc2VsZi5fbWVhc3VyZWRWYWx1ZXMudG90YWwgKz0gdG90YWw7Ci0KLSAgICAgICAgICAg
IGlmIChzZWxmLl9jbGllbnQgJiYgc2VsZi5fY2xpZW50LmRpZFJ1blRlc3QpCi0gICAgICAgICAg
ICAgICAgc2VsZi5fY2xpZW50LmRpZFJ1blRlc3Qoc3VpdGUsIHRlc3QpOwotCi0gICAgICAgICAg
ICBzdGF0ZS5uZXh0KCk7Ci0gICAgICAgICAgICBpZiAoc3RhdGUuY3VycmVudFN1aXRlKCkgIT0g
c3VpdGUpCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVtb3ZlRnJhbWUoKTsKLSAgICAgICAgICAg
IHByb21pc2UucmVzb2x2ZShzdGF0ZSk7Ci0gICAgICAgIH0pOwotICAgIH0sIDApOwotICAgIHJl
dHVybiBwcm9taXNlOwotfQotCi1CZW5jaG1hcmtSdW5uZXIucHJvdG90eXBlLl9maW5hbGl6ZSA9
IGZ1bmN0aW9uICgpIHsKK0JlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX2ZpbmFsaXplID0gZnVu
Y3Rpb24oKQorewogICAgIHRoaXMuX3JlbW92ZUZyYW1lKCk7Ci0KKyAgICAgICAgCiAgICAgaWYg
KHRoaXMuX2NsaWVudCAmJiB0aGlzLl9jbGllbnQuZGlkUnVuU3VpdGVzKQotICAgICAgICB0aGlz
Ll9jbGllbnQuZGlkUnVuU3VpdGVzKHRoaXMuX21lYXN1cmVkVmFsdWVzKTsKKyAgICAgICAgdGhp
cy5fY2xpZW50LmRpZFJ1blN1aXRlcyh0aGlzLl9zdWl0ZXNTYW1wbGVycyk7CiAKICAgICBpZiAo
dGhpcy5fcnVuTmV4dEl0ZXJhdGlvbikKICAgICAgICAgdGhpcy5fcnVuTmV4dEl0ZXJhdGlvbigp
OwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvZDMu
bWluLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIv
cmVzb3VyY2VzL2QzLm1pbi5qcwkocmV2aXNpb24gMTkwMjc4KQkoZnJvbSBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YyL2pzL2QzL2QzLm1pbi5qczoxOTAyNzgpCisrKyBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9kMy5taW4uanMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1IEBACishZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4sdCl7cmV0dXJu
IHQ+bj8tMTpuPnQ/MTpuPj10PzA6MC8wfWZ1bmN0aW9uIHQobil7cmV0dXJuIG51bGwhPW4mJiFp
c05hTihuKX1mdW5jdGlvbiBlKG4pe3JldHVybntsZWZ0OmZ1bmN0aW9uKHQsZSxyLHUpe2Zvcihh
cmd1bWVudHMubGVuZ3RoPDMmJihyPTApLGFyZ3VtZW50cy5sZW5ndGg8NCYmKHU9dC5sZW5ndGgp
O3U+cjspe3ZhciBpPXIrdT4+PjE7bih0W2ldLGUpPDA/cj1pKzE6dT1pfXJldHVybiByfSxyaWdo
dDpmdW5jdGlvbih0LGUscix1KXtmb3IoYXJndW1lbnRzLmxlbmd0aDwzJiYocj0wKSxhcmd1bWVu
dHMubGVuZ3RoPDQmJih1PXQubGVuZ3RoKTt1PnI7KXt2YXIgaT1yK3U+Pj4xO24odFtpXSxlKT4w
P3U9aTpyPWkrMX1yZXR1cm4gcn19fWZ1bmN0aW9uIHIobil7cmV0dXJuIG4ubGVuZ3RofWZ1bmN0
aW9uIHUobil7Zm9yKHZhciB0PTE7bip0JTE7KXQqPTEwO3JldHVybiB0fWZ1bmN0aW9uIGkobix0
KXt0cnl7Zm9yKHZhciBlIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLGUs
e3ZhbHVlOnRbZV0sZW51bWVyYWJsZTohMX0pfWNhdGNoKHIpe24ucHJvdG90eXBlPXR9fWZ1bmN0
aW9uIG8oKXt9ZnVuY3Rpb24gYShuKXtyZXR1cm4gaWErbiBpbiB0aGlzfWZ1bmN0aW9uIGMobil7
cmV0dXJuIG49aWErbixuIGluIHRoaXMmJmRlbGV0ZSB0aGlzW25dfWZ1bmN0aW9uIHMoKXt2YXIg
bj1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe24ucHVzaCh0KX0pLG59ZnVuY3Rp
b24gbCgpe3ZhciBuPTA7Zm9yKHZhciB0IGluIHRoaXMpdC5jaGFyQ29kZUF0KDApPT09b2EmJisr
bjtyZXR1cm4gbn1mdW5jdGlvbiBmKCl7Zm9yKHZhciBuIGluIHRoaXMpaWYobi5jaGFyQ29kZUF0
KDApPT09b2EpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gaCgpe31mdW5jdGlvbiBnKG4sdCxl
KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1lLmFwcGx5KHQsYXJndW1lbnRzKTtyZXR1cm4gcj09
PXQ/bjpyfX1mdW5jdGlvbiBwKG4sdCl7aWYodCBpbiBuKXJldHVybiB0O3Q9dC5jaGFyQXQoMCku
dG9VcHBlckNhc2UoKSt0LnN1YnN0cmluZygxKTtmb3IodmFyIGU9MCxyPWFhLmxlbmd0aDtyPmU7
KytlKXt2YXIgdT1hYVtlXSt0O2lmKHUgaW4gbilyZXR1cm4gdX19ZnVuY3Rpb24gdigpe31mdW5j
dGlvbiBkKCl7fWZ1bmN0aW9uIG0obil7ZnVuY3Rpb24gdCgpe2Zvcih2YXIgdCxyPWUsdT0tMSxp
PXIubGVuZ3RoOysrdTxpOykodD1yW3VdLm9uKSYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0
dXJuIG59dmFyIGU9W10scj1uZXcgbztyZXR1cm4gdC5vbj1mdW5jdGlvbih0LHUpe3ZhciBpLG89
ci5nZXQodCk7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9vJiZvLm9uOihvJiYoby5vbj1udWxs
LGU9ZS5zbGljZSgwLGk9ZS5pbmRleE9mKG8pKS5jb25jYXQoZS5zbGljZShpKzEpKSxyLnJlbW92
ZSh0KSksdSYmZS5wdXNoKHIuc2V0KHQse29uOnV9KSksbil9LHR9ZnVuY3Rpb24geSgpe1pvLmV2
ZW50LnByZXZlbnREZWZhdWx0KCl9ZnVuY3Rpb24geCgpe2Zvcih2YXIgbix0PVpvLmV2ZW50O249
dC5zb3VyY2VFdmVudDspdD1uO3JldHVybiB0fWZ1bmN0aW9uIE0obil7Zm9yKHZhciB0PW5ldyBk
LGU9MCxyPWFyZ3VtZW50cy5sZW5ndGg7KytlPHI7KXRbYXJndW1lbnRzW2VdXT1tKHQpO3JldHVy
biB0Lm9mPWZ1bmN0aW9uKGUscil7cmV0dXJuIGZ1bmN0aW9uKHUpe3RyeXt2YXIgaT11LnNvdXJj
ZUV2ZW50PVpvLmV2ZW50O3UudGFyZ2V0PW4sWm8uZXZlbnQ9dSx0W3UudHlwZV0uYXBwbHkoZSxy
KX1maW5hbGx5e1pvLmV2ZW50PWl9fX0sdH1mdW5jdGlvbiBfKG4pe3JldHVybiBzYShuLHBhKSxu
fWZ1bmN0aW9uIGIobil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpmdW5jdGlvbigpe3Jl
dHVybiBsYShuLHRoaXMpfX1mdW5jdGlvbiB3KG4pe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBu
P246ZnVuY3Rpb24oKXtyZXR1cm4gZmEobix0aGlzKX19ZnVuY3Rpb24gUyhuLHQpe2Z1bmN0aW9u
IGUoKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZShuKX1mdW5jdGlvbiByKCl7dGhpcy5yZW1vdmVBdHRy
aWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpfWZ1bmN0aW9uIHUoKXt0aGlzLnNldEF0dHJpYnV0ZShu
LHQpfWZ1bmN0aW9uIGkoKXt0aGlzLnNldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCx0KX1m
dW5jdGlvbiBvKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09ZT90aGlzLnJl
bW92ZUF0dHJpYnV0ZShuKTp0aGlzLnNldEF0dHJpYnV0ZShuLGUpfWZ1bmN0aW9uIGEoKXt2YXIg
ZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1lP3RoaXMucmVtb3ZlQXR0cmlidXRlTlMo
bi5zcGFjZSxuLmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCxlKX1y
ZXR1cm4gbj1aby5ucy5xdWFsaWZ5KG4pLG51bGw9PXQ/bi5sb2NhbD9yOmU6ImZ1bmN0aW9uIj09
dHlwZW9mIHQ/bi5sb2NhbD9hOm86bi5sb2NhbD9pOnV9ZnVuY3Rpb24gayhuKXtyZXR1cm4gbi50
cmltKCkucmVwbGFjZSgvXHMrL2csIiAiKX1mdW5jdGlvbiBFKG4pe3JldHVybiBuZXcgUmVnRXhw
KCIoPzpefFxccyspIitaby5yZXF1b3RlKG4pKyIoPzpcXHMrfCQpIiwiZyIpfWZ1bmN0aW9uIEEo
bil7cmV0dXJuKG4rIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBDKG4sdCl7ZnVu
Y3Rpb24gZSgpe2Zvcih2YXIgZT0tMTsrK2U8dTspbltlXSh0aGlzLHQpfWZ1bmN0aW9uIHIoKXtm
b3IodmFyIGU9LTEscj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTsrK2U8dTspbltlXSh0aGlzLHIp
fW49QShuKS5tYXAoTik7dmFyIHU9bi5sZW5ndGg7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/
cjplfWZ1bmN0aW9uIE4obil7dmFyIHQ9RShuKTtyZXR1cm4gZnVuY3Rpb24oZSxyKXtpZih1PWUu
Y2xhc3NMaXN0KXJldHVybiByP3UuYWRkKG4pOnUucmVtb3ZlKG4pO3ZhciB1PWUuZ2V0QXR0cmli
dXRlKCJjbGFzcyIpfHwiIjtyPyh0Lmxhc3RJbmRleD0wLHQudGVzdCh1KXx8ZS5zZXRBdHRyaWJ1
dGUoImNsYXNzIixrKHUrIiAiK24pKSk6ZS5zZXRBdHRyaWJ1dGUoImNsYXNzIixrKHUucmVwbGFj
ZSh0LCIgIikpKX19ZnVuY3Rpb24geihuLHQsZSl7ZnVuY3Rpb24gcigpe3RoaXMuc3R5bGUucmVt
b3ZlUHJvcGVydHkobil9ZnVuY3Rpb24gdSgpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkobix0LGUp
fWZ1bmN0aW9uIGkoKXt2YXIgcj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1yP3RoaXMu
c3R5bGUucmVtb3ZlUHJvcGVydHkobik6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShuLHIsZSl9cmV0
dXJuIG51bGw9PXQ/cjoiZnVuY3Rpb24iPT10eXBlb2YgdD9pOnV9ZnVuY3Rpb24gTChuLHQpe2Z1
bmN0aW9uIGUoKXtkZWxldGUgdGhpc1tuXX1mdW5jdGlvbiByKCl7dGhpc1tuXT10fWZ1bmN0aW9u
IHUoKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1lP2RlbGV0ZSB0aGlzW25d
OnRoaXNbbl09ZX1yZXR1cm4gbnVsbD09dD9lOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3U6cn1mdW5j
dGlvbiBUKG4pe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP246KG49Wm8ubnMucXVhbGlmeShu
KSkubG9jYWw/ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUyhuLnNwYWNlLG4ubG9jYWwpfTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKHRoaXMubmFtZXNwYWNlVVJJLG4pfX1mdW5jdGlvbiBxKG4pe3Jl
dHVybntfX2RhdGFfXzpufX1mdW5jdGlvbiBSKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBn
YSh0aGlzLG4pfX1mdW5jdGlvbiBEKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RofHwodD1uKSxm
dW5jdGlvbihuLGUpe3JldHVybiBuJiZlP3Qobi5fX2RhdGFfXyxlLl9fZGF0YV9fKTohbi0hZX19
ZnVuY3Rpb24gUChuLHQpe2Zvcih2YXIgZT0wLHI9bi5sZW5ndGg7cj5lO2UrKylmb3IodmFyIHUs
aT1uW2VdLG89MCxhPWkubGVuZ3RoO2E+bztvKyspKHU9aVtvXSkmJnQodSxvLGUpO3JldHVybiBu
fWZ1bmN0aW9uIFUobil7cmV0dXJuIHNhKG4sZGEpLG59ZnVuY3Rpb24gaihuKXt2YXIgdCxlO3Jl
dHVybiBmdW5jdGlvbihyLHUsaSl7dmFyIG8sYT1uW2ldLnVwZGF0ZSxjPWEubGVuZ3RoO2Zvcihp
IT1lJiYoZT1pLHQ9MCksdT49dCYmKHQ9dSsxKTshKG89YVt0XSkmJisrdDxjOyk7cmV0dXJuIG99
fWZ1bmN0aW9uIEgoKXt2YXIgbj10aGlzLl9fdHJhbnNpdGlvbl9fO24mJisrbi5hY3RpdmV9ZnVu
Y3Rpb24gRihuLHQsZSl7ZnVuY3Rpb24gcigpe3ZhciB0PXRoaXNbb107dCYmKHRoaXMucmVtb3Zl
RXZlbnRMaXN0ZW5lcihuLHQsdC4kKSxkZWxldGUgdGhpc1tvXSl9ZnVuY3Rpb24gdSgpe3ZhciB1
PWModCxYbyhhcmd1bWVudHMpKTtyLmNhbGwodGhpcyksdGhpcy5hZGRFdmVudExpc3RlbmVyKG4s
dGhpc1tvXT11LHUuJD1lKSx1Ll89dH1mdW5jdGlvbiBpKCl7dmFyIHQsZT1uZXcgUmVnRXhwKCJe
X19vbihbXi5dKykiK1pvLnJlcXVvdGUobikrIiQiKTtmb3IodmFyIHIgaW4gdGhpcylpZih0PXIu
bWF0Y2goZSkpe3ZhciB1PXRoaXNbcl07dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHRbMV0sdSx1
LiQpLGRlbGV0ZSB0aGlzW3JdfX12YXIgbz0iX19vbiIrbixhPW4uaW5kZXhPZigiLiIpLGM9Tzth
PjAmJihuPW4uc3Vic3RyaW5nKDAsYSkpO3ZhciBzPXlhLmdldChuKTtyZXR1cm4gcyYmKG49cyxj
PVkpLGE/dD91OnI6dD92Oml9ZnVuY3Rpb24gTyhuLHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIg
cj1aby5ldmVudDtaby5ldmVudD1lLHRbMF09dGhpcy5fX2RhdGFfXzt0cnl7bi5hcHBseSh0aGlz
LHQpfWZpbmFsbHl7Wm8uZXZlbnQ9cn19fWZ1bmN0aW9uIFkobix0KXt2YXIgZT1PKG4sdCk7cmV0
dXJuIGZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMscj1uLnJlbGF0ZWRUYXJnZXQ7ciYmKHI9PT10fHw4
JnIuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCkpfHxlLmNhbGwodCxuKX19ZnVuY3Rpb24gSSgp
e3ZhciBuPSIuZHJhZ3N1cHByZXNzLSIrICsrTWEsdD0iY2xpY2siK24sZT1aby5zZWxlY3QoV28p
Lm9uKCJ0b3VjaG1vdmUiK24seSkub24oImRyYWdzdGFydCIrbix5KS5vbigic2VsZWN0c3RhcnQi
K24seSk7aWYoeGEpe3ZhciByPUJvLnN0eWxlLHU9clt4YV07clt4YV09Im5vbmUifXJldHVybiBm
dW5jdGlvbihpKXtmdW5jdGlvbiBvKCl7ZS5vbih0LG51bGwpfWUub24obixudWxsKSx4YSYmKHJb
eGFdPXUpLGkmJihlLm9uKHQsZnVuY3Rpb24oKXt5KCksbygpfSwhMCksc2V0VGltZW91dChvLDAp
KX19ZnVuY3Rpb24gWihuLHQpe3QuY2hhbmdlZFRvdWNoZXMmJih0PXQuY2hhbmdlZFRvdWNoZXNb
MF0pO3ZhciBlPW4ub3duZXJTVkdFbGVtZW50fHxuO2lmKGUuY3JlYXRlU1ZHUG9pbnQpe3ZhciBy
PWUuY3JlYXRlU1ZHUG9pbnQoKTtpZigwPl9hJiYoV28uc2Nyb2xsWHx8V28uc2Nyb2xsWSkpe2U9
Wm8uc2VsZWN0KCJib2R5IikuYXBwZW5kKCJzdmciKS5zdHlsZSh7cG9zaXRpb246ImFic29sdXRl
Iix0b3A6MCxsZWZ0OjAsbWFyZ2luOjAscGFkZGluZzowLGJvcmRlcjoibm9uZSJ9LCJpbXBvcnRh
bnQiKTt2YXIgdT1lWzBdWzBdLmdldFNjcmVlbkNUTSgpO19hPSEodS5mfHx1LmUpLGUucmVtb3Zl
KCl9cmV0dXJuIF9hPyhyLng9dC5wYWdlWCxyLnk9dC5wYWdlWSk6KHIueD10LmNsaWVudFgsci55
PXQuY2xpZW50WSkscj1yLm1hdHJpeFRyYW5zZm9ybShuLmdldFNjcmVlbkNUTSgpLmludmVyc2Uo
KSksW3IueCxyLnldfXZhciBpPW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW3QuY2xp
ZW50WC1pLmxlZnQtbi5jbGllbnRMZWZ0LHQuY2xpZW50WS1pLnRvcC1uLmNsaWVudFRvcF19ZnVu
Y3Rpb24gVigpe3JldHVybiBaby5ldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5pZGVudGlmaWVyfWZ1
bmN0aW9uIFgoKXtyZXR1cm4gWm8uZXZlbnQudGFyZ2V0fWZ1bmN0aW9uICQoKXtyZXR1cm4gV299
ZnVuY3Rpb24gQihuKXtyZXR1cm4gbj4wPzE6MD5uPy0xOjB9ZnVuY3Rpb24gVyhuLHQsZSl7cmV0
dXJuKHRbMF0tblswXSkqKGVbMV0tblsxXSktKHRbMV0tblsxXSkqKGVbMF0tblswXSl9ZnVuY3Rp
b24gSihuKXtyZXR1cm4gbj4xPzA6LTE+bj9iYTpNYXRoLmFjb3Mobil9ZnVuY3Rpb24gRyhuKXty
ZXR1cm4gbj4xP1NhOi0xPm4/LVNhOk1hdGguYXNpbihuKX1mdW5jdGlvbiBLKG4pe3JldHVybigo
bj1NYXRoLmV4cChuKSktMS9uKS8yfWZ1bmN0aW9uIFEobil7cmV0dXJuKChuPU1hdGguZXhwKG4p
KSsxL24pLzJ9ZnVuY3Rpb24gbnQobil7cmV0dXJuKChuPU1hdGguZXhwKDIqbikpLTEpLyhuKzEp
fWZ1bmN0aW9uIHR0KG4pe3JldHVybihuPU1hdGguc2luKG4vMikpKm59ZnVuY3Rpb24gZXQoKXt9
ZnVuY3Rpb24gcnQobix0LGUpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgcnQ/KHRoaXMuaD0rbix0
aGlzLnM9K3Qsdm9pZCh0aGlzLmw9K2UpKTphcmd1bWVudHMubGVuZ3RoPDI/biBpbnN0YW5jZW9m
IHJ0P25ldyBydChuLmgsbi5zLG4ubCk6bXQoIiIrbix5dCxydCk6bmV3IHJ0KG4sdCxlKX1mdW5j
dGlvbiB1dChuLHQsZSl7ZnVuY3Rpb24gcihuKXtyZXR1cm4gbj4zNjA/bi09MzYwOjA+biYmKG4r
PTM2MCksNjA+bj9pKyhvLWkpKm4vNjA6MTgwPm4/bzoyNDA+bj9pKyhvLWkpKigyNDAtbikvNjA6
aX1mdW5jdGlvbiB1KG4pe3JldHVybiBNYXRoLnJvdW5kKDI1NSpyKG4pKX12YXIgaSxvO3JldHVy
biBuPWlzTmFOKG4pPzA6KG4lPTM2MCk8MD9uKzM2MDpuLHQ9aXNOYU4odCk/MDowPnQ/MDp0PjE/
MTp0LGU9MD5lPzA6ZT4xPzE6ZSxvPS41Pj1lP2UqKDErdCk6ZSt0LWUqdCxpPTIqZS1vLG5ldyBn
dCh1KG4rMTIwKSx1KG4pLHUobi0xMjApKX1mdW5jdGlvbiBpdChuLHQsZSl7cmV0dXJuIHRoaXMg
aW5zdGFuY2VvZiBpdD8odGhpcy5oPStuLHRoaXMuYz0rdCx2b2lkKHRoaXMubD0rZSkpOmFyZ3Vt
ZW50cy5sZW5ndGg8Mj9uIGluc3RhbmNlb2YgaXQ/bmV3IGl0KG4uaCxuLmMsbi5sKTpuIGluc3Rh
bmNlb2YgYXQ/c3Qobi5sLG4uYSxuLmIpOnN0KChuPXh0KChuPVpvLnJnYihuKSkucixuLmcsbi5i
KSkubCxuLmEsbi5iKTpuZXcgaXQobix0LGUpfWZ1bmN0aW9uIG90KG4sdCxlKXtyZXR1cm4gaXNO
YU4obikmJihuPTApLGlzTmFOKHQpJiYodD0wKSxuZXcgYXQoZSxNYXRoLmNvcyhuKj1BYSkqdCxN
YXRoLnNpbihuKSp0KX1mdW5jdGlvbiBhdChuLHQsZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBh
dD8odGhpcy5sPStuLHRoaXMuYT0rdCx2b2lkKHRoaXMuYj0rZSkpOmFyZ3VtZW50cy5sZW5ndGg8
Mj9uIGluc3RhbmNlb2YgYXQ/bmV3IGF0KG4ubCxuLmEsbi5iKTpuIGluc3RhbmNlb2YgaXQ/b3Qo
bi5sLG4uYyxuLmgpOnh0KChuPWd0KG4pKS5yLG4uZyxuLmIpOm5ldyBhdChuLHQsZSl9ZnVuY3Rp
b24gY3Qobix0LGUpe3ZhciByPShuKzE2KS8xMTYsdT1yK3QvNTAwLGk9ci1lLzIwMDtyZXR1cm4g
dT1sdCh1KSpqYSxyPWx0KHIpKkhhLGk9bHQoaSkqRmEsbmV3IGd0KGh0KDMuMjQwNDU0Mip1LTEu
NTM3MTM4NSpyLS40OTg1MzE0KmkpLGh0KC0uOTY5MjY2KnUrMS44NzYwMTA4KnIrLjA0MTU1Nipp
KSxodCguMDU1NjQzNCp1LS4yMDQwMjU5KnIrMS4wNTcyMjUyKmkpKX1mdW5jdGlvbiBzdChuLHQs
ZSl7cmV0dXJuIG4+MD9uZXcgaXQoTWF0aC5hdGFuMihlLHQpKkNhLE1hdGguc3FydCh0KnQrZSpl
KSxuKTpuZXcgaXQoMC8wLDAvMCxuKX1mdW5jdGlvbiBsdChuKXtyZXR1cm4gbj4uMjA2ODkzMDM0
P24qbipuOihuLTQvMjkpLzcuNzg3MDM3fWZ1bmN0aW9uIGZ0KG4pe3JldHVybiBuPi4wMDg4NTY/
TWF0aC5wb3cobiwxLzMpOjcuNzg3MDM3Km4rNC8yOX1mdW5jdGlvbiBodChuKXtyZXR1cm4gTWF0
aC5yb3VuZCgyNTUqKC4wMDMwND49bj8xMi45MipuOjEuMDU1Kk1hdGgucG93KG4sMS8yLjQpLS4w
NTUpKX1mdW5jdGlvbiBndChuLHQsZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBndD8odGhpcy5y
PX5+bix0aGlzLmc9fn50LHZvaWQodGhpcy5iPX5+ZSkpOmFyZ3VtZW50cy5sZW5ndGg8Mj9uIGlu
c3RhbmNlb2YgZ3Q/bmV3IGd0KG4ucixuLmcsbi5iKTptdCgiIituLGd0LHV0KTpuZXcgZ3Qobix0
LGUpfWZ1bmN0aW9uIHB0KG4pe3JldHVybiBuZXcgZ3Qobj4+MTYsMjU1Jm4+PjgsMjU1Jm4pfWZ1
bmN0aW9uIHZ0KG4pe3JldHVybiBwdChuKSsiIn1mdW5jdGlvbiBkdChuKXtyZXR1cm4gMTY+bj8i
MCIrTWF0aC5tYXgoMCxuKS50b1N0cmluZygxNik6TWF0aC5taW4oMjU1LG4pLnRvU3RyaW5nKDE2
KX1mdW5jdGlvbiBtdChuLHQsZSl7dmFyIHIsdSxpLG89MCxhPTAsYz0wO2lmKHI9LyhbYS16XSsp
XCgoLiopXCkvaS5leGVjKG4pKXN3aXRjaCh1PXJbMl0uc3BsaXQoIiwiKSxyWzFdKXtjYXNlImhz
bCI6cmV0dXJuIGUocGFyc2VGbG9hdCh1WzBdKSxwYXJzZUZsb2F0KHVbMV0pLzEwMCxwYXJzZUZs
b2F0KHVbMl0pLzEwMCk7Y2FzZSJyZ2IiOnJldHVybiB0KF90KHVbMF0pLF90KHVbMV0pLF90KHVb
Ml0pKX1yZXR1cm4oaT1JYS5nZXQobikpP3QoaS5yLGkuZyxpLmIpOihudWxsPT1ufHwiIyIhPT1u
LmNoYXJBdCgwKXx8aXNOYU4oaT1wYXJzZUludChuLnN1YnN0cmluZygxKSwxNikpfHwoND09PW4u
bGVuZ3RoPyhvPSgzODQwJmkpPj40LG89bz4+NHxvLGE9MjQwJmksYT1hPj40fGEsYz0xNSZpLGM9
Yzw8NHxjKTo3PT09bi5sZW5ndGgmJihvPSgxNjcxMTY4MCZpKT4+MTYsYT0oNjUyODAmaSk+Pjgs
Yz0yNTUmaSkpLHQobyxhLGMpKX1mdW5jdGlvbiB5dChuLHQsZSl7dmFyIHIsdSxpPU1hdGgubWlu
KG4vPTI1NSx0Lz0yNTUsZS89MjU1KSxvPU1hdGgubWF4KG4sdCxlKSxhPW8taSxjPShvK2kpLzI7
cmV0dXJuIGE/KHU9LjU+Yz9hLyhvK2kpOmEvKDItby1pKSxyPW49PW8/KHQtZSkvYSsoZT50PzY6
MCk6dD09bz8oZS1uKS9hKzI6KG4tdCkvYSs0LHIqPTYwKToocj0wLzAsdT1jPjAmJjE+Yz8wOnIp
LG5ldyBydChyLHUsYyl9ZnVuY3Rpb24geHQobix0LGUpe249TXQobiksdD1NdCh0KSxlPU10KGUp
O3ZhciByPWZ0KCguNDEyNDU2NCpuKy4zNTc1NzYxKnQrLjE4MDQzNzUqZSkvamEpLHU9ZnQoKC4y
MTI2NzI5Km4rLjcxNTE1MjIqdCsuMDcyMTc1KmUpL0hhKSxpPWZ0KCguMDE5MzMzOSpuKy4xMTkx
OTIqdCsuOTUwMzA0MSplKS9GYSk7cmV0dXJuIGF0KDExNip1LTE2LDUwMCooci11KSwyMDAqKHUt
aSkpfWZ1bmN0aW9uIE10KG4pe3JldHVybihuLz0yNTUpPD0uMDQwNDU/bi8xMi45MjpNYXRoLnBv
dygobisuMDU1KS8xLjA1NSwyLjQpfWZ1bmN0aW9uIF90KG4pe3ZhciB0PXBhcnNlRmxvYXQobik7
cmV0dXJuIiUiPT09bi5jaGFyQXQobi5sZW5ndGgtMSk/TWF0aC5yb3VuZCgyLjU1KnQpOnR9ZnVu
Y3Rpb24gYnQobil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpmdW5jdGlvbigpe3JldHVy
biBufX1mdW5jdGlvbiB3dChuKXtyZXR1cm4gbn1mdW5jdGlvbiBTdChuKXtyZXR1cm4gZnVuY3Rp
b24odCxlLHIpe3JldHVybiAyPT09YXJndW1lbnRzLmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9m
IGUmJihyPWUsZT1udWxsKSxrdCh0LGUsbixyKX19ZnVuY3Rpb24ga3Qobix0LGUscil7ZnVuY3Rp
b24gdSgpe3ZhciBuLHQ9Yy5zdGF0dXM7aWYoIXQmJmMucmVzcG9uc2VUZXh0fHx0Pj0yMDAmJjMw
MD50fHwzMDQ9PT10KXt0cnl7bj1lLmNhbGwoaSxjKX1jYXRjaChyKXtyZXR1cm4gby5lcnJvci5j
YWxsKGksciksdm9pZCAwfW8ubG9hZC5jYWxsKGksbil9ZWxzZSBvLmVycm9yLmNhbGwoaSxjKX12
YXIgaT17fSxvPVpvLmRpc3BhdGNoKCJiZWZvcmVzZW5kIiwicHJvZ3Jlc3MiLCJsb2FkIiwiZXJy
b3IiKSxhPXt9LGM9bmV3IFhNTEh0dHBSZXF1ZXN0LHM9bnVsbDtyZXR1cm4hV28uWERvbWFpblJl
cXVlc3R8fCJ3aXRoQ3JlZGVudGlhbHMiaW4gY3x8IS9eKGh0dHAocyk/Oik/XC9cLy8udGVzdChu
KXx8KGM9bmV3IFhEb21haW5SZXF1ZXN0KSwib25sb2FkImluIGM/Yy5vbmxvYWQ9Yy5vbmVycm9y
PXU6Yy5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtjLnJlYWR5U3RhdGU+MyYmdSgpfSxj
Lm9ucHJvZ3Jlc3M9ZnVuY3Rpb24obil7dmFyIHQ9Wm8uZXZlbnQ7Wm8uZXZlbnQ9bjt0cnl7by5w
cm9ncmVzcy5jYWxsKGksYyl9ZmluYWxseXtaby5ldmVudD10fX0saS5oZWFkZXI9ZnVuY3Rpb24o
bix0KXtyZXR1cm4gbj0obisiIikudG9Mb3dlckNhc2UoKSxhcmd1bWVudHMubGVuZ3RoPDI/YVtu
XToobnVsbD09dD9kZWxldGUgYVtuXTphW25dPXQrIiIsaSl9LGkubWltZVR5cGU9ZnVuY3Rpb24o
bil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9bnVsbD09bj9udWxsOm4rIiIsaSk6dH0saS5y
ZXNwb25zZVR5cGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bixpKTpz
fSxpLnJlc3BvbnNlPWZ1bmN0aW9uKG4pe3JldHVybiBlPW4saX0sWyJnZXQiLCJwb3N0Il0uZm9y
RWFjaChmdW5jdGlvbihuKXtpW25dPWZ1bmN0aW9uKCl7cmV0dXJuIGkuc2VuZC5hcHBseShpLFtu
XS5jb25jYXQoWG8oYXJndW1lbnRzKSkpfX0pLGkuc2VuZD1mdW5jdGlvbihlLHIsdSl7aWYoMj09
PWFyZ3VtZW50cy5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiByJiYodT1yLHI9bnVsbCksYy5v
cGVuKGUsbiwhMCksbnVsbD09dHx8ImFjY2VwdCJpbiBhfHwoYS5hY2NlcHQ9dCsiLCovKiIpLGMu
c2V0UmVxdWVzdEhlYWRlcilmb3IodmFyIGwgaW4gYSljLnNldFJlcXVlc3RIZWFkZXIobCxhW2xd
KTtyZXR1cm4gbnVsbCE9dCYmYy5vdmVycmlkZU1pbWVUeXBlJiZjLm92ZXJyaWRlTWltZVR5cGUo
dCksbnVsbCE9cyYmKGMucmVzcG9uc2VUeXBlPXMpLG51bGwhPXUmJmkub24oImVycm9yIix1KS5v
bigibG9hZCIsZnVuY3Rpb24obil7dShudWxsLG4pfSksby5iZWZvcmVzZW5kLmNhbGwoaSxjKSxj
LnNlbmQobnVsbD09cj9udWxsOnIpLGl9LGkuYWJvcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gYy5hYm9y
dCgpLGl9LFpvLnJlYmluZChpLG8sIm9uIiksbnVsbD09cj9pOmkuZ2V0KEV0KHIpKX1mdW5jdGlv
biBFdChuKXtyZXR1cm4gMT09PW4ubGVuZ3RoP2Z1bmN0aW9uKHQsZSl7bihudWxsPT10P2U6bnVs
bCl9Om59ZnVuY3Rpb24gQXQoKXt2YXIgbj1DdCgpLHQ9TnQoKS1uO3Q+MjQ/KGlzRmluaXRlKHQp
JiYoY2xlYXJUaW1lb3V0KCRhKSwkYT1zZXRUaW1lb3V0KEF0LHQpKSxYYT0wKTooWGE9MSxXYShB
dCkpfWZ1bmN0aW9uIEN0KCl7dmFyIG49RGF0ZS5ub3coKTtmb3IoQmE9WmE7QmE7KW4+PUJhLnQm
JihCYS5mPUJhLmMobi1CYS50KSksQmE9QmEubjtyZXR1cm4gbn1mdW5jdGlvbiBOdCgpe2Zvcih2
YXIgbix0PVphLGU9MS8wO3Q7KXQuZj90PW4/bi5uPXQubjpaYT10Lm46KHQudDxlJiYoZT10LnQp
LHQ9KG49dCkubik7cmV0dXJuIFZhPW4sZX1mdW5jdGlvbiB6dChuLHQpe3JldHVybiB0LShuP01h
dGguY2VpbChNYXRoLmxvZyhuKS9NYXRoLkxOMTApOjEpfWZ1bmN0aW9uIEx0KG4sdCl7dmFyIGU9
TWF0aC5wb3coMTAsMyp1YSg4LXQpKTtyZXR1cm57c2NhbGU6dD44P2Z1bmN0aW9uKG4pe3JldHVy
biBuL2V9OmZ1bmN0aW9uKG4pe3JldHVybiBuKmV9LHN5bWJvbDpufX1mdW5jdGlvbiBUdChuKXt2
YXIgdD1uLmRlY2ltYWwsZT1uLnRob3VzYW5kcyxyPW4uZ3JvdXBpbmcsdT1uLmN1cnJlbmN5LGk9
cj9mdW5jdGlvbihuKXtmb3IodmFyIHQ9bi5sZW5ndGgsdT1bXSxpPTAsbz1yWzBdO3Q+MCYmbz4w
Oyl1LnB1c2gobi5zdWJzdHJpbmcodC09byx0K28pKSxvPXJbaT0oaSsxKSVyLmxlbmd0aF07cmV0
dXJuIHUucmV2ZXJzZSgpLmpvaW4oZSl9Ond0O3JldHVybiBmdW5jdGlvbihuKXt2YXIgZT1HYS5l
eGVjKG4pLHI9ZVsxXXx8IiAiLG89ZVsyXXx8Ij4iLGE9ZVszXXx8IiIsYz1lWzRdfHwiIixzPWVb
NV0sbD0rZVs2XSxmPWVbN10saD1lWzhdLGc9ZVs5XSxwPTEsdj0iIixkPSIiLG09ITE7c3dpdGNo
KGgmJihoPStoLnN1YnN0cmluZygxKSksKHN8fCIwIj09PXImJiI9Ij09PW8pJiYocz1yPSIwIixv
PSI9IixmJiYobC09TWF0aC5mbG9vcigobC0xKS80KSkpLGcpe2Nhc2UibiI6Zj0hMCxnPSJnIjti
cmVhaztjYXNlIiUiOnA9MTAwLGQ9IiUiLGc9ImYiO2JyZWFrO2Nhc2UicCI6cD0xMDAsZD0iJSIs
Zz0iciI7YnJlYWs7Y2FzZSJiIjpjYXNlIm8iOmNhc2UieCI6Y2FzZSJYIjoiIyI9PT1jJiYodj0i
MCIrZy50b0xvd2VyQ2FzZSgpKTtjYXNlImMiOmNhc2UiZCI6bT0hMCxoPTA7YnJlYWs7Y2FzZSJz
IjpwPS0xLGc9InIifSIkIj09PWMmJih2PXVbMF0sZD11WzFdKSwiciIhPWd8fGh8fChnPSJnIiks
bnVsbCE9aCYmKCJnIj09Zz9oPU1hdGgubWF4KDEsTWF0aC5taW4oMjEsaCkpOigiZSI9PWd8fCJm
Ij09ZykmJihoPU1hdGgubWF4KDAsTWF0aC5taW4oMjAsaCkpKSksZz1LYS5nZXQoZyl8fHF0O3Zh
ciB5PXMmJmY7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBlPWQ7aWYobSYmbiUxKXJldHVybiIiO3Zh
ciB1PTA+bnx8MD09PW4mJjA+MS9uPyhuPS1uLCItIik6YTtpZigwPnApe3ZhciBjPVpvLmZvcm1h
dFByZWZpeChuLGgpO249Yy5zY2FsZShuKSxlPWMuc3ltYm9sK2R9ZWxzZSBuKj1wO249ZyhuLGgp
O3ZhciB4PW4ubGFzdEluZGV4T2YoIi4iKSxNPTA+eD9uOm4uc3Vic3RyaW5nKDAseCksXz0wPng/
IiI6dCtuLnN1YnN0cmluZyh4KzEpOyFzJiZmJiYoTT1pKE0pKTt2YXIgYj12Lmxlbmd0aCtNLmxl
bmd0aCtfLmxlbmd0aCsoeT8wOnUubGVuZ3RoKSx3PWw+Yj9uZXcgQXJyYXkoYj1sLWIrMSkuam9p
bihyKToiIjtyZXR1cm4geSYmKE09aSh3K00pKSx1Kz12LG49TStfLCgiPCI9PT1vP3Urbit3OiI+
Ij09PW8/dyt1K246Il4iPT09bz93LnN1YnN0cmluZygwLGI+Pj0xKSt1K24rdy5zdWJzdHJpbmco
Yik6dSsoeT9uOncrbikpK2V9fX1mdW5jdGlvbiBxdChuKXtyZXR1cm4gbisiIn1mdW5jdGlvbiBS
dCgpe3RoaXMuXz1uZXcgRGF0ZShhcmd1bWVudHMubGVuZ3RoPjE/RGF0ZS5VVEMuYXBwbHkodGhp
cyxhcmd1bWVudHMpOmFyZ3VtZW50c1swXSl9ZnVuY3Rpb24gRHQobix0LGUpe2Z1bmN0aW9uIHIo
dCl7dmFyIGU9bih0KSxyPWkoZSwxKTtyZXR1cm4gci10PnQtZT9lOnJ9ZnVuY3Rpb24gdShlKXty
ZXR1cm4gdChlPW4obmV3IG5jKGUtMSkpLDEpLGV9ZnVuY3Rpb24gaShuLGUpe3JldHVybiB0KG49
bmV3IG5jKCtuKSxlKSxufWZ1bmN0aW9uIG8obixyLGkpe3ZhciBvPXUobiksYT1bXTtpZihpPjEp
Zm9yKDtyPm87KWUobyklaXx8YS5wdXNoKG5ldyBEYXRlKCtvKSksdChvLDEpO2Vsc2UgZm9yKDty
Pm87KWEucHVzaChuZXcgRGF0ZSgrbykpLHQobywxKTtyZXR1cm4gYX1mdW5jdGlvbiBhKG4sdCxl
KXt0cnl7bmM9UnQ7dmFyIHI9bmV3IFJ0O3JldHVybiByLl89bixvKHIsdCxlKX1maW5hbGx5e25j
PURhdGV9fW4uZmxvb3I9bixuLnJvdW5kPXIsbi5jZWlsPXUsbi5vZmZzZXQ9aSxuLnJhbmdlPW87
dmFyIGM9bi51dGM9UHQobik7cmV0dXJuIGMuZmxvb3I9YyxjLnJvdW5kPVB0KHIpLGMuY2VpbD1Q
dCh1KSxjLm9mZnNldD1QdChpKSxjLnJhbmdlPWEsbn1mdW5jdGlvbiBQdChuKXtyZXR1cm4gZnVu
Y3Rpb24odCxlKXt0cnl7bmM9UnQ7dmFyIHI9bmV3IFJ0O3JldHVybiByLl89dCxuKHIsZSkuX31m
aW5hbGx5e25jPURhdGV9fX1mdW5jdGlvbiBVdChuKXtmdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIHQo
dCl7Zm9yKHZhciBlLHUsaSxvPVtdLGE9LTEsYz0wOysrYTxyOykzNz09PW4uY2hhckNvZGVBdChh
KSYmKG8ucHVzaChuLnN1YnN0cmluZyhjLGEpKSxudWxsIT0odT1lY1tlPW4uY2hhckF0KCsrYSld
KSYmKGU9bi5jaGFyQXQoKythKSksKGk9Q1tlXSkmJihlPWkodCxudWxsPT11PyJlIj09PWU/IiAi
OiIwIjp1KSksby5wdXNoKGUpLGM9YSsxKTtyZXR1cm4gby5wdXNoKG4uc3Vic3RyaW5nKGMsYSkp
LG8uam9pbigiIil9dmFyIHI9bi5sZW5ndGg7cmV0dXJuIHQucGFyc2U9ZnVuY3Rpb24odCl7dmFy
IHI9e3k6MTkwMCxtOjAsZDoxLEg6MCxNOjAsUzowLEw6MCxaOm51bGx9LHU9ZShyLG4sdCwwKTtp
Zih1IT10Lmxlbmd0aClyZXR1cm4gbnVsbDsicCJpbiByJiYoci5IPXIuSCUxMisxMipyLnApO3Zh
ciBpPW51bGwhPXIuWiYmbmMhPT1SdCxvPW5ldyhpP1J0Om5jKTtyZXR1cm4iaiJpbiByP28uc2V0
RnVsbFllYXIoci55LDAsci5qKToidyJpbiByJiYoIlciaW4gcnx8IlUiaW4gcik/KG8uc2V0RnVs
bFllYXIoci55LDAsMSksby5zZXRGdWxsWWVhcihyLnksMCwiVyJpbiByPyhyLncrNiklNys3KnIu
Vy0oby5nZXREYXkoKSs1KSU3OnIudys3KnIuVS0oby5nZXREYXkoKSs2KSU3KSk6by5zZXRGdWxs
WWVhcihyLnksci5tLHIuZCksby5zZXRIb3VycyhyLkgrTWF0aC5mbG9vcihyLlovMTAwKSxyLk0r
ci5aJTEwMCxyLlMsci5MKSxpP28uXzpvfSx0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIG59
LHR9ZnVuY3Rpb24gZShuLHQsZSxyKXtmb3IodmFyIHUsaSxvLGE9MCxjPXQubGVuZ3RoLHM9ZS5s
ZW5ndGg7Yz5hOyl7aWYocj49cylyZXR1cm4tMTtpZih1PXQuY2hhckNvZGVBdChhKyspLDM3PT09
dSl7aWYobz10LmNoYXJBdChhKyspLGk9TltvIGluIGVjP3QuY2hhckF0KGErKyk6b10sIWl8fChy
PWkobixlLHIpKTwwKXJldHVybi0xfWVsc2UgaWYodSE9ZS5jaGFyQ29kZUF0KHIrKykpcmV0dXJu
LTF9cmV0dXJuIHJ9ZnVuY3Rpb24gcihuLHQsZSl7Yi5sYXN0SW5kZXg9MDt2YXIgcj1iLmV4ZWMo
dC5zdWJzdHJpbmcoZSkpO3JldHVybiByPyhuLnc9dy5nZXQoclswXS50b0xvd2VyQ2FzZSgpKSxl
K3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB1KG4sdCxlKXtNLmxhc3RJbmRleD0wO3ZhciByPU0u
ZXhlYyh0LnN1YnN0cmluZyhlKSk7cmV0dXJuIHI/KG4udz1fLmdldChyWzBdLnRvTG93ZXJDYXNl
KCkpLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGkobix0LGUpe0UubGFzdEluZGV4PTA7dmFy
IHI9RS5leGVjKHQuc3Vic3RyaW5nKGUpKTtyZXR1cm4gcj8obi5tPUEuZ2V0KHJbMF0udG9Mb3dl
ckNhc2UoKSksZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbyhuLHQsZSl7Uy5sYXN0SW5kZXg9
MDt2YXIgcj1TLmV4ZWModC5zdWJzdHJpbmcoZSkpO3JldHVybiByPyhuLm09ay5nZXQoclswXS50
b0xvd2VyQ2FzZSgpKSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBhKG4sdCxyKXtyZXR1cm4g
ZShuLEMuYy50b1N0cmluZygpLHQscil9ZnVuY3Rpb24gYyhuLHQscil7cmV0dXJuIGUobixDLngu
dG9TdHJpbmcoKSx0LHIpfWZ1bmN0aW9uIHMobix0LHIpe3JldHVybiBlKG4sQy5YLnRvU3RyaW5n
KCksdCxyKX1mdW5jdGlvbiBsKG4sdCxlKXt2YXIgcj14LmdldCh0LnN1YnN0cmluZyhlLGUrPTIp
LnRvTG93ZXJDYXNlKCkpO3JldHVybiBudWxsPT1yPy0xOihuLnA9cixlKX12YXIgZj1uLmRhdGVU
aW1lLGg9bi5kYXRlLGc9bi50aW1lLHA9bi5wZXJpb2RzLHY9bi5kYXlzLGQ9bi5zaG9ydERheXMs
bT1uLm1vbnRocyx5PW4uc2hvcnRNb250aHM7dC51dGM9ZnVuY3Rpb24obil7ZnVuY3Rpb24gZShu
KXt0cnl7bmM9UnQ7dmFyIHQ9bmV3IG5jO3JldHVybiB0Ll89bixyKHQpfWZpbmFsbHl7bmM9RGF0
ZX19dmFyIHI9dChuKTtyZXR1cm4gZS5wYXJzZT1mdW5jdGlvbihuKXt0cnl7bmM9UnQ7dmFyIHQ9
ci5wYXJzZShuKTtyZXR1cm4gdCYmdC5ffWZpbmFsbHl7bmM9RGF0ZX19LGUudG9TdHJpbmc9ci50
b1N0cmluZyxlfSx0Lm11bHRpPXQudXRjLm11bHRpPXJlO3ZhciB4PVpvLm1hcCgpLE09SHQodiks
Xz1GdCh2KSxiPUh0KGQpLHc9RnQoZCksUz1IdChtKSxrPUZ0KG0pLEU9SHQoeSksQT1GdCh5KTtw
LmZvckVhY2goZnVuY3Rpb24obix0KXt4LnNldChuLnRvTG93ZXJDYXNlKCksdCl9KTt2YXIgQz17
YTpmdW5jdGlvbihuKXtyZXR1cm4gZFtuLmdldERheSgpXX0sQTpmdW5jdGlvbihuKXtyZXR1cm4g
dltuLmdldERheSgpXX0sYjpmdW5jdGlvbihuKXtyZXR1cm4geVtuLmdldE1vbnRoKCldfSxCOmZ1
bmN0aW9uKG4pe3JldHVybiBtW24uZ2V0TW9udGgoKV19LGM6dChmKSxkOmZ1bmN0aW9uKG4sdCl7
cmV0dXJuIGp0KG4uZ2V0RGF0ZSgpLHQsMil9LGU6ZnVuY3Rpb24obix0KXtyZXR1cm4ganQobi5n
ZXREYXRlKCksdCwyKX0sSDpmdW5jdGlvbihuLHQpe3JldHVybiBqdChuLmdldEhvdXJzKCksdCwy
KX0sSTpmdW5jdGlvbihuLHQpe3JldHVybiBqdChuLmdldEhvdXJzKCklMTJ8fDEyLHQsMil9LGo6
ZnVuY3Rpb24obix0KXtyZXR1cm4ganQoMStRYS5kYXlPZlllYXIobiksdCwzKX0sTDpmdW5jdGlv
bihuLHQpe3JldHVybiBqdChuLmdldE1pbGxpc2Vjb25kcygpLHQsMyl9LG06ZnVuY3Rpb24obix0
KXtyZXR1cm4ganQobi5nZXRNb250aCgpKzEsdCwyKX0sTTpmdW5jdGlvbihuLHQpe3JldHVybiBq
dChuLmdldE1pbnV0ZXMoKSx0LDIpfSxwOmZ1bmN0aW9uKG4pe3JldHVybiBwWysobi5nZXRIb3Vy
cygpPj0xMildfSxTOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIGp0KG4uZ2V0U2Vjb25kcygpLHQsMil9
LFU6ZnVuY3Rpb24obix0KXtyZXR1cm4ganQoUWEuc3VuZGF5T2ZZZWFyKG4pLHQsMil9LHc6ZnVu
Y3Rpb24obil7cmV0dXJuIG4uZ2V0RGF5KCl9LFc6ZnVuY3Rpb24obix0KXtyZXR1cm4ganQoUWEu
bW9uZGF5T2ZZZWFyKG4pLHQsMil9LHg6dChoKSxYOnQoZykseTpmdW5jdGlvbihuLHQpe3JldHVy
biBqdChuLmdldEZ1bGxZZWFyKCklMTAwLHQsMil9LFk6ZnVuY3Rpb24obix0KXtyZXR1cm4ganQo
bi5nZXRGdWxsWWVhcigpJTFlNCx0LDQpfSxaOnRlLCIlIjpmdW5jdGlvbigpe3JldHVybiIlIn19
LE49e2E6cixBOnUsYjppLEI6byxjOmEsZDpXdCxlOld0LEg6R3QsSTpHdCxqOkp0LEw6bmUsbTpC
dCxNOkt0LHA6bCxTOlF0LFU6WXQsdzpPdCxXOkl0LHg6YyxYOnMseTpWdCxZOlp0LFo6WHQsIiUi
OmVlfTtyZXR1cm4gdH1mdW5jdGlvbiBqdChuLHQsZSl7dmFyIHI9MD5uPyItIjoiIix1PShyPy1u
Om4pKyIiLGk9dS5sZW5ndGg7cmV0dXJuIHIrKGU+aT9uZXcgQXJyYXkoZS1pKzEpLmpvaW4odCkr
dTp1KX1mdW5jdGlvbiBIdChuKXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrbi5tYXAoWm8ucmVx
dW90ZSkuam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIEZ0KG4pe2Zvcih2YXIgdD1uZXcgbyxl
PS0xLHI9bi5sZW5ndGg7KytlPHI7KXQuc2V0KG5bZV0udG9Mb3dlckNhc2UoKSxlKTtyZXR1cm4g
dH1mdW5jdGlvbiBPdChuLHQsZSl7cmMubGFzdEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0LnN1YnN0
cmluZyhlLGUrMSkpO3JldHVybiByPyhuLnc9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rp
b24gWXQobix0LGUpe3JjLmxhc3RJbmRleD0wO3ZhciByPXJjLmV4ZWModC5zdWJzdHJpbmcoZSkp
O3JldHVybiByPyhuLlU9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gSXQobix0LGUp
e3JjLmxhc3RJbmRleD0wO3ZhciByPXJjLmV4ZWModC5zdWJzdHJpbmcoZSkpO3JldHVybiByPyhu
Llc9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gWnQobix0LGUpe3JjLmxhc3RJbmRl
eD0wO3ZhciByPXJjLmV4ZWModC5zdWJzdHJpbmcoZSxlKzQpKTtyZXR1cm4gcj8obi55PStyWzBd
LGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFZ0KG4sdCxlKXtyYy5sYXN0SW5kZXg9MDt2YXIg
cj1yYy5leGVjKHQuc3Vic3RyaW5nKGUsZSsyKSk7cmV0dXJuIHI/KG4ueT0kdCgrclswXSksZSty
WzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gWHQobix0LGUpe3JldHVybi9eWystXVxkezR9JC8udGVz
dCh0PXQuc3Vic3RyaW5nKGUsZSs1KSk/KG4uWj0tdCxlKzUpOi0xfWZ1bmN0aW9uICR0KG4pe3Jl
dHVybiBuKyhuPjY4PzE5MDA6MmUzKX1mdW5jdGlvbiBCdChuLHQsZSl7cmMubGFzdEluZGV4PTA7
dmFyIHI9cmMuZXhlYyh0LnN1YnN0cmluZyhlLGUrMikpO3JldHVybiByPyhuLm09clswXS0xLGUr
clswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFd0KG4sdCxlKXtyYy5sYXN0SW5kZXg9MDt2YXIgcj1y
Yy5leGVjKHQuc3Vic3RyaW5nKGUsZSsyKSk7cmV0dXJuIHI/KG4uZD0rclswXSxlK3JbMF0ubGVu
Z3RoKTotMX1mdW5jdGlvbiBKdChuLHQsZSl7cmMubGFzdEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0
LnN1YnN0cmluZyhlLGUrMykpO3JldHVybiByPyhuLmo9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9
ZnVuY3Rpb24gR3Qobix0LGUpe3JjLmxhc3RJbmRleD0wO3ZhciByPXJjLmV4ZWModC5zdWJzdHJp
bmcoZSxlKzIpKTtyZXR1cm4gcj8obi5IPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9u
IEt0KG4sdCxlKXtyYy5sYXN0SW5kZXg9MDt2YXIgcj1yYy5leGVjKHQuc3Vic3RyaW5nKGUsZSsy
KSk7cmV0dXJuIHI/KG4uTT0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBRdChuLHQs
ZSl7cmMubGFzdEluZGV4PTA7dmFyIHI9cmMuZXhlYyh0LnN1YnN0cmluZyhlLGUrMikpO3JldHVy
biByPyhuLlM9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbmUobix0LGUpe3JjLmxh
c3RJbmRleD0wO3ZhciByPXJjLmV4ZWModC5zdWJzdHJpbmcoZSxlKzMpKTtyZXR1cm4gcj8obi5M
PStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHRlKG4pe3ZhciB0PW4uZ2V0VGltZXpv
bmVPZmZzZXQoKSxlPXQ+MD8iLSI6IisiLHI9fn4odWEodCkvNjApLHU9dWEodCklNjA7cmV0dXJu
IGUranQociwiMCIsMikranQodSwiMCIsMil9ZnVuY3Rpb24gZWUobix0LGUpe3VjLmxhc3RJbmRl
eD0wO3ZhciByPXVjLmV4ZWModC5zdWJzdHJpbmcoZSxlKzEpKTtyZXR1cm4gcj9lK3JbMF0ubGVu
Z3RoOi0xfWZ1bmN0aW9uIHJlKG4pe2Zvcih2YXIgdD1uLmxlbmd0aCxlPS0xOysrZTx0OyluW2Vd
WzBdPXRoaXMobltlXVswXSk7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9bltlXTsh
clsxXSh0KTspcj1uWysrZV07cmV0dXJuIHJbMF0odCl9fWZ1bmN0aW9uIHVlKCl7fWZ1bmN0aW9u
IGllKG4sdCxlKXt2YXIgcj1lLnM9bit0LHU9ci1uLGk9ci11O2UudD1uLWkrKHQtdSl9ZnVuY3Rp
b24gb2Uobix0KXtuJiZjYy5oYXNPd25Qcm9wZXJ0eShuLnR5cGUpJiZjY1tuLnR5cGVdKG4sdCl9
ZnVuY3Rpb24gYWUobix0LGUpe3ZhciByLHU9LTEsaT1uLmxlbmd0aC1lO2Zvcih0LmxpbmVTdGFy
dCgpOysrdTxpOylyPW5bdV0sdC5wb2ludChyWzBdLHJbMV0sclsyXSk7dC5saW5lRW5kKCl9ZnVu
Y3Rpb24gY2Uobix0KXt2YXIgZT0tMSxyPW4ubGVuZ3RoO2Zvcih0LnBvbHlnb25TdGFydCgpOysr
ZTxyOylhZShuW2VdLHQsMSk7dC5wb2x5Z29uRW5kKCl9ZnVuY3Rpb24gc2UoKXtmdW5jdGlvbiBu
KG4sdCl7bio9QWEsdD10KkFhLzIrYmEvNDt2YXIgZT1uLXIsbz1lPj0wPzE6LTEsYT1vKmUsYz1N
YXRoLmNvcyh0KSxzPU1hdGguc2luKHQpLGw9aSpzLGY9dSpjK2wqTWF0aC5jb3MoYSksaD1sKm8q
TWF0aC5zaW4oYSk7bGMuYWRkKE1hdGguYXRhbjIoaCxmKSkscj1uLHU9YyxpPXN9dmFyIHQsZSxy
LHUsaTtmYy5wb2ludD1mdW5jdGlvbihvLGEpe2ZjLnBvaW50PW4scj0odD1vKSpBYSx1PU1hdGgu
Y29zKGE9KGU9YSkqQWEvMitiYS80KSxpPU1hdGguc2luKGEpfSxmYy5saW5lRW5kPWZ1bmN0aW9u
KCl7bih0LGUpfX1mdW5jdGlvbiBsZShuKXt2YXIgdD1uWzBdLGU9blsxXSxyPU1hdGguY29zKGUp
O3JldHVybltyKk1hdGguY29zKHQpLHIqTWF0aC5zaW4odCksTWF0aC5zaW4oZSldfWZ1bmN0aW9u
IGZlKG4sdCl7cmV0dXJuIG5bMF0qdFswXStuWzFdKnRbMV0rblsyXSp0WzJdfWZ1bmN0aW9uIGhl
KG4sdCl7cmV0dXJuW25bMV0qdFsyXS1uWzJdKnRbMV0sblsyXSp0WzBdLW5bMF0qdFsyXSxuWzBd
KnRbMV0tblsxXSp0WzBdXX1mdW5jdGlvbiBnZShuLHQpe25bMF0rPXRbMF0sblsxXSs9dFsxXSxu
WzJdKz10WzJdfWZ1bmN0aW9uIHBlKG4sdCl7cmV0dXJuW25bMF0qdCxuWzFdKnQsblsyXSp0XX1m
dW5jdGlvbiB2ZShuKXt2YXIgdD1NYXRoLnNxcnQoblswXSpuWzBdK25bMV0qblsxXStuWzJdKm5b
Ml0pO25bMF0vPXQsblsxXS89dCxuWzJdLz10fWZ1bmN0aW9uIGRlKG4pe3JldHVybltNYXRoLmF0
YW4yKG5bMV0sblswXSksRyhuWzJdKV19ZnVuY3Rpb24gbWUobix0KXtyZXR1cm4gdWEoblswXS10
WzBdKTxrYSYmdWEoblsxXS10WzFdKTxrYX1mdW5jdGlvbiB5ZShuLHQpe24qPUFhO3ZhciBlPU1h
dGguY29zKHQqPUFhKTt4ZShlKk1hdGguY29zKG4pLGUqTWF0aC5zaW4obiksTWF0aC5zaW4odCkp
fWZ1bmN0aW9uIHhlKG4sdCxlKXsrK2hjLHBjKz0obi1wYykvaGMsdmMrPSh0LXZjKS9oYyxkYys9
KGUtZGMpL2hjfWZ1bmN0aW9uIE1lKCl7ZnVuY3Rpb24gbihuLHUpe24qPUFhO3ZhciBpPU1hdGgu
Y29zKHUqPUFhKSxvPWkqTWF0aC5jb3MobiksYT1pKk1hdGguc2luKG4pLGM9TWF0aC5zaW4odSks
cz1NYXRoLmF0YW4yKE1hdGguc3FydCgocz1lKmMtciphKSpzKyhzPXIqby10KmMpKnMrKHM9dCph
LWUqbykqcyksdCpvK2UqYStyKmMpO2djKz1zLG1jKz1zKih0Kyh0PW8pKSx5Yys9cyooZSsoZT1h
KSkseGMrPXMqKHIrKHI9YykpLHhlKHQsZSxyKX12YXIgdCxlLHI7d2MucG9pbnQ9ZnVuY3Rpb24o
dSxpKXt1Kj1BYTt2YXIgbz1NYXRoLmNvcyhpKj1BYSk7dD1vKk1hdGguY29zKHUpLGU9bypNYXRo
LnNpbih1KSxyPU1hdGguc2luKGkpLHdjLnBvaW50PW4seGUodCxlLHIpfX1mdW5jdGlvbiBfZSgp
e3djLnBvaW50PXllfWZ1bmN0aW9uIGJlKCl7ZnVuY3Rpb24gbihuLHQpe24qPUFhO3ZhciBlPU1h
dGguY29zKHQqPUFhKSxvPWUqTWF0aC5jb3MobiksYT1lKk1hdGguc2luKG4pLGM9TWF0aC5zaW4o
dCkscz11KmMtaSphLGw9aSpvLXIqYyxmPXIqYS11Km8saD1NYXRoLnNxcnQocypzK2wqbCtmKmYp
LGc9cipvK3UqYStpKmMscD1oJiYtSihnKS9oLHY9TWF0aC5hdGFuMihoLGcpO01jKz1wKnMsX2Mr
PXAqbCxiYys9cCpmLGdjKz12LG1jKz12KihyKyhyPW8pKSx5Yys9dioodSsodT1hKSkseGMrPXYq
KGkrKGk9YykpLHhlKHIsdSxpKX12YXIgdCxlLHIsdSxpO3djLnBvaW50PWZ1bmN0aW9uKG8sYSl7
dD1vLGU9YSx3Yy5wb2ludD1uLG8qPUFhO3ZhciBjPU1hdGguY29zKGEqPUFhKTtyPWMqTWF0aC5j
b3MobyksdT1jKk1hdGguc2luKG8pLGk9TWF0aC5zaW4oYSkseGUocix1LGkpfSx3Yy5saW5lRW5k
PWZ1bmN0aW9uKCl7bih0LGUpLHdjLmxpbmVFbmQ9X2Usd2MucG9pbnQ9eWV9fWZ1bmN0aW9uIHdl
KCl7cmV0dXJuITB9ZnVuY3Rpb24gU2Uobix0LGUscix1KXt2YXIgaT1bXSxvPVtdO2lmKG4uZm9y
RWFjaChmdW5jdGlvbihuKXtpZighKCh0PW4ubGVuZ3RoLTEpPD0wKSl7dmFyIHQsZT1uWzBdLHI9
blt0XTtpZihtZShlLHIpKXt1LmxpbmVTdGFydCgpO2Zvcih2YXIgYT0wO3Q+YTsrK2EpdS5wb2lu
dCgoZT1uW2FdKVswXSxlWzFdKTtyZXR1cm4gdS5saW5lRW5kKCksdm9pZCAwfXZhciBjPW5ldyBF
ZShlLG4sbnVsbCwhMCkscz1uZXcgRWUoZSxudWxsLGMsITEpO2Mubz1zLGkucHVzaChjKSxvLnB1
c2gocyksYz1uZXcgRWUocixuLG51bGwsITEpLHM9bmV3IEVlKHIsbnVsbCxjLCEwKSxjLm89cyxp
LnB1c2goYyksby5wdXNoKHMpfX0pLG8uc29ydCh0KSxrZShpKSxrZShvKSxpLmxlbmd0aCl7Zm9y
KHZhciBhPTAsYz1lLHM9by5sZW5ndGg7cz5hOysrYSlvW2FdLmU9Yz0hYztmb3IodmFyIGwsZixo
PWlbMF07Oyl7Zm9yKHZhciBnPWgscD0hMDtnLnY7KWlmKChnPWcubik9PT1oKXJldHVybjtsPWcu
eix1LmxpbmVTdGFydCgpO2Rve2lmKGcudj1nLm8udj0hMCxnLmUpe2lmKHApZm9yKHZhciBhPTAs
cz1sLmxlbmd0aDtzPmE7KythKXUucG9pbnQoKGY9bFthXSlbMF0sZlsxXSk7ZWxzZSByKGcueCxn
Lm4ueCwxLHUpO2c9Zy5ufWVsc2V7aWYocCl7bD1nLnAuejtmb3IodmFyIGE9bC5sZW5ndGgtMTth
Pj0wOy0tYSl1LnBvaW50KChmPWxbYV0pWzBdLGZbMV0pfWVsc2UgcihnLngsZy5wLngsLTEsdSk7
Zz1nLnB9Zz1nLm8sbD1nLnoscD0hcH13aGlsZSghZy52KTt1LmxpbmVFbmQoKX19fWZ1bmN0aW9u
IGtlKG4pe2lmKHQ9bi5sZW5ndGgpe2Zvcih2YXIgdCxlLHI9MCx1PW5bMF07KytyPHQ7KXUubj1l
PW5bcl0sZS5wPXUsdT1lO3Uubj1lPW5bMF0sZS5wPXV9fWZ1bmN0aW9uIEVlKG4sdCxlLHIpe3Ro
aXMueD1uLHRoaXMuej10LHRoaXMubz1lLHRoaXMuZT1yLHRoaXMudj0hMSx0aGlzLm49dGhpcy5w
PW51bGx9ZnVuY3Rpb24gQWUobix0LGUscil7cmV0dXJuIGZ1bmN0aW9uKHUsaSl7ZnVuY3Rpb24g
byh0LGUpe3ZhciByPXUodCxlKTtuKHQ9clswXSxlPXJbMV0pJiZpLnBvaW50KHQsZSl9ZnVuY3Rp
b24gYShuLHQpe3ZhciBlPXUobix0KTtkLnBvaW50KGVbMF0sZVsxXSl9ZnVuY3Rpb24gYygpe3ku
cG9pbnQ9YSxkLmxpbmVTdGFydCgpfWZ1bmN0aW9uIHMoKXt5LnBvaW50PW8sZC5saW5lRW5kKCl9
ZnVuY3Rpb24gbChuLHQpe3YucHVzaChbbix0XSk7dmFyIGU9dShuLHQpO00ucG9pbnQoZVswXSxl
WzFdKX1mdW5jdGlvbiBmKCl7TS5saW5lU3RhcnQoKSx2PVtdfWZ1bmN0aW9uIGgoKXtsKHZbMF1b
MF0sdlswXVsxXSksTS5saW5lRW5kKCk7dmFyIG4sdD1NLmNsZWFuKCksZT14LmJ1ZmZlcigpLHI9
ZS5sZW5ndGg7aWYodi5wb3AoKSxwLnB1c2godiksdj1udWxsLHIpaWYoMSZ0KXtuPWVbMF07dmFy
IHUscj1uLmxlbmd0aC0xLG89LTE7aWYocj4wKXtmb3IoX3x8KGkucG9seWdvblN0YXJ0KCksXz0h
MCksaS5saW5lU3RhcnQoKTsrK288cjspaS5wb2ludCgodT1uW29dKVswXSx1WzFdKTtpLmxpbmVF
bmQoKX19ZWxzZSByPjEmJjImdCYmZS5wdXNoKGUucG9wKCkuY29uY2F0KGUuc2hpZnQoKSkpLGcu
cHVzaChlLmZpbHRlcihDZSkpfXZhciBnLHAsdixkPXQoaSksbT11LmludmVydChyWzBdLHJbMV0p
LHk9e3BvaW50Om8sbGluZVN0YXJ0OmMsbGluZUVuZDpzLHBvbHlnb25TdGFydDpmdW5jdGlvbigp
e3kucG9pbnQ9bCx5LmxpbmVTdGFydD1mLHkubGluZUVuZD1oLGc9W10scD1bXX0scG9seWdvbkVu
ZDpmdW5jdGlvbigpe3kucG9pbnQ9byx5LmxpbmVTdGFydD1jLHkubGluZUVuZD1zLGc9Wm8ubWVy
Z2UoZyk7dmFyIG49TGUobSxwKTtnLmxlbmd0aD8oX3x8KGkucG9seWdvblN0YXJ0KCksXz0hMCks
U2UoZyx6ZSxuLGUsaSkpOm4mJihffHwoaS5wb2x5Z29uU3RhcnQoKSxfPSEwKSxpLmxpbmVTdGFy
dCgpLGUobnVsbCxudWxsLDEsaSksaS5saW5lRW5kKCkpLF8mJihpLnBvbHlnb25FbmQoKSxfPSEx
KSxnPXA9bnVsbH0sc3BoZXJlOmZ1bmN0aW9uKCl7aS5wb2x5Z29uU3RhcnQoKSxpLmxpbmVTdGFy
dCgpLGUobnVsbCxudWxsLDEsaSksaS5saW5lRW5kKCksaS5wb2x5Z29uRW5kKCl9fSx4PU5lKCks
TT10KHgpLF89ITE7cmV0dXJuIHl9fWZ1bmN0aW9uIENlKG4pe3JldHVybiBuLmxlbmd0aD4xfWZ1
bmN0aW9uIE5lKCl7dmFyIG4sdD1bXTtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dC5wdXNo
KG49W10pfSxwb2ludDpmdW5jdGlvbih0LGUpe24ucHVzaChbdCxlXSl9LGxpbmVFbmQ6dixidWZm
ZXI6ZnVuY3Rpb24oKXt2YXIgZT10O3JldHVybiB0PVtdLG49bnVsbCxlfSxyZWpvaW46ZnVuY3Rp
b24oKXt0Lmxlbmd0aD4xJiZ0LnB1c2godC5wb3AoKS5jb25jYXQodC5zaGlmdCgpKSl9fX1mdW5j
dGlvbiB6ZShuLHQpe3JldHVybigobj1uLngpWzBdPDA/blsxXS1TYS1rYTpTYS1uWzFdKS0oKHQ9
dC54KVswXTwwP3RbMV0tU2Eta2E6U2EtdFsxXSl9ZnVuY3Rpb24gTGUobix0KXt2YXIgZT1uWzBd
LHI9blsxXSx1PVtNYXRoLnNpbihlKSwtTWF0aC5jb3MoZSksMF0saT0wLG89MDtsYy5yZXNldCgp
O2Zvcih2YXIgYT0wLGM9dC5sZW5ndGg7Yz5hOysrYSl7dmFyIHM9dFthXSxsPXMubGVuZ3RoO2lm
KGwpZm9yKHZhciBmPXNbMF0saD1mWzBdLGc9ZlsxXS8yK2JhLzQscD1NYXRoLnNpbihnKSx2PU1h
dGguY29zKGcpLGQ9MTs7KXtkPT09bCYmKGQ9MCksbj1zW2RdO3ZhciBtPW5bMF0seT1uWzFdLzIr
YmEvNCx4PU1hdGguc2luKHkpLE09TWF0aC5jb3MoeSksXz1tLWgsYj1fPj0wPzE6LTEsdz1iKl8s
Uz13PmJhLGs9cCp4O2lmKGxjLmFkZChNYXRoLmF0YW4yKGsqYipNYXRoLnNpbih3KSx2Kk0raypN
YXRoLmNvcyh3KSkpLGkrPVM/XytiKndhOl8sU15oPj1lXm0+PWUpe3ZhciBFPWhlKGxlKGYpLGxl
KG4pKTt2ZShFKTt2YXIgQT1oZSh1LEUpO3ZlKEEpO3ZhciBDPShTXl8+PTA/LTE6MSkqRyhBWzJd
KTsocj5DfHxyPT09QyYmKEVbMF18fEVbMV0pKSYmKG8rPVNeXz49MD8xOi0xKX1pZighZCsrKWJy
ZWFrO2g9bSxwPXgsdj1NLGY9bn19cmV0dXJuKC1rYT5pfHxrYT5pJiYwPmxjKV4xJm99ZnVuY3Rp
b24gVGUobil7dmFyIHQsZT0wLzAscj0wLzAsdT0wLzA7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlv
bigpe24ubGluZVN0YXJ0KCksdD0xfSxwb2ludDpmdW5jdGlvbihpLG8pe3ZhciBhPWk+MD9iYTot
YmEsYz11YShpLWUpO3VhKGMtYmEpPGthPyhuLnBvaW50KGUscj0ocitvKS8yPjA/U2E6LVNhKSxu
LnBvaW50KHUsciksbi5saW5lRW5kKCksbi5saW5lU3RhcnQoKSxuLnBvaW50KGEsciksbi5wb2lu
dChpLHIpLHQ9MCk6dSE9PWEmJmM+PWJhJiYodWEoZS11KTxrYSYmKGUtPXUqa2EpLHVhKGktYSk8
a2EmJihpLT1hKmthKSxyPXFlKGUscixpLG8pLG4ucG9pbnQodSxyKSxuLmxpbmVFbmQoKSxuLmxp
bmVTdGFydCgpLG4ucG9pbnQoYSxyKSx0PTApLG4ucG9pbnQoZT1pLHI9byksdT1hfSxsaW5lRW5k
OmZ1bmN0aW9uKCl7bi5saW5lRW5kKCksZT1yPTAvMH0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4g
Mi10fX19ZnVuY3Rpb24gcWUobix0LGUscil7dmFyIHUsaSxvPU1hdGguc2luKG4tZSk7cmV0dXJu
IHVhKG8pPmthP01hdGguYXRhbigoTWF0aC5zaW4odCkqKGk9TWF0aC5jb3MocikpKk1hdGguc2lu
KGUpLU1hdGguc2luKHIpKih1PU1hdGguY29zKHQpKSpNYXRoLnNpbihuKSkvKHUqaSpvKSk6KHQr
cikvMn1mdW5jdGlvbiBSZShuLHQsZSxyKXt2YXIgdTtpZihudWxsPT1uKXU9ZSpTYSxyLnBvaW50
KC1iYSx1KSxyLnBvaW50KDAsdSksci5wb2ludChiYSx1KSxyLnBvaW50KGJhLDApLHIucG9pbnQo
YmEsLXUpLHIucG9pbnQoMCwtdSksci5wb2ludCgtYmEsLXUpLHIucG9pbnQoLWJhLDApLHIucG9p
bnQoLWJhLHUpO2Vsc2UgaWYodWEoblswXS10WzBdKT5rYSl7dmFyIGk9blswXTx0WzBdP2JhOi1i
YTt1PWUqaS8yLHIucG9pbnQoLWksdSksci5wb2ludCgwLHUpLHIucG9pbnQoaSx1KX1lbHNlIHIu
cG9pbnQodFswXSx0WzFdKX1mdW5jdGlvbiBEZShuKXtmdW5jdGlvbiB0KG4sdCl7cmV0dXJuIE1h
dGguY29zKG4pKk1hdGguY29zKHQpPml9ZnVuY3Rpb24gZShuKXt2YXIgZSxpLGMscyxsO3JldHVy
bntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtzPWM9ITEsbD0xfSxwb2ludDpmdW5jdGlvbihmLGgpe3Zh
ciBnLHA9W2YsaF0sdj10KGYsaCksZD1vP3Y/MDp1KGYsaCk6dj91KGYrKDA+Zj9iYTotYmEpLGgp
OjA7aWYoIWUmJihzPWM9dikmJm4ubGluZVN0YXJ0KCksdiE9PWMmJihnPXIoZSxwKSwobWUoZSxn
KXx8bWUocCxnKSkmJihwWzBdKz1rYSxwWzFdKz1rYSx2PXQocFswXSxwWzFdKSkpLHYhPT1jKWw9
MCx2PyhuLmxpbmVTdGFydCgpLGc9cihwLGUpLG4ucG9pbnQoZ1swXSxnWzFdKSk6KGc9cihlLHAp
LG4ucG9pbnQoZ1swXSxnWzFdKSxuLmxpbmVFbmQoKSksZT1nO2Vsc2UgaWYoYSYmZSYmb152KXt2
YXIgbTtkJml8fCEobT1yKHAsZSwhMCkpfHwobD0wLG8/KG4ubGluZVN0YXJ0KCksbi5wb2ludCht
WzBdWzBdLG1bMF1bMV0pLG4ucG9pbnQobVsxXVswXSxtWzFdWzFdKSxuLmxpbmVFbmQoKSk6KG4u
cG9pbnQobVsxXVswXSxtWzFdWzFdKSxuLmxpbmVFbmQoKSxuLmxpbmVTdGFydCgpLG4ucG9pbnQo
bVswXVswXSxtWzBdWzFdKSkpfSF2fHxlJiZtZShlLHApfHxuLnBvaW50KHBbMF0scFsxXSksZT1w
LGM9dixpPWR9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtjJiZuLmxpbmVFbmQoKSxlPW51bGx9LGNsZWFu
OmZ1bmN0aW9uKCl7cmV0dXJuIGx8KHMmJmMpPDwxfX19ZnVuY3Rpb24gcihuLHQsZSl7dmFyIHI9
bGUobiksdT1sZSh0KSxvPVsxLDAsMF0sYT1oZShyLHUpLGM9ZmUoYSxhKSxzPWFbMF0sbD1jLXMq
cztpZighbClyZXR1cm4hZSYmbjt2YXIgZj1pKmMvbCxoPS1pKnMvbCxnPWhlKG8sYSkscD1wZShv
LGYpLHY9cGUoYSxoKTtnZShwLHYpO3ZhciBkPWcsbT1mZShwLGQpLHk9ZmUoZCxkKSx4PW0qbS15
KihmZShwLHApLTEpO2lmKCEoMD54KSl7dmFyIE09TWF0aC5zcXJ0KHgpLF89cGUoZCwoLW0tTSkv
eSk7aWYoZ2UoXyxwKSxfPWRlKF8pLCFlKXJldHVybiBfO3ZhciBiLHc9blswXSxTPXRbMF0saz1u
WzFdLEU9dFsxXTt3PlMmJihiPXcsdz1TLFM9Yik7dmFyIEE9Uy13LEM9dWEoQS1iYSk8a2EsTj1D
fHxrYT5BO2lmKCFDJiZrPkUmJihiPWssaz1FLEU9YiksTj9DP2srRT4wXl9bMV08KHVhKF9bMF0t
dyk8a2E/azpFKTprPD1fWzFdJiZfWzFdPD1FOkE+YmFeKHc8PV9bMF0mJl9bMF08PVMpKXt2YXIg
ej1wZShkLCgtbStNKS95KTtyZXR1cm4gZ2UoeixwKSxbXyxkZSh6KV19fX1mdW5jdGlvbiB1KHQs
ZSl7dmFyIHI9bz9uOmJhLW4sdT0wO3JldHVybi1yPnQ/dXw9MTp0PnImJih1fD0yKSwtcj5lP3V8
PTQ6ZT5yJiYodXw9OCksdX12YXIgaT1NYXRoLmNvcyhuKSxvPWk+MCxhPXVhKGkpPmthLGM9c3Io
biw2KkFhKTtyZXR1cm4gQWUodCxlLGMsbz9bMCwtbl06Wy1iYSxuLWJhXSl9ZnVuY3Rpb24gUGUo
bix0LGUscil7cmV0dXJuIGZ1bmN0aW9uKHUpe3ZhciBpLG89dS5hLGE9dS5iLGM9by54LHM9by55
LGw9YS54LGY9YS55LGg9MCxnPTEscD1sLWMsdj1mLXM7aWYoaT1uLWMscHx8IShpPjApKXtpZihp
Lz1wLDA+cCl7aWYoaD5pKXJldHVybjtnPmkmJihnPWkpfWVsc2UgaWYocD4wKXtpZihpPmcpcmV0
dXJuO2k+aCYmKGg9aSl9aWYoaT1lLWMscHx8ISgwPmkpKXtpZihpLz1wLDA+cCl7aWYoaT5nKXJl
dHVybjtpPmgmJihoPWkpfWVsc2UgaWYocD4wKXtpZihoPmkpcmV0dXJuO2c+aSYmKGc9aSl9aWYo
aT10LXMsdnx8IShpPjApKXtpZihpLz12LDA+dil7aWYoaD5pKXJldHVybjtnPmkmJihnPWkpfWVs
c2UgaWYodj4wKXtpZihpPmcpcmV0dXJuO2k+aCYmKGg9aSl9aWYoaT1yLXMsdnx8ISgwPmkpKXtp
ZihpLz12LDA+dil7aWYoaT5nKXJldHVybjtpPmgmJihoPWkpfWVsc2UgaWYodj4wKXtpZihoPmkp
cmV0dXJuO2c+aSYmKGc9aSl9cmV0dXJuIGg+MCYmKHUuYT17eDpjK2gqcCx5OnMraCp2fSksMT5n
JiYodS5iPXt4OmMrZypwLHk6cytnKnZ9KSx1fX19fX19ZnVuY3Rpb24gVWUobix0LGUscil7ZnVu
Y3Rpb24gdShyLHUpe3JldHVybiB1YShyWzBdLW4pPGthP3U+MD8wOjM6dWEoclswXS1lKTxrYT91
PjA/MjoxOnVhKHJbMV0tdCk8a2E/dT4wPzE6MDp1PjA/MzoyfWZ1bmN0aW9uIGkobix0KXtyZXR1
cm4gbyhuLngsdC54KX1mdW5jdGlvbiBvKG4sdCl7dmFyIGU9dShuLDEpLHI9dSh0LDEpO3JldHVy
biBlIT09cj9lLXI6MD09PWU/dFsxXS1uWzFdOjE9PT1lP25bMF0tdFswXToyPT09ZT9uWzFdLXRb
MV06dFswXS1uWzBdfXJldHVybiBmdW5jdGlvbihhKXtmdW5jdGlvbiBjKG4pe2Zvcih2YXIgdD0w
LGU9ZC5sZW5ndGgscj1uWzFdLHU9MDtlPnU7Kyt1KWZvcih2YXIgaSxvPTEsYT1kW3VdLGM9YS5s
ZW5ndGgscz1hWzBdO2M+bzsrK28paT1hW29dLHNbMV08PXI/aVsxXT5yJiZXKHMsaSxuKT4wJiYr
K3Q6aVsxXTw9ciYmVyhzLGksbik8MCYmLS10LHM9aTtyZXR1cm4gMCE9PXR9ZnVuY3Rpb24gcyhp
LGEsYyxzKXt2YXIgbD0wLGY9MDtpZihudWxsPT1pfHwobD11KGksYykpIT09KGY9dShhLGMpKXx8
byhpLGEpPDBeYz4wKXtkbyBzLnBvaW50KDA9PT1sfHwzPT09bD9uOmUsbD4xP3I6dCk7d2hpbGUo
KGw9KGwrYys0KSU0KSE9PWYpfWVsc2Ugcy5wb2ludChhWzBdLGFbMV0pfWZ1bmN0aW9uIGwodSxp
KXtyZXR1cm4gdT49biYmZT49dSYmaT49dCYmcj49aX1mdW5jdGlvbiBmKG4sdCl7bChuLHQpJiZh
LnBvaW50KG4sdCl9ZnVuY3Rpb24gaCgpe04ucG9pbnQ9cCxkJiZkLnB1c2gobT1bXSksUz0hMCx3
PSExLF89Yj0wLzB9ZnVuY3Rpb24gZygpe3YmJihwKHkseCksTSYmdyYmQS5yZWpvaW4oKSx2LnB1
c2goQS5idWZmZXIoKSkpLE4ucG9pbnQ9Zix3JiZhLmxpbmVFbmQoKX1mdW5jdGlvbiBwKG4sdCl7
bj1NYXRoLm1heCgta2MsTWF0aC5taW4oa2MsbikpLHQ9TWF0aC5tYXgoLWtjLE1hdGgubWluKGtj
LHQpKTt2YXIgZT1sKG4sdCk7aWYoZCYmbS5wdXNoKFtuLHRdKSxTKXk9bix4PXQsTT1lLFM9ITEs
ZSYmKGEubGluZVN0YXJ0KCksYS5wb2ludChuLHQpKTtlbHNlIGlmKGUmJncpYS5wb2ludChuLHQp
O2Vsc2V7dmFyIHI9e2E6e3g6Xyx5OmJ9LGI6e3g6bix5OnR9fTtDKHIpPyh3fHwoYS5saW5lU3Rh
cnQoKSxhLnBvaW50KHIuYS54LHIuYS55KSksYS5wb2ludChyLmIueCxyLmIueSksZXx8YS5saW5l
RW5kKCksaz0hMSk6ZSYmKGEubGluZVN0YXJ0KCksYS5wb2ludChuLHQpLGs9ITEpfV89bixiPXQs
dz1lfXZhciB2LGQsbSx5LHgsTSxfLGIsdyxTLGssRT1hLEE9TmUoKSxDPVBlKG4sdCxlLHIpLE49
e3BvaW50OmYsbGluZVN0YXJ0OmgsbGluZUVuZDpnLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2E9
QSx2PVtdLGQ9W10saz0hMH0scG9seWdvbkVuZDpmdW5jdGlvbigpe2E9RSx2PVpvLm1lcmdlKHYp
O3ZhciB0PWMoW24scl0pLGU9ayYmdCx1PXYubGVuZ3RoOyhlfHx1KSYmKGEucG9seWdvblN0YXJ0
KCksZSYmKGEubGluZVN0YXJ0KCkscyhudWxsLG51bGwsMSxhKSxhLmxpbmVFbmQoKSksdSYmU2Uo
dixpLHQscyxhKSxhLnBvbHlnb25FbmQoKSksdj1kPW09bnVsbH19O3JldHVybiBOfX1mdW5jdGlv
biBqZShuLHQpe2Z1bmN0aW9uIGUoZSxyKXtyZXR1cm4gZT1uKGUsciksdChlWzBdLGVbMV0pfXJl
dHVybiBuLmludmVydCYmdC5pbnZlcnQmJihlLmludmVydD1mdW5jdGlvbihlLHIpe3JldHVybiBl
PXQuaW52ZXJ0KGUsciksZSYmbi5pbnZlcnQoZVswXSxlWzFdKX0pLGV9ZnVuY3Rpb24gSGUobil7
dmFyIHQ9MCxlPWJhLzMscj10cihuKSx1PXIodCxlKTtyZXR1cm4gdS5wYXJhbGxlbHM9ZnVuY3Rp
b24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/cih0PW5bMF0qYmEvMTgwLGU9blsxXSpiYS8x
ODApOlsxODAqKHQvYmEpLDE4MCooZS9iYSldfSx1fWZ1bmN0aW9uIEZlKG4sdCl7ZnVuY3Rpb24g
ZShuLHQpe3ZhciBlPU1hdGguc3FydChpLTIqdSpNYXRoLnNpbih0KSkvdTtyZXR1cm5bZSpNYXRo
LnNpbihuKj11KSxvLWUqTWF0aC5jb3MobildfXZhciByPU1hdGguc2luKG4pLHU9KHIrTWF0aC5z
aW4odCkpLzIsaT0xK3IqKDIqdS1yKSxvPU1hdGguc3FydChpKS91O3JldHVybiBlLmludmVydD1m
dW5jdGlvbihuLHQpe3ZhciBlPW8tdDtyZXR1cm5bTWF0aC5hdGFuMihuLGUpL3UsRygoaS0obipu
K2UqZSkqdSp1KS8oMip1KSldfSxlfWZ1bmN0aW9uIE9lKCl7ZnVuY3Rpb24gbihuLHQpe0FjKz11
Km4tcip0LHI9bix1PXR9dmFyIHQsZSxyLHU7VGMucG9pbnQ9ZnVuY3Rpb24oaSxvKXtUYy5wb2lu
dD1uLHQ9cj1pLGU9dT1vfSxUYy5saW5lRW5kPWZ1bmN0aW9uKCl7bih0LGUpfX1mdW5jdGlvbiBZ
ZShuLHQpe0NjPm4mJihDYz1uKSxuPnpjJiYoemM9biksTmM+dCYmKE5jPXQpLHQ+TGMmJihMYz10
KX1mdW5jdGlvbiBJZSgpe2Z1bmN0aW9uIG4obix0KXtvLnB1c2goIk0iLG4sIiwiLHQsaSl9ZnVu
Y3Rpb24gdChuLHQpe28ucHVzaCgiTSIsbiwiLCIsdCksYS5wb2ludD1lfWZ1bmN0aW9uIGUobix0
KXtvLnB1c2goIkwiLG4sIiwiLHQpfWZ1bmN0aW9uIHIoKXthLnBvaW50PW59ZnVuY3Rpb24gdSgp
e28ucHVzaCgiWiIpfXZhciBpPVplKDQuNSksbz1bXSxhPXtwb2ludDpuLGxpbmVTdGFydDpmdW5j
dGlvbigpe2EucG9pbnQ9dH0sbGluZUVuZDpyLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2EubGlu
ZUVuZD11fSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7YS5saW5lRW5kPXIsYS5wb2ludD1ufSxwb2lu
dFJhZGl1czpmdW5jdGlvbihuKXtyZXR1cm4gaT1aZShuKSxhfSxyZXN1bHQ6ZnVuY3Rpb24oKXtp
ZihvLmxlbmd0aCl7dmFyIG49by5qb2luKCIiKTtyZXR1cm4gbz1bXSxufX19O3JldHVybiBhfWZ1
bmN0aW9uIFplKG4pe3JldHVybiJtMCwiK24rImEiK24rIiwiK24rIiAwIDEsMSAwLCIrLTIqbisi
YSIrbisiLCIrbisiIDAgMSwxIDAsIisyKm4rInoifWZ1bmN0aW9uIFZlKG4sdCl7cGMrPW4sdmMr
PXQsKytkY31mdW5jdGlvbiBYZSgpe2Z1bmN0aW9uIG4obixyKXt2YXIgdT1uLXQsaT1yLWUsbz1N
YXRoLnNxcnQodSp1K2kqaSk7bWMrPW8qKHQrbikvMix5Yys9byooZStyKS8yLHhjKz1vLFZlKHQ9
bixlPXIpfXZhciB0LGU7UmMucG9pbnQ9ZnVuY3Rpb24ocix1KXtSYy5wb2ludD1uLFZlKHQ9cixl
PXUpfX1mdW5jdGlvbiAkZSgpe1JjLnBvaW50PVZlfWZ1bmN0aW9uIEJlKCl7ZnVuY3Rpb24gbihu
LHQpe3ZhciBlPW4tcixpPXQtdSxvPU1hdGguc3FydChlKmUraSppKTttYys9byoocituKS8yLHlj
Kz1vKih1K3QpLzIseGMrPW8sbz11Km4tcip0LE1jKz1vKihyK24pLF9jKz1vKih1K3QpLGJjKz0z
Km8sVmUocj1uLHU9dCl9dmFyIHQsZSxyLHU7UmMucG9pbnQ9ZnVuY3Rpb24oaSxvKXtSYy5wb2lu
dD1uLFZlKHQ9cj1pLGU9dT1vKX0sUmMubGluZUVuZD1mdW5jdGlvbigpe24odCxlKX19ZnVuY3Rp
b24gV2Uobil7ZnVuY3Rpb24gdCh0LGUpe24ubW92ZVRvKHQsZSksbi5hcmModCxlLG8sMCx3YSl9
ZnVuY3Rpb24gZSh0LGUpe24ubW92ZVRvKHQsZSksYS5wb2ludD1yfWZ1bmN0aW9uIHIodCxlKXtu
LmxpbmVUbyh0LGUpfWZ1bmN0aW9uIHUoKXthLnBvaW50PXR9ZnVuY3Rpb24gaSgpe24uY2xvc2VQ
YXRoKCl9dmFyIG89NC41LGE9e3BvaW50OnQsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7YS5wb2ludD1l
fSxsaW5lRW5kOnUscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7YS5saW5lRW5kPWl9LHBvbHlnb25F
bmQ6ZnVuY3Rpb24oKXthLmxpbmVFbmQ9dSxhLnBvaW50PXR9LHBvaW50UmFkaXVzOmZ1bmN0aW9u
KG4pe3JldHVybiBvPW4sYX0scmVzdWx0OnZ9O3JldHVybiBhfWZ1bmN0aW9uIEplKG4pe2Z1bmN0
aW9uIHQobil7cmV0dXJuKGE/cjplKShuKX1mdW5jdGlvbiBlKHQpe3JldHVybiBRZSh0LGZ1bmN0
aW9uKGUscil7ZT1uKGUsciksdC5wb2ludChlWzBdLGVbMV0pfSl9ZnVuY3Rpb24gcih0KXtmdW5j
dGlvbiBlKGUscil7ZT1uKGUsciksdC5wb2ludChlWzBdLGVbMV0pfWZ1bmN0aW9uIHIoKXt4PTAv
MCxTLnBvaW50PWksdC5saW5lU3RhcnQoKX1mdW5jdGlvbiBpKGUscil7dmFyIGk9bGUoW2Uscl0p
LG89bihlLHIpO3UoeCxNLHksXyxiLHcseD1vWzBdLE09b1sxXSx5PWUsXz1pWzBdLGI9aVsxXSx3
PWlbMl0sYSx0KSx0LnBvaW50KHgsTSl9ZnVuY3Rpb24gbygpe1MucG9pbnQ9ZSx0LmxpbmVFbmQo
KX1mdW5jdGlvbiBjKCl7cigpLFMucG9pbnQ9cyxTLmxpbmVFbmQ9bH1mdW5jdGlvbiBzKG4sdCl7
aShmPW4saD10KSxnPXgscD1NLHY9XyxkPWIsbT13LFMucG9pbnQ9aX1mdW5jdGlvbiBsKCl7dSh4
LE0seSxfLGIsdyxnLHAsZix2LGQsbSxhLHQpLFMubGluZUVuZD1vLG8oKX12YXIgZixoLGcscCx2
LGQsbSx5LHgsTSxfLGIsdyxTPXtwb2ludDplLGxpbmVTdGFydDpyLGxpbmVFbmQ6byxwb2x5Z29u
U3RhcnQ6ZnVuY3Rpb24oKXt0LnBvbHlnb25TdGFydCgpLFMubGluZVN0YXJ0PWN9LHBvbHlnb25F
bmQ6ZnVuY3Rpb24oKXt0LnBvbHlnb25FbmQoKSxTLmxpbmVTdGFydD1yfX07cmV0dXJuIFN9ZnVu
Y3Rpb24gdSh0LGUscixhLGMscyxsLGYsaCxnLHAsdixkLG0pe3ZhciB5PWwtdCx4PWYtZSxNPXkq
eSt4Kng7aWYoTT40KmkmJmQtLSl7dmFyIF89YStnLGI9YytwLHc9cyt2LFM9TWF0aC5zcXJ0KF8q
XytiKmIrdyp3KSxrPU1hdGguYXNpbih3Lz1TKSxFPXVhKHVhKHcpLTEpPGthfHx1YShyLWgpPGth
PyhyK2gpLzI6TWF0aC5hdGFuMihiLF8pLEE9bihFLGspLEM9QVswXSxOPUFbMV0sej1DLXQsTD1O
LWUsVD14KnoteSpMOyhUKlQvTT5pfHx1YSgoeSp6K3gqTCkvTS0uNSk+LjN8fG8+YSpnK2MqcCtz
KnYpJiYodSh0LGUscixhLGMscyxDLE4sRSxfLz1TLGIvPVMsdyxkLG0pLG0ucG9pbnQoQyxOKSx1
KEMsTixFLF8sYix3LGwsZixoLGcscCx2LGQsbSkpfX12YXIgaT0uNSxvPU1hdGguY29zKDMwKkFh
KSxhPTE2OworcmV0dXJuIHQucHJlY2lzaW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhhPShpPW4qbik+MCYmMTYsdCk6TWF0aC5zcXJ0KGkpfSx0fWZ1bmN0aW9uIEdlKG4p
e3ZhciB0PUplKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oW3QqQ2EsZSpDYV0pfSk7cmV0dXJuIGZ1
bmN0aW9uKG4pe3JldHVybiBlcih0KG4pKX19ZnVuY3Rpb24gS2Uobil7dGhpcy5zdHJlYW09bn1m
dW5jdGlvbiBRZShuLHQpe3JldHVybntwb2ludDp0LHNwaGVyZTpmdW5jdGlvbigpe24uc3BoZXJl
KCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe24ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24o
KXtuLmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7bi5wb2x5Z29uU3RhcnQoKX0s
cG9seWdvbkVuZDpmdW5jdGlvbigpe24ucG9seWdvbkVuZCgpfX19ZnVuY3Rpb24gbnIobil7cmV0
dXJuIHRyKGZ1bmN0aW9uKCl7cmV0dXJuIG59KSgpfWZ1bmN0aW9uIHRyKG4pe2Z1bmN0aW9uIHQo
bil7cmV0dXJuIG49YShuWzBdKkFhLG5bMV0qQWEpLFtuWzBdKmgrYyxzLW5bMV0qaF19ZnVuY3Rp
b24gZShuKXtyZXR1cm4gbj1hLmludmVydCgoblswXS1jKS9oLChzLW5bMV0pL2gpLG4mJltuWzBd
KkNhLG5bMV0qQ2FdfWZ1bmN0aW9uIHIoKXthPWplKG89aXIobSx5LHgpLGkpO3ZhciBuPWkodixk
KTtyZXR1cm4gYz1nLW5bMF0qaCxzPXArblsxXSpoLHUoKX1mdW5jdGlvbiB1KCl7cmV0dXJuIGwm
JihsLnZhbGlkPSExLGw9bnVsbCksdH12YXIgaSxvLGEsYyxzLGwsZj1KZShmdW5jdGlvbihuLHQp
e3JldHVybiBuPWkobix0KSxbblswXSpoK2Mscy1uWzFdKmhdfSksaD0xNTAsZz00ODAscD0yNTAs
dj0wLGQ9MCxtPTAseT0wLHg9MCxNPVNjLF89d3QsYj1udWxsLHc9bnVsbDtyZXR1cm4gdC5zdHJl
YW09ZnVuY3Rpb24obil7cmV0dXJuIGwmJihsLnZhbGlkPSExKSxsPWVyKE0obyxmKF8obikpKSks
bC52YWxpZD0hMCxsfSx0LmNsaXBBbmdsZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oTT1udWxsPT1uPyhiPW4sU2MpOkRlKChiPStuKSpBYSksdSgpKTpifSx0LmNsaXBFeHRl
bnQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9bixfPW4/VWUoblswXVsw
XSxuWzBdWzFdLG5bMV1bMF0sblsxXVsxXSk6d3QsdSgpKTp3fSx0LnNjYWxlPWZ1bmN0aW9uKG4p
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPStuLHIoKSk6aH0sdC50cmFuc2xhdGU9ZnVuY3Rp
b24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9K25bMF0scD0rblsxXSxyKCkpOltnLHBd
fSx0LmNlbnRlcj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj1uWzBdJTM2
MCpBYSxkPW5bMV0lMzYwKkFhLHIoKSk6W3YqQ2EsZCpDYV19LHQucm90YXRlPWZ1bmN0aW9uKG4p
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPW5bMF0lMzYwKkFhLHk9blsxXSUzNjAqQWEseD1u
Lmxlbmd0aD4yP25bMl0lMzYwKkFhOjAscigpKTpbbSpDYSx5KkNhLHgqQ2FdfSxaby5yZWJpbmQo
dCxmLCJwcmVjaXNpb24iKSxmdW5jdGlvbigpe3JldHVybiBpPW4uYXBwbHkodGhpcyxhcmd1bWVu
dHMpLHQuaW52ZXJ0PWkuaW52ZXJ0JiZlLHIoKX19ZnVuY3Rpb24gZXIobil7cmV0dXJuIFFlKG4s
ZnVuY3Rpb24odCxlKXtuLnBvaW50KHQqQWEsZSpBYSl9KX1mdW5jdGlvbiBycihuLHQpe3JldHVy
bltuLHRdfWZ1bmN0aW9uIHVyKG4sdCl7cmV0dXJuW24+YmE/bi13YTotYmE+bj9uK3dhOm4sdF19
ZnVuY3Rpb24gaXIobix0LGUpe3JldHVybiBuP3R8fGU/amUoYXIobiksY3IodCxlKSk6YXIobik6
dHx8ZT9jcih0LGUpOnVyfWZ1bmN0aW9uIG9yKG4pe3JldHVybiBmdW5jdGlvbih0LGUpe3JldHVy
biB0Kz1uLFt0PmJhP3Qtd2E6LWJhPnQ/dCt3YTp0LGVdfX1mdW5jdGlvbiBhcihuKXt2YXIgdD1v
cihuKTtyZXR1cm4gdC5pbnZlcnQ9b3IoLW4pLHR9ZnVuY3Rpb24gY3Iobix0KXtmdW5jdGlvbiBl
KG4sdCl7dmFyIGU9TWF0aC5jb3ModCksYT1NYXRoLmNvcyhuKSplLGM9TWF0aC5zaW4obikqZSxz
PU1hdGguc2luKHQpLGw9cypyK2EqdTtyZXR1cm5bTWF0aC5hdGFuMihjKmktbCpvLGEqci1zKnUp
LEcobCppK2MqbyldfXZhciByPU1hdGguY29zKG4pLHU9TWF0aC5zaW4obiksaT1NYXRoLmNvcyh0
KSxvPU1hdGguc2luKHQpO3JldHVybiBlLmludmVydD1mdW5jdGlvbihuLHQpe3ZhciBlPU1hdGgu
Y29zKHQpLGE9TWF0aC5jb3MobikqZSxjPU1hdGguc2luKG4pKmUscz1NYXRoLnNpbih0KSxsPXMq
aS1jKm87cmV0dXJuW01hdGguYXRhbjIoYyppK3MqbyxhKnIrbCp1KSxHKGwqci1hKnUpXX0sZX1m
dW5jdGlvbiBzcihuLHQpe3ZhciBlPU1hdGguY29zKG4pLHI9TWF0aC5zaW4obik7cmV0dXJuIGZ1
bmN0aW9uKHUsaSxvLGEpe3ZhciBjPW8qdDtudWxsIT11Pyh1PWxyKGUsdSksaT1scihlLGkpLChv
PjA/aT51OnU+aSkmJih1Kz1vKndhKSk6KHU9bitvKndhLGk9bi0uNSpjKTtmb3IodmFyIHMsbD11
O28+MD9sPmk6aT5sO2wtPWMpYS5wb2ludCgocz1kZShbZSwtcipNYXRoLmNvcyhsKSwtcipNYXRo
LnNpbihsKV0pKVswXSxzWzFdKX19ZnVuY3Rpb24gbHIobix0KXt2YXIgZT1sZSh0KTtlWzBdLT1u
LHZlKGUpO3ZhciByPUooLWVbMV0pO3JldHVybigoLWVbMl08MD8tcjpyKSsyKk1hdGguUEkta2Ep
JSgyKk1hdGguUEkpfWZ1bmN0aW9uIGZyKG4sdCxlKXt2YXIgcj1aby5yYW5nZShuLHQta2EsZSku
Y29uY2F0KHQpO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gci5tYXAoZnVuY3Rpb24odCl7cmV0
dXJuW24sdF19KX19ZnVuY3Rpb24gaHIobix0LGUpe3ZhciByPVpvLnJhbmdlKG4sdC1rYSxlKS5j
b25jYXQodCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiByLm1hcChmdW5jdGlvbih0KXtyZXR1
cm5bdCxuXX0pfX1mdW5jdGlvbiBncihuKXtyZXR1cm4gbi5zb3VyY2V9ZnVuY3Rpb24gcHIobil7
cmV0dXJuIG4udGFyZ2V0fWZ1bmN0aW9uIHZyKG4sdCxlLHIpe3ZhciB1PU1hdGguY29zKHQpLGk9
TWF0aC5zaW4odCksbz1NYXRoLmNvcyhyKSxhPU1hdGguc2luKHIpLGM9dSpNYXRoLmNvcyhuKSxz
PXUqTWF0aC5zaW4obiksbD1vKk1hdGguY29zKGUpLGY9bypNYXRoLnNpbihlKSxoPTIqTWF0aC5h
c2luKE1hdGguc3FydCh0dChyLXQpK3Uqbyp0dChlLW4pKSksZz0xL01hdGguc2luKGgpLHA9aD9m
dW5jdGlvbihuKXt2YXIgdD1NYXRoLnNpbihuKj1oKSpnLGU9TWF0aC5zaW4oaC1uKSpnLHI9ZSpj
K3QqbCx1PWUqcyt0KmYsbz1lKmkrdCphO3JldHVybltNYXRoLmF0YW4yKHUscikqQ2EsTWF0aC5h
dGFuMihvLE1hdGguc3FydChyKnIrdSp1KSkqQ2FdfTpmdW5jdGlvbigpe3JldHVybltuKkNhLHQq
Q2FdfTtyZXR1cm4gcC5kaXN0YW5jZT1oLHB9ZnVuY3Rpb24gZHIoKXtmdW5jdGlvbiBuKG4sdSl7
dmFyIGk9TWF0aC5zaW4odSo9QWEpLG89TWF0aC5jb3ModSksYT11YSgobio9QWEpLXQpLGM9TWF0
aC5jb3MoYSk7RGMrPU1hdGguYXRhbjIoTWF0aC5zcXJ0KChhPW8qTWF0aC5zaW4oYSkpKmErKGE9
cippLWUqbypjKSphKSxlKmkrcipvKmMpLHQ9bixlPWkscj1vfXZhciB0LGUscjtQYy5wb2ludD1m
dW5jdGlvbih1LGkpe3Q9dSpBYSxlPU1hdGguc2luKGkqPUFhKSxyPU1hdGguY29zKGkpLFBjLnBv
aW50PW59LFBjLmxpbmVFbmQ9ZnVuY3Rpb24oKXtQYy5wb2ludD1QYy5saW5lRW5kPXZ9fWZ1bmN0
aW9uIG1yKG4sdCl7ZnVuY3Rpb24gZSh0LGUpe3ZhciByPU1hdGguY29zKHQpLHU9TWF0aC5jb3Mo
ZSksaT1uKHIqdSk7cmV0dXJuW2kqdSpNYXRoLnNpbih0KSxpKk1hdGguc2luKGUpXX1yZXR1cm4g
ZS5pbnZlcnQ9ZnVuY3Rpb24obixlKXt2YXIgcj1NYXRoLnNxcnQobipuK2UqZSksdT10KHIpLGk9
TWF0aC5zaW4odSksbz1NYXRoLmNvcyh1KTtyZXR1cm5bTWF0aC5hdGFuMihuKmkscipvKSxNYXRo
LmFzaW4ociYmZSppL3IpXX0sZX1mdW5jdGlvbiB5cihuLHQpe2Z1bmN0aW9uIGUobix0KXtvPjA/
LVNhK2thPnQmJih0PS1TYStrYSk6dD5TYS1rYSYmKHQ9U2Eta2EpO3ZhciBlPW8vTWF0aC5wb3co
dSh0KSxpKTtyZXR1cm5bZSpNYXRoLnNpbihpKm4pLG8tZSpNYXRoLmNvcyhpKm4pXX12YXIgcj1N
YXRoLmNvcyhuKSx1PWZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnRhbihiYS80K24vMil9LGk9bj09
PXQ/TWF0aC5zaW4obik6TWF0aC5sb2coci9NYXRoLmNvcyh0KSkvTWF0aC5sb2codSh0KS91KG4p
KSxvPXIqTWF0aC5wb3codShuKSxpKS9pO3JldHVybiBpPyhlLmludmVydD1mdW5jdGlvbihuLHQp
e3ZhciBlPW8tdCxyPUIoaSkqTWF0aC5zcXJ0KG4qbitlKmUpO3JldHVybltNYXRoLmF0YW4yKG4s
ZSkvaSwyKk1hdGguYXRhbihNYXRoLnBvdyhvL3IsMS9pKSktU2FdfSxlKTpNcn1mdW5jdGlvbiB4
cihuLHQpe2Z1bmN0aW9uIGUobix0KXt2YXIgZT1pLXQ7cmV0dXJuW2UqTWF0aC5zaW4odSpuKSxp
LWUqTWF0aC5jb3ModSpuKV19dmFyIHI9TWF0aC5jb3MobiksdT1uPT09dD9NYXRoLnNpbihuKToo
ci1NYXRoLmNvcyh0KSkvKHQtbiksaT1yL3UrbjtyZXR1cm4gdWEodSk8a2E/cnI6KGUuaW52ZXJ0
PWZ1bmN0aW9uKG4sdCl7dmFyIGU9aS10O3JldHVybltNYXRoLmF0YW4yKG4sZSkvdSxpLUIodSkq
TWF0aC5zcXJ0KG4qbitlKmUpXX0sZSl9ZnVuY3Rpb24gTXIobix0KXtyZXR1cm5bbixNYXRoLmxv
ZyhNYXRoLnRhbihiYS80K3QvMikpXX1mdW5jdGlvbiBfcihuKXt2YXIgdCxlPW5yKG4pLHI9ZS5z
Y2FsZSx1PWUudHJhbnNsYXRlLGk9ZS5jbGlwRXh0ZW50O3JldHVybiBlLnNjYWxlPWZ1bmN0aW9u
KCl7dmFyIG49ci5hcHBseShlLGFyZ3VtZW50cyk7cmV0dXJuIG49PT1lP3Q/ZS5jbGlwRXh0ZW50
KG51bGwpOmU6bn0sZS50cmFuc2xhdGU9ZnVuY3Rpb24oKXt2YXIgbj11LmFwcGx5KGUsYXJndW1l
bnRzKTtyZXR1cm4gbj09PWU/dD9lLmNsaXBFeHRlbnQobnVsbCk6ZTpufSxlLmNsaXBFeHRlbnQ9
ZnVuY3Rpb24obil7dmFyIG89aS5hcHBseShlLGFyZ3VtZW50cyk7aWYobz09PWUpe2lmKHQ9bnVs
bD09bil7dmFyIGE9YmEqcigpLGM9dSgpO2koW1tjWzBdLWEsY1sxXS1hXSxbY1swXSthLGNbMV0r
YV1dKX19ZWxzZSB0JiYobz1udWxsKTtyZXR1cm4gb30sZS5jbGlwRXh0ZW50KG51bGwpfWZ1bmN0
aW9uIGJyKG4sdCl7cmV0dXJuW01hdGgubG9nKE1hdGgudGFuKGJhLzQrdC8yKSksLW5dfWZ1bmN0
aW9uIHdyKG4pe3JldHVybiBuWzBdfWZ1bmN0aW9uIFNyKG4pe3JldHVybiBuWzFdfWZ1bmN0aW9u
IGtyKG4pe2Zvcih2YXIgdD1uLmxlbmd0aCxlPVswLDFdLHI9Mix1PTI7dD51O3UrKyl7Zm9yKDty
PjEmJlcobltlW3ItMl1dLG5bZVtyLTFdXSxuW3VdKTw9MDspLS1yO2VbcisrXT11fXJldHVybiBl
LnNsaWNlKDAscil9ZnVuY3Rpb24gRXIobix0KXtyZXR1cm4gblswXS10WzBdfHxuWzFdLXRbMV19
ZnVuY3Rpb24gQXIobix0LGUpe3JldHVybihlWzBdLXRbMF0pKihuWzFdLXRbMV0pPChlWzFdLXRb
MV0pKihuWzBdLXRbMF0pfWZ1bmN0aW9uIENyKG4sdCxlLHIpe3ZhciB1PW5bMF0saT1lWzBdLG89
dFswXS11LGE9clswXS1pLGM9blsxXSxzPWVbMV0sbD10WzFdLWMsZj1yWzFdLXMsaD0oYSooYy1z
KS1mKih1LWkpKS8oZipvLWEqbCk7cmV0dXJuW3UraCpvLGMraCpsXX1mdW5jdGlvbiBOcihuKXt2
YXIgdD1uWzBdLGU9bltuLmxlbmd0aC0xXTtyZXR1cm4hKHRbMF0tZVswXXx8dFsxXS1lWzFdKX1m
dW5jdGlvbiB6cigpe0dyKHRoaXMpLHRoaXMuZWRnZT10aGlzLnNpdGU9dGhpcy5jaXJjbGU9bnVs
bH1mdW5jdGlvbiBMcihuKXt2YXIgdD1CYy5wb3AoKXx8bmV3IHpyO3JldHVybiB0LnNpdGU9bix0
fWZ1bmN0aW9uIFRyKG4pe1lyKG4pLFZjLnJlbW92ZShuKSxCYy5wdXNoKG4pLEdyKG4pfWZ1bmN0
aW9uIHFyKG4pe3ZhciB0PW4uY2lyY2xlLGU9dC54LHI9dC5jeSx1PXt4OmUseTpyfSxpPW4uUCxv
PW4uTixhPVtuXTtUcihuKTtmb3IodmFyIGM9aTtjLmNpcmNsZSYmdWEoZS1jLmNpcmNsZS54KTxr
YSYmdWEoci1jLmNpcmNsZS5jeSk8a2E7KWk9Yy5QLGEudW5zaGlmdChjKSxUcihjKSxjPWk7YS51
bnNoaWZ0KGMpLFlyKGMpO2Zvcih2YXIgcz1vO3MuY2lyY2xlJiZ1YShlLXMuY2lyY2xlLngpPGth
JiZ1YShyLXMuY2lyY2xlLmN5KTxrYTspbz1zLk4sYS5wdXNoKHMpLFRyKHMpLHM9bzthLnB1c2go
cyksWXIocyk7dmFyIGwsZj1hLmxlbmd0aDtmb3IobD0xO2Y+bDsrK2wpcz1hW2xdLGM9YVtsLTFd
LEJyKHMuZWRnZSxjLnNpdGUscy5zaXRlLHUpO2M9YVswXSxzPWFbZi0xXSxzLmVkZ2U9WHIoYy5z
aXRlLHMuc2l0ZSxudWxsLHUpLE9yKGMpLE9yKHMpfWZ1bmN0aW9uIFJyKG4pe2Zvcih2YXIgdCxl
LHIsdSxpPW4ueCxvPW4ueSxhPVZjLl87YTspaWYocj1EcihhLG8pLWkscj5rYSlhPWEuTDtlbHNl
e2lmKHU9aS1QcihhLG8pLCEodT5rYSkpe3I+LWthPyh0PWEuUCxlPWEpOnU+LWthPyh0PWEsZT1h
Lk4pOnQ9ZT1hO2JyZWFrfWlmKCFhLlIpe3Q9YTticmVha31hPWEuUn12YXIgYz1McihuKTtpZihW
Yy5pbnNlcnQodCxjKSx0fHxlKXtpZih0PT09ZSlyZXR1cm4gWXIodCksZT1Mcih0LnNpdGUpLFZj
Lmluc2VydChjLGUpLGMuZWRnZT1lLmVkZ2U9WHIodC5zaXRlLGMuc2l0ZSksT3IodCksT3IoZSks
dm9pZCAwO2lmKCFlKXJldHVybiBjLmVkZ2U9WHIodC5zaXRlLGMuc2l0ZSksdm9pZCAwO1lyKHQp
LFlyKGUpO3ZhciBzPXQuc2l0ZSxsPXMueCxmPXMueSxoPW4ueC1sLGc9bi55LWYscD1lLnNpdGUs
dj1wLngtbCxkPXAueS1mLG09MiooaCpkLWcqdikseT1oKmgrZypnLHg9dip2K2QqZCxNPXt4Oihk
KnktZyp4KS9tK2wseTooaCp4LXYqeSkvbStmfTtCcihlLmVkZ2UscyxwLE0pLGMuZWRnZT1Ycihz
LG4sbnVsbCxNKSxlLmVkZ2U9WHIobixwLG51bGwsTSksT3IodCksT3IoZSl9fWZ1bmN0aW9uIERy
KG4sdCl7dmFyIGU9bi5zaXRlLHI9ZS54LHU9ZS55LGk9dS10O2lmKCFpKXJldHVybiByO3ZhciBv
PW4uUDtpZighbylyZXR1cm4tMS8wO2U9by5zaXRlO3ZhciBhPWUueCxjPWUueSxzPWMtdDtpZigh
cylyZXR1cm4gYTt2YXIgbD1hLXIsZj0xL2ktMS9zLGg9bC9zO3JldHVybiBmPygtaCtNYXRoLnNx
cnQoaCpoLTIqZioobCpsLygtMipzKS1jK3MvMit1LWkvMikpKS9mK3I6KHIrYSkvMn1mdW5jdGlv
biBQcihuLHQpe3ZhciBlPW4uTjtpZihlKXJldHVybiBEcihlLHQpO3ZhciByPW4uc2l0ZTtyZXR1
cm4gci55PT09dD9yLng6MS8wfWZ1bmN0aW9uIFVyKG4pe3RoaXMuc2l0ZT1uLHRoaXMuZWRnZXM9
W119ZnVuY3Rpb24ganIobil7Zm9yKHZhciB0LGUscix1LGksbyxhLGMscyxsLGY9blswXVswXSxo
PW5bMV1bMF0sZz1uWzBdWzFdLHA9blsxXVsxXSx2PVpjLGQ9di5sZW5ndGg7ZC0tOylpZihpPXZb
ZF0saSYmaS5wcmVwYXJlKCkpZm9yKGE9aS5lZGdlcyxjPWEubGVuZ3RoLG89MDtjPm87KWw9YVtv
XS5lbmQoKSxyPWwueCx1PWwueSxzPWFbKytvJWNdLnN0YXJ0KCksdD1zLngsZT1zLnksKHVhKHIt
dCk+a2F8fHVhKHUtZSk+a2EpJiYoYS5zcGxpY2UobywwLG5ldyBXcigkcihpLnNpdGUsbCx1YShy
LWYpPGthJiZwLXU+a2E/e3g6Zix5OnVhKHQtZik8a2E/ZTpwfTp1YSh1LXApPGthJiZoLXI+a2E/
e3g6dWEoZS1wKTxrYT90OmgseTpwfTp1YShyLWgpPGthJiZ1LWc+a2E/e3g6aCx5OnVhKHQtaCk8
a2E/ZTpnfTp1YSh1LWcpPGthJiZyLWY+a2E/e3g6dWEoZS1nKTxrYT90OmYseTpnfTpudWxsKSxp
LnNpdGUsbnVsbCkpLCsrYyl9ZnVuY3Rpb24gSHIobix0KXtyZXR1cm4gdC5hbmdsZS1uLmFuZ2xl
fWZ1bmN0aW9uIEZyKCl7R3IodGhpcyksdGhpcy54PXRoaXMueT10aGlzLmFyYz10aGlzLnNpdGU9
dGhpcy5jeT1udWxsfWZ1bmN0aW9uIE9yKG4pe3ZhciB0PW4uUCxlPW4uTjtpZih0JiZlKXt2YXIg
cj10LnNpdGUsdT1uLnNpdGUsaT1lLnNpdGU7aWYociE9PWkpe3ZhciBvPXUueCxhPXUueSxjPXIu
eC1vLHM9ci55LWEsbD1pLngtbyxmPWkueS1hLGg9MiooYypmLXMqbCk7aWYoIShoPj0tRWEpKXt2
YXIgZz1jKmMrcypzLHA9bCpsK2YqZix2PShmKmctcypwKS9oLGQ9KGMqcC1sKmcpL2gsZj1kK2Es
bT1XYy5wb3AoKXx8bmV3IEZyO20uYXJjPW4sbS5zaXRlPXUsbS54PXYrbyxtLnk9ZitNYXRoLnNx
cnQodip2K2QqZCksbS5jeT1mLG4uY2lyY2xlPW07Zm9yKHZhciB5PW51bGwseD0kYy5fO3g7KWlm
KG0ueTx4Lnl8fG0ueT09PXgueSYmbS54PD14Lngpe2lmKCF4Lkwpe3k9eC5QO2JyZWFrfXg9eC5M
fWVsc2V7aWYoIXguUil7eT14O2JyZWFrfXg9eC5SfSRjLmluc2VydCh5LG0pLHl8fChYYz1tKX19
fX1mdW5jdGlvbiBZcihuKXt2YXIgdD1uLmNpcmNsZTt0JiYodC5QfHwoWGM9dC5OKSwkYy5yZW1v
dmUodCksV2MucHVzaCh0KSxHcih0KSxuLmNpcmNsZT1udWxsKX1mdW5jdGlvbiBJcihuKXtmb3Io
dmFyIHQsZT1JYyxyPVBlKG5bMF1bMF0sblswXVsxXSxuWzFdWzBdLG5bMV1bMV0pLHU9ZS5sZW5n
dGg7dS0tOyl0PWVbdV0sKCFacih0LG4pfHwhcih0KXx8dWEodC5hLngtdC5iLngpPGthJiZ1YSh0
LmEueS10LmIueSk8a2EpJiYodC5hPXQuYj1udWxsLGUuc3BsaWNlKHUsMSkpfWZ1bmN0aW9uIFpy
KG4sdCl7dmFyIGU9bi5iO2lmKGUpcmV0dXJuITA7dmFyIHIsdSxpPW4uYSxvPXRbMF1bMF0sYT10
WzFdWzBdLGM9dFswXVsxXSxzPXRbMV1bMV0sbD1uLmwsZj1uLnIsaD1sLngsZz1sLnkscD1mLngs
dj1mLnksZD0oaCtwKS8yLG09KGcrdikvMjtpZih2PT09Zyl7aWYobz5kfHxkPj1hKXJldHVybjtp
ZihoPnApe2lmKGkpe2lmKGkueT49cylyZXR1cm59ZWxzZSBpPXt4OmQseTpjfTtlPXt4OmQseTpz
fX1lbHNle2lmKGkpe2lmKGkueTxjKXJldHVybn1lbHNlIGk9e3g6ZCx5OnN9O2U9e3g6ZCx5OmN9
fX1lbHNlIGlmKHI9KGgtcCkvKHYtZyksdT1tLXIqZCwtMT5yfHxyPjEpaWYoaD5wKXtpZihpKXtp
ZihpLnk+PXMpcmV0dXJufWVsc2UgaT17eDooYy11KS9yLHk6Y307ZT17eDoocy11KS9yLHk6c319
ZWxzZXtpZihpKXtpZihpLnk8YylyZXR1cm59ZWxzZSBpPXt4OihzLXUpL3IseTpzfTtlPXt4Oihj
LXUpL3IseTpjfX1lbHNlIGlmKHY+Zyl7aWYoaSl7aWYoaS54Pj1hKXJldHVybn1lbHNlIGk9e3g6
byx5OnIqbyt1fTtlPXt4OmEseTpyKmErdX19ZWxzZXtpZihpKXtpZihpLng8bylyZXR1cm59ZWxz
ZSBpPXt4OmEseTpyKmErdX07ZT17eDpvLHk6cipvK3V9fXJldHVybiBuLmE9aSxuLmI9ZSwhMH1m
dW5jdGlvbiBWcihuLHQpe3RoaXMubD1uLHRoaXMucj10LHRoaXMuYT10aGlzLmI9bnVsbH1mdW5j
dGlvbiBYcihuLHQsZSxyKXt2YXIgdT1uZXcgVnIobix0KTtyZXR1cm4gSWMucHVzaCh1KSxlJiZC
cih1LG4sdCxlKSxyJiZCcih1LHQsbixyKSxaY1tuLmldLmVkZ2VzLnB1c2gobmV3IFdyKHUsbix0
KSksWmNbdC5pXS5lZGdlcy5wdXNoKG5ldyBXcih1LHQsbikpLHV9ZnVuY3Rpb24gJHIobix0LGUp
e3ZhciByPW5ldyBWcihuLG51bGwpO3JldHVybiByLmE9dCxyLmI9ZSxJYy5wdXNoKHIpLHJ9ZnVu
Y3Rpb24gQnIobix0LGUscil7bi5hfHxuLmI/bi5sPT09ZT9uLmI9cjpuLmE9cjoobi5hPXIsbi5s
PXQsbi5yPWUpfWZ1bmN0aW9uIFdyKG4sdCxlKXt2YXIgcj1uLmEsdT1uLmI7dGhpcy5lZGdlPW4s
dGhpcy5zaXRlPXQsdGhpcy5hbmdsZT1lP01hdGguYXRhbjIoZS55LXQueSxlLngtdC54KTpuLmw9
PT10P01hdGguYXRhbjIodS54LXIueCxyLnktdS55KTpNYXRoLmF0YW4yKHIueC11LngsdS55LXIu
eSl9ZnVuY3Rpb24gSnIoKXt0aGlzLl89bnVsbH1mdW5jdGlvbiBHcihuKXtuLlU9bi5DPW4uTD1u
LlI9bi5QPW4uTj1udWxsfWZ1bmN0aW9uIEtyKG4sdCl7dmFyIGU9dCxyPXQuUix1PWUuVTt1P3Uu
TD09PWU/dS5MPXI6dS5SPXI6bi5fPXIsci5VPXUsZS5VPXIsZS5SPXIuTCxlLlImJihlLlIuVT1l
KSxyLkw9ZX1mdW5jdGlvbiBRcihuLHQpe3ZhciBlPXQscj10LkwsdT1lLlU7dT91Lkw9PT1lP3Uu
TD1yOnUuUj1yOm4uXz1yLHIuVT11LGUuVT1yLGUuTD1yLlIsZS5MJiYoZS5MLlU9ZSksci5SPWV9
ZnVuY3Rpb24gbnUobil7Zm9yKDtuLkw7KW49bi5MO3JldHVybiBufWZ1bmN0aW9uIHR1KG4sdCl7
dmFyIGUscix1LGk9bi5zb3J0KGV1KS5wb3AoKTtmb3IoSWM9W10sWmM9bmV3IEFycmF5KG4ubGVu
Z3RoKSxWYz1uZXcgSnIsJGM9bmV3IEpyOzspaWYodT1YYyxpJiYoIXV8fGkueTx1Lnl8fGkueT09
PXUueSYmaS54PHUueCkpKGkueCE9PWV8fGkueSE9PXIpJiYoWmNbaS5pXT1uZXcgVXIoaSksUnIo
aSksZT1pLngscj1pLnkpLGk9bi5wb3AoKTtlbHNle2lmKCF1KWJyZWFrO3FyKHUuYXJjKX10JiYo
SXIodCksanIodCkpO3ZhciBvPXtjZWxsczpaYyxlZGdlczpJY307cmV0dXJuIFZjPSRjPUljPVpj
PW51bGwsb31mdW5jdGlvbiBldShuLHQpe3JldHVybiB0Lnktbi55fHx0Lngtbi54fWZ1bmN0aW9u
IHJ1KG4sdCxlKXtyZXR1cm4obi54LWUueCkqKHQueS1uLnkpLShuLngtdC54KSooZS55LW4ueSl9
ZnVuY3Rpb24gdXUobil7cmV0dXJuIG4ueH1mdW5jdGlvbiBpdShuKXtyZXR1cm4gbi55fWZ1bmN0
aW9uIG91KCl7cmV0dXJue2xlYWY6ITAsbm9kZXM6W10scG9pbnQ6bnVsbCx4Om51bGwseTpudWxs
fX1mdW5jdGlvbiBhdShuLHQsZSxyLHUsaSl7aWYoIW4odCxlLHIsdSxpKSl7dmFyIG89LjUqKGUr
dSksYT0uNSoocitpKSxjPXQubm9kZXM7Y1swXSYmYXUobixjWzBdLGUscixvLGEpLGNbMV0mJmF1
KG4sY1sxXSxvLHIsdSxhKSxjWzJdJiZhdShuLGNbMl0sZSxhLG8saSksY1szXSYmYXUobixjWzNd
LG8sYSx1LGkpfX1mdW5jdGlvbiBjdShuLHQpe249Wm8ucmdiKG4pLHQ9Wm8ucmdiKHQpO3ZhciBl
PW4ucixyPW4uZyx1PW4uYixpPXQuci1lLG89dC5nLXIsYT10LmItdTtyZXR1cm4gZnVuY3Rpb24o
bil7cmV0dXJuIiMiK2R0KE1hdGgucm91bmQoZStpKm4pKStkdChNYXRoLnJvdW5kKHIrbypuKSkr
ZHQoTWF0aC5yb3VuZCh1K2EqbikpfX1mdW5jdGlvbiBzdShuLHQpe3ZhciBlLHI9e30sdT17fTtm
b3IoZSBpbiBuKWUgaW4gdD9yW2VdPWh1KG5bZV0sdFtlXSk6dVtlXT1uW2VdO2ZvcihlIGluIHQp
ZSBpbiBufHwodVtlXT10W2VdKTtyZXR1cm4gZnVuY3Rpb24obil7Zm9yKGUgaW4gcil1W2VdPXJb
ZV0obik7cmV0dXJuIHV9fWZ1bmN0aW9uIGx1KG4sdCl7cmV0dXJuIHQtPW49K24sZnVuY3Rpb24o
ZSl7cmV0dXJuIG4rdCplfX1mdW5jdGlvbiBmdShuLHQpe3ZhciBlLHIsdSxpPUdjLmxhc3RJbmRl
eD1LYy5sYXN0SW5kZXg9MCxvPS0xLGE9W10sYz1bXTtmb3Iobis9IiIsdCs9IiI7KGU9R2MuZXhl
YyhuKSkmJihyPUtjLmV4ZWModCkpOykodT1yLmluZGV4KT5pJiYodT10LnN1YnN0cmluZyhpLHUp
LGFbb10/YVtvXSs9dTphWysrb109dSksKGU9ZVswXSk9PT0ocj1yWzBdKT9hW29dP2Fbb10rPXI6
YVsrK29dPXI6KGFbKytvXT1udWxsLGMucHVzaCh7aTpvLHg6bHUoZSxyKX0pKSxpPUtjLmxhc3RJ
bmRleDtyZXR1cm4gaTx0Lmxlbmd0aCYmKHU9dC5zdWJzdHJpbmcoaSksYVtvXT9hW29dKz11OmFb
KytvXT11KSxhLmxlbmd0aDwyP2NbMF0/KHQ9Y1swXS54LGZ1bmN0aW9uKG4pe3JldHVybiB0KG4p
KyIifSk6ZnVuY3Rpb24oKXtyZXR1cm4gdH06KHQ9Yy5sZW5ndGgsZnVuY3Rpb24obil7Zm9yKHZh
ciBlLHI9MDt0PnI7KytyKWFbKGU9Y1tyXSkuaV09ZS54KG4pO3JldHVybiBhLmpvaW4oIiIpfSl9
ZnVuY3Rpb24gaHUobix0KXtmb3IodmFyIGUscj1aby5pbnRlcnBvbGF0b3JzLmxlbmd0aDstLXI+
PTAmJiEoZT1aby5pbnRlcnBvbGF0b3JzW3JdKG4sdCkpOyk7cmV0dXJuIGV9ZnVuY3Rpb24gZ3Uo
bix0KXt2YXIgZSxyPVtdLHU9W10saT1uLmxlbmd0aCxvPXQubGVuZ3RoLGE9TWF0aC5taW4obi5s
ZW5ndGgsdC5sZW5ndGgpO2ZvcihlPTA7YT5lOysrZSlyLnB1c2goaHUobltlXSx0W2VdKSk7Zm9y
KDtpPmU7KytlKXVbZV09bltlXTtmb3IoO28+ZTsrK2UpdVtlXT10W2VdO3JldHVybiBmdW5jdGlv
bihuKXtmb3IoZT0wO2E+ZTsrK2UpdVtlXT1yW2VdKG4pO3JldHVybiB1fX1mdW5jdGlvbiBwdShu
KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIDA+PXQ/MDp0Pj0xPzE6bih0KX19ZnVuY3Rpb24g
dnUobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiAxLW4oMS10KX19ZnVuY3Rpb24gZHUobil7
cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybi41KiguNT50P24oMip0KToyLW4oMi0yKnQpKX19ZnVu
Y3Rpb24gbXUobil7cmV0dXJuIG4qbn1mdW5jdGlvbiB5dShuKXtyZXR1cm4gbipuKm59ZnVuY3Rp
b24geHUobil7aWYoMD49bilyZXR1cm4gMDtpZihuPj0xKXJldHVybiAxO3ZhciB0PW4qbixlPXQq
bjtyZXR1cm4gNCooLjU+bj9lOjMqKG4tdCkrZS0uNzUpfWZ1bmN0aW9uIE11KG4pe3JldHVybiBm
dW5jdGlvbih0KXtyZXR1cm4gTWF0aC5wb3codCxuKX19ZnVuY3Rpb24gX3Uobil7cmV0dXJuIDEt
TWF0aC5jb3MobipTYSl9ZnVuY3Rpb24gYnUobil7cmV0dXJuIE1hdGgucG93KDIsMTAqKG4tMSkp
fWZ1bmN0aW9uIHd1KG4pe3JldHVybiAxLU1hdGguc3FydCgxLW4qbil9ZnVuY3Rpb24gU3Uobix0
KXt2YXIgZTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyJiYodD0uNDUpLGFyZ3VtZW50cy5sZW5n
dGg/ZT10L3dhKk1hdGguYXNpbigxL24pOihuPTEsZT10LzQpLGZ1bmN0aW9uKHIpe3JldHVybiAx
K24qTWF0aC5wb3coMiwtMTAqcikqTWF0aC5zaW4oKHItZSkqd2EvdCl9fWZ1bmN0aW9uIGt1KG4p
e3JldHVybiBufHwobj0xLjcwMTU4KSxmdW5jdGlvbih0KXtyZXR1cm4gdCp0KigobisxKSp0LW4p
fX1mdW5jdGlvbiBFdShuKXtyZXR1cm4gMS8yLjc1Pm4/Ny41NjI1Km4qbjoyLzIuNzU+bj83LjU2
MjUqKG4tPTEuNS8yLjc1KSpuKy43NToyLjUvMi43NT5uPzcuNTYyNSoobi09Mi4yNS8yLjc1KSpu
Ky45Mzc1OjcuNTYyNSoobi09Mi42MjUvMi43NSkqbisuOTg0Mzc1fWZ1bmN0aW9uIEF1KG4sdCl7
bj1aby5oY2wobiksdD1aby5oY2wodCk7dmFyIGU9bi5oLHI9bi5jLHU9bi5sLGk9dC5oLWUsbz10
LmMtcixhPXQubC11O3JldHVybiBpc05hTihvKSYmKG89MCxyPWlzTmFOKHIpP3QuYzpyKSxpc05h
TihpKT8oaT0wLGU9aXNOYU4oZSk/dC5oOmUpOmk+MTgwP2ktPTM2MDotMTgwPmkmJihpKz0zNjAp
LGZ1bmN0aW9uKG4pe3JldHVybiBvdChlK2kqbixyK28qbix1K2EqbikrIiJ9fWZ1bmN0aW9uIEN1
KG4sdCl7bj1aby5oc2wobiksdD1aby5oc2wodCk7dmFyIGU9bi5oLHI9bi5zLHU9bi5sLGk9dC5o
LWUsbz10LnMtcixhPXQubC11O3JldHVybiBpc05hTihvKSYmKG89MCxyPWlzTmFOKHIpP3Quczpy
KSxpc05hTihpKT8oaT0wLGU9aXNOYU4oZSk/dC5oOmUpOmk+MTgwP2ktPTM2MDotMTgwPmkmJihp
Kz0zNjApLGZ1bmN0aW9uKG4pe3JldHVybiB1dChlK2kqbixyK28qbix1K2EqbikrIiJ9fWZ1bmN0
aW9uIE51KG4sdCl7bj1aby5sYWIobiksdD1aby5sYWIodCk7dmFyIGU9bi5sLHI9bi5hLHU9bi5i
LGk9dC5sLWUsbz10LmEtcixhPXQuYi11O3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gY3QoZStp
Km4scitvKm4sdSthKm4pKyIifX1mdW5jdGlvbiB6dShuLHQpe3JldHVybiB0LT1uLGZ1bmN0aW9u
KGUpe3JldHVybiBNYXRoLnJvdW5kKG4rdCplKX19ZnVuY3Rpb24gTHUobil7dmFyIHQ9W24uYSxu
LmJdLGU9W24uYyxuLmRdLHI9cXUodCksdT1UdSh0LGUpLGk9cXUoUnUoZSx0LC11KSl8fDA7dFsw
XSplWzFdPGVbMF0qdFsxXSYmKHRbMF0qPS0xLHRbMV0qPS0xLHIqPS0xLHUqPS0xKSx0aGlzLnJv
dGF0ZT0ocj9NYXRoLmF0YW4yKHRbMV0sdFswXSk6TWF0aC5hdGFuMigtZVswXSxlWzFdKSkqQ2Es
dGhpcy50cmFuc2xhdGU9W24uZSxuLmZdLHRoaXMuc2NhbGU9W3IsaV0sdGhpcy5za2V3PWk/TWF0
aC5hdGFuMih1LGkpKkNhOjB9ZnVuY3Rpb24gVHUobix0KXtyZXR1cm4gblswXSp0WzBdK25bMV0q
dFsxXX1mdW5jdGlvbiBxdShuKXt2YXIgdD1NYXRoLnNxcnQoVHUobixuKSk7cmV0dXJuIHQmJihu
WzBdLz10LG5bMV0vPXQpLHR9ZnVuY3Rpb24gUnUobix0LGUpe3JldHVybiBuWzBdKz1lKnRbMF0s
blsxXSs9ZSp0WzFdLG59ZnVuY3Rpb24gRHUobix0KXt2YXIgZSxyPVtdLHU9W10saT1aby50cmFu
c2Zvcm0obiksbz1aby50cmFuc2Zvcm0odCksYT1pLnRyYW5zbGF0ZSxjPW8udHJhbnNsYXRlLHM9
aS5yb3RhdGUsbD1vLnJvdGF0ZSxmPWkuc2tldyxoPW8uc2tldyxnPWkuc2NhbGUscD1vLnNjYWxl
O3JldHVybiBhWzBdIT1jWzBdfHxhWzFdIT1jWzFdPyhyLnB1c2goInRyYW5zbGF0ZSgiLG51bGws
IiwiLG51bGwsIikiKSx1LnB1c2goe2k6MSx4Omx1KGFbMF0sY1swXSl9LHtpOjMseDpsdShhWzFd
LGNbMV0pfSkpOmNbMF18fGNbMV0/ci5wdXNoKCJ0cmFuc2xhdGUoIitjKyIpIik6ci5wdXNoKCIi
KSxzIT1sPyhzLWw+MTgwP2wrPTM2MDpsLXM+MTgwJiYocys9MzYwKSx1LnB1c2goe2k6ci5wdXNo
KHIucG9wKCkrInJvdGF0ZSgiLG51bGwsIikiKS0yLHg6bHUocyxsKX0pKTpsJiZyLnB1c2goci5w
b3AoKSsicm90YXRlKCIrbCsiKSIpLGYhPWg/dS5wdXNoKHtpOnIucHVzaChyLnBvcCgpKyJza2V3
WCgiLG51bGwsIikiKS0yLHg6bHUoZixoKX0pOmgmJnIucHVzaChyLnBvcCgpKyJza2V3WCgiK2gr
IikiKSxnWzBdIT1wWzBdfHxnWzFdIT1wWzFdPyhlPXIucHVzaChyLnBvcCgpKyJzY2FsZSgiLG51
bGwsIiwiLG51bGwsIikiKSx1LnB1c2goe2k6ZS00LHg6bHUoZ1swXSxwWzBdKX0se2k6ZS0yLHg6
bHUoZ1sxXSxwWzFdKX0pKTooMSE9cFswXXx8MSE9cFsxXSkmJnIucHVzaChyLnBvcCgpKyJzY2Fs
ZSgiK3ArIikiKSxlPXUubGVuZ3RoLGZ1bmN0aW9uKG4pe2Zvcih2YXIgdCxpPS0xOysraTxlOyly
Wyh0PXVbaV0pLmldPXQueChuKTtyZXR1cm4gci5qb2luKCIiKX19ZnVuY3Rpb24gUHUobix0KXty
ZXR1cm4gdD10LShuPStuKT8xLyh0LW4pOjAsZnVuY3Rpb24oZSl7cmV0dXJuKGUtbikqdH19ZnVu
Y3Rpb24gVXUobix0KXtyZXR1cm4gdD10LShuPStuKT8xLyh0LW4pOjAsZnVuY3Rpb24oZSl7cmV0
dXJuIE1hdGgubWF4KDAsTWF0aC5taW4oMSwoZS1uKSp0KSl9fWZ1bmN0aW9uIGp1KG4pe2Zvcih2
YXIgdD1uLnNvdXJjZSxlPW4udGFyZ2V0LHI9RnUodCxlKSx1PVt0XTt0IT09cjspdD10LnBhcmVu
dCx1LnB1c2godCk7Zm9yKHZhciBpPXUubGVuZ3RoO2UhPT1yOyl1LnNwbGljZShpLDAsZSksZT1l
LnBhcmVudDtyZXR1cm4gdX1mdW5jdGlvbiBIdShuKXtmb3IodmFyIHQ9W10sZT1uLnBhcmVudDtu
dWxsIT1lOyl0LnB1c2gobiksbj1lLGU9ZS5wYXJlbnQ7cmV0dXJuIHQucHVzaChuKSx0fWZ1bmN0
aW9uIEZ1KG4sdCl7aWYobj09PXQpcmV0dXJuIG47Zm9yKHZhciBlPUh1KG4pLHI9SHUodCksdT1l
LnBvcCgpLGk9ci5wb3AoKSxvPW51bGw7dT09PWk7KW89dSx1PWUucG9wKCksaT1yLnBvcCgpO3Jl
dHVybiBvfWZ1bmN0aW9uIE91KG4pe24uZml4ZWR8PTJ9ZnVuY3Rpb24gWXUobil7bi5maXhlZCY9
LTd9ZnVuY3Rpb24gSXUobil7bi5maXhlZHw9NCxuLnB4PW4ueCxuLnB5PW4ueX1mdW5jdGlvbiBa
dShuKXtuLmZpeGVkJj0tNX1mdW5jdGlvbiBWdShuLHQsZSl7dmFyIHI9MCx1PTA7aWYobi5jaGFy
Z2U9MCwhbi5sZWFmKWZvcih2YXIgaSxvPW4ubm9kZXMsYT1vLmxlbmd0aCxjPS0xOysrYzxhOylp
PW9bY10sbnVsbCE9aSYmKFZ1KGksdCxlKSxuLmNoYXJnZSs9aS5jaGFyZ2Uscis9aS5jaGFyZ2Uq
aS5jeCx1Kz1pLmNoYXJnZSppLmN5KTtpZihuLnBvaW50KXtuLmxlYWZ8fChuLnBvaW50LngrPU1h
dGgucmFuZG9tKCktLjUsbi5wb2ludC55Kz1NYXRoLnJhbmRvbSgpLS41KTt2YXIgcz10KmVbbi5w
b2ludC5pbmRleF07bi5jaGFyZ2UrPW4ucG9pbnRDaGFyZ2U9cyxyKz1zKm4ucG9pbnQueCx1Kz1z
Km4ucG9pbnQueX1uLmN4PXIvbi5jaGFyZ2Usbi5jeT11L24uY2hhcmdlfWZ1bmN0aW9uIFh1KG4s
dCl7cmV0dXJuIFpvLnJlYmluZChuLHQsInNvcnQiLCJjaGlsZHJlbiIsInZhbHVlIiksbi5ub2Rl
cz1uLG4ubGlua3M9S3Usbn1mdW5jdGlvbiAkdShuLHQpe2Zvcih2YXIgZT1bbl07bnVsbCE9KG49
ZS5wb3AoKSk7KWlmKHQobiksKHU9bi5jaGlsZHJlbikmJihyPXUubGVuZ3RoKSlmb3IodmFyIHIs
dTstLXI+PTA7KWUucHVzaCh1W3JdKX1mdW5jdGlvbiBCdShuLHQpe2Zvcih2YXIgZT1bbl0scj1b
XTtudWxsIT0obj1lLnBvcCgpKTspaWYoci5wdXNoKG4pLChpPW4uY2hpbGRyZW4pJiYodT1pLmxl
bmd0aCkpZm9yKHZhciB1LGksbz0tMTsrK288dTspZS5wdXNoKGlbb10pO2Zvcig7bnVsbCE9KG49
ci5wb3AoKSk7KXQobil9ZnVuY3Rpb24gV3Uobil7cmV0dXJuIG4uY2hpbGRyZW59ZnVuY3Rpb24g
SnUobil7cmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gR3Uobix0KXtyZXR1cm4gdC52YWx1ZS1uLnZh
bHVlfWZ1bmN0aW9uIEt1KG4pe3JldHVybiBaby5tZXJnZShuLm1hcChmdW5jdGlvbihuKXtyZXR1
cm4obi5jaGlsZHJlbnx8W10pLm1hcChmdW5jdGlvbih0KXtyZXR1cm57c291cmNlOm4sdGFyZ2V0
OnR9fSl9KSl9ZnVuY3Rpb24gUXUobil7cmV0dXJuIG4ueH1mdW5jdGlvbiBuaShuKXtyZXR1cm4g
bi55fWZ1bmN0aW9uIHRpKG4sdCxlKXtuLnkwPXQsbi55PWV9ZnVuY3Rpb24gZWkobil7cmV0dXJu
IFpvLnJhbmdlKG4ubGVuZ3RoKX1mdW5jdGlvbiByaShuKXtmb3IodmFyIHQ9LTEsZT1uWzBdLmxl
bmd0aCxyPVtdOysrdDxlOylyW3RdPTA7cmV0dXJuIHJ9ZnVuY3Rpb24gdWkobil7Zm9yKHZhciB0
LGU9MSxyPTAsdT1uWzBdWzFdLGk9bi5sZW5ndGg7aT5lOysrZSkodD1uW2VdWzFdKT51JiYocj1l
LHU9dCk7cmV0dXJuIHJ9ZnVuY3Rpb24gaWkobil7cmV0dXJuIG4ucmVkdWNlKG9pLDApfWZ1bmN0
aW9uIG9pKG4sdCl7cmV0dXJuIG4rdFsxXX1mdW5jdGlvbiBhaShuLHQpe3JldHVybiBjaShuLE1h
dGguY2VpbChNYXRoLmxvZyh0Lmxlbmd0aCkvTWF0aC5MTjIrMSkpfWZ1bmN0aW9uIGNpKG4sdCl7
Zm9yKHZhciBlPS0xLHI9K25bMF0sdT0oblsxXS1yKS90LGk9W107KytlPD10OylpW2VdPXUqZSty
O3JldHVybiBpfWZ1bmN0aW9uIHNpKG4pe3JldHVybltaby5taW4obiksWm8ubWF4KG4pXX1mdW5j
dGlvbiBsaShuLHQpe3JldHVybiBuLnZhbHVlLXQudmFsdWV9ZnVuY3Rpb24gZmkobix0KXt2YXIg
ZT1uLl9wYWNrX25leHQ7bi5fcGFja19uZXh0PXQsdC5fcGFja19wcmV2PW4sdC5fcGFja19uZXh0
PWUsZS5fcGFja19wcmV2PXR9ZnVuY3Rpb24gaGkobix0KXtuLl9wYWNrX25leHQ9dCx0Ll9wYWNr
X3ByZXY9bn1mdW5jdGlvbiBnaShuLHQpe3ZhciBlPXQueC1uLngscj10Lnktbi55LHU9bi5yK3Qu
cjtyZXR1cm4uOTk5KnUqdT5lKmUrcipyfWZ1bmN0aW9uIHBpKG4pe2Z1bmN0aW9uIHQobil7bD1N
YXRoLm1pbihuLngtbi5yLGwpLGY9TWF0aC5tYXgobi54K24ucixmKSxoPU1hdGgubWluKG4ueS1u
LnIsaCksZz1NYXRoLm1heChuLnkrbi5yLGcpfWlmKChlPW4uY2hpbGRyZW4pJiYocz1lLmxlbmd0
aCkpe3ZhciBlLHIsdSxpLG8sYSxjLHMsbD0xLzAsZj0tMS8wLGg9MS8wLGc9LTEvMDtpZihlLmZv
ckVhY2godmkpLHI9ZVswXSxyLng9LXIucixyLnk9MCx0KHIpLHM+MSYmKHU9ZVsxXSx1Lng9dS5y
LHUueT0wLHQodSkscz4yKSlmb3IoaT1lWzJdLHlpKHIsdSxpKSx0KGkpLGZpKHIsaSksci5fcGFj
a19wcmV2PWksZmkoaSx1KSx1PXIuX3BhY2tfbmV4dCxvPTM7cz5vO28rKyl7eWkocix1LGk9ZVtv
XSk7dmFyIHA9MCx2PTEsZD0xO2ZvcihhPXUuX3BhY2tfbmV4dDthIT09dTthPWEuX3BhY2tfbmV4
dCx2KyspaWYoZ2koYSxpKSl7cD0xO2JyZWFrfWlmKDE9PXApZm9yKGM9ci5fcGFja19wcmV2O2Mh
PT1hLl9wYWNrX3ByZXYmJiFnaShjLGkpO2M9Yy5fcGFja19wcmV2LGQrKyk7cD8oZD52fHx2PT1k
JiZ1LnI8ci5yP2hpKHIsdT1hKTpoaShyPWMsdSksby0tKTooZmkocixpKSx1PWksdChpKSl9dmFy
IG09KGwrZikvMix5PShoK2cpLzIseD0wO2ZvcihvPTA7cz5vO28rKylpPWVbb10saS54LT1tLGku
eS09eSx4PU1hdGgubWF4KHgsaS5yK01hdGguc3FydChpLngqaS54K2kueSppLnkpKTtuLnI9eCxl
LmZvckVhY2goZGkpfX1mdW5jdGlvbiB2aShuKXtuLl9wYWNrX25leHQ9bi5fcGFja19wcmV2PW59
ZnVuY3Rpb24gZGkobil7ZGVsZXRlIG4uX3BhY2tfbmV4dCxkZWxldGUgbi5fcGFja19wcmV2fWZ1
bmN0aW9uIG1pKG4sdCxlLHIpe3ZhciB1PW4uY2hpbGRyZW47aWYobi54PXQrPXIqbi54LG4ueT1l
Kz1yKm4ueSxuLnIqPXIsdSlmb3IodmFyIGk9LTEsbz11Lmxlbmd0aDsrK2k8bzspbWkodVtpXSx0
LGUscil9ZnVuY3Rpb24geWkobix0LGUpe3ZhciByPW4ucitlLnIsdT10Lngtbi54LGk9dC55LW4u
eTtpZihyJiYodXx8aSkpe3ZhciBvPXQucitlLnIsYT11KnUraSppO28qPW8scio9cjt2YXIgYz0u
NSsoci1vKS8oMiphKSxzPU1hdGguc3FydChNYXRoLm1heCgwLDIqbyoocithKS0oci09YSkqci1v
Km8pKS8oMiphKTtlLng9bi54K2MqdStzKmksZS55PW4ueStjKmktcyp1fWVsc2UgZS54PW4ueCty
LGUueT1uLnl9ZnVuY3Rpb24geGkobix0KXtyZXR1cm4gbi5wYXJlbnQ9PXQucGFyZW50PzE6Mn1m
dW5jdGlvbiBNaShuKXt2YXIgdD1uLmNoaWxkcmVuO3JldHVybiB0Lmxlbmd0aD90WzBdOm4udH1m
dW5jdGlvbiBfaShuKXt2YXIgdCxlPW4uY2hpbGRyZW47cmV0dXJuKHQ9ZS5sZW5ndGgpP2VbdC0x
XTpuLnR9ZnVuY3Rpb24gYmkobix0LGUpe3ZhciByPWUvKHQuaS1uLmkpO3QuYy09cix0LnMrPWUs
bi5jKz1yLHQueis9ZSx0Lm0rPWV9ZnVuY3Rpb24gd2kobil7Zm9yKHZhciB0LGU9MCxyPTAsdT1u
LmNoaWxkcmVuLGk9dS5sZW5ndGg7LS1pPj0wOyl0PXVbaV0sdC56Kz1lLHQubSs9ZSxlKz10LnMr
KHIrPXQuYyl9ZnVuY3Rpb24gU2kobix0LGUpe3JldHVybiBuLmEucGFyZW50PT09dC5wYXJlbnQ/
bi5hOmV9ZnVuY3Rpb24ga2kobil7cmV0dXJuIDErWm8ubWF4KG4sZnVuY3Rpb24obil7cmV0dXJu
IG4ueX0pfWZ1bmN0aW9uIEVpKG4pe3JldHVybiBuLnJlZHVjZShmdW5jdGlvbihuLHQpe3JldHVy
biBuK3QueH0sMCkvbi5sZW5ndGh9ZnVuY3Rpb24gQWkobil7dmFyIHQ9bi5jaGlsZHJlbjtyZXR1
cm4gdCYmdC5sZW5ndGg/QWkodFswXSk6bn1mdW5jdGlvbiBDaShuKXt2YXIgdCxlPW4uY2hpbGRy
ZW47cmV0dXJuIGUmJih0PWUubGVuZ3RoKT9DaShlW3QtMV0pOm59ZnVuY3Rpb24gTmkobil7cmV0
dXJue3g6bi54LHk6bi55LGR4Om4uZHgsZHk6bi5keX19ZnVuY3Rpb24gemkobix0KXt2YXIgZT1u
LngrdFszXSxyPW4ueSt0WzBdLHU9bi5keC10WzFdLXRbM10saT1uLmR5LXRbMF0tdFsyXTtyZXR1
cm4gMD51JiYoZSs9dS8yLHU9MCksMD5pJiYocis9aS8yLGk9MCkse3g6ZSx5OnIsZHg6dSxkeTpp
fX1mdW5jdGlvbiBMaShuKXt2YXIgdD1uWzBdLGU9bltuLmxlbmd0aC0xXTtyZXR1cm4gZT50P1t0
LGVdOltlLHRdfWZ1bmN0aW9uIFRpKG4pe3JldHVybiBuLnJhbmdlRXh0ZW50P24ucmFuZ2VFeHRl
bnQoKTpMaShuLnJhbmdlKCkpfWZ1bmN0aW9uIHFpKG4sdCxlLHIpe3ZhciB1PWUoblswXSxuWzFd
KSxpPXIodFswXSx0WzFdKTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGkodShuKSl9fWZ1bmN0
aW9uIFJpKG4sdCl7dmFyIGUscj0wLHU9bi5sZW5ndGgtMSxpPW5bcl0sbz1uW3VdO3JldHVybiBp
Pm8mJihlPXIscj11LHU9ZSxlPWksaT1vLG89ZSksbltyXT10LmZsb29yKGkpLG5bdV09dC5jZWls
KG8pLG59ZnVuY3Rpb24gRGkobil7cmV0dXJuIG4/e2Zsb29yOmZ1bmN0aW9uKHQpe3JldHVybiBN
YXRoLmZsb29yKHQvbikqbn0sY2VpbDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5jZWlsKHQvbikq
bn19OnNzfWZ1bmN0aW9uIFBpKG4sdCxlLHIpe3ZhciB1PVtdLGk9W10sbz0wLGE9TWF0aC5taW4o
bi5sZW5ndGgsdC5sZW5ndGgpLTE7Zm9yKG5bYV08blswXSYmKG49bi5zbGljZSgpLnJldmVyc2Uo
KSx0PXQuc2xpY2UoKS5yZXZlcnNlKCkpOysrbzw9YTspdS5wdXNoKGUobltvLTFdLG5bb10pKSxp
LnB1c2gocih0W28tMV0sdFtvXSkpO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT1aby5iaXNlY3Qo
bix0LDEsYSktMTtyZXR1cm4gaVtlXSh1W2VdKHQpKX19ZnVuY3Rpb24gVWkobix0LGUscil7ZnVu
Y3Rpb24gdSgpe3ZhciB1PU1hdGgubWluKG4ubGVuZ3RoLHQubGVuZ3RoKT4yP1BpOnFpLGM9cj9V
dTpQdTtyZXR1cm4gbz11KG4sdCxjLGUpLGE9dSh0LG4sYyxodSksaX1mdW5jdGlvbiBpKG4pe3Jl
dHVybiBvKG4pfXZhciBvLGE7cmV0dXJuIGkuaW52ZXJ0PWZ1bmN0aW9uKG4pe3JldHVybiBhKG4p
fSxpLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10Lm1hcChO
dW1iZXIpLHUoKSk6bn0saS5yYW5nZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8odD1uLHUoKSk6dH0saS5yYW5nZVJvdW5kPWZ1bmN0aW9uKG4pe3JldHVybiBpLnJhbmdlKG4p
LmludGVycG9sYXRlKHp1KX0saS5jbGFtcD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8ocj1uLHUoKSk6cn0saS5pbnRlcnBvbGF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oZT1uLHUoKSk6ZX0saS50aWNrcz1mdW5jdGlvbih0KXtyZXR1cm4gT2kobix0
KX0saS50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFlpKG4sdCxlKX0saS5uaWNlPWZ1
bmN0aW9uKHQpe3JldHVybiBIaShuLHQpLHUoKX0saS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFVp
KG4sdCxlLHIpfSx1KCl9ZnVuY3Rpb24gamkobix0KXtyZXR1cm4gWm8ucmViaW5kKG4sdCwicmFu
Z2UiLCJyYW5nZVJvdW5kIiwiaW50ZXJwb2xhdGUiLCJjbGFtcCIpfWZ1bmN0aW9uIEhpKG4sdCl7
cmV0dXJuIFJpKG4sRGkoRmkobix0KVsyXSkpfWZ1bmN0aW9uIEZpKG4sdCl7bnVsbD09dCYmKHQ9
MTApO3ZhciBlPUxpKG4pLHI9ZVsxXS1lWzBdLHU9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRo
LmxvZyhyL3QpL01hdGguTE4xMCkpLGk9dC9yKnU7cmV0dXJuLjE1Pj1pP3UqPTEwOi4zNT49aT91
Kj01Oi43NT49aSYmKHUqPTIpLGVbMF09TWF0aC5jZWlsKGVbMF0vdSkqdSxlWzFdPU1hdGguZmxv
b3IoZVsxXS91KSp1Ky41KnUsZVsyXT11LGV9ZnVuY3Rpb24gT2kobix0KXtyZXR1cm4gWm8ucmFu
Z2UuYXBwbHkoWm8sRmkobix0KSl9ZnVuY3Rpb24gWWkobix0LGUpe3ZhciByPUZpKG4sdCk7aWYo
ZSl7dmFyIHU9R2EuZXhlYyhlKTtpZih1LnNoaWZ0KCksInMiPT09dVs4XSl7dmFyIGk9Wm8uZm9y
bWF0UHJlZml4KE1hdGgubWF4KHVhKHJbMF0pLHVhKHJbMV0pKSk7cmV0dXJuIHVbN118fCh1Wzdd
PSIuIitJaShpLnNjYWxlKHJbMl0pKSksdVs4XT0iZiIsZT1aby5mb3JtYXQodS5qb2luKCIiKSks
ZnVuY3Rpb24obil7cmV0dXJuIGUoaS5zY2FsZShuKSkraS5zeW1ib2x9fXVbN118fCh1WzddPSIu
IitaaSh1WzhdLHIpKSxlPXUuam9pbigiIil9ZWxzZSBlPSIsLiIrSWkoclsyXSkrImYiO3JldHVy
biBaby5mb3JtYXQoZSl9ZnVuY3Rpb24gSWkobil7cmV0dXJuLU1hdGguZmxvb3IoTWF0aC5sb2co
bikvTWF0aC5MTjEwKy4wMSl9ZnVuY3Rpb24gWmkobix0KXt2YXIgZT1JaSh0WzJdKTtyZXR1cm4g
biBpbiBscz9NYXRoLmFicyhlLUlpKE1hdGgubWF4KHVhKHRbMF0pLHVhKHRbMV0pKSkpKyArKCJl
IiE9PW4pOmUtMiooIiUiPT09bil9ZnVuY3Rpb24gVmkobix0LGUscil7ZnVuY3Rpb24gdShuKXty
ZXR1cm4oZT9NYXRoLmxvZygwPm4/MDpuKTotTWF0aC5sb2cobj4wPzA6LW4pKS9NYXRoLmxvZyh0
KX1mdW5jdGlvbiBpKG4pe3JldHVybiBlP01hdGgucG93KHQsbik6LU1hdGgucG93KHQsLW4pfWZ1
bmN0aW9uIG8odCl7cmV0dXJuIG4odSh0KSl9cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQpe3Jl
dHVybiBpKG4uaW52ZXJ0KHQpKX0sby5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGU9dFswXT49MCxuLmRvbWFpbigocj10Lm1hcChOdW1iZXIpKS5tYXAodSkpLG8p
OnJ9LG8uYmFzZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rZSxuLmRv
bWFpbihyLm1hcCh1KSksbyk6dH0sby5uaWNlPWZ1bmN0aW9uKCl7dmFyIHQ9Umkoci5tYXAodSks
ZT9NYXRoOmhzKTtyZXR1cm4gbi5kb21haW4odCkscj10Lm1hcChpKSxvfSxvLnRpY2tzPWZ1bmN0
aW9uKCl7dmFyIG49TGkociksbz1bXSxhPW5bMF0sYz1uWzFdLHM9TWF0aC5mbG9vcih1KGEpKSxs
PU1hdGguY2VpbCh1KGMpKSxmPXQlMT8yOnQ7aWYoaXNGaW5pdGUobC1zKSl7aWYoZSl7Zm9yKDts
PnM7cysrKWZvcih2YXIgaD0xO2Y+aDtoKyspby5wdXNoKGkocykqaCk7by5wdXNoKGkocykpfWVs
c2UgZm9yKG8ucHVzaChpKHMpKTtzKys8bDspZm9yKHZhciBoPWYtMTtoPjA7aC0tKW8ucHVzaChp
KHMpKmgpO2ZvcihzPTA7b1tzXTxhO3MrKyk7Zm9yKGw9by5sZW5ndGg7b1tsLTFdPmM7bC0tKTtv
PW8uc2xpY2UocyxsKX1yZXR1cm4gb30sby50aWNrRm9ybWF0PWZ1bmN0aW9uKG4sdCl7aWYoIWFy
Z3VtZW50cy5sZW5ndGgpcmV0dXJuIGZzO2FyZ3VtZW50cy5sZW5ndGg8Mj90PWZzOiJmdW5jdGlv
biIhPXR5cGVvZiB0JiYodD1aby5mb3JtYXQodCkpO3ZhciByLGE9TWF0aC5tYXgoLjEsbi9vLnRp
Y2tzKCkubGVuZ3RoKSxjPWU/KHI9MWUtMTIsTWF0aC5jZWlsKToocj0tMWUtMTIsTWF0aC5mbG9v
cik7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBuL2koYyh1KG4pK3IpKTw9YT90KG4pOiIifX0s
by5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFZpKG4uY29weSgpLHQsZSxyKX0samkobyxuKX1mdW5j
dGlvbiBYaShuLHQsZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gbih1KHQpKX12YXIgdT0kaSh0KSxp
PSRpKDEvdCk7cmV0dXJuIHIuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBpKG4uaW52ZXJ0KHQp
KX0sci5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4uZG9tYWlu
KChlPXQubWFwKE51bWJlcikpLm1hcCh1KSkscik6ZX0sci50aWNrcz1mdW5jdGlvbihuKXtyZXR1
cm4gT2koZSxuKX0sci50aWNrRm9ybWF0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIFlpKGUsbix0KX0s
ci5uaWNlPWZ1bmN0aW9uKG4pe3JldHVybiByLmRvbWFpbihIaShlLG4pKX0sci5leHBvbmVudD1m
dW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0kaSh0PW8pLGk9JGkoMS90KSxu
LmRvbWFpbihlLm1hcCh1KSkscik6dH0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFhpKG4uY29w
eSgpLHQsZSl9LGppKHIsbil9ZnVuY3Rpb24gJGkobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVy
biAwPnQ/LU1hdGgucG93KC10LG4pOk1hdGgucG93KHQsbil9fWZ1bmN0aW9uIEJpKG4sdCl7ZnVu
Y3Rpb24gZShlKXtyZXR1cm4gaVsoKHUuZ2V0KGUpfHwoInJhbmdlIj09PXQudD91LnNldChlLG4u
cHVzaChlKSk6MC8wKSktMSklaS5sZW5ndGhdfWZ1bmN0aW9uIHIodCxlKXtyZXR1cm4gWm8ucmFu
Z2Uobi5sZW5ndGgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gdCtlKm59KX12YXIgdSxpLGE7cmV0
dXJuIGUuZG9tYWluPWZ1bmN0aW9uKHIpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBuO249
W10sdT1uZXcgbztmb3IodmFyIGksYT0tMSxjPXIubGVuZ3RoOysrYTxjOyl1LmhhcyhpPXJbYV0p
fHx1LnNldChpLG4ucHVzaChpKSk7cmV0dXJuIGVbdC50XS5hcHBseShlLHQuYSl9LGUucmFuZ2U9
ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bixhPTAsdD17dDoicmFuZ2Ui
LGE6YXJndW1lbnRzfSxlKTppfSxlLnJhbmdlUG9pbnRzPWZ1bmN0aW9uKHUsbyl7YXJndW1lbnRz
Lmxlbmd0aDwyJiYobz0wKTt2YXIgYz11WzBdLHM9dVsxXSxsPShzLWMpLyhNYXRoLm1heCgxLG4u
bGVuZ3RoLTEpK28pO3JldHVybiBpPXIobi5sZW5ndGg8Mj8oYytzKS8yOmMrbCpvLzIsbCksYT0w
LHQ9e3Q6InJhbmdlUG9pbnRzIixhOmFyZ3VtZW50c30sZX0sZS5yYW5nZUJhbmRzPWZ1bmN0aW9u
KHUsbyxjKXthcmd1bWVudHMubGVuZ3RoPDImJihvPTApLGFyZ3VtZW50cy5sZW5ndGg8MyYmKGM9
byk7dmFyIHM9dVsxXTx1WzBdLGw9dVtzLTBdLGY9dVsxLXNdLGg9KGYtbCkvKG4ubGVuZ3RoLW8r
MipjKTtyZXR1cm4gaT1yKGwraCpjLGgpLHMmJmkucmV2ZXJzZSgpLGE9aCooMS1vKSx0PXt0OiJy
YW5nZUJhbmRzIixhOmFyZ3VtZW50c30sZX0sZS5yYW5nZVJvdW5kQmFuZHM9ZnVuY3Rpb24odSxv
LGMpe2FyZ3VtZW50cy5sZW5ndGg8MiYmKG89MCksYXJndW1lbnRzLmxlbmd0aDwzJiYoYz1vKTt2
YXIgcz11WzFdPHVbMF0sbD11W3MtMF0sZj11WzEtc10saD1NYXRoLmZsb29yKChmLWwpLyhuLmxl
bmd0aC1vKzIqYykpLGc9Zi1sLShuLmxlbmd0aC1vKSpoO3JldHVybiBpPXIobCtNYXRoLnJvdW5k
KGcvMiksaCkscyYmaS5yZXZlcnNlKCksYT1NYXRoLnJvdW5kKGgqKDEtbykpLHQ9e3Q6InJhbmdl
Um91bmRCYW5kcyIsYTphcmd1bWVudHN9LGV9LGUucmFuZ2VCYW5kPWZ1bmN0aW9uKCl7cmV0dXJu
IGF9LGUucmFuZ2VFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gTGkodC5hWzBdKX0sZS5jb3B5PWZ1
bmN0aW9uKCl7cmV0dXJuIEJpKG4sdCl9LGUuZG9tYWluKG4pfWZ1bmN0aW9uIFdpKGUscil7ZnVu
Y3Rpb24gdSgpe3ZhciBuPTAsdD1yLmxlbmd0aDtmb3Iobz1bXTsrK248dDspb1tuLTFdPVpvLnF1
YW50aWxlKGUsbi90KTtyZXR1cm4gaX1mdW5jdGlvbiBpKG4pe3JldHVybiBpc05hTihuPStuKT92
b2lkIDA6cltaby5iaXNlY3QobyxuKV19dmFyIG87cmV0dXJuIGkuZG9tYWluPWZ1bmN0aW9uKHIp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXIuZmlsdGVyKHQpLnNvcnQobiksdSgpKTplfSxp
LnJhbmdlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW4sdSgpKTpyfSxp
LnF1YW50aWxlcz1mdW5jdGlvbigpe3JldHVybiBvfSxpLmludmVydEV4dGVudD1mdW5jdGlvbihu
KXtyZXR1cm4gbj1yLmluZGV4T2YobiksMD5uP1swLzAsMC8wXTpbbj4wP29bbi0xXTplWzBdLG48
by5sZW5ndGg/b1tuXTplW2UubGVuZ3RoLTFdXX0saS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFdp
KGUscil9LHUoKX1mdW5jdGlvbiBKaShuLHQsZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gZVtNYXRo
Lm1heCgwLE1hdGgubWluKG8sTWF0aC5mbG9vcihpKih0LW4pKSkpXX1mdW5jdGlvbiB1KCl7cmV0
dXJuIGk9ZS5sZW5ndGgvKHQtbiksbz1lLmxlbmd0aC0xLHJ9dmFyIGksbztyZXR1cm4gci5kb21h
aW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K2VbMF0sdD0rZVtlLmxl
bmd0aC0xXSx1KCkpOltuLHRdfSxyLnJhbmdlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhlPW4sdSgpKTplfSxyLmludmVydEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gdD1l
LmluZGV4T2YodCksdD0wPnQ/MC8wOnQvaStuLFt0LHQrMS9pXX0sci5jb3B5PWZ1bmN0aW9uKCl7
cmV0dXJuIEppKG4sdCxlKX0sdSgpfWZ1bmN0aW9uIEdpKG4sdCl7ZnVuY3Rpb24gZShlKXtyZXR1
cm4gZT49ZT90W1pvLmJpc2VjdChuLGUpXTp2b2lkIDB9cmV0dXJuIGUuZG9tYWluPWZ1bmN0aW9u
KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsZSk6bn0sZS5yYW5nZT1mdW5jdGlvbihu
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1uLGUpOnR9LGUuaW52ZXJ0RXh0ZW50PWZ1bmN0
aW9uKGUpe3JldHVybiBlPXQuaW5kZXhPZihlKSxbbltlLTFdLG5bZV1dfSxlLmNvcHk9ZnVuY3Rp
b24oKXtyZXR1cm4gR2kobix0KX0sZX1mdW5jdGlvbiBLaShuKXtmdW5jdGlvbiB0KG4pe3JldHVy
bitufXJldHVybiB0LmludmVydD10LHQuZG9tYWluPXQucmFuZ2U9ZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KG49ZS5tYXAodCksdCk6bn0sdC50aWNrcz1mdW5jdGlvbih0KXty
ZXR1cm4gT2kobix0KX0sdC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFlpKG4sdCxl
KX0sdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEtpKG4pfSx0fWZ1bmN0aW9uIFFpKG4pe3JldHVy
biBuLmlubmVyUmFkaXVzfWZ1bmN0aW9uIG5vKG4pe3JldHVybiBuLm91dGVyUmFkaXVzfWZ1bmN0
aW9uIHRvKG4pe3JldHVybiBuLnN0YXJ0QW5nbGV9ZnVuY3Rpb24gZW8obil7cmV0dXJuIG4uZW5k
QW5nbGV9ZnVuY3Rpb24gcm8obil7ZnVuY3Rpb24gdCh0KXtmdW5jdGlvbiBvKCl7cy5wdXNoKCJN
IixpKG4obCksYSkpfWZvcih2YXIgYyxzPVtdLGw9W10sZj0tMSxoPXQubGVuZ3RoLGc9YnQoZSks
cD1idChyKTsrK2Y8aDspdS5jYWxsKHRoaXMsYz10W2ZdLGYpP2wucHVzaChbK2cuY2FsbCh0aGlz
LGMsZiksK3AuY2FsbCh0aGlzLGMsZildKTpsLmxlbmd0aCYmKG8oKSxsPVtdKTtyZXR1cm4gbC5s
ZW5ndGgmJm8oKSxzLmxlbmd0aD9zLmpvaW4oIiIpOm51bGx9dmFyIGU9d3Iscj1Tcix1PXdlLGk9
dW8sbz1pLmtleSxhPS43O3JldHVybiB0Lng9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGU9bix0KTplfSx0Lnk9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHI9bix0KTpyfSx0LmRlZmluZWQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHU9bix0KTp1fSx0LmludGVycG9sYXRlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiBuP2k9bjooaT14cy5nZXQobil8fHVvKS5rZXksdCk6
b30sdC50ZW5zaW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPW4sdCk6
YX0sdH1mdW5jdGlvbiB1byhuKXtyZXR1cm4gbi5qb2luKCJMIil9ZnVuY3Rpb24gaW8obil7cmV0
dXJuIHVvKG4pKyJaIn1mdW5jdGlvbiBvbyhuKXtmb3IodmFyIHQ9MCxlPW4ubGVuZ3RoLHI9blsw
XSx1PVtyWzBdLCIsIixyWzFdXTsrK3Q8ZTspdS5wdXNoKCJIIiwoclswXSsocj1uW3RdKVswXSkv
MiwiViIsclsxXSk7cmV0dXJuIGU+MSYmdS5wdXNoKCJIIixyWzBdKSx1LmpvaW4oIiIpfWZ1bmN0
aW9uIGFvKG4pe2Zvcih2YXIgdD0wLGU9bi5sZW5ndGgscj1uWzBdLHU9W3JbMF0sIiwiLHJbMV1d
OysrdDxlOyl1LnB1c2goIlYiLChyPW5bdF0pWzFdLCJIIixyWzBdKTtyZXR1cm4gdS5qb2luKCIi
KX1mdW5jdGlvbiBjbyhuKXtmb3IodmFyIHQ9MCxlPW4ubGVuZ3RoLHI9blswXSx1PVtyWzBdLCIs
IixyWzFdXTsrK3Q8ZTspdS5wdXNoKCJIIiwocj1uW3RdKVswXSwiViIsclsxXSk7cmV0dXJuIHUu
am9pbigiIil9ZnVuY3Rpb24gc28obix0KXtyZXR1cm4gbi5sZW5ndGg8ND91byhuKTpuWzFdK2hv
KG4uc2xpY2UoMSxuLmxlbmd0aC0xKSxnbyhuLHQpKX1mdW5jdGlvbiBsbyhuLHQpe3JldHVybiBu
Lmxlbmd0aDwzP3VvKG4pOm5bMF0raG8oKG4ucHVzaChuWzBdKSxuKSxnbyhbbltuLmxlbmd0aC0y
XV0uY29uY2F0KG4sW25bMV1dKSx0KSl9ZnVuY3Rpb24gZm8obix0KXtyZXR1cm4gbi5sZW5ndGg8
Mz91byhuKTpuWzBdK2hvKG4sZ28obix0KSl9ZnVuY3Rpb24gaG8obix0KXtpZih0Lmxlbmd0aDwx
fHxuLmxlbmd0aCE9dC5sZW5ndGgmJm4ubGVuZ3RoIT10Lmxlbmd0aCsyKXJldHVybiB1byhuKTt2
YXIgZT1uLmxlbmd0aCE9dC5sZW5ndGgscj0iIix1PW5bMF0saT1uWzFdLG89dFswXSxhPW8sYz0x
O2lmKGUmJihyKz0iUSIrKGlbMF0tMipvWzBdLzMpKyIsIisoaVsxXS0yKm9bMV0vMykrIiwiK2lb
MF0rIiwiK2lbMV0sdT1uWzFdLGM9MiksdC5sZW5ndGg+MSl7YT10WzFdLGk9bltjXSxjKysscis9
IkMiKyh1WzBdK29bMF0pKyIsIisodVsxXStvWzFdKSsiLCIrKGlbMF0tYVswXSkrIiwiKyhpWzFd
LWFbMV0pKyIsIitpWzBdKyIsIitpWzFdO2Zvcih2YXIgcz0yO3M8dC5sZW5ndGg7cysrLGMrKylp
PW5bY10sYT10W3NdLHIrPSJTIisoaVswXS1hWzBdKSsiLCIrKGlbMV0tYVsxXSkrIiwiK2lbMF0r
IiwiK2lbMV19aWYoZSl7dmFyIGw9bltjXTtyKz0iUSIrKGlbMF0rMiphWzBdLzMpKyIsIisoaVsx
XSsyKmFbMV0vMykrIiwiK2xbMF0rIiwiK2xbMV19cmV0dXJuIHJ9ZnVuY3Rpb24gZ28obix0KXtm
b3IodmFyIGUscj1bXSx1PSgxLXQpLzIsaT1uWzBdLG89blsxXSxhPTEsYz1uLmxlbmd0aDsrK2E8
YzspZT1pLGk9byxvPW5bYV0sci5wdXNoKFt1KihvWzBdLWVbMF0pLHUqKG9bMV0tZVsxXSldKTty
ZXR1cm4gcn1mdW5jdGlvbiBwbyhuKXtpZihuLmxlbmd0aDwzKXJldHVybiB1byhuKTt2YXIgdD0x
LGU9bi5sZW5ndGgscj1uWzBdLHU9clswXSxpPXJbMV0sbz1bdSx1LHUsKHI9blsxXSlbMF1dLGE9
W2ksaSxpLHJbMV1dLGM9W3UsIiwiLGksIkwiLHhvKGJzLG8pLCIsIix4byhicyxhKV07Zm9yKG4u
cHVzaChuW2UtMV0pOysrdDw9ZTspcj1uW3RdLG8uc2hpZnQoKSxvLnB1c2goclswXSksYS5zaGlm
dCgpLGEucHVzaChyWzFdKSxNbyhjLG8sYSk7cmV0dXJuIG4ucG9wKCksYy5wdXNoKCJMIixyKSxj
LmpvaW4oIiIpfWZ1bmN0aW9uIHZvKG4pe2lmKG4ubGVuZ3RoPDQpcmV0dXJuIHVvKG4pO2Zvcih2
YXIgdCxlPVtdLHI9LTEsdT1uLmxlbmd0aCxpPVswXSxvPVswXTsrK3I8MzspdD1uW3JdLGkucHVz
aCh0WzBdKSxvLnB1c2godFsxXSk7Zm9yKGUucHVzaCh4byhicyxpKSsiLCIreG8oYnMsbykpLC0t
cjsrK3I8dTspdD1uW3JdLGkuc2hpZnQoKSxpLnB1c2godFswXSksby5zaGlmdCgpLG8ucHVzaCh0
WzFdKSxNbyhlLGksbyk7cmV0dXJuIGUuam9pbigiIil9ZnVuY3Rpb24gbW8obil7Zm9yKHZhciB0
LGUscj0tMSx1PW4ubGVuZ3RoLGk9dSs0LG89W10sYT1bXTsrK3I8NDspZT1uW3IldV0sby5wdXNo
KGVbMF0pLGEucHVzaChlWzFdKTtmb3IodD1beG8oYnMsbyksIiwiLHhvKGJzLGEpXSwtLXI7Kyty
PGk7KWU9bltyJXVdLG8uc2hpZnQoKSxvLnB1c2goZVswXSksYS5zaGlmdCgpLGEucHVzaChlWzFd
KSxNbyh0LG8sYSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24geW8obix0KXt2YXIgZT1uLmxl
bmd0aC0xO2lmKGUpZm9yKHZhciByLHUsaT1uWzBdWzBdLG89blswXVsxXSxhPW5bZV1bMF0taSxj
PW5bZV1bMV0tbyxzPS0xOysrczw9ZTspcj1uW3NdLHU9cy9lLHJbMF09dCpyWzBdKygxLXQpKihp
K3UqYSksclsxXT10KnJbMV0rKDEtdCkqKG8rdSpjKTtyZXR1cm4gcG8obil9ZnVuY3Rpb24geG8o
bix0KXtyZXR1cm4gblswXSp0WzBdK25bMV0qdFsxXStuWzJdKnRbMl0rblszXSp0WzNdfWZ1bmN0
aW9uIE1vKG4sdCxlKXtuLnB1c2goIkMiLHhvKE1zLHQpLCIsIix4byhNcyxlKSwiLCIseG8oX3Ms
dCksIiwiLHhvKF9zLGUpLCIsIix4byhicyx0KSwiLCIseG8oYnMsZSkpfWZ1bmN0aW9uIF9vKG4s
dCl7cmV0dXJuKHRbMV0tblsxXSkvKHRbMF0tblswXSl9ZnVuY3Rpb24gYm8obil7Zm9yKHZhciB0
PTAsZT1uLmxlbmd0aC0xLHI9W10sdT1uWzBdLGk9blsxXSxvPXJbMF09X28odSxpKTsrK3Q8ZTsp
clt0XT0obysobz1fbyh1PWksaT1uW3QrMV0pKSkvMjtyZXR1cm4gclt0XT1vLHJ9ZnVuY3Rpb24g
d28obil7Zm9yKHZhciB0LGUscix1LGk9W10sbz1ibyhuKSxhPS0xLGM9bi5sZW5ndGgtMTsrK2E8
YzspdD1fbyhuW2FdLG5bYSsxXSksdWEodCk8a2E/b1thXT1vW2ErMV09MDooZT1vW2FdL3Qscj1v
W2ErMV0vdCx1PWUqZStyKnIsdT45JiYodT0zKnQvTWF0aC5zcXJ0KHUpLG9bYV09dSplLG9bYSsx
XT11KnIpKTtmb3IoYT0tMTsrK2E8PWM7KXU9KG5bTWF0aC5taW4oYyxhKzEpXVswXS1uW01hdGgu
bWF4KDAsYS0xKV1bMF0pLyg2KigxK29bYV0qb1thXSkpLGkucHVzaChbdXx8MCxvW2FdKnV8fDBd
KTtyZXR1cm4gaX1mdW5jdGlvbiBTbyhuKXtyZXR1cm4gbi5sZW5ndGg8Mz91byhuKTpuWzBdK2hv
KG4sd28obikpfWZ1bmN0aW9uIGtvKG4pe2Zvcih2YXIgdCxlLHIsdT0tMSxpPW4ubGVuZ3RoOysr
dTxpOyl0PW5bdV0sZT10WzBdLHI9dFsxXSttcyx0WzBdPWUqTWF0aC5jb3MociksdFsxXT1lKk1h
dGguc2luKHIpO3JldHVybiBufWZ1bmN0aW9uIEVvKG4pe2Z1bmN0aW9uIHQodCl7ZnVuY3Rpb24g
Yygpe3YucHVzaCgiTSIsYShuKG0pLGYpLGwscyhuKGQucmV2ZXJzZSgpKSxmKSwiWiIpfWZvcih2
YXIgaCxnLHAsdj1bXSxkPVtdLG09W10seT0tMSx4PXQubGVuZ3RoLE09YnQoZSksXz1idCh1KSxi
PWU9PT1yP2Z1bmN0aW9uKCl7cmV0dXJuIGd9OmJ0KHIpLHc9dT09PWk/ZnVuY3Rpb24oKXtyZXR1
cm4gcH06YnQoaSk7Kyt5PHg7KW8uY2FsbCh0aGlzLGg9dFt5XSx5KT8oZC5wdXNoKFtnPStNLmNh
bGwodGhpcyxoLHkpLHA9K18uY2FsbCh0aGlzLGgseSldKSxtLnB1c2goWytiLmNhbGwodGhpcyxo
LHkpLCt3LmNhbGwodGhpcyxoLHkpXSkpOmQubGVuZ3RoJiYoYygpLGQ9W10sbT1bXSk7cmV0dXJu
IGQubGVuZ3RoJiZjKCksdi5sZW5ndGg/di5qb2luKCIiKTpudWxsfXZhciBlPXdyLHI9d3IsdT0w
LGk9U3Isbz13ZSxhPXVvLGM9YS5rZXkscz1hLGw9IkwiLGY9Ljc7cmV0dXJuIHQueD1mdW5jdGlv
bihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1yPW4sdCk6cn0sdC54MD1mdW5jdGlvbihu
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1uLHQpOmV9LHQueDE9ZnVuY3Rpb24obil7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bix0KTpyfSx0Lnk9ZnVuY3Rpb24obil7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHU9aT1uLHQpOml9LHQueTA9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHU9bix0KTp1fSx0LnkxPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhpPW4sdCk6aX0sdC5kZWZpbmVkPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhvPW4sdCk6b30sdC5pbnRlcnBvbGF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oYz0iZnVuY3Rpb24iPT10eXBlb2Ygbj9hPW46KGE9eHMuZ2V0KG4pfHx1byku
a2V5LHM9YS5yZXZlcnNlfHxhLGw9YS5jbG9zZWQ/Ik0iOiJMIix0KTpjfSx0LnRlbnNpb249ZnVu
Y3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9bix0KTpmfSx0fWZ1bmN0aW9uIEFv
KG4pe3JldHVybiBuLnJhZGl1c31mdW5jdGlvbiBDbyhuKXtyZXR1cm5bbi54LG4ueV19ZnVuY3Rp
b24gTm8obil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyks
ZT10WzBdLHI9dFsxXSttcztyZXR1cm5bZSpNYXRoLmNvcyhyKSxlKk1hdGguc2luKHIpXX19ZnVu
Y3Rpb24gem8oKXtyZXR1cm4gNjR9ZnVuY3Rpb24gTG8oKXtyZXR1cm4iY2lyY2xlIn1mdW5jdGlv
biBUbyhuKXt2YXIgdD1NYXRoLnNxcnQobi9iYSk7cmV0dXJuIk0wLCIrdCsiQSIrdCsiLCIrdCsi
IDAgMSwxIDAsIistdCsiQSIrdCsiLCIrdCsiIDAgMSwxIDAsIit0KyJaIn1mdW5jdGlvbiBxbyhu
LHQpe3JldHVybiBzYShuLENzKSxuLmlkPXQsbn1mdW5jdGlvbiBSbyhuLHQsZSxyKXt2YXIgdT1u
LmlkO3JldHVybiBQKG4sImZ1bmN0aW9uIj09dHlwZW9mIGU/ZnVuY3Rpb24obixpLG8pe24uX190
cmFuc2l0aW9uX19bdV0udHdlZW4uc2V0KHQscihlLmNhbGwobixuLl9fZGF0YV9fLGksbykpKX06
KGU9cihlKSxmdW5jdGlvbihuKXtuLl9fdHJhbnNpdGlvbl9fW3VdLnR3ZWVuLnNldCh0LGUpfSkp
fWZ1bmN0aW9uIERvKG4pe3JldHVybiBudWxsPT1uJiYobj0iIiksZnVuY3Rpb24oKXt0aGlzLnRl
eHRDb250ZW50PW59fWZ1bmN0aW9uIFBvKG4sdCxlLHIpe3ZhciB1PW4uX190cmFuc2l0aW9uX198
fChuLl9fdHJhbnNpdGlvbl9fPXthY3RpdmU6MCxjb3VudDowfSksaT11W2VdO2lmKCFpKXt2YXIg
YT1yLnRpbWU7aT11W2VdPXt0d2VlbjpuZXcgbyx0aW1lOmEsZWFzZTpyLmVhc2UsZGVsYXk6ci5k
ZWxheSxkdXJhdGlvbjpyLmR1cmF0aW9ufSwrK3UuY291bnQsWm8udGltZXIoZnVuY3Rpb24ocil7
ZnVuY3Rpb24gbyhyKXtyZXR1cm4gdS5hY3RpdmU+ZT9zKCk6KHUuYWN0aXZlPWUsaS5ldmVudCYm
aS5ldmVudC5zdGFydC5jYWxsKG4sbCx0KSxpLnR3ZWVuLmZvckVhY2goZnVuY3Rpb24oZSxyKXso
cj1yLmNhbGwobixsLHQpKSYmdi5wdXNoKHIpfSksWm8udGltZXIoZnVuY3Rpb24oKXtyZXR1cm4g
cC5jPWMocnx8MSk/d2U6YywxfSwwLGEpLHZvaWQgMCl9ZnVuY3Rpb24gYyhyKXtpZih1LmFjdGl2
ZSE9PWUpcmV0dXJuIHMoKTtmb3IodmFyIG89ci9nLGE9ZihvKSxjPXYubGVuZ3RoO2M+MDspdlst
LWNdLmNhbGwobixhKTsKK3JldHVybiBvPj0xPyhpLmV2ZW50JiZpLmV2ZW50LmVuZC5jYWxsKG4s
bCx0KSxzKCkpOnZvaWQgMH1mdW5jdGlvbiBzKCl7cmV0dXJuLS11LmNvdW50P2RlbGV0ZSB1W2Vd
OmRlbGV0ZSBuLl9fdHJhbnNpdGlvbl9fLDF9dmFyIGw9bi5fX2RhdGFfXyxmPWkuZWFzZSxoPWku
ZGVsYXksZz1pLmR1cmF0aW9uLHA9QmEsdj1bXTtyZXR1cm4gcC50PWgrYSxyPj1oP28oci1oKToo
cC5jPW8sdm9pZCAwKX0sMCxhKX19ZnVuY3Rpb24gVW8obix0KXtuLmF0dHIoInRyYW5zZm9ybSIs
ZnVuY3Rpb24obil7cmV0dXJuInRyYW5zbGF0ZSgiK3QobikrIiwwKSJ9KX1mdW5jdGlvbiBqbyhu
LHQpe24uYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihuKXtyZXR1cm4idHJhbnNsYXRlKDAsIit0
KG4pKyIpIn0pfWZ1bmN0aW9uIEhvKG4pe3JldHVybiBuLnRvSVNPU3RyaW5nKCl9ZnVuY3Rpb24g
Rm8obix0LGUpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIG4odCl9ZnVuY3Rpb24gdShuLGUpe3ZhciBy
PW5bMV0tblswXSx1PXIvZSxpPVpvLmJpc2VjdChVcyx1KTtyZXR1cm4gaT09VXMubGVuZ3RoP1t0
LnllYXIsRmkobi5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4vMzE1MzZlNn0pLGUpWzJdXTppP3Rb
dS9Vc1tpLTFdPFVzW2ldL3U/aS0xOmldOltGcyxGaShuLGUpWzJdXX1yZXR1cm4gci5pbnZlcnQ9
ZnVuY3Rpb24odCl7cmV0dXJuIE9vKG4uaW52ZXJ0KHQpKX0sci5kb21haW49ZnVuY3Rpb24odCl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4uZG9tYWluKHQpLHIpOm4uZG9tYWluKCkubWFwKE9v
KX0sci5uaWNlPWZ1bmN0aW9uKG4sdCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4haXNOYU4oZSkmJiFu
LnJhbmdlKGUsT28oK2UrMSksdCkubGVuZ3RofXZhciBpPXIuZG9tYWluKCksbz1MaShpKSxhPW51
bGw9PW4/dShvLDEwKToibnVtYmVyIj09dHlwZW9mIG4mJnUobyxuKTtyZXR1cm4gYSYmKG49YVsw
XSx0PWFbMV0pLHIuZG9tYWluKFJpKGksdD4xP3tmbG9vcjpmdW5jdGlvbih0KXtmb3IoO2UodD1u
LmZsb29yKHQpKTspdD1Pbyh0LTEpO3JldHVybiB0fSxjZWlsOmZ1bmN0aW9uKHQpe2Zvcig7ZSh0
PW4uY2VpbCh0KSk7KXQ9T28oK3QrMSk7cmV0dXJuIHR9fTpuKSl9LHIudGlja3M9ZnVuY3Rpb24o
bix0KXt2YXIgZT1MaShyLmRvbWFpbigpKSxpPW51bGw9PW4/dShlLDEwKToibnVtYmVyIj09dHlw
ZW9mIG4/dShlLG4pOiFuLnJhbmdlJiZbe3JhbmdlOm59LHRdO3JldHVybiBpJiYobj1pWzBdLHQ9
aVsxXSksbi5yYW5nZShlWzBdLE9vKCtlWzFdKzEpLDE+dD8xOnQpfSxyLnRpY2tGb3JtYXQ9ZnVu
Y3Rpb24oKXtyZXR1cm4gZX0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEZvKG4uY29weSgpLHQs
ZSl9LGppKHIsbil9ZnVuY3Rpb24gT28obil7cmV0dXJuIG5ldyBEYXRlKG4pfWZ1bmN0aW9uIFlv
KG4pe3JldHVybiBKU09OLnBhcnNlKG4ucmVzcG9uc2VUZXh0KX1mdW5jdGlvbiBJbyhuKXt2YXIg
dD0kby5jcmVhdGVSYW5nZSgpO3JldHVybiB0LnNlbGVjdE5vZGUoJG8uYm9keSksdC5jcmVhdGVD
b250ZXh0dWFsRnJhZ21lbnQobi5yZXNwb25zZVRleHQpfXZhciBabz17dmVyc2lvbjoiMy40LjEx
In07RGF0ZS5ub3d8fChEYXRlLm5vdz1mdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX0pO3ZhciBW
bz1bXS5zbGljZSxYbz1mdW5jdGlvbihuKXtyZXR1cm4gVm8uY2FsbChuKX0sJG89ZG9jdW1lbnQs
Qm89JG8uZG9jdW1lbnRFbGVtZW50LFdvPXdpbmRvdzt0cnl7WG8oQm8uY2hpbGROb2RlcylbMF0u
bm9kZVR5cGV9Y2F0Y2goSm8pe1hvPWZ1bmN0aW9uKG4pe2Zvcih2YXIgdD1uLmxlbmd0aCxlPW5l
dyBBcnJheSh0KTt0LS07KWVbdF09blt0XTtyZXR1cm4gZX19dHJ5eyRvLmNyZWF0ZUVsZW1lbnQo
ImRpdiIpLnN0eWxlLnNldFByb3BlcnR5KCJvcGFjaXR5IiwwLCIiKX1jYXRjaChHbyl7dmFyIEtv
PVdvLkVsZW1lbnQucHJvdG90eXBlLFFvPUtvLnNldEF0dHJpYnV0ZSxuYT1Lby5zZXRBdHRyaWJ1
dGVOUyx0YT1Xby5DU1NTdHlsZURlY2xhcmF0aW9uLnByb3RvdHlwZSxlYT10YS5zZXRQcm9wZXJ0
eTtLby5zZXRBdHRyaWJ1dGU9ZnVuY3Rpb24obix0KXtRby5jYWxsKHRoaXMsbix0KyIiKX0sS28u
c2V0QXR0cmlidXRlTlM9ZnVuY3Rpb24obix0LGUpe25hLmNhbGwodGhpcyxuLHQsZSsiIil9LHRh
LnNldFByb3BlcnR5PWZ1bmN0aW9uKG4sdCxlKXtlYS5jYWxsKHRoaXMsbix0KyIiLGUpfX1aby5h
c2NlbmRpbmc9bixaby5kZXNjZW5kaW5nPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4+dD8tMTp0Pm4/
MTp0Pj1uPzA6MC8wfSxaby5taW49ZnVuY3Rpb24obix0KXt2YXIgZSxyLHU9LTEsaT1uLmxlbmd0
aDtpZigxPT09YXJndW1lbnRzLmxlbmd0aCl7Zm9yKDsrK3U8aSYmIShudWxsIT0oZT1uW3VdKSYm
ZT49ZSk7KWU9dm9pZCAwO2Zvcig7Kyt1PGk7KW51bGwhPShyPW5bdV0pJiZlPnImJihlPXIpfWVs
c2V7Zm9yKDsrK3U8aSYmIShudWxsIT0oZT10LmNhbGwobixuW3VdLHUpKSYmZT49ZSk7KWU9dm9p
ZCAwO2Zvcig7Kyt1PGk7KW51bGwhPShyPXQuY2FsbChuLG5bdV0sdSkpJiZlPnImJihlPXIpfXJl
dHVybiBlfSxaby5tYXg9ZnVuY3Rpb24obix0KXt2YXIgZSxyLHU9LTEsaT1uLmxlbmd0aDtpZigx
PT09YXJndW1lbnRzLmxlbmd0aCl7Zm9yKDsrK3U8aSYmIShudWxsIT0oZT1uW3VdKSYmZT49ZSk7
KWU9dm9pZCAwO2Zvcig7Kyt1PGk7KW51bGwhPShyPW5bdV0pJiZyPmUmJihlPXIpfWVsc2V7Zm9y
KDsrK3U8aSYmIShudWxsIT0oZT10LmNhbGwobixuW3VdLHUpKSYmZT49ZSk7KWU9dm9pZCAwO2Zv
cig7Kyt1PGk7KW51bGwhPShyPXQuY2FsbChuLG5bdV0sdSkpJiZyPmUmJihlPXIpfXJldHVybiBl
fSxaby5leHRlbnQ9ZnVuY3Rpb24obix0KXt2YXIgZSxyLHUsaT0tMSxvPW4ubGVuZ3RoO2lmKDE9
PT1hcmd1bWVudHMubGVuZ3RoKXtmb3IoOysraTxvJiYhKG51bGwhPShlPXU9bltpXSkmJmU+PWUp
OyllPXU9dm9pZCAwO2Zvcig7KytpPG87KW51bGwhPShyPW5baV0pJiYoZT5yJiYoZT1yKSxyPnUm
Jih1PXIpKX1lbHNle2Zvcig7KytpPG8mJiEobnVsbCE9KGU9dT10LmNhbGwobixuW2ldLGkpKSYm
ZT49ZSk7KWU9dm9pZCAwO2Zvcig7KytpPG87KW51bGwhPShyPXQuY2FsbChuLG5baV0saSkpJiYo
ZT5yJiYoZT1yKSxyPnUmJih1PXIpKX1yZXR1cm5bZSx1XX0sWm8uc3VtPWZ1bmN0aW9uKG4sdCl7
dmFyIGUscj0wLHU9bi5sZW5ndGgsaT0tMTtpZigxPT09YXJndW1lbnRzLmxlbmd0aClmb3IoOysr
aTx1Oylpc05hTihlPStuW2ldKXx8KHIrPWUpO2Vsc2UgZm9yKDsrK2k8dTspaXNOYU4oZT0rdC5j
YWxsKG4sbltpXSxpKSl8fChyKz1lKTtyZXR1cm4gcn0sWm8ubWVhbj1mdW5jdGlvbihuLGUpe3Zh
ciByLHU9MCxpPW4ubGVuZ3RoLG89LTEsYT1pO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKWZvcig7
KytvPGk7KXQocj1uW29dKT91Kz1yOi0tYTtlbHNlIGZvcig7KytvPGk7KXQocj1lLmNhbGwobixu
W29dLG8pKT91Kz1yOi0tYTtyZXR1cm4gYT91L2E6dm9pZCAwfSxaby5xdWFudGlsZT1mdW5jdGlv
bihuLHQpe3ZhciBlPShuLmxlbmd0aC0xKSp0KzEscj1NYXRoLmZsb29yKGUpLHU9K25bci0xXSxp
PWUtcjtyZXR1cm4gaT91K2kqKG5bcl0tdSk6dX0sWm8ubWVkaWFuPWZ1bmN0aW9uKGUscil7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg+MSYmKGU9ZS5tYXAocikpLGU9ZS5maWx0ZXIodCksZS5sZW5n
dGg/Wm8ucXVhbnRpbGUoZS5zb3J0KG4pLC41KTp2b2lkIDB9O3ZhciByYT1lKG4pO1pvLmJpc2Vj
dExlZnQ9cmEubGVmdCxaby5iaXNlY3Q9Wm8uYmlzZWN0UmlnaHQ9cmEucmlnaHQsWm8uYmlzZWN0
b3I9ZnVuY3Rpb24odCl7cmV0dXJuIGUoMT09PXQubGVuZ3RoP2Z1bmN0aW9uKGUscil7cmV0dXJu
IG4odChlKSxyKX06dCl9LFpvLnNodWZmbGU9ZnVuY3Rpb24obil7Zm9yKHZhciB0LGUscj1uLmxl
bmd0aDtyOyllPTB8TWF0aC5yYW5kb20oKSpyLS0sdD1uW3JdLG5bcl09bltlXSxuW2VdPXQ7cmV0
dXJuIG59LFpvLnBlcm11dGU9ZnVuY3Rpb24obix0KXtmb3IodmFyIGU9dC5sZW5ndGgscj1uZXcg
QXJyYXkoZSk7ZS0tOylyW2VdPW5bdFtlXV07cmV0dXJuIHJ9LFpvLnBhaXJzPWZ1bmN0aW9uKG4p
e2Zvcih2YXIgdCxlPTAscj1uLmxlbmd0aC0xLHU9blswXSxpPW5ldyBBcnJheSgwPnI/MDpyKTty
PmU7KWlbZV09W3Q9dSx1PW5bKytlXV07cmV0dXJuIGl9LFpvLnppcD1mdW5jdGlvbigpe2lmKCEo
dT1hcmd1bWVudHMubGVuZ3RoKSlyZXR1cm5bXTtmb3IodmFyIG49LTEsdD1aby5taW4oYXJndW1l
bnRzLHIpLGU9bmV3IEFycmF5KHQpOysrbjx0Oylmb3IodmFyIHUsaT0tMSxvPWVbbl09bmV3IEFy
cmF5KHUpOysraTx1OylvW2ldPWFyZ3VtZW50c1tpXVtuXTtyZXR1cm4gZX0sWm8udHJhbnNwb3Nl
PWZ1bmN0aW9uKG4pe3JldHVybiBaby56aXAuYXBwbHkoWm8sbil9LFpvLmtleXM9ZnVuY3Rpb24o
bil7dmFyIHQ9W107Zm9yKHZhciBlIGluIG4pdC5wdXNoKGUpO3JldHVybiB0fSxaby52YWx1ZXM9
ZnVuY3Rpb24obil7dmFyIHQ9W107Zm9yKHZhciBlIGluIG4pdC5wdXNoKG5bZV0pO3JldHVybiB0
fSxaby5lbnRyaWVzPWZ1bmN0aW9uKG4pe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiBuKXQucHVzaCh7
a2V5OmUsdmFsdWU6bltlXX0pO3JldHVybiB0fSxaby5tZXJnZT1mdW5jdGlvbihuKXtmb3IodmFy
IHQsZSxyLHU9bi5sZW5ndGgsaT0tMSxvPTA7KytpPHU7KW8rPW5baV0ubGVuZ3RoO2ZvcihlPW5l
dyBBcnJheShvKTstLXU+PTA7KWZvcihyPW5bdV0sdD1yLmxlbmd0aDstLXQ+PTA7KWVbLS1vXT1y
W3RdO3JldHVybiBlfTt2YXIgdWE9TWF0aC5hYnM7Wm8ucmFuZ2U9ZnVuY3Rpb24obix0LGUpe2lm
KGFyZ3VtZW50cy5sZW5ndGg8MyYmKGU9MSxhcmd1bWVudHMubGVuZ3RoPDImJih0PW4sbj0wKSks
MS8wPT09KHQtbikvZSl0aHJvdyBuZXcgRXJyb3IoImluZmluaXRlIHJhbmdlIik7dmFyIHIsaT1b
XSxvPXUodWEoZSkpLGE9LTE7aWYobio9byx0Kj1vLGUqPW8sMD5lKWZvcig7KHI9bitlKisrYSk+
dDspaS5wdXNoKHIvbyk7ZWxzZSBmb3IoOyhyPW4rZSorK2EpPHQ7KWkucHVzaChyL28pO3JldHVy
biBpfSxaby5tYXA9ZnVuY3Rpb24obil7dmFyIHQ9bmV3IG87aWYobiBpbnN0YW5jZW9mIG8pbi5m
b3JFYWNoKGZ1bmN0aW9uKG4sZSl7dC5zZXQobixlKX0pO2Vsc2UgZm9yKHZhciBlIGluIG4pdC5z
ZXQoZSxuW2VdKTtyZXR1cm4gdH0saShvLHtoYXM6YSxnZXQ6ZnVuY3Rpb24obil7cmV0dXJuIHRo
aXNbaWErbl19LHNldDpmdW5jdGlvbihuLHQpe3JldHVybiB0aGlzW2lhK25dPXR9LHJlbW92ZTpj
LGtleXM6cyx2YWx1ZXM6ZnVuY3Rpb24oKXt2YXIgbj1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1
bmN0aW9uKHQsZSl7bi5wdXNoKGUpfSksbn0sZW50cmllczpmdW5jdGlvbigpe3ZhciBuPVtdO3Jl
dHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24odCxlKXtuLnB1c2goe2tleTp0LHZhbHVlOmV9KX0p
LG59LHNpemU6bCxlbXB0eTpmLGZvckVhY2g6ZnVuY3Rpb24obil7Zm9yKHZhciB0IGluIHRoaXMp
dC5jaGFyQ29kZUF0KDApPT09b2EmJm4uY2FsbCh0aGlzLHQuc3Vic3RyaW5nKDEpLHRoaXNbdF0p
fX0pO3ZhciBpYT0iXHgwMCIsb2E9aWEuY2hhckNvZGVBdCgwKTtaby5uZXN0PWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gbih0LGEsYyl7aWYoYz49aS5sZW5ndGgpcmV0dXJuIHI/ci5jYWxsKHUsYSk6ZT9h
LnNvcnQoZSk6YTtmb3IodmFyIHMsbCxmLGgsZz0tMSxwPWEubGVuZ3RoLHY9aVtjKytdLGQ9bmV3
IG87KytnPHA7KShoPWQuZ2V0KHM9dihsPWFbZ10pKSk/aC5wdXNoKGwpOmQuc2V0KHMsW2xdKTty
ZXR1cm4gdD8obD10KCksZj1mdW5jdGlvbihlLHIpe2wuc2V0KGUsbih0LHIsYykpfSk6KGw9e30s
Zj1mdW5jdGlvbihlLHIpe2xbZV09bih0LHIsYyl9KSxkLmZvckVhY2goZiksbH1mdW5jdGlvbiB0
KG4sZSl7aWYoZT49aS5sZW5ndGgpcmV0dXJuIG47dmFyIHI9W10sdT1hW2UrK107cmV0dXJuIG4u
Zm9yRWFjaChmdW5jdGlvbihuLHUpe3IucHVzaCh7a2V5Om4sdmFsdWVzOnQodSxlKX0pfSksdT9y
LnNvcnQoZnVuY3Rpb24obix0KXtyZXR1cm4gdShuLmtleSx0LmtleSl9KTpyfXZhciBlLHIsdT17
fSxpPVtdLGE9W107cmV0dXJuIHUubWFwPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oZSx0LDApfSx1
LmVudHJpZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHQobihaby5tYXAsZSwwKSwwKX0sdS5rZXk9ZnVu
Y3Rpb24obil7cmV0dXJuIGkucHVzaChuKSx1fSx1LnNvcnRLZXlzPWZ1bmN0aW9uKG4pe3JldHVy
biBhW2kubGVuZ3RoLTFdPW4sdX0sdS5zb3J0VmFsdWVzPWZ1bmN0aW9uKG4pe3JldHVybiBlPW4s
dX0sdS5yb2xsdXA9ZnVuY3Rpb24obil7cmV0dXJuIHI9bix1fSx1fSxaby5zZXQ9ZnVuY3Rpb24o
bil7dmFyIHQ9bmV3IGg7aWYobilmb3IodmFyIGU9MCxyPW4ubGVuZ3RoO3I+ZTsrK2UpdC5hZGQo
bltlXSk7cmV0dXJuIHR9LGkoaCx7aGFzOmEsYWRkOmZ1bmN0aW9uKG4pe3JldHVybiB0aGlzW2lh
K25dPSEwLG59LHJlbW92ZTpmdW5jdGlvbihuKXtyZXR1cm4gbj1pYStuLG4gaW4gdGhpcyYmZGVs
ZXRlIHRoaXNbbl19LHZhbHVlczpzLHNpemU6bCxlbXB0eTpmLGZvckVhY2g6ZnVuY3Rpb24obil7
Zm9yKHZhciB0IGluIHRoaXMpdC5jaGFyQ29kZUF0KDApPT09b2EmJm4uY2FsbCh0aGlzLHQuc3Vi
c3RyaW5nKDEpKX19KSxaby5iZWhhdmlvcj17fSxaby5yZWJpbmQ9ZnVuY3Rpb24obix0KXtmb3Io
dmFyIGUscj0xLHU9YXJndW1lbnRzLmxlbmd0aDsrK3I8dTspbltlPWFyZ3VtZW50c1tyXV09Zyhu
LHQsdFtlXSk7cmV0dXJuIG59O3ZhciBhYT1bIndlYmtpdCIsIm1zIiwibW96IiwiTW96IiwibyIs
Ik8iXTtaby5kaXNwYXRjaD1mdW5jdGlvbigpe2Zvcih2YXIgbj1uZXcgZCx0PS0xLGU9YXJndW1l
bnRzLmxlbmd0aDsrK3Q8ZTspblthcmd1bWVudHNbdF1dPW0obik7cmV0dXJuIG59LGQucHJvdG90
eXBlLm9uPWZ1bmN0aW9uKG4sdCl7dmFyIGU9bi5pbmRleE9mKCIuIikscj0iIjtpZihlPj0wJiYo
cj1uLnN1YnN0cmluZyhlKzEpLG49bi5zdWJzdHJpbmcoMCxlKSksbilyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aDwyP3RoaXNbbl0ub24ocik6dGhpc1tuXS5vbihyLHQpO2lmKDI9PT1hcmd1bWVudHMu
bGVuZ3RoKXtpZihudWxsPT10KWZvcihuIGluIHRoaXMpdGhpcy5oYXNPd25Qcm9wZXJ0eShuKSYm
dGhpc1tuXS5vbihyLG51bGwpO3JldHVybiB0aGlzfX0sWm8uZXZlbnQ9bnVsbCxaby5yZXF1b3Rl
PWZ1bmN0aW9uKG4pe3JldHVybiBuLnJlcGxhY2UoY2EsIlxcJCYiKX07dmFyIGNhPS9bXFxcXlwk
XCpcK1w/XHxcW1xdXChcKVwuXHtcfV0vZyxzYT17fS5fX3Byb3RvX18/ZnVuY3Rpb24obix0KXtu
Ll9fcHJvdG9fXz10fTpmdW5jdGlvbihuLHQpe2Zvcih2YXIgZSBpbiB0KW5bZV09dFtlXX0sbGE9
ZnVuY3Rpb24obix0KXtyZXR1cm4gdC5xdWVyeVNlbGVjdG9yKG4pfSxmYT1mdW5jdGlvbihuLHQp
e3JldHVybiB0LnF1ZXJ5U2VsZWN0b3JBbGwobil9LGhhPUJvLm1hdGNoZXN8fEJvW3AoQm8sIm1h
dGNoZXNTZWxlY3RvciIpXSxnYT1mdW5jdGlvbihuLHQpe3JldHVybiBoYS5jYWxsKG4sdCl9OyJm
dW5jdGlvbiI9PXR5cGVvZiBTaXp6bGUmJihsYT1mdW5jdGlvbihuLHQpe3JldHVybiBTaXp6bGUo
bix0KVswXXx8bnVsbH0sZmE9U2l6emxlLGdhPVNpenpsZS5tYXRjaGVzU2VsZWN0b3IpLFpvLnNl
bGVjdGlvbj1mdW5jdGlvbigpe3JldHVybiBtYX07dmFyIHBhPVpvLnNlbGVjdGlvbi5wcm90b3R5
cGU9W107cGEuc2VsZWN0PWZ1bmN0aW9uKG4pe3ZhciB0LGUscix1LGk9W107bj1iKG4pO2Zvcih2
YXIgbz0tMSxhPXRoaXMubGVuZ3RoOysrbzxhOyl7aS5wdXNoKHQ9W10pLHQucGFyZW50Tm9kZT0o
cj10aGlzW29dKS5wYXJlbnROb2RlO2Zvcih2YXIgYz0tMSxzPXIubGVuZ3RoOysrYzxzOykodT1y
W2NdKT8odC5wdXNoKGU9bi5jYWxsKHUsdS5fX2RhdGFfXyxjLG8pKSxlJiYiX19kYXRhX18iaW4g
dSYmKGUuX19kYXRhX189dS5fX2RhdGFfXykpOnQucHVzaChudWxsKX1yZXR1cm4gXyhpKX0scGEu
c2VsZWN0QWxsPWZ1bmN0aW9uKG4pe3ZhciB0LGUscj1bXTtuPXcobik7Zm9yKHZhciB1PS0xLGk9
dGhpcy5sZW5ndGg7Kyt1PGk7KWZvcih2YXIgbz10aGlzW3VdLGE9LTEsYz1vLmxlbmd0aDsrK2E8
YzspKGU9b1thXSkmJihyLnB1c2godD1YbyhuLmNhbGwoZSxlLl9fZGF0YV9fLGEsdSkpKSx0LnBh
cmVudE5vZGU9ZSk7cmV0dXJuIF8ocil9O3ZhciB2YT17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIseGh0bWw6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLHhsaW5rOiJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4
L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07Wm8ubnM9
e3ByZWZpeDp2YSxxdWFsaWZ5OmZ1bmN0aW9uKG4pe3ZhciB0PW4uaW5kZXhPZigiOiIpLGU9bjty
ZXR1cm4gdD49MCYmKGU9bi5zdWJzdHJpbmcoMCx0KSxuPW4uc3Vic3RyaW5nKHQrMSkpLHZhLmhh
c093blByb3BlcnR5KGUpP3tzcGFjZTp2YVtlXSxsb2NhbDpufTpufX0scGEuYXR0cj1mdW5jdGlv
bihuLHQpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7aWYoInN0cmluZyI9PXR5cGVvZiBuKXt2YXIg
ZT10aGlzLm5vZGUoKTtyZXR1cm4gbj1aby5ucy5xdWFsaWZ5KG4pLG4ubG9jYWw/ZS5nZXRBdHRy
aWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpOmUuZ2V0QXR0cmlidXRlKG4pfWZvcih0IGluIG4pdGhp
cy5lYWNoKFModCxuW3RdKSk7cmV0dXJuIHRoaXN9cmV0dXJuIHRoaXMuZWFjaChTKG4sdCkpfSxw
YS5jbGFzc2VkPWZ1bmN0aW9uKG4sdCl7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtpZigic3RyaW5n
Ij09dHlwZW9mIG4pe3ZhciBlPXRoaXMubm9kZSgpLHI9KG49QShuKSkubGVuZ3RoLHU9LTE7aWYo
dD1lLmNsYXNzTGlzdCl7Zm9yKDsrK3U8cjspaWYoIXQuY29udGFpbnMoblt1XSkpcmV0dXJuITF9
ZWxzZSBmb3IodD1lLmdldEF0dHJpYnV0ZSgiY2xhc3MiKTsrK3U8cjspaWYoIUUoblt1XSkudGVz
dCh0KSlyZXR1cm4hMTtyZXR1cm4hMH1mb3IodCBpbiBuKXRoaXMuZWFjaChDKHQsblt0XSkpO3Jl
dHVybiB0aGlzfXJldHVybiB0aGlzLmVhY2goQyhuLHQpKX0scGEuc3R5bGU9ZnVuY3Rpb24obix0
LGUpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg7aWYoMz5yKXtpZigic3RyaW5nIiE9dHlwZW9mIG4p
ezI+ciYmKHQ9IiIpO2ZvcihlIGluIG4pdGhpcy5lYWNoKHooZSxuW2VdLHQpKTtyZXR1cm4gdGhp
c31pZigyPnIpcmV0dXJuIFdvLmdldENvbXB1dGVkU3R5bGUodGhpcy5ub2RlKCksbnVsbCkuZ2V0
UHJvcGVydHlWYWx1ZShuKTtlPSIifXJldHVybiB0aGlzLmVhY2goeihuLHQsZSkpfSxwYS5wcm9w
ZXJ0eT1mdW5jdGlvbihuLHQpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7aWYoInN0cmluZyI9PXR5
cGVvZiBuKXJldHVybiB0aGlzLm5vZGUoKVtuXTtmb3IodCBpbiBuKXRoaXMuZWFjaChMKHQsblt0
XSkpO3JldHVybiB0aGlzfXJldHVybiB0aGlzLmVhY2goTChuLHQpKX0scGEudGV4dD1mdW5jdGlv
bihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goImZ1bmN0aW9uIj09dHlwZW9m
IG4/ZnVuY3Rpb24oKXt2YXIgdD1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250
ZW50PW51bGw9PXQ/IiI6dH06bnVsbD09bj9mdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9IiJ9
OmZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD1ufSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9
LHBhLmh0bWw9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCJm
dW5jdGlvbiI9PXR5cGVvZiBuP2Z1bmN0aW9uKCl7dmFyIHQ9bi5hcHBseSh0aGlzLGFyZ3VtZW50
cyk7dGhpcy5pbm5lckhUTUw9bnVsbD09dD8iIjp0fTpudWxsPT1uP2Z1bmN0aW9uKCl7dGhpcy5p
bm5lckhUTUw9IiJ9OmZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9bn0pOnRoaXMubm9kZSgpLmlu
bmVySFRNTH0scGEuYXBwZW5kPWZ1bmN0aW9uKG4pe3JldHVybiBuPVQobiksdGhpcy5zZWxlY3Qo
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChuLmFwcGx5KHRoaXMsYXJndW1lbnRz
KSl9KX0scGEuaW5zZXJ0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG49VChuKSx0PWIodCksdGhpcy5z
ZWxlY3QoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUobi5hcHBseSh0aGlzLGFy
Z3VtZW50cyksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSl9LHBhLnJlbW92ZT1mdW5j
dGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgbj10aGlzLnBhcmVudE5vZGU7
biYmbi5yZW1vdmVDaGlsZCh0aGlzKX0pfSxwYS5kYXRhPWZ1bmN0aW9uKG4sdCl7ZnVuY3Rpb24g
ZShuLGUpe3ZhciByLHUsaSxhPW4ubGVuZ3RoLGY9ZS5sZW5ndGgsaD1NYXRoLm1pbihhLGYpLGc9
bmV3IEFycmF5KGYpLHA9bmV3IEFycmF5KGYpLHY9bmV3IEFycmF5KGEpO2lmKHQpe3ZhciBkLG09
bmV3IG8seT1uZXcgbyx4PVtdO2ZvcihyPS0xOysrcjxhOylkPXQuY2FsbCh1PW5bcl0sdS5fX2Rh
dGFfXyxyKSxtLmhhcyhkKT92W3JdPXU6bS5zZXQoZCx1KSx4LnB1c2goZCk7Zm9yKHI9LTE7Kyty
PGY7KWQ9dC5jYWxsKGUsaT1lW3JdLHIpLCh1PW0uZ2V0KGQpKT8oZ1tyXT11LHUuX19kYXRhX189
aSk6eS5oYXMoZCl8fChwW3JdPXEoaSkpLHkuc2V0KGQsaSksbS5yZW1vdmUoZCk7Zm9yKHI9LTE7
KytyPGE7KW0uaGFzKHhbcl0pJiYodltyXT1uW3JdKX1lbHNle2ZvcihyPS0xOysrcjxoOyl1PW5b
cl0saT1lW3JdLHU/KHUuX19kYXRhX189aSxnW3JdPXUpOnBbcl09cShpKTtmb3IoO2Y+cjsrK3Ip
cFtyXT1xKGVbcl0pO2Zvcig7YT5yOysrcil2W3JdPW5bcl19cC51cGRhdGU9ZyxwLnBhcmVudE5v
ZGU9Zy5wYXJlbnROb2RlPXYucGFyZW50Tm9kZT1uLnBhcmVudE5vZGUsYy5wdXNoKHApLHMucHVz
aChnKSxsLnB1c2godil9dmFyIHIsdSxpPS0xLGE9dGhpcy5sZW5ndGg7aWYoIWFyZ3VtZW50cy5s
ZW5ndGgpe2ZvcihuPW5ldyBBcnJheShhPShyPXRoaXNbMF0pLmxlbmd0aCk7KytpPGE7KSh1PXJb
aV0pJiYobltpXT11Ll9fZGF0YV9fKTtyZXR1cm4gbn12YXIgYz1VKFtdKSxzPV8oW10pLGw9Xyhb
XSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4pZm9yKDsrK2k8YTspZShyPXRoaXNbaV0sbi5jYWxs
KHIsci5wYXJlbnROb2RlLl9fZGF0YV9fLGkpKTtlbHNlIGZvcig7KytpPGE7KWUocj10aGlzW2ld
LG4pO3JldHVybiBzLmVudGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGN9LHMuZXhpdD1mdW5jdGlvbigp
e3JldHVybiBsfSxzfSxwYS5kYXR1bT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsbik6dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iKX0s
cGEuZmlsdGVyPWZ1bmN0aW9uKG4pe3ZhciB0LGUscix1PVtdOyJmdW5jdGlvbiIhPXR5cGVvZiBu
JiYobj1SKG4pKTtmb3IodmFyIGk9MCxvPXRoaXMubGVuZ3RoO28+aTtpKyspe3UucHVzaCh0PVtd
KSx0LnBhcmVudE5vZGU9KGU9dGhpc1tpXSkucGFyZW50Tm9kZTtmb3IodmFyIGE9MCxjPWUubGVu
Z3RoO2M+YTthKyspKHI9ZVthXSkmJm4uY2FsbChyLHIuX19kYXRhX18sYSxpKSYmdC5wdXNoKHIp
fXJldHVybiBfKHUpfSxwYS5vcmRlcj1mdW5jdGlvbigpe2Zvcih2YXIgbj0tMSx0PXRoaXMubGVu
Z3RoOysrbjx0Oylmb3IodmFyIGUscj10aGlzW25dLHU9ci5sZW5ndGgtMSxpPXJbdV07LS11Pj0w
OykoZT1yW3VdKSYmKGkmJmkhPT1lLm5leHRTaWJsaW5nJiZpLnBhcmVudE5vZGUuaW5zZXJ0QmVm
b3JlKGUsaSksaT1lKTtyZXR1cm4gdGhpc30scGEuc29ydD1mdW5jdGlvbihuKXtuPUQuYXBwbHko
dGhpcyxhcmd1bWVudHMpO2Zvcih2YXIgdD0tMSxlPXRoaXMubGVuZ3RoOysrdDxlOyl0aGlzW3Rd
LnNvcnQobik7cmV0dXJuIHRoaXMub3JkZXIoKX0scGEuZWFjaD1mdW5jdGlvbihuKXtyZXR1cm4g
UCh0aGlzLGZ1bmN0aW9uKHQsZSxyKXtuLmNhbGwodCx0Ll9fZGF0YV9fLGUscil9KX0scGEuY2Fs
bD1mdW5jdGlvbihuKXt2YXIgdD1Ybyhhcmd1bWVudHMpO3JldHVybiBuLmFwcGx5KHRbMF09dGhp
cyx0KSx0aGlzfSxwYS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiF0aGlzLm5vZGUoKX0scGEubm9k
ZT1mdW5jdGlvbigpe2Zvcih2YXIgbj0wLHQ9dGhpcy5sZW5ndGg7dD5uO24rKylmb3IodmFyIGU9
dGhpc1tuXSxyPTAsdT1lLmxlbmd0aDt1PnI7cisrKXt2YXIgaT1lW3JdO2lmKGkpcmV0dXJuIGl9
cmV0dXJuIG51bGx9LHBhLnNpemU9ZnVuY3Rpb24oKXt2YXIgbj0wO3JldHVybiB0aGlzLmVhY2go
ZnVuY3Rpb24oKXsrK259KSxufTt2YXIgZGE9W107Wm8uc2VsZWN0aW9uLmVudGVyPVUsWm8uc2Vs
ZWN0aW9uLmVudGVyLnByb3RvdHlwZT1kYSxkYS5hcHBlbmQ9cGEuYXBwZW5kLGRhLmVtcHR5PXBh
LmVtcHR5LGRhLm5vZGU9cGEubm9kZSxkYS5jYWxsPXBhLmNhbGwsZGEuc2l6ZT1wYS5zaXplLGRh
LnNlbGVjdD1mdW5jdGlvbihuKXtmb3IodmFyIHQsZSxyLHUsaSxvPVtdLGE9LTEsYz10aGlzLmxl
bmd0aDsrK2E8Yzspe3I9KHU9dGhpc1thXSkudXBkYXRlLG8ucHVzaCh0PVtdKSx0LnBhcmVudE5v
ZGU9dS5wYXJlbnROb2RlO2Zvcih2YXIgcz0tMSxsPXUubGVuZ3RoOysrczxsOykoaT11W3NdKT8o
dC5wdXNoKHJbc109ZT1uLmNhbGwodS5wYXJlbnROb2RlLGkuX19kYXRhX18scyxhKSksZS5fX2Rh
dGFfXz1pLl9fZGF0YV9fKTp0LnB1c2gobnVsbCl9cmV0dXJuIF8obyl9LGRhLmluc2VydD1mdW5j
dGlvbihuLHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDImJih0PWoodGhpcykpLHBhLmluc2Vy
dC5jYWxsKHRoaXMsbix0KX0scGEudHJhbnNpdGlvbj1mdW5jdGlvbigpe2Zvcih2YXIgbix0LGU9
U3N8fCsrTnMscj1bXSx1PWtzfHx7dGltZTpEYXRlLm5vdygpLGVhc2U6eHUsZGVsYXk6MCxkdXJh
dGlvbjoyNTB9LGk9LTEsbz10aGlzLmxlbmd0aDsrK2k8bzspe3IucHVzaChuPVtdKTtmb3IodmFy
IGE9dGhpc1tpXSxjPS0xLHM9YS5sZW5ndGg7KytjPHM7KSh0PWFbY10pJiZQbyh0LGMsZSx1KSxu
LnB1c2godCl9cmV0dXJuIHFvKHIsZSl9LHBhLmludGVycnVwdD1mdW5jdGlvbigpe3JldHVybiB0
aGlzLmVhY2goSCl9LFpvLnNlbGVjdD1mdW5jdGlvbihuKXt2YXIgdD1bInN0cmluZyI9PXR5cGVv
ZiBuP2xhKG4sJG8pOm5dO3JldHVybiB0LnBhcmVudE5vZGU9Qm8sXyhbdF0pfSxaby5zZWxlY3RB
bGw9ZnVuY3Rpb24obil7dmFyIHQ9WG8oInN0cmluZyI9PXR5cGVvZiBuP2ZhKG4sJG8pOm4pO3Jl
dHVybiB0LnBhcmVudE5vZGU9Qm8sXyhbdF0pfTt2YXIgbWE9Wm8uc2VsZWN0KEJvKTtwYS5vbj1m
dW5jdGlvbihuLHQsZSl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aDtpZigzPnIpe2lmKCJzdHJpbmci
IT10eXBlb2Ygbil7Mj5yJiYodD0hMSk7Zm9yKGUgaW4gbil0aGlzLmVhY2goRihlLG5bZV0sdCkp
O3JldHVybiB0aGlzfWlmKDI+cilyZXR1cm4ocj10aGlzLm5vZGUoKVsiX19vbiIrbl0pJiZyLl87
ZT0hMX1yZXR1cm4gdGhpcy5lYWNoKEYobix0LGUpKX07dmFyIHlhPVpvLm1hcCh7bW91c2VlbnRl
cjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KTt5YS5mb3JFYWNoKGZ1bmN0aW9u
KG4peyJvbiIrbiBpbiAkbyYmeWEucmVtb3ZlKG4pfSk7dmFyIHhhPSJvbnNlbGVjdHN0YXJ0Imlu
ICRvP251bGw6cChCby5zdHlsZSwidXNlclNlbGVjdCIpLE1hPTA7Wm8ubW91c2U9ZnVuY3Rpb24o
bil7cmV0dXJuIFoobix4KCkpfTt2YXIgX2E9L1dlYktpdC8udGVzdChXby5uYXZpZ2F0b3IudXNl
ckFnZW50KT8tMTowO1pvLnRvdWNoZXM9ZnVuY3Rpb24obix0KXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aDwyJiYodD14KCkudG91Y2hlcyksdD9Ybyh0KS5tYXAoZnVuY3Rpb24odCl7dmFyIGU9Wihu
LHQpO3JldHVybiBlLmlkZW50aWZpZXI9dC5pZGVudGlmaWVyLGV9KTpbXX0sWm8uYmVoYXZpb3Iu
ZHJhZz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oKXt0aGlzLm9uKCJtb3VzZWRvd24uZHJhZyIsdSku
b24oInRvdWNoc3RhcnQuZHJhZyIsaSl9ZnVuY3Rpb24gdChuLHQsdSxpLG8pe3JldHVybiBmdW5j
dGlvbigpe2Z1bmN0aW9uIGEoKXt2YXIgbixlLHI9dChoLHYpO3ImJihuPXJbMF0teFswXSxlPXJb
MV0teFsxXSxwfD1ufGUseD1yLGcoe3R5cGU6ImRyYWciLHg6clswXStzWzBdLHk6clsxXStzWzFd
LGR4Om4sZHk6ZX0pKX1mdW5jdGlvbiBjKCl7dChoLHYpJiYobS5vbihpK2QsbnVsbCkub24obytk
LG51bGwpLHkocCYmWm8uZXZlbnQudGFyZ2V0PT09ZiksZyh7dHlwZToiZHJhZ2VuZCJ9KSl9dmFy
IHMsbD10aGlzLGY9Wm8uZXZlbnQudGFyZ2V0LGg9bC5wYXJlbnROb2RlLGc9ZS5vZihsLGFyZ3Vt
ZW50cykscD0wLHY9bigpLGQ9Ii5kcmFnIisobnVsbD09dj8iIjoiLSIrdiksbT1aby5zZWxlY3Qo
dSgpKS5vbihpK2QsYSkub24obytkLGMpLHk9SSgpLHg9dChoLHYpO3I/KHM9ci5hcHBseShsLGFy
Z3VtZW50cykscz1bcy54LXhbMF0scy55LXhbMV1dKTpzPVswLDBdLGcoe3R5cGU6ImRyYWdzdGFy
dCJ9KX19dmFyIGU9TShuLCJkcmFnIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIpLHI9bnVsbCx1PXQo
dixaby5tb3VzZSwkLCJtb3VzZW1vdmUiLCJtb3VzZXVwIiksaT10KFYsWm8udG91Y2gsWCwidG91
Y2htb3ZlIiwidG91Y2hlbmQiKTtyZXR1cm4gbi5vcmlnaW49ZnVuY3Rpb24odCl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHI9dCxuKTpyfSxaby5yZWJpbmQobixlLCJvbiIpfTt2YXIgYmE9TWF0
aC5QSSx3YT0yKmJhLFNhPWJhLzIsa2E9MWUtNixFYT1rYSprYSxBYT1iYS8xODAsQ2E9MTgwL2Jh
LE5hPU1hdGguU1FSVDIsemE9MixMYT00O1pvLmludGVycG9sYXRlWm9vbT1mdW5jdGlvbihuLHQp
e2Z1bmN0aW9uIGUobil7dmFyIHQ9bip5O2lmKG0pe3ZhciBlPVEodiksbz1pLyh6YSpoKSooZSpu
dChOYSp0K3YpLUsodikpO3JldHVybltyK28qcyx1K28qbCxpKmUvUShOYSp0K3YpXX1yZXR1cm5b
cituKnMsdStuKmwsaSpNYXRoLmV4cChOYSp0KV19dmFyIHI9blswXSx1PW5bMV0saT1uWzJdLG89
dFswXSxhPXRbMV0sYz10WzJdLHM9by1yLGw9YS11LGY9cypzK2wqbCxoPU1hdGguc3FydChmKSxn
PShjKmMtaSppK0xhKmYpLygyKmkqemEqaCkscD0oYypjLWkqaS1MYSpmKS8oMipjKnphKmgpLHY9
TWF0aC5sb2coTWF0aC5zcXJ0KGcqZysxKS1nKSxkPU1hdGgubG9nKE1hdGguc3FydChwKnArMSkt
cCksbT1kLXYseT0obXx8TWF0aC5sb2coYy9pKSkvTmE7cmV0dXJuIGUuZHVyYXRpb249MWUzKnks
ZX0sWm8uYmVoYXZpb3Iuem9vbT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obil7bi5vbihBLHMpLm9u
KFJhKyIuem9vbSIsZikub24oImRibGNsaWNrLnpvb20iLGgpLm9uKHosbCl9ZnVuY3Rpb24gdChu
KXtyZXR1cm5bKG5bMF0tUy54KS9TLmssKG5bMV0tUy55KS9TLmtdfWZ1bmN0aW9uIGUobil7cmV0
dXJuW25bMF0qUy5rK1MueCxuWzFdKlMuaytTLnldfWZ1bmN0aW9uIHIobil7Uy5rPU1hdGgubWF4
KEVbMF0sTWF0aC5taW4oRVsxXSxuKSl9ZnVuY3Rpb24gdShuLHQpe3Q9ZSh0KSxTLngrPW5bMF0t
dFswXSxTLnkrPW5bMV0tdFsxXX1mdW5jdGlvbiBpKCl7XyYmXy5kb21haW4oeC5yYW5nZSgpLm1h
cChmdW5jdGlvbihuKXtyZXR1cm4obi1TLngpL1Mua30pLm1hcCh4LmludmVydCkpLHcmJncuZG9t
YWluKGIucmFuZ2UoKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuKG4tUy55KS9TLmt9KS5tYXAoYi5p
bnZlcnQpKX1mdW5jdGlvbiBvKG4pe24oe3R5cGU6Inpvb21zdGFydCJ9KX1mdW5jdGlvbiBhKG4p
e2koKSxuKHt0eXBlOiJ6b29tIixzY2FsZTpTLmssdHJhbnNsYXRlOltTLngsUy55XX0pfWZ1bmN0
aW9uIGMobil7bih7dHlwZToiem9vbWVuZCJ9KX1mdW5jdGlvbiBzKCl7ZnVuY3Rpb24gbigpe2w9
MSx1KFpvLm1vdXNlKHIpLGgpLGEocyl9ZnVuY3Rpb24gZSgpe2Yub24oQyxudWxsKS5vbihOLG51
bGwpLGcobCYmWm8uZXZlbnQudGFyZ2V0PT09aSksYyhzKX12YXIgcj10aGlzLGk9Wm8uZXZlbnQu
dGFyZ2V0LHM9TC5vZihyLGFyZ3VtZW50cyksbD0wLGY9Wm8uc2VsZWN0KFdvKS5vbihDLG4pLm9u
KE4sZSksaD10KFpvLm1vdXNlKHIpKSxnPUkoKTtILmNhbGwociksbyhzKX1mdW5jdGlvbiBsKCl7
ZnVuY3Rpb24gbigpe3ZhciBuPVpvLnRvdWNoZXMoZyk7cmV0dXJuIGg9Uy5rLG4uZm9yRWFjaChm
dW5jdGlvbihuKXtuLmlkZW50aWZpZXIgaW4gdiYmKHZbbi5pZGVudGlmaWVyXT10KG4pKX0pLG59
ZnVuY3Rpb24gZSgpe3ZhciB0PVpvLmV2ZW50LnRhcmdldDtaby5zZWxlY3QodCkub24oTSxpKS5v
bihfLGYpLGIucHVzaCh0KTtmb3IodmFyIGU9Wm8uZXZlbnQuY2hhbmdlZFRvdWNoZXMsbz0wLGM9
ZS5sZW5ndGg7Yz5vOysrbyl2W2Vbb10uaWRlbnRpZmllcl09bnVsbDt2YXIgcz1uKCksbD1EYXRl
Lm5vdygpO2lmKDE9PT1zLmxlbmd0aCl7aWYoNTAwPmwtbSl7dmFyIGg9c1swXSxnPXZbaC5pZGVu
dGlmaWVyXTtyKDIqUy5rKSx1KGgsZykseSgpLGEocCl9bT1sfWVsc2UgaWYocy5sZW5ndGg+MSl7
dmFyIGg9c1swXSx4PXNbMV0sdz1oWzBdLXhbMF0saz1oWzFdLXhbMV07ZD13KncrayprfX1mdW5j
dGlvbiBpKCl7Zm9yKHZhciBuLHQsZSxpLG89Wm8udG91Y2hlcyhnKSxjPTAscz1vLmxlbmd0aDtz
PmM7KytjLGk9bnVsbClpZihlPW9bY10saT12W2UuaWRlbnRpZmllcl0pe2lmKHQpYnJlYWs7bj1l
LHQ9aX1pZihpKXt2YXIgbD0obD1lWzBdLW5bMF0pKmwrKGw9ZVsxXS1uWzFdKSpsLGY9ZCYmTWF0
aC5zcXJ0KGwvZCk7bj1bKG5bMF0rZVswXSkvMiwoblsxXStlWzFdKS8yXSx0PVsodFswXStpWzBd
KS8yLCh0WzFdK2lbMV0pLzJdLHIoZipoKX1tPW51bGwsdShuLHQpLGEocCl9ZnVuY3Rpb24gZigp
e2lmKFpvLmV2ZW50LnRvdWNoZXMubGVuZ3RoKXtmb3IodmFyIHQ9Wm8uZXZlbnQuY2hhbmdlZFRv
dWNoZXMsZT0wLHI9dC5sZW5ndGg7cj5lOysrZSlkZWxldGUgdlt0W2VdLmlkZW50aWZpZXJdO2Zv
cih2YXIgdSBpbiB2KXJldHVybiB2b2lkIG4oKX1aby5zZWxlY3RBbGwoYikub24oeCxudWxsKSx3
Lm9uKEEscykub24oeixsKSxrKCksYyhwKX12YXIgaCxnPXRoaXMscD1MLm9mKGcsYXJndW1lbnRz
KSx2PXt9LGQ9MCx4PSIuem9vbS0iK1pvLmV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmlkZW50aWZp
ZXIsTT0idG91Y2htb3ZlIit4LF89InRvdWNoZW5kIit4LGI9W10sdz1aby5zZWxlY3QoZykub24o
QSxudWxsKS5vbih6LGUpLGs9SSgpO0guY2FsbChnKSxlKCksbyhwKX1mdW5jdGlvbiBmKCl7dmFy
IG49TC5vZih0aGlzLGFyZ3VtZW50cyk7ZD9jbGVhclRpbWVvdXQoZCk6KGc9dChwPXZ8fFpvLm1v
dXNlKHRoaXMpKSxILmNhbGwodGhpcyksbyhuKSksZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZD1u
dWxsLGMobil9LDUwKSx5KCkscihNYXRoLnBvdygyLC4wMDIqVGEoKSkqUy5rKSx1KHAsZyksYShu
KX1mdW5jdGlvbiBoKCl7dmFyIG49TC5vZih0aGlzLGFyZ3VtZW50cyksZT1aby5tb3VzZSh0aGlz
KSxpPXQoZSkscz1NYXRoLmxvZyhTLmspL01hdGguTE4yO28obikscihNYXRoLnBvdygyLFpvLmV2
ZW50LnNoaWZ0S2V5P01hdGguY2VpbChzKS0xOk1hdGguZmxvb3IocykrMSkpLHUoZSxpKSxhKG4p
LGMobil9dmFyIGcscCx2LGQsbSx4LF8sYix3LFM9e3g6MCx5OjAsazoxfSxrPVs5NjAsNTAwXSxF
PXFhLEE9Im1vdXNlZG93bi56b29tIixDPSJtb3VzZW1vdmUuem9vbSIsTj0ibW91c2V1cC56b29t
Iix6PSJ0b3VjaHN0YXJ0Lnpvb20iLEw9TShuLCJ6b29tc3RhcnQiLCJ6b29tIiwiem9vbWVuZCIp
O3JldHVybiBuLmV2ZW50PWZ1bmN0aW9uKG4pe24uZWFjaChmdW5jdGlvbigpe3ZhciBuPUwub2Yo
dGhpcyxhcmd1bWVudHMpLHQ9UztTcz9aby5zZWxlY3QodGhpcykudHJhbnNpdGlvbigpLmVhY2go
InN0YXJ0Lnpvb20iLGZ1bmN0aW9uKCl7Uz10aGlzLl9fY2hhcnRfX3x8e3g6MCx5OjAsazoxfSxv
KG4pfSkudHdlZW4oInpvb206em9vbSIsZnVuY3Rpb24oKXt2YXIgZT1rWzBdLHI9a1sxXSx1PWUv
MixpPXIvMixvPVpvLmludGVycG9sYXRlWm9vbShbKHUtUy54KS9TLmssKGktUy55KS9TLmssZS9T
LmtdLFsodS10LngpL3QuaywoaS10LnkpL3QuayxlL3Qua10pO3JldHVybiBmdW5jdGlvbih0KXt2
YXIgcj1vKHQpLGM9ZS9yWzJdO3RoaXMuX19jaGFydF9fPVM9e3g6dS1yWzBdKmMseTppLXJbMV0q
YyxrOmN9LGEobil9fSkuZWFjaCgiZW5kLnpvb20iLGZ1bmN0aW9uKCl7YyhuKX0pOih0aGlzLl9f
Y2hhcnRfXz1TLG8obiksYShuKSxjKG4pKX0pfSxuLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oUz17eDordFswXSx5Oit0WzFdLGs6Uy5rfSxpKCksbik6W1Mu
eCxTLnldfSxuLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPXt4
OlMueCx5OlMueSxrOit0fSxpKCksbik6Uy5rfSxuLnNjYWxlRXh0ZW50PWZ1bmN0aW9uKHQpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPW51bGw9PXQ/cWE6Wyt0WzBdLCt0WzFdXSxuKTpFfSxu
LmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj10JiZbK3RbMF0s
K3RbMV1dLG4pOnZ9LG4uc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
az10JiZbK3RbMF0sK3RbMV1dLG4pOmt9LG4ueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oXz10LHg9dC5jb3B5KCksUz17eDowLHk6MCxrOjF9LG4pOl99LG4ueT1mdW5jdGlv
bih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz10LGI9dC5jb3B5KCksUz17eDowLHk6MCxr
OjF9LG4pOnd9LFpvLnJlYmluZChuLEwsIm9uIil9O3ZhciBUYSxxYT1bMCwxLzBdLFJhPSJvbndo
ZWVsImluICRvPyhUYT1mdW5jdGlvbigpe3JldHVybi1aby5ldmVudC5kZWx0YVkqKFpvLmV2ZW50
LmRlbHRhTW9kZT8xMjA6MSl9LCJ3aGVlbCIpOiJvbm1vdXNld2hlZWwiaW4gJG8/KFRhPWZ1bmN0
aW9uKCl7cmV0dXJuIFpvLmV2ZW50LndoZWVsRGVsdGF9LCJtb3VzZXdoZWVsIik6KFRhPWZ1bmN0
aW9uKCl7cmV0dXJuLVpvLmV2ZW50LmRldGFpbH0sIk1vek1vdXNlUGl4ZWxTY3JvbGwiKTtaby5j
b2xvcj1ldCxldC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2Io
KSsiIn0sWm8uaHNsPXJ0O3ZhciBEYT1ydC5wcm90b3R5cGU9bmV3IGV0O0RhLmJyaWdodGVyPWZ1
bmN0aW9uKG4pe3JldHVybiBuPU1hdGgucG93KC43LGFyZ3VtZW50cy5sZW5ndGg/bjoxKSxuZXcg
cnQodGhpcy5oLHRoaXMucyx0aGlzLmwvbil9LERhLmRhcmtlcj1mdW5jdGlvbihuKXtyZXR1cm4g
bj1NYXRoLnBvdyguNyxhcmd1bWVudHMubGVuZ3RoP246MSksbmV3IHJ0KHRoaXMuaCx0aGlzLnMs
bip0aGlzLmwpfSxEYS5yZ2I9ZnVuY3Rpb24oKXtyZXR1cm4gdXQodGhpcy5oLHRoaXMucyx0aGlz
LmwpfSxaby5oY2w9aXQ7dmFyIFBhPWl0LnByb3RvdHlwZT1uZXcgZXQ7UGEuYnJpZ2h0ZXI9ZnVu
Y3Rpb24obil7cmV0dXJuIG5ldyBpdCh0aGlzLmgsdGhpcy5jLE1hdGgubWluKDEwMCx0aGlzLmwr
VWEqKGFyZ3VtZW50cy5sZW5ndGg/bjoxKSkpfSxQYS5kYXJrZXI9ZnVuY3Rpb24obil7cmV0dXJu
IG5ldyBpdCh0aGlzLmgsdGhpcy5jLE1hdGgubWF4KDAsdGhpcy5sLVVhKihhcmd1bWVudHMubGVu
Z3RoP246MSkpKX0sUGEucmdiPWZ1bmN0aW9uKCl7cmV0dXJuIG90KHRoaXMuaCx0aGlzLmMsdGhp
cy5sKS5yZ2IoKX0sWm8ubGFiPWF0O3ZhciBVYT0xOCxqYT0uOTUwNDcsSGE9MSxGYT0xLjA4ODgz
LE9hPWF0LnByb3RvdHlwZT1uZXcgZXQ7T2EuYnJpZ2h0ZXI9ZnVuY3Rpb24obil7cmV0dXJuIG5l
dyBhdChNYXRoLm1pbigxMDAsdGhpcy5sK1VhKihhcmd1bWVudHMubGVuZ3RoP246MSkpLHRoaXMu
YSx0aGlzLmIpfSxPYS5kYXJrZXI9ZnVuY3Rpb24obil7cmV0dXJuIG5ldyBhdChNYXRoLm1heCgw
LHRoaXMubC1VYSooYXJndW1lbnRzLmxlbmd0aD9uOjEpKSx0aGlzLmEsdGhpcy5iKX0sT2Eucmdi
PWZ1bmN0aW9uKCl7cmV0dXJuIGN0KHRoaXMubCx0aGlzLmEsdGhpcy5iKX0sWm8ucmdiPWd0O3Zh
ciBZYT1ndC5wcm90b3R5cGU9bmV3IGV0O1lhLmJyaWdodGVyPWZ1bmN0aW9uKG4pe249TWF0aC5w
b3coLjcsYXJndW1lbnRzLmxlbmd0aD9uOjEpO3ZhciB0PXRoaXMucixlPXRoaXMuZyxyPXRoaXMu
Yix1PTMwO3JldHVybiB0fHxlfHxyPyh0JiZ1PnQmJih0PXUpLGUmJnU+ZSYmKGU9dSksciYmdT5y
JiYocj11KSxuZXcgZ3QoTWF0aC5taW4oMjU1LHQvbiksTWF0aC5taW4oMjU1LGUvbiksTWF0aC5t
aW4oMjU1LHIvbikpKTpuZXcgZ3QodSx1LHUpfSxZYS5kYXJrZXI9ZnVuY3Rpb24obil7cmV0dXJu
IG49TWF0aC5wb3coLjcsYXJndW1lbnRzLmxlbmd0aD9uOjEpLG5ldyBndChuKnRoaXMucixuKnRo
aXMuZyxuKnRoaXMuYil9LFlhLmhzbD1mdW5jdGlvbigpe3JldHVybiB5dCh0aGlzLnIsdGhpcy5n
LHRoaXMuYil9LFlhLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIiMiK2R0KHRoaXMucikrZHQo
dGhpcy5nKStkdCh0aGlzLmIpfTt2YXIgSWE9Wm8ubWFwKHthbGljZWJsdWU6MTU3OTIzODMsYW50
aXF1ZXdoaXRlOjE2NDQ0Mzc1LGFxdWE6NjU1MzUsYXF1YW1hcmluZTo4Mzg4NTY0LGF6dXJlOjE1
Nzk0MTc1LGJlaWdlOjE2MTE5MjYwLGJpc3F1ZToxNjc3MDI0NCxibGFjazowLGJsYW5jaGVkYWxt
b25kOjE2NzcyMDQ1LGJsdWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxi
dXJseXdvb2Q6MTQ1OTYyMzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNo
b2NvbGF0ZToxMzc4OTQ3MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNv
cm5zaWxrOjE2Nzc1Mzg4LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzks
ZGFya2N5YW46MzU3MjMsZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxk
YXJrZ3JlZW46MjU2MDAsZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmtt
YWdlbnRhOjkxMDk2NDMsZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2NzQ3NTIw
LGRhcmtvcmNoaWQ6MTAwNDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAs
ZGFya3NlYWdyZWVuOjk0MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6
MzEwMDQ5NSxkYXJrc2xhdGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1Mjk0NSxkYXJrdmlv
bGV0Ojk2OTk1MzksZGVlcHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2
OTA4MjY1LGRpbWdyZXk6NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0
MTQ2LGZsb3JhbHdoaXRlOjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIyNjM4NDIsZnVjaHNpYToxNjcx
MTkzNSxnYWluc2Jvcm86MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIw
LGdvbGRlbnJvZDoxNDMyOTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6
MTE0MDMwNTUsZ3JleTo4NDIxNTA0LGhvbmV5ZGV3OjE1Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAs
aW5kaWFucmVkOjEzNDU4NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1
Nzg3NjYwLGxhdmVuZGVyOjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsbGF3bmdyZWVu
OjgxOTA5NzYsbGVtb25jaGlmZm9uOjE2Nzc1ODg1LGxpZ2h0Ymx1ZToxMTM5MzI1NCxsaWdodGNv
cmFsOjE1NzYxNTM2LGxpZ2h0Y3lhbjoxNDc0NTU5OSxsaWdodGdvbGRlbnJvZHllbGxvdzoxNjQ0
ODIxMCxsaWdodGdyYXk6MTM4ODIzMjMsbGlnaHRncmVlbjo5NDk4MjU2LGxpZ2h0Z3JleToxMzg4
MjMyMyxsaWdodHBpbms6MTY3NTg0NjUsbGlnaHRzYWxtb246MTY3NTI3NjIsbGlnaHRzZWFncmVl
bjoyMTQyODkwLGxpZ2h0c2t5Ymx1ZTo4OTAwMzQ2LGxpZ2h0c2xhdGVncmF5Ojc4MzM3NTMsbGln
aHRzbGF0ZWdyZXk6NzgzMzc1MyxsaWdodHN0ZWVsYmx1ZToxMTU4NDczNCxsaWdodHllbGxvdzox
Njc3NzE4NCxsaW1lOjY1MjgwLGxpbWVncmVlbjozMzI5MzMwLGxpbmVuOjE2NDQ1NjcwLG1hZ2Vu
dGE6MTY3MTE5MzUsbWFyb29uOjgzODg2MDgsbWVkaXVtYXF1YW1hcmluZTo2NzM3MzIyLG1lZGl1
bWJsdWU6MjA1LG1lZGl1bW9yY2hpZDoxMjIxMTY2NyxtZWRpdW1wdXJwbGU6OTY2MjY4MyxtZWRp
dW1zZWFncmVlbjozOTc4MDk3LG1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dy
ZWVuOjY0MTU0LG1lZGl1bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3
MyxtaWRuaWdodGJsdWU6MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2Nzcw
MjczLG1vY2Nhc2luOjE2NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxh
Y2U6MTY2NDM1NTgsb2xpdmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5
MjAsb3JhbmdlcmVkOjE2NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1NjU3
MTMwLHBhbGVncmVlbjoxMDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRy
ZWQ6MTQzODEyMDMscGFwYXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydTox
MzQ2ODk5MSxwaW5rOjE2NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZToxMTU5MTkxMCxw
dXJwbGU6ODM4ODczNixyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0
Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYw
MzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcs
c2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdy
YXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1
NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQy
MDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3
aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzox
Njc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH0pO0lhLmZvckVhY2goZnVuY3Rpb24obix0KXtJ
YS5zZXQobixwdCh0KSl9KSxaby5mdW5jdG9yPWJ0LFpvLnhocj1TdCh3dCksWm8uZHN2PWZ1bmN0
aW9uKG4sdCl7ZnVuY3Rpb24gZShuLGUsaSl7YXJndW1lbnRzLmxlbmd0aDwzJiYoaT1lLGU9bnVs
bCk7dmFyIG89a3Qobix0LG51bGw9PWU/cjp1KGUpLGkpO3JldHVybiBvLnJvdz1mdW5jdGlvbihu
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9vLnJlc3BvbnNlKG51bGw9PShlPW4pP3I6dShuKSk6
ZX0sb31mdW5jdGlvbiByKG4pe3JldHVybiBlLnBhcnNlKG4ucmVzcG9uc2VUZXh0KX1mdW5jdGlv
biB1KG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5wYXJzZSh0LnJlc3BvbnNlVGV4dCxu
KX19ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdC5tYXAobykuam9pbihuKX1mdW5jdGlvbiBvKG4pe3Jl
dHVybiBhLnRlc3Qobik/JyInK24ucmVwbGFjZSgvXCIvZywnIiInKSsnIic6bn12YXIgYT1uZXcg
UmVnRXhwKCdbIicrbisiXG5dIiksYz1uLmNoYXJDb2RlQXQoMCk7cmV0dXJuIGUucGFyc2U9ZnVu
Y3Rpb24obix0KXt2YXIgcjtyZXR1cm4gZS5wYXJzZVJvd3MobixmdW5jdGlvbihuLGUpe2lmKHIp
cmV0dXJuIHIobixlLTEpO3ZhciB1PW5ldyBGdW5jdGlvbigiZCIsInJldHVybiB7IituLm1hcChm
dW5jdGlvbihuLHQpe3JldHVybiBKU09OLnN0cmluZ2lmeShuKSsiOiBkWyIrdCsiXSJ9KS5qb2lu
KCIsIikrIn0iKTtyPXQ/ZnVuY3Rpb24obixlKXtyZXR1cm4gdCh1KG4pLGUpfTp1fSl9LGUucGFy
c2VSb3dzPWZ1bmN0aW9uKG4sdCl7ZnVuY3Rpb24gZSgpe2lmKGw+PXMpcmV0dXJuIG87aWYodSly
ZXR1cm4gdT0hMSxpO3ZhciB0PWw7aWYoMzQ9PT1uLmNoYXJDb2RlQXQodCkpe2Zvcih2YXIgZT10
O2UrKzxzOylpZigzND09PW4uY2hhckNvZGVBdChlKSl7aWYoMzQhPT1uLmNoYXJDb2RlQXQoZSsx
KSlicmVhazsrK2V9bD1lKzI7dmFyIHI9bi5jaGFyQ29kZUF0KGUrMSk7cmV0dXJuIDEzPT09cj8o
dT0hMCwxMD09PW4uY2hhckNvZGVBdChlKzIpJiYrK2wpOjEwPT09ciYmKHU9ITApLG4uc3Vic3Ry
aW5nKHQrMSxlKS5yZXBsYWNlKC8iIi9nLCciJyl9Zm9yKDtzPmw7KXt2YXIgcj1uLmNoYXJDb2Rl
QXQobCsrKSxhPTE7aWYoMTA9PT1yKXU9ITA7ZWxzZSBpZigxMz09PXIpdT0hMCwxMD09PW4uY2hh
ckNvZGVBdChsKSYmKCsrbCwrK2EpO2Vsc2UgaWYociE9PWMpY29udGludWU7cmV0dXJuIG4uc3Vi
c3RyaW5nKHQsbC1hKX1yZXR1cm4gbi5zdWJzdHJpbmcodCl9Zm9yKHZhciByLHUsaT17fSxvPXt9
LGE9W10scz1uLmxlbmd0aCxsPTAsZj0wOyhyPWUoKSkhPT1vOyl7Zm9yKHZhciBoPVtdO3IhPT1p
JiZyIT09bzspaC5wdXNoKHIpLHI9ZSgpOyghdHx8KGg9dChoLGYrKykpKSYmYS5wdXNoKGgpfXJl
dHVybiBhfSxlLmZvcm1hdD1mdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHRbMF0pKXJldHVy
biBlLmZvcm1hdFJvd3ModCk7dmFyIHI9bmV3IGgsdT1bXTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0
aW9uKG4pe2Zvcih2YXIgdCBpbiBuKXIuaGFzKHQpfHx1LnB1c2goci5hZGQodCkpfSksW3UubWFw
KG8pLmpvaW4obildLmNvbmNhdCh0Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdS5tYXAoZnVuY3Rp
b24obil7cmV0dXJuIG8odFtuXSl9KS5qb2luKG4pfSkpLmpvaW4oIlxuIil9LGUuZm9ybWF0Um93
cz1mdW5jdGlvbihuKXtyZXR1cm4gbi5tYXAoaSkuam9pbigiXG4iKX0sZX0sWm8uY3N2PVpvLmRz
digiLCIsInRleHQvY3N2IiksWm8udHN2PVpvLmRzdigiICAgICIsInRleHQvdGFiLXNlcGFyYXRl
ZC12YWx1ZXMiKSxaby50b3VjaD1mdW5jdGlvbihuLHQsZSl7aWYoYXJndW1lbnRzLmxlbmd0aDwz
JiYoZT10LHQ9eCgpLmNoYW5nZWRUb3VjaGVzKSx0KWZvcih2YXIgcix1PTAsaT10Lmxlbmd0aDtp
PnU7Kyt1KWlmKChyPXRbdV0pLmlkZW50aWZpZXI9PT1lKXJldHVybiBaKG4scil9O3ZhciBaYSxW
YSxYYSwkYSxCYSxXYT1Xb1twKFdvLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiKV18fGZ1bmN0aW9u
KG4pe3NldFRpbWVvdXQobiwxNyl9O1pvLnRpbWVyPWZ1bmN0aW9uKG4sdCxlKXt2YXIgcj1hcmd1
bWVudHMubGVuZ3RoOzI+ciYmKHQ9MCksMz5yJiYoZT1EYXRlLm5vdygpKTt2YXIgdT1lK3QsaT17
YzpuLHQ6dSxmOiExLG46bnVsbH07VmE/VmEubj1pOlphPWksVmE9aSxYYXx8KCRhPWNsZWFyVGlt
ZW91dCgkYSksWGE9MSxXYShBdCkpfSxaby50aW1lci5mbHVzaD1mdW5jdGlvbigpe0N0KCksTnQo
KX0sWm8ucm91bmQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gdD9NYXRoLnJvdW5kKG4qKHQ9TWF0aC5w
b3coMTAsdCkpKS90Ok1hdGgucm91bmQobil9O3ZhciBKYT1bInkiLCJ6IiwiYSIsImYiLCJwIiwi
biIsIlx4YjUiLCJtIiwiIiwiayIsIk0iLCJHIiwiVCIsIlAiLCJFIiwiWiIsIlkiXS5tYXAoTHQp
O1pvLmZvcm1hdFByZWZpeD1mdW5jdGlvbihuLHQpe3ZhciBlPTA7cmV0dXJuIG4mJigwPm4mJihu
Kj0tMSksdCYmKG49Wm8ucm91bmQobix6dChuLHQpKSksZT0xK01hdGguZmxvb3IoMWUtMTIrTWF0
aC5sb2cobikvTWF0aC5MTjEwKSxlPU1hdGgubWF4KC0yNCxNYXRoLm1pbigyNCwzKk1hdGguZmxv
b3IoKGUtMSkvMykpKSksSmFbOCtlLzNdfTt2YXIgR2E9Lyg/OihbXntdKT8oWzw+PV5dKSk/KFsr
XC0gXSk/KFskI10pPygwKT8oXGQrKT8oLCk/KFwuLT9cZCspPyhbYS16JV0pPy9pLEthPVpvLm1h
cCh7YjpmdW5jdGlvbihuKXtyZXR1cm4gbi50b1N0cmluZygyKX0sYzpmdW5jdGlvbihuKXtyZXR1
cm4gU3RyaW5nLmZyb21DaGFyQ29kZShuKX0sbzpmdW5jdGlvbihuKXtyZXR1cm4gbi50b1N0cmlu
Zyg4KX0seDpmdW5jdGlvbihuKXtyZXR1cm4gbi50b1N0cmluZygxNil9LFg6ZnVuY3Rpb24obil7
cmV0dXJuIG4udG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9LGc6ZnVuY3Rpb24obix0KXtyZXR1
cm4gbi50b1ByZWNpc2lvbih0KX0sZTpmdW5jdGlvbihuLHQpe3JldHVybiBuLnRvRXhwb25lbnRp
YWwodCl9LGY6ZnVuY3Rpb24obix0KXtyZXR1cm4gbi50b0ZpeGVkKHQpfSxyOmZ1bmN0aW9uKG4s
dCl7cmV0dXJuKG49Wm8ucm91bmQobix6dChuLHQpKSkudG9GaXhlZChNYXRoLm1heCgwLE1hdGgu
bWluKDIwLHp0KG4qKDErMWUtMTUpLHQpKSkpfX0pLFFhPVpvLnRpbWU9e30sbmM9RGF0ZTtSdC5w
cm90b3R5cGU9e2dldERhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ0RhdGUoKX0s
Z2V0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRVVENEYXkoKX0sZ2V0RnVsbFllYXI6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ0Z1bGxZZWFyKCl9LGdldEhvdXJzOmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRVVENIb3VycygpfSxnZXRNaWxsaXNlY29uZHM6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5fLmdldFVUQ01pbGxpc2Vjb25kcygpfSxnZXRNaW51dGVzOmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRVVENNaW51dGVzKCl9LGdldE1vbnRoOmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuXy5nZXRVVENNb250aCgpfSxnZXRTZWNvbmRzOmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuXy5nZXRVVENTZWNvbmRzKCl9LGdldFRpbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f
LmdldFRpbWUoKX0sZ2V0VGltZXpvbmVPZmZzZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sdmFsdWVP
ZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8udmFsdWVPZigpfSxzZXREYXRlOmZ1bmN0aW9uKCl7
dGMuc2V0VVRDRGF0ZS5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0RGF5OmZ1bmN0aW9uKCl7
dGMuc2V0VVRDRGF5LmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRGdWxsWWVhcjpmdW5jdGlv
bigpe3RjLnNldFVUQ0Z1bGxZZWFyLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRIb3Vyczpm
dW5jdGlvbigpe3RjLnNldFVUQ0hvdXJzLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRNaWxs
aXNlY29uZHM6ZnVuY3Rpb24oKXt0Yy5zZXRVVENNaWxsaXNlY29uZHMuYXBwbHkodGhpcy5fLGFy
Z3VtZW50cyl9LHNldE1pbnV0ZXM6ZnVuY3Rpb24oKXt0Yy5zZXRVVENNaW51dGVzLmFwcGx5KHRo
aXMuXyxhcmd1bWVudHMpfSxzZXRNb250aDpmdW5jdGlvbigpe3RjLnNldFVUQ01vbnRoLmFwcGx5
KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRTZWNvbmRzOmZ1bmN0aW9uKCl7dGMuc2V0VVRDU2Vjb25k
cy5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0VGltZTpmdW5jdGlvbigpe3RjLnNldFRpbWUu
YXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9fTt2YXIgdGM9RGF0ZS5wcm90b3R5cGU7UWEueWVhcj1E
dChmdW5jdGlvbihuKXtyZXR1cm4gbj1RYS5kYXkobiksbi5zZXRNb250aCgwLDEpLG59LGZ1bmN0
aW9uKG4sdCl7bi5zZXRGdWxsWWVhcihuLmdldEZ1bGxZZWFyKCkrdCl9LGZ1bmN0aW9uKG4pe3Jl
dHVybiBuLmdldEZ1bGxZZWFyKCl9KSxRYS55ZWFycz1RYS55ZWFyLnJhbmdlLFFhLnllYXJzLnV0
Yz1RYS55ZWFyLnV0Yy5yYW5nZSxRYS5kYXk9RHQoZnVuY3Rpb24obil7dmFyIHQ9bmV3IG5jKDJl
MywwKTtyZXR1cm4gdC5zZXRGdWxsWWVhcihuLmdldEZ1bGxZZWFyKCksbi5nZXRNb250aCgpLG4u
Z2V0RGF0ZSgpKSx0fSxmdW5jdGlvbihuLHQpe24uc2V0RGF0ZShuLmdldERhdGUoKSt0KX0sZnVu
Y3Rpb24obil7cmV0dXJuIG4uZ2V0RGF0ZSgpLTF9KSxRYS5kYXlzPVFhLmRheS5yYW5nZSxRYS5k
YXlzLnV0Yz1RYS5kYXkudXRjLnJhbmdlLFFhLmRheU9mWWVhcj1mdW5jdGlvbihuKXt2YXIgdD1R
YS55ZWFyKG4pO3JldHVybiBNYXRoLmZsb29yKChuLXQtNmU0KihuLmdldFRpbWV6b25lT2Zmc2V0
KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSkvODY0ZTUpfSxbInN1bmRheSIsIm1vbmRheSIsInR1
ZXNkYXkiLCJ3ZWRuZXNkYXkiLCJ0aHVyc2RheSIsImZyaWRheSIsInNhdHVyZGF5Il0uZm9yRWFj
aChmdW5jdGlvbihuLHQpe3Q9Ny10O3ZhciBlPVFhW25dPUR0KGZ1bmN0aW9uKG4pe3JldHVybihu
PVFhLmRheShuKSkuc2V0RGF0ZShuLmdldERhdGUoKS0obi5nZXREYXkoKSt0KSU3KSxufSxmdW5j
dGlvbihuLHQpe24uc2V0RGF0ZShuLmdldERhdGUoKSs3Kk1hdGguZmxvb3IodCkpfSxmdW5jdGlv
bihuKXt2YXIgZT1RYS55ZWFyKG4pLmdldERheSgpO3JldHVybiBNYXRoLmZsb29yKChRYS5kYXlP
ZlllYXIobikrKGUrdCklNykvNyktKGUhPT10KX0pO1FhW24rInMiXT1lLnJhbmdlLFFhW24rInMi
XS51dGM9ZS51dGMucmFuZ2UsUWFbbisiT2ZZZWFyIl09ZnVuY3Rpb24obil7dmFyIGU9UWEueWVh
cihuKS5nZXREYXkoKTtyZXR1cm4gTWF0aC5mbG9vcigoUWEuZGF5T2ZZZWFyKG4pKyhlK3QpJTcp
LzcpfX0pLFFhLndlZWs9UWEuc3VuZGF5LFFhLndlZWtzPVFhLnN1bmRheS5yYW5nZSxRYS53ZWVr
cy51dGM9UWEuc3VuZGF5LnV0Yy5yYW5nZSxRYS53ZWVrT2ZZZWFyPVFhLnN1bmRheU9mWWVhcjt2
YXIgZWM9eyItIjoiIixfOiIgIiwwOiIwIn0scmM9L15ccypcZCsvLHVjPS9eJS87Wm8ubG9jYWxl
PWZ1bmN0aW9uKG4pe3JldHVybntudW1iZXJGb3JtYXQ6VHQobiksdGltZUZvcm1hdDpVdChuKX19
O3ZhciBpYz1aby5sb2NhbGUoe2RlY2ltYWw6Ii4iLHRob3VzYW5kczoiLCIsZ3JvdXBpbmc6WzNd
LGN1cnJlbmN5OlsiJCIsIiJdLGRhdGVUaW1lOiIlYSAlYiAlZSAlWCAlWSIsZGF0ZToiJW0vJWQv
JVkiLHRpbWU6IiVIOiVNOiVTIixwZXJpb2RzOlsiQU0iLCJQTSJdLGRheXM6WyJTdW5kYXkiLCJN
b25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRh
eSJdLHNob3J0RGF5czpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJd
LG1vbnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5l
IiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2Vt
YmVyIl0sc2hvcnRNb250aHM6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJK
dWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXX0pO1pvLmZvcm1hdD1pYy5udW1iZXJG
b3JtYXQsWm8uZ2VvPXt9LHVlLnByb3RvdHlwZT17czowLHQ6MCxhZGQ6ZnVuY3Rpb24obil7aWUo
bix0aGlzLnQsb2MpLGllKG9jLnMsdGhpcy5zLHRoaXMpLHRoaXMucz90aGlzLnQrPW9jLnQ6dGhp
cy5zPW9jLnR9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5zPXRoaXMudD0wfSx2YWx1ZU9mOmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuc319O3ZhciBvYz1uZXcgdWU7Wm8uZ2VvLnN0cmVhbT1mdW5jdGlv
bihuLHQpe24mJmFjLmhhc093blByb3BlcnR5KG4udHlwZSk/YWNbbi50eXBlXShuLHQpOm9lKG4s
dCl9O3ZhciBhYz17RmVhdHVyZTpmdW5jdGlvbihuLHQpe29lKG4uZ2VvbWV0cnksdCl9LEZlYXR1
cmVDb2xsZWN0aW9uOmZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPW4uZmVhdHVyZXMscj0tMSx1PWUu
bGVuZ3RoOysrcjx1OylvZShlW3JdLmdlb21ldHJ5LHQpfX0sY2M9e1NwaGVyZTpmdW5jdGlvbihu
LHQpe3Quc3BoZXJlKCl9LFBvaW50OmZ1bmN0aW9uKG4sdCl7bj1uLmNvb3JkaW5hdGVzLHQucG9p
bnQoblswXSxuWzFdLG5bMl0pfSxNdWx0aVBvaW50OmZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPW4u
Y29vcmRpbmF0ZXMscj0tMSx1PWUubGVuZ3RoOysrcjx1OyluPWVbcl0sdC5wb2ludChuWzBdLG5b
MV0sblsyXSl9LExpbmVTdHJpbmc6ZnVuY3Rpb24obix0KXthZShuLmNvb3JkaW5hdGVzLHQsMCl9
LE11bHRpTGluZVN0cmluZzpmdW5jdGlvbihuLHQpe2Zvcih2YXIgZT1uLmNvb3JkaW5hdGVzLHI9
LTEsdT1lLmxlbmd0aDsrK3I8dTspYWUoZVtyXSx0LDApfSxQb2x5Z29uOmZ1bmN0aW9uKG4sdCl7
Y2Uobi5jb29yZGluYXRlcyx0KX0sTXVsdGlQb2x5Z29uOmZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBl
PW4uY29vcmRpbmF0ZXMscj0tMSx1PWUubGVuZ3RoOysrcjx1OyljZShlW3JdLHQpfSxHZW9tZXRy
eUNvbGxlY3Rpb246ZnVuY3Rpb24obix0KXtmb3IodmFyIGU9bi5nZW9tZXRyaWVzLHI9LTEsdT1l
Lmxlbmd0aDsrK3I8dTspb2UoZVtyXSx0KX19O1pvLmdlby5hcmVhPWZ1bmN0aW9uKG4pe3JldHVy
biBzYz0wLFpvLmdlby5zdHJlYW0obixmYyksc2N9O3ZhciBzYyxsYz1uZXcgdWUsZmM9e3NwaGVy
ZTpmdW5jdGlvbigpe3NjKz00KmJhfSxwb2ludDp2LGxpbmVTdGFydDp2LGxpbmVFbmQ6dixwb2x5
Z29uU3RhcnQ6ZnVuY3Rpb24oKXtsYy5yZXNldCgpLGZjLmxpbmVTdGFydD1zZX0scG9seWdvbkVu
ZDpmdW5jdGlvbigpe3ZhciBuPTIqbGM7c2MrPTA+bj80KmJhK246bixmYy5saW5lU3RhcnQ9ZmMu
bGluZUVuZD1mYy5wb2ludD12fX07Wm8uZ2VvLmJvdW5kcz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4o
bix0KXt4LnB1c2goTT1bbD1uLGg9bl0pLGY+dCYmKGY9dCksdD5nJiYoZz10KX1mdW5jdGlvbiB0
KHQsZSl7dmFyIHI9bGUoW3QqQWEsZSpBYV0pO2lmKG0pe3ZhciB1PWhlKG0sciksaT1bdVsxXSwt
dVswXSwwXSxvPWhlKGksdSk7dmUobyksbz1kZShvKTt2YXIgYz10LXAscz1jPjA/MTotMSx2PW9b
MF0qQ2EqcyxkPXVhKGMpPjE4MDtpZihkXih2PnMqcCYmcyp0PnYpKXt2YXIgeT1vWzFdKkNhO3k+
ZyYmKGc9eSl9ZWxzZSBpZih2PSh2KzM2MCklMzYwLTE4MCxkXih2PnMqcCYmcyp0PnYpKXt2YXIg
eT0tb1sxXSpDYTtmPnkmJihmPXkpfWVsc2UgZj5lJiYoZj1lKSxlPmcmJihnPWUpO2Q/cD50P2Eo
bCx0KT5hKGwsaCkmJihoPXQpOmEodCxoKT5hKGwsaCkmJihsPXQpOmg+PWw/KGw+dCYmKGw9dCks
dD5oJiYoaD10KSk6dD5wP2EobCx0KT5hKGwsaCkmJihoPXQpOmEodCxoKT5hKGwsaCkmJihsPXQp
fWVsc2Ugbih0LGUpO209cixwPXR9ZnVuY3Rpb24gZSgpe18ucG9pbnQ9dH1mdW5jdGlvbiByKCl7
TVswXT1sLE1bMV09aCxfLnBvaW50PW4sbT1udWxsfWZ1bmN0aW9uIHUobixlKXtpZihtKXt2YXIg
cj1uLXA7eSs9dWEocik+MTgwP3IrKHI+MD8zNjA6LTM2MCk6cn1lbHNlIHY9bixkPWU7ZmMucG9p
bnQobixlKSx0KG4sZSl9ZnVuY3Rpb24gaSgpe2ZjLmxpbmVTdGFydCgpfWZ1bmN0aW9uIG8oKXt1
KHYsZCksZmMubGluZUVuZCgpLHVhKHkpPmthJiYobD0tKGg9MTgwKSksTVswXT1sLE1bMV09aCxt
PW51bGx9ZnVuY3Rpb24gYShuLHQpe3JldHVybih0LT1uKTwwP3QrMzYwOnR9ZnVuY3Rpb24gYyhu
LHQpe3JldHVybiBuWzBdLXRbMF19ZnVuY3Rpb24gcyhuLHQpe3JldHVybiB0WzBdPD10WzFdP3Rb
MF08PW4mJm48PXRbMV06bjx0WzBdfHx0WzFdPG59dmFyIGwsZixoLGcscCx2LGQsbSx5LHgsTSxf
PXtwb2ludDpuLGxpbmVTdGFydDplLGxpbmVFbmQ6cixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtf
LnBvaW50PXUsXy5saW5lU3RhcnQ9aSxfLmxpbmVFbmQ9byx5PTAsZmMucG9seWdvblN0YXJ0KCl9
LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtmYy5wb2x5Z29uRW5kKCksXy5wb2ludD1uLF8ubGluZVN0
YXJ0PWUsXy5saW5lRW5kPXIsMD5sYz8obD0tKGg9MTgwKSxmPS0oZz05MCkpOnk+a2E/Zz05MDot
a2E+eSYmKGY9LTkwKSxNWzBdPWwsTVsxXT1ofX07cmV0dXJuIGZ1bmN0aW9uKG4pe2c9aD0tKGw9
Zj0xLzApLHg9W10sWm8uZ2VvLnN0cmVhbShuLF8pO3ZhciB0PXgubGVuZ3RoO2lmKHQpe3guc29y
dChjKTtmb3IodmFyIGUscj0xLHU9eFswXSxpPVt1XTt0PnI7KytyKWU9eFtyXSxzKGVbMF0sdSl8
fHMoZVsxXSx1KT8oYSh1WzBdLGVbMV0pPmEodVswXSx1WzFdKSYmKHVbMV09ZVsxXSksYShlWzBd
LHVbMV0pPmEodVswXSx1WzFdKSYmKHVbMF09ZVswXSkpOmkucHVzaCh1PWUpOworZm9yKHZhciBv
LGUscD0tMS8wLHQ9aS5sZW5ndGgtMSxyPTAsdT1pW3RdO3Q+PXI7dT1lLCsrcillPWlbcl0sKG89
YSh1WzFdLGVbMF0pKT5wJiYocD1vLGw9ZVswXSxoPXVbMV0pfXJldHVybiB4PU09bnVsbCwxLzA9
PT1sfHwxLzA9PT1mP1tbMC8wLDAvMF0sWzAvMCwwLzBdXTpbW2wsZl0sW2gsZ11dfX0oKSxaby5n
ZW8uY2VudHJvaWQ9ZnVuY3Rpb24obil7aGM9Z2M9cGM9dmM9ZGM9bWM9eWM9eGM9TWM9X2M9YmM9
MCxaby5nZW8uc3RyZWFtKG4sd2MpO3ZhciB0PU1jLGU9X2Mscj1iYyx1PXQqdCtlKmUrcipyO3Jl
dHVybiBFYT51JiYodD1tYyxlPXljLHI9eGMsa2E+Z2MmJih0PXBjLGU9dmMscj1kYyksdT10KnQr
ZSplK3IqcixFYT51KT9bMC8wLDAvMF06W01hdGguYXRhbjIoZSx0KSpDYSxHKHIvTWF0aC5zcXJ0
KHUpKSpDYV19O3ZhciBoYyxnYyxwYyx2YyxkYyxtYyx5Yyx4YyxNYyxfYyxiYyx3Yz17c3BoZXJl
OnYscG9pbnQ6eWUsbGluZVN0YXJ0Ok1lLGxpbmVFbmQ6X2UscG9seWdvblN0YXJ0OmZ1bmN0aW9u
KCl7d2MubGluZVN0YXJ0PWJlfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7d2MubGluZVN0YXJ0PU1l
fX0sU2M9QWUod2UsVGUsUmUsWy1iYSwtYmEvMl0pLGtjPTFlOTtaby5nZW8uY2xpcEV4dGVudD1m
dW5jdGlvbigpe3ZhciBuLHQsZSxyLHUsaSxvPXtzdHJlYW06ZnVuY3Rpb24obil7cmV0dXJuIHUm
Jih1LnZhbGlkPSExKSx1PWkobiksdS52YWxpZD0hMCx1fSxleHRlbnQ6ZnVuY3Rpb24oYSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9VWUobj0rYVswXVswXSx0PSthWzBdWzFdLGU9K2FbMV1b
MF0scj0rYVsxXVsxXSksdSYmKHUudmFsaWQ9ITEsdT1udWxsKSxvKTpbW24sdF0sW2Uscl1dfX07
cmV0dXJuIG8uZXh0ZW50KFtbMCwwXSxbOTYwLDUwMF1dKX0sKFpvLmdlby5jb25pY0VxdWFsQXJl
YT1mdW5jdGlvbigpe3JldHVybiBIZShGZSl9KS5yYXc9RmUsWm8uZ2VvLmFsYmVycz1mdW5jdGlv
bigpe3JldHVybiBaby5nZW8uY29uaWNFcXVhbEFyZWEoKS5yb3RhdGUoWzk2LDBdKS5jZW50ZXIo
Wy0uNiwzOC43XSkucGFyYWxsZWxzKFsyOS41LDQ1LjVdKS5zY2FsZSgxMDcwKX0sWm8uZ2VvLmFs
YmVyc1VzYT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obil7dmFyIGk9blswXSxvPW5bMV07cmV0dXJu
IHQ9bnVsbCxlKGksbyksdHx8KHIoaSxvKSx0KXx8dShpLG8pLHR9dmFyIHQsZSxyLHUsaT1aby5n
ZW8uYWxiZXJzKCksbz1aby5nZW8uY29uaWNFcXVhbEFyZWEoKS5yb3RhdGUoWzE1NCwwXSkuY2Vu
dGVyKFstMiw1OC41XSkucGFyYWxsZWxzKFs1NSw2NV0pLGE9Wm8uZ2VvLmNvbmljRXF1YWxBcmVh
KCkucm90YXRlKFsxNTcsMF0pLmNlbnRlcihbLTMsMTkuOV0pLnBhcmFsbGVscyhbOCwxOF0pLGM9
e3BvaW50OmZ1bmN0aW9uKG4sZSl7dD1bbixlXX19O3JldHVybiBuLmludmVydD1mdW5jdGlvbihu
KXt2YXIgdD1pLnNjYWxlKCksZT1pLnRyYW5zbGF0ZSgpLHI9KG5bMF0tZVswXSkvdCx1PShuWzFd
LWVbMV0pL3Q7cmV0dXJuKHU+PS4xMiYmLjIzND51JiZyPj0tLjQyNSYmLS4yMTQ+cj9vOnU+PS4x
NjYmJi4yMzQ+dSYmcj49LS4yMTQmJi0uMTE1PnI/YTppKS5pbnZlcnQobil9LG4uc3RyZWFtPWZ1
bmN0aW9uKG4pe3ZhciB0PWkuc3RyZWFtKG4pLGU9by5zdHJlYW0obikscj1hLnN0cmVhbShuKTty
ZXR1cm57cG9pbnQ6ZnVuY3Rpb24obix1KXt0LnBvaW50KG4sdSksZS5wb2ludChuLHUpLHIucG9p
bnQobix1KX0sc3BoZXJlOmZ1bmN0aW9uKCl7dC5zcGhlcmUoKSxlLnNwaGVyZSgpLHIuc3BoZXJl
KCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3QubGluZVN0YXJ0KCksZS5saW5lU3RhcnQoKSxyLmxp
bmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dC5saW5lRW5kKCksZS5saW5lRW5kKCksci5s
aW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3QucG9seWdvblN0YXJ0KCksZS5wb2x5
Z29uU3RhcnQoKSxyLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dC5wb2x5
Z29uRW5kKCksZS5wb2x5Z29uRW5kKCksci5wb2x5Z29uRW5kKCl9fX0sbi5wcmVjaXNpb249ZnVu
Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkucHJlY2lzaW9uKHQpLG8ucHJlY2lz
aW9uKHQpLGEucHJlY2lzaW9uKHQpLG4pOmkucHJlY2lzaW9uKCl9LG4uc2NhbGU9ZnVuY3Rpb24o
dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkuc2NhbGUodCksby5zY2FsZSguMzUqdCksYS5z
Y2FsZSh0KSxuLnRyYW5zbGF0ZShpLnRyYW5zbGF0ZSgpKSk6aS5zY2FsZSgpfSxuLnRyYW5zbGF0
ZT1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gaS50cmFuc2xhdGUoKTt2
YXIgcz1pLnNjYWxlKCksbD0rdFswXSxmPSt0WzFdO3JldHVybiBlPWkudHJhbnNsYXRlKHQpLmNs
aXBFeHRlbnQoW1tsLS40NTUqcyxmLS4yMzgqc10sW2wrLjQ1NSpzLGYrLjIzOCpzXV0pLnN0cmVh
bShjKS5wb2ludCxyPW8udHJhbnNsYXRlKFtsLS4zMDcqcyxmKy4yMDEqc10pLmNsaXBFeHRlbnQo
W1tsLS40MjUqcytrYSxmKy4xMipzK2thXSxbbC0uMjE0KnMta2EsZisuMjM0KnMta2FdXSkuc3Ry
ZWFtKGMpLnBvaW50LHU9YS50cmFuc2xhdGUoW2wtLjIwNSpzLGYrLjIxMipzXSkuY2xpcEV4dGVu
dChbW2wtLjIxNCpzK2thLGYrLjE2NipzK2thXSxbbC0uMTE1KnMta2EsZisuMjM0KnMta2FdXSku
c3RyZWFtKGMpLnBvaW50LG59LG4uc2NhbGUoMTA3MCl9O3ZhciBFYyxBYyxDYyxOYyx6YyxMYyxU
Yz17cG9pbnQ6dixsaW5lU3RhcnQ6dixsaW5lRW5kOnYscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7
QWM9MCxUYy5saW5lU3RhcnQ9T2V9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtUYy5saW5lU3RhcnQ9
VGMubGluZUVuZD1UYy5wb2ludD12LEVjKz11YShBYy8yKX19LHFjPXtwb2ludDpZZSxsaW5lU3Rh
cnQ6dixsaW5lRW5kOnYscG9seWdvblN0YXJ0OnYscG9seWdvbkVuZDp2fSxSYz17cG9pbnQ6VmUs
bGluZVN0YXJ0OlhlLGxpbmVFbmQ6JGUscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7UmMubGluZVN0
YXJ0PUJlfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7UmMucG9pbnQ9VmUsUmMubGluZVN0YXJ0PVhl
LFJjLmxpbmVFbmQ9JGV9fTtaby5nZW8ucGF0aD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obil7cmV0
dXJuIG4mJigiZnVuY3Rpb24iPT10eXBlb2YgYSYmaS5wb2ludFJhZGl1cygrYS5hcHBseSh0aGlz
LGFyZ3VtZW50cykpLG8mJm8udmFsaWR8fChvPXUoaSkpLFpvLmdlby5zdHJlYW0obixvKSksaS5y
ZXN1bHQoKX1mdW5jdGlvbiB0KCl7cmV0dXJuIG89bnVsbCxufXZhciBlLHIsdSxpLG8sYT00LjU7
cmV0dXJuIG4uYXJlYT1mdW5jdGlvbihuKXtyZXR1cm4gRWM9MCxaby5nZW8uc3RyZWFtKG4sdShU
YykpLEVjfSxuLmNlbnRyb2lkPWZ1bmN0aW9uKG4pe3JldHVybiBwYz12Yz1kYz1tYz15Yz14Yz1N
Yz1fYz1iYz0wLFpvLmdlby5zdHJlYW0obix1KFJjKSksYmM/W01jL2JjLF9jL2JjXTp4Yz9bbWMv
eGMseWMveGNdOmRjP1twYy9kYyx2Yy9kY106WzAvMCwwLzBdfSxuLmJvdW5kcz1mdW5jdGlvbihu
KXtyZXR1cm4gemM9TGM9LShDYz1OYz0xLzApLFpvLmdlby5zdHJlYW0obix1KHFjKSksW1tDYyxO
Y10sW3pjLExjXV19LG4ucHJvamVjdGlvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8odT0oZT1uKT9uLnN0cmVhbXx8R2Uobik6d3QsdCgpKTplfSxuLmNvbnRleHQ9ZnVuY3Rp
b24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09KHI9bik/bmV3IEllOm5ldyBX
ZShuKSwiZnVuY3Rpb24iIT10eXBlb2YgYSYmaS5wb2ludFJhZGl1cyhhKSx0KCkpOnJ9LG4ucG9p
bnRSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9u
Ij09dHlwZW9mIHQ/dDooaS5wb2ludFJhZGl1cygrdCksK3QpLG4pOmF9LG4ucHJvamVjdGlvbiha
by5nZW8uYWxiZXJzVXNhKCkpLmNvbnRleHQobnVsbCl9LFpvLmdlby50cmFuc2Zvcm09ZnVuY3Rp
b24obil7cmV0dXJue3N0cmVhbTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgS2UodCk7Zm9yKHZhciBy
IGluIG4pZVtyXT1uW3JdO3JldHVybiBlfX19LEtlLnByb3RvdHlwZT17cG9pbnQ6ZnVuY3Rpb24o
bix0KXt0aGlzLnN0cmVhbS5wb2ludChuLHQpfSxzcGhlcmU6ZnVuY3Rpb24oKXt0aGlzLnN0cmVh
bS5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZVN0YXJ0KCl9
LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpm
dW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9u
KCl7dGhpcy5zdHJlYW0ucG9seWdvbkVuZCgpfX0sWm8uZ2VvLnByb2plY3Rpb249bnIsWm8uZ2Vv
LnByb2plY3Rpb25NdXRhdG9yPXRyLChaby5nZW8uZXF1aXJlY3Rhbmd1bGFyPWZ1bmN0aW9uKCl7
cmV0dXJuIG5yKHJyKX0pLnJhdz1yci5pbnZlcnQ9cnIsWm8uZ2VvLnJvdGF0aW9uPWZ1bmN0aW9u
KG4pe2Z1bmN0aW9uIHQodCl7cmV0dXJuIHQ9bih0WzBdKkFhLHRbMV0qQWEpLHRbMF0qPUNhLHRb
MV0qPUNhLHR9cmV0dXJuIG49aXIoblswXSUzNjAqQWEsblsxXSpBYSxuLmxlbmd0aD4yP25bMl0q
QWE6MCksdC5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bi5pbnZlcnQodFswXSpBYSx0WzFd
KkFhKSx0WzBdKj1DYSx0WzFdKj1DYSx0fSx0fSx1ci5pbnZlcnQ9cnIsWm8uZ2VvLmNpcmNsZT1m
dW5jdGlvbigpe2Z1bmN0aW9uIG4oKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2Ygcj9yLmFwcGx5
KHRoaXMsYXJndW1lbnRzKTpyLHQ9aXIoLW5bMF0qQWEsLW5bMV0qQWEsMCkuaW52ZXJ0LHU9W107
cmV0dXJuIGUobnVsbCxudWxsLDEse3BvaW50OmZ1bmN0aW9uKG4sZSl7dS5wdXNoKG49dChuLGUp
KSxuWzBdKj1DYSxuWzFdKj1DYX19KSx7dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W3VdfX12
YXIgdCxlLHI9WzAsMF0sdT02O3JldHVybiBuLm9yaWdpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8ocj10LG4pOnJ9LG4uYW5nbGU9ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGU9c3IoKHQ9K3IpKkFhLHUqQWEpLG4pOnR9LG4ucHJlY2lzaW9uPWZ1bmN0
aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXNyKHQqQWEsKHU9K3IpKkFhKSxuKTp1
fSxuLmFuZ2xlKDkwKX0sWm8uZ2VvLmRpc3RhbmNlPWZ1bmN0aW9uKG4sdCl7dmFyIGUscj0odFsw
XS1uWzBdKSpBYSx1PW5bMV0qQWEsaT10WzFdKkFhLG89TWF0aC5zaW4ociksYT1NYXRoLmNvcyhy
KSxjPU1hdGguc2luKHUpLHM9TWF0aC5jb3ModSksbD1NYXRoLnNpbihpKSxmPU1hdGguY29zKGkp
O3JldHVybiBNYXRoLmF0YW4yKE1hdGguc3FydCgoZT1mKm8pKmUrKGU9cypsLWMqZiphKSplKSxj
KmwrcypmKmEpfSxaby5nZW8uZ3JhdGljdWxlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3JldHVy
bnt0eXBlOiJNdWx0aUxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOnQoKX19ZnVuY3Rpb24gdCgpe3Jl
dHVybiBaby5yYW5nZShNYXRoLmNlaWwoaS9kKSpkLHUsZCkubWFwKGgpLmNvbmNhdChaby5yYW5n
ZShNYXRoLmNlaWwocy9tKSptLGMsbSkubWFwKGcpKS5jb25jYXQoWm8ucmFuZ2UoTWF0aC5jZWls
KHIvcCkqcCxlLHApLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gdWEobiVkKT5rYX0pLm1hcChs
KSkuY29uY2F0KFpvLnJhbmdlKE1hdGguY2VpbChhL3YpKnYsbyx2KS5maWx0ZXIoZnVuY3Rpb24o
bil7cmV0dXJuIHVhKG4lbSk+a2F9KS5tYXAoZikpfXZhciBlLHIsdSxpLG8sYSxjLHMsbCxmLGgs
ZyxwPTEwLHY9cCxkPTkwLG09MzYwLHk9Mi41O3JldHVybiBuLmxpbmVzPWZ1bmN0aW9uKCl7cmV0
dXJuIHQoKS5tYXAoZnVuY3Rpb24obil7cmV0dXJue3R5cGU6IkxpbmVTdHJpbmciLGNvb3JkaW5h
dGVzOm59fSl9LG4ub3V0bGluZT1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJQb2x5Z29uIixjb29y
ZGluYXRlczpbaChpKS5jb25jYXQoZyhjKS5zbGljZSgxKSxoKHUpLnJldmVyc2UoKS5zbGljZSgx
KSxnKHMpLnJldmVyc2UoKS5zbGljZSgxKSldfX0sbi5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/bi5tYWpvckV4dGVudCh0KS5taW5vckV4dGVudCh0KTpuLm1pbm9y
RXh0ZW50KCl9LG4ubWFqb3JFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGk9K3RbMF1bMF0sdT0rdFsxXVswXSxzPSt0WzBdWzFdLGM9K3RbMV1bMV0saT51JiYodD1p
LGk9dSx1PXQpLHM+YyYmKHQ9cyxzPWMsYz10KSxuLnByZWNpc2lvbih5KSk6W1tpLHNdLFt1LGNd
XX0sbi5taW5vckV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0r
dFswXVswXSxlPSt0WzFdWzBdLGE9K3RbMF1bMV0sbz0rdFsxXVsxXSxyPmUmJih0PXIscj1lLGU9
dCksYT5vJiYodD1hLGE9byxvPXQpLG4ucHJlY2lzaW9uKHkpKTpbW3IsYV0sW2Usb11dfSxuLnN0
ZXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bi5tYWpvclN0ZXAodCkubWlu
b3JTdGVwKHQpOm4ubWlub3JTdGVwKCl9LG4ubWFqb3JTdGVwPWZ1bmN0aW9uKHQpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhkPSt0WzBdLG09K3RbMV0sbik6W2QsbV19LG4ubWlub3JTdGVwPWZ1
bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPSt0WzBdLHY9K3RbMV0sbik6W3As
dl19LG4ucHJlY2lzaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PSt0
LGw9ZnIoYSxvLDkwKSxmPWhyKHIsZSx5KSxoPWZyKHMsYyw5MCksZz1ocihpLHUseSksbik6eX0s
bi5tYWpvckV4dGVudChbWy0xODAsLTkwK2thXSxbMTgwLDkwLWthXV0pLm1pbm9yRXh0ZW50KFtb
LTE4MCwtODAta2FdLFsxODAsODAra2FdXSl9LFpvLmdlby5ncmVhdEFyYz1mdW5jdGlvbigpe2Z1
bmN0aW9uIG4oKXtyZXR1cm57dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6W3R8fHIuYXBw
bHkodGhpcyxhcmd1bWVudHMpLGV8fHUuYXBwbHkodGhpcyxhcmd1bWVudHMpXX19dmFyIHQsZSxy
PWdyLHU9cHI7cmV0dXJuIG4uZGlzdGFuY2U9ZnVuY3Rpb24oKXtyZXR1cm4gWm8uZ2VvLmRpc3Rh
bmNlKHR8fHIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGV8fHUuYXBwbHkodGhpcyxhcmd1bWVudHMp
KX0sbi5zb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ZSx0PSJm
dW5jdGlvbiI9PXR5cGVvZiBlP251bGw6ZSxuKTpyfSxuLnRhcmdldD1mdW5jdGlvbih0KXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8odT10LGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/bnVsbDp0LG4p
OnV9LG4ucHJlY2lzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bjowfSxu
fSxaby5nZW8uaW50ZXJwb2xhdGU9ZnVuY3Rpb24obix0KXtyZXR1cm4gdnIoblswXSpBYSxuWzFd
KkFhLHRbMF0qQWEsdFsxXSpBYSl9LFpvLmdlby5sZW5ndGg9ZnVuY3Rpb24obil7cmV0dXJuIERj
PTAsWm8uZ2VvLnN0cmVhbShuLFBjKSxEY307dmFyIERjLFBjPXtzcGhlcmU6dixwb2ludDp2LGxp
bmVTdGFydDpkcixsaW5lRW5kOnYscG9seWdvblN0YXJ0OnYscG9seWdvbkVuZDp2fSxVYz1tcihm
dW5jdGlvbihuKXtyZXR1cm4gTWF0aC5zcXJ0KDIvKDErbikpfSxmdW5jdGlvbihuKXtyZXR1cm4g
MipNYXRoLmFzaW4obi8yKX0pOyhaby5nZW8uYXppbXV0aGFsRXF1YWxBcmVhPWZ1bmN0aW9uKCl7
cmV0dXJuIG5yKFVjKX0pLnJhdz1VYzt2YXIgamM9bXIoZnVuY3Rpb24obil7dmFyIHQ9TWF0aC5h
Y29zKG4pO3JldHVybiB0JiZ0L01hdGguc2luKHQpfSx3dCk7KFpvLmdlby5hemltdXRoYWxFcXVp
ZGlzdGFudD1mdW5jdGlvbigpe3JldHVybiBucihqYyl9KS5yYXc9amMsKFpvLmdlby5jb25pY0Nv
bmZvcm1hbD1mdW5jdGlvbigpe3JldHVybiBIZSh5cil9KS5yYXc9eXIsKFpvLmdlby5jb25pY0Vx
dWlkaXN0YW50PWZ1bmN0aW9uKCl7cmV0dXJuIEhlKHhyKX0pLnJhdz14cjt2YXIgSGM9bXIoZnVu
Y3Rpb24obil7cmV0dXJuIDEvbn0sTWF0aC5hdGFuKTsoWm8uZ2VvLmdub21vbmljPWZ1bmN0aW9u
KCl7cmV0dXJuIG5yKEhjKX0pLnJhdz1IYyxNci5pbnZlcnQ9ZnVuY3Rpb24obix0KXtyZXR1cm5b
biwyKk1hdGguYXRhbihNYXRoLmV4cCh0KSktU2FdfSwoWm8uZ2VvLm1lcmNhdG9yPWZ1bmN0aW9u
KCl7cmV0dXJuIF9yKE1yKX0pLnJhdz1Ncjt2YXIgRmM9bXIoZnVuY3Rpb24oKXtyZXR1cm4gMX0s
TWF0aC5hc2luKTsoWm8uZ2VvLm9ydGhvZ3JhcGhpYz1mdW5jdGlvbigpe3JldHVybiBucihGYyl9
KS5yYXc9RmM7dmFyIE9jPW1yKGZ1bmN0aW9uKG4pe3JldHVybiAxLygxK24pfSxmdW5jdGlvbihu
KXtyZXR1cm4gMipNYXRoLmF0YW4obil9KTsoWm8uZ2VvLnN0ZXJlb2dyYXBoaWM9ZnVuY3Rpb24o
KXtyZXR1cm4gbnIoT2MpfSkucmF3PU9jLGJyLmludmVydD1mdW5jdGlvbihuLHQpe3JldHVyblst
dCwyKk1hdGguYXRhbihNYXRoLmV4cChuKSktU2FdfSwoWm8uZ2VvLnRyYW5zdmVyc2VNZXJjYXRv
cj1mdW5jdGlvbigpe3ZhciBuPV9yKGJyKSx0PW4uY2VudGVyLGU9bi5yb3RhdGU7cmV0dXJuIG4u
Y2VudGVyPWZ1bmN0aW9uKG4pe3JldHVybiBuP3QoWy1uWzFdLG5bMF1dKToobj10KCksW25bMV0s
LW5bMF1dKX0sbi5yb3RhdGU9ZnVuY3Rpb24obil7cmV0dXJuIG4/ZShbblswXSxuWzFdLG4ubGVu
Z3RoPjI/blsyXSs5MDo5MF0pOihuPWUoKSxbblswXSxuWzFdLG5bMl0tOTBdKX0sZShbMCwwLDkw
XSl9KS5yYXc9YnIsWm8uZ2VvbT17fSxaby5nZW9tLmh1bGw9ZnVuY3Rpb24obil7ZnVuY3Rpb24g
dChuKXtpZihuLmxlbmd0aDwzKXJldHVybltdO3ZhciB0LHU9YnQoZSksaT1idChyKSxvPW4ubGVu
Z3RoLGE9W10sYz1bXTtmb3IodD0wO28+dDt0KyspYS5wdXNoKFsrdS5jYWxsKHRoaXMsblt0XSx0
KSwraS5jYWxsKHRoaXMsblt0XSx0KSx0XSk7Zm9yKGEuc29ydChFciksdD0wO28+dDt0KyspYy5w
dXNoKFthW3RdWzBdLC1hW3RdWzFdXSk7dmFyIHM9a3IoYSksbD1rcihjKSxmPWxbMF09PT1zWzBd
LGg9bFtsLmxlbmd0aC0xXT09PXNbcy5sZW5ndGgtMV0sZz1bXTtmb3IodD1zLmxlbmd0aC0xO3Q+
PTA7LS10KWcucHVzaChuW2Fbc1t0XV1bMl1dKTtmb3IodD0rZjt0PGwubGVuZ3RoLWg7Kyt0KWcu
cHVzaChuW2FbbFt0XV1bMl1dKTtyZXR1cm4gZ312YXIgZT13cixyPVNyO3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoP3Qobik6KHQueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
ZT1uLHQpOmV9LHQueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1uLHQp
OnJ9LHQpfSxaby5nZW9tLnBvbHlnb249ZnVuY3Rpb24obil7cmV0dXJuIHNhKG4sWWMpLG59O3Zh
ciBZYz1aby5nZW9tLnBvbHlnb24ucHJvdG90eXBlPVtdO1ljLmFyZWE9ZnVuY3Rpb24oKXtmb3Io
dmFyIG4sdD0tMSxlPXRoaXMubGVuZ3RoLHI9dGhpc1tlLTFdLHU9MDsrK3Q8ZTspbj1yLHI9dGhp
c1t0XSx1Kz1uWzFdKnJbMF0tblswXSpyWzFdO3JldHVybi41KnV9LFljLmNlbnRyb2lkPWZ1bmN0
aW9uKG4pe3ZhciB0LGUscj0tMSx1PXRoaXMubGVuZ3RoLGk9MCxvPTAsYT10aGlzW3UtMV07Zm9y
KGFyZ3VtZW50cy5sZW5ndGh8fChuPS0xLyg2KnRoaXMuYXJlYSgpKSk7KytyPHU7KXQ9YSxhPXRo
aXNbcl0sZT10WzBdKmFbMV0tYVswXSp0WzFdLGkrPSh0WzBdK2FbMF0pKmUsbys9KHRbMV0rYVsx
XSkqZTtyZXR1cm5baSpuLG8qbl19LFljLmNsaXA9ZnVuY3Rpb24obil7Zm9yKHZhciB0LGUscix1
LGksbyxhPU5yKG4pLGM9LTEscz10aGlzLmxlbmd0aC1Ocih0aGlzKSxsPXRoaXNbcy0xXTsrK2M8
czspe2Zvcih0PW4uc2xpY2UoKSxuLmxlbmd0aD0wLHU9dGhpc1tjXSxpPXRbKHI9dC5sZW5ndGgt
YSktMV0sZT0tMTsrK2U8cjspbz10W2VdLEFyKG8sbCx1KT8oQXIoaSxsLHUpfHxuLnB1c2goQ3Io
aSxvLGwsdSkpLG4ucHVzaChvKSk6QXIoaSxsLHUpJiZuLnB1c2goQ3IoaSxvLGwsdSkpLGk9bzth
JiZuLnB1c2goblswXSksbD11fXJldHVybiBufTt2YXIgSWMsWmMsVmMsWGMsJGMsQmM9W10sV2M9
W107VXIucHJvdG90eXBlLnByZXBhcmU9ZnVuY3Rpb24oKXtmb3IodmFyIG4sdD10aGlzLmVkZ2Vz
LGU9dC5sZW5ndGg7ZS0tOyluPXRbZV0uZWRnZSxuLmImJm4uYXx8dC5zcGxpY2UoZSwxKTtyZXR1
cm4gdC5zb3J0KEhyKSx0Lmxlbmd0aH0sV3IucHJvdG90eXBlPXtzdGFydDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLmVkZ2UubD09PXRoaXMuc2l0ZT90aGlzLmVkZ2UuYTp0aGlzLmVkZ2UuYn0sZW5k
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRnZS5sPT09dGhpcy5zaXRlP3RoaXMuZWRnZS5iOnRo
aXMuZWRnZS5hfX0sSnIucHJvdG90eXBlPXtpbnNlcnQ6ZnVuY3Rpb24obix0KXt2YXIgZSxyLHU7
aWYobil7aWYodC5QPW4sdC5OPW4uTixuLk4mJihuLk4uUD10KSxuLk49dCxuLlIpe2ZvcihuPW4u
UjtuLkw7KW49bi5MO24uTD10fWVsc2Ugbi5SPXQ7ZT1ufWVsc2UgdGhpcy5fPyhuPW51KHRoaXMu
XyksdC5QPW51bGwsdC5OPW4sbi5QPW4uTD10LGU9bik6KHQuUD10Lk49bnVsbCx0aGlzLl89dCxl
PW51bGwpO2Zvcih0Lkw9dC5SPW51bGwsdC5VPWUsdC5DPSEwLG49dDtlJiZlLkM7KXI9ZS5VLGU9
PT1yLkw/KHU9ci5SLHUmJnUuQz8oZS5DPXUuQz0hMSxyLkM9ITAsbj1yKToobj09PWUuUiYmKEty
KHRoaXMsZSksbj1lLGU9bi5VKSxlLkM9ITEsci5DPSEwLFFyKHRoaXMscikpKToodT1yLkwsdSYm
dS5DPyhlLkM9dS5DPSExLHIuQz0hMCxuPXIpOihuPT09ZS5MJiYoUXIodGhpcyxlKSxuPWUsZT1u
LlUpLGUuQz0hMSxyLkM9ITAsS3IodGhpcyxyKSkpLGU9bi5VO3RoaXMuXy5DPSExfSxyZW1vdmU6
ZnVuY3Rpb24obil7bi5OJiYobi5OLlA9bi5QKSxuLlAmJihuLlAuTj1uLk4pLG4uTj1uLlA9bnVs
bDt2YXIgdCxlLHIsdT1uLlUsaT1uLkwsbz1uLlI7aWYoZT1pP28/bnUobyk6aTpvLHU/dS5MPT09
bj91Lkw9ZTp1LlI9ZTp0aGlzLl89ZSxpJiZvPyhyPWUuQyxlLkM9bi5DLGUuTD1pLGkuVT1lLGUh
PT1vPyh1PWUuVSxlLlU9bi5VLG49ZS5SLHUuTD1uLGUuUj1vLG8uVT1lKTooZS5VPXUsdT1lLG49
ZS5SKSk6KHI9bi5DLG49ZSksbiYmKG4uVT11KSwhcil7aWYobiYmbi5DKXJldHVybiBuLkM9ITEs
dm9pZCAwO2Rve2lmKG49PT10aGlzLl8pYnJlYWs7aWYobj09PXUuTCl7aWYodD11LlIsdC5DJiYo
dC5DPSExLHUuQz0hMCxLcih0aGlzLHUpLHQ9dS5SKSx0LkwmJnQuTC5DfHx0LlImJnQuUi5DKXt0
LlImJnQuUi5DfHwodC5MLkM9ITEsdC5DPSEwLFFyKHRoaXMsdCksdD11LlIpLHQuQz11LkMsdS5D
PXQuUi5DPSExLEtyKHRoaXMsdSksbj10aGlzLl87YnJlYWt9fWVsc2UgaWYodD11LkwsdC5DJiYo
dC5DPSExLHUuQz0hMCxRcih0aGlzLHUpLHQ9dS5MKSx0LkwmJnQuTC5DfHx0LlImJnQuUi5DKXt0
LkwmJnQuTC5DfHwodC5SLkM9ITEsdC5DPSEwLEtyKHRoaXMsdCksdD11LkwpLHQuQz11LkMsdS5D
PXQuTC5DPSExLFFyKHRoaXMsdSksbj10aGlzLl87YnJlYWt9dC5DPSEwLG49dSx1PXUuVX13aGls
ZSghbi5DKTtuJiYobi5DPSExKX19fSxaby5nZW9tLnZvcm9ub2k9ZnVuY3Rpb24obil7ZnVuY3Rp
b24gdChuKXt2YXIgdD1uZXcgQXJyYXkobi5sZW5ndGgpLHI9YVswXVswXSx1PWFbMF1bMV0saT1h
WzFdWzBdLG89YVsxXVsxXTtyZXR1cm4gdHUoZShuKSxhKS5jZWxscy5mb3JFYWNoKGZ1bmN0aW9u
KGUsYSl7dmFyIGM9ZS5lZGdlcyxzPWUuc2l0ZSxsPXRbYV09Yy5sZW5ndGg/Yy5tYXAoZnVuY3Rp
b24obil7dmFyIHQ9bi5zdGFydCgpO3JldHVyblt0LngsdC55XX0pOnMueD49ciYmcy54PD1pJiZz
Lnk+PXUmJnMueTw9bz9bW3Isb10sW2ksb10sW2ksdV0sW3IsdV1dOltdO2wucG9pbnQ9blthXX0p
LHR9ZnVuY3Rpb24gZShuKXtyZXR1cm4gbi5tYXAoZnVuY3Rpb24obix0KXtyZXR1cm57eDpNYXRo
LnJvdW5kKGkobix0KS9rYSkqa2EseTpNYXRoLnJvdW5kKG8obix0KS9rYSkqa2EsaTp0fX0pfXZh
ciByPXdyLHU9U3IsaT1yLG89dSxhPUpjO3JldHVybiBuP3Qobik6KHQubGlua3M9ZnVuY3Rpb24o
bil7cmV0dXJuIHR1KGUobikpLmVkZ2VzLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gbi5sJiZu
LnJ9KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJue3NvdXJjZTpuW3QubC5pXSx0YXJnZXQ6blt0LnIu
aV19fSl9LHQudHJpYW5nbGVzPWZ1bmN0aW9uKG4pe3ZhciB0PVtdO3JldHVybiB0dShlKG4pKS5j
ZWxscy5mb3JFYWNoKGZ1bmN0aW9uKGUscil7Zm9yKHZhciB1LGksbz1lLnNpdGUsYT1lLmVkZ2Vz
LnNvcnQoSHIpLGM9LTEscz1hLmxlbmd0aCxsPWFbcy0xXS5lZGdlLGY9bC5sPT09bz9sLnI6bC5s
OysrYzxzOyl1PWwsaT1mLGw9YVtjXS5lZGdlLGY9bC5sPT09bz9sLnI6bC5sLHI8aS5pJiZyPGYu
aSYmcnUobyxpLGYpPDAmJnQucHVzaChbbltyXSxuW2kuaV0sbltmLmldXSl9KSx0fSx0Lng9ZnVu
Y3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9YnQocj1uKSx0KTpyfSx0Lnk9ZnVu
Y3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89YnQodT1uKSx0KTp1fSx0LmNsaXBF
eHRlbnQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bnVsbD09bj9KYzpu
LHQpOmE9PT1KYz9udWxsOmF9LHQuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD90LmNsaXBFeHRlbnQobiYmW1swLDBdLG5dKTphPT09SmM/bnVsbDphJiZhWzFdfSx0KX07
dmFyIEpjPVtbLTFlNiwtMWU2XSxbMWU2LDFlNl1dO1pvLmdlb20uZGVsYXVuYXk9ZnVuY3Rpb24o
bil7cmV0dXJuIFpvLmdlb20udm9yb25vaSgpLnRyaWFuZ2xlcyhuKX0sWm8uZ2VvbS5xdWFkdHJl
ZT1mdW5jdGlvbihuLHQsZSxyLHUpe2Z1bmN0aW9uIGkobil7ZnVuY3Rpb24gaShuLHQsZSxyLHUs
aSxvLGEpe2lmKCFpc05hTihlKSYmIWlzTmFOKHIpKWlmKG4ubGVhZil7dmFyIGM9bi54LGw9bi55
O2lmKG51bGwhPWMpaWYodWEoYy1lKSt1YShsLXIpPC4wMSlzKG4sdCxlLHIsdSxpLG8sYSk7ZWxz
ZXt2YXIgZj1uLnBvaW50O24ueD1uLnk9bi5wb2ludD1udWxsLHMobixmLGMsbCx1LGksbyxhKSxz
KG4sdCxlLHIsdSxpLG8sYSl9ZWxzZSBuLng9ZSxuLnk9cixuLnBvaW50PXR9ZWxzZSBzKG4sdCxl
LHIsdSxpLG8sYSl9ZnVuY3Rpb24gcyhuLHQsZSxyLHUsbyxhLGMpe3ZhciBzPS41Kih1K2EpLGw9
LjUqKG8rYyksZj1lPj1zLGg9cj49bCxnPShoPDwxKStmO24ubGVhZj0hMSxuPW4ubm9kZXNbZ118
fChuLm5vZGVzW2ddPW91KCkpLGY/dT1zOmE9cyxoP289bDpjPWwsaShuLHQsZSxyLHUsbyxhLGMp
fXZhciBsLGYsaCxnLHAsdixkLG0seSx4PWJ0KGEpLE09YnQoYyk7aWYobnVsbCE9dCl2PXQsZD1l
LG09cix5PXU7ZWxzZSBpZihtPXk9LSh2PWQ9MS8wKSxmPVtdLGg9W10scD1uLmxlbmd0aCxvKWZv
cihnPTA7cD5nOysrZylsPW5bZ10sbC54PHYmJih2PWwueCksbC55PGQmJihkPWwueSksbC54Pm0m
JihtPWwueCksbC55PnkmJih5PWwueSksZi5wdXNoKGwueCksaC5wdXNoKGwueSk7ZWxzZSBmb3Io
Zz0wO3A+ZzsrK2cpe3ZhciBfPSt4KGw9bltnXSxnKSxiPStNKGwsZyk7dj5fJiYodj1fKSxkPmIm
JihkPWIpLF8+bSYmKG09XyksYj55JiYoeT1iKSxmLnB1c2goXyksaC5wdXNoKGIpfXZhciB3PW0t
dixTPXktZDt3PlM/eT1kK3c6bT12K1M7dmFyIGs9b3UoKTtpZihrLmFkZD1mdW5jdGlvbihuKXtp
KGssbiwreChuLCsrZyksK00obixnKSx2LGQsbSx5KX0say52aXNpdD1mdW5jdGlvbihuKXthdShu
LGssdixkLG0seSl9LGc9LTEsbnVsbD09dCl7Zm9yKDsrK2c8cDspaShrLG5bZ10sZltnXSxoW2dd
LHYsZCxtLHkpOy0tZ31lbHNlIG4uZm9yRWFjaChrLmFkZCk7cmV0dXJuIGY9aD1uPWw9bnVsbCxr
fXZhciBvLGE9d3IsYz1TcjtyZXR1cm4obz1hcmd1bWVudHMubGVuZ3RoKT8oYT11dSxjPWl1LDM9
PT1vJiYodT1lLHI9dCxlPXQ9MCksaShuKSk6KGkueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oYT1uLGkpOmF9LGkueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oYz1uLGkpOmN9LGkuZXh0ZW50PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhudWxsPT1uP3Q9ZT1yPXU9bnVsbDoodD0rblswXVswXSxlPStuWzBdWzFdLHI9K25bMV1b
MF0sdT0rblsxXVsxXSksaSk6bnVsbD09dD9udWxsOltbdCxlXSxbcix1XV19LGkuc2l6ZT1mdW5j
dGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09bj90PWU9cj11PW51bGw6KHQ9
ZT0wLHI9K25bMF0sdT0rblsxXSksaSk6bnVsbD09dD9udWxsOltyLXQsdS1lXX0saSl9LFpvLmlu
dGVycG9sYXRlUmdiPWN1LFpvLmludGVycG9sYXRlT2JqZWN0PXN1LFpvLmludGVycG9sYXRlTnVt
YmVyPWx1LFpvLmludGVycG9sYXRlU3RyaW5nPWZ1O3ZhciBHYz0vWy0rXT8oPzpcZCtcLj9cZCp8
XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2csS2M9bmV3IFJlZ0V4cChHYy5zb3VyY2UsImciKTta
by5pbnRlcnBvbGF0ZT1odSxaby5pbnRlcnBvbGF0b3JzPVtmdW5jdGlvbihuLHQpe3ZhciBlPXR5
cGVvZiB0O3JldHVybigic3RyaW5nIj09PWU/SWEuaGFzKHQpfHwvXigjfHJnYlwofGhzbFwoKS8u
dGVzdCh0KT9jdTpmdTp0IGluc3RhbmNlb2YgZXQ/Y3U6QXJyYXkuaXNBcnJheSh0KT9ndToib2Jq
ZWN0Ij09PWUmJmlzTmFOKHQpP3N1Omx1KShuLHQpfV0sWm8uaW50ZXJwb2xhdGVBcnJheT1ndTt2
YXIgUWM9ZnVuY3Rpb24oKXtyZXR1cm4gd3R9LG5zPVpvLm1hcCh7bGluZWFyOlFjLHBvbHk6TXUs
cXVhZDpmdW5jdGlvbigpe3JldHVybiBtdX0sY3ViaWM6ZnVuY3Rpb24oKXtyZXR1cm4geXV9LHNp
bjpmdW5jdGlvbigpe3JldHVybiBfdX0sZXhwOmZ1bmN0aW9uKCl7cmV0dXJuIGJ1fSxjaXJjbGU6
ZnVuY3Rpb24oKXtyZXR1cm4gd3V9LGVsYXN0aWM6U3UsYmFjazprdSxib3VuY2U6ZnVuY3Rpb24o
KXtyZXR1cm4gRXV9fSksdHM9Wm8ubWFwKHsiaW4iOnd0LG91dDp2dSwiaW4tb3V0IjpkdSwib3V0
LWluIjpmdW5jdGlvbihuKXtyZXR1cm4gZHUodnUobikpfX0pO1pvLmVhc2U9ZnVuY3Rpb24obil7
dmFyIHQ9bi5pbmRleE9mKCItIiksZT10Pj0wP24uc3Vic3RyaW5nKDAsdCk6bixyPXQ+PTA/bi5z
dWJzdHJpbmcodCsxKToiaW4iO3JldHVybiBlPW5zLmdldChlKXx8UWMscj10cy5nZXQocil8fHd0
LHB1KHIoZS5hcHBseShudWxsLFZvLmNhbGwoYXJndW1lbnRzLDEpKSkpfSxaby5pbnRlcnBvbGF0
ZUhjbD1BdSxaby5pbnRlcnBvbGF0ZUhzbD1DdSxaby5pbnRlcnBvbGF0ZUxhYj1OdSxaby5pbnRl
cnBvbGF0ZVJvdW5kPXp1LFpvLnRyYW5zZm9ybT1mdW5jdGlvbihuKXt2YXIgdD0kby5jcmVhdGVF
bGVtZW50TlMoWm8ubnMucHJlZml4LnN2ZywiZyIpO3JldHVybihaby50cmFuc2Zvcm09ZnVuY3Rp
b24obil7aWYobnVsbCE9bil7dC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsbik7dmFyIGU9dC50
cmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpfXJldHVybiBuZXcgTHUoZT9lLm1hdHJpeDpl
cyl9KShuKX0sTHUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuInRyYW5zbGF0
ZSgiK3RoaXMudHJhbnNsYXRlKyIpcm90YXRlKCIrdGhpcy5yb3RhdGUrIilza2V3WCgiK3RoaXMu
c2tldysiKXNjYWxlKCIrdGhpcy5zY2FsZSsiKSJ9O3ZhciBlcz17YToxLGI6MCxjOjAsZDoxLGU6
MCxmOjB9O1pvLmludGVycG9sYXRlVHJhbnNmb3JtPUR1LFpvLmxheW91dD17fSxaby5sYXlvdXQu
YnVuZGxlPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG4pe2Zvcih2YXIgdD1bXSxlPS0xLHI9
bi5sZW5ndGg7KytlPHI7KXQucHVzaChqdShuW2VdKSk7cmV0dXJuIHR9fSxaby5sYXlvdXQuY2hv
cmQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7dmFyIG4scyxmLGgsZyxwPXt9LHY9W10sZD1aby5y
YW5nZShpKSxtPVtdO2ZvcihlPVtdLHI9W10sbj0wLGg9LTE7KytoPGk7KXtmb3Iocz0wLGc9LTE7
KytnPGk7KXMrPXVbaF1bZ107di5wdXNoKHMpLG0ucHVzaChaby5yYW5nZShpKSksbis9c31mb3Io
byYmZC5zb3J0KGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG8odltuXSx2W3RdKX0pLGEmJm0uZm9yRWFj
aChmdW5jdGlvbihuLHQpe24uc29ydChmdW5jdGlvbihuLGUpe3JldHVybiBhKHVbdF1bbl0sdVt0
XVtlXSl9KX0pLG49KHdhLWwqaSkvbixzPTAsaD0tMTsrK2g8aTspe2ZvcihmPXMsZz0tMTsrK2c8
aTspe3ZhciB5PWRbaF0seD1tW3ldW2ddLE09dVt5XVt4XSxfPXMsYj1zKz1NKm47cFt5KyItIit4
XT17aW5kZXg6eSxzdWJpbmRleDp4LHN0YXJ0QW5nbGU6XyxlbmRBbmdsZTpiLHZhbHVlOk19fXJb
eV09e2luZGV4Onksc3RhcnRBbmdsZTpmLGVuZEFuZ2xlOnMsdmFsdWU6KHMtZikvbn0scys9bH1m
b3IoaD0tMTsrK2g8aTspZm9yKGc9aC0xOysrZzxpOyl7dmFyIHc9cFtoKyItIitnXSxTPXBbZysi
LSIraF07KHcudmFsdWV8fFMudmFsdWUpJiZlLnB1c2gody52YWx1ZTxTLnZhbHVlP3tzb3VyY2U6
Uyx0YXJnZXQ6d306e3NvdXJjZTp3LHRhcmdldDpTfSl9YyYmdCgpfWZ1bmN0aW9uIHQoKXtlLnNv
cnQoZnVuY3Rpb24obix0KXtyZXR1cm4gYygobi5zb3VyY2UudmFsdWUrbi50YXJnZXQudmFsdWUp
LzIsKHQuc291cmNlLnZhbHVlK3QudGFyZ2V0LnZhbHVlKS8yKX0pfXZhciBlLHIsdSxpLG8sYSxj
LHM9e30sbD0wO3JldHVybiBzLm1hdHJpeD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oaT0odT1uKSYmdS5sZW5ndGgsZT1yPW51bGwscyk6dX0scy5wYWRkaW5nPWZ1bmN0aW9u
KG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPW4sZT1yPW51bGwscyk6bH0scy5zb3J0R3Jv
dXBzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPW4sZT1yPW51bGwscyk6
b30scy5zb3J0U3ViZ3JvdXBzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhh
PW4sZT1udWxsLHMpOmF9LHMuc29ydENob3Jkcz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oYz1uLGUmJnQoKSxzKTpjfSxzLmNob3Jkcz1mdW5jdGlvbigpe3JldHVybiBlfHxu
KCksZX0scy5ncm91cHM9ZnVuY3Rpb24oKXtyZXR1cm4gcnx8bigpLHJ9LHN9LFpvLmxheW91dC5m
b3JjZT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obil7cmV0dXJuIGZ1bmN0aW9uKHQsZSxyLHUpe2lm
KHQucG9pbnQhPT1uKXt2YXIgaT10LmN4LW4ueCxvPXQuY3ktbi55LGE9dS1lLGM9aSppK28qbztp
ZihjPmEqYS9kKXtpZihwPmMpe3ZhciBzPXQuY2hhcmdlL2M7bi5weC09aSpzLG4ucHktPW8qc31y
ZXR1cm4hMH1pZih0LnBvaW50JiZjJiZwPmMpe3ZhciBzPXQucG9pbnRDaGFyZ2UvYztuLnB4LT1p
KnMsbi5weS09bypzfX1yZXR1cm4hdC5jaGFyZ2V9fWZ1bmN0aW9uIHQobil7bi5weD1aby5ldmVu
dC54LG4ucHk9Wm8uZXZlbnQueSxhLnJlc3VtZSgpfXZhciBlLHIsdSxpLG8sYT17fSxjPVpvLmRp
c3BhdGNoKCJzdGFydCIsInRpY2siLCJlbmQiKSxzPVsxLDFdLGw9LjksZj1ycyxoPXVzLGc9LTMw
LHA9aXMsdj0uMSxkPS42NCxtPVtdLHk9W107cmV0dXJuIGEudGljaz1mdW5jdGlvbigpe2lmKChy
Kj0uOTkpPC4wMDUpcmV0dXJuIGMuZW5kKHt0eXBlOiJlbmQiLGFscGhhOnI9MH0pLCEwO3ZhciB0
LGUsYSxmLGgscCxkLHgsTSxfPW0ubGVuZ3RoLGI9eS5sZW5ndGg7Zm9yKGU9MDtiPmU7KytlKWE9
eVtlXSxmPWEuc291cmNlLGg9YS50YXJnZXQseD1oLngtZi54LE09aC55LWYueSwocD14KngrTSpN
KSYmKHA9cippW2VdKigocD1NYXRoLnNxcnQocCkpLXVbZV0pL3AseCo9cCxNKj1wLGgueC09eCoo
ZD1mLndlaWdodC8oaC53ZWlnaHQrZi53ZWlnaHQpKSxoLnktPU0qZCxmLngrPXgqKGQ9MS1kKSxm
LnkrPU0qZCk7aWYoKGQ9cip2KSYmKHg9c1swXS8yLE09c1sxXS8yLGU9LTEsZCkpZm9yKDsrK2U8
XzspYT1tW2VdLGEueCs9KHgtYS54KSpkLGEueSs9KE0tYS55KSpkO2lmKGcpZm9yKFZ1KHQ9Wm8u
Z2VvbS5xdWFkdHJlZShtKSxyLG8pLGU9LTE7KytlPF87KShhPW1bZV0pLmZpeGVkfHx0LnZpc2l0
KG4oYSkpO2ZvcihlPS0xOysrZTxfOylhPW1bZV0sYS5maXhlZD8oYS54PWEucHgsYS55PWEucHkp
OihhLngtPShhLnB4LShhLnB4PWEueCkpKmwsYS55LT0oYS5weS0oYS5weT1hLnkpKSpsKTtjLnRp
Y2soe3R5cGU6InRpY2siLGFscGhhOnJ9KX0sYS5ub2Rlcz1mdW5jdGlvbihuKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8obT1uLGEpOm19LGEubGlua3M9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHk9bixhKTp5fSxhLnNpemU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KHM9bixhKTpzfSxhLmxpbmtEaXN0YW5jZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oZj0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOituLGEpOmZ9LGEuZGlzdGFu
Y2U9YS5saW5rRGlzdGFuY2UsYS5saW5rU3RyZW5ndGg9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGg9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjorbixhKTpofSxhLmZyaWN0aW9u
PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPStuLGEpOmx9LGEuY2hhcmdl
PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPSJmdW5jdGlvbiI9PXR5cGVv
ZiBuP246K24sYSk6Z30sYS5jaGFyZ2VEaXN0YW5jZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8ocD1uKm4sYSk6TWF0aC5zcXJ0KHApfSxhLmdyYXZpdHk9ZnVuY3Rpb24obil7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9K24sYSk6dn0sYS50aGV0YT1mdW5jdGlvbihuKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD1uKm4sYSk6TWF0aC5zcXJ0KGQpfSxhLmFscGhhPWZ1
bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPStuLHI/cj1uPjA/bjowOm4+MCYm
KGMuc3RhcnQoe3R5cGU6InN0YXJ0IixhbHBoYTpyPW59KSxaby50aW1lcihhLnRpY2spKSxhKTpy
fSxhLnN0YXJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHIpe2lmKCFlKXtmb3IoZT1uZXcgQXJy
YXkoYyksYT0wO2M+YTsrK2EpZVthXT1bXTtmb3IoYT0wO3M+YTsrK2Epe3ZhciB1PXlbYV07ZVt1
LnNvdXJjZS5pbmRleF0ucHVzaCh1LnRhcmdldCksZVt1LnRhcmdldC5pbmRleF0ucHVzaCh1LnNv
dXJjZSl9fWZvcih2YXIgaSxvPWVbdF0sYT0tMSxzPW8ubGVuZ3RoOysrYTxzOylpZighaXNOYU4o
aT1vW2FdW25dKSlyZXR1cm4gaTtyZXR1cm4gTWF0aC5yYW5kb20oKSpyfXZhciB0LGUscixjPW0u
bGVuZ3RoLGw9eS5sZW5ndGgscD1zWzBdLHY9c1sxXTtmb3IodD0wO2M+dDsrK3QpKHI9bVt0XSku
aW5kZXg9dCxyLndlaWdodD0wO2Zvcih0PTA7bD50OysrdClyPXlbdF0sIm51bWJlciI9PXR5cGVv
ZiByLnNvdXJjZSYmKHIuc291cmNlPW1bci5zb3VyY2VdKSwibnVtYmVyIj09dHlwZW9mIHIudGFy
Z2V0JiYoci50YXJnZXQ9bVtyLnRhcmdldF0pLCsrci5zb3VyY2Uud2VpZ2h0LCsrci50YXJnZXQu
d2VpZ2h0O2Zvcih0PTA7Yz50OysrdClyPW1bdF0saXNOYU4oci54KSYmKHIueD1uKCJ4IixwKSks
aXNOYU4oci55KSYmKHIueT1uKCJ5Iix2KSksaXNOYU4oci5weCkmJihyLnB4PXIueCksaXNOYU4o
ci5weSkmJihyLnB5PXIueSk7aWYodT1bXSwiZnVuY3Rpb24iPT10eXBlb2YgZilmb3IodD0wO2w+
dDsrK3QpdVt0XT0rZi5jYWxsKHRoaXMseVt0XSx0KTtlbHNlIGZvcih0PTA7bD50OysrdCl1W3Rd
PWY7aWYoaT1bXSwiZnVuY3Rpb24iPT10eXBlb2YgaClmb3IodD0wO2w+dDsrK3QpaVt0XT0raC5j
YWxsKHRoaXMseVt0XSx0KTtlbHNlIGZvcih0PTA7bD50OysrdClpW3RdPWg7aWYobz1bXSwiZnVu
Y3Rpb24iPT10eXBlb2YgZylmb3IodD0wO2M+dDsrK3Qpb1t0XT0rZy5jYWxsKHRoaXMsbVt0XSx0
KTtlbHNlIGZvcih0PTA7Yz50OysrdClvW3RdPWc7cmV0dXJuIGEucmVzdW1lKCl9LGEucmVzdW1l
PWZ1bmN0aW9uKCl7cmV0dXJuIGEuYWxwaGEoLjEpfSxhLnN0b3A9ZnVuY3Rpb24oKXtyZXR1cm4g
YS5hbHBoYSgwKX0sYS5kcmFnPWZ1bmN0aW9uKCl7cmV0dXJuIGV8fChlPVpvLmJlaGF2aW9yLmRy
YWcoKS5vcmlnaW4od3QpLm9uKCJkcmFnc3RhcnQuZm9yY2UiLE91KS5vbigiZHJhZy5mb3JjZSIs
dCkub24oImRyYWdlbmQuZm9yY2UiLFl1KSksYXJndW1lbnRzLmxlbmd0aD8odGhpcy5vbigibW91
c2VvdmVyLmZvcmNlIixJdSkub24oIm1vdXNlb3V0LmZvcmNlIixadSkuY2FsbChlKSx2b2lkIDAp
OmV9LFpvLnJlYmluZChhLGMsIm9uIil9O3ZhciBycz0yMCx1cz0xLGlzPTEvMDtaby5sYXlvdXQu
aGllcmFyY2h5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbih1KXt2YXIgaSxvPVt1XSxhPVtdO2Zvcih1
LmRlcHRoPTA7bnVsbCE9KGk9by5wb3AoKSk7KWlmKGEucHVzaChpKSwocz1lLmNhbGwobixpLGku
ZGVwdGgpKSYmKGM9cy5sZW5ndGgpKXtmb3IodmFyIGMscyxsOy0tYz49MDspby5wdXNoKGw9c1tj
XSksbC5wYXJlbnQ9aSxsLmRlcHRoPWkuZGVwdGgrMTtyJiYoaS52YWx1ZT0wKSxpLmNoaWxkcmVu
PXN9ZWxzZSByJiYoaS52YWx1ZT0rci5jYWxsKG4saSxpLmRlcHRoKXx8MCksZGVsZXRlIGkuY2hp
bGRyZW47cmV0dXJuIEJ1KHUsZnVuY3Rpb24obil7dmFyIGUsdTt0JiYoZT1uLmNoaWxkcmVuKSYm
ZS5zb3J0KHQpLHImJih1PW4ucGFyZW50KSYmKHUudmFsdWUrPW4udmFsdWUpfSksYX12YXIgdD1H
dSxlPVd1LHI9SnU7cmV0dXJuIG4uc29ydD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8odD1lLG4pOnR9LG4uY2hpbGRyZW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGU9dCxuKTplfSxuLnZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhyPXQsbik6cn0sbi5yZXZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiByJiYoJHUodCxmdW5j
dGlvbihuKXtuLmNoaWxkcmVuJiYobi52YWx1ZT0wKX0pLEJ1KHQsZnVuY3Rpb24odCl7dmFyIGU7
dC5jaGlsZHJlbnx8KHQudmFsdWU9K3IuY2FsbChuLHQsdC5kZXB0aCl8fDApLChlPXQucGFyZW50
KSYmKGUudmFsdWUrPXQudmFsdWUpfSkpLHR9LG59LFpvLmxheW91dC5wYXJ0aXRpb249ZnVuY3Rp
b24oKXtmdW5jdGlvbiBuKHQsZSxyLHUpe3ZhciBpPXQuY2hpbGRyZW47aWYodC54PWUsdC55PXQu
ZGVwdGgqdSx0LmR4PXIsdC5keT11LGkmJihvPWkubGVuZ3RoKSl7dmFyIG8sYSxjLHM9LTE7Zm9y
KHI9dC52YWx1ZT9yL3QudmFsdWU6MDsrK3M8bzspbihhPWlbc10sZSxjPWEudmFsdWUqcix1KSxl
Kz1jfX1mdW5jdGlvbiB0KG4pe3ZhciBlPW4uY2hpbGRyZW4scj0wO2lmKGUmJih1PWUubGVuZ3Ro
KSlmb3IodmFyIHUsaT0tMTsrK2k8dTspcj1NYXRoLm1heChyLHQoZVtpXSkpO3JldHVybiAxK3J9
ZnVuY3Rpb24gZShlLGkpe3ZhciBvPXIuY2FsbCh0aGlzLGUsaSk7cmV0dXJuIG4ob1swXSwwLHVb
MF0sdVsxXS90KG9bMF0pKSxvfXZhciByPVpvLmxheW91dC5oaWVyYXJjaHkoKSx1PVsxLDFdO3Jl
dHVybiBlLnNpemU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9bixlKTp1
fSxYdShlLHIpfSxaby5sYXlvdXQucGllPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihpKXt2YXIgbz1p
Lm1hcChmdW5jdGlvbihlLHIpe3JldHVybit0LmNhbGwobixlLHIpfSksYT0rKCJmdW5jdGlvbiI9
PXR5cGVvZiByP3IuYXBwbHkodGhpcyxhcmd1bWVudHMpOnIpLGM9KCgiZnVuY3Rpb24iPT10eXBl
b2YgdT91LmFwcGx5KHRoaXMsYXJndW1lbnRzKTp1KS1hKS9aby5zdW0obykscz1aby5yYW5nZShp
Lmxlbmd0aCk7bnVsbCE9ZSYmcy5zb3J0KGU9PT1vcz9mdW5jdGlvbihuLHQpe3JldHVybiBvW3Rd
LW9bbl19OmZ1bmN0aW9uKG4sdCl7cmV0dXJuIGUoaVtuXSxpW3RdKX0pO3ZhciBsPVtdO3JldHVy
biBzLmZvckVhY2goZnVuY3Rpb24obil7dmFyIHQ7bFtuXT17ZGF0YTppW25dLHZhbHVlOnQ9b1tu
XSxzdGFydEFuZ2xlOmEsZW5kQW5nbGU6YSs9dCpjfX0pLGx9dmFyIHQ9TnVtYmVyLGU9b3Mscj0w
LHU9d2E7cmV0dXJuIG4udmFsdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHQ9ZSxuKTp0fSxuLnNvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9
dCxuKTplfSxuLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHI9dCxuKTpyfSxuLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
Pyh1PXQsbik6dX0sbn07dmFyIG9zPXt9O1pvLmxheW91dC5zdGFjaz1mdW5jdGlvbigpe2Z1bmN0
aW9uIG4oYSxjKXt2YXIgcz1hLm1hcChmdW5jdGlvbihlLHIpe3JldHVybiB0LmNhbGwobixlLHIp
fSksbD1zLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm5b
aS5jYWxsKG4sdCxlKSxvLmNhbGwobix0LGUpXX0pfSksZj1lLmNhbGwobixsLGMpO3M9Wm8ucGVy
bXV0ZShzLGYpLGw9Wm8ucGVybXV0ZShsLGYpO3ZhciBoLGcscCx2PXIuY2FsbChuLGwsYyksZD1z
Lmxlbmd0aCxtPXNbMF0ubGVuZ3RoO2ZvcihnPTA7bT5nOysrZylmb3IodS5jYWxsKG4sc1swXVtn
XSxwPXZbZ10sbFswXVtnXVsxXSksaD0xO2Q+aDsrK2gpdS5jYWxsKG4sc1toXVtnXSxwKz1sW2gt
MV1bZ11bMV0sbFtoXVtnXVsxXSk7cmV0dXJuIGF9dmFyIHQ9d3QsZT1laSxyPXJpLHU9dGksaT1R
dSxvPW5pO3JldHVybiBuLnZhbHVlcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8odD1lLG4pOnR9LG4ub3JkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDphcy5nZXQodCl8fGVpLG4pOmV9LG4ub2Zmc2V0PWZ1
bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0
P3Q6Y3MuZ2V0KHQpfHxyaSxuKTpyfSxuLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGk9dCxuKTppfSxuLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KG89dCxuKTpvfSxuLm91dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT10
LG4pOnV9LG59O3ZhciBhcz1aby5tYXAoeyJpbnNpZGUtb3V0IjpmdW5jdGlvbihuKXt2YXIgdCxl
LHI9bi5sZW5ndGgsdT1uLm1hcCh1aSksaT1uLm1hcChpaSksbz1aby5yYW5nZShyKS5zb3J0KGZ1
bmN0aW9uKG4sdCl7cmV0dXJuIHVbbl0tdVt0XX0pLGE9MCxjPTAscz1bXSxsPVtdO2Zvcih0PTA7
cj50OysrdCllPW9bdF0sYz5hPyhhKz1pW2VdLHMucHVzaChlKSk6KGMrPWlbZV0sbC5wdXNoKGUp
KTtyZXR1cm4gbC5yZXZlcnNlKCkuY29uY2F0KHMpfSxyZXZlcnNlOmZ1bmN0aW9uKG4pe3JldHVy
biBaby5yYW5nZShuLmxlbmd0aCkucmV2ZXJzZSgpfSwiZGVmYXVsdCI6ZWl9KSxjcz1aby5tYXAo
e3NpbGhvdWV0dGU6ZnVuY3Rpb24obil7dmFyIHQsZSxyLHU9bi5sZW5ndGgsaT1uWzBdLmxlbmd0
aCxvPVtdLGE9MCxjPVtdO2ZvcihlPTA7aT5lOysrZSl7Zm9yKHQ9MCxyPTA7dT50O3QrKylyKz1u
W3RdW2VdWzFdO3I+YSYmKGE9ciksby5wdXNoKHIpfWZvcihlPTA7aT5lOysrZSljW2VdPShhLW9b
ZV0pLzI7cmV0dXJuIGN9LHdpZ2dsZTpmdW5jdGlvbihuKXt2YXIgdCxlLHIsdSxpLG8sYSxjLHMs
bD1uLmxlbmd0aCxmPW5bMF0saD1mLmxlbmd0aCxnPVtdO2ZvcihnWzBdPWM9cz0wLGU9MTtoPmU7
KytlKXtmb3IodD0wLHU9MDtsPnQ7Kyt0KXUrPW5bdF1bZV1bMV07Zm9yKHQ9MCxpPTAsYT1mW2Vd
WzBdLWZbZS0xXVswXTtsPnQ7Kyt0KXtmb3Iocj0wLG89KG5bdF1bZV1bMV0tblt0XVtlLTFdWzFd
KS8oMiphKTt0PnI7KytyKW8rPShuW3JdW2VdWzFdLW5bcl1bZS0xXVsxXSkvYTtpKz1vKm5bdF1b
ZV1bMV19Z1tlXT1jLT11P2kvdSphOjAscz5jJiYocz1jKX1mb3IoZT0wO2g+ZTsrK2UpZ1tlXS09
cztyZXR1cm4gZ30sZXhwYW5kOmZ1bmN0aW9uKG4pe3ZhciB0LGUscix1PW4ubGVuZ3RoLGk9blsw
XS5sZW5ndGgsbz0xL3UsYT1bXTtmb3IoZT0wO2k+ZTsrK2Upe2Zvcih0PTAscj0wO3U+dDt0Kysp
cis9blt0XVtlXVsxXTtpZihyKWZvcih0PTA7dT50O3QrKyluW3RdW2VdWzFdLz1yO2Vsc2UgZm9y
KHQ9MDt1PnQ7dCsrKW5bdF1bZV1bMV09b31mb3IoZT0wO2k+ZTsrK2UpYVtlXT0wO3JldHVybiBh
fSx6ZXJvOnJpfSk7Wm8ubGF5b3V0Lmhpc3RvZ3JhbT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obixp
KXtmb3IodmFyIG8sYSxjPVtdLHM9bi5tYXAoZSx0aGlzKSxsPXIuY2FsbCh0aGlzLHMsaSksZj11
LmNhbGwodGhpcyxsLHMsaSksaT0tMSxoPXMubGVuZ3RoLGc9Zi5sZW5ndGgtMSxwPXQ/MToxL2g7
KytpPGc7KW89Y1tpXT1bXSxvLmR4PWZbaSsxXS0oby54PWZbaV0pLG8ueT0wO2lmKGc+MClmb3Io
aT0tMTsrK2k8aDspYT1zW2ldLGE+PWxbMF0mJmE8PWxbMV0mJihvPWNbWm8uYmlzZWN0KGYsYSwx
LGcpLTFdLG8ueSs9cCxvLnB1c2gobltpXSkpO3JldHVybiBjfXZhciB0PSEwLGU9TnVtYmVyLHI9
c2ksdT1haTtyZXR1cm4gbi52YWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oZT10LG4pOmV9LG4ucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHI9YnQodCksbik6cn0sbi5iaW5zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
Pyh1PSJudW1iZXIiPT10eXBlb2YgdD9mdW5jdGlvbihuKXtyZXR1cm4gY2kobix0KX06YnQodCks
bik6dX0sbi5mcmVxdWVuY3k9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9
ISFlLG4pOnR9LG59LFpvLmxheW91dC5wYWNrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLGkpe3Zh
ciBvPWUuY2FsbCh0aGlzLG4saSksYT1vWzBdLGM9dVswXSxzPXVbMV0sbD1udWxsPT10P01hdGgu
c3FydDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OmZ1bmN0aW9uKCl7cmV0dXJuIHR9O2lmKGEueD1h
Lnk9MCxCdShhLGZ1bmN0aW9uKG4pe24ucj0rbChuLnZhbHVlKX0pLEJ1KGEscGkpLHIpe3ZhciBm
PXIqKHQ/MTpNYXRoLm1heCgyKmEuci9jLDIqYS5yL3MpKS8yO0J1KGEsZnVuY3Rpb24obil7bi5y
Kz1mfSksQnUoYSxwaSksQnUoYSxmdW5jdGlvbihuKXtuLnItPWZ9KX1yZXR1cm4gbWkoYSxjLzIs
cy8yLHQ/MToxL01hdGgubWF4KDIqYS5yL2MsMiphLnIvcykpLG99dmFyIHQsZT1aby5sYXlvdXQu
aGllcmFyY2h5KCkuc29ydChsaSkscj0wLHU9WzEsMV07cmV0dXJuIG4uc2l6ZT1mdW5jdGlvbih0
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT10LG4pOnV9LG4ucmFkaXVzPWZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW51bGw9PWV8fCJmdW5jdGlvbiI9PXR5cGVvZiBl
P2U6K2Usbik6dH0sbi5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhyPSt0LG4pOnJ9LFh1KG4sZSl9LFpvLmxheW91dC50cmVlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
bihuLHUpe3ZhciBsPW8uY2FsbCh0aGlzLG4sdSksZj1sWzBdLGg9dChmKTtpZihCdShoLGUpLGgu
cGFyZW50Lm09LWgueiwkdShoLHIpLHMpJHUoZixpKTtlbHNle3ZhciBnPWYscD1mLHY9ZjskdShm
LGZ1bmN0aW9uKG4pe24ueDxnLngmJihnPW4pLG4ueD5wLngmJihwPW4pLG4uZGVwdGg+di5kZXB0
aCYmKHY9bil9KTt2YXIgZD1hKGcscCkvMi1nLngsbT1jWzBdLyhwLngrYShwLGcpLzIrZCkseT1j
WzFdLyh2LmRlcHRofHwxKTskdShmLGZ1bmN0aW9uKG4pe24ueD0obi54K2QpKm0sbi55PW4uZGVw
dGgqeX0pfXJldHVybiBsfWZ1bmN0aW9uIHQobil7Zm9yKHZhciB0LGU9e0E6bnVsbCxjaGlsZHJl
bjpbbl19LHI9W2VdO251bGwhPSh0PXIucG9wKCkpOylmb3IodmFyIHUsaT10LmNoaWxkcmVuLG89
MCxhPWkubGVuZ3RoO2E+bzsrK28pci5wdXNoKChpW29dPXU9e186aVtvXSxwYXJlbnQ6dCxjaGls
ZHJlbjoodT1pW29dLmNoaWxkcmVuKSYmdS5zbGljZSgpfHxbXSxBOm51bGwsYTpudWxsLHo6MCxt
OjAsYzowLHM6MCx0Om51bGwsaTpvfSkuYT11KTtyZXR1cm4gZS5jaGlsZHJlblswXX1mdW5jdGlv
biBlKG4pe3ZhciB0PW4uY2hpbGRyZW4sZT1uLnBhcmVudC5jaGlsZHJlbixyPW4uaT9lW24uaS0x
XTpudWxsO2lmKHQubGVuZ3RoKXt3aShuKTt2YXIgaT0odFswXS56K3RbdC5sZW5ndGgtMV0ueikv
MjtyPyhuLno9ci56K2Eobi5fLHIuXyksbi5tPW4uei1pKTpuLno9aX1lbHNlIHImJihuLno9ci56
K2Eobi5fLHIuXykpO24ucGFyZW50LkE9dShuLHIsbi5wYXJlbnQuQXx8ZVswXSl9ZnVuY3Rpb24g
cihuKXtuLl8ueD1uLnorbi5wYXJlbnQubSxuLm0rPW4ucGFyZW50Lm19ZnVuY3Rpb24gdShuLHQs
ZSl7aWYodCl7Zm9yKHZhciByLHU9bixpPW4sbz10LGM9dS5wYXJlbnQuY2hpbGRyZW5bMF0scz11
Lm0sbD1pLm0sZj1vLm0saD1jLm07bz1faShvKSx1PU1pKHUpLG8mJnU7KWM9TWkoYyksaT1faShp
KSxpLmE9bixyPW8ueitmLXUuei1zK2Eoby5fLHUuXykscj4wJiYoYmkoU2kobyxuLGUpLG4sciks
cys9cixsKz1yKSxmKz1vLm0scys9dS5tLGgrPWMubSxsKz1pLm07byYmIV9pKGkpJiYoaS50PW8s
aS5tKz1mLWwpLHUmJiFNaShjKSYmKGMudD11LGMubSs9cy1oLGU9bil9cmV0dXJuIGV9ZnVuY3Rp
b24gaShuKXtuLngqPWNbMF0sbi55PW4uZGVwdGgqY1sxXX12YXIgbz1aby5sYXlvdXQuaGllcmFy
Y2h5KCkuc29ydChudWxsKS52YWx1ZShudWxsKSxhPXhpLGM9WzEsMV0scz1udWxsO3JldHVybiBu
LnNlcGFyYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCxuKTph
fSxuLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bnVsbD09KGM9
dCk/aTpudWxsLG4pOnM/bnVsbDpjfSxuLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhzPW51bGw9PShjPXQpP251bGw6aSxuKTpzP2M6bnVsbH0sWHUobixvKX0s
Wm8ubGF5b3V0LmNsdXN0ZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4saSl7dmFyIG8sYT10LmNh
bGwodGhpcyxuLGkpLGM9YVswXSxzPTA7QnUoYyxmdW5jdGlvbihuKXt2YXIgdD1uLmNoaWxkcmVu
O3QmJnQubGVuZ3RoPyhuLng9RWkodCksbi55PWtpKHQpKToobi54PW8/cys9ZShuLG8pOjAsbi55
PTAsbz1uKX0pO3ZhciBsPUFpKGMpLGY9Q2koYyksaD1sLngtZShsLGYpLzIsZz1mLngrZShmLGwp
LzI7cmV0dXJuIEJ1KGMsdT9mdW5jdGlvbihuKXtuLng9KG4ueC1jLngpKnJbMF0sbi55PShjLnkt
bi55KSpyWzFdfTpmdW5jdGlvbihuKXtuLng9KG4ueC1oKS8oZy1oKSpyWzBdLG4ueT0oMS0oYy55
P24ueS9jLnk6MSkpKnJbMV19KSxhfXZhciB0PVpvLmxheW91dC5oaWVyYXJjaHkoKS5zb3J0KG51
bGwpLnZhbHVlKG51bGwpLGU9eGkscj1bMSwxXSx1PSExO3JldHVybiBuLnNlcGFyYXRpb249ZnVu
Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuKTplfSxuLnNpemU9ZnVuY3Rp
b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9bnVsbD09KHI9dCksbik6dT9udWxsOnJ9
LG4ubm9kZVNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9bnVsbCE9
KHI9dCksbik6dT9yOm51bGx9LFh1KG4sdCl9LFpvLmxheW91dC50cmVlbWFwPWZ1bmN0aW9uKCl7
ZnVuY3Rpb24gbihuLHQpe2Zvcih2YXIgZSxyLHU9LTEsaT1uLmxlbmd0aDsrK3U8aTspcj0oZT1u
W3VdKS52YWx1ZSooMD50PzA6dCksZS5hcmVhPWlzTmFOKHIpfHwwPj1yPzA6cn1mdW5jdGlvbiB0
KGUpe3ZhciBpPWUuY2hpbGRyZW47aWYoaSYmaS5sZW5ndGgpe3ZhciBvLGEsYyxzPWYoZSksbD1b
XSxoPWkuc2xpY2UoKSxwPTEvMCx2PSJzbGljZSI9PT1nP3MuZHg6ImRpY2UiPT09Zz9zLmR5OiJz
bGljZS1kaWNlIj09PWc/MSZlLmRlcHRoP3MuZHk6cy5keDpNYXRoLm1pbihzLmR4LHMuZHkpO2Zv
cihuKGgscy5keCpzLmR5L2UudmFsdWUpLGwuYXJlYT0wOyhjPWgubGVuZ3RoKT4wOylsLnB1c2go
bz1oW2MtMV0pLGwuYXJlYSs9by5hcmVhLCJzcXVhcmlmeSIhPT1nfHwoYT1yKGwsdikpPD1wPyho
LnBvcCgpLHA9YSk6KGwuYXJlYS09bC5wb3AoKS5hcmVhLHUobCx2LHMsITEpLHY9TWF0aC5taW4o
cy5keCxzLmR5KSxsLmxlbmd0aD1sLmFyZWE9MCxwPTEvMCk7bC5sZW5ndGgmJih1KGwsdixzLCEw
KSxsLmxlbmd0aD1sLmFyZWE9MCksaS5mb3JFYWNoKHQpfX1mdW5jdGlvbiBlKHQpe3ZhciByPXQu
Y2hpbGRyZW47aWYociYmci5sZW5ndGgpe3ZhciBpLG89Zih0KSxhPXIuc2xpY2UoKSxjPVtdO2Zv
cihuKGEsby5keCpvLmR5L3QudmFsdWUpLGMuYXJlYT0wO2k9YS5wb3AoKTspYy5wdXNoKGkpLGMu
YXJlYSs9aS5hcmVhLG51bGwhPWkueiYmKHUoYyxpLno/by5keDpvLmR5LG8sIWEubGVuZ3RoKSxj
Lmxlbmd0aD1jLmFyZWE9MCk7ci5mb3JFYWNoKGUpfX1mdW5jdGlvbiByKG4sdCl7Zm9yKHZhciBl
LHI9bi5hcmVhLHU9MCxpPTEvMCxvPS0xLGE9bi5sZW5ndGg7KytvPGE7KShlPW5bb10uYXJlYSkm
JihpPmUmJihpPWUpLGU+dSYmKHU9ZSkpO3JldHVybiByKj1yLHQqPXQscj9NYXRoLm1heCh0KnUq
cC9yLHIvKHQqaSpwKSk6MS8wfWZ1bmN0aW9uIHUobix0LGUscil7dmFyIHUsaT0tMSxvPW4ubGVu
Z3RoLGE9ZS54LHM9ZS55LGw9dD9jKG4uYXJlYS90KTowO2lmKHQ9PWUuZHgpe2Zvcigocnx8bD5l
LmR5KSYmKGw9ZS5keSk7KytpPG87KXU9bltpXSx1Lng9YSx1Lnk9cyx1LmR5PWwsYSs9dS5keD1N
YXRoLm1pbihlLngrZS5keC1hLGw/Yyh1LmFyZWEvbCk6MCk7dS56PSEwLHUuZHgrPWUueCtlLmR4
LWEsZS55Kz1sLGUuZHktPWx9ZWxzZXtmb3IoKHJ8fGw+ZS5keCkmJihsPWUuZHgpOysraTxvOyl1
PW5baV0sdS54PWEsdS55PXMsdS5keD1sLHMrPXUuZHk9TWF0aC5taW4oZS55K2UuZHktcyxsP2Mo
dS5hcmVhL2wpOjApO3Uuej0hMSx1LmR5Kz1lLnkrZS5keS1zLGUueCs9bCxlLmR4LT1sfX1mdW5j
dGlvbiBpKHIpe3ZhciB1PW98fGEociksaT11WzBdO3JldHVybiBpLng9MCxpLnk9MCxpLmR4PXNb
MF0saS5keT1zWzFdLG8mJmEucmV2YWx1ZShpKSxuKFtpXSxpLmR4KmkuZHkvaS52YWx1ZSksKG8/
ZTp0KShpKSxoJiYobz11KSx1fXZhciBvLGE9Wm8ubGF5b3V0LmhpZXJhcmNoeSgpLGM9TWF0aC5y
b3VuZCxzPVsxLDFdLGw9bnVsbCxmPU5pLGg9ITEsZz0ic3F1YXJpZnkiLHA9LjUqKDErTWF0aC5z
cXJ0KDUpKTtyZXR1cm4gaS5zaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhzPW4saSk6c30saS5wYWRkaW5nPWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIHQodCl7dmFyIGU9bi5j
YWxsKGksdCx0LmRlcHRoKTtyZXR1cm4gbnVsbD09ZT9OaSh0KTp6aSh0LCJudW1iZXIiPT10eXBl
b2YgZT9bZSxlLGUsZV06ZSl9ZnVuY3Rpb24gZSh0KXtyZXR1cm4gemkodCxuKX1pZighYXJndW1l
bnRzLmxlbmd0aClyZXR1cm4gbDt2YXIgcjtyZXR1cm4gZj1udWxsPT0obD1uKT9OaToiZnVuY3Rp
b24iPT0ocj10eXBlb2Ygbik/dDoibnVtYmVyIj09PXI/KG49W24sbixuLG5dLGUpOmUsaX0saS5y
b3VuZD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1uP01hdGgucm91bmQ6
TnVtYmVyLGkpOmMhPU51bWJlcn0saS5zdGlja3k9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGg9bixvPW51bGwsaSk6aH0saS5yYXRpbz1mdW5jdGlvbihuKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8ocD1uLGkpOnB9LGkubW9kZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oZz1uKyIiLGkpOmd9LFh1KGksYSl9LFpvLnJhbmRvbT17bm9ybWFsOmZ1bmN0
aW9uKG4sdCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDtyZXR1cm4gMj5lJiYodD0xKSwxPmUmJihu
PTApLGZ1bmN0aW9uKCl7dmFyIGUscix1O2RvIGU9MipNYXRoLnJhbmRvbSgpLTEscj0yKk1hdGgu
cmFuZG9tKCktMSx1PWUqZStyKnI7d2hpbGUoIXV8fHU+MSk7cmV0dXJuIG4rdCplKk1hdGguc3Fy
dCgtMipNYXRoLmxvZyh1KS91KX19LGxvZ05vcm1hbDpmdW5jdGlvbigpe3ZhciBuPVpvLnJhbmRv
bS5ub3JtYWwuYXBwbHkoWm8sYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gTWF0
aC5leHAobigpKX19LGJhdGVzOmZ1bmN0aW9uKG4pe3ZhciB0PVpvLnJhbmRvbS5pcndpbkhhbGwo
bik7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQoKS9ufX0saXJ3aW5IYWxsOmZ1bmN0aW9uKG4p
e3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgdD0wLGU9MDtuPmU7ZSsrKXQrPU1hdGgucmFuZG9t
KCk7cmV0dXJuIHR9fX0sWm8uc2NhbGU9e307dmFyIHNzPXtmbG9vcjp3dCxjZWlsOnd0fTtaby5z
Y2FsZS5saW5lYXI9ZnVuY3Rpb24oKXtyZXR1cm4gVWkoWzAsMV0sWzAsMV0saHUsITEpfTt2YXIg
bHM9e3M6MSxnOjEscDoxLHI6MSxlOjF9O1pvLnNjYWxlLmxvZz1mdW5jdGlvbigpe3JldHVybiBW
aShaby5zY2FsZS5saW5lYXIoKS5kb21haW4oWzAsMV0pLDEwLCEwLFsxLDEwXSl9O3ZhciBmcz1a
by5mb3JtYXQoIi4wZSIpLGhzPXtmbG9vcjpmdW5jdGlvbihuKXtyZXR1cm4tTWF0aC5jZWlsKC1u
KX0sY2VpbDpmdW5jdGlvbihuKXtyZXR1cm4tTWF0aC5mbG9vcigtbil9fTtaby5zY2FsZS5wb3c9
ZnVuY3Rpb24oKXtyZXR1cm4gWGkoWm8uc2NhbGUubGluZWFyKCksMSxbMCwxXSl9LFpvLnNjYWxl
LnNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gWm8uc2NhbGUucG93KCkuZXhwb25lbnQoLjUpfSxaby5z
Y2FsZS5vcmRpbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIEJpKFtdLHt0OiJyYW5nZSIsYTpbW11dfSl9
LFpvLnNjYWxlLmNhdGVnb3J5MTA9ZnVuY3Rpb24oKXtyZXR1cm4gWm8uc2NhbGUub3JkaW5hbCgp
LnJhbmdlKGdzKX0sWm8uc2NhbGUuY2F0ZWdvcnkyMD1mdW5jdGlvbigpe3JldHVybiBaby5zY2Fs
ZS5vcmRpbmFsKCkucmFuZ2UocHMpfSxaby5zY2FsZS5jYXRlZ29yeTIwYj1mdW5jdGlvbigpe3Jl
dHVybiBaby5zY2FsZS5vcmRpbmFsKCkucmFuZ2UodnMpfSxaby5zY2FsZS5jYXRlZ29yeTIwYz1m
dW5jdGlvbigpe3JldHVybiBaby5zY2FsZS5vcmRpbmFsKCkucmFuZ2UoZHMpfTt2YXIgZ3M9WzIw
NjIyNjAsMTY3NDQyMDYsMjkyNDU4OCwxNDAzNDcyOCw5NzI1ODg1LDkxOTcxMzEsMTQ5MDczMzAs
ODM1NTcxMSwxMjM2OTE4NiwxNTU2MTc1XS5tYXAodnQpLHBzPVsyMDYyMjYwLDExNDU0NDQwLDE2
NzQ0MjA2LDE2NzU5NjcyLDI5MjQ1ODgsMTAwMTg2OTgsMTQwMzQ3MjgsMTY3NTA3NDIsOTcyNTg4
NSwxMjk1NTg2MSw5MTk3MTMxLDEyODg1MTQwLDE0OTA3MzMwLDE2MjM0MTk0LDgzNTU3MTEsMTMw
OTI4MDcsMTIzNjkxODYsMTQ0MDg1ODksMTU1NjE3NSwxMDQxMDcyNV0ubWFwKHZ0KSx2cz1bMzc1
MDc3Nyw1Mzk1NjE5LDcwNDA3MTksMTAyNjQyODYsNjUxOTA5Nyw5MjE2NTk0LDExOTE1MTE1LDEz
NTU2NjM2LDkyMDI5OTMsMTI0MjY4MDksMTUxODY1MTQsMTUxOTA5MzIsODY2NjE2OSwxMTM1NjQ5
MCwxNDA0OTY0MywxNTE3NzM3Miw4MDc3NjgzLDEwODM0MzI0LDEzNTI4NTA5LDE0NTg5NjU0XS5t
YXAodnQpLGRzPVszMjQ0NzMzLDcwNTcxMTAsMTA0MDY2MjUsMTMwMzI0MzEsMTUwOTUwNTMsMTY2
MTY3NjQsMTY2MjUyNTksMTY2MzQwMTgsMzI1MzA3Niw3NjUyNDcwLDEwNjA3MDAzLDEzMTAxNTA0
LDc2OTUyODEsMTAzOTQzMTIsMTIzNjkzNzIsMTQzNDI4OTEsNjUxMzUwNyw5ODY4OTUwLDEyNDM0
ODc3LDE0Mjc3MDgxXS5tYXAodnQpO1pvLnNjYWxlLnF1YW50aWxlPWZ1bmN0aW9uKCl7cmV0dXJu
IFdpKFtdLFtdKX0sWm8uc2NhbGUucXVhbnRpemU9ZnVuY3Rpb24oKXtyZXR1cm4gSmkoMCwxLFsw
LDFdKX0sWm8uc2NhbGUudGhyZXNob2xkPWZ1bmN0aW9uKCl7cmV0dXJuIEdpKFsuNV0sWzAsMV0p
fSxaby5zY2FsZS5pZGVudGl0eT1mdW5jdGlvbigpe3JldHVybiBLaShbMCwxXSl9LFpvLnN2Zz17
fSxaby5zdmcuYXJjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3ZhciBuPXQuYXBwbHkodGhpcyxh
cmd1bWVudHMpLGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbz1yLmFwcGx5KHRoaXMsYXJndW1l
bnRzKSttcyxhPXUuYXBwbHkodGhpcyxhcmd1bWVudHMpK21zLGM9KG8+YSYmKGM9byxvPWEsYT1j
KSxhLW8pLHM9YmE+Yz8iMCI6IjEiLGw9TWF0aC5jb3MobyksZj1NYXRoLnNpbihvKSxoPU1hdGgu
Y29zKGEpLGc9TWF0aC5zaW4oYSk7CityZXR1cm4gYz49eXM/bj8iTTAsIitpKyJBIitpKyIsIitp
KyIgMCAxLDEgMCwiKy1pKyJBIitpKyIsIitpKyIgMCAxLDEgMCwiK2krIk0wLCIrbisiQSIrbisi
LCIrbisiIDAgMSwwIDAsIistbisiQSIrbisiLCIrbisiIDAgMSwwIDAsIituKyJaIjoiTTAsIitp
KyJBIitpKyIsIitpKyIgMCAxLDEgMCwiKy1pKyJBIitpKyIsIitpKyIgMCAxLDEgMCwiK2krIloi
Om4/Ik0iK2kqbCsiLCIraSpmKyJBIitpKyIsIitpKyIgMCAiK3MrIiwxICIraSpoKyIsIitpKmcr
IkwiK24qaCsiLCIrbipnKyJBIituKyIsIituKyIgMCAiK3MrIiwwICIrbipsKyIsIituKmYrIloi
OiJNIitpKmwrIiwiK2kqZisiQSIraSsiLCIraSsiIDAgIitzKyIsMSAiK2kqaCsiLCIraSpnKyJM
MCwwIisiWiJ9dmFyIHQ9UWksZT1ubyxyPXRvLHU9ZW87cmV0dXJuIG4uaW5uZXJSYWRpdXM9ZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9YnQoZSksbik6dH0sbi5vdXRlclJh
ZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1idCh0KSxuKTplfSxu
LnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9YnQodCks
bik6cn0sbi5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1i
dCh0KSxuKTp1fSxuLmNlbnRyb2lkPWZ1bmN0aW9uKCl7dmFyIG49KHQuYXBwbHkodGhpcyxhcmd1
bWVudHMpK2UuYXBwbHkodGhpcyxhcmd1bWVudHMpKS8yLGk9KHIuYXBwbHkodGhpcyxhcmd1bWVu
dHMpK3UuYXBwbHkodGhpcyxhcmd1bWVudHMpKS8yK21zO3JldHVybltNYXRoLmNvcyhpKSpuLE1h
dGguc2luKGkpKm5dfSxufTt2YXIgbXM9LVNhLHlzPXdhLWthO1pvLnN2Zy5saW5lPWZ1bmN0aW9u
KCl7cmV0dXJuIHJvKHd0KX07dmFyIHhzPVpvLm1hcCh7bGluZWFyOnVvLCJsaW5lYXItY2xvc2Vk
IjppbyxzdGVwOm9vLCJzdGVwLWJlZm9yZSI6YW8sInN0ZXAtYWZ0ZXIiOmNvLGJhc2lzOnBvLCJi
YXNpcy1vcGVuIjp2bywiYmFzaXMtY2xvc2VkIjptbyxidW5kbGU6eW8sY2FyZGluYWw6Zm8sImNh
cmRpbmFsLW9wZW4iOnNvLCJjYXJkaW5hbC1jbG9zZWQiOmxvLG1vbm90b25lOlNvfSk7eHMuZm9y
RWFjaChmdW5jdGlvbihuLHQpe3Qua2V5PW4sdC5jbG9zZWQ9Ly1jbG9zZWQkLy50ZXN0KG4pfSk7
dmFyIE1zPVswLDIvMywxLzMsMF0sX3M9WzAsMS8zLDIvMywwXSxicz1bMCwxLzYsMi8zLDEvNl07
Wm8uc3ZnLmxpbmUucmFkaWFsPWZ1bmN0aW9uKCl7dmFyIG49cm8oa28pO3JldHVybiBuLnJhZGl1
cz1uLngsZGVsZXRlIG4ueCxuLmFuZ2xlPW4ueSxkZWxldGUgbi55LG59LGFvLnJldmVyc2U9Y28s
Y28ucmV2ZXJzZT1hbyxaby5zdmcuYXJlYT1mdW5jdGlvbigpe3JldHVybiBFbyh3dCl9LFpvLnN2
Zy5hcmVhLnJhZGlhbD1mdW5jdGlvbigpe3ZhciBuPUVvKGtvKTtyZXR1cm4gbi5yYWRpdXM9bi54
LGRlbGV0ZSBuLngsbi5pbm5lclJhZGl1cz1uLngwLGRlbGV0ZSBuLngwLG4ub3V0ZXJSYWRpdXM9
bi54MSxkZWxldGUgbi54MSxuLmFuZ2xlPW4ueSxkZWxldGUgbi55LG4uc3RhcnRBbmdsZT1uLnkw
LGRlbGV0ZSBuLnkwLG4uZW5kQW5nbGU9bi55MSxkZWxldGUgbi55MSxufSxaby5zdmcuY2hvcmQ9
ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4sYSl7dmFyIGM9dCh0aGlzLGksbixhKSxzPXQodGhpcyxv
LG4sYSk7cmV0dXJuIk0iK2MucDArcihjLnIsYy5wMSxjLmExLWMuYTApKyhlKGMscyk/dShjLnIs
Yy5wMSxjLnIsYy5wMCk6dShjLnIsYy5wMSxzLnIscy5wMCkrcihzLnIscy5wMSxzLmExLXMuYTAp
K3Uocy5yLHMucDEsYy5yLGMucDApKSsiWiJ9ZnVuY3Rpb24gdChuLHQsZSxyKXt2YXIgdT10LmNh
bGwobixlLHIpLGk9YS5jYWxsKG4sdSxyKSxvPWMuY2FsbChuLHUscikrbXMsbD1zLmNhbGwobix1
LHIpK21zO3JldHVybntyOmksYTA6byxhMTpsLHAwOltpKk1hdGguY29zKG8pLGkqTWF0aC5zaW4o
byldLHAxOltpKk1hdGguY29zKGwpLGkqTWF0aC5zaW4obCldfX1mdW5jdGlvbiBlKG4sdCl7cmV0
dXJuIG4uYTA9PXQuYTAmJm4uYTE9PXQuYTF9ZnVuY3Rpb24gcihuLHQsZSl7cmV0dXJuIkEiK24r
IiwiK24rIiAwICIrICsoZT5iYSkrIiwxICIrdH1mdW5jdGlvbiB1KG4sdCxlLHIpe3JldHVybiJR
IDAsMCAiK3J9dmFyIGk9Z3Isbz1wcixhPUFvLGM9dG8scz1lbztyZXR1cm4gbi5yYWRpdXM9ZnVu
Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9YnQodCksbik6YX0sbi5zb3VyY2U9
ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9YnQodCksbik6aX0sbi50YXJn
ZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89YnQodCksbik6b30sbi5z
dGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPWJ0KHQpLG4p
OmN9LG4uZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9YnQo
dCksbik6c30sbn0sWm8uc3ZnLmRpYWdvbmFsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHUpe3Zh
ciBpPXQuY2FsbCh0aGlzLG4sdSksbz1lLmNhbGwodGhpcyxuLHUpLGE9KGkueStvLnkpLzIsYz1b
aSx7eDppLngseTphfSx7eDpvLngseTphfSxvXTtyZXR1cm4gYz1jLm1hcChyKSwiTSIrY1swXSsi
QyIrY1sxXSsiICIrY1syXSsiICIrY1szXX12YXIgdD1ncixlPXByLHI9Q287cmV0dXJuIG4uc291
cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWJ0KGUpLG4pOnR9LG4u
dGFyZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWJ0KHQpLG4pOmV9
LG4ucHJvamVjdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG4p
OnJ9LG59LFpvLnN2Zy5kaWFnb25hbC5yYWRpYWw9ZnVuY3Rpb24oKXt2YXIgbj1aby5zdmcuZGlh
Z29uYWwoKSx0PUNvLGU9bi5wcm9qZWN0aW9uO3JldHVybiBuLnByb2plY3Rpb249ZnVuY3Rpb24o
bil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShObyh0PW4pKTp0fSxufSxaby5zdmcuc3ltYm9s
PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHIpe3JldHVybih3cy5nZXQodC5jYWxsKHRoaXMsbixy
KSl8fFRvKShlLmNhbGwodGhpcyxuLHIpKX12YXIgdD1MbyxlPXpvO3JldHVybiBuLnR5cGU9ZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9YnQoZSksbik6dH0sbi5zaXplPWZ1
bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWJ0KHQpLG4pOmV9LG59O3ZhciB3
cz1aby5tYXAoe2NpcmNsZTpUbyxjcm9zczpmdW5jdGlvbihuKXt2YXIgdD1NYXRoLnNxcnQobi81
KS8yO3JldHVybiJNIistMyp0KyIsIistdCsiSCIrLXQrIlYiKy0zKnQrIkgiK3QrIlYiKy10KyJI
IiszKnQrIlYiK3QrIkgiK3QrIlYiKzMqdCsiSCIrLXQrIlYiK3QrIkgiKy0zKnQrIloifSxkaWFt
b25kOmZ1bmN0aW9uKG4pe3ZhciB0PU1hdGguc3FydChuLygyKkFzKSksZT10KkFzO3JldHVybiJN
MCwiKy10KyJMIitlKyIsMCIrIiAwLCIrdCsiICIrLWUrIiwwIisiWiJ9LHNxdWFyZTpmdW5jdGlv
bihuKXt2YXIgdD1NYXRoLnNxcnQobikvMjtyZXR1cm4iTSIrLXQrIiwiKy10KyJMIit0KyIsIist
dCsiICIrdCsiLCIrdCsiICIrLXQrIiwiK3QrIloifSwidHJpYW5nbGUtZG93biI6ZnVuY3Rpb24o
bil7dmFyIHQ9TWF0aC5zcXJ0KG4vRXMpLGU9dCpFcy8yO3JldHVybiJNMCwiK2UrIkwiK3QrIiwi
Ky1lKyIgIistdCsiLCIrLWUrIloifSwidHJpYW5nbGUtdXAiOmZ1bmN0aW9uKG4pe3ZhciB0PU1h
dGguc3FydChuL0VzKSxlPXQqRXMvMjtyZXR1cm4iTTAsIistZSsiTCIrdCsiLCIrZSsiICIrLXQr
IiwiK2UrIloifX0pO1pvLnN2Zy5zeW1ib2xUeXBlcz13cy5rZXlzKCk7dmFyIFNzLGtzLEVzPU1h
dGguc3FydCgzKSxBcz1NYXRoLnRhbigzMCpBYSksQ3M9W10sTnM9MDtDcy5jYWxsPXBhLmNhbGws
Q3MuZW1wdHk9cGEuZW1wdHksQ3Mubm9kZT1wYS5ub2RlLENzLnNpemU9cGEuc2l6ZSxaby50cmFu
c2l0aW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP1NzP24udHJhbnNpdGlv
bigpOm46bWEudHJhbnNpdGlvbigpfSxaby50cmFuc2l0aW9uLnByb3RvdHlwZT1DcyxDcy5zZWxl
Y3Q9ZnVuY3Rpb24obil7dmFyIHQsZSxyLHU9dGhpcy5pZCxpPVtdO249YihuKTtmb3IodmFyIG89
LTEsYT10aGlzLmxlbmd0aDsrK288YTspe2kucHVzaCh0PVtdKTtmb3IodmFyIGM9dGhpc1tvXSxz
PS0xLGw9Yy5sZW5ndGg7KytzPGw7KShyPWNbc10pJiYoZT1uLmNhbGwocixyLl9fZGF0YV9fLHMs
bykpPygiX19kYXRhX18iaW4gciYmKGUuX19kYXRhX189ci5fX2RhdGFfXyksUG8oZSxzLHUsci5f
X3RyYW5zaXRpb25fX1t1XSksdC5wdXNoKGUpKTp0LnB1c2gobnVsbCl9cmV0dXJuIHFvKGksdSl9
LENzLnNlbGVjdEFsbD1mdW5jdGlvbihuKXt2YXIgdCxlLHIsdSxpLG89dGhpcy5pZCxhPVtdO249
dyhuKTtmb3IodmFyIGM9LTEscz10aGlzLmxlbmd0aDsrK2M8czspZm9yKHZhciBsPXRoaXNbY10s
Zj0tMSxoPWwubGVuZ3RoOysrZjxoOylpZihyPWxbZl0pe2k9ci5fX3RyYW5zaXRpb25fX1tvXSxl
PW4uY2FsbChyLHIuX19kYXRhX18sZixjKSxhLnB1c2godD1bXSk7Zm9yKHZhciBnPS0xLHA9ZS5s
ZW5ndGg7KytnPHA7KSh1PWVbZ10pJiZQbyh1LGcsbyxpKSx0LnB1c2godSl9cmV0dXJuIHFvKGEs
byl9LENzLmZpbHRlcj1mdW5jdGlvbihuKXt2YXIgdCxlLHIsdT1bXTsiZnVuY3Rpb24iIT10eXBl
b2YgbiYmKG49UihuKSk7Zm9yKHZhciBpPTAsbz10aGlzLmxlbmd0aDtvPmk7aSsrKXt1LnB1c2go
dD1bXSk7Zm9yKHZhciBlPXRoaXNbaV0sYT0wLGM9ZS5sZW5ndGg7Yz5hO2ErKykocj1lW2FdKSYm
bi5jYWxsKHIsci5fX2RhdGFfXyxhLGkpJiZ0LnB1c2gocil9cmV0dXJuIHFvKHUsdGhpcy5pZCl9
LENzLnR3ZWVuPWZ1bmN0aW9uKG4sdCl7dmFyIGU9dGhpcy5pZDtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aDwyP3RoaXMubm9kZSgpLl9fdHJhbnNpdGlvbl9fW2VdLnR3ZWVuLmdldChuKTpQKHRoaXMs
bnVsbD09dD9mdW5jdGlvbih0KXt0Ll9fdHJhbnNpdGlvbl9fW2VdLnR3ZWVuLnJlbW92ZShuKX06
ZnVuY3Rpb24ocil7ci5fX3RyYW5zaXRpb25fX1tlXS50d2Vlbi5zZXQobix0KX0pfSxDcy5hdHRy
PWZ1bmN0aW9uKG4sdCl7ZnVuY3Rpb24gZSgpe3RoaXMucmVtb3ZlQXR0cmlidXRlKGEpfWZ1bmN0
aW9uIHIoKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGEuc3BhY2UsYS5sb2NhbCl9ZnVuY3Rpb24g
dShuKXtyZXR1cm4gbnVsbD09bj9lOihuKz0iIixmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5nZXRB
dHRyaWJ1dGUoYSk7cmV0dXJuIGUhPT1uJiYodD1vKGUsbiksZnVuY3Rpb24obil7dGhpcy5zZXRB
dHRyaWJ1dGUoYSx0KG4pKX0pfSl9ZnVuY3Rpb24gaShuKXtyZXR1cm4gbnVsbD09bj9yOihuKz0i
IixmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5nZXRBdHRyaWJ1dGVOUyhhLnNwYWNlLGEubG9jYWwp
O3JldHVybiBlIT09biYmKHQ9byhlLG4pLGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlTlMo
YS5zcGFjZSxhLmxvY2FsLHQobikpfSl9KX1pZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih0IGlu
IG4pdGhpcy5hdHRyKHQsblt0XSk7cmV0dXJuIHRoaXN9dmFyIG89InRyYW5zZm9ybSI9PW4/RHU6
aHUsYT1aby5ucy5xdWFsaWZ5KG4pO3JldHVybiBSbyh0aGlzLCJhdHRyLiIrbix0LGEubG9jYWw/
aTp1KX0sQ3MuYXR0clR3ZWVuPWZ1bmN0aW9uKG4sdCl7ZnVuY3Rpb24gZShuLGUpe3ZhciByPXQu
Y2FsbCh0aGlzLG4sZSx0aGlzLmdldEF0dHJpYnV0ZSh1KSk7cmV0dXJuIHImJmZ1bmN0aW9uKG4p
e3RoaXMuc2V0QXR0cmlidXRlKHUscihuKSl9fWZ1bmN0aW9uIHIobixlKXt2YXIgcj10LmNhbGwo
dGhpcyxuLGUsdGhpcy5nZXRBdHRyaWJ1dGVOUyh1LnNwYWNlLHUubG9jYWwpKTtyZXR1cm4gciYm
ZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGVOUyh1LnNwYWNlLHUubG9jYWwscihuKSl9fXZh
ciB1PVpvLm5zLnF1YWxpZnkobik7cmV0dXJuIHRoaXMudHdlZW4oImF0dHIuIituLHUubG9jYWw/
cjplKX0sQ3Muc3R5bGU9ZnVuY3Rpb24obix0LGUpe2Z1bmN0aW9uIHIoKXt0aGlzLnN0eWxlLnJl
bW92ZVByb3BlcnR5KG4pfWZ1bmN0aW9uIHUodCl7cmV0dXJuIG51bGw9PXQ/cjoodCs9IiIsZnVu
Y3Rpb24oKXt2YXIgcix1PVdvLmdldENvbXB1dGVkU3R5bGUodGhpcyxudWxsKS5nZXRQcm9wZXJ0
eVZhbHVlKG4pO3JldHVybiB1IT09dCYmKHI9aHUodSx0KSxmdW5jdGlvbih0KXt0aGlzLnN0eWxl
LnNldFByb3BlcnR5KG4scih0KSxlKX0pfSl9dmFyIGk9YXJndW1lbnRzLmxlbmd0aDtpZigzPmkp
e2lmKCJzdHJpbmciIT10eXBlb2Ygbil7Mj5pJiYodD0iIik7Zm9yKGUgaW4gbil0aGlzLnN0eWxl
KGUsbltlXSx0KTtyZXR1cm4gdGhpc31lPSIifXJldHVybiBSbyh0aGlzLCJzdHlsZS4iK24sdCx1
KX0sQ3Muc3R5bGVUd2Vlbj1mdW5jdGlvbihuLHQsZSl7ZnVuY3Rpb24gcihyLHUpe3ZhciBpPXQu
Y2FsbCh0aGlzLHIsdSxXby5nZXRDb21wdXRlZFN0eWxlKHRoaXMsbnVsbCkuZ2V0UHJvcGVydHlW
YWx1ZShuKSk7cmV0dXJuIGkmJmZ1bmN0aW9uKHQpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkobixp
KHQpLGUpfX1yZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwzJiYoZT0iIiksdGhpcy50d2Vlbigic3R5
bGUuIituLHIpfSxDcy50ZXh0PWZ1bmN0aW9uKG4pe3JldHVybiBSbyh0aGlzLCJ0ZXh0IixuLERv
KX0sQ3MucmVtb3ZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaCgiZW5kLnRyYW5zaXRpb24i
LGZ1bmN0aW9uKCl7dmFyIG47dGhpcy5fX3RyYW5zaXRpb25fXy5jb3VudDwyJiYobj10aGlzLnBh
cmVudE5vZGUpJiZuLnJlbW92ZUNoaWxkKHRoaXMpfSl9LENzLmVhc2U9ZnVuY3Rpb24obil7dmFy
IHQ9dGhpcy5pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwxP3RoaXMubm9kZSgpLl9fdHJhbnNp
dGlvbl9fW3RdLmVhc2U6KCJmdW5jdGlvbiIhPXR5cGVvZiBuJiYobj1aby5lYXNlLmFwcGx5KFpv
LGFyZ3VtZW50cykpLFAodGhpcyxmdW5jdGlvbihlKXtlLl9fdHJhbnNpdGlvbl9fW3RdLmVhc2U9
bn0pKX0sQ3MuZGVsYXk9ZnVuY3Rpb24obil7dmFyIHQ9dGhpcy5pZDtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aDwxP3RoaXMubm9kZSgpLl9fdHJhbnNpdGlvbl9fW3RdLmRlbGF5OlAodGhpcywiZnVu
Y3Rpb24iPT10eXBlb2Ygbj9mdW5jdGlvbihlLHIsdSl7ZS5fX3RyYW5zaXRpb25fX1t0XS5kZWxh
eT0rbi5jYWxsKGUsZS5fX2RhdGFfXyxyLHUpfToobj0rbixmdW5jdGlvbihlKXtlLl9fdHJhbnNp
dGlvbl9fW3RdLmRlbGF5PW59KSl9LENzLmR1cmF0aW9uPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMu
aWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MT90aGlzLm5vZGUoKS5fX3RyYW5zaXRpb25fX1t0
XS5kdXJhdGlvbjpQKHRoaXMsImZ1bmN0aW9uIj09dHlwZW9mIG4/ZnVuY3Rpb24oZSxyLHUpe2Uu
X190cmFuc2l0aW9uX19bdF0uZHVyYXRpb249TWF0aC5tYXgoMSxuLmNhbGwoZSxlLl9fZGF0YV9f
LHIsdSkpfToobj1NYXRoLm1heCgxLG4pLGZ1bmN0aW9uKGUpe2UuX190cmFuc2l0aW9uX19bdF0u
ZHVyYXRpb249bn0pKX0sQ3MuZWFjaD1mdW5jdGlvbihuLHQpe3ZhciBlPXRoaXMuaWQ7aWYoYXJn
dW1lbnRzLmxlbmd0aDwyKXt2YXIgcj1rcyx1PVNzO1NzPWUsUCh0aGlzLGZ1bmN0aW9uKHQscix1
KXtrcz10Ll9fdHJhbnNpdGlvbl9fW2VdLG4uY2FsbCh0LHQuX19kYXRhX18scix1KX0pLGtzPXIs
U3M9dX1lbHNlIFAodGhpcyxmdW5jdGlvbihyKXt2YXIgdT1yLl9fdHJhbnNpdGlvbl9fW2VdOyh1
LmV2ZW50fHwodS5ldmVudD1aby5kaXNwYXRjaCgic3RhcnQiLCJlbmQiKSkpLm9uKG4sdCl9KTty
ZXR1cm4gdGhpc30sQ3MudHJhbnNpdGlvbj1mdW5jdGlvbigpe2Zvcih2YXIgbix0LGUscix1PXRo
aXMuaWQsaT0rK05zLG89W10sYT0wLGM9dGhpcy5sZW5ndGg7Yz5hO2ErKyl7by5wdXNoKG49W10p
O2Zvcih2YXIgdD10aGlzW2FdLHM9MCxsPXQubGVuZ3RoO2w+cztzKyspKGU9dFtzXSkmJihyPU9i
amVjdC5jcmVhdGUoZS5fX3RyYW5zaXRpb25fX1t1XSksci5kZWxheSs9ci5kdXJhdGlvbixQbyhl
LHMsaSxyKSksbi5wdXNoKGUpfXJldHVybiBxbyhvLGkpfSxaby5zdmcuYXhpcz1mdW5jdGlvbigp
e2Z1bmN0aW9uIG4obil7bi5lYWNoKGZ1bmN0aW9uKCl7dmFyIG4scz1aby5zZWxlY3QodGhpcyks
bD10aGlzLl9fY2hhcnRfX3x8ZSxmPXRoaXMuX19jaGFydF9fPWUuY29weSgpLGg9bnVsbD09Yz9m
LnRpY2tzP2YudGlja3MuYXBwbHkoZixhKTpmLmRvbWFpbigpOmMsZz1udWxsPT10P2YudGlja0Zv
cm1hdD9mLnRpY2tGb3JtYXQuYXBwbHkoZixhKTp3dDp0LHA9cy5zZWxlY3RBbGwoIi50aWNrIiku
ZGF0YShoLGYpLHY9cC5lbnRlcigpLmluc2VydCgiZyIsIi5kb21haW4iKS5hdHRyKCJjbGFzcyIs
InRpY2siKS5zdHlsZSgib3BhY2l0eSIsa2EpLGQ9Wm8udHJhbnNpdGlvbihwLmV4aXQoKSkuc3R5
bGUoIm9wYWNpdHkiLGthKS5yZW1vdmUoKSxtPVpvLnRyYW5zaXRpb24ocC5vcmRlcigpKS5zdHls
ZSgib3BhY2l0eSIsMSkseT1UaShmKSx4PXMuc2VsZWN0QWxsKCIuZG9tYWluIikuZGF0YShbMF0p
LE09KHguZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsImRvbWFpbiIpLFpvLnRy
YW5zaXRpb24oeCkpO3YuYXBwZW5kKCJsaW5lIiksdi5hcHBlbmQoInRleHQiKTt2YXIgXz12LnNl
bGVjdCgibGluZSIpLGI9bS5zZWxlY3QoImxpbmUiKSx3PXAuc2VsZWN0KCJ0ZXh0IikudGV4dChn
KSxTPXYuc2VsZWN0KCJ0ZXh0Iiksaz1tLnNlbGVjdCgidGV4dCIpO3N3aXRjaChyKXtjYXNlImJv
dHRvbSI6bj1VbyxfLmF0dHIoInkyIix1KSxTLmF0dHIoInkiLE1hdGgubWF4KHUsMCkrbyksYi5h
dHRyKCJ4MiIsMCkuYXR0cigieTIiLHUpLGsuYXR0cigieCIsMCkuYXR0cigieSIsTWF0aC5tYXgo
dSwwKStvKSx3LmF0dHIoImR5IiwiLjcxZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUi
KSxNLmF0dHIoImQiLCJNIit5WzBdKyIsIitpKyJWMEgiK3lbMV0rIlYiK2kpO2JyZWFrO2Nhc2Ui
dG9wIjpuPVVvLF8uYXR0cigieTIiLC11KSxTLmF0dHIoInkiLC0oTWF0aC5tYXgodSwwKStvKSks
Yi5hdHRyKCJ4MiIsMCkuYXR0cigieTIiLC11KSxrLmF0dHIoIngiLDApLmF0dHIoInkiLC0oTWF0
aC5tYXgodSwwKStvKSksdy5hdHRyKCJkeSIsIjBlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1p
ZGRsZSIpLE0uYXR0cigiZCIsIk0iK3lbMF0rIiwiKy1pKyJWMEgiK3lbMV0rIlYiKy1pKTticmVh
aztjYXNlImxlZnQiOm49am8sXy5hdHRyKCJ4MiIsLXUpLFMuYXR0cigieCIsLShNYXRoLm1heCh1
LDApK28pKSxiLmF0dHIoIngyIiwtdSkuYXR0cigieTIiLDApLGsuYXR0cigieCIsLShNYXRoLm1h
eCh1LDApK28pKS5hdHRyKCJ5IiwwKSx3LmF0dHIoImR5IiwiLjMyZW0iKS5zdHlsZSgidGV4dC1h
bmNob3IiLCJlbmQiKSxNLmF0dHIoImQiLCJNIistaSsiLCIreVswXSsiSDBWIit5WzFdKyJIIist
aSk7YnJlYWs7Y2FzZSJyaWdodCI6bj1qbyxfLmF0dHIoIngyIix1KSxTLmF0dHIoIngiLE1hdGgu
bWF4KHUsMCkrbyksYi5hdHRyKCJ4MiIsdSkuYXR0cigieTIiLDApLGsuYXR0cigieCIsTWF0aC5t
YXgodSwwKStvKS5hdHRyKCJ5IiwwKSx3LmF0dHIoImR5IiwiLjMyZW0iKS5zdHlsZSgidGV4dC1h
bmNob3IiLCJzdGFydCIpLE0uYXR0cigiZCIsIk0iK2krIiwiK3lbMF0rIkgwViIreVsxXSsiSCIr
aSl9aWYoZi5yYW5nZUJhbmQpe3ZhciBFPWYsQT1FLnJhbmdlQmFuZCgpLzI7bD1mPWZ1bmN0aW9u
KG4pe3JldHVybiBFKG4pK0F9fWVsc2UgbC5yYW5nZUJhbmQ/bD1mOmQuY2FsbChuLGYpO3YuY2Fs
bChuLGwpLG0uY2FsbChuLGYpfSl9dmFyIHQsZT1aby5zY2FsZS5saW5lYXIoKSxyPXpzLHU9Nixp
PTYsbz0zLGE9WzEwXSxjPW51bGw7cmV0dXJuIG4uc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGU9dCxuKTplfSxuLm9yaWVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8ocj10IGluIExzP3QrIiI6enMsbik6cn0sbi50aWNrcz1mdW5jdGlvbigp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPWFyZ3VtZW50cyxuKTphfSxuLnRpY2tWYWx1ZXM9
ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9dCxuKTpjfSxuLnRpY2tGb3Jt
YXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxuKTp0fSxuLnRpY2tT
aXplPWZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg7cmV0dXJuIGU/KHU9K3QsaT0r
YXJndW1lbnRzW2UtMV0sbik6dX0sbi5pbm5lclRpY2tTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyh1PSt0LG4pOnV9LG4ub3V0ZXJUaWNrU2l6ZT1mdW5jdGlvbih0KXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxuKTppfSxuLnRpY2tQYWRkaW5nPWZ1bmN0aW9u
KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSt0LG4pOm99LG4udGlja1N1YmRpdmlkZT1m
dW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoJiZufSxufTt2YXIgenM9ImJvdHRvbSIs
THM9e3RvcDoxLHJpZ2h0OjEsYm90dG9tOjEsbGVmdDoxfTtaby5zdmcuYnJ1c2g9ZnVuY3Rpb24o
KXtmdW5jdGlvbiBuKGkpe2kuZWFjaChmdW5jdGlvbigpe3ZhciBpPVpvLnNlbGVjdCh0aGlzKS5z
dHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0
LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpLm9uKCJtb3VzZWRvd24uYnJ1c2giLHUpLm9uKCJ0b3Vj
aHN0YXJ0LmJydXNoIix1KSxvPWkuc2VsZWN0QWxsKCIuYmFja2dyb3VuZCIpLmRhdGEoWzBdKTtv
LmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJiYWNrZ3JvdW5kIikuc3R5bGUo
InZpc2liaWxpdHkiLCJoaWRkZW4iKS5zdHlsZSgiY3Vyc29yIiwiY3Jvc3NoYWlyIiksaS5zZWxl
Y3RBbGwoIi5leHRlbnQiKS5kYXRhKFswXSkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJj
bGFzcyIsImV4dGVudCIpLnN0eWxlKCJjdXJzb3IiLCJtb3ZlIik7dmFyIGE9aS5zZWxlY3RBbGwo
Ii5yZXNpemUiKS5kYXRhKHAsd3QpO2EuZXhpdCgpLnJlbW92ZSgpLGEuZW50ZXIoKS5hcHBlbmQo
ImciKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24obil7cmV0dXJuInJlc2l6ZSAiK259KS5zdHlsZSgi
Y3Vyc29yIixmdW5jdGlvbihuKXtyZXR1cm4gVHNbbl19KS5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4
IixmdW5jdGlvbihuKXtyZXR1cm4vW2V3XSQvLnRlc3Qobik/LTM6bnVsbH0pLmF0dHIoInkiLGZ1
bmN0aW9uKG4pe3JldHVybi9eW25zXS8udGVzdChuKT8tMzpudWxsfSkuYXR0cigid2lkdGgiLDYp
LmF0dHIoImhlaWdodCIsNikuc3R5bGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKSxhLnN0eWxlKCJk
aXNwbGF5IixuLmVtcHR5KCk/Im5vbmUiOm51bGwpO3ZhciBsLGY9Wm8udHJhbnNpdGlvbihpKSxo
PVpvLnRyYW5zaXRpb24obyk7YyYmKGw9VGkoYyksaC5hdHRyKCJ4IixsWzBdKS5hdHRyKCJ3aWR0
aCIsbFsxXS1sWzBdKSxlKGYpKSxzJiYobD1UaShzKSxoLmF0dHIoInkiLGxbMF0pLmF0dHIoImhl
aWdodCIsbFsxXS1sWzBdKSxyKGYpKSx0KGYpfSl9ZnVuY3Rpb24gdChuKXtuLnNlbGVjdEFsbCgi
LnJlc2l6ZSIpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24obil7cmV0dXJuInRyYW5zbGF0ZSgi
K2xbKy9lJC8udGVzdChuKV0rIiwiK2ZbKy9ecy8udGVzdChuKV0rIikifSl9ZnVuY3Rpb24gZShu
KXtuLnNlbGVjdCgiLmV4dGVudCIpLmF0dHIoIngiLGxbMF0pLG4uc2VsZWN0QWxsKCIuZXh0ZW50
LC5uPnJlY3QsLnM+cmVjdCIpLmF0dHIoIndpZHRoIixsWzFdLWxbMF0pfWZ1bmN0aW9uIHIobil7
bi5zZWxlY3QoIi5leHRlbnQiKS5hdHRyKCJ5IixmWzBdKSxuLnNlbGVjdEFsbCgiLmV4dGVudCwu
ZT5yZWN0LC53PnJlY3QiKS5hdHRyKCJoZWlnaHQiLGZbMV0tZlswXSl9ZnVuY3Rpb24gdSgpe2Z1
bmN0aW9uIHUoKXszMj09Wm8uZXZlbnQua2V5Q29kZSYmKEN8fCh4PW51bGwselswXS09bFsxXSx6
WzFdLT1mWzFdLEM9MikseSgpKX1mdW5jdGlvbiBwKCl7MzI9PVpvLmV2ZW50LmtleUNvZGUmJjI9
PUMmJih6WzBdKz1sWzFdLHpbMV0rPWZbMV0sQz0wLHkoKSl9ZnVuY3Rpb24gdigpe3ZhciBuPVpv
Lm1vdXNlKF8pLHU9ITE7TSYmKG5bMF0rPU1bMF0sblsxXSs9TVsxXSksQ3x8KFpvLmV2ZW50LmFs
dEtleT8oeHx8KHg9WyhsWzBdK2xbMV0pLzIsKGZbMF0rZlsxXSkvMl0pLHpbMF09bFsrKG5bMF08
eFswXSldLHpbMV09ZlsrKG5bMV08eFsxXSldKTp4PW51bGwpLEUmJmQobixjLDApJiYoZShTKSx1
PSEwKSxBJiZkKG4scywxKSYmKHIoUyksdT0hMCksdSYmKHQoUyksdyh7dHlwZToiYnJ1c2giLG1v
ZGU6Qz8ibW92ZSI6InJlc2l6ZSJ9KSl9ZnVuY3Rpb24gZChuLHQsZSl7dmFyIHIsdSxhPVRpKHQp
LGM9YVswXSxzPWFbMV0scD16W2VdLHY9ZT9mOmwsZD12WzFdLXZbMF07cmV0dXJuIEMmJihjLT1w
LHMtPWQrcCkscj0oZT9nOmgpP01hdGgubWF4KGMsTWF0aC5taW4ocyxuW2VdKSk6bltlXSxDP3U9
KHIrPXApK2Q6KHgmJihwPU1hdGgubWF4KGMsTWF0aC5taW4ocywyKnhbZV0tcikpKSxyPnA/KHU9
cixyPXApOnU9cCksdlswXSE9cnx8dlsxXSE9dT8oZT9vPW51bGw6aT1udWxsLHZbMF09cix2WzFd
PXUsITApOnZvaWQgMH1mdW5jdGlvbiBtKCl7digpLFMuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwi
YWxsIikuc2VsZWN0QWxsKCIucmVzaXplIikuc3R5bGUoImRpc3BsYXkiLG4uZW1wdHkoKT8ibm9u
ZSI6bnVsbCksWm8uc2VsZWN0KCJib2R5Iikuc3R5bGUoImN1cnNvciIsbnVsbCksTC5vbigibW91
c2Vtb3ZlLmJydXNoIixudWxsKS5vbigibW91c2V1cC5icnVzaCIsbnVsbCkub24oInRvdWNobW92
ZS5icnVzaCIsbnVsbCkub24oInRvdWNoZW5kLmJydXNoIixudWxsKS5vbigia2V5ZG93bi5icnVz
aCIsbnVsbCkub24oImtleXVwLmJydXNoIixudWxsKSxOKCksdyh7dHlwZToiYnJ1c2hlbmQifSl9
dmFyIHgsTSxfPXRoaXMsYj1aby5zZWxlY3QoWm8uZXZlbnQudGFyZ2V0KSx3PWEub2YoXyxhcmd1
bWVudHMpLFM9Wm8uc2VsZWN0KF8pLGs9Yi5kYXR1bSgpLEU9IS9eKG58cykkLy50ZXN0KGspJiZj
LEE9IS9eKGV8dykkLy50ZXN0KGspJiZzLEM9Yi5jbGFzc2VkKCJleHRlbnQiKSxOPUkoKSx6PVpv
Lm1vdXNlKF8pLEw9Wm8uc2VsZWN0KFdvKS5vbigia2V5ZG93bi5icnVzaCIsdSkub24oImtleXVw
LmJydXNoIixwKTtpZihaby5ldmVudC5jaGFuZ2VkVG91Y2hlcz9MLm9uKCJ0b3VjaG1vdmUuYnJ1
c2giLHYpLm9uKCJ0b3VjaGVuZC5icnVzaCIsbSk6TC5vbigibW91c2Vtb3ZlLmJydXNoIix2KS5v
bigibW91c2V1cC5icnVzaCIsbSksUy5pbnRlcnJ1cHQoKS5zZWxlY3RBbGwoIioiKS5pbnRlcnJ1
cHQoKSxDKXpbMF09bFswXS16WzBdLHpbMV09ZlswXS16WzFdO2Vsc2UgaWYoayl7dmFyIFQ9Ky93
JC8udGVzdChrKSxxPSsvXm4vLnRlc3Qoayk7TT1bbFsxLVRdLXpbMF0sZlsxLXFdLXpbMV1dLHpb
MF09bFtUXSx6WzFdPWZbcV19ZWxzZSBaby5ldmVudC5hbHRLZXkmJih4PXouc2xpY2UoKSk7Uy5z
dHlsZSgicG9pbnRlci1ldmVudHMiLCJub25lIikuc2VsZWN0QWxsKCIucmVzaXplIikuc3R5bGUo
ImRpc3BsYXkiLG51bGwpLFpvLnNlbGVjdCgiYm9keSIpLnN0eWxlKCJjdXJzb3IiLGIuc3R5bGUo
ImN1cnNvciIpKSx3KHt0eXBlOiJicnVzaHN0YXJ0In0pLHYoKX12YXIgaSxvLGE9TShuLCJicnVz
aHN0YXJ0IiwiYnJ1c2giLCJicnVzaGVuZCIpLGM9bnVsbCxzPW51bGwsbD1bMCwwXSxmPVswLDBd
LGg9ITAsZz0hMCxwPXFzWzBdO3JldHVybiBuLmV2ZW50PWZ1bmN0aW9uKG4pe24uZWFjaChmdW5j
dGlvbigpe3ZhciBuPWEub2YodGhpcyxhcmd1bWVudHMpLHQ9e3g6bCx5OmYsaTppLGo6b30sZT10
aGlzLl9fY2hhcnRfX3x8dDt0aGlzLl9fY2hhcnRfXz10LFNzP1pvLnNlbGVjdCh0aGlzKS50cmFu
c2l0aW9uKCkuZWFjaCgic3RhcnQuYnJ1c2giLGZ1bmN0aW9uKCl7aT1lLmksbz1lLmosbD1lLngs
Zj1lLnksbih7dHlwZToiYnJ1c2hzdGFydCJ9KX0pLnR3ZWVuKCJicnVzaDpicnVzaCIsZnVuY3Rp
b24oKXt2YXIgZT1ndShsLHQueCkscj1ndShmLHQueSk7cmV0dXJuIGk9bz1udWxsLGZ1bmN0aW9u
KHUpe2w9dC54PWUodSksZj10Lnk9cih1KSxuKHt0eXBlOiJicnVzaCIsbW9kZToicmVzaXplIn0p
fX0pLmVhY2goImVuZC5icnVzaCIsZnVuY3Rpb24oKXtpPXQuaSxvPXQuaixuKHt0eXBlOiJicnVz
aCIsbW9kZToicmVzaXplIn0pLG4oe3R5cGU6ImJydXNoZW5kIn0pfSk6KG4oe3R5cGU6ImJydXNo
c3RhcnQifSksbih7dHlwZToiYnJ1c2giLG1vZGU6InJlc2l6ZSJ9KSxuKHt0eXBlOiJicnVzaGVu
ZCJ9KSl9KX0sbi54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPXQscD1x
c1shYzw8MXwhc10sbik6Y30sbi55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhzPXQscD1xc1shYzw8MXwhc10sbik6c30sbi5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oYyYmcz8oaD0hIXRbMF0sZz0hIXRbMV0pOmM/aD0hIXQ6cyYmKGc9ISF0
KSxuKTpjJiZzP1toLGddOmM/aDpzP2c6bnVsbH0sbi5leHRlbnQ9ZnVuY3Rpb24odCl7dmFyIGUs
cix1LGEsaDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYyYmKGU9dFswXSxyPXRbMV0scyYmKGU9
ZVswXSxyPXJbMF0pLGk9W2Uscl0sYy5pbnZlcnQmJihlPWMoZSkscj1jKHIpKSxlPnImJihoPWUs
ZT1yLHI9aCksKGUhPWxbMF18fHIhPWxbMV0pJiYobD1bZSxyXSkpLHMmJih1PXRbMF0sYT10WzFd
LGMmJih1PXVbMV0sYT1hWzFdKSxvPVt1LGFdLHMuaW52ZXJ0JiYodT1zKHUpLGE9cyhhKSksdT5h
JiYoaD11LHU9YSxhPWgpLCh1IT1mWzBdfHxhIT1mWzFdKSYmKGY9W3UsYV0pKSxuKTooYyYmKGk/
KGU9aVswXSxyPWlbMV0pOihlPWxbMF0scj1sWzFdLGMuaW52ZXJ0JiYoZT1jLmludmVydChlKSxy
PWMuaW52ZXJ0KHIpKSxlPnImJihoPWUsZT1yLHI9aCkpKSxzJiYobz8odT1vWzBdLGE9b1sxXSk6
KHU9ZlswXSxhPWZbMV0scy5pbnZlcnQmJih1PXMuaW52ZXJ0KHUpLGE9cy5pbnZlcnQoYSkpLHU+
YSYmKGg9dSx1PWEsYT1oKSkpLGMmJnM/W1tlLHVdLFtyLGFdXTpjP1tlLHJdOnMmJlt1LGFdKX0s
bi5jbGVhcj1mdW5jdGlvbigpe3JldHVybiBuLmVtcHR5KCl8fChsPVswLDBdLGY9WzAsMF0saT1v
PW51bGwpLG59LG4uZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hIWMmJmxbMF09PWxbMV18fCEhcyYm
ZlswXT09ZlsxXX0sWm8ucmViaW5kKG4sYSwib24iKX07dmFyIFRzPXtuOiJucy1yZXNpemUiLGU6
ImV3LXJlc2l6ZSIsczoibnMtcmVzaXplIix3OiJldy1yZXNpemUiLG53OiJud3NlLXJlc2l6ZSIs
bmU6Im5lc3ctcmVzaXplIixzZToibndzZS1yZXNpemUiLHN3OiJuZXN3LXJlc2l6ZSJ9LHFzPVtb
Im4iLCJlIiwicyIsInciLCJudyIsIm5lIiwic2UiLCJzdyJdLFsiZSIsInciXSxbIm4iLCJzIl0s
W11dLFJzPVFhLmZvcm1hdD1pYy50aW1lRm9ybWF0LERzPVJzLnV0YyxQcz1EcygiJVktJW0tJWRU
JUg6JU06JVMuJUxaIik7UnMuaXNvPURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nJiYrbmV3IERh
dGUoIjIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwWiIpP0hvOlBzLEhvLnBhcnNlPWZ1bmN0aW9uKG4p
e3ZhciB0PW5ldyBEYXRlKG4pO3JldHVybiBpc05hTih0KT9udWxsOnR9LEhvLnRvU3RyaW5nPVBz
LnRvU3RyaW5nLFFhLnNlY29uZD1EdChmdW5jdGlvbihuKXtyZXR1cm4gbmV3IG5jKDFlMypNYXRo
LmZsb29yKG4vMWUzKSl9LGZ1bmN0aW9uKG4sdCl7bi5zZXRUaW1lKG4uZ2V0VGltZSgpKzFlMypN
YXRoLmZsb29yKHQpKX0sZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0U2Vjb25kcygpfSksUWEuc2Vj
b25kcz1RYS5zZWNvbmQucmFuZ2UsUWEuc2Vjb25kcy51dGM9UWEuc2Vjb25kLnV0Yy5yYW5nZSxR
YS5taW51dGU9RHQoZnVuY3Rpb24obil7cmV0dXJuIG5ldyBuYyg2ZTQqTWF0aC5mbG9vcihuLzZl
NCkpfSxmdW5jdGlvbihuLHQpe24uc2V0VGltZShuLmdldFRpbWUoKSs2ZTQqTWF0aC5mbG9vcih0
KSl9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldE1pbnV0ZXMoKX0pLFFhLm1pbnV0ZXM9UWEubWlu
dXRlLnJhbmdlLFFhLm1pbnV0ZXMudXRjPVFhLm1pbnV0ZS51dGMucmFuZ2UsUWEuaG91cj1EdChm
dW5jdGlvbihuKXt2YXIgdD1uLmdldFRpbWV6b25lT2Zmc2V0KCkvNjA7cmV0dXJuIG5ldyBuYygz
NmU1KihNYXRoLmZsb29yKG4vMzZlNS10KSt0KSl9LGZ1bmN0aW9uKG4sdCl7bi5zZXRUaW1lKG4u
Z2V0VGltZSgpKzM2ZTUqTWF0aC5mbG9vcih0KSl9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldEhv
dXJzKCl9KSxRYS5ob3Vycz1RYS5ob3VyLnJhbmdlLFFhLmhvdXJzLnV0Yz1RYS5ob3VyLnV0Yy5y
YW5nZSxRYS5tb250aD1EdChmdW5jdGlvbihuKXtyZXR1cm4gbj1RYS5kYXkobiksbi5zZXREYXRl
KDEpLG59LGZ1bmN0aW9uKG4sdCl7bi5zZXRNb250aChuLmdldE1vbnRoKCkrdCl9LGZ1bmN0aW9u
KG4pe3JldHVybiBuLmdldE1vbnRoKCl9KSxRYS5tb250aHM9UWEubW9udGgucmFuZ2UsUWEubW9u
dGhzLnV0Yz1RYS5tb250aC51dGMucmFuZ2U7dmFyIFVzPVsxZTMsNWUzLDE1ZTMsM2U0LDZlNCwz
ZTUsOWU1LDE4ZTUsMzZlNSwxMDhlNSwyMTZlNSw0MzJlNSw4NjRlNSwxNzI4ZTUsNjA0OGU1LDI1
OTJlNiw3Nzc2ZTYsMzE1MzZlNl0sanM9W1tRYS5zZWNvbmQsMV0sW1FhLnNlY29uZCw1XSxbUWEu
c2Vjb25kLDE1XSxbUWEuc2Vjb25kLDMwXSxbUWEubWludXRlLDFdLFtRYS5taW51dGUsNV0sW1Fh
Lm1pbnV0ZSwxNV0sW1FhLm1pbnV0ZSwzMF0sW1FhLmhvdXIsMV0sW1FhLmhvdXIsM10sW1FhLmhv
dXIsNl0sW1FhLmhvdXIsMTJdLFtRYS5kYXksMV0sW1FhLmRheSwyXSxbUWEud2VlaywxXSxbUWEu
bW9udGgsMV0sW1FhLm1vbnRoLDNdLFtRYS55ZWFyLDFdXSxIcz1Scy5tdWx0aShbWyIuJUwiLGZ1
bmN0aW9uKG4pe3JldHVybiBuLmdldE1pbGxpc2Vjb25kcygpfV0sWyI6JVMiLGZ1bmN0aW9uKG4p
e3JldHVybiBuLmdldFNlY29uZHMoKX1dLFsiJUk6JU0iLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdl
dE1pbnV0ZXMoKX1dLFsiJUkgJXAiLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldEhvdXJzKCl9XSxb
IiVhICVkIixmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXREYXkoKSYmMSE9bi5nZXREYXRlKCl9XSxb
IiViICVkIixmdW5jdGlvbihuKXtyZXR1cm4gMSE9bi5nZXREYXRlKCl9XSxbIiVCIixmdW5jdGlv
bihuKXtyZXR1cm4gbi5nZXRNb250aCgpfV0sWyIlWSIsd2VdXSksRnM9e3JhbmdlOmZ1bmN0aW9u
KG4sdCxlKXtyZXR1cm4gWm8ucmFuZ2UoTWF0aC5jZWlsKG4vZSkqZSwrdCxlKS5tYXAoT28pfSxm
bG9vcjp3dCxjZWlsOnd0fTtqcy55ZWFyPVFhLnllYXIsUWEuc2NhbGU9ZnVuY3Rpb24oKXtyZXR1
cm4gRm8oWm8uc2NhbGUubGluZWFyKCksanMsSHMpfTt2YXIgT3M9anMubWFwKGZ1bmN0aW9uKG4p
e3JldHVybltuWzBdLnV0YyxuWzFdXX0pLFlzPURzLm11bHRpKFtbIi4lTCIsZnVuY3Rpb24obil7
cmV0dXJuIG4uZ2V0VVRDTWlsbGlzZWNvbmRzKCl9XSxbIjolUyIsZnVuY3Rpb24obil7cmV0dXJu
IG4uZ2V0VVRDU2Vjb25kcygpfV0sWyIlSTolTSIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0VVRD
TWludXRlcygpfV0sWyIlSSAlcCIsZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0VVRDSG91cnMoKX1d
LFsiJWEgJWQiLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldFVUQ0RheSgpJiYxIT1uLmdldFVUQ0Rh
dGUoKX1dLFsiJWIgJWQiLGZ1bmN0aW9uKG4pe3JldHVybiAxIT1uLmdldFVUQ0RhdGUoKX1dLFsi
JUIiLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldFVUQ01vbnRoKCl9XSxbIiVZIix3ZV1dKTtPcy55
ZWFyPVFhLnllYXIudXRjLFFhLnNjYWxlLnV0Yz1mdW5jdGlvbigpe3JldHVybiBGbyhaby5zY2Fs
ZS5saW5lYXIoKSxPcyxZcyl9LFpvLnRleHQ9U3QoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVzcG9u
c2VUZXh0fSksWm8uanNvbj1mdW5jdGlvbihuLHQpe3JldHVybiBrdChuLCJhcHBsaWNhdGlvbi9q
c29uIixZbyx0KX0sWm8uaHRtbD1mdW5jdGlvbihuLHQpe3JldHVybiBrdChuLCJ0ZXh0L2h0bWwi
LElvLHQpfSxaby54bWw9U3QoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVzcG9uc2VYTUx9KSwiZnVu
Y3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShabyk6Im9iamVjdCI9PXR5
cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzJiYobW9kdWxlLmV4cG9ydHM9Wm8pLHRoaXMuZDM9
Wm99KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvZ3JhcGguanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvZ3JhcGguanMJKHJldmlz
aW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9n
cmFwaC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0MCBAQAorZnVuY3Rpb24gZ3JhcGgo
c2VsZWN0b3IsIHNpemUsIG1hcmdpbnMsIGF4ZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGltZU9mZnNl
dCkKK3sKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3Ip
OworICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSBudWxsOworCisgICAgdmFyIHggPSBkMy5zY2Fs
ZS5saW5lYXIoKQorICAgICAgICAgICAgLnJhbmdlKFswLCBzaXplLndpZHRoXSkKKyAgICAgICAg
ICAgIC5kb21haW4oZDMuZXh0ZW50KHNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudGlt
ZU9mZnNldDsgfSkpOyAgICAgICAgICAgIAorCisgICAgdmFyIHlMZWZ0ID0gZDMuc2NhbGUubGlu
ZWFyKCkKKyAgICAgICAgICAgIC5yYW5nZShbc2l6ZS5oZWlnaHQsIDBdKQorICAgICAgICAgICAg
LmRvbWFpbihbMCwgZDMubWF4KHNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudmFsdWVz
WzBdOyB9KV0pOworCisgICAgdmFyIHlSaWdodCA9IGQzLnNjYWxlLmxpbmVhcigpCisgICAgICAg
ICAgICAucmFuZ2UoW3NpemUuaGVpZ2h0LCAwXSkKKyAgICAgICAgICAgIC5kb21haW4oWzAsIGQz
Lm1heChzYW1wbGVzLCBmdW5jdGlvbihkKSB7IHJldHVybiBkLnZhbHVlc1sxXTsgfSldKTsKKwor
ICAgIHZhciB4QXhpcyA9IGQzLnN2Zy5heGlzKCkKKyAgICAgICAgICAgIC5zY2FsZSh4KQorICAg
ICAgICAgICAgLm9yaWVudCgiYm90dG9tIik7CisKKyAgICB2YXIgeUF4aXNMZWZ0ID0gZDMuc3Zn
LmF4aXMoKQorICAgICAgICAgICAgLnNjYWxlKHlMZWZ0KQorICAgICAgICAgICAgLm9yaWVudCgi
bGVmdCIpOworCisgICAgdmFyIHlBeGlzUmlnaHQgPSBkMy5zdmcuYXhpcygpCisgICAgICAgICAg
ICAuc2NhbGUoeVJpZ2h0KQorICAgICAgICAgICAgLm9yaWVudCgicmlnaHQiKTsKKworICAgIHZh
ciBsaW5lTGVmdCA9IGQzLnN2Zy5saW5lKCkKKyAgICAgICAgICAgIC54KGZ1bmN0aW9uKGQpIHsg
cmV0dXJuIHgoZC50aW1lT2Zmc2V0KTsgfSkKKyAgICAgICAgICAgIC55KGZ1bmN0aW9uKGQpIHsg
cmV0dXJuIHlMZWZ0KGQudmFsdWVzWzBdKTsgfSk7CisKKyAgICB2YXIgbGluZVJpZ2h0ID0gZDMu
c3ZnLmxpbmUoKQorICAgICAgICAgICAgLngoZnVuY3Rpb24oZCkgeyByZXR1cm4geChkLnRpbWVP
ZmZzZXQpOyB9KQorICAgICAgICAgICAgLnkoZnVuY3Rpb24oZCkgeyByZXR1cm4geVJpZ2h0KGQu
dmFsdWVzWzFdKTsgfSk7CisKKyAgICBzYW1wbGVzLmZvckVhY2goZnVuY3Rpb24oZCkgeworICAg
ICAgICBkLnRpbWVPZmZzZXQgPSArZC50aW1lT2Zmc2V0OworICAgICAgICBkLnZhbHVlc1swXSA9
ICtkLnZhbHVlc1swXTsKKyAgICAgICAgZC52YWx1ZXNbMV0gPSArZC52YWx1ZXNbMV07ICAgICAg
ICAKKyAgICB9KTsgICAgCisKKyAgICB2YXIgc2FtcGxlZFNhbXBsZXMgPSBzYW1wbGVzLmZpbHRl
cihmdW5jdGlvbihkKSB7CisgICAgICAgIHJldHVybiBkLnRpbWVPZmZzZXQgPj0gc2FtcGxpbmdU
aW1lT2Zmc2V0OworICAgIH0pOworICAgIAorICAgIHZhciBtZWFuTGVmdCA9IGQzLm1lYW4oc2Ft
cGxlZFNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsKKyAgICAgICAgcmV0dXJuICtkLnZhbHVlc1swXTsK
KyAgICB9KTsKKworICAgIHZhciBtZWFuUmlnaHQgPSBkMy5tZWFuKHNhbXBsZWRTYW1wbGVzLCBm
dW5jdGlvbihkKSB7CisgICAgICAgIHJldHVybiArZC52YWx1ZXNbMV07CisgICAgfSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgdmFyIHN2ZyA9IGQzLnNlbGVjdChzZWxlY3Rv
cikuYXBwZW5kKCJzdmciKQorICAgICAgICAuYXR0cigid2lkdGgiLCBzaXplLndpZHRoICsgbWFy
Z2lucy5sZWZ0ICsgbWFyZ2lucy5yaWdodCkKKyAgICAgICAgLmF0dHIoImhlaWdodCIsIHNpemUu
aGVpZ2h0ICsgbWFyZ2lucy50b3AgKyBtYXJnaW5zLmJvdHRvbSkKKyAgICAgICAgLmFwcGVuZCgi
ZyIpCisgICAgICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiICsgbWFyZ2lu
cy5sZWZ0ICsgIiwiICsgbWFyZ2lucy50b3AgKyAiKSIpOworCisgICAgLy8geC1heGlzCisgICAg
c3ZnLmFwcGVuZCgiZyIpCisgICAgICAgIC5hdHRyKCJjbGFzcyIsICJ4IGF4aXMiKQorICAgICAg
ICAuYXR0cigiZmlsbCIsICJyZ2IoMjM1LCAyMzUsIDIzNSkiKQorICAgICAgICAuYXR0cigidHJh
bnNmb3JtIiwgInRyYW5zbGF0ZSgwLCIgKyBzaXplLmhlaWdodCArICIpIikKKyAgICAgICAgLmNh
bGwoeEF4aXMpCisgICAgICAgIC5hcHBlbmQoInRleHQiKQorICAgICAgICAgICAgLmF0dHIoImNs
YXNzIiwgImxhYmVsIikKKyAgICAgICAgICAgIC5hdHRyKCJ4Iiwgc2l6ZS53aWR0aCkKKyAgICAg
ICAgICAgIC5hdHRyKCJ5IiwgLTYpCisgICAgICAgICAgICAuYXR0cigiZmlsbCIsICJyZ2IoMjM1
LCAyMzUsIDIzNSkiKQorICAgICAgICAgICAgLnN0eWxlKCJ0ZXh0LWFuY2hvciIsICJlbmQiKQor
ICAgICAgICAgICAgLnRleHQoInRpbWUiKTsKKyAgICAgICAgICAgICAgICAgCisgICAgLy8geUxl
ZnQtYXhpcworICAgIHN2Zy5hcHBlbmQoImciKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAieSBh
eGlzIikKKyAgICAgICAgLmF0dHIoImZpbGwiLCAic3RlZWxibHVlIikKKyAgICAgICAgLmNhbGwo
eUF4aXNMZWZ0KQorICAgICAgICAuYXBwZW5kKCJ0ZXh0IikKKyAgICAgICAgICAgIC5hdHRyKCJj
bGFzcyIsICJsYWJlbCIpCisgICAgICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInJvdGF0ZSgt
OTApIikKKyAgICAgICAgICAgIC5hdHRyKCJ5IiwgNikKKyAgICAgICAgICAgIC5hdHRyKCJmaWxs
IiwgInN0ZWVsYmx1ZSIpCisgICAgICAgICAgICAuYXR0cigiZHkiLCAiLjcxZW0iKQorICAgICAg
ICAgICAgLnN0eWxlKCJ0ZXh0LWFuY2hvciIsICJlbmQiKQorICAgICAgICAgICAgLnRleHQoYXhl
c1swXSk7CisKKyAgICAvLyB5UmlnaHQtYXhpcworICAgIHN2Zy5hcHBlbmQoImciKQorICAgICAg
ICAuYXR0cigiY2xhc3MiLCAieSBheGlzIikKKyAgICAgICAgLmF0dHIoImZpbGwiLCAicmVkIikK
KyAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoIiArIHNpemUud2lkdGggKyAi
LCAwKSIpCisgICAgICAgIC5jYWxsKHlBeGlzUmlnaHQpCisgICAgICAgIC5hcHBlbmQoInRleHQi
KQorICAgICAgICAgICAgLmF0dHIoImNsYXNzIiwgImxhYmVsIikKKyAgICAgICAgICAgIC5hdHRy
KCJ0cmFuc2Zvcm0iLCAicm90YXRlKC05MCkiKQorICAgICAgICAgICAgLmF0dHIoInkiLCA2KQor
ICAgICAgICAgICAgLmF0dHIoImZpbGwiLCAicmVkIikKKyAgICAgICAgICAgIC5hdHRyKCJkeSIs
ICIuNzFlbSIpCisgICAgICAgICAgICAuc3R5bGUoInRleHQtYW5jaG9yIiwgImVuZCIpCisgICAg
ICAgICAgICAudGV4dChheGVzWzFdKTsKKworICAgIC8vIGxlZnQtbWVhbgorICAgIHN2Zy5hcHBl
bmQoInN2ZzpsaW5lIikKKyAgICAgICAgLmF0dHIoIngxIiwgeCgwKSkKKyAgICAgICAgLmF0dHIo
IngyIiwgc2l6ZS53aWR0aCkKKyAgICAgICAgLmF0dHIoInkxIiwgeUxlZnQobWVhbkxlZnQpKQor
ICAgICAgICAuYXR0cigieTIiLCB5TGVmdChtZWFuTGVmdCkpCisgICAgICAgIC5hdHRyKCJjbGFz
cyIsICJsZWZ0LW1lYW4iKTsKKworICAgIC8vIHJpZ2h0LW1lYW4KKyAgICBzdmcuYXBwZW5kKCJz
dmc6bGluZSIpCisgICAgICAgIC5hdHRyKCJ4MSIsIHgoMCkpCisgICAgICAgIC5hdHRyKCJ4MiIs
IHNpemUud2lkdGgpCisgICAgICAgIC5hdHRyKCJ5MSIsIHlSaWdodChtZWFuUmlnaHQpKQorICAg
ICAgICAuYXR0cigieTIiLCB5UmlnaHQobWVhblJpZ2h0KSkKKyAgICAgICAgLmF0dHIoImNsYXNz
IiwgInJpZ2h0LW1lYW4iKTsgICAgICAgIAorCisgICAgLy8gc2FtcGxpbmdUaW1lT2Zmc2V0Cisg
ICAgc3ZnLmFwcGVuZCgibGluZSIpCisgICAgICAgIC5hdHRyKCJ4MSIsIHgoc2FtcGxpbmdUaW1l
T2Zmc2V0KSkKKyAgICAgICAgLmF0dHIoIngyIiwgeChzYW1wbGluZ1RpbWVPZmZzZXQpKQorICAg
ICAgICAuYXR0cigieTEiLCB5TGVmdCgwKSkKKyAgICAgICAgLmF0dHIoInkyIiwgeUxlZnQoeUF4
aXNMZWZ0LnNjYWxlKCkuZG9tYWluKClbMV0pKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAic21h
cGxlLXRpbWUiKTsKKworICAgIC8vIGxlZnQtc2FtcGxlcworICAgIHN2Zy5hcHBlbmQoInBhdGgi
KQorICAgICAgICAuZGF0dW0oc2FtcGxlcykKKyAgICAgICAgLmF0dHIoImNsYXNzIiwgImxlZnQt
c2FtcGxlcyIpCisgICAgICAgIC5hdHRyKCJkIiwgbGluZUxlZnQpOworICAgICAgICAKKyAgICAv
LyByaWdodC1zYW1wbGVzCisgICAgc3ZnLmFwcGVuZCgicGF0aCIpCisgICAgICAgIC5kYXR1bShz
YW1wbGVzKQorICAgICAgICAuYXR0cigiY2xhc3MiLCAicmlnaHQtc2FtcGxlcyIpCisgICAgICAg
IC5hdHRyKCJkIiwgbGluZVJpZ2h0KTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzCShyZXZpc2lvbiAwKQor
KysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMDUgQEAKK3ZhciBUaXRsZXMgPSBbCisgICAgewor
ICAgICAgICB0ZXh0OiAiVGVzdCBOYW1lIiwKKyAgICAgICAgd2lkdGg6IDI1LAorICAgICAgICBj
aGlsZHJlbjogW10KKyAgICB9LAorICAgIHsKKyAgICAgICAgdGV4dDogIkFuaW1hdGVkIEl0ZW1z
IiwKKyAgICAgICAgd2lkdGg6IDMxLAorICAgICAgICBjaGlsZHJlbjoKKyAgICAgICAgWworICAg
ICAgICAgICAgeyB0ZXh0OiAgICJBdmcuIiwgd2lkdGg6IDYsIGNoaWxkcmVuOiBbXSB9LAorICAg
ICAgICAgICAgeyB0ZXh0OiAiXHUwMGIxIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAorICAg
ICAgICAgICAgeyB0ZXh0OiAgICJXLjUlIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAorICAg
ICAgICAgICAgeyB0ZXh0OiAgICJTdGQuIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAorICAg
ICAgICAgICAgeyB0ZXh0OiAgICAgICIlIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAorICAg
ICAgICBdCisgICAgfSwKKyAgICB7CisgICAgICAgIHRleHQ6ICJGUFMiLAorICAgICAgICB3aWR0
aDogMzEsCisgICAgICAgIGNoaWxkcmVuOgorICAgICAgICBbCisgICAgICAgICAgICB7IHRleHQ6
ICAgIkF2Zy4iLCB3aWR0aDogNiwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6
ICJcdTAwYjEiLCB3aWR0aDogNSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6
ICAgIlcuNSUiLCB3aWR0aDogNSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6
ICAgIlN0ZC4iLCB3aWR0aDogNSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6
ICAgICAgIiUiLCB3aWR0aDogNSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgIF0KKyAgICB9LAor
ICAgIHsKKyAgICAgICAgdGV4dDogIlNjb3JlIiwKKyAgICAgICAgd2lkdGg6IDYsCisgICAgICAg
IGNoaWxkcmVuOiBbXQorICAgIH0sCisgICAgeworICAgICAgICB0ZXh0OiAiU2FtcGxlcyIsCisg
ICAgICAgIHdpZHRoOiA3LAorICAgICAgICBjaGlsZHJlbjogW10KKyAgICB9CitdOworCit2YXIg
U3VpdGVzID0gW107CisKK1N1aXRlcy5wdXNoKHsKKyAgICBuYW1lOiAiSFRNTCBCb3VuY2luZyBQ
YXJ0aWNsZXMiLAorICAgIHByZXBhcmU6IGZ1bmN0aW9uKHJ1bm5lciwgY29udGVudFdpbmRvdywg
Y29udGVudERvY3VtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxl
bWVudCgiI3N0YWdlIikudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgcmV0
dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAgCisgICAgcnVuOiBmdW5jdGlv
bihjb250ZW50V2luZG93LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
CisgICAgeworICAgICAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhpcywg
dGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICB9LAorCisgICAg
dGl0bGVzOiBUaXRsZXMsCisgICAgdGVzdHM6IFsKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHVy
bDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/
Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9MTImcGFydGlj
bGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKKyAgICAgICAgICAgIG5hbWU6ICJDU1MgYm91bmNp
bmcgY2lyY2xlcyIKKyAgICAgICAgfSwKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHVybDogIi4u
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/Z2Fpbj0x
JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9NDAmcGFydGljbGVIZWln
aHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAorICAgICAgICAgICAgbmFtZTogIkNTUyBib3Vu
Y2luZyBjbGlwcGVkIHJlY3RzIgorICAgICAgICB9LAorICAgICAgICB7IAorICAgICAgICAgICAg
dXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRt
bD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFydGljbGVXaWR0aD01MCZwYXJ0
aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVudCIsCisgICAgICAgICAgICBu
YW1lOiAiQ1NTIGJvdW5jaW5nIGdyYWRpZW50IGNpcmNsZXMiCisgICAgICAgIH0sCisgICAgICAg
IHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2lu
Zy1jc3MtaW1hZ2VzLmh0bWw/Z2Fpbj0wLjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0yJnBhcnRp
Y2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15
YW5nLnN2ZyIsCisgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIFNWRyBpbWFnZXMiCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZy
ZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9
Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCisgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5j
aW5nIFBORyBpbWFnZXMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDog
Ii4uL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVt
b3ZlTGltaXQ9MTAwIiwKKyAgICAgICAgICAgIG5hbWU6ICJDU1MgbGF5ZXJpbmcgdGV4dCIKKyAg
ICAgICAgfSwKKyAgICBdCit9KTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICJDYW52YXMg
Qm91bmNpbmcgUGFydGljbGVzIiwKKyAgICBwcmVwYXJlOiBmdW5jdGlvbihydW5uZXIsIGNvbnRl
bnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBydW5uZXIu
d2FpdEZvckVsZW1lbnQoIiNzdGFnZSIpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAg
ICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsKKyAgICB9LCAgCisgICAgCisgICAg
cnVuOiBmdW5jdGlvbihjb250ZW50V2luZG93LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwg
cHJvZ3Jlc3NCYXIpCisgICAgeworICAgICAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5j
aG1hcmsodGhpcywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAg
ICB9LAorICAgIAorICAgIHRpdGxlczogVGl0bGVzLAorICAgIHRlc3RzOiBbCisgICAgICAgIHsg
CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
Y2FudmFzLXNoYXBlcy5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZw
YXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCisgICAgICAg
ICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGNpcmNsZXMiCisgICAgICAgIH0sCisgICAgICAg
IHsgCisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctY2FudmFzLXNoYXBlcy5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAw
MCZwYXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xlSGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFy
IiwKKyAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgY2xpcHBlZCByZWN0cyIKKyAg
ICAgICAgfSwKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEw
MCZyZW1vdmVMaW1pdD0xMDAwJnBhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hh
cGU9Y2lyY2xlJmZpbGw9Z3JhZGllbnQiLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3Vu
Y2luZyBncmFkaWVudCBjaXJjbGVzIgorICAgICAgICB9LAorICAgICAgICB7IAorICAgICAgICAg
ICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFn
ZXMuaHRtbD9nYWluPTAuNCZhZGRMaW1pdD01JnJlbW92ZUxpbWl0PTEmcGFydGljbGVXaWR0aD04
MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwK
KyAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgU1ZHIGltYWdlcyIKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwMCZyZW1v
dmVMaW1pdD0xMDAwJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9
Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJv
dW5jaW5nIFBORyBpbWFnZXMiCisgICAgICAgIH0sCisgICAgXQorfSk7CisKK1N1aXRlcy5wdXNo
KHsKKyAgICBuYW1lOiAiU1ZHIEJvdW5jaW5nIFBhcnRpY2xlcyIsCisgICAgcHJlcGFyZTogZnVu
Y3Rpb24ocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpCisgICAgeworICAg
ICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCIjc3RhZ2UiKS50aGVuKGZ1bmN0aW9u
IChlbGVtZW50KSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7Cisg
ICAgfSwKKyAgICAKKyAgICBydW46IGZ1bmN0aW9uKGNvbnRlbnRXaW5kb3csIHRlc3QsIG9wdGlv
bnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKKyAgICB7CisgICAgICAgIHJldHVybiBjb250
ZW50V2luZG93LnJ1bkJlbmNobWFyayh0aGlzLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwg
cHJvZ3Jlc3NCYXIpOworICAgIH0sCisgICAgCisgICAgdGl0bGVzOiBUaXRsZXMsCisgICAgdGVz
dHM6IFsKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9nYWluPTYmYWRkTGltaXQ9MTAwJnJlbW92
ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJj
bGUiLAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBjaXJjbGVzIiwKKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9nYWluPTAuNiZhZGRMaW1pdD0xMCZyZW1vdmVM
aW1pdD0xJnBhcnRpY2xlV2lkdGg9NDAmcGFydGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlw
PXN0YXIiLAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBjbGlwcGVkIHJlY3RzIiwK
KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9nYWluPTAuOCZhZGRMaW1pdD0x
MCZyZW1vdmVMaW1pdD00JnBhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9
Y2lyY2xlJmZpbGw9Z3JhZGllbnQiLAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBn
cmFkaWVudCBjaXJjbGVzIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6
ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sP2dh
aW49MC40JmFkZExpbWl0PTUmcmVtb3ZlTGltaXQ9MiZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xl
SGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciLAorICAgICAgICAg
ICAgbmFtZTogIlNWRyBib3VuY2luZyBTVkcgaW1hZ2VzIgorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
c3ZnLWltYWdlcy5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSZwYXJ0aWNs
ZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFu
Zy5wbmciLAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBQTkcgaW1hZ2VzIgorICAg
ICAgICB9LAorICAgIF0KK30pOworCitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogIlN0YWdlIFRl
bXBsYXRlcyAoQ2FuIGJlIHVzZWQgZm9yIG5ldyB0ZXN0cykiLAorICAgIHByZXBhcmU6IGZ1bmN0
aW9uKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgiI3N0YWdlIikudGhlbihmdW5jdGlvbiAo
ZWxlbWVudCkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAg
IH0sCisgICAgCisgICAgcnVuOiBmdW5jdGlvbihjb250ZW50V2luZG93LCB0ZXN0LCBvcHRpb25z
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCisgICAgeworICAgICAgICByZXR1cm4gY29udGVu
dFdpbmRvdy5ydW5CZW5jaG1hcmsodGhpcywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHBy
b2dyZXNzQmFyKTsKKyAgICB9LAorICAgIAorICAgIHRpdGxlczogVGl0bGVzLAorICAgIHRlc3Rz
OiBbCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL3RlbXBsYXRlL3RlbXBs
YXRlLWNzcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSIsCisgICAgICAg
ICAgICBuYW1lOiAiQ1NTIHRlbXBsYXRlIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg
ICAgICB1cmw6ICIuLi90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jYW52YXMuaHRtbD9nYWluPTEm
YWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMDAiLAorICAgICAgICAgICAgbmFtZTogImNhbnZh
cyB0ZW1wbGF0ZSIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAiLi4v
dGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1v
dmVMaW1pdD01JjxvdGhlcl9wYXJhbXRlcj49PHZhbHVlPiIsCisgICAgICAgICAgICBuYW1lOiAi
U1ZHIHRlbXBsYXRlIgorICAgICAgICB9LAorICAgIF0KK30pOworCitmdW5jdGlvbiBzdWl0ZUZy
b21OYW1lKG5hbWUpCit7CisgICAgcmV0dXJuIFN1aXRlcy5maW5kKGZ1bmN0aW9uKHN1aXRlKSB7
IHJldHVybiBzdWl0ZS5uYW1lID09IG5hbWU7IH0pOworfQorCitmdW5jdGlvbiB0ZXN0RnJvbU5h
bWUoc3VpdGUsIG5hbWUpCit7CisgICAgcmV0dXJuIHN1aXRlLnRlc3RzLmZpbmQoZnVuY3Rpb24o
dGVzdCkgeyByZXR1cm4gdGVzdC5uYW1lID09IG5hbWU7IH0pOworfQpJbmRleDogUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52
YXMtaW1hZ2VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxl
PgorICAgICAgICBpbWcuaGlkZGVuIHsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+
CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVz
b3VyY2VzL3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdv
cml0aG0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3Rh
dGlzdGljcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9z
YW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4
dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0
aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMu
anMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2Ny
aXB0PiAgCisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXBh
cnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2lu
Zy1jYW52YXMtaW1hZ2VzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxpbWcg
Y2xhc3M9ImhpZGRlbiIgc3JjPSIuLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIj4KKyAgICA8aW1n
IGNsYXNzPSJoaWRkZW4iIHNyYz0iLi4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyI+CisgICAgPGNh
bnZhcyBpZD0ic3RhZ2UiPjwvY2FudmFzPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1j
YW52YXMtc2hhcGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0
YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2Ny
aXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCisg
ICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXBhcnRpY2xlcy5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1jYW52YXMt
c2hhcGVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxjYW52YXMgaWQ9InN0
YWdlIj48L2NhbnZhcz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sCShyZXZpc2lvbiAwKQorKysg
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3Vu
Y2luZy1jc3MtaW1hZ2VzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgaW1nIHsK
KyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+
CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVz
b3VyY2VzL3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdv
cml0aG0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3Rh
dGlzdGljcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9z
YW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4
dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0
aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMu
anMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2Ny
aXB0PiAgCisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdl
cy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJzdGFnZSI+PC9k
aXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNo
YXBlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIC5jaXJjbGUgeworICAgICAg
ICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjog
IzAwMDAwMDsKKyAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSA1MCU7CisgICAgICAgIH0K
KyAgICAgICAgLnJlY3QgeworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAg
ICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsKKyAgICAgICAgfQorICAgICAgICAuc3Rh
ciB7CisgICAgICAgICAgICAtd2Via2l0LWNsaXAtcGF0aDogcG9seWdvbig1MCUgMCUsIDM4JSAz
OCUsIDAlIDM4JSwgMzAlIDYwJSwgMTglIDEwMCUsIDUwJSA3NSUsIDgyJSAxMDAlLCA3MCUgNjAl
LCAxMDAlIDM4JSwgNjIlIDM4JSk7CisgICAgICAgICAgICAtbXMtY2xpcC1wYXRoOiBwb2x5Z29u
KDUwJSAwJSwgMzglIDM4JSwgMCUgMzglLCAzMCUgNjAlLCAxOCUgMTAwJSwgNTAlIDc1JSwgODIl
IDEwMCUsIDcwJSA2MCUsIDEwMCUgMzglLCA2MiUgMzglKTsgIAorICAgICAgICAgICAgY2xpcC1w
YXRoOiBwb2x5Z29uKDUwJSAwJSwgMzglIDM4JSwgMCUgMzglLCAzMCUgNjAlLCAxOCUgMTAwJSwg
NTAlIDc1JSwgODIlIDEwMCUsIDcwJSA2MCUsIDEwMCUgMzglLCA2MiUgMzglKTsKKyAgICAgICAg
fQorICAgIDwvc3R5bGU+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2Nz
cyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
c3RhZ2UuanMiPjwvc2NyaXB0PiAgCisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2lu
Zy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91
bmNpbmctY3NzLXNoYXBlcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2
IGlkPSJzdGFnZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFn
ZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbAkocmV2aXNpb24gMCkK
KysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
Ym91bmNpbmctc3ZnLWltYWdlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAorICAgIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+ICAKKyAgICA8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy9ib3VuY2luZy1zdmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+CisgICAgPHN2ZyBpZD0ic3RhZ2UiPjwvc3ZnPgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmct
c2hhcGVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVz
b3VyY2VzL3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdv
cml0aG0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3Rh
dGlzdGljcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9z
YW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4
dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0
aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMu
anMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2Ny
aXB0PiAgCisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctc3ZnLXBhcnRp
Y2xlcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1z
dmctc2hhcGVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxzdmcgaWQ9InN0
YWdlIj48L3N2Zz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZh
cy1pbWFnZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5q
cwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorZnVuY3Rpb24gQm91bmNpbmdDYW52YXNJbWFnZShz
dGFnZSkKK3sKKyAgICBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOwor
ICAgIHRoaXMuX2ltYWdlRWxlbWVudCA9IHN0YWdlLmltYWdlRWxlbWVudDsKKyAgICB0aGlzLl9z
aGFwZSA9ICJpbWFnZSI7Cit9CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ0Nh
bnZhc0ltYWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzSW1hZ2U7CisK
K0JvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90eXBlLl9kcmF3ID0gZnVuY3Rpb24oKQoreworICAg
IHRoaXMuX2NvbnRleHQuc2F2ZSgpOworICAgICAgICB0aGlzLl9hcHBseVJvdGF0aW9uKCk7Cisg
ICAgICAgIHRoaXMuX2NvbnRleHQuZHJhd0ltYWdlKHRoaXMuX2ltYWdlRWxlbWVudCwgMCwgMCwg
dGhpcy5fc2l6ZS54LCB0aGlzLl9zaXplLnkpOworICAgIHRoaXMuX2NvbnRleHQucmVzdG9yZSgp
OworfQorCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlKGVsZW1lbnQsIG9wdGlv
bnMpCit7CisgICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1l
bnQsIG9wdGlvbnMpOworCisgICAgdmFyIGltYWdlU3JjID0gb3B0aW9uc1siaW1hZ2VTcmMiXSB8
fCAicmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7CisgICAgdGhpcy5pbWFnZUVsZW1lbnQgPSBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCIuaGlkZGVuW3NyYz1cIiIgKyBpbWFnZVNyYyArICJcIl0iKTsK
K30KKworQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRl
KEJvdW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFz
SW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNJbWFnZXNT
dGFnZTsKKworQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGlj
bGUgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdlKHRo
aXMpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayhzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIEJvdW5jaW5n
Q2FudmFzUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQmVu
Y2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNC
ZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrOworCitCb3Vu
Y2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlv
bihlbGVtZW50KQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZShl
bGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKword2luZG93LmJlbmNobWFya0NsaWVudC5jcmVh
dGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNz
QmFyKQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsoc3Vp
dGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1jYW52YXMtcGFydGljbGVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2lu
Zy1jYW52YXMtcGFydGljbGVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACitm
dW5jdGlvbiBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlKHN0YWdlKQoreworICAgIEJvdW5jaW5nUGFy
dGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CisgICAgdGhpcy5fY29udGV4dCA9IHN0YWdlLmNvbnRl
eHQ7CisgICAgdGhpcy5fc2hhcGUgPSAiIjsKKyAgICB0aGlzLl9jbGlwID0gc3RhZ2UuY2xpcDsK
K30KKworQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5jbGlwcyA9IHsKKyAgICBzdGFyOiBbCisgICAg
ICAgIG5ldyBQb2ludCgwLjUwLCAwLjAwKSwKKyAgICAgICAgbmV3IFBvaW50KDAuMzgsIDAuMzgp
LAorICAgICAgICBuZXcgUG9pbnQoMC4wMCwgMC4zOCksCisgICAgICAgIG5ldyBQb2ludCgwLjMw
LCAwLjYwKSwKKyAgICAgICAgbmV3IFBvaW50KDAuMTgsIDEuMDApLAorICAgICAgICBuZXcgUG9p
bnQoMC41MCwgMC43NSksCisgICAgICAgIG5ldyBQb2ludCgwLjgyLCAxLjAwKSwKKyAgICAgICAg
bmV3IFBvaW50KDAuNzAsIDAuNjApLAorICAgICAgICBuZXcgUG9pbnQoMS4wMCwgMC4zOCksCisg
ICAgICAgIG5ldyBQb2ludCgwLjYyLCAwLjM4KQorICAgIF0sCit9OworCitCb3VuY2luZ0NhbnZh
c1BhcnRpY2xlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5wcm90
b3R5cGUpOworQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBC
b3VuY2luZ0NhbnZhc1BhcnRpY2xlOworCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlw
ZS5fYXBwbHlSb3RhdGlvbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAodGhpcy5fc2hhcGUgPT0g
ImNpcmNsZSIpCisgICAgICAgIHJldHVybjsKKworICAgIHRoaXMuX2NvbnRleHQudHJhbnNsYXRl
KHRoaXMuX3NpemUueCAvIDIsIHRoaXMuX3NpemUueSAvIDIpOworICAgIHRoaXMuX2NvbnRleHQu
cm90YXRlKHRoaXMuX3JvdGF0ZXIuZGVncmVlKCkgKiBNYXRoLlBJIC8gMTgwKTsKKyAgICB0aGlz
Ll9jb250ZXh0LnRyYW5zbGF0ZSgtdGhpcy5fc2l6ZS54IC8gMiwgLXRoaXMuX3NpemUueSAvIDIp
OworfQorCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZS5fYXBwbHlDbGlwcGluZyA9
IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgY2xpcFBvaW50cyA9IEJvdW5jaW5nQ2FudmFzUGFydGlj
bGUuY2xpcHNbdGhpcy5fY2xpcF07CisgICAgaWYgKCFjbGlwUG9pbnRzKQorICAgICAgICByZXR1
cm47CisgICAgICAgIAorICAgIHRoaXMuX2NvbnRleHQuYmVnaW5QYXRoKCk7CisgICAgY2xpcFBv
aW50cy5mb3JFYWNoKGZ1bmN0aW9uKHBvaW50LCBpbmRleCkgeworICAgICAgICB2YXIgcG9pbnQg
PSB0aGlzLl9zaXplLm11bHRpcGx5KHBvaW50KTsKKyAgICAgICAgaWYgKCFpbmRleCkKKyAgICAg
ICAgICAgIHRoaXMuX2NvbnRleHQubW92ZVRvKHBvaW50LngsIHBvaW50LnkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbyhwb2ludC54LCBwb2ludC55KTsK
KyAgICB9LCB0aGlzKTsKKworICAgIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7CisgICAgdGhp
cy5fY29udGV4dC5jbGlwKCk7Cit9CisKK0JvdW5jaW5nQ2FudmFzUGFydGljbGUucHJvdG90eXBl
Ll9kcmF3ID0gZnVuY3Rpb24oKQoreworICAgIHRocm93ICJOb3QgaW1wbGVtZW50ZWQiOworfQor
CitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGlt
ZURlbHRhKQoreworICAgIEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0
aGlzLCB0aW1lRGVsdGEpOworICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgpOworICAgICAgICB0aGlz
Ll9jb250ZXh0LnRyYW5zbGF0ZSh0aGlzLl9wb3NpdGlvbi54LCB0aGlzLl9wb3NpdGlvbi55KTsK
KyAgICAgICAgdGhpcy5fZHJhdygpOworICAgIHRoaXMuX2NvbnRleHQucmVzdG9yZSgpOworfQor
CitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMp
Cit7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlv
bnMpOworICAgIHRoaXMuY29udGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOwor
fQorCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNQYXJ0
aWNsZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1BhcnRpY2xl
c1N0YWdlOworCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yKGJlbmNo
bWFyaykKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLmNhbGwodGhpcywgYmVuY2ht
YXJrKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJrLl9zdGFnZS5jb250ZXh0OworfQor
CitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNQ
YXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlc0FuaW1hdG9yOworCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yLnByb3Rv
dHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX2NvbnRleHQuY2xlYXJSZWN0
KDAsIDAsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS54LCB0aGlzLl9iZW5jaG1hcmsuX3N0
YWdlLnNpemUueSk7CisgICAgcmV0dXJuIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90
eXBlLmFuaW1hdGUuY2FsbCh0aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNQYXJ0
aWNsZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0JhcikKK3sKKyAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3VuY2luZ0NhbnZhc1BhcnRp
Y2xlc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnBy
b3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyazsKKworQm91bmNpbmdD
YW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rp
b24oKQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvcih0
aGlzKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2lu
Zy1jYW52YXMtc2hhcGVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1z
aGFwZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTAgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFz
U2hhcGUoc3RhZ2UpCit7CisgICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0
YWdlKTsKKyAgICB0aGlzLl9maWxsID0gc3RhZ2UuZmlsbDsKKyAgICB0aGlzLl9zaGFwZSA9IHN0
YWdlLnNoYXBlOworICAgIHRoaXMuX2NvbG9yMCA9IHN0YWdlLnJhbmRvbUNvbG9yKCk7CisgICAg
dGhpcy5fY29sb3IxID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsgICAgCit9CisKK0JvdW5jaW5nQ2Fu
dmFzU2hhcGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ0NhbnZhc1BhcnRpY2xl
LnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IEJvdW5jaW5nQ2FudmFzU2hhcGU7CisKK0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLl9h
cHBseUZpbGwgPSBmdW5jdGlvbigpCit7CisgICAgc3dpdGNoICh0aGlzLl9maWxsKSB7CisgICAg
Y2FzZSAiZ3JhZGllbnQiOgorICAgICAgICB2YXIgZ3JhZGllbnQgPSB0aGlzLl9jb250ZXh0LmNy
ZWF0ZUxpbmVhckdyYWRpZW50KDAsIDAsIHRoaXMuX3NpemUud2lkdGgsIDApOworICAgICAgICBn
cmFkaWVudC5hZGRDb2xvclN0b3AoMCwgdGhpcy5fY29sb3IwKTsKKyAgICAgICAgZ3JhZGllbnQu
YWRkQ29sb3JTdG9wKDEsIHRoaXMuX2NvbG9yMSk7IAorICAgICAgICB0aGlzLl9jb250ZXh0LmZp
bGxTdHlsZSA9IGdyYWRpZW50OworICAgICAgICBicmVhazsKKyAgICAKKyAgICBjYXNlICJzb2xp
ZCI6CisgICAgZGVmYXVsdDoKKyAgICAgICAgdGhpcy5fY29udGV4dC5maWxsU3R5bGUgPSB0aGlz
Ll9jb2xvcjA7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworQm91bmNpbmdDYW52YXNTaGFw
ZS5wcm90b3R5cGUuX2RyYXdTaGFwZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9jb250ZXh0
LmJlZ2luUGF0aCgpOworCisgICAgc3dpdGNoICh0aGlzLl9zaGFwZSkgeworICAgIGNhc2UgInJl
Y3QiOgorICAgICAgICB0aGlzLl9jb250ZXh0LnJlY3QoMCwgMCwgdGhpcy5fc2l6ZS53aWR0aCwg
dGhpcy5fc2l6ZS5oZWlnaHQpOworICAgICAgICBicmVhazsKKyAgICAKKyAgICBjYXNlICJjaXJj
bGUiOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHZhciBjZW50ZXIgPSB0aGlzLl9zaXplLmNlbnRl
cjsKKyAgICAgICAgdmFyIHJhZGl1cyA9IE1hdGgubWluKHRoaXMuX3NpemUueCwgdGhpcy5fc2l6
ZS55KSAvIDI7CisgICAgICAgIHRoaXMuX2NvbnRleHQuYXJjKGNlbnRlci54LCBjZW50ZXIueSwg
cmFkaXVzLCAwLCBNYXRoLlBJICogMiwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIHRoaXMuX2NvbnRleHQuZmlsbCgpOworfQorCitCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3Rv
dHlwZS5fZHJhdyA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9jb250ZXh0LnNhdmUoKTsKKyAg
ICAgICAgdGhpcy5fYXBwbHlGaWxsKCk7CisgICAgICAgIHRoaXMuX2FwcGx5Um90YXRpb24oKTsK
KyAgICAgICAgdGhpcy5fYXBwbHlDbGlwcGluZygpOworICAgICAgICB0aGlzLl9kcmF3U2hhcGUo
KTsKKyAgICB0aGlzLl9jb250ZXh0LnJlc3RvcmUoKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdD
YW52YXNTaGFwZXNTdGFnZShlbGVtZW50LCBvcHRpb25zKQoreworICAgIEJvdW5jaW5nQ2FudmFz
UGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0aGlzLnBh
cnNlU2hhcGVQYXJhbXRlcnMob3B0aW9ucyk7Cit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGVzU3Rh
Z2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdl
LnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2U7CisKK0JvdW5jaW5nQ2FudmFzU2hhcGVz
U3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlID0gZnVuY3Rpb24oKQoreworICAgIHJldHVy
biBuZXcgQm91bmNpbmdDYW52YXNTaGFwZSh0aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdD
YW52YXNTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBw
cm9ncmVzc0JhcikKK3sKKyAgICBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5jYWxs
KHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOwor
fQorCitCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3Jl
YXRlKEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSk7CitCb3VuY2lu
Z0NhbnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0Nh
bnZhc1NoYXBlc0JlbmNobWFyazsKKworQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJv
dG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKK3sKKyAgICByZXR1cm4gbmV3
IEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisK
K3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICByZXR1cm4gbmV3IEJvdW5j
aW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdlcy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmpzCShyZXZpc2lvbiAwKQor
KysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9y
ZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDYzIEBACitmdW5jdGlvbiBCb3VuY2luZ0Nzc0ltYWdlKHN0YWdlKQoreworICAgIEJvdW5jaW5n
UGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CisKKyAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSB0
aGlzLl9zaXplLnggKyAicHgiOworICAgIHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlz
Ll9zaXplLnkgKyAicHgiOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInNyYyIsIHN0
YWdlLmltYWdlU3JjKTsKKyAgICAKKyAgICBzdGFnZS5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
ZWxlbWVudCk7CisgICAgdGhpcy5fbW92ZSgpOworfQorCitCb3VuY2luZ0Nzc0ltYWdlLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUpOworQm91bmNp
bmdDc3NJbWFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0Nzc0ltYWdlOworCitC
b3VuY2luZ0Nzc0ltYWdlLnByb3RvdHlwZS5fbW92ZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlz
LmVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZSgiICsgdGhpcy5fcG9zaXRpb24u
eCArICJweCwiICsgdGhpcy5fcG9zaXRpb24ueSArICJweCkgIiArIHRoaXMuX3JvdGF0ZXIucm90
YXRlWigpOworfQorICAgIAorQm91bmNpbmdDc3NJbWFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1
bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmlt
YXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlzLl9tb3ZlKCk7Cit9CisKK2Z1bmN0
aW9uIEJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBCb3Vu
Y2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhp
cy5pbWFnZVNyYyA9IG9wdGlvbnNbImltYWdlU3JjIl0gfHwgIi4uL3Jlc291cmNlcy95aW4teWFu
Zy5zdmciOworfQorCitCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdDc3NJbWFn
ZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlOwor
CitCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0
aW9uKCkKK3sKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ3NzSW1hZ2UodGhpcyk7Cit9CisKK0Jv
dW5jaW5nQ3NzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCA9IGZ1
bmN0aW9uKHBhcnRpY2xlKQoreworICAgIHBhcnRpY2xlLmVsZW1lbnQucmVtb3ZlKCk7Cit9CisK
K2Z1bmN0aW9uIEJvdW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5j
aG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dy
ZXNzQmFyKTsKK30KKworQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOworQm91bmNp
bmdDc3NJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDc3NJ
bWFnZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5j
cmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2lu
Z0Nzc0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCit3aW5kb3cuYmVu
Y2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nzc0ltYWdl
c0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFy
KTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1zaGFwZXMuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNv
dXJjZXMvYm91bmNpbmctY3NzLXNoYXBlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5j
aW5nLWNzcy1zaGFwZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MSBAQAorZnVuY3Rp
b24gQm91bmNpbmdDc3NTaGFwZShzdGFnZSkKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwo
dGhpcywgc3RhZ2UpOworCisgICAgdGhpcy5lbGVtZW50ID0gdGhpcy5fY3JlYXRlU3BhbihzdGFn
ZSk7CisgICAgICAgIAorICAgIHN3aXRjaCAoc3RhZ2UuZmlsbCkgeworICAgIGNhc2UgInNvbGlk
IjoKKyAgICBkZWZhdWx0OgorICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENv
bG9yID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAg
IGNhc2UgImdyYWRpZW50IjoKKyAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmQg
PSAibGluZWFyLWdyYWRpZW50KCIgKyBzdGFnZS5yYW5kb21Db2xvcigpICsgIiwgIiArIHN0YWdl
LnJhbmRvbUNvbG9yKCkgKyAiKSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHRoaXMu
X21vdmUoKTsKK30KKworQm91bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRl
KEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlKTsKK0JvdW5jaW5nQ3NzU2hhcGUucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gQm91bmNpbmdDc3NTaGFwZTsKKworQm91bmNpbmdDc3NTaGFwZS5wcm90
b3R5cGUuX2NyZWF0ZVNwYW4gPSBmdW5jdGlvbihzdGFnZSkKK3sKKyAgICB2YXIgc3BhbiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBzcGFuLmNsYXNzTmFtZSA9IHN0YWdl
LnNoYXBlICsgIiAiICsgc3RhZ2UuY2xpcDsKKyAgICBzcGFuLnN0eWxlLndpZHRoID0gdGhpcy5f
c2l6ZS54ICsgInB4IjsKKyAgICBzcGFuLnN0eWxlLmhlaWdodCA9IHRoaXMuX3NpemUueSArICJw
eCI7CisgICAgc3RhZ2UuZWxlbWVudC5hcHBlbmRDaGlsZChzcGFuKTsKKyAgICByZXR1cm4gc3Bh
bjsKK30KKworQm91bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUuX21vdmUgPSBmdW5jdGlvbigpCit7
CisgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9ICJ0cmFuc2xhdGUoIiArIHRoaXMu
X3Bvc2l0aW9uLnggKyAicHgsIiArIHRoaXMuX3Bvc2l0aW9uLnkgKyAicHgpIiArIHRoaXMuX3Jv
dGF0ZXIucm90YXRlWigpOworfQorICAgIAorQm91bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUuYW5p
bWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3Rv
dHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlzLl9yb3RhdGVyLm5l
eHQodGltZURlbHRhKTsgICAgCisgICAgdGhpcy5fbW92ZSgpOworfQorCitmdW5jdGlvbiBCb3Vu
Y2luZ0Nzc1NoYXBlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7CisgICAgQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgIHRoaXMucGFyc2VT
aGFwZVBhcmFtdGVycyhvcHRpb25zKTsKK30KKworQm91bmNpbmdDc3NTaGFwZXNTdGFnZS5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsK
K0JvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdD
c3NTaGFwZXNTdGFnZTsKKworQm91bmNpbmdDc3NTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRl
UGFydGljbGUgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nzc1NoYXBl
KHRoaXMpOworfQorCitCb3VuY2luZ0Nzc1NoYXBlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdp
bGxCZVJlbW92ZWQgPSBmdW5jdGlvbihwYXJ0aWNsZSkKK3sKKyAgICBwYXJ0aWNsZS5lbGVtZW50
LnJlbW92ZSgpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyayhzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIEJvdW5j
aW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJl
Y29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJr
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJv
dG90eXBlKTsKK0JvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciA9IEJvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJrOworCitCb3VuY2luZ0Nzc1NoYXBlc0JlbmNo
bWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQoreworICAgIHJl
dHVybiBuZXcgQm91bmNpbmdDc3NTaGFwZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsK
K30KKword2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIHJldHVybiBuZXcg
Qm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRh
YmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzCShyZXZpc2lvbiAwKQor
KysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9y
ZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTMyIEBACitmdW5jdGlvbiBCb3VuY2luZ1BhcnRpY2xlKHN0YWdlKQoreworICAgIHRoaXMuX3N0
YWdlU2l6ZSA9IHN0YWdlLnNpemU7CisgICAgdGhpcy5fc2l6ZSA9IHN0YWdlLnBhcnRpY2xlU2l6
ZTsKKyAgICAKKyAgICB0aGlzLl9wb3NpdGlvbiA9IHN0YWdlLnJhbmRvbVBvc2l0aW9uKHN0YWdl
LnNpemUuc3VidHJhY3Qoc3RhZ2UucGFydGljbGVTaXplKSk7CisgICAgdGhpcy5fYW5nbGUgPSBz
dGFnZS5yYW5kb21BbmdsZSgpOworICAgIHRoaXMuX3ZlbG9jaXR5ID0gc3RhZ2UucmFuZG9tVmVs
b2NpdHkoc3RhZ2UubWF4VmVsb2NpdHkpOworICAgIHRoaXMuX3JvdGF0ZXIgPSBzdGFnZS5yYW5k
b21Sb3RhdGVyKCk7Cit9CisKK0JvdW5jaW5nUGFydGljbGUucHJvdG90eXBlID0KK3sKKyAgICBn
ZXQgY2VudGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlvbi5hZGQodGhp
cy5fc2l6ZS5jZW50ZXIpOworICAgIH0sCisgICAgCisgICAgYW5pbWF0ZTogZnVuY3Rpb24odGlt
ZURlbHRhKQorICAgIHsKKyAgICAgICAgdGhpcy5fcG9zaXRpb24gPSB0aGlzLl9wb3NpdGlvbi5t
b3ZlKHRoaXMuX2FuZ2xlLCB0aGlzLl92ZWxvY2l0eSwgdGltZURlbHRhKTsKKyAgICAgICAgdGhp
cy5fcm90YXRlci5uZXh0KHRpbWVEZWx0YSk7CisKKyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMg
Z29pbmcgdG8gbW92ZSBvZmYgcmlnaHQgc2lkZQorICAgICAgICBpZiAodGhpcy5fcG9zaXRpb24u
eCArIHRoaXMuX3NpemUueCA+IHRoaXMuX3N0YWdlU2l6ZS54KSB7CisgICAgICAgICAgICAvLyBJ
ZiBkaXJlY3Rpb24gaXMgRWFzdC1Tb3V0aAorICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID49
IDAgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJIC8gMikKKyAgICAgICAgICAgICAgICB0aGlzLl9h
bmdsZSA9IE1hdGguUEkgLSB0aGlzLl9hbmdsZTsKKyAgICAgICAgICAgIC8vIElmIGFuZ2xlIGlz
IEVhc3QtTm9ydGgKKyAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX2FuZ2xlID4gTWF0aC5QSSAv
IDIgKiAzKQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0gdGhpcy5fYW5nbGUgLSAodGhp
cy5fYW5nbGUgLSBNYXRoLlBJIC8gMiAqIDMpICogMjsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgbGVmdCBzaWRlCisgICAg
ICAgIGlmICh0aGlzLl9wb3NpdGlvbi54IDwgMCkgeworICAgICAgICAgICAgLy8gSWYgYW5nbGUg
aXMgV2VzdC1Tb3V0aAorICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID4gTWF0aC5QSSAvIDIg
JiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJKQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0g
TWF0aC5QSSAtIHRoaXMuX2FuZ2xlOworICAgICAgICAgICAgLy8gSWYgYW5nbGUgaXMgV2VzdC1O
b3J0aAorICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5fYW5nbGUgPiBNYXRoLlBJICYmIHRoaXMu
X2FuZ2xlIDwgTWF0aC5QSSAvIDIgKiAzKQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0g
dGhpcy5fYW5nbGUgKyAoTWF0aC5QSSAvIDIgKiAzIC0gdGhpcy5fYW5nbGUpICogMjsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIElmIHBhcnRpY2xlIGlzIGdvaW5nIHRvIG1vdmUgb2ZmIGJvdHRv
bSBzaWRlCisgICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbi55ICsgdGhpcy5fc2l6ZS55ID4gdGhp
cy5fc3RhZ2VTaXplLnkpIHsKKyAgICAgICAgICAgIC8vIElmIGRpcmVjdGlvbiBpcyBTb3V0aAor
ICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID4gMCAmJiB0aGlzLl9hbmdsZSA8IE1hdGguUEkp
CisgICAgICAgICAgICAgICAgdGhpcy5fYW5nbGUgPSBNYXRoLlBJICogMiAtIHRoaXMuX2FuZ2xl
OworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBv
ZmYgdG9wIHNpZGUKKyAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uLnkgPCAwKSB7CisgICAgICAg
ICAgICAvLyBJZiBkaXJlY3Rpb24gaXMgTm9ydGgKKyAgICAgICAgICAgIGlmICh0aGlzLl9hbmds
ZSA+IE1hdGguUEkgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJICogMikKKyAgICAgICAgICAgICAg
ICB0aGlzLl9hbmdsZSA9IHRoaXMuX2FuZ2xlIC0gKHRoaXMuX2FuZ2xlIC0gTWF0aC5QSSkgKiAy
OworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBCb3VuY2luZ1BhcnRpY2xlc0FuaW1h
dG9yKGJlbmNobWFyaykKK3sKKyAgICBTdGFnZUFuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJr
KTsKK307CisKK0JvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZShTdGFnZUFuaW1hdG9yLnByb3RvdHlwZSk7CitCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9y
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3I7CisKK2Z1
bmN0aW9uIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBT
dGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQpOworICAgIAorICAgIHRoaXMucGFydGljbGVTaXplID0g
bmV3IFBvaW50KHBhcnNlSW50KG9wdGlvbnNbInBhcnRpY2xlV2lkdGgiXSkgfHwgMTAsIHBhcnNl
SW50KG9wdGlvbnNbInBhcnRpY2xlSGVpZ2h0Il0pIHx8IDEwKTsKKyAgICB0aGlzLl9wYXJ0aWNs
ZXMgPSBbXTsKKworICAgIHRoaXMubWF4VmVsb2NpdHkgPSBwYXJzZUludChvcHRpb25zWyJtYXhW
ZWxvY2l0eSJdKSB8fCA1MDA7CisgICAgdGhpcy5tYXhWZWxvY2l0eSA9IE1hdGgubWF4KHRoaXMu
bWF4VmVsb2NpdHksIDEwMCk7Cit9CisKK0JvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBl
ID0gT2JqZWN0LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdQYXJ0aWNsZXNTdGFn
ZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlOworCitCb3Vu
Y2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5wYXJzZVNoYXBlUGFyYW10ZXJzID0gZnVuY3Rp
b24ob3B0aW9ucykKK3sKKyAgICB0aGlzLnNoYXBlID0gb3B0aW9uc1sic2hhcGUiXSB8fCAiY2ly
Y2xlIjsKKyAgICB0aGlzLmZpbGwgPSBvcHRpb25zWyJmaWxsIl0gfHwgInNvbGlkIjsKKyAgICB0
aGlzLmNsaXAgPSBvcHRpb25zWyJjbGlwIl0gfHwgIiI7Cit9CisKK0JvdW5jaW5nUGFydGljbGVz
U3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCit7CisgICAgdGhp
cy5fcGFydGljbGVzLmZvckVhY2goZnVuY3Rpb24ocGFydGljbGUpIHsKKyAgICAgICAgcGFydGlj
bGUuYW5pbWF0ZSh0aW1lRGVsdGEpOworICAgIH0pOworfQorICAgIAorQm91bmNpbmdQYXJ0aWNs
ZXNTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KQoreworICAgIGNvdW50ID0g
Y291bnQgPiAwID8gTWF0aC5mbG9vcihjb3VudCkgOiBNYXRoLmNlaWwoY291bnQpOworCisgICAg
aWYgKGNvdW50ID09IDApCisgICAgICAgIHJldHVybiB0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoOwor
CisgICAgaWYgKGNvdW50ID4gMCkgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YodGhp
cy5jcmVhdGVQYXJ0aWNsZSkgPT0gImZ1bmN0aW9uIik7CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX3BhcnRpY2xlcy5wdXNoKHRoaXMu
Y3JlYXRlUGFydGljbGUoKSk7CisgICAgICAgIHJldHVybiB0aGlzLl9wYXJ0aWNsZXMubGVuZ3Ro
OworICAgIH0KKworICAgIGNvdW50ID0gTWF0aC5taW4oLWNvdW50LCB0aGlzLl9wYXJ0aWNsZXMu
bGVuZ3RoKTsKKyAgICAgICAgCisgICAgaWYgKHR5cGVvZih0aGlzLnBhcnRpY2xlV2lsbEJlUmVt
b3ZlZCkgPT0gImZ1bmN0aW9uIikgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50
OyArK2kpCisgICAgICAgICAgICB0aGlzLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCh0aGlzLl9wYXJ0
aWNsZXNbdGhpcy5fcGFydGljbGVzLmxlbmd0aCAtIDEgLSBpXSk7CisgICAgfQorCisgICAgdGhp
cy5fcGFydGljbGVzLnNwbGljZSgtY291bnQsIGNvdW50KTsKKyAgICByZXR1cm4gdGhpcy5fcGFy
dGljbGVzLmxlbmd0aDsKK30KKworZnVuY3Rpb24gQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmso
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICBT
dGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5
cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7CitCb3VuY2luZ1Bh
cnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xl
c0JlbmNobWFyazsKKworQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0
ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdQYXJ0aWNs
ZXNBbmltYXRvcih0aGlzKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5n
LXN2Zy1pbWFnZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2Vz
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nU3Zn
SW1hZ2Uoc3RhZ2UpCit7CisgICAgQm91bmNpbmdTdmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdl
KTsKKyAgICB0aGlzLl9zaGFwZSA9ICJpbWFnZSI7CisgICAgCisgICAgdmFyIGF0dHJzID0geyB4
OiAwLCB5OiAwLCB3aWR0aDogdGhpcy5fc2l6ZS54LCBoZWlnaHQ6IHRoaXMuX3NpemUueSB9Owor
ICAgIHZhciB4bGlua0F0dHJzID0geyBocmVmOiBzdGFnZS5pbWFnZVNyYyB9OworICAgIHRoaXMu
ZWxlbWVudCA9IFV0aWxpdGllcy5jcmVhdGVTdmdFbGVtZW50KCJpbWFnZSIsIGF0dHJzLCB4bGlu
a0F0dHJzLCBzdGFnZS5lbGVtZW50KTsKKyAgICB0aGlzLl9tb3ZlKCk7Cit9CisKK0JvdW5jaW5n
U3ZnSW1hZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1N2Z1BhcnRpY2xlLnBy
b3RvdHlwZSk7CitCb3VuY2luZ1N2Z0ltYWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5j
aW5nU3ZnSW1hZ2U7CisKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UoZWxlbWVudCwg
b3B0aW9ucykKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVu
dCwgb3B0aW9ucyk7CisgICAgdGhpcy5pbWFnZVNyYyA9IG9wdGlvbnNbImltYWdlU3JjIl0gfHwg
InJlc291cmNlcy95aW4teWFuZy5zdmciOworfQorCitCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlLnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5
cGUpOworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3Vu
Y2luZ1N2Z0ltYWdlc1N0YWdlOworCitCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlLnByb3RvdHlwZS5j
cmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nU3Zn
SW1hZ2UodGhpcyk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrKHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgQm91
bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1h
cmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5w
cm90b3R5cGUpOworQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVj
dG9yID0gQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nU3ZnSW1hZ2VzQmVu
Y2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAg
cmV0dXJuIG5ldyBCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMp
OworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgcmV0dXJuIG5l
dyBCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3Jk
VGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1wYXJ0aWNs
ZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXBhcnRpY2xlcy5qcwkocmV2
aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1wYXJ0aWNsZXMuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw2OCBAQAorZnVuY3Rpb24gQm91bmNpbmdTdmdQYXJ0aWNsZShzdGFnZSkK
K3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworfQorCitCb3VuY2lu
Z1N2Z1BhcnRpY2xlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5w
cm90b3R5cGUpOworQm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBC
b3VuY2luZ1BhcnRpY2xlOworCitCb3VuY2luZ1N2Z1BhcnRpY2xlLnByb3RvdHlwZS5fYXBwbHlD
bGlwcGluZyA9IGZ1bmN0aW9uKHN0YWdlKQoreworICAgIGlmIChzdGFnZS5jbGlwICE9ICJzdGFy
IikKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBzdGFnZS5lbnN1cmVDbGlwU3Rhcklz
Q3JlYXRlZCgpOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImNsaXAtcGF0aCIsICJ1
cmwoI3N0YXItY2xpcCkiKTsKK30KKworQm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5cGUuX21v
dmUgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIHRyYW5zZm9ybSA9ICJ0cmFuc2xhdGUoIiArIHRo
aXMuX3Bvc2l0aW9uLnggKyAiLCAiICsgdGhpcy5fcG9zaXRpb24ueSArICIpIjsKKyAgICBpZiAo
dGhpcy5fc2hhcGUgIT0gImNpcmNsZSIpCisgICAgICAgIHRyYW5zZm9ybSArPSB0aGlzLl9yb3Rh
dGVyLnJvdGF0ZSh0aGlzLl9zaXplLmNlbnRlcik7CisgICAgdGhpcy5lbGVtZW50LnNldEF0dHJp
YnV0ZSgidHJhbnNmb3JtIiwgdHJhbnNmb3JtKTsKK30KKworQm91bmNpbmdTdmdQYXJ0aWNsZS5w
cm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAgICBCb3VuY2luZ1Bh
cnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlz
Ll9tb3ZlKCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UoZWxlbWVu
dCwgb3B0aW9ucykKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxl
bWVudCwgb3B0aW9ucyk7Cit9CisKK0JvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBl
ID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7CitCb3Vu
Y2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU3Zn
UGFydGljbGVzU3RhZ2U7CisKK0JvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLl9j
cmVhdGVEZWZzID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiBVdGlsaXRpZXMuY3JlYXRlU3Zn
RWxlbWVudCgiZGVmcyIsIHt9LCB7fSwgdGhpcy5lbGVtZW50KTsKK30KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorQm91bmNp
bmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuX2Vuc3VyZURlZnNJc0NyZWF0ZWQgPSBmdW5j
dGlvbigpCit7CisgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKCJkZWZzIikg
fHwgdGhpcy5fY3JlYXRlRGVmcygpOworfQorCitCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnBy
b3RvdHlwZS5fY3JlYXRlQ2xpcFN0YXIgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIGF0dHJzID0g
eyBpZDogInN0YXItY2xpcCIsIGNsaXBQYXRoVW5pdHM6ICJvYmplY3RCb3VuZGluZ0JveCIgfTsK
KyAgICB2YXIgY2xpcFBhdGggID0gVXRpbGl0aWVzLmNyZWF0ZVN2Z0VsZW1lbnQoImNsaXBQYXRo
IiwgYXR0cnMsIHt9LCB0aGlzLl9lbnN1cmVEZWZzSXNDcmVhdGVkKCkpOworCisgICAgYXR0cnMg
PSB7IGQ6ICJNLjUwLDBMLjM4LC4zOEwwLC4zOEwuMzAsLjYwTC4xOCwxTC41MCwuNzVMLjgyLDFM
LjcwLC42MEwxLC4zOEwuNjIsLjM4eiIgfTsKKyAgICBVdGlsaXRpZXMuY3JlYXRlU3ZnRWxlbWVu
dCgicGF0aCIsIGF0dHJzLCB7fSwgY2xpcFBhdGgpOworICAgIHJldHVybiBjbGlwUGF0aDsKK30K
KworQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuZW5zdXJlQ2xpcFN0YXJJc0Ny
ZWF0ZWQgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5xdWVyeVNlbGVj
dG9yKCIjc3Rhci1jbGlwIikgfHwgdGhpcy5fY3JlYXRlQ2xpcFN0YXIoKTsKK30KKworQm91bmNp
bmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkID0gZnVu
Y3Rpb24ocGFydGljbGUpCit7CisgICAgcGFydGljbGUuZWxlbWVudC5yZW1vdmUoKTsKK30KSW5k
ZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
cmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91
bmNpbmctc3ZnLXNoYXBlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1z
aGFwZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQgQEAKK2Z1bmN0aW9uIEJvdW5j
aW5nU3ZnU2hhcGUoc3RhZ2UpCit7CisgICAgQm91bmNpbmdTdmdQYXJ0aWNsZS5jYWxsKHRoaXMs
IHN0YWdlKTsKKyAgICB0aGlzLl9zaGFwZSA9IHN0YWdlLnNoYXBlOworICAgIHRoaXMuX2ZpbGwg
PSBzdGFnZS5maWxsOworICAgIAorICAgIHRoaXMuX2NyZWF0ZVNoYXBlKHN0YWdlKTsKKyAgICB0
aGlzLl9hcHBseUNsaXBwaW5nKHN0YWdlKTsKKyAgICB0aGlzLl9hcHBseUZpbGwoc3RhZ2UpOwor
CisgICAgdGhpcy5fbW92ZSgpOyAgICAKK30KKworQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBlKTsKK0JvdW5jaW5n
U3ZnU2hhcGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdTaGFwZTsKKworQm91
bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVNoYXBlID0gZnVuY3Rpb24oc3RhZ2UpCit7
CisgICAgc3dpdGNoICh0aGlzLl9zaGFwZSkgeworICAgIGNhc2UgInJlY3QiOgorICAgICAgICB2
YXIgYXR0cnMgPSB7IHg6IDAsIHk6IDAsIHdpZHRoOiB0aGlzLl9zaXplLngsIGhlaWdodDogdGhp
cy5fc2l6ZS55IH07CisgICAgICAgIHRoaXMuZWxlbWVudCA9IFV0aWxpdGllcy5jcmVhdGVTdmdF
bGVtZW50KCJyZWN0IiwgYXR0cnMsIHt9LCBzdGFnZS5lbGVtZW50KTsKKyAgICAgICAgYnJlYWs7
CisgICAgCisgICAgY2FzZSAiY2lyY2xlIjoKKyAgICBkZWZhdWx0OgorICAgICAgICB2YXIgYXR0
cnMgPSB7IGN4OiB0aGlzLl9zaXplLnggLyAyLCBjeTogdGhpcy5fc2l6ZS55IC8gMiwgcjogTWF0
aC5taW4odGhpcy5fc2l6ZS54LCB0aGlzLl9zaXplLnkpIC8gMiB9OworICAgICAgICB0aGlzLmVs
ZW1lbnQgPSBVdGlsaXRpZXMuY3JlYXRlU3ZnRWxlbWVudCgiY2lyY2xlIiwgYXR0cnMsIHt9LCBz
dGFnZS5lbGVtZW50KTsKKyAgICAgICAgYnJlYWs7ICAgICAgICAKKyAgICB9Cit9CisKK0JvdW5j
aW5nU3ZnU2hhcGUucHJvdG90eXBlLl9hcHBseUZpbGwgPSBmdW5jdGlvbihzdGFnZSkKK3sKKyAg
ICBzd2l0Y2ggKHRoaXMuX2ZpbGwpIHsKKyAgICBjYXNlICJncmFkaWVudCI6CisgICAgICAgIHZh
ciBncmFkaWVudCA9IHN0YWdlLmNyZWF0ZUdyYWRpZW50KDIpOworICAgICAgICB0aGlzLmVsZW1l
bnQuc2V0QXR0cmlidXRlKCJmaWxsIiwgInVybCgjIiArIGdyYWRpZW50LmdldEF0dHJpYnV0ZSgi
aWQiKSArICIpIik7CisgICAgICAgIGJyZWFrOworICAgIAorICAgIGNhc2UgInNvbGlkIjoKKyAg
ICBkZWZhdWx0OgorICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJmaWxsIiwgc3Rh
Z2UucmFuZG9tQ29sb3IoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworZnVuY3Rpb24g
Qm91bmNpbmdTdmdTaGFwZXNTdGFnZShlbGVtZW50LCBvcHRpb25zKQoreworICAgIEJvdW5jaW5n
U3ZnUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0aGlz
LnBhcnNlU2hhcGVQYXJhbXRlcnMob3B0aW9ucyk7CisgICAgdGhpcy5fZ3JhZGllbnRzQ291bnQg
PSAwOworfQorCitCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdTdmdTaGFw
ZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCitCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVHcmFkaWVudCA9
IGZ1bmN0aW9uKHN0b3BzKQoreworICAgIHZhciBhdHRycyA9IHsgaWQ6ICJnYWRpZW50LSIgKyAr
K3RoaXMuX2dyYWRpZW50c0NvdW50IH07CisgICAgdmFyIGdyYWRpZW50ID0gVXRpbGl0aWVzLmNy
ZWF0ZVN2Z0VsZW1lbnQoImxpbmVhckdyYWRpZW50IiwgYXR0cnMsIHt9LCB0aGlzLl9lbnN1cmVE
ZWZzSXNDcmVhdGVkKCkpOyAgICAKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0b3Bz
OyArK2kpIHsKKyAgICAgICAgYXR0cnMgPSB7IG9mZnNldDogaSAqIDEwMCAvIHN0b3BzICsgIiUi
LCAnc3RvcC1jb2xvcic6IHRoaXMucmFuZG9tQ29sb3IoKSB9OworICAgICAgICBVdGlsaXRpZXMu
Y3JlYXRlU3ZnRWxlbWVudCgic3RvcCIsIGF0dHJzLCB7fSwgZ3JhZGllbnQpOworICAgIH0KKwor
ICAgIHJldHVybiBncmFkaWVudDsKK30KKworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5
cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2lu
Z1N2Z1NoYXBlKHRoaXMpOworfQorCitCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5w
YXJ0aWNsZVdpbGxCZVJlbW92ZWQgPSBmdW5jdGlvbihwYXJ0aWNsZSkKK3sKKyAgICBCb3VuY2lu
Z1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQuY2FsbCh0
aGlzLCBwYXJ0aWNsZSk7CisKKyAgICB2YXIgZmlsbCA9IHBhcnRpY2xlLmVsZW1lbnQuZ2V0QXR0
cmlidXRlKCJmaWxsIik7CisgICAgaWYgKGZpbGwuaW5kZXhPZigidXJsKCMiKSAhPSAwKQorICAg
ICAgICByZXR1cm47CisgICAgICAgIAorICAgIHZhciBncmFkaWVudCA9IHRoaXMuZWxlbWVudC5x
dWVyeVNlbGVjdG9yKGZpbGwuc3Vic3RyaW5nKDQsIGZpbGwubGVuZ3RoIC0gMSkpOworICAgIHRo
aXMuX2Vuc3VyZURlZnNJc0NyZWF0ZWQoKS5yZW1vdmVDaGlsZChncmFkaWVudCk7Cit9CisKK2Z1
bmN0aW9uIEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBy
ZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1h
cmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNz
QmFyKTsKK30KKworQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOworQm91bmNpbmdT
dmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdTaGFw
ZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVh
dGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2
Z1NoYXBlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCit3aW5kb3cuYmVuY2ht
YXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRU
YWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBlc0Jl
bmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsK
K30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFp
bi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVz
b3VyY2VzL21haW4uanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNDIg
QEAKK2Z1bmN0aW9uIEJlbmNobWFya1N0YXRlKHRlc3RJbnRlcnZhbCkKK3sKKyAgICB0aGlzLl9j
dXJyZW50VGltZU9mZnNldCA9IDA7CisgICAgdGhpcy5fc3RhZ2VJbnRlcnZhbCA9IHRlc3RJbnRl
cnZhbCAvIEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRDsKK30KKworLy8gVGhlIGVudW0g
dmFsdWVzIGFuZCB0aGUgbWVzc2FnZXMgc2hvdWxkIGJlIGluIHRoZSBzYW1lIG9yZGVyCitCZW5j
aG1hcmtTdGF0ZS5zdGFnZXMgPSB7CisgICAgV0FSTUlOR19VUDogMCwKKyAgICBTQU1QTElORzog
MSwKKyAgICBGSU5JU0hFRDogMiwKKyAgICBtZXNzYWdlczogWyAiV2FybWluZyB1cCIsICJTYW1w
bGluZyIsICJGaW5pc2hlZCIgXQorfQorCitCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUgPQorewor
ICAgIF90aW1lT2Zmc2V0OiBmdW5jdGlvbihzdGFnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBz
dGFnZSAqIHRoaXMuX3N0YWdlSW50ZXJ2YWw7CisgICAgfSwKKyAgICAKKyAgICBfbWVzc2FnZTog
ZnVuY3Rpb24oc3RhZ2UsIHRpbWVPZmZzZXQpCisgICAgeworICAgICAgICBpZiAoc3RhZ2UgPT0g
QmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEKQorICAgICAgICAgICAgcmV0dXJuIEJlbmNo
bWFya1N0YXRlLnN0YWdlcy5tZXNzYWdlc1tzdGFnZV07CisKKyAgICAgICAgcmV0dXJuIEJlbmNo
bWFya1N0YXRlLnN0YWdlcy5tZXNzYWdlc1tzdGFnZV0gKyAiLi4uICgiCisgICAgICAgICAgICAr
IE1hdGguZmxvb3IoKHRpbWVPZmZzZXQgLSB0aGlzLl90aW1lT2Zmc2V0KHN0YWdlKSkgLyAxMDAw
KSArICIvIgorICAgICAgICAgICAgKyBNYXRoLmZsb29yKCh0aGlzLl90aW1lT2Zmc2V0KHN0YWdl
ICsgMSkgLSB0aGlzLl90aW1lT2Zmc2V0KHN0YWdlKSkgLyAxMDAwKSArICIpIjsKKyAgICB9LAor
ICAgIAorICAgIHVwZGF0ZTogZnVuY3Rpb24oY3VycmVudFRpbWVPZmZzZXQpCisgICAgeworICAg
ICAgICB0aGlzLl9jdXJyZW50VGltZU9mZnNldCA9IGN1cnJlbnRUaW1lT2Zmc2V0OworICAgIH0s
CisgICAgCisgICAgc2FtcGxpbmdUaW1lT2Zmc2V0OiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fdGltZU9mZnNldChCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuU0FNUExJTkcp
OworICAgIH0sCisgICAgCisgICAgY3VycmVudFN0YWdlOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICBmb3IgKHZhciBzdGFnZSA9IEJlbmNobWFya1N0YXRlLnN0YWdlcy5XQVJNSU5HX1VQOyBz
dGFnZSA8IEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRDsgKytzdGFnZSkgeworICAgICAg
ICAgICAgaWYgKHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IDwgdGhpcy5fdGltZU9mZnNldChzdGFn
ZSArIDEpKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGFnZTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEOworICAgIH0sCisgICAgCisg
ICAgY3VycmVudE1lc3NhZ2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9tZXNzYWdlKHRoaXMuY3VycmVudFN0YWdlKCksIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0KTsK
KyAgICB9LAorICAgIAorICAgIGN1cnJlbnRQcm9ncmVzczogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IC8gdGhpcy5fdGltZU9mZnNldChC
ZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQpOworICAgIH0KK30KKworZnVuY3Rpb24gQW5p
bWF0b3IoYmVuY2htYXJrKQoreworICAgIHRoaXMuX2JlbmNobWFyayA9IGJlbmNobWFyazsKKyAg
ICB0aGlzLl9mcmFtZUNvdW50ID0gMDsKKyAgICB0aGlzLl9kcm9wRnJhbWVDb3VudCA9IDE7Cisg
ICAgdGhpcy5fbWVhc3VyZUZyYW1lQ291bnQgPSAzOyAKKyAgICB0aGlzLl9yZWZlcmVuY2VUaW1l
ID0gMDsKKyAgICB0aGlzLl9jdXJyZW50VGltZU9mZnNldCA9IDA7CisgICAgdGhpcy5fZXN0aW1h
dG9yID0gbmV3IEthbG1hbkVzdGltYXRvcigpOworfQorCitBbmltYXRvci5wcm90b3R5cGUgPQor
eworICAgIHN0YXJ0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9pbnRlcnZhbElk
ID0gc2V0SW50ZXJ2YWwodGhpcy5hbmltYXRlLmJpbmQodGhpcyksIDEpOworICAgIH0sCisgICAg
CisgICAgdGltZURlbHRhOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
Y3VycmVudFRpbWVPZmZzZXQgLSB0aGlzLl9zdGFydFRpbWVPZmZzZXQ7CisgICAgfSwKKyAgICAK
KyAgICBhbmltYXRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgY3VycmVudFRpbWUg
PSBwZXJmb3JtYW5jZS5ub3coKTsKKyAgICAgICAgCisgICAgICAgIGlmICghdGhpcy5fcmVmZXJl
bmNlVGltZSkKKyAgICAgICAgICAgIHRoaXMuX3JlZmVyZW5jZVRpbWUgPSBjdXJyZW50VGltZTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgPSBjdXJy
ZW50VGltZSAtIHRoaXMuX3JlZmVyZW5jZVRpbWU7CisKKyAgICAgICAgaWYgKCF0aGlzLl9mcmFt
ZUNvdW50KQorICAgICAgICAgICAgdGhpcy5fc3RhcnRUaW1lT2Zmc2V0ID0gdGhpcy5fY3VycmVu
dFRpbWVPZmZzZXQ7CisKKyAgICAgICAgLy8gU3RhcnQgbWVhc3VyaW5nIGFmdGVyIGRyb3BwaW5n
IF9kcm9wRnJhbWVDb3VudCBmcmFtZXMuCisgICAgICAgIGlmICh0aGlzLl9mcmFtZUNvdW50ID09
IHRoaXMuX2Ryb3BGcmFtZUNvdW50KQorICAgICAgICAgICAgdGhpcy5fbWVhc3VyZVRpbWVPZmZz
ZXQgPSB0aGlzLl9jdXJyZW50VGltZU9mZnNldDsKKworICAgICAgICArK3RoaXMuX2ZyYW1lQ291
bnQ7CisKKyAgICAgICAgLy8gRHJvcCBfZHJvcEZyYW1lQ291bnQgZnJhbWVzIGFuZCBtZWFzdXJl
IHRoZSBhdmVyYWdlIG9mIF9tZWFzdXJlRnJhbWVDb3VudCBmcmFtZXMuCisgICAgICAgIGlmICh0
aGlzLl9mcmFtZUNvdW50IDwgdGhpcy5fZHJvcEZyYW1lQ291bnQgKyB0aGlzLl9tZWFzdXJlRnJh
bWVDb3VudCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIC8vIEdldCB0aGUg
YXZlcmFnZSBGUFMgb2YgX21lYXN1cmVGcmFtZUNvdW50IGZyYW1lcyBvdmVyIG1lYXN1cmVUaW1l
RGVsdGEuCisgICAgICAgIHZhciBtZWFzdXJlVGltZURlbHRhID0gdGhpcy5fY3VycmVudFRpbWVP
ZmZzZXQgLSB0aGlzLl9tZWFzdXJlVGltZU9mZnNldDsKKyAgICAgICAgdmFyIGN1cnJlbnRGcmFt
ZVJhdGUgPSBNYXRoLmZsb29yKDEwMDAgLyAobWVhc3VyZVRpbWVEZWx0YSAvIHRoaXMuX21lYXN1
cmVGcmFtZUNvdW50KSk7CisgICAgICAgICAKKyAgICAgICAgLy8gVXNlIEthbG1hbiBmaWx0ZXIg
dG8gZ2V0IGEgbW9yZSBub24tZmx1Y3R1YXRpbmcgZnJhbWUgcmF0ZS4KKyAgICAgICAgaWYgKHRo
aXMuX2JlbmNobWFyay5vcHRpb25zLmVzdGltYXRlZEZyYW1lUmF0ZSkKKyAgICAgICAgICAgIGN1
cnJlbnRGcmFtZVJhdGUgPSB0aGlzLl9lc3RpbWF0b3IuZXN0aW1hdGUobWVhc3VyZVRpbWVEZWx0
YSwgY3VycmVudEZyYW1lUmF0ZSk7CisgICAgICAgIAorICAgICAgICAvLyBBZGp1c3QgdGhlIHRl
c3QgdG8gcmVhY2ggdGhlIGRlc2lyZWQgRlBTLgorICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5f
YmVuY2htYXJrLnVwZGF0ZSh0aGlzLl9jdXJyZW50VGltZU9mZnNldCwgdGhpcy50aW1lRGVsdGEo
KSwgY3VycmVudEZyYW1lUmF0ZSk7CisgICAgICAgIAorICAgICAgICAvLyBTdG9wIHRoZSBhbmlt
YXRvciBpZiB0aGUgYmVuY2htYXJrIGhhcyBmaW5pc2hlZC4KKyAgICAgICAgaWYgKCFyZXN1bHQg
JiYgdHlwZW9mIHRoaXMuX2ludGVydmFsSWQgIT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICBj
bGVhckludGVydmFsKHRoaXMuX2ludGVydmFsSWQpOworCisgICAgICAgIC8vIFN0YXJ0IHRoZSBu
ZXh0IGRyb3AvbWVhc3VyZSBjeWNsZS4KKyAgICAgICAgdGhpcy5fZnJhbWVDb3VudCA9IDA7Cisg
ICAgICAgIAorICAgICAgICAvLyByZXN1bHQgbWF5IHN0b3AgdGhlIGFuaW1hdG9yIGlmIHJlcXVl
c3RBbmltYXRpb25GcmFtZSgpIGhhcyBiZWVuIHVzZWQuCisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfSwKKyAgICAKKyAgICBhbmltYXRlTG9vcDogZnVuY3Rpb24odGltZXN0YW1wKQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMuYW5pbWF0ZSgpKQorICAgICAgICAgICAgcmVxdWVzdEFuaW1h
dGlvbkZyYW1lKHRoaXMuYW5pbWF0ZUxvb3AuYmluZCh0aGlzKSk7CisgICAgfQorfQorCitmdW5j
dGlvbiBCZW5jaG1hcmsob3B0aW9ucykKK3sKKyAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9uczsK
KyAgICB0aGlzLl9tZXRob2QgPSB0aGlzLl9vcHRpb25zWyJtZXRob2QiXSB8fCAicmVxdWVzdEFu
aW1hdGlvbkZyYW1lIjsKKworICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7CisgICAgdGhpcy5f
cmVjb3JkSW50ZXJ2YWwgPSAyMDA7ICAgIAorICAgIHRoaXMuX2lzU2FtcGxpbmcgPSBmYWxzZTsK
KworICAgIHZhciBnYWluID0gcGFyc2VJbnQodGhpcy5fb3B0aW9uc1siZ2FpbiJdKSB8fCAxOwor
ICAgIHZhciBsb3dWYWx1ZSA9IC1wYXJzZUludCh0aGlzLl9vcHRpb25zWyJhZGRMaW1pdCJdKSB8
fCAxOworICAgIHZhciBoaWdoVmFsdWUgPSBwYXJzZUludCh0aGlzLl9vcHRpb25zWyJyZW1vdmVM
aW1pdCJdKSB8fCAxOworICAgIAorICAgIHRoaXMuX2NvbnRyb2xsZXIgPSBuZXcgUElEQ29udHJv
bGxlcihnYWluLCBvcHRpb25zLmZyYW1lUmF0ZSwgbG93VmFsdWUsIGhpZ2hWYWx1ZSk7CisgICAg
dGhpcy5fc2FtcGxlciA9IG5ldyBTYW1wbGVyKDIpOworICAgIHRoaXMuX3N0YXRlID0gbmV3IEJl
bmNobWFya1N0YXRlKHRoaXMub3B0aW9ucy50ZXN0SW50ZXJ2YWwpOyAgICAKK30KKworQmVuY2ht
YXJrLnByb3RvdHlwZSA9Cit7CisgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGxvYWQgZXZlbnQgbGlz
dGVuZXIgb3IgZnJvbSB0aGlzLnJ1bigpLgorICAgIHN0YXJ0OiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICBpZiAodGhpcy5fbWV0aG9kID09ICJzZXRJbnRlcnZhbCIpCisgICAgICAgICAgICB0
aGlzLl9hbmltYXRvci5zdGFydCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9h
bmltYXRvci5hbmltYXRlTG9vcCgpOworICAgIH0sCisgICAgCisgICAgLy8gQ2FsbGVkIGZyb20g
dGhlIGFuaW1hdG9yIHRvIGFkanVzdCB0aGUgY29tcGxleGl0eSBvZiB0aGUgdGVzdC4KKyAgICB1
cGRhdGU6IGZ1bmN0aW9uKGN1cnJlbnRUaW1lT2Zmc2V0LCB0aW1lRGVsdGEsIGN1cnJlbnRGcmFt
ZVJhdGUpCisgICAgeworICAgICAgICB0aGlzLl9zdGF0ZS51cGRhdGUoY3VycmVudFRpbWVPZmZz
ZXQpOworICAgICAgICAKKyAgICAgICAgdmFyIHN0YWdlID0gdGhpcy5fc3RhdGUuY3VycmVudFN0
YWdlKCk7CisgICAgICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNI
RUQpIHsKKyAgICAgICAgICAgIHRoaXMuY2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFn
ZXMuU0FNUExJTkcgJiYgIXRoaXMuX2lzU2FtcGxpbmcpIHsKKyAgICAgICAgICAgIHRoaXMuX3Nh
bXBsZXIuc3RhcnRTYW1wbGluZyh0aGlzLl9zdGF0ZS5zYW1wbGluZ1RpbWVPZmZzZXQoKSk7Cisg
ICAgICAgICAgICB0aGlzLl9pc1NhbXBsaW5nID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAg
IHZhciB0dW5lVmFsdWUgPSAwOworICAgICAgICBpZiAoISh0aGlzLl9pc1NhbXBsaW5nICYmIHRo
aXMub3B0aW9ucy5maXhUZXN0Q29tcGxleGl0eSkpIHsKKyAgICAgICAgICAgIC8vIFRoZSByZWxh
dGlvbnNoaXAgYmV0d2VlbiBmcmFtZVJhdGUgYW5kIHRlc3QgY29tcGxleGl0eSBpcyBpbnZlcnNl
LXByb3BvcnRpb25hbCBzbyB3ZQorICAgICAgICAgICAgLy8gbmVlZCB0byB1c2UgdGhlIG5lZ2F0
aXZlIG9mIFBJRENvbnRyb2xsZXIudHVuZSgpIHRvIGNoYW5nZSB0aGUgY29tcGxleGl0eSBvZiB0
aGUgdGVzdC4KKyAgICAgICAgICAgIHR1bmVWYWx1ZSA9IC10aGlzLl9jb250cm9sbGVyLnR1bmUo
Y3VycmVudEZyYW1lUmF0ZSwgdGltZURlbHRhIC8gMTAwMCk7CisgICAgICAgIH0KKworICAgICAg
ICB2YXIgY3VycmVudENvbXBsZXhpdHkgPSB0aGlzLnR1bmUodHVuZVZhbHVlKTsKKyAgICAgICAg
dGhpcy5yZWNvcmQoY3VycmVudFRpbWVPZmZzZXQsIGN1cnJlbnRDb21wbGV4aXR5LCBjdXJyZW50
RnJhbWVSYXRlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKyAgICAKKyAgICByZWNv
cmQ6IGZ1bmN0aW9uKGN1cnJlbnRUaW1lT2Zmc2V0LCBjdXJyZW50Q29tcGxleGl0eSwgY3VycmVu
dEZyYW1lUmF0ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3NhbXBsZXIuc2FtcGxlKGN1cnJlbnRU
aW1lT2Zmc2V0LCBbY3VycmVudENvbXBsZXhpdHksIGN1cnJlbnRGcmFtZVJhdGVdKTsKKyAgICAg
ICAgCisgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fcmVjb3JkVGltZU9mZnNldCA9PSAidW5kZWZp
bmVkIikKKyAgICAgICAgICAgIHRoaXMuX3JlY29yZFRpbWVPZmZzZXQgPSBjdXJyZW50VGltZU9m
ZnNldDsKKworICAgICAgICB2YXIgc3RhZ2UgPSB0aGlzLl9zdGF0ZS5jdXJyZW50U3RhZ2UoKTsK
KyAgICAgICAgaWYgKHN0YWdlICE9IEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRCAmJiBj
dXJyZW50VGltZU9mZnNldCA8IHRoaXMuX3JlY29yZFRpbWVPZmZzZXQgKyB0aGlzLl9yZWNvcmRJ
bnRlcnZhbCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLnNob3dSZXN1bHRz
KHRoaXMuX3N0YXRlLmN1cnJlbnRNZXNzYWdlKCksIHRoaXMuX3N0YXRlLmN1cnJlbnRQcm9ncmVz
cygpKTsKKyAgICAgICAgdGhpcy5fcmVjb3JkVGltZU9mZnNldCA9IGN1cnJlbnRUaW1lT2Zmc2V0
OworICAgIH0sCisgICAgCisgICAgcnVuOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlz
LnN0YXJ0KCk7CisKKyAgICAgICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAg
ICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICBmdW5jdGlvbiByZXNvbHZlV2hlbkZpbmlz
aGVkKCkgeworICAgICAgICAgICAgaWYgKHR5cGVvZiBzZWxmLl9zdGF0ZSAhPSAidW5kZWZpbmVk
IiAmJiAoc2VsZi5fc3RhdGUuY3VycmVudFN0YWdlKCkgPT0gQmVuY2htYXJrU3RhdGUuc3RhZ2Vz
LkZJTklTSEVEKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZS5yZXNvbHZlKHNlbGYu
X3NhbXBsZXIpOworICAgICAgICAgICAgc2V0VGltZW91dChyZXNvbHZlV2hlbkZpbmlzaGVkLmJp
bmQoc2VsZiksIDUwKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmVzb2x2ZVdoZW5G
aW5pc2hlZCgpOworICAgICAgICByZXR1cm4gcHJvbWlzZTsKKyAgICB9Cit9CisKK3dpbmRvdy5i
ZW5jaG1hcmtDbGllbnQgPSB7fTsKKworLy8gVGhpcyBldmVudCBsaXN0ZW5lciBydW5zIHRoZSB0
ZXN0IGlmIGl0IGlzIGxvYWRlZCBvdXRzaWRlIHRoZSBiZW5jaG1hcmsgcnVubmVyLgord2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpCit7CisgICAgaWYgKHdpbmRvdy5z
ZWxmICE9PSB3aW5kb3cudG9wKQorICAgICAgICByZXR1cm47CisgICAgd2luZG93LmJlbmNobWFy
ayA9IHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKG51bGwsIG51bGwsIDMwMDAwLCA1MCwg
bnVsbCwgbnVsbCk7CisgICAgd2luZG93LmJlbmNobWFyay5zdGFydCgpOworfSk7CisKKy8vIFRo
aXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIHN1aXRlIGNvbnRyb2xsZXIgcnVuLWNhbGxi
YWNrIHdoZW4gcnVubmluZyB0aGUgYmVuY2htYXJrIHJ1bm5lci4KK3dpbmRvdy5ydW5CZW5jaG1h
cmsgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNz
QmFyKQoreworICAgIHZhciBtZXJnZWRPcHRpb25zID0gVXRpbGl0aWVzLm1lcmdlT2JqZWN0cyhv
cHRpb25zLCBVdGlsaXRpZXMucGFyc2VQYXJhbWV0ZXJzKCkpOworICAgIHdpbmRvdy5iZW5jaG1h
cmsgPSB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZShzdWl0ZSwgdGVzdCwgbWVyZ2VkT3B0
aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICByZXR1cm4gd2luZG93LmJlbmNo
bWFyay5ydW4oKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9y
ZXNvdXJjZXMvbWF0aC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanMJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwyNzQgQEAKK3ZhciBNYXRyaXggPQoreworICAgIGluaXQ6IGZ1bmN0aW9uKG0sIG4s
IHYpCisgICAgeworICAgICAgICByZXR1cm4gQXJyYXkobSAqIG4pLmZpbGwodik7CisgICAgfSwK
KyAgICAKKyAgICB6ZXJvczogZnVuY3Rpb24obSwgbikKKyAgICB7CisgICAgICAgIHJldHVybiBN
YXRyaXguaW5pdChtLCBuLCAwKTsKKyAgICB9LAorICAgIAorICAgIG9uZXM6IGZ1bmN0aW9uKG0s
IG4pCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LmluaXQobSwgbiwgMSk7CisgICAgfSwK
KyAgICAKKyAgICBpZGVudGl0eTogZnVuY3Rpb24obikKKyAgICB7CisgICAgICAgIHZhciBvdXQg
PSBuZXcgTWF0cml4Lnplcm9zKG4sIG4pOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47
ICsraSkKKyAgICAgICAgICAgIG91dFtpICogbiArIGldID0gMTsKKyAgICAgICAgcmV0dXJuIG91
dDsKKyAgICB9LAorICAgIAorICAgIHN0cjogZnVuY3Rpb24oQSwgbiwgbSkKKyAgICB7CisgICAg
ICAgIHZhciBvdXQgPSAobSA+IDEgJiYgbiA+IDEgPyAiTWF0cml4WyIgKyBuICsgIiwgIiArIG0g
OiAiVmVjdG9yWyIgKyBtICogbikgKyAiXSA9IFsiOworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IG4gKiBtOyArK2kpIHsKKyAgICAgICAgICAgIG91dCArPSBBW2ldOworICAgICAgICAgICAg
aWYgKGkgPCBuICogbSAtIDEpCisgICAgICAgICAgICAgICAgb3V0ICs9ICIsICI7CisgICAgICAg
IH0gICAgICAgCisgICAgICAgIHJldHVybiBvdXQgKyAiXSI7CisgICAgfSwKKyAgICAKKyAgICBw
b3M6IGZ1bmN0aW9uKG0sIGksIGopCisgICAgeworICAgICAgICByZXR1cm4gbSAqIGkgKyBqOwor
ICAgIH0sCisgICAgCisgICAgYWRkOiBmdW5jdGlvbihBLCBCLCBuLCBtKQorICAgIHsKKyAgICAg
ICAgdmFyIG91dCA9IE1hdHJpeC56ZXJvcyhuLCBtKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBuICogbTsgKytpKQorICAgICAgICAgICAgb3V0W2ldID0gQVtpXSArIEJbaV07CisgICAg
ICAgIHJldHVybiBvdXQ7CisgICAgfSwKKyAgICAKKyAgICBzdWJ0cmFjdDogZnVuY3Rpb24oQSwg
QiwgbiwgbSkKKyAgICB7CisgICAgICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3MobiwgbSk7Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbiAqIG07ICsraSkKKyAgICAgICAgICAgIG91dFtp
XSA9IEFbaV0gLSBCW2ldOworICAgICAgICByZXR1cm4gb3V0OworICAgIH0sCisgICAgCisgICAg
c2NhbGU6IGZ1bmN0aW9uKHMsIEEsIG4sIG0pCisgICAgeworICAgICAgICB2YXIgb3V0ID0gTWF0
cml4Lnplcm9zKG4sIG0pOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4gKiBtOyArK2kp
CisgICAgICAgICAgICBvdXRbaV0gPSBzICogQVtpXTsKKyAgICAgICAgcmV0dXJuIG91dDsKKyAg
ICB9LAorICAgIAorICAgIHRyYW5zcG9zZTogZnVuY3Rpb24oQSwgbiwgbSkKKyAgICB7CisgICAg
ICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3MobSwgbik7CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbjsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG07ICsraikK
KyAgICAgICAgICAgICAgICBvdXRbTWF0cml4LnBvcyhuLCBpLCBqKV0gPSBBW01hdHJpeC5wb3Mo
bSwgaiwgaSldOworICAgICAgICB9ICAgICAgIAorICAgICAgICByZXR1cm4gb3V0OworICAgIH0s
CisgICAgCisgICAgbXVsdGlwbHk6IGZ1bmN0aW9uKEEsIEIsIG4sIG0sIHApCisgICAgeworICAg
ICAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIHApOworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IG47ICsraSkgeworICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwOyArK2op
IHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IG07ICsraykgeworICAgICAg
ICAgICAgICAgICAgICBvdXRbTWF0cml4LnBvcyhwLCBpLCBqKV0gKz0gQVtNYXRyaXgucG9zKG0s
IGksIGspXSAqIEJbTWF0cml4LnBvcyhwLCBrLCBqKV07CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBvdXQ7CisgICAgfQorfQorCit2
YXIgVmVjdG9yMyA9Cit7CisgICAgemVyb3M6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBNYXRyaXguemVyb3MoMSwgMyk7CisgICAgfSwKKyAgICAKKyAgICBvbmVzOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4Lm9uZXMoMSwgMyk7CisgICAgfSwKKyAg
ICAKKyAgICBzdHI6IGZ1bmN0aW9uKHYpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LnN0
cih2LCAxLCAzKTsKKyAgICB9LAorICAgIAorICAgIGFkZDogZnVuY3Rpb24odiwgdykKKyAgICB7
CisgICAgICAgIHJldHVybiBNYXRyaXguYWRkKHYsIHcsIDEsIDMpOworICAgIH0sCisgICAgCisg
ICAgc3VidHJhY3Q6IGZ1bmN0aW9uKHYsIHcpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4
LnN1YnRyYWN0KHYsIHcsIDEsIDMpOworICAgIH0sCisgICAgCisgICAgc2NhbGU6IGZ1bmN0aW9u
KHMsIHYpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LnNjYWxlKHMsIHYsIDEsIDMpOwor
ICAgIH0sCisgICAgCisgICAgbXVsdGlwbHlNYXRyaXgzOiBmdW5jdGlvbih2LCBBKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIE1hdHJpeC5tdWx0aXBseSh2LCBBLCAxLCAzLCAzKTsKKyAgICB9LAor
ICAgIAorICAgIG11bHRpcGx5VmVjdG9yMzogZnVuY3Rpb24odiwgdykKKyAgICB7CisgICAgICAg
IHZhciBvdXQgPSAwOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7ICsraSkKKyAgICAg
ICAgICAgIG91dCArPSB2W2ldICogd1tpXTsKKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9Cit9
CisKK3ZhciBNYXRyaXgzID0KK3sKKyAgICB6ZXJvczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIE1hdHJpeC56ZXJvcygzLCAzKTsKKyAgICB9LAorICAgIAorICAgIGlkZW50aXR5
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LmlkZW50aXR5KDMsIDMp
OworICAgIH0sCisgICAgCisgICAgc3RyOiBmdW5jdGlvbihBKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIE1hdHJpeC5zdHIoQSwgMywgMyk7CisgICAgfSwKKyAgICAKKyAgICBwb3M6IGZ1bmN0aW9u
KGksIGopCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LnBvcygzLCBpLCBqKTsKKyAgICB9
LAorICAgIAorICAgIGFkZDogZnVuY3Rpb24oQSwgQikKKyAgICB7CisgICAgICAgIHJldHVybiBN
YXRyaXguYWRkKEEsIEIsIDMsIDMpOworICAgIH0sCisgICAgCisgICAgc3VidHJhY3Q6IGZ1bmN0
aW9uKEEsIEIpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LnN1YnRyYWN0KEEsIEIsIDMs
IDMpOworICAgIH0sCisgICAgCisgICAgc2NhbGU6IGZ1bmN0aW9uKHMsIEEpCisgICAgeworICAg
ICAgICByZXR1cm4gTWF0cml4LnNjYWxlKHMsIEEsIDMsIDMpOworICAgIH0sCisgICAgCisgICAg
dHJhbnNwb3NlOiBmdW5jdGlvbihBKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC50cmFu
c3Bvc2UoQSwgMywgMyk7CisgICAgfSwKKyAgICAKKyAgICBtdWx0aXBseU1hdHJpeDM6IGZ1bmN0
aW9uKEEsIEIpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4Lm11bHRpcGx5KEEsIEIsIDMs
IDMsIDMpOworICAgIH0sCisgICAgCisgICAgbXVsdGlwbHlWZWN0b3IzOiBmdW5jdGlvbihBLCB2
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC5tdWx0aXBseShBLCB2LCAzLCAzLCAxKTsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIFBJRENvbnRyb2xsZXIoSywgeXNwLCB1bG93LCB1aGlnaCkK
K3sKKyAgICB0aGlzLl95c3AgPSB5c3A7CisKKyAgICB0aGlzLl9UZCA9IDU7CisgICAgdGhpcy5f
VGkgPSAxNTsKKworICAgIHRoaXMuX0twID0gSzsKKyAgICB0aGlzLl9LZCA9IEsgLyB0aGlzLl9U
ZDsKKyAgICB0aGlzLl9LaSA9IEsgLyB0aGlzLl9UaTsKKworICAgIHRoaXMuX2VvbGQgPSAwOwor
ICAgIHRoaXMuX0kgPSAwOworfQorCitQSURDb250cm9sbGVyLnByb3RvdHlwZSA9Cit7CisgICAg
X3NhdDogZnVuY3Rpb24odiwgbG93LCBoaWdoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHYgPCBs
b3cgPyBsb3cgOiAodiA+IGhpZ2ggPyBoaWdoIDogdik7CisgICAgfSwKKyAgICAKKyAgICB0dW5l
OiBmdW5jdGlvbih5LCBoKQorICAgIHsKKyAgICAgICAgLy8gQ3VycmVudCBlcnJvci4KKyAgICAg
ICAgdmFyIGUgPSB0aGlzLl95c3AgLSB5OworCisgICAgICAgIC8vIFByb3BvcnRpb25hbCB0ZXJt
LgorICAgICAgICB2YXIgUCA9IHRoaXMuX0twICogZTsKKyAgICAgICAgCisgICAgICAgIC8vIERl
cml2YXRpdmUgdGVybSBpcyB0aGUgc2xvcGUgb2YgdGhlIGN1cnZlIGF0IHRoZSBjdXJyZW50IHRp
bWUuCisgICAgICAgIHZhciBEID0gdGhpcy5fS2QgKiAoZSAtIHRoaXMuX2VvbGQpIC8gaDsKKwor
ICAgICAgICAvLyBJbnRlZ3JhbCB0ZXJtIGlzIHRoZSBhcmVhIHVuZGVyIHRoZSBjdXJ2ZSBzdGFy
dGluZyBmcm9tIHRoZSBiZWdpbmluZyB0aWxsIHRoZSBjdXJyZW50IHRpbWUuCisgICAgICAgIHRo
aXMuX0kgKz0gdGhpcy5fS2kgKiAoKGUgKyB0aGlzLl9lb2xkKSAvIDIpICogaDsKKworICAgICAg
ICAvLyBwaWQgY29udHJvbGxlciB2YWx1ZS4KKyAgICAgICAgdmFyIHYgPSBQICsgRCArIHRoaXMu
X0k7CisgICAgICAgIAorICAgICAgICAvLyBBdm9pZCBzcGlrZXMgYnkgYXBwbHlpbmcgYWN0dWF0
b3Igc2F0dXJhdGlvbi4KKyAgICAgICAgdmFyIHUgPSB0aGlzLl9zYXQodiwgdGhpcy5fdWxvdywg
dGhpcy5fdWhpZ2gpOyAgICAgICAgCisKKyAgICAgICAgdGhpcy5fZW9sZCA9IGU7CisgICAgICAg
IHJldHVybiB1OworICAgIH0KK30KKworZnVuY3Rpb24gS2FsbWFuRXN0aW1hdG9yKCkKK3sKKyAg
ICB0aGlzLl9tYXRBID0gTWF0cml4My5pZGVudGl0eSgpOworICAgIAorICAgIHRoaXMuX3ZlY0gg
PSBWZWN0b3IzLnplcm9zKCk7CisgICAgdGhpcy5fdmVjSFswXSA9IDE7CisgICAgCisgICAgdGhp
cy5fbWF0USA9IE1hdHJpeDMuaWRlbnRpdHkoKTsKKyAgICB0aGlzLl9SID0gMTAwMDsKKyAgICAK
KyAgICB0aGlzLl92ZWNYX2VzdCA9IFZlY3RvcjMub25lcygpOworICAgIHRoaXMuX21hdFBfZXN0
ID0gTWF0cml4My56ZXJvcygpOworfQorCitLYWxtYW5Fc3RpbWF0b3IucHJvdG90eXBlID0KK3sK
KyAgICBlc3RpbWF0ZTogZnVuY3Rpb24odGltZURlbHRhLCBjdXJyZW50KQorICAgIHsKKyAgICAg
ICAgLy8gVXBkYXRlIHRoZSB0cmFuc2l0aW9uIG1hdHJpeC4KKyAgICAgICAgdGhpcy5fbWF0QVtN
YXRyaXgzLnBvcygwLCAyKV0gPSAxOworCisgICAgICAgIC8vIFByZWRpY3RlZCBzdGF0ZSBhbmQg
Y292YXJpYW5jZS4KKyAgICAgICAgdmFyIHZlY1hfcHJkID0gTWF0cml4My5tdWx0aXBseVZlY3Rv
cjModGhpcy5fbWF0QSwgdGhpcy5fdmVjWF9lc3QpOworICAgICAgICB2YXIgbWF0UF9wcmQgPSBN
YXRyaXgzLmFkZChNYXRyaXgzLm11bHRpcGx5TWF0cml4MyhNYXRyaXgzLm11bHRpcGx5TWF0cml4
Myh0aGlzLl9tYXRBLCB0aGlzLl9tYXRQX2VzdCksIE1hdHJpeDMudHJhbnNwb3NlKHRoaXMuX21h
dEEpKSwgdGhpcy5fbWF0USk7CisKKyAgICAgICAgLy8gRXN0aW1hdGlvbi4KKyAgICAgICAgdmFy
IHZlY0IgPSBWZWN0b3IzLm11bHRpcGx5TWF0cml4Myh0aGlzLl92ZWNILCBNYXRyaXgzLnRyYW5z
cG9zZShtYXRQX3ByZCkpOworICAgICAgICB2YXIgUyA9IFZlY3RvcjMubXVsdGlwbHlWZWN0b3Iz
KHZlY0IsIHRoaXMuX3ZlY0gpICsgdGhpcy5fUjsKKworICAgICAgICB2YXIgdmVjR2FpbiA9IFZl
Y3RvcjMuc2NhbGUoMS9TLCB2ZWNCKTsKKyAgICAgICAgCisgICAgICAgIC8vIEVzdGltYXRlZCBz
dGF0ZSBhbmQgY292YXJpYW5jZS4KKyAgICAgICAgdGhpcy5fdmVjWF9lc3QgPSBWZWN0b3IzLmFk
ZCh2ZWNYX3ByZCwgVmVjdG9yMy5zY2FsZShjdXJyZW50IC0gVmVjdG9yMy5tdWx0aXBseVZlY3Rv
cjModGhpcy5fdmVjSCwgdmVjWF9wcmQpLCB2ZWNHYWluKSk7CisgICAgICAgIHRoaXMuX21hdFBf
ZXN0ID0gTWF0cml4My5zdWJ0cmFjdChtYXRQX3ByZCwgTWF0cml4My5zY2FsZShWZWN0b3IzLm11
bHRpcGx5VmVjdG9yMyh2ZWNHYWluLCB0aGlzLl92ZWNIKSwgbWF0UF9wcmQpKTsKKworICAgICAg
ICAvLyBDb21wdXRlIHRoZSBlc3RpbWF0ZWQgbWVhc3VyZW1lbnQuCisgICAgICAgIHJldHVybiBW
ZWN0b3IzLm11bHRpcGx5VmVjdG9yMyh0aGlzLl92ZWNILCAgdGhpcy5fdmVjWF9lc3QpOworICAg
IH0KK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMv
c3RhZ2UuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9yZXNvdXJjZXMvc3RhZ2UuY3NzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5jc3MJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNyBAQAoraHRtbCB7CisgIGhlaWdodDogMTAwJTsKK30KK2JvZHkgeworICB3aWR0aDog
MTAwJTsKKyAgaGVpZ2h0OiAxMDAlOworICBvdmVyZmxvdzogaGlkZGVuOworICBtYXJnaW46IDA7
CisgIHBhZGRpbmc6IDA7CisgIGJhY2tncm91bmQtY29sb3I6ICNlYWVhZWE7Cit9CisKKyNzdGFn
ZSB7CisgIHdpZHRoOiAxMDAlOworICBoZWlnaHQ6IDEwMCU7CisgIGJhY2tncm91bmQtY29sb3I6
ICNlYWVhZWE7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVz
b3VyY2VzL3N0YWdlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTcxIEBACitmdW5jdGlvbiBSb3RhdGVyKHJvdGF0ZUludGVydmFsKQoreworICAg
IHRoaXMuX3RpbWVEZWx0YSA9IDA7CisgICAgdGhpcy5fcm90YXRlSW50ZXJ2YWwgPSByb3RhdGVJ
bnRlcnZhbDsKK30KKworUm90YXRlci5wcm90b3R5cGUgPQoreworICAgIGdldCBpbnRlcnZhbCgp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcm90YXRlSW50ZXJ2YWw7CisgICAgfSwKKyAg
ICAKKyAgICBuZXh0OiBmdW5jdGlvbih0aW1lRGVsdGEpCisgICAgeworICAgICAgICB0aGlzLl90
aW1lRGVsdGEgPSAodGhpcy5fdGltZURlbHRhICsgdGltZURlbHRhKSAlIHRoaXMuX3JvdGF0ZUlu
dGVydmFsOworICAgIH0sCisgICAgCisgICAgZGVncmVlOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICByZXR1cm4gKDM2MCAqIHRoaXMuX3RpbWVEZWx0YSkgLyB0aGlzLl9yb3RhdGVJbnRlcnZh
bDsKKyAgICB9LAorICAgIAorICAgIHJvdGF0ZVo6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHJldHVybiAicm90YXRlWigiICsgTWF0aC5mbG9vcih0aGlzLmRlZ3JlZSgpKSArICJkZWcpIjsK
KyAgICB9LAorICAgIAorICAgIHJvdGF0ZTogZnVuY3Rpb24oY2VudGVyKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICJyb3RhdGUoIiArIE1hdGguZmxvb3IodGhpcy5kZWdyZWUoKSkgKyAiLCAiICsg
Y2VudGVyLnggKyAiLCIgKyBjZW50ZXIueSArICIpIjsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIFN0
YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7CisgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDsKK30K
KworU3RhZ2UucHJvdG90eXBlID0KK3sKKyAgICBnZXQgc2l6ZSgpCisgICAgeworICAgICAgICB2
YXIgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5lbGVtZW50KTsKKyAgICAg
ICAgdmFyIHBhZGRpbmcgPSBuZXcgSW5zZXRzKAorICAgICAgICAgICAgcGFyc2VGbG9hdChzdHls
ZXMucGFkZGluZ1RvcCksCisgICAgICAgICAgICBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nUmln
aHQpLAorICAgICAgICAgICAgcGFyc2VGbG9hdChzdHlsZXMucGFkZGluZ0JvdHRvbSksCisgICAg
ICAgICAgICBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nVG9wKSk7CisgICAgICAgIHJldHVybiBu
ZXcgUG9pbnQodGhpcy5lbGVtZW50LmNsaWVudFdpZHRoIC0gcGFkZGluZy53aWR0aCwgdGhpcy5l
bGVtZW50LmNsaWVudEhlaWdodCAtIHBhZGRpbmcuaGVpZ2h0KTsKKyAgICB9LAorICAgIAorICAg
IHJhbmRvbTogZnVuY3Rpb24obWluLCBtYXgpCisgICAgeworICAgICAgICByZXR1cm4gKE1hdGgu
cmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47CisgICAgfSwKKyAgICAKKyAgICByYW5kb21J
bnQ6IGZ1bmN0aW9uKG1pbiwgbWF4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdGguZmxvb3Io
dGhpcy5yYW5kb20obWluLCBtYXgpKTsKKyAgICB9LAorICAgIAorICAgIHJhbmRvbVBvc2l0aW9u
OiBmdW5jdGlvbihtYXhQb3NpdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUG9pbnQo
dGhpcy5yYW5kb21JbnQoMCwgbWF4UG9zaXRpb24ueCksIHRoaXMucmFuZG9tSW50KDAsIG1heFBv
c2l0aW9uLnkpKTsKKyAgICB9LAorICAgIAorICAgIHJhbmRvbVZlbG9jaXR5OiBmdW5jdGlvbiht
YXhWZWxvY2l0eSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnJhbmRvbShtYXhWZWxvY2l0
eSAvIDgsIG1heFZlbG9jaXR5KTsKKyAgICB9LAorICAgIAorICAgIHJhbmRvbUFuZ2xlOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5yYW5kb20oMCwgTWF0aC5QSSAqIDIp
OworICAgIH0sCisgICAgCisgICAgcmFuZG9tQ29sb3I6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHZhciBtaW4gPSAzMjsKKyAgICAgICAgdmFyIG1heCA9IDI1NiAtIDMyOworICAgICAgICBy
ZXR1cm4gIiMiCisgICAgICAgICAgICArIHRoaXMucmFuZG9tSW50KG1pbiwgbWF4KS50b1N0cmlu
ZygxNikKKyAgICAgICAgICAgICsgdGhpcy5yYW5kb21JbnQobWluLCBtYXgpLnRvU3RyaW5nKDE2
KQorICAgICAgICAgICAgKyB0aGlzLnJhbmRvbUludChtaW4sIG1heCkudG9TdHJpbmcoMTYpOwor
ICAgIH0sCisgICAgCisgICAgcmFuZG9tUm90YXRlcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG5ldyBSb3RhdGVyKHRoaXMucmFuZG9tKDEwMDAsIDEwMDAwKSk7CisgICAgfSwK
KworICAgIHR1bmU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRocm93ICJOb3QgaW1wbGVt
ZW50ZWQiOworICAgIH0sCisgICAgCisgICAgYW5pbWF0ZTogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgdGhyb3cgIk5vdCBpbXBsZW1lbnRlZCI7CisgICAgfSwKKyAgICAKKyAgICBjbGVhcjog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudHVuZSgtdGhpcy50dW5lKDAp
KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIFN0YWdlQW5pbWF0b3IoYmVuY2htYXJrKQoreworICAg
IEFuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrKTsKK307CisKK1N0YWdlQW5pbWF0b3IucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShBbmltYXRvci5wcm90b3R5cGUpOworU3RhZ2VBbmltYXRv
ci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTdGFnZUFuaW1hdG9yOworCitTdGFnZUFuaW1hdG9y
LnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQoreworICAgIGlmICghQW5pbWF0b3IucHJv
dG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHRo
aXMuX2JlbmNobWFyay5fc3RhZ2UuYW5pbWF0ZSh0aGlzLnRpbWVEZWx0YSgpKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gU3RhZ2VCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICBCZW5jaG1hcmsuY2FsbCh0aGlz
LCBvcHRpb25zKTsKKyAgICAKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJzdGFnZSIpOworICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsIGRvY3VtZW50
LmJvZHkub2Zmc2V0V2lkdGgpOworICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCBk
b2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCk7CisgICAgCisgICAgdGhpcy5fc3RhZ2UgPSB0aGlz
LmNyZWF0ZVN0YWdlKGVsZW1lbnQpOworICAgIHRoaXMuX2FuaW1hdG9yID0gdGhpcy5jcmVhdGVB
bmltYXRvcigpOworICAgIHRoaXMuX3N1aXRlID0gc3VpdGU7CisgICAgdGhpcy5fdGVzdCA9IHRl
c3Q7CisgICAgdGhpcy5fcmVjb3JkVGFibGUgPSByZWNvcmRUYWJsZTsKKyAgICB0aGlzLl9wcm9n
cmVzc0JhciA9IHByb2dyZXNzQmFyOworfQorCitTdGFnZUJlbmNobWFyay5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKEJlbmNobWFyay5wcm90b3R5cGUpOworU3RhZ2VCZW5jaG1hcmsucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gU3RhZ2VCZW5jaG1hcms7CisKK1N0YWdlQmVuY2htYXJrLnByb3Rv
dHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgcmV0dXJuIG5ldyBT
dGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKworU3RhZ2VCZW5jaG1hcmsucHJvdG90
eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiBuZXcgU3RhZ2VB
bmltYXRvcih0aGlzKTsKK30KKworU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLnR1bmUgPSBmdW5j
dGlvbihjb3VudCkKK3sKKyAgICByZXR1cm4gdGhpcy5fc3RhZ2UudHVuZShjb3VudCk7Cit9CisK
K1N0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1
cm4gdGhpcy5fc3RhZ2UuY2xlYXIoKTsKK30KKworU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLnNo
b3dSZXN1bHRzID0gZnVuY3Rpb24obWVzc2FnZSwgcHJvZ3Jlc3MpCit7CisgICAgaWYgKCF0aGlz
Ll9yZWNvcmRUYWJsZSB8fCAhdGhpcy5fcHJvZ3Jlc3NCYXIgfHwgIXRoaXMuX3N1aXRlIHx8ICF0
aGlzLl90ZXN0KQorICAgICAgICByZXR1cm47CisKKyAgICB0aGlzLl9yZWNvcmRUYWJsZS5zaG93
UmVjb3JkKHRoaXMuX3N1aXRlLCB0aGlzLl90ZXN0LCB0aGlzLl9zYW1wbGVyLCBtZXNzYWdlKTsK
KyAgICB0aGlzLl9wcm9ncmVzc0Jhci5zZXRQb3MocHJvZ3Jlc3MpOworfQpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy91dGlsaXRpZXMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy91dGls
aXRpZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvcmVzb3VyY2VzL3V0aWxpdGllcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBA
Cit3aW5kb3cuVXRpbGl0aWVzID0KK3sKKyAgICBfcGFyc2U6IGZ1bmN0aW9uKHN0ciwgc2VwKQor
ICAgIHsKKyAgICAgICAgdmFyIG91dHB1dCA9IHt9OworICAgICAgICBzdHIuc3BsaXQoc2VwKS5m
b3JFYWNoKGZ1bmN0aW9uKHBhcnQpIHsKKyAgICAgICAgICAgIHZhciBpdGVtID0gcGFydC5zcGxp
dCgiPSIpOworICAgICAgICAgICAgdmFyIHZhbHVlID0gZGVjb2RlVVJJQ29tcG9uZW50KGl0ZW1b
MV0pOworICAgICAgICAgICAgaWYgKHZhbHVlWzBdID09ICInIiApCisgICAgICAgICAgICAgICAg
b3V0cHV0W2l0ZW1bMF1dID0gdmFsdWUuc3Vic3RyKDEsIHZhbHVlLmxlbmd0aCAtIDIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG91dHB1dFtpdGVtWzBdXSA9IHZhbHVlOyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIG91dHB1dDsKKyAg
ICB9LAorICAgIAorICAgIHBhcnNlUGFyYW1ldGVyczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3BhcnNlKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyKDEpLCAi
JiIpOworICAgIH0sCisgICAgCisgICAgcGFyc2VBcmd1bWVudHM6IGZ1bmN0aW9uKHN0cikKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wYXJzZShzdHIsICIgIik7CisgICAgfSwKKyAgICAK
KyAgICBleHRlbmRPYmplY3Q6IGZ1bmN0aW9uKG9iajEsIG9iajIpCisgICAgeworICAgICAgICBm
b3IgKHZhciBhdHRybmFtZSBpbiBvYmoyKQorICAgICAgICAgICAgb2JqMVthdHRybmFtZV0gPSBv
YmoyW2F0dHJuYW1lXTsKKyAgICAgICAgcmV0dXJuIG9iajE7CisgICAgfSwKKyAgICAKKyAgICBj
b3B5T2JqZWN0OiBmdW5jdGlvbihvYmopCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5leHRl
bmRPYmplY3Qoe30sIG9iaik7CisgICAgfSwKKyAgICAKKyAgICBtZXJnZU9iamVjdHM6IGZ1bmN0
aW9uKG9iajEsIG9iajIpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5leHRlbmRPYmplY3Qo
dGhpcy5jb3B5T2JqZWN0KG9iajEpLCBvYmoyKTsKKyAgICB9LAorICAgIAorICAgIGNyZWF0ZVN2
Z0VsZW1lbnQ6IGZ1bmN0aW9uKG5hbWUsIGF0dHJzLCB4bGlua0F0dHJzLCBwYXJlbnQpCisgICAg
eworICAgICAgICBjb25zdCBzdmdOYW1lc3BhY2UgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciOworICAgICAgICBjb25zdCB4bGlua05hbWVzcGFjZSA9ICJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIjsKKworICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUyhzdmdOYW1lc3BhY2UsIG5hbWUpOworICAgICAgICAKKyAgICAgICAgZm9yICh2YXIga2V5
IGluIGF0dHJzKQorICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRyc1tr
ZXldKTsKKyAgICAgICAgICAgIAorICAgICAgICBmb3IgKHZhciBrZXkgaW4geGxpbmtBdHRycykK
KyAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlTlMoeGxpbmtOYW1lc3BhY2UsIGtleSwg
eGxpbmtBdHRyc1trZXldKTsKKyAgICAgICAgICAgIAorICAgICAgICBwYXJlbnQuYXBwZW5kQ2hp
bGQoZWxlbWVudCk7CisgICAgICAgIHJldHVybiBlbGVtZW50OworICAgIH0KK30KSW5kZXg6IFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcuc3ZnCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMv
eWluLXlhbmcuc3ZnCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5zdmcJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NyBAQAorPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAg
MCAyMDAgMjAwIj4NCisgIDxkZWZzPg0KKyAgICA8Y2xpcFBhdGggaWQ9ImxlZnQtaGFsZiI+DQor
ICAgICAgPHJlY3Qgd2lkdGg9IjEwMCIgaGVpZ2h0PSIyMDAiLz4NCisgICAgPC9jbGlwUGF0aD4N
CisgICAgPGNsaXBQYXRoIGlkPSJyaWdodC1oYWxmIj4NCisgICAgICA8cmVjdCB4PSIxMDAiIHdp
ZHRoPSIxMDAiIGhlaWdodD0iMjAwIi8+DQorICAgIDwvY2xpcFBhdGg+DQorICA8L2RlZnM+DQor
ICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSIxMDAiIHI9Ijk4IiBmaWxsPSJub25lIiBzdHJva2U9Imdy
ZWVuIiBzdHJva2Utd2lkdGg9IjIiLz4NCisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjEwMCIgcj0i
OTgiIGZpbGw9IndoaXRlIiBjbGlwLXBhdGg9InVybCgjbGVmdC1oYWxmKSIvPg0KKyAgPGNpcmNs
ZSBjeD0iMTAwIiBjeT0iMTAwIiByPSI5OCIgZmlsbD0iZ3JlZW4iIGNsaXAtcGF0aD0idXJsKCNy
aWdodC1oYWxmKSIvPg0KKyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iNTAiICByPSI0OSIgZmlsbD0i
Z3JlZW4iLz4NCisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjE0OCIgcj0iNDkiIGZpbGw9IndoaXRl
Ii8+DQorICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSI1MCIgIHI9IjEwIiBmaWxsPSJ3aGl0ZSIvPiAg
ICANCisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjE0OCIgcj0iMTAiIGZpbGw9ImdyZWVuIi8+DQor
PC9zdmc+DQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRl
L3RlbXBsYXRlLWNhbnZhcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jYW52YXMuaHRtbAkocmV2aXNpb24gMCkK
KysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1j
YW52YXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0
L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvc3RhZ2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVtcGxh
dGUtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxjYW52YXMgaWQ9
InN0YWdlIj48L2NhbnZhcz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jc3MuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUt
Y3NzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvdGVtcGxhdGUvdGVtcGxhdGUtY3NzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgor
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAgCisg
ICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3RlbXBsYXRlLWNzcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgICA8ZGl2IGlkPSJzdGFnZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRl
L3RlbXBsYXRlLXN2Zy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLXN2Zy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3Rh
Z2UuY3NzIj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3Jp
cHQ+ICAgIAorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy90ZW1wbGF0ZS1zdmcuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+CisgICAgPHN2ZyBpZD0ic3RhZ2UiPjwvc3ZnPgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNl
cy90ZW1wbGF0ZS1jYW52YXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanMJKHJldmlz
aW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVz
b3VyY2VzL3RlbXBsYXRlLWNhbnZhcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNCBA
QAorZnVuY3Rpb24gVGVtcGxhdGVDYW52YXNPYmplY3Qoc3RhZ2UpCit7CisgICAgLy8gRm9yIHRo
ZSBjYW52YXMgc3RhZ2UsIG1vc3QgbGlrZWx5IHlvdSB3aWxsIG5lZWQgdG8gY3JlYXRlIHlvdXIK
KyAgICAvLyBhbmltYXRlZCBvYmplY3Qgc2luY2UgaXQncyBvbmx5IGRyYXcgdGltZSB0aGluZy4K
KyAgICAKKyAgICAvLyBUT0RPOiBGaWxsIGluIHlvdXIgb2JqZWN0IGRhdGEuCit9CisKK1RlbXBs
YXRlQ2FudmFzT2JqZWN0LnByb3RvdHlwZS5fZHJhdyA9IGZ1bmN0aW9uKCkKK3sKKyAgICAvLyBU
T0RPOiBEcmF3IHlvdXIgb2JqZWN0LgorfQorCitUZW1wbGF0ZUNhbnZhc09iamVjdC5wcm90b3R5
cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAgICAvLyBSZWRyYXcgdGhlIGFu
aW1hdGVkIG9iamVjdC4gVGhlIGxhc3QgdGltZSB0aGlzIGFuaW1hdGVkCisgICAgLy8gaXRlbSB3
YXMgZHJhd24gYmVmb3JlICd0aW1lRGVsdGEnLgorICAgIAorICAgIC8vIFRPRE86IE1vdmUgeW91
ciBvYmplY3QuCisgICAgCisgICAgLy8gUmVkcmF3IHlvdXIgb2JqZWN0LgorICAgIHRoaXMuX2Ry
YXcoKTsKK30KKworZnVuY3Rpb24gVGVtcGxhdGVDYW52YXNTdGFnZShlbGVtZW50LCBvcHRpb25z
KQoreworICAgIFN0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5j
b250ZXh0ID0gdGhpcy5lbGVtZW50LmdldENvbnRleHQoIjJkIik7CisKKyAgICAvLyBUT0RPOiBE
ZWZpbmUgYSBjb2xsZWN0aW9uIGZvciB5b3VyIG9iamVjdHMuCit9CisKK1RlbXBsYXRlQ2FudmFz
U3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOworVGVtcGxh
dGVDYW52YXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUZW1wbGF0ZUNhbnZhc1N0YWdl
OworCitUZW1wbGF0ZUNhbnZhc1N0YWdlLnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQp
Cit7CisgICAgLy8gSWYgY291bnQgaXMgLXZlLCAtY291bnQgZWxlbWVudHMgbmVlZCB0byBiZSBy
ZW1vdmVkIGZvcm0gdGhlCisgICAgLy8gc3RhZ2UuIElmIGNvdW50IGlzICt2ZSwgK2NvdW50IGVs
ZW1lbnRzIG5lZWQgdG8gYmUgYWRkZWQgdG8KKyAgICAvLyB0aGUgc3RhZ2UuCisgICAgCisgICAg
Ly8gVE9ETzogQ2hhbmdlIG9iamVjdHMgaW4gdGhlIHN0YWdlLgorICAgIAorICAgIC8vIFJldHVy
biB0aGUgbnVtYmVyIG9mIGFsbCB0aGUgZWxlbWVudHMgaW4gdGhlIHN0YWdlLgorICAgIC8vIFRo
aXMgbnVtYmVyIGlzIHJlY29yZGVkIGluIHRoZSBzYW1wbGVkIGRhdGEuCisgICAgCisgICAgLy8g
VE9ETzogUmV0dXJuIHRoZSBjb3VudCBvZiB0aGUgb2JqZWN0cyBpbiB0aGUgc3RhZ2UuCisgICAg
cmV0dXJuIDA7Cit9CisKK1RlbXBsYXRlQ2FudmFzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBm
dW5jdGlvbih0aW1lRGVsdGEpCit7CisgICAgLy8gQW5pbWF0ZSB0aGUgZWxlbWVudHMgc3VjaCB0
aGF0IGFsbCBvZiB0aGVtIGFyZSByZWRyYXduLiBNb3N0CisgICAgLy8gbGlrZWx5IHlvdSB3aWxs
IG5lZWQgdG8gY2FsbCBUZW1wbGF0ZUNhbnZhc09iamVjdC5hbmltYXRlKCkKKyAgICAvLyBmb3Ig
YWxsIHlvdXIgYW5pbWF0ZWQgb2JqZWN0cyBoZXJlLgorCisgICAgLy8gVE9ETzogTG9vcCB0aHJv
dWdoIGFsbCB5b3VyIG9iamVjdHMgYW5kIGFzayB0aGVtIHRvIGFuaW1hdGUuCit9CisKK2Z1bmN0
aW9uIFRlbXBsYXRlQ2FudmFzQW5pbWF0b3IoYmVuY2htYXJrKQoreworICAgIEFuaW1hdG9yLmNh
bGwodGhpcywgYmVuY2htYXJrKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJrLl9zdGFn
ZS5jb250ZXh0OworfQorCitUZW1wbGF0ZUNhbnZhc0FuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUoU3RhZ2VBbmltYXRvci5wcm90b3R5cGUpOworVGVtcGxhdGVDYW52YXNBbmltYXRv
ci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUZW1wbGF0ZUNhbnZhc0FuaW1hdG9yOworCitUZW1w
bGF0ZUNhbnZhc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQoreworICAg
IC8vIE1vc3QgbGlrZWx5IHlvdSB3aWxsIG5lZWQgdG8gY2xlYXIgdGhlIGNhbnZhcyB3aXRoIGV2
ZXJ5IHJlZHJhdy4KKyAgICB0aGlzLl9jb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLl9iZW5j
aG1hcmsuX3N0YWdlLnNpemUueCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLnkpOworCisg
ICAgLy8gVE9ETzogRHJhdyBzY2VuZSBzdHVmZiBoZXJlIGlmIG5lZWRlZC4KKworICAgIHJldHVy
biBTdGFnZUFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcyk7Cit9CisKK2Z1bmN0
aW9uIFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRU
YWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworVGVtcGxh
dGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNobWFy
ay5wcm90b3R5cGUpOworVGVtcGxhdGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVj
dG9yID0gVGVtcGxhdGVDYW52YXNCZW5jaG1hcms7CisKK1RlbXBsYXRlQ2FudmFzQmVuY2htYXJr
LnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgLy8gQXR0
YWNoIHRoZSBzdGFnZSB0byB0aGUgYmVuY2htYXJrLgorICAgIHJldHVybiBuZXcgVGVtcGxhdGVD
YW52YXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKworVGVtcGxhdGVDYW52YXNC
ZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQoreworICAgIC8v
IEF0dGFjaCB0aGUgYW5pbWF0b3IgdG8gdGhlIGJlbmNobWFyay4KKyAgICByZXR1cm4gbmV3IFRl
bXBsYXRlQ2FudmFzQW5pbWF0b3IodGhpcyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQu
Y3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9n
cmVzc0JhcikKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSB0ZXN0
IGhhcm5lc3Mgd2hpY2ggc3RhcnRzIHRoZQorICAgIC8vIHRlc3QgYnkgY3JlYXRpbmcgeW91ciBi
ZW5jaG1hcmsgb2JqZWN0LgorICAgIHJldHVybiBuZXcgVGVtcGxhdGVDYW52YXNCZW5jaG1hcmso
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4
OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3Rl
bXBsYXRlLWNzcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNzcy5qcwkocmV2aXNpb24gMCkKKysr
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVt
cGxhdGUtY3NzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKK2Z1bmN0aW9uIFRl
bXBsYXRlQ3NzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBTdGFnZS5jYWxsKHRoaXMs
IGVsZW1lbnQsIG9wdGlvbnMpOworfQorCitUZW1wbGF0ZUNzc1N0YWdlLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoU3RhZ2UucHJvdG90eXBlKTsKK1RlbXBsYXRlQ3NzU3RhZ2UucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gVGVtcGxhdGVDc3NTdGFnZTsKKworVGVtcGxhdGVDc3NTdGFnZS5wcm90
b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KQoreworICAgIC8vIElmIGNvdW50IGlzIC12ZSwg
LWNvdW50IGVsZW1lbnRzIG5lZWQgdG8gYmUgcmVtb3ZlZCBmb3JtIHRoZQorICAgIC8vIHN0YWdl
LiBJZiBjb3VudCBpcyArdmUsICtjb3VudCBlbGVtZW50cyBuZWVkIHRvIGJlIGFkZGVkIHRvCisg
ICAgLy8gdGhlIHN0YWdlLgorICAgIAorICAgIC8vIFRPRE86IENoYW5nZSBvYmplY3RzIGluIHRo
ZSBzdGFnZS4KKyAgICAKKyAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBhbGwgdGhlIGVsZW1l
bnRzIGluIHRoZSBzdGFnZS4KKyAgICAvLyBUaGlzIG51bWJlciBpcyByZWNvcmRlZCBpbiB0aGUg
c2FtcGxlZCBkYXRhLgorICAgIAorICAgIC8vIFRPRE86IFJldHVybiB0aGUgY291bnQgb2YgdGhl
IG9iamVjdHMgaW4gdGhlIHN0YWdlLgorICAgIHJldHVybiAwOworfQorCitUZW1wbGF0ZUNzc1N0
YWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQoreworICAgIC8vIEFu
aW1hdGUgdGhlIGVsZW1lbnRzIHN1Y2ggdGhhdCBhbGwgb2YgdGhlbSBhcmUgcmVkcmF3bi4gWW91
IAorICAgIC8vIG1heSBuZWVkIHRvIGRlZmluZSB5b3VyIG9iamVjdCBzbyBpdCBrZWVwcyBpdHMg
YW5pbWF0aW9uIGRhdGEuCisgICAgLy8gVGhpcyBvYmplY3Qgc2hvdWxkIGVuY2Fwc3VsYXRlIGEg
Y29ycm9zcG9uZGluZyBIVE1MRWxlbWVudC4KKyAgICAvLyBZb3UgbWF5IGFsc28gZGVmaW5lIGEg
bWV0aG9kIGNhbGxlZCBhbmltYXRlKCkgaW4gdGhpcyBvYmplY3QKKyAgICAvLyBhbmQganVzdCBj
YWxsIHRoaXMgZnVuY3Rpb24gaGVyZSBmb3IgYWxsIHRoZSBlbGVtZW50cy4KKyAgICAKKyAgICAv
LyBUT0RPOiBMb29wIHRocm91Z2ggYWxsIHlvdXIgb2JqZWN0cyBhbmQgYXNrIHRoZW0gdG8gYW5p
bWF0ZS4KK30KKworZnVuY3Rpb24gVGVtcGxhdGVDc3NCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICBTdGFnZUJlbmNobWFyay5j
YWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
OworfQorCitUZW1wbGF0ZUNzc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0
YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7CitUZW1wbGF0ZUNzc0JlbmNobWFyay5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBUZW1wbGF0ZUNzc0JlbmNobWFyazsKKworVGVtcGxhdGVDc3NCZW5jaG1h
cmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKK3sKKyAgICAvLyBZ
b3UgbmVlZCB0byBvdmVycmlkZSB0aGlzIG1ldGhvZCBzdWNoIHRoYXQgeW91ciBzdGFnZSBpcyBo
b29rZWQKKyAgICAvLyB1cCB0byB0aGUgYmVuY2htYXJrLgorICAgIHJldHVybiBuZXcgVGVtcGxh
dGVDc3NTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKword2luZG93LmJlbmNobWFy
a0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFi
bGUsIHByb2dyZXNzQmFyKQoreworICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20g
dGhlIHRlc3QgaGFybmVzcyB3aGljaCBzdGFydHMgdGhlCisgICAgLy8gdGVzdCBieSBjcmVhdGlu
ZyB5b3VyIGJlbmNobWFyayBvYmplY3QuCisgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZUNzc0JlbmNo
bWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30K
SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJj
ZXMvdGVtcGxhdGUtc3ZnLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpzCShyZXZpc2lvbiAw
KQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNl
cy90ZW1wbGF0ZS1zdmcuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorZnVuY3Rp
b24gVGVtcGxhdGVTdmdTdGFnZShlbGVtZW50LCBvcHRpb25zKQoreworICAgIFN0YWdlLmNhbGwo
dGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Cit9CisKK1RlbXBsYXRlU3ZnU3RhZ2UucHJvdG90eXBl
ID0gT2JqZWN0LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOworVGVtcGxhdGVTdmdTdGFnZS5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBUZW1wbGF0ZVN2Z1N0YWdlOworCitUZW1wbGF0ZVN2Z1N0YWdl
LnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQpCit7CisgICAgLy8gSWYgY291bnQgaXMg
LXZlLCAtY291bnQgZWxlbWVudHMgbmVlZCB0byBiZSByZW1vdmVkIGZvcm0gdGhlCisgICAgLy8g
c3RhZ2UuIElmIGNvdW50IGlzICt2ZSwgK2NvdW50IGVsZW1lbnRzIG5lZWQgdG8gYmUgYWRkZWQg
dG8KKyAgICAvLyB0aGUgc3RhZ2UuCisgICAgCisgICAgLy8gVE9ETzogQ2hhbmdlIG9iamVjdHMg
aW4gdGhlIHN0YWdlLgorICAgIAorICAgIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGFsbCB0aGUg
ZWxlbWVudHMgaW4gdGhlIHN0YWdlLgorICAgIC8vIFRoaXMgbnVtYmVyIGlzIHJlY29yZGVkIGlu
IHRoZSBzYW1wbGVkIGRhdGEuCisgICAgCisgICAgLy8gVE9ETzogUmV0dXJuIHRoZSBjb3VudCBv
ZiB0aGUgb2JqZWN0cyBpbiB0aGUgc3RhZ2UuCisgICAgcmV0dXJuIDA7Cit9CisKK1RlbXBsYXRl
U3ZnU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCit7CisgICAg
Ly8gQW5pbWF0ZSB0aGUgZWxlbWVudHMgc3VjaCB0aGF0IGFsbCBvZiB0aGVtIGFyZSByZWRyYXdu
LiBZb3UgCisgICAgLy8gbWF5IG5lZWQgdG8gZGVmaW5lIHlvdXIgb2JqZWN0IHNvIGl0IGtlZXBz
IGl0cyBhbmltYXRpb24gZGF0YS4KKyAgICAvLyBUaGlzIG9iamVjdCBzaG91bGQgZW5jYXBzdWxh
dGUgYSBjb3Jyb3Nwb25kaW5nIFNWR0VsZW1lbnQuCisgICAgLy8gWW91IG1heSBhbHNvIGRlZmlu
ZSBhIG1ldGhvZCBjYWxsZWQgYW5pbWF0ZSgpIGluIHRoaXMgb2JqZWN0CisgICAgLy8gYW5kIGp1
c3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGhlcmUgZm9yIGFsbCB0aGUgZWxlbWVudHMuCisgICAgCisg
ICAgLy8gVE9ETzogTG9vcCB0aHJvdWdoIGFsbCB5b3VyIG9iamVjdHMgYW5kIGFzayB0aGVtIHRv
IGFuaW1hdGUuCit9CisKK2Z1bmN0aW9uIFRlbXBsYXRlU3ZnQmVuY2htYXJrKHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgU3RhZ2VCZW5jaG1h
cmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNz
QmFyKTsKK30KKworVGVtcGxhdGVTdmdCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUpOworVGVtcGxhdGVTdmdCZW5jaG1hcmsucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gVGVtcGxhdGVTdmdCZW5jaG1hcms7CisKK1RlbXBsYXRlU3ZnQmVu
Y2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAg
Ly8gWW91IG5lZWQgdG8gb3ZlcnJpZGUgdGhpcyBtZXRob2Qgc3VjaCB0aGF0IHlvdXIgc3RhZ2Ug
aXMgaG9va2VkCisgICAgLy8gdXAgdG8gdGhlIGJlbmNobWFyay4KKyAgICByZXR1cm4gbmV3IFRl
bXBsYXRlU3ZnU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK3dpbmRvdy5iZW5j
aG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29y
ZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBm
cm9tIHRoZSB0ZXN0IGhhcm5lc3Mgd2hpY2ggc3RhcnRzIHRoZQorICAgIC8vIHRlc3QgYnkgY3Jl
YXRpbmcgeW91ciBiZW5jaG1hcmsgb2JqZWN0LgorICAgIHJldHVybiBuZXcgVGVtcGxhdGVTdmdC
ZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7
Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9sYXllcmlu
Zy10ZXh0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
ICA8c3R5bGU+CisgICAgICAgIC50ZXh0LWxheWVyIHsKKyAgICAgICAgICAgIGZvbnQtc2l6ZTog
NS41cHg7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICBsZWZ0
OiAwcHg7CisgICAgICAgICAgICB0b3A6IDBweDsKKyAgICAgICAgICAgIHBhZGRpbmc6IDNweDsK
KyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICAgICAgICB9Cisg
ICAgPC9zdHlsZT4gIAorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3Mi
IGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAgCisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0
YWdlLmpzIj48L3NjcmlwdD4gIAorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGF5ZXJpbmct
dGV4dC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJzdGFnZSI+
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmct
dGV4dC5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMjU3IEBACitmdW5jdGlvbiBMYXllcmluZ1RleHRTdGFnZShlbGVtZW50LCBvcHRpb25zKQor
eworICAgIFN0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5fdGV4
dEVsZW1lbnRQYXJlbnQgPSB0aGlzLmVsZW1lbnQ7CisgICAgdGhpcy5fdGV4dEVsZW1lbnRzID0g
W107CisgICAgdGhpcy5fdGV4dEl0ZW1JbmRleCA9IDA7CisgICAgdGhpcy5fY29sb3JJbmRleCA9
IDA7CisgICAgdGhpcy5fYW5pbWF0ZUNvdW50cyA9IDA7Cit9CisKK0xheWVyaW5nVGV4dFN0YWdl
LnRleHRJdGVtcyA9IFsKKyAgICAiPGRpdiBjbGFzcz0ndGV4dC1sYXllcic+IiwKKyAgICAgICAg
IjxoMj5UeXBlcyBvZiBiZW5jaG1hcmtzPC9oMj4iLAorICAgICAgICAiPG9sPiIsCisgICAgICAg
ICAgICAiPGxpPlJlYWwgcHJvZ3JhbSIsCisgICAgICAgICAgICAgICAgIjx1bD4iLAorICAgICAg
ICAgICAgICAgICAgICAiPGxpPndvcmQgcHJvY2Vzc2luZyBzb2Z0d2FyZTwvbGk+IiwKKyAgICAg
ICAgICAgICAgICAgICAgIjxsaT50b29sIHNvZnR3YXJlIG9mIENBRDwvbGk+IiwKKyAgICAgICAg
ICAgICAgICAgICAgIjxsaT51c2VyJ3MgYXBwbGljYXRpb24gc29mdHdhcmUgKGkuZS46IE1JUyk8
L2xpPiIsCisgICAgICAgICAgICAgICAgIjwvdWw+IiwKKyAgICAgICAgICAgICI8L2xpPiIsCisg
ICAgICAgICAgICAiPGxpPktlcm5lbCIsCisgICAgICAgICAgICAgICAgIjx1bD4iLAorICAgICAg
ICAgICAgICAgICAgICAiPGxpPmNvbnRhaW5zIGtleSBjb2RlczwvbGk+IiwKKyAgICAgICAgICAg
ICAgICAgICAgIjxsaT5ub3JtYWxseSBhYnN0cmFjdGVkIGZyb20gYWN0dWFsIHByb2dyYW08L2xp
PiIsCisgICAgICAgICAgICAgICAgICAgICI8bGk+cG9wdWxhciBrZXJuZWw6IExpdmVybW9yZSBs
b29wPC9saT4iLAorICAgICAgICAgICAgICAgICAgICAiPGxpPmxpbnBhY2sgYmVuY2htYXJrIChj
b250YWlucyBiYXNpYyBsaW5lYXIgYWxnZWJyYSBzdWJyb3V0aW5lIHdyaXR0ZW4gaW4gRk9SVFJB
TiBsYW5ndWFnZSk8L2xpPiIsCisgICAgICAgICAgICAgICAgICAgICI8bGk+cmVzdWx0cyBhcmUg
cmVwcmVzZW50ZWQgaW4gTUZMT1BTPC9saT4iLAorICAgICAgICAgICAgICAgICI8L3VsPiIsCisg
ICAgICAgICAgICAiPC9saT4iLAorICAgICAgICAgICAgIjxsaT5TeW50aGV0aWMgQmVuY2htYXJr
IiwKKyAgICAgICAgICAgICAgICAiPHVsPiIsCisgICAgICAgICAgICAgICAgICAgICI8bGk+UHJv
Y2VkdXJlIGZvciBwcm9ncmFtbWluZyBzeW50aGV0aWMgYmVuY2htYXJrOiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAiPHVsPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaT50
YWtlIHN0YXRpc3RpY3Mgb2YgYWxsIHR5cGVzIG9mIG9wZXJhdGlvbnMgZnJvbSBtYW55IGFwcGxp
Y2F0aW9uIHByb2dyYW1zPC9saT4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGk+
Z2V0IHByb3BvcnRpb24gb2YgZWFjaCBvcGVyYXRpb248L2xpPiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIjxsaT53cml0ZSBwcm9ncmFtIGJhc2VkIG9uIHRoZSBwcm9wb3J0aW9uIGFi
b3ZlPC9saT4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIjwvdWw+IiwKKyAgICAgICAgICAg
ICAgICAgICAgIjwvbGk+IiwKKyAgICAgICAgICAgICAgICAgICAgIjxsaT5UeXBlcyBvZiBTeW50
aGV0aWMgQmVuY2htYXJrIGFyZToiLAorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bD4iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGk+V2hldHN0b25lPC9saT4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICI8bGk+RGhyeXN0b25lPC9saT4iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIjwvdWw+IiwKKyAgICAgICAgICAgICAgICAgICAgIjwvbGk+IiwKKyAgICAg
ICAgICAgICAgICAgICAgIjxsaT5UaGVzZSB3ZXJlIHRoZSBmaXJzdCBnZW5lcmFsIHB1cnBvc2Ug
aW5kdXN0cnkgc3RhbmRhcmQgY29tcHV0ZXIgYmVuY2htYXJrcy4gVGhleSBkbyBub3QgbmVjZXNz
YXJpbHkgb2J0YWluIGhpZ2ggc2NvcmVzIG9uIG1vZGVybiBwaXBlbGluZWQgY29tcHV0ZXJzLjwv
bGk+IiwKKyAgICAgICAgICAgICAgICAiPC91bD4iLAorICAgICAgICAgICAgIjwvbGk+IiwKKyAg
ICAgICAgICAgICI8bGk+SS9PIGJlbmNobWFya3M8L2xpPiIsCisgICAgICAgICAgICAiPGxpPkRh
dGFiYXNlIGJlbmNobWFya3M6IHRvIG1lYXN1cmUgdGhlIHRocm91Z2hwdXQgYW5kIHJlc3BvbnNl
IHRpbWVzIG9mIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtcyAoREJNUycpPC9saT4iLAorICAg
ICAgICAgICAgIjxsaT5QYXJhbGxlbCBiZW5jaG1hcmtzOiB1c2VkIG9uIG1hY2hpbmVzIHdpdGgg
bXVsdGlwbGUgY29yZXMsIHByb2Nlc3NvcnMgb3Igc3lzdGVtcyBjb25zaXN0aW5nIG9mIG11bHRp
cGxlIG1hY2hpbmVzPC9saT4iLAorICAgICAgICAiPC9vbD4iLAorICAgICAgICAiPGgyPkNvbW1v
biBiZW5jaG1hcmtzPC9oMj4iLAorICAgICAgICAiPHVsPiIsCisgICAgICAgICAgICAiPGxpPkJ1
c2luZXNzIEFwcGxpY2F0aW9ucyBQZXJmb3JtYW5jZSBDb3Jwb3JhdGlvbiAoQkFQQ28pPC9saT4i
LAorICAgICAgICAgICAgIjxsaT5FbWJlZGRlZCBNaWNyb3Byb2Nlc3NvciBCZW5jaG1hcmsgQ29u
c29ydGl1bSAoRUVNQkMpPC9saT4iLAorICAgICAgICAgICAgIjxsaT5TdGFuZGFyZCBQZXJmb3Jt
YW5jZSBFdmFsdWF0aW9uIENvcnBvcmF0aW9uIChTUEVDKSwgaW4gcGFydGljdWxhciB0aGVpciBT
UEVDaW50IGFuZCBTUEVDZnA8L2xpPiIsCisgICAgICAgICAgICAiPGxpPlRyYW5zYWN0aW9uIFBy
b2Nlc3NpbmcgUGVyZm9ybWFuY2UgQ291bmNpbCAoVFBDKTwvbGk+IiwKKyAgICAgICAgICAgICI8
bGk+Q29yZW1hcms6IEVtYmVkZGVkIGNvbXB1dGluZyBiZW5jaG1hcms8L2xpPiIsCisgICAgICAg
ICI8L3VsPiIsCisgICAgICAgICI8aDM+T3BlbiBzb3VyY2UgYmVuY2htYXJrczwvaDM+IiwKKyAg
ICAgICAgIjx1bD4iLAorICAgICAgICAgICAgIjxsaT5BSU0gTXVsdGl1c2VyIEJlbmNobWFyazog
Y29tcG9zZWQgb2YgYSBsaXN0IG9mIHRlc3RzIHRoYXQgY291bGQgYmUgbWl4ZWQgdG8gY3JlYXRl
IGEg4oCYbG9hZCBtaXjigJkgdGhhdCB3b3VsZCBzaW11bGF0ZSBhIHNwZWNpZmljIGNvbXB1dGVy
IGZ1bmN0aW9uIG9uIGFueSBVTklYLXR5cGUgT1MuPC9saT4iLAorICAgICAgICAgICAgIjxsaT5C
b25uaWUrKzogZmlsZXN5c3RlbSBhbmQgaGFyZCBkcml2ZSBiZW5jaG1hcms8L2xpPiIsCisgICAg
ICAgICAgICAiPGxpPkJSTC1DQUQ6IGNyb3NzLXBsYXRmb3JtIGFyY2hpdGVjdHVyZS1hZ25vc3Rp
YyBiZW5jaG1hcmsgc3VpdGUgYmFzZWQgb24gbXVsdGl0aHJlYWRlZCByYXkgdHJhY2luZyBwZXJm
b3JtYW5jZTsgYmFzZWxpbmVkIGFnYWluc3QgYSBWQVgtMTEvNzgwOyBhbmQgdXNlZCBzaW5jZSAx
OTg0IGZvciBldmFsdWF0aW5nIHJlbGF0aXZlIENQVSBwZXJmb3JtYW5jZSwgY29tcGlsZXIgZGlm
ZmVyZW5jZXMsIG9wdGltaXphdGlvbiBsZXZlbHMsIGNvaGVyZW5jeSwgYXJjaGl0ZWN0dXJlIGRp
ZmZlcmVuY2VzLCBhbmQgb3BlcmF0aW5nIHN5c3RlbSBkaWZmZXJlbmNlcy48L2xpPiIsCisgICAg
ICAgICI8L3VsPiIsCisgICAgIjwvZGl2PiIKK107CisKK0xheWVyaW5nVGV4dFN0YWdlLnBhcnNl
VGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbSkKK3sKKyAgICB2YXIgcGFyc2VSZXN1bHQgPSB7
fTsKKyAgICBwYXJzZVJlc3VsdC50YWdTdGFydCA9IHRleHRJdGVtLm1hdGNoKC88KC4qPyk+L2cp
WzBdOworICAgIHZhciBzcGFjZUluZGV4ID0gcGFyc2VSZXN1bHQudGFnU3RhcnQuaW5kZXhPZigi
ICIpOworICAgIHBhcnNlUmVzdWx0Lm5vZGVOYW1lID0gcGFyc2VSZXN1bHQudGFnU3RhcnQuc3Vi
c3RyaW5nKDEsIHNwYWNlSW5kZXggIT0gLTEgPyBzcGFjZUluZGV4IDogcGFyc2VSZXN1bHQudGFn
U3RhcnQubGVuZ3RoIC0gMSk7CisgICAgcGFyc2VSZXN1bHQuYXJncyA9IHNwYWNlSW5kZXggIT0g
LTEgPyBVdGlsaXRpZXMucGFyc2VBcmd1bWVudHMocGFyc2VSZXN1bHQudGFnU3RhcnQuc3Vic3Ry
aW5nKHNwYWNlSW5kZXggKyAxLCBwYXJzZVJlc3VsdC50YWdTdGFydC5sZW5ndGggLSAxKSkgOiB7
fTsKKyAgICB2YXIgdGFnRW5kID0gIjwvIiArIHBhcnNlUmVzdWx0Lm5vZGVOYW1lICsgIj4iOyAg
ICAgICAgICAgICAgICAKKyAgICBwYXJzZVJlc3VsdC50YWdFbmQgPSB0ZXh0SXRlbS5lbmRzV2l0
aCh0YWdFbmQpID8gdGFnRW5kIDogIiI7CisgICAgcmV0dXJuIHBhcnNlUmVzdWx0OworfQorCitM
YXllcmluZ1RleHRTdGFnZS5pc09wZW5pbmdUZXh0SXRlbSA9IGZ1bmN0aW9uKHRleHRJdGVtKQor
eworICAgIHJldHVybiAhTGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VUZXh0SXRlbSh0ZXh0SXRlbSku
dGFnRW5kLmxlbmd0aDsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDbG9zaW5nVGV4dEl0ZW0g
PSBmdW5jdGlvbih0ZXh0SXRlbSkKK3sKKyAgICByZXR1cm4gdGV4dEl0ZW0uaW5kZXhPZigiLyIp
ID09ICsxOworfQorCitMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFncyA9IExheWVyaW5n
VGV4dFN0YWdlLnRleHRJdGVtcy5tYXAoZnVuY3Rpb24odGV4dEl0ZW0pCit7CisgICB2YXIgdGV4
dEl0ZW1GbGFncyA9IHt9OworICAgdGV4dEl0ZW1GbGFncy5pc09wZW5pbmcgPSBMYXllcmluZ1Rl
eHRTdGFnZS5pc09wZW5pbmdUZXh0SXRlbSh0ZXh0SXRlbSk7CisgICB0ZXh0SXRlbUZsYWdzLmlz
Q2xvc2luZyA9IExheWVyaW5nVGV4dFN0YWdlLmlzQ2xvc2luZ1RleHRJdGVtKHRleHRJdGVtKTsg
ICAKKyAgIHJldHVybiB0ZXh0SXRlbUZsYWdzOworfSk7CisKK0xheWVyaW5nVGV4dFN0YWdlLmlz
Q29sb3JhYmxlVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKQoreworICAgIHJldHVy
biAhKHRleHRJdGVtRmxhZ3MuaXNPcGVuaW5nIHx8IHRleHRJdGVtRmxhZ3MuaXNDbG9zaW5nKTsK
K30KKworTGF5ZXJpbmdUZXh0U3RhZ2UuaXNJbnNlcnRhYmxlVGV4dEl0ZW0gPSBmdW5jdGlvbih0
ZXh0SXRlbUZsYWdzKQoreworICAgIHJldHVybiAhdGV4dEl0ZW1GbGFncy5pc0Nsb3Npbmc7Cit9
CisKK0xheWVyaW5nVGV4dFN0YWdlLmNvbG9yYWJsZVRleHRJdGVtcyA9IExheWVyaW5nVGV4dFN0
YWdlLnRleHRJdGVtc0ZsYWdzLmZpbHRlcihmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKQoreworICAg
IHJldHVybiBMYXllcmluZ1RleHRTdGFnZS5pc0NvbG9yYWJsZVRleHRJdGVtKHRleHRJdGVtRmxh
Z3MpOworfSkubGVuZ3RoOworCitMYXllcmluZ1RleHRTdGFnZS5pbnNlcnRhYmxlVGV4dEl0ZW1z
ID0gTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MuZmlsdGVyKGZ1bmN0aW9uKHRleHRJ
dGVtRmxhZ3MpCit7CisgICAgcmV0dXJuIExheWVyaW5nVGV4dFN0YWdlLmlzSW5zZXJ0YWJsZVRl
eHRJdGVtKHRleHRJdGVtRmxhZ3MpOworfSkubGVuZ3RoOworCitMYXllcmluZ1RleHRTdGFnZS5j
b2xvckluZGV4VG9UZXh0RWxlbWVudEluZGV4ID0gZnVuY3Rpb24oY29sb3JJbmRleCkKK3sKKyAg
ICB2YXIgdGV4dEVsZW1lbnRJbmRleCA9IDA7CisgICAgdmFyIGluZGV4ID0gMDsKKyAgICAKKyAg
ICBmb3IgKHZhciB0ZXh0SXRlbUluZGV4ID0gMDsgdGV4dEl0ZW1JbmRleCA8IExheWVyaW5nVGV4
dFN0YWdlLnRleHRJdGVtc0ZsYWdzLmxlbmd0aDsgKyt0ZXh0SXRlbUluZGV4KSB7CisgICAgICAg
IGlmIChMYXllcmluZ1RleHRTdGFnZS5pc0NvbG9yYWJsZVRleHRJdGVtKExheWVyaW5nVGV4dFN0
YWdlLnRleHRJdGVtc0ZsYWdzW3RleHRJdGVtSW5kZXhdKSkgeworICAgICAgICAgICAgaWYgKCsr
aW5kZXggPiBjb2xvckluZGV4KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGlmIChMYXllcmluZ1RleHRTdGFnZS5pc0luc2VydGFibGVUZXh0SXRlbShMYXllcmlu
Z1RleHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0ZXh0SXRlbUluZGV4XSkpCisgICAgICAgICAgICAr
K3RleHRFbGVtZW50SW5kZXg7CisgICAgfQorICAgIAorICAgIHJldHVybiB0ZXh0RWxlbWVudElu
ZGV4OworfQorCitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0
YWdlLnByb3RvdHlwZSk7CitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBMYXllcmluZ1RleHRTdGFnZTsKKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9uZXh0
VGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKQoreworICAgIHZhciB0ZXh0SXRlbSA9
IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc1t0aGlzLl90ZXh0SXRlbUluZGV4XTsKKyAgICBV
dGlsaXRpZXMuZXh0ZW5kT2JqZWN0KHRleHRJdGVtRmxhZ3MsIExheWVyaW5nVGV4dFN0YWdlLnRl
eHRJdGVtc0ZsYWdzW3RoaXMuX3RleHRJdGVtSW5kZXhdKTsKKyAgICB0aGlzLl90ZXh0SXRlbUlu
ZGV4ID0gKHRoaXMuX3RleHRJdGVtSW5kZXggKyAxKSAlIExheWVyaW5nVGV4dFN0YWdlLnRleHRJ
dGVtcy5sZW5ndGg7CisgICAgcmV0dXJuIHRleHRJdGVtOworfQorCitMYXllcmluZ1RleHRTdGFn
ZS5wcm90b3R5cGUuX3ByZXZpb3VzVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKQor
eworICAgIHRoaXMuX3RleHRJdGVtSW5kZXggPSAodGhpcy5fdGV4dEl0ZW1JbmRleCArIExheWVy
aW5nVGV4dFN0YWdlLnRleHRJdGVtcy5sZW5ndGggLSAxKSAlIExheWVyaW5nVGV4dFN0YWdlLnRl
eHRJdGVtcy5sZW5ndGg7CisgICAgVXRpbGl0aWVzLmV4dGVuZE9iamVjdCh0ZXh0SXRlbUZsYWdz
LCBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0aGlzLl90ZXh0SXRlbUluZGV4XSk7
ICAgIAorICAgIHJldHVybiBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNbdGhpcy5fdGV4dEl0
ZW1JbmRleF07Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fcHVzaFRleHRFbGVt
ZW50ID0gZnVuY3Rpb24oKQoreworICAgIHZhciB0ZXh0SXRlbUZsYWdzID0ge307CisgICAgdmFy
IHRleHRJdGVtID0gdGhpcy5fbmV4dFRleHRJdGVtKHRleHRJdGVtRmxhZ3MpOworICAgIGZvciAo
IDsgdGV4dEl0ZW1GbGFncy5pc0Nsb3Npbmc7IHRleHRJdGVtID0gdGhpcy5fbmV4dFRleHRJdGVt
KHRleHRJdGVtRmxhZ3MpKQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudCA9IHRoaXMu
X3RleHRFbGVtZW50UGFyZW50LnBhcmVudE5vZGU7CisKKyAgICB2YXIgcGFyc2VSZXN1bHQgPSBM
YXllcmluZ1RleHRTdGFnZS5wYXJzZVRleHRJdGVtKHRleHRJdGVtKTsKKyAgICB0ZXh0SXRlbSA9
IHRleHRJdGVtLnN1YnN0cmluZyhwYXJzZVJlc3VsdC50YWdTdGFydC5sZW5ndGgsIHRleHRJdGVt
Lmxlbmd0aCAtIHBhcnNlUmVzdWx0LnRhZ0VuZC5sZW5ndGgpOworCisgICAgdmFyIHRleHRFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChwYXJzZVJlc3VsdC5ub2RlTmFtZSk7CisKKyAg
ICBmb3IgKHZhciBhdHRybmFtZSBpbiBwYXJzZVJlc3VsdC5hcmdzKQorICAgICAgICB0ZXh0RWxl
bWVudC5zZXRBdHRyaWJ1dGUoYXR0cm5hbWUsIHBhcnNlUmVzdWx0LmFyZ3NbYXR0cm5hbWVdKTsK
KworICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50LmFwcGVuZENoaWxkKHRleHRFbGVtZW50KTsK
KyAgICAKKyAgICBpZiAoIXBhcnNlUmVzdWx0LnRhZ0VuZC5sZW5ndGgpCisgICAgICAgIHRoaXMu
X3RleHRFbGVtZW50UGFyZW50ID0gdGV4dEVsZW1lbnQ7CisKKyAgICB0ZXh0RWxlbWVudC5pbm5l
ckhUTUwgPSB0ZXh0SXRlbTsKKyAgICAKKyAgICB0aGlzLl90ZXh0RWxlbWVudHMucHVzaCh0ZXh0
RWxlbWVudCk7CisgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7Cit9CisKK0xh
eWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fcG9wVGV4dEVsZW1lbnQgPSBmdW5jdGlvbigpCit7
CisgICAgdmFyIHRleHRJdGVtRmxhZ3MgPSB7fTsgICAgCisgICAgdmFyIHRleHRJdGVtID0gdGhp
cy5fcHJldmlvdXNUZXh0SXRlbSh0ZXh0SXRlbUZsYWdzKTsKKyAgICBmb3IgKCA7IHRleHRJdGVt
RmxhZ3MuaXNDbG9zaW5nOyB0ZXh0SXRlbSA9IHRoaXMuX3ByZXZpb3VzVGV4dEl0ZW0odGV4dEl0
ZW1GbGFncykpCisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGhpcy5fdGV4dEVs
ZW1lbnRQYXJlbnQubGFzdENoaWxkOworCisgICAgaWYgKHRleHRJdGVtRmxhZ3MuaXNPcGVuaW5n
KQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudCA9IHRoaXMuX3RleHRFbGVtZW50UGFy
ZW50LnBhcmVudE5vZGU7CisKKyAgICB0aGlzLl90ZXh0RWxlbWVudHNbdGhpcy5fdGV4dEVsZW1l
bnRzLmxlbmd0aCAtIDFdLnJlbW92ZSgpOworCisgICAgdGhpcy5fdGV4dEVsZW1lbnRzLnBvcCgp
OworICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOworfQorCitMYXllcmluZ1Rl
eHRTdGFnZS5wcm90b3R5cGUuX2NvbG9yVGV4dEl0ZW0gPSBmdW5jdGlvbihjb2xvcikKK3sKKyAg
ICB2YXIgdGV4dEVsZW1lbnRJbmRleCA9IExheWVyaW5nVGV4dFN0YWdlLmNvbG9ySW5kZXhUb1Rl
eHRFbGVtZW50SW5kZXgodGhpcy5fY29sb3JJbmRleCk7CisgICAgZm9yICggOyB0ZXh0RWxlbWVu
dEluZGV4IDwgdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsgdGV4dEVsZW1lbnRJbmRleCArPSBM
YXllcmluZ1RleHRTdGFnZS5pbnNlcnRhYmxlVGV4dEl0ZW1zKQorICAgICAgICB0aGlzLl90ZXh0
RWxlbWVudHNbdGV4dEVsZW1lbnRJbmRleF0uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gY29sb3I7
Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGlt
ZURlbHRhKQoreworICAgIHRoaXMuX2NvbG9yVGV4dEl0ZW0oInRyYW5zcGFyZW50Iik7CisgICAg
dGhpcy5fY29sb3JJbmRleCA9ICh0aGlzLl9jb2xvckluZGV4ICsgMSkgJSBMYXllcmluZ1RleHRT
dGFnZS5jb2xvcmFibGVUZXh0SXRlbXM7CisgICAgdGhpcy5fY29sb3JUZXh0SXRlbSgiWWVsbG93
R3JlZW4iKTsKKyAgICAKKyAgICB2YXIgYmxhY2tUZXh0RWxlbWVudHMgPSBNYXRoLm1pbih0aGlz
Ll90ZXh0RWxlbWVudHMubGVuZ3RoLCBMYXllcmluZ1RleHRTdGFnZS5pbnNlcnRhYmxlVGV4dEl0
ZW1zKTsKKyAgICB2YXIgaSA9IDA7CisgICAgZm9yICggOyBpIDwgdGhpcy5fdGV4dEVsZW1lbnRz
Lmxlbmd0aCAtIGJsYWNrVGV4dEVsZW1lbnRzOyArK2kpCisgICAgICAgIHRoaXMuX3RleHRFbGVt
ZW50c1tpXS5zdHlsZS5jb2xvciA9ICh0aGlzLl9hbmltYXRlQ291bnRzICYgMSkgPyAiTGlnaHRZ
ZWxsb3ciIDogIndoaXRlIjsKKworICAgIGZvciAoIDsgaSA8IHRoaXMuX3RleHRFbGVtZW50cy5s
ZW5ndGg7ICsraSkKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRzW2ldLnN0eWxlLmNvbG9yID0g
ImJsYWNrIjsKKyAgICAgICAgCisgICAgKyt0aGlzLl9hbmltYXRlQ291bnRzOworfQorCitMYXll
cmluZ1RleHRTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KQoreworICAgIGNv
dW50ID0gY291bnQgPiAwID8gTWF0aC5mbG9vcihjb3VudCkgOiBNYXRoLmNlaWwoY291bnQpOwor
CisgICAgaWYgKGNvdW50ID09IDApCisgICAgICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMu
bGVuZ3RoOworCisgICAgaWYgKGNvdW50ID4gMCkgeworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICB0aGlzLl9wdXNoVGV4dEVsZW1lbnQoKTsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7CisgICAgfQorICAgICAgICAK
KyAgICBjb3VudCA9IE1hdGgubWluKC1jb3VudCwgdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aCk7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICB0aGlzLl9wb3BU
ZXh0RWxlbWVudCgpOworCisgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7Cit9
CisKK2Z1bmN0aW9uIExheWVyaW5nVGV4dEJlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhp
cywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisK
K0xheWVyaW5nVGV4dEJlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQmVu
Y2htYXJrLnByb3RvdHlwZSk7CitMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0gTGF5ZXJpbmdUZXh0QmVuY2htYXJrOworCitMYXllcmluZ1RleHRCZW5jaG1hcmsu
cHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKK3sKKyAgICByZXR1cm4g
bmV3IExheWVyaW5nVGV4dFN0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCit3aW5k
b3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgcmV0dXJuIG5ldyBMYXllcmluZ1Rl
eHRCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jh
cik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2Vz
L3lpbi15YW5nLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBh
IGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnBuZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5n
LnBuZwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9y
ZXNvdXJjZXMveWluLXlhbmcucG5nCSh3b3JraW5nIGNvcHkpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnBu
ZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMKK2ltYWdlL3Bu
ZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CgppVkJPUncwS0dnb0FBQUFOU1VoRVVn
QUFBR1FBQUFCa0NBWUFBQUJ3NHBWVUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOCkFB
QjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFDWEJJV1hN
QUFBc1RBQUFMRXdFQW1wd1kKQUFBQ0JHbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFB
QVBIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdQpjenB0WlhSaEx5SWdlRHA0YlhC
MGF6MGlXRTFRSUVOdmNtVWdOUzQwTGpBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5
CkltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1
Y3lNaVBnb2dJQ0FnSUNBOGNtUm0KT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJZ29n
SUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenBsZUdsbVBTSm9kSFJ3T2k4dgpibk11WVdSdlltVXVZMjl0
TDJWNGFXWXZNUzR3THlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZM
MjV6CkxtRmtiMkpsTG1OdmJTOTBhV1ptTHpFdU1DOGlQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFh
WGhsYkZsRWFXMWxibk5wYjI0K01URXcKUEM5bGVHbG1PbEJwZUdWc1dVUnBiV1Z1YzJsdmJqNEtJ
Q0FnSUNBZ0lDQWdQR1Y0YVdZNlVHbDRaV3hZUkdsdFpXNXphVzl1UGpFdwpOVHd2WlhocFpqcFFh
WGhsYkZoRWFXMWxibk5wYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2s5eWFXVnVkR0YwYVc5dVBq
RThMM1JwClptWTZUM0pwWlc1MFlYUnBiMjQrQ2lBZ0lDQWdJRHd2Y21SbU9rUmxjMk55YVhCMGFX
OXVQZ29nSUNBOEwzSmtaanBTUkVZK0Nqd3YKZURwNGJYQnRaWFJoUGdvVW5BMitBQUFOV0VsRVFW
UjRBZTFkZld3VTFSWS91NlZDVzBxcmlDUWtVQ0ZSUUFKSUNBaFJvY1RFWWcwRQpWRVQ4Q3hBU0VT
SXh3aDhhQlRIQnFEVUdBKzg5RFdENHh3OVFpMEZqU0VTdGlaRldxUkhDcTZEUUJKTlhxbnpJUjRy
WVVzNDd2ek1NCkhZYmR6bTczN256czlpU3pNN3N6ZXovT2IrNDk1NTU3N3preENqa3g4M2dwNGh3
NXB0S3BVOFBvMkxGQjFOSlNRaWRPRk5LNWN3VjAKNFFKUmUzdE1xM0hERFV6RnhVUURCblRTb0VF
ZE5HUklHMVZVbktDQkEzK1grM3ZsK0RRV2krM1haMFA2WVZVa1JJVVRBR1pLY1piVApvVU1UcWI3
K0ZtcHNMS0NmZnliYUwzeHNieWRpdHM2cGxEa2VKNHBKRlFzTGlXNjdqZWl1dTRqdXZydVRwa3o1
azBhTjJpZEovRnNBCjJwMUtVbm4xaklDd2xOdmE5dlAyN2UyOGFCSHpzR0hNdzRjelAvZ2c4NzMz
TWhjWEF3WXpSMGtKYy8vK3pBTUhNcytieDVvbjhwWXkKNUJYVDNaVVZCb3lSWXc5Lzhrazd6NS9Q
M0tjUGMzVTE4NlpOekY5OXhieDRzUmtBdklBc0syT094NWtmZUlDNXRyWmR5eVJsYzVjMwpaNzlM
aGVmdzhlTkhlZDI2eTlvU0tpdVozM21IK2ZScHVTVlVVOE5jVU9BUEdHNnd5c3V0bG9PeW9ZeFMx
bHdHWWpZZk9mSS9YckdDCk9SWmpmdW9wNXA5K1VnejBvN1dWZWRhc1lJQndBMU5VWkpWanlSTFdN
alBQemhsZ2hObEQrZVRKSm43bUdlYStmWm1mZjU0WnpIZFMKUXdQemlCSGhBTU1KRGxvcURydzhx
SVBVSmRMQVNBVzI4SVlOblR4Z0FQUEtsZGNEQVZDKytZYTV0RFI4WURpQndZdlVyeDlMWFM2aApU
cEVEUlFvOWcrdnJ6NnFHQkVIdDdKcms1bFZDeXdnN0dFNWdvQUNNSGN0YU42bGpKSUFSWm0vZzll
c3ZxMm9KWVoyTTBHMkZzWnR5CkFwRHN1ckNRK1pWWExxT3VvUVZGQ2xjaW1zbC9WVENqVlRRM0o0
UEMrajBzQWp3WjA3MStSMnVaTm8yMXpsTDNVQUVqSEo3QVgzL2QKcG1yczJyWGRBNEc3VUcyOUto
eVYreGhnb3U3Q2cxQ0FJZ1dwNG5mZjdWQU5hdnQyc0x0N1Fzc0phcHlSTFpCUkgvQkFlQkVvS0ZL
QQpoZno2NjUxcTVvQ0FUb1g4R29Gbmkvbkowb1U1cHFhbUV6d0pCQlRKZURXLzlOSmx2dk5PYjNs
aEEzWHdZTzUwVlltQWdWekJLRjk0CjR5c29lQXNVak1tVEU0OHRiQURjWjR6U0UxVWtsMzdyQXNX
ZmxpSThydEp1Q2kzRFBlSjJBK0Q4ZmtuR1ZGRWFjMlR5a2dBVXEvdksKcmt3Ui9rNVE0UVhUdUpk
YTZ3UUQxenQyNUg3cmNJSUltYkp0R3dSOWRyUXZTYmhFMVR1WUVWSVY0QURDcGx3VjVrNFEzTmZR
dml5VgoyUHc0aFZ0YW1uU2NrWXBxYTRQZ1BFZDFWTzVtY3JyZk1VNlJBYk5SSVM5ODNhQWo4RlFH
ZlU0UTdHdkltblFya3Nyemp6L08vTzIzCnpCY3ZXZ2V1OFZzcS8vWHpHWXpvVFpsWkpLRVphcHVD
T2FTbkJJdXVhUWE4OFVieTB1Q2U2Znd5U1E5QzNySjlaVzZRVk1zbUJGUzYKUXR6SnJtM2J6RElJ
cmNDTHd0WlNZSkJzYURpYlVkY2xkZDZpSnZUdXJMWmVqTUY5MDdZcmRFMWVoR2N5ZWF1ejhkOXg0
MURxbnMybgp5QitINnVSU0psMlZ6YlIxNjh3eUJ6TERpL0JNTnBpYVNacm91akJoMTVPWlI1Mnl4
RXhmc3NrbEw0WTQ3L2NDMHZWeVlPYngxS21tClpGMlhyQ1M3bm9TWHMybjkrdEcwYUJIUkJBUGpH
cXdtTkVrTkRkNnBwZktNZHlybW53QTBMNzQ0V25tY2F1cTYwZ0lEd0hSTUk4NFcKNGI3dUZlcGRM
UVJkSGdhTXNnSW5KVHlFbDNOMHFRNVdoNWlpZkZkNzNYSUhnR0NKVVNycnZtUlUyYXpycGt5MURt
U2I3d05ETnlEMgo5OWJXbzkyMkVtSGRHTFhuWXgyU2FjcFgwNG5OZlBjWmkvRmVmaGx6SjhtWHJj
ck5QV3F2TXFGWnVRSE5SK09pR3dUM2Q5aTVoT2ZPClZuS3RsbFZiTzQxR2pEQ2pXVGx6d2ZWTTdE
TG9wV3M0ME5sSnRIUG5OT2R2VndFUnBKYlNqaDJGdEdDQjg3NjU2NGNlSWlvdE5aZGUKTHFSMDVn
elJsaTFpVTBtd0ZVTDNaMkJMZ0wwS0hZM0pOT1hERks2N1cvTDZEbzNyd29YOTl2dDF0WVhRNTUr
UHB2dnZKN3J4UnZ1ZQorZk9UVDVwUE0rb3A5dTlQeXZzcjlWQkFwQ0ZVMCs3ZGhWUmRuZDNxalJH
Rll2SGk3T1lSdGRUUGlnSDQ0NC9SYlhVeFg3NThwdHJWCjRjT21PNm5yMDh2RmhYSmUzWkxYZlV2
YitnenZrdFZsWVlObFFRSFI3YmRuLy8wYVBwem8xVmV6bjArVWN2am5INkxEaHllaXlCWWcKMk8w
NmRhcC9WVmkxaW1qV0xQL3lDM3RPMkNrTURJUmt0NlBzQThmVzQwbVQvQzMyNXMya1l4NS9jdzFu
YnVmUEUzMzNuYWhiUEI0dApaSzd1QVIrUC9mayswdURCUkI5ODBEczJzVm4rd3crNG1ndEFwdEF2
dnhEZGNZZDl5Ny96NU1sRXUzYjFnZ0tPTnpmamMwcGMzVlZnCkNJODNOZ2lxckNUYUkrWWNtR3p5
bVRvNmlFNmZIaFpYM3lFVkZjR3lBaTNsKysvelc5RDM2MGZBSXE2T1hJWU1DUllRNUk0V2l1NnIK
cG9aVUJRKytSUDZYUUp6cXhOV3J6aTJxY2ZsZmdFUTVRaVgrN2JmOEc5RkRiSnc4V1JoWEYwZGxa
WWxZRTl4dkdEeHUzVXAwOENEUgppaFg1SWZRaFE4NmVMWWlydjZrUzg0dXpqYUFKMjlmR2pVUi8v
VVV5TldDMW1sd1YvcGN1RWJEb284Ni80RThxekFTenpyeDUxb0Z5Ci92RUhxYXArN0JoSmw2c1Zv
YlZydzF3RDc3S2h5eEpIYkgyOG53emhFMUFBM0dyNm1qWFhGeFM2ZlYwZGlTV2JxTGFXQ0pVT09j
VUoKYnZIUWYrVWlvWHVEdVIvZEhibzlkSC9vQnNOSTZBVUVpN2o2S0d4ckMyTVJ6WllKMDhkUUVL
QW9RR0dBNGhBbTZpT2RsYXp3akt2RApTTXp0NWhPaDFVQzFob29kRm9JY0x5dnJqS3YzVGdqR2ZD
TjBFUmlFWWpEcWxrZEI4QUxsdWZubWpyaTZVbTFwQ2FJSTRjZ1Q4ekl3CjI4QjhFelNKVzl1NCty
V0YrcGpQQk9FUEEyZGxaWEJjdUhpUmdFVmNuUXlqdVVDM3oyZUMwRWYzRlZSTGdReTU2YWJmNDRK
QlBZMGUKVGRUVWxNOXdXSFVIS0pnMEMwS21XQmFJdlFCa0oyRzJFSjZqZThtYWw4SDBzdDlrdGN4
UDQrb0xmZUxFVHZyeFI3K0xFTjc4SU9qOQpWSW5STXUrNXB4TllvSVhJeEtINFF0KzdON3dNQ3FK
a1dLcmsxK0FSKzZ1QWdaQUZ5S2hSaldybitmWFhJS29lemp5aDZMendnajlsCjY5dVhhT1JJQkFl
NEFnalJ2K2krKzRpKy9OS2ZBa1FsRjR6by9iQjlnZmNTcVFFZjJrSTBaTVBNbVIzMHhSZjRyWmVj
SE1qMkFuRk0KRGo3eVNJY2ROaU5tNTQzdENHSkxHVWQvU2xlV3pSWHdkb1pST1dNUkcvaVJMZE05
dXNiejV3L0Vpb3RGMWUzcXNtQnAzRVFQUDB6MAowVWRSWVpVLzVZUUdoTTFHMmFLcUtxS2lvazEy
OHBaUWwyL1NaRGJUL1BrZE9qQ3k3L2FlTFE1a2F6dGVlVG5Sa2lYb3JoSVBmR1J0CmFmWTJmVjYv
TVNFNnZ4dzlldTNHZjYvdEJhbmU5OXowU2JTU25uaUNaZDliTk5yRysrOFRUWjlPaEVWbU9IQ04z
MHhUTmhaV0ZCVUoKdDFmS0FFUjQzaDFseFhGQU50ckNzODhtZjJ0eHp6U2wrdGFuODV5WDR3QUFK
ZlV3NzFyRE5IUGVleTg1R0RaRDhJeEpzdE0xY1U3SAp0WWFDZ3RCRU11RnV6UG1NU2NZZ0xmZ3c5
R0tNNWVmUVhNNWUrYVZ6UHgzbk0xZGF5V3dOVVlTb09HRWtlQ3J5WWdDZU1VbGUrYVY2CkgrVmF2
aHdsU3krdWxUb3dnd2UwYkxqWnlKUlJVUWFrSnc3TTBFcGtKckdLeExHOGJ3WTJ6VFRGRDBUczlL
SlVudkZLdy9SOW1FbGUKZSsyeXpBekthTEFISkMreUdTZVltYllJOS8rakt0UXpjWUpwNDJmRVRh
eWJvU2ErUjAzdE5lRW1GcUFJNzJhb0UyQVQza2xOQU9GTQpBeTBGMmhSa0NnNWNtMVozN2Z4U0Zk
cUpualBwU1BrS0tKbTVHcmNyRmRWenBxWVRTd1UzRzlGTm81RWhpbk5QbmZGSEZReVVlK3RXCmJ6
VTdVY3ZBYjdCWHRiYWFkY1ovcFpWWTRTb3dZS3l2anpKNzB5ODd3bnduWTNoM3YyTUFXRmVIQ0c0
bDRLRnhrb1N0Z0M2MzNzcU0KWnB3UGRPNWN6NkxLWlR1Z2k0MnVZRkNsNFh6U0RYa1VWZkEyYmt5
L2RVQ0kreEh5eUFIS1F2VmVPbWxTZU8xZHBsNkFNV1BTQXdSZwpXSkhhRnRyODh1VXM5VjJ0R2FP
bDVHcjNsYTR3N3dKanRTOGd1RE1SVUJacTA0Uk15VFZCajZoeUNIN1duZEIyM2dzNnNLUU5qb0JT
CnBkSElvSDE5K0tHcGppTDRkRmF0U2gwTWFGTldSTGFlMmFoc1pwbzZDL2VzNE1RVkZjeHIxZ1RQ
ekV4THNHdFg2bUJnbkdHcHRoTk0KOGROSU9zS0RFbzNraHJEY01MTkVWYTZnM0lNSGV3TUNlWUVS
K1BIalRhaTdFU1ptSXhFcDNBYTFmWldVTUdjYUtpblROejNkLzJQTQpnWEN5VHRtUTZEb0tBZTZk
NEFvZlppQUFscjVCYUMyTmplbXl4di9uQVVabFpmZGdvRlhBaEk2NlNSMmRkWTdFdFJSNmk4WmNR
a1dlCmZqcThZeFowVTkyMURGaVNNZFAzMWx1ZHFGTWttSitza0ZLQm9ZaTVwSFAwME1TZWV5NWN3
RUNBSjVNWjBKNXdZQTRjZGVoSk1LOWsKakFuNmQ2bk1iQTJsQlAvdnNSanpzbVhCZG1VWVp5UlRi
UkhiQTdJRFVYQ3dBaWZkQlFsQk16dWQvS1Z5YzhRYzNhekJUS0FtVDUvTwovUGJiZUFQbGxrK0VF
WGlpUVY5NXVXVXVSNkFWbERHVmtFVHBWRDdNejBwbHhVZ2thNGxyYTl2NXNjZVlvYmxBQVlBeDc5
QWg4OGhBCmFDTnR0MjBLOGczZEV2SkdXVkNtN3FMZWhKbXBwc29tREZpS2tBMFNjNzJkRVlrSExR
Zm1tQVVMbU45OEV5R3dtYytja2NmU0pBaHIKdEFiTVo0RHA2SVpLUzVsaDVzQ0E3dEZIRWVlOVhm
Tk9GTVBEVkFYVFNPZnFocDAwL3BQVlI0WGwxWkxCTXZXRkR2ZmIrL1lWMElFRAoxajU2ZUYyREIx
VnNNeHM3bG1qb1VHeTJ0eFphMTlVUi9mMDNYSzJTT1BZa09uS0VkUE1SUENSZ1V6NFdUR1Byc2V4
MjFRMldJMGMyClNqNy9rYTBBb2RvMkZqcEEzR2dMUU5oWk5GZU9LZkJycTI1dHhYc25IRWJDUjZH
NktCUlBiUG8vMGVMVTNaUjQxWUVqRi9Yakl1NHEKNENGQjd0ZkxzVk1BQ1BXRy9QOERSbnEvYU02
TjhxMEFBQUFBU1VWT1JLNUNZSUk9Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262304</attachid>
            <date>2015-10-01 17:48:48 -0700</date>
            <delta_ts>2015-10-02 17:16:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149053-20151001174822.patch</filename>
            <type>text/plain</type>
            <size>121550</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTA0NDEpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzMSBAQAorMjAxNS0xMC0wMSAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFk
IG9mIG1lYXN1cmluZyB0aGUgRlBTIG9mIHRoZSBhbmltYXRpb24sIHRoaXMgYmVuY2htYXJrIG1l
YXN1cmVzIHRoZQorICAgICAgICB0ZXN0IGNvbXBsZXhpdHkgd2hlbiByZW5kZXJpbmcgYXQgYSBz
ZXQtcG9pbnQgRlBTIHdoaWNoIHNob3VsZCBiZSBsb3dlcgorICAgICAgICB0aGFuIDYwIEZQUy4g
VGhpcyBiZW5jaG1hcmsgdHJpZXMgdG8gc3RheSBhdCB0aGUgc2V0LXBvaW50IEZQUyBieSB1c2lu
ZworICAgICAgICBhIGNsb3NlZCBsb29wIGNvbnRyb2wgc3lzdGVtIFBJRCBmdW5jdGlvbi4gVGhl
IGdhaW4gb2YgdGhlIHN5c3RlbSBpcyBwYXNzZWQKKyAgICAgICAgYXMgYSBwYXJhbWV0ZXIgd2hl
biBydW5uaW5nIHRoZSB0ZXN0LiBNZWFzdXJpbmcgdGhlIEZQUyBmYWl0aGZ1bGx5IHJlc3VsdHMK
KyAgICAgICAgdmVyeSBmbHVjdHVhdGluZyB2YWx1ZXMuIEEgS2FsbWFuIGZpbHRlciBpcyB1c2Vk
IHRvIGdpdmUgYSBiZXR0ZXIgZXN0aW1hdGUKKyAgICAgICAgZm9yIHRoZSBjdXJyZW50IEZQUy4K
KworICAgICAgICBUaGUgYW5pbWF0aW9uIG9mIHRoZSB0ZXN0cyBpcyBkb25lIG1hbnVhbGx5LiBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKSBpcworICAgICAgICBjYWxsZWQgd2l0aCBhIGNhbGxiYWNr
LiBJbnNpZGUgdGhpcyBjYWxsYmFjaywgdGhlIHRlc3QgaXMgYW5pbWF0aW5nIGJ5CisgICAgICAg
IGNoYW5naW5nIHRoZSBwb3NpdGlvbnMgb2YgdGhlIGVsZW1lbnRzIGluc2lkZSB0aGUgcGFnZS4g
VGhlIHRlc3QgY29tcGxleGl0eQorICAgICAgICBtYXkgY2hhbmdlIGFsc28gaWYgdGhlIGN1cnJl
bnQgRlBTIGlzIG5vdCBlcXVhbCB0byB0aGUgZGVzaXJlZCBGUFMuCisKKyAgICAgICAgSW4gdGhp
cyBwYXRjaCwgdGhlIGJlbmNobWFyayBhbmQgdGhlIHRlc3RzIGFyZSBpbmNsdWRlZC4gVGhlIHNo
YXJlZCBjb2RlCisgICAgICAgIGFuZCB0aGUgdGVzdHMgcnVubmVyIGFyZSBpbmNsdWRlZCBpbiBz
ZXBhcmF0ZSBwYXRjaGVzLgorCisgICAgICAgICogQW5pbW9tZXRlcjogQWRkZWQuCisgICAgICAg
ICogQW5pbW9tZXRlci9ydW5uZXI6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVy
L3Jlc291cmNlczogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2Vz
L3Rlc3RzLmpzOiBBZGRlZC4KKyAgICAgICAgKHN1aXRlRnJvbU5hbWUpOiBSZXR1cm5zIGEgc3Vp
dGUgZ2l2ZW4gaXRzIG5hbWUuCisgICAgICAgICh0ZXN0RnJvbU5hbWUpOiBSZXR1cm5zIGEgdGVz
dCBnaXZlbiBpdHMgc3VpdGUgYW5kIG5hbWUuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3Rz
OiBBZGRlZC4KKyAgICAgICAgVGhpcyBkaXJlY3RvcnkgaW5jbHVkZXMgYWxsIHRoZSB0ZXN0IHN1
aXRlcyB0byBiZSBydW4gYnkgdGhlIGJlbmNobWFyay4KKyAgICAgICAgcnVubmVyLiBBbGwgdGhl
IHRlc3RzIHNob3VsZCB0cnkgdG8gcnVuIG9uIHRocmVlIHN0YWdlczogQ1NTLCBjYW52YXMgYW5k
CisgICAgICAgIFNWRy4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXM6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL3Jlc291cmNlczogQWRkZWQuCisgICAgICAgIFRoZSBib3VuY2luZyBwYXJ0
aWNsZXMgdGVzdCBpcyBhbiBleGFtcGxlIG9mIGEgc2ltcGxlIGFuaW1hdGlvbiB0ZWNobmlxdWUu
CisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3Vu
Y2luZy1jc3MtaW1hZ2VzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWlt
YWdlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw6IEFkZGVkLgorICAgICAgICBCb3VuY2lu
ZyBwYXJ0aWNsZXMgdGVzdCBwYWdlcy4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanM6IEFkZGVkLgor
ICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZSk6IEJhc2UgY2xhc3MgZm9yIGEgYm91bmNpbmcgcGFy
dGljbGUuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5jZW50ZXIpOiBSZXR1
cm5zIHRoZSBjZW50ZXIgcG9pbnQgb3IgdGhlIHBhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdQ
YXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZSk6IE1vdmVzIHRoZSBwYXJ0aWNsZSBiYXNlZCBvbiBp
dHMgY3VycmVudCBwb3NpdGlvbiwgYW5nbGUgYW5kIHZlbG9jaXR5LgorICAgICAgICAKKyAgICAg
ICAgKEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IpOiBBIHN1YiBjbGFzcyBvZiBBbmltYXRvci4K
KyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0YWdlKTogUmVwcmVzZW50cyB0
aGUgY29udGFpbmVyIG9mIGFsbCB0aGUgYm91bmNpbmcgcGFydGljbGVzLgorICAgICAgICAoQm91
bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucGFyc2VTaGFwZVBhcmFtdGVycyk6IEdldHMg
dGhlIHNoYXBlIHBhcmFtZXRlcnMgZm9yIHNoYXBlIGFuaW1hdGluZyB0ZXN0cy4KKyAgICAgICAg
KEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnJhbmRvbVJvdGF0ZXIpOiBDcmVhdGVz
IGEgcm90YXRlciBmb3IgdGhlIHBhcnRpY2xlcy4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVz
U3RhZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBBbmltYXRlcyBhbGwgdGhlIHBhcnRpY2xlcy4KKyAg
ICAgICAgKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnR1bmUpOiBDaGFuZ2VzIHRo
ZSB0ZXN0IGJ5IGFkZGluZyBvciByZW1vdmluZyBwYXJ0aWNsZXMuCisgICAgICAgIAorICAgICAg
ICAoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmspOiBSdW5zIHRoZSBiZW5jaG1hcmsgZm9yIGJv
dW5jaW5nIHBhcnRpY2xlcyB0ZXN0LgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1h
cmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyBhbiBhbmltYXRvciBvZiB0eXBl
IEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLXNoYXBlcy5qczogQWRk
ZWQuCisgICAgICAgIChCb3VuY2luZ0Nzc1NoYXBlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQ
YXJ0aWNsZSBmb3IgYW5pbWF0aW5nIENTUyBzaGFwZXMuCisgICAgICAgIChCb3VuY2luZ0Nzc1No
YXBlLnByb3RvdHlwZS5fY3JlYXRlU3Bhbik6IENyZWF0ZXMgYSA8c3Bhbj4gZWxlbWVudCBhbmQg
dGFrZXMgdGhlIHNoYXBlIGFuZCBjbGlwcGluZyBjbGFzc2VzIGludG8gY29uc2lkZXJhdGlvbi4K
KyAgICAgICAgKEJvdW5jaW5nQ3NzU2hhcGUucHJvdG90eXBlLl9tb3ZlKTogTW92ZXMgdGhlIHBh
cnRpY2xlIHRvIGEgbmV3IGxvY2F0aW9uLiBBcHBseSB0cmFuc2Zvcm0gc2luY2UgaXQgZG9lcyBu
b3QgcmVxdWlyZSBsYXlvdXQuCisgICAgICAgIChCb3VuY2luZ0Nzc1NoYXBlLnByb3RvdHlwZS5h
bmltYXRlKTogUm90YXRlcyBhbmQgbW92ZXMgdGhlIHNoYXBlIHRvIGEgbmV3IGxvY2F0aW9uLgor
ICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UpOiBBIHN1YiBjbGFzcyBv
ZiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlIGZvciBhbmltYXRpbmcgQ1NTIHNoYXBlcy4KKyAgICAg
ICAgKEJvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3Jl
YXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNpbmdDc3NTaGFwZS4KKyAgICAgICAgKEJvdW5j
aW5nQ3NzU2hhcGVzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCk6IFJlbW92
ZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBmb3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4gbGlz
dC4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyayk6IEEgc3Vi
IGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrIGZvciBhbmltYXRpbmcgQ1NTIHNo
YXBlcy4KKyAgICAgICAgKEJvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVh
dGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nQ3NzU2hhcGVzU3RhZ2Uu
CisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5j
aG1hcmsgb2YgdHlwZSBCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyay4KKyAgICAgICAgCisgICAg
ICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5j
aW5nLWNzcy1pbWFnZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdDc3NJbWFnZSk6IEEg
c3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUgZm9yIGFuaW1hdGluZyBDU1MgaW1hZ2VzLgor
ICAgICAgICAoQm91bmNpbmdDc3NJbWFnZS5wcm90b3R5cGUuX21vdmUpOiBNb3ZlIHRoZSBwYXJ0
aWNsZSB0byBhIG5ldyBsb2NhdGlvbi4gQXBwbHkgdHJhbnNmb3JtIHNpbmNlIGl0IGRvZXMgbm90
IHJlcXVpcmUgbGF5b3V0LgorICAgICAgICAoQm91bmNpbmdDc3NJbWFnZS5wcm90b3R5cGUuYW5p
bWF0ZSk6IFJvdGF0ZXMgYW5kIG1vdmVzIHRoZSBzaGFwZSB0byBhIG5ldyBsb2NhdGlvbi4KKyAg
ICAgICAgCisgICAgICAgIChCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlKTogQSBzdWIgY2xhc3Mgb2Yg
Qm91bmNpbmdQYXJ0aWNsZXNTdGFnZSBmb3IgYW5pbWF0aW5nIENTUyBpbWFnZXMuCisgICAgICAg
IChCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0
ZXMgYSBwYXJ0aWNsZSBvZiB0eXBlIEJvdW5jaW5nQ3NzSW1hZ2UuCisgICAgICAgIChCb3VuY2lu
Z0Nzc0ltYWdlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1vdmVz
IHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZm9ybSB0aGUgcGFyZW50IGNoaWxkcmVuIGxpc3Qu
CisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmspOiBBIHN1YiBj
bGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyayBmb3IgYW5pbWF0aW5nIENTUyBpbWFn
ZXMuCisgICAgICAgIChCb3VuY2luZ0Nzc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRl
U3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlLgor
ICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2ht
YXJrIG9mIHR5cGUgQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsuCisgICAgICAgIAorICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2lu
Zy1jYW52YXMtcGFydGljbGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzUGFy
dGljbGUpOiBBIGJhc2Ugc3ViLWNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUgZm9yIGFuaW1hdGlu
ZyBjYW52YXMgcGFydGljbGVzLgorICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5wcm90
b3R5cGUuX2FwcGx5Um90YXRpb24pOiBBcHBseSB0aGUgcGFydGljbGUgcm90YXRpb24tYXJvdW5k
LWNlbnRlciB0cmFuc2Zvcm0gdG8gdGhlIGNhbnZhcyBjb250ZXh0LgorICAgICAgICAoQm91bmNp
bmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5cGUuX2FwcGx5Q2xpcHBpbmcpOiBBcHBseSB0aGUgcGFy
dGljbGUgY2xpcHBpbmcgdG8gdGhlIGNhbnZhcyBjb250ZXh0LgorICAgICAgICAoQm91bmNpbmdD
YW52YXNQYXJ0aWNsZS5wcm90b3R5cGUuX2RyYXcpOiBBIG5vbi1pbXBsZW1lbnRlZCB2ZXJzaW9u
IG9mIHRoZSBkcmF3aW5nIGZ1bmN0aW9uLgorICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNs
ZS5wcm90b3R5cGUuYW5pbWF0ZSk6IENhcnJpZXMgb3V0IGFsbCB0aGUgc3RlcHMgdG8gcmVkcmF3
IHRoZSBjYW52YXMgcGFydGljbGUuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdDYW52YXNQ
YXJ0aWNsZXNTdGFnZSk6IEEgYmFzZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNTdGFn
ZSBmb3IgYW5pbWF0aW5nIGNhbnZhcyBwYXJ0aWNsZXMuCisgICAgICAgIAorICAgICAgICAoQm91
bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvcik6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJv
dW5jaW5nUGFydGljbGVzQW5pbWF0b3IgZm9yIGFuaW1hdGluZyBjYW52YXMgcGFydGljbGVzLgor
ICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0
ZSk6IE92ZXJyaWRlcyB0aGUgYmFzZSBjbGFzcyBtZXRob2QgdG8gY2xlYXIgdGhlIGNhbnZhcyBi
ZWZvcmUgcmVkcmF3aW5nIHRoZSBzdGFnZS4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0Nh
bnZhc1BhcnRpY2xlc0JlbmNobWFyayk6IEEgYmFzZSBzdWItY2xhc3Mgb2YgU3RhZ2VCZW5jaG1h
cmsgZm9yIGFuaW1hdGluZyBjYW52YXMgcGFydGljbGVzLgorICAgICAgICAoQm91bmNpbmdDYW52
YXNQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyB0
aGUgY2FudmFzIHBhcnRpY2xlcyBhbmltYXRvci4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1z
aGFwZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZSk6IEEgY29uY3Jl
dGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nQ2FudmFzUGFydGljbGUgZm9yIGFuaW1hdGluZyBjYW52
YXMgc2hhcGVzLgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUuX2FwcGx5
RmlsbCk6IFNldHMgdGhlIGZpbGxTdHlsZSBpbiB0aGUgY2FudmFzIGNvbnRleHQuCisgICAgICAg
IChCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5fZHJhd1NoYXBlKTogQ2FycmllcyBvdXQg
dGhlIGFjdHVhbCBkcmF3aW5nLgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5
cGUuX2RyYXcpOiBDYXJyaWVzIG91dCBhbGwgdGhlIHN0ZXBzIHRvIGRyYXcgdGhlIHNoYXBlLgor
ICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UpOiBBIGNvbmNyZXRl
IHN1Yi1jbGFzcyBvZiBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlIGZvciBhbmltYXRpbmcgY2FudmFz
IHNoYXBlcy4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNy
ZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNpbmdDYW52YXNT
aGFwZS4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyayk6
IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJr
IGZvciBhbmltYXRpbmcgY2FudmFzIHNoYXBlcy4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hh
cGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0
eXBlIEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJr
Q2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBCb3VuY2luZ0NhbnZh
c1NoYXBlc0JlbmNobWFyay4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2UpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBCb3Vu
Y2luZ0NhbnZhc1BhcnRpY2xlIGZvciBhbmltYXRpbmcgY2FudmFzIGltYWdlcy4KKyAgICAgICAg
KEJvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90eXBlLl9kcmF3KTogRHJhd3MgYW4gaW1hZ2Ugb24g
dGhlIGNvbnRleHQgb2YgYSBjYW52YXMuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdDYW52
YXNJbWFnZXNTdGFnZSk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nQ2FudmFzUGFy
dGljbGVzQmVuY2htYXJrIGZvciBhbmltYXRpbmcgY2FudmFzIGltYWdlcy4KKyAgICAgICAgKEJv
dW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRl
cyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNpbmdDYW52YXNJbWFnZS4KKyAgICAgICAgCisgICAg
ICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayk6IEEgY29uY3JldGUgc3ViLWNsYXNz
IG9mIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrIGZvciBhbmltYXRpbmcgY2FudmFz
IGltYWdlcy4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlw
ZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nQ2FudmFzSW1h
Z2VzU3RhZ2UuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0
ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay4KKwor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9i
b3VuY2luZy1zdmctcGFydGljbGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnUGFy
dGljbGUpOiBBIGJhc2Ugc3ViLWNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUgZm9yIGFuaW1hdGlu
ZyBTVkcgcGFydGljbGVzLgorICAgICAgICAoQm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5cGUu
X2FwcGx5Q2xpcHBpbmcpOiBBcHBseSB0aGUgcGFydGljbGUgY2xpcHBpbmcgYnkgc2V0dGluZyB0
aGUgJ2NsaXAtcGF0aCcgYXR0cmlidXRlIG9mIHRoZSBTVkdFbGVtZW50LgorICAgICAgICAoQm91
bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5cGUuX21vdmUpOiBNb3ZlcyB0aGUgcGFydGljbGUgdG8g
YSBuZXcgbG9jYXRpb24uIEFwcGx5IHRyYW5zZm9ybSBzaW5jZSBpdCBkb2VzIG5vdCByZXF1aXJl
IGxheW91dC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUp
OiBSb3RhdGVzIGFuZCBtb3ZlcyB0aGUgc2hhcGUgdG8gYSBuZXcgbG9jYXRpb24uCisgICAgICAg
IChCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZSBmb3IgYW5pbWF0aW5nIFNWR0VsZW1lbnRzLgorICAgICAgICAoQm91bmNpbmdT
dmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuX2NyZWF0ZURlZnMpOiBDcmVhdGVzIGFuIFNWR0Rl
ZnNFbGVtZW50LgorICAgICAgICAoQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUu
X2Vuc3VyZURlZnNJc0NyZWF0ZWQpOiBFbnN1cmVzIHRoZXJlIGlzIG9ubHkgb25lIFNWR0RlZnNF
bGVtZW50IGlzIGNyZWF0ZWQuCisgICAgICAgIChCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnBy
b3RvdHlwZS5fY3JlYXRlQ2xpcFN0YXIpOiBDcmVhdGVzIGFuIFNWR0NsaXBQYXRoRWxlbWVudCBh
bmQgc2V0cyBpdHMgJ2QnIGF0dHJpYnV0ZSB0byBhIHN0YXIgbGlrZSBzaGFwZS4KKyAgICAgICAg
KEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmVuc3VyZUNsaXBTdGFySXNDcmVh
dGVkKTogRW5zdXJlIHRoZXJlIGlzIG9ubHkgb25lIHN0YXIgU1ZHQ2xpcFBhdGhFbGVtZW50IGlz
IGNyZWF0ZWQuCisgICAgICAgIChCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5w
YXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBm
b3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4gbGlzdC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGUpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBv
ZiBCb3VuY2luZ1NWR1BhcnRpY2xlIGZvciBhbmltYXRpbmcgU1ZHIHNoYXBlcy4KKyAgICAgICAg
KEJvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLl9jcmVhdGVTaGFwZSk6IENyZWF0ZXMgYW4gU1ZH
IHNoYXBlLgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2FwcGx5RmlsbCk6
IEFwcGxpZXMgdGhlIHNlbGVjdGVkIGZpbGwgc3R5bGUgdG8gdGhlIFNWRyBzaGFwZS4KKyAgICAg
ICAgCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlKTogQSBjb25jcmV0ZSBzdWItY2xh
c3Mgb2YgQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZSBmb3IgYW5pbWF0aW5nIFNWRyBzaGFwZXMu
CisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVHcmFkaWVu
dCk6IENyZWF0ZXMgYW4gU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LgorICAgICAgICAoQm91bmNp
bmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFy
dGljbGUgb2YgdHlwZSBCb3VuY2luZ1N2Z1NoYXBlLgorICAgICAgICAoQm91bmNpbmdTdmdTaGFw
ZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkKTogRW5zdXJlcyB0aGUgYXR0
YWNoZWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50IGlzIHJlbW92ZWQgZnJvbSB0aGUgU1ZHRGVm
c0VsZW1lbnQuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsp
OiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyayBmb3Ig
YW5pbWF0aW5nIFNWRyBpbWFnZXMuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFy
ay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2lu
Z1N2Z1NoYXBlc1N0YWdlLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUp
OiBDcmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5cGUgQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsu
CisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5j
aW5nU3ZnSW1hZ2UpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1NWR1BhcnRpY2xl
IGZvciBhbmltYXRpbmcgU1ZHIGltYWdlcy4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ1N2
Z0ltYWdlc1N0YWdlKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdTVkdQYXJ0aWNs
ZXNCZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBTVkcgaW1hZ2VzLgorICAgICAgICAoQm91bmNpbmdT
dmdJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFydGlj
bGUgb2YgdHlwZSBCb3VuY2luZ1N2Z0ltYWdlLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5n
U3ZnSW1hZ2VzQmVuY2htYXJrKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdQYXJ0
aWNsZXNCZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBTVkcgaW1hZ2VzLgorICAgICAgICAoQm91bmNp
bmdTdmdJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0
YWdlIG9mIHR5cGUgQm91bmNpbmdTdmdJbWFnZXNTdGFnZS4KKyAgICAgICAgKHdpbmRvdy5iZW5j
aG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJvdW5jaW5n
U3ZnSW1hZ2VzQmVuY2htYXJrLiAKKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3Vy
Y2VzOiBBZGRlZC4KKyAgICAgICAgVGhpcyBkaXJlY3RvcnkgaW5jbHVkZXMgdGhlIHNjcmlwdCB3
aGljaCBpcyByZXF1aXJlZCB0byBydW4gYW4gYWRhcHRpdmUgCisgICAgICAgIGdyYXBoaWNzIGJl
bmNobWFyay4gRnJvbSBhbiBlbXB0eSB0ZXN0IHBhZ2UsIHRoZSBzZXQgb2YgY2xhc3NlcyBpbiB0
aGlzCisgICAgICAgIGRpcmVjdG9yeSBhcmUgcmVzcG9uc2libGUgZm9yIG1lYXN1cmluZyB0aGUg
Y3VycmVudCBmcmFtZSByYXRlIGFuZAorICAgICAgICBjaGFuZ2luZyB0aGUgdGVzdCB0byByZWFj
aCBhIGRlc2lyZWQgRlBTLiBJdCBrZWVwcyBhc2tpbmcgdGhlIHRlc3QgcGFnZQorICAgICAgICB0
byB0dW5lIGl0c2VsZiBieSBhIGNlcnRhaW4gdmFsdWUgdG8gaW5jcmVhc2Ugb3IgZGVjcmVhc2Ug
dGhlIGZyYW1lIHJhdGUuCisgICAgICAgIEl0J3MgYWxzbyByZXNwb25zaWJsZSBmb3Igc2FtcGxp
bmcgdGhlIHRlc3Qgc3RhdGUgYW5kIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgIGZyYW1lIHJh
dGUuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4u
anM6IEFkZGVkLgorICAgICAgICAoQmVuY2htYXJrU3RhdGUpOiBUcmFja3MgdGhlIHN0YXRlIG9m
IHRoZSBiZW5jaG1hcmsgdGVzdC4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5f
dGltZU9mZnNldCk6IFJldHVybnMgdGhlIHRpbWVPZmZzZXQgb2YgYSBzdGFnZS4KKyAgICAgICAg
KEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5fbWVzc2FnZSk6IFJldHVybnMgdGhlIG1lc3NhZ2Ug
b2YgYSBzdGFnZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS51cGRhdGUpOiBT
ZXRzIHRoZSBjdXJyZW50VGltZU9mZnNldCB0byBhIG5ldyB2YWx1ZS4KKyAgICAgICAgKEJlbmNo
bWFya1N0YXRlLnByb3RvdHlwZS5zYW1wbGluZ1RpbWVPZmZzZXQpOiBSZXR1cm5zIHRoZSB0aW1l
T2Zmc2V0IG9mIHRoZSBzYW1wbGluZyBzdGFnZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnBy
b3RvdHlwZS5jdXJyZW50U3RhZ2UpOiBSZXR1cm5zIHRoZSBjdXJyZW50IHN0YWdlIG9mIHRoZSBi
ZW5jaG1hcmsuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuY3VycmVudE1lc3Nh
Z2UpOiBSZXR1cm5zIHRoZSBtZXNzYWdlIG9mIHRoZSBjdXJyZW50IHN0YWdlIGFuZCB0aW1lT2Zm
c2V0LgorICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBlLmN1cnJlbnRQcm9ncmVzcyk6
IFJldHVybnMgYSBwZXJjZW50YWdlIG9mIGhvdyBtdWNoIHRoZSBiZW5jaG1hcmsgaXMgcnVubmlu
Zy4KKyAgICAgICAgCisgICAgICAgIChBbmltYXRvcik6IE1hbmFnZXMgYW5pbWF0aW5nIHRoZSB0
ZXN0LgorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0KTogQ2FsbGVkIGlmIGFuaW1h
dGluZyB1c2luZyBzZXRJbnRlcnZhbCBpcyByZXF1ZXN0ZWQuCisgICAgICAgIChBbmltYXRvci5w
cm90b3R5cGUudGltZURlbHRhKTogUmV0dXJucyB0aGUgY3VycmVudCB0aW1lRGVsdGEgCisgICAg
ICAgIChBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6IE1hbmFnZXMgdGhlIHRlc3QgYW5pbWF0
aW9uLgorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGVMb29wKTogQ2FsbGVkIGlm
IGFuaW1hdGluZyB1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaXMgcmVxdWVzdGVkLiAKKwor
ICAgICAgICAoQmVuY2htYXJrKTogTWFuYWdlcyBydW5uaW5nIHRoZSB0ZXN0IGJlbmNobWFyayBh
bmQgcmVjb3JkaW5nIHRoZSBzYW1wbGVkIGRhdGEuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90
eXBlLnN0YXJ0KTogU3RhcnRzIHRoZSBiZW5jaG1hcmsuCisgICAgICAgIChCZW5jaG1hcmsucHJv
dG90eXBlLnVwZGF0ZSk6IENhbGxlZCBmcm9tIHRoZSBhbmltYXRvci5hbmltYXRlKCkgdG8gY2hh
bmdlIHRoZSBjb21wbGV4aXR5IG9mIHRoZSB0ZXN0LgorICAgICAgICAoQmVuY2htYXJrLnByb3Rv
dHlwZS5yZWNvcmQpOiBTaG93cyB0aGUgY3VycmVudCAobm90IGZpbmFsKSByZXN1bHRzIG9mIHRo
ZSBiZW5jaG1hcmsuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnJlc29sdmVXaGVuRmlu
aXNoZWQpOiBTcGlucyB1bnRpbCB0aGUgYmVuY2htYXJrIGlzIGZpbmlzaGVkIGFuZCByZXR1cm5z
IGl0cyByZXN1bHRzLgorICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS5ydW4pOiBTdGFydHMg
dGhlIHRlc3QsIHJ1bnMgaXQsIHdhaXRzIHVudGlsIGl0IGlzIGZpbmlzaGVkIGFuZCByZXR1cm4g
aXRzIHJlc3VsdHMuCisgICAgICAgICh3aW5kb3cucnVuQmVuY2htYXJrKTogQ2FsbGVkIGZyb20g
dGhlIGJlbmNobWFyayBydW5uZXIgdGhyb3VnaCB0aGUgc3VpdGUgY29udHJvbGxlciBydW4tY2Fs
bGJhY2suCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzOiBB
ZGRlZC4KKyAgICAgICAgKE1hdHJpeCk6IEEgbWF0cml4IG9iamVjdC4KKyAgICAgICAgKFZlY3Rv
cjMpOiBBIHZlY3RvciBvZiBzaXplIDMgb2JqZWN0LgorICAgICAgICAoTWF0cml4Myk6IEEgbWF0
cml4IG9mIHNpemUgM3gzIG9iamVjdC4KKyAgICAgICAgCisgICAgICAgIChQSURDb250cm9sbGVy
KTogQ2xvc2VkLWxvb3AgY29udHJvbGxlciBmb3IgYSBzZXQtcG9pbnQgeS4KKyAgICAgICAgKFBJ
RENvbnRyb2xsZXIucHJvdG90eXBlLl9zYXQpOiBMaW1pdHMgdGhlIG91dHB1dCB0byBhIGNlcnRh
aW4gcmFuZ2UuCisgICAgICAgIChQSURDb250cm9sbGVyLnByb3RvdHlwZS50dW5lKTogR2l2ZW4g
dGhlIGN1cnJlbnQgb3V0cHV0IG9mIGEgc3lzdGVtLCBpdCBwcm9kdWNlcyBhIG5ldyBwaWQgdmFs
dWUgZm9yIHR1bmluZyBpdC4KKyAgICAgICAgCisgICAgICAgIChLYWxtYW5Fc3RpbWF0b3IpOiBJ
bXBsZW1lbnQgS2FsbWFuIGZpbHRlciB0byBnZXQgYW4gZXN0aW1hdGUgZm9yIGEgc2FtcGxlZCBk
YXRhIHBvaW50LgorICAgICAgICAoS2FsbWFuRXN0aW1hdG9yLnByb3RvdHlwZS5lc3RpbWF0ZSk6
IFJldHVybnMgYW4gZXN0aW1hdGUgZm9yIGZvciBhIHNhbXBsZWQgZGF0YSBwb2ludC4KKworICAg
ICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3V0aWxpdGllcy5qczogQWRkZWQuCisg
ICAgICAgICh3aW5kb3cuVXRpbGl0aWVzLl9wYXJzZSk6IEdpdmVuIGEgc2VwYXJhdG9yIGNoYXJh
Y3RlciwgaXQgcGFyZXNlcyBhIHN0cmluZyB0byBhIHNldCBvZiA8a2V5LCB2YWx1ZT4gcGFpcnMu
CisgICAgICAgICh3aW5kb3cuVXRpbGl0aWVzLnBhcnNlUGFyYW1ldGVycyk6IFBhcnNlcyBhIHRl
c3QgcGFyYW1ldGVycy4KKyAgICAgICAgKHdpbmRvdy5VdGlsaXRpZXMucGFyc2VBcmd1bWVudHMp
OiBQYXJzZXMgYSB0YWcgYXJndW1lbnRzLgorICAgICAgICAod2luZG93LlV0aWxpdGllcy5leHRl
bmRPYmplY3QpOiBBZGRzIHRoZSBhdHRyaWJ1dGVzIGFuZCB0aGVpciB2YWx1ZXMgb2YgYW4gb2Jq
ZWN0IHRvIGFub3RoZXIgb2JqZWN0LgorICAgICAgICAod2luZG93LlV0aWxpdGllcy5jb3B5T2Jq
ZWN0KTogQ29waWVzIHRoZSBhdHRyaWJ1dGVzIGFuZCB0aGVpciB2YWx1ZXMgb2YgYW4gb2JqZWN0
IHRvIGEgbmV3IG9iamVjdC4KKyAgICAgICAgKHdpbmRvdy5VdGlsaXRpZXMubWVyZ2VPYmplY3Rz
KTogQ29waWVzIHRoZSBhdHRyaWJ1dGVzIGFuZCB0aGVpciB2YWx1ZXMgb2YgdHdvIG9iamVjdHMg
dG8gYSBuZXcgb2JqZWN0LgorICAgICAgICAod2luZG93LlV0aWxpdGllcy5jcmVhdGVTdmdFbGVt
ZW50KTogQ3JlYXRlcyBhbiBTVkdFbGVtZW50IGdpdmVuIGl0cyBuYW1lIGFuZCBpdHMgYXR0cmli
dXRlcy4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3Rh
Z2UuY3NzOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFn
ZS5qczogQWRkZWQuCisgICAgICAgIChSb3RhdGVyKTogTWFuYWdlcyByb3RhdGluZyBhbiBhbmds
ZSB3aXRoaW4gYSBmaXhlZCB0aW1lIGludGVydmFsLgorICAgICAgICAoUm90YXRlci5wcm90b3R5
cGUuZ2V0IGludGVydmFsKTogUmV0dXJucyB0aGUgdGltZSBpbnRlcnZhbCB3aGljaCBpcyByZXF1
aXJlZCB0byByb3RhdGUgMzYwIGRlZ3JlZXMuCisgICAgICAgIChSb3RhdGVyLnByb3RvdHlwZS5u
ZXh0KTogTW92ZXMgdGhlIGN1cnJlbnQgdGltZSBieSBhIGRlbHRhLgorICAgICAgICAoUm90YXRl
ci5wcm90b3R5cGUuZGVncmVlKTogUmV0dXJucyB0aGUgY3VycmVudCByb3RhdGluZyBkZWdyZWUu
CisgICAgICAgIChSb3RhdGVyLnByb3RvdHlwZS5yb3RhdGVaKTogUmV0dXJucyBDU1MgZm9ybWF0
dGVkIHRyYW5zZm9ybSByb3RhdGVaKCkgc3RyaW5nIGZvciB0aGUgY3VycmVudCBkZWdyZWUuCisg
ICAgICAgIChSb3RhdGVyLnByb3RvdHlwZS5yb3RhdGUpOiBSZXR1cm5zIFNWRyBmb3JtYXR0ZWQg
dHJhbnNmb3JtIHJvdGF0ZSgpIHN0cmluZyBmb3IgdGhlIGN1cnJlbnQgZGVncmVlLgorICAgICAg
ICAKKyAgICAgICAgKFN0YWdlKTogQSBiYXNlIGNsYXNzIGZvciBtYW5hZ2luZyB0aGUgdGVzdCBj
b21wbGV4aXR5IGFuZCB0ZXN0IGFuaW1hdGlvbi4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5n
ZXQgc2l6ZSk6IFJldHVybnMgdGhlIHNpemUgb2YgdGhlIHN0YWdlIGV4Y2x1ZGluZyB0aGUgQ1NT
IHBhZGRpbmcuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tKTogUmV0dXJucyBhIHJh
bmRvbSBmbG9hdC4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5yYW5kb21JbnQpOiBSZXR1cm5z
IGEgcmFuZG9tIGludGVnZXIuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tUG9zaXRp
b24pOiBSZXR1cm5zIGEgcmFuZG9tIHBvc2l0aW9uLgorICAgICAgICAoU3RhZ2UucHJvdG90eXBl
LnJhbmRvbVZlbG9jaXR5KTogUmV0dXJucyBhIHJhbmRvbSB2ZWxvY2l0eS4KKyAgICAgICAgKFN0
YWdlLnByb3RvdHlwZS5yYW5kb21BbmdsZSk6IFJldHVybnMgYSByYW5kb20gYW5nbGUuCisgICAg
ICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tQ29sb3IpOiBSZXR1cm5zIGEgcmFuZG9tIGNvbG9y
IG5vdCB0b28gZGFyayBhbmQgbm90IHRvbyBsaWdodC4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlw
ZS5yYW5kb21Sb3RhdGVyKTogQ3JlYXRlcyBhIHJhbmRvbSByb3RhdGVyLiBJdHMgdmVsb2NpdHkg
ZGVwZW5kcyBvbiBjaG9vc2luZyBhIHJhbmRvbSByb3RhdGlvbiB0aW1lIGludGVydmFsLgorICAg
ICAgICAoU3RhZ2UucHJvdG90eXBlLnR1bmUpOiBBIG5vdC1pbXBsZW1lbnRlZCB2ZXJzaW9uIG9m
IHRoaXMgZnVuY3Rpb24uCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IEEgbm90
LWltcGxlbWVudGVkIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgKFN0YWdlLnBy
b3RvdHlwZS5jbGVhcik6IENsZWFycyB0aGUgc3RhZ2UgZnJvbSBhbGwgaXRzIGFuaW1hdGlvbiBl
bGVtZW50cy4KKyAgICAgICAgCisgICAgICAgIChTdGFnZUFuaW1hdG9yKTogQSBiYXNlIGNsYXNz
IGZvciB0aGUgc3RhZ2UtYmFzZWQgYW5pbWF0b3JzLgorICAgICAgICAoU3RhZ2VBbmltYXRvci5w
cm90b3R5cGUuYW5pbWF0ZSk6IENhbGxzIEFuaW1hdG9yLmFuaW1hdGUoKSB3aGljaCB1cGRhdGVz
IHRoZSB0ZXN0IHBhZ2UgYW5kIHRoZW4gY2FsbHMgU3RhZ2UuYW5pbWF0ZSgpIHRvIGZvcmNlIHJl
ZHJhdy4KKyAgICAgICAgCisgICAgICAgIChTdGFnZUJlbmNobWFyayk6IEEgYmFzZSBjbGFzcyBm
b3IgdGhlIHN0YWdlLWJhc2VkIGJlbmNobWFya3MuCisgICAgICAgIChTdGFnZUJlbmNobWFyay5w
cm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIHRoZSBkZWZhdWx0IHN0YWdlLgorICAgICAg
ICAoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyB0aGUg
ZGVmYXVsdCBhbmltYXRvci4KKyAgICAgICAgKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS50dW5l
KTogRGVsZWdhdGVzIHRoZSBjYWxsIHRvIHN0YWdlLgorICAgICAgICAoU3RhZ2VCZW5jaG1hcmsu
cHJvdG90eXBlLmNsZWFyKTogRGVsZWdhdGVzIHRoZSBjYWxsIHRvIHN0YWdlLgorICAgICAgICAo
U3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLnNob3dSZXN1bHRzKTogU2hvd3MgdGhlIHJlc3VsdHMv
cHJvZ3Jlc3MgdGhyb3VnaCBpdHMgcmVjb3JkVGFibGUgYW5kIHByb2dyZXNzQmFyLgorICAgICAg
ICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5wbmc6IEFk
ZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnN2Zzog
QWRkZWQuCisgICAgICAgIFRoZXNlIGltYWdlcyBhcmUgc2hhcmVkIGFtb25nIGFsbCB0aGUgdGVz
dHMuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGU6IEFkZGVk
LgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzOiBBZGRlZC4K
KyAgICAgICAgVGhpcyBkaXJlY3RvcnkgaW5jbHVkZXMgdGVtcGxhdGUgdGVzdHMgd2hpY2ggZG8g
bm90aGluZy4gVGhleSBjYW4gYmUgdXNlZAorICAgICAgICB0byBhdXRob3IgbmV3IHRlc3RzLiBB
bmltYXRlZCBpdGVtcyBjYW4gYmUgY3JlYXRlZCwgbW92ZWQgYW5kIHJlZHJhd24gYnkKKyAgICAg
ICAgcmVtb3ZpbmcgdGhlIFRPRE8gY29tbWVudHMgaW4gdGhlIHNjcmlwdCBmaWxlcyBhbmQgd3Jp
dGluZyBhY3R1YWwgY29kZS4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUv
dGVtcGxhdGUtY3NzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVt
cGxhdGUvdGVtcGxhdGUtY2FudmFzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0bWw6IEFkZGVkLgorICAgICAgICBUZW1wbGF0
ZSB0ZXN0IHBhZ2VzLiBUaGV5IGNhbiBiZSB1c2VkIGFzIHRoZXkgYXJlLiBDU1MgYXR0cmlidXRl
cyBvciBoaWRkZW4KKyAgICAgICAgZWxlbWVudHMgY2FuIGJlIGFkZGVkIHRvIHRoZXNlIGRlcml2
ZWQgdGVzdCBwYWdlcyBpZiBuZWVkZWQuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNzcy5qczogQWRkZWQuCisgICAgICAg
IAorICAgICAgICAoVGVtcGxhdGVDc3NTdGFnZSk6IEEgc3RhZ2UgdG8gY3JlYXRlIGFuZCBhbmlt
YXRlIEhUTUxFbGVtZW50cy4KKyAgICAgICAgKFRlbXBsYXRlQ3NzU3RhZ2UucHJvdG90eXBlLnR1
bmUpOiBDaGFuZ2VzIHRoZSB0ZXN0IGJ5IGFkZGluZyBvciByZW1vdmluZyBlbGVtZW50cy4KKyAg
ICAgICAgKFRlbXBsYXRlQ3NzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBBbmltYXRlcyB0aGUg
dGVzdCBlbGVtZW50cy4KKyAgICAgICAgKFRlbXBsYXRlQ3NzQmVuY2htYXJrKTogCisgICAgICAg
IChUZW1wbGF0ZUNzc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIHRo
ZSB0ZXN0IHN0YWdlLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBD
cmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5cGUgVGVtcGxhdGVDc3NCZW5jaG1hcmsuCisgICAgICAg
IAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRl
LWNhbnZhcy5qczogQWRkZWQuCisgICAgICAgIChUZW1wbGF0ZUNhbnZhc09iamVjdCk6CisgICAg
ICAgIChUZW1wbGF0ZUNhbnZhc09iamVjdC5wcm90b3R5cGUuX2RyYXcpOiBEcmF3cyB0aGUgb2Jq
ZWN0cyBvbiB0aGUgY2FudmFzIGNvbnRleHQuCisgICAgICAgIChUZW1wbGF0ZUNhbnZhc09iamVj
dC5wcm90b3R5cGUuYW5pbWF0ZSk6IE1vdmVzIGFuZCByZWRyYXdzIHRoZSBvYmplY3QuCisgICAg
ICAgIChUZW1wbGF0ZUNhbnZhc1N0YWdlKTogQSBzdGFnZSB0byBjcmVhdGUgYW5kIGFuaW1hdGUg
ZHJhd2luZyBlbGVtZW50cy4KKyAgICAgICAgKFRlbXBsYXRlQ2FudmFzU3RhZ2UucHJvdG90eXBl
LnR1bmUpOiBoYW5nZXMgdGhlIHRlc3QgYnkgYWRkaW5nIG9yIHJlbW92aW5nIGVsZW1lbnRzLgor
ICAgICAgICAoVGVtcGxhdGVDYW52YXNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6ICBBbmltYXRl
cyB0aGUgdGVzdCBlbGVtZW50cy4KKyAgICAgICAgKFRlbXBsYXRlQ2FudmFzQW5pbWF0b3IucHJv
dG90eXBlLmFuaW1hdGUpOiBTdGFydHMgdGhlIGFuaW1hdGlvbiBldmVyeSBmcmFtZS4KKyAgICAg
ICAgKFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrKTogCisgICAgICAgIChUZW1wbGF0ZUNhbnZhc0Jl
bmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBU
ZW1wbGF0ZUNhbnZhc1N0YWdlLgorICAgICAgICAoVGVtcGxhdGVDYW52YXNCZW5jaG1hcmsucHJv
dG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyBhIGFuaW1hdG9yIG9mIHR5cGUgVGVtcGxh
dGVDYW52YXNBbmltYXRvci4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRl
KTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrLgor
ICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90
ZW1wbGF0ZS1zdmcuanM6IEFkZGVkLgorICAgICAgICAoVGVtcGxhdGVTdmdTdGFnZSk6IEEgc3Rh
Z2UgdG8gY3JlYXRlIGFuZCBhbmltYXRlIFNWR0VsZW1lbnRzLgorICAgICAgICAoVGVtcGxhdGVT
dmdTdGFnZS5wcm90b3R5cGUudHVuZSk6IENoYW5nZXMgdGhlIHRlc3QgYnkgYWRkaW5nIG9yIHJl
bW92aW5nIGVsZW1lbnRzLgorICAgICAgICAoVGVtcGxhdGVTdmdTdGFnZS5wcm90b3R5cGUuYW5p
bWF0ZSk6IEFuaW1hdGVzIHRoZSB0ZXN0IGVsZW1lbnRzLgorICAgICAgICAoVGVtcGxhdGVTdmdC
ZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUg
VGVtcGxhdGVTdmdTdGFnZS4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRl
KTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIFRlbXBsYXRlU3ZnQmVuY2htYXJrLgorICAg
ICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RleHQ6IEFkZGVkLgorICAgICAgICAq
IEFuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXM6IEFkZGVkLgorICAgICAgICBUaGlzIGRp
cmVjdG9yeSBpbmNsdWRlcyB0aGUgdGV4dCBhbmltYXRpbmcgdGVzdHMgd2hpY2ggY3VycmVudGx5
IHJ1bnMKKyAgICAgICAgb24gQ1NTIHN0YWdlIG9ubHkuCisgICAgICAgIAorICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0bWw6IEFkZGVkLgorICAgICAgICBU
ZXh0IHRlc3QgcGFnZS4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZXh0
L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzOiBBZGRlZC4KKyAgICAgICAgKExheWVyaW5nVGV4
dFN0YWdlKTogUmVwcmVzZW50cyB0aGUgY29udGFpbmVyIG9mIGFsbCB0aGUgc3RhY2tlZCB0ZXh0
IGxheWVycy4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLnBhcnNlVGV4dEl0ZW0pOiBQYXJz
ZXMgYSB0ZXh0SXRlbSB3aGljaCBtYXkgYmUgYW4gb3BlbmluZyB0YWcsIGEgY2xvc2luZyB0YWcg
b3IgYSBzZWxmLWNsb3NpbmcgdGFnLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNPcGVu
aW5nVGV4dEl0ZW0pOiBSZXR1cm5zIHRydWUgaWYgdGhlIHRleHRJdGVtIGlzIGFuIG9wZW5pbmcg
dGFnIGUuZy4gJzxvbD4nLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDbG9zaW5nVGV4
dEl0ZW0pOiBSZXR1cm5zIHRydWUgaWYgIHRoZSB0ZXh0SXRlbSBpcyBhbiBjbG9zaW5nIHRhZyBl
LmcuICc8L29sPi4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzLkxh
eWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtcy5tYXApOiBDYWxjdWxhdGVzIGFuZCBzdG9yZXMgaXNP
cGVuaW5nIGFuZCBpc0Nsb3NpbmcgZmxhZ3MgZm9yIGVhY2ggdGV4dEl0ZW0uCisgICAgICAgIChM
YXllcmluZ1RleHRTdGFnZS5pc0NvbG9yYWJsZVRleHRJdGVtKTogUmV0dXJucyB0cnVlIGlmIHRo
ZSB0ZXh0SXRlbSBpcyBzZWxmLWNsb3NpbmcgdGFnIGUuZy4gJzxwPi4uLjwvcD4nLgorICAgICAg
ICAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNJbnNlcnRhYmxlVGV4dEl0ZW0pOiBSZXR1cm5zIHRydWUg
aWYgdGhlIHRleHRJdGVtcyBjYXVzZXMgYSBuZXcgZWxlbWVudCB0byBiZSBhZGRlZCB0byB0aGUg
dGV4dCBsYXllcnMuCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5jb2xvcmFibGVUZXh0SXRl
bXMuTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MuZmlsdGVyKTogTnVtYmVyIG9mIGNv
bG9yYWJsZSB0ZXh0SXRlbXMuCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5pbnNlcnRhYmxl
VGV4dEl0ZW1zLkxheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzLmZpbHRlcik6IE51bWJl
ciBvZiBpbnNlcnRhYmxlIHRleHRJdGVtcy4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmNv
bG9ySW5kZXhUb1RleHRFbGVtZW50SW5kZXgpOiBNYXBzIGZyb20gY29sb3JJbmRleCBbMC4uY29s
b3JhYmxlVGV4dEl0ZW1zLTFdIHRvIHRleHRFbGVtZW50SW5kZXggWzAuLmluc2VydGFibGVUZXh0
SXRlbXMtMV0uCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX25leHRUZXh0
SXRlbSk6IE1vdmVzIHRoZSBfdGV4dEl0ZW1JbmRleCBvbmUgc3RlcCBmb3J3YXJkIGluIGEgbG9v
cCBbMC4uTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zLmxlbmd0aC0xXS4KKyAgICAgICAgKExh
eWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fcHJldmlvdXNUZXh0SXRlbSk6IE1vdmVzIHRoZSBf
dGV4dEl0ZW1JbmRleCBvbmUgc3RlcCBiYWNrd2FyZCBpbiBhIGxvb3AuCisgICAgICAgIChMYXll
cmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX3B1c2hUZXh0RWxlbWVudCk6IENyZWF0ZXMgYSBuZXcg
dGV4dEl0ZW1FbGVtZW50IGFuZCBhZGRzIGl0IHRvIHRoZSB0b3Btb3N0IGNvbnRhaW5lciA8ZGl2
Pi4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fcG9wVGV4dEVsZW1lbnQp
OiBSZW1vdmVzIHRoZSBsYXN0IHRleHRJdGVtRWxlbWVudCBmcm9tIHRoZSB0b3Btb3N0IGNvbnRh
aW5lciA8ZGl2Pi4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fY29sb3JU
ZXh0SXRlbSk6IENoYW5nZXMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgYSBzaW5nbGUgY29sb3Jh
YmxlIHRleHRFbGVtZW50LiBUaGUgaW5kZXggYWR2YW5jZXMgaW4gYSBjaXJjbGUgWzAuLmNvbG9y
YWJsZVRleHRJdGVtcy0xXS4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5h
bmltYXRlKTogQ2hhbmdlcyB0aGUgYmFja2dyb3VuZCBjb2xvciBhbmQgdGhlIHRleHQgY29sb3Ig
b2YgdGhlIHRleHRFbGVtZW50cyBzdWNoIHRoYXQgYSByZWRyYXcgaXMgZW5mb3JjZWQuCisgICAg
ICAgIChMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUudHVuZSk6IEFkZHMgb3IgcmVtb3ZlcyB0
ZXh0RWxlbWVudHMgdG8gdGhlIHN0YWdlLgorCisgICAgICAgIChMYXllcmluZ1RleHRCZW5jaG1h
cmspOiBSdW5zIHRoZSBiZW5jaG1hcmsgZm9yIHRoZSBsYXllcmluZyB0ZXh0IHRlc3QuCisgICAg
ICAgIChMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRl
cyBhIHN0YWdlIG9mIHR5cGUgTGF5ZXJpbmdUZXh0U3RhZ2UuCisgICAgICAgICh3aW5kb3cuYmVu
Y2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBMYXllcmlu
Z1RleHRCZW5jaG1hcmsuCisgICAgICAgIAogMjAxNS0wOC0yNyAgQ3NhYmEgT3N6dHJvZ29uw6Fj
ICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtFRkxdIFJFR1JFU1NJT04ocjE4ODc5Myk6
IEl0IG1hZGUgMjAwIGxheW91dCB0ZXN0cyBhbmQgQmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBw
ZXIuaHRtbCBwZXJmb3JtYW5jZSB0ZXN0IGZhaWwKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzCShyZXZpc2lvbiAw
KQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMDUgQEAKK3ZhciBUaXRsZXMgPSBbCisgICAg
eworICAgICAgICB0ZXh0OiAiVGVzdCBOYW1lIiwKKyAgICAgICAgd2lkdGg6IDI1LAorICAgICAg
ICBjaGlsZHJlbjogW10KKyAgICB9LAorICAgIHsKKyAgICAgICAgdGV4dDogIkFuaW1hdGVkIEl0
ZW1zIiwKKyAgICAgICAgd2lkdGg6IDMxLAorICAgICAgICBjaGlsZHJlbjoKKyAgICAgICAgWwor
ICAgICAgICAgICAgeyB0ZXh0OiAgICJBdmcuIiwgd2lkdGg6IDYsIGNoaWxkcmVuOiBbXSB9LAor
ICAgICAgICAgICAgeyB0ZXh0OiAiXHUwMGIxIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAor
ICAgICAgICAgICAgeyB0ZXh0OiAgICJXLjUlIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAor
ICAgICAgICAgICAgeyB0ZXh0OiAgICJTdGQuIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAor
ICAgICAgICAgICAgeyB0ZXh0OiAgICAgICIlIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAor
ICAgICAgICBdCisgICAgfSwKKyAgICB7CisgICAgICAgIHRleHQ6ICJGUFMiLAorICAgICAgICB3
aWR0aDogMzEsCisgICAgICAgIGNoaWxkcmVuOgorICAgICAgICBbCisgICAgICAgICAgICB7IHRl
eHQ6ICAgIkF2Zy4iLCB3aWR0aDogNiwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRl
eHQ6ICJcdTAwYjEiLCB3aWR0aDogNSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRl
eHQ6ICAgIlcuNSUiLCB3aWR0aDogNSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRl
eHQ6ICAgIlN0ZC4iLCB3aWR0aDogNSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRl
eHQ6ICAgICAgIiUiLCB3aWR0aDogNSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgIF0KKyAgICB9
LAorICAgIHsKKyAgICAgICAgdGV4dDogIlNjb3JlIiwKKyAgICAgICAgd2lkdGg6IDYsCisgICAg
ICAgIGNoaWxkcmVuOiBbXQorICAgIH0sCisgICAgeworICAgICAgICB0ZXh0OiAiU2FtcGxlcyIs
CisgICAgICAgIHdpZHRoOiA3LAorICAgICAgICBjaGlsZHJlbjogW10KKyAgICB9CitdOworCit2
YXIgU3VpdGVzID0gW107CisKK1N1aXRlcy5wdXNoKHsKKyAgICBuYW1lOiAiSFRNTCBCb3VuY2lu
ZyBQYXJ0aWNsZXMiLAorICAgIHByZXBhcmU6IGZ1bmN0aW9uKHJ1bm5lciwgY29udGVudFdpbmRv
dywgY29udGVudERvY3VtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9y
RWxlbWVudCgiI3N0YWdlIikudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAg
cmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAgCisgICAgcnVuOiBmdW5j
dGlvbihjb250ZW50V2luZG93LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NC
YXIpCisgICAgeworICAgICAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhp
cywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICB9LAorCisg
ICAgdGl0bGVzOiBUaXRsZXMsCisgICAgdGVzdHM6IFsKKyAgICAgICAgeyAKKyAgICAgICAgICAg
IHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0
bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9MTImcGFy
dGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKKyAgICAgICAgICAgIG5hbWU6ICJDU1MgYm91
bmNpbmcgY2lyY2xlcyIKKyAgICAgICAgfSwKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHVybDog
Ii4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/Z2Fp
bj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9NDAmcGFydGljbGVI
ZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAorICAgICAgICAgICAgbmFtZTogIkNTUyBi
b3VuY2luZyBjbGlwcGVkIHJlY3RzIgorICAgICAgICB9LAorICAgICAgICB7IAorICAgICAgICAg
ICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMu
aHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFydGljbGVXaWR0aD01MCZw
YXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVudCIsCisgICAgICAgICAg
ICBuYW1lOiAiQ1NTIGJvdW5jaW5nIGdyYWRpZW50IGNpcmNsZXMiCisgICAgICAgIH0sCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3Vu
Y2luZy1jc3MtaW1hZ2VzLmh0bWw/Z2Fpbj0wLjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0yJnBh
cnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lp
bi15YW5nLnN2ZyIsCisgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIFNWRyBpbWFnZXMi
CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEw
MCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VT
cmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCisgICAgICAgICAgICBuYW1lOiAiQ1NTIGJv
dW5jaW5nIFBORyBpbWFnZXMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVy
bDogIi4uL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAm
cmVtb3ZlTGltaXQ9MTAwIiwKKyAgICAgICAgICAgIG5hbWU6ICJDU1MgbGF5ZXJpbmcgdGV4dCIK
KyAgICAgICAgfSwKKyAgICBdCit9KTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICJDYW52
YXMgQm91bmNpbmcgUGFydGljbGVzIiwKKyAgICBwcmVwYXJlOiBmdW5jdGlvbihydW5uZXIsIGNv
bnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBydW5u
ZXIud2FpdEZvckVsZW1lbnQoIiNzdGFnZSIpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAg
ICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsKKyAgICB9LCAgCisgICAgCisg
ICAgcnVuOiBmdW5jdGlvbihjb250ZW50V2luZG93LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpCisgICAgeworICAgICAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5C
ZW5jaG1hcmsodGhpcywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsK
KyAgICB9LAorICAgIAorICAgIHRpdGxlczogVGl0bGVzLAorICAgIHRlc3RzOiBbCisgICAgICAg
IHsgCisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctY2FudmFzLXNoYXBlcy5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAw
MCZwYXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCisgICAg
ICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGNpcmNsZXMiCisgICAgICAgIH0sCisgICAg
ICAgIHsgCisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91
bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9
MTAwMCZwYXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xlSGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1z
dGFyIiwKKyAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgY2xpcHBlZCByZWN0cyIK
KyAgICAgICAgfSwKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw/Z2Fpbj00JmFkZExpbWl0
PTEwMCZyZW1vdmVMaW1pdD0xMDAwJnBhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAm
c2hhcGU9Y2lyY2xlJmZpbGw9Z3JhZGllbnQiLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBi
b3VuY2luZyBncmFkaWVudCBjaXJjbGVzIgorICAgICAgICB9LAorICAgICAgICB7IAorICAgICAg
ICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1p
bWFnZXMuaHRtbD9nYWluPTAuNCZhZGRMaW1pdD01JnJlbW92ZUxpbWl0PTEmcGFydGljbGVXaWR0
aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcuc3Zn
IiwKKyAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgU1ZHIGltYWdlcyIKKyAgICAg
ICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwMCZy
ZW1vdmVMaW1pdD0xMDAwJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VT
cmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFz
IGJvdW5jaW5nIFBORyBpbWFnZXMiCisgICAgICAgIH0sCisgICAgXQorfSk7CisKK1N1aXRlcy5w
dXNoKHsKKyAgICBuYW1lOiAiU1ZHIEJvdW5jaW5nIFBhcnRpY2xlcyIsCisgICAgcHJlcGFyZTog
ZnVuY3Rpb24ocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpCisgICAgewor
ICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCIjc3RhZ2UiKS50aGVuKGZ1bmN0
aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7
CisgICAgfSwKKyAgICAKKyAgICBydW46IGZ1bmN0aW9uKGNvbnRlbnRXaW5kb3csIHRlc3QsIG9w
dGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKKyAgICB7CisgICAgICAgIHJldHVybiBj
b250ZW50V2luZG93LnJ1bkJlbmNobWFyayh0aGlzLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpOworICAgIH0sCisgICAgCisgICAgdGl0bGVzOiBUaXRsZXMsCisgICAg
dGVzdHM6IFsKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9nYWluPTYmYWRkTGltaXQ9MTAwJnJl
bW92ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1j
aXJjbGUiLAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBjaXJjbGVzIiwKKyAgICAg
ICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9nYWluPTAuNiZhZGRMaW1pdD0xMCZyZW1v
dmVMaW1pdD0xJnBhcnRpY2xlV2lkdGg9NDAmcGFydGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZj
bGlwPXN0YXIiLAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBjbGlwcGVkIHJlY3Rz
IiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9nYWluPTAuOCZhZGRMaW1p
dD0xMCZyZW1vdmVMaW1pdD00JnBhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hh
cGU9Y2lyY2xlJmZpbGw9Z3JhZGllbnQiLAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2lu
ZyBncmFkaWVudCBjaXJjbGVzIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1
cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1s
P2dhaW49MC40JmFkZExpbWl0PTUmcmVtb3ZlTGltaXQ9MiZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRp
Y2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciLAorICAgICAg
ICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBTVkcgaW1hZ2VzIgorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctc3ZnLWltYWdlcy5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSZwYXJ0
aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4t
eWFuZy5wbmciLAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBQTkcgaW1hZ2VzIgor
ICAgICAgICB9LAorICAgIF0KK30pOworCitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogIlN0YWdl
IFRlbXBsYXRlcyAoQ2FuIGJlIHVzZWQgZm9yIG5ldyB0ZXN0cykiLAorICAgIHByZXBhcmU6IGZ1
bmN0aW9uKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgiI3N0YWdlIikudGhlbihmdW5jdGlv
biAoZWxlbWVudCkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOwor
ICAgIH0sCisgICAgCisgICAgcnVuOiBmdW5jdGlvbihjb250ZW50V2luZG93LCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCisgICAgeworICAgICAgICByZXR1cm4gY29u
dGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhpcywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUs
IHByb2dyZXNzQmFyKTsKKyAgICB9LAorICAgIAorICAgIHRpdGxlczogVGl0bGVzLAorICAgIHRl
c3RzOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL3RlbXBsYXRlL3Rl
bXBsYXRlLWNzcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSIsCisgICAg
ICAgICAgICBuYW1lOiAiQ1NTIHRlbXBsYXRlIgorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICB1cmw6ICIuLi90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jYW52YXMuaHRtbD9nYWlu
PTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMDAiLAorICAgICAgICAgICAgbmFtZTogImNh
bnZhcyB0ZW1wbGF0ZSIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAi
Li4vdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZy
ZW1vdmVMaW1pdD01JjxvdGhlcl9wYXJhbXRlcj49PHZhbHVlPiIsCisgICAgICAgICAgICBuYW1l
OiAiU1ZHIHRlbXBsYXRlIgorICAgICAgICB9LAorICAgIF0KK30pOworCitmdW5jdGlvbiBzdWl0
ZUZyb21OYW1lKG5hbWUpCit7CisgICAgcmV0dXJuIFN1aXRlcy5maW5kKGZ1bmN0aW9uKHN1aXRl
KSB7IHJldHVybiBzdWl0ZS5uYW1lID09IG5hbWU7IH0pOworfQorCitmdW5jdGlvbiB0ZXN0RnJv
bU5hbWUoc3VpdGUsIG5hbWUpCit7CisgICAgcmV0dXJuIHN1aXRlLnRlc3RzLmZpbmQoZnVuY3Rp
b24odGVzdCkgeyByZXR1cm4gdGVzdC5uYW1lID09IG5hbWU7IH0pOworfQpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1j
YW52YXMtaW1hZ2VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHN0
eWxlPgorICAgICAgICBpbWcuaGlkZGVuIHsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKKyAgICAgICAgfQorICAgIDwvc3R5
bGU+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4v
cmVzb3VyY2VzL3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9h
bGdvcml0aG0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
c3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
bWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRp
ZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4u
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwv
c2NyaXB0PiAgCisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY2FudmFz
LXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3Vu
Y2luZy1jYW52YXMtaW1hZ2VzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxp
bWcgY2xhc3M9ImhpZGRlbiIgc3JjPSIuLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIj4KKyAgICA8
aW1nIGNsYXNzPSJoaWRkZW4iIHNyYz0iLi4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyI+CisgICAg
PGNhbnZhcyBpZD0ic3RhZ2UiPjwvY2FudmFzPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2lu
Zy1jYW52YXMtc2hhcGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0
bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2Vz
L3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0u
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlzdGlj
cy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVy
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lv
bnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwv
c2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAg
CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXBhcnRpY2xl
cy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1jYW52
YXMtc2hhcGVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxjYW52YXMgaWQ9
InN0YWdlIj48L2NhbnZhcz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdl
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sCShyZXZpc2lvbiAwKQor
KysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9i
b3VuY2luZy1jc3MtaW1hZ2VzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgaW1n
IHsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgfQorICAgIDwvc3R5
bGU+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4v
cmVzb3VyY2VzL3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9h
bGdvcml0aG0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
c3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
bWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRp
ZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4u
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwv
c2NyaXB0PiAgCisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY3NzLWlt
YWdlcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJzdGFnZSI+
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3Nz
LXNoYXBlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIC5jaXJjbGUgeworICAg
ICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xv
cjogIzAwMDAwMDsKKyAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSA1MCU7CisgICAgICAg
IH0KKyAgICAgICAgLnJlY3QgeworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
ICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsKKyAgICAgICAgfQorICAgICAgICAu
c3RhciB7CisgICAgICAgICAgICAtd2Via2l0LWNsaXAtcGF0aDogcG9seWdvbig1MCUgMCUsIDM4
JSAzOCUsIDAlIDM4JSwgMzAlIDYwJSwgMTglIDEwMCUsIDUwJSA3NSUsIDgyJSAxMDAlLCA3MCUg
NjAlLCAxMDAlIDM4JSwgNjIlIDM4JSk7CisgICAgICAgICAgICAtbXMtY2xpcC1wYXRoOiBwb2x5
Z29uKDUwJSAwJSwgMzglIDM4JSwgMCUgMzglLCAzMCUgNjAlLCAxOCUgMTAwJSwgNTAlIDc1JSwg
ODIlIDEwMCUsIDcwJSA2MCUsIDEwMCUgMzglLCA2MiUgMzglKTsgIAorICAgICAgICAgICAgY2xp
cC1wYXRoOiBwb2x5Z29uKDUwJSAwJSwgMzglIDM4JSwgMCUgMzglLCAzMCUgNjAlLCAxOCUgMTAw
JSwgNTAlIDc1JSwgODIlIDEwMCUsIDcwJSA2MCUsIDEwMCUgMzglLCA2MiUgMzglKTsKKyAgICAg
ICAgfQorICAgIDwvc3R5bGU+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0
L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3Vu
Y2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
Ym91bmNpbmctY3NzLXNoYXBlcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8
ZGl2IGlkPSJzdGFnZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1p
bWFnZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbAkocmV2aXNpb24g
MCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bGluayByZWw9InN0eWxl
c2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAorICAg
IDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+ICAKKyAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1zdmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHN2ZyBpZD0ic3RhZ2UiPjwvc3ZnPgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1z
dmctc2hhcGVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4v
cmVzb3VyY2VzL3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9h
bGdvcml0aG0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
c3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
bWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRp
ZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4u
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwv
c2NyaXB0PiAgCisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctc3ZnLXBh
cnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2lu
Zy1zdmctc2hhcGVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxzdmcgaWQ9
InN0YWdlIj48L3N2Zz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNh
bnZhcy1pbWFnZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLWltYWdl
cy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorZnVuY3Rpb24gQm91bmNpbmdDYW52YXNJbWFn
ZShzdGFnZSkKK3sKKyAgICBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2Up
OworICAgIHRoaXMuX2ltYWdlRWxlbWVudCA9IHN0YWdlLmltYWdlRWxlbWVudDsKKyAgICB0aGlz
Ll9zaGFwZSA9ICJpbWFnZSI7Cit9CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2lu
Z0NhbnZhc0ltYWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzSW1hZ2U7
CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90eXBlLl9kcmF3ID0gZnVuY3Rpb24oKQorewor
ICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgpOworICAgICAgICB0aGlzLl9hcHBseVJvdGF0aW9uKCk7
CisgICAgICAgIHRoaXMuX2NvbnRleHQuZHJhd0ltYWdlKHRoaXMuX2ltYWdlRWxlbWVudCwgMCwg
MCwgdGhpcy5fc2l6ZS54LCB0aGlzLl9zaXplLnkpOworICAgIHRoaXMuX2NvbnRleHQucmVzdG9y
ZSgpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlKGVsZW1lbnQsIG9w
dGlvbnMpCit7CisgICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVs
ZW1lbnQsIG9wdGlvbnMpOworCisgICAgdmFyIGltYWdlU3JjID0gb3B0aW9uc1siaW1hZ2VTcmMi
XSB8fCAicmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7CisgICAgdGhpcy5pbWFnZUVsZW1lbnQgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuaGlkZGVuW3NyYz1cIiIgKyBpbWFnZVNyYyArICJcIl0i
KTsKK30KKworQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3Jl
YXRlKEJvdW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2Fu
dmFzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNJbWFn
ZXNTdGFnZTsKKworQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFy
dGljbGUgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdl
KHRoaXMpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayhzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIEJvdW5j
aW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2Vz
QmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdDYW52YXNQYXJ0aWNs
ZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrOworCitC
b3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5j
dGlvbihlbGVtZW50KQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNJbWFnZXNTdGFn
ZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKword2luZG93LmJlbmNobWFya0NsaWVudC5j
cmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dy
ZXNzQmFyKQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmso
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4
OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jl
c291cmNlcy9ib3VuY2luZy1jYW52YXMtcGFydGljbGVzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2Vz
L2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3Vu
Y2luZy1jYW52YXMtcGFydGljbGVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBA
CitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlKHN0YWdlKQoreworICAgIEJvdW5jaW5n
UGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CisgICAgdGhpcy5fY29udGV4dCA9IHN0YWdlLmNv
bnRleHQ7CisgICAgdGhpcy5fc2hhcGUgPSAiIjsKKyAgICB0aGlzLl9jbGlwID0gc3RhZ2UuY2xp
cDsKK30KKworQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5jbGlwcyA9IHsKKyAgICBzdGFyOiBbCisg
ICAgICAgIG5ldyBQb2ludCgwLjUwLCAwLjAwKSwKKyAgICAgICAgbmV3IFBvaW50KDAuMzgsIDAu
MzgpLAorICAgICAgICBuZXcgUG9pbnQoMC4wMCwgMC4zOCksCisgICAgICAgIG5ldyBQb2ludCgw
LjMwLCAwLjYwKSwKKyAgICAgICAgbmV3IFBvaW50KDAuMTgsIDEuMDApLAorICAgICAgICBuZXcg
UG9pbnQoMC41MCwgMC43NSksCisgICAgICAgIG5ldyBQb2ludCgwLjgyLCAxLjAwKSwKKyAgICAg
ICAgbmV3IFBvaW50KDAuNzAsIDAuNjApLAorICAgICAgICBuZXcgUG9pbnQoMS4wMCwgMC4zOCks
CisgICAgICAgIG5ldyBQb2ludCgwLjYyLCAwLjM4KQorICAgIF0sCit9OworCitCb3VuY2luZ0Nh
bnZhc1BhcnRpY2xlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5w
cm90b3R5cGUpOworQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlOworCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3Rv
dHlwZS5fYXBwbHlSb3RhdGlvbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAodGhpcy5fc2hhcGUg
PT0gImNpcmNsZSIpCisgICAgICAgIHJldHVybjsKKworICAgIHRoaXMuX2NvbnRleHQudHJhbnNs
YXRlKHRoaXMuX3NpemUueCAvIDIsIHRoaXMuX3NpemUueSAvIDIpOworICAgIHRoaXMuX2NvbnRl
eHQucm90YXRlKHRoaXMuX3JvdGF0ZXIuZGVncmVlKCkgKiBNYXRoLlBJIC8gMTgwKTsKKyAgICB0
aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSgtdGhpcy5fc2l6ZS54IC8gMiwgLXRoaXMuX3NpemUueSAv
IDIpOworfQorCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZS5fYXBwbHlDbGlwcGlu
ZyA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgY2xpcFBvaW50cyA9IEJvdW5jaW5nQ2FudmFzUGFy
dGljbGUuY2xpcHNbdGhpcy5fY2xpcF07CisgICAgaWYgKCFjbGlwUG9pbnRzKQorICAgICAgICBy
ZXR1cm47CisgICAgICAgIAorICAgIHRoaXMuX2NvbnRleHQuYmVnaW5QYXRoKCk7CisgICAgY2xp
cFBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKHBvaW50LCBpbmRleCkgeworICAgICAgICB2YXIgcG9p
bnQgPSB0aGlzLl9zaXplLm11bHRpcGx5KHBvaW50KTsKKyAgICAgICAgaWYgKCFpbmRleCkKKyAg
ICAgICAgICAgIHRoaXMuX2NvbnRleHQubW92ZVRvKHBvaW50LngsIHBvaW50LnkpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbyhwb2ludC54LCBwb2ludC55
KTsKKyAgICB9LCB0aGlzKTsKKworICAgIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7CisgICAg
dGhpcy5fY29udGV4dC5jbGlwKCk7Cit9CisKK0JvdW5jaW5nQ2FudmFzUGFydGljbGUucHJvdG90
eXBlLl9kcmF3ID0gZnVuY3Rpb24oKQoreworICAgIHRocm93ICJOb3QgaW1wbGVtZW50ZWQiOwor
fQorCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24o
dGltZURlbHRhKQoreworICAgIEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUuY2Fs
bCh0aGlzLCB0aW1lRGVsdGEpOworICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgpOworICAgICAgICB0
aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSh0aGlzLl9wb3NpdGlvbi54LCB0aGlzLl9wb3NpdGlvbi55
KTsKKyAgICAgICAgdGhpcy5fZHJhdygpOworICAgIHRoaXMuX2NvbnRleHQucmVzdG9yZSgpOwor
fQorCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdlKGVsZW1lbnQsIG9wdGlv
bnMpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9w
dGlvbnMpOworICAgIHRoaXMuY29udGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCIyZCIp
OworfQorCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNQ
YXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1BhcnRp
Y2xlc1N0YWdlOworCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yKGJl
bmNobWFyaykKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLmNhbGwodGhpcywgYmVu
Y2htYXJrKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJrLl9zdGFnZS5jb250ZXh0Owor
fQorCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUpOworQm91bmNpbmdDYW52
YXNQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZh
c1BhcnRpY2xlc0FuaW1hdG9yOworCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yLnBy
b3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX2NvbnRleHQuY2xlYXJS
ZWN0KDAsIDAsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS54LCB0aGlzLl9iZW5jaG1hcmsu
X3N0YWdlLnNpemUueSk7CisgICAgcmV0dXJuIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJv
dG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNQ
YXJ0aWNsZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9n
cmVzc0JhcikKK3sKKyAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBv
cHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJr
LnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyazsKKworQm91bmNp
bmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVu
Y3Rpb24oKQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRv
cih0aGlzKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3Vu
Y2luZy1jYW52YXMtc2hhcGVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZh
cy1zaGFwZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVz
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTAgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nQ2Fu
dmFzU2hhcGUoc3RhZ2UpCit7CisgICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5jYWxsKHRoaXMs
IHN0YWdlKTsKKyAgICB0aGlzLl9maWxsID0gc3RhZ2UuZmlsbDsKKyAgICB0aGlzLl9zaGFwZSA9
IHN0YWdlLnNoYXBlOworICAgIHRoaXMuX2NvbG9yMCA9IHN0YWdlLnJhbmRvbUNvbG9yKCk7Cisg
ICAgdGhpcy5fY29sb3IxID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsgICAgCit9CisKK0JvdW5jaW5n
Q2FudmFzU2hhcGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ0NhbnZhc1BhcnRp
Y2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciA9IEJvdW5jaW5nQ2FudmFzU2hhcGU7CisKK0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBl
Ll9hcHBseUZpbGwgPSBmdW5jdGlvbigpCit7CisgICAgc3dpdGNoICh0aGlzLl9maWxsKSB7Cisg
ICAgY2FzZSAiZ3JhZGllbnQiOgorICAgICAgICB2YXIgZ3JhZGllbnQgPSB0aGlzLl9jb250ZXh0
LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIDAsIHRoaXMuX3NpemUud2lkdGgsIDApOworICAgICAg
ICBncmFkaWVudC5hZGRDb2xvclN0b3AoMCwgdGhpcy5fY29sb3IwKTsKKyAgICAgICAgZ3JhZGll
bnQuYWRkQ29sb3JTdG9wKDEsIHRoaXMuX2NvbG9yMSk7IAorICAgICAgICB0aGlzLl9jb250ZXh0
LmZpbGxTdHlsZSA9IGdyYWRpZW50OworICAgICAgICBicmVhazsKKyAgICAKKyAgICBjYXNlICJz
b2xpZCI6CisgICAgZGVmYXVsdDoKKyAgICAgICAgdGhpcy5fY29udGV4dC5maWxsU3R5bGUgPSB0
aGlzLl9jb2xvcjA7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworQm91bmNpbmdDYW52YXNT
aGFwZS5wcm90b3R5cGUuX2RyYXdTaGFwZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9jb250
ZXh0LmJlZ2luUGF0aCgpOworCisgICAgc3dpdGNoICh0aGlzLl9zaGFwZSkgeworICAgIGNhc2Ug
InJlY3QiOgorICAgICAgICB0aGlzLl9jb250ZXh0LnJlY3QoMCwgMCwgdGhpcy5fc2l6ZS53aWR0
aCwgdGhpcy5fc2l6ZS5oZWlnaHQpOworICAgICAgICBicmVhazsKKyAgICAKKyAgICBjYXNlICJj
aXJjbGUiOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHZhciBjZW50ZXIgPSB0aGlzLl9zaXplLmNl
bnRlcjsKKyAgICAgICAgdmFyIHJhZGl1cyA9IE1hdGgubWluKHRoaXMuX3NpemUueCwgdGhpcy5f
c2l6ZS55KSAvIDI7CisgICAgICAgIHRoaXMuX2NvbnRleHQuYXJjKGNlbnRlci54LCBjZW50ZXIu
eSwgcmFkaXVzLCAwLCBNYXRoLlBJICogMiwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIHRoaXMuX2NvbnRleHQuZmlsbCgpOworfQorCitCb3VuY2luZ0NhbnZhc1NoYXBlLnBy
b3RvdHlwZS5fZHJhdyA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9jb250ZXh0LnNhdmUoKTsK
KyAgICAgICAgdGhpcy5fYXBwbHlGaWxsKCk7CisgICAgICAgIHRoaXMuX2FwcGx5Um90YXRpb24o
KTsKKyAgICAgICAgdGhpcy5fYXBwbHlDbGlwcGluZygpOworICAgICAgICB0aGlzLl9kcmF3U2hh
cGUoKTsKKyAgICB0aGlzLl9jb250ZXh0LnJlc3RvcmUoKTsKK30KKworZnVuY3Rpb24gQm91bmNp
bmdDYW52YXNTaGFwZXNTdGFnZShlbGVtZW50LCBvcHRpb25zKQoreworICAgIEJvdW5jaW5nQ2Fu
dmFzUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0aGlz
LnBhcnNlU2hhcGVQYXJhbXRlcnMob3B0aW9ucyk7Cit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGVz
U3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0
YWdlLnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2U7CisKK0JvdW5jaW5nQ2FudmFzU2hh
cGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlID0gZnVuY3Rpb24oKQoreworICAgIHJl
dHVybiBuZXcgQm91bmNpbmdDYW52YXNTaGFwZSh0aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNp
bmdDYW52YXNTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxl
LCBwcm9ncmVzc0JhcikKK3sKKyAgICBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5j
YWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
OworfQorCitCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3Qu
Y3JlYXRlKEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSk7CitCb3Vu
Y2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2lu
Z0NhbnZhc1NoYXBlc0JlbmNobWFyazsKKworQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsu
cHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKK3sKKyAgICByZXR1cm4g
bmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9
CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICByZXR1cm4gbmV3IEJv
dW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRU
YWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdlcy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmpzCShyZXZpc2lvbiAw
KQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDYzIEBACitmdW5jdGlvbiBCb3VuY2luZ0Nzc0ltYWdlKHN0YWdlKQoreworICAgIEJvdW5j
aW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CisKKyAgICB0aGlzLmVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGgg
PSB0aGlzLl9zaXplLnggKyAicHgiOworICAgIHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0
aGlzLl9zaXplLnkgKyAicHgiOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInNyYyIs
IHN0YWdlLmltYWdlU3JjKTsKKyAgICAKKyAgICBzdGFnZS5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuZWxlbWVudCk7CisgICAgdGhpcy5fbW92ZSgpOworfQorCitCb3VuY2luZ0Nzc0ltYWdlLnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUpOworQm91
bmNpbmdDc3NJbWFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0Nzc0ltYWdlOwor
CitCb3VuY2luZ0Nzc0ltYWdlLnByb3RvdHlwZS5fbW92ZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0
aGlzLmVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZSgiICsgdGhpcy5fcG9zaXRp
b24ueCArICJweCwiICsgdGhpcy5fcG9zaXRpb24ueSArICJweCkgIiArIHRoaXMuX3JvdGF0ZXIu
cm90YXRlWigpOworfQorICAgIAorQm91bmNpbmdDc3NJbWFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9
IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5h
bmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlzLl9tb3ZlKCk7Cit9CisKK2Z1
bmN0aW9uIEJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBC
b3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAg
dGhpcy5pbWFnZVNyYyA9IG9wdGlvbnNbImltYWdlU3JjIl0gfHwgIi4uL3Jlc291cmNlcy95aW4t
eWFuZy5zdmciOworfQorCitCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdDc3NJ
bWFnZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0Nzc0ltYWdlc1N0YWdl
OworCitCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1
bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ3NzSW1hZ2UodGhpcyk7Cit9CisK
K0JvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCA9
IGZ1bmN0aW9uKHBhcnRpY2xlKQoreworICAgIHBhcnRpY2xlLmVsZW1lbnQucmVtb3ZlKCk7Cit9
CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNC
ZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHBy
b2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOworQm91
bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdD
c3NJbWFnZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlw
ZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgcmV0dXJuIG5ldyBCb3Vu
Y2luZ0Nzc0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCit3aW5kb3cu
YmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBy
ZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nzc0lt
YWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNz
QmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1zaGFwZXMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9y
ZXNvdXJjZXMvYm91bmNpbmctY3NzLXNoYXBlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLWNzcy1zaGFwZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MSBAQAorZnVu
Y3Rpb24gQm91bmNpbmdDc3NTaGFwZShzdGFnZSkKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlLmNh
bGwodGhpcywgc3RhZ2UpOworCisgICAgdGhpcy5lbGVtZW50ID0gdGhpcy5fY3JlYXRlU3Bhbihz
dGFnZSk7CisgICAgICAgIAorICAgIHN3aXRjaCAoc3RhZ2UuZmlsbCkgeworICAgIGNhc2UgInNv
bGlkIjoKKyAgICBkZWZhdWx0OgorICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3Vu
ZENvbG9yID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgIAor
ICAgIGNhc2UgImdyYWRpZW50IjoKKyAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91
bmQgPSAibGluZWFyLWdyYWRpZW50KCIgKyBzdGFnZS5yYW5kb21Db2xvcigpICsgIiwgIiArIHN0
YWdlLnJhbmRvbUNvbG9yKCkgKyAiKSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHRo
aXMuX21vdmUoKTsKK30KKworQm91bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUgPSBPYmplY3QuY3Jl
YXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlKTsKK0JvdW5jaW5nQ3NzU2hhcGUucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDc3NTaGFwZTsKKworQm91bmNpbmdDc3NTaGFwZS5w
cm90b3R5cGUuX2NyZWF0ZVNwYW4gPSBmdW5jdGlvbihzdGFnZSkKK3sKKyAgICB2YXIgc3BhbiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBzcGFuLmNsYXNzTmFtZSA9IHN0
YWdlLnNoYXBlICsgIiAiICsgc3RhZ2UuY2xpcDsKKyAgICBzcGFuLnN0eWxlLndpZHRoID0gdGhp
cy5fc2l6ZS54ICsgInB4IjsKKyAgICBzcGFuLnN0eWxlLmhlaWdodCA9IHRoaXMuX3NpemUueSAr
ICJweCI7CisgICAgc3RhZ2UuZWxlbWVudC5hcHBlbmRDaGlsZChzcGFuKTsKKyAgICByZXR1cm4g
c3BhbjsKK30KKworQm91bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUuX21vdmUgPSBmdW5jdGlvbigp
Cit7CisgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9ICJ0cmFuc2xhdGUoIiArIHRo
aXMuX3Bvc2l0aW9uLnggKyAicHgsIiArIHRoaXMuX3Bvc2l0aW9uLnkgKyAicHgpIiArIHRoaXMu
X3JvdGF0ZXIucm90YXRlWigpOworfQorICAgIAorQm91bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUu
YW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlLnBy
b3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlzLl9yb3RhdGVy
Lm5leHQodGltZURlbHRhKTsgICAgCisgICAgdGhpcy5fbW92ZSgpOworfQorCitmdW5jdGlvbiBC
b3VuY2luZ0Nzc1NoYXBlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7CisgICAgQm91bmNpbmdQ
YXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgIHRoaXMucGFy
c2VTaGFwZVBhcmFtdGVycyhvcHRpb25zKTsKK30KKworQm91bmNpbmdDc3NTaGFwZXNTdGFnZS5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBl
KTsKK0JvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNp
bmdDc3NTaGFwZXNTdGFnZTsKKworQm91bmNpbmdDc3NTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3Jl
YXRlUGFydGljbGUgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nzc1No
YXBlKHRoaXMpOworfQorCitCb3VuY2luZ0Nzc1NoYXBlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNs
ZVdpbGxCZVJlbW92ZWQgPSBmdW5jdGlvbihwYXJ0aWNsZSkKK3sKKyAgICBwYXJ0aWNsZS5lbGVt
ZW50LnJlbW92ZSgpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyayhz
dWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIEJv
dW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nQ3NzU2hhcGVzQmVuY2ht
YXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsu
cHJvdG90eXBlKTsKK0JvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IEJvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJrOworCitCb3VuY2luZ0Nzc1NoYXBlc0Jl
bmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQoreworICAg
IHJldHVybiBuZXcgQm91bmNpbmdDc3NTaGFwZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25z
KTsKK30KKword2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIHJldHVybiBu
ZXcgQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29y
ZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzCShyZXZpc2lvbiAw
KQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTMyIEBACitmdW5jdGlvbiBCb3VuY2luZ1BhcnRpY2xlKHN0YWdlKQoreworICAgIHRoaXMu
X3N0YWdlU2l6ZSA9IHN0YWdlLnNpemU7CisgICAgdGhpcy5fc2l6ZSA9IHN0YWdlLnBhcnRpY2xl
U2l6ZTsKKyAgICAKKyAgICB0aGlzLl9wb3NpdGlvbiA9IHN0YWdlLnJhbmRvbVBvc2l0aW9uKHN0
YWdlLnNpemUuc3VidHJhY3Qoc3RhZ2UucGFydGljbGVTaXplKSk7CisgICAgdGhpcy5fYW5nbGUg
PSBzdGFnZS5yYW5kb21BbmdsZSgpOworICAgIHRoaXMuX3ZlbG9jaXR5ID0gc3RhZ2UucmFuZG9t
VmVsb2NpdHkoc3RhZ2UubWF4VmVsb2NpdHkpOworICAgIHRoaXMuX3JvdGF0ZXIgPSBzdGFnZS5y
YW5kb21Sb3RhdGVyKCk7Cit9CisKK0JvdW5jaW5nUGFydGljbGUucHJvdG90eXBlID0KK3sKKyAg
ICBnZXQgY2VudGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlvbi5hZGQo
dGhpcy5fc2l6ZS5jZW50ZXIpOworICAgIH0sCisgICAgCisgICAgYW5pbWF0ZTogZnVuY3Rpb24o
dGltZURlbHRhKQorICAgIHsKKyAgICAgICAgdGhpcy5fcG9zaXRpb24gPSB0aGlzLl9wb3NpdGlv
bi5tb3ZlKHRoaXMuX2FuZ2xlLCB0aGlzLl92ZWxvY2l0eSwgdGltZURlbHRhKTsKKyAgICAgICAg
dGhpcy5fcm90YXRlci5uZXh0KHRpbWVEZWx0YSk7CisKKyAgICAgICAgLy8gSWYgcGFydGljbGUg
aXMgZ29pbmcgdG8gbW92ZSBvZmYgcmlnaHQgc2lkZQorICAgICAgICBpZiAodGhpcy5fcG9zaXRp
b24ueCArIHRoaXMuX3NpemUueCA+IHRoaXMuX3N0YWdlU2l6ZS54KSB7CisgICAgICAgICAgICAv
LyBJZiBkaXJlY3Rpb24gaXMgRWFzdC1Tb3V0aAorICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xl
ID49IDAgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJIC8gMikKKyAgICAgICAgICAgICAgICB0aGlz
Ll9hbmdsZSA9IE1hdGguUEkgLSB0aGlzLl9hbmdsZTsKKyAgICAgICAgICAgIC8vIElmIGFuZ2xl
IGlzIEVhc3QtTm9ydGgKKyAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX2FuZ2xlID4gTWF0aC5Q
SSAvIDIgKiAzKQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0gdGhpcy5fYW5nbGUgLSAo
dGhpcy5fYW5nbGUgLSBNYXRoLlBJIC8gMiAqIDMpICogMjsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgbGVmdCBzaWRlCisg
ICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbi54IDwgMCkgeworICAgICAgICAgICAgLy8gSWYgYW5n
bGUgaXMgV2VzdC1Tb3V0aAorICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID4gTWF0aC5QSSAv
IDIgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJKQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xl
ID0gTWF0aC5QSSAtIHRoaXMuX2FuZ2xlOworICAgICAgICAgICAgLy8gSWYgYW5nbGUgaXMgV2Vz
dC1Ob3J0aAorICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5fYW5nbGUgPiBNYXRoLlBJICYmIHRo
aXMuX2FuZ2xlIDwgTWF0aC5QSSAvIDIgKiAzKQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xl
ID0gdGhpcy5fYW5nbGUgKyAoTWF0aC5QSSAvIDIgKiAzIC0gdGhpcy5fYW5nbGUpICogMjsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIElmIHBhcnRpY2xlIGlzIGdvaW5nIHRvIG1vdmUgb2ZmIGJv
dHRvbSBzaWRlCisgICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbi55ICsgdGhpcy5fc2l6ZS55ID4g
dGhpcy5fc3RhZ2VTaXplLnkpIHsKKyAgICAgICAgICAgIC8vIElmIGRpcmVjdGlvbiBpcyBTb3V0
aAorICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID4gMCAmJiB0aGlzLl9hbmdsZSA8IE1hdGgu
UEkpCisgICAgICAgICAgICAgICAgdGhpcy5fYW5nbGUgPSBNYXRoLlBJICogMiAtIHRoaXMuX2Fu
Z2xlOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92
ZSBvZmYgdG9wIHNpZGUKKyAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uLnkgPCAwKSB7CisgICAg
ICAgICAgICAvLyBJZiBkaXJlY3Rpb24gaXMgTm9ydGgKKyAgICAgICAgICAgIGlmICh0aGlzLl9h
bmdsZSA+IE1hdGguUEkgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJICogMikKKyAgICAgICAgICAg
ICAgICB0aGlzLl9hbmdsZSA9IHRoaXMuX2FuZ2xlIC0gKHRoaXMuX2FuZ2xlIC0gTWF0aC5QSSkg
KiAyOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBCb3VuY2luZ1BhcnRpY2xlc0Fu
aW1hdG9yKGJlbmNobWFyaykKK3sKKyAgICBTdGFnZUFuaW1hdG9yLmNhbGwodGhpcywgYmVuY2ht
YXJrKTsKK307CisKK0JvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShTdGFnZUFuaW1hdG9yLnByb3RvdHlwZSk7CitCb3VuY2luZ1BhcnRpY2xlc0FuaW1h
dG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3I7CisK
K2Z1bmN0aW9uIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAg
ICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQpOworICAgIAorICAgIHRoaXMucGFydGljbGVTaXpl
ID0gbmV3IFBvaW50KHBhcnNlSW50KG9wdGlvbnNbInBhcnRpY2xlV2lkdGgiXSkgfHwgMTAsIHBh
cnNlSW50KG9wdGlvbnNbInBhcnRpY2xlSGVpZ2h0Il0pIHx8IDEwKTsKKyAgICB0aGlzLl9wYXJ0
aWNsZXMgPSBbXTsKKworICAgIHRoaXMubWF4VmVsb2NpdHkgPSBwYXJzZUludChvcHRpb25zWyJt
YXhWZWxvY2l0eSJdKSB8fCA1MDA7CisgICAgdGhpcy5tYXhWZWxvY2l0eSA9IE1hdGgubWF4KHRo
aXMubWF4VmVsb2NpdHksIDEwMCk7Cit9CisKK0JvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdQYXJ0aWNsZXNT
dGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlOworCitC
b3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5wYXJzZVNoYXBlUGFyYW10ZXJzID0gZnVu
Y3Rpb24ob3B0aW9ucykKK3sKKyAgICB0aGlzLnNoYXBlID0gb3B0aW9uc1sic2hhcGUiXSB8fCAi
Y2lyY2xlIjsKKyAgICB0aGlzLmZpbGwgPSBvcHRpb25zWyJmaWxsIl0gfHwgInNvbGlkIjsKKyAg
ICB0aGlzLmNsaXAgPSBvcHRpb25zWyJjbGlwIl0gfHwgIiI7Cit9CisKK0JvdW5jaW5nUGFydGlj
bGVzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCit7CisgICAg
dGhpcy5fcGFydGljbGVzLmZvckVhY2goZnVuY3Rpb24ocGFydGljbGUpIHsKKyAgICAgICAgcGFy
dGljbGUuYW5pbWF0ZSh0aW1lRGVsdGEpOworICAgIH0pOworfQorICAgIAorQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KQoreworICAgIGNvdW50
ID0gY291bnQgPiAwID8gTWF0aC5mbG9vcihjb3VudCkgOiBNYXRoLmNlaWwoY291bnQpOworCisg
ICAgaWYgKGNvdW50ID09IDApCisgICAgICAgIHJldHVybiB0aGlzLl9wYXJ0aWNsZXMubGVuZ3Ro
OworCisgICAgaWYgKGNvdW50ID4gMCkgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2Yo
dGhpcy5jcmVhdGVQYXJ0aWNsZSkgPT0gImZ1bmN0aW9uIik7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX3BhcnRpY2xlcy5wdXNoKHRo
aXMuY3JlYXRlUGFydGljbGUoKSk7CisgICAgICAgIHJldHVybiB0aGlzLl9wYXJ0aWNsZXMubGVu
Z3RoOworICAgIH0KKworICAgIGNvdW50ID0gTWF0aC5taW4oLWNvdW50LCB0aGlzLl9wYXJ0aWNs
ZXMubGVuZ3RoKTsKKyAgICAgICAgCisgICAgaWYgKHR5cGVvZih0aGlzLnBhcnRpY2xlV2lsbEJl
UmVtb3ZlZCkgPT0gImZ1bmN0aW9uIikgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNv
dW50OyArK2kpCisgICAgICAgICAgICB0aGlzLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCh0aGlzLl9w
YXJ0aWNsZXNbdGhpcy5fcGFydGljbGVzLmxlbmd0aCAtIDEgLSBpXSk7CisgICAgfQorCisgICAg
dGhpcy5fcGFydGljbGVzLnNwbGljZSgtY291bnQsIGNvdW50KTsKKyAgICByZXR1cm4gdGhpcy5f
cGFydGljbGVzLmxlbmd0aDsKK30KKworZnVuY3Rpb24gQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1h
cmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAg
ICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRU
YWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7CitCb3VuY2lu
Z1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRp
Y2xlc0JlbmNobWFyazsKKworQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLmNy
ZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdQYXJ0
aWNsZXNBbmltYXRvcih0aGlzKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4
OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jl
c291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5j
aW5nLXN2Zy1pbWFnZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1h
Z2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKK2Z1bmN0aW9uIEJvdW5jaW5n
U3ZnSW1hZ2Uoc3RhZ2UpCit7CisgICAgQm91bmNpbmdTdmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0
YWdlKTsKKyAgICB0aGlzLl9zaGFwZSA9ICJpbWFnZSI7CisgICAgCisgICAgdmFyIGF0dHJzID0g
eyB4OiAwLCB5OiAwLCB3aWR0aDogdGhpcy5fc2l6ZS54LCBoZWlnaHQ6IHRoaXMuX3NpemUueSB9
OworICAgIHZhciB4bGlua0F0dHJzID0geyBocmVmOiBzdGFnZS5pbWFnZVNyYyB9OworICAgIHRo
aXMuZWxlbWVudCA9IFV0aWxpdGllcy5jcmVhdGVTdmdFbGVtZW50KCJpbWFnZSIsIGF0dHJzLCB4
bGlua0F0dHJzLCBzdGFnZS5lbGVtZW50KTsKKyAgICB0aGlzLl9tb3ZlKCk7Cit9CisKK0JvdW5j
aW5nU3ZnSW1hZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1N2Z1BhcnRpY2xl
LnByb3RvdHlwZSk7CitCb3VuY2luZ1N2Z0ltYWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJv
dW5jaW5nU3ZnSW1hZ2U7CisKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UoZWxlbWVu
dCwgb3B0aW9ucykKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxl
bWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5pbWFnZVNyYyA9IG9wdGlvbnNbImltYWdlU3JjIl0g
fHwgInJlc291cmNlcy95aW4teWFuZy5zdmciOworfQorCitCb3VuY2luZ1N2Z0ltYWdlc1N0YWdl
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90
b3R5cGUpOworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBC
b3VuY2luZ1N2Z0ltYWdlc1N0YWdlOworCitCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlLnByb3RvdHlw
ZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5n
U3ZnSW1hZ2UodGhpcyk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJr
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAg
Qm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdTdmdJbWFnZXNCZW5j
aG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFy
ay5wcm90b3R5cGUpOworQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0gQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nU3ZnSW1hZ2Vz
QmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7Cisg
ICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlv
bnMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRl
LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgcmV0dXJu
IG5ldyBCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1wYXJ0
aWNsZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXBhcnRpY2xlcy5qcwko
cmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1wYXJ0aWNsZXMuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw2OCBAQAorZnVuY3Rpb24gQm91bmNpbmdTdmdQYXJ0aWNsZShzdGFn
ZSkKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworfQorCitCb3Vu
Y2luZ1N2Z1BhcnRpY2xlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNs
ZS5wcm90b3R5cGUpOworQm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBCb3VuY2luZ1BhcnRpY2xlOworCitCb3VuY2luZ1N2Z1BhcnRpY2xlLnByb3RvdHlwZS5fYXBw
bHlDbGlwcGluZyA9IGZ1bmN0aW9uKHN0YWdlKQoreworICAgIGlmIChzdGFnZS5jbGlwICE9ICJz
dGFyIikKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBzdGFnZS5lbnN1cmVDbGlwU3Rh
cklzQ3JlYXRlZCgpOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImNsaXAtcGF0aCIs
ICJ1cmwoI3N0YXItY2xpcCkiKTsKK30KKworQm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5cGUu
X21vdmUgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIHRyYW5zZm9ybSA9ICJ0cmFuc2xhdGUoIiAr
IHRoaXMuX3Bvc2l0aW9uLnggKyAiLCAiICsgdGhpcy5fcG9zaXRpb24ueSArICIpIjsKKyAgICBp
ZiAodGhpcy5fc2hhcGUgIT0gImNpcmNsZSIpCisgICAgICAgIHRyYW5zZm9ybSArPSB0aGlzLl9y
b3RhdGVyLnJvdGF0ZSh0aGlzLl9zaXplLmNlbnRlcik7CisgICAgdGhpcy5lbGVtZW50LnNldEF0
dHJpYnV0ZSgidHJhbnNmb3JtIiwgdHJhbnNmb3JtKTsKK30KKworQm91bmNpbmdTdmdQYXJ0aWNs
ZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAgICBCb3VuY2lu
Z1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0
aGlzLl9tb3ZlKCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UoZWxl
bWVudCwgb3B0aW9ucykKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywg
ZWxlbWVudCwgb3B0aW9ucyk7Cit9CisKK0JvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7CitC
b3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5n
U3ZnUGFydGljbGVzU3RhZ2U7CisKK0JvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBl
Ll9jcmVhdGVEZWZzID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiBVdGlsaXRpZXMuY3JlYXRl
U3ZnRWxlbWVudCgiZGVmcyIsIHt9LCB7fSwgdGhpcy5lbGVtZW50KTsKK30KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorQm91
bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuX2Vuc3VyZURlZnNJc0NyZWF0ZWQgPSBm
dW5jdGlvbigpCit7CisgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKCJkZWZz
IikgfHwgdGhpcy5fY3JlYXRlRGVmcygpOworfQorCitCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdl
LnByb3RvdHlwZS5fY3JlYXRlQ2xpcFN0YXIgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIGF0dHJz
ID0geyBpZDogInN0YXItY2xpcCIsIGNsaXBQYXRoVW5pdHM6ICJvYmplY3RCb3VuZGluZ0JveCIg
fTsKKyAgICB2YXIgY2xpcFBhdGggID0gVXRpbGl0aWVzLmNyZWF0ZVN2Z0VsZW1lbnQoImNsaXBQ
YXRoIiwgYXR0cnMsIHt9LCB0aGlzLl9lbnN1cmVEZWZzSXNDcmVhdGVkKCkpOworCisgICAgYXR0
cnMgPSB7IGQ6ICJNLjUwLDBMLjM4LC4zOEwwLC4zOEwuMzAsLjYwTC4xOCwxTC41MCwuNzVMLjgy
LDFMLjcwLC42MEwxLC4zOEwuNjIsLjM4eiIgfTsKKyAgICBVdGlsaXRpZXMuY3JlYXRlU3ZnRWxl
bWVudCgicGF0aCIsIGF0dHJzLCB7fSwgY2xpcFBhdGgpOworICAgIHJldHVybiBjbGlwUGF0aDsK
K30KKworQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuZW5zdXJlQ2xpcFN0YXJJ
c0NyZWF0ZWQgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5xdWVyeVNl
bGVjdG9yKCIjc3Rhci1jbGlwIikgfHwgdGhpcy5fY3JlYXRlQ2xpcFN0YXIoKTsKK30KKworQm91
bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkID0g
ZnVuY3Rpb24ocGFydGljbGUpCit7CisgICAgcGFydGljbGUuZWxlbWVudC5yZW1vdmUoKTsKK30K
SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMv
Ym91bmNpbmctc3ZnLXNoYXBlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2
Zy1zaGFwZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQgQEAKK2Z1bmN0aW9uIEJv
dW5jaW5nU3ZnU2hhcGUoc3RhZ2UpCit7CisgICAgQm91bmNpbmdTdmdQYXJ0aWNsZS5jYWxsKHRo
aXMsIHN0YWdlKTsKKyAgICB0aGlzLl9zaGFwZSA9IHN0YWdlLnNoYXBlOworICAgIHRoaXMuX2Zp
bGwgPSBzdGFnZS5maWxsOworICAgIAorICAgIHRoaXMuX2NyZWF0ZVNoYXBlKHN0YWdlKTsKKyAg
ICB0aGlzLl9hcHBseUNsaXBwaW5nKHN0YWdlKTsKKyAgICB0aGlzLl9hcHBseUZpbGwoc3RhZ2Up
OworCisgICAgdGhpcy5fbW92ZSgpOyAgICAKK30KKworQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5
cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBlKTsKK0JvdW5j
aW5nU3ZnU2hhcGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdTaGFwZTsKKwor
Qm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVNoYXBlID0gZnVuY3Rpb24oc3RhZ2Up
Cit7CisgICAgc3dpdGNoICh0aGlzLl9zaGFwZSkgeworICAgIGNhc2UgInJlY3QiOgorICAgICAg
ICB2YXIgYXR0cnMgPSB7IHg6IDAsIHk6IDAsIHdpZHRoOiB0aGlzLl9zaXplLngsIGhlaWdodDog
dGhpcy5fc2l6ZS55IH07CisgICAgICAgIHRoaXMuZWxlbWVudCA9IFV0aWxpdGllcy5jcmVhdGVT
dmdFbGVtZW50KCJyZWN0IiwgYXR0cnMsIHt9LCBzdGFnZS5lbGVtZW50KTsKKyAgICAgICAgYnJl
YWs7CisgICAgCisgICAgY2FzZSAiY2lyY2xlIjoKKyAgICBkZWZhdWx0OgorICAgICAgICB2YXIg
YXR0cnMgPSB7IGN4OiB0aGlzLl9zaXplLnggLyAyLCBjeTogdGhpcy5fc2l6ZS55IC8gMiwgcjog
TWF0aC5taW4odGhpcy5fc2l6ZS54LCB0aGlzLl9zaXplLnkpIC8gMiB9OworICAgICAgICB0aGlz
LmVsZW1lbnQgPSBVdGlsaXRpZXMuY3JlYXRlU3ZnRWxlbWVudCgiY2lyY2xlIiwgYXR0cnMsIHt9
LCBzdGFnZS5lbGVtZW50KTsKKyAgICAgICAgYnJlYWs7ICAgICAgICAKKyAgICB9Cit9CisKK0Jv
dW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLl9hcHBseUZpbGwgPSBmdW5jdGlvbihzdGFnZSkKK3sK
KyAgICBzd2l0Y2ggKHRoaXMuX2ZpbGwpIHsKKyAgICBjYXNlICJncmFkaWVudCI6CisgICAgICAg
IHZhciBncmFkaWVudCA9IHN0YWdlLmNyZWF0ZUdyYWRpZW50KDIpOworICAgICAgICB0aGlzLmVs
ZW1lbnQuc2V0QXR0cmlidXRlKCJmaWxsIiwgInVybCgjIiArIGdyYWRpZW50LmdldEF0dHJpYnV0
ZSgiaWQiKSArICIpIik7CisgICAgICAgIGJyZWFrOworICAgIAorICAgIGNhc2UgInNvbGlkIjoK
KyAgICBkZWZhdWx0OgorICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJmaWxsIiwg
c3RhZ2UucmFuZG9tQ29sb3IoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworZnVuY3Rp
b24gQm91bmNpbmdTdmdTaGFwZXNTdGFnZShlbGVtZW50LCBvcHRpb25zKQoreworICAgIEJvdW5j
aW5nU3ZnUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0
aGlzLnBhcnNlU2hhcGVQYXJhbXRlcnMob3B0aW9ucyk7CisgICAgdGhpcy5fZ3JhZGllbnRzQ291
bnQgPSAwOworfQorCitCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUoQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdTdmdT
aGFwZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdl
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCitCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVHcmFkaWVu
dCA9IGZ1bmN0aW9uKHN0b3BzKQoreworICAgIHZhciBhdHRycyA9IHsgaWQ6ICJnYWRpZW50LSIg
KyArK3RoaXMuX2dyYWRpZW50c0NvdW50IH07CisgICAgdmFyIGdyYWRpZW50ID0gVXRpbGl0aWVz
LmNyZWF0ZVN2Z0VsZW1lbnQoImxpbmVhckdyYWRpZW50IiwgYXR0cnMsIHt9LCB0aGlzLl9lbnN1
cmVEZWZzSXNDcmVhdGVkKCkpOyAgICAKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0
b3BzOyArK2kpIHsKKyAgICAgICAgYXR0cnMgPSB7IG9mZnNldDogaSAqIDEwMCAvIHN0b3BzICsg
IiUiLCAnc3RvcC1jb2xvcic6IHRoaXMucmFuZG9tQ29sb3IoKSB9OworICAgICAgICBVdGlsaXRp
ZXMuY3JlYXRlU3ZnRWxlbWVudCgic3RvcCIsIGF0dHJzLCB7fSwgZ3JhZGllbnQpOworICAgIH0K
KworICAgIHJldHVybiBncmFkaWVudDsKK30KKworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90
b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIG5ldyBCb3Vu
Y2luZ1N2Z1NoYXBlKHRoaXMpOworfQorCitCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlw
ZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQgPSBmdW5jdGlvbihwYXJ0aWNsZSkKK3sKKyAgICBCb3Vu
Y2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQuY2Fs
bCh0aGlzLCBwYXJ0aWNsZSk7CisKKyAgICB2YXIgZmlsbCA9IHBhcnRpY2xlLmVsZW1lbnQuZ2V0
QXR0cmlidXRlKCJmaWxsIik7CisgICAgaWYgKGZpbGwuaW5kZXhPZigidXJsKCMiKSAhPSAwKQor
ICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIHZhciBncmFkaWVudCA9IHRoaXMuZWxlbWVu
dC5xdWVyeVNlbGVjdG9yKGZpbGwuc3Vic3RyaW5nKDQsIGZpbGwubGVuZ3RoIC0gMSkpOworICAg
IHRoaXMuX2Vuc3VyZURlZnNJc0NyZWF0ZWQoKS5yZW1vdmVDaGlsZChncmFkaWVudCk7Cit9CisK
K2Z1bmN0aW9uIEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5j
aG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dy
ZXNzQmFyKTsKK30KKworQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOworQm91bmNp
bmdTdmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdT
aGFwZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5j
cmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2lu
Z1N2Z1NoYXBlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCit3aW5kb3cuYmVu
Y2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBl
c0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFy
KTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMv
bWFpbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL21haW4uanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
NDIgQEAKK2Z1bmN0aW9uIEJlbmNobWFya1N0YXRlKHRlc3RJbnRlcnZhbCkKK3sKKyAgICB0aGlz
Ll9jdXJyZW50VGltZU9mZnNldCA9IDA7CisgICAgdGhpcy5fc3RhZ2VJbnRlcnZhbCA9IHRlc3RJ
bnRlcnZhbCAvIEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRDsKK30KKworLy8gVGhlIGVu
dW0gdmFsdWVzIGFuZCB0aGUgbWVzc2FnZXMgc2hvdWxkIGJlIGluIHRoZSBzYW1lIG9yZGVyCitC
ZW5jaG1hcmtTdGF0ZS5zdGFnZXMgPSB7CisgICAgV0FSTUlOR19VUDogMCwKKyAgICBTQU1QTElO
RzogMSwKKyAgICBGSU5JU0hFRDogMiwKKyAgICBtZXNzYWdlczogWyAiV2FybWluZyB1cCIsICJT
YW1wbGluZyIsICJGaW5pc2hlZCIgXQorfQorCitCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUgPQor
eworICAgIF90aW1lT2Zmc2V0OiBmdW5jdGlvbihzdGFnZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBzdGFnZSAqIHRoaXMuX3N0YWdlSW50ZXJ2YWw7CisgICAgfSwKKyAgICAKKyAgICBfbWVzc2Fn
ZTogZnVuY3Rpb24oc3RhZ2UsIHRpbWVPZmZzZXQpCisgICAgeworICAgICAgICBpZiAoc3RhZ2Ug
PT0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEKQorICAgICAgICAgICAgcmV0dXJuIEJl
bmNobWFya1N0YXRlLnN0YWdlcy5tZXNzYWdlc1tzdGFnZV07CisKKyAgICAgICAgcmV0dXJuIEJl
bmNobWFya1N0YXRlLnN0YWdlcy5tZXNzYWdlc1tzdGFnZV0gKyAiLi4uICgiCisgICAgICAgICAg
ICArIE1hdGguZmxvb3IoKHRpbWVPZmZzZXQgLSB0aGlzLl90aW1lT2Zmc2V0KHN0YWdlKSkgLyAx
MDAwKSArICIvIgorICAgICAgICAgICAgKyBNYXRoLmZsb29yKCh0aGlzLl90aW1lT2Zmc2V0KHN0
YWdlICsgMSkgLSB0aGlzLl90aW1lT2Zmc2V0KHN0YWdlKSkgLyAxMDAwKSArICIpIjsKKyAgICB9
LAorICAgIAorICAgIHVwZGF0ZTogZnVuY3Rpb24oY3VycmVudFRpbWVPZmZzZXQpCisgICAgewor
ICAgICAgICB0aGlzLl9jdXJyZW50VGltZU9mZnNldCA9IGN1cnJlbnRUaW1lT2Zmc2V0OworICAg
IH0sCisgICAgCisgICAgc2FtcGxpbmdUaW1lT2Zmc2V0OiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fdGltZU9mZnNldChCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuU0FNUExJ
TkcpOworICAgIH0sCisgICAgCisgICAgY3VycmVudFN0YWdlOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICBmb3IgKHZhciBzdGFnZSA9IEJlbmNobWFya1N0YXRlLnN0YWdlcy5XQVJNSU5HX1VQ
OyBzdGFnZSA8IEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRDsgKytzdGFnZSkgeworICAg
ICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IDwgdGhpcy5fdGltZU9mZnNldChz
dGFnZSArIDEpKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGFnZTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEOworICAgIH0sCisgICAg
CisgICAgY3VycmVudE1lc3NhZ2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9tZXNzYWdlKHRoaXMuY3VycmVudFN0YWdlKCksIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0
KTsKKyAgICB9LAorICAgIAorICAgIGN1cnJlbnRQcm9ncmVzczogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IC8gdGhpcy5fdGltZU9mZnNl
dChCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQpOworICAgIH0KK30KKworZnVuY3Rpb24g
QW5pbWF0b3IoYmVuY2htYXJrKQoreworICAgIHRoaXMuX2JlbmNobWFyayA9IGJlbmNobWFyazsK
KyAgICB0aGlzLl9mcmFtZUNvdW50ID0gMDsKKyAgICB0aGlzLl9kcm9wRnJhbWVDb3VudCA9IDE7
CisgICAgdGhpcy5fbWVhc3VyZUZyYW1lQ291bnQgPSAzOyAKKyAgICB0aGlzLl9yZWZlcmVuY2VU
aW1lID0gMDsKKyAgICB0aGlzLl9jdXJyZW50VGltZU9mZnNldCA9IDA7CisgICAgdGhpcy5fZXN0
aW1hdG9yID0gbmV3IEthbG1hbkVzdGltYXRvcigpOworfQorCitBbmltYXRvci5wcm90b3R5cGUg
PQoreworICAgIHN0YXJ0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9pbnRlcnZh
bElkID0gc2V0SW50ZXJ2YWwodGhpcy5hbmltYXRlLmJpbmQodGhpcyksIDEpOworICAgIH0sCisg
ICAgCisgICAgdGltZURlbHRhOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fY3VycmVudFRpbWVPZmZzZXQgLSB0aGlzLl9zdGFydFRpbWVPZmZzZXQ7CisgICAgfSwKKyAg
ICAKKyAgICBhbmltYXRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgY3VycmVudFRp
bWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKKyAgICAgICAgCisgICAgICAgIGlmICghdGhpcy5fcmVm
ZXJlbmNlVGltZSkKKyAgICAgICAgICAgIHRoaXMuX3JlZmVyZW5jZVRpbWUgPSBjdXJyZW50VGlt
ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgPSBj
dXJyZW50VGltZSAtIHRoaXMuX3JlZmVyZW5jZVRpbWU7CisKKyAgICAgICAgaWYgKCF0aGlzLl9m
cmFtZUNvdW50KQorICAgICAgICAgICAgdGhpcy5fc3RhcnRUaW1lT2Zmc2V0ID0gdGhpcy5fY3Vy
cmVudFRpbWVPZmZzZXQ7CisKKyAgICAgICAgLy8gU3RhcnQgbWVhc3VyaW5nIGFmdGVyIGRyb3Bw
aW5nIF9kcm9wRnJhbWVDb3VudCBmcmFtZXMuCisgICAgICAgIGlmICh0aGlzLl9mcmFtZUNvdW50
ID09IHRoaXMuX2Ryb3BGcmFtZUNvdW50KQorICAgICAgICAgICAgdGhpcy5fbWVhc3VyZVRpbWVP
ZmZzZXQgPSB0aGlzLl9jdXJyZW50VGltZU9mZnNldDsKKworICAgICAgICArK3RoaXMuX2ZyYW1l
Q291bnQ7CisKKyAgICAgICAgLy8gRHJvcCBfZHJvcEZyYW1lQ291bnQgZnJhbWVzIGFuZCBtZWFz
dXJlIHRoZSBhdmVyYWdlIG9mIF9tZWFzdXJlRnJhbWVDb3VudCBmcmFtZXMuCisgICAgICAgIGlm
ICh0aGlzLl9mcmFtZUNvdW50IDwgdGhpcy5fZHJvcEZyYW1lQ291bnQgKyB0aGlzLl9tZWFzdXJl
RnJhbWVDb3VudCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIC8vIEdldCB0
aGUgYXZlcmFnZSBGUFMgb2YgX21lYXN1cmVGcmFtZUNvdW50IGZyYW1lcyBvdmVyIG1lYXN1cmVU
aW1lRGVsdGEuCisgICAgICAgIHZhciBtZWFzdXJlVGltZURlbHRhID0gdGhpcy5fY3VycmVudFRp
bWVPZmZzZXQgLSB0aGlzLl9tZWFzdXJlVGltZU9mZnNldDsKKyAgICAgICAgdmFyIGN1cnJlbnRG
cmFtZVJhdGUgPSBNYXRoLmZsb29yKDEwMDAgLyAobWVhc3VyZVRpbWVEZWx0YSAvIHRoaXMuX21l
YXN1cmVGcmFtZUNvdW50KSk7CisgICAgICAgICAKKyAgICAgICAgLy8gVXNlIEthbG1hbiBmaWx0
ZXIgdG8gZ2V0IGEgbW9yZSBub24tZmx1Y3R1YXRpbmcgZnJhbWUgcmF0ZS4KKyAgICAgICAgaWYg
KHRoaXMuX2JlbmNobWFyay5vcHRpb25zLmVzdGltYXRlZEZyYW1lUmF0ZSkKKyAgICAgICAgICAg
IGN1cnJlbnRGcmFtZVJhdGUgPSB0aGlzLl9lc3RpbWF0b3IuZXN0aW1hdGUobWVhc3VyZVRpbWVE
ZWx0YSwgY3VycmVudEZyYW1lUmF0ZSk7CisgICAgICAgIAorICAgICAgICAvLyBBZGp1c3QgdGhl
IHRlc3QgdG8gcmVhY2ggdGhlIGRlc2lyZWQgRlBTLgorICAgICAgICB2YXIgcmVzdWx0ID0gdGhp
cy5fYmVuY2htYXJrLnVwZGF0ZSh0aGlzLl9jdXJyZW50VGltZU9mZnNldCwgdGhpcy50aW1lRGVs
dGEoKSwgY3VycmVudEZyYW1lUmF0ZSk7CisgICAgICAgIAorICAgICAgICAvLyBTdG9wIHRoZSBh
bmltYXRvciBpZiB0aGUgYmVuY2htYXJrIGhhcyBmaW5pc2hlZC4KKyAgICAgICAgaWYgKCFyZXN1
bHQgJiYgdHlwZW9mIHRoaXMuX2ludGVydmFsSWQgIT0gInVuZGVmaW5lZCIpCisgICAgICAgICAg
ICBjbGVhckludGVydmFsKHRoaXMuX2ludGVydmFsSWQpOworCisgICAgICAgIC8vIFN0YXJ0IHRo
ZSBuZXh0IGRyb3AvbWVhc3VyZSBjeWNsZS4KKyAgICAgICAgdGhpcy5fZnJhbWVDb3VudCA9IDA7
CisgICAgICAgIAorICAgICAgICAvLyByZXN1bHQgbWF5IHN0b3AgdGhlIGFuaW1hdG9yIGlmIHJl
cXVlc3RBbmltYXRpb25GcmFtZSgpIGhhcyBiZWVuIHVzZWQuCisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfSwKKyAgICAKKyAgICBhbmltYXRlTG9vcDogZnVuY3Rpb24odGltZXN0YW1wKQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMuYW5pbWF0ZSgpKQorICAgICAgICAgICAgcmVxdWVzdEFu
aW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0ZUxvb3AuYmluZCh0aGlzKSk7CisgICAgfQorfQorCitm
dW5jdGlvbiBCZW5jaG1hcmsob3B0aW9ucykKK3sKKyAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9u
czsKKyAgICB0aGlzLl9tZXRob2QgPSB0aGlzLl9vcHRpb25zWyJtZXRob2QiXSB8fCAicmVxdWVz
dEFuaW1hdGlvbkZyYW1lIjsKKworICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7CisgICAgdGhp
cy5fcmVjb3JkSW50ZXJ2YWwgPSAyMDA7ICAgIAorICAgIHRoaXMuX2lzU2FtcGxpbmcgPSBmYWxz
ZTsKKworICAgIHZhciBnYWluID0gcGFyc2VJbnQodGhpcy5fb3B0aW9uc1siZ2FpbiJdKSB8fCAx
OworICAgIHZhciBsb3dWYWx1ZSA9IC1wYXJzZUludCh0aGlzLl9vcHRpb25zWyJhZGRMaW1pdCJd
KSB8fCAxOworICAgIHZhciBoaWdoVmFsdWUgPSBwYXJzZUludCh0aGlzLl9vcHRpb25zWyJyZW1v
dmVMaW1pdCJdKSB8fCAxOworICAgIAorICAgIHRoaXMuX2NvbnRyb2xsZXIgPSBuZXcgUElEQ29u
dHJvbGxlcihnYWluLCBvcHRpb25zLmZyYW1lUmF0ZSwgbG93VmFsdWUsIGhpZ2hWYWx1ZSk7Cisg
ICAgdGhpcy5fc2FtcGxlciA9IG5ldyBTYW1wbGVyKDIpOworICAgIHRoaXMuX3N0YXRlID0gbmV3
IEJlbmNobWFya1N0YXRlKHRoaXMub3B0aW9ucy50ZXN0SW50ZXJ2YWwpOyAgICAKK30KKworQmVu
Y2htYXJrLnByb3RvdHlwZSA9Cit7CisgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGxvYWQgZXZlbnQg
bGlzdGVuZXIgb3IgZnJvbSB0aGlzLnJ1bigpLgorICAgIHN0YXJ0OiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICBpZiAodGhpcy5fbWV0aG9kID09ICJzZXRJbnRlcnZhbCIpCisgICAgICAgICAg
ICB0aGlzLl9hbmltYXRvci5zdGFydCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlz
Ll9hbmltYXRvci5hbmltYXRlTG9vcCgpOworICAgIH0sCisgICAgCisgICAgLy8gQ2FsbGVkIGZy
b20gdGhlIGFuaW1hdG9yIHRvIGFkanVzdCB0aGUgY29tcGxleGl0eSBvZiB0aGUgdGVzdC4KKyAg
ICB1cGRhdGU6IGZ1bmN0aW9uKGN1cnJlbnRUaW1lT2Zmc2V0LCB0aW1lRGVsdGEsIGN1cnJlbnRG
cmFtZVJhdGUpCisgICAgeworICAgICAgICB0aGlzLl9zdGF0ZS51cGRhdGUoY3VycmVudFRpbWVP
ZmZzZXQpOworICAgICAgICAKKyAgICAgICAgdmFyIHN0YWdlID0gdGhpcy5fc3RhdGUuY3VycmVu
dFN0YWdlKCk7CisgICAgICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklO
SVNIRUQpIHsKKyAgICAgICAgICAgIHRoaXMuY2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5z
dGFnZXMuU0FNUExJTkcgJiYgIXRoaXMuX2lzU2FtcGxpbmcpIHsKKyAgICAgICAgICAgIHRoaXMu
X3NhbXBsZXIuc3RhcnRTYW1wbGluZyh0aGlzLl9zdGF0ZS5zYW1wbGluZ1RpbWVPZmZzZXQoKSk7
CisgICAgICAgICAgICB0aGlzLl9pc1NhbXBsaW5nID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZhciB0dW5lVmFsdWUgPSAwOworICAgICAgICBpZiAoISh0aGlzLl9pc1NhbXBsaW5nICYm
IHRoaXMub3B0aW9ucy5maXhUZXN0Q29tcGxleGl0eSkpIHsKKyAgICAgICAgICAgIC8vIFRoZSBy
ZWxhdGlvbnNoaXAgYmV0d2VlbiBmcmFtZVJhdGUgYW5kIHRlc3QgY29tcGxleGl0eSBpcyBpbnZl
cnNlLXByb3BvcnRpb25hbCBzbyB3ZQorICAgICAgICAgICAgLy8gbmVlZCB0byB1c2UgdGhlIG5l
Z2F0aXZlIG9mIFBJRENvbnRyb2xsZXIudHVuZSgpIHRvIGNoYW5nZSB0aGUgY29tcGxleGl0eSBv
ZiB0aGUgdGVzdC4KKyAgICAgICAgICAgIHR1bmVWYWx1ZSA9IC10aGlzLl9jb250cm9sbGVyLnR1
bmUoY3VycmVudEZyYW1lUmF0ZSwgdGltZURlbHRhIC8gMTAwMCk7CisgICAgICAgIH0KKworICAg
ICAgICB2YXIgY3VycmVudENvbXBsZXhpdHkgPSB0aGlzLnR1bmUodHVuZVZhbHVlKTsKKyAgICAg
ICAgdGhpcy5yZWNvcmQoY3VycmVudFRpbWVPZmZzZXQsIGN1cnJlbnRDb21wbGV4aXR5LCBjdXJy
ZW50RnJhbWVSYXRlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKyAgICAKKyAgICBy
ZWNvcmQ6IGZ1bmN0aW9uKGN1cnJlbnRUaW1lT2Zmc2V0LCBjdXJyZW50Q29tcGxleGl0eSwgY3Vy
cmVudEZyYW1lUmF0ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3NhbXBsZXIuc2FtcGxlKGN1cnJl
bnRUaW1lT2Zmc2V0LCBbY3VycmVudENvbXBsZXhpdHksIGN1cnJlbnRGcmFtZVJhdGVdKTsKKyAg
ICAgICAgCisgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fcmVjb3JkVGltZU9mZnNldCA9PSAidW5k
ZWZpbmVkIikKKyAgICAgICAgICAgIHRoaXMuX3JlY29yZFRpbWVPZmZzZXQgPSBjdXJyZW50VGlt
ZU9mZnNldDsKKworICAgICAgICB2YXIgc3RhZ2UgPSB0aGlzLl9zdGF0ZS5jdXJyZW50U3RhZ2Uo
KTsKKyAgICAgICAgaWYgKHN0YWdlICE9IEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRCAm
JiBjdXJyZW50VGltZU9mZnNldCA8IHRoaXMuX3JlY29yZFRpbWVPZmZzZXQgKyB0aGlzLl9yZWNv
cmRJbnRlcnZhbCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLnNob3dSZXN1
bHRzKHRoaXMuX3N0YXRlLmN1cnJlbnRNZXNzYWdlKCksIHRoaXMuX3N0YXRlLmN1cnJlbnRQcm9n
cmVzcygpKTsKKyAgICAgICAgdGhpcy5fcmVjb3JkVGltZU9mZnNldCA9IGN1cnJlbnRUaW1lT2Zm
c2V0OworICAgIH0sCisgICAgCisgICAgcnVuOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0
aGlzLnN0YXJ0KCk7CisKKyAgICAgICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsK
KyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICBmdW5jdGlvbiByZXNvbHZlV2hlbkZp
bmlzaGVkKCkgeworICAgICAgICAgICAgaWYgKHR5cGVvZiBzZWxmLl9zdGF0ZSAhPSAidW5kZWZp
bmVkIiAmJiAoc2VsZi5fc3RhdGUuY3VycmVudFN0YWdlKCkgPT0gQmVuY2htYXJrU3RhdGUuc3Rh
Z2VzLkZJTklTSEVEKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZS5yZXNvbHZlKHNl
bGYuX3NhbXBsZXIpOworICAgICAgICAgICAgc2V0VGltZW91dChyZXNvbHZlV2hlbkZpbmlzaGVk
LmJpbmQoc2VsZiksIDUwKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmVzb2x2ZVdo
ZW5GaW5pc2hlZCgpOworICAgICAgICByZXR1cm4gcHJvbWlzZTsKKyAgICB9Cit9CisKK3dpbmRv
dy5iZW5jaG1hcmtDbGllbnQgPSB7fTsKKworLy8gVGhpcyBldmVudCBsaXN0ZW5lciBydW5zIHRo
ZSB0ZXN0IGlmIGl0IGlzIGxvYWRlZCBvdXRzaWRlIHRoZSBiZW5jaG1hcmsgcnVubmVyLgord2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpCit7CisgICAgaWYgKHdpbmRv
dy5zZWxmICE9PSB3aW5kb3cudG9wKQorICAgICAgICByZXR1cm47CisgICAgd2luZG93LmJlbmNo
bWFyayA9IHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKG51bGwsIG51bGwsIDMwMDAwLCA1
MCwgbnVsbCwgbnVsbCk7CisgICAgd2luZG93LmJlbmNobWFyay5zdGFydCgpOworfSk7CisKKy8v
IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIHN1aXRlIGNvbnRyb2xsZXIgcnVuLWNh
bGxiYWNrIHdoZW4gcnVubmluZyB0aGUgYmVuY2htYXJrIHJ1bm5lci4KK3dpbmRvdy5ydW5CZW5j
aG1hcmsgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dy
ZXNzQmFyKQoreworICAgIHZhciBtZXJnZWRPcHRpb25zID0gVXRpbGl0aWVzLm1lcmdlT2JqZWN0
cyhvcHRpb25zLCBVdGlsaXRpZXMucGFyc2VQYXJhbWV0ZXJzKCkpOworICAgIHdpbmRvdy5iZW5j
aG1hcmsgPSB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZShzdWl0ZSwgdGVzdCwgbWVyZ2Vk
T3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICByZXR1cm4gd2luZG93LmJl
bmNobWFyay5ydW4oKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9yZXNvdXJjZXMvbWF0aC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwyNzQgQEAKK3ZhciBNYXRyaXggPQoreworICAgIGluaXQ6IGZ1bmN0aW9uKG0s
IG4sIHYpCisgICAgeworICAgICAgICByZXR1cm4gQXJyYXkobSAqIG4pLmZpbGwodik7CisgICAg
fSwKKyAgICAKKyAgICB6ZXJvczogZnVuY3Rpb24obSwgbikKKyAgICB7CisgICAgICAgIHJldHVy
biBNYXRyaXguaW5pdChtLCBuLCAwKTsKKyAgICB9LAorICAgIAorICAgIG9uZXM6IGZ1bmN0aW9u
KG0sIG4pCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LmluaXQobSwgbiwgMSk7CisgICAg
fSwKKyAgICAKKyAgICBpZGVudGl0eTogZnVuY3Rpb24obikKKyAgICB7CisgICAgICAgIHZhciBv
dXQgPSBuZXcgTWF0cml4Lnplcm9zKG4sIG4pOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IG47ICsraSkKKyAgICAgICAgICAgIG91dFtpICogbiArIGldID0gMTsKKyAgICAgICAgcmV0dXJu
IG91dDsKKyAgICB9LAorICAgIAorICAgIHN0cjogZnVuY3Rpb24oQSwgbiwgbSkKKyAgICB7Cisg
ICAgICAgIHZhciBvdXQgPSAobSA+IDEgJiYgbiA+IDEgPyAiTWF0cml4WyIgKyBuICsgIiwgIiAr
IG0gOiAiVmVjdG9yWyIgKyBtICogbikgKyAiXSA9IFsiOworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IG4gKiBtOyArK2kpIHsKKyAgICAgICAgICAgIG91dCArPSBBW2ldOworICAgICAgICAg
ICAgaWYgKGkgPCBuICogbSAtIDEpCisgICAgICAgICAgICAgICAgb3V0ICs9ICIsICI7CisgICAg
ICAgIH0gICAgICAgCisgICAgICAgIHJldHVybiBvdXQgKyAiXSI7CisgICAgfSwKKyAgICAKKyAg
ICBwb3M6IGZ1bmN0aW9uKG0sIGksIGopCisgICAgeworICAgICAgICByZXR1cm4gbSAqIGkgKyBq
OworICAgIH0sCisgICAgCisgICAgYWRkOiBmdW5jdGlvbihBLCBCLCBuLCBtKQorICAgIHsKKyAg
ICAgICAgdmFyIG91dCA9IE1hdHJpeC56ZXJvcyhuLCBtKTsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBuICogbTsgKytpKQorICAgICAgICAgICAgb3V0W2ldID0gQVtpXSArIEJbaV07Cisg
ICAgICAgIHJldHVybiBvdXQ7CisgICAgfSwKKyAgICAKKyAgICBzdWJ0cmFjdDogZnVuY3Rpb24o
QSwgQiwgbiwgbSkKKyAgICB7CisgICAgICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3MobiwgbSk7
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbiAqIG07ICsraSkKKyAgICAgICAgICAgIG91
dFtpXSA9IEFbaV0gLSBCW2ldOworICAgICAgICByZXR1cm4gb3V0OworICAgIH0sCisgICAgCisg
ICAgc2NhbGU6IGZ1bmN0aW9uKHMsIEEsIG4sIG0pCisgICAgeworICAgICAgICB2YXIgb3V0ID0g
TWF0cml4Lnplcm9zKG4sIG0pOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4gKiBtOyAr
K2kpCisgICAgICAgICAgICBvdXRbaV0gPSBzICogQVtpXTsKKyAgICAgICAgcmV0dXJuIG91dDsK
KyAgICB9LAorICAgIAorICAgIHRyYW5zcG9zZTogZnVuY3Rpb24oQSwgbiwgbSkKKyAgICB7Cisg
ICAgICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3MobSwgbik7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG07ICsr
aikKKyAgICAgICAgICAgICAgICBvdXRbTWF0cml4LnBvcyhuLCBpLCBqKV0gPSBBW01hdHJpeC5w
b3MobSwgaiwgaSldOworICAgICAgICB9ICAgICAgIAorICAgICAgICByZXR1cm4gb3V0OworICAg
IH0sCisgICAgCisgICAgbXVsdGlwbHk6IGZ1bmN0aW9uKEEsIEIsIG4sIG0sIHApCisgICAgewor
ICAgICAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIHApOworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwOyAr
K2opIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IG07ICsraykgeworICAg
ICAgICAgICAgICAgICAgICBvdXRbTWF0cml4LnBvcyhwLCBpLCBqKV0gKz0gQVtNYXRyaXgucG9z
KG0sIGksIGspXSAqIEJbTWF0cml4LnBvcyhwLCBrLCBqKV07CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBvdXQ7CisgICAgfQorfQor
Cit2YXIgVmVjdG9yMyA9Cit7CisgICAgemVyb3M6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBNYXRyaXguemVyb3MoMSwgMyk7CisgICAgfSwKKyAgICAKKyAgICBvbmVzOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4Lm9uZXMoMSwgMyk7CisgICAgfSwK
KyAgICAKKyAgICBzdHI6IGZ1bmN0aW9uKHYpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4
LnN0cih2LCAxLCAzKTsKKyAgICB9LAorICAgIAorICAgIGFkZDogZnVuY3Rpb24odiwgdykKKyAg
ICB7CisgICAgICAgIHJldHVybiBNYXRyaXguYWRkKHYsIHcsIDEsIDMpOworICAgIH0sCisgICAg
CisgICAgc3VidHJhY3Q6IGZ1bmN0aW9uKHYsIHcpCisgICAgeworICAgICAgICByZXR1cm4gTWF0
cml4LnN1YnRyYWN0KHYsIHcsIDEsIDMpOworICAgIH0sCisgICAgCisgICAgc2NhbGU6IGZ1bmN0
aW9uKHMsIHYpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LnNjYWxlKHMsIHYsIDEsIDMp
OworICAgIH0sCisgICAgCisgICAgbXVsdGlwbHlNYXRyaXgzOiBmdW5jdGlvbih2LCBBKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC5tdWx0aXBseSh2LCBBLCAxLCAzLCAzKTsKKyAgICB9
LAorICAgIAorICAgIG11bHRpcGx5VmVjdG9yMzogZnVuY3Rpb24odiwgdykKKyAgICB7CisgICAg
ICAgIHZhciBvdXQgPSAwOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7ICsraSkKKyAg
ICAgICAgICAgIG91dCArPSB2W2ldICogd1tpXTsKKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9
Cit9CisKK3ZhciBNYXRyaXgzID0KK3sKKyAgICB6ZXJvczogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIE1hdHJpeC56ZXJvcygzLCAzKTsKKyAgICB9LAorICAgIAorICAgIGlkZW50
aXR5OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LmlkZW50aXR5KDMs
IDMpOworICAgIH0sCisgICAgCisgICAgc3RyOiBmdW5jdGlvbihBKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIE1hdHJpeC5zdHIoQSwgMywgMyk7CisgICAgfSwKKyAgICAKKyAgICBwb3M6IGZ1bmN0
aW9uKGksIGopCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LnBvcygzLCBpLCBqKTsKKyAg
ICB9LAorICAgIAorICAgIGFkZDogZnVuY3Rpb24oQSwgQikKKyAgICB7CisgICAgICAgIHJldHVy
biBNYXRyaXguYWRkKEEsIEIsIDMsIDMpOworICAgIH0sCisgICAgCisgICAgc3VidHJhY3Q6IGZ1
bmN0aW9uKEEsIEIpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LnN1YnRyYWN0KEEsIEIs
IDMsIDMpOworICAgIH0sCisgICAgCisgICAgc2NhbGU6IGZ1bmN0aW9uKHMsIEEpCisgICAgewor
ICAgICAgICByZXR1cm4gTWF0cml4LnNjYWxlKHMsIEEsIDMsIDMpOworICAgIH0sCisgICAgCisg
ICAgdHJhbnNwb3NlOiBmdW5jdGlvbihBKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC50
cmFuc3Bvc2UoQSwgMywgMyk7CisgICAgfSwKKyAgICAKKyAgICBtdWx0aXBseU1hdHJpeDM6IGZ1
bmN0aW9uKEEsIEIpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4Lm11bHRpcGx5KEEsIEIs
IDMsIDMsIDMpOworICAgIH0sCisgICAgCisgICAgbXVsdGlwbHlWZWN0b3IzOiBmdW5jdGlvbihB
LCB2KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC5tdWx0aXBseShBLCB2LCAzLCAzLCAx
KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIFBJRENvbnRyb2xsZXIoSywgeXNwLCB1bG93LCB1aGln
aCkKK3sKKyAgICB0aGlzLl95c3AgPSB5c3A7CisKKyAgICB0aGlzLl9UZCA9IDU7CisgICAgdGhp
cy5fVGkgPSAxNTsKKworICAgIHRoaXMuX0twID0gSzsKKyAgICB0aGlzLl9LZCA9IEsgLyB0aGlz
Ll9UZDsKKyAgICB0aGlzLl9LaSA9IEsgLyB0aGlzLl9UaTsKKworICAgIHRoaXMuX2VvbGQgPSAw
OworICAgIHRoaXMuX0kgPSAwOworfQorCitQSURDb250cm9sbGVyLnByb3RvdHlwZSA9Cit7Cisg
ICAgX3NhdDogZnVuY3Rpb24odiwgbG93LCBoaWdoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHYg
PCBsb3cgPyBsb3cgOiAodiA+IGhpZ2ggPyBoaWdoIDogdik7CisgICAgfSwKKyAgICAKKyAgICB0
dW5lOiBmdW5jdGlvbih5LCBoKQorICAgIHsKKyAgICAgICAgLy8gQ3VycmVudCBlcnJvci4KKyAg
ICAgICAgdmFyIGUgPSB0aGlzLl95c3AgLSB5OworCisgICAgICAgIC8vIFByb3BvcnRpb25hbCB0
ZXJtLgorICAgICAgICB2YXIgUCA9IHRoaXMuX0twICogZTsKKyAgICAgICAgCisgICAgICAgIC8v
IERlcml2YXRpdmUgdGVybSBpcyB0aGUgc2xvcGUgb2YgdGhlIGN1cnZlIGF0IHRoZSBjdXJyZW50
IHRpbWUuCisgICAgICAgIHZhciBEID0gdGhpcy5fS2QgKiAoZSAtIHRoaXMuX2VvbGQpIC8gaDsK
KworICAgICAgICAvLyBJbnRlZ3JhbCB0ZXJtIGlzIHRoZSBhcmVhIHVuZGVyIHRoZSBjdXJ2ZSBz
dGFydGluZyBmcm9tIHRoZSBiZWdpbmluZyB0aWxsIHRoZSBjdXJyZW50IHRpbWUuCisgICAgICAg
IHRoaXMuX0kgKz0gdGhpcy5fS2kgKiAoKGUgKyB0aGlzLl9lb2xkKSAvIDIpICogaDsKKworICAg
ICAgICAvLyBwaWQgY29udHJvbGxlciB2YWx1ZS4KKyAgICAgICAgdmFyIHYgPSBQICsgRCArIHRo
aXMuX0k7CisgICAgICAgIAorICAgICAgICAvLyBBdm9pZCBzcGlrZXMgYnkgYXBwbHlpbmcgYWN0
dWF0b3Igc2F0dXJhdGlvbi4KKyAgICAgICAgdmFyIHUgPSB0aGlzLl9zYXQodiwgdGhpcy5fdWxv
dywgdGhpcy5fdWhpZ2gpOyAgICAgICAgCisKKyAgICAgICAgdGhpcy5fZW9sZCA9IGU7CisgICAg
ICAgIHJldHVybiB1OworICAgIH0KK30KKworZnVuY3Rpb24gS2FsbWFuRXN0aW1hdG9yKCkKK3sK
KyAgICB0aGlzLl9tYXRBID0gTWF0cml4My5pZGVudGl0eSgpOworICAgIAorICAgIHRoaXMuX3Zl
Y0ggPSBWZWN0b3IzLnplcm9zKCk7CisgICAgdGhpcy5fdmVjSFswXSA9IDE7CisgICAgCisgICAg
dGhpcy5fbWF0USA9IE1hdHJpeDMuaWRlbnRpdHkoKTsKKyAgICB0aGlzLl9SID0gMTAwMDsKKyAg
ICAKKyAgICB0aGlzLl92ZWNYX2VzdCA9IFZlY3RvcjMub25lcygpOworICAgIHRoaXMuX21hdFBf
ZXN0ID0gTWF0cml4My56ZXJvcygpOworfQorCitLYWxtYW5Fc3RpbWF0b3IucHJvdG90eXBlID0K
K3sKKyAgICBlc3RpbWF0ZTogZnVuY3Rpb24odGltZURlbHRhLCBjdXJyZW50KQorICAgIHsKKyAg
ICAgICAgLy8gVXBkYXRlIHRoZSB0cmFuc2l0aW9uIG1hdHJpeC4KKyAgICAgICAgdGhpcy5fbWF0
QVtNYXRyaXgzLnBvcygwLCAyKV0gPSAxOworCisgICAgICAgIC8vIFByZWRpY3RlZCBzdGF0ZSBh
bmQgY292YXJpYW5jZS4KKyAgICAgICAgdmFyIHZlY1hfcHJkID0gTWF0cml4My5tdWx0aXBseVZl
Y3RvcjModGhpcy5fbWF0QSwgdGhpcy5fdmVjWF9lc3QpOworICAgICAgICB2YXIgbWF0UF9wcmQg
PSBNYXRyaXgzLmFkZChNYXRyaXgzLm11bHRpcGx5TWF0cml4MyhNYXRyaXgzLm11bHRpcGx5TWF0
cml4Myh0aGlzLl9tYXRBLCB0aGlzLl9tYXRQX2VzdCksIE1hdHJpeDMudHJhbnNwb3NlKHRoaXMu
X21hdEEpKSwgdGhpcy5fbWF0USk7CisKKyAgICAgICAgLy8gRXN0aW1hdGlvbi4KKyAgICAgICAg
dmFyIHZlY0IgPSBWZWN0b3IzLm11bHRpcGx5TWF0cml4Myh0aGlzLl92ZWNILCBNYXRyaXgzLnRy
YW5zcG9zZShtYXRQX3ByZCkpOworICAgICAgICB2YXIgUyA9IFZlY3RvcjMubXVsdGlwbHlWZWN0
b3IzKHZlY0IsIHRoaXMuX3ZlY0gpICsgdGhpcy5fUjsKKworICAgICAgICB2YXIgdmVjR2FpbiA9
IFZlY3RvcjMuc2NhbGUoMS9TLCB2ZWNCKTsKKyAgICAgICAgCisgICAgICAgIC8vIEVzdGltYXRl
ZCBzdGF0ZSBhbmQgY292YXJpYW5jZS4KKyAgICAgICAgdGhpcy5fdmVjWF9lc3QgPSBWZWN0b3Iz
LmFkZCh2ZWNYX3ByZCwgVmVjdG9yMy5zY2FsZShjdXJyZW50IC0gVmVjdG9yMy5tdWx0aXBseVZl
Y3RvcjModGhpcy5fdmVjSCwgdmVjWF9wcmQpLCB2ZWNHYWluKSk7CisgICAgICAgIHRoaXMuX21h
dFBfZXN0ID0gTWF0cml4My5zdWJ0cmFjdChtYXRQX3ByZCwgTWF0cml4My5zY2FsZShWZWN0b3Iz
Lm11bHRpcGx5VmVjdG9yMyh2ZWNHYWluLCB0aGlzLl92ZWNIKSwgbWF0UF9wcmQpKTsKKworICAg
ICAgICAvLyBDb21wdXRlIHRoZSBlc3RpbWF0ZWQgbWVhc3VyZW1lbnQuCisgICAgICAgIHJldHVy
biBWZWN0b3IzLm11bHRpcGx5VmVjdG9yMyh0aGlzLl92ZWNILCAgdGhpcy5fdmVjWF9lc3QpOwor
ICAgIH0KK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJj
ZXMvc3RhZ2UuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuY3NzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5jc3MJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNyBAQAoraHRtbCB7CisgIGhlaWdodDogMTAwJTsKK30KK2JvZHkgeworICB3aWR0
aDogMTAwJTsKKyAgaGVpZ2h0OiAxMDAlOworICBvdmVyZmxvdzogaGlkZGVuOworICBtYXJnaW46
IDA7CisgIHBhZGRpbmc6IDA7CisgIGJhY2tncm91bmQtY29sb3I6ICNlYWVhZWE7Cit9CisKKyNz
dGFnZSB7CisgIHdpZHRoOiAxMDAlOworICBoZWlnaHQ6IDEwMCU7CisgIGJhY2tncm91bmQtY29s
b3I6ICNlYWVhZWE7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL3N0YWdlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTcxIEBACitmdW5jdGlvbiBSb3RhdGVyKHJvdGF0ZUludGVydmFsKQorewor
ICAgIHRoaXMuX3RpbWVEZWx0YSA9IDA7CisgICAgdGhpcy5fcm90YXRlSW50ZXJ2YWwgPSByb3Rh
dGVJbnRlcnZhbDsKK30KKworUm90YXRlci5wcm90b3R5cGUgPQoreworICAgIGdldCBpbnRlcnZh
bCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcm90YXRlSW50ZXJ2YWw7CisgICAgfSwK
KyAgICAKKyAgICBuZXh0OiBmdW5jdGlvbih0aW1lRGVsdGEpCisgICAgeworICAgICAgICB0aGlz
Ll90aW1lRGVsdGEgPSAodGhpcy5fdGltZURlbHRhICsgdGltZURlbHRhKSAlIHRoaXMuX3JvdGF0
ZUludGVydmFsOworICAgIH0sCisgICAgCisgICAgZGVncmVlOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gKDM2MCAqIHRoaXMuX3RpbWVEZWx0YSkgLyB0aGlzLl9yb3RhdGVJbnRl
cnZhbDsKKyAgICB9LAorICAgIAorICAgIHJvdGF0ZVo6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiAicm90YXRlWigiICsgTWF0aC5mbG9vcih0aGlzLmRlZ3JlZSgpKSArICJkZWcp
IjsKKyAgICB9LAorICAgIAorICAgIHJvdGF0ZTogZnVuY3Rpb24oY2VudGVyKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuICJyb3RhdGUoIiArIE1hdGguZmxvb3IodGhpcy5kZWdyZWUoKSkgKyAiLCAi
ICsgY2VudGVyLnggKyAiLCIgKyBjZW50ZXIueSArICIpIjsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IFN0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7CisgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDsK
K30KKworU3RhZ2UucHJvdG90eXBlID0KK3sKKyAgICBnZXQgc2l6ZSgpCisgICAgeworICAgICAg
ICB2YXIgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5lbGVtZW50KTsKKyAg
ICAgICAgdmFyIHBhZGRpbmcgPSBuZXcgSW5zZXRzKAorICAgICAgICAgICAgcGFyc2VGbG9hdChz
dHlsZXMucGFkZGluZ1RvcCksCisgICAgICAgICAgICBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5n
UmlnaHQpLAorICAgICAgICAgICAgcGFyc2VGbG9hdChzdHlsZXMucGFkZGluZ0JvdHRvbSksCisg
ICAgICAgICAgICBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nVG9wKSk7CisgICAgICAgIHJldHVy
biBuZXcgUG9pbnQodGhpcy5lbGVtZW50LmNsaWVudFdpZHRoIC0gcGFkZGluZy53aWR0aCwgdGhp
cy5lbGVtZW50LmNsaWVudEhlaWdodCAtIHBhZGRpbmcuaGVpZ2h0KTsKKyAgICB9LAorICAgIAor
ICAgIHJhbmRvbTogZnVuY3Rpb24obWluLCBtYXgpCisgICAgeworICAgICAgICByZXR1cm4gKE1h
dGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47CisgICAgfSwKKyAgICAKKyAgICByYW5k
b21JbnQ6IGZ1bmN0aW9uKG1pbiwgbWF4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdGguZmxv
b3IodGhpcy5yYW5kb20obWluLCBtYXgpKTsKKyAgICB9LAorICAgIAorICAgIHJhbmRvbVBvc2l0
aW9uOiBmdW5jdGlvbihtYXhQb3NpdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUG9p
bnQodGhpcy5yYW5kb21JbnQoMCwgbWF4UG9zaXRpb24ueCksIHRoaXMucmFuZG9tSW50KDAsIG1h
eFBvc2l0aW9uLnkpKTsKKyAgICB9LAorICAgIAorICAgIHJhbmRvbVZlbG9jaXR5OiBmdW5jdGlv
bihtYXhWZWxvY2l0eSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnJhbmRvbShtYXhWZWxv
Y2l0eSAvIDgsIG1heFZlbG9jaXR5KTsKKyAgICB9LAorICAgIAorICAgIHJhbmRvbUFuZ2xlOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5yYW5kb20oMCwgTWF0aC5QSSAq
IDIpOworICAgIH0sCisgICAgCisgICAgcmFuZG9tQ29sb3I6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHZhciBtaW4gPSAzMjsKKyAgICAgICAgdmFyIG1heCA9IDI1NiAtIDMyOworICAgICAg
ICByZXR1cm4gIiMiCisgICAgICAgICAgICArIHRoaXMucmFuZG9tSW50KG1pbiwgbWF4KS50b1N0
cmluZygxNikKKyAgICAgICAgICAgICsgdGhpcy5yYW5kb21JbnQobWluLCBtYXgpLnRvU3RyaW5n
KDE2KQorICAgICAgICAgICAgKyB0aGlzLnJhbmRvbUludChtaW4sIG1heCkudG9TdHJpbmcoMTYp
OworICAgIH0sCisgICAgCisgICAgcmFuZG9tUm90YXRlcjogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG5ldyBSb3RhdGVyKHRoaXMucmFuZG9tKDEwMDAsIDEwMDAwKSk7CisgICAg
fSwKKworICAgIHR1bmU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRocm93ICJOb3QgaW1w
bGVtZW50ZWQiOworICAgIH0sCisgICAgCisgICAgYW5pbWF0ZTogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhyb3cgIk5vdCBpbXBsZW1lbnRlZCI7CisgICAgfSwKKyAgICAKKyAgICBjbGVh
cjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudHVuZSgtdGhpcy50dW5l
KDApKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIFN0YWdlQW5pbWF0b3IoYmVuY2htYXJrKQorewor
ICAgIEFuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrKTsKK307CisKK1N0YWdlQW5pbWF0b3Iu
cHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShBbmltYXRvci5wcm90b3R5cGUpOworU3RhZ2VBbmlt
YXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTdGFnZUFuaW1hdG9yOworCitTdGFnZUFuaW1h
dG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQoreworICAgIGlmICghQW5pbWF0b3Iu
cHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHRoaXMuX2JlbmNobWFyay5fc3RhZ2UuYW5pbWF0ZSh0aGlzLnRpbWVEZWx0YSgpKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gU3RhZ2VCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICBCZW5jaG1hcmsuY2FsbCh0
aGlzLCBvcHRpb25zKTsKKyAgICAKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJzdGFnZSIpOworICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsIGRvY3Vt
ZW50LmJvZHkub2Zmc2V0V2lkdGgpOworICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJoZWlnaHQi
LCBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCk7CisgICAgCisgICAgdGhpcy5fc3RhZ2UgPSB0
aGlzLmNyZWF0ZVN0YWdlKGVsZW1lbnQpOworICAgIHRoaXMuX2FuaW1hdG9yID0gdGhpcy5jcmVh
dGVBbmltYXRvcigpOworICAgIHRoaXMuX3N1aXRlID0gc3VpdGU7CisgICAgdGhpcy5fdGVzdCA9
IHRlc3Q7CisgICAgdGhpcy5fcmVjb3JkVGFibGUgPSByZWNvcmRUYWJsZTsKKyAgICB0aGlzLl9w
cm9ncmVzc0JhciA9IHByb2dyZXNzQmFyOworfQorCitTdGFnZUJlbmNobWFyay5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKEJlbmNobWFyay5wcm90b3R5cGUpOworU3RhZ2VCZW5jaG1hcmsucHJv
dG90eXBlLmNvbnN0cnVjdG9yID0gU3RhZ2VCZW5jaG1hcms7CisKK1N0YWdlQmVuY2htYXJrLnBy
b3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgcmV0dXJuIG5l
dyBTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKworU3RhZ2VCZW5jaG1hcmsucHJv
dG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiBuZXcgU3Rh
Z2VBbmltYXRvcih0aGlzKTsKK30KKworU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLnR1bmUgPSBm
dW5jdGlvbihjb3VudCkKK3sKKyAgICByZXR1cm4gdGhpcy5fc3RhZ2UudHVuZShjb3VudCk7Cit9
CisKK1N0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkKK3sKKyAgICBy
ZXR1cm4gdGhpcy5fc3RhZ2UuY2xlYXIoKTsKK30KKworU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBl
LnNob3dSZXN1bHRzID0gZnVuY3Rpb24obWVzc2FnZSwgcHJvZ3Jlc3MpCit7CisgICAgaWYgKCF0
aGlzLl9yZWNvcmRUYWJsZSB8fCAhdGhpcy5fcHJvZ3Jlc3NCYXIgfHwgIXRoaXMuX3N1aXRlIHx8
ICF0aGlzLl90ZXN0KQorICAgICAgICByZXR1cm47CisKKyAgICB0aGlzLl9yZWNvcmRUYWJsZS5z
aG93UmVjb3JkKHRoaXMuX3N1aXRlLCB0aGlzLl90ZXN0LCB0aGlzLl9zYW1wbGVyLCBtZXNzYWdl
KTsKKyAgICB0aGlzLl9wcm9ncmVzc0Jhci5zZXRQb3MocHJvZ3Jlc3MpOworfQpJbmRleDogUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy91dGlsaXRpZXMuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy91
dGlsaXRpZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvcmVzb3VyY2VzL3V0aWxpdGllcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYw
IEBACit3aW5kb3cuVXRpbGl0aWVzID0KK3sKKyAgICBfcGFyc2U6IGZ1bmN0aW9uKHN0ciwgc2Vw
KQorICAgIHsKKyAgICAgICAgdmFyIG91dHB1dCA9IHt9OworICAgICAgICBzdHIuc3BsaXQoc2Vw
KS5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQpIHsKKyAgICAgICAgICAgIHZhciBpdGVtID0gcGFydC5z
cGxpdCgiPSIpOworICAgICAgICAgICAgdmFyIHZhbHVlID0gZGVjb2RlVVJJQ29tcG9uZW50KGl0
ZW1bMV0pOworICAgICAgICAgICAgaWYgKHZhbHVlWzBdID09ICInIiApCisgICAgICAgICAgICAg
ICAgb3V0cHV0W2l0ZW1bMF1dID0gdmFsdWUuc3Vic3RyKDEsIHZhbHVlLmxlbmd0aCAtIDIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG91dHB1dFtpdGVtWzBdXSA9IHZhbHVl
OyAgICAgICAgICAgICAgICAKKyAgICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIG91dHB1dDsK
KyAgICB9LAorICAgIAorICAgIHBhcnNlUGFyYW1ldGVyczogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyKDEp
LCAiJiIpOworICAgIH0sCisgICAgCisgICAgcGFyc2VBcmd1bWVudHM6IGZ1bmN0aW9uKHN0cikK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wYXJzZShzdHIsICIgIik7CisgICAgfSwKKyAg
ICAKKyAgICBleHRlbmRPYmplY3Q6IGZ1bmN0aW9uKG9iajEsIG9iajIpCisgICAgeworICAgICAg
ICBmb3IgKHZhciBhdHRybmFtZSBpbiBvYmoyKQorICAgICAgICAgICAgb2JqMVthdHRybmFtZV0g
PSBvYmoyW2F0dHJuYW1lXTsKKyAgICAgICAgcmV0dXJuIG9iajE7CisgICAgfSwKKyAgICAKKyAg
ICBjb3B5T2JqZWN0OiBmdW5jdGlvbihvYmopCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5l
eHRlbmRPYmplY3Qoe30sIG9iaik7CisgICAgfSwKKyAgICAKKyAgICBtZXJnZU9iamVjdHM6IGZ1
bmN0aW9uKG9iajEsIG9iajIpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5leHRlbmRPYmpl
Y3QodGhpcy5jb3B5T2JqZWN0KG9iajEpLCBvYmoyKTsKKyAgICB9LAorICAgIAorICAgIGNyZWF0
ZVN2Z0VsZW1lbnQ6IGZ1bmN0aW9uKG5hbWUsIGF0dHJzLCB4bGlua0F0dHJzLCBwYXJlbnQpCisg
ICAgeworICAgICAgICBjb25zdCBzdmdOYW1lc3BhY2UgPSAiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciOworICAgICAgICBjb25zdCB4bGlua05hbWVzcGFjZSA9ICJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIjsKKworICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUyhzdmdOYW1lc3BhY2UsIG5hbWUpOworICAgICAgICAKKyAgICAgICAgZm9yICh2YXIg
a2V5IGluIGF0dHJzKQorICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRy
c1trZXldKTsKKyAgICAgICAgICAgIAorICAgICAgICBmb3IgKHZhciBrZXkgaW4geGxpbmtBdHRy
cykKKyAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlTlMoeGxpbmtOYW1lc3BhY2UsIGtl
eSwgeGxpbmtBdHRyc1trZXldKTsKKyAgICAgICAgICAgIAorICAgICAgICBwYXJlbnQuYXBwZW5k
Q2hpbGQoZWxlbWVudCk7CisgICAgICAgIHJldHVybiBlbGVtZW50OworICAgIH0KK30KSW5kZXg6
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcuc3Zn
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJj
ZXMveWluLXlhbmcuc3ZnCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5zdmcJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxNyBAQAorPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9
IjAgMCAyMDAgMjAwIj4NCisgIDxkZWZzPg0KKyAgICA8Y2xpcFBhdGggaWQ9ImxlZnQtaGFsZiI+
DQorICAgICAgPHJlY3Qgd2lkdGg9IjEwMCIgaGVpZ2h0PSIyMDAiLz4NCisgICAgPC9jbGlwUGF0
aD4NCisgICAgPGNsaXBQYXRoIGlkPSJyaWdodC1oYWxmIj4NCisgICAgICA8cmVjdCB4PSIxMDAi
IHdpZHRoPSIxMDAiIGhlaWdodD0iMjAwIi8+DQorICAgIDwvY2xpcFBhdGg+DQorICA8L2RlZnM+
DQorICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSIxMDAiIHI9Ijk4IiBmaWxsPSJub25lIiBzdHJva2U9
ImdyZWVuIiBzdHJva2Utd2lkdGg9IjIiLz4NCisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjEwMCIg
cj0iOTgiIGZpbGw9IndoaXRlIiBjbGlwLXBhdGg9InVybCgjbGVmdC1oYWxmKSIvPg0KKyAgPGNp
cmNsZSBjeD0iMTAwIiBjeT0iMTAwIiByPSI5OCIgZmlsbD0iZ3JlZW4iIGNsaXAtcGF0aD0idXJs
KCNyaWdodC1oYWxmKSIvPg0KKyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iNTAiICByPSI0OSIgZmls
bD0iZ3JlZW4iLz4NCisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjE0OCIgcj0iNDkiIGZpbGw9Indo
aXRlIi8+DQorICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSI1MCIgIHI9IjEwIiBmaWxsPSJ3aGl0ZSIv
PiAgICANCisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjE0OCIgcj0iMTAiIGZpbGw9ImdyZWVuIi8+
DQorPC9zdmc+DQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBs
YXRlL3RlbXBsYXRlLWNhbnZhcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jYW52YXMuaHRtbAkocmV2aXNpb24g
MCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0
ZS1jYW52YXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0
ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVt
cGxhdGUtY2FudmFzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxjYW52YXMg
aWQ9InN0YWdlIj48L2NhbnZhcz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jc3MuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxh
dGUtY3NzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtY3NzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3Mi
PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAg
CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3RlbXBsYXRlLWNzcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKyAgICA8ZGl2IGlkPSJzdGFnZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBs
YXRlL3RlbXBsYXRlLXN2Zy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLXN2Zy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8
bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMv
c3RhZ2UuY3NzIj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdGF0aXN0aWNz
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9u
cy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9z
Y3JpcHQ+ICAgIAorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZW1wbGF0ZS1zdmcuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+CisgICAgPHN2ZyBpZD0ic3RhZ2UiPjwvc3ZnPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291
cmNlcy90ZW1wbGF0ZS1jYW52YXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanMJKHJl
dmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUv
cmVzb3VyY2VzL3RlbXBsYXRlLWNhbnZhcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEw
NCBAQAorZnVuY3Rpb24gVGVtcGxhdGVDYW52YXNPYmplY3Qoc3RhZ2UpCit7CisgICAgLy8gRm9y
IHRoZSBjYW52YXMgc3RhZ2UsIG1vc3QgbGlrZWx5IHlvdSB3aWxsIG5lZWQgdG8gY3JlYXRlIHlv
dXIKKyAgICAvLyBhbmltYXRlZCBvYmplY3Qgc2luY2UgaXQncyBvbmx5IGRyYXcgdGltZSB0aGlu
Zy4KKyAgICAKKyAgICAvLyBUT0RPOiBGaWxsIGluIHlvdXIgb2JqZWN0IGRhdGEuCit9CisKK1Rl
bXBsYXRlQ2FudmFzT2JqZWN0LnByb3RvdHlwZS5fZHJhdyA9IGZ1bmN0aW9uKCkKK3sKKyAgICAv
LyBUT0RPOiBEcmF3IHlvdXIgb2JqZWN0LgorfQorCitUZW1wbGF0ZUNhbnZhc09iamVjdC5wcm90
b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAgICAvLyBSZWRyYXcgdGhl
IGFuaW1hdGVkIG9iamVjdC4gVGhlIGxhc3QgdGltZSB0aGlzIGFuaW1hdGVkCisgICAgLy8gaXRl
bSB3YXMgZHJhd24gYmVmb3JlICd0aW1lRGVsdGEnLgorICAgIAorICAgIC8vIFRPRE86IE1vdmUg
eW91ciBvYmplY3QuCisgICAgCisgICAgLy8gUmVkcmF3IHlvdXIgb2JqZWN0LgorICAgIHRoaXMu
X2RyYXcoKTsKK30KKworZnVuY3Rpb24gVGVtcGxhdGVDYW52YXNTdGFnZShlbGVtZW50LCBvcHRp
b25zKQoreworICAgIFN0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhp
cy5jb250ZXh0ID0gdGhpcy5lbGVtZW50LmdldENvbnRleHQoIjJkIik7CisKKyAgICAvLyBUT0RP
OiBEZWZpbmUgYSBjb2xsZWN0aW9uIGZvciB5b3VyIG9iamVjdHMuCit9CisKK1RlbXBsYXRlQ2Fu
dmFzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOworVGVt
cGxhdGVDYW52YXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUZW1wbGF0ZUNhbnZhc1N0
YWdlOworCitUZW1wbGF0ZUNhbnZhc1N0YWdlLnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291
bnQpCit7CisgICAgLy8gSWYgY291bnQgaXMgLXZlLCAtY291bnQgZWxlbWVudHMgbmVlZCB0byBi
ZSByZW1vdmVkIGZvcm0gdGhlCisgICAgLy8gc3RhZ2UuIElmIGNvdW50IGlzICt2ZSwgK2NvdW50
IGVsZW1lbnRzIG5lZWQgdG8gYmUgYWRkZWQgdG8KKyAgICAvLyB0aGUgc3RhZ2UuCisgICAgCisg
ICAgLy8gVE9ETzogQ2hhbmdlIG9iamVjdHMgaW4gdGhlIHN0YWdlLgorICAgIAorICAgIC8vIFJl
dHVybiB0aGUgbnVtYmVyIG9mIGFsbCB0aGUgZWxlbWVudHMgaW4gdGhlIHN0YWdlLgorICAgIC8v
IFRoaXMgbnVtYmVyIGlzIHJlY29yZGVkIGluIHRoZSBzYW1wbGVkIGRhdGEuCisgICAgCisgICAg
Ly8gVE9ETzogUmV0dXJuIHRoZSBjb3VudCBvZiB0aGUgb2JqZWN0cyBpbiB0aGUgc3RhZ2UuCisg
ICAgcmV0dXJuIDA7Cit9CisKK1RlbXBsYXRlQ2FudmFzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUg
PSBmdW5jdGlvbih0aW1lRGVsdGEpCit7CisgICAgLy8gQW5pbWF0ZSB0aGUgZWxlbWVudHMgc3Vj
aCB0aGF0IGFsbCBvZiB0aGVtIGFyZSByZWRyYXduLiBNb3N0CisgICAgLy8gbGlrZWx5IHlvdSB3
aWxsIG5lZWQgdG8gY2FsbCBUZW1wbGF0ZUNhbnZhc09iamVjdC5hbmltYXRlKCkKKyAgICAvLyBm
b3IgYWxsIHlvdXIgYW5pbWF0ZWQgb2JqZWN0cyBoZXJlLgorCisgICAgLy8gVE9ETzogTG9vcCB0
aHJvdWdoIGFsbCB5b3VyIG9iamVjdHMgYW5kIGFzayB0aGVtIHRvIGFuaW1hdGUuCit9CisKK2Z1
bmN0aW9uIFRlbXBsYXRlQ2FudmFzQW5pbWF0b3IoYmVuY2htYXJrKQoreworICAgIEFuaW1hdG9y
LmNhbGwodGhpcywgYmVuY2htYXJrKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJrLl9z
dGFnZS5jb250ZXh0OworfQorCitUZW1wbGF0ZUNhbnZhc0FuaW1hdG9yLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoU3RhZ2VBbmltYXRvci5wcm90b3R5cGUpOworVGVtcGxhdGVDYW52YXNBbmlt
YXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUZW1wbGF0ZUNhbnZhc0FuaW1hdG9yOworCitU
ZW1wbGF0ZUNhbnZhc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQorewor
ICAgIC8vIE1vc3QgbGlrZWx5IHlvdSB3aWxsIG5lZWQgdG8gY2xlYXIgdGhlIGNhbnZhcyB3aXRo
IGV2ZXJ5IHJlZHJhdy4KKyAgICB0aGlzLl9jb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLl9i
ZW5jaG1hcmsuX3N0YWdlLnNpemUueCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLnkpOwor
CisgICAgLy8gVE9ETzogRHJhdyBzY2VuZSBzdHVmZiBoZXJlIGlmIG5lZWRlZC4KKworICAgIHJl
dHVybiBTdGFnZUFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcyk7Cit9CisKK2Z1
bmN0aW9uIFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBz
dWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworVGVt
cGxhdGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNo
bWFyay5wcm90b3R5cGUpOworVGVtcGxhdGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0gVGVtcGxhdGVDYW52YXNCZW5jaG1hcms7CisKK1RlbXBsYXRlQ2FudmFzQmVuY2ht
YXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgLy8g
QXR0YWNoIHRoZSBzdGFnZSB0byB0aGUgYmVuY2htYXJrLgorICAgIHJldHVybiBuZXcgVGVtcGxh
dGVDYW52YXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKworVGVtcGxhdGVDYW52
YXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQoreworICAg
IC8vIEF0dGFjaCB0aGUgYW5pbWF0b3IgdG8gdGhlIGJlbmNobWFyay4KKyAgICByZXR1cm4gbmV3
IFRlbXBsYXRlQ2FudmFzQW5pbWF0b3IodGhpcyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGll
bnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBw
cm9ncmVzc0JhcikKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSB0
ZXN0IGhhcm5lc3Mgd2hpY2ggc3RhcnRzIHRoZQorICAgIC8vIHRlc3QgYnkgY3JlYXRpbmcgeW91
ciBiZW5jaG1hcmsgb2JqZWN0LgorICAgIHJldHVybiBuZXcgVGVtcGxhdGVDYW52YXNCZW5jaG1h
cmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9Cklu
ZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2Vz
L3RlbXBsYXRlLWNzcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNzcy5qcwkocmV2aXNpb24gMCkK
KysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMv
dGVtcGxhdGUtY3NzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKK2Z1bmN0aW9u
IFRlbXBsYXRlQ3NzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBTdGFnZS5jYWxsKHRo
aXMsIGVsZW1lbnQsIG9wdGlvbnMpOworfQorCitUZW1wbGF0ZUNzc1N0YWdlLnByb3RvdHlwZSA9
IE9iamVjdC5jcmVhdGUoU3RhZ2UucHJvdG90eXBlKTsKK1RlbXBsYXRlQ3NzU3RhZ2UucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gVGVtcGxhdGVDc3NTdGFnZTsKKworVGVtcGxhdGVDc3NTdGFnZS5w
cm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KQoreworICAgIC8vIElmIGNvdW50IGlzIC12
ZSwgLWNvdW50IGVsZW1lbnRzIG5lZWQgdG8gYmUgcmVtb3ZlZCBmb3JtIHRoZQorICAgIC8vIHN0
YWdlLiBJZiBjb3VudCBpcyArdmUsICtjb3VudCBlbGVtZW50cyBuZWVkIHRvIGJlIGFkZGVkIHRv
CisgICAgLy8gdGhlIHN0YWdlLgorICAgIAorICAgIC8vIFRPRE86IENoYW5nZSBvYmplY3RzIGlu
IHRoZSBzdGFnZS4KKyAgICAKKyAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBhbGwgdGhlIGVs
ZW1lbnRzIGluIHRoZSBzdGFnZS4KKyAgICAvLyBUaGlzIG51bWJlciBpcyByZWNvcmRlZCBpbiB0
aGUgc2FtcGxlZCBkYXRhLgorICAgIAorICAgIC8vIFRPRE86IFJldHVybiB0aGUgY291bnQgb2Yg
dGhlIG9iamVjdHMgaW4gdGhlIHN0YWdlLgorICAgIHJldHVybiAwOworfQorCitUZW1wbGF0ZUNz
c1N0YWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQoreworICAgIC8v
IEFuaW1hdGUgdGhlIGVsZW1lbnRzIHN1Y2ggdGhhdCBhbGwgb2YgdGhlbSBhcmUgcmVkcmF3bi4g
WW91IAorICAgIC8vIG1heSBuZWVkIHRvIGRlZmluZSB5b3VyIG9iamVjdCBzbyBpdCBrZWVwcyBp
dHMgYW5pbWF0aW9uIGRhdGEuCisgICAgLy8gVGhpcyBvYmplY3Qgc2hvdWxkIGVuY2Fwc3VsYXRl
IGEgY29ycm9zcG9uZGluZyBIVE1MRWxlbWVudC4KKyAgICAvLyBZb3UgbWF5IGFsc28gZGVmaW5l
IGEgbWV0aG9kIGNhbGxlZCBhbmltYXRlKCkgaW4gdGhpcyBvYmplY3QKKyAgICAvLyBhbmQganVz
dCBjYWxsIHRoaXMgZnVuY3Rpb24gaGVyZSBmb3IgYWxsIHRoZSBlbGVtZW50cy4KKyAgICAKKyAg
ICAvLyBUT0RPOiBMb29wIHRocm91Z2ggYWxsIHlvdXIgb2JqZWN0cyBhbmQgYXNrIHRoZW0gdG8g
YW5pbWF0ZS4KK30KKworZnVuY3Rpb24gVGVtcGxhdGVDc3NCZW5jaG1hcmsoc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICBTdGFnZUJlbmNobWFy
ay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NC
YXIpOworfQorCitUZW1wbGF0ZUNzc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRl
KFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7CitUZW1wbGF0ZUNzc0JlbmNobWFyay5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBUZW1wbGF0ZUNzc0JlbmNobWFyazsKKworVGVtcGxhdGVDc3NCZW5j
aG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKK3sKKyAgICAv
LyBZb3UgbmVlZCB0byBvdmVycmlkZSB0aGlzIG1ldGhvZCBzdWNoIHRoYXQgeW91ciBzdGFnZSBp
cyBob29rZWQKKyAgICAvLyB1cCB0byB0aGUgYmVuY2htYXJrLgorICAgIHJldHVybiBuZXcgVGVt
cGxhdGVDc3NTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKword2luZG93LmJlbmNo
bWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3Jk
VGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZy
b20gdGhlIHRlc3QgaGFybmVzcyB3aGljaCBzdGFydHMgdGhlCisgICAgLy8gdGVzdCBieSBjcmVh
dGluZyB5b3VyIGJlbmNobWFyayBvYmplY3QuCisgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZUNzc0Jl
bmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsK
K30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNv
dXJjZXMvdGVtcGxhdGUtc3ZnLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpzCShyZXZpc2lv
biAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291
cmNlcy90ZW1wbGF0ZS1zdmcuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorZnVu
Y3Rpb24gVGVtcGxhdGVTdmdTdGFnZShlbGVtZW50LCBvcHRpb25zKQoreworICAgIFN0YWdlLmNh
bGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Cit9CisKK1RlbXBsYXRlU3ZnU3RhZ2UucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOworVGVtcGxhdGVTdmdTdGFnZS5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBUZW1wbGF0ZVN2Z1N0YWdlOworCitUZW1wbGF0ZVN2Z1N0
YWdlLnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQpCit7CisgICAgLy8gSWYgY291bnQg
aXMgLXZlLCAtY291bnQgZWxlbWVudHMgbmVlZCB0byBiZSByZW1vdmVkIGZvcm0gdGhlCisgICAg
Ly8gc3RhZ2UuIElmIGNvdW50IGlzICt2ZSwgK2NvdW50IGVsZW1lbnRzIG5lZWQgdG8gYmUgYWRk
ZWQgdG8KKyAgICAvLyB0aGUgc3RhZ2UuCisgICAgCisgICAgLy8gVE9ETzogQ2hhbmdlIG9iamVj
dHMgaW4gdGhlIHN0YWdlLgorICAgIAorICAgIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGFsbCB0
aGUgZWxlbWVudHMgaW4gdGhlIHN0YWdlLgorICAgIC8vIFRoaXMgbnVtYmVyIGlzIHJlY29yZGVk
IGluIHRoZSBzYW1wbGVkIGRhdGEuCisgICAgCisgICAgLy8gVE9ETzogUmV0dXJuIHRoZSBjb3Vu
dCBvZiB0aGUgb2JqZWN0cyBpbiB0aGUgc3RhZ2UuCisgICAgcmV0dXJuIDA7Cit9CisKK1RlbXBs
YXRlU3ZnU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCit7Cisg
ICAgLy8gQW5pbWF0ZSB0aGUgZWxlbWVudHMgc3VjaCB0aGF0IGFsbCBvZiB0aGVtIGFyZSByZWRy
YXduLiBZb3UgCisgICAgLy8gbWF5IG5lZWQgdG8gZGVmaW5lIHlvdXIgb2JqZWN0IHNvIGl0IGtl
ZXBzIGl0cyBhbmltYXRpb24gZGF0YS4KKyAgICAvLyBUaGlzIG9iamVjdCBzaG91bGQgZW5jYXBz
dWxhdGUgYSBjb3Jyb3Nwb25kaW5nIFNWR0VsZW1lbnQuCisgICAgLy8gWW91IG1heSBhbHNvIGRl
ZmluZSBhIG1ldGhvZCBjYWxsZWQgYW5pbWF0ZSgpIGluIHRoaXMgb2JqZWN0CisgICAgLy8gYW5k
IGp1c3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGhlcmUgZm9yIGFsbCB0aGUgZWxlbWVudHMuCisgICAg
CisgICAgLy8gVE9ETzogTG9vcCB0aHJvdWdoIGFsbCB5b3VyIG9iamVjdHMgYW5kIGFzayB0aGVt
IHRvIGFuaW1hdGUuCit9CisKK2Z1bmN0aW9uIFRlbXBsYXRlU3ZnQmVuY2htYXJrKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgU3RhZ2VCZW5j
aG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dy
ZXNzQmFyKTsKK30KKworVGVtcGxhdGVTdmdCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUpOworVGVtcGxhdGVTdmdCZW5jaG1hcmsucHJv
dG90eXBlLmNvbnN0cnVjdG9yID0gVGVtcGxhdGVTdmdCZW5jaG1hcms7CisKK1RlbXBsYXRlU3Zn
QmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7Cisg
ICAgLy8gWW91IG5lZWQgdG8gb3ZlcnJpZGUgdGhpcyBtZXRob2Qgc3VjaCB0aGF0IHlvdXIgc3Rh
Z2UgaXMgaG9va2VkCisgICAgLy8gdXAgdG8gdGhlIGJlbmNobWFyay4KKyAgICByZXR1cm4gbmV3
IFRlbXBsYXRlU3ZnU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK3dpbmRvdy5i
ZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJl
Y29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxl
ZCBmcm9tIHRoZSB0ZXN0IGhhcm5lc3Mgd2hpY2ggc3RhcnRzIHRoZQorICAgIC8vIHRlc3QgYnkg
Y3JlYXRpbmcgeW91ciBiZW5jaG1hcmsgb2JqZWN0LgorICAgIHJldHVybiBuZXcgVGVtcGxhdGVT
dmdCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jh
cik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9sYXll
cmluZy10ZXh0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KyAgICA8c3R5bGU+CisgICAgICAgIC50ZXh0LWxheWVyIHsKKyAgICAgICAgICAgIGZvbnQtc2l6
ZTogNS41cHg7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICBs
ZWZ0OiAwcHg7CisgICAgICAgICAgICB0b3A6IDBweDsKKyAgICAgICAgICAgIHBhZGRpbmc6IDNw
eDsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICAgICAgICB9
CisgICAgPC9zdHlsZT4gIAorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9j
c3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgorICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAgCisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3N0YWdlLmpzIj48L3NjcmlwdD4gIAorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGF5ZXJp
bmctdGV4dC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJzdGFn
ZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJp
bmctdGV4dC5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMjU3IEBACitmdW5jdGlvbiBMYXllcmluZ1RleHRTdGFnZShlbGVtZW50LCBvcHRpb25z
KQoreworICAgIFN0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5f
dGV4dEVsZW1lbnRQYXJlbnQgPSB0aGlzLmVsZW1lbnQ7CisgICAgdGhpcy5fdGV4dEVsZW1lbnRz
ID0gW107CisgICAgdGhpcy5fdGV4dEl0ZW1JbmRleCA9IDA7CisgICAgdGhpcy5fY29sb3JJbmRl
eCA9IDA7CisgICAgdGhpcy5fYW5pbWF0ZUNvdW50cyA9IDA7Cit9CisKK0xheWVyaW5nVGV4dFN0
YWdlLnRleHRJdGVtcyA9IFsKKyAgICAiPGRpdiBjbGFzcz0ndGV4dC1sYXllcic+IiwKKyAgICAg
ICAgIjxoMj5UeXBlcyBvZiBiZW5jaG1hcmtzPC9oMj4iLAorICAgICAgICAiPG9sPiIsCisgICAg
ICAgICAgICAiPGxpPlJlYWwgcHJvZ3JhbSIsCisgICAgICAgICAgICAgICAgIjx1bD4iLAorICAg
ICAgICAgICAgICAgICAgICAiPGxpPndvcmQgcHJvY2Vzc2luZyBzb2Z0d2FyZTwvbGk+IiwKKyAg
ICAgICAgICAgICAgICAgICAgIjxsaT50b29sIHNvZnR3YXJlIG9mIENBRDwvbGk+IiwKKyAgICAg
ICAgICAgICAgICAgICAgIjxsaT51c2VyJ3MgYXBwbGljYXRpb24gc29mdHdhcmUgKGkuZS46IE1J
Uyk8L2xpPiIsCisgICAgICAgICAgICAgICAgIjwvdWw+IiwKKyAgICAgICAgICAgICI8L2xpPiIs
CisgICAgICAgICAgICAiPGxpPktlcm5lbCIsCisgICAgICAgICAgICAgICAgIjx1bD4iLAorICAg
ICAgICAgICAgICAgICAgICAiPGxpPmNvbnRhaW5zIGtleSBjb2RlczwvbGk+IiwKKyAgICAgICAg
ICAgICAgICAgICAgIjxsaT5ub3JtYWxseSBhYnN0cmFjdGVkIGZyb20gYWN0dWFsIHByb2dyYW08
L2xpPiIsCisgICAgICAgICAgICAgICAgICAgICI8bGk+cG9wdWxhciBrZXJuZWw6IExpdmVybW9y
ZSBsb29wPC9saT4iLAorICAgICAgICAgICAgICAgICAgICAiPGxpPmxpbnBhY2sgYmVuY2htYXJr
IChjb250YWlucyBiYXNpYyBsaW5lYXIgYWxnZWJyYSBzdWJyb3V0aW5lIHdyaXR0ZW4gaW4gRk9S
VFJBTiBsYW5ndWFnZSk8L2xpPiIsCisgICAgICAgICAgICAgICAgICAgICI8bGk+cmVzdWx0cyBh
cmUgcmVwcmVzZW50ZWQgaW4gTUZMT1BTPC9saT4iLAorICAgICAgICAgICAgICAgICI8L3VsPiIs
CisgICAgICAgICAgICAiPC9saT4iLAorICAgICAgICAgICAgIjxsaT5TeW50aGV0aWMgQmVuY2ht
YXJrIiwKKyAgICAgICAgICAgICAgICAiPHVsPiIsCisgICAgICAgICAgICAgICAgICAgICI8bGk+
UHJvY2VkdXJlIGZvciBwcm9ncmFtbWluZyBzeW50aGV0aWMgYmVuY2htYXJrOiIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAiPHVsPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxs
aT50YWtlIHN0YXRpc3RpY3Mgb2YgYWxsIHR5cGVzIG9mIG9wZXJhdGlvbnMgZnJvbSBtYW55IGFw
cGxpY2F0aW9uIHByb2dyYW1zPC9saT4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8
bGk+Z2V0IHByb3BvcnRpb24gb2YgZWFjaCBvcGVyYXRpb248L2xpPiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIjxsaT53cml0ZSBwcm9ncmFtIGJhc2VkIG9uIHRoZSBwcm9wb3J0aW9u
IGFib3ZlPC9saT4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIjwvdWw+IiwKKyAgICAgICAg
ICAgICAgICAgICAgIjwvbGk+IiwKKyAgICAgICAgICAgICAgICAgICAgIjxsaT5UeXBlcyBvZiBT
eW50aGV0aWMgQmVuY2htYXJrIGFyZToiLAorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bD4i
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGk+V2hldHN0b25lPC9saT4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICI8bGk+RGhyeXN0b25lPC9saT4iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIjwvdWw+IiwKKyAgICAgICAgICAgICAgICAgICAgIjwvbGk+IiwKKyAg
ICAgICAgICAgICAgICAgICAgIjxsaT5UaGVzZSB3ZXJlIHRoZSBmaXJzdCBnZW5lcmFsIHB1cnBv
c2UgaW5kdXN0cnkgc3RhbmRhcmQgY29tcHV0ZXIgYmVuY2htYXJrcy4gVGhleSBkbyBub3QgbmVj
ZXNzYXJpbHkgb2J0YWluIGhpZ2ggc2NvcmVzIG9uIG1vZGVybiBwaXBlbGluZWQgY29tcHV0ZXJz
LjwvbGk+IiwKKyAgICAgICAgICAgICAgICAiPC91bD4iLAorICAgICAgICAgICAgIjwvbGk+IiwK
KyAgICAgICAgICAgICI8bGk+SS9PIGJlbmNobWFya3M8L2xpPiIsCisgICAgICAgICAgICAiPGxp
PkRhdGFiYXNlIGJlbmNobWFya3M6IHRvIG1lYXN1cmUgdGhlIHRocm91Z2hwdXQgYW5kIHJlc3Bv
bnNlIHRpbWVzIG9mIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtcyAoREJNUycpPC9saT4iLAor
ICAgICAgICAgICAgIjxsaT5QYXJhbGxlbCBiZW5jaG1hcmtzOiB1c2VkIG9uIG1hY2hpbmVzIHdp
dGggbXVsdGlwbGUgY29yZXMsIHByb2Nlc3NvcnMgb3Igc3lzdGVtcyBjb25zaXN0aW5nIG9mIG11
bHRpcGxlIG1hY2hpbmVzPC9saT4iLAorICAgICAgICAiPC9vbD4iLAorICAgICAgICAiPGgyPkNv
bW1vbiBiZW5jaG1hcmtzPC9oMj4iLAorICAgICAgICAiPHVsPiIsCisgICAgICAgICAgICAiPGxp
PkJ1c2luZXNzIEFwcGxpY2F0aW9ucyBQZXJmb3JtYW5jZSBDb3Jwb3JhdGlvbiAoQkFQQ28pPC9s
aT4iLAorICAgICAgICAgICAgIjxsaT5FbWJlZGRlZCBNaWNyb3Byb2Nlc3NvciBCZW5jaG1hcmsg
Q29uc29ydGl1bSAoRUVNQkMpPC9saT4iLAorICAgICAgICAgICAgIjxsaT5TdGFuZGFyZCBQZXJm
b3JtYW5jZSBFdmFsdWF0aW9uIENvcnBvcmF0aW9uIChTUEVDKSwgaW4gcGFydGljdWxhciB0aGVp
ciBTUEVDaW50IGFuZCBTUEVDZnA8L2xpPiIsCisgICAgICAgICAgICAiPGxpPlRyYW5zYWN0aW9u
IFByb2Nlc3NpbmcgUGVyZm9ybWFuY2UgQ291bmNpbCAoVFBDKTwvbGk+IiwKKyAgICAgICAgICAg
ICI8bGk+Q29yZW1hcms6IEVtYmVkZGVkIGNvbXB1dGluZyBiZW5jaG1hcms8L2xpPiIsCisgICAg
ICAgICI8L3VsPiIsCisgICAgICAgICI8aDM+T3BlbiBzb3VyY2UgYmVuY2htYXJrczwvaDM+IiwK
KyAgICAgICAgIjx1bD4iLAorICAgICAgICAgICAgIjxsaT5BSU0gTXVsdGl1c2VyIEJlbmNobWFy
azogY29tcG9zZWQgb2YgYSBsaXN0IG9mIHRlc3RzIHRoYXQgY291bGQgYmUgbWl4ZWQgdG8gY3Jl
YXRlIGEg4oCYbG9hZCBtaXjigJkgdGhhdCB3b3VsZCBzaW11bGF0ZSBhIHNwZWNpZmljIGNvbXB1
dGVyIGZ1bmN0aW9uIG9uIGFueSBVTklYLXR5cGUgT1MuPC9saT4iLAorICAgICAgICAgICAgIjxs
aT5Cb25uaWUrKzogZmlsZXN5c3RlbSBhbmQgaGFyZCBkcml2ZSBiZW5jaG1hcms8L2xpPiIsCisg
ICAgICAgICAgICAiPGxpPkJSTC1DQUQ6IGNyb3NzLXBsYXRmb3JtIGFyY2hpdGVjdHVyZS1hZ25v
c3RpYyBiZW5jaG1hcmsgc3VpdGUgYmFzZWQgb24gbXVsdGl0aHJlYWRlZCByYXkgdHJhY2luZyBw
ZXJmb3JtYW5jZTsgYmFzZWxpbmVkIGFnYWluc3QgYSBWQVgtMTEvNzgwOyBhbmQgdXNlZCBzaW5j
ZSAxOTg0IGZvciBldmFsdWF0aW5nIHJlbGF0aXZlIENQVSBwZXJmb3JtYW5jZSwgY29tcGlsZXIg
ZGlmZmVyZW5jZXMsIG9wdGltaXphdGlvbiBsZXZlbHMsIGNvaGVyZW5jeSwgYXJjaGl0ZWN0dXJl
IGRpZmZlcmVuY2VzLCBhbmQgb3BlcmF0aW5nIHN5c3RlbSBkaWZmZXJlbmNlcy48L2xpPiIsCisg
ICAgICAgICI8L3VsPiIsCisgICAgIjwvZGl2PiIKK107CisKK0xheWVyaW5nVGV4dFN0YWdlLnBh
cnNlVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbSkKK3sKKyAgICB2YXIgcGFyc2VSZXN1bHQg
PSB7fTsKKyAgICBwYXJzZVJlc3VsdC50YWdTdGFydCA9IHRleHRJdGVtLm1hdGNoKC88KC4qPyk+
L2cpWzBdOworICAgIHZhciBzcGFjZUluZGV4ID0gcGFyc2VSZXN1bHQudGFnU3RhcnQuaW5kZXhP
ZigiICIpOworICAgIHBhcnNlUmVzdWx0Lm5vZGVOYW1lID0gcGFyc2VSZXN1bHQudGFnU3RhcnQu
c3Vic3RyaW5nKDEsIHNwYWNlSW5kZXggIT0gLTEgPyBzcGFjZUluZGV4IDogcGFyc2VSZXN1bHQu
dGFnU3RhcnQubGVuZ3RoIC0gMSk7CisgICAgcGFyc2VSZXN1bHQuYXJncyA9IHNwYWNlSW5kZXgg
IT0gLTEgPyBVdGlsaXRpZXMucGFyc2VBcmd1bWVudHMocGFyc2VSZXN1bHQudGFnU3RhcnQuc3Vi
c3RyaW5nKHNwYWNlSW5kZXggKyAxLCBwYXJzZVJlc3VsdC50YWdTdGFydC5sZW5ndGggLSAxKSkg
OiB7fTsKKyAgICB2YXIgdGFnRW5kID0gIjwvIiArIHBhcnNlUmVzdWx0Lm5vZGVOYW1lICsgIj4i
OyAgICAgICAgICAgICAgICAKKyAgICBwYXJzZVJlc3VsdC50YWdFbmQgPSB0ZXh0SXRlbS5lbmRz
V2l0aCh0YWdFbmQpID8gdGFnRW5kIDogIiI7CisgICAgcmV0dXJuIHBhcnNlUmVzdWx0OworfQor
CitMYXllcmluZ1RleHRTdGFnZS5pc09wZW5pbmdUZXh0SXRlbSA9IGZ1bmN0aW9uKHRleHRJdGVt
KQoreworICAgIHJldHVybiAhTGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VUZXh0SXRlbSh0ZXh0SXRl
bSkudGFnRW5kLmxlbmd0aDsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDbG9zaW5nVGV4dEl0
ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbSkKK3sKKyAgICByZXR1cm4gdGV4dEl0ZW0uaW5kZXhPZigi
LyIpID09ICsxOworfQorCitMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFncyA9IExheWVy
aW5nVGV4dFN0YWdlLnRleHRJdGVtcy5tYXAoZnVuY3Rpb24odGV4dEl0ZW0pCit7CisgICB2YXIg
dGV4dEl0ZW1GbGFncyA9IHt9OworICAgdGV4dEl0ZW1GbGFncy5pc09wZW5pbmcgPSBMYXllcmlu
Z1RleHRTdGFnZS5pc09wZW5pbmdUZXh0SXRlbSh0ZXh0SXRlbSk7CisgICB0ZXh0SXRlbUZsYWdz
LmlzQ2xvc2luZyA9IExheWVyaW5nVGV4dFN0YWdlLmlzQ2xvc2luZ1RleHRJdGVtKHRleHRJdGVt
KTsgICAKKyAgIHJldHVybiB0ZXh0SXRlbUZsYWdzOworfSk7CisKK0xheWVyaW5nVGV4dFN0YWdl
LmlzQ29sb3JhYmxlVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKQoreworICAgIHJl
dHVybiAhKHRleHRJdGVtRmxhZ3MuaXNPcGVuaW5nIHx8IHRleHRJdGVtRmxhZ3MuaXNDbG9zaW5n
KTsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UuaXNJbnNlcnRhYmxlVGV4dEl0ZW0gPSBmdW5jdGlv
bih0ZXh0SXRlbUZsYWdzKQoreworICAgIHJldHVybiAhdGV4dEl0ZW1GbGFncy5pc0Nsb3Npbmc7
Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLmNvbG9yYWJsZVRleHRJdGVtcyA9IExheWVyaW5nVGV4
dFN0YWdlLnRleHRJdGVtc0ZsYWdzLmZpbHRlcihmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKQorewor
ICAgIHJldHVybiBMYXllcmluZ1RleHRTdGFnZS5pc0NvbG9yYWJsZVRleHRJdGVtKHRleHRJdGVt
RmxhZ3MpOworfSkubGVuZ3RoOworCitMYXllcmluZ1RleHRTdGFnZS5pbnNlcnRhYmxlVGV4dEl0
ZW1zID0gTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MuZmlsdGVyKGZ1bmN0aW9uKHRl
eHRJdGVtRmxhZ3MpCit7CisgICAgcmV0dXJuIExheWVyaW5nVGV4dFN0YWdlLmlzSW5zZXJ0YWJs
ZVRleHRJdGVtKHRleHRJdGVtRmxhZ3MpOworfSkubGVuZ3RoOworCitMYXllcmluZ1RleHRTdGFn
ZS5jb2xvckluZGV4VG9UZXh0RWxlbWVudEluZGV4ID0gZnVuY3Rpb24oY29sb3JJbmRleCkKK3sK
KyAgICB2YXIgdGV4dEVsZW1lbnRJbmRleCA9IDA7CisgICAgdmFyIGluZGV4ID0gMDsKKyAgICAK
KyAgICBmb3IgKHZhciB0ZXh0SXRlbUluZGV4ID0gMDsgdGV4dEl0ZW1JbmRleCA8IExheWVyaW5n
VGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzLmxlbmd0aDsgKyt0ZXh0SXRlbUluZGV4KSB7CisgICAg
ICAgIGlmIChMYXllcmluZ1RleHRTdGFnZS5pc0NvbG9yYWJsZVRleHRJdGVtKExheWVyaW5nVGV4
dFN0YWdlLnRleHRJdGVtc0ZsYWdzW3RleHRJdGVtSW5kZXhdKSkgeworICAgICAgICAgICAgaWYg
KCsraW5kZXggPiBjb2xvckluZGV4KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGlmIChMYXllcmluZ1RleHRTdGFnZS5pc0luc2VydGFibGVUZXh0SXRlbShMYXll
cmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0ZXh0SXRlbUluZGV4XSkpCisgICAgICAgICAg
ICArK3RleHRFbGVtZW50SW5kZXg7CisgICAgfQorICAgIAorICAgIHJldHVybiB0ZXh0RWxlbWVu
dEluZGV4OworfQorCitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRl
KFN0YWdlLnByb3RvdHlwZSk7CitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0
b3IgPSBMYXllcmluZ1RleHRTdGFnZTsKKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9u
ZXh0VGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKQoreworICAgIHZhciB0ZXh0SXRl
bSA9IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc1t0aGlzLl90ZXh0SXRlbUluZGV4XTsKKyAg
ICBVdGlsaXRpZXMuZXh0ZW5kT2JqZWN0KHRleHRJdGVtRmxhZ3MsIExheWVyaW5nVGV4dFN0YWdl
LnRleHRJdGVtc0ZsYWdzW3RoaXMuX3RleHRJdGVtSW5kZXhdKTsKKyAgICB0aGlzLl90ZXh0SXRl
bUluZGV4ID0gKHRoaXMuX3RleHRJdGVtSW5kZXggKyAxKSAlIExheWVyaW5nVGV4dFN0YWdlLnRl
eHRJdGVtcy5sZW5ndGg7CisgICAgcmV0dXJuIHRleHRJdGVtOworfQorCitMYXllcmluZ1RleHRT
dGFnZS5wcm90b3R5cGUuX3ByZXZpb3VzVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbUZsYWdz
KQoreworICAgIHRoaXMuX3RleHRJdGVtSW5kZXggPSAodGhpcy5fdGV4dEl0ZW1JbmRleCArIExh
eWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtcy5sZW5ndGggLSAxKSAlIExheWVyaW5nVGV4dFN0YWdl
LnRleHRJdGVtcy5sZW5ndGg7CisgICAgVXRpbGl0aWVzLmV4dGVuZE9iamVjdCh0ZXh0SXRlbUZs
YWdzLCBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0aGlzLl90ZXh0SXRlbUluZGV4
XSk7ICAgIAorICAgIHJldHVybiBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNbdGhpcy5fdGV4
dEl0ZW1JbmRleF07Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fcHVzaFRleHRF
bGVtZW50ID0gZnVuY3Rpb24oKQoreworICAgIHZhciB0ZXh0SXRlbUZsYWdzID0ge307CisgICAg
dmFyIHRleHRJdGVtID0gdGhpcy5fbmV4dFRleHRJdGVtKHRleHRJdGVtRmxhZ3MpOworICAgIGZv
ciAoIDsgdGV4dEl0ZW1GbGFncy5pc0Nsb3Npbmc7IHRleHRJdGVtID0gdGhpcy5fbmV4dFRleHRJ
dGVtKHRleHRJdGVtRmxhZ3MpKQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudCA9IHRo
aXMuX3RleHRFbGVtZW50UGFyZW50LnBhcmVudE5vZGU7CisKKyAgICB2YXIgcGFyc2VSZXN1bHQg
PSBMYXllcmluZ1RleHRTdGFnZS5wYXJzZVRleHRJdGVtKHRleHRJdGVtKTsKKyAgICB0ZXh0SXRl
bSA9IHRleHRJdGVtLnN1YnN0cmluZyhwYXJzZVJlc3VsdC50YWdTdGFydC5sZW5ndGgsIHRleHRJ
dGVtLmxlbmd0aCAtIHBhcnNlUmVzdWx0LnRhZ0VuZC5sZW5ndGgpOworCisgICAgdmFyIHRleHRF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChwYXJzZVJlc3VsdC5ub2RlTmFtZSk7CisK
KyAgICBmb3IgKHZhciBhdHRybmFtZSBpbiBwYXJzZVJlc3VsdC5hcmdzKQorICAgICAgICB0ZXh0
RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cm5hbWUsIHBhcnNlUmVzdWx0LmFyZ3NbYXR0cm5hbWVd
KTsKKworICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50LmFwcGVuZENoaWxkKHRleHRFbGVtZW50
KTsKKyAgICAKKyAgICBpZiAoIXBhcnNlUmVzdWx0LnRhZ0VuZC5sZW5ndGgpCisgICAgICAgIHRo
aXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGV4dEVsZW1lbnQ7CisKKyAgICB0ZXh0RWxlbWVudC5p
bm5lckhUTUwgPSB0ZXh0SXRlbTsKKyAgICAKKyAgICB0aGlzLl90ZXh0RWxlbWVudHMucHVzaCh0
ZXh0RWxlbWVudCk7CisgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7Cit9CisK
K0xheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fcG9wVGV4dEVsZW1lbnQgPSBmdW5jdGlvbigp
Cit7CisgICAgdmFyIHRleHRJdGVtRmxhZ3MgPSB7fTsgICAgCisgICAgdmFyIHRleHRJdGVtID0g
dGhpcy5fcHJldmlvdXNUZXh0SXRlbSh0ZXh0SXRlbUZsYWdzKTsKKyAgICBmb3IgKCA7IHRleHRJ
dGVtRmxhZ3MuaXNDbG9zaW5nOyB0ZXh0SXRlbSA9IHRoaXMuX3ByZXZpb3VzVGV4dEl0ZW0odGV4
dEl0ZW1GbGFncykpCisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGhpcy5fdGV4
dEVsZW1lbnRQYXJlbnQubGFzdENoaWxkOworCisgICAgaWYgKHRleHRJdGVtRmxhZ3MuaXNPcGVu
aW5nKQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudCA9IHRoaXMuX3RleHRFbGVtZW50
UGFyZW50LnBhcmVudE5vZGU7CisKKyAgICB0aGlzLl90ZXh0RWxlbWVudHNbdGhpcy5fdGV4dEVs
ZW1lbnRzLmxlbmd0aCAtIDFdLnJlbW92ZSgpOworCisgICAgdGhpcy5fdGV4dEVsZW1lbnRzLnBv
cCgpOworICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOworfQorCitMYXllcmlu
Z1RleHRTdGFnZS5wcm90b3R5cGUuX2NvbG9yVGV4dEl0ZW0gPSBmdW5jdGlvbihjb2xvcikKK3sK
KyAgICB2YXIgdGV4dEVsZW1lbnRJbmRleCA9IExheWVyaW5nVGV4dFN0YWdlLmNvbG9ySW5kZXhU
b1RleHRFbGVtZW50SW5kZXgodGhpcy5fY29sb3JJbmRleCk7CisgICAgZm9yICggOyB0ZXh0RWxl
bWVudEluZGV4IDwgdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsgdGV4dEVsZW1lbnRJbmRleCAr
PSBMYXllcmluZ1RleHRTdGFnZS5pbnNlcnRhYmxlVGV4dEl0ZW1zKQorICAgICAgICB0aGlzLl90
ZXh0RWxlbWVudHNbdGV4dEVsZW1lbnRJbmRleF0uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gY29s
b3I7Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24o
dGltZURlbHRhKQoreworICAgIHRoaXMuX2NvbG9yVGV4dEl0ZW0oInRyYW5zcGFyZW50Iik7Cisg
ICAgdGhpcy5fY29sb3JJbmRleCA9ICh0aGlzLl9jb2xvckluZGV4ICsgMSkgJSBMYXllcmluZ1Rl
eHRTdGFnZS5jb2xvcmFibGVUZXh0SXRlbXM7CisgICAgdGhpcy5fY29sb3JUZXh0SXRlbSgiWWVs
bG93R3JlZW4iKTsKKyAgICAKKyAgICB2YXIgYmxhY2tUZXh0RWxlbWVudHMgPSBNYXRoLm1pbih0
aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoLCBMYXllcmluZ1RleHRTdGFnZS5pbnNlcnRhYmxlVGV4
dEl0ZW1zKTsKKyAgICB2YXIgaSA9IDA7CisgICAgZm9yICggOyBpIDwgdGhpcy5fdGV4dEVsZW1l
bnRzLmxlbmd0aCAtIGJsYWNrVGV4dEVsZW1lbnRzOyArK2kpCisgICAgICAgIHRoaXMuX3RleHRF
bGVtZW50c1tpXS5zdHlsZS5jb2xvciA9ICh0aGlzLl9hbmltYXRlQ291bnRzICYgMSkgPyAiTGln
aHRZZWxsb3ciIDogIndoaXRlIjsKKworICAgIGZvciAoIDsgaSA8IHRoaXMuX3RleHRFbGVtZW50
cy5sZW5ndGg7ICsraSkKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRzW2ldLnN0eWxlLmNvbG9y
ID0gImJsYWNrIjsKKyAgICAgICAgCisgICAgKyt0aGlzLl9hbmltYXRlQ291bnRzOworfQorCitM
YXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KQoreworICAg
IGNvdW50ID0gY291bnQgPiAwID8gTWF0aC5mbG9vcihjb3VudCkgOiBNYXRoLmNlaWwoY291bnQp
OworCisgICAgaWYgKGNvdW50ID09IDApCisgICAgICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVu
dHMubGVuZ3RoOworCisgICAgaWYgKGNvdW50ID4gMCkgeworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICB0aGlzLl9wdXNoVGV4dEVsZW1lbnQoKTsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7CisgICAgfQorICAgICAg
ICAKKyAgICBjb3VudCA9IE1hdGgubWluKC1jb3VudCwgdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0
aCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICB0aGlzLl9w
b3BUZXh0RWxlbWVudCgpOworCisgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7
Cit9CisKK2Z1bmN0aW9uIExheWVyaW5nVGV4dEJlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIFN0YWdlQmVuY2htYXJrLmNhbGwo
dGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9
CisKK0xheWVyaW5nVGV4dEJlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdl
QmVuY2htYXJrLnByb3RvdHlwZSk7CitMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlLmNv
bnN0cnVjdG9yID0gTGF5ZXJpbmdUZXh0QmVuY2htYXJrOworCitMYXllcmluZ1RleHRCZW5jaG1h
cmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKK3sKKyAgICByZXR1
cm4gbmV3IExheWVyaW5nVGV4dFN0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCit3
aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgcmV0dXJuIG5ldyBMYXllcmlu
Z1RleHRCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3Vy
Y2VzL3lpbi15YW5nLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBh
cyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCkluZGV4OiBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnBuZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15
YW5nLnBuZwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9yZXNvdXJjZXMveWluLXlhbmcucG5nCSh3b3JraW5nIGNvcHkpCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5n
LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMKK2ltYWdl
L3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CgppVkJPUncwS0dnb0FBQUFOU1Vo
RVVnQUFBR1FBQUFCa0NBWUFBQUJ3NHBWVUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpO
CkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFDWEJJ
V1hNQUFBc1RBQUFMRXdFQW1wd1kKQUFBQ0JHbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFB
QUFBQVBIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdQpjenB0WlhSaEx5SWdlRHA0
YlhCMGF6MGlXRTFRSUVOdmNtVWdOUzQwTGpBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHla
R1k5CkltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhl
QzF1Y3lNaVBnb2dJQ0FnSUNBOGNtUm0KT2tSbGMyTnlhWEIwYVc5dUlISmtaanBoWW05MWREMGlJ
Z29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenBsZUdsbVBTSm9kSFJ3T2k4dgpibk11WVdSdlltVXVZ
Mjl0TDJWNGFXWXZNUzR3THlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNE
b3ZMMjV6CkxtRmtiMkpsTG1OdmJTOTBhV1ptTHpFdU1DOGlQZ29nSUNBZ0lDQWdJQ0E4WlhocFpq
cFFhWGhsYkZsRWFXMWxibk5wYjI0K01URXcKUEM5bGVHbG1PbEJwZUdWc1dVUnBiV1Z1YzJsdmJq
NEtJQ0FnSUNBZ0lDQWdQR1Y0YVdZNlVHbDRaV3hZUkdsdFpXNXphVzl1UGpFdwpOVHd2WlhocFpq
cFFhWGhsYkZoRWFXMWxibk5wYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2s5eWFXVnVkR0YwYVc5
dVBqRThMM1JwClptWTZUM0pwWlc1MFlYUnBiMjQrQ2lBZ0lDQWdJRHd2Y21SbU9rUmxjMk55YVhC
MGFXOXVQZ29nSUNBOEwzSmtaanBTUkVZK0Nqd3YKZURwNGJYQnRaWFJoUGdvVW5BMitBQUFOV0Vs
RVFWUjRBZTFkZld3VTFSWS91NlZDVzBxcmlDUWtVQ0ZSUUFKSUNBaFJvY1RFWWcwRQpWRVQ4Q3hB
U0VTSXh3aDhhQlRIQnFEVUdBKzg5RFdENHh3OVFpMEZqU0VTdGlaRldxUkhDcTZEUUJKTlhxbnpJ
UjRyWVVzNDd2ek1NCkhZYmR6bTczN256czlpU3pNN3N6ZXovT2IrNDk1NTU3N3preENqa3g4M2dw
NGh3NXB0S3BVOFBvMkxGQjFOSlNRaWRPRk5LNWN3VjAKNFFKUmUzdE1xM0hERFV6RnhVUURCblRT
b0VFZE5HUklHMVZVbktDQkEzK1grM3ZsK0RRV2krM1haMFA2WVZVa1JJVVRBR1pLY1piVApvVU1U
cWI3K0ZtcHNMS0NmZnliYUwzeHNieWRpdHM2cGxEa2VKNHBKRlFzTGlXNjdqZWl1dTRqdXZydVRw
a3o1azBhTjJpZEovRnNBCjJwMUtVbm4xaklDd2xOdmE5dlAyN2UyOGFCSHpzR0hNdzRjelAvZ2c4
NzMzTWhjWEF3WXpSMGtKYy8vK3pBTUhNcytieDVvbjhwWXkKNUJYVDNaVVZCb3lSWXc5Lzhrazd6
NS9QM0tjUGMzVTE4NlpOekY5OXhieDRzUmtBdklBc0syT094NWtmZUlDNXRyWmR5eVJsYzVjMwpa
NzlMaGVmdzhlTkhlZDI2eTlvU0tpdVozM21IK2ZScHVTVlVVOE5jVU9BUEdHNnd5c3V0bG9PeW9Z
eFMxbHdHWWpZZk9mSS9YckdDCk9SWmpmdW9wNXA5K1VnejBvN1dWZWRhc1lJQndBMU5VWkpWanlS
TFdNalBQemhsZ2hObEQrZVRKSm43bUdlYStmWm1mZjU0WnpIZFMKUXdQemlCSGhBTU1KRGxvcURy
dzhxSVBVSmRMQVNBVzI4SVlOblR4Z0FQUEtsZGNEQVZDKytZYTV0RFI4WURpQndZdlVyeDlMWFM2
aApUcEVEUlFvOWcrdnJ6NnFHQkVIdDdKcms1bFZDeXdnN0dFNWdvQUNNSGN0YU42bGpKSUFSWm0v
Zzllc3ZxMm9KWVoyTTBHMkZzWnR5CkFwRHN1ckNRK1pWWExxT3VvUVZGQ2xjaW1zbC9WVENqVlRR
M0o0UEMrajBzQWp3WjA3MStSMnVaTm8yMXpsTDNVQUVqSEo3QVgzL2QKcG1yczJyWGRBNEc3VUcy
OUtoeVYreGhnb3U3Q2cxQ0FJZ1dwNG5mZjdWQU5hdnQyc0x0N1Fzc0phcHlSTFpCUkgvQkFlQkVv
S0ZLQQpoZno2NjUxcTVvQ0FUb1g4R29Gbmkvbkowb1U1cHFhbUV6d0pCQlRKZURXLzlOSmx2dk5P
YjNsaEEzWHdZTzUwVlltQWdWekJLRjk0CjR5c29lQXNVak1tVEU0OHRiQURjWjR6U0UxVWtsMzdy
QXNXZmxpSThydEp1Q2kzRFBlSjJBK0Q4ZmtuR1ZGRWFjMlR5a2dBVXEvdksKcmt3Ui9rNVE0UVhU
dUpkYTZ3UUQxenQyNUg3cmNJSUltYkp0R3dSOWRyUXZTYmhFMVR1WUVWSVY0QURDcGx3VjVrNFEz
TmZRdml5VgoyUHc0aFZ0YW1uU2NrWXBxYTRQZ1BFZDFWTzVtY3JyZk1VNlJBYk5SSVM5ODNhQWo4
RlFHZlU0UTdHdkltblFya3Nyemp6L08vTzIzCnpCY3ZXZ2V1OFZzcS8vWHpHWXpvVFpsWkpLRVph
cHVDT2FTbkJJdXVhUWE4OFVieTB1Q2U2Znd5U1E5QzNySjlaVzZRVk1zbUJGUzYKUXR6SnJtM2J6
RElJcmNDTHd0WlNZSkJzYURpYlVkY2xkZDZpSnZUdXJMWmVqTUY5MDdZcmRFMWVoR2N5ZWF1ejhk
OXg0MURxbnMybgp5QitINnVSU0psMlZ6YlIxNjh3eUJ6TERpL0JNTnBpYVNacm91akJoMTVPWlI1
Mnl4RXhmc3NrbEw0WTQ3L2NDMHZWeVlPYngxS21tClpGMlhyQ1M3bm9TWHMybjkrdEcwYUJIUkJB
UGpHcXdtTkVrTkRkNnBwZktNZHlybW53QTBMNzQ0V25tY2F1cTYwZ0lEd0hSTUk4NFcKNGI3dUZl
cGRMUVJkSGdhTXNnSW5KVHlFbDNOMHFRNVdoNWlpZkZkNzNYSUhnR0NKVVNycnZtUlUyYXpycGt5
MURtU2I3d05ETnlEMgo5OWJXbzkyMkVtSGRHTFhuWXgyU2FjcFgwNG5OZlBjWmkvRmVmaGx6Sjht
WHJjck5QV3F2TXFGWnVRSE5SK09pR3dUM2Q5aTVoT2ZPClZuS3RsbFZiTzQxR2pEQ2pXVGx6d2ZW
TTdETG9wV3M0ME5sSnRIUG5OT2R2VndFUnBKYlNqaDJGdEdDQjg3NjU2NGNlSWlvdE5aZGUKTHFS
MDVnelJsaTFpVTBtd0ZVTDNaMkJMZ0wwS0hZM0pOT1hERks2N1cvTDZEbzNyd29YOTl2dDF0WVhR
NTUrUHB2dnZKN3J4UnZ1ZQorZk9UVDVwUE0rb3A5dTlQeXZzcjlWQkFwQ0ZVMCs3ZGhWUmRuZDNx
alJHRll2SGk3T1lSdGRUUGlnSDQ0NC9SYlhVeFg3NThwdHJWCjRjT21PNm5yMDh2RmhYSmUzWkxY
ZlV2YitnenZrdFZsWVlObFFRSFI3YmRuLy8wYVBwem8xVmV6bjArVWN2am5INkxEaHllaXlCWWcK
Mk8wNmRhcC9WVmkxaW1qV0xQL3lDM3RPMkNrTURJUmt0NlBzQThmVzQwbVQvQzMyNXMya1l4NS9j
dzFuYnVmUEUzMzNuYWhiUEI0dApaSzd1QVIrUC9mayswdURCUkI5ODBEczJzVm4rd3crNG1ndEFw
dEF2dnhEZGNZZDl5Ny96NU1sRXUzYjFnZ0tPTnpmamMwcGMzVlZnCkNJODNOZ2lxckNUYUkrWWNt
R3p5bVRvNmlFNmZIaFpYM3lFVkZjR3lBaTNsKysvelc5RDM2MGZBSXE2T1hJWU1DUllRNUk0V2l1
NnIKcG9aVUJRKytSUDZYUUp6cXhOV3J6aTJxY2ZsZmdFUTVRaVgrN2JmOEc5RkRiSnc4V1JoWEYw
ZGxaWWxZRTl4dkdEeHUzVXAwOENEUgppaFg1SWZRaFE4NmVMWWlydjZrUzg0dXpqYUFKMjlmR2pV
Ui8vVVV5TldDMW1sd1YvcGN1RWJEb284Ni80RThxekFTenpyeDUxb0Z5Ci92RUhxYXArN0JoSmw2
c1ZvYlZydzF3RDc3S2h5eEpIYkgyOG53emhFMUFBM0dyNm1qWFhGeFM2ZlYwZGlTV2JxTGFXQ0pV
T09jVUoKYnZIUWYrVWlvWHVEdVIvZEhibzlkSC9vQnNOSTZBVUVpN2o2S0d4ckMyTVJ6WllKMDhk
UUVLQW9RR0dBNGhBbTZpT2RsYXp3akt2RApTTXp0NWhPaDFVQzFob29kRm9JY0x5dnJqS3YzVGdq
R2ZDTjBFUmlFWWpEcWxrZEI4QUxsdWZubWpyaTZVbTFwQ2FJSTRjZ1Q4ekl3CjI4QjhFelNKVzl1
NCtyV0YrcGpQQk9FUEEyZGxaWEJjdUhpUmdFVmNuUXlqdVVDM3oyZUMwRWYzRlZSTGdReTU2YWJm
NDRKQlBZMGUKVGRUVWxNOXdXSFVIS0pnMEMwS21XQmFJdlFCa0oyRzJFSjZqZThtYWw4SDBzdDlr
dGN4UDQrb0xmZUxFVHZyeFI3K0xFTjc4SU9qOQpWSW5STXUrNXB4TllvSVhJeEtINFF0KzdON3dN
Q3FKa1dLcmsxK0FSKzZ1QWdaQUZ5S2hSaldybitmWFhJS29lemp5aDZMendnajlsCjY5dVhhT1JJ
QkFlNEFnalJ2K2krKzRpKy9OS2ZBa1FsRjR6by9iQjlnZmNTcVFFZjJrSTBaTVBNbVIzMHhSZjRy
WmVjSE1qMkFuRk0KRGo3eVNJY2ROaU5tNTQzdENHSkxHVWQvU2xlV3pSWHdkb1pST1dNUkcvaVJM
ZE05dXNiejV3L0Vpb3RGMWUzcXNtQnAzRVFQUDB6MAowVWRSWVpVLzVZUUdoTTFHMmFLcUtxS2lv
azEyOHBaUWwyL1NaRGJUL1BrZE9qQ3k3L2FlTFE1a2F6dGVlVG5Sa2lYb3JoSVBmR1J0CmFmWTJm
VjYvTVNFNnZ4dzlldTNHZjYvdEJhbmU5OXowU2JTU25uaUNaZDliTk5yRysrOFRUWjlPaEVWbU9I
Q04zMHhUTmhaV0ZCVUoKdDFmS0FFUjQzaDFseFhGQU50ckNzODhtZjJ0eHp6U2wrdGFuODV5WDR3
QUFKZlV3NzFyRE5IUGVleTg1R0RaRDhJeEpzdE0xY1U3SAp0WWFDZ3RCRU11RnV6UG1NU2NZZ0xm
Z3c5R0tNNWVmUVhNNWUrYVZ6UHgzbk0xZGF5V3dOVVlTb09HRWtlQ3J5WWdDZU1VbGUrYVY2Ckgr
VmF2aHdsU3krdWxUb3dnd2UwYkxqWnlKUlJVUWFrSnc3TTBFcGtKckdLeExHOGJ3WTJ6VFRGRDBU
czlLSlVudkZLdy9SOW1FbGUKZSsyeXpBekthTEFISkMreUdTZVltYllJOS8rakt0UXpjWUpwNDJm
RVRheWJvU2ErUjAzdE5lRW1GcUFJNzJhb0UyQVQza2xOQU9GTQpBeTBGMmhSa0NnNWNtMVozN2Z4
U0ZkcUpualBwU1BrS0tKbTVHcmNyRmRWenBxWVRTd1UzRzlGTm81RWhpbk5QbmZGSEZReVVlK3RX
CmJ6VTdVY3ZBYjdCWHRiYWFkY1ovcFpWWTRTb3dZS3l2anpKNzB5ODd3bnduWTNoM3YyTUFXRmVI
Q0c0bDRLRnhrb1N0Z0M2MzNzcU0KWnB3UGRPNWN6NkxLWlR1Z2k0MnVZRkNsNFh6U0RYa1VWZkEy
Ymt5L2RVQ0kreEh5eUFIS1F2VmVPbWxTZU8xZHBsNkFNV1BTQXdSZwpXSkhhRnRyODh1VXM5VjJ0
R2FPbDVHcjNsYTR3N3dKanRTOGd1RE1SVUJacTA0Uk15VFZCajZoeUNIN1duZEIyM2dzNnNLUU5q
b0JTCnBkSElvSDE5K0tHcGppTDRkRmF0U2gwTWFGTldSTGFlMmFoc1pwbzZDL2VzNE1RVkZjeHIx
Z1RQekV4THNHdFg2bUJnbkdHcHRoTk0KOGROSU9zS0RFbzNraHJEY01MTkVWYTZnM0lNSGV3TUNl
WUVSK1BIalRhaTdFU1ptSXhFcDNBYTFmWldVTUdjYUtpblROejNkLzJQTQpnWEN5VHRtUTZEb0tB
ZTZkNEFvZlppQUFscjVCYUMyTmplbXl4di9uQVVabFpmZGdvRlhBaEk2NlNSMmRkWTdFdFJSNmk4
WmNRa1dlCmZqcThZeFowVTkyMURGaVNNZFAzMWx1ZHFGTWttSitza0ZLQm9ZaTVwSFAwME1TZWV5
NWN3RUNBSjVNWjBKNXdZQTRjZGVoSk1LOWsKakFuNmQ2bk1iQTJsQlAvdnNSanpzbVhCZG1VWVp5
UlRiUkhiQTdJRFVYQ3dBaWZkQlFsQk16dWQvS1Z5YzhRYzNhekJUS0FtVDUvTwovUGJiZUFQbGxr
K0VFWGlpUVY5NXVXVXVSNkFWbERHVmtFVHBWRDdNejBwbHhVZ2thNGxyYTl2NXNjZVlvYmxBQVlB
eDc5QWg4OGhBCmFDTnR0MjBLOGczZEV2SkdXVkNtN3FMZWhKbXBwc29tREZpS2tBMFNjNzJkRVlr
SExRZm1tQVVMbU45OEV5R3dtYytja2NmU0pBaHIKdEFiTVo0RHA2SVpLUzVsaDVzQ0E3dEZIRWVl
OVhmTk9GTVBEVkFYVFNPZnFocDAwL3BQVlI0WGwxWkxCTXZXRkR2ZmIrL1lWMElFRAoxajU2ZUYy
REIxVnNNeHM3bG1qb1VHeTJ0eFphMTlVUi9mMDNYSzJTT1BZa09uS0VkUE1SUENSZ1V6NFdUR1By
c2V4MjFRMldJMGMyClNqNy9rYTBBb2RvMkZqcEEzR2dMUU5oWk5GZU9LZkJycTI1dHhYc25IRWJD
UjZHNktCUlBiUG8vMGVMVTNaUjQxWUVqRi9Yakl1NHEKNENGQjd0ZkxzVk1BQ1BXRy9QOERSbnEv
YU02TjhxMEFBQUFBU1VWT1JLNUNZSUk9Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262368</attachid>
            <date>2015-10-02 17:16:56 -0700</date>
            <delta_ts>2015-10-02 17:37:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149053-20151002171629.patch</filename>
            <type>text/plain</type>
            <size>139902</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTA1MjkpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3MiBAQAorMjAxNS0xMC0wMiAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFk
IG9mIG1lYXN1cmluZyB0aGUgRlBTIG9mIHRoZSBhbmltYXRpb24sIHRoaXMgYmVuY2htYXJrIG1l
YXN1cmVzIHRoZQorICAgICAgICB0ZXN0IGNvbXBsZXhpdHkgd2hlbiByZW5kZXJpbmcgYXQgYSBz
ZXQtcG9pbnQgRlBTIHdoaWNoIHNob3VsZCBiZSBsb3dlcgorICAgICAgICB0aGFuIDYwIEZQUy4g
VGhpcyBiZW5jaG1hcmsgdHJpZXMgdG8gc3RheSBhdCB0aGUgc2V0LXBvaW50IEZQUyBieSB1c2lu
ZworICAgICAgICBhIGNsb3NlZCBsb29wIGNvbnRyb2wgc3lzdGVtIFBJRCBmdW5jdGlvbi4gVGhl
IGdhaW4gb2YgdGhlIHN5c3RlbSBpcyBwYXNzZWQKKyAgICAgICAgYXMgYSBwYXJhbWV0ZXIgd2hl
biBydW5uaW5nIHRoZSB0ZXN0LiBNZWFzdXJpbmcgdGhlIEZQUyBmYWl0aGZ1bGx5IHJlc3VsdHMK
KyAgICAgICAgdmVyeSBmbHVjdHVhdGluZyB2YWx1ZXMuIEEgS2FsbWFuIGZpbHRlciBpcyB1c2Vk
IHRvIGdpdmUgYSBiZXR0ZXIgZXN0aW1hdGUKKyAgICAgICAgZm9yIHRoZSBjdXJyZW50IEZQUy4K
KworICAgICAgICBUaGUgYW5pbWF0aW9uIG9mIHRoZSB0ZXN0cyBpcyBkb25lIG1hbnVhbGx5LiBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKSBpcworICAgICAgICBjYWxsZWQgd2l0aCBhIGNhbGxiYWNr
LiBJbnNpZGUgdGhpcyBjYWxsYmFjaywgdGhlIHRlc3QgaXMgYW5pbWF0aW5nIGJ5CisgICAgICAg
IGNoYW5naW5nIHRoZSBwb3NpdGlvbnMgb2YgdGhlIGVsZW1lbnRzIGluc2lkZSB0aGUgcGFnZS4g
VGhlIHRlc3QgY29tcGxleGl0eQorICAgICAgICBtYXkgY2hhbmdlIGFsc28gaWYgdGhlIGN1cnJl
bnQgRlBTIGlzIG5vdCBlcXVhbCB0byB0aGUgZGVzaXJlZCBGUFMuCisKKyAgICAgICAgSW4gdGhp
cyBwYXRjaCwgdGhlIGJlbmNobWFyayBhbmQgdGhlIHRlc3RzIGFyZSBpbmNsdWRlZC4gVGhlIHNo
YXJlZCBjb2RlCisgICAgICAgIGFuZCB0aGUgdGVzdHMgcnVubmVyIGFyZSBpbmNsdWRlZCBpbiBz
ZXBhcmF0ZSBwYXRjaGVzLgorCisgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvYW5pbW9tZXRl
ci5odG1sOgorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVy
LmpzOgorCisgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHN1aXRlRnJvbU5hbWUpOiBSZXR1cm5zIGEgc3VpdGUgZ2l2ZW4gaXRz
IG5hbWUuCisgICAgICAgICh0ZXN0RnJvbU5hbWUpOiBSZXR1cm5zIGEgdGVzdCBnaXZlbiBpdHMg
c3VpdGUgYW5kIG5hbWUuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzOiBBZGRlZC4KKyAg
ICAgICAgVGhpcyBkaXJlY3RvcnkgaW5jbHVkZXMgYWxsIHRoZSB0ZXN0IHN1aXRlcyB0byBiZSBy
dW4gYnkgdGhlIGJlbmNobWFyay4KKyAgICAgICAgcnVubmVyLiBBbGwgdGhlIHRlc3RzIHNob3Vs
ZCB0cnkgdG8gcnVuIG9uIHRocmVlIHN0YWdlczogQ1NTLCBjYW52YXMgYW5kCisgICAgICAgIFNW
Ry4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXM6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L3Jlc291cmNlczogQWRkZWQuCisgICAgICAgIFRoZSBib3VuY2luZyBwYXJ0aWNsZXMgdGVzdCBp
cyBhbiBleGFtcGxlIG9mIGEgc2ltcGxlIGFuaW1hdGlvbiB0ZWNobmlxdWUuCisgICAgICAgIAor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNh
bnZhcy1pbWFnZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1h
Z2VzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3Vu
Y2luZy1zdmctc2hhcGVzLmh0bWw6IEFkZGVkLgorICAgICAgICBCb3VuY2luZyBwYXJ0aWNsZXMg
dGVzdCBwYWdlcy4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91
bmNpbmdQYXJ0aWNsZSk6IEJhc2UgY2xhc3MgZm9yIGEgYm91bmNpbmcgcGFydGljbGUuCisgICAg
ICAgIChCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5jZW50ZXIpOiBSZXR1cm5zIHRoZSBjZW50
ZXIgcG9pbnQgb3IgdGhlIHBhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZS5wcm90
b3R5cGUuYW5pbWF0ZSk6IE1vdmVzIHRoZSBwYXJ0aWNsZSBiYXNlZCBvbiBpdHMgY3VycmVudCBw
b3NpdGlvbiwgYW5nbGUgYW5kIHZlbG9jaXR5LgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5n
UGFydGljbGVzQW5pbWF0b3IpOiBBIHN1YiBjbGFzcyBvZiBBbmltYXRvci4KKyAgICAgICAgCisg
ICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0YWdlKTogUmVwcmVzZW50cyB0aGUgY29udGFpbmVy
IG9mIGFsbCB0aGUgYm91bmNpbmcgcGFydGljbGVzLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNs
ZXNTdGFnZS5wcm90b3R5cGUucGFyc2VTaGFwZVBhcmFtdGVycyk6IEdldHMgdGhlIHNoYXBlIHBh
cmFtZXRlcnMgZm9yIHNoYXBlIGFuaW1hdGluZyB0ZXN0cy4KKyAgICAgICAgKEJvdW5jaW5nUGFy
dGljbGVzU3RhZ2UucHJvdG90eXBlLnJhbmRvbVJvdGF0ZXIpOiBDcmVhdGVzIGEgcm90YXRlciBm
b3IgdGhlIHBhcnRpY2xlcy4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90
eXBlLmFuaW1hdGUpOiBBbmltYXRlcyBhbGwgdGhlIHBhcnRpY2xlcy4KKyAgICAgICAgKEJvdW5j
aW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnR1bmUpOiBDaGFuZ2VzIHRoZSB0ZXN0IGJ5IGFk
ZGluZyBvciByZW1vdmluZyBwYXJ0aWNsZXMuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdQ
YXJ0aWNsZXNCZW5jaG1hcmspOiBSdW5zIHRoZSBiZW5jaG1hcmsgZm9yIGJvdW5jaW5nIHBhcnRp
Y2xlcyB0ZXN0LgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBl
LmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyBhbiBhbmltYXRvciBvZiB0eXBlIEJvdW5jaW5nUGFy
dGljbGVzQW5pbWF0b3IuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLXNoYXBlcy5qczogQWRkZWQuCisgICAgICAg
IChCb3VuY2luZ0Nzc1NoYXBlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZSBmb3Ig
YW5pbWF0aW5nIENTUyBzaGFwZXMuCisgICAgICAgIChCb3VuY2luZ0Nzc1NoYXBlLnByb3RvdHlw
ZS5fY3JlYXRlU3Bhbik6IENyZWF0ZXMgYSA8c3Bhbj4gZWxlbWVudCBhbmQgdGFrZXMgdGhlIHNo
YXBlIGFuZCBjbGlwcGluZyBjbGFzc2VzIGludG8gY29uc2lkZXJhdGlvbi4KKyAgICAgICAgKEJv
dW5jaW5nQ3NzU2hhcGUucHJvdG90eXBlLl9tb3ZlKTogTW92ZXMgdGhlIHBhcnRpY2xlIHRvIGEg
bmV3IGxvY2F0aW9uLiBBcHBseSB0cmFuc2Zvcm0gc2luY2UgaXQgZG9lcyBub3QgcmVxdWlyZSBs
YXlvdXQuCisgICAgICAgIChCb3VuY2luZ0Nzc1NoYXBlLnByb3RvdHlwZS5hbmltYXRlKTogUm90
YXRlcyBhbmQgbW92ZXMgdGhlIHNoYXBlIHRvIGEgbmV3IGxvY2F0aW9uLgorICAgICAgICAKKyAg
ICAgICAgKEJvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1Bh
cnRpY2xlc1N0YWdlIGZvciBhbmltYXRpbmcgQ1NTIHNoYXBlcy4KKyAgICAgICAgKEJvdW5jaW5n
Q3NzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRp
Y2xlIG9mIHR5cGUgQm91bmNpbmdDc3NTaGFwZS4KKyAgICAgICAgKEJvdW5jaW5nQ3NzU2hhcGVz
U3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCk6IFJlbW92ZXMgdGhlIGNvcnJl
c3BvbmRpbmcgZWxlbWVudCBmb3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4gbGlzdC4KKyAgICAgICAg
CisgICAgICAgIChCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyayk6IEEgc3ViIGNsYXNzIG9mIEJv
dW5jaW5nUGFydGljbGVzQmVuY2htYXJrIGZvciBhbmltYXRpbmcgQ1NTIHNoYXBlcy4KKyAgICAg
ICAgKEJvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENy
ZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UuCisgICAgICAgICh3
aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlw
ZSBCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyay4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1pbWFn
ZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdDc3NJbWFnZSk6IEEgc3ViIGNsYXNzIG9m
IEJvdW5jaW5nUGFydGljbGUgZm9yIGFuaW1hdGluZyBDU1MgaW1hZ2VzLgorICAgICAgICAoQm91
bmNpbmdDc3NJbWFnZS5wcm90b3R5cGUuX21vdmUpOiBNb3ZlIHRoZSBwYXJ0aWNsZSB0byBhIG5l
dyBsb2NhdGlvbi4gQXBwbHkgdHJhbnNmb3JtIHNpbmNlIGl0IGRvZXMgbm90IHJlcXVpcmUgbGF5
b3V0LgorICAgICAgICAoQm91bmNpbmdDc3NJbWFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IFJvdGF0
ZXMgYW5kIG1vdmVzIHRoZSBzaGFwZSB0byBhIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgCisgICAg
ICAgIChCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZSBmb3IgYW5pbWF0aW5nIENTUyBpbWFnZXMuCisgICAgICAgIChCb3VuY2luZ0Nz
c0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0aWNs
ZSBvZiB0eXBlIEJvdW5jaW5nQ3NzSW1hZ2UuCisgICAgICAgIChCb3VuY2luZ0Nzc0ltYWdlc1N0
YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1vdmVzIHRoZSBjb3JyZXNw
b25kaW5nIGVsZW1lbnQgZm9ybSB0aGUgcGFyZW50IGNoaWxkcmVuIGxpc3QuCisgICAgICAgIAor
ICAgICAgICAoQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmspOiBBIHN1YiBjbGFzcyBvZiBCb3Vu
Y2luZ1BhcnRpY2xlc0JlbmNobWFyayBmb3IgYW5pbWF0aW5nIENTUyBpbWFnZXMuCisgICAgICAg
IChCb3VuY2luZ0Nzc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVh
dGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlLgorICAgICAgICAod2lu
ZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5cGUg
Qm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtcGFy
dGljbGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzUGFydGljbGUpOiBBIGJh
c2Ugc3ViLWNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUgZm9yIGFuaW1hdGluZyBjYW52YXMgcGFy
dGljbGVzLgorICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5cGUuX2FwcGx5
Um90YXRpb24pOiBBcHBseSB0aGUgcGFydGljbGUgcm90YXRpb24tYXJvdW5kLWNlbnRlciB0cmFu
c2Zvcm0gdG8gdGhlIGNhbnZhcyBjb250ZXh0LgorICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0
aWNsZS5wcm90b3R5cGUuX2FwcGx5Q2xpcHBpbmcpOiBBcHBseSB0aGUgcGFydGljbGUgY2xpcHBp
bmcgdG8gdGhlIGNhbnZhcyBjb250ZXh0LgorICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNs
ZS5wcm90b3R5cGUuX2RyYXcpOiBBIG5vbi1pbXBsZW1lbnRlZCB2ZXJzaW9uIG9mIHRoZSBkcmF3
aW5nIGZ1bmN0aW9uLgorICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5cGUu
YW5pbWF0ZSk6IENhcnJpZXMgb3V0IGFsbCB0aGUgc3RlcHMgdG8gcmVkcmF3IHRoZSBjYW52YXMg
cGFydGljbGUuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFn
ZSk6IEEgYmFzZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZSBmb3IgYW5pbWF0
aW5nIGNhbnZhcyBwYXJ0aWNsZXMuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdDYW52YXNQ
YXJ0aWNsZXNBbmltYXRvcik6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nUGFydGlj
bGVzQW5pbWF0b3IgZm9yIGFuaW1hdGluZyBjYW52YXMgcGFydGljbGVzLgorICAgICAgICAoQm91
bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6IE92ZXJyaWRl
cyB0aGUgYmFzZSBjbGFzcyBtZXRob2QgdG8gY2xlYXIgdGhlIGNhbnZhcyBiZWZvcmUgcmVkcmF3
aW5nIHRoZSBzdGFnZS4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1BhcnRpY2xl
c0JlbmNobWFyayk6IEEgYmFzZSBzdWItY2xhc3Mgb2YgU3RhZ2VCZW5jaG1hcmsgZm9yIGFuaW1h
dGluZyBjYW52YXMgcGFydGljbGVzLgorICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNC
ZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyB0aGUgY2FudmFzIHBh
cnRpY2xlcyBhbmltYXRvci4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanM6IEFk
ZGVkLgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZSk6IEEgY29uY3JldGUgc3ViLWNsYXNz
IG9mIEJvdW5jaW5nQ2FudmFzUGFydGljbGUgZm9yIGFuaW1hdGluZyBjYW52YXMgc2hhcGVzLgor
ICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUuX2FwcGx5RmlsbCk6IFNldHMg
dGhlIGZpbGxTdHlsZSBpbiB0aGUgY2FudmFzIGNvbnRleHQuCisgICAgICAgIChCb3VuY2luZ0Nh
bnZhc1NoYXBlLnByb3RvdHlwZS5fZHJhd1NoYXBlKTogQ2FycmllcyBvdXQgdGhlIGFjdHVhbCBk
cmF3aW5nLgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUuX2RyYXcpOiBD
YXJyaWVzIG91dCBhbGwgdGhlIHN0ZXBzIHRvIGRyYXcgdGhlIHNoYXBlLgorICAgICAgICAKKyAg
ICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBv
ZiBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlIGZvciBhbmltYXRpbmcgY2FudmFzIHNoYXBlcy4KKyAg
ICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xl
KTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNpbmdDYW52YXNTaGFwZS4KKyAgICAg
ICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyayk6IEEgY29uY3JldGUg
c3ViLWNsYXNzIG9mIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrIGZvciBhbmltYXRp
bmcgY2FudmFzIHNoYXBlcy4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJr
LnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5n
Q2FudmFzU2hhcGVzU3RhZ2UuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0
ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNo
bWFyay4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jl
c291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5j
aW5nQ2FudmFzSW1hZ2UpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlIGZvciBhbmltYXRpbmcgY2FudmFzIGltYWdlcy4KKyAgICAgICAgKEJvdW5jaW5nQ2Fu
dmFzSW1hZ2UucHJvdG90eXBlLl9kcmF3KTogRHJhd3MgYW4gaW1hZ2Ugb24gdGhlIGNvbnRleHQg
b2YgYSBjYW52YXMuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZXNTdGFn
ZSk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2ht
YXJrIGZvciBhbmltYXRpbmcgY2FudmFzIGltYWdlcy4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFz
SW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xl
IG9mIHR5cGUgQm91bmNpbmdDYW52YXNJbWFnZS4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2lu
Z0NhbnZhc0ltYWdlc0JlbmNobWFyayk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5n
Q2FudmFzUGFydGljbGVzQmVuY2htYXJrIGZvciBhbmltYXRpbmcgY2FudmFzIGltYWdlcy4KKyAg
ICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFn
ZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UuCisg
ICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1h
cmsgb2YgdHlwZSBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay4KKworICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmct
cGFydGljbGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnUGFydGljbGUpOiBBIGJh
c2Ugc3ViLWNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUgZm9yIGFuaW1hdGluZyBTVkcgcGFydGlj
bGVzLgorICAgICAgICAoQm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5cGUuX2FwcGx5Q2xpcHBp
bmcpOiBBcHBseSB0aGUgcGFydGljbGUgY2xpcHBpbmcgYnkgc2V0dGluZyB0aGUgJ2NsaXAtcGF0
aCcgYXR0cmlidXRlIG9mIHRoZSBTVkdFbGVtZW50LgorICAgICAgICAoQm91bmNpbmdTdmdQYXJ0
aWNsZS5wcm90b3R5cGUuX21vdmUpOiBNb3ZlcyB0aGUgcGFydGljbGUgdG8gYSBuZXcgbG9jYXRp
b24uIEFwcGx5IHRyYW5zZm9ybSBzaW5jZSBpdCBkb2VzIG5vdCByZXF1aXJlIGxheW91dC4KKyAg
ICAgICAgKEJvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUpOiBSb3RhdGVzIGFu
ZCBtb3ZlcyB0aGUgc2hhcGUgdG8gYSBuZXcgbG9jYXRpb24uCisgICAgICAgIChCb3VuY2luZ1N2
Z1BhcnRpY2xlc1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZSBm
b3IgYW5pbWF0aW5nIFNWR0VsZW1lbnRzLgorICAgICAgICAoQm91bmNpbmdTdmdQYXJ0aWNsZXNT
dGFnZS5wcm90b3R5cGUuX2NyZWF0ZURlZnMpOiBDcmVhdGVzIGFuIFNWR0RlZnNFbGVtZW50Lgor
ICAgICAgICAoQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuX2Vuc3VyZURlZnNJ
c0NyZWF0ZWQpOiBFbnN1cmVzIHRoZXJlIGlzIG9ubHkgb25lIFNWR0RlZnNFbGVtZW50IGlzIGNy
ZWF0ZWQuCisgICAgICAgIChCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5fY3Jl
YXRlQ2xpcFN0YXIpOiBDcmVhdGVzIGFuIFNWR0NsaXBQYXRoRWxlbWVudCBhbmQgc2V0cyBpdHMg
J2QnIGF0dHJpYnV0ZSB0byBhIHN0YXIgbGlrZSBzaGFwZS4KKyAgICAgICAgKEJvdW5jaW5nU3Zn
UGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmVuc3VyZUNsaXBTdGFySXNDcmVhdGVkKTogRW5zdXJl
IHRoZXJlIGlzIG9ubHkgb25lIHN0YXIgU1ZHQ2xpcFBhdGhFbGVtZW50IGlzIGNyZWF0ZWQuCisg
ICAgICAgIChCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxC
ZVJlbW92ZWQpOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBmb3JtIHRoZSBwYXJl
bnQgY2hpbGRyZW4gbGlzdC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKEJvdW5jaW5nU3ZnU2hhcGUpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1NW
R1BhcnRpY2xlIGZvciBhbmltYXRpbmcgU1ZHIHNoYXBlcy4KKyAgICAgICAgKEJvdW5jaW5nU3Zn
U2hhcGUucHJvdG90eXBlLl9jcmVhdGVTaGFwZSk6IENyZWF0ZXMgYW4gU1ZHIHNoYXBlLgorICAg
ICAgICAoQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2FwcGx5RmlsbCk6IEFwcGxpZXMgdGhl
IHNlbGVjdGVkIGZpbGwgc3R5bGUgdG8gdGhlIFNWRyBzaGFwZS4KKyAgICAgICAgCisgICAgICAg
IChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNp
bmdTdmdQYXJ0aWNsZXNTdGFnZSBmb3IgYW5pbWF0aW5nIFNWRyBzaGFwZXMuCisgICAgICAgIChC
b3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVHcmFkaWVudCk6IENyZWF0ZXMg
YW4gU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNT
dGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlw
ZSBCb3VuY2luZ1N2Z1NoYXBlLgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90
b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkKTogRW5zdXJlcyB0aGUgYXR0YWNoZWQgU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50IGlzIHJlbW92ZWQgZnJvbSB0aGUgU1ZHRGVmc0VsZW1lbnQuCisg
ICAgICAgIAorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmspOiBBIGNvbmNyZXRl
IHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyayBmb3IgYW5pbWF0aW5nIFNW
RyBpbWFnZXMuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUu
Y3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ1N2Z1NoYXBlc1N0
YWdlLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEg
YmVuY2htYXJrIG9mIHR5cGUgQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsuCisgICAgICAgIAor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9i
b3VuY2luZy1zdmctaW1hZ2VzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnSW1hZ2Up
OiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1NWR1BhcnRpY2xlIGZvciBhbmltYXRp
bmcgU1ZHIGltYWdlcy4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ1N2Z0ltYWdlc1N0YWdl
KTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdTVkdQYXJ0aWNsZXNCZW5jaG1hcmsg
Zm9yIGFuaW1hdGluZyBTVkcgaW1hZ2VzLgorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZXNTdGFn
ZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlwZSBC
b3VuY2luZ1N2Z0ltYWdlLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nU3ZnSW1hZ2VzQmVu
Y2htYXJrKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1h
cmsgZm9yIGFuaW1hdGluZyBTVkcgaW1hZ2VzLgorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZXNC
ZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUg
Qm91bmNpbmdTdmdJbWFnZXNTdGFnZS4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQu
Y3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJvdW5jaW5nU3ZnSW1hZ2VzQmVu
Y2htYXJrLgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlczogQWRkZWQuCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtZWxlY3Ryb25zLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFzLXN0YXJz
Lmh0bWw6IEFkZGVkLgorICAgICAgICBFeGFtcGxlcyB0ZXN0IHBhZ2VzLiAKKyAgICAgICAgCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXM6IEFkZGVkLgorICAg
ICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJv
bnMuanM6IEFkZGVkLgorICAgICAgICAoQ2FudmFzRWxlY3Ryb24pOiBBbiBvYmplY3Qgd2hpY2gg
ZHJhd3MgYW5kIGFuaW1hdGUgYSBlbGVjdHJvbiBvYmplY3Qgb24gYSBjYW52YXMgc3RhZ2UuCisg
ICAgICAgIChDYW52YXNFbGVjdHJvbi5wcm90b3R5cGUuX2RyYXcpOiBEcmF3cyB0aGUgZWxlY3Ry
b24gb2JqZWN0LgorICAgICAgICAoQ2FudmFzRWxlY3Ryb24ucHJvdG90eXBlLmFuaW1hdGUpOiBB
bmltYXRlcyB0aGUgZWxlY3Ryb24gb2JqZWN0LgorICAgICAgICAKKyAgICAgICAgKENhbnZhc0Vs
ZWN0cm9uc1N0YWdlKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgU3RhZ2UgZm9yIGFuaW1hdGlu
ZyBlbGVjdHJvbnMuCisgICAgICAgIChDYW52YXNFbGVjdHJvbnNTdGFnZS5wcm90b3R5cGUudHVu
ZSk6IENoYW5nZXMgdGhlIHRlc3QgYnkgYWRkaW5nIG9yIHJlbW92aW5nIGVsZW1lbnRzLgorICAg
ICAgICAoQ2FudmFzRWxlY3Ryb25zU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBBbmltYXRlcyB0
aGUgdGVzdCBlbGVtZW50cy4KKyAgICAgICAgCisgICAgICAgIChDYW52YXNFbGVjdHJvbnNBbmlt
YXRvcik6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIFN0YWdlQW5pbWF0b3IgZm9yIGFuaW1hdGlu
ZyBjYW52YXMgZWxlY3Ryb25zLgorICAgICAgICAoQ2FudmFzRWxlY3Ryb25zQW5pbWF0b3IucHJv
dG90eXBlLmFuaW1hdGUpOiBPdmVycmlkZXMgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHRvIGNsZWFy
IHRoZSBjYW52YXMgYmVmb3JlIHJlZHJhd2luZyB0aGUgc3RhZ2UuCisgICAgICAgIAorICAgICAg
ICAoQ2FudmFzRWxlY3Ryb25zQmVuY2htYXJrKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgU3Rh
Z2VCZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBlbGVjdHJvbnMuCisgICAgICAgIChDYW52YXNFbGVj
dHJvbnNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9m
IENhbnZhc0VsZWN0cm9uc1N0YWdlLgorICAgICAgICAoQ2FudmFzRWxlY3Ryb25zQmVuY2htYXJr
LnByb3RvdHlwZS5jcmVhdGVBbmltYXRvcik6IENyZWF0ZXMgYW4gYW5pbWF0b3Igb2YgdHlwZSBD
YW52YXNFbGVjdHJvbnNBbmltYXRvci4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQu
Y3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIENhbnZhc0VsZWN0cm9uc0JlbmNo
bWFyay4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNv
dXJjZXMvY2FudmFzLXN0YXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKENhbnZhc1N0YXIpOiBBbiBv
YmplY3Qgd2hpY2ggZHJhd3MgYW5kIGFuaW1hdGUgYSBzdGFyIG9iamVjdCBvbiBhIGNhbnZhcyBz
dGFnZS4KKyAgICAgICAgKENhbnZhc1N0YXIucHJvdG90eXBlLl9kcmF3KTogRHJhd3MgdGhlIHN0
YXIgb2JqZWN0LgorICAgICAgICAoQ2FudmFzU3Rhci5wcm90b3R5cGUuYW5pbWF0ZSk6IEFuaW1h
dGVzIHRoZSBzdGFyIG9iamVjdC4KKyAgICAgICAgCisgICAgICAgIChDYW52YXNTdGFyc1N0YWdl
KTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgU3RhZ2UgZm9yIGFuaW1hdGluZyBzdGFycy4KKyAg
ICAgICAgKENhbnZhc1N0YXJzU3RhZ2UucHJvdG90eXBlLnR1bmUpOiBDaGFuZ2VzIHRoZSB0ZXN0
IGJ5IGFkZGluZyBvciByZW1vdmluZyBlbGVtZW50cy4KKyAgICAgICAgKENhbnZhc1N0YXJzU3Rh
Z2UucHJvdG90eXBlLmFuaW1hdGUpOiBBbmltYXRlcyB0aGUgdGVzdCBlbGVtZW50cy4KKyAgICAg
ICAgCisgICAgICAgIChDYW52YXNTdGFyc0FuaW1hdG9yKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mg
b2YgU3RhZ2VBbmltYXRvciBmb3IgYW5pbWF0aW5nIGNhbnZhcyBzdGFycy4KKyAgICAgICAgKENh
bnZhc1N0YXJzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBPdmVycmlkZXMgdGhlIGJhc2Ug
Y2xhc3MgbWV0aG9kIHRvIGNsZWFyIHRoZSBjYW52YXMgYmVmb3JlIHJlZHJhd2luZyB0aGUgc3Rh
Z2UuCisgICAgICAgIAorICAgICAgICAoQ2FudmFzU3RhcnNCZW5jaG1hcmspOiBBIGNvbmNyZXRl
IHN1Yi1jbGFzcyBvZiBCZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBzdGFycy4KKyAgICAgICAgKENh
bnZhc1N0YXJzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFn
ZSBvZiBDYW52YXNTdGFyc1N0YWdlLgorICAgICAgICAoQ2FudmFzU3RhcnNCZW5jaG1hcmsucHJv
dG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyBhbiBhbmltYXRvciBvZiB0eXBlIENhbnZh
c1N0YXJzQW5pbWF0b3IuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6
IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBDYW52YXNTdGFyc0JlbmNobWFyay4KKworICAg
ICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgVGhpcyBk
aXJlY3RvcnkgaW5jbHVkZXMgdGhlIHNjcmlwdCB3aGljaCBpcyByZXF1aXJlZCB0byBydW4gYW4g
YWRhcHRpdmUgCisgICAgICAgIGdyYXBoaWNzIGJlbmNobWFyay4gRnJvbSBhbiBlbXB0eSB0ZXN0
IHBhZ2UsIHRoZSBzZXQgb2YgY2xhc3NlcyBpbiB0aGlzCisgICAgICAgIGRpcmVjdG9yeSBhcmUg
cmVzcG9uc2libGUgZm9yIG1lYXN1cmluZyB0aGUgY3VycmVudCBmcmFtZSByYXRlIGFuZAorICAg
ICAgICBjaGFuZ2luZyB0aGUgdGVzdCB0byByZWFjaCBhIGRlc2lyZWQgRlBTLiBJdCBrZWVwcyBh
c2tpbmcgdGhlIHRlc3QgcGFnZQorICAgICAgICB0byB0dW5lIGl0c2VsZiBieSBhIGNlcnRhaW4g
dmFsdWUgdG8gaW5jcmVhc2Ugb3IgZGVjcmVhc2UgdGhlIGZyYW1lIHJhdGUuCisgICAgICAgIEl0
J3MgYWxzbyByZXNwb25zaWJsZSBmb3Igc2FtcGxpbmcgdGhlIHRlc3Qgc3RhdGUgYW5kIHRoZSBj
b3JyZXNwb25kaW5nCisgICAgICAgIGZyYW1lIHJhdGUuCisgICAgICAgIAorICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanM6IEFkZGVkLgorICAgICAgICAoQmVuY2ht
YXJrU3RhdGUpOiBUcmFja3MgdGhlIHN0YXRlIG9mIHRoZSBiZW5jaG1hcmsgdGVzdC4KKyAgICAg
ICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5fdGltZU9mZnNldCk6IFJldHVybnMgdGhlIHRp
bWVPZmZzZXQgb2YgYSBzdGFnZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5f
bWVzc2FnZSk6IFJldHVybnMgdGhlIG1lc3NhZ2Ugb2YgYSBzdGFnZS4KKyAgICAgICAgKEJlbmNo
bWFya1N0YXRlLnByb3RvdHlwZS51cGRhdGUpOiBTZXRzIHRoZSBjdXJyZW50VGltZU9mZnNldCB0
byBhIG5ldyB2YWx1ZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5zYW1wbGlu
Z1RpbWVPZmZzZXQpOiBSZXR1cm5zIHRoZSB0aW1lT2Zmc2V0IG9mIHRoZSBzYW1wbGluZyBzdGFn
ZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5jdXJyZW50U3RhZ2UpOiBSZXR1
cm5zIHRoZSBjdXJyZW50IHN0YWdlIG9mIHRoZSBiZW5jaG1hcmsuCisgICAgICAgIChCZW5jaG1h
cmtTdGF0ZS5wcm90b3R5cGUuY3VycmVudE1lc3NhZ2UpOiBSZXR1cm5zIHRoZSBtZXNzYWdlIG9m
IHRoZSBjdXJyZW50IHN0YWdlIGFuZCB0aW1lT2Zmc2V0LgorICAgICAgICAoQmVuY2htYXJrU3Rh
dGUucHJvdG90eXBlLmN1cnJlbnRQcm9ncmVzcyk6IFJldHVybnMgYSBwZXJjZW50YWdlIG9mIGhv
dyBtdWNoIHRoZSBiZW5jaG1hcmsgaXMgcnVubmluZy4KKyAgICAgICAgCisgICAgICAgIChBbmlt
YXRvcik6IE1hbmFnZXMgYW5pbWF0aW5nIHRoZSB0ZXN0LgorICAgICAgICAoQW5pbWF0b3IucHJv
dG90eXBlLnN0YXJ0KTogQ2FsbGVkIGlmIGFuaW1hdGluZyB1c2luZyBzZXRJbnRlcnZhbCBpcyBy
ZXF1ZXN0ZWQuCisgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUudGltZURlbHRhKTogUmV0dXJu
cyB0aGUgY3VycmVudCB0aW1lRGVsdGEgCisgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUuYW5p
bWF0ZSk6IE1hbmFnZXMgdGhlIHRlc3QgYW5pbWF0aW9uLgorICAgICAgICAoQW5pbWF0b3IucHJv
dG90eXBlLmFuaW1hdGVMb29wKTogQ2FsbGVkIGlmIGFuaW1hdGluZyB1c2luZyByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUgaXMgcmVxdWVzdGVkLiAKKworICAgICAgICAoQmVuY2htYXJrKTogTWFuYWdl
cyBydW5uaW5nIHRoZSB0ZXN0IGJlbmNobWFyayBhbmQgcmVjb3JkaW5nIHRoZSBzYW1wbGVkIGRh
dGEuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnN0YXJ0KTogU3RhcnRzIHRoZSBiZW5j
aG1hcmsuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnVwZGF0ZSk6IENhbGxlZCBmcm9t
IHRoZSBhbmltYXRvci5hbmltYXRlKCkgdG8gY2hhbmdlIHRoZSBjb21wbGV4aXR5IG9mIHRoZSB0
ZXN0LgorICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS5yZWNvcmQpOiBTaG93cyB0aGUgY3Vy
cmVudCAobm90IGZpbmFsKSByZXN1bHRzIG9mIHRoZSBiZW5jaG1hcmsuCisgICAgICAgIChCZW5j
aG1hcmsucHJvdG90eXBlLnJlc29sdmVXaGVuRmluaXNoZWQpOiBTcGlucyB1bnRpbCB0aGUgYmVu
Y2htYXJrIGlzIGZpbmlzaGVkIGFuZCByZXR1cm5zIGl0cyByZXN1bHRzLgorICAgICAgICAoQmVu
Y2htYXJrLnByb3RvdHlwZS5ydW4pOiBTdGFydHMgdGhlIHRlc3QsIHJ1bnMgaXQsIHdhaXRzIHVu
dGlsIGl0IGlzIGZpbmlzaGVkIGFuZCByZXR1cm4gaXRzIHJlc3VsdHMuCisgICAgICAgICh3aW5k
b3cucnVuQmVuY2htYXJrKTogQ2FsbGVkIGZyb20gdGhlIGJlbmNobWFyayBydW5uZXIgdGhyb3Vn
aCB0aGUgc3VpdGUgY29udHJvbGxlciBydW4tY2FsbGJhY2suCisKKyAgICAgICAgKiBBbmltb21l
dGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzOiBBZGRlZC4KKyAgICAgICAgKE1hdHJpeCk6IEEg
bWF0cml4IG9iamVjdC4KKyAgICAgICAgKFZlY3RvcjMpOiBBIHZlY3RvciBvZiBzaXplIDMgb2Jq
ZWN0LgorICAgICAgICAoTWF0cml4Myk6IEEgbWF0cml4IG9mIHNpemUgM3gzIG9iamVjdC4KKyAg
ICAgICAgCisgICAgICAgIChQSURDb250cm9sbGVyKTogQ2xvc2VkLWxvb3AgY29udHJvbGxlciBm
b3IgYSBzZXQtcG9pbnQgeS4KKyAgICAgICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl9zYXQp
OiBMaW1pdHMgdGhlIG91dHB1dCB0byBhIGNlcnRhaW4gcmFuZ2UuCisgICAgICAgIChQSURDb250
cm9sbGVyLnByb3RvdHlwZS50dW5lKTogR2l2ZW4gdGhlIGN1cnJlbnQgb3V0cHV0IG9mIGEgc3lz
dGVtLCBpdCBwcm9kdWNlcyBhIG5ldyBwaWQgdmFsdWUgZm9yIHR1bmluZyBpdC4KKyAgICAgICAg
CisgICAgICAgIChLYWxtYW5Fc3RpbWF0b3IpOiBJbXBsZW1lbnQgS2FsbWFuIGZpbHRlciB0byBn
ZXQgYW4gZXN0aW1hdGUgZm9yIGEgc2FtcGxlZCBkYXRhIHBvaW50LgorICAgICAgICAoS2FsbWFu
RXN0aW1hdG9yLnByb3RvdHlwZS5lc3RpbWF0ZSk6IFJldHVybnMgYW4gZXN0aW1hdGUgZm9yIGZv
ciBhIHNhbXBsZWQgZGF0YSBwb2ludC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVz
b3VyY2VzL3V0aWxpdGllcy5qczogQWRkZWQuCisgICAgICAgICh3aW5kb3cuVXRpbGl0aWVzLl9w
YXJzZSk6IEdpdmVuIGEgc2VwYXJhdG9yIGNoYXJhY3RlciwgaXQgcGFyZXNlcyBhIHN0cmluZyB0
byBhIHNldCBvZiA8a2V5LCB2YWx1ZT4gcGFpcnMuCisgICAgICAgICh3aW5kb3cuVXRpbGl0aWVz
LnBhcnNlUGFyYW1ldGVycyk6IFBhcnNlcyBhIHRlc3QgcGFyYW1ldGVycy4KKyAgICAgICAgKHdp
bmRvdy5VdGlsaXRpZXMucGFyc2VBcmd1bWVudHMpOiBQYXJzZXMgYSB0YWcgYXJndW1lbnRzLgor
ICAgICAgICAod2luZG93LlV0aWxpdGllcy5leHRlbmRPYmplY3QpOiBBZGRzIHRoZSBhdHRyaWJ1
dGVzIGFuZCB0aGVpciB2YWx1ZXMgb2YgYW4gb2JqZWN0IHRvIGFub3RoZXIgb2JqZWN0LgorICAg
ICAgICAod2luZG93LlV0aWxpdGllcy5jb3B5T2JqZWN0KTogQ29waWVzIHRoZSBhdHRyaWJ1dGVz
IGFuZCB0aGVpciB2YWx1ZXMgb2YgYW4gb2JqZWN0IHRvIGEgbmV3IG9iamVjdC4KKyAgICAgICAg
KHdpbmRvdy5VdGlsaXRpZXMubWVyZ2VPYmplY3RzKTogQ29waWVzIHRoZSBhdHRyaWJ1dGVzIGFu
ZCB0aGVpciB2YWx1ZXMgb2YgdHdvIG9iamVjdHMgdG8gYSBuZXcgb2JqZWN0LgorICAgICAgICAo
d2luZG93LlV0aWxpdGllcy5jcmVhdGVTdmdFbGVtZW50KTogQ3JlYXRlcyBhbiBTVkdFbGVtZW50
IGdpdmVuIGl0cyBuYW1lIGFuZCBpdHMgYXR0cmlidXRlcy4KKyAgICAgICAgCisgICAgICAgICog
QW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuY3NzOiBBZGRlZC4KKyAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qczogQWRkZWQuCisgICAgICAgIChSb3Rh
dGVyKTogTWFuYWdlcyByb3RhdGluZyBhbiBhbmdsZSB3aXRoaW4gYSBmaXhlZCB0aW1lIGludGVy
dmFsLgorICAgICAgICAoUm90YXRlci5wcm90b3R5cGUuZ2V0IGludGVydmFsKTogUmV0dXJucyB0
aGUgdGltZSBpbnRlcnZhbCB3aGljaCBpcyByZXF1aXJlZCB0byByb3RhdGUgMzYwIGRlZ3JlZXMu
CisgICAgICAgIChSb3RhdGVyLnByb3RvdHlwZS5uZXh0KTogTW92ZXMgdGhlIGN1cnJlbnQgdGlt
ZSBieSBhIGRlbHRhLgorICAgICAgICAoUm90YXRlci5wcm90b3R5cGUuZGVncmVlKTogUmV0dXJu
cyB0aGUgY3VycmVudCByb3RhdGluZyBkZWdyZWUuCisgICAgICAgIChSb3RhdGVyLnByb3RvdHlw
ZS5yb3RhdGVaKTogUmV0dXJucyBDU1MgZm9ybWF0dGVkIHRyYW5zZm9ybSByb3RhdGVaKCkgc3Ry
aW5nIGZvciB0aGUgY3VycmVudCBkZWdyZWUuCisgICAgICAgIChSb3RhdGVyLnByb3RvdHlwZS5y
b3RhdGUpOiBSZXR1cm5zIFNWRyBmb3JtYXR0ZWQgdHJhbnNmb3JtIHJvdGF0ZSgpIHN0cmluZyBm
b3IgdGhlIGN1cnJlbnQgZGVncmVlLgorICAgICAgICAKKyAgICAgICAgKFN0YWdlKTogQSBiYXNl
IGNsYXNzIGZvciBtYW5hZ2luZyB0aGUgdGVzdCBjb21wbGV4aXR5IGFuZCB0ZXN0IGFuaW1hdGlv
bi4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5nZXQgc2l6ZSk6IFJldHVybnMgdGhlIHNpemUg
b2YgdGhlIHN0YWdlIGV4Y2x1ZGluZyB0aGUgQ1NTIHBhZGRpbmcuCisgICAgICAgIChTdGFnZS5w
cm90b3R5cGUucmFuZG9tKTogUmV0dXJucyBhIHJhbmRvbSBmbG9hdC4KKyAgICAgICAgKFN0YWdl
LnByb3RvdHlwZS5yYW5kb21JbnQpOiBSZXR1cm5zIGEgcmFuZG9tIGludGVnZXIuCisgICAgICAg
IChTdGFnZS5wcm90b3R5cGUucmFuZG9tUG9zaXRpb24pOiBSZXR1cm5zIGEgcmFuZG9tIHBvc2l0
aW9uLgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLnJhbmRvbVNxdWFyZVNpemUpOiBSZXR1cm5z
IGEgc3F1YXJlIHNpemUuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tVmVsb2NpdHkp
OiBSZXR1cm5zIGEgcmFuZG9tIHZlbG9jaXR5LgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLnJh
bmRvbUFuZ2xlKTogUmV0dXJucyBhIHJhbmRvbSBhbmdsZS4KKyAgICAgICAgKFN0YWdlLnByb3Rv
dHlwZS5yYW5kb21Db2xvcik6IFJldHVybnMgYSByYW5kb20gY29sb3Igbm90IHRvbyBkYXJrIGFu
ZCBub3QgdG9vIGxpZ2h0LgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLnJhbmRvbVJvdGF0ZXIp
OiBDcmVhdGVzIGEgcmFuZG9tIHJvdGF0ZXIuIEl0cyB2ZWxvY2l0eSBkZXBlbmRzIG9uIGNob29z
aW5nIGEgcmFuZG9tIHJvdGF0aW9uIHRpbWUgaW50ZXJ2YWwuCisgICAgICAgIChTdGFnZS5wcm90
b3R5cGUudHVuZSk6IEEgbm90LWltcGxlbWVudGVkIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbi4K
KyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5hbmltYXRlKTogQSBub3QtaW1wbGVtZW50ZWQgdmVy
c2lvbiBvZiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLmNsZWFyKTog
Q2xlYXJzIHRoZSBzdGFnZSBmcm9tIGFsbCBpdHMgYW5pbWF0aW9uIGVsZW1lbnRzLgorICAgICAg
ICAKKyAgICAgICAgKFN0YWdlQW5pbWF0b3IpOiBBIGJhc2UgY2xhc3MgZm9yIHRoZSBzdGFnZS1i
YXNlZCBhbmltYXRvcnMuCisgICAgICAgIChTdGFnZUFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRl
KTogQ2FsbHMgQW5pbWF0b3IuYW5pbWF0ZSgpIHdoaWNoIHVwZGF0ZXMgdGhlIHRlc3QgcGFnZSBh
bmQgdGhlbiBjYWxscyBTdGFnZS5hbmltYXRlKCkgdG8gZm9yY2UgcmVkcmF3LgorICAgICAgICAK
KyAgICAgICAgKFN0YWdlQmVuY2htYXJrKTogQSBiYXNlIGNsYXNzIGZvciB0aGUgc3RhZ2UtYmFz
ZWQgYmVuY2htYXJrcy4KKyAgICAgICAgKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVT
dGFnZSk6IENyZWF0ZXMgdGhlIGRlZmF1bHQgc3RhZ2UuCisgICAgICAgIChTdGFnZUJlbmNobWFy
ay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBDcmVhdGVzIHRoZSBkZWZhdWx0IGFuaW1hdG9y
LgorICAgICAgICAoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLnR1bmUpOiBEZWxlZ2F0ZXMgdGhl
IGNhbGwgdG8gc3RhZ2UuCisgICAgICAgIChTdGFnZUJlbmNobWFyay5wcm90b3R5cGUuY2xlYXIp
OiBEZWxlZ2F0ZXMgdGhlIGNhbGwgdG8gc3RhZ2UuCisgICAgICAgIChTdGFnZUJlbmNobWFyay5w
cm90b3R5cGUuc2hvd1Jlc3VsdHMpOiBTaG93cyB0aGUgcmVzdWx0cy9wcm9ncmVzcyB0aHJvdWdo
IGl0cyByZWNvcmRUYWJsZSBhbmQgcHJvZ3Jlc3NCYXIuCisgICAgICAgIAorICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnBuZzogQWRkZWQuCisgICAgICAgICog
QW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcuc3ZnOiBBZGRlZC4KKyAgICAgICAg
VGhlc2UgaW1hZ2VzIGFyZSBzaGFyZWQgYW1vbmcgYWxsIHRoZSB0ZXN0cy4KKyAgICAgICAgCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZTogQWRkZWQuCisgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXM6IEFkZGVkLgorICAgICAgICBUaGlzIGRp
cmVjdG9yeSBpbmNsdWRlcyB0ZW1wbGF0ZSB0ZXN0cyB3aGljaCBkbyBub3RoaW5nLiBUaGV5IGNh
biBiZSB1c2VkCisgICAgICAgIHRvIGF1dGhvciBuZXcgdGVzdHMuIEFuaW1hdGVkIGl0ZW1zIGNh
biBiZSBjcmVhdGVkLCBtb3ZlZCBhbmQgcmVkcmF3biBieQorICAgICAgICByZW1vdmluZyB0aGUg
VE9ETyBjb21tZW50cyBpbiB0aGUgc2NyaXB0IGZpbGVzIGFuZCB3cml0aW5nIGFjdHVhbCBjb2Rl
LgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jc3MuaHRt
bDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1j
YW52YXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90
ZW1wbGF0ZS1zdmcuaHRtbDogQWRkZWQuCisgICAgICAgIFRlbXBsYXRlIHRlc3QgcGFnZXMuIFRo
ZXkgY2FuIGJlIHVzZWQgYXMgdGhleSBhcmUuIENTUyBhdHRyaWJ1dGVzIG9yIGhpZGRlbgorICAg
ICAgICBlbGVtZW50cyBjYW4gYmUgYWRkZWQgdG8gdGhlc2UgZGVyaXZlZCB0ZXN0IHBhZ2VzIGlm
IG5lZWRlZC4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9y
ZXNvdXJjZXMvdGVtcGxhdGUtY3NzLmpzOiBBZGRlZC4KKyAgICAgICAgCisgICAgICAgIChUZW1w
bGF0ZUNzc1N0YWdlKTogQSBzdGFnZSB0byBjcmVhdGUgYW5kIGFuaW1hdGUgSFRNTEVsZW1lbnRz
LgorICAgICAgICAoVGVtcGxhdGVDc3NTdGFnZS5wcm90b3R5cGUudHVuZSk6IENoYW5nZXMgdGhl
IHRlc3QgYnkgYWRkaW5nIG9yIHJlbW92aW5nIGVsZW1lbnRzLgorICAgICAgICAoVGVtcGxhdGVD
c3NTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IEFuaW1hdGVzIHRoZSB0ZXN0IGVsZW1lbnRzLgor
ICAgICAgICAoVGVtcGxhdGVDc3NCZW5jaG1hcmspOiAKKyAgICAgICAgKFRlbXBsYXRlQ3NzQmVu
Y2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgdGhlIHRlc3Qgc3RhZ2UuCisg
ICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1h
cmsgb2YgdHlwZSBUZW1wbGF0ZUNzc0JlbmNobWFyay4KKyAgICAgICAgCisgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKFRlbXBsYXRlQ2FudmFzT2JqZWN0KToKKyAgICAgICAgKFRlbXBsYXRlQ2Fu
dmFzT2JqZWN0LnByb3RvdHlwZS5fZHJhdyk6IERyYXdzIHRoZSBvYmplY3RzIG9uIHRoZSBjYW52
YXMgY29udGV4dC4KKyAgICAgICAgKFRlbXBsYXRlQ2FudmFzT2JqZWN0LnByb3RvdHlwZS5hbmlt
YXRlKTogTW92ZXMgYW5kIHJlZHJhd3MgdGhlIG9iamVjdC4KKyAgICAgICAgKFRlbXBsYXRlQ2Fu
dmFzU3RhZ2UpOiBBIHN0YWdlIHRvIGNyZWF0ZSBhbmQgYW5pbWF0ZSBkcmF3aW5nIGVsZW1lbnRz
LgorICAgICAgICAoVGVtcGxhdGVDYW52YXNTdGFnZS5wcm90b3R5cGUudHVuZSk6IGhhbmdlcyB0
aGUgdGVzdCBieSBhZGRpbmcgb3IgcmVtb3ZpbmcgZWxlbWVudHMuCisgICAgICAgIChUZW1wbGF0
ZUNhbnZhc1N0YWdlLnByb3RvdHlwZS5hbmltYXRlKTogIEFuaW1hdGVzIHRoZSB0ZXN0IGVsZW1l
bnRzLgorICAgICAgICAoVGVtcGxhdGVDYW52YXNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6
IFN0YXJ0cyB0aGUgYW5pbWF0aW9uIGV2ZXJ5IGZyYW1lLgorICAgICAgICAoVGVtcGxhdGVDYW52
YXNCZW5jaG1hcmspOiAKKyAgICAgICAgKFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlw
ZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIFRlbXBsYXRlQ2FudmFzU3Rh
Z2UuCisgICAgICAgIChUZW1wbGF0ZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5p
bWF0b3IpOiBDcmVhdGVzIGEgYW5pbWF0b3Igb2YgdHlwZSBUZW1wbGF0ZUNhbnZhc0FuaW1hdG9y
LgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVu
Y2htYXJrIG9mIHR5cGUgVGVtcGxhdGVDYW52YXNCZW5jaG1hcmsuCisgICAgICAgIAorICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLXN2Zy5qczog
QWRkZWQuCisgICAgICAgIChUZW1wbGF0ZVN2Z1N0YWdlKTogQSBzdGFnZSB0byBjcmVhdGUgYW5k
IGFuaW1hdGUgU1ZHRWxlbWVudHMuCisgICAgICAgIChUZW1wbGF0ZVN2Z1N0YWdlLnByb3RvdHlw
ZS50dW5lKTogQ2hhbmdlcyB0aGUgdGVzdCBieSBhZGRpbmcgb3IgcmVtb3ZpbmcgZWxlbWVudHMu
CisgICAgICAgIChUZW1wbGF0ZVN2Z1N0YWdlLnByb3RvdHlwZS5hbmltYXRlKTogQW5pbWF0ZXMg
dGhlIHRlc3QgZWxlbWVudHMuCisgICAgICAgIChUZW1wbGF0ZVN2Z0JlbmNobWFyay5wcm90b3R5
cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBUZW1wbGF0ZVN2Z1N0YWdl
LgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVu
Y2htYXJrIG9mIHR5cGUgVGVtcGxhdGVTdmdCZW5jaG1hcmsuCisgICAgICAgIAorICAgICAgICAq
IEFuaW1vbWV0ZXIvdGVzdHMvdGV4dDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0
cy90ZXh0L3Jlc291cmNlczogQWRkZWQuCisgICAgICAgIFRoaXMgZGlyZWN0b3J5IGluY2x1ZGVz
IHRoZSB0ZXh0IGFuaW1hdGluZyB0ZXN0cyB3aGljaCBjdXJyZW50bHkgcnVucworICAgICAgICBv
biBDU1Mgc3RhZ2Ugb25seS4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90
ZXh0L2xheWVyaW5nLXRleHQuaHRtbDogQWRkZWQuCisgICAgICAgIFRleHQgdGVzdCBwYWdlLgor
ICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVy
aW5nLXRleHQuanM6IEFkZGVkLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UpOiBSZXByZXNl
bnRzIHRoZSBjb250YWluZXIgb2YgYWxsIHRoZSBzdGFja2VkIHRleHQgbGF5ZXJzLgorICAgICAg
ICAoTGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VUZXh0SXRlbSk6IFBhcnNlcyBhIHRleHRJdGVtIHdo
aWNoIG1heSBiZSBhbiBvcGVuaW5nIHRhZywgYSBjbG9zaW5nIHRhZyBvciBhIHNlbGYtY2xvc2lu
ZyB0YWcuCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5pc09wZW5pbmdUZXh0SXRlbSk6IFJl
dHVybnMgdHJ1ZSBpZiB0aGUgdGV4dEl0ZW0gaXMgYW4gb3BlbmluZyB0YWcgZS5nLiAnPG9sPicu
CisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5pc0Nsb3NpbmdUZXh0SXRlbSk6IFJldHVybnMg
dHJ1ZSBpZiAgdGhlIHRleHRJdGVtIGlzIGFuIGNsb3NpbmcgdGFnIGUuZy4gJzwvb2w+LgorICAg
ICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MuTGF5ZXJpbmdUZXh0U3RhZ2Uu
dGV4dEl0ZW1zLm1hcCk6IENhbGN1bGF0ZXMgYW5kIHN0b3JlcyBpc09wZW5pbmcgYW5kIGlzQ2xv
c2luZyBmbGFncyBmb3IgZWFjaCB0ZXh0SXRlbS4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdl
LmlzQ29sb3JhYmxlVGV4dEl0ZW0pOiBSZXR1cm5zIHRydWUgaWYgdGhlIHRleHRJdGVtIGlzIHNl
bGYtY2xvc2luZyB0YWcgZS5nLiAnPHA+Li4uPC9wPicuCisgICAgICAgIChMYXllcmluZ1RleHRT
dGFnZS5pc0luc2VydGFibGVUZXh0SXRlbSk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgdGV4dEl0ZW1z
IGNhdXNlcyBhIG5ldyBlbGVtZW50IHRvIGJlIGFkZGVkIHRvIHRoZSB0ZXh0IGxheWVycy4KKyAg
ICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmNvbG9yYWJsZVRleHRJdGVtcy5MYXllcmluZ1RleHRT
dGFnZS50ZXh0SXRlbXNGbGFncy5maWx0ZXIpOiBOdW1iZXIgb2YgY29sb3JhYmxlIHRleHRJdGVt
cy4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmluc2VydGFibGVUZXh0SXRlbXMuTGF5ZXJp
bmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MuZmlsdGVyKTogTnVtYmVyIG9mIGluc2VydGFibGUg
dGV4dEl0ZW1zLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuY29sb3JJbmRleFRvVGV4dEVs
ZW1lbnRJbmRleCk6IE1hcHMgZnJvbSBjb2xvckluZGV4IFswLi5jb2xvcmFibGVUZXh0SXRlbXMt
MV0gdG8gdGV4dEVsZW1lbnRJbmRleCBbMC4uaW5zZXJ0YWJsZVRleHRJdGVtcy0xXS4KKyAgICAg
ICAgKExheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fbmV4dFRleHRJdGVtKTogTW92ZXMgdGhl
IF90ZXh0SXRlbUluZGV4IG9uZSBzdGVwIGZvcndhcmQgaW4gYSBsb29wIFswLi5MYXllcmluZ1Rl
eHRTdGFnZS50ZXh0SXRlbXMubGVuZ3RoLTFdLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2Uu
cHJvdG90eXBlLl9wcmV2aW91c1RleHRJdGVtKTogTW92ZXMgdGhlIF90ZXh0SXRlbUluZGV4IG9u
ZSBzdGVwIGJhY2t3YXJkIGluIGEgbG9vcC4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLnBy
b3RvdHlwZS5fcHVzaFRleHRFbGVtZW50KTogQ3JlYXRlcyBhIG5ldyB0ZXh0SXRlbUVsZW1lbnQg
YW5kIGFkZHMgaXQgdG8gdGhlIHRvcG1vc3QgY29udGFpbmVyIDxkaXY+LgorICAgICAgICAoTGF5
ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9wb3BUZXh0RWxlbWVudCk6IFJlbW92ZXMgdGhlIGxh
c3QgdGV4dEl0ZW1FbGVtZW50IGZyb20gdGhlIHRvcG1vc3QgY29udGFpbmVyIDxkaXY+LgorICAg
ICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9jb2xvclRleHRJdGVtKTogQ2hhbmdl
cyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBhIHNpbmdsZSBjb2xvcmFibGUgdGV4dEVsZW1lbnQu
IFRoZSBpbmRleCBhZHZhbmNlcyBpbiBhIGNpcmNsZSBbMC4uY29sb3JhYmxlVGV4dEl0ZW1zLTFd
LgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBDaGFuZ2Vz
IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGFuZCB0aGUgdGV4dCBjb2xvciBvZiB0aGUgdGV4dEVsZW1l
bnRzIHN1Y2ggdGhhdCBhIHJlZHJhdyBpcyBlbmZvcmNlZC4KKyAgICAgICAgKExheWVyaW5nVGV4
dFN0YWdlLnByb3RvdHlwZS50dW5lKTogQWRkcyBvciByZW1vdmVzIHRleHRFbGVtZW50cyB0byB0
aGUgc3RhZ2UuCisKKyAgICAgICAgKExheWVyaW5nVGV4dEJlbmNobWFyayk6IFJ1bnMgdGhlIGJl
bmNobWFyayBmb3IgdGhlIGxheWVyaW5nIHRleHQgdGVzdC4KKyAgICAgICAgKExheWVyaW5nVGV4
dEJlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlw
ZSBMYXllcmluZ1RleHRTdGFnZS4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3Jl
YXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIExheWVyaW5nVGV4dEJlbmNobWFyay4K
KwogMjAxNS0xMC0wMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCB0aGUgdGVzdCBydW5uZXIgZm9yIGEgbmV3IGEgZ3JhcGhpY3MgYmVu
Y2htYXJrCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL2FuaW1vbWV0
ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVy
L2FuaW1vbWV0ZXIuaHRtbAkocmV2aXNpb24gMTkwNTI2KQorKysgUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYg
KzI0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD0iaHRtbC1zdWl0
ZSIgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+IEhUTUwgZWxlbWVudHMgc3VpdGU8L2xhYmVsPjxi
cj4KICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD0iY2FudmFzLXN1aXRlIiB0
eXBlPSJjaGVja2JveCIgY2hlY2tlZD4gQ2FudmFzIGRyYXdpbmdzIHN1aXRlPC9sYWJlbD48YnI+
CiAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48aW5wdXQgaWQ9InN2Zy1zdWl0ZSIgdHlwZT0i
Y2hlY2tib3giIGNoZWNrZWQ+IFNWRyBlbGVtZW50cyBzdWl0ZTwvbGFiZWw+PGJyPgorICAgICAg
ICAgICAgICAgICAgICA8bGFiZWw+PGlucHV0IGlkPSJleGFtcGxlcy1zdWl0ZSIgdHlwZT0iY2hl
Y2tib3giPiBFeGFtcGxlcyBzdWl0ZTwvbGFiZWw+PGJyPgogICAgICAgICAgICAgICAgICAgICA8
bGFiZWw+PGlucHV0IGlkPSJ0ZW1wbGF0ZS1zdWl0ZSIgdHlwZT0iY2hlY2tib3giPiBUZW1wbGF0
ZSBzdWl0ZTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAg
PGRpdj4KQEAgLTMxLDYgKzMyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkZyYW1l
IHJhdGU6IDxpbnB1dCBpZD0iZnJhbWUtcmF0ZSIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iNTAiPiBm
cHM8L2xhYmVsPjxicj4KICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD0iZXN0
aW1hdGVkLWZyYW1lLXJhdGUiIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPiBFc3RpbWF0ZWQgRnJh
bWUgUmF0ZTwvbGFiZWw+PGJyPgogICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PGlucHV0IGlk
PSJmaXgtdGVzdC1jb21wbGV4aXR5IiB0eXBlPSJjaGVja2JveCI+IEZpeCB0ZXN0IGNvbXBsZXhp
dHkgYWZ0ZXIgd2FybXVwPC9sYWJlbD4KKyAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjxpbnB1
dCBpZD0ic2hvdy1ydW5uaW5nLXJlc3VsdHMiIHR5cGU9ImNoZWNrYm94Ij4gU2hvdyBydW5uaW5n
IHJlc3VsdHM8L2xhYmVsPgogICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgPC9k
aXY+CiAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b25zIj4KSW5kZXg6IFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9t
ZXRlci5qcwkocmV2aXNpb24gMTkwNTI2KQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qcwkod29ya2luZyBjb3B5KQpAQCAtNjMsNiAr
NjMsNyBAQCBmdW5jdGlvbiBzdGFydEJlbmNobWFyaygpCiAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJodG1sLXN1aXRlIiksIAogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY2FudmFzLXN1aXRlIiksIAogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3Zn
LXN1aXRlIiksCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJleGFtcGxlcy1zdWl0
ZSIpLAogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVtcGxhdGUtc3VpdGUiKSwK
ICAgICBdOwogICAgIHZhciBlbmFibGVkU3VpdGVzID0gU3VpdGVzLmZpbHRlcihmdW5jdGlvbiAo
c3VpdGUsIGluZGV4KSB7IHJldHVybiAhc3VpdGUuZGlzYWJsZWQgJiYgY2hlY2tib3hlc1tpbmRl
eF0uY2hlY2tlZDsgfSk7CkBAIC03Miw2ICs3MywxMSBAQCBmdW5jdGlvbiBzdGFydEJlbmNobWFy
aygpCiAgICAgYmVuY2htYXJrUnVubmVyQ2xpZW50Lm9wdGlvbnNbImZyYW1lUmF0ZSJdID0gcGFy
c2VJbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyYW1lLXJhdGUiKS52YWx1ZSk7CiAgICAg
YmVuY2htYXJrUnVubmVyQ2xpZW50Lm9wdGlvbnNbImVzdGltYXRlZEZyYW1lUmF0ZSJdID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVzdGltYXRlZC1mcmFtZS1yYXRlIikuY2hlY2tlZDsgICAg
CiAgICAgYmVuY2htYXJrUnVubmVyQ2xpZW50Lm9wdGlvbnNbImZpeFRlc3RDb21wbGV4aXR5Il0g
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZml4LXRlc3QtY29tcGxleGl0eSIpLmNoZWNrZWQ7
CisgICAgYmVuY2htYXJrUnVubmVyQ2xpZW50Lm9wdGlvbnNbInNob3dSdW5uaW5nUmVzdWx0cyJd
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNob3ctcnVubmluZy1yZXN1bHRzIikuY2hlY2tl
ZDsKKyAgICAKKyAgICBpZiAoIWJlbmNobWFya1J1bm5lckNsaWVudC5vcHRpb25zWyJzaG93UnVu
bmluZ1Jlc3VsdHMiXSkKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlY29yZCIp
LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisKICAgICB2YXIgcnVubmVyID0gbmV3IEJlbmNobWFy
a1J1bm5lcihlbmFibGVkU3VpdGVzLCBiZW5jaG1hcmtSdW5uZXJDbGllbnQpOwogICAgIHJ1bm5l
ci5ydW5NdWx0aXBsZUl0ZXJhdGlvbnMoYmVuY2htYXJrUnVubmVyQ2xpZW50Lml0ZXJhdGlvbkNv
dW50KTsKIH0KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3Vy
Y2VzL3Rlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9y
dW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwyMzIgQEAKK3ZhciBUaXRsZXMgPSBbCisgICAgeworICAgICAgICB0ZXh0OiAiVGVz
dCBOYW1lIiwKKyAgICAgICAgd2lkdGg6IDI1LAorICAgICAgICBjaGlsZHJlbjogW10KKyAgICB9
LAorICAgIHsKKyAgICAgICAgdGV4dDogIkFuaW1hdGVkIEl0ZW1zIiwKKyAgICAgICAgd2lkdGg6
IDMxLAorICAgICAgICBjaGlsZHJlbjoKKyAgICAgICAgWworICAgICAgICAgICAgeyB0ZXh0OiAg
ICJBdmcuIiwgd2lkdGg6IDYsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAi
XHUwMGIxIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAg
ICJXLjUlIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAg
ICJTdGQuIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAg
ICAgICIlIiwgd2lkdGg6IDUsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICBdCisgICAgfSwKKyAg
ICB7CisgICAgICAgIHRleHQ6ICJGUFMiLAorICAgICAgICB3aWR0aDogMzEsCisgICAgICAgIGNo
aWxkcmVuOgorICAgICAgICBbCisgICAgICAgICAgICB7IHRleHQ6ICAgIkF2Zy4iLCB3aWR0aDog
NiwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICJcdTAwYjEiLCB3aWR0aDog
NSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICAgIlcuNSUiLCB3aWR0aDog
NSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICAgIlN0ZC4iLCB3aWR0aDog
NSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICAgICAgIiUiLCB3aWR0aDog
NSwgY2hpbGRyZW46IFtdIH0sCisgICAgICAgIF0KKyAgICB9LAorICAgIHsKKyAgICAgICAgdGV4
dDogIlNjb3JlIiwKKyAgICAgICAgd2lkdGg6IDYsCisgICAgICAgIGNoaWxkcmVuOiBbXQorICAg
IH0sCisgICAgeworICAgICAgICB0ZXh0OiAiU2FtcGxlcyIsCisgICAgICAgIHdpZHRoOiA3LAor
ICAgICAgICBjaGlsZHJlbjogW10KKyAgICB9CitdOworCit2YXIgU3VpdGVzID0gW107CisKK1N1
aXRlcy5wdXNoKHsKKyAgICBuYW1lOiAiSFRNTCBCb3VuY2luZyBQYXJ0aWNsZXMiLAorICAgIHBy
ZXBhcmU6IGZ1bmN0aW9uKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgiI3N0YWdlIikudGhl
bihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAg
ICAgIH0pOworICAgIH0sCisgICAgCisgICAgcnVuOiBmdW5jdGlvbihjb250ZW50V2luZG93LCB0
ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCisgICAgeworICAgICAgICBy
ZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhpcywgdGVzdCwgb3B0aW9ucywgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICB9LAorCisgICAgdGl0bGVzOiBUaXRsZXMsCisg
ICAgdGVzdHM6IFsKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEw
MCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9
Y2lyY2xlIiwKKyAgICAgICAgICAgIG5hbWU6ICJDU1MgYm91bmNpbmcgY2lyY2xlcyIKKyAgICAg
ICAgfSwKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1v
dmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9NDAmcGFydGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZj
bGlwPXN0YXIiLAorICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBjbGlwcGVkIHJlY3Rz
IgorICAgICAgICB9LAorICAgICAgICB7IAorICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbD9nYWluPTEmYWRkTGltaXQ9
MTAwJnJlbW92ZUxpbWl0PTUmcGFydGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFw
ZT1jaXJjbGUmZmlsbD1ncmFkaWVudCIsCisgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5n
IGdyYWRpZW50IGNpcmNsZXMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVy
bDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWw/
Z2Fpbj0wLjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0yJnBhcnRpY2xlV2lkdGg9ODAmcGFydGlj
bGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAg
ICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIFNWRyBpbWFnZXMiCisgICAgICAgIH0sCisgICAgICAg
IHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2lu
Zy1jc3MtaW1hZ2VzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRp
Y2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15
YW5nLnBuZyIsCisgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIFBORyBpbWFnZXMiCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL3RleHQvbGF5
ZXJpbmctdGV4dC5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwIiwKKyAg
ICAgICAgICAgIG5hbWU6ICJDU1MgbGF5ZXJpbmcgdGV4dCIKKyAgICAgICAgfSwKKyAgICBdCit9
KTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICJDYW52YXMgQm91bmNpbmcgUGFydGljbGVz
IiwKKyAgICBwcmVwYXJlOiBmdW5jdGlvbihydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnRE
b2N1bWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoIiNz
dGFnZSIpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBlbGVt
ZW50OworICAgICAgICB9KTsKKyAgICB9LCAgCisgICAgCisgICAgcnVuOiBmdW5jdGlvbihjb250
ZW50V2luZG93LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCisgICAg
eworICAgICAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhpcywgdGVzdCwg
b3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICB9LAorICAgIAorICAgIHRp
dGxlczogVGl0bGVzLAorICAgIHRlc3RzOiBbCisgICAgICAgIHsgCisgICAgICAgICAgICB1cmw6
ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1s
P2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTEyJnBh
cnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFz
IGJvdW5jaW5nIGNpcmNsZXMiCisgICAgICAgIH0sCisgICAgICAgIHsgCisgICAgICAgICAgICB1
cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5o
dG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTQw
JnBhcnRpY2xlSGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKKyAgICAgICAgICAgIG5h
bWU6ICJjYW52YXMgYm91bmNpbmcgY2xpcHBlZCByZWN0cyIKKyAgICAgICAgfSwKKyAgICAgICAg
eyAKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2lu
Zy1jYW52YXMtc2hhcGVzLmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAw
JnBhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3Jh
ZGllbnQiLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBncmFkaWVudCBjaXJj
bGVzIgorICAgICAgICB9LAorICAgICAgICB7IAorICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbD9nYWluPTAuNCZh
ZGRMaW1pdD01JnJlbW92ZUxpbWl0PTEmcGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04
MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKKyAgICAgICAgICAgIG5hbWU6
ICJjYW52YXMgYm91bmNpbmcgU1ZHIGltYWdlcyIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZh
cy1pbWFnZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwMCZyZW1vdmVMaW1pdD0xMDAwJnBhcnRp
Y2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15
YW5nLnBuZyIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIFBORyBpbWFnZXMi
CisgICAgICAgIH0sCisgICAgXQorfSk7CisKK1N1aXRlcy5wdXNoKHsKKyAgICBuYW1lOiAiU1ZH
IEJvdW5jaW5nIFBhcnRpY2xlcyIsCisgICAgcHJlcGFyZTogZnVuY3Rpb24ocnVubmVyLCBjb250
ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gcnVubmVy
LndhaXRGb3JFbGVtZW50KCIjc3RhZ2UiKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAg
ICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAgfSwKKyAgICAKKyAgICBy
dW46IGZ1bmN0aW9uKGNvbnRlbnRXaW5kb3csIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBw
cm9ncmVzc0JhcikKKyAgICB7CisgICAgICAgIHJldHVybiBjb250ZW50V2luZG93LnJ1bkJlbmNo
bWFyayh0aGlzLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAg
IH0sCisgICAgCisgICAgdGl0bGVzOiBUaXRsZXMsCisgICAgdGVzdHM6IFsKKyAgICAgICAgewor
ICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2
Zy1zaGFwZXMuaHRtbD9nYWluPTYmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMDAmcGFydGlj
bGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUiLAorICAgICAgICAgICAg
bmFtZTogIlNWRyBib3VuY2luZyBjaXJjbGVzIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1z
aGFwZXMuaHRtbD9nYWluPTAuNiZhZGRMaW1pdD0xMCZyZW1vdmVMaW1pdD0xJnBhcnRpY2xlV2lk
dGg9NDAmcGFydGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAorICAgICAgICAg
ICAgbmFtZTogIlNWRyBib3VuY2luZyBjbGlwcGVkIHJlY3RzIiwKKyAgICAgICAgfSwKKyAgICAg
ICAgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5j
aW5nLXN2Zy1zaGFwZXMuaHRtbD9nYWluPTAuOCZhZGRMaW1pdD0xMCZyZW1vdmVMaW1pdD00JnBh
cnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3JhZGll
bnQiLAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBncmFkaWVudCBjaXJjbGVzIgor
ICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sP2dhaW49MC40JmFkZExpbWl0PTUm
cmVtb3ZlTGltaXQ9MiZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3Jj
PS4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciLAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3Vu
Y2luZyBTVkcgaW1hZ2VzIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6
ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sP2dh
aW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xl
SGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5wbmciLAorICAgICAgICAg
ICAgbmFtZTogIlNWRyBib3VuY2luZyBQTkcgaW1hZ2VzIgorICAgICAgICB9LAorICAgIF0KK30p
OworCitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogIk1vcmUgY29tcGxleCBleGFtcGxlcyIsCisg
ICAgcHJlcGFyZTogZnVuY3Rpb24ocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1l
bnQpCisgICAgeworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCIjc3RhZ2Ui
KS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsK
KyAgICAgICAgfSk7CisgICAgfSwKKyAgICAKKyAgICBydW46IGZ1bmN0aW9uKGNvbnRlbnRXaW5k
b3csIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKKyAgICB7CisgICAg
ICAgIHJldHVybiBjb250ZW50V2luZG93LnJ1bkJlbmNobWFyayh0aGlzLCB0ZXN0LCBvcHRpb25z
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIH0sCisgICAgCisgICAgdGl0bGVzOiBU
aXRsZXMsCisgICAgdGVzdHM6IFsKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVz
dHMvZXhhbXBsZXMvY2FudmFzLWVsZWN0cm9ucy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVt
b3ZlTGltaXQ9MTAiLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBlbGVjdHJvbnMiCisgICAg
ICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2V4YW1wbGVzL2Nh
bnZhcy1zdGFycy5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSIsCisgICAg
ICAgICAgICBuYW1lOiAiY2FudmFzIHN0YXJzIgorICAgICAgICB9LAorICAgIF0KK30pOworCitT
dWl0ZXMucHVzaCh7CisgICAgbmFtZTogIlN0YWdlIFRlbXBsYXRlcyAoQ2FuIGJlIHVzZWQgZm9y
IG5ldyB0ZXN0cykiLAorICAgIHByZXBhcmU6IGZ1bmN0aW9uKHJ1bm5lciwgY29udGVudFdpbmRv
dywgY29udGVudERvY3VtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9y
RWxlbWVudCgiI3N0YWdlIikudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAg
cmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAgCisgICAgcnVuOiBmdW5j
dGlvbihjb250ZW50V2luZG93LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NC
YXIpCisgICAgeworICAgICAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhp
cywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICB9LAorICAg
IAorICAgIHRpdGxlczogVGl0bGVzLAorICAgIHRlc3RzOiBbCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHVybDogIi4uL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNzcy5odG1sP2dhaW49MSZhZGRM
aW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSIsCisgICAgICAgICAgICBuYW1lOiAiQ1NTIHRlbXBsYXRl
IgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy90ZW1w
bGF0ZS90ZW1wbGF0ZS1jYW52YXMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0
PTEwMDAiLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyB0ZW1wbGF0ZSIKKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUt
c3ZnLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JjxvdGhlcl9wYXJhbXRl
cj49PHZhbHVlPiIsCisgICAgICAgICAgICBuYW1lOiAiU1ZHIHRlbXBsYXRlIgorICAgICAgICB9
LAorICAgIF0KK30pOworCitmdW5jdGlvbiBzdWl0ZUZyb21OYW1lKG5hbWUpCit7CisgICAgcmV0
dXJuIFN1aXRlcy5maW5kKGZ1bmN0aW9uKHN1aXRlKSB7IHJldHVybiBzdWl0ZS5uYW1lID09IG5h
bWU7IH0pOworfQorCitmdW5jdGlvbiB0ZXN0RnJvbU5hbWUoc3VpdGUsIG5hbWUpCit7CisgICAg
cmV0dXJuIHN1aXRlLnRlc3RzLmZpbmQoZnVuY3Rpb24odGVzdCkgeyByZXR1cm4gdGVzdC5uYW1l
ID09IG5hbWU7IH0pOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZh
cy1pbWFnZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICBpbWcuaGlkZGVuIHsK
KyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgIHZpc2liaWxpdHk6
IGhpZGRlbjsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+CisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCisgICAgPHNjcmlwdCBzcmM9
InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxpbWcgY2xhc3M9ImhpZGRlbiIgc3JjPSIuLi9y
ZXNvdXJjZXMveWluLXlhbmcuc3ZnIj4KKyAgICA8aW1nIGNsYXNzPSJoaWRkZW4iIHNyYz0iLi4v
cmVzb3VyY2VzL3lpbi15YW5nLnBuZyI+CisgICAgPGNhbnZhcyBpZD0ic3RhZ2UiPjwvY2FudmFz
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNh
bnZhcy1zaGFwZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBl
PSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCisgICAgPHNjcmlwdCBzcmM9InJlc291cmNl
cy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvYm91bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorICAgIDxjYW52YXMgaWQ9InN0YWdlIj48L2NhbnZhcz4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
Y3NzLWltYWdlcy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgaW1nIHsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+CisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCisgICAgPHNjcmlwdCBzcmM9
InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdlcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJzdGFnZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMu
aHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8
c3R5bGU+CisgICAgICAgIC5jaXJjbGUgeworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsKKyAgICAgICAgICAgIGJv
cmRlci1yYWRpdXM6IDUwJSA1MCU7CisgICAgICAgIH0KKyAgICAgICAgLnJlY3QgeworICAgICAg
ICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjog
IzAwMDAwMDsKKyAgICAgICAgfQorICAgICAgICAuc3RhciB7CisgICAgICAgICAgICAtd2Via2l0
LWNsaXAtcGF0aDogcG9seWdvbig1MCUgMCUsIDM4JSAzOCUsIDAlIDM4JSwgMzAlIDYwJSwgMTgl
IDEwMCUsIDUwJSA3NSUsIDgyJSAxMDAlLCA3MCUgNjAlLCAxMDAlIDM4JSwgNjIlIDM4JSk7Cisg
ICAgICAgICAgICAtbXMtY2xpcC1wYXRoOiBwb2x5Z29uKDUwJSAwJSwgMzglIDM4JSwgMCUgMzgl
LCAzMCUgNjAlLCAxOCUgMTAwJSwgNTAlIDc1JSwgODIlIDEwMCUsIDcwJSA2MCUsIDEwMCUgMzgl
LCA2MiUgMzglKTsgIAorICAgICAgICAgICAgY2xpcC1wYXRoOiBwb2x5Z29uKDUwJSAwJSwgMzgl
IDM4JSwgMCUgMzglLCAzMCUgNjAlLCAxOCUgMTAwJSwgNTAlIDc1JSwgODIlIDEwMCUsIDcwJSA2
MCUsIDEwMCUgMzglLCA2MiUgMzglKTsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0
YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2Ny
aXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCisg
ICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY3NzLXNoYXBlcy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJzdGFnZSI+PC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5j
aW5nLXN2Zy1pbWFnZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVm
PSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0
aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
bWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5q
cyI+PC9zY3JpcHQ+ICAKKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRp
Y2xlcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1z
dmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Jv
dW5jaW5nLXN2Zy1pbWFnZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHN2
ZyBpZD0ic3RhZ2UiPjwvc3ZnPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hh
cGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+CisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCisgICAgPHNjcmlwdCBzcmM9
InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvYm91bmNpbmctc3ZnLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorICAgIDxzdmcgaWQ9InN0YWdlIj48L3N2Zz4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9y
ZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2Vz
L2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBA
QAorZnVuY3Rpb24gQm91bmNpbmdDYW52YXNJbWFnZShzdGFnZSkKK3sKKyAgICBCb3VuY2luZ0Nh
bnZhc1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworICAgIHRoaXMuX2ltYWdlRWxlbWVudCA9
IHN0YWdlLmltYWdlRWxlbWVudDsKKyAgICB0aGlzLl9zaGFwZSA9ICJpbWFnZSI7Cit9CisKK0Jv
dW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ0NhbnZh
c1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc0ltYWdlLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzSW1hZ2U7CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2UucHJv
dG90eXBlLl9kcmF3ID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgpOwor
ICAgICAgICB0aGlzLl9hcHBseVJvdGF0aW9uKCk7CisgICAgICAgIHRoaXMuX2NvbnRleHQuZHJh
d0ltYWdlKHRoaXMuX2ltYWdlRWxlbWVudCwgMCwgMCwgdGhpcy5fc2l6ZS54LCB0aGlzLl9zaXpl
LnkpOworICAgIHRoaXMuX2NvbnRleHQucmVzdG9yZSgpOworfQorCitmdW5jdGlvbiBCb3VuY2lu
Z0NhbnZhc0ltYWdlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7CisgICAgQm91bmNpbmdDYW52
YXNQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworCisgICAgdmFy
IGltYWdlU3JjID0gb3B0aW9uc1siaW1hZ2VTcmMiXSB8fCAicmVzb3VyY2VzL3lpbi15YW5nLnN2
ZyI7CisgICAgdGhpcy5pbWFnZUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuaGlk
ZGVuW3NyYz1cIiIgKyBpbWFnZVNyYyArICJcIl0iKTsKK30KKworQm91bmNpbmdDYW52YXNJbWFn
ZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nQ2FudmFzUGFydGljbGVz
U3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNv
bnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZTsKKworQm91bmNpbmdDYW52YXNJ
bWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpCit7CisgICAg
cmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc0ltYWdlKHRoaXMpOworfQorCitmdW5jdGlvbiBCb3Vu
Y2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFi
bGUsIHByb2dyZXNzQmFyKQoreworICAgIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJr
LmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jh
cik7Cit9CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUoQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0Jv
dW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5j
aW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrOworCitCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFy
ay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQoreworICAgIHJldHVy
biBuZXcgQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsK
K30KKword2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIHJldHVybiBuZXcg
Qm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29y
ZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtcGFy
dGljbGVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMu
anMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtcGFydGljbGVzLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlKHN0YWdlKQoreworICAgIEJvdW5jaW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7
CisgICAgdGhpcy5fY29udGV4dCA9IHN0YWdlLmNvbnRleHQ7CisgICAgdGhpcy5fc2hhcGUgPSAi
IjsKKyAgICB0aGlzLl9jbGlwID0gc3RhZ2UuY2xpcDsKK30KKworQm91bmNpbmdDYW52YXNQYXJ0
aWNsZS5jbGlwcyA9IHsKKyAgICBzdGFyOiBbCisgICAgICAgIG5ldyBQb2ludCgwLjUwLCAwLjAw
KSwKKyAgICAgICAgbmV3IFBvaW50KDAuMzgsIDAuMzgpLAorICAgICAgICBuZXcgUG9pbnQoMC4w
MCwgMC4zOCksCisgICAgICAgIG5ldyBQb2ludCgwLjMwLCAwLjYwKSwKKyAgICAgICAgbmV3IFBv
aW50KDAuMTgsIDEuMDApLAorICAgICAgICBuZXcgUG9pbnQoMC41MCwgMC43NSksCisgICAgICAg
IG5ldyBQb2ludCgwLjgyLCAxLjAwKSwKKyAgICAgICAgbmV3IFBvaW50KDAuNzAsIDAuNjApLAor
ICAgICAgICBuZXcgUG9pbnQoMS4wMCwgMC4zOCksCisgICAgICAgIG5ldyBQb2ludCgwLjYyLCAw
LjM4KQorICAgIF0sCit9OworCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNQ
YXJ0aWNsZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlOwor
CitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZS5fYXBwbHlSb3RhdGlvbiA9IGZ1bmN0
aW9uKCkKK3sKKyAgICBpZiAodGhpcy5fc2hhcGUgPT0gImNpcmNsZSIpCisgICAgICAgIHJldHVy
bjsKKworICAgIHRoaXMuX2NvbnRleHQudHJhbnNsYXRlKHRoaXMuX3NpemUueCAvIDIsIHRoaXMu
X3NpemUueSAvIDIpOworICAgIHRoaXMuX2NvbnRleHQucm90YXRlKHRoaXMuX3JvdGF0ZXIuZGVn
cmVlKCkgKiBNYXRoLlBJIC8gMTgwKTsKKyAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSgtdGhp
cy5fc2l6ZS54IC8gMiwgLXRoaXMuX3NpemUueSAvIDIpOworfQorCitCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlLnByb3RvdHlwZS5fYXBwbHlDbGlwcGluZyA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIg
Y2xpcFBvaW50cyA9IEJvdW5jaW5nQ2FudmFzUGFydGljbGUuY2xpcHNbdGhpcy5fY2xpcF07Cisg
ICAgaWYgKCFjbGlwUG9pbnRzKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIHRoaXMu
X2NvbnRleHQuYmVnaW5QYXRoKCk7CisgICAgY2xpcFBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKHBv
aW50LCBpbmRleCkgeworICAgICAgICB2YXIgcG9pbnQgPSB0aGlzLl9zaXplLm11bHRpcGx5KHBv
aW50KTsKKyAgICAgICAgaWYgKCFpbmRleCkKKyAgICAgICAgICAgIHRoaXMuX2NvbnRleHQubW92
ZVRvKHBvaW50LngsIHBvaW50LnkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9j
b250ZXh0LmxpbmVUbyhwb2ludC54LCBwb2ludC55KTsKKyAgICB9LCB0aGlzKTsKKworICAgIHRo
aXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7CisgICAgdGhpcy5fY29udGV4dC5jbGlwKCk7Cit9CisK
K0JvdW5jaW5nQ2FudmFzUGFydGljbGUucHJvdG90eXBlLl9kcmF3ID0gZnVuY3Rpb24oKQorewor
ICAgIHRocm93ICJOb3QgaW1wbGVtZW50ZWQiOworfQorCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xl
LnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQoreworICAgIEJvdW5jaW5n
UGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEpOworICAgIHRo
aXMuX2NvbnRleHQuc2F2ZSgpOworICAgICAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSh0aGlz
Ll9wb3NpdGlvbi54LCB0aGlzLl9wb3NpdGlvbi55KTsKKyAgICAgICAgdGhpcy5fZHJhdygpOwor
ICAgIHRoaXMuX2NvbnRleHQucmVzdG9yZSgpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZh
c1BhcnRpY2xlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7CisgICAgQm91bmNpbmdQYXJ0aWNs
ZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgIHRoaXMuY29udGV4dCA9
IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOworfQorCitCb3VuY2luZ0NhbnZhc1BhcnRp
Y2xlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFn
ZS5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdlOworCitmdW5jdGlvbiBCb3Vu
Y2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yKGJlbmNobWFyaykKK3sKKyAgICBCb3VuY2luZ1Bh
cnRpY2xlc0FuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrKTsKKyAgICB0aGlzLl9jb250ZXh0
ID0gYmVuY2htYXJrLl9zdGFnZS5jb250ZXh0OworfQorCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xl
c0FuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNBbmlt
YXRvci5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yOworCitCb3Vu
Y2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24o
KQoreworICAgIHRoaXMuX2NvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuX2JlbmNobWFyay5f
c3RhZ2Uuc2l6ZS54LCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUueSk7CisgICAgcmV0dXJu
IEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKTsK
K30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsoc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICBTdGFnZUJlbmNo
bWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jl
c3NCYXIpOworfQorCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZh
c1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZh
c1BhcnRpY2xlc0JlbmNobWFyazsKKworQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsu
cHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiBuZXcg
Qm91bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvcih0aGlzKTsKK30KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanMJKHJldmlzaW9uIDApCisr
KyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jl
c291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsOTAgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzU2hhcGUoc3RhZ2UpCit7CisgICAgQm91
bmNpbmdDYW52YXNQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9maWxsID0g
c3RhZ2UuZmlsbDsKKyAgICB0aGlzLl9zaGFwZSA9IHN0YWdlLnNoYXBlOworICAgIHRoaXMuX2Nv
bG9yMCA9IHN0YWdlLnJhbmRvbUNvbG9yKCk7CisgICAgdGhpcy5fY29sb3IxID0gc3RhZ2UucmFu
ZG9tQ29sb3IoKTsgICAgCit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ0Nh
bnZhc1NoYXBlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzU2hhcGU7CisK
K0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlLl9hcHBseUZpbGwgPSBmdW5jdGlvbigpCit7
CisgICAgc3dpdGNoICh0aGlzLl9maWxsKSB7CisgICAgY2FzZSAiZ3JhZGllbnQiOgorICAgICAg
ICB2YXIgZ3JhZGllbnQgPSB0aGlzLl9jb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIDAs
IHRoaXMuX3NpemUud2lkdGgsIDApOworICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMCwg
dGhpcy5fY29sb3IwKTsKKyAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDEsIHRoaXMuX2Nv
bG9yMSk7IAorICAgICAgICB0aGlzLl9jb250ZXh0LmZpbGxTdHlsZSA9IGdyYWRpZW50OworICAg
ICAgICBicmVhazsKKyAgICAKKyAgICBjYXNlICJzb2xpZCI6CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgdGhpcy5fY29udGV4dC5maWxsU3R5bGUgPSB0aGlzLl9jb2xvcjA7CisgICAgICAgIGJyZWFr
OworICAgIH0KK30KKworQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUuX2RyYXdTaGFwZSA9
IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgpOworCisgICAgc3dp
dGNoICh0aGlzLl9zaGFwZSkgeworICAgIGNhc2UgInJlY3QiOgorICAgICAgICB0aGlzLl9jb250
ZXh0LnJlY3QoMCwgMCwgdGhpcy5fc2l6ZS53aWR0aCwgdGhpcy5fc2l6ZS5oZWlnaHQpOworICAg
ICAgICBicmVhazsKKyAgICAKKyAgICBjYXNlICJjaXJjbGUiOgorICAgIGRlZmF1bHQ6CisgICAg
ICAgIHZhciBjZW50ZXIgPSB0aGlzLl9zaXplLmNlbnRlcjsKKyAgICAgICAgdmFyIHJhZGl1cyA9
IE1hdGgubWluKHRoaXMuX3NpemUueCwgdGhpcy5fc2l6ZS55KSAvIDI7CisgICAgICAgIHRoaXMu
X2NvbnRleHQuYXJjKGNlbnRlci54LCBjZW50ZXIueSwgcmFkaXVzLCAwLCBNYXRoLlBJICogMiwg
dHJ1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHRoaXMuX2NvbnRleHQuZmlsbCgp
OworfQorCitCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5fZHJhdyA9IGZ1bmN0aW9uKCkK
K3sKKyAgICB0aGlzLl9jb250ZXh0LnNhdmUoKTsKKyAgICAgICAgdGhpcy5fYXBwbHlGaWxsKCk7
CisgICAgICAgIHRoaXMuX2FwcGx5Um90YXRpb24oKTsKKyAgICAgICAgdGhpcy5fYXBwbHlDbGlw
cGluZygpOworICAgICAgICB0aGlzLl9kcmF3U2hhcGUoKTsKKyAgICB0aGlzLl9jb250ZXh0LnJl
c3RvcmUoKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZShlbGVtZW50
LCBvcHRpb25zKQoreworICAgIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlz
LCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0aGlzLnBhcnNlU2hhcGVQYXJhbXRlcnMob3B0aW9u
cyk7Cit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZShCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7CitCb3VuY2luZ0Nh
bnZhc1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzU2hh
cGVzU3RhZ2U7CisKK0JvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBh
cnRpY2xlID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNTaGFw
ZSh0aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsoc3Vp
dGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICBCb3Vu
Y2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3VuY2luZ0NhbnZhc1NoYXBl
c0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nQ2FudmFzUGFydGlj
bGVzQmVuY2htYXJrLnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyazsKKwor
Qm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVu
Y3Rpb24oZWxlbWVudCkKK3sKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzU3Rh
Z2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQu
Y3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9n
cmVzc0JhcikKK3sKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJr
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9y
ZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3Vu
Y2luZy1jc3MtaW1hZ2VzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLWlt
YWdlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACitmdW5jdGlvbiBCb3VuY2lu
Z0Nzc0ltYWdlKHN0YWdlKQoreworICAgIEJvdW5jaW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFn
ZSk7CisKKyAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsK
KyAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLl9zaXplLnggKyAicHgiOworICAg
IHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLl9zaXplLnkgKyAicHgiOworICAgIHRo
aXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInNyYyIsIHN0YWdlLmltYWdlU3JjKTsKKyAgICAKKyAg
ICBzdGFnZS5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7CisgICAgdGhpcy5fbW92
ZSgpOworfQorCitCb3VuY2luZ0Nzc0ltYWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91
bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUpOworQm91bmNpbmdDc3NJbWFnZS5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBCb3VuY2luZ0Nzc0ltYWdlOworCitCb3VuY2luZ0Nzc0ltYWdlLnByb3RvdHlw
ZS5fbW92ZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLmVsZW1lbnQuc3R5bGUudHJhbnNmb3Jt
ID0gInRyYW5zbGF0ZSgiICsgdGhpcy5fcG9zaXRpb24ueCArICJweCwiICsgdGhpcy5fcG9zaXRp
b24ueSArICJweCkgIiArIHRoaXMuX3JvdGF0ZXIucm90YXRlWigpOworfQorICAgIAorQm91bmNp
bmdDc3NJbWFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAg
ICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRh
KTsKKyAgICB0aGlzLl9tb3ZlKCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ3NzSW1hZ2VzU3Rh
Z2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwo
dGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5pbWFnZVNyYyA9IG9wdGlvbnNbImlt
YWdlU3JjIl0gfHwgIi4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciOworfQorCitCb3VuY2luZ0Nz
c0ltYWdlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNT
dGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdDc3NJbWFnZXNTdGFnZS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlOworCitCb3VuY2luZ0Nzc0ltYWdlc1N0YWdl
LnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gbmV3
IEJvdW5jaW5nQ3NzSW1hZ2UodGhpcyk7Cit9CisKK0JvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UucHJv
dG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xlKQoreworICAg
IHBhcnRpY2xlLmVsZW1lbnQucmVtb3ZlKCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ3NzSW1h
Z2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NC
YXIpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdD
c3NJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRp
Y2xlc0JlbmNobWFyay5wcm90b3R5cGUpOworQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsucHJv
dG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcms7CisKK0JvdW5j
aW5nQ3NzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVs
ZW1lbnQpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlKGVsZW1lbnQs
IHRoaXMuX29wdGlvbnMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1
bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7
CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nzc0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwg
b3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5j
aW5nLWNzcy1zaGFwZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLXNoYXBl
cy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1zaGFwZXMuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw4MSBAQAorZnVuY3Rpb24gQm91bmNpbmdDc3NTaGFwZShzdGFn
ZSkKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworCisgICAgdGhp
cy5lbGVtZW50ID0gdGhpcy5fY3JlYXRlU3BhbihzdGFnZSk7CisgICAgICAgIAorICAgIHN3aXRj
aCAoc3RhZ2UuZmlsbCkgeworICAgIGNhc2UgInNvbGlkIjoKKyAgICBkZWZhdWx0OgorICAgICAg
ICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gc3RhZ2UucmFuZG9tQ29sb3Io
KTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgImdyYWRpZW50IjoKKyAgICAg
ICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmQgPSAibGluZWFyLWdyYWRpZW50KCIgKyBz
dGFnZS5yYW5kb21Db2xvcigpICsgIiwgIiArIHN0YWdlLnJhbmRvbUNvbG9yKCkgKyAiKSI7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHRoaXMuX21vdmUoKTsKK30KKworQm91bmNpbmdD
c3NTaGFwZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90
eXBlKTsKK0JvdW5jaW5nQ3NzU2hhcGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdD
c3NTaGFwZTsKKworQm91bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVNwYW4gPSBmdW5j
dGlvbihzdGFnZSkKK3sKKyAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNw
YW4iKTsKKyAgICBzcGFuLmNsYXNzTmFtZSA9IHN0YWdlLnNoYXBlICsgIiAiICsgc3RhZ2UuY2xp
cDsKKyAgICBzcGFuLnN0eWxlLndpZHRoID0gdGhpcy5fc2l6ZS54ICsgInB4IjsKKyAgICBzcGFu
LnN0eWxlLmhlaWdodCA9IHRoaXMuX3NpemUueSArICJweCI7CisgICAgc3RhZ2UuZWxlbWVudC5h
cHBlbmRDaGlsZChzcGFuKTsKKyAgICByZXR1cm4gc3BhbjsKK30KKworQm91bmNpbmdDc3NTaGFw
ZS5wcm90b3R5cGUuX21vdmUgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5lbGVtZW50LnN0eWxl
LnRyYW5zZm9ybSA9ICJ0cmFuc2xhdGUoIiArIHRoaXMuX3Bvc2l0aW9uLnggKyAicHgsIiArIHRo
aXMuX3Bvc2l0aW9uLnkgKyAicHgpIiArIHRoaXMuX3JvdGF0ZXIucm90YXRlWigpOworfQorICAg
IAorQm91bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0
YSkKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywg
dGltZURlbHRhKTsKKyAgICB0aGlzLl9yb3RhdGVyLm5leHQodGltZURlbHRhKTsgICAgCisgICAg
dGhpcy5fbW92ZSgpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0Nzc1NoYXBlc1N0YWdlKGVsZW1l
bnQsIG9wdGlvbnMpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVs
ZW1lbnQsIG9wdGlvbnMpOworICAgIHRoaXMucGFyc2VTaGFwZVBhcmFtdGVycyhvcHRpb25zKTsK
K30KKworQm91bmNpbmdDc3NTaGFwZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJv
dW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nQ3NzU2hhcGVzU3RhZ2Uu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDc3NTaGFwZXNTdGFnZTsKKworQm91bmNp
bmdDc3NTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpCit7
CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nzc1NoYXBlKHRoaXMpOworfQorCitCb3VuY2luZ0Nz
c1NoYXBlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQgPSBmdW5jdGlvbihw
YXJ0aWNsZSkKK3sKKyAgICBwYXJ0aWNsZS5lbGVtZW50LnJlbW92ZSgpOworfQorCitmdW5jdGlv
biBCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3Jk
VGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNh
bGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7
Cit9CisKK0JvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nQ3NzU2hh
cGVzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ3NzU2hhcGVzQmVu
Y2htYXJrOworCitCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3Rh
Z2UgPSBmdW5jdGlvbihlbGVtZW50KQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdDc3NTaGFw
ZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKword2luZG93LmJlbmNobWFya0Ns
aWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUs
IHByb2dyZXNzQmFyKQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1h
cmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9Cklu
ZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91
bmNpbmctcGFydGljbGVzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGlj
bGVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMyIEBACitmdW5jdGlvbiBCb3VuY2lu
Z1BhcnRpY2xlKHN0YWdlKQoreworICAgIHRoaXMuX3N0YWdlU2l6ZSA9IHN0YWdlLnNpemU7Cisg
ICAgdGhpcy5fc2l6ZSA9IHN0YWdlLnBhcnRpY2xlU2l6ZTsKKyAgICAKKyAgICB0aGlzLl9wb3Np
dGlvbiA9IHN0YWdlLnJhbmRvbVBvc2l0aW9uKHN0YWdlLnNpemUuc3VidHJhY3Qoc3RhZ2UucGFy
dGljbGVTaXplKSk7CisgICAgdGhpcy5fYW5nbGUgPSBzdGFnZS5yYW5kb21BbmdsZSgpOworICAg
IHRoaXMuX3ZlbG9jaXR5ID0gc3RhZ2UucmFuZG9tVmVsb2NpdHkoc3RhZ2UubWF4VmVsb2NpdHkp
OworICAgIHRoaXMuX3JvdGF0ZXIgPSBzdGFnZS5yYW5kb21Sb3RhdGVyKCk7Cit9CisKK0JvdW5j
aW5nUGFydGljbGUucHJvdG90eXBlID0KK3sKKyAgICBnZXQgY2VudGVyKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9wb3NpdGlvbi5hZGQodGhpcy5fc2l6ZS5jZW50ZXIpOworICAgIH0s
CisgICAgCisgICAgYW5pbWF0ZTogZnVuY3Rpb24odGltZURlbHRhKQorICAgIHsKKyAgICAgICAg
dGhpcy5fcG9zaXRpb24gPSB0aGlzLl9wb3NpdGlvbi5tb3ZlKHRoaXMuX2FuZ2xlLCB0aGlzLl92
ZWxvY2l0eSwgdGltZURlbHRhKTsKKyAgICAgICAgdGhpcy5fcm90YXRlci5uZXh0KHRpbWVEZWx0
YSk7CisKKyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgcmlnaHQg
c2lkZQorICAgICAgICBpZiAodGhpcy5fcG9zaXRpb24ueCArIHRoaXMuX3NpemUueCA+IHRoaXMu
X3N0YWdlU2l6ZS54KSB7CisgICAgICAgICAgICAvLyBJZiBkaXJlY3Rpb24gaXMgRWFzdC1Tb3V0
aAorICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID49IDAgJiYgdGhpcy5fYW5nbGUgPCBNYXRo
LlBJIC8gMikKKyAgICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IE1hdGguUEkgLSB0aGlzLl9h
bmdsZTsKKyAgICAgICAgICAgIC8vIElmIGFuZ2xlIGlzIEVhc3QtTm9ydGgKKyAgICAgICAgICAg
IGVsc2UgaWYgKHRoaXMuX2FuZ2xlID4gTWF0aC5QSSAvIDIgKiAzKQorICAgICAgICAgICAgICAg
IHRoaXMuX2FuZ2xlID0gdGhpcy5fYW5nbGUgLSAodGhpcy5fYW5nbGUgLSBNYXRoLlBJIC8gMiAq
IDMpICogMjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMg
Z29pbmcgdG8gbW92ZSBvZmYgbGVmdCBzaWRlCisgICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbi54
IDwgMCkgeworICAgICAgICAgICAgLy8gSWYgYW5nbGUgaXMgV2VzdC1Tb3V0aAorICAgICAgICAg
ICAgaWYgKHRoaXMuX2FuZ2xlID4gTWF0aC5QSSAvIDIgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJ
KQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0gTWF0aC5QSSAtIHRoaXMuX2FuZ2xlOwor
ICAgICAgICAgICAgLy8gSWYgYW5nbGUgaXMgV2VzdC1Ob3J0aAorICAgICAgICAgICAgZWxzZSBp
ZiAodGhpcy5fYW5nbGUgPiBNYXRoLlBJICYmIHRoaXMuX2FuZ2xlIDwgTWF0aC5QSSAvIDIgKiAz
KQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0gdGhpcy5fYW5nbGUgKyAoTWF0aC5QSSAv
IDIgKiAzIC0gdGhpcy5fYW5nbGUpICogMjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHBh
cnRpY2xlIGlzIGdvaW5nIHRvIG1vdmUgb2ZmIGJvdHRvbSBzaWRlCisgICAgICAgIGlmICh0aGlz
Ll9wb3NpdGlvbi55ICsgdGhpcy5fc2l6ZS55ID4gdGhpcy5fc3RhZ2VTaXplLnkpIHsKKyAgICAg
ICAgICAgIC8vIElmIGRpcmVjdGlvbiBpcyBTb3V0aAorICAgICAgICAgICAgaWYgKHRoaXMuX2Fu
Z2xlID4gMCAmJiB0aGlzLl9hbmdsZSA8IE1hdGguUEkpCisgICAgICAgICAgICAgICAgdGhpcy5f
YW5nbGUgPSBNYXRoLlBJICogMiAtIHRoaXMuX2FuZ2xlOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgdG9wIHNpZGUKKyAgICAgICAgaWYg
KHRoaXMuX3Bvc2l0aW9uLnkgPCAwKSB7CisgICAgICAgICAgICAvLyBJZiBkaXJlY3Rpb24gaXMg
Tm9ydGgKKyAgICAgICAgICAgIGlmICh0aGlzLl9hbmdsZSA+IE1hdGguUEkgJiYgdGhpcy5fYW5n
bGUgPCBNYXRoLlBJICogMikKKyAgICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IHRoaXMuX2Fu
Z2xlIC0gKHRoaXMuX2FuZ2xlIC0gTWF0aC5QSSkgKiAyOworICAgICAgICB9CisgICAgfQorfQor
CitmdW5jdGlvbiBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yKGJlbmNobWFyaykKK3sKKyAgICBT
dGFnZUFuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrKTsKK307CisKK0JvdW5jaW5nUGFydGlj
bGVzQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUFuaW1hdG9yLnByb3Rv
dHlwZSk7CitCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3I7CisKK2Z1bmN0aW9uIEJvdW5jaW5nUGFydGljbGVz
U3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQp
OworICAgIAorICAgIHRoaXMucGFydGljbGVTaXplID0gbmV3IFBvaW50KHBhcnNlSW50KG9wdGlv
bnNbInBhcnRpY2xlV2lkdGgiXSkgfHwgMTAsIHBhcnNlSW50KG9wdGlvbnNbInBhcnRpY2xlSGVp
Z2h0Il0pIHx8IDEwKTsKKyAgICB0aGlzLl9wYXJ0aWNsZXMgPSBbXTsKKworICAgIHRoaXMubWF4
VmVsb2NpdHkgPSBwYXJzZUludChvcHRpb25zWyJtYXhWZWxvY2l0eSJdKSB8fCA1MDA7CisgICAg
dGhpcy5tYXhWZWxvY2l0eSA9IE1hdGgubWF4KHRoaXMubWF4VmVsb2NpdHksIDEwMCk7Cit9CisK
K0JvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZS5w
cm90b3R5cGUpOworQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlOworCitCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3Rv
dHlwZS5wYXJzZVNoYXBlUGFyYW10ZXJzID0gZnVuY3Rpb24ob3B0aW9ucykKK3sKKyAgICB0aGlz
LnNoYXBlID0gb3B0aW9uc1sic2hhcGUiXSB8fCAiY2lyY2xlIjsKKyAgICB0aGlzLmZpbGwgPSBv
cHRpb25zWyJmaWxsIl0gfHwgInNvbGlkIjsKKyAgICB0aGlzLmNsaXAgPSBvcHRpb25zWyJjbGlw
Il0gfHwgIiI7Cit9CisKK0JvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUg
PSBmdW5jdGlvbih0aW1lRGVsdGEpCit7CisgICAgdGhpcy5fcGFydGljbGVzLmZvckVhY2goZnVu
Y3Rpb24ocGFydGljbGUpIHsKKyAgICAgICAgcGFydGljbGUuYW5pbWF0ZSh0aW1lRGVsdGEpOwor
ICAgIH0pOworfQorICAgIAorQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUudHVuZSA9
IGZ1bmN0aW9uKGNvdW50KQoreworICAgIGNvdW50ID0gY291bnQgPiAwID8gTWF0aC5mbG9vcihj
b3VudCkgOiBNYXRoLmNlaWwoY291bnQpOworCisgICAgaWYgKGNvdW50ID09IDApCisgICAgICAg
IHJldHVybiB0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoOworCisgICAgaWYgKGNvdW50ID4gMCkgewor
ICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YodGhpcy5jcmVhdGVQYXJ0aWNsZSkgPT0gImZ1
bmN0aW9uIik7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAg
ICAgICAgIHRoaXMuX3BhcnRpY2xlcy5wdXNoKHRoaXMuY3JlYXRlUGFydGljbGUoKSk7CisgICAg
ICAgIHJldHVybiB0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoOworICAgIH0KKworICAgIGNvdW50ID0g
TWF0aC5taW4oLWNvdW50LCB0aGlzLl9wYXJ0aWNsZXMubGVuZ3RoKTsKKyAgICAgICAgCisgICAg
aWYgKHR5cGVvZih0aGlzLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCkgPT0gImZ1bmN0aW9uIikgewor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICB0aGlz
LnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCh0aGlzLl9wYXJ0aWNsZXNbdGhpcy5fcGFydGljbGVzLmxl
bmd0aCAtIDEgLSBpXSk7CisgICAgfQorCisgICAgdGhpcy5fcGFydGljbGVzLnNwbGljZSgtY291
bnQsIGNvdW50KTsKKyAgICByZXR1cm4gdGhpcy5fcGFydGljbGVzLmxlbmd0aDsKK30KKworZnVu
Y3Rpb24gQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJl
Y29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMs
IHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitC
b3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdl
QmVuY2htYXJrLnByb3RvdHlwZSk7CitCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyazsKKworQm91bmNpbmdQ
YXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQor
eworICAgIHJldHVybiBuZXcgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvcih0aGlzKTsKK30KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2Vz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanMJKHJldmlzaW9u
IDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDUgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnSW1hZ2Uoc3RhZ2UpCit7CisgICAgQm91
bmNpbmdTdmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9zaGFwZSA9ICJp
bWFnZSI7CisgICAgCisgICAgdmFyIGF0dHJzID0geyB4OiAwLCB5OiAwLCB3aWR0aDogdGhpcy5f
c2l6ZS54LCBoZWlnaHQ6IHRoaXMuX3NpemUueSB9OworICAgIHZhciB4bGlua0F0dHJzID0geyBo
cmVmOiBzdGFnZS5pbWFnZVNyYyB9OworICAgIHRoaXMuZWxlbWVudCA9IFV0aWxpdGllcy5jcmVh
dGVTdmdFbGVtZW50KCJpbWFnZSIsIGF0dHJzLCB4bGlua0F0dHJzLCBzdGFnZS5lbGVtZW50KTsK
KyAgICB0aGlzLl9tb3ZlKCk7Cit9CisKK0JvdW5jaW5nU3ZnSW1hZ2UucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShCb3VuY2luZ1N2Z1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ1N2Z0lt
YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU3ZnSW1hZ2U7CisKK2Z1bmN0aW9u
IEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBCb3VuY2lu
Z1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5p
bWFnZVNyYyA9IG9wdGlvbnNbImltYWdlU3JjIl0gfHwgInJlc291cmNlcy95aW4teWFuZy5zdmci
OworfQorCitCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
Qm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdTdmdJbWFnZXNT
dGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlOworCitC
b3VuY2luZ1N2Z0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9u
KCkKK3sKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nU3ZnSW1hZ2UodGhpcyk7Cit9CisKK2Z1bmN0
aW9uIEJvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsu
Y2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFy
KTsKK30KKworQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOworQm91bmNpbmdTdmdJ
bWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdJbWFnZXNC
ZW5jaG1hcms7CisKK0JvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVT
dGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z0lt
YWdlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCit3aW5kb3cuYmVuY2htYXJr
Q2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z0ltYWdlc0JlbmNo
bWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30K
SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1wYXJ0aWNsZXMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJj
ZXMvYm91bmNpbmctc3ZnLXBhcnRpY2xlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5j
aW5nLXN2Zy1wYXJ0aWNsZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OCBAQAorZnVu
Y3Rpb24gQm91bmNpbmdTdmdQYXJ0aWNsZShzdGFnZSkKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xl
LmNhbGwodGhpcywgc3RhZ2UpOworfQorCitCb3VuY2luZ1N2Z1BhcnRpY2xlLnByb3RvdHlwZSA9
IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUpOworQm91bmNpbmdTdmdQ
YXJ0aWNsZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlOworCitCb3Vu
Y2luZ1N2Z1BhcnRpY2xlLnByb3RvdHlwZS5fYXBwbHlDbGlwcGluZyA9IGZ1bmN0aW9uKHN0YWdl
KQoreworICAgIGlmIChzdGFnZS5jbGlwICE9ICJzdGFyIikKKyAgICAgICAgcmV0dXJuOworICAg
ICAgICAKKyAgICBzdGFnZS5lbnN1cmVDbGlwU3RhcklzQ3JlYXRlZCgpOworICAgIHRoaXMuZWxl
bWVudC5zZXRBdHRyaWJ1dGUoImNsaXAtcGF0aCIsICJ1cmwoI3N0YXItY2xpcCkiKTsKK30KKwor
Qm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5cGUuX21vdmUgPSBmdW5jdGlvbigpCit7CisgICAg
dmFyIHRyYW5zZm9ybSA9ICJ0cmFuc2xhdGUoIiArIHRoaXMuX3Bvc2l0aW9uLnggKyAiLCAiICsg
dGhpcy5fcG9zaXRpb24ueSArICIpIjsKKyAgICBpZiAodGhpcy5fc2hhcGUgIT0gImNpcmNsZSIp
CisgICAgICAgIHRyYW5zZm9ybSArPSB0aGlzLl9yb3RhdGVyLnJvdGF0ZSh0aGlzLl9zaXplLmNl
bnRlcik7CisgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwgdHJhbnNm
b3JtKTsKK30KKworQm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0
aW9uKHRpbWVEZWx0YSkKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRl
LmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlzLl9tb3ZlKCk7Cit9CisKK2Z1bmN0aW9u
IEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBCb3Vu
Y2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Cit9CisKK0Jv
dW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2lu
Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7CitCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2U7CisKK0JvdW5j
aW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLl9jcmVhdGVEZWZzID0gZnVuY3Rpb24oKQor
eworICAgIHJldHVybiBVdGlsaXRpZXMuY3JlYXRlU3ZnRWxlbWVudCgiZGVmcyIsIHt9LCB7fSwg
dGhpcy5lbGVtZW50KTsKK30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAorQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90
b3R5cGUuX2Vuc3VyZURlZnNJc0NyZWF0ZWQgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIHRo
aXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKCJkZWZzIikgfHwgdGhpcy5fY3JlYXRlRGVmcygpOwor
fQorCitCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5fY3JlYXRlQ2xpcFN0YXIg
PSBmdW5jdGlvbigpCit7CisgICAgdmFyIGF0dHJzID0geyBpZDogInN0YXItY2xpcCIsIGNsaXBQ
YXRoVW5pdHM6ICJvYmplY3RCb3VuZGluZ0JveCIgfTsKKyAgICB2YXIgY2xpcFBhdGggID0gVXRp
bGl0aWVzLmNyZWF0ZVN2Z0VsZW1lbnQoImNsaXBQYXRoIiwgYXR0cnMsIHt9LCB0aGlzLl9lbnN1
cmVEZWZzSXNDcmVhdGVkKCkpOworCisgICAgYXR0cnMgPSB7IGQ6ICJNLjUwLDBMLjM4LC4zOEww
LC4zOEwuMzAsLjYwTC4xOCwxTC41MCwuNzVMLjgyLDFMLjcwLC42MEwxLC4zOEwuNjIsLjM4eiIg
fTsKKyAgICBVdGlsaXRpZXMuY3JlYXRlU3ZnRWxlbWVudCgicGF0aCIsIGF0dHJzLCB7fSwgY2xp
cFBhdGgpOworICAgIHJldHVybiBjbGlwUGF0aDsKK30KKworQm91bmNpbmdTdmdQYXJ0aWNsZXNT
dGFnZS5wcm90b3R5cGUuZW5zdXJlQ2xpcFN0YXJJc0NyZWF0ZWQgPSBmdW5jdGlvbigpCit7Cisg
ICAgcmV0dXJuIHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKCIjc3Rhci1jbGlwIikgfHwgdGhp
cy5fY3JlYXRlQ2xpcFN0YXIoKTsKK30KKworQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90
b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkID0gZnVuY3Rpb24ocGFydGljbGUpCit7CisgICAg
cGFydGljbGUuZWxlbWVudC5yZW1vdmUoKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1z
aGFwZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcwkocmV2
aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMDQgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnU2hhcGUoc3RhZ2UpCit7Cisg
ICAgQm91bmNpbmdTdmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9zaGFw
ZSA9IHN0YWdlLnNoYXBlOworICAgIHRoaXMuX2ZpbGwgPSBzdGFnZS5maWxsOworICAgIAorICAg
IHRoaXMuX2NyZWF0ZVNoYXBlKHN0YWdlKTsKKyAgICB0aGlzLl9hcHBseUNsaXBwaW5nKHN0YWdl
KTsKKyAgICB0aGlzLl9hcHBseUZpbGwoc3RhZ2UpOworCisgICAgdGhpcy5fbW92ZSgpOyAgICAK
K30KKworQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5n
U3ZnUGFydGljbGUucHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLmNvbnN0
cnVjdG9yID0gQm91bmNpbmdTdmdTaGFwZTsKKworQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUu
X2NyZWF0ZVNoYXBlID0gZnVuY3Rpb24oc3RhZ2UpCit7CisgICAgc3dpdGNoICh0aGlzLl9zaGFw
ZSkgeworICAgIGNhc2UgInJlY3QiOgorICAgICAgICB2YXIgYXR0cnMgPSB7IHg6IDAsIHk6IDAs
IHdpZHRoOiB0aGlzLl9zaXplLngsIGhlaWdodDogdGhpcy5fc2l6ZS55IH07CisgICAgICAgIHRo
aXMuZWxlbWVudCA9IFV0aWxpdGllcy5jcmVhdGVTdmdFbGVtZW50KCJyZWN0IiwgYXR0cnMsIHt9
LCBzdGFnZS5lbGVtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgCisgICAgY2FzZSAiY2lyY2xl
IjoKKyAgICBkZWZhdWx0OgorICAgICAgICB2YXIgYXR0cnMgPSB7IGN4OiB0aGlzLl9zaXplLngg
LyAyLCBjeTogdGhpcy5fc2l6ZS55IC8gMiwgcjogTWF0aC5taW4odGhpcy5fc2l6ZS54LCB0aGlz
Ll9zaXplLnkpIC8gMiB9OworICAgICAgICB0aGlzLmVsZW1lbnQgPSBVdGlsaXRpZXMuY3JlYXRl
U3ZnRWxlbWVudCgiY2lyY2xlIiwgYXR0cnMsIHt9LCBzdGFnZS5lbGVtZW50KTsKKyAgICAgICAg
YnJlYWs7ICAgICAgICAKKyAgICB9Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLl9h
cHBseUZpbGwgPSBmdW5jdGlvbihzdGFnZSkKK3sKKyAgICBzd2l0Y2ggKHRoaXMuX2ZpbGwpIHsK
KyAgICBjYXNlICJncmFkaWVudCI6CisgICAgICAgIHZhciBncmFkaWVudCA9IHN0YWdlLmNyZWF0
ZUdyYWRpZW50KDIpOworICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJmaWxsIiwg
InVybCgjIiArIGdyYWRpZW50LmdldEF0dHJpYnV0ZSgiaWQiKSArICIpIik7CisgICAgICAgIGJy
ZWFrOworICAgIAorICAgIGNhc2UgInNvbGlkIjoKKyAgICBkZWZhdWx0OgorICAgICAgICB0aGlz
LmVsZW1lbnQuc2V0QXR0cmlidXRlKCJmaWxsIiwgc3RhZ2UucmFuZG9tQ29sb3IoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKworZnVuY3Rpb24gQm91bmNpbmdTdmdTaGFwZXNTdGFnZShl
bGVtZW50LCBvcHRpb25zKQoreworICAgIEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UuY2FsbCh0
aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0aGlzLnBhcnNlU2hhcGVQYXJhbXRlcnMob3B0
aW9ucyk7CisgICAgdGhpcy5fZ3JhZGllbnRzQ291bnQgPSAwOworfQorCitCb3VuY2luZ1N2Z1No
YXBlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdTdmdQYXJ0aWNsZXNT
dGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitCb3VuY2luZ1N2Z1NoYXBl
c1N0YWdlLnByb3RvdHlwZS5jcmVhdGVHcmFkaWVudCA9IGZ1bmN0aW9uKHN0b3BzKQoreworICAg
IHZhciBhdHRycyA9IHsgaWQ6ICJnYWRpZW50LSIgKyArK3RoaXMuX2dyYWRpZW50c0NvdW50IH07
CisgICAgdmFyIGdyYWRpZW50ID0gVXRpbGl0aWVzLmNyZWF0ZVN2Z0VsZW1lbnQoImxpbmVhckdy
YWRpZW50IiwgYXR0cnMsIHt9LCB0aGlzLl9lbnN1cmVEZWZzSXNDcmVhdGVkKCkpOyAgICAKKyAg
ICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0b3BzOyArK2kpIHsKKyAgICAgICAgYXR0cnMg
PSB7IG9mZnNldDogaSAqIDEwMCAvIHN0b3BzICsgIiUiLCAnc3RvcC1jb2xvcic6IHRoaXMucmFu
ZG9tQ29sb3IoKSB9OworICAgICAgICBVdGlsaXRpZXMuY3JlYXRlU3ZnRWxlbWVudCgic3RvcCIs
IGF0dHJzLCB7fSwgZ3JhZGllbnQpOworICAgIH0KKworICAgIHJldHVybiBncmFkaWVudDsKK30K
KworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5j
dGlvbigpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBlKHRoaXMpOworfQorCitC
b3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQgPSBm
dW5jdGlvbihwYXJ0aWNsZSkKK3sKKyAgICBCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3Rv
dHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQuY2FsbCh0aGlzLCBwYXJ0aWNsZSk7CisKKyAgICB2
YXIgZmlsbCA9IHBhcnRpY2xlLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCJmaWxsIik7CisgICAgaWYg
KGZpbGwuaW5kZXhPZigidXJsKCMiKSAhPSAwKQorICAgICAgICByZXR1cm47CisgICAgICAgIAor
ICAgIHZhciBncmFkaWVudCA9IHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKGZpbGwuc3Vic3Ry
aW5nKDQsIGZpbGwubGVuZ3RoIC0gMSkpOworICAgIHRoaXMuX2Vuc3VyZURlZnNJc0NyZWF0ZWQo
KS5yZW1vdmVDaGlsZChncmFkaWVudCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnU2hhcGVz
QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
Cit7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdTdmdT
aGFwZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xl
c0JlbmNobWFyay5wcm90b3R5cGUpOworQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcms7CisKK0JvdW5jaW5n
U3ZnU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1l
bnQpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlKGVsZW1lbnQsIHRo
aXMuX29wdGlvbnMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0
aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7Cisg
ICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtZWxlY3Ryb25zLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZh
cy1lbGVjdHJvbnMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtZWxlY3Ryb25zLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9z
dGFnZS5jc3MiPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3N0YXRpc3RpY3Mu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25z
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3Nj
cmlwdD4gICAgCisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+CisgICAgPGNhbnZhcyBpZD0ic3RhZ2UiPjwvY2FudmFzPgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1w
bGVzL2NhbnZhcy1zdGFycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtc3RhcnMuaHRtbAkocmV2aXNpb24gMCkKKysr
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtc3RhcnMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIg
aHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvc3RhdGlzdGljcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL21haW4uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3Rh
Z2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FudmFzLXN0YXJz
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxjYW52YXMgaWQ9InN0YWdlIj48
L2NhbnZhcz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3Vy
Y2VzL2NhbnZhcy1lbGVjdHJvbnMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzQgQEAKK2Z1bmN0aW9uIENhbnZhc0VsZWN0cm9u
KHN0YWdlKQoreworICAgIHRoaXMuX2NvbnRleHQgPSBzdGFnZS5jb250ZXh0OworICAgIHRoaXMu
X3N0YWdlU2l6ZSA9IHN0YWdlLnNpemU7CisKKyAgICB2YXIgbWluU2lkZSA9IE1hdGgubWluKHRo
aXMuX3N0YWdlU2l6ZS53aWR0aCwgdGhpcy5fc3RhZ2VTaXplLmhlaWdodCk7CisgICAgdmFyIHJh
ZGl1c1ggPSBzdGFnZS5yYW5kb20obWluU2lkZSAvIDgsIDcgKiBtaW5TaWRlIC8gMTYpOworICAg
IHZhciByYWRpdXNZID0gc3RhZ2UucmFuZG9tKG1pblNpZGUgLyA4LCAzICogcmFkaXVzWCAvIDQp
OworICAgIHRoaXMuX29yYml0UmFkaXVzZXMgPSBuZXcgUG9pbnQocmFkaXVzWCwgcmFkaXVzWSk7
CisgICAgdGhpcy5fcmFkaXVzID0gc3RhZ2UucmFuZG9tKDUsIDE1KTsKKyAgICB0aGlzLl9kaXJl
Y3Rpb24gPSBzdGFnZS5yYW5kb21JbnQoMCwgMik7CisgICAgdGhpcy5fYW5nbGUgPSBzdGFnZS5y
YW5kb21JbnQoMCwgMzYwKTsKKyAgICB0aGlzLl9jb2xvciA9IHN0YWdlLnJhbmRvbUNvbG9yKCk7
CisgICAgdGhpcy5fcm90YXRlciA9IHN0YWdlLnJhbmRvbVJvdGF0ZXIoKTsKKyAgICB0aGlzLl9y
b3RhdGVyLm5leHQoc3RhZ2UucmFuZG9tKDAsIHRoaXMuX3JvdGF0ZXIuaW50ZXJ2YWwpKTsKK30K
KworQ2FudmFzRWxlY3Ryb24ucHJvdG90eXBlLl9kcmF3ID0gZnVuY3Rpb24oKQoreworICAgIC8v
IENhbGN1bGF0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIG9iamVjdCBvbiB0aGUgZWxsaXBzZS4KKyAg
ICB2YXIgYW5nbGUgPSB0aGlzLl9kaXJlY3Rpb24gPyB0aGlzLl9yb3RhdGVyLmRlZ3JlZSgpIDog
MzYwIC0gdGhpcy5fcm90YXRlci5kZWdyZWUoKTsKKyAgICB2YXIgcG9zaXRpb24gPSB0aGlzLl9z
dGFnZVNpemUuY2VudGVyLnN1YnRyYWN0KFBvaW50LnBvaW50T25FbGxpcHNlKGFuZ2xlLCB0aGlz
Ll9vcmJpdFJhZGl1c2VzKSk7CisKKyAgICB0aGlzLl9jb250ZXh0LnNhdmUoKTsgICAgCisgICAg
ICAgIHRoaXMuX2NvbnRleHQudHJhbnNsYXRlKHRoaXMuX3N0YWdlU2l6ZS5jZW50ZXIueCwgdGhp
cy5fc3RhZ2VTaXplLmNlbnRlci55KTsKKyAgICAgICAgdGhpcy5fY29udGV4dC5yb3RhdGUodGhp
cy5fYW5nbGUgKiBNYXRoLlBJIC8gMTgwKTsKKyAgICAgICAgdGhpcy5fY29udGV4dC50cmFuc2xh
dGUoLXRoaXMuX3N0YWdlU2l6ZS5jZW50ZXIueCwgLXRoaXMuX3N0YWdlU2l6ZS5jZW50ZXIueSk7
CisKKyAgICAgICAgLy8gU2V0IHRoZSBzdHJva2UgYW5kIHRoZSBmaWxsIGNvbG9ycworICAgICAg
ICB0aGlzLl9jb250ZXh0LnN0cm9rZVN0eWxlID0gInJnYmEoMTkyLCAxOTIsIDE5MiwgMC45KSI7
CisgICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbFN0eWxlID0gdGhpcy5fY29sb3I7CisKKyAgICAg
ICAgLy8gRHJhdyB0aGUgb3JiaXQgb2YgdGhlIG9iamVjdC4KKyAgICAgICAgdGhpcy5fY29udGV4
dC5iZWdpblBhdGgoKTsKKyAgICAgICAgdGhpcy5fY29udGV4dC5lbGxpcHNlKHRoaXMuX3N0YWdl
U2l6ZS5jZW50ZXIueCwgdGhpcy5fc3RhZ2VTaXplLmNlbnRlci55LCB0aGlzLl9vcmJpdFJhZGl1
c2VzLngsIHRoaXMuX29yYml0UmFkaXVzZXMueSwgMCwgMCwgMiAqIE1hdGguUEkpOworICAgICAg
ICB0aGlzLl9jb250ZXh0LnN0cm9rZSgpOworICAgIAorICAgICAgICAvLyBEcmF3IHRoZSBvYmpl
Y3QuCisgICAgICAgIHRoaXMuX2NvbnRleHQuYmVnaW5QYXRoKCk7CisgICAgICAgIHRoaXMuX2Nv
bnRleHQuYXJjKHBvc2l0aW9uLngsIHBvc2l0aW9uLnksIHRoaXMuX3JhZGl1cywgMCwgTWF0aC5Q
SSAqIDIsIHRydWUpOworICAgICAgICB0aGlzLl9jb250ZXh0LmZpbGwoKTsKKyAgICB0aGlzLl9j
b250ZXh0LnJlc3RvcmUoKTsKK30KKworQ2FudmFzRWxlY3Ryb24ucHJvdG90eXBlLmFuaW1hdGUg
PSBmdW5jdGlvbih0aW1lRGVsdGEpCit7CisgICAgdGhpcy5fcm90YXRlci5uZXh0KHRpbWVEZWx0
YSAvIDEwMCk7CisgICAgdGhpcy5fZHJhdygpOworfQorCitmdW5jdGlvbiBDYW52YXNFbGVjdHJv
bnNTdGFnZShlbGVtZW50LCBvcHRpb25zKQoreworICAgIFN0YWdlLmNhbGwodGhpcywgZWxlbWVu
dCwgb3B0aW9ucyk7CisgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5lbGVtZW50LmdldENvbnRleHQo
IjJkIik7CisgICAgdGhpcy5fZWxlY3Ryb25zID0gW107Cit9CisKK0NhbnZhc0VsZWN0cm9uc1N0
YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2UucHJvdG90eXBlKTsKK0NhbnZhc0Vs
ZWN0cm9uc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENhbnZhc0VsZWN0cm9uc1N0YWdl
OworCitDYW52YXNFbGVjdHJvbnNTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50
KQoreworICAgIGNvdW50ID0gY291bnQgPiAwID8gTWF0aC5mbG9vcihjb3VudCkgOiBNYXRoLmNl
aWwoY291bnQpOworCisgICAgaWYgKGNvdW50ID09IDApCisgICAgICAgIHJldHVybiB0aGlzLl9l
bGVjdHJvbnMubGVuZ3RoOworCisgICAgaWYgKGNvdW50ID4gMCkgeworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICB0aGlzLl9lbGVjdHJvbnMucHVz
aChuZXcgQ2FudmFzRWxlY3Ryb24odGhpcykpOworICAgICAgICByZXR1cm4gdGhpcy5fZWxlY3Ry
b25zLmxlbmd0aDsKKyAgICB9CisKKyAgICBjb3VudCA9IE1hdGgubWluKC1jb3VudCwgdGhpcy5f
ZWxlY3Ryb25zLmxlbmd0aCk7CisgICAgdGhpcy5fZWxlY3Ryb25zLnNwbGljZSgtY291bnQsIGNv
dW50KTsKKyAgICAKKyAgICByZXR1cm4gdGhpcy5fZWxlY3Ryb25zLmxlbmd0aDsKK30KKworQ2Fu
dmFzRWxlY3Ryb25zU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEp
Cit7CisgICAgdGhpcy5fZWxlY3Ryb25zLmZvckVhY2goZnVuY3Rpb24oZWxlY3Ryb24pIHsKKyAg
ICAgICAgZWxlY3Ryb24uYW5pbWF0ZSh0aW1lRGVsdGEpOworICAgIH0pOworfQorCitmdW5jdGlv
biBDYW52YXNFbGVjdHJvbnNBbmltYXRvcihiZW5jaG1hcmspCit7CisgICAgQW5pbWF0b3IuY2Fs
bCh0aGlzLCBiZW5jaG1hcmspOworICAgIHRoaXMuX2NvbnRleHQgPSBiZW5jaG1hcmsuX3N0YWdl
LmNvbnRleHQ7Cit9CisKK0NhbnZhc0VsZWN0cm9uc0FuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUoU3RhZ2VBbmltYXRvci5wcm90b3R5cGUpOworQ2FudmFzRWxlY3Ryb25zQW5pbWF0
b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ2FudmFzRWxlY3Ryb25zQW5pbWF0b3I7CisKK0Nh
bnZhc0VsZWN0cm9uc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQorewor
ICAgIHRoaXMuX2NvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uu
c2l6ZS54LCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUueSk7CisKKyAgICAvLyBEcmF3IGEg
YmlnIHN0YXIgaW4gdGhlIG1pZGRsZS4KKyAgICB0aGlzLl9jb250ZXh0LmZpbGxTdHlsZSA9ICJv
cmFuZ2UiOyAgICAKKyAgICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgpOworICAgIHRoaXMuX2Nv
bnRleHQuYXJjKHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS5jZW50ZXIueCwgdGhpcy5fYmVu
Y2htYXJrLl9zdGFnZS5zaXplLmNlbnRlci55LCA1MCwgMCwgTWF0aC5QSSAqIDIsIHRydWUpOwor
ICAgIHRoaXMuX2NvbnRleHQuZmlsbCgpOworCisgICAgcmV0dXJuIFN0YWdlQW5pbWF0b3IucHJv
dG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKTsKK30KKworZnVuY3Rpb24gQ2FudmFzRWxlY3Ryb25z
QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
Cit7CisgICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywg
cmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQ2FudmFzRWxlY3Ryb25zQmVuY2htYXJr
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlKTsKK0Nh
bnZhc0VsZWN0cm9uc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDYW52YXNFbGVj
dHJvbnNCZW5jaG1hcms7CisKK0NhbnZhc0VsZWN0cm9uc0JlbmNobWFyay5wcm90b3R5cGUuY3Jl
YXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQoreworICAgIC8vIEF0dGFjaCB0aGUgc3RhZ2Ug
dG8gdGhlIGJlbmNobWFyay4KKyAgICByZXR1cm4gbmV3IENhbnZhc0VsZWN0cm9uc1N0YWdlKGVs
ZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCitDYW52YXNFbGVjdHJvbnNCZW5jaG1hcmsucHJv
dG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQoreworICAgIC8vIEF0dGFjaCB0aGUg
YW5pbWF0b3IgdG8gdGhlIGJlbmNobWFyay4KKyAgICByZXR1cm4gbmV3IENhbnZhc0VsZWN0cm9u
c0FuaW1hdG9yKHRoaXMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1
bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7
CisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgdGVzdCBoYXJuZXNzIHdo
aWNoIHN0YXJ0cyB0aGUKKyAgICAvLyB0ZXN0IGJ5IGNyZWF0aW5nIHlvdXIgYmVuY2htYXJrIG9i
amVjdC4KKyAgICByZXR1cm4gbmV3IENhbnZhc0VsZWN0cm9uc0JlbmNobWFyayhzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLXN0YXJz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFt
cGxlcy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtc3RhcnMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzEgQEAKK2Z1bmN0aW9uIENhbnZhc1N0YXIo
c3RhZ2UpCit7CisgICAgdGhpcy5fY29udGV4dCA9IHN0YWdlLmNvbnRleHQ7CisgICAgdGhpcy5f
c3RhZ2VTaXplID0gc3RhZ2Uuc2l6ZTsKKworICAgIHRoaXMuX3NpemUgPSBzdGFnZS5yYW5kb21T
cXVhcmVTaXplKDUsIDIwKTsKKyAgICB0aGlzLl9jZW50ZXIgPSBzdGFnZS5yYW5kb21Qb3NpdGlv
bihzdGFnZS5zaXplLnN1YnRyYWN0KHRoaXMuX3NpemUpKS5hZGQodGhpcy5fc2l6ZS5jZW50ZXIp
OworICAgIHRoaXMuX3JvdGF0ZVggPSAwOworICAgIHRoaXMuX3JvdGF0ZURlbHRhWCA9IHN0YWdl
LnJhbmRvbSgwLjMsIDAuNyk7Cit9CisKK0NhbnZhc1N0YXIucHJvdG90eXBlLl9kcmF3ID0gZnVu
Y3Rpb24oKQoreworICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgpOworICAgIHRoaXMuX2NvbnRleHQu
dHJhbnNsYXRlKHRoaXMuX2NlbnRlci54LCB0aGlzLl9jZW50ZXIueSk7CisgICAgCisgICAgdGhp
cy5fY29udGV4dC5maWxsU3R5bGUgPSAneWVsbG93JzsKKyAgICB0aGlzLl9jb250ZXh0LnN0cm9r
ZVN0eWxlID0gJ3doaXRlJzsKKworICAgIHRoaXMuX2NvbnRleHQubGluZVdpZHRoID0gMTsKKyAg
ICAKKyAgICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgpOworICAgIHRoaXMuX2NvbnRleHQubW92
ZVRvKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAtdGhpcy5fc2l6ZS55
IC8gIDIpOworICAgIHRoaXMuX2NvbnRleHQubGluZVRvKCt0aGlzLl9zaXplLnggLyAyMCAtIHRo
aXMuX3JvdGF0ZVggLyA1LCAtdGhpcy5fc2l6ZS55IC8gMTApOworICAgIHRoaXMuX2NvbnRleHQu
bGluZVRvKCt0aGlzLl9zaXplLnggLyA0ICAtIHRoaXMuX3JvdGF0ZVgsICAgICAgICAgICAgICAg
ICAgICAgIDApOworICAgIHRoaXMuX2NvbnRleHQubGluZVRvKCt0aGlzLl9zaXplLnggLyAyMCAt
IHRoaXMuX3JvdGF0ZVggLyA1LCArdGhpcy5fc2l6ZS55IC8gMTApOworICAgIHRoaXMuX2NvbnRl
eHQubGluZVRvKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCArdGhpcy5f
c2l6ZS55IC8gIDIpOworICAgIHRoaXMuX2NvbnRleHQubGluZVRvKC10aGlzLl9zaXplLnggLyAy
MCArIHRoaXMuX3JvdGF0ZVggLyA1LCArdGhpcy5fc2l6ZS55IC8gMTApOworICAgIHRoaXMuX2Nv
bnRleHQubGluZVRvKC10aGlzLl9zaXplLnggLyAgNCArIHRoaXMuX3JvdGF0ZVgsICAgICAgICAg
ICAgICAgICAgICAgIDApOworICAgIHRoaXMuX2NvbnRleHQubGluZVRvKC10aGlzLl9zaXplLngg
LyAyMCArIHRoaXMuX3JvdGF0ZVggLyA1LCAtdGhpcy5fc2l6ZS55IC8gMTApOworICAgIHRoaXMu
X2NvbnRleHQubGluZVRvKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAt
dGhpcy5fc2l6ZS55IC8gIDIpOworICAgIAorICAgIHRoaXMuX2NvbnRleHQuZmlsbCgpOworICAg
IHRoaXMuX2NvbnRleHQuc3Ryb2tlKCk7CisgICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTsK
KyAgICB0aGlzLl9jb250ZXh0LnJlc3RvcmUoKTsKK30KKworQ2FudmFzU3Rhci5wcm90b3R5cGUu
YW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAgICB0aGlzLl9yb3RhdGVYICs9IHRo
aXMuX3JvdGF0ZURlbHRhWDsKKyAgICAKKyAgICBpZiAodGhpcy5fcm90YXRlWCA+IHRoaXMuX3Np
emUueCAvIDQgfHwgdGhpcy5fcm90YXRlWCA8IC10aGlzLl9zaXplLnggLyA0KSB7CisgICAgICAg
IHRoaXMuX3JvdGF0ZURlbHRhWCA9IC10aGlzLl9yb3RhdGVEZWx0YVg7CisgICAgICAgIHRoaXMu
X3JvdGF0ZVggKz0gdGhpcy5fcm90YXRlRGVsdGFYOworICAgIH0KKworICAgdGhpcy5fZHJhdygp
OworfQorCitmdW5jdGlvbiBDYW52YXNTdGFyc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7Cisg
ICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgdGhpcy5jb250ZXh0ID0g
dGhpcy5lbGVtZW50LmdldENvbnRleHQoIjJkIik7CisKKyAgICB0aGlzLl9vYmplY3RzID0gW107
Cit9CisKK0NhbnZhc1N0YXJzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZS5w
cm90b3R5cGUpOworQ2FudmFzU3RhcnNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDYW52
YXNTdGFyc1N0YWdlOworCitDYW52YXNTdGFyc1N0YWdlLnByb3RvdHlwZS50dW5lID0gZnVuY3Rp
b24oY291bnQpCit7CisgICAgY291bnQgPSBjb3VudCA+IDAgPyBNYXRoLmZsb29yKGNvdW50KSA6
IE1hdGguY2VpbChjb3VudCk7CisKKyAgICBpZiAoY291bnQgPT0gMCkKKyAgICAgICAgcmV0dXJu
IHRoaXMuX29iamVjdHMubGVuZ3RoOworCisgICAgaWYgKGNvdW50ID4gMCkgeworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICB0aGlzLl9vYmplY3Rz
LnB1c2gobmV3IENhbnZhc1N0YXIodGhpcykpOworICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0
cy5sZW5ndGg7CisgICAgfQorCisgICAgY291bnQgPSBNYXRoLm1pbigtY291bnQsIHRoaXMuX29i
amVjdHMubGVuZ3RoKTsKKyAgICB0aGlzLl9vYmplY3RzLnNwbGljZSgtY291bnQsIGNvdW50KTsK
KworICAgIHJldHVybiB0aGlzLl9vYmplY3RzLmxlbmd0aDsKK30KKworQ2FudmFzU3RhcnNTdGFn
ZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAgICB0aGlzLl9v
YmplY3RzLmZvckVhY2goZnVuY3Rpb24ob2JqZWN0KSB7CisgICAgICAgIG9iamVjdC5hbmltYXRl
KHRpbWVEZWx0YSk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIENhbnZhc1N0YXJzQW5pbWF0b3Io
YmVuY2htYXJrKQoreworICAgQW5pbWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1hcmspOworICAgdGhp
cy5fY29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4dDsKK30KKworQ2FudmFzU3RhcnNB
bmltYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQW5pbWF0b3IucHJvdG90eXBl
KTsKK0NhbnZhc1N0YXJzQW5pbWF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ2FudmFzU3Rh
cnNBbmltYXRvcjsKKworQ2FudmFzU3RhcnNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1
bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgpOworICAgIHRoaXMuX2Nv
bnRleHQuZmlsbFN0eWxlID0gJ2JsYWNrJzsKKyAgICB0aGlzLl9jb250ZXh0LnJlY3QoMCwgMCwg
dGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLndpZHRoLCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdl
LnNpemUuaGVpZ2h0KTsKKyAgICB0aGlzLl9jb250ZXh0LmZpbGwoKTsKKyAgIHJldHVybiBTdGFn
ZUFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcyk7Cit9CisKK2Z1bmN0aW9uIENh
bnZhc1N0YXJzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpCit7CisgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBv
cHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitDYW52YXNTdGFyc0JlbmNo
bWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7
CitDYW52YXNTdGFyc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDYW52YXNTdGFy
c0JlbmNobWFyazsKKworQ2FudmFzU3RhcnNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdl
ID0gZnVuY3Rpb24oZWxlbWVudCkKK3sKKyAgIC8vIEF0dGFjaCB0aGUgc3RhZ2UgdG8gdGhlIGJl
bmNobWFyay4KKyAgIHJldHVybiBuZXcgQ2FudmFzU3RhcnNTdGFnZShlbGVtZW50LCB0aGlzLl9v
cHRpb25zKTsKK30KKworQ2FudmFzU3RhcnNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1h
dG9yID0gZnVuY3Rpb24oKQoreworICAgLy8gQXR0YWNoIHRoZSBhbmltYXRvciB0byB0aGUgYmVu
Y2htYXJrLgorICAgcmV0dXJuIG5ldyBDYW52YXNTdGFyc0FuaW1hdG9yKHRoaXMpOworfQorCit3
aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAvLyBUaGlzIGZ1bmN0aW9uIGlz
IGNhbGxlZCBmcm9tIHRoZSB0ZXN0IGhhcm5lc3Mgd2hpY2ggc3RhcnRzIHRoZQorICAgLy8gdGVz
dCBieSBjcmVhdGluZyB5b3VyIGJlbmNobWFyayBvYmplY3QuCisgICByZXR1cm4gbmV3IENhbnZh
c1N0YXJzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jl
c3NCYXIpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanMJKHJldmlz
aW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21h
aW4uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNDIgQEAKK2Z1bmN0aW9uIEJlbmNobWFy
a1N0YXRlKHRlc3RJbnRlcnZhbCkKK3sKKyAgICB0aGlzLl9jdXJyZW50VGltZU9mZnNldCA9IDA7
CisgICAgdGhpcy5fc3RhZ2VJbnRlcnZhbCA9IHRlc3RJbnRlcnZhbCAvIEJlbmNobWFya1N0YXRl
LnN0YWdlcy5GSU5JU0hFRDsKK30KKworLy8gVGhlIGVudW0gdmFsdWVzIGFuZCB0aGUgbWVzc2Fn
ZXMgc2hvdWxkIGJlIGluIHRoZSBzYW1lIG9yZGVyCitCZW5jaG1hcmtTdGF0ZS5zdGFnZXMgPSB7
CisgICAgV0FSTUlOR19VUDogMCwKKyAgICBTQU1QTElORzogMSwKKyAgICBGSU5JU0hFRDogMiwK
KyAgICBtZXNzYWdlczogWyAiV2FybWluZyB1cCIsICJTYW1wbGluZyIsICJGaW5pc2hlZCIgXQor
fQorCitCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUgPQoreworICAgIF90aW1lT2Zmc2V0OiBmdW5j
dGlvbihzdGFnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGFnZSAqIHRoaXMuX3N0YWdlSW50
ZXJ2YWw7CisgICAgfSwKKyAgICAKKyAgICBfbWVzc2FnZTogZnVuY3Rpb24oc3RhZ2UsIHRpbWVP
ZmZzZXQpCisgICAgeworICAgICAgICBpZiAoc3RhZ2UgPT0gQmVuY2htYXJrU3RhdGUuc3RhZ2Vz
LkZJTklTSEVEKQorICAgICAgICAgICAgcmV0dXJuIEJlbmNobWFya1N0YXRlLnN0YWdlcy5tZXNz
YWdlc1tzdGFnZV07CisKKyAgICAgICAgcmV0dXJuIEJlbmNobWFya1N0YXRlLnN0YWdlcy5tZXNz
YWdlc1tzdGFnZV0gKyAiLi4uICgiCisgICAgICAgICAgICArIE1hdGguZmxvb3IoKHRpbWVPZmZz
ZXQgLSB0aGlzLl90aW1lT2Zmc2V0KHN0YWdlKSkgLyAxMDAwKSArICIvIgorICAgICAgICAgICAg
KyBNYXRoLmZsb29yKCh0aGlzLl90aW1lT2Zmc2V0KHN0YWdlICsgMSkgLSB0aGlzLl90aW1lT2Zm
c2V0KHN0YWdlKSkgLyAxMDAwKSArICIpIjsKKyAgICB9LAorICAgIAorICAgIHVwZGF0ZTogZnVu
Y3Rpb24oY3VycmVudFRpbWVPZmZzZXQpCisgICAgeworICAgICAgICB0aGlzLl9jdXJyZW50VGlt
ZU9mZnNldCA9IGN1cnJlbnRUaW1lT2Zmc2V0OworICAgIH0sCisgICAgCisgICAgc2FtcGxpbmdU
aW1lT2Zmc2V0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdGltZU9m
ZnNldChCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuU0FNUExJTkcpOworICAgIH0sCisgICAgCisgICAg
Y3VycmVudFN0YWdlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmb3IgKHZhciBzdGFnZSA9
IEJlbmNobWFya1N0YXRlLnN0YWdlcy5XQVJNSU5HX1VQOyBzdGFnZSA8IEJlbmNobWFya1N0YXRl
LnN0YWdlcy5GSU5JU0hFRDsgKytzdGFnZSkgeworICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnJl
bnRUaW1lT2Zmc2V0IDwgdGhpcy5fdGltZU9mZnNldChzdGFnZSArIDEpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBzdGFnZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gQmVuY2htYXJrU3Rh
dGUuc3RhZ2VzLkZJTklTSEVEOworICAgIH0sCisgICAgCisgICAgY3VycmVudE1lc3NhZ2U6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9tZXNzYWdlKHRoaXMuY3VycmVu
dFN0YWdlKCksIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0KTsKKyAgICB9LAorICAgIAorICAgIGN1
cnJlbnRQcm9ncmVzczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2N1
cnJlbnRUaW1lT2Zmc2V0IC8gdGhpcy5fdGltZU9mZnNldChCZW5jaG1hcmtTdGF0ZS5zdGFnZXMu
RklOSVNIRUQpOworICAgIH0KK30KKworZnVuY3Rpb24gQW5pbWF0b3IoYmVuY2htYXJrKQorewor
ICAgIHRoaXMuX2JlbmNobWFyayA9IGJlbmNobWFyazsKKyAgICB0aGlzLl9mcmFtZUNvdW50ID0g
MDsKKyAgICB0aGlzLl9kcm9wRnJhbWVDb3VudCA9IDE7CisgICAgdGhpcy5fbWVhc3VyZUZyYW1l
Q291bnQgPSAzOyAKKyAgICB0aGlzLl9yZWZlcmVuY2VUaW1lID0gMDsKKyAgICB0aGlzLl9jdXJy
ZW50VGltZU9mZnNldCA9IDA7CisgICAgdGhpcy5fZXN0aW1hdG9yID0gbmV3IEthbG1hbkVzdGlt
YXRvcigpOworfQorCitBbmltYXRvci5wcm90b3R5cGUgPQoreworICAgIHN0YXJ0OiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICB0aGlzLl9pbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwodGhpcy5h
bmltYXRlLmJpbmQodGhpcyksIDEpOworICAgIH0sCisgICAgCisgICAgdGltZURlbHRhOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgLSB0
aGlzLl9zdGFydFRpbWVPZmZzZXQ7CisgICAgfSwKKyAgICAKKyAgICBhbmltYXRlOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICB2YXIgY3VycmVudFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsK
KyAgICAgICAgCisgICAgICAgIGlmICghdGhpcy5fcmVmZXJlbmNlVGltZSkKKyAgICAgICAgICAg
IHRoaXMuX3JlZmVyZW5jZVRpbWUgPSBjdXJyZW50VGltZTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgPSBjdXJyZW50VGltZSAtIHRoaXMuX3JlZmVy
ZW5jZVRpbWU7CisKKyAgICAgICAgaWYgKCF0aGlzLl9mcmFtZUNvdW50KQorICAgICAgICAgICAg
dGhpcy5fc3RhcnRUaW1lT2Zmc2V0ID0gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQ7CisKKyAgICAg
ICAgLy8gU3RhcnQgbWVhc3VyaW5nIGFmdGVyIGRyb3BwaW5nIF9kcm9wRnJhbWVDb3VudCBmcmFt
ZXMuCisgICAgICAgIGlmICh0aGlzLl9mcmFtZUNvdW50ID09IHRoaXMuX2Ryb3BGcmFtZUNvdW50
KQorICAgICAgICAgICAgdGhpcy5fbWVhc3VyZVRpbWVPZmZzZXQgPSB0aGlzLl9jdXJyZW50VGlt
ZU9mZnNldDsKKworICAgICAgICArK3RoaXMuX2ZyYW1lQ291bnQ7CisKKyAgICAgICAgLy8gRHJv
cCBfZHJvcEZyYW1lQ291bnQgZnJhbWVzIGFuZCBtZWFzdXJlIHRoZSBhdmVyYWdlIG9mIF9tZWFz
dXJlRnJhbWVDb3VudCBmcmFtZXMuCisgICAgICAgIGlmICh0aGlzLl9mcmFtZUNvdW50IDwgdGhp
cy5fZHJvcEZyYW1lQ291bnQgKyB0aGlzLl9tZWFzdXJlRnJhbWVDb3VudCkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgICAgIC8vIEdldCB0aGUgYXZlcmFnZSBGUFMgb2YgX21lYXN1
cmVGcmFtZUNvdW50IGZyYW1lcyBvdmVyIG1lYXN1cmVUaW1lRGVsdGEuCisgICAgICAgIHZhciBt
ZWFzdXJlVGltZURlbHRhID0gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgLSB0aGlzLl9tZWFzdXJl
VGltZU9mZnNldDsKKyAgICAgICAgdmFyIGN1cnJlbnRGcmFtZVJhdGUgPSBNYXRoLmZsb29yKDEw
MDAgLyAobWVhc3VyZVRpbWVEZWx0YSAvIHRoaXMuX21lYXN1cmVGcmFtZUNvdW50KSk7CisgICAg
ICAgICAKKyAgICAgICAgLy8gVXNlIEthbG1hbiBmaWx0ZXIgdG8gZ2V0IGEgbW9yZSBub24tZmx1
Y3R1YXRpbmcgZnJhbWUgcmF0ZS4KKyAgICAgICAgaWYgKHRoaXMuX2JlbmNobWFyay5vcHRpb25z
LmVzdGltYXRlZEZyYW1lUmF0ZSkKKyAgICAgICAgICAgIGN1cnJlbnRGcmFtZVJhdGUgPSB0aGlz
Ll9lc3RpbWF0b3IuZXN0aW1hdGUobWVhc3VyZVRpbWVEZWx0YSwgY3VycmVudEZyYW1lUmF0ZSk7
CisgICAgICAgIAorICAgICAgICAvLyBBZGp1c3QgdGhlIHRlc3QgdG8gcmVhY2ggdGhlIGRlc2ly
ZWQgRlBTLgorICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fYmVuY2htYXJrLnVwZGF0ZSh0aGlz
Ll9jdXJyZW50VGltZU9mZnNldCwgdGhpcy50aW1lRGVsdGEoKSwgY3VycmVudEZyYW1lUmF0ZSk7
CisgICAgICAgIAorICAgICAgICAvLyBTdG9wIHRoZSBhbmltYXRvciBpZiB0aGUgYmVuY2htYXJr
IGhhcyBmaW5pc2hlZC4KKyAgICAgICAgaWYgKCFyZXN1bHQgJiYgdHlwZW9mIHRoaXMuX2ludGVy
dmFsSWQgIT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuX2lu
dGVydmFsSWQpOworCisgICAgICAgIC8vIFN0YXJ0IHRoZSBuZXh0IGRyb3AvbWVhc3VyZSBjeWNs
ZS4KKyAgICAgICAgdGhpcy5fZnJhbWVDb3VudCA9IDA7CisgICAgICAgIAorICAgICAgICAvLyBy
ZXN1bHQgbWF5IHN0b3AgdGhlIGFuaW1hdG9yIGlmIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIGhh
cyBiZWVuIHVzZWQuCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKyAgICAKKyAgICBh
bmltYXRlTG9vcDogZnVuY3Rpb24odGltZXN0YW1wKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMu
YW5pbWF0ZSgpKQorICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0
ZUxvb3AuYmluZCh0aGlzKSk7CisgICAgfQorfQorCitmdW5jdGlvbiBCZW5jaG1hcmsob3B0aW9u
cykKK3sKKyAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9uczsKKyAgICB0aGlzLl9tZXRob2QgPSB0
aGlzLl9vcHRpb25zWyJtZXRob2QiXSB8fCAicmVxdWVzdEFuaW1hdGlvbkZyYW1lIjsKKworICAg
IHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7CisgICAgdGhpcy5fcmVjb3JkSW50ZXJ2YWwgPSAyMDA7
ICAgIAorICAgIHRoaXMuX2lzU2FtcGxpbmcgPSBmYWxzZTsKKworICAgIHZhciBnYWluID0gcGFy
c2VJbnQodGhpcy5fb3B0aW9uc1siZ2FpbiJdKSB8fCAxOworICAgIHZhciBsb3dWYWx1ZSA9IC1w
YXJzZUludCh0aGlzLl9vcHRpb25zWyJhZGRMaW1pdCJdKSB8fCAxOworICAgIHZhciBoaWdoVmFs
dWUgPSBwYXJzZUludCh0aGlzLl9vcHRpb25zWyJyZW1vdmVMaW1pdCJdKSB8fCAxOworICAgIAor
ICAgIHRoaXMuX2NvbnRyb2xsZXIgPSBuZXcgUElEQ29udHJvbGxlcihnYWluLCBvcHRpb25zLmZy
YW1lUmF0ZSwgbG93VmFsdWUsIGhpZ2hWYWx1ZSk7CisgICAgdGhpcy5fc2FtcGxlciA9IG5ldyBT
YW1wbGVyKDIpOworICAgIHRoaXMuX3N0YXRlID0gbmV3IEJlbmNobWFya1N0YXRlKHRoaXMub3B0
aW9ucy50ZXN0SW50ZXJ2YWwpOyAgICAKK30KKworQmVuY2htYXJrLnByb3RvdHlwZSA9Cit7Cisg
ICAgLy8gQ2FsbGVkIGZyb20gdGhlIGxvYWQgZXZlbnQgbGlzdGVuZXIgb3IgZnJvbSB0aGlzLnJ1
bigpLgorICAgIHN0YXJ0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fbWV0
aG9kID09ICJzZXRJbnRlcnZhbCIpCisgICAgICAgICAgICB0aGlzLl9hbmltYXRvci5zdGFydCgp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9hbmltYXRvci5hbmltYXRlTG9vcCgp
OworICAgIH0sCisgICAgCisgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGFuaW1hdG9yIHRvIGFkanVz
dCB0aGUgY29tcGxleGl0eSBvZiB0aGUgdGVzdC4KKyAgICB1cGRhdGU6IGZ1bmN0aW9uKGN1cnJl
bnRUaW1lT2Zmc2V0LCB0aW1lRGVsdGEsIGN1cnJlbnRGcmFtZVJhdGUpCisgICAgeworICAgICAg
ICB0aGlzLl9zdGF0ZS51cGRhdGUoY3VycmVudFRpbWVPZmZzZXQpOworICAgICAgICAKKyAgICAg
ICAgdmFyIHN0YWdlID0gdGhpcy5fc3RhdGUuY3VycmVudFN0YWdlKCk7CisgICAgICAgIGlmIChz
dGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQpIHsKKyAgICAgICAgICAgIHRo
aXMuY2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuU0FNUExJTkcgJiYgIXRoaXMu
X2lzU2FtcGxpbmcpIHsKKyAgICAgICAgICAgIHRoaXMuX3NhbXBsZXIuc3RhcnRTYW1wbGluZyh0
aGlzLl9zdGF0ZS5zYW1wbGluZ1RpbWVPZmZzZXQoKSk7CisgICAgICAgICAgICB0aGlzLl9pc1Nh
bXBsaW5nID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0dW5lVmFsdWUgPSAwOwor
ICAgICAgICBpZiAoISh0aGlzLl9pc1NhbXBsaW5nICYmIHRoaXMub3B0aW9ucy5maXhUZXN0Q29t
cGxleGl0eSkpIHsKKyAgICAgICAgICAgIC8vIFRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBmcmFt
ZVJhdGUgYW5kIHRlc3QgY29tcGxleGl0eSBpcyBpbnZlcnNlLXByb3BvcnRpb25hbCBzbyB3ZQor
ICAgICAgICAgICAgLy8gbmVlZCB0byB1c2UgdGhlIG5lZ2F0aXZlIG9mIFBJRENvbnRyb2xsZXIu
dHVuZSgpIHRvIGNoYW5nZSB0aGUgY29tcGxleGl0eSBvZiB0aGUgdGVzdC4KKyAgICAgICAgICAg
IHR1bmVWYWx1ZSA9IC10aGlzLl9jb250cm9sbGVyLnR1bmUoY3VycmVudEZyYW1lUmF0ZSwgdGlt
ZURlbHRhIC8gMTAwMCk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgY3VycmVudENvbXBsZXhp
dHkgPSB0aGlzLnR1bmUodHVuZVZhbHVlKTsKKyAgICAgICAgdGhpcy5yZWNvcmQoY3VycmVudFRp
bWVPZmZzZXQsIGN1cnJlbnRDb21wbGV4aXR5LCBjdXJyZW50RnJhbWVSYXRlKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfSwKKyAgICAKKyAgICByZWNvcmQ6IGZ1bmN0aW9uKGN1cnJlbnRU
aW1lT2Zmc2V0LCBjdXJyZW50Q29tcGxleGl0eSwgY3VycmVudEZyYW1lUmF0ZSkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX3NhbXBsZXIuc2FtcGxlKGN1cnJlbnRUaW1lT2Zmc2V0LCBbY3VycmVudENv
bXBsZXhpdHksIGN1cnJlbnRGcmFtZVJhdGVdKTsKKyAgICAgICAgCisgICAgICAgIGlmICh0eXBl
b2YgdGhpcy5fcmVjb3JkVGltZU9mZnNldCA9PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHRo
aXMuX3JlY29yZFRpbWVPZmZzZXQgPSBjdXJyZW50VGltZU9mZnNldDsKKworICAgICAgICB2YXIg
c3RhZ2UgPSB0aGlzLl9zdGF0ZS5jdXJyZW50U3RhZ2UoKTsKKyAgICAgICAgaWYgKHN0YWdlICE9
IEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRCAmJiBjdXJyZW50VGltZU9mZnNldCA8IHRo
aXMuX3JlY29yZFRpbWVPZmZzZXQgKyB0aGlzLl9yZWNvcmRJbnRlcnZhbCkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICB0aGlzLnNob3dSZXN1bHRzKHRoaXMuX3N0YXRlLmN1cnJlbnRN
ZXNzYWdlKCksIHRoaXMuX3N0YXRlLmN1cnJlbnRQcm9ncmVzcygpKTsKKyAgICAgICAgdGhpcy5f
cmVjb3JkVGltZU9mZnNldCA9IGN1cnJlbnRUaW1lT2Zmc2V0OworICAgIH0sCisgICAgCisgICAg
cnVuOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLnN0YXJ0KCk7CisKKyAgICAgICAg
dmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlz
OworICAgICAgICBmdW5jdGlvbiByZXNvbHZlV2hlbkZpbmlzaGVkKCkgeworICAgICAgICAgICAg
aWYgKHR5cGVvZiBzZWxmLl9zdGF0ZSAhPSAidW5kZWZpbmVkIiAmJiAoc2VsZi5fc3RhdGUuY3Vy
cmVudFN0YWdlKCkgPT0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcHJvbWlzZS5yZXNvbHZlKHNlbGYuX3NhbXBsZXIpOworICAgICAgICAg
ICAgc2V0VGltZW91dChyZXNvbHZlV2hlbkZpbmlzaGVkLmJpbmQoc2VsZiksIDUwKTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgcmVzb2x2ZVdoZW5GaW5pc2hlZCgpOworICAgICAgICBy
ZXR1cm4gcHJvbWlzZTsKKyAgICB9Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQgPSB7fTsK
KworLy8gVGhpcyBldmVudCBsaXN0ZW5lciBydW5zIHRoZSB0ZXN0IGlmIGl0IGlzIGxvYWRlZCBv
dXRzaWRlIHRoZSBiZW5jaG1hcmsgcnVubmVyLgord2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxv
YWQiLCBmdW5jdGlvbigpCit7CisgICAgaWYgKHdpbmRvdy5zZWxmICE9PSB3aW5kb3cudG9wKQor
ICAgICAgICByZXR1cm47CisgICAgd2luZG93LmJlbmNobWFyayA9IHdpbmRvdy5iZW5jaG1hcmtD
bGllbnQuY3JlYXRlKG51bGwsIG51bGwsIDMwMDAwLCA1MCwgbnVsbCwgbnVsbCk7CisgICAgd2lu
ZG93LmJlbmNobWFyay5zdGFydCgpOworfSk7CisKKy8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVk
IGZyb20gdGhlIHN1aXRlIGNvbnRyb2xsZXIgcnVuLWNhbGxiYWNrIHdoZW4gcnVubmluZyB0aGUg
YmVuY2htYXJrIHJ1bm5lci4KK3dpbmRvdy5ydW5CZW5jaG1hcmsgPSBmdW5jdGlvbihzdWl0ZSwg
dGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIHZhciBtZXJn
ZWRPcHRpb25zID0gVXRpbGl0aWVzLm1lcmdlT2JqZWN0cyhvcHRpb25zLCBVdGlsaXRpZXMucGFy
c2VQYXJhbWV0ZXJzKCkpOworICAgIHdpbmRvdy5iZW5jaG1hcmsgPSB3aW5kb3cuYmVuY2htYXJr
Q2xpZW50LmNyZWF0ZShzdWl0ZSwgdGVzdCwgbWVyZ2VkT3B0aW9ucywgcmVjb3JkVGFibGUsIHBy
b2dyZXNzQmFyKTsKKyAgICByZXR1cm4gd2luZG93LmJlbmNobWFyay5ydW4oKTsKK30KSW5kZXg6
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWF0aC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21h
dGguanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL21hdGguanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNzQgQEAKK3ZhciBN
YXRyaXggPQoreworICAgIGluaXQ6IGZ1bmN0aW9uKG0sIG4sIHYpCisgICAgeworICAgICAgICBy
ZXR1cm4gQXJyYXkobSAqIG4pLmZpbGwodik7CisgICAgfSwKKyAgICAKKyAgICB6ZXJvczogZnVu
Y3Rpb24obSwgbikKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRyaXguaW5pdChtLCBuLCAwKTsK
KyAgICB9LAorICAgIAorICAgIG9uZXM6IGZ1bmN0aW9uKG0sIG4pCisgICAgeworICAgICAgICBy
ZXR1cm4gTWF0cml4LmluaXQobSwgbiwgMSk7CisgICAgfSwKKyAgICAKKyAgICBpZGVudGl0eTog
ZnVuY3Rpb24obikKKyAgICB7CisgICAgICAgIHZhciBvdXQgPSBuZXcgTWF0cml4Lnplcm9zKG4s
IG4pOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkKKyAgICAgICAgICAgIG91
dFtpICogbiArIGldID0gMTsKKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9LAorICAgIAorICAg
IHN0cjogZnVuY3Rpb24oQSwgbiwgbSkKKyAgICB7CisgICAgICAgIHZhciBvdXQgPSAobSA+IDEg
JiYgbiA+IDEgPyAiTWF0cml4WyIgKyBuICsgIiwgIiArIG0gOiAiVmVjdG9yWyIgKyBtICogbikg
KyAiXSA9IFsiOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4gKiBtOyArK2kpIHsKKyAg
ICAgICAgICAgIG91dCArPSBBW2ldOworICAgICAgICAgICAgaWYgKGkgPCBuICogbSAtIDEpCisg
ICAgICAgICAgICAgICAgb3V0ICs9ICIsICI7CisgICAgICAgIH0gICAgICAgCisgICAgICAgIHJl
dHVybiBvdXQgKyAiXSI7CisgICAgfSwKKyAgICAKKyAgICBwb3M6IGZ1bmN0aW9uKG0sIGksIGop
CisgICAgeworICAgICAgICByZXR1cm4gbSAqIGkgKyBqOworICAgIH0sCisgICAgCisgICAgYWRk
OiBmdW5jdGlvbihBLCBCLCBuLCBtKQorICAgIHsKKyAgICAgICAgdmFyIG91dCA9IE1hdHJpeC56
ZXJvcyhuLCBtKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuICogbTsgKytpKQorICAg
ICAgICAgICAgb3V0W2ldID0gQVtpXSArIEJbaV07CisgICAgICAgIHJldHVybiBvdXQ7CisgICAg
fSwKKyAgICAKKyAgICBzdWJ0cmFjdDogZnVuY3Rpb24oQSwgQiwgbiwgbSkKKyAgICB7CisgICAg
ICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3MobiwgbSk7CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbiAqIG07ICsraSkKKyAgICAgICAgICAgIG91dFtpXSA9IEFbaV0gLSBCW2ldOworICAg
ICAgICByZXR1cm4gb3V0OworICAgIH0sCisgICAgCisgICAgc2NhbGU6IGZ1bmN0aW9uKHMsIEEs
IG4sIG0pCisgICAgeworICAgICAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIG0pOworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4gKiBtOyArK2kpCisgICAgICAgICAgICBvdXRbaV0g
PSBzICogQVtpXTsKKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9LAorICAgIAorICAgIHRyYW5z
cG9zZTogZnVuY3Rpb24oQSwgbiwgbSkKKyAgICB7CisgICAgICAgIHZhciBvdXQgPSBNYXRyaXgu
emVyb3MobSwgbik7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAg
ICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG07ICsraikKKyAgICAgICAgICAgICAgICBvdXRb
TWF0cml4LnBvcyhuLCBpLCBqKV0gPSBBW01hdHJpeC5wb3MobSwgaiwgaSldOworICAgICAgICB9
ICAgICAgIAorICAgICAgICByZXR1cm4gb3V0OworICAgIH0sCisgICAgCisgICAgbXVsdGlwbHk6
IGZ1bmN0aW9uKEEsIEIsIG4sIG0sIHApCisgICAgeworICAgICAgICB2YXIgb3V0ID0gTWF0cml4
Lnplcm9zKG4sIHApOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkgeworICAg
ICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwOyArK2opIHsKKyAgICAgICAgICAgICAgICBm
b3IgKHZhciBrID0gMDsgayA8IG07ICsraykgeworICAgICAgICAgICAgICAgICAgICBvdXRbTWF0
cml4LnBvcyhwLCBpLCBqKV0gKz0gQVtNYXRyaXgucG9zKG0sIGksIGspXSAqIEJbTWF0cml4LnBv
cyhwLCBrLCBqKV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIHJldHVybiBvdXQ7CisgICAgfQorfQorCit2YXIgVmVjdG9yMyA9Cit7CisgICAg
emVyb3M6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRyaXguemVyb3MoMSwg
Myk7CisgICAgfSwKKyAgICAKKyAgICBvbmVzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBy
ZXR1cm4gTWF0cml4Lm9uZXMoMSwgMyk7CisgICAgfSwKKyAgICAKKyAgICBzdHI6IGZ1bmN0aW9u
KHYpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LnN0cih2LCAxLCAzKTsKKyAgICB9LAor
ICAgIAorICAgIGFkZDogZnVuY3Rpb24odiwgdykKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRy
aXguYWRkKHYsIHcsIDEsIDMpOworICAgIH0sCisgICAgCisgICAgc3VidHJhY3Q6IGZ1bmN0aW9u
KHYsIHcpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LnN1YnRyYWN0KHYsIHcsIDEsIDMp
OworICAgIH0sCisgICAgCisgICAgc2NhbGU6IGZ1bmN0aW9uKHMsIHYpCisgICAgeworICAgICAg
ICByZXR1cm4gTWF0cml4LnNjYWxlKHMsIHYsIDEsIDMpOworICAgIH0sCisgICAgCisgICAgbXVs
dGlwbHlNYXRyaXgzOiBmdW5jdGlvbih2LCBBKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJp
eC5tdWx0aXBseSh2LCBBLCAxLCAzLCAzKTsKKyAgICB9LAorICAgIAorICAgIG11bHRpcGx5VmVj
dG9yMzogZnVuY3Rpb24odiwgdykKKyAgICB7CisgICAgICAgIHZhciBvdXQgPSAwOworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDM7ICsraSkKKyAgICAgICAgICAgIG91dCArPSB2W2ldICog
d1tpXTsKKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9Cit9CisKK3ZhciBNYXRyaXgzID0KK3sK
KyAgICB6ZXJvczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC56ZXJv
cygzLCAzKTsKKyAgICB9LAorICAgIAorICAgIGlkZW50aXR5OiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gTWF0cml4LmlkZW50aXR5KDMsIDMpOworICAgIH0sCisgICAgCisgICAg
c3RyOiBmdW5jdGlvbihBKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC5zdHIoQSwgMywg
Myk7CisgICAgfSwKKyAgICAKKyAgICBwb3M6IGZ1bmN0aW9uKGksIGopCisgICAgeworICAgICAg
ICByZXR1cm4gTWF0cml4LnBvcygzLCBpLCBqKTsKKyAgICB9LAorICAgIAorICAgIGFkZDogZnVu
Y3Rpb24oQSwgQikKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRyaXguYWRkKEEsIEIsIDMsIDMp
OworICAgIH0sCisgICAgCisgICAgc3VidHJhY3Q6IGZ1bmN0aW9uKEEsIEIpCisgICAgeworICAg
ICAgICByZXR1cm4gTWF0cml4LnN1YnRyYWN0KEEsIEIsIDMsIDMpOworICAgIH0sCisgICAgCisg
ICAgc2NhbGU6IGZ1bmN0aW9uKHMsIEEpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LnNj
YWxlKHMsIEEsIDMsIDMpOworICAgIH0sCisgICAgCisgICAgdHJhbnNwb3NlOiBmdW5jdGlvbihB
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC50cmFuc3Bvc2UoQSwgMywgMyk7CisgICAg
fSwKKyAgICAKKyAgICBtdWx0aXBseU1hdHJpeDM6IGZ1bmN0aW9uKEEsIEIpCisgICAgeworICAg
ICAgICByZXR1cm4gTWF0cml4Lm11bHRpcGx5KEEsIEIsIDMsIDMsIDMpOworICAgIH0sCisgICAg
CisgICAgbXVsdGlwbHlWZWN0b3IzOiBmdW5jdGlvbihBLCB2KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIE1hdHJpeC5tdWx0aXBseShBLCB2LCAzLCAzLCAxKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IFBJRENvbnRyb2xsZXIoSywgeXNwLCB1bG93LCB1aGlnaCkKK3sKKyAgICB0aGlzLl95c3AgPSB5
c3A7CisKKyAgICB0aGlzLl9UZCA9IDU7CisgICAgdGhpcy5fVGkgPSAxNTsKKworICAgIHRoaXMu
X0twID0gSzsKKyAgICB0aGlzLl9LZCA9IEsgLyB0aGlzLl9UZDsKKyAgICB0aGlzLl9LaSA9IEsg
LyB0aGlzLl9UaTsKKworICAgIHRoaXMuX2VvbGQgPSAwOworICAgIHRoaXMuX0kgPSAwOworfQor
CitQSURDb250cm9sbGVyLnByb3RvdHlwZSA9Cit7CisgICAgX3NhdDogZnVuY3Rpb24odiwgbG93
LCBoaWdoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHYgPCBsb3cgPyBsb3cgOiAodiA+IGhpZ2gg
PyBoaWdoIDogdik7CisgICAgfSwKKyAgICAKKyAgICB0dW5lOiBmdW5jdGlvbih5LCBoKQorICAg
IHsKKyAgICAgICAgLy8gQ3VycmVudCBlcnJvci4KKyAgICAgICAgdmFyIGUgPSB0aGlzLl95c3Ag
LSB5OworCisgICAgICAgIC8vIFByb3BvcnRpb25hbCB0ZXJtLgorICAgICAgICB2YXIgUCA9IHRo
aXMuX0twICogZTsKKyAgICAgICAgCisgICAgICAgIC8vIERlcml2YXRpdmUgdGVybSBpcyB0aGUg
c2xvcGUgb2YgdGhlIGN1cnZlIGF0IHRoZSBjdXJyZW50IHRpbWUuCisgICAgICAgIHZhciBEID0g
dGhpcy5fS2QgKiAoZSAtIHRoaXMuX2VvbGQpIC8gaDsKKworICAgICAgICAvLyBJbnRlZ3JhbCB0
ZXJtIGlzIHRoZSBhcmVhIHVuZGVyIHRoZSBjdXJ2ZSBzdGFydGluZyBmcm9tIHRoZSBiZWdpbmlu
ZyB0aWxsIHRoZSBjdXJyZW50IHRpbWUuCisgICAgICAgIHRoaXMuX0kgKz0gdGhpcy5fS2kgKiAo
KGUgKyB0aGlzLl9lb2xkKSAvIDIpICogaDsKKworICAgICAgICAvLyBwaWQgY29udHJvbGxlciB2
YWx1ZS4KKyAgICAgICAgdmFyIHYgPSBQICsgRCArIHRoaXMuX0k7CisgICAgICAgIAorICAgICAg
ICAvLyBBdm9pZCBzcGlrZXMgYnkgYXBwbHlpbmcgYWN0dWF0b3Igc2F0dXJhdGlvbi4KKyAgICAg
ICAgdmFyIHUgPSB0aGlzLl9zYXQodiwgdGhpcy5fdWxvdywgdGhpcy5fdWhpZ2gpOyAgICAgICAg
CisKKyAgICAgICAgdGhpcy5fZW9sZCA9IGU7CisgICAgICAgIHJldHVybiB1OworICAgIH0KK30K
KworZnVuY3Rpb24gS2FsbWFuRXN0aW1hdG9yKCkKK3sKKyAgICB0aGlzLl9tYXRBID0gTWF0cml4
My5pZGVudGl0eSgpOworICAgIAorICAgIHRoaXMuX3ZlY0ggPSBWZWN0b3IzLnplcm9zKCk7Cisg
ICAgdGhpcy5fdmVjSFswXSA9IDE7CisgICAgCisgICAgdGhpcy5fbWF0USA9IE1hdHJpeDMuaWRl
bnRpdHkoKTsKKyAgICB0aGlzLl9SID0gMTAwMDsKKyAgICAKKyAgICB0aGlzLl92ZWNYX2VzdCA9
IFZlY3RvcjMub25lcygpOworICAgIHRoaXMuX21hdFBfZXN0ID0gTWF0cml4My56ZXJvcygpOwor
fQorCitLYWxtYW5Fc3RpbWF0b3IucHJvdG90eXBlID0KK3sKKyAgICBlc3RpbWF0ZTogZnVuY3Rp
b24odGltZURlbHRhLCBjdXJyZW50KQorICAgIHsKKyAgICAgICAgLy8gVXBkYXRlIHRoZSB0cmFu
c2l0aW9uIG1hdHJpeC4KKyAgICAgICAgdGhpcy5fbWF0QVtNYXRyaXgzLnBvcygwLCAyKV0gPSAx
OworCisgICAgICAgIC8vIFByZWRpY3RlZCBzdGF0ZSBhbmQgY292YXJpYW5jZS4KKyAgICAgICAg
dmFyIHZlY1hfcHJkID0gTWF0cml4My5tdWx0aXBseVZlY3RvcjModGhpcy5fbWF0QSwgdGhpcy5f
dmVjWF9lc3QpOworICAgICAgICB2YXIgbWF0UF9wcmQgPSBNYXRyaXgzLmFkZChNYXRyaXgzLm11
bHRpcGx5TWF0cml4MyhNYXRyaXgzLm11bHRpcGx5TWF0cml4Myh0aGlzLl9tYXRBLCB0aGlzLl9t
YXRQX2VzdCksIE1hdHJpeDMudHJhbnNwb3NlKHRoaXMuX21hdEEpKSwgdGhpcy5fbWF0USk7CisK
KyAgICAgICAgLy8gRXN0aW1hdGlvbi4KKyAgICAgICAgdmFyIHZlY0IgPSBWZWN0b3IzLm11bHRp
cGx5TWF0cml4Myh0aGlzLl92ZWNILCBNYXRyaXgzLnRyYW5zcG9zZShtYXRQX3ByZCkpOworICAg
ICAgICB2YXIgUyA9IFZlY3RvcjMubXVsdGlwbHlWZWN0b3IzKHZlY0IsIHRoaXMuX3ZlY0gpICsg
dGhpcy5fUjsKKworICAgICAgICB2YXIgdmVjR2FpbiA9IFZlY3RvcjMuc2NhbGUoMS9TLCB2ZWNC
KTsKKyAgICAgICAgCisgICAgICAgIC8vIEVzdGltYXRlZCBzdGF0ZSBhbmQgY292YXJpYW5jZS4K
KyAgICAgICAgdGhpcy5fdmVjWF9lc3QgPSBWZWN0b3IzLmFkZCh2ZWNYX3ByZCwgVmVjdG9yMy5z
Y2FsZShjdXJyZW50IC0gVmVjdG9yMy5tdWx0aXBseVZlY3RvcjModGhpcy5fdmVjSCwgdmVjWF9w
cmQpLCB2ZWNHYWluKSk7CisgICAgICAgIHRoaXMuX21hdFBfZXN0ID0gTWF0cml4My5zdWJ0cmFj
dChtYXRQX3ByZCwgTWF0cml4My5zY2FsZShWZWN0b3IzLm11bHRpcGx5VmVjdG9yMyh2ZWNHYWlu
LCB0aGlzLl92ZWNIKSwgbWF0UF9wcmQpKTsKKworICAgICAgICAvLyBDb21wdXRlIHRoZSBlc3Rp
bWF0ZWQgbWVhc3VyZW1lbnQuCisgICAgICAgIHJldHVybiBWZWN0b3IzLm11bHRpcGx5VmVjdG9y
Myh0aGlzLl92ZWNILCAgdGhpcy5fdmVjWF9lc3QpOworICAgIH0KK30KSW5kZXg6IFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuY3NzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuY3Nz
CShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291
cmNlcy9zdGFnZS5jc3MJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBAQAoraHRtbCB7Cisg
IGhlaWdodDogMTAwJTsKK30KK2JvZHkgeworICB3aWR0aDogMTAwJTsKKyAgaGVpZ2h0OiAxMDAl
OworICBvdmVyZmxvdzogaGlkZGVuOworICBtYXJnaW46IDA7CisgIHBhZGRpbmc6IDA7CisgIGJh
Y2tncm91bmQtY29sb3I6ICNlYWVhZWE7Cit9CisKKyNzdGFnZSB7CisgIHdpZHRoOiAxMDAlOwor
ICBoZWlnaHQ6IDEwMCU7CisgIGJhY2tncm91bmQtY29sb3I6ICNlYWVhZWE7Cit9CkluZGV4OiBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3Rh
Z2UuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL3N0YWdlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc5IEBACitmdW5j
dGlvbiBSb3RhdGVyKHJvdGF0ZUludGVydmFsKQoreworICAgIHRoaXMuX3RpbWVEZWx0YSA9IDA7
CisgICAgdGhpcy5fcm90YXRlSW50ZXJ2YWwgPSByb3RhdGVJbnRlcnZhbDsKK30KKworUm90YXRl
ci5wcm90b3R5cGUgPQoreworICAgIGdldCBpbnRlcnZhbCgpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fcm90YXRlSW50ZXJ2YWw7CisgICAgfSwKKyAgICAKKyAgICBuZXh0OiBmdW5jdGlv
bih0aW1lRGVsdGEpCisgICAgeworICAgICAgICB0aGlzLl90aW1lRGVsdGEgPSAodGhpcy5fdGlt
ZURlbHRhICsgdGltZURlbHRhKSAlIHRoaXMuX3JvdGF0ZUludGVydmFsOworICAgIH0sCisgICAg
CisgICAgZGVncmVlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gKDM2MCAqIHRo
aXMuX3RpbWVEZWx0YSkgLyB0aGlzLl9yb3RhdGVJbnRlcnZhbDsKKyAgICB9LAorICAgIAorICAg
IHJvdGF0ZVo6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiAicm90YXRlWigiICsg
TWF0aC5mbG9vcih0aGlzLmRlZ3JlZSgpKSArICJkZWcpIjsKKyAgICB9LAorICAgIAorICAgIHJv
dGF0ZTogZnVuY3Rpb24oY2VudGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuICJyb3RhdGUoIiAr
IE1hdGguZmxvb3IodGhpcy5kZWdyZWUoKSkgKyAiLCAiICsgY2VudGVyLnggKyAiLCIgKyBjZW50
ZXIueSArICIpIjsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIFN0YWdlKGVsZW1lbnQsIG9wdGlvbnMp
Cit7CisgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDsKK30KKworU3RhZ2UucHJvdG90eXBlID0K
K3sKKyAgICBnZXQgc2l6ZSgpCisgICAgeworICAgICAgICB2YXIgc3R5bGVzID0gd2luZG93Lmdl
dENvbXB1dGVkU3R5bGUodGhpcy5lbGVtZW50KTsKKyAgICAgICAgdmFyIHBhZGRpbmcgPSBuZXcg
SW5zZXRzKAorICAgICAgICAgICAgcGFyc2VGbG9hdChzdHlsZXMucGFkZGluZ1RvcCksCisgICAg
ICAgICAgICBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nUmlnaHQpLAorICAgICAgICAgICAgcGFy
c2VGbG9hdChzdHlsZXMucGFkZGluZ0JvdHRvbSksCisgICAgICAgICAgICBwYXJzZUZsb2F0KHN0
eWxlcy5wYWRkaW5nVG9wKSk7CisgICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy5lbGVtZW50
LmNsaWVudFdpZHRoIC0gcGFkZGluZy53aWR0aCwgdGhpcy5lbGVtZW50LmNsaWVudEhlaWdodCAt
IHBhZGRpbmcuaGVpZ2h0KTsKKyAgICB9LAorICAgIAorICAgIHJhbmRvbTogZnVuY3Rpb24obWlu
LCBtYXgpCisgICAgeworICAgICAgICByZXR1cm4gKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWlu
KSkgKyBtaW47CisgICAgfSwKKyAgICAKKyAgICByYW5kb21JbnQ6IGZ1bmN0aW9uKG1pbiwgbWF4
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy5yYW5kb20obWluLCBtYXgp
KTsKKyAgICB9LAorICAgIAorICAgIHJhbmRvbVBvc2l0aW9uOiBmdW5jdGlvbihtYXhQb3NpdGlv
bikKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy5yYW5kb21JbnQoMCwgbWF4
UG9zaXRpb24ueCksIHRoaXMucmFuZG9tSW50KDAsIG1heFBvc2l0aW9uLnkpKTsKKyAgICB9LAor
ICAgIAorICAgIHJhbmRvbVNxdWFyZVNpemU6IGZ1bmN0aW9uKG1pbiwgbWF4KQorICAgIHsKKyAg
ICAgICAgdmFyIHNpZGUgPSB0aGlzLnJhbmRvbShtaW4sIG1heCk7CisgICAgICAgIHJldHVybiBu
ZXcgUG9pbnQoc2lkZSwgc2lkZSk7CisgICAgfSwKKyAgICAKKyAgICByYW5kb21WZWxvY2l0eTog
ZnVuY3Rpb24obWF4VmVsb2NpdHkpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5yYW5kb20o
bWF4VmVsb2NpdHkgLyA4LCBtYXhWZWxvY2l0eSk7CisgICAgfSwKKyAgICAKKyAgICByYW5kb21B
bmdsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMucmFuZG9tKDAsIE1h
dGguUEkgKiAyKTsKKyAgICB9LAorICAgIAorICAgIHJhbmRvbUNvbG9yOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICB2YXIgbWluID0gMzI7CisgICAgICAgIHZhciBtYXggPSAyNTYgLSAzMjsK
KyAgICAgICAgcmV0dXJuICIjIgorICAgICAgICAgICAgKyB0aGlzLnJhbmRvbUludChtaW4sIG1h
eCkudG9TdHJpbmcoMTYpCisgICAgICAgICAgICArIHRoaXMucmFuZG9tSW50KG1pbiwgbWF4KS50
b1N0cmluZygxNikKKyAgICAgICAgICAgICsgdGhpcy5yYW5kb21JbnQobWluLCBtYXgpLnRvU3Ry
aW5nKDE2KTsKKyAgICB9LAorICAgIAorICAgIHJhbmRvbVJvdGF0ZXI6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBuZXcgUm90YXRlcih0aGlzLnJhbmRvbSgxMDAwLCAxMDAwMCkp
OworICAgIH0sCisKKyAgICB0dW5lOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aHJvdyAi
Tm90IGltcGxlbWVudGVkIjsKKyAgICB9LAorICAgIAorICAgIGFuaW1hdGU6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHRocm93ICJOb3QgaW1wbGVtZW50ZWQiOworICAgIH0sCisgICAgCisg
ICAgY2xlYXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnR1bmUoLXRo
aXMudHVuZSgwKSk7CisgICAgfQorfQorCitmdW5jdGlvbiBTdGFnZUFuaW1hdG9yKGJlbmNobWFy
aykKK3sKKyAgICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyayk7Cit9OworCitTdGFnZUFu
aW1hdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQW5pbWF0b3IucHJvdG90eXBlKTsKK1N0
YWdlQW5pbWF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU3RhZ2VBbmltYXRvcjsKKworU3Rh
Z2VBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAoIUFu
aW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLmFuaW1hdGUodGhpcy50aW1lRGVsdGEoKSk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIFN0YWdlQmVuY2htYXJrKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgQmVuY2htYXJr
LmNhbGwodGhpcywgb3B0aW9ucyk7CisgICAgCisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgic3RhZ2UiKTsKKyAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgid2lkdGgi
LCBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoKTsKKyAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgi
aGVpZ2h0IiwgZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQpOworICAgIAorICAgIHRoaXMuX3N0
YWdlID0gdGhpcy5jcmVhdGVTdGFnZShlbGVtZW50KTsKKyAgICB0aGlzLl9hbmltYXRvciA9IHRo
aXMuY3JlYXRlQW5pbWF0b3IoKTsKKyAgICB0aGlzLl9zdWl0ZSA9IHN1aXRlOworICAgIHRoaXMu
X3Rlc3QgPSB0ZXN0OworICAgIHRoaXMuX3JlY29yZFRhYmxlID0gcmVjb3JkVGFibGU7CisgICAg
dGhpcy5fcHJvZ3Jlc3NCYXIgPSBwcm9ncmVzc0JhcjsKK30KKworU3RhZ2VCZW5jaG1hcmsucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShCZW5jaG1hcmsucHJvdG90eXBlKTsKK1N0YWdlQmVuY2ht
YXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFN0YWdlQmVuY2htYXJrOworCitTdGFnZUJlbmNo
bWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQoreworICAgIHJl
dHVybiBuZXcgU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK1N0YWdlQmVuY2ht
YXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvciA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4g
bmV3IFN0YWdlQW5pbWF0b3IodGhpcyk7Cit9CisKK1N0YWdlQmVuY2htYXJrLnByb3RvdHlwZS50
dW5lID0gZnVuY3Rpb24oY291bnQpCit7CisgICAgcmV0dXJuIHRoaXMuX3N0YWdlLnR1bmUoY291
bnQpOworfQorCitTdGFnZUJlbmNobWFyay5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpCit7
CisgICAgcmV0dXJuIHRoaXMuX3N0YWdlLmNsZWFyKCk7Cit9CisKK1N0YWdlQmVuY2htYXJrLnBy
b3RvdHlwZS5zaG93UmVzdWx0cyA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHByb2dyZXNzKQoreworICAg
IGlmICghdGhpcy5fcmVjb3JkVGFibGUgfHwgIXRoaXMuX3Byb2dyZXNzQmFyIHx8ICF0aGlzLl9z
dWl0ZSB8fCAhdGhpcy5fdGVzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHRoaXMub3B0
aW9ucy5zaG93UnVubmluZ1Jlc3VsdHMpCisgICAgICAgIHRoaXMuX3JlY29yZFRhYmxlLnNob3dS
ZWNvcmQodGhpcy5fc3VpdGUsIHRoaXMuX3Rlc3QsIHRoaXMuX3NhbXBsZXIsIG1lc3NhZ2UpOwor
CisgICAgdGhpcy5fcHJvZ3Jlc3NCYXIuc2V0UG9zKHByb2dyZXNzKTsKK30KSW5kZXg6IFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvdXRp
bGl0aWVzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL3Jlc291cmNlcy91dGlsaXRpZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBA
QAord2luZG93LlV0aWxpdGllcyA9Cit7CisgICAgX3BhcnNlOiBmdW5jdGlvbihzdHIsIHNlcCkK
KyAgICB7CisgICAgICAgIHZhciBvdXRwdXQgPSB7fTsKKyAgICAgICAgc3RyLnNwbGl0KHNlcCku
Zm9yRWFjaChmdW5jdGlvbihwYXJ0KSB7CisgICAgICAgICAgICB2YXIgaXRlbSA9IHBhcnQuc3Bs
aXQoIj0iKTsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudChpdGVt
WzFdKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZVswXSA9PSAiJyIgKQorICAgICAgICAgICAgICAg
IG91dHB1dFtpdGVtWzBdXSA9IHZhbHVlLnN1YnN0cigxLCB2YWx1ZS5sZW5ndGggLSAyKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvdXRwdXRbaXRlbVswXV0gPSB2YWx1ZTsg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBvdXRwdXQ7Cisg
ICAgfSwKKyAgICAKKyAgICBwYXJzZVBhcmFtZXRlcnM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9wYXJzZSh3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cigxKSwg
IiYiKTsKKyAgICB9LAorICAgIAorICAgIHBhcnNlQXJndW1lbnRzOiBmdW5jdGlvbihzdHIpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2Uoc3RyLCAiICIpOworICAgIH0sCisgICAg
CisgICAgZXh0ZW5kT2JqZWN0OiBmdW5jdGlvbihvYmoxLCBvYmoyKQorICAgIHsKKyAgICAgICAg
Zm9yICh2YXIgYXR0cm5hbWUgaW4gb2JqMikKKyAgICAgICAgICAgIG9iajFbYXR0cm5hbWVdID0g
b2JqMlthdHRybmFtZV07CisgICAgICAgIHJldHVybiBvYmoxOworICAgIH0sCisgICAgCisgICAg
Y29weU9iamVjdDogZnVuY3Rpb24ob2JqKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZXh0
ZW5kT2JqZWN0KHt9LCBvYmopOworICAgIH0sCisgICAgCisgICAgbWVyZ2VPYmplY3RzOiBmdW5j
dGlvbihvYmoxLCBvYmoyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5kT2JqZWN0
KHRoaXMuY29weU9iamVjdChvYmoxKSwgb2JqMik7CisgICAgfSwKKyAgICAKKyAgICBjcmVhdGVT
dmdFbGVtZW50OiBmdW5jdGlvbihuYW1lLCBhdHRycywgeGxpbmtBdHRycywgcGFyZW50KQorICAg
IHsKKyAgICAgICAgY29uc3Qgc3ZnTmFtZXNwYWNlID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIjsKKyAgICAgICAgY29uc3QgeGxpbmtOYW1lc3BhY2UgPSAiaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayI7CisKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoc3ZnTmFtZXNwYWNlLCBuYW1lKTsKKyAgICAgICAgCisgICAgICAgIGZvciAodmFyIGtl
eSBpbiBhdHRycykKKyAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKGtleSwgYXR0cnNb
a2V5XSk7CisgICAgICAgICAgICAKKyAgICAgICAgZm9yICh2YXIga2V5IGluIHhsaW5rQXR0cnMp
CisgICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZU5TKHhsaW5rTmFtZXNwYWNlLCBrZXks
IHhsaW5rQXR0cnNba2V5XSk7CisgICAgICAgICAgICAKKyAgICAgICAgcGFyZW50LmFwcGVuZENo
aWxkKGVsZW1lbnQpOworICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICB9Cit9CkluZGV4OiBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnN2Zwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2Vz
L3lpbi15YW5nLnN2ZwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcuc3ZnCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTcgQEAKKzxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIw
IDAgMjAwIDIwMCI+DQorICA8ZGVmcz4NCisgICAgPGNsaXBQYXRoIGlkPSJsZWZ0LWhhbGYiPg0K
KyAgICAgIDxyZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0iMjAwIi8+DQorICAgIDwvY2xpcFBhdGg+
DQorICAgIDxjbGlwUGF0aCBpZD0icmlnaHQtaGFsZiI+DQorICAgICAgPHJlY3QgeD0iMTAwIiB3
aWR0aD0iMTAwIiBoZWlnaHQ9IjIwMCIvPg0KKyAgICA8L2NsaXBQYXRoPg0KKyAgPC9kZWZzPg0K
KyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iMTAwIiByPSI5OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJn
cmVlbiIgc3Ryb2tlLXdpZHRoPSIyIi8+DQorICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSIxMDAiIHI9
Ijk4IiBmaWxsPSJ3aGl0ZSIgY2xpcC1wYXRoPSJ1cmwoI2xlZnQtaGFsZikiLz4NCisgIDxjaXJj
bGUgY3g9IjEwMCIgY3k9IjEwMCIgcj0iOTgiIGZpbGw9ImdyZWVuIiBjbGlwLXBhdGg9InVybCgj
cmlnaHQtaGFsZikiLz4NCisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjUwIiAgcj0iNDkiIGZpbGw9
ImdyZWVuIi8+DQorICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSIxNDgiIHI9IjQ5IiBmaWxsPSJ3aGl0
ZSIvPg0KKyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iNTAiICByPSIxMCIgZmlsbD0id2hpdGUiLz4g
ICAgDQorICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSIxNDgiIHI9IjEwIiBmaWxsPSJncmVlbiIvPg0K
Kzwvc3ZnPg0KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0
ZS90ZW1wbGF0ZS1jYW52YXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtY2FudmFzLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUt
Y2FudmFzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4
dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgorICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3N0YXRpc3RpY3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAgCisgICAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RlbXBs
YXRlLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8Y2FudmFzIGlk
PSJzdGFnZSI+PC9jYW52YXM+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtY3NzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRl
LWNzcy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNzcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bGluayByZWw9InN0
eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAor
ICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy90ZW1wbGF0ZS1jc3MuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CisgICAgPGRpdiBpZD0ic3RhZ2UiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLXN2Zy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0
ZS90ZW1wbGF0ZS1zdmcuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1zdmcuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0
YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3RhdGlzdGljcy5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2Ny
aXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorICAgIDxzdmcgaWQ9InN0YWdlIj48L3N2Zz4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJj
ZXMvdGVtcGxhdGUtY2FudmFzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFzLmpzCShyZXZp
c2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jl
c291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQg
QEAKK2Z1bmN0aW9uIFRlbXBsYXRlQ2FudmFzT2JqZWN0KHN0YWdlKQoreworICAgIC8vIEZvciB0
aGUgY2FudmFzIHN0YWdlLCBtb3N0IGxpa2VseSB5b3Ugd2lsbCBuZWVkIHRvIGNyZWF0ZSB5b3Vy
CisgICAgLy8gYW5pbWF0ZWQgb2JqZWN0IHNpbmNlIGl0J3Mgb25seSBkcmF3IHRpbWUgdGhpbmcu
CisgICAgCisgICAgLy8gVE9ETzogRmlsbCBpbiB5b3VyIG9iamVjdCBkYXRhLgorfQorCitUZW1w
bGF0ZUNhbnZhc09iamVjdC5wcm90b3R5cGUuX2RyYXcgPSBmdW5jdGlvbigpCit7CisgICAgLy8g
VE9ETzogRHJhdyB5b3VyIG9iamVjdC4KK30KKworVGVtcGxhdGVDYW52YXNPYmplY3QucHJvdG90
eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCit7CisgICAgLy8gUmVkcmF3IHRoZSBh
bmltYXRlZCBvYmplY3QuIFRoZSBsYXN0IHRpbWUgdGhpcyBhbmltYXRlZAorICAgIC8vIGl0ZW0g
d2FzIGRyYXduIGJlZm9yZSAndGltZURlbHRhJy4KKyAgICAKKyAgICAvLyBUT0RPOiBNb3ZlIHlv
dXIgb2JqZWN0LgorICAgIAorICAgIC8vIFJlZHJhdyB5b3VyIG9iamVjdC4KKyAgICB0aGlzLl9k
cmF3KCk7Cit9CisKK2Z1bmN0aW9uIFRlbXBsYXRlQ2FudmFzU3RhZ2UoZWxlbWVudCwgb3B0aW9u
cykKK3sKKyAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgIHRoaXMu
Y29udGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOworCisgICAgLy8gVE9ETzog
RGVmaW5lIGEgY29sbGVjdGlvbiBmb3IgeW91ciBvYmplY3RzLgorfQorCitUZW1wbGF0ZUNhbnZh
c1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2UucHJvdG90eXBlKTsKK1RlbXBs
YXRlQ2FudmFzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVGVtcGxhdGVDYW52YXNTdGFn
ZTsKKworVGVtcGxhdGVDYW52YXNTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50
KQoreworICAgIC8vIElmIGNvdW50IGlzIC12ZSwgLWNvdW50IGVsZW1lbnRzIG5lZWQgdG8gYmUg
cmVtb3ZlZCBmb3JtIHRoZQorICAgIC8vIHN0YWdlLiBJZiBjb3VudCBpcyArdmUsICtjb3VudCBl
bGVtZW50cyBuZWVkIHRvIGJlIGFkZGVkIHRvCisgICAgLy8gdGhlIHN0YWdlLgorICAgIAorICAg
IC8vIFRPRE86IENoYW5nZSBvYmplY3RzIGluIHRoZSBzdGFnZS4KKyAgICAKKyAgICAvLyBSZXR1
cm4gdGhlIG51bWJlciBvZiBhbGwgdGhlIGVsZW1lbnRzIGluIHRoZSBzdGFnZS4KKyAgICAvLyBU
aGlzIG51bWJlciBpcyByZWNvcmRlZCBpbiB0aGUgc2FtcGxlZCBkYXRhLgorICAgIAorICAgIC8v
IFRPRE86IFJldHVybiB0aGUgY291bnQgb2YgdGhlIG9iamVjdHMgaW4gdGhlIHN0YWdlLgorICAg
IHJldHVybiAwOworfQorCitUZW1wbGF0ZUNhbnZhc1N0YWdlLnByb3RvdHlwZS5hbmltYXRlID0g
ZnVuY3Rpb24odGltZURlbHRhKQoreworICAgIC8vIEFuaW1hdGUgdGhlIGVsZW1lbnRzIHN1Y2gg
dGhhdCBhbGwgb2YgdGhlbSBhcmUgcmVkcmF3bi4gTW9zdAorICAgIC8vIGxpa2VseSB5b3Ugd2ls
bCBuZWVkIHRvIGNhbGwgVGVtcGxhdGVDYW52YXNPYmplY3QuYW5pbWF0ZSgpCisgICAgLy8gZm9y
IGFsbCB5b3VyIGFuaW1hdGVkIG9iamVjdHMgaGVyZS4KKworICAgIC8vIFRPRE86IExvb3AgdGhy
b3VnaCBhbGwgeW91ciBvYmplY3RzIGFuZCBhc2sgdGhlbSB0byBhbmltYXRlLgorfQorCitmdW5j
dGlvbiBUZW1wbGF0ZUNhbnZhc0FuaW1hdG9yKGJlbmNobWFyaykKK3sKKyAgICBBbmltYXRvci5j
YWxsKHRoaXMsIGJlbmNobWFyayk7CisgICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3Rh
Z2UuY29udGV4dDsKK30KKworVGVtcGxhdGVDYW52YXNBbmltYXRvci5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKFN0YWdlQW5pbWF0b3IucHJvdG90eXBlKTsKK1RlbXBsYXRlQ2FudmFzQW5pbWF0
b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVGVtcGxhdGVDYW52YXNBbmltYXRvcjsKKworVGVt
cGxhdGVDYW52YXNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkKK3sKKyAg
ICAvLyBNb3N0IGxpa2VseSB5b3Ugd2lsbCBuZWVkIHRvIGNsZWFyIHRoZSBjYW52YXMgd2l0aCBl
dmVyeSByZWRyYXcuCisgICAgdGhpcy5fY29udGV4dC5jbGVhclJlY3QoMCwgMCwgdGhpcy5fYmVu
Y2htYXJrLl9zdGFnZS5zaXplLngsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS55KTsKKwor
ICAgIC8vIFRPRE86IERyYXcgc2NlbmUgc3R1ZmYgaGVyZSBpZiBuZWVkZWQuCisKKyAgICByZXR1
cm4gU3RhZ2VBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMpOworfQorCitmdW5j
dGlvbiBUZW1wbGF0ZUNhbnZhc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3Jk
VGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3Vp
dGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK1RlbXBs
YXRlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VCZW5jaG1h
cmsucHJvdG90eXBlKTsKK1RlbXBsYXRlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrOworCitUZW1wbGF0ZUNhbnZhc0JlbmNobWFy
ay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQoreworICAgIC8vIEF0
dGFjaCB0aGUgc3RhZ2UgdG8gdGhlIGJlbmNobWFyay4KKyAgICByZXR1cm4gbmV3IFRlbXBsYXRl
Q2FudmFzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK1RlbXBsYXRlQ2FudmFz
QmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvciA9IGZ1bmN0aW9uKCkKK3sKKyAgICAv
LyBBdHRhY2ggdGhlIGFuaW1hdG9yIHRvIHRoZSBiZW5jaG1hcmsuCisgICAgcmV0dXJuIG5ldyBU
ZW1wbGF0ZUNhbnZhc0FuaW1hdG9yKHRoaXMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50
LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpCit7CisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgdGVz
dCBoYXJuZXNzIHdoaWNoIHN0YXJ0cyB0aGUKKyAgICAvLyB0ZXN0IGJ5IGNyZWF0aW5nIHlvdXIg
YmVuY2htYXJrIG9iamVjdC4KKyAgICByZXR1cm4gbmV3IFRlbXBsYXRlQ2FudmFzQmVuY2htYXJr
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90
ZW1wbGF0ZS1jc3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jc3MuanMJKHJldmlzaW9uIDApCisr
KyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3Rl
bXBsYXRlLWNzcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACitmdW5jdGlvbiBU
ZW1wbGF0ZUNzc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7CisgICAgU3RhZ2UuY2FsbCh0aGlz
LCBlbGVtZW50LCBvcHRpb25zKTsKK30KKworVGVtcGxhdGVDc3NTdGFnZS5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKFN0YWdlLnByb3RvdHlwZSk7CitUZW1wbGF0ZUNzc1N0YWdlLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciA9IFRlbXBsYXRlQ3NzU3RhZ2U7CisKK1RlbXBsYXRlQ3NzU3RhZ2UucHJv
dG90eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkKK3sKKyAgICAvLyBJZiBjb3VudCBpcyAtdmUs
IC1jb3VudCBlbGVtZW50cyBuZWVkIHRvIGJlIHJlbW92ZWQgZm9ybSB0aGUKKyAgICAvLyBzdGFn
ZS4gSWYgY291bnQgaXMgK3ZlLCArY291bnQgZWxlbWVudHMgbmVlZCB0byBiZSBhZGRlZCB0bwor
ICAgIC8vIHRoZSBzdGFnZS4KKyAgICAKKyAgICAvLyBUT0RPOiBDaGFuZ2Ugb2JqZWN0cyBpbiB0
aGUgc3RhZ2UuCisgICAgCisgICAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgYWxsIHRoZSBlbGVt
ZW50cyBpbiB0aGUgc3RhZ2UuCisgICAgLy8gVGhpcyBudW1iZXIgaXMgcmVjb3JkZWQgaW4gdGhl
IHNhbXBsZWQgZGF0YS4KKyAgICAKKyAgICAvLyBUT0RPOiBSZXR1cm4gdGhlIGNvdW50IG9mIHRo
ZSBvYmplY3RzIGluIHRoZSBzdGFnZS4KKyAgICByZXR1cm4gMDsKK30KKworVGVtcGxhdGVDc3NT
dGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAgICAvLyBB
bmltYXRlIHRoZSBlbGVtZW50cyBzdWNoIHRoYXQgYWxsIG9mIHRoZW0gYXJlIHJlZHJhd24uIFlv
dSAKKyAgICAvLyBtYXkgbmVlZCB0byBkZWZpbmUgeW91ciBvYmplY3Qgc28gaXQga2VlcHMgaXRz
IGFuaW1hdGlvbiBkYXRhLgorICAgIC8vIFRoaXMgb2JqZWN0IHNob3VsZCBlbmNhcHN1bGF0ZSBh
IGNvcnJvc3BvbmRpbmcgSFRNTEVsZW1lbnQuCisgICAgLy8gWW91IG1heSBhbHNvIGRlZmluZSBh
IG1ldGhvZCBjYWxsZWQgYW5pbWF0ZSgpIGluIHRoaXMgb2JqZWN0CisgICAgLy8gYW5kIGp1c3Qg
Y2FsbCB0aGlzIGZ1bmN0aW9uIGhlcmUgZm9yIGFsbCB0aGUgZWxlbWVudHMuCisgICAgCisgICAg
Ly8gVE9ETzogTG9vcCB0aHJvdWdoIGFsbCB5b3VyIG9iamVjdHMgYW5kIGFzayB0aGVtIHRvIGFu
aW1hdGUuCit9CisKK2Z1bmN0aW9uIFRlbXBsYXRlQ3NzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBv
cHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgU3RhZ2VCZW5jaG1hcmsu
Y2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFy
KTsKK30KKworVGVtcGxhdGVDc3NCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShT
dGFnZUJlbmNobWFyay5wcm90b3R5cGUpOworVGVtcGxhdGVDc3NCZW5jaG1hcmsucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gVGVtcGxhdGVDc3NCZW5jaG1hcms7CisKK1RlbXBsYXRlQ3NzQmVuY2ht
YXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgLy8g
WW91IG5lZWQgdG8gb3ZlcnJpZGUgdGhpcyBtZXRob2Qgc3VjaCB0aGF0IHlvdXIgc3RhZ2UgaXMg
aG9va2VkCisgICAgLy8gdXAgdG8gdGhlIGJlbmNobWFyay4KKyAgICByZXR1cm4gbmV3IFRlbXBs
YXRlQ3NzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK3dpbmRvdy5iZW5jaG1h
cmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRh
YmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9t
IHRoZSB0ZXN0IGhhcm5lc3Mgd2hpY2ggc3RhcnRzIHRoZQorICAgIC8vIHRlc3QgYnkgY3JlYXRp
bmcgeW91ciBiZW5jaG1hcmsgb2JqZWN0LgorICAgIHJldHVybiBuZXcgVGVtcGxhdGVDc3NCZW5j
aG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9
CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3Vy
Y2VzL3RlbXBsYXRlLXN2Zy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLXN2Zy5qcwkocmV2aXNpb24g
MCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJj
ZXMvdGVtcGxhdGUtc3ZnLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKK2Z1bmN0
aW9uIFRlbXBsYXRlU3ZnU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBTdGFnZS5jYWxs
KHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworfQorCitUZW1wbGF0ZVN2Z1N0YWdlLnByb3RvdHlw
ZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2UucHJvdG90eXBlKTsKK1RlbXBsYXRlU3ZnU3RhZ2UucHJv
dG90eXBlLmNvbnN0cnVjdG9yID0gVGVtcGxhdGVTdmdTdGFnZTsKKworVGVtcGxhdGVTdmdTdGFn
ZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KQoreworICAgIC8vIElmIGNvdW50IGlz
IC12ZSwgLWNvdW50IGVsZW1lbnRzIG5lZWQgdG8gYmUgcmVtb3ZlZCBmb3JtIHRoZQorICAgIC8v
IHN0YWdlLiBJZiBjb3VudCBpcyArdmUsICtjb3VudCBlbGVtZW50cyBuZWVkIHRvIGJlIGFkZGVk
IHRvCisgICAgLy8gdGhlIHN0YWdlLgorICAgIAorICAgIC8vIFRPRE86IENoYW5nZSBvYmplY3Rz
IGluIHRoZSBzdGFnZS4KKyAgICAKKyAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBhbGwgdGhl
IGVsZW1lbnRzIGluIHRoZSBzdGFnZS4KKyAgICAvLyBUaGlzIG51bWJlciBpcyByZWNvcmRlZCBp
biB0aGUgc2FtcGxlZCBkYXRhLgorICAgIAorICAgIC8vIFRPRE86IFJldHVybiB0aGUgY291bnQg
b2YgdGhlIG9iamVjdHMgaW4gdGhlIHN0YWdlLgorICAgIHJldHVybiAwOworfQorCitUZW1wbGF0
ZVN2Z1N0YWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQoreworICAg
IC8vIEFuaW1hdGUgdGhlIGVsZW1lbnRzIHN1Y2ggdGhhdCBhbGwgb2YgdGhlbSBhcmUgcmVkcmF3
bi4gWW91IAorICAgIC8vIG1heSBuZWVkIHRvIGRlZmluZSB5b3VyIG9iamVjdCBzbyBpdCBrZWVw
cyBpdHMgYW5pbWF0aW9uIGRhdGEuCisgICAgLy8gVGhpcyBvYmplY3Qgc2hvdWxkIGVuY2Fwc3Vs
YXRlIGEgY29ycm9zcG9uZGluZyBTVkdFbGVtZW50LgorICAgIC8vIFlvdSBtYXkgYWxzbyBkZWZp
bmUgYSBtZXRob2QgY2FsbGVkIGFuaW1hdGUoKSBpbiB0aGlzIG9iamVjdAorICAgIC8vIGFuZCBq
dXN0IGNhbGwgdGhpcyBmdW5jdGlvbiBoZXJlIGZvciBhbGwgdGhlIGVsZW1lbnRzLgorICAgIAor
ICAgIC8vIFRPRE86IExvb3AgdGhyb3VnaCBhbGwgeW91ciBvYmplY3RzIGFuZCBhc2sgdGhlbSB0
byBhbmltYXRlLgorfQorCitmdW5jdGlvbiBUZW1wbGF0ZVN2Z0JlbmNobWFyayhzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIFN0YWdlQmVuY2ht
YXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0Jhcik7Cit9CisKK1RlbXBsYXRlU3ZnQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlKTsKK1RlbXBsYXRlU3ZnQmVuY2htYXJrLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IFRlbXBsYXRlU3ZnQmVuY2htYXJrOworCitUZW1wbGF0ZVN2Z0Jl
bmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQoreworICAg
IC8vIFlvdSBuZWVkIHRvIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHN1Y2ggdGhhdCB5b3VyIHN0YWdl
IGlzIGhvb2tlZAorICAgIC8vIHVwIHRvIHRoZSBiZW5jaG1hcmsuCisgICAgcmV0dXJuIG5ldyBU
ZW1wbGF0ZVN2Z1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCit3aW5kb3cuYmVu
Y2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQg
ZnJvbSB0aGUgdGVzdCBoYXJuZXNzIHdoaWNoIHN0YXJ0cyB0aGUKKyAgICAvLyB0ZXN0IGJ5IGNy
ZWF0aW5nIHlvdXIgYmVuY2htYXJrIG9iamVjdC4KKyAgICByZXR1cm4gbmV3IFRlbXBsYXRlU3Zn
QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
OworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJp
bmctdGV4dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cisg
ICAgPHN0eWxlPgorICAgICAgICAudGV4dC1sYXllciB7CisgICAgICAgICAgICBmb250LXNpemU6
IDUuNXB4OworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgbGVm
dDogMHB4OworICAgICAgICAgICAgdG9wOiAwcHg7CisgICAgICAgICAgICBwYWRkaW5nOiAzcHg7
CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICAgICAgfQor
ICAgIDwvc3R5bGU+ICAKKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3Nz
IiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9z
dGFnZS5qcyI+PC9zY3JpcHQ+ICAKKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xheWVyaW5n
LXRleHQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0ic3RhZ2Ui
PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5n
LXRleHQuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDI1NyBAQAorZnVuY3Rpb24gTGF5ZXJpbmdUZXh0U3RhZ2UoZWxlbWVudCwgb3B0aW9ucykK
K3sKKyAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgIHRoaXMuX3Rl
eHRFbGVtZW50UGFyZW50ID0gdGhpcy5lbGVtZW50OworICAgIHRoaXMuX3RleHRFbGVtZW50cyA9
IFtdOworICAgIHRoaXMuX3RleHRJdGVtSW5kZXggPSAwOworICAgIHRoaXMuX2NvbG9ySW5kZXgg
PSAwOworICAgIHRoaXMuX2FuaW1hdGVDb3VudHMgPSAwOworfQorCitMYXllcmluZ1RleHRTdGFn
ZS50ZXh0SXRlbXMgPSBbCisgICAgIjxkaXYgY2xhc3M9J3RleHQtbGF5ZXInPiIsCisgICAgICAg
ICI8aDI+VHlwZXMgb2YgYmVuY2htYXJrczwvaDI+IiwKKyAgICAgICAgIjxvbD4iLAorICAgICAg
ICAgICAgIjxsaT5SZWFsIHByb2dyYW0iLAorICAgICAgICAgICAgICAgICI8dWw+IiwKKyAgICAg
ICAgICAgICAgICAgICAgIjxsaT53b3JkIHByb2Nlc3Npbmcgc29mdHdhcmU8L2xpPiIsCisgICAg
ICAgICAgICAgICAgICAgICI8bGk+dG9vbCBzb2Z0d2FyZSBvZiBDQUQ8L2xpPiIsCisgICAgICAg
ICAgICAgICAgICAgICI8bGk+dXNlcidzIGFwcGxpY2F0aW9uIHNvZnR3YXJlIChpLmUuOiBNSVMp
PC9saT4iLAorICAgICAgICAgICAgICAgICI8L3VsPiIsCisgICAgICAgICAgICAiPC9saT4iLAor
ICAgICAgICAgICAgIjxsaT5LZXJuZWwiLAorICAgICAgICAgICAgICAgICI8dWw+IiwKKyAgICAg
ICAgICAgICAgICAgICAgIjxsaT5jb250YWlucyBrZXkgY29kZXM8L2xpPiIsCisgICAgICAgICAg
ICAgICAgICAgICI8bGk+bm9ybWFsbHkgYWJzdHJhY3RlZCBmcm9tIGFjdHVhbCBwcm9ncmFtPC9s
aT4iLAorICAgICAgICAgICAgICAgICAgICAiPGxpPnBvcHVsYXIga2VybmVsOiBMaXZlcm1vcmUg
bG9vcDwvbGk+IiwKKyAgICAgICAgICAgICAgICAgICAgIjxsaT5saW5wYWNrIGJlbmNobWFyayAo
Y29udGFpbnMgYmFzaWMgbGluZWFyIGFsZ2VicmEgc3Vicm91dGluZSB3cml0dGVuIGluIEZPUlRS
QU4gbGFuZ3VhZ2UpPC9saT4iLAorICAgICAgICAgICAgICAgICAgICAiPGxpPnJlc3VsdHMgYXJl
IHJlcHJlc2VudGVkIGluIE1GTE9QUzwvbGk+IiwKKyAgICAgICAgICAgICAgICAiPC91bD4iLAor
ICAgICAgICAgICAgIjwvbGk+IiwKKyAgICAgICAgICAgICI8bGk+U3ludGhldGljIEJlbmNobWFy
ayIsCisgICAgICAgICAgICAgICAgIjx1bD4iLAorICAgICAgICAgICAgICAgICAgICAiPGxpPlBy
b2NlZHVyZSBmb3IgcHJvZ3JhbW1pbmcgc3ludGhldGljIGJlbmNobWFyazoiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIjx1bD4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGk+
dGFrZSBzdGF0aXN0aWNzIG9mIGFsbCB0eXBlcyBvZiBvcGVyYXRpb25zIGZyb20gbWFueSBhcHBs
aWNhdGlvbiBwcm9ncmFtczwvbGk+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxp
PmdldCBwcm9wb3J0aW9uIG9mIGVhY2ggb3BlcmF0aW9uPC9saT4iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICI8bGk+d3JpdGUgcHJvZ3JhbSBiYXNlZCBvbiB0aGUgcHJvcG9ydGlvbiBh
Ym92ZTwvbGk+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICI8L3VsPiIsCisgICAgICAgICAg
ICAgICAgICAgICI8L2xpPiIsCisgICAgICAgICAgICAgICAgICAgICI8bGk+VHlwZXMgb2YgU3lu
dGhldGljIEJlbmNobWFyayBhcmU6IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWw+IiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpPldoZXRzdG9uZTwvbGk+IiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiPGxpPkRocnlzdG9uZTwvbGk+IiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICI8L3VsPiIsCisgICAgICAgICAgICAgICAgICAgICI8L2xpPiIsCisgICAg
ICAgICAgICAgICAgICAgICI8bGk+VGhlc2Ugd2VyZSB0aGUgZmlyc3QgZ2VuZXJhbCBwdXJwb3Nl
IGluZHVzdHJ5IHN0YW5kYXJkIGNvbXB1dGVyIGJlbmNobWFya3MuIFRoZXkgZG8gbm90IG5lY2Vz
c2FyaWx5IG9idGFpbiBoaWdoIHNjb3JlcyBvbiBtb2Rlcm4gcGlwZWxpbmVkIGNvbXB1dGVycy48
L2xpPiIsCisgICAgICAgICAgICAgICAgIjwvdWw+IiwKKyAgICAgICAgICAgICI8L2xpPiIsCisg
ICAgICAgICAgICAiPGxpPkkvTyBiZW5jaG1hcmtzPC9saT4iLAorICAgICAgICAgICAgIjxsaT5E
YXRhYmFzZSBiZW5jaG1hcmtzOiB0byBtZWFzdXJlIHRoZSB0aHJvdWdocHV0IGFuZCByZXNwb25z
ZSB0aW1lcyBvZiBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbXMgKERCTVMnKTwvbGk+IiwKKyAg
ICAgICAgICAgICI8bGk+UGFyYWxsZWwgYmVuY2htYXJrczogdXNlZCBvbiBtYWNoaW5lcyB3aXRo
IG11bHRpcGxlIGNvcmVzLCBwcm9jZXNzb3JzIG9yIHN5c3RlbXMgY29uc2lzdGluZyBvZiBtdWx0
aXBsZSBtYWNoaW5lczwvbGk+IiwKKyAgICAgICAgIjwvb2w+IiwKKyAgICAgICAgIjxoMj5Db21t
b24gYmVuY2htYXJrczwvaDI+IiwKKyAgICAgICAgIjx1bD4iLAorICAgICAgICAgICAgIjxsaT5C
dXNpbmVzcyBBcHBsaWNhdGlvbnMgUGVyZm9ybWFuY2UgQ29ycG9yYXRpb24gKEJBUENvKTwvbGk+
IiwKKyAgICAgICAgICAgICI8bGk+RW1iZWRkZWQgTWljcm9wcm9jZXNzb3IgQmVuY2htYXJrIENv
bnNvcnRpdW0gKEVFTUJDKTwvbGk+IiwKKyAgICAgICAgICAgICI8bGk+U3RhbmRhcmQgUGVyZm9y
bWFuY2UgRXZhbHVhdGlvbiBDb3Jwb3JhdGlvbiAoU1BFQyksIGluIHBhcnRpY3VsYXIgdGhlaXIg
U1BFQ2ludCBhbmQgU1BFQ2ZwPC9saT4iLAorICAgICAgICAgICAgIjxsaT5UcmFuc2FjdGlvbiBQ
cm9jZXNzaW5nIFBlcmZvcm1hbmNlIENvdW5jaWwgKFRQQyk8L2xpPiIsCisgICAgICAgICAgICAi
PGxpPkNvcmVtYXJrOiBFbWJlZGRlZCBjb21wdXRpbmcgYmVuY2htYXJrPC9saT4iLAorICAgICAg
ICAiPC91bD4iLAorICAgICAgICAiPGgzPk9wZW4gc291cmNlIGJlbmNobWFya3M8L2gzPiIsCisg
ICAgICAgICI8dWw+IiwKKyAgICAgICAgICAgICI8bGk+QUlNIE11bHRpdXNlciBCZW5jaG1hcms6
IGNvbXBvc2VkIG9mIGEgbGlzdCBvZiB0ZXN0cyB0aGF0IGNvdWxkIGJlIG1peGVkIHRvIGNyZWF0
ZSBhIOKAmGxvYWQgbWl44oCZIHRoYXQgd291bGQgc2ltdWxhdGUgYSBzcGVjaWZpYyBjb21wdXRl
ciBmdW5jdGlvbiBvbiBhbnkgVU5JWC10eXBlIE9TLjwvbGk+IiwKKyAgICAgICAgICAgICI8bGk+
Qm9ubmllKys6IGZpbGVzeXN0ZW0gYW5kIGhhcmQgZHJpdmUgYmVuY2htYXJrPC9saT4iLAorICAg
ICAgICAgICAgIjxsaT5CUkwtQ0FEOiBjcm9zcy1wbGF0Zm9ybSBhcmNoaXRlY3R1cmUtYWdub3N0
aWMgYmVuY2htYXJrIHN1aXRlIGJhc2VkIG9uIG11bHRpdGhyZWFkZWQgcmF5IHRyYWNpbmcgcGVy
Zm9ybWFuY2U7IGJhc2VsaW5lZCBhZ2FpbnN0IGEgVkFYLTExLzc4MDsgYW5kIHVzZWQgc2luY2Ug
MTk4NCBmb3IgZXZhbHVhdGluZyByZWxhdGl2ZSBDUFUgcGVyZm9ybWFuY2UsIGNvbXBpbGVyIGRp
ZmZlcmVuY2VzLCBvcHRpbWl6YXRpb24gbGV2ZWxzLCBjb2hlcmVuY3ksIGFyY2hpdGVjdHVyZSBk
aWZmZXJlbmNlcywgYW5kIG9wZXJhdGluZyBzeXN0ZW0gZGlmZmVyZW5jZXMuPC9saT4iLAorICAg
ICAgICAiPC91bD4iLAorICAgICI8L2Rpdj4iCitdOworCitMYXllcmluZ1RleHRTdGFnZS5wYXJz
ZVRleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW0pCit7CisgICAgdmFyIHBhcnNlUmVzdWx0ID0g
e307CisgICAgcGFyc2VSZXN1bHQudGFnU3RhcnQgPSB0ZXh0SXRlbS5tYXRjaCgvPCguKj8pPi9n
KVswXTsKKyAgICB2YXIgc3BhY2VJbmRleCA9IHBhcnNlUmVzdWx0LnRhZ1N0YXJ0LmluZGV4T2Yo
IiAiKTsKKyAgICBwYXJzZVJlc3VsdC5ub2RlTmFtZSA9IHBhcnNlUmVzdWx0LnRhZ1N0YXJ0LnN1
YnN0cmluZygxLCBzcGFjZUluZGV4ICE9IC0xID8gc3BhY2VJbmRleCA6IHBhcnNlUmVzdWx0LnRh
Z1N0YXJ0Lmxlbmd0aCAtIDEpOworICAgIHBhcnNlUmVzdWx0LmFyZ3MgPSBzcGFjZUluZGV4ICE9
IC0xID8gVXRpbGl0aWVzLnBhcnNlQXJndW1lbnRzKHBhcnNlUmVzdWx0LnRhZ1N0YXJ0LnN1YnN0
cmluZyhzcGFjZUluZGV4ICsgMSwgcGFyc2VSZXN1bHQudGFnU3RhcnQubGVuZ3RoIC0gMSkpIDog
e307CisgICAgdmFyIHRhZ0VuZCA9ICI8LyIgKyBwYXJzZVJlc3VsdC5ub2RlTmFtZSArICI+Ijsg
ICAgICAgICAgICAgICAgCisgICAgcGFyc2VSZXN1bHQudGFnRW5kID0gdGV4dEl0ZW0uZW5kc1dp
dGgodGFnRW5kKSA/IHRhZ0VuZCA6ICIiOworICAgIHJldHVybiBwYXJzZVJlc3VsdDsKK30KKwor
TGF5ZXJpbmdUZXh0U3RhZ2UuaXNPcGVuaW5nVGV4dEl0ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbSkK
K3sKKyAgICByZXR1cm4gIUxheWVyaW5nVGV4dFN0YWdlLnBhcnNlVGV4dEl0ZW0odGV4dEl0ZW0p
LnRhZ0VuZC5sZW5ndGg7Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLmlzQ2xvc2luZ1RleHRJdGVt
ID0gZnVuY3Rpb24odGV4dEl0ZW0pCit7CisgICAgcmV0dXJuIHRleHRJdGVtLmluZGV4T2YoIi8i
KSA9PSArMTsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MgPSBMYXllcmlu
Z1RleHRTdGFnZS50ZXh0SXRlbXMubWFwKGZ1bmN0aW9uKHRleHRJdGVtKQoreworICAgdmFyIHRl
eHRJdGVtRmxhZ3MgPSB7fTsKKyAgIHRleHRJdGVtRmxhZ3MuaXNPcGVuaW5nID0gTGF5ZXJpbmdU
ZXh0U3RhZ2UuaXNPcGVuaW5nVGV4dEl0ZW0odGV4dEl0ZW0pOworICAgdGV4dEl0ZW1GbGFncy5p
c0Nsb3NpbmcgPSBMYXllcmluZ1RleHRTdGFnZS5pc0Nsb3NpbmdUZXh0SXRlbSh0ZXh0SXRlbSk7
ICAgCisgICByZXR1cm4gdGV4dEl0ZW1GbGFnczsKK30pOworCitMYXllcmluZ1RleHRTdGFnZS5p
c0NvbG9yYWJsZVRleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW1GbGFncykKK3sKKyAgICByZXR1
cm4gISh0ZXh0SXRlbUZsYWdzLmlzT3BlbmluZyB8fCB0ZXh0SXRlbUZsYWdzLmlzQ2xvc2luZyk7
Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLmlzSW5zZXJ0YWJsZVRleHRJdGVtID0gZnVuY3Rpb24o
dGV4dEl0ZW1GbGFncykKK3sKKyAgICByZXR1cm4gIXRleHRJdGVtRmxhZ3MuaXNDbG9zaW5nOwor
fQorCitMYXllcmluZ1RleHRTdGFnZS5jb2xvcmFibGVUZXh0SXRlbXMgPSBMYXllcmluZ1RleHRT
dGFnZS50ZXh0SXRlbXNGbGFncy5maWx0ZXIoZnVuY3Rpb24odGV4dEl0ZW1GbGFncykKK3sKKyAg
ICByZXR1cm4gTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDb2xvcmFibGVUZXh0SXRlbSh0ZXh0SXRlbUZs
YWdzKTsKK30pLmxlbmd0aDsKKworTGF5ZXJpbmdUZXh0U3RhZ2UuaW5zZXJ0YWJsZVRleHRJdGVt
cyA9IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzLmZpbHRlcihmdW5jdGlvbih0ZXh0
SXRlbUZsYWdzKQoreworICAgIHJldHVybiBMYXllcmluZ1RleHRTdGFnZS5pc0luc2VydGFibGVU
ZXh0SXRlbSh0ZXh0SXRlbUZsYWdzKTsKK30pLmxlbmd0aDsKKworTGF5ZXJpbmdUZXh0U3RhZ2Uu
Y29sb3JJbmRleFRvVGV4dEVsZW1lbnRJbmRleCA9IGZ1bmN0aW9uKGNvbG9ySW5kZXgpCit7Cisg
ICAgdmFyIHRleHRFbGVtZW50SW5kZXggPSAwOworICAgIHZhciBpbmRleCA9IDA7CisgICAgCisg
ICAgZm9yICh2YXIgdGV4dEl0ZW1JbmRleCA9IDA7IHRleHRJdGVtSW5kZXggPCBMYXllcmluZ1Rl
eHRTdGFnZS50ZXh0SXRlbXNGbGFncy5sZW5ndGg7ICsrdGV4dEl0ZW1JbmRleCkgeworICAgICAg
ICBpZiAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDb2xvcmFibGVUZXh0SXRlbShMYXllcmluZ1RleHRT
dGFnZS50ZXh0SXRlbXNGbGFnc1t0ZXh0SXRlbUluZGV4XSkpIHsKKyAgICAgICAgICAgIGlmICgr
K2luZGV4ID4gY29sb3JJbmRleCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNJbnNlcnRhYmxlVGV4dEl0ZW0oTGF5ZXJp
bmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3NbdGV4dEl0ZW1JbmRleF0pKQorICAgICAgICAgICAg
Kyt0ZXh0RWxlbWVudEluZGV4OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdGV4dEVsZW1lbnRJ
bmRleDsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShT
dGFnZS5wcm90b3R5cGUpOworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gTGF5ZXJpbmdUZXh0U3RhZ2U7CisKK0xheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fbmV4
dFRleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW1GbGFncykKK3sKKyAgICB2YXIgdGV4dEl0ZW0g
PSBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNbdGhpcy5fdGV4dEl0ZW1JbmRleF07CisgICAg
VXRpbGl0aWVzLmV4dGVuZE9iamVjdCh0ZXh0SXRlbUZsYWdzLCBMYXllcmluZ1RleHRTdGFnZS50
ZXh0SXRlbXNGbGFnc1t0aGlzLl90ZXh0SXRlbUluZGV4XSk7CisgICAgdGhpcy5fdGV4dEl0ZW1J
bmRleCA9ICh0aGlzLl90ZXh0SXRlbUluZGV4ICsgMSkgJSBMYXllcmluZ1RleHRTdGFnZS50ZXh0
SXRlbXMubGVuZ3RoOworICAgIHJldHVybiB0ZXh0SXRlbTsKK30KKworTGF5ZXJpbmdUZXh0U3Rh
Z2UucHJvdG90eXBlLl9wcmV2aW91c1RleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW1GbGFncykK
K3sKKyAgICB0aGlzLl90ZXh0SXRlbUluZGV4ID0gKHRoaXMuX3RleHRJdGVtSW5kZXggKyBMYXll
cmluZ1RleHRTdGFnZS50ZXh0SXRlbXMubGVuZ3RoIC0gMSkgJSBMYXllcmluZ1RleHRTdGFnZS50
ZXh0SXRlbXMubGVuZ3RoOworICAgIFV0aWxpdGllcy5leHRlbmRPYmplY3QodGV4dEl0ZW1GbGFn
cywgTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3NbdGhpcy5fdGV4dEl0ZW1JbmRleF0p
OyAgICAKKyAgICByZXR1cm4gTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zW3RoaXMuX3RleHRJ
dGVtSW5kZXhdOworfQorCitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX3B1c2hUZXh0RWxl
bWVudCA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgdGV4dEl0ZW1GbGFncyA9IHt9OworICAgIHZh
ciB0ZXh0SXRlbSA9IHRoaXMuX25leHRUZXh0SXRlbSh0ZXh0SXRlbUZsYWdzKTsKKyAgICBmb3Ig
KCA7IHRleHRJdGVtRmxhZ3MuaXNDbG9zaW5nOyB0ZXh0SXRlbSA9IHRoaXMuX25leHRUZXh0SXRl
bSh0ZXh0SXRlbUZsYWdzKSkKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQgPSB0aGlz
Ll90ZXh0RWxlbWVudFBhcmVudC5wYXJlbnROb2RlOworCisgICAgdmFyIHBhcnNlUmVzdWx0ID0g
TGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VUZXh0SXRlbSh0ZXh0SXRlbSk7CisgICAgdGV4dEl0ZW0g
PSB0ZXh0SXRlbS5zdWJzdHJpbmcocGFyc2VSZXN1bHQudGFnU3RhcnQubGVuZ3RoLCB0ZXh0SXRl
bS5sZW5ndGggLSBwYXJzZVJlc3VsdC50YWdFbmQubGVuZ3RoKTsKKworICAgIHZhciB0ZXh0RWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQocGFyc2VSZXN1bHQubm9kZU5hbWUpOworCisg
ICAgZm9yICh2YXIgYXR0cm5hbWUgaW4gcGFyc2VSZXN1bHQuYXJncykKKyAgICAgICAgdGV4dEVs
ZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJuYW1lLCBwYXJzZVJlc3VsdC5hcmdzW2F0dHJuYW1lXSk7
CisKKyAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudC5hcHBlbmRDaGlsZCh0ZXh0RWxlbWVudCk7
CisgICAgCisgICAgaWYgKCFwYXJzZVJlc3VsdC50YWdFbmQubGVuZ3RoKQorICAgICAgICB0aGlz
Ll90ZXh0RWxlbWVudFBhcmVudCA9IHRleHRFbGVtZW50OworCisgICAgdGV4dEVsZW1lbnQuaW5u
ZXJIVE1MID0gdGV4dEl0ZW07CisgICAgCisgICAgdGhpcy5fdGV4dEVsZW1lbnRzLnB1c2godGV4
dEVsZW1lbnQpOworICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOworfQorCitM
YXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX3BvcFRleHRFbGVtZW50ID0gZnVuY3Rpb24oKQor
eworICAgIHZhciB0ZXh0SXRlbUZsYWdzID0ge307ICAgIAorICAgIHZhciB0ZXh0SXRlbSA9IHRo
aXMuX3ByZXZpb3VzVGV4dEl0ZW0odGV4dEl0ZW1GbGFncyk7CisgICAgZm9yICggOyB0ZXh0SXRl
bUZsYWdzLmlzQ2xvc2luZzsgdGV4dEl0ZW0gPSB0aGlzLl9wcmV2aW91c1RleHRJdGVtKHRleHRJ
dGVtRmxhZ3MpKQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudCA9IHRoaXMuX3RleHRF
bGVtZW50UGFyZW50Lmxhc3RDaGlsZDsKKworICAgIGlmICh0ZXh0SXRlbUZsYWdzLmlzT3Blbmlu
ZykKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQgPSB0aGlzLl90ZXh0RWxlbWVudFBh
cmVudC5wYXJlbnROb2RlOworCisgICAgdGhpcy5fdGV4dEVsZW1lbnRzW3RoaXMuX3RleHRFbGVt
ZW50cy5sZW5ndGggLSAxXS5yZW1vdmUoKTsKKworICAgIHRoaXMuX3RleHRFbGVtZW50cy5wb3Ao
KTsKKyAgICByZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsKK30KKworTGF5ZXJpbmdU
ZXh0U3RhZ2UucHJvdG90eXBlLl9jb2xvclRleHRJdGVtID0gZnVuY3Rpb24oY29sb3IpCit7Cisg
ICAgdmFyIHRleHRFbGVtZW50SW5kZXggPSBMYXllcmluZ1RleHRTdGFnZS5jb2xvckluZGV4VG9U
ZXh0RWxlbWVudEluZGV4KHRoaXMuX2NvbG9ySW5kZXgpOworICAgIGZvciAoIDsgdGV4dEVsZW1l
bnRJbmRleCA8IHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7IHRleHRFbGVtZW50SW5kZXggKz0g
TGF5ZXJpbmdUZXh0U3RhZ2UuaW5zZXJ0YWJsZVRleHRJdGVtcykKKyAgICAgICAgdGhpcy5fdGV4
dEVsZW1lbnRzW3RleHRFbGVtZW50SW5kZXhdLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGNvbG9y
OworfQorCitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRp
bWVEZWx0YSkKK3sKKyAgICB0aGlzLl9jb2xvclRleHRJdGVtKCJ0cmFuc3BhcmVudCIpOworICAg
IHRoaXMuX2NvbG9ySW5kZXggPSAodGhpcy5fY29sb3JJbmRleCArIDEpICUgTGF5ZXJpbmdUZXh0
U3RhZ2UuY29sb3JhYmxlVGV4dEl0ZW1zOworICAgIHRoaXMuX2NvbG9yVGV4dEl0ZW0oIlllbGxv
d0dyZWVuIik7CisgICAgCisgICAgdmFyIGJsYWNrVGV4dEVsZW1lbnRzID0gTWF0aC5taW4odGhp
cy5fdGV4dEVsZW1lbnRzLmxlbmd0aCwgTGF5ZXJpbmdUZXh0U3RhZ2UuaW5zZXJ0YWJsZVRleHRJ
dGVtcyk7CisgICAgdmFyIGkgPSAwOworICAgIGZvciAoIDsgaSA8IHRoaXMuX3RleHRFbGVtZW50
cy5sZW5ndGggLSBibGFja1RleHRFbGVtZW50czsgKytpKQorICAgICAgICB0aGlzLl90ZXh0RWxl
bWVudHNbaV0uc3R5bGUuY29sb3IgPSAodGhpcy5fYW5pbWF0ZUNvdW50cyAmIDEpID8gIkxpZ2h0
WWVsbG93IiA6ICJ3aGl0ZSI7CisKKyAgICBmb3IgKCA7IGkgPCB0aGlzLl90ZXh0RWxlbWVudHMu
bGVuZ3RoOyArK2kpCisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50c1tpXS5zdHlsZS5jb2xvciA9
ICJibGFjayI7CisgICAgICAgIAorICAgICsrdGhpcy5fYW5pbWF0ZUNvdW50czsKK30KKworTGF5
ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkKK3sKKyAgICBj
b3VudCA9IGNvdW50ID4gMCA/IE1hdGguZmxvb3IoY291bnQpIDogTWF0aC5jZWlsKGNvdW50KTsK
KworICAgIGlmIChjb3VudCA9PSAwKQorICAgICAgICByZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRz
Lmxlbmd0aDsKKworICAgIGlmIChjb3VudCA+IDApIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgdGhpcy5fcHVzaFRleHRFbGVtZW50KCk7Cisg
ICAgICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOworICAgIH0KKyAgICAgICAg
CisgICAgY291bnQgPSBNYXRoLm1pbigtY291bnQsIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGgp
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgdGhpcy5fcG9w
VGV4dEVsZW1lbnQoKTsKKworICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOwor
fQorCitmdW5jdGlvbiBMYXllcmluZ1RleHRCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRo
aXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQor
CitMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJl
bmNobWFyay5wcm90b3R5cGUpOworTGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IExheWVyaW5nVGV4dEJlbmNobWFyazsKKworTGF5ZXJpbmdUZXh0QmVuY2htYXJr
LnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgcmV0dXJu
IG5ldyBMYXllcmluZ1RleHRTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKword2lu
ZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9u
cywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIHJldHVybiBuZXcgTGF5ZXJpbmdU
ZXh0QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NC
YXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNl
cy95aW4teWFuZy5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMg
YSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwpJbmRleDogUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5wbmcKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFu
Zy5wbmcJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL3lpbi15YW5nLnBuZwkod29ya2luZyBjb3B5KQoKUHJvcGVydHkgY2hhbmdlcyBv
bjogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5w
bmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCitpbWFnZS9w
bmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQoKaVZCT1J3MEtHZ29BQUFBTlNVaEVV
Z0FBQUdRQUFBQmtDQVlBQUFCdzRwVlVBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTgpB
QUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FBQTZtQUFBRjNDY3VsRThBQUFBQ1hCSVdY
TUFBQXNUQUFBTEV3RUFtcHdZCkFBQUNCR2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFB
QUFQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHUKY3pwdFpYUmhMeUlnZURwNGJY
QjBhejBpV0UxUUlFTnZjbVVnTlM0MExqQWlQZ29nSUNBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZ
OQpJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rrdk1ESXZNakl0Y21SbUxYTjViblJoZUMx
dWN5TWlQZ29nSUNBZ0lDQThjbVJtCk9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdv
Z0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwbGVHbG1QU0pvZEhSd09pOHYKYm5NdVlXUnZZbVV1WTI5
dEwyVjRhV1l2TVM0d0x5SUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZkR2xtWmowaWFIUjBjRG92
TDI1egpMbUZrYjJKbExtTnZiUzkwYVdabUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBR
YVhobGJGbEVhVzFsYm5OcGIyNCtNVEV3ClBDOWxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajRL
SUNBZ0lDQWdJQ0FnUEdWNGFXWTZVR2w0Wld4WVJHbHRaVzV6YVc5dVBqRXcKTlR3dlpYaHBaanBR
YVhobGJGaEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lDQWdJRHgwYVdabU9rOXlhV1Z1ZEdGMGFXOXVQ
akU4TDNScApabVk2VDNKcFpXNTBZWFJwYjI0K0NpQWdJQ0FnSUR3dmNtUm1Pa1JsYzJOeWFYQjBh
Vzl1UGdvZ0lDQThMM0prWmpwU1JFWStDand2CmVEcDRiWEJ0WlhSaFBnb1VuQTIrQUFBTldFbEVR
VlI0QWUxZGZXd1UxUlkvdTZWQ1cwcXJpQ1FrVUNGUlFBSklDQWhSb2NURVlnMEUKVkVUOEN4QVNF
U0l4d2g4YUJUSEJxRFVHQSs4OURXRDR4dzlRaTBGalNFU3RpWkZXcVJIQ3E2RFFCSk5YcW56SVI0
cllVczQ3dnpNTQpIWWJkem03MzduenM5aVN6TTdzemV6L09iKzQ5NTU1Nzd6a3hDamt4ODNncDRo
dzVwdEtwVThQbzJMRkIxTkpTUWlkT0ZOSzVjd1YwCjRRSlJlM3RNcTNIRERVekZ4VVFEQm5UU29F
RWROR1JJRzFWVW5LQ0JBMytYKzN2bCtEUVdpKzNYWjBQNllWVWtSSVVUQUdaS2NaYlQKb1VNVHFi
NytGbXBzTEtDZmZ5YmFMM3hzYnlkaXRzNnBsRGtlSjRwSkZRc0xpVzY3amVpdXU0anV2cnVUcGt6
NWswYU4yaWRKL0ZzQQoycDFLVW5uMWpJQ3dsTnZhOXZQMjdlMjhhQkh6c0dITXc0Y3pQL2dnODcz
M01oY1hBd1l6UjBrSmMvLyt6QU1ITXMrYng1b244cFl5CjVCWFQzWlVWQm95Ull3OS84a2s3ejUv
UDNLY1BjM1UxODZaTnpGOTl4Yng0c1JrQXZJQXNLMk9PeDVrZmVJQzV0clpkeXlSbGM1YzMKWjc5
TGhlZnc4ZU5IZWQyNnk5b1NLaXVaMzNtSCtmUnB1U1ZVVThOY1VPQVBHRzZ3eXN1dGxvT3lvWXhT
MWx3R1lqWWZPZkkvWHJHQwpPUlpqZnVvcDVwOStVZ3owbzdXVmVkYXNZSUJ3QTFOVVpKVmp5UkxX
TWpQUHpobGdoTmxEK2VUSkpuN21HZWErZlptZmY1NFp6SGRTClF3UHppQkhoQU1NSkRsb3FEcnc4
cUlQVUpkTEFTQVcyOElZTm5UeGdBUFBLbGRjREFWQysrWWE1dERSOFlEaUJ3WXZVcng5TFhTNmgK
VHBFRFJRbzlnK3ZyejZxR0JFSHQ3SnJrNWxWQ3l3ZzdHRTVnb0FDTUhjdGFONmxqSklBUlptL2c5
ZXN2cTJvSllaMk0wRzJGc1p0eQpBcERzdXJDUStaVlhMcU91b1FWRkNsY2ltc2wvVlRDalZUUTNK
NFBDK2owc0Fqd1owNzErUjJ1Wk5vMjF6bEwzVUFFakhKN0FYMy9kCnBtcnMyclhkQTRHN1VHMjlL
aHlWK3hoZ291N0NnMUNBSWdXcDRuZmY3VkFOYXZ0MnNMdDdRc3NKYXB5UkxaQlJIL0JBZUJFb0tG
S0EKaGZ6NjY1MXE1b0NBVG9YOEdvRm5pL25KMG9VNXBxYW1FendKQkJUSmVEVy85TkpsdnZOT2Iz
bGhBM1h3WU81MFZZbUFnVnpCS0Y5NAo0eXNvZUFzVWpNbVRFNDh0YkFEY1o0elNFMVVrbDM3ckFz
V2ZsaUk4cnRKdUNpM0RQZUoyQStEOGZrbkdWRkVhYzJUeWtnQVVxL3ZLCnJrd1IvazVRNFFYVHVK
ZGE2d1FEMXp0MjVIN3JjSUlJbWJKdEd3UjlkclF2U2JoRTFUdVlFVklWNEFEQ3Bsd1Y1azRRM05m
UXZpeVYKMlB3NGhWdGFtblNja1lwcWE0UGdQRWQxVk81bWNycmZNVTZSQWJOUklTOTgzYUFqOEZR
R2ZVNFE3R3ZJbW5Rcmtzcnpqei9PL08yMwp6QmN2V2dldThWc3EvL1h6R1l6b1RabFpKS0VaYXB1
Q09hU25CSXV1YVFhODhVYnkwdUNlNmZ3eVNROUMzcko5Wlc2UVZNc21CRlM2ClF0ekpybTNiekRJ
SXJjQ0x3dFpTWUpCc2FEaWJVZGNsZGQ2aUp2VHVyTFplak1GOTA3WXJkRTFlaEdjeWVhdXo4ZDl4
NDFEcW5zMm4KeUIrSDZ1UlNKbDJWemJSMTY4d3lCekxEaS9CTU5waWFTWnJvdWpCaDE1T1pSNTJ5
eEV4ZnNza2xMNFk0Ny9jQzB2VnlZT2J4MUttbQpaRjJYckNTN25vU1hzMm45K3RHMGFCSFJCQVBq
R3F3bU5Fa05EZDZwcGZLTWR5cm1ud0EwTDc0NFdubWNhdXE2MGdJRHdIUk1JODRXCjRiN3VGZXBk
TFFSZEhnYU1zZ0luSlR5RWwzTjBxUTVXaDVpaWZGZDczWElIZ0dDSlVTcnJ2bVJVMmF6cnBreTFE
bVNiN3dORE55RDIKOTliV285MjJFbUhkR0xYbll4MlNhY3BYMDRuTmZQY1ppL0ZlZmhseko4bVhy
Y3JOUFdxdk1xRlp1UUhOUitPaUd3VDNkOWk1aE9mTwpWbkt0bGxWYk80MUdqRENqV1RsendmVk03
RExvcFdzNDBObEp0SFBuTk9kdlZ3RVJwSmJTamgyRnRHQ0I4NzY1NjRjZUlpb3ROWmRlCkxxUjA1
Z3pSbGkxaVUwbXdGVUwzWjJCTGdMMEtIWTNKTk9YREZLNjdXL0w2RG8zcndvWDk5dnQxdFlYUTU1
K1BwdnZ2SjdyeFJ2dWUKK2ZPVFQ1cFBNK29wOXU5UHl2c3I5VkJBcENGVTArN2RoVlJkbmQzcWpS
R0ZZdkhpN09ZUnRkVFBpZ0g0NDQvUmJYVXhYNzU4cHRyVgo0Y09tTzZucjA4dkZoWEplM1pMWGZV
dmIrZ3p2a3RWbFlZTmxRUUhSN2Jkbi8vMGFQcHpvMVZlem4wK1VjdmpuSDZMRGh5ZWl5QllnCjJP
MDZkYXAvVlZpMWltaldMUC95QzN0TzJDa01ESVJrdDZQc0E4Zlc0MG1UL0MzMjVzMmtZeDUvY3cx
bmJ1ZlBFMzMzbmFoYlBCNHQKWks3dUFSK1AvZmsrMHVEQlJCOTgwRHMyc1ZuK3d3KzRtZ3RBcHRB
dnZ4RGRjWWQ5eTcvejVNbEV1M2IxZ2dLT056ZmpjMHBjM1ZWZwpDSTgzTmdpcXJDVGFJK1ljbUd6
eW1UbzZpRTZmSGhaWDN5RVZGY0d5QWkzbCsrL3pXOUQzNjBmQUlxNk9YSVlNQ1JZUTVJNFdpdTZy
CnBvWlVCUSsrUlA2WFFKenF4TldyemkycWNmbGZnRVE1UWlYKzdiZjhHOUZEYkp3OFdSaFhGMGRs
WllsWUU5eHZHRHh1M1VwMDhDRFIKaWhYNUlmUWhRODZlTFlpcnY2a1M4NHV6amFBSjI5ZkdqVVIv
L1VVeU5XQzFtbHdWL3BjdUViRG9vODYvNEU4cXpBU3p6cng1MW9GeQovdkVIcWFwKzdCaEpsNnNW
b2JWcncxd0Q3N0toeXhKSGJIMjhud3poRTFBQTNHcjZtalhYRnhTNmZWMGRpU1dicUxhV0NKVU9P
Y1VKCmJ2SFFmK1Vpb1h1RHVSL2RIYm85ZEgvb0JzTkk2QVVFaTdqNktHeHJDMk1SelpZSjA4ZFFF
S0FvUUdHQTRoQW02aU9kbGF6d2pLdkQKU016dDVoT2gxVUMxaG9vZEZvSWNMeXZyakt2M1Rnakdm
Q04wRVJpRVlqRHFsa2RCOEFMbHVmbm1qcmk2VW0xcENhSUk0Y2dUOHpJdwoyOEI4RXpTSlc5dTQr
cldGK3BqUEJPRVBBMmRsWlhCY3VIaVJnRVZjblF5anVVQzN6MmVDMEVmM0ZWUkxnUXk1NmFiZjQ0
SkJQWTBlClRkVFVsTTl3V0hVSEtKZzBDMEttV0JhSXZRQmtKMkcyRUo2amU4bWFsOEgwc3Q5a3Rj
eFA0K29MZmVMRVR2cnhSNytMRU43OElPajkKVkluUk11KzVweE5Zb0lYSXhLSDRRdCs3Tjd3TUNx
SmtXS3JrMStBUis2dUFnWkFGeUtoUmpXcm4rZlhYSUtvZXpqeWg2THp3Z2o5bAo2OXVYYU9SSUJB
ZTRBZ2pSditpKys0aSsvTktmQWtRbEY0em8vYkI5Z2ZjU3FRRWYya0kwWk1QTW1SMzB4UmY0clpl
Y0hNajJBbkZNCkRqN3lTSWNkTmlObTU0M3RDR0pMR1VkL1NsZVd6Ulh3ZG9aUk9XTVJHL2lSTGRN
OXVzYno1dy9FaW90RjFlM3FzbUJwM0VRUFAwejAKMFVkUllaVS81WVFHaE0xRzJhS3FLcUtpb2sx
MjhwWlFsMi9TWkRiVC9Qa2RPakN5Ny9hZUxRNWthenRlZVRuUmtpWG9yaElQZkdSdAphZlkyZlY2
L01TRTZ2eHc5ZXUzR2Y2L3RCYW5lOTl6MFNiU1NubmlDWmQ5Yk5OckcrKzhUVFo5T2hFVm1PSENO
MzB4VE5oWldGQlVKCnQxZktBRVI0M2gxbHhYRkFOdHJDczg4bWYydHh6elNsK3Rhbjg1eVg0d0FB
SmZVdzcxckROSFBlZXk4NUdEWkQ4SXhKc3RNMWNVN0gKdFlhQ2d0QkVNdUZ1elBtTVNjWWdMZmd3
OUdLTTVlZlFYTTVlK2FWelB4M25NMWRheVd3TlVZU29PR0VrZUNyeVlnQ2VNVWxlK2FWNgpIK1Zh
dmh3bFN5K3VsVG93Z3dlMGJMalp5SlJSVVFha0p3N00wRXBrSnJHS3hMRzhid1kyelRURkQwVHM5
S0pVbnZGS3cvUjltRWxlCmUrMnl6QXpLYUxBSEpDK3lHU2VZbWJZSTkvK2pLdFF6Y1lKcDQyZkVU
YXlib1NhK1IwM3ROZUVtRnFBSTcyYW9FMkFUM2tsTkFPRk0KQXkwRjJoUmtDZzVjbTFaMzdmeFNG
ZHFKbmpQcFNQa0tLSm01R3JjckZkVnpwcVlUU3dVM0c5Rk5vNUVoaW5OUG5mRkhGUXlVZSt0Vwpi
elU3VWN2QWI3Qlh0YmFhZGNaL3BaVlk0U293WUt5dmp6SjcweTg3d253blkzaDN2Mk1BV0ZlSENH
NGw0S0Z4a29TdGdDNjMzc3FNClpwd1BkTzVjejZMS1pUdWdpNDJ1WUZDbDRYelNEWGtVVmZBMmJr
eS9kVUNJK3hIeXlBSEtRdlZlT21sU2VPMWRwbDZBTVdQU0F3UmcKV0pIYUZ0cjg4dVVzOVYydEdh
T2w1R3IzbGE0dzd3Smp0UzhndURNUlVCWnEwNFJNeVRWQmo2aHlDSDdXbmRCMjNnczZzS1FOam9C
UwpwZEhJb0gxOStLR3BqaUw0ZEZhdFNoME1hRk5XUkxhZTJhaHNacG82Qy9lczRNUVZGY3hyMWdU
UHpFeExzR3RYNm1CZ25HR3B0aE5NCjhkTklPc0tERW8za2hyRGNNTE5FVmE2ZzNJTUhld01DZVlF
UitQSGpUYWk3RVNabUl4RXAzQWExZlpXVU1HY2FLaW5UTnozZC8yUE0KZ1hDeVR0bVE2RG9LQWU2
ZDRBb2ZaaUFBbHI1QmFDMk5qZW15eHYvbkFVWmxaZmRnb0ZYQWhJNjZTUjJkZFk3RXRSUjZpOFpj
UWtXZQpmanE4WXhaMFU5MjFERmlTTWRQMzFsdWRxRk1rbUorc2tGS0JvWWk1cEhQMDBNU2VleTVj
d0VDQUo1TVowSjV3WUE0Y2RlaEpNSzlrCmpBbjZkNm5NYkEybEJQL3ZzUmp6c21YQmRtVVlaeVJU
YlJIYkE3SURVWEN3QWlmZEJRbEJNenVkL0tWeWM4UWMzYXpCVEtBbVQ1L08KL1BiYmVBUGxsaytF
RVhpaVFWOTV1V1V1UjZBVmxER1ZrRVRwVkQ3TXowcGx4VWdrYTRscmE5djVzY2VZb2JsQUFZQXg3
OUFoODhoQQphQ050dDIwSzhnM2RFdkpHV1ZDbTdxTGVoSm1wcHNvbURGaUtrQTBTYzcyZEVZa0hM
UWZtbUFVTG1OOThFeUd3bWMrY2tjZlNKQWhyCnRBYk1aNERwNklaS1M1bGg1c0NBN3RGSEVlZTlY
Zk5PRk1QRFZBWFRTT2ZxaHAwMC9wUFZSNFhsMVpMQk12V0ZEdmZiKy9ZVjBJRUQKMWo1NmVGMkRC
MVZzTXhzN2xtam9VR3kydHhaYTE5VVIvZjAzWEsyU09QWWtPbktFZFBNUlBDUmdVejRXVEdQcnNl
eDIxUTJXSTBjMgpTajcva2EwQW9kbzJGanBBM0dnTFFOaFpORmVPS2ZCcnEyNXR4WHNuSEViQ1I2
RzZLQlJQYlBvLzBlTFUzWlI0MVlFakYvWGpJdTRxCjRDRkI3dGZMc1ZNQUNQV0cvUDhEUm5xL2FN
Nk44cTBBQUFBQVNVVk9SSzVDWUlJPQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262369</attachid>
            <date>2015-10-02 17:37:16 -0700</date>
            <delta_ts>2015-10-02 20:35:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149053-20151002173649.patch</filename>
            <type>text/plain</type>
            <size>139413</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTA1MjkpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3MiBAQAorMjAxNS0xMC0wMiAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFk
IG9mIG1lYXN1cmluZyB0aGUgRlBTIG9mIHRoZSBhbmltYXRpb24sIHRoaXMgYmVuY2htYXJrIG1l
YXN1cmVzIHRoZQorICAgICAgICB0ZXN0IGNvbXBsZXhpdHkgd2hlbiByZW5kZXJpbmcgYXQgYSBz
ZXQtcG9pbnQgRlBTIHdoaWNoIHNob3VsZCBiZSBsb3dlcgorICAgICAgICB0aGFuIDYwIEZQUy4g
VGhpcyBiZW5jaG1hcmsgdHJpZXMgdG8gc3RheSBhdCB0aGUgc2V0LXBvaW50IEZQUyBieSB1c2lu
ZworICAgICAgICBhIGNsb3NlZCBsb29wIGNvbnRyb2wgc3lzdGVtIFBJRCBmdW5jdGlvbi4gVGhl
IGdhaW4gb2YgdGhlIHN5c3RlbSBpcyBwYXNzZWQKKyAgICAgICAgYXMgYSBwYXJhbWV0ZXIgd2hl
biBydW5uaW5nIHRoZSB0ZXN0LiBNZWFzdXJpbmcgdGhlIEZQUyBmYWl0aGZ1bGx5IHJlc3VsdHMK
KyAgICAgICAgdmVyeSBmbHVjdHVhdGluZyB2YWx1ZXMuIEEgS2FsbWFuIGZpbHRlciBpcyB1c2Vk
IHRvIGdpdmUgYSBiZXR0ZXIgZXN0aW1hdGUKKyAgICAgICAgZm9yIHRoZSBjdXJyZW50IEZQUy4K
KworICAgICAgICBUaGUgYW5pbWF0aW9uIG9mIHRoZSB0ZXN0cyBpcyBkb25lIG1hbnVhbGx5LiBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKSBpcworICAgICAgICBjYWxsZWQgd2l0aCBhIGNhbGxiYWNr
LiBJbnNpZGUgdGhpcyBjYWxsYmFjaywgdGhlIHRlc3QgaXMgYW5pbWF0aW5nIGJ5CisgICAgICAg
IGNoYW5naW5nIHRoZSBwb3NpdGlvbnMgb2YgdGhlIGVsZW1lbnRzIGluc2lkZSB0aGUgcGFnZS4g
VGhlIHRlc3QgY29tcGxleGl0eQorICAgICAgICBtYXkgY2hhbmdlIGFsc28gaWYgdGhlIGN1cnJl
bnQgRlBTIGlzIG5vdCBlcXVhbCB0byB0aGUgZGVzaXJlZCBGUFMuCisKKyAgICAgICAgSW4gdGhp
cyBwYXRjaCwgdGhlIGJlbmNobWFyayBhbmQgdGhlIHRlc3RzIGFyZSBpbmNsdWRlZC4gVGhlIHNo
YXJlZCBjb2RlCisgICAgICAgIGFuZCB0aGUgdGVzdHMgcnVubmVyIGFyZSBpbmNsdWRlZCBpbiBz
ZXBhcmF0ZSBwYXRjaGVzLgorCisgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvYW5pbW9tZXRl
ci5odG1sOgorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVy
LmpzOgorCisgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHN1aXRlRnJvbU5hbWUpOiBSZXR1cm5zIGEgc3VpdGUgZ2l2ZW4gaXRz
IG5hbWUuCisgICAgICAgICh0ZXN0RnJvbU5hbWUpOiBSZXR1cm5zIGEgdGVzdCBnaXZlbiBpdHMg
c3VpdGUgYW5kIG5hbWUuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzOiBBZGRlZC4KKyAg
ICAgICAgVGhpcyBkaXJlY3RvcnkgaW5jbHVkZXMgYWxsIHRoZSB0ZXN0IHN1aXRlcyB0byBiZSBy
dW4gYnkgdGhlIGJlbmNobWFyay4KKyAgICAgICAgcnVubmVyLiBBbGwgdGhlIHRlc3RzIHNob3Vs
ZCB0cnkgdG8gcnVuIG9uIHRocmVlIHN0YWdlczogQ1NTLCBjYW52YXMgYW5kCisgICAgICAgIFNW
Ry4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXM6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L3Jlc291cmNlczogQWRkZWQuCisgICAgICAgIFRoZSBib3VuY2luZyBwYXJ0aWNsZXMgdGVzdCBp
cyBhbiBleGFtcGxlIG9mIGEgc2ltcGxlIGFuaW1hdGlvbiB0ZWNobmlxdWUuCisgICAgICAgIAor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNh
bnZhcy1pbWFnZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1h
Z2VzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3Vu
Y2luZy1zdmctc2hhcGVzLmh0bWw6IEFkZGVkLgorICAgICAgICBCb3VuY2luZyBwYXJ0aWNsZXMg
dGVzdCBwYWdlcy4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91
bmNpbmdQYXJ0aWNsZSk6IEJhc2UgY2xhc3MgZm9yIGEgYm91bmNpbmcgcGFydGljbGUuCisgICAg
ICAgIChCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5jZW50ZXIpOiBSZXR1cm5zIHRoZSBjZW50
ZXIgcG9pbnQgb3IgdGhlIHBhcnRpY2xlLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZS5wcm90
b3R5cGUuYW5pbWF0ZSk6IE1vdmVzIHRoZSBwYXJ0aWNsZSBiYXNlZCBvbiBpdHMgY3VycmVudCBw
b3NpdGlvbiwgYW5nbGUgYW5kIHZlbG9jaXR5LgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5n
UGFydGljbGVzQW5pbWF0b3IpOiBBIHN1YiBjbGFzcyBvZiBBbmltYXRvci4KKyAgICAgICAgCisg
ICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0YWdlKTogUmVwcmVzZW50cyB0aGUgY29udGFpbmVy
IG9mIGFsbCB0aGUgYm91bmNpbmcgcGFydGljbGVzLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNs
ZXNTdGFnZS5wcm90b3R5cGUucGFyc2VTaGFwZVBhcmFtdGVycyk6IEdldHMgdGhlIHNoYXBlIHBh
cmFtZXRlcnMgZm9yIHNoYXBlIGFuaW1hdGluZyB0ZXN0cy4KKyAgICAgICAgKEJvdW5jaW5nUGFy
dGljbGVzU3RhZ2UucHJvdG90eXBlLnJhbmRvbVJvdGF0ZXIpOiBDcmVhdGVzIGEgcm90YXRlciBm
b3IgdGhlIHBhcnRpY2xlcy4KKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90
eXBlLmFuaW1hdGUpOiBBbmltYXRlcyBhbGwgdGhlIHBhcnRpY2xlcy4KKyAgICAgICAgKEJvdW5j
aW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnR1bmUpOiBDaGFuZ2VzIHRoZSB0ZXN0IGJ5IGFk
ZGluZyBvciByZW1vdmluZyBwYXJ0aWNsZXMuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdQ
YXJ0aWNsZXNCZW5jaG1hcmspOiBSdW5zIHRoZSBiZW5jaG1hcmsgZm9yIGJvdW5jaW5nIHBhcnRp
Y2xlcyB0ZXN0LgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBl
LmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyBhbiBhbmltYXRvciBvZiB0eXBlIEJvdW5jaW5nUGFy
dGljbGVzQW5pbWF0b3IuCisKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLXNoYXBlcy5qczogQWRkZWQuCisgICAgICAg
IChCb3VuY2luZ0Nzc1NoYXBlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZSBmb3Ig
YW5pbWF0aW5nIENTUyBzaGFwZXMuCisgICAgICAgIChCb3VuY2luZ0Nzc1NoYXBlLnByb3RvdHlw
ZS5fY3JlYXRlU3Bhbik6IENyZWF0ZXMgYSA8c3Bhbj4gZWxlbWVudCBhbmQgdGFrZXMgdGhlIHNo
YXBlIGFuZCBjbGlwcGluZyBjbGFzc2VzIGludG8gY29uc2lkZXJhdGlvbi4KKyAgICAgICAgKEJv
dW5jaW5nQ3NzU2hhcGUucHJvdG90eXBlLl9tb3ZlKTogTW92ZXMgdGhlIHBhcnRpY2xlIHRvIGEg
bmV3IGxvY2F0aW9uLiBBcHBseSB0cmFuc2Zvcm0gc2luY2UgaXQgZG9lcyBub3QgcmVxdWlyZSBs
YXlvdXQuCisgICAgICAgIChCb3VuY2luZ0Nzc1NoYXBlLnByb3RvdHlwZS5hbmltYXRlKTogUm90
YXRlcyBhbmQgbW92ZXMgdGhlIHNoYXBlIHRvIGEgbmV3IGxvY2F0aW9uLgorICAgICAgICAKKyAg
ICAgICAgKEJvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1Bh
cnRpY2xlc1N0YWdlIGZvciBhbmltYXRpbmcgQ1NTIHNoYXBlcy4KKyAgICAgICAgKEJvdW5jaW5n
Q3NzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRp
Y2xlIG9mIHR5cGUgQm91bmNpbmdDc3NTaGFwZS4KKyAgICAgICAgKEJvdW5jaW5nQ3NzU2hhcGVz
U3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCk6IFJlbW92ZXMgdGhlIGNvcnJl
c3BvbmRpbmcgZWxlbWVudCBmb3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4gbGlzdC4KKyAgICAgICAg
CisgICAgICAgIChCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyayk6IEEgc3ViIGNsYXNzIG9mIEJv
dW5jaW5nUGFydGljbGVzQmVuY2htYXJrIGZvciBhbmltYXRpbmcgQ1NTIHNoYXBlcy4KKyAgICAg
ICAgKEJvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENy
ZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UuCisgICAgICAgICh3
aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlw
ZSBCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyay4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1pbWFn
ZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdDc3NJbWFnZSk6IEEgc3ViIGNsYXNzIG9m
IEJvdW5jaW5nUGFydGljbGUgZm9yIGFuaW1hdGluZyBDU1MgaW1hZ2VzLgorICAgICAgICAoQm91
bmNpbmdDc3NJbWFnZS5wcm90b3R5cGUuX21vdmUpOiBNb3ZlIHRoZSBwYXJ0aWNsZSB0byBhIG5l
dyBsb2NhdGlvbi4gQXBwbHkgdHJhbnNmb3JtIHNpbmNlIGl0IGRvZXMgbm90IHJlcXVpcmUgbGF5
b3V0LgorICAgICAgICAoQm91bmNpbmdDc3NJbWFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IFJvdGF0
ZXMgYW5kIG1vdmVzIHRoZSBzaGFwZSB0byBhIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgCisgICAg
ICAgIChCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZSBmb3IgYW5pbWF0aW5nIENTUyBpbWFnZXMuCisgICAgICAgIChCb3VuY2luZ0Nz
c0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0aWNs
ZSBvZiB0eXBlIEJvdW5jaW5nQ3NzSW1hZ2UuCisgICAgICAgIChCb3VuY2luZ0Nzc0ltYWdlc1N0
YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpOiBSZW1vdmVzIHRoZSBjb3JyZXNw
b25kaW5nIGVsZW1lbnQgZm9ybSB0aGUgcGFyZW50IGNoaWxkcmVuIGxpc3QuCisgICAgICAgIAor
ICAgICAgICAoQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmspOiBBIHN1YiBjbGFzcyBvZiBCb3Vu
Y2luZ1BhcnRpY2xlc0JlbmNobWFyayBmb3IgYW5pbWF0aW5nIENTUyBpbWFnZXMuCisgICAgICAg
IChCb3VuY2luZ0Nzc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVh
dGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlLgorICAgICAgICAod2lu
ZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVuY2htYXJrIG9mIHR5cGUg
Qm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0
ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtcGFy
dGljbGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzUGFydGljbGUpOiBBIGJh
c2Ugc3ViLWNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUgZm9yIGFuaW1hdGluZyBjYW52YXMgcGFy
dGljbGVzLgorICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5cGUuX2FwcGx5
Um90YXRpb24pOiBBcHBseSB0aGUgcGFydGljbGUgcm90YXRpb24tYXJvdW5kLWNlbnRlciB0cmFu
c2Zvcm0gdG8gdGhlIGNhbnZhcyBjb250ZXh0LgorICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0
aWNsZS5wcm90b3R5cGUuX2FwcGx5Q2xpcHBpbmcpOiBBcHBseSB0aGUgcGFydGljbGUgY2xpcHBp
bmcgdG8gdGhlIGNhbnZhcyBjb250ZXh0LgorICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNs
ZS5wcm90b3R5cGUuX2RyYXcpOiBBIG5vbi1pbXBsZW1lbnRlZCB2ZXJzaW9uIG9mIHRoZSBkcmF3
aW5nIGZ1bmN0aW9uLgorICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5cGUu
YW5pbWF0ZSk6IENhcnJpZXMgb3V0IGFsbCB0aGUgc3RlcHMgdG8gcmVkcmF3IHRoZSBjYW52YXMg
cGFydGljbGUuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFn
ZSk6IEEgYmFzZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZSBmb3IgYW5pbWF0
aW5nIGNhbnZhcyBwYXJ0aWNsZXMuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdDYW52YXNQ
YXJ0aWNsZXNBbmltYXRvcik6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nUGFydGlj
bGVzQW5pbWF0b3IgZm9yIGFuaW1hdGluZyBjYW52YXMgcGFydGljbGVzLgorICAgICAgICAoQm91
bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6IE92ZXJyaWRl
cyB0aGUgYmFzZSBjbGFzcyBtZXRob2QgdG8gY2xlYXIgdGhlIGNhbnZhcyBiZWZvcmUgcmVkcmF3
aW5nIHRoZSBzdGFnZS4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1BhcnRpY2xl
c0JlbmNobWFyayk6IEEgYmFzZSBzdWItY2xhc3Mgb2YgU3RhZ2VCZW5jaG1hcmsgZm9yIGFuaW1h
dGluZyBjYW52YXMgcGFydGljbGVzLgorICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNC
ZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyB0aGUgY2FudmFzIHBh
cnRpY2xlcyBhbmltYXRvci4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanM6IEFk
ZGVkLgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZSk6IEEgY29uY3JldGUgc3ViLWNsYXNz
IG9mIEJvdW5jaW5nQ2FudmFzUGFydGljbGUgZm9yIGFuaW1hdGluZyBjYW52YXMgc2hhcGVzLgor
ICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUuX2FwcGx5RmlsbCk6IFNldHMg
dGhlIGZpbGxTdHlsZSBpbiB0aGUgY2FudmFzIGNvbnRleHQuCisgICAgICAgIChCb3VuY2luZ0Nh
bnZhc1NoYXBlLnByb3RvdHlwZS5fZHJhd1NoYXBlKTogQ2FycmllcyBvdXQgdGhlIGFjdHVhbCBk
cmF3aW5nLgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUuX2RyYXcpOiBD
YXJyaWVzIG91dCBhbGwgdGhlIHN0ZXBzIHRvIGRyYXcgdGhlIHNoYXBlLgorICAgICAgICAKKyAg
ICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBv
ZiBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlIGZvciBhbmltYXRpbmcgY2FudmFzIHNoYXBlcy4KKyAg
ICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xl
KTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNpbmdDYW52YXNTaGFwZS4KKyAgICAg
ICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyayk6IEEgY29uY3JldGUg
c3ViLWNsYXNzIG9mIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrIGZvciBhbmltYXRp
bmcgY2FudmFzIHNoYXBlcy4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJr
LnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5n
Q2FudmFzU2hhcGVzU3RhZ2UuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0
ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNo
bWFyay4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jl
c291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5j
aW5nQ2FudmFzSW1hZ2UpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlIGZvciBhbmltYXRpbmcgY2FudmFzIGltYWdlcy4KKyAgICAgICAgKEJvdW5jaW5nQ2Fu
dmFzSW1hZ2UucHJvdG90eXBlLl9kcmF3KTogRHJhd3MgYW4gaW1hZ2Ugb24gdGhlIGNvbnRleHQg
b2YgYSBjYW52YXMuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZXNTdGFn
ZSk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2ht
YXJrIGZvciBhbmltYXRpbmcgY2FudmFzIGltYWdlcy4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFz
SW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xl
IG9mIHR5cGUgQm91bmNpbmdDYW52YXNJbWFnZS4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2lu
Z0NhbnZhc0ltYWdlc0JlbmNobWFyayk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5n
Q2FudmFzUGFydGljbGVzQmVuY2htYXJrIGZvciBhbmltYXRpbmcgY2FudmFzIGltYWdlcy4KKyAg
ICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFn
ZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UuCisg
ICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1h
cmsgb2YgdHlwZSBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay4KKworICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmct
cGFydGljbGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnUGFydGljbGUpOiBBIGJh
c2Ugc3ViLWNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGUgZm9yIGFuaW1hdGluZyBTVkcgcGFydGlj
bGVzLgorICAgICAgICAoQm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5cGUuX2FwcGx5Q2xpcHBp
bmcpOiBBcHBseSB0aGUgcGFydGljbGUgY2xpcHBpbmcgYnkgc2V0dGluZyB0aGUgJ2NsaXAtcGF0
aCcgYXR0cmlidXRlIG9mIHRoZSBTVkdFbGVtZW50LgorICAgICAgICAoQm91bmNpbmdTdmdQYXJ0
aWNsZS5wcm90b3R5cGUuX21vdmUpOiBNb3ZlcyB0aGUgcGFydGljbGUgdG8gYSBuZXcgbG9jYXRp
b24uIEFwcGx5IHRyYW5zZm9ybSBzaW5jZSBpdCBkb2VzIG5vdCByZXF1aXJlIGxheW91dC4KKyAg
ICAgICAgKEJvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBlLmFuaW1hdGUpOiBSb3RhdGVzIGFu
ZCBtb3ZlcyB0aGUgc2hhcGUgdG8gYSBuZXcgbG9jYXRpb24uCisgICAgICAgIChCb3VuY2luZ1N2
Z1BhcnRpY2xlc1N0YWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZSBm
b3IgYW5pbWF0aW5nIFNWR0VsZW1lbnRzLgorICAgICAgICAoQm91bmNpbmdTdmdQYXJ0aWNsZXNT
dGFnZS5wcm90b3R5cGUuX2NyZWF0ZURlZnMpOiBDcmVhdGVzIGFuIFNWR0RlZnNFbGVtZW50Lgor
ICAgICAgICAoQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuX2Vuc3VyZURlZnNJ
c0NyZWF0ZWQpOiBFbnN1cmVzIHRoZXJlIGlzIG9ubHkgb25lIFNWR0RlZnNFbGVtZW50IGlzIGNy
ZWF0ZWQuCisgICAgICAgIChCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5fY3Jl
YXRlQ2xpcFN0YXIpOiBDcmVhdGVzIGFuIFNWR0NsaXBQYXRoRWxlbWVudCBhbmQgc2V0cyBpdHMg
J2QnIGF0dHJpYnV0ZSB0byBhIHN0YXIgbGlrZSBzaGFwZS4KKyAgICAgICAgKEJvdW5jaW5nU3Zn
UGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmVuc3VyZUNsaXBTdGFySXNDcmVhdGVkKTogRW5zdXJl
IHRoZXJlIGlzIG9ubHkgb25lIHN0YXIgU1ZHQ2xpcFBhdGhFbGVtZW50IGlzIGNyZWF0ZWQuCisg
ICAgICAgIChCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxC
ZVJlbW92ZWQpOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBmb3JtIHRoZSBwYXJl
bnQgY2hpbGRyZW4gbGlzdC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKEJvdW5jaW5nU3ZnU2hhcGUpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1NW
R1BhcnRpY2xlIGZvciBhbmltYXRpbmcgU1ZHIHNoYXBlcy4KKyAgICAgICAgKEJvdW5jaW5nU3Zn
U2hhcGUucHJvdG90eXBlLl9jcmVhdGVTaGFwZSk6IENyZWF0ZXMgYW4gU1ZHIHNoYXBlLgorICAg
ICAgICAoQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2FwcGx5RmlsbCk6IEFwcGxpZXMgdGhl
IHNlbGVjdGVkIGZpbGwgc3R5bGUgdG8gdGhlIFNWRyBzaGFwZS4KKyAgICAgICAgCisgICAgICAg
IChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNp
bmdTdmdQYXJ0aWNsZXNTdGFnZSBmb3IgYW5pbWF0aW5nIFNWRyBzaGFwZXMuCisgICAgICAgIChC
b3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVHcmFkaWVudCk6IENyZWF0ZXMg
YW4gU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNT
dGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlw
ZSBCb3VuY2luZ1N2Z1NoYXBlLgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90
b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkKTogRW5zdXJlcyB0aGUgYXR0YWNoZWQgU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50IGlzIHJlbW92ZWQgZnJvbSB0aGUgU1ZHRGVmc0VsZW1lbnQuCisg
ICAgICAgIAorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmspOiBBIGNvbmNyZXRl
IHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyayBmb3IgYW5pbWF0aW5nIFNW
RyBpbWFnZXMuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUu
Y3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ1N2Z1NoYXBlc1N0
YWdlLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEg
YmVuY2htYXJrIG9mIHR5cGUgQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsuCisgICAgICAgIAor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9i
b3VuY2luZy1zdmctaW1hZ2VzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nU3ZnSW1hZ2Up
OiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1NWR1BhcnRpY2xlIGZvciBhbmltYXRp
bmcgU1ZHIGltYWdlcy4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ1N2Z0ltYWdlc1N0YWdl
KTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdTVkdQYXJ0aWNsZXNCZW5jaG1hcmsg
Zm9yIGFuaW1hdGluZyBTVkcgaW1hZ2VzLgorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZXNTdGFn
ZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlwZSBC
b3VuY2luZ1N2Z0ltYWdlLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nU3ZnSW1hZ2VzQmVu
Y2htYXJrKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1h
cmsgZm9yIGFuaW1hdGluZyBTVkcgaW1hZ2VzLgorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZXNC
ZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUg
Qm91bmNpbmdTdmdJbWFnZXNTdGFnZS4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQu
Y3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJvdW5jaW5nU3ZnSW1hZ2VzQmVu
Y2htYXJrLgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlczogQWRkZWQuCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtZWxlY3Ryb25zLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFzLXN0YXJz
Lmh0bWw6IEFkZGVkLgorICAgICAgICBFeGFtcGxlcyB0ZXN0IHBhZ2VzLiAKKyAgICAgICAgCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXM6IEFkZGVkLgorICAg
ICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJv
bnMuanM6IEFkZGVkLgorICAgICAgICAoQ2FudmFzRWxlY3Ryb24pOiBBbiBvYmplY3Qgd2hpY2gg
ZHJhd3MgYW5kIGFuaW1hdGUgYSBlbGVjdHJvbiBvYmplY3Qgb24gYSBjYW52YXMgc3RhZ2UuCisg
ICAgICAgIChDYW52YXNFbGVjdHJvbi5wcm90b3R5cGUuX2RyYXcpOiBEcmF3cyB0aGUgZWxlY3Ry
b24gb2JqZWN0LgorICAgICAgICAoQ2FudmFzRWxlY3Ryb24ucHJvdG90eXBlLmFuaW1hdGUpOiBB
bmltYXRlcyB0aGUgZWxlY3Ryb24gb2JqZWN0LgorICAgICAgICAKKyAgICAgICAgKENhbnZhc0Vs
ZWN0cm9uc1N0YWdlKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgU3RhZ2UgZm9yIGFuaW1hdGlu
ZyBlbGVjdHJvbnMuCisgICAgICAgIChDYW52YXNFbGVjdHJvbnNTdGFnZS5wcm90b3R5cGUudHVu
ZSk6IENoYW5nZXMgdGhlIHRlc3QgYnkgYWRkaW5nIG9yIHJlbW92aW5nIGVsZW1lbnRzLgorICAg
ICAgICAoQ2FudmFzRWxlY3Ryb25zU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBBbmltYXRlcyB0
aGUgdGVzdCBlbGVtZW50cy4KKyAgICAgICAgCisgICAgICAgIChDYW52YXNFbGVjdHJvbnNBbmlt
YXRvcik6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIFN0YWdlQW5pbWF0b3IgZm9yIGFuaW1hdGlu
ZyBjYW52YXMgZWxlY3Ryb25zLgorICAgICAgICAoQ2FudmFzRWxlY3Ryb25zQW5pbWF0b3IucHJv
dG90eXBlLmFuaW1hdGUpOiBPdmVycmlkZXMgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHRvIGNsZWFy
IHRoZSBjYW52YXMgYmVmb3JlIHJlZHJhd2luZyB0aGUgc3RhZ2UuCisgICAgICAgIAorICAgICAg
ICAoQ2FudmFzRWxlY3Ryb25zQmVuY2htYXJrKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgU3Rh
Z2VCZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBlbGVjdHJvbnMuCisgICAgICAgIChDYW52YXNFbGVj
dHJvbnNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9m
IENhbnZhc0VsZWN0cm9uc1N0YWdlLgorICAgICAgICAoQ2FudmFzRWxlY3Ryb25zQmVuY2htYXJr
LnByb3RvdHlwZS5jcmVhdGVBbmltYXRvcik6IENyZWF0ZXMgYW4gYW5pbWF0b3Igb2YgdHlwZSBD
YW52YXNFbGVjdHJvbnNBbmltYXRvci4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQu
Y3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIENhbnZhc0VsZWN0cm9uc0JlbmNo
bWFyay4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNv
dXJjZXMvY2FudmFzLXN0YXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKENhbnZhc1N0YXIpOiBBbiBv
YmplY3Qgd2hpY2ggZHJhd3MgYW5kIGFuaW1hdGUgYSBzdGFyIG9iamVjdCBvbiBhIGNhbnZhcyBz
dGFnZS4KKyAgICAgICAgKENhbnZhc1N0YXIucHJvdG90eXBlLl9kcmF3KTogRHJhd3MgdGhlIHN0
YXIgb2JqZWN0LgorICAgICAgICAoQ2FudmFzU3Rhci5wcm90b3R5cGUuYW5pbWF0ZSk6IEFuaW1h
dGVzIHRoZSBzdGFyIG9iamVjdC4KKyAgICAgICAgCisgICAgICAgIChDYW52YXNTdGFyc1N0YWdl
KTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgU3RhZ2UgZm9yIGFuaW1hdGluZyBzdGFycy4KKyAg
ICAgICAgKENhbnZhc1N0YXJzU3RhZ2UucHJvdG90eXBlLnR1bmUpOiBDaGFuZ2VzIHRoZSB0ZXN0
IGJ5IGFkZGluZyBvciByZW1vdmluZyBlbGVtZW50cy4KKyAgICAgICAgKENhbnZhc1N0YXJzU3Rh
Z2UucHJvdG90eXBlLmFuaW1hdGUpOiBBbmltYXRlcyB0aGUgdGVzdCBlbGVtZW50cy4KKyAgICAg
ICAgCisgICAgICAgIChDYW52YXNTdGFyc0FuaW1hdG9yKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mg
b2YgU3RhZ2VBbmltYXRvciBmb3IgYW5pbWF0aW5nIGNhbnZhcyBzdGFycy4KKyAgICAgICAgKENh
bnZhc1N0YXJzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBPdmVycmlkZXMgdGhlIGJhc2Ug
Y2xhc3MgbWV0aG9kIHRvIGNsZWFyIHRoZSBjYW52YXMgYmVmb3JlIHJlZHJhd2luZyB0aGUgc3Rh
Z2UuCisgICAgICAgIAorICAgICAgICAoQ2FudmFzU3RhcnNCZW5jaG1hcmspOiBBIGNvbmNyZXRl
IHN1Yi1jbGFzcyBvZiBCZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBzdGFycy4KKyAgICAgICAgKENh
bnZhc1N0YXJzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFn
ZSBvZiBDYW52YXNTdGFyc1N0YWdlLgorICAgICAgICAoQ2FudmFzU3RhcnNCZW5jaG1hcmsucHJv
dG90eXBlLmNyZWF0ZUFuaW1hdG9yKTogQ3JlYXRlcyBhbiBhbmltYXRvciBvZiB0eXBlIENhbnZh
c1N0YXJzQW5pbWF0b3IuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6
IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBDYW52YXNTdGFyc0JlbmNobWFyay4KKworICAg
ICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgVGhpcyBk
aXJlY3RvcnkgaW5jbHVkZXMgdGhlIHNjcmlwdCB3aGljaCBpcyByZXF1aXJlZCB0byBydW4gYW4g
YWRhcHRpdmUgCisgICAgICAgIGdyYXBoaWNzIGJlbmNobWFyay4gRnJvbSBhbiBlbXB0eSB0ZXN0
IHBhZ2UsIHRoZSBzZXQgb2YgY2xhc3NlcyBpbiB0aGlzCisgICAgICAgIGRpcmVjdG9yeSBhcmUg
cmVzcG9uc2libGUgZm9yIG1lYXN1cmluZyB0aGUgY3VycmVudCBmcmFtZSByYXRlIGFuZAorICAg
ICAgICBjaGFuZ2luZyB0aGUgdGVzdCB0byByZWFjaCBhIGRlc2lyZWQgRlBTLiBJdCBrZWVwcyBh
c2tpbmcgdGhlIHRlc3QgcGFnZQorICAgICAgICB0byB0dW5lIGl0c2VsZiBieSBhIGNlcnRhaW4g
dmFsdWUgdG8gaW5jcmVhc2Ugb3IgZGVjcmVhc2UgdGhlIGZyYW1lIHJhdGUuCisgICAgICAgIEl0
J3MgYWxzbyByZXNwb25zaWJsZSBmb3Igc2FtcGxpbmcgdGhlIHRlc3Qgc3RhdGUgYW5kIHRoZSBj
b3JyZXNwb25kaW5nCisgICAgICAgIGZyYW1lIHJhdGUuCisgICAgICAgIAorICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanM6IEFkZGVkLgorICAgICAgICAoQmVuY2ht
YXJrU3RhdGUpOiBUcmFja3MgdGhlIHN0YXRlIG9mIHRoZSBiZW5jaG1hcmsgdGVzdC4KKyAgICAg
ICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5fdGltZU9mZnNldCk6IFJldHVybnMgdGhlIHRp
bWVPZmZzZXQgb2YgYSBzdGFnZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5f
bWVzc2FnZSk6IFJldHVybnMgdGhlIG1lc3NhZ2Ugb2YgYSBzdGFnZS4KKyAgICAgICAgKEJlbmNo
bWFya1N0YXRlLnByb3RvdHlwZS51cGRhdGUpOiBTZXRzIHRoZSBjdXJyZW50VGltZU9mZnNldCB0
byBhIG5ldyB2YWx1ZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5zYW1wbGlu
Z1RpbWVPZmZzZXQpOiBSZXR1cm5zIHRoZSB0aW1lT2Zmc2V0IG9mIHRoZSBzYW1wbGluZyBzdGFn
ZS4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlwZS5jdXJyZW50U3RhZ2UpOiBSZXR1
cm5zIHRoZSBjdXJyZW50IHN0YWdlIG9mIHRoZSBiZW5jaG1hcmsuCisgICAgICAgIChCZW5jaG1h
cmtTdGF0ZS5wcm90b3R5cGUuY3VycmVudE1lc3NhZ2UpOiBSZXR1cm5zIHRoZSBtZXNzYWdlIG9m
IHRoZSBjdXJyZW50IHN0YWdlIGFuZCB0aW1lT2Zmc2V0LgorICAgICAgICAoQmVuY2htYXJrU3Rh
dGUucHJvdG90eXBlLmN1cnJlbnRQcm9ncmVzcyk6IFJldHVybnMgYSBwZXJjZW50YWdlIG9mIGhv
dyBtdWNoIHRoZSBiZW5jaG1hcmsgaXMgcnVubmluZy4KKyAgICAgICAgCisgICAgICAgIChBbmlt
YXRvcik6IE1hbmFnZXMgYW5pbWF0aW5nIHRoZSB0ZXN0LgorICAgICAgICAoQW5pbWF0b3IucHJv
dG90eXBlLnN0YXJ0KTogQ2FsbGVkIGlmIGFuaW1hdGluZyB1c2luZyBzZXRJbnRlcnZhbCBpcyBy
ZXF1ZXN0ZWQuCisgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUudGltZURlbHRhKTogUmV0dXJu
cyB0aGUgY3VycmVudCB0aW1lRGVsdGEgCisgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUuYW5p
bWF0ZSk6IE1hbmFnZXMgdGhlIHRlc3QgYW5pbWF0aW9uLgorICAgICAgICAoQW5pbWF0b3IucHJv
dG90eXBlLmFuaW1hdGVMb29wKTogQ2FsbGVkIGlmIGFuaW1hdGluZyB1c2luZyByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUgaXMgcmVxdWVzdGVkLiAKKworICAgICAgICAoQmVuY2htYXJrKTogTWFuYWdl
cyBydW5uaW5nIHRoZSB0ZXN0IGJlbmNobWFyayBhbmQgcmVjb3JkaW5nIHRoZSBzYW1wbGVkIGRh
dGEuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnN0YXJ0KTogU3RhcnRzIHRoZSBiZW5j
aG1hcmsuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnVwZGF0ZSk6IENhbGxlZCBmcm9t
IHRoZSBhbmltYXRvci5hbmltYXRlKCkgdG8gY2hhbmdlIHRoZSBjb21wbGV4aXR5IG9mIHRoZSB0
ZXN0LgorICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS5yZWNvcmQpOiBTaG93cyB0aGUgY3Vy
cmVudCAobm90IGZpbmFsKSByZXN1bHRzIG9mIHRoZSBiZW5jaG1hcmsuCisgICAgICAgIChCZW5j
aG1hcmsucHJvdG90eXBlLnJlc29sdmVXaGVuRmluaXNoZWQpOiBTcGlucyB1bnRpbCB0aGUgYmVu
Y2htYXJrIGlzIGZpbmlzaGVkIGFuZCByZXR1cm5zIGl0cyByZXN1bHRzLgorICAgICAgICAoQmVu
Y2htYXJrLnByb3RvdHlwZS5ydW4pOiBTdGFydHMgdGhlIHRlc3QsIHJ1bnMgaXQsIHdhaXRzIHVu
dGlsIGl0IGlzIGZpbmlzaGVkIGFuZCByZXR1cm4gaXRzIHJlc3VsdHMuCisgICAgICAgICh3aW5k
b3cucnVuQmVuY2htYXJrKTogQ2FsbGVkIGZyb20gdGhlIGJlbmNobWFyayBydW5uZXIgdGhyb3Vn
aCB0aGUgc3VpdGUgY29udHJvbGxlciBydW4tY2FsbGJhY2suCisKKyAgICAgICAgKiBBbmltb21l
dGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzOiBBZGRlZC4KKyAgICAgICAgKE1hdHJpeCk6IEEg
bWF0cml4IG9iamVjdC4KKyAgICAgICAgKFZlY3RvcjMpOiBBIHZlY3RvciBvZiBzaXplIDMgb2Jq
ZWN0LgorICAgICAgICAoTWF0cml4Myk6IEEgbWF0cml4IG9mIHNpemUgM3gzIG9iamVjdC4KKyAg
ICAgICAgCisgICAgICAgIChQSURDb250cm9sbGVyKTogQ2xvc2VkLWxvb3AgY29udHJvbGxlciBm
b3IgYSBzZXQtcG9pbnQgeS4KKyAgICAgICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl9zYXQp
OiBMaW1pdHMgdGhlIG91dHB1dCB0byBhIGNlcnRhaW4gcmFuZ2UuCisgICAgICAgIChQSURDb250
cm9sbGVyLnByb3RvdHlwZS50dW5lKTogR2l2ZW4gdGhlIGN1cnJlbnQgb3V0cHV0IG9mIGEgc3lz
dGVtLCBpdCBwcm9kdWNlcyBhIG5ldyBwaWQgdmFsdWUgZm9yIHR1bmluZyBpdC4KKyAgICAgICAg
CisgICAgICAgIChLYWxtYW5Fc3RpbWF0b3IpOiBJbXBsZW1lbnQgS2FsbWFuIGZpbHRlciB0byBn
ZXQgYW4gZXN0aW1hdGUgZm9yIGEgc2FtcGxlZCBkYXRhIHBvaW50LgorICAgICAgICAoS2FsbWFu
RXN0aW1hdG9yLnByb3RvdHlwZS5lc3RpbWF0ZSk6IFJldHVybnMgYW4gZXN0aW1hdGUgZm9yIGZv
ciBhIHNhbXBsZWQgZGF0YSBwb2ludC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVz
b3VyY2VzL3V0aWxpdGllcy5qczogQWRkZWQuCisgICAgICAgICh3aW5kb3cuVXRpbGl0aWVzLl9w
YXJzZSk6IEdpdmVuIGEgc2VwYXJhdG9yIGNoYXJhY3RlciwgaXQgcGFyZXNlcyBhIHN0cmluZyB0
byBhIHNldCBvZiA8a2V5LCB2YWx1ZT4gcGFpcnMuCisgICAgICAgICh3aW5kb3cuVXRpbGl0aWVz
LnBhcnNlUGFyYW1ldGVycyk6IFBhcnNlcyBhIHRlc3QgcGFyYW1ldGVycy4KKyAgICAgICAgKHdp
bmRvdy5VdGlsaXRpZXMucGFyc2VBcmd1bWVudHMpOiBQYXJzZXMgYSB0YWcgYXJndW1lbnRzLgor
ICAgICAgICAod2luZG93LlV0aWxpdGllcy5leHRlbmRPYmplY3QpOiBBZGRzIHRoZSBhdHRyaWJ1
dGVzIGFuZCB0aGVpciB2YWx1ZXMgb2YgYW4gb2JqZWN0IHRvIGFub3RoZXIgb2JqZWN0LgorICAg
ICAgICAod2luZG93LlV0aWxpdGllcy5jb3B5T2JqZWN0KTogQ29waWVzIHRoZSBhdHRyaWJ1dGVz
IGFuZCB0aGVpciB2YWx1ZXMgb2YgYW4gb2JqZWN0IHRvIGEgbmV3IG9iamVjdC4KKyAgICAgICAg
KHdpbmRvdy5VdGlsaXRpZXMubWVyZ2VPYmplY3RzKTogQ29waWVzIHRoZSBhdHRyaWJ1dGVzIGFu
ZCB0aGVpciB2YWx1ZXMgb2YgdHdvIG9iamVjdHMgdG8gYSBuZXcgb2JqZWN0LgorICAgICAgICAo
d2luZG93LlV0aWxpdGllcy5jcmVhdGVTdmdFbGVtZW50KTogQ3JlYXRlcyBhbiBTVkdFbGVtZW50
IGdpdmVuIGl0cyBuYW1lIGFuZCBpdHMgYXR0cmlidXRlcy4KKyAgICAgICAgCisgICAgICAgICog
QW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuY3NzOiBBZGRlZC4KKyAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qczogQWRkZWQuCisgICAgICAgIChSb3Rh
dGVyKTogTWFuYWdlcyByb3RhdGluZyBhbiBhbmdsZSB3aXRoaW4gYSBmaXhlZCB0aW1lIGludGVy
dmFsLgorICAgICAgICAoUm90YXRlci5wcm90b3R5cGUuZ2V0IGludGVydmFsKTogUmV0dXJucyB0
aGUgdGltZSBpbnRlcnZhbCB3aGljaCBpcyByZXF1aXJlZCB0byByb3RhdGUgMzYwIGRlZ3JlZXMu
CisgICAgICAgIChSb3RhdGVyLnByb3RvdHlwZS5uZXh0KTogTW92ZXMgdGhlIGN1cnJlbnQgdGlt
ZSBieSBhIGRlbHRhLgorICAgICAgICAoUm90YXRlci5wcm90b3R5cGUuZGVncmVlKTogUmV0dXJu
cyB0aGUgY3VycmVudCByb3RhdGluZyBkZWdyZWUuCisgICAgICAgIChSb3RhdGVyLnByb3RvdHlw
ZS5yb3RhdGVaKTogUmV0dXJucyBDU1MgZm9ybWF0dGVkIHRyYW5zZm9ybSByb3RhdGVaKCkgc3Ry
aW5nIGZvciB0aGUgY3VycmVudCBkZWdyZWUuCisgICAgICAgIChSb3RhdGVyLnByb3RvdHlwZS5y
b3RhdGUpOiBSZXR1cm5zIFNWRyBmb3JtYXR0ZWQgdHJhbnNmb3JtIHJvdGF0ZSgpIHN0cmluZyBm
b3IgdGhlIGN1cnJlbnQgZGVncmVlLgorICAgICAgICAKKyAgICAgICAgKFN0YWdlKTogQSBiYXNl
IGNsYXNzIGZvciBtYW5hZ2luZyB0aGUgdGVzdCBjb21wbGV4aXR5IGFuZCB0ZXN0IGFuaW1hdGlv
bi4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5nZXQgc2l6ZSk6IFJldHVybnMgdGhlIHNpemUg
b2YgdGhlIHN0YWdlIGV4Y2x1ZGluZyB0aGUgQ1NTIHBhZGRpbmcuCisgICAgICAgIChTdGFnZS5w
cm90b3R5cGUucmFuZG9tKTogUmV0dXJucyBhIHJhbmRvbSBmbG9hdC4KKyAgICAgICAgKFN0YWdl
LnByb3RvdHlwZS5yYW5kb21JbnQpOiBSZXR1cm5zIGEgcmFuZG9tIGludGVnZXIuCisgICAgICAg
IChTdGFnZS5wcm90b3R5cGUucmFuZG9tUG9zaXRpb24pOiBSZXR1cm5zIGEgcmFuZG9tIHBvc2l0
aW9uLgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLnJhbmRvbVNxdWFyZVNpemUpOiBSZXR1cm5z
IGEgc3F1YXJlIHNpemUuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tVmVsb2NpdHkp
OiBSZXR1cm5zIGEgcmFuZG9tIHZlbG9jaXR5LgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLnJh
bmRvbUFuZ2xlKTogUmV0dXJucyBhIHJhbmRvbSBhbmdsZS4KKyAgICAgICAgKFN0YWdlLnByb3Rv
dHlwZS5yYW5kb21Db2xvcik6IFJldHVybnMgYSByYW5kb20gY29sb3Igbm90IHRvbyBkYXJrIGFu
ZCBub3QgdG9vIGxpZ2h0LgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLnJhbmRvbVJvdGF0ZXIp
OiBDcmVhdGVzIGEgcmFuZG9tIHJvdGF0ZXIuIEl0cyB2ZWxvY2l0eSBkZXBlbmRzIG9uIGNob29z
aW5nIGEgcmFuZG9tIHJvdGF0aW9uIHRpbWUgaW50ZXJ2YWwuCisgICAgICAgIChTdGFnZS5wcm90
b3R5cGUudHVuZSk6IEEgbm90LWltcGxlbWVudGVkIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbi4K
KyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5hbmltYXRlKTogQSBub3QtaW1wbGVtZW50ZWQgdmVy
c2lvbiBvZiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLmNsZWFyKTog
Q2xlYXJzIHRoZSBzdGFnZSBmcm9tIGFsbCBpdHMgYW5pbWF0aW9uIGVsZW1lbnRzLgorICAgICAg
ICAKKyAgICAgICAgKFN0YWdlQW5pbWF0b3IpOiBBIGJhc2UgY2xhc3MgZm9yIHRoZSBzdGFnZS1i
YXNlZCBhbmltYXRvcnMuCisgICAgICAgIChTdGFnZUFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRl
KTogQ2FsbHMgQW5pbWF0b3IuYW5pbWF0ZSgpIHdoaWNoIHVwZGF0ZXMgdGhlIHRlc3QgcGFnZSBh
bmQgdGhlbiBjYWxscyBTdGFnZS5hbmltYXRlKCkgdG8gZm9yY2UgcmVkcmF3LgorICAgICAgICAK
KyAgICAgICAgKFN0YWdlQmVuY2htYXJrKTogQSBiYXNlIGNsYXNzIGZvciB0aGUgc3RhZ2UtYmFz
ZWQgYmVuY2htYXJrcy4KKyAgICAgICAgKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVT
dGFnZSk6IENyZWF0ZXMgdGhlIGRlZmF1bHQgc3RhZ2UuCisgICAgICAgIChTdGFnZUJlbmNobWFy
ay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBDcmVhdGVzIHRoZSBkZWZhdWx0IGFuaW1hdG9y
LgorICAgICAgICAoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLnR1bmUpOiBEZWxlZ2F0ZXMgdGhl
IGNhbGwgdG8gc3RhZ2UuCisgICAgICAgIChTdGFnZUJlbmNobWFyay5wcm90b3R5cGUuY2xlYXIp
OiBEZWxlZ2F0ZXMgdGhlIGNhbGwgdG8gc3RhZ2UuCisgICAgICAgIChTdGFnZUJlbmNobWFyay5w
cm90b3R5cGUuc2hvd1Jlc3VsdHMpOiBTaG93cyB0aGUgcmVzdWx0cy9wcm9ncmVzcyB0aHJvdWdo
IGl0cyByZWNvcmRUYWJsZSBhbmQgcHJvZ3Jlc3NCYXIuCisgICAgICAgIAorICAgICAgICAqIEFu
aW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnBuZzogQWRkZWQuCisgICAgICAgICog
QW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcuc3ZnOiBBZGRlZC4KKyAgICAgICAg
VGhlc2UgaW1hZ2VzIGFyZSBzaGFyZWQgYW1vbmcgYWxsIHRoZSB0ZXN0cy4KKyAgICAgICAgCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZTogQWRkZWQuCisgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXM6IEFkZGVkLgorICAgICAgICBUaGlzIGRp
cmVjdG9yeSBpbmNsdWRlcyB0ZW1wbGF0ZSB0ZXN0cyB3aGljaCBkbyBub3RoaW5nLiBUaGV5IGNh
biBiZSB1c2VkCisgICAgICAgIHRvIGF1dGhvciBuZXcgdGVzdHMuIEFuaW1hdGVkIGl0ZW1zIGNh
biBiZSBjcmVhdGVkLCBtb3ZlZCBhbmQgcmVkcmF3biBieQorICAgICAgICByZW1vdmluZyB0aGUg
VE9ETyBjb21tZW50cyBpbiB0aGUgc2NyaXB0IGZpbGVzIGFuZCB3cml0aW5nIGFjdHVhbCBjb2Rl
LgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jc3MuaHRt
bDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1j
YW52YXMuaHRtbDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90
ZW1wbGF0ZS1zdmcuaHRtbDogQWRkZWQuCisgICAgICAgIFRlbXBsYXRlIHRlc3QgcGFnZXMuIFRo
ZXkgY2FuIGJlIHVzZWQgYXMgdGhleSBhcmUuIENTUyBhdHRyaWJ1dGVzIG9yIGhpZGRlbgorICAg
ICAgICBlbGVtZW50cyBjYW4gYmUgYWRkZWQgdG8gdGhlc2UgZGVyaXZlZCB0ZXN0IHBhZ2VzIGlm
IG5lZWRlZC4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9y
ZXNvdXJjZXMvdGVtcGxhdGUtY3NzLmpzOiBBZGRlZC4KKyAgICAgICAgCisgICAgICAgIChUZW1w
bGF0ZUNzc1N0YWdlKTogQSBzdGFnZSB0byBjcmVhdGUgYW5kIGFuaW1hdGUgSFRNTEVsZW1lbnRz
LgorICAgICAgICAoVGVtcGxhdGVDc3NTdGFnZS5wcm90b3R5cGUudHVuZSk6IENoYW5nZXMgdGhl
IHRlc3QgYnkgYWRkaW5nIG9yIHJlbW92aW5nIGVsZW1lbnRzLgorICAgICAgICAoVGVtcGxhdGVD
c3NTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IEFuaW1hdGVzIHRoZSB0ZXN0IGVsZW1lbnRzLgor
ICAgICAgICAoVGVtcGxhdGVDc3NCZW5jaG1hcmspOiAKKyAgICAgICAgKFRlbXBsYXRlQ3NzQmVu
Y2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgdGhlIHRlc3Qgc3RhZ2UuCisg
ICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1h
cmsgb2YgdHlwZSBUZW1wbGF0ZUNzc0JlbmNobWFyay4KKyAgICAgICAgCisgICAgICAgICogQW5p
bW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKFRlbXBsYXRlQ2FudmFzT2JqZWN0KToKKyAgICAgICAgKFRlbXBsYXRlQ2Fu
dmFzT2JqZWN0LnByb3RvdHlwZS5fZHJhdyk6IERyYXdzIHRoZSBvYmplY3RzIG9uIHRoZSBjYW52
YXMgY29udGV4dC4KKyAgICAgICAgKFRlbXBsYXRlQ2FudmFzT2JqZWN0LnByb3RvdHlwZS5hbmlt
YXRlKTogTW92ZXMgYW5kIHJlZHJhd3MgdGhlIG9iamVjdC4KKyAgICAgICAgKFRlbXBsYXRlQ2Fu
dmFzU3RhZ2UpOiBBIHN0YWdlIHRvIGNyZWF0ZSBhbmQgYW5pbWF0ZSBkcmF3aW5nIGVsZW1lbnRz
LgorICAgICAgICAoVGVtcGxhdGVDYW52YXNTdGFnZS5wcm90b3R5cGUudHVuZSk6IGhhbmdlcyB0
aGUgdGVzdCBieSBhZGRpbmcgb3IgcmVtb3ZpbmcgZWxlbWVudHMuCisgICAgICAgIChUZW1wbGF0
ZUNhbnZhc1N0YWdlLnByb3RvdHlwZS5hbmltYXRlKTogIEFuaW1hdGVzIHRoZSB0ZXN0IGVsZW1l
bnRzLgorICAgICAgICAoVGVtcGxhdGVDYW52YXNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6
IFN0YXJ0cyB0aGUgYW5pbWF0aW9uIGV2ZXJ5IGZyYW1lLgorICAgICAgICAoVGVtcGxhdGVDYW52
YXNCZW5jaG1hcmspOiAKKyAgICAgICAgKFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlw
ZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIFRlbXBsYXRlQ2FudmFzU3Rh
Z2UuCisgICAgICAgIChUZW1wbGF0ZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5p
bWF0b3IpOiBDcmVhdGVzIGEgYW5pbWF0b3Igb2YgdHlwZSBUZW1wbGF0ZUNhbnZhc0FuaW1hdG9y
LgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVu
Y2htYXJrIG9mIHR5cGUgVGVtcGxhdGVDYW52YXNCZW5jaG1hcmsuCisgICAgICAgIAorICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLXN2Zy5qczog
QWRkZWQuCisgICAgICAgIChUZW1wbGF0ZVN2Z1N0YWdlKTogQSBzdGFnZSB0byBjcmVhdGUgYW5k
IGFuaW1hdGUgU1ZHRWxlbWVudHMuCisgICAgICAgIChUZW1wbGF0ZVN2Z1N0YWdlLnByb3RvdHlw
ZS50dW5lKTogQ2hhbmdlcyB0aGUgdGVzdCBieSBhZGRpbmcgb3IgcmVtb3ZpbmcgZWxlbWVudHMu
CisgICAgICAgIChUZW1wbGF0ZVN2Z1N0YWdlLnByb3RvdHlwZS5hbmltYXRlKTogQW5pbWF0ZXMg
dGhlIHRlc3QgZWxlbWVudHMuCisgICAgICAgIChUZW1wbGF0ZVN2Z0JlbmNobWFyay5wcm90b3R5
cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBUZW1wbGF0ZVN2Z1N0YWdl
LgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEgYmVu
Y2htYXJrIG9mIHR5cGUgVGVtcGxhdGVTdmdCZW5jaG1hcmsuCisgICAgICAgIAorICAgICAgICAq
IEFuaW1vbWV0ZXIvdGVzdHMvdGV4dDogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0
cy90ZXh0L3Jlc291cmNlczogQWRkZWQuCisgICAgICAgIFRoaXMgZGlyZWN0b3J5IGluY2x1ZGVz
IHRoZSB0ZXh0IGFuaW1hdGluZyB0ZXN0cyB3aGljaCBjdXJyZW50bHkgcnVucworICAgICAgICBv
biBDU1Mgc3RhZ2Ugb25seS4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy90
ZXh0L2xheWVyaW5nLXRleHQuaHRtbDogQWRkZWQuCisgICAgICAgIFRleHQgdGVzdCBwYWdlLgor
ICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVy
aW5nLXRleHQuanM6IEFkZGVkLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UpOiBSZXByZXNl
bnRzIHRoZSBjb250YWluZXIgb2YgYWxsIHRoZSBzdGFja2VkIHRleHQgbGF5ZXJzLgorICAgICAg
ICAoTGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VUZXh0SXRlbSk6IFBhcnNlcyBhIHRleHRJdGVtIHdo
aWNoIG1heSBiZSBhbiBvcGVuaW5nIHRhZywgYSBjbG9zaW5nIHRhZyBvciBhIHNlbGYtY2xvc2lu
ZyB0YWcuCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5pc09wZW5pbmdUZXh0SXRlbSk6IFJl
dHVybnMgdHJ1ZSBpZiB0aGUgdGV4dEl0ZW0gaXMgYW4gb3BlbmluZyB0YWcgZS5nLiAnPG9sPicu
CisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5pc0Nsb3NpbmdUZXh0SXRlbSk6IFJldHVybnMg
dHJ1ZSBpZiAgdGhlIHRleHRJdGVtIGlzIGFuIGNsb3NpbmcgdGFnIGUuZy4gJzwvb2w+LgorICAg
ICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MuTGF5ZXJpbmdUZXh0U3RhZ2Uu
dGV4dEl0ZW1zLm1hcCk6IENhbGN1bGF0ZXMgYW5kIHN0b3JlcyBpc09wZW5pbmcgYW5kIGlzQ2xv
c2luZyBmbGFncyBmb3IgZWFjaCB0ZXh0SXRlbS4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdl
LmlzQ29sb3JhYmxlVGV4dEl0ZW0pOiBSZXR1cm5zIHRydWUgaWYgdGhlIHRleHRJdGVtIGlzIHNl
bGYtY2xvc2luZyB0YWcgZS5nLiAnPHA+Li4uPC9wPicuCisgICAgICAgIChMYXllcmluZ1RleHRT
dGFnZS5pc0luc2VydGFibGVUZXh0SXRlbSk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgdGV4dEl0ZW1z
IGNhdXNlcyBhIG5ldyBlbGVtZW50IHRvIGJlIGFkZGVkIHRvIHRoZSB0ZXh0IGxheWVycy4KKyAg
ICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmNvbG9yYWJsZVRleHRJdGVtcy5MYXllcmluZ1RleHRT
dGFnZS50ZXh0SXRlbXNGbGFncy5maWx0ZXIpOiBOdW1iZXIgb2YgY29sb3JhYmxlIHRleHRJdGVt
cy4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmluc2VydGFibGVUZXh0SXRlbXMuTGF5ZXJp
bmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3MuZmlsdGVyKTogTnVtYmVyIG9mIGluc2VydGFibGUg
dGV4dEl0ZW1zLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuY29sb3JJbmRleFRvVGV4dEVs
ZW1lbnRJbmRleCk6IE1hcHMgZnJvbSBjb2xvckluZGV4IFswLi5jb2xvcmFibGVUZXh0SXRlbXMt
MV0gdG8gdGV4dEVsZW1lbnRJbmRleCBbMC4uaW5zZXJ0YWJsZVRleHRJdGVtcy0xXS4KKyAgICAg
ICAgKExheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5fbmV4dFRleHRJdGVtKTogTW92ZXMgdGhl
IF90ZXh0SXRlbUluZGV4IG9uZSBzdGVwIGZvcndhcmQgaW4gYSBsb29wIFswLi5MYXllcmluZ1Rl
eHRTdGFnZS50ZXh0SXRlbXMubGVuZ3RoLTFdLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2Uu
cHJvdG90eXBlLl9wcmV2aW91c1RleHRJdGVtKTogTW92ZXMgdGhlIF90ZXh0SXRlbUluZGV4IG9u
ZSBzdGVwIGJhY2t3YXJkIGluIGEgbG9vcC4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLnBy
b3RvdHlwZS5fcHVzaFRleHRFbGVtZW50KTogQ3JlYXRlcyBhIG5ldyB0ZXh0SXRlbUVsZW1lbnQg
YW5kIGFkZHMgaXQgdG8gdGhlIHRvcG1vc3QgY29udGFpbmVyIDxkaXY+LgorICAgICAgICAoTGF5
ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9wb3BUZXh0RWxlbWVudCk6IFJlbW92ZXMgdGhlIGxh
c3QgdGV4dEl0ZW1FbGVtZW50IGZyb20gdGhlIHRvcG1vc3QgY29udGFpbmVyIDxkaXY+LgorICAg
ICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9jb2xvclRleHRJdGVtKTogQ2hhbmdl
cyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBhIHNpbmdsZSBjb2xvcmFibGUgdGV4dEVsZW1lbnQu
IFRoZSBpbmRleCBhZHZhbmNlcyBpbiBhIGNpcmNsZSBbMC4uY29sb3JhYmxlVGV4dEl0ZW1zLTFd
LgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBDaGFuZ2Vz
IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGFuZCB0aGUgdGV4dCBjb2xvciBvZiB0aGUgdGV4dEVsZW1l
bnRzIHN1Y2ggdGhhdCBhIHJlZHJhdyBpcyBlbmZvcmNlZC4KKyAgICAgICAgKExheWVyaW5nVGV4
dFN0YWdlLnByb3RvdHlwZS50dW5lKTogQWRkcyBvciByZW1vdmVzIHRleHRFbGVtZW50cyB0byB0
aGUgc3RhZ2UuCisKKyAgICAgICAgKExheWVyaW5nVGV4dEJlbmNobWFyayk6IFJ1bnMgdGhlIGJl
bmNobWFyayBmb3IgdGhlIGxheWVyaW5nIHRleHQgdGVzdC4KKyAgICAgICAgKExheWVyaW5nVGV4
dEJlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlw
ZSBMYXllcmluZ1RleHRTdGFnZS4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3Jl
YXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIExheWVyaW5nVGV4dEJlbmNobWFyay4K
KwogMjAxNS0xMC0wMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCB0aGUgdGVzdCBydW5uZXIgZm9yIGEgbmV3IGEgZ3JhcGhpY3MgYmVu
Y2htYXJrCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL2FuaW1vbWV0
ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVy
L2FuaW1vbWV0ZXIuaHRtbAkocmV2aXNpb24gMTkwNTI2KQorKysgUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsNyAr
Miw2IEBACiA8aHRtbD4KIDxoZWFkPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
cmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzIj4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3N0YXRpc3RpY3MuanMiIGRlZmVyPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvc2FtcGxlci5qcyIgZGVmZXI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9leHRlbnNpb25zLmpzIiBkZWZlcj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3Rlc3RzLmpzIiBkZWZlcj0iIj48L3NjcmlwdD4KQEAgLTI0LDYgKzIzLDcgQEAK
ICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD0iaHRtbC1zdWl0ZSIgdHlwZT0i
Y2hlY2tib3giIGNoZWNrZWQ+IEhUTUwgZWxlbWVudHMgc3VpdGU8L2xhYmVsPjxicj4KICAgICAg
ICAgICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD0iY2FudmFzLXN1aXRlIiB0eXBlPSJjaGVj
a2JveCIgY2hlY2tlZD4gQ2FudmFzIGRyYXdpbmdzIHN1aXRlPC9sYWJlbD48YnI+CiAgICAgICAg
ICAgICAgICAgICAgIDxsYWJlbD48aW5wdXQgaWQ9InN2Zy1zdWl0ZSIgdHlwZT0iY2hlY2tib3gi
IGNoZWNrZWQ+IFNWRyBlbGVtZW50cyBzdWl0ZTwvbGFiZWw+PGJyPgorICAgICAgICAgICAgICAg
ICAgICA8bGFiZWw+PGlucHV0IGlkPSJleGFtcGxlcy1zdWl0ZSIgdHlwZT0iY2hlY2tib3giPiBF
eGFtcGxlcyBzdWl0ZTwvbGFiZWw+PGJyPgogICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PGlu
cHV0IGlkPSJ0ZW1wbGF0ZS1zdWl0ZSIgdHlwZT0iY2hlY2tib3giPiBUZW1wbGF0ZSBzdWl0ZTwv
bGFiZWw+CiAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgPGRpdj4KQEAg
LTMxLDYgKzMxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkZyYW1lIHJhdGU6IDxp
bnB1dCBpZD0iZnJhbWUtcmF0ZSIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iNTAiPiBmcHM8L2xhYmVs
Pjxicj4KICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD0iZXN0aW1hdGVkLWZy
YW1lLXJhdGUiIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPiBFc3RpbWF0ZWQgRnJhbWUgUmF0ZTwv
bGFiZWw+PGJyPgogICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PGlucHV0IGlkPSJmaXgtdGVz
dC1jb21wbGV4aXR5IiB0eXBlPSJjaGVja2JveCI+IEZpeCB0ZXN0IGNvbXBsZXhpdHkgYWZ0ZXIg
d2FybXVwPC9sYWJlbD4KKyAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD0ic2hv
dy1ydW5uaW5nLXJlc3VsdHMiIHR5cGU9ImNoZWNrYm94Ij4gU2hvdyBydW5uaW5nIHJlc3VsdHM8
L2xhYmVsPgogICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgPC9kaXY+CiAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b25zIj4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qcwko
cmV2aXNpb24gMTkwNTI2KQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9y
ZXNvdXJjZXMvYW5pbW9tZXRlci5qcwkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQCBm
dW5jdGlvbiBzdGFydEJlbmNobWFyaygpCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJodG1sLXN1aXRlIiksIAogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFz
LXN1aXRlIiksIAogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3ZnLXN1aXRlIiks
CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJleGFtcGxlcy1zdWl0ZSIpLAogICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVtcGxhdGUtc3VpdGUiKSwKICAgICBdOwog
ICAgIHZhciBlbmFibGVkU3VpdGVzID0gU3VpdGVzLmZpbHRlcihmdW5jdGlvbiAoc3VpdGUsIGlu
ZGV4KSB7IHJldHVybiAhc3VpdGUuZGlzYWJsZWQgJiYgY2hlY2tib3hlc1tpbmRleF0uY2hlY2tl
ZDsgfSk7CkBAIC03Miw2ICs3MywxMSBAQCBmdW5jdGlvbiBzdGFydEJlbmNobWFyaygpCiAgICAg
YmVuY2htYXJrUnVubmVyQ2xpZW50Lm9wdGlvbnNbImZyYW1lUmF0ZSJdID0gcGFyc2VJbnQoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyYW1lLXJhdGUiKS52YWx1ZSk7CiAgICAgYmVuY2htYXJr
UnVubmVyQ2xpZW50Lm9wdGlvbnNbImVzdGltYXRlZEZyYW1lUmF0ZSJdID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImVzdGltYXRlZC1mcmFtZS1yYXRlIikuY2hlY2tlZDsgICAgCiAgICAgYmVu
Y2htYXJrUnVubmVyQ2xpZW50Lm9wdGlvbnNbImZpeFRlc3RDb21wbGV4aXR5Il0gPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZml4LXRlc3QtY29tcGxleGl0eSIpLmNoZWNrZWQ7CisgICAgYmVu
Y2htYXJrUnVubmVyQ2xpZW50Lm9wdGlvbnNbInNob3dSdW5uaW5nUmVzdWx0cyJdID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInNob3ctcnVubmluZy1yZXN1bHRzIikuY2hlY2tlZDsKKyAgICAK
KyAgICBpZiAoIWJlbmNobWFya1J1bm5lckNsaWVudC5vcHRpb25zWyJzaG93UnVubmluZ1Jlc3Vs
dHMiXSkKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlY29yZCIpLnN0eWxlLmRp
c3BsYXkgPSAibm9uZSI7CisKICAgICB2YXIgcnVubmVyID0gbmV3IEJlbmNobWFya1J1bm5lcihl
bmFibGVkU3VpdGVzLCBiZW5jaG1hcmtSdW5uZXJDbGllbnQpOwogICAgIHJ1bm5lci5ydW5NdWx0
aXBsZUl0ZXJhdGlvbnMoYmVuY2htYXJrUnVubmVyQ2xpZW50Lml0ZXJhdGlvbkNvdW50KTsKIH0K
SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3Rz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVz
b3VyY2VzL3Rlc3RzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
MzAgQEAKK3ZhciBUaXRsZXMgPSBbCisgICAgeworICAgICAgICB0ZXh0OiAiVGVzdCBOYW1lIiwK
KyAgICAgICAgd2lkdGg6IDI4LAorICAgICAgICBjaGlsZHJlbjogW10KKyAgICB9LAorICAgIHsK
KyAgICAgICAgdGV4dDogIkFuaW1hdGVkIEl0ZW1zIiwKKyAgICAgICAgd2lkdGg6IDI4LAorICAg
ICAgICBjaGlsZHJlbjoKKyAgICAgICAgWworICAgICAgICAgICAgeyB0ZXh0OiAgICJBdmcuIiwg
d2lkdGg6IDcsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAgICJXLjUlIiwg
d2lkdGg6IDcsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAgICJTdGQuIiwg
d2lkdGg6IDcsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAgICAgeyB0ZXh0OiAgICAgICIlIiwg
d2lkdGg6IDcsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICBdCisgICAgfSwKKyAgICB7CisgICAg
ICAgIHRleHQ6ICJGUFMiLAorICAgICAgICB3aWR0aDogMjgsCisgICAgICAgIGNoaWxkcmVuOgor
ICAgICAgICBbCisgICAgICAgICAgICB7IHRleHQ6ICAgIkF2Zy4iLCB3aWR0aDogNywgY2hpbGRy
ZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICAgIlcuNSUiLCB3aWR0aDogNywgY2hpbGRy
ZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICAgIlN0ZC4iLCB3aWR0aDogNywgY2hpbGRy
ZW46IFtdIH0sCisgICAgICAgICAgICB7IHRleHQ6ICAgICAgIiUiLCB3aWR0aDogNywgY2hpbGRy
ZW46IFtdIH0sCisgICAgICAgIF0KKyAgICB9LAorICAgIHsKKyAgICAgICAgdGV4dDogIlNjb3Jl
IiwKKyAgICAgICAgd2lkdGg6IDgsCisgICAgICAgIGNoaWxkcmVuOiBbXQorICAgIH0sCisgICAg
eworICAgICAgICB0ZXh0OiAiU2FtcGxlcyIsCisgICAgICAgIHdpZHRoOiA4LAorICAgICAgICBj
aGlsZHJlbjogW10KKyAgICB9CitdOworCit2YXIgU3VpdGVzID0gW107CisKK1N1aXRlcy5wdXNo
KHsKKyAgICBuYW1lOiAiSFRNTCBCb3VuY2luZyBQYXJ0aWNsZXMiLAorICAgIHByZXBhcmU6IGZ1
bmN0aW9uKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgiI3N0YWdlIikudGhlbihmdW5jdGlv
biAoZWxlbWVudCkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOwor
ICAgIH0sCisgICAgCisgICAgcnVuOiBmdW5jdGlvbihjb250ZW50V2luZG93LCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCisgICAgeworICAgICAgICByZXR1cm4gY29u
dGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhpcywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUs
IHByb2dyZXNzQmFyKTsKKyAgICB9LAorCisgICAgdGl0bGVzOiBUaXRsZXMsCisgICAgdGVzdHM6
IFsKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRp
Y2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVM
aW1pdD01JnBhcnRpY2xlV2lkdGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwK
KyAgICAgICAgICAgIG5hbWU6ICJDU1MgYm91bmNpbmcgY2lyY2xlcyIKKyAgICAgICAgfSwKKyAg
ICAgICAgeyAKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9i
b3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01
JnBhcnRpY2xlV2lkdGg9NDAmcGFydGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIi
LAorICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBjbGlwcGVkIHJlY3RzIgorICAgICAg
ICB9LAorICAgICAgICB7IAorICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92
ZUxpbWl0PTUmcGFydGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUm
ZmlsbD1ncmFkaWVudCIsCisgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIGdyYWRpZW50
IGNpcmNsZXMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWw/Z2Fpbj0wLjQm
YWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0yJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9
ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICBuYW1l
OiAiQ1NTIGJvdW5jaW5nIFNWRyBpbWFnZXMiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1h
Z2VzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9
ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIs
CisgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIFBORyBpbWFnZXMiCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4
dC5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwIiwKKyAgICAgICAgICAg
IG5hbWU6ICJDU1MgbGF5ZXJpbmcgdGV4dCIKKyAgICAgICAgfSwKKyAgICBdCit9KTsKKworU3Vp
dGVzLnB1c2goeworICAgIG5hbWU6ICJDYW52YXMgQm91bmNpbmcgUGFydGljbGVzIiwKKyAgICBw
cmVwYXJlOiBmdW5jdGlvbihydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkK
KyAgICB7CisgICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoIiNzdGFnZSIpLnRo
ZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAg
ICAgICB9KTsKKyAgICB9LCAgCisgICAgCisgICAgcnVuOiBmdW5jdGlvbihjb250ZW50V2luZG93
LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCisgICAgeworICAgICAg
ICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhpcywgdGVzdCwgb3B0aW9ucywg
cmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICB9LAorICAgIAorICAgIHRpdGxlczogVGl0
bGVzLAorICAgIHRlc3RzOiBbCisgICAgICAgIHsgCisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP2dhaW49NCZh
ZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xlSGVp
Z2h0PTEyJnNoYXBlPWNpcmNsZSIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5n
IGNpcmNsZXMiCisgICAgICAgIH0sCisgICAgICAgIHsgCisgICAgICAgICAgICB1cmw6ICIuLi90
ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP2dhaW49
NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xl
SGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKKyAgICAgICAgICAgIG5hbWU6ICJjYW52
YXMgYm91bmNpbmcgY2xpcHBlZCByZWN0cyIKKyAgICAgICAgfSwKKyAgICAgICAgeyAKKyAgICAg
ICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMt
c2hhcGVzLmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAwJnBhcnRpY2xl
V2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3JhZGllbnQiLAor
ICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBncmFkaWVudCBjaXJjbGVzIgorICAg
ICAgICB9LAorICAgICAgICB7IAorICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmct
cGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbD9nYWluPTAuNCZhZGRMaW1pdD01
JnJlbW92ZUxpbWl0PTEmcGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNy
Yz0uLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKKyAgICAgICAgICAgIG5hbWU6ICJjYW52YXMg
Ym91bmNpbmcgU1ZHIGltYWdlcyIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
dXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMu
aHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwMCZyZW1vdmVMaW1pdD0xMDAwJnBhcnRpY2xlV2lkdGg9
ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIs
CisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIFBORyBpbWFnZXMiCisgICAgICAg
IH0sCisgICAgXQorfSk7CisKK1N1aXRlcy5wdXNoKHsKKyAgICBuYW1lOiAiU1ZHIEJvdW5jaW5n
IFBhcnRpY2xlcyIsCisgICAgcHJlcGFyZTogZnVuY3Rpb24ocnVubmVyLCBjb250ZW50V2luZG93
LCBjb250ZW50RG9jdW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JF
bGVtZW50KCIjc3RhZ2UiKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICBy
ZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAgfSwKKyAgICAKKyAgICBydW46IGZ1bmN0
aW9uKGNvbnRlbnRXaW5kb3csIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jh
cikKKyAgICB7CisgICAgICAgIHJldHVybiBjb250ZW50V2luZG93LnJ1bkJlbmNobWFyayh0aGlz
LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIH0sCisgICAg
CisgICAgdGl0bGVzOiBUaXRsZXMsCisgICAgdGVzdHM6IFsKKyAgICAgICAgeworICAgICAgICAg
ICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMu
aHRtbD9nYWluPTYmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD0x
MiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUiLAorICAgICAgICAgICAgbmFtZTogIlNW
RyBib3VuY2luZyBjaXJjbGVzIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
dXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRt
bD9nYWluPTAuNiZhZGRMaW1pdD0xMCZyZW1vdmVMaW1pdD0xJnBhcnRpY2xlV2lkdGg9NDAmcGFy
dGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAorICAgICAgICAgICAgbmFtZTog
IlNWRyBib3VuY2luZyBjbGlwcGVkIHJlY3RzIiwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1z
aGFwZXMuaHRtbD9nYWluPTAuOCZhZGRMaW1pdD0xMCZyZW1vdmVMaW1pdD00JnBhcnRpY2xlV2lk
dGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3JhZGllbnQiLAorICAg
ICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBncmFkaWVudCBjaXJjbGVzIgorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sP2dhaW49MC40JmFkZExpbWl0PTUmcmVtb3ZlTGlt
aXQ9MiZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291
cmNlcy95aW4teWFuZy5zdmciLAorICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBTVkcg
aW1hZ2VzIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sP2dhaW49NCZhZGRM
aW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgw
JmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5wbmciLAorICAgICAgICAgICAgbmFtZTog
IlNWRyBib3VuY2luZyBQTkcgaW1hZ2VzIgorICAgICAgICB9LAorICAgIF0KK30pOworCitTdWl0
ZXMucHVzaCh7CisgICAgbmFtZTogIk1vcmUgY29tcGxleCBleGFtcGxlcyIsCisgICAgcHJlcGFy
ZTogZnVuY3Rpb24ocnVubmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpCisgICAg
eworICAgICAgICByZXR1cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCIjc3RhZ2UiKS50aGVuKGZ1
bmN0aW9uIChlbGVtZW50KSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAg
fSk7CisgICAgfSwKKyAgICAKKyAgICBydW46IGZ1bmN0aW9uKGNvbnRlbnRXaW5kb3csIHRlc3Qs
IG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKKyAgICB7CisgICAgICAgIHJldHVy
biBjb250ZW50V2luZG93LnJ1bkJlbmNobWFyayh0aGlzLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRU
YWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIH0sCisgICAgCisgICAgdGl0bGVzOiBUaXRsZXMsCisg
ICAgdGVzdHM6IFsKKyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvZXhhbXBs
ZXMvY2FudmFzLWVsZWN0cm9ucy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9
MTAiLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBlbGVjdHJvbnMiCisgICAgICAgIH0sCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1zdGFy
cy5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSIsCisgICAgICAgICAgICBu
YW1lOiAiY2FudmFzIHN0YXJzIgorICAgICAgICB9LAorICAgIF0KK30pOworCitTdWl0ZXMucHVz
aCh7CisgICAgbmFtZTogIlN0YWdlIFRlbXBsYXRlcyAoQ2FuIGJlIHVzZWQgZm9yIG5ldyB0ZXN0
cykiLAorICAgIHByZXBhcmU6IGZ1bmN0aW9uKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVu
dERvY3VtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgi
I3N0YWdlIikudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgcmV0dXJuIGVs
ZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAgCisgICAgcnVuOiBmdW5jdGlvbihjb250
ZW50V2luZG93LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCisgICAg
eworICAgICAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhpcywgdGVzdCwg
b3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICB9LAorICAgIAorICAgIHRp
dGxlczogVGl0bGVzLAorICAgIHRlc3RzOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDog
Ii4uL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNzcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAm
cmVtb3ZlTGltaXQ9NSIsCisgICAgICAgICAgICBuYW1lOiAiQ1NTIHRlbXBsYXRlIgorICAgICAg
ICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy90ZW1wbGF0ZS90ZW1w
bGF0ZS1jYW52YXMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMDAiLAor
ICAgICAgICAgICAgbmFtZTogImNhbnZhcyB0ZW1wbGF0ZSIKKyAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0bWw/
Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JjxvdGhlcl9wYXJhbXRlcj49PHZhbHVl
PiIsCisgICAgICAgICAgICBuYW1lOiAiU1ZHIHRlbXBsYXRlIgorICAgICAgICB9LAorICAgIF0K
K30pOworCitmdW5jdGlvbiBzdWl0ZUZyb21OYW1lKG5hbWUpCit7CisgICAgcmV0dXJuIFN1aXRl
cy5maW5kKGZ1bmN0aW9uKHN1aXRlKSB7IHJldHVybiBzdWl0ZS5uYW1lID09IG5hbWU7IH0pOwor
fQorCitmdW5jdGlvbiB0ZXN0RnJvbU5hbWUoc3VpdGUsIG5hbWUpCit7CisgICAgcmV0dXJuIHN1
aXRlLnRlc3RzLmZpbmQoZnVuY3Rpb24odGVzdCkgeyByZXR1cm4gdGVzdC5uYW1lID09IG5hbWU7
IH0pOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2lu
Zy1jYW52YXMtaW1hZ2VzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICBpbWcuaGlkZGVuIHsKKyAgICAgICAg
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsK
KyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBl
PSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAgCisgICAgPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4gIAorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
Ym91bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgICA8aW1nIGNsYXNzPSJoaWRkZW4iIHNyYz0iLi4vcmVzb3VyY2VzL3lp
bi15YW5nLnN2ZyI+CisgICAgPGltZyBjbGFzcz0iaGlkZGVuIiBzcmM9Ii4uL3Jlc291cmNlcy95
aW4teWFuZy5wbmciPgorICAgIDxjYW52YXMgaWQ9InN0YWdlIj48L2NhbnZhcz4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctY2FudmFzLXNoYXBlcy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVz
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3Mi
IGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFn
ZS5qcyI+PC9zY3JpcHQ+ICAKKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBh
cnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2lu
Zy1jYW52YXMtcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CisgICAgPGNhbnZhcyBpZD0ic3RhZ2UiPjwvY2FudmFzPgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9i
b3VuY2luZy1jc3MtaW1hZ2VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0
bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHN0
eWxlPgorICAgICAgICBpbWcgeworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
ICAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRl
eHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKyAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3Vu
Y2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
Ym91bmNpbmctY3NzLWltYWdlcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8
ZGl2IGlkPSJzdGFnZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1z
aGFwZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbAkocmV2aXNpb24g
MCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAg
IC5jaXJjbGUgeworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAg
YmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsKKyAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUw
JSA1MCU7CisgICAgICAgIH0KKyAgICAgICAgLnJlY3QgeworICAgICAgICAgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsKKyAgICAg
ICAgfQorICAgICAgICAuc3RhciB7CisgICAgICAgICAgICAtd2Via2l0LWNsaXAtcGF0aDogcG9s
eWdvbig1MCUgMCUsIDM4JSAzOCUsIDAlIDM4JSwgMzAlIDYwJSwgMTglIDEwMCUsIDUwJSA3NSUs
IDgyJSAxMDAlLCA3MCUgNjAlLCAxMDAlIDM4JSwgNjIlIDM4JSk7CisgICAgICAgICAgICAtbXMt
Y2xpcC1wYXRoOiBwb2x5Z29uKDUwJSAwJSwgMzglIDM4JSwgMCUgMzglLCAzMCUgNjAlLCAxOCUg
MTAwJSwgNTAlIDc1JSwgODIlIDEwMCUsIDcwJSA2MCUsIDEwMCUgMzglLCA2MiUgMzglKTsgIAor
ICAgICAgICAgICAgY2xpcC1wYXRoOiBwb2x5Z29uKDUwJSAwJSwgMzglIDM4JSwgMCUgMzglLCAz
MCUgNjAlLCAxOCUgMTAwJSwgNTAlIDc1JSwgODIlIDEwMCUsIDcwJSA2MCUsIDEwMCUgMzglLCA2
MiUgMzglKTsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0YWdlLmNzcyI+CisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4gICAgCisgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4gIAorICAgIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1zaGFwZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CisgICAgPGRpdiBpZD0ic3RhZ2UiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9i
b3VuY2luZy1zdmctaW1hZ2VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0
bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2VzL3N0
YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0uanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25zLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3Njcmlw
dD4gICAgCisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4gIAorICAg
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1wYXJ0aWNsZXMuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8c3ZnIGlkPSJzdGFnZSI+PC9zdmc+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBl
cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3Nz
IiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL21haW4uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3Rh
Z2UuanMiPjwvc2NyaXB0PiAgCisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1w
YXJ0aWNsZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNp
bmctc3ZnLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNl
cy9ib3VuY2luZy1zdmctc2hhcGVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAg
IDxzdmcgaWQ9InN0YWdlIj48L3N2Zz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLWNhbnZhcy1pbWFnZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2Fu
dmFzLWltYWdlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFn
ZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorZnVuY3Rpb24gQm91bmNpbmdD
YW52YXNJbWFnZShzdGFnZSkKK3sKKyAgICBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLmNhbGwodGhp
cywgc3RhZ2UpOworICAgIHRoaXMuX2ltYWdlRWxlbWVudCA9IHN0YWdlLmltYWdlRWxlbWVudDsK
KyAgICB0aGlzLl9zaGFwZSA9ICJpbWFnZSI7Cit9CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2UucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZSk7
CitCb3VuY2luZ0NhbnZhc0ltYWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2Fu
dmFzSW1hZ2U7CisKK0JvdW5jaW5nQ2FudmFzSW1hZ2UucHJvdG90eXBlLl9kcmF3ID0gZnVuY3Rp
b24oKQoreworICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgpOworICAgICAgICB0aGlzLl9hcHBseVJv
dGF0aW9uKCk7CisgICAgICAgIHRoaXMuX2NvbnRleHQuZHJhd0ltYWdlKHRoaXMuX2ltYWdlRWxl
bWVudCwgMCwgMCwgdGhpcy5fc2l6ZS54LCB0aGlzLl9zaXplLnkpOworICAgIHRoaXMuX2NvbnRl
eHQucmVzdG9yZSgpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlKGVs
ZW1lbnQsIG9wdGlvbnMpCit7CisgICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnZS5jYWxs
KHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworCisgICAgdmFyIGltYWdlU3JjID0gb3B0aW9uc1si
aW1hZ2VTcmMiXSB8fCAicmVzb3VyY2VzL3lpbi15YW5nLnN2ZyI7CisgICAgdGhpcy5pbWFnZUVs
ZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuaGlkZGVuW3NyYz1cIiIgKyBpbWFnZVNy
YyArICJcIl0iKTsKK30KKworQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKEJvdW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0Jv
dW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdD
YW52YXNJbWFnZXNTdGFnZTsKKworQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS5wcm90b3R5cGUu
Y3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nh
bnZhc0ltYWdlKHRoaXMpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNo
bWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQorewor
ICAgIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nQ2Fu
dmFzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdDYW52
YXNQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzSW1hZ2VzQmVu
Y2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2ht
YXJrOworCitCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3Rh
Z2UgPSBmdW5jdGlvbihlbGVtZW50KQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNJ
bWFnZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKword2luZG93LmJlbmNobWFy
a0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFi
bGUsIHByb2dyZXNzQmFyKQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNJbWFnZXNC
ZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7
Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtcGFydGljbGVzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
cmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMuanMJKHJldmlzaW9uIDApCisrKyBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1jYW52YXMtcGFydGljbGVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTA1IEBACitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlKHN0YWdlKQoreworICAg
IEJvdW5jaW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CisgICAgdGhpcy5fY29udGV4dCA9
IHN0YWdlLmNvbnRleHQ7CisgICAgdGhpcy5fc2hhcGUgPSAiIjsKKyAgICB0aGlzLl9jbGlwID0g
c3RhZ2UuY2xpcDsKK30KKworQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5jbGlwcyA9IHsKKyAgICBz
dGFyOiBbCisgICAgICAgIG5ldyBQb2ludCgwLjUwLCAwLjAwKSwKKyAgICAgICAgbmV3IFBvaW50
KDAuMzgsIDAuMzgpLAorICAgICAgICBuZXcgUG9pbnQoMC4wMCwgMC4zOCksCisgICAgICAgIG5l
dyBQb2ludCgwLjMwLCAwLjYwKSwKKyAgICAgICAgbmV3IFBvaW50KDAuMTgsIDEuMDApLAorICAg
ICAgICBuZXcgUG9pbnQoMC41MCwgMC43NSksCisgICAgICAgIG5ldyBQb2ludCgwLjgyLCAxLjAw
KSwKKyAgICAgICAgbmV3IFBvaW50KDAuNzAsIDAuNjApLAorICAgICAgICBuZXcgUG9pbnQoMS4w
MCwgMC4zOCksCisgICAgICAgIG5ldyBQb2ludCgwLjYyLCAwLjM4KQorICAgIF0sCit9OworCitC
b3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQ
YXJ0aWNsZS5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlOworCitCb3VuY2luZ0NhbnZhc1BhcnRp
Y2xlLnByb3RvdHlwZS5fYXBwbHlSb3RhdGlvbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAodGhp
cy5fc2hhcGUgPT0gImNpcmNsZSIpCisgICAgICAgIHJldHVybjsKKworICAgIHRoaXMuX2NvbnRl
eHQudHJhbnNsYXRlKHRoaXMuX3NpemUueCAvIDIsIHRoaXMuX3NpemUueSAvIDIpOworICAgIHRo
aXMuX2NvbnRleHQucm90YXRlKHRoaXMuX3JvdGF0ZXIuZGVncmVlKCkgKiBNYXRoLlBJIC8gMTgw
KTsKKyAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSgtdGhpcy5fc2l6ZS54IC8gMiwgLXRoaXMu
X3NpemUueSAvIDIpOworfQorCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZS5fYXBw
bHlDbGlwcGluZyA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgY2xpcFBvaW50cyA9IEJvdW5jaW5n
Q2FudmFzUGFydGljbGUuY2xpcHNbdGhpcy5fY2xpcF07CisgICAgaWYgKCFjbGlwUG9pbnRzKQor
ICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIHRoaXMuX2NvbnRleHQuYmVnaW5QYXRoKCk7
CisgICAgY2xpcFBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKHBvaW50LCBpbmRleCkgeworICAgICAg
ICB2YXIgcG9pbnQgPSB0aGlzLl9zaXplLm11bHRpcGx5KHBvaW50KTsKKyAgICAgICAgaWYgKCFp
bmRleCkKKyAgICAgICAgICAgIHRoaXMuX2NvbnRleHQubW92ZVRvKHBvaW50LngsIHBvaW50Lnkp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbyhwb2ludC54
LCBwb2ludC55KTsKKyAgICB9LCB0aGlzKTsKKworICAgIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRo
KCk7CisgICAgdGhpcy5fY29udGV4dC5jbGlwKCk7Cit9CisKK0JvdW5jaW5nQ2FudmFzUGFydGlj
bGUucHJvdG90eXBlLl9kcmF3ID0gZnVuY3Rpb24oKQoreworICAgIHRocm93ICJOb3QgaW1wbGVt
ZW50ZWQiOworfQorCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlID0g
ZnVuY3Rpb24odGltZURlbHRhKQoreworICAgIEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlLmFu
aW1hdGUuY2FsbCh0aGlzLCB0aW1lRGVsdGEpOworICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgpOwor
ICAgICAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSh0aGlzLl9wb3NpdGlvbi54LCB0aGlzLl9w
b3NpdGlvbi55KTsKKyAgICAgICAgdGhpcy5fZHJhdygpOworICAgIHRoaXMuX2NvbnRleHQucmVz
dG9yZSgpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdlKGVsZW1l
bnQsIG9wdGlvbnMpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVs
ZW1lbnQsIG9wdGlvbnMpOworICAgIHRoaXMuY29udGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250
ZXh0KCIyZCIpOworfQorCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSA9
IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOworQm91bmNp
bmdDYW52YXNQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0Nh
bnZhc1BhcnRpY2xlc1N0YWdlOworCitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0Fu
aW1hdG9yKGJlbmNobWFyaykKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLmNhbGwo
dGhpcywgYmVuY2htYXJrKTsKKyAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJrLl9zdGFnZS5j
b250ZXh0OworfQorCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZSA9
IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUpOworQm91
bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3Vu
Y2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yOworCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0Fu
aW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX2NvbnRl
eHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS54LCB0aGlzLl9i
ZW5jaG1hcmsuX3N0YWdlLnNpemUueSk7CisgICAgcmV0dXJuIEJvdW5jaW5nUGFydGljbGVzQW5p
bWF0b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKTsKK30KKworZnVuY3Rpb24gQm91bmNp
bmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRh
YmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRl
LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3VuY2lu
Z0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdl
QmVuY2htYXJrLnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyazsK
KworQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1h
dG9yID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNQYXJ0aWNs
ZXNBbmltYXRvcih0aGlzKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5j
aW5nLWNhbnZhcy1zaGFwZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52
YXMtc2hhcGVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTAgQEAKK2Z1bmN0aW9uIEJv
dW5jaW5nQ2FudmFzU2hhcGUoc3RhZ2UpCit7CisgICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5j
YWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9maWxsID0gc3RhZ2UuZmlsbDsKKyAgICB0aGlz
Ll9zaGFwZSA9IHN0YWdlLnNoYXBlOworICAgIHRoaXMuX2NvbG9yMCA9IHN0YWdlLnJhbmRvbUNv
bG9yKCk7CisgICAgdGhpcy5fY29sb3IxID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsgICAgCit9CisK
K0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ0Nh
bnZhc1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzU2hhcGU7CisKK0JvdW5jaW5nQ2FudmFzU2hhcGUu
cHJvdG90eXBlLl9hcHBseUZpbGwgPSBmdW5jdGlvbigpCit7CisgICAgc3dpdGNoICh0aGlzLl9m
aWxsKSB7CisgICAgY2FzZSAiZ3JhZGllbnQiOgorICAgICAgICB2YXIgZ3JhZGllbnQgPSB0aGlz
Ll9jb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIDAsIHRoaXMuX3NpemUud2lkdGgsIDAp
OworICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMCwgdGhpcy5fY29sb3IwKTsKKyAgICAg
ICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDEsIHRoaXMuX2NvbG9yMSk7IAorICAgICAgICB0aGlz
Ll9jb250ZXh0LmZpbGxTdHlsZSA9IGdyYWRpZW50OworICAgICAgICBicmVhazsKKyAgICAKKyAg
ICBjYXNlICJzb2xpZCI6CisgICAgZGVmYXVsdDoKKyAgICAgICAgdGhpcy5fY29udGV4dC5maWxs
U3R5bGUgPSB0aGlzLl9jb2xvcjA7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworQm91bmNp
bmdDYW52YXNTaGFwZS5wcm90b3R5cGUuX2RyYXdTaGFwZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0
aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgpOworCisgICAgc3dpdGNoICh0aGlzLl9zaGFwZSkgewor
ICAgIGNhc2UgInJlY3QiOgorICAgICAgICB0aGlzLl9jb250ZXh0LnJlY3QoMCwgMCwgdGhpcy5f
c2l6ZS53aWR0aCwgdGhpcy5fc2l6ZS5oZWlnaHQpOworICAgICAgICBicmVhazsKKyAgICAKKyAg
ICBjYXNlICJjaXJjbGUiOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHZhciBjZW50ZXIgPSB0aGlz
Ll9zaXplLmNlbnRlcjsKKyAgICAgICAgdmFyIHJhZGl1cyA9IE1hdGgubWluKHRoaXMuX3NpemUu
eCwgdGhpcy5fc2l6ZS55KSAvIDI7CisgICAgICAgIHRoaXMuX2NvbnRleHQuYXJjKGNlbnRlci54
LCBjZW50ZXIueSwgcmFkaXVzLCAwLCBNYXRoLlBJICogMiwgdHJ1ZSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIHRoaXMuX2NvbnRleHQuZmlsbCgpOworfQorCitCb3VuY2luZ0NhbnZh
c1NoYXBlLnByb3RvdHlwZS5fZHJhdyA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9jb250ZXh0
LnNhdmUoKTsKKyAgICAgICAgdGhpcy5fYXBwbHlGaWxsKCk7CisgICAgICAgIHRoaXMuX2FwcGx5
Um90YXRpb24oKTsKKyAgICAgICAgdGhpcy5fYXBwbHlDbGlwcGluZygpOworICAgICAgICB0aGlz
Ll9kcmF3U2hhcGUoKTsKKyAgICB0aGlzLl9jb250ZXh0LnJlc3RvcmUoKTsKK30KKworZnVuY3Rp
b24gQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZShlbGVtZW50LCBvcHRpb25zKQoreworICAgIEJv
dW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsK
KyAgICB0aGlzLnBhcnNlU2hhcGVQYXJhbXRlcnMob3B0aW9ucyk7Cit9CisKK0JvdW5jaW5nQ2Fu
dmFzU2hhcGVzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2U7CisKK0JvdW5jaW5n
Q2FudmFzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlID0gZnVuY3Rpb24oKQor
eworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNTaGFwZSh0aGlzKTsKK30KKworZnVuY3Rp
b24gQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJl
Y29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0Jl
bmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpOworfQorCitCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlw
ZSk7CitCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBCb3VuY2luZ0NhbnZhc1NoYXBlc0JlbmNobWFyazsKKworQm91bmNpbmdDYW52YXNTaGFwZXNC
ZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKK3sKKyAg
ICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0
aW9ucyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3Vp
dGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICByZXR1
cm4gbmV3IEJvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3Nz
LWltYWdlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmpzCShy
ZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdlcy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDYzIEBACitmdW5jdGlvbiBCb3VuY2luZ0Nzc0ltYWdlKHN0YWdlKQorewor
ICAgIEJvdW5jaW5nUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CisKKyAgICB0aGlzLmVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICB0aGlzLmVsZW1lbnQuc3R5
bGUud2lkdGggPSB0aGlzLl9zaXplLnggKyAicHgiOworICAgIHRoaXMuZWxlbWVudC5zdHlsZS5o
ZWlnaHQgPSB0aGlzLl9zaXplLnkgKyAicHgiOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1
dGUoInNyYyIsIHN0YWdlLmltYWdlU3JjKTsKKyAgICAKKyAgICBzdGFnZS5lbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuZWxlbWVudCk7CisgICAgdGhpcy5fbW92ZSgpOworfQorCitCb3VuY2luZ0Nz
c0ltYWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5
cGUpOworQm91bmNpbmdDc3NJbWFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0Nz
c0ltYWdlOworCitCb3VuY2luZ0Nzc0ltYWdlLnByb3RvdHlwZS5fbW92ZSA9IGZ1bmN0aW9uKCkK
K3sKKyAgICB0aGlzLmVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZSgiICsgdGhp
cy5fcG9zaXRpb24ueCArICJweCwiICsgdGhpcy5fcG9zaXRpb24ueSArICJweCkgIiArIHRoaXMu
X3JvdGF0ZXIucm90YXRlWigpOworfQorICAgIAorQm91bmNpbmdDc3NJbWFnZS5wcm90b3R5cGUu
YW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlLnBy
b3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlzLl9tb3ZlKCk7
Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykK
K3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9u
cyk7CisgICAgdGhpcy5pbWFnZVNyYyA9IG9wdGlvbnNbImltYWdlU3JjIl0gfHwgIi4uL3Jlc291
cmNlcy95aW4teWFuZy5zdmciOworfQorCitCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlLnByb3RvdHlw
ZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOworQm91
bmNpbmdDc3NJbWFnZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0Nzc0lt
YWdlc1N0YWdlOworCitCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVhdGVQYXJ0
aWNsZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ3NzSW1hZ2UodGhp
cyk7Cit9CisKK0JvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJl
UmVtb3ZlZCA9IGZ1bmN0aW9uKHBhcnRpY2xlKQoreworICAgIHBhcnRpY2xlLmVsZW1lbnQucmVt
b3ZlKCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgQm91bmNpbmdQ
YXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3Jk
VGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5
cGUpOworQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0g
Qm91bmNpbmdDc3NJbWFnZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJr
LnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgcmV0dXJu
IG5ldyBCb3VuY2luZ0Nzc0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQor
Cit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBv
cHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgcmV0dXJuIG5ldyBCb3Vu
Y2luZ0Nzc0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUs
IHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1zaGFwZXMuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBh
cnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLXNoYXBlcy5qcwkocmV2aXNpb24gMCkKKysr
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVz
b3VyY2VzL2JvdW5jaW5nLWNzcy1zaGFwZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4
MSBAQAorZnVuY3Rpb24gQm91bmNpbmdDc3NTaGFwZShzdGFnZSkKK3sKKyAgICBCb3VuY2luZ1Bh
cnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOworCisgICAgdGhpcy5lbGVtZW50ID0gdGhpcy5fY3Jl
YXRlU3BhbihzdGFnZSk7CisgICAgICAgIAorICAgIHN3aXRjaCAoc3RhZ2UuZmlsbCkgeworICAg
IGNhc2UgInNvbGlkIjoKKyAgICBkZWZhdWx0OgorICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUu
YmFja2dyb3VuZENvbG9yID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgIAorICAgIGNhc2UgImdyYWRpZW50IjoKKyAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxl
LmJhY2tncm91bmQgPSAibGluZWFyLWdyYWRpZW50KCIgKyBzdGFnZS5yYW5kb21Db2xvcigpICsg
IiwgIiArIHN0YWdlLnJhbmRvbUNvbG9yKCkgKyAiKSI7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIHRoaXMuX21vdmUoKTsKK30KKworQm91bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlKTsKK0JvdW5jaW5nQ3NzU2hh
cGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDc3NTaGFwZTsKKworQm91bmNpbmdD
c3NTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVNwYW4gPSBmdW5jdGlvbihzdGFnZSkKK3sKKyAgICB2
YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBzcGFuLmNsYXNz
TmFtZSA9IHN0YWdlLnNoYXBlICsgIiAiICsgc3RhZ2UuY2xpcDsKKyAgICBzcGFuLnN0eWxlLndp
ZHRoID0gdGhpcy5fc2l6ZS54ICsgInB4IjsKKyAgICBzcGFuLnN0eWxlLmhlaWdodCA9IHRoaXMu
X3NpemUueSArICJweCI7CisgICAgc3RhZ2UuZWxlbWVudC5hcHBlbmRDaGlsZChzcGFuKTsKKyAg
ICByZXR1cm4gc3BhbjsKK30KKworQm91bmNpbmdDc3NTaGFwZS5wcm90b3R5cGUuX21vdmUgPSBm
dW5jdGlvbigpCit7CisgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9ICJ0cmFuc2xh
dGUoIiArIHRoaXMuX3Bvc2l0aW9uLnggKyAicHgsIiArIHRoaXMuX3Bvc2l0aW9uLnkgKyAicHgp
IiArIHRoaXMuX3JvdGF0ZXIucm90YXRlWigpOworfQorICAgIAorQm91bmNpbmdDc3NTaGFwZS5w
cm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAgICBCb3VuY2luZ1Bh
cnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRhKTsKKyAgICB0aGlz
Ll9yb3RhdGVyLm5leHQodGltZURlbHRhKTsgICAgCisgICAgdGhpcy5fbW92ZSgpOworfQorCitm
dW5jdGlvbiBCb3VuY2luZ0Nzc1NoYXBlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7CisgICAg
Qm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAg
IHRoaXMucGFyc2VTaGFwZVBhcmFtdGVycyhvcHRpb25zKTsKK30KKworQm91bmNpbmdDc3NTaGFw
ZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzU3RhZ2Uu
cHJvdG90eXBlKTsKK0JvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gQm91bmNpbmdDc3NTaGFwZXNTdGFnZTsKKworQm91bmNpbmdDc3NTaGFwZXNTdGFnZS5wcm90
b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIG5ldyBCb3Vu
Y2luZ0Nzc1NoYXBlKHRoaXMpOworfQorCitCb3VuY2luZ0Nzc1NoYXBlc1N0YWdlLnByb3RvdHlw
ZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQgPSBmdW5jdGlvbihwYXJ0aWNsZSkKK3sKKyAgICBwYXJ0
aWNsZS5lbGVtZW50LnJlbW92ZSgpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ0Nzc1NoYXBlc0Jl
bmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQor
eworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nQ3NzU2hh
cGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNC
ZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ3NzU2hhcGVzQmVuY2htYXJrOworCitCb3VuY2luZ0Nz
c1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50
KQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdDc3NTaGFwZXNTdGFnZShlbGVtZW50LCB0aGlz
Ll9vcHRpb25zKTsKK30KKword2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlv
bihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAg
IHJldHVybiBuZXcgQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1w
YXJ0aWNsZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzCShy
ZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTMyIEBACitmdW5jdGlvbiBCb3VuY2luZ1BhcnRpY2xlKHN0YWdlKQorewor
ICAgIHRoaXMuX3N0YWdlU2l6ZSA9IHN0YWdlLnNpemU7CisgICAgdGhpcy5fc2l6ZSA9IHN0YWdl
LnBhcnRpY2xlU2l6ZTsKKyAgICAKKyAgICB0aGlzLl9wb3NpdGlvbiA9IHN0YWdlLnJhbmRvbVBv
c2l0aW9uKHN0YWdlLnNpemUuc3VidHJhY3Qoc3RhZ2UucGFydGljbGVTaXplKSk7CisgICAgdGhp
cy5fYW5nbGUgPSBzdGFnZS5yYW5kb21BbmdsZSgpOworICAgIHRoaXMuX3ZlbG9jaXR5ID0gc3Rh
Z2UucmFuZG9tVmVsb2NpdHkoc3RhZ2UubWF4VmVsb2NpdHkpOworICAgIHRoaXMuX3JvdGF0ZXIg
PSBzdGFnZS5yYW5kb21Sb3RhdGVyKCk7Cit9CisKK0JvdW5jaW5nUGFydGljbGUucHJvdG90eXBl
ID0KK3sKKyAgICBnZXQgY2VudGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wb3Np
dGlvbi5hZGQodGhpcy5fc2l6ZS5jZW50ZXIpOworICAgIH0sCisgICAgCisgICAgYW5pbWF0ZTog
ZnVuY3Rpb24odGltZURlbHRhKQorICAgIHsKKyAgICAgICAgdGhpcy5fcG9zaXRpb24gPSB0aGlz
Ll9wb3NpdGlvbi5tb3ZlKHRoaXMuX2FuZ2xlLCB0aGlzLl92ZWxvY2l0eSwgdGltZURlbHRhKTsK
KyAgICAgICAgdGhpcy5fcm90YXRlci5uZXh0KHRpbWVEZWx0YSk7CisKKyAgICAgICAgLy8gSWYg
cGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgcmlnaHQgc2lkZQorICAgICAgICBpZiAodGhp
cy5fcG9zaXRpb24ueCArIHRoaXMuX3NpemUueCA+IHRoaXMuX3N0YWdlU2l6ZS54KSB7CisgICAg
ICAgICAgICAvLyBJZiBkaXJlY3Rpb24gaXMgRWFzdC1Tb3V0aAorICAgICAgICAgICAgaWYgKHRo
aXMuX2FuZ2xlID49IDAgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJIC8gMikKKyAgICAgICAgICAg
ICAgICB0aGlzLl9hbmdsZSA9IE1hdGguUEkgLSB0aGlzLl9hbmdsZTsKKyAgICAgICAgICAgIC8v
IElmIGFuZ2xlIGlzIEVhc3QtTm9ydGgKKyAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX2FuZ2xl
ID4gTWF0aC5QSSAvIDIgKiAzKQorICAgICAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0gdGhpcy5f
YW5nbGUgLSAodGhpcy5fYW5nbGUgLSBNYXRoLlBJIC8gMiAqIDMpICogMjsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgbGVm
dCBzaWRlCisgICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbi54IDwgMCkgeworICAgICAgICAgICAg
Ly8gSWYgYW5nbGUgaXMgV2VzdC1Tb3V0aAorICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID4g
TWF0aC5QSSAvIDIgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJKQorICAgICAgICAgICAgICAgIHRo
aXMuX2FuZ2xlID0gTWF0aC5QSSAtIHRoaXMuX2FuZ2xlOworICAgICAgICAgICAgLy8gSWYgYW5n
bGUgaXMgV2VzdC1Ob3J0aAorICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5fYW5nbGUgPiBNYXRo
LlBJICYmIHRoaXMuX2FuZ2xlIDwgTWF0aC5QSSAvIDIgKiAzKQorICAgICAgICAgICAgICAgIHRo
aXMuX2FuZ2xlID0gdGhpcy5fYW5nbGUgKyAoTWF0aC5QSSAvIDIgKiAzIC0gdGhpcy5fYW5nbGUp
ICogMjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHBhcnRpY2xlIGlzIGdvaW5nIHRvIG1v
dmUgb2ZmIGJvdHRvbSBzaWRlCisgICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbi55ICsgdGhpcy5f
c2l6ZS55ID4gdGhpcy5fc3RhZ2VTaXplLnkpIHsKKyAgICAgICAgICAgIC8vIElmIGRpcmVjdGlv
biBpcyBTb3V0aAorICAgICAgICAgICAgaWYgKHRoaXMuX2FuZ2xlID4gMCAmJiB0aGlzLl9hbmds
ZSA8IE1hdGguUEkpCisgICAgICAgICAgICAgICAgdGhpcy5fYW5nbGUgPSBNYXRoLlBJICogMiAt
IHRoaXMuX2FuZ2xlOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29p
bmcgdG8gbW92ZSBvZmYgdG9wIHNpZGUKKyAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uLnkgPCAw
KSB7CisgICAgICAgICAgICAvLyBJZiBkaXJlY3Rpb24gaXMgTm9ydGgKKyAgICAgICAgICAgIGlm
ICh0aGlzLl9hbmdsZSA+IE1hdGguUEkgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJICogMikKKyAg
ICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IHRoaXMuX2FuZ2xlIC0gKHRoaXMuX2FuZ2xlIC0g
TWF0aC5QSSkgKiAyOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBCb3VuY2luZ1Bh
cnRpY2xlc0FuaW1hdG9yKGJlbmNobWFyaykKK3sKKyAgICBTdGFnZUFuaW1hdG9yLmNhbGwodGhp
cywgYmVuY2htYXJrKTsKK307CisKK0JvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBl
ID0gT2JqZWN0LmNyZWF0ZShTdGFnZUFuaW1hdG9yLnByb3RvdHlwZSk7CitCb3VuY2luZ1BhcnRp
Y2xlc0FuaW1hdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nUGFydGljbGVzQW5p
bWF0b3I7CisKK2Z1bmN0aW9uIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9u
cykKK3sKKyAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQpOworICAgIAorICAgIHRoaXMucGFy
dGljbGVTaXplID0gbmV3IFBvaW50KHBhcnNlSW50KG9wdGlvbnNbInBhcnRpY2xlV2lkdGgiXSkg
fHwgMTAsIHBhcnNlSW50KG9wdGlvbnNbInBhcnRpY2xlSGVpZ2h0Il0pIHx8IDEwKTsKKyAgICB0
aGlzLl9wYXJ0aWNsZXMgPSBbXTsKKworICAgIHRoaXMubWF4VmVsb2NpdHkgPSBwYXJzZUludChv
cHRpb25zWyJtYXhWZWxvY2l0eSJdKSB8fCA1MDA7CisgICAgdGhpcy5tYXhWZWxvY2l0eSA9IE1h
dGgubWF4KHRoaXMubWF4VmVsb2NpdHksIDEwMCk7Cit9CisKK0JvdW5jaW5nUGFydGljbGVzU3Rh
Z2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdQ
YXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc1N0
YWdlOworCitCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5wYXJzZVNoYXBlUGFyYW10
ZXJzID0gZnVuY3Rpb24ob3B0aW9ucykKK3sKKyAgICB0aGlzLnNoYXBlID0gb3B0aW9uc1sic2hh
cGUiXSB8fCAiY2lyY2xlIjsKKyAgICB0aGlzLmZpbGwgPSBvcHRpb25zWyJmaWxsIl0gfHwgInNv
bGlkIjsKKyAgICB0aGlzLmNsaXAgPSBvcHRpb25zWyJjbGlwIl0gfHwgIiI7Cit9CisKK0JvdW5j
aW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEp
Cit7CisgICAgdGhpcy5fcGFydGljbGVzLmZvckVhY2goZnVuY3Rpb24ocGFydGljbGUpIHsKKyAg
ICAgICAgcGFydGljbGUuYW5pbWF0ZSh0aW1lRGVsdGEpOworICAgIH0pOworfQorICAgIAorQm91
bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KQorewor
ICAgIGNvdW50ID0gY291bnQgPiAwID8gTWF0aC5mbG9vcihjb3VudCkgOiBNYXRoLmNlaWwoY291
bnQpOworCisgICAgaWYgKGNvdW50ID09IDApCisgICAgICAgIHJldHVybiB0aGlzLl9wYXJ0aWNs
ZXMubGVuZ3RoOworCisgICAgaWYgKGNvdW50ID4gMCkgeworICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0eXBlb2YodGhpcy5jcmVhdGVQYXJ0aWNsZSkgPT0gImZ1bmN0aW9uIik7CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX3BhcnRpY2xl
cy5wdXNoKHRoaXMuY3JlYXRlUGFydGljbGUoKSk7CisgICAgICAgIHJldHVybiB0aGlzLl9wYXJ0
aWNsZXMubGVuZ3RoOworICAgIH0KKworICAgIGNvdW50ID0gTWF0aC5taW4oLWNvdW50LCB0aGlz
Ll9wYXJ0aWNsZXMubGVuZ3RoKTsKKyAgICAgICAgCisgICAgaWYgKHR5cGVvZih0aGlzLnBhcnRp
Y2xlV2lsbEJlUmVtb3ZlZCkgPT0gImZ1bmN0aW9uIikgeworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICB0aGlzLnBhcnRpY2xlV2lsbEJlUmVtb3Zl
ZCh0aGlzLl9wYXJ0aWNsZXNbdGhpcy5fcGFydGljbGVzLmxlbmd0aCAtIDEgLSBpXSk7CisgICAg
fQorCisgICAgdGhpcy5fcGFydGljbGVzLnNwbGljZSgtY291bnQsIGNvdW50KTsKKyAgICByZXR1
cm4gdGhpcy5fcGFydGljbGVzLmxlbmd0aDsKK30KKworZnVuY3Rpb24gQm91bmNpbmdQYXJ0aWNs
ZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jh
cikKK3sKKyAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3VuY2luZ1BhcnRpY2xlc0JlbmNo
bWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7
CitCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3Vu
Y2luZ1BhcnRpY2xlc0JlbmNobWFyazsKKworQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJv
dG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiBuZXcgQm91
bmNpbmdQYXJ0aWNsZXNBbmltYXRvcih0aGlzKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3Vy
Y2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2lu
Zy1zdmctaW1hZ2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKK2Z1bmN0aW9u
IEJvdW5jaW5nU3ZnSW1hZ2Uoc3RhZ2UpCit7CisgICAgQm91bmNpbmdTdmdQYXJ0aWNsZS5jYWxs
KHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9zaGFwZSA9ICJpbWFnZSI7CisgICAgCisgICAgdmFy
IGF0dHJzID0geyB4OiAwLCB5OiAwLCB3aWR0aDogdGhpcy5fc2l6ZS54LCBoZWlnaHQ6IHRoaXMu
X3NpemUueSB9OworICAgIHZhciB4bGlua0F0dHJzID0geyBocmVmOiBzdGFnZS5pbWFnZVNyYyB9
OworICAgIHRoaXMuZWxlbWVudCA9IFV0aWxpdGllcy5jcmVhdGVTdmdFbGVtZW50KCJpbWFnZSIs
IGF0dHJzLCB4bGlua0F0dHJzLCBzdGFnZS5lbGVtZW50KTsKKyAgICB0aGlzLl9tb3ZlKCk7Cit9
CisKK0JvdW5jaW5nU3ZnSW1hZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1N2
Z1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ1N2Z0ltYWdlLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IEJvdW5jaW5nU3ZnSW1hZ2U7CisKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnSW1hZ2VzU3Rh
Z2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNhbGwo
dGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5pbWFnZVNyYyA9IG9wdGlvbnNbImlt
YWdlU3JjIl0gfHwgInJlc291cmNlcy95aW4teWFuZy5zdmciOworfQorCitCb3VuY2luZ1N2Z0lt
YWdlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdTdmdQYXJ0aWNsZXNT
dGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlOworCitCb3VuY2luZ1N2Z0ltYWdlc1N0YWdl
LnByb3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gbmV3
IEJvdW5jaW5nU3ZnSW1hZ2UodGhpcyk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnSW1hZ2Vz
QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
Cit7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdTdmdJ
bWFnZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xl
c0JlbmNobWFyay5wcm90b3R5cGUpOworQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcms7CisKK0JvdW5jaW5n
U3ZnSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1l
bnQpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlKGVsZW1lbnQsIHRo
aXMuX29wdGlvbnMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0
aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7Cisg
ICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5n
LXN2Zy1wYXJ0aWNsZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLXBhcnRp
Y2xlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1wYXJ0aWNsZXMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OCBAQAorZnVuY3Rpb24gQm91bmNpbmdTdmdQYXJ0
aWNsZShzdGFnZSkKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlLmNhbGwodGhpcywgc3RhZ2UpOwor
fQorCitCb3VuY2luZ1N2Z1BhcnRpY2xlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNp
bmdQYXJ0aWNsZS5wcm90b3R5cGUpOworQm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlOworCitCb3VuY2luZ1N2Z1BhcnRpY2xlLnByb3Rv
dHlwZS5fYXBwbHlDbGlwcGluZyA9IGZ1bmN0aW9uKHN0YWdlKQoreworICAgIGlmIChzdGFnZS5j
bGlwICE9ICJzdGFyIikKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBzdGFnZS5lbnN1
cmVDbGlwU3RhcklzQ3JlYXRlZCgpOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImNs
aXAtcGF0aCIsICJ1cmwoI3N0YXItY2xpcCkiKTsKK30KKworQm91bmNpbmdTdmdQYXJ0aWNsZS5w
cm90b3R5cGUuX21vdmUgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIHRyYW5zZm9ybSA9ICJ0cmFu
c2xhdGUoIiArIHRoaXMuX3Bvc2l0aW9uLnggKyAiLCAiICsgdGhpcy5fcG9zaXRpb24ueSArICIp
IjsKKyAgICBpZiAodGhpcy5fc2hhcGUgIT0gImNpcmNsZSIpCisgICAgICAgIHRyYW5zZm9ybSAr
PSB0aGlzLl9yb3RhdGVyLnJvdGF0ZSh0aGlzLl9zaXplLmNlbnRlcik7CisgICAgdGhpcy5lbGVt
ZW50LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwgdHJhbnNmb3JtKTsKK30KKworQm91bmNpbmdT
dmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAg
ICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGltZURlbHRh
KTsKKyAgICB0aGlzLl9tb3ZlKCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnUGFydGljbGVz
U3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLmNh
bGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Cit9CisKK0JvdW5jaW5nU3ZnUGFydGljbGVzU3Rh
Z2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3Rv
dHlwZSk7CitCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2U7CisKK0JvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2Uu
cHJvdG90eXBlLl9jcmVhdGVEZWZzID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiBVdGlsaXRp
ZXMuY3JlYXRlU3ZnRWxlbWVudCgiZGVmcyIsIHt9LCB7fSwgdGhpcy5lbGVtZW50KTsKK30KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAorQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuX2Vuc3VyZURlZnNJc0Ny
ZWF0ZWQgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5xdWVyeVNlbGVj
dG9yKCJkZWZzIikgfHwgdGhpcy5fY3JlYXRlRGVmcygpOworfQorCitCb3VuY2luZ1N2Z1BhcnRp
Y2xlc1N0YWdlLnByb3RvdHlwZS5fY3JlYXRlQ2xpcFN0YXIgPSBmdW5jdGlvbigpCit7CisgICAg
dmFyIGF0dHJzID0geyBpZDogInN0YXItY2xpcCIsIGNsaXBQYXRoVW5pdHM6ICJvYmplY3RCb3Vu
ZGluZ0JveCIgfTsKKyAgICB2YXIgY2xpcFBhdGggID0gVXRpbGl0aWVzLmNyZWF0ZVN2Z0VsZW1l
bnQoImNsaXBQYXRoIiwgYXR0cnMsIHt9LCB0aGlzLl9lbnN1cmVEZWZzSXNDcmVhdGVkKCkpOwor
CisgICAgYXR0cnMgPSB7IGQ6ICJNLjUwLDBMLjM4LC4zOEwwLC4zOEwuMzAsLjYwTC4xOCwxTC41
MCwuNzVMLjgyLDFMLjcwLC42MEwxLC4zOEwuNjIsLjM4eiIgfTsKKyAgICBVdGlsaXRpZXMuY3Jl
YXRlU3ZnRWxlbWVudCgicGF0aCIsIGF0dHJzLCB7fSwgY2xpcFBhdGgpOworICAgIHJldHVybiBj
bGlwUGF0aDsKK30KKworQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuZW5zdXJl
Q2xpcFN0YXJJc0NyZWF0ZWQgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIHRoaXMuZWxlbWVu
dC5xdWVyeVNlbGVjdG9yKCIjc3Rhci1jbGlwIikgfHwgdGhpcy5fY3JlYXRlQ2xpcFN0YXIoKTsK
K30KKworQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVS
ZW1vdmVkID0gZnVuY3Rpb24ocGFydGljbGUpCit7CisgICAgcGFydGljbGUuZWxlbWVudC5yZW1v
dmUoKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9y
ZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLXN2Zy1zaGFwZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQgQEAKK2Z1
bmN0aW9uIEJvdW5jaW5nU3ZnU2hhcGUoc3RhZ2UpCit7CisgICAgQm91bmNpbmdTdmdQYXJ0aWNs
ZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlzLl9zaGFwZSA9IHN0YWdlLnNoYXBlOworICAg
IHRoaXMuX2ZpbGwgPSBzdGFnZS5maWxsOworICAgIAorICAgIHRoaXMuX2NyZWF0ZVNoYXBlKHN0
YWdlKTsKKyAgICB0aGlzLl9hcHBseUNsaXBwaW5nKHN0YWdlKTsKKyAgICB0aGlzLl9hcHBseUZp
bGwoc3RhZ2UpOworCisgICAgdGhpcy5fbW92ZSgpOyAgICAKK30KKworQm91bmNpbmdTdmdTaGFw
ZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBl
KTsKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdT
aGFwZTsKKworQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUuX2NyZWF0ZVNoYXBlID0gZnVuY3Rp
b24oc3RhZ2UpCit7CisgICAgc3dpdGNoICh0aGlzLl9zaGFwZSkgeworICAgIGNhc2UgInJlY3Qi
OgorICAgICAgICB2YXIgYXR0cnMgPSB7IHg6IDAsIHk6IDAsIHdpZHRoOiB0aGlzLl9zaXplLngs
IGhlaWdodDogdGhpcy5fc2l6ZS55IH07CisgICAgICAgIHRoaXMuZWxlbWVudCA9IFV0aWxpdGll
cy5jcmVhdGVTdmdFbGVtZW50KCJyZWN0IiwgYXR0cnMsIHt9LCBzdGFnZS5lbGVtZW50KTsKKyAg
ICAgICAgYnJlYWs7CisgICAgCisgICAgY2FzZSAiY2lyY2xlIjoKKyAgICBkZWZhdWx0OgorICAg
ICAgICB2YXIgYXR0cnMgPSB7IGN4OiB0aGlzLl9zaXplLnggLyAyLCBjeTogdGhpcy5fc2l6ZS55
IC8gMiwgcjogTWF0aC5taW4odGhpcy5fc2l6ZS54LCB0aGlzLl9zaXplLnkpIC8gMiB9OworICAg
ICAgICB0aGlzLmVsZW1lbnQgPSBVdGlsaXRpZXMuY3JlYXRlU3ZnRWxlbWVudCgiY2lyY2xlIiwg
YXR0cnMsIHt9LCBzdGFnZS5lbGVtZW50KTsKKyAgICAgICAgYnJlYWs7ICAgICAgICAKKyAgICB9
Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlLl9hcHBseUZpbGwgPSBmdW5jdGlvbihz
dGFnZSkKK3sKKyAgICBzd2l0Y2ggKHRoaXMuX2ZpbGwpIHsKKyAgICBjYXNlICJncmFkaWVudCI6
CisgICAgICAgIHZhciBncmFkaWVudCA9IHN0YWdlLmNyZWF0ZUdyYWRpZW50KDIpOworICAgICAg
ICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJmaWxsIiwgInVybCgjIiArIGdyYWRpZW50Lmdl
dEF0dHJpYnV0ZSgiaWQiKSArICIpIik7CisgICAgICAgIGJyZWFrOworICAgIAorICAgIGNhc2Ug
InNvbGlkIjoKKyAgICBkZWZhdWx0OgorICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRl
KCJmaWxsIiwgc3RhZ2UucmFuZG9tQ29sb3IoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30K
KworZnVuY3Rpb24gQm91bmNpbmdTdmdTaGFwZXNTdGFnZShlbGVtZW50LCBvcHRpb25zKQorewor
ICAgIEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25z
KTsKKyAgICB0aGlzLnBhcnNlU2hhcGVQYXJhbXRlcnMob3B0aW9ucyk7CisgICAgdGhpcy5fZ3Jh
ZGllbnRzQ291bnQgPSAwOworfQorCitCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZSA9
IE9iamVjdC5jcmVhdGUoQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOworQm91
bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1N2Z1No
YXBlc1N0YWdlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCitCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jcmVh
dGVHcmFkaWVudCA9IGZ1bmN0aW9uKHN0b3BzKQoreworICAgIHZhciBhdHRycyA9IHsgaWQ6ICJn
YWRpZW50LSIgKyArK3RoaXMuX2dyYWRpZW50c0NvdW50IH07CisgICAgdmFyIGdyYWRpZW50ID0g
VXRpbGl0aWVzLmNyZWF0ZVN2Z0VsZW1lbnQoImxpbmVhckdyYWRpZW50IiwgYXR0cnMsIHt9LCB0
aGlzLl9lbnN1cmVEZWZzSXNDcmVhdGVkKCkpOyAgICAKKyAgICAKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHN0b3BzOyArK2kpIHsKKyAgICAgICAgYXR0cnMgPSB7IG9mZnNldDogaSAqIDEwMCAv
IHN0b3BzICsgIiUiLCAnc3RvcC1jb2xvcic6IHRoaXMucmFuZG9tQ29sb3IoKSB9OworICAgICAg
ICBVdGlsaXRpZXMuY3JlYXRlU3ZnRWxlbWVudCgic3RvcCIsIGF0dHJzLCB7fSwgZ3JhZGllbnQp
OworICAgIH0KKworICAgIHJldHVybiBncmFkaWVudDsKK30KKworQm91bmNpbmdTdmdTaGFwZXNT
dGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJu
IG5ldyBCb3VuY2luZ1N2Z1NoYXBlKHRoaXMpOworfQorCitCb3VuY2luZ1N2Z1NoYXBlc1N0YWdl
LnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQgPSBmdW5jdGlvbihwYXJ0aWNsZSkKK3sK
KyAgICBCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJl
bW92ZWQuY2FsbCh0aGlzLCBwYXJ0aWNsZSk7CisKKyAgICB2YXIgZmlsbCA9IHBhcnRpY2xlLmVs
ZW1lbnQuZ2V0QXR0cmlidXRlKCJmaWxsIik7CisgICAgaWYgKGZpbGwuaW5kZXhPZigidXJsKCMi
KSAhPSAwKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIHZhciBncmFkaWVudCA9IHRo
aXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKGZpbGwuc3Vic3RyaW5nKDQsIGZpbGwubGVuZ3RoIC0g
MSkpOworICAgIHRoaXMuX2Vuc3VyZURlZnNJc0NyZWF0ZWQoKS5yZW1vdmVDaGlsZChncmFkaWVu
dCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgQm91bmNpbmdQYXJ0
aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFi
bGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUp
OworQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91
bmNpbmdTdmdTaGFwZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrLnBy
b3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgcmV0dXJuIG5l
dyBCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCit3
aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRp
b25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2lu
Z1N2Z1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHBy
b2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9l
eGFtcGxlcy9jYW52YXMtZWxlY3Ryb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1lbGVjdHJvbnMuaHRtbAkocmV2
aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9j
YW52YXMtZWxlY3Ryb25zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
dHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgorICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAorICAgIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNl
cy9jYW52YXMtZWxlY3Ryb25zLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxj
YW52YXMgaWQ9InN0YWdlIj48L2NhbnZhcz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtc3RhcnMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMv
Y2FudmFzLXN0YXJzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFzLXN0YXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFn
ZS5jc3MiPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+
ICAgIAorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9InJlc291cmNlcy9jYW52YXMtc3RhcnMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CisgICAgPGNhbnZhcyBpZD0ic3RhZ2UiPjwvY2FudmFzPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291
cmNlcy9jYW52YXMtZWxlY3Ryb25zLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qcwko
cmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxl
cy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEzNCBAQAorZnVuY3Rpb24gQ2FudmFzRWxlY3Ryb24oc3RhZ2UpCit7CisgICAgdGhpcy5fY29u
dGV4dCA9IHN0YWdlLmNvbnRleHQ7CisgICAgdGhpcy5fc3RhZ2VTaXplID0gc3RhZ2Uuc2l6ZTsK
KworICAgIHZhciBtaW5TaWRlID0gTWF0aC5taW4odGhpcy5fc3RhZ2VTaXplLndpZHRoLCB0aGlz
Ll9zdGFnZVNpemUuaGVpZ2h0KTsKKyAgICB2YXIgcmFkaXVzWCA9IHN0YWdlLnJhbmRvbShtaW5T
aWRlIC8gOCwgNyAqIG1pblNpZGUgLyAxNik7CisgICAgdmFyIHJhZGl1c1kgPSBzdGFnZS5yYW5k
b20obWluU2lkZSAvIDgsIDMgKiByYWRpdXNYIC8gNCk7CisgICAgdGhpcy5fb3JiaXRSYWRpdXNl
cyA9IG5ldyBQb2ludChyYWRpdXNYLCByYWRpdXNZKTsKKyAgICB0aGlzLl9yYWRpdXMgPSBzdGFn
ZS5yYW5kb20oNSwgMTUpOworICAgIHRoaXMuX2RpcmVjdGlvbiA9IHN0YWdlLnJhbmRvbUludCgw
LCAyKTsKKyAgICB0aGlzLl9hbmdsZSA9IHN0YWdlLnJhbmRvbUludCgwLCAzNjApOworICAgIHRo
aXMuX2NvbG9yID0gc3RhZ2UucmFuZG9tQ29sb3IoKTsKKyAgICB0aGlzLl9yb3RhdGVyID0gc3Rh
Z2UucmFuZG9tUm90YXRlcigpOworICAgIHRoaXMuX3JvdGF0ZXIubmV4dChzdGFnZS5yYW5kb20o
MCwgdGhpcy5fcm90YXRlci5pbnRlcnZhbCkpOworfQorCitDYW52YXNFbGVjdHJvbi5wcm90b3R5
cGUuX2RyYXcgPSBmdW5jdGlvbigpCit7CisgICAgLy8gQ2FsY3VsYXRlIHRoZSBwb3NpdGlvbiBv
ZiB0aGUgb2JqZWN0IG9uIHRoZSBlbGxpcHNlLgorICAgIHZhciBhbmdsZSA9IHRoaXMuX2RpcmVj
dGlvbiA/IHRoaXMuX3JvdGF0ZXIuZGVncmVlKCkgOiAzNjAgLSB0aGlzLl9yb3RhdGVyLmRlZ3Jl
ZSgpOworICAgIHZhciBwb3NpdGlvbiA9IHRoaXMuX3N0YWdlU2l6ZS5jZW50ZXIuc3VidHJhY3Qo
UG9pbnQucG9pbnRPbkVsbGlwc2UoYW5nbGUsIHRoaXMuX29yYml0UmFkaXVzZXMpKTsKKworICAg
IHRoaXMuX2NvbnRleHQuc2F2ZSgpOyAgICAKKyAgICAgICAgdGhpcy5fY29udGV4dC50cmFuc2xh
dGUodGhpcy5fc3RhZ2VTaXplLmNlbnRlci54LCB0aGlzLl9zdGFnZVNpemUuY2VudGVyLnkpOwor
ICAgICAgICB0aGlzLl9jb250ZXh0LnJvdGF0ZSh0aGlzLl9hbmdsZSAqIE1hdGguUEkgLyAxODAp
OworICAgICAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSgtdGhpcy5fc3RhZ2VTaXplLmNlbnRl
ci54LCAtdGhpcy5fc3RhZ2VTaXplLmNlbnRlci55KTsKKworICAgICAgICAvLyBTZXQgdGhlIHN0
cm9rZSBhbmQgdGhlIGZpbGwgY29sb3JzCisgICAgICAgIHRoaXMuX2NvbnRleHQuc3Ryb2tlU3R5
bGUgPSAicmdiYSgxOTIsIDE5MiwgMTkyLCAwLjkpIjsKKyAgICAgICAgdGhpcy5fY29udGV4dC5m
aWxsU3R5bGUgPSB0aGlzLl9jb2xvcjsKKworICAgICAgICAvLyBEcmF3IHRoZSBvcmJpdCBvZiB0
aGUgb2JqZWN0LgorICAgICAgICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgpOworICAgICAgICB0
aGlzLl9jb250ZXh0LmVsbGlwc2UodGhpcy5fc3RhZ2VTaXplLmNlbnRlci54LCB0aGlzLl9zdGFn
ZVNpemUuY2VudGVyLnksIHRoaXMuX29yYml0UmFkaXVzZXMueCwgdGhpcy5fb3JiaXRSYWRpdXNl
cy55LCAwLCAwLCAyICogTWF0aC5QSSk7CisgICAgICAgIHRoaXMuX2NvbnRleHQuc3Ryb2tlKCk7
CisgICAgCisgICAgICAgIC8vIERyYXcgdGhlIG9iamVjdC4KKyAgICAgICAgdGhpcy5fY29udGV4
dC5iZWdpblBhdGgoKTsKKyAgICAgICAgdGhpcy5fY29udGV4dC5hcmMocG9zaXRpb24ueCwgcG9z
aXRpb24ueSwgdGhpcy5fcmFkaXVzLCAwLCBNYXRoLlBJICogMiwgdHJ1ZSk7CisgICAgICAgIHRo
aXMuX2NvbnRleHQuZmlsbCgpOworICAgIHRoaXMuX2NvbnRleHQucmVzdG9yZSgpOworfQorCitD
YW52YXNFbGVjdHJvbi5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sK
KyAgICB0aGlzLl9yb3RhdGVyLm5leHQodGltZURlbHRhIC8gMTAwKTsKKyAgICB0aGlzLl9kcmF3
KCk7Cit9CisKK2Z1bmN0aW9uIENhbnZhc0VsZWN0cm9uc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMp
Cit7CisgICAgU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0aGlzLmNv
bnRleHQgPSB0aGlzLmVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICB0aGlzLl9lbGVjdHJv
bnMgPSBbXTsKK30KKworQ2FudmFzRWxlY3Ryb25zU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZShTdGFnZS5wcm90b3R5cGUpOworQ2FudmFzRWxlY3Ryb25zU3RhZ2UucHJvdG90eXBlLmNv
bnN0cnVjdG9yID0gQ2FudmFzRWxlY3Ryb25zU3RhZ2U7CisKK0NhbnZhc0VsZWN0cm9uc1N0YWdl
LnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQpCit7CisgICAgY291bnQgPSBjb3VudCA+
IDAgPyBNYXRoLmZsb29yKGNvdW50KSA6IE1hdGguY2VpbChjb3VudCk7CisKKyAgICBpZiAoY291
bnQgPT0gMCkKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VsZWN0cm9ucy5sZW5ndGg7CisKKyAgICBp
ZiAoY291bnQgPiAwKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkK
KyAgICAgICAgICAgIHRoaXMuX2VsZWN0cm9ucy5wdXNoKG5ldyBDYW52YXNFbGVjdHJvbih0aGlz
KSk7CisgICAgICAgIHJldHVybiB0aGlzLl9lbGVjdHJvbnMubGVuZ3RoOworICAgIH0KKworICAg
IGNvdW50ID0gTWF0aC5taW4oLWNvdW50LCB0aGlzLl9lbGVjdHJvbnMubGVuZ3RoKTsKKyAgICB0
aGlzLl9lbGVjdHJvbnMuc3BsaWNlKC1jb3VudCwgY291bnQpOworICAgIAorICAgIHJldHVybiB0
aGlzLl9lbGVjdHJvbnMubGVuZ3RoOworfQorCitDYW52YXNFbGVjdHJvbnNTdGFnZS5wcm90b3R5
cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAgICB0aGlzLl9lbGVjdHJvbnMu
Zm9yRWFjaChmdW5jdGlvbihlbGVjdHJvbikgeworICAgICAgICBlbGVjdHJvbi5hbmltYXRlKHRp
bWVEZWx0YSk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIENhbnZhc0VsZWN0cm9uc0FuaW1hdG9y
KGJlbmNobWFyaykKK3sKKyAgICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyayk7CisgICAg
dGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4dDsKK30KKworQ2FudmFzRWxl
Y3Ryb25zQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUFuaW1hdG9yLnBy
b3RvdHlwZSk7CitDYW52YXNFbGVjdHJvbnNBbmltYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBDYW52YXNFbGVjdHJvbnNBbmltYXRvcjsKKworQ2FudmFzRWxlY3Ryb25zQW5pbWF0b3IucHJv
dG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5fY29udGV4dC5jbGVhclJl
Y3QoMCwgMCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLngsIHRoaXMuX2JlbmNobWFyay5f
c3RhZ2Uuc2l6ZS55KTsKKworICAgIC8vIERyYXcgYSBiaWcgc3RhciBpbiB0aGUgbWlkZGxlLgor
ICAgIHRoaXMuX2NvbnRleHQuZmlsbFN0eWxlID0gIm9yYW5nZSI7ICAgIAorICAgIHRoaXMuX2Nv
bnRleHQuYmVnaW5QYXRoKCk7CisgICAgdGhpcy5fY29udGV4dC5hcmModGhpcy5fYmVuY2htYXJr
Ll9zdGFnZS5zaXplLmNlbnRlci54LCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUuY2VudGVy
LnksIDUwLCAwLCBNYXRoLlBJICogMiwgdHJ1ZSk7CisgICAgdGhpcy5fY29udGV4dC5maWxsKCk7
CisKKyAgICByZXR1cm4gU3RhZ2VBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMp
OworfQorCitmdW5jdGlvbiBDYW52YXNFbGVjdHJvbnNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICBTdGFnZUJlbmNobWFyay5j
YWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
OworfQorCitDYW52YXNFbGVjdHJvbnNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUpOworQ2FudmFzRWxlY3Ryb25zQmVuY2htYXJrLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciA9IENhbnZhc0VsZWN0cm9uc0JlbmNobWFyazsKKworQ2FudmFz
RWxlY3Ryb25zQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1l
bnQpCit7CisgICAgLy8gQXR0YWNoIHRoZSBzdGFnZSB0byB0aGUgYmVuY2htYXJrLgorICAgIHJl
dHVybiBuZXcgQ2FudmFzRWxlY3Ryb25zU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9
CisKK0NhbnZhc0VsZWN0cm9uc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBm
dW5jdGlvbigpCit7CisgICAgLy8gQXR0YWNoIHRoZSBhbmltYXRvciB0byB0aGUgYmVuY2htYXJr
LgorICAgIHJldHVybiBuZXcgQ2FudmFzRWxlY3Ryb25zQW5pbWF0b3IodGhpcyk7Cit9CisKK3dp
bmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlz
IGNhbGxlZCBmcm9tIHRoZSB0ZXN0IGhhcm5lc3Mgd2hpY2ggc3RhcnRzIHRoZQorICAgIC8vIHRl
c3QgYnkgY3JlYXRpbmcgeW91ciBiZW5jaG1hcmsgb2JqZWN0LgorICAgIHJldHVybiBuZXcgQ2Fu
dmFzRWxlY3Ryb25zQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwg
cHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtc3RhcnMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtc3Rh
cnMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
ZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEzMSBAQAorZnVuY3Rpb24gQ2FudmFzU3RhcihzdGFnZSkKK3sKKyAgICB0aGlzLl9jb250
ZXh0ID0gc3RhZ2UuY29udGV4dDsKKyAgICB0aGlzLl9zdGFnZVNpemUgPSBzdGFnZS5zaXplOwor
CisgICAgdGhpcy5fc2l6ZSA9IHN0YWdlLnJhbmRvbVNxdWFyZVNpemUoNSwgMjApOworICAgIHRo
aXMuX2NlbnRlciA9IHN0YWdlLnJhbmRvbVBvc2l0aW9uKHN0YWdlLnNpemUuc3VidHJhY3QodGhp
cy5fc2l6ZSkpLmFkZCh0aGlzLl9zaXplLmNlbnRlcik7CisgICAgdGhpcy5fcm90YXRlWCA9IDA7
CisgICAgdGhpcy5fcm90YXRlRGVsdGFYID0gc3RhZ2UucmFuZG9tKDAuMywgMC43KTsKK30KKwor
Q2FudmFzU3Rhci5wcm90b3R5cGUuX2RyYXcgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5fY29u
dGV4dC5zYXZlKCk7CisgICAgdGhpcy5fY29udGV4dC50cmFuc2xhdGUodGhpcy5fY2VudGVyLngs
IHRoaXMuX2NlbnRlci55KTsKKyAgICAKKyAgICB0aGlzLl9jb250ZXh0LmZpbGxTdHlsZSA9ICd5
ZWxsb3cnOworICAgIHRoaXMuX2NvbnRleHQuc3Ryb2tlU3R5bGUgPSAnd2hpdGUnOworCisgICAg
dGhpcy5fY29udGV4dC5saW5lV2lkdGggPSAxOworICAgIAorICAgIHRoaXMuX2NvbnRleHQuYmVn
aW5QYXRoKCk7CisgICAgdGhpcy5fY29udGV4dC5tb3ZlVG8oICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAsIC10aGlzLl9zaXplLnkgLyAgMik7CisgICAgdGhpcy5fY29udGV4
dC5saW5lVG8oK3RoaXMuX3NpemUueCAvIDIwIC0gdGhpcy5fcm90YXRlWCAvIDUsIC10aGlzLl9z
aXplLnkgLyAxMCk7CisgICAgdGhpcy5fY29udGV4dC5saW5lVG8oK3RoaXMuX3NpemUueCAvIDQg
IC0gdGhpcy5fcm90YXRlWCwgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgdGhpcy5fY29u
dGV4dC5saW5lVG8oK3RoaXMuX3NpemUueCAvIDIwIC0gdGhpcy5fcm90YXRlWCAvIDUsICt0aGlz
Ll9zaXplLnkgLyAxMCk7CisgICAgdGhpcy5fY29udGV4dC5saW5lVG8oICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsICt0aGlzLl9zaXplLnkgLyAgMik7CisgICAgdGhpcy5f
Y29udGV4dC5saW5lVG8oLXRoaXMuX3NpemUueCAvIDIwICsgdGhpcy5fcm90YXRlWCAvIDUsICt0
aGlzLl9zaXplLnkgLyAxMCk7CisgICAgdGhpcy5fY29udGV4dC5saW5lVG8oLXRoaXMuX3NpemUu
eCAvICA0ICsgdGhpcy5fcm90YXRlWCwgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgdGhp
cy5fY29udGV4dC5saW5lVG8oLXRoaXMuX3NpemUueCAvIDIwICsgdGhpcy5fcm90YXRlWCAvIDUs
IC10aGlzLl9zaXplLnkgLyAxMCk7CisgICAgdGhpcy5fY29udGV4dC5saW5lVG8oICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC10aGlzLl9zaXplLnkgLyAgMik7CisgICAg
CisgICAgdGhpcy5fY29udGV4dC5maWxsKCk7CisgICAgdGhpcy5fY29udGV4dC5zdHJva2UoKTsK
KyAgICB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpOworICAgIHRoaXMuX2NvbnRleHQucmVzdG9y
ZSgpOworfQorCitDYW52YXNTdGFyLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURl
bHRhKQoreworICAgIHRoaXMuX3JvdGF0ZVggKz0gdGhpcy5fcm90YXRlRGVsdGFYOworICAgIAor
ICAgIGlmICh0aGlzLl9yb3RhdGVYID4gdGhpcy5fc2l6ZS54IC8gNCB8fCB0aGlzLl9yb3RhdGVY
IDwgLXRoaXMuX3NpemUueCAvIDQpIHsKKyAgICAgICAgdGhpcy5fcm90YXRlRGVsdGFYID0gLXRo
aXMuX3JvdGF0ZURlbHRhWDsKKyAgICAgICAgdGhpcy5fcm90YXRlWCArPSB0aGlzLl9yb3RhdGVE
ZWx0YVg7CisgICAgfQorCisgICB0aGlzLl9kcmF3KCk7Cit9CisKK2Z1bmN0aW9uIENhbnZhc1N0
YXJzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgIFN0YWdlLmNhbGwodGhpcywgZWxlbWVu
dCwgb3B0aW9ucyk7CisgICB0aGlzLmNvbnRleHQgPSB0aGlzLmVsZW1lbnQuZ2V0Q29udGV4dCgi
MmQiKTsKKworICAgIHRoaXMuX29iamVjdHMgPSBbXTsKK30KKworQ2FudmFzU3RhcnNTdGFnZS5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlLnByb3RvdHlwZSk7CitDYW52YXNTdGFyc1N0
YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENhbnZhc1N0YXJzU3RhZ2U7CisKK0NhbnZhc1N0
YXJzU3RhZ2UucHJvdG90eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkKK3sKKyAgICBjb3VudCA9
IGNvdW50ID4gMCA/IE1hdGguZmxvb3IoY291bnQpIDogTWF0aC5jZWlsKGNvdW50KTsKKworICAg
IGlmIChjb3VudCA9PSAwKQorICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0cy5sZW5ndGg7CisK
KyAgICBpZiAoY291bnQgPiAwKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7
ICsraSkKKyAgICAgICAgICAgIHRoaXMuX29iamVjdHMucHVzaChuZXcgQ2FudmFzU3Rhcih0aGlz
KSk7CisgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3RzLmxlbmd0aDsKKyAgICB9CisKKyAgICBj
b3VudCA9IE1hdGgubWluKC1jb3VudCwgdGhpcy5fb2JqZWN0cy5sZW5ndGgpOworICAgIHRoaXMu
X29iamVjdHMuc3BsaWNlKC1jb3VudCwgY291bnQpOworCisgICAgcmV0dXJuIHRoaXMuX29iamVj
dHMubGVuZ3RoOworfQorCitDYW52YXNTdGFyc1N0YWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVu
Y3Rpb24odGltZURlbHRhKQoreworICAgIHRoaXMuX29iamVjdHMuZm9yRWFjaChmdW5jdGlvbihv
YmplY3QpIHsKKyAgICAgICAgb2JqZWN0LmFuaW1hdGUodGltZURlbHRhKTsKKyAgICB9KTsKK30K
KworZnVuY3Rpb24gQ2FudmFzU3RhcnNBbmltYXRvcihiZW5jaG1hcmspCit7CisgICBBbmltYXRv
ci5jYWxsKHRoaXMsIGJlbmNobWFyayk7CisgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJrLl9z
dGFnZS5jb250ZXh0OworfQorCitDYW52YXNTdGFyc0FuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUoU3RhZ2VBbmltYXRvci5wcm90b3R5cGUpOworQ2FudmFzU3RhcnNBbmltYXRvci5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBDYW52YXNTdGFyc0FuaW1hdG9yOworCitDYW52YXNTdGFy
c0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX2Nv
bnRleHQuYmVnaW5QYXRoKCk7CisgICAgdGhpcy5fY29udGV4dC5maWxsU3R5bGUgPSAnYmxhY2sn
OworICAgIHRoaXMuX2NvbnRleHQucmVjdCgwLCAwLCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNp
emUud2lkdGgsIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS5oZWlnaHQpOworICAgIHRoaXMu
X2NvbnRleHQuZmlsbCgpOworICAgcmV0dXJuIFN0YWdlQW5pbWF0b3IucHJvdG90eXBlLmFuaW1h
dGUuY2FsbCh0aGlzKTsKK30KKworZnVuY3Rpb24gQ2FudmFzU3RhcnNCZW5jaG1hcmsoc3VpdGUs
IHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgIFN0YWdlQmVu
Y2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9n
cmVzc0Jhcik7Cit9CisKK0NhbnZhc1N0YXJzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlKTsKK0NhbnZhc1N0YXJzQmVuY2htYXJrLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciA9IENhbnZhc1N0YXJzQmVuY2htYXJrOworCitDYW52YXNTdGFy
c0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQorewor
ICAgLy8gQXR0YWNoIHRoZSBzdGFnZSB0byB0aGUgYmVuY2htYXJrLgorICAgcmV0dXJuIG5ldyBD
YW52YXNTdGFyc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCitDYW52YXNTdGFy
c0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlvbigpCit7CisgICAv
LyBBdHRhY2ggdGhlIGFuaW1hdG9yIHRvIHRoZSBiZW5jaG1hcmsuCisgICByZXR1cm4gbmV3IENh
bnZhc1N0YXJzQW5pbWF0b3IodGhpcyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3Jl
YXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0JhcikKK3sKKyAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIHRlc3QgaGFy
bmVzcyB3aGljaCBzdGFydHMgdGhlCisgICAvLyB0ZXN0IGJ5IGNyZWF0aW5nIHlvdXIgYmVuY2ht
YXJrIG9iamVjdC4KKyAgIHJldHVybiBuZXcgQ2FudmFzU3RhcnNCZW5jaG1hcmsoc3VpdGUsIHRl
c3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jl
c291cmNlcy9tYWluLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDI0MiBAQAorZnVuY3Rpb24gQmVuY2htYXJrU3RhdGUodGVzdEludGVydmFsKQorewor
ICAgIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0ID0gMDsKKyAgICB0aGlzLl9zdGFnZUludGVydmFs
ID0gdGVzdEludGVydmFsIC8gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEOworfQorCisv
LyBUaGUgZW51bSB2YWx1ZXMgYW5kIHRoZSBtZXNzYWdlcyBzaG91bGQgYmUgaW4gdGhlIHNhbWUg
b3JkZXIKK0JlbmNobWFya1N0YXRlLnN0YWdlcyA9IHsKKyAgICBXQVJNSU5HX1VQOiAwLAorICAg
IFNBTVBMSU5HOiAxLAorICAgIEZJTklTSEVEOiAyLAorICAgIG1lc3NhZ2VzOiBbICJXYXJtaW5n
IHVwIiwgIlNhbXBsaW5nIiwgIkZpbmlzaGVkIiBdCit9CisKK0JlbmNobWFya1N0YXRlLnByb3Rv
dHlwZSA9Cit7CisgICAgX3RpbWVPZmZzZXQ6IGZ1bmN0aW9uKHN0YWdlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHN0YWdlICogdGhpcy5fc3RhZ2VJbnRlcnZhbDsKKyAgICB9LAorICAgIAorICAg
IF9tZXNzYWdlOiBmdW5jdGlvbihzdGFnZSwgdGltZU9mZnNldCkKKyAgICB7CisgICAgICAgIGlm
IChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQpCisgICAgICAgICAgICBy
ZXR1cm4gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLm1lc3NhZ2VzW3N0YWdlXTsKKworICAgICAgICBy
ZXR1cm4gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLm1lc3NhZ2VzW3N0YWdlXSArICIuLi4gKCIKKyAg
ICAgICAgICAgICsgTWF0aC5mbG9vcigodGltZU9mZnNldCAtIHRoaXMuX3RpbWVPZmZzZXQoc3Rh
Z2UpKSAvIDEwMDApICsgIi8iCisgICAgICAgICAgICArIE1hdGguZmxvb3IoKHRoaXMuX3RpbWVP
ZmZzZXQoc3RhZ2UgKyAxKSAtIHRoaXMuX3RpbWVPZmZzZXQoc3RhZ2UpKSAvIDEwMDApICsgIiki
OworICAgIH0sCisgICAgCisgICAgdXBkYXRlOiBmdW5jdGlvbihjdXJyZW50VGltZU9mZnNldCkK
KyAgICB7CisgICAgICAgIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0ID0gY3VycmVudFRpbWVPZmZz
ZXQ7CisgICAgfSwKKyAgICAKKyAgICBzYW1wbGluZ1RpbWVPZmZzZXQ6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl90aW1lT2Zmc2V0KEJlbmNobWFya1N0YXRlLnN0YWdl
cy5TQU1QTElORyk7CisgICAgfSwKKyAgICAKKyAgICBjdXJyZW50U3RhZ2U6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIGZvciAodmFyIHN0YWdlID0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLldB
Uk1JTkdfVVA7IHN0YWdlIDwgQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEOyArK3N0YWdl
KSB7CisgICAgICAgICAgICBpZiAodGhpcy5fY3VycmVudFRpbWVPZmZzZXQgPCB0aGlzLl90aW1l
T2Zmc2V0KHN0YWdlICsgMSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YWdlOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQ7CisgICAg
fSwKKyAgICAKKyAgICBjdXJyZW50TWVzc2FnZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX21lc3NhZ2UodGhpcy5jdXJyZW50U3RhZ2UoKSwgdGhpcy5fY3VycmVudFRp
bWVPZmZzZXQpOworICAgIH0sCisgICAgCisgICAgY3VycmVudFByb2dyZXNzOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgLyB0aGlzLl90
aW1lT2Zmc2V0KEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRCk7CisgICAgfQorfQorCitm
dW5jdGlvbiBBbmltYXRvcihiZW5jaG1hcmspCit7CisgICAgdGhpcy5fYmVuY2htYXJrID0gYmVu
Y2htYXJrOworICAgIHRoaXMuX2ZyYW1lQ291bnQgPSAwOworICAgIHRoaXMuX2Ryb3BGcmFtZUNv
dW50ID0gMTsKKyAgICB0aGlzLl9tZWFzdXJlRnJhbWVDb3VudCA9IDM7IAorICAgIHRoaXMuX3Jl
ZmVyZW5jZVRpbWUgPSAwOworICAgIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0ID0gMDsKKyAgICB0
aGlzLl9lc3RpbWF0b3IgPSBuZXcgS2FsbWFuRXN0aW1hdG9yKCk7Cit9CisKK0FuaW1hdG9yLnBy
b3RvdHlwZSA9Cit7CisgICAgc3RhcnQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMu
X2ludGVydmFsSWQgPSBzZXRJbnRlcnZhbCh0aGlzLmFuaW1hdGUuYmluZCh0aGlzKSwgMSk7Cisg
ICAgfSwKKyAgICAKKyAgICB0aW1lRGVsdGE6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl9jdXJyZW50VGltZU9mZnNldCAtIHRoaXMuX3N0YXJ0VGltZU9mZnNldDsKKyAg
ICB9LAorICAgIAorICAgIGFuaW1hdGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBj
dXJyZW50VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpOworICAgICAgICAKKyAgICAgICAgaWYgKCF0
aGlzLl9yZWZlcmVuY2VUaW1lKQorICAgICAgICAgICAgdGhpcy5fcmVmZXJlbmNlVGltZSA9IGN1
cnJlbnRUaW1lOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9jdXJyZW50VGltZU9m
ZnNldCA9IGN1cnJlbnRUaW1lIC0gdGhpcy5fcmVmZXJlbmNlVGltZTsKKworICAgICAgICBpZiAo
IXRoaXMuX2ZyYW1lQ291bnQpCisgICAgICAgICAgICB0aGlzLl9zdGFydFRpbWVPZmZzZXQgPSB0
aGlzLl9jdXJyZW50VGltZU9mZnNldDsKKworICAgICAgICAvLyBTdGFydCBtZWFzdXJpbmcgYWZ0
ZXIgZHJvcHBpbmcgX2Ryb3BGcmFtZUNvdW50IGZyYW1lcy4KKyAgICAgICAgaWYgKHRoaXMuX2Zy
YW1lQ291bnQgPT0gdGhpcy5fZHJvcEZyYW1lQ291bnQpCisgICAgICAgICAgICB0aGlzLl9tZWFz
dXJlVGltZU9mZnNldCA9IHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0OworCisgICAgICAgICsrdGhp
cy5fZnJhbWVDb3VudDsKKworICAgICAgICAvLyBEcm9wIF9kcm9wRnJhbWVDb3VudCBmcmFtZXMg
YW5kIG1lYXN1cmUgdGhlIGF2ZXJhZ2Ugb2YgX21lYXN1cmVGcmFtZUNvdW50IGZyYW1lcy4KKyAg
ICAgICAgaWYgKHRoaXMuX2ZyYW1lQ291bnQgPCB0aGlzLl9kcm9wRnJhbWVDb3VudCArIHRoaXMu
X21lYXN1cmVGcmFtZUNvdW50KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAg
Ly8gR2V0IHRoZSBhdmVyYWdlIEZQUyBvZiBfbWVhc3VyZUZyYW1lQ291bnQgZnJhbWVzIG92ZXIg
bWVhc3VyZVRpbWVEZWx0YS4KKyAgICAgICAgdmFyIG1lYXN1cmVUaW1lRGVsdGEgPSB0aGlzLl9j
dXJyZW50VGltZU9mZnNldCAtIHRoaXMuX21lYXN1cmVUaW1lT2Zmc2V0OworICAgICAgICB2YXIg
Y3VycmVudEZyYW1lUmF0ZSA9IE1hdGguZmxvb3IoMTAwMCAvIChtZWFzdXJlVGltZURlbHRhIC8g
dGhpcy5fbWVhc3VyZUZyYW1lQ291bnQpKTsKKyAgICAgICAgIAorICAgICAgICAvLyBVc2UgS2Fs
bWFuIGZpbHRlciB0byBnZXQgYSBtb3JlIG5vbi1mbHVjdHVhdGluZyBmcmFtZSByYXRlLgorICAg
ICAgICBpZiAodGhpcy5fYmVuY2htYXJrLm9wdGlvbnMuZXN0aW1hdGVkRnJhbWVSYXRlKQorICAg
ICAgICAgICAgY3VycmVudEZyYW1lUmF0ZSA9IHRoaXMuX2VzdGltYXRvci5lc3RpbWF0ZShtZWFz
dXJlVGltZURlbHRhLCBjdXJyZW50RnJhbWVSYXRlKTsKKyAgICAgICAgCisgICAgICAgIC8vIEFk
anVzdCB0aGUgdGVzdCB0byByZWFjaCB0aGUgZGVzaXJlZCBGUFMuCisgICAgICAgIHZhciByZXN1
bHQgPSB0aGlzLl9iZW5jaG1hcmsudXBkYXRlKHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0LCB0aGlz
LnRpbWVEZWx0YSgpLCBjdXJyZW50RnJhbWVSYXRlKTsKKyAgICAgICAgCisgICAgICAgIC8vIFN0
b3AgdGhlIGFuaW1hdG9yIGlmIHRoZSBiZW5jaG1hcmsgaGFzIGZpbmlzaGVkLgorICAgICAgICBp
ZiAoIXJlc3VsdCAmJiB0eXBlb2YgdGhpcy5faW50ZXJ2YWxJZCAhPSAidW5kZWZpbmVkIikKKyAg
ICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWxJZCk7CisKKyAgICAgICAgLy8g
U3RhcnQgdGhlIG5leHQgZHJvcC9tZWFzdXJlIGN5Y2xlLgorICAgICAgICB0aGlzLl9mcmFtZUNv
dW50ID0gMDsKKyAgICAgICAgCisgICAgICAgIC8vIHJlc3VsdCBtYXkgc3RvcCB0aGUgYW5pbWF0
b3IgaWYgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCkgaGFzIGJlZW4gdXNlZC4KKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9LAorICAgIAorICAgIGFuaW1hdGVMb29wOiBmdW5jdGlvbih0aW1l
c3RhbXApCisgICAgeworICAgICAgICBpZiAodGhpcy5hbmltYXRlKCkpCisgICAgICAgICAgICBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5hbmltYXRlTG9vcC5iaW5kKHRoaXMpKTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIEJlbmNobWFyayhvcHRpb25zKQoreworICAgIHRoaXMuX29wdGlvbnMg
PSBvcHRpb25zOworICAgIHRoaXMuX21ldGhvZCA9IHRoaXMuX29wdGlvbnNbIm1ldGhvZCJdIHx8
ICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiOworCisgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsK
KyAgICB0aGlzLl9yZWNvcmRJbnRlcnZhbCA9IDIwMDsgICAgCisgICAgdGhpcy5faXNTYW1wbGlu
ZyA9IGZhbHNlOworCisgICAgdmFyIGdhaW4gPSBwYXJzZUludCh0aGlzLl9vcHRpb25zWyJnYWlu
Il0pIHx8IDE7CisgICAgdmFyIGxvd1ZhbHVlID0gLXBhcnNlSW50KHRoaXMuX29wdGlvbnNbImFk
ZExpbWl0Il0pIHx8IDE7CisgICAgdmFyIGhpZ2hWYWx1ZSA9IHBhcnNlSW50KHRoaXMuX29wdGlv
bnNbInJlbW92ZUxpbWl0Il0pIHx8IDE7CisgICAgCisgICAgdGhpcy5fY29udHJvbGxlciA9IG5l
dyBQSURDb250cm9sbGVyKGdhaW4sIG9wdGlvbnMuZnJhbWVSYXRlLCBsb3dWYWx1ZSwgaGlnaFZh
bHVlKTsKKyAgICB0aGlzLl9zYW1wbGVyID0gbmV3IFNhbXBsZXIoMik7CisgICAgdGhpcy5fc3Rh
dGUgPSBuZXcgQmVuY2htYXJrU3RhdGUodGhpcy5vcHRpb25zLnRlc3RJbnRlcnZhbCk7ICAgIAor
fQorCitCZW5jaG1hcmsucHJvdG90eXBlID0KK3sKKyAgICAvLyBDYWxsZWQgZnJvbSB0aGUgbG9h
ZCBldmVudCBsaXN0ZW5lciBvciBmcm9tIHRoaXMucnVuKCkuCisgICAgc3RhcnQ6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9tZXRob2QgPT0gInNldEludGVydmFsIikKKyAg
ICAgICAgICAgIHRoaXMuX2FuaW1hdG9yLnN0YXJ0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHRoaXMuX2FuaW1hdG9yLmFuaW1hdGVMb29wKCk7CisgICAgfSwKKyAgICAKKyAgICAvLyBD
YWxsZWQgZnJvbSB0aGUgYW5pbWF0b3IgdG8gYWRqdXN0IHRoZSBjb21wbGV4aXR5IG9mIHRoZSB0
ZXN0LgorICAgIHVwZGF0ZTogZnVuY3Rpb24oY3VycmVudFRpbWVPZmZzZXQsIHRpbWVEZWx0YSwg
Y3VycmVudEZyYW1lUmF0ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3N0YXRlLnVwZGF0ZShjdXJy
ZW50VGltZU9mZnNldCk7CisgICAgICAgIAorICAgICAgICB2YXIgc3RhZ2UgPSB0aGlzLl9zdGF0
ZS5jdXJyZW50U3RhZ2UoKTsKKyAgICAgICAgaWYgKHN0YWdlID09IEJlbmNobWFya1N0YXRlLnN0
YWdlcy5GSU5JU0hFRCkgeworICAgICAgICAgICAgdGhpcy5jbGVhcigpOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0YWdlID09IEJlbmNobWFy
a1N0YXRlLnN0YWdlcy5TQU1QTElORyAmJiAhdGhpcy5faXNTYW1wbGluZykgeworICAgICAgICAg
ICAgdGhpcy5fc2FtcGxlci5zdGFydFNhbXBsaW5nKHRoaXMuX3N0YXRlLnNhbXBsaW5nVGltZU9m
ZnNldCgpKTsKKyAgICAgICAgICAgIHRoaXMuX2lzU2FtcGxpbmcgPSB0cnVlOworICAgICAgICB9
CisKKyAgICAgICAgdmFyIHR1bmVWYWx1ZSA9IDA7CisgICAgICAgIGlmICghKHRoaXMuX2lzU2Ft
cGxpbmcgJiYgdGhpcy5vcHRpb25zLmZpeFRlc3RDb21wbGV4aXR5KSkgeworICAgICAgICAgICAg
Ly8gVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGZyYW1lUmF0ZSBhbmQgdGVzdCBjb21wbGV4aXR5
IGlzIGludmVyc2UtcHJvcG9ydGlvbmFsIHNvIHdlCisgICAgICAgICAgICAvLyBuZWVkIHRvIHVz
ZSB0aGUgbmVnYXRpdmUgb2YgUElEQ29udHJvbGxlci50dW5lKCkgdG8gY2hhbmdlIHRoZSBjb21w
bGV4aXR5IG9mIHRoZSB0ZXN0LgorICAgICAgICAgICAgdHVuZVZhbHVlID0gLXRoaXMuX2NvbnRy
b2xsZXIudHVuZShjdXJyZW50RnJhbWVSYXRlLCB0aW1lRGVsdGEgLyAxMDAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIHZhciBjdXJyZW50Q29tcGxleGl0eSA9IHRoaXMudHVuZSh0dW5lVmFsdWUp
OworICAgICAgICB0aGlzLnJlY29yZChjdXJyZW50VGltZU9mZnNldCwgY3VycmVudENvbXBsZXhp
dHksIGN1cnJlbnRGcmFtZVJhdGUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorICAg
IAorICAgIHJlY29yZDogZnVuY3Rpb24oY3VycmVudFRpbWVPZmZzZXQsIGN1cnJlbnRDb21wbGV4
aXR5LCBjdXJyZW50RnJhbWVSYXRlKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2FtcGxlci5zYW1w
bGUoY3VycmVudFRpbWVPZmZzZXQsIFtjdXJyZW50Q29tcGxleGl0eSwgY3VycmVudEZyYW1lUmF0
ZV0pOworICAgICAgICAKKyAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9yZWNvcmRUaW1lT2Zmc2V0
ID09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgdGhpcy5fcmVjb3JkVGltZU9mZnNldCA9IGN1
cnJlbnRUaW1lT2Zmc2V0OworCisgICAgICAgIHZhciBzdGFnZSA9IHRoaXMuX3N0YXRlLmN1cnJl
bnRTdGFnZSgpOworICAgICAgICBpZiAoc3RhZ2UgIT0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJ
TklTSEVEICYmIGN1cnJlbnRUaW1lT2Zmc2V0IDwgdGhpcy5fcmVjb3JkVGltZU9mZnNldCArIHRo
aXMuX3JlY29yZEludGVydmFsKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMu
c2hvd1Jlc3VsdHModGhpcy5fc3RhdGUuY3VycmVudE1lc3NhZ2UoKSwgdGhpcy5fc3RhdGUuY3Vy
cmVudFByb2dyZXNzKCkpOworICAgICAgICB0aGlzLl9yZWNvcmRUaW1lT2Zmc2V0ID0gY3VycmVu
dFRpbWVPZmZzZXQ7CisgICAgfSwKKyAgICAKKyAgICBydW46IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuc3RhcnQoKTsKKworICAgICAgICB2YXIgcHJvbWlzZSA9IG5ldyBTaW1wbGVQ
cm9taXNlOworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIGZ1bmN0aW9uIHJlc29s
dmVXaGVuRmluaXNoZWQoKSB7CisgICAgICAgICAgICBpZiAodHlwZW9mIHNlbGYuX3N0YXRlICE9
ICJ1bmRlZmluZWQiICYmIChzZWxmLl9zdGF0ZS5jdXJyZW50U3RhZ2UoKSA9PSBCZW5jaG1hcmtT
dGF0ZS5zdGFnZXMuRklOSVNIRUQpKQorICAgICAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnJl
c29sdmUoc2VsZi5fc2FtcGxlcik7CisgICAgICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmVXaGVu
RmluaXNoZWQuYmluZChzZWxmKSwgNTApOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBy
ZXNvbHZlV2hlbkZpbmlzaGVkKCk7CisgICAgICAgIHJldHVybiBwcm9taXNlOworICAgIH0KK30K
Kword2luZG93LmJlbmNobWFya0NsaWVudCA9IHt9OworCisvLyBUaGlzIGV2ZW50IGxpc3RlbmVy
IHJ1bnMgdGhlIHRlc3QgaWYgaXQgaXMgbG9hZGVkIG91dHNpZGUgdGhlIGJlbmNobWFyayBydW5u
ZXIuCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkKK3sKKyAgICBp
ZiAod2luZG93LnNlbGYgIT09IHdpbmRvdy50b3ApCisgICAgICAgIHJldHVybjsKKyAgICB3aW5k
b3cuYmVuY2htYXJrID0gd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUobnVsbCwgbnVsbCwg
MzAwMDAsIDUwLCBudWxsLCBudWxsKTsKKyAgICB3aW5kb3cuYmVuY2htYXJrLnN0YXJ0KCk7Cit9
KTsKKworLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgc3VpdGUgY29udHJvbGxl
ciBydW4tY2FsbGJhY2sgd2hlbiBydW5uaW5nIHRoZSBiZW5jaG1hcmsgcnVubmVyLgord2luZG93
LnJ1bkJlbmNobWFyayA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgdmFyIG1lcmdlZE9wdGlvbnMgPSBVdGlsaXRpZXMubWVy
Z2VPYmplY3RzKG9wdGlvbnMsIFV0aWxpdGllcy5wYXJzZVBhcmFtZXRlcnMoKSk7CisgICAgd2lu
ZG93LmJlbmNobWFyayA9IHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKHN1aXRlLCB0ZXN0
LCBtZXJnZWRPcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworICAgIHJldHVybiB3
aW5kb3cuYmVuY2htYXJrLnJ1bigpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWF0aC5qcwkocmV2aXNpb24gMCkKKysrIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWF0aC5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDI3NCBAQAordmFyIE1hdHJpeCA9Cit7CisgICAgaW5pdDogZnVu
Y3Rpb24obSwgbiwgdikKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheShtICogbikuZmlsbCh2
KTsKKyAgICB9LAorICAgIAorICAgIHplcm9zOiBmdW5jdGlvbihtLCBuKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIE1hdHJpeC5pbml0KG0sIG4sIDApOworICAgIH0sCisgICAgCisgICAgb25lczog
ZnVuY3Rpb24obSwgbikKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRyaXguaW5pdChtLCBuLCAx
KTsKKyAgICB9LAorICAgIAorICAgIGlkZW50aXR5OiBmdW5jdGlvbihuKQorICAgIHsKKyAgICAg
ICAgdmFyIG91dCA9IG5ldyBNYXRyaXguemVyb3Mobiwgbik7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbjsgKytpKQorICAgICAgICAgICAgb3V0W2kgKiBuICsgaV0gPSAxOworICAgICAg
ICByZXR1cm4gb3V0OworICAgIH0sCisgICAgCisgICAgc3RyOiBmdW5jdGlvbihBLCBuLCBtKQor
ICAgIHsKKyAgICAgICAgdmFyIG91dCA9IChtID4gMSAmJiBuID4gMSA/ICJNYXRyaXhbIiArIG4g
KyAiLCAiICsgbSA6ICJWZWN0b3JbIiArIG0gKiBuKSArICJdID0gWyI7CisgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbiAqIG07ICsraSkgeworICAgICAgICAgICAgb3V0ICs9IEFbaV07Cisg
ICAgICAgICAgICBpZiAoaSA8IG4gKiBtIC0gMSkKKyAgICAgICAgICAgICAgICBvdXQgKz0gIiwg
IjsKKyAgICAgICAgfSAgICAgICAKKyAgICAgICAgcmV0dXJuIG91dCArICJdIjsKKyAgICB9LAor
ICAgIAorICAgIHBvczogZnVuY3Rpb24obSwgaSwgaikKKyAgICB7CisgICAgICAgIHJldHVybiBt
ICogaSArIGo7CisgICAgfSwKKyAgICAKKyAgICBhZGQ6IGZ1bmN0aW9uKEEsIEIsIG4sIG0pCisg
ICAgeworICAgICAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIG0pOworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IG4gKiBtOyArK2kpCisgICAgICAgICAgICBvdXRbaV0gPSBBW2ldICsg
QltpXTsKKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9LAorICAgIAorICAgIHN1YnRyYWN0OiBm
dW5jdGlvbihBLCBCLCBuLCBtKQorICAgIHsKKyAgICAgICAgdmFyIG91dCA9IE1hdHJpeC56ZXJv
cyhuLCBtKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuICogbTsgKytpKQorICAgICAg
ICAgICAgb3V0W2ldID0gQVtpXSAtIEJbaV07CisgICAgICAgIHJldHVybiBvdXQ7CisgICAgfSwK
KyAgICAKKyAgICBzY2FsZTogZnVuY3Rpb24ocywgQSwgbiwgbSkKKyAgICB7CisgICAgICAgIHZh
ciBvdXQgPSBNYXRyaXguemVyb3MobiwgbSk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
biAqIG07ICsraSkKKyAgICAgICAgICAgIG91dFtpXSA9IHMgKiBBW2ldOworICAgICAgICByZXR1
cm4gb3V0OworICAgIH0sCisgICAgCisgICAgdHJhbnNwb3NlOiBmdW5jdGlvbihBLCBuLCBtKQor
ICAgIHsKKyAgICAgICAgdmFyIG91dCA9IE1hdHJpeC56ZXJvcyhtLCBuKTsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBq
IDwgbTsgKytqKQorICAgICAgICAgICAgICAgIG91dFtNYXRyaXgucG9zKG4sIGksIGopXSA9IEFb
TWF0cml4LnBvcyhtLCBqLCBpKV07CisgICAgICAgIH0gICAgICAgCisgICAgICAgIHJldHVybiBv
dXQ7CisgICAgfSwKKyAgICAKKyAgICBtdWx0aXBseTogZnVuY3Rpb24oQSwgQiwgbiwgbSwgcCkK
KyAgICB7CisgICAgICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3MobiwgcCk7CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsg
aiA8IHA7ICsraikgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbTsgKytr
KSB7CisgICAgICAgICAgICAgICAgICAgIG91dFtNYXRyaXgucG9zKHAsIGksIGopXSArPSBBW01h
dHJpeC5wb3MobSwgaSwgayldICogQltNYXRyaXgucG9zKHAsIGssIGopXTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG91dDsKKyAg
ICB9Cit9CisKK3ZhciBWZWN0b3IzID0KK3sKKyAgICB6ZXJvczogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIE1hdHJpeC56ZXJvcygxLCAzKTsKKyAgICB9LAorICAgIAorICAgIG9u
ZXM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRyaXgub25lcygxLCAzKTsK
KyAgICB9LAorICAgIAorICAgIHN0cjogZnVuY3Rpb24odikKKyAgICB7CisgICAgICAgIHJldHVy
biBNYXRyaXguc3RyKHYsIDEsIDMpOworICAgIH0sCisgICAgCisgICAgYWRkOiBmdW5jdGlvbih2
LCB3KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC5hZGQodiwgdywgMSwgMyk7CisgICAg
fSwKKyAgICAKKyAgICBzdWJ0cmFjdDogZnVuY3Rpb24odiwgdykKKyAgICB7CisgICAgICAgIHJl
dHVybiBNYXRyaXguc3VidHJhY3QodiwgdywgMSwgMyk7CisgICAgfSwKKyAgICAKKyAgICBzY2Fs
ZTogZnVuY3Rpb24ocywgdikKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRyaXguc2NhbGUocywg
diwgMSwgMyk7CisgICAgfSwKKyAgICAKKyAgICBtdWx0aXBseU1hdHJpeDM6IGZ1bmN0aW9uKHYs
IEEpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4Lm11bHRpcGx5KHYsIEEsIDEsIDMsIDMp
OworICAgIH0sCisgICAgCisgICAgbXVsdGlwbHlWZWN0b3IzOiBmdW5jdGlvbih2LCB3KQorICAg
IHsKKyAgICAgICAgdmFyIG91dCA9IDA7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsg
KytpKQorICAgICAgICAgICAgb3V0ICs9IHZbaV0gKiB3W2ldOworICAgICAgICByZXR1cm4gb3V0
OworICAgIH0KK30KKwordmFyIE1hdHJpeDMgPQoreworICAgIHplcm9zOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICByZXR1cm4gTWF0cml4Lnplcm9zKDMsIDMpOworICAgIH0sCisgICAgCisg
ICAgaWRlbnRpdHk6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRyaXguaWRl
bnRpdHkoMywgMyk7CisgICAgfSwKKyAgICAKKyAgICBzdHI6IGZ1bmN0aW9uKEEpCisgICAgewor
ICAgICAgICByZXR1cm4gTWF0cml4LnN0cihBLCAzLCAzKTsKKyAgICB9LAorICAgIAorICAgIHBv
czogZnVuY3Rpb24oaSwgaikKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRyaXgucG9zKDMsIGks
IGopOworICAgIH0sCisgICAgCisgICAgYWRkOiBmdW5jdGlvbihBLCBCKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIE1hdHJpeC5hZGQoQSwgQiwgMywgMyk7CisgICAgfSwKKyAgICAKKyAgICBzdWJ0
cmFjdDogZnVuY3Rpb24oQSwgQikKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRyaXguc3VidHJh
Y3QoQSwgQiwgMywgMyk7CisgICAgfSwKKyAgICAKKyAgICBzY2FsZTogZnVuY3Rpb24ocywgQSkK
KyAgICB7CisgICAgICAgIHJldHVybiBNYXRyaXguc2NhbGUocywgQSwgMywgMyk7CisgICAgfSwK
KyAgICAKKyAgICB0cmFuc3Bvc2U6IGZ1bmN0aW9uKEEpCisgICAgeworICAgICAgICByZXR1cm4g
TWF0cml4LnRyYW5zcG9zZShBLCAzLCAzKTsKKyAgICB9LAorICAgIAorICAgIG11bHRpcGx5TWF0
cml4MzogZnVuY3Rpb24oQSwgQikKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRyaXgubXVsdGlw
bHkoQSwgQiwgMywgMywgMyk7CisgICAgfSwKKyAgICAKKyAgICBtdWx0aXBseVZlY3RvcjM6IGZ1
bmN0aW9uKEEsIHYpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4Lm11bHRpcGx5KEEsIHYs
IDMsIDMsIDEpOworICAgIH0KK30KKworZnVuY3Rpb24gUElEQ29udHJvbGxlcihLLCB5c3AsIHVs
b3csIHVoaWdoKQoreworICAgIHRoaXMuX3lzcCA9IHlzcDsKKworICAgIHRoaXMuX1RkID0gNTsK
KyAgICB0aGlzLl9UaSA9IDE1OworCisgICAgdGhpcy5fS3AgPSBLOworICAgIHRoaXMuX0tkID0g
SyAvIHRoaXMuX1RkOworICAgIHRoaXMuX0tpID0gSyAvIHRoaXMuX1RpOworCisgICAgdGhpcy5f
ZW9sZCA9IDA7CisgICAgdGhpcy5fSSA9IDA7Cit9CisKK1BJRENvbnRyb2xsZXIucHJvdG90eXBl
ID0KK3sKKyAgICBfc2F0OiBmdW5jdGlvbih2LCBsb3csIGhpZ2gpCisgICAgeworICAgICAgICBy
ZXR1cm4gdiA8IGxvdyA/IGxvdyA6ICh2ID4gaGlnaCA/IGhpZ2ggOiB2KTsKKyAgICB9LAorICAg
IAorICAgIHR1bmU6IGZ1bmN0aW9uKHksIGgpCisgICAgeworICAgICAgICAvLyBDdXJyZW50IGVy
cm9yLgorICAgICAgICB2YXIgZSA9IHRoaXMuX3lzcCAtIHk7CisKKyAgICAgICAgLy8gUHJvcG9y
dGlvbmFsIHRlcm0uCisgICAgICAgIHZhciBQID0gdGhpcy5fS3AgKiBlOworICAgICAgICAKKyAg
ICAgICAgLy8gRGVyaXZhdGl2ZSB0ZXJtIGlzIHRoZSBzbG9wZSBvZiB0aGUgY3VydmUgYXQgdGhl
IGN1cnJlbnQgdGltZS4KKyAgICAgICAgdmFyIEQgPSB0aGlzLl9LZCAqIChlIC0gdGhpcy5fZW9s
ZCkgLyBoOworCisgICAgICAgIC8vIEludGVncmFsIHRlcm0gaXMgdGhlIGFyZWEgdW5kZXIgdGhl
IGN1cnZlIHN0YXJ0aW5nIGZyb20gdGhlIGJlZ2luaW5nIHRpbGwgdGhlIGN1cnJlbnQgdGltZS4K
KyAgICAgICAgdGhpcy5fSSArPSB0aGlzLl9LaSAqICgoZSArIHRoaXMuX2VvbGQpIC8gMikgKiBo
OworCisgICAgICAgIC8vIHBpZCBjb250cm9sbGVyIHZhbHVlLgorICAgICAgICB2YXIgdiA9IFAg
KyBEICsgdGhpcy5fSTsKKyAgICAgICAgCisgICAgICAgIC8vIEF2b2lkIHNwaWtlcyBieSBhcHBs
eWluZyBhY3R1YXRvciBzYXR1cmF0aW9uLgorICAgICAgICB2YXIgdSA9IHRoaXMuX3NhdCh2LCB0
aGlzLl91bG93LCB0aGlzLl91aGlnaCk7ICAgICAgICAKKworICAgICAgICB0aGlzLl9lb2xkID0g
ZTsKKyAgICAgICAgcmV0dXJuIHU7CisgICAgfQorfQorCitmdW5jdGlvbiBLYWxtYW5Fc3RpbWF0
b3IoKQoreworICAgIHRoaXMuX21hdEEgPSBNYXRyaXgzLmlkZW50aXR5KCk7CisgICAgCisgICAg
dGhpcy5fdmVjSCA9IFZlY3RvcjMuemVyb3MoKTsKKyAgICB0aGlzLl92ZWNIWzBdID0gMTsKKyAg
ICAKKyAgICB0aGlzLl9tYXRRID0gTWF0cml4My5pZGVudGl0eSgpOworICAgIHRoaXMuX1IgPSAx
MDAwOworICAgIAorICAgIHRoaXMuX3ZlY1hfZXN0ID0gVmVjdG9yMy5vbmVzKCk7CisgICAgdGhp
cy5fbWF0UF9lc3QgPSBNYXRyaXgzLnplcm9zKCk7Cit9CisKK0thbG1hbkVzdGltYXRvci5wcm90
b3R5cGUgPQoreworICAgIGVzdGltYXRlOiBmdW5jdGlvbih0aW1lRGVsdGEsIGN1cnJlbnQpCisg
ICAgeworICAgICAgICAvLyBVcGRhdGUgdGhlIHRyYW5zaXRpb24gbWF0cml4LgorICAgICAgICB0
aGlzLl9tYXRBW01hdHJpeDMucG9zKDAsIDIpXSA9IDE7CisKKyAgICAgICAgLy8gUHJlZGljdGVk
IHN0YXRlIGFuZCBjb3ZhcmlhbmNlLgorICAgICAgICB2YXIgdmVjWF9wcmQgPSBNYXRyaXgzLm11
bHRpcGx5VmVjdG9yMyh0aGlzLl9tYXRBLCB0aGlzLl92ZWNYX2VzdCk7CisgICAgICAgIHZhciBt
YXRQX3ByZCA9IE1hdHJpeDMuYWRkKE1hdHJpeDMubXVsdGlwbHlNYXRyaXgzKE1hdHJpeDMubXVs
dGlwbHlNYXRyaXgzKHRoaXMuX21hdEEsIHRoaXMuX21hdFBfZXN0KSwgTWF0cml4My50cmFuc3Bv
c2UodGhpcy5fbWF0QSkpLCB0aGlzLl9tYXRRKTsKKworICAgICAgICAvLyBFc3RpbWF0aW9uLgor
ICAgICAgICB2YXIgdmVjQiA9IFZlY3RvcjMubXVsdGlwbHlNYXRyaXgzKHRoaXMuX3ZlY0gsIE1h
dHJpeDMudHJhbnNwb3NlKG1hdFBfcHJkKSk7CisgICAgICAgIHZhciBTID0gVmVjdG9yMy5tdWx0
aXBseVZlY3RvcjModmVjQiwgdGhpcy5fdmVjSCkgKyB0aGlzLl9SOworCisgICAgICAgIHZhciB2
ZWNHYWluID0gVmVjdG9yMy5zY2FsZSgxL1MsIHZlY0IpOworICAgICAgICAKKyAgICAgICAgLy8g
RXN0aW1hdGVkIHN0YXRlIGFuZCBjb3ZhcmlhbmNlLgorICAgICAgICB0aGlzLl92ZWNYX2VzdCA9
IFZlY3RvcjMuYWRkKHZlY1hfcHJkLCBWZWN0b3IzLnNjYWxlKGN1cnJlbnQgLSBWZWN0b3IzLm11
bHRpcGx5VmVjdG9yMyh0aGlzLl92ZWNILCB2ZWNYX3ByZCksIHZlY0dhaW4pKTsKKyAgICAgICAg
dGhpcy5fbWF0UF9lc3QgPSBNYXRyaXgzLnN1YnRyYWN0KG1hdFBfcHJkLCBNYXRyaXgzLnNjYWxl
KFZlY3RvcjMubXVsdGlwbHlWZWN0b3IzKHZlY0dhaW4sIHRoaXMuX3ZlY0gpLCBtYXRQX3ByZCkp
OworCisgICAgICAgIC8vIENvbXB1dGUgdGhlIGVzdGltYXRlZCBtZWFzdXJlbWVudC4KKyAgICAg
ICAgcmV0dXJuIFZlY3RvcjMubXVsdGlwbHlWZWN0b3IzKHRoaXMuX3ZlY0gsICB0aGlzLl92ZWNY
X2VzdCk7CisgICAgfQorfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L3Jlc291cmNlcy9zdGFnZS5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5jc3MJKHJldmlzaW9uIDApCisrKyBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmNzcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE3IEBACitodG1sIHsKKyAgaGVpZ2h0OiAxMDAlOworfQorYm9keSB7
CisgIHdpZHRoOiAxMDAlOworICBoZWlnaHQ6IDEwMCU7CisgIG92ZXJmbG93OiBoaWRkZW47Cisg
IG1hcmdpbjogMDsKKyAgcGFkZGluZzogMDsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VhZWFlYTsK
K30KKworI3N0YWdlIHsKKyAgd2lkdGg6IDEwMCU7CisgIGhlaWdodDogMTAwJTsKKyAgYmFja2dy
b3VuZC1jb2xvcjogI2VhZWFlYTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qcwkocmV2aXNpb24gMCkKKysrIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxNzkgQEAKK2Z1bmN0aW9uIFJvdGF0ZXIocm90YXRlSW50ZXJ2
YWwpCit7CisgICAgdGhpcy5fdGltZURlbHRhID0gMDsKKyAgICB0aGlzLl9yb3RhdGVJbnRlcnZh
bCA9IHJvdGF0ZUludGVydmFsOworfQorCitSb3RhdGVyLnByb3RvdHlwZSA9Cit7CisgICAgZ2V0
IGludGVydmFsKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yb3RhdGVJbnRlcnZhbDsK
KyAgICB9LAorICAgIAorICAgIG5leHQ6IGZ1bmN0aW9uKHRpbWVEZWx0YSkKKyAgICB7CisgICAg
ICAgIHRoaXMuX3RpbWVEZWx0YSA9ICh0aGlzLl90aW1lRGVsdGEgKyB0aW1lRGVsdGEpICUgdGhp
cy5fcm90YXRlSW50ZXJ2YWw7CisgICAgfSwKKyAgICAKKyAgICBkZWdyZWU6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHJldHVybiAoMzYwICogdGhpcy5fdGltZURlbHRhKSAvIHRoaXMuX3Jv
dGF0ZUludGVydmFsOworICAgIH0sCisgICAgCisgICAgcm90YXRlWjogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgcmV0dXJuICJyb3RhdGVaKCIgKyBNYXRoLmZsb29yKHRoaXMuZGVncmVlKCkp
ICsgImRlZykiOworICAgIH0sCisgICAgCisgICAgcm90YXRlOiBmdW5jdGlvbihjZW50ZXIpCisg
ICAgeworICAgICAgICByZXR1cm4gInJvdGF0ZSgiICsgTWF0aC5mbG9vcih0aGlzLmRlZ3JlZSgp
KSArICIsICIgKyBjZW50ZXIueCArICIsIiArIGNlbnRlci55ICsgIikiOworICAgIH0KK30KKwor
ZnVuY3Rpb24gU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICB0aGlzLmVsZW1lbnQgPSBl
bGVtZW50OworfQorCitTdGFnZS5wcm90b3R5cGUgPQoreworICAgIGdldCBzaXplKCkKKyAgICB7
CisgICAgICAgIHZhciBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmVsZW1l
bnQpOworICAgICAgICB2YXIgcGFkZGluZyA9IG5ldyBJbnNldHMoCisgICAgICAgICAgICBwYXJz
ZUZsb2F0KHN0eWxlcy5wYWRkaW5nVG9wKSwKKyAgICAgICAgICAgIHBhcnNlRmxvYXQoc3R5bGVz
LnBhZGRpbmdSaWdodCksCisgICAgICAgICAgICBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nQm90
dG9tKSwKKyAgICAgICAgICAgIHBhcnNlRmxvYXQoc3R5bGVzLnBhZGRpbmdUb3ApKTsKKyAgICAg
ICAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLmVsZW1lbnQuY2xpZW50V2lkdGggLSBwYWRkaW5nLndp
ZHRoLCB0aGlzLmVsZW1lbnQuY2xpZW50SGVpZ2h0IC0gcGFkZGluZy5oZWlnaHQpOworICAgIH0s
CisgICAgCisgICAgcmFuZG9tOiBmdW5jdGlvbihtaW4sIG1heCkKKyAgICB7CisgICAgICAgIHJl
dHVybiAoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pKSArIG1pbjsKKyAgICB9LAorICAgIAor
ICAgIHJhbmRvbUludDogZnVuY3Rpb24obWluLCBtYXgpCisgICAgeworICAgICAgICByZXR1cm4g
TWF0aC5mbG9vcih0aGlzLnJhbmRvbShtaW4sIG1heCkpOworICAgIH0sCisgICAgCisgICAgcmFu
ZG9tUG9zaXRpb246IGZ1bmN0aW9uKG1heFBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG5ldyBQb2ludCh0aGlzLnJhbmRvbUludCgwLCBtYXhQb3NpdGlvbi54KSwgdGhpcy5yYW5kb21J
bnQoMCwgbWF4UG9zaXRpb24ueSkpOworICAgIH0sCisgICAgCisgICAgcmFuZG9tU3F1YXJlU2l6
ZTogZnVuY3Rpb24obWluLCBtYXgpCisgICAgeworICAgICAgICB2YXIgc2lkZSA9IHRoaXMucmFu
ZG9tKG1pbiwgbWF4KTsKKyAgICAgICAgcmV0dXJuIG5ldyBQb2ludChzaWRlLCBzaWRlKTsKKyAg
ICB9LAorICAgIAorICAgIHJhbmRvbVZlbG9jaXR5OiBmdW5jdGlvbihtYXhWZWxvY2l0eSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLnJhbmRvbShtYXhWZWxvY2l0eSAvIDgsIG1heFZlbG9j
aXR5KTsKKyAgICB9LAorICAgIAorICAgIHJhbmRvbUFuZ2xlOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5yYW5kb20oMCwgTWF0aC5QSSAqIDIpOworICAgIH0sCisgICAg
CisgICAgcmFuZG9tQ29sb3I6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBtaW4gPSAz
MjsKKyAgICAgICAgdmFyIG1heCA9IDI1NiAtIDMyOworICAgICAgICByZXR1cm4gIiMiCisgICAg
ICAgICAgICArIHRoaXMucmFuZG9tSW50KG1pbiwgbWF4KS50b1N0cmluZygxNikKKyAgICAgICAg
ICAgICsgdGhpcy5yYW5kb21JbnQobWluLCBtYXgpLnRvU3RyaW5nKDE2KQorICAgICAgICAgICAg
KyB0aGlzLnJhbmRvbUludChtaW4sIG1heCkudG9TdHJpbmcoMTYpOworICAgIH0sCisgICAgCisg
ICAgcmFuZG9tUm90YXRlcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBS
b3RhdGVyKHRoaXMucmFuZG9tKDEwMDAsIDEwMDAwKSk7CisgICAgfSwKKworICAgIHR1bmU6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRocm93ICJOb3QgaW1wbGVtZW50ZWQiOworICAgIH0s
CisgICAgCisgICAgYW5pbWF0ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhyb3cgIk5v
dCBpbXBsZW1lbnRlZCI7CisgICAgfSwKKyAgICAKKyAgICBjbGVhcjogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMudHVuZSgtdGhpcy50dW5lKDApKTsKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIFN0YWdlQW5pbWF0b3IoYmVuY2htYXJrKQoreworICAgIEFuaW1hdG9yLmNhbGwo
dGhpcywgYmVuY2htYXJrKTsKK307CisKK1N0YWdlQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShBbmltYXRvci5wcm90b3R5cGUpOworU3RhZ2VBbmltYXRvci5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBTdGFnZUFuaW1hdG9yOworCitTdGFnZUFuaW1hdG9yLnByb3RvdHlwZS5hbmlt
YXRlID0gZnVuY3Rpb24oKQoreworICAgIGlmICghQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUu
Y2FsbCh0aGlzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHRoaXMuX2JlbmNobWFyay5f
c3RhZ2UuYW5pbWF0ZSh0aGlzLnRpbWVEZWx0YSgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
ZnVuY3Rpb24gU3RhZ2VCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxl
LCBwcm9ncmVzc0JhcikKK3sKKyAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBvcHRpb25zKTsKKyAg
ICAKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFnZSIpOwor
ICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsIGRvY3VtZW50LmJvZHkub2Zmc2V0V2lk
dGgpOworICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCBkb2N1bWVudC5ib2R5Lm9m
ZnNldEhlaWdodCk7CisgICAgCisgICAgdGhpcy5fc3RhZ2UgPSB0aGlzLmNyZWF0ZVN0YWdlKGVs
ZW1lbnQpOworICAgIHRoaXMuX2FuaW1hdG9yID0gdGhpcy5jcmVhdGVBbmltYXRvcigpOworICAg
IHRoaXMuX3N1aXRlID0gc3VpdGU7CisgICAgdGhpcy5fdGVzdCA9IHRlc3Q7CisgICAgdGhpcy5f
cmVjb3JkVGFibGUgPSByZWNvcmRUYWJsZTsKKyAgICB0aGlzLl9wcm9ncmVzc0JhciA9IHByb2dy
ZXNzQmFyOworfQorCitTdGFnZUJlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJl
bmNobWFyay5wcm90b3R5cGUpOworU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gU3RhZ2VCZW5jaG1hcms7CisKK1N0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFn
ZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgcmV0dXJuIG5ldyBTdGFnZShlbGVtZW50LCB0
aGlzLl9vcHRpb25zKTsKK30KKworU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1h
dG9yID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiBuZXcgU3RhZ2VBbmltYXRvcih0aGlzKTsK
K30KKworU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkKK3sK
KyAgICByZXR1cm4gdGhpcy5fc3RhZ2UudHVuZShjb3VudCk7Cit9CisKK1N0YWdlQmVuY2htYXJr
LnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gdGhpcy5fc3RhZ2Uu
Y2xlYXIoKTsKK30KKworU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLnNob3dSZXN1bHRzID0gZnVu
Y3Rpb24obWVzc2FnZSwgcHJvZ3Jlc3MpCit7CisgICAgaWYgKCF0aGlzLl9yZWNvcmRUYWJsZSB8
fCAhdGhpcy5fcHJvZ3Jlc3NCYXIgfHwgIXRoaXMuX3N1aXRlIHx8ICF0aGlzLl90ZXN0KQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAodGhpcy5vcHRpb25zLnNob3dSdW5uaW5nUmVzdWx0cykK
KyAgICAgICAgdGhpcy5fcmVjb3JkVGFibGUuc2hvd1JlY29yZCh0aGlzLl9zdWl0ZSwgdGhpcy5f
dGVzdCwgdGhpcy5fc2FtcGxlciwgbWVzc2FnZSk7CisKKyAgICB0aGlzLl9wcm9ncmVzc0Jhci5z
ZXRQb3MocHJvZ3Jlc3MpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL3Jlc291cmNlcy91dGlsaXRpZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy91dGlsaXRpZXMuanMJKHJldmlzaW9uIDApCisr
KyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3V0aWxpdGllcy5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACit3aW5kb3cuVXRpbGl0aWVzID0KK3sK
KyAgICBfcGFyc2U6IGZ1bmN0aW9uKHN0ciwgc2VwKQorICAgIHsKKyAgICAgICAgdmFyIG91dHB1
dCA9IHt9OworICAgICAgICBzdHIuc3BsaXQoc2VwKS5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQpIHsK
KyAgICAgICAgICAgIHZhciBpdGVtID0gcGFydC5zcGxpdCgiPSIpOworICAgICAgICAgICAgdmFy
IHZhbHVlID0gZGVjb2RlVVJJQ29tcG9uZW50KGl0ZW1bMV0pOworICAgICAgICAgICAgaWYgKHZh
bHVlWzBdID09ICInIiApCisgICAgICAgICAgICAgICAgb3V0cHV0W2l0ZW1bMF1dID0gdmFsdWUu
c3Vic3RyKDEsIHZhbHVlLmxlbmd0aCAtIDIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIG91dHB1dFtpdGVtWzBdXSA9IHZhbHVlOyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuIG91dHB1dDsKKyAgICB9LAorICAgIAorICAgIHBhcnNlUGFy
YW1ldGVyczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlKHdp
bmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyKDEpLCAiJiIpOworICAgIH0sCisgICAgCisgICAg
cGFyc2VBcmd1bWVudHM6IGZ1bmN0aW9uKHN0cikKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9wYXJzZShzdHIsICIgIik7CisgICAgfSwKKyAgICAKKyAgICBleHRlbmRPYmplY3Q6IGZ1bmN0
aW9uKG9iajEsIG9iajIpCisgICAgeworICAgICAgICBmb3IgKHZhciBhdHRybmFtZSBpbiBvYmoy
KQorICAgICAgICAgICAgb2JqMVthdHRybmFtZV0gPSBvYmoyW2F0dHJuYW1lXTsKKyAgICAgICAg
cmV0dXJuIG9iajE7CisgICAgfSwKKyAgICAKKyAgICBjb3B5T2JqZWN0OiBmdW5jdGlvbihvYmop
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5leHRlbmRPYmplY3Qoe30sIG9iaik7CisgICAg
fSwKKyAgICAKKyAgICBtZXJnZU9iamVjdHM6IGZ1bmN0aW9uKG9iajEsIG9iajIpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5leHRlbmRPYmplY3QodGhpcy5jb3B5T2JqZWN0KG9iajEpLCBv
YmoyKTsKKyAgICB9LAorICAgIAorICAgIGNyZWF0ZVN2Z0VsZW1lbnQ6IGZ1bmN0aW9uKG5hbWUs
IGF0dHJzLCB4bGlua0F0dHJzLCBwYXJlbnQpCisgICAgeworICAgICAgICBjb25zdCBzdmdOYW1l
c3BhY2UgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciOworICAgICAgICBjb25zdCB4bGlu
a05hbWVzcGFjZSA9ICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIjsKKworICAgICAgICB2
YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhzdmdOYW1lc3BhY2UsIG5hbWUp
OworICAgICAgICAKKyAgICAgICAgZm9yICh2YXIga2V5IGluIGF0dHJzKQorICAgICAgICAgICAg
ZWxlbWVudC5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRyc1trZXldKTsKKyAgICAgICAgICAgIAorICAg
ICAgICBmb3IgKHZhciBrZXkgaW4geGxpbmtBdHRycykKKyAgICAgICAgICAgIGVsZW1lbnQuc2V0
QXR0cmlidXRlTlMoeGxpbmtOYW1lc3BhY2UsIGtleSwgeGxpbmtBdHRyc1trZXldKTsKKyAgICAg
ICAgICAgIAorICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgICAgIHJl
dHVybiBlbGVtZW50OworICAgIH0KK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcuc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcuc3ZnCShyZXZpc2lvbiAw
KQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFu
Zy5zdmcJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBAQAorPHN2ZyB2ZXJzaW9uPSIxLjEi
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCAyMDAgMjAwIj4NCisgIDxkZWZzPg0K
KyAgICA8Y2xpcFBhdGggaWQ9ImxlZnQtaGFsZiI+DQorICAgICAgPHJlY3Qgd2lkdGg9IjEwMCIg
aGVpZ2h0PSIyMDAiLz4NCisgICAgPC9jbGlwUGF0aD4NCisgICAgPGNsaXBQYXRoIGlkPSJyaWdo
dC1oYWxmIj4NCisgICAgICA8cmVjdCB4PSIxMDAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMjAwIi8+
DQorICAgIDwvY2xpcFBhdGg+DQorICA8L2RlZnM+DQorICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSIx
MDAiIHI9Ijk4IiBmaWxsPSJub25lIiBzdHJva2U9ImdyZWVuIiBzdHJva2Utd2lkdGg9IjIiLz4N
CisgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjEwMCIgcj0iOTgiIGZpbGw9IndoaXRlIiBjbGlwLXBh
dGg9InVybCgjbGVmdC1oYWxmKSIvPg0KKyAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iMTAwIiByPSI5
OCIgZmlsbD0iZ3JlZW4iIGNsaXAtcGF0aD0idXJsKCNyaWdodC1oYWxmKSIvPg0KKyAgPGNpcmNs
ZSBjeD0iMTAwIiBjeT0iNTAiICByPSI0OSIgZmlsbD0iZ3JlZW4iLz4NCisgIDxjaXJjbGUgY3g9
IjEwMCIgY3k9IjE0OCIgcj0iNDkiIGZpbGw9IndoaXRlIi8+DQorICA8Y2lyY2xlIGN4PSIxMDAi
IGN5PSI1MCIgIHI9IjEwIiBmaWxsPSJ3aGl0ZSIvPiAgICANCisgIDxjaXJjbGUgY3g9IjEwMCIg
Y3k9IjE0OCIgcj0iMTAiIGZpbGw9ImdyZWVuIi8+DQorPC9zdmc+DQpJbmRleDogUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNhbnZhcy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90
ZW1wbGF0ZS1jYW52YXMuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jYW52YXMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2Vz
L3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0u
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25z
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3Nj
cmlwdD4gICAgCisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RlbXBsYXRlLWNhbnZhcy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKyAgICA8Y2FudmFzIGlkPSJzdGFnZSI+PC9jYW52YXM+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxh
dGUvdGVtcGxhdGUtY3NzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNzcy5odG1sCShyZXZpc2lvbiAwKQorKysg
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNzcy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBo
cmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91
dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L21haW4uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2Uu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVtcGxhdGUtY3NzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9InN0YWdlIj48L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy90ZW1wbGF0ZS90ZW1wbGF0ZS1zdmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0bWwJKHJldmlzaW9u
IDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxh
dGUtc3ZnLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4
dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgorICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAorICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9zdGFnZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZW1wbGF0
ZS1zdmcuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHN2ZyBpZD0ic3RhZ2Ui
Pjwvc3ZnPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNl
cy90ZW1wbGF0ZS1jYW52YXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNhbnZhcy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNCBAQAorZnVuY3Rpb24gVGVtcGxhdGVDYW52YXNPYmpl
Y3Qoc3RhZ2UpCit7CisgICAgLy8gRm9yIHRoZSBjYW52YXMgc3RhZ2UsIG1vc3QgbGlrZWx5IHlv
dSB3aWxsIG5lZWQgdG8gY3JlYXRlIHlvdXIKKyAgICAvLyBhbmltYXRlZCBvYmplY3Qgc2luY2Ug
aXQncyBvbmx5IGRyYXcgdGltZSB0aGluZy4KKyAgICAKKyAgICAvLyBUT0RPOiBGaWxsIGluIHlv
dXIgb2JqZWN0IGRhdGEuCit9CisKK1RlbXBsYXRlQ2FudmFzT2JqZWN0LnByb3RvdHlwZS5fZHJh
dyA9IGZ1bmN0aW9uKCkKK3sKKyAgICAvLyBUT0RPOiBEcmF3IHlvdXIgb2JqZWN0LgorfQorCitU
ZW1wbGF0ZUNhbnZhc09iamVjdC5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0
YSkKK3sKKyAgICAvLyBSZWRyYXcgdGhlIGFuaW1hdGVkIG9iamVjdC4gVGhlIGxhc3QgdGltZSB0
aGlzIGFuaW1hdGVkCisgICAgLy8gaXRlbSB3YXMgZHJhd24gYmVmb3JlICd0aW1lRGVsdGEnLgor
ICAgIAorICAgIC8vIFRPRE86IE1vdmUgeW91ciBvYmplY3QuCisgICAgCisgICAgLy8gUmVkcmF3
IHlvdXIgb2JqZWN0LgorICAgIHRoaXMuX2RyYXcoKTsKK30KKworZnVuY3Rpb24gVGVtcGxhdGVD
YW52YXNTdGFnZShlbGVtZW50LCBvcHRpb25zKQoreworICAgIFN0YWdlLmNhbGwodGhpcywgZWxl
bWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5lbGVtZW50LmdldENvbnRl
eHQoIjJkIik7CisKKyAgICAvLyBUT0RPOiBEZWZpbmUgYSBjb2xsZWN0aW9uIGZvciB5b3VyIG9i
amVjdHMuCit9CisKK1RlbXBsYXRlQ2FudmFzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShTdGFnZS5wcm90b3R5cGUpOworVGVtcGxhdGVDYW52YXNTdGFnZS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBUZW1wbGF0ZUNhbnZhc1N0YWdlOworCitUZW1wbGF0ZUNhbnZhc1N0YWdlLnByb3Rv
dHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQpCit7CisgICAgLy8gSWYgY291bnQgaXMgLXZlLCAt
Y291bnQgZWxlbWVudHMgbmVlZCB0byBiZSByZW1vdmVkIGZvcm0gdGhlCisgICAgLy8gc3RhZ2Uu
IElmIGNvdW50IGlzICt2ZSwgK2NvdW50IGVsZW1lbnRzIG5lZWQgdG8gYmUgYWRkZWQgdG8KKyAg
ICAvLyB0aGUgc3RhZ2UuCisgICAgCisgICAgLy8gVE9ETzogQ2hhbmdlIG9iamVjdHMgaW4gdGhl
IHN0YWdlLgorICAgIAorICAgIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGFsbCB0aGUgZWxlbWVu
dHMgaW4gdGhlIHN0YWdlLgorICAgIC8vIFRoaXMgbnVtYmVyIGlzIHJlY29yZGVkIGluIHRoZSBz
YW1wbGVkIGRhdGEuCisgICAgCisgICAgLy8gVE9ETzogUmV0dXJuIHRoZSBjb3VudCBvZiB0aGUg
b2JqZWN0cyBpbiB0aGUgc3RhZ2UuCisgICAgcmV0dXJuIDA7Cit9CisKK1RlbXBsYXRlQ2FudmFz
U3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCit7CisgICAgLy8g
QW5pbWF0ZSB0aGUgZWxlbWVudHMgc3VjaCB0aGF0IGFsbCBvZiB0aGVtIGFyZSByZWRyYXduLiBN
b3N0CisgICAgLy8gbGlrZWx5IHlvdSB3aWxsIG5lZWQgdG8gY2FsbCBUZW1wbGF0ZUNhbnZhc09i
amVjdC5hbmltYXRlKCkKKyAgICAvLyBmb3IgYWxsIHlvdXIgYW5pbWF0ZWQgb2JqZWN0cyBoZXJl
LgorCisgICAgLy8gVE9ETzogTG9vcCB0aHJvdWdoIGFsbCB5b3VyIG9iamVjdHMgYW5kIGFzayB0
aGVtIHRvIGFuaW1hdGUuCit9CisKK2Z1bmN0aW9uIFRlbXBsYXRlQ2FudmFzQW5pbWF0b3IoYmVu
Y2htYXJrKQoreworICAgIEFuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrKTsKKyAgICB0aGlz
Ll9jb250ZXh0ID0gYmVuY2htYXJrLl9zdGFnZS5jb250ZXh0OworfQorCitUZW1wbGF0ZUNhbnZh
c0FuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VBbmltYXRvci5wcm90b3R5
cGUpOworVGVtcGxhdGVDYW52YXNBbmltYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUZW1w
bGF0ZUNhbnZhc0FuaW1hdG9yOworCitUZW1wbGF0ZUNhbnZhc0FuaW1hdG9yLnByb3RvdHlwZS5h
bmltYXRlID0gZnVuY3Rpb24oKQoreworICAgIC8vIE1vc3QgbGlrZWx5IHlvdSB3aWxsIG5lZWQg
dG8gY2xlYXIgdGhlIGNhbnZhcyB3aXRoIGV2ZXJ5IHJlZHJhdy4KKyAgICB0aGlzLl9jb250ZXh0
LmNsZWFyUmVjdCgwLCAwLCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUueCwgdGhpcy5fYmVu
Y2htYXJrLl9zdGFnZS5zaXplLnkpOworCisgICAgLy8gVE9ETzogRHJhdyBzY2VuZSBzdHVmZiBo
ZXJlIGlmIG5lZWRlZC4KKworICAgIHJldHVybiBTdGFnZUFuaW1hdG9yLnByb3RvdHlwZS5hbmlt
YXRlLmNhbGwodGhpcyk7Cit9CisKK2Z1bmN0aW9uIFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrKHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgU3Rh
Z2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUs
IHByb2dyZXNzQmFyKTsKK30KKworVGVtcGxhdGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUpOworVGVtcGxhdGVDYW52YXNC
ZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVGVtcGxhdGVDYW52YXNCZW5jaG1hcms7
CisKK1RlbXBsYXRlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0
aW9uKGVsZW1lbnQpCit7CisgICAgLy8gQXR0YWNoIHRoZSBzdGFnZSB0byB0aGUgYmVuY2htYXJr
LgorICAgIHJldHVybiBuZXcgVGVtcGxhdGVDYW52YXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRp
b25zKTsKK30KKworVGVtcGxhdGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1h
dG9yID0gZnVuY3Rpb24oKQoreworICAgIC8vIEF0dGFjaCB0aGUgYW5pbWF0b3IgdG8gdGhlIGJl
bmNobWFyay4KKyAgICByZXR1cm4gbmV3IFRlbXBsYXRlQ2FudmFzQW5pbWF0b3IodGhpcyk7Cit9
CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICAvLyBUaGlzIGZ1bmN0
aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSB0ZXN0IGhhcm5lc3Mgd2hpY2ggc3RhcnRzIHRoZQorICAg
IC8vIHRlc3QgYnkgY3JlYXRpbmcgeW91ciBiZW5jaG1hcmsgb2JqZWN0LgorICAgIHJldHVybiBu
ZXcgVGVtcGxhdGVDYW52YXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRh
YmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNzcy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBs
YXRlLWNzcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY3NzLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTUgQEAKK2Z1bmN0aW9uIFRlbXBsYXRlQ3NzU3RhZ2UoZWxlbWVudCwgb3B0aW9u
cykKK3sKKyAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworfQorCitUZW1w
bGF0ZUNzc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2UucHJvdG90eXBlKTsK
K1RlbXBsYXRlQ3NzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVGVtcGxhdGVDc3NTdGFn
ZTsKKworVGVtcGxhdGVDc3NTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KQor
eworICAgIC8vIElmIGNvdW50IGlzIC12ZSwgLWNvdW50IGVsZW1lbnRzIG5lZWQgdG8gYmUgcmVt
b3ZlZCBmb3JtIHRoZQorICAgIC8vIHN0YWdlLiBJZiBjb3VudCBpcyArdmUsICtjb3VudCBlbGVt
ZW50cyBuZWVkIHRvIGJlIGFkZGVkIHRvCisgICAgLy8gdGhlIHN0YWdlLgorICAgIAorICAgIC8v
IFRPRE86IENoYW5nZSBvYmplY3RzIGluIHRoZSBzdGFnZS4KKyAgICAKKyAgICAvLyBSZXR1cm4g
dGhlIG51bWJlciBvZiBhbGwgdGhlIGVsZW1lbnRzIGluIHRoZSBzdGFnZS4KKyAgICAvLyBUaGlz
IG51bWJlciBpcyByZWNvcmRlZCBpbiB0aGUgc2FtcGxlZCBkYXRhLgorICAgIAorICAgIC8vIFRP
RE86IFJldHVybiB0aGUgY291bnQgb2YgdGhlIG9iamVjdHMgaW4gdGhlIHN0YWdlLgorICAgIHJl
dHVybiAwOworfQorCitUZW1wbGF0ZUNzc1N0YWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rp
b24odGltZURlbHRhKQoreworICAgIC8vIEFuaW1hdGUgdGhlIGVsZW1lbnRzIHN1Y2ggdGhhdCBh
bGwgb2YgdGhlbSBhcmUgcmVkcmF3bi4gWW91IAorICAgIC8vIG1heSBuZWVkIHRvIGRlZmluZSB5
b3VyIG9iamVjdCBzbyBpdCBrZWVwcyBpdHMgYW5pbWF0aW9uIGRhdGEuCisgICAgLy8gVGhpcyBv
YmplY3Qgc2hvdWxkIGVuY2Fwc3VsYXRlIGEgY29ycm9zcG9uZGluZyBIVE1MRWxlbWVudC4KKyAg
ICAvLyBZb3UgbWF5IGFsc28gZGVmaW5lIGEgbWV0aG9kIGNhbGxlZCBhbmltYXRlKCkgaW4gdGhp
cyBvYmplY3QKKyAgICAvLyBhbmQganVzdCBjYWxsIHRoaXMgZnVuY3Rpb24gaGVyZSBmb3IgYWxs
IHRoZSBlbGVtZW50cy4KKyAgICAKKyAgICAvLyBUT0RPOiBMb29wIHRocm91Z2ggYWxsIHlvdXIg
b2JqZWN0cyBhbmQgYXNrIHRoZW0gdG8gYW5pbWF0ZS4KK30KKworZnVuY3Rpb24gVGVtcGxhdGVD
c3NCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jh
cikKK3sKKyAgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitUZW1wbGF0ZUNzc0JlbmNobWFyay5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7CitUZW1w
bGF0ZUNzc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUZW1wbGF0ZUNzc0JlbmNo
bWFyazsKKworVGVtcGxhdGVDc3NCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVu
Y3Rpb24oZWxlbWVudCkKK3sKKyAgICAvLyBZb3UgbmVlZCB0byBvdmVycmlkZSB0aGlzIG1ldGhv
ZCBzdWNoIHRoYXQgeW91ciBzdGFnZSBpcyBob29rZWQKKyAgICAvLyB1cCB0byB0aGUgYmVuY2ht
YXJrLgorICAgIHJldHVybiBuZXcgVGVtcGxhdGVDc3NTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRp
b25zKTsKK30KKword2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0
ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIC8vIFRo
aXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIHRlc3QgaGFybmVzcyB3aGljaCBzdGFydHMg
dGhlCisgICAgLy8gdGVzdCBieSBjcmVhdGluZyB5b3VyIGJlbmNobWFyayBvYmplY3QuCisgICAg
cmV0dXJuIG5ldyBUZW1wbGF0ZUNzc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMv
dGVtcGxhdGUtc3ZnLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1zdmcuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1NSBAQAorZnVuY3Rpb24gVGVtcGxhdGVTdmdTdGFnZShlbGVtZW50LCBv
cHRpb25zKQoreworICAgIFN0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7Cit9CisK
K1RlbXBsYXRlU3ZnU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZS5wcm90b3R5
cGUpOworVGVtcGxhdGVTdmdTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUZW1wbGF0ZVN2
Z1N0YWdlOworCitUZW1wbGF0ZVN2Z1N0YWdlLnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291
bnQpCit7CisgICAgLy8gSWYgY291bnQgaXMgLXZlLCAtY291bnQgZWxlbWVudHMgbmVlZCB0byBi
ZSByZW1vdmVkIGZvcm0gdGhlCisgICAgLy8gc3RhZ2UuIElmIGNvdW50IGlzICt2ZSwgK2NvdW50
IGVsZW1lbnRzIG5lZWQgdG8gYmUgYWRkZWQgdG8KKyAgICAvLyB0aGUgc3RhZ2UuCisgICAgCisg
ICAgLy8gVE9ETzogQ2hhbmdlIG9iamVjdHMgaW4gdGhlIHN0YWdlLgorICAgIAorICAgIC8vIFJl
dHVybiB0aGUgbnVtYmVyIG9mIGFsbCB0aGUgZWxlbWVudHMgaW4gdGhlIHN0YWdlLgorICAgIC8v
IFRoaXMgbnVtYmVyIGlzIHJlY29yZGVkIGluIHRoZSBzYW1wbGVkIGRhdGEuCisgICAgCisgICAg
Ly8gVE9ETzogUmV0dXJuIHRoZSBjb3VudCBvZiB0aGUgb2JqZWN0cyBpbiB0aGUgc3RhZ2UuCisg
ICAgcmV0dXJuIDA7Cit9CisKK1RlbXBsYXRlU3ZnU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBm
dW5jdGlvbih0aW1lRGVsdGEpCit7CisgICAgLy8gQW5pbWF0ZSB0aGUgZWxlbWVudHMgc3VjaCB0
aGF0IGFsbCBvZiB0aGVtIGFyZSByZWRyYXduLiBZb3UgCisgICAgLy8gbWF5IG5lZWQgdG8gZGVm
aW5lIHlvdXIgb2JqZWN0IHNvIGl0IGtlZXBzIGl0cyBhbmltYXRpb24gZGF0YS4KKyAgICAvLyBU
aGlzIG9iamVjdCBzaG91bGQgZW5jYXBzdWxhdGUgYSBjb3Jyb3Nwb25kaW5nIFNWR0VsZW1lbnQu
CisgICAgLy8gWW91IG1heSBhbHNvIGRlZmluZSBhIG1ldGhvZCBjYWxsZWQgYW5pbWF0ZSgpIGlu
IHRoaXMgb2JqZWN0CisgICAgLy8gYW5kIGp1c3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGhlcmUgZm9y
IGFsbCB0aGUgZWxlbWVudHMuCisgICAgCisgICAgLy8gVE9ETzogTG9vcCB0aHJvdWdoIGFsbCB5
b3VyIG9iamVjdHMgYW5kIGFzayB0aGVtIHRvIGFuaW1hdGUuCit9CisKK2Z1bmN0aW9uIFRlbXBs
YXRlU3ZnQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jl
c3NCYXIpCit7CisgICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworVGVtcGxhdGVTdmdCZW5jaG1h
cmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUpOwor
VGVtcGxhdGVTdmdCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVGVtcGxhdGVTdmdC
ZW5jaG1hcms7CisKK1RlbXBsYXRlU3ZnQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9
IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgLy8gWW91IG5lZWQgdG8gb3ZlcnJpZGUgdGhpcyBt
ZXRob2Qgc3VjaCB0aGF0IHlvdXIgc3RhZ2UgaXMgaG9va2VkCisgICAgLy8gdXAgdG8gdGhlIGJl
bmNobWFyay4KKyAgICByZXR1cm4gbmV3IFRlbXBsYXRlU3ZnU3RhZ2UoZWxlbWVudCwgdGhpcy5f
b3B0aW9ucyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24o
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICAv
LyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSB0ZXN0IGhhcm5lc3Mgd2hpY2ggc3Rh
cnRzIHRoZQorICAgIC8vIHRlc3QgYnkgY3JlYXRpbmcgeW91ciBiZW5jaG1hcmsgb2JqZWN0Lgor
ICAgIHJldHVybiBuZXcgVGVtcGxhdGVTdmdCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvdGV4dC9sYXllcmluZy10ZXh0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVy
Zm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4dC5odG1sCShy
ZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5
ZXJpbmctdGV4dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIC50ZXh0LWxheWVy
IHsKKyAgICAgICAgICAgIGZvbnQtc2l6ZTogNS41cHg7CisgICAgICAgICAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgICAgICAgICBsZWZ0OiAwcHg7CisgICAgICAgICAgICB0b3A6IDBweDsK
KyAgICAgICAgICAgIHBhZGRpbmc6IDNweDsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6
IHRyYW5zcGFyZW50OworICAgICAgICB9CisgICAgPC9zdHlsZT4gIAorICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3Mi
PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAor
ICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+ICAKKyAgICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+CisgICAgPGRpdiBpZD0ic3RhZ2UiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5n
LXRleHQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1NyBAQAorZnVuY3Rpb24gTGF5ZXJpbmdUZXh0
U3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQs
IG9wdGlvbnMpOworICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGhpcy5lbGVtZW50Owor
ICAgIHRoaXMuX3RleHRFbGVtZW50cyA9IFtdOworICAgIHRoaXMuX3RleHRJdGVtSW5kZXggPSAw
OworICAgIHRoaXMuX2NvbG9ySW5kZXggPSAwOworICAgIHRoaXMuX2FuaW1hdGVDb3VudHMgPSAw
OworfQorCitMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXMgPSBbCisgICAgIjxkaXYgY2xhc3M9
J3RleHQtbGF5ZXInPiIsCisgICAgICAgICI8aDI+VHlwZXMgb2YgYmVuY2htYXJrczwvaDI+IiwK
KyAgICAgICAgIjxvbD4iLAorICAgICAgICAgICAgIjxsaT5SZWFsIHByb2dyYW0iLAorICAgICAg
ICAgICAgICAgICI8dWw+IiwKKyAgICAgICAgICAgICAgICAgICAgIjxsaT53b3JkIHByb2Nlc3Np
bmcgc29mdHdhcmU8L2xpPiIsCisgICAgICAgICAgICAgICAgICAgICI8bGk+dG9vbCBzb2Z0d2Fy
ZSBvZiBDQUQ8L2xpPiIsCisgICAgICAgICAgICAgICAgICAgICI8bGk+dXNlcidzIGFwcGxpY2F0
aW9uIHNvZnR3YXJlIChpLmUuOiBNSVMpPC9saT4iLAorICAgICAgICAgICAgICAgICI8L3VsPiIs
CisgICAgICAgICAgICAiPC9saT4iLAorICAgICAgICAgICAgIjxsaT5LZXJuZWwiLAorICAgICAg
ICAgICAgICAgICI8dWw+IiwKKyAgICAgICAgICAgICAgICAgICAgIjxsaT5jb250YWlucyBrZXkg
Y29kZXM8L2xpPiIsCisgICAgICAgICAgICAgICAgICAgICI8bGk+bm9ybWFsbHkgYWJzdHJhY3Rl
ZCBmcm9tIGFjdHVhbCBwcm9ncmFtPC9saT4iLAorICAgICAgICAgICAgICAgICAgICAiPGxpPnBv
cHVsYXIga2VybmVsOiBMaXZlcm1vcmUgbG9vcDwvbGk+IiwKKyAgICAgICAgICAgICAgICAgICAg
IjxsaT5saW5wYWNrIGJlbmNobWFyayAoY29udGFpbnMgYmFzaWMgbGluZWFyIGFsZ2VicmEgc3Vi
cm91dGluZSB3cml0dGVuIGluIEZPUlRSQU4gbGFuZ3VhZ2UpPC9saT4iLAorICAgICAgICAgICAg
ICAgICAgICAiPGxpPnJlc3VsdHMgYXJlIHJlcHJlc2VudGVkIGluIE1GTE9QUzwvbGk+IiwKKyAg
ICAgICAgICAgICAgICAiPC91bD4iLAorICAgICAgICAgICAgIjwvbGk+IiwKKyAgICAgICAgICAg
ICI8bGk+U3ludGhldGljIEJlbmNobWFyayIsCisgICAgICAgICAgICAgICAgIjx1bD4iLAorICAg
ICAgICAgICAgICAgICAgICAiPGxpPlByb2NlZHVyZSBmb3IgcHJvZ3JhbW1pbmcgc3ludGhldGlj
IGJlbmNobWFyazoiLAorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bD4iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICI8bGk+dGFrZSBzdGF0aXN0aWNzIG9mIGFsbCB0eXBlcyBvZiBv
cGVyYXRpb25zIGZyb20gbWFueSBhcHBsaWNhdGlvbiBwcm9ncmFtczwvbGk+IiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiPGxpPmdldCBwcm9wb3J0aW9uIG9mIGVhY2ggb3BlcmF0aW9u
PC9saT4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGk+d3JpdGUgcHJvZ3JhbSBi
YXNlZCBvbiB0aGUgcHJvcG9ydGlvbiBhYm92ZTwvbGk+IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICI8L3VsPiIsCisgICAgICAgICAgICAgICAgICAgICI8L2xpPiIsCisgICAgICAgICAgICAg
ICAgICAgICI8bGk+VHlwZXMgb2YgU3ludGhldGljIEJlbmNobWFyayBhcmU6IiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICI8dWw+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxp
PldoZXRzdG9uZTwvbGk+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpPkRocnlz
dG9uZTwvbGk+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICI8L3VsPiIsCisgICAgICAgICAg
ICAgICAgICAgICI8L2xpPiIsCisgICAgICAgICAgICAgICAgICAgICI8bGk+VGhlc2Ugd2VyZSB0
aGUgZmlyc3QgZ2VuZXJhbCBwdXJwb3NlIGluZHVzdHJ5IHN0YW5kYXJkIGNvbXB1dGVyIGJlbmNo
bWFya3MuIFRoZXkgZG8gbm90IG5lY2Vzc2FyaWx5IG9idGFpbiBoaWdoIHNjb3JlcyBvbiBtb2Rl
cm4gcGlwZWxpbmVkIGNvbXB1dGVycy48L2xpPiIsCisgICAgICAgICAgICAgICAgIjwvdWw+IiwK
KyAgICAgICAgICAgICI8L2xpPiIsCisgICAgICAgICAgICAiPGxpPkkvTyBiZW5jaG1hcmtzPC9s
aT4iLAorICAgICAgICAgICAgIjxsaT5EYXRhYmFzZSBiZW5jaG1hcmtzOiB0byBtZWFzdXJlIHRo
ZSB0aHJvdWdocHV0IGFuZCByZXNwb25zZSB0aW1lcyBvZiBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5
c3RlbXMgKERCTVMnKTwvbGk+IiwKKyAgICAgICAgICAgICI8bGk+UGFyYWxsZWwgYmVuY2htYXJr
czogdXNlZCBvbiBtYWNoaW5lcyB3aXRoIG11bHRpcGxlIGNvcmVzLCBwcm9jZXNzb3JzIG9yIHN5
c3RlbXMgY29uc2lzdGluZyBvZiBtdWx0aXBsZSBtYWNoaW5lczwvbGk+IiwKKyAgICAgICAgIjwv
b2w+IiwKKyAgICAgICAgIjxoMj5Db21tb24gYmVuY2htYXJrczwvaDI+IiwKKyAgICAgICAgIjx1
bD4iLAorICAgICAgICAgICAgIjxsaT5CdXNpbmVzcyBBcHBsaWNhdGlvbnMgUGVyZm9ybWFuY2Ug
Q29ycG9yYXRpb24gKEJBUENvKTwvbGk+IiwKKyAgICAgICAgICAgICI8bGk+RW1iZWRkZWQgTWlj
cm9wcm9jZXNzb3IgQmVuY2htYXJrIENvbnNvcnRpdW0gKEVFTUJDKTwvbGk+IiwKKyAgICAgICAg
ICAgICI8bGk+U3RhbmRhcmQgUGVyZm9ybWFuY2UgRXZhbHVhdGlvbiBDb3Jwb3JhdGlvbiAoU1BF
QyksIGluIHBhcnRpY3VsYXIgdGhlaXIgU1BFQ2ludCBhbmQgU1BFQ2ZwPC9saT4iLAorICAgICAg
ICAgICAgIjxsaT5UcmFuc2FjdGlvbiBQcm9jZXNzaW5nIFBlcmZvcm1hbmNlIENvdW5jaWwgKFRQ
Qyk8L2xpPiIsCisgICAgICAgICAgICAiPGxpPkNvcmVtYXJrOiBFbWJlZGRlZCBjb21wdXRpbmcg
YmVuY2htYXJrPC9saT4iLAorICAgICAgICAiPC91bD4iLAorICAgICAgICAiPGgzPk9wZW4gc291
cmNlIGJlbmNobWFya3M8L2gzPiIsCisgICAgICAgICI8dWw+IiwKKyAgICAgICAgICAgICI8bGk+
QUlNIE11bHRpdXNlciBCZW5jaG1hcms6IGNvbXBvc2VkIG9mIGEgbGlzdCBvZiB0ZXN0cyB0aGF0
IGNvdWxkIGJlIG1peGVkIHRvIGNyZWF0ZSBhIOKAmGxvYWQgbWl44oCZIHRoYXQgd291bGQgc2lt
dWxhdGUgYSBzcGVjaWZpYyBjb21wdXRlciBmdW5jdGlvbiBvbiBhbnkgVU5JWC10eXBlIE9TLjwv
bGk+IiwKKyAgICAgICAgICAgICI8bGk+Qm9ubmllKys6IGZpbGVzeXN0ZW0gYW5kIGhhcmQgZHJp
dmUgYmVuY2htYXJrPC9saT4iLAorICAgICAgICAgICAgIjxsaT5CUkwtQ0FEOiBjcm9zcy1wbGF0
Zm9ybSBhcmNoaXRlY3R1cmUtYWdub3N0aWMgYmVuY2htYXJrIHN1aXRlIGJhc2VkIG9uIG11bHRp
dGhyZWFkZWQgcmF5IHRyYWNpbmcgcGVyZm9ybWFuY2U7IGJhc2VsaW5lZCBhZ2FpbnN0IGEgVkFY
LTExLzc4MDsgYW5kIHVzZWQgc2luY2UgMTk4NCBmb3IgZXZhbHVhdGluZyByZWxhdGl2ZSBDUFUg
cGVyZm9ybWFuY2UsIGNvbXBpbGVyIGRpZmZlcmVuY2VzLCBvcHRpbWl6YXRpb24gbGV2ZWxzLCBj
b2hlcmVuY3ksIGFyY2hpdGVjdHVyZSBkaWZmZXJlbmNlcywgYW5kIG9wZXJhdGluZyBzeXN0ZW0g
ZGlmZmVyZW5jZXMuPC9saT4iLAorICAgICAgICAiPC91bD4iLAorICAgICI8L2Rpdj4iCitdOwor
CitMYXllcmluZ1RleHRTdGFnZS5wYXJzZVRleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW0pCit7
CisgICAgdmFyIHBhcnNlUmVzdWx0ID0ge307CisgICAgcGFyc2VSZXN1bHQudGFnU3RhcnQgPSB0
ZXh0SXRlbS5tYXRjaCgvPCguKj8pPi9nKVswXTsKKyAgICB2YXIgc3BhY2VJbmRleCA9IHBhcnNl
UmVzdWx0LnRhZ1N0YXJ0LmluZGV4T2YoIiAiKTsKKyAgICBwYXJzZVJlc3VsdC5ub2RlTmFtZSA9
IHBhcnNlUmVzdWx0LnRhZ1N0YXJ0LnN1YnN0cmluZygxLCBzcGFjZUluZGV4ICE9IC0xID8gc3Bh
Y2VJbmRleCA6IHBhcnNlUmVzdWx0LnRhZ1N0YXJ0Lmxlbmd0aCAtIDEpOworICAgIHBhcnNlUmVz
dWx0LmFyZ3MgPSBzcGFjZUluZGV4ICE9IC0xID8gVXRpbGl0aWVzLnBhcnNlQXJndW1lbnRzKHBh
cnNlUmVzdWx0LnRhZ1N0YXJ0LnN1YnN0cmluZyhzcGFjZUluZGV4ICsgMSwgcGFyc2VSZXN1bHQu
dGFnU3RhcnQubGVuZ3RoIC0gMSkpIDoge307CisgICAgdmFyIHRhZ0VuZCA9ICI8LyIgKyBwYXJz
ZVJlc3VsdC5ub2RlTmFtZSArICI+IjsgICAgICAgICAgICAgICAgCisgICAgcGFyc2VSZXN1bHQu
dGFnRW5kID0gdGV4dEl0ZW0uZW5kc1dpdGgodGFnRW5kKSA/IHRhZ0VuZCA6ICIiOworICAgIHJl
dHVybiBwYXJzZVJlc3VsdDsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UuaXNPcGVuaW5nVGV4dEl0
ZW0gPSBmdW5jdGlvbih0ZXh0SXRlbSkKK3sKKyAgICByZXR1cm4gIUxheWVyaW5nVGV4dFN0YWdl
LnBhcnNlVGV4dEl0ZW0odGV4dEl0ZW0pLnRhZ0VuZC5sZW5ndGg7Cit9CisKK0xheWVyaW5nVGV4
dFN0YWdlLmlzQ2xvc2luZ1RleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW0pCit7CisgICAgcmV0
dXJuIHRleHRJdGVtLmluZGV4T2YoIi8iKSA9PSArMTsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2Uu
dGV4dEl0ZW1zRmxhZ3MgPSBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXMubWFwKGZ1bmN0aW9u
KHRleHRJdGVtKQoreworICAgdmFyIHRleHRJdGVtRmxhZ3MgPSB7fTsKKyAgIHRleHRJdGVtRmxh
Z3MuaXNPcGVuaW5nID0gTGF5ZXJpbmdUZXh0U3RhZ2UuaXNPcGVuaW5nVGV4dEl0ZW0odGV4dEl0
ZW0pOworICAgdGV4dEl0ZW1GbGFncy5pc0Nsb3NpbmcgPSBMYXllcmluZ1RleHRTdGFnZS5pc0Ns
b3NpbmdUZXh0SXRlbSh0ZXh0SXRlbSk7ICAgCisgICByZXR1cm4gdGV4dEl0ZW1GbGFnczsKK30p
OworCitMYXllcmluZ1RleHRTdGFnZS5pc0NvbG9yYWJsZVRleHRJdGVtID0gZnVuY3Rpb24odGV4
dEl0ZW1GbGFncykKK3sKKyAgICByZXR1cm4gISh0ZXh0SXRlbUZsYWdzLmlzT3BlbmluZyB8fCB0
ZXh0SXRlbUZsYWdzLmlzQ2xvc2luZyk7Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLmlzSW5zZXJ0
YWJsZVRleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW1GbGFncykKK3sKKyAgICByZXR1cm4gIXRl
eHRJdGVtRmxhZ3MuaXNDbG9zaW5nOworfQorCitMYXllcmluZ1RleHRTdGFnZS5jb2xvcmFibGVU
ZXh0SXRlbXMgPSBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFncy5maWx0ZXIoZnVuY3Rp
b24odGV4dEl0ZW1GbGFncykKK3sKKyAgICByZXR1cm4gTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDb2xv
cmFibGVUZXh0SXRlbSh0ZXh0SXRlbUZsYWdzKTsKK30pLmxlbmd0aDsKKworTGF5ZXJpbmdUZXh0
U3RhZ2UuaW5zZXJ0YWJsZVRleHRJdGVtcyA9IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0Zs
YWdzLmZpbHRlcihmdW5jdGlvbih0ZXh0SXRlbUZsYWdzKQoreworICAgIHJldHVybiBMYXllcmlu
Z1RleHRTdGFnZS5pc0luc2VydGFibGVUZXh0SXRlbSh0ZXh0SXRlbUZsYWdzKTsKK30pLmxlbmd0
aDsKKworTGF5ZXJpbmdUZXh0U3RhZ2UuY29sb3JJbmRleFRvVGV4dEVsZW1lbnRJbmRleCA9IGZ1
bmN0aW9uKGNvbG9ySW5kZXgpCit7CisgICAgdmFyIHRleHRFbGVtZW50SW5kZXggPSAwOworICAg
IHZhciBpbmRleCA9IDA7CisgICAgCisgICAgZm9yICh2YXIgdGV4dEl0ZW1JbmRleCA9IDA7IHRl
eHRJdGVtSW5kZXggPCBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFncy5sZW5ndGg7ICsr
dGV4dEl0ZW1JbmRleCkgeworICAgICAgICBpZiAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDb2xvcmFi
bGVUZXh0SXRlbShMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0ZXh0SXRlbUluZGV4
XSkpIHsKKyAgICAgICAgICAgIGlmICgrK2luZGV4ID4gY29sb3JJbmRleCkKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNJ
bnNlcnRhYmxlVGV4dEl0ZW0oTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxhZ3NbdGV4dEl0
ZW1JbmRleF0pKQorICAgICAgICAgICAgKyt0ZXh0RWxlbWVudEluZGV4OworICAgIH0KKyAgICAK
KyAgICByZXR1cm4gdGV4dEVsZW1lbnRJbmRleDsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZS5wcm90b3R5cGUpOworTGF5ZXJpbmdUZXh0U3Rh
Z2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTGF5ZXJpbmdUZXh0U3RhZ2U7CisKK0xheWVyaW5n
VGV4dFN0YWdlLnByb3RvdHlwZS5fbmV4dFRleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW1GbGFn
cykKK3sKKyAgICB2YXIgdGV4dEl0ZW0gPSBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNbdGhp
cy5fdGV4dEl0ZW1JbmRleF07CisgICAgVXRpbGl0aWVzLmV4dGVuZE9iamVjdCh0ZXh0SXRlbUZs
YWdzLCBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFnc1t0aGlzLl90ZXh0SXRlbUluZGV4
XSk7CisgICAgdGhpcy5fdGV4dEl0ZW1JbmRleCA9ICh0aGlzLl90ZXh0SXRlbUluZGV4ICsgMSkg
JSBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXMubGVuZ3RoOworICAgIHJldHVybiB0ZXh0SXRl
bTsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9wcmV2aW91c1RleHRJdGVtID0g
ZnVuY3Rpb24odGV4dEl0ZW1GbGFncykKK3sKKyAgICB0aGlzLl90ZXh0SXRlbUluZGV4ID0gKHRo
aXMuX3RleHRJdGVtSW5kZXggKyBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXMubGVuZ3RoIC0g
MSkgJSBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXMubGVuZ3RoOworICAgIFV0aWxpdGllcy5l
eHRlbmRPYmplY3QodGV4dEl0ZW1GbGFncywgTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zRmxh
Z3NbdGhpcy5fdGV4dEl0ZW1JbmRleF0pOyAgICAKKyAgICByZXR1cm4gTGF5ZXJpbmdUZXh0U3Rh
Z2UudGV4dEl0ZW1zW3RoaXMuX3RleHRJdGVtSW5kZXhdOworfQorCitMYXllcmluZ1RleHRTdGFn
ZS5wcm90b3R5cGUuX3B1c2hUZXh0RWxlbWVudCA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgdGV4
dEl0ZW1GbGFncyA9IHt9OworICAgIHZhciB0ZXh0SXRlbSA9IHRoaXMuX25leHRUZXh0SXRlbSh0
ZXh0SXRlbUZsYWdzKTsKKyAgICBmb3IgKCA7IHRleHRJdGVtRmxhZ3MuaXNDbG9zaW5nOyB0ZXh0
SXRlbSA9IHRoaXMuX25leHRUZXh0SXRlbSh0ZXh0SXRlbUZsYWdzKSkKKyAgICAgICAgdGhpcy5f
dGV4dEVsZW1lbnRQYXJlbnQgPSB0aGlzLl90ZXh0RWxlbWVudFBhcmVudC5wYXJlbnROb2RlOwor
CisgICAgdmFyIHBhcnNlUmVzdWx0ID0gTGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VUZXh0SXRlbSh0
ZXh0SXRlbSk7CisgICAgdGV4dEl0ZW0gPSB0ZXh0SXRlbS5zdWJzdHJpbmcocGFyc2VSZXN1bHQu
dGFnU3RhcnQubGVuZ3RoLCB0ZXh0SXRlbS5sZW5ndGggLSBwYXJzZVJlc3VsdC50YWdFbmQubGVu
Z3RoKTsKKworICAgIHZhciB0ZXh0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQocGFy
c2VSZXN1bHQubm9kZU5hbWUpOworCisgICAgZm9yICh2YXIgYXR0cm5hbWUgaW4gcGFyc2VSZXN1
bHQuYXJncykKKyAgICAgICAgdGV4dEVsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJuYW1lLCBwYXJz
ZVJlc3VsdC5hcmdzW2F0dHJuYW1lXSk7CisKKyAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudC5h
cHBlbmRDaGlsZCh0ZXh0RWxlbWVudCk7CisgICAgCisgICAgaWYgKCFwYXJzZVJlc3VsdC50YWdF
bmQubGVuZ3RoKQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVudFBhcmVudCA9IHRleHRFbGVtZW50
OworCisgICAgdGV4dEVsZW1lbnQuaW5uZXJIVE1MID0gdGV4dEl0ZW07CisgICAgCisgICAgdGhp
cy5fdGV4dEVsZW1lbnRzLnB1c2godGV4dEVsZW1lbnQpOworICAgIHJldHVybiB0aGlzLl90ZXh0
RWxlbWVudHMubGVuZ3RoOworfQorCitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX3BvcFRl
eHRFbGVtZW50ID0gZnVuY3Rpb24oKQoreworICAgIHZhciB0ZXh0SXRlbUZsYWdzID0ge307ICAg
IAorICAgIHZhciB0ZXh0SXRlbSA9IHRoaXMuX3ByZXZpb3VzVGV4dEl0ZW0odGV4dEl0ZW1GbGFn
cyk7CisgICAgZm9yICggOyB0ZXh0SXRlbUZsYWdzLmlzQ2xvc2luZzsgdGV4dEl0ZW0gPSB0aGlz
Ll9wcmV2aW91c1RleHRJdGVtKHRleHRJdGVtRmxhZ3MpKQorICAgICAgICB0aGlzLl90ZXh0RWxl
bWVudFBhcmVudCA9IHRoaXMuX3RleHRFbGVtZW50UGFyZW50Lmxhc3RDaGlsZDsKKworICAgIGlm
ICh0ZXh0SXRlbUZsYWdzLmlzT3BlbmluZykKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJl
bnQgPSB0aGlzLl90ZXh0RWxlbWVudFBhcmVudC5wYXJlbnROb2RlOworCisgICAgdGhpcy5fdGV4
dEVsZW1lbnRzW3RoaXMuX3RleHRFbGVtZW50cy5sZW5ndGggLSAxXS5yZW1vdmUoKTsKKworICAg
IHRoaXMuX3RleHRFbGVtZW50cy5wb3AoKTsKKyAgICByZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRz
Lmxlbmd0aDsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9jb2xvclRleHRJdGVt
ID0gZnVuY3Rpb24oY29sb3IpCit7CisgICAgdmFyIHRleHRFbGVtZW50SW5kZXggPSBMYXllcmlu
Z1RleHRTdGFnZS5jb2xvckluZGV4VG9UZXh0RWxlbWVudEluZGV4KHRoaXMuX2NvbG9ySW5kZXgp
OworICAgIGZvciAoIDsgdGV4dEVsZW1lbnRJbmRleCA8IHRoaXMuX3RleHRFbGVtZW50cy5sZW5n
dGg7IHRleHRFbGVtZW50SW5kZXggKz0gTGF5ZXJpbmdUZXh0U3RhZ2UuaW5zZXJ0YWJsZVRleHRJ
dGVtcykKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRzW3RleHRFbGVtZW50SW5kZXhdLnN0eWxl
LmJhY2tncm91bmRDb2xvciA9IGNvbG9yOworfQorCitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5
cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAgICB0aGlzLl9jb2xvclRleHRJ
dGVtKCJ0cmFuc3BhcmVudCIpOworICAgIHRoaXMuX2NvbG9ySW5kZXggPSAodGhpcy5fY29sb3JJ
bmRleCArIDEpICUgTGF5ZXJpbmdUZXh0U3RhZ2UuY29sb3JhYmxlVGV4dEl0ZW1zOworICAgIHRo
aXMuX2NvbG9yVGV4dEl0ZW0oIlllbGxvd0dyZWVuIik7CisgICAgCisgICAgdmFyIGJsYWNrVGV4
dEVsZW1lbnRzID0gTWF0aC5taW4odGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aCwgTGF5ZXJpbmdU
ZXh0U3RhZ2UuaW5zZXJ0YWJsZVRleHRJdGVtcyk7CisgICAgdmFyIGkgPSAwOworICAgIGZvciAo
IDsgaSA8IHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGggLSBibGFja1RleHRFbGVtZW50czsgKytp
KQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVudHNbaV0uc3R5bGUuY29sb3IgPSAodGhpcy5fYW5p
bWF0ZUNvdW50cyAmIDEpID8gIkxpZ2h0WWVsbG93IiA6ICJ3aGl0ZSI7CisKKyAgICBmb3IgKCA7
IGkgPCB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOyArK2kpCisgICAgICAgIHRoaXMuX3RleHRF
bGVtZW50c1tpXS5zdHlsZS5jb2xvciA9ICJibGFjayI7CisgICAgICAgIAorICAgICsrdGhpcy5f
YW5pbWF0ZUNvdW50czsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLnR1bmUgPSBm
dW5jdGlvbihjb3VudCkKK3sKKyAgICBjb3VudCA9IGNvdW50ID4gMCA/IE1hdGguZmxvb3IoY291
bnQpIDogTWF0aC5jZWlsKGNvdW50KTsKKworICAgIGlmIChjb3VudCA9PSAwKQorICAgICAgICBy
ZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsKKworICAgIGlmIChjb3VudCA+IDApIHsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgdGhp
cy5fcHVzaFRleHRFbGVtZW50KCk7CisgICAgICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMu
bGVuZ3RoOworICAgIH0KKyAgICAgICAgCisgICAgY291bnQgPSBNYXRoLm1pbigtY291bnQsIHRo
aXMuX3RleHRFbGVtZW50cy5sZW5ndGgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7
ICsraSkKKyAgICAgICAgdGhpcy5fcG9wVGV4dEVsZW1lbnQoKTsKKworICAgIHJldHVybiB0aGlz
Ll90ZXh0RWxlbWVudHMubGVuZ3RoOworfQorCitmdW5jdGlvbiBMYXllcmluZ1RleHRCZW5jaG1h
cmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAg
ICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRU
YWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitMYXllcmluZ1RleHRCZW5jaG1hcmsucHJvdG90eXBl
ID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUpOworTGF5ZXJpbmdUZXh0
QmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IExheWVyaW5nVGV4dEJlbmNobWFyazsK
KworTGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9u
KGVsZW1lbnQpCit7CisgICAgcmV0dXJuIG5ldyBMYXllcmluZ1RleHRTdGFnZShlbGVtZW50LCB0
aGlzLl9vcHRpb25zKTsKK30KKword2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5j
dGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQorewor
ICAgIHJldHVybiBuZXcgTGF5ZXJpbmdUZXh0QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5wbmcKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3Qg
ZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGlt
YWdlL3BuZwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNl
cy95aW4teWFuZy5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5wbmcJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3lpbi15YW5nLnBuZwkod29ya2luZyBj
b3B5KQoKUHJvcGVydHkgY2hhbmdlcyBvbjogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL3Jlc291cmNlcy95aW4teWFuZy5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlw
ZQojIyAtMCwwICsxICMjCitpbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQoKaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdRQUFBQmtDQVlBQUFCdzRwVlVBQUFBQkdkQlRV
RUFBTEdQQy94aEJRQUFBQ0JqU0ZKTgpBQUI2SmdBQWdJUUFBUG9BQUFDQTZBQUFkVEFBQU9wZ0FB
QTZtQUFBRjNDY3VsRThBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZCkFBQUNCR2xVV0hSWVRV
dzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5
aVpUcHUKY3pwdFpYUmhMeUlnZURwNGJYQjBhejBpV0UxUUlFTnZjbVVnTlM0MExqQWlQZ29nSUNB
OGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOQpJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1Rr
dk1ESXZNakl0Y21SbUxYTjViblJoZUMxdWN5TWlQZ29nSUNBZ0lDQThjbVJtCk9rUmxjMk55YVhC
MGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwbGVHbG1QU0pv
ZEhSd09pOHYKYm5NdVlXUnZZbVV1WTI5dEwyVjRhV1l2TVM0d0x5SUtJQ0FnSUNBZ0lDQWdJQ0Fn
ZUcxc2JuTTZkR2xtWmowaWFIUjBjRG92TDI1egpMbUZrYjJKbExtTnZiUzkwYVdabUx6RXVNQzhp
UGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBRYVhobGJGbEVhVzFsYm5OcGIyNCtNVEV3ClBDOWxlR2xt
T2xCcGVHVnNXVVJwYldWdWMybHZiajRLSUNBZ0lDQWdJQ0FnUEdWNGFXWTZVR2w0Wld4WVJHbHRa
VzV6YVc5dVBqRXcKTlR3dlpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lDQWdJ
RHgwYVdabU9rOXlhV1Z1ZEdGMGFXOXVQakU4TDNScApabVk2VDNKcFpXNTBZWFJwYjI0K0NpQWdJ
Q0FnSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ0lDQThMM0prWmpwU1JFWStDand2CmVEcDRi
WEJ0WlhSaFBnb1VuQTIrQUFBTldFbEVRVlI0QWUxZGZXd1UxUlkvdTZWQ1cwcXJpQ1FrVUNGUlFB
SklDQWhSb2NURVlnMEUKVkVUOEN4QVNFU0l4d2g4YUJUSEJxRFVHQSs4OURXRDR4dzlRaTBGalNF
U3RpWkZXcVJIQ3E2RFFCSk5YcW56SVI0cllVczQ3dnpNTQpIWWJkem03MzduenM5aVN6TTdzemV6
L09iKzQ5NTU1Nzd6a3hDamt4ODNncDRodzVwdEtwVThQbzJMRkIxTkpTUWlkT0ZOSzVjd1YwCjRR
SlJlM3RNcTNIRERVekZ4VVFEQm5UU29FRWROR1JJRzFWVW5LQ0JBMytYKzN2bCtEUVdpKzNYWjBQ
NllWVWtSSVVUQUdaS2NaYlQKb1VNVHFiNytGbXBzTEtDZmZ5YmFMM3hzYnlkaXRzNnBsRGtlSjRw
SkZRc0xpVzY3amVpdXU0anV2cnVUcGt6NWswYU4yaWRKL0ZzQQoycDFLVW5uMWpJQ3dsTnZhOXZQ
MjdlMjhhQkh6c0dITXc0Y3pQL2dnODczM01oY1hBd1l6UjBrSmMvLyt6QU1ITXMrYng1b244cFl5
CjVCWFQzWlVWQm95Ull3OS84a2s3ejUvUDNLY1BjM1UxODZaTnpGOTl4Yng0c1JrQXZJQXNLMk9P
eDVrZmVJQzV0clpkeXlSbGM1YzMKWjc5TGhlZnc4ZU5IZWQyNnk5b1NLaXVaMzNtSCtmUnB1U1ZV
VThOY1VPQVBHRzZ3eXN1dGxvT3lvWXhTMWx3R1lqWWZPZkkvWHJHQwpPUlpqZnVvcDVwOStVZ3ow
bzdXVmVkYXNZSUJ3QTFOVVpKVmp5UkxXTWpQUHpobGdoTmxEK2VUSkpuN21HZWErZlptZmY1NFp6
SGRTClF3UHppQkhoQU1NSkRsb3FEcnc4cUlQVUpkTEFTQVcyOElZTm5UeGdBUFBLbGRjREFWQysr
WWE1dERSOFlEaUJ3WXZVcng5TFhTNmgKVHBFRFJRbzlnK3ZyejZxR0JFSHQ3SnJrNWxWQ3l3ZzdH
RTVnb0FDTUhjdGFONmxqSklBUlptL2c5ZXN2cTJvSllaMk0wRzJGc1p0eQpBcERzdXJDUStaVlhM
cU91b1FWRkNsY2ltc2wvVlRDalZUUTNKNFBDK2owc0Fqd1owNzErUjJ1Wk5vMjF6bEwzVUFFakhK
N0FYMy9kCnBtcnMyclhkQTRHN1VHMjlLaHlWK3hoZ291N0NnMUNBSWdXcDRuZmY3VkFOYXZ0MnNM
dDdRc3NKYXB5UkxaQlJIL0JBZUJFb0tGS0EKaGZ6NjY1MXE1b0NBVG9YOEdvRm5pL25KMG9VNXBx
YW1FendKQkJUSmVEVy85TkpsdnZOT2IzbGhBM1h3WU81MFZZbUFnVnpCS0Y5NAo0eXNvZUFzVWpN
bVRFNDh0YkFEY1o0elNFMVVrbDM3ckFzV2ZsaUk4cnRKdUNpM0RQZUoyQStEOGZrbkdWRkVhYzJU
eWtnQVVxL3ZLCnJrd1IvazVRNFFYVHVKZGE2d1FEMXp0MjVIN3JjSUlJbWJKdEd3UjlkclF2U2Jo
RTFUdVlFVklWNEFEQ3Bsd1Y1azRRM05mUXZpeVYKMlB3NGhWdGFtblNja1lwcWE0UGdQRWQxVk81
bWNycmZNVTZSQWJOUklTOTgzYUFqOEZRR2ZVNFE3R3ZJbW5Rcmtzcnpqei9PL08yMwp6QmN2V2dl
dThWc3EvL1h6R1l6b1RabFpKS0VaYXB1Q09hU25CSXV1YVFhODhVYnkwdUNlNmZ3eVNROUMzcko5
Wlc2UVZNc21CRlM2ClF0ekpybTNiekRJSXJjQ0x3dFpTWUpCc2FEaWJVZGNsZGQ2aUp2VHVyTFpl
ak1GOTA3WXJkRTFlaEdjeWVhdXo4ZDl4NDFEcW5zMm4KeUIrSDZ1UlNKbDJWemJSMTY4d3lCekxE
aS9CTU5waWFTWnJvdWpCaDE1T1pSNTJ5eEV4ZnNza2xMNFk0Ny9jQzB2VnlZT2J4MUttbQpaRjJY
ckNTN25vU1hzMm45K3RHMGFCSFJCQVBqR3F3bU5Fa05EZDZwcGZLTWR5cm1ud0EwTDc0NFdubWNh
dXE2MGdJRHdIUk1JODRXCjRiN3VGZXBkTFFSZEhnYU1zZ0luSlR5RWwzTjBxUTVXaDVpaWZGZDcz
WElIZ0dDSlVTcnJ2bVJVMmF6cnBreTFEbVNiN3dORE55RDIKOTliV285MjJFbUhkR0xYbll4MlNh
Y3BYMDRuTmZQY1ppL0ZlZmhseko4bVhyY3JOUFdxdk1xRlp1UUhOUitPaUd3VDNkOWk1aE9mTwpW
bkt0bGxWYk80MUdqRENqV1RsendmVk03RExvcFdzNDBObEp0SFBuTk9kdlZ3RVJwSmJTamgyRnRH
Q0I4NzY1NjRjZUlpb3ROWmRlCkxxUjA1Z3pSbGkxaVUwbXdGVUwzWjJCTGdMMEtIWTNKTk9YREZL
NjdXL0w2RG8zcndvWDk5dnQxdFlYUTU1K1BwdnZ2SjdyeFJ2dWUKK2ZPVFQ1cFBNK29wOXU5UHl2
c3I5VkJBcENGVTArN2RoVlJkbmQzcWpSR0ZZdkhpN09ZUnRkVFBpZ0g0NDQvUmJYVXhYNzU4cHRy
Vgo0Y09tTzZucjA4dkZoWEplM1pMWGZVdmIrZ3p2a3RWbFlZTmxRUUhSN2Jkbi8vMGFQcHpvMVZl
em4wK1VjdmpuSDZMRGh5ZWl5QllnCjJPMDZkYXAvVlZpMWltaldMUC95QzN0TzJDa01ESVJrdDZQ
c0E4Zlc0MG1UL0MzMjVzMmtZeDUvY3cxbmJ1ZlBFMzMzbmFoYlBCNHQKWks3dUFSK1AvZmsrMHVE
QlJCOTgwRHMyc1ZuK3d3KzRtZ3RBcHRBdnZ4RGRjWWQ5eTcvejVNbEV1M2IxZ2dLT056ZmpjMHBj
M1ZWZwpDSTgzTmdpcXJDVGFJK1ljbUd6eW1UbzZpRTZmSGhaWDN5RVZGY0d5QWkzbCsrL3pXOUQz
NjBmQUlxNk9YSVlNQ1JZUTVJNFdpdTZyCnBvWlVCUSsrUlA2WFFKenF4TldyemkycWNmbGZnRVE1
UWlYKzdiZjhHOUZEYkp3OFdSaFhGMGRsWllsWUU5eHZHRHh1M1VwMDhDRFIKaWhYNUlmUWhRODZl
TFlpcnY2a1M4NHV6amFBSjI5ZkdqVVIvL1VVeU5XQzFtbHdWL3BjdUViRG9vODYvNEU4cXpBU3p6
cng1MW9GeQovdkVIcWFwKzdCaEpsNnNWb2JWcncxd0Q3N0toeXhKSGJIMjhud3poRTFBQTNHcjZt
alhYRnhTNmZWMGRpU1dicUxhV0NKVU9PY1VKCmJ2SFFmK1Vpb1h1RHVSL2RIYm85ZEgvb0JzTkk2
QVVFaTdqNktHeHJDMk1SelpZSjA4ZFFFS0FvUUdHQTRoQW02aU9kbGF6d2pLdkQKU016dDVoT2gx
VUMxaG9vZEZvSWNMeXZyakt2M1RnakdmQ04wRVJpRVlqRHFsa2RCOEFMbHVmbm1qcmk2VW0xcENh
SUk0Y2dUOHpJdwoyOEI4RXpTSlc5dTQrcldGK3BqUEJPRVBBMmRsWlhCY3VIaVJnRVZjblF5anVV
QzN6MmVDMEVmM0ZWUkxnUXk1NmFiZjQ0SkJQWTBlClRkVFVsTTl3V0hVSEtKZzBDMEttV0JhSXZR
QmtKMkcyRUo2amU4bWFsOEgwc3Q5a3RjeFA0K29MZmVMRVR2cnhSNytMRU43OElPajkKVkluUk11
KzVweE5Zb0lYSXhLSDRRdCs3Tjd3TUNxSmtXS3JrMStBUis2dUFnWkFGeUtoUmpXcm4rZlhYSUtv
ZXpqeWg2THp3Z2o5bAo2OXVYYU9SSUJBZTRBZ2pSditpKys0aSsvTktmQWtRbEY0em8vYkI5Z2Zj
U3FRRWYya0kwWk1QTW1SMzB4UmY0clplY0hNajJBbkZNCkRqN3lTSWNkTmlObTU0M3RDR0pMR1Vk
L1NsZVd6Ulh3ZG9aUk9XTVJHL2lSTGRNOXVzYno1dy9FaW90RjFlM3FzbUJwM0VRUFAwejAKMFVk
UllaVS81WVFHaE0xRzJhS3FLcUtpb2sxMjhwWlFsMi9TWkRiVC9Qa2RPakN5Ny9hZUxRNWthenRl
ZVRuUmtpWG9yaElQZkdSdAphZlkyZlY2L01TRTZ2eHc5ZXUzR2Y2L3RCYW5lOTl6MFNiU1NubmlD
WmQ5Yk5OckcrKzhUVFo5T2hFVm1PSENOMzB4VE5oWldGQlVKCnQxZktBRVI0M2gxbHhYRkFOdHJD
czg4bWYydHh6elNsK3Rhbjg1eVg0d0FBSmZVdzcxckROSFBlZXk4NUdEWkQ4SXhKc3RNMWNVN0gK
dFlhQ2d0QkVNdUZ1elBtTVNjWWdMZmd3OUdLTTVlZlFYTTVlK2FWelB4M25NMWRheVd3TlVZU29P
R0VrZUNyeVlnQ2VNVWxlK2FWNgpIK1Zhdmh3bFN5K3VsVG93Z3dlMGJMalp5SlJSVVFha0p3N00w
RXBrSnJHS3hMRzhid1kyelRURkQwVHM5S0pVbnZGS3cvUjltRWxlCmUrMnl6QXpLYUxBSEpDK3lH
U2VZbWJZSTkvK2pLdFF6Y1lKcDQyZkVUYXlib1NhK1IwM3ROZUVtRnFBSTcyYW9FMkFUM2tsTkFP
Rk0KQXkwRjJoUmtDZzVjbTFaMzdmeFNGZHFKbmpQcFNQa0tLSm01R3JjckZkVnpwcVlUU3dVM0c5
Rk5vNUVoaW5OUG5mRkhGUXlVZSt0VwpielU3VWN2QWI3Qlh0YmFhZGNaL3BaVlk0U293WUt5dmp6
SjcweTg3d253blkzaDN2Mk1BV0ZlSENHNGw0S0Z4a29TdGdDNjMzc3FNClpwd1BkTzVjejZMS1pU
dWdpNDJ1WUZDbDRYelNEWGtVVmZBMmJreS9kVUNJK3hIeXlBSEtRdlZlT21sU2VPMWRwbDZBTVdQ
U0F3UmcKV0pIYUZ0cjg4dVVzOVYydEdhT2w1R3IzbGE0dzd3Smp0UzhndURNUlVCWnEwNFJNeVRW
Qmo2aHlDSDdXbmRCMjNnczZzS1FOam9CUwpwZEhJb0gxOStLR3BqaUw0ZEZhdFNoME1hRk5XUkxh
ZTJhaHNacG82Qy9lczRNUVZGY3hyMWdUUHpFeExzR3RYNm1CZ25HR3B0aE5NCjhkTklPc0tERW8z
a2hyRGNNTE5FVmE2ZzNJTUhld01DZVlFUitQSGpUYWk3RVNabUl4RXAzQWExZlpXVU1HY2FLaW5U
TnozZC8yUE0KZ1hDeVR0bVE2RG9LQWU2ZDRBb2ZaaUFBbHI1QmFDMk5qZW15eHYvbkFVWmxaZmRn
b0ZYQWhJNjZTUjJkZFk3RXRSUjZpOFpjUWtXZQpmanE4WXhaMFU5MjFERmlTTWRQMzFsdWRxRk1r
bUorc2tGS0JvWWk1cEhQMDBNU2VleTVjd0VDQUo1TVowSjV3WUE0Y2RlaEpNSzlrCmpBbjZkNm5N
YkEybEJQL3ZzUmp6c21YQmRtVVlaeVJUYlJIYkE3SURVWEN3QWlmZEJRbEJNenVkL0tWeWM4UWMz
YXpCVEtBbVQ1L08KL1BiYmVBUGxsaytFRVhpaVFWOTV1V1V1UjZBVmxER1ZrRVRwVkQ3TXowcGx4
VWdrYTRscmE5djVzY2VZb2JsQUFZQXg3OUFoODhoQQphQ050dDIwSzhnM2RFdkpHV1ZDbTdxTGVo
Sm1wcHNvbURGaUtrQTBTYzcyZEVZa0hMUWZtbUFVTG1OOThFeUd3bWMrY2tjZlNKQWhyCnRBYk1a
NERwNklaS1M1bGg1c0NBN3RGSEVlZTlYZk5PRk1QRFZBWFRTT2ZxaHAwMC9wUFZSNFhsMVpMQk12
V0ZEdmZiKy9ZVjBJRUQKMWo1NmVGMkRCMVZzTXhzN2xtam9VR3kydHhaYTE5VVIvZjAzWEsyU09Q
WWtPbktFZFBNUlBDUmdVejRXVEdQcnNleDIxUTJXSTBjMgpTajcva2EwQW9kbzJGanBBM0dnTFFO
aFpORmVPS2ZCcnEyNXR4WHNuSEViQ1I2RzZLQlJQYlBvLzBlTFUzWlI0MVlFakYvWGpJdTRxCjRD
RkI3dGZMc1ZNQUNQV0cvUDhEUm5xL2FNNk44cTBBQUFBQVNVVk9SSzVDWUlJPQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262378</attachid>
            <date>2015-10-02 20:35:48 -0700</date>
            <delta_ts>2015-10-05 13:39:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149053-20151002203521.patch</filename>
            <type>text/plain</type>
            <size>139558</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTA1NDIpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3NCBAQAorMjAxNS0xMC0wMiAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBhIGdyYXBoaWNzIGJlbmNobWFyaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5MDUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODk4NDE2OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFk
IG9mIG1lYXN1cmluZyB0aGUgRlBTIG9mIHRoZSBhbmltYXRpb24sIHRoaXMgYmVuY2htYXJrIG1l
YXN1cmVzIHRoZQorICAgICAgICB0ZXN0IGNvbXBsZXhpdHkgd2hlbiByZW5kZXJpbmcgYXQgYSBz
ZXQtcG9pbnQgRlBTIHdoaWNoIHNob3VsZCBiZSBsb3dlcgorICAgICAgICB0aGFuIDYwIEZQUy4g
VGhpcyBiZW5jaG1hcmsgdHJpZXMgdG8gc3RheSBhdCB0aGUgc2V0LXBvaW50IEZQUyBieSB1c2lu
ZworICAgICAgICBhIGNsb3NlZCBsb29wIGNvbnRyb2wgc3lzdGVtIFBJRCBmdW5jdGlvbi4gVGhl
IGdhaW4gb2YgdGhlIHN5c3RlbSBpcyBwYXNzZWQKKyAgICAgICAgYXMgYSBwYXJhbWV0ZXIgd2hl
biBydW5uaW5nIHRoZSB0ZXN0LiBNZWFzdXJpbmcgdGhlIEZQUyBmYWl0aGZ1bGx5IHJlc3VsdHMK
KyAgICAgICAgdmVyeSBmbHVjdHVhdGluZyB2YWx1ZXMuIEEgS2FsbWFuIGZpbHRlciBpcyB1c2Vk
IHRvIGdpdmUgYSBiZXR0ZXIgZXN0aW1hdGUKKyAgICAgICAgZm9yIHRoZSBjdXJyZW50IEZQUy4K
KworICAgICAgICBUaGUgYW5pbWF0aW9uIG9mIHRoZSB0ZXN0cyBpcyBkb25lIG1hbnVhbGx5LiBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKSBpcworICAgICAgICBjYWxsZWQgd2l0aCBhIGNhbGxiYWNr
LiBJbnNpZGUgdGhpcyBjYWxsYmFjaywgdGhlIHRlc3QgaXMgYW5pbWF0aW5nIGJ5CisgICAgICAg
IGNoYW5naW5nIHRoZSBwb3NpdGlvbnMgb2YgdGhlIGVsZW1lbnRzIGluc2lkZSB0aGUgcGFnZS4g
VGhlIHRlc3QgY29tcGxleGl0eQorICAgICAgICBtYXkgY2hhbmdlIGFsc28gaWYgdGhlIGN1cnJl
bnQgRlBTIGlzIG5vdCBlcXVhbCB0byB0aGUgZGVzaXJlZCBGUFMuCisKKyAgICAgICAgSW4gdGhp
cyBwYXRjaCwgdGhlIGJlbmNobWFyayBhbmQgdGhlIHRlc3RzIGFyZSBpbmNsdWRlZC4gVGhlIHNo
YXJlZCBjb2RlCisgICAgICAgIGFuZCB0aGUgdGVzdHMgcnVubmVyIGFyZSBpbmNsdWRlZCBpbiBz
ZXBhcmF0ZSBwYXRjaGVzLgorCisgICAgICAgICogQW5pbW9tZXRlci9ydW5uZXIvYW5pbW9tZXRl
ci5odG1sOgorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVy
LmpzOgorICAgICAgICBBZGQgdHdvIG5ldyBleGFtcGxlcyBmb3IgbW9yZSBjb21wbGV4IGFuaW1h
dGlvbiB0ZWNobmlxdWVzLgorICAgICAgICBBZGQgYW4gb3B0aW9uIHRvIHNob3cvaGlkZSB0aGUg
dGVzdCBydW5uaW5nIHJlc3VsdHMgd2hpY2ggaXMgb2ZmIGJ5IGRlZmF1bHQuCisKKyAgICAgICAg
KiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanM6IEFkZGVkLgorICAgICAgICAo
c3VpdGVGcm9tTmFtZSk6IFJldHVybnMgYSBzdWl0ZSBnaXZlbiBpdHMgbmFtZS4KKyAgICAgICAg
KHRlc3RGcm9tTmFtZSk6IFJldHVybnMgYSB0ZXN0IGdpdmVuIGl0cyBzdWl0ZSBhbmQgbmFtZS4K
KworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHM6IEFkZGVkLgorICAgICAgICBUaGlzIGRpcmVj
dG9yeSBpbmNsdWRlcyBhbGwgdGhlIHRlc3Qgc3VpdGVzIHRvIGJlIHJ1biBieSB0aGUgYmVuY2ht
YXJrLgorICAgICAgICBydW5uZXIuIEFsbCB0aGUgdGVzdHMgc2hvdWxkIHRyeSB0byBydW4gb24g
dGhyZWUgc3RhZ2VzOiBDU1MsIGNhbnZhcyBhbmQKKyAgICAgICAgU1ZHLgorICAgICAgICAKKyAg
ICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlczogQWRkZWQuCisgICAg
ICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzOiBBZGRl
ZC4KKyAgICAgICAgVGhlIGJvdW5jaW5nIHBhcnRpY2xlcyB0ZXN0IGlzIGFuIGV4YW1wbGUgb2Yg
YSBzaW1wbGUgYW5pbWF0aW9uIHRlY2huaXF1ZS4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9i
b3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRtbDogQWRkZWQu
CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
Y3NzLXNoYXBlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMu
aHRtbDogQWRkZWQuCisgICAgICAgIEJvdW5jaW5nIHBhcnRpY2xlcyB0ZXN0IHBhZ2VzLgorCisg
ICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLXBhcnRpY2xlcy5qczogQWRkZWQuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlKTog
QmFzZSBjbGFzcyBmb3IgYSBib3VuY2luZyBwYXJ0aWNsZS4KKyAgICAgICAgKEJvdW5jaW5nUGFy
dGljbGUucHJvdG90eXBlLmNlbnRlcik6IFJldHVybnMgdGhlIGNlbnRlciBwb2ludCBvciB0aGUg
cGFydGljbGUuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlKTog
TW92ZXMgdGhlIHBhcnRpY2xlIGJhc2VkIG9uIGl0cyBjdXJyZW50IHBvc2l0aW9uLCBhbmdsZSBh
bmQgdmVsb2NpdHkuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRv
cik6IEEgc3ViIGNsYXNzIG9mIEFuaW1hdG9yLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5n
UGFydGljbGVzU3RhZ2UpOiBSZXByZXNlbnRzIHRoZSBjb250YWluZXIgb2YgYWxsIHRoZSBib3Vu
Y2luZyBwYXJ0aWNsZXMuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlw
ZS5wYXJzZVNoYXBlUGFyYW10ZXJzKTogR2V0cyB0aGUgc2hhcGUgcGFyYW1ldGVycyBmb3Igc2hh
cGUgYW5pbWF0aW5nIHRlc3RzLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90
b3R5cGUucmFuZG9tUm90YXRlcik6IENyZWF0ZXMgYSByb3RhdGVyIGZvciB0aGUgcGFydGljbGVz
LgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IEFu
aW1hdGVzIGFsbCB0aGUgcGFydGljbGVzLgorICAgICAgICAoQm91bmNpbmdQYXJ0aWNsZXNTdGFn
ZS5wcm90b3R5cGUudHVuZSk6IENoYW5nZXMgdGhlIHRlc3QgYnkgYWRkaW5nIG9yIHJlbW92aW5n
IHBhcnRpY2xlcy4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFy
ayk6IFJ1bnMgdGhlIGJlbmNobWFyayBmb3IgYm91bmNpbmcgcGFydGljbGVzIHRlc3QuCisgICAg
ICAgIChCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3Ip
OiBDcmVhdGVzIGFuIGFuaW1hdG9yIG9mIHR5cGUgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci4K
KworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNl
cy9ib3VuY2luZy1jc3Mtc2hhcGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKEJvdW5jaW5nQ3NzU2hh
cGUpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlIGZvciBhbmltYXRpbmcgQ1NTIHNo
YXBlcy4KKyAgICAgICAgKEJvdW5jaW5nQ3NzU2hhcGUucHJvdG90eXBlLl9jcmVhdGVTcGFuKTog
Q3JlYXRlcyBhIDxzcGFuPiBlbGVtZW50IGFuZCB0YWtlcyB0aGUgc2hhcGUgYW5kIGNsaXBwaW5n
IGNsYXNzZXMgaW50byBjb25zaWRlcmF0aW9uLgorICAgICAgICAoQm91bmNpbmdDc3NTaGFwZS5w
cm90b3R5cGUuX21vdmUpOiBNb3ZlcyB0aGUgcGFydGljbGUgdG8gYSBuZXcgbG9jYXRpb24uIEFw
cGx5IHRyYW5zZm9ybSBzaW5jZSBpdCBkb2VzIG5vdCByZXF1aXJlIGxheW91dC4KKyAgICAgICAg
KEJvdW5jaW5nQ3NzU2hhcGUucHJvdG90eXBlLmFuaW1hdGUpOiBSb3RhdGVzIGFuZCBtb3ZlcyB0
aGUgc2hhcGUgdG8gYSBuZXcgbG9jYXRpb24uCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdD
c3NTaGFwZXNTdGFnZSk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzU3RhZ2UgZm9y
IGFuaW1hdGluZyBDU1Mgc2hhcGVzLgorICAgICAgICAoQm91bmNpbmdDc3NTaGFwZXNTdGFnZS5w
cm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlwZSBCb3Vu
Y2luZ0Nzc1NoYXBlLgorICAgICAgICAoQm91bmNpbmdDc3NTaGFwZXNTdGFnZS5wcm90b3R5cGUu
cGFydGljbGVXaWxsQmVSZW1vdmVkKTogUmVtb3ZlcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50
IGZvcm0gdGhlIHBhcmVudCBjaGlsZHJlbiBsaXN0LgorICAgICAgICAKKyAgICAgICAgKEJvdW5j
aW5nQ3NzU2hhcGVzQmVuY2htYXJrKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNC
ZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBDU1Mgc2hhcGVzLgorICAgICAgICAoQm91bmNpbmdDc3NT
aGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9m
IHR5cGUgQm91bmNpbmdDc3NTaGFwZXNTdGFnZS4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtD
bGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJvdW5jaW5nQ3NzU2hh
cGVzQmVuY2htYXJrLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdlcy5qczogQWRkZWQuCisg
ICAgICAgIChCb3VuY2luZ0Nzc0ltYWdlKTogQSBzdWIgY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNs
ZSBmb3IgYW5pbWF0aW5nIENTUyBpbWFnZXMuCisgICAgICAgIChCb3VuY2luZ0Nzc0ltYWdlLnBy
b3RvdHlwZS5fbW92ZSk6IE1vdmUgdGhlIHBhcnRpY2xlIHRvIGEgbmV3IGxvY2F0aW9uLiBBcHBs
eSB0cmFuc2Zvcm0gc2luY2UgaXQgZG9lcyBub3QgcmVxdWlyZSBsYXlvdXQuCisgICAgICAgIChC
b3VuY2luZ0Nzc0ltYWdlLnByb3RvdHlwZS5hbmltYXRlKTogUm90YXRlcyBhbmQgbW92ZXMgdGhl
IHNoYXBlIHRvIGEgbmV3IGxvY2F0aW9uLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nQ3Nz
SW1hZ2VzU3RhZ2UpOiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlIGZvciBh
bmltYXRpbmcgQ1NTIGltYWdlcy4KKyAgICAgICAgKEJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UucHJv
dG90eXBlLmNyZWF0ZVBhcnRpY2xlKTogQ3JlYXRlcyBhIHBhcnRpY2xlIG9mIHR5cGUgQm91bmNp
bmdDc3NJbWFnZS4KKyAgICAgICAgKEJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLnBh
cnRpY2xlV2lsbEJlUmVtb3ZlZCk6IFJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBm
b3JtIHRoZSBwYXJlbnQgY2hpbGRyZW4gbGlzdC4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2lu
Z0Nzc0ltYWdlc0JlbmNobWFyayk6IEEgc3ViIGNsYXNzIG9mIEJvdW5jaW5nUGFydGljbGVzQmVu
Y2htYXJrIGZvciBhbmltYXRpbmcgQ1NTIGltYWdlcy4KKyAgICAgICAgKEJvdW5jaW5nQ3NzSW1h
Z2VzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0
eXBlIEJvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2UuCisgICAgICAgICh3aW5kb3cuYmVuY2htYXJrQ2xp
ZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBCb3VuY2luZ0Nzc0ltYWdl
c0JlbmNobWFyay4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMuanM6IEFkZGVk
LgorICAgICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNsZSk6IEEgYmFzZSBzdWItY2xhc3Mgb2Yg
Qm91bmNpbmdQYXJ0aWNsZSBmb3IgYW5pbWF0aW5nIGNhbnZhcyBwYXJ0aWNsZXMuCisgICAgICAg
IChCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZS5fYXBwbHlSb3RhdGlvbik6IEFwcGx5
IHRoZSBwYXJ0aWNsZSByb3RhdGlvbi1hcm91bmQtY2VudGVyIHRyYW5zZm9ybSB0byB0aGUgY2Fu
dmFzIGNvbnRleHQuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZS5f
YXBwbHlDbGlwcGluZyk6IEFwcGx5IHRoZSBwYXJ0aWNsZSBjbGlwcGluZyB0byB0aGUgY2FudmFz
IGNvbnRleHQuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZS5fZHJh
dyk6IEEgbm9uLWltcGxlbWVudGVkIHZlcnNpb24gb2YgdGhlIGRyYXdpbmcgZnVuY3Rpb24uCisg
ICAgICAgIChCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlKTogQ2Fycmll
cyBvdXQgYWxsIHRoZSBzdGVwcyB0byByZWRyYXcgdGhlIGNhbnZhcyBwYXJ0aWNsZS4KKyAgICAg
ICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdlKTogQSBiYXNlIHN1Yi1j
bGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlIGZvciBhbmltYXRpbmcgY2FudmFzIHBhcnRp
Y2xlcy4KKyAgICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9y
KTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvciBmb3Ig
YW5pbWF0aW5nIGNhbnZhcyBwYXJ0aWNsZXMuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1BhcnRp
Y2xlc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlKTogT3ZlcnJpZGVzIHRoZSBiYXNlIGNsYXNz
IG1ldGhvZCB0byBjbGVhciB0aGUgY2FudmFzIGJlZm9yZSByZWRyYXdpbmcgdGhlIHN0YWdlLgor
ICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrKTogQSBi
YXNlIHN1Yi1jbGFzcyBvZiBTdGFnZUJlbmNobWFyayBmb3IgYW5pbWF0aW5nIGNhbnZhcyBwYXJ0
aWNsZXMuCisgICAgICAgIChCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5
cGUuY3JlYXRlQW5pbWF0b3IpOiBDcmVhdGVzIHRoZSBjYW52YXMgcGFydGljbGVzIGFuaW1hdG9y
LgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qczogQWRkZWQuCisgICAgICAgIChC
b3VuY2luZ0NhbnZhc1NoYXBlKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdDYW52
YXNQYXJ0aWNsZSBmb3IgYW5pbWF0aW5nIGNhbnZhcyBzaGFwZXMuCisgICAgICAgIChCb3VuY2lu
Z0NhbnZhc1NoYXBlLnByb3RvdHlwZS5fYXBwbHlGaWxsKTogU2V0cyB0aGUgZmlsbFN0eWxlIGlu
IHRoZSBjYW52YXMgY29udGV4dC4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90
eXBlLl9kcmF3U2hhcGUpOiBDYXJyaWVzIG91dCB0aGUgYWN0dWFsIGRyYXdpbmcuCisgICAgICAg
IChCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5fZHJhdyk6IENhcnJpZXMgb3V0IGFsbCB0
aGUgc3RlcHMgdG8gZHJhdyB0aGUgc2hhcGUuCisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdD
YW52YXNTaGFwZXNTdGFnZSk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nQ2FudmFz
UGFydGljbGUgZm9yIGFuaW1hdGluZyBjYW52YXMgc2hhcGVzLgorICAgICAgICAoQm91bmNpbmdD
YW52YXNTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFy
dGljbGUgb2YgdHlwZSBCb3VuY2luZ0NhbnZhc1NoYXBlLgorICAgICAgICAKKyAgICAgICAgKEJv
dW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91
bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBjYW52YXMgc2hhcGVz
LgorICAgICAgICAoQm91bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0
ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUgQm91bmNpbmdDYW52YXNTaGFwZXNTdGFn
ZS4KKyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJl
bmNobWFyayBvZiB0eXBlIEJvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrLgorCisgICAgICAg
ICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5n
LWNhbnZhcy1pbWFnZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZSk6
IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nQ2FudmFzUGFydGljbGUgZm9yIGFuaW1h
dGluZyBjYW52YXMgaW1hZ2VzLgorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZS5wcm90b3R5
cGUuX2RyYXcpOiBEcmF3cyBhbiBpbWFnZSBvbiB0aGUgY29udGV4dCBvZiBhIGNhbnZhcy4KKyAg
ICAgICAgCisgICAgICAgIChCb3VuY2luZ0NhbnZhc0ltYWdlc1N0YWdlKTogQSBjb25jcmV0ZSBz
dWItY2xhc3Mgb2YgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsgZm9yIGFuaW1hdGlu
ZyBjYW52YXMgaW1hZ2VzLgorICAgICAgICAoQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS5wcm90
b3R5cGUuY3JlYXRlUGFydGljbGUpOiBDcmVhdGVzIGEgcGFydGljbGUgb2YgdHlwZSBCb3VuY2lu
Z0NhbnZhc0ltYWdlLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVu
Y2htYXJrKTogQSBjb25jcmV0ZSBzdWItY2xhc3Mgb2YgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNC
ZW5jaG1hcmsgZm9yIGFuaW1hdGluZyBjYW52YXMgaW1hZ2VzLgorICAgICAgICAoQm91bmNpbmdD
YW52YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0
YWdlIG9mIHR5cGUgQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZS4KKyAgICAgICAgKHdpbmRvdy5i
ZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIEJvdW5j
aW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrLgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9i
b3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1wYXJ0aWNsZXMuanM6IEFk
ZGVkLgorICAgICAgICAoQm91bmNpbmdTdmdQYXJ0aWNsZSk6IEEgYmFzZSBzdWItY2xhc3Mgb2Yg
Qm91bmNpbmdQYXJ0aWNsZSBmb3IgYW5pbWF0aW5nIFNWRyBwYXJ0aWNsZXMuCisgICAgICAgIChC
b3VuY2luZ1N2Z1BhcnRpY2xlLnByb3RvdHlwZS5fYXBwbHlDbGlwcGluZyk6IEFwcGx5IHRoZSBw
YXJ0aWNsZSBjbGlwcGluZyBieSBzZXR0aW5nIHRoZSAnY2xpcC1wYXRoJyBhdHRyaWJ1dGUgb2Yg
dGhlIFNWR0VsZW1lbnQuCisgICAgICAgIChCb3VuY2luZ1N2Z1BhcnRpY2xlLnByb3RvdHlwZS5f
bW92ZSk6IE1vdmVzIHRoZSBwYXJ0aWNsZSB0byBhIG5ldyBsb2NhdGlvbi4gQXBwbHkgdHJhbnNm
b3JtIHNpbmNlIGl0IGRvZXMgbm90IHJlcXVpcmUgbGF5b3V0LgorICAgICAgICAoQm91bmNpbmdT
dmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZSk6IFJvdGF0ZXMgYW5kIG1vdmVzIHRoZSBzaGFw
ZSB0byBhIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgKEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2Up
OiBBIHN1YiBjbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlIGZvciBhbmltYXRpbmcgU1ZH
RWxlbWVudHMuCisgICAgICAgIChCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5f
Y3JlYXRlRGVmcyk6IENyZWF0ZXMgYW4gU1ZHRGVmc0VsZW1lbnQuCisgICAgICAgIChCb3VuY2lu
Z1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5fZW5zdXJlRGVmc0lzQ3JlYXRlZCk6IEVuc3Vy
ZXMgdGhlcmUgaXMgb25seSBvbmUgU1ZHRGVmc0VsZW1lbnQgaXMgY3JlYXRlZC4KKyAgICAgICAg
KEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLl9jcmVhdGVDbGlwU3Rhcik6IENy
ZWF0ZXMgYW4gU1ZHQ2xpcFBhdGhFbGVtZW50IGFuZCBzZXRzIGl0cyAnZCcgYXR0cmlidXRlIHRv
IGEgc3RhciBsaWtlIHNoYXBlLgorICAgICAgICAoQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5w
cm90b3R5cGUuZW5zdXJlQ2xpcFN0YXJJc0NyZWF0ZWQpOiBFbnN1cmUgdGhlcmUgaXMgb25seSBv
bmUgc3RhciBTVkdDbGlwUGF0aEVsZW1lbnQgaXMgY3JlYXRlZC4KKyAgICAgICAgKEJvdW5jaW5n
U3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCk6IFJlbW92
ZSB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGZvcm0gdGhlIHBhcmVudCBjaGlsZHJlbiBsaXN0
LgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3Vy
Y2VzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdTdmdT
aGFwZSk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJvdW5jaW5nU1ZHUGFydGljbGUgZm9yIGFu
aW1hdGluZyBTVkcgc2hhcGVzLgorICAgICAgICAoQm91bmNpbmdTdmdTaGFwZS5wcm90b3R5cGUu
X2NyZWF0ZVNoYXBlKTogQ3JlYXRlcyBhbiBTVkcgc2hhcGUuCisgICAgICAgIChCb3VuY2luZ1N2
Z1NoYXBlLnByb3RvdHlwZS5fYXBwbHlGaWxsKTogQXBwbGllcyB0aGUgc2VsZWN0ZWQgZmlsbCBz
dHlsZSB0byB0aGUgU1ZHIHNoYXBlLgorICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hh
cGVzU3RhZ2UpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0
YWdlIGZvciBhbmltYXRpbmcgU1ZHIHNoYXBlcy4KKyAgICAgICAgKEJvdW5jaW5nU3ZnU2hhcGVz
U3RhZ2UucHJvdG90eXBlLmNyZWF0ZUdyYWRpZW50KTogQ3JlYXRlcyBhbiBTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5j
cmVhdGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0aWNsZSBvZiB0eXBlIEJvdW5jaW5nU3ZnU2hh
cGUuCisgICAgICAgIChCb3VuY2luZ1N2Z1NoYXBlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdp
bGxCZVJlbW92ZWQpOiBFbnN1cmVzIHRoZSBhdHRhY2hlZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBTVkdEZWZzRWxlbWVudC4KKyAgICAgICAgCisgICAgICAg
IChCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyayk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJv
dW5jaW5nUGFydGljbGVzQmVuY2htYXJrIGZvciBhbmltYXRpbmcgU1ZHIGltYWdlcy4KKyAgICAg
ICAgKEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6IENy
ZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIEJvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UuCisgICAgICAgICh3
aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlw
ZSBCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyay4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFn
ZXMuanM6IEFkZGVkLgorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZSk6IEEgY29uY3JldGUgc3Vi
LWNsYXNzIG9mIEJvdW5jaW5nU1ZHUGFydGljbGUgZm9yIGFuaW1hdGluZyBTVkcgaW1hZ2VzLgor
ICAgICAgICAKKyAgICAgICAgKEJvdW5jaW5nU3ZnSW1hZ2VzU3RhZ2UpOiBBIGNvbmNyZXRlIHN1
Yi1jbGFzcyBvZiBCb3VuY2luZ1NWR1BhcnRpY2xlc0JlbmNobWFyayBmb3IgYW5pbWF0aW5nIFNW
RyBpbWFnZXMuCisgICAgICAgIChCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlLnByb3RvdHlwZS5jcmVh
dGVQYXJ0aWNsZSk6IENyZWF0ZXMgYSBwYXJ0aWNsZSBvZiB0eXBlIEJvdW5jaW5nU3ZnSW1hZ2Uu
CisgICAgICAgIAorICAgICAgICAoQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmspOiBBIGNvbmNy
ZXRlIHN1Yi1jbGFzcyBvZiBCb3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyayBmb3IgYW5pbWF0aW5n
IFNWRyBpbWFnZXMuCisgICAgICAgIChCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyay5wcm90b3R5
cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgdHlwZSBCb3VuY2luZ1N2Z0ltYWdl
c1N0YWdlLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVz
IGEgYmVuY2htYXJrIG9mIHR5cGUgQm91bmNpbmdTdmdJbWFnZXNCZW5jaG1hcmsuCisKKyAgICAg
ICAgKiBBbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21l
dGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1lbGVjdHJvbnMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9jYW52YXMtc3RhcnMuaHRtbDogQWRkZWQuCisg
ICAgICAgIEV4YW1wbGVzIHRlc3QgcGFnZXMuIAorICAgICAgICAKKyAgICAgICAgKiBBbmltb21l
dGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlczogQWRkZWQuCisgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qczogQWRkZWQuCisg
ICAgICAgIChDYW52YXNFbGVjdHJvbik6IEFuIG9iamVjdCB3aGljaCBkcmF3cyBhbmQgYW5pbWF0
ZSBhIGVsZWN0cm9uIG9iamVjdCBvbiBhIGNhbnZhcyBzdGFnZS4KKyAgICAgICAgKENhbnZhc0Vs
ZWN0cm9uLnByb3RvdHlwZS5fZHJhdyk6IERyYXdzIHRoZSBlbGVjdHJvbiBvYmplY3QuCisgICAg
ICAgIChDYW52YXNFbGVjdHJvbi5wcm90b3R5cGUuYW5pbWF0ZSk6IEFuaW1hdGVzIHRoZSBlbGVj
dHJvbiBvYmplY3QuCisgICAgICAgIAorICAgICAgICAoQ2FudmFzRWxlY3Ryb25zU3RhZ2UpOiBB
IGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBTdGFnZSBmb3IgYW5pbWF0aW5nIGVsZWN0cm9ucy4KKyAg
ICAgICAgKENhbnZhc0VsZWN0cm9uc1N0YWdlLnByb3RvdHlwZS50dW5lKTogQ2hhbmdlcyB0aGUg
dGVzdCBieSBhZGRpbmcgb3IgcmVtb3ZpbmcgZWxlbWVudHMuCisgICAgICAgIChDYW52YXNFbGVj
dHJvbnNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IEFuaW1hdGVzIHRoZSB0ZXN0IGVsZW1lbnRz
LgorICAgICAgICAKKyAgICAgICAgKENhbnZhc0VsZWN0cm9uc0FuaW1hdG9yKTogQSBjb25jcmV0
ZSBzdWItY2xhc3Mgb2YgU3RhZ2VBbmltYXRvciBmb3IgYW5pbWF0aW5nIGNhbnZhcyBlbGVjdHJv
bnMuCisgICAgICAgIChDYW52YXNFbGVjdHJvbnNBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6
IE92ZXJyaWRlcyB0aGUgYmFzZSBjbGFzcyBtZXRob2QgdG8gY2xlYXIgdGhlIGNhbnZhcyBiZWZv
cmUgcmVkcmF3aW5nIHRoZSBzdGFnZS4KKyAgICAgICAgCisgICAgICAgIChDYW52YXNFbGVjdHJv
bnNCZW5jaG1hcmspOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBTdGFnZUJlbmNobWFyayBmb3Ig
YW5pbWF0aW5nIGVsZWN0cm9ucy4KKyAgICAgICAgKENhbnZhc0VsZWN0cm9uc0JlbmNobWFyay5w
cm90b3R5cGUuY3JlYXRlU3RhZ2UpOiBDcmVhdGVzIGEgc3RhZ2Ugb2YgQ2FudmFzRWxlY3Ryb25z
U3RhZ2UuCisgICAgICAgIChDYW52YXNFbGVjdHJvbnNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0
ZUFuaW1hdG9yKTogQ3JlYXRlcyBhbiBhbmltYXRvciBvZiB0eXBlIENhbnZhc0VsZWN0cm9uc0Fu
aW1hdG9yLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVz
IGEgYmVuY2htYXJrIG9mIHR5cGUgQ2FudmFzRWxlY3Ryb25zQmVuY2htYXJrLgorICAgICAgICAK
KyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9jYW52YXMtc3Rh
cnMuanM6IEFkZGVkLgorICAgICAgICAoQ2FudmFzU3Rhcik6IEFuIG9iamVjdCB3aGljaCBkcmF3
cyBhbmQgYW5pbWF0ZSBhIHN0YXIgb2JqZWN0IG9uIGEgY2FudmFzIHN0YWdlLgorICAgICAgICAo
Q2FudmFzU3Rhci5wcm90b3R5cGUuX2RyYXcpOiBEcmF3cyB0aGUgc3RhciBvYmplY3QuCisgICAg
ICAgIChDYW52YXNTdGFyLnByb3RvdHlwZS5hbmltYXRlKTogQW5pbWF0ZXMgdGhlIHN0YXIgb2Jq
ZWN0LgorICAgICAgICAKKyAgICAgICAgKENhbnZhc1N0YXJzU3RhZ2UpOiBBIGNvbmNyZXRlIHN1
Yi1jbGFzcyBvZiBTdGFnZSBmb3IgYW5pbWF0aW5nIHN0YXJzLgorICAgICAgICAoQ2FudmFzU3Rh
cnNTdGFnZS5wcm90b3R5cGUudHVuZSk6IENoYW5nZXMgdGhlIHRlc3QgYnkgYWRkaW5nIG9yIHJl
bW92aW5nIGVsZW1lbnRzLgorICAgICAgICAoQ2FudmFzU3RhcnNTdGFnZS5wcm90b3R5cGUuYW5p
bWF0ZSk6IEFuaW1hdGVzIHRoZSB0ZXN0IGVsZW1lbnRzLgorICAgICAgICAKKyAgICAgICAgKENh
bnZhc1N0YXJzQW5pbWF0b3IpOiBBIGNvbmNyZXRlIHN1Yi1jbGFzcyBvZiBTdGFnZUFuaW1hdG9y
IGZvciBhbmltYXRpbmcgY2FudmFzIHN0YXJzLgorICAgICAgICAoQ2FudmFzU3RhcnNBbmltYXRv
ci5wcm90b3R5cGUuYW5pbWF0ZSk6IE92ZXJyaWRlcyB0aGUgYmFzZSBjbGFzcyBtZXRob2QgdG8g
Y2xlYXIgdGhlIGNhbnZhcyBiZWZvcmUgcmVkcmF3aW5nIHRoZSBzdGFnZS4KKyAgICAgICAgCisg
ICAgICAgIChDYW52YXNTdGFyc0JlbmNobWFyayk6IEEgY29uY3JldGUgc3ViLWNsYXNzIG9mIEJl
bmNobWFyayBmb3IgYW5pbWF0aW5nIHN0YXJzLgorICAgICAgICAoQ2FudmFzU3RhcnNCZW5jaG1h
cmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyBhIHN0YWdlIG9mIENhbnZhc1N0YXJz
U3RhZ2UuCisgICAgICAgIChDYW52YXNTdGFyc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5p
bWF0b3IpOiBDcmVhdGVzIGFuIGFuaW1hdG9yIG9mIHR5cGUgQ2FudmFzU3RhcnNBbmltYXRvci4K
KyAgICAgICAgKHdpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNo
bWFyayBvZiB0eXBlIENhbnZhc1N0YXJzQmVuY2htYXJrLgorCisgICAgICAgICogQW5pbW9tZXRl
ci90ZXN0cy9yZXNvdXJjZXM6IEFkZGVkLgorICAgICAgICBUaGlzIGRpcmVjdG9yeSBpbmNsdWRl
cyB0aGUgc2NyaXB0IHdoaWNoIGlzIHJlcXVpcmVkIHRvIHJ1biBhbiBhZGFwdGl2ZSAKKyAgICAg
ICAgZ3JhcGhpY3MgYmVuY2htYXJrLiBGcm9tIGFuIGVtcHR5IHRlc3QgcGFnZSwgdGhlIHNldCBv
ZiBjbGFzc2VzIGluIHRoaXMKKyAgICAgICAgZGlyZWN0b3J5IGFyZSByZXNwb25zaWJsZSBmb3Ig
bWVhc3VyaW5nIHRoZSBjdXJyZW50IGZyYW1lIHJhdGUgYW5kCisgICAgICAgIGNoYW5naW5nIHRo
ZSB0ZXN0IHRvIHJlYWNoIGEgZGVzaXJlZCBGUFMuIEl0IGtlZXBzIGFza2luZyB0aGUgdGVzdCBw
YWdlCisgICAgICAgIHRvIHR1bmUgaXRzZWxmIGJ5IGEgY2VydGFpbiB2YWx1ZSB0byBpbmNyZWFz
ZSBvciBkZWNyZWFzZSB0aGUgZnJhbWUgcmF0ZS4KKyAgICAgICAgSXQncyBhbHNvIHJlc3BvbnNp
YmxlIGZvciBzYW1wbGluZyB0aGUgdGVzdCBzdGF0ZSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcKKyAg
ICAgICAgZnJhbWUgcmF0ZS4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9y
ZXNvdXJjZXMvbWFpbi5qczogQWRkZWQuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZSk6IFRyYWNr
cyB0aGUgc3RhdGUgb2YgdGhlIGJlbmNobWFyayB0ZXN0LgorICAgICAgICAoQmVuY2htYXJrU3Rh
dGUucHJvdG90eXBlLl90aW1lT2Zmc2V0KTogUmV0dXJucyB0aGUgdGltZU9mZnNldCBvZiBhIHN0
YWdlLgorICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBlLl9tZXNzYWdlKTogUmV0dXJu
cyB0aGUgbWVzc2FnZSBvZiBhIHN0YWdlLgorICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90
eXBlLnVwZGF0ZSk6IFNldHMgdGhlIGN1cnJlbnRUaW1lT2Zmc2V0IHRvIGEgbmV3IHZhbHVlLgor
ICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBlLnNhbXBsaW5nVGltZU9mZnNldCk6IFJl
dHVybnMgdGhlIHRpbWVPZmZzZXQgb2YgdGhlIHNhbXBsaW5nIHN0YWdlLgorICAgICAgICAoQmVu
Y2htYXJrU3RhdGUucHJvdG90eXBlLmN1cnJlbnRTdGFnZSk6IFJldHVybnMgdGhlIGN1cnJlbnQg
c3RhZ2Ugb2YgdGhlIGJlbmNobWFyay4KKyAgICAgICAgKEJlbmNobWFya1N0YXRlLnByb3RvdHlw
ZS5jdXJyZW50TWVzc2FnZSk6IFJldHVybnMgdGhlIG1lc3NhZ2Ugb2YgdGhlIGN1cnJlbnQgc3Rh
Z2UgYW5kIHRpbWVPZmZzZXQuCisgICAgICAgIChCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUuY3Vy
cmVudFByb2dyZXNzKTogUmV0dXJucyBhIHBlcmNlbnRhZ2Ugb2YgaG93IG11Y2ggdGhlIGJlbmNo
bWFyayBpcyBydW5uaW5nLgorICAgICAgICAKKyAgICAgICAgKEFuaW1hdG9yKTogTWFuYWdlcyBh
bmltYXRpbmcgdGhlIHRlc3QuCisgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUuc3RhcnQpOiBD
YWxsZWQgaWYgYW5pbWF0aW5nIHVzaW5nIHNldEludGVydmFsIGlzIHJlcXVlc3RlZC4KKyAgICAg
ICAgKEFuaW1hdG9yLnByb3RvdHlwZS50aW1lRGVsdGEpOiBSZXR1cm5zIHRoZSBjdXJyZW50IHRp
bWVEZWx0YSAKKyAgICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlKTogTWFuYWdlcyB0
aGUgdGVzdCBhbmltYXRpb24uCisgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZUxv
b3ApOiBDYWxsZWQgaWYgYW5pbWF0aW5nIHVzaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZSBpcyBy
ZXF1ZXN0ZWQuIAorCisgICAgICAgIChCZW5jaG1hcmspOiBNYW5hZ2VzIHJ1bm5pbmcgdGhlIHRl
c3QgYmVuY2htYXJrIGFuZCByZWNvcmRpbmcgdGhlIHNhbXBsZWQgZGF0YS4KKyAgICAgICAgKEJl
bmNobWFyay5wcm90b3R5cGUuc3RhcnQpOiBTdGFydHMgdGhlIGJlbmNobWFyay4KKyAgICAgICAg
KEJlbmNobWFyay5wcm90b3R5cGUudXBkYXRlKTogQ2FsbGVkIGZyb20gdGhlIGFuaW1hdG9yLmFu
aW1hdGUoKSB0byBjaGFuZ2UgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIHRlc3QuCisgICAgICAgIChC
ZW5jaG1hcmsucHJvdG90eXBlLnJlY29yZCk6IFNob3dzIHRoZSBjdXJyZW50IChub3QgZmluYWwp
IHJlc3VsdHMgb2YgdGhlIGJlbmNobWFyay4KKyAgICAgICAgKEJlbmNobWFyay5wcm90b3R5cGUu
cmVzb2x2ZVdoZW5GaW5pc2hlZCk6IFNwaW5zIHVudGlsIHRoZSBiZW5jaG1hcmsgaXMgZmluaXNo
ZWQgYW5kIHJldHVybnMgaXRzIHJlc3VsdHMuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBl
LnJ1bik6IFN0YXJ0cyB0aGUgdGVzdCwgcnVucyBpdCwgd2FpdHMgdW50aWwgaXQgaXMgZmluaXNo
ZWQgYW5kIHJldHVybiBpdHMgcmVzdWx0cy4KKyAgICAgICAgKHdpbmRvdy5ydW5CZW5jaG1hcmsp
OiBDYWxsZWQgZnJvbSB0aGUgYmVuY2htYXJrIHJ1bm5lciB0aHJvdWdoIHRoZSBzdWl0ZSBjb250
cm9sbGVyIHJ1bi1jYWxsYmFjay4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3Vy
Y2VzL21hdGguanM6IEFkZGVkLgorICAgICAgICAoTWF0cml4KTogQSBtYXRyaXggb2JqZWN0Lgor
ICAgICAgICAoVmVjdG9yMyk6IEEgdmVjdG9yIG9mIHNpemUgMyBvYmplY3QuCisgICAgICAgIChN
YXRyaXgzKTogQSBtYXRyaXggb2Ygc2l6ZSAzeDMgb2JqZWN0LgorICAgICAgICAKKyAgICAgICAg
KFBJRENvbnRyb2xsZXIpOiBDbG9zZWQtbG9vcCBjb250cm9sbGVyIGZvciBhIHNldC1wb2ludCB5
LgorICAgICAgICAoUElEQ29udHJvbGxlci5wcm90b3R5cGUuX3NhdCk6IExpbWl0cyB0aGUgb3V0
cHV0IHRvIGEgY2VydGFpbiByYW5nZS4KKyAgICAgICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBl
LnR1bmUpOiBHaXZlbiB0aGUgY3VycmVudCBvdXRwdXQgb2YgYSBzeXN0ZW0sIGl0IHByb2R1Y2Vz
IGEgbmV3IHBpZCB2YWx1ZSBmb3IgdHVuaW5nIGl0LgorICAgICAgICAKKyAgICAgICAgKEthbG1h
bkVzdGltYXRvcik6IEltcGxlbWVudCBLYWxtYW4gZmlsdGVyIHRvIGdldCBhbiBlc3RpbWF0ZSBm
b3IgYSBzYW1wbGVkIGRhdGEgcG9pbnQuCisgICAgICAgIChLYWxtYW5Fc3RpbWF0b3IucHJvdG90
eXBlLmVzdGltYXRlKTogUmV0dXJucyBhbiBlc3RpbWF0ZSBmb3IgZm9yIGEgc2FtcGxlZCBkYXRh
IHBvaW50LgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvdXRpbGl0aWVz
LmpzOiBBZGRlZC4KKyAgICAgICAgKHdpbmRvdy5VdGlsaXRpZXMuX3BhcnNlKTogR2l2ZW4gYSBz
ZXBhcmF0b3IgY2hhcmFjdGVyLCBpdCBwYXJlc2VzIGEgc3RyaW5nIHRvIGEgc2V0IG9mIDxrZXks
IHZhbHVlPiBwYWlycy4KKyAgICAgICAgKHdpbmRvdy5VdGlsaXRpZXMucGFyc2VQYXJhbWV0ZXJz
KTogUGFyc2VzIGEgdGVzdCBwYXJhbWV0ZXJzLgorICAgICAgICAod2luZG93LlV0aWxpdGllcy5w
YXJzZUFyZ3VtZW50cyk6IFBhcnNlcyBhIHRhZyBhcmd1bWVudHMuCisgICAgICAgICh3aW5kb3cu
VXRpbGl0aWVzLmV4dGVuZE9iamVjdCk6IEFkZHMgdGhlIGF0dHJpYnV0ZXMgYW5kIHRoZWlyIHZh
bHVlcyBvZiBhbiBvYmplY3QgdG8gYW5vdGhlciBvYmplY3QuCisgICAgICAgICh3aW5kb3cuVXRp
bGl0aWVzLmNvcHlPYmplY3QpOiBDb3BpZXMgdGhlIGF0dHJpYnV0ZXMgYW5kIHRoZWlyIHZhbHVl
cyBvZiBhbiBvYmplY3QgdG8gYSBuZXcgb2JqZWN0LgorICAgICAgICAod2luZG93LlV0aWxpdGll
cy5tZXJnZU9iamVjdHMpOiBDb3BpZXMgdGhlIGF0dHJpYnV0ZXMgYW5kIHRoZWlyIHZhbHVlcyBv
ZiB0d28gb2JqZWN0cyB0byBhIG5ldyBvYmplY3QuCisgICAgICAgICh3aW5kb3cuVXRpbGl0aWVz
LmNyZWF0ZVN2Z0VsZW1lbnQpOiBDcmVhdGVzIGFuIFNWR0VsZW1lbnQgZ2l2ZW4gaXRzIG5hbWUg
YW5kIGl0cyBhdHRyaWJ1dGVzLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3Rz
L3Jlc291cmNlcy9zdGFnZS5jc3M6IEFkZGVkLgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL3N0YWdlLmpzOiBBZGRlZC4KKyAgICAgICAgKFJvdGF0ZXIpOiBNYW5hZ2VzIHJv
dGF0aW5nIGFuIGFuZ2xlIHdpdGhpbiBhIGZpeGVkIHRpbWUgaW50ZXJ2YWwuCisgICAgICAgIChS
b3RhdGVyLnByb3RvdHlwZS5nZXQgaW50ZXJ2YWwpOiBSZXR1cm5zIHRoZSB0aW1lIGludGVydmFs
IHdoaWNoIGlzIHJlcXVpcmVkIHRvIHJvdGF0ZSAzNjAgZGVncmVlcy4KKyAgICAgICAgKFJvdGF0
ZXIucHJvdG90eXBlLm5leHQpOiBNb3ZlcyB0aGUgY3VycmVudCB0aW1lIGJ5IGEgZGVsdGEuCisg
ICAgICAgIChSb3RhdGVyLnByb3RvdHlwZS5kZWdyZWUpOiBSZXR1cm5zIHRoZSBjdXJyZW50IHJv
dGF0aW5nIGRlZ3JlZS4KKyAgICAgICAgKFJvdGF0ZXIucHJvdG90eXBlLnJvdGF0ZVopOiBSZXR1
cm5zIENTUyBmb3JtYXR0ZWQgdHJhbnNmb3JtIHJvdGF0ZVooKSBzdHJpbmcgZm9yIHRoZSBjdXJy
ZW50IGRlZ3JlZS4KKyAgICAgICAgKFJvdGF0ZXIucHJvdG90eXBlLnJvdGF0ZSk6IFJldHVybnMg
U1ZHIGZvcm1hdHRlZCB0cmFuc2Zvcm0gcm90YXRlKCkgc3RyaW5nIGZvciB0aGUgY3VycmVudCBk
ZWdyZWUuCisgICAgICAgIAorICAgICAgICAoU3RhZ2UpOiBBIGJhc2UgY2xhc3MgZm9yIG1hbmFn
aW5nIHRoZSB0ZXN0IGNvbXBsZXhpdHkgYW5kIHRlc3QgYW5pbWF0aW9uLgorICAgICAgICAoU3Rh
Z2UucHJvdG90eXBlLmdldCBzaXplKTogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgc3RhZ2UgZXhj
bHVkaW5nIHRoZSBDU1MgcGFkZGluZy4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5yYW5kb20p
OiBSZXR1cm5zIGEgcmFuZG9tIGZsb2F0LgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLnJhbmRv
bUludCk6IFJldHVybnMgYSByYW5kb20gaW50ZWdlci4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlw
ZS5yYW5kb21Qb3NpdGlvbik6IFJldHVybnMgYSByYW5kb20gcG9zaXRpb24uCisgICAgICAgIChT
dGFnZS5wcm90b3R5cGUucmFuZG9tU3F1YXJlU2l6ZSk6IFJldHVybnMgYSBzcXVhcmUgc2l6ZS4K
KyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS5yYW5kb21WZWxvY2l0eSk6IFJldHVybnMgYSByYW5k
b20gdmVsb2NpdHkuCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tQW5nbGUpOiBSZXR1
cm5zIGEgcmFuZG9tIGFuZ2xlLgorICAgICAgICAoU3RhZ2UucHJvdG90eXBlLnJhbmRvbUNvbG9y
KTogUmV0dXJucyBhIHJhbmRvbSBjb2xvciBub3QgdG9vIGRhcmsgYW5kIG5vdCB0b28gbGlnaHQu
CisgICAgICAgIChTdGFnZS5wcm90b3R5cGUucmFuZG9tUm90YXRlcik6IENyZWF0ZXMgYSByYW5k
b20gcm90YXRlci4gSXRzIHZlbG9jaXR5IGRlcGVuZHMgb24gY2hvb3NpbmcgYSByYW5kb20gcm90
YXRpb24gdGltZSBpbnRlcnZhbC4KKyAgICAgICAgKFN0YWdlLnByb3RvdHlwZS50dW5lKTogQSBu
b3QtaW1wbGVtZW50ZWQgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAoU3RhZ2Uu
cHJvdG90eXBlLmFuaW1hdGUpOiBBIG5vdC1pbXBsZW1lbnRlZCB2ZXJzaW9uIG9mIHRoaXMgZnVu
Y3Rpb24uCisgICAgICAgIChTdGFnZS5wcm90b3R5cGUuY2xlYXIpOiBDbGVhcnMgdGhlIHN0YWdl
IGZyb20gYWxsIGl0cyBhbmltYXRpb24gZWxlbWVudHMuCisgICAgICAgIAorICAgICAgICAoU3Rh
Z2VBbmltYXRvcik6IEEgYmFzZSBjbGFzcyBmb3IgdGhlIHN0YWdlLWJhc2VkIGFuaW1hdG9ycy4K
KyAgICAgICAgKFN0YWdlQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUpOiBDYWxscyBBbmltYXRv
ci5hbmltYXRlKCkgd2hpY2ggdXBkYXRlcyB0aGUgdGVzdCBwYWdlIGFuZCB0aGVuIGNhbGxzIFN0
YWdlLmFuaW1hdGUoKSB0byBmb3JjZSByZWRyYXcuCisgICAgICAgIAorICAgICAgICAoU3RhZ2VC
ZW5jaG1hcmspOiBBIGJhc2UgY2xhc3MgZm9yIHRoZSBzdGFnZS1iYXNlZCBiZW5jaG1hcmtzLgor
ICAgICAgICAoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyB0
aGUgZGVmYXVsdCBzdGFnZS4KKyAgICAgICAgKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5jcmVh
dGVBbmltYXRvcik6IENyZWF0ZXMgdGhlIGRlZmF1bHQgYW5pbWF0b3IuCisgICAgICAgIChTdGFn
ZUJlbmNobWFyay5wcm90b3R5cGUudHVuZSk6IERlbGVnYXRlcyB0aGUgY2FsbCB0byBzdGFnZS4K
KyAgICAgICAgKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5jbGVhcik6IERlbGVnYXRlcyB0aGUg
Y2FsbCB0byBzdGFnZS4KKyAgICAgICAgKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5zaG93UmVz
dWx0cyk6IFNob3dzIHRoZSByZXN1bHRzL3Byb2dyZXNzIHRocm91Z2ggaXRzIHJlY29yZFRhYmxl
IGFuZCBwcm9ncmVzc0Jhci4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9y
ZXNvdXJjZXMveWluLXlhbmcucG5nOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3Rz
L3Jlc291cmNlcy95aW4teWFuZy5zdmc6IEFkZGVkLgorICAgICAgICBUaGVzZSBpbWFnZXMgYXJl
IHNoYXJlZCBhbW9uZyBhbGwgdGhlIHRlc3RzLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21l
dGVyL3Rlc3RzL3RlbXBsYXRlOiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Rl
bXBsYXRlL3Jlc291cmNlczogQWRkZWQuCisgICAgICAgIFRoaXMgZGlyZWN0b3J5IGluY2x1ZGVz
IHRlbXBsYXRlIHRlc3RzIHdoaWNoIGRvIG5vdGhpbmcuIFRoZXkgY2FuIGJlIHVzZWQKKyAgICAg
ICAgdG8gYXV0aG9yIG5ldyB0ZXN0cy4gQW5pbWF0ZWQgaXRlbXMgY2FuIGJlIGNyZWF0ZWQsIG1v
dmVkIGFuZCByZWRyYXduIGJ5CisgICAgICAgIHJlbW92aW5nIHRoZSBUT0RPIGNvbW1lbnRzIGlu
IHRoZSBzY3JpcHQgZmlsZXMgYW5kIHdyaXRpbmcgYWN0dWFsIGNvZGUuCisKKyAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNzcy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNhbnZhcy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLXN2Zy5odG1s
OiBBZGRlZC4KKyAgICAgICAgVGVtcGxhdGUgdGVzdCBwYWdlcy4gVGhleSBjYW4gYmUgdXNlZCBh
cyB0aGV5IGFyZS4gQ1NTIGF0dHJpYnV0ZXMgb3IgaGlkZGVuCisgICAgICAgIGVsZW1lbnRzIGNh
biBiZSBhZGRlZCB0byB0aGVzZSBkZXJpdmVkIHRlc3QgcGFnZXMgaWYgbmVlZGVkLgorICAgICAg
ICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0
ZS1jc3MuanM6IEFkZGVkLgorICAgICAgICAKKyAgICAgICAgKFRlbXBsYXRlQ3NzU3RhZ2UpOiBB
IHN0YWdlIHRvIGNyZWF0ZSBhbmQgYW5pbWF0ZSBIVE1MRWxlbWVudHMuCisgICAgICAgIChUZW1w
bGF0ZUNzc1N0YWdlLnByb3RvdHlwZS50dW5lKTogQ2hhbmdlcyB0aGUgdGVzdCBieSBhZGRpbmcg
b3IgcmVtb3ZpbmcgZWxlbWVudHMuCisgICAgICAgIChUZW1wbGF0ZUNzc1N0YWdlLnByb3RvdHlw
ZS5hbmltYXRlKTogQW5pbWF0ZXMgdGhlIHRlc3QgZWxlbWVudHMuCisgICAgICAgIChUZW1wbGF0
ZUNzc0JlbmNobWFyayk6IAorICAgICAgICAoVGVtcGxhdGVDc3NCZW5jaG1hcmsucHJvdG90eXBl
LmNyZWF0ZVN0YWdlKTogQ3JlYXRlcyB0aGUgdGVzdCBzdGFnZS4KKyAgICAgICAgKHdpbmRvdy5i
ZW5jaG1hcmtDbGllbnQuY3JlYXRlKTogQ3JlYXRlcyBhIGJlbmNobWFyayBvZiB0eXBlIFRlbXBs
YXRlQ3NzQmVuY2htYXJrLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Rl
bXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanM6IEFkZGVkLgorICAgICAgICAoVGVt
cGxhdGVDYW52YXNPYmplY3QpOgorICAgICAgICAoVGVtcGxhdGVDYW52YXNPYmplY3QucHJvdG90
eXBlLl9kcmF3KTogRHJhd3MgdGhlIG9iamVjdHMgb24gdGhlIGNhbnZhcyBjb250ZXh0LgorICAg
ICAgICAoVGVtcGxhdGVDYW52YXNPYmplY3QucHJvdG90eXBlLmFuaW1hdGUpOiBNb3ZlcyBhbmQg
cmVkcmF3cyB0aGUgb2JqZWN0LgorICAgICAgICAoVGVtcGxhdGVDYW52YXNTdGFnZSk6IEEgc3Rh
Z2UgdG8gY3JlYXRlIGFuZCBhbmltYXRlIGRyYXdpbmcgZWxlbWVudHMuCisgICAgICAgIChUZW1w
bGF0ZUNhbnZhc1N0YWdlLnByb3RvdHlwZS50dW5lKTogaGFuZ2VzIHRoZSB0ZXN0IGJ5IGFkZGlu
ZyBvciByZW1vdmluZyBlbGVtZW50cy4KKyAgICAgICAgKFRlbXBsYXRlQ2FudmFzU3RhZ2UucHJv
dG90eXBlLmFuaW1hdGUpOiAgQW5pbWF0ZXMgdGhlIHRlc3QgZWxlbWVudHMuCisgICAgICAgIChU
ZW1wbGF0ZUNhbnZhc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlKTogU3RhcnRzIHRoZSBhbmlt
YXRpb24gZXZlcnkgZnJhbWUuCisgICAgICAgIChUZW1wbGF0ZUNhbnZhc0JlbmNobWFyayk6IAor
ICAgICAgICAoVGVtcGxhdGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlKTog
Q3JlYXRlcyBhIHN0YWdlIG9mIHR5cGUgVGVtcGxhdGVDYW52YXNTdGFnZS4KKyAgICAgICAgKFRl
bXBsYXRlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvcik6IENyZWF0ZXMg
YSBhbmltYXRvciBvZiB0eXBlIFRlbXBsYXRlQ2FudmFzQW5pbWF0b3IuCisgICAgICAgICh3aW5k
b3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBU
ZW1wbGF0ZUNhbnZhc0JlbmNobWFyay4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90
ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpzOiBBZGRlZC4KKyAgICAgICAg
KFRlbXBsYXRlU3ZnU3RhZ2UpOiBBIHN0YWdlIHRvIGNyZWF0ZSBhbmQgYW5pbWF0ZSBTVkdFbGVt
ZW50cy4KKyAgICAgICAgKFRlbXBsYXRlU3ZnU3RhZ2UucHJvdG90eXBlLnR1bmUpOiBDaGFuZ2Vz
IHRoZSB0ZXN0IGJ5IGFkZGluZyBvciByZW1vdmluZyBlbGVtZW50cy4KKyAgICAgICAgKFRlbXBs
YXRlU3ZnU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUpOiBBbmltYXRlcyB0aGUgdGVzdCBlbGVtZW50
cy4KKyAgICAgICAgKFRlbXBsYXRlU3ZnQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSk6
IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIFRlbXBsYXRlU3ZnU3RhZ2UuCisgICAgICAgICh3aW5k
b3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSk6IENyZWF0ZXMgYSBiZW5jaG1hcmsgb2YgdHlwZSBU
ZW1wbGF0ZVN2Z0JlbmNobWFyay4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0
cy90ZXh0OiBBZGRlZC4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2Vz
OiBBZGRlZC4KKyAgICAgICAgVGhpcyBkaXJlY3RvcnkgaW5jbHVkZXMgdGhlIHRleHQgYW5pbWF0
aW5nIHRlc3RzIHdoaWNoIGN1cnJlbnRseSBydW5zCisgICAgICAgIG9uIENTUyBzdGFnZSBvbmx5
LgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJpbmctdGV4
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgVGV4dCB0ZXN0IHBhZ2UuCisgICAgICAgIAorICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qczogQWRk
ZWQuCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZSk6IFJlcHJlc2VudHMgdGhlIGNvbnRhaW5l
ciBvZiBhbGwgdGhlIHN0YWNrZWQgdGV4dCBsYXllcnMuCisgICAgICAgIChMYXllcmluZ1RleHRT
dGFnZS5wYXJzZVRleHRJdGVtKTogUGFyc2VzIGEgdGV4dEl0ZW0gd2hpY2ggbWF5IGJlIGFuIG9w
ZW5pbmcgdGFnLCBhIGNsb3NpbmcgdGFnIG9yIGEgc2VsZi1jbG9zaW5nIHRhZy4KKyAgICAgICAg
KExheWVyaW5nVGV4dFN0YWdlLmlzT3BlbmluZ1RleHRJdGVtKTogUmV0dXJucyB0cnVlIGlmIHRo
ZSB0ZXh0SXRlbSBpcyBhbiBvcGVuaW5nIHRhZyBlLmcuICc8b2w+Jy4KKyAgICAgICAgKExheWVy
aW5nVGV4dFN0YWdlLmlzQ2xvc2luZ1RleHRJdGVtKTogUmV0dXJucyB0cnVlIGlmICB0aGUgdGV4
dEl0ZW0gaXMgYW4gY2xvc2luZyB0YWcgZS5nLiAnPC9vbD4uCisgICAgICAgIChMYXllcmluZ1Rl
eHRTdGFnZS50ZXh0SXRlbXNGbGFncy5MYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXMubWFwKTog
Q2FsY3VsYXRlcyBhbmQgc3RvcmVzIGlzT3BlbmluZyBhbmQgaXNDbG9zaW5nIGZsYWdzIGZvciBl
YWNoIHRleHRJdGVtLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDb2xvcmFibGVUZXh0
SXRlbSk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgdGV4dEl0ZW0gaXMgc2VsZi1jbG9zaW5nIHRhZyBl
LmcuICc8cD4uLi48L3A+Jy4KKyAgICAgICAgKExheWVyaW5nVGV4dFN0YWdlLmlzSW5zZXJ0YWJs
ZVRleHRJdGVtKTogUmV0dXJucyB0cnVlIGlmIHRoZSB0ZXh0SXRlbXMgY2F1c2VzIGEgbmV3IGVs
ZW1lbnQgdG8gYmUgYWRkZWQgdG8gdGhlIHRleHQgbGF5ZXJzLgorICAgICAgICAoTGF5ZXJpbmdU
ZXh0U3RhZ2UuY29sb3JhYmxlVGV4dEl0ZW1zLkxheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0Zs
YWdzLmZpbHRlcik6IE51bWJlciBvZiBjb2xvcmFibGUgdGV4dEl0ZW1zLgorICAgICAgICAoTGF5
ZXJpbmdUZXh0U3RhZ2UuaW5zZXJ0YWJsZVRleHRJdGVtcy5MYXllcmluZ1RleHRTdGFnZS50ZXh0
SXRlbXNGbGFncy5maWx0ZXIpOiBOdW1iZXIgb2YgaW5zZXJ0YWJsZSB0ZXh0SXRlbXMuCisgICAg
ICAgIChMYXllcmluZ1RleHRTdGFnZS5jb2xvckluZGV4VG9UZXh0RWxlbWVudEluZGV4KTogTWFw
cyBmcm9tIGNvbG9ySW5kZXggWzAuLmNvbG9yYWJsZVRleHRJdGVtcy0xXSB0byB0ZXh0RWxlbWVu
dEluZGV4IFswLi5pbnNlcnRhYmxlVGV4dEl0ZW1zLTFdLgorICAgICAgICAoTGF5ZXJpbmdUZXh0
U3RhZ2UucHJvdG90eXBlLl9uZXh0VGV4dEl0ZW0pOiBNb3ZlcyB0aGUgX3RleHRJdGVtSW5kZXgg
b25lIHN0ZXAgZm9yd2FyZCBpbiBhIGxvb3AgWzAuLkxheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVt
cy5sZW5ndGgtMV0uCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX3ByZXZp
b3VzVGV4dEl0ZW0pOiBNb3ZlcyB0aGUgX3RleHRJdGVtSW5kZXggb25lIHN0ZXAgYmFja3dhcmQg
aW4gYSBsb29wLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9wdXNoVGV4
dEVsZW1lbnQpOiBDcmVhdGVzIGEgbmV3IHRleHRJdGVtRWxlbWVudCBhbmQgYWRkcyBpdCB0byB0
aGUgdG9wbW9zdCBjb250YWluZXIgPGRpdj4uCisgICAgICAgIChMYXllcmluZ1RleHRTdGFnZS5w
cm90b3R5cGUuX3BvcFRleHRFbGVtZW50KTogUmVtb3ZlcyB0aGUgbGFzdCB0ZXh0SXRlbUVsZW1l
bnQgZnJvbSB0aGUgdG9wbW9zdCBjb250YWluZXIgPGRpdj4uCisgICAgICAgIChMYXllcmluZ1Rl
eHRTdGFnZS5wcm90b3R5cGUuX2NvbG9yVGV4dEl0ZW0pOiBDaGFuZ2VzIHRoZSBiYWNrZ3JvdW5k
IGNvbG9yIG9mIGEgc2luZ2xlIGNvbG9yYWJsZSB0ZXh0RWxlbWVudC4gVGhlIGluZGV4IGFkdmFu
Y2VzIGluIGEgY2lyY2xlIFswLi5jb2xvcmFibGVUZXh0SXRlbXMtMV0uCisgICAgICAgIChMYXll
cmluZ1RleHRTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSk6IENoYW5nZXMgdGhlIGJhY2tncm91bmQg
Y29sb3IgYW5kIHRoZSB0ZXh0IGNvbG9yIG9mIHRoZSB0ZXh0RWxlbWVudHMgc3VjaCB0aGF0IGEg
cmVkcmF3IGlzIGVuZm9yY2VkLgorICAgICAgICAoTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBl
LnR1bmUpOiBBZGRzIG9yIHJlbW92ZXMgdGV4dEVsZW1lbnRzIHRvIHRoZSBzdGFnZS4KKworICAg
ICAgICAoTGF5ZXJpbmdUZXh0QmVuY2htYXJrKTogUnVucyB0aGUgYmVuY2htYXJrIGZvciB0aGUg
bGF5ZXJpbmcgdGV4dCB0ZXN0LgorICAgICAgICAoTGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3Rv
dHlwZS5jcmVhdGVTdGFnZSk6IENyZWF0ZXMgYSBzdGFnZSBvZiB0eXBlIExheWVyaW5nVGV4dFN0
YWdlLgorICAgICAgICAod2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUpOiBDcmVhdGVzIGEg
YmVuY2htYXJrIG9mIHR5cGUgTGF5ZXJpbmdUZXh0QmVuY2htYXJrLgorCiAyMDE1LTEwLTAyICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHNoYXJlZCBjb2RlIGZvciBhIG5ldyBhIGdyYXBoaWNzIGJlbmNobWFyawpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9hbmltb21ldGVyLmh0bWwJKHJl
dmlzaW9uIDE5MDU0MikKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvYW5p
bW9tZXRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNiBAQAogPGh0bWw+CiA8aGVh
ZD4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9hbmltb21ldGVy
LmNzcyI+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIiBkZWZl
cj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiIGRl
ZmVyPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5q
cyIgZGVmZXI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0cy5qcyIg
ZGVmZXI9IiI+PC9zY3JpcHQ+CkBAIC0yNCw2ICsyMyw3IEBACiAgICAgICAgICAgICAgICAgICAg
IDxsYWJlbD48aW5wdXQgaWQ9Imh0bWwtc3VpdGUiIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPiBI
VE1MIGVsZW1lbnRzIHN1aXRlPC9sYWJlbD48YnI+CiAgICAgICAgICAgICAgICAgICAgIDxsYWJl
bD48aW5wdXQgaWQ9ImNhbnZhcy1zdWl0ZSIgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+IENhbnZh
cyBkcmF3aW5ncyBzdWl0ZTwvbGFiZWw+PGJyPgogICAgICAgICAgICAgICAgICAgICA8bGFiZWw+
PGlucHV0IGlkPSJzdmctc3VpdGUiIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPiBTVkcgZWxlbWVu
dHMgc3VpdGU8L2xhYmVsPjxicj4KKyAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCBp
ZD0iZXhhbXBsZXMtc3VpdGUiIHR5cGU9ImNoZWNrYm94Ij4gRXhhbXBsZXMgc3VpdGU8L2xhYmVs
Pjxicj4KICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD0idGVtcGxhdGUtc3Vp
dGUiIHR5cGU9ImNoZWNrYm94Ij4gVGVtcGxhdGUgc3VpdGU8L2xhYmVsPgogICAgICAgICAgICAg
ICAgIDwvZGl2PgogICAgICAgICAgICAgICAgIDxkaXY+CkBAIC0zMSw2ICszMSw3IEBACiAgICAg
ICAgICAgICAgICAgICAgIDxsYWJlbD5GcmFtZSByYXRlOiA8aW5wdXQgaWQ9ImZyYW1lLXJhdGUi
IHR5cGU9Im51bWJlciIgdmFsdWU9IjUwIj4gZnBzPC9sYWJlbD48YnI+CiAgICAgICAgICAgICAg
ICAgICAgIDxsYWJlbD48aW5wdXQgaWQ9ImVzdGltYXRlZC1mcmFtZS1yYXRlIiB0eXBlPSJjaGVj
a2JveCIgY2hlY2tlZD4gRXN0aW1hdGVkIEZyYW1lIFJhdGU8L2xhYmVsPjxicj4KICAgICAgICAg
ICAgICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD0iZml4LXRlc3QtY29tcGxleGl0eSIgdHlwZT0i
Y2hlY2tib3giPiBGaXggdGVzdCBjb21wbGV4aXR5IGFmdGVyIHdhcm11cDwvbGFiZWw+CisgICAg
ICAgICAgICAgICAgICAgIDxsYWJlbD48aW5wdXQgaWQ9InNob3ctcnVubmluZy1yZXN1bHRzIiB0
eXBlPSJjaGVja2JveCI+IFNob3cgcnVubmluZyByZXN1bHRzPC9sYWJlbD4KICAgICAgICAgICAg
ICAgICA8L2Rpdj4KICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgPGRpdiBjbGFzcz0i
YnV0dG9ucyI+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291
cmNlcy9hbmltb21ldGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuanMJKHJldmlzaW9uIDE5MDU0MikKKysr
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIu
anMJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgZnVuY3Rpb24gc3RhcnRCZW5jaG1h
cmsoKQogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaHRtbC1zdWl0ZSIpLCAKICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcy1zdWl0ZSIpLCAKICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2Zy1zdWl0ZSIpLAorICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZXhhbXBsZXMtc3VpdGUiKSwKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRlbXBsYXRlLXN1aXRlIiksCiAgICAgXTsKICAgICB2YXIgZW5hYmxlZFN1aXRl
cyA9IFN1aXRlcy5maWx0ZXIoZnVuY3Rpb24gKHN1aXRlLCBpbmRleCkgeyByZXR1cm4gIXN1aXRl
LmRpc2FibGVkICYmIGNoZWNrYm94ZXNbaW5kZXhdLmNoZWNrZWQ7IH0pOwpAQCAtNzIsNiArNzMs
MTEgQEAgZnVuY3Rpb24gc3RhcnRCZW5jaG1hcmsoKQogICAgIGJlbmNobWFya1J1bm5lckNsaWVu
dC5vcHRpb25zWyJmcmFtZVJhdGUiXSA9IHBhcnNlSW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJmcmFtZS1yYXRlIikudmFsdWUpOwogICAgIGJlbmNobWFya1J1bm5lckNsaWVudC5vcHRpb25z
WyJlc3RpbWF0ZWRGcmFtZVJhdGUiXSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlc3RpbWF0
ZWQtZnJhbWUtcmF0ZSIpLmNoZWNrZWQ7ICAgIAogICAgIGJlbmNobWFya1J1bm5lckNsaWVudC5v
cHRpb25zWyJmaXhUZXN0Q29tcGxleGl0eSJdID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZp
eC10ZXN0LWNvbXBsZXhpdHkiKS5jaGVja2VkOworICAgIGJlbmNobWFya1J1bm5lckNsaWVudC5v
cHRpb25zWyJzaG93UnVubmluZ1Jlc3VsdHMiXSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
aG93LXJ1bm5pbmctcmVzdWx0cyIpLmNoZWNrZWQ7CisgICAgCisgICAgaWYgKCFiZW5jaG1hcmtS
dW5uZXJDbGllbnQub3B0aW9uc1sic2hvd1J1bm5pbmdSZXN1bHRzIl0pCisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZWNvcmQiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworCiAg
ICAgdmFyIHJ1bm5lciA9IG5ldyBCZW5jaG1hcmtSdW5uZXIoZW5hYmxlZFN1aXRlcywgYmVuY2ht
YXJrUnVubmVyQ2xpZW50KTsKICAgICBydW5uZXIucnVuTXVsdGlwbGVJdGVyYXRpb25zKGJlbmNo
bWFya1J1bm5lckNsaWVudC5pdGVyYXRpb25Db3VudCk7CiB9CkluZGV4OiBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy90ZXN0cy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy90ZXN0cy5qcwkocmV2
aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2Vz
L3Rlc3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjMwIEBACit2YXIgVGl0bGVzID0g
WworICAgIHsKKyAgICAgICAgdGV4dDogIlRlc3QgTmFtZSIsCisgICAgICAgIHdpZHRoOiAyOCwK
KyAgICAgICAgY2hpbGRyZW46IFtdCisgICAgfSwKKyAgICB7CisgICAgICAgIHRleHQ6ICJBbmlt
YXRlZCBJdGVtcyIsCisgICAgICAgIHdpZHRoOiAyOCwKKyAgICAgICAgY2hpbGRyZW46CisgICAg
ICAgIFsKKyAgICAgICAgICAgIHsgdGV4dDogICAiQXZnLiIsIHdpZHRoOiA3LCBjaGlsZHJlbjog
W10gfSwKKyAgICAgICAgICAgIHsgdGV4dDogICAiVy41JSIsIHdpZHRoOiA3LCBjaGlsZHJlbjog
W10gfSwKKyAgICAgICAgICAgIHsgdGV4dDogICAiU3RkLiIsIHdpZHRoOiA3LCBjaGlsZHJlbjog
W10gfSwKKyAgICAgICAgICAgIHsgdGV4dDogICAgICAiJSIsIHdpZHRoOiA3LCBjaGlsZHJlbjog
W10gfSwKKyAgICAgICAgXQorICAgIH0sCisgICAgeworICAgICAgICB0ZXh0OiAiRlBTIiwKKyAg
ICAgICAgd2lkdGg6IDI4LAorICAgICAgICBjaGlsZHJlbjoKKyAgICAgICAgWworICAgICAgICAg
ICAgeyB0ZXh0OiAgICJBdmcuIiwgd2lkdGg6IDcsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAg
ICAgeyB0ZXh0OiAgICJXLjUlIiwgd2lkdGg6IDcsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAg
ICAgeyB0ZXh0OiAgICJTdGQuIiwgd2lkdGg6IDcsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICAg
ICAgeyB0ZXh0OiAgICAgICIlIiwgd2lkdGg6IDcsIGNoaWxkcmVuOiBbXSB9LAorICAgICAgICBd
CisgICAgfSwKKyAgICB7CisgICAgICAgIHRleHQ6ICJTY29yZSIsCisgICAgICAgIHdpZHRoOiA4
LAorICAgICAgICBjaGlsZHJlbjogW10KKyAgICB9LAorICAgIHsKKyAgICAgICAgdGV4dDogIlNh
bXBsZXMiLAorICAgICAgICB3aWR0aDogOCwKKyAgICAgICAgY2hpbGRyZW46IFtdCisgICAgfQor
XTsKKwordmFyIFN1aXRlcyA9IFtdOworCitTdWl0ZXMucHVzaCh7CisgICAgbmFtZTogIkhUTUwg
Qm91bmNpbmcgUGFydGljbGVzIiwKKyAgICBwcmVwYXJlOiBmdW5jdGlvbihydW5uZXIsIGNvbnRl
bnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBydW5uZXIu
d2FpdEZvckVsZW1lbnQoIiNzdGFnZSIpLnRoZW4oZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAg
ICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsKKyAgICB9LAorICAgIAorICAgIHJ1
bjogZnVuY3Rpb24oY29udGVudFdpbmRvdywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHBy
b2dyZXNzQmFyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRXaW5kb3cucnVuQmVuY2ht
YXJrKHRoaXMsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7CisgICAg
fSwKKworICAgIHRpdGxlczogVGl0bGVzLAorICAgIHRlc3RzOiBbCisgICAgICAgIHsgCisgICAg
ICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNo
YXBlcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSZwYXJ0aWNsZVdpZHRo
PTEyJnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCisgICAgICAgICAgICBuYW1lOiAi
Q1NTIGJvdW5jaW5nIGNpcmNsZXMiCisgICAgICAgIH0sCisgICAgICAgIHsgCisgICAgICAgICAg
ICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5o
dG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSZwYXJ0aWNsZVdpZHRoPTQwJnBh
cnRpY2xlSGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKKyAgICAgICAgICAgIG5hbWU6
ICJDU1MgYm91bmNpbmcgY2xpcHBlZCByZWN0cyIKKyAgICAgICAgfSwKKyAgICAgICAgeyAKKyAg
ICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mt
c2hhcGVzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lk
dGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3JhZGllbnQiLAorICAg
ICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBncmFkaWVudCBjaXJjbGVzIgorICAgICAgICB9
LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sP2dhaW49MC40JmFkZExpbWl0PTUmcmVtb3ZlTGlt
aXQ9MiZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291
cmNlcy95aW4teWFuZy5zdmciLAorICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBTVkcg
aW1hZ2VzIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sP2dhaW49MSZhZGRM
aW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgw
JmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5wbmciLAorICAgICAgICAgICAgbmFtZTog
IkNTUyBib3VuY2luZyBQTkcgaW1hZ2VzIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg
ICAgICB1cmw6ICIuLi90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbD9nYWluPTQmYWRkTGlt
aXQ9MTAwJnJlbW92ZUxpbWl0PTEwMCIsCisgICAgICAgICAgICBuYW1lOiAiQ1NTIGxheWVyaW5n
IHRleHQiCisgICAgICAgIH0sCisgICAgXQorfSk7CisKK1N1aXRlcy5wdXNoKHsKKyAgICBuYW1l
OiAiQ2FudmFzIEJvdW5jaW5nIFBhcnRpY2xlcyIsCisgICAgcHJlcGFyZTogZnVuY3Rpb24ocnVu
bmVyLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpCisgICAgeworICAgICAgICByZXR1
cm4gcnVubmVyLndhaXRGb3JFbGVtZW50KCIjc3RhZ2UiKS50aGVuKGZ1bmN0aW9uIChlbGVtZW50
KSB7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfSk7CisgICAgfSwgIAor
ICAgIAorICAgIHJ1bjogZnVuY3Rpb24oY29udGVudFdpbmRvdywgdGVzdCwgb3B0aW9ucywgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRXaW5k
b3cucnVuQmVuY2htYXJrKHRoaXMsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0Jhcik7CisgICAgfSwKKyAgICAKKyAgICB0aXRsZXM6IFRpdGxlcywKKyAgICB0ZXN0czogWwor
ICAgICAgICB7IAorICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92ZUxp
bWl0PTEwMDAmcGFydGljbGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUi
LAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBjaXJjbGVzIgorICAgICAgICB9
LAorICAgICAgICB7IAorICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGlj
bGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92
ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0
JmNsaXA9c3RhciIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGNsaXBwZWQg
cmVjdHMiCisgICAgICAgIH0sCisgICAgICAgIHsgCisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0
cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP2dhaW49NCZh
ZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVp
Z2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRpZW50IiwKKyAgICAgICAgICAgIG5hbWU6ICJj
YW52YXMgYm91bmNpbmcgZ3JhZGllbnQgY2lyY2xlcyIKKyAgICAgICAgfSwKKyAgICAgICAgeyAK
KyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1j
YW52YXMtaW1hZ2VzLmh0bWw/Z2Fpbj0wLjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0xJnBhcnRp
Y2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15
YW5nLnN2ZyIsCisgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIFNWRyBpbWFnZXMi
CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/Z2Fpbj00JmFkZExpbWl0
PTEwMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgw
JmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5wbmciLAorICAgICAgICAgICAgbmFtZTog
ImNhbnZhcyBib3VuY2luZyBQTkcgaW1hZ2VzIgorICAgICAgICB9LAorICAgIF0KK30pOworCitT
dWl0ZXMucHVzaCh7CisgICAgbmFtZTogIlNWRyBCb3VuY2luZyBQYXJ0aWNsZXMiLAorICAgIHBy
ZXBhcmU6IGZ1bmN0aW9uKHJ1bm5lciwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHJ1bm5lci53YWl0Rm9yRWxlbWVudCgiI3N0YWdlIikudGhl
bihmdW5jdGlvbiAoZWxlbWVudCkgeworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAg
ICAgIH0pOworICAgIH0sCisgICAgCisgICAgcnVuOiBmdW5jdGlvbihjb250ZW50V2luZG93LCB0
ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCisgICAgeworICAgICAgICBy
ZXR1cm4gY29udGVudFdpbmRvdy5ydW5CZW5jaG1hcmsodGhpcywgdGVzdCwgb3B0aW9ucywgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICB9LAorICAgIAorICAgIHRpdGxlczogVGl0bGVz
LAorICAgIHRlc3RzOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/Z2Fpbj02JmFkZExpbWl0
PTEwMCZyZW1vdmVMaW1pdD0xMDAwJnBhcnRpY2xlV2lkdGg9MTImcGFydGljbGVIZWlnaHQ9MTIm
c2hhcGU9Y2lyY2xlIiwKKyAgICAgICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcgY2lyY2xlcyIs
CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/Z2Fpbj0wLjYmYWRkTGltaXQ9
MTAmcmVtb3ZlTGltaXQ9MSZwYXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xlSGVpZ2h0PTQwJnNoYXBl
PXJlY3QmY2xpcD1zdGFyIiwKKyAgICAgICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcgY2xpcHBl
ZCByZWN0cyIsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/Z2Fpbj0wLjgm
YWRkTGltaXQ9MTAmcmVtb3ZlTGltaXQ9NCZwYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0
PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRpZW50IiwKKyAgICAgICAgICAgIG5hbWU6ICJTVkcg
Ym91bmNpbmcgZ3JhZGllbnQgY2lyY2xlcyIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFn
ZXMuaHRtbD9nYWluPTAuNCZhZGRMaW1pdD01JnJlbW92ZUxpbWl0PTImcGFydGljbGVXaWR0aD04
MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwK
KyAgICAgICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcgU1ZHIGltYWdlcyIKKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgdXJsOiAiLi4vdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0
PTUmcGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJj
ZXMveWluLXlhbmcucG5nIiwKKyAgICAgICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcgUE5HIGlt
YWdlcyIKKyAgICAgICAgfSwKKyAgICBdCit9KTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6
ICJNb3JlIGNvbXBsZXggZXhhbXBsZXMiLAorICAgIHByZXBhcmU6IGZ1bmN0aW9uKHJ1bm5lciwg
Y29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJ1
bm5lci53YWl0Rm9yRWxlbWVudCgiI3N0YWdlIikudGhlbihmdW5jdGlvbiAoZWxlbWVudCkgewor
ICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgICAgIH0pOworICAgIH0sCisgICAgCisg
ICAgcnVuOiBmdW5jdGlvbihjb250ZW50V2luZG93LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpCisgICAgeworICAgICAgICByZXR1cm4gY29udGVudFdpbmRvdy5ydW5C
ZW5jaG1hcmsodGhpcywgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsK
KyAgICB9LAorICAgIAorICAgIHRpdGxlczogVGl0bGVzLAorICAgIHRlc3RzOiBbCisgICAgICAg
IHsKKyAgICAgICAgICAgIHVybDogIi4uL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1lbGVjdHJvbnMu
aHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwIiwKKyAgICAgICAgICAgIG5h
bWU6ICJjYW52YXMgZWxlY3Ryb25zIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAg
ICB1cmw6ICIuLi90ZXN0cy9leGFtcGxlcy9jYW52YXMtc3RhcnMuaHRtbD9nYWluPTQmYWRkTGlt
aXQ9MTAwJnJlbW92ZUxpbWl0PTUiLAorICAgICAgICAgICAgbmFtZTogImNhbnZhcyBzdGFycyIK
KyAgICAgICAgfSwKKyAgICBdCit9KTsKKworU3VpdGVzLnB1c2goeworICAgIG5hbWU6ICJTdGFn
ZSBUZW1wbGF0ZXMgKENhbiBiZSB1c2VkIGZvciBuZXcgdGVzdHMpIiwKKyAgICBwcmVwYXJlOiBm
dW5jdGlvbihydW5uZXIsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBydW5uZXIud2FpdEZvckVsZW1lbnQoIiNzdGFnZSIpLnRoZW4oZnVuY3Rp
b24gKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9KTsK
KyAgICB9LAorICAgIAorICAgIHJ1bjogZnVuY3Rpb24oY29udGVudFdpbmRvdywgdGVzdCwgb3B0
aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNv
bnRlbnRXaW5kb3cucnVuQmVuY2htYXJrKHRoaXMsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxl
LCBwcm9ncmVzc0Jhcik7CisgICAgfSwKKyAgICAKKyAgICB0aXRsZXM6IFRpdGxlcywKKyAgICB0
ZXN0czogWworICAgICAgICB7CisgICAgICAgICAgICB1cmw6ICIuLi90ZXN0cy90ZW1wbGF0ZS90
ZW1wbGF0ZS1jc3MuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUiLAorICAg
ICAgICAgICAgbmFtZTogIkNTUyB0ZW1wbGF0ZSIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgdXJsOiAiLi4vdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtY2FudmFzLmh0bWw/Z2Fp
bj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAwIiwKKyAgICAgICAgICAgIG5hbWU6ICJj
YW52YXMgdGVtcGxhdGUiCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHVybDog
Ii4uL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLXN2Zy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAm
cmVtb3ZlTGltaXQ9NSY8b3RoZXJfcGFyYW10ZXI+PTx2YWx1ZT4iLAorICAgICAgICAgICAgbmFt
ZTogIlNWRyB0ZW1wbGF0ZSIKKyAgICAgICAgfSwKKyAgICBdCit9KTsKKworZnVuY3Rpb24gc3Vp
dGVGcm9tTmFtZShuYW1lKQoreworICAgIHJldHVybiBTdWl0ZXMuZmluZChmdW5jdGlvbihzdWl0
ZSkgeyByZXR1cm4gc3VpdGUubmFtZSA9PSBuYW1lOyB9KTsKK30KKworZnVuY3Rpb24gdGVzdEZy
b21OYW1lKHN1aXRlLCBuYW1lKQoreworICAgIHJldHVybiBzdWl0ZS50ZXN0cy5maW5kKGZ1bmN0
aW9uKHRlc3QpIHsgcmV0dXJuIHRlc3QubmFtZSA9PSBuYW1lOyB9KTsKK30KSW5kZXg6IFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
Y2FudmFzLWltYWdlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1s
CShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxz
dHlsZT4KKyAgICAgICAgaW1nLmhpZGRlbiB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CisgICAgICAgIH0KKyAgICA8L3N0
eWxlPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4u
L3Jlc291cmNlcy9zdGFnZS5jc3MiPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
YWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3NhbXBsZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
ZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9t
YXRoLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGll
cy5qcyI+PC9zY3JpcHQ+ICAgIAorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9z
Y3JpcHQ+ICAKKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1jYW52YXMt
cGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5j
aW5nLWNhbnZhcy1pbWFnZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGlt
ZyBjbGFzcz0iaGlkZGVuIiBzcmM9Ii4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciPgorICAgIDxp
bWcgY2xhc3M9ImhpZGRlbiIgc3JjPSIuLi9yZXNvdXJjZXMveWluLXlhbmcucG5nIj4KKyAgICA8
Y2FudmFzIGlkPSJzdGFnZSI+PC9jYW52YXM+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5n
LWNhbnZhcy1zaGFwZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRt
bAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8
bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMv
c3RhZ2UuY3NzIj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2Ny
aXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PiAgCisg
ICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXBhcnRpY2xlcy5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2luZy1jYW52YXMt
c2hhcGVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxjYW52YXMgaWQ9InN0
YWdlIj48L2NhbnZhcz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sCShyZXZpc2lvbiAwKQorKysg
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3Vu
Y2luZy1jc3MtaW1hZ2VzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgaW1nIHsK
KyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+
CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVz
b3VyY2VzL3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdv
cml0aG0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2Ft
cGxlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRl
bnNpb25zLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGgu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpz
Ij48L3NjcmlwdD4gICAgCisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3Njcmlw
dD4gIAorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1pbWFnZXMu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0ic3RhZ2UiPjwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFw
ZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICAuY2lyY2xlIHsKKyAgICAgICAg
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMw
MDAwMDA7CisgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCUgNTAlOworICAgICAgICB9Cisg
ICAgICAgIC5yZWN0IHsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAg
ICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7CisgICAgICAgIH0KKyAgICAgICAgLnN0YXIg
eworICAgICAgICAgICAgLXdlYmtpdC1jbGlwLXBhdGg6IHBvbHlnb24oNTAlIDAlLCAzOCUgMzgl
LCAwJSAzOCUsIDMwJSA2MCUsIDE4JSAxMDAlLCA1MCUgNzUlLCA4MiUgMTAwJSwgNzAlIDYwJSwg
MTAwJSAzOCUsIDYyJSAzOCUpOworICAgICAgICAgICAgLW1zLWNsaXAtcGF0aDogcG9seWdvbig1
MCUgMCUsIDM4JSAzOCUsIDAlIDM4JSwgMzAlIDYwJSwgMTglIDEwMCUsIDUwJSA3NSUsIDgyJSAx
MDAlLCA3MCUgNjAlLCAxMDAlIDM4JSwgNjIlIDM4JSk7ICAKKyAgICAgICAgICAgIGNsaXAtcGF0
aDogcG9seWdvbig1MCUgMCUsIDM4JSAzOCUsIDAlIDM4JSwgMzAlIDYwJSwgMTglIDEwMCUsIDUw
JSA3NSUsIDgyJSAxMDAlLCA3MCUgNjAlLCAxMDAlIDM4JSwgNjIlIDM4JSk7CisgICAgICAgIH0K
KyAgICA8L3N0eWxlPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3Mi
IGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zdGFn
ZS5qcyI+PC9zY3JpcHQ+ICAKKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXBh
cnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ib3VuY2lu
Zy1jc3Mtc2hhcGVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9
InN0YWdlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sCShyZXZpc2lvbiAwKQorKysg
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3Vu
Y2luZy1zdmctaW1hZ2VzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
dHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgorICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAorICAgIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+ICAKKyAgICA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy9ib3VuY2luZy1zdmctcGFydGljbGVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+CisgICAgPHN2ZyBpZD0ic3RhZ2UiPjwvc3ZnPgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVz
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2Vz
L3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0u
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25z
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3Nj
cmlwdD4gICAgCisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4gIAor
ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1wYXJ0aWNsZXMuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYm91bmNpbmctc3ZnLXNoYXBl
cy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8c3ZnIGlkPSJzdGFnZSI+PC9z
dmc+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2Vz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuanMJKHJldmlz
aW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTEgQEAKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzSW1hZ2Uoc3RhZ2UpCit7
CisgICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKKyAgICB0aGlz
Ll9pbWFnZUVsZW1lbnQgPSBzdGFnZS5pbWFnZUVsZW1lbnQ7CisgICAgdGhpcy5fc2hhcGUgPSAi
aW1hZ2UiOworfQorCitCb3VuY2luZ0NhbnZhc0ltYWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNJbWFn
ZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc0ltYWdlOworCitCb3VuY2lu
Z0NhbnZhc0ltYWdlLnByb3RvdHlwZS5fZHJhdyA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9j
b250ZXh0LnNhdmUoKTsKKyAgICAgICAgdGhpcy5fYXBwbHlSb3RhdGlvbigpOworICAgICAgICB0
aGlzLl9jb250ZXh0LmRyYXdJbWFnZSh0aGlzLl9pbWFnZUVsZW1lbnQsIDAsIDAsIHRoaXMuX3Np
emUueCwgdGhpcy5fc2l6ZS55KTsKKyAgICB0aGlzLl9jb250ZXh0LnJlc3RvcmUoKTsKK30KKwor
ZnVuY3Rpb24gQm91bmNpbmdDYW52YXNJbWFnZXNTdGFnZShlbGVtZW50LCBvcHRpb25zKQorewor
ICAgIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRp
b25zKTsKKworICAgIHZhciBpbWFnZVNyYyA9IG9wdGlvbnNbImltYWdlU3JjIl0gfHwgInJlc291
cmNlcy95aW4teWFuZy5zdmciOworICAgIHRoaXMuaW1hZ2VFbGVtZW50ID0gZG9jdW1lbnQucXVl
cnlTZWxlY3RvcigiLmhpZGRlbltzcmM9XCIiICsgaW1hZ2VTcmMgKyAiXCJdIik7Cit9CisKK0Jv
dW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2lu
Z0NhbnZhc1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc0ltYWdlc1N0
YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2U7CisK
K0JvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xlID0gZnVu
Y3Rpb24oKQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdDYW52YXNJbWFnZSh0aGlzKTsKK30K
KworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9w
dGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICBCb3VuY2luZ0NhbnZhc1Bh
cnRpY2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRU
YWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJr
LnByb3RvdHlwZSk7CitCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY29u
c3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc0ltYWdlc0JlbmNobWFyazsKKworQm91bmNpbmdDYW52
YXNJbWFnZXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVu
dCkKK3sKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzSW1hZ2VzU3RhZ2UoZWxlbWVudCwg
dGhpcy5fb3B0aW9ucyk7Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVu
Y3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sK
KyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzSW1hZ2VzQmVuY2htYXJrKHN1aXRlLCB0ZXN0
LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91
bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1j
YW52YXMtcGFydGljbGVzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFz
LXBhcnRpY2xlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNSBAQAorZnVuY3Rpb24g
Qm91bmNpbmdDYW52YXNQYXJ0aWNsZShzdGFnZSkKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlLmNh
bGwodGhpcywgc3RhZ2UpOworICAgIHRoaXMuX2NvbnRleHQgPSBzdGFnZS5jb250ZXh0OworICAg
IHRoaXMuX3NoYXBlID0gIiI7CisgICAgdGhpcy5fY2xpcCA9IHN0YWdlLmNsaXA7Cit9CisKK0Jv
dW5jaW5nQ2FudmFzUGFydGljbGUuY2xpcHMgPSB7CisgICAgc3RhcjogWworICAgICAgICBuZXcg
UG9pbnQoMC41MCwgMC4wMCksCisgICAgICAgIG5ldyBQb2ludCgwLjM4LCAwLjM4KSwKKyAgICAg
ICAgbmV3IFBvaW50KDAuMDAsIDAuMzgpLAorICAgICAgICBuZXcgUG9pbnQoMC4zMCwgMC42MCks
CisgICAgICAgIG5ldyBQb2ludCgwLjE4LCAxLjAwKSwKKyAgICAgICAgbmV3IFBvaW50KDAuNTAs
IDAuNzUpLAorICAgICAgICBuZXcgUG9pbnQoMC44MiwgMS4wMCksCisgICAgICAgIG5ldyBQb2lu
dCgwLjcwLCAwLjYwKSwKKyAgICAgICAgbmV3IFBvaW50KDEuMDAsIDAuMzgpLAorICAgICAgICBu
ZXcgUG9pbnQoMC42MiwgMC4zOCkKKyAgICBdLAorfTsKKworQm91bmNpbmdDYW52YXNQYXJ0aWNs
ZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlKTsK
K0JvdW5jaW5nQ2FudmFzUGFydGljbGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdD
YW52YXNQYXJ0aWNsZTsKKworQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5cGUuX2FwcGx5
Um90YXRpb24gPSBmdW5jdGlvbigpCit7CisgICAgaWYgKHRoaXMuX3NoYXBlID09ICJjaXJjbGUi
KQorICAgICAgICByZXR1cm47CisKKyAgICB0aGlzLl9jb250ZXh0LnRyYW5zbGF0ZSh0aGlzLl9z
aXplLnggLyAyLCB0aGlzLl9zaXplLnkgLyAyKTsKKyAgICB0aGlzLl9jb250ZXh0LnJvdGF0ZSh0
aGlzLl9yb3RhdGVyLmRlZ3JlZSgpICogTWF0aC5QSSAvIDE4MCk7CisgICAgdGhpcy5fY29udGV4
dC50cmFuc2xhdGUoLXRoaXMuX3NpemUueCAvIDIsIC10aGlzLl9zaXplLnkgLyAyKTsKK30KKwor
Qm91bmNpbmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5cGUuX2FwcGx5Q2xpcHBpbmcgPSBmdW5jdGlv
bigpCit7CisgICAgdmFyIGNsaXBQb2ludHMgPSBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLmNsaXBz
W3RoaXMuX2NsaXBdOworICAgIGlmICghY2xpcFBvaW50cykKKyAgICAgICAgcmV0dXJuOworICAg
ICAgICAKKyAgICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgpOworICAgIGNsaXBQb2ludHMuZm9y
RWFjaChmdW5jdGlvbihwb2ludCwgaW5kZXgpIHsKKyAgICAgICAgdmFyIHBvaW50ID0gdGhpcy5f
c2l6ZS5tdWx0aXBseShwb2ludCk7CisgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAgICB0
aGlzLl9jb250ZXh0Lm1vdmVUbyhwb2ludC54LCBwb2ludC55KTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8ocG9pbnQueCwgcG9pbnQueSk7CisgICAgfSwg
dGhpcyk7CisKKyAgICB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpOworICAgIHRoaXMuX2NvbnRl
eHQuY2xpcCgpOworfQorCitCb3VuY2luZ0NhbnZhc1BhcnRpY2xlLnByb3RvdHlwZS5fZHJhdyA9
IGZ1bmN0aW9uKCkKK3sKKyAgICB0aHJvdyAiTm90IGltcGxlbWVudGVkIjsKK30KKworQm91bmNp
bmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkK
K3sKKyAgICBCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcywgdGlt
ZURlbHRhKTsKKyAgICB0aGlzLl9jb250ZXh0LnNhdmUoKTsKKyAgICAgICAgdGhpcy5fY29udGV4
dC50cmFuc2xhdGUodGhpcy5fcG9zaXRpb24ueCwgdGhpcy5fcG9zaXRpb24ueSk7CisgICAgICAg
IHRoaXMuX2RyYXcoKTsKKyAgICB0aGlzLl9jb250ZXh0LnJlc3RvcmUoKTsKK30KKworZnVuY3Rp
b24gQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnZShlbGVtZW50LCBvcHRpb25zKQoreworICAg
IEJvdW5jaW5nUGFydGljbGVzU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAg
ICB0aGlzLmNvbnRleHQgPSB0aGlzLmVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKTsKK30KKworQm91
bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5j
aW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzUGFydGljbGVzU3Rh
Z2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnZTsK
KworZnVuY3Rpb24gQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvcihiZW5jaG1hcmspCit7
CisgICAgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyayk7Cisg
ICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4dDsKK30KKworQm91bmNp
bmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5j
aW5nUGFydGljbGVzQW5pbWF0b3IucHJvdG90eXBlKTsKK0JvdW5jaW5nQ2FudmFzUGFydGljbGVz
QW5pbWF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNB
bmltYXRvcjsKKworQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUuYW5p
bWF0ZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9jb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0
aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUueCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXpl
LnkpOworICAgIHJldHVybiBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZS5hbmlt
YXRlLmNhbGwodGhpcyk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVu
Y2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7
CisgICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5j
aG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUp
OworQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nQ2FudmFzUGFy
dGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvciA9IGZ1bmN0aW9uKCkKK3sK
KyAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQW5pbWF0b3IodGhpcyk7Cit9
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFz
LXNoYXBlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmpz
CShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDkwIEBACitmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1NoYXBlKHN0
YWdlKQoreworICAgIEJvdW5jaW5nQ2FudmFzUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7Cisg
ICAgdGhpcy5fZmlsbCA9IHN0YWdlLmZpbGw7CisgICAgdGhpcy5fc2hhcGUgPSBzdGFnZS5zaGFw
ZTsKKyAgICB0aGlzLl9jb2xvcjAgPSBzdGFnZS5yYW5kb21Db2xvcigpOworICAgIHRoaXMuX2Nv
bG9yMSA9IHN0YWdlLnJhbmRvbUNvbG9yKCk7ICAgIAorfQorCitCb3VuY2luZ0NhbnZhc1NoYXBl
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdDYW52YXNQYXJ0aWNsZS5wcm90b3R5
cGUpOworQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2lu
Z0NhbnZhc1NoYXBlOworCitCb3VuY2luZ0NhbnZhc1NoYXBlLnByb3RvdHlwZS5fYXBwbHlGaWxs
ID0gZnVuY3Rpb24oKQoreworICAgIHN3aXRjaCAodGhpcy5fZmlsbCkgeworICAgIGNhc2UgImdy
YWRpZW50IjoKKyAgICAgICAgdmFyIGdyYWRpZW50ID0gdGhpcy5fY29udGV4dC5jcmVhdGVMaW5l
YXJHcmFkaWVudCgwLCAwLCB0aGlzLl9zaXplLndpZHRoLCAwKTsKKyAgICAgICAgZ3JhZGllbnQu
YWRkQ29sb3JTdG9wKDAsIHRoaXMuX2NvbG9yMCk7CisgICAgICAgIGdyYWRpZW50LmFkZENvbG9y
U3RvcCgxLCB0aGlzLl9jb2xvcjEpOyAKKyAgICAgICAgdGhpcy5fY29udGV4dC5maWxsU3R5bGUg
PSBncmFkaWVudDsKKyAgICAgICAgYnJlYWs7CisgICAgCisgICAgY2FzZSAic29saWQiOgorICAg
IGRlZmF1bHQ6CisgICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbFN0eWxlID0gdGhpcy5fY29sb3Iw
OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK0JvdW5jaW5nQ2FudmFzU2hhcGUucHJvdG90
eXBlLl9kcmF3U2hhcGUgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5fY29udGV4dC5iZWdpblBh
dGgoKTsKKworICAgIHN3aXRjaCAodGhpcy5fc2hhcGUpIHsKKyAgICBjYXNlICJyZWN0IjoKKyAg
ICAgICAgdGhpcy5fY29udGV4dC5yZWN0KDAsIDAsIHRoaXMuX3NpemUud2lkdGgsIHRoaXMuX3Np
emUuaGVpZ2h0KTsKKyAgICAgICAgYnJlYWs7CisgICAgCisgICAgY2FzZSAiY2lyY2xlIjoKKyAg
ICBkZWZhdWx0OgorICAgICAgICB2YXIgY2VudGVyID0gdGhpcy5fc2l6ZS5jZW50ZXI7CisgICAg
ICAgIHZhciByYWRpdXMgPSBNYXRoLm1pbih0aGlzLl9zaXplLngsIHRoaXMuX3NpemUueSkgLyAy
OworICAgICAgICB0aGlzLl9jb250ZXh0LmFyYyhjZW50ZXIueCwgY2VudGVyLnksIHJhZGl1cywg
MCwgTWF0aC5QSSAqIDIsIHRydWUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICB0aGlz
Ll9jb250ZXh0LmZpbGwoKTsKK30KKworQm91bmNpbmdDYW52YXNTaGFwZS5wcm90b3R5cGUuX2Ry
YXcgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5fY29udGV4dC5zYXZlKCk7CisgICAgICAgIHRo
aXMuX2FwcGx5RmlsbCgpOworICAgICAgICB0aGlzLl9hcHBseVJvdGF0aW9uKCk7CisgICAgICAg
IHRoaXMuX2FwcGx5Q2xpcHBpbmcoKTsKKyAgICAgICAgdGhpcy5fZHJhd1NoYXBlKCk7CisgICAg
dGhpcy5fY29udGV4dC5yZXN0b3JlKCk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzU2hh
cGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBCb3VuY2luZ0NhbnZhc1BhcnRpY2xl
c1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5wYXJzZVNoYXBl
UGFyYW10ZXJzKG9wdGlvbnMpOworfQorCitCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnZS5wcm90b3R5
cGUpOworQm91bmNpbmdDYW52YXNTaGFwZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBC
b3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlOworCitCb3VuY2luZ0NhbnZhc1NoYXBlc1N0YWdlLnBy
b3RvdHlwZS5jcmVhdGVQYXJ0aWNsZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gbmV3IEJv
dW5jaW5nQ2FudmFzU2hhcGUodGhpcyk7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nQ2FudmFzU2hh
cGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NC
YXIpCit7CisgICAgQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNCZW5jaG1hcmsuY2FsbCh0aGlzLCBz
dWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQm91
bmNpbmdDYW52YXNTaGFwZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3Vu
Y2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUpOworQm91bmNpbmdDYW52YXNT
aGFwZXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDYW52YXNTaGFw
ZXNCZW5jaG1hcms7CisKK0JvdW5jaW5nQ2FudmFzU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZS5j
cmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2lu
Z0NhbnZhc1NoYXBlc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCit3aW5kb3cu
YmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBy
ZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZh
c1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dy
ZXNzQmFyKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLWNzcy1pbWFnZXMuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9yZXNvdXJjZXMvYm91bmNpbmctY3NzLWltYWdlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2Vz
L2JvdW5jaW5nLWNzcy1pbWFnZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MyBAQAor
ZnVuY3Rpb24gQm91bmNpbmdDc3NJbWFnZShzdGFnZSkKK3sKKyAgICBCb3VuY2luZ1BhcnRpY2xl
LmNhbGwodGhpcywgc3RhZ2UpOworCisgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiaW1nIik7CisgICAgdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy5fc2l6
ZS54ICsgInB4IjsKKyAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5fc2l6ZS55
ICsgInB4IjsKKyAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJzcmMiLCBzdGFnZS5pbWFn
ZVNyYyk7CisgICAgCisgICAgc3RhZ2UuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQp
OworICAgIHRoaXMuX21vdmUoKTsKK30KKworQm91bmNpbmdDc3NJbWFnZS5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlKTsKK0JvdW5jaW5nQ3NzSW1h
Z2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDc3NJbWFnZTsKKworQm91bmNpbmdD
c3NJbWFnZS5wcm90b3R5cGUuX21vdmUgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5lbGVtZW50
LnN0eWxlLnRyYW5zZm9ybSA9ICJ0cmFuc2xhdGUoIiArIHRoaXMuX3Bvc2l0aW9uLnggKyAicHgs
IiArIHRoaXMuX3Bvc2l0aW9uLnkgKyAicHgpICIgKyB0aGlzLl9yb3RhdGVyLnJvdGF0ZVooKTsK
K30KKyAgICAKK0JvdW5jaW5nQ3NzSW1hZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0
aW1lRGVsdGEpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxs
KHRoaXMsIHRpbWVEZWx0YSk7CisgICAgdGhpcy5fbW92ZSgpOworfQorCitmdW5jdGlvbiBCb3Vu
Y2luZ0Nzc0ltYWdlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7CisgICAgQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgIHRoaXMuaW1hZ2VT
cmMgPSBvcHRpb25zWyJpbWFnZVNyYyJdIHx8ICIuLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIjsK
K30KKworQm91bmNpbmdDc3NJbWFnZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJv
dW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nQ3NzSW1hZ2VzU3RhZ2Uu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdDc3NJbWFnZXNTdGFnZTsKKworQm91bmNp
bmdDc3NJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFydGljbGUgPSBmdW5jdGlvbigpCit7
CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0Nzc0ltYWdlKHRoaXMpOworfQorCitCb3VuY2luZ0Nz
c0ltYWdlc1N0YWdlLnByb3RvdHlwZS5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQgPSBmdW5jdGlvbihw
YXJ0aWNsZSkKK3sKKyAgICBwYXJ0aWNsZS5lbGVtZW50LnJlbW92ZSgpOworfQorCitmdW5jdGlv
biBCb3VuY2luZ0Nzc0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3Jk
VGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNh
bGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7
Cit9CisKK0JvdW5jaW5nQ3NzSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nQ3NzSW1h
Z2VzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ3NzSW1hZ2VzQmVu
Y2htYXJrOworCitCb3VuY2luZ0Nzc0ltYWdlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3Rh
Z2UgPSBmdW5jdGlvbihlbGVtZW50KQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdDc3NJbWFn
ZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKword2luZG93LmJlbmNobWFya0Ns
aWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUs
IHByb2dyZXNzQmFyKQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdDc3NJbWFnZXNCZW5jaG1h
cmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9Cklu
ZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L3Jlc291cmNlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLWNzcy1zaGFwZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jc3Mt
c2hhcGVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODEgQEAKK2Z1bmN0aW9uIEJvdW5j
aW5nQ3NzU2hhcGUoc3RhZ2UpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0
YWdlKTsKKworICAgIHRoaXMuZWxlbWVudCA9IHRoaXMuX2NyZWF0ZVNwYW4oc3RhZ2UpOworICAg
ICAgICAKKyAgICBzd2l0Y2ggKHN0YWdlLmZpbGwpIHsKKyAgICBjYXNlICJzb2xpZCI6CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHN0
YWdlLnJhbmRvbUNvbG9yKCk7CisgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlICJn
cmFkaWVudCI6CisgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kID0gImxpbmVh
ci1ncmFkaWVudCgiICsgc3RhZ2UucmFuZG9tQ29sb3IoKSArICIsICIgKyBzdGFnZS5yYW5kb21D
b2xvcigpICsgIikiOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICB0aGlzLl9tb3ZlKCk7
Cit9CisKK0JvdW5jaW5nQ3NzU2hhcGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3VuY2lu
Z1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ0Nzc1NoYXBlLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IEJvdW5jaW5nQ3NzU2hhcGU7CisKK0JvdW5jaW5nQ3NzU2hhcGUucHJvdG90eXBlLl9j
cmVhdGVTcGFuID0gZnVuY3Rpb24oc3RhZ2UpCit7CisgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgc3Bhbi5jbGFzc05hbWUgPSBzdGFnZS5zaGFwZSAr
ICIgIiArIHN0YWdlLmNsaXA7CisgICAgc3Bhbi5zdHlsZS53aWR0aCA9IHRoaXMuX3NpemUueCAr
ICJweCI7CisgICAgc3Bhbi5zdHlsZS5oZWlnaHQgPSB0aGlzLl9zaXplLnkgKyAicHgiOworICAg
IHN0YWdlLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3Bhbik7CisgICAgcmV0dXJuIHNwYW47Cit9CisK
K0JvdW5jaW5nQ3NzU2hhcGUucHJvdG90eXBlLl9tb3ZlID0gZnVuY3Rpb24oKQoreworICAgIHRo
aXMuZWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSAidHJhbnNsYXRlKCIgKyB0aGlzLl9wb3NpdGlv
bi54ICsgInB4LCIgKyB0aGlzLl9wb3NpdGlvbi55ICsgInB4KSIgKyB0aGlzLl9yb3RhdGVyLnJv
dGF0ZVooKTsKK30KKyAgICAKK0JvdW5jaW5nQ3NzU2hhcGUucHJvdG90eXBlLmFuaW1hdGUgPSBm
dW5jdGlvbih0aW1lRGVsdGEpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5wcm90b3R5cGUuYW5p
bWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7CisgICAgdGhpcy5fcm90YXRlci5uZXh0KHRpbWVE
ZWx0YSk7ICAgIAorICAgIHRoaXMuX21vdmUoKTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDc3NT
aGFwZXNTdGFnZShlbGVtZW50LCBvcHRpb25zKQoreworICAgIEJvdW5jaW5nUGFydGljbGVzU3Rh
Z2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0aGlzLnBhcnNlU2hhcGVQYXJh
bXRlcnMob3B0aW9ucyk7Cit9CisKK0JvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7CitCb3VuY2lu
Z0Nzc1NoYXBlc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ3NzU2hhcGVz
U3RhZ2U7CisKK0JvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0ZVBhcnRpY2xl
ID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdDc3NTaGFwZSh0aGlzKTsK
K30KKworQm91bmNpbmdDc3NTaGFwZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1v
dmVkID0gZnVuY3Rpb24ocGFydGljbGUpCit7CisgICAgcGFydGljbGUuZWxlbWVudC5yZW1vdmUo
KTsKK30KKworZnVuY3Rpb24gQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICBCb3VuY2luZ1BhcnRp
Y2xlc0JlbmNobWFyay5jYWxsKHRoaXMsIHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpOworfQorCitCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyay5wcm90b3R5
cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZSk7
CitCb3VuY2luZ0Nzc1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3Vu
Y2luZ0Nzc1NoYXBlc0JlbmNobWFyazsKKworQm91bmNpbmdDc3NTaGFwZXNCZW5jaG1hcmsucHJv
dG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKK3sKKyAgICByZXR1cm4gbmV3
IEJvdW5jaW5nQ3NzU2hhcGVzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK3dp
bmRvdy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlv
bnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5n
Q3NzU2hhcGVzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2Jv
dW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNs
ZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2Vz
L2JvdW5jaW5nLXBhcnRpY2xlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzMiBAQAor
ZnVuY3Rpb24gQm91bmNpbmdQYXJ0aWNsZShzdGFnZSkKK3sKKyAgICB0aGlzLl9zdGFnZVNpemUg
PSBzdGFnZS5zaXplOworICAgIHRoaXMuX3NpemUgPSBzdGFnZS5wYXJ0aWNsZVNpemU7CisgICAg
CisgICAgdGhpcy5fcG9zaXRpb24gPSBzdGFnZS5yYW5kb21Qb3NpdGlvbihzdGFnZS5zaXplLnN1
YnRyYWN0KHN0YWdlLnBhcnRpY2xlU2l6ZSkpOworICAgIHRoaXMuX2FuZ2xlID0gc3RhZ2UucmFu
ZG9tQW5nbGUoKTsKKyAgICB0aGlzLl92ZWxvY2l0eSA9IHN0YWdlLnJhbmRvbVZlbG9jaXR5KHN0
YWdlLm1heFZlbG9jaXR5KTsKKyAgICB0aGlzLl9yb3RhdGVyID0gc3RhZ2UucmFuZG9tUm90YXRl
cigpOworfQorCitCb3VuY2luZ1BhcnRpY2xlLnByb3RvdHlwZSA9Cit7CisgICAgZ2V0IGNlbnRl
cigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcG9zaXRpb24uYWRkKHRoaXMuX3NpemUu
Y2VudGVyKTsKKyAgICB9LAorICAgIAorICAgIGFuaW1hdGU6IGZ1bmN0aW9uKHRpbWVEZWx0YSkK
KyAgICB7CisgICAgICAgIHRoaXMuX3Bvc2l0aW9uID0gdGhpcy5fcG9zaXRpb24ubW92ZSh0aGlz
Ll9hbmdsZSwgdGhpcy5fdmVsb2NpdHksIHRpbWVEZWx0YSk7CisgICAgICAgIHRoaXMuX3JvdGF0
ZXIubmV4dCh0aW1lRGVsdGEpOworCisgICAgICAgIC8vIElmIHBhcnRpY2xlIGlzIGdvaW5nIHRv
IG1vdmUgb2ZmIHJpZ2h0IHNpZGUKKyAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uLnggKyB0aGlz
Ll9zaXplLnggPiB0aGlzLl9zdGFnZVNpemUueCkgeworICAgICAgICAgICAgLy8gSWYgZGlyZWN0
aW9uIGlzIEVhc3QtU291dGgKKyAgICAgICAgICAgIGlmICh0aGlzLl9hbmdsZSA+PSAwICYmIHRo
aXMuX2FuZ2xlIDwgTWF0aC5QSSAvIDIpCisgICAgICAgICAgICAgICAgdGhpcy5fYW5nbGUgPSBN
YXRoLlBJIC0gdGhpcy5fYW5nbGU7CisgICAgICAgICAgICAvLyBJZiBhbmdsZSBpcyBFYXN0LU5v
cnRoCisgICAgICAgICAgICBlbHNlIGlmICh0aGlzLl9hbmdsZSA+IE1hdGguUEkgLyAyICogMykK
KyAgICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IHRoaXMuX2FuZ2xlIC0gKHRoaXMuX2FuZ2xl
IC0gTWF0aC5QSSAvIDIgKiAzKSAqIDI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8v
IElmIHBhcnRpY2xlIGlzIGdvaW5nIHRvIG1vdmUgb2ZmIGxlZnQgc2lkZQorICAgICAgICBpZiAo
dGhpcy5fcG9zaXRpb24ueCA8IDApIHsKKyAgICAgICAgICAgIC8vIElmIGFuZ2xlIGlzIFdlc3Qt
U291dGgKKyAgICAgICAgICAgIGlmICh0aGlzLl9hbmdsZSA+IE1hdGguUEkgLyAyICYmIHRoaXMu
X2FuZ2xlIDwgTWF0aC5QSSkKKyAgICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IE1hdGguUEkg
LSB0aGlzLl9hbmdsZTsKKyAgICAgICAgICAgIC8vIElmIGFuZ2xlIGlzIFdlc3QtTm9ydGgKKyAg
ICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX2FuZ2xlID4gTWF0aC5QSSAmJiB0aGlzLl9hbmdsZSA8
IE1hdGguUEkgLyAyICogMykKKyAgICAgICAgICAgICAgICB0aGlzLl9hbmdsZSA9IHRoaXMuX2Fu
Z2xlICsgKE1hdGguUEkgLyAyICogMyAtIHRoaXMuX2FuZ2xlKSAqIDI7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBJZiBwYXJ0aWNsZSBpcyBnb2luZyB0byBtb3ZlIG9mZiBib3R0b20gc2lkZQor
ICAgICAgICBpZiAodGhpcy5fcG9zaXRpb24ueSArIHRoaXMuX3NpemUueSA+IHRoaXMuX3N0YWdl
U2l6ZS55KSB7CisgICAgICAgICAgICAvLyBJZiBkaXJlY3Rpb24gaXMgU291dGgKKyAgICAgICAg
ICAgIGlmICh0aGlzLl9hbmdsZSA+IDAgJiYgdGhpcy5fYW5nbGUgPCBNYXRoLlBJKQorICAgICAg
ICAgICAgICAgIHRoaXMuX2FuZ2xlID0gTWF0aC5QSSAqIDIgLSB0aGlzLl9hbmdsZTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIElmIHBhcnRpY2xlIGlzIGdvaW5nIHRvIG1vdmUgb2ZmIHRvcCBz
aWRlCisgICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbi55IDwgMCkgeworICAgICAgICAgICAgLy8g
SWYgZGlyZWN0aW9uIGlzIE5vcnRoCisgICAgICAgICAgICBpZiAodGhpcy5fYW5nbGUgPiBNYXRo
LlBJICYmIHRoaXMuX2FuZ2xlIDwgTWF0aC5QSSAqIDIpCisgICAgICAgICAgICAgICAgdGhpcy5f
YW5nbGUgPSB0aGlzLl9hbmdsZSAtICh0aGlzLl9hbmdsZSAtIE1hdGguUEkpICogMjsKKyAgICAg
ICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvcihiZW5j
aG1hcmspCit7CisgICAgU3RhZ2VBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyayk7Cit9Owor
CitCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3Rh
Z2VBbmltYXRvci5wcm90b3R5cGUpOworQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yOworCitmdW5jdGlvbiBC
b3VuY2luZ1BhcnRpY2xlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7CisgICAgU3RhZ2UuY2Fs
bCh0aGlzLCBlbGVtZW50KTsKKyAgICAKKyAgICB0aGlzLnBhcnRpY2xlU2l6ZSA9IG5ldyBQb2lu
dChwYXJzZUludChvcHRpb25zWyJwYXJ0aWNsZVdpZHRoIl0pIHx8IDEwLCBwYXJzZUludChvcHRp
b25zWyJwYXJ0aWNsZUhlaWdodCJdKSB8fCAxMCk7CisgICAgdGhpcy5fcGFydGljbGVzID0gW107
CisKKyAgICB0aGlzLm1heFZlbG9jaXR5ID0gcGFyc2VJbnQob3B0aW9uc1sibWF4VmVsb2NpdHki
XSkgfHwgNTAwOworICAgIHRoaXMubWF4VmVsb2NpdHkgPSBNYXRoLm1heCh0aGlzLm1heFZlbG9j
aXR5LCAxMDApOworfQorCitCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUoU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nUGFydGljbGVzU3RhZ2UucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdQYXJ0aWNsZXNTdGFnZTsKKworQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZS5wcm90b3R5cGUucGFyc2VTaGFwZVBhcmFtdGVycyA9IGZ1bmN0aW9uKG9wdGlv
bnMpCit7CisgICAgdGhpcy5zaGFwZSA9IG9wdGlvbnNbInNoYXBlIl0gfHwgImNpcmNsZSI7Cisg
ICAgdGhpcy5maWxsID0gb3B0aW9uc1siZmlsbCJdIHx8ICJzb2xpZCI7CisgICAgdGhpcy5jbGlw
ID0gb3B0aW9uc1siY2xpcCJdIHx8ICIiOworfQorCitCb3VuY2luZ1BhcnRpY2xlc1N0YWdlLnBy
b3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQoreworICAgIHRoaXMuX3BhcnRp
Y2xlcy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnRpY2xlKSB7CisgICAgICAgIHBhcnRpY2xlLmFuaW1h
dGUodGltZURlbHRhKTsKKyAgICB9KTsKK30KKyAgICAKK0JvdW5jaW5nUGFydGljbGVzU3RhZ2Uu
cHJvdG90eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkKK3sKKyAgICBjb3VudCA9IGNvdW50ID4g
MCA/IE1hdGguZmxvb3IoY291bnQpIDogTWF0aC5jZWlsKGNvdW50KTsKKworICAgIGlmIChjb3Vu
dCA9PSAwKQorICAgICAgICByZXR1cm4gdGhpcy5fcGFydGljbGVzLmxlbmd0aDsKKworICAgIGlm
IChjb3VudCA+IDApIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mKHRoaXMuY3JlYXRl
UGFydGljbGUpID09ICJmdW5jdGlvbiIpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNv
dW50OyArK2kpCisgICAgICAgICAgICB0aGlzLl9wYXJ0aWNsZXMucHVzaCh0aGlzLmNyZWF0ZVBh
cnRpY2xlKCkpOworICAgICAgICByZXR1cm4gdGhpcy5fcGFydGljbGVzLmxlbmd0aDsKKyAgICB9
CisKKyAgICBjb3VudCA9IE1hdGgubWluKC1jb3VudCwgdGhpcy5fcGFydGljbGVzLmxlbmd0aCk7
CisgICAgICAgIAorICAgIGlmICh0eXBlb2YodGhpcy5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQpID09
ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQor
ICAgICAgICAgICAgdGhpcy5wYXJ0aWNsZVdpbGxCZVJlbW92ZWQodGhpcy5fcGFydGljbGVzW3Ro
aXMuX3BhcnRpY2xlcy5sZW5ndGggLSAxIC0gaV0pOworICAgIH0KKworICAgIHRoaXMuX3BhcnRp
Y2xlcy5zcGxpY2UoLWNvdW50LCBjb3VudCk7CisgICAgcmV0dXJuIHRoaXMuX3BhcnRpY2xlcy5s
ZW5ndGg7Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgU3RhZ2VCZW5j
aG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dy
ZXNzQmFyKTsKK30KKworQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlID0gT2Jq
ZWN0LmNyZWF0ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUpOworQm91bmNpbmdQYXJ0aWNsZXNC
ZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1h
cms7CisKK0JvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRv
ciA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gbmV3IEJvdW5jaW5nUGFydGljbGVzQW5pbWF0
b3IodGhpcyk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91
bmNpbmctc3ZnLWltYWdlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctaW1h
Z2VzLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctc3ZnLWltYWdlcy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACitmdW5jdGlvbiBCb3VuY2luZ1N2Z0ltYWdlKHN0
YWdlKQoreworICAgIEJvdW5jaW5nU3ZnUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7CisgICAg
dGhpcy5fc2hhcGUgPSAiaW1hZ2UiOworICAgIAorICAgIHZhciBhdHRycyA9IHsgeDogMCwgeTog
MCwgd2lkdGg6IHRoaXMuX3NpemUueCwgaGVpZ2h0OiB0aGlzLl9zaXplLnkgfTsKKyAgICB2YXIg
eGxpbmtBdHRycyA9IHsgaHJlZjogc3RhZ2UuaW1hZ2VTcmMgfTsKKyAgICB0aGlzLmVsZW1lbnQg
PSBVdGlsaXRpZXMuY3JlYXRlU3ZnRWxlbWVudCgiaW1hZ2UiLCBhdHRycywgeGxpbmtBdHRycywg
c3RhZ2UuZWxlbWVudCk7CisgICAgdGhpcy5fbW92ZSgpOworfQorCitCb3VuY2luZ1N2Z0ltYWdl
LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5cGUp
OworQm91bmNpbmdTdmdJbWFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1N2Z0lt
YWdlOworCitmdW5jdGlvbiBCb3VuY2luZ1N2Z0ltYWdlc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMp
Cit7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlv
bnMpOworICAgIHRoaXMuaW1hZ2VTcmMgPSBvcHRpb25zWyJpbWFnZVNyYyJdIHx8ICJyZXNvdXJj
ZXMveWluLXlhbmcuc3ZnIjsKK30KKworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0Jv
dW5jaW5nU3ZnSW1hZ2VzU3RhZ2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdJ
bWFnZXNTdGFnZTsKKworQm91bmNpbmdTdmdJbWFnZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlUGFy
dGljbGUgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ1N2Z0ltYWdlKHRo
aXMpOworfQorCitmdW5jdGlvbiBCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyayhzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIEJvdW5jaW5nUGFy
dGljbGVzQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRh
YmxlLCBwcm9ncmVzc0Jhcik7Cit9CisKK0JvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBl
KTsKK0JvdW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJv
dW5jaW5nU3ZnSW1hZ2VzQmVuY2htYXJrOworCitCb3VuY2luZ1N2Z0ltYWdlc0JlbmNobWFyay5w
cm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQoreworICAgIHJldHVybiBu
ZXcgQm91bmNpbmdTdmdJbWFnZXNTdGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKwor
d2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIHJldHVybiBuZXcgQm91bmNp
bmdTdmdJbWFnZXNCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBw
cm9ncmVzc0Jhcik7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
Ym91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctcGFydGljbGVzLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2Zy1wYXJ0aWNsZXMuanMJKHJldmlzaW9uIDAp
CisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L3Jlc291cmNlcy9ib3VuY2luZy1zdmctcGFydGljbGVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNjggQEAKK2Z1bmN0aW9uIEJvdW5jaW5nU3ZnUGFydGljbGUoc3RhZ2UpCit7CisgICAg
Qm91bmNpbmdQYXJ0aWNsZS5jYWxsKHRoaXMsIHN0YWdlKTsKK30KKworQm91bmNpbmdTdmdQYXJ0
aWNsZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBl
KTsKK0JvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdQ
YXJ0aWNsZTsKKworQm91bmNpbmdTdmdQYXJ0aWNsZS5wcm90b3R5cGUuX2FwcGx5Q2xpcHBpbmcg
PSBmdW5jdGlvbihzdGFnZSkKK3sKKyAgICBpZiAoc3RhZ2UuY2xpcCAhPSAic3RhciIpCisgICAg
ICAgIHJldHVybjsKKyAgICAgICAgCisgICAgc3RhZ2UuZW5zdXJlQ2xpcFN0YXJJc0NyZWF0ZWQo
KTsKKyAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJjbGlwLXBhdGgiLCAidXJsKCNzdGFy
LWNsaXApIik7Cit9CisKK0JvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBlLl9tb3ZlID0gZnVu
Y3Rpb24oKQoreworICAgIHZhciB0cmFuc2Zvcm0gPSAidHJhbnNsYXRlKCIgKyB0aGlzLl9wb3Np
dGlvbi54ICsgIiwgIiArIHRoaXMuX3Bvc2l0aW9uLnkgKyAiKSI7CisgICAgaWYgKHRoaXMuX3No
YXBlICE9ICJjaXJjbGUiKQorICAgICAgICB0cmFuc2Zvcm0gKz0gdGhpcy5fcm90YXRlci5yb3Rh
dGUodGhpcy5fc2l6ZS5jZW50ZXIpOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInRy
YW5zZm9ybSIsIHRyYW5zZm9ybSk7Cit9CisKK0JvdW5jaW5nU3ZnUGFydGljbGUucHJvdG90eXBl
LmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZS5w
cm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsIHRpbWVEZWx0YSk7CisgICAgdGhpcy5fbW92ZSgp
OworfQorCitmdW5jdGlvbiBCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlKGVsZW1lbnQsIG9wdGlv
bnMpCit7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9w
dGlvbnMpOworfQorCitCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVj
dC5jcmVhdGUoQm91bmNpbmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUpOworQm91bmNpbmdTdmdQ
YXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ1N2Z1BhcnRpY2xl
c1N0YWdlOworCitCb3VuY2luZ1N2Z1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZS5fY3JlYXRlRGVm
cyA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gVXRpbGl0aWVzLmNyZWF0ZVN2Z0VsZW1lbnQo
ImRlZnMiLCB7fSwge30sIHRoaXMuZWxlbWVudCk7Cit9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK0JvdW5jaW5nU3ZnUGFy
dGljbGVzU3RhZ2UucHJvdG90eXBlLl9lbnN1cmVEZWZzSXNDcmVhdGVkID0gZnVuY3Rpb24oKQor
eworICAgIHJldHVybiB0aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvcigiZGVmcyIpIHx8IHRoaXMu
X2NyZWF0ZURlZnMoKTsKK30KKworQm91bmNpbmdTdmdQYXJ0aWNsZXNTdGFnZS5wcm90b3R5cGUu
X2NyZWF0ZUNsaXBTdGFyID0gZnVuY3Rpb24oKQoreworICAgIHZhciBhdHRycyA9IHsgaWQ6ICJz
dGFyLWNsaXAiLCBjbGlwUGF0aFVuaXRzOiAib2JqZWN0Qm91bmRpbmdCb3giIH07CisgICAgdmFy
IGNsaXBQYXRoICA9IFV0aWxpdGllcy5jcmVhdGVTdmdFbGVtZW50KCJjbGlwUGF0aCIsIGF0dHJz
LCB7fSwgdGhpcy5fZW5zdXJlRGVmc0lzQ3JlYXRlZCgpKTsKKworICAgIGF0dHJzID0geyBkOiAi
TS41MCwwTC4zOCwuMzhMMCwuMzhMLjMwLC42MEwuMTgsMUwuNTAsLjc1TC44MiwxTC43MCwuNjBM
MSwuMzhMLjYyLC4zOHoiIH07CisgICAgVXRpbGl0aWVzLmNyZWF0ZVN2Z0VsZW1lbnQoInBhdGgi
LCBhdHRycywge30sIGNsaXBQYXRoKTsKKyAgICByZXR1cm4gY2xpcFBhdGg7Cit9CisKK0JvdW5j
aW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlLmVuc3VyZUNsaXBTdGFySXNDcmVhdGVkID0g
ZnVuY3Rpb24oKQoreworICAgIHJldHVybiB0aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvcigiI3N0
YXItY2xpcCIpIHx8IHRoaXMuX2NyZWF0ZUNsaXBTdGFyKCk7Cit9CisKK0JvdW5jaW5nU3ZnUGFy
dGljbGVzU3RhZ2UucHJvdG90eXBlLnBhcnRpY2xlV2lsbEJlUmVtb3ZlZCA9IGZ1bmN0aW9uKHBh
cnRpY2xlKQoreworICAgIHBhcnRpY2xlLmVsZW1lbnQucmVtb3ZlKCk7Cit9CkluZGV4OiBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNl
cy9ib3VuY2luZy1zdmctc2hhcGVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXN2
Zy1zaGFwZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1zdmctc2hhcGVzLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA0IEBACitmdW5jdGlvbiBCb3VuY2luZ1N2Z1No
YXBlKHN0YWdlKQoreworICAgIEJvdW5jaW5nU3ZnUGFydGljbGUuY2FsbCh0aGlzLCBzdGFnZSk7
CisgICAgdGhpcy5fc2hhcGUgPSBzdGFnZS5zaGFwZTsKKyAgICB0aGlzLl9maWxsID0gc3RhZ2Uu
ZmlsbDsKKyAgICAKKyAgICB0aGlzLl9jcmVhdGVTaGFwZShzdGFnZSk7CisgICAgdGhpcy5fYXBw
bHlDbGlwcGluZyhzdGFnZSk7CisgICAgdGhpcy5fYXBwbHlGaWxsKHN0YWdlKTsKKworICAgIHRo
aXMuX21vdmUoKTsgICAgCit9CisKK0JvdW5jaW5nU3ZnU2hhcGUucHJvdG90eXBlID0gT2JqZWN0
LmNyZWF0ZShCb3VuY2luZ1N2Z1BhcnRpY2xlLnByb3RvdHlwZSk7CitCb3VuY2luZ1N2Z1NoYXBl
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU3ZnU2hhcGU7CisKK0JvdW5jaW5nU3Zn
U2hhcGUucHJvdG90eXBlLl9jcmVhdGVTaGFwZSA9IGZ1bmN0aW9uKHN0YWdlKQoreworICAgIHN3
aXRjaCAodGhpcy5fc2hhcGUpIHsKKyAgICBjYXNlICJyZWN0IjoKKyAgICAgICAgdmFyIGF0dHJz
ID0geyB4OiAwLCB5OiAwLCB3aWR0aDogdGhpcy5fc2l6ZS54LCBoZWlnaHQ6IHRoaXMuX3NpemUu
eSB9OworICAgICAgICB0aGlzLmVsZW1lbnQgPSBVdGlsaXRpZXMuY3JlYXRlU3ZnRWxlbWVudCgi
cmVjdCIsIGF0dHJzLCB7fSwgc3RhZ2UuZWxlbWVudCk7CisgICAgICAgIGJyZWFrOworICAgIAor
ICAgIGNhc2UgImNpcmNsZSI6CisgICAgZGVmYXVsdDoKKyAgICAgICAgdmFyIGF0dHJzID0geyBj
eDogdGhpcy5fc2l6ZS54IC8gMiwgY3k6IHRoaXMuX3NpemUueSAvIDIsIHI6IE1hdGgubWluKHRo
aXMuX3NpemUueCwgdGhpcy5fc2l6ZS55KSAvIDIgfTsKKyAgICAgICAgdGhpcy5lbGVtZW50ID0g
VXRpbGl0aWVzLmNyZWF0ZVN2Z0VsZW1lbnQoImNpcmNsZSIsIGF0dHJzLCB7fSwgc3RhZ2UuZWxl
bWVudCk7CisgICAgICAgIGJyZWFrOyAgICAgICAgCisgICAgfQorfQorCitCb3VuY2luZ1N2Z1No
YXBlLnByb3RvdHlwZS5fYXBwbHlGaWxsID0gZnVuY3Rpb24oc3RhZ2UpCit7CisgICAgc3dpdGNo
ICh0aGlzLl9maWxsKSB7CisgICAgY2FzZSAiZ3JhZGllbnQiOgorICAgICAgICB2YXIgZ3JhZGll
bnQgPSBzdGFnZS5jcmVhdGVHcmFkaWVudCgyKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0
dHJpYnV0ZSgiZmlsbCIsICJ1cmwoIyIgKyBncmFkaWVudC5nZXRBdHRyaWJ1dGUoImlkIikgKyAi
KSIpOworICAgICAgICBicmVhazsKKyAgICAKKyAgICBjYXNlICJzb2xpZCI6CisgICAgZGVmYXVs
dDoKKyAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiZmlsbCIsIHN0YWdlLnJhbmRv
bUNvbG9yKCkpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEJvdW5jaW5n
U3ZnU2hhcGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBCb3VuY2luZ1N2Z1BhcnRp
Y2xlc1N0YWdlLmNhbGwodGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5wYXJzZVNo
YXBlUGFyYW10ZXJzKG9wdGlvbnMpOworICAgIHRoaXMuX2dyYWRpZW50c0NvdW50ID0gMDsKK30K
KworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJvdW5j
aW5nU3ZnUGFydGljbGVzU3RhZ2UucHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnU2hhcGVzU3RhZ2Uu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQm91bmNpbmdTdmdTaGFwZXNTdGFnZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor
Qm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUuY3JlYXRlR3JhZGllbnQgPSBmdW5jdGlv
bihzdG9wcykKK3sKKyAgICB2YXIgYXR0cnMgPSB7IGlkOiAiZ2FkaWVudC0iICsgKyt0aGlzLl9n
cmFkaWVudHNDb3VudCB9OworICAgIHZhciBncmFkaWVudCA9IFV0aWxpdGllcy5jcmVhdGVTdmdF
bGVtZW50KCJsaW5lYXJHcmFkaWVudCIsIGF0dHJzLCB7fSwgdGhpcy5fZW5zdXJlRGVmc0lzQ3Jl
YXRlZCgpKTsgICAgCisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdG9wczsgKytpKSB7
CisgICAgICAgIGF0dHJzID0geyBvZmZzZXQ6IGkgKiAxMDAgLyBzdG9wcyArICIlIiwgJ3N0b3At
Y29sb3InOiB0aGlzLnJhbmRvbUNvbG9yKCkgfTsKKyAgICAgICAgVXRpbGl0aWVzLmNyZWF0ZVN2
Z0VsZW1lbnQoInN0b3AiLCBhdHRycywge30sIGdyYWRpZW50KTsKKyAgICB9CisKKyAgICByZXR1
cm4gZ3JhZGllbnQ7Cit9CisKK0JvdW5jaW5nU3ZnU2hhcGVzU3RhZ2UucHJvdG90eXBlLmNyZWF0
ZVBhcnRpY2xlID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdTdmdTaGFw
ZSh0aGlzKTsKK30KKworQm91bmNpbmdTdmdTaGFwZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVX
aWxsQmVSZW1vdmVkID0gZnVuY3Rpb24ocGFydGljbGUpCit7CisgICAgQm91bmNpbmdTdmdQYXJ0
aWNsZXNTdGFnZS5wcm90b3R5cGUucGFydGljbGVXaWxsQmVSZW1vdmVkLmNhbGwodGhpcywgcGFy
dGljbGUpOworCisgICAgdmFyIGZpbGwgPSBwYXJ0aWNsZS5lbGVtZW50LmdldEF0dHJpYnV0ZSgi
ZmlsbCIpOworICAgIGlmIChmaWxsLmluZGV4T2YoInVybCgjIikgIT0gMCkKKyAgICAgICAgcmV0
dXJuOworICAgICAgICAKKyAgICB2YXIgZ3JhZGllbnQgPSB0aGlzLmVsZW1lbnQucXVlcnlTZWxl
Y3RvcihmaWxsLnN1YnN0cmluZyg0LCBmaWxsLmxlbmd0aCAtIDEpKTsKKyAgICB0aGlzLl9lbnN1
cmVEZWZzSXNDcmVhdGVkKCkucmVtb3ZlQ2hpbGQoZ3JhZGllbnQpOworfQorCitmdW5jdGlvbiBC
b3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFi
bGUsIHByb2dyZXNzQmFyKQoreworICAgIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLmNhbGwo
dGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9
CisKK0JvdW5jaW5nU3ZnU2hhcGVzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
Qm91bmNpbmdQYXJ0aWNsZXNCZW5jaG1hcmsucHJvdG90eXBlKTsKK0JvdW5jaW5nU3ZnU2hhcGVz
QmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nU3ZnU2hhcGVzQmVuY2ht
YXJrOworCitCb3VuY2luZ1N2Z1NoYXBlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2Ug
PSBmdW5jdGlvbihlbGVtZW50KQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdTdmdTaGFwZXNT
dGFnZShlbGVtZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKword2luZG93LmJlbmNobWFya0NsaWVu
dC5jcmVhdGUgPSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHBy
b2dyZXNzQmFyKQoreworICAgIHJldHVybiBuZXcgQm91bmNpbmdTdmdTaGFwZXNCZW5jaG1hcmso
c3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9CkluZGV4
OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFzLWVsZWN0
cm9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9leGFtcGxlcy9jYW52YXMtZWxlY3Ryb25zLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFzLWVsZWN0cm9ucy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVm
PSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGls
aXRpZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21h
aW4uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8Y2FudmFzIGlkPSJzdGFnZSI+PC9j
YW52YXM+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvZXhhbXBsZXMvY2FudmFzLXN0YXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL2NhbnZhcy1zdGFycy5odG1sCShy
ZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVz
L2NhbnZhcy1zdGFycy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5
cGU9InRleHQvY3NzIiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKyAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL21haW4uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
Y2FudmFzLXN0YXJzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxjYW52YXMg
aWQ9InN0YWdlIj48L2NhbnZhcz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9u
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhh
bXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMuanMJKHJldmlzaW9uIDApCisrKyBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1l
bGVjdHJvbnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzQgQEAKK2Z1bmN0aW9uIENh
bnZhc0VsZWN0cm9uKHN0YWdlKQoreworICAgIHRoaXMuX2NvbnRleHQgPSBzdGFnZS5jb250ZXh0
OworICAgIHRoaXMuX3N0YWdlU2l6ZSA9IHN0YWdlLnNpemU7CisKKyAgICB2YXIgbWluU2lkZSA9
IE1hdGgubWluKHRoaXMuX3N0YWdlU2l6ZS53aWR0aCwgdGhpcy5fc3RhZ2VTaXplLmhlaWdodCk7
CisgICAgdmFyIHJhZGl1c1ggPSBzdGFnZS5yYW5kb20obWluU2lkZSAvIDgsIDcgKiBtaW5TaWRl
IC8gMTYpOworICAgIHZhciByYWRpdXNZID0gc3RhZ2UucmFuZG9tKG1pblNpZGUgLyA4LCAzICog
cmFkaXVzWCAvIDQpOworICAgIHRoaXMuX29yYml0UmFkaXVzZXMgPSBuZXcgUG9pbnQocmFkaXVz
WCwgcmFkaXVzWSk7CisgICAgdGhpcy5fcmFkaXVzID0gc3RhZ2UucmFuZG9tKDUsIDE1KTsKKyAg
ICB0aGlzLl9kaXJlY3Rpb24gPSBzdGFnZS5yYW5kb21JbnQoMCwgMik7CisgICAgdGhpcy5fYW5n
bGUgPSBzdGFnZS5yYW5kb21JbnQoMCwgMzYwKTsKKyAgICB0aGlzLl9jb2xvciA9IHN0YWdlLnJh
bmRvbUNvbG9yKCk7CisgICAgdGhpcy5fcm90YXRlciA9IHN0YWdlLnJhbmRvbVJvdGF0ZXIoKTsK
KyAgICB0aGlzLl9yb3RhdGVyLm5leHQoc3RhZ2UucmFuZG9tKDAsIHRoaXMuX3JvdGF0ZXIuaW50
ZXJ2YWwpKTsKK30KKworQ2FudmFzRWxlY3Ryb24ucHJvdG90eXBlLl9kcmF3ID0gZnVuY3Rpb24o
KQoreworICAgIC8vIENhbGN1bGF0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIG9iamVjdCBvbiB0aGUg
ZWxsaXBzZS4KKyAgICB2YXIgYW5nbGUgPSB0aGlzLl9kaXJlY3Rpb24gPyB0aGlzLl9yb3RhdGVy
LmRlZ3JlZSgpIDogMzYwIC0gdGhpcy5fcm90YXRlci5kZWdyZWUoKTsKKyAgICB2YXIgcG9zaXRp
b24gPSB0aGlzLl9zdGFnZVNpemUuY2VudGVyLnN1YnRyYWN0KFBvaW50LnBvaW50T25FbGxpcHNl
KGFuZ2xlLCB0aGlzLl9vcmJpdFJhZGl1c2VzKSk7CisKKyAgICB0aGlzLl9jb250ZXh0LnNhdmUo
KTsgICAgCisgICAgICAgIHRoaXMuX2NvbnRleHQudHJhbnNsYXRlKHRoaXMuX3N0YWdlU2l6ZS5j
ZW50ZXIueCwgdGhpcy5fc3RhZ2VTaXplLmNlbnRlci55KTsKKyAgICAgICAgdGhpcy5fY29udGV4
dC5yb3RhdGUodGhpcy5fYW5nbGUgKiBNYXRoLlBJIC8gMTgwKTsKKyAgICAgICAgdGhpcy5fY29u
dGV4dC50cmFuc2xhdGUoLXRoaXMuX3N0YWdlU2l6ZS5jZW50ZXIueCwgLXRoaXMuX3N0YWdlU2l6
ZS5jZW50ZXIueSk7CisKKyAgICAgICAgLy8gU2V0IHRoZSBzdHJva2UgYW5kIHRoZSBmaWxsIGNv
bG9ycworICAgICAgICB0aGlzLl9jb250ZXh0LnN0cm9rZVN0eWxlID0gInJnYmEoMTkyLCAxOTIs
IDE5MiwgMC45KSI7CisgICAgICAgIHRoaXMuX2NvbnRleHQuZmlsbFN0eWxlID0gdGhpcy5fY29s
b3I7CisKKyAgICAgICAgLy8gRHJhdyB0aGUgb3JiaXQgb2YgdGhlIG9iamVjdC4KKyAgICAgICAg
dGhpcy5fY29udGV4dC5iZWdpblBhdGgoKTsKKyAgICAgICAgdGhpcy5fY29udGV4dC5lbGxpcHNl
KHRoaXMuX3N0YWdlU2l6ZS5jZW50ZXIueCwgdGhpcy5fc3RhZ2VTaXplLmNlbnRlci55LCB0aGlz
Ll9vcmJpdFJhZGl1c2VzLngsIHRoaXMuX29yYml0UmFkaXVzZXMueSwgMCwgMCwgMiAqIE1hdGgu
UEkpOworICAgICAgICB0aGlzLl9jb250ZXh0LnN0cm9rZSgpOworICAgIAorICAgICAgICAvLyBE
cmF3IHRoZSBvYmplY3QuCisgICAgICAgIHRoaXMuX2NvbnRleHQuYmVnaW5QYXRoKCk7CisgICAg
ICAgIHRoaXMuX2NvbnRleHQuYXJjKHBvc2l0aW9uLngsIHBvc2l0aW9uLnksIHRoaXMuX3JhZGl1
cywgMCwgTWF0aC5QSSAqIDIsIHRydWUpOworICAgICAgICB0aGlzLl9jb250ZXh0LmZpbGwoKTsK
KyAgICB0aGlzLl9jb250ZXh0LnJlc3RvcmUoKTsKK30KKworQ2FudmFzRWxlY3Ryb24ucHJvdG90
eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCit7CisgICAgdGhpcy5fcm90YXRlci5u
ZXh0KHRpbWVEZWx0YSAvIDEwMCk7CisgICAgdGhpcy5fZHJhdygpOworfQorCitmdW5jdGlvbiBD
YW52YXNFbGVjdHJvbnNTdGFnZShlbGVtZW50LCBvcHRpb25zKQoreworICAgIFN0YWdlLmNhbGwo
dGhpcywgZWxlbWVudCwgb3B0aW9ucyk7CisgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5lbGVtZW50
LmdldENvbnRleHQoIjJkIik7CisgICAgdGhpcy5fZWxlY3Ryb25zID0gW107Cit9CisKK0NhbnZh
c0VsZWN0cm9uc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2UucHJvdG90eXBl
KTsKK0NhbnZhc0VsZWN0cm9uc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENhbnZhc0Vs
ZWN0cm9uc1N0YWdlOworCitDYW52YXNFbGVjdHJvbnNTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1
bmN0aW9uKGNvdW50KQoreworICAgIGNvdW50ID0gY291bnQgPiAwID8gTWF0aC5mbG9vcihjb3Vu
dCkgOiBNYXRoLmNlaWwoY291bnQpOworCisgICAgaWYgKGNvdW50ID09IDApCisgICAgICAgIHJl
dHVybiB0aGlzLl9lbGVjdHJvbnMubGVuZ3RoOworCisgICAgaWYgKGNvdW50ID4gMCkgeworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICB0aGlzLl9l
bGVjdHJvbnMucHVzaChuZXcgQ2FudmFzRWxlY3Ryb24odGhpcykpOworICAgICAgICByZXR1cm4g
dGhpcy5fZWxlY3Ryb25zLmxlbmd0aDsKKyAgICB9CisKKyAgICBjb3VudCA9IE1hdGgubWluKC1j
b3VudCwgdGhpcy5fZWxlY3Ryb25zLmxlbmd0aCk7CisgICAgdGhpcy5fZWxlY3Ryb25zLnNwbGlj
ZSgtY291bnQsIGNvdW50KTsKKyAgICAKKyAgICByZXR1cm4gdGhpcy5fZWxlY3Ryb25zLmxlbmd0
aDsKK30KKworQ2FudmFzRWxlY3Ryb25zU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlv
bih0aW1lRGVsdGEpCit7CisgICAgdGhpcy5fZWxlY3Ryb25zLmZvckVhY2goZnVuY3Rpb24oZWxl
Y3Ryb24pIHsKKyAgICAgICAgZWxlY3Ryb24uYW5pbWF0ZSh0aW1lRGVsdGEpOworICAgIH0pOwor
fQorCitmdW5jdGlvbiBDYW52YXNFbGVjdHJvbnNBbmltYXRvcihiZW5jaG1hcmspCit7CisgICAg
QW5pbWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1hcmspOworICAgIHRoaXMuX2NvbnRleHQgPSBiZW5j
aG1hcmsuX3N0YWdlLmNvbnRleHQ7Cit9CisKK0NhbnZhc0VsZWN0cm9uc0FuaW1hdG9yLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VBbmltYXRvci5wcm90b3R5cGUpOworQ2FudmFzRWxl
Y3Ryb25zQW5pbWF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ2FudmFzRWxlY3Ryb25zQW5p
bWF0b3I7CisKK0NhbnZhc0VsZWN0cm9uc0FuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0gZnVu
Y3Rpb24oKQoreworICAgIHRoaXMuX2NvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuX2JlbmNo
bWFyay5fc3RhZ2Uuc2l6ZS54LCB0aGlzLl9iZW5jaG1hcmsuX3N0YWdlLnNpemUueSk7CisKKyAg
ICAvLyBEcmF3IGEgYmlnIHN0YXIgaW4gdGhlIG1pZGRsZS4KKyAgICB0aGlzLl9jb250ZXh0LmZp
bGxTdHlsZSA9ICJvcmFuZ2UiOyAgICAKKyAgICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgpOwor
ICAgIHRoaXMuX2NvbnRleHQuYXJjKHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uuc2l6ZS5jZW50ZXIu
eCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLmNlbnRlci55LCA1MCwgMCwgTWF0aC5QSSAq
IDIsIHRydWUpOworICAgIHRoaXMuX2NvbnRleHQuZmlsbCgpOworCisgICAgcmV0dXJuIFN0YWdl
QW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzKTsKK30KKworZnVuY3Rpb24gQ2Fu
dmFzRWxlY3Ryb25zQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwg
cHJvZ3Jlc3NCYXIpCit7CisgICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKworQ2FudmFzRWxlY3Ry
b25zQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VCZW5jaG1hcmsucHJv
dG90eXBlKTsKK0NhbnZhc0VsZWN0cm9uc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBDYW52YXNFbGVjdHJvbnNCZW5jaG1hcms7CisKK0NhbnZhc0VsZWN0cm9uc0JlbmNobWFyay5w
cm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQoreworICAgIC8vIEF0dGFj
aCB0aGUgc3RhZ2UgdG8gdGhlIGJlbmNobWFyay4KKyAgICByZXR1cm4gbmV3IENhbnZhc0VsZWN0
cm9uc1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCitDYW52YXNFbGVjdHJvbnNC
ZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQoreworICAgIC8v
IEF0dGFjaCB0aGUgYW5pbWF0b3IgdG8gdGhlIGJlbmNobWFyay4KKyAgICByZXR1cm4gbmV3IENh
bnZhc0VsZWN0cm9uc0FuaW1hdG9yKHRoaXMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50
LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpCit7CisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgdGVz
dCBoYXJuZXNzIHdoaWNoIHN0YXJ0cyB0aGUKKyAgICAvLyB0ZXN0IGJ5IGNyZWF0aW5nIHlvdXIg
YmVuY2htYXJrIG9iamVjdC4KKyAgICByZXR1cm4gbmV3IENhbnZhc0VsZWN0cm9uc0JlbmNobWFy
ayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KSW5k
ZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMv
Y2FudmFzLXN0YXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzCShyZXZpc2lvbiAwKQor
KysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jlc291cmNlcy9j
YW52YXMtc3RhcnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzEgQEAKK2Z1bmN0aW9u
IENhbnZhc1N0YXIoc3RhZ2UpCit7CisgICAgdGhpcy5fY29udGV4dCA9IHN0YWdlLmNvbnRleHQ7
CisgICAgdGhpcy5fc3RhZ2VTaXplID0gc3RhZ2Uuc2l6ZTsKKworICAgIHRoaXMuX3NpemUgPSBz
dGFnZS5yYW5kb21TcXVhcmVTaXplKDUsIDIwKTsKKyAgICB0aGlzLl9jZW50ZXIgPSBzdGFnZS5y
YW5kb21Qb3NpdGlvbihzdGFnZS5zaXplLnN1YnRyYWN0KHRoaXMuX3NpemUpKS5hZGQodGhpcy5f
c2l6ZS5jZW50ZXIpOworICAgIHRoaXMuX3JvdGF0ZVggPSAwOworICAgIHRoaXMuX3JvdGF0ZURl
bHRhWCA9IHN0YWdlLnJhbmRvbSgwLjMsIDAuNyk7Cit9CisKK0NhbnZhc1N0YXIucHJvdG90eXBl
Ll9kcmF3ID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX2NvbnRleHQuc2F2ZSgpOworICAgIHRo
aXMuX2NvbnRleHQudHJhbnNsYXRlKHRoaXMuX2NlbnRlci54LCB0aGlzLl9jZW50ZXIueSk7Cisg
ICAgCisgICAgdGhpcy5fY29udGV4dC5maWxsU3R5bGUgPSAneWVsbG93JzsKKyAgICB0aGlzLl9j
b250ZXh0LnN0cm9rZVN0eWxlID0gJ3doaXRlJzsKKworICAgIHRoaXMuX2NvbnRleHQubGluZVdp
ZHRoID0gMTsKKyAgICAKKyAgICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgpOworICAgIHRoaXMu
X2NvbnRleHQubW92ZVRvKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAt
dGhpcy5fc2l6ZS55IC8gIDIpOworICAgIHRoaXMuX2NvbnRleHQubGluZVRvKCt0aGlzLl9zaXpl
LnggLyAyMCAtIHRoaXMuX3JvdGF0ZVggLyA1LCAtdGhpcy5fc2l6ZS55IC8gMTApOworICAgIHRo
aXMuX2NvbnRleHQubGluZVRvKCt0aGlzLl9zaXplLnggLyA0ICAtIHRoaXMuX3JvdGF0ZVgsICAg
ICAgICAgICAgICAgICAgICAgIDApOworICAgIHRoaXMuX2NvbnRleHQubGluZVRvKCt0aGlzLl9z
aXplLnggLyAyMCAtIHRoaXMuX3JvdGF0ZVggLyA1LCArdGhpcy5fc2l6ZS55IC8gMTApOworICAg
IHRoaXMuX2NvbnRleHQubGluZVRvKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCArdGhpcy5fc2l6ZS55IC8gIDIpOworICAgIHRoaXMuX2NvbnRleHQubGluZVRvKC10aGlz
Ll9zaXplLnggLyAyMCArIHRoaXMuX3JvdGF0ZVggLyA1LCArdGhpcy5fc2l6ZS55IC8gMTApOwor
ICAgIHRoaXMuX2NvbnRleHQubGluZVRvKC10aGlzLl9zaXplLnggLyAgNCArIHRoaXMuX3JvdGF0
ZVgsICAgICAgICAgICAgICAgICAgICAgIDApOworICAgIHRoaXMuX2NvbnRleHQubGluZVRvKC10
aGlzLl9zaXplLnggLyAyMCArIHRoaXMuX3JvdGF0ZVggLyA1LCAtdGhpcy5fc2l6ZS55IC8gMTAp
OworICAgIHRoaXMuX2NvbnRleHQubGluZVRvKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLCAtdGhpcy5fc2l6ZS55IC8gIDIpOworICAgIAorICAgIHRoaXMuX2NvbnRleHQu
ZmlsbCgpOworICAgIHRoaXMuX2NvbnRleHQuc3Ryb2tlKCk7CisgICAgdGhpcy5fY29udGV4dC5j
bG9zZVBhdGgoKTsKKyAgICB0aGlzLl9jb250ZXh0LnJlc3RvcmUoKTsKK30KKworQ2FudmFzU3Rh
ci5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAgICB0aGlzLl9y
b3RhdGVYICs9IHRoaXMuX3JvdGF0ZURlbHRhWDsKKyAgICAKKyAgICBpZiAodGhpcy5fcm90YXRl
WCA+IHRoaXMuX3NpemUueCAvIDQgfHwgdGhpcy5fcm90YXRlWCA8IC10aGlzLl9zaXplLnggLyA0
KSB7CisgICAgICAgIHRoaXMuX3JvdGF0ZURlbHRhWCA9IC10aGlzLl9yb3RhdGVEZWx0YVg7Cisg
ICAgICAgIHRoaXMuX3JvdGF0ZVggKz0gdGhpcy5fcm90YXRlRGVsdGFYOworICAgIH0KKworICAg
dGhpcy5fZHJhdygpOworfQorCitmdW5jdGlvbiBDYW52YXNTdGFyc1N0YWdlKGVsZW1lbnQsIG9w
dGlvbnMpCit7CisgICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgdGhp
cy5jb250ZXh0ID0gdGhpcy5lbGVtZW50LmdldENvbnRleHQoIjJkIik7CisKKyAgICB0aGlzLl9v
YmplY3RzID0gW107Cit9CisKK0NhbnZhc1N0YXJzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZShTdGFnZS5wcm90b3R5cGUpOworQ2FudmFzU3RhcnNTdGFnZS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBDYW52YXNTdGFyc1N0YWdlOworCitDYW52YXNTdGFyc1N0YWdlLnByb3RvdHlwZS50
dW5lID0gZnVuY3Rpb24oY291bnQpCit7CisgICAgY291bnQgPSBjb3VudCA+IDAgPyBNYXRoLmZs
b29yKGNvdW50KSA6IE1hdGguY2VpbChjb3VudCk7CisKKyAgICBpZiAoY291bnQgPT0gMCkKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX29iamVjdHMubGVuZ3RoOworCisgICAgaWYgKGNvdW50ID4gMCkg
eworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICB0
aGlzLl9vYmplY3RzLnB1c2gobmV3IENhbnZhc1N0YXIodGhpcykpOworICAgICAgICByZXR1cm4g
dGhpcy5fb2JqZWN0cy5sZW5ndGg7CisgICAgfQorCisgICAgY291bnQgPSBNYXRoLm1pbigtY291
bnQsIHRoaXMuX29iamVjdHMubGVuZ3RoKTsKKyAgICB0aGlzLl9vYmplY3RzLnNwbGljZSgtY291
bnQsIGNvdW50KTsKKworICAgIHJldHVybiB0aGlzLl9vYmplY3RzLmxlbmd0aDsKK30KKworQ2Fu
dmFzU3RhcnNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sK
KyAgICB0aGlzLl9vYmplY3RzLmZvckVhY2goZnVuY3Rpb24ob2JqZWN0KSB7CisgICAgICAgIG9i
amVjdC5hbmltYXRlKHRpbWVEZWx0YSk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIENhbnZhc1N0
YXJzQW5pbWF0b3IoYmVuY2htYXJrKQoreworICAgQW5pbWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1h
cmspOworICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4dDsKK30KKwor
Q2FudmFzU3RhcnNBbmltYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQW5pbWF0
b3IucHJvdG90eXBlKTsKK0NhbnZhc1N0YXJzQW5pbWF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gQ2FudmFzU3RhcnNBbmltYXRvcjsKKworQ2FudmFzU3RhcnNBbmltYXRvci5wcm90b3R5cGUu
YW5pbWF0ZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9jb250ZXh0LmJlZ2luUGF0aCgpOwor
ICAgIHRoaXMuX2NvbnRleHQuZmlsbFN0eWxlID0gJ2JsYWNrJzsKKyAgICB0aGlzLl9jb250ZXh0
LnJlY3QoMCwgMCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLndpZHRoLCB0aGlzLl9iZW5j
aG1hcmsuX3N0YWdlLnNpemUuaGVpZ2h0KTsKKyAgICB0aGlzLl9jb250ZXh0LmZpbGwoKTsKKyAg
IHJldHVybiBTdGFnZUFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlLmNhbGwodGhpcyk7Cit9CisK
K2Z1bmN0aW9uIENhbnZhc1N0YXJzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICBTdGFnZUJlbmNobWFyay5jYWxsKHRoaXMsIHN1
aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpOworfQorCitDYW52
YXNTdGFyc0JlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJr
LnByb3RvdHlwZSk7CitDYW52YXNTdGFyc0JlbmNobWFyay5wcm90b3R5cGUuY29uc3RydWN0b3Ig
PSBDYW52YXNTdGFyc0JlbmNobWFyazsKKworQ2FudmFzU3RhcnNCZW5jaG1hcmsucHJvdG90eXBl
LmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKK3sKKyAgIC8vIEF0dGFjaCB0aGUgc3Rh
Z2UgdG8gdGhlIGJlbmNobWFyay4KKyAgIHJldHVybiBuZXcgQ2FudmFzU3RhcnNTdGFnZShlbGVt
ZW50LCB0aGlzLl9vcHRpb25zKTsKK30KKworQ2FudmFzU3RhcnNCZW5jaG1hcmsucHJvdG90eXBl
LmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQoreworICAgLy8gQXR0YWNoIHRoZSBhbmltYXRv
ciB0byB0aGUgYmVuY2htYXJrLgorICAgcmV0dXJuIG5ldyBDYW52YXNTdGFyc0FuaW1hdG9yKHRo
aXMpOworfQorCit3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRl
LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAvLyBUaGlz
IGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSB0ZXN0IGhhcm5lc3Mgd2hpY2ggc3RhcnRzIHRo
ZQorICAgLy8gdGVzdCBieSBjcmVhdGluZyB5b3VyIGJlbmNobWFyayBvYmplY3QuCisgICByZXR1
cm4gbmV3IENhbnZhc1N0YXJzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRU
YWJsZSwgcHJvZ3Jlc3NCYXIpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21h
aW4uanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL21haW4uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNDIgQEAKK2Z1bmN0
aW9uIEJlbmNobWFya1N0YXRlKHRlc3RJbnRlcnZhbCkKK3sKKyAgICB0aGlzLl9jdXJyZW50VGlt
ZU9mZnNldCA9IDA7CisgICAgdGhpcy5fc3RhZ2VJbnRlcnZhbCA9IHRlc3RJbnRlcnZhbCAvIEJl
bmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRDsKK30KKworLy8gVGhlIGVudW0gdmFsdWVzIGFu
ZCB0aGUgbWVzc2FnZXMgc2hvdWxkIGJlIGluIHRoZSBzYW1lIG9yZGVyCitCZW5jaG1hcmtTdGF0
ZS5zdGFnZXMgPSB7CisgICAgV0FSTUlOR19VUDogMCwKKyAgICBTQU1QTElORzogMSwKKyAgICBG
SU5JU0hFRDogMiwKKyAgICBtZXNzYWdlczogWyAiV2FybWluZyB1cCIsICJTYW1wbGluZyIsICJG
aW5pc2hlZCIgXQorfQorCitCZW5jaG1hcmtTdGF0ZS5wcm90b3R5cGUgPQoreworICAgIF90aW1l
T2Zmc2V0OiBmdW5jdGlvbihzdGFnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGFnZSAqIHRo
aXMuX3N0YWdlSW50ZXJ2YWw7CisgICAgfSwKKyAgICAKKyAgICBfbWVzc2FnZTogZnVuY3Rpb24o
c3RhZ2UsIHRpbWVPZmZzZXQpCisgICAgeworICAgICAgICBpZiAoc3RhZ2UgPT0gQmVuY2htYXJr
U3RhdGUuc3RhZ2VzLkZJTklTSEVEKQorICAgICAgICAgICAgcmV0dXJuIEJlbmNobWFya1N0YXRl
LnN0YWdlcy5tZXNzYWdlc1tzdGFnZV07CisKKyAgICAgICAgcmV0dXJuIEJlbmNobWFya1N0YXRl
LnN0YWdlcy5tZXNzYWdlc1tzdGFnZV0gKyAiLi4uICgiCisgICAgICAgICAgICArIE1hdGguZmxv
b3IoKHRpbWVPZmZzZXQgLSB0aGlzLl90aW1lT2Zmc2V0KHN0YWdlKSkgLyAxMDAwKSArICIvIgor
ICAgICAgICAgICAgKyBNYXRoLmZsb29yKCh0aGlzLl90aW1lT2Zmc2V0KHN0YWdlICsgMSkgLSB0
aGlzLl90aW1lT2Zmc2V0KHN0YWdlKSkgLyAxMDAwKSArICIpIjsKKyAgICB9LAorICAgIAorICAg
IHVwZGF0ZTogZnVuY3Rpb24oY3VycmVudFRpbWVPZmZzZXQpCisgICAgeworICAgICAgICB0aGlz
Ll9jdXJyZW50VGltZU9mZnNldCA9IGN1cnJlbnRUaW1lT2Zmc2V0OworICAgIH0sCisgICAgCisg
ICAgc2FtcGxpbmdUaW1lT2Zmc2V0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5fdGltZU9mZnNldChCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuU0FNUExJTkcpOworICAgIH0s
CisgICAgCisgICAgY3VycmVudFN0YWdlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmb3Ig
KHZhciBzdGFnZSA9IEJlbmNobWFya1N0YXRlLnN0YWdlcy5XQVJNSU5HX1VQOyBzdGFnZSA8IEJl
bmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRDsgKytzdGFnZSkgeworICAgICAgICAgICAgaWYg
KHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IDwgdGhpcy5fdGltZU9mZnNldChzdGFnZSArIDEpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGFnZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
QmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVEOworICAgIH0sCisgICAgCisgICAgY3VycmVu
dE1lc3NhZ2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9tZXNzYWdl
KHRoaXMuY3VycmVudFN0YWdlKCksIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0KTsKKyAgICB9LAor
ICAgIAorICAgIGN1cnJlbnRQcm9ncmVzczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IC8gdGhpcy5fdGltZU9mZnNldChCZW5jaG1hcmtT
dGF0ZS5zdGFnZXMuRklOSVNIRUQpOworICAgIH0KK30KKworZnVuY3Rpb24gQW5pbWF0b3IoYmVu
Y2htYXJrKQoreworICAgIHRoaXMuX2JlbmNobWFyayA9IGJlbmNobWFyazsKKyAgICB0aGlzLl9m
cmFtZUNvdW50ID0gMDsKKyAgICB0aGlzLl9kcm9wRnJhbWVDb3VudCA9IDE7CisgICAgdGhpcy5f
bWVhc3VyZUZyYW1lQ291bnQgPSAzOyAKKyAgICB0aGlzLl9yZWZlcmVuY2VUaW1lID0gMDsKKyAg
ICB0aGlzLl9jdXJyZW50VGltZU9mZnNldCA9IDA7CisgICAgdGhpcy5fZXN0aW1hdG9yID0gbmV3
IEthbG1hbkVzdGltYXRvcigpOworfQorCitBbmltYXRvci5wcm90b3R5cGUgPQoreworICAgIHN0
YXJ0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9pbnRlcnZhbElkID0gc2V0SW50
ZXJ2YWwodGhpcy5hbmltYXRlLmJpbmQodGhpcyksIDEpOworICAgIH0sCisgICAgCisgICAgdGlt
ZURlbHRhOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFRp
bWVPZmZzZXQgLSB0aGlzLl9zdGFydFRpbWVPZmZzZXQ7CisgICAgfSwKKyAgICAKKyAgICBhbmlt
YXRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgY3VycmVudFRpbWUgPSBwZXJmb3Jt
YW5jZS5ub3coKTsKKyAgICAgICAgCisgICAgICAgIGlmICghdGhpcy5fcmVmZXJlbmNlVGltZSkK
KyAgICAgICAgICAgIHRoaXMuX3JlZmVyZW5jZVRpbWUgPSBjdXJyZW50VGltZTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgPSBjdXJyZW50VGltZSAt
IHRoaXMuX3JlZmVyZW5jZVRpbWU7CisKKyAgICAgICAgaWYgKCF0aGlzLl9mcmFtZUNvdW50KQor
ICAgICAgICAgICAgdGhpcy5fc3RhcnRUaW1lT2Zmc2V0ID0gdGhpcy5fY3VycmVudFRpbWVPZmZz
ZXQ7CisKKyAgICAgICAgLy8gU3RhcnQgbWVhc3VyaW5nIGFmdGVyIGRyb3BwaW5nIF9kcm9wRnJh
bWVDb3VudCBmcmFtZXMuCisgICAgICAgIGlmICh0aGlzLl9mcmFtZUNvdW50ID09IHRoaXMuX2Ry
b3BGcmFtZUNvdW50KQorICAgICAgICAgICAgdGhpcy5fbWVhc3VyZVRpbWVPZmZzZXQgPSB0aGlz
Ll9jdXJyZW50VGltZU9mZnNldDsKKworICAgICAgICArK3RoaXMuX2ZyYW1lQ291bnQ7CisKKyAg
ICAgICAgLy8gRHJvcCBfZHJvcEZyYW1lQ291bnQgZnJhbWVzIGFuZCBtZWFzdXJlIHRoZSBhdmVy
YWdlIG9mIF9tZWFzdXJlRnJhbWVDb3VudCBmcmFtZXMuCisgICAgICAgIGlmICh0aGlzLl9mcmFt
ZUNvdW50IDwgdGhpcy5fZHJvcEZyYW1lQ291bnQgKyB0aGlzLl9tZWFzdXJlRnJhbWVDb3VudCkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIC8vIEdldCB0aGUgYXZlcmFnZSBG
UFMgb2YgX21lYXN1cmVGcmFtZUNvdW50IGZyYW1lcyBvdmVyIG1lYXN1cmVUaW1lRGVsdGEuCisg
ICAgICAgIHZhciBtZWFzdXJlVGltZURlbHRhID0gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgLSB0
aGlzLl9tZWFzdXJlVGltZU9mZnNldDsKKyAgICAgICAgdmFyIGN1cnJlbnRGcmFtZVJhdGUgPSBN
YXRoLmZsb29yKDEwMDAgLyAobWVhc3VyZVRpbWVEZWx0YSAvIHRoaXMuX21lYXN1cmVGcmFtZUNv
dW50KSk7CisgICAgICAgICAKKyAgICAgICAgLy8gVXNlIEthbG1hbiBmaWx0ZXIgdG8gZ2V0IGEg
bW9yZSBub24tZmx1Y3R1YXRpbmcgZnJhbWUgcmF0ZS4KKyAgICAgICAgaWYgKHRoaXMuX2JlbmNo
bWFyay5vcHRpb25zLmVzdGltYXRlZEZyYW1lUmF0ZSkKKyAgICAgICAgICAgIGN1cnJlbnRGcmFt
ZVJhdGUgPSB0aGlzLl9lc3RpbWF0b3IuZXN0aW1hdGUobWVhc3VyZVRpbWVEZWx0YSwgY3VycmVu
dEZyYW1lUmF0ZSk7CisgICAgICAgIAorICAgICAgICAvLyBBZGp1c3QgdGhlIHRlc3QgdG8gcmVh
Y2ggdGhlIGRlc2lyZWQgRlBTLgorICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fYmVuY2htYXJr
LnVwZGF0ZSh0aGlzLl9jdXJyZW50VGltZU9mZnNldCwgdGhpcy50aW1lRGVsdGEoKSwgY3VycmVu
dEZyYW1lUmF0ZSk7CisgICAgICAgIAorICAgICAgICAvLyBTdG9wIHRoZSBhbmltYXRvciBpZiB0
aGUgYmVuY2htYXJrIGhhcyBmaW5pc2hlZC4KKyAgICAgICAgaWYgKCFyZXN1bHQgJiYgdHlwZW9m
IHRoaXMuX2ludGVydmFsSWQgIT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICBjbGVhckludGVy
dmFsKHRoaXMuX2ludGVydmFsSWQpOworCisgICAgICAgIC8vIFN0YXJ0IHRoZSBuZXh0IGRyb3Av
bWVhc3VyZSBjeWNsZS4KKyAgICAgICAgdGhpcy5fZnJhbWVDb3VudCA9IDA7CisgICAgICAgIAor
ICAgICAgICAvLyByZXN1bHQgbWF5IHN0b3AgdGhlIGFuaW1hdG9yIGlmIHJlcXVlc3RBbmltYXRp
b25GcmFtZSgpIGhhcyBiZWVuIHVzZWQuCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwK
KyAgICAKKyAgICBhbmltYXRlTG9vcDogZnVuY3Rpb24odGltZXN0YW1wKQorICAgIHsKKyAgICAg
ICAgaWYgKHRoaXMuYW5pbWF0ZSgpKQorICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1l
KHRoaXMuYW5pbWF0ZUxvb3AuYmluZCh0aGlzKSk7CisgICAgfQorfQorCitmdW5jdGlvbiBCZW5j
aG1hcmsob3B0aW9ucykKK3sKKyAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9uczsKKyAgICB0aGlz
Ll9tZXRob2QgPSB0aGlzLl9vcHRpb25zWyJtZXRob2QiXSB8fCAicmVxdWVzdEFuaW1hdGlvbkZy
YW1lIjsKKworICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7CisgICAgdGhpcy5fcmVjb3JkSW50
ZXJ2YWwgPSAyMDA7ICAgIAorICAgIHRoaXMuX2lzU2FtcGxpbmcgPSBmYWxzZTsKKworICAgIHZh
ciBnYWluID0gcGFyc2VJbnQodGhpcy5fb3B0aW9uc1siZ2FpbiJdKSB8fCAxOworICAgIHZhciBs
b3dWYWx1ZSA9IC1wYXJzZUludCh0aGlzLl9vcHRpb25zWyJhZGRMaW1pdCJdKSB8fCAxOworICAg
IHZhciBoaWdoVmFsdWUgPSBwYXJzZUludCh0aGlzLl9vcHRpb25zWyJyZW1vdmVMaW1pdCJdKSB8
fCAxOworICAgIAorICAgIHRoaXMuX2NvbnRyb2xsZXIgPSBuZXcgUElEQ29udHJvbGxlcihnYWlu
LCBvcHRpb25zLmZyYW1lUmF0ZSwgbG93VmFsdWUsIGhpZ2hWYWx1ZSk7CisgICAgdGhpcy5fc2Ft
cGxlciA9IG5ldyBTYW1wbGVyKDIpOworICAgIHRoaXMuX3N0YXRlID0gbmV3IEJlbmNobWFya1N0
YXRlKHRoaXMub3B0aW9ucy50ZXN0SW50ZXJ2YWwpOyAgICAKK30KKworQmVuY2htYXJrLnByb3Rv
dHlwZSA9Cit7CisgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGxvYWQgZXZlbnQgbGlzdGVuZXIgb3Ig
ZnJvbSB0aGlzLnJ1bigpLgorICAgIHN0YXJ0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBp
ZiAodGhpcy5fbWV0aG9kID09ICJzZXRJbnRlcnZhbCIpCisgICAgICAgICAgICB0aGlzLl9hbmlt
YXRvci5zdGFydCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9hbmltYXRvci5h
bmltYXRlTG9vcCgpOworICAgIH0sCisgICAgCisgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGFuaW1h
dG9yIHRvIGFkanVzdCB0aGUgY29tcGxleGl0eSBvZiB0aGUgdGVzdC4KKyAgICB1cGRhdGU6IGZ1
bmN0aW9uKGN1cnJlbnRUaW1lT2Zmc2V0LCB0aW1lRGVsdGEsIGN1cnJlbnRGcmFtZVJhdGUpCisg
ICAgeworICAgICAgICB0aGlzLl9zdGF0ZS51cGRhdGUoY3VycmVudFRpbWVPZmZzZXQpOworICAg
ICAgICAKKyAgICAgICAgdmFyIHN0YWdlID0gdGhpcy5fc3RhdGUuY3VycmVudFN0YWdlKCk7Cisg
ICAgICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuRklOSVNIRUQpIHsKKyAg
ICAgICAgICAgIHRoaXMuY2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChzdGFnZSA9PSBCZW5jaG1hcmtTdGF0ZS5zdGFnZXMuU0FNUExJ
TkcgJiYgIXRoaXMuX2lzU2FtcGxpbmcpIHsKKyAgICAgICAgICAgIHRoaXMuX3NhbXBsZXIuc3Rh
cnRTYW1wbGluZyh0aGlzLl9zdGF0ZS5zYW1wbGluZ1RpbWVPZmZzZXQoKSk7CisgICAgICAgICAg
ICB0aGlzLl9pc1NhbXBsaW5nID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0dW5l
VmFsdWUgPSAwOworICAgICAgICBpZiAoISh0aGlzLl9pc1NhbXBsaW5nICYmIHRoaXMub3B0aW9u
cy5maXhUZXN0Q29tcGxleGl0eSkpIHsKKyAgICAgICAgICAgIC8vIFRoZSByZWxhdGlvbnNoaXAg
YmV0d2VlbiBmcmFtZVJhdGUgYW5kIHRlc3QgY29tcGxleGl0eSBpcyBpbnZlcnNlLXByb3BvcnRp
b25hbCBzbyB3ZQorICAgICAgICAgICAgLy8gbmVlZCB0byB1c2UgdGhlIG5lZ2F0aXZlIG9mIFBJ
RENvbnRyb2xsZXIudHVuZSgpIHRvIGNoYW5nZSB0aGUgY29tcGxleGl0eSBvZiB0aGUgdGVzdC4K
KyAgICAgICAgICAgIHR1bmVWYWx1ZSA9IC10aGlzLl9jb250cm9sbGVyLnR1bmUoY3VycmVudEZy
YW1lUmF0ZSwgdGltZURlbHRhIC8gMTAwMCk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgY3Vy
cmVudENvbXBsZXhpdHkgPSB0aGlzLnR1bmUodHVuZVZhbHVlKTsKKyAgICAgICAgdGhpcy5yZWNv
cmQoY3VycmVudFRpbWVPZmZzZXQsIGN1cnJlbnRDb21wbGV4aXR5LCBjdXJyZW50RnJhbWVSYXRl
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKyAgICAKKyAgICByZWNvcmQ6IGZ1bmN0
aW9uKGN1cnJlbnRUaW1lT2Zmc2V0LCBjdXJyZW50Q29tcGxleGl0eSwgY3VycmVudEZyYW1lUmF0
ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3NhbXBsZXIuc2FtcGxlKGN1cnJlbnRUaW1lT2Zmc2V0
LCBbY3VycmVudENvbXBsZXhpdHksIGN1cnJlbnRGcmFtZVJhdGVdKTsKKyAgICAgICAgCisgICAg
ICAgIGlmICh0eXBlb2YgdGhpcy5fcmVjb3JkVGltZU9mZnNldCA9PSAidW5kZWZpbmVkIikKKyAg
ICAgICAgICAgIHRoaXMuX3JlY29yZFRpbWVPZmZzZXQgPSBjdXJyZW50VGltZU9mZnNldDsKKwor
ICAgICAgICB2YXIgc3RhZ2UgPSB0aGlzLl9zdGF0ZS5jdXJyZW50U3RhZ2UoKTsKKyAgICAgICAg
aWYgKHN0YWdlICE9IEJlbmNobWFya1N0YXRlLnN0YWdlcy5GSU5JU0hFRCAmJiBjdXJyZW50VGlt
ZU9mZnNldCA8IHRoaXMuX3JlY29yZFRpbWVPZmZzZXQgKyB0aGlzLl9yZWNvcmRJbnRlcnZhbCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLnNob3dSZXN1bHRzKHRoaXMuX3N0
YXRlLmN1cnJlbnRNZXNzYWdlKCksIHRoaXMuX3N0YXRlLmN1cnJlbnRQcm9ncmVzcygpKTsKKyAg
ICAgICAgdGhpcy5fcmVjb3JkVGltZU9mZnNldCA9IGN1cnJlbnRUaW1lT2Zmc2V0OworICAgIH0s
CisgICAgCisgICAgcnVuOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLnN0YXJ0KCk7
CisKKyAgICAgICAgdmFyIHByb21pc2UgPSBuZXcgU2ltcGxlUHJvbWlzZTsKKyAgICAgICAgdmFy
IHNlbGYgPSB0aGlzOworICAgICAgICBmdW5jdGlvbiByZXNvbHZlV2hlbkZpbmlzaGVkKCkgewor
ICAgICAgICAgICAgaWYgKHR5cGVvZiBzZWxmLl9zdGF0ZSAhPSAidW5kZWZpbmVkIiAmJiAoc2Vs
Zi5fc3RhdGUuY3VycmVudFN0YWdlKCkgPT0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLkZJTklTSEVE
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZS5yZXNvbHZlKHNlbGYuX3NhbXBsZXIp
OworICAgICAgICAgICAgc2V0VGltZW91dChyZXNvbHZlV2hlbkZpbmlzaGVkLmJpbmQoc2VsZiks
IDUwKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmVzb2x2ZVdoZW5GaW5pc2hlZCgp
OworICAgICAgICByZXR1cm4gcHJvbWlzZTsKKyAgICB9Cit9CisKK3dpbmRvdy5iZW5jaG1hcmtD
bGllbnQgPSB7fTsKKworLy8gVGhpcyBldmVudCBsaXN0ZW5lciBydW5zIHRoZSB0ZXN0IGlmIGl0
IGlzIGxvYWRlZCBvdXRzaWRlIHRoZSBiZW5jaG1hcmsgcnVubmVyLgord2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpCit7CisgICAgaWYgKHdpbmRvdy5zZWxmICE9PSB3
aW5kb3cudG9wKQorICAgICAgICByZXR1cm47CisgICAgd2luZG93LmJlbmNobWFyayA9IHdpbmRv
dy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlKG51bGwsIG51bGwsIDMwMDAwLCA1MCwgbnVsbCwgbnVs
bCk7CisgICAgd2luZG93LmJlbmNobWFyay5zdGFydCgpOworfSk7CisKKy8vIFRoaXMgZnVuY3Rp
b24gaXMgY2FsbGVkIGZyb20gdGhlIHN1aXRlIGNvbnRyb2xsZXIgcnVuLWNhbGxiYWNrIHdoZW4g
cnVubmluZyB0aGUgYmVuY2htYXJrIHJ1bm5lci4KK3dpbmRvdy5ydW5CZW5jaG1hcmsgPSBmdW5j
dGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQorewor
ICAgIHZhciBtZXJnZWRPcHRpb25zID0gVXRpbGl0aWVzLm1lcmdlT2JqZWN0cyhvcHRpb25zLCBV
dGlsaXRpZXMucGFyc2VQYXJhbWV0ZXJzKCkpOworICAgIHdpbmRvdy5iZW5jaG1hcmsgPSB3aW5k
b3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZShzdWl0ZSwgdGVzdCwgbWVyZ2VkT3B0aW9ucywgcmVj
b3JkVGFibGUsIHByb2dyZXNzQmFyKTsKKyAgICByZXR1cm4gd2luZG93LmJlbmNobWFyay5ydW4o
KTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMv
bWF0aC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL21hdGguanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
NzQgQEAKK3ZhciBNYXRyaXggPQoreworICAgIGluaXQ6IGZ1bmN0aW9uKG0sIG4sIHYpCisgICAg
eworICAgICAgICByZXR1cm4gQXJyYXkobSAqIG4pLmZpbGwodik7CisgICAgfSwKKyAgICAKKyAg
ICB6ZXJvczogZnVuY3Rpb24obSwgbikKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRyaXguaW5p
dChtLCBuLCAwKTsKKyAgICB9LAorICAgIAorICAgIG9uZXM6IGZ1bmN0aW9uKG0sIG4pCisgICAg
eworICAgICAgICByZXR1cm4gTWF0cml4LmluaXQobSwgbiwgMSk7CisgICAgfSwKKyAgICAKKyAg
ICBpZGVudGl0eTogZnVuY3Rpb24obikKKyAgICB7CisgICAgICAgIHZhciBvdXQgPSBuZXcgTWF0
cml4Lnplcm9zKG4sIG4pOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkKKyAg
ICAgICAgICAgIG91dFtpICogbiArIGldID0gMTsKKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9
LAorICAgIAorICAgIHN0cjogZnVuY3Rpb24oQSwgbiwgbSkKKyAgICB7CisgICAgICAgIHZhciBv
dXQgPSAobSA+IDEgJiYgbiA+IDEgPyAiTWF0cml4WyIgKyBuICsgIiwgIiArIG0gOiAiVmVjdG9y
WyIgKyBtICogbikgKyAiXSA9IFsiOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4gKiBt
OyArK2kpIHsKKyAgICAgICAgICAgIG91dCArPSBBW2ldOworICAgICAgICAgICAgaWYgKGkgPCBu
ICogbSAtIDEpCisgICAgICAgICAgICAgICAgb3V0ICs9ICIsICI7CisgICAgICAgIH0gICAgICAg
CisgICAgICAgIHJldHVybiBvdXQgKyAiXSI7CisgICAgfSwKKyAgICAKKyAgICBwb3M6IGZ1bmN0
aW9uKG0sIGksIGopCisgICAgeworICAgICAgICByZXR1cm4gbSAqIGkgKyBqOworICAgIH0sCisg
ICAgCisgICAgYWRkOiBmdW5jdGlvbihBLCBCLCBuLCBtKQorICAgIHsKKyAgICAgICAgdmFyIG91
dCA9IE1hdHJpeC56ZXJvcyhuLCBtKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuICog
bTsgKytpKQorICAgICAgICAgICAgb3V0W2ldID0gQVtpXSArIEJbaV07CisgICAgICAgIHJldHVy
biBvdXQ7CisgICAgfSwKKyAgICAKKyAgICBzdWJ0cmFjdDogZnVuY3Rpb24oQSwgQiwgbiwgbSkK
KyAgICB7CisgICAgICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3MobiwgbSk7CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbiAqIG07ICsraSkKKyAgICAgICAgICAgIG91dFtpXSA9IEFbaV0g
LSBCW2ldOworICAgICAgICByZXR1cm4gb3V0OworICAgIH0sCisgICAgCisgICAgc2NhbGU6IGZ1
bmN0aW9uKHMsIEEsIG4sIG0pCisgICAgeworICAgICAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9z
KG4sIG0pOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4gKiBtOyArK2kpCisgICAgICAg
ICAgICBvdXRbaV0gPSBzICogQVtpXTsKKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9LAorICAg
IAorICAgIHRyYW5zcG9zZTogZnVuY3Rpb24oQSwgbiwgbSkKKyAgICB7CisgICAgICAgIHZhciBv
dXQgPSBNYXRyaXguemVyb3MobSwgbik7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsg
KytpKSB7CisgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG07ICsraikKKyAgICAgICAg
ICAgICAgICBvdXRbTWF0cml4LnBvcyhuLCBpLCBqKV0gPSBBW01hdHJpeC5wb3MobSwgaiwgaSld
OworICAgICAgICB9ICAgICAgIAorICAgICAgICByZXR1cm4gb3V0OworICAgIH0sCisgICAgCisg
ICAgbXVsdGlwbHk6IGZ1bmN0aW9uKEEsIEIsIG4sIG0sIHApCisgICAgeworICAgICAgICB2YXIg
b3V0ID0gTWF0cml4Lnplcm9zKG4sIHApOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47
ICsraSkgeworICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwOyArK2opIHsKKyAgICAg
ICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IG07ICsraykgeworICAgICAgICAgICAgICAg
ICAgICBvdXRbTWF0cml4LnBvcyhwLCBpLCBqKV0gKz0gQVtNYXRyaXgucG9zKG0sIGksIGspXSAq
IEJbTWF0cml4LnBvcyhwLCBrLCBqKV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIHJldHVybiBvdXQ7CisgICAgfQorfQorCit2YXIgVmVjdG9y
MyA9Cit7CisgICAgemVyb3M6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRy
aXguemVyb3MoMSwgMyk7CisgICAgfSwKKyAgICAKKyAgICBvbmVzOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICByZXR1cm4gTWF0cml4Lm9uZXMoMSwgMyk7CisgICAgfSwKKyAgICAKKyAgICBz
dHI6IGZ1bmN0aW9uKHYpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LnN0cih2LCAxLCAz
KTsKKyAgICB9LAorICAgIAorICAgIGFkZDogZnVuY3Rpb24odiwgdykKKyAgICB7CisgICAgICAg
IHJldHVybiBNYXRyaXguYWRkKHYsIHcsIDEsIDMpOworICAgIH0sCisgICAgCisgICAgc3VidHJh
Y3Q6IGZ1bmN0aW9uKHYsIHcpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LnN1YnRyYWN0
KHYsIHcsIDEsIDMpOworICAgIH0sCisgICAgCisgICAgc2NhbGU6IGZ1bmN0aW9uKHMsIHYpCisg
ICAgeworICAgICAgICByZXR1cm4gTWF0cml4LnNjYWxlKHMsIHYsIDEsIDMpOworICAgIH0sCisg
ICAgCisgICAgbXVsdGlwbHlNYXRyaXgzOiBmdW5jdGlvbih2LCBBKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIE1hdHJpeC5tdWx0aXBseSh2LCBBLCAxLCAzLCAzKTsKKyAgICB9LAorICAgIAorICAg
IG11bHRpcGx5VmVjdG9yMzogZnVuY3Rpb24odiwgdykKKyAgICB7CisgICAgICAgIHZhciBvdXQg
PSAwOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7ICsraSkKKyAgICAgICAgICAgIG91
dCArPSB2W2ldICogd1tpXTsKKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9Cit9CisKK3ZhciBN
YXRyaXgzID0KK3sKKyAgICB6ZXJvczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IE1hdHJpeC56ZXJvcygzLCAzKTsKKyAgICB9LAorICAgIAorICAgIGlkZW50aXR5OiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LmlkZW50aXR5KDMsIDMpOworICAgIH0s
CisgICAgCisgICAgc3RyOiBmdW5jdGlvbihBKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJp
eC5zdHIoQSwgMywgMyk7CisgICAgfSwKKyAgICAKKyAgICBwb3M6IGZ1bmN0aW9uKGksIGopCisg
ICAgeworICAgICAgICByZXR1cm4gTWF0cml4LnBvcygzLCBpLCBqKTsKKyAgICB9LAorICAgIAor
ICAgIGFkZDogZnVuY3Rpb24oQSwgQikKKyAgICB7CisgICAgICAgIHJldHVybiBNYXRyaXguYWRk
KEEsIEIsIDMsIDMpOworICAgIH0sCisgICAgCisgICAgc3VidHJhY3Q6IGZ1bmN0aW9uKEEsIEIp
CisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4LnN1YnRyYWN0KEEsIEIsIDMsIDMpOworICAg
IH0sCisgICAgCisgICAgc2NhbGU6IGZ1bmN0aW9uKHMsIEEpCisgICAgeworICAgICAgICByZXR1
cm4gTWF0cml4LnNjYWxlKHMsIEEsIDMsIDMpOworICAgIH0sCisgICAgCisgICAgdHJhbnNwb3Nl
OiBmdW5jdGlvbihBKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hdHJpeC50cmFuc3Bvc2UoQSwg
MywgMyk7CisgICAgfSwKKyAgICAKKyAgICBtdWx0aXBseU1hdHJpeDM6IGZ1bmN0aW9uKEEsIEIp
CisgICAgeworICAgICAgICByZXR1cm4gTWF0cml4Lm11bHRpcGx5KEEsIEIsIDMsIDMsIDMpOwor
ICAgIH0sCisgICAgCisgICAgbXVsdGlwbHlWZWN0b3IzOiBmdW5jdGlvbihBLCB2KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIE1hdHJpeC5tdWx0aXBseShBLCB2LCAzLCAzLCAxKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIFBJRENvbnRyb2xsZXIoSywgeXNwLCB1bG93LCB1aGlnaCkKK3sKKyAgICB0
aGlzLl95c3AgPSB5c3A7CisKKyAgICB0aGlzLl9UZCA9IDU7CisgICAgdGhpcy5fVGkgPSAxNTsK
KworICAgIHRoaXMuX0twID0gSzsKKyAgICB0aGlzLl9LZCA9IEsgLyB0aGlzLl9UZDsKKyAgICB0
aGlzLl9LaSA9IEsgLyB0aGlzLl9UaTsKKworICAgIHRoaXMuX2VvbGQgPSAwOworICAgIHRoaXMu
X0kgPSAwOworfQorCitQSURDb250cm9sbGVyLnByb3RvdHlwZSA9Cit7CisgICAgX3NhdDogZnVu
Y3Rpb24odiwgbG93LCBoaWdoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHYgPCBsb3cgPyBsb3cg
OiAodiA+IGhpZ2ggPyBoaWdoIDogdik7CisgICAgfSwKKyAgICAKKyAgICB0dW5lOiBmdW5jdGlv
bih5LCBoKQorICAgIHsKKyAgICAgICAgLy8gQ3VycmVudCBlcnJvci4KKyAgICAgICAgdmFyIGUg
PSB0aGlzLl95c3AgLSB5OworCisgICAgICAgIC8vIFByb3BvcnRpb25hbCB0ZXJtLgorICAgICAg
ICB2YXIgUCA9IHRoaXMuX0twICogZTsKKyAgICAgICAgCisgICAgICAgIC8vIERlcml2YXRpdmUg
dGVybSBpcyB0aGUgc2xvcGUgb2YgdGhlIGN1cnZlIGF0IHRoZSBjdXJyZW50IHRpbWUuCisgICAg
ICAgIHZhciBEID0gdGhpcy5fS2QgKiAoZSAtIHRoaXMuX2VvbGQpIC8gaDsKKworICAgICAgICAv
LyBJbnRlZ3JhbCB0ZXJtIGlzIHRoZSBhcmVhIHVuZGVyIHRoZSBjdXJ2ZSBzdGFydGluZyBmcm9t
IHRoZSBiZWdpbmluZyB0aWxsIHRoZSBjdXJyZW50IHRpbWUuCisgICAgICAgIHRoaXMuX0kgKz0g
dGhpcy5fS2kgKiAoKGUgKyB0aGlzLl9lb2xkKSAvIDIpICogaDsKKworICAgICAgICAvLyBwaWQg
Y29udHJvbGxlciB2YWx1ZS4KKyAgICAgICAgdmFyIHYgPSBQICsgRCArIHRoaXMuX0k7CisgICAg
ICAgIAorICAgICAgICAvLyBBdm9pZCBzcGlrZXMgYnkgYXBwbHlpbmcgYWN0dWF0b3Igc2F0dXJh
dGlvbi4KKyAgICAgICAgdmFyIHUgPSB0aGlzLl9zYXQodiwgdGhpcy5fdWxvdywgdGhpcy5fdWhp
Z2gpOyAgICAgICAgCisKKyAgICAgICAgdGhpcy5fZW9sZCA9IGU7CisgICAgICAgIHJldHVybiB1
OworICAgIH0KK30KKworZnVuY3Rpb24gS2FsbWFuRXN0aW1hdG9yKCkKK3sKKyAgICB0aGlzLl9t
YXRBID0gTWF0cml4My5pZGVudGl0eSgpOworICAgIAorICAgIHRoaXMuX3ZlY0ggPSBWZWN0b3Iz
Lnplcm9zKCk7CisgICAgdGhpcy5fdmVjSFswXSA9IDE7CisgICAgCisgICAgdGhpcy5fbWF0USA9
IE1hdHJpeDMuaWRlbnRpdHkoKTsKKyAgICB0aGlzLl9SID0gMTAwMDsKKyAgICAKKyAgICB0aGlz
Ll92ZWNYX2VzdCA9IFZlY3RvcjMub25lcygpOworICAgIHRoaXMuX21hdFBfZXN0ID0gTWF0cml4
My56ZXJvcygpOworfQorCitLYWxtYW5Fc3RpbWF0b3IucHJvdG90eXBlID0KK3sKKyAgICBlc3Rp
bWF0ZTogZnVuY3Rpb24odGltZURlbHRhLCBjdXJyZW50KQorICAgIHsKKyAgICAgICAgLy8gVXBk
YXRlIHRoZSB0cmFuc2l0aW9uIG1hdHJpeC4KKyAgICAgICAgdGhpcy5fbWF0QVtNYXRyaXgzLnBv
cygwLCAyKV0gPSAxOworCisgICAgICAgIC8vIFByZWRpY3RlZCBzdGF0ZSBhbmQgY292YXJpYW5j
ZS4KKyAgICAgICAgdmFyIHZlY1hfcHJkID0gTWF0cml4My5tdWx0aXBseVZlY3RvcjModGhpcy5f
bWF0QSwgdGhpcy5fdmVjWF9lc3QpOworICAgICAgICB2YXIgbWF0UF9wcmQgPSBNYXRyaXgzLmFk
ZChNYXRyaXgzLm11bHRpcGx5TWF0cml4MyhNYXRyaXgzLm11bHRpcGx5TWF0cml4Myh0aGlzLl9t
YXRBLCB0aGlzLl9tYXRQX2VzdCksIE1hdHJpeDMudHJhbnNwb3NlKHRoaXMuX21hdEEpKSwgdGhp
cy5fbWF0USk7CisKKyAgICAgICAgLy8gRXN0aW1hdGlvbi4KKyAgICAgICAgdmFyIHZlY0IgPSBW
ZWN0b3IzLm11bHRpcGx5TWF0cml4Myh0aGlzLl92ZWNILCBNYXRyaXgzLnRyYW5zcG9zZShtYXRQ
X3ByZCkpOworICAgICAgICB2YXIgUyA9IFZlY3RvcjMubXVsdGlwbHlWZWN0b3IzKHZlY0IsIHRo
aXMuX3ZlY0gpICsgdGhpcy5fUjsKKworICAgICAgICB2YXIgdmVjR2FpbiA9IFZlY3RvcjMuc2Nh
bGUoMS9TLCB2ZWNCKTsKKyAgICAgICAgCisgICAgICAgIC8vIEVzdGltYXRlZCBzdGF0ZSBhbmQg
Y292YXJpYW5jZS4KKyAgICAgICAgdGhpcy5fdmVjWF9lc3QgPSBWZWN0b3IzLmFkZCh2ZWNYX3By
ZCwgVmVjdG9yMy5zY2FsZShjdXJyZW50IC0gVmVjdG9yMy5tdWx0aXBseVZlY3RvcjModGhpcy5f
dmVjSCwgdmVjWF9wcmQpLCB2ZWNHYWluKSk7CisgICAgICAgIHRoaXMuX21hdFBfZXN0ID0gTWF0
cml4My5zdWJ0cmFjdChtYXRQX3ByZCwgTWF0cml4My5zY2FsZShWZWN0b3IzLm11bHRpcGx5VmVj
dG9yMyh2ZWNHYWluLCB0aGlzLl92ZWNIKSwgbWF0UF9wcmQpKTsKKworICAgICAgICAvLyBDb21w
dXRlIHRoZSBlc3RpbWF0ZWQgbWVhc3VyZW1lbnQuCisgICAgICAgIHJldHVybiBWZWN0b3IzLm11
bHRpcGx5VmVjdG9yMyh0aGlzLl92ZWNILCAgdGhpcy5fdmVjWF9lc3QpOworICAgIH0KK30KSW5k
ZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuY3Nz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJj
ZXMvc3RhZ2UuY3NzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5jc3MJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBA
QAoraHRtbCB7CisgICAgaGVpZ2h0OiAxMDAlOworfQorYm9keSB7CisgICAgd2lkdGg6IDEwMCU7
CisgICAgaGVpZ2h0OiAxMDAlOworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgbWFyZ2luOiAw
OworICAgIHBhZGRpbmc6IDA7CisgICAgYmFja2dyb3VuZC1jb2xvcjogI2VhZWFlYTsKK30KKwor
I3N0YWdlIHsKKyAgd2lkdGg6IDEwMCU7CisgIGhlaWdodDogMTAwJTsKKyAgYmFja2dyb3VuZC1j
b2xvcjogI2VhZWFlYTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9yZXNvdXJjZXMvc3RhZ2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxNzkgQEAKK2Z1bmN0aW9uIFJvdGF0ZXIocm90YXRlSW50ZXJ2YWwpCit7
CisgICAgdGhpcy5fdGltZURlbHRhID0gMDsKKyAgICB0aGlzLl9yb3RhdGVJbnRlcnZhbCA9IHJv
dGF0ZUludGVydmFsOworfQorCitSb3RhdGVyLnByb3RvdHlwZSA9Cit7CisgICAgZ2V0IGludGVy
dmFsKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yb3RhdGVJbnRlcnZhbDsKKyAgICB9
LAorICAgIAorICAgIG5leHQ6IGZ1bmN0aW9uKHRpbWVEZWx0YSkKKyAgICB7CisgICAgICAgIHRo
aXMuX3RpbWVEZWx0YSA9ICh0aGlzLl90aW1lRGVsdGEgKyB0aW1lRGVsdGEpICUgdGhpcy5fcm90
YXRlSW50ZXJ2YWw7CisgICAgfSwKKyAgICAKKyAgICBkZWdyZWU6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHJldHVybiAoMzYwICogdGhpcy5fdGltZURlbHRhKSAvIHRoaXMuX3JvdGF0ZUlu
dGVydmFsOworICAgIH0sCisgICAgCisgICAgcm90YXRlWjogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuICJyb3RhdGVaKCIgKyBNYXRoLmZsb29yKHRoaXMuZGVncmVlKCkpICsgImRl
ZykiOworICAgIH0sCisgICAgCisgICAgcm90YXRlOiBmdW5jdGlvbihjZW50ZXIpCisgICAgewor
ICAgICAgICByZXR1cm4gInJvdGF0ZSgiICsgTWF0aC5mbG9vcih0aGlzLmRlZ3JlZSgpKSArICIs
ICIgKyBjZW50ZXIueCArICIsIiArIGNlbnRlci55ICsgIikiOworICAgIH0KK30KKworZnVuY3Rp
b24gU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50
OworfQorCitTdGFnZS5wcm90b3R5cGUgPQoreworICAgIGdldCBzaXplKCkKKyAgICB7CisgICAg
ICAgIHZhciBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmVsZW1lbnQpOwor
ICAgICAgICB2YXIgcGFkZGluZyA9IG5ldyBJbnNldHMoCisgICAgICAgICAgICBwYXJzZUZsb2F0
KHN0eWxlcy5wYWRkaW5nVG9wKSwKKyAgICAgICAgICAgIHBhcnNlRmxvYXQoc3R5bGVzLnBhZGRp
bmdSaWdodCksCisgICAgICAgICAgICBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nQm90dG9tKSwK
KyAgICAgICAgICAgIHBhcnNlRmxvYXQoc3R5bGVzLnBhZGRpbmdUb3ApKTsKKyAgICAgICAgcmV0
dXJuIG5ldyBQb2ludCh0aGlzLmVsZW1lbnQuY2xpZW50V2lkdGggLSBwYWRkaW5nLndpZHRoLCB0
aGlzLmVsZW1lbnQuY2xpZW50SGVpZ2h0IC0gcGFkZGluZy5oZWlnaHQpOworICAgIH0sCisgICAg
CisgICAgcmFuZG9tOiBmdW5jdGlvbihtaW4sIG1heCkKKyAgICB7CisgICAgICAgIHJldHVybiAo
TWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pKSArIG1pbjsKKyAgICB9LAorICAgIAorICAgIHJh
bmRvbUludDogZnVuY3Rpb24obWluLCBtYXgpCisgICAgeworICAgICAgICByZXR1cm4gTWF0aC5m
bG9vcih0aGlzLnJhbmRvbShtaW4sIG1heCkpOworICAgIH0sCisgICAgCisgICAgcmFuZG9tUG9z
aXRpb246IGZ1bmN0aW9uKG1heFBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQ
b2ludCh0aGlzLnJhbmRvbUludCgwLCBtYXhQb3NpdGlvbi54KSwgdGhpcy5yYW5kb21JbnQoMCwg
bWF4UG9zaXRpb24ueSkpOworICAgIH0sCisgICAgCisgICAgcmFuZG9tU3F1YXJlU2l6ZTogZnVu
Y3Rpb24obWluLCBtYXgpCisgICAgeworICAgICAgICB2YXIgc2lkZSA9IHRoaXMucmFuZG9tKG1p
biwgbWF4KTsKKyAgICAgICAgcmV0dXJuIG5ldyBQb2ludChzaWRlLCBzaWRlKTsKKyAgICB9LAor
ICAgIAorICAgIHJhbmRvbVZlbG9jaXR5OiBmdW5jdGlvbihtYXhWZWxvY2l0eSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLnJhbmRvbShtYXhWZWxvY2l0eSAvIDgsIG1heFZlbG9jaXR5KTsK
KyAgICB9LAorICAgIAorICAgIHJhbmRvbUFuZ2xlOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5yYW5kb20oMCwgTWF0aC5QSSAqIDIpOworICAgIH0sCisgICAgCisgICAg
cmFuZG9tQ29sb3I6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBtaW4gPSAzMjsKKyAg
ICAgICAgdmFyIG1heCA9IDI1NiAtIDMyOworICAgICAgICByZXR1cm4gIiMiCisgICAgICAgICAg
ICArIHRoaXMucmFuZG9tSW50KG1pbiwgbWF4KS50b1N0cmluZygxNikKKyAgICAgICAgICAgICsg
dGhpcy5yYW5kb21JbnQobWluLCBtYXgpLnRvU3RyaW5nKDE2KQorICAgICAgICAgICAgKyB0aGlz
LnJhbmRvbUludChtaW4sIG1heCkudG9TdHJpbmcoMTYpOworICAgIH0sCisgICAgCisgICAgcmFu
ZG9tUm90YXRlcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBSb3RhdGVy
KHRoaXMucmFuZG9tKDEwMDAsIDEwMDAwKSk7CisgICAgfSwKKworICAgIHR1bmU6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHRocm93ICJOb3QgaW1wbGVtZW50ZWQiOworICAgIH0sCisgICAg
CisgICAgYW5pbWF0ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhyb3cgIk5vdCBpbXBs
ZW1lbnRlZCI7CisgICAgfSwKKyAgICAKKyAgICBjbGVhcjogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMudHVuZSgtdGhpcy50dW5lKDApKTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIFN0YWdlQW5pbWF0b3IoYmVuY2htYXJrKQoreworICAgIEFuaW1hdG9yLmNhbGwodGhpcywg
YmVuY2htYXJrKTsKK307CisKK1N0YWdlQW5pbWF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShBbmltYXRvci5wcm90b3R5cGUpOworU3RhZ2VBbmltYXRvci5wcm90b3R5cGUuY29uc3RydWN0
b3IgPSBTdGFnZUFuaW1hdG9yOworCitTdGFnZUFuaW1hdG9yLnByb3RvdHlwZS5hbmltYXRlID0g
ZnVuY3Rpb24oKQoreworICAgIGlmICghQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0
aGlzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHRoaXMuX2JlbmNobWFyay5fc3RhZ2Uu
YW5pbWF0ZSh0aGlzLnRpbWVEZWx0YSgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rp
b24gU3RhZ2VCZW5jaG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9n
cmVzc0JhcikKK3sKKyAgICBCZW5jaG1hcmsuY2FsbCh0aGlzLCBvcHRpb25zKTsKKyAgICAKKyAg
ICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFnZSIpOworICAgIGVs
ZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsIGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgpOwor
ICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCBkb2N1bWVudC5ib2R5Lm9mZnNldEhl
aWdodCk7CisgICAgCisgICAgdGhpcy5fc3RhZ2UgPSB0aGlzLmNyZWF0ZVN0YWdlKGVsZW1lbnQp
OworICAgIHRoaXMuX2FuaW1hdG9yID0gdGhpcy5jcmVhdGVBbmltYXRvcigpOworICAgIHRoaXMu
X3N1aXRlID0gc3VpdGU7CisgICAgdGhpcy5fdGVzdCA9IHRlc3Q7CisgICAgdGhpcy5fcmVjb3Jk
VGFibGUgPSByZWNvcmRUYWJsZTsKKyAgICB0aGlzLl9wcm9ncmVzc0JhciA9IHByb2dyZXNzQmFy
OworfQorCitTdGFnZUJlbmNobWFyay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJlbmNobWFy
ay5wcm90b3R5cGUpOworU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU3Rh
Z2VCZW5jaG1hcms7CisKK1N0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1
bmN0aW9uKGVsZW1lbnQpCit7CisgICAgcmV0dXJuIG5ldyBTdGFnZShlbGVtZW50LCB0aGlzLl9v
cHRpb25zKTsKK30KKworU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0g
ZnVuY3Rpb24oKQoreworICAgIHJldHVybiBuZXcgU3RhZ2VBbmltYXRvcih0aGlzKTsKK30KKwor
U3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkKK3sKKyAgICBy
ZXR1cm4gdGhpcy5fc3RhZ2UudHVuZShjb3VudCk7Cit9CisKK1N0YWdlQmVuY2htYXJrLnByb3Rv
dHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gdGhpcy5fc3RhZ2UuY2xlYXIo
KTsKK30KKworU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLnNob3dSZXN1bHRzID0gZnVuY3Rpb24o
bWVzc2FnZSwgcHJvZ3Jlc3MpCit7CisgICAgaWYgKCF0aGlzLl9yZWNvcmRUYWJsZSB8fCAhdGhp
cy5fcHJvZ3Jlc3NCYXIgfHwgIXRoaXMuX3N1aXRlIHx8ICF0aGlzLl90ZXN0KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAodGhpcy5vcHRpb25zLnNob3dSdW5uaW5nUmVzdWx0cykKKyAgICAg
ICAgdGhpcy5fcmVjb3JkVGFibGUuc2hvd1JlY29yZCh0aGlzLl9zdWl0ZSwgdGhpcy5fdGVzdCwg
dGhpcy5fc2FtcGxlciwgbWVzc2FnZSk7CisKKyAgICB0aGlzLl9wcm9ncmVzc0Jhci5zZXRQb3Mo
cHJvZ3Jlc3MpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jl
c291cmNlcy91dGlsaXRpZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3Jlc291cmNlcy91dGlsaXRpZXMuanMJKHJldmlzaW9uIDApCisrKyBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3V0aWxpdGllcy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACit3aW5kb3cuVXRpbGl0aWVzID0KK3sKKyAgICBf
cGFyc2U6IGZ1bmN0aW9uKHN0ciwgc2VwKQorICAgIHsKKyAgICAgICAgdmFyIG91dHB1dCA9IHt9
OworICAgICAgICBzdHIuc3BsaXQoc2VwKS5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQpIHsKKyAgICAg
ICAgICAgIHZhciBpdGVtID0gcGFydC5zcGxpdCgiPSIpOworICAgICAgICAgICAgdmFyIHZhbHVl
ID0gZGVjb2RlVVJJQ29tcG9uZW50KGl0ZW1bMV0pOworICAgICAgICAgICAgaWYgKHZhbHVlWzBd
ID09ICInIiApCisgICAgICAgICAgICAgICAgb3V0cHV0W2l0ZW1bMF1dID0gdmFsdWUuc3Vic3Ry
KDEsIHZhbHVlLmxlbmd0aCAtIDIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IG91dHB1dFtpdGVtWzBdXSA9IHZhbHVlOyAgICAgICAgICAgICAgICAKKyAgICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuIG91dHB1dDsKKyAgICB9LAorICAgIAorICAgIHBhcnNlUGFyYW1ldGVy
czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlKHdpbmRvdy5s
b2NhdGlvbi5zZWFyY2guc3Vic3RyKDEpLCAiJiIpOworICAgIH0sCisgICAgCisgICAgcGFyc2VB
cmd1bWVudHM6IGZ1bmN0aW9uKHN0cikKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wYXJz
ZShzdHIsICIgIik7CisgICAgfSwKKyAgICAKKyAgICBleHRlbmRPYmplY3Q6IGZ1bmN0aW9uKG9i
ajEsIG9iajIpCisgICAgeworICAgICAgICBmb3IgKHZhciBhdHRybmFtZSBpbiBvYmoyKQorICAg
ICAgICAgICAgb2JqMVthdHRybmFtZV0gPSBvYmoyW2F0dHJuYW1lXTsKKyAgICAgICAgcmV0dXJu
IG9iajE7CisgICAgfSwKKyAgICAKKyAgICBjb3B5T2JqZWN0OiBmdW5jdGlvbihvYmopCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5leHRlbmRPYmplY3Qoe30sIG9iaik7CisgICAgfSwKKyAg
ICAKKyAgICBtZXJnZU9iamVjdHM6IGZ1bmN0aW9uKG9iajEsIG9iajIpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5leHRlbmRPYmplY3QodGhpcy5jb3B5T2JqZWN0KG9iajEpLCBvYmoyKTsK
KyAgICB9LAorICAgIAorICAgIGNyZWF0ZVN2Z0VsZW1lbnQ6IGZ1bmN0aW9uKG5hbWUsIGF0dHJz
LCB4bGlua0F0dHJzLCBwYXJlbnQpCisgICAgeworICAgICAgICBjb25zdCBzdmdOYW1lc3BhY2Ug
PSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciOworICAgICAgICBjb25zdCB4bGlua05hbWVz
cGFjZSA9ICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIjsKKworICAgICAgICB2YXIgZWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhzdmdOYW1lc3BhY2UsIG5hbWUpOworICAg
ICAgICAKKyAgICAgICAgZm9yICh2YXIga2V5IGluIGF0dHJzKQorICAgICAgICAgICAgZWxlbWVu
dC5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRyc1trZXldKTsKKyAgICAgICAgICAgIAorICAgICAgICBm
b3IgKHZhciBrZXkgaW4geGxpbmtBdHRycykKKyAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmli
dXRlTlMoeGxpbmtOYW1lc3BhY2UsIGtleSwgeGxpbmtBdHRyc1trZXldKTsKKyAgICAgICAgICAg
IAorICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgICAgIHJldHVybiBl
bGVtZW50OworICAgIH0KK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9yZXNvdXJjZXMveWluLXlhbmcuc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcuc3ZnCShyZXZpc2lvbiAwKQorKysg
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy95aW4teWFuZy5zdmcJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBAQAorPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCAyMDAgMjAwIj4NCisgICAgPGRlZnM+DQorICAg
ICAgICA8Y2xpcFBhdGggaWQ9ImxlZnQtaGFsZiI+DQorICAgICAgICAgICAgPHJlY3Qgd2lkdGg9
IjEwMCIgaGVpZ2h0PSIyMDAiLz4NCisgICAgICAgIDwvY2xpcFBhdGg+DQorICAgICAgICA8Y2xp
cFBhdGggaWQ9InJpZ2h0LWhhbGYiPg0KKyAgICAgICAgICAgIDxyZWN0IHg9IjEwMCIgd2lkdGg9
IjEwMCIgaGVpZ2h0PSIyMDAiLz4NCisgICAgICAgIDwvY2xpcFBhdGg+DQorICAgIDwvZGVmcz4N
CisgICAgPGNpcmNsZSBjeD0iMTAwIiBjeT0iMTAwIiByPSI5OCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJncmVlbiIgc3Ryb2tlLXdpZHRoPSIyIi8+DQorICAgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjEw
MCIgcj0iOTgiIGZpbGw9IndoaXRlIiBjbGlwLXBhdGg9InVybCgjbGVmdC1oYWxmKSIvPg0KKyAg
ICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSIxMDAiIHI9Ijk4IiBmaWxsPSJncmVlbiIgY2xpcC1wYXRo
PSJ1cmwoI3JpZ2h0LWhhbGYpIi8+DQorICAgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjUwIiAgcj0i
NDkiIGZpbGw9ImdyZWVuIi8+DQorICAgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjE0OCIgcj0iNDki
IGZpbGw9IndoaXRlIi8+DQorICAgIDxjaXJjbGUgY3g9IjEwMCIgY3k9IjUwIiAgcj0iMTAiIGZp
bGw9IndoaXRlIi8+ICAgIA0KKyAgICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSIxNDgiIHI9IjEwIiBm
aWxsPSJncmVlbiIvPg0KKzwvc3ZnPg0KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jYW52YXMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxhdGUtY2FudmFzLmh0
bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVt
cGxhdGUvdGVtcGxhdGUtY2FudmFzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3Jlc291cmNlcy9zdGFnZS5jc3MiPgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWxnb3JpdGhtLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NhbXBsZXIuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYXRoLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+ICAgIAorICAgIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9zdGFnZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cisg
ICAgPGNhbnZhcyBpZD0ic3RhZ2UiPjwvY2FudmFzPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLWNzcy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1w
bGF0ZS90ZW1wbGF0ZS1jc3MuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS90ZW1wbGF0ZS1jc3MuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vcmVzb3VyY2Vz
L3N0YWdlLmNzcyI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hbGdvcml0aG0u
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc2FtcGxlci5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9leHRlbnNpb25z
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hdGguanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3Nj
cmlwdD4gICAgCisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWluLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3N0YWdlLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RlbXBsYXRlLWNzcy5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJzdGFnZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvdGVtcGxh
dGUtc3ZnLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL3RlbXBsYXRlL3RlbXBsYXRlLXN2Zy5odG1sCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3RlbXBsYXRlLXN2Zy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9y
ZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2Fs
Z29yaXRobS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9z
YW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2V4
dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWF0
aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy91dGlsaXRpZXMu
anMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21haW4uanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3RhZ2UuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVtcGxhdGUtc3ZnLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxzdmcgaWQ9InN0YWdlIj48L3N2Zz4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0
ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFz
LmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Rl
bXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMDQgQEAKK2Z1bmN0aW9uIFRlbXBsYXRlQ2FudmFzT2JqZWN0KHN0YWdlKQoreworICAg
IC8vIEZvciB0aGUgY2FudmFzIHN0YWdlLCBtb3N0IGxpa2VseSB5b3Ugd2lsbCBuZWVkIHRvIGNy
ZWF0ZSB5b3VyCisgICAgLy8gYW5pbWF0ZWQgb2JqZWN0IHNpbmNlIGl0J3Mgb25seSBkcmF3IHRp
bWUgdGhpbmcuCisgICAgCisgICAgLy8gRmlsbCBpbiB5b3VyIG9iamVjdCBkYXRhLgorfQorCitU
ZW1wbGF0ZUNhbnZhc09iamVjdC5wcm90b3R5cGUuX2RyYXcgPSBmdW5jdGlvbigpCit7CisgICAg
Ly8gRHJhdyB5b3VyIG9iamVjdC4KK30KKworVGVtcGxhdGVDYW52YXNPYmplY3QucHJvdG90eXBl
LmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVsdGEpCit7CisgICAgLy8gUmVkcmF3IHRoZSBhbmlt
YXRlZCBvYmplY3QuIFRoZSBsYXN0IHRpbWUgdGhpcyBhbmltYXRlZAorICAgIC8vIGl0ZW0gd2Fz
IGRyYXduIGJlZm9yZSAndGltZURlbHRhJy4KKyAgICAKKyAgICAvLyBNb3ZlIHlvdXIgb2JqZWN0
LgorICAgIAorICAgIC8vIFJlZHJhdyB5b3VyIG9iamVjdC4KKyAgICB0aGlzLl9kcmF3KCk7Cit9
CisKK2Z1bmN0aW9uIFRlbXBsYXRlQ2FudmFzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAg
ICBTdGFnZS5jYWxsKHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworICAgIHRoaXMuY29udGV4dCA9
IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOworCisgICAgLy8gRGVmaW5lIGEgY29sbGVj
dGlvbiBmb3IgeW91ciBvYmplY3RzLgorfQorCitUZW1wbGF0ZUNhbnZhc1N0YWdlLnByb3RvdHlw
ZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2UucHJvdG90eXBlKTsKK1RlbXBsYXRlQ2FudmFzU3RhZ2Uu
cHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVGVtcGxhdGVDYW52YXNTdGFnZTsKKworVGVtcGxhdGVD
YW52YXNTdGFnZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KQoreworICAgIC8vIElm
IGNvdW50IGlzIC12ZSwgLWNvdW50IGVsZW1lbnRzIG5lZWQgdG8gYmUgcmVtb3ZlZCBmb3JtIHRo
ZQorICAgIC8vIHN0YWdlLiBJZiBjb3VudCBpcyArdmUsICtjb3VudCBlbGVtZW50cyBuZWVkIHRv
IGJlIGFkZGVkIHRvCisgICAgLy8gdGhlIHN0YWdlLgorICAgIAorICAgIC8vIENoYW5nZSBvYmpl
Y3RzIGluIHRoZSBzdGFnZS4KKyAgICAKKyAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBhbGwg
dGhlIGVsZW1lbnRzIGluIHRoZSBzdGFnZS4KKyAgICAvLyBUaGlzIG51bWJlciBpcyByZWNvcmRl
ZCBpbiB0aGUgc2FtcGxlZCBkYXRhLgorICAgIAorICAgIC8vIFJldHVybiB0aGUgY291bnQgb2Yg
dGhlIG9iamVjdHMgaW4gdGhlIHN0YWdlLgorICAgIHJldHVybiAwOworfQorCitUZW1wbGF0ZUNh
bnZhc1N0YWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQoreworICAg
IC8vIEFuaW1hdGUgdGhlIGVsZW1lbnRzIHN1Y2ggdGhhdCBhbGwgb2YgdGhlbSBhcmUgcmVkcmF3
bi4gTW9zdAorICAgIC8vIGxpa2VseSB5b3Ugd2lsbCBuZWVkIHRvIGNhbGwgVGVtcGxhdGVDYW52
YXNPYmplY3QuYW5pbWF0ZSgpCisgICAgLy8gZm9yIGFsbCB5b3VyIGFuaW1hdGVkIG9iamVjdHMg
aGVyZS4KKworICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgeW91ciBvYmplY3RzIGFuZCBhc2sgdGhl
bSB0byBhbmltYXRlLgorfQorCitmdW5jdGlvbiBUZW1wbGF0ZUNhbnZhc0FuaW1hdG9yKGJlbmNo
bWFyaykKK3sKKyAgICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyayk7CisgICAgdGhpcy5f
Y29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4dDsKK30KKworVGVtcGxhdGVDYW52YXNB
bmltYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQW5pbWF0b3IucHJvdG90eXBl
KTsKK1RlbXBsYXRlQ2FudmFzQW5pbWF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVGVtcGxh
dGVDYW52YXNBbmltYXRvcjsKKworVGVtcGxhdGVDYW52YXNBbmltYXRvci5wcm90b3R5cGUuYW5p
bWF0ZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICAvLyBNb3N0IGxpa2VseSB5b3Ugd2lsbCBuZWVkIHRv
IGNsZWFyIHRoZSBjYW52YXMgd2l0aCBldmVyeSByZWRyYXcuCisgICAgdGhpcy5fY29udGV4dC5j
bGVhclJlY3QoMCwgMCwgdGhpcy5fYmVuY2htYXJrLl9zdGFnZS5zaXplLngsIHRoaXMuX2JlbmNo
bWFyay5fc3RhZ2Uuc2l6ZS55KTsKKworICAgIC8vIERyYXcgc2NlbmUgc3R1ZmYgaGVyZSBpZiBu
ZWVkZWQuCisKKyAgICByZXR1cm4gU3RhZ2VBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZS5jYWxs
KHRoaXMpOworfQorCitmdW5jdGlvbiBUZW1wbGF0ZUNhbnZhc0JlbmNobWFyayhzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIFN0YWdlQmVuY2ht
YXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0Jhcik7Cit9CisKK1RlbXBsYXRlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlKTsKK1RlbXBsYXRlQ2FudmFzQmVuY2htYXJr
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrOworCitUZW1w
bGF0ZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVt
ZW50KQoreworICAgIC8vIEF0dGFjaCB0aGUgc3RhZ2UgdG8gdGhlIGJlbmNobWFyay4KKyAgICBy
ZXR1cm4gbmV3IFRlbXBsYXRlQ2FudmFzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9
CisKK1RlbXBsYXRlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvciA9IGZ1
bmN0aW9uKCkKK3sKKyAgICAvLyBBdHRhY2ggdGhlIGFuaW1hdG9yIHRvIHRoZSBiZW5jaG1hcmsu
CisgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZUNhbnZhc0FuaW1hdG9yKHRoaXMpOworfQorCit3aW5k
b3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBj
YWxsZWQgZnJvbSB0aGUgdGVzdCBoYXJuZXNzIHdoaWNoIHN0YXJ0cyB0aGUKKyAgICAvLyB0ZXN0
IGJ5IGNyZWF0aW5nIHlvdXIgYmVuY2htYXJrIG9iamVjdC4KKyAgICByZXR1cm4gbmV3IFRlbXBs
YXRlQ2FudmFzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJv
Z3Jlc3NCYXIpOworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Rl
bXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jc3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jc3Mu
anMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVt
cGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNzcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDU1IEBACitmdW5jdGlvbiBUZW1wbGF0ZUNzc1N0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7Cisg
ICAgU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKK30KKworVGVtcGxhdGVDc3NT
dGFnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlLnByb3RvdHlwZSk7CitUZW1wbGF0
ZUNzc1N0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRlbXBsYXRlQ3NzU3RhZ2U7CisKK1Rl
bXBsYXRlQ3NzU3RhZ2UucHJvdG90eXBlLnR1bmUgPSBmdW5jdGlvbihjb3VudCkKK3sKKyAgICAv
LyBJZiBjb3VudCBpcyAtdmUsIC1jb3VudCBlbGVtZW50cyBuZWVkIHRvIGJlIHJlbW92ZWQgZm9y
bSB0aGUKKyAgICAvLyBzdGFnZS4gSWYgY291bnQgaXMgK3ZlLCArY291bnQgZWxlbWVudHMgbmVl
ZCB0byBiZSBhZGRlZCB0bworICAgIC8vIHRoZSBzdGFnZS4KKyAgICAKKyAgICAvLyBDaGFuZ2Ug
b2JqZWN0cyBpbiB0aGUgc3RhZ2UuCisgICAgCisgICAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2Yg
YWxsIHRoZSBlbGVtZW50cyBpbiB0aGUgc3RhZ2UuCisgICAgLy8gVGhpcyBudW1iZXIgaXMgcmVj
b3JkZWQgaW4gdGhlIHNhbXBsZWQgZGF0YS4KKyAgICAKKyAgICAvLyBSZXR1cm4gdGhlIGNvdW50
IG9mIHRoZSBvYmplY3RzIGluIHRoZSBzdGFnZS4KKyAgICByZXR1cm4gMDsKK30KKworVGVtcGxh
dGVDc3NTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0aW9uKHRpbWVEZWx0YSkKK3sKKyAg
ICAvLyBBbmltYXRlIHRoZSBlbGVtZW50cyBzdWNoIHRoYXQgYWxsIG9mIHRoZW0gYXJlIHJlZHJh
d24uIFlvdSAKKyAgICAvLyBtYXkgbmVlZCB0byBkZWZpbmUgeW91ciBvYmplY3Qgc28gaXQga2Vl
cHMgaXRzIGFuaW1hdGlvbiBkYXRhLgorICAgIC8vIFRoaXMgb2JqZWN0IHNob3VsZCBlbmNhcHN1
bGF0ZSBhIGNvcnJvc3BvbmRpbmcgSFRNTEVsZW1lbnQuCisgICAgLy8gWW91IG1heSBhbHNvIGRl
ZmluZSBhIG1ldGhvZCBjYWxsZWQgYW5pbWF0ZSgpIGluIHRoaXMgb2JqZWN0CisgICAgLy8gYW5k
IGp1c3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGhlcmUgZm9yIGFsbCB0aGUgZWxlbWVudHMuCisgICAg
CisgICAgLy8gTG9vcCB0aHJvdWdoIGFsbCB5b3VyIG9iamVjdHMgYW5kIGFzayB0aGVtIHRvIGFu
aW1hdGUuCit9CisKK2Z1bmN0aW9uIFRlbXBsYXRlQ3NzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBv
cHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgU3RhZ2VCZW5jaG1hcmsu
Y2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFy
KTsKK30KKworVGVtcGxhdGVDc3NCZW5jaG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShT
dGFnZUJlbmNobWFyay5wcm90b3R5cGUpOworVGVtcGxhdGVDc3NCZW5jaG1hcmsucHJvdG90eXBl
LmNvbnN0cnVjdG9yID0gVGVtcGxhdGVDc3NCZW5jaG1hcms7CisKK1RlbXBsYXRlQ3NzQmVuY2ht
YXJrLnByb3RvdHlwZS5jcmVhdGVTdGFnZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCit7CisgICAgLy8g
WW91IG5lZWQgdG8gb3ZlcnJpZGUgdGhpcyBtZXRob2Qgc3VjaCB0aGF0IHlvdXIgc3RhZ2UgaXMg
aG9va2VkCisgICAgLy8gdXAgdG8gdGhlIGJlbmNobWFyay4KKyAgICByZXR1cm4gbmV3IFRlbXBs
YXRlQ3NzU3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK3dpbmRvdy5iZW5jaG1h
cmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRh
YmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9t
IHRoZSB0ZXN0IGhhcm5lc3Mgd2hpY2ggc3RhcnRzIHRoZQorICAgIC8vIHRlc3QgYnkgY3JlYXRp
bmcgeW91ciBiZW5jaG1hcmsgb2JqZWN0LgorICAgIHJldHVybiBuZXcgVGVtcGxhdGVDc3NCZW5j
aG1hcmsoc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7Cit9
CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3Vy
Y2VzL3RlbXBsYXRlLXN2Zy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLXN2Zy5qcwkocmV2aXNpb24g
MCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJj
ZXMvdGVtcGxhdGUtc3ZnLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKK2Z1bmN0
aW9uIFRlbXBsYXRlU3ZnU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKK3sKKyAgICBTdGFnZS5jYWxs
KHRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpOworfQorCitUZW1wbGF0ZVN2Z1N0YWdlLnByb3RvdHlw
ZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2UucHJvdG90eXBlKTsKK1RlbXBsYXRlU3ZnU3RhZ2UucHJv
dG90eXBlLmNvbnN0cnVjdG9yID0gVGVtcGxhdGVTdmdTdGFnZTsKKworVGVtcGxhdGVTdmdTdGFn
ZS5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNvdW50KQoreworICAgIC8vIElmIGNvdW50IGlz
IC12ZSwgLWNvdW50IGVsZW1lbnRzIG5lZWQgdG8gYmUgcmVtb3ZlZCBmb3JtIHRoZQorICAgIC8v
IHN0YWdlLiBJZiBjb3VudCBpcyArdmUsICtjb3VudCBlbGVtZW50cyBuZWVkIHRvIGJlIGFkZGVk
IHRvCisgICAgLy8gdGhlIHN0YWdlLgorICAgIAorICAgIC8vIFRPRE86IENoYW5nZSBvYmplY3Rz
IGluIHRoZSBzdGFnZS4KKyAgICAKKyAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBhbGwgdGhl
IGVsZW1lbnRzIGluIHRoZSBzdGFnZS4KKyAgICAvLyBUaGlzIG51bWJlciBpcyByZWNvcmRlZCBp
biB0aGUgc2FtcGxlZCBkYXRhLgorICAgIAorICAgIC8vIFRPRE86IFJldHVybiB0aGUgY291bnQg
b2YgdGhlIG9iamVjdHMgaW4gdGhlIHN0YWdlLgorICAgIHJldHVybiAwOworfQorCitUZW1wbGF0
ZVN2Z1N0YWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQoreworICAg
IC8vIEFuaW1hdGUgdGhlIGVsZW1lbnRzIHN1Y2ggdGhhdCBhbGwgb2YgdGhlbSBhcmUgcmVkcmF3
bi4gWW91IAorICAgIC8vIG1heSBuZWVkIHRvIGRlZmluZSB5b3VyIG9iamVjdCBzbyBpdCBrZWVw
cyBpdHMgYW5pbWF0aW9uIGRhdGEuCisgICAgLy8gVGhpcyBvYmplY3Qgc2hvdWxkIGVuY2Fwc3Vs
YXRlIGEgY29ycm9zcG9uZGluZyBTVkdFbGVtZW50LgorICAgIC8vIFlvdSBtYXkgYWxzbyBkZWZp
bmUgYSBtZXRob2QgY2FsbGVkIGFuaW1hdGUoKSBpbiB0aGlzIG9iamVjdAorICAgIC8vIGFuZCBq
dXN0IGNhbGwgdGhpcyBmdW5jdGlvbiBoZXJlIGZvciBhbGwgdGhlIGVsZW1lbnRzLgorICAgIAor
ICAgIC8vIFRPRE86IExvb3AgdGhyb3VnaCBhbGwgeW91ciBvYmplY3RzIGFuZCBhc2sgdGhlbSB0
byBhbmltYXRlLgorfQorCitmdW5jdGlvbiBUZW1wbGF0ZVN2Z0JlbmNobWFyayhzdWl0ZSwgdGVz
dCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQoreworICAgIFN0YWdlQmVuY2ht
YXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVz
c0Jhcik7Cit9CisKK1RlbXBsYXRlU3ZnQmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlKTsKK1RlbXBsYXRlU3ZnQmVuY2htYXJrLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IFRlbXBsYXRlU3ZnQmVuY2htYXJrOworCitUZW1wbGF0ZVN2Z0Jl
bmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQoreworICAg
IC8vIFlvdSBuZWVkIHRvIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHN1Y2ggdGhhdCB5b3VyIHN0YWdl
IGlzIGhvb2tlZAorICAgIC8vIHVwIHRvIHRoZSBiZW5jaG1hcmsuCisgICAgcmV0dXJuIG5ldyBU
ZW1wbGF0ZVN2Z1N0YWdlKGVsZW1lbnQsIHRoaXMuX29wdGlvbnMpOworfQorCit3aW5kb3cuYmVu
Y2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNv
cmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQg
ZnJvbSB0aGUgdGVzdCBoYXJuZXNzIHdoaWNoIHN0YXJ0cyB0aGUKKyAgICAvLyB0ZXN0IGJ5IGNy
ZWF0aW5nIHlvdXIgYmVuY2htYXJrIG9iamVjdC4KKyAgICByZXR1cm4gbmV3IFRlbXBsYXRlU3Zn
QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIp
OworfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvbGF5ZXJp
bmctdGV4dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90
ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L2xheWVyaW5nLXRleHQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cisg
ICAgPHN0eWxlPgorICAgICAgICAudGV4dC1sYXllciB7CisgICAgICAgICAgICBmb250LXNpemU6
IDUuNXB4OworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgbGVm
dDogMHB4OworICAgICAgICAgICAgdG9wOiAwcHg7CisgICAgICAgICAgICBwYWRkaW5nOiAzcHg7
CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICAgICAgfQor
ICAgIDwvc3R5bGU+ICAKKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3Nz
IiBocmVmPSIuLi9yZXNvdXJjZXMvc3RhZ2UuY3NzIj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2FsZ29yaXRobS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9zYW1wbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2V4dGVuc2lvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvbWF0aC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PiAgICAKKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL21haW4uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc3Rh
Z2UuanMiPjwvc2NyaXB0PiAgCisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9sYXllcmluZy10
ZXh0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9InN0YWdlIj48
L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10
ZXh0LmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyNTcgQEAKK2Z1bmN0aW9uIExheWVyaW5nVGV4dFN0YWdlKGVsZW1lbnQsIG9wdGlvbnMpCit7
CisgICAgU3RhZ2UuY2FsbCh0aGlzLCBlbGVtZW50LCBvcHRpb25zKTsKKyAgICB0aGlzLl90ZXh0
RWxlbWVudFBhcmVudCA9IHRoaXMuZWxlbWVudDsKKyAgICB0aGlzLl90ZXh0RWxlbWVudHMgPSBb
XTsKKyAgICB0aGlzLl90ZXh0SXRlbUluZGV4ID0gMDsKKyAgICB0aGlzLl9jb2xvckluZGV4ID0g
MDsKKyAgICB0aGlzLl9hbmltYXRlQ291bnRzID0gMDsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2Uu
dGV4dEl0ZW1zID0gWworICAgICI8ZGl2IGNsYXNzPSd0ZXh0LWxheWVyJz4iLAorICAgICAgICAi
PGgyPlR5cGVzIG9mIGJlbmNobWFya3M8L2gyPiIsCisgICAgICAgICI8b2w+IiwKKyAgICAgICAg
ICAgICI8bGk+UmVhbCBwcm9ncmFtIiwKKyAgICAgICAgICAgICAgICAiPHVsPiIsCisgICAgICAg
ICAgICAgICAgICAgICI8bGk+d29yZCBwcm9jZXNzaW5nIHNvZnR3YXJlPC9saT4iLAorICAgICAg
ICAgICAgICAgICAgICAiPGxpPnRvb2wgc29mdHdhcmUgb2YgQ0FEPC9saT4iLAorICAgICAgICAg
ICAgICAgICAgICAiPGxpPnVzZXIncyBhcHBsaWNhdGlvbiBzb2Z0d2FyZSAoaS5lLjogTUlTKTwv
bGk+IiwKKyAgICAgICAgICAgICAgICAiPC91bD4iLAorICAgICAgICAgICAgIjwvbGk+IiwKKyAg
ICAgICAgICAgICI8bGk+S2VybmVsIiwKKyAgICAgICAgICAgICAgICAiPHVsPiIsCisgICAgICAg
ICAgICAgICAgICAgICI8bGk+Y29udGFpbnMga2V5IGNvZGVzPC9saT4iLAorICAgICAgICAgICAg
ICAgICAgICAiPGxpPm5vcm1hbGx5IGFic3RyYWN0ZWQgZnJvbSBhY3R1YWwgcHJvZ3JhbTwvbGk+
IiwKKyAgICAgICAgICAgICAgICAgICAgIjxsaT5wb3B1bGFyIGtlcm5lbDogTGl2ZXJtb3JlIGxv
b3A8L2xpPiIsCisgICAgICAgICAgICAgICAgICAgICI8bGk+bGlucGFjayBiZW5jaG1hcmsgKGNv
bnRhaW5zIGJhc2ljIGxpbmVhciBhbGdlYnJhIHN1YnJvdXRpbmUgd3JpdHRlbiBpbiBGT1JUUkFO
IGxhbmd1YWdlKTwvbGk+IiwKKyAgICAgICAgICAgICAgICAgICAgIjxsaT5yZXN1bHRzIGFyZSBy
ZXByZXNlbnRlZCBpbiBNRkxPUFM8L2xpPiIsCisgICAgICAgICAgICAgICAgIjwvdWw+IiwKKyAg
ICAgICAgICAgICI8L2xpPiIsCisgICAgICAgICAgICAiPGxpPlN5bnRoZXRpYyBCZW5jaG1hcmsi
LAorICAgICAgICAgICAgICAgICI8dWw+IiwKKyAgICAgICAgICAgICAgICAgICAgIjxsaT5Qcm9j
ZWR1cmUgZm9yIHByb2dyYW1taW5nIHN5bnRoZXRpYyBiZW5jaG1hcms6IiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICI8dWw+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpPnRh
a2Ugc3RhdGlzdGljcyBvZiBhbGwgdHlwZXMgb2Ygb3BlcmF0aW9ucyBmcm9tIG1hbnkgYXBwbGlj
YXRpb24gcHJvZ3JhbXM8L2xpPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaT5n
ZXQgcHJvcG9ydGlvbiBvZiBlYWNoIG9wZXJhdGlvbjwvbGk+IiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiPGxpPndyaXRlIHByb2dyYW0gYmFzZWQgb24gdGhlIHByb3BvcnRpb24gYWJv
dmU8L2xpPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAiPC91bD4iLAorICAgICAgICAgICAg
ICAgICAgICAiPC9saT4iLAorICAgICAgICAgICAgICAgICAgICAiPGxpPlR5cGVzIG9mIFN5bnRo
ZXRpYyBCZW5jaG1hcmsgYXJlOiIsCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsPiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaT5XaGV0c3RvbmU8L2xpPiIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIjxsaT5EaHJ5c3RvbmU8L2xpPiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAiPC91bD4iLAorICAgICAgICAgICAgICAgICAgICAiPC9saT4iLAorICAgICAg
ICAgICAgICAgICAgICAiPGxpPlRoZXNlIHdlcmUgdGhlIGZpcnN0IGdlbmVyYWwgcHVycG9zZSBp
bmR1c3RyeSBzdGFuZGFyZCBjb21wdXRlciBiZW5jaG1hcmtzLiBUaGV5IGRvIG5vdCBuZWNlc3Nh
cmlseSBvYnRhaW4gaGlnaCBzY29yZXMgb24gbW9kZXJuIHBpcGVsaW5lZCBjb21wdXRlcnMuPC9s
aT4iLAorICAgICAgICAgICAgICAgICI8L3VsPiIsCisgICAgICAgICAgICAiPC9saT4iLAorICAg
ICAgICAgICAgIjxsaT5JL08gYmVuY2htYXJrczwvbGk+IiwKKyAgICAgICAgICAgICI8bGk+RGF0
YWJhc2UgYmVuY2htYXJrczogdG8gbWVhc3VyZSB0aGUgdGhyb3VnaHB1dCBhbmQgcmVzcG9uc2Ug
dGltZXMgb2YgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW1zIChEQk1TJyk8L2xpPiIsCisgICAg
ICAgICAgICAiPGxpPlBhcmFsbGVsIGJlbmNobWFya3M6IHVzZWQgb24gbWFjaGluZXMgd2l0aCBt
dWx0aXBsZSBjb3JlcywgcHJvY2Vzc29ycyBvciBzeXN0ZW1zIGNvbnNpc3Rpbmcgb2YgbXVsdGlw
bGUgbWFjaGluZXM8L2xpPiIsCisgICAgICAgICI8L29sPiIsCisgICAgICAgICI8aDI+Q29tbW9u
IGJlbmNobWFya3M8L2gyPiIsCisgICAgICAgICI8dWw+IiwKKyAgICAgICAgICAgICI8bGk+QnVz
aW5lc3MgQXBwbGljYXRpb25zIFBlcmZvcm1hbmNlIENvcnBvcmF0aW9uIChCQVBDbyk8L2xpPiIs
CisgICAgICAgICAgICAiPGxpPkVtYmVkZGVkIE1pY3JvcHJvY2Vzc29yIEJlbmNobWFyayBDb25z
b3J0aXVtIChFRU1CQyk8L2xpPiIsCisgICAgICAgICAgICAiPGxpPlN0YW5kYXJkIFBlcmZvcm1h
bmNlIEV2YWx1YXRpb24gQ29ycG9yYXRpb24gKFNQRUMpLCBpbiBwYXJ0aWN1bGFyIHRoZWlyIFNQ
RUNpbnQgYW5kIFNQRUNmcDwvbGk+IiwKKyAgICAgICAgICAgICI8bGk+VHJhbnNhY3Rpb24gUHJv
Y2Vzc2luZyBQZXJmb3JtYW5jZSBDb3VuY2lsIChUUEMpPC9saT4iLAorICAgICAgICAgICAgIjxs
aT5Db3JlbWFyazogRW1iZWRkZWQgY29tcHV0aW5nIGJlbmNobWFyazwvbGk+IiwKKyAgICAgICAg
IjwvdWw+IiwKKyAgICAgICAgIjxoMz5PcGVuIHNvdXJjZSBiZW5jaG1hcmtzPC9oMz4iLAorICAg
ICAgICAiPHVsPiIsCisgICAgICAgICAgICAiPGxpPkFJTSBNdWx0aXVzZXIgQmVuY2htYXJrOiBj
b21wb3NlZCBvZiBhIGxpc3Qgb2YgdGVzdHMgdGhhdCBjb3VsZCBiZSBtaXhlZCB0byBjcmVhdGUg
YSDigJhsb2FkIG1peOKAmSB0aGF0IHdvdWxkIHNpbXVsYXRlIGEgc3BlY2lmaWMgY29tcHV0ZXIg
ZnVuY3Rpb24gb24gYW55IFVOSVgtdHlwZSBPUy48L2xpPiIsCisgICAgICAgICAgICAiPGxpPkJv
bm5pZSsrOiBmaWxlc3lzdGVtIGFuZCBoYXJkIGRyaXZlIGJlbmNobWFyazwvbGk+IiwKKyAgICAg
ICAgICAgICI8bGk+QlJMLUNBRDogY3Jvc3MtcGxhdGZvcm0gYXJjaGl0ZWN0dXJlLWFnbm9zdGlj
IGJlbmNobWFyayBzdWl0ZSBiYXNlZCBvbiBtdWx0aXRocmVhZGVkIHJheSB0cmFjaW5nIHBlcmZv
cm1hbmNlOyBiYXNlbGluZWQgYWdhaW5zdCBhIFZBWC0xMS83ODA7IGFuZCB1c2VkIHNpbmNlIDE5
ODQgZm9yIGV2YWx1YXRpbmcgcmVsYXRpdmUgQ1BVIHBlcmZvcm1hbmNlLCBjb21waWxlciBkaWZm
ZXJlbmNlcywgb3B0aW1pemF0aW9uIGxldmVscywgY29oZXJlbmN5LCBhcmNoaXRlY3R1cmUgZGlm
ZmVyZW5jZXMsIGFuZCBvcGVyYXRpbmcgc3lzdGVtIGRpZmZlcmVuY2VzLjwvbGk+IiwKKyAgICAg
ICAgIjwvdWw+IiwKKyAgICAiPC9kaXY+IgorXTsKKworTGF5ZXJpbmdUZXh0U3RhZ2UucGFyc2VU
ZXh0SXRlbSA9IGZ1bmN0aW9uKHRleHRJdGVtKQoreworICAgIHZhciBwYXJzZVJlc3VsdCA9IHt9
OworICAgIHBhcnNlUmVzdWx0LnRhZ1N0YXJ0ID0gdGV4dEl0ZW0ubWF0Y2goLzwoLio/KT4vZylb
MF07CisgICAgdmFyIHNwYWNlSW5kZXggPSBwYXJzZVJlc3VsdC50YWdTdGFydC5pbmRleE9mKCIg
Iik7CisgICAgcGFyc2VSZXN1bHQubm9kZU5hbWUgPSBwYXJzZVJlc3VsdC50YWdTdGFydC5zdWJz
dHJpbmcoMSwgc3BhY2VJbmRleCAhPSAtMSA/IHNwYWNlSW5kZXggOiBwYXJzZVJlc3VsdC50YWdT
dGFydC5sZW5ndGggLSAxKTsKKyAgICBwYXJzZVJlc3VsdC5hcmdzID0gc3BhY2VJbmRleCAhPSAt
MSA/IFV0aWxpdGllcy5wYXJzZUFyZ3VtZW50cyhwYXJzZVJlc3VsdC50YWdTdGFydC5zdWJzdHJp
bmcoc3BhY2VJbmRleCArIDEsIHBhcnNlUmVzdWx0LnRhZ1N0YXJ0Lmxlbmd0aCAtIDEpKSA6IHt9
OworICAgIHZhciB0YWdFbmQgPSAiPC8iICsgcGFyc2VSZXN1bHQubm9kZU5hbWUgKyAiPiI7ICAg
ICAgICAgICAgICAgIAorICAgIHBhcnNlUmVzdWx0LnRhZ0VuZCA9IHRleHRJdGVtLmVuZHNXaXRo
KHRhZ0VuZCkgPyB0YWdFbmQgOiAiIjsKKyAgICByZXR1cm4gcGFyc2VSZXN1bHQ7Cit9CisKK0xh
eWVyaW5nVGV4dFN0YWdlLmlzT3BlbmluZ1RleHRJdGVtID0gZnVuY3Rpb24odGV4dEl0ZW0pCit7
CisgICAgcmV0dXJuICFMYXllcmluZ1RleHRTdGFnZS5wYXJzZVRleHRJdGVtKHRleHRJdGVtKS50
YWdFbmQubGVuZ3RoOworfQorCitMYXllcmluZ1RleHRTdGFnZS5pc0Nsb3NpbmdUZXh0SXRlbSA9
IGZ1bmN0aW9uKHRleHRJdGVtKQoreworICAgIHJldHVybiB0ZXh0SXRlbS5pbmRleE9mKCIvIikg
PT0gKzE7Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzID0gTGF5ZXJpbmdU
ZXh0U3RhZ2UudGV4dEl0ZW1zLm1hcChmdW5jdGlvbih0ZXh0SXRlbSkKK3sKKyAgIHZhciB0ZXh0
SXRlbUZsYWdzID0ge307CisgICB0ZXh0SXRlbUZsYWdzLmlzT3BlbmluZyA9IExheWVyaW5nVGV4
dFN0YWdlLmlzT3BlbmluZ1RleHRJdGVtKHRleHRJdGVtKTsKKyAgIHRleHRJdGVtRmxhZ3MuaXND
bG9zaW5nID0gTGF5ZXJpbmdUZXh0U3RhZ2UuaXNDbG9zaW5nVGV4dEl0ZW0odGV4dEl0ZW0pOyAg
IAorICAgcmV0dXJuIHRleHRJdGVtRmxhZ3M7Cit9KTsKKworTGF5ZXJpbmdUZXh0U3RhZ2UuaXND
b2xvcmFibGVUZXh0SXRlbSA9IGZ1bmN0aW9uKHRleHRJdGVtRmxhZ3MpCit7CisgICAgcmV0dXJu
ICEodGV4dEl0ZW1GbGFncy5pc09wZW5pbmcgfHwgdGV4dEl0ZW1GbGFncy5pc0Nsb3NpbmcpOwor
fQorCitMYXllcmluZ1RleHRTdGFnZS5pc0luc2VydGFibGVUZXh0SXRlbSA9IGZ1bmN0aW9uKHRl
eHRJdGVtRmxhZ3MpCit7CisgICAgcmV0dXJuICF0ZXh0SXRlbUZsYWdzLmlzQ2xvc2luZzsKK30K
KworTGF5ZXJpbmdUZXh0U3RhZ2UuY29sb3JhYmxlVGV4dEl0ZW1zID0gTGF5ZXJpbmdUZXh0U3Rh
Z2UudGV4dEl0ZW1zRmxhZ3MuZmlsdGVyKGZ1bmN0aW9uKHRleHRJdGVtRmxhZ3MpCit7CisgICAg
cmV0dXJuIExheWVyaW5nVGV4dFN0YWdlLmlzQ29sb3JhYmxlVGV4dEl0ZW0odGV4dEl0ZW1GbGFn
cyk7Cit9KS5sZW5ndGg7CisKK0xheWVyaW5nVGV4dFN0YWdlLmluc2VydGFibGVUZXh0SXRlbXMg
PSBMYXllcmluZ1RleHRTdGFnZS50ZXh0SXRlbXNGbGFncy5maWx0ZXIoZnVuY3Rpb24odGV4dEl0
ZW1GbGFncykKK3sKKyAgICByZXR1cm4gTGF5ZXJpbmdUZXh0U3RhZ2UuaXNJbnNlcnRhYmxlVGV4
dEl0ZW0odGV4dEl0ZW1GbGFncyk7Cit9KS5sZW5ndGg7CisKK0xheWVyaW5nVGV4dFN0YWdlLmNv
bG9ySW5kZXhUb1RleHRFbGVtZW50SW5kZXggPSBmdW5jdGlvbihjb2xvckluZGV4KQoreworICAg
IHZhciB0ZXh0RWxlbWVudEluZGV4ID0gMDsKKyAgICB2YXIgaW5kZXggPSAwOworICAgIAorICAg
IGZvciAodmFyIHRleHRJdGVtSW5kZXggPSAwOyB0ZXh0SXRlbUluZGV4IDwgTGF5ZXJpbmdUZXh0
U3RhZ2UudGV4dEl0ZW1zRmxhZ3MubGVuZ3RoOyArK3RleHRJdGVtSW5kZXgpIHsKKyAgICAgICAg
aWYgKExheWVyaW5nVGV4dFN0YWdlLmlzQ29sb3JhYmxlVGV4dEl0ZW0oTGF5ZXJpbmdUZXh0U3Rh
Z2UudGV4dEl0ZW1zRmxhZ3NbdGV4dEl0ZW1JbmRleF0pKSB7CisgICAgICAgICAgICBpZiAoKytp
bmRleCA+IGNvbG9ySW5kZXgpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKExheWVyaW5nVGV4dFN0YWdlLmlzSW5zZXJ0YWJsZVRleHRJdGVtKExheWVyaW5n
VGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzW3RleHRJdGVtSW5kZXhdKSkKKyAgICAgICAgICAgICsr
dGV4dEVsZW1lbnRJbmRleDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRleHRFbGVtZW50SW5k
ZXg7Cit9CisKK0xheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3Rh
Z2UucHJvdG90eXBlKTsKK0xheWVyaW5nVGV4dFN0YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IExheWVyaW5nVGV4dFN0YWdlOworCitMYXllcmluZ1RleHRTdGFnZS5wcm90b3R5cGUuX25leHRU
ZXh0SXRlbSA9IGZ1bmN0aW9uKHRleHRJdGVtRmxhZ3MpCit7CisgICAgdmFyIHRleHRJdGVtID0g
TGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0ZW1zW3RoaXMuX3RleHRJdGVtSW5kZXhdOworICAgIFV0
aWxpdGllcy5leHRlbmRPYmplY3QodGV4dEl0ZW1GbGFncywgTGF5ZXJpbmdUZXh0U3RhZ2UudGV4
dEl0ZW1zRmxhZ3NbdGhpcy5fdGV4dEl0ZW1JbmRleF0pOworICAgIHRoaXMuX3RleHRJdGVtSW5k
ZXggPSAodGhpcy5fdGV4dEl0ZW1JbmRleCArIDEpICUgTGF5ZXJpbmdUZXh0U3RhZ2UudGV4dEl0
ZW1zLmxlbmd0aDsKKyAgICByZXR1cm4gdGV4dEl0ZW07Cit9CisKK0xheWVyaW5nVGV4dFN0YWdl
LnByb3RvdHlwZS5fcHJldmlvdXNUZXh0SXRlbSA9IGZ1bmN0aW9uKHRleHRJdGVtRmxhZ3MpCit7
CisgICAgdGhpcy5fdGV4dEl0ZW1JbmRleCA9ICh0aGlzLl90ZXh0SXRlbUluZGV4ICsgTGF5ZXJp
bmdUZXh0U3RhZ2UudGV4dEl0ZW1zLmxlbmd0aCAtIDEpICUgTGF5ZXJpbmdUZXh0U3RhZ2UudGV4
dEl0ZW1zLmxlbmd0aDsKKyAgICBVdGlsaXRpZXMuZXh0ZW5kT2JqZWN0KHRleHRJdGVtRmxhZ3Ms
IExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc0ZsYWdzW3RoaXMuX3RleHRJdGVtSW5kZXhdKTsg
ICAgCisgICAgcmV0dXJuIExheWVyaW5nVGV4dFN0YWdlLnRleHRJdGVtc1t0aGlzLl90ZXh0SXRl
bUluZGV4XTsKK30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9wdXNoVGV4dEVsZW1l
bnQgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIHRleHRJdGVtRmxhZ3MgPSB7fTsKKyAgICB2YXIg
dGV4dEl0ZW0gPSB0aGlzLl9uZXh0VGV4dEl0ZW0odGV4dEl0ZW1GbGFncyk7CisgICAgZm9yICgg
OyB0ZXh0SXRlbUZsYWdzLmlzQ2xvc2luZzsgdGV4dEl0ZW0gPSB0aGlzLl9uZXh0VGV4dEl0ZW0o
dGV4dEl0ZW1GbGFncykpCisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGhpcy5f
dGV4dEVsZW1lbnRQYXJlbnQucGFyZW50Tm9kZTsKKworICAgIHZhciBwYXJzZVJlc3VsdCA9IExh
eWVyaW5nVGV4dFN0YWdlLnBhcnNlVGV4dEl0ZW0odGV4dEl0ZW0pOworICAgIHRleHRJdGVtID0g
dGV4dEl0ZW0uc3Vic3RyaW5nKHBhcnNlUmVzdWx0LnRhZ1N0YXJ0Lmxlbmd0aCwgdGV4dEl0ZW0u
bGVuZ3RoIC0gcGFyc2VSZXN1bHQudGFnRW5kLmxlbmd0aCk7CisKKyAgICB2YXIgdGV4dEVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHBhcnNlUmVzdWx0Lm5vZGVOYW1lKTsKKworICAg
IGZvciAodmFyIGF0dHJuYW1lIGluIHBhcnNlUmVzdWx0LmFyZ3MpCisgICAgICAgIHRleHRFbGVt
ZW50LnNldEF0dHJpYnV0ZShhdHRybmFtZSwgcGFyc2VSZXN1bHQuYXJnc1thdHRybmFtZV0pOwor
CisgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQuYXBwZW5kQ2hpbGQodGV4dEVsZW1lbnQpOwor
ICAgIAorICAgIGlmICghcGFyc2VSZXN1bHQudGFnRW5kLmxlbmd0aCkKKyAgICAgICAgdGhpcy5f
dGV4dEVsZW1lbnRQYXJlbnQgPSB0ZXh0RWxlbWVudDsKKworICAgIHRleHRFbGVtZW50LmlubmVy
SFRNTCA9IHRleHRJdGVtOworICAgIAorICAgIHRoaXMuX3RleHRFbGVtZW50cy5wdXNoKHRleHRF
bGVtZW50KTsKKyAgICByZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsKK30KKworTGF5
ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLl9wb3BUZXh0RWxlbWVudCA9IGZ1bmN0aW9uKCkKK3sK
KyAgICB2YXIgdGV4dEl0ZW1GbGFncyA9IHt9OyAgICAKKyAgICB2YXIgdGV4dEl0ZW0gPSB0aGlz
Ll9wcmV2aW91c1RleHRJdGVtKHRleHRJdGVtRmxhZ3MpOworICAgIGZvciAoIDsgdGV4dEl0ZW1G
bGFncy5pc0Nsb3Npbmc7IHRleHRJdGVtID0gdGhpcy5fcHJldmlvdXNUZXh0SXRlbSh0ZXh0SXRl
bUZsYWdzKSkKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnRQYXJlbnQgPSB0aGlzLl90ZXh0RWxl
bWVudFBhcmVudC5sYXN0Q2hpbGQ7CisKKyAgICBpZiAodGV4dEl0ZW1GbGFncy5pc09wZW5pbmcp
CisgICAgICAgIHRoaXMuX3RleHRFbGVtZW50UGFyZW50ID0gdGhpcy5fdGV4dEVsZW1lbnRQYXJl
bnQucGFyZW50Tm9kZTsKKworICAgIHRoaXMuX3RleHRFbGVtZW50c1t0aGlzLl90ZXh0RWxlbWVu
dHMubGVuZ3RoIC0gMV0ucmVtb3ZlKCk7CisKKyAgICB0aGlzLl90ZXh0RWxlbWVudHMucG9wKCk7
CisgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50cy5sZW5ndGg7Cit9CisKK0xheWVyaW5nVGV4
dFN0YWdlLnByb3RvdHlwZS5fY29sb3JUZXh0SXRlbSA9IGZ1bmN0aW9uKGNvbG9yKQoreworICAg
IHZhciB0ZXh0RWxlbWVudEluZGV4ID0gTGF5ZXJpbmdUZXh0U3RhZ2UuY29sb3JJbmRleFRvVGV4
dEVsZW1lbnRJbmRleCh0aGlzLl9jb2xvckluZGV4KTsKKyAgICBmb3IgKCA7IHRleHRFbGVtZW50
SW5kZXggPCB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOyB0ZXh0RWxlbWVudEluZGV4ICs9IExh
eWVyaW5nVGV4dFN0YWdlLmluc2VydGFibGVUZXh0SXRlbXMpCisgICAgICAgIHRoaXMuX3RleHRF
bGVtZW50c1t0ZXh0RWxlbWVudEluZGV4XS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsK
K30KKworTGF5ZXJpbmdUZXh0U3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1l
RGVsdGEpCit7CisgICAgdGhpcy5fY29sb3JUZXh0SXRlbSgidHJhbnNwYXJlbnQiKTsKKyAgICB0
aGlzLl9jb2xvckluZGV4ID0gKHRoaXMuX2NvbG9ySW5kZXggKyAxKSAlIExheWVyaW5nVGV4dFN0
YWdlLmNvbG9yYWJsZVRleHRJdGVtczsKKyAgICB0aGlzLl9jb2xvclRleHRJdGVtKCJZZWxsb3dH
cmVlbiIpOworICAgIAorICAgIHZhciBibGFja1RleHRFbGVtZW50cyA9IE1hdGgubWluKHRoaXMu
X3RleHRFbGVtZW50cy5sZW5ndGgsIExheWVyaW5nVGV4dFN0YWdlLmluc2VydGFibGVUZXh0SXRl
bXMpOworICAgIHZhciBpID0gMDsKKyAgICBmb3IgKCA7IGkgPCB0aGlzLl90ZXh0RWxlbWVudHMu
bGVuZ3RoIC0gYmxhY2tUZXh0RWxlbWVudHM7ICsraSkKKyAgICAgICAgdGhpcy5fdGV4dEVsZW1l
bnRzW2ldLnN0eWxlLmNvbG9yID0gKHRoaXMuX2FuaW1hdGVDb3VudHMgJiAxKSA/ICJMaWdodFll
bGxvdyIgOiAid2hpdGUiOworCisgICAgZm9yICggOyBpIDwgdGhpcy5fdGV4dEVsZW1lbnRzLmxl
bmd0aDsgKytpKQorICAgICAgICB0aGlzLl90ZXh0RWxlbWVudHNbaV0uc3R5bGUuY29sb3IgPSAi
YmxhY2siOworICAgICAgICAKKyAgICArK3RoaXMuX2FuaW1hdGVDb3VudHM7Cit9CisKK0xheWVy
aW5nVGV4dFN0YWdlLnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQpCit7CisgICAgY291
bnQgPSBjb3VudCA+IDAgPyBNYXRoLmZsb29yKGNvdW50KSA6IE1hdGguY2VpbChjb3VudCk7CisK
KyAgICBpZiAoY291bnQgPT0gMCkKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVtZW50cy5s
ZW5ndGg7CisKKyAgICBpZiAoY291bnQgPiAwKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX3B1c2hUZXh0RWxlbWVudCgpOworICAg
ICAgICByZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsKKyAgICB9CisgICAgICAgIAor
ICAgIGNvdW50ID0gTWF0aC5taW4oLWNvdW50LCB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIHRoaXMuX3BvcFRl
eHRFbGVtZW50KCk7CisKKyAgICByZXR1cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsKK30K
KworZnVuY3Rpb24gTGF5ZXJpbmdUZXh0QmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCBy
ZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCit7CisgICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlz
LCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKK30KKwor
TGF5ZXJpbmdUZXh0QmVuY2htYXJrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VCZW5j
aG1hcmsucHJvdG90eXBlKTsKK0xheWVyaW5nVGV4dEJlbmNobWFyay5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSBMYXllcmluZ1RleHRCZW5jaG1hcms7CisKK0xheWVyaW5nVGV4dEJlbmNobWFyay5w
cm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQoreworICAgIHJldHVybiBu
ZXcgTGF5ZXJpbmdUZXh0U3RhZ2UoZWxlbWVudCwgdGhpcy5fb3B0aW9ucyk7Cit9CisKK3dpbmRv
dy5iZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMs
IHJlY29yZFRhYmxlLCBwcm9ncmVzc0JhcikKK3sKKyAgICByZXR1cm4gbmV3IExheWVyaW5nVGV4
dEJlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFy
KTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMv
eWluLXlhbmcucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEg
YmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKSW5kZXg6IFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcucG5nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcu
cG5nCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jl
c291cmNlcy95aW4teWFuZy5wbmcJKHdvcmtpbmcgY29weSkKClByb3BlcnR5IGNoYW5nZXMgb246
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMveWluLXlhbmcucG5n
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAjIworaW1hZ2UvcG5n
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKCmlWQk9SdzBLR2dvQUFBQU5TVWhFVWdB
QUFHUUFBQUJrQ0FZQUFBQnc0cFZVQUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUNCalNGSk4KQUFC
NkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFBQUNYQklXWE1B
QUFzVEFBQUxFd0VBbXB3WQpBQUFDQkdsVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFB
UEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1CmN6cHRaWFJoTHlJZ2VEcDRiWEIw
YXowaVdFMVFJRU52Y21VZ05TNDBMakFpUGdvZ0lDQThjbVJtT2xKRVJpQjRiV3h1Y3pweVpHWTkK
SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVj
eU1pUGdvZ0lDQWdJQ0E4Y21SbQpPa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlnb2dJ
Q0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cGxlR2xtUFNKb2RIUndPaTh2CmJuTXVZV1J2WW1VdVkyOXRM
MlY0YVdZdk1TNHdMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02ZEdsbVpqMGlhSFIwY0Rvdkwy
NXoKTG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aVBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFY
aGxiRmxFYVcxbGJuTnBiMjQrTVRFdwpQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lD
QWdJQ0FnSUNBZ1BHVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQakV3Ck5Ud3ZaWGhwWmpwUWFY
aGxiRmhFYVcxbGJuTnBiMjQrQ2lBZ0lDQWdJQ0FnSUR4MGFXWm1Pazl5YVdWdWRHRjBhVzl1UGpF
OEwzUnAKWm1ZNlQzSnBaVzUwWVhScGIyNCtDaUFnSUNBZ0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5
dVBnb2dJQ0E4TDNKa1pqcFNSRVkrQ2p3dgplRHA0YlhCdFpYUmhQZ29VbkEyK0FBQU5XRWxFUVZS
NEFlMWRmV3dVMVJZL3U2VkNXMHFyaUNRa1VDRlJRQUpJQ0FoUm9jVEVZZzBFClZFVDhDeEFTRVNJ
eHdoOGFCVEhCcURVR0ErODlEV0Q0eHc5UWkwRmpTRVN0aVpGV3FSSENxNkRRQkpOWHFueklSNHJZ
VXM0N3Z6TU0KSFliZHptNzM3bnpzOWlTek03c3plei9PYis0OTU1NTc3emt4Q2preDgzZ3A0aHc1
cHRLcFU4UG8yTEZCMU5KU1FpZE9GTks1Y3dWMAo0UUpSZTN0TXEzSEREVXpGeFVRREJuVFNvRUVk
TkdSSUcxVlVuS0NCQTMrWCszdmwrRFFXaSszWFowUDZZVlVrUklVVEFHWktjWmJUCm9VTVRxYjcr
Rm1wc0xLQ2ZmeWJhTDN4c2J5ZGl0czZwbERrZUo0cEpGUXNMaVc2N2plaXV1NGp1dnJ1VHBrejVr
MGFOMmlkSi9Gc0EKMnAxS1VubjFqSUN3bE52YTl2UDI3ZTI4YUJIenNHSE13NGN6UC9nZzg3MzNN
aGNYQXdZelIwa0pjLy8rekFNSE1zK2J4NW9uOHBZeQo1QlhUM1pVVkJveVJZdzkvOGtrN3o1L1Az
S2NQYzNVMTg2Wk56Rjk5eGJ4NHNSa0F2SUFzSzJPT3g1a2ZlSUM1dHJaZHl5UmxjNWMzClo3OUxo
ZWZ3OGVOSGVkMjZ5OW9TS2l1WjMzbUgrZlJwdVNWVVU4TmNVT0FQR0c2d3lzdXRsb095b1l4UzFs
d0dZallmT2ZJL1hyR0MKT1JaamZ1b3A1cDkrVWd6MG83V1ZlZGFzWUlCd0ExTlVaSlZqeVJMV01q
UFB6aGxnaE5sRCtlVEpKbjdtR2VhK2ZabWZmNTRaekhkUwpRd1B6aUJIaEFNTUpEbG9xRHJ3OHFJ
UFVKZExBU0FXMjhJWU5uVHhnQVBQS2xkY0RBVkMrK1lhNXREUjhZRGlCd1l2VXJ4OUxYUzZoClRw
RURSUW85Zyt2cno2cUdCRUh0N0pyazVsVkN5d2c3R0U1Z29BQ01IY3RhTjZsakpJQVJabS9nOWVz
dnEyb0pZWjJNMEcyRnNadHkKQXBEc3VyQ1ErWlZYTHFPdW9RVkZDbGNpbXNsL1ZUQ2pWVFEzSjRQ
QytqMHNBandaMDcxK1IydVpObzIxemxMM1VBRWpISjdBWDMvZApwbXJzMnJYZEE0RzdVRzI5S2h5
Vit4aGdvdTdDZzFDQUlnV3A0bmZmN1ZBTmF2dDJzTHQ3UXNzSmFweVJMWkJSSC9CQWVCRW9LRktB
CmhmejY2NTFxNW9DQVRvWDhHb0ZuaS9uSjBvVTVwcWFtRXp3SkJCVEplRFcvOU5KbHZ2Tk9iM2xo
QTNYd1lPNTBWWW1BZ1Z6QktGOTQKNHlzb2VBc1VqTW1URTQ4dGJBRGNaNHpTRTFVa2wzN3JBc1dm
bGlJOHJ0SnVDaTNEUGVKMkErRDhma25HVkZFYWMyVHlrZ0FVcS92Swpya3dSL2s1UTRRWFR1SmRh
NndRRDF6dDI1SDdyY0lJSW1iSnRHd1I5ZHJRdlNiaEUxVHVZRVZJVjRBRENwbHdWNWs0UTNOZlF2
aXlWCjJQdzRoVnRhbW5TY2tZcHFhNFBnUEVkMVZPNW1jcnJmTVU2UkFiTlJJUzk4M2FBajhGUUdm
VTRRN0d2SW1uUXJrc3J6anovTy9PMjMKekJjdldnZXU4VnNxLy9YekdZem9UWmxaSktFWmFwdUNP
YVNuQkl1dWFRYTg4VWJ5MHVDZTZmd3lTUTlDM3JKOVpXNlFWTXNtQkZTNgpRdHpKcm0zYnpESUly
Y0NMd3RaU1lKQnNhRGliVWRjbGRkNmlKdlR1ckxaZWpNRjkwN1lyZEUxZWhHY3llYXV6OGQ5eDQx
RHFuczJuCnlCK0g2dVJTSmwyVnpiUjE2OHd5QnpMRGkvQk1OcGlhU1pyb3VqQmgxNU9aUjUyeXhF
eGZzc2tsTDRZNDcvY0MwdlZ5WU9ieDFLbW0KWkYyWHJDUzdub1NYczJuOSt0RzBhQkhSQkFQakdx
d21ORWtORGQ2cHBmS01keXJtbndBMEw3NDRXbm1jYXVxNjBnSUR3SFJNSTg0Vwo0Yjd1RmVwZExR
UmRIZ2FNc2dJbkpUeUVsM04wcVE1V2g1aWlmRmQ3M1hJSGdHQ0pVU3Jydm1SVTJhenJwa3kxRG1T
Yjd3TkROeUQyCjk5YldvOTIyRW1IZEdMWG5ZeDJTYWNwWDA0bk5mUGNaaS9GZWZobHpKOG1YcmNy
TlBXcXZNcUZadVFITlIrT2lHd1QzZDlpNWhPZk8KVm5LdGxsVmJPNDFHakRDaldUbHp3ZlZNN0RM
b3BXczQwTmxKdEhQbk5PZHZWd0VScEpiU2poMkZ0R0NCODc2NTY0Y2VJaW90TlpkZQpMcVIwNWd6
UmxpMWlVMG13RlVMM1oyQkxnTDBLSFkzSk5PWERGSzY3Vy9MNkRvM3J3b1g5OXZ0MXRZWFE1NStQ
cHZ2dko3cnhSdnVlCitmT1RUNXBQTStvcDl1OVB5dnNyOVZCQXBDRlUwKzdkaFZSZG5kM3FqUkdG
WXZIaTdPWVJ0ZFRQaWdINDQ0L1JiWFV4WDc1OHB0clYKNGNPbU82bnIwOHZGaFhKZTNaTFhmVXZi
K2d6dmt0VmxZWU5sUVFIUjdiZG4vLzBhUHB6bzFWZXpuMCtVY3Zqbkg2TERoeWVpeUJZZwoyTzA2
ZGFwL1ZWaTFpbWpXTFAveUMzdE8yQ2tNRElSa3Q2UHNBOGZXNDBtVC9DMzI1czJrWXg1L2N3MW5i
dWZQRTMzM25haGJQQjR0ClpLN3VBUitQL2ZrKzB1REJSQjk4MERzMnNWbit3dys0bWd0QXB0QXZ2
eERkY1lkOXk3L3o1TWxFdTNiMWdnS09OemZqYzBwYzNWVmcKQ0k4M05naXFyQ1RhSStZY21Henlt
VG82aUU2ZkhoWlgzeUVWRmNHeUFpM2wrKy96VzlEMzYwZkFJcTZPWElZTUNSWVE1STRXaXU2cgpw
b1pVQlErK1JQNlhRSnpxeE5XcnppMnFjZmxmZ0VRNVFpWCs3YmY4RzlGRGJKdzhXUmhYRjBkbFpZ
bFlFOXh2R0R4dTNVcDA4Q0RSCmloWDVJZlFoUTg2ZUxZaXJ2NmtTODR1emphQUoyOWZHalVSLy9V
VXlOV0MxbWx3Vi9wY3VFYkRvbzg2LzRFOHF6QVN6enJ4NTFvRnkKL3ZFSHFhcCs3QmhKbDZzVm9i
VnJ3MXdENzdLaHl4SkhiSDI4bnd6aEUxQUEzR3I2bWpYWEZ4UzZmVjBkaVNXYnFMYVdDSlVPT2NV
SgpidkhRZitVaW9YdUR1Ui9kSGJvOWRIL29Cc05JNkFVRWk3ajZLR3hyQzJNUnpaWUowOGRRRUtB
b1FHR0E0aEFtNmlPZGxhendqS3ZEClNNenQ1aE9oMVVDMWhvb2RGb0ljTHl2cmpLdjNUZ2pHZkNO
MEVSaUVZakRxbGtkQjhBTGx1Zm5tanJpNlVtMXBDYUlJNGNnVDh6SXcKMjhCOEV6U0pXOXU0K3JX
RitwalBCT0VQQTJkbFpYQmN1SGlSZ0VWY25ReWp1VUMzejJlQzBFZjNGVlJMZ1F5NTZhYmY0NEpC
UFkwZQpUZFRVbE05d1dIVUhLSmcwQzBLbVdCYUl2UUJrSjJHMkVKNmplOG1hbDhIMHN0OWt0Y3hQ
NCtvTGZlTEVUdnJ4UjcrTEVONzhJT2o5ClZJblJNdSs1cHhOWW9JWEl4S0g0UXQrN043d01DcUpr
V0tyazErQVIrNnVBZ1pBRnlLaFJqV3JuK2ZYWElLb2V6anloNkx6d2dqOWwKNjl1WGFPUklCQWU0
QWdqUnYraSsrNGkrL05LZkFrUWxGNHpvL2JCOWdmY1NxUUVmMmtJMFpNUE1tUjMweFJmNHJaZWNI
TWoyQW5GTQpEajd5U0ljZE5pTm01NDN0Q0dKTEdVZC9TbGVXelJYd2RvWlJPV01SRy9pUkxkTTl1
c2J6NXcvRWlvdEYxZTNxc21CcDNFUVBQMHowCjBVZFJZWlUvNVlRR2hNMUcyYUtxS3FLaW9rMTI4
cFpRbDIvU1pEYlQvUGtkT2pDeTcvYWVMUTVrYXp0ZWVUblJraVhvcmhJUGZHUnQKYWZZMmZWNi9N
U0U2dnh3OWV1M0dmNi90QmFuZTk5ejBTYlNTbm5pQ1pkOWJOTnJHKys4VFRaOU9oRVZtT0hDTjMw
eFROaFpXRkJVSgp0MWZLQUVSNDNoMWx4WEZBTnRyQ3M4OG1mMnR4enpTbCt0YW44NXlYNHdBQUpm
VXc3MXJETkhQZWV5ODVHRFpEOEl4SnN0TTFjVTdICnRZYUNndEJFTXVGdXpQbU1TY1lnTGZndzlH
S001ZWZRWE01ZSthVnpQeDNuTTFkYXlXd05VWVNvT0dFa2VDcnlZZ0NlTVVsZSthVjYKSCtWYXZo
d2xTeSt1bFRvd2d3ZTBiTGpaeUpSUlVRYWtKdzdNMEVwa0pyR0t4TEc4YndZMnpUVEZEMFRzOUtK
VW52Rkt3L1I5bUVsZQplKzJ5ekF6S2FMQUhKQyt5R1NlWW1iWUk5LytqS3RRemNZSnA0MmZFVGF5
Ym9TYStSMDN0TmVFbUZxQUk3MmFvRTJBVDNrbE5BT0ZNCkF5MEYyaFJrQ2c1Y20xWjM3ZnhTRmRx
Sm5qUHBTUGtLS0ptNUdyY3JGZFZ6cHFZVFN3VTNHOUZObzVFaGluTlBuZkZIRlF5VWUrdFcKYnpV
N1VjdkFiN0JYdGJhYWRjWi9wWlZZNFNvd1lLeXZqeko3MHk4N3dud25ZM2gzdjJNQVdGZUhDRzRs
NEtGeGtvU3RnQzYzM3NxTQpacHdQZE81Y3o2TEtaVHVnaTQydVlGQ2w0WHpTRFhrVVZmQTJia3kv
ZFVDSSt4SHl5QUhLUXZWZU9tbFNlTzFkcGw2QU1XUFNBd1JnCldKSGFGdHI4OHVVczlWMnRHYU9s
NUdyM2xhNHc3d0pqdFM4Z3VETVJVQlpxMDRSTXlUVkJqNmh5Q0g3V25kQjIzZ3M2c0tRTmpvQlMK
cGRISW9IMTkrS0dwamlMNGRGYXRTaDBNYUZOV1JMYWUyYWhzWnBvNkMvZXM0TVFWRmN4cjFnVFB6
RXhMc0d0WDZtQmduR0dwdGhOTQo4ZE5JT3NLREVvM2tockRjTUxORVZhNmczSU1IZXdNQ2VZRVIr
UEhqVGFpN0VTWm1JeEVwM0FhMWZaV1VNR2NhS2luVE56M2QvMlBNCmdYQ3lUdG1RNkRvS0FlNmQ0
QW9mWmlBQWxyNUJhQzJOamVteXh2L25BVVpsWmZkZ29GWEFoSTY2U1IyZGRZN0V0UlI2aThaY1Fr
V2UKZmpxOFl4WjBVOTIxREZpU01kUDMxbHVkcUZNa21KK3NrRktCb1lpNXBIUDAwTVNlZXk1Y3dF
Q0FKNU1aMEo1d1lBNGNkZWhKTUs5awpqQW42ZDZuTWJBMmxCUC92c1JqenNtWEJkbVVZWnlSVGJS
SGJBN0lEVVhDd0FpZmRCUWxCTXp1ZC9LVnljOFFjM2F6QlRLQW1UNS9PCi9QYmJlQVBsbGsrRUVY
aWlRVjk1dVdVdVI2QVZsREdWa0VUcFZEN016MHBseFVna2E0bHJhOXY1c2NlWW9ibEFBWUF4NzlB
aDg4aEEKYUNOdHQyMEs4ZzNkRXZKR1dWQ203cUxlaEptcHBzb21ERmlLa0EwU2M3MmRFWWtITFFm
bW1BVUxtTjk4RXlHd21jK2NrY2ZTSkFocgp0QWJNWjREcDZJWktTNWxoNXNDQTd0RkhFZWU5WGZO
T0ZNUERWQVhUU09mcWhwMDAvcFBWUjRYbDFaTEJNdldGRHZmYisvWVYwSUVECjFqNTZlRjJEQjFW
c014czdsbWpvVUd5MnR4WmExOVVSL2YwM1hLMlNPUFlrT25LRWRQTVJQQ1JnVXo0V1RHUHJzZXgy
MVEyV0kwYzIKU2o3L2thMEFvZG8yRmpwQTNHZ0xRTmhaTkZlT0tmQnJxMjV0eFhzbkhFYkNSNkc2
S0JSUGJQby8wZUxVM1pSNDFZRWpGL1hqSXU0cQo0Q0ZCN3RmTHNWTUFDUFdHL1A4RFJucS9hTTZO
OHEwQUFBQUFTVVZPUks1Q1lJST0KCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>