<?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>156595</bug_id>
          
          <creation_ts>2016-04-14 13:48:55 -0700</creation_ts>
          <short_desc>Display failing JSC stress tests in buildbot dashboard</short_desc>
          <delta_ts>2017-03-28 11:25:59 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>156920</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Srinivasan Vijayaraghavan">webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dburkart</cc>
    
    <cc>jmarcell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1183831</commentid>
    <comment_count>0</comment_count>
    <who name="Srinivasan Vijayaraghavan">webkit</who>
    <bug_when>2016-04-14 13:48:55 -0700</bug_when>
    <thetext>Display failing JSC stress tests in buildbot dashboard</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183855</commentid>
    <comment_count>1</comment_count>
      <attachid>276428</attachid>
    <who name="Srinivasan Vijayaraghavan">webkit</who>
    <bug_when>2016-04-14 14:15:47 -0700</bug_when>
    <thetext>Created attachment 276428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183856</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-14 14:17:40 -0700</bug_when>
    <thetext>Attachment 276428 did not pass style-queue:


ERROR: Tools/ChangeLog:10:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Tools/ChangeLog:11:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Tools/ChangeLog:14:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Tools/ChangeLog:17:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Tools/ChangeLog:19:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Tools/ChangeLog:22:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Tools/ChangeLog:25:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Tools/ChangeLog:26:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Tools/ChangeLog:28:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Tools/ChangeLog:29:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Tools/ChangeLog:31:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Tools/ChangeLog:33:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Tools/ChangeLog:34:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 13 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183859</commentid>
    <comment_count>3</comment_count>
      <attachid>276428</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-04-14 14:28:10 -0700</bug_when>
    <thetext>Comment on attachment 276428
Patch

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

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTesterQueueView.js:304
&gt; +        // Work around bug 80159: -webkit-user-select:none not respected when copying content.
&gt; +        // We set clipboard data manually, temporarily making non-selectable content hidden
&gt; +        // to easily get accurate selection text.

This is copied code, please factor it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184110</commentid>
    <comment_count>4</comment_count>
      <attachid>276428</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-04-15 10:32:37 -0700</bug_when>
    <thetext>Comment on attachment 276428
Patch

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

Despite my many comments, this looks very good, almost ready for landing.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotIteration.js:49
&gt; +    this.javaScriptCoreStressTestResults = null;

Is &quot;stress test&quot; the correct name for this test suite? We simply execute run-javascriptcore-tests, there doesn&apos;t seem to be anything about &quot;stress&quot; there.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTestResults.js:193
&gt; +        this.regressions = data.jscStressFailList;
&gt; +        console.assert(data.numJSCStressFailures === this.regressions.length);

I think that before having this go live, we should take another look at JSON content, to make it better match WebKit naming conventions.

Would something like this make sense?

numJSCStressFailures -&gt; failureCount
jscStressFailList -&gt; failures

But also, why do we need a separate count when there it can be taken from the array?

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTesterQueueView.js:108
&gt; +                    } else if (failedStep.name === &quot;jscore-test&quot;) {

As a separate patch, we should also teach the dashboard how to display failures in the popover when there are failures on multiple kinds.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTesterQueueView.js:109
&gt; +                        var status = new StatusLineView(messageElement, StatusLineView.Status.Bad, this._testStepFailureDescription(failedStep), failedStep.tooManyFailures ? failedStep.failureCount + &quot;\uff0b&quot; : failedStep.failureCount, iteration.queue.buildbot.javaScriptCoreStressTestFailuresURLForIteration(iteration));

I don&apos;t think that JSC tests have the concept of &quot;too many failures&quot; at this time

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTesterQueueView.js:268
&gt; +        this._addIterationHeadingToPopover(iteration, content, &quot;jscore stress test failures&quot;);

Once again, unsure about the name.

I don&apos;t see any link from the popover to detailed test results, is there one? It&apos;s useful to have an easy way to see the actual output.

We&apos;ll probably need a different UI than for layout tests, because we don&apos;t have individual result files here.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTesterQueueView.js:360
&gt; +        if (iteration.javaScriptCoreStressTestResults)
&gt; +            var content = this._popoverContentForJavaScriptCoreStressTestRegressions(iteration);
&gt; +        else {

Is there anything here that could be shared rather than copy/pasted?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185169</commentid>
    <comment_count>5</comment_count>
    <who name="Srinivasan Vijayaraghavan">webkit</who>
    <bug_when>2016-04-19 14:29:46 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 276428 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=276428&amp;action=review
&gt; 
&gt; Despite my many comments, this looks very good, almost ready for landing.
&gt; 
&gt; &gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotIteration.js:49
&gt; &gt; +    this.javaScriptCoreStressTestResults = null;
&gt; 
&gt; Is &quot;stress test&quot; the correct name for this test suite? We simply execute
&gt; run-javascriptcore-tests, there doesn&apos;t seem to be anything about &quot;stress&quot;
&gt; there.
Only stress test info is sent to BuildBot right now. 

I can modify the run-javascriptcore-tests script to include API test failures and build failures as well.

&gt; &gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTestResults.js:193
&gt; &gt; +        this.regressions = data.jscStressFailList;
&gt; &gt; +        console.assert(data.numJSCStressFailures === this.regressions.length);
&gt; 
&gt; I think that before having this go live, we should take another look at JSON
&gt; content, to make it better match WebKit naming conventions.
&gt; 
&gt; Would something like this make sense?
&gt; 
&gt; numJSCStressFailures -&gt; failureCount
&gt; jscStressFailList -&gt; failures
&gt; 
&gt; But also, why do we need a separate count when there it can be taken from
&gt; the array?
Count is redundant, I&apos;ll get rid of it. The JSON might further change once I add the non-stress JSC results as well.

&gt; &gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTesterQueueView.js:108
&gt; &gt; +                    } else if (failedStep.name === &quot;jscore-test&quot;) {
&gt; 
&gt; As a separate patch, we should also teach the dashboard how to display
&gt; failures in the popover when there are failures on multiple kinds.
OK

&gt; &gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTesterQueueView.js:109
&gt; &gt; +                        var status = new StatusLineView(messageElement, StatusLineView.Status.Bad, this._testStepFailureDescription(failedStep), failedStep.tooManyFailures ? failedStep.failureCount + &quot;\uff0b&quot; : failedStep.failureCount, iteration.queue.buildbot.javaScriptCoreStressTestFailuresURLForIteration(iteration));
&gt; 
&gt; I don&apos;t think that JSC tests have the concept of &quot;too many failures&quot; at this
&gt; time
Will be removed, thanks!

&gt; &gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTesterQueueView.js:268
&gt; &gt; +        this._addIterationHeadingToPopover(iteration, content, &quot;jscore stress test failures&quot;);
&gt; 
&gt; Once again, unsure about the name.
&gt; 
&gt; I don&apos;t see any link from the popover to detailed test results, is there
&gt; one? It&apos;s useful to have an easy way to see the actual output.
&gt; 
&gt; We&apos;ll probably need a different UI than for layout tests, because we don&apos;t
&gt; have individual result files here.
I&apos;ll change the text.

There&apos;s no link to the JSC test stdio (the heading does include a link to the build page though). It would be trivial to add, but we need to figure out a good place in the UI for it. Perhaps to the right of the build link?

&gt; &gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTesterQueueView.js:360
&gt; &gt; +        if (iteration.javaScriptCoreStressTestResults)
&gt; &gt; +            var content = this._popoverContentForJavaScriptCoreStressTestRegressions(iteration);
&gt; &gt; +        else {
&gt; 
&gt; Is there anything here that could be shared rather than copy/pasted?
Do you mean a reusable function that displays a loading indicator until content is loaded?

I would like to make server-side changes (i.e. run-javascriptcore-tests JSON content changes, including non-stress failures, plus the buildbot change to make it live) first. I&apos;ve been resorting to weird hackery to check if the front-end changes work, but it will be much faster if the back-end works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185177</commentid>
    <comment_count>6</comment_count>
    <who name="Srinivasan Vijayaraghavan">webkit</who>
    <bug_when>2016-04-19 14:50:01 -0700</bug_when>
    <thetext>To clarify that last bit:
I&apos;ll submit a patch for the back-end first. Having the new endpoint will allow for faster iteration of the dashboard front-end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185536</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-04-20 14:12:24 -0700</bug_when>
    <thetext>&gt; Only stress test info is sent to BuildBot right now. 
&gt;
&gt; I can modify the run-javascriptcore-tests script to include API test failures and build failures as well.

It seems worth having the code slightly more generic. We used to have other non-stress tests, we have the JS API tests, and we could get more. OR maybe we should run these as separate buildbot steps.

&gt; &gt; Is there anything here that could be shared rather than copy/pasted?
&gt; Do you mean a reusable function that displays a loading indicator until content is loaded?

That seems like a good one to have shared, yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189602</commentid>
    <comment_count>8</comment_count>
      <attachid>277955</attachid>
    <who name="Srinivasan Vijayaraghavan">webkit</who>
    <bug_when>2016-05-02 18:16:11 -0700</bug_when>
    <thetext>Created attachment 277955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189603</commentid>
    <comment_count>9</comment_count>
    <who name="Srinivasan Vijayaraghavan">webkit</who>
    <bug_when>2016-05-02 18:18:03 -0700</bug_when>
    <thetext>Just realized that I still have some changes I want to make. Please disregard attachment 277955.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190436</commentid>
    <comment_count>10</comment_count>
      <attachid>278185</attachid>
    <who name="Srinivasan Vijayaraghavan">webkit</who>
    <bug_when>2016-05-05 13:28:06 -0700</bug_when>
    <thetext>Created attachment 278185
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190460</commentid>
    <comment_count>11</comment_count>
      <attachid>278190</attachid>
    <who name="Srinivasan Vijayaraghavan">webkit</who>
    <bug_when>2016-05-05 14:32:52 -0700</bug_when>
    <thetext>Created attachment 278190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191936</commentid>
    <comment_count>12</comment_count>
      <attachid>278628</attachid>
    <who name="Srinivasan Vijayaraghavan">webkit</who>
    <bug_when>2016-05-11 09:02:05 -0700</bug_when>
    <thetext>Created attachment 278628
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191937</commentid>
    <comment_count>13</comment_count>
    <who name="Srinivasan Vijayaraghavan">webkit</who>
    <bug_when>2016-05-11 09:08:24 -0700</bug_when>
    <thetext>Added unit tests!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192135</commentid>
    <comment_count>14</comment_count>
      <attachid>278628</attachid>
    <who name="Srinivasan Vijayaraghavan">webkit</who>
    <bug_when>2016-05-11 16:08:38 -0700</bug_when>
    <thetext>Comment on attachment 278628
Patch

Realized that this will basically not work. I&apos;ll fix and re-upload, so no need to review this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194832</commentid>
    <comment_count>15</comment_count>
      <attachid>279403</attachid>
    <who name="Srinivasan Vijayaraghavan">webkit</who>
    <bug_when>2016-05-19 10:43:38 -0700</bug_when>
    <thetext>Created attachment 279403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195981</commentid>
    <comment_count>16</comment_count>
      <attachid>279694</attachid>
    <who name="Srinivasan Vijayaraghavan">webkit</who>
    <bug_when>2016-05-24 12:58:31 -0700</bug_when>
    <thetext>Created attachment 279694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196031</commentid>
    <comment_count>17</comment_count>
      <attachid>279694</attachid>
    <who name="Dean Johnson">dean_johnson</who>
    <bug_when>2016-05-24 14:27:24 -0700</bug_when>
    <thetext>Comment on attachment 279694
Patch

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

If I were you, I&apos;d also change all instances of &quot;javaScriptCore&quot; to &quot;jsc&quot; and &quot;JavaScriptCore&quot; to &quot;JSC&quot;. I think it&apos;s well enough known what JSC represents to assume the reader will know what&apos;s happening in the code, but it&apos;d probably be wise to get opinions from others before taking that suggestion.

Overall, it looks pretty good!

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotCombinedQueueView.js:114
&gt; +                        var statusView = new StatusLineView(message, StatusLineView.Status.Bad, this._testStepFailureDescription(failedStep), failedStep.failureCount, mostRecentFinishedIteration.queue.buildbot.javaScriptCoreTestStdioURLForIteration(mostRecentFinishedIteration, failedStep.name));

This line is really long and somewhat difficult to read. Can we store `mosRecentFinishedIteration.queue.buildbot.javascriptCoreTestStdioURLForIteration(mostRecentFinishedIteration, failedStep.name)` into a variable and use that as the argument instead of in-lining?

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotCombinedQueueView.js:143
&gt; +                    var statusView = new StatusLineView(message, StatusLineView.Status.Good, firstRecentUnsuccessfulIteration ? &quot;last succeeded&quot; : statusMessagePassed, null, url);

I realize that this existed before you edited it, but can we not inline the conditional and instead store it in a variable? It would significantly improve readability, in my opinion.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotCombinedQueueView.js:147
&gt; +                    this.element.appendChild(statusView.element);

Ditto above

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotIteration.js:363
&gt; +        if (this.queue.buildbot.needsAuthentication &amp;&amp; this.queue.buildbot.authenticationStatus === Buildbot.AuthenticationStatus.InvalidCredentials)

Shouldn&apos;t this be this.queue.buildbot.needsAuthentication || this.queue.buildbot.authenticationStatus === Buildbot.AuthenticationStatus.InvalidCredentials?

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueueView.js:257
&gt; +            var elementType = (additionalTextTarget)? &quot;a&quot; : &quot;span&quot;;

Nit: Space after &quot;)&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196077</commentid>
    <comment_count>18</comment_count>
      <attachid>279723</attachid>
    <who name="Srinivasan Vijayaraghavan">webkit</who>
    <bug_when>2016-05-24 16:48:06 -0700</bug_when>
    <thetext>Created attachment 279723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196433</commentid>
    <comment_count>19</comment_count>
      <attachid>279723</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-05-25 13:22:27 -0700</bug_when>
    <thetext>Comment on attachment 279723
Patch

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

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotCombinedQueueView.js:114
&gt; +                        var URL = mostRecentFinishedIteration.queue.buildbot.javaScriptCoreTestStdioURLForIteration(mostRecentFinishedIteration, failedStep.name);

WebKit style is to have local variable names start with lower case, so this one should be &quot;url&quot;, not &quot;URL&quot;.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueueView.js:257
&gt; +            var elementType = (additionalTextTarget) ? &quot;a&quot; : &quot;span&quot;;

I wouldn&apos;t have added parentheses around additionalTextTarget, as it is already so easy to figure out wha the condition is.

We don&apos;t have a specific style rule about this, but we have that in an example in the style guide (&quot;return condition ? 1 : 0;&quot;)

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTesterQueueView.js:108
&gt; +                    } else if (failedStep.name in [&quot;jscore-test&quot;, &quot;webkit-32bit-jsc-test&quot;, &quot;webkit-jsc-cloop-test&quot;]) {

In a separate patch, we should also present a better popover when there are both layout test and jsc failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197205</commentid>
    <comment_count>20</comment_count>
    <who name="Srinivasan Vijayaraghavan">webkit</who>
    <bug_when>2016-05-27 13:58:30 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; In a separate patch, we should also present a better popover when there are
&gt; both layout test and jsc failures.
Created Bug 158163 to track this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197208</commentid>
    <comment_count>21</comment_count>
      <attachid>279990</attachid>
    <who name="Srinivasan Vijayaraghavan">webkit</who>
    <bug_when>2016-05-27 14:06:13 -0700</bug_when>
    <thetext>Created attachment 279990
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197280</commentid>
    <comment_count>22</comment_count>
      <attachid>279990</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-27 17:04:49 -0700</bug_when>
    <thetext>Comment on attachment 279990
Patch for landing

Clearing flags on attachment: 279990

Committed r201475: &lt;http://trac.webkit.org/changeset/201475&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197281</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-27 17:04:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270387</commentid>
    <comment_count>24</comment_count>
    <who name="Jason Marcell">jmarcell</who>
    <bug_when>2017-01-26 15:37:01 -0800</bug_when>
    <thetext>I believe this broke the dashboard unit tests.

You can run the tests with
open Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/tests/index.html

or run-dashboard-tests

I&apos;d like to work on having EWS run run-dashboard-tests, but for now it does not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291975</commentid>
    <comment_count>25</comment_count>
    <who name="Jason Marcell">jmarcell</who>
    <bug_when>2017-03-28 11:25:59 -0700</bug_when>
    <thetext>Bug 170158: Fix dashboard test results on the dashboard
https://bugs.webkit.org/show_bug.cgi?id=170158</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276428</attachid>
            <date>2016-04-14 14:15:47 -0700</date>
            <delta_ts>2016-05-02 18:16:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156595-20160414141559.patch</filename>
            <type>text/plain</type>
            <size>15023</size>
            <attacher name="Srinivasan Vijayaraghavan">webkit</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE5OTU1MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM4IEBACisyMDE2LTA0LTE0ICBTcmluaXZhc2FuIFZpamF5YXJhZ2hhdmFuICA8c3ZpamF5
YXJhZ2hhdmFuQGFwcGxlLmNvbT4KKworICAgICAgICBEaXNwbGF5IGZhaWxpbmcgSlNDIHN0cmVz
cyB0ZXN0cyBpbiBidWlsZGJvdCBkYXNoYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjU5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvbWFzdGVyLmNmZzoKKyAgICAgICAgKFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMpOgor
CQlVc2UgLS1qc29uLW91dHB1dCBvcHRpb24gb2YgcGVybCBzY3JpcHQsIGFuZCBleHBvc2UgdGhl
IEpTT04gb3V0cHV0IGFzCisJCWEgYnVpbGRib3QgbG9nZworICAgICAgICAqIEJ1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3Jp
cHRzL0J1aWxkYm90LmpzOgorICAgICAgICAoQnVpbGRib3QucHJvdG90eXBlLmphdmFTY3JpcHRD
b3JlU3RyZXNzVGVzdEZhaWx1cmVzVVJMRm9ySXRlcmF0aW9uKToKKwkJTmV3IG1ldGhvZCB0aGF0
IGdlbmVyYXRlcyB0aGUgVVJMIGZvciBKU09OIG91dHB1dCBvZiBKU0Mgc3RyZXNzIHJlc3VsdHMK
KyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEl0ZXJhdGlvbi5qczoKKyAgICAgICAg
KEJ1aWxkYm90SXRlcmF0aW9uKTogCisJCUFkZCBuZXcgcHJvcGVydHkgZm9yIEpTQyBzdHJlc3Mg
dGVzdCByZXN1bHRzCisgICAgICAgIChCdWlsZGJvdEl0ZXJhdGlvbi5wcm90b3R5cGUubG9hZEph
dmFTY3JpcHRDb3JlU3RyZXNzVGVzdFJlc3VsdHMpOgorCQlGZXRjaCBKU09OIGZyb20gQnVpbGRi
b3QuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0UmVzdWx0cy5qczoKKyAg
ICAgICAgKEJ1aWxkYm90VGVzdFJlc3VsdHMucHJvdG90eXBlLmFkZEphdmFTY3JpcHRDb3JlU3Ry
ZXNzVGVzdEZhaWx1cmVzKToKKwkJUmVhZCBpbiBsaXN0IG9mIGZhaWxpbmcgdGVzdHMgZnJvbSBK
U09OCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanM6
CisgICAgICAgIChCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUuYXBwZW5kQnVpbGRl
clF1ZXVlU3RhdHVzKToKKwkJSW5zdGFudGlhdGUgUG9wb3ZlclRyYWNrZXJzIGZvciBidWlsZHMg
d2hvc2Ugb25seSB0ZXN0IGZhaWx1cmVzIGFyZQorCQlKU0Mgc3RyZXNzIHRlc3RzCisgICAgICAg
IChCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUuYWRkRmFpbHVyZUluZm9UZXh0KToK
KwkJRm9yIG5vdywgdGhpcyBpcyBqdXN0IGEgY29weSBvZiB0aGUgYWRkRmFpbHVyZUluZm9UZXh0
IG1ldGhvZCBmcm9tCisJCV9wb3BvdmVyQ29udGVudEZvckxheW91dFRlc3RSZWdyZXNzaW9ucwor
ICAgICAgICAoQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlLl9wb3BvdmVyQ29udGVu
dEZvckphdmFTY3JpcHRDb3JlU3RyZXNzVGVzdFJlZ3Jlc3Npb25zKToKKwkJR2VuZXJhdGVzIHRo
ZSBwb3BvdmVyIGJ1YmJsZSdzIGlubmVyIEhUTUwgZnJvbSB0aGUgSlNDIHN0cmVzcyB0ZXN0IHJl
c3VsdHMKKyAgICAgICAgKEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZS5fcHJlc2Vu
dFBvcG92ZXJGb3JKYXZhU2NyaXB0Q29yZVN0cmVzc1Rlc3RSZWdyZXNzaW9ucyk6CisJCUZldGNo
IEpTQyBzdHJlc3MgdGVzdCByZXN1bHRzLCBhbmQgZ2VuZXJhdGUgdGhlIHBvcG92ZXIgYnViYmxl
LiBBbHNvCisJCWhhbmRsZSBnZXQgZmFpbHVyZXMuCisKIDIwMTYtMDQtMTQgIEpvbiBMZWUgIDxq
b25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBBbmltb21ldGVyIHBsYW4KSW5kZXg6
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21hc3Rlci5j
ZmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvbWFzdGVyLmNmZwkocmV2aXNpb24gMTk5NTQ5KQorKysgVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbWFzdGVyLmNmZwkod29ya2luZyBjb3B5
KQpAQCAtNDQsNyArNDQsNyBAQCBhdXRoeiA9IEF1dGh6KAogCiBjWydzdGF0dXMnXSA9IFtdCiBj
WydzdGF0dXMnXS5hcHBlbmQoaHRtbC5XZWJTdGF0dXMoaHR0cF9wb3J0PTg3MTAsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2bGluaz0iaHR0cHM6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LyVzIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2
bGluaz0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LyVzIiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vjb21tZW50bGluaz0ociIoaHR0cHM6Ly9idWdz
XC53ZWJraXRcLm9yZy9zaG93X2J1Z1wuY2dpXD9pZD18d2Via2l0XC5vcmcvYi8pKFxkKykiLCBy
Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD1cMiIpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGh6PWF1dGh6KSkKIApAQCAtMjI4LDcgKzIyOCw3
IEBAIGNsYXNzIENvbXBpbGVXZWJLaXQoc2hlbGwuQ29tcGlsZSk6CiAKICAgICBkZWYgY3JlYXRl
U3VtbWFyeShzZWxmLCBsb2cpOgogICAgICAgICBwbGF0Zm9ybSA9IHNlbGYuZ2V0UHJvcGVydHko
J3BsYXRmb3JtJykKLSAgICAgICAgaWYgcGxhdGZvcm0uc3RhcnRzd2l0aCgnbWFjJyk6ICAgIAor
ICAgICAgICBpZiBwbGF0Zm9ybS5zdGFydHN3aXRoKCdtYWMnKToKICAgICAgICAgICAgIHdhcm5p
bmdzID0gW10KICAgICAgICAgICAgIGVycm9ycyA9IFtdCiAgICAgICAgICAgICBzaW8gPSBjU3Ry
aW5nSU8uU3RyaW5nSU8obG9nLmdldFRleHQoKSkKQEAgLTI5OCw4ICsyOTgsMTAgQEAgY2xhc3Mg
UnVuSmF2YVNjcmlwdENvcmVUZXN0cyhUZXN0V2l0aEZhaQogICAgIG5hbWUgPSAianNjb3JlLXRl
c3QiCiAgICAgZGVzY3JpcHRpb24gPSBbImpzY29yZS10ZXN0cyBydW5uaW5nIl0KICAgICBkZXNj
cmlwdGlvbkRvbmUgPSBbImpzY29yZS10ZXN0cyJdCi0gICAgY29tbWFuZCA9IFsicGVybCIsICIu
L1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzIiwgIi0tbm8tYnVpbGQiLCBX
aXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpXQorICAgIF9qc29uRmlsZU5hbWUg
PSAianNjX3Rlc3RfZmFpbHVyZXMuanNvbiIKKyAgICBjb21tYW5kID0gWyJwZXJsIiwgIi4vVG9v
bHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMiLCAiLS1uby1idWlsZCIsIFdpdGhQ
cm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilzIiwgIi0tanNvbi1vdXRwdXQ9JShfanNvbkZp
bGVOYW1lKXMiKV0KICAgICBmYWlsZWRUZXN0c0Zvcm1hdFN0cmluZyA9ICIlZCBKU0MgdGVzdCVz
IGZhaWxlZCIKKyAgICBsb2dmaWxlcyA9IHsianNvbiI6IF9qc29uRmlsZU5hbWV9CiAKICAgICBk
ZWYgc3RhcnQoc2VsZik6CiAgICAgICAgIGFwcGVuZEN1c3RvbUJ1aWxkRmxhZ3Moc2VsZiwgc2Vs
Zi5nZXRQcm9wZXJ0eSgncGxhdGZvcm0nKSwgc2VsZi5nZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3Jt
JykpCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdC5qcwkocmV2aXNpb24gMTk5NTQ5KQorKysg
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2
ICsxNTEsMTEgQEAgQnVpbGRib3QucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5i
YXNlVVJMICsgImJ1aWxkZXJzLyIgKyBlbmNvZGVVUklDb21wb25lbnQoaXRlcmF0aW9uLnF1ZXVl
LmlkKSArICIvYnVpbGRzLyIgKyBpdGVyYXRpb24uaWQ7CiAgICAgfSwKIAorICAgIGphdmFTY3Jp
cHRDb3JlU3RyZXNzVGVzdEZhaWx1cmVzVVJMRm9ySXRlcmF0aW9uOiBmdW5jdGlvbihpdGVyYXRp
b24pCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5iYXNlVVJMICsgImJ1aWxkZXJzLyIgKyBl
bmNvZGVVUklDb21wb25lbnQoaXRlcmF0aW9uLnF1ZXVlLmlkKSArICIvYnVpbGRzLyIgKyBpdGVy
YXRpb24uaWQgKyAiL3N0ZXBzL2pzY29yZS10ZXN0L2xvZ3MvanNvbiI7CisgICAgfSwKKwogICAg
IGxheW91dFRlc3RSZXN1bHRzRGlyZWN0b3J5VVJMRm9ySXRlcmF0aW9uOiBmdW5jdGlvbihpdGVy
YXRpb24pCiAgICAgewogICAgICAgICB2YXIgdW5kZXJzY29yZVNlcGFyYXRlZFJldmlzaW9ucyA9
ICJyIjsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpzCShy
ZXZpc2lvbiAxOTk1NDkpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEl0ZXJhdGlv
bi5qcwkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBCdWlsZGJvdEl0ZXJhdGlvbiA9
IGZ1bmN0aW9uKHF1ZXVlLCBkYXRhCiAgICAgdGhpcy5yZXZpc2lvbiA9IHt9OwogCiAgICAgdGhp
cy5sYXlvdXRUZXN0UmVzdWx0cyA9IG51bGw7IC8vIExheW91dCB0ZXN0IHJlc3VsdHMgY2FuIGJl
IG5lZWRlZCBldmVuIGlmIGFsbCB0ZXN0cyBwYXNzZWQsIGUuZy4gZm9yIHRoZSBsZWFrcyBib3Qu
CisgICAgdGhpcy5qYXZhU2NyaXB0Q29yZVN0cmVzc1Rlc3RSZXN1bHRzID0gbnVsbDsKIAogICAg
IHRoaXMuZmFpbGVkVGVzdFN0ZXBzID0gW107CiAKQEAgLTI1MCw2ICsyNTEsOCBAQCBCdWlsZGJv
dEl0ZXJhdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IG5ldyBC
dWlsZGJvdFRlc3RSZXN1bHRzKHN0ZXApOwogICAgICAgICAgICAgaWYgKHN0ZXAubmFtZSA9PT0g
ImxheW91dC10ZXN0IikKICAgICAgICAgICAgICAgICB0aGlzLmxheW91dFRlc3RSZXN1bHRzID0g
cmVzdWx0czsKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0ZXAubmFtZSA9PT0gImpzY29yZS10ZXN0
IikKKyAgICAgICAgICAgICAgICB0aGlzLmphdmFTY3JpcHRDb3JlU3RyZXNzVGVzdFJlc3VsdHMg
PSByZXN1bHRzOwogICAgICAgICAgICAgaWYgKHJlc3VsdHMuYWxsUGFzc2VkKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIHRoaXMuZmFpbGVkVGVzdFN0ZXBzLnB1c2gocmVz
dWx0cyk7CkBAIC0zNTMsNSArMzU2LDI1IEBAIEJ1aWxkYm90SXRlcmF0aW9uLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEuZXJyb3IpOwogICAgICAgICAgICAgY2Fs
bGJhY2soKTsKICAgICAgICAgfS5iaW5kKHRoaXMpLCB7anNvbnBDYWxsYmFja05hbWU6ICJBRERf
UkVTVUxUUyIsIHdpdGhDcmVkZW50aWFsczogdGhpcy5xdWV1ZS5idWlsZGJvdC5uZWVkc0F1dGhl
bnRpY2F0aW9ufSk7Ci0gICAgfQorICAgIH0sCisKKyAgICBsb2FkSmF2YVNjcmlwdENvcmVTdHJl
c3NUZXN0UmVzdWx0czogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAodGhp
cy5xdWV1ZS5idWlsZGJvdC5uZWVkc0F1dGhlbnRpY2F0aW9uICYmIHRoaXMucXVldWUuYnVpbGRi
b3QuYXV0aGVudGljYXRpb25TdGF0dXMgPT09IEJ1aWxkYm90LkF1dGhlbnRpY2F0aW9uU3RhdHVz
LkludmFsaWRDcmVkZW50aWFscykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBKU09O
LmxvYWQodGhpcy5xdWV1ZS5idWlsZGJvdC5qYXZhU2NyaXB0Q29yZVN0cmVzc1Rlc3RGYWlsdXJl
c1VSTEZvckl0ZXJhdGlvbih0aGlzKSwgZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAgICAgdGhp
cy5xdWV1ZS5idWlsZGJvdC5pc0F1dGhlbnRpY2F0ZWQgPSB0cnVlOworICAgICAgICAgICAgdGhp
cy5qYXZhU2NyaXB0Q29yZVN0cmVzc1Rlc3RSZXN1bHRzLmFkZEphdmFTY3JpcHRDb3JlU3RyZXNz
VGVzdEZhaWx1cmVzKGRhdGEpOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfS5i
aW5kKHRoaXMpLAorICAgICAgICBmdW5jdGlvbihkYXRhKSB7CisgICAgICAgICAgICBpZiAoZGF0
YS5lcnJvclR5cGUgPT09IEpTT04uTG9hZEVycm9yICYmIGRhdGEuZXJyb3JIVFRQQ29kZSA9PT0g
NDAxKSB7CisgICAgICAgICAgICAgICAgdGhpcy5xdWV1ZS5idWlsZGJvdC5pc0F1dGhlbnRpY2F0
ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhCdWlsZGJvdEl0ZXJhdGlvbi5FdmVudC5VbmF1dGhvcml6ZWRBY2Nlc3MpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YS5lcnJvcik7CisgICAgICAgICAgICBj
YWxsYmFjaygpOworICAgICAgICB9LmJpbmQodGhpcyksIHt3aXRoQ3JlZGVudGlhbHM6IHRoaXMu
cXVldWUuYnVpbGRib3QubmVlZHNBdXRoZW50aWNhdGlvbn0pOworICAgIH0sCiB9OwpJbmRleDog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0UmVzdWx0cy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RSZXN1bHRzLmpzCShyZXZpc2lvbiAx
OTk1NDkpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RSZXN1bHRzLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xODQsNCArMTg0LDEyIEBAIEJ1aWxkYm90VGVzdFJlc3VsdHMucHJv
dG90eXBlID0gewogICAgICAgICAvLyBiZWNhdXNlIGJ1aWxkYm90IGNvdW50cyByZWdyZXNzaW9u
cyB0aGF0IGhhZCBtaXNzaW5nIHBpeGVsIHJlc3VsdHMgb24gcmV0cnkgKGUuZy4gIlRFWFQgTUlT
U0lORyIpLgogICAgICAgICBjb25zb2xlLmFzc2VydChkYXRhLm51bV9taXNzaW5nID49IHRoaXMu
dGVzdHNXaXRoTWlzc2luZ1Jlc3VsdHMubGVuZ3RoKTsKICAgICB9LAorCisgICAgYWRkSmF2YVNj
cmlwdENvcmVTdHJlc3NUZXN0RmFpbHVyZXM6IGZ1bmN0aW9uKGRhdGEpCisgICAgeworICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLm5hbWUgPT09ICJqc2NvcmUtdGVzdCIpOworCisgICAgICAg
IHRoaXMucmVncmVzc2lvbnMgPSBkYXRhLmpzY1N0cmVzc0ZhaWxMaXN0OworICAgICAgICBjb25z
b2xlLmFzc2VydChkYXRhLm51bUpTQ1N0cmVzc0ZhaWx1cmVzID09PSB0aGlzLnJlZ3Jlc3Npb25z
Lmxlbmd0aCk7CisgICAgfSwKIH07CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJv
dFRlc3RlclF1ZXVlVmlldy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9C
dWlsZGJvdFRlc3RlclF1ZXVlVmlldy5qcwkocmV2aXNpb24gMTk5NTQ5KQorKysgVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEwNSw2ICsxMDUsOSBAQCBCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChmYWlsZWRTdGVwLm5hbWUgPT09ICJsYXlvdXQtdGVzdCIp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZp
ZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5CYWQsIHRoaXMuX3Rlc3RT
dGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0ZXApLCBmYWlsZWRTdGVwLnRvb01hbnlGYWls
dXJlcyA/IGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50ICsgIlx1ZmYwYiIgOiBmYWlsZWRTdGVwLmZh
aWx1cmVDb3VudCwgaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LmxheW91dFRlc3RSZXN1bHRzVVJM
Rm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFBv
cG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNCdWJibGVFbGVtZW50LCB0aGlzLl9wcmVzZW50UG9w
b3ZlckZvckxheW91dFRlc3RSZWdyZXNzaW9ucy5iaW5kKHRoaXMpLCBpdGVyYXRpb24pOworICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZhaWxlZFN0ZXAubmFtZSA9PT0gImpzY29yZS10
ZXN0IikgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNM
aW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkJhZCwgdGhpcy5f
dGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24oZmFpbGVkU3RlcCksIGZhaWxlZFN0ZXAudG9vTWFu
eUZhaWx1cmVzID8gZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQgKyAiXHVmZjBiIiA6IGZhaWxlZFN0
ZXAuZmFpbHVyZUNvdW50LCBpdGVyYXRpb24ucXVldWUuYnVpbGRib3QuamF2YVNjcmlwdENvcmVT
dHJlc3NUZXN0RmFpbHVyZXNVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1c0J1YmJsZUVsZW1l
bnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9ySmF2YVNjcmlwdENvcmVTdHJlc3NUZXN0UmVncmVz
c2lvbnMuYmluZCh0aGlzKSwgaXRlcmF0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZp
ZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5CYWQsIHRoaXMuX3Rlc3RT
dGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0ZXApLCBmYWlsZWRTdGVwLmZhaWx1cmVDb3Vu
dCA/IGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50IDogdW5kZWZpbmVkLCBmYWlsZWRTdGVwLlVSTCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1
c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9yR2VuZXJpY1Rlc3RGYWlsdXJl
cy5iaW5kKHRoaXMpLCBpdGVyYXRpb24pOwpAQCAtMjU3LDYgKzI2MCw3MyBAQCBCdWlsZGJvdFRl
c3RlclF1ZXVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBjb250ZW50OwogICAg
IH0sCiAKKyAgICBfcG9wb3ZlckNvbnRlbnRGb3JKYXZhU2NyaXB0Q29yZVN0cmVzc1Rlc3RSZWdy
ZXNzaW9uczogZnVuY3Rpb24oaXRlcmF0aW9uKQorICAgIHsKKyAgICAgICAgdmFyIGNvbnRlbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgY29udGVudC5jbGFzc05h
bWUgPSAidGVzdC1yZXN1bHRzLXBvcG92ZXIiOworCisgICAgICAgIHRoaXMuX2FkZEl0ZXJhdGlv
bkhlYWRpbmdUb1BvcG92ZXIoaXRlcmF0aW9uLCBjb250ZW50LCAianNjb3JlIHN0cmVzcyB0ZXN0
IGZhaWx1cmVzIik7CisgICAgICAgIHRoaXMuX2FkZERpdmlkZXJUb1BvcG92ZXIoY29udGVudCk7
CisKKyAgICAgICAgaWYgKCFpdGVyYXRpb24uamF2YVNjcmlwdENvcmVTdHJlc3NUZXN0UmVzdWx0
cy5yZWdyZXNzaW9ucykgeworICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgIG1lc3NhZ2UuY2xhc3NOYW1lID0gImxvYWRp
bmctZmFpbHVyZSI7CisgICAgICAgICAgICBtZXNzYWdlLnRleHRDb250ZW50ID0gIlRlc3QgcmVz
dWx0cyBjb3VsZG5cdTIwMTl0IGJlIGxvYWRlZCI7CisgICAgICAgICAgICBjb250ZW50LmFwcGVu
ZENoaWxkKG1lc3NhZ2UpOworICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBhZGRGYWlsdXJlSW5mb1RleHQocm93RWxlbWVudCwgY2xhc3NO
YW1lLCB0ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgc3BhbkVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICBzcGFuRWxlbWVudC5jbGFz
c05hbWUgPSBjbGFzc05hbWU7CisgICAgICAgICAgICBzcGFuRWxlbWVudC50ZXh0Q29udGVudCA9
IHRleHQ7CisgICAgICAgICAgICByb3dFbGVtZW50LmFwcGVuZENoaWxkKHNwYW5FbGVtZW50KTsK
KyAgICAgICAgfQorCisgICAgICAgIHZhciByZWdyZXNzaW9ucyA9IGl0ZXJhdGlvbi5sYXlvdXRU
ZXN0UmVzdWx0cy5yZWdyZXNzaW9uczsKKworICAgICAgICBmb3IgKHZhciBpID0gMCwgZW5kID0g
cmVncmVzc2lvbnMubGVuZ3RoOyBpICE9IGVuZDsgKytpKSB7CisgICAgICAgICAgICB2YXIgdGVz
dCA9IHJlZ3Jlc3Npb25zW2ldOworCisgICAgICAgICAgICB2YXIgcm93RWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworCisgICAgICAgICAgICB2YXIgdGVzdFBhdGhFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICAgICAgdGVzdFBh
dGhFbGVtZW50LmNsYXNzTmFtZSA9ICJ0ZXN0LXBhdGgiOworICAgICAgICAgICAgdGVzdFBhdGhF
bGVtZW50LnRleHRDb250ZW50ID0gdGVzdDsKKyAgICAgICAgICAgIHJvd0VsZW1lbnQuYXBwZW5k
Q2hpbGQodGVzdFBhdGhFbGVtZW50KTsKKworICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGls
ZChyb3dFbGVtZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdvcmsgYXJvdW5kIGJ1ZyA4
MDE1OTogLXdlYmtpdC11c2VyLXNlbGVjdDpub25lIG5vdCByZXNwZWN0ZWQgd2hlbiBjb3B5aW5n
IGNvbnRlbnQuCisgICAgICAgIC8vIFdlIHNldCBjbGlwYm9hcmQgZGF0YSBtYW51YWxseSwgdGVt
cG9yYXJpbHkgbWFraW5nIG5vbi1zZWxlY3RhYmxlIGNvbnRlbnQgaGlkZGVuCisgICAgICAgIC8v
IHRvIGVhc2lseSBnZXQgYWNjdXJhdGUgc2VsZWN0aW9uIHRleHQuCisgICAgICAgIGNvbnRlbnQu
b25jb3B5ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIHZhciBpdGVyYXRvciA9IGRv
Y3VtZW50LmNyZWF0ZU5vZGVJdGVyYXRvcigKKyAgICAgICAgICAgICAgICBldmVudC5jdXJyZW50
VGFyZ2V0LAorICAgICAgICAgICAgICAgIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULAorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYWNjZXB0Tm9kZTogZnVuY3Rpb24oZWxl
bWVudCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKGVsZW1lbnQpLndlYmtpdFVzZXJTZWxlY3QgIT09ICJub25lIikKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUOworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICApOworCisgICAgICAg
ICAgICB3aGlsZSAoKG5vZGUgPSBpdGVyYXRvci5uZXh0Tm9kZSgpKSkKKyAgICAgICAgICAgICAg
ICBub2RlLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7CisKKyAgICAgICAgICAgIGV2ZW50
LmN1cnJlbnRUYXJnZXQuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgICAgICAgICAg
ZXZlbnQuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCd0ZXh0Jywgd2luZG93LmdldFNlbGVjdGlvbigp
KTsKKyAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuc3R5bGUudmlzaWJpbGl0eSA9ICIi
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IGNvbnRlbnQ7CisgICAgfSwKKwogICAgIF9wcmVzZW50UG9wb3ZlckZvckxheW91dFRlc3RSZWdy
ZXNzaW9uczogZnVuY3Rpb24oZWxlbWVudCwgcG9wb3ZlciwgaXRlcmF0aW9uKQogICAgIHsKICAg
ICAgICAgaWYgKGl0ZXJhdGlvbi5sYXlvdXRUZXN0UmVzdWx0cy5yZWdyZXNzaW9ucykKQEAgLTI4
Myw2ICszNTMsMzMgQEAgQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9LAogCisgICAgX3ByZXNlbnRQb3BvdmVyRm9ySmF2YVNj
cmlwdENvcmVTdHJlc3NUZXN0UmVncmVzc2lvbnM6IGZ1bmN0aW9uKGVsZW1lbnQsIHBvcG92ZXIs
IGl0ZXJhdGlvbikKKyAgICB7CisgICAgICAgIGlmIChpdGVyYXRpb24uamF2YVNjcmlwdENvcmVT
dHJlc3NUZXN0UmVzdWx0cykKKyAgICAgICAgICAgIHZhciBjb250ZW50ID0gdGhpcy5fcG9wb3Zl
ckNvbnRlbnRGb3JKYXZhU2NyaXB0Q29yZVN0cmVzc1Rlc3RSZWdyZXNzaW9ucyhpdGVyYXRpb24p
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9ICJ0ZXN0
LXJlc3VsdHMtcG9wb3ZlciI7CisKKyAgICAgICAgICAgIHRoaXMuX2FkZEl0ZXJhdGlvbkhlYWRp
bmdUb1BvcG92ZXIoaXRlcmF0aW9uLCBjb250ZW50LCAiamF2YXNjcmlwdGNvcmUgc3RyZXNzIHRl
c3QgZmFpbHVyZXMiKTsKKyAgICAgICAgICAgIHRoaXMuX2FkZERpdmlkZXJUb1BvcG92ZXIoY29u
dGVudCk7CisKKyAgICAgICAgICAgIHZhciBsb2FkaW5nSW5kaWNhdG9yID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLmNsYXNzTmFt
ZSA9ICJsb2FkaW5nLWluZGljYXRvciI7CisgICAgICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLnRl
eHRDb250ZW50ID0gIkxvYWRpbmdcdTIwMjYiOworICAgICAgICAgICAgY29udGVudC5hcHBlbmRD
aGlsZChsb2FkaW5nSW5kaWNhdG9yKTsKKworICAgICAgICAgICAgaXRlcmF0aW9uLmxvYWRKYXZh
U2NyaXB0Q29yZVN0cmVzc1Rlc3RSZXN1bHRzKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IHBvcG92ZXIuY29udGVudCA9IHRoaXMuX3BvcG92ZXJDb250ZW50Rm9ySmF2YVNjcmlwdENvcmVT
dHJlc3NUZXN0UmVncmVzc2lvbnMoaXRlcmF0aW9uKTsKKyAgICAgICAgICAgIH0uYmluZCh0aGlz
KSk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgcmVjdCA9IERhc2hib2FyZC5SZWN0LnJlY3RG
cm9tQ2xpZW50UmVjdChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsKKyAgICAgICAg
cG9wb3Zlci5jb250ZW50ID0gY29udGVudDsKKyAgICAgICAgcG9wb3Zlci5wcmVzZW50KHJlY3Qs
IFtEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1ksIERhc2hib2FyZC5SZWN0RWRnZS5NQVhfWSwgRGFz
aGJvYXJkLlJlY3RFZGdlLk1BWF9YLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1hdKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfSwKKwogICAgIF9wcmVzZW50UG9wb3ZlckZvckdlbmVyaWNU
ZXN0RmFpbHVyZXM6IGZ1bmN0aW9uKGVsZW1lbnQsIHBvcG92ZXIsIGl0ZXJhdGlvbikKICAgICB7
CiAgICAgICAgIGZ1bmN0aW9uIGFkZFJlc3VsdEtpbmQobWVzc2FnZSwgdXJsKSB7CkBAIC0yOTEs
NyArMzg4LDcgQEAgQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgbGluZS5ocmVmID0gdXJsOwogICAgICAgICAgICAgbGluZS50ZXh0Q29udGVudCA9IG1l
c3NhZ2U7CiAgICAgICAgICAgICBsaW5lLnRhcmdldCA9ICJfYmxhbmsiOwotICAgICAgICAgICAg
Y29udGVudC5hcHBlbmRDaGlsZChsaW5lKTsgICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbnRl
bnQuYXBwZW5kQ2hpbGQobGluZSk7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgY29udGVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277955</attachid>
            <date>2016-05-02 18:16:11 -0700</date>
            <delta_ts>2016-05-05 13:28:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156595-20160502181648.patch</filename>
            <type>text/plain</type>
            <size>16133</size>
            <attacher name="Srinivasan Vijayaraghavan">webkit</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwMDM0OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM1IEBACisyMDE2LTA1LTAyICBTcmluaXZhc2FuIFZpamF5YXJhZ2hhdmFuICA8c3ZpamF5
YXJhZ2hhdmFuQGFwcGxlLmNvbT4KKworICAgICAgICBEaXNwbGF5IGZhaWxpbmcgSlNDIHN0cmVz
cyB0ZXN0cyBpbiBidWlsZGJvdCBkYXNoYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjU5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3QuanM6CisgICAg
ICAgIChCdWlsZGJvdC5wcm90b3R5cGUuamF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXNVUkxGb3JJ
dGVyYXRpb24pOiBHZW5lcmF0ZSB0aGUgVVJMIGZvciBKU09OIG91dHB1dCBvZiBKU0MgdGVzdHMu
CisgICAgICAgIChCdWlsZGJvdC5wcm90b3R5cGUuamF2YVNjcmlwdENvcmVTdGRpb1VSTEZvckl0
ZXJhdGlvbik6IEdlbmVyYXRlIHRoZSBVUkwgZm9yIHRleHQgb3V0cHV0IG9mIEpTQyB0ZXN0cy4K
KyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEl0ZXJhdGlvbi5qczoKKyAgICAgICAg
KEJ1aWxkYm90SXRlcmF0aW9uKTogQWRkIGphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMgdmFyaWFi
bGUuCisgICAgICAgIChCdWlsZGJvdEl0ZXJhdGlvbi5wcm90b3R5cGUuKTogQ2hlY2sgZm9yIGph
dmFzY3JpcHRjb3JlIHRlc3RzIHN0ZXAuCisgICAgICAgIChCdWlsZGJvdEl0ZXJhdGlvbi5wcm90
b3R5cGUubG9hZExheW91dFRlc3RSZXN1bHRzKTogQWRkIGNvbW1hIGF0Y2xvc2luZyBicmFjZS4K
KyAgICAgICAgKEJ1aWxkYm90SXRlcmF0aW9uLnByb3RvdHlwZS5sb2FkSmF2YVNjcmlwdENvcmVU
ZXN0UmVzdWx0cyk6IEZldGNoIEpTT04gZnJvbSBCdWlsZGJvdCBtYXN0ZXIKKyAgICAgICAgKiBC
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RSZXN1bHRzLmpzOgorICAgICAgICAoQnVpbGRib3RU
ZXN0UmVzdWx0cy5wcm90b3R5cGUuYWRkSmF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXMpOiBQYXJz
ZSBKU09OIGludG8gYSBsaXN0IG9mIGZhaWxpbmcgdGVzdHMuCisgICAgICAgICogQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Nj
cmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanM6CisgICAgICAgIChCdWlsZGJvdFRlc3Rl
clF1ZXVlVmlldy5wcm90b3R5cGUuYXBwZW5kQnVpbGRlclF1ZXVlU3RhdHVzKTogSW5zdGFudGlh
dGUgUG9wb3ZlclRyYWNrZXJzIGZvciBidWlsZHMgd2hvc2UKKyAgICAgICAgb25seSBmYWlsdXJl
cyBhcmUgSlNDIHRlc3RzLgorICAgICAgICAoQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90
eXBlLl9vblBvcG92ZXJDb3B5KTogUmV1c2FibGUgZnVuY3Rpb24gdG8gZW5hYmxlIGNvcHlpbmcg
dGV4dCBmcm9tIHBvcG92ZXIgYnViYmxlcy4KKyAgICAgICAgKEJ1aWxkYm90VGVzdGVyUXVldWVW
aWV3LnByb3RvdHlwZS5fcG9wb3ZlckNvbnRlbnRGb3JMYXlvdXRUZXN0UmVncmVzc2lvbnMpOiBV
c2UgX29uUG9wb3ZlckNvcHkuCisgICAgICAgIChCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90
b3R5cGUuYWRkRmFpbHVyZUluZm9UZXh0KTogRm9yIG5vdywgdGhpcyBpcyBqdXN0IGEgY29weSBv
ZiB0aGUgYWRkRmFpbHVyZUluZm9UZXh0CisgICAgICAgIG1ldGhvZCBmcm9tIF9wb3BvdmVyQ29u
dGVudEZvckxheW91dFRlc3RSZWdyZXNzaW9ucy4KKyAgICAgICAgKEJ1aWxkYm90VGVzdGVyUXVl
dWVWaWV3LnByb3RvdHlwZS5fcG9wb3ZlckNvbnRlbnRGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdy
ZXNzaW9ucyk6IEdlbmVyYXRlcyB0aGUgCisgICAgICAgIHBvcG92ZXIgYnViYmxlJ3MgaW5uZXIg
SFRNTCBmcm9tIHRoZSBsaXN0IG9mIEpTQyBmYWlsdXJlcy4KKyAgICAgICAgKEJ1aWxkYm90VGVz
dGVyUXVldWVWaWV3LnByb3RvdHlwZS5fcHJlc2VudFBvcG92ZXJGb3JMYXlvdXRUZXN0UmVncmVz
c2lvbnMpOiBVc2UgX2NyZWF0ZUxvYWRpbmdJbmRpY2F0b3IuCisgICAgICAgIChCdWlsZGJvdFRl
c3RlclF1ZXVlVmlldy5wcm90b3R5cGUuX2NyZWF0ZUxvYWRpbmdJbmRpY2F0b3IpOiBSZXVzYWJs
ZSBmdW5jdGlvbiB0byBjcmVhdGUgYSBsb2FkaW5nIGluZGljYXRvcgorICAgICAgICB3aXRoIGEg
c3BlY2lmaWVkIGhlYWRpbmcgZm9yIGFuIGl0ZXJhdGlvbi4KKyAgICAgICAgKEJ1aWxkYm90VGVz
dGVyUXVldWVWaWV3LnByb3RvdHlwZS5fcHJlc2VudFBvcG92ZXJGb3JKYXZhU2NyaXB0Q29yZVRl
c3RSZWdyZXNzaW9ucyk6IEdlbmVyYXRlIHRoZSAKKyAgICAgICAgcG9wb3ZlciBidWJibGUgYW5k
IGhhbmRsZSByZXF1ZXN0IGZhaWx1cmVzLgorCiAyMDE2LTA1LTAyICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8gYWNjdW11bGF0
ZSBsb2dzIGZvciBzcGVjaWZpYyBsb2dnaW5nIGNoYW5uZWxzIHRvIGhlbHAgZGlhZ25vc2UgdGVz
dCB0aW1lb3V0cy4KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90LmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90LmpzCShyZXZpc2lvbiAyMDAy
NjUpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMTUxLDYgKzE1MSwxOSBAQCBCdWlsZGJvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVy
biB0aGlzLmJhc2VVUkwgKyAiYnVpbGRlcnMvIiArIGVuY29kZVVSSUNvbXBvbmVudChpdGVyYXRp
b24ucXVldWUuaWQpICsgIi9idWlsZHMvIiArIGl0ZXJhdGlvbi5pZDsKICAgICB9LAogCisgICAg
amF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXNVUkxGb3JJdGVyYXRpb246IGZ1bmN0aW9uKGl0ZXJh
dGlvbikKKyAgICB7CisgICAgICAgIC8qIHN2aWpheWFyYWdoYXZhbkBhcHBsZS5jb206IFRPRE8g
Ki8KKyAgICAgICAgLyogcmV0dXJuIHRoaXMuYmFzZVVSTCArICJidWlsZGVycy8iICsgZW5jb2Rl
VVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1ZS5pZCkgKyAiL2J1aWxkcy8iICsgaXRlcmF0aW9u
LmlkICsgIi9zdGVwcy9qc2NvcmUtdGVzdC9sb2dzL2pzb24vdGV4dCI7Ki8KKyAgICAgICAgcmV0
dXJuICJodHRwOi8vMTI3LjAuMC4xOjUwMDAiCisgICAgfSwKKworICAgIGphdmFTY3JpcHRDb3Jl
U3RkaW9VUkxGb3JJdGVyYXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlvbikKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLmJhc2VVUkwgKyAiYnVpbGRlcnMvIiArIGVuY29kZVVSSUNvbXBvbmVudChp
dGVyYXRpb24ucXVldWUuaWQpICsgIi9idWlsZHMvIiArIGl0ZXJhdGlvbi5pZCArICIvc3RlcHMv
anNjb3JlLXRlc3QvbG9ncy9zdGRpbyI7CisKKyAgICB9LAorCiAgICAgbGF5b3V0VGVzdFJlc3Vs
dHNEaXJlY3RvcnlVUkxGb3JJdGVyYXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlvbikKICAgICB7CiAg
ICAgICAgIHZhciB1bmRlcnNjb3JlU2VwYXJhdGVkUmV2aXNpb25zID0gInIiOwpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RJdGVyYXRpb24uanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RJdGVyYXRpb24uanMJKHJldmlzaW9uIDIwMDI2NSkK
KysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC00Niw2ICs0Niw3IEBAIEJ1aWxkYm90SXRlcmF0aW9uID0gZnVuY3Rpb24ocXVldWUs
IGRhdGEKICAgICB0aGlzLnJldmlzaW9uID0ge307CiAKICAgICB0aGlzLmxheW91dFRlc3RSZXN1
bHRzID0gbnVsbDsgLy8gTGF5b3V0IHRlc3QgcmVzdWx0cyBjYW4gYmUgbmVlZGVkIGV2ZW4gaWYg
YWxsIHRlc3RzIHBhc3NlZCwgZS5nLiBmb3IgdGhlIGxlYWtzIGJvdC4KKyAgICB0aGlzLmphdmFT
Y3JpcHRDb3JlVGVzdFJlc3VsdHMgPSBudWxsOwogCiAgICAgdGhpcy5mYWlsZWRUZXN0U3RlcHMg
PSBbXTsKIApAQCAtMjUwLDYgKzI1MSw4IEBAIEJ1aWxkYm90SXRlcmF0aW9uLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHZhciByZXN1bHRzID0gbmV3IEJ1aWxkYm90VGVzdFJlc3VsdHMoc3Rl
cCk7CiAgICAgICAgICAgICBpZiAoc3RlcC5uYW1lID09PSAibGF5b3V0LXRlc3QiKQogICAgICAg
ICAgICAgICAgIHRoaXMubGF5b3V0VGVzdFJlc3VsdHMgPSByZXN1bHRzOworICAgICAgICAgICAg
ZWxzZSBpZiAoc3RlcC5uYW1lID09PSAianNjb3JlLXRlc3QiKQorICAgICAgICAgICAgICAgIHRo
aXMuamF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cyA9IHJlc3VsdHM7CiAgICAgICAgICAgICBpZiAo
cmVzdWx0cy5hbGxQYXNzZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
dGhpcy5mYWlsZWRUZXN0U3RlcHMucHVzaChyZXN1bHRzKTsKQEAgLTM1Myw1ICszNTYsMjUgQEAg
QnVpbGRib3RJdGVyYXRpb24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgY29uc29sZS5sb2co
ZGF0YS5lcnJvcik7CiAgICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICB9LmJpbmQodGhp
cyksIHtqc29ucENhbGxiYWNrTmFtZTogIkFERF9SRVNVTFRTIiwgd2l0aENyZWRlbnRpYWxzOiB0
aGlzLnF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRpb259KTsKLSAgICB9CisgICAgfSwK
KworICAgIGxvYWRKYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzOiBmdW5jdGlvbihjYWxsYmFjaykK
KyAgICB7CisgICAgICAgIGlmICh0aGlzLnF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRp
b24gJiYgdGhpcy5xdWV1ZS5idWlsZGJvdC5hdXRoZW50aWNhdGlvblN0YXR1cyA9PT0gQnVpbGRi
b3QuQXV0aGVudGljYXRpb25TdGF0dXMuSW52YWxpZENyZWRlbnRpYWxzKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIEpTT04ubG9hZCh0aGlzLnF1ZXVlLmJ1aWxkYm90LmphdmFTY3Jp
cHRDb3JlVGVzdEZhaWx1cmVzVVJMRm9ySXRlcmF0aW9uKHRoaXMpLCBmdW5jdGlvbihkYXRhKSB7
CisgICAgICAgICAgICB0aGlzLnF1ZXVlLmJ1aWxkYm90LmlzQXV0aGVudGljYXRlZCA9IHRydWU7
CisgICAgICAgICAgICB0aGlzLmphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMuYWRkSmF2YVNjcmlw
dENvcmVUZXN0RmFpbHVyZXMoZGF0YSk7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAg
ICB9LmJpbmQodGhpcyksCisgICAgICAgIGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgICAgICAgIGlm
IChkYXRhLmVycm9yVHlwZSA9PT0gSlNPTi5Mb2FkRXJyb3IgJiYgZGF0YS5lcnJvckhUVFBDb2Rl
ID09PSA0MDEpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnF1ZXVlLmJ1aWxkYm90LmlzQXV0aGVu
dGljYXRlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKEJ1aWxkYm90SXRlcmF0aW9uLkV2ZW50LlVuYXV0aG9yaXplZEFjY2Vzcyk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhLmVycm9yKTsKKyAgICAgICAg
ICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0uYmluZCh0aGlzKSwge3dpdGhDcmVkZW50aWFsczog
dGhpcy5xdWV1ZS5idWlsZGJvdC5uZWVkc0F1dGhlbnRpY2F0aW9ufSk7CisgICAgfSwKIH07Cklu
ZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RSZXN1bHRzLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdFJlc3VsdHMuanMJKHJldmlz
aW9uIDIwMDI2NSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdFJlc3VsdHMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw0ICsxODQsMTAgQEAgQnVpbGRib3RUZXN0UmVzdWx0
cy5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIGJlY2F1c2UgYnVpbGRib3QgY291bnRzIHJlZ3Jl
c3Npb25zIHRoYXQgaGFkIG1pc3NpbmcgcGl4ZWwgcmVzdWx0cyBvbiByZXRyeSAoZS5nLiAiVEVY
VCBNSVNTSU5HIikuCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGEubnVtX21pc3NpbmcgPj0g
dGhpcy50ZXN0c1dpdGhNaXNzaW5nUmVzdWx0cy5sZW5ndGgpOwogICAgIH0sCisKKyAgICBhZGRK
YXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlczogZnVuY3Rpb24oZGF0YSkKKyAgICB7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMubmFtZSA9PT0gImpzY29yZS10ZXN0Iik7CisgICAgICAgIHRo
aXMucmVncmVzc2lvbnMgPSBkYXRhLmZhaWx1cmVzOworICAgIH0sCiB9OwpJbmRleDogVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMJKHJldmlzaW9u
IDIwMDI2NSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdGVyUXVldWVWaWV3
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsOSArMTAyLDE1IEBAIEJ1aWxkYm90VGVzdGVyUXVl
dWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoaXRlcmF0aW9uLmZhaWxlZFRlc3RTdGVwcy5sZW5ndGggPT09IDEpIHsK
ICAgICAgICAgICAgICAgICAgICAgdmFyIGZhaWxlZFN0ZXAgPSBpdGVyYXRpb24uZmFpbGVkVGVz
dFN0ZXBzWzBdOworCiAgICAgICAgICAgICAgICAgICAgIGlmIChmYWlsZWRTdGVwLm5hbWUgPT09
ICJsYXlvdXQtdGVzdCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBu
ZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5C
YWQsIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0ZXApLCBmYWlsZWRT
dGVwLnRvb01hbnlGYWlsdXJlcyA/IGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50ICsgIlx1ZmYwYiIg
OiBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCwgaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LmxheW91
dFRlc3RSZXN1bHRzVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNCdWJibGVFbGVtZW50LCB0
aGlzLl9wcmVzZW50UG9wb3ZlckZvckxheW91dFRlc3RSZWdyZXNzaW9ucy5iaW5kKHRoaXMpLCBp
dGVyYXRpb24pOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoZmFpbGVkU3RlcC5uYW1lID09PSAianNjb3JlLXRlc3QiKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2VFbGVt
ZW50LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuQmFkLCB0aGlzLl90ZXN0U3RlcEZhaWx1cmVEZXNj
cmlwdGlvbihmYWlsZWRTdGVwKSwgZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQsIGl0ZXJhdGlvbi5x
dWV1ZS5idWlsZGJvdC5qYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlc1VSTEZvckl0ZXJhdGlvbihp
dGVyYXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tlcihz
dGF0dXMuc3RhdHVzQnViYmxlRWxlbWVudCwgdGhpcy5fcHJlc2VudFBvcG92ZXJGb3JKYXZhU2Ny
aXB0Q29yZVRlc3RSZWdyZXNzaW9ucy5iaW5kKHRoaXMpLCBpdGVyYXRpb24pOwogICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9
IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVz
LkJhZCwgdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24oZmFpbGVkU3RlcCksIGZhaWxl
ZFN0ZXAuZmFpbHVyZUNvdW50ID8gZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQgOiB1bmRlZmluZWQs
IGZhaWxlZFN0ZXAuVVJMKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJh
Y2tlcihzdGF0dXMuc3RhdHVzQnViYmxlRWxlbWVudCwgdGhpcy5fcHJlc2VudFBvcG92ZXJGb3JH
ZW5lcmljVGVzdEZhaWx1cmVzLmJpbmQodGhpcyksIGl0ZXJhdGlvbik7CkBAIC0xNTEsNiArMTU3
LDMxIEBAIEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0
dXJuIGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50ICsgIlx1MDBhMCIgKyB0aGlzLl90ZXN0U3RlcEZh
aWx1cmVEZXNjcmlwdGlvbihmYWlsZWRTdGVwKTsKICAgICB9LAogCisgICAgLy8gV29yayBhcm91
bmQgYnVnIDgwMTU5OiAtd2Via2l0LXVzZXItc2VsZWN0Om5vbmUgbm90IHJlc3BlY3RlZCB3aGVu
IGNvcHlpbmcgY29udGVudC4KKyAgICAvLyBXZSBzZXQgY2xpcGJvYXJkIGRhdGEgbWFudWFsbHks
IHRlbXBvcmFyaWx5IG1ha2luZyBub24tc2VsZWN0YWJsZSBjb250ZW50IGhpZGRlbgorICAgIC8v
IHRvIGVhc2lseSBnZXQgYWNjdXJhdGUgc2VsZWN0aW9uIHRleHQuCisgICAgX29uUG9wb3ZlckNv
cHk6IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHZhciBpdGVyYXRvciA9IGRvY3VtZW50LmNy
ZWF0ZU5vZGVJdGVyYXRvcigKKyAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQsCisgICAg
ICAgICAgICBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBhY2NlcHROb2RlOiBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmICh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS53ZWJraXRVc2VyU2VsZWN0
ICE9PSAibm9uZSIpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5G
SUxURVJfQUNDRVBUOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxU
RVJfU0tJUDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICk7CisK
KyAgICAgICAgd2hpbGUgKChub2RlID0gaXRlcmF0b3IubmV4dE5vZGUoKSkpCisgICAgICAgICAg
ICBub2RlLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7CisKKyAgICAgICAgZXZlbnQuY3Vy
cmVudFRhcmdldC5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgICAgIGV2ZW50LmNs
aXBib2FyZERhdGEuc2V0RGF0YSgndGV4dCcsIHdpbmRvdy5nZXRTZWxlY3Rpb24oKSk7CisgICAg
ICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuc3R5bGUudmlzaWJpbGl0eSA9ICIiOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfSwKKwogICAgIF9wb3BvdmVyQ29udGVudEZvckxheW91dFRlc3RS
ZWdyZXNzaW9uczogZnVuY3Rpb24oaXRlcmF0aW9uKQogICAgIHsKICAgICAgICAgdmFyIGhhc1Rl
c3RIaXN0b3J5ID0gdHlwZW9mIHRlc3RIaXN0b3J5ICE9PSAidW5kZWZpbmVkIjsKQEAgLTIyOSwz
MSArMjYwLDY1IEBAIEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQocm93RWxlbWVudCk7CiAgICAgICAgIH0KIAotICAg
ICAgICAvLyBXb3JrIGFyb3VuZCBidWcgODAxNTk6IC13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZSBu
b3QgcmVzcGVjdGVkIHdoZW4gY29weWluZyBjb250ZW50LgotICAgICAgICAvLyBXZSBzZXQgY2xp
cGJvYXJkIGRhdGEgbWFudWFsbHksIHRlbXBvcmFyaWx5IG1ha2luZyBub24tc2VsZWN0YWJsZSBj
b250ZW50IGhpZGRlbgotICAgICAgICAvLyB0byBlYXNpbHkgZ2V0IGFjY3VyYXRlIHNlbGVjdGlv
biB0ZXh0LgotICAgICAgICBjb250ZW50Lm9uY29weSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAg
ICAgICAgICB2YXIgaXRlcmF0b3IgPSBkb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3IoCi0gICAg
ICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldCwKLSAgICAgICAgICAgICAgICBOb2RlRmls
dGVyLlNIT1dfRUxFTUVOVCwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IGFjY2VwdE5vZGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS53ZWJraXRVc2VyU2VsZWN0ICE9
PSAibm9uZSIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIu
RklMVEVSX0FDQ0VQVDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVy
LkZJTFRFUl9TS0lQOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgKTsKKyAgICAgICAgY29udGVudC5vbmNvcHkgPSB0aGlzLl9vblBvcG92ZXJD
b3B5OworICAgICAgICByZXR1cm4gY29udGVudDsKKyAgICB9LAogCi0gICAgICAgICAgICB3aGls
ZSAoKG5vZGUgPSBpdGVyYXRvci5uZXh0Tm9kZSgpKSkKLSAgICAgICAgICAgICAgICBub2RlLnN0
eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7CisgICAgX3BvcG92ZXJDb250ZW50Rm9ySmF2YVNj
cmlwdENvcmVUZXN0UmVncmVzc2lvbnM6IGZ1bmN0aW9uKGl0ZXJhdGlvbikKKyAgICB7CisgICAg
ICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAg
IGNvbnRlbnQuY2xhc3NOYW1lID0gInRlc3QtcmVzdWx0cy1wb3BvdmVyIjsKIAotICAgICAgICAg
ICAgZXZlbnQuY3VycmVudFRhcmdldC5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Ci0gICAg
ICAgICAgICBldmVudC5jbGlwYm9hcmREYXRhLnNldERhdGEoJ3RleHQnLCB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkpOwotICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5zdHlsZS52aXNpYmls
aXR5ID0gIiI7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHRoaXMuX2FkZEl0
ZXJhdGlvbkhlYWRpbmdUb1BvcG92ZXIoaXRlcmF0aW9uLCBjb250ZW50LCAiamF2YXNjcmlwdGNv
cmUgdGVzdCBmYWlsdXJlcyIpOworICAgICAgICB0aGlzLl9hZGREaXZpZGVyVG9Qb3BvdmVyKGNv
bnRlbnQpOworCisgICAgICAgIGlmICghaXRlcmF0aW9uLmphdmFTY3JpcHRDb3JlVGVzdFJlc3Vs
dHMucmVncmVzc2lvbnMpIHsKKyAgICAgICAgICAgIHZhciBtZXNzYWdlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICBtZXNzYWdlLmNsYXNzTmFtZSA9ICJsb2Fk
aW5nLWZhaWx1cmUiOworICAgICAgICAgICAgbWVzc2FnZS50ZXh0Q29udGVudCA9ICJUZXN0IHJl
c3VsdHMgY291bGRuXHUyMDE5dCBiZSBsb2FkZWQiOworICAgICAgICAgICAgY29udGVudC5hcHBl
bmRDaGlsZChtZXNzYWdlKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZW50OworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gYWRkRmFpbHVyZUluZm9UZXh0KHJvd0VsZW1lbnQsIGNsYXNz
TmFtZSwgdGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHNwYW5FbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICAgICAgc3BhbkVsZW1lbnQuY2xh
c3NOYW1lID0gY2xhc3NOYW1lOworICAgICAgICAgICAgc3BhbkVsZW1lbnQudGV4dENvbnRlbnQg
PSB0ZXh0OworICAgICAgICAgICAgcm93RWxlbWVudC5hcHBlbmRDaGlsZChzcGFuRWxlbWVudCk7
CiAgICAgICAgIH0KIAorICAgICAgICB2YXIgcmVncmVzc2lvbnMgPSBpdGVyYXRpb24ubGF5b3V0
VGVzdFJlc3VsdHMucmVncmVzc2lvbnM7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIGVuZCA9
IHJlZ3Jlc3Npb25zLmxlbmd0aDsgaSAhPSBlbmQ7ICsraSkgeworICAgICAgICAgICAgdmFyIHRl
c3QgPSByZWdyZXNzaW9uc1tpXTsKKworICAgICAgICAgICAgdmFyIHJvd0VsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKworICAgICAgICAgICAgdmFyIHRlc3RQYXRoRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgIHRlc3RQ
YXRoRWxlbWVudC5jbGFzc05hbWUgPSAidGVzdC1wYXRoIjsKKyAgICAgICAgICAgIHRlc3RQYXRo
RWxlbWVudC50ZXh0Q29udGVudCA9IHRlc3Q7CisgICAgICAgICAgICByb3dFbGVtZW50LmFwcGVu
ZENoaWxkKHRlc3RQYXRoRWxlbWVudCk7CisKKyAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hp
bGQocm93RWxlbWVudCk7CisgICAgICAgIH0KKworICAgICAgICBjb250ZW50Lm9uY29weSA9IHRo
aXMuX29uUG9wb3ZlckNvcHk7CisgICAgICAgIHJldHVybiBjb250ZW50OworICAgIH0sCisKKyAg
ICBfY3JlYXRlTG9hZGluZ0luZGljYXRvcjogZnVuY3Rpb24oaXRlcmF0aW9uLCBoZWFkaW5nKSB7
CisgICAgICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cisg
ICAgICAgIGNvbnRlbnQuY2xhc3NOYW1lID0gInRlc3QtcmVzdWx0cy1wb3BvdmVyIjsKKworICAg
ICAgICB0aGlzLl9hZGRJdGVyYXRpb25IZWFkaW5nVG9Qb3BvdmVyKGl0ZXJhdGlvbiwgY29udGVu
dCwgImphdmFzY3JpcHRjb3JlIHRlc3QgZmFpbHVyZXMiKTsKKyAgICAgICAgdGhpcy5fYWRkRGl2
aWRlclRvUG9wb3Zlcihjb250ZW50KTsKKworICAgICAgICB2YXIgbG9hZGluZ0luZGljYXRvciA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBsb2FkaW5nSW5kaWNhdG9y
LmNsYXNzTmFtZSA9ICJsb2FkaW5nLWluZGljYXRvciI7CisgICAgICAgIGxvYWRpbmdJbmRpY2F0
b3IudGV4dENvbnRlbnQgPSAiTG9hZGluZ1x1MjAyNiI7CisgICAgICAgIGNvbnRlbnQuYXBwZW5k
Q2hpbGQobG9hZGluZ0luZGljYXRvcik7CisKICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7CiAgICAg
fSwKIApAQCAtMjYyLDE2ICszMjcsNyBAQCBCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGlmIChpdGVyYXRpb24ubGF5b3V0VGVzdFJlc3VsdHMucmVncmVzc2lv
bnMpCiAgICAgICAgICAgICB2YXIgY29udGVudCA9IHRoaXMuX3BvcG92ZXJDb250ZW50Rm9yTGF5
b3V0VGVzdFJlZ3Jlc3Npb25zKGl0ZXJhdGlvbik7CiAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAg
ICAgIGNvbnRlbnQuY2xhc3NOYW1lID0gInRlc3QtcmVzdWx0cy1wb3BvdmVyIjsKLQotICAgICAg
ICAgICAgdGhpcy5fYWRkSXRlcmF0aW9uSGVhZGluZ1RvUG9wb3ZlcihpdGVyYXRpb24sIGNvbnRl
bnQsICJsYXlvdXQgdGVzdCBmYWlsdXJlcyIpOwotICAgICAgICAgICAgdGhpcy5fYWRkRGl2aWRl
clRvUG9wb3Zlcihjb250ZW50KTsKLQotICAgICAgICAgICAgdmFyIGxvYWRpbmdJbmRpY2F0b3Ig
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAgIGxvYWRpbmdJbmRp
Y2F0b3IuY2xhc3NOYW1lID0gImxvYWRpbmctaW5kaWNhdG9yIjsKLSAgICAgICAgICAgIGxvYWRp
bmdJbmRpY2F0b3IudGV4dENvbnRlbnQgPSAiTG9hZGluZ1x1MjAyNiI7Ci0gICAgICAgICAgICBj
b250ZW50LmFwcGVuZENoaWxkKGxvYWRpbmdJbmRpY2F0b3IpOworICAgICAgICAgICAgdmFyIGNv
bnRlbnQgPSB0aGlzLl9jcmVhdGVMb2FkaW5nSW5kaWNhdG9yKGl0ZXJhdGlvbiwgImxheW91dCB0
ZXN0IGZhaWx1cmVzIik7CiAKICAgICAgICAgICAgIGl0ZXJhdGlvbi5sb2FkTGF5b3V0VGVzdFJl
c3VsdHMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gdGhp
cy5fcG9wb3ZlckNvbnRlbnRGb3JMYXlvdXRUZXN0UmVncmVzc2lvbnMoaXRlcmF0aW9uKTsKQEAg
LTI4Myw2ICszMzksMjQgQEAgQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9LAogCisgICAgX3ByZXNlbnRQb3BvdmVyRm9ySmF2
YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnM6IGZ1bmN0aW9uKGVsZW1lbnQsIHBvcG92ZXIsIGl0
ZXJhdGlvbikKKyAgICB7CisgICAgICAgIGlmIChpdGVyYXRpb24uamF2YVNjcmlwdENvcmVUZXN0
UmVzdWx0cykKKyAgICAgICAgICAgIHZhciBjb250ZW50ID0gdGhpcy5fcG9wb3ZlckNvbnRlbnRG
b3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucyhpdGVyYXRpb24pOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHZhciBjb250ZW50ID0gdGhpcy5fY3JlYXRlTG9hZGluZ0luZGljYXRv
cihpdGVyYXRpb24sICJqYXZhc2NyaXB0Y29yZSB0ZXN0IGZhaWx1cmVzIik7CisKKyAgICAgICAg
ICAgIGl0ZXJhdGlvbi5sb2FkSmF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cyhmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSB0aGlzLl9wb3BvdmVyQ29udGVudEZv
ckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jlc3Npb25zKGl0ZXJhdGlvbik7CisgICAgICAgICAgICB9
LmJpbmQodGhpcykpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHJlY3QgPSBEYXNoYm9hcmQu
UmVjdC5yZWN0RnJvbUNsaWVudFJlY3QoZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7
CisgICAgICAgIHBvcG92ZXIuY29udGVudCA9IGNvbnRlbnQ7CisgICAgICAgIHBvcG92ZXIucHJl
c2VudChyZWN0LCBbRGFzaGJvYXJkLlJlY3RFZGdlLk1JTl9ZLCBEYXNoYm9hcmQuUmVjdEVkZ2Uu
TUFYX1ksIERhc2hib2FyZC5SZWN0RWRnZS5NQVhfWCwgRGFzaGJvYXJkLlJlY3RFZGdlLk1JTl9Y
XSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKICAgICBfcHJlc2VudFBvcG92ZXJG
b3JHZW5lcmljVGVzdEZhaWx1cmVzOiBmdW5jdGlvbihlbGVtZW50LCBwb3BvdmVyLCBpdGVyYXRp
b24pCiAgICAgewogICAgICAgICBmdW5jdGlvbiBhZGRSZXN1bHRLaW5kKG1lc3NhZ2UsIHVybCkg
ewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278185</attachid>
            <date>2016-05-05 13:28:06 -0700</date>
            <delta_ts>2016-05-05 14:32:47 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-156595-20160505132847.patch</filename>
            <type>text/plain</type>
            <size>15780</size>
            <attacher name="Srinivasan Vijayaraghavan">webkit</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwMDQyNykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMzIEBACisyMDE2LTA1LTA0ICBTcmluaXZhc2FuIFZpamF5YXJhZ2hhdmFuICA8c3ZpamF5
YXJhZ2hhdmFuQGFwcGxlLmNvbT4KKworICAgICAgICBEaXNwbGF5IGZhaWxpbmcgSlNDIHN0cmVz
cyB0ZXN0cyBpbiBidWlsZGJvdCBkYXNoYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjU5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3QuanM6CisgICAg
ICAgIChCdWlsZGJvdC5wcm90b3R5cGUuamF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXNVUkxGb3JJ
dGVyYXRpb24pOiBHZW5lcmF0ZSB0aGUgVVJMIGZvciBKU09OIG91dHB1dCBvZiBKU0MgdGVzdHMu
CisgICAgICAgIChCdWlsZGJvdC5wcm90b3R5cGUuamF2YVNjcmlwdENvcmVUZXN0U3RkaW9VUkxG
b3JJdGVyYXRpb24pOiBHZW5lcmF0ZSB0aGUgVVJMIGZvciB0ZXh0IG91dHB1dCBvZiBKU0MgdGVz
dHMuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RJdGVyYXRpb24uanM6CisgICAg
ICAgIChCdWlsZGJvdEl0ZXJhdGlvbik6IEFkZCBqYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzIHZh
cmlhYmxlLgorICAgICAgICAoQnVpbGRib3RJdGVyYXRpb24ucHJvdG90eXBlLik6IENoZWNrIGZv
ciBqYXZhc2NyaXB0Y29yZSB0ZXN0cyBzdGVwLgorICAgICAgICAoQnVpbGRib3RJdGVyYXRpb24u
cHJvdG90eXBlLmxvYWRMYXlvdXRUZXN0UmVzdWx0cyk6IEFkZCBjb21tYSBhdCBjbG9zaW5nIGJy
YWNlLgorICAgICAgICAoQnVpbGRib3RJdGVyYXRpb24ucHJvdG90eXBlLmxvYWRKYXZhU2NyaXB0
Q29yZVRlc3RSZXN1bHRzKTogRmV0Y2ggSlNPTiBmcm9tIEJ1aWxkYm90IG1hc3RlcgorICAgICAg
ICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdFJlc3VsdHMuanM6CisgICAgICAgIChCdWls
ZGJvdFRlc3RSZXN1bHRzLnByb3RvdHlwZS5hZGRKYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlcyk6
IFBhcnNlIEpTT04gaW50byBhIGxpc3Qgb2YgZmFpbGluZyB0ZXN0cy4KKyAgICAgICAgKiBCdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5qczoKKyAgICAgICAgKEJ1aWxkYm90
VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZS5hcHBlbmRCdWlsZGVyUXVldWVTdGF0dXMpOiBJbnN0
YW50aWF0ZSBQb3BvdmVyVHJhY2tlcnMgZm9yIGJ1aWxkcyB3aG9zZQorICAgICAgICBvbmx5IGZh
aWx1cmVzIGFyZSBKU0MgdGVzdHMuCisgICAgICAgIChCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5w
cm90b3R5cGUuX29uUG9wb3ZlckNvcHkpOiBSZXVzYWJsZSBmdW5jdGlvbiB0byBlbmFibGUgY29w
eWluZyB0ZXh0IGZyb20gcG9wb3ZlciBidWJibGVzLgorICAgICAgICAoQnVpbGRib3RUZXN0ZXJR
dWV1ZVZpZXcucHJvdG90eXBlLl9wb3BvdmVyQ29udGVudEZvckxheW91dFRlc3RSZWdyZXNzaW9u
cyk6IFVzZSBfb25Qb3BvdmVyQ29weS4KKyAgICAgICAgKEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3
LnByb3RvdHlwZS5fcG9wb3ZlckNvbnRlbnRGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9u
cyk6IEdlbmVyYXRlcyB0aGUgCisgICAgICAgIHBvcG92ZXIgYnViYmxlJ3MgaW5uZXIgSFRNTCBm
cm9tIHRoZSBsaXN0IG9mIEpTQyBmYWlsdXJlcy4KKyAgICAgICAgKEJ1aWxkYm90VGVzdGVyUXVl
dWVWaWV3LnByb3RvdHlwZS5fcHJlc2VudFBvcG92ZXJGb3JMYXlvdXRUZXN0UmVncmVzc2lvbnMp
OiBVc2UgX2NyZWF0ZUxvYWRpbmdJbmRpY2F0b3IuCisgICAgICAgIChCdWlsZGJvdFRlc3RlclF1
ZXVlVmlldy5wcm90b3R5cGUuX2NyZWF0ZUxvYWRpbmdJbmRpY2F0b3IpOiBSZXVzYWJsZSBmdW5j
dGlvbiB0byBjcmVhdGUgYSBsb2FkaW5nIGluZGljYXRvcgorICAgICAgICB3aXRoIGEgc3BlY2lm
aWVkIGhlYWRpbmcgZm9yIGFuIGl0ZXJhdGlvbi4KKyAgICAgICAgKEJ1aWxkYm90VGVzdGVyUXVl
dWVWaWV3LnByb3RvdHlwZS5fcHJlc2VudFBvcG92ZXJGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdy
ZXNzaW9ucyk6IEdlbmVyYXRlIHRoZSAKKyAgICAgICAgcG9wb3ZlciBidWJibGUgYW5kIGhhbmRs
ZSByZXF1ZXN0IGZhaWx1cmVzLgorCiAyMDE2LTA1LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBFUzYgRnVuY3Rpb24ubmFtZSBpbmZlcnJlZCBmcm9tIHByb3Bl
cnR5IG5hbWVzIG9mIGxpdGVyYWwgb2JqZWN0cyBjYW4gYnJlYWsgc29tZSB3ZWJzaXRlcy4KSW5k
ZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90LmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9TY3JpcHRzL0J1aWxkYm90LmpzCShyZXZpc2lvbiAyMDA0MjcpCisrKyBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvU2NyaXB0cy9CdWlsZGJvdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMTUxLDYgKzE1MSwx
NyBAQCBCdWlsZGJvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwg
KyAiYnVpbGRlcnMvIiArIGVuY29kZVVSSUNvbXBvbmVudChpdGVyYXRpb24ucXVldWUuaWQpICsg
Ii9idWlsZHMvIiArIGl0ZXJhdGlvbi5pZDsKICAgICB9LAogCisgICAgamF2YVNjcmlwdENvcmVU
ZXN0RmFpbHVyZXNVUkxGb3JJdGVyYXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlvbikKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiYnVpbGRlcnMvIiArIGVuY29kZVVSSUNvbXBv
bmVudChpdGVyYXRpb24ucXVldWUuaWQpICsgIi9idWlsZHMvIiArIGl0ZXJhdGlvbi5pZCArICIv
c3RlcHMvanNjb3JlLXRlc3QvbG9ncy9qc29uL3RleHQiOworICAgIH0sCisKKyAgICBqYXZhU2Ny
aXB0Q29yZVRlc3RTdGRpb1VSTEZvckl0ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0aW9uKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArICJidWlsZGVycy8iICsgZW5jb2RlVVJJ
Q29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1ZS5pZCkgKyAiL2J1aWxkcy8iICsgaXRlcmF0aW9uLmlk
ICsgIi9zdGVwcy9qc2NvcmUtdGVzdC9sb2dzL3N0ZGlvIjsKKworICAgIH0sCisKICAgICBsYXlv
dXRUZXN0UmVzdWx0c0RpcmVjdG9yeVVSTEZvckl0ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0aW9u
KQogICAgIHsKICAgICAgICAgdmFyIHVuZGVyc2NvcmVTZXBhcmF0ZWRSZXZpc2lvbnMgPSAiciI7
CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEl0ZXJhdGlvbi5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEl0ZXJhdGlvbi5qcwkocmV2aXNp
b24gMjAwNDI3KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RJdGVyYXRpb24uanMJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgQnVpbGRib3RJdGVyYXRpb24gPSBmdW5j
dGlvbihxdWV1ZSwgZGF0YQogICAgIHRoaXMucmV2aXNpb24gPSB7fTsKIAogICAgIHRoaXMubGF5
b3V0VGVzdFJlc3VsdHMgPSBudWxsOyAvLyBMYXlvdXQgdGVzdCByZXN1bHRzIGNhbiBiZSBuZWVk
ZWQgZXZlbiBpZiBhbGwgdGVzdHMgcGFzc2VkLCBlLmcuIGZvciB0aGUgbGVha3MgYm90LgorICAg
IHRoaXMuamF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cyA9IG51bGw7CiAKICAgICB0aGlzLmZhaWxl
ZFRlc3RTdGVwcyA9IFtdOwogCkBAIC0yNTAsNiArMjUxLDggQEAgQnVpbGRib3RJdGVyYXRpb24u
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBuZXcgQnVpbGRib3RUZXN0
UmVzdWx0cyhzdGVwKTsKICAgICAgICAgICAgIGlmIChzdGVwLm5hbWUgPT09ICJsYXlvdXQtdGVz
dCIpCiAgICAgICAgICAgICAgICAgdGhpcy5sYXlvdXRUZXN0UmVzdWx0cyA9IHJlc3VsdHM7Cisg
ICAgICAgICAgICBlbHNlIGlmIChzdGVwLm5hbWUgPT09ICJqc2NvcmUtdGVzdCIpCisgICAgICAg
ICAgICAgICAgdGhpcy5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzID0gcmVzdWx0czsKICAgICAg
ICAgICAgIGlmIChyZXN1bHRzLmFsbFBhc3NlZCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB0aGlzLmZhaWxlZFRlc3RTdGVwcy5wdXNoKHJlc3VsdHMpOwpAQCAtMzUzLDUg
KzM1NiwyNSBAQCBCdWlsZGJvdEl0ZXJhdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBj
b25zb2xlLmxvZyhkYXRhLmVycm9yKTsKICAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAg
IH0uYmluZCh0aGlzKSwge2pzb25wQ2FsbGJhY2tOYW1lOiAiQUREX1JFU1VMVFMiLCB3aXRoQ3Jl
ZGVudGlhbHM6IHRoaXMucXVldWUuYnVpbGRib3QubmVlZHNBdXRoZW50aWNhdGlvbn0pOwotICAg
IH0KKyAgICB9LAorCisgICAgbG9hZEphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHM6IGZ1bmN0aW9u
KGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMucXVldWUuYnVpbGRib3QubmVlZHNB
dXRoZW50aWNhdGlvbiAmJiB0aGlzLnF1ZXVlLmJ1aWxkYm90LmF1dGhlbnRpY2F0aW9uU3RhdHVz
ID09PSBCdWlsZGJvdC5BdXRoZW50aWNhdGlvblN0YXR1cy5JbnZhbGlkQ3JlZGVudGlhbHMpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgSlNPTi5sb2FkKHRoaXMucXVldWUuYnVpbGRi
b3QuamF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXNVUkxGb3JJdGVyYXRpb24odGhpcyksIGZ1bmN0
aW9uKGRhdGEpIHsKKyAgICAgICAgICAgIHRoaXMucXVldWUuYnVpbGRib3QuaXNBdXRoZW50aWNh
dGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHRoaXMuamF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cy5h
ZGRKYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlcyhkYXRhKTsKKyAgICAgICAgICAgIGNhbGxiYWNr
KCk7CisgICAgICAgIH0uYmluZCh0aGlzKSwKKyAgICAgICAgZnVuY3Rpb24oZGF0YSkgeworICAg
ICAgICAgICAgaWYgKGRhdGEuZXJyb3JUeXBlID09PSBKU09OLkxvYWRFcnJvciAmJiBkYXRhLmVy
cm9ySFRUUENvZGUgPT09IDQwMSkgeworICAgICAgICAgICAgICAgIHRoaXMucXVldWUuYnVpbGRi
b3QuaXNBdXRoZW50aWNhdGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoQnVpbGRib3RJdGVyYXRpb24uRXZlbnQuVW5hdXRob3JpemVkQWNj
ZXNzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEuZXJyb3Ip
OworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfS5iaW5kKHRoaXMpLCB7d2l0aENy
ZWRlbnRpYWxzOiB0aGlzLnF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRpb259KTsKKyAg
ICB9LAogfTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdFJlc3VsdHMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0UmVzdWx0
cy5qcwkocmV2aXNpb24gMjAwNDI3KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RU
ZXN0UmVzdWx0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQCBCdWlsZGJvdFRl
c3RSZXN1bHRzLnByb3RvdHlwZSA9IHsKIAogICAgIF9wYXJzZVJlc3VsdHM6IGZ1bmN0aW9uKHRl
c3RTdGVwKQogICAgIHsKLSAgICAgICAgdGhpcy5uYW1lID0gdGVzdFN0ZXAubmFtZTsKICAgICAg
ICAgdHJ5IHsKICAgICAgICAgICAgIHRoaXMuVVJMID0gdGVzdFN0ZXAubG9nc1swXVsxXTsKICAg
ICAgICAgfSBjYXRjaCAoZXgpIHsKQEAgLTE4NCw0ICsxODMsMTAgQEAgQnVpbGRib3RUZXN0UmVz
dWx0cy5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIGJlY2F1c2UgYnVpbGRib3QgY291bnRzIHJl
Z3Jlc3Npb25zIHRoYXQgaGFkIG1pc3NpbmcgcGl4ZWwgcmVzdWx0cyBvbiByZXRyeSAoZS5nLiAi
VEVYVCBNSVNTSU5HIikuCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGEubnVtX21pc3Npbmcg
Pj0gdGhpcy50ZXN0c1dpdGhNaXNzaW5nUmVzdWx0cy5sZW5ndGgpOwogICAgIH0sCisKKyAgICBh
ZGRKYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlczogZnVuY3Rpb24oZGF0YSkKKyAgICB7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMubmFtZSA9PT0gImpzY29yZS10ZXN0Iik7CisgICAgICAg
IHRoaXMucmVncmVzc2lvbnMgPSBkYXRhLmZhaWx1cmVzOworICAgIH0sCiB9OwpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMJKHJldmlz
aW9uIDIwMDQyNykKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdGVyUXVldWVW
aWV3LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsOSArMTAyLDE1IEBAIEJ1aWxkYm90VGVzdGVy
UXVldWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoaXRlcmF0aW9uLmZhaWxlZFRlc3RTdGVwcy5sZW5ndGggPT09IDEp
IHsKICAgICAgICAgICAgICAgICAgICAgdmFyIGZhaWxlZFN0ZXAgPSBpdGVyYXRpb24uZmFpbGVk
VGVzdFN0ZXBzWzBdOworCiAgICAgICAgICAgICAgICAgICAgIGlmIChmYWlsZWRTdGVwLm5hbWUg
PT09ICJsYXlvdXQtdGVzdCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMg
PSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1
cy5CYWQsIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0ZXApLCBmYWls
ZWRTdGVwLnRvb01hbnlGYWlsdXJlcyA/IGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50ICsgIlx1ZmYw
YiIgOiBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCwgaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90Lmxh
eW91dFRlc3RSZXN1bHRzVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNCdWJibGVFbGVtZW50
LCB0aGlzLl9wcmVzZW50UG9wb3ZlckZvckxheW91dFRlc3RSZWdyZXNzaW9ucy5iaW5kKHRoaXMp
LCBpdGVyYXRpb24pOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoZmFpbGVkU3RlcC5uYW1lID09PSAianNjb3JlLXRlc3QiKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2VF
bGVtZW50LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuQmFkLCB0aGlzLl90ZXN0U3RlcEZhaWx1cmVE
ZXNjcmlwdGlvbihmYWlsZWRTdGVwKSwgZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQsIGl0ZXJhdGlv
bi5xdWV1ZS5idWlsZGJvdC5qYXZhU2NyaXB0Q29yZVRlc3RTdGRpb1VSTEZvckl0ZXJhdGlvbihp
dGVyYXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tlcihz
dGF0dXMuc3RhdHVzQnViYmxlRWxlbWVudCwgdGhpcy5fcHJlc2VudFBvcG92ZXJGb3JKYXZhU2Ny
aXB0Q29yZVRlc3RSZWdyZXNzaW9ucy5iaW5kKHRoaXMpLCBpdGVyYXRpb24pOwogICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9
IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVz
LkJhZCwgdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24oZmFpbGVkU3RlcCksIGZhaWxl
ZFN0ZXAuZmFpbHVyZUNvdW50ID8gZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQgOiB1bmRlZmluZWQs
IGZhaWxlZFN0ZXAuVVJMKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJh
Y2tlcihzdGF0dXMuc3RhdHVzQnViYmxlRWxlbWVudCwgdGhpcy5fcHJlc2VudFBvcG92ZXJGb3JH
ZW5lcmljVGVzdEZhaWx1cmVzLmJpbmQodGhpcyksIGl0ZXJhdGlvbik7CkBAIC0xNTEsNiArMTU3
LDMxIEBAIEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0
dXJuIGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50ICsgIlx1MDBhMCIgKyB0aGlzLl90ZXN0U3RlcEZh
aWx1cmVEZXNjcmlwdGlvbihmYWlsZWRTdGVwKTsKICAgICB9LAogCisgICAgLy8gV29yayBhcm91
bmQgYnVnIDgwMTU5OiAtd2Via2l0LXVzZXItc2VsZWN0Om5vbmUgbm90IHJlc3BlY3RlZCB3aGVu
IGNvcHlpbmcgY29udGVudC4KKyAgICAvLyBXZSBzZXQgY2xpcGJvYXJkIGRhdGEgbWFudWFsbHks
IHRlbXBvcmFyaWx5IG1ha2luZyBub24tc2VsZWN0YWJsZSBjb250ZW50IGhpZGRlbgorICAgIC8v
IHRvIGVhc2lseSBnZXQgYWNjdXJhdGUgc2VsZWN0aW9uIHRleHQuCisgICAgX29uUG9wb3ZlckNv
cHk6IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHZhciBpdGVyYXRvciA9IGRvY3VtZW50LmNy
ZWF0ZU5vZGVJdGVyYXRvcigKKyAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQsCisgICAg
ICAgICAgICBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBhY2NlcHROb2RlOiBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmICh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS53ZWJraXRVc2VyU2VsZWN0
ICE9PSAibm9uZSIpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5G
SUxURVJfQUNDRVBUOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxU
RVJfU0tJUDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICk7CisK
KyAgICAgICAgd2hpbGUgKChub2RlID0gaXRlcmF0b3IubmV4dE5vZGUoKSkpCisgICAgICAgICAg
ICBub2RlLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7CisKKyAgICAgICAgZXZlbnQuY3Vy
cmVudFRhcmdldC5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgICAgIGV2ZW50LmNs
aXBib2FyZERhdGEuc2V0RGF0YSgndGV4dCcsIHdpbmRvdy5nZXRTZWxlY3Rpb24oKSk7CisgICAg
ICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuc3R5bGUudmlzaWJpbGl0eSA9ICIiOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfSwKKwogICAgIF9wb3BvdmVyQ29udGVudEZvckxheW91dFRlc3RS
ZWdyZXNzaW9uczogZnVuY3Rpb24oaXRlcmF0aW9uKQogICAgIHsKICAgICAgICAgdmFyIGhhc1Rl
c3RIaXN0b3J5ID0gdHlwZW9mIHRlc3RIaXN0b3J5ICE9PSAidW5kZWZpbmVkIjsKQEAgLTIyOSwz
MSArMjYwLDU3IEBAIEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQocm93RWxlbWVudCk7CiAgICAgICAgIH0KIAotICAg
ICAgICAvLyBXb3JrIGFyb3VuZCBidWcgODAxNTk6IC13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZSBu
b3QgcmVzcGVjdGVkIHdoZW4gY29weWluZyBjb250ZW50LgotICAgICAgICAvLyBXZSBzZXQgY2xp
cGJvYXJkIGRhdGEgbWFudWFsbHksIHRlbXBvcmFyaWx5IG1ha2luZyBub24tc2VsZWN0YWJsZSBj
b250ZW50IGhpZGRlbgotICAgICAgICAvLyB0byBlYXNpbHkgZ2V0IGFjY3VyYXRlIHNlbGVjdGlv
biB0ZXh0LgotICAgICAgICBjb250ZW50Lm9uY29weSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAg
ICAgICAgICB2YXIgaXRlcmF0b3IgPSBkb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3IoCi0gICAg
ICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldCwKLSAgICAgICAgICAgICAgICBOb2RlRmls
dGVyLlNIT1dfRUxFTUVOVCwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IGFjY2VwdE5vZGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS53ZWJraXRVc2VyU2VsZWN0ICE9
PSAibm9uZSIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIu
RklMVEVSX0FDQ0VQVDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVy
LkZJTFRFUl9TS0lQOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgKTsKKyAgICAgICAgY29udGVudC5vbmNvcHkgPSB0aGlzLl9vblBvcG92ZXJD
b3B5OworICAgICAgICByZXR1cm4gY29udGVudDsKKyAgICB9LAogCi0gICAgICAgICAgICB3aGls
ZSAoKG5vZGUgPSBpdGVyYXRvci5uZXh0Tm9kZSgpKSkKLSAgICAgICAgICAgICAgICBub2RlLnN0
eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7CisgICAgX3BvcG92ZXJDb250ZW50Rm9ySmF2YVNj
cmlwdENvcmVUZXN0UmVncmVzc2lvbnM6IGZ1bmN0aW9uKGl0ZXJhdGlvbikKKyAgICB7CisgICAg
ICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAg
IGNvbnRlbnQuY2xhc3NOYW1lID0gInRlc3QtcmVzdWx0cy1wb3BvdmVyIjsKKworICAgICAgICB0
aGlzLl9hZGRJdGVyYXRpb25IZWFkaW5nVG9Qb3BvdmVyKGl0ZXJhdGlvbiwgY29udGVudCwgImph
dmFzY3JpcHRjb3JlIHRlc3QgZmFpbHVyZXMiKTsKKyAgICAgICAgdGhpcy5fYWRkRGl2aWRlclRv
UG9wb3Zlcihjb250ZW50KTsKIAotICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5zdHls
ZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Ci0gICAgICAgICAgICBldmVudC5jbGlwYm9hcmREYXRh
LnNldERhdGEoJ3RleHQnLCB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkpOwotICAgICAgICAgICAgZXZl
bnQuY3VycmVudFRhcmdldC5zdHlsZS52aXNpYmlsaXR5ID0gIiI7Ci0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGlmICghaXRlcmF0aW9uLmphdmFTY3JpcHRDb3JlVGVzdFJlc3Vs
dHMucmVncmVzc2lvbnMpIHsKKyAgICAgICAgICAgIHZhciBtZXNzYWdlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICBtZXNzYWdlLmNsYXNzTmFtZSA9ICJsb2Fk
aW5nLWZhaWx1cmUiOworICAgICAgICAgICAgbWVzc2FnZS50ZXh0Q29udGVudCA9ICJUZXN0IHJl
c3VsdHMgY291bGRuXHUyMDE5dCBiZSBsb2FkZWQiOworICAgICAgICAgICAgY29udGVudC5hcHBl
bmRDaGlsZChtZXNzYWdlKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZW50OwogICAgICAgICB9
CiAKKyAgICAgICAgdmFyIHJlZ3Jlc3Npb25zID0gaXRlcmF0aW9uLmxheW91dFRlc3RSZXN1bHRz
LnJlZ3Jlc3Npb25zOworCisgICAgICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSByZWdyZXNzaW9u
cy5sZW5ndGg7IGkgIT0gZW5kOyArK2kpIHsKKyAgICAgICAgICAgIHZhciB0ZXN0ID0gcmVncmVz
c2lvbnNbaV07CisKKyAgICAgICAgICAgIHZhciByb3dFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CisKKyAgICAgICAgICAgIHZhciB0ZXN0UGF0aEVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICB0ZXN0UGF0aEVsZW1lbnQu
Y2xhc3NOYW1lID0gInRlc3QtcGF0aCI7CisgICAgICAgICAgICB0ZXN0UGF0aEVsZW1lbnQudGV4
dENvbnRlbnQgPSB0ZXN0OworICAgICAgICAgICAgcm93RWxlbWVudC5hcHBlbmRDaGlsZCh0ZXN0
UGF0aEVsZW1lbnQpOworCisgICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHJvd0VsZW1l
bnQpOworICAgICAgICB9CisKKyAgICAgICAgY29udGVudC5vbmNvcHkgPSB0aGlzLl9vblBvcG92
ZXJDb3B5OworICAgICAgICByZXR1cm4gY29udGVudDsKKyAgICB9LAorCisgICAgX2NyZWF0ZUxv
YWRpbmdJbmRpY2F0b3I6IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgaGVhZGluZykgeworICAgICAgICB2
YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBjb250
ZW50LmNsYXNzTmFtZSA9ICJ0ZXN0LXJlc3VsdHMtcG9wb3ZlciI7CisKKyAgICAgICAgdGhpcy5f
YWRkSXRlcmF0aW9uSGVhZGluZ1RvUG9wb3ZlcihpdGVyYXRpb24sIGNvbnRlbnQsICJqYXZhc2Ny
aXB0Y29yZSB0ZXN0IGZhaWx1cmVzIik7CisgICAgICAgIHRoaXMuX2FkZERpdmlkZXJUb1BvcG92
ZXIoY29udGVudCk7CisKKyAgICAgICAgdmFyIGxvYWRpbmdJbmRpY2F0b3IgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgbG9hZGluZ0luZGljYXRvci5jbGFzc05hbWUg
PSAibG9hZGluZy1pbmRpY2F0b3IiOworICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLnRleHRDb250
ZW50ID0gIkxvYWRpbmdcdTIwMjYiOworICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGxvYWRp
bmdJbmRpY2F0b3IpOworCiAgICAgICAgIHJldHVybiBjb250ZW50OwogICAgIH0sCiAKQEAgLTI2
MiwxNiArMzE5LDcgQEAgQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICBpZiAoaXRlcmF0aW9uLmxheW91dFRlc3RSZXN1bHRzLnJlZ3Jlc3Npb25zKQogICAgICAg
ICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLl9wb3BvdmVyQ29udGVudEZvckxheW91dFRlc3RSZWdy
ZXNzaW9ucyhpdGVyYXRpb24pOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHZhciBjb250
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICBjb250ZW50
LmNsYXNzTmFtZSA9ICJ0ZXN0LXJlc3VsdHMtcG9wb3ZlciI7Ci0KLSAgICAgICAgICAgIHRoaXMu
X2FkZEl0ZXJhdGlvbkhlYWRpbmdUb1BvcG92ZXIoaXRlcmF0aW9uLCBjb250ZW50LCAibGF5b3V0
IHRlc3QgZmFpbHVyZXMiKTsKLSAgICAgICAgICAgIHRoaXMuX2FkZERpdmlkZXJUb1BvcG92ZXIo
Y29udGVudCk7Ci0KLSAgICAgICAgICAgIHZhciBsb2FkaW5nSW5kaWNhdG9yID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLmNsYXNz
TmFtZSA9ICJsb2FkaW5nLWluZGljYXRvciI7Ci0gICAgICAgICAgICBsb2FkaW5nSW5kaWNhdG9y
LnRleHRDb250ZW50ID0gIkxvYWRpbmdcdTIwMjYiOwotICAgICAgICAgICAgY29udGVudC5hcHBl
bmRDaGlsZChsb2FkaW5nSW5kaWNhdG9yKTsKKyAgICAgICAgICAgIHZhciBjb250ZW50ID0gdGhp
cy5fY3JlYXRlTG9hZGluZ0luZGljYXRvcihpdGVyYXRpb24sICJsYXlvdXQgdGVzdCBmYWlsdXJl
cyIpOwogCiAgICAgICAgICAgICBpdGVyYXRpb24ubG9hZExheW91dFRlc3RSZXN1bHRzKGZ1bmN0
aW9uKCkgewogICAgICAgICAgICAgICAgIHBvcG92ZXIuY29udGVudCA9IHRoaXMuX3BvcG92ZXJD
b250ZW50Rm9yTGF5b3V0VGVzdFJlZ3Jlc3Npb25zKGl0ZXJhdGlvbik7CkBAIC0yODMsNiArMzMx
LDI0IEBAIEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfSwKIAorICAgIF9wcmVzZW50UG9wb3ZlckZvckphdmFTY3JpcHRDb3Jl
VGVzdFJlZ3Jlc3Npb25zOiBmdW5jdGlvbihlbGVtZW50LCBwb3BvdmVyLCBpdGVyYXRpb24pCisg
ICAgeworICAgICAgICBpZiAoaXRlcmF0aW9uLmphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMpCisg
ICAgICAgICAgICB2YXIgY29udGVudCA9IHRoaXMuX3BvcG92ZXJDb250ZW50Rm9ySmF2YVNjcmlw
dENvcmVUZXN0UmVncmVzc2lvbnMoaXRlcmF0aW9uKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICB2YXIgY29udGVudCA9IHRoaXMuX2NyZWF0ZUxvYWRpbmdJbmRpY2F0b3IoaXRlcmF0aW9u
LCAiamF2YXNjcmlwdGNvcmUgdGVzdCBmYWlsdXJlcyIpOworCisgICAgICAgICAgICBpdGVyYXRp
b24ubG9hZEphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgcG9wb3Zlci5jb250ZW50ID0gdGhpcy5fcG9wb3ZlckNvbnRlbnRGb3JKYXZhU2NyaXB0
Q29yZVRlc3RSZWdyZXNzaW9ucyhpdGVyYXRpb24pOworICAgICAgICAgICAgfS5iaW5kKHRoaXMp
KTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciByZWN0ID0gRGFzaGJvYXJkLlJlY3QucmVjdEZy
b21DbGllbnRSZWN0KGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOworICAgICAgICBw
b3BvdmVyLmNvbnRlbnQgPSBjb250ZW50OworICAgICAgICBwb3BvdmVyLnByZXNlbnQocmVjdCwg
W0Rhc2hib2FyZC5SZWN0RWRnZS5NSU5fWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9ZLCBEYXNo
Ym9hcmQuUmVjdEVkZ2UuTUFYX1gsIERhc2hib2FyZC5SZWN0RWRnZS5NSU5fWF0pOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCiAgICAgX3ByZXNlbnRQb3BvdmVyRm9yR2VuZXJpY1Rl
c3RGYWlsdXJlczogZnVuY3Rpb24oZWxlbWVudCwgcG9wb3ZlciwgaXRlcmF0aW9uKQogICAgIHsK
ICAgICAgICAgZnVuY3Rpb24gYWRkUmVzdWx0S2luZChtZXNzYWdlLCB1cmwpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278190</attachid>
            <date>2016-05-05 14:32:52 -0700</date>
            <delta_ts>2016-05-11 09:01:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156595-20160505143333.patch</filename>
            <type>text/plain</type>
            <size>16685</size>
            <attacher name="Srinivasan Vijayaraghavan">webkit</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwMDQyNykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM0IEBACisyMDE2LTA1LTA1ICBTcmluaXZhc2FuIFZpamF5YXJhZ2hhdmFuICA8c3ZpamF5
YXJhZ2hhdmFuQGFwcGxlLmNvbT4KKworICAgICAgICBEaXNwbGF5IGZhaWxpbmcgSlNDIHN0cmVz
cyB0ZXN0cyBpbiBidWlsZGJvdCBkYXNoYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjU5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3QuanM6CisgICAg
ICAgIChCdWlsZGJvdC5wcm90b3R5cGUuamF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXNVUkxGb3JJ
dGVyYXRpb24pOiBHZW5lcmF0ZSB0aGUgVVJMIGZvcgorICAgICAgICByYXcgSlNPTiBvdXRwdXQg
b2YgSlNDIHRlc3RzLgorICAgICAgICAoQnVpbGRib3QucHJvdG90eXBlLmphdmFTY3JpcHRDb3Jl
VGVzdFN0ZGlvVVJMRm9ySXRlcmF0aW9uKTogR2VuZXJhdGUgdGhlIFVSTCBmb3IgdGV4dCBvdXRw
dXQgb2YgSlNDIHRlc3RzLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0
aW9uLmpzOgorICAgICAgICAoQnVpbGRib3RJdGVyYXRpb24pOiBBZGQgamF2YVNjcmlwdENvcmVU
ZXN0UmVzdWx0cyB2YXJpYWJsZS4KKyAgICAgICAgKEJ1aWxkYm90SXRlcmF0aW9uLnByb3RvdHlw
ZS4pOiBDaGVjayBmb3IgamF2YXNjcmlwdGNvcmUgdGVzdHMgc3RlcC4KKyAgICAgICAgKEJ1aWxk
Ym90SXRlcmF0aW9uLnByb3RvdHlwZS5sb2FkTGF5b3V0VGVzdFJlc3VsdHMpOiBBZGQgY29tbWEg
YXQgY2xvc2luZyBicmFjZS4KKyAgICAgICAgKEJ1aWxkYm90SXRlcmF0aW9uLnByb3RvdHlwZS5s
b2FkSmF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cyk6IEZldGNoIEpTT04gZnJvbSBCdWlsZGJvdCBt
YXN0ZXIKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RSZXN1bHRzLmpzOgor
ICAgICAgICAoQnVpbGRib3RUZXN0UmVzdWx0cy5wcm90b3R5cGUuYWRkSmF2YVNjcmlwdENvcmVU
ZXN0RmFpbHVyZXMpOiBQYXJzZSBKU09OIGludG8gYSBsaXN0IG9mIGZhaWxpbmcgdGVzdHMuCisg
ICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanM6CisgICAg
ICAgIChCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUuYXBwZW5kQnVpbGRlclF1ZXVl
U3RhdHVzKTogSW5zdGFudGlhdGUgUG9wb3ZlclRyYWNrZXJzIGZvciBidWlsZHMgd2hvc2UKKyAg
ICAgICAgb25seSBmYWlsdXJlcyBhcmUgSlNDIHRlc3RzLgorICAgICAgICAoQnVpbGRib3RUZXN0
ZXJRdWV1ZVZpZXcucHJvdG90eXBlLl9vblBvcG92ZXJDb3B5KTogUmV1c2FibGUgZnVuY3Rpb24g
dG8gZW5hYmxlIGNvcHlpbmcgdGV4dCBmcm9tIHBvcG92ZXIgYnViYmxlcy4KKyAgICAgICAgKEJ1
aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZS5fcG9wb3ZlckNvbnRlbnRGb3JMYXlvdXRU
ZXN0UmVncmVzc2lvbnMpOiBVc2UgX29uUG9wb3ZlckNvcHkuCisgICAgICAgIChCdWlsZGJvdFRl
c3RlclF1ZXVlVmlldy5wcm90b3R5cGUuX3BvcG92ZXJDb250ZW50Rm9ySmF2YVNjcmlwdENvcmVU
ZXN0UmVncmVzc2lvbnMpOiBHZW5lcmF0ZXMgdGhlIAorICAgICAgICBwb3BvdmVyIGJ1YmJsZSdz
IGlubmVyIEhUTUwgZnJvbSB0aGUgbGlzdCBvZiBKU0MgZmFpbHVyZXMuCisgICAgICAgIChCdWls
ZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUuX3ByZXNlbnRQb3BvdmVyRm9yTGF5b3V0VGVz
dFJlZ3Jlc3Npb25zKTogVXNlIF9jcmVhdGVMb2FkaW5nSW5kaWNhdG9yLgorICAgICAgICAoQnVp
bGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlLl9jcmVhdGVMb2FkaW5nSW5kaWNhdG9yKTog
UmV1c2FibGUgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbG9hZGluZyBpbmRpY2F0b3IKKyAgICAgICAg
d2l0aCBhIHNwZWNpZmllZCBoZWFkaW5nIGZvciBhbiBpdGVyYXRpb24uCisgICAgICAgIChCdWls
ZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUuX3ByZXNlbnRQb3BvdmVyRm9ySmF2YVNjcmlw
dENvcmVUZXN0UmVncmVzc2lvbnMpOiBHZW5lcmF0ZSB0aGUgCisgICAgICAgIHBvcG92ZXIgYnVi
YmxlIGFuZCBoYW5kbGUgcmVxdWVzdCBmYWlsdXJlcy4KKwogMjAxNi0wNS0wNCAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRVM2IEZ1bmN0aW9uLm5hbWUgaW5mZXJy
ZWQgZnJvbSBwcm9wZXJ0eSBuYW1lcyBvZiBsaXRlcmFsIG9iamVjdHMgY2FuIGJyZWFrIHNvbWUg
d2Vic2l0ZXMuCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdC5qcwkocmV2aXNpb24gMjAwNDI3
KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3QuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNTEsNiArMTUxLDE3IEBAIEJ1aWxkYm90LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJu
IHRoaXMuYmFzZVVSTCArICJidWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KGl0ZXJhdGlv
bi5xdWV1ZS5pZCkgKyAiL2J1aWxkcy8iICsgaXRlcmF0aW9uLmlkOwogICAgIH0sCiAKKyAgICBq
YXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlc1VSTEZvckl0ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0
aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArICJidWlsZGVycy8iICsg
ZW5jb2RlVVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1ZS5pZCkgKyAiL2J1aWxkcy8iICsgaXRl
cmF0aW9uLmlkICsgIi9zdGVwcy9qc2NvcmUtdGVzdC9sb2dzL2pzb24vdGV4dCI7CisgICAgfSwK
KworICAgIGphdmFTY3JpcHRDb3JlVGVzdFN0ZGlvVVJMRm9ySXRlcmF0aW9uOiBmdW5jdGlvbihp
dGVyYXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5iYXNlVVJMICsgImJ1aWxkZXJz
LyIgKyBlbmNvZGVVUklDb21wb25lbnQoaXRlcmF0aW9uLnF1ZXVlLmlkKSArICIvYnVpbGRzLyIg
KyBpdGVyYXRpb24uaWQgKyAiL3N0ZXBzL2pzY29yZS10ZXN0L2xvZ3Mvc3RkaW8iOworCisgICAg
fSwKKwogICAgIGxheW91dFRlc3RSZXN1bHRzRGlyZWN0b3J5VVJMRm9ySXRlcmF0aW9uOiBmdW5j
dGlvbihpdGVyYXRpb24pCiAgICAgewogICAgICAgICB2YXIgdW5kZXJzY29yZVNlcGFyYXRlZFJl
dmlzaW9ucyA9ICJyIjsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0
aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0
aW9uLmpzCShyZXZpc2lvbiAyMDA0MjcpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJv
dEl0ZXJhdGlvbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsNiArNDYsNyBAQCBC
dWlsZGJvdEl0ZXJhdGlvbiA9IGZ1bmN0aW9uKHF1ZXVlLCBkYXRhCiAgICAgdGhpcy5yZXZpc2lv
biA9IHt9OwogCiAgICAgdGhpcy5sYXlvdXRUZXN0UmVzdWx0cyA9IG51bGw7IC8vIExheW91dCB0
ZXN0IHJlc3VsdHMgY2FuIGJlIG5lZWRlZCBldmVuIGlmIGFsbCB0ZXN0cyBwYXNzZWQsIGUuZy4g
Zm9yIHRoZSBsZWFrcyBib3QuCisgICAgdGhpcy5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzID0g
bnVsbDsKIAogICAgIHRoaXMuZmFpbGVkVGVzdFN0ZXBzID0gW107CiAKQEAgLTI1MCw2ICsyNTEs
OCBAQCBCdWlsZGJvdEl0ZXJhdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgcmVz
dWx0cyA9IG5ldyBCdWlsZGJvdFRlc3RSZXN1bHRzKHN0ZXApOwogICAgICAgICAgICAgaWYgKHN0
ZXAubmFtZSA9PT0gImxheW91dC10ZXN0IikKICAgICAgICAgICAgICAgICB0aGlzLmxheW91dFRl
c3RSZXN1bHRzID0gcmVzdWx0czsKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0ZXAubmFtZSA9PT0g
ImpzY29yZS10ZXN0IikKKyAgICAgICAgICAgICAgICB0aGlzLmphdmFTY3JpcHRDb3JlVGVzdFJl
c3VsdHMgPSByZXN1bHRzOwogICAgICAgICAgICAgaWYgKHJlc3VsdHMuYWxsUGFzc2VkKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIHRoaXMuZmFpbGVkVGVzdFN0ZXBzLnB1
c2gocmVzdWx0cyk7CkBAIC0zNTMsNSArMzU2LDI1IEBAIEJ1aWxkYm90SXRlcmF0aW9uLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEuZXJyb3IpOwogICAgICAgICAg
ICAgY2FsbGJhY2soKTsKICAgICAgICAgfS5iaW5kKHRoaXMpLCB7anNvbnBDYWxsYmFja05hbWU6
ICJBRERfUkVTVUxUUyIsIHdpdGhDcmVkZW50aWFsczogdGhpcy5xdWV1ZS5idWlsZGJvdC5uZWVk
c0F1dGhlbnRpY2F0aW9ufSk7Ci0gICAgfQorICAgIH0sCisKKyAgICBsb2FkSmF2YVNjcmlwdENv
cmVUZXN0UmVzdWx0czogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAodGhp
cy5xdWV1ZS5idWlsZGJvdC5uZWVkc0F1dGhlbnRpY2F0aW9uICYmIHRoaXMucXVldWUuYnVpbGRi
b3QuYXV0aGVudGljYXRpb25TdGF0dXMgPT09IEJ1aWxkYm90LkF1dGhlbnRpY2F0aW9uU3RhdHVz
LkludmFsaWRDcmVkZW50aWFscykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBKU09O
LmxvYWQodGhpcy5xdWV1ZS5idWlsZGJvdC5qYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlc1VSTEZv
ckl0ZXJhdGlvbih0aGlzKSwgZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAgICAgdGhpcy5xdWV1
ZS5idWlsZGJvdC5pc0F1dGhlbnRpY2F0ZWQgPSB0cnVlOworICAgICAgICAgICAgdGhpcy5qYXZh
U2NyaXB0Q29yZVRlc3RSZXN1bHRzLmFkZEphdmFTY3JpcHRDb3JlVGVzdEZhaWx1cmVzKGRhdGEp
OworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfS5iaW5kKHRoaXMpLAorICAgICAg
ICBmdW5jdGlvbihkYXRhKSB7CisgICAgICAgICAgICBpZiAoZGF0YS5lcnJvclR5cGUgPT09IEpT
T04uTG9hZEVycm9yICYmIGRhdGEuZXJyb3JIVFRQQ29kZSA9PT0gNDAxKSB7CisgICAgICAgICAg
ICAgICAgdGhpcy5xdWV1ZS5idWlsZGJvdC5pc0F1dGhlbnRpY2F0ZWQgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhCdWlsZGJvdEl0ZXJhdGlv
bi5FdmVudC5VbmF1dGhvcml6ZWRBY2Nlc3MpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
Y29uc29sZS5sb2coZGF0YS5lcnJvcik7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAg
ICB9LmJpbmQodGhpcyksIHt3aXRoQ3JlZGVudGlhbHM6IHRoaXMucXVldWUuYnVpbGRib3QubmVl
ZHNBdXRoZW50aWNhdGlvbn0pOworICAgIH0sCiB9OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Njcmlw
dHMvQnVpbGRib3RUZXN0UmVzdWx0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2Ny
aXB0cy9CdWlsZGJvdFRlc3RSZXN1bHRzLmpzCShyZXZpc2lvbiAyMDA0MjcpCisrKyBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RSZXN1bHRzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xODQs
NCArMTg0LDEwIEBAIEJ1aWxkYm90VGVzdFJlc3VsdHMucHJvdG90eXBlID0gewogICAgICAgICAv
LyBiZWNhdXNlIGJ1aWxkYm90IGNvdW50cyByZWdyZXNzaW9ucyB0aGF0IGhhZCBtaXNzaW5nIHBp
eGVsIHJlc3VsdHMgb24gcmV0cnkgKGUuZy4gIlRFWFQgTUlTU0lORyIpLgogICAgICAgICBjb25z
b2xlLmFzc2VydChkYXRhLm51bV9taXNzaW5nID49IHRoaXMudGVzdHNXaXRoTWlzc2luZ1Jlc3Vs
dHMubGVuZ3RoKTsKICAgICB9LAorCisgICAgYWRkSmF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXM6
IGZ1bmN0aW9uKGRhdGEpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLm5hbWUg
PT09ICJqc2NvcmUtdGVzdCIpOworICAgICAgICB0aGlzLnJlZ3Jlc3Npb25zID0gZGF0YS5mYWls
dXJlczsKKyAgICB9LAogfTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVz
dGVyUXVldWVWaWV3LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxk
Ym90VGVzdGVyUXVldWVWaWV3LmpzCShyZXZpc2lvbiAyMDA0MjcpCisrKyBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
U2NyaXB0cy9CdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0LCAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTAyLDkgKzEwMiwxMyBAQCBCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0
ZXJhdGlvbi5mYWlsZWRUZXN0U3RlcHMubGVuZ3RoID09PSAxKSB7CiAgICAgICAgICAgICAgICAg
ICAgIHZhciBmYWlsZWRTdGVwID0gaXRlcmF0aW9uLmZhaWxlZFRlc3RTdGVwc1swXTsKKwogICAg
ICAgICAgICAgICAgICAgICBpZiAoZmFpbGVkU3RlcC5uYW1lID09PSAibGF5b3V0LXRlc3QiKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3
KG1lc3NhZ2VFbGVtZW50LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuQmFkLCB0aGlzLl90ZXN0U3Rl
cEZhaWx1cmVEZXNjcmlwdGlvbihmYWlsZWRTdGVwKSwgZmFpbGVkU3RlcC50b29NYW55RmFpbHVy
ZXMgPyBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCArICJcdWZmMGIiIDogZmFpbGVkU3RlcC5mYWls
dXJlQ291bnQsIGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5sYXlvdXRUZXN0UmVzdWx0c1VSTEZv
ckl0ZXJhdGlvbihpdGVyYXRpb24pKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3Bv
dmVyVHJhY2tlcihzdGF0dXMuc3RhdHVzQnViYmxlRWxlbWVudCwgdGhpcy5fcHJlc2VudFBvcG92
ZXJGb3JMYXlvdXRUZXN0UmVncmVzc2lvbnMuYmluZCh0aGlzKSwgaXRlcmF0aW9uKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmYWlsZWRTdGVwLm5hbWUgPT09ICJqc2NvcmUtdGVz
dCIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGlu
ZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5CYWQsIHRoaXMuX3Rl
c3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0ZXApLCBmYWlsZWRTdGVwLmZhaWx1cmVD
b3VudCwgaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LmphdmFTY3JpcHRDb3JlVGVzdFN0ZGlvVVJM
Rm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikpOworICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFBv
cG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNCdWJibGVFbGVtZW50LCB0aGlzLl9wcmVzZW50UG9w
b3ZlckZvckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jlc3Npb25zLmJpbmQodGhpcyksIGl0ZXJhdGlv
bik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2VFbGVtZW50LCBTdGF0dXNM
aW5lVmlldy5TdGF0dXMuQmFkLCB0aGlzLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbihmYWls
ZWRTdGVwKSwgZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQgPyBmYWlsZWRTdGVwLmZhaWx1cmVDb3Vu
dCA6IHVuZGVmaW5lZCwgZmFpbGVkU3RlcC5VUkwpOwogICAgICAgICAgICAgICAgICAgICAgICAg
bmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNCdWJibGVFbGVtZW50LCB0aGlzLl9wcmVz
ZW50UG9wb3ZlckZvckdlbmVyaWNUZXN0RmFpbHVyZXMuYmluZCh0aGlzKSwgaXRlcmF0aW9uKTsK
QEAgLTE1MSw2ICsxNTUsMzEgQEAgQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICByZXR1cm4gZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQgKyAiXHUwMGEwIiArIHRo
aXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0ZXApOwogICAgIH0sCiAKKyAg
ICAvLyBXb3JrIGFyb3VuZCBidWcgODAxNTk6IC13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZSBub3Qg
cmVzcGVjdGVkIHdoZW4gY29weWluZyBjb250ZW50LgorICAgIC8vIFdlIHNldCBjbGlwYm9hcmQg
ZGF0YSBtYW51YWxseSwgdGVtcG9yYXJpbHkgbWFraW5nIG5vbi1zZWxlY3RhYmxlIGNvbnRlbnQg
aGlkZGVuCisgICAgLy8gdG8gZWFzaWx5IGdldCBhY2N1cmF0ZSBzZWxlY3Rpb24gdGV4dC4KKyAg
ICBfb25Qb3BvdmVyQ29weTogZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgdmFyIGl0ZXJhdG9y
ID0gZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKAorICAgICAgICAgICAgZXZlbnQuY3VycmVu
dFRhcmdldCwKKyAgICAgICAgICAgIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULAorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGFjY2VwdE5vZGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLndl
YmtpdFVzZXJTZWxlY3QgIT09ICJub25lIikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBO
b2RlRmlsdGVyLkZJTFRFUl9TS0lQOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgKTsKKworICAgICAgICB3aGlsZSAoKG5vZGUgPSBpdGVyYXRvci5uZXh0Tm9kZSgp
KSkKKyAgICAgICAgICAgIG5vZGUuc3R5bGUudmlzaWJpbGl0eSA9ICJ2aXNpYmxlIjsKKworICAg
ICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAg
ICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCd0ZXh0Jywgd2luZG93LmdldFNlbGVj
dGlvbigpKTsKKyAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5zdHlsZS52aXNpYmlsaXR5ID0g
IiI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LAorCiAgICAgX3BvcG92ZXJDb250ZW50
Rm9yTGF5b3V0VGVzdFJlZ3Jlc3Npb25zOiBmdW5jdGlvbihpdGVyYXRpb24pCiAgICAgewogICAg
ICAgICB2YXIgaGFzVGVzdEhpc3RvcnkgPSB0eXBlb2YgdGVzdEhpc3RvcnkgIT09ICJ1bmRlZmlu
ZWQiOwpAQCAtMjI5LDMxICsyNTgsNTQgQEAgQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90
eXBlID0gewogICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChyb3dFbGVtZW50KTsKICAg
ICAgICAgfQogCi0gICAgICAgIC8vIFdvcmsgYXJvdW5kIGJ1ZyA4MDE1OTogLXdlYmtpdC11c2Vy
LXNlbGVjdDpub25lIG5vdCByZXNwZWN0ZWQgd2hlbiBjb3B5aW5nIGNvbnRlbnQuCi0gICAgICAg
IC8vIFdlIHNldCBjbGlwYm9hcmQgZGF0YSBtYW51YWxseSwgdGVtcG9yYXJpbHkgbWFraW5nIG5v
bi1zZWxlY3RhYmxlIGNvbnRlbnQgaGlkZGVuCi0gICAgICAgIC8vIHRvIGVhc2lseSBnZXQgYWNj
dXJhdGUgc2VsZWN0aW9uIHRleHQuCi0gICAgICAgIGNvbnRlbnQub25jb3B5ID0gZnVuY3Rpb24o
ZXZlbnQpIHsKLSAgICAgICAgICAgIHZhciBpdGVyYXRvciA9IGRvY3VtZW50LmNyZWF0ZU5vZGVJ
dGVyYXRvcigKLSAgICAgICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LAotICAgICAgICAg
ICAgICAgIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULAotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgYWNjZXB0Tm9kZTogZnVuY3Rpb24oZWxlbWVudCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLndlYmtp
dFVzZXJTZWxlY3QgIT09ICJub25lIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICApOworICAgICAgICBjb250ZW50Lm9uY29weSA9IHRo
aXMuX29uUG9wb3ZlckNvcHk7CisgICAgICAgIHJldHVybiBjb250ZW50OworICAgIH0sCisKKyAg
ICBfcG9wb3ZlckNvbnRlbnRGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9uczogZnVuY3Rp
b24oaXRlcmF0aW9uKQorICAgIHsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgY29udGVudC5jbGFzc05hbWUgPSAidGVzdC1yZXN1
bHRzLXBvcG92ZXIiOwogCi0gICAgICAgICAgICB3aGlsZSAoKG5vZGUgPSBpdGVyYXRvci5uZXh0
Tm9kZSgpKSkKLSAgICAgICAgICAgICAgICBub2RlLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJs
ZSI7CisgICAgICAgIHRoaXMuX2FkZEl0ZXJhdGlvbkhlYWRpbmdUb1BvcG92ZXIoaXRlcmF0aW9u
LCBjb250ZW50LCAiamF2YXNjcmlwdGNvcmUgdGVzdCBmYWlsdXJlcyIpOworICAgICAgICB0aGlz
Ll9hZGREaXZpZGVyVG9Qb3BvdmVyKGNvbnRlbnQpOwogCi0gICAgICAgICAgICBldmVudC5jdXJy
ZW50VGFyZ2V0LnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKLSAgICAgICAgICAgIGV2ZW50
LmNsaXBib2FyZERhdGEuc2V0RGF0YSgndGV4dCcsIHdpbmRvdy5nZXRTZWxlY3Rpb24oKSk7Ci0g
ICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnN0eWxlLnZpc2liaWxpdHkgPSAiIjsKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFpdGVyYXRpb24uamF2YVNjcmlw
dENvcmVUZXN0UmVzdWx0cy5yZWdyZXNzaW9ucykgeworICAgICAgICAgICAgdmFyIG1lc3NhZ2Ug
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgIG1lc3NhZ2UuY2xh
c3NOYW1lID0gImxvYWRpbmctZmFpbHVyZSI7CisgICAgICAgICAgICBtZXNzYWdlLnRleHRDb250
ZW50ID0gIlRlc3QgcmVzdWx0cyBjb3VsZG5cdTIwMTl0IGJlIGxvYWRlZCI7CisgICAgICAgICAg
ICBjb250ZW50LmFwcGVuZENoaWxkKG1lc3NhZ2UpOworICAgICAgICAgICAgcmV0dXJuIGNvbnRl
bnQ7CisgICAgICAgIH0KKworICAgICAgICB2YXIgcmVncmVzc2lvbnMgPSBpdGVyYXRpb24uamF2
YVNjcmlwdENvcmVUZXN0UmVzdWx0cy5yZWdyZXNzaW9uczsKKworICAgICAgICBmb3IgKHZhciBp
ID0gMCwgZW5kID0gcmVncmVzc2lvbnMubGVuZ3RoOyBpICE9IGVuZDsgKytpKSB7CisgICAgICAg
ICAgICB2YXIgdGVzdCA9IHJlZ3Jlc3Npb25zW2ldOworICAgICAgICAgICAgdmFyIHJvd0VsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgIHZhciB0ZXN0
UGF0aEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAg
ICB0ZXN0UGF0aEVsZW1lbnQuY2xhc3NOYW1lID0gInRlc3QtcGF0aCI7CisgICAgICAgICAgICB0
ZXN0UGF0aEVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXN0OworICAgICAgICAgICAgcm93RWxlbWVu
dC5hcHBlbmRDaGlsZCh0ZXN0UGF0aEVsZW1lbnQpOworICAgICAgICAgICAgY29udGVudC5hcHBl
bmRDaGlsZChyb3dFbGVtZW50KTsKICAgICAgICAgfQogCisgICAgICAgIGNvbnRlbnQub25jb3B5
ID0gdGhpcy5fb25Qb3BvdmVyQ29weTsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnQ7CisgICAgfSwK
KworICAgIF9jcmVhdGVMb2FkaW5nSW5kaWNhdG9yOiBmdW5jdGlvbihpdGVyYXRpb24sIGhlYWRp
bmcpIHsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKyAgICAgICAgY29udGVudC5jbGFzc05hbWUgPSAidGVzdC1yZXN1bHRzLXBvcG92ZXIiOwor
CisgICAgICAgIHRoaXMuX2FkZEl0ZXJhdGlvbkhlYWRpbmdUb1BvcG92ZXIoaXRlcmF0aW9uLCBj
b250ZW50LCBoZWFkaW5nKTsKKyAgICAgICAgdGhpcy5fYWRkRGl2aWRlclRvUG9wb3Zlcihjb250
ZW50KTsKKworICAgICAgICB2YXIgbG9hZGluZ0luZGljYXRvciA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLmNsYXNzTmFtZSA9ICJsb2Fk
aW5nLWluZGljYXRvciI7CisgICAgICAgIGxvYWRpbmdJbmRpY2F0b3IudGV4dENvbnRlbnQgPSAi
TG9hZGluZ1x1MjAyNiI7CisgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQobG9hZGluZ0luZGlj
YXRvcik7CisKICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7CiAgICAgfSwKIApAQCAtMjYyLDE2ICsz
MTQsNyBAQCBCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlm
IChpdGVyYXRpb24ubGF5b3V0VGVzdFJlc3VsdHMucmVncmVzc2lvbnMpCiAgICAgICAgICAgICB2
YXIgY29udGVudCA9IHRoaXMuX3BvcG92ZXJDb250ZW50Rm9yTGF5b3V0VGVzdFJlZ3Jlc3Npb25z
KGl0ZXJhdGlvbik7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAgIGNvbnRlbnQuY2xhc3NO
YW1lID0gInRlc3QtcmVzdWx0cy1wb3BvdmVyIjsKLQotICAgICAgICAgICAgdGhpcy5fYWRkSXRl
cmF0aW9uSGVhZGluZ1RvUG9wb3ZlcihpdGVyYXRpb24sIGNvbnRlbnQsICJsYXlvdXQgdGVzdCBm
YWlsdXJlcyIpOwotICAgICAgICAgICAgdGhpcy5fYWRkRGl2aWRlclRvUG9wb3Zlcihjb250ZW50
KTsKLQotICAgICAgICAgICAgdmFyIGxvYWRpbmdJbmRpY2F0b3IgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAgIGxvYWRpbmdJbmRpY2F0b3IuY2xhc3NOYW1lID0g
ImxvYWRpbmctaW5kaWNhdG9yIjsKLSAgICAgICAgICAgIGxvYWRpbmdJbmRpY2F0b3IudGV4dENv
bnRlbnQgPSAiTG9hZGluZ1x1MjAyNiI7Ci0gICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxk
KGxvYWRpbmdJbmRpY2F0b3IpOworICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLl9jcmVh
dGVMb2FkaW5nSW5kaWNhdG9yKGl0ZXJhdGlvbiwgImxheW91dCB0ZXN0IGZhaWx1cmVzIik7CiAK
ICAgICAgICAgICAgIGl0ZXJhdGlvbi5sb2FkTGF5b3V0VGVzdFJlc3VsdHMoZnVuY3Rpb24oKSB7
CiAgICAgICAgICAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gdGhpcy5fcG9wb3ZlckNvbnRlbnRG
b3JMYXlvdXRUZXN0UmVncmVzc2lvbnMoaXRlcmF0aW9uKTsKQEAgLTI4Myw2ICszMjYsMjQgQEAg
QnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9LAogCisgICAgX3ByZXNlbnRQb3BvdmVyRm9ySmF2YVNjcmlwdENvcmVUZXN0UmVn
cmVzc2lvbnM6IGZ1bmN0aW9uKGVsZW1lbnQsIHBvcG92ZXIsIGl0ZXJhdGlvbikKKyAgICB7Cisg
ICAgICAgIGlmIChpdGVyYXRpb24uamF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cykKKyAgICAgICAg
ICAgIHZhciBjb250ZW50ID0gdGhpcy5fcG9wb3ZlckNvbnRlbnRGb3JKYXZhU2NyaXB0Q29yZVRl
c3RSZWdyZXNzaW9ucyhpdGVyYXRpb24pOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZh
ciBjb250ZW50ID0gdGhpcy5fY3JlYXRlTG9hZGluZ0luZGljYXRvcihpdGVyYXRpb24sICJqYXZh
c2NyaXB0Y29yZSB0ZXN0IGZhaWx1cmVzIik7CisKKyAgICAgICAgICAgIGl0ZXJhdGlvbi5sb2Fk
SmF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBw
b3BvdmVyLmNvbnRlbnQgPSB0aGlzLl9wb3BvdmVyQ29udGVudEZvckphdmFTY3JpcHRDb3JlVGVz
dFJlZ3Jlc3Npb25zKGl0ZXJhdGlvbik7CisgICAgICAgICAgICB9LmJpbmQodGhpcykpOworICAg
ICAgICB9CisKKyAgICAgICAgdmFyIHJlY3QgPSBEYXNoYm9hcmQuUmVjdC5yZWN0RnJvbUNsaWVu
dFJlY3QoZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7CisgICAgICAgIHBvcG92ZXIu
Y29udGVudCA9IGNvbnRlbnQ7CisgICAgICAgIHBvcG92ZXIucHJlc2VudChyZWN0LCBbRGFzaGJv
YXJkLlJlY3RFZGdlLk1JTl9ZLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUFYX1ksIERhc2hib2FyZC5S
ZWN0RWRnZS5NQVhfWCwgRGFzaGJvYXJkLlJlY3RFZGdlLk1JTl9YXSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0sCisKICAgICBfcHJlc2VudFBvcG92ZXJGb3JHZW5lcmljVGVzdEZhaWx1
cmVzOiBmdW5jdGlvbihlbGVtZW50LCBwb3BvdmVyLCBpdGVyYXRpb24pCiAgICAgewogICAgICAg
ICBmdW5jdGlvbiBhZGRSZXN1bHRLaW5kKG1lc3NhZ2UsIHVybCkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278628</attachid>
            <date>2016-05-11 09:02:05 -0700</date>
            <delta_ts>2016-05-19 10:43:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156595-20160511090252.patch</filename>
            <type>text/plain</type>
            <size>30509</size>
            <attacher name="Srinivasan Vijayaraghavan">webkit</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwMDY4NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU1IEBACisyMDE2LTA1LTExICBTcmluaXZhc2FuIFZpamF5YXJhZ2hhdmFuICA8c3ZpamF5
YXJhZ2hhdmFuQGFwcGxlLmNvbT4KKworICAgICAgICBEaXNwbGF5IGZhaWxpbmcgSlNDIHN0cmVz
cyB0ZXN0cyBpbiBidWlsZGJvdCBkYXNoYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjU5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3QuanM6CisgICAg
ICAgIChCdWlsZGJvdC5wcm90b3R5cGUuamF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXNVUkxGb3JJ
dGVyYXRpb24pOiBHZW5lcmF0ZSB0aGUgVVJMIGZvcgorICAgICAgICByYXcgSlNPTiBvdXRwdXQg
b2YgSlNDIHRlc3RzLgorICAgICAgICAoQnVpbGRib3QucHJvdG90eXBlLmphdmFTY3JpcHRDb3Jl
VGVzdFN0ZGlvVVJMRm9ySXRlcmF0aW9uKTogR2VuZXJhdGUgdGhlIFVSTCBmb3IgdGV4dCBvdXRw
dXQgb2YgSlNDIHRlc3RzLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0
aW9uLmpzOgorICAgICAgICAoQnVpbGRib3RJdGVyYXRpb24pOiBBZGQgamF2YVNjcmlwdENvcmVU
ZXN0UmVzdWx0cyB2YXJpYWJsZS4KKyAgICAgICAgKEJ1aWxkYm90SXRlcmF0aW9uLnByb3RvdHlw
ZS4pOiBDaGVjayBmb3IgamF2YXNjcmlwdGNvcmUgdGVzdHMgc3RlcC4KKyAgICAgICAgKEJ1aWxk
Ym90SXRlcmF0aW9uLnByb3RvdHlwZS5sb2FkTGF5b3V0VGVzdFJlc3VsdHMpOiBBZGQgY29tbWEg
YXQgY2xvc2luZyBicmFjZS4KKyAgICAgICAgKEJ1aWxkYm90SXRlcmF0aW9uLnByb3RvdHlwZS5s
b2FkSmF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cyk6IEZldGNoIEpTT04gZnJvbSBCdWlsZGJvdCBt
YXN0ZXIKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RSZXN1bHRzLmpzOgor
ICAgICAgICAoQnVpbGRib3RUZXN0UmVzdWx0cy5wcm90b3R5cGUuYWRkSmF2YVNjcmlwdENvcmVU
ZXN0RmFpbHVyZXMpOiBQYXJzZSBKU09OIGludG8gYSBsaXN0IG9mIGZhaWxpbmcgdGVzdHMuCisg
ICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanM6CisgICAg
ICAgIChCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUuYXBwZW5kQnVpbGRlclF1ZXVl
U3RhdHVzKTogSW5zdGFudGlhdGUgUG9wb3ZlclRyYWNrZXJzIGZvciBidWlsZHMgd2hvc2UKKyAg
ICAgICAgb25seSBmYWlsdXJlcyBhcmUgSlNDIHRlc3RzLgorICAgICAgICAoQnVpbGRib3RUZXN0
ZXJRdWV1ZVZpZXcucHJvdG90eXBlLl9vblBvcG92ZXJDb3B5KTogUmV1c2FibGUgZnVuY3Rpb24g
dG8gZW5hYmxlIGNvcHlpbmcgdGV4dCBmcm9tIAorICAgICAgICBwb3BvdmVyIGJ1YmJsZXMuCisg
ICAgICAgIChCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUuY29udGVudC5vbmNvcHkp
OiBEZWxldGVkLgorICAgICAgICAoQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlLl9w
b3BvdmVyQ29udGVudEZvckxheW91dFRlc3RSZWdyZXNzaW9ucyk6IFVzZSBfb25Qb3BvdmVyQ29w
eS4KKyAgICAgICAgKEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZS5fcG9wb3ZlckNv
bnRlbnRGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucyk6IEdlbmVyYXRlcyB0aGUgCisg
ICAgICAgIHBvcG92ZXIgYnViYmxlJ3MgaW5uZXIgSFRNTCBmcm9tIHRoZSBsaXN0IG9mIEpTQyBm
YWlsdXJlcy4KKyAgICAgICAgKEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZS5fcHJl
c2VudFBvcG92ZXJGb3JMYXlvdXRUZXN0UmVncmVzc2lvbnMpOiBVc2UgX2NyZWF0ZUxvYWRpbmdJ
bmRpY2F0b3IuCisgICAgICAgIChCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUuX2Ny
ZWF0ZUxvYWRpbmdJbmRpY2F0b3IpOiBSZXVzYWJsZSBmdW5jdGlvbiB0byBjcmVhdGUgYSBsb2Fk
aW5nIGluZGljYXRvci4KKyAgICAgICAgd2l0aCBhIHNwZWNpZmllZCBoZWFkaW5nIGZvciBhbiBp
dGVyYXRpb24uCisgICAgICAgIChCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUuX3By
ZXNlbnRQb3BvdmVyRm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnMpOiBHZW5lcmF0ZSB0
aGUgCisgICAgICAgIHBvcG92ZXIgYnViYmxlIGFuZCBoYW5kbGUgcmVxdWVzdCBmYWlsdXJlcy4K
KyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9pbmRleC5odG1sOiBBZGQgbmV3IAorICAg
ICAgICBqYXZhc2NyaXB0IGZpbGVzCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVz
b3VyY2VzL01vY2tCdWlsZGJvdC5qczogCisgICAgICAgIEFkZGVkLgorICAgICAgICAoTW9ja0J1
aWxkYm90KTogTW9ja2VkIHZlcnNpb24gb2YgQnVpbGRib3QuanMsIG9ubHkgY29udGFpbmluZyBV
UkwgbWV0aG9kcy4KKyAgICAgICAgKE1vY2tCdWlsZGJvdC5wcm90b3R5cGUuYnVpbGRQYWdlVVJM
Rm9ySXRlcmF0aW9uKTogU2FtZSBhcyByZWFsIEJ1aWxkYm90LmpzCisgICAgICAgIChNb2NrQnVp
bGRib3QucHJvdG90eXBlLmphdmFTY3JpcHRDb3JlVGVzdEZhaWx1cmVzVVJMRm9ySXRlcmF0aW9u
KTogUG9pbnRzIHRvIGxvY2FsIGZpbGUgY29udGFpbmluZyAKKyAgICAgICAgSlNPTiBmb3IgdGVz
dC4KKyAgICAgICAgKE1vY2tCdWlsZGJvdC5wcm90b3R5cGUuamF2YVNjcmlwdENvcmVUZXN0U3Rk
aW9VUkxGb3JJdGVyYXRpb24pOiBTYW1lIGFzIHJlYWwgQnVpbGRib3QuanMKKyAgICAgICAgKiBC
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90UXVldWUuanM6CisgICAg
ICAgIChNb2NrQnVpbGRib3RRdWV1ZSk6IFVzZXMgYSBNb2NrQnVpbGRib3QoKSBpbnN0ZWFkIG9m
IGEgc3RyaW5nLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy9Nb2Nr
QnVpbGRib3RUZXN0UmVzdWx0cy5qczogCisgICAgICAgIEFkZGVkLgorICAgICAgICAoTW9ja0J1
aWxkYm90VGVzdFJlc3VsdHMpOiBNb2NrZWQgdmVyc2lvbiBvZiBCdWlsZGJvdFRlc3RSZXN1bHRz
CisgICAgICAgIChNb2NrQnVpbGRib3RUZXN0UmVzdWx0cy5wcm90b3R5cGUuYWRkSmF2YVNjcmlw
dENvcmVUZXN0RmFpbHVyZXMpOiBTaW1wbHkgc2V0cyB0aGUgJ3JlZ3Jlc3Npb25zJyB2YXJpYWJs
ZSAKKyAgICAgICAgd2l0aG91dCBwZXJmb3JtaW5nIGFueSBhc3NlcnRpb25zLgorICAgICAgICAq
IEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy90ZXN0LWpzYy1yZXN1bHRzLmpzb246IEFk
ZGVkLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy90ZXN0cy5qczoK
KyAgICAgICAgQWRkIGZvdXIgZ3JvdXBzIG9mIHRlc3RzLgorCiAyMDE2LTA1LTExICBKb2FubWFy
aWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBhY2Nlc3NpYmls
aXR5L2FyaWEtcmVhZG9ubHkuaHRtbCBpcyBmYWlsaW5nCkluZGV4OiBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2Ny
aXB0cy9CdWlsZGJvdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWls
ZGJvdC5qcwkocmV2aXNpb24gMjAwNDI3KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRi
b3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTEsNiArMTUxLDE3IEBAIEJ1aWxkYm90LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArICJidWlsZGVycy8iICsgZW5j
b2RlVVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1ZS5pZCkgKyAiL2J1aWxkcy8iICsgaXRlcmF0
aW9uLmlkOwogICAgIH0sCiAKKyAgICBqYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlc1VSTEZvckl0
ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
YmFzZVVSTCArICJidWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1
ZS5pZCkgKyAiL2J1aWxkcy8iICsgaXRlcmF0aW9uLmlkICsgIi9zdGVwcy9qc2NvcmUtdGVzdC9s
b2dzL2pzb24vdGV4dCI7CisgICAgfSwKKworICAgIGphdmFTY3JpcHRDb3JlVGVzdFN0ZGlvVVJM
Rm9ySXRlcmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24pCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5iYXNlVVJMICsgImJ1aWxkZXJzLyIgKyBlbmNvZGVVUklDb21wb25lbnQoaXRlcmF0aW9u
LnF1ZXVlLmlkKSArICIvYnVpbGRzLyIgKyBpdGVyYXRpb24uaWQgKyAiL3N0ZXBzL2pzY29yZS10
ZXN0L2xvZ3Mvc3RkaW8iOworCisgICAgfSwKKwogICAgIGxheW91dFRlc3RSZXN1bHRzRGlyZWN0
b3J5VVJMRm9ySXRlcmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24pCiAgICAgewogICAgICAgICB2
YXIgdW5kZXJzY29yZVNlcGFyYXRlZFJldmlzaW9ucyA9ICJyIjsKSW5kZXg6IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpzCShyZXZpc2lvbiAyMDA0MjcpCisrKyBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEl0ZXJhdGlvbi5qcwkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0LCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDYsNiArNDYsNyBAQCBCdWlsZGJvdEl0ZXJhdGlvbiA9IGZ1bmN0aW9uKHF1ZXVl
LCBkYXRhCiAgICAgdGhpcy5yZXZpc2lvbiA9IHt9OwogCiAgICAgdGhpcy5sYXlvdXRUZXN0UmVz
dWx0cyA9IG51bGw7IC8vIExheW91dCB0ZXN0IHJlc3VsdHMgY2FuIGJlIG5lZWRlZCBldmVuIGlm
IGFsbCB0ZXN0cyBwYXNzZWQsIGUuZy4gZm9yIHRoZSBsZWFrcyBib3QuCisgICAgdGhpcy5qYXZh
U2NyaXB0Q29yZVRlc3RSZXN1bHRzID0gbnVsbDsKIAogICAgIHRoaXMuZmFpbGVkVGVzdFN0ZXBz
ID0gW107CiAKQEAgLTI1MCw2ICsyNTEsOCBAQCBCdWlsZGJvdEl0ZXJhdGlvbi5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IG5ldyBCdWlsZGJvdFRlc3RSZXN1bHRzKHN0
ZXApOwogICAgICAgICAgICAgaWYgKHN0ZXAubmFtZSA9PT0gImxheW91dC10ZXN0IikKICAgICAg
ICAgICAgICAgICB0aGlzLmxheW91dFRlc3RSZXN1bHRzID0gcmVzdWx0czsKKyAgICAgICAgICAg
IGVsc2UgaWYgKHN0ZXAubmFtZSA9PT0gImpzY29yZS10ZXN0IikKKyAgICAgICAgICAgICAgICB0
aGlzLmphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMgPSByZXN1bHRzOwogICAgICAgICAgICAgaWYg
KHJlc3VsdHMuYWxsUGFzc2VkKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IHRoaXMuZmFpbGVkVGVzdFN0ZXBzLnB1c2gocmVzdWx0cyk7CkBAIC0zNTMsNSArMzU2LDI1IEBA
IEJ1aWxkYm90SXRlcmF0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNvbnNvbGUubG9n
KGRhdGEuZXJyb3IpOwogICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgfS5iaW5kKHRo
aXMpLCB7anNvbnBDYWxsYmFja05hbWU6ICJBRERfUkVTVUxUUyIsIHdpdGhDcmVkZW50aWFsczog
dGhpcy5xdWV1ZS5idWlsZGJvdC5uZWVkc0F1dGhlbnRpY2F0aW9ufSk7Ci0gICAgfQorICAgIH0s
CisKKyAgICBsb2FkSmF2YVNjcmlwdENvcmVUZXN0UmVzdWx0czogZnVuY3Rpb24oY2FsbGJhY2sp
CisgICAgeworICAgICAgICBpZiAodGhpcy5xdWV1ZS5idWlsZGJvdC5uZWVkc0F1dGhlbnRpY2F0
aW9uICYmIHRoaXMucXVldWUuYnVpbGRib3QuYXV0aGVudGljYXRpb25TdGF0dXMgPT09IEJ1aWxk
Ym90LkF1dGhlbnRpY2F0aW9uU3RhdHVzLkludmFsaWRDcmVkZW50aWFscykKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBKU09OLmxvYWQodGhpcy5xdWV1ZS5idWlsZGJvdC5qYXZhU2Ny
aXB0Q29yZVRlc3RGYWlsdXJlc1VSTEZvckl0ZXJhdGlvbih0aGlzKSwgZnVuY3Rpb24oZGF0YSkg
eworICAgICAgICAgICAgdGhpcy5xdWV1ZS5idWlsZGJvdC5pc0F1dGhlbnRpY2F0ZWQgPSB0cnVl
OworICAgICAgICAgICAgdGhpcy5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzLmFkZEphdmFTY3Jp
cHRDb3JlVGVzdEZhaWx1cmVzKGRhdGEpOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAg
ICAgfS5iaW5kKHRoaXMpLAorICAgICAgICBmdW5jdGlvbihkYXRhKSB7CisgICAgICAgICAgICBp
ZiAoZGF0YS5lcnJvclR5cGUgPT09IEpTT04uTG9hZEVycm9yICYmIGRhdGEuZXJyb3JIVFRQQ29k
ZSA9PT0gNDAxKSB7CisgICAgICAgICAgICAgICAgdGhpcy5xdWV1ZS5idWlsZGJvdC5pc0F1dGhl
bnRpY2F0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhCdWlsZGJvdEl0ZXJhdGlvbi5FdmVudC5VbmF1dGhvcml6ZWRBY2Nlc3MpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YS5lcnJvcik7CisgICAgICAg
ICAgICBjYWxsYmFjaygpOworICAgICAgICB9LmJpbmQodGhpcyksIHt3aXRoQ3JlZGVudGlhbHM6
IHRoaXMucXVldWUuYnVpbGRib3QubmVlZHNBdXRoZW50aWNhdGlvbn0pOworICAgIH0sCiB9OwpJ
bmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0UmVzdWx0cy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RSZXN1bHRzLmpzCShyZXZp
c2lvbiAyMDA0MjcpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RSZXN1bHRz
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xODQsNCArMTg0LDEwIEBAIEJ1aWxkYm90VGVzdFJlc3VsdHMu
cHJvdG90eXBlID0gewogICAgICAgICAvLyBiZWNhdXNlIGJ1aWxkYm90IGNvdW50cyByZWdyZXNz
aW9ucyB0aGF0IGhhZCBtaXNzaW5nIHBpeGVsIHJlc3VsdHMgb24gcmV0cnkgKGUuZy4gIlRFWFQg
TUlTU0lORyIpLgogICAgICAgICBjb25zb2xlLmFzc2VydChkYXRhLm51bV9taXNzaW5nID49IHRo
aXMudGVzdHNXaXRoTWlzc2luZ1Jlc3VsdHMubGVuZ3RoKTsKICAgICB9LAorCisgICAgYWRkSmF2
YVNjcmlwdENvcmVUZXN0RmFpbHVyZXM6IGZ1bmN0aW9uKGRhdGEpCisgICAgeworICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLm5hbWUgPT09ICJqc2NvcmUtdGVzdCIpOworICAgICAgICB0aGlz
LnJlZ3Jlc3Npb25zID0gZGF0YS5mYWlsdXJlczsKKyAgICB9LAogfTsKSW5kZXg6IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdGVyUXVldWVWaWV3LmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdGVyUXVldWVWaWV3LmpzCShyZXZpc2lvbiAy
MDA0MjcpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5q
cwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAyLDkgKzEwMiwxMyBAQCBCdWlsZGJvdFRl
c3RlclF1ZXVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZXJhdGlvbi5mYWlsZWRUZXN0U3RlcHMubGVuZ3RoID09
PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIHZhciBmYWlsZWRTdGVwID0gaXRlcmF0aW9uLmZh
aWxlZFRlc3RTdGVwc1swXTsKKwogICAgICAgICAgICAgICAgICAgICBpZiAoZmFpbGVkU3RlcC5u
YW1lID09PSAibGF5b3V0LXRlc3QiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3Rh
dHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2VFbGVtZW50LCBTdGF0dXNMaW5lVmlldy5T
dGF0dXMuQmFkLCB0aGlzLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbihmYWlsZWRTdGVwKSwg
ZmFpbGVkU3RlcC50b29NYW55RmFpbHVyZXMgPyBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCArICJc
dWZmMGIiIDogZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQsIGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJv
dC5sYXlvdXRUZXN0UmVzdWx0c1VSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tlcihzdGF0dXMuc3RhdHVzQnViYmxlRWxl
bWVudCwgdGhpcy5fcHJlc2VudFBvcG92ZXJGb3JMYXlvdXRUZXN0UmVncmVzc2lvbnMuYmluZCh0
aGlzKSwgaXRlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmYWlsZWRT
dGVwLm5hbWUgPT09ICJqc2NvcmUtdGVzdCIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVW
aWV3LlN0YXR1cy5CYWQsIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0
ZXApLCBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCwgaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90Lmph
dmFTY3JpcHRDb3JlVGVzdFN0ZGlvVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikpOworICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNCdWJibGVF
bGVtZW50LCB0aGlzLl9wcmVzZW50UG9wb3ZlckZvckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jlc3Np
b25zLmJpbmQodGhpcyksIGl0ZXJhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3
KG1lc3NhZ2VFbGVtZW50LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuQmFkLCB0aGlzLl90ZXN0U3Rl
cEZhaWx1cmVEZXNjcmlwdGlvbihmYWlsZWRTdGVwKSwgZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQg
PyBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCA6IHVuZGVmaW5lZCwgZmFpbGVkU3RlcC5VUkwpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNC
dWJibGVFbGVtZW50LCB0aGlzLl9wcmVzZW50UG9wb3ZlckZvckdlbmVyaWNUZXN0RmFpbHVyZXMu
YmluZCh0aGlzKSwgaXRlcmF0aW9uKTsKQEAgLTE1MSw2ICsxNTUsMzEgQEAgQnVpbGRib3RUZXN0
ZXJRdWV1ZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gZmFpbGVkU3RlcC5mYWls
dXJlQ291bnQgKyAiXHUwMGEwIiArIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZh
aWxlZFN0ZXApOwogICAgIH0sCiAKKyAgICAvLyBXb3JrIGFyb3VuZCBidWcgODAxNTk6IC13ZWJr
aXQtdXNlci1zZWxlY3Q6bm9uZSBub3QgcmVzcGVjdGVkIHdoZW4gY29weWluZyBjb250ZW50Lgor
ICAgIC8vIFdlIHNldCBjbGlwYm9hcmQgZGF0YSBtYW51YWxseSwgdGVtcG9yYXJpbHkgbWFraW5n
IG5vbi1zZWxlY3RhYmxlIGNvbnRlbnQgaGlkZGVuCisgICAgLy8gdG8gZWFzaWx5IGdldCBhY2N1
cmF0ZSBzZWxlY3Rpb24gdGV4dC4KKyAgICBfb25Qb3BvdmVyQ29weTogZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICAgICAgdmFyIGl0ZXJhdG9yID0gZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKAor
ICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldCwKKyAgICAgICAgICAgIE5vZGVGaWx0ZXIu
U0hPV19FTEVNRU5ULAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGFjY2VwdE5vZGU6
IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKGVsZW1lbnQpLndlYmtpdFVzZXJTZWxlY3QgIT09ICJub25lIikKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9TS0lQOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICB3aGlsZSAoKG5v
ZGUgPSBpdGVyYXRvci5uZXh0Tm9kZSgpKSkKKyAgICAgICAgICAgIG5vZGUuc3R5bGUudmlzaWJp
bGl0eSA9ICJ2aXNpYmxlIjsKKworICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnN0eWxlLnZp
c2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5zZXREYXRh
KCd0ZXh0Jywgd2luZG93LmdldFNlbGVjdGlvbigpKTsKKyAgICAgICAgZXZlbnQuY3VycmVudFRh
cmdldC5zdHlsZS52aXNpYmlsaXR5ID0gIiI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
LAorCiAgICAgX3BvcG92ZXJDb250ZW50Rm9yTGF5b3V0VGVzdFJlZ3Jlc3Npb25zOiBmdW5jdGlv
bihpdGVyYXRpb24pCiAgICAgewogICAgICAgICB2YXIgaGFzVGVzdEhpc3RvcnkgPSB0eXBlb2Yg
dGVzdEhpc3RvcnkgIT09ICJ1bmRlZmluZWQiOwpAQCAtMjI5LDMxICsyNTgsNTQgQEAgQnVpbGRi
b3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgY29udGVudC5hcHBl
bmRDaGlsZChyb3dFbGVtZW50KTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFdvcmsgYXJvdW5k
IGJ1ZyA4MDE1OTogLXdlYmtpdC11c2VyLXNlbGVjdDpub25lIG5vdCByZXNwZWN0ZWQgd2hlbiBj
b3B5aW5nIGNvbnRlbnQuCi0gICAgICAgIC8vIFdlIHNldCBjbGlwYm9hcmQgZGF0YSBtYW51YWxs
eSwgdGVtcG9yYXJpbHkgbWFraW5nIG5vbi1zZWxlY3RhYmxlIGNvbnRlbnQgaGlkZGVuCi0gICAg
ICAgIC8vIHRvIGVhc2lseSBnZXQgYWNjdXJhdGUgc2VsZWN0aW9uIHRleHQuCi0gICAgICAgIGNv
bnRlbnQub25jb3B5ID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIHZhciBpdGVyYXRv
ciA9IGRvY3VtZW50LmNyZWF0ZU5vZGVJdGVyYXRvcigKLSAgICAgICAgICAgICAgICBldmVudC5j
dXJyZW50VGFyZ2V0LAotICAgICAgICAgICAgICAgIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULAot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYWNjZXB0Tm9kZTogZnVuY3Rp
b24oZWxlbWVudCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKGVsZW1lbnQpLndlYmtpdFVzZXJTZWxlY3QgIT09ICJub25lIikKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICApOworICAg
ICAgICBjb250ZW50Lm9uY29weSA9IHRoaXMuX29uUG9wb3ZlckNvcHk7CisgICAgICAgIHJldHVy
biBjb250ZW50OworICAgIH0sCisKKyAgICBfcG9wb3ZlckNvbnRlbnRGb3JKYXZhU2NyaXB0Q29y
ZVRlc3RSZWdyZXNzaW9uczogZnVuY3Rpb24oaXRlcmF0aW9uKQorICAgIHsKKyAgICAgICAgdmFy
IGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgY29udGVu
dC5jbGFzc05hbWUgPSAidGVzdC1yZXN1bHRzLXBvcG92ZXIiOwogCi0gICAgICAgICAgICB3aGls
ZSAoKG5vZGUgPSBpdGVyYXRvci5uZXh0Tm9kZSgpKSkKLSAgICAgICAgICAgICAgICBub2RlLnN0
eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7CisgICAgICAgIHRoaXMuX2FkZEl0ZXJhdGlvbkhl
YWRpbmdUb1BvcG92ZXIoaXRlcmF0aW9uLCBjb250ZW50LCAiamF2YXNjcmlwdGNvcmUgdGVzdCBm
YWlsdXJlcyIpOworICAgICAgICB0aGlzLl9hZGREaXZpZGVyVG9Qb3BvdmVyKGNvbnRlbnQpOwog
Ci0gICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnN0eWxlLnZpc2liaWxpdHkgPSAiaGlk
ZGVuIjsKLSAgICAgICAgICAgIGV2ZW50LmNsaXBib2FyZERhdGEuc2V0RGF0YSgndGV4dCcsIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKSk7Ci0gICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnN0
eWxlLnZpc2liaWxpdHkgPSAiIjsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
aWYgKCFpdGVyYXRpb24uamF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cy5yZWdyZXNzaW9ucykgewor
ICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICAgICAgICAgIG1lc3NhZ2UuY2xhc3NOYW1lID0gImxvYWRpbmctZmFpbHVyZSI7CisgICAg
ICAgICAgICBtZXNzYWdlLnRleHRDb250ZW50ID0gIlRlc3QgcmVzdWx0cyBjb3VsZG5cdTIwMTl0
IGJlIGxvYWRlZCI7CisgICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKG1lc3NhZ2UpOwor
ICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7CiAgICAgICAgIH0KIAorICAgICAgICB2YXIgcmVn
cmVzc2lvbnMgPSBpdGVyYXRpb24uamF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cy5yZWdyZXNzaW9u
czsKKworICAgICAgICBmb3IgKHZhciBpID0gMCwgZW5kID0gcmVncmVzc2lvbnMubGVuZ3RoOyBp
ICE9IGVuZDsgKytpKSB7CisgICAgICAgICAgICB2YXIgdGVzdCA9IHJlZ3Jlc3Npb25zW2ldOwor
ICAgICAgICAgICAgdmFyIHJvd0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKyAgICAgICAgICAgIHZhciB0ZXN0UGF0aEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzcGFuIik7CisgICAgICAgICAgICB0ZXN0UGF0aEVsZW1lbnQuY2xhc3NOYW1lID0gInRl
c3QtcGF0aCI7CisgICAgICAgICAgICB0ZXN0UGF0aEVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXN0
OworICAgICAgICAgICAgcm93RWxlbWVudC5hcHBlbmRDaGlsZCh0ZXN0UGF0aEVsZW1lbnQpOwor
ICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChyb3dFbGVtZW50KTsKKyAgICAgICAgfQor
CisgICAgICAgIGNvbnRlbnQub25jb3B5ID0gdGhpcy5fb25Qb3BvdmVyQ29weTsKKyAgICAgICAg
cmV0dXJuIGNvbnRlbnQ7CisgICAgfSwKKworICAgIF9jcmVhdGVMb2FkaW5nSW5kaWNhdG9yOiBm
dW5jdGlvbihpdGVyYXRpb24sIGhlYWRpbmcpIHsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgY29udGVudC5jbGFzc05hbWUgPSAi
dGVzdC1yZXN1bHRzLXBvcG92ZXIiOworCisgICAgICAgIHRoaXMuX2FkZEl0ZXJhdGlvbkhlYWRp
bmdUb1BvcG92ZXIoaXRlcmF0aW9uLCBjb250ZW50LCBoZWFkaW5nKTsKKyAgICAgICAgdGhpcy5f
YWRkRGl2aWRlclRvUG9wb3Zlcihjb250ZW50KTsKKworICAgICAgICB2YXIgbG9hZGluZ0luZGlj
YXRvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBsb2FkaW5nSW5k
aWNhdG9yLmNsYXNzTmFtZSA9ICJsb2FkaW5nLWluZGljYXRvciI7CisgICAgICAgIGxvYWRpbmdJ
bmRpY2F0b3IudGV4dENvbnRlbnQgPSAiTG9hZGluZ1x1MjAyNiI7CisgICAgICAgIGNvbnRlbnQu
YXBwZW5kQ2hpbGQobG9hZGluZ0luZGljYXRvcik7CisKICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7
CiAgICAgfSwKIApAQCAtMjYyLDE2ICszMTQsNyBAQCBCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChpdGVyYXRpb24ubGF5b3V0VGVzdFJlc3VsdHMucmVn
cmVzc2lvbnMpCiAgICAgICAgICAgICB2YXIgY29udGVudCA9IHRoaXMuX3BvcG92ZXJDb250ZW50
Rm9yTGF5b3V0VGVzdFJlZ3Jlc3Npb25zKGl0ZXJhdGlvbik7CiAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAg
ICAgICAgICAgIGNvbnRlbnQuY2xhc3NOYW1lID0gInRlc3QtcmVzdWx0cy1wb3BvdmVyIjsKLQot
ICAgICAgICAgICAgdGhpcy5fYWRkSXRlcmF0aW9uSGVhZGluZ1RvUG9wb3ZlcihpdGVyYXRpb24s
IGNvbnRlbnQsICJsYXlvdXQgdGVzdCBmYWlsdXJlcyIpOwotICAgICAgICAgICAgdGhpcy5fYWRk
RGl2aWRlclRvUG9wb3Zlcihjb250ZW50KTsKLQotICAgICAgICAgICAgdmFyIGxvYWRpbmdJbmRp
Y2F0b3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAgIGxvYWRp
bmdJbmRpY2F0b3IuY2xhc3NOYW1lID0gImxvYWRpbmctaW5kaWNhdG9yIjsKLSAgICAgICAgICAg
IGxvYWRpbmdJbmRpY2F0b3IudGV4dENvbnRlbnQgPSAiTG9hZGluZ1x1MjAyNiI7Ci0gICAgICAg
ICAgICBjb250ZW50LmFwcGVuZENoaWxkKGxvYWRpbmdJbmRpY2F0b3IpOworICAgICAgICAgICAg
dmFyIGNvbnRlbnQgPSB0aGlzLl9jcmVhdGVMb2FkaW5nSW5kaWNhdG9yKGl0ZXJhdGlvbiwgImxh
eW91dCB0ZXN0IGZhaWx1cmVzIik7CiAKICAgICAgICAgICAgIGl0ZXJhdGlvbi5sb2FkTGF5b3V0
VGVzdFJlc3VsdHMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgcG9wb3Zlci5jb250ZW50
ID0gdGhpcy5fcG9wb3ZlckNvbnRlbnRGb3JMYXlvdXRUZXN0UmVncmVzc2lvbnMoaXRlcmF0aW9u
KTsKQEAgLTI4Myw2ICszMjYsMjMgQEAgQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9LAogCisgICAgX3ByZXNlbnRQb3BvdmVy
Rm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnM6IGZ1bmN0aW9uKGVsZW1lbnQsIHBvcG92
ZXIsIGl0ZXJhdGlvbikKKyAgICB7CisgICAgICAgIGlmIChpdGVyYXRpb24uamF2YVNjcmlwdENv
cmVUZXN0UmVzdWx0cy5yZWdyZXNzaW9ucykKKyAgICAgICAgICAgIHZhciBjb250ZW50ID0gdGhp
cy5fcG9wb3ZlckNvbnRlbnRGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucyhpdGVyYXRp
b24pOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBjb250ZW50ID0gdGhpcy5fY3Jl
YXRlTG9hZGluZ0luZGljYXRvcihpdGVyYXRpb24sICJqYXZhc2NyaXB0Y29yZSB0ZXN0IGZhaWx1
cmVzIik7CisgICAgICAgICAgICBpdGVyYXRpb24ubG9hZEphdmFTY3JpcHRDb3JlVGVzdFJlc3Vs
dHMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gdGhpcy5f
cG9wb3ZlckNvbnRlbnRGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucyhpdGVyYXRpb24p
OworICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBy
ZWN0ID0gRGFzaGJvYXJkLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KGVsZW1lbnQuZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCkpOworICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSBjb250ZW50OworICAg
ICAgICBwb3BvdmVyLnByZXNlbnQocmVjdCwgW0Rhc2hib2FyZC5SZWN0RWRnZS5NSU5fWSwgRGFz
aGJvYXJkLlJlY3RFZGdlLk1BWF9ZLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUFYX1gsIERhc2hib2Fy
ZC5SZWN0RWRnZS5NSU5fWF0pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCiAgICAg
X3ByZXNlbnRQb3BvdmVyRm9yR2VuZXJpY1Rlc3RGYWlsdXJlczogZnVuY3Rpb24oZWxlbWVudCwg
cG9wb3ZlciwgaXRlcmF0aW9uKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gYWRkUmVzdWx0S2lu
ZChtZXNzYWdlLCB1cmwpIHsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL2luZGV4
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvaW5kZXguaHRt
bAkocmV2aXNpb24gMjAwNDI3KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvaW5kZXgu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNjMsOCArNjMsMTAgQEAgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgc3JjPSIuLi9UcmFjLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vU291cmNlL1RoaXJkUGFydHkvcXVu
aXQvcXVuaXQvcXVuaXQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
TW9ja1RyYWMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvTW9ja0J1
aWxkYm90LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL01vY2tCdWls
ZGJvdFF1ZXVlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL01vY2tC
dWlsZGJvdFF1ZXVlVmlldy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNl
cy9Nb2NrQnVpbGRib3RUZXN0UmVzdWx0cy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
InJlc291cmNlcy90ZXN0cy5qcyI+PC9zY3JpcHQ+CiAKIDwvaGVhZD4KQEAgLTc1LDQgKzc3LDQg
QEAgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxoMiBpZD0icXVuaXQtdXNl
ckFnZW50Ij48L2gyPgogICAgIDxvbCBpZD0icXVuaXQtdGVzdHMiPjwvb2w+CiA8L2JvZHk+Ci08
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpJbmRleDogVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJvdC5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90Lmpz
CShyZXZpc2lvbiAwKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01v
Y2tCdWlsZGJvdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworTW9ja0J1aWxkYm90ID0gZnVuY3Rpb24oKSB7fTsKKworTW9ja0J1aWxkYm90LnByb3RvdHlw
ZSA9IHsKKyAgICBjb25zdHJ1Y3RvcjogTW9ja0J1aWxkYm90LAorCisgICAgYnVpbGRQYWdlVVJM
Rm9ySXRlcmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24pCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5iYXNlVVJMICsgImJ1aWxkZXJzLyIgKyBlbmNvZGVVUklDb21wb25lbnQoaXRlcmF0aW9u
LnF1ZXVlLmlkKSArICIvYnVpbGRzLyIgKyBpdGVyYXRpb24uaWQ7CisgICAgfSwKKworICAgIGph
dmFTY3JpcHRDb3JlVGVzdEZhaWx1cmVzVVJMRm9ySXRlcmF0aW9uOiBmdW5jdGlvbihpdGVyYXRp
b24pCisgICAgeworICAgICAgICByZXR1cm4gInJlc291cmNlcy90ZXN0LWpzYy1yZXN1bHRzLmpz
b24iOworICAgIH0sCisKKyAgICBqYXZhU2NyaXB0Q29yZVRlc3RTdGRpb1VSTEZvckl0ZXJhdGlv
bjogZnVuY3Rpb24oaXRlcmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVS
TCArICJidWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1ZS5pZCkg
KyAiL2J1aWxkcy8iICsgaXRlcmF0aW9uLmlkICsgIi9zdGVwcy9qc2NvcmUtdGVzdC9sb2dzL3N0
ZGlvIjsKKworICAgIH0sCit9CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNv
dXJjZXMvTW9ja0J1aWxkYm90UXVldWUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Nj
cmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJvdFF1ZXVlLmpzCShyZXZpc2lvbiAyMDA0
MjcpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90
UXVldWUuanMJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgTW9ja0J1aWxkYm90UXVl
dWUgPSBmdW5jdGlvbigpCiAgICAgICAgIGhlYWRpbmc6ICIiLAogICAgICAgICBjcmFzaGVzT25s
eTogIiIKICAgICB9OwotICAgIEJ1aWxkYm90UXVldWUuY2FsbCh0aGlzLCAiTW9jayBCdWlsZEJv
dCIsICJpZCIsIGluZm8pOworICAgIEJ1aWxkYm90UXVldWUuY2FsbCh0aGlzLCBuZXcgTW9ja0J1
aWxkYm90KCksICJpZCIsIGluZm8pOwogfTsKIAogQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1
bmN0aW9ucyhNb2NrQnVpbGRib3RRdWV1ZSk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90
ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90VGVzdFJlc3VsdHMuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJvdFRlc3RSZXN1
bHRzLmpzCShyZXZpc2lvbiAwKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3Vy
Y2VzL01vY2tCdWlsZGJvdFRlc3RSZXN1bHRzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCitNb2NrQnVpbGRib3RUZXN0UmVzdWx0cyA9IGZ1bmN0aW9uKCkg
e307CisKK01vY2tCdWlsZGJvdFRlc3RSZXN1bHRzLnByb3RvdHlwZSA9IHsKKyAgICBjb25zdHJ1
Y3RvcjogTW9ja0J1aWxkYm90VGVzdFJlc3VsdHMsCisKKyAgICBhZGRKYXZhU2NyaXB0Q29yZVRl
c3RGYWlsdXJlczogZnVuY3Rpb24oZGF0YSkKKyAgICB7CisgICAgICAgICB0aGlzLnJlZ3Jlc3Np
b25zID0gZGF0YS5mYWlsdXJlczsKKyAgICB9LAorfTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3Jp
cHRzL3Rlc3RzL3Jlc291cmNlcy90ZXN0LWpzYy1yZXN1bHRzLmpzb24KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL3Rlc3QtanNjLXJlc3VsdHMuanNv
bgkocmV2aXNpb24gMCkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy90
ZXN0LWpzYy1yZXN1bHRzLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSBAQAoreyJmYWls
dXJlcyI6WyJsb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCIsICJjb25zZWN0ZXR1ciBhZGlwaXNj
aW5nIGVsaXQiLCAic2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0
IGRvbG9yZSBtYWduYSBhbGlxdWEiXX0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3Rz
L3Jlc291cmNlcy90ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90
ZXN0cy9yZXNvdXJjZXMvdGVzdHMuanMJKHJldmlzaW9uIDIwMDQyNykKKysrIFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy90ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMjYz
LDYgKzI2Myw5MCBAQCB0ZXN0KCJfZm9ybWF0UmV2aXNpb25Gb3JEaXNwbGF5IEdpdCIsIGZ1CiAg
ICAgc3RyaWN0RXF1YWwodGhpcy52aWV3Ll9mb3JtYXRSZXZpc2lvbkZvckRpc3BsYXkoIjBlNDk4
ZGI1ZDhlNWI1YTM0MjYzMSIsIHJlcG9zaXRvcnkpLCAiMGU0OThkYiIsICJTaG91bGQgYmUgMGU0
OThkYiIpOwogfSk7CiAKK3Rlc3QoIl9wb3BvdmVyQ29udGVudEZvckphdmFTY3JpcHRDb3JlVGVz
dFJlZ3Jlc3Npb25zIGxvYWQgZmFpbHVyZSBVSSB0ZXN0IiwgZnVuY3Rpb24oKQoreworICAgIHZh
ciBmaW5pc2hlZCA9IGZhbHNlOworICAgIHZhciBpdGVyYXRpb24gPSBuZXcgQnVpbGRib3RJdGVy
YXRpb24odGhpcy5xdWV1ZSwgMSwgZmluaXNoZWQpOworICAgIGl0ZXJhdGlvbi5qYXZhU2NyaXB0
Q29yZVRlc3RSZXN1bHRzID0gbmV3IE1vY2tCdWlsZGJvdFRlc3RSZXN1bHRzKCk7CisKKyAgICB2
YXIgdmlldyA9IG5ldyBCdWlsZGJvdFRlc3RlclF1ZXVlVmlldygpOworICAgIHZhciBjb250ZW50
ID0gdmlldy5fcG9wb3ZlckNvbnRlbnRGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucyhp
dGVyYXRpb24pOworCisgICAgdmFyIG51bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50ID0g
MjsKKyAgICBzdHJpY3RFcXVhbChjb250ZW50LmNoaWxkTm9kZXMubGVuZ3RoLCAxICsgbnVtQ2hp
bGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnQpOworICAgIHN0cmljdEVxdWFsKGNvbnRlbnQuY2hp
bGROb2Rlc1tudW1DaGlsZHJlbkluRW1wdHlQb3BvdmVyQ29udGVudF0uY2xhc3NOYW1lLCAibG9h
ZGluZy1mYWlsdXJlIiwgIlBvcG92ZXIgZm9yIGxvYWRpbmcgZmFpbHVyZSBtdXN0IGhhdmUgdGhl
IGFwcHJvcHJpYXRlIGNsYXNzIik7CisgICAgc3RyaWN0RXF1YWwoY29udGVudC5jaGlsZE5vZGVz
W251bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50XS50ZXh0Q29udGVudCwgIlRlc3QgcmVz
dWx0cyBjb3VsZG5cdTIwMTl0IGJlIGxvYWRlZCIsICJQb3BvdmVyIGZvciBsb2FkaW5nIGZhaWx1
cmUgbXVzdCB1c2UgdGhlIGNvcnJlY3QgdGV4dCIpOworfSk7CisKK3Rlc3QoIl9wcmVzZW50UG9w
b3ZlckZvckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jlc3Npb25zIGluY2x1ZGluZyBsb2FkaW5nIiwg
ZnVuY3Rpb24oKQoreworICAgIHZhciBmaW5pc2hlZCA9IGZhbHNlOworICAgIHZhciBlbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdmFyIHBvcG92ZXIgPSBuZXcg
RGFzaGJvYXJkLlBvcG92ZXIoKTsKKyAgICB2YXIgaXRlcmF0aW9uID0gbmV3IEJ1aWxkYm90SXRl
cmF0aW9uKHRoaXMucXVldWUsIDEsIGZpbmlzaGVkKTsKKyAgICBpdGVyYXRpb24uamF2YVNjcmlw
dENvcmVUZXN0UmVzdWx0cyA9IG5ldyBNb2NrQnVpbGRib3RUZXN0UmVzdWx0cygpOworCisgICAg
dmFyIHZpZXcgPSBuZXcgQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcoKTsKKyAgICB2aWV3Ll9wcmVz
ZW50UG9wb3ZlckZvckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jlc3Npb25zKGVsZW1lbnQsIHBvcG92
ZXIsIGl0ZXJhdGlvbik7CisKKyAgICBKU09OLmxvYWQoInJlc291cmNlcy90ZXN0LWpzYy1yZXN1
bHRzLmpzb24iLCBmdW5jdGlvbihkYXRhKQorICAgIHsKKyAgICAgICAgdmFyIHRlc3RSZWdyZXNz
aW9ucyA9IGRhdGEuZmFpbHVyZXM7CisgICAgICAgIHZhciBudW1DaGlsZHJlbkluRW1wdHlQb3Bv
dmVyQ29udGVudCA9IDI7CisgICAgICAgIHN0cmljdEVxdWFsKHBvcG92ZXIuX2NvbnRlbnQuY2hp
bGROb2Rlcy5sZW5ndGggLSBudW1DaGlsZHJlbkluRW1wdHlQb3BvdmVyQ29udGVudCwKKyAgICAg
ICAgICAgIHRlc3RSZWdyZXNzaW9ucy5sZW5ndGgsCisgICAgICAgICAgICAiTnVtYmVyIG9mIGZh
aWx1cmVzIGluIHBvcG92ZXIgbXVzdCBiZSBlcXVhbCB0byBudW1iZXIgb2YgZmFpbGVkIHRlc3Rz
Iik7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0UmVncmVzc2lvbnMubGVuZ3Ro
OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cmljdEVxdWFsKHBvcG92ZXIuX2NvbnRl
bnQuY2hpbGROb2Rlc1tpK251bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50XS5jaGlsZE5v
ZGVzWzBdLnRleHRDb250ZW50LAorICAgICAgICAgICAgICAgIHRlc3RSZWdyZXNzaW9uc1tpXSwK
KyAgICAgICAgICAgICAgICAiTmFtZXMgb2YgZmFpbHVyZXMgbXVzdCBtYXRjaCIKKyAgICAgICAg
ICAgICk7CisgICAgICAgIH0KKyAgICB9KTsKK30pOworCit0ZXN0KCJfY3JlYXRlTG9hZGluZ0lu
ZGljYXRvciIsIGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgZmluaXNoZWQgPSBmYWxzZTsKKyAgICB2
YXIgaXRlcmF0aW9uID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9uKHRoaXMucXVldWUsIDEsIGZpbmlz
aGVkKTsKKworICAgIHZhciB2aWV3ID0gbmV3IEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3KCk7Cisg
ICAgdmFyIGhlYWRpbmcgPSAiRmFpciBpcyBmb3VsLCBhbmQgZm91bCBpcyBmYWlyIjsKKyAgICB2
YXIgY29udGVudCA9IHZpZXcuX2NyZWF0ZUxvYWRpbmdJbmRpY2F0b3IoaXRlcmF0aW9uLCBoZWFk
aW5nKTsKKworICAgIHZhciBudW1DaGlsZHJlbkluRW1wdHlQb3BvdmVyQ29udGVudCA9IDI7Cisg
ICAgc3RyaWN0RXF1YWwoY29udGVudC5jaGlsZE5vZGVzLmxlbmd0aCwgMSArIG51bUNoaWxkcmVu
SW5FbXB0eVBvcG92ZXJDb250ZW50KTsKKyAgICBzdHJpY3RFcXVhbChjb250ZW50LmNoaWxkTm9k
ZXNbbnVtQ2hpbGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnRdLmNsYXNzTmFtZSwgImxvYWRpbmct
aW5kaWNhdG9yIiwgIlBvcG92ZXIgZm9yIGxvYWRpbmcgaW5kaWNhdG9yIG11c3QgaGF2ZSB0aGUg
YXBwcm9wcmlhdGUgY2xhc3MiKTsKKyAgICBzdHJpY3RFcXVhbChjb250ZW50LmNoaWxkTm9kZXNb
bnVtQ2hpbGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnRdLnRleHRDb250ZW50LCAiTG9hZGluZ1x1
MjAyNiIsICJQb3BvdmVyIGZvciBsb2FkaW5nIGZhaWx1cmUgbXVzdCB1c2UgdGhlIGNvcnJlY3Qg
dGV4dCIpOworfSk7CisKK3Rlc3QoIl9wcmVzZW50UG9wb3ZlckZvckphdmFTY3JpcHRDb3JlVGVz
dFJlZ3Jlc3Npb25zIGFscmVhZHkgbG9hZGVkIiwgZnVuY3Rpb24oKQoreworICAgIHZhciBmaW5p
c2hlZCA9IGZhbHNlOworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgdmFyIHBvcG92ZXIgPSBuZXcgRGFzaGJvYXJkLlBvcG92ZXIoKTsKKyAgICB2
YXIgaXRlcmF0aW9uID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9uKHRoaXMucXVldWUsIDEsIGZpbmlz
aGVkKTsKKyAgICBpdGVyYXRpb24uamF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cyA9IHsicmVncmVz
c2lvbnMiOiBbInVubyIsICJkb3MiLCAidHJlcyJdfTsKKworICAgIHZhciB2aWV3ID0gbmV3IEJ1
aWxkYm90VGVzdGVyUXVldWVWaWV3KCk7CisgICAgdmlldy5fcHJlc2VudFBvcG92ZXJGb3JKYXZh
U2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucyhlbGVtZW50LCBwb3BvdmVyLCBpdGVyYXRpb24pOwor
CisgICAgdmFyIG51bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50ID0gMjsKKyAgICBzdHJp
Y3RFcXVhbChwb3BvdmVyLl9jb250ZW50LmNoaWxkTm9kZXMubGVuZ3RoIC0gbnVtQ2hpbGRyZW5J
bkVtcHR5UG9wb3ZlckNvbnRlbnQsCisgICAgICAgIGl0ZXJhdGlvbi5qYXZhU2NyaXB0Q29yZVRl
c3RSZXN1bHRzLnJlZ3Jlc3Npb25zLmxlbmd0aCwKKyAgICAgICAgIk51bWJlciBvZiBmYWlsdXJl
cyBpbiBwb3BvdmVyIG11c3QgYmUgZXF1YWwgdG8gbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cyIpOwor
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVyYXRpb24uamF2YVNjcmlwdENvcmVUZXN0UmVz
dWx0cy5yZWdyZXNzaW9ucy5sZW5ndGg7IGkrKykKKyAgICB7CisgICAgICAgIHN0cmljdEVxdWFs
KHBvcG92ZXIuX2NvbnRlbnQuY2hpbGROb2Rlc1tpK251bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJD
b250ZW50XS5jaGlsZE5vZGVzWzBdLnRleHRDb250ZW50LAorICAgICAgICAgICAgaXRlcmF0aW9u
LmphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMucmVncmVzc2lvbnNbaV0sCisgICAgICAgICAgICAi
TmFtZXMgb2YgZmFpbHVyZXMgbXVzdCBtYXRjaCIKKyAgICAgICAgKTsKKyAgICB9Cit9KTsKKwog
bW9kdWxlKCJCdWlsZEJvdFF1ZXVlIiwgewogICAgIHNldHVwOiBmdW5jdGlvbigpIHsKICAgICAg
ICAgRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS50cmFjID0gbmV3IE1vY2tUcmFjKCk7
CkBAIC0zNTUsNCArNDM5LDQgQEAgdGVzdCgiY29tcGFyZUl0ZXJhdGlvbnNCeVJldmlzaW9ucyIs
IGZ1bgogICAgIG9rKHRoaXMucXVldWUuY29tcGFyZUl0ZXJhdGlvbnNCeVJldmlzaW9ucyhpdGVy
YXRpb24yLCBpdGVyYXRpb24xKSA8IDAsICJjb21wYXJlSXRlcmF0aW9uc0J5UmV2aXNpb25zOiBs
ZXNzIHRoYW4iKTsKICAgICBvayh0aGlzLnF1ZXVlLmNvbXBhcmVJdGVyYXRpb25zQnlSZXZpc2lv
bnMoaXRlcmF0aW9uMSwgaXRlcmF0aW9uMikgPiAwLCAiY29tcGFyZUl0ZXJhdGlvbnNCeVJldmlz
aW9uczogZ3JlYXRlciB0aGFuIik7CiAgICAgc3RyaWN0RXF1YWwodGhpcy5xdWV1ZS5jb21wYXJl
SXRlcmF0aW9uc0J5UmV2aXNpb25zKGl0ZXJhdGlvbjIsIGl0ZXJhdGlvbjIpLCAwLCAiY29tcGFy
ZUl0ZXJhdGlvbnNCeVJldmlzaW9uczogZXF1YWwiKTsKLX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKK30pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279403</attachid>
            <date>2016-05-19 10:43:38 -0700</date>
            <delta_ts>2016-05-24 12:58:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156595-20160519104437.patch</filename>
            <type>text/plain</type>
            <size>36092</size>
            <attacher name="Srinivasan Vijayaraghavan">webkit</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwMTE3MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU3IEBACisyMDE2LTA1LTE5ICBTcmluaXZhc2FuIFZpamF5YXJhZ2hhdmFuICA8c3ZpamF5
YXJhZ2hhdmFuQGFwcGxlLmNvbT4KKworICAgICAgICBEaXNwbGF5IGZhaWxpbmcgSlNDIHN0cmVz
cyB0ZXN0cyBpbiBidWlsZGJvdCBkYXNoYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjU5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3QuanM6CisgICAg
ICAgIChCdWlsZGJvdC5wcm90b3R5cGUuamF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXNVUkxGb3JJ
dGVyYXRpb24pOiBHZW5lcmF0ZSB0aGUgVVJMIGZvciByYXcgSlNPTiBvdXRwdXQgb2YKKyAgICAg
ICAgSlNDIHRlc3RzLgorICAgICAgICAoQnVpbGRib3QucHJvdG90eXBlLmphdmFTY3JpcHRDb3Jl
VGVzdFN0ZGlvVVJMRm9ySXRlcmF0aW9uKTogR2VuZXJhdGUgdGhlIFVSTCBmb3IgaHVtYW4tcmVh
ZGFibGUgc3RkaW8gb3V0cHV0CisgICAgICAgIG9mIEpTQyB0ZXN0cy4KKyAgICAgICAgKiBCdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvU2NyaXB0cy9CdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3LmpzOgorICAgICAgICAoQnVpbGRi
b3RDb21iaW5lZFF1ZXVlVmlldy5wcm90b3R5cGUudXBkYXRlKTogRGlzcGxheSBKU0MgdGVzdCBy
ZXN1bHRzIGluIHBvcG92ZXIuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RJdGVy
YXRpb24uanM6CisgICAgICAgIChCdWlsZGJvdEl0ZXJhdGlvbik6IEFkZCBqYXZhU2NyaXB0Q29y
ZVRlc3RSZXN1bHRzIHZhcmlhYmxlLgorICAgICAgICAoQnVpbGRib3RJdGVyYXRpb24ucHJvdG90
eXBlLik6IENoZWNrIGZvciBqYXZhc2NyaXB0Y29yZSB0ZXN0cyBzdGVwLgorICAgICAgICAoQnVp
bGRib3RJdGVyYXRpb24ucHJvdG90eXBlLmxvYWRMYXlvdXRUZXN0UmVzdWx0cyk6IEFkZCBjb21t
YSBhdCBjbG9zaW5nIGJyYWNlLgorICAgICAgICAoQnVpbGRib3RJdGVyYXRpb24ucHJvdG90eXBl
LmxvYWRKYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzKTogRmV0Y2ggSlNPTiBmcm9tIEJ1aWxkYm90
IHNlcnZlci4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmlldy5qczoK
KyAgICAgICAgKEJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZS5fYXBwZW5kUGVuZGluZ1Jldmlz
aW9uQ291bnQpOiBNb3ZlZCB0byBiYXNlIGNsYXNzLgorICAgICAgICAoQnVpbGRib3RRdWV1ZVZp
ZXcucHJvdG90eXBlLl9jcmVhdGVMb2FkaW5nSW5kaWNhdG9yKTogUmV1c2FibGUgZnVuY3Rpb24u
CisgICAgICAgIChCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUuX29uUG9wb3ZlckNvcHkpOiBS
ZXVzYWJsZSBjb3B5IGV2ZW50IGhhbmRsZXIgdG8gYWxsb3cgYWNjdXJhdGUgY29weWluZyBvZiB0
ZXh0CisgICAgICAgIGZyb20gcG9wb3ZlcnMuCisgICAgICAgIChCdWlsZGJvdFF1ZXVlVmlldy5w
cm90b3R5cGUuX3BvcG92ZXJDb250ZW50Rm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnMp
OiBHZW5lcmF0ZXMgdGhlIHBvcG92ZXIgYnViYmxlJ3MKKyAgICAgICAgaW5uZXIgSFRNTCBmcm9t
IHRoZSBKU0MgZmFpbHVyZSBkYXRhLgorICAgICAgICAoQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90
eXBlLl9wcmVzZW50UG9wb3ZlckZvckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jlc3Npb25zKTogR2Vu
ZXJhdGUgdGhlIHBvcG92ZXIgYnViYmxlCisgICAgICAgIGZvciBKU0MgcmVzdWx0cyBhbmQgaGFu
ZGxlIHJlcXVlc3QgZmFpbHVyZXMuCisgICAgICAgIChCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5
cGUuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKTogTW92ZSB0byBzdXBlcmNsYXNzLgorICAg
ICAgICAoQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlw
dGlvbldpdGhDb3VudCk6IE1vdmUgdG8gc3VwZXJjbGFzcy4KKyAgICAgICAgKiBCdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2Ny
aXB0cy9CdWlsZGJvdFRlc3RSZXN1bHRzLmpzOgorICAgICAgICAoQnVpbGRib3RUZXN0UmVzdWx0
cy5wcm90b3R5cGUuYWRkSmF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXMpOiBQYXJzZSBKU09OIGlu
dG8gYSBsaXN0IG9mIGZhaWxpbmcgdGVzdHMuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVp
bGRib3RUZXN0ZXJRdWV1ZVZpZXcuanM6CisgICAgICAgIChCdWlsZGJvdFRlc3RlclF1ZXVlVmll
dy5wcm90b3R5cGUuYXBwZW5kQnVpbGRlclF1ZXVlU3RhdHVzKTogSW5zdGFudGlhdGUgUG9wb3Zl
clRyYWNrZXJzIGZvciBidWlsZHMgd2hvc2UgCisgICAgICAgIG9ubHkgZmFpbHVyZXMgYXJlIEpT
QyB0ZXN0cy4KKyAgICAgICAgKEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZS5fcG9w
b3ZlckNvbnRlbnRGb3JMYXlvdXRUZXN0UmVncmVzc2lvbnMpOiBVc2UgX29uUG9wb3ZlckNvcHku
CisgICAgICAgIChCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUuX3ByZXNlbnRQb3Bv
dmVyRm9yTGF5b3V0VGVzdFJlZ3Jlc3Npb25zKTogVXNlIF9jcmVhdGVMb2FkaW5nSW5kaWNhdG9y
LgorICAgICAgICAoQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlLl90ZXN0U3RlcEZh
aWx1cmVEZXNjcmlwdGlvbik6IERlbGV0ZWQuIE1vdmVkIHRvIHN1cGVyY2xhc3MuCisgICAgICAg
IChCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUuX3Rlc3RTdGVwRmFpbHVyZURlc2Ny
aXB0aW9uV2l0aENvdW50KTogRGVsZXRlZC4gTW92ZWQgdG8gc3VwZXJjbGFzcy4KKyAgICAgICAg
KEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZS5jb250ZW50Lm9uY29weSk6IERlbGV0
ZWQuIFVzaW5nIHN1cGVyY2xhc3MncyByZXVzYWJsZSBmdW5jdGlvbiBhcyBjb3B5IGhhbmRsZXIg
aW5zdGVhZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9pbmRleC5odG1sOiBBZGQg
bmV3IHNjcmlwdCBmaWxlcy4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJj
ZXMvTW9ja0J1aWxkYm90LmpzOiBBZGRlZC4KKyAgICAgICAgKE1vY2tCdWlsZGJvdCk6IE1vY2tl
ZCB2ZXJzaW9uIG9mIEJ1aWxkYm90LCBvbmx5IGNvbnRhaW5pbmcgVVJMIG1ldGhvZHMuCisgICAg
ICAgIChNb2NrQnVpbGRib3QucHJvdG90eXBlLmJ1aWxkUGFnZVVSTEZvckl0ZXJhdGlvbik6IFNh
bWUgYXMgcmVhbCBCdWlsZGJvdC5qcworICAgICAgICAoTW9ja0J1aWxkYm90LnByb3RvdHlwZS5q
YXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlc1VSTEZvckl0ZXJhdGlvbik6IFBvaW50cyB0byBsb2Nh
bCBmaWxlIGNvbnRhaW5pbmcgSlNPTiBmb3IgdGVzdC4KKyAgICAgICAgKE1vY2tCdWlsZGJvdC5w
cm90b3R5cGUuamF2YVNjcmlwdENvcmVUZXN0U3RkaW9VUkxGb3JJdGVyYXRpb24pOiBTYW1lIGFz
IHJlYWwgQnVpbGRib3QuanMKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJj
ZXMvTW9ja0J1aWxkYm90UXVldWUuanM6CisgICAgICAgIChNb2NrQnVpbGRib3RRdWV1ZSk6IFVz
ZSBhIE1vY2tCdWlsZGJvdCgpIGluc3RlYWQgb2YgYSBzdHJpbmcuCisgICAgICAgICogQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJvdFRlc3RSZXN1bHRzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKE1vY2tCdWlsZGJvdFRlc3RSZXN1bHRzKTogTW9ja2VkIHZlcnNpb24gb2Yg
QnVpbGRib3RUZXN0UmVzdWx0cy4KKyAgICAgICAgKE1vY2tCdWlsZGJvdFRlc3RSZXN1bHRzLnBy
b3RvdHlwZS5hZGRKYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlcyk6IFNldHMgdGhlICdyZWdyZXNz
aW9ucycgdmFyaWFibGUsIHdpdGhvdXQgY2hlY2tpbmcgYXNzZXJ0aW9ucy4KKyAgICAgICAgKiBC
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVzdC1qc2MtcmVzdWx0cy5qc29uOiBBZGRl
ZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVzdHMuanM6IEFk
ZCBmb3VyIGdyb3VwcyBvZiB0ZXN0cy4KKwogMjAxNi0wNS0xOSAgQ3NhYmEgT3N6dHJvZ29uw6Fj
ICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtFRkxdIEZpeCB0aGUgZ3N0LWxpYmF2IGJ1
aWxkIG9uIEFSTSBUaHVtYjIgYWZ0ZXIgcjE5OTY0OQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Njcmlw
dHMvQnVpbGRib3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRi
b3QuanMJKHJldmlzaW9uIDIwMDQyNykKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUxLDYgKzE1MSwxNiBAQCBCdWlsZGJvdC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiYnVpbGRlcnMvIiArIGVuY29k
ZVVSSUNvbXBvbmVudChpdGVyYXRpb24ucXVldWUuaWQpICsgIi9idWlsZHMvIiArIGl0ZXJhdGlv
bi5pZDsKICAgICB9LAogCisgICAgamF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXNVUkxGb3JJdGVy
YXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmJh
c2VVUkwgKyAiYnVpbGRlcnMvIiArIGVuY29kZVVSSUNvbXBvbmVudChpdGVyYXRpb24ucXVldWUu
aWQpICsgIi9idWlsZHMvIiArIGl0ZXJhdGlvbi5pZCArICIvc3RlcHMvanNjb3JlLXRlc3QvbG9n
cy9qc29uL3RleHQiOworICAgIH0sCisKKyAgICBqYXZhU2NyaXB0Q29yZVRlc3RTdGRpb1VSTEZv
ckl0ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuYmFzZVVSTCArICJidWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5x
dWV1ZS5pZCkgKyAiL2J1aWxkcy8iICsgaXRlcmF0aW9uLmlkICsgIi9zdGVwcy9qc2NvcmUtdGVz
dC9sb2dzL3N0ZGlvIjsKKyAgICB9LAorCiAgICAgbGF5b3V0VGVzdFJlc3VsdHNEaXJlY3RvcnlV
UkxGb3JJdGVyYXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlvbikKICAgICB7CiAgICAgICAgIHZhciB1
bmRlcnNjb3JlU2VwYXJhdGVkUmV2aXNpb25zID0gInIiOwpJbmRleDogVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Nj
cmlwdHMvQnVpbGRib3RDb21iaW5lZFF1ZXVlVmlldy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvU2NyaXB0cy9CdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3LmpzCShyZXZpc2lvbiAyMDA0
MjcpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3Lmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNyw5ICsxMDcsMTQgQEAgQnVpbGRib3RDb21i
aW5lZFF1ZXVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgaWYgKGZpcnN0UmVj
ZW50VW5zdWNjZXNzZnVsSXRlcmF0aW9uICYmIGZpcnN0UmVjZW50VW5zdWNjZXNzZnVsSXRlcmF0
aW9uLmxvYWRlZCAmJiBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24gJiYgbW9zdFJlY2VudEZp
bmlzaGVkSXRlcmF0aW9uLmxvYWRlZCkgewogICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmFz
c2VydCghbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLnN1Y2Nlc3NmdWwpOwogICAgICAgICAg
ICAgICAgICAgICB2YXIgbWVzc2FnZSA9IHRoaXMucmV2aXNpb25Db250ZW50Rm9ySXRlcmF0aW9u
KG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbiwgbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9u
LnByb2R1Y3RpdmUgPyBtb3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbiA6IG51bGwpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoIW1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi5wcm9kdWN0
aXZlKQorICAgICAgICAgICAgICAgICAgICBpZiAoIW1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlv
bi5wcm9kdWN0aXZlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gU3Rh
dHVzTGluZVZpZXcuU3RhdHVzLkRhbmdlcjsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9u
LmZhaWxlZFRlc3RTdGVwcy5sZW5ndGggPT09IDEgJiYgbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0
aW9uLmZhaWxlZFRlc3RTdGVwc1swXS5uYW1lID09PSAianNjb3JlLXRlc3QiKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgZmFpbGVkU3RlcCA9IG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJh
dGlvbi5mYWlsZWRUZXN0U3RlcHNbMF07CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3Rh
dHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2UsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5C
YWQsIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0ZXApLCBmYWlsZWRT
dGVwLmZhaWx1cmVDb3VudCwgbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLnF1ZXVlLmJ1aWxk
Ym90LmphdmFTY3JpcHRDb3JlVGVzdFN0ZGlvVVJMRm9ySXRlcmF0aW9uKG1vc3RSZWNlbnRGaW5p
c2hlZEl0ZXJhdGlvbikpOworICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFBvcG92ZXJUcmFj
a2VyKHN0YXR1cy5zdGF0dXNCdWJibGVFbGVtZW50LCB0aGlzLl9wcmVzZW50UG9wb3ZlckZvckph
dmFTY3JpcHRDb3JlVGVzdFJlZ3Jlc3Npb25zLmJpbmQodGhpcyksIG1vc3RSZWNlbnRGaW5pc2hl
ZEl0ZXJhdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEaXJlY3QgbGlu
a3MgdG8gc29tZSBjb21tb24gbG9ncy4KICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwg
PSBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24uZmFpbHVyZUxvZ1VSTCgiYnVpbGQgbG9nIik7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVybCkKSW5kZXg6IFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9T
Y3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9T
Y3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpzCShyZXZpc2lvbiAyMDA0MjcpCisrKyBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvU2NyaXB0cy9CdWlsZGJvdEl0ZXJhdGlvbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0LCAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDYsNiArNDYsNyBAQCBCdWlsZGJvdEl0ZXJhdGlvbiA9IGZ1bmN0aW9uKHF1ZXVlLCBk
YXRhCiAgICAgdGhpcy5yZXZpc2lvbiA9IHt9OwogCiAgICAgdGhpcy5sYXlvdXRUZXN0UmVzdWx0
cyA9IG51bGw7IC8vIExheW91dCB0ZXN0IHJlc3VsdHMgY2FuIGJlIG5lZWRlZCBldmVuIGlmIGFs
bCB0ZXN0cyBwYXNzZWQsIGUuZy4gZm9yIHRoZSBsZWFrcyBib3QuCisgICAgdGhpcy5qYXZhU2Ny
aXB0Q29yZVRlc3RSZXN1bHRzID0gbnVsbDsKIAogICAgIHRoaXMuZmFpbGVkVGVzdFN0ZXBzID0g
W107CiAKQEAgLTI1MCw2ICsyNTEsOCBAQCBCdWlsZGJvdEl0ZXJhdGlvbi5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IG5ldyBCdWlsZGJvdFRlc3RSZXN1bHRzKHN0ZXAp
OwogICAgICAgICAgICAgaWYgKHN0ZXAubmFtZSA9PT0gImxheW91dC10ZXN0IikKICAgICAgICAg
ICAgICAgICB0aGlzLmxheW91dFRlc3RSZXN1bHRzID0gcmVzdWx0czsKKyAgICAgICAgICAgIGVs
c2UgaWYgKHN0ZXAubmFtZSA9PT0gImpzY29yZS10ZXN0IikKKyAgICAgICAgICAgICAgICB0aGlz
LmphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMgPSByZXN1bHRzOwogICAgICAgICAgICAgaWYgKHJl
c3VsdHMuYWxsUGFzc2VkKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIHRo
aXMuZmFpbGVkVGVzdFN0ZXBzLnB1c2gocmVzdWx0cyk7CkBAIC0zNTMsNSArMzU2LDI1IEBAIEJ1
aWxkYm90SXRlcmF0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNvbnNvbGUubG9nKGRh
dGEuZXJyb3IpOwogICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgfS5iaW5kKHRoaXMp
LCB7anNvbnBDYWxsYmFja05hbWU6ICJBRERfUkVTVUxUUyIsIHdpdGhDcmVkZW50aWFsczogdGhp
cy5xdWV1ZS5idWlsZGJvdC5uZWVkc0F1dGhlbnRpY2F0aW9ufSk7Ci0gICAgfQorICAgIH0sCisK
KyAgICBsb2FkSmF2YVNjcmlwdENvcmVUZXN0UmVzdWx0czogZnVuY3Rpb24oY2FsbGJhY2spCisg
ICAgeworICAgICAgICBpZiAodGhpcy5xdWV1ZS5idWlsZGJvdC5uZWVkc0F1dGhlbnRpY2F0aW9u
ICYmIHRoaXMucXVldWUuYnVpbGRib3QuYXV0aGVudGljYXRpb25TdGF0dXMgPT09IEJ1aWxkYm90
LkF1dGhlbnRpY2F0aW9uU3RhdHVzLkludmFsaWRDcmVkZW50aWFscykKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBKU09OLmxvYWQodGhpcy5xdWV1ZS5idWlsZGJvdC5qYXZhU2NyaXB0
Q29yZVRlc3RGYWlsdXJlc1VSTEZvckl0ZXJhdGlvbih0aGlzKSwgZnVuY3Rpb24oZGF0YSkgewor
ICAgICAgICAgICAgdGhpcy5xdWV1ZS5idWlsZGJvdC5pc0F1dGhlbnRpY2F0ZWQgPSB0cnVlOwor
ICAgICAgICAgICAgdGhpcy5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzLmFkZEphdmFTY3JpcHRD
b3JlVGVzdEZhaWx1cmVzKGRhdGEpOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAg
fS5iaW5kKHRoaXMpLAorICAgICAgICBmdW5jdGlvbihkYXRhKSB7CisgICAgICAgICAgICBpZiAo
ZGF0YS5lcnJvclR5cGUgPT09IEpTT04uTG9hZEVycm9yICYmIGRhdGEuZXJyb3JIVFRQQ29kZSA9
PT0gNDAxKSB7CisgICAgICAgICAgICAgICAgdGhpcy5xdWV1ZS5idWlsZGJvdC5pc0F1dGhlbnRp
Y2F0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhCdWlsZGJvdEl0ZXJhdGlvbi5FdmVudC5VbmF1dGhvcml6ZWRBY2Nlc3MpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YS5lcnJvcik7CisgICAgICAgICAg
ICBjYWxsYmFjaygpOworICAgICAgICB9LmJpbmQodGhpcyksIHt3aXRoQ3JlZGVudGlhbHM6IHRo
aXMucXVldWUuYnVpbGRib3QubmVlZHNBdXRoZW50aWNhdGlvbn0pOworICAgIH0sCiB9OwpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RRdWV1ZVZpZXcuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RRdWV1ZVZpZXcuanMJKHJldmlzaW9uIDIw
MDQyNykKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90UXVldWVWaWV3LmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMTMsNiArMTEzLDc4IEBAIEJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgbmV3IFBvcG92ZXJUcmFja2VyKG1lc3NhZ2VFbGVtZW50LCB0aGlzLl9wcmVz
ZW50UG9wb3ZlckZvclBlbmRpbmdDb21taXRzLmJpbmQodGhpcyksIHF1ZXVlKTsKICAgICB9LAog
CisgICAgX2NyZWF0ZUxvYWRpbmdJbmRpY2F0b3I6IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgaGVhZGlu
ZykgeworICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9ICJ0ZXN0LXJlc3VsdHMtcG9wb3ZlciI7CisK
KyAgICAgICAgdGhpcy5fYWRkSXRlcmF0aW9uSGVhZGluZ1RvUG9wb3ZlcihpdGVyYXRpb24sIGNv
bnRlbnQsIGhlYWRpbmcpOworICAgICAgICB0aGlzLl9hZGREaXZpZGVyVG9Qb3BvdmVyKGNvbnRl
bnQpOworCisgICAgICAgIHZhciBsb2FkaW5nSW5kaWNhdG9yID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgICAgIGxvYWRpbmdJbmRpY2F0b3IuY2xhc3NOYW1lID0gImxvYWRp
bmctaW5kaWNhdG9yIjsKKyAgICAgICAgbG9hZGluZ0luZGljYXRvci50ZXh0Q29udGVudCA9ICJM
b2FkaW5nXHUyMDI2IjsKKyAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChsb2FkaW5nSW5kaWNh
dG9yKTsKKworICAgICAgICByZXR1cm4gY29udGVudDsKKyAgICB9LAorCisgICAgLy8gV29yayBh
cm91bmQgYnVnIDgwMTU5OiAtd2Via2l0LXVzZXItc2VsZWN0Om5vbmUgbm90IHJlc3BlY3RlZCB3
aGVuIGNvcHlpbmcgY29udGVudC4KKyAgICAvLyBXZSBzZXQgY2xpcGJvYXJkIGRhdGEgbWFudWFs
bHksIHRlbXBvcmFyaWx5IG1ha2luZyBub24tc2VsZWN0YWJsZSBjb250ZW50IGhpZGRlbgorICAg
IC8vIHRvIGVhc2lseSBnZXQgYWNjdXJhdGUgc2VsZWN0aW9uIHRleHQuCisgICAgX29uUG9wb3Zl
ckNvcHk6IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHZhciBpdGVyYXRvciA9IGRvY3VtZW50
LmNyZWF0ZU5vZGVJdGVyYXRvcigKKyAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQsCisg
ICAgICAgICAgICBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBhY2NlcHROb2RlOiBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS53ZWJraXRVc2VyU2Vs
ZWN0ICE9PSAibm9uZSIpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUZpbHRl
ci5GSUxURVJfQUNDRVBUOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5G
SUxURVJfU0tJUDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICk7
CisKKyAgICAgICAgd2hpbGUgKChub2RlID0gaXRlcmF0b3IubmV4dE5vZGUoKSkpCisgICAgICAg
ICAgICBub2RlLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7CisKKyAgICAgICAgZXZlbnQu
Y3VycmVudFRhcmdldC5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgICAgIGV2ZW50
LmNsaXBib2FyZERhdGEuc2V0RGF0YSgndGV4dCcsIHdpbmRvdy5nZXRTZWxlY3Rpb24oKSk7Cisg
ICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuc3R5bGUudmlzaWJpbGl0eSA9ICIiOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfSwKKworICAgIF9wb3BvdmVyQ29udGVudEZvckphdmFTY3Jp
cHRDb3JlVGVzdFJlZ3Jlc3Npb25zOiBmdW5jdGlvbihpdGVyYXRpb24pCisgICAgeworICAgICAg
ICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBj
b250ZW50LmNsYXNzTmFtZSA9ICJ0ZXN0LXJlc3VsdHMtcG9wb3ZlciI7CisKKyAgICAgICAgdGhp
cy5fYWRkSXRlcmF0aW9uSGVhZGluZ1RvUG9wb3ZlcihpdGVyYXRpb24sIGNvbnRlbnQsICJqYXZh
c2NyaXB0Y29yZSB0ZXN0IGZhaWx1cmVzIik7CisgICAgICAgIHRoaXMuX2FkZERpdmlkZXJUb1Bv
cG92ZXIoY29udGVudCk7CisKKyAgICAgICAgaWYgKCFpdGVyYXRpb24uamF2YVNjcmlwdENvcmVU
ZXN0UmVzdWx0cy5yZWdyZXNzaW9ucykgeworICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgIG1lc3NhZ2UuY2xhc3NOYW1l
ID0gImxvYWRpbmctZmFpbHVyZSI7CisgICAgICAgICAgICBtZXNzYWdlLnRleHRDb250ZW50ID0g
IlRlc3QgcmVzdWx0cyBjb3VsZG5cdTIwMTl0IGJlIGxvYWRlZCI7CisgICAgICAgICAgICBjb250
ZW50LmFwcGVuZENoaWxkKG1lc3NhZ2UpOworICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7Cisg
ICAgICAgIH0KKworICAgICAgICB2YXIgcmVncmVzc2lvbnMgPSBpdGVyYXRpb24uamF2YVNjcmlw
dENvcmVUZXN0UmVzdWx0cy5yZWdyZXNzaW9uczsKKworICAgICAgICBmb3IgKHZhciBpID0gMCwg
ZW5kID0gcmVncmVzc2lvbnMubGVuZ3RoOyBpICE9IGVuZDsgKytpKSB7CisgICAgICAgICAgICB2
YXIgdGVzdCA9IHJlZ3Jlc3Npb25zW2ldOworICAgICAgICAgICAgdmFyIHJvd0VsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgIHZhciB0ZXN0UGF0aEVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICB0ZXN0
UGF0aEVsZW1lbnQuY2xhc3NOYW1lID0gInRlc3QtcGF0aCI7CisgICAgICAgICAgICB0ZXN0UGF0
aEVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXN0OworICAgICAgICAgICAgcm93RWxlbWVudC5hcHBl
bmRDaGlsZCh0ZXN0UGF0aEVsZW1lbnQpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGls
ZChyb3dFbGVtZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnRlbnQub25jb3B5ID0gdGhp
cy5fb25Qb3BvdmVyQ29weTsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnQ7CisgICAgfSwKKwogICAg
IF9wb3BvdmVyTGluZXNGb3JDb21taXRSYW5nZTogZnVuY3Rpb24odHJhYywgYnJhbmNoLCBmaXJz
dFJldmlzaW9uTnVtYmVyLCBsYXN0UmV2aXNpb25OdW1iZXIpCiAgICAgewogICAgICAgICBmdW5j
dGlvbiBsaW5lRm9yQ29tbWl0KHRyYWMsIGNvbW1pdCkKQEAgLTE1MCw2ICsyMjIsMjMgQEAgQnVp
bGRib3RRdWV1ZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9LCB0aGlzKS5yZXZlcnNlKCk7
CiAgICAgfSwKIAorICAgIF9wcmVzZW50UG9wb3ZlckZvckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jl
c3Npb25zOiBmdW5jdGlvbihlbGVtZW50LCBwb3BvdmVyLCBpdGVyYXRpb24pCisgICAgeworICAg
ICAgICBpZiAoaXRlcmF0aW9uLmphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMucmVncmVzc2lvbnMp
CisgICAgICAgICAgICB2YXIgY29udGVudCA9IHRoaXMuX3BvcG92ZXJDb250ZW50Rm9ySmF2YVNj
cmlwdENvcmVUZXN0UmVncmVzc2lvbnMoaXRlcmF0aW9uKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICB2YXIgY29udGVudCA9IHRoaXMuX2NyZWF0ZUxvYWRpbmdJbmRpY2F0b3IoaXRlcmF0
aW9uLCAiamF2YXNjcmlwdGNvcmUgdGVzdCBmYWlsdXJlcyIpOworICAgICAgICAgICAgaXRlcmF0
aW9uLmxvYWRKYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzKGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIHBvcG92ZXIuY29udGVudCA9IHRoaXMuX3BvcG92ZXJDb250ZW50Rm9ySmF2YVNjcmlw
dENvcmVUZXN0UmVncmVzc2lvbnMoaXRlcmF0aW9uKTsKKyAgICAgICAgICAgIH0uYmluZCh0aGlz
KSk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgcmVjdCA9IERhc2hib2FyZC5SZWN0LnJlY3RG
cm9tQ2xpZW50UmVjdChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsKKyAgICAgICAg
cG9wb3Zlci5jb250ZW50ID0gY29udGVudDsKKyAgICAgICAgcG9wb3Zlci5wcmVzZW50KHJlY3Qs
IFtEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1ksIERhc2hib2FyZC5SZWN0RWRnZS5NQVhfWSwgRGFz
aGJvYXJkLlJlY3RFZGdlLk1BWF9YLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1hdKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfSwKKwogICAgIF9wcmVzZW50UG9wb3ZlckZvclBlbmRpbmdD
b21taXRzOiBmdW5jdGlvbihlbGVtZW50LCBwb3BvdmVyLCBxdWV1ZSkKICAgICB7CiAgICAgICAg
IHZhciBsYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uID0gdGhpcy5fbGF0ZXN0UHJvZHVjdGl2ZUl0
ZXJhdGlvbihxdWV1ZSk7CkBAIC0zMTQsNiArNDAzLDI3IEBAIEJ1aWxkYm90UXVldWVWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGZyYWdtZW50OwogICAgIH0sCiAKKyAgICBfdGVz
dFN0ZXBGYWlsdXJlRGVzY3JpcHRpb246IGZ1bmN0aW9uKGZhaWxlZFN0ZXApCisgICAgeworICAg
ICAgICBpZiAoIWZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50KQorICAgICAgICAgICAgcmV0dXJuIEJ1
aWxkYm90SXRlcmF0aW9uLlRlc3RTdGVwc1tmYWlsZWRTdGVwLm5hbWVdICsgIiBmYWlsZWQiOwor
ICAgICAgICBpZiAoZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQgPT09IDEpCisgICAgICAgICAgICBy
ZXR1cm4gQnVpbGRib3RJdGVyYXRpb24uVGVzdFN0ZXBzW2ZhaWxlZFN0ZXAubmFtZV0gKyAiIGZh
aWx1cmUiOworICAgICAgICByZXR1cm4gQnVpbGRib3RJdGVyYXRpb24uVGVzdFN0ZXBzW2ZhaWxl
ZFN0ZXAubmFtZV0gKyAiIGZhaWx1cmVzIjsKKyAgICB9LAorCisgICAgX3Rlc3RTdGVwRmFpbHVy
ZURlc2NyaXB0aW9uV2l0aENvdW50OiBmdW5jdGlvbihmYWlsZWRTdGVwKQorICAgIHsKKyAgICAg
ICAgaWYgKCFmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCkKKyAgICAgICAgICAgIHJldHVybiB0aGlz
Ll90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbihmYWlsZWRTdGVwKTsKKyAgICAgICAgaWYgKGZh
aWxlZFN0ZXAudG9vTWFueUZhaWx1cmVzKSB7CisgICAgICAgICAgICAvLyBFLmcuICI1MCsgbGF5
b3V0IHRlc3QgZmFpbHVyZXMiLCBwcmV2ZW50aW5nIGxpbmUgYnJlYWtzIGFyb3VuZCB0aGUgIisi
LgorICAgICAgICAgICAgcmV0dXJuIGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50ICsgIlx1ZmVmZlx1
ZmYwYlx1MDBhMCIgKyB0aGlzLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbihmYWlsZWRTdGVw
KTsKKyAgICAgICAgfQorICAgICAgICAvLyBFLmcuICIxIGxheW91dCB0ZXN0IGZhaWx1cmUiLCBw
cmV2ZW50aW5nIGxpbmUgYnJlYWsgYWZ0ZXIgdGhlIG51bWJlci4KKyAgICAgICAgcmV0dXJuIGZh
aWxlZFN0ZXAuZmFpbHVyZUNvdW50ICsgIlx1MDBhMCIgKyB0aGlzLl90ZXN0U3RlcEZhaWx1cmVE
ZXNjcmlwdGlvbihmYWlsZWRTdGVwKTsKKyAgICB9LAorCiAgICAgYXBwZW5kQnVpbGRTdHlsZTog
ZnVuY3Rpb24ocXVldWVzLCBkZWZhdWx0TGFiZWwsIGFwcGVuZEZ1bmN0aW9uKQogICAgIHsKICAg
ICAgICAgcXVldWVzLmZvckVhY2goZnVuY3Rpb24ocXVldWUpIHsKSW5kZXg6IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL0J1aWxkYm90VGVzdFJlc3VsdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0UmVzdWx0cy5qcwkocmV2aXNpb24gMjAwNDI3KQorKysg
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0UmVzdWx0cy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTg0LDQgKzE4NCwxMCBAQCBCdWlsZGJvdFRlc3RSZXN1bHRzLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgLy8gYmVjYXVzZSBidWlsZGJvdCBjb3VudHMgcmVncmVzc2lvbnMgdGhhdCBoYWQgbWlz
c2luZyBwaXhlbCByZXN1bHRzIG9uIHJldHJ5IChlLmcuICJURVhUIE1JU1NJTkciKS4KICAgICAg
ICAgY29uc29sZS5hc3NlcnQoZGF0YS5udW1fbWlzc2luZyA+PSB0aGlzLnRlc3RzV2l0aE1pc3Np
bmdSZXN1bHRzLmxlbmd0aCk7CiAgICAgfSwKKworICAgIGFkZEphdmFTY3JpcHRDb3JlVGVzdEZh
aWx1cmVzOiBmdW5jdGlvbihkYXRhKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhp
cy5uYW1lID09PSAianNjb3JlLXRlc3QiKTsKKyAgICAgICAgdGhpcy5yZWdyZXNzaW9ucyA9IGRh
dGEuZmFpbHVyZXM7CisgICAgfSwKIH07CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWls
ZGJvdFRlc3RlclF1ZXVlVmlldy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0
cy9CdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5qcwkocmV2aXNpb24gMjAwNDI3KQorKysgVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCwgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTEwNSw2ICsxMDUsOSBAQCBCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChmYWlsZWRTdGVwLm5hbWUgPT09ICJs
YXlvdXQtdGVzdCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcg
U3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5CYWQs
IHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0ZXApLCBmYWlsZWRTdGVw
LnRvb01hbnlGYWlsdXJlcyA/IGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50ICsgIlx1ZmYwYiIgOiBm
YWlsZWRTdGVwLmZhaWx1cmVDb3VudCwgaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LmxheW91dFRl
c3RSZXN1bHRzVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNCdWJibGVFbGVtZW50LCB0aGlz
Ll9wcmVzZW50UG9wb3ZlckZvckxheW91dFRlc3RSZWdyZXNzaW9ucy5iaW5kKHRoaXMpLCBpdGVy
YXRpb24pOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZhaWxlZFN0ZXAubmFtZSA9
PT0gImpzY29yZS10ZXN0IikgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9
IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVz
LkJhZCwgdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24oZmFpbGVkU3RlcCksIGZhaWxl
ZFN0ZXAuZmFpbHVyZUNvdW50LCBpdGVyYXRpb24ucXVldWUuYnVpbGRib3QuamF2YVNjcmlwdENv
cmVUZXN0U3RkaW9VUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1c0J1YmJsZUVsZW1lbnQsIHRo
aXMuX3ByZXNlbnRQb3BvdmVyRm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnMuYmluZCh0
aGlzKSwgaXRlcmF0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVs
ZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5CYWQsIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURl
c2NyaXB0aW9uKGZhaWxlZFN0ZXApLCBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCA/IGZhaWxlZFN0
ZXAuZmFpbHVyZUNvdW50IDogdW5kZWZpbmVkLCBmYWlsZWRTdGVwLlVSTCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1c0J1YmJsZUVsZW1l
bnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9yR2VuZXJpY1Rlc3RGYWlsdXJlcy5iaW5kKHRoaXMp
LCBpdGVyYXRpb24pOwpAQCAtMTMwLDI3ICsxMzMsNiBAQCBCdWlsZGJvdFRlc3RlclF1ZXVlVmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuYXBwZW5kQnVpbGRTdHlsZS5jYWxsKHRoaXMs
IHRoaXMuZGVidWdRdWV1ZXMsICJEZWJ1ZyIsIGFwcGVuZEJ1aWxkZXJRdWV1ZVN0YXR1cyk7CiAg
ICAgfSwKIAotICAgIF90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbjogZnVuY3Rpb24oZmFpbGVk
U3RlcCkKLSAgICB7Ci0gICAgICAgIGlmICghZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQpCi0gICAg
ICAgICAgICByZXR1cm4gQnVpbGRib3RJdGVyYXRpb24uVGVzdFN0ZXBzW2ZhaWxlZFN0ZXAubmFt
ZV0gKyAiIGZhaWxlZCI7Ci0gICAgICAgIGlmIChmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCA9PT0g
MSkKLSAgICAgICAgICAgIHJldHVybiBCdWlsZGJvdEl0ZXJhdGlvbi5UZXN0U3RlcHNbZmFpbGVk
U3RlcC5uYW1lXSArICIgZmFpbHVyZSI7Ci0gICAgICAgIHJldHVybiBCdWlsZGJvdEl0ZXJhdGlv
bi5UZXN0U3RlcHNbZmFpbGVkU3RlcC5uYW1lXSArICIgZmFpbHVyZXMiOwotICAgIH0sCi0KLSAg
ICBfdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb25XaXRoQ291bnQ6IGZ1bmN0aW9uKGZhaWxlZFN0
ZXApCi0gICAgewotICAgICAgICBpZiAoIWZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50KQotICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0ZXAp
OwotICAgICAgICBpZiAoZmFpbGVkU3RlcC50b29NYW55RmFpbHVyZXMpIHsKLSAgICAgICAgICAg
IC8vIEUuZy4gIjUwKyBsYXlvdXQgdGVzdCBmYWlsdXJlcyIsIHByZXZlbnRpbmcgbGluZSBicmVh
a3MgYXJvdW5kIHRoZSAiKyIuCi0gICAgICAgICAgICByZXR1cm4gZmFpbGVkU3RlcC5mYWlsdXJl
Q291bnQgKyAiXHVmZWZmXHVmZjBiXHUwMGEwIiArIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2Ny
aXB0aW9uKGZhaWxlZFN0ZXApOwotICAgICAgICB9Ci0gICAgICAgIC8vIEUuZy4gIjEgbGF5b3V0
IHRlc3QgZmFpbHVyZSIsIHByZXZlbnRpbmcgbGluZSBicmVhayBhZnRlciB0aGUgbnVtYmVyLgot
ICAgICAgICByZXR1cm4gZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQgKyAiXHUwMGEwIiArIHRoaXMu
X3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0ZXApOwotICAgIH0sCi0KICAgICBf
cG9wb3ZlckNvbnRlbnRGb3JMYXlvdXRUZXN0UmVncmVzc2lvbnM6IGZ1bmN0aW9uKGl0ZXJhdGlv
bikKICAgICB7CiAgICAgICAgIHZhciBoYXNUZXN0SGlzdG9yeSA9IHR5cGVvZiB0ZXN0SGlzdG9y
eSAhPT0gInVuZGVmaW5lZCI7CkBAIC0yMjksMzEgKzIxMSw3IEBAIEJ1aWxkYm90VGVzdGVyUXVl
dWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQocm93
RWxlbWVudCk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBXb3JrIGFyb3VuZCBidWcgODAxNTk6
IC13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZSBub3QgcmVzcGVjdGVkIHdoZW4gY29weWluZyBjb250
ZW50LgotICAgICAgICAvLyBXZSBzZXQgY2xpcGJvYXJkIGRhdGEgbWFudWFsbHksIHRlbXBvcmFy
aWx5IG1ha2luZyBub24tc2VsZWN0YWJsZSBjb250ZW50IGhpZGRlbgotICAgICAgICAvLyB0byBl
YXNpbHkgZ2V0IGFjY3VyYXRlIHNlbGVjdGlvbiB0ZXh0LgotICAgICAgICBjb250ZW50Lm9uY29w
eSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICB2YXIgaXRlcmF0b3IgPSBkb2N1bWVu
dC5jcmVhdGVOb2RlSXRlcmF0b3IoCi0gICAgICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdl
dCwKLSAgICAgICAgICAgICAgICBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGFjY2VwdE5vZGU6IGZ1bmN0aW9uKGVsZW1lbnQp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShl
bGVtZW50KS53ZWJraXRVc2VyU2VsZWN0ICE9PSAibm9uZSIpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9TS0lQOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAg
d2hpbGUgKChub2RlID0gaXRlcmF0b3IubmV4dE5vZGUoKSkpCi0gICAgICAgICAgICAgICAgbm9k
ZS5zdHlsZS52aXNpYmlsaXR5ID0gInZpc2libGUiOwotCi0gICAgICAgICAgICBldmVudC5jdXJy
ZW50VGFyZ2V0LnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKLSAgICAgICAgICAgIGV2ZW50
LmNsaXBib2FyZERhdGEuc2V0RGF0YSgndGV4dCcsIHdpbmRvdy5nZXRTZWxlY3Rpb24oKSk7Ci0g
ICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnN0eWxlLnZpc2liaWxpdHkgPSAiIjsKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCisgICAgICAgIGNvbnRlbnQub25j
b3B5ID0gdGhpcy5fb25Qb3BvdmVyQ29weTsKICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7CiAgICAg
fSwKIApAQCAtMjYyLDE2ICsyMjAsNyBAQCBCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGlmIChpdGVyYXRpb24ubGF5b3V0VGVzdFJlc3VsdHMucmVncmVzc2lv
bnMpCiAgICAgICAgICAgICB2YXIgY29udGVudCA9IHRoaXMuX3BvcG92ZXJDb250ZW50Rm9yTGF5
b3V0VGVzdFJlZ3Jlc3Npb25zKGl0ZXJhdGlvbik7CiAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAg
ICAgIGNvbnRlbnQuY2xhc3NOYW1lID0gInRlc3QtcmVzdWx0cy1wb3BvdmVyIjsKLQotICAgICAg
ICAgICAgdGhpcy5fYWRkSXRlcmF0aW9uSGVhZGluZ1RvUG9wb3ZlcihpdGVyYXRpb24sIGNvbnRl
bnQsICJsYXlvdXQgdGVzdCBmYWlsdXJlcyIpOwotICAgICAgICAgICAgdGhpcy5fYWRkRGl2aWRl
clRvUG9wb3Zlcihjb250ZW50KTsKLQotICAgICAgICAgICAgdmFyIGxvYWRpbmdJbmRpY2F0b3Ig
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAgIGxvYWRpbmdJbmRp
Y2F0b3IuY2xhc3NOYW1lID0gImxvYWRpbmctaW5kaWNhdG9yIjsKLSAgICAgICAgICAgIGxvYWRp
bmdJbmRpY2F0b3IudGV4dENvbnRlbnQgPSAiTG9hZGluZ1x1MjAyNiI7Ci0gICAgICAgICAgICBj
b250ZW50LmFwcGVuZENoaWxkKGxvYWRpbmdJbmRpY2F0b3IpOworICAgICAgICAgICAgdmFyIGNv
bnRlbnQgPSB0aGlzLl9jcmVhdGVMb2FkaW5nSW5kaWNhdG9yKGl0ZXJhdGlvbiwgImxheW91dCB0
ZXN0IGZhaWx1cmVzIik7CiAKICAgICAgICAgICAgIGl0ZXJhdGlvbi5sb2FkTGF5b3V0VGVzdFJl
c3VsdHMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gdGhp
cy5fcG9wb3ZlckNvbnRlbnRGb3JMYXlvdXRUZXN0UmVncmVzc2lvbnMoaXRlcmF0aW9uKTsKSW5k
ZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL2luZGV4Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvaW5kZXguaHRtbAkocmV2aXNpb24gMjAwNDI3KQor
KysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvaW5kZXguaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtNjMsOCArNjMsMTAgQEAgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxz
Y3JpcHQgc3JjPSIuLi9UcmFjLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vLi4vLi4vLi4vU291cmNlL1RoaXJkUGFydHkvcXVuaXQvcXVuaXQvcXVuaXQuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvTW9ja1RyYWMuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvTW9ja0J1aWxkYm90LmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL01vY2tCdWlsZGJvdFF1ZXVlLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL01vY2tCdWlsZGJvdFF1ZXVlVmlldy5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9Nb2NrQnVpbGRib3RUZXN0UmVz
dWx0cy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0cy5qcyI+
PC9zY3JpcHQ+CiAKIDwvaGVhZD4KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jl
c291cmNlcy9Nb2NrQnVpbGRib3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Njcmlw
dHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJvdC5qcwkocmV2aXNpb24gMCkKKysrIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy9Nb2NrQnVpbGRib3QuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK01vY2tCdWlsZGJvdCA9IGZ1bmN0
aW9uKCkge307CisKK01vY2tCdWlsZGJvdC5wcm90b3R5cGUgPSB7CisgICAgY29uc3RydWN0b3I6
IE1vY2tCdWlsZGJvdCwKKworICAgIGJ1aWxkUGFnZVVSTEZvckl0ZXJhdGlvbjogZnVuY3Rpb24o
aXRlcmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArICJidWlsZGVy
cy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1ZS5pZCkgKyAiL2J1aWxkcy8i
ICsgaXRlcmF0aW9uLmlkOworICAgIH0sCisKKyAgICBqYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJl
c1VSTEZvckl0ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0
dXJuICJyZXNvdXJjZXMvdGVzdC1qc2MtcmVzdWx0cy5qc29uIjsKKyAgICB9LAorCisgICAgamF2
YVNjcmlwdENvcmVUZXN0U3RkaW9VUkxGb3JJdGVyYXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlvbikK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiYnVpbGRlcnMvIiArIGVuY29k
ZVVSSUNvbXBvbmVudChpdGVyYXRpb24ucXVldWUuaWQpICsgIi9idWlsZHMvIiArIGl0ZXJhdGlv
bi5pZCArICIvc3RlcHMvanNjb3JlLXRlc3QvbG9ncy9zdGRpbyI7CisKKyAgICB9LAorfQpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJvdFF1ZXVl
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy9N
b2NrQnVpbGRib3RRdWV1ZS5qcwkocmV2aXNpb24gMjAwNDI3KQorKysgVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Nj
cmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJvdFF1ZXVlLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw3ICszOSw3IEBAIE1vY2tCdWlsZGJvdFF1ZXVlID0gZnVuY3Rpb24oKQogICAgICAg
ICBoZWFkaW5nOiAiIiwKICAgICAgICAgY3Jhc2hlc09ubHk6ICIiCiAgICAgfTsKLSAgICBCdWls
ZGJvdFF1ZXVlLmNhbGwodGhpcywgIk1vY2sgQnVpbGRCb3QiLCAiaWQiLCBpbmZvKTsKKyAgICBC
dWlsZGJvdFF1ZXVlLmNhbGwodGhpcywgbmV3IE1vY2tCdWlsZGJvdCgpLCAiaWQiLCBpbmZvKTsK
IH07CiAKIEJhc2VPYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoTW9ja0J1aWxkYm90UXVl
dWUpOwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWls
ZGJvdFRlc3RSZXN1bHRzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rl
c3RzL3Jlc291cmNlcy9Nb2NrQnVpbGRib3RUZXN0UmVzdWx0cy5qcwkocmV2aXNpb24gMCkKKysr
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy9Nb2NrQnVpbGRib3RUZXN0UmVz
dWx0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworTW9j
a0J1aWxkYm90VGVzdFJlc3VsdHMgPSBmdW5jdGlvbigpIHt9OworCitNb2NrQnVpbGRib3RUZXN0
UmVzdWx0cy5wcm90b3R5cGUgPSB7CisgICAgY29uc3RydWN0b3I6IE1vY2tCdWlsZGJvdFRlc3RS
ZXN1bHRzLAorCisgICAgYWRkSmF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXM6IGZ1bmN0aW9uKGRh
dGEpCisgICAgeworICAgICAgICAgdGhpcy5yZWdyZXNzaW9ucyA9IGRhdGEuZmFpbHVyZXM7Cisg
ICAgfSwKK307CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVz
dC1qc2MtcmVzdWx0cy5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rl
c3RzL3Jlc291cmNlcy90ZXN0LWpzYy1yZXN1bHRzLmpzb24JKHJldmlzaW9uIDApCisrKyBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVzdC1qc2MtcmVzdWx0cy5qc29uCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEgQEAKK3siZmFpbHVyZXMiOlsibG9yZW0gaXBzdW0gZG9s
b3Igc2l0IGFtZXQiLCAiY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0IiwgInNlZCBkbyBlaXVz
bW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhIl19
CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVzdHMuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL3Rlc3RzLmpz
CShyZXZpc2lvbiAyMDA0MjcpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJj
ZXMvdGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTI2Myw2ICsyNjMsOTAgQEAgdGVzdCgiX2Zv
cm1hdFJldmlzaW9uRm9yRGlzcGxheSBHaXQiLCBmdQogICAgIHN0cmljdEVxdWFsKHRoaXMudmll
dy5fZm9ybWF0UmV2aXNpb25Gb3JEaXNwbGF5KCIwZTQ5OGRiNWQ4ZTViNWEzNDI2MzEiLCByZXBv
c2l0b3J5KSwgIjBlNDk4ZGIiLCAiU2hvdWxkIGJlIDBlNDk4ZGIiKTsKIH0pOwogCit0ZXN0KCJf
cG9wb3ZlckNvbnRlbnRGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucyBsb2FkIGZhaWx1
cmUgVUkgdGVzdCIsIGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgZmluaXNoZWQgPSBmYWxzZTsKKyAg
ICB2YXIgaXRlcmF0aW9uID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9uKHRoaXMucXVldWUsIDEsIGZp
bmlzaGVkKTsKKyAgICBpdGVyYXRpb24uamF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cyA9IG5ldyBN
b2NrQnVpbGRib3RUZXN0UmVzdWx0cygpOworCisgICAgdmFyIHZpZXcgPSBuZXcgQnVpbGRib3RR
dWV1ZVZpZXcoKTsKKyAgICB2YXIgY29udGVudCA9IHZpZXcuX3BvcG92ZXJDb250ZW50Rm9ySmF2
YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnMoaXRlcmF0aW9uKTsKKworICAgIHZhciBudW1DaGls
ZHJlbkluRW1wdHlQb3BvdmVyQ29udGVudCA9IDI7CisgICAgc3RyaWN0RXF1YWwoY29udGVudC5j
aGlsZE5vZGVzLmxlbmd0aCwgMSArIG51bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50KTsK
KyAgICBzdHJpY3RFcXVhbChjb250ZW50LmNoaWxkTm9kZXNbbnVtQ2hpbGRyZW5JbkVtcHR5UG9w
b3ZlckNvbnRlbnRdLmNsYXNzTmFtZSwgImxvYWRpbmctZmFpbHVyZSIsICJQb3BvdmVyIGZvciBs
b2FkaW5nIGZhaWx1cmUgbXVzdCBoYXZlIHRoZSBhcHByb3ByaWF0ZSBjbGFzcyIpOworICAgIHN0
cmljdEVxdWFsKGNvbnRlbnQuY2hpbGROb2Rlc1tudW1DaGlsZHJlbkluRW1wdHlQb3BvdmVyQ29u
dGVudF0udGV4dENvbnRlbnQsICJUZXN0IHJlc3VsdHMgY291bGRuXHUyMDE5dCBiZSBsb2FkZWQi
LCAiUG9wb3ZlciBmb3IgbG9hZGluZyBmYWlsdXJlIG11c3QgdXNlIHRoZSBjb3JyZWN0IHRleHQi
KTsKK30pOworCit0ZXN0KCJfcHJlc2VudFBvcG92ZXJGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdy
ZXNzaW9ucyBpbmNsdWRpbmcgbG9hZGluZyIsIGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgZmluaXNo
ZWQgPSBmYWxzZTsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgIHZhciBwb3BvdmVyID0gbmV3IERhc2hib2FyZC5Qb3BvdmVyKCk7CisgICAgdmFy
IGl0ZXJhdGlvbiA9IG5ldyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLnF1ZXVlLCAxLCBmaW5pc2hl
ZCk7CisgICAgaXRlcmF0aW9uLmphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMgPSBuZXcgTW9ja0J1
aWxkYm90VGVzdFJlc3VsdHMoKTsKKworICAgIHZhciB2aWV3ID0gbmV3IEJ1aWxkYm90UXVldWVW
aWV3KCk7CisgICAgdmlldy5fcHJlc2VudFBvcG92ZXJGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdy
ZXNzaW9ucyhlbGVtZW50LCBwb3BvdmVyLCBpdGVyYXRpb24pOworCisgICAgSlNPTi5sb2FkKCJy
ZXNvdXJjZXMvdGVzdC1qc2MtcmVzdWx0cy5qc29uIiwgZnVuY3Rpb24oZGF0YSkKKyAgICB7Cisg
ICAgICAgIHZhciB0ZXN0UmVncmVzc2lvbnMgPSBkYXRhLmZhaWx1cmVzOworICAgICAgICB2YXIg
bnVtQ2hpbGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnQgPSAyOworICAgICAgICBzdHJpY3RFcXVh
bChwb3BvdmVyLl9jb250ZW50LmNoaWxkTm9kZXMubGVuZ3RoIC0gbnVtQ2hpbGRyZW5JbkVtcHR5
UG9wb3ZlckNvbnRlbnQsCisgICAgICAgICAgICB0ZXN0UmVncmVzc2lvbnMubGVuZ3RoLAorICAg
ICAgICAgICAgIk51bWJlciBvZiBmYWlsdXJlcyBpbiBwb3BvdmVyIG11c3QgYmUgZXF1YWwgdG8g
bnVtYmVyIG9mIGZhaWxlZCB0ZXN0cyIpOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGVzdFJlZ3Jlc3Npb25zLmxlbmd0aDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBzdHJp
Y3RFcXVhbChwb3BvdmVyLl9jb250ZW50LmNoaWxkTm9kZXNbaStudW1DaGlsZHJlbkluRW1wdHlQ
b3BvdmVyQ29udGVudF0uY2hpbGROb2Rlc1swXS50ZXh0Q29udGVudCwKKyAgICAgICAgICAgICAg
ICB0ZXN0UmVncmVzc2lvbnNbaV0sCisgICAgICAgICAgICAgICAgIk5hbWVzIG9mIGZhaWx1cmVz
IG11c3QgbWF0Y2giCisgICAgICAgICAgICApOworICAgICAgICB9CisgICAgfSk7Cit9KTsKKwor
dGVzdCgiX2NyZWF0ZUxvYWRpbmdJbmRpY2F0b3IiLCBmdW5jdGlvbigpCit7CisgICAgdmFyIGZp
bmlzaGVkID0gZmFsc2U7CisgICAgdmFyIGl0ZXJhdGlvbiA9IG5ldyBCdWlsZGJvdEl0ZXJhdGlv
bih0aGlzLnF1ZXVlLCAxLCBmaW5pc2hlZCk7CisKKyAgICB2YXIgdmlldyA9IG5ldyBCdWlsZGJv
dFF1ZXVlVmlldygpOworICAgIHZhciBoZWFkaW5nID0gIkZhaXIgaXMgZm91bCwgYW5kIGZvdWwg
aXMgZmFpciI7CisgICAgdmFyIGNvbnRlbnQgPSB2aWV3Ll9jcmVhdGVMb2FkaW5nSW5kaWNhdG9y
KGl0ZXJhdGlvbiwgaGVhZGluZyk7CisKKyAgICB2YXIgbnVtQ2hpbGRyZW5JbkVtcHR5UG9wb3Zl
ckNvbnRlbnQgPSAyOworICAgIHN0cmljdEVxdWFsKGNvbnRlbnQuY2hpbGROb2Rlcy5sZW5ndGgs
IDEgKyBudW1DaGlsZHJlbkluRW1wdHlQb3BvdmVyQ29udGVudCk7CisgICAgc3RyaWN0RXF1YWwo
Y29udGVudC5jaGlsZE5vZGVzW251bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50XS5jbGFz
c05hbWUsICJsb2FkaW5nLWluZGljYXRvciIsICJQb3BvdmVyIGZvciBsb2FkaW5nIGluZGljYXRv
ciBtdXN0IGhhdmUgdGhlIGFwcHJvcHJpYXRlIGNsYXNzIik7CisgICAgc3RyaWN0RXF1YWwoY29u
dGVudC5jaGlsZE5vZGVzW251bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50XS50ZXh0Q29u
dGVudCwgIkxvYWRpbmdcdTIwMjYiLCAiUG9wb3ZlciBmb3IgbG9hZGluZyBmYWlsdXJlIG11c3Qg
dXNlIHRoZSBjb3JyZWN0IHRleHQiKTsKK30pOworCit0ZXN0KCJfcHJlc2VudFBvcG92ZXJGb3JK
YXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucyBhbHJlYWR5IGxvYWRlZCIsIGZ1bmN0aW9uKCkK
K3sKKyAgICB2YXIgZmluaXNoZWQgPSBmYWxzZTsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHZhciBwb3BvdmVyID0gbmV3IERhc2hib2FyZC5Q
b3BvdmVyKCk7CisgICAgdmFyIGl0ZXJhdGlvbiA9IG5ldyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlz
LnF1ZXVlLCAxLCBmaW5pc2hlZCk7CisgICAgaXRlcmF0aW9uLmphdmFTY3JpcHRDb3JlVGVzdFJl
c3VsdHMgPSB7InJlZ3Jlc3Npb25zIjogWyJ1bm8iLCAiZG9zIiwgInRyZXMiXX07CisKKyAgICB2
YXIgdmlldyA9IG5ldyBCdWlsZGJvdFF1ZXVlVmlldygpOworICAgIHZpZXcuX3ByZXNlbnRQb3Bv
dmVyRm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnMoZWxlbWVudCwgcG9wb3ZlciwgaXRl
cmF0aW9uKTsKKworICAgIHZhciBudW1DaGlsZHJlbkluRW1wdHlQb3BvdmVyQ29udGVudCA9IDI7
CisgICAgc3RyaWN0RXF1YWwocG9wb3Zlci5fY29udGVudC5jaGlsZE5vZGVzLmxlbmd0aCAtIG51
bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50LAorICAgICAgICBpdGVyYXRpb24uamF2YVNj
cmlwdENvcmVUZXN0UmVzdWx0cy5yZWdyZXNzaW9ucy5sZW5ndGgsCisgICAgICAgICJOdW1iZXIg
b2YgZmFpbHVyZXMgaW4gcG9wb3ZlciBtdXN0IGJlIGVxdWFsIHRvIG51bWJlciBvZiBmYWlsZWQg
dGVzdHMiKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcmF0aW9uLmphdmFTY3JpcHRD
b3JlVGVzdFJlc3VsdHMucmVncmVzc2lvbnMubGVuZ3RoOyBpKyspCisgICAgeworICAgICAgICBz
dHJpY3RFcXVhbChwb3BvdmVyLl9jb250ZW50LmNoaWxkTm9kZXNbaStudW1DaGlsZHJlbkluRW1w
dHlQb3BvdmVyQ29udGVudF0uY2hpbGROb2Rlc1swXS50ZXh0Q29udGVudCwKKyAgICAgICAgICAg
IGl0ZXJhdGlvbi5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzLnJlZ3Jlc3Npb25zW2ldLAorICAg
ICAgICAgICAgIk5hbWVzIG9mIGZhaWx1cmVzIG11c3QgbWF0Y2giCisgICAgICAgICk7CisgICAg
fQorfSk7CisKIG1vZHVsZSgiQnVpbGRCb3RRdWV1ZSIsIHsKICAgICBzZXR1cDogZnVuY3Rpb24o
KSB7CiAgICAgICAgIERhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYyA9IG5ldyBN
b2NrVHJhYygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279694</attachid>
            <date>2016-05-24 12:58:31 -0700</date>
            <delta_ts>2016-05-24 16:48:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156595-20160524125938.patch</filename>
            <type>text/plain</type>
            <size>42546</size>
            <attacher name="Srinivasan Vijayaraghavan">webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMzAzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTY5MGNjMjBiNmVkYjgzOWY4YjY3MzhlNTJlN2FlNmUx
ZDkyZTExZC4uY2M2YWM4ZTNmM2Y2Y2VjYmI1MGQ4ZWMxZGYxODgxZTk2M2E4M2RkYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2
IEBACisyMDE2LTA1LTIzICBTcmluaXZhc2FuIFZpamF5YXJhZ2hhdmFuICA8c3ZpamF5YXJhZ2hh
dmFuQGFwcGxlLmNvbT4KKworICAgICAgICBEaXNwbGF5IGZhaWxpbmcgSlNDIHN0cmVzcyB0ZXN0
cyBpbiBidWlsZGJvdCBkYXNoYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1NjU5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3QuanM6CisgICAgICAgIChC
dWlsZGJvdC5wcm90b3R5cGUuamF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXNVUkxGb3JJdGVyYXRp
b24pOiBHZW5lcmF0ZSB0aGUgVVJMIGZvciByYXcgSlNPTiBvdXRwdXQgb2YKKyAgICAgICAgSlND
IHRlc3RzLgorICAgICAgICAoQnVpbGRib3QucHJvdG90eXBlLmphdmFTY3JpcHRDb3JlVGVzdFN0
ZGlvVVJMRm9ySXRlcmF0aW9uKTogR2VuZXJhdGUgdGhlIFVSTCBmb3IgaHVtYW4tcmVhZGFibGUg
c3RkaW8gb3V0cHV0CisgICAgICAgIG9mIEpTQyB0ZXN0cy4KKyAgICAgICAgKiBCdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2Ny
aXB0cy9CdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3LmpzOgorICAgICAgICAoQnVpbGRib3RDb21i
aW5lZFF1ZXVlVmlldy5wcm90b3R5cGUudXBkYXRlKTogRGlzcGxheSBKU0MgdGVzdCByZXN1bHRz
IGluIHBvcG92ZXIuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RJdGVyYXRpb24u
anM6CisgICAgICAgIChCdWlsZGJvdEl0ZXJhdGlvbik6IEFkZCBqYXZhU2NyaXB0Q29yZVRlc3RS
ZXN1bHRzIHZhcmlhYmxlLgorICAgICAgICAoQnVpbGRib3RJdGVyYXRpb24ucHJvdG90eXBlLik6
IENoZWNrIGZvciBqYXZhc2NyaXB0Y29yZSB0ZXN0cyBzdGVwLgorICAgICAgICAoQnVpbGRib3RJ
dGVyYXRpb24ucHJvdG90eXBlLmxvYWRMYXlvdXRUZXN0UmVzdWx0cyk6IEFkZCBjb21tYSBhdCBj
bG9zaW5nIGJyYWNlLgorICAgICAgICAoQnVpbGRib3RJdGVyYXRpb24ucHJvdG90eXBlLmxvYWRK
YXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzKTogRmV0Y2ggSlNPTiBmcm9tIEJ1aWxkYm90IHNlcnZl
ci4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmlldy5qczoKKyAgICAg
ICAgKEJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZS5fY3JlYXRlTG9hZGluZ0luZGljYXRvcik6
IFJldXNhYmxlIGZ1bmN0aW9uLgorICAgICAgICAoQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBl
Ll9vblBvcG92ZXJDb3B5KTogUmV1c2FibGUgY29weSBldmVudCBoYW5kbGVyIHRvIGFsbG93IGFj
Y3VyYXRlIGNvcHlpbmcgb2YgdGV4dAorICAgICAgICBmcm9tIHBvcG92ZXJzLgorICAgICAgICAo
QnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlLl9wb3BvdmVyQ29udGVudEZvckphdmFTY3JpcHRD
b3JlVGVzdFJlZ3Jlc3Npb25zKTogR2VuZXJhdGVzIHRoZSBwb3BvdmVyIGJ1YmJsZSdzCisgICAg
ICAgIGlubmVyIEhUTUwgZnJvbSB0aGUgSlNDIGZhaWx1cmUgZGF0YS4KKyAgICAgICAgKEJ1aWxk
Ym90UXVldWVWaWV3LnByb3RvdHlwZS5fcHJlc2VudFBvcG92ZXJGb3JKYXZhU2NyaXB0Q29yZVRl
c3RSZWdyZXNzaW9ucyk6IEdlbmVyYXRlIHRoZSBwb3BvdmVyIGJ1YmJsZQorICAgICAgICBmb3Ig
SlNDIHJlc3VsdHMgYW5kIGhhbmRsZSByZXF1ZXN0IGZhaWx1cmVzLgorICAgICAgICAoQnVpbGRi
b3RRdWV1ZVZpZXcucHJvdG90eXBlLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbik6IE1vdmVk
IGZyb20gc3ViY2xhc3MuCisgICAgICAgIChCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUuX3Rl
c3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uV2l0aENvdW50KTogTW92ZWQgZnJvbSBzdWJjbGFzcy4K
KyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RSZXN1bHRzLmpzOgorICAgICAg
ICAoQnVpbGRib3RUZXN0UmVzdWx0cy5wcm90b3R5cGUuYWRkSmF2YVNjcmlwdENvcmVUZXN0RmFp
bHVyZXMpOiBQYXJzZSBKU09OIGludG8gYSBsaXN0IG9mIGZhaWxpbmcgdGVzdHMuCisgICAgICAg
ICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanM6CisgICAgICAgIChC
dWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUuYXBwZW5kQnVpbGRlclF1ZXVlU3RhdHVz
KTogSW5zdGFudGlhdGUgUG9wb3ZlclRyYWNrZXJzIGZvciBidWlsZHMgd2hvc2UgCisgICAgICAg
IG9ubHkgZmFpbHVyZXMgYXJlIEpTQyB0ZXN0cy4KKyAgICAgICAgKEJ1aWxkYm90VGVzdGVyUXVl
dWVWaWV3LnByb3RvdHlwZS5fcG9wb3ZlckNvbnRlbnRGb3JMYXlvdXRUZXN0UmVncmVzc2lvbnMp
OiBVc2UgX29uUG9wb3ZlckNvcHkuCisgICAgICAgIChCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5w
cm90b3R5cGUuX3ByZXNlbnRQb3BvdmVyRm9yTGF5b3V0VGVzdFJlZ3Jlc3Npb25zKTogVXNlIF9j
cmVhdGVMb2FkaW5nSW5kaWNhdG9yLgorICAgICAgICAoQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcu
cHJvdG90eXBlLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbik6IERlbGV0ZWQuIE1vdmVkIHRv
IHN1cGVyY2xhc3MuCisgICAgICAgIChCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUu
X3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uV2l0aENvdW50KTogRGVsZXRlZC4gTW92ZWQgdG8g
c3VwZXJjbGFzcy4KKyAgICAgICAgKEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZS5j
b250ZW50Lm9uY29weSk6IERlbGV0ZWQuIFVzaW5nIHN1cGVyY2xhc3MncyByZXVzYWJsZSBmdW5j
dGlvbiBhcyBjb3B5IGhhbmRsZXIgaW5zdGVhZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90
ZXN0cy9pbmRleC5odG1sOiBBZGQgbmV3IHNjcmlwdCBmaWxlcy4KKyAgICAgICAgKiBCdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
U2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90LmpzOiBBZGRlZC4KKyAgICAgICAg
KE1vY2tCdWlsZGJvdCk6IE1vY2tlZCB2ZXJzaW9uIG9mIEJ1aWxkYm90LCBvbmx5IGNvbnRhaW5p
bmcgVVJMIG1ldGhvZHMuCisgICAgICAgIChNb2NrQnVpbGRib3QucHJvdG90eXBlLmJ1aWxkUGFn
ZVVSTEZvckl0ZXJhdGlvbik6IFNhbWUgYXMgcmVhbCBCdWlsZGJvdC5qcworICAgICAgICAoTW9j
a0J1aWxkYm90LnByb3RvdHlwZS5qYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlc1VSTEZvckl0ZXJh
dGlvbik6IFBvaW50cyB0byBsb2NhbCBmaWxlIGNvbnRhaW5pbmcgSlNPTiBmb3IgdGVzdC4KKyAg
ICAgICAgKE1vY2tCdWlsZGJvdC5wcm90b3R5cGUuamF2YVNjcmlwdENvcmVUZXN0U3RkaW9VUkxG
b3JJdGVyYXRpb24pOiBTYW1lIGFzIHJlYWwgQnVpbGRib3QuanMKKyAgICAgICAgKiBCdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
U2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90UXVldWUuanM6CisgICAgICAgIChN
b2NrQnVpbGRib3RRdWV1ZSk6IFVzZSBhIE1vY2tCdWlsZGJvdCgpIGluc3RlYWQgb2YgYSBzdHJp
bmcuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJv
dFRlc3RSZXN1bHRzLmpzOiBBZGRlZC4KKyAgICAgICAgKE1vY2tCdWlsZGJvdFRlc3RSZXN1bHRz
KTogTW9ja2VkIHZlcnNpb24gb2YgQnVpbGRib3RUZXN0UmVzdWx0cy4KKyAgICAgICAgKE1vY2tC
dWlsZGJvdFRlc3RSZXN1bHRzLnByb3RvdHlwZS5hZGRKYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJl
cyk6IFNldHMgdGhlICdyZWdyZXNzaW9ucycgdmFyaWFibGUuCisgICAgICAgICogQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Nj
cmlwdHMvdGVzdHMvcmVzb3VyY2VzL3Rlc3QtanNjLXJlc3VsdHMuanNvbjogQWRkZWQuCisgICAg
ICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL3Rlc3RzLmpzOiBBZGQgZm91ciBn
cm91cHMgb2YgdGVzdHMuCisKIDIwMTYtMDUtMjMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIGNoZWNrLXdlYmtpdC1zdHlsZSBnZXRzIGZsYWdzIHN0ZDo6bGl0
ZXJhbHM6OmNocm9ub19saXRlcmFscyBhcyBiYWQgbmFtaW5nLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL1NjcmlwdHMvQnVpbGRib3QuanMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJv
dC5qcwppbmRleCAwOGRlOWM4NWYzNGE0MzZlYWZlZTdjYzc5M2M3YTllYTkxMTM3NDRhLi4zOTUz
YzBhY2Q5ZGExOGViMGIzZDA1NTVlZjgyNzM5NDA0M2UyMzdmIDEwMDY0NAotLS0gYS9Ub29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvU2NyaXB0cy9CdWlsZGJvdC5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWls
ZGJvdC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTE1MSw2ICsxNTEsMTYgQEAgQnVpbGRib3QucHJvdG90eXBlID0gewogICAg
ICAgICByZXR1cm4gdGhpcy5iYXNlVVJMICsgImJ1aWxkZXJzLyIgKyBlbmNvZGVVUklDb21wb25l
bnQoaXRlcmF0aW9uLnF1ZXVlLmlkKSArICIvYnVpbGRzLyIgKyBpdGVyYXRpb24uaWQ7CiAgICAg
fSwKIAorICAgIGphdmFTY3JpcHRDb3JlVGVzdEZhaWx1cmVzVVJMRm9ySXRlcmF0aW9uOiBmdW5j
dGlvbihpdGVyYXRpb24sIG5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5iYXNlVVJM
ICsgImJ1aWxkZXJzLyIgKyBlbmNvZGVVUklDb21wb25lbnQoaXRlcmF0aW9uLnF1ZXVlLmlkKSAr
ICIvYnVpbGRzLyIgKyBpdGVyYXRpb24uaWQgKyAiL3N0ZXBzLyIgKyBuYW1lICsgIi9sb2dzL2pz
b24vdGV4dCI7CisgICAgfSwKKworICAgIGphdmFTY3JpcHRDb3JlVGVzdFN0ZGlvVVJMRm9ySXRl
cmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24sIG5hbWUpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5iYXNlVVJMICsgImJ1aWxkZXJzLyIgKyBlbmNvZGVVUklDb21wb25lbnQoaXRlcmF0aW9u
LnF1ZXVlLmlkKSArICIvYnVpbGRzLyIgKyBpdGVyYXRpb24uaWQgKyAiL3N0ZXBzLyIgKyBuYW1l
ICsgIi9sb2dzL3N0ZGlvIjsKKyAgICB9LAorCiAgICAgbGF5b3V0VGVzdFJlc3VsdHNEaXJlY3Rv
cnlVUkxGb3JJdGVyYXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlvbikKICAgICB7CiAgICAgICAgIHZh
ciB1bmRlcnNjb3JlU2VwYXJhdGVkUmV2aXNpb25zID0gInIiOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL1NjcmlwdHMvQnVpbGRib3RDb21iaW5lZFF1ZXVlVmlldy5qcyBiL1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL0J1aWxkYm90Q29tYmluZWRRdWV1ZVZpZXcuanMKaW5kZXggMTM4NzRkNWI4MmQz
YWZhODQ0NjliMGE5OWRmMzI4YTFhMDc3YTg5Ni4uMzc1MzE5MmYzNzJkM2MwOWE3ZGNmMDlmOTA3
M2YxYjU0MWQ5MmZlYSAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RD
b21iaW5lZFF1ZXVlVmlldy5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdENv
bWJpbmVkUXVldWVWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg4LDkgKzg4LDkgQEAgQnVpbGRib3RDb21i
aW5lZFF1ZXVlVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgIHZhciBtZXNzYWdlID0g
dGhpcy5yZXZpc2lvbkNvbnRlbnRGb3JJdGVyYXRpb24oc2xvd2VzdFF1ZXVlLm1vc3RSZWNlbnRT
dWNjZXNzZnVsSXRlcmF0aW9uKTsKICAgICAgICAgICAgIHZhciBzdGF0dXNNZXNzYWdlUGFzc2Vk
ID0gImFsbCAiICsgKHF1ZXVlLmJ1aWxkZXIgPyAiYnVpbGRzIHN1Y2NlZWRlZCIgOiAidGVzdHMg
cGFzc2VkIik7Ci0gICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1l
c3NhZ2UsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5Hb29kLCBzdGF0dXNNZXNzYWdlUGFzc2VkLCBu
dWxsLCBudWxsKTsKLSAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tlcihzdGF0dXMuc3RhdHVz
QnViYmxlRWxlbWVudCwgdGhpcy5fcHJlc2VudFBvcG92ZXJGb3JDb21iaW5lZEdyZWVuQnViYmxl
LmJpbmQodGhpcykpOwotICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHN0YXR1
cy5lbGVtZW50KTsKKyAgICAgICAgICAgIHZhciBzdGF0dXNWaWV3ID0gbmV3IFN0YXR1c0xpbmVW
aWV3KG1lc3NhZ2UsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5Hb29kLCBzdGF0dXNNZXNzYWdlUGFz
c2VkLCBudWxsLCBudWxsKTsKKyAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tlcihzdGF0dXNW
aWV3LnN0YXR1c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9yQ29tYmluZWRH
cmVlbkJ1YmJsZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZChzdGF0dXNWaWV3LmVsZW1lbnQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
dGhpcy5hcHBlbmRCdWlsZFN0eWxlLmNhbGwodGhpcywgdGhpcy5xdWV1ZXMsIG51bGwsIGZ1bmN0
aW9uKHF1ZXVlKSB7CiAgICAgICAgICAgICAgICAgaWYgKHF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0
aGVudGljYXRpb24gJiYgIXF1ZXVlLmJ1aWxkYm90LmlzQXV0aGVudGljYXRlZCkgewpAQCAtMTA3
LDkgKzEwNywxNSBAQCBCdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgICAgICBpZiAoZmlyc3RSZWNlbnRVbnN1Y2Nlc3NmdWxJdGVyYXRpb24gJiYgZmly
c3RSZWNlbnRVbnN1Y2Nlc3NmdWxJdGVyYXRpb24ubG9hZGVkICYmIG1vc3RSZWNlbnRGaW5pc2hl
ZEl0ZXJhdGlvbiAmJiBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24ubG9hZGVkKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRp
b24uc3VjY2Vzc2Z1bCk7CiAgICAgICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gdGhpcy5y
ZXZpc2lvbkNvbnRlbnRGb3JJdGVyYXRpb24obW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLCBt
b3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24ucHJvZHVjdGl2ZSA/IG1vc3RSZWNlbnRTdWNjZXNz
ZnVsSXRlcmF0aW9uIDogbnVsbCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghbW9zdFJlY2Vu
dEZpbmlzaGVkSXRlcmF0aW9uLnByb2R1Y3RpdmUpCisgICAgICAgICAgICAgICAgICAgIGlmICgh
bW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLnByb2R1Y3RpdmUpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBzdGF0dXMgPSBTdGF0dXNMaW5lVmlldy5TdGF0dXMuRGFuZ2VyOwotICAg
ICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICht
b3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24uZmFpbGVkVGVzdFN0ZXBzLmxlbmd0aCA9PT0gMSAm
JiBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24uZmFpbGVkVGVzdFN0ZXBzWzBdLm5hbWUgaW4g
WyJqc2NvcmUtdGVzdCIsICJ3ZWJraXQtMzJiaXQtanNjLXRlc3QiLCAid2Via2l0LWpzYy1jbG9v
cC10ZXN0Il0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmYWlsZWRTdGVwID0gbW9z
dFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLmZhaWxlZFRlc3RTdGVwc1swXTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBzdGF0dXNWaWV3ID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2Us
IFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5CYWQsIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0
aW9uKGZhaWxlZFN0ZXApLCBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCwgbW9zdFJlY2VudEZpbmlz
aGVkSXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LmphdmFTY3JpcHRDb3JlVGVzdFN0ZGlvVVJMRm9y
SXRlcmF0aW9uKG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbiwgZmFpbGVkU3RlcC5uYW1lKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVz
Vmlldy5lbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tl
cihzdGF0dXNWaWV3LnN0YXR1c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9y
SmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnMuYmluZCh0aGlzLCBmYWlsZWRTdGVwLm5hbWUp
LCBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gRGlyZWN0IGxpbmtzIHRvIHNvbWUgY29tbW9uIGxvZ3MuCiAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgdXJsID0gbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLmZhaWx1cmVM
b2dVUkwoImJ1aWxkIGxvZyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1cmwpCkBA
IC0xMjMsMjIgKzEyOSwyMiBAQCBCdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gU29tZSBvdGhlciBzdGVwIGZhaWxlZCwgbGluayB0
byBtYWluIGJ1aWxkYm90IHBhZ2UgZm9yIHRoZSBpdGVyYXRpb24uCiAgICAgICAgICAgICAgICAg
ICAgIGlmICghdXJsKQogICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gcXVldWUuYnVpbGRi
b3QuYnVpbGRQYWdlVVJMRm9ySXRlcmF0aW9uKG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbik7
Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVz
c2FnZSwgc3RhdHVzLCBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24udGV4dCwgbnVsbCwgdXJs
KTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHN0YXR1cy5l
bGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1c1ZpZXcgPSBuZXcgU3RhdHVz
TGluZVZpZXcobWVzc2FnZSwgc3RhdHVzLCBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24udGV4
dCwgbnVsbCwgdXJsKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENo
aWxkKHN0YXR1c1ZpZXcuZWxlbWVudCk7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5lZWRz
UG9wb3ZlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tlcihzdGF0
dXMuc3RhdHVzQnViYmxlRWxlbWVudCwgdGhpcy5fcHJlc2VudEluZGl2aWR1YWxRdWV1ZVBvcG92
ZXIuYmluZCh0aGlzKSwgbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tlcihzdGF0dXNWaWV3LnN0YXR1c0J1YmJsZUVs
ZW1lbnQsIHRoaXMuX3ByZXNlbnRJbmRpdmlkdWFsUXVldWVQb3BvdmVyLmJpbmQodGhpcyksIG1v
c3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbik7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAgICAgdmFyIHN0YXR1c01lc3NhZ2VQYXNzZWQgPSAiYWxsICIgKyAocXVldWUuYnVpbGRl
ciA/ICJidWlsZHMgc3VjY2VlZGVkIiA6ICJ0ZXN0cyBwYXNzZWQiKTsKICAgICAgICAgICAgICAg
ICBpZiAobW9zdFJlY2VudFN1Y2Nlc3NmdWxJdGVyYXRpb24gJiYgbW9zdFJlY2VudFN1Y2Nlc3Nm
dWxJdGVyYXRpb24ubG9hZGVkKSB7CiAgICAgICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0g
dGhpcy5yZXZpc2lvbkNvbnRlbnRGb3JJdGVyYXRpb24obW9zdFJlY2VudFN1Y2Nlc3NmdWxJdGVy
YXRpb24pOwogICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gcXVldWUuYnVpbGRib3QuYnVp
bGRQYWdlVVJMRm9ySXRlcmF0aW9uKG1vc3RSZWNlbnRTdWNjZXNzZnVsSXRlcmF0aW9uKTsKLSAg
ICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdl
LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuR29vZCwgZmlyc3RSZWNlbnRVbnN1Y2Nlc3NmdWxJdGVy
YXRpb24gPyAibGFzdCBzdWNjZWVkZWQiIDogc3RhdHVzTWVzc2FnZVBhc3NlZCwgbnVsbCwgdXJs
KTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHN0YXR1cy5l
bGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1c1ZpZXcgPSBuZXcgU3RhdHVz
TGluZVZpZXcobWVzc2FnZSwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkdvb2QsIGZpcnN0UmVjZW50
VW5zdWNjZXNzZnVsSXRlcmF0aW9uID8gImxhc3Qgc3VjY2VlZGVkIiA6IHN0YXR1c01lc3NhZ2VQ
YXNzZWQsIG51bGwsIHVybCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBl
bmRDaGlsZChzdGF0dXNWaWV3LmVsZW1lbnQpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcoInVua25v
d24iLCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuTmV1dHJhbCwgZmlyc3RSZWNlbnRVbnN1Y2Nlc3Nm
dWxJdGVyYXRpb24gPyAibGFzdCBzdWNjZWVkZWQiIDogc3RhdHVzTWVzc2FnZVBhc3NlZCk7Ci0g
ICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChzdGF0dXMuZWxlbWVu
dCk7CisgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXNWaWV3ID0gbmV3IFN0YXR1c0xpbmVW
aWV3KCJ1bmtub3duIiwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLk5ldXRyYWwsIGZpcnN0UmVjZW50
VW5zdWNjZXNzZnVsSXRlcmF0aW9uID8gImxhc3Qgc3VjY2VlZGVkIiA6IHN0YXR1c01lc3NhZ2VQ
YXNzZWQpOworICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3Rh
dHVzVmlldy5lbGVtZW50KTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RSZWNlbnRV
bnN1Y2Nlc3NmdWxJdGVyYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhh
dmUgYSBmYWlsZWQgaXRlcmF0aW9uIGJ1dCBubyBzdWNjZXNzZnVsLiBJdCBtaWdodCBiZSBmdXJ0
aGVyIGJhY2sgaW4gdGltZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxk
Ym90SXRlcmF0aW9uLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RJdGVyYXRpb24u
anMKaW5kZXggZTI4YzMxZTNmYzUzMTdmNmI4MjFmZTFiNmExZWE4YTRlZDcyZDE3Zi4uZGM3MDEy
YzEwOWMzOGJhYzA2OTQwNjgzMjllZTE3Y2MyOWJkOGMwNSAxMDA2NDQKLS0tIGEvVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL1NjcmlwdHMvQnVpbGRib3RJdGVyYXRpb24uanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Njcmlw
dHMvQnVpbGRib3RJdGVyYXRpb24uanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDYgKzQ2LDcgQEAgQnVpbGRi
b3RJdGVyYXRpb24gPSBmdW5jdGlvbihxdWV1ZSwgZGF0YU9ySUQsIGZpbmlzaGVkKQogICAgIHRo
aXMucmV2aXNpb24gPSB7fTsKIAogICAgIHRoaXMubGF5b3V0VGVzdFJlc3VsdHMgPSBudWxsOyAv
LyBMYXlvdXQgdGVzdCByZXN1bHRzIGNhbiBiZSBuZWVkZWQgZXZlbiBpZiBhbGwgdGVzdHMgcGFz
c2VkLCBlLmcuIGZvciB0aGUgbGVha3MgYm90LgorICAgIHRoaXMuamF2YVNjcmlwdENvcmVUZXN0
UmVzdWx0cyA9IG51bGw7CiAKICAgICB0aGlzLmZhaWxlZFRlc3RTdGVwcyA9IFtdOwogCkBAIC0y
NTAsNiArMjUxLDggQEAgQnVpbGRib3RJdGVyYXRpb24ucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgdmFyIHJlc3VsdHMgPSBuZXcgQnVpbGRib3RUZXN0UmVzdWx0cyhzdGVwKTsKICAgICAgICAg
ICAgIGlmIChzdGVwLm5hbWUgPT09ICJsYXlvdXQtdGVzdCIpCiAgICAgICAgICAgICAgICAgdGhp
cy5sYXlvdXRUZXN0UmVzdWx0cyA9IHJlc3VsdHM7CisgICAgICAgICAgICBlbHNlIGlmIChzdGVw
Lm5hbWUgaW4gWyJqc2NvcmUtdGVzdCIsICJ3ZWJraXQtMzJiaXQtanNjLXRlc3QiLCAid2Via2l0
LWpzYy1jbG9vcC10ZXN0Il0pCisgICAgICAgICAgICAgICAgdGhpcy5qYXZhU2NyaXB0Q29yZVRl
c3RSZXN1bHRzID0gcmVzdWx0czsKICAgICAgICAgICAgIGlmIChyZXN1bHRzLmFsbFBhc3NlZCkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB0aGlzLmZhaWxlZFRlc3RTdGVw
cy5wdXNoKHJlc3VsdHMpOwpAQCAtMzUzLDUgKzM1NiwyNSBAQCBCdWlsZGJvdEl0ZXJhdGlvbi5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhLmVycm9yKTsKICAgICAg
ICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgIH0uYmluZCh0aGlzKSwge2pzb25wQ2FsbGJhY2tO
YW1lOiAiQUREX1JFU1VMVFMiLCB3aXRoQ3JlZGVudGlhbHM6IHRoaXMucXVldWUuYnVpbGRib3Qu
bmVlZHNBdXRoZW50aWNhdGlvbn0pOwotICAgIH0KKyAgICB9LAorCisgICAgbG9hZEphdmFTY3Jp
cHRDb3JlVGVzdFJlc3VsdHM6IGZ1bmN0aW9uKHRlc3ROYW1lLCBjYWxsYmFjaykKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzLnF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRpb24gJiYgdGhp
cy5xdWV1ZS5idWlsZGJvdC5hdXRoZW50aWNhdGlvblN0YXR1cyA9PT0gQnVpbGRib3QuQXV0aGVu
dGljYXRpb25TdGF0dXMuSW52YWxpZENyZWRlbnRpYWxzKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIEpTT04ubG9hZCh0aGlzLnF1ZXVlLmJ1aWxkYm90LmphdmFTY3JpcHRDb3JlVGVz
dEZhaWx1cmVzVVJMRm9ySXRlcmF0aW9uKHRoaXMsIHRlc3ROYW1lKSwgZnVuY3Rpb24oZGF0YSkg
eworICAgICAgICAgICAgdGhpcy5xdWV1ZS5idWlsZGJvdC5pc0F1dGhlbnRpY2F0ZWQgPSB0cnVl
OworICAgICAgICAgICAgdGhpcy5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzLmFkZEphdmFTY3Jp
cHRDb3JlVGVzdEZhaWx1cmVzKGRhdGEpOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAg
ICAgfS5iaW5kKHRoaXMpLAorICAgICAgICBmdW5jdGlvbihkYXRhKSB7CisgICAgICAgICAgICBp
ZiAoZGF0YS5lcnJvclR5cGUgPT09IEpTT04uTG9hZEVycm9yICYmIGRhdGEuZXJyb3JIVFRQQ29k
ZSA9PT0gNDAxKSB7CisgICAgICAgICAgICAgICAgdGhpcy5xdWV1ZS5idWlsZGJvdC5pc0F1dGhl
bnRpY2F0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhCdWlsZGJvdEl0ZXJhdGlvbi5FdmVudC5VbmF1dGhvcml6ZWRBY2Nlc3MpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YS5lcnJvcik7CisgICAgICAg
ICAgICBjYWxsYmFjaygpOworICAgICAgICB9LmJpbmQodGhpcyksIHt3aXRoQ3JlZGVudGlhbHM6
IHRoaXMucXVldWUuYnVpbGRib3QubmVlZHNBdXRoZW50aWNhdGlvbn0pOworICAgIH0sCiB9Owpk
aWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RRdWV1ZVZpZXcuanMgYi9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmlldy5qcwppbmRleCA0MTEzYzBlZTkz
N2JjNWU5YjViZGFkNWZjZWJmZTVhNTUwMmE0NjI0Li43NWJiOTUyNTcxNDRjZTk5ZDc2NWVhMzJj
OTFiZGJiNDI0MDBiZmMwIDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJv
dFF1ZXVlVmlldy5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmll
dy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNzMsNiArNzMsOTUgQEAgQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzLmVsZW1lbnQpOwogICAgIH0sCiAK
KyAgICBfY3JlYXRlTG9hZGluZ0luZGljYXRvcjogZnVuY3Rpb24oaXRlcmF0aW9uLCBoZWFkaW5n
KSB7CisgICAgICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CisgICAgICAgIGNvbnRlbnQuY2xhc3NOYW1lID0gInRlc3QtcmVzdWx0cy1wb3BvdmVyIjsKKwor
ICAgICAgICB0aGlzLl9hZGRJdGVyYXRpb25IZWFkaW5nVG9Qb3BvdmVyKGl0ZXJhdGlvbiwgY29u
dGVudCwgaGVhZGluZyk7CisgICAgICAgIHRoaXMuX2FkZERpdmlkZXJUb1BvcG92ZXIoY29udGVu
dCk7CisKKyAgICAgICAgdmFyIGxvYWRpbmdJbmRpY2F0b3IgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgICAgICAgbG9hZGluZ0luZGljYXRvci5jbGFzc05hbWUgPSAibG9hZGlu
Zy1pbmRpY2F0b3IiOworICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLnRleHRDb250ZW50ID0gIkxv
YWRpbmdcdTIwMjYiOworICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGxvYWRpbmdJbmRpY2F0
b3IpOworCisgICAgICAgIHJldHVybiBjb250ZW50OworICAgIH0sCisKKyAgICAvLyBXb3JrIGFy
b3VuZCBidWcgODAxNTk6IC13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZSBub3QgcmVzcGVjdGVkIHdo
ZW4gY29weWluZyBjb250ZW50LgorICAgIC8vIFdlIHNldCBjbGlwYm9hcmQgZGF0YSBtYW51YWxs
eSwgdGVtcG9yYXJpbHkgbWFraW5nIG5vbi1zZWxlY3RhYmxlIGNvbnRlbnQgaGlkZGVuCisgICAg
Ly8gdG8gZWFzaWx5IGdldCBhY2N1cmF0ZSBzZWxlY3Rpb24gdGV4dC4KKyAgICBfb25Qb3BvdmVy
Q29weTogZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgdmFyIGl0ZXJhdG9yID0gZG9jdW1lbnQu
Y3JlYXRlTm9kZUl0ZXJhdG9yKAorICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldCwKKyAg
ICAgICAgICAgIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULAorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGFjY2VwdE5vZGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLndlYmtpdFVzZXJTZWxl
Y3QgIT09ICJub25lIikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVy
LkZJTFRFUl9BQ0NFUFQ7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJ
TFRFUl9TS0lQOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsK
KworICAgICAgICB3aGlsZSAoKG5vZGUgPSBpdGVyYXRvci5uZXh0Tm9kZSgpKSkKKyAgICAgICAg
ICAgIG5vZGUuc3R5bGUudmlzaWJpbGl0eSA9ICJ2aXNpYmxlIjsKKworICAgICAgICBldmVudC5j
dXJyZW50VGFyZ2V0LnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICAgICAgZXZlbnQu
Y2xpcGJvYXJkRGF0YS5zZXREYXRhKCd0ZXh0Jywgd2luZG93LmdldFNlbGVjdGlvbigpKTsKKyAg
ICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5zdHlsZS52aXNpYmlsaXR5ID0gIiI7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9LAorCisgICAgX3BvcG92ZXJDb250ZW50Rm9ySmF2YVNjcmlw
dENvcmVUZXN0UmVncmVzc2lvbnM6IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgdGVzdE5hbWUpCisgICAg
eworICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
ICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9ICJ0ZXN0LXJlc3VsdHMtcG9wb3ZlciI7CisKKyAg
ICAgICAgdGhpcy5fYWRkSXRlcmF0aW9uSGVhZGluZ1RvUG9wb3ZlcihpdGVyYXRpb24sIGNvbnRl
bnQsICJqYXZhc2NyaXB0Y29yZSB0ZXN0IGZhaWx1cmVzIiwgaXRlcmF0aW9uLmphdmFTY3JpcHRD
b3JlVGVzdFN0ZGlvVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbiwgdGVzdE5hbWUpKTsKKyAgICAg
ICAgdGhpcy5fYWRkRGl2aWRlclRvUG9wb3Zlcihjb250ZW50KTsKKworICAgICAgICBpZiAoIWl0
ZXJhdGlvbi5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzLnJlZ3Jlc3Npb25zKSB7CisgICAgICAg
ICAgICB2YXIgbWVzc2FnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAg
ICAgICAgbWVzc2FnZS5jbGFzc05hbWUgPSAibG9hZGluZy1mYWlsdXJlIjsKKyAgICAgICAgICAg
IG1lc3NhZ2UudGV4dENvbnRlbnQgPSAiVGVzdCByZXN1bHRzIGNvdWxkblx1MjAxOXQgYmUgbG9h
ZGVkIjsKKyAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQobWVzc2FnZSk7CisgICAgICAg
ICAgICByZXR1cm4gY29udGVudDsKKyAgICAgICAgfQorCisgICAgICAgIHZhciByZWdyZXNzaW9u
cyA9IGl0ZXJhdGlvbi5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzLnJlZ3Jlc3Npb25zOworCisg
ICAgICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSByZWdyZXNzaW9ucy5sZW5ndGg7IGkgIT0gZW5k
OyArK2kpIHsKKyAgICAgICAgICAgIHZhciB0ZXN0ID0gcmVncmVzc2lvbnNbaV07CisgICAgICAg
ICAgICB2YXIgcm93RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAg
ICAgICAgICAgdmFyIHRlc3RQYXRoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNw
YW4iKTsKKyAgICAgICAgICAgIHRlc3RQYXRoRWxlbWVudC5jbGFzc05hbWUgPSAidGVzdC1wYXRo
IjsKKyAgICAgICAgICAgIHRlc3RQYXRoRWxlbWVudC50ZXh0Q29udGVudCA9IHRlc3Q7CisgICAg
ICAgICAgICByb3dFbGVtZW50LmFwcGVuZENoaWxkKHRlc3RQYXRoRWxlbWVudCk7CisgICAgICAg
ICAgICBjb250ZW50LmFwcGVuZENoaWxkKHJvd0VsZW1lbnQpOworICAgICAgICB9CisKKyAgICAg
ICAgY29udGVudC5vbmNvcHkgPSB0aGlzLl9vblBvcG92ZXJDb3B5OworICAgICAgICByZXR1cm4g
Y29udGVudDsKKyAgICB9LAorCisgICAgX3ByZXNlbnRQb3BvdmVyRm9ySmF2YVNjcmlwdENvcmVU
ZXN0UmVncmVzc2lvbnM6IGZ1bmN0aW9uKHRlc3ROYW1lLCBlbGVtZW50LCBwb3BvdmVyLCBpdGVy
YXRpb24pCisgICAgeworICAgICAgICBpZiAoaXRlcmF0aW9uLmphdmFTY3JpcHRDb3JlVGVzdFJl
c3VsdHMucmVncmVzc2lvbnMpCisgICAgICAgICAgICB2YXIgY29udGVudCA9IHRoaXMuX3BvcG92
ZXJDb250ZW50Rm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnMoaXRlcmF0aW9uKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICB2YXIgY29udGVudCA9IHRoaXMuX2NyZWF0ZUxvYWRp
bmdJbmRpY2F0b3IoaXRlcmF0aW9uLCAiamF2YXNjcmlwdGNvcmUgdGVzdCBmYWlsdXJlcyIpOwor
ICAgICAgICAgICAgaXRlcmF0aW9uLmxvYWRKYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzKHRlc3RO
YW1lLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSB0aGlz
Ll9wb3BvdmVyQ29udGVudEZvckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jlc3Npb25zKGl0ZXJhdGlv
biwgdGVzdE5hbWUpOworICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHZhciByZWN0ID0gRGFzaGJvYXJkLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KGVsZW1l
bnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOworICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSBj
b250ZW50OworICAgICAgICBwb3BvdmVyLnByZXNlbnQocmVjdCwgW0Rhc2hib2FyZC5SZWN0RWRn
ZS5NSU5fWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9ZLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUFY
X1gsIERhc2hib2FyZC5SZWN0RWRnZS5NSU5fWF0pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9LAorCiAgICAgX3ByZXNlbnRQb3BvdmVyRm9yUmV2aXNpb25SYW5nZTogZnVuY3Rpb24oZWxl
bWVudCwgcG9wb3ZlciwgY29udGV4dCkKICAgICB7CiAgICAgICAgIHZhciBjb250ZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CkBAIC0xNDcsNyArMjM2LDcgQEAgQnVpbGRib3RR
dWV1ZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gY29udGVudDsKICAgICB9LAog
Ci0gICAgX2FkZEl0ZXJhdGlvbkhlYWRpbmdUb1BvcG92ZXI6IGZ1bmN0aW9uKGl0ZXJhdGlvbiwg
Y29udGVudCwgYWRkaXRpb25hbFRleHQpCisgICAgX2FkZEl0ZXJhdGlvbkhlYWRpbmdUb1BvcG92
ZXI6IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgY29udGVudCwgYWRkaXRpb25hbFRleHQsIGFkZGl0aW9u
YWxUZXh0VGFyZ2V0KQogICAgIHsKICAgICAgICAgdmFyIHRpdGxlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRpdGxlLmNsYXNzTmFtZSA9ICJwb3BvdmVyLWl0ZXJh
dGlvbi1oZWFkaW5nIjsKQEAgLTE2NSw5ICsyNTQsMTQgQEAgQnVpbGRib3RRdWV1ZVZpZXcucHJv
dG90eXBlID0gewogICAgICAgICB0aXRsZS5hcHBlbmRDaGlsZChidWlsZGJvdExpbmspOwogCiAg
ICAgICAgIGlmIChhZGRpdGlvbmFsVGV4dCkgewotICAgICAgICAgICAgdmFyIGFkZGl0aW9uYWxU
ZXh0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAg
IHZhciBlbGVtZW50VHlwZSA9IChhZGRpdGlvbmFsVGV4dFRhcmdldCk/ICJhIiA6ICJzcGFuIjsK
KyAgICAgICAgICAgIHZhciBhZGRpdGlvbmFsVGV4dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KGVsZW1lbnRUeXBlKTsKICAgICAgICAgICAgIGFkZGl0aW9uYWxUZXh0RWxlbWVudC5j
bGFzc05hbWUgPSAiYWRkaXRpb25hbC10ZXh0IjsKICAgICAgICAgICAgIGFkZGl0aW9uYWxUZXh0
RWxlbWVudC50ZXh0Q29udGVudCA9IGFkZGl0aW9uYWxUZXh0OworICAgICAgICAgICAgaWYgKGFk
ZGl0aW9uYWxUZXh0VGFyZ2V0KSB7CisgICAgICAgICAgICAgICAgYWRkaXRpb25hbFRleHRFbGVt
ZW50LmhyZWYgPSBhZGRpdGlvbmFsVGV4dFRhcmdldDsKKyAgICAgICAgICAgICAgICBhZGRpdGlv
bmFsVGV4dEVsZW1lbnQudGFyZ2V0ID0gIl9ibGFuayI7CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB0aXRsZS5hcHBlbmRDaGlsZChhZGRpdGlvbmFsVGV4dEVsZW1lbnQpOwogICAgICAgICB9
CiAKQEAgLTE5Miw2ICsyODYsMjcgQEAgQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CiAgICAgfSwKIAorICAgIF90ZXN0U3RlcEZhaWx1cmVE
ZXNjcmlwdGlvbjogZnVuY3Rpb24oZmFpbGVkU3RlcCkKKyAgICB7CisgICAgICAgIGlmICghZmFp
bGVkU3RlcC5mYWlsdXJlQ291bnQpCisgICAgICAgICAgICByZXR1cm4gQnVpbGRib3RJdGVyYXRp
b24uVGVzdFN0ZXBzW2ZhaWxlZFN0ZXAubmFtZV0gKyAiIGZhaWxlZCI7CisgICAgICAgIGlmIChm
YWlsZWRTdGVwLmZhaWx1cmVDb3VudCA9PT0gMSkKKyAgICAgICAgICAgIHJldHVybiBCdWlsZGJv
dEl0ZXJhdGlvbi5UZXN0U3RlcHNbZmFpbGVkU3RlcC5uYW1lXSArICIgZmFpbHVyZSI7CisgICAg
ICAgIHJldHVybiBCdWlsZGJvdEl0ZXJhdGlvbi5UZXN0U3RlcHNbZmFpbGVkU3RlcC5uYW1lXSAr
ICIgZmFpbHVyZXMiOworICAgIH0sCisKKyAgICBfdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb25X
aXRoQ291bnQ6IGZ1bmN0aW9uKGZhaWxlZFN0ZXApCisgICAgeworICAgICAgICBpZiAoIWZhaWxl
ZFN0ZXAuZmFpbHVyZUNvdW50KQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Rlc3RTdGVwRmFp
bHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0ZXApOworICAgICAgICBpZiAoZmFpbGVkU3RlcC50b29N
YW55RmFpbHVyZXMpIHsKKyAgICAgICAgICAgIC8vIEUuZy4gIjUwKyBsYXlvdXQgdGVzdCBmYWls
dXJlcyIsIHByZXZlbnRpbmcgbGluZSBicmVha3MgYXJvdW5kIHRoZSAiKyIuCisgICAgICAgICAg
ICByZXR1cm4gZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQgKyAiXHVmZWZmXHVmZjBiXHUwMGEwIiAr
IHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0ZXApOworICAgICAgICB9
CisgICAgICAgIC8vIEUuZy4gIjEgbGF5b3V0IHRlc3QgZmFpbHVyZSIsIHByZXZlbnRpbmcgbGlu
ZSBicmVhayBhZnRlciB0aGUgbnVtYmVyLgorICAgICAgICByZXR1cm4gZmFpbGVkU3RlcC5mYWls
dXJlQ291bnQgKyAiXHUwMGEwIiArIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZh
aWxlZFN0ZXApOworICAgIH0sCisKICAgICBhcHBlbmRCdWlsZFN0eWxlOiBmdW5jdGlvbihxdWV1
ZXMsIGRlZmF1bHRMYWJlbCwgYXBwZW5kRnVuY3Rpb24pCiAgICAgewogICAgICAgICBxdWV1ZXMu
Zm9yRWFjaChmdW5jdGlvbihxdWV1ZSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Njcmlw
dHMvQnVpbGRib3RUZXN0UmVzdWx0cy5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90
VGVzdFJlc3VsdHMuanMKaW5kZXggZTIzMTY3ZDdmZjgxZGJkMzExMzczZTE3OWZjM2VmMTA1NmQ3
YmQwYS4uMjFiYTA1ZDY2YmZjNDVmYmJlM2JkYWM1MDNmMWY4MmM3N2EyYjUyNSAxMDA2NDQKLS0t
IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0UmVzdWx0cy5qcworKysgYi9Ub29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RSZXN1bHRzLmpzCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xODQsNCArMTg0LDkgQEAg
QnVpbGRib3RUZXN0UmVzdWx0cy5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIGJlY2F1c2UgYnVp
bGRib3QgY291bnRzIHJlZ3Jlc3Npb25zIHRoYXQgaGFkIG1pc3NpbmcgcGl4ZWwgcmVzdWx0cyBv
biByZXRyeSAoZS5nLiAiVEVYVCBNSVNTSU5HIikuCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRh
dGEubnVtX21pc3NpbmcgPj0gdGhpcy50ZXN0c1dpdGhNaXNzaW5nUmVzdWx0cy5sZW5ndGgpOwog
ICAgIH0sCisKKyAgICBhZGRKYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlczogZnVuY3Rpb24oZGF0
YSkKKyAgICB7CisgICAgICAgIHRoaXMucmVncmVzc2lvbnMgPSBkYXRhLnN0cmVzc1Rlc3RGYWls
dXJlczsKKyAgICB9LAogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxk
Ym90VGVzdGVyUXVldWVWaWV3LmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0
ZXJRdWV1ZVZpZXcuanMKaW5kZXggNzJkODI0NmE0YzdkMWFjN2Y4YmUxOWIzNDc3NjA4YzJmMWFm
NWZjNC4uNjNjNTYwNzJjZDdhOWIyYmVhOTA0OTA0ZjRiM2ZlOWZhZDVkOGEyYyAxMDA2NDQKLS0t
IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMKKysrIGIv
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTEwNSw2ICsxMDUsOSBAQCBCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChmYWlsZWRTdGVwLm5hbWUgPT09ICJsYXlvdXQtdGVz
dCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGlu
ZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5CYWQsIHRoaXMuX3Rl
c3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0ZXApLCBmYWlsZWRTdGVwLnRvb01hbnlG
YWlsdXJlcyA/IGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50ICsgIlx1ZmYwYiIgOiBmYWlsZWRTdGVw
LmZhaWx1cmVDb3VudCwgaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LmxheW91dFRlc3RSZXN1bHRz
VVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgbmV3
IFBvcG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNCdWJibGVFbGVtZW50LCB0aGlzLl9wcmVzZW50
UG9wb3ZlckZvckxheW91dFRlc3RSZWdyZXNzaW9ucy5iaW5kKHRoaXMpLCBpdGVyYXRpb24pOwor
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZhaWxlZFN0ZXAubmFtZSBpbiBbImpzY29y
ZS10ZXN0IiwgIndlYmtpdC0zMmJpdC1qc2MtdGVzdCIsICJ3ZWJraXQtanNjLWNsb29wLXRlc3Qi
XSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5l
VmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkJhZCwgdGhpcy5fdGVz
dFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24oZmFpbGVkU3RlcCksIGZhaWxlZFN0ZXAuZmFpbHVyZUNv
dW50LCBpdGVyYXRpb24ucXVldWUuYnVpbGRib3QuamF2YVNjcmlwdENvcmVUZXN0U3RkaW9VUkxG
b3JJdGVyYXRpb24oaXRlcmF0aW9uLCBmYWlsZWRTdGVwLm5hbWUpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tlcihzdGF0dXMuc3RhdHVzQnViYmxlRWxlbWVudCwg
dGhpcy5fcHJlc2VudFBvcG92ZXJGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucy5iaW5k
KHRoaXMsIGZhaWxlZFN0ZXAubmFtZSksIGl0ZXJhdGlvbik7CiAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1
c0xpbmVWaWV3KG1lc3NhZ2VFbGVtZW50LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuQmFkLCB0aGlz
Ll90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbihmYWlsZWRTdGVwKSwgZmFpbGVkU3RlcC5mYWls
dXJlQ291bnQgPyBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCA6IHVuZGVmaW5lZCwgZmFpbGVkU3Rl
cC5VUkwpOwogICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1
cy5zdGF0dXNCdWJibGVFbGVtZW50LCB0aGlzLl9wcmVzZW50UG9wb3ZlckZvckdlbmVyaWNUZXN0
RmFpbHVyZXMuYmluZCh0aGlzKSwgaXRlcmF0aW9uKTsKQEAgLTEzMCwyNyArMTMzLDYgQEAgQnVp
bGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmFwcGVuZEJ1
aWxkU3R5bGUuY2FsbCh0aGlzLCB0aGlzLmRlYnVnUXVldWVzLCAiRGVidWciLCBhcHBlbmRCdWls
ZGVyUXVldWVTdGF0dXMpOwogICAgIH0sCiAKLSAgICBfdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRp
b246IGZ1bmN0aW9uKGZhaWxlZFN0ZXApCi0gICAgewotICAgICAgICBpZiAoIWZhaWxlZFN0ZXAu
ZmFpbHVyZUNvdW50KQotICAgICAgICAgICAgcmV0dXJuIEJ1aWxkYm90SXRlcmF0aW9uLlRlc3RT
dGVwc1tmYWlsZWRTdGVwLm5hbWVdICsgIiBmYWlsZWQiOwotICAgICAgICBpZiAoZmFpbGVkU3Rl
cC5mYWlsdXJlQ291bnQgPT09IDEpCi0gICAgICAgICAgICByZXR1cm4gQnVpbGRib3RJdGVyYXRp
b24uVGVzdFN0ZXBzW2ZhaWxlZFN0ZXAubmFtZV0gKyAiIGZhaWx1cmUiOwotICAgICAgICByZXR1
cm4gQnVpbGRib3RJdGVyYXRpb24uVGVzdFN0ZXBzW2ZhaWxlZFN0ZXAubmFtZV0gKyAiIGZhaWx1
cmVzIjsKLSAgICB9LAotCi0gICAgX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uV2l0aENvdW50
OiBmdW5jdGlvbihmYWlsZWRTdGVwKQotICAgIHsKLSAgICAgICAgaWYgKCFmYWlsZWRTdGVwLmZh
aWx1cmVDb3VudCkKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl90ZXN0U3RlcEZhaWx1cmVEZXNj
cmlwdGlvbihmYWlsZWRTdGVwKTsKLSAgICAgICAgaWYgKGZhaWxlZFN0ZXAudG9vTWFueUZhaWx1
cmVzKSB7Ci0gICAgICAgICAgICAvLyBFLmcuICI1MCsgbGF5b3V0IHRlc3QgZmFpbHVyZXMiLCBw
cmV2ZW50aW5nIGxpbmUgYnJlYWtzIGFyb3VuZCB0aGUgIisiLgotICAgICAgICAgICAgcmV0dXJu
IGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50ICsgIlx1ZmVmZlx1ZmYwYlx1MDBhMCIgKyB0aGlzLl90
ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbihmYWlsZWRTdGVwKTsKLSAgICAgICAgfQotICAgICAg
ICAvLyBFLmcuICIxIGxheW91dCB0ZXN0IGZhaWx1cmUiLCBwcmV2ZW50aW5nIGxpbmUgYnJlYWsg
YWZ0ZXIgdGhlIG51bWJlci4KLSAgICAgICAgcmV0dXJuIGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50
ICsgIlx1MDBhMCIgKyB0aGlzLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbihmYWlsZWRTdGVw
KTsKLSAgICB9LAotCiAgICAgX3BvcG92ZXJDb250ZW50Rm9yTGF5b3V0VGVzdFJlZ3Jlc3Npb25z
OiBmdW5jdGlvbihpdGVyYXRpb24pCiAgICAgewogICAgICAgICB2YXIgaGFzVGVzdEhpc3Rvcnkg
PSB0eXBlb2YgdGVzdEhpc3RvcnkgIT09ICJ1bmRlZmluZWQiOwpAQCAtMjI5LDMxICsyMTEsNyBA
QCBCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjb250
ZW50LmFwcGVuZENoaWxkKHJvd0VsZW1lbnQpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gV29y
ayBhcm91bmQgYnVnIDgwMTU5OiAtd2Via2l0LXVzZXItc2VsZWN0Om5vbmUgbm90IHJlc3BlY3Rl
ZCB3aGVuIGNvcHlpbmcgY29udGVudC4KLSAgICAgICAgLy8gV2Ugc2V0IGNsaXBib2FyZCBkYXRh
IG1hbnVhbGx5LCB0ZW1wb3JhcmlseSBtYWtpbmcgbm9uLXNlbGVjdGFibGUgY29udGVudCBoaWRk
ZW4KLSAgICAgICAgLy8gdG8gZWFzaWx5IGdldCBhY2N1cmF0ZSBzZWxlY3Rpb24gdGV4dC4KLSAg
ICAgICAgY29udGVudC5vbmNvcHkgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgICAgdmFy
IGl0ZXJhdG9yID0gZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKAotICAgICAgICAgICAgICAg
IGV2ZW50LmN1cnJlbnRUYXJnZXQsCi0gICAgICAgICAgICAgICAgTm9kZUZpbHRlci5TSE9XX0VM
RU1FTlQsCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBhY2NlcHROb2Rl
OiBmdW5jdGlvbihlbGVtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93
LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkud2Via2l0VXNlclNlbGVjdCAhPT0gIm5vbmUiKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NF
UFQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfU0tJ
UDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICk7Ci0KLSAgICAgICAgICAgIHdoaWxlICgobm9kZSA9IGl0ZXJhdG9yLm5leHROb2RlKCkpKQot
ICAgICAgICAgICAgICAgIG5vZGUuc3R5bGUudmlzaWJpbGl0eSA9ICJ2aXNpYmxlIjsKLQotICAg
ICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7
Ci0gICAgICAgICAgICBldmVudC5jbGlwYm9hcmREYXRhLnNldERhdGEoJ3RleHQnLCB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkpOwotICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5zdHlsZS52
aXNpYmlsaXR5ID0gIiI7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQor
ICAgICAgICBjb250ZW50Lm9uY29weSA9IHRoaXMuX29uUG9wb3ZlckNvcHk7CiAgICAgICAgIHJl
dHVybiBjb250ZW50OwogICAgIH0sCiAKQEAgLTI2MiwxNiArMjIwLDcgQEAgQnVpbGRib3RUZXN0
ZXJRdWV1ZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAoaXRlcmF0aW9uLmxheW91dFRl
c3RSZXN1bHRzLnJlZ3Jlc3Npb25zKQogICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLl9w
b3BvdmVyQ29udGVudEZvckxheW91dFRlc3RSZWdyZXNzaW9ucyhpdGVyYXRpb24pOwogICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9ICJ0ZXN0LXJlc3VsdHMt
cG9wb3ZlciI7Ci0KLSAgICAgICAgICAgIHRoaXMuX2FkZEl0ZXJhdGlvbkhlYWRpbmdUb1BvcG92
ZXIoaXRlcmF0aW9uLCBjb250ZW50LCAibGF5b3V0IHRlc3QgZmFpbHVyZXMiKTsKLSAgICAgICAg
ICAgIHRoaXMuX2FkZERpdmlkZXJUb1BvcG92ZXIoY29udGVudCk7Ci0KLSAgICAgICAgICAgIHZh
ciBsb2FkaW5nSW5kaWNhdG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAg
ICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLmNsYXNzTmFtZSA9ICJsb2FkaW5nLWluZGljYXRvciI7
Ci0gICAgICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLnRleHRDb250ZW50ID0gIkxvYWRpbmdcdTIw
MjYiOwotICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChsb2FkaW5nSW5kaWNhdG9yKTsK
KyAgICAgICAgICAgIHZhciBjb250ZW50ID0gdGhpcy5fY3JlYXRlTG9hZGluZ0luZGljYXRvcihp
dGVyYXRpb24sICJsYXlvdXQgdGVzdCBmYWlsdXJlcyIpOwogCiAgICAgICAgICAgICBpdGVyYXRp
b24ubG9hZExheW91dFRlc3RSZXN1bHRzKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIHBv
cG92ZXIuY29udGVudCA9IHRoaXMuX3BvcG92ZXJDb250ZW50Rm9yTGF5b3V0VGVzdFJlZ3Jlc3Np
b25zKGl0ZXJhdGlvbik7CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9p
bmRleC5odG1sIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvaW5kZXguaHRtbAppbmRleCBh
YjgxYjhkOTk1OGNjMTkyOGY0YTU1NjZjMjAxM2U4NGU0ZmY5ZjM2Li41YjM3OGIyMzBlYjcyZjIy
ZjJmMzQ4OGVhZDI3OGJiMTQxNDMxZjA1IDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0
cy90ZXN0cy9pbmRleC5odG1sCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL2luZGV4
Lmh0bWwKQEAgLTYzLDggKzYzLDEwIEBAIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAgICA8c2NyaXB0IHNyYz0iLi4vVHJhYy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL1NvdXJjZS9UaGlyZFBhcnR5L3F1bml0L3F1bml0L3F1bml0
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL01vY2tUcmFjLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL01vY2tCdWlsZGJvdC5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9Nb2NrQnVpbGRib3RRdWV1ZS5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9Nb2NrQnVpbGRib3RRdWV1ZVZp
ZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvTW9ja0J1aWxkYm90
VGVzdFJlc3VsdHMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVz
dHMuanMiPjwvc2NyaXB0PgogCiA8L2hlYWQ+CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2Ny
aXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90LmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Njcmlw
dHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJvdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjFmODIxMGIx
ZThjZjZiZmFlMWY2MjcwMWZiMzI0YTNmZmRiM2QzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJvdC5qcwpAQCAtMCwwICsx
LDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworTW9ja0J1aWxkYm90ID0gZnVuY3Rpb24oKSB7fTsKKworTW9j
a0J1aWxkYm90LnByb3RvdHlwZSA9IHsKKyAgICBjb25zdHJ1Y3RvcjogTW9ja0J1aWxkYm90LAor
CisgICAgYnVpbGRQYWdlVVJMRm9ySXRlcmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24pCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5iYXNlVVJMICsgImJ1aWxkZXJzLyIgKyBlbmNvZGVVUklD
b21wb25lbnQoaXRlcmF0aW9uLnF1ZXVlLmlkKSArICIvYnVpbGRzLyIgKyBpdGVyYXRpb24uaWQ7
CisgICAgfSwKKworICAgIGphdmFTY3JpcHRDb3JlVGVzdEZhaWx1cmVzVVJMRm9ySXRlcmF0aW9u
OiBmdW5jdGlvbihpdGVyYXRpb24sIG5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gInJlc291
cmNlcy90ZXN0LWpzYy1yZXN1bHRzLmpzb24iOworICAgIH0sCisKKyAgICBqYXZhU2NyaXB0Q29y
ZVRlc3RTdGRpb1VSTEZvckl0ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0aW9uLCBuYW1lKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArICJidWlsZGVycy8iICsgZW5jb2RlVVJJ
Q29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1ZS5pZCkgKyAiL2J1aWxkcy8iICsgaXRlcmF0aW9uLmlk
ICsgIi9zdGVwcy8iICsgbmFtZSArICIvbG9ncy9zdGRpbyI7CisKKyAgICB9LAorfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJvdFF1
ZXVlLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJv
dFF1ZXVlLmpzCmluZGV4IDIxMDdlZTcyMDVkNTI5ODVlNWRhMjg4MDYxZDIwMjgxMDMzNWUzOWMu
LjNmNWExZTdhNDlhZTY2YTFiYTE2OTI2YzRiZDBkNGI3MjlmYzk1OTUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy9Nb2NrQnVpbGRib3RRdWV1ZS5qcwor
KysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90UXVl
dWUuanMKQEAgLTM5LDcgKzM5LDcgQEAgTW9ja0J1aWxkYm90UXVldWUgPSBmdW5jdGlvbigpCiAg
ICAgICAgIGhlYWRpbmc6ICIiLAogICAgICAgICBjcmFzaGVzT25seTogIiIKICAgICB9OwotICAg
IEJ1aWxkYm90UXVldWUuY2FsbCh0aGlzLCAiTW9jayBCdWlsZEJvdCIsICJpZCIsIGluZm8pOwor
ICAgIEJ1aWxkYm90UXVldWUuY2FsbCh0aGlzLCBuZXcgTW9ja0J1aWxkYm90KCksICJpZCIsIGlu
Zm8pOwogfTsKIAogQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhNb2NrQnVpbGRi
b3RRdWV1ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJj
ZXMvTW9ja0J1aWxkYm90VGVzdFJlc3VsdHMuanMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0
cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90VGVzdFJlc3VsdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ5ODYy
OTU4ZDliMDRhYzhmM2JmODM5NTVhZDI5YWRhM2ZmNTk4YQotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy9Nb2NrQnVpbGRib3RUZXN0UmVzdWx0
cy5qcwpAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworTW9ja0J1aWxkYm90VGVzdFJlc3Vs
dHMgPSBmdW5jdGlvbigpIHt9OworCitNb2NrQnVpbGRib3RUZXN0UmVzdWx0cy5wcm90b3R5cGUg
PSB7CisgICAgY29uc3RydWN0b3I6IE1vY2tCdWlsZGJvdFRlc3RSZXN1bHRzLAorCisgICAgYWRk
SmF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXM6IGZ1bmN0aW9uKGRhdGEpCisgICAgeworICAgICAg
ICAgdGhpcy5yZWdyZXNzaW9ucyA9IGRhdGEuc3RyZXNzVGVzdEZhaWx1cmVzOworICAgIH0sCit9
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL3Rlc3Qt
anNjLXJlc3VsdHMuanNvbiBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy90
ZXN0LWpzYy1yZXN1bHRzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTVjYzlhMTFmY2Q1ZmMxODdkYjQwOTE3
N2U1Mjc0NDEzMTMwNmZjZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRz
L3Rlc3RzL3Jlc291cmNlcy90ZXN0LWpzYy1yZXN1bHRzLmpzb24KQEAgLTAsMCArMSBAQAoreyJz
dHJlc3NUZXN0RmFpbHVyZXMiOlsibG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQiLCAiY29uc2Vj
dGV0dXIgYWRpcGlzY2luZyBlbGl0IiwgInNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50
IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhIl0sICJhbGxBcGlUZXN0c1Bhc3NlZCI6
IHRydWV9CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMv
dGVzdHMuanMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVzdHMuanMK
aW5kZXggZjI3MmEwYWIxOGFjYzhmZjk1N2Q1YjBiZDcxNzI0OTdiNWJkYzZlZS4uODU0ZTM1ODhl
ODAyMjZlYmNhZTk2NmEwMWY1YTdhYzk1ZDRjNjk5NSAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL3Rlc3RzLmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3Jp
cHRzL3Rlc3RzL3Jlc291cmNlcy90ZXN0cy5qcwpAQCAtMjYzLDYgKzI2Myw5MCBAQCB0ZXN0KCJf
Zm9ybWF0UmV2aXNpb25Gb3JEaXNwbGF5IEdpdCIsIGZ1bmN0aW9uKCkKICAgICBzdHJpY3RFcXVh
bCh0aGlzLnZpZXcuX2Zvcm1hdFJldmlzaW9uRm9yRGlzcGxheSgiMGU0OThkYjVkOGU1YjVhMzQy
NjMxIiwgcmVwb3NpdG9yeSksICIwZTQ5OGRiIiwgIlNob3VsZCBiZSAwZTQ5OGRiIik7CiB9KTsK
IAordGVzdCgiX3BvcG92ZXJDb250ZW50Rm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnMg
bG9hZCBmYWlsdXJlIFVJIHRlc3QiLCBmdW5jdGlvbigpCit7CisgICAgdmFyIGZpbmlzaGVkID0g
ZmFsc2U7CisgICAgdmFyIGl0ZXJhdGlvbiA9IG5ldyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLnF1
ZXVlLCAxLCBmaW5pc2hlZCk7CisgICAgaXRlcmF0aW9uLmphdmFTY3JpcHRDb3JlVGVzdFJlc3Vs
dHMgPSBuZXcgTW9ja0J1aWxkYm90VGVzdFJlc3VsdHMoKTsKKworICAgIHZhciB2aWV3ID0gbmV3
IEJ1aWxkYm90UXVldWVWaWV3KCk7CisgICAgdmFyIGNvbnRlbnQgPSB2aWV3Ll9wb3BvdmVyQ29u
dGVudEZvckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jlc3Npb25zKGl0ZXJhdGlvbik7CisKKyAgICB2
YXIgbnVtQ2hpbGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnQgPSAyOworICAgIHN0cmljdEVxdWFs
KGNvbnRlbnQuY2hpbGROb2Rlcy5sZW5ndGgsIDEgKyBudW1DaGlsZHJlbkluRW1wdHlQb3BvdmVy
Q29udGVudCk7CisgICAgc3RyaWN0RXF1YWwoY29udGVudC5jaGlsZE5vZGVzW251bUNoaWxkcmVu
SW5FbXB0eVBvcG92ZXJDb250ZW50XS5jbGFzc05hbWUsICJsb2FkaW5nLWZhaWx1cmUiLCAiUG9w
b3ZlciBmb3IgbG9hZGluZyBmYWlsdXJlIG11c3QgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgY2xhc3Mi
KTsKKyAgICBzdHJpY3RFcXVhbChjb250ZW50LmNoaWxkTm9kZXNbbnVtQ2hpbGRyZW5JbkVtcHR5
UG9wb3ZlckNvbnRlbnRdLnRleHRDb250ZW50LCAiVGVzdCByZXN1bHRzIGNvdWxkblx1MjAxOXQg
YmUgbG9hZGVkIiwgIlBvcG92ZXIgZm9yIGxvYWRpbmcgZmFpbHVyZSBtdXN0IHVzZSB0aGUgY29y
cmVjdCB0ZXh0Iik7Cit9KTsKKwordGVzdCgiX3ByZXNlbnRQb3BvdmVyRm9ySmF2YVNjcmlwdENv
cmVUZXN0UmVncmVzc2lvbnMgaW5jbHVkaW5nIGxvYWRpbmciLCBmdW5jdGlvbigpCit7CisgICAg
dmFyIGZpbmlzaGVkID0gZmFsc2U7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgICB2YXIgcG9wb3ZlciA9IG5ldyBEYXNoYm9hcmQuUG9wb3Zlcigp
OworICAgIHZhciBpdGVyYXRpb24gPSBuZXcgQnVpbGRib3RJdGVyYXRpb24odGhpcy5xdWV1ZSwg
MSwgZmluaXNoZWQpOworICAgIGl0ZXJhdGlvbi5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzID0g
bmV3IE1vY2tCdWlsZGJvdFRlc3RSZXN1bHRzKCk7CisKKyAgICB2YXIgdmlldyA9IG5ldyBCdWls
ZGJvdFF1ZXVlVmlldygpOworICAgIHZpZXcuX3ByZXNlbnRQb3BvdmVyRm9ySmF2YVNjcmlwdENv
cmVUZXN0UmVncmVzc2lvbnMoZWxlbWVudCwgcG9wb3ZlciwgaXRlcmF0aW9uLCAianNjb3JlLXRl
c3QiKTsKKworICAgIEpTT04ubG9hZCgicmVzb3VyY2VzL3Rlc3QtanNjLXJlc3VsdHMuanNvbiIs
IGZ1bmN0aW9uKGRhdGEpCisgICAgeworICAgICAgICB2YXIgdGVzdFJlZ3Jlc3Npb25zID0gZGF0
YS5zdHJlc3NUZXN0RmFpbHVyZXM7CisgICAgICAgIHZhciBudW1DaGlsZHJlbkluRW1wdHlQb3Bv
dmVyQ29udGVudCA9IDI7CisgICAgICAgIHN0cmljdEVxdWFsKHBvcG92ZXIuX2NvbnRlbnQuY2hp
bGROb2Rlcy5sZW5ndGggLSBudW1DaGlsZHJlbkluRW1wdHlQb3BvdmVyQ29udGVudCwKKyAgICAg
ICAgICAgIHRlc3RSZWdyZXNzaW9ucy5sZW5ndGgsCisgICAgICAgICAgICAiTnVtYmVyIG9mIGZh
aWx1cmVzIGluIHBvcG92ZXIgbXVzdCBiZSBlcXVhbCB0byBudW1iZXIgb2YgZmFpbGVkIHRlc3Rz
Iik7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0UmVncmVzc2lvbnMubGVuZ3Ro
OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cmljdEVxdWFsKHBvcG92ZXIuX2NvbnRl
bnQuY2hpbGROb2Rlc1tpK251bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50XS5jaGlsZE5v
ZGVzWzBdLnRleHRDb250ZW50LAorICAgICAgICAgICAgICAgIHRlc3RSZWdyZXNzaW9uc1tpXSwK
KyAgICAgICAgICAgICAgICAiTmFtZXMgb2YgZmFpbHVyZXMgbXVzdCBtYXRjaCIKKyAgICAgICAg
ICAgICk7CisgICAgICAgIH0KKyAgICB9KTsKK30pOworCit0ZXN0KCJfY3JlYXRlTG9hZGluZ0lu
ZGljYXRvciIsIGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgZmluaXNoZWQgPSBmYWxzZTsKKyAgICB2
YXIgaXRlcmF0aW9uID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9uKHRoaXMucXVldWUsIDEsIGZpbmlz
aGVkKTsKKworICAgIHZhciB2aWV3ID0gbmV3IEJ1aWxkYm90UXVldWVWaWV3KCk7CisgICAgdmFy
IGhlYWRpbmcgPSAiRmFpciBpcyBmb3VsLCBhbmQgZm91bCBpcyBmYWlyIjsKKyAgICB2YXIgY29u
dGVudCA9IHZpZXcuX2NyZWF0ZUxvYWRpbmdJbmRpY2F0b3IoaXRlcmF0aW9uLCBoZWFkaW5nKTsK
KworICAgIHZhciBudW1DaGlsZHJlbkluRW1wdHlQb3BvdmVyQ29udGVudCA9IDI7CisgICAgc3Ry
aWN0RXF1YWwoY29udGVudC5jaGlsZE5vZGVzLmxlbmd0aCwgMSArIG51bUNoaWxkcmVuSW5FbXB0
eVBvcG92ZXJDb250ZW50KTsKKyAgICBzdHJpY3RFcXVhbChjb250ZW50LmNoaWxkTm9kZXNbbnVt
Q2hpbGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnRdLmNsYXNzTmFtZSwgImxvYWRpbmctaW5kaWNh
dG9yIiwgIlBvcG92ZXIgZm9yIGxvYWRpbmcgaW5kaWNhdG9yIG11c3QgaGF2ZSB0aGUgYXBwcm9w
cmlhdGUgY2xhc3MiKTsKKyAgICBzdHJpY3RFcXVhbChjb250ZW50LmNoaWxkTm9kZXNbbnVtQ2hp
bGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnRdLnRleHRDb250ZW50LCAiTG9hZGluZ1x1MjAyNiIs
ICJQb3BvdmVyIGZvciBsb2FkaW5nIGZhaWx1cmUgbXVzdCB1c2UgdGhlIGNvcnJlY3QgdGV4dCIp
OworfSk7CisKK3Rlc3QoIl9wcmVzZW50UG9wb3ZlckZvckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jl
c3Npb25zIGFscmVhZHkgbG9hZGVkIiwgZnVuY3Rpb24oKQoreworICAgIHZhciBmaW5pc2hlZCA9
IGZhbHNlOworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CisgICAgdmFyIHBvcG92ZXIgPSBuZXcgRGFzaGJvYXJkLlBvcG92ZXIoKTsKKyAgICB2YXIgaXRl
cmF0aW9uID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9uKHRoaXMucXVldWUsIDEsIGZpbmlzaGVkKTsK
KyAgICBpdGVyYXRpb24uamF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cyA9IHsicmVncmVzc2lvbnMi
OiBbInVubyIsICJkb3MiLCAidHJlcyJdfTsKKworICAgIHZhciB2aWV3ID0gbmV3IEJ1aWxkYm90
UXVldWVWaWV3KCk7CisgICAgdmlldy5fcHJlc2VudFBvcG92ZXJGb3JKYXZhU2NyaXB0Q29yZVRl
c3RSZWdyZXNzaW9ucyhlbGVtZW50LCBwb3BvdmVyLCBpdGVyYXRpb24sICJqc2NvcmUtdGVzdCIp
OworCisgICAgdmFyIG51bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50ID0gMjsKKyAgICBz
dHJpY3RFcXVhbChwb3BvdmVyLl9jb250ZW50LmNoaWxkTm9kZXMubGVuZ3RoIC0gbnVtQ2hpbGRy
ZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnQsCisgICAgICAgIGl0ZXJhdGlvbi5qYXZhU2NyaXB0Q29y
ZVRlc3RSZXN1bHRzLnJlZ3Jlc3Npb25zLmxlbmd0aCwKKyAgICAgICAgIk51bWJlciBvZiBmYWls
dXJlcyBpbiBwb3BvdmVyIG11c3QgYmUgZXF1YWwgdG8gbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cyIp
OworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVyYXRpb24uamF2YVNjcmlwdENvcmVUZXN0
UmVzdWx0cy5yZWdyZXNzaW9ucy5sZW5ndGg7IGkrKykKKyAgICB7CisgICAgICAgIHN0cmljdEVx
dWFsKHBvcG92ZXIuX2NvbnRlbnQuY2hpbGROb2Rlc1tpK251bUNoaWxkcmVuSW5FbXB0eVBvcG92
ZXJDb250ZW50XS5jaGlsZE5vZGVzWzBdLnRleHRDb250ZW50LAorICAgICAgICAgICAgaXRlcmF0
aW9uLmphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMucmVncmVzc2lvbnNbaV0sCisgICAgICAgICAg
ICAiTmFtZXMgb2YgZmFpbHVyZXMgbXVzdCBtYXRjaCIKKyAgICAgICAgKTsKKyAgICB9Cit9KTsK
KwogbW9kdWxlKCJCdWlsZEJvdFF1ZXVlIiwgewogICAgIHNldHVwOiBmdW5jdGlvbigpIHsKICAg
ICAgICAgRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS50cmFjID0gbmV3IE1vY2tUcmFj
KCk7CkBAIC0zNTUsNCArNDM5LDQgQEAgdGVzdCgiY29tcGFyZUl0ZXJhdGlvbnNCeVJldmlzaW9u
cyIsIGZ1bmN0aW9uKCkKICAgICBvayh0aGlzLnF1ZXVlLmNvbXBhcmVJdGVyYXRpb25zQnlSZXZp
c2lvbnMoaXRlcmF0aW9uMiwgaXRlcmF0aW9uMSkgPCAwLCAiY29tcGFyZUl0ZXJhdGlvbnNCeVJl
dmlzaW9uczogbGVzcyB0aGFuIik7CiAgICAgb2sodGhpcy5xdWV1ZS5jb21wYXJlSXRlcmF0aW9u
c0J5UmV2aXNpb25zKGl0ZXJhdGlvbjEsIGl0ZXJhdGlvbjIpID4gMCwgImNvbXBhcmVJdGVyYXRp
b25zQnlSZXZpc2lvbnM6IGdyZWF0ZXIgdGhhbiIpOwogICAgIHN0cmljdEVxdWFsKHRoaXMucXVl
dWUuY29tcGFyZUl0ZXJhdGlvbnNCeVJldmlzaW9ucyhpdGVyYXRpb24yLCBpdGVyYXRpb24yKSwg
MCwgImNvbXBhcmVJdGVyYXRpb25zQnlSZXZpc2lvbnM6IGVxdWFsIik7Ci19KTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCit9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279723</attachid>
            <date>2016-05-24 16:48:06 -0700</date>
            <delta_ts>2016-05-27 14:06:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156595-20160524164913.patch</filename>
            <type>text/plain</type>
            <size>42693</size>
            <attacher name="Srinivasan Vijayaraghavan">webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMzYxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjc2NDdmYjI3MTczYWRmNzQ4ZGZkMjVkZmQ5MDA3Nzc4
MjVmZjQxNC4uZTc5N2YyNTM2NmNkMzlhYWE0N2JjZjhmNjk4YmQ2NmVjY2UwZTE1NiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2
IEBACisyMDE2LTA1LTIzICBTcmluaXZhc2FuIFZpamF5YXJhZ2hhdmFuICA8c3ZpamF5YXJhZ2hh
dmFuQGFwcGxlLmNvbT4KKworICAgICAgICBEaXNwbGF5IGZhaWxpbmcgSlNDIHN0cmVzcyB0ZXN0
cyBpbiBidWlsZGJvdCBkYXNoYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1NjU5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3QuanM6CisgICAgICAgIChC
dWlsZGJvdC5wcm90b3R5cGUuamF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXNVUkxGb3JJdGVyYXRp
b24pOiBHZW5lcmF0ZSB0aGUgVVJMIGZvciByYXcgSlNPTiBvdXRwdXQgb2YKKyAgICAgICAgSlND
IHRlc3RzLgorICAgICAgICAoQnVpbGRib3QucHJvdG90eXBlLmphdmFTY3JpcHRDb3JlVGVzdFN0
ZGlvVVJMRm9ySXRlcmF0aW9uKTogR2VuZXJhdGUgdGhlIFVSTCBmb3IgaHVtYW4tcmVhZGFibGUg
c3RkaW8gb3V0cHV0CisgICAgICAgIG9mIEpTQyB0ZXN0cy4KKyAgICAgICAgKiBCdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2Ny
aXB0cy9CdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3LmpzOgorICAgICAgICAoQnVpbGRib3RDb21i
aW5lZFF1ZXVlVmlldy5wcm90b3R5cGUudXBkYXRlKTogRGlzcGxheSBKU0MgdGVzdCByZXN1bHRz
IGluIHBvcG92ZXIuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RJdGVyYXRpb24u
anM6CisgICAgICAgIChCdWlsZGJvdEl0ZXJhdGlvbik6IEFkZCBqYXZhU2NyaXB0Q29yZVRlc3RS
ZXN1bHRzIHZhcmlhYmxlLgorICAgICAgICAoQnVpbGRib3RJdGVyYXRpb24ucHJvdG90eXBlLik6
IENoZWNrIGZvciBqYXZhc2NyaXB0Y29yZSB0ZXN0cyBzdGVwLgorICAgICAgICAoQnVpbGRib3RJ
dGVyYXRpb24ucHJvdG90eXBlLmxvYWRMYXlvdXRUZXN0UmVzdWx0cyk6IEFkZCBjb21tYSBhdCBj
bG9zaW5nIGJyYWNlLgorICAgICAgICAoQnVpbGRib3RJdGVyYXRpb24ucHJvdG90eXBlLmxvYWRK
YXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzKTogRmV0Y2ggSlNPTiBmcm9tIEJ1aWxkYm90IHNlcnZl
ci4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmlldy5qczoKKyAgICAg
ICAgKEJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZS5fY3JlYXRlTG9hZGluZ0luZGljYXRvcik6
IFJldXNhYmxlIGZ1bmN0aW9uLgorICAgICAgICAoQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBl
Ll9vblBvcG92ZXJDb3B5KTogUmV1c2FibGUgY29weSBldmVudCBoYW5kbGVyIHRvIGFsbG93IGFj
Y3VyYXRlIGNvcHlpbmcgb2YgdGV4dAorICAgICAgICBmcm9tIHBvcG92ZXJzLgorICAgICAgICAo
QnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlLl9wb3BvdmVyQ29udGVudEZvckphdmFTY3JpcHRD
b3JlVGVzdFJlZ3Jlc3Npb25zKTogR2VuZXJhdGVzIHRoZSBwb3BvdmVyIGJ1YmJsZSdzCisgICAg
ICAgIGlubmVyIEhUTUwgZnJvbSB0aGUgSlNDIGZhaWx1cmUgZGF0YS4KKyAgICAgICAgKEJ1aWxk
Ym90UXVldWVWaWV3LnByb3RvdHlwZS5fcHJlc2VudFBvcG92ZXJGb3JKYXZhU2NyaXB0Q29yZVRl
c3RSZWdyZXNzaW9ucyk6IEdlbmVyYXRlIHRoZSBwb3BvdmVyIGJ1YmJsZQorICAgICAgICBmb3Ig
SlNDIHJlc3VsdHMgYW5kIGhhbmRsZSByZXF1ZXN0IGZhaWx1cmVzLgorICAgICAgICAoQnVpbGRi
b3RRdWV1ZVZpZXcucHJvdG90eXBlLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbik6IE1vdmVk
IGZyb20gc3ViY2xhc3MuCisgICAgICAgIChCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUuX3Rl
c3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uV2l0aENvdW50KTogTW92ZWQgZnJvbSBzdWJjbGFzcy4K
KyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RSZXN1bHRzLmpzOgorICAgICAg
ICAoQnVpbGRib3RUZXN0UmVzdWx0cy5wcm90b3R5cGUuYWRkSmF2YVNjcmlwdENvcmVUZXN0RmFp
bHVyZXMpOiBQYXJzZSBKU09OIGludG8gYSBsaXN0IG9mIGZhaWxpbmcgdGVzdHMuCisgICAgICAg
ICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanM6CisgICAgICAgIChC
dWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUuYXBwZW5kQnVpbGRlclF1ZXVlU3RhdHVz
KTogSW5zdGFudGlhdGUgUG9wb3ZlclRyYWNrZXJzIGZvciBidWlsZHMgd2hvc2UgCisgICAgICAg
IG9ubHkgZmFpbHVyZXMgYXJlIEpTQyB0ZXN0cy4KKyAgICAgICAgKEJ1aWxkYm90VGVzdGVyUXVl
dWVWaWV3LnByb3RvdHlwZS5fcG9wb3ZlckNvbnRlbnRGb3JMYXlvdXRUZXN0UmVncmVzc2lvbnMp
OiBVc2UgX29uUG9wb3ZlckNvcHkuCisgICAgICAgIChCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5w
cm90b3R5cGUuX3ByZXNlbnRQb3BvdmVyRm9yTGF5b3V0VGVzdFJlZ3Jlc3Npb25zKTogVXNlIF9j
cmVhdGVMb2FkaW5nSW5kaWNhdG9yLgorICAgICAgICAoQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcu
cHJvdG90eXBlLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbik6IERlbGV0ZWQuIE1vdmVkIHRv
IHN1cGVyY2xhc3MuCisgICAgICAgIChCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUu
X3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uV2l0aENvdW50KTogRGVsZXRlZC4gTW92ZWQgdG8g
c3VwZXJjbGFzcy4KKyAgICAgICAgKEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZS5j
b250ZW50Lm9uY29weSk6IERlbGV0ZWQuIFVzaW5nIHN1cGVyY2xhc3MncyByZXVzYWJsZSBmdW5j
dGlvbiBhcyBjb3B5IGhhbmRsZXIgaW5zdGVhZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90
ZXN0cy9pbmRleC5odG1sOiBBZGQgbmV3IHNjcmlwdCBmaWxlcy4KKyAgICAgICAgKiBCdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
U2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90LmpzOiBBZGRlZC4KKyAgICAgICAg
KE1vY2tCdWlsZGJvdCk6IE1vY2tlZCB2ZXJzaW9uIG9mIEJ1aWxkYm90LCBvbmx5IGNvbnRhaW5p
bmcgVVJMIG1ldGhvZHMuCisgICAgICAgIChNb2NrQnVpbGRib3QucHJvdG90eXBlLmJ1aWxkUGFn
ZVVSTEZvckl0ZXJhdGlvbik6IFNhbWUgYXMgcmVhbCBCdWlsZGJvdC5qcworICAgICAgICAoTW9j
a0J1aWxkYm90LnByb3RvdHlwZS5qYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlc1VSTEZvckl0ZXJh
dGlvbik6IFBvaW50cyB0byBsb2NhbCBmaWxlIGNvbnRhaW5pbmcgSlNPTiBmb3IgdGVzdC4KKyAg
ICAgICAgKE1vY2tCdWlsZGJvdC5wcm90b3R5cGUuamF2YVNjcmlwdENvcmVUZXN0U3RkaW9VUkxG
b3JJdGVyYXRpb24pOiBTYW1lIGFzIHJlYWwgQnVpbGRib3QuanMKKyAgICAgICAgKiBCdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
U2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90UXVldWUuanM6CisgICAgICAgIChN
b2NrQnVpbGRib3RRdWV1ZSk6IFVzZSBhIE1vY2tCdWlsZGJvdCgpIGluc3RlYWQgb2YgYSBzdHJp
bmcuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJv
dFRlc3RSZXN1bHRzLmpzOiBBZGRlZC4KKyAgICAgICAgKE1vY2tCdWlsZGJvdFRlc3RSZXN1bHRz
KTogTW9ja2VkIHZlcnNpb24gb2YgQnVpbGRib3RUZXN0UmVzdWx0cy4KKyAgICAgICAgKE1vY2tC
dWlsZGJvdFRlc3RSZXN1bHRzLnByb3RvdHlwZS5hZGRKYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJl
cyk6IFNldHMgdGhlICdyZWdyZXNzaW9ucycgdmFyaWFibGUuCisgICAgICAgICogQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Nj
cmlwdHMvdGVzdHMvcmVzb3VyY2VzL3Rlc3QtanNjLXJlc3VsdHMuanNvbjogQWRkZWQuCisgICAg
ICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL3Rlc3RzLmpzOiBBZGQgZm91ciBn
cm91cHMgb2YgdGVzdHMuCisKIDIwMTYtMDUtMjAgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxl
ckBhcHBsZS5jb20+CiAgICAgICAgIFdlIHNob3VsZCBoYXZlIEpTQmVuY2ggaW4gUGVyZm9ybWFu
Y2VUZXN0cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3OTUyCmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdC5qcyBiL1Rv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90LmpzCmluZGV4IDA4ZGU5Yzg1ZjM0YTQzNmVhZmVl
N2NjNzkzYzdhOWVhOTExMzc0NGEuLjM5NTNjMGFjZDlkYTE4ZWIwYjNkMDU1NWVmODI3Mzk0MDQz
ZTIzN2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90LmpzCisrKyBi
L1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUxLDYgKzE1MSwxNiBAQCBC
dWlsZGJvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiYnVp
bGRlcnMvIiArIGVuY29kZVVSSUNvbXBvbmVudChpdGVyYXRpb24ucXVldWUuaWQpICsgIi9idWls
ZHMvIiArIGl0ZXJhdGlvbi5pZDsKICAgICB9LAogCisgICAgamF2YVNjcmlwdENvcmVUZXN0RmFp
bHVyZXNVUkxGb3JJdGVyYXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgbmFtZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiYnVpbGRlcnMvIiArIGVuY29kZVVSSUNvbXBv
bmVudChpdGVyYXRpb24ucXVldWUuaWQpICsgIi9idWlsZHMvIiArIGl0ZXJhdGlvbi5pZCArICIv
c3RlcHMvIiArIG5hbWUgKyAiL2xvZ3MvanNvbi90ZXh0IjsKKyAgICB9LAorCisgICAgamF2YVNj
cmlwdENvcmVUZXN0U3RkaW9VUkxGb3JJdGVyYXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgbmFt
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiYnVpbGRlcnMvIiArIGVu
Y29kZVVSSUNvbXBvbmVudChpdGVyYXRpb24ucXVldWUuaWQpICsgIi9idWlsZHMvIiArIGl0ZXJh
dGlvbi5pZCArICIvc3RlcHMvIiArIG5hbWUgKyAiL2xvZ3Mvc3RkaW8iOworICAgIH0sCisKICAg
ICBsYXlvdXRUZXN0UmVzdWx0c0RpcmVjdG9yeVVSTEZvckl0ZXJhdGlvbjogZnVuY3Rpb24oaXRl
cmF0aW9uKQogICAgIHsKICAgICAgICAgdmFyIHVuZGVyc2NvcmVTZXBhcmF0ZWRSZXZpc2lvbnMg
PSAiciI7CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdENvbWJpbmVk
UXVldWVWaWV3LmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RDb21iaW5lZFF1ZXVl
Vmlldy5qcwppbmRleCAxMzg3NGQ1YjgyZDNhZmE4NDQ2OWIwYTk5ZGYzMjhhMWEwNzdhODk2Li41
YWU2YTM4ZDZmOWNiNTEwNzFjNDg4OWZjMDAzMTY4MTlhNzZlZTNhIDEwMDY0NAotLS0gYS9Ub29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3LmpzCisrKyBiL1Rvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9TY3JpcHRzL0J1aWxkYm90Q29tYmluZWRRdWV1ZVZpZXcuanMKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNS0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
ODgsOSArODgsOSBAQCBCdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3LnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSB0aGlzLnJldmlzaW9uQ29udGVudEZvckl0ZXJhdGlv
bihzbG93ZXN0UXVldWUubW9zdFJlY2VudFN1Y2Nlc3NmdWxJdGVyYXRpb24pOwogICAgICAgICAg
ICAgdmFyIHN0YXR1c01lc3NhZ2VQYXNzZWQgPSAiYWxsICIgKyAocXVldWUuYnVpbGRlciA/ICJi
dWlsZHMgc3VjY2VlZGVkIiA6ICJ0ZXN0cyBwYXNzZWQiKTsKLSAgICAgICAgICAgIHZhciBzdGF0
dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZSwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkdv
b2QsIHN0YXR1c01lc3NhZ2VQYXNzZWQsIG51bGwsIG51bGwpOwotICAgICAgICAgICAgbmV3IFBv
cG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNCdWJibGVFbGVtZW50LCB0aGlzLl9wcmVzZW50UG9w
b3ZlckZvckNvbWJpbmVkR3JlZW5CdWJibGUuYmluZCh0aGlzKSk7Ci0gICAgICAgICAgICB0aGlz
LmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzLmVsZW1lbnQpOworICAgICAgICAgICAgdmFyIHN0
YXR1c1ZpZXcgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZSwgU3RhdHVzTGluZVZpZXcuU3Rh
dHVzLkdvb2QsIHN0YXR1c01lc3NhZ2VQYXNzZWQsIG51bGwsIG51bGwpOworICAgICAgICAgICAg
bmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1c1ZpZXcuc3RhdHVzQnViYmxlRWxlbWVudCwgdGhpcy5f
cHJlc2VudFBvcG92ZXJGb3JDb21iaW5lZEdyZWVuQnViYmxlLmJpbmQodGhpcykpOworICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHN0YXR1c1ZpZXcuZWxlbWVudCk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB0aGlzLmFwcGVuZEJ1aWxkU3R5bGUuY2FsbCh0aGlz
LCB0aGlzLnF1ZXVlcywgbnVsbCwgZnVuY3Rpb24ocXVldWUpIHsKICAgICAgICAgICAgICAgICBp
ZiAocXVldWUuYnVpbGRib3QubmVlZHNBdXRoZW50aWNhdGlvbiAmJiAhcXVldWUuYnVpbGRib3Qu
aXNBdXRoZW50aWNhdGVkKSB7CkBAIC0xMDcsOSArMTA3LDE2IEBAIEJ1aWxkYm90Q29tYmluZWRR
dWV1ZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGlmIChmaXJzdFJlY2VudFVu
c3VjY2Vzc2Z1bEl0ZXJhdGlvbiAmJiBmaXJzdFJlY2VudFVuc3VjY2Vzc2Z1bEl0ZXJhdGlvbi5s
b2FkZWQgJiYgbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uICYmIG1vc3RSZWNlbnRGaW5pc2hl
ZEl0ZXJhdGlvbi5sb2FkZWQpIHsKICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
IW1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi5zdWNjZXNzZnVsKTsKICAgICAgICAgICAgICAg
ICAgICAgdmFyIG1lc3NhZ2UgPSB0aGlzLnJldmlzaW9uQ29udGVudEZvckl0ZXJhdGlvbihtb3N0
UmVjZW50RmluaXNoZWRJdGVyYXRpb24sIG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi5wcm9k
dWN0aXZlID8gbW9zdFJlY2VudFN1Y2Nlc3NmdWxJdGVyYXRpb24gOiBudWxsKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24ucHJvZHVjdGl2ZSkK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24ucHJv
ZHVjdGl2ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IFN0YXR1c0xp
bmVWaWV3LlN0YXR1cy5EYW5nZXI7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi5mYWls
ZWRUZXN0U3RlcHMubGVuZ3RoID09PSAxICYmIG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi5m
YWlsZWRUZXN0U3RlcHNbMF0ubmFtZSBpbiBbImpzY29yZS10ZXN0IiwgIndlYmtpdC0zMmJpdC1q
c2MtdGVzdCIsICJ3ZWJraXQtanNjLWNsb29wLXRlc3QiXSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIGZhaWxlZFN0ZXAgPSBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24uZmFpbGVk
VGVzdFN0ZXBzWzBdOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIFVSTCA9IG1vc3RSZWNl
bnRGaW5pc2hlZEl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5qYXZhU2NyaXB0Q29yZVRlc3RTdGRp
b1VSTEZvckl0ZXJhdGlvbihtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24sIGZhaWxlZFN0ZXAu
bmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzVmlldyA9IG5ldyBTdGF0
dXNMaW5lVmlldyhtZXNzYWdlLCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuQmFkLCB0aGlzLl90ZXN0
U3RlcEZhaWx1cmVEZXNjcmlwdGlvbihmYWlsZWRTdGVwKSwgZmFpbGVkU3RlcC5mYWlsdXJlQ291
bnQsIFVSTCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hp
bGQoc3RhdHVzVmlldy5lbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3Bv
dmVyVHJhY2tlcihzdGF0dXNWaWV3LnN0YXR1c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNlbnRQ
b3BvdmVyRm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnMuYmluZCh0aGlzLCBmYWlsZWRT
dGVwLm5hbWUpLCBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24pOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gRGlyZWN0IGxpbmtzIHRvIHNvbWUgY29tbW9uIGxvZ3MuCiAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9u
LmZhaWx1cmVMb2dVUkwoImJ1aWxkIGxvZyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCF1cmwpCkBAIC0xMjMsMjIgKzEzMCwyNCBAQCBCdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgLy8gU29tZSBvdGhlciBzdGVwIGZhaWxl
ZCwgbGluayB0byBtYWluIGJ1aWxkYm90IHBhZ2UgZm9yIHRoZSBpdGVyYXRpb24uCiAgICAgICAg
ICAgICAgICAgICAgIGlmICghdXJsKQogICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gcXVl
dWUuYnVpbGRib3QuYnVpbGRQYWdlVVJMRm9ySXRlcmF0aW9uKG1vc3RSZWNlbnRGaW5pc2hlZEl0
ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGlu
ZVZpZXcobWVzc2FnZSwgc3RhdHVzLCBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24udGV4dCwg
bnVsbCwgdXJsKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxk
KHN0YXR1cy5lbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1c1ZpZXcgPSBu
ZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZSwgc3RhdHVzLCBtb3N0UmVjZW50RmluaXNoZWRJdGVy
YXRpb24udGV4dCwgbnVsbCwgdXJsKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50
LmFwcGVuZENoaWxkKHN0YXR1c1ZpZXcuZWxlbWVudCk7CiAKICAgICAgICAgICAgICAgICAgICAg
aWYgKG5lZWRzUG9wb3ZlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJh
Y2tlcihzdGF0dXMuc3RhdHVzQnViYmxlRWxlbWVudCwgdGhpcy5fcHJlc2VudEluZGl2aWR1YWxR
dWV1ZVBvcG92ZXIuYmluZCh0aGlzKSwgbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tlcihzdGF0dXNWaWV3LnN0YXR1
c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNlbnRJbmRpdmlkdWFsUXVldWVQb3BvdmVyLmJpbmQo
dGhpcyksIG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbik7CiAgICAgICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICAgICAgdmFyIHN0YXR1c01lc3NhZ2VQYXNzZWQgPSAiYWxsICIgKyAocXVl
dWUuYnVpbGRlciA/ICJidWlsZHMgc3VjY2VlZGVkIiA6ICJ0ZXN0cyBwYXNzZWQiKTsKICAgICAg
ICAgICAgICAgICBpZiAobW9zdFJlY2VudFN1Y2Nlc3NmdWxJdGVyYXRpb24gJiYgbW9zdFJlY2Vu
dFN1Y2Nlc3NmdWxJdGVyYXRpb24ubG9hZGVkKSB7CiAgICAgICAgICAgICAgICAgICAgIHZhciBt
ZXNzYWdlID0gdGhpcy5yZXZpc2lvbkNvbnRlbnRGb3JJdGVyYXRpb24obW9zdFJlY2VudFN1Y2Nl
c3NmdWxJdGVyYXRpb24pOwogICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gcXVldWUuYnVp
bGRib3QuYnVpbGRQYWdlVVJMRm9ySXRlcmF0aW9uKG1vc3RSZWNlbnRTdWNjZXNzZnVsSXRlcmF0
aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmll
dyhtZXNzYWdlLCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuR29vZCwgZmlyc3RSZWNlbnRVbnN1Y2Nl
c3NmdWxJdGVyYXRpb24gPyAibGFzdCBzdWNjZWVkZWQiIDogc3RhdHVzTWVzc2FnZVBhc3NlZCwg
bnVsbCwgdXJsKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxk
KHN0YXR1cy5lbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGxhYmVsID0gZmlyc3RS
ZWNlbnRVbnN1Y2Nlc3NmdWxJdGVyYXRpb24gPyAibGFzdCBzdWNjZWVkZWQiIDogc3RhdHVzTWVz
c2FnZVBhc3NlZDsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1c1ZpZXcgPSBuZXcgU3Rh
dHVzTGluZVZpZXcobWVzc2FnZSwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkdvb2QsIGxhYmVsLCBu
dWxsLCB1cmwpOworICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
c3RhdHVzVmlldy5lbGVtZW50KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KCJ1bmtub3duIiwgU3Rh
dHVzTGluZVZpZXcuU3RhdHVzLk5ldXRyYWwsIGZpcnN0UmVjZW50VW5zdWNjZXNzZnVsSXRlcmF0
aW9uID8gImxhc3Qgc3VjY2VlZGVkIiA6IHN0YXR1c01lc3NhZ2VQYXNzZWQpOwotICAgICAgICAg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzLmVsZW1lbnQpOworICAg
ICAgICAgICAgICAgICAgICB2YXIgbGFiZWwgPSBmaXJzdFJlY2VudFVuc3VjY2Vzc2Z1bEl0ZXJh
dGlvbiA/ICJsYXN0IHN1Y2NlZWRlZCIgOiBzdGF0dXNNZXNzYWdlUGFzc2VkOworICAgICAgICAg
ICAgICAgICAgICB2YXIgc3RhdHVzVmlldyA9IG5ldyBTdGF0dXNMaW5lVmlldygidW5rbm93biIs
IFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5OZXV0cmFsLCBsYWJlbCk7CisgICAgICAgICAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChzdGF0dXNWaWV3LmVsZW1lbnQpOwogCiAgICAg
ICAgICAgICAgICAgICAgIGlmIChmaXJzdFJlY2VudFVuc3VjY2Vzc2Z1bEl0ZXJhdGlvbikgewog
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIGZhaWxlZCBpdGVyYXRpb24gYnV0
IG5vIHN1Y2Nlc3NmdWwuIEl0IG1pZ2h0IGJlIGZ1cnRoZXIgYmFjayBpbiB0aW1lLgpkaWZmIC0t
Z2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RJdGVyYXRpb24uanMgYi9Ub29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvU2NyaXB0cy9CdWlsZGJvdEl0ZXJhdGlvbi5qcwppbmRleCBlMjhjMzFlM2ZjNTMxN2Y2
YjgyMWZlMWI2YTFlYThhNGVkNzJkMTdmLi5kYzcwMTJjMTA5YzM4YmFjMDY5NDA2ODMyOWVlMTdj
YzI5YmQ4YzA1IDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEl0ZXJh
dGlvbi5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEl0ZXJhdGlvbi5qcwpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0LCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDYsNiArNDYsNyBAQCBCdWlsZGJvdEl0ZXJhdGlvbiA9IGZ1bmN0aW9uKHF1
ZXVlLCBkYXRhT3JJRCwgZmluaXNoZWQpCiAgICAgdGhpcy5yZXZpc2lvbiA9IHt9OwogCiAgICAg
dGhpcy5sYXlvdXRUZXN0UmVzdWx0cyA9IG51bGw7IC8vIExheW91dCB0ZXN0IHJlc3VsdHMgY2Fu
IGJlIG5lZWRlZCBldmVuIGlmIGFsbCB0ZXN0cyBwYXNzZWQsIGUuZy4gZm9yIHRoZSBsZWFrcyBi
b3QuCisgICAgdGhpcy5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzID0gbnVsbDsKIAogICAgIHRo
aXMuZmFpbGVkVGVzdFN0ZXBzID0gW107CiAKQEAgLTI1MCw2ICsyNTEsOCBAQCBCdWlsZGJvdEl0
ZXJhdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IG5ldyBCdWls
ZGJvdFRlc3RSZXN1bHRzKHN0ZXApOwogICAgICAgICAgICAgaWYgKHN0ZXAubmFtZSA9PT0gImxh
eW91dC10ZXN0IikKICAgICAgICAgICAgICAgICB0aGlzLmxheW91dFRlc3RSZXN1bHRzID0gcmVz
dWx0czsKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0ZXAubmFtZSBpbiBbImpzY29yZS10ZXN0Iiwg
IndlYmtpdC0zMmJpdC1qc2MtdGVzdCIsICJ3ZWJraXQtanNjLWNsb29wLXRlc3QiXSkKKyAgICAg
ICAgICAgICAgICB0aGlzLmphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMgPSByZXN1bHRzOwogICAg
ICAgICAgICAgaWYgKHJlc3VsdHMuYWxsUGFzc2VkKQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIHRoaXMuZmFpbGVkVGVzdFN0ZXBzLnB1c2gocmVzdWx0cyk7CkBAIC0zNTMs
NSArMzU2LDI1IEBAIEJ1aWxkYm90SXRlcmF0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IGNvbnNvbGUubG9nKGRhdGEuZXJyb3IpOwogICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAg
ICAgfS5iaW5kKHRoaXMpLCB7anNvbnBDYWxsYmFja05hbWU6ICJBRERfUkVTVUxUUyIsIHdpdGhD
cmVkZW50aWFsczogdGhpcy5xdWV1ZS5idWlsZGJvdC5uZWVkc0F1dGhlbnRpY2F0aW9ufSk7Ci0g
ICAgfQorICAgIH0sCisKKyAgICBsb2FkSmF2YVNjcmlwdENvcmVUZXN0UmVzdWx0czogZnVuY3Rp
b24odGVzdE5hbWUsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMucXVldWUuYnVp
bGRib3QubmVlZHNBdXRoZW50aWNhdGlvbiAmJiB0aGlzLnF1ZXVlLmJ1aWxkYm90LmF1dGhlbnRp
Y2F0aW9uU3RhdHVzID09PSBCdWlsZGJvdC5BdXRoZW50aWNhdGlvblN0YXR1cy5JbnZhbGlkQ3Jl
ZGVudGlhbHMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgSlNPTi5sb2FkKHRoaXMu
cXVldWUuYnVpbGRib3QuamF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXNVUkxGb3JJdGVyYXRpb24o
dGhpcywgdGVzdE5hbWUpLCBmdW5jdGlvbihkYXRhKSB7CisgICAgICAgICAgICB0aGlzLnF1ZXVl
LmJ1aWxkYm90LmlzQXV0aGVudGljYXRlZCA9IHRydWU7CisgICAgICAgICAgICB0aGlzLmphdmFT
Y3JpcHRDb3JlVGVzdFJlc3VsdHMuYWRkSmF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXMoZGF0YSk7
CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9LmJpbmQodGhpcyksCisgICAgICAg
IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgICAgICAgIGlmIChkYXRhLmVycm9yVHlwZSA9PT0gSlNP
Ti5Mb2FkRXJyb3IgJiYgZGF0YS5lcnJvckhUVFBDb2RlID09PSA0MDEpIHsKKyAgICAgICAgICAg
ICAgICB0aGlzLnF1ZXVlLmJ1aWxkYm90LmlzQXV0aGVudGljYXRlZCA9IGZhbHNlOworICAgICAg
ICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKEJ1aWxkYm90SXRlcmF0aW9u
LkV2ZW50LlVuYXV0aG9yaXplZEFjY2Vzcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBj
b25zb2xlLmxvZyhkYXRhLmVycm9yKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAg
IH0uYmluZCh0aGlzKSwge3dpdGhDcmVkZW50aWFsczogdGhpcy5xdWV1ZS5idWlsZGJvdC5uZWVk
c0F1dGhlbnRpY2F0aW9ufSk7CisgICAgfSwKIH07CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
U2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmlldy5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxk
Ym90UXVldWVWaWV3LmpzCmluZGV4IDQxMTNjMGVlOTM3YmM1ZTliNWJkYWQ1ZmNlYmZlNWE1NTAy
YTQ2MjQuLmUyNTQzNmJiNjcwNzllNDQwNDM4ODYxMzQ5ZTA2ODlkN2U3MzBjOTQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90UXVldWVWaWV3LmpzCisrKyBiL1Rvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9TY3JpcHRzL0J1aWxkYm90UXVldWVWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Myw2ICs3Myw5NSBAQCBCdWls
ZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZChzdGF0dXMuZWxlbWVudCk7CiAgICAgfSwKIAorICAgIF9jcmVhdGVMb2FkaW5nSW5kaWNh
dG9yOiBmdW5jdGlvbihpdGVyYXRpb24sIGhlYWRpbmcpIHsKKyAgICAgICAgdmFyIGNvbnRlbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgY29udGVudC5jbGFzc05h
bWUgPSAidGVzdC1yZXN1bHRzLXBvcG92ZXIiOworCisgICAgICAgIHRoaXMuX2FkZEl0ZXJhdGlv
bkhlYWRpbmdUb1BvcG92ZXIoaXRlcmF0aW9uLCBjb250ZW50LCBoZWFkaW5nKTsKKyAgICAgICAg
dGhpcy5fYWRkRGl2aWRlclRvUG9wb3Zlcihjb250ZW50KTsKKworICAgICAgICB2YXIgbG9hZGlu
Z0luZGljYXRvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBsb2Fk
aW5nSW5kaWNhdG9yLmNsYXNzTmFtZSA9ICJsb2FkaW5nLWluZGljYXRvciI7CisgICAgICAgIGxv
YWRpbmdJbmRpY2F0b3IudGV4dENvbnRlbnQgPSAiTG9hZGluZ1x1MjAyNiI7CisgICAgICAgIGNv
bnRlbnQuYXBwZW5kQ2hpbGQobG9hZGluZ0luZGljYXRvcik7CisKKyAgICAgICAgcmV0dXJuIGNv
bnRlbnQ7CisgICAgfSwKKworICAgIC8vIFdvcmsgYXJvdW5kIGJ1ZyA4MDE1OTogLXdlYmtpdC11
c2VyLXNlbGVjdDpub25lIG5vdCByZXNwZWN0ZWQgd2hlbiBjb3B5aW5nIGNvbnRlbnQuCisgICAg
Ly8gV2Ugc2V0IGNsaXBib2FyZCBkYXRhIG1hbnVhbGx5LCB0ZW1wb3JhcmlseSBtYWtpbmcgbm9u
LXNlbGVjdGFibGUgY29udGVudCBoaWRkZW4KKyAgICAvLyB0byBlYXNpbHkgZ2V0IGFjY3VyYXRl
IHNlbGVjdGlvbiB0ZXh0LgorICAgIF9vblBvcG92ZXJDb3B5OiBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICB2YXIgaXRlcmF0b3IgPSBkb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3IoCisgICAg
ICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LAorICAgICAgICAgICAgTm9kZUZpbHRlci5TSE9X
X0VMRU1FTlQsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYWNjZXB0Tm9kZTogZnVu
Y3Rpb24oZWxlbWVudCkgeworICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmdldENvbXB1
dGVkU3R5bGUoZWxlbWVudCkud2Via2l0VXNlclNlbGVjdCAhPT0gIm5vbmUiKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICApOworCisgICAgICAgIHdoaWxlICgobm9kZSA9
IGl0ZXJhdG9yLm5leHROb2RlKCkpKQorICAgICAgICAgICAgbm9kZS5zdHlsZS52aXNpYmlsaXR5
ID0gInZpc2libGUiOworCisgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuc3R5bGUudmlzaWJp
bGl0eSA9ICJoaWRkZW4iOworICAgICAgICBldmVudC5jbGlwYm9hcmREYXRhLnNldERhdGEoJ3Rl
eHQnLCB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkpOworICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0
LnN0eWxlLnZpc2liaWxpdHkgPSAiIjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0sCisK
KyAgICBfcG9wb3ZlckNvbnRlbnRGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9uczogZnVu
Y3Rpb24oaXRlcmF0aW9uLCB0ZXN0TmFtZSkKKyAgICB7CisgICAgICAgIHZhciBjb250ZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGNvbnRlbnQuY2xhc3NOYW1l
ID0gInRlc3QtcmVzdWx0cy1wb3BvdmVyIjsKKworICAgICAgICB0aGlzLl9hZGRJdGVyYXRpb25I
ZWFkaW5nVG9Qb3BvdmVyKGl0ZXJhdGlvbiwgY29udGVudCwgImphdmFzY3JpcHRjb3JlIHRlc3Qg
ZmFpbHVyZXMiLCBpdGVyYXRpb24uamF2YVNjcmlwdENvcmVUZXN0U3RkaW9VUkxGb3JJdGVyYXRp
b24oaXRlcmF0aW9uLCB0ZXN0TmFtZSkpOworICAgICAgICB0aGlzLl9hZGREaXZpZGVyVG9Qb3Bv
dmVyKGNvbnRlbnQpOworCisgICAgICAgIGlmICghaXRlcmF0aW9uLmphdmFTY3JpcHRDb3JlVGVz
dFJlc3VsdHMucmVncmVzc2lvbnMpIHsKKyAgICAgICAgICAgIHZhciBtZXNzYWdlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICBtZXNzYWdlLmNsYXNzTmFtZSA9
ICJsb2FkaW5nLWZhaWx1cmUiOworICAgICAgICAgICAgbWVzc2FnZS50ZXh0Q29udGVudCA9ICJU
ZXN0IHJlc3VsdHMgY291bGRuXHUyMDE5dCBiZSBsb2FkZWQiOworICAgICAgICAgICAgY29udGVu
dC5hcHBlbmRDaGlsZChtZXNzYWdlKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZW50OworICAg
ICAgICB9CisKKyAgICAgICAgdmFyIHJlZ3Jlc3Npb25zID0gaXRlcmF0aW9uLmphdmFTY3JpcHRD
b3JlVGVzdFJlc3VsdHMucmVncmVzc2lvbnM7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIGVu
ZCA9IHJlZ3Jlc3Npb25zLmxlbmd0aDsgaSAhPSBlbmQ7ICsraSkgeworICAgICAgICAgICAgdmFy
IHRlc3QgPSByZWdyZXNzaW9uc1tpXTsKKyAgICAgICAgICAgIHZhciByb3dFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICB2YXIgdGVzdFBhdGhFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICAgICAgdGVzdFBh
dGhFbGVtZW50LmNsYXNzTmFtZSA9ICJ0ZXN0LXBhdGgiOworICAgICAgICAgICAgdGVzdFBhdGhF
bGVtZW50LnRleHRDb250ZW50ID0gdGVzdDsKKyAgICAgICAgICAgIHJvd0VsZW1lbnQuYXBwZW5k
Q2hpbGQodGVzdFBhdGhFbGVtZW50KTsKKyAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQo
cm93RWxlbWVudCk7CisgICAgICAgIH0KKworICAgICAgICBjb250ZW50Lm9uY29weSA9IHRoaXMu
X29uUG9wb3ZlckNvcHk7CisgICAgICAgIHJldHVybiBjb250ZW50OworICAgIH0sCisKKyAgICBf
cHJlc2VudFBvcG92ZXJGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9uczogZnVuY3Rpb24o
dGVzdE5hbWUsIGVsZW1lbnQsIHBvcG92ZXIsIGl0ZXJhdGlvbikKKyAgICB7CisgICAgICAgIGlm
IChpdGVyYXRpb24uamF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cy5yZWdyZXNzaW9ucykKKyAgICAg
ICAgICAgIHZhciBjb250ZW50ID0gdGhpcy5fcG9wb3ZlckNvbnRlbnRGb3JKYXZhU2NyaXB0Q29y
ZVRlc3RSZWdyZXNzaW9ucyhpdGVyYXRpb24pOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHZhciBjb250ZW50ID0gdGhpcy5fY3JlYXRlTG9hZGluZ0luZGljYXRvcihpdGVyYXRpb24sICJq
YXZhc2NyaXB0Y29yZSB0ZXN0IGZhaWx1cmVzIik7CisgICAgICAgICAgICBpdGVyYXRpb24ubG9h
ZEphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHModGVzdE5hbWUsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgIHBvcG92ZXIuY29udGVudCA9IHRoaXMuX3BvcG92ZXJDb250ZW50Rm9ySmF2YVNj
cmlwdENvcmVUZXN0UmVncmVzc2lvbnMoaXRlcmF0aW9uLCB0ZXN0TmFtZSk7CisgICAgICAgICAg
ICB9LmJpbmQodGhpcykpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHJlY3QgPSBEYXNoYm9h
cmQuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3QoZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KSk7CisgICAgICAgIHBvcG92ZXIuY29udGVudCA9IGNvbnRlbnQ7CisgICAgICAgIHBvcG92ZXIu
cHJlc2VudChyZWN0LCBbRGFzaGJvYXJkLlJlY3RFZGdlLk1JTl9ZLCBEYXNoYm9hcmQuUmVjdEVk
Z2UuTUFYX1ksIERhc2hib2FyZC5SZWN0RWRnZS5NQVhfWCwgRGFzaGJvYXJkLlJlY3RFZGdlLk1J
Tl9YXSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKICAgICBfcHJlc2VudFBvcG92
ZXJGb3JSZXZpc2lvblJhbmdlOiBmdW5jdGlvbihlbGVtZW50LCBwb3BvdmVyLCBjb250ZXh0KQog
ICAgIHsKICAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKQEAgLTE0Nyw3ICsyMzYsNyBAQCBCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHJldHVybiBjb250ZW50OwogICAgIH0sCiAKLSAgICBfYWRkSXRlcmF0aW9uSGVhZGlu
Z1RvUG9wb3ZlcjogZnVuY3Rpb24oaXRlcmF0aW9uLCBjb250ZW50LCBhZGRpdGlvbmFsVGV4dCkK
KyAgICBfYWRkSXRlcmF0aW9uSGVhZGluZ1RvUG9wb3ZlcjogZnVuY3Rpb24oaXRlcmF0aW9uLCBj
b250ZW50LCBhZGRpdGlvbmFsVGV4dCwgYWRkaXRpb25hbFRleHRUYXJnZXQpCiAgICAgewogICAg
ICAgICB2YXIgdGl0bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAg
dGl0bGUuY2xhc3NOYW1lID0gInBvcG92ZXItaXRlcmF0aW9uLWhlYWRpbmciOwpAQCAtMTY1LDkg
KzI1NCwxNCBAQCBCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRpdGxl
LmFwcGVuZENoaWxkKGJ1aWxkYm90TGluayk7CiAKICAgICAgICAgaWYgKGFkZGl0aW9uYWxUZXh0
KSB7Ci0gICAgICAgICAgICB2YXIgYWRkaXRpb25hbFRleHRFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICAgICAgdmFyIGVsZW1lbnRUeXBlID0gKGFkZGl0
aW9uYWxUZXh0VGFyZ2V0KSA/ICJhIiA6ICJzcGFuIjsKKyAgICAgICAgICAgIHZhciBhZGRpdGlv
bmFsVGV4dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnRUeXBlKTsKICAg
ICAgICAgICAgIGFkZGl0aW9uYWxUZXh0RWxlbWVudC5jbGFzc05hbWUgPSAiYWRkaXRpb25hbC10
ZXh0IjsKICAgICAgICAgICAgIGFkZGl0aW9uYWxUZXh0RWxlbWVudC50ZXh0Q29udGVudCA9IGFk
ZGl0aW9uYWxUZXh0OworICAgICAgICAgICAgaWYgKGFkZGl0aW9uYWxUZXh0VGFyZ2V0KSB7Cisg
ICAgICAgICAgICAgICAgYWRkaXRpb25hbFRleHRFbGVtZW50LmhyZWYgPSBhZGRpdGlvbmFsVGV4
dFRhcmdldDsKKyAgICAgICAgICAgICAgICBhZGRpdGlvbmFsVGV4dEVsZW1lbnQudGFyZ2V0ID0g
Il9ibGFuayI7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB0aXRsZS5hcHBlbmRDaGlsZChh
ZGRpdGlvbmFsVGV4dEVsZW1lbnQpOwogICAgICAgICB9CiAKQEAgLTE5Miw2ICsyODYsMjcgQEAg
QnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gZnJhZ21lbnQ7
CiAgICAgfSwKIAorICAgIF90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbjogZnVuY3Rpb24oZmFp
bGVkU3RlcCkKKyAgICB7CisgICAgICAgIGlmICghZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQpCisg
ICAgICAgICAgICByZXR1cm4gQnVpbGRib3RJdGVyYXRpb24uVGVzdFN0ZXBzW2ZhaWxlZFN0ZXAu
bmFtZV0gKyAiIGZhaWxlZCI7CisgICAgICAgIGlmIChmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCA9
PT0gMSkKKyAgICAgICAgICAgIHJldHVybiBCdWlsZGJvdEl0ZXJhdGlvbi5UZXN0U3RlcHNbZmFp
bGVkU3RlcC5uYW1lXSArICIgZmFpbHVyZSI7CisgICAgICAgIHJldHVybiBCdWlsZGJvdEl0ZXJh
dGlvbi5UZXN0U3RlcHNbZmFpbGVkU3RlcC5uYW1lXSArICIgZmFpbHVyZXMiOworICAgIH0sCisK
KyAgICBfdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb25XaXRoQ291bnQ6IGZ1bmN0aW9uKGZhaWxl
ZFN0ZXApCisgICAgeworICAgICAgICBpZiAoIWZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50KQorICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0
ZXApOworICAgICAgICBpZiAoZmFpbGVkU3RlcC50b29NYW55RmFpbHVyZXMpIHsKKyAgICAgICAg
ICAgIC8vIEUuZy4gIjUwKyBsYXlvdXQgdGVzdCBmYWlsdXJlcyIsIHByZXZlbnRpbmcgbGluZSBi
cmVha3MgYXJvdW5kIHRoZSAiKyIuCisgICAgICAgICAgICByZXR1cm4gZmFpbGVkU3RlcC5mYWls
dXJlQ291bnQgKyAiXHVmZWZmXHVmZjBiXHUwMGEwIiArIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURl
c2NyaXB0aW9uKGZhaWxlZFN0ZXApOworICAgICAgICB9CisgICAgICAgIC8vIEUuZy4gIjEgbGF5
b3V0IHRlc3QgZmFpbHVyZSIsIHByZXZlbnRpbmcgbGluZSBicmVhayBhZnRlciB0aGUgbnVtYmVy
LgorICAgICAgICByZXR1cm4gZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQgKyAiXHUwMGEwIiArIHRo
aXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0ZXApOworICAgIH0sCisKICAg
ICBhcHBlbmRCdWlsZFN0eWxlOiBmdW5jdGlvbihxdWV1ZXMsIGRlZmF1bHRMYWJlbCwgYXBwZW5k
RnVuY3Rpb24pCiAgICAgewogICAgICAgICBxdWV1ZXMuZm9yRWFjaChmdW5jdGlvbihxdWV1ZSkg
ewpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0UmVzdWx0cy5q
cyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdFJlc3VsdHMuanMKaW5kZXggZTIz
MTY3ZDdmZjgxZGJkMzExMzczZTE3OWZjM2VmMTA1NmQ3YmQwYS4uMjFiYTA1ZDY2YmZjNDVmYmJl
M2JkYWM1MDNmMWY4MmM3N2EyYjUyNSAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMv
QnVpbGRib3RUZXN0UmVzdWx0cy5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJv
dFRlc3RSZXN1bHRzLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xODQsNCArMTg0LDkgQEAgQnVpbGRib3RUZXN0UmVzdWx0cy5wcm90
b3R5cGUgPSB7CiAgICAgICAgIC8vIGJlY2F1c2UgYnVpbGRib3QgY291bnRzIHJlZ3Jlc3Npb25z
IHRoYXQgaGFkIG1pc3NpbmcgcGl4ZWwgcmVzdWx0cyBvbiByZXRyeSAoZS5nLiAiVEVYVCBNSVNT
SU5HIikuCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGEubnVtX21pc3NpbmcgPj0gdGhpcy50
ZXN0c1dpdGhNaXNzaW5nUmVzdWx0cy5sZW5ndGgpOwogICAgIH0sCisKKyAgICBhZGRKYXZhU2Ny
aXB0Q29yZVRlc3RGYWlsdXJlczogZnVuY3Rpb24oZGF0YSkKKyAgICB7CisgICAgICAgIHRoaXMu
cmVncmVzc2lvbnMgPSBkYXRhLnN0cmVzc1Rlc3RGYWlsdXJlczsKKyAgICB9LAogfTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdGVyUXVldWVWaWV3LmpzIGIv
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMKaW5kZXggNzJk
ODI0NmE0YzdkMWFjN2Y4YmUxOWIzNDc3NjA4YzJmMWFmNWZjNC4uNjNjNTYwNzJjZDdhOWIyYmVh
OTA0OTA0ZjRiM2ZlOWZhZDVkOGEyYyAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMv
QnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVp
bGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNSw2ICsxMDUsOSBAQCBCdWls
ZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChmYWlsZWRTdGVwLm5hbWUgPT09ICJsYXlvdXQtdGVzdCIpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0
YXR1c0xpbmVWaWV3LlN0YXR1cy5CYWQsIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9u
KGZhaWxlZFN0ZXApLCBmYWlsZWRTdGVwLnRvb01hbnlGYWlsdXJlcyA/IGZhaWxlZFN0ZXAuZmFp
bHVyZUNvdW50ICsgIlx1ZmYwYiIgOiBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCwgaXRlcmF0aW9u
LnF1ZXVlLmJ1aWxkYm90LmxheW91dFRlc3RSZXN1bHRzVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlv
bikpOwogICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1cy5z
dGF0dXNCdWJibGVFbGVtZW50LCB0aGlzLl9wcmVzZW50UG9wb3ZlckZvckxheW91dFRlc3RSZWdy
ZXNzaW9ucy5iaW5kKHRoaXMpLCBpdGVyYXRpb24pOworICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGZhaWxlZFN0ZXAubmFtZSBpbiBbImpzY29yZS10ZXN0IiwgIndlYmtpdC0zMmJpdC1q
c2MtdGVzdCIsICJ3ZWJraXQtanNjLWNsb29wLXRlc3QiXSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3Rh
dHVzTGluZVZpZXcuU3RhdHVzLkJhZCwgdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24o
ZmFpbGVkU3RlcCksIGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50LCBpdGVyYXRpb24ucXVldWUuYnVp
bGRib3QuamF2YVNjcmlwdENvcmVUZXN0U3RkaW9VUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uLCBm
YWlsZWRTdGVwLm5hbWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJh
Y2tlcihzdGF0dXMuc3RhdHVzQnViYmxlRWxlbWVudCwgdGhpcy5fcHJlc2VudFBvcG92ZXJGb3JK
YXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucy5iaW5kKHRoaXMsIGZhaWxlZFN0ZXAubmFtZSks
IGl0ZXJhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2VFbGVtZW50
LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuQmFkLCB0aGlzLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlw
dGlvbihmYWlsZWRTdGVwKSwgZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQgPyBmYWlsZWRTdGVwLmZh
aWx1cmVDb3VudCA6IHVuZGVmaW5lZCwgZmFpbGVkU3RlcC5VUkwpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNCdWJibGVFbGVtZW50LCB0
aGlzLl9wcmVzZW50UG9wb3ZlckZvckdlbmVyaWNUZXN0RmFpbHVyZXMuYmluZCh0aGlzKSwgaXRl
cmF0aW9uKTsKQEAgLTEzMCwyNyArMTMzLDYgQEAgQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLmFwcGVuZEJ1aWxkU3R5bGUuY2FsbCh0aGlzLCB0aGlz
LmRlYnVnUXVldWVzLCAiRGVidWciLCBhcHBlbmRCdWlsZGVyUXVldWVTdGF0dXMpOwogICAgIH0s
CiAKLSAgICBfdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb246IGZ1bmN0aW9uKGZhaWxlZFN0ZXAp
Ci0gICAgewotICAgICAgICBpZiAoIWZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50KQotICAgICAgICAg
ICAgcmV0dXJuIEJ1aWxkYm90SXRlcmF0aW9uLlRlc3RTdGVwc1tmYWlsZWRTdGVwLm5hbWVdICsg
IiBmYWlsZWQiOwotICAgICAgICBpZiAoZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQgPT09IDEpCi0g
ICAgICAgICAgICByZXR1cm4gQnVpbGRib3RJdGVyYXRpb24uVGVzdFN0ZXBzW2ZhaWxlZFN0ZXAu
bmFtZV0gKyAiIGZhaWx1cmUiOwotICAgICAgICByZXR1cm4gQnVpbGRib3RJdGVyYXRpb24uVGVz
dFN0ZXBzW2ZhaWxlZFN0ZXAubmFtZV0gKyAiIGZhaWx1cmVzIjsKLSAgICB9LAotCi0gICAgX3Rl
c3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uV2l0aENvdW50OiBmdW5jdGlvbihmYWlsZWRTdGVwKQot
ICAgIHsKLSAgICAgICAgaWYgKCFmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCkKLSAgICAgICAgICAg
IHJldHVybiB0aGlzLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbihmYWlsZWRTdGVwKTsKLSAg
ICAgICAgaWYgKGZhaWxlZFN0ZXAudG9vTWFueUZhaWx1cmVzKSB7Ci0gICAgICAgICAgICAvLyBF
LmcuICI1MCsgbGF5b3V0IHRlc3QgZmFpbHVyZXMiLCBwcmV2ZW50aW5nIGxpbmUgYnJlYWtzIGFy
b3VuZCB0aGUgIisiLgotICAgICAgICAgICAgcmV0dXJuIGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50
ICsgIlx1ZmVmZlx1ZmYwYlx1MDBhMCIgKyB0aGlzLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlv
bihmYWlsZWRTdGVwKTsKLSAgICAgICAgfQotICAgICAgICAvLyBFLmcuICIxIGxheW91dCB0ZXN0
IGZhaWx1cmUiLCBwcmV2ZW50aW5nIGxpbmUgYnJlYWsgYWZ0ZXIgdGhlIG51bWJlci4KLSAgICAg
ICAgcmV0dXJuIGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50ICsgIlx1MDBhMCIgKyB0aGlzLl90ZXN0
U3RlcEZhaWx1cmVEZXNjcmlwdGlvbihmYWlsZWRTdGVwKTsKLSAgICB9LAotCiAgICAgX3BvcG92
ZXJDb250ZW50Rm9yTGF5b3V0VGVzdFJlZ3Jlc3Npb25zOiBmdW5jdGlvbihpdGVyYXRpb24pCiAg
ICAgewogICAgICAgICB2YXIgaGFzVGVzdEhpc3RvcnkgPSB0eXBlb2YgdGVzdEhpc3RvcnkgIT09
ICJ1bmRlZmluZWQiOwpAQCAtMjI5LDMxICsyMTEsNyBAQCBCdWlsZGJvdFRlc3RlclF1ZXVlVmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHJvd0VsZW1l
bnQpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gV29yayBhcm91bmQgYnVnIDgwMTU5OiAtd2Vi
a2l0LXVzZXItc2VsZWN0Om5vbmUgbm90IHJlc3BlY3RlZCB3aGVuIGNvcHlpbmcgY29udGVudC4K
LSAgICAgICAgLy8gV2Ugc2V0IGNsaXBib2FyZCBkYXRhIG1hbnVhbGx5LCB0ZW1wb3JhcmlseSBt
YWtpbmcgbm9uLXNlbGVjdGFibGUgY29udGVudCBoaWRkZW4KLSAgICAgICAgLy8gdG8gZWFzaWx5
IGdldCBhY2N1cmF0ZSBzZWxlY3Rpb24gdGV4dC4KLSAgICAgICAgY29udGVudC5vbmNvcHkgPSBm
dW5jdGlvbihldmVudCkgewotICAgICAgICAgICAgdmFyIGl0ZXJhdG9yID0gZG9jdW1lbnQuY3Jl
YXRlTm9kZUl0ZXJhdG9yKAotICAgICAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQsCi0g
ICAgICAgICAgICAgICAgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsCi0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICBhY2NlcHROb2RlOiBmdW5jdGlvbihlbGVtZW50KSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVu
dCkud2Via2l0VXNlclNlbGVjdCAhPT0gIm5vbmUiKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfU0tJUDsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgIHdoaWxl
ICgobm9kZSA9IGl0ZXJhdG9yLm5leHROb2RlKCkpKQotICAgICAgICAgICAgICAgIG5vZGUuc3R5
bGUudmlzaWJpbGl0eSA9ICJ2aXNpYmxlIjsKLQotICAgICAgICAgICAgZXZlbnQuY3VycmVudFRh
cmdldC5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Ci0gICAgICAgICAgICBldmVudC5jbGlw
Ym9hcmREYXRhLnNldERhdGEoJ3RleHQnLCB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkpOwotICAgICAg
ICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5zdHlsZS52aXNpYmlsaXR5ID0gIiI7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQorICAgICAgICBjb250ZW50Lm9uY29weSA9
IHRoaXMuX29uUG9wb3ZlckNvcHk7CiAgICAgICAgIHJldHVybiBjb250ZW50OwogICAgIH0sCiAK
QEAgLTI2MiwxNiArMjIwLDcgQEAgQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICBpZiAoaXRlcmF0aW9uLmxheW91dFRlc3RSZXN1bHRzLnJlZ3Jlc3Npb25zKQog
ICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLl9wb3BvdmVyQ29udGVudEZvckxheW91dFRl
c3RSZWdyZXNzaW9ucyhpdGVyYXRpb24pOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHZh
ciBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICBj
b250ZW50LmNsYXNzTmFtZSA9ICJ0ZXN0LXJlc3VsdHMtcG9wb3ZlciI7Ci0KLSAgICAgICAgICAg
IHRoaXMuX2FkZEl0ZXJhdGlvbkhlYWRpbmdUb1BvcG92ZXIoaXRlcmF0aW9uLCBjb250ZW50LCAi
bGF5b3V0IHRlc3QgZmFpbHVyZXMiKTsKLSAgICAgICAgICAgIHRoaXMuX2FkZERpdmlkZXJUb1Bv
cG92ZXIoY29udGVudCk7Ci0KLSAgICAgICAgICAgIHZhciBsb2FkaW5nSW5kaWNhdG9yID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICBsb2FkaW5nSW5kaWNhdG9y
LmNsYXNzTmFtZSA9ICJsb2FkaW5nLWluZGljYXRvciI7Ci0gICAgICAgICAgICBsb2FkaW5nSW5k
aWNhdG9yLnRleHRDb250ZW50ID0gIkxvYWRpbmdcdTIwMjYiOwotICAgICAgICAgICAgY29udGVu
dC5hcHBlbmRDaGlsZChsb2FkaW5nSW5kaWNhdG9yKTsKKyAgICAgICAgICAgIHZhciBjb250ZW50
ID0gdGhpcy5fY3JlYXRlTG9hZGluZ0luZGljYXRvcihpdGVyYXRpb24sICJsYXlvdXQgdGVzdCBm
YWlsdXJlcyIpOwogCiAgICAgICAgICAgICBpdGVyYXRpb24ubG9hZExheW91dFRlc3RSZXN1bHRz
KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIHBvcG92ZXIuY29udGVudCA9IHRoaXMuX3Bv
cG92ZXJDb250ZW50Rm9yTGF5b3V0VGVzdFJlZ3Jlc3Npb25zKGl0ZXJhdGlvbik7CmRpZmYgLS1n
aXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9pbmRleC5odG1sIGIvVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L1NjcmlwdHMvdGVzdHMvaW5kZXguaHRtbAppbmRleCBhYjgxYjhkOTk1OGNjMTkyOGY0YTU1NjZj
MjAxM2U4NGU0ZmY5ZjM2Li41YjM3OGIyMzBlYjcyZjIyZjJmMzQ4OGVhZDI3OGJiMTQxNDMxZjA1
IDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9pbmRleC5odG1sCisrKyBi
L1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL2luZGV4Lmh0bWwKQEAgLTYzLDggKzYzLDEwIEBA
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHNyYz0iLi4vVHJh
Yy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL1Nv
dXJjZS9UaGlyZFBhcnR5L3F1bml0L3F1bml0L3F1bml0LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL01vY2tUcmFjLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL01vY2tCdWlsZGJvdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
InJlc291cmNlcy9Nb2NrQnVpbGRib3RRdWV1ZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy9Nb2NrQnVpbGRib3RRdWV1ZVZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvTW9ja0J1aWxkYm90VGVzdFJlc3VsdHMuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdHMuanMiPjwvc2NyaXB0PgogCiA8L2hl
YWQ+CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9j
a0J1aWxkYm90LmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tC
dWlsZGJvdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjFmODIxMGIxZThjZjZiZmFlMWY2MjcwMWZiMzI0YTNm
ZmRiM2QzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVz
b3VyY2VzL01vY2tCdWlsZGJvdC5qcwpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworTW9j
a0J1aWxkYm90ID0gZnVuY3Rpb24oKSB7fTsKKworTW9ja0J1aWxkYm90LnByb3RvdHlwZSA9IHsK
KyAgICBjb25zdHJ1Y3RvcjogTW9ja0J1aWxkYm90LAorCisgICAgYnVpbGRQYWdlVVJMRm9ySXRl
cmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5i
YXNlVVJMICsgImJ1aWxkZXJzLyIgKyBlbmNvZGVVUklDb21wb25lbnQoaXRlcmF0aW9uLnF1ZXVl
LmlkKSArICIvYnVpbGRzLyIgKyBpdGVyYXRpb24uaWQ7CisgICAgfSwKKworICAgIGphdmFTY3Jp
cHRDb3JlVGVzdEZhaWx1cmVzVVJMRm9ySXRlcmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24sIG5h
bWUpCisgICAgeworICAgICAgICByZXR1cm4gInJlc291cmNlcy90ZXN0LWpzYy1yZXN1bHRzLmpz
b24iOworICAgIH0sCisKKyAgICBqYXZhU2NyaXB0Q29yZVRlc3RTdGRpb1VSTEZvckl0ZXJhdGlv
bjogZnVuY3Rpb24oaXRlcmF0aW9uLCBuYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
YmFzZVVSTCArICJidWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1
ZS5pZCkgKyAiL2J1aWxkcy8iICsgaXRlcmF0aW9uLmlkICsgIi9zdGVwcy8iICsgbmFtZSArICIv
bG9ncy9zdGRpbyI7CisKKyAgICB9LAorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Njcmlw
dHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJvdFF1ZXVlLmpzIGIvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Nj
cmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJvdFF1ZXVlLmpzCmluZGV4IDIxMDdlZTcy
MDVkNTI5ODVlNWRhMjg4MDYxZDIwMjgxMDMzNWUzOWMuLjNmNWExZTdhNDlhZTY2YTFiYTE2OTI2
YzRiZDBkNGI3MjlmYzk1OTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3Rz
L3Jlc291cmNlcy9Nb2NrQnVpbGRib3RRdWV1ZS5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0
cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90UXVldWUuanMKQEAgLTM5LDcgKzM5LDcgQEAg
TW9ja0J1aWxkYm90UXVldWUgPSBmdW5jdGlvbigpCiAgICAgICAgIGhlYWRpbmc6ICIiLAogICAg
ICAgICBjcmFzaGVzT25seTogIiIKICAgICB9OwotICAgIEJ1aWxkYm90UXVldWUuY2FsbCh0aGlz
LCAiTW9jayBCdWlsZEJvdCIsICJpZCIsIGluZm8pOworICAgIEJ1aWxkYm90UXVldWUuY2FsbCh0
aGlzLCBuZXcgTW9ja0J1aWxkYm90KCksICJpZCIsIGluZm8pOwogfTsKIAogQmFzZU9iamVjdC5h
ZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhNb2NrQnVpbGRib3RRdWV1ZSk7CmRpZmYgLS1naXQgYS9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90VGVzdFJlc3Vs
dHMuanMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90
VGVzdFJlc3VsdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ5ODYyOTU4ZDliMDRhYzhmM2JmODM5NTVhZDI5
YWRhM2ZmNTk4YQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3Rz
L3Jlc291cmNlcy9Nb2NrQnVpbGRib3RUZXN0UmVzdWx0cy5qcwpAQCAtMCwwICsxLDM1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworTW9ja0J1aWxkYm90VGVzdFJlc3VsdHMgPSBmdW5jdGlvbigpIHt9OworCitN
b2NrQnVpbGRib3RUZXN0UmVzdWx0cy5wcm90b3R5cGUgPSB7CisgICAgY29uc3RydWN0b3I6IE1v
Y2tCdWlsZGJvdFRlc3RSZXN1bHRzLAorCisgICAgYWRkSmF2YVNjcmlwdENvcmVUZXN0RmFpbHVy
ZXM6IGZ1bmN0aW9uKGRhdGEpCisgICAgeworICAgICAgICAgdGhpcy5yZWdyZXNzaW9ucyA9IGRh
dGEuc3RyZXNzVGVzdEZhaWx1cmVzOworICAgIH0sCit9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL3Rlc3QtanNjLXJlc3VsdHMuanNvbiBiL1Rvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy90ZXN0LWpzYy1yZXN1bHRzLmpzb24KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTVjYzlhMTFmY2Q1ZmMxODdkYjQwOTE3N2U1Mjc0NDEzMTMwNmZjZgotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy90ZXN0LWpz
Yy1yZXN1bHRzLmpzb24KQEAgLTAsMCArMSBAQAoreyJzdHJlc3NUZXN0RmFpbHVyZXMiOlsibG9y
ZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQiLCAiY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0Iiwg
InNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFn
bmEgYWxpcXVhIl0sICJhbGxBcGlUZXN0c1Bhc3NlZCI6IHRydWV9CmRpZmYgLS1naXQgYS9Ub29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVzdHMuanMgYi9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
U2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVzdHMuanMKaW5kZXggZjI3MmEwYWIxOGFjYzhmZjk1
N2Q1YjBiZDcxNzI0OTdiNWJkYzZlZS4uODU0ZTM1ODhlODAyMjZlYmNhZTk2NmEwMWY1YTdhYzk1
ZDRjNjk5NSAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2Vz
L3Rlc3RzLmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy90ZXN0
cy5qcwpAQCAtMjYzLDYgKzI2Myw5MCBAQCB0ZXN0KCJfZm9ybWF0UmV2aXNpb25Gb3JEaXNwbGF5
IEdpdCIsIGZ1bmN0aW9uKCkKICAgICBzdHJpY3RFcXVhbCh0aGlzLnZpZXcuX2Zvcm1hdFJldmlz
aW9uRm9yRGlzcGxheSgiMGU0OThkYjVkOGU1YjVhMzQyNjMxIiwgcmVwb3NpdG9yeSksICIwZTQ5
OGRiIiwgIlNob3VsZCBiZSAwZTQ5OGRiIik7CiB9KTsKIAordGVzdCgiX3BvcG92ZXJDb250ZW50
Rm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnMgbG9hZCBmYWlsdXJlIFVJIHRlc3QiLCBm
dW5jdGlvbigpCit7CisgICAgdmFyIGZpbmlzaGVkID0gZmFsc2U7CisgICAgdmFyIGl0ZXJhdGlv
biA9IG5ldyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLnF1ZXVlLCAxLCBmaW5pc2hlZCk7CisgICAg
aXRlcmF0aW9uLmphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMgPSBuZXcgTW9ja0J1aWxkYm90VGVz
dFJlc3VsdHMoKTsKKworICAgIHZhciB2aWV3ID0gbmV3IEJ1aWxkYm90UXVldWVWaWV3KCk7Cisg
ICAgdmFyIGNvbnRlbnQgPSB2aWV3Ll9wb3BvdmVyQ29udGVudEZvckphdmFTY3JpcHRDb3JlVGVz
dFJlZ3Jlc3Npb25zKGl0ZXJhdGlvbik7CisKKyAgICB2YXIgbnVtQ2hpbGRyZW5JbkVtcHR5UG9w
b3ZlckNvbnRlbnQgPSAyOworICAgIHN0cmljdEVxdWFsKGNvbnRlbnQuY2hpbGROb2Rlcy5sZW5n
dGgsIDEgKyBudW1DaGlsZHJlbkluRW1wdHlQb3BvdmVyQ29udGVudCk7CisgICAgc3RyaWN0RXF1
YWwoY29udGVudC5jaGlsZE5vZGVzW251bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50XS5j
bGFzc05hbWUsICJsb2FkaW5nLWZhaWx1cmUiLCAiUG9wb3ZlciBmb3IgbG9hZGluZyBmYWlsdXJl
IG11c3QgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgY2xhc3MiKTsKKyAgICBzdHJpY3RFcXVhbChjb250
ZW50LmNoaWxkTm9kZXNbbnVtQ2hpbGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnRdLnRleHRDb250
ZW50LCAiVGVzdCByZXN1bHRzIGNvdWxkblx1MjAxOXQgYmUgbG9hZGVkIiwgIlBvcG92ZXIgZm9y
IGxvYWRpbmcgZmFpbHVyZSBtdXN0IHVzZSB0aGUgY29ycmVjdCB0ZXh0Iik7Cit9KTsKKwordGVz
dCgiX3ByZXNlbnRQb3BvdmVyRm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnMgaW5jbHVk
aW5nIGxvYWRpbmciLCBmdW5jdGlvbigpCit7CisgICAgdmFyIGZpbmlzaGVkID0gZmFsc2U7Cisg
ICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB2YXIg
cG9wb3ZlciA9IG5ldyBEYXNoYm9hcmQuUG9wb3ZlcigpOworICAgIHZhciBpdGVyYXRpb24gPSBu
ZXcgQnVpbGRib3RJdGVyYXRpb24odGhpcy5xdWV1ZSwgMSwgZmluaXNoZWQpOworICAgIGl0ZXJh
dGlvbi5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzID0gbmV3IE1vY2tCdWlsZGJvdFRlc3RSZXN1
bHRzKCk7CisKKyAgICB2YXIgdmlldyA9IG5ldyBCdWlsZGJvdFF1ZXVlVmlldygpOworICAgIHZp
ZXcuX3ByZXNlbnRQb3BvdmVyRm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnMoZWxlbWVu
dCwgcG9wb3ZlciwgaXRlcmF0aW9uLCAianNjb3JlLXRlc3QiKTsKKworICAgIEpTT04ubG9hZCgi
cmVzb3VyY2VzL3Rlc3QtanNjLXJlc3VsdHMuanNvbiIsIGZ1bmN0aW9uKGRhdGEpCisgICAgewor
ICAgICAgICB2YXIgdGVzdFJlZ3Jlc3Npb25zID0gZGF0YS5zdHJlc3NUZXN0RmFpbHVyZXM7Cisg
ICAgICAgIHZhciBudW1DaGlsZHJlbkluRW1wdHlQb3BvdmVyQ29udGVudCA9IDI7CisgICAgICAg
IHN0cmljdEVxdWFsKHBvcG92ZXIuX2NvbnRlbnQuY2hpbGROb2Rlcy5sZW5ndGggLSBudW1DaGls
ZHJlbkluRW1wdHlQb3BvdmVyQ29udGVudCwKKyAgICAgICAgICAgIHRlc3RSZWdyZXNzaW9ucy5s
ZW5ndGgsCisgICAgICAgICAgICAiTnVtYmVyIG9mIGZhaWx1cmVzIGluIHBvcG92ZXIgbXVzdCBi
ZSBlcXVhbCB0byBudW1iZXIgb2YgZmFpbGVkIHRlc3RzIik7CisKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCB0ZXN0UmVncmVzc2lvbnMubGVuZ3RoOyBpKyspCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0cmljdEVxdWFsKHBvcG92ZXIuX2NvbnRlbnQuY2hpbGROb2Rlc1tpK251bUNoaWxk
cmVuSW5FbXB0eVBvcG92ZXJDb250ZW50XS5jaGlsZE5vZGVzWzBdLnRleHRDb250ZW50LAorICAg
ICAgICAgICAgICAgIHRlc3RSZWdyZXNzaW9uc1tpXSwKKyAgICAgICAgICAgICAgICAiTmFtZXMg
b2YgZmFpbHVyZXMgbXVzdCBtYXRjaCIKKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKyAgICB9
KTsKK30pOworCit0ZXN0KCJfY3JlYXRlTG9hZGluZ0luZGljYXRvciIsIGZ1bmN0aW9uKCkKK3sK
KyAgICB2YXIgZmluaXNoZWQgPSBmYWxzZTsKKyAgICB2YXIgaXRlcmF0aW9uID0gbmV3IEJ1aWxk
Ym90SXRlcmF0aW9uKHRoaXMucXVldWUsIDEsIGZpbmlzaGVkKTsKKworICAgIHZhciB2aWV3ID0g
bmV3IEJ1aWxkYm90UXVldWVWaWV3KCk7CisgICAgdmFyIGhlYWRpbmcgPSAiRmFpciBpcyBmb3Vs
LCBhbmQgZm91bCBpcyBmYWlyIjsKKyAgICB2YXIgY29udGVudCA9IHZpZXcuX2NyZWF0ZUxvYWRp
bmdJbmRpY2F0b3IoaXRlcmF0aW9uLCBoZWFkaW5nKTsKKworICAgIHZhciBudW1DaGlsZHJlbklu
RW1wdHlQb3BvdmVyQ29udGVudCA9IDI7CisgICAgc3RyaWN0RXF1YWwoY29udGVudC5jaGlsZE5v
ZGVzLmxlbmd0aCwgMSArIG51bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50KTsKKyAgICBz
dHJpY3RFcXVhbChjb250ZW50LmNoaWxkTm9kZXNbbnVtQ2hpbGRyZW5JbkVtcHR5UG9wb3ZlckNv
bnRlbnRdLmNsYXNzTmFtZSwgImxvYWRpbmctaW5kaWNhdG9yIiwgIlBvcG92ZXIgZm9yIGxvYWRp
bmcgaW5kaWNhdG9yIG11c3QgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgY2xhc3MiKTsKKyAgICBzdHJp
Y3RFcXVhbChjb250ZW50LmNoaWxkTm9kZXNbbnVtQ2hpbGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRl
bnRdLnRleHRDb250ZW50LCAiTG9hZGluZ1x1MjAyNiIsICJQb3BvdmVyIGZvciBsb2FkaW5nIGZh
aWx1cmUgbXVzdCB1c2UgdGhlIGNvcnJlY3QgdGV4dCIpOworfSk7CisKK3Rlc3QoIl9wcmVzZW50
UG9wb3ZlckZvckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jlc3Npb25zIGFscmVhZHkgbG9hZGVkIiwg
ZnVuY3Rpb24oKQoreworICAgIHZhciBmaW5pc2hlZCA9IGZhbHNlOworICAgIHZhciBlbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdmFyIHBvcG92ZXIgPSBuZXcg
RGFzaGJvYXJkLlBvcG92ZXIoKTsKKyAgICB2YXIgaXRlcmF0aW9uID0gbmV3IEJ1aWxkYm90SXRl
cmF0aW9uKHRoaXMucXVldWUsIDEsIGZpbmlzaGVkKTsKKyAgICBpdGVyYXRpb24uamF2YVNjcmlw
dENvcmVUZXN0UmVzdWx0cyA9IHsicmVncmVzc2lvbnMiOiBbInVubyIsICJkb3MiLCAidHJlcyJd
fTsKKworICAgIHZhciB2aWV3ID0gbmV3IEJ1aWxkYm90UXVldWVWaWV3KCk7CisgICAgdmlldy5f
cHJlc2VudFBvcG92ZXJGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucyhlbGVtZW50LCBw
b3BvdmVyLCBpdGVyYXRpb24sICJqc2NvcmUtdGVzdCIpOworCisgICAgdmFyIG51bUNoaWxkcmVu
SW5FbXB0eVBvcG92ZXJDb250ZW50ID0gMjsKKyAgICBzdHJpY3RFcXVhbChwb3BvdmVyLl9jb250
ZW50LmNoaWxkTm9kZXMubGVuZ3RoIC0gbnVtQ2hpbGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnQs
CisgICAgICAgIGl0ZXJhdGlvbi5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzLnJlZ3Jlc3Npb25z
Lmxlbmd0aCwKKyAgICAgICAgIk51bWJlciBvZiBmYWlsdXJlcyBpbiBwb3BvdmVyIG11c3QgYmUg
ZXF1YWwgdG8gbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cyIpOworCisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBpdGVyYXRpb24uamF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cy5yZWdyZXNzaW9ucy5sZW5n
dGg7IGkrKykKKyAgICB7CisgICAgICAgIHN0cmljdEVxdWFsKHBvcG92ZXIuX2NvbnRlbnQuY2hp
bGROb2Rlc1tpK251bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50XS5jaGlsZE5vZGVzWzBd
LnRleHRDb250ZW50LAorICAgICAgICAgICAgaXRlcmF0aW9uLmphdmFTY3JpcHRDb3JlVGVzdFJl
c3VsdHMucmVncmVzc2lvbnNbaV0sCisgICAgICAgICAgICAiTmFtZXMgb2YgZmFpbHVyZXMgbXVz
dCBtYXRjaCIKKyAgICAgICAgKTsKKyAgICB9Cit9KTsKKwogbW9kdWxlKCJCdWlsZEJvdFF1ZXVl
IiwgewogICAgIHNldHVwOiBmdW5jdGlvbigpIHsKICAgICAgICAgRGFzaGJvYXJkLlJlcG9zaXRv
cnkuT3BlblNvdXJjZS50cmFjID0gbmV3IE1vY2tUcmFjKCk7CkBAIC0zNTUsNCArNDM5LDQgQEAg
dGVzdCgiY29tcGFyZUl0ZXJhdGlvbnNCeVJldmlzaW9ucyIsIGZ1bmN0aW9uKCkKICAgICBvayh0
aGlzLnF1ZXVlLmNvbXBhcmVJdGVyYXRpb25zQnlSZXZpc2lvbnMoaXRlcmF0aW9uMiwgaXRlcmF0
aW9uMSkgPCAwLCAiY29tcGFyZUl0ZXJhdGlvbnNCeVJldmlzaW9uczogbGVzcyB0aGFuIik7CiAg
ICAgb2sodGhpcy5xdWV1ZS5jb21wYXJlSXRlcmF0aW9uc0J5UmV2aXNpb25zKGl0ZXJhdGlvbjEs
IGl0ZXJhdGlvbjIpID4gMCwgImNvbXBhcmVJdGVyYXRpb25zQnlSZXZpc2lvbnM6IGdyZWF0ZXIg
dGhhbiIpOwogICAgIHN0cmljdEVxdWFsKHRoaXMucXVldWUuY29tcGFyZUl0ZXJhdGlvbnNCeVJl
dmlzaW9ucyhpdGVyYXRpb24yLCBpdGVyYXRpb24yKSwgMCwgImNvbXBhcmVJdGVyYXRpb25zQnlS
ZXZpc2lvbnM6IGVxdWFsIik7Ci19KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279990</attachid>
            <date>2016-05-27 14:06:13 -0700</date>
            <delta_ts>2016-05-27 17:04:49 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-156595-20160527140724.patch</filename>
            <type>text/plain</type>
            <size>46563</size>
            <attacher name="Srinivasan Vijayaraghavan">webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNDY4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmIxNWY3MWM1M2I2NzEwOTAzMThhZWQyZjIxMzI0MWI0
N2JkODRjYy4uMjBjODNmN2Q5MGQ5NDA3ZDUwZmVjZWZmOGIzNmUwNzY1NjZjMGQ0ZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEw
OCBAQAorMjAxNi0wNS0yNyAgU3Jpbml2YXNhbiBWaWpheWFyYWdoYXZhbiAgPHN2aWpheWFyYWdo
YXZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzcGxheSBmYWlsaW5nIEpTQyBzdHJlc3MgdGVz
dHMgaW4gYnVpbGRib3QgZGFzaGJvYXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTY1OTUKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJv
c2t1cnlha292LgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3QuanM6CisgICAg
ICAgIChCdWlsZGJvdC5wcm90b3R5cGUuamF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXNVUkxGb3JJ
dGVyYXRpb24pOgorICAgICAgICAoQnVpbGRib3QucHJvdG90eXBlLmphdmFTY3JpcHRDb3JlVGVz
dFN0ZGlvVXJsRm9ySXRlcmF0aW9uKToKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJv
dENvbWJpbmVkUXVldWVWaWV3LmpzOgorICAgICAgICAoQnVpbGRib3RDb21iaW5lZFF1ZXVlVmll
dy5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEl0
ZXJhdGlvbi5qczoKKyAgICAgICAgKEJ1aWxkYm90SXRlcmF0aW9uKToKKyAgICAgICAgKEJ1aWxk
Ym90SXRlcmF0aW9uLnByb3RvdHlwZS5fcGFyc2VEYXRhKToKKyAgICAgICAgKEJ1aWxkYm90SXRl
cmF0aW9uLnByb3RvdHlwZS5sb2FkTGF5b3V0VGVzdFJlc3VsdHMpOgorICAgICAgICAoQnVpbGRi
b3RJdGVyYXRpb24ucHJvdG90eXBlLik6CisgICAgICAgIChCdWlsZGJvdEl0ZXJhdGlvbi5wcm90
b3R5cGUubG9hZEphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMpOgorICAgICAgICAqIEJ1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9T
Y3JpcHRzL0J1aWxkYm90UXVldWVWaWV3LmpzOgorICAgICAgICAoQnVpbGRib3RRdWV1ZVZpZXcu
cHJvdG90eXBlLl9jcmVhdGVMb2FkaW5nSW5kaWNhdG9yKToKKyAgICAgICAgKEJ1aWxkYm90UXVl
dWVWaWV3LnByb3RvdHlwZS4pOgorICAgICAgICAoQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBl
Ll9vblBvcG92ZXJDb3B5KToKKyAgICAgICAgKEJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZS5f
cG9wb3ZlckNvbnRlbnRGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucyk6CisgICAgICAg
IChCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUuX3ByZXNlbnRQb3BvdmVyRm9ySmF2YVNjcmlw
dENvcmVUZXN0UmVncmVzc2lvbnMpOgorICAgICAgICAoQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90
eXBlLl9hZGRJdGVyYXRpb25IZWFkaW5nVG9Qb3BvdmVyKToKKyAgICAgICAgKEJ1aWxkYm90UXVl
dWVWaWV3LnByb3RvdHlwZS5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24pOgorICAgICAgICAo
QnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbldp
dGhDb3VudCk6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0UmVzdWx0cy5q
czoKKyAgICAgICAgKEJ1aWxkYm90VGVzdFJlc3VsdHMucHJvdG90eXBlLmFkZEphdmFTY3JpcHRD
b3JlVGVzdEZhaWx1cmVzKToKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3Rl
clF1ZXVlVmlldy5qczoKKyAgICAgICAgKEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlw
ZS5hcHBlbmRCdWlsZGVyUXVldWVTdGF0dXMpOgorICAgICAgICAoQnVpbGRib3RUZXN0ZXJRdWV1
ZVZpZXcucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChCdWlsZGJvdFRlc3RlclF1ZXVlVmll
dy5wcm90b3R5cGUuX3BvcG92ZXJDb250ZW50Rm9yTGF5b3V0VGVzdFJlZ3Jlc3Npb25zKToKKyAg
ICAgICAgKEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZS5fcHJlc2VudFBvcG92ZXJG
b3JMYXlvdXRUZXN0UmVncmVzc2lvbnMpOgorICAgICAgICAoQnVpbGRib3RUZXN0ZXJRdWV1ZVZp
ZXcucHJvdG90eXBlLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90b3R5cGUuX3Rlc3RTdGVwRmFpbHVyZURl
c2NyaXB0aW9uV2l0aENvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKEJ1aWxkYm90VGVzdGVyUXVl
dWVWaWV3LnByb3RvdHlwZS4pOiBEZWxldGVkLgorICAgICAgICAoQnVpbGRib3RUZXN0ZXJRdWV1
ZVZpZXcucHJvdG90eXBlLmNvbnRlbnQub25jb3B5KTogRGVsZXRlZC4KKyAgICAgICAgKiBCdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvU2NyaXB0cy90ZXN0cy9pbmRleC5odG1sOgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rl
c3RzL3Jlc291cmNlcy9Nb2NrQnVpbGRib3QuanM6IENvcGllZCBmcm9tIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9T
Y3JpcHRzL3Rlc3RzL3Jlc291cmNlcy9Nb2NrQnVpbGRib3RRdWV1ZS5qcy4KKyAgICAgICAgKE1v
Y2tCdWlsZGJvdCk6CisgICAgICAgIChNb2NrQnVpbGRib3QucHJvdG90eXBlLmJ1aWxkUGFnZVVS
TEZvckl0ZXJhdGlvbik6CisgICAgICAgIChNb2NrQnVpbGRib3QucHJvdG90eXBlLmphdmFTY3Jp
cHRDb3JlVGVzdEZhaWx1cmVzVVJMRm9ySXRlcmF0aW9uKToKKyAgICAgICAgKE1vY2tCdWlsZGJv
dC5wcm90b3R5cGUuamF2YVNjcmlwdENvcmVUZXN0U3RkaW9VcmxGb3JJdGVyYXRpb24pOgorICAg
ICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy9Nb2NrQnVpbGRib3RRdWV1ZS5q
czoKKyAgICAgICAgKE1vY2tCdWlsZGJvdFF1ZXVlKToKKyAgICAgICAgKiBCdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0
cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90VGVzdFJlc3VsdHMuanM6IENvcGllZCBmcm9t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy9Nb2NrQnVpbGRib3RRdWV1ZS5q
cy4KKyAgICAgICAgKE1vY2tCdWlsZGJvdFRlc3RSZXN1bHRzKToKKyAgICAgICAgKE1vY2tCdWls
ZGJvdFRlc3RSZXN1bHRzLnByb3RvdHlwZS5hZGRKYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlcyk6
CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL3Rlc3QtanNjLXJlc3Vs
dHMuanNvbjogQWRkZWQuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2Vz
L3Rlc3RzLmpzOgorCisyMDE2LTA1LTI3ICBTcmluaXZhc2FuIFZpamF5YXJhZ2hhdmFuICA8c3Zp
amF5YXJhZ2hhdmFuQGFwcGxlLmNvbT4KKworICAgICAgICBEaXNwbGF5IGZhaWxpbmcgSlNDIHN0
cmVzcyB0ZXN0cyBpbiBidWlsZGJvdCBkYXNoYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjU5NQorCisgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdC5q
czoKKyAgICAgICAgKEJ1aWxkYm90LnByb3RvdHlwZS5qYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJl
c1VSTEZvckl0ZXJhdGlvbik6IEdlbmVyYXRlIHRoZSBVUkwgZm9yIHJhdyBKU09OIG91dHB1dCBv
ZgorICAgICAgICBKU0MgdGVzdHMuCisgICAgICAgIChCdWlsZGJvdC5wcm90b3R5cGUuamF2YVNj
cmlwdENvcmVUZXN0U3RkaW9VUkxGb3JJdGVyYXRpb24pOiBHZW5lcmF0ZSB0aGUgVVJMIGZvciBo
dW1hbi1yZWFkYWJsZSBzdGRpbyBvdXRwdXQKKyAgICAgICAgb2YgSlNDIHRlc3RzLgorICAgICAg
ICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90Q29tYmluZWRRdWV1ZVZpZXcuanM6CisgICAgICAg
IChCdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3LnByb3RvdHlwZS51cGRhdGUpOiBEaXNwbGF5IEpT
QyB0ZXN0IHJlc3VsdHMgaW4gcG9wb3Zlci4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWls
ZGJvdEl0ZXJhdGlvbi5qczoKKyAgICAgICAgKEJ1aWxkYm90SXRlcmF0aW9uKTogQWRkIGphdmFT
Y3JpcHRDb3JlVGVzdFJlc3VsdHMgdmFyaWFibGUuCisgICAgICAgIChCdWlsZGJvdEl0ZXJhdGlv
bi5wcm90b3R5cGUuKTogQ2hlY2sgZm9yIGphdmFzY3JpcHRjb3JlIHRlc3RzIHN0ZXAuCisgICAg
ICAgIChCdWlsZGJvdEl0ZXJhdGlvbi5wcm90b3R5cGUubG9hZExheW91dFRlc3RSZXN1bHRzKTog
QWRkIGNvbW1hIGF0IGNsb3NpbmcgYnJhY2UuCisgICAgICAgIChCdWlsZGJvdEl0ZXJhdGlvbi5w
cm90b3R5cGUubG9hZEphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMpOiBGZXRjaCBKU09OIGZyb20g
QnVpbGRib3Qgc2VydmVyLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90UXVldWVW
aWV3LmpzOgorICAgICAgICAoQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlLl9jcmVhdGVMb2Fk
aW5nSW5kaWNhdG9yKTogUmV1c2FibGUgZnVuY3Rpb24uCisgICAgICAgIChCdWlsZGJvdFF1ZXVl
Vmlldy5wcm90b3R5cGUuX29uUG9wb3ZlckNvcHkpOiBSZXVzYWJsZSBjb3B5IGV2ZW50IGhhbmRs
ZXIgdG8gYWxsb3cgYWNjdXJhdGUgY29weWluZyBvZiB0ZXh0CisgICAgICAgIGZyb20gcG9wb3Zl
cnMuCisgICAgICAgIChCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUuX3BvcG92ZXJDb250ZW50
Rm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnMpOiBHZW5lcmF0ZXMgdGhlIHBvcG92ZXIg
YnViYmxlJ3MKKyAgICAgICAgaW5uZXIgSFRNTCBmcm9tIHRoZSBKU0MgZmFpbHVyZSBkYXRhLgor
ICAgICAgICAoQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlLl9wcmVzZW50UG9wb3ZlckZvckph
dmFTY3JpcHRDb3JlVGVzdFJlZ3Jlc3Npb25zKTogR2VuZXJhdGUgdGhlIHBvcG92ZXIgYnViYmxl
CisgICAgICAgIGZvciBKU0MgcmVzdWx0cyBhbmQgaGFuZGxlIHJlcXVlc3QgZmFpbHVyZXMuCisg
ICAgICAgIChCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUuX3Rlc3RTdGVwRmFpbHVyZURlc2Ny
aXB0aW9uKTogTW92ZWQgZnJvbSBzdWJjbGFzcy4KKyAgICAgICAgKEJ1aWxkYm90UXVldWVWaWV3
LnByb3RvdHlwZS5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb25XaXRoQ291bnQpOiBNb3ZlZCBm
cm9tIHN1YmNsYXNzLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdFJlc3Vs
dHMuanM6CisgICAgICAgIChCdWlsZGJvdFRlc3RSZXN1bHRzLnByb3RvdHlwZS5hZGRKYXZhU2Ny
aXB0Q29yZVRlc3RGYWlsdXJlcyk6IFBhcnNlIEpTT04gaW50byBhIGxpc3Qgb2YgZmFpbGluZyB0
ZXN0cy4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5q
czoKKyAgICAgICAgKEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZS5hcHBlbmRCdWls
ZGVyUXVldWVTdGF0dXMpOiBJbnN0YW50aWF0ZSBQb3BvdmVyVHJhY2tlcnMgZm9yIGJ1aWxkcyB3
aG9zZSAKKyAgICAgICAgb25seSBmYWlsdXJlcyBhcmUgSlNDIHRlc3RzLgorICAgICAgICAoQnVp
bGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlLl9wb3BvdmVyQ29udGVudEZvckxheW91dFRl
c3RSZWdyZXNzaW9ucyk6IFVzZSBfb25Qb3BvdmVyQ29weS4KKyAgICAgICAgKEJ1aWxkYm90VGVz
dGVyUXVldWVWaWV3LnByb3RvdHlwZS5fcHJlc2VudFBvcG92ZXJGb3JMYXlvdXRUZXN0UmVncmVz
c2lvbnMpOiBVc2UgX2NyZWF0ZUxvYWRpbmdJbmRpY2F0b3IuCisgICAgICAgIChCdWlsZGJvdFRl
c3RlclF1ZXVlVmlldy5wcm90b3R5cGUuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKTogRGVs
ZXRlZC4gTW92ZWQgdG8gc3VwZXJjbGFzcy4KKyAgICAgICAgKEJ1aWxkYm90VGVzdGVyUXVldWVW
aWV3LnByb3RvdHlwZS5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb25XaXRoQ291bnQpOiBEZWxl
dGVkLiBNb3ZlZCB0byBzdXBlcmNsYXNzLgorICAgICAgICAoQnVpbGRib3RUZXN0ZXJRdWV1ZVZp
ZXcucHJvdG90eXBlLmNvbnRlbnQub25jb3B5KTogRGVsZXRlZC4gVXNpbmcgc3VwZXJjbGFzcydz
IHJldXNhYmxlIGZ1bmN0aW9uIGFzIGNvcHkgaGFuZGxlciBpbnN0ZWFkLgorICAgICAgICAqIEJ1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9TY3JpcHRzL3Rlc3RzL2luZGV4Lmh0bWw6IEFkZCBuZXcgc2NyaXB0IGZpbGVzLgorICAg
ICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy9Nb2NrQnVpbGRib3QuanM6IEFk
ZGVkLgorICAgICAgICAoTW9ja0J1aWxkYm90KTogTW9ja2VkIHZlcnNpb24gb2YgQnVpbGRib3Qs
IG9ubHkgY29udGFpbmluZyBVUkwgbWV0aG9kcy4KKyAgICAgICAgKE1vY2tCdWlsZGJvdC5wcm90
b3R5cGUuYnVpbGRQYWdlVVJMRm9ySXRlcmF0aW9uKTogU2FtZSBhcyByZWFsIEJ1aWxkYm90Lmpz
CisgICAgICAgIChNb2NrQnVpbGRib3QucHJvdG90eXBlLmphdmFTY3JpcHRDb3JlVGVzdEZhaWx1
cmVzVVJMRm9ySXRlcmF0aW9uKTogUG9pbnRzIHRvIGxvY2FsIGZpbGUgY29udGFpbmluZyBKU09O
IGZvciB0ZXN0LgorICAgICAgICAoTW9ja0J1aWxkYm90LnByb3RvdHlwZS5qYXZhU2NyaXB0Q29y
ZVRlc3RTdGRpb1VSTEZvckl0ZXJhdGlvbik6IFNhbWUgYXMgcmVhbCBCdWlsZGJvdC5qcworICAg
ICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy9Nb2NrQnVpbGRib3RRdWV1ZS5q
czoKKyAgICAgICAgKE1vY2tCdWlsZGJvdFF1ZXVlKTogVXNlIGEgTW9ja0J1aWxkYm90KCkgaW5z
dGVhZCBvZiBhIHN0cmluZy4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJj
ZXMvTW9ja0J1aWxkYm90VGVzdFJlc3VsdHMuanM6IEFkZGVkLgorICAgICAgICAoTW9ja0J1aWxk
Ym90VGVzdFJlc3VsdHMpOiBNb2NrZWQgdmVyc2lvbiBvZiBCdWlsZGJvdFRlc3RSZXN1bHRzLgor
ICAgICAgICAoTW9ja0J1aWxkYm90VGVzdFJlc3VsdHMucHJvdG90eXBlLmFkZEphdmFTY3JpcHRD
b3JlVGVzdEZhaWx1cmVzKTogU2V0cyB0aGUgJ3JlZ3Jlc3Npb25zJyB2YXJpYWJsZS4KKyAgICAg
ICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVzdC1qc2MtcmVzdWx0cy5qc29u
OiBBZGRlZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVzdHMu
anM6IEFkZCBmb3VyIGdyb3VwcyBvZiB0ZXN0cy4KKwogMjAxNi0wNS0yNyAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goKSAvIFJ1
bkxvb3A6OmRpc3BhdGNoKCkgc2hvdWxkIG5vdCBjb3B5IGNhcHR1cmVkIGxhbWJkYSB2YXJpYWJs
ZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90LmpzIGIvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL1NjcmlwdHMvQnVpbGRib3QuanMKaW5kZXggMDhkZTljODVmMzRhNDM2ZWFmZWU3Y2M3
OTNjN2E5ZWE5MTEzNzQ0YS4uYjNlZTE3MWYxNDc0ODBjZGUwODBmOGY1ZWM1OTZhNWU1NjBhMjcz
OSAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3QuanMKKysrIGIvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3QuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTEsNiArMTUxLDE2IEBAIEJ1aWxk
Ym90LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArICJidWlsZGVy
cy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1ZS5pZCkgKyAiL2J1aWxkcy8i
ICsgaXRlcmF0aW9uLmlkOwogICAgIH0sCiAKKyAgICBqYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJl
c1VSTEZvckl0ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0aW9uLCBuYW1lKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArICJidWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50
KGl0ZXJhdGlvbi5xdWV1ZS5pZCkgKyAiL2J1aWxkcy8iICsgaXRlcmF0aW9uLmlkICsgIi9zdGVw
cy8iICsgbmFtZSArICIvbG9ncy9qc29uL3RleHQiOworICAgIH0sCisKKyAgICBqYXZhU2NyaXB0
Q29yZVRlc3RTdGRpb1VybEZvckl0ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0aW9uLCBuYW1lKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArICJidWlsZGVycy8iICsgZW5jb2Rl
VVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1ZS5pZCkgKyAiL2J1aWxkcy8iICsgaXRlcmF0aW9u
LmlkICsgIi9zdGVwcy8iICsgbmFtZSArICIvbG9ncy9zdGRpbyI7CisgICAgfSwKKwogICAgIGxh
eW91dFRlc3RSZXN1bHRzRGlyZWN0b3J5VVJMRm9ySXRlcmF0aW9uOiBmdW5jdGlvbihpdGVyYXRp
b24pCiAgICAgewogICAgICAgICB2YXIgdW5kZXJzY29yZVNlcGFyYXRlZFJldmlzaW9ucyA9ICJy
IjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90Q29tYmluZWRRdWV1
ZVZpZXcuanMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3
LmpzCmluZGV4IDEzODc0ZDViODJkM2FmYTg0NDY5YjBhOTlkZjMyOGExYTA3N2E4OTYuLmEyMjk0
ODgyZGIwNDQ4MDEyOWViZjRjODA5ZDFmYzkyZjhiZDgyMjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9TY3JpcHRzL0J1aWxkYm90Q29tYmluZWRRdWV1ZVZpZXcuanMKKysrIGIvVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL1NjcmlwdHMvQnVpbGRib3RDb21iaW5lZFF1ZXVlVmlldy5qcwpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04OCw5
ICs4OCw5IEBAIEJ1aWxkYm90Q29tYmluZWRRdWV1ZVZpZXcucHJvdG90eXBlID0gewogCiAgICAg
ICAgICAgICB2YXIgbWVzc2FnZSA9IHRoaXMucmV2aXNpb25Db250ZW50Rm9ySXRlcmF0aW9uKHNs
b3dlc3RRdWV1ZS5tb3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbik7CiAgICAgICAgICAgICB2
YXIgc3RhdHVzTWVzc2FnZVBhc3NlZCA9ICJhbGwgIiArIChxdWV1ZS5idWlsZGVyID8gImJ1aWxk
cyBzdWNjZWVkZWQiIDogInRlc3RzIHBhc3NlZCIpOwotICAgICAgICAgICAgdmFyIHN0YXR1cyA9
IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlLCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuR29vZCwg
c3RhdHVzTWVzc2FnZVBhc3NlZCwgbnVsbCwgbnVsbCk7Ci0gICAgICAgICAgICBuZXcgUG9wb3Zl
clRyYWNrZXIoc3RhdHVzLnN0YXR1c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVy
Rm9yQ29tYmluZWRHcmVlbkJ1YmJsZS5iaW5kKHRoaXMpKTsKLSAgICAgICAgICAgIHRoaXMuZWxl
bWVudC5hcHBlbmRDaGlsZChzdGF0dXMuZWxlbWVudCk7CisgICAgICAgICAgICB2YXIgc3RhdHVz
VmlldyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlLCBTdGF0dXNMaW5lVmlldy5TdGF0dXMu
R29vZCwgc3RhdHVzTWVzc2FnZVBhc3NlZCwgbnVsbCwgbnVsbCk7CisgICAgICAgICAgICBuZXcg
UG9wb3ZlclRyYWNrZXIoc3RhdHVzVmlldy5zdGF0dXNCdWJibGVFbGVtZW50LCB0aGlzLl9wcmVz
ZW50UG9wb3ZlckZvckNvbWJpbmVkR3JlZW5CdWJibGUuYmluZCh0aGlzKSk7CisgICAgICAgICAg
ICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzVmlldy5lbGVtZW50KTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIHRoaXMuYXBwZW5kQnVpbGRTdHlsZS5jYWxsKHRoaXMsIHRo
aXMucXVldWVzLCBudWxsLCBmdW5jdGlvbihxdWV1ZSkgewogICAgICAgICAgICAgICAgIGlmIChx
dWV1ZS5idWlsZGJvdC5uZWVkc0F1dGhlbnRpY2F0aW9uICYmICFxdWV1ZS5idWlsZGJvdC5pc0F1
dGhlbnRpY2F0ZWQpIHsKQEAgLTEwNyw5ICsxMDcsMTYgQEAgQnVpbGRib3RDb21iaW5lZFF1ZXVl
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgaWYgKGZpcnN0UmVjZW50VW5zdWNj
ZXNzZnVsSXRlcmF0aW9uICYmIGZpcnN0UmVjZW50VW5zdWNjZXNzZnVsSXRlcmF0aW9uLmxvYWRl
ZCAmJiBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24gJiYgbW9zdFJlY2VudEZpbmlzaGVkSXRl
cmF0aW9uLmxvYWRlZCkgewogICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghbW9z
dFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLnN1Y2Nlc3NmdWwpOwogICAgICAgICAgICAgICAgICAg
ICB2YXIgbWVzc2FnZSA9IHRoaXMucmV2aXNpb25Db250ZW50Rm9ySXRlcmF0aW9uKG1vc3RSZWNl
bnRGaW5pc2hlZEl0ZXJhdGlvbiwgbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLnByb2R1Y3Rp
dmUgPyBtb3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbiA6IG51bGwpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoIW1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi5wcm9kdWN0aXZlKQorICAg
ICAgICAgICAgICAgICAgICBpZiAoIW1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi5wcm9kdWN0
aXZlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gU3RhdHVzTGluZVZp
ZXcuU3RhdHVzLkRhbmdlcjsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAobW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLmZhaWxlZFRl
c3RTdGVwcy5sZW5ndGggPT09IDEgJiYgbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLmZhaWxl
ZFRlc3RTdGVwc1swXS5uYW1lIGluIFsianNjb3JlLXRlc3QiLCAid2Via2l0LTMyYml0LWpzYy10
ZXN0IiwgIndlYmtpdC1qc2MtY2xvb3AtdGVzdCJdKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgZmFpbGVkU3RlcCA9IG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi5mYWlsZWRUZXN0
U3RlcHNbMF07CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgVVJMID0gbW9zdFJlY2VudEZp
bmlzaGVkSXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LmphdmFTY3JpcHRDb3JlVGVzdFN0ZGlvVXJs
Rm9ySXRlcmF0aW9uKG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbiwgZmFpbGVkU3RlcC5uYW1l
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXNWaWV3ID0gbmV3IFN0YXR1c0xp
bmVWaWV3KG1lc3NhZ2UsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5CYWQsIHRoaXMuX3Rlc3RTdGVw
RmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0ZXApLCBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCwg
VVJMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChz
dGF0dXNWaWV3LmVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFBvcG92ZXJU
cmFja2VyKHN0YXR1c1ZpZXcuc3RhdHVzQnViYmxlRWxlbWVudCwgdGhpcy5fcHJlc2VudFBvcG92
ZXJGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucy5iaW5kKHRoaXMsIGZhaWxlZFN0ZXAu
bmFtZSksIG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbik7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBEaXJlY3QgbGlua3MgdG8gc29tZSBjb21tb24gbG9ncy4KICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciB1cmwgPSBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24uZmFp
bHVyZUxvZ1VSTCgiYnVpbGQgbG9nIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVy
bCkKQEAgLTEyMywyMiArMTMwLDI0IEBAIEJ1aWxkYm90Q29tYmluZWRRdWV1ZVZpZXcucHJvdG90
eXBlID0gewogICAgICAgICAgICAgICAgICAgICAvLyBTb21lIG90aGVyIHN0ZXAgZmFpbGVkLCBs
aW5rIHRvIG1haW4gYnVpbGRib3QgcGFnZSBmb3IgdGhlIGl0ZXJhdGlvbi4KICAgICAgICAgICAg
ICAgICAgICAgaWYgKCF1cmwpCiAgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSBxdWV1ZS5i
dWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24obW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0
aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmll
dyhtZXNzYWdlLCBzdGF0dXMsIG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi50ZXh0LCBudWxs
LCB1cmwpOwotICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3Rh
dHVzLmVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzVmlldyA9IG5ldyBT
dGF0dXNMaW5lVmlldyhtZXNzYWdlLCBzdGF0dXMsIG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlv
bi50ZXh0LCBudWxsLCB1cmwpOworICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQoc3RhdHVzVmlldy5lbGVtZW50KTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAo
bmVlZHNQb3BvdmVyKQotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFBvcG92ZXJUcmFja2Vy
KHN0YXR1cy5zdGF0dXNCdWJibGVFbGVtZW50LCB0aGlzLl9wcmVzZW50SW5kaXZpZHVhbFF1ZXVl
UG9wb3Zlci5iaW5kKHRoaXMpLCBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24pOworICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1c1ZpZXcuc3RhdHVzQnVi
YmxlRWxlbWVudCwgdGhpcy5fcHJlc2VudEluZGl2aWR1YWxRdWV1ZVBvcG92ZXIuYmluZCh0aGlz
KSwgbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgICAgICB2YXIgc3RhdHVzTWVzc2FnZVBhc3NlZCA9ICJhbGwgIiArIChxdWV1ZS5i
dWlsZGVyID8gImJ1aWxkcyBzdWNjZWVkZWQiIDogInRlc3RzIHBhc3NlZCIpOwogICAgICAgICAg
ICAgICAgIGlmIChtb3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbiAmJiBtb3N0UmVjZW50U3Vj
Y2Vzc2Z1bEl0ZXJhdGlvbi5sb2FkZWQpIHsKICAgICAgICAgICAgICAgICAgICAgdmFyIG1lc3Nh
Z2UgPSB0aGlzLnJldmlzaW9uQ29udGVudEZvckl0ZXJhdGlvbihtb3N0UmVjZW50U3VjY2Vzc2Z1
bEl0ZXJhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBxdWV1ZS5idWlsZGJv
dC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24obW9zdFJlY2VudFN1Y2Nlc3NmdWxJdGVyYXRpb24p
OwotICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1l
c3NhZ2UsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5Hb29kLCBmaXJzdFJlY2VudFVuc3VjY2Vzc2Z1
bEl0ZXJhdGlvbiA/ICJsYXN0IHN1Y2NlZWRlZCIgOiBzdGF0dXNNZXNzYWdlUGFzc2VkLCBudWxs
LCB1cmwpOwotICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3Rh
dHVzLmVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICB2YXIgbGFiZWwgPSBmaXJzdFJlY2Vu
dFVuc3VjY2Vzc2Z1bEl0ZXJhdGlvbiA/ICJsYXN0IHN1Y2NlZWRlZCIgOiBzdGF0dXNNZXNzYWdl
UGFzc2VkOworICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzVmlldyA9IG5ldyBTdGF0dXNM
aW5lVmlldyhtZXNzYWdlLCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuR29vZCwgbGFiZWwsIG51bGws
IHVybCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChzdGF0
dXNWaWV3LmVsZW1lbnQpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcoInVua25vd24iLCBTdGF0dXNM
aW5lVmlldy5TdGF0dXMuTmV1dHJhbCwgZmlyc3RSZWNlbnRVbnN1Y2Nlc3NmdWxJdGVyYXRpb24g
PyAibGFzdCBzdWNjZWVkZWQiIDogc3RhdHVzTWVzc2FnZVBhc3NlZCk7Ci0gICAgICAgICAgICAg
ICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChzdGF0dXMuZWxlbWVudCk7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBsYWJlbCA9IGZpcnN0UmVjZW50VW5zdWNjZXNzZnVsSXRlcmF0aW9u
ID8gImxhc3Qgc3VjY2VlZGVkIiA6IHN0YXR1c01lc3NhZ2VQYXNzZWQ7CisgICAgICAgICAgICAg
ICAgICAgIHZhciBzdGF0dXNWaWV3ID0gbmV3IFN0YXR1c0xpbmVWaWV3KCJ1bmtub3duIiwgU3Rh
dHVzTGluZVZpZXcuU3RhdHVzLk5ldXRyYWwsIGxhYmVsKTsKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHN0YXR1c1ZpZXcuZWxlbWVudCk7CiAKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGZpcnN0UmVjZW50VW5zdWNjZXNzZnVsSXRlcmF0aW9uKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgZmFpbGVkIGl0ZXJhdGlvbiBidXQgbm8g
c3VjY2Vzc2Z1bC4gSXQgbWlnaHQgYmUgZnVydGhlciBiYWNrIGluIHRpbWUuCmRpZmYgLS1naXQg
YS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEl0ZXJhdGlvbi5qcyBiL1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpzCmluZGV4IGUyOGMzMWUzZmM1MzE3ZjZiODIx
ZmUxYjZhMWVhOGE0ZWQ3MmQxN2YuLmRjNzAxMmMxMDljMzhiYWMwNjk0MDY4MzI5ZWUxN2NjMjli
ZDhjMDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0aW9u
LmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpzCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00Niw2ICs0Niw3IEBAIEJ1aWxkYm90SXRlcmF0aW9uID0gZnVuY3Rpb24ocXVldWUs
IGRhdGFPcklELCBmaW5pc2hlZCkKICAgICB0aGlzLnJldmlzaW9uID0ge307CiAKICAgICB0aGlz
LmxheW91dFRlc3RSZXN1bHRzID0gbnVsbDsgLy8gTGF5b3V0IHRlc3QgcmVzdWx0cyBjYW4gYmUg
bmVlZGVkIGV2ZW4gaWYgYWxsIHRlc3RzIHBhc3NlZCwgZS5nLiBmb3IgdGhlIGxlYWtzIGJvdC4K
KyAgICB0aGlzLmphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMgPSBudWxsOwogCiAgICAgdGhpcy5m
YWlsZWRUZXN0U3RlcHMgPSBbXTsKIApAQCAtMjUwLDYgKzI1MSw4IEBAIEJ1aWxkYm90SXRlcmF0
aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciByZXN1bHRzID0gbmV3IEJ1aWxkYm90
VGVzdFJlc3VsdHMoc3RlcCk7CiAgICAgICAgICAgICBpZiAoc3RlcC5uYW1lID09PSAibGF5b3V0
LXRlc3QiKQogICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0VGVzdFJlc3VsdHMgPSByZXN1bHRz
OworICAgICAgICAgICAgZWxzZSBpZiAoc3RlcC5uYW1lIGluIFsianNjb3JlLXRlc3QiLCAid2Vi
a2l0LTMyYml0LWpzYy10ZXN0IiwgIndlYmtpdC1qc2MtY2xvb3AtdGVzdCJdKQorICAgICAgICAg
ICAgICAgIHRoaXMuamF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cyA9IHJlc3VsdHM7CiAgICAgICAg
ICAgICBpZiAocmVzdWx0cy5hbGxQYXNzZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgdGhpcy5mYWlsZWRUZXN0U3RlcHMucHVzaChyZXN1bHRzKTsKQEAgLTM1Myw1ICsz
NTYsMjUgQEAgQnVpbGRib3RJdGVyYXRpb24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgY29u
c29sZS5sb2coZGF0YS5lcnJvcik7CiAgICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICB9
LmJpbmQodGhpcyksIHtqc29ucENhbGxiYWNrTmFtZTogIkFERF9SRVNVTFRTIiwgd2l0aENyZWRl
bnRpYWxzOiB0aGlzLnF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRpb259KTsKLSAgICB9
CisgICAgfSwKKworICAgIGxvYWRKYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzOiBmdW5jdGlvbih0
ZXN0TmFtZSwgY2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAodGhpcy5xdWV1ZS5idWlsZGJv
dC5uZWVkc0F1dGhlbnRpY2F0aW9uICYmIHRoaXMucXVldWUuYnVpbGRib3QuYXV0aGVudGljYXRp
b25TdGF0dXMgPT09IEJ1aWxkYm90LkF1dGhlbnRpY2F0aW9uU3RhdHVzLkludmFsaWRDcmVkZW50
aWFscykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBKU09OLmxvYWQodGhpcy5xdWV1
ZS5idWlsZGJvdC5qYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlc1VSTEZvckl0ZXJhdGlvbih0aGlz
LCB0ZXN0TmFtZSksIGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgICAgICAgIHRoaXMucXVldWUuYnVp
bGRib3QuaXNBdXRoZW50aWNhdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHRoaXMuamF2YVNjcmlw
dENvcmVUZXN0UmVzdWx0cy5hZGRKYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlcyhkYXRhKTsKKyAg
ICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0uYmluZCh0aGlzKSwKKyAgICAgICAgZnVu
Y3Rpb24oZGF0YSkgeworICAgICAgICAgICAgaWYgKGRhdGEuZXJyb3JUeXBlID09PSBKU09OLkxv
YWRFcnJvciAmJiBkYXRhLmVycm9ySFRUUENvZGUgPT09IDQwMSkgeworICAgICAgICAgICAgICAg
IHRoaXMucXVldWUuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVkID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoQnVpbGRib3RJdGVyYXRpb24uRXZl
bnQuVW5hdXRob3JpemVkQWNjZXNzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnNv
bGUubG9nKGRhdGEuZXJyb3IpOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfS5i
aW5kKHRoaXMpLCB7d2l0aENyZWRlbnRpYWxzOiB0aGlzLnF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0
aGVudGljYXRpb259KTsKKyAgICB9LAogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3Jp
cHRzL0J1aWxkYm90UXVldWVWaWV3LmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RR
dWV1ZVZpZXcuanMKaW5kZXggNDExM2MwZWU5MzdiYzVlOWI1YmRhZDVmY2ViZmU1YTU1MDJhNDYy
NC4uNGY4NzVhZDI5NjM0M2FmMTk4MmM4N2MxYmFjODdjMTcyN2Y3Mjc2NyAxMDA2NDQKLS0tIGEv
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RRdWV1ZVZpZXcuanMKKysrIGIvVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL1NjcmlwdHMvQnVpbGRib3RRdWV1ZVZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTczLDYgKzczLDk1IEBAIEJ1aWxkYm90
UXVldWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxk
KHN0YXR1cy5lbGVtZW50KTsKICAgICB9LAogCisgICAgX2NyZWF0ZUxvYWRpbmdJbmRpY2F0b3I6
IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgaGVhZGluZykgeworICAgICAgICB2YXIgY29udGVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9
ICJ0ZXN0LXJlc3VsdHMtcG9wb3ZlciI7CisKKyAgICAgICAgdGhpcy5fYWRkSXRlcmF0aW9uSGVh
ZGluZ1RvUG9wb3ZlcihpdGVyYXRpb24sIGNvbnRlbnQsIGhlYWRpbmcpOworICAgICAgICB0aGlz
Ll9hZGREaXZpZGVyVG9Qb3BvdmVyKGNvbnRlbnQpOworCisgICAgICAgIHZhciBsb2FkaW5nSW5k
aWNhdG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGxvYWRpbmdJ
bmRpY2F0b3IuY2xhc3NOYW1lID0gImxvYWRpbmctaW5kaWNhdG9yIjsKKyAgICAgICAgbG9hZGlu
Z0luZGljYXRvci50ZXh0Q29udGVudCA9ICJMb2FkaW5nXHUyMDI2IjsKKyAgICAgICAgY29udGVu
dC5hcHBlbmRDaGlsZChsb2FkaW5nSW5kaWNhdG9yKTsKKworICAgICAgICByZXR1cm4gY29udGVu
dDsKKyAgICB9LAorCisgICAgLy8gV29yayBhcm91bmQgYnVnIDgwMTU5OiAtd2Via2l0LXVzZXIt
c2VsZWN0Om5vbmUgbm90IHJlc3BlY3RlZCB3aGVuIGNvcHlpbmcgY29udGVudC4KKyAgICAvLyBX
ZSBzZXQgY2xpcGJvYXJkIGRhdGEgbWFudWFsbHksIHRlbXBvcmFyaWx5IG1ha2luZyBub24tc2Vs
ZWN0YWJsZSBjb250ZW50IGhpZGRlbgorICAgIC8vIHRvIGVhc2lseSBnZXQgYWNjdXJhdGUgc2Vs
ZWN0aW9uIHRleHQuCisgICAgX29uUG9wb3ZlckNvcHk6IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgIHZhciBpdGVyYXRvciA9IGRvY3VtZW50LmNyZWF0ZU5vZGVJdGVyYXRvcigKKyAgICAgICAg
ICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQsCisgICAgICAgICAgICBOb2RlRmlsdGVyLlNIT1dfRUxF
TUVOVCwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBhY2NlcHROb2RlOiBmdW5jdGlv
bihlbGVtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuZ2V0Q29tcHV0ZWRT
dHlsZShlbGVtZW50KS53ZWJraXRVc2VyU2VsZWN0ICE9PSAibm9uZSIpCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfU0tJUDsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgd2hpbGUgKChub2RlID0gaXRl
cmF0b3IubmV4dE5vZGUoKSkpCisgICAgICAgICAgICBub2RlLnN0eWxlLnZpc2liaWxpdHkgPSAi
dmlzaWJsZSI7CisKKyAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5zdHlsZS52aXNpYmlsaXR5
ID0gImhpZGRlbiI7CisgICAgICAgIGV2ZW50LmNsaXBib2FyZERhdGEuc2V0RGF0YSgndGV4dCcs
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKSk7CisgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuc3R5
bGUudmlzaWJpbGl0eSA9ICIiOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSwKKworICAg
IF9wb3BvdmVyQ29udGVudEZvckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jlc3Npb25zOiBmdW5jdGlv
bihpdGVyYXRpb24sIHRlc3ROYW1lKQorICAgIHsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgY29udGVudC5jbGFzc05hbWUgPSAi
dGVzdC1yZXN1bHRzLXBvcG92ZXIiOworCisgICAgICAgIHRoaXMuX2FkZEl0ZXJhdGlvbkhlYWRp
bmdUb1BvcG92ZXIoaXRlcmF0aW9uLCBjb250ZW50LCAiamF2YXNjcmlwdGNvcmUgdGVzdCBmYWls
dXJlcyIsIGl0ZXJhdGlvbi5qYXZhU2NyaXB0Q29yZVRlc3RTdGRpb1VybEZvckl0ZXJhdGlvbihp
dGVyYXRpb24sIHRlc3ROYW1lKSk7CisgICAgICAgIHRoaXMuX2FkZERpdmlkZXJUb1BvcG92ZXIo
Y29udGVudCk7CisKKyAgICAgICAgaWYgKCFpdGVyYXRpb24uamF2YVNjcmlwdENvcmVUZXN0UmVz
dWx0cy5yZWdyZXNzaW9ucykgeworICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgIG1lc3NhZ2UuY2xhc3NOYW1lID0gImxv
YWRpbmctZmFpbHVyZSI7CisgICAgICAgICAgICBtZXNzYWdlLnRleHRDb250ZW50ID0gIlRlc3Qg
cmVzdWx0cyBjb3VsZG5cdTIwMTl0IGJlIGxvYWRlZCI7CisgICAgICAgICAgICBjb250ZW50LmFw
cGVuZENoaWxkKG1lc3NhZ2UpOworICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7CisgICAgICAg
IH0KKworICAgICAgICB2YXIgcmVncmVzc2lvbnMgPSBpdGVyYXRpb24uamF2YVNjcmlwdENvcmVU
ZXN0UmVzdWx0cy5yZWdyZXNzaW9uczsKKworICAgICAgICBmb3IgKHZhciBpID0gMCwgZW5kID0g
cmVncmVzc2lvbnMubGVuZ3RoOyBpICE9IGVuZDsgKytpKSB7CisgICAgICAgICAgICB2YXIgdGVz
dCA9IHJlZ3Jlc3Npb25zW2ldOworICAgICAgICAgICAgdmFyIHJvd0VsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgIHZhciB0ZXN0UGF0aEVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICB0ZXN0UGF0aEVs
ZW1lbnQuY2xhc3NOYW1lID0gInRlc3QtcGF0aCI7CisgICAgICAgICAgICB0ZXN0UGF0aEVsZW1l
bnQudGV4dENvbnRlbnQgPSB0ZXN0OworICAgICAgICAgICAgcm93RWxlbWVudC5hcHBlbmRDaGls
ZCh0ZXN0UGF0aEVsZW1lbnQpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChyb3dF
bGVtZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnRlbnQub25jb3B5ID0gdGhpcy5fb25Q
b3BvdmVyQ29weTsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnQ7CisgICAgfSwKKworICAgIF9wcmVz
ZW50UG9wb3ZlckZvckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jlc3Npb25zOiBmdW5jdGlvbih0ZXN0
TmFtZSwgZWxlbWVudCwgcG9wb3ZlciwgaXRlcmF0aW9uKQorICAgIHsKKyAgICAgICAgaWYgKGl0
ZXJhdGlvbi5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzLnJlZ3Jlc3Npb25zKQorICAgICAgICAg
ICAgdmFyIGNvbnRlbnQgPSB0aGlzLl9wb3BvdmVyQ29udGVudEZvckphdmFTY3JpcHRDb3JlVGVz
dFJlZ3Jlc3Npb25zKGl0ZXJhdGlvbik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFy
IGNvbnRlbnQgPSB0aGlzLl9jcmVhdGVMb2FkaW5nSW5kaWNhdG9yKGl0ZXJhdGlvbiwgImphdmFz
Y3JpcHRjb3JlIHRlc3QgZmFpbHVyZXMiKTsKKyAgICAgICAgICAgIGl0ZXJhdGlvbi5sb2FkSmF2
YVNjcmlwdENvcmVUZXN0UmVzdWx0cyh0ZXN0TmFtZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgcG9wb3Zlci5jb250ZW50ID0gdGhpcy5fcG9wb3ZlckNvbnRlbnRGb3JKYXZhU2NyaXB0
Q29yZVRlc3RSZWdyZXNzaW9ucyhpdGVyYXRpb24sIHRlc3ROYW1lKTsKKyAgICAgICAgICAgIH0u
YmluZCh0aGlzKSk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgcmVjdCA9IERhc2hib2FyZC5S
ZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsK
KyAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gY29udGVudDsKKyAgICAgICAgcG9wb3Zlci5wcmVz
ZW50KHJlY3QsIFtEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1ksIERhc2hib2FyZC5SZWN0RWRnZS5N
QVhfWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9YLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1hd
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKwogICAgIF9wcmVzZW50UG9wb3ZlckZv
clJldmlzaW9uUmFuZ2U6IGZ1bmN0aW9uKGVsZW1lbnQsIHBvcG92ZXIsIGNvbnRleHQpCiAgICAg
ewogICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwpA
QCAtMTQ3LDcgKzIzNiw3IEBAIEJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgcmV0dXJuIGNvbnRlbnQ7CiAgICAgfSwKIAotICAgIF9hZGRJdGVyYXRpb25IZWFkaW5nVG9Q
b3BvdmVyOiBmdW5jdGlvbihpdGVyYXRpb24sIGNvbnRlbnQsIGFkZGl0aW9uYWxUZXh0KQorICAg
IF9hZGRJdGVyYXRpb25IZWFkaW5nVG9Qb3BvdmVyOiBmdW5jdGlvbihpdGVyYXRpb24sIGNvbnRl
bnQsIGFkZGl0aW9uYWxUZXh0LCBhZGRpdGlvbmFsVGV4dFRhcmdldCkKICAgICB7CiAgICAgICAg
IHZhciB0aXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0aXRs
ZS5jbGFzc05hbWUgPSAicG9wb3Zlci1pdGVyYXRpb24taGVhZGluZyI7CkBAIC0xNjUsOSArMjU0
LDE0IEBAIEJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGl0bGUuYXBw
ZW5kQ2hpbGQoYnVpbGRib3RMaW5rKTsKIAogICAgICAgICBpZiAoYWRkaXRpb25hbFRleHQpIHsK
LSAgICAgICAgICAgIHZhciBhZGRpdGlvbmFsVGV4dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICB2YXIgZWxlbWVudFR5cGUgPSBhZGRpdGlvbmFs
VGV4dFRhcmdldCA/ICJhIiA6ICJzcGFuIjsKKyAgICAgICAgICAgIHZhciBhZGRpdGlvbmFsVGV4
dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnRUeXBlKTsKICAgICAgICAg
ICAgIGFkZGl0aW9uYWxUZXh0RWxlbWVudC5jbGFzc05hbWUgPSAiYWRkaXRpb25hbC10ZXh0IjsK
ICAgICAgICAgICAgIGFkZGl0aW9uYWxUZXh0RWxlbWVudC50ZXh0Q29udGVudCA9IGFkZGl0aW9u
YWxUZXh0OworICAgICAgICAgICAgaWYgKGFkZGl0aW9uYWxUZXh0VGFyZ2V0KSB7CisgICAgICAg
ICAgICAgICAgYWRkaXRpb25hbFRleHRFbGVtZW50LmhyZWYgPSBhZGRpdGlvbmFsVGV4dFRhcmdl
dDsKKyAgICAgICAgICAgICAgICBhZGRpdGlvbmFsVGV4dEVsZW1lbnQudGFyZ2V0ID0gIl9ibGFu
ayI7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB0aXRsZS5hcHBlbmRDaGlsZChhZGRpdGlv
bmFsVGV4dEVsZW1lbnQpOwogICAgICAgICB9CiAKQEAgLTE5Miw2ICsyODYsMjcgQEAgQnVpbGRi
b3RRdWV1ZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CiAgICAg
fSwKIAorICAgIF90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbjogZnVuY3Rpb24oZmFpbGVkU3Rl
cCkKKyAgICB7CisgICAgICAgIGlmICghZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQpCisgICAgICAg
ICAgICByZXR1cm4gQnVpbGRib3RJdGVyYXRpb24uVGVzdFN0ZXBzW2ZhaWxlZFN0ZXAubmFtZV0g
KyAiIGZhaWxlZCI7CisgICAgICAgIGlmIChmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCA9PT0gMSkK
KyAgICAgICAgICAgIHJldHVybiBCdWlsZGJvdEl0ZXJhdGlvbi5UZXN0U3RlcHNbZmFpbGVkU3Rl
cC5uYW1lXSArICIgZmFpbHVyZSI7CisgICAgICAgIHJldHVybiBCdWlsZGJvdEl0ZXJhdGlvbi5U
ZXN0U3RlcHNbZmFpbGVkU3RlcC5uYW1lXSArICIgZmFpbHVyZXMiOworICAgIH0sCisKKyAgICBf
dGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb25XaXRoQ291bnQ6IGZ1bmN0aW9uKGZhaWxlZFN0ZXAp
CisgICAgeworICAgICAgICBpZiAoIWZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50KQorICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0ZXApOwor
ICAgICAgICBpZiAoZmFpbGVkU3RlcC50b29NYW55RmFpbHVyZXMpIHsKKyAgICAgICAgICAgIC8v
IEUuZy4gIjUwKyBsYXlvdXQgdGVzdCBmYWlsdXJlcyIsIHByZXZlbnRpbmcgbGluZSBicmVha3Mg
YXJvdW5kIHRoZSAiKyIuCisgICAgICAgICAgICByZXR1cm4gZmFpbGVkU3RlcC5mYWlsdXJlQ291
bnQgKyAiXHVmZWZmXHVmZjBiXHUwMGEwIiArIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0
aW9uKGZhaWxlZFN0ZXApOworICAgICAgICB9CisgICAgICAgIC8vIEUuZy4gIjEgbGF5b3V0IHRl
c3QgZmFpbHVyZSIsIHByZXZlbnRpbmcgbGluZSBicmVhayBhZnRlciB0aGUgbnVtYmVyLgorICAg
ICAgICByZXR1cm4gZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQgKyAiXHUwMGEwIiArIHRoaXMuX3Rl
c3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0ZXApOworICAgIH0sCisKICAgICBhcHBl
bmRCdWlsZFN0eWxlOiBmdW5jdGlvbihxdWV1ZXMsIGRlZmF1bHRMYWJlbCwgYXBwZW5kRnVuY3Rp
b24pCiAgICAgewogICAgICAgICBxdWV1ZXMuZm9yRWFjaChmdW5jdGlvbihxdWV1ZSkgewpkaWZm
IC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0UmVzdWx0cy5qcyBiL1Rv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdFJlc3VsdHMuanMKaW5kZXggZTIzMTY3ZDdm
ZjgxZGJkMzExMzczZTE3OWZjM2VmMTA1NmQ3YmQwYS4uMjFiYTA1ZDY2YmZjNDVmYmJlM2JkYWM1
MDNmMWY4MmM3N2EyYjUyNSAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRi
b3RUZXN0UmVzdWx0cy5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RS
ZXN1bHRzLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xODQsNCArMTg0LDkgQEAgQnVpbGRib3RUZXN0UmVzdWx0cy5wcm90b3R5cGUg
PSB7CiAgICAgICAgIC8vIGJlY2F1c2UgYnVpbGRib3QgY291bnRzIHJlZ3Jlc3Npb25zIHRoYXQg
aGFkIG1pc3NpbmcgcGl4ZWwgcmVzdWx0cyBvbiByZXRyeSAoZS5nLiAiVEVYVCBNSVNTSU5HIiku
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGEubnVtX21pc3NpbmcgPj0gdGhpcy50ZXN0c1dp
dGhNaXNzaW5nUmVzdWx0cy5sZW5ndGgpOwogICAgIH0sCisKKyAgICBhZGRKYXZhU2NyaXB0Q29y
ZVRlc3RGYWlsdXJlczogZnVuY3Rpb24oZGF0YSkKKyAgICB7CisgICAgICAgIHRoaXMucmVncmVz
c2lvbnMgPSBkYXRhLnN0cmVzc1Rlc3RGYWlsdXJlczsKKyAgICB9LAogfTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdGVyUXVldWVWaWV3LmpzIGIvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMKaW5kZXggNzJkODI0NmE0
YzdkMWFjN2Y4YmUxOWIzNDc3NjA4YzJmMWFmNWZjNC4uODY3YWU3MTI3MzQ5MTNhNWVmYzM3ZDZm
ODU1NGU5MGJlZGY2YzFjYyAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRi
b3RUZXN0ZXJRdWV1ZVZpZXcuanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RU
ZXN0ZXJRdWV1ZVZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNSw2ICsxMDUsOSBAQCBCdWlsZGJvdFRl
c3RlclF1ZXVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChmYWls
ZWRTdGVwLm5hbWUgPT09ICJsYXlvdXQtdGVzdCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xp
bmVWaWV3LlN0YXR1cy5CYWQsIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxl
ZFN0ZXApLCBmYWlsZWRTdGVwLnRvb01hbnlGYWlsdXJlcyA/IGZhaWxlZFN0ZXAuZmFpbHVyZUNv
dW50ICsgIlx1ZmYwYiIgOiBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCwgaXRlcmF0aW9uLnF1ZXVl
LmJ1aWxkYm90LmxheW91dFRlc3RSZXN1bHRzVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNC
dWJibGVFbGVtZW50LCB0aGlzLl9wcmVzZW50UG9wb3ZlckZvckxheW91dFRlc3RSZWdyZXNzaW9u
cy5iaW5kKHRoaXMpLCBpdGVyYXRpb24pOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KGZhaWxlZFN0ZXAubmFtZSBpbiBbImpzY29yZS10ZXN0IiwgIndlYmtpdC0zMmJpdC1qc2MtdGVz
dCIsICJ3ZWJraXQtanNjLWNsb29wLXRlc3QiXSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGlu
ZVZpZXcuU3RhdHVzLkJhZCwgdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24oZmFpbGVk
U3RlcCksIGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50LCBpdGVyYXRpb24ucXVldWUuYnVpbGRib3Qu
amF2YVNjcmlwdENvcmVUZXN0U3RkaW9VcmxGb3JJdGVyYXRpb24oaXRlcmF0aW9uLCBmYWlsZWRT
dGVwLm5hbWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tlcihz
dGF0dXMuc3RhdHVzQnViYmxlRWxlbWVudCwgdGhpcy5fcHJlc2VudFBvcG92ZXJGb3JKYXZhU2Ny
aXB0Q29yZVRlc3RSZWdyZXNzaW9ucy5iaW5kKHRoaXMsIGZhaWxlZFN0ZXAubmFtZSksIGl0ZXJh
dGlvbik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2VFbGVtZW50LCBTdGF0
dXNMaW5lVmlldy5TdGF0dXMuQmFkLCB0aGlzLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbihm
YWlsZWRTdGVwKSwgZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQgPyBmYWlsZWRTdGVwLmZhaWx1cmVD
b3VudCA6IHVuZGVmaW5lZCwgZmFpbGVkU3RlcC5VUkwpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNCdWJibGVFbGVtZW50LCB0aGlzLl9w
cmVzZW50UG9wb3ZlckZvckdlbmVyaWNUZXN0RmFpbHVyZXMuYmluZCh0aGlzKSwgaXRlcmF0aW9u
KTsKQEAgLTEzMCwyNyArMTMzLDYgQEAgQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLmFwcGVuZEJ1aWxkU3R5bGUuY2FsbCh0aGlzLCB0aGlzLmRlYnVn
UXVldWVzLCAiRGVidWciLCBhcHBlbmRCdWlsZGVyUXVldWVTdGF0dXMpOwogICAgIH0sCiAKLSAg
ICBfdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb246IGZ1bmN0aW9uKGZhaWxlZFN0ZXApCi0gICAg
ewotICAgICAgICBpZiAoIWZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50KQotICAgICAgICAgICAgcmV0
dXJuIEJ1aWxkYm90SXRlcmF0aW9uLlRlc3RTdGVwc1tmYWlsZWRTdGVwLm5hbWVdICsgIiBmYWls
ZWQiOwotICAgICAgICBpZiAoZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQgPT09IDEpCi0gICAgICAg
ICAgICByZXR1cm4gQnVpbGRib3RJdGVyYXRpb24uVGVzdFN0ZXBzW2ZhaWxlZFN0ZXAubmFtZV0g
KyAiIGZhaWx1cmUiOwotICAgICAgICByZXR1cm4gQnVpbGRib3RJdGVyYXRpb24uVGVzdFN0ZXBz
W2ZhaWxlZFN0ZXAubmFtZV0gKyAiIGZhaWx1cmVzIjsKLSAgICB9LAotCi0gICAgX3Rlc3RTdGVw
RmFpbHVyZURlc2NyaXB0aW9uV2l0aENvdW50OiBmdW5jdGlvbihmYWlsZWRTdGVwKQotICAgIHsK
LSAgICAgICAgaWYgKCFmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCkKLSAgICAgICAgICAgIHJldHVy
biB0aGlzLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbihmYWlsZWRTdGVwKTsKLSAgICAgICAg
aWYgKGZhaWxlZFN0ZXAudG9vTWFueUZhaWx1cmVzKSB7Ci0gICAgICAgICAgICAvLyBFLmcuICI1
MCsgbGF5b3V0IHRlc3QgZmFpbHVyZXMiLCBwcmV2ZW50aW5nIGxpbmUgYnJlYWtzIGFyb3VuZCB0
aGUgIisiLgotICAgICAgICAgICAgcmV0dXJuIGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50ICsgIlx1
ZmVmZlx1ZmYwYlx1MDBhMCIgKyB0aGlzLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbihmYWls
ZWRTdGVwKTsKLSAgICAgICAgfQotICAgICAgICAvLyBFLmcuICIxIGxheW91dCB0ZXN0IGZhaWx1
cmUiLCBwcmV2ZW50aW5nIGxpbmUgYnJlYWsgYWZ0ZXIgdGhlIG51bWJlci4KLSAgICAgICAgcmV0
dXJuIGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50ICsgIlx1MDBhMCIgKyB0aGlzLl90ZXN0U3RlcEZh
aWx1cmVEZXNjcmlwdGlvbihmYWlsZWRTdGVwKTsKLSAgICB9LAotCiAgICAgX3BvcG92ZXJDb250
ZW50Rm9yTGF5b3V0VGVzdFJlZ3Jlc3Npb25zOiBmdW5jdGlvbihpdGVyYXRpb24pCiAgICAgewog
ICAgICAgICB2YXIgaGFzVGVzdEhpc3RvcnkgPSB0eXBlb2YgdGVzdEhpc3RvcnkgIT09ICJ1bmRl
ZmluZWQiOwpAQCAtMjI5LDMxICsyMTEsNyBAQCBCdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHJvd0VsZW1lbnQpOwog
ICAgICAgICB9CiAKLSAgICAgICAgLy8gV29yayBhcm91bmQgYnVnIDgwMTU5OiAtd2Via2l0LXVz
ZXItc2VsZWN0Om5vbmUgbm90IHJlc3BlY3RlZCB3aGVuIGNvcHlpbmcgY29udGVudC4KLSAgICAg
ICAgLy8gV2Ugc2V0IGNsaXBib2FyZCBkYXRhIG1hbnVhbGx5LCB0ZW1wb3JhcmlseSBtYWtpbmcg
bm9uLXNlbGVjdGFibGUgY29udGVudCBoaWRkZW4KLSAgICAgICAgLy8gdG8gZWFzaWx5IGdldCBh
Y2N1cmF0ZSBzZWxlY3Rpb24gdGV4dC4KLSAgICAgICAgY29udGVudC5vbmNvcHkgPSBmdW5jdGlv
bihldmVudCkgewotICAgICAgICAgICAgdmFyIGl0ZXJhdG9yID0gZG9jdW1lbnQuY3JlYXRlTm9k
ZUl0ZXJhdG9yKAotICAgICAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQsCi0gICAgICAg
ICAgICAgICAgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBhY2NlcHROb2RlOiBmdW5jdGlvbihlbGVtZW50KSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAod2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkud2Vi
a2l0VXNlclNlbGVjdCAhPT0gIm5vbmUiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfU0tJUDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgIHdoaWxlICgobm9k
ZSA9IGl0ZXJhdG9yLm5leHROb2RlKCkpKQotICAgICAgICAgICAgICAgIG5vZGUuc3R5bGUudmlz
aWJpbGl0eSA9ICJ2aXNpYmxlIjsKLQotICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5z
dHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7Ci0gICAgICAgICAgICBldmVudC5jbGlwYm9hcmRE
YXRhLnNldERhdGEoJ3RleHQnLCB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkpOwotICAgICAgICAgICAg
ZXZlbnQuY3VycmVudFRhcmdldC5zdHlsZS52aXNpYmlsaXR5ID0gIiI7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQorICAgICAgICBjb250ZW50Lm9uY29weSA9IHRoaXMu
X29uUG9wb3ZlckNvcHk7CiAgICAgICAgIHJldHVybiBjb250ZW50OwogICAgIH0sCiAKQEAgLTI2
MiwxNiArMjIwLDcgQEAgQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICBpZiAoaXRlcmF0aW9uLmxheW91dFRlc3RSZXN1bHRzLnJlZ3Jlc3Npb25zKQogICAgICAg
ICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLl9wb3BvdmVyQ29udGVudEZvckxheW91dFRlc3RSZWdy
ZXNzaW9ucyhpdGVyYXRpb24pOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHZhciBjb250
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICBjb250ZW50
LmNsYXNzTmFtZSA9ICJ0ZXN0LXJlc3VsdHMtcG9wb3ZlciI7Ci0KLSAgICAgICAgICAgIHRoaXMu
X2FkZEl0ZXJhdGlvbkhlYWRpbmdUb1BvcG92ZXIoaXRlcmF0aW9uLCBjb250ZW50LCAibGF5b3V0
IHRlc3QgZmFpbHVyZXMiKTsKLSAgICAgICAgICAgIHRoaXMuX2FkZERpdmlkZXJUb1BvcG92ZXIo
Y29udGVudCk7Ci0KLSAgICAgICAgICAgIHZhciBsb2FkaW5nSW5kaWNhdG9yID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLmNsYXNz
TmFtZSA9ICJsb2FkaW5nLWluZGljYXRvciI7Ci0gICAgICAgICAgICBsb2FkaW5nSW5kaWNhdG9y
LnRleHRDb250ZW50ID0gIkxvYWRpbmdcdTIwMjYiOwotICAgICAgICAgICAgY29udGVudC5hcHBl
bmRDaGlsZChsb2FkaW5nSW5kaWNhdG9yKTsKKyAgICAgICAgICAgIHZhciBjb250ZW50ID0gdGhp
cy5fY3JlYXRlTG9hZGluZ0luZGljYXRvcihpdGVyYXRpb24sICJsYXlvdXQgdGVzdCBmYWlsdXJl
cyIpOwogCiAgICAgICAgICAgICBpdGVyYXRpb24ubG9hZExheW91dFRlc3RSZXN1bHRzKGZ1bmN0
aW9uKCkgewogICAgICAgICAgICAgICAgIHBvcG92ZXIuY29udGVudCA9IHRoaXMuX3BvcG92ZXJD
b250ZW50Rm9yTGF5b3V0VGVzdFJlZ3Jlc3Npb25zKGl0ZXJhdGlvbik7CmRpZmYgLS1naXQgYS9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9pbmRleC5odG1sIGIvVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Njcmlw
dHMvdGVzdHMvaW5kZXguaHRtbAppbmRleCBhYjgxYjhkOTk1OGNjMTkyOGY0YTU1NjZjMjAxM2U4
NGU0ZmY5ZjM2Li41YjM3OGIyMzBlYjcyZjIyZjJmMzQ4OGVhZDI3OGJiMTQxNDMxZjA1IDEwMDY0
NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9pbmRleC5odG1sCisrKyBiL1Rvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9TY3JpcHRzL3Rlc3RzL2luZGV4Lmh0bWwKQEAgLTYzLDggKzYzLDEwIEBAIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHNyYz0iLi4vVHJhYy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL1NvdXJjZS9U
aGlyZFBhcnR5L3F1bml0L3F1bml0L3F1bml0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL01vY2tUcmFjLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL01vY2tCdWlsZGJvdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291
cmNlcy9Nb2NrQnVpbGRib3RRdWV1ZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy9Nb2NrQnVpbGRib3RRdWV1ZVZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvTW9ja0J1aWxkYm90VGVzdFJlc3VsdHMuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdHMuanMiPjwvc2NyaXB0PgogCiA8L2hlYWQ+CmRp
ZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxk
Ym90LmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJv
dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43NzI0YzY2NzBlYTJjNDFmZjY4NzI2OTEwMDU4ZGJhNGU1OTkxMzcw
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2Vz
L01vY2tCdWlsZGJvdC5qcwpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworTW9ja0J1aWxk
Ym90ID0gZnVuY3Rpb24oKSB7fTsKKworTW9ja0J1aWxkYm90LnByb3RvdHlwZSA9IHsKKyAgICBj
b25zdHJ1Y3RvcjogTW9ja0J1aWxkYm90LAorCisgICAgYnVpbGRQYWdlVVJMRm9ySXRlcmF0aW9u
OiBmdW5jdGlvbihpdGVyYXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5iYXNlVVJM
ICsgImJ1aWxkZXJzLyIgKyBlbmNvZGVVUklDb21wb25lbnQoaXRlcmF0aW9uLnF1ZXVlLmlkKSAr
ICIvYnVpbGRzLyIgKyBpdGVyYXRpb24uaWQ7CisgICAgfSwKKworICAgIGphdmFTY3JpcHRDb3Jl
VGVzdEZhaWx1cmVzVVJMRm9ySXRlcmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24sIG5hbWUpCisg
ICAgeworICAgICAgICByZXR1cm4gInJlc291cmNlcy90ZXN0LWpzYy1yZXN1bHRzLmpzb24iOwor
ICAgIH0sCisKKyAgICBqYXZhU2NyaXB0Q29yZVRlc3RTdGRpb1VybEZvckl0ZXJhdGlvbjogZnVu
Y3Rpb24oaXRlcmF0aW9uLCBuYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVS
TCArICJidWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1ZS5pZCkg
KyAiL2J1aWxkcy8iICsgaXRlcmF0aW9uLmlkICsgIi9zdGVwcy8iICsgbmFtZSArICIvbG9ncy9z
dGRpbyI7CisKKyAgICB9LAorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVz
dHMvcmVzb3VyY2VzL01vY2tCdWlsZGJvdFF1ZXVlLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMv
dGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJvdFF1ZXVlLmpzCmluZGV4IDIxMDdlZTcyMDVkNTI5
ODVlNWRhMjg4MDYxZDIwMjgxMDMzNWUzOWMuLjNmNWExZTdhNDlhZTY2YTFiYTE2OTI2YzRiZDBk
NGI3MjlmYzk1OTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291
cmNlcy9Nb2NrQnVpbGRib3RRdWV1ZS5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0
cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90UXVldWUuanMKQEAgLTM5LDcgKzM5LDcgQEAgTW9ja0J1
aWxkYm90UXVldWUgPSBmdW5jdGlvbigpCiAgICAgICAgIGhlYWRpbmc6ICIiLAogICAgICAgICBj
cmFzaGVzT25seTogIiIKICAgICB9OwotICAgIEJ1aWxkYm90UXVldWUuY2FsbCh0aGlzLCAiTW9j
ayBCdWlsZEJvdCIsICJpZCIsIGluZm8pOworICAgIEJ1aWxkYm90UXVldWUuY2FsbCh0aGlzLCBu
ZXcgTW9ja0J1aWxkYm90KCksICJpZCIsIGluZm8pOwogfTsKIAogQmFzZU9iamVjdC5hZGRDb25z
dHJ1Y3RvckZ1bmN0aW9ucyhNb2NrQnVpbGRib3RRdWV1ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90VGVzdFJlc3VsdHMuanMg
Yi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90VGVzdFJl
c3VsdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ5ODYyOTU4ZDliMDRhYzhmM2JmODM5NTVhZDI5YWRhM2Zm
NTk4YQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291
cmNlcy9Nb2NrQnVpbGRib3RUZXN0UmVzdWx0cy5qcwpAQCAtMCwwICsxLDM1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworTW9ja0J1aWxkYm90VGVzdFJlc3VsdHMgPSBmdW5jdGlvbigpIHt9OworCitNb2NrQnVp
bGRib3RUZXN0UmVzdWx0cy5wcm90b3R5cGUgPSB7CisgICAgY29uc3RydWN0b3I6IE1vY2tCdWls
ZGJvdFRlc3RSZXN1bHRzLAorCisgICAgYWRkSmF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXM6IGZ1
bmN0aW9uKGRhdGEpCisgICAgeworICAgICAgICAgdGhpcy5yZWdyZXNzaW9ucyA9IGRhdGEuc3Ry
ZXNzVGVzdEZhaWx1cmVzOworICAgIH0sCit9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Nj
cmlwdHMvdGVzdHMvcmVzb3VyY2VzL3Rlc3QtanNjLXJlc3VsdHMuanNvbiBiL1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy90ZXN0LWpzYy1yZXN1bHRzLmpzb24KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTVjYzlhMTFmY2Q1ZmMxODdkYjQwOTE3N2U1Mjc0NDEzMTMwNmZjZgotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy90ZXN0LWpzYy1yZXN1
bHRzLmpzb24KQEAgLTAsMCArMSBAQAoreyJzdHJlc3NUZXN0RmFpbHVyZXMiOlsibG9yZW0gaXBz
dW0gZG9sb3Igc2l0IGFtZXQiLCAiY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0IiwgInNlZCBk
byBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxp
cXVhIl0sICJhbGxBcGlUZXN0c1Bhc3NlZCI6IHRydWV9CmRpZmYgLS1naXQgYS9Ub29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVzdHMuanMgYi9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0
cy90ZXN0cy9yZXNvdXJjZXMvdGVzdHMuanMKaW5kZXggZjI3MmEwYWIxOGFjYzhmZjk1N2Q1YjBi
ZDcxNzI0OTdiNWJkYzZlZS4uODU0ZTM1ODhlODAyMjZlYmNhZTk2NmEwMWY1YTdhYzk1ZDRjNjk5
NSAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL3Rlc3Rz
LmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy90ZXN0cy5qcwpA
QCAtMjYzLDYgKzI2Myw5MCBAQCB0ZXN0KCJfZm9ybWF0UmV2aXNpb25Gb3JEaXNwbGF5IEdpdCIs
IGZ1bmN0aW9uKCkKICAgICBzdHJpY3RFcXVhbCh0aGlzLnZpZXcuX2Zvcm1hdFJldmlzaW9uRm9y
RGlzcGxheSgiMGU0OThkYjVkOGU1YjVhMzQyNjMxIiwgcmVwb3NpdG9yeSksICIwZTQ5OGRiIiwg
IlNob3VsZCBiZSAwZTQ5OGRiIik7CiB9KTsKIAordGVzdCgiX3BvcG92ZXJDb250ZW50Rm9ySmF2
YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnMgbG9hZCBmYWlsdXJlIFVJIHRlc3QiLCBmdW5jdGlv
bigpCit7CisgICAgdmFyIGZpbmlzaGVkID0gZmFsc2U7CisgICAgdmFyIGl0ZXJhdGlvbiA9IG5l
dyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLnF1ZXVlLCAxLCBmaW5pc2hlZCk7CisgICAgaXRlcmF0
aW9uLmphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMgPSBuZXcgTW9ja0J1aWxkYm90VGVzdFJlc3Vs
dHMoKTsKKworICAgIHZhciB2aWV3ID0gbmV3IEJ1aWxkYm90UXVldWVWaWV3KCk7CisgICAgdmFy
IGNvbnRlbnQgPSB2aWV3Ll9wb3BvdmVyQ29udGVudEZvckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jl
c3Npb25zKGl0ZXJhdGlvbik7CisKKyAgICB2YXIgbnVtQ2hpbGRyZW5JbkVtcHR5UG9wb3ZlckNv
bnRlbnQgPSAyOworICAgIHN0cmljdEVxdWFsKGNvbnRlbnQuY2hpbGROb2Rlcy5sZW5ndGgsIDEg
KyBudW1DaGlsZHJlbkluRW1wdHlQb3BvdmVyQ29udGVudCk7CisgICAgc3RyaWN0RXF1YWwoY29u
dGVudC5jaGlsZE5vZGVzW251bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50XS5jbGFzc05h
bWUsICJsb2FkaW5nLWZhaWx1cmUiLCAiUG9wb3ZlciBmb3IgbG9hZGluZyBmYWlsdXJlIG11c3Qg
aGF2ZSB0aGUgYXBwcm9wcmlhdGUgY2xhc3MiKTsKKyAgICBzdHJpY3RFcXVhbChjb250ZW50LmNo
aWxkTm9kZXNbbnVtQ2hpbGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnRdLnRleHRDb250ZW50LCAi
VGVzdCByZXN1bHRzIGNvdWxkblx1MjAxOXQgYmUgbG9hZGVkIiwgIlBvcG92ZXIgZm9yIGxvYWRp
bmcgZmFpbHVyZSBtdXN0IHVzZSB0aGUgY29ycmVjdCB0ZXh0Iik7Cit9KTsKKwordGVzdCgiX3By
ZXNlbnRQb3BvdmVyRm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnMgaW5jbHVkaW5nIGxv
YWRpbmciLCBmdW5jdGlvbigpCit7CisgICAgdmFyIGZpbmlzaGVkID0gZmFsc2U7CisgICAgdmFy
IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB2YXIgcG9wb3Zl
ciA9IG5ldyBEYXNoYm9hcmQuUG9wb3ZlcigpOworICAgIHZhciBpdGVyYXRpb24gPSBuZXcgQnVp
bGRib3RJdGVyYXRpb24odGhpcy5xdWV1ZSwgMSwgZmluaXNoZWQpOworICAgIGl0ZXJhdGlvbi5q
YXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzID0gbmV3IE1vY2tCdWlsZGJvdFRlc3RSZXN1bHRzKCk7
CisKKyAgICB2YXIgdmlldyA9IG5ldyBCdWlsZGJvdFF1ZXVlVmlldygpOworICAgIHZpZXcuX3By
ZXNlbnRQb3BvdmVyRm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnMoZWxlbWVudCwgcG9w
b3ZlciwgaXRlcmF0aW9uLCAianNjb3JlLXRlc3QiKTsKKworICAgIEpTT04ubG9hZCgicmVzb3Vy
Y2VzL3Rlc3QtanNjLXJlc3VsdHMuanNvbiIsIGZ1bmN0aW9uKGRhdGEpCisgICAgeworICAgICAg
ICB2YXIgdGVzdFJlZ3Jlc3Npb25zID0gZGF0YS5zdHJlc3NUZXN0RmFpbHVyZXM7CisgICAgICAg
IHZhciBudW1DaGlsZHJlbkluRW1wdHlQb3BvdmVyQ29udGVudCA9IDI7CisgICAgICAgIHN0cmlj
dEVxdWFsKHBvcG92ZXIuX2NvbnRlbnQuY2hpbGROb2Rlcy5sZW5ndGggLSBudW1DaGlsZHJlbklu
RW1wdHlQb3BvdmVyQ29udGVudCwKKyAgICAgICAgICAgIHRlc3RSZWdyZXNzaW9ucy5sZW5ndGgs
CisgICAgICAgICAgICAiTnVtYmVyIG9mIGZhaWx1cmVzIGluIHBvcG92ZXIgbXVzdCBiZSBlcXVh
bCB0byBudW1iZXIgb2YgZmFpbGVkIHRlc3RzIik7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0ZXN0UmVncmVzc2lvbnMubGVuZ3RoOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0cmljdEVxdWFsKHBvcG92ZXIuX2NvbnRlbnQuY2hpbGROb2Rlc1tpK251bUNoaWxkcmVuSW5F
bXB0eVBvcG92ZXJDb250ZW50XS5jaGlsZE5vZGVzWzBdLnRleHRDb250ZW50LAorICAgICAgICAg
ICAgICAgIHRlc3RSZWdyZXNzaW9uc1tpXSwKKyAgICAgICAgICAgICAgICAiTmFtZXMgb2YgZmFp
bHVyZXMgbXVzdCBtYXRjaCIKKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKyAgICB9KTsKK30p
OworCit0ZXN0KCJfY3JlYXRlTG9hZGluZ0luZGljYXRvciIsIGZ1bmN0aW9uKCkKK3sKKyAgICB2
YXIgZmluaXNoZWQgPSBmYWxzZTsKKyAgICB2YXIgaXRlcmF0aW9uID0gbmV3IEJ1aWxkYm90SXRl
cmF0aW9uKHRoaXMucXVldWUsIDEsIGZpbmlzaGVkKTsKKworICAgIHZhciB2aWV3ID0gbmV3IEJ1
aWxkYm90UXVldWVWaWV3KCk7CisgICAgdmFyIGhlYWRpbmcgPSAiRmFpciBpcyBmb3VsLCBhbmQg
Zm91bCBpcyBmYWlyIjsKKyAgICB2YXIgY29udGVudCA9IHZpZXcuX2NyZWF0ZUxvYWRpbmdJbmRp
Y2F0b3IoaXRlcmF0aW9uLCBoZWFkaW5nKTsKKworICAgIHZhciBudW1DaGlsZHJlbkluRW1wdHlQ
b3BvdmVyQ29udGVudCA9IDI7CisgICAgc3RyaWN0RXF1YWwoY29udGVudC5jaGlsZE5vZGVzLmxl
bmd0aCwgMSArIG51bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50KTsKKyAgICBzdHJpY3RF
cXVhbChjb250ZW50LmNoaWxkTm9kZXNbbnVtQ2hpbGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnRd
LmNsYXNzTmFtZSwgImxvYWRpbmctaW5kaWNhdG9yIiwgIlBvcG92ZXIgZm9yIGxvYWRpbmcgaW5k
aWNhdG9yIG11c3QgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgY2xhc3MiKTsKKyAgICBzdHJpY3RFcXVh
bChjb250ZW50LmNoaWxkTm9kZXNbbnVtQ2hpbGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnRdLnRl
eHRDb250ZW50LCAiTG9hZGluZ1x1MjAyNiIsICJQb3BvdmVyIGZvciBsb2FkaW5nIGZhaWx1cmUg
bXVzdCB1c2UgdGhlIGNvcnJlY3QgdGV4dCIpOworfSk7CisKK3Rlc3QoIl9wcmVzZW50UG9wb3Zl
ckZvckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jlc3Npb25zIGFscmVhZHkgbG9hZGVkIiwgZnVuY3Rp
b24oKQoreworICAgIHZhciBmaW5pc2hlZCA9IGZhbHNlOworICAgIHZhciBlbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdmFyIHBvcG92ZXIgPSBuZXcgRGFzaGJv
YXJkLlBvcG92ZXIoKTsKKyAgICB2YXIgaXRlcmF0aW9uID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9u
KHRoaXMucXVldWUsIDEsIGZpbmlzaGVkKTsKKyAgICBpdGVyYXRpb24uamF2YVNjcmlwdENvcmVU
ZXN0UmVzdWx0cyA9IHsicmVncmVzc2lvbnMiOiBbInVubyIsICJkb3MiLCAidHJlcyJdfTsKKwor
ICAgIHZhciB2aWV3ID0gbmV3IEJ1aWxkYm90UXVldWVWaWV3KCk7CisgICAgdmlldy5fcHJlc2Vu
dFBvcG92ZXJGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucyhlbGVtZW50LCBwb3BvdmVy
LCBpdGVyYXRpb24sICJqc2NvcmUtdGVzdCIpOworCisgICAgdmFyIG51bUNoaWxkcmVuSW5FbXB0
eVBvcG92ZXJDb250ZW50ID0gMjsKKyAgICBzdHJpY3RFcXVhbChwb3BvdmVyLl9jb250ZW50LmNo
aWxkTm9kZXMubGVuZ3RoIC0gbnVtQ2hpbGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnQsCisgICAg
ICAgIGl0ZXJhdGlvbi5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzLnJlZ3Jlc3Npb25zLmxlbmd0
aCwKKyAgICAgICAgIk51bWJlciBvZiBmYWlsdXJlcyBpbiBwb3BvdmVyIG11c3QgYmUgZXF1YWwg
dG8gbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cyIpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBp
dGVyYXRpb24uamF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cy5yZWdyZXNzaW9ucy5sZW5ndGg7IGkr
KykKKyAgICB7CisgICAgICAgIHN0cmljdEVxdWFsKHBvcG92ZXIuX2NvbnRlbnQuY2hpbGROb2Rl
c1tpK251bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50XS5jaGlsZE5vZGVzWzBdLnRleHRD
b250ZW50LAorICAgICAgICAgICAgaXRlcmF0aW9uLmphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMu
cmVncmVzc2lvbnNbaV0sCisgICAgICAgICAgICAiTmFtZXMgb2YgZmFpbHVyZXMgbXVzdCBtYXRj
aCIKKyAgICAgICAgKTsKKyAgICB9Cit9KTsKKwogbW9kdWxlKCJCdWlsZEJvdFF1ZXVlIiwgewog
ICAgIHNldHVwOiBmdW5jdGlvbigpIHsKICAgICAgICAgRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3Bl
blNvdXJjZS50cmFjID0gbmV3IE1vY2tUcmFjKCk7CkBAIC0zNTUsNCArNDM5LDQgQEAgdGVzdCgi
Y29tcGFyZUl0ZXJhdGlvbnNCeVJldmlzaW9ucyIsIGZ1bmN0aW9uKCkKICAgICBvayh0aGlzLnF1
ZXVlLmNvbXBhcmVJdGVyYXRpb25zQnlSZXZpc2lvbnMoaXRlcmF0aW9uMiwgaXRlcmF0aW9uMSkg
PCAwLCAiY29tcGFyZUl0ZXJhdGlvbnNCeVJldmlzaW9uczogbGVzcyB0aGFuIik7CiAgICAgb2so
dGhpcy5xdWV1ZS5jb21wYXJlSXRlcmF0aW9uc0J5UmV2aXNpb25zKGl0ZXJhdGlvbjEsIGl0ZXJh
dGlvbjIpID4gMCwgImNvbXBhcmVJdGVyYXRpb25zQnlSZXZpc2lvbnM6IGdyZWF0ZXIgdGhhbiIp
OwogICAgIHN0cmljdEVxdWFsKHRoaXMucXVldWUuY29tcGFyZUl0ZXJhdGlvbnNCeVJldmlzaW9u
cyhpdGVyYXRpb24yLCBpdGVyYXRpb24yKSwgMCwgImNvbXBhcmVJdGVyYXRpb25zQnlSZXZpc2lv
bnM6IGVxdWFsIik7Ci19KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>