<?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>92429</bug_id>
          
          <creation_ts>2012-07-26 15:22:50 -0700</creation_ts>
          <short_desc>Web Inspector: Add support for debugging Inspector LayoutTests w/Inspector</short_desc>
          <delta_ts>2014-03-10 16:40:35 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="johnjbarton">johnjbarton</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bburg</cc>
    
    <cc>bweinstein</cc>
    
    <cc>caseq</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>679830</commentid>
    <comment_count>0</comment_count>
      <attachid>154766</attachid>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-07-26 15:22:50 -0700</bug_when>
    <thetext>Created attachment 154766
&apos;testRunner&apos; chrome extension 

Currently LayoutTests must be developed without the aid of a debugger. The following changes would allow WebInspector to debug these tests on itself:

1. Add an ExperimentsSetting  &quot;testRunner&quot; (Settings.js)
2. When the developer has enabled this experiment, accept &quot;message&quot; events from extensions that eval() the test driver code.
3. Add a removeSniffers function to InspectorTest, so the WebInspector can be cleaned up after each test debugging run.

In addition &apos;testRunner&apos; extension needs to implement the equivalent of DumpRenderTree &apos;testRunner&apos;.  The attached Chrome extension does this for the majority of simple LayoutTests.

This scheme may not work for all LayoutTests, either because the extension interferes or does not implement enough of DumpRenderTree testRunner. But most tests are simple and would benefit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679892</commentid>
    <comment_count>1</comment_count>
      <attachid>154781</attachid>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-07-26 16:11:03 -0700</bug_when>
    <thetext>Created attachment 154781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680316</commentid>
    <comment_count>2</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-07-27 02:05:06 -0700</bug_when>
    <thetext>I like the general idea of enabling debugging of layout tests, but in my view, this particular approach is too much of a hack to expose even as an experiment. How about requiring a remote front-end for debugging layout tests? This way, it will run as a &quot;normal&quot; web page and you&apos;ll be able to inject scripts there with your extension. This could even be taken further -- your mock test runner, upon a call to showWebInspector() could request the background page to open a new tab and navigate it to the (remote) front-end and inject the code that install a listener for the message event on window. Perhaps, you could also monkey-patch the InspectedFrontendHostStub to have its sendMessageToBackend() to actually send message to background page, which would relay it to back-end through chrome.debugger API -- this way, one wouldn&apos;t event have to explicitly enable remote debugging ws server.
Actually, many other methods of InspectedFrontendHost may be implemented via an extension, which would allow for a nearly full-functional remote front-end -- quite useful beyond the scope of debugging, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680761</commentid>
    <comment_count>3</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-07-27 10:09:33 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I like the general idea of enabling debugging of layout tests, but in my view, this particular approach is too much of a hack to expose even as an experiment. 

I agree that this looks hacky at first, but only because we are calling eval() on something sent to us. The eval() is a consequence of how LayoutTests work; I guess all solutions will require eval(). We might have other ways to send the script but this one gives a high degree of security. 

One small improvement I thought about this morning would 
  1) add a function to ExtensionServer to check if a URL is a registered extension,
  2) move the eval() into a separate onmessage handler in another small .js file and have it check the origins using the new function from #1.
Would this be better?

&gt;How about requiring a remote front-end for debugging layout tests? This way, it will run as a &quot;normal&quot; web page and you&apos;ll be able to inject scripts there with your extension. This could even be taken further -- your mock test runner, upon a call to showWebInspector() could request the background page to open a new tab and navigate it to the (remote) front-end and inject the code that install a listener for the message event on window. Perhaps, you could also monkey-patch the InspectedFrontendHostStub to have its sendMessageToBackend() to actually send message to background page, which would relay it to back-end through chrome.debugger API -- this way, one wouldn&apos;t event have to explicitly enable remote debugging ws server.
&gt; Actually, many other methods of InspectedFrontendHost may be implemented via an extension, which would allow for a nearly full-functional remote front-end -- quite useful beyond the scope of debugging, I think.

Yes, I agree this would be a great idea, but I&apos;ve already tried all of the combinations like this I can think up.  I have a functional inspector/front_end in a chrome extension operating over chrome.debugger and I can monkey-patch it to accomplish the same thing as we have here. (https://github.com/johnjbarton/sirius)

However this solution requires 
   a) changes to devtools extensions because there is no way to inject the chrome.devtools API,
   b) synchronization of the extension copy of inspector/front_end with trunk (I do that myself but it would put a big barrier for others to do).
   c) adoption/learning of the extension by other devs

 Note that the extension solution is much less attractive after you realize:
  1) content-scripts can only act on https://, not chrome:// or chrome-extension://,
  2) devtools extensions need to be tested and devtools need be tested with extensions installed,
  3) devtools-extensions only function properly when loaded via normal devtools operation.

However, perhaps I don&apos;t understand what you have in mind?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681550</commentid>
    <comment_count>4</comment_count>
      <attachid>155168</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-29 06:00:37 -0700</bug_when>
    <thetext>Created attachment 155168
[Patch] Standalone test running proof of concept</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681551</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-29 06:04:46 -0700</bug_when>
    <thetext>Here is a how to use my patch (I think we can land it as is):

[Set up]

1) Start HTTP server on port 8000 that serves WebKit/ folder

2) Run Chrome Canary as

/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary  --remote-debugging-port=9222 --no-first-run  --user-data-dir=testProfile http://localhost:8000/LayoutTests/inspector/

[Run]

Clicking on the test will run inspector test in a standalone mode. Unblock popups to see inspector window opening and running through the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681766</commentid>
    <comment_count>6</comment_count>
      <attachid>155168</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-07-30 01:20:44 -0700</bug_when>
    <thetext>Comment on attachment 155168
[Patch] Standalone test running proof of concept

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

&gt; LayoutTests/http/tests/inspector/inspector-test.js:519
&gt; +function StandaloneTestRunner()

StandaloneInspectorTestRunner?

&gt; LayoutTests/http/tests/inspector/inspector-test.js:553
&gt; +        stylesheet.rel=&quot;stylesheet&quot;;

&quot; = &quot;

&gt; LayoutTests/http/tests/inspector/inspector-test.js:555
&gt; +        stylesheet.href = &quot;/LayoutTests/http/tests/inspector/resources/jsdifflib/diffview.css&quot;;

Extract the base name as a const?

&gt; LayoutTests/http/tests/inspector/inspector-test.js:587
&gt; +            this._postMessages([command]);

command?? so does this work?

&gt; LayoutTests/http/tests/inspector/inspector-test.js:603
&gt; +        setTimeout(function() {

Why do we need this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682037</commentid>
    <comment_count>7</comment_count>
      <attachid>155297</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-30 08:27:56 -0700</bug_when>
    <thetext>Created attachment 155297
[Patch] review comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682088</commentid>
    <comment_count>8</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-07-30 09:41:12 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Here is a how to use my patch (I think we can land it as is):
&gt; 
&gt; [Set up]
&gt; 
&gt; 1) Start HTTP server on port 8000 that serves WebKit/ folder
&gt; 
&gt; 2) Run Chrome Canary as
&gt; 
&gt; /Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary  --remote-debugging-port=9222 --no-first-run  --user-data-dir=testProfile http://localhost:8000/LayoutTests/inspector/
&gt; 
&gt; [Run]
&gt; 
&gt; Clicking on the test will run inspector test in a standalone mode. Unblock popups to see inspector window opening and running through the test.

I get:
 
Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:8000/Source/WebCore/inspector/front-end/InspectorBackendCommands.js
Unexpected response code: 500 :8000:1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682785</commentid>
    <comment_count>9</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-31 00:35:30 -0700</bug_when>
    <thetext>&gt; Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:8000/Source/WebCore/inspector/front-end/InspectorBackendCommands.js
&gt; Unexpected response code: 500 :8000:1

Try restarting the Canary and/or changing the remote connection address in inspector-test.js. I&apos;ll fix it once we introduce localhost:9222/jsonp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683268</commentid>
    <comment_count>10</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-07-31 11:05:25 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:8000/Source/WebCore/inspector/front-end/InspectorBackendCommands.js
&gt; &gt; Unexpected response code: 500 :8000:1
&gt; 
&gt; Try restarting the Canary and/or changing the remote connection address in inspector-test.js. I&apos;ll fix it once we introduce localhost:9222/jsonp.

Sorry, neither restarting nor changing the address had any effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683642</commentid>
    <comment_count>11</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-07-31 16:56:20 -0700</bug_when>
    <thetext>This link does work:
http://localhost:9220/out/Release/resources/inspector/devtools.html?ws=localhost:9222/devtools/page/2_1

The port is different, but I don&apos;t think this matters.
The path points to the built devtools so I don&apos;t get the 404
The inspectable pages link points to 2_1 instead of 4_1 so I don&apos;t get the 500.

A simple workaround before the jsonp is to use the link
http://localhost:9222
and manually select the page with the test.

If the link were configurable then I believe I could also launch sirius this way.

As soon as the devtools load they run the tests and exit. For debugging we&apos;ll need to clear the WebInspector.InspectorTest and removeSniffers as I did in my patch. I also ran into a few issues related to the difference between tests and real-life. One I ran down: if the Debugger is disabled, then you reload the web page, the Console is broken. Console linkifies and consults DebuggerModel but it has stale info because it ignores the globalObjectReset message when disabled. I guess Debugger disable is not supported in real life.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684622</commentid>
    <comment_count>12</comment_count>
      <attachid>155894</attachid>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-08-01 15:03:54 -0700</bug_when>
    <thetext>Created attachment 155894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684639</commentid>
    <comment_count>13</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-08-01 15:16:10 -0700</bug_when>
    <thetext>This version succeeds in debugging a simple case:
As before start a server root /WebKit, any port.
Open a fresh copy of the browser on the /LayoutTests/inspector, navigate to your test. 
When the page opens, a popup offers to debug, giving two choices, click on the LayoutTest one.
The inspector loads and runs the test case. Diffs nicely shown, thanks Pavel.
Now open inspector on the test-inspector. 
If you use control-R in the outer inspector, the test-inspector will reload and then the test page will fire the test again.

I don&apos;t know if this version will work on tests that involve reloading the web page. 

Changes over Pavel&apos;s version:

Test page opens http://localhost:9222 and the tester has to pick the test case out of the little windows. Workaround for no jsonp solution but it&apos;s ok. This change also means the server port need not be embedded in the inspector-test.

The eval() in TestController gets a // @ sourceURL so we can pick out the driver code.

StandaloneTestRunner no longer closes the test-inspector, but prepares to clear the test results when we detect a reload of the test-inspector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684709</commentid>
    <comment_count>14</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-08-01 16:05:09 -0700</bug_when>
    <thetext>We can&apos;t run extension/ tests because this code in inspector-test.js fails:
        var extensionURL = (/^https?:/.test(pageURL) ?
            pageURL.replace(/^(https?:\/\/[^/]*\/).*$/,&quot;$1&quot;) :
            pageURL.replace(/\/inspector\/extensions\/[^/]*$/, &quot;/http/tests&quot;)) +
            &quot;/inspector/resources/extension-main.html&quot;;
The condition is true, but in our case we want the &apos;else&apos; branch. I don&apos;t understand what the true case supports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691186</commentid>
    <comment_count>15</comment_count>
      <attachid>157383</attachid>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-08-08 21:59:24 -0700</bug_when>
    <thetext>Created attachment 157383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691206</commentid>
    <comment_count>16</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-08-08 22:24:08 -0700</bug_when>
    <thetext>Ok here is another try, let me know what you think.

I kept running in to problems in debugging, eventually discovering that we can&apos;t use WebInspector on WebInspector for breakpoint debugging (https://code.google.com/p/chromium/issues/detail?id=139747). 

So we need a scheme where the test-victim is running as a Web App, eg as a remote debugger in a different browser. (It&apos;s possible that running the client and server of remote debugging and the debugger-on-debugger all in one browser will work, but I had problems and I want I scheme that I know can work).

This solution uses two browsers and two copies of the test case. One browser is the backend for testing and output of the test run. The other browser is the front-end for testing, debugger for that test front-end, and reads the test script from the second copy of the test case. 

Sounds complicated but I think it&apos;s a bit cleaner than the other two tries. We have two completely independent debuggers and the devtools extension just needs to reload the victim with a script to trigger the test-script-loading.  Biggest source of issues is async timing as usual.

[Install]

Install testRunner devtools extension: https://github.com/johnjbarton/testRunner

[Set up]

1) Start HTTP server on port 8000 that serves WebKit/ folder

2) Run Chrome Canary as

/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary  --remote-debugging-port=9222 --no-first-run  --user-data-dir=testProfile http://localhost:8000/LayoutTests/inspector/

3) Run another copy of Chrome (different --user-data-dir), open http://localhost:9222 and select the box that matches step 2.

4) Open WebInspector on the Web page result from #3 (debugger on debugger).


[Run]

Navigate the first browser to a test case. 
Open the testRunner panel in the debugger-on-debugger. 
  Click Set... to load the current test case URL into testRunner
  Click runTest to reload the to-be-tested debugger and run the tests.
Results appear in the test case web with jsdifflib</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691983</commentid>
    <comment_count>17</comment_count>
      <attachid>157577</attachid>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-08-09 16:42:43 -0700</bug_when>
    <thetext>Created attachment 157577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691988</commentid>
    <comment_count>18</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-08-09 16:49:42 -0700</bug_when>
    <thetext>I had good luck with the latest version. Two problems just solved:
  1) sometimes difflib failed to load in time; now we wait for both onLoad events.
  2) In fixing the test-case code I often just pressed &quot;runTest&quot; on the debugger-on-debugger. That exercises the debugger test case, but appends output to the web page. To avoid confusion now we just reload the web-page every time we reload the debugger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691993</commentid>
    <comment_count>19</comment_count>
      <attachid>157581</attachid>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-08-09 16:57:02 -0700</bug_when>
    <thetext>Created attachment 157581
Screenshot of setup

In case my explanations are unclear, here is how the setup looks
From deepest (top of screen) the three windows: 
1) test web-page, browser 1, 9222 server
2) to-be-tested debugger, browser 2, 9222 client
3) debugger-on-debugger, browser 2, built-in devtools, showing testRunner extn.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691996</commentid>
    <comment_count>20</comment_count>
      <attachid>157582</attachid>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-08-09 16:59:28 -0700</bug_when>
    <thetext>Created attachment 157582
completely re-written chrome extension, https://github.com/johnjbarton/testRunner</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692589</commentid>
    <comment_count>21</comment_count>
      <attachid>157577</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-10 09:12:48 -0700</bug_when>
    <thetext>Comment on attachment 157577
Patch

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

&gt; Source/WebCore/inspector/front-end/TestController.js:54
&gt; +    PageAgent.reload(true);

Could you explain why this is necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692602</commentid>
    <comment_count>22</comment_count>
      <attachid>157745</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-10 09:26:34 -0700</bug_when>
    <thetext>Created attachment 157745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692605</commentid>
    <comment_count>23</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-08-10 09:29:20 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 157577 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=157577&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/TestController.js:54
&gt; &gt; +    PageAgent.reload(true);
&gt; 
&gt; Could you explain why this is necessary?

It&apos;s for the case where we are re-running a test. The web page will have the results from a previous run, we need to clear that out.

I wonder if it might be better to navigate the web page to the test url instead.  I originally hoped to have the testRunner panel show the list of tests and drive the selection from there. But I could not figure out how to do that easily in a devtools extension.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692667</commentid>
    <comment_count>24</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-08-10 10:47:15 -0700</bug_when>
    <thetext>I just noticed that my patch on 2012-08-09 also includes the patch from Bug 93520, &quot;Refactor InspectorTest to split evals for initialization from runTest&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692668</commentid>
    <comment_count>25</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-08-10 10:49:39 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Created an attachment (id=157582) [details]
&gt; completely re-written chrome extension, https://github.com/johnjbarton/testRunner

Rather than an extension, we could have TestController add a status-bar button behind an experiments flag. Fewer moving parts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693565</commentid>
    <comment_count>26</comment_count>
      <attachid>157970</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-13 05:29:43 -0700</bug_when>
    <thetext>Created attachment 157970
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693572</commentid>
    <comment_count>27</comment_count>
      <attachid>157577</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-13 05:37:20 -0700</bug_when>
    <thetext>Comment on attachment 157577
Patch

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

&gt; Source/WebCore/inspector/front-end/TestController.js:48
&gt; +        setTimeout(this._clearAndTest.bind(this));  // wait for resourceTreeModel

setTimeout looks like a hack. Why do we wait for resourceTreeModel in particular? Please see my newer plumbing - it does not modify TestController, but rather does everything through the embedder API (InspectorFrontendAPI).

&gt; Source/WebCore/inspector/front-end/TestController.js:53
&gt; +    WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.OnLoad, this._testPageIsClear, this);

We should not rely upon resource tree model in the tests.

&gt;&gt;&gt; Source/WebCore/inspector/front-end/TestController.js:54
&gt;&gt;&gt; +    PageAgent.reload(true);
&gt;&gt; 
&gt;&gt; Could you explain why this is necessary?
&gt; 
&gt; It&apos;s for the case where we are re-running a test. The web page will have the results from a previous run, we need to clear that out.
&gt; 
&gt; I wonder if it might be better to navigate the web page to the test url instead.  I originally hoped to have the testRunner panel show the list of tests and drive the selection from there. But I could not figure out how to do that easily in a devtools extension.

I added a pure html test runner that lists tests and navigates the page to the test (see my newer patch). The only problem there is that we can&apos;t test debugger: we need to use extensions for that. By I wonder if we can use your approach and re-use some of my tests in order to achieve that.

&gt; LayoutTests/http/tests/inspector/resources/jsdifflib/difflib.js:1
&gt; +/***

Note that I am now using the bundled version of the difflib and no view at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693578</commentid>
    <comment_count>28</comment_count>
      <attachid>157970</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-08-13 05:46:56 -0700</bug_when>
    <thetext>Comment on attachment 157970
Patch

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

&gt; Source/WebCore/inspector/front-end/InspectorFrontendAPI.js:152
&gt; +if (window.opener) {
&gt; +    function onMessageFromOpener(event)
&gt; +    {
&gt; +        InspectorFrontendAPI.dispatch(event.data);
&gt; +    }
&gt; +    window.addEventListener(&quot;message&quot;, onMessageFromOpener, true);
&gt; +}

So we&apos;re letting embedders evaluate arbitrary code in the front-end? I think this will be abused. Besides, this does not even check that the message originates from the embedder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693585</commentid>
    <comment_count>29</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-13 05:56:33 -0700</bug_when>
    <thetext> &gt; So we&apos;re letting embedders evaluate arbitrary code in the front-end? I think this will be abused. Besides, this does not even check that the message originates from the embedder.

Well, in case there is opener, we no longer run in the trusted environment. Could you suggest the way it might be abused? I can check whether the message source == opener, but given that a random page can open front-end url I don&apos;t see how it affects the security model.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693590</commentid>
    <comment_count>30</comment_count>
      <attachid>157970</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-13 06:00:28 -0700</bug_when>
    <thetext>Comment on attachment 157970
Patch

Moved this patch into its own bug: it is about extension-less approach. https://bugs.webkit.org/show_bug.cgi?id=93833</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693591</commentid>
    <comment_count>31</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-08-13 06:07:06 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt;  &gt; So we&apos;re letting embedders evaluate arbitrary code in the front-end? I think this will be abused. Besides, this does not even check that the message originates from the embedder.
&gt; 
&gt; Well, in case there is opener, we no longer run in the trusted environment. Could you suggest the way it might be abused? I can check whether the message source == opener, but given that a random page can open front-end url I don&apos;t see how it affects the security model.

I&apos;m not concerned with the security in this particular case, rather with the encapsulation -- we don&apos;t want embedders desperate for implementing certain functionality to abuse eval(), rather than wait for proper API to be implemented.

&gt; I can check whether the message source == opener, but given that a random page can open front-end url I don&apos;t see how it affects the security model.

It&apos;s just me being paranoid. There may be other frames in the embedder, even those original authors of the embedder did not expect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693599</commentid>
    <comment_count>32</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-13 06:18:14 -0700</bug_when>
    <thetext>&gt; I&apos;m not concerned with the security in this particular case, rather with the encapsulation -- we don&apos;t want embedders desperate for implementing certain functionality to abuse eval(), rather than wait for proper API to be implemented.

There is always a way to serve the front-end form third party hosts and hence eval the code right in place, so I&apos;d rather trust our embedders to not harm themselves via using testing API.

&gt; &gt; I can check whether the message source == opener, but given that a random page can open front-end url I don&apos;t see how it affects the security model.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694478</commentid>
    <comment_count>33</comment_count>
    <who name="johnjbarton">johnjbarton</who>
    <bug_when>2012-08-13 21:26:19 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 157577 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=157577&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/TestController.js:48
&gt; &gt; +        setTimeout(this._clearAndTest.bind(this));  // wait for resourceTreeModel
&gt; 
&gt; setTimeout looks like a hack. 

Sure it is a hack. Each part of the WebInspector framework has a &apos;loadCompleted&apos; callback. In the TestController.loadCompleted() I want to depend upon WebInspector.resourceTreeModel. (or not, see below) I want to ensure that the loadCompleted() callback on resourceTreeModel finishes before I rely upon it. Thus I schedule the dependent code on the turn falling loadCompleted().   

Is there another way to say &quot;run the next function after all loadCompleted() callbacks have finished&quot;?  

Or perhaps we can rely on WebInspector.resourceTreeModel.addEventListener() in our loadCompleted?

&gt; Why do we wait for resourceTreeModel in particular? 

All I want to accomplish is to reload the web page and know that this operation has completed. The only way I found to accomplish this was to add an event handler for ResourceTreeModel.EventTypes.OnLoad, then use PageAgent.reload(). (or to use the test-runner.html, PageAgent.navigate())

Is there another way to listen for the web page &apos;load&apos; event? 

&gt; Please see my newer plumbing - it does not modify TestController, but rather does everything through the embedder API (InspectorFrontendAPI).

I think that makes sense for the opener approach. For my two-browser approach either way would work, but TestController keeps the feature in one file.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/TestController.js:53
&gt; &gt; +    WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.OnLoad, this._testPageIsClear, this);
&gt; 
&gt; We should not rely upon resource tree model in the tests.

As above, I need it to know that the web page has completed the reload operation before we fire the InspectorTests (I don&apos;t know that it is essential but DumpRenderTree works on loaded pages and I don&apos;t want to wonder if the tests is failing because of this difference).

&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/inspector/front-end/TestController.js:54
&gt; &gt;&gt;&gt; +    PageAgent.reload(true);
&gt; &gt;&gt; 
&gt; &gt;&gt; Could you explain why this is necessary?
&gt; &gt; 
&gt; &gt; It&apos;s for the case where we are re-running a test. The web page will have the results from a previous run, we need to clear that out.
&gt; &gt; 
&gt; &gt; I wonder if it might be better to navigate the web page to the test url instead.  I originally hoped to have the testRunner panel show the list of tests and drive the selection from there. But I could not figure out how to do that easily in a devtools extension.
&gt; 
&gt; I added a pure html test runner that lists tests and navigates the page to the test (see my newer patch). The only problem there is that we can&apos;t test debugger: we need to use extensions for that. By I wonder if we can use your approach and re-use some of my tests in order to achieve that.

Oh that was fun to run!

I think we could also use test-runner.html to drive the remote debugger in the two-browser scheme. A nice side effect would be understanding the limitations of these non-DumpRenderTree approaches.

The two browser scheme has these advantages:
  1) should work on debugger tests
  2) should work if the test reloads the web page
  3) stable window arrangement for debugging (no popups)
  4) debugs WebInspector in the recommended way

I&apos;m not sure what disadvantages you see and if there are ways to reduce them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989112</commentid>
    <comment_count>34</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-03-10 16:40:35 -0700</bug_when>
    <thetext>A glorious thread, but the technical approach doesn&apos;t really work for the current state of the inspector. I opened https://bugs.webkit.org/show_bug.cgi?id=130051 to track a new approach.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>154766</attachid>
            <date>2012-07-26 15:22:50 -0700</date>
            <delta_ts>2012-08-09 16:59:28 -0700</delta_ts>
            <desc>&apos;testRunner&apos; chrome extension </desc>
            <filename>testRunner.crx</filename>
            <type>application/x-chrome-extension</type>
            <size>24632</size>
            <attacher name="johnjbarton">johnjbarton</attacher>
            
              <data encoding="base64">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
+XAc5/MAh4eHGIZBu93Gtm1s2+b+/p7Ly0uX7uLigru7OyzLwnEcnp+faTabxGIxAMLhML1ej+Vy
+bkIJEni9PSU29tbrq+vcRyH7e1tDg4OXLp0Ok2r1ULXdRaLBaFQCEVRyOfzAGQyGWq1GpZlueaA
z/uUegAegAfgAawb4BVvysH/6FESAwAAAABJRU5ErkJgghpvJ9lQSwMEFAAAAAgAAAAAABXMJmf6
AAAA9QAAADYAAAAuZ2l0L29iamVjdHMvODIvYjc3ZWYyMWVhMjk5NGUwZGNiZjJlZWJkZjRiOTVm
OGE2MzczZTkB9QAK/3gBZZDBSgMxEIY95ymGvexWSmIVelAEUasIeqr3spuMu6nZzJrMthTx3c3q
lko9DATm/79vSOWogov5/EQpeCSqHcLt8h6c1egjQsPcXSqlyaCsf9ZSU6t+n6sqmtWYlA23TiTI
HXW7YOuG4fxsNtszn7yWsKbGr6syMPmbA0yIt95rtuQhoKPSPFB4xcjW18UEPgXA1npDW9lR5BeM
sayxyI6j2RSy02xyJb6EGPOlMYsNen62kdFjKPKBnk9h7xvxmzJA6P3gXDiGazCk+zYV5UePYbdE
h5op1eWYypMG/lTkf5NO3/KeVMdnDgemEd+MnoDbUEsDBBQAAAAIAAAAAAB8f743kAMAAIsDAAA2
AAAALmdpdC9vYmplY3RzLzdmLzgxMjZlYzE2ZmNjYmE1MGE0Nzg3ZTdkZmU2MjFlZmE4YTJhMDI2
AYsDdPx4AZVV227bRhDts75iwqAQWTmr2H0pbBhomkthoEmKKoAf2sKgyOHFWe0wy5XswNC/Z/ZC
82IGRfUgSLtnZs/MnJnZStrC2dkvP/+wXsPvRKVE+G3zBmSdoWoRKmOa8/U6oxxF6a5FRru1/3mz
bfObgBSV2ckFO3lNzVddl5WBs5enp53PK5UJuKVK3W5TbUj92jtbZKRakigklXFksDVv8GCIZAtb
LGvVwo8UnUBWadphcrFYHFINGiWlOebvSH9ii1qVcAlFKltkQLFXmalJBVSPiRN4WABYB/adv/ZK
od5kum4Mm+eU7XeojPiyR/11gxIzQzqOnvfYKBEG781rUoaBF+xrRL5Wt2yDuXd5Dky7t/WHHADM
szd6z+Q9u0xiql9JyayiuoD4rlY53Ykr1TaOlI05gblToXFHB9youihQt3Fy8Y+KLM/O44pd5hyb
wVl7C3dxfR+vsd1L0zqYTWVB+hq3j9yY8wM/aD87NBXlnAc8pHKfGrxSQ2R0EnCpLttz+LvjeAJR
91PcttG/jDpaTiHeJtW2Sg215j22bVpiPKHADn6KErbwohF5EJRgNdkEYn7tE+plFD9MCzet2pHL
dhwIywnTFoGFF0T1X0/ZFMQu3ijE0T8iJvxZNw7ZCXkan5exzfBIfkNWYN/D/ElxotXkLeGLdDJF
OqHaJ6z+JjaJp2dv/2dNbBm5mpN0kvqQHuqSBZLHey0Tq59RZAMARCuGrJZzTbRcPZ0LLg4bw8xV
EOrTm36YWLrDvHJDMbkjII+akfm7x0kUICPBSKLPjHgb+uDtgRUc77x6fTVH8c7BOfBg4GbQY1zD
Q2CF53j/sYiXvbpCk5wvk8vLS3jZiWcmqhFlVOlW4ljkvAncGO47SqG5I/1ZDCok0jz/o255QqKO
B+eOcbDH+wZ1badtKntnXQ5IBc6vcp7xI39zmWHH3JxTZtNe7xqwaz9JWWq3hKg0Fm4Ude0GpGyh
nBRDjTtmbkex/rwKXUS+Q/isz/06vE16vUzgGWf9xSmnHYD34zUCzy8wFcKh5jW1AyrcluBR4poD
YJJ53zNPh1mTKlahyDRy4/jN6Tcajw+3R/2/K+YuGlWOT/+0xm5p83kXeOxcdgKx0gdwR1zeTUV3
alSKzgq82Y0fBWPrYB/urLmT/qM8lkG9ywEJtM0xddMtzWmbeZL22w6VuX/d+dH27YJBi2+wVAM3
UEsDBBQAAAAIAAAAAAAdRzhZBwIAAAICAAA2AAAALmdpdC9vYmplY3RzL2QyLzZjNzgyNWIyZWNj
ZGMyNTNlYmZiYjhkNTUyNjg1NWQ4OWExOTYwAQIC/f14AVWTwW7bMAyGd+5TEN6lBaYIw4BuLRxf
igIDNiDDGqDHQrYZW4siChIdL28/Sm7SzidZon7+/Ci2jlr49vXLh3rkg2uu6pb6U3MFUI+fmy0m
ht+T9xjh8S+jT5Z8reXkKkeE5olNZOARQf5lx8AYcbeuRuZwr/U8z6tujHSw02FFcdA9HtFRwJg0
i7b1g56x3VtWzpxoYpV308ft5kHl3EnxaFhNCZVR37fbX+oJ4xFj1eQ4SOWn1ib7lY88BBI/d7d3
t58AB6h1KKWEiE0O6HpIsdM82ti/BLF+0s/Y/rCst0Qu6acu2sCpqK20x1nFyatXh7mmHpRaskIq
pSsViXitZ4p7nWy0U9J4JqUNU5it/llqKwVpEbh4zAx19pYXodkE9IWlYBTxAXldvbTO+H31P1ZH
nXEjJb7PlepXGp2z6DnTAON78OZoB8MITEU0E7tONyCYYTZeukYg1a3eIC0GpEWcYWSaubGFNJu2
iErrPLyPOK9XF9TNZrm3s1FadD6HjsIJrrMg+eKpXaSxv5E+OuyWZ5QhQTAe3XtjD852++KmnLcT
M/l3Kbci21GPsJO39uY6mAFhts6BJLOLrYQdCZ2Lr4ulHttpGORFXu7jW9gNmMVfS5L6ALQrUYmm
2KGgPkhslUktw/J4NC6t/qSqUKn1MlMyOHnE/gEzMCl1UEsDBBQAAAAIAAAAAAATVD2zfwAAAHoA
AAA2AAAALmdpdC9vYmplY3RzLzM3L2RlNTUxYWIzYWMyMmQzYTZhNjNmOGZiNDkxZmI3ZDE2MWYw
ZjVlAXoAhf94AV2OMQ7CMBRDmXOKf4JIDD0BEhMT4gIJdWmlEJf8n5bennRh6Go9PzsmRjl33eky
Fr4hPRYjkwq+hqwTsxhbGutLjsgtbKz2gJp6d2WRqpC47Q4kzigqHI4t79wdnzoVqASZgz1H9LI0
eN9q/P/B0IyZq3c/COk7HFBLAwQUAAAACAAAAAAAwjuXpHUAAABwAAAANgAAAC5naXQvb2JqZWN0
cy81OS9iZjljNDQ0N2Y1YjcxNWYzN2ZhZTZmNTFmYjIzYzE2MmMyODRiNAFwAI//eAEljTEOgzAM
RTvnFBYLWyMmFuMzoKoXICESoOBUsTNwe1Ky/eG9911MDoZhfOGmZySD4vP+U5Dsp06D6Kcwhzwv
HOL7kI7QNoKMQZfWiwwAuqKaGHxcRKY+F/5Ws6fqwn+hbUDN2+agfe5uepoqUlBLAwQUAAAACAAA
AAAAykSzx1MCAABOAgAANgAAAC5naXQvb2JqZWN0cy9lNS8wNjQ1Y2YxYjNjMDczNThkYjkxZTUx
YzZmYTJlNWEwNzkzOGU4MAFOArH9eAGdVMFu00AQ5Rwp/zD40oQmdhIhIZm0AlqEggQHWsQBVZW9
ntgbNjuWd500qvrvzNpObUO4kEPsZGbevnnzdmJFMcwXb16/WGZ2qy6Hg2WGUcJPfns5ncJXshiC
zRDWpBTtpU4BjChkbkEa0GQBH1CUFhPIsMAJ2EOOx9DnaBfd1Mk+rKoKqTcoXLbUYKlCtmgsiMgg
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
hbVVUSO3P3qw0K68rYBnmjcPytQxM3auj02Ff+B4Xka4qqxRZdAJu2B3cKYndvJMhiPvHKLc6WI+
jhsDEps6Vbl5qBpW799y1e1udXzHtdK1dq2E9A5emnzFa052agm9Q09qWx1Rr2F1ZPOC8+ZswF6N
Kz7fdc33iELfBsrOOHQbBjaNNX3pOx67sVt1O5tZEHLJ5oAQbXWV7Okgqh3LoUbcfHp83Epa+IjV
Q7Gpv6OBuK0moh/KL/D4IEpXwRZiO691lJtib6CkkxPyz70nPPVyhLPiFF0TqvppIleYj+fXJ9b6
ntTCjX4l0ocr6GOzAo9RoY2O9mTsdwfjBTE4mqoUFtscLx8FmwhUA2dbjaBK2Gt3XnfhQP5uqtcD
Ky28PoUV+j1MazuxM2Vewre3wutfUu14mxw/E7bPqv0C+4ppR+4tfG1pfZXTQ4/3oywgA5W2U+MV
pS2CHEOivv+zvVtrTu7HjRu4F+h/j1KtpRtIpBLyv3xsU0KUtkWHE3ej2c49ug241qT7VUihU7xd
3YXT4H9QSwMEFAAAAAgAAAAAAO0fcNmeAwAAqAYAABwAAAAuZ2l0L2hvb2tzL3ByZS1jb21taXQu
c2FtcGxlfVRdb9tGEHw2f8VGNuwYEClZUAzbhQ0IboAEMPqQGuhDGhRH3p54NXnH3B0lKwj62zN3
pGQ4LfrGj/2Y2Z3Z4zezUpuZr7Pj7JhWhvhZtF3DVFv7RL5yugsULG3YabWjbS0CaU+itH36XjJV
tm11CCwLVLgXTcOSyh1N1jqM/ya01aEmY0m4dd+yCb4geqz3XWrbNxLJ/IyUMdTk39hZ8kGEHv1U
YIfGvtdmTcKQ6DpnO6dFYGrZe7Fm0go1YgWBBhGcD7ajUO8hFonjoyU2ogTFUINJRDAlh0/t+EXp
+M/SpHOcjwSKLNOKIiPHm7wTzjPl+TiUD+9Xv9LdTPJmZvqmocXd6UWGtiY7EmuhjQ+3MSTjxnN2
dEwfjQ5aNCOqG5JaKRojIzduu7Cj4JjJln9zFV7qLMurxTtZXS4XVXnJ5bWYX8753bJUV/LyenF1
pUrm5fV8mSmdgetHRTvbp4FERtiN3abZCl9pnZhG3p48h4H8RmCm5TCA4HouspSEnJRye/J2WKtR
ep1m54tXAeex7SeW2gE3QSTdoBMfJDtXZPzMFV3cnS5i3L2z3lPXiKCsawkbjWyxOjYy4d1YLf8L
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
L1BLAQIAABQAAAAIAAAAAAAAAAAAAgAAAAAAAAAQAAAAAAAAAAAAAAAAAGMYAAAuZ2l0L29iamVj
dHMvODkvUEsBAgAAFAAAAAgAAAAAAOWoJ9eBAAAAfAAAADYAAAAAAAAAAAAAAAAAkxgAAC5naXQv
b2JqZWN0cy84OS85NWI5ODA5ZjNkMzkyNDk3ZWE2YmY3MTQ1YWRiOWQ1YzI4ZDFkZlBLAQIAABQA
AAAIAAAAAAAXXvxzWgMAAFUDAAA2AAAAAAAAAAAAAAAAAGgZAAAuZ2l0L29iamVjdHMvODkvYWVj
MmY4MDAwMmVjZjFjZGJjNjIzODg5OTNmNzkyYzQ1YmU1YzJQSwECAAAUAAAACAAAAAAASjIIMeIA
AADdAAAANgAAAAAAAAAAAAAAAAAWHQAALmdpdC9vYmplY3RzLzg2L2VlYzNkNjRlNzIzOWI5YjZj
NjJlYjJiZjJkMWU4N2JjM2FmNTNjUEsBAgAAFAAAAAgAAAAAAH0Eg3xLAQAARgEAADYAAAAAAAAA
AAAAAAAATB4AAC5naXQvb2JqZWN0cy9hZC83NmRkYzA2MWQxNzQ1N2IxNjM2ZTQyNmVjNGI4OWVh
ZDRmYjQ0N1BLAQIAABQAAAAIAAAAAAB6TtnZxwIAAMICAAA2AAAAAAAAAAAAAAAAAOsfAAAuZ2l0
L29iamVjdHMvMjYvN2FjNWUyOTBhYzI0NmU5Mzg5OTRlMjkxZDMwNGFmOTkyMmMxZGRQSwECAAAU
AAAACAAAAAAAFcwmZ/oAAAD1AAAANgAAAAAAAAAAAAAAAAAGIwAALmdpdC9vYmplY3RzLzgyL2I3
N2VmMjFlYTI5OTRlMGRjYmYyZWViZGY0Yjk1ZjhhNjM3M2U5UEsBAgAAFAAAAAgAAAAAAHx/vjeQ
AwAAiwMAADYAAAAAAAAAAAAAAAAAVCQAAC5naXQvb2JqZWN0cy83Zi84MTI2ZWMxNmZjY2JhNTBh
NDc4N2U3ZGZlNjIxZWZhOGEyYTAyNlBLAQIAABQAAAAIAAAAAAAdRzhZBwIAAAICAAA2AAAAAAAA
AAAAAAAAADgoAAAuZ2l0L29iamVjdHMvZDIvNmM3ODI1YjJlY2NkYzI1M2ViZmJiOGQ1NTI2ODU1
ZDg5YTE5NjBQSwECAAAUAAAACAAAAAAAE1Q9s38AAAB6AAAANgAAAAAAAAAAAAAAAACTKgAALmdp
dC9vYmplY3RzLzM3L2RlNTUxYWIzYWMyMmQzYTZhNjNmOGZiNDkxZmI3ZDE2MWYwZjVlUEsBAgAA
FAAAAAgAAAAAAMI7l6R1AAAAcAAAADYAAAAAAAAAAAAAAAAAZisAAC5naXQvb2JqZWN0cy81OS9i
ZjljNDQ0N2Y1YjcxNWYzN2ZhZTZmNTFmYjIzYzE2MmMyODRiNFBLAQIAABQAAAAIAAAAAADKRLPH
UwIAAE4CAAA2AAAAAAAAAAAAAAAAAC8sAAAuZ2l0L29iamVjdHMvZTUvMDY0NWNmMWIzYzA3MzU4
ZGI5MWU1MWM2ZmEyZTVhMDc5MzhlODBQSwECAAAUAAAACAAAAAAAAAAAAAIAAAAAAAAADwAAAAAA
AAAAAAAAAADWLgAALmdpdC9yZWZzL3RhZ3MvUEsBAgAAFAAAAAgAAAAAAAAAAAACAAAAAAAAABAA
AAAAAAAAAAAAAAAABS8AAC5naXQvcmVmcy9oZWFkcy9QSwECAAAUAAAACAAAAAAAAAAAAAIAAAAA
AAAAEgAAAAAAAAAAAAAAAAA1LwAALmdpdC9yZWZzL3JlbW90ZXMvUEsBAgAAFAAAAAgAAAAAAAAA
AAACAAAAAAAAABkAAAAAAAAAAAAAAAAAZy8AAC5naXQvcmVmcy9yZW1vdGVzL29yaWdpbi9QSwEC
AAAUAAAACAAAAAAAenMXoikAAAApAAAAHwAAAAAAAAABAAAAAACgLwAALmdpdC9yZWZzL3JlbW90
ZXMvb3JpZ2luL21hc3RlclBLAQIAABQAAAAIAAAAAAB6cxeiKQAAACkAAAAWAAAAAAAAAAEAAAAA
AAYwAAAuZ2l0L3JlZnMvaGVhZHMvbWFzdGVyUEsBAgAAFAAAAAgAAAAAAGOOVlBtAAAArgAAAA4A
AAAAAAAAAQAAAAAAYzAAAC5naXQvbG9ncy9IRUFEUEsBAgAAFAAAAAgAAAAAAAAAAAACAAAAAAAA
AA8AAAAAAAAAAAAAAAAA/DAAAC5naXQvbG9ncy9yZWZzL1BLAQIAABQAAAAIAAAAAAAAAAAAAgAA
AAAAAAAVAAAAAAAAAAAAAAAAACsxAAAuZ2l0L2xvZ3MvcmVmcy9oZWFkcy9QSwECAAAUAAAACAAA
AAAAAAAAAAIAAAAAAAAAFwAAAAAAAAAAAAAAAABgMQAALmdpdC9sb2dzL3JlZnMvcmVtb3Rlcy9Q
SwECAAAUAAAACAAAAAAAAAAAAAIAAAAAAAAAHgAAAAAAAAAAAAAAAACXMQAALmdpdC9sb2dzL3Jl
ZnMvcmVtb3Rlcy9vcmlnaW4vUEsBAgAAFAAAAAgAAAAAAMY8I0BiAAAAnAAAACQAAAAAAAAAAQAA
AAAA1TEAAC5naXQvbG9ncy9yZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlclBLAQIAABQAAAAIAAAA
AABjjlZQbQAAAK4AAAAbAAAAAAAAAAEAAAAAAHkyAAAuZ2l0L2xvZ3MvcmVmcy9oZWFkcy9tYXN0
ZXJQSwECAAAUAAAACAAAAAAAdz3NIa0AAADwAAAAEQAAAAAAAAABAAAAAAAfMwAALmdpdC9pbmZv
L2V4Y2x1ZGVQSwECAAAUAAAACAAAAAAAAx1CK+kHAABrEwAAHAAAAAAAAAABAAAAAAD7MwAALmdp
dC9ob29rcy9wcmUtcmViYXNlLnNhbXBsZVBLAQIAABQAAAAIAAAAAACaDPfAigAAAL0AAAAdAAAA
AAAAAAEAAAAAAB48AAAuZ2l0L2hvb2tzL3Bvc3QtdXBkYXRlLnNhbXBsZVBLAQIAABQAAAAIAAAA
AABg95FYCgEAAMQBAAAgAAAAAAAAAAEAAAAAAOM8AAAuZ2l0L2hvb2tzL2FwcGx5cGF0Y2gtbXNn
LnNhbXBsZVBLAQIAABQAAAAIAAAAAAAcJVs5/QAAAI4BAAAgAAAAAAAAAAEAAAAAACs+AAAuZ2l0
L2hvb2tzL3ByZS1hcHBseXBhdGNoLnNhbXBsZVBLAQIAABQAAAAIAAAAAAAVUrytdgQAABsOAAAY
AAAAAAAAAAEAAAAAAGY/AAAuZ2l0L2hvb2tzL3VwZGF0ZS5zYW1wbGVQSwECAAAUAAAACAAAAAAA
7R9w2Z4DAACoBgAAHAAAAAAAAAABAAAAAAASRAAALmdpdC9ob29rcy9wcmUtY29tbWl0LnNhbXBs
ZVBLAQIAABQAAAAIAAAAAAAXAr2+lwIAANcEAAAkAAAAAAAAAAEAAAAAAOpHAAAuZ2l0L2hvb2tz
L3ByZXBhcmUtY29tbWl0LW1zZy5zYW1wbGVQSwECAAAUAAAACAAAAAAA6fjKEPcBAACAAwAAHAAA
AAAAAAABAAAAAADDSgAALmdpdC9ob29rcy9jb21taXQtbXNnLnNhbXBsZVBLBQYAAAAAQQBBAPwR
AAD0TAAAAAA=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154781</attachid>
            <date>2012-07-26 16:11:03 -0700</date>
            <delta_ts>2012-07-29 06:00:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92429-20120726161052.patch</filename>
            <type>text/plain</type>
            <size>6306</size>
            <attacher name="johnjbarton">johnjbarton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGNmZWMzYjVmYzZkMzYw
M2NhNDliOTJmMjY3Y2NmYmNlODkwNzllNi4uYzUwMjBjZTAyZGVhMjY3OTA3NzM2MWNlZGRkYzQz
ODgxZWUyZDBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA3LTI2ICBKb2hu
IEouIEJhcnRvbiAgPGpvaG5qYmFydG9uQGpvaG5qYmFydG9uLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBBZGQgc3VwcG9ydCBmb3IgZGVidWdnaW5nIEluc3BlY3RvciBMYXlvdXRUZXN0
cyB3L0luc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTI0MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2Fj
aCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cg
KE9PUFMhKS4KKworICAgICAgICBBZGRzIGFuIGV2YWwoKSBpbnNpZGUgb2YgV2ViSW5zcGVjdG9y
LiBUaGUgZXZhbCgpIGlzIGFjY2Vzc2libGUgb25seSBpZiAKKyAgICAgICAgICAgMSkgVGhlIHVz
ZXIgb3BlbnMgdGhlIFdlYkluc3BlY3RvciBTZXR0aW5ncyBwYW5lbCBhbmQgZW5hYmxlcyB0aGUg
RXhwZXJpbWVudCAndGVzdFJ1bm5lcicsCisgICAgICAgICAgIDIpIEEgcG9zdE1lc3NhZ2UoKSBl
dmVudCBhcnJpdmVzIHdpdGggYW4gZXZlbnQub3JpZ2luIG1hdGNoaW5nIGFuIGFscmVhZHkgcmVn
aXN0ZXJlZCBXZWJJbnNwZWN0b3IgZXh0ZW5zaW9uLgorICAgICAgICAgICAzKSBUaGUgZXZlbnQu
ZGF0YSBoYXMgdGhlIGNvcnJlY3QgZmllbGRzLgorCisgICAgICAgIE5vIHRlc3RzIGFkZGVkOiBU
aGlzIHBhdGNoIGZhY2lsaXRhdGVzIGRlYnVnZ2luZyB0ZXN0czsgaXQgc2hvdWxkIG5vdCBiZSB1
c2VkIGluIG5vcm1hbGx5IG9yIGV2ZW4gaW4gbm9ybWFsIHRlc3RpbmcuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9vbldpbmRvd01lc3NhZ2UpOgorICAgICAg
ICBMaXN0ZW4gZm9yIGV4dGVuc2lvbnMgdG8gcG9zdE1lc3NhZ2UgYW4gb2JqZWN0IGNvbnRhaW5p
bmcgbWV0aG9kICdldmFsdWF0ZUluV2ViSW5zcGVjdG9yJywgd2l0aCB0d28gYXJndW1lbnRzLAor
ICAgICAgICAxKSBhIHN0cmluZyB0byBiZSBldmFsKCllZCBhbmQgMikgYSBidWZmZXIgbmFtZSBh
bGxvd2luZyB0aGUgZXZhbCgpIHRvIGJlIGRlYnVnZ2VkLgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXhwZXJpbWVudHNT
ZXR0aW5ncyk6CisgICAgICAgIEFkZHMgZXhwZXJpbWVudHNTZXR0aW5nICd0ZXN0UnVubmVyJyB0
byBjb250cm9sIGFjY2VzcyB0byB0aGUgdGVzdFJ1bm5lciBmZWF0dXJlLgorCiAyMDEyLTA3LTI0
ICBLd2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgUmVtb3Zl
IGFuIGludmFsaWQgYXNzZXJ0aW9uIGludHJvZHVjZWQgaW4gcjEyMzUzNi4gVW5yZXZpZXdlZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9u
U2VydmVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25T
ZXJ2ZXIuanMKaW5kZXggY2UwMTU3ZjlmZTViMzI4MDM5NTA4ZTM5NDE4YjAwMmMyYmQxMWE0Mi4u
MzE5YzhhNmNlZDg5NjFkNWEyYWY0MmZlZWI2ZmU1NTkzNDMzMjA5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKQEAg
LTY4Myw2ICs2ODMsMTggQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUg
PSB7CiAgICAgewogICAgICAgICBpZiAoZXZlbnQuZGF0YSA9PT0gInJlZ2lzdGVyRXh0ZW5zaW9u
IikKICAgICAgICAgICAgIHRoaXMuX3JlZ2lzdGVyRXh0ZW5zaW9uKGV2ZW50Lm9yaWdpbiwgZXZl
bnQucG9ydHNbMF0pOworICAgICAgICBlbHNlIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJpbWVudHNT
ZXR0aW5ncy50ZXN0UnVubmVyLmlzRW5hYmxlZCgpKSB7IC8vIHRlc3RSdW5uZXIgaXMgYWx3YXlz
IGV4cGVyaW1lbnRhbAorICAgICAgICAgICAgaWYgKHRoaXMuX3JlZ2lzdGVyZWRFeHRlbnNpb25z
W2V2ZW50Lm9yaWdpbl0pIHsgLy8gb25seSBsaXN0ZW4gdG8gb3VyIGV4dGVuc2lvbnMKKyAgICAg
ICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSAmJiBldmVudC5kYXRhLm1ldGhvZCAmJiAoZXZlbnQu
ZGF0YS5tZXRob2QgPT09ICdldmFsdWF0ZUluV2ViSW5zcGVjdG9yJykgKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChldmVudC5kYXRhLmFyZ3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICB2
YXIgdG9FdmFsdWF0ZSA9IGV2ZW50LmRhdGEuYXJnc1swXTsKKyAgICAgICAgICAgICAgICAgICAg
ICB2YXIgc291cmNlVVJMID0gZXZlbnQuZGF0YS5hcmdzWzFdIHx8ICJ0ZXN0UnVubmVyRXZhbHMu
anMiOworICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdG9FdmFsdWF0ZSA9PT0gJ3N0
cmluZycpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwodG9FdmFsdWF0ZSArICJcbi8v
QCBzb3VyY2VVUkw9IiArIHNvdXJjZVVSTCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9LAogCiAgICAgX3Jl
Z2lzdGVyRXh0ZW5zaW9uOiBmdW5jdGlvbihvcmlnaW4sIHBvcnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRleCBmYzY5MzhhNDFjZTg5NjU0
ZDI1OGQwYjhkN2Y4MTI2OTUxNjFiZTc4Li40YjYzYWMxOWFkNTY0Mjk0MzYyMzBmNTU5Nzk3MmY4
ZTczMDYwMmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NldHRpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0
dGluZ3MuanMKQEAgLTE4Nyw2ICsxODcsNyBAQCBXZWJJbnNwZWN0b3IuRXhwZXJpbWVudHNTZXR0
aW5ncyA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLmxpdmVOYXRpdmVNZW1vcnlDaGFydCA9IHRoaXMu
X2NyZWF0ZUV4cGVyaW1lbnQoImxpdmVOYXRpdmVNZW1vcnlDaGFydCIsICJMaXZlIG5hdGl2ZSBt
ZW1vcnkgY2hhcnQiKTsKICAgICB0aGlzLmZpbGVTeXN0ZW1JbnNwZWN0aW9uID0gdGhpcy5fY3Jl
YXRlRXhwZXJpbWVudCgiZmlsZVN5c3RlbUluc3BlY3Rpb24iLCAiRmlsZVN5c3RlbSBpbnNwZWN0
aW9uIik7CiAgICAgdGhpcy5tYWluVGhyZWFkTW9uaXRvcmluZyA9IHRoaXMuX2NyZWF0ZUV4cGVy
aW1lbnQoIm1haW5UaHJlYWRNb25pdG9yaW5nIiwgIlNob3cgQ1BVIGFjdGl2aXR5IGluIFRpbWVs
aW5lIik7CisgICAgdGhpcy50ZXN0UnVubmVyID0gdGhpcy5fY3JlYXRlRXhwZXJpbWVudCgidGVz
dFJ1bm5lciIsICJBbGxvdyBleHRlbnNpb25zIHRvIGNhbGwgZXZhbCgpIGluIFdlYkluc3BlY3Rv
ciIpOwogCiAgICAgdGhpcy5fY2xlYW5VcFNldHRpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjYjZlZDZmMTk1
ZWZmMDlkOTM0YWEzMjAyNTc2ZTM4OTljYjg3ZWE0Li42N2FlNGMxNjA4ZTE5OGEwZmNmM2M4ZGI1
ODhiYzExODRjNzU4ZWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDctMjYgIEpvaG4g
Si4gQmFydG9uICA8am9obmpiYXJ0b25Aam9obmpiYXJ0b24uY29tPgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IEFkZCBzdXBwb3J0IGZvciBkZWJ1Z2dpbmcgSW5zcGVjdG9yIExheW91dFRlc3Rz
IHcvSW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MjQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNo
LCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAo
T09QUyEpLgorCisgICAgICAgIENsZWFuIHVwIGFmdGVyIEluc3BlY3RvclRlc3QgdG8gYWxsb3cg
dGVzdHMgdG8gYmUgcmUtcnVuIHdpdGhvdXQgcmVzdGFydGluZyBXZWJJbnNwZWN0b3IuIEZvciBk
ZWJ1Z2dpbmcgdGVzdHMuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0
b3ItdGVzdC5qczogCisgICAgICAgIEJ1aWxkIGFycmF5IG9mIG92ZXJyaWRkZW4gbWV0aG9kcyBp
biBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoKQorICAgICAgICBBZGQgSW5zcGVjdG9yVGVzdC5y
ZW1vdmVTbmlmZmVycygpIHRoYXQgd2Fsa3MgdGhlIGFycmF5IGFuZCByZXNldHMgdGhlIG92ZXJy
aWRlcy4KKyAgICAgICAgRXhwZWN0YXRpb246IGNhbGxlZCBqdXN0IGJlZm9yZSB3aW5kb3cuSW5z
cGVjdG9yVGVzdCBpcyBkZWxldGVkLgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0
KToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC4pOgorCiAyMDEyLTA3LTI0ICBB
bmRyZXcgV2lsc29uICA8YXR3aWxzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQgY2hyb21pdW0gZXhwZWN0YXRpb25zIGNoYW5nZSBzdG9wIGlnbm9yaW5nIGZhc3QvaGlkcGkg
Y2hhbmdlcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QuanMKaW5kZXggOTYxMzEwZGU5NTgzNDZiN2MyMTRjMmQ5MWMxMzE2MzlmNGQwNzc4
Ni4uZTI3ZWI4ZDczNzA5MDhjMmU0ODEyMjI5ODI3ZTliZDVkZTYyNGUwNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKQEAgLTMy
Miw2ICszMjIsMTMgQEAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyID0gZnVuY3Rpb24ocmVjZWl2
ZXIsIG1ldGhvZE5hbWUsIG92ZXJyaWRlLCBvcHRfc3RpY2t5KQogICAgICAgICB9CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfTsKKworICAgIEluc3BlY3RvclRlc3Quc25pZmZlcnMgPSBJ
bnNwZWN0b3JUZXN0LnNuaWZmZXJzIHx8IFtdOworICAgIEluc3BlY3RvclRlc3Quc25pZmZlcnMu
cHVzaCh7CisgICAgICAgIHJlY2VpdmVyOiByZWNlaXZlciwKKyAgICAgICAgbWV0aG9kTmFtZTog
bWV0aG9kTmFtZSwKKyAgICAgICAgb3JpZ2luYWw6IG9yaWdpbmFsCisgICAgfSk7CiB9CiAKIElu
c3BlY3RvclRlc3QuYWRkQ29uc29sZVNuaWZmZXIgPSBmdW5jdGlvbihvdmVycmlkZSwgb3B0X3N0
aWNreSkKQEAgLTM1NCw2ICszNjEsMTUgQEAgSW5zcGVjdG9yVGVzdC5vdmVycmlkZSA9IGZ1bmN0
aW9uKHJlY2VpdmVyLCBtZXRob2ROYW1lLCBvdmVycmlkZSwgb3B0X3N0aWNreSkKICAgICByZXR1
cm4gb3JpZ2luYWw7CiB9CiAKK0luc3BlY3RvclRlc3QucmVtb3ZlU25pZmZlcnMgPSBmdW5jdGlv
bigpIAoreworICAgIGZ1bmN0aW9uIHJlc2V0U25pZmZlcihzbmlmZmVyKSAKKyAgICB7CisgICAg
ICAgIHNuaWZmZXIucmVjZWl2ZXJbc25pZmZlci5tZXRob2ROYW1lXSA9IHNuaWZmZXIub3JpZ2lu
YWw7CisgICAgfQorICAgIEluc3BlY3RvclRlc3Quc25pZmZlcnMuZm9yRWFjaChyZXNldFNuaWZm
ZXIpOworfQorCiBJbnNwZWN0b3JUZXN0LnRleHRDb250ZW50V2l0aExpbmVCcmVha3MgPSBmdW5j
dGlvbihub2RlKQogewogICAgIHZhciBidWZmZXIgPSAiIjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155168</attachid>
            <date>2012-07-29 06:00:37 -0700</date>
            <delta_ts>2012-07-30 08:27:49 -0700</delta_ts>
            <desc>[Patch] Standalone test running proof of concept</desc>
            <filename>bug-92429-20120729170020.patch</filename>
            <type>text/plain</type>
            <size>42984</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjdkNjU5MTZhNzJlMmE4
ZDU1NDAzOTk3NDlmMDcxMDhkNmVhMmNhNS4uOTVmYWQ4Y2ZkMzU1YTQ3NzlhYWZkNDUyYWVhODJi
YWYxNGJjODJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA3LTI5ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEFkZCBzdXBwb3J0IGZvciBkZWJ1Z2dpbmcgSW5zcGVjdG9yIExheW91dFRlc3RzIHcvSW5z
cGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MjQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3RDb250cm9sbGVyIG5vdyBub3RpZmllcyBlbWJlZGRlciB1cG9uIGxvYWRlZC4KKworICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGVzdENvbnRyb2xsZXIuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGVzdENvbnRyb2xsZXIubG9hZENvbXBsZXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCk6CisgICAgICAgICgub25UZXN0RnJhbWV3b3JrTWVz
c2FnZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisKIDIw
MTItMDctMjcgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgV2ViIEluc3BlY3Rvcjogd29ya2VycyBpbnNwZWN0b3IgaXMgYnJva2VuIGluIHRoZSByZW1v
dGUgZGVidWdnaW5nIG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVGVzdENvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Rlc3RDb250cm9sbGVyLmpzCmluZGV4IDIwZTljNGE3NTBkZGUzMDMxNjJlYTg2YjQ3
YWYyNjllNzIzZGVlNzcuLjE4MWNhZjhlZjIwNzE0MmVmODM2ODVkNmVhNWE0ZTQzNDYyZGVkZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGVzdENvbnRy
b2xsZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXN0Q29u
dHJvbGxlci5qcwpAQCAtMzUsMTIgKzM1LDE2IEBAIFdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxl
ciA9IGZ1bmN0aW9uKCkKIHsKIH0KIAotV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLnByb3Rv
dHlwZSA9IHsKLSAgICBub3RpZnlEb25lOiBmdW5jdGlvbihjYWxsSWQsIHJlc3VsdCkKLSAgICB7
Ci0gICAgICAgIHZhciBtZXNzYWdlID0gdHlwZW9mIHJlc3VsdCA9PT0gInVuZGVmaW5lZCIgPyAi
XCI8dW5kZWZpbmVkPlwiIiA6IEpTT04uc3RyaW5naWZ5KHJlc3VsdCk7Ci0gICAgICAgIFJ1bnRp
bWVBZ2VudC5ldmFsdWF0ZSgiZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCgiICsgY2FsbElk
ICsgIiwgIiArIG1lc3NhZ2UgKyAiKSIsICJ0ZXN0Iik7Ci0gICAgfQorV2ViSW5zcGVjdG9yLlRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUgPSBmdW5jdGlvbihjYWxsSWQsIHJlc3VsdCkKK3sKKyAg
ICB2YXIgbWVzc2FnZSA9IHR5cGVvZiByZXN1bHQgPT09ICJ1bmRlZmluZWQiID8gIlwiPHVuZGVm
aW5lZD5cIiIgOiBKU09OLnN0cmluZ2lmeShyZXN1bHQpOworICAgIFJ1bnRpbWVBZ2VudC5ldmFs
dWF0ZSgiZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCgiICsgY2FsbElkICsgIiwgIiArIG1l
c3NhZ2UgKyAiKSIsICJ0ZXN0Iik7Cit9CisKK1dlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlci5s
b2FkQ29tcGxldGVkID0gZnVuY3Rpb24oKQoreworICAgIGlmICh3aW5kb3cub3BlbmVyKQorICAg
ICAgICB3aW5kb3cub3BlbmVyLnBvc3RNZXNzYWdlKCJmcm9udGVuZExvYWRlZCIsICIqIik7CiB9
CiAKIFdlYkluc3BlY3Rvci5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kID0gZnVuY3Rpb24oY2Fs
bElkLCBzY3JpcHQpCkBAIC00OSwxMCArNTMsMTkgQEAgV2ViSW5zcGVjdG9yLmV2YWx1YXRlRm9y
VGVzdEluRnJvbnRlbmQgPSBmdW5jdGlvbihjYWxsSWQsIHNjcmlwdCkKICAgICB7CiAgICAgICAg
IHRyeSB7CiAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gd2luZG93LmV2YWwoc2NyaXB0KTsKLSAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlci5wcm90b3R5cGUubm90aWZ5RG9u
ZShjYWxsSWQsIHJlc3VsdCk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZShjYWxsSWQsIHJlc3VsdCk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlci5wcm90b3R5cGUubm90aWZ5RG9u
ZShjYWxsSWQsIGUudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuVGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZShjYWxsSWQsIGUudG9TdHJpbmcoKSk7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgSW5zcGVjdG9yQmFja2VuZC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGludm9r
ZU1ldGhvZCk7Cit9OworCitpZiAod2luZG93Lm9wZW5lcikgeworICAgIGZ1bmN0aW9uIG9uVGVz
dEZyYW1ld29ya01lc3NhZ2UoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZlbnQuZGF0YS5j
b21tYW5kID09PSAiZXZhbHVhdGVJbldlYkluc3BlY3RvciIpCisgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChldmVudC5kYXRhLmNhbGxJZCwgZXZlbnQu
ZGF0YS5zY3JpcHQpOworICAgIH0KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2Fn
ZSIsIG9uVGVzdEZyYW1ld29ya01lc3NhZ2UsIHRydWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCAxNzZjMGM0ZDQ3NmNiOWZl
NzZhMDk5MWU2NzZmNjlhMzI4ZTBlN2E0Li45YzEwNTRjZTY0ZmY4YzI5YjA3M2JmYTM4M2JkOWRl
MjQ1OTE5NTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5qcwpAQCAtNTM5LDYgKzUzOSw3IEBAIFdlYkluc3BlY3Rvci5fZG9Mb2FkZWREb25l
V2l0aENhcGFiaWxpdGllcyA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLmRvbUFnZW50Ll9lbXVsYXRl
VG91Y2hFdmVudHNDaGFuZ2VkKCk7CiAKICAgICBXZWJJbnNwZWN0b3IuV29ya2VyTWFuYWdlci5s
b2FkQ29tcGxldGVkKCk7CisgICAgV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLmxvYWRDb21w
bGV0ZWQoKTsKICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxldGVkKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhZTdhMDk1ODU2YmYwYTYxYWJlYzRmMDc2YmRhMmJkOGZiNjE5MzkzLi5iNWQxYjU2
OGY1YjNlM2I1NjU5ODkwZDZmYTk1NmU3NDNhZGRjYjBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAK
KzIwMTItMDctMjkgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBvcnQgZm9yIGRlYnVnZ2luZyBJbnNwZWN0b3Ig
TGF5b3V0VGVzdHMgdy9JbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkyNDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQganNkaWZmbGliIChCU0QpIGZvciBzdGFuZGFsb25lIGluc3Bl
Y3RvciB0ZXN0IHJ1bm5pbmcgYW5kIGRpZmZpbmcuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9y
VGVzdCk6CisgICAgICAgICguKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNv
dXJjZXMvanNkaWZmbGliL1JFQURNRS5hc2NpaWRvYzogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZmbGliLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGRpZmZsaWIuZGVmYXVsdEp1bmtGdW5jdGlvbik6CisgICAgICAgIChkaWZmbGliLnN0
cmlwTGluZWJyZWFrcyk6CisgICAgICAgIChkaWZmbGliLnN0cmluZ0FzTGluZXMpOgorICAgICAg
ICAoZGlmZmxpYi5fX3JlZHVjZSk6CisgICAgICAgIChkaWZmbGliLl9fbnR1cGxlY29tcCk6Cisg
ICAgICAgIChkaWZmbGliLl9fY2FsY3VsYXRlX3JhdGlvKToKKyAgICAgICAgKGRpZmZsaWIuX19k
aWN0Z2V0KToKKyAgICAgICAgKGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyLnRoaXMuc2V0X3NlcXMp
OgorICAgICAgICAoZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIudGhpcy5zZXRfc2VxMSk6CisgICAg
ICAgIChkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLnNldF9zZXEyKToKKyAgICAgICAgKGRp
ZmZsaWIuU2VxdWVuY2VNYXRjaGVyLnRoaXMuX19jaGFpbl9iKToKKyAgICAgICAgKGRpZmZsaWIu
U2VxdWVuY2VNYXRjaGVyLnRoaXMuZmluZF9sb25nZXN0X21hdGNoKToKKyAgICAgICAgKGRpZmZs
aWIuU2VxdWVuY2VNYXRjaGVyLnRoaXMuZ2V0X21hdGNoaW5nX2Jsb2Nrcyk6CisgICAgICAgIChk
aWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLmdldF9vcGNvZGVzKToKKyAgICAgICAgKGRpZmZs
aWIuU2VxdWVuY2VNYXRjaGVyLnRoaXMuZ2V0X2dyb3VwZWRfb3Bjb2Rlcyk6CisgICAgICAgIChk
aWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLnF1aWNrX3JhdGlvKToKKyAgICAgICAgKGRpZmZs
aWIuU2VxdWVuY2VNYXRjaGVyLnRoaXMucmVhbF9xdWlja19yYXRpbyk6CisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZmdmlldy5jc3M6IEFkZGVk
LgorICAgICAgICAodGFibGUuZGlmZik6CisgICAgICAgICh0YWJsZS5kaWZmIHRib2R5KToKKyAg
ICAgICAgKHRhYmxlLmRpZmYgdGJvZHkgdGgpOgorICAgICAgICAodGFibGUuZGlmZiB0aGVhZCk6
CisgICAgICAgICh0YWJsZS5kaWZmIHRoZWFkIHRoLnRleHR0aXRsZSk6CisgICAgICAgICh0YWJs
ZS5kaWZmIHRib2R5IHRkKToKKyAgICAgICAgKHRhYmxlLmRpZmYgLmVtcHR5KToKKyAgICAgICAg
KHRhYmxlLmRpZmYgLnJlcGxhY2UpOgorICAgICAgICAodGFibGUuZGlmZiAuZGVsZXRlKToKKyAg
ICAgICAgKHRhYmxlLmRpZmYgLnNraXApOgorICAgICAgICAodGFibGUuZGlmZiAuaW5zZXJ0KToK
KyAgICAgICAgKHRhYmxlLmRpZmYgdGguYXV0aG9yKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9yZXNvdXJjZXMvanNkaWZmbGliL2RpZmZ2aWV3LmpzOiBBZGRlZC4KKyAgICAgICAg
KGRpZmZ2aWV3LmJ1aWxkVmlldy5jZWx0KToKKyAgICAgICAgKGRpZmZ2aWV3LmJ1aWxkVmlldy50
ZWx0KToKKyAgICAgICAgKGRpZmZ2aWV3LmJ1aWxkVmlldy5jdGVsdCk6CisgICAgICAgIChkaWZm
dmlldy5idWlsZFZpZXcuYWRkQ2VsbHMpOgorICAgICAgICAoZGlmZnZpZXcuYnVpbGRWaWV3LmFk
ZENlbGxzSW5saW5lKToKKyAgICAgICAgKGRpZmZ2aWV3LmJ1aWxkVmlldyk6CisKIDIwMTItMDct
MjUgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTExNApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwppbmRleCA5NjEzMTBkZTk1ODM0
NmI3YzIxNGMyZDkxYzEzMTYzOWY0ZDA3Nzg2Li43ZTBkNjkxYWZlMWQ5MmJiM2Y1MzE0YmVmOWQw
YmRhMmM2OWFhNDAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdC5qcwpAQCAtMzY5LDcgKzM2OSw3IEBAIEluc3BlY3RvclRlc3QudGV4
dENvbnRlbnRXaXRoTGluZUJyZWFrcyA9IGZ1bmN0aW9uKG5vZGUpCiAgICAgcmV0dXJuIGJ1ZmZl
cjsKIH0KIAotfTsKK307IC8vIGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdAogCiB2YXIgcnVuVGVz
dENhbGxJZCA9IDA7CiB2YXIgY29tcGxldGVUZXN0Q2FsbElkID0gMTsKQEAgLTUxNSwzICs1MTUs
OTcgQEAgZnVuY3Rpb24gY2xlYXJPdXRwdXQoKQogICAgICAgICBvdXRwdXRFbGVtZW50ID0gbnVs
bDsKICAgICB9CiB9CisKK2Z1bmN0aW9uIFN0YW5kYWxvbmVUZXN0UnVubmVyKCkKK3sKKyAgICB0
aGlzLl9wZW5kaW5nTWVzc2FnZXMgPSBbXTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
bWVzc2FnZSIsIHRoaXMuX29uTWVzc2FnZS5iaW5kKHRoaXMpLCB0cnVlKTsKKyAgICB0aGlzLl9p
bnNwZWN0b3JXaW5kb3cgPSB3aW5kb3cub3BlbigiaHR0cDovL2xvY2FsaG9zdDo4MDAwL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw/d3M9bG9jYWxob3N0
OjkyMjIvZGV2dG9vbHMvcGFnZS8zXzEiLCB1bmRlZmluZWQsICJsb2NhdGlvbj0wIik7Cit9CisK
K1N0YW5kYWxvbmVUZXN0UnVubmVyLnByb3RvdHlwZSA9IHsKKyAgICBkdW1wQXNUZXh0OiBmdW5j
dGlvbigpCisgICAgeworICAgIH0sCisKKyAgICB3YWl0VW50aWxEb25lOiBmdW5jdGlvbigpCisg
ICAgeworICAgIH0sCisKKyAgICBjbG9zZVdlYkluc3BlY3RvcjogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5faW5zcGVjdG9yV2luZG93LmNsb3NlKCk7CisgICAgfSwKKworICAgIG5v
dGlmeURvbmU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBhY3R1YWwgPSBkb2N1bWVu
dC5ib2R5LmlubmVyVGV4dCArICJcbiI7CisgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dC5pbm5lckhUTUwgPSAiIjsKKworICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0
KCk7CisgICAgICAgIHZhciBocmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWY7CisgICAgICAgIHZh
ciBleHQgPSBocmVmLmxhc3RJbmRleE9mKCIuIik7CisgICAgICAgIHhoci5vcGVuKCJHRVQiLCBo
cmVmLnN1YnN0cmluZygwLCBleHQpICsgIi1leHBlY3RlZC50eHQiLCBmYWxzZSk7CisgICAgICAg
IHhoci5zZW5kKG51bGwpOworICAgICAgICB2YXIgZXhwZWN0ZWQgPSB4aHIucmVzcG9uc2VUZXh0
OworCisgICAgICAgIHZhciBzdHlsZXNoZWV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGlu
ayIpOworICAgICAgICBzdHlsZXNoZWV0LnJlbD0ic3R5bGVzaGVldCI7CisgICAgICAgIHN0eWxl
c2hlZXQudHlwZSA9ICJ0ZXh0L2NzcyI7CisgICAgICAgIHN0eWxlc2hlZXQuaHJlZiA9ICIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZmdmll
dy5jc3MiOworICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlc2hlZXQpOwor
CisgICAgICAgIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsK
KyAgICAgICAgc2NyaXB0LnNyYyA9ICIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZmbGliLmpzIjsKKyAgICAgICAgZG9jdW1lbnQuaGVhZC5h
cHBlbmRDaGlsZChzY3JpcHQpOworCisgICAgICAgIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNjcmlwdCIpOworICAgICAgICBzY3JpcHQuc3JjID0gIi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvanNkaWZmbGliL2RpZmZ2aWV3LmpzIjsKKyAgICAg
ICAgc2NyaXB0Lm9ubG9hZCA9IHZpZXdlckxvYWRlZDsKKyAgICAgICAgZG9jdW1lbnQuaGVhZC5h
cHBlbmRDaGlsZChzY3JpcHQpOworCisgICAgICAgIGZ1bmN0aW9uIHZpZXdlckxvYWRlZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBiYXNlTGluZXMgPSBkaWZmbGliLnN0cmluZ0FzTGlu
ZXMoZXhwZWN0ZWQpOworICAgICAgICAgICAgdmFyIG5ld0xpbmVzID0gIGRpZmZsaWIuc3RyaW5n
QXNMaW5lcyhhY3R1YWwpOworICAgICAgICAgICAgdmFyIHNlcXVlbmNlTWF0Y2hlciA9IG5ldyBk
aWZmbGliLlNlcXVlbmNlTWF0Y2hlcihiYXNlTGluZXMsIG5ld0xpbmVzKTsKKyAgICAgICAgICAg
IHZhciBkaWZmVmlldyA9IGRpZmZ2aWV3LmJ1aWxkVmlldyh7CisgICAgICAgICAgICAgICAgYmFz
ZVRleHRMaW5lczogYmFzZUxpbmVzLAorICAgICAgICAgICAgICAgIG5ld1RleHRMaW5lczogbmV3
TGluZXMsCisgICAgICAgICAgICAgICAgb3Bjb2Rlczogc2VxdWVuY2VNYXRjaGVyLmdldF9vcGNv
ZGVzKCksCisgICAgICAgICAgICAgICAgY29udGV4dFNpemU6IDMsCisgICAgICAgICAgICAgICAg
dmlld1R5cGU6IDEKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChkaWZmVmlldyk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgZXZhbHVhdGVJ
bldlYkluc3BlY3RvcjogZnVuY3Rpb24oY2FsbElkLCBzY3JpcHQpCisgICAgeworICAgICAgICB2
YXIgbWVzc2FnZSA9IHtjb21tYW5kOiAiZXZhbHVhdGVJbldlYkluc3BlY3RvciIsIGNhbGxJZDog
Y2FsbElkLCBzY3JpcHQ6IHNjcmlwdH07CisgICAgICAgIGlmICh0aGlzLl9pc0xvYWRlZCkKKyAg
ICAgICAgICAgIHRoaXMuX3Bvc3RNZXNzYWdlcyhbY29tbWFuZF0pOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICB0aGlzLl9wZW5kaW5nTWVzc2FnZXMucHVzaChtZXNzYWdlKTsKKyAgICB9LAor
CisgICAgX29uTWVzc2FnZTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZl
bnQuZGF0YSA9PT0gImZyb250ZW5kTG9hZGVkIikgeworICAgICAgICAgICAgdGhpcy5faXNMb2Fk
ZWQgPSB0cnVlOworICAgICAgICAgICAgdGhpcy5fcG9zdE1lc3NhZ2VzKHRoaXMuX3BlbmRpbmdN
ZXNzYWdlcyk7CisgICAgICAgICAgICB0aGlzLl9wZW5kaW5nTWVzc2FnZXMgPSBbXTsKKyAgICAg
ICAgfQorICAgIH0sCisKKyAgICBfcG9zdE1lc3NhZ2VzOiBmdW5jdGlvbihtZXNzYWdlcykKKyAg
ICB7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG1lc3NhZ2VzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIHRoaXMu
X2luc3BlY3RvcldpbmRvdy5wb3N0TWVzc2FnZShtZXNzYWdlc1tpXSwgIioiKTsKKyAgICAgICAg
fS5iaW5kKHRoaXMpLCAwKTsKKyAgICB9Cit9CisKK2lmICghd2luZG93LnRlc3RSdW5uZXIpCisg
ICAgd2luZG93LnRlc3RSdW5uZXIgPSBuZXcgU3RhbmRhbG9uZVRlc3RSdW5uZXIoKTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMvanNkaWZmbGliL1JFQURNRS5hc2NpaWRvYyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9qc2RpZmZsaWIvUkVBRE1FLmFzY2lp
ZG9jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBmN2Y3YWE5ZTNjOGZiYjY1N2IwZWE0NGNlMzdjMjE0MWFhODczZmEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNv
dXJjZXMvanNkaWZmbGliL1JFQURNRS5hc2NpaWRvYwpAQCAtMCwwICsxLDE3MyBAQAorPT0ganNk
aWZmbGliIC0gQSBKYXZhc2NyaXB0IHZpc3VhbCBkaWZmIHRvb2wgJiBsaWJyYXJ5CisKKyogPDxp
bnRybyxJbnRyb2R1Y3Rpb24+PgorKiA8PG92ZXJ2aWV3LE92ZXJ2aWV3Pj4KKyogPDxweXRob24t
aW50ZXJvcCxQeXRob24gSW50ZXJvcGVyYWJpbGl0eT4+CisqIDw8ZGVtbyxEZW1vICYgRXhhbXBs
ZXM+PgorKiogPDxkaWZmLWpzLERpZmZpbmcgdXNpbmcgSmF2YXNjcmlwdD4+CisqKiA8PGRpZmYt
cHl0aG9uLERpZmZpbmcgdXNpbmcgUHl0aG9uPj4KKyogPDxzdGF0dXMsRnV0dXJlIERpcmVjdGlv
bnMgLyBTdGF0dXM+PgorKiA8PGxpY2Vuc2UsTGljZW5zZT4+CisqIDw8ZG93bmxvYWRzLERvd25s
b2Fkcz4+CisqIDw8aGlzdG9yeSxSZWxlYXNlIEhpc3Rvcnk+PgorCitbW2ludHJvXV0KKz09IElu
dHJvZHVjdGlvbgorCitodHRwOi8vY2VtZXJpY2suY29tW0ldIG5lZWRlZCBhIGdvb2QgaW4tYnJv
d3NlciB2aXN1YWwgZGlmZiB0b29sLCBhbmQgY291bGRuJ3QgZmluZCBhbnl0aGluZyBzdWl0YWJs
ZSwgc28gSSBidWlsdCAqanNkaWZmbGliKiBpbiBGZWIgMjAwNyBhbmQgb3Blbi1zb3VyY2VkIGl0
IHNvb24gdGhlcmVhZnRlci4gIEl0J3MgYXBwYXJlbnRseSBiZWVuIHVzZWQgYSBmYWlyIGJpdCBz
aW5jZSB0aGVuLiAgTWF5YmUgeW91J2xsIGZpbmQgaXQgdXNlZnVsLgorCitbW292ZXJ2aWV3XV0K
Kz09IE92ZXJ2aWV3CisKK2pzZGlmZmxpYiBpcyBhIEphdmFzY3JpcHQgbGlicmFyeSB0aGF0IHBy
b3ZpZGVzOgorCisuIGEgcGFydGlhbCByZWltcGxlbWVudGF0aW9uIG9mIFB5dGhvbidzIGRpZmZs
aWIgbW9kdWxlIChzcGVjaWZpY2FsbHksIHRoZSBTZXF1ZW5jZU1hdGNoZXIgY2xhc3MpCisuIGEg
dmlzdWFsIGRpZmYgdmlldyBnZW5lcmF0b3IsIHRoYXQgb2ZmZXJzIHNpZGUtYnktc2lkZSBhcyB3
ZWxsIGFzIGlubGluZSBmb3JtYXR0aW5nIG9mIGZpbGUgZGF0YQorCitZZXMsIEkgcmlwcGVkIG9m
ZiB0aGUgZm9ybWF0dGluZyBvZiB0aGUgZGlmZiB2aWV3IGZyb20gdGhlIFRyYWMgcHJvamVjdC4g
SXQncyBhIG5lYXItaWRlYWwgcHJlc2VudGF0aW9uIG9mIGRpZmYgZGF0YSBhcyBmYXIgYXMgSSdt
IGNvbmNlcm5lZC4gSWYgeW91IGRvbid0IGFncmVlLCB5b3UgY2FuIGhhY2sgdGhlIENTUyB0byB5
b3VyIGhlYXJ0J3MgY29udGVudC4KKworanNkaWZmbGliIGRvZXMgbm90IHJlcXVpcmUgalF1ZXJ5
IG9yIGFueSBvdGhlciBKYXZhc2NyaXB0IGxpYnJhcnkuCisKK1tbcHl0aG9uLWludGVyb3BdXQor
PT0gUHl0aG9uIEludGVyb3BlcmFiaWxpdHkKKworVGhlIG1haW4gcmVhc29uIHdoeSBJIHJlaW1w
bGVtZW50ZWQgUHl0aG9uJ3MgZGlmZmxpYiBtb2R1bGUgaW4gSmF2YXNjcmlwdCB0byBzZXJ2ZSBh
cyB0aGUgYWxnb3JpdGhtaWMgYmFzaXMgZm9yIGpzZGlmZmxpYiB3YXMgdGhhdCBJIGRpZG4ndCB3
YW50IHRvIG1lc3Mgd2l0aCB0aGUgYWN0dWFsIGRpZmYgYWxnb3JpdGhtIC0tIEkgd2FudGVkIHRv
IGNvbmNlbnRyYXRlIG9uIGdldHRpbmcgdGhlIGluLWJyb3dzZXIgdmlldyByaWdodC4gSG93ZXZl
ciwgYmVjYXVzZSBqc2RpZmZsaWIncyBBUEkgbWF0Y2hlcyBQeXRob24ncyBkaWZmbGliJ3MgU2Vx
dWVuY2VNYXRjaGVyIGNsYXNzIGluIGl0cyBlbnRpcmV0eSwgaXQncyB0cml2aWFsIHRvIGRvIHRo
ZSBhY3R1YWwgZGlmZmluZyBvbiB0aGUgc2VydmVyLXNpZGUsIHVzaW5nIFB5dGhvbiwgYW5kIHBp
cGUgdGhlIHJlc3VsdHMgb2YgdGhhdCBkaWZmIGNhbGN1bGF0aW9uIHRvIHlvdXIgaW4tYnJvd3Nl
ciBkaWZmIHZpZXcuIFNvLCB5b3UgaGF2ZSB0aGUgY2hvaWNlIG9mIGRvaW5nIGV2ZXJ5dGhpbmcg
aW4gSmF2YXNjcmlwdCBvbiB0aGUgYnJvd3Nlciwgb3IgZmFsbGluZyBiYWNrIHRvIHNlcnZlci1z
aWRlIGRpZmYgcHJvY2Vzc2luZyBpZiB5b3UgYXJlIGRpZmZpbmcgcmVhbGx5IGxhcmdlIGZpbGVz
LgorCitNb3N0IG9mIHRoZSB0aW1lLCB3ZSBkbyB0aGUgbGF0dGVyLCBzaW1wbHkgYmVjYXVzZSB3
aGlsZSBqc2RpZmZsaWIgaXMgcHJldHR5IGZhc3QgYWxsIGJ5IGl0c2VsZiwgYW5kIGlzIHRvdGFs
bHkgdXNhYmxlIGZvciBkaWZmaW5nICJub3JtYWwiIGZpbGVzIChpLmUuIGZld2VyIHRoYW4gMTAw
SyBsaW5lcyBvciBzbyksIHdlIHJlZ3VsYXJseSBuZWVkIHRvIGRpZmYgZmlsZXMgdGhhdCBhcmUg
MSBvciAyIG9yZGVycyBvZiBtYWduaXR1ZGUgbGFyZ2VyIHRoYW4gdGhhdC4gRm9yIHRoYXQsIHNl
cnZlci1zaWRlIGRpZmZpbmcgaXMgYSBuZWNlc3NpdHkuCisKK1tbZGVtb11dCis9PSBEZW1vICYg
RXhhbXBsZXMKKworWW91IGNhbiBnaXZlIGpzZGlmZmxpYiBhIHRyeSB3aXRob3V0IGRvd25sb2Fk
aW5nIGFueXRoaW5nLiBKdXN0IGNsaWNrIHRoZSBsaW5rIGJlbG93LCBwdXQgc29tZSBjb250ZW50
IHRvIGJlIGRpZmZlZCBpbiB0aGUgdHdvIHRleHRib3hlcywgYW5kIGRpZmYgYXdheS4KKworaHR0
cDovL2NlbWVyaWNrLmdpdGh1Yi5jb20vanNkaWZmbGliL2RlbW8uaHRtbFsqVHJ5IGpzZGlmZmxp
YipdCisKK1RoYXQgcGFnZSBhbHNvIGNvbnRhaW5zIGFsbCBvZiB0aGUgZXhhbXBsZXMgeW91J2xs
IG5lZWQgdG8gdXNlIGpzZGlmZmxpYiB5b3Vyc2VsZiwgYnV0IGxldCdzIGxvb2sgYXQgdGhlbSBo
ZXJlLCBhbnl3YXkuCisKK1tbZGlmZi1qc11dCis9PT0gRGlmZmluZyB1c2luZyBKYXZhc2NyaXB0
CisKK0hlcmUncyB0aGUgZnVuY3Rpb24gZnJvbSB0aGUgZGVtbyBIVE1MIGZpbGUgbGlua2VkIHRv
IGFib3ZlIHRoYXQgZGlmZnMgdGhlIHR3byBwaWVjZXMgb2YgdGV4dCBlbnRlcmVkIGludG8gdGhl
IHRleHRib3hlcyBvbiB0aGUgcGFnZToKKworLS0tLQorZnVuY3Rpb24gZGlmZlVzaW5nSlMoKSB7
CisgICAgLy8gZ2V0IHRoZSBiYXNlVGV4dCBhbmQgbmV3VGV4dCB2YWx1ZXMgZnJvbSB0aGUgdHdv
IHRleHRib3hlcywgYW5kIHNwbGl0IHRoZW0gaW50byBsaW5lcyAKKyAgICB2YXIgYmFzZSA9IGRp
ZmZsaWIuc3RyaW5nQXNMaW5lcygkKCJiYXNlVGV4dCIpLnZhbHVlKTsKKyAgICB2YXIgbmV3dHh0
ID0gZGlmZmxpYi5zdHJpbmdBc0xpbmVzKCQoIm5ld1RleHQiKS52YWx1ZSk7CisKKyAgICAvLyBj
cmVhdGUgYSBTZXF1ZW5jZU1hdGNoZXIgaW5zdGFuY2UgdGhhdCBkaWZmcyB0aGUgdHdvIHNldHMg
b2YgbGluZXMKKyAgICB2YXIgc20gPSBuZXcgZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIoYmFzZSwg
bmV3dHh0KTsKKworICAgIC8vIGdldCB0aGUgb3Bjb2RlcyBmcm9tIHRoZSBTZXF1ZW5jZU1hdGNo
ZXIgaW5zdGFuY2UgCisgICAgLy8gb3Bjb2RlcyBpcyBhIGxpc3Qgb2YgMy10dXBsZXMgZGVzY3Jp
YmluZyB3aGF0IGNoYW5nZXMgc2hvdWxkIGJlIG1hZGUgdG8gdGhlIGJhc2UgdGV4dCAKKyAgICAv
LyBpbiBvcmRlciB0byB5aWVsZCB0aGUgbmV3IHRleHQKKyAgICB2YXIgb3Bjb2RlcyA9IHNtLmdl
dF9vcGNvZGVzKCk7CisgICAgdmFyIGRpZmZvdXRwdXRkaXYgPSAkKCJkaWZmb3V0cHV0Iik7Cisg
ICAgd2hpbGUgKGRpZmZvdXRwdXRkaXYuZmlyc3RDaGlsZCkgZGlmZm91dHB1dGRpdi5yZW1vdmVD
aGlsZChkaWZmb3V0cHV0ZGl2LmZpcnN0Q2hpbGQpOworICAgIHZhciBjb250ZXh0U2l6ZSA9ICQo
ImNvbnRleHRTaXplIikudmFsdWU7CisgICAgY29udGV4dFNpemUgPSBjb250ZXh0U2l6ZSA/IGNv
bnRleHRTaXplIDogbnVsbDsKKworICAgIC8vIGJ1aWxkIHRoZSBkaWZmIHZpZXcgYW5kIGFkZCBp
dCB0byB0aGUgY3VycmVudCBET00KKyAgICBkaWZmb3V0cHV0ZGl2LmFwcGVuZENoaWxkKGRpZmZ2
aWV3LmJ1aWxkVmlldyh7CisgICAgICAgIGJhc2VUZXh0TGluZXM6IGJhc2UsCisgICAgICAgIG5l
d1RleHRMaW5lczogbmV3dHh0LAorICAgICAgICBvcGNvZGVzOiBvcGNvZGVzLAorICAgICAgICAv
LyBzZXQgdGhlIGRpc3BsYXkgdGl0bGVzIGZvciBlYWNoIHJlc291cmNlIAorICAgICAgICBiYXNl
VGV4dE5hbWU6ICJCYXNlIFRleHQiLAorICAgICAgICBuZXdUZXh0TmFtZTogIk5ldyBUZXh0IiwK
KyAgICAgICAgY29udGV4dFNpemU6IGNvbnRleHRTaXplLAorICAgICAgICB2aWV3VHlwZTogJCgi
aW5saW5lIikuY2hlY2tlZCA/IDEgOiAwCisgICAgfSkpOworCisgICAgLy8gc2Nyb2xsIGRvd24g
dG8gdGhlIGRpZmYgdmlldyB3aW5kb3cuCisgICAgbG9jYXRpb24gPSB1cmwgKyAiI2RpZmYiOwor
fQorLS0tLQorCitUaGVyZSdzIG5vdCBhIHdob2xlIGxvdCB0byBzYXkgYWJvdXQgdGhpcyBmdW5j
dGlvbi4gVGhlIG1vc3Qgbm90YWJsZSBhc3BlY3Qgb2YgaXQgaXMgdGhhdCB0aGUgYGRpZmZ2aWV3
LmJ1aWxkVmlldygpYCBmdW5jdGlvbiB0YWtlcyBhbiBvYmplY3QvbWFwIHdpdGggc3BlY2lmaWMg
YXR0cmlidXRlcywgcmF0aGVyIHRoYW4gYSBsaXN0IG9mIGFyZ3VtZW50cy4gVGhvc2UgYXR0cmli
dXRlcyBhcmUgbW9zdGx5IHNlbGYtZXhwbGFuYXRvcnksIGJ1dCBhcmUgbm9uZXRoZWxlc3MgZGVz
Y3JpYmVkIGluIGRldGFpbCBpbiBjb2RlIGRvY3VtZW50YXRpb24gaW4gZGlmZnZpZXcuanMuCisK
K1tbZGlmZi1weXRob25dXQorPT09IERpZmZpbmcgdXNpbmcgUHl0aG9uCisKK1RoaXMgaXNuJ3Qg
ZW5hYmxlZCBpbiB0aGUgZGVtbyBsaW5rIGFib3ZlLCBidXQgSSd2ZSBpbmNsdWRlZCBpdCB0byBl
eGVtcGxpZnkgaG93IG9uZSBtaWdodCB1c2UgdGhlIG9wY29kZSBvdXRwdXQgZnJvbSBhIHdlYi1i
YXNlZCBQeXRob24gYmFja2VuZCB0byBkcml2ZSBqc2RpZmZsaWIncyBkaWZmIHZpZXcuCisKKy0t
LS0KK2Z1bmN0aW9uIGRpZmZVc2luZ1B5dGhvbigpIHsKKyAgICBkb2pvLmlvLmJpbmQoeworICAg
ICAgICB1cmw6ICIvZGlmZi9wb3N0WWllbGREaWZmRGF0YSIsCisgICAgICAgIG1ldGhvZDogIlBP
U1QiLAorICAgICAgICBjb250ZW50OiB7CisgICAgICAgICAgICBiYXNlVGV4dDogJCgiYmFzZVRl
eHQiKS52YWx1ZSwKKyAgICAgICAgICAgIG5ld1RleHQ6ICQoIm5ld1RleHQiKS52YWx1ZSwKKyAg
ICAgICAgICAgIGlnbm9yZVdoaXRlc3BhY2U6ICJZIgorICAgICAgICB9LAorICAgICAgICBsb2Fk
OiBmdW5jdGlvbiAodHlwZSwgZGF0YSwgZXZ0KSB7CisgICAgICAgICAgICB0cnkgeworICAgICAg
ICAgICAgICAgIGRhdGEgPSBldmFsKCcoJyArIGRhdGEgKyAnKScpOworICAgICAgICAgICAgICAg
IHdoaWxlIChkaWZmb3V0cHV0ZGl2LmZpcnN0Q2hpbGQpIGRpZmZvdXRwdXRkaXYucmVtb3ZlQ2hp
bGQoZGlmZm91dHB1dGRpdi5maXJzdENoaWxkKTsKKyAgICAgICAgICAgICAgICAkKCJvdXRwdXQi
KS5hcHBlbmRDaGlsZChkaWZmdmlldy5idWlsZFZpZXcoeworICAgICAgICAgICAgICAgICAgICBi
YXNlVGV4dExpbmVzOiBkYXRhLmJhc2VUZXh0TGluZXMsCisgICAgICAgICAgICAgICAgICAgIG5l
d1RleHRMaW5lczogZGF0YS5uZXdUZXh0TGluZXMsCisgICAgICAgICAgICAgICAgICAgIG9wY29k
ZXM6IGRhdGEub3Bjb2RlcywKKyAgICAgICAgICAgICAgICAgICAgYmFzZVRleHROYW1lOiBkYXRh
LmJhc2VUZXh0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgbmV3VGV4dE5hbWU6IGRhdGEubmV3
VGV4dE5hbWUsCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHRTaXplOiBjb250ZXh0U2l6ZQor
ICAgICAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAg
ICAgICAgICAgYWxlcnQoIkFuIGVycm9yIG9jY3VycmVkIHVwZGF0aW5nIHRoZSBkaWZmIHZpZXc6
XG4iICsgZXgudG9TdHJpbmcoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
IGVycm9yOiBmdW5jdGlvbiAodHlwZSwgZXZ0KSB7CisgICAgICAgICAgICBhbGVydCgnRXJyb3Ig
b2NjdXJyZWQgZ2V0dGluZyBkaWZmIGRhdGEuIENoZWNrIHRoZSBzZXJ2ZXIgbG9ncy4nKTsKKyAg
ICAgICAgfSwKKyAgICAgICAgdHlwZTogJ3RleHQvamF2YXNjcmlwdCcKKyAgICB9KTsKK30KKy0t
LS0KKworW1dBUk5JTkddCis9PT09CitUaGlzIGRvam8gY29kZSB3YXMgd3JpdHRlbiBpbiAyMDA3
LCBhbmQgSSBoYXZlbid0IF9sb29rZWRfIGF0IGRvam8gZm9yIHllYXJzIG5vdy4gIEluIGFueSBj
YXNlLCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gZ3JvayB3aGF0J3MgZ29pbmcgb24uCis9PT09CisK
K0FzIHlvdSBjYW4gc2VlLCBJJ20gcGFydGlhbCB0byB1c2luZyBkb2pvIGZvciBhamF4eSBzdHVm
Zi4gQWxsIHRoYXQgaXMgaGFwcGVuaW5nIGhlcmUgaXMgdGhlIGJhc2UgYW5kIG5ldyB0ZXh0IGlz
IGJlaW5nIFBPU1RlZCB0byBhIFB5dGhvbiBzZXJ2ZXItc2lkZSBwcm9jZXNzICh3ZSBsaWtlIHB5
bG9ucywgYnV0IHlvdSBjb3VsZCBqdXN0IGFzIGVhc2lseSB1c2UgYSBzaW1wbGUgUHl0aG9uIHNj
cmlwdCBhcyBhIGNnaSkuIFRoYXQgcHJvY2VzcyB0aGVuIG5lZWRzIHRvIGRpZmYgdGhlIHByb3Zp
ZGVkIHRleHQgdXNpbmcgYW4gaW5zdGFuY2Ugb2YgUHl0aG9uJ3MgZGlmZmxpYi5TZXF1ZW5jZU1h
dGNoZXIgY2xhc3MsIGFuZCByZXR1cm4gdGhlIG9wY29kZXMgZnJvbSB0aGF0IFNlcXVlbmNlTWF0
Y2hlciBpbnN0YW5jZSB0byB0aGUgYnJvd3NlciAoaW4gdGhpcyBjYXNlLCB1c2luZyBKU09OIHNl
cmlhbGl6YXRpb24pLiBJbiB0aGUgaW50ZXJlc3Qgb2YgY29tcGxldGVuZXNzLCBoZXJlJ3MgdGhl
IGNvbnRyb2xsZXIgYWN0aW9uIGZyb20gb3VyIHB5bG9ucyBhcHBsaWNhdGlvbiB0aGF0IGRvZXMg
dGhpcyAoZG9uJ3QgdHJ5IHRvIG1hdGNoIHVwIHRoZSBwYXJhbWV0ZXJzIHNob3duIGJlbG93IHdp
dGggdGhlIFBPU1QgcGFyYW1ldGVycyBzaG93biBpbiB0aGUgSmF2YXNjcmlwdCBmdW5jdGlvbiBh
Ym92ZTsgdGhlIGxhdHRlciBpcyBvbmx5IGhlcmUgYXMgYW4gZXhhbXBsZSk6CisKKy0tLS0KK0Bq
c29uaWZ5CitkZWYgZGlmZiAoc2VsZiwgYmFzZVRleHQsIG5ld1RleHQsIGJhc2VUZXh0TmFtZT0i
QmFzZSBUZXh0IiwgbmV3VGV4dE5hbWU9Ik5ldyBUZXh0Iik6CisgICAgb3Bjb2RlcyA9IFNlcXVl
bmNlTWF0Y2hlcihpc2p1bmssIGJhc2VUZXh0LCBuZXdUZXh0KS5nZXRfb3Bjb2RlcygpCisgICAg
cmV0dXJuIGRpY3QoYmFzZVRleHRMaW5lcz1iYXNlVGV4dCwgbmV3VGV4dExpbmVzPW5ld1RleHQs
IG9wY29kZXM9b3Bjb2RlcywKKyAgICAgICAgICAgICAgICBiYXNlVGV4dE5hbWU9YmFzZVRleHRO
YW1lLCBuZXdUZXh0TmFtZT1uZXdUZXh0TmFtZSkKKy0tLS0KKworW1tzdGF0dXNdXQorPT0gRnV0
dXJlIERpcmVjdGlvbnMKKworVGhlIHRvcCBwcmlvcml0aWVzIHdvdWxkIGJlIHRvIGltcGxlbWVu
dCB0aGUgaWdub3Jpbmcgb2YgZW1wdHkgbGluZXMsIGFuZCB0aGUgaW5kaWNhdGlvbiBvZiBkaWZm
cyBhdCB0aGUgY2hhcmFjdGVyIGxldmVsIHdpdGggc3ViLWhpZ2hsaWdodGluZyAoc2ltaWxhciB0
byB3aGF0IFRyYWMncyBkaWZmIHZpZXcgZG9lcykuCisKK0knZCBhbHNvIGxpa2UgdG8gc2VlIHRo
ZSBgZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXJgIHJlaW1wbGVtZW50YXRpb24gZ2FpbiBzb21lIG1v
cmUgc3BlZWQgLS0gaXQncyB2aXJ0dWFsbHkgYSBsaW5lLWJ5LWxpbmUgdHJhbnNsYXRpb24gZnJv
bSB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uLCBzbyB0aGVyZSdzIHBsZW50eSB0aGF0IGNvdWxk
IGJlIGRvbmUgdG8gbWFrZSBpdCBtb3JlIHBlcmZvcm1hbnQgaW4gSmF2YXNjcmlwdC4gSG93ZXZl
ciwgdGhhdCB3b3VsZCBtZWFuIG1ha2luZyB0aGUgcmVpbXBsZW1lbnRhdGlvbiBkaXZlcmdlIGV2
ZW4gbW9yZSBmcm9tIHRoZSAicmVmZXJlbmNlIiBQeXRob24gaW1wbGVtZW50YXRpb24uIEdpdmVu
IHRoYXQgSSBkb24ndCByZWFsbHkgd2FudCB0byB3b3JyeSBhYm91dCB0aGUgYWxnb3JpdGhtLCB0
aGF0J3Mgbm90IGFwcGVhbGluZy4gSSdkIG11Y2ggcmF0aGVyIHVzZSBhIHNlcnZlci1zaWRlIHBy
b2Nlc3Mgd2hlbiB0aGUgaW4tYnJvd3NlciBkaWZmaW5nIGlzIGEgbGl0dGxlIHRvbyBwb2tleS4K
KworT3RoZXIgdGhhbiB0aGF0LCBJJ20gb3BlbiB0byBzdWdnZXN0aW9ucy4KKworW05PVEVdCis9
PT09CitJJ20gbm8gbG9uZ2VyIGFjdGl2ZWx5IGRldmVsb3BpbmcganNkaWZmbGliLiAgSXQncyBi
ZWVuIHNlcXVlc3RlcmVkIChtb3N0bHkgb3V0IG9mIHNpbXBsZSBuZWdsZWN0KSB0byBteSBjb21w
YW55J3Mgc2VydmVycyBmb3IgdG9vIGxvbmc7IG5vdyB0aGF0IGl0J3Mgb24gZ2l0aHViLCBJJ20g
aG9waW5nIHRoYXQgbWFueSBvZiB0aGUgcGVvcGxlIHRoYXQgZmluZCBpdCB1c2VmdWwgd2lsbCBz
dWJtaXQgcHVsbCByZXF1ZXN0cyB0byBpbXByb3ZlIHRoZSBsaWJyYXJ5LiAgSSB3aWxsIGRvIHdo
YXQgSSBjYW4gdG8gY3VyYXRlIHRoYXQgcHJvY2Vzcy4KKz09PT0KKworW1tsaWNlbnNlXV0KKz09
IExpY2Vuc2UKKworanNkaWZmbGliIGNhcnJpZXMgYSBCU0QgbGljZW5zZS4gQXMgc3VjaCwgaXQg
bWF5IGJlIHVzZWQgaW4gb3RoZXIgcHJvZHVjdHMgb3Igc2VydmljZXMgd2l0aCBhcHByb3ByaWF0
ZSBhdHRyaWJ1dGlvbiAoaW5jbHVkaW5nIGNvbW1lcmNpYWwgb2ZmZXJpbmdzKS4gVGhlIGxpY2Vu
c2UgaXMgcHJlcGVuZGVkIHRvIGVhY2ggb2YganNkaWZmbGliJ3MgZmlsZXMuCisKK1tbZG93bmxv
YWRzXV0KKz09IERvd25sb2FkcworCitqc2RpZmZsaWIgY29uc2lzdHMgb2YgdGhyZWUgZmlsZXMg
LS0gdHdvIEphdmFzY3JpcHQgZmlsZXMsIGFuZCBvbmUgQ1NTIGZpbGUuIFdoeSB0d28gSmF2YXNj
cmlwdCBmaWxlcz8gQmVjYXVzZSBJIHdhbnRlZCB0byBrZWVwIHRoZSByZWltcGxlbWVudGF0aW9u
IG9mIHRoZSBweXRob24gZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIgY2xhc3Mgc2VwYXJhdGUgZnJv
bSB0aGUgYWN0dWFsIHZpc3VhbCBkaWZmIHZpZXcgZ2VuZXJhdG9yLiBGZWVsIGZyZWUgdG8gY29t
YmluZSBhbmQvb3Igb3B0aW1pemUgdGhlbSBpbiB5b3VyIGRlcGxveW1lbnQgZW52aXJvbm1lbnQu
CisKK1lvdSBjYW4gZG93bmxvYWQgdGhlIGZpbGVzIHNlcGFyYXRlbHkgYnkgbmF2aWdhdGluZyB0
aGUgcHJvamVjdCBvbiBnaXRodWIsIHlvdSBjYW4gY2xvbmUgdGhlIHJlcG8sIG9yIHlvdSBjYW4g
ZG93bmxvYWQgYSB6aXBwZWQgZGlzdHJpYnV0aW9uIHZpYSB0aGUgIkRvd25sb2FkcyIgYnV0dG9u
IGF0IHRoZSB0b3Agb2YgdGhpcyBwcm9qZWN0IHBhZ2UuCisKK1tbaGlzdG9yeV1dCis9PSBSZWxl
YXNlIEhpc3RvcnkKKworKiAxLjEuMCAoTWF5IDE4LCAyMDExKTogTW92ZSBwcm9qZWN0IHRvIGdp
dGh1Yjsgbm8gY2hhbmdlcyBpbiBmdW5jdGlvbmFsaXR5CisqIDEuMC4wIChGZWJydWFyeSAyMiwg
MjAwNyk6IEluaXRpYWwgcmVsZWFzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZmbGliLmpzIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZmbGliLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRiMmMwZTNhYzRmZDNkMTliZmFmY2VmYzJlNGM3MDFiYTBiYWExOWUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvanNk
aWZmbGliL2RpZmZsaWIuanMKQEAgLTAsMCArMSw0MDcgQEAKKy8qKioKK1RoaXMgaXMgcGFydCBv
ZiBqc2RpZmZsaWIgdjEuMC4gPGh0dHA6Ly9zbm93dGlkZS5jb20vanNkaWZmbGliPgorCitDb3B5
cmlnaHQgKGMpIDIwMDcsIFNub3d0aWRlIEluZm9ybWF0aWNzIFN5c3RlbXMsIEluYy4KK0FsbCBy
aWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCithcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisKKwkqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0IG5vdGljZSwgdGhpcworCQlsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKwkqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKwkJdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorCQlh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKwkq
IE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFNub3d0aWRlIEluZm9ybWF0aWNzIFN5c3RlbXMgbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKwkJY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworCQlzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKK0VYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUworT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQKK1NIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCitJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQKK1RPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKK0JVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCitD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOCitBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorREFN
QUdFLgorKioqLworLyogQXV0aG9yOiBDaGFzIEVtZXJpY2sgPGNlbWVyaWNrQHNub3d0aWRlLmNv
bT4gKi8KK19fd2hpdGVzcGFjZSA9IHsiICI6dHJ1ZSwgIlx0Ijp0cnVlLCAiXG4iOnRydWUsICJc
ZiI6dHJ1ZSwgIlxyIjp0cnVlfTsKKworZGlmZmxpYiA9IHsKKwlkZWZhdWx0SnVua0Z1bmN0aW9u
OiBmdW5jdGlvbiAoYykgeworCQlyZXR1cm4gX193aGl0ZXNwYWNlLmhhc093blByb3BlcnR5KGMp
OworCX0sCisJCisJc3RyaXBMaW5lYnJlYWtzOiBmdW5jdGlvbiAoc3RyKSB7IHJldHVybiBzdHIu
cmVwbGFjZSgvXltcblxyXSp8W1xuXHJdKiQvZywgIiIpOyB9LAorCQorCXN0cmluZ0FzTGluZXM6
IGZ1bmN0aW9uIChzdHIpIHsKKwkJdmFyIGxmcG9zID0gc3RyLmluZGV4T2YoIlxuIik7CisJCXZh
ciBjcnBvcyA9IHN0ci5pbmRleE9mKCJcciIpOworCQl2YXIgbGluZWJyZWFrID0gKChsZnBvcyA+
IC0xICYmIGNycG9zID4gLTEpIHx8IGNycG9zIDwgMCkgPyAiXG4iIDogIlxyIjsKKwkJCisJCXZh
ciBsaW5lcyA9IHN0ci5zcGxpdChsaW5lYnJlYWspOworCQlmb3IgKHZhciBpID0gMDsgaSA8IGxp
bmVzLmxlbmd0aDsgaSsrKSB7CisJCQlsaW5lc1tpXSA9IGRpZmZsaWIuc3RyaXBMaW5lYnJlYWtz
KGxpbmVzW2ldKTsKKwkJfQorCQkKKwkJcmV0dXJuIGxpbmVzOworCX0sCisJCisJLy8gaXRlcmF0
aW9uLWJhc2VkIHJlZHVjZSBpbXBsZW1lbnRhdGlvbgorCV9fcmVkdWNlOiBmdW5jdGlvbiAoZnVu
YywgbGlzdCwgaW5pdGlhbCkgeworCQlpZiAoaW5pdGlhbCAhPSBudWxsKSB7CisJCQl2YXIgdmFs
dWUgPSBpbml0aWFsOworCQkJdmFyIGlkeCA9IDA7CisJCX0gZWxzZSBpZiAobGlzdCkgeworCQkJ
dmFyIHZhbHVlID0gbGlzdFswXTsKKwkJCXZhciBpZHggPSAxOworCQl9IGVsc2UgeworCQkJcmV0
dXJuIG51bGw7CisJCX0KKwkJCisJCWZvciAoOyBpZHggPCBsaXN0Lmxlbmd0aDsgaWR4KyspIHsK
KwkJCXZhbHVlID0gZnVuYyh2YWx1ZSwgbGlzdFtpZHhdKTsKKwkJfQorCQkKKwkJcmV0dXJuIHZh
bHVlOworCX0sCisJCisJLy8gY29tcGFyaXNvbiBmdW5jdGlvbiBmb3Igc29ydGluZyBsaXN0cyBv
ZiBudW1lcmljIHR1cGxlcworCV9fbnR1cGxlY29tcDogZnVuY3Rpb24gKGEsIGIpIHsKKwkJdmFy
IG1sZW4gPSBNYXRoLm1heChhLmxlbmd0aCwgYi5sZW5ndGgpOworCQlmb3IgKHZhciBpID0gMDsg
aSA8IG1sZW47IGkrKykgeworCQkJaWYgKGFbaV0gPCBiW2ldKSByZXR1cm4gLTE7CisJCQlpZiAo
YVtpXSA+IGJbaV0pIHJldHVybiAxOworCQl9CisJCQorCQlyZXR1cm4gYS5sZW5ndGggPT0gYi5s
ZW5ndGggPyAwIDogKGEubGVuZ3RoIDwgYi5sZW5ndGggPyAtMSA6IDEpOworCX0sCisJCisJX19j
YWxjdWxhdGVfcmF0aW86IGZ1bmN0aW9uIChtYXRjaGVzLCBsZW5ndGgpIHsKKwkJcmV0dXJuIGxl
bmd0aCA/IDIuMCAqIG1hdGNoZXMgLyBsZW5ndGggOiAxLjA7CisJfSwKKwkKKwkvLyByZXR1cm5z
IGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRydWUgaWYgYSBrZXkgcGFzc2VkIHRvIHRoZSByZXR1
cm5lZCBmdW5jdGlvbgorCS8vIGlzIGluIHRoZSBkaWN0IChqcyBvYmplY3QpIHByb3ZpZGVkIHRv
IHRoaXMgZnVuY3Rpb247IHJlcGxhY2VzIGJlaW5nIGFibGUgdG8KKwkvLyBjYXJyeSBhcm91bmQg
ZGljdC5oYXNfa2V5IGluIHB5dGhvbi4uLgorCV9faXNpbmRpY3Q6IGZ1bmN0aW9uIChkaWN0KSB7
CisJCXJldHVybiBmdW5jdGlvbiAoa2V5KSB7IHJldHVybiBkaWN0Lmhhc093blByb3BlcnR5KGtl
eSk7IH07CisJfSwKKwkKKwkvLyByZXBsYWNlbWVudCBmb3IgcHl0aG9uJ3MgZGljdC5nZXQgZnVu
Y3Rpb24gLS0gbmVlZCBlYXN5IGRlZmF1bHQgdmFsdWVzCisJX19kaWN0Z2V0OiBmdW5jdGlvbiAo
ZGljdCwga2V5LCBkZWZhdWx0VmFsdWUpIHsKKwkJcmV0dXJuIGRpY3QuaGFzT3duUHJvcGVydHko
a2V5KSA/IGRpY3Rba2V5XSA6IGRlZmF1bHRWYWx1ZTsKKwl9LAkKKwkKKwlTZXF1ZW5jZU1hdGNo
ZXI6IGZ1bmN0aW9uIChhLCBiLCBpc2p1bmspIHsKKwkJdGhpcy5zZXRfc2VxcyA9IGZ1bmN0aW9u
IChhLCBiKSB7CisJCQl0aGlzLnNldF9zZXExKGEpOworCQkJdGhpcy5zZXRfc2VxMihiKTsKKwkJ
fQorCQkKKwkJdGhpcy5zZXRfc2VxMSA9IGZ1bmN0aW9uIChhKSB7CisJCQlpZiAoYSA9PSB0aGlz
LmEpIHJldHVybjsKKwkJCXRoaXMuYSA9IGE7CisJCQl0aGlzLm1hdGNoaW5nX2Jsb2NrcyA9IHRo
aXMub3Bjb2RlcyA9IG51bGw7CisJCX0KKwkJCisJCXRoaXMuc2V0X3NlcTIgPSBmdW5jdGlvbiAo
YikgeworCQkJaWYgKGIgPT0gdGhpcy5iKSByZXR1cm47CisJCQl0aGlzLmIgPSBiOworCQkJdGhp
cy5tYXRjaGluZ19ibG9ja3MgPSB0aGlzLm9wY29kZXMgPSB0aGlzLmZ1bGxiY291bnQgPSBudWxs
OworCQkJdGhpcy5fX2NoYWluX2IoKTsKKwkJfQorCQkKKwkJdGhpcy5fX2NoYWluX2IgPSBmdW5j
dGlvbiAoKSB7CisJCQl2YXIgYiA9IHRoaXMuYjsKKwkJCXZhciBuID0gYi5sZW5ndGg7CisJCQl2
YXIgYjJqID0gdGhpcy5iMmogPSB7fTsKKwkJCXZhciBwb3B1bGFyZGljdCA9IHt9OworCQkJZm9y
ICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7CisJCQkJdmFyIGVsdCA9IGJbaV07CisJ
CQkJaWYgKGIyai5oYXNPd25Qcm9wZXJ0eShlbHQpKSB7CisJCQkJCXZhciBpbmRpY2VzID0gYjJq
W2VsdF07CisJCQkJCWlmIChuID49IDIwMCAmJiBpbmRpY2VzLmxlbmd0aCAqIDEwMCA+IG4pIHsK
KwkJCQkJCXBvcHVsYXJkaWN0W2VsdF0gPSAxOworCQkJCQkJZGVsZXRlIGIyaltlbHRdOworCQkJ
CQl9IGVsc2UgeworCQkJCQkJaW5kaWNlcy5wdXNoKGkpOworCQkJCQl9CisJCQkJfSBlbHNlIHsK
KwkJCQkJYjJqW2VsdF0gPSBbaV07CisJCQkJfQorCQkJfQorCQorCQkJZm9yICh2YXIgZWx0IGlu
IHBvcHVsYXJkaWN0KSB7CisJCQkJaWYgKHBvcHVsYXJkaWN0Lmhhc093blByb3BlcnR5KGVsdCkp
IHsKKwkJCQkJZGVsZXRlIGIyaltlbHRdOworCQkJCX0KKwkJCX0KKwkJCQorCQkJdmFyIGlzanVu
ayA9IHRoaXMuaXNqdW5rOworCQkJdmFyIGp1bmtkaWN0ID0ge307CisJCQlpZiAoaXNqdW5rKSB7
CisJCQkJZm9yICh2YXIgZWx0IGluIHBvcHVsYXJkaWN0KSB7CisJCQkJCWlmIChwb3B1bGFyZGlj
dC5oYXNPd25Qcm9wZXJ0eShlbHQpICYmIGlzanVuayhlbHQpKSB7CisJCQkJCQlqdW5rZGljdFtl
bHRdID0gMTsKKwkJCQkJCWRlbGV0ZSBwb3B1bGFyZGljdFtlbHRdOworCQkJCQl9CisJCQkJfQor
CQkJCWZvciAodmFyIGVsdCBpbiBiMmopIHsKKwkJCQkJaWYgKGIyai5oYXNPd25Qcm9wZXJ0eShl
bHQpICYmIGlzanVuayhlbHQpKSB7CisJCQkJCQlqdW5rZGljdFtlbHRdID0gMTsKKwkJCQkJCWRl
bGV0ZSBiMmpbZWx0XTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkKKwkJCXRoaXMuaXNianVuayA9
IGRpZmZsaWIuX19pc2luZGljdChqdW5rZGljdCk7CisJCQl0aGlzLmlzYnBvcHVsYXIgPSBkaWZm
bGliLl9faXNpbmRpY3QocG9wdWxhcmRpY3QpOworCQl9CisJCQorCQl0aGlzLmZpbmRfbG9uZ2Vz
dF9tYXRjaCA9IGZ1bmN0aW9uIChhbG8sIGFoaSwgYmxvLCBiaGkpIHsKKwkJCXZhciBhID0gdGhp
cy5hOworCQkJdmFyIGIgPSB0aGlzLmI7CisJCQl2YXIgYjJqID0gdGhpcy5iMmo7CisJCQl2YXIg
aXNianVuayA9IHRoaXMuaXNianVuazsKKwkJCXZhciBiZXN0aSA9IGFsbzsKKwkJCXZhciBiZXN0
aiA9IGJsbzsKKwkJCXZhciBiZXN0c2l6ZSA9IDA7CisJCQl2YXIgaiA9IG51bGw7CisJCisJCQl2
YXIgajJsZW4gPSB7fTsKKwkJCXZhciBub3RoaW5nID0gW107CisJCQlmb3IgKHZhciBpID0gYWxv
OyBpIDwgYWhpOyBpKyspIHsKKwkJCQl2YXIgbmV3ajJsZW4gPSB7fTsKKwkJCQl2YXIgamRpY3Qg
PSBkaWZmbGliLl9fZGljdGdldChiMmosIGFbaV0sIG5vdGhpbmcpOworCQkJCWZvciAodmFyIGpr
ZXkgaW4gamRpY3QpIHsKKwkJCQkJaWYgKGpkaWN0Lmhhc093blByb3BlcnR5KGprZXkpKSB7CisJ
CQkJCQlqID0gamRpY3RbamtleV07CisJCQkJCQlpZiAoaiA8IGJsbykgY29udGludWU7CisJCQkJ
CQlpZiAoaiA+PSBiaGkpIGJyZWFrOworCQkJCQkJbmV3ajJsZW5bal0gPSBrID0gZGlmZmxpYi5f
X2RpY3RnZXQoajJsZW4sIGogLSAxLCAwKSArIDE7CisJCQkJCQlpZiAoayA+IGJlc3RzaXplKSB7
CisJCQkJCQkJYmVzdGkgPSBpIC0gayArIDE7CisJCQkJCQkJYmVzdGogPSBqIC0gayArIDE7CisJ
CQkJCQkJYmVzdHNpemUgPSBrOworCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJCWoybGVuID0g
bmV3ajJsZW47CisJCQl9CisJCisJCQl3aGlsZSAoYmVzdGkgPiBhbG8gJiYgYmVzdGogPiBibG8g
JiYgIWlzYmp1bmsoYltiZXN0aiAtIDFdKSAmJiBhW2Jlc3RpIC0gMV0gPT0gYltiZXN0aiAtIDFd
KSB7CisJCQkJYmVzdGktLTsKKwkJCQliZXN0ai0tOworCQkJCWJlc3RzaXplKys7CisJCQl9CisJ
CQkJCisJCQl3aGlsZSAoYmVzdGkgKyBiZXN0c2l6ZSA8IGFoaSAmJiBiZXN0aiArIGJlc3RzaXpl
IDwgYmhpICYmCisJCQkJCSFpc2JqdW5rKGJbYmVzdGogKyBiZXN0c2l6ZV0pICYmCisJCQkJCWFb
YmVzdGkgKyBiZXN0c2l6ZV0gPT0gYltiZXN0aiArIGJlc3RzaXplXSkgeworCQkJCWJlc3RzaXpl
Kys7CisJCQl9CisJCisJCQl3aGlsZSAoYmVzdGkgPiBhbG8gJiYgYmVzdGogPiBibG8gJiYgaXNi
anVuayhiW2Jlc3RqIC0gMV0pICYmIGFbYmVzdGkgLSAxXSA9PSBiW2Jlc3RqIC0gMV0pIHsKKwkJ
CQliZXN0aS0tOworCQkJCWJlc3RqLS07CisJCQkJYmVzdHNpemUrKzsKKwkJCX0KKwkJCQorCQkJ
d2hpbGUgKGJlc3RpICsgYmVzdHNpemUgPCBhaGkgJiYgYmVzdGogKyBiZXN0c2l6ZSA8IGJoaSAm
JiBpc2JqdW5rKGJbYmVzdGogKyBiZXN0c2l6ZV0pICYmCisJCQkJCWFbYmVzdGkgKyBiZXN0c2l6
ZV0gPT0gYltiZXN0aiArIGJlc3RzaXplXSkgeworCQkJCWJlc3RzaXplKys7CisJCQl9CisJCisJ
CQlyZXR1cm4gW2Jlc3RpLCBiZXN0aiwgYmVzdHNpemVdOworCQl9CisJCQorCQl0aGlzLmdldF9t
YXRjaGluZ19ibG9ja3MgPSBmdW5jdGlvbiAoKSB7CisJCQlpZiAodGhpcy5tYXRjaGluZ19ibG9j
a3MgIT0gbnVsbCkgcmV0dXJuIHRoaXMubWF0Y2hpbmdfYmxvY2tzOworCQkJdmFyIGxhID0gdGhp
cy5hLmxlbmd0aDsKKwkJCXZhciBsYiA9IHRoaXMuYi5sZW5ndGg7CisJCisJCQl2YXIgcXVldWUg
PSBbWzAsIGxhLCAwLCBsYl1dOworCQkJdmFyIG1hdGNoaW5nX2Jsb2NrcyA9IFtdOworCQkJdmFy
IGFsbywgYWhpLCBibG8sIGJoaSwgcWksIGksIGosIGssIHg7CisJCQl3aGlsZSAocXVldWUubGVu
Z3RoKSB7CisJCQkJcWkgPSBxdWV1ZS5wb3AoKTsKKwkJCQlhbG8gPSBxaVswXTsKKwkJCQlhaGkg
PSBxaVsxXTsKKwkJCQlibG8gPSBxaVsyXTsKKwkJCQliaGkgPSBxaVszXTsKKwkJCQl4ID0gdGhp
cy5maW5kX2xvbmdlc3RfbWF0Y2goYWxvLCBhaGksIGJsbywgYmhpKTsKKwkJCQlpID0geFswXTsK
KwkJCQlqID0geFsxXTsKKwkJCQlrID0geFsyXTsKKwkKKwkJCQlpZiAoaykgeworCQkJCQltYXRj
aGluZ19ibG9ja3MucHVzaCh4KTsKKwkJCQkJaWYgKGFsbyA8IGkgJiYgYmxvIDwgaikKKwkJCQkJ
CXF1ZXVlLnB1c2goW2FsbywgaSwgYmxvLCBqXSk7CisJCQkJCWlmIChpK2sgPCBhaGkgJiYgaitr
IDwgYmhpKQorCQkJCQkJcXVldWUucHVzaChbaSArIGssIGFoaSwgaiArIGssIGJoaV0pOworCQkJ
CX0KKwkJCX0KKwkJCQorCQkJbWF0Y2hpbmdfYmxvY2tzLnNvcnQoZGlmZmxpYi5fX250dXBsZWNv
bXApOworCQorCQkJdmFyIGkxID0gajEgPSBrMSA9IGJsb2NrID0gMDsKKwkJCXZhciBub25fYWRq
YWNlbnQgPSBbXTsKKwkJCWZvciAodmFyIGlkeCBpbiBtYXRjaGluZ19ibG9ja3MpIHsKKwkJCQlp
ZiAobWF0Y2hpbmdfYmxvY2tzLmhhc093blByb3BlcnR5KGlkeCkpIHsKKwkJCQkJYmxvY2sgPSBt
YXRjaGluZ19ibG9ja3NbaWR4XTsKKwkJCQkJaTIgPSBibG9ja1swXTsKKwkJCQkJajIgPSBibG9j
a1sxXTsKKwkJCQkJazIgPSBibG9ja1syXTsKKwkJCQkJaWYgKGkxICsgazEgPT0gaTIgJiYgajEg
KyBrMSA9PSBqMikgeworCQkJCQkJazEgKz0gazI7CisJCQkJCX0gZWxzZSB7CisJCQkJCQlpZiAo
azEpIG5vbl9hZGphY2VudC5wdXNoKFtpMSwgajEsIGsxXSk7CisJCQkJCQlpMSA9IGkyOworCQkJ
CQkJajEgPSBqMjsKKwkJCQkJCWsxID0gazI7CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCQkKKwkJ
CWlmIChrMSkgbm9uX2FkamFjZW50LnB1c2goW2kxLCBqMSwgazFdKTsKKwkKKwkJCW5vbl9hZGph
Y2VudC5wdXNoKFtsYSwgbGIsIDBdKTsKKwkJCXRoaXMubWF0Y2hpbmdfYmxvY2tzID0gbm9uX2Fk
amFjZW50OworCQkJcmV0dXJuIHRoaXMubWF0Y2hpbmdfYmxvY2tzOworCQl9CisJCQorCQl0aGlz
LmdldF9vcGNvZGVzID0gZnVuY3Rpb24gKCkgeworCQkJaWYgKHRoaXMub3Bjb2RlcyAhPSBudWxs
KSByZXR1cm4gdGhpcy5vcGNvZGVzOworCQkJdmFyIGkgPSAwOworCQkJdmFyIGogPSAwOworCQkJ
dmFyIGFuc3dlciA9IFtdOworCQkJdGhpcy5vcGNvZGVzID0gYW5zd2VyOworCQkJdmFyIGJsb2Nr
LCBhaSwgYmosIHNpemUsIHRhZzsKKwkJCXZhciBibG9ja3MgPSB0aGlzLmdldF9tYXRjaGluZ19i
bG9ja3MoKTsKKwkJCWZvciAodmFyIGlkeCBpbiBibG9ja3MpIHsKKwkJCQlpZiAoYmxvY2tzLmhh
c093blByb3BlcnR5KGlkeCkpIHsKKwkJCQkJYmxvY2sgPSBibG9ja3NbaWR4XTsKKwkJCQkJYWkg
PSBibG9ja1swXTsKKwkJCQkJYmogPSBibG9ja1sxXTsKKwkJCQkJc2l6ZSA9IGJsb2NrWzJdOwor
CQkJCQl0YWcgPSAnJzsKKwkJCQkJaWYgKGkgPCBhaSAmJiBqIDwgYmopIHsKKwkJCQkJCXRhZyA9
ICdyZXBsYWNlJzsKKwkJCQkJfSBlbHNlIGlmIChpIDwgYWkpIHsKKwkJCQkJCXRhZyA9ICdkZWxl
dGUnOworCQkJCQl9IGVsc2UgaWYgKGogPCBiaikgeworCQkJCQkJdGFnID0gJ2luc2VydCc7CisJ
CQkJCX0KKwkJCQkJaWYgKHRhZykgYW5zd2VyLnB1c2goW3RhZywgaSwgYWksIGosIGJqXSk7CisJ
CQkJCWkgPSBhaSArIHNpemU7CisJCQkJCWogPSBiaiArIHNpemU7CisJCQkJCQorCQkJCQlpZiAo
c2l6ZSkgYW5zd2VyLnB1c2goWydlcXVhbCcsIGFpLCBpLCBiaiwgal0pOworCQkJCX0KKwkJCX0K
KwkJCQorCQkJcmV0dXJuIGFuc3dlcjsKKwkJfQorCQkKKwkJLy8gdGhpcyBpcyBhIGdlbmVyYXRv
ciBmdW5jdGlvbiBpbiB0aGUgcHl0aG9uIGxpYiwgd2hpY2ggb2YgY291cnNlIGlzIG5vdCBzdXBw
b3J0ZWQgaW4gamF2YXNjcmlwdAorCQkvLyB0aGUgcmVpbXBsZW1lbnRhdGlvbiBidWlsZHMgdXAg
dGhlIGdyb3VwZWQgb3Bjb2RlcyBpbnRvIGEgbGlzdCBpbiB0aGVpciBlbnRpcmV0eSBhbmQgcmV0
dXJucyB0aGF0LgorCQl0aGlzLmdldF9ncm91cGVkX29wY29kZXMgPSBmdW5jdGlvbiAobikgewor
CQkJaWYgKCFuKSBuID0gMzsKKwkJCXZhciBjb2RlcyA9IHRoaXMuZ2V0X29wY29kZXMoKTsKKwkJ
CWlmICghY29kZXMpIGNvZGVzID0gW1siZXF1YWwiLCAwLCAxLCAwLCAxXV07CisJCQl2YXIgY29k
ZSwgdGFnLCBpMSwgaTIsIGoxLCBqMjsKKwkJCWlmIChjb2Rlc1swXVswXSA9PSAnZXF1YWwnKSB7
CisJCQkJY29kZSA9IGNvZGVzWzBdOworCQkJCXRhZyA9IGNvZGVbMF07CisJCQkJaTEgPSBjb2Rl
WzFdOworCQkJCWkyID0gY29kZVsyXTsKKwkJCQlqMSA9IGNvZGVbM107CisJCQkJajIgPSBjb2Rl
WzRdOworCQkJCWNvZGVzWzBdID0gW3RhZywgTWF0aC5tYXgoaTEsIGkyIC0gbiksIGkyLCBNYXRo
Lm1heChqMSwgajIgLSBuKSwgajJdOworCQkJfQorCQkJaWYgKGNvZGVzW2NvZGVzLmxlbmd0aCAt
IDFdWzBdID09ICdlcXVhbCcpIHsKKwkJCQljb2RlID0gY29kZXNbY29kZXMubGVuZ3RoIC0gMV07
CisJCQkJdGFnID0gY29kZVswXTsKKwkJCQlpMSA9IGNvZGVbMV07CisJCQkJaTIgPSBjb2RlWzJd
OworCQkJCWoxID0gY29kZVszXTsKKwkJCQlqMiA9IGNvZGVbNF07CisJCQkJY29kZXNbY29kZXMu
bGVuZ3RoIC0gMV0gPSBbdGFnLCBpMSwgTWF0aC5taW4oaTIsIGkxICsgbiksIGoxLCBNYXRoLm1p
bihqMiwgajEgKyBuKV07CisJCQl9CisJCisJCQl2YXIgbm4gPSBuICsgbjsKKwkJCXZhciBncm91
cHMgPSBbXTsKKwkJCWZvciAodmFyIGlkeCBpbiBjb2RlcykgeworCQkJCWlmIChjb2Rlcy5oYXNP
d25Qcm9wZXJ0eShpZHgpKSB7CisJCQkJCWNvZGUgPSBjb2Rlc1tpZHhdOworCQkJCQl0YWcgPSBj
b2RlWzBdOworCQkJCQlpMSA9IGNvZGVbMV07CisJCQkJCWkyID0gY29kZVsyXTsKKwkJCQkJajEg
PSBjb2RlWzNdOworCQkJCQlqMiA9IGNvZGVbNF07CisJCQkJCWlmICh0YWcgPT0gJ2VxdWFsJyAm
JiBpMiAtIGkxID4gbm4pIHsKKwkJCQkJCWdyb3Vwcy5wdXNoKFt0YWcsIGkxLCBNYXRoLm1pbihp
MiwgaTEgKyBuKSwgajEsIE1hdGgubWluKGoyLCBqMSArIG4pXSk7CisJCQkJCQlpMSA9IE1hdGgu
bWF4KGkxLCBpMi1uKTsKKwkJCQkJCWoxID0gTWF0aC5tYXgoajEsIGoyLW4pOworCQkJCQl9CisJ
CQkJCQorCQkJCQlncm91cHMucHVzaChbdGFnLCBpMSwgaTIsIGoxLCBqMl0pOworCQkJCX0KKwkJ
CX0KKwkJCQorCQkJaWYgKGdyb3VwcyAmJiBncm91cHNbZ3JvdXBzLmxlbmd0aCAtIDFdWzBdID09
ICdlcXVhbCcpIGdyb3Vwcy5wb3AoKTsKKwkJCQorCQkJcmV0dXJuIGdyb3VwczsKKwkJfQorCQkK
KwkJdGhpcy5yYXRpbyA9IGZ1bmN0aW9uICgpIHsKKwkJCW1hdGNoZXMgPSBkaWZmbGliLl9fcmVk
dWNlKAorCQkJCQkJCWZ1bmN0aW9uIChzdW0sIHRyaXBsZSkgeyByZXR1cm4gc3VtICsgdHJpcGxl
W3RyaXBsZS5sZW5ndGggLSAxXTsgfSwKKwkJCQkJCQl0aGlzLmdldF9tYXRjaGluZ19ibG9ja3Mo
KSwgMCk7CisJCQlyZXR1cm4gZGlmZmxpYi5fX2NhbGN1bGF0ZV9yYXRpbyhtYXRjaGVzLCB0aGlz
LmEubGVuZ3RoICsgdGhpcy5iLmxlbmd0aCk7CisJCX0KKwkJCisJCXRoaXMucXVpY2tfcmF0aW8g
PSBmdW5jdGlvbiAoKSB7CisJCQl2YXIgZnVsbGJjb3VudCwgZWx0OworCQkJaWYgKHRoaXMuZnVs
bGJjb3VudCA9PSBudWxsKSB7CisJCQkJdGhpcy5mdWxsYmNvdW50ID0gZnVsbGJjb3VudCA9IHt9
OworCQkJCWZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5iLmxlbmd0aDsgaSsrKSB7CisJCQkJCWVs
dCA9IHRoaXMuYltpXTsKKwkJCQkJZnVsbGJjb3VudFtlbHRdID0gZGlmZmxpYi5fX2RpY3RnZXQo
ZnVsbGJjb3VudCwgZWx0LCAwKSArIDE7CisJCQkJfQorCQkJfQorCQkJZnVsbGJjb3VudCA9IHRo
aXMuZnVsbGJjb3VudDsKKwkKKwkJCXZhciBhdmFpbCA9IHt9OworCQkJdmFyIGF2YWlsaGFzID0g
ZGlmZmxpYi5fX2lzaW5kaWN0KGF2YWlsKTsKKwkJCXZhciBtYXRjaGVzID0gbnVtYiA9IDA7CisJ
CQlmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYS5sZW5ndGg7IGkrKykgeworCQkJCWVsdCA9IHRo
aXMuYVtpXTsKKwkJCQlpZiAoYXZhaWxoYXMoZWx0KSkgeworCQkJCQludW1iID0gYXZhaWxbZWx0
XTsKKwkJCQl9IGVsc2UgeworCQkJCQludW1iID0gZGlmZmxpYi5fX2RpY3RnZXQoZnVsbGJjb3Vu
dCwgZWx0LCAwKTsKKwkJCQl9CisJCQkJYXZhaWxbZWx0XSA9IG51bWIgLSAxOworCQkJCWlmIChu
dW1iID4gMCkgbWF0Y2hlcysrOworCQkJfQorCQkJCisJCQlyZXR1cm4gZGlmZmxpYi5fX2NhbGN1
bGF0ZV9yYXRpbyhtYXRjaGVzLCB0aGlzLmEubGVuZ3RoICsgdGhpcy5iLmxlbmd0aCk7CisJCX0K
KwkJCisJCXRoaXMucmVhbF9xdWlja19yYXRpbyA9IGZ1bmN0aW9uICgpIHsKKwkJCXZhciBsYSA9
IHRoaXMuYS5sZW5ndGg7CisJCQl2YXIgbGIgPSB0aGlzLmIubGVuZ3RoOworCQkJcmV0dXJuIF9j
YWxjdWxhdGVfcmF0aW8oTWF0aC5taW4obGEsIGxiKSwgbGEgKyBsYik7CisJCX0KKwkJCisJCXRo
aXMuaXNqdW5rID0gaXNqdW5rID8gaXNqdW5rIDogZGlmZmxpYi5kZWZhdWx0SnVua0Z1bmN0aW9u
OworCQl0aGlzLmEgPSB0aGlzLmIgPSBudWxsOworCQl0aGlzLnNldF9zZXFzKGEsIGIpOworCX0K
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNl
cy9qc2RpZmZsaWIvZGlmZnZpZXcuY3NzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZmdmlldy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODExYTU5M2I3
N2ZiYTRiOGU5NWY1ZTE4MDNjMjFkMDc3ZjM5YWQxZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9qc2RpZmZsaWIvZGlmZnZpZXcu
Y3NzCkBAIC0wLDAgKzEsODMgQEAKKy8qCitUaGlzIGlzIHBhcnQgb2YganNkaWZmbGliIHYxLjAu
IDxodHRwOi8vZ2l0aHViLmNvbS9jZW1lcmljay9qc2RpZmZsaWI+CisKK0NvcHlyaWdodCAyMDA3
IC0gMjAxMSBDaGFzIEVtZXJpY2sgPGNlbWVyaWNrQHNub3d0aWRlLmNvbT4uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZQorcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisKKyAgIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mCisgICAgICBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisKKyAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0CisgICAgICBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICAgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENoYXMgRW1lcmljayBg
YEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKK1dBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDaGFzIEVtZXJpY2sgT1IKK0NPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCitDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCitTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCitBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCitORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYKK0FEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitUaGUgdmlld3MgYW5kIGNvbmNsdXNpb25zIGNvbnRhaW5lZCBpbiB0aGUgc29mdHdh
cmUgYW5kIGRvY3VtZW50YXRpb24gYXJlIHRob3NlIG9mIHRoZQorYXV0aG9ycyBhbmQgc2hvdWxk
IG5vdCBiZSBpbnRlcnByZXRlZCBhcyByZXByZXNlbnRpbmcgb2ZmaWNpYWwgcG9saWNpZXMsIGVp
dGhlciBleHByZXNzZWQKK29yIGltcGxpZWQsIG9mIENoYXMgRW1lcmljay4KKyovCit0YWJsZS5k
aWZmIHsKKwlib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7CisJYm9yZGVyOjFweCBzb2xpZCBkYXJr
Z3JheTsKKwl3aGl0ZS1zcGFjZTpwcmUtd3JhcAorfQordGFibGUuZGlmZiB0Ym9keSB7IAorCWZv
bnQtZmFtaWx5OkNvdXJpZXIsIG1vbm9zcGFjZQorfQordGFibGUuZGlmZiB0Ym9keSB0aCB7CisJ
Zm9udC1mYW1pbHk6dmVyZGFuYSxhcmlhbCwnQml0c3RyZWFtIFZlcmEgU2FucycsaGVsdmV0aWNh
LHNhbnMtc2VyaWY7CisJYmFja2dyb3VuZDojRUVEOworCWZvbnQtc2l6ZToxMXB4OworCWZvbnQt
d2VpZ2h0Om5vcm1hbDsKKwlib3JkZXI6MXB4IHNvbGlkICNCQkM7CisJY29sb3I6Izg4NjsKKwlw
YWRkaW5nOi4zZW0gLjVlbSAuMWVtIDJlbTsKKwl0ZXh0LWFsaWduOnJpZ2h0OworCXZlcnRpY2Fs
LWFsaWduOnRvcAorfQordGFibGUuZGlmZiB0aGVhZCB7CisJYm9yZGVyLWJvdHRvbToxcHggc29s
aWQgI0JCQzsKKwliYWNrZ3JvdW5kOiNFRkVGRUY7CisJZm9udC1mYW1pbHk6VmVyZGFuYQorfQor
dGFibGUuZGlmZiB0aGVhZCB0aC50ZXh0dGl0bGUgeworCXRleHQtYWxpZ246bGVmdAorfQordGFi
bGUuZGlmZiB0Ym9keSB0ZCB7CisJcGFkZGluZzowcHggLjRlbTsKKwlwYWRkaW5nLXRvcDouNGVt
OworCXZlcnRpY2FsLWFsaWduOnRvcDsKK30KK3RhYmxlLmRpZmYgLmVtcHR5IHsKKwliYWNrZ3Jv
dW5kLWNvbG9yOiNEREQ7Cit9Cit0YWJsZS5kaWZmIC5yZXBsYWNlIHsKKwliYWNrZ3JvdW5kLWNv
bG9yOiNGRDgKK30KK3RhYmxlLmRpZmYgLmRlbGV0ZSB7CisJYmFja2dyb3VuZC1jb2xvcjojRTk5
OworfQordGFibGUuZGlmZiAuc2tpcCB7CisJYmFja2dyb3VuZC1jb2xvcjojRUZFRkVGOworCWJv
cmRlcjoxcHggc29saWQgI0FBQTsKKwlib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNCQkM7Cit9Cit0
YWJsZS5kaWZmIC5pbnNlcnQgeworCWJhY2tncm91bmQtY29sb3I6IzlFOQorfQordGFibGUuZGlm
ZiB0aC5hdXRob3IgeworCXRleHQtYWxpZ246cmlnaHQ7CisJYm9yZGVyLXRvcDoxcHggc29saWQg
I0JCQzsKKwliYWNrZ3JvdW5kOiNFRkVGRUYKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMv
anNkaWZmbGliL2RpZmZ2aWV3LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZmdmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjI4YTM0ZDJiNmM0
ZTNiMzkzMjMyZDg2MGM4NGRmYmQ5ZmU1YWI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZmdmlldy5qcwpA
QCAtMCwwICsxLDE5NyBAQAorLyoKK1RoaXMgaXMgcGFydCBvZiBqc2RpZmZsaWIgdjEuMC4gPGh0
dHA6Ly9naXRodWIuY29tL2NlbWVyaWNrL2pzZGlmZmxpYj4KKworQ29weXJpZ2h0IDIwMDcgLSAy
MDExIENoYXMgRW1lcmljayA8Y2VtZXJpY2tAc25vd3RpZGUuY29tPi4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlCitwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKworICAgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YKKyAgICAgIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKworICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3QKKyAgICAgIG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgICAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ2hhcyBFbWVyaWNrIGBgQVMg
SVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIENoYXMgRW1lcmljayBPUgorQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKK0NPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKK1NFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KK0FOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKK05FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRgorQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK1RoZSB2aWV3cyBhbmQgY29uY2x1c2lvbnMgY29udGFpbmVkIGluIHRoZSBzb2Z0d2FyZSBh
bmQgZG9jdW1lbnRhdGlvbiBhcmUgdGhvc2Ugb2YgdGhlCithdXRob3JzIGFuZCBzaG91bGQgbm90
IGJlIGludGVycHJldGVkIGFzIHJlcHJlc2VudGluZyBvZmZpY2lhbCBwb2xpY2llcywgZWl0aGVy
IGV4cHJlc3NlZAorb3IgaW1wbGllZCwgb2YgQ2hhcyBFbWVyaWNrLgorKi8KK2RpZmZ2aWV3ID0g
eworCS8qKgorCSAqIEJ1aWxkcyBhbmQgcmV0dXJucyBhIHZpc3VhbCBkaWZmIHZpZXcuICBUaGUg
c2luZ2xlIHBhcmFtZXRlciwgYHBhcmFtcycsIHNob3VsZCBjb250YWluCisJICogdGhlIGZvbGxv
d2luZyB2YWx1ZXM6CisJICoKKwkgKiAtIGJhc2VUZXh0TGluZXM6IHRoZSBhcnJheSBvZiBzdHJp
bmdzIHRoYXQgd2FzIHVzZWQgYXMgdGhlIGJhc2UgdGV4dCBpbnB1dCB0byBTZXF1ZW5jZU1hdGNo
ZXIKKwkgKiAtIG5ld1RleHRMaW5lczogdGhlIGFycmF5IG9mIHN0cmluZ3MgdGhhdCB3YXMgdXNl
ZCBhcyB0aGUgbmV3IHRleHQgaW5wdXQgdG8gU2VxdWVuY2VNYXRjaGVyCisJICogLSBvcGNvZGVz
OiB0aGUgYXJyYXkgb2YgYXJyYXlzIHJldHVybmVkIGJ5IFNlcXVlbmNlTWF0Y2hlci5nZXRfb3Bj
b2RlcygpCisJICogLSBiYXNlVGV4dE5hbWU6IHRoZSB0aXRsZSB0byBiZSBkaXNwbGF5ZWQgYWJv
dmUgdGhlIGJhc2UgdGV4dCBsaXN0aW5nIGluIHRoZSBkaWZmIHZpZXc7IGRlZmF1bHRzCisJICoJ
ICAgdG8gIkJhc2UgVGV4dCIKKwkgKiAtIG5ld1RleHROYW1lOiB0aGUgdGl0bGUgdG8gYmUgZGlz
cGxheWVkIGFib3ZlIHRoZSBuZXcgdGV4dCBsaXN0aW5nIGluIHRoZSBkaWZmIHZpZXc7IGRlZmF1
bHRzCisJICoJICAgdG8gIk5ldyBUZXh0IgorCSAqIC0gY29udGV4dFNpemU6IHRoZSBudW1iZXIg
b2YgbGluZXMgb2YgY29udGV4dCB0byBzaG93IGFyb3VuZCBkaWZmZXJlbmNlczsgYnkgZGVmYXVs
dCwgYWxsIGxpbmVzCisJICoJICAgYXJlIHNob3duCisJICogLSB2aWV3VHlwZTogaWYgMCwgYSBz
aWRlLWJ5LXNpZGUgZGlmZiB2aWV3IGlzIGdlbmVyYXRlZCAoZGVmYXVsdCk7IGlmIDEsIGFuIGlu
bGluZSBkaWZmIHZpZXcgaXMKKwkgKgkgICBnZW5lcmF0ZWQKKwkgKi8KKwlidWlsZFZpZXc6IGZ1
bmN0aW9uIChwYXJhbXMpIHsKKwkJdmFyIGJhc2VUZXh0TGluZXMgPSBwYXJhbXMuYmFzZVRleHRM
aW5lczsKKwkJdmFyIG5ld1RleHRMaW5lcyA9IHBhcmFtcy5uZXdUZXh0TGluZXM7CisJCXZhciBv
cGNvZGVzID0gcGFyYW1zLm9wY29kZXM7CisJCXZhciBiYXNlVGV4dE5hbWUgPSBwYXJhbXMuYmFz
ZVRleHROYW1lID8gcGFyYW1zLmJhc2VUZXh0TmFtZSA6ICJCYXNlIFRleHQiOworCQl2YXIgbmV3
VGV4dE5hbWUgPSBwYXJhbXMubmV3VGV4dE5hbWUgPyBwYXJhbXMubmV3VGV4dE5hbWUgOiAiTmV3
IFRleHQiOworCQl2YXIgY29udGV4dFNpemUgPSBwYXJhbXMuY29udGV4dFNpemU7CisJCXZhciBp
bmxpbmUgPSAocGFyYW1zLnZpZXdUeXBlID09IDAgfHwgcGFyYW1zLnZpZXdUeXBlID09IDEpID8g
cGFyYW1zLnZpZXdUeXBlIDogMDsKKworCQlpZiAoYmFzZVRleHRMaW5lcyA9PSBudWxsKQorCQkJ
dGhyb3cgIkNhbm5vdCBidWlsZCBkaWZmIHZpZXc7IGJhc2VUZXh0TGluZXMgaXMgbm90IGRlZmlu
ZWQuIjsKKwkJaWYgKG5ld1RleHRMaW5lcyA9PSBudWxsKQorCQkJdGhyb3cgIkNhbm5vdCBidWls
ZCBkaWZmIHZpZXc7IG5ld1RleHRMaW5lcyBpcyBub3QgZGVmaW5lZC4iOworCQlpZiAoIW9wY29k
ZXMpCisJCQl0aHJvdyAiQ2Fubm8gYnVpbGQgZGlmZiB2aWV3OyBvcGNvZGVzIGlzIG5vdCBkZWZp
bmVkLiI7CisJCQorCQlmdW5jdGlvbiBjZWx0IChuYW1lLCBjbGF6eikgeworCQkJdmFyIGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KG5hbWUpOworCQkJZS5jbGFzc05hbWUgPSBjbGF6ejsKKwkJ
CXJldHVybiBlOworCQl9CisJCQorCQlmdW5jdGlvbiB0ZWx0IChuYW1lLCB0ZXh0KSB7CisJCQl2
YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSk7CisJCQllLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpKTsKKwkJCXJldHVybiBlOworCQl9CisJCQorCQlm
dW5jdGlvbiBjdGVsdCAobmFtZSwgY2xhenosIHRleHQpIHsKKwkJCXZhciBlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudChuYW1lKTsKKwkJCWUuY2xhc3NOYW1lID0gY2xheno7CisJCQllLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpKTsKKwkJCXJldHVybiBlOworCQl9
CisJCisJCXZhciB0ZGF0YSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoZWFkIik7CisJCXZh
ciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKwkJdGRhdGEuYXBwZW5kQ2hp
bGQobm9kZSk7CisJCWlmIChpbmxpbmUpIHsKKwkJCW5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidGgiKSk7CisJCQlub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInRoIikpOworCQkJbm9kZS5hcHBlbmRDaGlsZChjdGVsdCgidGgiLCAidGV4dHRp
dGxlIiwgYmFzZVRleHROYW1lICsgIiB2cy4gIiArIG5ld1RleHROYW1lKSk7CisJCX0gZWxzZSB7
CisJCQlub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoIikpOworCQkJ
bm9kZS5hcHBlbmRDaGlsZChjdGVsdCgidGgiLCAidGV4dHRpdGxlIiwgYmFzZVRleHROYW1lKSk7
CisJCQlub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoIikpOworCQkJ
bm9kZS5hcHBlbmRDaGlsZChjdGVsdCgidGgiLCAidGV4dHRpdGxlIiwgbmV3VGV4dE5hbWUpKTsK
KwkJfQorCQl0ZGF0YSA9IFt0ZGF0YV07CisJCQorCQl2YXIgcm93cyA9IFtdOworCQl2YXIgbm9k
ZTI7CisJCQorCQkvKioKKwkJICogQWRkcyB0d28gY2VsbHMgdG8gdGhlIGdpdmVuIHJvdzsgaWYg
dGhlIGdpdmVuIHJvdyBjb3JyZXNwb25kcyB0byBhIHJlYWwKKwkJICogbGluZSBudW1iZXIgKGJh
c2VkIG9uIHRoZSBsaW5lIGluZGV4IHRpZHggYW5kIHRoZSBlbmRwb2ludCBvZiB0aGUgCisJCSAq
IHJhbmdlIGluIHF1ZXN0aW9uIHRlbmQpLCB0aGVuIHRoZSBjZWxscyB3aWxsIGNvbnRhaW4gdGhl
IGxpbmUgbnVtYmVyCisJCSAqIGFuZCB0aGUgbGluZSBvZiB0ZXh0IGZyb20gdGV4dExpbmVzIGF0
IHBvc2l0aW9uIHRpZHggKHdpdGggdGhlIGNsYXNzIG9mCisJCSAqIHRoZSBzZWNvbmQgY2VsbCBz
ZXQgdG8gdGhlIG5hbWUgb2YgdGhlIGNoYW5nZSByZXByZXNlbnRlZCksIGFuZCB0aWR4ICsgMSB3
aWxsCisJCSAqIGJlIHJldHVybmVkLgkgT3RoZXJ3aXNlLCB0aWR4IGlzIHJldHVybmVkLCBhbmQg
dHdvIGVtcHR5IGNlbGxzIGFyZSBhZGRlZAorCQkgKiB0byB0aGUgZ2l2ZW4gcm93LgorCQkgKi8K
KwkJZnVuY3Rpb24gYWRkQ2VsbHMgKHJvdywgdGlkeCwgdGVuZCwgdGV4dExpbmVzLCBjaGFuZ2Up
IHsKKwkJCWlmICh0aWR4IDwgdGVuZCkgeworCQkJCXJvdy5hcHBlbmRDaGlsZCh0ZWx0KCJ0aCIs
ICh0aWR4ICsgMSkudG9TdHJpbmcoKSkpOworCQkJCXJvdy5hcHBlbmRDaGlsZChjdGVsdCgidGQi
LCBjaGFuZ2UsIHRleHRMaW5lc1t0aWR4XS5yZXBsYWNlKC9cdC9nLCAiXHUwMGEwXHUwMGEwXHUw
MGEwXHUwMGEwIikpKTsKKwkJCQlyZXR1cm4gdGlkeCArIDE7CisJCQl9IGVsc2UgeworCQkJCXJv
dy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpKTsKKwkJCQlyb3cuYXBw
ZW5kQ2hpbGQoY2VsdCgidGQiLCAiZW1wdHkiKSk7CisJCQkJcmV0dXJuIHRpZHg7CisJCQl9CisJ
CX0KKwkJCisJCWZ1bmN0aW9uIGFkZENlbGxzSW5saW5lIChyb3csIHRpZHgsIHRpZHgyLCB0ZXh0
TGluZXMsIGNoYW5nZSkgeworCQkJcm93LmFwcGVuZENoaWxkKHRlbHQoInRoIiwgdGlkeCA9PSBu
dWxsID8gIiIgOiAodGlkeCArIDEpLnRvU3RyaW5nKCkpKTsKKwkJCXJvdy5hcHBlbmRDaGlsZCh0
ZWx0KCJ0aCIsIHRpZHgyID09IG51bGwgPyAiIiA6ICh0aWR4MiArIDEpLnRvU3RyaW5nKCkpKTsK
KwkJCXJvdy5hcHBlbmRDaGlsZChjdGVsdCgidGQiLCBjaGFuZ2UsIHRleHRMaW5lc1t0aWR4ICE9
IG51bGwgPyB0aWR4IDogdGlkeDJdLnJlcGxhY2UoL1x0L2csICJcdTAwYTBcdTAwYTBcdTAwYTBc
dTAwYTAiKSkpOworCQl9CisJCQorCQlmb3IgKHZhciBpZHggPSAwOyBpZHggPCBvcGNvZGVzLmxl
bmd0aDsgaWR4KyspIHsKKwkJCWNvZGUgPSBvcGNvZGVzW2lkeF07CisJCQljaGFuZ2UgPSBjb2Rl
WzBdOworCQkJdmFyIGIgPSBjb2RlWzFdOworCQkJdmFyIGJlID0gY29kZVsyXTsKKwkJCXZhciBu
ID0gY29kZVszXTsKKwkJCXZhciBuZSA9IGNvZGVbNF07CisJCQl2YXIgcm93Y250ID0gTWF0aC5t
YXgoYmUgLSBiLCBuZSAtIG4pOworCQkJdmFyIHRvcHJvd3MgPSBbXTsKKwkJCXZhciBib3Ryb3dz
ID0gW107CisJCQlmb3IgKHZhciBpID0gMDsgaSA8IHJvd2NudDsgaSsrKSB7CisJCQkJLy8ganVt
cCBhaGVhZCBpZiB3ZSd2ZSBhbHJlZHkgcHJvdmlkZWQgbGVhZGluZyBjb250ZXh0IG9yIGlmIHRo
aXMgaXMgdGhlIGZpcnN0IHJhbmdlCisJCQkJaWYgKGNvbnRleHRTaXplICYmIG9wY29kZXMubGVu
Z3RoID4gMSAmJiAoKGlkeCA+IDAgJiYgaSA9PSBjb250ZXh0U2l6ZSkgfHwgKGlkeCA9PSAwICYm
IGkgPT0gMCkpICYmIGNoYW5nZT09ImVxdWFsIikgeworCQkJCQl2YXIganVtcCA9IHJvd2NudCAt
ICgoaWR4ID09IDAgPyAxIDogMikgKiBjb250ZXh0U2l6ZSk7CisJCQkJCWlmIChqdW1wID4gMSkg
eworCQkJCQkJdG9wcm93cy5wdXNoKG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIp
KTsKKwkJCQkJCQorCQkJCQkJYiArPSBqdW1wOworCQkJCQkJbiArPSBqdW1wOworCQkJCQkJaSAr
PSBqdW1wIC0gMTsKKwkJCQkJCW5vZGUuYXBwZW5kQ2hpbGQodGVsdCgidGgiLCAiLi4uIikpOwor
CQkJCQkJaWYgKCFpbmxpbmUpIG5vZGUuYXBwZW5kQ2hpbGQoY3RlbHQoInRkIiwgInNraXAiLCAi
IikpOworCQkJCQkJbm9kZS5hcHBlbmRDaGlsZCh0ZWx0KCJ0aCIsICIuLi4iKSk7CisJCQkJCQlu
b2RlLmFwcGVuZENoaWxkKGN0ZWx0KCJ0ZCIsICJza2lwIiwgIiIpKTsKKwkJCQkJCQorCQkJCQkJ
Ly8gc2tpcCBsYXN0IGxpbmVzIGlmIHRoZXkncmUgYWxsIGVxdWFsCisJCQkJCQlpZiAoaWR4ICsg
MSA9PSBvcGNvZGVzLmxlbmd0aCkgeworCQkJCQkJCWJyZWFrOworCQkJCQkJfSBlbHNlIHsKKwkJ
CQkJCQljb250aW51ZTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCQkKKwkJCQl0b3Byb3dz
LnB1c2gobm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIikpOworCQkJCWlmIChpbmxp
bmUpIHsKKwkJCQkJaWYgKGNoYW5nZSA9PSAiaW5zZXJ0IikgeworCQkJCQkJYWRkQ2VsbHNJbmxp
bmUobm9kZSwgbnVsbCwgbisrLCBuZXdUZXh0TGluZXMsIGNoYW5nZSk7CisJCQkJCX0gZWxzZSBp
ZiAoY2hhbmdlID09ICJyZXBsYWNlIikgeworCQkJCQkJYm90cm93cy5wdXNoKG5vZGUyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKSk7CisJCQkJCQlpZiAoYiA8IGJlKSBhZGRDZWxsc0lu
bGluZShub2RlLCBiKyssIG51bGwsIGJhc2VUZXh0TGluZXMsICJkZWxldGUiKTsKKwkJCQkJCWlm
IChuIDwgbmUpIGFkZENlbGxzSW5saW5lKG5vZGUyLCBudWxsLCBuKyssIG5ld1RleHRMaW5lcywg
Imluc2VydCIpOworCQkJCQl9IGVsc2UgaWYgKGNoYW5nZSA9PSAiZGVsZXRlIikgeworCQkJCQkJ
YWRkQ2VsbHNJbmxpbmUobm9kZSwgYisrLCBudWxsLCBiYXNlVGV4dExpbmVzLCBjaGFuZ2UpOwor
CQkJCQl9IGVsc2UgeworCQkJCQkJLy8gZXF1YWwKKwkJCQkJCWFkZENlbGxzSW5saW5lKG5vZGUs
IGIrKywgbisrLCBiYXNlVGV4dExpbmVzLCBjaGFuZ2UpOworCQkJCQl9CisJCQkJfSBlbHNlIHsK
KwkJCQkJYiA9IGFkZENlbGxzKG5vZGUsIGIsIGJlLCBiYXNlVGV4dExpbmVzLCBjaGFuZ2UpOwor
CQkJCQluID0gYWRkQ2VsbHMobm9kZSwgbiwgbmUsIG5ld1RleHRMaW5lcywgY2hhbmdlKTsKKwkJ
CQl9CisJCQl9CisKKwkJCWZvciAodmFyIGkgPSAwOyBpIDwgdG9wcm93cy5sZW5ndGg7IGkrKykg
cm93cy5wdXNoKHRvcHJvd3NbaV0pOworCQkJZm9yICh2YXIgaSA9IDA7IGkgPCBib3Ryb3dzLmxl
bmd0aDsgaSsrKSByb3dzLnB1c2goYm90cm93c1tpXSk7CisJCX0KKwkJCisJCXJvd3MucHVzaChu
b2RlID0gY3RlbHQoInRoIiwgImF1dGhvciIsICJkaWZmIHZpZXcgZ2VuZXJhdGVkIGJ5ICIpKTsK
KwkJbm9kZS5zZXRBdHRyaWJ1dGUoImNvbHNwYW4iLCBpbmxpbmUgPyAzIDogNCk7CisJCW5vZGUu
YXBwZW5kQ2hpbGQobm9kZTIgPSB0ZWx0KCJhIiwgImpzZGlmZmxpYiIpKTsKKwkJbm9kZTIuc2V0
QXR0cmlidXRlKCJocmVmIiwgImh0dHA6Ly9naXRodWIuY29tL2NlbWVyaWNrL2pzZGlmZmxpYiIp
OworCQkKKwkJdGRhdGEucHVzaChub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHki
KSk7CisJCWZvciAodmFyIGlkeCBpbiByb3dzKSBub2RlLmFwcGVuZENoaWxkKHJvd3NbaWR4XSk7
CisJCQorCQlub2RlID0gY2VsdCgidGFibGUiLCAiZGlmZiIgKyAoaW5saW5lID8gIiBpbmxpbmVk
aWZmIiA6ICIiKSk7CisJCWZvciAodmFyIGlkeCBpbiB0ZGF0YSkgbm9kZS5hcHBlbmRDaGlsZCh0
ZGF0YVtpZHhdKTsKKwkJcmV0dXJuIG5vZGU7CisJfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155297</attachid>
            <date>2012-07-30 08:27:56 -0700</date>
            <delta_ts>2012-08-13 05:29:11 -0700</delta_ts>
            <desc>[Patch] review comments addressed</desc>
            <filename>bug-92429-20120730192739.patch</filename>
            <type>text/plain</type>
            <size>42869</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjdkNjU5MTZhNzJlMmE4
ZDU1NDAzOTk3NDlmMDcxMDhkNmVhMmNhNS4uOTVmYWQ4Y2ZkMzU1YTQ3NzlhYWZkNDUyYWVhODJi
YWYxNGJjODJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA3LTI5ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEFkZCBzdXBwb3J0IGZvciBkZWJ1Z2dpbmcgSW5zcGVjdG9yIExheW91dFRlc3RzIHcvSW5z
cGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MjQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3RDb250cm9sbGVyIG5vdyBub3RpZmllcyBlbWJlZGRlciB1cG9uIGxvYWRlZC4KKworICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGVzdENvbnRyb2xsZXIuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGVzdENvbnRyb2xsZXIubG9hZENvbXBsZXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCk6CisgICAgICAgICgub25UZXN0RnJhbWV3b3JrTWVz
c2FnZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisKIDIw
MTItMDctMjcgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgV2ViIEluc3BlY3Rvcjogd29ya2VycyBpbnNwZWN0b3IgaXMgYnJva2VuIGluIHRoZSByZW1v
dGUgZGVidWdnaW5nIG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVGVzdENvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Rlc3RDb250cm9sbGVyLmpzCmluZGV4IDIwZTljNGE3NTBkZGUzMDMxNjJlYTg2YjQ3
YWYyNjllNzIzZGVlNzcuLjE4MWNhZjhlZjIwNzE0MmVmODM2ODVkNmVhNWE0ZTQzNDYyZGVkZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGVzdENvbnRy
b2xsZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXN0Q29u
dHJvbGxlci5qcwpAQCAtMzUsMTIgKzM1LDE2IEBAIFdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxl
ciA9IGZ1bmN0aW9uKCkKIHsKIH0KIAotV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLnByb3Rv
dHlwZSA9IHsKLSAgICBub3RpZnlEb25lOiBmdW5jdGlvbihjYWxsSWQsIHJlc3VsdCkKLSAgICB7
Ci0gICAgICAgIHZhciBtZXNzYWdlID0gdHlwZW9mIHJlc3VsdCA9PT0gInVuZGVmaW5lZCIgPyAi
XCI8dW5kZWZpbmVkPlwiIiA6IEpTT04uc3RyaW5naWZ5KHJlc3VsdCk7Ci0gICAgICAgIFJ1bnRp
bWVBZ2VudC5ldmFsdWF0ZSgiZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCgiICsgY2FsbElk
ICsgIiwgIiArIG1lc3NhZ2UgKyAiKSIsICJ0ZXN0Iik7Ci0gICAgfQorV2ViSW5zcGVjdG9yLlRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUgPSBmdW5jdGlvbihjYWxsSWQsIHJlc3VsdCkKK3sKKyAg
ICB2YXIgbWVzc2FnZSA9IHR5cGVvZiByZXN1bHQgPT09ICJ1bmRlZmluZWQiID8gIlwiPHVuZGVm
aW5lZD5cIiIgOiBKU09OLnN0cmluZ2lmeShyZXN1bHQpOworICAgIFJ1bnRpbWVBZ2VudC5ldmFs
dWF0ZSgiZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCgiICsgY2FsbElkICsgIiwgIiArIG1l
c3NhZ2UgKyAiKSIsICJ0ZXN0Iik7Cit9CisKK1dlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlci5s
b2FkQ29tcGxldGVkID0gZnVuY3Rpb24oKQoreworICAgIGlmICh3aW5kb3cub3BlbmVyKQorICAg
ICAgICB3aW5kb3cub3BlbmVyLnBvc3RNZXNzYWdlKCJmcm9udGVuZExvYWRlZCIsICIqIik7CiB9
CiAKIFdlYkluc3BlY3Rvci5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kID0gZnVuY3Rpb24oY2Fs
bElkLCBzY3JpcHQpCkBAIC00OSwxMCArNTMsMTkgQEAgV2ViSW5zcGVjdG9yLmV2YWx1YXRlRm9y
VGVzdEluRnJvbnRlbmQgPSBmdW5jdGlvbihjYWxsSWQsIHNjcmlwdCkKICAgICB7CiAgICAgICAg
IHRyeSB7CiAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gd2luZG93LmV2YWwoc2NyaXB0KTsKLSAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlci5wcm90b3R5cGUubm90aWZ5RG9u
ZShjYWxsSWQsIHJlc3VsdCk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZShjYWxsSWQsIHJlc3VsdCk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlci5wcm90b3R5cGUubm90aWZ5RG9u
ZShjYWxsSWQsIGUudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuVGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZShjYWxsSWQsIGUudG9TdHJpbmcoKSk7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgSW5zcGVjdG9yQmFja2VuZC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGludm9r
ZU1ldGhvZCk7Cit9OworCitpZiAod2luZG93Lm9wZW5lcikgeworICAgIGZ1bmN0aW9uIG9uVGVz
dEZyYW1ld29ya01lc3NhZ2UoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZlbnQuZGF0YS5j
b21tYW5kID09PSAiZXZhbHVhdGVJbldlYkluc3BlY3RvciIpCisgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChldmVudC5kYXRhLmNhbGxJZCwgZXZlbnQu
ZGF0YS5zY3JpcHQpOworICAgIH0KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2Fn
ZSIsIG9uVGVzdEZyYW1ld29ya01lc3NhZ2UsIHRydWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCAxNzZjMGM0ZDQ3NmNiOWZl
NzZhMDk5MWU2NzZmNjlhMzI4ZTBlN2E0Li45YzEwNTRjZTY0ZmY4YzI5YjA3M2JmYTM4M2JkOWRl
MjQ1OTE5NTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5qcwpAQCAtNTM5LDYgKzUzOSw3IEBAIFdlYkluc3BlY3Rvci5fZG9Mb2FkZWREb25l
V2l0aENhcGFiaWxpdGllcyA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLmRvbUFnZW50Ll9lbXVsYXRl
VG91Y2hFdmVudHNDaGFuZ2VkKCk7CiAKICAgICBXZWJJbnNwZWN0b3IuV29ya2VyTWFuYWdlci5s
b2FkQ29tcGxldGVkKCk7CisgICAgV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLmxvYWRDb21w
bGV0ZWQoKTsKICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxldGVkKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhZTdhMDk1ODU2YmYwYTYxYWJlYzRmMDc2YmRhMmJkOGZiNjE5MzkzLi5iNWQxYjU2
OGY1YjNlM2I1NjU5ODkwZDZmYTk1NmU3NDNhZGRjYjBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAK
KzIwMTItMDctMjkgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBvcnQgZm9yIGRlYnVnZ2luZyBJbnNwZWN0b3Ig
TGF5b3V0VGVzdHMgdy9JbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkyNDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQganNkaWZmbGliIChCU0QpIGZvciBzdGFuZGFsb25lIGluc3Bl
Y3RvciB0ZXN0IHJ1bm5pbmcgYW5kIGRpZmZpbmcuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9y
VGVzdCk6CisgICAgICAgICguKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNv
dXJjZXMvanNkaWZmbGliL1JFQURNRS5hc2NpaWRvYzogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZmbGliLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGRpZmZsaWIuZGVmYXVsdEp1bmtGdW5jdGlvbik6CisgICAgICAgIChkaWZmbGliLnN0
cmlwTGluZWJyZWFrcyk6CisgICAgICAgIChkaWZmbGliLnN0cmluZ0FzTGluZXMpOgorICAgICAg
ICAoZGlmZmxpYi5fX3JlZHVjZSk6CisgICAgICAgIChkaWZmbGliLl9fbnR1cGxlY29tcCk6Cisg
ICAgICAgIChkaWZmbGliLl9fY2FsY3VsYXRlX3JhdGlvKToKKyAgICAgICAgKGRpZmZsaWIuX19k
aWN0Z2V0KToKKyAgICAgICAgKGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyLnRoaXMuc2V0X3NlcXMp
OgorICAgICAgICAoZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIudGhpcy5zZXRfc2VxMSk6CisgICAg
ICAgIChkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLnNldF9zZXEyKToKKyAgICAgICAgKGRp
ZmZsaWIuU2VxdWVuY2VNYXRjaGVyLnRoaXMuX19jaGFpbl9iKToKKyAgICAgICAgKGRpZmZsaWIu
U2VxdWVuY2VNYXRjaGVyLnRoaXMuZmluZF9sb25nZXN0X21hdGNoKToKKyAgICAgICAgKGRpZmZs
aWIuU2VxdWVuY2VNYXRjaGVyLnRoaXMuZ2V0X21hdGNoaW5nX2Jsb2Nrcyk6CisgICAgICAgIChk
aWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLmdldF9vcGNvZGVzKToKKyAgICAgICAgKGRpZmZs
aWIuU2VxdWVuY2VNYXRjaGVyLnRoaXMuZ2V0X2dyb3VwZWRfb3Bjb2Rlcyk6CisgICAgICAgIChk
aWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLnF1aWNrX3JhdGlvKToKKyAgICAgICAgKGRpZmZs
aWIuU2VxdWVuY2VNYXRjaGVyLnRoaXMucmVhbF9xdWlja19yYXRpbyk6CisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZmdmlldy5jc3M6IEFkZGVk
LgorICAgICAgICAodGFibGUuZGlmZik6CisgICAgICAgICh0YWJsZS5kaWZmIHRib2R5KToKKyAg
ICAgICAgKHRhYmxlLmRpZmYgdGJvZHkgdGgpOgorICAgICAgICAodGFibGUuZGlmZiB0aGVhZCk6
CisgICAgICAgICh0YWJsZS5kaWZmIHRoZWFkIHRoLnRleHR0aXRsZSk6CisgICAgICAgICh0YWJs
ZS5kaWZmIHRib2R5IHRkKToKKyAgICAgICAgKHRhYmxlLmRpZmYgLmVtcHR5KToKKyAgICAgICAg
KHRhYmxlLmRpZmYgLnJlcGxhY2UpOgorICAgICAgICAodGFibGUuZGlmZiAuZGVsZXRlKToKKyAg
ICAgICAgKHRhYmxlLmRpZmYgLnNraXApOgorICAgICAgICAodGFibGUuZGlmZiAuaW5zZXJ0KToK
KyAgICAgICAgKHRhYmxlLmRpZmYgdGguYXV0aG9yKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9yZXNvdXJjZXMvanNkaWZmbGliL2RpZmZ2aWV3LmpzOiBBZGRlZC4KKyAgICAgICAg
KGRpZmZ2aWV3LmJ1aWxkVmlldy5jZWx0KToKKyAgICAgICAgKGRpZmZ2aWV3LmJ1aWxkVmlldy50
ZWx0KToKKyAgICAgICAgKGRpZmZ2aWV3LmJ1aWxkVmlldy5jdGVsdCk6CisgICAgICAgIChkaWZm
dmlldy5idWlsZFZpZXcuYWRkQ2VsbHMpOgorICAgICAgICAoZGlmZnZpZXcuYnVpbGRWaWV3LmFk
ZENlbGxzSW5saW5lKToKKyAgICAgICAgKGRpZmZ2aWV3LmJ1aWxkVmlldyk6CisKIDIwMTItMDct
MjUgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTExNApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwppbmRleCA5NjEzMTBkZTk1ODM0
NmI3YzIxNGMyZDkxYzEzMTYzOWY0ZDA3Nzg2Li43NjJlZDFlOWY1OWRmYTVmODE5NjVmYTY5Nzlk
YWI3Njg1MzUyNWY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdC5qcwpAQCAtMzY5LDcgKzM2OSw3IEBAIEluc3BlY3RvclRlc3QudGV4
dENvbnRlbnRXaXRoTGluZUJyZWFrcyA9IGZ1bmN0aW9uKG5vZGUpCiAgICAgcmV0dXJuIGJ1ZmZl
cjsKIH0KIAotfTsKK307IC8vIGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdAogCiB2YXIgcnVuVGVz
dENhbGxJZCA9IDA7CiB2YXIgY29tcGxldGVUZXN0Q2FsbElkID0gMTsKQEAgLTUxNSwzICs1MTUs
OTYgQEAgZnVuY3Rpb24gY2xlYXJPdXRwdXQoKQogICAgICAgICBvdXRwdXRFbGVtZW50ID0gbnVs
bDsKICAgICB9CiB9CisKK2Z1bmN0aW9uIFN0YW5kYWxvbmVUZXN0UnVubmVyKCkKK3sKKyAgICB0
aGlzLl9wZW5kaW5nTWVzc2FnZXMgPSBbXTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
bWVzc2FnZSIsIHRoaXMuX29uTWVzc2FnZS5iaW5kKHRoaXMpLCB0cnVlKTsKKyAgICB0aGlzLl9p
bnNwZWN0b3JXaW5kb3cgPSB3aW5kb3cub3BlbigiaHR0cDovL2xvY2FsaG9zdDo4MDAwL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw/d3M9bG9jYWxob3N0
OjkyMjIvZGV2dG9vbHMvcGFnZS80XzEiLCB1bmRlZmluZWQsICJsb2NhdGlvbj0wIik7Cit9CisK
K1N0YW5kYWxvbmVUZXN0UnVubmVyLnByb3RvdHlwZSA9IHsKKyAgICBkdW1wQXNUZXh0OiBmdW5j
dGlvbigpCisgICAgeworICAgIH0sCisKKyAgICB3YWl0VW50aWxEb25lOiBmdW5jdGlvbigpCisg
ICAgeworICAgIH0sCisKKyAgICBjbG9zZVdlYkluc3BlY3RvcjogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5faW5zcGVjdG9yV2luZG93LmNsb3NlKCk7CisgICAgfSwKKworICAgIG5v
dGlmeURvbmU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBhY3R1YWwgPSBkb2N1bWVu
dC5ib2R5LmlubmVyVGV4dCArICJcbiI7CisgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dC5pbm5lckhUTUwgPSAiIjsKKworICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0
KCk7CisgICAgICAgIHZhciBocmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWY7CisgICAgICAgIHZh
ciBleHQgPSBocmVmLmxhc3RJbmRleE9mKCIuIik7CisgICAgICAgIHhoci5vcGVuKCJHRVQiLCBo
cmVmLnN1YnN0cmluZygwLCBleHQpICsgIi1leHBlY3RlZC50eHQiLCBmYWxzZSk7CisgICAgICAg
IHhoci5zZW5kKG51bGwpOworICAgICAgICB2YXIgZXhwZWN0ZWQgPSB4aHIucmVzcG9uc2VUZXh0
OworCisgICAgICAgIGNvbnN0IGJhc2VEaXIgPSAiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlcy9qc2RpZmZsaWIvIjsKKyAgICAgICAgdmFyIHN0eWxlc2hlZXQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7CisgICAgICAgIHN0eWxlc2hlZXQucmVsID0g
InN0eWxlc2hlZXQiOworICAgICAgICBzdHlsZXNoZWV0LnR5cGUgPSAidGV4dC9jc3MiOworICAg
ICAgICBzdHlsZXNoZWV0LmhyZWYgPSBiYXNlRGlyICsgImRpZmZ2aWV3LmNzcyI7CisgICAgICAg
IGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVzaGVldCk7CisKKyAgICAgICAgdmFyIHNj
cmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOworICAgICAgICBzY3JpcHQu
c3JjID0gYmFzZURpciArICJkaWZmbGliLmpzIjsKKyAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBl
bmRDaGlsZChzY3JpcHQpOworCisgICAgICAgIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInNjcmlwdCIpOworICAgICAgICBzY3JpcHQuc3JjID0gYmFzZURpciArICJkaWZmdmlldy5q
cyI7CisgICAgICAgIHNjcmlwdC5vbmxvYWQgPSB2aWV3ZXJMb2FkZWQ7CisgICAgICAgIGRvY3Vt
ZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKKworICAgICAgICBmdW5jdGlvbiB2aWV3ZXJM
b2FkZWQoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgYmFzZUxpbmVzID0gZGlmZmxpYi5z
dHJpbmdBc0xpbmVzKGV4cGVjdGVkKTsKKyAgICAgICAgICAgIHZhciBuZXdMaW5lcyA9ICBkaWZm
bGliLnN0cmluZ0FzTGluZXMoYWN0dWFsKTsKKyAgICAgICAgICAgIHZhciBzZXF1ZW5jZU1hdGNo
ZXIgPSBuZXcgZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIoYmFzZUxpbmVzLCBuZXdMaW5lcyk7Cisg
ICAgICAgICAgICB2YXIgZGlmZlZpZXcgPSBkaWZmdmlldy5idWlsZFZpZXcoeworICAgICAgICAg
ICAgICAgIGJhc2VUZXh0TGluZXM6IGJhc2VMaW5lcywKKyAgICAgICAgICAgICAgICBuZXdUZXh0
TGluZXM6IG5ld0xpbmVzLAorICAgICAgICAgICAgICAgIG9wY29kZXM6IHNlcXVlbmNlTWF0Y2hl
ci5nZXRfb3Bjb2RlcygpLAorICAgICAgICAgICAgICAgIGNvbnRleHRTaXplOiAzLAorICAgICAg
ICAgICAgICAgIHZpZXdUeXBlOiAxCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGlmZlZpZXcpOworICAgICAgICB9CisgICAgfSwKKworICAg
IGV2YWx1YXRlSW5XZWJJbnNwZWN0b3I6IGZ1bmN0aW9uKGNhbGxJZCwgc2NyaXB0KQorICAgIHsK
KyAgICAgICAgdmFyIG1lc3NhZ2UgPSB7Y29tbWFuZDogImV2YWx1YXRlSW5XZWJJbnNwZWN0b3Ii
LCBjYWxsSWQ6IGNhbGxJZCwgc2NyaXB0OiBzY3JpcHR9OworICAgICAgICBpZiAodGhpcy5faXNM
b2FkZWQpCisgICAgICAgICAgICB0aGlzLl9wb3N0TWVzc2FnZXMoW21lc3NhZ2VdKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fcGVuZGluZ01lc3NhZ2VzLnB1c2gobWVzc2FnZSk7
CisgICAgfSwKKworICAgIF9vbk1lc3NhZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgaWYgKGV2ZW50LmRhdGEgPT09ICJmcm9udGVuZExvYWRlZCIpIHsKKyAgICAgICAgICAgIHRo
aXMuX2lzTG9hZGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHRoaXMuX3Bvc3RNZXNzYWdlcyh0aGlz
Ll9wZW5kaW5nTWVzc2FnZXMpOworICAgICAgICAgICAgdGhpcy5fcGVuZGluZ01lc3NhZ2VzID0g
W107CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX3Bvc3RNZXNzYWdlczogZnVuY3Rpb24obWVz
c2FnZXMpCisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1lc3NhZ2VzLmxlbmd0
aDsgKytpKQorICAgICAgICAgICAgdGhpcy5faW5zcGVjdG9yV2luZG93LnBvc3RNZXNzYWdlKG1l
c3NhZ2VzW2ldLCAiKiIpOworICAgIH0KK30KKworaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB3aW5kb3cudGVzdFJ1bm5lciA9IG5ldyBTdGFuZGFsb25lVGVzdFJ1bm5lcigpOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9qc2RpZmZsaWIvUkVBRE1FLmFzY2lpZG9jIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9SRUFETUUuYXNjaWlk
b2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGY3ZjdhYTllM2M4ZmJiNjU3YjBlYTQ0Y2UzN2MyMTQxYWE4NzNmYQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291
cmNlcy9qc2RpZmZsaWIvUkVBRE1FLmFzY2lpZG9jCkBAIC0wLDAgKzEsMTczIEBACis9PSBqc2Rp
ZmZsaWIgLSBBIEphdmFzY3JpcHQgdmlzdWFsIGRpZmYgdG9vbCAmIGxpYnJhcnkKKworKiA8PGlu
dHJvLEludHJvZHVjdGlvbj4+CisqIDw8b3ZlcnZpZXcsT3ZlcnZpZXc+PgorKiA8PHB5dGhvbi1p
bnRlcm9wLFB5dGhvbiBJbnRlcm9wZXJhYmlsaXR5Pj4KKyogPDxkZW1vLERlbW8gJiBFeGFtcGxl
cz4+CisqKiA8PGRpZmYtanMsRGlmZmluZyB1c2luZyBKYXZhc2NyaXB0Pj4KKyoqIDw8ZGlmZi1w
eXRob24sRGlmZmluZyB1c2luZyBQeXRob24+PgorKiA8PHN0YXR1cyxGdXR1cmUgRGlyZWN0aW9u
cyAvIFN0YXR1cz4+CisqIDw8bGljZW5zZSxMaWNlbnNlPj4KKyogPDxkb3dubG9hZHMsRG93bmxv
YWRzPj4KKyogPDxoaXN0b3J5LFJlbGVhc2UgSGlzdG9yeT4+CisKK1tbaW50cm9dXQorPT0gSW50
cm9kdWN0aW9uCisKK2h0dHA6Ly9jZW1lcmljay5jb21bSV0gbmVlZGVkIGEgZ29vZCBpbi1icm93
c2VyIHZpc3VhbCBkaWZmIHRvb2wsIGFuZCBjb3VsZG4ndCBmaW5kIGFueXRoaW5nIHN1aXRhYmxl
LCBzbyBJIGJ1aWx0ICpqc2RpZmZsaWIqIGluIEZlYiAyMDA3IGFuZCBvcGVuLXNvdXJjZWQgaXQg
c29vbiB0aGVyZWFmdGVyLiAgSXQncyBhcHBhcmVudGx5IGJlZW4gdXNlZCBhIGZhaXIgYml0IHNp
bmNlIHRoZW4uICBNYXliZSB5b3UnbGwgZmluZCBpdCB1c2VmdWwuCisKK1tbb3ZlcnZpZXddXQor
PT0gT3ZlcnZpZXcKKworanNkaWZmbGliIGlzIGEgSmF2YXNjcmlwdCBsaWJyYXJ5IHRoYXQgcHJv
dmlkZXM6CisKKy4gYSBwYXJ0aWFsIHJlaW1wbGVtZW50YXRpb24gb2YgUHl0aG9uJ3MgZGlmZmxp
YiBtb2R1bGUgKHNwZWNpZmljYWxseSwgdGhlIFNlcXVlbmNlTWF0Y2hlciBjbGFzcykKKy4gYSB2
aXN1YWwgZGlmZiB2aWV3IGdlbmVyYXRvciwgdGhhdCBvZmZlcnMgc2lkZS1ieS1zaWRlIGFzIHdl
bGwgYXMgaW5saW5lIGZvcm1hdHRpbmcgb2YgZmlsZSBkYXRhCisKK1llcywgSSByaXBwZWQgb2Zm
IHRoZSBmb3JtYXR0aW5nIG9mIHRoZSBkaWZmIHZpZXcgZnJvbSB0aGUgVHJhYyBwcm9qZWN0LiBJ
dCdzIGEgbmVhci1pZGVhbCBwcmVzZW50YXRpb24gb2YgZGlmZiBkYXRhIGFzIGZhciBhcyBJJ20g
Y29uY2VybmVkLiBJZiB5b3UgZG9uJ3QgYWdyZWUsIHlvdSBjYW4gaGFjayB0aGUgQ1NTIHRvIHlv
dXIgaGVhcnQncyBjb250ZW50LgorCitqc2RpZmZsaWIgZG9lcyBub3QgcmVxdWlyZSBqUXVlcnkg
b3IgYW55IG90aGVyIEphdmFzY3JpcHQgbGlicmFyeS4KKworW1tweXRob24taW50ZXJvcF1dCis9
PSBQeXRob24gSW50ZXJvcGVyYWJpbGl0eQorCitUaGUgbWFpbiByZWFzb24gd2h5IEkgcmVpbXBs
ZW1lbnRlZCBQeXRob24ncyBkaWZmbGliIG1vZHVsZSBpbiBKYXZhc2NyaXB0IHRvIHNlcnZlIGFz
IHRoZSBhbGdvcml0aG1pYyBiYXNpcyBmb3IganNkaWZmbGliIHdhcyB0aGF0IEkgZGlkbid0IHdh
bnQgdG8gbWVzcyB3aXRoIHRoZSBhY3R1YWwgZGlmZiBhbGdvcml0aG0gLS0gSSB3YW50ZWQgdG8g
Y29uY2VudHJhdGUgb24gZ2V0dGluZyB0aGUgaW4tYnJvd3NlciB2aWV3IHJpZ2h0LiBIb3dldmVy
LCBiZWNhdXNlIGpzZGlmZmxpYidzIEFQSSBtYXRjaGVzIFB5dGhvbidzIGRpZmZsaWIncyBTZXF1
ZW5jZU1hdGNoZXIgY2xhc3MgaW4gaXRzIGVudGlyZXR5LCBpdCdzIHRyaXZpYWwgdG8gZG8gdGhl
IGFjdHVhbCBkaWZmaW5nIG9uIHRoZSBzZXJ2ZXItc2lkZSwgdXNpbmcgUHl0aG9uLCBhbmQgcGlw
ZSB0aGUgcmVzdWx0cyBvZiB0aGF0IGRpZmYgY2FsY3VsYXRpb24gdG8geW91ciBpbi1icm93c2Vy
IGRpZmYgdmlldy4gU28sIHlvdSBoYXZlIHRoZSBjaG9pY2Ugb2YgZG9pbmcgZXZlcnl0aGluZyBp
biBKYXZhc2NyaXB0IG9uIHRoZSBicm93c2VyLCBvciBmYWxsaW5nIGJhY2sgdG8gc2VydmVyLXNp
ZGUgZGlmZiBwcm9jZXNzaW5nIGlmIHlvdSBhcmUgZGlmZmluZyByZWFsbHkgbGFyZ2UgZmlsZXMu
CisKK01vc3Qgb2YgdGhlIHRpbWUsIHdlIGRvIHRoZSBsYXR0ZXIsIHNpbXBseSBiZWNhdXNlIHdo
aWxlIGpzZGlmZmxpYiBpcyBwcmV0dHkgZmFzdCBhbGwgYnkgaXRzZWxmLCBhbmQgaXMgdG90YWxs
eSB1c2FibGUgZm9yIGRpZmZpbmcgIm5vcm1hbCIgZmlsZXMgKGkuZS4gZmV3ZXIgdGhhbiAxMDBL
IGxpbmVzIG9yIHNvKSwgd2UgcmVndWxhcmx5IG5lZWQgdG8gZGlmZiBmaWxlcyB0aGF0IGFyZSAx
IG9yIDIgb3JkZXJzIG9mIG1hZ25pdHVkZSBsYXJnZXIgdGhhbiB0aGF0LiBGb3IgdGhhdCwgc2Vy
dmVyLXNpZGUgZGlmZmluZyBpcyBhIG5lY2Vzc2l0eS4KKworW1tkZW1vXV0KKz09IERlbW8gJiBF
eGFtcGxlcworCitZb3UgY2FuIGdpdmUganNkaWZmbGliIGEgdHJ5IHdpdGhvdXQgZG93bmxvYWRp
bmcgYW55dGhpbmcuIEp1c3QgY2xpY2sgdGhlIGxpbmsgYmVsb3csIHB1dCBzb21lIGNvbnRlbnQg
dG8gYmUgZGlmZmVkIGluIHRoZSB0d28gdGV4dGJveGVzLCBhbmQgZGlmZiBhd2F5LgorCitodHRw
Oi8vY2VtZXJpY2suZ2l0aHViLmNvbS9qc2RpZmZsaWIvZGVtby5odG1sWypUcnkganNkaWZmbGli
Kl0KKworVGhhdCBwYWdlIGFsc28gY29udGFpbnMgYWxsIG9mIHRoZSBleGFtcGxlcyB5b3UnbGwg
bmVlZCB0byB1c2UganNkaWZmbGliIHlvdXJzZWxmLCBidXQgbGV0J3MgbG9vayBhdCB0aGVtIGhl
cmUsIGFueXdheS4KKworW1tkaWZmLWpzXV0KKz09PSBEaWZmaW5nIHVzaW5nIEphdmFzY3JpcHQK
KworSGVyZSdzIHRoZSBmdW5jdGlvbiBmcm9tIHRoZSBkZW1vIEhUTUwgZmlsZSBsaW5rZWQgdG8g
YWJvdmUgdGhhdCBkaWZmcyB0aGUgdHdvIHBpZWNlcyBvZiB0ZXh0IGVudGVyZWQgaW50byB0aGUg
dGV4dGJveGVzIG9uIHRoZSBwYWdlOgorCistLS0tCitmdW5jdGlvbiBkaWZmVXNpbmdKUygpIHsK
KyAgICAvLyBnZXQgdGhlIGJhc2VUZXh0IGFuZCBuZXdUZXh0IHZhbHVlcyBmcm9tIHRoZSB0d28g
dGV4dGJveGVzLCBhbmQgc3BsaXQgdGhlbSBpbnRvIGxpbmVzIAorICAgIHZhciBiYXNlID0gZGlm
ZmxpYi5zdHJpbmdBc0xpbmVzKCQoImJhc2VUZXh0IikudmFsdWUpOworICAgIHZhciBuZXd0eHQg
PSBkaWZmbGliLnN0cmluZ0FzTGluZXMoJCgibmV3VGV4dCIpLnZhbHVlKTsKKworICAgIC8vIGNy
ZWF0ZSBhIFNlcXVlbmNlTWF0Y2hlciBpbnN0YW5jZSB0aGF0IGRpZmZzIHRoZSB0d28gc2V0cyBv
ZiBsaW5lcworICAgIHZhciBzbSA9IG5ldyBkaWZmbGliLlNlcXVlbmNlTWF0Y2hlcihiYXNlLCBu
ZXd0eHQpOworCisgICAgLy8gZ2V0IHRoZSBvcGNvZGVzIGZyb20gdGhlIFNlcXVlbmNlTWF0Y2hl
ciBpbnN0YW5jZSAKKyAgICAvLyBvcGNvZGVzIGlzIGEgbGlzdCBvZiAzLXR1cGxlcyBkZXNjcmli
aW5nIHdoYXQgY2hhbmdlcyBzaG91bGQgYmUgbWFkZSB0byB0aGUgYmFzZSB0ZXh0IAorICAgIC8v
IGluIG9yZGVyIHRvIHlpZWxkIHRoZSBuZXcgdGV4dAorICAgIHZhciBvcGNvZGVzID0gc20uZ2V0
X29wY29kZXMoKTsKKyAgICB2YXIgZGlmZm91dHB1dGRpdiA9ICQoImRpZmZvdXRwdXQiKTsKKyAg
ICB3aGlsZSAoZGlmZm91dHB1dGRpdi5maXJzdENoaWxkKSBkaWZmb3V0cHV0ZGl2LnJlbW92ZUNo
aWxkKGRpZmZvdXRwdXRkaXYuZmlyc3RDaGlsZCk7CisgICAgdmFyIGNvbnRleHRTaXplID0gJCgi
Y29udGV4dFNpemUiKS52YWx1ZTsKKyAgICBjb250ZXh0U2l6ZSA9IGNvbnRleHRTaXplID8gY29u
dGV4dFNpemUgOiBudWxsOworCisgICAgLy8gYnVpbGQgdGhlIGRpZmYgdmlldyBhbmQgYWRkIGl0
IHRvIHRoZSBjdXJyZW50IERPTQorICAgIGRpZmZvdXRwdXRkaXYuYXBwZW5kQ2hpbGQoZGlmZnZp
ZXcuYnVpbGRWaWV3KHsKKyAgICAgICAgYmFzZVRleHRMaW5lczogYmFzZSwKKyAgICAgICAgbmV3
VGV4dExpbmVzOiBuZXd0eHQsCisgICAgICAgIG9wY29kZXM6IG9wY29kZXMsCisgICAgICAgIC8v
IHNldCB0aGUgZGlzcGxheSB0aXRsZXMgZm9yIGVhY2ggcmVzb3VyY2UgCisgICAgICAgIGJhc2VU
ZXh0TmFtZTogIkJhc2UgVGV4dCIsCisgICAgICAgIG5ld1RleHROYW1lOiAiTmV3IFRleHQiLAor
ICAgICAgICBjb250ZXh0U2l6ZTogY29udGV4dFNpemUsCisgICAgICAgIHZpZXdUeXBlOiAkKCJp
bmxpbmUiKS5jaGVja2VkID8gMSA6IDAKKyAgICB9KSk7CisKKyAgICAvLyBzY3JvbGwgZG93biB0
byB0aGUgZGlmZiB2aWV3IHdpbmRvdy4KKyAgICBsb2NhdGlvbiA9IHVybCArICIjZGlmZiI7Cit9
CistLS0tCisKK1RoZXJlJ3Mgbm90IGEgd2hvbGUgbG90IHRvIHNheSBhYm91dCB0aGlzIGZ1bmN0
aW9uLiBUaGUgbW9zdCBub3RhYmxlIGFzcGVjdCBvZiBpdCBpcyB0aGF0IHRoZSBgZGlmZnZpZXcu
YnVpbGRWaWV3KClgIGZ1bmN0aW9uIHRha2VzIGFuIG9iamVjdC9tYXAgd2l0aCBzcGVjaWZpYyBh
dHRyaWJ1dGVzLCByYXRoZXIgdGhhbiBhIGxpc3Qgb2YgYXJndW1lbnRzLiBUaG9zZSBhdHRyaWJ1
dGVzIGFyZSBtb3N0bHkgc2VsZi1leHBsYW5hdG9yeSwgYnV0IGFyZSBub25ldGhlbGVzcyBkZXNj
cmliZWQgaW4gZGV0YWlsIGluIGNvZGUgZG9jdW1lbnRhdGlvbiBpbiBkaWZmdmlldy5qcy4KKwor
W1tkaWZmLXB5dGhvbl1dCis9PT0gRGlmZmluZyB1c2luZyBQeXRob24KKworVGhpcyBpc24ndCBl
bmFibGVkIGluIHRoZSBkZW1vIGxpbmsgYWJvdmUsIGJ1dCBJJ3ZlIGluY2x1ZGVkIGl0IHRvIGV4
ZW1wbGlmeSBob3cgb25lIG1pZ2h0IHVzZSB0aGUgb3Bjb2RlIG91dHB1dCBmcm9tIGEgd2ViLWJh
c2VkIFB5dGhvbiBiYWNrZW5kIHRvIGRyaXZlIGpzZGlmZmxpYidzIGRpZmYgdmlldy4KKworLS0t
LQorZnVuY3Rpb24gZGlmZlVzaW5nUHl0aG9uKCkgeworICAgIGRvam8uaW8uYmluZCh7CisgICAg
ICAgIHVybDogIi9kaWZmL3Bvc3RZaWVsZERpZmZEYXRhIiwKKyAgICAgICAgbWV0aG9kOiAiUE9T
VCIsCisgICAgICAgIGNvbnRlbnQ6IHsKKyAgICAgICAgICAgIGJhc2VUZXh0OiAkKCJiYXNlVGV4
dCIpLnZhbHVlLAorICAgICAgICAgICAgbmV3VGV4dDogJCgibmV3VGV4dCIpLnZhbHVlLAorICAg
ICAgICAgICAgaWdub3JlV2hpdGVzcGFjZTogIlkiCisgICAgICAgIH0sCisgICAgICAgIGxvYWQ6
IGZ1bmN0aW9uICh0eXBlLCBkYXRhLCBldnQpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICAgICAgZGF0YSA9IGV2YWwoJygnICsgZGF0YSArICcpJyk7CisgICAgICAgICAgICAgICAg
d2hpbGUgKGRpZmZvdXRwdXRkaXYuZmlyc3RDaGlsZCkgZGlmZm91dHB1dGRpdi5yZW1vdmVDaGls
ZChkaWZmb3V0cHV0ZGl2LmZpcnN0Q2hpbGQpOworICAgICAgICAgICAgICAgICQoIm91dHB1dCIp
LmFwcGVuZENoaWxkKGRpZmZ2aWV3LmJ1aWxkVmlldyh7CisgICAgICAgICAgICAgICAgICAgIGJh
c2VUZXh0TGluZXM6IGRhdGEuYmFzZVRleHRMaW5lcywKKyAgICAgICAgICAgICAgICAgICAgbmV3
VGV4dExpbmVzOiBkYXRhLm5ld1RleHRMaW5lcywKKyAgICAgICAgICAgICAgICAgICAgb3Bjb2Rl
czogZGF0YS5vcGNvZGVzLAorICAgICAgICAgICAgICAgICAgICBiYXNlVGV4dE5hbWU6IGRhdGEu
YmFzZVRleHROYW1lLAorICAgICAgICAgICAgICAgICAgICBuZXdUZXh0TmFtZTogZGF0YS5uZXdU
ZXh0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dFNpemU6IGNvbnRleHRTaXplCisg
ICAgICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAg
ICAgICAgICBhbGVydCgiQW4gZXJyb3Igb2NjdXJyZWQgdXBkYXRpbmcgdGhlIGRpZmYgdmlldzpc
biIgKyBleC50b1N0cmluZygpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
ZXJyb3I6IGZ1bmN0aW9uICh0eXBlLCBldnQpIHsKKyAgICAgICAgICAgIGFsZXJ0KCdFcnJvciBv
Y2N1cnJlZCBnZXR0aW5nIGRpZmYgZGF0YS4gQ2hlY2sgdGhlIHNlcnZlciBsb2dzLicpOworICAg
ICAgICB9LAorICAgICAgICB0eXBlOiAndGV4dC9qYXZhc2NyaXB0JworICAgIH0pOworfQorLS0t
LQorCitbV0FSTklOR10KKz09PT0KK1RoaXMgZG9qbyBjb2RlIHdhcyB3cml0dGVuIGluIDIwMDcs
IGFuZCBJIGhhdmVuJ3QgX2xvb2tlZF8gYXQgZG9qbyBmb3IgeWVhcnMgbm93LiAgSW4gYW55IGNh
c2UsIHlvdSBzaG91bGQgYmUgYWJsZSB0byBncm9rIHdoYXQncyBnb2luZyBvbi4KKz09PT0KKwor
QXMgeW91IGNhbiBzZWUsIEknbSBwYXJ0aWFsIHRvIHVzaW5nIGRvam8gZm9yIGFqYXh5IHN0dWZm
LiBBbGwgdGhhdCBpcyBoYXBwZW5pbmcgaGVyZSBpcyB0aGUgYmFzZSBhbmQgbmV3IHRleHQgaXMg
YmVpbmcgUE9TVGVkIHRvIGEgUHl0aG9uIHNlcnZlci1zaWRlIHByb2Nlc3MgKHdlIGxpa2UgcHls
b25zLCBidXQgeW91IGNvdWxkIGp1c3QgYXMgZWFzaWx5IHVzZSBhIHNpbXBsZSBQeXRob24gc2Ny
aXB0IGFzIGEgY2dpKS4gVGhhdCBwcm9jZXNzIHRoZW4gbmVlZHMgdG8gZGlmZiB0aGUgcHJvdmlk
ZWQgdGV4dCB1c2luZyBhbiBpbnN0YW5jZSBvZiBQeXRob24ncyBkaWZmbGliLlNlcXVlbmNlTWF0
Y2hlciBjbGFzcywgYW5kIHJldHVybiB0aGUgb3Bjb2RlcyBmcm9tIHRoYXQgU2VxdWVuY2VNYXRj
aGVyIGluc3RhbmNlIHRvIHRoZSBicm93c2VyIChpbiB0aGlzIGNhc2UsIHVzaW5nIEpTT04gc2Vy
aWFsaXphdGlvbikuIEluIHRoZSBpbnRlcmVzdCBvZiBjb21wbGV0ZW5lc3MsIGhlcmUncyB0aGUg
Y29udHJvbGxlciBhY3Rpb24gZnJvbSBvdXIgcHlsb25zIGFwcGxpY2F0aW9uIHRoYXQgZG9lcyB0
aGlzIChkb24ndCB0cnkgdG8gbWF0Y2ggdXAgdGhlIHBhcmFtZXRlcnMgc2hvd24gYmVsb3cgd2l0
aCB0aGUgUE9TVCBwYXJhbWV0ZXJzIHNob3duIGluIHRoZSBKYXZhc2NyaXB0IGZ1bmN0aW9uIGFi
b3ZlOyB0aGUgbGF0dGVyIGlzIG9ubHkgaGVyZSBhcyBhbiBleGFtcGxlKToKKworLS0tLQorQGpz
b25pZnkKK2RlZiBkaWZmIChzZWxmLCBiYXNlVGV4dCwgbmV3VGV4dCwgYmFzZVRleHROYW1lPSJC
YXNlIFRleHQiLCBuZXdUZXh0TmFtZT0iTmV3IFRleHQiKToKKyAgICBvcGNvZGVzID0gU2VxdWVu
Y2VNYXRjaGVyKGlzanVuaywgYmFzZVRleHQsIG5ld1RleHQpLmdldF9vcGNvZGVzKCkKKyAgICBy
ZXR1cm4gZGljdChiYXNlVGV4dExpbmVzPWJhc2VUZXh0LCBuZXdUZXh0TGluZXM9bmV3VGV4dCwg
b3Bjb2Rlcz1vcGNvZGVzLAorICAgICAgICAgICAgICAgIGJhc2VUZXh0TmFtZT1iYXNlVGV4dE5h
bWUsIG5ld1RleHROYW1lPW5ld1RleHROYW1lKQorLS0tLQorCitbW3N0YXR1c11dCis9PSBGdXR1
cmUgRGlyZWN0aW9ucworCitUaGUgdG9wIHByaW9yaXRpZXMgd291bGQgYmUgdG8gaW1wbGVtZW50
IHRoZSBpZ25vcmluZyBvZiBlbXB0eSBsaW5lcywgYW5kIHRoZSBpbmRpY2F0aW9uIG9mIGRpZmZz
IGF0IHRoZSBjaGFyYWN0ZXIgbGV2ZWwgd2l0aCBzdWItaGlnaGxpZ2h0aW5nIChzaW1pbGFyIHRv
IHdoYXQgVHJhYydzIGRpZmYgdmlldyBkb2VzKS4KKworSSdkIGFsc28gbGlrZSB0byBzZWUgdGhl
IGBkaWZmbGliLlNlcXVlbmNlTWF0Y2hlcmAgcmVpbXBsZW1lbnRhdGlvbiBnYWluIHNvbWUgbW9y
ZSBzcGVlZCAtLSBpdCdzIHZpcnR1YWxseSBhIGxpbmUtYnktbGluZSB0cmFuc2xhdGlvbiBmcm9t
IHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24sIHNvIHRoZXJlJ3MgcGxlbnR5IHRoYXQgY291bGQg
YmUgZG9uZSB0byBtYWtlIGl0IG1vcmUgcGVyZm9ybWFudCBpbiBKYXZhc2NyaXB0LiBIb3dldmVy
LCB0aGF0IHdvdWxkIG1lYW4gbWFraW5nIHRoZSByZWltcGxlbWVudGF0aW9uIGRpdmVyZ2UgZXZl
biBtb3JlIGZyb20gdGhlICJyZWZlcmVuY2UiIFB5dGhvbiBpbXBsZW1lbnRhdGlvbi4gR2l2ZW4g
dGhhdCBJIGRvbid0IHJlYWxseSB3YW50IHRvIHdvcnJ5IGFib3V0IHRoZSBhbGdvcml0aG0sIHRo
YXQncyBub3QgYXBwZWFsaW5nLiBJJ2QgbXVjaCByYXRoZXIgdXNlIGEgc2VydmVyLXNpZGUgcHJv
Y2VzcyB3aGVuIHRoZSBpbi1icm93c2VyIGRpZmZpbmcgaXMgYSBsaXR0bGUgdG9vIHBva2V5Lgor
CitPdGhlciB0aGFuIHRoYXQsIEknbSBvcGVuIHRvIHN1Z2dlc3Rpb25zLgorCitbTk9URV0KKz09
PT0KK0knbSBubyBsb25nZXIgYWN0aXZlbHkgZGV2ZWxvcGluZyBqc2RpZmZsaWIuICBJdCdzIGJl
ZW4gc2VxdWVzdGVyZWQgKG1vc3RseSBvdXQgb2Ygc2ltcGxlIG5lZ2xlY3QpIHRvIG15IGNvbXBh
bnkncyBzZXJ2ZXJzIGZvciB0b28gbG9uZzsgbm93IHRoYXQgaXQncyBvbiBnaXRodWIsIEknbSBo
b3BpbmcgdGhhdCBtYW55IG9mIHRoZSBwZW9wbGUgdGhhdCBmaW5kIGl0IHVzZWZ1bCB3aWxsIHN1
Ym1pdCBwdWxsIHJlcXVlc3RzIHRvIGltcHJvdmUgdGhlIGxpYnJhcnkuICBJIHdpbGwgZG8gd2hh
dCBJIGNhbiB0byBjdXJhdGUgdGhhdCBwcm9jZXNzLgorPT09PQorCitbW2xpY2Vuc2VdXQorPT0g
TGljZW5zZQorCitqc2RpZmZsaWIgY2FycmllcyBhIEJTRCBsaWNlbnNlLiBBcyBzdWNoLCBpdCBt
YXkgYmUgdXNlZCBpbiBvdGhlciBwcm9kdWN0cyBvciBzZXJ2aWNlcyB3aXRoIGFwcHJvcHJpYXRl
IGF0dHJpYnV0aW9uIChpbmNsdWRpbmcgY29tbWVyY2lhbCBvZmZlcmluZ3MpLiBUaGUgbGljZW5z
ZSBpcyBwcmVwZW5kZWQgdG8gZWFjaCBvZiBqc2RpZmZsaWIncyBmaWxlcy4KKworW1tkb3dubG9h
ZHNdXQorPT0gRG93bmxvYWRzCisKK2pzZGlmZmxpYiBjb25zaXN0cyBvZiB0aHJlZSBmaWxlcyAt
LSB0d28gSmF2YXNjcmlwdCBmaWxlcywgYW5kIG9uZSBDU1MgZmlsZS4gV2h5IHR3byBKYXZhc2Ny
aXB0IGZpbGVzPyBCZWNhdXNlIEkgd2FudGVkIHRvIGtlZXAgdGhlIHJlaW1wbGVtZW50YXRpb24g
b2YgdGhlIHB5dGhvbiBkaWZmbGliLlNlcXVlbmNlTWF0Y2hlciBjbGFzcyBzZXBhcmF0ZSBmcm9t
IHRoZSBhY3R1YWwgdmlzdWFsIGRpZmYgdmlldyBnZW5lcmF0b3IuIEZlZWwgZnJlZSB0byBjb21i
aW5lIGFuZC9vciBvcHRpbWl6ZSB0aGVtIGluIHlvdXIgZGVwbG95bWVudCBlbnZpcm9ubWVudC4K
KworWW91IGNhbiBkb3dubG9hZCB0aGUgZmlsZXMgc2VwYXJhdGVseSBieSBuYXZpZ2F0aW5nIHRo
ZSBwcm9qZWN0IG9uIGdpdGh1YiwgeW91IGNhbiBjbG9uZSB0aGUgcmVwbywgb3IgeW91IGNhbiBk
b3dubG9hZCBhIHppcHBlZCBkaXN0cmlidXRpb24gdmlhIHRoZSAiRG93bmxvYWRzIiBidXR0b24g
YXQgdGhlIHRvcCBvZiB0aGlzIHByb2plY3QgcGFnZS4KKworW1toaXN0b3J5XV0KKz09IFJlbGVh
c2UgSGlzdG9yeQorCisqIDEuMS4wIChNYXkgMTgsIDIwMTEpOiBNb3ZlIHByb2plY3QgdG8gZ2l0
aHViOyBubyBjaGFuZ2VzIGluIGZ1bmN0aW9uYWxpdHkKKyogMS4wLjAgKEZlYnJ1YXJ5IDIyLCAy
MDA3KTogSW5pdGlhbCByZWxlYXNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMvanNkaWZmbGliL2RpZmZsaWIuanMgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvanNkaWZmbGliL2RpZmZsaWIuanMKbmV3IGZp
bGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGIyYzBlM2FjNGZkM2QxOWJmYWZjZWZjMmU0YzcwMWJhMGJhYTE5ZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9qc2Rp
ZmZsaWIvZGlmZmxpYi5qcwpAQCAtMCwwICsxLDQwNyBAQAorLyoqKgorVGhpcyBpcyBwYXJ0IG9m
IGpzZGlmZmxpYiB2MS4wLiA8aHR0cDovL3Nub3d0aWRlLmNvbS9qc2RpZmZsaWI+CisKK0NvcHly
aWdodCAoYykgMjAwNywgU25vd3RpZGUgSW5mb3JtYXRpY3MgU3lzdGVtcywgSW5jLgorQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKK2FyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKworCSogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQgbm90aWNlLCB0aGlzCisJCWxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorCSogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorCQl0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisJCWFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCSog
TmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgU25vd3RpZGUgSW5mb3JtYXRpY3MgU3lzdGVtcyBub3Ig
dGhlIG5hbWVzIG9mIGl0cworCQljb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisJCXNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCitPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVAorU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKK0lOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RAorVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUgorQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KK0NP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4KK0FOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICitEQU1B
R0UuCisqKiovCisvKiBBdXRob3I6IENoYXMgRW1lcmljayA8Y2VtZXJpY2tAc25vd3RpZGUuY29t
PiAqLworX193aGl0ZXNwYWNlID0geyIgIjp0cnVlLCAiXHQiOnRydWUsICJcbiI6dHJ1ZSwgIlxm
Ijp0cnVlLCAiXHIiOnRydWV9OworCitkaWZmbGliID0geworCWRlZmF1bHRKdW5rRnVuY3Rpb246
IGZ1bmN0aW9uIChjKSB7CisJCXJldHVybiBfX3doaXRlc3BhY2UuaGFzT3duUHJvcGVydHkoYyk7
CisJfSwKKwkKKwlzdHJpcExpbmVicmVha3M6IGZ1bmN0aW9uIChzdHIpIHsgcmV0dXJuIHN0ci5y
ZXBsYWNlKC9eW1xuXHJdKnxbXG5ccl0qJC9nLCAiIik7IH0sCisJCisJc3RyaW5nQXNMaW5lczog
ZnVuY3Rpb24gKHN0cikgeworCQl2YXIgbGZwb3MgPSBzdHIuaW5kZXhPZigiXG4iKTsKKwkJdmFy
IGNycG9zID0gc3RyLmluZGV4T2YoIlxyIik7CisJCXZhciBsaW5lYnJlYWsgPSAoKGxmcG9zID4g
LTEgJiYgY3Jwb3MgPiAtMSkgfHwgY3Jwb3MgPCAwKSA/ICJcbiIgOiAiXHIiOworCQkKKwkJdmFy
IGxpbmVzID0gc3RyLnNwbGl0KGxpbmVicmVhayk7CisJCWZvciAodmFyIGkgPSAwOyBpIDwgbGlu
ZXMubGVuZ3RoOyBpKyspIHsKKwkJCWxpbmVzW2ldID0gZGlmZmxpYi5zdHJpcExpbmVicmVha3Mo
bGluZXNbaV0pOworCQl9CisJCQorCQlyZXR1cm4gbGluZXM7CisJfSwKKwkKKwkvLyBpdGVyYXRp
b24tYmFzZWQgcmVkdWNlIGltcGxlbWVudGF0aW9uCisJX19yZWR1Y2U6IGZ1bmN0aW9uIChmdW5j
LCBsaXN0LCBpbml0aWFsKSB7CisJCWlmIChpbml0aWFsICE9IG51bGwpIHsKKwkJCXZhciB2YWx1
ZSA9IGluaXRpYWw7CisJCQl2YXIgaWR4ID0gMDsKKwkJfSBlbHNlIGlmIChsaXN0KSB7CisJCQl2
YXIgdmFsdWUgPSBsaXN0WzBdOworCQkJdmFyIGlkeCA9IDE7CisJCX0gZWxzZSB7CisJCQlyZXR1
cm4gbnVsbDsKKwkJfQorCQkKKwkJZm9yICg7IGlkeCA8IGxpc3QubGVuZ3RoOyBpZHgrKykgewor
CQkJdmFsdWUgPSBmdW5jKHZhbHVlLCBsaXN0W2lkeF0pOworCQl9CisJCQorCQlyZXR1cm4gdmFs
dWU7CisJfSwKKwkKKwkvLyBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBzb3J0aW5nIGxpc3RzIG9m
IG51bWVyaWMgdHVwbGVzCisJX19udHVwbGVjb21wOiBmdW5jdGlvbiAoYSwgYikgeworCQl2YXIg
bWxlbiA9IE1hdGgubWF4KGEubGVuZ3RoLCBiLmxlbmd0aCk7CisJCWZvciAodmFyIGkgPSAwOyBp
IDwgbWxlbjsgaSsrKSB7CisJCQlpZiAoYVtpXSA8IGJbaV0pIHJldHVybiAtMTsKKwkJCWlmIChh
W2ldID4gYltpXSkgcmV0dXJuIDE7CisJCX0KKwkJCisJCXJldHVybiBhLmxlbmd0aCA9PSBiLmxl
bmd0aCA/IDAgOiAoYS5sZW5ndGggPCBiLmxlbmd0aCA/IC0xIDogMSk7CisJfSwKKwkKKwlfX2Nh
bGN1bGF0ZV9yYXRpbzogZnVuY3Rpb24gKG1hdGNoZXMsIGxlbmd0aCkgeworCQlyZXR1cm4gbGVu
Z3RoID8gMi4wICogbWF0Y2hlcyAvIGxlbmd0aCA6IDEuMDsKKwl9LAorCQorCS8vIHJldHVybnMg
YSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdHJ1ZSBpZiBhIGtleSBwYXNzZWQgdG8gdGhlIHJldHVy
bmVkIGZ1bmN0aW9uCisJLy8gaXMgaW4gdGhlIGRpY3QgKGpzIG9iamVjdCkgcHJvdmlkZWQgdG8g
dGhpcyBmdW5jdGlvbjsgcmVwbGFjZXMgYmVpbmcgYWJsZSB0bworCS8vIGNhcnJ5IGFyb3VuZCBk
aWN0Lmhhc19rZXkgaW4gcHl0aG9uLi4uCisJX19pc2luZGljdDogZnVuY3Rpb24gKGRpY3QpIHsK
KwkJcmV0dXJuIGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIGRpY3QuaGFzT3duUHJvcGVydHkoa2V5
KTsgfTsKKwl9LAorCQorCS8vIHJlcGxhY2VtZW50IGZvciBweXRob24ncyBkaWN0LmdldCBmdW5j
dGlvbiAtLSBuZWVkIGVhc3kgZGVmYXVsdCB2YWx1ZXMKKwlfX2RpY3RnZXQ6IGZ1bmN0aW9uIChk
aWN0LCBrZXksIGRlZmF1bHRWYWx1ZSkgeworCQlyZXR1cm4gZGljdC5oYXNPd25Qcm9wZXJ0eShr
ZXkpID8gZGljdFtrZXldIDogZGVmYXVsdFZhbHVlOworCX0sCQorCQorCVNlcXVlbmNlTWF0Y2hl
cjogZnVuY3Rpb24gKGEsIGIsIGlzanVuaykgeworCQl0aGlzLnNldF9zZXFzID0gZnVuY3Rpb24g
KGEsIGIpIHsKKwkJCXRoaXMuc2V0X3NlcTEoYSk7CisJCQl0aGlzLnNldF9zZXEyKGIpOworCQl9
CisJCQorCQl0aGlzLnNldF9zZXExID0gZnVuY3Rpb24gKGEpIHsKKwkJCWlmIChhID09IHRoaXMu
YSkgcmV0dXJuOworCQkJdGhpcy5hID0gYTsKKwkJCXRoaXMubWF0Y2hpbmdfYmxvY2tzID0gdGhp
cy5vcGNvZGVzID0gbnVsbDsKKwkJfQorCQkKKwkJdGhpcy5zZXRfc2VxMiA9IGZ1bmN0aW9uIChi
KSB7CisJCQlpZiAoYiA9PSB0aGlzLmIpIHJldHVybjsKKwkJCXRoaXMuYiA9IGI7CisJCQl0aGlz
Lm1hdGNoaW5nX2Jsb2NrcyA9IHRoaXMub3Bjb2RlcyA9IHRoaXMuZnVsbGJjb3VudCA9IG51bGw7
CisJCQl0aGlzLl9fY2hhaW5fYigpOworCQl9CisJCQorCQl0aGlzLl9fY2hhaW5fYiA9IGZ1bmN0
aW9uICgpIHsKKwkJCXZhciBiID0gdGhpcy5iOworCQkJdmFyIG4gPSBiLmxlbmd0aDsKKwkJCXZh
ciBiMmogPSB0aGlzLmIyaiA9IHt9OworCQkJdmFyIHBvcHVsYXJkaWN0ID0ge307CisJCQlmb3Ig
KHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHsKKwkJCQl2YXIgZWx0ID0gYltpXTsKKwkJ
CQlpZiAoYjJqLmhhc093blByb3BlcnR5KGVsdCkpIHsKKwkJCQkJdmFyIGluZGljZXMgPSBiMmpb
ZWx0XTsKKwkJCQkJaWYgKG4gPj0gMjAwICYmIGluZGljZXMubGVuZ3RoICogMTAwID4gbikgewor
CQkJCQkJcG9wdWxhcmRpY3RbZWx0XSA9IDE7CisJCQkJCQlkZWxldGUgYjJqW2VsdF07CisJCQkJ
CX0gZWxzZSB7CisJCQkJCQlpbmRpY2VzLnB1c2goaSk7CisJCQkJCX0KKwkJCQl9IGVsc2Ugewor
CQkJCQliMmpbZWx0XSA9IFtpXTsKKwkJCQl9CisJCQl9CisJCisJCQlmb3IgKHZhciBlbHQgaW4g
cG9wdWxhcmRpY3QpIHsKKwkJCQlpZiAocG9wdWxhcmRpY3QuaGFzT3duUHJvcGVydHkoZWx0KSkg
eworCQkJCQlkZWxldGUgYjJqW2VsdF07CisJCQkJfQorCQkJfQorCQkJCisJCQl2YXIgaXNqdW5r
ID0gdGhpcy5pc2p1bms7CisJCQl2YXIganVua2RpY3QgPSB7fTsKKwkJCWlmIChpc2p1bmspIHsK
KwkJCQlmb3IgKHZhciBlbHQgaW4gcG9wdWxhcmRpY3QpIHsKKwkJCQkJaWYgKHBvcHVsYXJkaWN0
Lmhhc093blByb3BlcnR5KGVsdCkgJiYgaXNqdW5rKGVsdCkpIHsKKwkJCQkJCWp1bmtkaWN0W2Vs
dF0gPSAxOworCQkJCQkJZGVsZXRlIHBvcHVsYXJkaWN0W2VsdF07CisJCQkJCX0KKwkJCQl9CisJ
CQkJZm9yICh2YXIgZWx0IGluIGIyaikgeworCQkJCQlpZiAoYjJqLmhhc093blByb3BlcnR5KGVs
dCkgJiYgaXNqdW5rKGVsdCkpIHsKKwkJCQkJCWp1bmtkaWN0W2VsdF0gPSAxOworCQkJCQkJZGVs
ZXRlIGIyaltlbHRdOworCQkJCQl9CisJCQkJfQorCQkJfQorCQorCQkJdGhpcy5pc2JqdW5rID0g
ZGlmZmxpYi5fX2lzaW5kaWN0KGp1bmtkaWN0KTsKKwkJCXRoaXMuaXNicG9wdWxhciA9IGRpZmZs
aWIuX19pc2luZGljdChwb3B1bGFyZGljdCk7CisJCX0KKwkJCisJCXRoaXMuZmluZF9sb25nZXN0
X21hdGNoID0gZnVuY3Rpb24gKGFsbywgYWhpLCBibG8sIGJoaSkgeworCQkJdmFyIGEgPSB0aGlz
LmE7CisJCQl2YXIgYiA9IHRoaXMuYjsKKwkJCXZhciBiMmogPSB0aGlzLmIyajsKKwkJCXZhciBp
c2JqdW5rID0gdGhpcy5pc2JqdW5rOworCQkJdmFyIGJlc3RpID0gYWxvOworCQkJdmFyIGJlc3Rq
ID0gYmxvOworCQkJdmFyIGJlc3RzaXplID0gMDsKKwkJCXZhciBqID0gbnVsbDsKKwkKKwkJCXZh
ciBqMmxlbiA9IHt9OworCQkJdmFyIG5vdGhpbmcgPSBbXTsKKwkJCWZvciAodmFyIGkgPSBhbG87
IGkgPCBhaGk7IGkrKykgeworCQkJCXZhciBuZXdqMmxlbiA9IHt9OworCQkJCXZhciBqZGljdCA9
IGRpZmZsaWIuX19kaWN0Z2V0KGIyaiwgYVtpXSwgbm90aGluZyk7CisJCQkJZm9yICh2YXIgamtl
eSBpbiBqZGljdCkgeworCQkJCQlpZiAoamRpY3QuaGFzT3duUHJvcGVydHkoamtleSkpIHsKKwkJ
CQkJCWogPSBqZGljdFtqa2V5XTsKKwkJCQkJCWlmIChqIDwgYmxvKSBjb250aW51ZTsKKwkJCQkJ
CWlmIChqID49IGJoaSkgYnJlYWs7CisJCQkJCQluZXdqMmxlbltqXSA9IGsgPSBkaWZmbGliLl9f
ZGljdGdldChqMmxlbiwgaiAtIDEsIDApICsgMTsKKwkJCQkJCWlmIChrID4gYmVzdHNpemUpIHsK
KwkJCQkJCQliZXN0aSA9IGkgLSBrICsgMTsKKwkJCQkJCQliZXN0aiA9IGogLSBrICsgMTsKKwkJ
CQkJCQliZXN0c2l6ZSA9IGs7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQkJajJsZW4gPSBu
ZXdqMmxlbjsKKwkJCX0KKwkKKwkJCXdoaWxlIChiZXN0aSA+IGFsbyAmJiBiZXN0aiA+IGJsbyAm
JiAhaXNianVuayhiW2Jlc3RqIC0gMV0pICYmIGFbYmVzdGkgLSAxXSA9PSBiW2Jlc3RqIC0gMV0p
IHsKKwkJCQliZXN0aS0tOworCQkJCWJlc3RqLS07CisJCQkJYmVzdHNpemUrKzsKKwkJCX0KKwkJ
CQkKKwkJCXdoaWxlIChiZXN0aSArIGJlc3RzaXplIDwgYWhpICYmIGJlc3RqICsgYmVzdHNpemUg
PCBiaGkgJiYKKwkJCQkJIWlzYmp1bmsoYltiZXN0aiArIGJlc3RzaXplXSkgJiYKKwkJCQkJYVti
ZXN0aSArIGJlc3RzaXplXSA9PSBiW2Jlc3RqICsgYmVzdHNpemVdKSB7CisJCQkJYmVzdHNpemUr
KzsKKwkJCX0KKwkKKwkJCXdoaWxlIChiZXN0aSA+IGFsbyAmJiBiZXN0aiA+IGJsbyAmJiBpc2Jq
dW5rKGJbYmVzdGogLSAxXSkgJiYgYVtiZXN0aSAtIDFdID09IGJbYmVzdGogLSAxXSkgeworCQkJ
CWJlc3RpLS07CisJCQkJYmVzdGotLTsKKwkJCQliZXN0c2l6ZSsrOworCQkJfQorCQkJCisJCQl3
aGlsZSAoYmVzdGkgKyBiZXN0c2l6ZSA8IGFoaSAmJiBiZXN0aiArIGJlc3RzaXplIDwgYmhpICYm
IGlzYmp1bmsoYltiZXN0aiArIGJlc3RzaXplXSkgJiYKKwkJCQkJYVtiZXN0aSArIGJlc3RzaXpl
XSA9PSBiW2Jlc3RqICsgYmVzdHNpemVdKSB7CisJCQkJYmVzdHNpemUrKzsKKwkJCX0KKwkKKwkJ
CXJldHVybiBbYmVzdGksIGJlc3RqLCBiZXN0c2l6ZV07CisJCX0KKwkJCisJCXRoaXMuZ2V0X21h
dGNoaW5nX2Jsb2NrcyA9IGZ1bmN0aW9uICgpIHsKKwkJCWlmICh0aGlzLm1hdGNoaW5nX2Jsb2Nr
cyAhPSBudWxsKSByZXR1cm4gdGhpcy5tYXRjaGluZ19ibG9ja3M7CisJCQl2YXIgbGEgPSB0aGlz
LmEubGVuZ3RoOworCQkJdmFyIGxiID0gdGhpcy5iLmxlbmd0aDsKKwkKKwkJCXZhciBxdWV1ZSA9
IFtbMCwgbGEsIDAsIGxiXV07CisJCQl2YXIgbWF0Y2hpbmdfYmxvY2tzID0gW107CisJCQl2YXIg
YWxvLCBhaGksIGJsbywgYmhpLCBxaSwgaSwgaiwgaywgeDsKKwkJCXdoaWxlIChxdWV1ZS5sZW5n
dGgpIHsKKwkJCQlxaSA9IHF1ZXVlLnBvcCgpOworCQkJCWFsbyA9IHFpWzBdOworCQkJCWFoaSA9
IHFpWzFdOworCQkJCWJsbyA9IHFpWzJdOworCQkJCWJoaSA9IHFpWzNdOworCQkJCXggPSB0aGlz
LmZpbmRfbG9uZ2VzdF9tYXRjaChhbG8sIGFoaSwgYmxvLCBiaGkpOworCQkJCWkgPSB4WzBdOwor
CQkJCWogPSB4WzFdOworCQkJCWsgPSB4WzJdOworCQorCQkJCWlmIChrKSB7CisJCQkJCW1hdGNo
aW5nX2Jsb2Nrcy5wdXNoKHgpOworCQkJCQlpZiAoYWxvIDwgaSAmJiBibG8gPCBqKQorCQkJCQkJ
cXVldWUucHVzaChbYWxvLCBpLCBibG8sIGpdKTsKKwkJCQkJaWYgKGkrayA8IGFoaSAmJiBqK2sg
PCBiaGkpCisJCQkJCQlxdWV1ZS5wdXNoKFtpICsgaywgYWhpLCBqICsgaywgYmhpXSk7CisJCQkJ
fQorCQkJfQorCQkJCisJCQltYXRjaGluZ19ibG9ja3Muc29ydChkaWZmbGliLl9fbnR1cGxlY29t
cCk7CisJCisJCQl2YXIgaTEgPSBqMSA9IGsxID0gYmxvY2sgPSAwOworCQkJdmFyIG5vbl9hZGph
Y2VudCA9IFtdOworCQkJZm9yICh2YXIgaWR4IGluIG1hdGNoaW5nX2Jsb2NrcykgeworCQkJCWlm
IChtYXRjaGluZ19ibG9ja3MuaGFzT3duUHJvcGVydHkoaWR4KSkgeworCQkJCQlibG9jayA9IG1h
dGNoaW5nX2Jsb2Nrc1tpZHhdOworCQkJCQlpMiA9IGJsb2NrWzBdOworCQkJCQlqMiA9IGJsb2Nr
WzFdOworCQkJCQlrMiA9IGJsb2NrWzJdOworCQkJCQlpZiAoaTEgKyBrMSA9PSBpMiAmJiBqMSAr
IGsxID09IGoyKSB7CisJCQkJCQlrMSArPSBrMjsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCWlmIChr
MSkgbm9uX2FkamFjZW50LnB1c2goW2kxLCBqMSwgazFdKTsKKwkJCQkJCWkxID0gaTI7CisJCQkJ
CQlqMSA9IGoyOworCQkJCQkJazEgPSBrMjsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJCQorCQkJ
aWYgKGsxKSBub25fYWRqYWNlbnQucHVzaChbaTEsIGoxLCBrMV0pOworCQorCQkJbm9uX2FkamFj
ZW50LnB1c2goW2xhLCBsYiwgMF0pOworCQkJdGhpcy5tYXRjaGluZ19ibG9ja3MgPSBub25fYWRq
YWNlbnQ7CisJCQlyZXR1cm4gdGhpcy5tYXRjaGluZ19ibG9ja3M7CisJCX0KKwkJCisJCXRoaXMu
Z2V0X29wY29kZXMgPSBmdW5jdGlvbiAoKSB7CisJCQlpZiAodGhpcy5vcGNvZGVzICE9IG51bGwp
IHJldHVybiB0aGlzLm9wY29kZXM7CisJCQl2YXIgaSA9IDA7CisJCQl2YXIgaiA9IDA7CisJCQl2
YXIgYW5zd2VyID0gW107CisJCQl0aGlzLm9wY29kZXMgPSBhbnN3ZXI7CisJCQl2YXIgYmxvY2ss
IGFpLCBiaiwgc2l6ZSwgdGFnOworCQkJdmFyIGJsb2NrcyA9IHRoaXMuZ2V0X21hdGNoaW5nX2Js
b2NrcygpOworCQkJZm9yICh2YXIgaWR4IGluIGJsb2NrcykgeworCQkJCWlmIChibG9ja3MuaGFz
T3duUHJvcGVydHkoaWR4KSkgeworCQkJCQlibG9jayA9IGJsb2Nrc1tpZHhdOworCQkJCQlhaSA9
IGJsb2NrWzBdOworCQkJCQliaiA9IGJsb2NrWzFdOworCQkJCQlzaXplID0gYmxvY2tbMl07CisJ
CQkJCXRhZyA9ICcnOworCQkJCQlpZiAoaSA8IGFpICYmIGogPCBiaikgeworCQkJCQkJdGFnID0g
J3JlcGxhY2UnOworCQkJCQl9IGVsc2UgaWYgKGkgPCBhaSkgeworCQkJCQkJdGFnID0gJ2RlbGV0
ZSc7CisJCQkJCX0gZWxzZSBpZiAoaiA8IGJqKSB7CisJCQkJCQl0YWcgPSAnaW5zZXJ0JzsKKwkJ
CQkJfQorCQkJCQlpZiAodGFnKSBhbnN3ZXIucHVzaChbdGFnLCBpLCBhaSwgaiwgYmpdKTsKKwkJ
CQkJaSA9IGFpICsgc2l6ZTsKKwkJCQkJaiA9IGJqICsgc2l6ZTsKKwkJCQkJCisJCQkJCWlmIChz
aXplKSBhbnN3ZXIucHVzaChbJ2VxdWFsJywgYWksIGksIGJqLCBqXSk7CisJCQkJfQorCQkJfQor
CQkJCisJCQlyZXR1cm4gYW5zd2VyOworCQl9CisJCQorCQkvLyB0aGlzIGlzIGEgZ2VuZXJhdG9y
IGZ1bmN0aW9uIGluIHRoZSBweXRob24gbGliLCB3aGljaCBvZiBjb3Vyc2UgaXMgbm90IHN1cHBv
cnRlZCBpbiBqYXZhc2NyaXB0CisJCS8vIHRoZSByZWltcGxlbWVudGF0aW9uIGJ1aWxkcyB1cCB0
aGUgZ3JvdXBlZCBvcGNvZGVzIGludG8gYSBsaXN0IGluIHRoZWlyIGVudGlyZXR5IGFuZCByZXR1
cm5zIHRoYXQuCisJCXRoaXMuZ2V0X2dyb3VwZWRfb3Bjb2RlcyA9IGZ1bmN0aW9uIChuKSB7CisJ
CQlpZiAoIW4pIG4gPSAzOworCQkJdmFyIGNvZGVzID0gdGhpcy5nZXRfb3Bjb2RlcygpOworCQkJ
aWYgKCFjb2RlcykgY29kZXMgPSBbWyJlcXVhbCIsIDAsIDEsIDAsIDFdXTsKKwkJCXZhciBjb2Rl
LCB0YWcsIGkxLCBpMiwgajEsIGoyOworCQkJaWYgKGNvZGVzWzBdWzBdID09ICdlcXVhbCcpIHsK
KwkJCQljb2RlID0gY29kZXNbMF07CisJCQkJdGFnID0gY29kZVswXTsKKwkJCQlpMSA9IGNvZGVb
MV07CisJCQkJaTIgPSBjb2RlWzJdOworCQkJCWoxID0gY29kZVszXTsKKwkJCQlqMiA9IGNvZGVb
NF07CisJCQkJY29kZXNbMF0gPSBbdGFnLCBNYXRoLm1heChpMSwgaTIgLSBuKSwgaTIsIE1hdGgu
bWF4KGoxLCBqMiAtIG4pLCBqMl07CisJCQl9CisJCQlpZiAoY29kZXNbY29kZXMubGVuZ3RoIC0g
MV1bMF0gPT0gJ2VxdWFsJykgeworCQkJCWNvZGUgPSBjb2Rlc1tjb2Rlcy5sZW5ndGggLSAxXTsK
KwkJCQl0YWcgPSBjb2RlWzBdOworCQkJCWkxID0gY29kZVsxXTsKKwkJCQlpMiA9IGNvZGVbMl07
CisJCQkJajEgPSBjb2RlWzNdOworCQkJCWoyID0gY29kZVs0XTsKKwkJCQljb2Rlc1tjb2Rlcy5s
ZW5ndGggLSAxXSA9IFt0YWcsIGkxLCBNYXRoLm1pbihpMiwgaTEgKyBuKSwgajEsIE1hdGgubWlu
KGoyLCBqMSArIG4pXTsKKwkJCX0KKwkKKwkJCXZhciBubiA9IG4gKyBuOworCQkJdmFyIGdyb3Vw
cyA9IFtdOworCQkJZm9yICh2YXIgaWR4IGluIGNvZGVzKSB7CisJCQkJaWYgKGNvZGVzLmhhc093
blByb3BlcnR5KGlkeCkpIHsKKwkJCQkJY29kZSA9IGNvZGVzW2lkeF07CisJCQkJCXRhZyA9IGNv
ZGVbMF07CisJCQkJCWkxID0gY29kZVsxXTsKKwkJCQkJaTIgPSBjb2RlWzJdOworCQkJCQlqMSA9
IGNvZGVbM107CisJCQkJCWoyID0gY29kZVs0XTsKKwkJCQkJaWYgKHRhZyA9PSAnZXF1YWwnICYm
IGkyIC0gaTEgPiBubikgeworCQkJCQkJZ3JvdXBzLnB1c2goW3RhZywgaTEsIE1hdGgubWluKGky
LCBpMSArIG4pLCBqMSwgTWF0aC5taW4oajIsIGoxICsgbildKTsKKwkJCQkJCWkxID0gTWF0aC5t
YXgoaTEsIGkyLW4pOworCQkJCQkJajEgPSBNYXRoLm1heChqMSwgajItbik7CisJCQkJCX0KKwkJ
CQkJCisJCQkJCWdyb3Vwcy5wdXNoKFt0YWcsIGkxLCBpMiwgajEsIGoyXSk7CisJCQkJfQorCQkJ
fQorCQkJCisJCQlpZiAoZ3JvdXBzICYmIGdyb3Vwc1tncm91cHMubGVuZ3RoIC0gMV1bMF0gPT0g
J2VxdWFsJykgZ3JvdXBzLnBvcCgpOworCQkJCisJCQlyZXR1cm4gZ3JvdXBzOworCQl9CisJCQor
CQl0aGlzLnJhdGlvID0gZnVuY3Rpb24gKCkgeworCQkJbWF0Y2hlcyA9IGRpZmZsaWIuX19yZWR1
Y2UoCisJCQkJCQkJZnVuY3Rpb24gKHN1bSwgdHJpcGxlKSB7IHJldHVybiBzdW0gKyB0cmlwbGVb
dHJpcGxlLmxlbmd0aCAtIDFdOyB9LAorCQkJCQkJCXRoaXMuZ2V0X21hdGNoaW5nX2Jsb2Nrcygp
LCAwKTsKKwkJCXJldHVybiBkaWZmbGliLl9fY2FsY3VsYXRlX3JhdGlvKG1hdGNoZXMsIHRoaXMu
YS5sZW5ndGggKyB0aGlzLmIubGVuZ3RoKTsKKwkJfQorCQkKKwkJdGhpcy5xdWlja19yYXRpbyA9
IGZ1bmN0aW9uICgpIHsKKwkJCXZhciBmdWxsYmNvdW50LCBlbHQ7CisJCQlpZiAodGhpcy5mdWxs
YmNvdW50ID09IG51bGwpIHsKKwkJCQl0aGlzLmZ1bGxiY291bnQgPSBmdWxsYmNvdW50ID0ge307
CisJCQkJZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmIubGVuZ3RoOyBpKyspIHsKKwkJCQkJZWx0
ID0gdGhpcy5iW2ldOworCQkJCQlmdWxsYmNvdW50W2VsdF0gPSBkaWZmbGliLl9fZGljdGdldChm
dWxsYmNvdW50LCBlbHQsIDApICsgMTsKKwkJCQl9CisJCQl9CisJCQlmdWxsYmNvdW50ID0gdGhp
cy5mdWxsYmNvdW50OworCQorCQkJdmFyIGF2YWlsID0ge307CisJCQl2YXIgYXZhaWxoYXMgPSBk
aWZmbGliLl9faXNpbmRpY3QoYXZhaWwpOworCQkJdmFyIG1hdGNoZXMgPSBudW1iID0gMDsKKwkJ
CWZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5hLmxlbmd0aDsgaSsrKSB7CisJCQkJZWx0ID0gdGhp
cy5hW2ldOworCQkJCWlmIChhdmFpbGhhcyhlbHQpKSB7CisJCQkJCW51bWIgPSBhdmFpbFtlbHRd
OworCQkJCX0gZWxzZSB7CisJCQkJCW51bWIgPSBkaWZmbGliLl9fZGljdGdldChmdWxsYmNvdW50
LCBlbHQsIDApOworCQkJCX0KKwkJCQlhdmFpbFtlbHRdID0gbnVtYiAtIDE7CisJCQkJaWYgKG51
bWIgPiAwKSBtYXRjaGVzKys7CisJCQl9CisJCQkKKwkJCXJldHVybiBkaWZmbGliLl9fY2FsY3Vs
YXRlX3JhdGlvKG1hdGNoZXMsIHRoaXMuYS5sZW5ndGggKyB0aGlzLmIubGVuZ3RoKTsKKwkJfQor
CQkKKwkJdGhpcy5yZWFsX3F1aWNrX3JhdGlvID0gZnVuY3Rpb24gKCkgeworCQkJdmFyIGxhID0g
dGhpcy5hLmxlbmd0aDsKKwkJCXZhciBsYiA9IHRoaXMuYi5sZW5ndGg7CisJCQlyZXR1cm4gX2Nh
bGN1bGF0ZV9yYXRpbyhNYXRoLm1pbihsYSwgbGIpLCBsYSArIGxiKTsKKwkJfQorCQkKKwkJdGhp
cy5pc2p1bmsgPSBpc2p1bmsgPyBpc2p1bmsgOiBkaWZmbGliLmRlZmF1bHRKdW5rRnVuY3Rpb247
CisJCXRoaXMuYSA9IHRoaXMuYiA9IG51bGw7CisJCXRoaXMuc2V0X3NlcXMoYSwgYik7CisJfQor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2Vz
L2pzZGlmZmxpYi9kaWZmdmlldy5jc3MgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9yZXNvdXJjZXMvanNkaWZmbGliL2RpZmZ2aWV3LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTFhNTkzYjc3
ZmJhNGI4ZTk1ZjVlMTgwM2MyMWQwNzdmMzlhZDFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZmdmlldy5j
c3MKQEAgLTAsMCArMSw4MyBAQAorLyoKK1RoaXMgaXMgcGFydCBvZiBqc2RpZmZsaWIgdjEuMC4g
PGh0dHA6Ly9naXRodWIuY29tL2NlbWVyaWNrL2pzZGlmZmxpYj4KKworQ29weXJpZ2h0IDIwMDcg
LSAyMDExIENoYXMgRW1lcmljayA8Y2VtZXJpY2tAc25vd3RpZGUuY29tPi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlCitwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKworICAgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YKKyAgICAgIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKworICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3QKKyAgICAgIG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgICAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ2hhcyBFbWVyaWNrIGBg
QVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIENoYXMgRW1lcmljayBPUgorQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKK0NPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKK1NFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KK0FOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKK05FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRgorQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK1RoZSB2aWV3cyBhbmQgY29uY2x1c2lvbnMgY29udGFpbmVkIGluIHRoZSBzb2Z0d2Fy
ZSBhbmQgZG9jdW1lbnRhdGlvbiBhcmUgdGhvc2Ugb2YgdGhlCithdXRob3JzIGFuZCBzaG91bGQg
bm90IGJlIGludGVycHJldGVkIGFzIHJlcHJlc2VudGluZyBvZmZpY2lhbCBwb2xpY2llcywgZWl0
aGVyIGV4cHJlc3NlZAorb3IgaW1wbGllZCwgb2YgQ2hhcyBFbWVyaWNrLgorKi8KK3RhYmxlLmRp
ZmYgeworCWJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTsKKwlib3JkZXI6MXB4IHNvbGlkIGRhcmtn
cmF5OworCXdoaXRlLXNwYWNlOnByZS13cmFwCit9Cit0YWJsZS5kaWZmIHRib2R5IHsgCisJZm9u
dC1mYW1pbHk6Q291cmllciwgbW9ub3NwYWNlCit9Cit0YWJsZS5kaWZmIHRib2R5IHRoIHsKKwlm
b250LWZhbWlseTp2ZXJkYW5hLGFyaWFsLCdCaXRzdHJlYW0gVmVyYSBTYW5zJyxoZWx2ZXRpY2Es
c2Fucy1zZXJpZjsKKwliYWNrZ3JvdW5kOiNFRUQ7CisJZm9udC1zaXplOjExcHg7CisJZm9udC13
ZWlnaHQ6bm9ybWFsOworCWJvcmRlcjoxcHggc29saWQgI0JCQzsKKwljb2xvcjojODg2OworCXBh
ZGRpbmc6LjNlbSAuNWVtIC4xZW0gMmVtOworCXRleHQtYWxpZ246cmlnaHQ7CisJdmVydGljYWwt
YWxpZ246dG9wCit9Cit0YWJsZS5kaWZmIHRoZWFkIHsKKwlib3JkZXItYm90dG9tOjFweCBzb2xp
ZCAjQkJDOworCWJhY2tncm91bmQ6I0VGRUZFRjsKKwlmb250LWZhbWlseTpWZXJkYW5hCit9Cit0
YWJsZS5kaWZmIHRoZWFkIHRoLnRleHR0aXRsZSB7CisJdGV4dC1hbGlnbjpsZWZ0Cit9Cit0YWJs
ZS5kaWZmIHRib2R5IHRkIHsKKwlwYWRkaW5nOjBweCAuNGVtOworCXBhZGRpbmctdG9wOi40ZW07
CisJdmVydGljYWwtYWxpZ246dG9wOworfQordGFibGUuZGlmZiAuZW1wdHkgeworCWJhY2tncm91
bmQtY29sb3I6I0RERDsKK30KK3RhYmxlLmRpZmYgLnJlcGxhY2UgeworCWJhY2tncm91bmQtY29s
b3I6I0ZEOAorfQordGFibGUuZGlmZiAuZGVsZXRlIHsKKwliYWNrZ3JvdW5kLWNvbG9yOiNFOTk7
Cit9Cit0YWJsZS5kaWZmIC5za2lwIHsKKwliYWNrZ3JvdW5kLWNvbG9yOiNFRkVGRUY7CisJYm9y
ZGVyOjFweCBzb2xpZCAjQUFBOworCWJvcmRlci1yaWdodDoxcHggc29saWQgI0JCQzsKK30KK3Rh
YmxlLmRpZmYgLmluc2VydCB7CisJYmFja2dyb3VuZC1jb2xvcjojOUU5Cit9Cit0YWJsZS5kaWZm
IHRoLmF1dGhvciB7CisJdGV4dC1hbGlnbjpyaWdodDsKKwlib3JkZXItdG9wOjFweCBzb2xpZCAj
QkJDOworCWJhY2tncm91bmQ6I0VGRUZFRgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9q
c2RpZmZsaWIvZGlmZnZpZXcuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9y
ZXNvdXJjZXMvanNkaWZmbGliL2RpZmZ2aWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyMjhhMzRkMmI2YzRl
M2IzOTMyMzJkODYwYzg0ZGZiZDlmZTVhYjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvanNkaWZmbGliL2RpZmZ2aWV3LmpzCkBA
IC0wLDAgKzEsMTk3IEBACisvKgorVGhpcyBpcyBwYXJ0IG9mIGpzZGlmZmxpYiB2MS4wLiA8aHR0
cDovL2dpdGh1Yi5jb20vY2VtZXJpY2svanNkaWZmbGliPgorCitDb3B5cmlnaHQgMjAwNyAtIDIw
MTEgQ2hhcyBFbWVyaWNrIDxjZW1lcmlja0Bzbm93dGlkZS5jb20+LiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUKK3Blcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorCisgICAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZgorICAgICAgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorCisgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdAorICAgICAgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAgICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDaGFzIEVtZXJpY2sgYGBBUyBJ
UycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECitXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5ECitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQ2hhcyBFbWVyaWNrIE9SCitDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGCitBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworVGhlIHZpZXdzIGFuZCBjb25jbHVzaW9ucyBjb250YWluZWQgaW4gdGhlIHNvZnR3YXJlIGFu
ZCBkb2N1bWVudGF0aW9uIGFyZSB0aG9zZSBvZiB0aGUKK2F1dGhvcnMgYW5kIHNob3VsZCBub3Qg
YmUgaW50ZXJwcmV0ZWQgYXMgcmVwcmVzZW50aW5nIG9mZmljaWFsIHBvbGljaWVzLCBlaXRoZXIg
ZXhwcmVzc2VkCitvciBpbXBsaWVkLCBvZiBDaGFzIEVtZXJpY2suCisqLworZGlmZnZpZXcgPSB7
CisJLyoqCisJICogQnVpbGRzIGFuZCByZXR1cm5zIGEgdmlzdWFsIGRpZmYgdmlldy4gIFRoZSBz
aW5nbGUgcGFyYW1ldGVyLCBgcGFyYW1zJywgc2hvdWxkIGNvbnRhaW4KKwkgKiB0aGUgZm9sbG93
aW5nIHZhbHVlczoKKwkgKgorCSAqIC0gYmFzZVRleHRMaW5lczogdGhlIGFycmF5IG9mIHN0cmlu
Z3MgdGhhdCB3YXMgdXNlZCBhcyB0aGUgYmFzZSB0ZXh0IGlucHV0IHRvIFNlcXVlbmNlTWF0Y2hl
cgorCSAqIC0gbmV3VGV4dExpbmVzOiB0aGUgYXJyYXkgb2Ygc3RyaW5ncyB0aGF0IHdhcyB1c2Vk
IGFzIHRoZSBuZXcgdGV4dCBpbnB1dCB0byBTZXF1ZW5jZU1hdGNoZXIKKwkgKiAtIG9wY29kZXM6
IHRoZSBhcnJheSBvZiBhcnJheXMgcmV0dXJuZWQgYnkgU2VxdWVuY2VNYXRjaGVyLmdldF9vcGNv
ZGVzKCkKKwkgKiAtIGJhc2VUZXh0TmFtZTogdGhlIHRpdGxlIHRvIGJlIGRpc3BsYXllZCBhYm92
ZSB0aGUgYmFzZSB0ZXh0IGxpc3RpbmcgaW4gdGhlIGRpZmYgdmlldzsgZGVmYXVsdHMKKwkgKgkg
ICB0byAiQmFzZSBUZXh0IgorCSAqIC0gbmV3VGV4dE5hbWU6IHRoZSB0aXRsZSB0byBiZSBkaXNw
bGF5ZWQgYWJvdmUgdGhlIG5ldyB0ZXh0IGxpc3RpbmcgaW4gdGhlIGRpZmYgdmlldzsgZGVmYXVs
dHMKKwkgKgkgICB0byAiTmV3IFRleHQiCisJICogLSBjb250ZXh0U2l6ZTogdGhlIG51bWJlciBv
ZiBsaW5lcyBvZiBjb250ZXh0IHRvIHNob3cgYXJvdW5kIGRpZmZlcmVuY2VzOyBieSBkZWZhdWx0
LCBhbGwgbGluZXMKKwkgKgkgICBhcmUgc2hvd24KKwkgKiAtIHZpZXdUeXBlOiBpZiAwLCBhIHNp
ZGUtYnktc2lkZSBkaWZmIHZpZXcgaXMgZ2VuZXJhdGVkIChkZWZhdWx0KTsgaWYgMSwgYW4gaW5s
aW5lIGRpZmYgdmlldyBpcworCSAqCSAgIGdlbmVyYXRlZAorCSAqLworCWJ1aWxkVmlldzogZnVu
Y3Rpb24gKHBhcmFtcykgeworCQl2YXIgYmFzZVRleHRMaW5lcyA9IHBhcmFtcy5iYXNlVGV4dExp
bmVzOworCQl2YXIgbmV3VGV4dExpbmVzID0gcGFyYW1zLm5ld1RleHRMaW5lczsKKwkJdmFyIG9w
Y29kZXMgPSBwYXJhbXMub3Bjb2RlczsKKwkJdmFyIGJhc2VUZXh0TmFtZSA9IHBhcmFtcy5iYXNl
VGV4dE5hbWUgPyBwYXJhbXMuYmFzZVRleHROYW1lIDogIkJhc2UgVGV4dCI7CisJCXZhciBuZXdU
ZXh0TmFtZSA9IHBhcmFtcy5uZXdUZXh0TmFtZSA/IHBhcmFtcy5uZXdUZXh0TmFtZSA6ICJOZXcg
VGV4dCI7CisJCXZhciBjb250ZXh0U2l6ZSA9IHBhcmFtcy5jb250ZXh0U2l6ZTsKKwkJdmFyIGlu
bGluZSA9IChwYXJhbXMudmlld1R5cGUgPT0gMCB8fCBwYXJhbXMudmlld1R5cGUgPT0gMSkgPyBw
YXJhbXMudmlld1R5cGUgOiAwOworCisJCWlmIChiYXNlVGV4dExpbmVzID09IG51bGwpCisJCQl0
aHJvdyAiQ2Fubm90IGJ1aWxkIGRpZmYgdmlldzsgYmFzZVRleHRMaW5lcyBpcyBub3QgZGVmaW5l
ZC4iOworCQlpZiAobmV3VGV4dExpbmVzID09IG51bGwpCisJCQl0aHJvdyAiQ2Fubm90IGJ1aWxk
IGRpZmYgdmlldzsgbmV3VGV4dExpbmVzIGlzIG5vdCBkZWZpbmVkLiI7CisJCWlmICghb3Bjb2Rl
cykKKwkJCXRocm93ICJDYW5ubyBidWlsZCBkaWZmIHZpZXc7IG9wY29kZXMgaXMgbm90IGRlZmlu
ZWQuIjsKKwkJCisJCWZ1bmN0aW9uIGNlbHQgKG5hbWUsIGNsYXp6KSB7CisJCQl2YXIgZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSk7CisJCQllLmNsYXNzTmFtZSA9IGNsYXp6OworCQkJ
cmV0dXJuIGU7CisJCX0KKwkJCisJCWZ1bmN0aW9uIHRlbHQgKG5hbWUsIHRleHQpIHsKKwkJCXZh
ciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKTsKKwkJCWUuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpOworCQkJcmV0dXJuIGU7CisJCX0KKwkJCisJCWZ1
bmN0aW9uIGN0ZWx0IChuYW1lLCBjbGF6eiwgdGV4dCkgeworCQkJdmFyIGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KG5hbWUpOworCQkJZS5jbGFzc05hbWUgPSBjbGF6ejsKKwkJCWUuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpOworCQkJcmV0dXJuIGU7CisJCX0K
KwkKKwkJdmFyIHRkYXRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGhlYWQiKTsKKwkJdmFy
IG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworCQl0ZGF0YS5hcHBlbmRDaGls
ZChub2RlKTsKKwkJaWYgKGlubGluZSkgeworCQkJbm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJ0aCIpKTsKKwkJCW5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgidGgiKSk7CisJCQlub2RlLmFwcGVuZENoaWxkKGN0ZWx0KCJ0aCIsICJ0ZXh0dGl0
bGUiLCBiYXNlVGV4dE5hbWUgKyAiIHZzLiAiICsgbmV3VGV4dE5hbWUpKTsKKwkJfSBlbHNlIHsK
KwkJCW5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKSk7CisJCQlu
b2RlLmFwcGVuZENoaWxkKGN0ZWx0KCJ0aCIsICJ0ZXh0dGl0bGUiLCBiYXNlVGV4dE5hbWUpKTsK
KwkJCW5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKSk7CisJCQlu
b2RlLmFwcGVuZENoaWxkKGN0ZWx0KCJ0aCIsICJ0ZXh0dGl0bGUiLCBuZXdUZXh0TmFtZSkpOwor
CQl9CisJCXRkYXRhID0gW3RkYXRhXTsKKwkJCisJCXZhciByb3dzID0gW107CisJCXZhciBub2Rl
MjsKKwkJCisJCS8qKgorCQkgKiBBZGRzIHR3byBjZWxscyB0byB0aGUgZ2l2ZW4gcm93OyBpZiB0
aGUgZ2l2ZW4gcm93IGNvcnJlc3BvbmRzIHRvIGEgcmVhbAorCQkgKiBsaW5lIG51bWJlciAoYmFz
ZWQgb24gdGhlIGxpbmUgaW5kZXggdGlkeCBhbmQgdGhlIGVuZHBvaW50IG9mIHRoZSAKKwkJICog
cmFuZ2UgaW4gcXVlc3Rpb24gdGVuZCksIHRoZW4gdGhlIGNlbGxzIHdpbGwgY29udGFpbiB0aGUg
bGluZSBudW1iZXIKKwkJICogYW5kIHRoZSBsaW5lIG9mIHRleHQgZnJvbSB0ZXh0TGluZXMgYXQg
cG9zaXRpb24gdGlkeCAod2l0aCB0aGUgY2xhc3Mgb2YKKwkJICogdGhlIHNlY29uZCBjZWxsIHNl
dCB0byB0aGUgbmFtZSBvZiB0aGUgY2hhbmdlIHJlcHJlc2VudGVkKSwgYW5kIHRpZHggKyAxIHdp
bGwKKwkJICogYmUgcmV0dXJuZWQuCSBPdGhlcndpc2UsIHRpZHggaXMgcmV0dXJuZWQsIGFuZCB0
d28gZW1wdHkgY2VsbHMgYXJlIGFkZGVkCisJCSAqIHRvIHRoZSBnaXZlbiByb3cuCisJCSAqLwor
CQlmdW5jdGlvbiBhZGRDZWxscyAocm93LCB0aWR4LCB0ZW5kLCB0ZXh0TGluZXMsIGNoYW5nZSkg
eworCQkJaWYgKHRpZHggPCB0ZW5kKSB7CisJCQkJcm93LmFwcGVuZENoaWxkKHRlbHQoInRoIiwg
KHRpZHggKyAxKS50b1N0cmluZygpKSk7CisJCQkJcm93LmFwcGVuZENoaWxkKGN0ZWx0KCJ0ZCIs
IGNoYW5nZSwgdGV4dExpbmVzW3RpZHhdLnJlcGxhY2UoL1x0L2csICJcdTAwYTBcdTAwYTBcdTAw
YTBcdTAwYTAiKSkpOworCQkJCXJldHVybiB0aWR4ICsgMTsKKwkJCX0gZWxzZSB7CisJCQkJcm93
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoIikpOworCQkJCXJvdy5hcHBl
bmRDaGlsZChjZWx0KCJ0ZCIsICJlbXB0eSIpKTsKKwkJCQlyZXR1cm4gdGlkeDsKKwkJCX0KKwkJ
fQorCQkKKwkJZnVuY3Rpb24gYWRkQ2VsbHNJbmxpbmUgKHJvdywgdGlkeCwgdGlkeDIsIHRleHRM
aW5lcywgY2hhbmdlKSB7CisJCQlyb3cuYXBwZW5kQ2hpbGQodGVsdCgidGgiLCB0aWR4ID09IG51
bGwgPyAiIiA6ICh0aWR4ICsgMSkudG9TdHJpbmcoKSkpOworCQkJcm93LmFwcGVuZENoaWxkKHRl
bHQoInRoIiwgdGlkeDIgPT0gbnVsbCA/ICIiIDogKHRpZHgyICsgMSkudG9TdHJpbmcoKSkpOwor
CQkJcm93LmFwcGVuZENoaWxkKGN0ZWx0KCJ0ZCIsIGNoYW5nZSwgdGV4dExpbmVzW3RpZHggIT0g
bnVsbCA/IHRpZHggOiB0aWR4Ml0ucmVwbGFjZSgvXHQvZywgIlx1MDBhMFx1MDBhMFx1MDBhMFx1
MDBhMCIpKSk7CisJCX0KKwkJCisJCWZvciAodmFyIGlkeCA9IDA7IGlkeCA8IG9wY29kZXMubGVu
Z3RoOyBpZHgrKykgeworCQkJY29kZSA9IG9wY29kZXNbaWR4XTsKKwkJCWNoYW5nZSA9IGNvZGVb
MF07CisJCQl2YXIgYiA9IGNvZGVbMV07CisJCQl2YXIgYmUgPSBjb2RlWzJdOworCQkJdmFyIG4g
PSBjb2RlWzNdOworCQkJdmFyIG5lID0gY29kZVs0XTsKKwkJCXZhciByb3djbnQgPSBNYXRoLm1h
eChiZSAtIGIsIG5lIC0gbik7CisJCQl2YXIgdG9wcm93cyA9IFtdOworCQkJdmFyIGJvdHJvd3Mg
PSBbXTsKKwkJCWZvciAodmFyIGkgPSAwOyBpIDwgcm93Y250OyBpKyspIHsKKwkJCQkvLyBqdW1w
IGFoZWFkIGlmIHdlJ3ZlIGFscmVkeSBwcm92aWRlZCBsZWFkaW5nIGNvbnRleHQgb3IgaWYgdGhp
cyBpcyB0aGUgZmlyc3QgcmFuZ2UKKwkJCQlpZiAoY29udGV4dFNpemUgJiYgb3Bjb2Rlcy5sZW5n
dGggPiAxICYmICgoaWR4ID4gMCAmJiBpID09IGNvbnRleHRTaXplKSB8fCAoaWR4ID09IDAgJiYg
aSA9PSAwKSkgJiYgY2hhbmdlPT0iZXF1YWwiKSB7CisJCQkJCXZhciBqdW1wID0gcm93Y250IC0g
KChpZHggPT0gMCA/IDEgOiAyKSAqIGNvbnRleHRTaXplKTsKKwkJCQkJaWYgKGp1bXAgPiAxKSB7
CisJCQkJCQl0b3Byb3dzLnB1c2gobm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIikp
OworCQkJCQkJCisJCQkJCQliICs9IGp1bXA7CisJCQkJCQluICs9IGp1bXA7CisJCQkJCQlpICs9
IGp1bXAgLSAxOworCQkJCQkJbm9kZS5hcHBlbmRDaGlsZCh0ZWx0KCJ0aCIsICIuLi4iKSk7CisJ
CQkJCQlpZiAoIWlubGluZSkgbm9kZS5hcHBlbmRDaGlsZChjdGVsdCgidGQiLCAic2tpcCIsICIi
KSk7CisJCQkJCQlub2RlLmFwcGVuZENoaWxkKHRlbHQoInRoIiwgIi4uLiIpKTsKKwkJCQkJCW5v
ZGUuYXBwZW5kQ2hpbGQoY3RlbHQoInRkIiwgInNraXAiLCAiIikpOworCQkJCQkJCisJCQkJCQkv
LyBza2lwIGxhc3QgbGluZXMgaWYgdGhleSdyZSBhbGwgZXF1YWwKKwkJCQkJCWlmIChpZHggKyAx
ID09IG9wY29kZXMubGVuZ3RoKSB7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9IGVsc2UgeworCQkJ
CQkJCWNvbnRpbnVlOworCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJCQorCQkJCXRvcHJvd3Mu
cHVzaChub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKSk7CisJCQkJaWYgKGlubGlu
ZSkgeworCQkJCQlpZiAoY2hhbmdlID09ICJpbnNlcnQiKSB7CisJCQkJCQlhZGRDZWxsc0lubGlu
ZShub2RlLCBudWxsLCBuKyssIG5ld1RleHRMaW5lcywgY2hhbmdlKTsKKwkJCQkJfSBlbHNlIGlm
IChjaGFuZ2UgPT0gInJlcGxhY2UiKSB7CisJCQkJCQlib3Ryb3dzLnB1c2gobm9kZTIgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpKTsKKwkJCQkJCWlmIChiIDwgYmUpIGFkZENlbGxzSW5s
aW5lKG5vZGUsIGIrKywgbnVsbCwgYmFzZVRleHRMaW5lcywgImRlbGV0ZSIpOworCQkJCQkJaWYg
KG4gPCBuZSkgYWRkQ2VsbHNJbmxpbmUobm9kZTIsIG51bGwsIG4rKywgbmV3VGV4dExpbmVzLCAi
aW5zZXJ0Iik7CisJCQkJCX0gZWxzZSBpZiAoY2hhbmdlID09ICJkZWxldGUiKSB7CisJCQkJCQlh
ZGRDZWxsc0lubGluZShub2RlLCBiKyssIG51bGwsIGJhc2VUZXh0TGluZXMsIGNoYW5nZSk7CisJ
CQkJCX0gZWxzZSB7CisJCQkJCQkvLyBlcXVhbAorCQkJCQkJYWRkQ2VsbHNJbmxpbmUobm9kZSwg
YisrLCBuKyssIGJhc2VUZXh0TGluZXMsIGNoYW5nZSk7CisJCQkJCX0KKwkJCQl9IGVsc2Ugewor
CQkJCQliID0gYWRkQ2VsbHMobm9kZSwgYiwgYmUsIGJhc2VUZXh0TGluZXMsIGNoYW5nZSk7CisJ
CQkJCW4gPSBhZGRDZWxscyhub2RlLCBuLCBuZSwgbmV3VGV4dExpbmVzLCBjaGFuZ2UpOworCQkJ
CX0KKwkJCX0KKworCQkJZm9yICh2YXIgaSA9IDA7IGkgPCB0b3Byb3dzLmxlbmd0aDsgaSsrKSBy
b3dzLnB1c2godG9wcm93c1tpXSk7CisJCQlmb3IgKHZhciBpID0gMDsgaSA8IGJvdHJvd3MubGVu
Z3RoOyBpKyspIHJvd3MucHVzaChib3Ryb3dzW2ldKTsKKwkJfQorCQkKKwkJcm93cy5wdXNoKG5v
ZGUgPSBjdGVsdCgidGgiLCAiYXV0aG9yIiwgImRpZmYgdmlldyBnZW5lcmF0ZWQgYnkgIikpOwor
CQlub2RlLnNldEF0dHJpYnV0ZSgiY29sc3BhbiIsIGlubGluZSA/IDMgOiA0KTsKKwkJbm9kZS5h
cHBlbmRDaGlsZChub2RlMiA9IHRlbHQoImEiLCAianNkaWZmbGliIikpOworCQlub2RlMi5zZXRB
dHRyaWJ1dGUoImhyZWYiLCAiaHR0cDovL2dpdGh1Yi5jb20vY2VtZXJpY2svanNkaWZmbGliIik7
CisJCQorCQl0ZGF0YS5wdXNoKG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIp
KTsKKwkJZm9yICh2YXIgaWR4IGluIHJvd3MpIG5vZGUuYXBwZW5kQ2hpbGQocm93c1tpZHhdKTsK
KwkJCisJCW5vZGUgPSBjZWx0KCJ0YWJsZSIsICJkaWZmIiArIChpbmxpbmUgPyAiIGlubGluZWRp
ZmYiIDogIiIpKTsKKwkJZm9yICh2YXIgaWR4IGluIHRkYXRhKSBub2RlLmFwcGVuZENoaWxkKHRk
YXRhW2lkeF0pOworCQlyZXR1cm4gbm9kZTsKKwl9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155894</attachid>
            <date>2012-08-01 15:03:54 -0700</date>
            <delta_ts>2012-08-08 21:59:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92429-20120801150336.patch</filename>
            <type>text/plain</type>
            <size>43745</size>
            <attacher name="johnjbarton">johnjbarton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGNlMjE4YjAyYzNjMmNh
N2I5YTMzZDliMWM2MjFjZGE4NTFhMWU3MS4uZDdiZjZhNGI3YjM3ZThhOGU4MmU3Y2EyYjU3OGU4
NTRkNDE0MWM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA4LTAxICBKb2hu
IEouIEJhcnRvbiAgPGpvaG5qYmFydG9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBBZGQgc3VwcG9ydCBmb3IgZGVidWdnaW5nIEluc3BlY3RvciBMYXlvdXRUZXN0cyB3
L0luc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTI0MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPiBUZXN0Q29udHJvbGxlciBu
b3cgbm90aWZpZXMgZW1iZWRkZXIgdXBvbiBsb2FkZWQuCisgICAgICAgIEpvaG4gSi4gQmFydG9u
IDxqb2huamJhcnRvbkBjaHJvbWl1bS5vcmc+IGFkZCBzb3VyY2VVUkwgdG8gZXZhbCBmb3IgZGVi
dWdnaW5nCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Rlc3RDb250cm9sbGVyLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLmxvYWRDb21wbGV0ZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQpOgorICAgICAgICAoLm9u
VGVzdEZyYW1ld29ya01lc3NhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmpzOgorCiAyMDEyLTA3LTMxICBSYXVsIEh1ZGVhICA8cmh1ZGVhQGFkb2JlLmNvbT4K
IAogICAgICAgICBJbnNwZWN0b3IgY3Jhc2hlcyB3aGVuIHRyeWluZyB0byBpbnNwZWN0IGEgcGFn
ZSB3aXRoIENTUyByZWdpb24gc3R5bGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9UZXN0Q29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGVzdENvbnRyb2xsZXIuanMKaW5kZXggMjBlOWM0YTc1MGRkZTMwMzE2
MmVhODZiNDdhZjI2OWU3MjNkZWU3Ny4uODgxYTRjODUwNWM4MjQ2MjhmOGNkMzE4YjU5OTQ1ODcz
ZDkzOWJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9U
ZXN0Q29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Rlc3RDb250cm9sbGVyLmpzCkBAIC0zNSwxMiArMzUsMTYgQEAgV2ViSW5zcGVjdG9yLlRlc3RD
b250cm9sbGVyID0gZnVuY3Rpb24oKQogewogfQogCi1XZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xs
ZXIucHJvdG90eXBlID0gewotICAgIG5vdGlmeURvbmU6IGZ1bmN0aW9uKGNhbGxJZCwgcmVzdWx0
KQotICAgIHsKLSAgICAgICAgdmFyIG1lc3NhZ2UgPSB0eXBlb2YgcmVzdWx0ID09PSAidW5kZWZp
bmVkIiA/ICJcIjx1bmRlZmluZWQ+XCIiIDogSlNPTi5zdHJpbmdpZnkocmVzdWx0KTsKLSAgICAg
ICAgUnVudGltZUFnZW50LmV2YWx1YXRlKCJkaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKCIg
KyBjYWxsSWQgKyAiLCAiICsgbWVzc2FnZSArICIpIiwgInRlc3QiKTsKLSAgICB9CitXZWJJbnNw
ZWN0b3IuVGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSA9IGZ1bmN0aW9uKGNhbGxJZCwgcmVzdWx0
KQoreworICAgIHZhciBtZXNzYWdlID0gdHlwZW9mIHJlc3VsdCA9PT0gInVuZGVmaW5lZCIgPyAi
XCI8dW5kZWZpbmVkPlwiIiA6IEpTT04uc3RyaW5naWZ5KHJlc3VsdCk7CisgICAgUnVudGltZUFn
ZW50LmV2YWx1YXRlKCJkaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKCIgKyBjYWxsSWQgKyAi
LCAiICsgbWVzc2FnZSArICIpIiwgInRlc3QiKTsKK30KKworV2ViSW5zcGVjdG9yLlRlc3RDb250
cm9sbGVyLmxvYWRDb21wbGV0ZWQgPSBmdW5jdGlvbigpCit7CisgICAgaWYgKHdpbmRvdy5vcGVu
ZXIpCisgICAgICAgIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoImZyb250ZW5kTG9hZGVkIiwg
IioiKTsKIH0KIAogV2ViSW5zcGVjdG9yLmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQgPSBmdW5j
dGlvbihjYWxsSWQsIHNjcmlwdCkKQEAgLTQ4LDExICs1MiwyMSBAQCBXZWJJbnNwZWN0b3IuZXZh
bHVhdGVGb3JUZXN0SW5Gcm9udGVuZCA9IGZ1bmN0aW9uKGNhbGxJZCwgc2NyaXB0KQogICAgIGZ1
bmN0aW9uIGludm9rZU1ldGhvZCgpCiAgICAgewogICAgICAgICB0cnkgeworICAgICAgICAgICAg
c2NyaXB0ID0gc2NyaXB0ICsgIi8vQCBzb3VyY2VVUkw9ZXZhbHVhdGVJbldlYkluc3BlY3RvciIg
KyBjYWxsSWQgKyAiLmpzIjsKICAgICAgICAgICAgIHZhciByZXN1bHQgPSB3aW5kb3cuZXZhbChz
Y3JpcHQpOwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLnByb3RvdHlw
ZS5ub3RpZnlEb25lKGNhbGxJZCwgcmVzdWx0KTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5U
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKGNhbGxJZCwgcmVzdWx0KTsKICAgICAgICAgfSBjYXRj
aCAoZSkgewotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLnByb3RvdHlw
ZS5ub3RpZnlEb25lKGNhbGxJZCwgZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5UZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKGNhbGxJZCwgZS50b1N0cmluZygpKTsKICAg
ICAgICAgfQogICAgIH0KICAgICBJbnNwZWN0b3JCYWNrZW5kLnJ1bkFmdGVyUGVuZGluZ0Rpc3Bh
dGNoZXMoaW52b2tlTWV0aG9kKTsKK307CisKK2lmICh3aW5kb3cub3BlbmVyKSB7CisgICAgZnVu
Y3Rpb24gb25UZXN0RnJhbWV3b3JrTWVzc2FnZShldmVudCkKKyAgICB7CisgICAgICAgIGlmIChl
dmVudC5kYXRhLmNvbW1hbmQgPT09ICJldmFsdWF0ZUluV2ViSW5zcGVjdG9yIikKKyAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGV2ZW50LmRhdGEuY2Fs
bElkLCBldmVudC5kYXRhLnNjcmlwdCk7CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJtZXNzYWdlIiwgb25UZXN0RnJhbWV3b3JrTWVzc2FnZSwgdHJ1ZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IDc2OGNk
YTU2OWI4NmMzNzY3NDdkODI0MTcwZjNjMTJiMmNmYjlmMGIuLjdkZTNjMzhiNTE1MzBkYmYxM2Zh
YzY3NjQxZjMyMGNkYmE3NTliOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC01MzUsNiArNTM1LDcgQEAgV2ViSW5zcGVjdG9yLl9k
b0xvYWRlZERvbmVXaXRoQ2FwYWJpbGl0aWVzID0gZnVuY3Rpb24oKQogICAgIHRoaXMuZG9tQWdl
bnQuX2VtdWxhdGVUb3VjaEV2ZW50c0NoYW5nZWQoKTsKIAogICAgIFdlYkluc3BlY3Rvci5Xb3Jr
ZXJNYW5hZ2VyLmxvYWRDb21wbGV0ZWQoKTsKKyAgICBXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xs
ZXIubG9hZENvbXBsZXRlZCgpOwogICAgIEluc3BlY3RvckZyb250ZW5kQVBJLmxvYWRDb21wbGV0
ZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGMxMjAwYjlkZGNkNjdkMmMxOWEyYmRjY2ViZWMyZDIzZjk4OWJm
NTAuLjU0ZmExZTAwZjdjNWNiYzJkMThiOGRiYzFmNGRlNTE1ZWFlZDFmYzggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxMi0wOC0wMSAgSm9obiBKLiBCYXJ0b24gIDxqb2huamJhcnRvbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBvcnQgZm9yIGRlYnVn
Z2luZyBJbnNwZWN0b3IgTGF5b3V0VGVzdHMgdy9JbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNDI5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF2ZWwgRmVsZG1hbiA8cGZsZWRtYW5AY2hy
b21pdW0ub3JnPiBJbXBsZW1lbnQgU3RhbmRhbG9uZVRlc3RSdW5uZXIKKyAgICAgICAgUGF2ZWwg
RmVsZG1hbiA8cGZsZWRtYW5AY2hyb21pdW0ub3JnPiBBZGRlZCBqc2RpZmZsaWIgKEJTRCkgZm9y
IHN0YW5kYWxvbmUgaW5zcGVjdG9yIHRlc3QgcnVubmluZyBhbmQgZGlmZmluZworICAgICAgICBK
b2huIEouIEJhcnRvbiA8am9obmpiYXJ0b25AY2hyb21pdW0ub3JnPiBSZXNldC9jbGVhciB3aGVu
IHRlc3QtaW5zcGVjdG9yIGlzIHJlbG9hZGVkIGJ5IGl0cyBkZWJ1Z2dpbmcgaW5zcGVjdG9yLgor
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanM6CisgICAg
ICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QpOgorICAgICAgICAoLik6CisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9SRUFETUUuYXNjaWlkb2M6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9qc2RpZmZs
aWIvZGlmZmxpYi5qczogQWRkZWQuCisgICAgICAgIChkaWZmbGliLmRlZmF1bHRKdW5rRnVuY3Rp
b24pOgorICAgICAgICAoZGlmZmxpYi5zdHJpcExpbmVicmVha3MpOgorICAgICAgICAoZGlmZmxp
Yi5zdHJpbmdBc0xpbmVzKToKKyAgICAgICAgKGRpZmZsaWIuX19yZWR1Y2UpOgorICAgICAgICAo
ZGlmZmxpYi5fX250dXBsZWNvbXApOgorICAgICAgICAoZGlmZmxpYi5fX2NhbGN1bGF0ZV9yYXRp
byk6CisgICAgICAgIChkaWZmbGliLl9fZGljdGdldCk6CisgICAgICAgIChkaWZmbGliLlNlcXVl
bmNlTWF0Y2hlci50aGlzLnNldF9zZXFzKToKKyAgICAgICAgKGRpZmZsaWIuU2VxdWVuY2VNYXRj
aGVyLnRoaXMuc2V0X3NlcTEpOgorICAgICAgICAoZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIudGhp
cy5zZXRfc2VxMik6CisgICAgICAgIChkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLl9fY2hh
aW5fYik6CisgICAgICAgIChkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLmZpbmRfbG9uZ2Vz
dF9tYXRjaCk6CisgICAgICAgIChkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLmdldF9tYXRj
aGluZ19ibG9ja3MpOgorICAgICAgICAoZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIudGhpcy5nZXRf
b3Bjb2Rlcyk6CisgICAgICAgIChkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLmdldF9ncm91
cGVkX29wY29kZXMpOgorICAgICAgICAoZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIudGhpcy5xdWlj
a19yYXRpbyk6CisgICAgICAgIChkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLnJlYWxfcXVp
Y2tfcmF0aW8pOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9qc2Rp
ZmZsaWIvZGlmZnZpZXcuY3NzOiBBZGRlZC4KKyAgICAgICAgKHRhYmxlLmRpZmYpOgorICAgICAg
ICAodGFibGUuZGlmZiB0Ym9keSk6CisgICAgICAgICh0YWJsZS5kaWZmIHRib2R5IHRoKToKKyAg
ICAgICAgKHRhYmxlLmRpZmYgdGhlYWQpOgorICAgICAgICAodGFibGUuZGlmZiB0aGVhZCB0aC50
ZXh0dGl0bGUpOgorICAgICAgICAodGFibGUuZGlmZiB0Ym9keSB0ZCk6CisgICAgICAgICh0YWJs
ZS5kaWZmIC5lbXB0eSk6CisgICAgICAgICh0YWJsZS5kaWZmIC5yZXBsYWNlKToKKyAgICAgICAg
KHRhYmxlLmRpZmYgLmRlbGV0ZSk6CisgICAgICAgICh0YWJsZS5kaWZmIC5za2lwKToKKyAgICAg
ICAgKHRhYmxlLmRpZmYgLmluc2VydCk6CisgICAgICAgICh0YWJsZS5kaWZmIHRoLmF1dGhvcik6
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZm
dmlldy5qczogQWRkZWQuCisgICAgICAgIChkaWZmdmlldy5idWlsZFZpZXcuY2VsdCk6CisgICAg
ICAgIChkaWZmdmlldy5idWlsZFZpZXcudGVsdCk6CisgICAgICAgIChkaWZmdmlldy5idWlsZFZp
ZXcuY3RlbHQpOgorICAgICAgICAoZGlmZnZpZXcuYnVpbGRWaWV3LmFkZENlbGxzKToKKyAgICAg
ICAgKGRpZmZ2aWV3LmJ1aWxkVmlldy5hZGRDZWxsc0lubGluZSk6CisgICAgICAgIChkaWZmdmll
dy5idWlsZFZpZXcpOgorCiAyMDEyLTA3LTMxICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBVbnJldmlld2VkLCBoYW5kbGUgbW9y
ZSB0ZXN0cyBmYWlsaW5nIGFmdGVyIHIxMjQwNTIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCmluZGV4IDk2MTMxMGRlOTU4MzQ2Yjdj
MjE0YzJkOTFjMTMxNjM5ZjRkMDc3ODYuLjcyYWVkMmUxZWZiNmIzMTNjMzE3NGYzODI5NzE1YTNj
ZDU5MzgxNTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzCkBAIC0zNjksNyArMzY5LDcgQEAgSW5zcGVjdG9yVGVzdC50ZXh0Q29u
dGVudFdpdGhMaW5lQnJlYWtzID0gZnVuY3Rpb24obm9kZSkKICAgICByZXR1cm4gYnVmZmVyOwog
fQogCi19OworfTsgLy8gaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0CiAKIHZhciBydW5UZXN0Q2Fs
bElkID0gMDsKIHZhciBjb21wbGV0ZVRlc3RDYWxsSWQgPSAxOwpAQCAtNTE1LDMgKzUxNSwxMDYg
QEAgZnVuY3Rpb24gY2xlYXJPdXRwdXQoKQogICAgICAgICBvdXRwdXRFbGVtZW50ID0gbnVsbDsK
ICAgICB9CiB9CisKK2Z1bmN0aW9uIFN0YW5kYWxvbmVUZXN0UnVubmVyKCkKK3sKKyAgICB0aGlz
Ll9wZW5kaW5nTWVzc2FnZXMgPSBbXTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVz
c2FnZSIsIHRoaXMuX29uTWVzc2FnZS5iaW5kKHRoaXMpLCB0cnVlKTsKKyAgICB0aGlzLl9pbnNw
ZWN0b3JXaW5kb3cgPSB3aW5kb3cub3BlbigiaHR0cDovL2xvY2FsaG9zdDo5MjIyIiwgdW5kZWZp
bmVkLCAibG9jYXRpb249MCIpOworfQorCitTdGFuZGFsb25lVGVzdFJ1bm5lci5wcm90b3R5cGUg
PSB7CisgICAgZHVtcEFzVGV4dDogZnVuY3Rpb24oKQorICAgIHsKKyAgICB9LAorCisgICAgd2Fp
dFVudGlsRG9uZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICB9LAorCisgICAgY2xvc2VXZWJJbnNw
ZWN0b3I6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIC8vIEluIGJhdGNoIG1vZGUgdW5kZXIg
RHVtcFJlbmRlclRyZWUgd2UgZXhpdCBoZXJlLiAKKyAgICAgICAgLy8gSW4gU3RhbmRhbG9uZSB3
ZSBwcmVwYXJlIGZvciBhbm90aGVyIHJ1biB3aGVuIHRoZSB0ZXN0IGRldnRvb2xzIHJlbG9hZHMu
CisgICAgICAgIHRoaXMuX3Jlc2V0ID0gdHJ1ZTsKKyAgICB9LAorCisgICAgbm90aWZ5RG9uZTog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGFjdHVhbCA9IGRvY3VtZW50LmJvZHkuaW5u
ZXJUZXh0ICsgIlxuIjsKKyAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmlubmVySFRN
TCA9ICIiOworCisgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICAg
ICAgdmFyIGhyZWYgPSB3aW5kb3cubG9jYXRpb24uaHJlZjsKKyAgICAgICAgdmFyIGV4dCA9IGhy
ZWYubGFzdEluZGV4T2YoIi4iKTsKKyAgICAgICAgeGhyLm9wZW4oIkdFVCIsIGhyZWYuc3Vic3Ry
aW5nKDAsIGV4dCkgKyAiLWV4cGVjdGVkLnR4dCIsIGZhbHNlKTsKKyAgICAgICAgeGhyLnNlbmQo
bnVsbCk7CisgICAgICAgIHZhciBleHBlY3RlZCA9IHhoci5yZXNwb25zZVRleHQ7CisKKyAgICAg
ICAgY29uc3QgYmFzZURpciA9ICIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVz
b3VyY2VzL2pzZGlmZmxpYi8iOworICAgICAgICB2YXIgc3R5bGVzaGVldCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImxpbmsiKTsKKyAgICAgICAgc3R5bGVzaGVldC5yZWwgPSAic3R5bGVzaGVl
dCI7CisgICAgICAgIHN0eWxlc2hlZXQudHlwZSA9ICJ0ZXh0L2NzcyI7CisgICAgICAgIHN0eWxl
c2hlZXQuaHJlZiA9IGJhc2VEaXIgKyAiZGlmZnZpZXcuY3NzIjsKKyAgICAgICAgZG9jdW1lbnQu
aGVhZC5hcHBlbmRDaGlsZChzdHlsZXNoZWV0KTsKKworICAgICAgICB2YXIgc2NyaXB0ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CisgICAgICAgIHNjcmlwdC5zcmMgPSBiYXNl
RGlyICsgImRpZmZsaWIuanMiOworICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNj
cmlwdCk7CisKKyAgICAgICAgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0
Iik7CisgICAgICAgIHNjcmlwdC5zcmMgPSBiYXNlRGlyICsgImRpZmZ2aWV3LmpzIjsKKyAgICAg
ICAgc2NyaXB0Lm9ubG9hZCA9IHZpZXdlckxvYWRlZDsKKyAgICAgICAgZG9jdW1lbnQuaGVhZC5h
cHBlbmRDaGlsZChzY3JpcHQpOworCisgICAgICAgIGZ1bmN0aW9uIHZpZXdlckxvYWRlZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBiYXNlTGluZXMgPSBkaWZmbGliLnN0cmluZ0FzTGlu
ZXMoZXhwZWN0ZWQpOworICAgICAgICAgICAgdmFyIG5ld0xpbmVzID0gIGRpZmZsaWIuc3RyaW5n
QXNMaW5lcyhhY3R1YWwpOworICAgICAgICAgICAgdmFyIHNlcXVlbmNlTWF0Y2hlciA9IG5ldyBk
aWZmbGliLlNlcXVlbmNlTWF0Y2hlcihiYXNlTGluZXMsIG5ld0xpbmVzKTsKKyAgICAgICAgICAg
IHZhciBkaWZmVmlldyA9IGRpZmZ2aWV3LmJ1aWxkVmlldyh7CisgICAgICAgICAgICAgICAgYmFz
ZVRleHRMaW5lczogYmFzZUxpbmVzLAorICAgICAgICAgICAgICAgIG5ld1RleHRMaW5lczogbmV3
TGluZXMsCisgICAgICAgICAgICAgICAgb3Bjb2Rlczogc2VxdWVuY2VNYXRjaGVyLmdldF9vcGNv
ZGVzKCksCisgICAgICAgICAgICAgICAgY29udGV4dFNpemU6IDMsCisgICAgICAgICAgICAgICAg
dmlld1R5cGU6IDEKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChkaWZmVmlldyk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgZXZhbHVhdGVJ
bldlYkluc3BlY3RvcjogZnVuY3Rpb24oY2FsbElkLCBzY3JpcHQpCisgICAgeworICAgICAgICB2
YXIgbWVzc2FnZSA9IHtjb21tYW5kOiAiZXZhbHVhdGVJbldlYkluc3BlY3RvciIsIGNhbGxJZDog
Y2FsbElkLCBzY3JpcHQ6IHNjcmlwdH07CisgICAgICAgIGlmICh0aGlzLl9pc0xvYWRlZCkKKyAg
ICAgICAgICAgIHRoaXMuX3Bvc3RNZXNzYWdlcyhbbWVzc2FnZV0pOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICB0aGlzLl9wZW5kaW5nTWVzc2FnZXMucHVzaChtZXNzYWdlKTsKKyAgICB9LAor
CisgICAgX29uTWVzc2FnZTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZl
bnQuZGF0YSA9PT0gImZyb250ZW5kTG9hZGVkIikgeworICAgICAgICAgICAgIGlmICh0aGlzLl9y
ZXNldCkgeyAgLy8gdGhlbiB3ZSBjb21wbGV0ZWQgb24gdGVzdCBydW4gYW5kIG5vdyB0aGUgdGVz
dCBkZXZ0b29scyBoYXMgcmVsb2FkZWQgZm9yIGFub3RoZXIgcnVuCisgICAgICAgICAgICAgICAg
Y2xlYXJPdXRwdXQoKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVyVGV4dCA9
dGhpcy5faW5pdGlhbFRleHQ7CisgICAgICAgICAgICAgICAgcnVuVGVzdCgpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9pbml0aWFsVGV4dCA9IGRvY3VtZW50
LmJvZHkuaW5uZXJUZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlzLl9pc0xv
YWRlZCA9IHRydWU7CisgICAgICAgICAgICB0aGlzLl9wb3N0TWVzc2FnZXModGhpcy5fcGVuZGlu
Z01lc3NhZ2VzKTsKKyAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdNZXNzYWdlcyA9IFtdOworICAg
ICAgICB9CisgICAgfSwKKworICAgIF9wb3N0TWVzc2FnZXM6IGZ1bmN0aW9uKG1lc3NhZ2VzKQor
ICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXNzYWdlcy5sZW5ndGg7ICsraSkK
KyAgICAgICAgICAgIHRoaXMuX2luc3BlY3RvcldpbmRvdy5wb3N0TWVzc2FnZShtZXNzYWdlc1tp
XSwgIioiKTsKKyAgICB9Cit9CisKK2lmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgd2luZG93
LnRlc3RSdW5uZXIgPSBuZXcgU3RhbmRhbG9uZVRlc3RSdW5uZXIoKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9qc2RpZmZsaWIvUkVBRE1F
LmFzY2lpZG9jIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pz
ZGlmZmxpYi9SRUFETUUuYXNjaWlkb2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY3ZjdhYTllM2M4ZmJiNjU3YjBl
YTQ0Y2UzN2MyMTQxYWE4NzNmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9qc2RpZmZsaWIvUkVBRE1FLmFzY2lpZG9jCkBAIC0w
LDAgKzEsMTczIEBACis9PSBqc2RpZmZsaWIgLSBBIEphdmFzY3JpcHQgdmlzdWFsIGRpZmYgdG9v
bCAmIGxpYnJhcnkKKworKiA8PGludHJvLEludHJvZHVjdGlvbj4+CisqIDw8b3ZlcnZpZXcsT3Zl
cnZpZXc+PgorKiA8PHB5dGhvbi1pbnRlcm9wLFB5dGhvbiBJbnRlcm9wZXJhYmlsaXR5Pj4KKyog
PDxkZW1vLERlbW8gJiBFeGFtcGxlcz4+CisqKiA8PGRpZmYtanMsRGlmZmluZyB1c2luZyBKYXZh
c2NyaXB0Pj4KKyoqIDw8ZGlmZi1weXRob24sRGlmZmluZyB1c2luZyBQeXRob24+PgorKiA8PHN0
YXR1cyxGdXR1cmUgRGlyZWN0aW9ucyAvIFN0YXR1cz4+CisqIDw8bGljZW5zZSxMaWNlbnNlPj4K
KyogPDxkb3dubG9hZHMsRG93bmxvYWRzPj4KKyogPDxoaXN0b3J5LFJlbGVhc2UgSGlzdG9yeT4+
CisKK1tbaW50cm9dXQorPT0gSW50cm9kdWN0aW9uCisKK2h0dHA6Ly9jZW1lcmljay5jb21bSV0g
bmVlZGVkIGEgZ29vZCBpbi1icm93c2VyIHZpc3VhbCBkaWZmIHRvb2wsIGFuZCBjb3VsZG4ndCBm
aW5kIGFueXRoaW5nIHN1aXRhYmxlLCBzbyBJIGJ1aWx0ICpqc2RpZmZsaWIqIGluIEZlYiAyMDA3
IGFuZCBvcGVuLXNvdXJjZWQgaXQgc29vbiB0aGVyZWFmdGVyLiAgSXQncyBhcHBhcmVudGx5IGJl
ZW4gdXNlZCBhIGZhaXIgYml0IHNpbmNlIHRoZW4uICBNYXliZSB5b3UnbGwgZmluZCBpdCB1c2Vm
dWwuCisKK1tbb3ZlcnZpZXddXQorPT0gT3ZlcnZpZXcKKworanNkaWZmbGliIGlzIGEgSmF2YXNj
cmlwdCBsaWJyYXJ5IHRoYXQgcHJvdmlkZXM6CisKKy4gYSBwYXJ0aWFsIHJlaW1wbGVtZW50YXRp
b24gb2YgUHl0aG9uJ3MgZGlmZmxpYiBtb2R1bGUgKHNwZWNpZmljYWxseSwgdGhlIFNlcXVlbmNl
TWF0Y2hlciBjbGFzcykKKy4gYSB2aXN1YWwgZGlmZiB2aWV3IGdlbmVyYXRvciwgdGhhdCBvZmZl
cnMgc2lkZS1ieS1zaWRlIGFzIHdlbGwgYXMgaW5saW5lIGZvcm1hdHRpbmcgb2YgZmlsZSBkYXRh
CisKK1llcywgSSByaXBwZWQgb2ZmIHRoZSBmb3JtYXR0aW5nIG9mIHRoZSBkaWZmIHZpZXcgZnJv
bSB0aGUgVHJhYyBwcm9qZWN0LiBJdCdzIGEgbmVhci1pZGVhbCBwcmVzZW50YXRpb24gb2YgZGlm
ZiBkYXRhIGFzIGZhciBhcyBJJ20gY29uY2VybmVkLiBJZiB5b3UgZG9uJ3QgYWdyZWUsIHlvdSBj
YW4gaGFjayB0aGUgQ1NTIHRvIHlvdXIgaGVhcnQncyBjb250ZW50LgorCitqc2RpZmZsaWIgZG9l
cyBub3QgcmVxdWlyZSBqUXVlcnkgb3IgYW55IG90aGVyIEphdmFzY3JpcHQgbGlicmFyeS4KKwor
W1tweXRob24taW50ZXJvcF1dCis9PSBQeXRob24gSW50ZXJvcGVyYWJpbGl0eQorCitUaGUgbWFp
biByZWFzb24gd2h5IEkgcmVpbXBsZW1lbnRlZCBQeXRob24ncyBkaWZmbGliIG1vZHVsZSBpbiBK
YXZhc2NyaXB0IHRvIHNlcnZlIGFzIHRoZSBhbGdvcml0aG1pYyBiYXNpcyBmb3IganNkaWZmbGli
IHdhcyB0aGF0IEkgZGlkbid0IHdhbnQgdG8gbWVzcyB3aXRoIHRoZSBhY3R1YWwgZGlmZiBhbGdv
cml0aG0gLS0gSSB3YW50ZWQgdG8gY29uY2VudHJhdGUgb24gZ2V0dGluZyB0aGUgaW4tYnJvd3Nl
ciB2aWV3IHJpZ2h0LiBIb3dldmVyLCBiZWNhdXNlIGpzZGlmZmxpYidzIEFQSSBtYXRjaGVzIFB5
dGhvbidzIGRpZmZsaWIncyBTZXF1ZW5jZU1hdGNoZXIgY2xhc3MgaW4gaXRzIGVudGlyZXR5LCBp
dCdzIHRyaXZpYWwgdG8gZG8gdGhlIGFjdHVhbCBkaWZmaW5nIG9uIHRoZSBzZXJ2ZXItc2lkZSwg
dXNpbmcgUHl0aG9uLCBhbmQgcGlwZSB0aGUgcmVzdWx0cyBvZiB0aGF0IGRpZmYgY2FsY3VsYXRp
b24gdG8geW91ciBpbi1icm93c2VyIGRpZmYgdmlldy4gU28sIHlvdSBoYXZlIHRoZSBjaG9pY2Ug
b2YgZG9pbmcgZXZlcnl0aGluZyBpbiBKYXZhc2NyaXB0IG9uIHRoZSBicm93c2VyLCBvciBmYWxs
aW5nIGJhY2sgdG8gc2VydmVyLXNpZGUgZGlmZiBwcm9jZXNzaW5nIGlmIHlvdSBhcmUgZGlmZmlu
ZyByZWFsbHkgbGFyZ2UgZmlsZXMuCisKK01vc3Qgb2YgdGhlIHRpbWUsIHdlIGRvIHRoZSBsYXR0
ZXIsIHNpbXBseSBiZWNhdXNlIHdoaWxlIGpzZGlmZmxpYiBpcyBwcmV0dHkgZmFzdCBhbGwgYnkg
aXRzZWxmLCBhbmQgaXMgdG90YWxseSB1c2FibGUgZm9yIGRpZmZpbmcgIm5vcm1hbCIgZmlsZXMg
KGkuZS4gZmV3ZXIgdGhhbiAxMDBLIGxpbmVzIG9yIHNvKSwgd2UgcmVndWxhcmx5IG5lZWQgdG8g
ZGlmZiBmaWxlcyB0aGF0IGFyZSAxIG9yIDIgb3JkZXJzIG9mIG1hZ25pdHVkZSBsYXJnZXIgdGhh
biB0aGF0LiBGb3IgdGhhdCwgc2VydmVyLXNpZGUgZGlmZmluZyBpcyBhIG5lY2Vzc2l0eS4KKwor
W1tkZW1vXV0KKz09IERlbW8gJiBFeGFtcGxlcworCitZb3UgY2FuIGdpdmUganNkaWZmbGliIGEg
dHJ5IHdpdGhvdXQgZG93bmxvYWRpbmcgYW55dGhpbmcuIEp1c3QgY2xpY2sgdGhlIGxpbmsgYmVs
b3csIHB1dCBzb21lIGNvbnRlbnQgdG8gYmUgZGlmZmVkIGluIHRoZSB0d28gdGV4dGJveGVzLCBh
bmQgZGlmZiBhd2F5LgorCitodHRwOi8vY2VtZXJpY2suZ2l0aHViLmNvbS9qc2RpZmZsaWIvZGVt
by5odG1sWypUcnkganNkaWZmbGliKl0KKworVGhhdCBwYWdlIGFsc28gY29udGFpbnMgYWxsIG9m
IHRoZSBleGFtcGxlcyB5b3UnbGwgbmVlZCB0byB1c2UganNkaWZmbGliIHlvdXJzZWxmLCBidXQg
bGV0J3MgbG9vayBhdCB0aGVtIGhlcmUsIGFueXdheS4KKworW1tkaWZmLWpzXV0KKz09PSBEaWZm
aW5nIHVzaW5nIEphdmFzY3JpcHQKKworSGVyZSdzIHRoZSBmdW5jdGlvbiBmcm9tIHRoZSBkZW1v
IEhUTUwgZmlsZSBsaW5rZWQgdG8gYWJvdmUgdGhhdCBkaWZmcyB0aGUgdHdvIHBpZWNlcyBvZiB0
ZXh0IGVudGVyZWQgaW50byB0aGUgdGV4dGJveGVzIG9uIHRoZSBwYWdlOgorCistLS0tCitmdW5j
dGlvbiBkaWZmVXNpbmdKUygpIHsKKyAgICAvLyBnZXQgdGhlIGJhc2VUZXh0IGFuZCBuZXdUZXh0
IHZhbHVlcyBmcm9tIHRoZSB0d28gdGV4dGJveGVzLCBhbmQgc3BsaXQgdGhlbSBpbnRvIGxpbmVz
IAorICAgIHZhciBiYXNlID0gZGlmZmxpYi5zdHJpbmdBc0xpbmVzKCQoImJhc2VUZXh0IikudmFs
dWUpOworICAgIHZhciBuZXd0eHQgPSBkaWZmbGliLnN0cmluZ0FzTGluZXMoJCgibmV3VGV4dCIp
LnZhbHVlKTsKKworICAgIC8vIGNyZWF0ZSBhIFNlcXVlbmNlTWF0Y2hlciBpbnN0YW5jZSB0aGF0
IGRpZmZzIHRoZSB0d28gc2V0cyBvZiBsaW5lcworICAgIHZhciBzbSA9IG5ldyBkaWZmbGliLlNl
cXVlbmNlTWF0Y2hlcihiYXNlLCBuZXd0eHQpOworCisgICAgLy8gZ2V0IHRoZSBvcGNvZGVzIGZy
b20gdGhlIFNlcXVlbmNlTWF0Y2hlciBpbnN0YW5jZSAKKyAgICAvLyBvcGNvZGVzIGlzIGEgbGlz
dCBvZiAzLXR1cGxlcyBkZXNjcmliaW5nIHdoYXQgY2hhbmdlcyBzaG91bGQgYmUgbWFkZSB0byB0
aGUgYmFzZSB0ZXh0IAorICAgIC8vIGluIG9yZGVyIHRvIHlpZWxkIHRoZSBuZXcgdGV4dAorICAg
IHZhciBvcGNvZGVzID0gc20uZ2V0X29wY29kZXMoKTsKKyAgICB2YXIgZGlmZm91dHB1dGRpdiA9
ICQoImRpZmZvdXRwdXQiKTsKKyAgICB3aGlsZSAoZGlmZm91dHB1dGRpdi5maXJzdENoaWxkKSBk
aWZmb3V0cHV0ZGl2LnJlbW92ZUNoaWxkKGRpZmZvdXRwdXRkaXYuZmlyc3RDaGlsZCk7CisgICAg
dmFyIGNvbnRleHRTaXplID0gJCgiY29udGV4dFNpemUiKS52YWx1ZTsKKyAgICBjb250ZXh0U2l6
ZSA9IGNvbnRleHRTaXplID8gY29udGV4dFNpemUgOiBudWxsOworCisgICAgLy8gYnVpbGQgdGhl
IGRpZmYgdmlldyBhbmQgYWRkIGl0IHRvIHRoZSBjdXJyZW50IERPTQorICAgIGRpZmZvdXRwdXRk
aXYuYXBwZW5kQ2hpbGQoZGlmZnZpZXcuYnVpbGRWaWV3KHsKKyAgICAgICAgYmFzZVRleHRMaW5l
czogYmFzZSwKKyAgICAgICAgbmV3VGV4dExpbmVzOiBuZXd0eHQsCisgICAgICAgIG9wY29kZXM6
IG9wY29kZXMsCisgICAgICAgIC8vIHNldCB0aGUgZGlzcGxheSB0aXRsZXMgZm9yIGVhY2ggcmVz
b3VyY2UgCisgICAgICAgIGJhc2VUZXh0TmFtZTogIkJhc2UgVGV4dCIsCisgICAgICAgIG5ld1Rl
eHROYW1lOiAiTmV3IFRleHQiLAorICAgICAgICBjb250ZXh0U2l6ZTogY29udGV4dFNpemUsCisg
ICAgICAgIHZpZXdUeXBlOiAkKCJpbmxpbmUiKS5jaGVja2VkID8gMSA6IDAKKyAgICB9KSk7CisK
KyAgICAvLyBzY3JvbGwgZG93biB0byB0aGUgZGlmZiB2aWV3IHdpbmRvdy4KKyAgICBsb2NhdGlv
biA9IHVybCArICIjZGlmZiI7Cit9CistLS0tCisKK1RoZXJlJ3Mgbm90IGEgd2hvbGUgbG90IHRv
IHNheSBhYm91dCB0aGlzIGZ1bmN0aW9uLiBUaGUgbW9zdCBub3RhYmxlIGFzcGVjdCBvZiBpdCBp
cyB0aGF0IHRoZSBgZGlmZnZpZXcuYnVpbGRWaWV3KClgIGZ1bmN0aW9uIHRha2VzIGFuIG9iamVj
dC9tYXAgd2l0aCBzcGVjaWZpYyBhdHRyaWJ1dGVzLCByYXRoZXIgdGhhbiBhIGxpc3Qgb2YgYXJn
dW1lbnRzLiBUaG9zZSBhdHRyaWJ1dGVzIGFyZSBtb3N0bHkgc2VsZi1leHBsYW5hdG9yeSwgYnV0
IGFyZSBub25ldGhlbGVzcyBkZXNjcmliZWQgaW4gZGV0YWlsIGluIGNvZGUgZG9jdW1lbnRhdGlv
biBpbiBkaWZmdmlldy5qcy4KKworW1tkaWZmLXB5dGhvbl1dCis9PT0gRGlmZmluZyB1c2luZyBQ
eXRob24KKworVGhpcyBpc24ndCBlbmFibGVkIGluIHRoZSBkZW1vIGxpbmsgYWJvdmUsIGJ1dCBJ
J3ZlIGluY2x1ZGVkIGl0IHRvIGV4ZW1wbGlmeSBob3cgb25lIG1pZ2h0IHVzZSB0aGUgb3Bjb2Rl
IG91dHB1dCBmcm9tIGEgd2ViLWJhc2VkIFB5dGhvbiBiYWNrZW5kIHRvIGRyaXZlIGpzZGlmZmxp
YidzIGRpZmYgdmlldy4KKworLS0tLQorZnVuY3Rpb24gZGlmZlVzaW5nUHl0aG9uKCkgeworICAg
IGRvam8uaW8uYmluZCh7CisgICAgICAgIHVybDogIi9kaWZmL3Bvc3RZaWVsZERpZmZEYXRhIiwK
KyAgICAgICAgbWV0aG9kOiAiUE9TVCIsCisgICAgICAgIGNvbnRlbnQ6IHsKKyAgICAgICAgICAg
IGJhc2VUZXh0OiAkKCJiYXNlVGV4dCIpLnZhbHVlLAorICAgICAgICAgICAgbmV3VGV4dDogJCgi
bmV3VGV4dCIpLnZhbHVlLAorICAgICAgICAgICAgaWdub3JlV2hpdGVzcGFjZTogIlkiCisgICAg
ICAgIH0sCisgICAgICAgIGxvYWQ6IGZ1bmN0aW9uICh0eXBlLCBkYXRhLCBldnQpIHsKKyAgICAg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgZGF0YSA9IGV2YWwoJygnICsgZGF0YSArICcp
Jyk7CisgICAgICAgICAgICAgICAgd2hpbGUgKGRpZmZvdXRwdXRkaXYuZmlyc3RDaGlsZCkgZGlm
Zm91dHB1dGRpdi5yZW1vdmVDaGlsZChkaWZmb3V0cHV0ZGl2LmZpcnN0Q2hpbGQpOworICAgICAg
ICAgICAgICAgICQoIm91dHB1dCIpLmFwcGVuZENoaWxkKGRpZmZ2aWV3LmJ1aWxkVmlldyh7Cisg
ICAgICAgICAgICAgICAgICAgIGJhc2VUZXh0TGluZXM6IGRhdGEuYmFzZVRleHRMaW5lcywKKyAg
ICAgICAgICAgICAgICAgICAgbmV3VGV4dExpbmVzOiBkYXRhLm5ld1RleHRMaW5lcywKKyAgICAg
ICAgICAgICAgICAgICAgb3Bjb2RlczogZGF0YS5vcGNvZGVzLAorICAgICAgICAgICAgICAgICAg
ICBiYXNlVGV4dE5hbWU6IGRhdGEuYmFzZVRleHROYW1lLAorICAgICAgICAgICAgICAgICAgICBu
ZXdUZXh0TmFtZTogZGF0YS5uZXdUZXh0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgY29udGV4
dFNpemU6IGNvbnRleHRTaXplCisgICAgICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgfSBj
YXRjaCAoZXgpIHsKKyAgICAgICAgICAgICAgICBhbGVydCgiQW4gZXJyb3Igb2NjdXJyZWQgdXBk
YXRpbmcgdGhlIGRpZmYgdmlldzpcbiIgKyBleC50b1N0cmluZygpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgZXJyb3I6IGZ1bmN0aW9uICh0eXBlLCBldnQpIHsKKyAgICAg
ICAgICAgIGFsZXJ0KCdFcnJvciBvY2N1cnJlZCBnZXR0aW5nIGRpZmYgZGF0YS4gQ2hlY2sgdGhl
IHNlcnZlciBsb2dzLicpOworICAgICAgICB9LAorICAgICAgICB0eXBlOiAndGV4dC9qYXZhc2Ny
aXB0JworICAgIH0pOworfQorLS0tLQorCitbV0FSTklOR10KKz09PT0KK1RoaXMgZG9qbyBjb2Rl
IHdhcyB3cml0dGVuIGluIDIwMDcsIGFuZCBJIGhhdmVuJ3QgX2xvb2tlZF8gYXQgZG9qbyBmb3Ig
eWVhcnMgbm93LiAgSW4gYW55IGNhc2UsIHlvdSBzaG91bGQgYmUgYWJsZSB0byBncm9rIHdoYXQn
cyBnb2luZyBvbi4KKz09PT0KKworQXMgeW91IGNhbiBzZWUsIEknbSBwYXJ0aWFsIHRvIHVzaW5n
IGRvam8gZm9yIGFqYXh5IHN0dWZmLiBBbGwgdGhhdCBpcyBoYXBwZW5pbmcgaGVyZSBpcyB0aGUg
YmFzZSBhbmQgbmV3IHRleHQgaXMgYmVpbmcgUE9TVGVkIHRvIGEgUHl0aG9uIHNlcnZlci1zaWRl
IHByb2Nlc3MgKHdlIGxpa2UgcHlsb25zLCBidXQgeW91IGNvdWxkIGp1c3QgYXMgZWFzaWx5IHVz
ZSBhIHNpbXBsZSBQeXRob24gc2NyaXB0IGFzIGEgY2dpKS4gVGhhdCBwcm9jZXNzIHRoZW4gbmVl
ZHMgdG8gZGlmZiB0aGUgcHJvdmlkZWQgdGV4dCB1c2luZyBhbiBpbnN0YW5jZSBvZiBQeXRob24n
cyBkaWZmbGliLlNlcXVlbmNlTWF0Y2hlciBjbGFzcywgYW5kIHJldHVybiB0aGUgb3Bjb2RlcyBm
cm9tIHRoYXQgU2VxdWVuY2VNYXRjaGVyIGluc3RhbmNlIHRvIHRoZSBicm93c2VyIChpbiB0aGlz
IGNhc2UsIHVzaW5nIEpTT04gc2VyaWFsaXphdGlvbikuIEluIHRoZSBpbnRlcmVzdCBvZiBjb21w
bGV0ZW5lc3MsIGhlcmUncyB0aGUgY29udHJvbGxlciBhY3Rpb24gZnJvbSBvdXIgcHlsb25zIGFw
cGxpY2F0aW9uIHRoYXQgZG9lcyB0aGlzIChkb24ndCB0cnkgdG8gbWF0Y2ggdXAgdGhlIHBhcmFt
ZXRlcnMgc2hvd24gYmVsb3cgd2l0aCB0aGUgUE9TVCBwYXJhbWV0ZXJzIHNob3duIGluIHRoZSBK
YXZhc2NyaXB0IGZ1bmN0aW9uIGFib3ZlOyB0aGUgbGF0dGVyIGlzIG9ubHkgaGVyZSBhcyBhbiBl
eGFtcGxlKToKKworLS0tLQorQGpzb25pZnkKK2RlZiBkaWZmIChzZWxmLCBiYXNlVGV4dCwgbmV3
VGV4dCwgYmFzZVRleHROYW1lPSJCYXNlIFRleHQiLCBuZXdUZXh0TmFtZT0iTmV3IFRleHQiKToK
KyAgICBvcGNvZGVzID0gU2VxdWVuY2VNYXRjaGVyKGlzanVuaywgYmFzZVRleHQsIG5ld1RleHQp
LmdldF9vcGNvZGVzKCkKKyAgICByZXR1cm4gZGljdChiYXNlVGV4dExpbmVzPWJhc2VUZXh0LCBu
ZXdUZXh0TGluZXM9bmV3VGV4dCwgb3Bjb2Rlcz1vcGNvZGVzLAorICAgICAgICAgICAgICAgIGJh
c2VUZXh0TmFtZT1iYXNlVGV4dE5hbWUsIG5ld1RleHROYW1lPW5ld1RleHROYW1lKQorLS0tLQor
CitbW3N0YXR1c11dCis9PSBGdXR1cmUgRGlyZWN0aW9ucworCitUaGUgdG9wIHByaW9yaXRpZXMg
d291bGQgYmUgdG8gaW1wbGVtZW50IHRoZSBpZ25vcmluZyBvZiBlbXB0eSBsaW5lcywgYW5kIHRo
ZSBpbmRpY2F0aW9uIG9mIGRpZmZzIGF0IHRoZSBjaGFyYWN0ZXIgbGV2ZWwgd2l0aCBzdWItaGln
aGxpZ2h0aW5nIChzaW1pbGFyIHRvIHdoYXQgVHJhYydzIGRpZmYgdmlldyBkb2VzKS4KKworSSdk
IGFsc28gbGlrZSB0byBzZWUgdGhlIGBkaWZmbGliLlNlcXVlbmNlTWF0Y2hlcmAgcmVpbXBsZW1l
bnRhdGlvbiBnYWluIHNvbWUgbW9yZSBzcGVlZCAtLSBpdCdzIHZpcnR1YWxseSBhIGxpbmUtYnkt
bGluZSB0cmFuc2xhdGlvbiBmcm9tIHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24sIHNvIHRoZXJl
J3MgcGxlbnR5IHRoYXQgY291bGQgYmUgZG9uZSB0byBtYWtlIGl0IG1vcmUgcGVyZm9ybWFudCBp
biBKYXZhc2NyaXB0LiBIb3dldmVyLCB0aGF0IHdvdWxkIG1lYW4gbWFraW5nIHRoZSByZWltcGxl
bWVudGF0aW9uIGRpdmVyZ2UgZXZlbiBtb3JlIGZyb20gdGhlICJyZWZlcmVuY2UiIFB5dGhvbiBp
bXBsZW1lbnRhdGlvbi4gR2l2ZW4gdGhhdCBJIGRvbid0IHJlYWxseSB3YW50IHRvIHdvcnJ5IGFi
b3V0IHRoZSBhbGdvcml0aG0sIHRoYXQncyBub3QgYXBwZWFsaW5nLiBJJ2QgbXVjaCByYXRoZXIg
dXNlIGEgc2VydmVyLXNpZGUgcHJvY2VzcyB3aGVuIHRoZSBpbi1icm93c2VyIGRpZmZpbmcgaXMg
YSBsaXR0bGUgdG9vIHBva2V5LgorCitPdGhlciB0aGFuIHRoYXQsIEknbSBvcGVuIHRvIHN1Z2dl
c3Rpb25zLgorCitbTk9URV0KKz09PT0KK0knbSBubyBsb25nZXIgYWN0aXZlbHkgZGV2ZWxvcGlu
ZyBqc2RpZmZsaWIuICBJdCdzIGJlZW4gc2VxdWVzdGVyZWQgKG1vc3RseSBvdXQgb2Ygc2ltcGxl
IG5lZ2xlY3QpIHRvIG15IGNvbXBhbnkncyBzZXJ2ZXJzIGZvciB0b28gbG9uZzsgbm93IHRoYXQg
aXQncyBvbiBnaXRodWIsIEknbSBob3BpbmcgdGhhdCBtYW55IG9mIHRoZSBwZW9wbGUgdGhhdCBm
aW5kIGl0IHVzZWZ1bCB3aWxsIHN1Ym1pdCBwdWxsIHJlcXVlc3RzIHRvIGltcHJvdmUgdGhlIGxp
YnJhcnkuICBJIHdpbGwgZG8gd2hhdCBJIGNhbiB0byBjdXJhdGUgdGhhdCBwcm9jZXNzLgorPT09
PQorCitbW2xpY2Vuc2VdXQorPT0gTGljZW5zZQorCitqc2RpZmZsaWIgY2FycmllcyBhIEJTRCBs
aWNlbnNlLiBBcyBzdWNoLCBpdCBtYXkgYmUgdXNlZCBpbiBvdGhlciBwcm9kdWN0cyBvciBzZXJ2
aWNlcyB3aXRoIGFwcHJvcHJpYXRlIGF0dHJpYnV0aW9uIChpbmNsdWRpbmcgY29tbWVyY2lhbCBv
ZmZlcmluZ3MpLiBUaGUgbGljZW5zZSBpcyBwcmVwZW5kZWQgdG8gZWFjaCBvZiBqc2RpZmZsaWIn
cyBmaWxlcy4KKworW1tkb3dubG9hZHNdXQorPT0gRG93bmxvYWRzCisKK2pzZGlmZmxpYiBjb25z
aXN0cyBvZiB0aHJlZSBmaWxlcyAtLSB0d28gSmF2YXNjcmlwdCBmaWxlcywgYW5kIG9uZSBDU1Mg
ZmlsZS4gV2h5IHR3byBKYXZhc2NyaXB0IGZpbGVzPyBCZWNhdXNlIEkgd2FudGVkIHRvIGtlZXAg
dGhlIHJlaW1wbGVtZW50YXRpb24gb2YgdGhlIHB5dGhvbiBkaWZmbGliLlNlcXVlbmNlTWF0Y2hl
ciBjbGFzcyBzZXBhcmF0ZSBmcm9tIHRoZSBhY3R1YWwgdmlzdWFsIGRpZmYgdmlldyBnZW5lcmF0
b3IuIEZlZWwgZnJlZSB0byBjb21iaW5lIGFuZC9vciBvcHRpbWl6ZSB0aGVtIGluIHlvdXIgZGVw
bG95bWVudCBlbnZpcm9ubWVudC4KKworWW91IGNhbiBkb3dubG9hZCB0aGUgZmlsZXMgc2VwYXJh
dGVseSBieSBuYXZpZ2F0aW5nIHRoZSBwcm9qZWN0IG9uIGdpdGh1YiwgeW91IGNhbiBjbG9uZSB0
aGUgcmVwbywgb3IgeW91IGNhbiBkb3dubG9hZCBhIHppcHBlZCBkaXN0cmlidXRpb24gdmlhIHRo
ZSAiRG93bmxvYWRzIiBidXR0b24gYXQgdGhlIHRvcCBvZiB0aGlzIHByb2plY3QgcGFnZS4KKwor
W1toaXN0b3J5XV0KKz09IFJlbGVhc2UgSGlzdG9yeQorCisqIDEuMS4wIChNYXkgMTgsIDIwMTEp
OiBNb3ZlIHByb2plY3QgdG8gZ2l0aHViOyBubyBjaGFuZ2VzIGluIGZ1bmN0aW9uYWxpdHkKKyog
MS4wLjAgKEZlYnJ1YXJ5IDIyLCAyMDA3KTogSW5pdGlhbCByZWxlYXNlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvanNkaWZmbGliL2RpZmZs
aWIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvanNkaWZm
bGliL2RpZmZsaWIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGIyYzBlM2FjNGZkM2QxOWJmYWZjZWZjMmU0Yzcw
MWJhMGJhYTE5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlcy9qc2RpZmZsaWIvZGlmZmxpYi5qcwpAQCAtMCwwICsxLDQwNyBAQAor
LyoqKgorVGhpcyBpcyBwYXJ0IG9mIGpzZGlmZmxpYiB2MS4wLiA8aHR0cDovL3Nub3d0aWRlLmNv
bS9qc2RpZmZsaWI+CisKK0NvcHlyaWdodCAoYykgMjAwNywgU25vd3RpZGUgSW5mb3JtYXRpY3Mg
U3lzdGVtcywgSW5jLgorQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNh
dGlvbiwKK2FyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIG1ldDoKKworCSogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisJCWxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCSogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorCQl0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZSBkb2N1bWVudGF0aW9uCisJCWFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorCSogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgU25vd3RpZGUgSW5m
b3JtYXRpY3MgU3lzdGVtcyBub3IgdGhlIG5hbWVzIG9mIGl0cworCQljb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz
CisJCXNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
CitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
CitPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVAorU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKK0lOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRAorVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUgorQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KK0NPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4KK0FOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNICitEQU1BR0UuCisqKiovCisvKiBBdXRob3I6IENoYXMgRW1lcmljayA8
Y2VtZXJpY2tAc25vd3RpZGUuY29tPiAqLworX193aGl0ZXNwYWNlID0geyIgIjp0cnVlLCAiXHQi
OnRydWUsICJcbiI6dHJ1ZSwgIlxmIjp0cnVlLCAiXHIiOnRydWV9OworCitkaWZmbGliID0gewor
CWRlZmF1bHRKdW5rRnVuY3Rpb246IGZ1bmN0aW9uIChjKSB7CisJCXJldHVybiBfX3doaXRlc3Bh
Y2UuaGFzT3duUHJvcGVydHkoYyk7CisJfSwKKwkKKwlzdHJpcExpbmVicmVha3M6IGZ1bmN0aW9u
IChzdHIpIHsgcmV0dXJuIHN0ci5yZXBsYWNlKC9eW1xuXHJdKnxbXG5ccl0qJC9nLCAiIik7IH0s
CisJCisJc3RyaW5nQXNMaW5lczogZnVuY3Rpb24gKHN0cikgeworCQl2YXIgbGZwb3MgPSBzdHIu
aW5kZXhPZigiXG4iKTsKKwkJdmFyIGNycG9zID0gc3RyLmluZGV4T2YoIlxyIik7CisJCXZhciBs
aW5lYnJlYWsgPSAoKGxmcG9zID4gLTEgJiYgY3Jwb3MgPiAtMSkgfHwgY3Jwb3MgPCAwKSA/ICJc
biIgOiAiXHIiOworCQkKKwkJdmFyIGxpbmVzID0gc3RyLnNwbGl0KGxpbmVicmVhayk7CisJCWZv
ciAodmFyIGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHsKKwkJCWxpbmVzW2ldID0gZGlm
ZmxpYi5zdHJpcExpbmVicmVha3MobGluZXNbaV0pOworCQl9CisJCQorCQlyZXR1cm4gbGluZXM7
CisJfSwKKwkKKwkvLyBpdGVyYXRpb24tYmFzZWQgcmVkdWNlIGltcGxlbWVudGF0aW9uCisJX19y
ZWR1Y2U6IGZ1bmN0aW9uIChmdW5jLCBsaXN0LCBpbml0aWFsKSB7CisJCWlmIChpbml0aWFsICE9
IG51bGwpIHsKKwkJCXZhciB2YWx1ZSA9IGluaXRpYWw7CisJCQl2YXIgaWR4ID0gMDsKKwkJfSBl
bHNlIGlmIChsaXN0KSB7CisJCQl2YXIgdmFsdWUgPSBsaXN0WzBdOworCQkJdmFyIGlkeCA9IDE7
CisJCX0gZWxzZSB7CisJCQlyZXR1cm4gbnVsbDsKKwkJfQorCQkKKwkJZm9yICg7IGlkeCA8IGxp
c3QubGVuZ3RoOyBpZHgrKykgeworCQkJdmFsdWUgPSBmdW5jKHZhbHVlLCBsaXN0W2lkeF0pOwor
CQl9CisJCQorCQlyZXR1cm4gdmFsdWU7CisJfSwKKwkKKwkvLyBjb21wYXJpc29uIGZ1bmN0aW9u
IGZvciBzb3J0aW5nIGxpc3RzIG9mIG51bWVyaWMgdHVwbGVzCisJX19udHVwbGVjb21wOiBmdW5j
dGlvbiAoYSwgYikgeworCQl2YXIgbWxlbiA9IE1hdGgubWF4KGEubGVuZ3RoLCBiLmxlbmd0aCk7
CisJCWZvciAodmFyIGkgPSAwOyBpIDwgbWxlbjsgaSsrKSB7CisJCQlpZiAoYVtpXSA8IGJbaV0p
IHJldHVybiAtMTsKKwkJCWlmIChhW2ldID4gYltpXSkgcmV0dXJuIDE7CisJCX0KKwkJCisJCXJl
dHVybiBhLmxlbmd0aCA9PSBiLmxlbmd0aCA/IDAgOiAoYS5sZW5ndGggPCBiLmxlbmd0aCA/IC0x
IDogMSk7CisJfSwKKwkKKwlfX2NhbGN1bGF0ZV9yYXRpbzogZnVuY3Rpb24gKG1hdGNoZXMsIGxl
bmd0aCkgeworCQlyZXR1cm4gbGVuZ3RoID8gMi4wICogbWF0Y2hlcyAvIGxlbmd0aCA6IDEuMDsK
Kwl9LAorCQorCS8vIHJldHVybnMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdHJ1ZSBpZiBhIGtl
eSBwYXNzZWQgdG8gdGhlIHJldHVybmVkIGZ1bmN0aW9uCisJLy8gaXMgaW4gdGhlIGRpY3QgKGpz
IG9iamVjdCkgcHJvdmlkZWQgdG8gdGhpcyBmdW5jdGlvbjsgcmVwbGFjZXMgYmVpbmcgYWJsZSB0
bworCS8vIGNhcnJ5IGFyb3VuZCBkaWN0Lmhhc19rZXkgaW4gcHl0aG9uLi4uCisJX19pc2luZGlj
dDogZnVuY3Rpb24gKGRpY3QpIHsKKwkJcmV0dXJuIGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIGRp
Y3QuaGFzT3duUHJvcGVydHkoa2V5KTsgfTsKKwl9LAorCQorCS8vIHJlcGxhY2VtZW50IGZvciBw
eXRob24ncyBkaWN0LmdldCBmdW5jdGlvbiAtLSBuZWVkIGVhc3kgZGVmYXVsdCB2YWx1ZXMKKwlf
X2RpY3RnZXQ6IGZ1bmN0aW9uIChkaWN0LCBrZXksIGRlZmF1bHRWYWx1ZSkgeworCQlyZXR1cm4g
ZGljdC5oYXNPd25Qcm9wZXJ0eShrZXkpID8gZGljdFtrZXldIDogZGVmYXVsdFZhbHVlOworCX0s
CQorCQorCVNlcXVlbmNlTWF0Y2hlcjogZnVuY3Rpb24gKGEsIGIsIGlzanVuaykgeworCQl0aGlz
LnNldF9zZXFzID0gZnVuY3Rpb24gKGEsIGIpIHsKKwkJCXRoaXMuc2V0X3NlcTEoYSk7CisJCQl0
aGlzLnNldF9zZXEyKGIpOworCQl9CisJCQorCQl0aGlzLnNldF9zZXExID0gZnVuY3Rpb24gKGEp
IHsKKwkJCWlmIChhID09IHRoaXMuYSkgcmV0dXJuOworCQkJdGhpcy5hID0gYTsKKwkJCXRoaXMu
bWF0Y2hpbmdfYmxvY2tzID0gdGhpcy5vcGNvZGVzID0gbnVsbDsKKwkJfQorCQkKKwkJdGhpcy5z
ZXRfc2VxMiA9IGZ1bmN0aW9uIChiKSB7CisJCQlpZiAoYiA9PSB0aGlzLmIpIHJldHVybjsKKwkJ
CXRoaXMuYiA9IGI7CisJCQl0aGlzLm1hdGNoaW5nX2Jsb2NrcyA9IHRoaXMub3Bjb2RlcyA9IHRo
aXMuZnVsbGJjb3VudCA9IG51bGw7CisJCQl0aGlzLl9fY2hhaW5fYigpOworCQl9CisJCQorCQl0
aGlzLl9fY2hhaW5fYiA9IGZ1bmN0aW9uICgpIHsKKwkJCXZhciBiID0gdGhpcy5iOworCQkJdmFy
IG4gPSBiLmxlbmd0aDsKKwkJCXZhciBiMmogPSB0aGlzLmIyaiA9IHt9OworCQkJdmFyIHBvcHVs
YXJkaWN0ID0ge307CisJCQlmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHsKKwkJ
CQl2YXIgZWx0ID0gYltpXTsKKwkJCQlpZiAoYjJqLmhhc093blByb3BlcnR5KGVsdCkpIHsKKwkJ
CQkJdmFyIGluZGljZXMgPSBiMmpbZWx0XTsKKwkJCQkJaWYgKG4gPj0gMjAwICYmIGluZGljZXMu
bGVuZ3RoICogMTAwID4gbikgeworCQkJCQkJcG9wdWxhcmRpY3RbZWx0XSA9IDE7CisJCQkJCQlk
ZWxldGUgYjJqW2VsdF07CisJCQkJCX0gZWxzZSB7CisJCQkJCQlpbmRpY2VzLnB1c2goaSk7CisJ
CQkJCX0KKwkJCQl9IGVsc2UgeworCQkJCQliMmpbZWx0XSA9IFtpXTsKKwkJCQl9CisJCQl9CisJ
CisJCQlmb3IgKHZhciBlbHQgaW4gcG9wdWxhcmRpY3QpIHsKKwkJCQlpZiAocG9wdWxhcmRpY3Qu
aGFzT3duUHJvcGVydHkoZWx0KSkgeworCQkJCQlkZWxldGUgYjJqW2VsdF07CisJCQkJfQorCQkJ
fQorCQkJCisJCQl2YXIgaXNqdW5rID0gdGhpcy5pc2p1bms7CisJCQl2YXIganVua2RpY3QgPSB7
fTsKKwkJCWlmIChpc2p1bmspIHsKKwkJCQlmb3IgKHZhciBlbHQgaW4gcG9wdWxhcmRpY3QpIHsK
KwkJCQkJaWYgKHBvcHVsYXJkaWN0Lmhhc093blByb3BlcnR5KGVsdCkgJiYgaXNqdW5rKGVsdCkp
IHsKKwkJCQkJCWp1bmtkaWN0W2VsdF0gPSAxOworCQkJCQkJZGVsZXRlIHBvcHVsYXJkaWN0W2Vs
dF07CisJCQkJCX0KKwkJCQl9CisJCQkJZm9yICh2YXIgZWx0IGluIGIyaikgeworCQkJCQlpZiAo
YjJqLmhhc093blByb3BlcnR5KGVsdCkgJiYgaXNqdW5rKGVsdCkpIHsKKwkJCQkJCWp1bmtkaWN0
W2VsdF0gPSAxOworCQkJCQkJZGVsZXRlIGIyaltlbHRdOworCQkJCQl9CisJCQkJfQorCQkJfQor
CQorCQkJdGhpcy5pc2JqdW5rID0gZGlmZmxpYi5fX2lzaW5kaWN0KGp1bmtkaWN0KTsKKwkJCXRo
aXMuaXNicG9wdWxhciA9IGRpZmZsaWIuX19pc2luZGljdChwb3B1bGFyZGljdCk7CisJCX0KKwkJ
CisJCXRoaXMuZmluZF9sb25nZXN0X21hdGNoID0gZnVuY3Rpb24gKGFsbywgYWhpLCBibG8sIGJo
aSkgeworCQkJdmFyIGEgPSB0aGlzLmE7CisJCQl2YXIgYiA9IHRoaXMuYjsKKwkJCXZhciBiMmog
PSB0aGlzLmIyajsKKwkJCXZhciBpc2JqdW5rID0gdGhpcy5pc2JqdW5rOworCQkJdmFyIGJlc3Rp
ID0gYWxvOworCQkJdmFyIGJlc3RqID0gYmxvOworCQkJdmFyIGJlc3RzaXplID0gMDsKKwkJCXZh
ciBqID0gbnVsbDsKKwkKKwkJCXZhciBqMmxlbiA9IHt9OworCQkJdmFyIG5vdGhpbmcgPSBbXTsK
KwkJCWZvciAodmFyIGkgPSBhbG87IGkgPCBhaGk7IGkrKykgeworCQkJCXZhciBuZXdqMmxlbiA9
IHt9OworCQkJCXZhciBqZGljdCA9IGRpZmZsaWIuX19kaWN0Z2V0KGIyaiwgYVtpXSwgbm90aGlu
Zyk7CisJCQkJZm9yICh2YXIgamtleSBpbiBqZGljdCkgeworCQkJCQlpZiAoamRpY3QuaGFzT3du
UHJvcGVydHkoamtleSkpIHsKKwkJCQkJCWogPSBqZGljdFtqa2V5XTsKKwkJCQkJCWlmIChqIDwg
YmxvKSBjb250aW51ZTsKKwkJCQkJCWlmIChqID49IGJoaSkgYnJlYWs7CisJCQkJCQluZXdqMmxl
bltqXSA9IGsgPSBkaWZmbGliLl9fZGljdGdldChqMmxlbiwgaiAtIDEsIDApICsgMTsKKwkJCQkJ
CWlmIChrID4gYmVzdHNpemUpIHsKKwkJCQkJCQliZXN0aSA9IGkgLSBrICsgMTsKKwkJCQkJCQli
ZXN0aiA9IGogLSBrICsgMTsKKwkJCQkJCQliZXN0c2l6ZSA9IGs7CisJCQkJCQl9CisJCQkJCX0K
KwkJCQl9CisJCQkJajJsZW4gPSBuZXdqMmxlbjsKKwkJCX0KKwkKKwkJCXdoaWxlIChiZXN0aSA+
IGFsbyAmJiBiZXN0aiA+IGJsbyAmJiAhaXNianVuayhiW2Jlc3RqIC0gMV0pICYmIGFbYmVzdGkg
LSAxXSA9PSBiW2Jlc3RqIC0gMV0pIHsKKwkJCQliZXN0aS0tOworCQkJCWJlc3RqLS07CisJCQkJ
YmVzdHNpemUrKzsKKwkJCX0KKwkJCQkKKwkJCXdoaWxlIChiZXN0aSArIGJlc3RzaXplIDwgYWhp
ICYmIGJlc3RqICsgYmVzdHNpemUgPCBiaGkgJiYKKwkJCQkJIWlzYmp1bmsoYltiZXN0aiArIGJl
c3RzaXplXSkgJiYKKwkJCQkJYVtiZXN0aSArIGJlc3RzaXplXSA9PSBiW2Jlc3RqICsgYmVzdHNp
emVdKSB7CisJCQkJYmVzdHNpemUrKzsKKwkJCX0KKwkKKwkJCXdoaWxlIChiZXN0aSA+IGFsbyAm
JiBiZXN0aiA+IGJsbyAmJiBpc2JqdW5rKGJbYmVzdGogLSAxXSkgJiYgYVtiZXN0aSAtIDFdID09
IGJbYmVzdGogLSAxXSkgeworCQkJCWJlc3RpLS07CisJCQkJYmVzdGotLTsKKwkJCQliZXN0c2l6
ZSsrOworCQkJfQorCQkJCisJCQl3aGlsZSAoYmVzdGkgKyBiZXN0c2l6ZSA8IGFoaSAmJiBiZXN0
aiArIGJlc3RzaXplIDwgYmhpICYmIGlzYmp1bmsoYltiZXN0aiArIGJlc3RzaXplXSkgJiYKKwkJ
CQkJYVtiZXN0aSArIGJlc3RzaXplXSA9PSBiW2Jlc3RqICsgYmVzdHNpemVdKSB7CisJCQkJYmVz
dHNpemUrKzsKKwkJCX0KKwkKKwkJCXJldHVybiBbYmVzdGksIGJlc3RqLCBiZXN0c2l6ZV07CisJ
CX0KKwkJCisJCXRoaXMuZ2V0X21hdGNoaW5nX2Jsb2NrcyA9IGZ1bmN0aW9uICgpIHsKKwkJCWlm
ICh0aGlzLm1hdGNoaW5nX2Jsb2NrcyAhPSBudWxsKSByZXR1cm4gdGhpcy5tYXRjaGluZ19ibG9j
a3M7CisJCQl2YXIgbGEgPSB0aGlzLmEubGVuZ3RoOworCQkJdmFyIGxiID0gdGhpcy5iLmxlbmd0
aDsKKwkKKwkJCXZhciBxdWV1ZSA9IFtbMCwgbGEsIDAsIGxiXV07CisJCQl2YXIgbWF0Y2hpbmdf
YmxvY2tzID0gW107CisJCQl2YXIgYWxvLCBhaGksIGJsbywgYmhpLCBxaSwgaSwgaiwgaywgeDsK
KwkJCXdoaWxlIChxdWV1ZS5sZW5ndGgpIHsKKwkJCQlxaSA9IHF1ZXVlLnBvcCgpOworCQkJCWFs
byA9IHFpWzBdOworCQkJCWFoaSA9IHFpWzFdOworCQkJCWJsbyA9IHFpWzJdOworCQkJCWJoaSA9
IHFpWzNdOworCQkJCXggPSB0aGlzLmZpbmRfbG9uZ2VzdF9tYXRjaChhbG8sIGFoaSwgYmxvLCBi
aGkpOworCQkJCWkgPSB4WzBdOworCQkJCWogPSB4WzFdOworCQkJCWsgPSB4WzJdOworCQorCQkJ
CWlmIChrKSB7CisJCQkJCW1hdGNoaW5nX2Jsb2Nrcy5wdXNoKHgpOworCQkJCQlpZiAoYWxvIDwg
aSAmJiBibG8gPCBqKQorCQkJCQkJcXVldWUucHVzaChbYWxvLCBpLCBibG8sIGpdKTsKKwkJCQkJ
aWYgKGkrayA8IGFoaSAmJiBqK2sgPCBiaGkpCisJCQkJCQlxdWV1ZS5wdXNoKFtpICsgaywgYWhp
LCBqICsgaywgYmhpXSk7CisJCQkJfQorCQkJfQorCQkJCisJCQltYXRjaGluZ19ibG9ja3Muc29y
dChkaWZmbGliLl9fbnR1cGxlY29tcCk7CisJCisJCQl2YXIgaTEgPSBqMSA9IGsxID0gYmxvY2sg
PSAwOworCQkJdmFyIG5vbl9hZGphY2VudCA9IFtdOworCQkJZm9yICh2YXIgaWR4IGluIG1hdGNo
aW5nX2Jsb2NrcykgeworCQkJCWlmIChtYXRjaGluZ19ibG9ja3MuaGFzT3duUHJvcGVydHkoaWR4
KSkgeworCQkJCQlibG9jayA9IG1hdGNoaW5nX2Jsb2Nrc1tpZHhdOworCQkJCQlpMiA9IGJsb2Nr
WzBdOworCQkJCQlqMiA9IGJsb2NrWzFdOworCQkJCQlrMiA9IGJsb2NrWzJdOworCQkJCQlpZiAo
aTEgKyBrMSA9PSBpMiAmJiBqMSArIGsxID09IGoyKSB7CisJCQkJCQlrMSArPSBrMjsKKwkJCQkJ
fSBlbHNlIHsKKwkJCQkJCWlmIChrMSkgbm9uX2FkamFjZW50LnB1c2goW2kxLCBqMSwgazFdKTsK
KwkJCQkJCWkxID0gaTI7CisJCQkJCQlqMSA9IGoyOworCQkJCQkJazEgPSBrMjsKKwkJCQkJfQor
CQkJCX0KKwkJCX0KKwkJCQorCQkJaWYgKGsxKSBub25fYWRqYWNlbnQucHVzaChbaTEsIGoxLCBr
MV0pOworCQorCQkJbm9uX2FkamFjZW50LnB1c2goW2xhLCBsYiwgMF0pOworCQkJdGhpcy5tYXRj
aGluZ19ibG9ja3MgPSBub25fYWRqYWNlbnQ7CisJCQlyZXR1cm4gdGhpcy5tYXRjaGluZ19ibG9j
a3M7CisJCX0KKwkJCisJCXRoaXMuZ2V0X29wY29kZXMgPSBmdW5jdGlvbiAoKSB7CisJCQlpZiAo
dGhpcy5vcGNvZGVzICE9IG51bGwpIHJldHVybiB0aGlzLm9wY29kZXM7CisJCQl2YXIgaSA9IDA7
CisJCQl2YXIgaiA9IDA7CisJCQl2YXIgYW5zd2VyID0gW107CisJCQl0aGlzLm9wY29kZXMgPSBh
bnN3ZXI7CisJCQl2YXIgYmxvY2ssIGFpLCBiaiwgc2l6ZSwgdGFnOworCQkJdmFyIGJsb2NrcyA9
IHRoaXMuZ2V0X21hdGNoaW5nX2Jsb2NrcygpOworCQkJZm9yICh2YXIgaWR4IGluIGJsb2Nrcykg
eworCQkJCWlmIChibG9ja3MuaGFzT3duUHJvcGVydHkoaWR4KSkgeworCQkJCQlibG9jayA9IGJs
b2Nrc1tpZHhdOworCQkJCQlhaSA9IGJsb2NrWzBdOworCQkJCQliaiA9IGJsb2NrWzFdOworCQkJ
CQlzaXplID0gYmxvY2tbMl07CisJCQkJCXRhZyA9ICcnOworCQkJCQlpZiAoaSA8IGFpICYmIGog
PCBiaikgeworCQkJCQkJdGFnID0gJ3JlcGxhY2UnOworCQkJCQl9IGVsc2UgaWYgKGkgPCBhaSkg
eworCQkJCQkJdGFnID0gJ2RlbGV0ZSc7CisJCQkJCX0gZWxzZSBpZiAoaiA8IGJqKSB7CisJCQkJ
CQl0YWcgPSAnaW5zZXJ0JzsKKwkJCQkJfQorCQkJCQlpZiAodGFnKSBhbnN3ZXIucHVzaChbdGFn
LCBpLCBhaSwgaiwgYmpdKTsKKwkJCQkJaSA9IGFpICsgc2l6ZTsKKwkJCQkJaiA9IGJqICsgc2l6
ZTsKKwkJCQkJCisJCQkJCWlmIChzaXplKSBhbnN3ZXIucHVzaChbJ2VxdWFsJywgYWksIGksIGJq
LCBqXSk7CisJCQkJfQorCQkJfQorCQkJCisJCQlyZXR1cm4gYW5zd2VyOworCQl9CisJCQorCQkv
LyB0aGlzIGlzIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGluIHRoZSBweXRob24gbGliLCB3aGljaCBv
ZiBjb3Vyc2UgaXMgbm90IHN1cHBvcnRlZCBpbiBqYXZhc2NyaXB0CisJCS8vIHRoZSByZWltcGxl
bWVudGF0aW9uIGJ1aWxkcyB1cCB0aGUgZ3JvdXBlZCBvcGNvZGVzIGludG8gYSBsaXN0IGluIHRo
ZWlyIGVudGlyZXR5IGFuZCByZXR1cm5zIHRoYXQuCisJCXRoaXMuZ2V0X2dyb3VwZWRfb3Bjb2Rl
cyA9IGZ1bmN0aW9uIChuKSB7CisJCQlpZiAoIW4pIG4gPSAzOworCQkJdmFyIGNvZGVzID0gdGhp
cy5nZXRfb3Bjb2RlcygpOworCQkJaWYgKCFjb2RlcykgY29kZXMgPSBbWyJlcXVhbCIsIDAsIDEs
IDAsIDFdXTsKKwkJCXZhciBjb2RlLCB0YWcsIGkxLCBpMiwgajEsIGoyOworCQkJaWYgKGNvZGVz
WzBdWzBdID09ICdlcXVhbCcpIHsKKwkJCQljb2RlID0gY29kZXNbMF07CisJCQkJdGFnID0gY29k
ZVswXTsKKwkJCQlpMSA9IGNvZGVbMV07CisJCQkJaTIgPSBjb2RlWzJdOworCQkJCWoxID0gY29k
ZVszXTsKKwkJCQlqMiA9IGNvZGVbNF07CisJCQkJY29kZXNbMF0gPSBbdGFnLCBNYXRoLm1heChp
MSwgaTIgLSBuKSwgaTIsIE1hdGgubWF4KGoxLCBqMiAtIG4pLCBqMl07CisJCQl9CisJCQlpZiAo
Y29kZXNbY29kZXMubGVuZ3RoIC0gMV1bMF0gPT0gJ2VxdWFsJykgeworCQkJCWNvZGUgPSBjb2Rl
c1tjb2Rlcy5sZW5ndGggLSAxXTsKKwkJCQl0YWcgPSBjb2RlWzBdOworCQkJCWkxID0gY29kZVsx
XTsKKwkJCQlpMiA9IGNvZGVbMl07CisJCQkJajEgPSBjb2RlWzNdOworCQkJCWoyID0gY29kZVs0
XTsKKwkJCQljb2Rlc1tjb2Rlcy5sZW5ndGggLSAxXSA9IFt0YWcsIGkxLCBNYXRoLm1pbihpMiwg
aTEgKyBuKSwgajEsIE1hdGgubWluKGoyLCBqMSArIG4pXTsKKwkJCX0KKwkKKwkJCXZhciBubiA9
IG4gKyBuOworCQkJdmFyIGdyb3VwcyA9IFtdOworCQkJZm9yICh2YXIgaWR4IGluIGNvZGVzKSB7
CisJCQkJaWYgKGNvZGVzLmhhc093blByb3BlcnR5KGlkeCkpIHsKKwkJCQkJY29kZSA9IGNvZGVz
W2lkeF07CisJCQkJCXRhZyA9IGNvZGVbMF07CisJCQkJCWkxID0gY29kZVsxXTsKKwkJCQkJaTIg
PSBjb2RlWzJdOworCQkJCQlqMSA9IGNvZGVbM107CisJCQkJCWoyID0gY29kZVs0XTsKKwkJCQkJ
aWYgKHRhZyA9PSAnZXF1YWwnICYmIGkyIC0gaTEgPiBubikgeworCQkJCQkJZ3JvdXBzLnB1c2go
W3RhZywgaTEsIE1hdGgubWluKGkyLCBpMSArIG4pLCBqMSwgTWF0aC5taW4oajIsIGoxICsgbild
KTsKKwkJCQkJCWkxID0gTWF0aC5tYXgoaTEsIGkyLW4pOworCQkJCQkJajEgPSBNYXRoLm1heChq
MSwgajItbik7CisJCQkJCX0KKwkJCQkJCisJCQkJCWdyb3Vwcy5wdXNoKFt0YWcsIGkxLCBpMiwg
ajEsIGoyXSk7CisJCQkJfQorCQkJfQorCQkJCisJCQlpZiAoZ3JvdXBzICYmIGdyb3Vwc1tncm91
cHMubGVuZ3RoIC0gMV1bMF0gPT0gJ2VxdWFsJykgZ3JvdXBzLnBvcCgpOworCQkJCisJCQlyZXR1
cm4gZ3JvdXBzOworCQl9CisJCQorCQl0aGlzLnJhdGlvID0gZnVuY3Rpb24gKCkgeworCQkJbWF0
Y2hlcyA9IGRpZmZsaWIuX19yZWR1Y2UoCisJCQkJCQkJZnVuY3Rpb24gKHN1bSwgdHJpcGxlKSB7
IHJldHVybiBzdW0gKyB0cmlwbGVbdHJpcGxlLmxlbmd0aCAtIDFdOyB9LAorCQkJCQkJCXRoaXMu
Z2V0X21hdGNoaW5nX2Jsb2NrcygpLCAwKTsKKwkJCXJldHVybiBkaWZmbGliLl9fY2FsY3VsYXRl
X3JhdGlvKG1hdGNoZXMsIHRoaXMuYS5sZW5ndGggKyB0aGlzLmIubGVuZ3RoKTsKKwkJfQorCQkK
KwkJdGhpcy5xdWlja19yYXRpbyA9IGZ1bmN0aW9uICgpIHsKKwkJCXZhciBmdWxsYmNvdW50LCBl
bHQ7CisJCQlpZiAodGhpcy5mdWxsYmNvdW50ID09IG51bGwpIHsKKwkJCQl0aGlzLmZ1bGxiY291
bnQgPSBmdWxsYmNvdW50ID0ge307CisJCQkJZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmIubGVu
Z3RoOyBpKyspIHsKKwkJCQkJZWx0ID0gdGhpcy5iW2ldOworCQkJCQlmdWxsYmNvdW50W2VsdF0g
PSBkaWZmbGliLl9fZGljdGdldChmdWxsYmNvdW50LCBlbHQsIDApICsgMTsKKwkJCQl9CisJCQl9
CisJCQlmdWxsYmNvdW50ID0gdGhpcy5mdWxsYmNvdW50OworCQorCQkJdmFyIGF2YWlsID0ge307
CisJCQl2YXIgYXZhaWxoYXMgPSBkaWZmbGliLl9faXNpbmRpY3QoYXZhaWwpOworCQkJdmFyIG1h
dGNoZXMgPSBudW1iID0gMDsKKwkJCWZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5hLmxlbmd0aDsg
aSsrKSB7CisJCQkJZWx0ID0gdGhpcy5hW2ldOworCQkJCWlmIChhdmFpbGhhcyhlbHQpKSB7CisJ
CQkJCW51bWIgPSBhdmFpbFtlbHRdOworCQkJCX0gZWxzZSB7CisJCQkJCW51bWIgPSBkaWZmbGli
Ll9fZGljdGdldChmdWxsYmNvdW50LCBlbHQsIDApOworCQkJCX0KKwkJCQlhdmFpbFtlbHRdID0g
bnVtYiAtIDE7CisJCQkJaWYgKG51bWIgPiAwKSBtYXRjaGVzKys7CisJCQl9CisJCQkKKwkJCXJl
dHVybiBkaWZmbGliLl9fY2FsY3VsYXRlX3JhdGlvKG1hdGNoZXMsIHRoaXMuYS5sZW5ndGggKyB0
aGlzLmIubGVuZ3RoKTsKKwkJfQorCQkKKwkJdGhpcy5yZWFsX3F1aWNrX3JhdGlvID0gZnVuY3Rp
b24gKCkgeworCQkJdmFyIGxhID0gdGhpcy5hLmxlbmd0aDsKKwkJCXZhciBsYiA9IHRoaXMuYi5s
ZW5ndGg7CisJCQlyZXR1cm4gX2NhbGN1bGF0ZV9yYXRpbyhNYXRoLm1pbihsYSwgbGIpLCBsYSAr
IGxiKTsKKwkJfQorCQkKKwkJdGhpcy5pc2p1bmsgPSBpc2p1bmsgPyBpc2p1bmsgOiBkaWZmbGli
LmRlZmF1bHRKdW5rRnVuY3Rpb247CisJCXRoaXMuYSA9IHRoaXMuYiA9IG51bGw7CisJCXRoaXMu
c2V0X3NlcXMoYSwgYik7CisJfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZmdmlldy5jc3MgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvanNkaWZmbGliL2RpZmZ2aWV3LmNzcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44MTFhNTkzYjc3ZmJhNGI4ZTk1ZjVlMTgwM2MyMWQwNzdmMzlhZDFmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2Vz
L2pzZGlmZmxpYi9kaWZmdmlldy5jc3MKQEAgLTAsMCArMSw4MyBAQAorLyoKK1RoaXMgaXMgcGFy
dCBvZiBqc2RpZmZsaWIgdjEuMC4gPGh0dHA6Ly9naXRodWIuY29tL2NlbWVyaWNrL2pzZGlmZmxp
Yj4KKworQ29weXJpZ2h0IDIwMDcgLSAyMDExIENoYXMgRW1lcmljayA8Y2VtZXJpY2tAc25vd3Rp
ZGUuY29tPi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwg
YXJlCitwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
IG1ldDoKKworICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YKKyAgICAgIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKworICAgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3QKKyAgICAgIG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgICAgICBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQ2hhcyBFbWVyaWNrIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAor
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENoYXMgRW1lcmljayBP
UgorQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKK0NPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKK1NFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KK0FOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcKK05FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRgorQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK1RoZSB2aWV3cyBhbmQgY29uY2x1c2lvbnMgY29u
dGFpbmVkIGluIHRoZSBzb2Z0d2FyZSBhbmQgZG9jdW1lbnRhdGlvbiBhcmUgdGhvc2Ugb2YgdGhl
CithdXRob3JzIGFuZCBzaG91bGQgbm90IGJlIGludGVycHJldGVkIGFzIHJlcHJlc2VudGluZyBv
ZmZpY2lhbCBwb2xpY2llcywgZWl0aGVyIGV4cHJlc3NlZAorb3IgaW1wbGllZCwgb2YgQ2hhcyBF
bWVyaWNrLgorKi8KK3RhYmxlLmRpZmYgeworCWJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTsKKwli
b3JkZXI6MXB4IHNvbGlkIGRhcmtncmF5OworCXdoaXRlLXNwYWNlOnByZS13cmFwCit9Cit0YWJs
ZS5kaWZmIHRib2R5IHsgCisJZm9udC1mYW1pbHk6Q291cmllciwgbW9ub3NwYWNlCit9Cit0YWJs
ZS5kaWZmIHRib2R5IHRoIHsKKwlmb250LWZhbWlseTp2ZXJkYW5hLGFyaWFsLCdCaXRzdHJlYW0g
VmVyYSBTYW5zJyxoZWx2ZXRpY2Esc2Fucy1zZXJpZjsKKwliYWNrZ3JvdW5kOiNFRUQ7CisJZm9u
dC1zaXplOjExcHg7CisJZm9udC13ZWlnaHQ6bm9ybWFsOworCWJvcmRlcjoxcHggc29saWQgI0JC
QzsKKwljb2xvcjojODg2OworCXBhZGRpbmc6LjNlbSAuNWVtIC4xZW0gMmVtOworCXRleHQtYWxp
Z246cmlnaHQ7CisJdmVydGljYWwtYWxpZ246dG9wCit9Cit0YWJsZS5kaWZmIHRoZWFkIHsKKwli
b3JkZXItYm90dG9tOjFweCBzb2xpZCAjQkJDOworCWJhY2tncm91bmQ6I0VGRUZFRjsKKwlmb250
LWZhbWlseTpWZXJkYW5hCit9Cit0YWJsZS5kaWZmIHRoZWFkIHRoLnRleHR0aXRsZSB7CisJdGV4
dC1hbGlnbjpsZWZ0Cit9Cit0YWJsZS5kaWZmIHRib2R5IHRkIHsKKwlwYWRkaW5nOjBweCAuNGVt
OworCXBhZGRpbmctdG9wOi40ZW07CisJdmVydGljYWwtYWxpZ246dG9wOworfQordGFibGUuZGlm
ZiAuZW1wdHkgeworCWJhY2tncm91bmQtY29sb3I6I0RERDsKK30KK3RhYmxlLmRpZmYgLnJlcGxh
Y2UgeworCWJhY2tncm91bmQtY29sb3I6I0ZEOAorfQordGFibGUuZGlmZiAuZGVsZXRlIHsKKwli
YWNrZ3JvdW5kLWNvbG9yOiNFOTk7Cit9Cit0YWJsZS5kaWZmIC5za2lwIHsKKwliYWNrZ3JvdW5k
LWNvbG9yOiNFRkVGRUY7CisJYm9yZGVyOjFweCBzb2xpZCAjQUFBOworCWJvcmRlci1yaWdodDox
cHggc29saWQgI0JCQzsKK30KK3RhYmxlLmRpZmYgLmluc2VydCB7CisJYmFja2dyb3VuZC1jb2xv
cjojOUU5Cit9Cit0YWJsZS5kaWZmIHRoLmF1dGhvciB7CisJdGV4dC1hbGlnbjpyaWdodDsKKwli
b3JkZXItdG9wOjFweCBzb2xpZCAjQkJDOworCWJhY2tncm91bmQ6I0VGRUZFRgorfQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9qc2RpZmZsaWIvZGlmZnZpZXcuanMgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvanNkaWZmbGliL2RpZmZ2aWV3LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmEyMjhhMzRkMmI2YzRlM2IzOTMyMzJkODYwYzg0ZGZiZDlmZTVhYjQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvanNk
aWZmbGliL2RpZmZ2aWV3LmpzCkBAIC0wLDAgKzEsMTk3IEBACisvKgorVGhpcyBpcyBwYXJ0IG9m
IGpzZGlmZmxpYiB2MS4wLiA8aHR0cDovL2dpdGh1Yi5jb20vY2VtZXJpY2svanNkaWZmbGliPgor
CitDb3B5cmlnaHQgMjAwNyAtIDIwMTEgQ2hhcyBFbWVyaWNrIDxjZW1lcmlja0Bzbm93dGlkZS5j
b20+LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUK
K3Blcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0
OgorCisgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZgorICAgICAgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCisgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdAorICAgICAgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAgICAgIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBDaGFzIEVtZXJpY2sgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECitXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5ECitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ2hhcyBFbWVyaWNrIE9SCitD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORworTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGCitBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworVGhlIHZpZXdzIGFuZCBjb25jbHVzaW9ucyBjb250YWlu
ZWQgaW4gdGhlIHNvZnR3YXJlIGFuZCBkb2N1bWVudGF0aW9uIGFyZSB0aG9zZSBvZiB0aGUKK2F1
dGhvcnMgYW5kIHNob3VsZCBub3QgYmUgaW50ZXJwcmV0ZWQgYXMgcmVwcmVzZW50aW5nIG9mZmlj
aWFsIHBvbGljaWVzLCBlaXRoZXIgZXhwcmVzc2VkCitvciBpbXBsaWVkLCBvZiBDaGFzIEVtZXJp
Y2suCisqLworZGlmZnZpZXcgPSB7CisJLyoqCisJICogQnVpbGRzIGFuZCByZXR1cm5zIGEgdmlz
dWFsIGRpZmYgdmlldy4gIFRoZSBzaW5nbGUgcGFyYW1ldGVyLCBgcGFyYW1zJywgc2hvdWxkIGNv
bnRhaW4KKwkgKiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKwkgKgorCSAqIC0gYmFzZVRleHRMaW5l
czogdGhlIGFycmF5IG9mIHN0cmluZ3MgdGhhdCB3YXMgdXNlZCBhcyB0aGUgYmFzZSB0ZXh0IGlu
cHV0IHRvIFNlcXVlbmNlTWF0Y2hlcgorCSAqIC0gbmV3VGV4dExpbmVzOiB0aGUgYXJyYXkgb2Yg
c3RyaW5ncyB0aGF0IHdhcyB1c2VkIGFzIHRoZSBuZXcgdGV4dCBpbnB1dCB0byBTZXF1ZW5jZU1h
dGNoZXIKKwkgKiAtIG9wY29kZXM6IHRoZSBhcnJheSBvZiBhcnJheXMgcmV0dXJuZWQgYnkgU2Vx
dWVuY2VNYXRjaGVyLmdldF9vcGNvZGVzKCkKKwkgKiAtIGJhc2VUZXh0TmFtZTogdGhlIHRpdGxl
IHRvIGJlIGRpc3BsYXllZCBhYm92ZSB0aGUgYmFzZSB0ZXh0IGxpc3RpbmcgaW4gdGhlIGRpZmYg
dmlldzsgZGVmYXVsdHMKKwkgKgkgICB0byAiQmFzZSBUZXh0IgorCSAqIC0gbmV3VGV4dE5hbWU6
IHRoZSB0aXRsZSB0byBiZSBkaXNwbGF5ZWQgYWJvdmUgdGhlIG5ldyB0ZXh0IGxpc3RpbmcgaW4g
dGhlIGRpZmYgdmlldzsgZGVmYXVsdHMKKwkgKgkgICB0byAiTmV3IFRleHQiCisJICogLSBjb250
ZXh0U2l6ZTogdGhlIG51bWJlciBvZiBsaW5lcyBvZiBjb250ZXh0IHRvIHNob3cgYXJvdW5kIGRp
ZmZlcmVuY2VzOyBieSBkZWZhdWx0LCBhbGwgbGluZXMKKwkgKgkgICBhcmUgc2hvd24KKwkgKiAt
IHZpZXdUeXBlOiBpZiAwLCBhIHNpZGUtYnktc2lkZSBkaWZmIHZpZXcgaXMgZ2VuZXJhdGVkIChk
ZWZhdWx0KTsgaWYgMSwgYW4gaW5saW5lIGRpZmYgdmlldyBpcworCSAqCSAgIGdlbmVyYXRlZAor
CSAqLworCWJ1aWxkVmlldzogZnVuY3Rpb24gKHBhcmFtcykgeworCQl2YXIgYmFzZVRleHRMaW5l
cyA9IHBhcmFtcy5iYXNlVGV4dExpbmVzOworCQl2YXIgbmV3VGV4dExpbmVzID0gcGFyYW1zLm5l
d1RleHRMaW5lczsKKwkJdmFyIG9wY29kZXMgPSBwYXJhbXMub3Bjb2RlczsKKwkJdmFyIGJhc2VU
ZXh0TmFtZSA9IHBhcmFtcy5iYXNlVGV4dE5hbWUgPyBwYXJhbXMuYmFzZVRleHROYW1lIDogIkJh
c2UgVGV4dCI7CisJCXZhciBuZXdUZXh0TmFtZSA9IHBhcmFtcy5uZXdUZXh0TmFtZSA/IHBhcmFt
cy5uZXdUZXh0TmFtZSA6ICJOZXcgVGV4dCI7CisJCXZhciBjb250ZXh0U2l6ZSA9IHBhcmFtcy5j
b250ZXh0U2l6ZTsKKwkJdmFyIGlubGluZSA9IChwYXJhbXMudmlld1R5cGUgPT0gMCB8fCBwYXJh
bXMudmlld1R5cGUgPT0gMSkgPyBwYXJhbXMudmlld1R5cGUgOiAwOworCisJCWlmIChiYXNlVGV4
dExpbmVzID09IG51bGwpCisJCQl0aHJvdyAiQ2Fubm90IGJ1aWxkIGRpZmYgdmlldzsgYmFzZVRl
eHRMaW5lcyBpcyBub3QgZGVmaW5lZC4iOworCQlpZiAobmV3VGV4dExpbmVzID09IG51bGwpCisJ
CQl0aHJvdyAiQ2Fubm90IGJ1aWxkIGRpZmYgdmlldzsgbmV3VGV4dExpbmVzIGlzIG5vdCBkZWZp
bmVkLiI7CisJCWlmICghb3Bjb2RlcykKKwkJCXRocm93ICJDYW5ubyBidWlsZCBkaWZmIHZpZXc7
IG9wY29kZXMgaXMgbm90IGRlZmluZWQuIjsKKwkJCisJCWZ1bmN0aW9uIGNlbHQgKG5hbWUsIGNs
YXp6KSB7CisJCQl2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSk7CisJCQllLmNs
YXNzTmFtZSA9IGNsYXp6OworCQkJcmV0dXJuIGU7CisJCX0KKwkJCisJCWZ1bmN0aW9uIHRlbHQg
KG5hbWUsIHRleHQpIHsKKwkJCXZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKTsK
KwkJCWUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpOworCQkJcmV0
dXJuIGU7CisJCX0KKwkJCisJCWZ1bmN0aW9uIGN0ZWx0IChuYW1lLCBjbGF6eiwgdGV4dCkgewor
CQkJdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KG5hbWUpOworCQkJZS5jbGFzc05hbWUg
PSBjbGF6ejsKKwkJCWUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkp
OworCQkJcmV0dXJuIGU7CisJCX0KKwkKKwkJdmFyIHRkYXRhID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgidGhlYWQiKTsKKwkJdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIp
OworCQl0ZGF0YS5hcHBlbmRDaGlsZChub2RlKTsKKwkJaWYgKGlubGluZSkgeworCQkJbm9kZS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpKTsKKwkJCW5vZGUuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKSk7CisJCQlub2RlLmFwcGVuZENoaWxk
KGN0ZWx0KCJ0aCIsICJ0ZXh0dGl0bGUiLCBiYXNlVGV4dE5hbWUgKyAiIHZzLiAiICsgbmV3VGV4
dE5hbWUpKTsKKwkJfSBlbHNlIHsKKwkJCW5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgidGgiKSk7CisJCQlub2RlLmFwcGVuZENoaWxkKGN0ZWx0KCJ0aCIsICJ0ZXh0dGl0
bGUiLCBiYXNlVGV4dE5hbWUpKTsKKwkJCW5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgidGgiKSk7CisJCQlub2RlLmFwcGVuZENoaWxkKGN0ZWx0KCJ0aCIsICJ0ZXh0dGl0
bGUiLCBuZXdUZXh0TmFtZSkpOworCQl9CisJCXRkYXRhID0gW3RkYXRhXTsKKwkJCisJCXZhciBy
b3dzID0gW107CisJCXZhciBub2RlMjsKKwkJCisJCS8qKgorCQkgKiBBZGRzIHR3byBjZWxscyB0
byB0aGUgZ2l2ZW4gcm93OyBpZiB0aGUgZ2l2ZW4gcm93IGNvcnJlc3BvbmRzIHRvIGEgcmVhbAor
CQkgKiBsaW5lIG51bWJlciAoYmFzZWQgb24gdGhlIGxpbmUgaW5kZXggdGlkeCBhbmQgdGhlIGVu
ZHBvaW50IG9mIHRoZSAKKwkJICogcmFuZ2UgaW4gcXVlc3Rpb24gdGVuZCksIHRoZW4gdGhlIGNl
bGxzIHdpbGwgY29udGFpbiB0aGUgbGluZSBudW1iZXIKKwkJICogYW5kIHRoZSBsaW5lIG9mIHRl
eHQgZnJvbSB0ZXh0TGluZXMgYXQgcG9zaXRpb24gdGlkeCAod2l0aCB0aGUgY2xhc3Mgb2YKKwkJ
ICogdGhlIHNlY29uZCBjZWxsIHNldCB0byB0aGUgbmFtZSBvZiB0aGUgY2hhbmdlIHJlcHJlc2Vu
dGVkKSwgYW5kIHRpZHggKyAxIHdpbGwKKwkJICogYmUgcmV0dXJuZWQuCSBPdGhlcndpc2UsIHRp
ZHggaXMgcmV0dXJuZWQsIGFuZCB0d28gZW1wdHkgY2VsbHMgYXJlIGFkZGVkCisJCSAqIHRvIHRo
ZSBnaXZlbiByb3cuCisJCSAqLworCQlmdW5jdGlvbiBhZGRDZWxscyAocm93LCB0aWR4LCB0ZW5k
LCB0ZXh0TGluZXMsIGNoYW5nZSkgeworCQkJaWYgKHRpZHggPCB0ZW5kKSB7CisJCQkJcm93LmFw
cGVuZENoaWxkKHRlbHQoInRoIiwgKHRpZHggKyAxKS50b1N0cmluZygpKSk7CisJCQkJcm93LmFw
cGVuZENoaWxkKGN0ZWx0KCJ0ZCIsIGNoYW5nZSwgdGV4dExpbmVzW3RpZHhdLnJlcGxhY2UoL1x0
L2csICJcdTAwYTBcdTAwYTBcdTAwYTBcdTAwYTAiKSkpOworCQkJCXJldHVybiB0aWR4ICsgMTsK
KwkJCX0gZWxzZSB7CisJCQkJcm93LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InRoIikpOworCQkJCXJvdy5hcHBlbmRDaGlsZChjZWx0KCJ0ZCIsICJlbXB0eSIpKTsKKwkJCQly
ZXR1cm4gdGlkeDsKKwkJCX0KKwkJfQorCQkKKwkJZnVuY3Rpb24gYWRkQ2VsbHNJbmxpbmUgKHJv
dywgdGlkeCwgdGlkeDIsIHRleHRMaW5lcywgY2hhbmdlKSB7CisJCQlyb3cuYXBwZW5kQ2hpbGQo
dGVsdCgidGgiLCB0aWR4ID09IG51bGwgPyAiIiA6ICh0aWR4ICsgMSkudG9TdHJpbmcoKSkpOwor
CQkJcm93LmFwcGVuZENoaWxkKHRlbHQoInRoIiwgdGlkeDIgPT0gbnVsbCA/ICIiIDogKHRpZHgy
ICsgMSkudG9TdHJpbmcoKSkpOworCQkJcm93LmFwcGVuZENoaWxkKGN0ZWx0KCJ0ZCIsIGNoYW5n
ZSwgdGV4dExpbmVzW3RpZHggIT0gbnVsbCA/IHRpZHggOiB0aWR4Ml0ucmVwbGFjZSgvXHQvZywg
Ilx1MDBhMFx1MDBhMFx1MDBhMFx1MDBhMCIpKSk7CisJCX0KKwkJCisJCWZvciAodmFyIGlkeCA9
IDA7IGlkeCA8IG9wY29kZXMubGVuZ3RoOyBpZHgrKykgeworCQkJY29kZSA9IG9wY29kZXNbaWR4
XTsKKwkJCWNoYW5nZSA9IGNvZGVbMF07CisJCQl2YXIgYiA9IGNvZGVbMV07CisJCQl2YXIgYmUg
PSBjb2RlWzJdOworCQkJdmFyIG4gPSBjb2RlWzNdOworCQkJdmFyIG5lID0gY29kZVs0XTsKKwkJ
CXZhciByb3djbnQgPSBNYXRoLm1heChiZSAtIGIsIG5lIC0gbik7CisJCQl2YXIgdG9wcm93cyA9
IFtdOworCQkJdmFyIGJvdHJvd3MgPSBbXTsKKwkJCWZvciAodmFyIGkgPSAwOyBpIDwgcm93Y250
OyBpKyspIHsKKwkJCQkvLyBqdW1wIGFoZWFkIGlmIHdlJ3ZlIGFscmVkeSBwcm92aWRlZCBsZWFk
aW5nIGNvbnRleHQgb3IgaWYgdGhpcyBpcyB0aGUgZmlyc3QgcmFuZ2UKKwkJCQlpZiAoY29udGV4
dFNpemUgJiYgb3Bjb2Rlcy5sZW5ndGggPiAxICYmICgoaWR4ID4gMCAmJiBpID09IGNvbnRleHRT
aXplKSB8fCAoaWR4ID09IDAgJiYgaSA9PSAwKSkgJiYgY2hhbmdlPT0iZXF1YWwiKSB7CisJCQkJ
CXZhciBqdW1wID0gcm93Y250IC0gKChpZHggPT0gMCA/IDEgOiAyKSAqIGNvbnRleHRTaXplKTsK
KwkJCQkJaWYgKGp1bXAgPiAxKSB7CisJCQkJCQl0b3Byb3dzLnB1c2gobm9kZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInRyIikpOworCQkJCQkJCisJCQkJCQliICs9IGp1bXA7CisJCQkJCQlu
ICs9IGp1bXA7CisJCQkJCQlpICs9IGp1bXAgLSAxOworCQkJCQkJbm9kZS5hcHBlbmRDaGlsZCh0
ZWx0KCJ0aCIsICIuLi4iKSk7CisJCQkJCQlpZiAoIWlubGluZSkgbm9kZS5hcHBlbmRDaGlsZChj
dGVsdCgidGQiLCAic2tpcCIsICIiKSk7CisJCQkJCQlub2RlLmFwcGVuZENoaWxkKHRlbHQoInRo
IiwgIi4uLiIpKTsKKwkJCQkJCW5vZGUuYXBwZW5kQ2hpbGQoY3RlbHQoInRkIiwgInNraXAiLCAi
IikpOworCQkJCQkJCisJCQkJCQkvLyBza2lwIGxhc3QgbGluZXMgaWYgdGhleSdyZSBhbGwgZXF1
YWwKKwkJCQkJCWlmIChpZHggKyAxID09IG9wY29kZXMubGVuZ3RoKSB7CisJCQkJCQkJYnJlYWs7
CisJCQkJCQl9IGVsc2UgeworCQkJCQkJCWNvbnRpbnVlOworCQkJCQkJfQorCQkJCQl9CisJCQkJ
fQorCQkJCQorCQkJCXRvcHJvd3MucHVzaChub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
dHIiKSk7CisJCQkJaWYgKGlubGluZSkgeworCQkJCQlpZiAoY2hhbmdlID09ICJpbnNlcnQiKSB7
CisJCQkJCQlhZGRDZWxsc0lubGluZShub2RlLCBudWxsLCBuKyssIG5ld1RleHRMaW5lcywgY2hh
bmdlKTsKKwkJCQkJfSBlbHNlIGlmIChjaGFuZ2UgPT0gInJlcGxhY2UiKSB7CisJCQkJCQlib3Ry
b3dzLnB1c2gobm9kZTIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpKTsKKwkJCQkJCWlm
IChiIDwgYmUpIGFkZENlbGxzSW5saW5lKG5vZGUsIGIrKywgbnVsbCwgYmFzZVRleHRMaW5lcywg
ImRlbGV0ZSIpOworCQkJCQkJaWYgKG4gPCBuZSkgYWRkQ2VsbHNJbmxpbmUobm9kZTIsIG51bGws
IG4rKywgbmV3VGV4dExpbmVzLCAiaW5zZXJ0Iik7CisJCQkJCX0gZWxzZSBpZiAoY2hhbmdlID09
ICJkZWxldGUiKSB7CisJCQkJCQlhZGRDZWxsc0lubGluZShub2RlLCBiKyssIG51bGwsIGJhc2VU
ZXh0TGluZXMsIGNoYW5nZSk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQkvLyBlcXVhbAorCQkJCQkJ
YWRkQ2VsbHNJbmxpbmUobm9kZSwgYisrLCBuKyssIGJhc2VUZXh0TGluZXMsIGNoYW5nZSk7CisJ
CQkJCX0KKwkJCQl9IGVsc2UgeworCQkJCQliID0gYWRkQ2VsbHMobm9kZSwgYiwgYmUsIGJhc2VU
ZXh0TGluZXMsIGNoYW5nZSk7CisJCQkJCW4gPSBhZGRDZWxscyhub2RlLCBuLCBuZSwgbmV3VGV4
dExpbmVzLCBjaGFuZ2UpOworCQkJCX0KKwkJCX0KKworCQkJZm9yICh2YXIgaSA9IDA7IGkgPCB0
b3Byb3dzLmxlbmd0aDsgaSsrKSByb3dzLnB1c2godG9wcm93c1tpXSk7CisJCQlmb3IgKHZhciBp
ID0gMDsgaSA8IGJvdHJvd3MubGVuZ3RoOyBpKyspIHJvd3MucHVzaChib3Ryb3dzW2ldKTsKKwkJ
fQorCQkKKwkJcm93cy5wdXNoKG5vZGUgPSBjdGVsdCgidGgiLCAiYXV0aG9yIiwgImRpZmYgdmll
dyBnZW5lcmF0ZWQgYnkgIikpOworCQlub2RlLnNldEF0dHJpYnV0ZSgiY29sc3BhbiIsIGlubGlu
ZSA/IDMgOiA0KTsKKwkJbm9kZS5hcHBlbmRDaGlsZChub2RlMiA9IHRlbHQoImEiLCAianNkaWZm
bGliIikpOworCQlub2RlMi5zZXRBdHRyaWJ1dGUoImhyZWYiLCAiaHR0cDovL2dpdGh1Yi5jb20v
Y2VtZXJpY2svanNkaWZmbGliIik7CisJCQorCQl0ZGF0YS5wdXNoKG5vZGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJ0Ym9keSIpKTsKKwkJZm9yICh2YXIgaWR4IGluIHJvd3MpIG5vZGUuYXBw
ZW5kQ2hpbGQocm93c1tpZHhdKTsKKwkJCisJCW5vZGUgPSBjZWx0KCJ0YWJsZSIsICJkaWZmIiAr
IChpbmxpbmUgPyAiIGlubGluZWRpZmYiIDogIiIpKTsKKwkJZm9yICh2YXIgaWR4IGluIHRkYXRh
KSBub2RlLmFwcGVuZENoaWxkKHRkYXRhW2lkeF0pOworCQlyZXR1cm4gbm9kZTsKKwl9Cit9Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157383</attachid>
            <date>2012-08-08 21:59:24 -0700</date>
            <delta_ts>2012-08-09 16:42:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92429-20120808215857.patch</filename>
            <type>text/plain</type>
            <size>44407</size>
            <attacher name="johnjbarton">johnjbarton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg4NTZiYTA2NjU0NDlj
MGJhNTlmY2EyNjFjZGUyMmQ3NDk2MmIxMy4uNGM1YWFkMzE3ZjEzMzRjODZjNTA2NTZlMTRmMmVm
MWNiYzdlMjM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA4LTA4ICBKb2hu
IEogQmFydG9uICA8am9obmpiYXJ0b25Aam9obmpiYXJ0b24uY29tPgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IEFkZCBzdXBwb3J0IGZvciBkZWJ1Z2dpbmcgSW5zcGVjdG9yIExheW91dFRlc3Rz
IHcvSW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MjQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+IFRlc3RDb250cm9sbGVy
IG5vdyBub3RpZmllcyBlbWJlZGRlciB1cG9uIGxvYWRlZC4KKyAgICAgICAgSm9obiBKLiBCYXJ0
b24gPGpvaG5qYmFydG9uQGNocm9taXVtLm9yZz4gYWRkIHNvdXJjZVVSTCB0byBldmFsIGZvciBk
ZWJ1Z2dpbmcKKworICAgICAgICBJbiB0aGlzIHZlcnNpb24gVGVzdENvbnRyb2xsZXIubG9hZENv
bXBsZXRlZCBpcyBzdGlsbCBjYWxsZWQgYnkgaW5zcGVjdG9yLmpzLgorICAgICAgICBJZiBUZXN0
Q29udHJvbGxlciBmaW5kcyBhICcudGVzdFJ1bm5lcicgaWZyYW1lIGl0IHNlbmRzIGl0IGEgbWVz
c2FnZSBhbmQgbGlzdGVucyBmb3IgY29tbWFuZHMuCisgICAgICAgIElmIHRoZSBTdGFuZGFsb25l
VGVzdFJ1bm5lciBpcyBydW5uaW5nIGluIHRoZSAudGVzdFJ1bm5lciBpZnJhbWUsIGl0IGhlYXJz
IHRoZSBUZXN0Q29udHJvbGxlcgorICAgICAgICBtZXNzYWdlIGFuZCByZXBsaWVzIHdpdGggaXRz
IHBlbmRpbmcgdGVzdC1kcml2ZXIgbWVzc2FnZXMuIFRob3NlIG1lc3NhZ2VzIGFyZSBldmFsZWQg
YnkgCisgICAgICAgIFRlc3RDb250cm9sbGVyIHRvIGV4ZXJjaXNlIFdlYkluc3BlY3RvciBhY2Nv
cmRpbmcgdG8gdGhlIHRlc3QgcGFnZSBzY3JpcHRzLgorCisgICAgICAgIFRoZSBtaXNzaW5nIGJp
dCBoZXJlIGlzIGhvdyB0aGUgLnRlc3RSdW5uZXIgaWZyYW1lIGdldHMgaW50byB0aGUgV2ViSW5z
cGVjdG9yLiBPbmUgbWV0aG9kCisgICAgICAgIGlzIHRoZSBjaHJvbWUgZGV2dG9vbHMgZXh0ZW5z
aW9uICd0ZXN0UnVubmVyJyAoaHR0cHM6Ly9naXRodWIuY29tL2pvaG5qYmFydG9uL3Rlc3RSdW5u
ZXIpIAorICAgICAgICBydW5uaW5nIGluIGFub3RoZXIgY29weSBvZiBXZWJJbnNwZWN0b3IgZGVi
dWdnaW5nIHRoZSB0ZXN0ZWQgb25lLgorICAgICAgICAKKyAgICAgICAgVGhhdCBleHRlbnNpb24g
aGFzIGEgcGFuZWwgd2l0aCBhICJydW5UZXN0IiBidXR0b24gd2hpY2ggcmVsb2FkZWQgdGhlIHRl
c3RlZCBXZWJJbnNwZWN0b3Igd2l0aCBhbiAKKyAgICAgICAgaW5qZWN0ZWQgc2NyaXB0IHdoaWNo
IGxvYWRzIHRoZSBpZnJhbWUgd2l0aCBjbGFzcyAudGVzdFJ1bm5lciBhbmQgc3JjIHBvaW50aW5n
IHRvIG9uZSBvZiB0aGUgTGF5b3V0VGVzdHMuCisKKyAgICAgICAgU3VwcG9ydHMgZXhpc3Rpbmcg
dGVzdCBzeXN0ZW0KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGVzdENvbnRyb2xs
ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIubG9hZENvbXBsZXRlZC5vblRl
c3RGcmFtZXdvcmtNZXNzYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxl
ci5sb2FkQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ldmFsdWF0ZUZvclRlc3RJ
bkZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoK
KwogMjAxMi0wOC0wMyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNDU5NC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGVzdENvbnRyb2xsZXIuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rlc3RDb250cm9sbGVyLmpzCmluZGV4
IDIwZTljNGE3NTBkZGUzMDMxNjJlYTg2YjQ3YWYyNjllNzIzZGVlNzcuLmQ4Y2Y4MDQ1ZTA1MGFj
ZjQ4ZTU3NWI4MGE5YWZjZWI0NWVmNmI0NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvVGVzdENvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9UZXN0Q29udHJvbGxlci5qcwpAQCAtMzUsMTEgKzM1LDIzIEBA
IFdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlciA9IGZ1bmN0aW9uKCkKIHsKIH0KIAotV2ViSW5z
cGVjdG9yLlRlc3RDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKLSAgICBub3RpZnlEb25lOiBmdW5j
dGlvbihjYWxsSWQsIHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIHZhciBtZXNzYWdlID0gdHlwZW9m
IHJlc3VsdCA9PT0gInVuZGVmaW5lZCIgPyAiXCI8dW5kZWZpbmVkPlwiIiA6IEpTT04uc3RyaW5n
aWZ5KHJlc3VsdCk7Ci0gICAgICAgIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZSgiZGlkRXZhbHVhdGVG
b3JUZXN0SW5Gcm9udGVuZCgiICsgY2FsbElkICsgIiwgIiArIG1lc3NhZ2UgKyAiKSIsICJ0ZXN0
Iik7CitXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSA9IGZ1bmN0aW9uKGNh
bGxJZCwgcmVzdWx0KQoreworICAgIHZhciBtZXNzYWdlID0gdHlwZW9mIHJlc3VsdCA9PT0gInVu
ZGVmaW5lZCIgPyAiXCI8dW5kZWZpbmVkPlwiIiA6IEpTT04uc3RyaW5naWZ5KHJlc3VsdCk7Cisg
ICAgUnVudGltZUFnZW50LmV2YWx1YXRlKCJkaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKCIg
KyBjYWxsSWQgKyAiLCAiICsgbWVzc2FnZSArICIpIiwgInRlc3QiKTsKK30KKworV2ViSW5zcGVj
dG9yLlRlc3RDb250cm9sbGVyLmxvYWRDb21wbGV0ZWQgPSBmdW5jdGlvbigpCit7CisgICAgdmFy
IHRlc3RSdW5uZXJJZnJhbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudGVzdFJ1bm5lcicp
OworICAgIGlmICh0ZXN0UnVubmVySWZyYW1lKSB7ICAvLyBUaGVuIHdlIGFyZSB0byBiZSBhIHZp
Y3RpbSBvZiB0ZXN0aW5nCisgICAgICAgIHRlc3RSdW5uZXJJZnJhbWUuY29udGVudFdpbmRvdy5w
b3N0TWVzc2FnZSgiZnJvbnRlbmRMb2FkZWQiLCAiKiIpOworICAgICAgICBmdW5jdGlvbiBvblRl
c3RGcmFtZXdvcmtNZXNzYWdlKGV2ZW50KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXZl
bnQuZGF0YS5jb21tYW5kID09PSAiZXZhbHVhdGVJbldlYkluc3BlY3RvciIpCisgICAgICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoZXZlbnQuZGF0YS5j
YWxsSWQsIGV2ZW50LmRhdGEuc2NyaXB0KTsKKyAgICAgICAgfQorICAgICAgICB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIG9uVGVzdEZyYW1ld29ya01lc3NhZ2UsIHRydWUpOwog
ICAgIH0KIH0KIApAQCAtNDgsMTEgKzYwLDEyIEBAIFdlYkluc3BlY3Rvci5ldmFsdWF0ZUZvclRl
c3RJbkZyb250ZW5kID0gZnVuY3Rpb24oY2FsbElkLCBzY3JpcHQpCiAgICAgZnVuY3Rpb24gaW52
b2tlTWV0aG9kKCkKICAgICB7CiAgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzY3JpcHQgPSBz
Y3JpcHQgKyAiLy9AIHNvdXJjZVVSTD1ldmFsdWF0ZUluV2ViSW5zcGVjdG9yIiArIGNhbGxJZCAr
ICIuanMiOwogICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHdpbmRvdy5ldmFsKHNjcmlwdCk7Ci0g
ICAgICAgICAgICBXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIucHJvdG90eXBlLm5vdGlmeURv
bmUoY2FsbElkLCByZXN1bHQpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoY2FsbElkLCByZXN1bHQpOwogICAgICAgICB9IGNhdGNoIChlKSB7Ci0g
ICAgICAgICAgICBXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIucHJvdG90eXBlLm5vdGlmeURv
bmUoY2FsbElkLCBlLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoY2FsbElkLCBlLnRvU3RyaW5nKCkpOwogICAgICAgICB9CiAg
ICAgfQogICAgIEluc3BlY3RvckJhY2tlbmQucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhpbnZv
a2VNZXRob2QpOwotfQorfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IGEzOTI0NmJi
ODUwOTEwOGY1MWM2YTE3NWI1MjkxNjQ2YjM5YjY2ZTUuLjQ1YmJjMjZjM2JlMWMzZjc0ODM5Nzhl
MTg1MmNiYzBlNjE0MTU1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmpzCkBAIC01MzYsNiArNTM2LDcgQEAgV2ViSW5zcGVjdG9yLl9kb0xv
YWRlZERvbmVXaXRoQ2FwYWJpbGl0aWVzID0gZnVuY3Rpb24oKQogICAgIHRoaXMuZG9tQWdlbnQu
X2VtdWxhdGVUb3VjaEV2ZW50c0NoYW5nZWQoKTsKIAogICAgIFdlYkluc3BlY3Rvci5Xb3JrZXJN
YW5hZ2VyLmxvYWRDb21wbGV0ZWQoKTsKKyAgICBXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIu
bG9hZENvbXBsZXRlZCgpOwogICAgIEluc3BlY3RvckZyb250ZW5kQVBJLmxvYWRDb21wbGV0ZWQo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGRhYTIxZjMxZTIxOTAxMTU2MTU2YWVkODQxNGVjN2E5ZWU5ZmE1NTcu
LjI5ZDZhOTg4NzRiN2EyMzU4MThmN2ZjMTlkZDQwMWQ5ZWZkNjA0N2IgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1NyBAQAorMjAxMi0wOC0wOCAgSm9obiBKIEJhcnRvbiAgPGpvaG5qYmFydG9uQGpvaG5qYmFy
dG9uLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgc3VwcG9ydCBmb3IgZGVidWdn
aW5nIEluc3BlY3RvciBMYXlvdXRUZXN0cyB3L0luc3BlY3RvcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI0MjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXZlbCBGZWxkbWFuIDxwZmxlZG1hbkBjaHJv
bWl1bS5vcmc+IEltcGxlbWVudCBTdGFuZGFsb25lVGVzdFJ1bm5lcgorICAgICAgICBQYXZlbCBG
ZWxkbWFuIDxwZmxlZG1hbkBjaHJvbWl1bS5vcmc+IEFkZGVkIGpzZGlmZmxpYiAoQlNEKSBmb3Ig
c3RhbmRhbG9uZSBpbnNwZWN0b3IgdGVzdCBydW5uaW5nIGFuZCBkaWZmaW5nCisgICAgICAgIEpv
aG4gSiBCYXJ0b24gPGpvaG5qYmFydG9uQGNocm9taXVtLm9yZz4gbW9kaWZpZWQgU3RhbmRhbG9u
ZVRlc3RSdW5uZXIgdG8gd29yayBpbiBhbiBpZnJhbWUgb2YgV2ViSW5zcGVjdG9yCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qczoKKyAgICAgICAgKGlu
aXRpYWxpemVfSW5zcGVjdG9yVGVzdCk6CisgICAgICAgICguKToKKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvanNkaWZmbGliL1JFQURNRS5hc2NpaWRvYzogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZm
bGliLmpzOiBBZGRlZC4KKyAgICAgICAgKGRpZmZsaWIuZGVmYXVsdEp1bmtGdW5jdGlvbik6Cisg
ICAgICAgIChkaWZmbGliLnN0cmlwTGluZWJyZWFrcyk6CisgICAgICAgIChkaWZmbGliLnN0cmlu
Z0FzTGluZXMpOgorICAgICAgICAoZGlmZmxpYi5fX3JlZHVjZSk6CisgICAgICAgIChkaWZmbGli
Ll9fbnR1cGxlY29tcCk6CisgICAgICAgIChkaWZmbGliLl9fY2FsY3VsYXRlX3JhdGlvKToKKyAg
ICAgICAgKGRpZmZsaWIuX19kaWN0Z2V0KToKKyAgICAgICAgKGRpZmZsaWIuU2VxdWVuY2VNYXRj
aGVyLnRoaXMuc2V0X3NlcXMpOgorICAgICAgICAoZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIudGhp
cy5zZXRfc2VxMSk6CisgICAgICAgIChkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLnNldF9z
ZXEyKToKKyAgICAgICAgKGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyLnRoaXMuX19jaGFpbl9iKToK
KyAgICAgICAgKGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyLnRoaXMuZmluZF9sb25nZXN0X21hdGNo
KToKKyAgICAgICAgKGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyLnRoaXMuZ2V0X21hdGNoaW5nX2Js
b2Nrcyk6CisgICAgICAgIChkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLmdldF9vcGNvZGVz
KToKKyAgICAgICAgKGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyLnRoaXMuZ2V0X2dyb3VwZWRfb3Bj
b2Rlcyk6CisgICAgICAgIChkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLnF1aWNrX3JhdGlv
KToKKyAgICAgICAgKGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyLnRoaXMucmVhbF9xdWlja19yYXRp
byk6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9k
aWZmdmlldy5jc3M6IEFkZGVkLgorICAgICAgICAodGFibGUuZGlmZik6CisgICAgICAgICh0YWJs
ZS5kaWZmIHRib2R5KToKKyAgICAgICAgKHRhYmxlLmRpZmYgdGJvZHkgdGgpOgorICAgICAgICAo
dGFibGUuZGlmZiB0aGVhZCk6CisgICAgICAgICh0YWJsZS5kaWZmIHRoZWFkIHRoLnRleHR0aXRs
ZSk6CisgICAgICAgICh0YWJsZS5kaWZmIHRib2R5IHRkKToKKyAgICAgICAgKHRhYmxlLmRpZmYg
LmVtcHR5KToKKyAgICAgICAgKHRhYmxlLmRpZmYgLnJlcGxhY2UpOgorICAgICAgICAodGFibGUu
ZGlmZiAuZGVsZXRlKToKKyAgICAgICAgKHRhYmxlLmRpZmYgLnNraXApOgorICAgICAgICAodGFi
bGUuZGlmZiAuaW5zZXJ0KToKKyAgICAgICAgKHRhYmxlLmRpZmYgdGguYXV0aG9yKToKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvanNkaWZmbGliL2RpZmZ2aWV3Lmpz
OiBBZGRlZC4KKyAgICAgICAgKGRpZmZ2aWV3LmJ1aWxkVmlldy5jZWx0KToKKyAgICAgICAgKGRp
ZmZ2aWV3LmJ1aWxkVmlldy50ZWx0KToKKyAgICAgICAgKGRpZmZ2aWV3LmJ1aWxkVmlldy5jdGVs
dCk6CisgICAgICAgIChkaWZmdmlldy5idWlsZFZpZXcuYWRkQ2VsbHMpOgorICAgICAgICAoZGlm
ZnZpZXcuYnVpbGRWaWV3LmFkZENlbGxzSW5saW5lKToKKyAgICAgICAgKGRpZmZ2aWV3LmJ1aWxk
Vmlldyk6CisKIDIwMTItMDgtMDMgIFRlcnJ5IEFuZGVyc29uICA8dGRhbmRlcnNvbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgQXBwbHkgdGFyZ2V0IGZ1enppbmcgd2hlbiBzZW5kaW5nIGEgY29u
dGV4dCBtZW51IGV2ZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbnNwZWN0b3ItdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2luc3BlY3Rvci10ZXN0LmpzCmluZGV4IDk2MTMxMGRlOTU4MzQ2YjdjMjE0YzJkOTFjMTMxNjM5
ZjRkMDc3ODYuLjc5YTIyY2RkNjdjYjI3ZjZiZjU1OGU2ZGY0ZGRmM2NiNTMyNTMxMzYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Lmpz
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Lmpz
CkBAIC0zNjksNyArMzY5LDcgQEAgSW5zcGVjdG9yVGVzdC50ZXh0Q29udGVudFdpdGhMaW5lQnJl
YWtzID0gZnVuY3Rpb24obm9kZSkKICAgICByZXR1cm4gYnVmZmVyOwogfQogCi19OworfTsgLy8g
aW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0CiAKIHZhciBydW5UZXN0Q2FsbElkID0gMDsKIHZhciBj
b21wbGV0ZVRlc3RDYWxsSWQgPSAxOwpAQCAtNTE1LDMgKzUxNSw5NyBAQCBmdW5jdGlvbiBjbGVh
ck91dHB1dCgpCiAgICAgICAgIG91dHB1dEVsZW1lbnQgPSBudWxsOwogICAgIH0KIH0KKworZnVu
Y3Rpb24gU3RhbmRhbG9uZVRlc3RSdW5uZXIoKQoreworICAgIHRoaXMuX3BlbmRpbmdNZXNzYWdl
cyA9IFtdOworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGhpcy5fb25N
ZXNzYWdlLmJpbmQodGhpcyksIHRydWUpOworICAgIHRoaXMuX2luc3BlY3RvcldpbmRvdyA9IHdp
bmRvdy5wYXJlbnQ7Cit9CisKK1N0YW5kYWxvbmVUZXN0UnVubmVyLnByb3RvdHlwZSA9IHsKKyAg
ICBkdW1wQXNUZXh0OiBmdW5jdGlvbigpCisgICAgeworICAgIH0sCisKKyAgICB3YWl0VW50aWxE
b25lOiBmdW5jdGlvbigpCisgICAgeworICAgIH0sCisKKyAgICBjbG9zZVdlYkluc3BlY3Rvcjog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgLy8gSW4gYmF0Y2ggbW9kZSB1bmRlciBEdW1wUmVu
ZGVyVHJlZSB3ZSBleGl0IGhlcmUuIAorICAgICAgICBjb25zb2xlLmxvZygiY2xvc2VXZWJJbnNw
ZWN0b3IiKTsKKyAgICB9LAorCisgICAgbm90aWZ5RG9uZTogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgdmFyIGFjdHVhbCA9IGRvY3VtZW50LmJvZHkuaW5uZXJUZXh0ICsgIlxuIjsKKyAgICAg
ICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmlubmVySFRNTCA9ICIiOworCisgICAgICAgIHZh
ciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICAgICAgdmFyIGhyZWYgPSB3aW5kb3cu
bG9jYXRpb24uaHJlZjsKKyAgICAgICAgdmFyIGV4dCA9IGhyZWYubGFzdEluZGV4T2YoIi4iKTsK
KyAgICAgICAgeGhyLm9wZW4oIkdFVCIsIGhyZWYuc3Vic3RyaW5nKDAsIGV4dCkgKyAiLWV4cGVj
dGVkLnR4dCIsIGZhbHNlKTsKKyAgICAgICAgeGhyLnNlbmQobnVsbCk7CisgICAgICAgIHZhciBl
eHBlY3RlZCA9IHhoci5yZXNwb25zZVRleHQ7CisKKyAgICAgICAgY29uc3QgYmFzZURpciA9ICIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi8iOwor
ICAgICAgICB2YXIgc3R5bGVzaGVldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTsK
KyAgICAgICAgc3R5bGVzaGVldC5yZWwgPSAic3R5bGVzaGVldCI7CisgICAgICAgIHN0eWxlc2hl
ZXQudHlwZSA9ICJ0ZXh0L2NzcyI7CisgICAgICAgIHN0eWxlc2hlZXQuaHJlZiA9IGJhc2VEaXIg
KyAiZGlmZnZpZXcuY3NzIjsKKyAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHls
ZXNoZWV0KTsKKworICAgICAgICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
c2NyaXB0Iik7CisgICAgICAgIHNjcmlwdC5zcmMgPSBiYXNlRGlyICsgImRpZmZsaWIuanMiOwor
ICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7CisKKyAgICAgICAgc2Ny
aXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CisgICAgICAgIHNjcmlwdC5z
cmMgPSBiYXNlRGlyICsgImRpZmZ2aWV3LmpzIjsKKyAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IHZp
ZXdlckxvYWRlZDsKKyAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpOwor
CisgICAgICAgIGZ1bmN0aW9uIHZpZXdlckxvYWRlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBiYXNlTGluZXMgPSBkaWZmbGliLnN0cmluZ0FzTGluZXMoZXhwZWN0ZWQpOworICAgICAg
ICAgICAgdmFyIG5ld0xpbmVzID0gIGRpZmZsaWIuc3RyaW5nQXNMaW5lcyhhY3R1YWwpOworICAg
ICAgICAgICAgdmFyIHNlcXVlbmNlTWF0Y2hlciA9IG5ldyBkaWZmbGliLlNlcXVlbmNlTWF0Y2hl
cihiYXNlTGluZXMsIG5ld0xpbmVzKTsKKyAgICAgICAgICAgIHZhciBkaWZmVmlldyA9IGRpZmZ2
aWV3LmJ1aWxkVmlldyh7CisgICAgICAgICAgICAgICAgYmFzZVRleHRMaW5lczogYmFzZUxpbmVz
LAorICAgICAgICAgICAgICAgIG5ld1RleHRMaW5lczogbmV3TGluZXMsCisgICAgICAgICAgICAg
ICAgb3Bjb2Rlczogc2VxdWVuY2VNYXRjaGVyLmdldF9vcGNvZGVzKCksCisgICAgICAgICAgICAg
ICAgY29udGV4dFNpemU6IDMsCisgICAgICAgICAgICAgICAgdmlld1R5cGU6IDEKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaWZmVmlldyk7
CisgICAgICAgIH0KKyAgICB9LAorCisgICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcjogZnVuY3Rp
b24oY2FsbElkLCBzY3JpcHQpCisgICAgeworICAgICAgICB2YXIgbWVzc2FnZSA9IHtjb21tYW5k
OiAiZXZhbHVhdGVJbldlYkluc3BlY3RvciIsIGNhbGxJZDogY2FsbElkLCBzY3JpcHQ6IHNjcmlw
dH07CisgICAgICAgIGlmICh0aGlzLl9pc0xvYWRlZCkKKyAgICAgICAgICAgIHRoaXMuX3Bvc3RN
ZXNzYWdlcyhbbWVzc2FnZV0pOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9wZW5k
aW5nTWVzc2FnZXMucHVzaChtZXNzYWdlKTsKKyAgICB9LAorCisgICAgX29uTWVzc2FnZTogZnVu
Y3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZlbnQuZGF0YSA9PT0gImZyb250ZW5k
TG9hZGVkIikgeworICAgICAgICAgICAgdGhpcy5faXNMb2FkZWQgPSB0cnVlOworICAgICAgICAg
ICAgdGhpcy5fcG9zdE1lc3NhZ2VzKHRoaXMuX3BlbmRpbmdNZXNzYWdlcyk7CisgICAgICAgICAg
ICB0aGlzLl9wZW5kaW5nTWVzc2FnZXMgPSBbXTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBf
cG9zdE1lc3NhZ2VzOiBmdW5jdGlvbihtZXNzYWdlcykKKyAgICB7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbWVzc2FnZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLl9pbnNw
ZWN0b3JXaW5kb3cucG9zdE1lc3NhZ2UobWVzc2FnZXNbaV0sICIqIik7CisgICAgfQorfQorCitp
ZiAoIXdpbmRvdy50ZXN0UnVubmVyKSAKKyAgICB3aW5kb3cudGVzdFJ1bm5lciA9IG5ldyBTdGFu
ZGFsb25lVGVzdFJ1bm5lcigpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9SRUFETUUuYXNjaWlkb2MgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvanNkaWZmbGliL1JFQURNRS5hc2NpaWRv
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wZjdmN2FhOWUzYzhmYmI2NTdiMGVhNDRjZTM3YzIxNDFhYTg3M2ZhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3Vy
Y2VzL2pzZGlmZmxpYi9SRUFETUUuYXNjaWlkb2MKQEAgLTAsMCArMSwxNzMgQEAKKz09IGpzZGlm
ZmxpYiAtIEEgSmF2YXNjcmlwdCB2aXN1YWwgZGlmZiB0b29sICYgbGlicmFyeQorCisqIDw8aW50
cm8sSW50cm9kdWN0aW9uPj4KKyogPDxvdmVydmlldyxPdmVydmlldz4+CisqIDw8cHl0aG9uLWlu
dGVyb3AsUHl0aG9uIEludGVyb3BlcmFiaWxpdHk+PgorKiA8PGRlbW8sRGVtbyAmIEV4YW1wbGVz
Pj4KKyoqIDw8ZGlmZi1qcyxEaWZmaW5nIHVzaW5nIEphdmFzY3JpcHQ+PgorKiogPDxkaWZmLXB5
dGhvbixEaWZmaW5nIHVzaW5nIFB5dGhvbj4+CisqIDw8c3RhdHVzLEZ1dHVyZSBEaXJlY3Rpb25z
IC8gU3RhdHVzPj4KKyogPDxsaWNlbnNlLExpY2Vuc2U+PgorKiA8PGRvd25sb2FkcyxEb3dubG9h
ZHM+PgorKiA8PGhpc3RvcnksUmVsZWFzZSBIaXN0b3J5Pj4KKworW1tpbnRyb11dCis9PSBJbnRy
b2R1Y3Rpb24KKworaHR0cDovL2NlbWVyaWNrLmNvbVtJXSBuZWVkZWQgYSBnb29kIGluLWJyb3dz
ZXIgdmlzdWFsIGRpZmYgdG9vbCwgYW5kIGNvdWxkbid0IGZpbmQgYW55dGhpbmcgc3VpdGFibGUs
IHNvIEkgYnVpbHQgKmpzZGlmZmxpYiogaW4gRmViIDIwMDcgYW5kIG9wZW4tc291cmNlZCBpdCBz
b29uIHRoZXJlYWZ0ZXIuICBJdCdzIGFwcGFyZW50bHkgYmVlbiB1c2VkIGEgZmFpciBiaXQgc2lu
Y2UgdGhlbi4gIE1heWJlIHlvdSdsbCBmaW5kIGl0IHVzZWZ1bC4KKworW1tvdmVydmlld11dCis9
PSBPdmVydmlldworCitqc2RpZmZsaWIgaXMgYSBKYXZhc2NyaXB0IGxpYnJhcnkgdGhhdCBwcm92
aWRlczoKKworLiBhIHBhcnRpYWwgcmVpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24ncyBkaWZmbGli
IG1vZHVsZSAoc3BlY2lmaWNhbGx5LCB0aGUgU2VxdWVuY2VNYXRjaGVyIGNsYXNzKQorLiBhIHZp
c3VhbCBkaWZmIHZpZXcgZ2VuZXJhdG9yLCB0aGF0IG9mZmVycyBzaWRlLWJ5LXNpZGUgYXMgd2Vs
bCBhcyBpbmxpbmUgZm9ybWF0dGluZyBvZiBmaWxlIGRhdGEKKworWWVzLCBJIHJpcHBlZCBvZmYg
dGhlIGZvcm1hdHRpbmcgb2YgdGhlIGRpZmYgdmlldyBmcm9tIHRoZSBUcmFjIHByb2plY3QuIEl0
J3MgYSBuZWFyLWlkZWFsIHByZXNlbnRhdGlvbiBvZiBkaWZmIGRhdGEgYXMgZmFyIGFzIEknbSBj
b25jZXJuZWQuIElmIHlvdSBkb24ndCBhZ3JlZSwgeW91IGNhbiBoYWNrIHRoZSBDU1MgdG8geW91
ciBoZWFydCdzIGNvbnRlbnQuCisKK2pzZGlmZmxpYiBkb2VzIG5vdCByZXF1aXJlIGpRdWVyeSBv
ciBhbnkgb3RoZXIgSmF2YXNjcmlwdCBsaWJyYXJ5LgorCitbW3B5dGhvbi1pbnRlcm9wXV0KKz09
IFB5dGhvbiBJbnRlcm9wZXJhYmlsaXR5CisKK1RoZSBtYWluIHJlYXNvbiB3aHkgSSByZWltcGxl
bWVudGVkIFB5dGhvbidzIGRpZmZsaWIgbW9kdWxlIGluIEphdmFzY3JpcHQgdG8gc2VydmUgYXMg
dGhlIGFsZ29yaXRobWljIGJhc2lzIGZvciBqc2RpZmZsaWIgd2FzIHRoYXQgSSBkaWRuJ3Qgd2Fu
dCB0byBtZXNzIHdpdGggdGhlIGFjdHVhbCBkaWZmIGFsZ29yaXRobSAtLSBJIHdhbnRlZCB0byBj
b25jZW50cmF0ZSBvbiBnZXR0aW5nIHRoZSBpbi1icm93c2VyIHZpZXcgcmlnaHQuIEhvd2V2ZXIs
IGJlY2F1c2UganNkaWZmbGliJ3MgQVBJIG1hdGNoZXMgUHl0aG9uJ3MgZGlmZmxpYidzIFNlcXVl
bmNlTWF0Y2hlciBjbGFzcyBpbiBpdHMgZW50aXJldHksIGl0J3MgdHJpdmlhbCB0byBkbyB0aGUg
YWN0dWFsIGRpZmZpbmcgb24gdGhlIHNlcnZlci1zaWRlLCB1c2luZyBQeXRob24sIGFuZCBwaXBl
IHRoZSByZXN1bHRzIG9mIHRoYXQgZGlmZiBjYWxjdWxhdGlvbiB0byB5b3VyIGluLWJyb3dzZXIg
ZGlmZiB2aWV3LiBTbywgeW91IGhhdmUgdGhlIGNob2ljZSBvZiBkb2luZyBldmVyeXRoaW5nIGlu
IEphdmFzY3JpcHQgb24gdGhlIGJyb3dzZXIsIG9yIGZhbGxpbmcgYmFjayB0byBzZXJ2ZXItc2lk
ZSBkaWZmIHByb2Nlc3NpbmcgaWYgeW91IGFyZSBkaWZmaW5nIHJlYWxseSBsYXJnZSBmaWxlcy4K
KworTW9zdCBvZiB0aGUgdGltZSwgd2UgZG8gdGhlIGxhdHRlciwgc2ltcGx5IGJlY2F1c2Ugd2hp
bGUganNkaWZmbGliIGlzIHByZXR0eSBmYXN0IGFsbCBieSBpdHNlbGYsIGFuZCBpcyB0b3RhbGx5
IHVzYWJsZSBmb3IgZGlmZmluZyAibm9ybWFsIiBmaWxlcyAoaS5lLiBmZXdlciB0aGFuIDEwMEsg
bGluZXMgb3Igc28pLCB3ZSByZWd1bGFybHkgbmVlZCB0byBkaWZmIGZpbGVzIHRoYXQgYXJlIDEg
b3IgMiBvcmRlcnMgb2YgbWFnbml0dWRlIGxhcmdlciB0aGFuIHRoYXQuIEZvciB0aGF0LCBzZXJ2
ZXItc2lkZSBkaWZmaW5nIGlzIGEgbmVjZXNzaXR5LgorCitbW2RlbW9dXQorPT0gRGVtbyAmIEV4
YW1wbGVzCisKK1lvdSBjYW4gZ2l2ZSBqc2RpZmZsaWIgYSB0cnkgd2l0aG91dCBkb3dubG9hZGlu
ZyBhbnl0aGluZy4gSnVzdCBjbGljayB0aGUgbGluayBiZWxvdywgcHV0IHNvbWUgY29udGVudCB0
byBiZSBkaWZmZWQgaW4gdGhlIHR3byB0ZXh0Ym94ZXMsIGFuZCBkaWZmIGF3YXkuCisKK2h0dHA6
Ly9jZW1lcmljay5naXRodWIuY29tL2pzZGlmZmxpYi9kZW1vLmh0bWxbKlRyeSBqc2RpZmZsaWIq
XQorCitUaGF0IHBhZ2UgYWxzbyBjb250YWlucyBhbGwgb2YgdGhlIGV4YW1wbGVzIHlvdSdsbCBu
ZWVkIHRvIHVzZSBqc2RpZmZsaWIgeW91cnNlbGYsIGJ1dCBsZXQncyBsb29rIGF0IHRoZW0gaGVy
ZSwgYW55d2F5LgorCitbW2RpZmYtanNdXQorPT09IERpZmZpbmcgdXNpbmcgSmF2YXNjcmlwdAor
CitIZXJlJ3MgdGhlIGZ1bmN0aW9uIGZyb20gdGhlIGRlbW8gSFRNTCBmaWxlIGxpbmtlZCB0byBh
Ym92ZSB0aGF0IGRpZmZzIHRoZSB0d28gcGllY2VzIG9mIHRleHQgZW50ZXJlZCBpbnRvIHRoZSB0
ZXh0Ym94ZXMgb24gdGhlIHBhZ2U6CisKKy0tLS0KK2Z1bmN0aW9uIGRpZmZVc2luZ0pTKCkgewor
ICAgIC8vIGdldCB0aGUgYmFzZVRleHQgYW5kIG5ld1RleHQgdmFsdWVzIGZyb20gdGhlIHR3byB0
ZXh0Ym94ZXMsIGFuZCBzcGxpdCB0aGVtIGludG8gbGluZXMgCisgICAgdmFyIGJhc2UgPSBkaWZm
bGliLnN0cmluZ0FzTGluZXMoJCgiYmFzZVRleHQiKS52YWx1ZSk7CisgICAgdmFyIG5ld3R4dCA9
IGRpZmZsaWIuc3RyaW5nQXNMaW5lcygkKCJuZXdUZXh0IikudmFsdWUpOworCisgICAgLy8gY3Jl
YXRlIGEgU2VxdWVuY2VNYXRjaGVyIGluc3RhbmNlIHRoYXQgZGlmZnMgdGhlIHR3byBzZXRzIG9m
IGxpbmVzCisgICAgdmFyIHNtID0gbmV3IGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyKGJhc2UsIG5l
d3R4dCk7CisKKyAgICAvLyBnZXQgdGhlIG9wY29kZXMgZnJvbSB0aGUgU2VxdWVuY2VNYXRjaGVy
IGluc3RhbmNlIAorICAgIC8vIG9wY29kZXMgaXMgYSBsaXN0IG9mIDMtdHVwbGVzIGRlc2NyaWJp
bmcgd2hhdCBjaGFuZ2VzIHNob3VsZCBiZSBtYWRlIHRvIHRoZSBiYXNlIHRleHQgCisgICAgLy8g
aW4gb3JkZXIgdG8geWllbGQgdGhlIG5ldyB0ZXh0CisgICAgdmFyIG9wY29kZXMgPSBzbS5nZXRf
b3Bjb2RlcygpOworICAgIHZhciBkaWZmb3V0cHV0ZGl2ID0gJCgiZGlmZm91dHB1dCIpOworICAg
IHdoaWxlIChkaWZmb3V0cHV0ZGl2LmZpcnN0Q2hpbGQpIGRpZmZvdXRwdXRkaXYucmVtb3ZlQ2hp
bGQoZGlmZm91dHB1dGRpdi5maXJzdENoaWxkKTsKKyAgICB2YXIgY29udGV4dFNpemUgPSAkKCJj
b250ZXh0U2l6ZSIpLnZhbHVlOworICAgIGNvbnRleHRTaXplID0gY29udGV4dFNpemUgPyBjb250
ZXh0U2l6ZSA6IG51bGw7CisKKyAgICAvLyBidWlsZCB0aGUgZGlmZiB2aWV3IGFuZCBhZGQgaXQg
dG8gdGhlIGN1cnJlbnQgRE9NCisgICAgZGlmZm91dHB1dGRpdi5hcHBlbmRDaGlsZChkaWZmdmll
dy5idWlsZFZpZXcoeworICAgICAgICBiYXNlVGV4dExpbmVzOiBiYXNlLAorICAgICAgICBuZXdU
ZXh0TGluZXM6IG5ld3R4dCwKKyAgICAgICAgb3Bjb2Rlczogb3Bjb2RlcywKKyAgICAgICAgLy8g
c2V0IHRoZSBkaXNwbGF5IHRpdGxlcyBmb3IgZWFjaCByZXNvdXJjZSAKKyAgICAgICAgYmFzZVRl
eHROYW1lOiAiQmFzZSBUZXh0IiwKKyAgICAgICAgbmV3VGV4dE5hbWU6ICJOZXcgVGV4dCIsCisg
ICAgICAgIGNvbnRleHRTaXplOiBjb250ZXh0U2l6ZSwKKyAgICAgICAgdmlld1R5cGU6ICQoImlu
bGluZSIpLmNoZWNrZWQgPyAxIDogMAorICAgIH0pKTsKKworICAgIC8vIHNjcm9sbCBkb3duIHRv
IHRoZSBkaWZmIHZpZXcgd2luZG93LgorICAgIGxvY2F0aW9uID0gdXJsICsgIiNkaWZmIjsKK30K
Ky0tLS0KKworVGhlcmUncyBub3QgYSB3aG9sZSBsb3QgdG8gc2F5IGFib3V0IHRoaXMgZnVuY3Rp
b24uIFRoZSBtb3N0IG5vdGFibGUgYXNwZWN0IG9mIGl0IGlzIHRoYXQgdGhlIGBkaWZmdmlldy5i
dWlsZFZpZXcoKWAgZnVuY3Rpb24gdGFrZXMgYW4gb2JqZWN0L21hcCB3aXRoIHNwZWNpZmljIGF0
dHJpYnV0ZXMsIHJhdGhlciB0aGFuIGEgbGlzdCBvZiBhcmd1bWVudHMuIFRob3NlIGF0dHJpYnV0
ZXMgYXJlIG1vc3RseSBzZWxmLWV4cGxhbmF0b3J5LCBidXQgYXJlIG5vbmV0aGVsZXNzIGRlc2Ny
aWJlZCBpbiBkZXRhaWwgaW4gY29kZSBkb2N1bWVudGF0aW9uIGluIGRpZmZ2aWV3LmpzLgorCitb
W2RpZmYtcHl0aG9uXV0KKz09PSBEaWZmaW5nIHVzaW5nIFB5dGhvbgorCitUaGlzIGlzbid0IGVu
YWJsZWQgaW4gdGhlIGRlbW8gbGluayBhYm92ZSwgYnV0IEkndmUgaW5jbHVkZWQgaXQgdG8gZXhl
bXBsaWZ5IGhvdyBvbmUgbWlnaHQgdXNlIHRoZSBvcGNvZGUgb3V0cHV0IGZyb20gYSB3ZWItYmFz
ZWQgUHl0aG9uIGJhY2tlbmQgdG8gZHJpdmUganNkaWZmbGliJ3MgZGlmZiB2aWV3LgorCistLS0t
CitmdW5jdGlvbiBkaWZmVXNpbmdQeXRob24oKSB7CisgICAgZG9qby5pby5iaW5kKHsKKyAgICAg
ICAgdXJsOiAiL2RpZmYvcG9zdFlpZWxkRGlmZkRhdGEiLAorICAgICAgICBtZXRob2Q6ICJQT1NU
IiwKKyAgICAgICAgY29udGVudDogeworICAgICAgICAgICAgYmFzZVRleHQ6ICQoImJhc2VUZXh0
IikudmFsdWUsCisgICAgICAgICAgICBuZXdUZXh0OiAkKCJuZXdUZXh0IikudmFsdWUsCisgICAg
ICAgICAgICBpZ25vcmVXaGl0ZXNwYWNlOiAiWSIKKyAgICAgICAgfSwKKyAgICAgICAgbG9hZDog
ZnVuY3Rpb24gKHR5cGUsIGRhdGEsIGV2dCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgICAgICBkYXRhID0gZXZhbCgnKCcgKyBkYXRhICsgJyknKTsKKyAgICAgICAgICAgICAgICB3
aGlsZSAoZGlmZm91dHB1dGRpdi5maXJzdENoaWxkKSBkaWZmb3V0cHV0ZGl2LnJlbW92ZUNoaWxk
KGRpZmZvdXRwdXRkaXYuZmlyc3RDaGlsZCk7CisgICAgICAgICAgICAgICAgJCgib3V0cHV0Iiku
YXBwZW5kQ2hpbGQoZGlmZnZpZXcuYnVpbGRWaWV3KHsKKyAgICAgICAgICAgICAgICAgICAgYmFz
ZVRleHRMaW5lczogZGF0YS5iYXNlVGV4dExpbmVzLAorICAgICAgICAgICAgICAgICAgICBuZXdU
ZXh0TGluZXM6IGRhdGEubmV3VGV4dExpbmVzLAorICAgICAgICAgICAgICAgICAgICBvcGNvZGVz
OiBkYXRhLm9wY29kZXMsCisgICAgICAgICAgICAgICAgICAgIGJhc2VUZXh0TmFtZTogZGF0YS5i
YXNlVGV4dE5hbWUsCisgICAgICAgICAgICAgICAgICAgIG5ld1RleHROYW1lOiBkYXRhLm5ld1Rl
eHROYW1lLAorICAgICAgICAgICAgICAgICAgICBjb250ZXh0U2l6ZTogY29udGV4dFNpemUKKyAg
ICAgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICB9IGNhdGNoIChleCkgeworICAgICAgICAg
ICAgICAgIGFsZXJ0KCJBbiBlcnJvciBvY2N1cnJlZCB1cGRhdGluZyB0aGUgZGlmZiB2aWV3Olxu
IiArIGV4LnRvU3RyaW5nKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICBl
cnJvcjogZnVuY3Rpb24gKHR5cGUsIGV2dCkgeworICAgICAgICAgICAgYWxlcnQoJ0Vycm9yIG9j
Y3VycmVkIGdldHRpbmcgZGlmZiBkYXRhLiBDaGVjayB0aGUgc2VydmVyIGxvZ3MuJyk7CisgICAg
ICAgIH0sCisgICAgICAgIHR5cGU6ICd0ZXh0L2phdmFzY3JpcHQnCisgICAgfSk7Cit9CistLS0t
CisKK1tXQVJOSU5HXQorPT09PQorVGhpcyBkb2pvIGNvZGUgd2FzIHdyaXR0ZW4gaW4gMjAwNywg
YW5kIEkgaGF2ZW4ndCBfbG9va2VkXyBhdCBkb2pvIGZvciB5ZWFycyBub3cuICBJbiBhbnkgY2Fz
ZSwgeW91IHNob3VsZCBiZSBhYmxlIHRvIGdyb2sgd2hhdCdzIGdvaW5nIG9uLgorPT09PQorCitB
cyB5b3UgY2FuIHNlZSwgSSdtIHBhcnRpYWwgdG8gdXNpbmcgZG9qbyBmb3IgYWpheHkgc3R1ZmYu
IEFsbCB0aGF0IGlzIGhhcHBlbmluZyBoZXJlIGlzIHRoZSBiYXNlIGFuZCBuZXcgdGV4dCBpcyBi
ZWluZyBQT1NUZWQgdG8gYSBQeXRob24gc2VydmVyLXNpZGUgcHJvY2VzcyAod2UgbGlrZSBweWxv
bnMsIGJ1dCB5b3UgY291bGQganVzdCBhcyBlYXNpbHkgdXNlIGEgc2ltcGxlIFB5dGhvbiBzY3Jp
cHQgYXMgYSBjZ2kpLiBUaGF0IHByb2Nlc3MgdGhlbiBuZWVkcyB0byBkaWZmIHRoZSBwcm92aWRl
ZCB0ZXh0IHVzaW5nIGFuIGluc3RhbmNlIG9mIFB5dGhvbidzIGRpZmZsaWIuU2VxdWVuY2VNYXRj
aGVyIGNsYXNzLCBhbmQgcmV0dXJuIHRoZSBvcGNvZGVzIGZyb20gdGhhdCBTZXF1ZW5jZU1hdGNo
ZXIgaW5zdGFuY2UgdG8gdGhlIGJyb3dzZXIgKGluIHRoaXMgY2FzZSwgdXNpbmcgSlNPTiBzZXJp
YWxpemF0aW9uKS4gSW4gdGhlIGludGVyZXN0IG9mIGNvbXBsZXRlbmVzcywgaGVyZSdzIHRoZSBj
b250cm9sbGVyIGFjdGlvbiBmcm9tIG91ciBweWxvbnMgYXBwbGljYXRpb24gdGhhdCBkb2VzIHRo
aXMgKGRvbid0IHRyeSB0byBtYXRjaCB1cCB0aGUgcGFyYW1ldGVycyBzaG93biBiZWxvdyB3aXRo
IHRoZSBQT1NUIHBhcmFtZXRlcnMgc2hvd24gaW4gdGhlIEphdmFzY3JpcHQgZnVuY3Rpb24gYWJv
dmU7IHRoZSBsYXR0ZXIgaXMgb25seSBoZXJlIGFzIGFuIGV4YW1wbGUpOgorCistLS0tCitAanNv
bmlmeQorZGVmIGRpZmYgKHNlbGYsIGJhc2VUZXh0LCBuZXdUZXh0LCBiYXNlVGV4dE5hbWU9IkJh
c2UgVGV4dCIsIG5ld1RleHROYW1lPSJOZXcgVGV4dCIpOgorICAgIG9wY29kZXMgPSBTZXF1ZW5j
ZU1hdGNoZXIoaXNqdW5rLCBiYXNlVGV4dCwgbmV3VGV4dCkuZ2V0X29wY29kZXMoKQorICAgIHJl
dHVybiBkaWN0KGJhc2VUZXh0TGluZXM9YmFzZVRleHQsIG5ld1RleHRMaW5lcz1uZXdUZXh0LCBv
cGNvZGVzPW9wY29kZXMsCisgICAgICAgICAgICAgICAgYmFzZVRleHROYW1lPWJhc2VUZXh0TmFt
ZSwgbmV3VGV4dE5hbWU9bmV3VGV4dE5hbWUpCistLS0tCisKK1tbc3RhdHVzXV0KKz09IEZ1dHVy
ZSBEaXJlY3Rpb25zCisKK1RoZSB0b3AgcHJpb3JpdGllcyB3b3VsZCBiZSB0byBpbXBsZW1lbnQg
dGhlIGlnbm9yaW5nIG9mIGVtcHR5IGxpbmVzLCBhbmQgdGhlIGluZGljYXRpb24gb2YgZGlmZnMg
YXQgdGhlIGNoYXJhY3RlciBsZXZlbCB3aXRoIHN1Yi1oaWdobGlnaHRpbmcgKHNpbWlsYXIgdG8g
d2hhdCBUcmFjJ3MgZGlmZiB2aWV3IGRvZXMpLgorCitJJ2QgYWxzbyBsaWtlIHRvIHNlZSB0aGUg
YGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyYCByZWltcGxlbWVudGF0aW9uIGdhaW4gc29tZSBtb3Jl
IHNwZWVkIC0tIGl0J3MgdmlydHVhbGx5IGEgbGluZS1ieS1saW5lIHRyYW5zbGF0aW9uIGZyb20g
dGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiwgc28gdGhlcmUncyBwbGVudHkgdGhhdCBjb3VsZCBi
ZSBkb25lIHRvIG1ha2UgaXQgbW9yZSBwZXJmb3JtYW50IGluIEphdmFzY3JpcHQuIEhvd2V2ZXIs
IHRoYXQgd291bGQgbWVhbiBtYWtpbmcgdGhlIHJlaW1wbGVtZW50YXRpb24gZGl2ZXJnZSBldmVu
IG1vcmUgZnJvbSB0aGUgInJlZmVyZW5jZSIgUHl0aG9uIGltcGxlbWVudGF0aW9uLiBHaXZlbiB0
aGF0IEkgZG9uJ3QgcmVhbGx5IHdhbnQgdG8gd29ycnkgYWJvdXQgdGhlIGFsZ29yaXRobSwgdGhh
dCdzIG5vdCBhcHBlYWxpbmcuIEknZCBtdWNoIHJhdGhlciB1c2UgYSBzZXJ2ZXItc2lkZSBwcm9j
ZXNzIHdoZW4gdGhlIGluLWJyb3dzZXIgZGlmZmluZyBpcyBhIGxpdHRsZSB0b28gcG9rZXkuCisK
K090aGVyIHRoYW4gdGhhdCwgSSdtIG9wZW4gdG8gc3VnZ2VzdGlvbnMuCisKK1tOT1RFXQorPT09
PQorSSdtIG5vIGxvbmdlciBhY3RpdmVseSBkZXZlbG9waW5nIGpzZGlmZmxpYi4gIEl0J3MgYmVl
biBzZXF1ZXN0ZXJlZCAobW9zdGx5IG91dCBvZiBzaW1wbGUgbmVnbGVjdCkgdG8gbXkgY29tcGFu
eSdzIHNlcnZlcnMgZm9yIHRvbyBsb25nOyBub3cgdGhhdCBpdCdzIG9uIGdpdGh1YiwgSSdtIGhv
cGluZyB0aGF0IG1hbnkgb2YgdGhlIHBlb3BsZSB0aGF0IGZpbmQgaXQgdXNlZnVsIHdpbGwgc3Vi
bWl0IHB1bGwgcmVxdWVzdHMgdG8gaW1wcm92ZSB0aGUgbGlicmFyeS4gIEkgd2lsbCBkbyB3aGF0
IEkgY2FuIHRvIGN1cmF0ZSB0aGF0IHByb2Nlc3MuCis9PT09CisKK1tbbGljZW5zZV1dCis9PSBM
aWNlbnNlCisKK2pzZGlmZmxpYiBjYXJyaWVzIGEgQlNEIGxpY2Vuc2UuIEFzIHN1Y2gsIGl0IG1h
eSBiZSB1c2VkIGluIG90aGVyIHByb2R1Y3RzIG9yIHNlcnZpY2VzIHdpdGggYXBwcm9wcmlhdGUg
YXR0cmlidXRpb24gKGluY2x1ZGluZyBjb21tZXJjaWFsIG9mZmVyaW5ncykuIFRoZSBsaWNlbnNl
IGlzIHByZXBlbmRlZCB0byBlYWNoIG9mIGpzZGlmZmxpYidzIGZpbGVzLgorCitbW2Rvd25sb2Fk
c11dCis9PSBEb3dubG9hZHMKKworanNkaWZmbGliIGNvbnNpc3RzIG9mIHRocmVlIGZpbGVzIC0t
IHR3byBKYXZhc2NyaXB0IGZpbGVzLCBhbmQgb25lIENTUyBmaWxlLiBXaHkgdHdvIEphdmFzY3Jp
cHQgZmlsZXM/IEJlY2F1c2UgSSB3YW50ZWQgdG8ga2VlcCB0aGUgcmVpbXBsZW1lbnRhdGlvbiBv
ZiB0aGUgcHl0aG9uIGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyIGNsYXNzIHNlcGFyYXRlIGZyb20g
dGhlIGFjdHVhbCB2aXN1YWwgZGlmZiB2aWV3IGdlbmVyYXRvci4gRmVlbCBmcmVlIHRvIGNvbWJp
bmUgYW5kL29yIG9wdGltaXplIHRoZW0gaW4geW91ciBkZXBsb3ltZW50IGVudmlyb25tZW50Lgor
CitZb3UgY2FuIGRvd25sb2FkIHRoZSBmaWxlcyBzZXBhcmF0ZWx5IGJ5IG5hdmlnYXRpbmcgdGhl
IHByb2plY3Qgb24gZ2l0aHViLCB5b3UgY2FuIGNsb25lIHRoZSByZXBvLCBvciB5b3UgY2FuIGRv
d25sb2FkIGEgemlwcGVkIGRpc3RyaWJ1dGlvbiB2aWEgdGhlICJEb3dubG9hZHMiIGJ1dHRvbiBh
dCB0aGUgdG9wIG9mIHRoaXMgcHJvamVjdCBwYWdlLgorCitbW2hpc3RvcnldXQorPT0gUmVsZWFz
ZSBIaXN0b3J5CisKKyogMS4xLjAgKE1heSAxOCwgMjAxMSk6IE1vdmUgcHJvamVjdCB0byBnaXRo
dWI7IG5vIGNoYW5nZXMgaW4gZnVuY3Rpb25hbGl0eQorKiAxLjAuMCAoRmVicnVhcnkgMjIsIDIw
MDcpOiBJbml0aWFsIHJlbGVhc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9qc2RpZmZsaWIvZGlmZmxpYi5qcyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9qc2RpZmZsaWIvZGlmZmxpYi5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kYjJjMGUzYWM0ZmQzZDE5YmZhZmNlZmMyZTRjNzAxYmEwYmFhMTllCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlm
ZmxpYi9kaWZmbGliLmpzCkBAIC0wLDAgKzEsNDA3IEBACisvKioqCitUaGlzIGlzIHBhcnQgb2Yg
anNkaWZmbGliIHYxLjAuIDxodHRwOi8vc25vd3RpZGUuY29tL2pzZGlmZmxpYj4KKworQ29weXJp
Z2h0IChjKSAyMDA3LCBTbm93dGlkZSBJbmZvcm1hdGljcyBTeXN0ZW1zLCBJbmMuCitBbGwgcmln
aHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAorYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorCisJKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMKKwkJbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisJKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisJCXRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKwkJYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisJKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBTbm93dGlkZSBJbmZvcm1hdGljcyBTeXN0ZW1zIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisJCWNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKwkJc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCitFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKK09GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UCitTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAorSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
CitUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SCitCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTgorQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKK0RBTUFH
RS4KKyoqKi8KKy8qIEF1dGhvcjogQ2hhcyBFbWVyaWNrIDxjZW1lcmlja0Bzbm93dGlkZS5jb20+
ICovCitfX3doaXRlc3BhY2UgPSB7IiAiOnRydWUsICJcdCI6dHJ1ZSwgIlxuIjp0cnVlLCAiXGYi
OnRydWUsICJcciI6dHJ1ZX07CisKK2RpZmZsaWIgPSB7CisJZGVmYXVsdEp1bmtGdW5jdGlvbjog
ZnVuY3Rpb24gKGMpIHsKKwkJcmV0dXJuIF9fd2hpdGVzcGFjZS5oYXNPd25Qcm9wZXJ0eShjKTsK
Kwl9LAorCQorCXN0cmlwTGluZWJyZWFrczogZnVuY3Rpb24gKHN0cikgeyByZXR1cm4gc3RyLnJl
cGxhY2UoL15bXG5ccl0qfFtcblxyXSokL2csICIiKTsgfSwKKwkKKwlzdHJpbmdBc0xpbmVzOiBm
dW5jdGlvbiAoc3RyKSB7CisJCXZhciBsZnBvcyA9IHN0ci5pbmRleE9mKCJcbiIpOworCQl2YXIg
Y3Jwb3MgPSBzdHIuaW5kZXhPZigiXHIiKTsKKwkJdmFyIGxpbmVicmVhayA9ICgobGZwb3MgPiAt
MSAmJiBjcnBvcyA+IC0xKSB8fCBjcnBvcyA8IDApID8gIlxuIiA6ICJcciI7CisJCQorCQl2YXIg
bGluZXMgPSBzdHIuc3BsaXQobGluZWJyZWFrKTsKKwkJZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5l
cy5sZW5ndGg7IGkrKykgeworCQkJbGluZXNbaV0gPSBkaWZmbGliLnN0cmlwTGluZWJyZWFrcyhs
aW5lc1tpXSk7CisJCX0KKwkJCisJCXJldHVybiBsaW5lczsKKwl9LAorCQorCS8vIGl0ZXJhdGlv
bi1iYXNlZCByZWR1Y2UgaW1wbGVtZW50YXRpb24KKwlfX3JlZHVjZTogZnVuY3Rpb24gKGZ1bmMs
IGxpc3QsIGluaXRpYWwpIHsKKwkJaWYgKGluaXRpYWwgIT0gbnVsbCkgeworCQkJdmFyIHZhbHVl
ID0gaW5pdGlhbDsKKwkJCXZhciBpZHggPSAwOworCQl9IGVsc2UgaWYgKGxpc3QpIHsKKwkJCXZh
ciB2YWx1ZSA9IGxpc3RbMF07CisJCQl2YXIgaWR4ID0gMTsKKwkJfSBlbHNlIHsKKwkJCXJldHVy
biBudWxsOworCQl9CisJCQorCQlmb3IgKDsgaWR4IDwgbGlzdC5sZW5ndGg7IGlkeCsrKSB7CisJ
CQl2YWx1ZSA9IGZ1bmModmFsdWUsIGxpc3RbaWR4XSk7CisJCX0KKwkJCisJCXJldHVybiB2YWx1
ZTsKKwl9LAorCQorCS8vIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIHNvcnRpbmcgbGlzdHMgb2Yg
bnVtZXJpYyB0dXBsZXMKKwlfX250dXBsZWNvbXA6IGZ1bmN0aW9uIChhLCBiKSB7CisJCXZhciBt
bGVuID0gTWF0aC5tYXgoYS5sZW5ndGgsIGIubGVuZ3RoKTsKKwkJZm9yICh2YXIgaSA9IDA7IGkg
PCBtbGVuOyBpKyspIHsKKwkJCWlmIChhW2ldIDwgYltpXSkgcmV0dXJuIC0xOworCQkJaWYgKGFb
aV0gPiBiW2ldKSByZXR1cm4gMTsKKwkJfQorCQkKKwkJcmV0dXJuIGEubGVuZ3RoID09IGIubGVu
Z3RoID8gMCA6IChhLmxlbmd0aCA8IGIubGVuZ3RoID8gLTEgOiAxKTsKKwl9LAorCQorCV9fY2Fs
Y3VsYXRlX3JhdGlvOiBmdW5jdGlvbiAobWF0Y2hlcywgbGVuZ3RoKSB7CisJCXJldHVybiBsZW5n
dGggPyAyLjAgKiBtYXRjaGVzIC8gbGVuZ3RoIDogMS4wOworCX0sCisJCisJLy8gcmV0dXJucyBh
IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0cnVlIGlmIGEga2V5IHBhc3NlZCB0byB0aGUgcmV0dXJu
ZWQgZnVuY3Rpb24KKwkvLyBpcyBpbiB0aGUgZGljdCAoanMgb2JqZWN0KSBwcm92aWRlZCB0byB0
aGlzIGZ1bmN0aW9uOyByZXBsYWNlcyBiZWluZyBhYmxlIHRvCisJLy8gY2FycnkgYXJvdW5kIGRp
Y3QuaGFzX2tleSBpbiBweXRob24uLi4KKwlfX2lzaW5kaWN0OiBmdW5jdGlvbiAoZGljdCkgewor
CQlyZXR1cm4gZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gZGljdC5oYXNPd25Qcm9wZXJ0eShrZXkp
OyB9OworCX0sCisJCisJLy8gcmVwbGFjZW1lbnQgZm9yIHB5dGhvbidzIGRpY3QuZ2V0IGZ1bmN0
aW9uIC0tIG5lZWQgZWFzeSBkZWZhdWx0IHZhbHVlcworCV9fZGljdGdldDogZnVuY3Rpb24gKGRp
Y3QsIGtleSwgZGVmYXVsdFZhbHVlKSB7CisJCXJldHVybiBkaWN0Lmhhc093blByb3BlcnR5KGtl
eSkgPyBkaWN0W2tleV0gOiBkZWZhdWx0VmFsdWU7CisJfSwJCisJCisJU2VxdWVuY2VNYXRjaGVy
OiBmdW5jdGlvbiAoYSwgYiwgaXNqdW5rKSB7CisJCXRoaXMuc2V0X3NlcXMgPSBmdW5jdGlvbiAo
YSwgYikgeworCQkJdGhpcy5zZXRfc2VxMShhKTsKKwkJCXRoaXMuc2V0X3NlcTIoYik7CisJCX0K
KwkJCisJCXRoaXMuc2V0X3NlcTEgPSBmdW5jdGlvbiAoYSkgeworCQkJaWYgKGEgPT0gdGhpcy5h
KSByZXR1cm47CisJCQl0aGlzLmEgPSBhOworCQkJdGhpcy5tYXRjaGluZ19ibG9ja3MgPSB0aGlz
Lm9wY29kZXMgPSBudWxsOworCQl9CisJCQorCQl0aGlzLnNldF9zZXEyID0gZnVuY3Rpb24gKGIp
IHsKKwkJCWlmIChiID09IHRoaXMuYikgcmV0dXJuOworCQkJdGhpcy5iID0gYjsKKwkJCXRoaXMu
bWF0Y2hpbmdfYmxvY2tzID0gdGhpcy5vcGNvZGVzID0gdGhpcy5mdWxsYmNvdW50ID0gbnVsbDsK
KwkJCXRoaXMuX19jaGFpbl9iKCk7CisJCX0KKwkJCisJCXRoaXMuX19jaGFpbl9iID0gZnVuY3Rp
b24gKCkgeworCQkJdmFyIGIgPSB0aGlzLmI7CisJCQl2YXIgbiA9IGIubGVuZ3RoOworCQkJdmFy
IGIyaiA9IHRoaXMuYjJqID0ge307CisJCQl2YXIgcG9wdWxhcmRpY3QgPSB7fTsKKwkJCWZvciAo
dmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykgeworCQkJCXZhciBlbHQgPSBiW2ldOworCQkJ
CWlmIChiMmouaGFzT3duUHJvcGVydHkoZWx0KSkgeworCQkJCQl2YXIgaW5kaWNlcyA9IGIyaltl
bHRdOworCQkJCQlpZiAobiA+PSAyMDAgJiYgaW5kaWNlcy5sZW5ndGggKiAxMDAgPiBuKSB7CisJ
CQkJCQlwb3B1bGFyZGljdFtlbHRdID0gMTsKKwkJCQkJCWRlbGV0ZSBiMmpbZWx0XTsKKwkJCQkJ
fSBlbHNlIHsKKwkJCQkJCWluZGljZXMucHVzaChpKTsKKwkJCQkJfQorCQkJCX0gZWxzZSB7CisJ
CQkJCWIyaltlbHRdID0gW2ldOworCQkJCX0KKwkJCX0KKwkKKwkJCWZvciAodmFyIGVsdCBpbiBw
b3B1bGFyZGljdCkgeworCQkJCWlmIChwb3B1bGFyZGljdC5oYXNPd25Qcm9wZXJ0eShlbHQpKSB7
CisJCQkJCWRlbGV0ZSBiMmpbZWx0XTsKKwkJCQl9CisJCQl9CisJCQkKKwkJCXZhciBpc2p1bmsg
PSB0aGlzLmlzanVuazsKKwkJCXZhciBqdW5rZGljdCA9IHt9OworCQkJaWYgKGlzanVuaykgewor
CQkJCWZvciAodmFyIGVsdCBpbiBwb3B1bGFyZGljdCkgeworCQkJCQlpZiAocG9wdWxhcmRpY3Qu
aGFzT3duUHJvcGVydHkoZWx0KSAmJiBpc2p1bmsoZWx0KSkgeworCQkJCQkJanVua2RpY3RbZWx0
XSA9IDE7CisJCQkJCQlkZWxldGUgcG9wdWxhcmRpY3RbZWx0XTsKKwkJCQkJfQorCQkJCX0KKwkJ
CQlmb3IgKHZhciBlbHQgaW4gYjJqKSB7CisJCQkJCWlmIChiMmouaGFzT3duUHJvcGVydHkoZWx0
KSAmJiBpc2p1bmsoZWx0KSkgeworCQkJCQkJanVua2RpY3RbZWx0XSA9IDE7CisJCQkJCQlkZWxl
dGUgYjJqW2VsdF07CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCisJCQl0aGlzLmlzYmp1bmsgPSBk
aWZmbGliLl9faXNpbmRpY3QoanVua2RpY3QpOworCQkJdGhpcy5pc2Jwb3B1bGFyID0gZGlmZmxp
Yi5fX2lzaW5kaWN0KHBvcHVsYXJkaWN0KTsKKwkJfQorCQkKKwkJdGhpcy5maW5kX2xvbmdlc3Rf
bWF0Y2ggPSBmdW5jdGlvbiAoYWxvLCBhaGksIGJsbywgYmhpKSB7CisJCQl2YXIgYSA9IHRoaXMu
YTsKKwkJCXZhciBiID0gdGhpcy5iOworCQkJdmFyIGIyaiA9IHRoaXMuYjJqOworCQkJdmFyIGlz
Ymp1bmsgPSB0aGlzLmlzYmp1bms7CisJCQl2YXIgYmVzdGkgPSBhbG87CisJCQl2YXIgYmVzdGog
PSBibG87CisJCQl2YXIgYmVzdHNpemUgPSAwOworCQkJdmFyIGogPSBudWxsOworCQorCQkJdmFy
IGoybGVuID0ge307CisJCQl2YXIgbm90aGluZyA9IFtdOworCQkJZm9yICh2YXIgaSA9IGFsbzsg
aSA8IGFoaTsgaSsrKSB7CisJCQkJdmFyIG5ld2oybGVuID0ge307CisJCQkJdmFyIGpkaWN0ID0g
ZGlmZmxpYi5fX2RpY3RnZXQoYjJqLCBhW2ldLCBub3RoaW5nKTsKKwkJCQlmb3IgKHZhciBqa2V5
IGluIGpkaWN0KSB7CisJCQkJCWlmIChqZGljdC5oYXNPd25Qcm9wZXJ0eShqa2V5KSkgeworCQkJ
CQkJaiA9IGpkaWN0W2prZXldOworCQkJCQkJaWYgKGogPCBibG8pIGNvbnRpbnVlOworCQkJCQkJ
aWYgKGogPj0gYmhpKSBicmVhazsKKwkJCQkJCW5ld2oybGVuW2pdID0gayA9IGRpZmZsaWIuX19k
aWN0Z2V0KGoybGVuLCBqIC0gMSwgMCkgKyAxOworCQkJCQkJaWYgKGsgPiBiZXN0c2l6ZSkgewor
CQkJCQkJCWJlc3RpID0gaSAtIGsgKyAxOworCQkJCQkJCWJlc3RqID0gaiAtIGsgKyAxOworCQkJ
CQkJCWJlc3RzaXplID0gazsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCQlqMmxlbiA9IG5l
d2oybGVuOworCQkJfQorCQorCQkJd2hpbGUgKGJlc3RpID4gYWxvICYmIGJlc3RqID4gYmxvICYm
ICFpc2JqdW5rKGJbYmVzdGogLSAxXSkgJiYgYVtiZXN0aSAtIDFdID09IGJbYmVzdGogLSAxXSkg
eworCQkJCWJlc3RpLS07CisJCQkJYmVzdGotLTsKKwkJCQliZXN0c2l6ZSsrOworCQkJfQorCQkJ
CQorCQkJd2hpbGUgKGJlc3RpICsgYmVzdHNpemUgPCBhaGkgJiYgYmVzdGogKyBiZXN0c2l6ZSA8
IGJoaSAmJgorCQkJCQkhaXNianVuayhiW2Jlc3RqICsgYmVzdHNpemVdKSAmJgorCQkJCQlhW2Jl
c3RpICsgYmVzdHNpemVdID09IGJbYmVzdGogKyBiZXN0c2l6ZV0pIHsKKwkJCQliZXN0c2l6ZSsr
OworCQkJfQorCQorCQkJd2hpbGUgKGJlc3RpID4gYWxvICYmIGJlc3RqID4gYmxvICYmIGlzYmp1
bmsoYltiZXN0aiAtIDFdKSAmJiBhW2Jlc3RpIC0gMV0gPT0gYltiZXN0aiAtIDFdKSB7CisJCQkJ
YmVzdGktLTsKKwkJCQliZXN0ai0tOworCQkJCWJlc3RzaXplKys7CisJCQl9CisJCQkKKwkJCXdo
aWxlIChiZXN0aSArIGJlc3RzaXplIDwgYWhpICYmIGJlc3RqICsgYmVzdHNpemUgPCBiaGkgJiYg
aXNianVuayhiW2Jlc3RqICsgYmVzdHNpemVdKSAmJgorCQkJCQlhW2Jlc3RpICsgYmVzdHNpemVd
ID09IGJbYmVzdGogKyBiZXN0c2l6ZV0pIHsKKwkJCQliZXN0c2l6ZSsrOworCQkJfQorCQorCQkJ
cmV0dXJuIFtiZXN0aSwgYmVzdGosIGJlc3RzaXplXTsKKwkJfQorCQkKKwkJdGhpcy5nZXRfbWF0
Y2hpbmdfYmxvY2tzID0gZnVuY3Rpb24gKCkgeworCQkJaWYgKHRoaXMubWF0Y2hpbmdfYmxvY2tz
ICE9IG51bGwpIHJldHVybiB0aGlzLm1hdGNoaW5nX2Jsb2NrczsKKwkJCXZhciBsYSA9IHRoaXMu
YS5sZW5ndGg7CisJCQl2YXIgbGIgPSB0aGlzLmIubGVuZ3RoOworCQorCQkJdmFyIHF1ZXVlID0g
W1swLCBsYSwgMCwgbGJdXTsKKwkJCXZhciBtYXRjaGluZ19ibG9ja3MgPSBbXTsKKwkJCXZhciBh
bG8sIGFoaSwgYmxvLCBiaGksIHFpLCBpLCBqLCBrLCB4OworCQkJd2hpbGUgKHF1ZXVlLmxlbmd0
aCkgeworCQkJCXFpID0gcXVldWUucG9wKCk7CisJCQkJYWxvID0gcWlbMF07CisJCQkJYWhpID0g
cWlbMV07CisJCQkJYmxvID0gcWlbMl07CisJCQkJYmhpID0gcWlbM107CisJCQkJeCA9IHRoaXMu
ZmluZF9sb25nZXN0X21hdGNoKGFsbywgYWhpLCBibG8sIGJoaSk7CisJCQkJaSA9IHhbMF07CisJ
CQkJaiA9IHhbMV07CisJCQkJayA9IHhbMl07CisJCisJCQkJaWYgKGspIHsKKwkJCQkJbWF0Y2hp
bmdfYmxvY2tzLnB1c2goeCk7CisJCQkJCWlmIChhbG8gPCBpICYmIGJsbyA8IGopCisJCQkJCQlx
dWV1ZS5wdXNoKFthbG8sIGksIGJsbywgal0pOworCQkJCQlpZiAoaStrIDwgYWhpICYmIGorayA8
IGJoaSkKKwkJCQkJCXF1ZXVlLnB1c2goW2kgKyBrLCBhaGksIGogKyBrLCBiaGldKTsKKwkJCQl9
CisJCQl9CisJCQkKKwkJCW1hdGNoaW5nX2Jsb2Nrcy5zb3J0KGRpZmZsaWIuX19udHVwbGVjb21w
KTsKKwkKKwkJCXZhciBpMSA9IGoxID0gazEgPSBibG9jayA9IDA7CisJCQl2YXIgbm9uX2FkamFj
ZW50ID0gW107CisJCQlmb3IgKHZhciBpZHggaW4gbWF0Y2hpbmdfYmxvY2tzKSB7CisJCQkJaWYg
KG1hdGNoaW5nX2Jsb2Nrcy5oYXNPd25Qcm9wZXJ0eShpZHgpKSB7CisJCQkJCWJsb2NrID0gbWF0
Y2hpbmdfYmxvY2tzW2lkeF07CisJCQkJCWkyID0gYmxvY2tbMF07CisJCQkJCWoyID0gYmxvY2tb
MV07CisJCQkJCWsyID0gYmxvY2tbMl07CisJCQkJCWlmIChpMSArIGsxID09IGkyICYmIGoxICsg
azEgPT0gajIpIHsKKwkJCQkJCWsxICs9IGsyOworCQkJCQl9IGVsc2UgeworCQkJCQkJaWYgKGsx
KSBub25fYWRqYWNlbnQucHVzaChbaTEsIGoxLCBrMV0pOworCQkJCQkJaTEgPSBpMjsKKwkJCQkJ
CWoxID0gajI7CisJCQkJCQlrMSA9IGsyOworCQkJCQl9CisJCQkJfQorCQkJfQorCQkJCisJCQlp
ZiAoazEpIG5vbl9hZGphY2VudC5wdXNoKFtpMSwgajEsIGsxXSk7CisJCisJCQlub25fYWRqYWNl
bnQucHVzaChbbGEsIGxiLCAwXSk7CisJCQl0aGlzLm1hdGNoaW5nX2Jsb2NrcyA9IG5vbl9hZGph
Y2VudDsKKwkJCXJldHVybiB0aGlzLm1hdGNoaW5nX2Jsb2NrczsKKwkJfQorCQkKKwkJdGhpcy5n
ZXRfb3Bjb2RlcyA9IGZ1bmN0aW9uICgpIHsKKwkJCWlmICh0aGlzLm9wY29kZXMgIT0gbnVsbCkg
cmV0dXJuIHRoaXMub3Bjb2RlczsKKwkJCXZhciBpID0gMDsKKwkJCXZhciBqID0gMDsKKwkJCXZh
ciBhbnN3ZXIgPSBbXTsKKwkJCXRoaXMub3Bjb2RlcyA9IGFuc3dlcjsKKwkJCXZhciBibG9jaywg
YWksIGJqLCBzaXplLCB0YWc7CisJCQl2YXIgYmxvY2tzID0gdGhpcy5nZXRfbWF0Y2hpbmdfYmxv
Y2tzKCk7CisJCQlmb3IgKHZhciBpZHggaW4gYmxvY2tzKSB7CisJCQkJaWYgKGJsb2Nrcy5oYXNP
d25Qcm9wZXJ0eShpZHgpKSB7CisJCQkJCWJsb2NrID0gYmxvY2tzW2lkeF07CisJCQkJCWFpID0g
YmxvY2tbMF07CisJCQkJCWJqID0gYmxvY2tbMV07CisJCQkJCXNpemUgPSBibG9ja1syXTsKKwkJ
CQkJdGFnID0gJyc7CisJCQkJCWlmIChpIDwgYWkgJiYgaiA8IGJqKSB7CisJCQkJCQl0YWcgPSAn
cmVwbGFjZSc7CisJCQkJCX0gZWxzZSBpZiAoaSA8IGFpKSB7CisJCQkJCQl0YWcgPSAnZGVsZXRl
JzsKKwkJCQkJfSBlbHNlIGlmIChqIDwgYmopIHsKKwkJCQkJCXRhZyA9ICdpbnNlcnQnOworCQkJ
CQl9CisJCQkJCWlmICh0YWcpIGFuc3dlci5wdXNoKFt0YWcsIGksIGFpLCBqLCBial0pOworCQkJ
CQlpID0gYWkgKyBzaXplOworCQkJCQlqID0gYmogKyBzaXplOworCQkJCQkKKwkJCQkJaWYgKHNp
emUpIGFuc3dlci5wdXNoKFsnZXF1YWwnLCBhaSwgaSwgYmosIGpdKTsKKwkJCQl9CisJCQl9CisJ
CQkKKwkJCXJldHVybiBhbnN3ZXI7CisJCX0KKwkJCisJCS8vIHRoaXMgaXMgYSBnZW5lcmF0b3Ig
ZnVuY3Rpb24gaW4gdGhlIHB5dGhvbiBsaWIsIHdoaWNoIG9mIGNvdXJzZSBpcyBub3Qgc3VwcG9y
dGVkIGluIGphdmFzY3JpcHQKKwkJLy8gdGhlIHJlaW1wbGVtZW50YXRpb24gYnVpbGRzIHVwIHRo
ZSBncm91cGVkIG9wY29kZXMgaW50byBhIGxpc3QgaW4gdGhlaXIgZW50aXJldHkgYW5kIHJldHVy
bnMgdGhhdC4KKwkJdGhpcy5nZXRfZ3JvdXBlZF9vcGNvZGVzID0gZnVuY3Rpb24gKG4pIHsKKwkJ
CWlmICghbikgbiA9IDM7CisJCQl2YXIgY29kZXMgPSB0aGlzLmdldF9vcGNvZGVzKCk7CisJCQlp
ZiAoIWNvZGVzKSBjb2RlcyA9IFtbImVxdWFsIiwgMCwgMSwgMCwgMV1dOworCQkJdmFyIGNvZGUs
IHRhZywgaTEsIGkyLCBqMSwgajI7CisJCQlpZiAoY29kZXNbMF1bMF0gPT0gJ2VxdWFsJykgewor
CQkJCWNvZGUgPSBjb2Rlc1swXTsKKwkJCQl0YWcgPSBjb2RlWzBdOworCQkJCWkxID0gY29kZVsx
XTsKKwkJCQlpMiA9IGNvZGVbMl07CisJCQkJajEgPSBjb2RlWzNdOworCQkJCWoyID0gY29kZVs0
XTsKKwkJCQljb2Rlc1swXSA9IFt0YWcsIE1hdGgubWF4KGkxLCBpMiAtIG4pLCBpMiwgTWF0aC5t
YXgoajEsIGoyIC0gbiksIGoyXTsKKwkJCX0KKwkJCWlmIChjb2Rlc1tjb2Rlcy5sZW5ndGggLSAx
XVswXSA9PSAnZXF1YWwnKSB7CisJCQkJY29kZSA9IGNvZGVzW2NvZGVzLmxlbmd0aCAtIDFdOwor
CQkJCXRhZyA9IGNvZGVbMF07CisJCQkJaTEgPSBjb2RlWzFdOworCQkJCWkyID0gY29kZVsyXTsK
KwkJCQlqMSA9IGNvZGVbM107CisJCQkJajIgPSBjb2RlWzRdOworCQkJCWNvZGVzW2NvZGVzLmxl
bmd0aCAtIDFdID0gW3RhZywgaTEsIE1hdGgubWluKGkyLCBpMSArIG4pLCBqMSwgTWF0aC5taW4o
ajIsIGoxICsgbildOworCQkJfQorCQorCQkJdmFyIG5uID0gbiArIG47CisJCQl2YXIgZ3JvdXBz
ID0gW107CisJCQlmb3IgKHZhciBpZHggaW4gY29kZXMpIHsKKwkJCQlpZiAoY29kZXMuaGFzT3du
UHJvcGVydHkoaWR4KSkgeworCQkJCQljb2RlID0gY29kZXNbaWR4XTsKKwkJCQkJdGFnID0gY29k
ZVswXTsKKwkJCQkJaTEgPSBjb2RlWzFdOworCQkJCQlpMiA9IGNvZGVbMl07CisJCQkJCWoxID0g
Y29kZVszXTsKKwkJCQkJajIgPSBjb2RlWzRdOworCQkJCQlpZiAodGFnID09ICdlcXVhbCcgJiYg
aTIgLSBpMSA+IG5uKSB7CisJCQkJCQlncm91cHMucHVzaChbdGFnLCBpMSwgTWF0aC5taW4oaTIs
IGkxICsgbiksIGoxLCBNYXRoLm1pbihqMiwgajEgKyBuKV0pOworCQkJCQkJaTEgPSBNYXRoLm1h
eChpMSwgaTItbik7CisJCQkJCQlqMSA9IE1hdGgubWF4KGoxLCBqMi1uKTsKKwkJCQkJfQorCQkJ
CQkKKwkJCQkJZ3JvdXBzLnB1c2goW3RhZywgaTEsIGkyLCBqMSwgajJdKTsKKwkJCQl9CisJCQl9
CisJCQkKKwkJCWlmIChncm91cHMgJiYgZ3JvdXBzW2dyb3Vwcy5sZW5ndGggLSAxXVswXSA9PSAn
ZXF1YWwnKSBncm91cHMucG9wKCk7CisJCQkKKwkJCXJldHVybiBncm91cHM7CisJCX0KKwkJCisJ
CXRoaXMucmF0aW8gPSBmdW5jdGlvbiAoKSB7CisJCQltYXRjaGVzID0gZGlmZmxpYi5fX3JlZHVj
ZSgKKwkJCQkJCQlmdW5jdGlvbiAoc3VtLCB0cmlwbGUpIHsgcmV0dXJuIHN1bSArIHRyaXBsZVt0
cmlwbGUubGVuZ3RoIC0gMV07IH0sCisJCQkJCQkJdGhpcy5nZXRfbWF0Y2hpbmdfYmxvY2tzKCks
IDApOworCQkJcmV0dXJuIGRpZmZsaWIuX19jYWxjdWxhdGVfcmF0aW8obWF0Y2hlcywgdGhpcy5h
Lmxlbmd0aCArIHRoaXMuYi5sZW5ndGgpOworCQl9CisJCQorCQl0aGlzLnF1aWNrX3JhdGlvID0g
ZnVuY3Rpb24gKCkgeworCQkJdmFyIGZ1bGxiY291bnQsIGVsdDsKKwkJCWlmICh0aGlzLmZ1bGxi
Y291bnQgPT0gbnVsbCkgeworCQkJCXRoaXMuZnVsbGJjb3VudCA9IGZ1bGxiY291bnQgPSB7fTsK
KwkJCQlmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYi5sZW5ndGg7IGkrKykgeworCQkJCQllbHQg
PSB0aGlzLmJbaV07CisJCQkJCWZ1bGxiY291bnRbZWx0XSA9IGRpZmZsaWIuX19kaWN0Z2V0KGZ1
bGxiY291bnQsIGVsdCwgMCkgKyAxOworCQkJCX0KKwkJCX0KKwkJCWZ1bGxiY291bnQgPSB0aGlz
LmZ1bGxiY291bnQ7CisJCisJCQl2YXIgYXZhaWwgPSB7fTsKKwkJCXZhciBhdmFpbGhhcyA9IGRp
ZmZsaWIuX19pc2luZGljdChhdmFpbCk7CisJCQl2YXIgbWF0Y2hlcyA9IG51bWIgPSAwOworCQkJ
Zm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmEubGVuZ3RoOyBpKyspIHsKKwkJCQllbHQgPSB0aGlz
LmFbaV07CisJCQkJaWYgKGF2YWlsaGFzKGVsdCkpIHsKKwkJCQkJbnVtYiA9IGF2YWlsW2VsdF07
CisJCQkJfSBlbHNlIHsKKwkJCQkJbnVtYiA9IGRpZmZsaWIuX19kaWN0Z2V0KGZ1bGxiY291bnQs
IGVsdCwgMCk7CisJCQkJfQorCQkJCWF2YWlsW2VsdF0gPSBudW1iIC0gMTsKKwkJCQlpZiAobnVt
YiA+IDApIG1hdGNoZXMrKzsKKwkJCX0KKwkJCQorCQkJcmV0dXJuIGRpZmZsaWIuX19jYWxjdWxh
dGVfcmF0aW8obWF0Y2hlcywgdGhpcy5hLmxlbmd0aCArIHRoaXMuYi5sZW5ndGgpOworCQl9CisJ
CQorCQl0aGlzLnJlYWxfcXVpY2tfcmF0aW8gPSBmdW5jdGlvbiAoKSB7CisJCQl2YXIgbGEgPSB0
aGlzLmEubGVuZ3RoOworCQkJdmFyIGxiID0gdGhpcy5iLmxlbmd0aDsKKwkJCXJldHVybiBfY2Fs
Y3VsYXRlX3JhdGlvKE1hdGgubWluKGxhLCBsYiksIGxhICsgbGIpOworCQl9CisJCQorCQl0aGlz
LmlzanVuayA9IGlzanVuayA/IGlzanVuayA6IGRpZmZsaWIuZGVmYXVsdEp1bmtGdW5jdGlvbjsK
KwkJdGhpcy5hID0gdGhpcy5iID0gbnVsbDsKKwkJdGhpcy5zZXRfc2VxcyhhLCBiKTsKKwl9Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMv
anNkaWZmbGliL2RpZmZ2aWV3LmNzcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlcy9qc2RpZmZsaWIvZGlmZnZpZXcuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxMWE1OTNiNzdm
YmE0YjhlOTVmNWUxODAzYzIxZDA3N2YzOWFkMWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvanNkaWZmbGliL2RpZmZ2aWV3LmNz
cwpAQCAtMCwwICsxLDgzIEBACisvKgorVGhpcyBpcyBwYXJ0IG9mIGpzZGlmZmxpYiB2MS4wLiA8
aHR0cDovL2dpdGh1Yi5jb20vY2VtZXJpY2svanNkaWZmbGliPgorCitDb3B5cmlnaHQgMjAwNyAt
IDIwMTEgQ2hhcyBFbWVyaWNrIDxjZW1lcmlja0Bzbm93dGlkZS5jb20+LiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUKK3Blcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorCisgICAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZgorICAgICAgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorCisgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdAorICAgICAgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAgICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDaGFzIEVtZXJpY2sgYGBB
UyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECitXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5ECitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQ2hhcyBFbWVyaWNrIE9SCitDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGCitBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworVGhlIHZpZXdzIGFuZCBjb25jbHVzaW9ucyBjb250YWluZWQgaW4gdGhlIHNvZnR3YXJl
IGFuZCBkb2N1bWVudGF0aW9uIGFyZSB0aG9zZSBvZiB0aGUKK2F1dGhvcnMgYW5kIHNob3VsZCBu
b3QgYmUgaW50ZXJwcmV0ZWQgYXMgcmVwcmVzZW50aW5nIG9mZmljaWFsIHBvbGljaWVzLCBlaXRo
ZXIgZXhwcmVzc2VkCitvciBpbXBsaWVkLCBvZiBDaGFzIEVtZXJpY2suCisqLwordGFibGUuZGlm
ZiB7CisJYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOworCWJvcmRlcjoxcHggc29saWQgZGFya2dy
YXk7CisJd2hpdGUtc3BhY2U6cHJlLXdyYXAKK30KK3RhYmxlLmRpZmYgdGJvZHkgeyAKKwlmb250
LWZhbWlseTpDb3VyaWVyLCBtb25vc3BhY2UKK30KK3RhYmxlLmRpZmYgdGJvZHkgdGggeworCWZv
bnQtZmFtaWx5OnZlcmRhbmEsYXJpYWwsJ0JpdHN0cmVhbSBWZXJhIFNhbnMnLGhlbHZldGljYSxz
YW5zLXNlcmlmOworCWJhY2tncm91bmQ6I0VFRDsKKwlmb250LXNpemU6MTFweDsKKwlmb250LXdl
aWdodDpub3JtYWw7CisJYm9yZGVyOjFweCBzb2xpZCAjQkJDOworCWNvbG9yOiM4ODY7CisJcGFk
ZGluZzouM2VtIC41ZW0gLjFlbSAyZW07CisJdGV4dC1hbGlnbjpyaWdodDsKKwl2ZXJ0aWNhbC1h
bGlnbjp0b3AKK30KK3RhYmxlLmRpZmYgdGhlYWQgeworCWJvcmRlci1ib3R0b206MXB4IHNvbGlk
ICNCQkM7CisJYmFja2dyb3VuZDojRUZFRkVGOworCWZvbnQtZmFtaWx5OlZlcmRhbmEKK30KK3Rh
YmxlLmRpZmYgdGhlYWQgdGgudGV4dHRpdGxlIHsKKwl0ZXh0LWFsaWduOmxlZnQKK30KK3RhYmxl
LmRpZmYgdGJvZHkgdGQgeworCXBhZGRpbmc6MHB4IC40ZW07CisJcGFkZGluZy10b3A6LjRlbTsK
Kwl2ZXJ0aWNhbC1hbGlnbjp0b3A7Cit9Cit0YWJsZS5kaWZmIC5lbXB0eSB7CisJYmFja2dyb3Vu
ZC1jb2xvcjojREREOworfQordGFibGUuZGlmZiAucmVwbGFjZSB7CisJYmFja2dyb3VuZC1jb2xv
cjojRkQ4Cit9Cit0YWJsZS5kaWZmIC5kZWxldGUgeworCWJhY2tncm91bmQtY29sb3I6I0U5OTsK
K30KK3RhYmxlLmRpZmYgLnNraXAgeworCWJhY2tncm91bmQtY29sb3I6I0VGRUZFRjsKKwlib3Jk
ZXI6MXB4IHNvbGlkICNBQUE7CisJYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjQkJDOworfQordGFi
bGUuZGlmZiAuaW5zZXJ0IHsKKwliYWNrZ3JvdW5kLWNvbG9yOiM5RTkKK30KK3RhYmxlLmRpZmYg
dGguYXV0aG9yIHsKKwl0ZXh0LWFsaWduOnJpZ2h0OworCWJvcmRlci10b3A6MXB4IHNvbGlkICNC
QkM7CisJYmFja2dyb3VuZDojRUZFRkVGCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pz
ZGlmZmxpYi9kaWZmdmlldy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jl
c291cmNlcy9qc2RpZmZsaWIvZGlmZnZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTIyOGEzNGQyYjZjNGUz
YjM5MzIzMmQ4NjBjODRkZmJkOWZlNWFiNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9qc2RpZmZsaWIvZGlmZnZpZXcuanMKQEAg
LTAsMCArMSwxOTcgQEAKKy8qCitUaGlzIGlzIHBhcnQgb2YganNkaWZmbGliIHYxLjAuIDxodHRw
Oi8vZ2l0aHViLmNvbS9jZW1lcmljay9qc2RpZmZsaWI+CisKK0NvcHlyaWdodCAyMDA3IC0gMjAx
MSBDaGFzIEVtZXJpY2sgPGNlbWVyaWNrQHNub3d0aWRlLmNvbT4uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZQorcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisKKyAgIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mCisgICAgICBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisKKyAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0CisgICAgICBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscworICAgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENoYXMgRW1lcmljayBgYEFTIElT
JycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKK1dBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBDaGFzIEVtZXJpY2sgT1IKK0NPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCitDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCitTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCitBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCitORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYKK0FEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CitUaGUgdmlld3MgYW5kIGNvbmNsdXNpb25zIGNvbnRhaW5lZCBpbiB0aGUgc29mdHdhcmUgYW5k
IGRvY3VtZW50YXRpb24gYXJlIHRob3NlIG9mIHRoZQorYXV0aG9ycyBhbmQgc2hvdWxkIG5vdCBi
ZSBpbnRlcnByZXRlZCBhcyByZXByZXNlbnRpbmcgb2ZmaWNpYWwgcG9saWNpZXMsIGVpdGhlciBl
eHByZXNzZWQKK29yIGltcGxpZWQsIG9mIENoYXMgRW1lcmljay4KKyovCitkaWZmdmlldyA9IHsK
KwkvKioKKwkgKiBCdWlsZHMgYW5kIHJldHVybnMgYSB2aXN1YWwgZGlmZiB2aWV3LiAgVGhlIHNp
bmdsZSBwYXJhbWV0ZXIsIGBwYXJhbXMnLCBzaG91bGQgY29udGFpbgorCSAqIHRoZSBmb2xsb3dp
bmcgdmFsdWVzOgorCSAqCisJICogLSBiYXNlVGV4dExpbmVzOiB0aGUgYXJyYXkgb2Ygc3RyaW5n
cyB0aGF0IHdhcyB1c2VkIGFzIHRoZSBiYXNlIHRleHQgaW5wdXQgdG8gU2VxdWVuY2VNYXRjaGVy
CisJICogLSBuZXdUZXh0TGluZXM6IHRoZSBhcnJheSBvZiBzdHJpbmdzIHRoYXQgd2FzIHVzZWQg
YXMgdGhlIG5ldyB0ZXh0IGlucHV0IHRvIFNlcXVlbmNlTWF0Y2hlcgorCSAqIC0gb3Bjb2Rlczog
dGhlIGFycmF5IG9mIGFycmF5cyByZXR1cm5lZCBieSBTZXF1ZW5jZU1hdGNoZXIuZ2V0X29wY29k
ZXMoKQorCSAqIC0gYmFzZVRleHROYW1lOiB0aGUgdGl0bGUgdG8gYmUgZGlzcGxheWVkIGFib3Zl
IHRoZSBiYXNlIHRleHQgbGlzdGluZyBpbiB0aGUgZGlmZiB2aWV3OyBkZWZhdWx0cworCSAqCSAg
IHRvICJCYXNlIFRleHQiCisJICogLSBuZXdUZXh0TmFtZTogdGhlIHRpdGxlIHRvIGJlIGRpc3Bs
YXllZCBhYm92ZSB0aGUgbmV3IHRleHQgbGlzdGluZyBpbiB0aGUgZGlmZiB2aWV3OyBkZWZhdWx0
cworCSAqCSAgIHRvICJOZXcgVGV4dCIKKwkgKiAtIGNvbnRleHRTaXplOiB0aGUgbnVtYmVyIG9m
IGxpbmVzIG9mIGNvbnRleHQgdG8gc2hvdyBhcm91bmQgZGlmZmVyZW5jZXM7IGJ5IGRlZmF1bHQs
IGFsbCBsaW5lcworCSAqCSAgIGFyZSBzaG93bgorCSAqIC0gdmlld1R5cGU6IGlmIDAsIGEgc2lk
ZS1ieS1zaWRlIGRpZmYgdmlldyBpcyBnZW5lcmF0ZWQgKGRlZmF1bHQpOyBpZiAxLCBhbiBpbmxp
bmUgZGlmZiB2aWV3IGlzCisJICoJICAgZ2VuZXJhdGVkCisJICovCisJYnVpbGRWaWV3OiBmdW5j
dGlvbiAocGFyYW1zKSB7CisJCXZhciBiYXNlVGV4dExpbmVzID0gcGFyYW1zLmJhc2VUZXh0TGlu
ZXM7CisJCXZhciBuZXdUZXh0TGluZXMgPSBwYXJhbXMubmV3VGV4dExpbmVzOworCQl2YXIgb3Bj
b2RlcyA9IHBhcmFtcy5vcGNvZGVzOworCQl2YXIgYmFzZVRleHROYW1lID0gcGFyYW1zLmJhc2VU
ZXh0TmFtZSA/IHBhcmFtcy5iYXNlVGV4dE5hbWUgOiAiQmFzZSBUZXh0IjsKKwkJdmFyIG5ld1Rl
eHROYW1lID0gcGFyYW1zLm5ld1RleHROYW1lID8gcGFyYW1zLm5ld1RleHROYW1lIDogIk5ldyBU
ZXh0IjsKKwkJdmFyIGNvbnRleHRTaXplID0gcGFyYW1zLmNvbnRleHRTaXplOworCQl2YXIgaW5s
aW5lID0gKHBhcmFtcy52aWV3VHlwZSA9PSAwIHx8IHBhcmFtcy52aWV3VHlwZSA9PSAxKSA/IHBh
cmFtcy52aWV3VHlwZSA6IDA7CisKKwkJaWYgKGJhc2VUZXh0TGluZXMgPT0gbnVsbCkKKwkJCXRo
cm93ICJDYW5ub3QgYnVpbGQgZGlmZiB2aWV3OyBiYXNlVGV4dExpbmVzIGlzIG5vdCBkZWZpbmVk
LiI7CisJCWlmIChuZXdUZXh0TGluZXMgPT0gbnVsbCkKKwkJCXRocm93ICJDYW5ub3QgYnVpbGQg
ZGlmZiB2aWV3OyBuZXdUZXh0TGluZXMgaXMgbm90IGRlZmluZWQuIjsKKwkJaWYgKCFvcGNvZGVz
KQorCQkJdGhyb3cgIkNhbm5vIGJ1aWxkIGRpZmYgdmlldzsgb3Bjb2RlcyBpcyBub3QgZGVmaW5l
ZC4iOworCQkKKwkJZnVuY3Rpb24gY2VsdCAobmFtZSwgY2xhenopIHsKKwkJCXZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKTsKKwkJCWUuY2xhc3NOYW1lID0gY2xheno7CisJCQly
ZXR1cm4gZTsKKwkJfQorCQkKKwkJZnVuY3Rpb24gdGVsdCAobmFtZSwgdGV4dCkgeworCQkJdmFy
IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KG5hbWUpOworCQkJZS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7CisJCQlyZXR1cm4gZTsKKwkJfQorCQkKKwkJZnVu
Y3Rpb24gY3RlbHQgKG5hbWUsIGNsYXp6LCB0ZXh0KSB7CisJCQl2YXIgZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQobmFtZSk7CisJCQllLmNsYXNzTmFtZSA9IGNsYXp6OworCQkJZS5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7CisJCQlyZXR1cm4gZTsKKwkJfQor
CQorCQl2YXIgdGRhdGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aGVhZCIpOworCQl2YXIg
bm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisJCXRkYXRhLmFwcGVuZENoaWxk
KG5vZGUpOworCQlpZiAoaW5saW5lKSB7CisJCQlub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInRoIikpOworCQkJbm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJ0aCIpKTsKKwkJCW5vZGUuYXBwZW5kQ2hpbGQoY3RlbHQoInRoIiwgInRleHR0aXRs
ZSIsIGJhc2VUZXh0TmFtZSArICIgdnMuICIgKyBuZXdUZXh0TmFtZSkpOworCQl9IGVsc2Ugewor
CQkJbm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpKTsKKwkJCW5v
ZGUuYXBwZW5kQ2hpbGQoY3RlbHQoInRoIiwgInRleHR0aXRsZSIsIGJhc2VUZXh0TmFtZSkpOwor
CQkJbm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpKTsKKwkJCW5v
ZGUuYXBwZW5kQ2hpbGQoY3RlbHQoInRoIiwgInRleHR0aXRsZSIsIG5ld1RleHROYW1lKSk7CisJ
CX0KKwkJdGRhdGEgPSBbdGRhdGFdOworCQkKKwkJdmFyIHJvd3MgPSBbXTsKKwkJdmFyIG5vZGUy
OworCQkKKwkJLyoqCisJCSAqIEFkZHMgdHdvIGNlbGxzIHRvIHRoZSBnaXZlbiByb3c7IGlmIHRo
ZSBnaXZlbiByb3cgY29ycmVzcG9uZHMgdG8gYSByZWFsCisJCSAqIGxpbmUgbnVtYmVyIChiYXNl
ZCBvbiB0aGUgbGluZSBpbmRleCB0aWR4IGFuZCB0aGUgZW5kcG9pbnQgb2YgdGhlIAorCQkgKiBy
YW5nZSBpbiBxdWVzdGlvbiB0ZW5kKSwgdGhlbiB0aGUgY2VsbHMgd2lsbCBjb250YWluIHRoZSBs
aW5lIG51bWJlcgorCQkgKiBhbmQgdGhlIGxpbmUgb2YgdGV4dCBmcm9tIHRleHRMaW5lcyBhdCBw
b3NpdGlvbiB0aWR4ICh3aXRoIHRoZSBjbGFzcyBvZgorCQkgKiB0aGUgc2Vjb25kIGNlbGwgc2V0
IHRvIHRoZSBuYW1lIG9mIHRoZSBjaGFuZ2UgcmVwcmVzZW50ZWQpLCBhbmQgdGlkeCArIDEgd2ls
bAorCQkgKiBiZSByZXR1cm5lZC4JIE90aGVyd2lzZSwgdGlkeCBpcyByZXR1cm5lZCwgYW5kIHR3
byBlbXB0eSBjZWxscyBhcmUgYWRkZWQKKwkJICogdG8gdGhlIGdpdmVuIHJvdy4KKwkJICovCisJ
CWZ1bmN0aW9uIGFkZENlbGxzIChyb3csIHRpZHgsIHRlbmQsIHRleHRMaW5lcywgY2hhbmdlKSB7
CisJCQlpZiAodGlkeCA8IHRlbmQpIHsKKwkJCQlyb3cuYXBwZW5kQ2hpbGQodGVsdCgidGgiLCAo
dGlkeCArIDEpLnRvU3RyaW5nKCkpKTsKKwkJCQlyb3cuYXBwZW5kQ2hpbGQoY3RlbHQoInRkIiwg
Y2hhbmdlLCB0ZXh0TGluZXNbdGlkeF0ucmVwbGFjZSgvXHQvZywgIlx1MDBhMFx1MDBhMFx1MDBh
MFx1MDBhMCIpKSk7CisJCQkJcmV0dXJuIHRpZHggKyAxOworCQkJfSBlbHNlIHsKKwkJCQlyb3cu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKSk7CisJCQkJcm93LmFwcGVu
ZENoaWxkKGNlbHQoInRkIiwgImVtcHR5IikpOworCQkJCXJldHVybiB0aWR4OworCQkJfQorCQl9
CisJCQorCQlmdW5jdGlvbiBhZGRDZWxsc0lubGluZSAocm93LCB0aWR4LCB0aWR4MiwgdGV4dExp
bmVzLCBjaGFuZ2UpIHsKKwkJCXJvdy5hcHBlbmRDaGlsZCh0ZWx0KCJ0aCIsIHRpZHggPT0gbnVs
bCA/ICIiIDogKHRpZHggKyAxKS50b1N0cmluZygpKSk7CisJCQlyb3cuYXBwZW5kQ2hpbGQodGVs
dCgidGgiLCB0aWR4MiA9PSBudWxsID8gIiIgOiAodGlkeDIgKyAxKS50b1N0cmluZygpKSk7CisJ
CQlyb3cuYXBwZW5kQ2hpbGQoY3RlbHQoInRkIiwgY2hhbmdlLCB0ZXh0TGluZXNbdGlkeCAhPSBu
dWxsID8gdGlkeCA6IHRpZHgyXS5yZXBsYWNlKC9cdC9nLCAiXHUwMGEwXHUwMGEwXHUwMGEwXHUw
MGEwIikpKTsKKwkJfQorCQkKKwkJZm9yICh2YXIgaWR4ID0gMDsgaWR4IDwgb3Bjb2Rlcy5sZW5n
dGg7IGlkeCsrKSB7CisJCQljb2RlID0gb3Bjb2Rlc1tpZHhdOworCQkJY2hhbmdlID0gY29kZVsw
XTsKKwkJCXZhciBiID0gY29kZVsxXTsKKwkJCXZhciBiZSA9IGNvZGVbMl07CisJCQl2YXIgbiA9
IGNvZGVbM107CisJCQl2YXIgbmUgPSBjb2RlWzRdOworCQkJdmFyIHJvd2NudCA9IE1hdGgubWF4
KGJlIC0gYiwgbmUgLSBuKTsKKwkJCXZhciB0b3Byb3dzID0gW107CisJCQl2YXIgYm90cm93cyA9
IFtdOworCQkJZm9yICh2YXIgaSA9IDA7IGkgPCByb3djbnQ7IGkrKykgeworCQkJCS8vIGp1bXAg
YWhlYWQgaWYgd2UndmUgYWxyZWR5IHByb3ZpZGVkIGxlYWRpbmcgY29udGV4dCBvciBpZiB0aGlz
IGlzIHRoZSBmaXJzdCByYW5nZQorCQkJCWlmIChjb250ZXh0U2l6ZSAmJiBvcGNvZGVzLmxlbmd0
aCA+IDEgJiYgKChpZHggPiAwICYmIGkgPT0gY29udGV4dFNpemUpIHx8IChpZHggPT0gMCAmJiBp
ID09IDApKSAmJiBjaGFuZ2U9PSJlcXVhbCIpIHsKKwkJCQkJdmFyIGp1bXAgPSByb3djbnQgLSAo
KGlkeCA9PSAwID8gMSA6IDIpICogY29udGV4dFNpemUpOworCQkJCQlpZiAoanVtcCA+IDEpIHsK
KwkJCQkJCXRvcHJvd3MucHVzaChub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKSk7
CisJCQkJCQkKKwkJCQkJCWIgKz0ganVtcDsKKwkJCQkJCW4gKz0ganVtcDsKKwkJCQkJCWkgKz0g
anVtcCAtIDE7CisJCQkJCQlub2RlLmFwcGVuZENoaWxkKHRlbHQoInRoIiwgIi4uLiIpKTsKKwkJ
CQkJCWlmICghaW5saW5lKSBub2RlLmFwcGVuZENoaWxkKGN0ZWx0KCJ0ZCIsICJza2lwIiwgIiIp
KTsKKwkJCQkJCW5vZGUuYXBwZW5kQ2hpbGQodGVsdCgidGgiLCAiLi4uIikpOworCQkJCQkJbm9k
ZS5hcHBlbmRDaGlsZChjdGVsdCgidGQiLCAic2tpcCIsICIiKSk7CisJCQkJCQkKKwkJCQkJCS8v
IHNraXAgbGFzdCBsaW5lcyBpZiB0aGV5J3JlIGFsbCBlcXVhbAorCQkJCQkJaWYgKGlkeCArIDEg
PT0gb3Bjb2Rlcy5sZW5ndGgpIHsKKwkJCQkJCQlicmVhazsKKwkJCQkJCX0gZWxzZSB7CisJCQkJ
CQkJY29udGludWU7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQkJCisJCQkJdG9wcm93cy5w
dXNoKG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpKTsKKwkJCQlpZiAoaW5saW5l
KSB7CisJCQkJCWlmIChjaGFuZ2UgPT0gImluc2VydCIpIHsKKwkJCQkJCWFkZENlbGxzSW5saW5l
KG5vZGUsIG51bGwsIG4rKywgbmV3VGV4dExpbmVzLCBjaGFuZ2UpOworCQkJCQl9IGVsc2UgaWYg
KGNoYW5nZSA9PSAicmVwbGFjZSIpIHsKKwkJCQkJCWJvdHJvd3MucHVzaChub2RlMiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInRyIikpOworCQkJCQkJaWYgKGIgPCBiZSkgYWRkQ2VsbHNJbmxp
bmUobm9kZSwgYisrLCBudWxsLCBiYXNlVGV4dExpbmVzLCAiZGVsZXRlIik7CisJCQkJCQlpZiAo
biA8IG5lKSBhZGRDZWxsc0lubGluZShub2RlMiwgbnVsbCwgbisrLCBuZXdUZXh0TGluZXMsICJp
bnNlcnQiKTsKKwkJCQkJfSBlbHNlIGlmIChjaGFuZ2UgPT0gImRlbGV0ZSIpIHsKKwkJCQkJCWFk
ZENlbGxzSW5saW5lKG5vZGUsIGIrKywgbnVsbCwgYmFzZVRleHRMaW5lcywgY2hhbmdlKTsKKwkJ
CQkJfSBlbHNlIHsKKwkJCQkJCS8vIGVxdWFsCisJCQkJCQlhZGRDZWxsc0lubGluZShub2RlLCBi
KyssIG4rKywgYmFzZVRleHRMaW5lcywgY2hhbmdlKTsKKwkJCQkJfQorCQkJCX0gZWxzZSB7CisJ
CQkJCWIgPSBhZGRDZWxscyhub2RlLCBiLCBiZSwgYmFzZVRleHRMaW5lcywgY2hhbmdlKTsKKwkJ
CQkJbiA9IGFkZENlbGxzKG5vZGUsIG4sIG5lLCBuZXdUZXh0TGluZXMsIGNoYW5nZSk7CisJCQkJ
fQorCQkJfQorCisJCQlmb3IgKHZhciBpID0gMDsgaSA8IHRvcHJvd3MubGVuZ3RoOyBpKyspIHJv
d3MucHVzaCh0b3Byb3dzW2ldKTsKKwkJCWZvciAodmFyIGkgPSAwOyBpIDwgYm90cm93cy5sZW5n
dGg7IGkrKykgcm93cy5wdXNoKGJvdHJvd3NbaV0pOworCQl9CisJCQorCQlyb3dzLnB1c2gobm9k
ZSA9IGN0ZWx0KCJ0aCIsICJhdXRob3IiLCAiZGlmZiB2aWV3IGdlbmVyYXRlZCBieSAiKSk7CisJ
CW5vZGUuc2V0QXR0cmlidXRlKCJjb2xzcGFuIiwgaW5saW5lID8gMyA6IDQpOworCQlub2RlLmFw
cGVuZENoaWxkKG5vZGUyID0gdGVsdCgiYSIsICJqc2RpZmZsaWIiKSk7CisJCW5vZGUyLnNldEF0
dHJpYnV0ZSgiaHJlZiIsICJodHRwOi8vZ2l0aHViLmNvbS9jZW1lcmljay9qc2RpZmZsaWIiKTsK
KwkJCisJCXRkYXRhLnB1c2gobm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5Iikp
OworCQlmb3IgKHZhciBpZHggaW4gcm93cykgbm9kZS5hcHBlbmRDaGlsZChyb3dzW2lkeF0pOwor
CQkKKwkJbm9kZSA9IGNlbHQoInRhYmxlIiwgImRpZmYiICsgKGlubGluZSA/ICIgaW5saW5lZGlm
ZiIgOiAiIikpOworCQlmb3IgKHZhciBpZHggaW4gdGRhdGEpIG5vZGUuYXBwZW5kQ2hpbGQodGRh
dGFbaWR4XSk7CisJCXJldHVybiBub2RlOworCX0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157577</attachid>
            <date>2012-08-09 16:42:43 -0700</date>
            <delta_ts>2012-08-13 05:37:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92429-20120809164216.patch</filename>
            <type>text/plain</type>
            <size>48111</size>
            <attacher name="johnjbarton">johnjbarton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWY2NGZjZjEzMDBhYWRk
ZTg4ODBjYjk1YmE4ZWZlZGFjNGFjNGQyYi4uNWE4Zjg1ZDVmYWVjZTBiNzVmNzA2N2FhOTYzMzg2
MzkzMjlhM2VjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA4LTA5ICBKb2hu
IEouIEJhcnRvbiAgPGpvaG5qYmFydG9uQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBBZGQgc3VwcG9ydCBmb3IgZGVidWdnaW5nIEluc3BlY3RvciBMYXlvdXRUZXN0cyB3
L0luc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTI0MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPiBUZXN0Q29udHJvbGxlciBu
b3cgbm90aWZpZXMgZW1iZWRkZXIgdXBvbiBsb2FkZWQuCisgICAgICAgIEpvaG4gSi4gQmFydG9u
IDxqb2huamJhcnRvbkBjaHJvbWl1bS5vcmc+IGFkZCBzb3VyY2VVUkwgdG8gZXZhbCBmb3IgZGVi
dWdnaW5nCisKKyAgICAgICAgSW4gdGhpcyB2ZXJzaW9uIFRlc3RDb250cm9sbGVyLmxvYWRDb21w
bGV0ZWQgaXMgc3RpbGwgY2FsbGVkIGJ5IGluc3BlY3Rvci5qcy4KKyAgICAgICAgSWYgVGVzdENv
bnRyb2xsZXIgZmluZHMgYSAnLnRlc3RSdW5uZXInIGlmcmFtZSBpdCByZWxvYWRzIHRoZSB0ZXN0
LXdlYi1wYWdlIHRvCisgICAgICAgIGNsZWFyIG9sZCByZXN0dWxzIGFuZCBzZW5kcyB0aGUgLnRl
c3RSdW5uZXIgaWZyYW1lIGEgbWVzc2FnZSBhbmQgbGlzdGVucyBmb3IgaXRzIGNvbW1hbmRzLgor
CisgICAgICAgIFRoZSBTdGFuZGFsb25lVGVzdFJ1bm5lciBpcyBub3QgY3JlYXRlZCBpbiB0aGUg
dGVzdC13ZWItcGFnZS4gSXQgaXMgY3JlYXRlZCBpZiB3ZSBhcmUgCisgICAgICAgIHJ1bm5pbmcg
aW4gdGhlIFdlYkluc3BlY3RvcidzIC50ZXN0UnVubmVyIGlmcmFtZS4gVGhlbiBpdCBsaXN0ZW5z
IGZvciBtZXNzYWdlcyBhbmQgCisgICAgICAgIHdoZW4gaXQgaGVhcnMgdGhlIFRlc3RDb250cm9s
bGVyIG1lc3NhZ2UsIGl0IHJlcGxpZXMgd2l0aCBpdHMgcGVuZGluZyB0ZXN0LWRyaXZlciBtZXNz
YWdlcy4gCisgICAgICAgIFRob3NlIG1lc3NhZ2VzIGFyZSBldmFsZWQgYnkgVGVzdENvbnRyb2xs
ZXIgdG8gZXhlcmNpc2UgV2ViSW5zcGVjdG9yIGFjY29yZGluZyB0byB0aGUgdGVzdCBzY3JpcHRz
LgorCisgICAgICAgIFRoZSBtaXNzaW5nIGJpdCBoZXJlIGlzIGhvdyB0aGUgLnRlc3RSdW5uZXIg
aWZyYW1lIGdldHMgaW50byB0aGUgV2ViSW5zcGVjdG9yLiBPbmUgbWV0aG9kCisgICAgICAgIGlz
IHRoZSBjaHJvbWUgZGV2dG9vbHMgZXh0ZW5zaW9uICd0ZXN0UnVubmVyJyAoaHR0cHM6Ly9naXRo
dWIuY29tL2pvaG5qYmFydG9uL3Rlc3RSdW5uZXIpIAorICAgICAgICBydW5uaW5nIGluIGFub3Ro
ZXIgY29weSBvZiBXZWJJbnNwZWN0b3IgZGVidWdnaW5nIHRoZSB0ZXN0ZWQgb25lLiAoU2hvdWxk
IGJlIGEgY2hyb21pdW0gdG9vbD8pCisgICAgICAgIAorICAgICAgICBUaGF0IGV4dGVuc2lvbiBo
YXMgYSBwYW5lbCB3aXRoIGEgInJ1blRlc3QiIGJ1dHRvbiB3aGljaCByZWxvYWRlZCB0aGUgdGVz
dGVkIFdlYkluc3BlY3RvciB3aXRoIGFuIAorICAgICAgICBpbmplY3RlZCBzY3JpcHQgd2hpY2gg
bG9hZHMgdGhlIGlmcmFtZSB3aXRoIGNsYXNzIC50ZXN0UnVubmVyIGFuZCBzcmMgcG9pbnRpbmcg
dG8gb25lIG9mIHRoZSBMYXlvdXRUZXN0cy4KKworICAgICAgICBTdXBwb3J0cyBleGlzdGluZyB0
ZXN0IHN5c3RlbQorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UZXN0Q29udHJvbGxl
ci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlci5sb2FkQ29tcGxldGVkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlci5fY2xlYXJBbmRUZXN0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlci5fdGVzdFBhZ2VJc0NsZWFyLm9uVGVzdEZy
YW1ld29ya01lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLl90
ZXN0UGFnZUlzQ2xlYXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmV2YWx1YXRlRm9yVGVzdElu
RnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgor
CiAyMDEyLTA4LTA2ICBBcmtvIFNhaGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBN
aWNyb2RhdGE6IGRvY3VtZW50LmdldEl0ZW1zKCkgbXVzdCB0cmVhdCBubyB0b2tlbiBhcyBubyBw
YXJhbWV0ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Rlc3RDb250cm9sbGVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9U
ZXN0Q29udHJvbGxlci5qcwppbmRleCAyMGU5YzRhNzUwZGRlMzAzMTYyZWE4NmI0N2FmMjY5ZTcy
M2RlZTc3Li5iNGNmODAyOGUzYmY3NmMxNGI3NGM0Y2EwZmQxNjE2ZDZkYzg3ZmNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rlc3RDb250cm9sbGVyLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGVzdENvbnRyb2xsZXIu
anMKQEAgLTM1LDEyICszNSwzOCBAQCBXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIgPSBmdW5j
dGlvbigpCiB7CiB9CiAKLVdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlci5wcm90b3R5cGUgPSB7
Ci0gICAgbm90aWZ5RG9uZTogZnVuY3Rpb24oY2FsbElkLCByZXN1bHQpCitXZWJJbnNwZWN0b3Iu
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSA9IGZ1bmN0aW9uKGNhbGxJZCwgcmVzdWx0KQorewor
ICAgIHZhciBtZXNzYWdlID0gdHlwZW9mIHJlc3VsdCA9PT0gInVuZGVmaW5lZCIgPyAiXCI8dW5k
ZWZpbmVkPlwiIiA6IEpTT04uc3RyaW5naWZ5KHJlc3VsdCk7CisgICAgUnVudGltZUFnZW50LmV2
YWx1YXRlKCJkaWRFdmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKCIgKyBjYWxsSWQgKyAiLCAiICsg
bWVzc2FnZSArICIpIiwgInRlc3QiKTsKK30KKworV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVy
LmxvYWRDb21wbGV0ZWQgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIHRlc3RSdW5uZXJJZnJhbWUg
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudGVzdFJ1bm5lcicpOworICAgIGlmICh0ZXN0UnVu
bmVySWZyYW1lKSAgIC8vIFRoZW4gd2UgYXJlIHRvIGJlIGEgdmljdGltIG9mIHRlc3RpbmcKKyAg
ICAgICAgc2V0VGltZW91dCh0aGlzLl9jbGVhckFuZFRlc3QuYmluZCh0aGlzKSk7ICAvLyB3YWl0
IGZvciByZXNvdXJjZVRyZWVNb2RlbAorfQorCitXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIu
X2NsZWFyQW5kVGVzdCA9IGZ1bmN0aW9uKCkgeworICAgIC8vIFdlIG1heSBoYXZlIHJlbG9hZGVk
IFdlYkluc3BlY3RvciwgYnV0IHRoZSBwYWdlIG1heSBoYXZlIHJlc3VsdHMgZnJvbSBhIHByZXZp
b3VzIHRlc3QgcnVuLgorICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLk9uTG9h
ZCwgdGhpcy5fdGVzdFBhZ2VJc0NsZWFyLCB0aGlzKTsKKyAgICBQYWdlQWdlbnQucmVsb2FkKHRy
dWUpOworfQorCitXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIuX3Rlc3RQYWdlSXNDbGVhciA9
IGZ1bmN0aW9uKCkgCit7CisgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLnJlbW92
ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMu
T25Mb2FkLCB0aGlzLl90ZXN0UGFnZUlzQ2xlYXIsIHRoaXMpOworICAgIAorICAgIGZ1bmN0aW9u
IG9uVGVzdEZyYW1ld29ya01lc3NhZ2UoZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgbWVzc2Fn
ZSA9IHR5cGVvZiByZXN1bHQgPT09ICJ1bmRlZmluZWQiID8gIlwiPHVuZGVmaW5lZD5cIiIgOiBK
U09OLnN0cmluZ2lmeShyZXN1bHQpOwotICAgICAgICBSdW50aW1lQWdlbnQuZXZhbHVhdGUoImRp
ZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoIiArIGNhbGxJZCArICIsICIgKyBtZXNzYWdlICsg
IikiLCAidGVzdCIpOworICAgICAgICBpZiAoZXZlbnQuZGF0YS5jb21tYW5kID09PSAiZXZhbHVh
dGVJbldlYkluc3BlY3RvciIpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZXZhbHVhdGVGb3JU
ZXN0SW5Gcm9udGVuZChldmVudC5kYXRhLmNhbGxJZCwgZXZlbnQuZGF0YS5zY3JpcHQpOwogICAg
IH0KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIG9uVGVzdEZyYW1ld29y
a01lc3NhZ2UsIHRydWUpOworCisgICAgdmFyIHRlc3RSdW5uZXJJZnJhbWUgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCcudGVzdFJ1bm5lcicpOworICAgIHRlc3RSdW5uZXJJZnJhbWUuY29udGVu
dFdpbmRvdy5wb3N0TWVzc2FnZSgiZnJvbnRlbmRMb2FkZWQiLCAiKiIpOwogfQogCiBXZWJJbnNw
ZWN0b3IuZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCA9IGZ1bmN0aW9uKGNhbGxJZCwgc2NyaXB0
KQpAQCAtNDgsMTEgKzc0LDEyIEBAIFdlYkluc3BlY3Rvci5ldmFsdWF0ZUZvclRlc3RJbkZyb250
ZW5kID0gZnVuY3Rpb24oY2FsbElkLCBzY3JpcHQpCiAgICAgZnVuY3Rpb24gaW52b2tlTWV0aG9k
KCkKICAgICB7CiAgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzY3JpcHQgPSBzY3JpcHQgKyAi
Ly9AIHNvdXJjZVVSTD1ldmFsdWF0ZUluV2ViSW5zcGVjdG9yIiArIGNhbGxJZCArICIuanMiOwog
ICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHdpbmRvdy5ldmFsKHNjcmlwdCk7Ci0gICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIucHJvdG90eXBlLm5vdGlmeURvbmUoY2FsbElk
LCByZXN1bHQpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoY2FsbElkLCByZXN1bHQpOwogICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIucHJvdG90eXBlLm5vdGlmeURvbmUoY2FsbElk
LCBlLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoY2FsbElkLCBlLnRvU3RyaW5nKCkpOwogICAgICAgICB9CiAgICAgfQogICAg
IEluc3BlY3RvckJhY2tlbmQucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhpbnZva2VNZXRob2Qp
OwotfQorfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IGEzOTI0NmJiODUwOTEwOGY1
MWM2YTE3NWI1MjkxNjQ2YjM5YjY2ZTUuLjQ1YmJjMjZjM2JlMWMzZjc0ODM5NzhlMTg1MmNiYzBl
NjE0MTU1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmpzCkBAIC01MzYsNiArNTM2LDcgQEAgV2ViSW5zcGVjdG9yLl9kb0xvYWRlZERvbmVX
aXRoQ2FwYWJpbGl0aWVzID0gZnVuY3Rpb24oKQogICAgIHRoaXMuZG9tQWdlbnQuX2VtdWxhdGVU
b3VjaEV2ZW50c0NoYW5nZWQoKTsKIAogICAgIFdlYkluc3BlY3Rvci5Xb3JrZXJNYW5hZ2VyLmxv
YWRDb21wbGV0ZWQoKTsKKyAgICBXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIubG9hZENvbXBs
ZXRlZCgpOwogICAgIEluc3BlY3RvckZyb250ZW5kQVBJLmxvYWRDb21wbGV0ZWQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDkyMTYwMzU4M2MzZjUwN2U4MjFjZGEzOTI3MzQ3ODQ5N2ZkYmE1NDUuLmE0YTMxYzg2
ZDA3NDY5YTAyM2UwMGY5ZDQzYzEzYTgxMTc3ZjY5Y2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAor
MjAxMi0wOC0wOSAgSm9obiBKLiBCYXJ0b24gIDxqb2huamJhcnRvbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBvcnQgZm9yIGRlYnVnZ2luZyBJbnNwZWN0
b3IgTGF5b3V0VGVzdHMgdy9JbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkyNDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGF2ZWwgRmVsZG1hbiA8cGZsZWRtYW5AY2hyb21pdW0ub3JnPiBJ
bXBsZW1lbnQgU3RhbmRhbG9uZVRlc3RSdW5uZXIKKyAgICAgICAgUGF2ZWwgRmVsZG1hbiA8cGZs
ZWRtYW5AY2hyb21pdW0ub3JnPiBBZGRlZCBqc2RpZmZsaWIgKEJTRCkgZm9yIHN0YW5kYWxvbmUg
aW5zcGVjdG9yIHRlc3QgcnVubmluZyBhbmQgZGlmZmluZworICAgICAgICBKb2huIEogQmFydG9u
IDxqb2huamJhcnRvbkBjaHJvbWl1bS5vcmc+IG1vZGlmaWVkIFN0YW5kYWxvbmVUZXN0UnVubmVy
IHRvIHdvcmsgaW4gYW4gaWZyYW1lIG9mIFdlYkluc3BlY3RvcgorCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0lu
c3BlY3RvclRlc3QpOgorICAgICAgICAoLik6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9SRUFETUUuYXNjaWlkb2M6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9qc2RpZmZsaWIvZGlmZmxpYi5qczogQWRk
ZWQuCisgICAgICAgIChkaWZmbGliLmRlZmF1bHRKdW5rRnVuY3Rpb24pOgorICAgICAgICAoZGlm
ZmxpYi5zdHJpcExpbmVicmVha3MpOgorICAgICAgICAoZGlmZmxpYi5zdHJpbmdBc0xpbmVzKToK
KyAgICAgICAgKGRpZmZsaWIuX19yZWR1Y2UpOgorICAgICAgICAoZGlmZmxpYi5fX250dXBsZWNv
bXApOgorICAgICAgICAoZGlmZmxpYi5fX2NhbGN1bGF0ZV9yYXRpbyk6CisgICAgICAgIChkaWZm
bGliLl9fZGljdGdldCk6CisgICAgICAgIChkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLnNl
dF9zZXFzKToKKyAgICAgICAgKGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyLnRoaXMuc2V0X3NlcTEp
OgorICAgICAgICAoZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIudGhpcy5zZXRfc2VxMik6CisgICAg
ICAgIChkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLl9fY2hhaW5fYik6CisgICAgICAgIChk
aWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLmZpbmRfbG9uZ2VzdF9tYXRjaCk6CisgICAgICAg
IChkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLmdldF9tYXRjaGluZ19ibG9ja3MpOgorICAg
ICAgICAoZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIudGhpcy5nZXRfb3Bjb2Rlcyk6CisgICAgICAg
IChkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLmdldF9ncm91cGVkX29wY29kZXMpOgorICAg
ICAgICAoZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIudGhpcy5xdWlja19yYXRpbyk6CisgICAgICAg
IChkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLnJlYWxfcXVpY2tfcmF0aW8pOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9qc2RpZmZsaWIvZGlmZnZpZXcuY3Nz
OiBBZGRlZC4KKyAgICAgICAgKHRhYmxlLmRpZmYpOgorICAgICAgICAodGFibGUuZGlmZiB0Ym9k
eSk6CisgICAgICAgICh0YWJsZS5kaWZmIHRib2R5IHRoKToKKyAgICAgICAgKHRhYmxlLmRpZmYg
dGhlYWQpOgorICAgICAgICAodGFibGUuZGlmZiB0aGVhZCB0aC50ZXh0dGl0bGUpOgorICAgICAg
ICAodGFibGUuZGlmZiB0Ym9keSB0ZCk6CisgICAgICAgICh0YWJsZS5kaWZmIC5lbXB0eSk6Cisg
ICAgICAgICh0YWJsZS5kaWZmIC5yZXBsYWNlKToKKyAgICAgICAgKHRhYmxlLmRpZmYgLmRlbGV0
ZSk6CisgICAgICAgICh0YWJsZS5kaWZmIC5za2lwKToKKyAgICAgICAgKHRhYmxlLmRpZmYgLmlu
c2VydCk6CisgICAgICAgICh0YWJsZS5kaWZmIHRoLmF1dGhvcik6CisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZmdmlldy5qczogQWRkZWQuCisg
ICAgICAgIChkaWZmdmlldy5idWlsZFZpZXcuY2VsdCk6CisgICAgICAgIChkaWZmdmlldy5idWls
ZFZpZXcudGVsdCk6CisgICAgICAgIChkaWZmdmlldy5idWlsZFZpZXcuY3RlbHQpOgorICAgICAg
ICAoZGlmZnZpZXcuYnVpbGRWaWV3LmFkZENlbGxzKToKKyAgICAgICAgKGRpZmZ2aWV3LmJ1aWxk
Vmlldy5hZGRDZWxsc0lubGluZSk6CisgICAgICAgIChkaWZmdmlldy5idWlsZFZpZXcpOgorCiAy
MDEyLTA4LTA2ICBUYWthc2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLCByZWJhc2VsaW5lIGZvciByMTI0NzQ1LgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwppbmRleCA5NjEz
MTBkZTk1ODM0NmI3YzIxNGMyZDkxYzEzMTYzOWY0ZDA3Nzg2Li4zNDZiOGIzODRkNzAwMmEwMWZj
NTE0ODk1MWYzZWJlYTNjNjVmNGRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwpAQCAtMzY5LDEwICszNjksMTEgQEAgSW5zcGVj
dG9yVGVzdC50ZXh0Q29udGVudFdpdGhMaW5lQnJlYWtzID0gZnVuY3Rpb24obm9kZSkKICAgICBy
ZXR1cm4gYnVmZmVyOwogfQogCi19OworfTsgLy8gaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0CiAK
LXZhciBydW5UZXN0Q2FsbElkID0gMDsKLXZhciBjb21wbGV0ZVRlc3RDYWxsSWQgPSAxOwordmFy
IGluaXRpYWxpemVDYWxsSWQgPSAwOwordmFyIHJ1blRlc3RDYWxsSWQgPSAxOwordmFyIGNvbXBs
ZXRlVGVzdENhbGxJZCA9IDI7CiB2YXIgZnJvbnRlbmRSZW9wZW5pbmdDb3VudCA9IDA7CiAKIGZ1
bmN0aW9uIHJlb3BlbkZyb250ZW5kKCkKQEAgLTQxOSw3ICs0MjAsNyBAQCBmdW5jdGlvbiBydW5U
ZXN0KGVuYWJsZVdhdGNoRG9nV2hpbGVEZWJ1Z2dpbmcpCiAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CiAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKLSAgICBmdW5jdGlvbiBy
dW5UZXN0SW5Gcm9udGVuZChpbml0aWFsaXphdGlvbkZ1bmN0aW9ucywgdGVzdEZ1bmN0aW9uLCBj
b21wbGV0ZVRlc3RDYWxsSWQpCisgICAgZnVuY3Rpb24gaW5pdGlhbGl6ZUZyb250ZW5kKGluaXRp
YWxpemF0aW9uRnVuY3Rpb25zKQogICAgIHsKICAgICAgICAgaWYgKHdpbmRvdy5JbnNwZWN0b3JU
ZXN0KSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhZ2VMb2FkZWQoKTsKQEAgLTQyNyw4
ICs0MjgsNyBAQCBmdW5jdGlvbiBydW5UZXN0KGVuYWJsZVdhdGNoRG9nV2hpbGVEZWJ1Z2dpbmcp
CiAgICAgICAgIH0KIAogICAgICAgICBJbnNwZWN0b3JUZXN0ID0ge307Ci0gICAgICAgIEluc3Bl
Y3RvclRlc3QuY29tcGxldGVUZXN0Q2FsbElkID0gY29tcGxldGVUZXN0Q2FsbElkOwotCisgICAg
CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5pdGlhbGl6YXRpb25GdW5jdGlvbnMubGVu
Z3RoOyArK2kpIHsKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgaW5pdGlhbGl6
YXRpb25GdW5jdGlvbnNbaV0oKTsKQEAgLTQzNywxMiArNDM3LDIwIEBAIGZ1bmN0aW9uIHJ1blRl
c3QoZW5hYmxlV2F0Y2hEb2dXaGlsZURlYnVnZ2luZykKICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgfQor
CisgICAgZnVuY3Rpb24gcnVuVGVzdEluRnJvbnRlbmQodGVzdEZ1bmN0aW9uLCBjb21wbGV0ZVRl
c3RDYWxsSWQpCisgICAgeworICAgICAgICBpZiAoSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3RD
YWxsSWQpIAorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEluc3BlY3RvclRlc3QuY29t
cGxldGVUZXN0Q2FsbElkID0gY29tcGxldGVUZXN0Q2FsbElkOwogCiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5zaG93UGFuZWwoImF1ZGl0cyIpOwogICAgICAgICB0cnkgewogICAgICAgICAgICAgdGVz
dEZ1bmN0aW9uKCk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgIGNvbnNvbGUu
ZXJyb3IoIkV4Y2VwdGlvbiBkdXJpbmcgdGVzdCBleGVjdXRpb246ICIgKyBlKTsKKyAgICAgICAg
ICAgIGNvbnNvbGUuZXJyb3IoIkV4Y2VwdGlvbiBkdXJpbmcgdGVzdCBleGVjdXRpb246ICIgKyBl
LCAgKGUuc3RhY2sgPyBlLnN0YWNrIDogIiIpICk7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmNvbXBsZXRlVGVzdCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDUyLDggKzQ2MCwxMiBAQCBm
dW5jdGlvbiBydW5UZXN0KGVuYWJsZVdhdGNoRG9nV2hpbGVEZWJ1Z2dpbmcpCiAgICAgICAgIGlm
IChuYW1lLmluZGV4T2YoImluaXRpYWxpemVfIikgPT09IDAgJiYgdHlwZW9mIHdpbmRvd1tuYW1l
XSA9PT0gImZ1bmN0aW9uIiAmJiBuYW1lICE9PSAiaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0IikK
ICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uRnVuY3Rpb25zLnB1c2god2luZG93W25hbWVdLnRv
U3RyaW5nKCkpOwogICAgIH0KLSAgICB2YXIgcGFyYW1ldGVycyA9IFsiWyIgKyBpbml0aWFsaXph
dGlvbkZ1bmN0aW9ucyArICJdIiwgdGVzdCwgY29tcGxldGVUZXN0Q2FsbElkXTsKLSAgICB2YXIg
dG9FdmFsdWF0ZSA9ICIoIiArIHJ1blRlc3RJbkZyb250ZW5kICsgIikoIiArIHBhcmFtZXRlcnMu
am9pbigiLCAiKSArICIpOyI7CisgICAgdmFyIHBhcmFtZXRlcnMgPSBbIlsiICsgaW5pdGlhbGl6
YXRpb25GdW5jdGlvbnMgKyAiXSJdOworICAgIHZhciB0b0V2YWx1YXRlID0gIigiICsgaW5pdGlh
bGl6ZUZyb250ZW5kICsgIikoIiArIHBhcmFtZXRlcnMuam9pbigiLCAiKSArICIpOyI7CisgICAg
dGVzdFJ1bm5lci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGluaXRpYWxpemVDYWxsSWQsIHRvRXZh
bHVhdGUpOworCisgICAgcGFyYW1ldGVycyA9IFt0ZXN0LCBjb21wbGV0ZVRlc3RDYWxsSWRdOwor
ICAgIHRvRXZhbHVhdGUgPSAiKCIgKyBydW5UZXN0SW5Gcm9udGVuZCArICIpKCIgKyBwYXJhbWV0
ZXJzLmpvaW4oIiwgIikgKyAiKTsiOwogICAgIHRlc3RSdW5uZXIuZXZhbHVhdGVJbldlYkluc3Bl
Y3RvcihydW5UZXN0Q2FsbElkLCB0b0V2YWx1YXRlKTsKIAogICAgIGlmIChlbmFibGVXYXRjaERv
Z1doaWxlRGVidWdnaW5nKSB7CkBAIC01MTUsMyArNTI3LDEwNiBAQCBmdW5jdGlvbiBjbGVhck91
dHB1dCgpCiAgICAgICAgIG91dHB1dEVsZW1lbnQgPSBudWxsOwogICAgIH0KIH0KKworZnVuY3Rp
b24gU3RhbmRhbG9uZVRlc3RSdW5uZXIoKQoreworICAgIHRoaXMuX3BlbmRpbmdNZXNzYWdlcyA9
IFtdOworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGhpcy5fb25NZXNz
YWdlLmJpbmQodGhpcyksIHRydWUpOworICAgIHRoaXMuX2luc3BlY3RvcldpbmRvdyA9IHdpbmRv
dy5wYXJlbnQ7Cit9CisKK1N0YW5kYWxvbmVUZXN0UnVubmVyLnByb3RvdHlwZSA9IHsKKyAgICBk
dW1wQXNUZXh0OiBmdW5jdGlvbigpCisgICAgeworICAgIH0sCisKKyAgICB3YWl0VW50aWxEb25l
OiBmdW5jdGlvbigpCisgICAgeworICAgIH0sCisKKyAgICBjbG9zZVdlYkluc3BlY3RvcjogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgLy8gSW4gYmF0Y2ggbW9kZSB1bmRlciBEdW1wUmVuZGVy
VHJlZSB3ZSBleGl0IGhlcmUuIAorICAgICAgICBjb25zb2xlLmxvZygiY2xvc2VXZWJJbnNwZWN0
b3IiKTsKKyAgICB9LAorCisgICAgbm90aWZ5RG9uZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdmFyIGFjdHVhbCA9IGRvY3VtZW50LmJvZHkuaW5uZXJUZXh0ICsgIlxuIjsKKyAgICAgICAg
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmlubmVySFRNTCA9ICIiOworCisgICAgICAgIHZhciB4
aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICAgICAgdmFyIGhyZWYgPSB3aW5kb3cubG9j
YXRpb24uaHJlZjsKKyAgICAgICAgdmFyIGV4dCA9IGhyZWYubGFzdEluZGV4T2YoIi4iKTsKKyAg
ICAgICAgeGhyLm9wZW4oIkdFVCIsIGhyZWYuc3Vic3RyaW5nKDAsIGV4dCkgKyAiLWV4cGVjdGVk
LnR4dCIsIGZhbHNlKTsKKyAgICAgICAgeGhyLnNlbmQobnVsbCk7CisgICAgICAgIHZhciBleHBl
Y3RlZCA9IHhoci5yZXNwb25zZVRleHQ7CisKKyAgICAgICAgY29uc3QgYmFzZURpciA9ICIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi8iOworICAg
ICAgICB2YXIgc3R5bGVzaGVldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTsKKyAg
ICAgICAgc3R5bGVzaGVldC5yZWwgPSAic3R5bGVzaGVldCI7CisgICAgICAgIHN0eWxlc2hlZXQu
dHlwZSA9ICJ0ZXh0L2NzcyI7CisgICAgICAgIHN0eWxlc2hlZXQuaHJlZiA9IGJhc2VEaXIgKyAi
ZGlmZnZpZXcuY3NzIjsKKyAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZXNo
ZWV0KTsKKworICAgICAgICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2Ny
aXB0Iik7CisgICAgICAgIHNjcmlwdC5zcmMgPSBiYXNlRGlyICsgImRpZmZsaWIuanMiOworICAg
ICAgICBzY3JpcHQub25sb2FkID0gYWxsTG9hZGVkOworICAgICAgICBkb2N1bWVudC5oZWFkLmFw
cGVuZENoaWxkKHNjcmlwdCk7CisKKyAgICAgICAgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgic2NyaXB0Iik7CisgICAgICAgIHNjcmlwdC5zcmMgPSBiYXNlRGlyICsgImRpZmZ2aWV3
LmpzIjsKKyAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGFsbExvYWRlZDsKKyAgICAgICAgZG9jdW1l
bnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpOworCisgICAgICAgIHZhciBzY3JpcHRzTG9hZGVk
ID0gMDsKKyAgICAgICAgZnVuY3Rpb24gYWxsTG9hZGVkKGV2ZW50KSAKKyAgICAgICAgeworICAg
ICAgICAgICAgc2NyaXB0c0xvYWRlZCArPSAxOworICAgICAgICAgICAgaWYgKHNjcmlwdHNMb2Fk
ZWQgPT09IDIpIAorICAgICAgICAgICAgICAgIHZpZXdlckxvYWRlZCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gdmlld2VyTG9hZGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGJhc2VMaW5lcyA9IGRpZmZsaWIuc3RyaW5nQXNMaW5lcyhleHBlY3RlZCk7CisgICAgICAg
ICAgICB2YXIgbmV3TGluZXMgPSAgZGlmZmxpYi5zdHJpbmdBc0xpbmVzKGFjdHVhbCk7CisgICAg
ICAgICAgICB2YXIgc2VxdWVuY2VNYXRjaGVyID0gbmV3IGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVy
KGJhc2VMaW5lcywgbmV3TGluZXMpOworICAgICAgICAgICAgdmFyIGRpZmZWaWV3ID0gZGlmZnZp
ZXcuYnVpbGRWaWV3KHsKKyAgICAgICAgICAgICAgICBiYXNlVGV4dExpbmVzOiBiYXNlTGluZXMs
CisgICAgICAgICAgICAgICAgbmV3VGV4dExpbmVzOiBuZXdMaW5lcywKKyAgICAgICAgICAgICAg
ICBvcGNvZGVzOiBzZXF1ZW5jZU1hdGNoZXIuZ2V0X29wY29kZXMoKSwKKyAgICAgICAgICAgICAg
ICBjb250ZXh0U2l6ZTogMywKKyAgICAgICAgICAgICAgICB2aWV3VHlwZTogMQorICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpZmZWaWV3KTsK
KyAgICAgICAgfQorICAgIH0sCisKKyAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yOiBmdW5jdGlv
bihjYWxsSWQsIHNjcmlwdCkKKyAgICB7CisgICAgICAgIHZhciBtZXNzYWdlID0ge2NvbW1hbmQ6
ICJldmFsdWF0ZUluV2ViSW5zcGVjdG9yIiwgY2FsbElkOiBjYWxsSWQsIHNjcmlwdDogc2NyaXB0
fTsKKyAgICAgICAgaWYgKHRoaXMuX2lzTG9hZGVkKQorICAgICAgICAgICAgdGhpcy5fcG9zdE1l
c3NhZ2VzKFttZXNzYWdlXSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX3BlbmRp
bmdNZXNzYWdlcy5wdXNoKG1lc3NhZ2UpOworICAgIH0sCisKKyAgICBfb25NZXNzYWdlOiBmdW5j
dGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmIChldmVudC5kYXRhID09PSAiZnJvbnRlbmRM
b2FkZWQiKSB7CisgICAgICAgICAgICB0aGlzLl9pc0xvYWRlZCA9IHRydWU7CisgICAgICAgICAg
ICB0aGlzLl9wb3N0TWVzc2FnZXModGhpcy5fcGVuZGluZ01lc3NhZ2VzKTsKKyAgICAgICAgICAg
IHRoaXMuX3BlbmRpbmdNZXNzYWdlcyA9IFtdOworICAgICAgICB9CisgICAgfSwKKworICAgIF9w
b3N0TWVzc2FnZXM6IGZ1bmN0aW9uKG1lc3NhZ2VzKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBtZXNzYWdlcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX2luc3Bl
Y3RvcldpbmRvdy5wb3N0TWVzc2FnZShtZXNzYWdlc1tpXSwgIioiKTsKKyAgICB9Cit9CisKK2lm
ICghd2luZG93LnRlc3RSdW5uZXIpIAorICAgIHdpbmRvdy50ZXN0UnVubmVyID0gbmV3IFN0YW5k
YWxvbmVUZXN0UnVubmVyKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9yZXNvdXJjZXMvanNkaWZmbGliL1JFQURNRS5hc2NpaWRvYyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9qc2RpZmZsaWIvUkVBRE1FLmFzY2lpZG9j
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBmN2Y3YWE5ZTNjOGZiYjY1N2IwZWE0NGNlMzdjMjE0MWFhODczZmEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJj
ZXMvanNkaWZmbGliL1JFQURNRS5hc2NpaWRvYwpAQCAtMCwwICsxLDE3MyBAQAorPT0ganNkaWZm
bGliIC0gQSBKYXZhc2NyaXB0IHZpc3VhbCBkaWZmIHRvb2wgJiBsaWJyYXJ5CisKKyogPDxpbnRy
byxJbnRyb2R1Y3Rpb24+PgorKiA8PG92ZXJ2aWV3LE92ZXJ2aWV3Pj4KKyogPDxweXRob24taW50
ZXJvcCxQeXRob24gSW50ZXJvcGVyYWJpbGl0eT4+CisqIDw8ZGVtbyxEZW1vICYgRXhhbXBsZXM+
PgorKiogPDxkaWZmLWpzLERpZmZpbmcgdXNpbmcgSmF2YXNjcmlwdD4+CisqKiA8PGRpZmYtcHl0
aG9uLERpZmZpbmcgdXNpbmcgUHl0aG9uPj4KKyogPDxzdGF0dXMsRnV0dXJlIERpcmVjdGlvbnMg
LyBTdGF0dXM+PgorKiA8PGxpY2Vuc2UsTGljZW5zZT4+CisqIDw8ZG93bmxvYWRzLERvd25sb2Fk
cz4+CisqIDw8aGlzdG9yeSxSZWxlYXNlIEhpc3Rvcnk+PgorCitbW2ludHJvXV0KKz09IEludHJv
ZHVjdGlvbgorCitodHRwOi8vY2VtZXJpY2suY29tW0ldIG5lZWRlZCBhIGdvb2QgaW4tYnJvd3Nl
ciB2aXN1YWwgZGlmZiB0b29sLCBhbmQgY291bGRuJ3QgZmluZCBhbnl0aGluZyBzdWl0YWJsZSwg
c28gSSBidWlsdCAqanNkaWZmbGliKiBpbiBGZWIgMjAwNyBhbmQgb3Blbi1zb3VyY2VkIGl0IHNv
b24gdGhlcmVhZnRlci4gIEl0J3MgYXBwYXJlbnRseSBiZWVuIHVzZWQgYSBmYWlyIGJpdCBzaW5j
ZSB0aGVuLiAgTWF5YmUgeW91J2xsIGZpbmQgaXQgdXNlZnVsLgorCitbW292ZXJ2aWV3XV0KKz09
IE92ZXJ2aWV3CisKK2pzZGlmZmxpYiBpcyBhIEphdmFzY3JpcHQgbGlicmFyeSB0aGF0IHByb3Zp
ZGVzOgorCisuIGEgcGFydGlhbCByZWltcGxlbWVudGF0aW9uIG9mIFB5dGhvbidzIGRpZmZsaWIg
bW9kdWxlIChzcGVjaWZpY2FsbHksIHRoZSBTZXF1ZW5jZU1hdGNoZXIgY2xhc3MpCisuIGEgdmlz
dWFsIGRpZmYgdmlldyBnZW5lcmF0b3IsIHRoYXQgb2ZmZXJzIHNpZGUtYnktc2lkZSBhcyB3ZWxs
IGFzIGlubGluZSBmb3JtYXR0aW5nIG9mIGZpbGUgZGF0YQorCitZZXMsIEkgcmlwcGVkIG9mZiB0
aGUgZm9ybWF0dGluZyBvZiB0aGUgZGlmZiB2aWV3IGZyb20gdGhlIFRyYWMgcHJvamVjdC4gSXQn
cyBhIG5lYXItaWRlYWwgcHJlc2VudGF0aW9uIG9mIGRpZmYgZGF0YSBhcyBmYXIgYXMgSSdtIGNv
bmNlcm5lZC4gSWYgeW91IGRvbid0IGFncmVlLCB5b3UgY2FuIGhhY2sgdGhlIENTUyB0byB5b3Vy
IGhlYXJ0J3MgY29udGVudC4KKworanNkaWZmbGliIGRvZXMgbm90IHJlcXVpcmUgalF1ZXJ5IG9y
IGFueSBvdGhlciBKYXZhc2NyaXB0IGxpYnJhcnkuCisKK1tbcHl0aG9uLWludGVyb3BdXQorPT0g
UHl0aG9uIEludGVyb3BlcmFiaWxpdHkKKworVGhlIG1haW4gcmVhc29uIHdoeSBJIHJlaW1wbGVt
ZW50ZWQgUHl0aG9uJ3MgZGlmZmxpYiBtb2R1bGUgaW4gSmF2YXNjcmlwdCB0byBzZXJ2ZSBhcyB0
aGUgYWxnb3JpdGhtaWMgYmFzaXMgZm9yIGpzZGlmZmxpYiB3YXMgdGhhdCBJIGRpZG4ndCB3YW50
IHRvIG1lc3Mgd2l0aCB0aGUgYWN0dWFsIGRpZmYgYWxnb3JpdGhtIC0tIEkgd2FudGVkIHRvIGNv
bmNlbnRyYXRlIG9uIGdldHRpbmcgdGhlIGluLWJyb3dzZXIgdmlldyByaWdodC4gSG93ZXZlciwg
YmVjYXVzZSBqc2RpZmZsaWIncyBBUEkgbWF0Y2hlcyBQeXRob24ncyBkaWZmbGliJ3MgU2VxdWVu
Y2VNYXRjaGVyIGNsYXNzIGluIGl0cyBlbnRpcmV0eSwgaXQncyB0cml2aWFsIHRvIGRvIHRoZSBh
Y3R1YWwgZGlmZmluZyBvbiB0aGUgc2VydmVyLXNpZGUsIHVzaW5nIFB5dGhvbiwgYW5kIHBpcGUg
dGhlIHJlc3VsdHMgb2YgdGhhdCBkaWZmIGNhbGN1bGF0aW9uIHRvIHlvdXIgaW4tYnJvd3NlciBk
aWZmIHZpZXcuIFNvLCB5b3UgaGF2ZSB0aGUgY2hvaWNlIG9mIGRvaW5nIGV2ZXJ5dGhpbmcgaW4g
SmF2YXNjcmlwdCBvbiB0aGUgYnJvd3Nlciwgb3IgZmFsbGluZyBiYWNrIHRvIHNlcnZlci1zaWRl
IGRpZmYgcHJvY2Vzc2luZyBpZiB5b3UgYXJlIGRpZmZpbmcgcmVhbGx5IGxhcmdlIGZpbGVzLgor
CitNb3N0IG9mIHRoZSB0aW1lLCB3ZSBkbyB0aGUgbGF0dGVyLCBzaW1wbHkgYmVjYXVzZSB3aGls
ZSBqc2RpZmZsaWIgaXMgcHJldHR5IGZhc3QgYWxsIGJ5IGl0c2VsZiwgYW5kIGlzIHRvdGFsbHkg
dXNhYmxlIGZvciBkaWZmaW5nICJub3JtYWwiIGZpbGVzIChpLmUuIGZld2VyIHRoYW4gMTAwSyBs
aW5lcyBvciBzbyksIHdlIHJlZ3VsYXJseSBuZWVkIHRvIGRpZmYgZmlsZXMgdGhhdCBhcmUgMSBv
ciAyIG9yZGVycyBvZiBtYWduaXR1ZGUgbGFyZ2VyIHRoYW4gdGhhdC4gRm9yIHRoYXQsIHNlcnZl
ci1zaWRlIGRpZmZpbmcgaXMgYSBuZWNlc3NpdHkuCisKK1tbZGVtb11dCis9PSBEZW1vICYgRXhh
bXBsZXMKKworWW91IGNhbiBnaXZlIGpzZGlmZmxpYiBhIHRyeSB3aXRob3V0IGRvd25sb2FkaW5n
IGFueXRoaW5nLiBKdXN0IGNsaWNrIHRoZSBsaW5rIGJlbG93LCBwdXQgc29tZSBjb250ZW50IHRv
IGJlIGRpZmZlZCBpbiB0aGUgdHdvIHRleHRib3hlcywgYW5kIGRpZmYgYXdheS4KKworaHR0cDov
L2NlbWVyaWNrLmdpdGh1Yi5jb20vanNkaWZmbGliL2RlbW8uaHRtbFsqVHJ5IGpzZGlmZmxpYipd
CisKK1RoYXQgcGFnZSBhbHNvIGNvbnRhaW5zIGFsbCBvZiB0aGUgZXhhbXBsZXMgeW91J2xsIG5l
ZWQgdG8gdXNlIGpzZGlmZmxpYiB5b3Vyc2VsZiwgYnV0IGxldCdzIGxvb2sgYXQgdGhlbSBoZXJl
LCBhbnl3YXkuCisKK1tbZGlmZi1qc11dCis9PT0gRGlmZmluZyB1c2luZyBKYXZhc2NyaXB0CisK
K0hlcmUncyB0aGUgZnVuY3Rpb24gZnJvbSB0aGUgZGVtbyBIVE1MIGZpbGUgbGlua2VkIHRvIGFi
b3ZlIHRoYXQgZGlmZnMgdGhlIHR3byBwaWVjZXMgb2YgdGV4dCBlbnRlcmVkIGludG8gdGhlIHRl
eHRib3hlcyBvbiB0aGUgcGFnZToKKworLS0tLQorZnVuY3Rpb24gZGlmZlVzaW5nSlMoKSB7Cisg
ICAgLy8gZ2V0IHRoZSBiYXNlVGV4dCBhbmQgbmV3VGV4dCB2YWx1ZXMgZnJvbSB0aGUgdHdvIHRl
eHRib3hlcywgYW5kIHNwbGl0IHRoZW0gaW50byBsaW5lcyAKKyAgICB2YXIgYmFzZSA9IGRpZmZs
aWIuc3RyaW5nQXNMaW5lcygkKCJiYXNlVGV4dCIpLnZhbHVlKTsKKyAgICB2YXIgbmV3dHh0ID0g
ZGlmZmxpYi5zdHJpbmdBc0xpbmVzKCQoIm5ld1RleHQiKS52YWx1ZSk7CisKKyAgICAvLyBjcmVh
dGUgYSBTZXF1ZW5jZU1hdGNoZXIgaW5zdGFuY2UgdGhhdCBkaWZmcyB0aGUgdHdvIHNldHMgb2Yg
bGluZXMKKyAgICB2YXIgc20gPSBuZXcgZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIoYmFzZSwgbmV3
dHh0KTsKKworICAgIC8vIGdldCB0aGUgb3Bjb2RlcyBmcm9tIHRoZSBTZXF1ZW5jZU1hdGNoZXIg
aW5zdGFuY2UgCisgICAgLy8gb3Bjb2RlcyBpcyBhIGxpc3Qgb2YgMy10dXBsZXMgZGVzY3JpYmlu
ZyB3aGF0IGNoYW5nZXMgc2hvdWxkIGJlIG1hZGUgdG8gdGhlIGJhc2UgdGV4dCAKKyAgICAvLyBp
biBvcmRlciB0byB5aWVsZCB0aGUgbmV3IHRleHQKKyAgICB2YXIgb3Bjb2RlcyA9IHNtLmdldF9v
cGNvZGVzKCk7CisgICAgdmFyIGRpZmZvdXRwdXRkaXYgPSAkKCJkaWZmb3V0cHV0Iik7CisgICAg
d2hpbGUgKGRpZmZvdXRwdXRkaXYuZmlyc3RDaGlsZCkgZGlmZm91dHB1dGRpdi5yZW1vdmVDaGls
ZChkaWZmb3V0cHV0ZGl2LmZpcnN0Q2hpbGQpOworICAgIHZhciBjb250ZXh0U2l6ZSA9ICQoImNv
bnRleHRTaXplIikudmFsdWU7CisgICAgY29udGV4dFNpemUgPSBjb250ZXh0U2l6ZSA/IGNvbnRl
eHRTaXplIDogbnVsbDsKKworICAgIC8vIGJ1aWxkIHRoZSBkaWZmIHZpZXcgYW5kIGFkZCBpdCB0
byB0aGUgY3VycmVudCBET00KKyAgICBkaWZmb3V0cHV0ZGl2LmFwcGVuZENoaWxkKGRpZmZ2aWV3
LmJ1aWxkVmlldyh7CisgICAgICAgIGJhc2VUZXh0TGluZXM6IGJhc2UsCisgICAgICAgIG5ld1Rl
eHRMaW5lczogbmV3dHh0LAorICAgICAgICBvcGNvZGVzOiBvcGNvZGVzLAorICAgICAgICAvLyBz
ZXQgdGhlIGRpc3BsYXkgdGl0bGVzIGZvciBlYWNoIHJlc291cmNlIAorICAgICAgICBiYXNlVGV4
dE5hbWU6ICJCYXNlIFRleHQiLAorICAgICAgICBuZXdUZXh0TmFtZTogIk5ldyBUZXh0IiwKKyAg
ICAgICAgY29udGV4dFNpemU6IGNvbnRleHRTaXplLAorICAgICAgICB2aWV3VHlwZTogJCgiaW5s
aW5lIikuY2hlY2tlZCA/IDEgOiAwCisgICAgfSkpOworCisgICAgLy8gc2Nyb2xsIGRvd24gdG8g
dGhlIGRpZmYgdmlldyB3aW5kb3cuCisgICAgbG9jYXRpb24gPSB1cmwgKyAiI2RpZmYiOworfQor
LS0tLQorCitUaGVyZSdzIG5vdCBhIHdob2xlIGxvdCB0byBzYXkgYWJvdXQgdGhpcyBmdW5jdGlv
bi4gVGhlIG1vc3Qgbm90YWJsZSBhc3BlY3Qgb2YgaXQgaXMgdGhhdCB0aGUgYGRpZmZ2aWV3LmJ1
aWxkVmlldygpYCBmdW5jdGlvbiB0YWtlcyBhbiBvYmplY3QvbWFwIHdpdGggc3BlY2lmaWMgYXR0
cmlidXRlcywgcmF0aGVyIHRoYW4gYSBsaXN0IG9mIGFyZ3VtZW50cy4gVGhvc2UgYXR0cmlidXRl
cyBhcmUgbW9zdGx5IHNlbGYtZXhwbGFuYXRvcnksIGJ1dCBhcmUgbm9uZXRoZWxlc3MgZGVzY3Jp
YmVkIGluIGRldGFpbCBpbiBjb2RlIGRvY3VtZW50YXRpb24gaW4gZGlmZnZpZXcuanMuCisKK1tb
ZGlmZi1weXRob25dXQorPT09IERpZmZpbmcgdXNpbmcgUHl0aG9uCisKK1RoaXMgaXNuJ3QgZW5h
YmxlZCBpbiB0aGUgZGVtbyBsaW5rIGFib3ZlLCBidXQgSSd2ZSBpbmNsdWRlZCBpdCB0byBleGVt
cGxpZnkgaG93IG9uZSBtaWdodCB1c2UgdGhlIG9wY29kZSBvdXRwdXQgZnJvbSBhIHdlYi1iYXNl
ZCBQeXRob24gYmFja2VuZCB0byBkcml2ZSBqc2RpZmZsaWIncyBkaWZmIHZpZXcuCisKKy0tLS0K
K2Z1bmN0aW9uIGRpZmZVc2luZ1B5dGhvbigpIHsKKyAgICBkb2pvLmlvLmJpbmQoeworICAgICAg
ICB1cmw6ICIvZGlmZi9wb3N0WWllbGREaWZmRGF0YSIsCisgICAgICAgIG1ldGhvZDogIlBPU1Qi
LAorICAgICAgICBjb250ZW50OiB7CisgICAgICAgICAgICBiYXNlVGV4dDogJCgiYmFzZVRleHQi
KS52YWx1ZSwKKyAgICAgICAgICAgIG5ld1RleHQ6ICQoIm5ld1RleHQiKS52YWx1ZSwKKyAgICAg
ICAgICAgIGlnbm9yZVdoaXRlc3BhY2U6ICJZIgorICAgICAgICB9LAorICAgICAgICBsb2FkOiBm
dW5jdGlvbiAodHlwZSwgZGF0YSwgZXZ0KSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAg
ICAgICAgIGRhdGEgPSBldmFsKCcoJyArIGRhdGEgKyAnKScpOworICAgICAgICAgICAgICAgIHdo
aWxlIChkaWZmb3V0cHV0ZGl2LmZpcnN0Q2hpbGQpIGRpZmZvdXRwdXRkaXYucmVtb3ZlQ2hpbGQo
ZGlmZm91dHB1dGRpdi5maXJzdENoaWxkKTsKKyAgICAgICAgICAgICAgICAkKCJvdXRwdXQiKS5h
cHBlbmRDaGlsZChkaWZmdmlldy5idWlsZFZpZXcoeworICAgICAgICAgICAgICAgICAgICBiYXNl
VGV4dExpbmVzOiBkYXRhLmJhc2VUZXh0TGluZXMsCisgICAgICAgICAgICAgICAgICAgIG5ld1Rl
eHRMaW5lczogZGF0YS5uZXdUZXh0TGluZXMsCisgICAgICAgICAgICAgICAgICAgIG9wY29kZXM6
IGRhdGEub3Bjb2RlcywKKyAgICAgICAgICAgICAgICAgICAgYmFzZVRleHROYW1lOiBkYXRhLmJh
c2VUZXh0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgbmV3VGV4dE5hbWU6IGRhdGEubmV3VGV4
dE5hbWUsCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHRTaXplOiBjb250ZXh0U2l6ZQorICAg
ICAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgICAg
ICAgICAgYWxlcnQoIkFuIGVycm9yIG9jY3VycmVkIHVwZGF0aW5nIHRoZSBkaWZmIHZpZXc6XG4i
ICsgZXgudG9TdHJpbmcoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIGVy
cm9yOiBmdW5jdGlvbiAodHlwZSwgZXZ0KSB7CisgICAgICAgICAgICBhbGVydCgnRXJyb3Igb2Nj
dXJyZWQgZ2V0dGluZyBkaWZmIGRhdGEuIENoZWNrIHRoZSBzZXJ2ZXIgbG9ncy4nKTsKKyAgICAg
ICAgfSwKKyAgICAgICAgdHlwZTogJ3RleHQvamF2YXNjcmlwdCcKKyAgICB9KTsKK30KKy0tLS0K
KworW1dBUk5JTkddCis9PT09CitUaGlzIGRvam8gY29kZSB3YXMgd3JpdHRlbiBpbiAyMDA3LCBh
bmQgSSBoYXZlbid0IF9sb29rZWRfIGF0IGRvam8gZm9yIHllYXJzIG5vdy4gIEluIGFueSBjYXNl
LCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gZ3JvayB3aGF0J3MgZ29pbmcgb24uCis9PT09CisKK0Fz
IHlvdSBjYW4gc2VlLCBJJ20gcGFydGlhbCB0byB1c2luZyBkb2pvIGZvciBhamF4eSBzdHVmZi4g
QWxsIHRoYXQgaXMgaGFwcGVuaW5nIGhlcmUgaXMgdGhlIGJhc2UgYW5kIG5ldyB0ZXh0IGlzIGJl
aW5nIFBPU1RlZCB0byBhIFB5dGhvbiBzZXJ2ZXItc2lkZSBwcm9jZXNzICh3ZSBsaWtlIHB5bG9u
cywgYnV0IHlvdSBjb3VsZCBqdXN0IGFzIGVhc2lseSB1c2UgYSBzaW1wbGUgUHl0aG9uIHNjcmlw
dCBhcyBhIGNnaSkuIFRoYXQgcHJvY2VzcyB0aGVuIG5lZWRzIHRvIGRpZmYgdGhlIHByb3ZpZGVk
IHRleHQgdXNpbmcgYW4gaW5zdGFuY2Ugb2YgUHl0aG9uJ3MgZGlmZmxpYi5TZXF1ZW5jZU1hdGNo
ZXIgY2xhc3MsIGFuZCByZXR1cm4gdGhlIG9wY29kZXMgZnJvbSB0aGF0IFNlcXVlbmNlTWF0Y2hl
ciBpbnN0YW5jZSB0byB0aGUgYnJvd3NlciAoaW4gdGhpcyBjYXNlLCB1c2luZyBKU09OIHNlcmlh
bGl6YXRpb24pLiBJbiB0aGUgaW50ZXJlc3Qgb2YgY29tcGxldGVuZXNzLCBoZXJlJ3MgdGhlIGNv
bnRyb2xsZXIgYWN0aW9uIGZyb20gb3VyIHB5bG9ucyBhcHBsaWNhdGlvbiB0aGF0IGRvZXMgdGhp
cyAoZG9uJ3QgdHJ5IHRvIG1hdGNoIHVwIHRoZSBwYXJhbWV0ZXJzIHNob3duIGJlbG93IHdpdGgg
dGhlIFBPU1QgcGFyYW1ldGVycyBzaG93biBpbiB0aGUgSmF2YXNjcmlwdCBmdW5jdGlvbiBhYm92
ZTsgdGhlIGxhdHRlciBpcyBvbmx5IGhlcmUgYXMgYW4gZXhhbXBsZSk6CisKKy0tLS0KK0Bqc29u
aWZ5CitkZWYgZGlmZiAoc2VsZiwgYmFzZVRleHQsIG5ld1RleHQsIGJhc2VUZXh0TmFtZT0iQmFz
ZSBUZXh0IiwgbmV3VGV4dE5hbWU9Ik5ldyBUZXh0Iik6CisgICAgb3Bjb2RlcyA9IFNlcXVlbmNl
TWF0Y2hlcihpc2p1bmssIGJhc2VUZXh0LCBuZXdUZXh0KS5nZXRfb3Bjb2RlcygpCisgICAgcmV0
dXJuIGRpY3QoYmFzZVRleHRMaW5lcz1iYXNlVGV4dCwgbmV3VGV4dExpbmVzPW5ld1RleHQsIG9w
Y29kZXM9b3Bjb2RlcywKKyAgICAgICAgICAgICAgICBiYXNlVGV4dE5hbWU9YmFzZVRleHROYW1l
LCBuZXdUZXh0TmFtZT1uZXdUZXh0TmFtZSkKKy0tLS0KKworW1tzdGF0dXNdXQorPT0gRnV0dXJl
IERpcmVjdGlvbnMKKworVGhlIHRvcCBwcmlvcml0aWVzIHdvdWxkIGJlIHRvIGltcGxlbWVudCB0
aGUgaWdub3Jpbmcgb2YgZW1wdHkgbGluZXMsIGFuZCB0aGUgaW5kaWNhdGlvbiBvZiBkaWZmcyBh
dCB0aGUgY2hhcmFjdGVyIGxldmVsIHdpdGggc3ViLWhpZ2hsaWdodGluZyAoc2ltaWxhciB0byB3
aGF0IFRyYWMncyBkaWZmIHZpZXcgZG9lcykuCisKK0knZCBhbHNvIGxpa2UgdG8gc2VlIHRoZSBg
ZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXJgIHJlaW1wbGVtZW50YXRpb24gZ2FpbiBzb21lIG1vcmUg
c3BlZWQgLS0gaXQncyB2aXJ0dWFsbHkgYSBsaW5lLWJ5LWxpbmUgdHJhbnNsYXRpb24gZnJvbSB0
aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uLCBzbyB0aGVyZSdzIHBsZW50eSB0aGF0IGNvdWxkIGJl
IGRvbmUgdG8gbWFrZSBpdCBtb3JlIHBlcmZvcm1hbnQgaW4gSmF2YXNjcmlwdC4gSG93ZXZlciwg
dGhhdCB3b3VsZCBtZWFuIG1ha2luZyB0aGUgcmVpbXBsZW1lbnRhdGlvbiBkaXZlcmdlIGV2ZW4g
bW9yZSBmcm9tIHRoZSAicmVmZXJlbmNlIiBQeXRob24gaW1wbGVtZW50YXRpb24uIEdpdmVuIHRo
YXQgSSBkb24ndCByZWFsbHkgd2FudCB0byB3b3JyeSBhYm91dCB0aGUgYWxnb3JpdGhtLCB0aGF0
J3Mgbm90IGFwcGVhbGluZy4gSSdkIG11Y2ggcmF0aGVyIHVzZSBhIHNlcnZlci1zaWRlIHByb2Nl
c3Mgd2hlbiB0aGUgaW4tYnJvd3NlciBkaWZmaW5nIGlzIGEgbGl0dGxlIHRvbyBwb2tleS4KKwor
T3RoZXIgdGhhbiB0aGF0LCBJJ20gb3BlbiB0byBzdWdnZXN0aW9ucy4KKworW05PVEVdCis9PT09
CitJJ20gbm8gbG9uZ2VyIGFjdGl2ZWx5IGRldmVsb3BpbmcganNkaWZmbGliLiAgSXQncyBiZWVu
IHNlcXVlc3RlcmVkIChtb3N0bHkgb3V0IG9mIHNpbXBsZSBuZWdsZWN0KSB0byBteSBjb21wYW55
J3Mgc2VydmVycyBmb3IgdG9vIGxvbmc7IG5vdyB0aGF0IGl0J3Mgb24gZ2l0aHViLCBJJ20gaG9w
aW5nIHRoYXQgbWFueSBvZiB0aGUgcGVvcGxlIHRoYXQgZmluZCBpdCB1c2VmdWwgd2lsbCBzdWJt
aXQgcHVsbCByZXF1ZXN0cyB0byBpbXByb3ZlIHRoZSBsaWJyYXJ5LiAgSSB3aWxsIGRvIHdoYXQg
SSBjYW4gdG8gY3VyYXRlIHRoYXQgcHJvY2Vzcy4KKz09PT0KKworW1tsaWNlbnNlXV0KKz09IExp
Y2Vuc2UKKworanNkaWZmbGliIGNhcnJpZXMgYSBCU0QgbGljZW5zZS4gQXMgc3VjaCwgaXQgbWF5
IGJlIHVzZWQgaW4gb3RoZXIgcHJvZHVjdHMgb3Igc2VydmljZXMgd2l0aCBhcHByb3ByaWF0ZSBh
dHRyaWJ1dGlvbiAoaW5jbHVkaW5nIGNvbW1lcmNpYWwgb2ZmZXJpbmdzKS4gVGhlIGxpY2Vuc2Ug
aXMgcHJlcGVuZGVkIHRvIGVhY2ggb2YganNkaWZmbGliJ3MgZmlsZXMuCisKK1tbZG93bmxvYWRz
XV0KKz09IERvd25sb2FkcworCitqc2RpZmZsaWIgY29uc2lzdHMgb2YgdGhyZWUgZmlsZXMgLS0g
dHdvIEphdmFzY3JpcHQgZmlsZXMsIGFuZCBvbmUgQ1NTIGZpbGUuIFdoeSB0d28gSmF2YXNjcmlw
dCBmaWxlcz8gQmVjYXVzZSBJIHdhbnRlZCB0byBrZWVwIHRoZSByZWltcGxlbWVudGF0aW9uIG9m
IHRoZSBweXRob24gZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIgY2xhc3Mgc2VwYXJhdGUgZnJvbSB0
aGUgYWN0dWFsIHZpc3VhbCBkaWZmIHZpZXcgZ2VuZXJhdG9yLiBGZWVsIGZyZWUgdG8gY29tYmlu
ZSBhbmQvb3Igb3B0aW1pemUgdGhlbSBpbiB5b3VyIGRlcGxveW1lbnQgZW52aXJvbm1lbnQuCisK
K1lvdSBjYW4gZG93bmxvYWQgdGhlIGZpbGVzIHNlcGFyYXRlbHkgYnkgbmF2aWdhdGluZyB0aGUg
cHJvamVjdCBvbiBnaXRodWIsIHlvdSBjYW4gY2xvbmUgdGhlIHJlcG8sIG9yIHlvdSBjYW4gZG93
bmxvYWQgYSB6aXBwZWQgZGlzdHJpYnV0aW9uIHZpYSB0aGUgIkRvd25sb2FkcyIgYnV0dG9uIGF0
IHRoZSB0b3Agb2YgdGhpcyBwcm9qZWN0IHBhZ2UuCisKK1tbaGlzdG9yeV1dCis9PSBSZWxlYXNl
IEhpc3RvcnkKKworKiAxLjEuMCAoTWF5IDE4LCAyMDExKTogTW92ZSBwcm9qZWN0IHRvIGdpdGh1
Yjsgbm8gY2hhbmdlcyBpbiBmdW5jdGlvbmFsaXR5CisqIDEuMC4wIChGZWJydWFyeSAyMiwgMjAw
Nyk6IEluaXRpYWwgcmVsZWFzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZmbGliLmpzIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZmbGliLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRiMmMwZTNhYzRmZDNkMTliZmFmY2VmYzJlNGM3MDFiYTBiYWExOWUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvanNkaWZm
bGliL2RpZmZsaWIuanMKQEAgLTAsMCArMSw0MDcgQEAKKy8qKioKK1RoaXMgaXMgcGFydCBvZiBq
c2RpZmZsaWIgdjEuMC4gPGh0dHA6Ly9zbm93dGlkZS5jb20vanNkaWZmbGliPgorCitDb3B5cmln
aHQgKGMpIDIwMDcsIFNub3d0aWRlIEluZm9ybWF0aWNzIFN5c3RlbXMsIEluYy4KK0FsbCByaWdo
dHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCithcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisKKwkqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
IG5vdGljZSwgdGhpcworCQlsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKwkqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKwkJdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorCQlhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKwkqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgdGhlIFNub3d0aWRlIEluZm9ybWF0aWNzIFN5c3RlbXMgbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKwkJY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworCQlzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKK0VYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUworT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQKK1NIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCitJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQK
K1RPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKK0JVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCitDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOCitBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorREFNQUdF
LgorKioqLworLyogQXV0aG9yOiBDaGFzIEVtZXJpY2sgPGNlbWVyaWNrQHNub3d0aWRlLmNvbT4g
Ki8KK19fd2hpdGVzcGFjZSA9IHsiICI6dHJ1ZSwgIlx0Ijp0cnVlLCAiXG4iOnRydWUsICJcZiI6
dHJ1ZSwgIlxyIjp0cnVlfTsKKworZGlmZmxpYiA9IHsKKwlkZWZhdWx0SnVua0Z1bmN0aW9uOiBm
dW5jdGlvbiAoYykgeworCQlyZXR1cm4gX193aGl0ZXNwYWNlLmhhc093blByb3BlcnR5KGMpOwor
CX0sCisJCisJc3RyaXBMaW5lYnJlYWtzOiBmdW5jdGlvbiAoc3RyKSB7IHJldHVybiBzdHIucmVw
bGFjZSgvXltcblxyXSp8W1xuXHJdKiQvZywgIiIpOyB9LAorCQorCXN0cmluZ0FzTGluZXM6IGZ1
bmN0aW9uIChzdHIpIHsKKwkJdmFyIGxmcG9zID0gc3RyLmluZGV4T2YoIlxuIik7CisJCXZhciBj
cnBvcyA9IHN0ci5pbmRleE9mKCJcciIpOworCQl2YXIgbGluZWJyZWFrID0gKChsZnBvcyA+IC0x
ICYmIGNycG9zID4gLTEpIHx8IGNycG9zIDwgMCkgPyAiXG4iIDogIlxyIjsKKwkJCisJCXZhciBs
aW5lcyA9IHN0ci5zcGxpdChsaW5lYnJlYWspOworCQlmb3IgKHZhciBpID0gMDsgaSA8IGxpbmVz
Lmxlbmd0aDsgaSsrKSB7CisJCQlsaW5lc1tpXSA9IGRpZmZsaWIuc3RyaXBMaW5lYnJlYWtzKGxp
bmVzW2ldKTsKKwkJfQorCQkKKwkJcmV0dXJuIGxpbmVzOworCX0sCisJCisJLy8gaXRlcmF0aW9u
LWJhc2VkIHJlZHVjZSBpbXBsZW1lbnRhdGlvbgorCV9fcmVkdWNlOiBmdW5jdGlvbiAoZnVuYywg
bGlzdCwgaW5pdGlhbCkgeworCQlpZiAoaW5pdGlhbCAhPSBudWxsKSB7CisJCQl2YXIgdmFsdWUg
PSBpbml0aWFsOworCQkJdmFyIGlkeCA9IDA7CisJCX0gZWxzZSBpZiAobGlzdCkgeworCQkJdmFy
IHZhbHVlID0gbGlzdFswXTsKKwkJCXZhciBpZHggPSAxOworCQl9IGVsc2UgeworCQkJcmV0dXJu
IG51bGw7CisJCX0KKwkJCisJCWZvciAoOyBpZHggPCBsaXN0Lmxlbmd0aDsgaWR4KyspIHsKKwkJ
CXZhbHVlID0gZnVuYyh2YWx1ZSwgbGlzdFtpZHhdKTsKKwkJfQorCQkKKwkJcmV0dXJuIHZhbHVl
OworCX0sCisJCisJLy8gY29tcGFyaXNvbiBmdW5jdGlvbiBmb3Igc29ydGluZyBsaXN0cyBvZiBu
dW1lcmljIHR1cGxlcworCV9fbnR1cGxlY29tcDogZnVuY3Rpb24gKGEsIGIpIHsKKwkJdmFyIG1s
ZW4gPSBNYXRoLm1heChhLmxlbmd0aCwgYi5sZW5ndGgpOworCQlmb3IgKHZhciBpID0gMDsgaSA8
IG1sZW47IGkrKykgeworCQkJaWYgKGFbaV0gPCBiW2ldKSByZXR1cm4gLTE7CisJCQlpZiAoYVtp
XSA+IGJbaV0pIHJldHVybiAxOworCQl9CisJCQorCQlyZXR1cm4gYS5sZW5ndGggPT0gYi5sZW5n
dGggPyAwIDogKGEubGVuZ3RoIDwgYi5sZW5ndGggPyAtMSA6IDEpOworCX0sCisJCisJX19jYWxj
dWxhdGVfcmF0aW86IGZ1bmN0aW9uIChtYXRjaGVzLCBsZW5ndGgpIHsKKwkJcmV0dXJuIGxlbmd0
aCA/IDIuMCAqIG1hdGNoZXMgLyBsZW5ndGggOiAxLjA7CisJfSwKKwkKKwkvLyByZXR1cm5zIGEg
ZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRydWUgaWYgYSBrZXkgcGFzc2VkIHRvIHRoZSByZXR1cm5l
ZCBmdW5jdGlvbgorCS8vIGlzIGluIHRoZSBkaWN0IChqcyBvYmplY3QpIHByb3ZpZGVkIHRvIHRo
aXMgZnVuY3Rpb247IHJlcGxhY2VzIGJlaW5nIGFibGUgdG8KKwkvLyBjYXJyeSBhcm91bmQgZGlj
dC5oYXNfa2V5IGluIHB5dGhvbi4uLgorCV9faXNpbmRpY3Q6IGZ1bmN0aW9uIChkaWN0KSB7CisJ
CXJldHVybiBmdW5jdGlvbiAoa2V5KSB7IHJldHVybiBkaWN0Lmhhc093blByb3BlcnR5KGtleSk7
IH07CisJfSwKKwkKKwkvLyByZXBsYWNlbWVudCBmb3IgcHl0aG9uJ3MgZGljdC5nZXQgZnVuY3Rp
b24gLS0gbmVlZCBlYXN5IGRlZmF1bHQgdmFsdWVzCisJX19kaWN0Z2V0OiBmdW5jdGlvbiAoZGlj
dCwga2V5LCBkZWZhdWx0VmFsdWUpIHsKKwkJcmV0dXJuIGRpY3QuaGFzT3duUHJvcGVydHkoa2V5
KSA/IGRpY3Rba2V5XSA6IGRlZmF1bHRWYWx1ZTsKKwl9LAkKKwkKKwlTZXF1ZW5jZU1hdGNoZXI6
IGZ1bmN0aW9uIChhLCBiLCBpc2p1bmspIHsKKwkJdGhpcy5zZXRfc2VxcyA9IGZ1bmN0aW9uIChh
LCBiKSB7CisJCQl0aGlzLnNldF9zZXExKGEpOworCQkJdGhpcy5zZXRfc2VxMihiKTsKKwkJfQor
CQkKKwkJdGhpcy5zZXRfc2VxMSA9IGZ1bmN0aW9uIChhKSB7CisJCQlpZiAoYSA9PSB0aGlzLmEp
IHJldHVybjsKKwkJCXRoaXMuYSA9IGE7CisJCQl0aGlzLm1hdGNoaW5nX2Jsb2NrcyA9IHRoaXMu
b3Bjb2RlcyA9IG51bGw7CisJCX0KKwkJCisJCXRoaXMuc2V0X3NlcTIgPSBmdW5jdGlvbiAoYikg
eworCQkJaWYgKGIgPT0gdGhpcy5iKSByZXR1cm47CisJCQl0aGlzLmIgPSBiOworCQkJdGhpcy5t
YXRjaGluZ19ibG9ja3MgPSB0aGlzLm9wY29kZXMgPSB0aGlzLmZ1bGxiY291bnQgPSBudWxsOwor
CQkJdGhpcy5fX2NoYWluX2IoKTsKKwkJfQorCQkKKwkJdGhpcy5fX2NoYWluX2IgPSBmdW5jdGlv
biAoKSB7CisJCQl2YXIgYiA9IHRoaXMuYjsKKwkJCXZhciBuID0gYi5sZW5ndGg7CisJCQl2YXIg
YjJqID0gdGhpcy5iMmogPSB7fTsKKwkJCXZhciBwb3B1bGFyZGljdCA9IHt9OworCQkJZm9yICh2
YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7CisJCQkJdmFyIGVsdCA9IGJbaV07CisJCQkJ
aWYgKGIyai5oYXNPd25Qcm9wZXJ0eShlbHQpKSB7CisJCQkJCXZhciBpbmRpY2VzID0gYjJqW2Vs
dF07CisJCQkJCWlmIChuID49IDIwMCAmJiBpbmRpY2VzLmxlbmd0aCAqIDEwMCA+IG4pIHsKKwkJ
CQkJCXBvcHVsYXJkaWN0W2VsdF0gPSAxOworCQkJCQkJZGVsZXRlIGIyaltlbHRdOworCQkJCQl9
IGVsc2UgeworCQkJCQkJaW5kaWNlcy5wdXNoKGkpOworCQkJCQl9CisJCQkJfSBlbHNlIHsKKwkJ
CQkJYjJqW2VsdF0gPSBbaV07CisJCQkJfQorCQkJfQorCQorCQkJZm9yICh2YXIgZWx0IGluIHBv
cHVsYXJkaWN0KSB7CisJCQkJaWYgKHBvcHVsYXJkaWN0Lmhhc093blByb3BlcnR5KGVsdCkpIHsK
KwkJCQkJZGVsZXRlIGIyaltlbHRdOworCQkJCX0KKwkJCX0KKwkJCQorCQkJdmFyIGlzanVuayA9
IHRoaXMuaXNqdW5rOworCQkJdmFyIGp1bmtkaWN0ID0ge307CisJCQlpZiAoaXNqdW5rKSB7CisJ
CQkJZm9yICh2YXIgZWx0IGluIHBvcHVsYXJkaWN0KSB7CisJCQkJCWlmIChwb3B1bGFyZGljdC5o
YXNPd25Qcm9wZXJ0eShlbHQpICYmIGlzanVuayhlbHQpKSB7CisJCQkJCQlqdW5rZGljdFtlbHRd
ID0gMTsKKwkJCQkJCWRlbGV0ZSBwb3B1bGFyZGljdFtlbHRdOworCQkJCQl9CisJCQkJfQorCQkJ
CWZvciAodmFyIGVsdCBpbiBiMmopIHsKKwkJCQkJaWYgKGIyai5oYXNPd25Qcm9wZXJ0eShlbHQp
ICYmIGlzanVuayhlbHQpKSB7CisJCQkJCQlqdW5rZGljdFtlbHRdID0gMTsKKwkJCQkJCWRlbGV0
ZSBiMmpbZWx0XTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkKKwkJCXRoaXMuaXNianVuayA9IGRp
ZmZsaWIuX19pc2luZGljdChqdW5rZGljdCk7CisJCQl0aGlzLmlzYnBvcHVsYXIgPSBkaWZmbGli
Ll9faXNpbmRpY3QocG9wdWxhcmRpY3QpOworCQl9CisJCQorCQl0aGlzLmZpbmRfbG9uZ2VzdF9t
YXRjaCA9IGZ1bmN0aW9uIChhbG8sIGFoaSwgYmxvLCBiaGkpIHsKKwkJCXZhciBhID0gdGhpcy5h
OworCQkJdmFyIGIgPSB0aGlzLmI7CisJCQl2YXIgYjJqID0gdGhpcy5iMmo7CisJCQl2YXIgaXNi
anVuayA9IHRoaXMuaXNianVuazsKKwkJCXZhciBiZXN0aSA9IGFsbzsKKwkJCXZhciBiZXN0aiA9
IGJsbzsKKwkJCXZhciBiZXN0c2l6ZSA9IDA7CisJCQl2YXIgaiA9IG51bGw7CisJCisJCQl2YXIg
ajJsZW4gPSB7fTsKKwkJCXZhciBub3RoaW5nID0gW107CisJCQlmb3IgKHZhciBpID0gYWxvOyBp
IDwgYWhpOyBpKyspIHsKKwkJCQl2YXIgbmV3ajJsZW4gPSB7fTsKKwkJCQl2YXIgamRpY3QgPSBk
aWZmbGliLl9fZGljdGdldChiMmosIGFbaV0sIG5vdGhpbmcpOworCQkJCWZvciAodmFyIGprZXkg
aW4gamRpY3QpIHsKKwkJCQkJaWYgKGpkaWN0Lmhhc093blByb3BlcnR5KGprZXkpKSB7CisJCQkJ
CQlqID0gamRpY3RbamtleV07CisJCQkJCQlpZiAoaiA8IGJsbykgY29udGludWU7CisJCQkJCQlp
ZiAoaiA+PSBiaGkpIGJyZWFrOworCQkJCQkJbmV3ajJsZW5bal0gPSBrID0gZGlmZmxpYi5fX2Rp
Y3RnZXQoajJsZW4sIGogLSAxLCAwKSArIDE7CisJCQkJCQlpZiAoayA+IGJlc3RzaXplKSB7CisJ
CQkJCQkJYmVzdGkgPSBpIC0gayArIDE7CisJCQkJCQkJYmVzdGogPSBqIC0gayArIDE7CisJCQkJ
CQkJYmVzdHNpemUgPSBrOworCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJCWoybGVuID0gbmV3
ajJsZW47CisJCQl9CisJCisJCQl3aGlsZSAoYmVzdGkgPiBhbG8gJiYgYmVzdGogPiBibG8gJiYg
IWlzYmp1bmsoYltiZXN0aiAtIDFdKSAmJiBhW2Jlc3RpIC0gMV0gPT0gYltiZXN0aiAtIDFdKSB7
CisJCQkJYmVzdGktLTsKKwkJCQliZXN0ai0tOworCQkJCWJlc3RzaXplKys7CisJCQl9CisJCQkJ
CisJCQl3aGlsZSAoYmVzdGkgKyBiZXN0c2l6ZSA8IGFoaSAmJiBiZXN0aiArIGJlc3RzaXplIDwg
YmhpICYmCisJCQkJCSFpc2JqdW5rKGJbYmVzdGogKyBiZXN0c2l6ZV0pICYmCisJCQkJCWFbYmVz
dGkgKyBiZXN0c2l6ZV0gPT0gYltiZXN0aiArIGJlc3RzaXplXSkgeworCQkJCWJlc3RzaXplKys7
CisJCQl9CisJCisJCQl3aGlsZSAoYmVzdGkgPiBhbG8gJiYgYmVzdGogPiBibG8gJiYgaXNianVu
ayhiW2Jlc3RqIC0gMV0pICYmIGFbYmVzdGkgLSAxXSA9PSBiW2Jlc3RqIC0gMV0pIHsKKwkJCQli
ZXN0aS0tOworCQkJCWJlc3RqLS07CisJCQkJYmVzdHNpemUrKzsKKwkJCX0KKwkJCQorCQkJd2hp
bGUgKGJlc3RpICsgYmVzdHNpemUgPCBhaGkgJiYgYmVzdGogKyBiZXN0c2l6ZSA8IGJoaSAmJiBp
c2JqdW5rKGJbYmVzdGogKyBiZXN0c2l6ZV0pICYmCisJCQkJCWFbYmVzdGkgKyBiZXN0c2l6ZV0g
PT0gYltiZXN0aiArIGJlc3RzaXplXSkgeworCQkJCWJlc3RzaXplKys7CisJCQl9CisJCisJCQly
ZXR1cm4gW2Jlc3RpLCBiZXN0aiwgYmVzdHNpemVdOworCQl9CisJCQorCQl0aGlzLmdldF9tYXRj
aGluZ19ibG9ja3MgPSBmdW5jdGlvbiAoKSB7CisJCQlpZiAodGhpcy5tYXRjaGluZ19ibG9ja3Mg
IT0gbnVsbCkgcmV0dXJuIHRoaXMubWF0Y2hpbmdfYmxvY2tzOworCQkJdmFyIGxhID0gdGhpcy5h
Lmxlbmd0aDsKKwkJCXZhciBsYiA9IHRoaXMuYi5sZW5ndGg7CisJCisJCQl2YXIgcXVldWUgPSBb
WzAsIGxhLCAwLCBsYl1dOworCQkJdmFyIG1hdGNoaW5nX2Jsb2NrcyA9IFtdOworCQkJdmFyIGFs
bywgYWhpLCBibG8sIGJoaSwgcWksIGksIGosIGssIHg7CisJCQl3aGlsZSAocXVldWUubGVuZ3Ro
KSB7CisJCQkJcWkgPSBxdWV1ZS5wb3AoKTsKKwkJCQlhbG8gPSBxaVswXTsKKwkJCQlhaGkgPSBx
aVsxXTsKKwkJCQlibG8gPSBxaVsyXTsKKwkJCQliaGkgPSBxaVszXTsKKwkJCQl4ID0gdGhpcy5m
aW5kX2xvbmdlc3RfbWF0Y2goYWxvLCBhaGksIGJsbywgYmhpKTsKKwkJCQlpID0geFswXTsKKwkJ
CQlqID0geFsxXTsKKwkJCQlrID0geFsyXTsKKwkKKwkJCQlpZiAoaykgeworCQkJCQltYXRjaGlu
Z19ibG9ja3MucHVzaCh4KTsKKwkJCQkJaWYgKGFsbyA8IGkgJiYgYmxvIDwgaikKKwkJCQkJCXF1
ZXVlLnB1c2goW2FsbywgaSwgYmxvLCBqXSk7CisJCQkJCWlmIChpK2sgPCBhaGkgJiYgaitrIDwg
YmhpKQorCQkJCQkJcXVldWUucHVzaChbaSArIGssIGFoaSwgaiArIGssIGJoaV0pOworCQkJCX0K
KwkJCX0KKwkJCQorCQkJbWF0Y2hpbmdfYmxvY2tzLnNvcnQoZGlmZmxpYi5fX250dXBsZWNvbXAp
OworCQorCQkJdmFyIGkxID0gajEgPSBrMSA9IGJsb2NrID0gMDsKKwkJCXZhciBub25fYWRqYWNl
bnQgPSBbXTsKKwkJCWZvciAodmFyIGlkeCBpbiBtYXRjaGluZ19ibG9ja3MpIHsKKwkJCQlpZiAo
bWF0Y2hpbmdfYmxvY2tzLmhhc093blByb3BlcnR5KGlkeCkpIHsKKwkJCQkJYmxvY2sgPSBtYXRj
aGluZ19ibG9ja3NbaWR4XTsKKwkJCQkJaTIgPSBibG9ja1swXTsKKwkJCQkJajIgPSBibG9ja1sx
XTsKKwkJCQkJazIgPSBibG9ja1syXTsKKwkJCQkJaWYgKGkxICsgazEgPT0gaTIgJiYgajEgKyBr
MSA9PSBqMikgeworCQkJCQkJazEgKz0gazI7CisJCQkJCX0gZWxzZSB7CisJCQkJCQlpZiAoazEp
IG5vbl9hZGphY2VudC5wdXNoKFtpMSwgajEsIGsxXSk7CisJCQkJCQlpMSA9IGkyOworCQkJCQkJ
ajEgPSBqMjsKKwkJCQkJCWsxID0gazI7CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCQkKKwkJCWlm
IChrMSkgbm9uX2FkamFjZW50LnB1c2goW2kxLCBqMSwgazFdKTsKKwkKKwkJCW5vbl9hZGphY2Vu
dC5wdXNoKFtsYSwgbGIsIDBdKTsKKwkJCXRoaXMubWF0Y2hpbmdfYmxvY2tzID0gbm9uX2FkamFj
ZW50OworCQkJcmV0dXJuIHRoaXMubWF0Y2hpbmdfYmxvY2tzOworCQl9CisJCQorCQl0aGlzLmdl
dF9vcGNvZGVzID0gZnVuY3Rpb24gKCkgeworCQkJaWYgKHRoaXMub3Bjb2RlcyAhPSBudWxsKSBy
ZXR1cm4gdGhpcy5vcGNvZGVzOworCQkJdmFyIGkgPSAwOworCQkJdmFyIGogPSAwOworCQkJdmFy
IGFuc3dlciA9IFtdOworCQkJdGhpcy5vcGNvZGVzID0gYW5zd2VyOworCQkJdmFyIGJsb2NrLCBh
aSwgYmosIHNpemUsIHRhZzsKKwkJCXZhciBibG9ja3MgPSB0aGlzLmdldF9tYXRjaGluZ19ibG9j
a3MoKTsKKwkJCWZvciAodmFyIGlkeCBpbiBibG9ja3MpIHsKKwkJCQlpZiAoYmxvY2tzLmhhc093
blByb3BlcnR5KGlkeCkpIHsKKwkJCQkJYmxvY2sgPSBibG9ja3NbaWR4XTsKKwkJCQkJYWkgPSBi
bG9ja1swXTsKKwkJCQkJYmogPSBibG9ja1sxXTsKKwkJCQkJc2l6ZSA9IGJsb2NrWzJdOworCQkJ
CQl0YWcgPSAnJzsKKwkJCQkJaWYgKGkgPCBhaSAmJiBqIDwgYmopIHsKKwkJCQkJCXRhZyA9ICdy
ZXBsYWNlJzsKKwkJCQkJfSBlbHNlIGlmIChpIDwgYWkpIHsKKwkJCQkJCXRhZyA9ICdkZWxldGUn
OworCQkJCQl9IGVsc2UgaWYgKGogPCBiaikgeworCQkJCQkJdGFnID0gJ2luc2VydCc7CisJCQkJ
CX0KKwkJCQkJaWYgKHRhZykgYW5zd2VyLnB1c2goW3RhZywgaSwgYWksIGosIGJqXSk7CisJCQkJ
CWkgPSBhaSArIHNpemU7CisJCQkJCWogPSBiaiArIHNpemU7CisJCQkJCQorCQkJCQlpZiAoc2l6
ZSkgYW5zd2VyLnB1c2goWydlcXVhbCcsIGFpLCBpLCBiaiwgal0pOworCQkJCX0KKwkJCX0KKwkJ
CQorCQkJcmV0dXJuIGFuc3dlcjsKKwkJfQorCQkKKwkJLy8gdGhpcyBpcyBhIGdlbmVyYXRvciBm
dW5jdGlvbiBpbiB0aGUgcHl0aG9uIGxpYiwgd2hpY2ggb2YgY291cnNlIGlzIG5vdCBzdXBwb3J0
ZWQgaW4gamF2YXNjcmlwdAorCQkvLyB0aGUgcmVpbXBsZW1lbnRhdGlvbiBidWlsZHMgdXAgdGhl
IGdyb3VwZWQgb3Bjb2RlcyBpbnRvIGEgbGlzdCBpbiB0aGVpciBlbnRpcmV0eSBhbmQgcmV0dXJu
cyB0aGF0LgorCQl0aGlzLmdldF9ncm91cGVkX29wY29kZXMgPSBmdW5jdGlvbiAobikgeworCQkJ
aWYgKCFuKSBuID0gMzsKKwkJCXZhciBjb2RlcyA9IHRoaXMuZ2V0X29wY29kZXMoKTsKKwkJCWlm
ICghY29kZXMpIGNvZGVzID0gW1siZXF1YWwiLCAwLCAxLCAwLCAxXV07CisJCQl2YXIgY29kZSwg
dGFnLCBpMSwgaTIsIGoxLCBqMjsKKwkJCWlmIChjb2Rlc1swXVswXSA9PSAnZXF1YWwnKSB7CisJ
CQkJY29kZSA9IGNvZGVzWzBdOworCQkJCXRhZyA9IGNvZGVbMF07CisJCQkJaTEgPSBjb2RlWzFd
OworCQkJCWkyID0gY29kZVsyXTsKKwkJCQlqMSA9IGNvZGVbM107CisJCQkJajIgPSBjb2RlWzRd
OworCQkJCWNvZGVzWzBdID0gW3RhZywgTWF0aC5tYXgoaTEsIGkyIC0gbiksIGkyLCBNYXRoLm1h
eChqMSwgajIgLSBuKSwgajJdOworCQkJfQorCQkJaWYgKGNvZGVzW2NvZGVzLmxlbmd0aCAtIDFd
WzBdID09ICdlcXVhbCcpIHsKKwkJCQljb2RlID0gY29kZXNbY29kZXMubGVuZ3RoIC0gMV07CisJ
CQkJdGFnID0gY29kZVswXTsKKwkJCQlpMSA9IGNvZGVbMV07CisJCQkJaTIgPSBjb2RlWzJdOwor
CQkJCWoxID0gY29kZVszXTsKKwkJCQlqMiA9IGNvZGVbNF07CisJCQkJY29kZXNbY29kZXMubGVu
Z3RoIC0gMV0gPSBbdGFnLCBpMSwgTWF0aC5taW4oaTIsIGkxICsgbiksIGoxLCBNYXRoLm1pbihq
MiwgajEgKyBuKV07CisJCQl9CisJCisJCQl2YXIgbm4gPSBuICsgbjsKKwkJCXZhciBncm91cHMg
PSBbXTsKKwkJCWZvciAodmFyIGlkeCBpbiBjb2RlcykgeworCQkJCWlmIChjb2Rlcy5oYXNPd25Q
cm9wZXJ0eShpZHgpKSB7CisJCQkJCWNvZGUgPSBjb2Rlc1tpZHhdOworCQkJCQl0YWcgPSBjb2Rl
WzBdOworCQkJCQlpMSA9IGNvZGVbMV07CisJCQkJCWkyID0gY29kZVsyXTsKKwkJCQkJajEgPSBj
b2RlWzNdOworCQkJCQlqMiA9IGNvZGVbNF07CisJCQkJCWlmICh0YWcgPT0gJ2VxdWFsJyAmJiBp
MiAtIGkxID4gbm4pIHsKKwkJCQkJCWdyb3Vwcy5wdXNoKFt0YWcsIGkxLCBNYXRoLm1pbihpMiwg
aTEgKyBuKSwgajEsIE1hdGgubWluKGoyLCBqMSArIG4pXSk7CisJCQkJCQlpMSA9IE1hdGgubWF4
KGkxLCBpMi1uKTsKKwkJCQkJCWoxID0gTWF0aC5tYXgoajEsIGoyLW4pOworCQkJCQl9CisJCQkJ
CQorCQkJCQlncm91cHMucHVzaChbdGFnLCBpMSwgaTIsIGoxLCBqMl0pOworCQkJCX0KKwkJCX0K
KwkJCQorCQkJaWYgKGdyb3VwcyAmJiBncm91cHNbZ3JvdXBzLmxlbmd0aCAtIDFdWzBdID09ICdl
cXVhbCcpIGdyb3Vwcy5wb3AoKTsKKwkJCQorCQkJcmV0dXJuIGdyb3VwczsKKwkJfQorCQkKKwkJ
dGhpcy5yYXRpbyA9IGZ1bmN0aW9uICgpIHsKKwkJCW1hdGNoZXMgPSBkaWZmbGliLl9fcmVkdWNl
KAorCQkJCQkJCWZ1bmN0aW9uIChzdW0sIHRyaXBsZSkgeyByZXR1cm4gc3VtICsgdHJpcGxlW3Ry
aXBsZS5sZW5ndGggLSAxXTsgfSwKKwkJCQkJCQl0aGlzLmdldF9tYXRjaGluZ19ibG9ja3MoKSwg
MCk7CisJCQlyZXR1cm4gZGlmZmxpYi5fX2NhbGN1bGF0ZV9yYXRpbyhtYXRjaGVzLCB0aGlzLmEu
bGVuZ3RoICsgdGhpcy5iLmxlbmd0aCk7CisJCX0KKwkJCisJCXRoaXMucXVpY2tfcmF0aW8gPSBm
dW5jdGlvbiAoKSB7CisJCQl2YXIgZnVsbGJjb3VudCwgZWx0OworCQkJaWYgKHRoaXMuZnVsbGJj
b3VudCA9PSBudWxsKSB7CisJCQkJdGhpcy5mdWxsYmNvdW50ID0gZnVsbGJjb3VudCA9IHt9Owor
CQkJCWZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5iLmxlbmd0aDsgaSsrKSB7CisJCQkJCWVsdCA9
IHRoaXMuYltpXTsKKwkJCQkJZnVsbGJjb3VudFtlbHRdID0gZGlmZmxpYi5fX2RpY3RnZXQoZnVs
bGJjb3VudCwgZWx0LCAwKSArIDE7CisJCQkJfQorCQkJfQorCQkJZnVsbGJjb3VudCA9IHRoaXMu
ZnVsbGJjb3VudDsKKwkKKwkJCXZhciBhdmFpbCA9IHt9OworCQkJdmFyIGF2YWlsaGFzID0gZGlm
ZmxpYi5fX2lzaW5kaWN0KGF2YWlsKTsKKwkJCXZhciBtYXRjaGVzID0gbnVtYiA9IDA7CisJCQlm
b3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYS5sZW5ndGg7IGkrKykgeworCQkJCWVsdCA9IHRoaXMu
YVtpXTsKKwkJCQlpZiAoYXZhaWxoYXMoZWx0KSkgeworCQkJCQludW1iID0gYXZhaWxbZWx0XTsK
KwkJCQl9IGVsc2UgeworCQkJCQludW1iID0gZGlmZmxpYi5fX2RpY3RnZXQoZnVsbGJjb3VudCwg
ZWx0LCAwKTsKKwkJCQl9CisJCQkJYXZhaWxbZWx0XSA9IG51bWIgLSAxOworCQkJCWlmIChudW1i
ID4gMCkgbWF0Y2hlcysrOworCQkJfQorCQkJCisJCQlyZXR1cm4gZGlmZmxpYi5fX2NhbGN1bGF0
ZV9yYXRpbyhtYXRjaGVzLCB0aGlzLmEubGVuZ3RoICsgdGhpcy5iLmxlbmd0aCk7CisJCX0KKwkJ
CisJCXRoaXMucmVhbF9xdWlja19yYXRpbyA9IGZ1bmN0aW9uICgpIHsKKwkJCXZhciBsYSA9IHRo
aXMuYS5sZW5ndGg7CisJCQl2YXIgbGIgPSB0aGlzLmIubGVuZ3RoOworCQkJcmV0dXJuIF9jYWxj
dWxhdGVfcmF0aW8oTWF0aC5taW4obGEsIGxiKSwgbGEgKyBsYik7CisJCX0KKwkJCisJCXRoaXMu
aXNqdW5rID0gaXNqdW5rID8gaXNqdW5rIDogZGlmZmxpYi5kZWZhdWx0SnVua0Z1bmN0aW9uOwor
CQl0aGlzLmEgPSB0aGlzLmIgPSBudWxsOworCQl0aGlzLnNldF9zZXFzKGEsIGIpOworCX0KK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9q
c2RpZmZsaWIvZGlmZnZpZXcuY3NzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZmdmlldy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODExYTU5M2I3N2Zi
YTRiOGU5NWY1ZTE4MDNjMjFkMDc3ZjM5YWQxZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9qc2RpZmZsaWIvZGlmZnZpZXcuY3Nz
CkBAIC0wLDAgKzEsODMgQEAKKy8qCitUaGlzIGlzIHBhcnQgb2YganNkaWZmbGliIHYxLjAuIDxo
dHRwOi8vZ2l0aHViLmNvbS9jZW1lcmljay9qc2RpZmZsaWI+CisKK0NvcHlyaWdodCAyMDA3IC0g
MjAxMSBDaGFzIEVtZXJpY2sgPGNlbWVyaWNrQHNub3d0aWRlLmNvbT4uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZQorcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisKKyAgIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mCisgICAgICBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisKKyAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0CisgICAgICBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICAgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENoYXMgRW1lcmljayBgYEFT
IElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKK1dBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBDaGFzIEVtZXJpY2sgT1IKK0NPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCitDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCitTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCitBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCitORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYKK0FEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitUaGUgdmlld3MgYW5kIGNvbmNsdXNpb25zIGNvbnRhaW5lZCBpbiB0aGUgc29mdHdhcmUg
YW5kIGRvY3VtZW50YXRpb24gYXJlIHRob3NlIG9mIHRoZQorYXV0aG9ycyBhbmQgc2hvdWxkIG5v
dCBiZSBpbnRlcnByZXRlZCBhcyByZXByZXNlbnRpbmcgb2ZmaWNpYWwgcG9saWNpZXMsIGVpdGhl
ciBleHByZXNzZWQKK29yIGltcGxpZWQsIG9mIENoYXMgRW1lcmljay4KKyovCit0YWJsZS5kaWZm
IHsKKwlib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7CisJYm9yZGVyOjFweCBzb2xpZCBkYXJrZ3Jh
eTsKKwl3aGl0ZS1zcGFjZTpwcmUtd3JhcAorfQordGFibGUuZGlmZiB0Ym9keSB7IAorCWZvbnQt
ZmFtaWx5OkNvdXJpZXIsIG1vbm9zcGFjZQorfQordGFibGUuZGlmZiB0Ym9keSB0aCB7CisJZm9u
dC1mYW1pbHk6dmVyZGFuYSxhcmlhbCwnQml0c3RyZWFtIFZlcmEgU2FucycsaGVsdmV0aWNhLHNh
bnMtc2VyaWY7CisJYmFja2dyb3VuZDojRUVEOworCWZvbnQtc2l6ZToxMXB4OworCWZvbnQtd2Vp
Z2h0Om5vcm1hbDsKKwlib3JkZXI6MXB4IHNvbGlkICNCQkM7CisJY29sb3I6Izg4NjsKKwlwYWRk
aW5nOi4zZW0gLjVlbSAuMWVtIDJlbTsKKwl0ZXh0LWFsaWduOnJpZ2h0OworCXZlcnRpY2FsLWFs
aWduOnRvcAorfQordGFibGUuZGlmZiB0aGVhZCB7CisJYm9yZGVyLWJvdHRvbToxcHggc29saWQg
I0JCQzsKKwliYWNrZ3JvdW5kOiNFRkVGRUY7CisJZm9udC1mYW1pbHk6VmVyZGFuYQorfQordGFi
bGUuZGlmZiB0aGVhZCB0aC50ZXh0dGl0bGUgeworCXRleHQtYWxpZ246bGVmdAorfQordGFibGUu
ZGlmZiB0Ym9keSB0ZCB7CisJcGFkZGluZzowcHggLjRlbTsKKwlwYWRkaW5nLXRvcDouNGVtOwor
CXZlcnRpY2FsLWFsaWduOnRvcDsKK30KK3RhYmxlLmRpZmYgLmVtcHR5IHsKKwliYWNrZ3JvdW5k
LWNvbG9yOiNEREQ7Cit9Cit0YWJsZS5kaWZmIC5yZXBsYWNlIHsKKwliYWNrZ3JvdW5kLWNvbG9y
OiNGRDgKK30KK3RhYmxlLmRpZmYgLmRlbGV0ZSB7CisJYmFja2dyb3VuZC1jb2xvcjojRTk5Owor
fQordGFibGUuZGlmZiAuc2tpcCB7CisJYmFja2dyb3VuZC1jb2xvcjojRUZFRkVGOworCWJvcmRl
cjoxcHggc29saWQgI0FBQTsKKwlib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNCQkM7Cit9Cit0YWJs
ZS5kaWZmIC5pbnNlcnQgeworCWJhY2tncm91bmQtY29sb3I6IzlFOQorfQordGFibGUuZGlmZiB0
aC5hdXRob3IgeworCXRleHQtYWxpZ246cmlnaHQ7CisJYm9yZGVyLXRvcDoxcHggc29saWQgI0JC
QzsKKwliYWNrZ3JvdW5kOiNFRkVGRUYKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvanNk
aWZmbGliL2RpZmZ2aWV3LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVz
b3VyY2VzL2pzZGlmZmxpYi9kaWZmdmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjI4YTM0ZDJiNmM0ZTNi
MzkzMjMyZDg2MGM4NGRmYmQ5ZmU1YWI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZmdmlldy5qcwpAQCAt
MCwwICsxLDE5NyBAQAorLyoKK1RoaXMgaXMgcGFydCBvZiBqc2RpZmZsaWIgdjEuMC4gPGh0dHA6
Ly9naXRodWIuY29tL2NlbWVyaWNrL2pzZGlmZmxpYj4KKworQ29weXJpZ2h0IDIwMDcgLSAyMDEx
IENoYXMgRW1lcmljayA8Y2VtZXJpY2tAc25vd3RpZGUuY29tPi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlCitwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKworICAgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YKKyAgICAgIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKworICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3QKKyAgICAgIG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgICAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ2hhcyBFbWVyaWNrIGBgQVMgSVMn
JyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIENoYXMgRW1lcmljayBPUgorQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKK0NPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKK1NFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KK0FOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKK05FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRgorQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K1RoZSB2aWV3cyBhbmQgY29uY2x1c2lvbnMgY29udGFpbmVkIGluIHRoZSBzb2Z0d2FyZSBhbmQg
ZG9jdW1lbnRhdGlvbiBhcmUgdGhvc2Ugb2YgdGhlCithdXRob3JzIGFuZCBzaG91bGQgbm90IGJl
IGludGVycHJldGVkIGFzIHJlcHJlc2VudGluZyBvZmZpY2lhbCBwb2xpY2llcywgZWl0aGVyIGV4
cHJlc3NlZAorb3IgaW1wbGllZCwgb2YgQ2hhcyBFbWVyaWNrLgorKi8KK2RpZmZ2aWV3ID0gewor
CS8qKgorCSAqIEJ1aWxkcyBhbmQgcmV0dXJucyBhIHZpc3VhbCBkaWZmIHZpZXcuICBUaGUgc2lu
Z2xlIHBhcmFtZXRlciwgYHBhcmFtcycsIHNob3VsZCBjb250YWluCisJICogdGhlIGZvbGxvd2lu
ZyB2YWx1ZXM6CisJICoKKwkgKiAtIGJhc2VUZXh0TGluZXM6IHRoZSBhcnJheSBvZiBzdHJpbmdz
IHRoYXQgd2FzIHVzZWQgYXMgdGhlIGJhc2UgdGV4dCBpbnB1dCB0byBTZXF1ZW5jZU1hdGNoZXIK
KwkgKiAtIG5ld1RleHRMaW5lczogdGhlIGFycmF5IG9mIHN0cmluZ3MgdGhhdCB3YXMgdXNlZCBh
cyB0aGUgbmV3IHRleHQgaW5wdXQgdG8gU2VxdWVuY2VNYXRjaGVyCisJICogLSBvcGNvZGVzOiB0
aGUgYXJyYXkgb2YgYXJyYXlzIHJldHVybmVkIGJ5IFNlcXVlbmNlTWF0Y2hlci5nZXRfb3Bjb2Rl
cygpCisJICogLSBiYXNlVGV4dE5hbWU6IHRoZSB0aXRsZSB0byBiZSBkaXNwbGF5ZWQgYWJvdmUg
dGhlIGJhc2UgdGV4dCBsaXN0aW5nIGluIHRoZSBkaWZmIHZpZXc7IGRlZmF1bHRzCisJICoJICAg
dG8gIkJhc2UgVGV4dCIKKwkgKiAtIG5ld1RleHROYW1lOiB0aGUgdGl0bGUgdG8gYmUgZGlzcGxh
eWVkIGFib3ZlIHRoZSBuZXcgdGV4dCBsaXN0aW5nIGluIHRoZSBkaWZmIHZpZXc7IGRlZmF1bHRz
CisJICoJICAgdG8gIk5ldyBUZXh0IgorCSAqIC0gY29udGV4dFNpemU6IHRoZSBudW1iZXIgb2Yg
bGluZXMgb2YgY29udGV4dCB0byBzaG93IGFyb3VuZCBkaWZmZXJlbmNlczsgYnkgZGVmYXVsdCwg
YWxsIGxpbmVzCisJICoJICAgYXJlIHNob3duCisJICogLSB2aWV3VHlwZTogaWYgMCwgYSBzaWRl
LWJ5LXNpZGUgZGlmZiB2aWV3IGlzIGdlbmVyYXRlZCAoZGVmYXVsdCk7IGlmIDEsIGFuIGlubGlu
ZSBkaWZmIHZpZXcgaXMKKwkgKgkgICBnZW5lcmF0ZWQKKwkgKi8KKwlidWlsZFZpZXc6IGZ1bmN0
aW9uIChwYXJhbXMpIHsKKwkJdmFyIGJhc2VUZXh0TGluZXMgPSBwYXJhbXMuYmFzZVRleHRMaW5l
czsKKwkJdmFyIG5ld1RleHRMaW5lcyA9IHBhcmFtcy5uZXdUZXh0TGluZXM7CisJCXZhciBvcGNv
ZGVzID0gcGFyYW1zLm9wY29kZXM7CisJCXZhciBiYXNlVGV4dE5hbWUgPSBwYXJhbXMuYmFzZVRl
eHROYW1lID8gcGFyYW1zLmJhc2VUZXh0TmFtZSA6ICJCYXNlIFRleHQiOworCQl2YXIgbmV3VGV4
dE5hbWUgPSBwYXJhbXMubmV3VGV4dE5hbWUgPyBwYXJhbXMubmV3VGV4dE5hbWUgOiAiTmV3IFRl
eHQiOworCQl2YXIgY29udGV4dFNpemUgPSBwYXJhbXMuY29udGV4dFNpemU7CisJCXZhciBpbmxp
bmUgPSAocGFyYW1zLnZpZXdUeXBlID09IDAgfHwgcGFyYW1zLnZpZXdUeXBlID09IDEpID8gcGFy
YW1zLnZpZXdUeXBlIDogMDsKKworCQlpZiAoYmFzZVRleHRMaW5lcyA9PSBudWxsKQorCQkJdGhy
b3cgIkNhbm5vdCBidWlsZCBkaWZmIHZpZXc7IGJhc2VUZXh0TGluZXMgaXMgbm90IGRlZmluZWQu
IjsKKwkJaWYgKG5ld1RleHRMaW5lcyA9PSBudWxsKQorCQkJdGhyb3cgIkNhbm5vdCBidWlsZCBk
aWZmIHZpZXc7IG5ld1RleHRMaW5lcyBpcyBub3QgZGVmaW5lZC4iOworCQlpZiAoIW9wY29kZXMp
CisJCQl0aHJvdyAiQ2Fubm8gYnVpbGQgZGlmZiB2aWV3OyBvcGNvZGVzIGlzIG5vdCBkZWZpbmVk
LiI7CisJCQorCQlmdW5jdGlvbiBjZWx0IChuYW1lLCBjbGF6eikgeworCQkJdmFyIGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KG5hbWUpOworCQkJZS5jbGFzc05hbWUgPSBjbGF6ejsKKwkJCXJl
dHVybiBlOworCQl9CisJCQorCQlmdW5jdGlvbiB0ZWx0IChuYW1lLCB0ZXh0KSB7CisJCQl2YXIg
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSk7CisJCQllLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKHRleHQpKTsKKwkJCXJldHVybiBlOworCQl9CisJCQorCQlmdW5j
dGlvbiBjdGVsdCAobmFtZSwgY2xhenosIHRleHQpIHsKKwkJCXZhciBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudChuYW1lKTsKKwkJCWUuY2xhc3NOYW1lID0gY2xheno7CisJCQllLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpKTsKKwkJCXJldHVybiBlOworCQl9CisJ
CisJCXZhciB0ZGF0YSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoZWFkIik7CisJCXZhciBu
b2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKwkJdGRhdGEuYXBwZW5kQ2hpbGQo
bm9kZSk7CisJCWlmIChpbmxpbmUpIHsKKwkJCW5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgidGgiKSk7CisJCQlub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInRoIikpOworCQkJbm9kZS5hcHBlbmRDaGlsZChjdGVsdCgidGgiLCAidGV4dHRpdGxl
IiwgYmFzZVRleHROYW1lICsgIiB2cy4gIiArIG5ld1RleHROYW1lKSk7CisJCX0gZWxzZSB7CisJ
CQlub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoIikpOworCQkJbm9k
ZS5hcHBlbmRDaGlsZChjdGVsdCgidGgiLCAidGV4dHRpdGxlIiwgYmFzZVRleHROYW1lKSk7CisJ
CQlub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoIikpOworCQkJbm9k
ZS5hcHBlbmRDaGlsZChjdGVsdCgidGgiLCAidGV4dHRpdGxlIiwgbmV3VGV4dE5hbWUpKTsKKwkJ
fQorCQl0ZGF0YSA9IFt0ZGF0YV07CisJCQorCQl2YXIgcm93cyA9IFtdOworCQl2YXIgbm9kZTI7
CisJCQorCQkvKioKKwkJICogQWRkcyB0d28gY2VsbHMgdG8gdGhlIGdpdmVuIHJvdzsgaWYgdGhl
IGdpdmVuIHJvdyBjb3JyZXNwb25kcyB0byBhIHJlYWwKKwkJICogbGluZSBudW1iZXIgKGJhc2Vk
IG9uIHRoZSBsaW5lIGluZGV4IHRpZHggYW5kIHRoZSBlbmRwb2ludCBvZiB0aGUgCisJCSAqIHJh
bmdlIGluIHF1ZXN0aW9uIHRlbmQpLCB0aGVuIHRoZSBjZWxscyB3aWxsIGNvbnRhaW4gdGhlIGxp
bmUgbnVtYmVyCisJCSAqIGFuZCB0aGUgbGluZSBvZiB0ZXh0IGZyb20gdGV4dExpbmVzIGF0IHBv
c2l0aW9uIHRpZHggKHdpdGggdGhlIGNsYXNzIG9mCisJCSAqIHRoZSBzZWNvbmQgY2VsbCBzZXQg
dG8gdGhlIG5hbWUgb2YgdGhlIGNoYW5nZSByZXByZXNlbnRlZCksIGFuZCB0aWR4ICsgMSB3aWxs
CisJCSAqIGJlIHJldHVybmVkLgkgT3RoZXJ3aXNlLCB0aWR4IGlzIHJldHVybmVkLCBhbmQgdHdv
IGVtcHR5IGNlbGxzIGFyZSBhZGRlZAorCQkgKiB0byB0aGUgZ2l2ZW4gcm93LgorCQkgKi8KKwkJ
ZnVuY3Rpb24gYWRkQ2VsbHMgKHJvdywgdGlkeCwgdGVuZCwgdGV4dExpbmVzLCBjaGFuZ2UpIHsK
KwkJCWlmICh0aWR4IDwgdGVuZCkgeworCQkJCXJvdy5hcHBlbmRDaGlsZCh0ZWx0KCJ0aCIsICh0
aWR4ICsgMSkudG9TdHJpbmcoKSkpOworCQkJCXJvdy5hcHBlbmRDaGlsZChjdGVsdCgidGQiLCBj
aGFuZ2UsIHRleHRMaW5lc1t0aWR4XS5yZXBsYWNlKC9cdC9nLCAiXHUwMGEwXHUwMGEwXHUwMGEw
XHUwMGEwIikpKTsKKwkJCQlyZXR1cm4gdGlkeCArIDE7CisJCQl9IGVsc2UgeworCQkJCXJvdy5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpKTsKKwkJCQlyb3cuYXBwZW5k
Q2hpbGQoY2VsdCgidGQiLCAiZW1wdHkiKSk7CisJCQkJcmV0dXJuIHRpZHg7CisJCQl9CisJCX0K
KwkJCisJCWZ1bmN0aW9uIGFkZENlbGxzSW5saW5lIChyb3csIHRpZHgsIHRpZHgyLCB0ZXh0TGlu
ZXMsIGNoYW5nZSkgeworCQkJcm93LmFwcGVuZENoaWxkKHRlbHQoInRoIiwgdGlkeCA9PSBudWxs
ID8gIiIgOiAodGlkeCArIDEpLnRvU3RyaW5nKCkpKTsKKwkJCXJvdy5hcHBlbmRDaGlsZCh0ZWx0
KCJ0aCIsIHRpZHgyID09IG51bGwgPyAiIiA6ICh0aWR4MiArIDEpLnRvU3RyaW5nKCkpKTsKKwkJ
CXJvdy5hcHBlbmRDaGlsZChjdGVsdCgidGQiLCBjaGFuZ2UsIHRleHRMaW5lc1t0aWR4ICE9IG51
bGwgPyB0aWR4IDogdGlkeDJdLnJlcGxhY2UoL1x0L2csICJcdTAwYTBcdTAwYTBcdTAwYTBcdTAw
YTAiKSkpOworCQl9CisJCQorCQlmb3IgKHZhciBpZHggPSAwOyBpZHggPCBvcGNvZGVzLmxlbmd0
aDsgaWR4KyspIHsKKwkJCWNvZGUgPSBvcGNvZGVzW2lkeF07CisJCQljaGFuZ2UgPSBjb2RlWzBd
OworCQkJdmFyIGIgPSBjb2RlWzFdOworCQkJdmFyIGJlID0gY29kZVsyXTsKKwkJCXZhciBuID0g
Y29kZVszXTsKKwkJCXZhciBuZSA9IGNvZGVbNF07CisJCQl2YXIgcm93Y250ID0gTWF0aC5tYXgo
YmUgLSBiLCBuZSAtIG4pOworCQkJdmFyIHRvcHJvd3MgPSBbXTsKKwkJCXZhciBib3Ryb3dzID0g
W107CisJCQlmb3IgKHZhciBpID0gMDsgaSA8IHJvd2NudDsgaSsrKSB7CisJCQkJLy8ganVtcCBh
aGVhZCBpZiB3ZSd2ZSBhbHJlZHkgcHJvdmlkZWQgbGVhZGluZyBjb250ZXh0IG9yIGlmIHRoaXMg
aXMgdGhlIGZpcnN0IHJhbmdlCisJCQkJaWYgKGNvbnRleHRTaXplICYmIG9wY29kZXMubGVuZ3Ro
ID4gMSAmJiAoKGlkeCA+IDAgJiYgaSA9PSBjb250ZXh0U2l6ZSkgfHwgKGlkeCA9PSAwICYmIGkg
PT0gMCkpICYmIGNoYW5nZT09ImVxdWFsIikgeworCQkJCQl2YXIganVtcCA9IHJvd2NudCAtICgo
aWR4ID09IDAgPyAxIDogMikgKiBjb250ZXh0U2l6ZSk7CisJCQkJCWlmIChqdW1wID4gMSkgewor
CQkJCQkJdG9wcm93cy5wdXNoKG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpKTsK
KwkJCQkJCQorCQkJCQkJYiArPSBqdW1wOworCQkJCQkJbiArPSBqdW1wOworCQkJCQkJaSArPSBq
dW1wIC0gMTsKKwkJCQkJCW5vZGUuYXBwZW5kQ2hpbGQodGVsdCgidGgiLCAiLi4uIikpOworCQkJ
CQkJaWYgKCFpbmxpbmUpIG5vZGUuYXBwZW5kQ2hpbGQoY3RlbHQoInRkIiwgInNraXAiLCAiIikp
OworCQkJCQkJbm9kZS5hcHBlbmRDaGlsZCh0ZWx0KCJ0aCIsICIuLi4iKSk7CisJCQkJCQlub2Rl
LmFwcGVuZENoaWxkKGN0ZWx0KCJ0ZCIsICJza2lwIiwgIiIpKTsKKwkJCQkJCQorCQkJCQkJLy8g
c2tpcCBsYXN0IGxpbmVzIGlmIHRoZXkncmUgYWxsIGVxdWFsCisJCQkJCQlpZiAoaWR4ICsgMSA9
PSBvcGNvZGVzLmxlbmd0aCkgeworCQkJCQkJCWJyZWFrOworCQkJCQkJfSBlbHNlIHsKKwkJCQkJ
CQljb250aW51ZTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCQkKKwkJCQl0b3Byb3dzLnB1
c2gobm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIikpOworCQkJCWlmIChpbmxpbmUp
IHsKKwkJCQkJaWYgKGNoYW5nZSA9PSAiaW5zZXJ0IikgeworCQkJCQkJYWRkQ2VsbHNJbmxpbmUo
bm9kZSwgbnVsbCwgbisrLCBuZXdUZXh0TGluZXMsIGNoYW5nZSk7CisJCQkJCX0gZWxzZSBpZiAo
Y2hhbmdlID09ICJyZXBsYWNlIikgeworCQkJCQkJYm90cm93cy5wdXNoKG5vZGUyID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgidHIiKSk7CisJCQkJCQlpZiAoYiA8IGJlKSBhZGRDZWxsc0lubGlu
ZShub2RlLCBiKyssIG51bGwsIGJhc2VUZXh0TGluZXMsICJkZWxldGUiKTsKKwkJCQkJCWlmIChu
IDwgbmUpIGFkZENlbGxzSW5saW5lKG5vZGUyLCBudWxsLCBuKyssIG5ld1RleHRMaW5lcywgImlu
c2VydCIpOworCQkJCQl9IGVsc2UgaWYgKGNoYW5nZSA9PSAiZGVsZXRlIikgeworCQkJCQkJYWRk
Q2VsbHNJbmxpbmUobm9kZSwgYisrLCBudWxsLCBiYXNlVGV4dExpbmVzLCBjaGFuZ2UpOworCQkJ
CQl9IGVsc2UgeworCQkJCQkJLy8gZXF1YWwKKwkJCQkJCWFkZENlbGxzSW5saW5lKG5vZGUsIGIr
KywgbisrLCBiYXNlVGV4dExpbmVzLCBjaGFuZ2UpOworCQkJCQl9CisJCQkJfSBlbHNlIHsKKwkJ
CQkJYiA9IGFkZENlbGxzKG5vZGUsIGIsIGJlLCBiYXNlVGV4dExpbmVzLCBjaGFuZ2UpOworCQkJ
CQluID0gYWRkQ2VsbHMobm9kZSwgbiwgbmUsIG5ld1RleHRMaW5lcywgY2hhbmdlKTsKKwkJCQl9
CisJCQl9CisKKwkJCWZvciAodmFyIGkgPSAwOyBpIDwgdG9wcm93cy5sZW5ndGg7IGkrKykgcm93
cy5wdXNoKHRvcHJvd3NbaV0pOworCQkJZm9yICh2YXIgaSA9IDA7IGkgPCBib3Ryb3dzLmxlbmd0
aDsgaSsrKSByb3dzLnB1c2goYm90cm93c1tpXSk7CisJCX0KKwkJCisJCXJvd3MucHVzaChub2Rl
ID0gY3RlbHQoInRoIiwgImF1dGhvciIsICJkaWZmIHZpZXcgZ2VuZXJhdGVkIGJ5ICIpKTsKKwkJ
bm9kZS5zZXRBdHRyaWJ1dGUoImNvbHNwYW4iLCBpbmxpbmUgPyAzIDogNCk7CisJCW5vZGUuYXBw
ZW5kQ2hpbGQobm9kZTIgPSB0ZWx0KCJhIiwgImpzZGlmZmxpYiIpKTsKKwkJbm9kZTIuc2V0QXR0
cmlidXRlKCJocmVmIiwgImh0dHA6Ly9naXRodWIuY29tL2NlbWVyaWNrL2pzZGlmZmxpYiIpOwor
CQkKKwkJdGRhdGEucHVzaChub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSk7
CisJCWZvciAodmFyIGlkeCBpbiByb3dzKSBub2RlLmFwcGVuZENoaWxkKHJvd3NbaWR4XSk7CisJ
CQorCQlub2RlID0gY2VsdCgidGFibGUiLCAiZGlmZiIgKyAoaW5saW5lID8gIiBpbmxpbmVkaWZm
IiA6ICIiKSk7CisJCWZvciAodmFyIGlkeCBpbiB0ZGF0YSkgbm9kZS5hcHBlbmRDaGlsZCh0ZGF0
YVtpZHhdKTsKKwkJcmV0dXJuIG5vZGU7CisJfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>157581</attachid>
            <date>2012-08-09 16:57:02 -0700</date>
            <delta_ts>2012-08-09 16:57:02 -0700</delta_ts>
            <desc>Screenshot of setup</desc>
            <filename>DebuggerOnDebuggerScreenshot.png</filename>
            <type>image/png</type>
            <size>161032</size>
            <attacher name="johnjbarton">johnjbarton</attacher>
            
              <data encoding="base64">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
OchjAAAAACAHeQwAAAAA5CCPAQAAAIAc5DEAAAAAkIM8BgAAAABykMcAAAAAQA7yGAAAAADIQR4D
AAAAADnIYwAAAAAgB3kMAAAAAOQgjwEAAACAHOQxAAAAAJCDPAYAAAAAcpDHAAAAAEAO8hgAAAAA
yEEeAwAAAAA5yGMAAAAAIAd5DAAAAADkII8BAAAAgBzkMQAAAACQgzwGAAAAAHKQxwAAAABADvIY
AAAAAMhBHgMAAAAAOchjAAAAACAHeQwAAAAA5CCPAQAAAIAc5DEAAAAAkIM8BgAAAABykMcAAAAA
QA7yGAAAAADIQR4DAAAAADnIYwAAAAAgB3kMAAAAAOQgjwEAAACAHOQxAAAAAJCDPAYAAAAAcpDH
AAAAAEAO8hgAAAAAyEEeAwAAAAA5yGMAAAAAIAd5DAAAAADkII8BAAAAgBzkMQAAAACQgzwGAAAA
AHKQxwAAAABADvIYAAAAAMhBHgMAAAAAOchjAAAAACAHeQwAAAAA5CCPAQAAAIAc5DEAAAAAkIM8
BgAAAABykMcAAAAAQA7yGAAAAADIQR4DAAAAADnIYwAAAAAgB3kMAAAAAOQgjwEAAACAHOQxAAAA
AJCDPAYAAAAAcpDHAAAAAEAO8hgAAAAAyEEeAwAAAAA5yGMAAAAAIAd5DAAAAADkII8BAAAAgBzk
MQAAAACQgzwGAAAAAHKQxwAAAABADvIYAAAAAMhBHgMAAAAAOchjAAAAACAHeQwAAAAA5CCPAQAA
AIAc5DEAAAAAkIM8BgAAAABykMcAAAAAQA7yGAAAAADIQR4DAAAAADnIYwAAAAAgB3kMAAAAAOQg
jwEAAACAHOQxAAAAAJCDPAYAAAAAcpDHAAAAAEAO8hgAAAAAyEEeAwAAAAA5yGMAAAAAIAd5DAAA
AADkII8BAAAAgBzkMQAAAACQgzwGAAAAAHKQxwAAAABADvIYAAAAAMhBHgMAAAAAOchjAAAAACAH
eQwAAAAA5CCPAQAAAIAc5DEAAAAAkIM8BgAAAABykMcAAAAAQA7yGAAAAADIQR4DAAAAADnIYwAA
AAAgB3kMAAAAAOQgjwEAAACAHOQxAAAAAJCDPAYAAAAAcpDHAAAAAEAO8hgAAAAAyEEeAwAAAAA5
yGMAAAAAIAd5DAAAAADkII8BAAAAgBzkMQAAAACQgzwGAAAAAHKQxwAAAABADvIYAAAAAMhBHgMA
AAAAOchjAAAAACAHeQwAAAAA5CCPAQAAAIAc5DEAAAAAkIM8BgAAAABykMcAAAAAQA7yGAAAAADI
QR4DAAAAADnIYwAAAAAgB3kMAAAAAOQgjwEAAACAHOQxAAAAAJCDPAYAAAAAcpDHAAAAAEAO8hgA
AAAAyEEeAwAAAAA5yGMAAAAAIAd5DAAAAADkII8BAAAAgBzkMQAAAACQgzwGAAAAAHKQxwAAAABA
DvIYAAAAAMhBHgMAAAAAOchjAAAAACAHeQwAAAAA5CCPAQAAAIAc5DEAAAAAkIM8BgAAAABykMcA
AAAAQA7yGAAAAADIQR4DAAAAADnIYwAAAAAgB3kMAAAAAOQgjwEAAACAHOQxAAAAAJCDPAYAAAAA
cpDHAAAAAEAO8hgAAAAAyEEeAwAAAAA5yGMAAAAAIAd5DAAAAADkII8BAAAAgBzkMQAAAACQgzwG
AAAAAHKQxwAAAABADvIYAAAAAMhBHgMAAAAAOchjAAAAACAHeQwAAAAA5CCPAQAAAIAc5DEAAAAA
kIM8BgAAAABykMcAAAAAQA7yGAAAAADIQR4DAAAAADnIYwAAAAAgB3kMAAAAAOQgjwEAAACAHOQx
AAAAAJCDPAYAAAAAcpDHAAAAAEAO8hgAAAAAyEEeAwAAAAA5yGMAAAAAIAd5DAAAAADkII8BAAAA
gBzkMQAAAACQgzwGAAAAAHKQxwAAAABADvIYAAAAAMhBHgMAAAAAOchjAAAAACAHeQwAAAAA5CCP
AQAAAIAc5DEAAAAAkIM8BgAAAABykMcAAAAAQA7yGAAAAADIQR4DAAAAADnIYwAAAAAgB3kMAAAA
AOQgjwEAAACAHOQxAAAAAJCDPAYAAAAAcpDHAAAAAEAO8hgAAAAAyEEeAwAAAAA5yGMAAAAAIAd5
DAAAAADkII8BAAAAgBzkMQAAAACQgzwGAAAAAHKQxwAAAABADvIYAAAAAMhBHgMAAAAAOchjAAAA
ACAHeQwAAAAA5CCPAQAAAIAc5DEAAAAAkIM8BgAAAABykMcAAAAAQA7yGAAAAADIQR4DAAAAADnI
YwAAAAAgB3kMAAAAAOQgjwEAAACAHOQxAAAAAJCDPAYAAAAAcpDHAAAAAEAO8hgAAAAAyEEeAwAA
AAA5yGMAAAAAIAd5DAAAAADkII8BAAAAgBzkMQAAAACQgzwGAAAAAHKQxwAAAABADvIYAAAAAMhB
HgMAAAAAOchjAAAAACAHeQwAAAAA5CCPAQAAAIAc5DEAAAAAkIM8BgAAAABykMcAAAAAQA7yGAAA
AADIQR4DAAAAADnIYwAAAAAgB3kMAAAAAOQgjwEAAACAHOQxAAAAAJCDPAYAAAAAcpDHAAAAAEAO
8hgAAAAAyEEeAwAAAAA5yGMAAAAAIAd5DAAAAADkII8BAAAAgBzkMQAAAACQgzwGAAAAAHKQxwAA
AABADvIYAAAAAMhBHgMAAAAAOchjAAAAACAHeQwAAAAA5CCPAQAAAIAc5DEAAAAAkIM8BgAAAABy
kMcAAAAAQA7yGAAAAADIQR4DAAAAADnIYwAAAAAgB3kMAAAAAOQgjwEAAACAHOQxAAAAAJCDPAYA
AAAAcpDHAAAAAEAO8hgAAAAAyEEeAwAAAAA5yGMAAAAAIAd5DAAAAADkII8BAAAAgBzkMQAAAACQ
gzwGAAAAAHKQxwAAAABADvIYAAAAAMhBHgMAAAAAOchjAAAAACAHeQwAAAAA5CCPAQAAAIAc5DEA
AAAAkIM8BgAAAABykMcAAAAAQA7yGAAAAADIQR4DAAAAADnIYwAAAAAgB3kMAAAAAOQgjwEAAACA
HOQxAAAAAJCDPAYAAAAAcpDHAAAAAEAO8hgAAAAAyEEeAwAAAAA5yGMAAAAAIAd5DAAAAADkII8B
AAAAgBzkMQAAAACQgzwGAAAAAHKQxwAAAABADvIYAAAAAMhBHgMAAAAAOchjAAAAACAHeQwAAAAA
5CCPAQAAAIAc5DEAAAAAkIM8BgAAAABykMcAAAAAQA7yGAAAAADIQR4DAAAAADnIYwAAAAAgB3kM
AAAAAOQgjwEAAACAHOQxAAAAAJCDPAYAAAAAcpDHAAAAAEAO8hgAAAAAyEEeAwAAAAA5yGMAAAAA
IAd5DAAAAADkII8BAAAAgBzkMQAAAACQgzwGAAAAAHKQxwAAAABADvIYAAAAAMhBHgMAAAAAOchj
AAAAACAHeQwAAAAA5CCPAQAAAIAc5DEAAAAAkIM8BgAAAABykMcAAAAAQA7yGAAAAADIQR4DAAAA
ADnIYwAAAAAgB3kMAAAAAOQgjwEAAACAHOQxAAAAAJCDPAYAAAAAcpDHAAAAAEAO8hgAAAAAyEEe
AwAAAAA5yGMAAAAAIAd5DAAAAADkII8BAAAAgBzkMQAAAACQgzwGAAAAAHKQxwAAAABADvIYAAAA
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
RU5ErkJggg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>157582</attachid>
            <date>2012-08-09 16:59:28 -0700</date>
            <delta_ts>2012-08-09 16:59:28 -0700</delta_ts>
            <desc>completely re-written chrome extension, https://github.com/johnjbarton/testRunner</desc>
            <filename>testRunner.crx</filename>
            <type>application/x-chrome-extension</type>
            <size>37077</size>
            <attacher name="johnjbarton">johnjbarton</attacher>
            
              <data encoding="base64">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
dC9vYmplY3RzLzI2LzdhYzVlMjkwYWMyNDZlOTM4OTk0ZTI5MWQzMDRhZjk5MjJjMWRkAcICPf14
AQG3Akj9YmxvYiA2ODYAiVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IA
rs4c6QAAAAZiS0dEAIAAgACARCiTTQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9wHGRUZ
AcDzSuQAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAACCUlEQVRYw+2WQUsq
URiGH8WBkkEQYRgsyI05bkMI2kwuXLhwEwaRuHLdf5ifYH+gXQTiKhCGoNmICO4CkUEkFUUJ3EwR
yhBji8sN5nbvtbo33My3Ohxe3vPwved8HJ+maUvWWH7WXB6AB+ABrB3AB6wcRJqmfRtA4FdzTdO+
5cA/+a49gsBHRIPBgJubGx4eHhBFEVVV2dvbc2nm8zmGYdDtdnl6ekIQBLa2ttjf3+fq6updlD/X
KwGm0ymVSoVcLkc8Hmc2m1GpVBBFkd3d3TddtVpFlmVKpRKiKLJYLBiNRrRarbf2/y6ClQD1eh1V
VUkmkwDIskw2m6XZbLoA+v0+JycnCIIAQDAYJJFIkEgk/u0ZDofDdyY7OztMJhPXniRJ6LrO4+Pj
/70D8/mccrm80uj4+Bhd1zk/PyccDhONRlEUBUVR8Pv9XwfY2Njg7OyMzc3Nv+oikQiFQoGXlxdm
sxnj8ZhGo4FpmhwdHX09glgshmmaH29pIIAsy6RSKYrFIp1O58fE8/lwHOfzAIeHhxiGQbvdxrZt
bNvm/v6ey8tLl+7i4oK7uzssy8JxHJ6fn2k2m8RiMQDC4TC9Xo/lcvm5CCRJ4vT0lNvbW66vr3Ec
h+3tbQ4ODly6dDpNq9VC13UWiwWhUAhFUcjn8wBkMhlqtRqWZbnmgM/7lHoAHoAH4AGsG+AVb8rB
/+hREgMAAAAASUVORK5CYIIabyfZUEsDBBQAAAAIAAAAAAB8Rd68HgIAABkCAAA2AAAALmdpdC9v
YmplY3RzLzI2LzY2NTM1Y2Y5NDZjMzgyNWQ5NWUwNGM4MTg2YjkyMDJkYjhmMTU3ARkC5v14AWVS
23LaMBDtc75Co5fMlIZbLi30yWDiMBBagxMaOh2PLa9tGVkykgw4nf57ZaBN0r5oZvecs7vaPSET
IfrUbr/7eYYQ5kEOuI+wBqXnJecg8Yc6vwWpqOA11G52jrk84DQ2PP8F7B7IOeU0L3OfpFLk8ArG
3e5RGoEikhb6VNJ0QksIJ1QjylUBRAuJpkElSu2ZBgrtqE5RBGGZJJQnTbQAQOIgV6gIEkCxEUSg
A8pU89ACmaHXUNUD34+d+N5qO8PFxlmMw0vbHQ0s98GyrpyZZQ8H1J0MEtd2ldzf3u1hWg1I9lyN
d3fd1s3mcnk1Xjp2PJJz0R5lhdryqd2Z3PVSxnbCuhp+icqkc+s9KHicdrynR9gvV/PGUDemPcI2
uncTkFQwL0mvh425u5VKdoCXlSPm68kiHvHpLPecj4Ta3qo3c3aWXa3W2sngOWvLQDW8xkyWT89W
d3Yvh9+CBb/cRO7YtlxrcPwnjmCrhWDKrxfx9nb2CfpqkGaqc3aSnFb3V3GKXyi4AJlTVZ9cYdQ3
DkDo++E1az3e4eSMGsGwN3yaA9cBwwfaj9oIBtlB6AeEgCkVMvAlKFFKE+J/ar5/I0OYCK5NOV8B
KSXVlV8IRsnhnEfnXChJ0LkCFp+jo88uYG8k9cj9Vitepwkwnoss4UWQrgHylIcZjwAEgZT8p7n4
M1offUYizIwHX7fAZ79+A07rBKlQSwMEFAAAAAgAAAAAAMqh14jqAAAA5QAAADYAAAAuZ2l0L29i
amVjdHMvNjUvMTA5ZTE2NWNiOGRjYTA0MTM3MDdhMjUyZDU1N2NiYzU5MTcxOTgB5QAa/3gBVZBP
S8QwEMU976cY5ixlreBhz970ICp4EClpO9sO5E/JTFdF/O4maXD1Esi835uXvN6GHq5v9hdfOwD0
xhEeAJVEH1fvKeJlnp8oCgefpX1ztc2c8XxMXHcW2wI79uxW1w1zDI7+yNi2m3UkGSIvWlemJHih
/o4V2MtCg4YI9+YzrPqcAgTeWWcYqV+nif3UwBMRhGIXWMxEcEyGkdSwlaZEAI500hCsdBn4/6fb
Kj0kpZnV2WqpK38d9X5GcKHoWHIVgnBIzQC8ljN1tL2vNpYVpI/EsyOvxmLB3nbfP/pLdJVQSwME
FAAAAAgAAAAAAENli4jkAAAA3wAAADYAAAAuZ2l0L29iamVjdHMvNDkvNmVkNWIzMjg4MTUyMDY1
NzEyYTA0ZGJlMjljMDIxZDJhODZmMDAB3wAg/3gBpZBNbsQgDIW7zil8gGYUfgJkVFU9Q3sCAqaT
KAEEZjG3L5ouOvvKG9vv6dOzXTrPjUBI/UIFERRaw5FLhd6HZQlKa25WKWarDS5BMM4Vs8iHbAtG
AmZ98JYxGVgQ3Yxar7PEwGeObOWrdkYxo9RgG91SgT3d4r7aQinC29Pw8dRfXDrfgQnZS+jZwDjp
aRr6tkcl/BdkqC3nVAhCD0NY6bPF2JFbhK+tbK1eoeajf+RPu+wVUiNIAW50Hq9gvQeXIvX7x4qu
lY3uY07H5u6/Yn2QHm7I9huHH6e/do9QSwMEFAAAAAgAAAAAAEOVkAqLAQAAhgEAADYAAAAuZ2l0
L29iamVjdHMvYzUvY2JkMDk2YTA5OTcxZDgxZTJkNjMwZDlhYTZiMWFmMTM5MzA4YzIBhgF5/ngB
KylKTVUwsbRgMDQwMDMxUQhydXTxddUrqShh8G++t3N7mEuxkVTr+pafksXMdx9HQ1XlZCan5hWn
gpV1rjv0g4Hpzceze5IsOid/n3Qk+ukhqLLcxLzMtNTiEr2s4vw8BrW04JifboebYqc+8Gls26mg
u+NjOFRhfkFJZn5esV5GSW4Ow6WcCtVNb84eCn79e8fVoIzQG7MkE6DqijOLMkuLQ4BGBpXm5aUW
uaSWleTn5xQHJKanQjS//2L7dX6YYeLD+VY2H+bmWEfVMXJANZcAtcE0AF3EoDHtzx62TQLblptI
G9+/bF90S2XTEiSlEBtAChfMOjabrVk4ftXcXI3lGronolL3s2AohJmMcMq5rzf27n9hIfOfz79w
z/7VosXi87wxtHkm5+fpFeSlM6hVHX00YY1K3uTOKY8mXmZZP1Pp4F0M1QGJeak5EI/aZ/6fLljG
cKfnRxbbyWdL4/qy7J/jUA/0ggzX7/e9h3Y/ur9w0143P9V5D6Lu7wUABlDRWlBLAwQUAAAACAAA
AAAA294KxIoBAACFAQAANgAAAC5naXQvb2JqZWN0cy82ZS9hODJlMjQ2ZWRkZjk5ZjY3NzI4YjQz
NWE3OGU5ZjMxMjI2MWFlMgGFAXr+eAErKUpNVTCxtGAwNDAwMzFRCHJ1dPF11SupKGHwb763c3uY
S7GRVOv6lp+Sxcx3H0dDVeVkJqfmFaeClXWuO/SDgenNx7N7kiw6J3+fdCT66SGostzEvMy01OIS
vazi/DwGtbTgmJ9uh5tipz7waWzbqaC742M4VGF+QUlmfl6xXkZJbg7DpZwK1U1vzh4Kfv17x9Wg
jNAbsyQToOqKM4syS4tDgEYGleblpRa5pJaV5OfnFAckpqdCNL//Yvt1fphh4sP5VjYf5uZYR9Ux
ckA1lwC1wTQAXcTw2rUouX7H9TAOz13ddzi+zHKPee+HpBRiA0jhglnHZrM1C8evmpursVxD90RU
6n4WDIUwkxFOOff1xt79Lyxk/vP5F+7Zv1q0WHyeN4Y2z+T8PL2CvHQGtaqjjyasUcmb3Dnl0cTL
LOtnKh28i6E6IDEvNQfi0cj9c1zcv24X/Vy/Lj/wt/LBpEMtW3CoB3qhaXvdJ7lFM/14T396t/fL
zviu5OKXAKo/0o9QSwMEFAAAAAgAAAAAABXMJmf6AAAA9QAAADYAAAAuZ2l0L29iamVjdHMvODIv
Yjc3ZWYyMWVhMjk5NGUwZGNiZjJlZWJkZjRiOTVmOGE2MzczZTkB9QAK/3gBZZDBSgMxEIY95ymG
vexWSmIVelAEUasIeqr3spuMu6nZzJrMthTx3c3qlko9DATm/79vSOWogov5/EQpeCSqHcLt8h6c
1egjQsPcXSqlyaCsf9ZSU6t+n6sqmtWYlA23TiTIHXW7YOuG4fxsNtszn7yWsKbGr6syMPmbA0yI
t95rtuQhoKPSPFB4xcjW18UEPgXA1npDW9lR5BeMsayxyI6j2RSy02xyJb6EGPOlMYsNen62kdFj
KPKBnk9h7xvxmzJA6P3gXDiGazCk+zYV5UePYbdEh5op1eWYypMG/lTkf5NO3/KeVMdnDgemEd+M
noDbUEsDBBQAAAAIAAAAAADnYpw9xwMAAMIDAAA2AAAALmdpdC9vYmplY3RzL2ViLzQ1NzI2Mzdm
YjhkNzU2MDg0OWJhOGJkYzA4ZjQ5YTQ3NWNlZjRlAcIDPfx4AZVW227bRhDts75iSqAQFSUrO8hD
4cBAbk5qIGmC2IADtIFBcYcXZ7XL7i4lF4H+PbMXSiTNFKgeBHl2Lmdmzsx4LdQanj47/f2X1Qre
KVUKhFdXb0DUOUqDUFnbnK1WueLISv/McrVZhZ+3a8Nvoyar7EbMyMlr1fyr67Ky8PTk9LTzeSlz
BneqknfrTFslXxydzXIljRLIhCrTxKKxb3BrlRIG1ljW0sBvKnkMeaXVBhfPZ7NtpkGjUBlH/lbp
a7KoZQnnUGTCICkUrcxtrSQ4Hff8uZUS9VWu68amC/g+A3BO7itNVhJ38OXD+z8o08/4T0vqKUUB
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
ZjBmNWUBegCF/3gBXY4xDsIwFEOZc4p/gkgMPQESExPiAgl1aaUQl/yflt6edGHoaj0/OyZGOXfd
6TIWviE9FiOTCr6GrBOzGFsa60uOyC1srPaAmnp3ZZGqkLjtDiTOKCocji3v3B2fOhWoBJmDPUf0
sjR432r8/8HQjJmrdz8I6TscUEsDBBQAAAAIAAAAAADCO5ekdQAAAHAAAAA2AAAALmdpdC9vYmpl
Y3RzLzU5L2JmOWM0NDQ3ZjViNzE1ZjM3ZmFlNmY1MWZiMjNjMTYyYzI4NGI0AXAAj/94ASWNMQ6D
MAxFO+cUFgtbIyYW4zOgqhcgIRKg4FSxM3B7UrL94b33XUwOhmF84aZnJIPi8/5TkOynToPopzCH
PC8c4vuQjtA2goxBl9aLDAC6opoYfFxEpj4X/lazp+rCf6FtQM3b5qB97m56mipSUEsDBBQAAAAI
AAAAAACtP0RdSwEAAEYBAAA2AAAALmdpdC9vYmplY3RzLzdkLzI4YTZiMWUwYmVhYjZkMWUyYjA4
MjlmMzc5NGNkYzJlZmFiMTU0AUYBuf54ASspSk1VMLY0YzA0MDAzMVEIcnV08XXVK6koYfBvvrdz
e5hLsZFU6/qWn5LFzHcfR0NV5WQmp+YVp4KVda479IOB6c3Hs3uSLDonf590JPrpIaiy3MS8zLTU
4hK9rOL8PIZUgXliMTvuLHA0Z18UdDX89NGJhTOgCvMLSjLz84r1Mkpycxgu5VSobnpz9lDw6987
rgZlhN6YJZkAVVcCNMwltawkPz+nGGgoQ32j2huxP6eXcrm3P7//TPH9ikUL1JCUBpXm5aUWwTQE
JKanQmx4yuZ6XtqG3bR3p1zgsV96UeyT+xowtHkm5+fpFeSlM6hVHX00YY1K3uTOKY8mXmZZP1Pp
4F0M1QGJeak5ENMj989xcf+6XfRz/br8wN/KB5MOtWzBoR7ohabtdZ/kFs304z396d3eLzvju5KL
XwIAnRioyVBLAwQUAAAACAAAAAAApzHMOlUAAABQAAAANgAAAC5naXQvb2JqZWN0cy9jZS9mNWQ4
YmRiZmU4MzgxY2ZmMGU0ZjcxYmNiZmFiMTU3MzE3OWU0YgFQAK//eAFLyslPUrA0YLDJKMnNsePl
sslITUwB0cXJRZkFJQrFRcm2SiWpxSUuqWUl+fk5xXpZxUp2NvoQaZBCfZiOpPyUSqAMmAKLQ0wE
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
AAAAAAAAnR8AAC5naXQvb2JqZWN0cy84OS85NWI5ODA5ZjNkMzkyNDk3ZWE2YmY3MTQ1YWRiOWQ1
YzI4ZDFkZlBLAQIAABQAAAAIAAAAAAAXXvxzWgMAAFUDAAA2AAAAAAAAAAAAAAAAAHIgAAAuZ2l0
L29iamVjdHMvODkvYWVjMmY4MDAwMmVjZjFjZGJjNjIzODg5OTNmNzkyYzQ1YmU1YzJQSwECAAAU
AAAACAAAAAAA+V6GcjoDAAA1AwAANgAAAAAAAAAAAAAAAAAgJAAALmdpdC9vYmplY3RzLzFjLzBh
ZmJlZjhkYzJiYmUyZGZhMWIyYmQ0NjRlMjU5ZWUwNWFkZmJkUEsBAgAAFAAAAAgAAAAAAEoyCDHi
AAAA3QAAADYAAAAAAAAAAAAAAAAAricAAC5naXQvb2JqZWN0cy84Ni9lZWMzZDY0ZTcyMzliOWI2
YzYyZWIyYmYyZDFlODdiYzNhZjUzY1BLAQIAABQAAAAIAAAAAABVyBvUFwEAABIBAAA2AAAAAAAA
AAAAAAAAAOQoAAAuZ2l0L29iamVjdHMvZTkvZjkzMzVhZjRiNjExNTc0MDU2Yzk5NDhjMGEwOThi
NGJhMzEzNzlQSwECAAAUAAAACAAAAAAAfQSDfEsBAABGAQAANgAAAAAAAAAAAAAAAABPKgAALmdp
dC9vYmplY3RzL2FkLzc2ZGRjMDYxZDE3NDU3YjE2MzZlNDI2ZWM0Yjg5ZWFkNGZiNDQ3UEsBAgAA
FAAAAAgAAAAAADkdoAK7AAAAtgAAADYAAAAAAAAAAAAAAAAA7isAAC5naXQvb2JqZWN0cy8xYS9k
ZmRhMTE0ZjFmMzY3N2U3N2I1NGVmMjUyZTFiMmI3Yzg2MTg2NlBLAQIAABQAAAAIAAAAAAB6TtnZ
xwIAAMICAAA2AAAAAAAAAAAAAAAAAP0sAAAuZ2l0L29iamVjdHMvMjYvN2FjNWUyOTBhYzI0NmU5
Mzg5OTRlMjkxZDMwNGFmOTkyMmMxZGRQSwECAAAUAAAACAAAAAAAfEXevB4CAAAZAgAANgAAAAAA
AAAAAAAAAAAYMAAALmdpdC9vYmplY3RzLzI2LzY2NTM1Y2Y5NDZjMzgyNWQ5NWUwNGM4MTg2Yjky
MDJkYjhmMTU3UEsBAgAAFAAAAAgAAAAAAMqh14jqAAAA5QAAADYAAAAAAAAAAAAAAAAAijIAAC5n
aXQvb2JqZWN0cy82NS8xMDllMTY1Y2I4ZGNhMDQxMzcwN2EyNTJkNTU3Y2JjNTkxNzE5OFBLAQIA
ABQAAAAIAAAAAABDZYuI5AAAAN8AAAA2AAAAAAAAAAAAAAAAAMgzAAAuZ2l0L29iamVjdHMvNDkv
NmVkNWIzMjg4MTUyMDY1NzEyYTA0ZGJlMjljMDIxZDJhODZmMDBQSwECAAAUAAAACAAAAAAAQ5WQ
CosBAACGAQAANgAAAAAAAAAAAAAAAAAANQAALmdpdC9vYmplY3RzL2M1L2NiZDA5NmEwOTk3MWQ4
MWUyZDYzMGQ5YWE2YjFhZjEzOTMwOGMyUEsBAgAAFAAAAAgAAAAAANveCsSKAQAAhQEAADYAAAAA
AAAAAAAAAAAA3zYAAC5naXQvb2JqZWN0cy82ZS9hODJlMjQ2ZWRkZjk5ZjY3NzI4YjQzNWE3OGU5
ZjMxMjI2MWFlMlBLAQIAABQAAAAIAAAAAAAVzCZn+gAAAPUAAAA2AAAAAAAAAAAAAAAAAL04AAAu
Z2l0L29iamVjdHMvODIvYjc3ZWYyMWVhMjk5NGUwZGNiZjJlZWJkZjRiOTVmOGE2MzczZTlQSwEC
AAAUAAAACAAAAAAA52KcPccDAADCAwAANgAAAAAAAAAAAAAAAAALOgAALmdpdC9vYmplY3RzL2Vi
LzQ1NzI2MzdmYjhkNzU2MDg0OWJhOGJkYzA4ZjQ5YTQ3NWNlZjRlUEsBAgAAFAAAAAgAAAAAANWk
qz3IAQAAwwEAADYAAAAAAAAAAAAAAAAAJj4AAC5naXQvb2JqZWN0cy9hMC85YWM2OWIwNjgzMTM1
ZmFhOWQ2ZDI4YTcyODJkYzg1YTY1YmYwNFBLAQIAABQAAAAIAAAAAAB8f743kAMAAIsDAAA2AAAA
AAAAAAAAAAAAAEJAAAAuZ2l0L29iamVjdHMvN2YvODEyNmVjMTZmY2NiYTUwYTQ3ODdlN2RmZTYy
MWVmYThhMmEwMjZQSwECAAAUAAAACAAAAAAAHUc4WQcCAAACAgAANgAAAAAAAAAAAAAAAAAmRAAA
LmdpdC9vYmplY3RzL2QyLzZjNzgyNWIyZWNjZGMyNTNlYmZiYjhkNTUyNjg1NWQ4OWExOTYwUEsB
AgAAFAAAAAgAAAAAANuqiyUlAQAAIAEAADYAAAAAAAAAAAAAAAAAgUYAAC5naXQvb2JqZWN0cy9l
Zi9mNDNkZjU5ZjU2MzE2MWUxOWYzYTNjZjA5ZDZjM2I1YTdlMDEwOFBLAQIAABQAAAAIAAAAAABZ
FvFZAQEAAPwAAAA2AAAAAAAAAAAAAAAAAPpHAAAuZ2l0L29iamVjdHMvMjgvOTZmY2JjMDZiMjEw
YjZhNzM0MWIzM2RmZDMzZjcyZGEyNGIyYTRQSwECAAAUAAAACAAAAAAAE1Q9s38AAAB6AAAANgAA
AAAAAAAAAAAAAABPSQAALmdpdC9vYmplY3RzLzM3L2RlNTUxYWIzYWMyMmQzYTZhNjNmOGZiNDkx
ZmI3ZDE2MWYwZjVlUEsBAgAAFAAAAAgAAAAAAMI7l6R1AAAAcAAAADYAAAAAAAAAAAAAAAAAIkoA
AC5naXQvb2JqZWN0cy81OS9iZjljNDQ0N2Y1YjcxNWYzN2ZhZTZmNTFmYjIzYzE2MmMyODRiNFBL
AQIAABQAAAAIAAAAAACtP0RdSwEAAEYBAAA2AAAAAAAAAAAAAAAAAOtKAAAuZ2l0L29iamVjdHMv
N2QvMjhhNmIxZTBiZWFiNmQxZTJiMDgyOWYzNzk0Y2RjMmVmYWIxNTRQSwECAAAUAAAACAAAAAAA
pzHMOlUAAABQAAAANgAAAAAAAAAAAAAAAACKTAAALmdpdC9vYmplY3RzL2NlL2Y1ZDhiZGJmZTgz
ODFjZmYwZTRmNzFiY2JmYWIxNTczMTc5ZTRiUEsBAgAAFAAAAAgAAAAAAMX3KcHpAAAA5AAAADYA
AAAAAAAAAAAAAAAAM00AAC5naXQvb2JqZWN0cy8zZi82OWZmOTcxMTc2MDBkYzhjZjg2YTA2Yzll
NmE1NWU4ZTZhM2ZlN1BLAQIAABQAAAAIAAAAAAAhCke4sAAAAKsAAAA2AAAAAAAAAAAAAAAAAHBO
AAAuZ2l0L29iamVjdHMvNGYvODNkZWI5Yjc1NjQ0NzMzMjFhODVhZjg0ZjkxOTczMDNkZGUzNWJQ
SwECAAAUAAAACAAAAAAAykSzx1MCAABOAgAANgAAAAAAAAAAAAAAAAB0TwAALmdpdC9vYmplY3Rz
L2U1LzA2NDVjZjFiM2MwNzM1OGRiOTFlNTFjNmZhMmU1YTA3OTM4ZTgwUEsBAgAAFAAAAAgAAAAA
AAAAAAACAAAAAAAAAA8AAAAAAAAAAAAAAAAAG1IAAC5naXQvcmVmcy90YWdzL1BLAQIAABQAAAAI
AAAAAAAAAAAAAgAAAAAAAAAQAAAAAAAAAAAAAAAAAEpSAAAuZ2l0L3JlZnMvaGVhZHMvUEsBAgAA
FAAAAAgAAAAAAAAAAAACAAAAAAAAABIAAAAAAAAAAAAAAAAAelIAAC5naXQvcmVmcy9yZW1vdGVz
L1BLAQIAABQAAAAIAAAAAAAAAAAAAgAAAAAAAAAZAAAAAAAAAAAAAAAAAKxSAAAuZ2l0L3JlZnMv
cmVtb3Rlcy9vcmlnaW4vUEsBAgAAFAAAAAgAAAAAAM1SZc0qAAAAKQAAAB8AAAAAAAAAAQAAAAAA
5VIAAC5naXQvcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXJQSwECAAAUAAAACAAAAAAAzVJlzSoA
AAApAAAAFgAAAAAAAAABAAAAAABMUwAALmdpdC9yZWZzL2hlYWRzL21hc3RlclBLAQIAABQAAAAI
AAAAAABD8BSmYAEAACUDAAAOAAAAAAAAAAEAAAAAAKpTAAAuZ2l0L2xvZ3MvSEVBRFBLAQIAABQA
AAAIAAAAAAAAAAAAAgAAAAAAAAAPAAAAAAAAAAAAAAAAADZVAAAuZ2l0L2xvZ3MvcmVmcy9QSwEC
AAAUAAAACAAAAAAAAAAAAAIAAAAAAAAAFQAAAAAAAAAAAAAAAABlVQAALmdpdC9sb2dzL3JlZnMv
aGVhZHMvUEsBAgAAFAAAAAgAAAAAAAAAAAACAAAAAAAAABcAAAAAAAAAAAAAAAAAmlUAAC5naXQv
bG9ncy9yZWZzL3JlbW90ZXMvUEsBAgAAFAAAAAgAAAAAAAAAAAACAAAAAAAAAB4AAAAAAAAAAAAA
AAAA0VUAAC5naXQvbG9ncy9yZWZzL3JlbW90ZXMvb3JpZ2luL1BLAQIAABQAAAAIAAAAAABV22Ip
7QAAAG8CAAAkAAAAAAAAAAEAAAAAAA9WAAAuZ2l0L2xvZ3MvcmVmcy9yZW1vdGVzL29yaWdpbi9t
YXN0ZXJQSwECAAAUAAAACAAAAAAAQ/AUpmABAAAlAwAAGwAAAAAAAAABAAAAAAA+VwAALmdpdC9s
b2dzL3JlZnMvaGVhZHMvbWFzdGVyUEsBAgAAFAAAAAgAAAAAAHc9zSGtAAAA8AAAABEAAAAAAAAA
AQAAAAAA11gAAC5naXQvaW5mby9leGNsdWRlUEsBAgAAFAAAAAgAAAAAAAMdQivpBwAAaxMAABwA
AAAAAAAAAQAAAAAAs1kAAC5naXQvaG9va3MvcHJlLXJlYmFzZS5zYW1wbGVQSwECAAAUAAAACAAA
AAAAmgz3wIoAAAC9AAAAHQAAAAAAAAABAAAAAADWYQAALmdpdC9ob29rcy9wb3N0LXVwZGF0ZS5z
YW1wbGVQSwECAAAUAAAACAAAAAAAYPeRWAoBAADEAQAAIAAAAAAAAAABAAAAAACbYgAALmdpdC9o
b29rcy9hcHBseXBhdGNoLW1zZy5zYW1wbGVQSwECAAAUAAAACAAAAAAAHCVbOf0AAACOAQAAIAAA
AAAAAAABAAAAAADjYwAALmdpdC9ob29rcy9wcmUtYXBwbHlwYXRjaC5zYW1wbGVQSwECAAAUAAAA
CAAAAAAAFVK8rXYEAAAbDgAAGAAAAAAAAAABAAAAAAAeZQAALmdpdC9ob29rcy91cGRhdGUuc2Ft
cGxlUEsBAgAAFAAAAAgAAAAAAO0fcNmeAwAAqAYAABwAAAAAAAAAAQAAAAAAymkAAC5naXQvaG9v
a3MvcHJlLWNvbW1pdC5zYW1wbGVQSwECAAAUAAAACAAAAAAAFwK9vpcCAADXBAAAJAAAAAAAAAAB
AAAAAACibQAALmdpdC9ob29rcy9wcmVwYXJlLWNvbW1pdC1tc2cuc2FtcGxlUEsBAgAAFAAAAAgA
AAAAAOn4yhD3AQAAgAMAABwAAAAAAAAAAQAAAAAAe3AAAC5naXQvaG9va3MvY29tbWl0LW1zZy5z
YW1wbGVQSwUGAAAAAGQAZADhHAAArHIAAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157745</attachid>
            <date>2012-08-10 09:26:34 -0700</date>
            <delta_ts>2012-08-13 05:29:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92429-20120810202605.patch</filename>
            <type>text/plain</type>
            <size>20707</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1Mjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTAxMTk5YWRhNTI0OTJh
YTY0YmM2Y2E3Mzk1NDk5N2RhYTdjYWUwZS4uY2NhMjJlYmFlNzA2OTRlZjQ5MWU5YTNjYTFlY2I4
MmY5Y2U2N2E3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIxIEBACiAyMDEyLTA4LTEwICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEFkZCBzdXBwb3J0IGZvciBkZWJ1Z2dpbmcgSW5zcGVjdG9yIExheW91dFRlc3RzIHcvSW5z
cGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MjQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3RDb250cm9sbGVyIG5vdyBub3RpZmllcyBlbWJlZGRlciB1cG9uIGxvYWRlZC4KKworICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGVzdENvbnRyb2xsZXIuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGVzdENvbnRyb2xsZXIubG9hZENvbXBsZXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCk6CisgICAgICAgICgub25UZXN0RnJhbWV3b3JrTWVz
c2FnZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisKKzIw
MTItMDgtMTAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogcmVuZGVyIGFycmF5cyBhcyBkaXIgaW4gY2FzZSB0aGV5IHdlcmUg
bG9nZ2VkIGludG8gY29uc29sZSBwcmlvciB0byB0aGUgZnJvbnQtZW5kIG9wZW5pbmcuCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzcxMwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rlc3RDb250cm9sbGVy
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXN0Q29udHJvbGxlci5q
cwppbmRleCAyMGU5YzRhNzUwZGRlMzAzMTYyZWE4NmI0N2FmMjY5ZTcyM2RlZTc3Li4xODFjYWY4
ZWYyMDcxNDJlZjgzNjg1ZDZlYTVhNGU0MzQ2MmRlZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rlc3RDb250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGVzdENvbnRyb2xsZXIuanMKQEAgLTM1LDEyICsz
NSwxNiBAQCBXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIgPSBmdW5jdGlvbigpCiB7CiB9CiAK
LVdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlci5wcm90b3R5cGUgPSB7Ci0gICAgbm90aWZ5RG9u
ZTogZnVuY3Rpb24oY2FsbElkLCByZXN1bHQpCi0gICAgewotICAgICAgICB2YXIgbWVzc2FnZSA9
IHR5cGVvZiByZXN1bHQgPT09ICJ1bmRlZmluZWQiID8gIlwiPHVuZGVmaW5lZD5cIiIgOiBKU09O
LnN0cmluZ2lmeShyZXN1bHQpOwotICAgICAgICBSdW50aW1lQWdlbnQuZXZhbHVhdGUoImRpZEV2
YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoIiArIGNhbGxJZCArICIsICIgKyBtZXNzYWdlICsgIiki
LCAidGVzdCIpOwotICAgIH0KK1dlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
ID0gZnVuY3Rpb24oY2FsbElkLCByZXN1bHQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSB0eXBlb2Yg
cmVzdWx0ID09PSAidW5kZWZpbmVkIiA/ICJcIjx1bmRlZmluZWQ+XCIiIDogSlNPTi5zdHJpbmdp
ZnkocmVzdWx0KTsKKyAgICBSdW50aW1lQWdlbnQuZXZhbHVhdGUoImRpZEV2YWx1YXRlRm9yVGVz
dEluRnJvbnRlbmQoIiArIGNhbGxJZCArICIsICIgKyBtZXNzYWdlICsgIikiLCAidGVzdCIpOwor
fQorCitXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIubG9hZENvbXBsZXRlZCA9IGZ1bmN0aW9u
KCkKK3sKKyAgICBpZiAod2luZG93Lm9wZW5lcikKKyAgICAgICAgd2luZG93Lm9wZW5lci5wb3N0
TWVzc2FnZSgiZnJvbnRlbmRMb2FkZWQiLCAiKiIpOwogfQogCiBXZWJJbnNwZWN0b3IuZXZhbHVh
dGVGb3JUZXN0SW5Gcm9udGVuZCA9IGZ1bmN0aW9uKGNhbGxJZCwgc2NyaXB0KQpAQCAtNDksMTAg
KzUzLDE5IEBAIFdlYkluc3BlY3Rvci5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kID0gZnVuY3Rp
b24oY2FsbElkLCBzY3JpcHQpCiAgICAgewogICAgICAgICB0cnkgewogICAgICAgICAgICAgdmFy
IHJlc3VsdCA9IHdpbmRvdy5ldmFsKHNjcmlwdCk7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
VGVzdENvbnRyb2xsZXIucHJvdG90eXBlLm5vdGlmeURvbmUoY2FsbElkLCByZXN1bHQpOworICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoY2FsbElkLCBy
ZXN1bHQpOwogICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
VGVzdENvbnRyb2xsZXIucHJvdG90eXBlLm5vdGlmeURvbmUoY2FsbElkLCBlLnRvU3RyaW5nKCkp
OworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoY2Fs
bElkLCBlLnRvU3RyaW5nKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIEluc3BlY3RvckJhY2tl
bmQucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhpbnZva2VNZXRob2QpOworfTsKKworaWYgKHdp
bmRvdy5vcGVuZXIpIHsKKyAgICBmdW5jdGlvbiBvblRlc3RGcmFtZXdvcmtNZXNzYWdlKGV2ZW50
KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LmRhdGEuY29tbWFuZCA9PT0gImV2YWx1YXRlSW5X
ZWJJbnNwZWN0b3IiKQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmV2YWx1YXRlRm9yVGVzdElu
RnJvbnRlbmQoZXZlbnQuZGF0YS5jYWxsSWQsIGV2ZW50LmRhdGEuc2NyaXB0KTsKKyAgICB9Cisg
ICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBvblRlc3RGcmFtZXdvcmtNZXNz
YWdlLCB0cnVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuanMKaW5kZXggYTM5MjQ2YmI4NTA5MTA4ZjUxYzZhMTc1YjUyOTE2NDZiMzliNjZl
NS4uNDViYmMyNmMzYmUxYzNmNzQ4Mzk3OGUxODUyY2JjMGU2MTQxNTUxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTUzNiw2ICs1
MzYsNyBAQCBXZWJJbnNwZWN0b3IuX2RvTG9hZGVkRG9uZVdpdGhDYXBhYmlsaXRpZXMgPSBmdW5j
dGlvbigpCiAgICAgdGhpcy5kb21BZ2VudC5fZW11bGF0ZVRvdWNoRXZlbnRzQ2hhbmdlZCgpOwog
CiAgICAgV2ViSW5zcGVjdG9yLldvcmtlck1hbmFnZXIubG9hZENvbXBsZXRlZCgpOworICAgIFdl
Ykluc3BlY3Rvci5UZXN0Q29udHJvbGxlci5sb2FkQ29tcGxldGVkKCk7CiAgICAgSW5zcGVjdG9y
RnJvbnRlbmRBUEkubG9hZENvbXBsZXRlZCgpOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODkxMDA2MGM2MjFlNjA0
M2I5ZjdkN2Q3NTZkMGQ2NWM1OTQzY2U4Ni4uMTNjNDM4MDBkMTgyNmEyNTUzNTJhZjgyZTU2NTU0
NjEzNGQ5NTZkNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIxIEBACiAyMDEyLTA4LTEwICBQYXZlbCBGZWxk
bWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFk
ZCBzdXBwb3J0IGZvciBkZWJ1Z2dpbmcgSW5zcGVjdG9yIExheW91dFRlc3RzIHcvSW5zcGVjdG9y
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjQyOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGpz
ZGlmZmxpYidzIHZpZXcgKEJTRCkgZm9yIHN0YW5kYWxvbmUgaW5zcGVjdG9yIHRlc3QgcnVubmlu
ZyBhbmQgZGlmZmluZy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rv
ci10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0KToKKyAgICAgICAg
KC4pOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9qc2RpZmZsaWIv
UkVBRE1FLmFzY2lpZG9jOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9y
ZXNvdXJjZXMvanNkaWZmbGliL2RpZmZ2aWV3LmNzczogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZmdmlldy5qczogQWRkZWQuCisK
KzIwMTItMDgtMTAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogcmVuZGVyIGFycmF5cyBhcyBkaXIgaW4gY2FzZSB0aGV5IHdl
cmUgbG9nZ2VkIGludG8gY29uc29sZSBwcmlvciB0byB0aGUgZnJvbnQtZW5kIG9wZW5pbmcuCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzcxMwogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVz
dC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Lmpz
CmluZGV4IDk2MTMxMGRlOTU4MzQ2YjdjMjE0YzJkOTFjMTMxNjM5ZjRkMDc3ODYuLmI3OGQ5MDgw
YjBmOTkxZDA3ODY3YzUxYTQ1NDM1NTU4NTEyZjJjNmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCkBAIC0zNjksNyArMzY5LDcg
QEAgSW5zcGVjdG9yVGVzdC50ZXh0Q29udGVudFdpdGhMaW5lQnJlYWtzID0gZnVuY3Rpb24obm9k
ZSkKICAgICByZXR1cm4gYnVmZmVyOwogfQogCi19OworfTsgLy8gaW5pdGlhbGl6ZV9JbnNwZWN0
b3JUZXN0CiAKIHZhciBydW5UZXN0Q2FsbElkID0gMDsKIHZhciBjb21wbGV0ZVRlc3RDYWxsSWQg
PSAxOwpAQCAtNTE1LDMgKzUxNSwxMDkgQEAgZnVuY3Rpb24gY2xlYXJPdXRwdXQoKQogICAgICAg
ICBvdXRwdXRFbGVtZW50ID0gbnVsbDsKICAgICB9CiB9CisKK2Z1bmN0aW9uIFN0YW5kYWxvbmVU
ZXN0UnVubmVyKCkKK3sKKyAgICB0aGlzLl9wZW5kaW5nTWVzc2FnZXMgPSBbXTsKKyAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHRoaXMuX29uTWVzc2FnZS5iaW5kKHRoaXMp
LCB0cnVlKTsKKyAgICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0
Iik7CisgICAgdmFyIHNlbGYgPSB0aGlzOworICAgIGZ1bmN0aW9uIHJlbW90ZURlYnVnZ2luZ0hh
bmRzaGFrZShkYXRhKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoZGF0YVtpXS51cmwgIT09IHdpbmRvdy5sb2Nh
dGlvbi5ocmVmKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgc2VsZi5f
aW5zcGVjdG9yV2luZG93ID0gd2luZG93Lm9wZW4oImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sP3dzPWxvY2FsaG9z
dDo5MjIyL2RldnRvb2xzL3BhZ2UvNF8xIiwgdW5kZWZpbmVkLCAibG9jYXRpb249MCIpOworICAg
ICAgICAgICAgY29uc29sZS5sb2coImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sPyIgKyBkYXRhW2ldLndlYlNvY2tl
dERlYnVnZ2VyVXJsKTsKKyAgICAgICAgfSAgICAgICAKKyAgICB9CisgICAgd2luZG93LnJlbW90
ZURlYnVnZ2luZ0hhbmRzaGFrZSA9IHJlbW90ZURlYnVnZ2luZ0hhbmRzaGFrZTsKKyAgICBzY3Jp
cHQuc3JjID0gImh0dHA6Ly9sb2NhbGhvc3Q6OTIyMi9qc29uP2pzb25wPXJlbW90ZURlYnVnZ2lu
Z0hhbmRzaGFrZSI7CisgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpCit9CisK
K1N0YW5kYWxvbmVUZXN0UnVubmVyLnByb3RvdHlwZSA9IHsKKyAgICBkdW1wQXNUZXh0OiBmdW5j
dGlvbigpCisgICAgeworICAgIH0sCisKKyAgICB3YWl0VW50aWxEb25lOiBmdW5jdGlvbigpCisg
ICAgeworICAgIH0sCisKKyAgICBjbG9zZVdlYkluc3BlY3RvcjogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5faW5zcGVjdG9yV2luZG93LmNsb3NlKCk7CisgICAgfSwKKworICAgIG5v
dGlmeURvbmU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBhY3R1YWwgPSBkb2N1bWVu
dC5ib2R5LmlubmVyVGV4dCArICJcbiI7CisgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dC5pbm5lckhUTUwgPSAiIjsKKworICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0
KCk7CisgICAgICAgIHZhciBocmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWY7CisgICAgICAgIHZh
ciBleHQgPSBocmVmLmxhc3RJbmRleE9mKCIuIik7CisgICAgICAgIHhoci5vcGVuKCJHRVQiLCBo
cmVmLnN1YnN0cmluZygwLCBleHQpICsgIi1leHBlY3RlZC50eHQiLCBmYWxzZSk7CisgICAgICAg
IHhoci5zZW5kKG51bGwpOworICAgICAgICB2YXIgZXhwZWN0ZWQgPSB4aHIucmVzcG9uc2VUZXh0
OworCisgICAgICAgIGNvbnN0IGJhc2VEaXIgPSAiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlcy9qc2RpZmZsaWIvIjsKKyAgICAgICAgdmFyIHN0eWxlc2hlZXQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7CisgICAgICAgIHN0eWxlc2hlZXQucmVsID0g
InN0eWxlc2hlZXQiOworICAgICAgICBzdHlsZXNoZWV0LnR5cGUgPSAidGV4dC9jc3MiOworICAg
ICAgICBzdHlsZXNoZWV0LmhyZWYgPSBiYXNlRGlyICsgImRpZmZ2aWV3LmNzcyI7CisgICAgICAg
IGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVzaGVldCk7CisKKyAgICAgICAgdmFyIHNj
cmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOworICAgICAgICBzY3JpcHQu
c3JjID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2pzZGlmZmxpYi5qcyI7CisgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQo
c2NyaXB0KTsKKworICAgICAgICBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3Jp
cHQiKTsKKyAgICAgICAgc2NyaXB0LnNyYyA9IGJhc2VEaXIgKyAiZGlmZnZpZXcuanMiOworICAg
ICAgICBzY3JpcHQub25sb2FkID0gdmlld2VyTG9hZGVkOworICAgICAgICBkb2N1bWVudC5oZWFk
LmFwcGVuZENoaWxkKHNjcmlwdCk7CisKKyAgICAgICAgZnVuY3Rpb24gdmlld2VyTG9hZGVkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGJhc2VMaW5lcyA9IGRpZmZsaWIuc3RyaW5nQXNM
aW5lcyhleHBlY3RlZCk7CisgICAgICAgICAgICB2YXIgbmV3TGluZXMgPSAgZGlmZmxpYi5zdHJp
bmdBc0xpbmVzKGFjdHVhbCk7CisgICAgICAgICAgICB2YXIgc2VxdWVuY2VNYXRjaGVyID0gbmV3
IGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyKGJhc2VMaW5lcywgbmV3TGluZXMpOworICAgICAgICAg
ICAgdmFyIGRpZmZWaWV3ID0gZGlmZnZpZXcuYnVpbGRWaWV3KHsKKyAgICAgICAgICAgICAgICBi
YXNlVGV4dExpbmVzOiBiYXNlTGluZXMsCisgICAgICAgICAgICAgICAgbmV3VGV4dExpbmVzOiBu
ZXdMaW5lcywKKyAgICAgICAgICAgICAgICBvcGNvZGVzOiBzZXF1ZW5jZU1hdGNoZXIuZ2V0X29w
Y29kZXMoKSwKKyAgICAgICAgICAgICAgICBjb250ZXh0U2l6ZTogMywKKyAgICAgICAgICAgICAg
ICB2aWV3VHlwZTogMQorICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGRpZmZWaWV3KTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBldmFsdWF0
ZUluV2ViSW5zcGVjdG9yOiBmdW5jdGlvbihjYWxsSWQsIHNjcmlwdCkKKyAgICB7CisgICAgICAg
IHZhciBtZXNzYWdlID0ge2NvbW1hbmQ6ICJldmFsdWF0ZUluV2ViSW5zcGVjdG9yIiwgY2FsbElk
OiBjYWxsSWQsIHNjcmlwdDogc2NyaXB0fTsKKyAgICAgICAgaWYgKHRoaXMuX2lzTG9hZGVkKQor
ICAgICAgICAgICAgdGhpcy5fcG9zdE1lc3NhZ2VzKFttZXNzYWdlXSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdNZXNzYWdlcy5wdXNoKG1lc3NhZ2UpOworICAgIH0s
CisKKyAgICBfb25NZXNzYWdlOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmIChl
dmVudC5kYXRhID09PSAiZnJvbnRlbmRMb2FkZWQiKSB7CisgICAgICAgICAgICB0aGlzLl9pc0xv
YWRlZCA9IHRydWU7CisgICAgICAgICAgICB0aGlzLl9wb3N0TWVzc2FnZXModGhpcy5fcGVuZGlu
Z01lc3NhZ2VzKTsKKyAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdNZXNzYWdlcyA9IFtdOworICAg
ICAgICB9CisgICAgfSwKKworICAgIF9wb3N0TWVzc2FnZXM6IGZ1bmN0aW9uKG1lc3NhZ2VzKQor
ICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXNzYWdlcy5sZW5ndGg7ICsraSkK
KyAgICAgICAgICAgIHRoaXMuX2luc3BlY3RvcldpbmRvdy5wb3N0TWVzc2FnZShtZXNzYWdlc1tp
XSwgIioiKTsKKyAgICB9Cit9CisKK2lmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgd2luZG93
LnRlc3RSdW5uZXIgPSBuZXcgU3RhbmRhbG9uZVRlc3RSdW5uZXIoKTsKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9yZXNvdXJjZXMvanNkaWZmbGliL2RpZmZ2aWV3LmNzcyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3Jlc291cmNlcy9qc2RpZmZsaWIvZGlmZnZpZXcuY3NzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjgxMWE1OTNiNzdmYmE0YjhlOTVmNWUxODAzYzIxZDA3N2YzOWFkMWYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvanNkaWZmbGli
L2RpZmZ2aWV3LmNzcwpAQCAtMCwwICsxLDgzIEBACisvKgorVGhpcyBpcyBwYXJ0IG9mIGpzZGlm
ZmxpYiB2MS4wLiA8aHR0cDovL2dpdGh1Yi5jb20vY2VtZXJpY2svanNkaWZmbGliPgorCitDb3B5
cmlnaHQgMjAwNyAtIDIwMTEgQ2hhcyBFbWVyaWNrIDxjZW1lcmlja0Bzbm93dGlkZS5jb20+LiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUKK3Blcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorCisg
ICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZgorICAgICAgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCisgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dAorICAgICAgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAgICAgIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDaGFz
IEVtZXJpY2sgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECitXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5ECitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ2hhcyBFbWVyaWNrIE9SCitDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORwor
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGCitBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworVGhlIHZpZXdzIGFuZCBjb25jbHVzaW9ucyBjb250YWluZWQgaW4g
dGhlIHNvZnR3YXJlIGFuZCBkb2N1bWVudGF0aW9uIGFyZSB0aG9zZSBvZiB0aGUKK2F1dGhvcnMg
YW5kIHNob3VsZCBub3QgYmUgaW50ZXJwcmV0ZWQgYXMgcmVwcmVzZW50aW5nIG9mZmljaWFsIHBv
bGljaWVzLCBlaXRoZXIgZXhwcmVzc2VkCitvciBpbXBsaWVkLCBvZiBDaGFzIEVtZXJpY2suCisq
LwordGFibGUuZGlmZiB7CisJYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOworCWJvcmRlcjoxcHgg
c29saWQgZGFya2dyYXk7CisJd2hpdGUtc3BhY2U6cHJlLXdyYXAKK30KK3RhYmxlLmRpZmYgdGJv
ZHkgeyAKKwlmb250LWZhbWlseTpDb3VyaWVyLCBtb25vc3BhY2UKK30KK3RhYmxlLmRpZmYgdGJv
ZHkgdGggeworCWZvbnQtZmFtaWx5OnZlcmRhbmEsYXJpYWwsJ0JpdHN0cmVhbSBWZXJhIFNhbnMn
LGhlbHZldGljYSxzYW5zLXNlcmlmOworCWJhY2tncm91bmQ6I0VFRDsKKwlmb250LXNpemU6MTFw
eDsKKwlmb250LXdlaWdodDpub3JtYWw7CisJYm9yZGVyOjFweCBzb2xpZCAjQkJDOworCWNvbG9y
OiM4ODY7CisJcGFkZGluZzouM2VtIC41ZW0gLjFlbSAyZW07CisJdGV4dC1hbGlnbjpyaWdodDsK
Kwl2ZXJ0aWNhbC1hbGlnbjp0b3AKK30KK3RhYmxlLmRpZmYgdGhlYWQgeworCWJvcmRlci1ib3R0
b206MXB4IHNvbGlkICNCQkM7CisJYmFja2dyb3VuZDojRUZFRkVGOworCWZvbnQtZmFtaWx5OlZl
cmRhbmEKK30KK3RhYmxlLmRpZmYgdGhlYWQgdGgudGV4dHRpdGxlIHsKKwl0ZXh0LWFsaWduOmxl
ZnQKK30KK3RhYmxlLmRpZmYgdGJvZHkgdGQgeworCXBhZGRpbmc6MHB4IC40ZW07CisJcGFkZGlu
Zy10b3A6LjRlbTsKKwl2ZXJ0aWNhbC1hbGlnbjp0b3A7Cit9Cit0YWJsZS5kaWZmIC5lbXB0eSB7
CisJYmFja2dyb3VuZC1jb2xvcjojREREOworfQordGFibGUuZGlmZiAucmVwbGFjZSB7CisJYmFj
a2dyb3VuZC1jb2xvcjojRkQ4Cit9Cit0YWJsZS5kaWZmIC5kZWxldGUgeworCWJhY2tncm91bmQt
Y29sb3I6I0U5OTsKK30KK3RhYmxlLmRpZmYgLnNraXAgeworCWJhY2tncm91bmQtY29sb3I6I0VG
RUZFRjsKKwlib3JkZXI6MXB4IHNvbGlkICNBQUE7CisJYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAj
QkJDOworfQordGFibGUuZGlmZiAuaW5zZXJ0IHsKKwliYWNrZ3JvdW5kLWNvbG9yOiM5RTkKK30K
K3RhYmxlLmRpZmYgdGguYXV0aG9yIHsKKwl0ZXh0LWFsaWduOnJpZ2h0OworCWJvcmRlci10b3A6
MXB4IHNvbGlkICNCQkM7CisJYmFja2dyb3VuZDojRUZFRkVGCit9ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2VzL2pzZGlmZmxpYi9kaWZmdmlldy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9qc2RpZmZsaWIvZGlmZnZpZXcuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTIy
OGEzNGQyYjZjNGUzYjM5MzIzMmQ4NjBjODRkZmJkOWZlNWFiNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9qc2RpZmZsaWIvZGlm
ZnZpZXcuanMKQEAgLTAsMCArMSwxOTcgQEAKKy8qCitUaGlzIGlzIHBhcnQgb2YganNkaWZmbGli
IHYxLjAuIDxodHRwOi8vZ2l0aHViLmNvbS9jZW1lcmljay9qc2RpZmZsaWI+CisKK0NvcHlyaWdo
dCAyMDA3IC0gMjAxMSBDaGFzIEVtZXJpY2sgPGNlbWVyaWNrQHNub3d0aWRlLmNvbT4uIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZQorcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisKKyAgIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mCisgICAgICBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisKKyAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0Cisg
ICAgICBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICAgICAgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENoYXMgRW1l
cmljayBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKK1dBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBDaGFzIEVtZXJpY2sgT1IKK0NPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCitDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCitTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCitBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCitORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYKK0FEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitUaGUgdmlld3MgYW5kIGNvbmNsdXNpb25zIGNvbnRhaW5lZCBpbiB0aGUg
c29mdHdhcmUgYW5kIGRvY3VtZW50YXRpb24gYXJlIHRob3NlIG9mIHRoZQorYXV0aG9ycyBhbmQg
c2hvdWxkIG5vdCBiZSBpbnRlcnByZXRlZCBhcyByZXByZXNlbnRpbmcgb2ZmaWNpYWwgcG9saWNp
ZXMsIGVpdGhlciBleHByZXNzZWQKK29yIGltcGxpZWQsIG9mIENoYXMgRW1lcmljay4KKyovCitk
aWZmdmlldyA9IHsKKwkvKioKKwkgKiBCdWlsZHMgYW5kIHJldHVybnMgYSB2aXN1YWwgZGlmZiB2
aWV3LiAgVGhlIHNpbmdsZSBwYXJhbWV0ZXIsIGBwYXJhbXMnLCBzaG91bGQgY29udGFpbgorCSAq
IHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorCSAqCisJICogLSBiYXNlVGV4dExpbmVzOiB0aGUgYXJy
YXkgb2Ygc3RyaW5ncyB0aGF0IHdhcyB1c2VkIGFzIHRoZSBiYXNlIHRleHQgaW5wdXQgdG8gU2Vx
dWVuY2VNYXRjaGVyCisJICogLSBuZXdUZXh0TGluZXM6IHRoZSBhcnJheSBvZiBzdHJpbmdzIHRo
YXQgd2FzIHVzZWQgYXMgdGhlIG5ldyB0ZXh0IGlucHV0IHRvIFNlcXVlbmNlTWF0Y2hlcgorCSAq
IC0gb3Bjb2RlczogdGhlIGFycmF5IG9mIGFycmF5cyByZXR1cm5lZCBieSBTZXF1ZW5jZU1hdGNo
ZXIuZ2V0X29wY29kZXMoKQorCSAqIC0gYmFzZVRleHROYW1lOiB0aGUgdGl0bGUgdG8gYmUgZGlz
cGxheWVkIGFib3ZlIHRoZSBiYXNlIHRleHQgbGlzdGluZyBpbiB0aGUgZGlmZiB2aWV3OyBkZWZh
dWx0cworCSAqCSAgIHRvICJCYXNlIFRleHQiCisJICogLSBuZXdUZXh0TmFtZTogdGhlIHRpdGxl
IHRvIGJlIGRpc3BsYXllZCBhYm92ZSB0aGUgbmV3IHRleHQgbGlzdGluZyBpbiB0aGUgZGlmZiB2
aWV3OyBkZWZhdWx0cworCSAqCSAgIHRvICJOZXcgVGV4dCIKKwkgKiAtIGNvbnRleHRTaXplOiB0
aGUgbnVtYmVyIG9mIGxpbmVzIG9mIGNvbnRleHQgdG8gc2hvdyBhcm91bmQgZGlmZmVyZW5jZXM7
IGJ5IGRlZmF1bHQsIGFsbCBsaW5lcworCSAqCSAgIGFyZSBzaG93bgorCSAqIC0gdmlld1R5cGU6
IGlmIDAsIGEgc2lkZS1ieS1zaWRlIGRpZmYgdmlldyBpcyBnZW5lcmF0ZWQgKGRlZmF1bHQpOyBp
ZiAxLCBhbiBpbmxpbmUgZGlmZiB2aWV3IGlzCisJICoJICAgZ2VuZXJhdGVkCisJICovCisJYnVp
bGRWaWV3OiBmdW5jdGlvbiAocGFyYW1zKSB7CisJCXZhciBiYXNlVGV4dExpbmVzID0gcGFyYW1z
LmJhc2VUZXh0TGluZXM7CisJCXZhciBuZXdUZXh0TGluZXMgPSBwYXJhbXMubmV3VGV4dExpbmVz
OworCQl2YXIgb3Bjb2RlcyA9IHBhcmFtcy5vcGNvZGVzOworCQl2YXIgYmFzZVRleHROYW1lID0g
cGFyYW1zLmJhc2VUZXh0TmFtZSA/IHBhcmFtcy5iYXNlVGV4dE5hbWUgOiAiQmFzZSBUZXh0IjsK
KwkJdmFyIG5ld1RleHROYW1lID0gcGFyYW1zLm5ld1RleHROYW1lID8gcGFyYW1zLm5ld1RleHRO
YW1lIDogIk5ldyBUZXh0IjsKKwkJdmFyIGNvbnRleHRTaXplID0gcGFyYW1zLmNvbnRleHRTaXpl
OworCQl2YXIgaW5saW5lID0gKHBhcmFtcy52aWV3VHlwZSA9PSAwIHx8IHBhcmFtcy52aWV3VHlw
ZSA9PSAxKSA/IHBhcmFtcy52aWV3VHlwZSA6IDA7CisKKwkJaWYgKGJhc2VUZXh0TGluZXMgPT0g
bnVsbCkKKwkJCXRocm93ICJDYW5ub3QgYnVpbGQgZGlmZiB2aWV3OyBiYXNlVGV4dExpbmVzIGlz
IG5vdCBkZWZpbmVkLiI7CisJCWlmIChuZXdUZXh0TGluZXMgPT0gbnVsbCkKKwkJCXRocm93ICJD
YW5ub3QgYnVpbGQgZGlmZiB2aWV3OyBuZXdUZXh0TGluZXMgaXMgbm90IGRlZmluZWQuIjsKKwkJ
aWYgKCFvcGNvZGVzKQorCQkJdGhyb3cgIkNhbm5vIGJ1aWxkIGRpZmYgdmlldzsgb3Bjb2RlcyBp
cyBub3QgZGVmaW5lZC4iOworCQkKKwkJZnVuY3Rpb24gY2VsdCAobmFtZSwgY2xhenopIHsKKwkJ
CXZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKTsKKwkJCWUuY2xhc3NOYW1lID0g
Y2xheno7CisJCQlyZXR1cm4gZTsKKwkJfQorCQkKKwkJZnVuY3Rpb24gdGVsdCAobmFtZSwgdGV4
dCkgeworCQkJdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KG5hbWUpOworCQkJZS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7CisJCQlyZXR1cm4gZTsKKwkJ
fQorCQkKKwkJZnVuY3Rpb24gY3RlbHQgKG5hbWUsIGNsYXp6LCB0ZXh0KSB7CisJCQl2YXIgZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSk7CisJCQllLmNsYXNzTmFtZSA9IGNsYXp6Owor
CQkJZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7CisJCQlyZXR1
cm4gZTsKKwkJfQorCQorCQl2YXIgdGRhdGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aGVh
ZCIpOworCQl2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisJCXRkYXRh
LmFwcGVuZENoaWxkKG5vZGUpOworCQlpZiAoaW5saW5lKSB7CisJCQlub2RlLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoIikpOworCQkJbm9kZS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpKTsKKwkJCW5vZGUuYXBwZW5kQ2hpbGQoY3RlbHQoInRo
IiwgInRleHR0aXRsZSIsIGJhc2VUZXh0TmFtZSArICIgdnMuICIgKyBuZXdUZXh0TmFtZSkpOwor
CQl9IGVsc2UgeworCQkJbm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0
aCIpKTsKKwkJCW5vZGUuYXBwZW5kQ2hpbGQoY3RlbHQoInRoIiwgInRleHR0aXRsZSIsIGJhc2VU
ZXh0TmFtZSkpOworCQkJbm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0
aCIpKTsKKwkJCW5vZGUuYXBwZW5kQ2hpbGQoY3RlbHQoInRoIiwgInRleHR0aXRsZSIsIG5ld1Rl
eHROYW1lKSk7CisJCX0KKwkJdGRhdGEgPSBbdGRhdGFdOworCQkKKwkJdmFyIHJvd3MgPSBbXTsK
KwkJdmFyIG5vZGUyOworCQkKKwkJLyoqCisJCSAqIEFkZHMgdHdvIGNlbGxzIHRvIHRoZSBnaXZl
biByb3c7IGlmIHRoZSBnaXZlbiByb3cgY29ycmVzcG9uZHMgdG8gYSByZWFsCisJCSAqIGxpbmUg
bnVtYmVyIChiYXNlZCBvbiB0aGUgbGluZSBpbmRleCB0aWR4IGFuZCB0aGUgZW5kcG9pbnQgb2Yg
dGhlIAorCQkgKiByYW5nZSBpbiBxdWVzdGlvbiB0ZW5kKSwgdGhlbiB0aGUgY2VsbHMgd2lsbCBj
b250YWluIHRoZSBsaW5lIG51bWJlcgorCQkgKiBhbmQgdGhlIGxpbmUgb2YgdGV4dCBmcm9tIHRl
eHRMaW5lcyBhdCBwb3NpdGlvbiB0aWR4ICh3aXRoIHRoZSBjbGFzcyBvZgorCQkgKiB0aGUgc2Vj
b25kIGNlbGwgc2V0IHRvIHRoZSBuYW1lIG9mIHRoZSBjaGFuZ2UgcmVwcmVzZW50ZWQpLCBhbmQg
dGlkeCArIDEgd2lsbAorCQkgKiBiZSByZXR1cm5lZC4JIE90aGVyd2lzZSwgdGlkeCBpcyByZXR1
cm5lZCwgYW5kIHR3byBlbXB0eSBjZWxscyBhcmUgYWRkZWQKKwkJICogdG8gdGhlIGdpdmVuIHJv
dy4KKwkJICovCisJCWZ1bmN0aW9uIGFkZENlbGxzIChyb3csIHRpZHgsIHRlbmQsIHRleHRMaW5l
cywgY2hhbmdlKSB7CisJCQlpZiAodGlkeCA8IHRlbmQpIHsKKwkJCQlyb3cuYXBwZW5kQ2hpbGQo
dGVsdCgidGgiLCAodGlkeCArIDEpLnRvU3RyaW5nKCkpKTsKKwkJCQlyb3cuYXBwZW5kQ2hpbGQo
Y3RlbHQoInRkIiwgY2hhbmdlLCB0ZXh0TGluZXNbdGlkeF0ucmVwbGFjZSgvXHQvZywgIlx1MDBh
MFx1MDBhMFx1MDBhMFx1MDBhMCIpKSk7CisJCQkJcmV0dXJuIHRpZHggKyAxOworCQkJfSBlbHNl
IHsKKwkJCQlyb3cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKSk7CisJ
CQkJcm93LmFwcGVuZENoaWxkKGNlbHQoInRkIiwgImVtcHR5IikpOworCQkJCXJldHVybiB0aWR4
OworCQkJfQorCQl9CisJCQorCQlmdW5jdGlvbiBhZGRDZWxsc0lubGluZSAocm93LCB0aWR4LCB0
aWR4MiwgdGV4dExpbmVzLCBjaGFuZ2UpIHsKKwkJCXJvdy5hcHBlbmRDaGlsZCh0ZWx0KCJ0aCIs
IHRpZHggPT0gbnVsbCA/ICIiIDogKHRpZHggKyAxKS50b1N0cmluZygpKSk7CisJCQlyb3cuYXBw
ZW5kQ2hpbGQodGVsdCgidGgiLCB0aWR4MiA9PSBudWxsID8gIiIgOiAodGlkeDIgKyAxKS50b1N0
cmluZygpKSk7CisJCQlyb3cuYXBwZW5kQ2hpbGQoY3RlbHQoInRkIiwgY2hhbmdlLCB0ZXh0TGlu
ZXNbdGlkeCAhPSBudWxsID8gdGlkeCA6IHRpZHgyXS5yZXBsYWNlKC9cdC9nLCAiXHUwMGEwXHUw
MGEwXHUwMGEwXHUwMGEwIikpKTsKKwkJfQorCQkKKwkJZm9yICh2YXIgaWR4ID0gMDsgaWR4IDwg
b3Bjb2Rlcy5sZW5ndGg7IGlkeCsrKSB7CisJCQljb2RlID0gb3Bjb2Rlc1tpZHhdOworCQkJY2hh
bmdlID0gY29kZVswXTsKKwkJCXZhciBiID0gY29kZVsxXTsKKwkJCXZhciBiZSA9IGNvZGVbMl07
CisJCQl2YXIgbiA9IGNvZGVbM107CisJCQl2YXIgbmUgPSBjb2RlWzRdOworCQkJdmFyIHJvd2Nu
dCA9IE1hdGgubWF4KGJlIC0gYiwgbmUgLSBuKTsKKwkJCXZhciB0b3Byb3dzID0gW107CisJCQl2
YXIgYm90cm93cyA9IFtdOworCQkJZm9yICh2YXIgaSA9IDA7IGkgPCByb3djbnQ7IGkrKykgewor
CQkJCS8vIGp1bXAgYWhlYWQgaWYgd2UndmUgYWxyZWR5IHByb3ZpZGVkIGxlYWRpbmcgY29udGV4
dCBvciBpZiB0aGlzIGlzIHRoZSBmaXJzdCByYW5nZQorCQkJCWlmIChjb250ZXh0U2l6ZSAmJiBv
cGNvZGVzLmxlbmd0aCA+IDEgJiYgKChpZHggPiAwICYmIGkgPT0gY29udGV4dFNpemUpIHx8IChp
ZHggPT0gMCAmJiBpID09IDApKSAmJiBjaGFuZ2U9PSJlcXVhbCIpIHsKKwkJCQkJdmFyIGp1bXAg
PSByb3djbnQgLSAoKGlkeCA9PSAwID8gMSA6IDIpICogY29udGV4dFNpemUpOworCQkJCQlpZiAo
anVtcCA+IDEpIHsKKwkJCQkJCXRvcHJvd3MucHVzaChub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgidHIiKSk7CisJCQkJCQkKKwkJCQkJCWIgKz0ganVtcDsKKwkJCQkJCW4gKz0ganVtcDsK
KwkJCQkJCWkgKz0ganVtcCAtIDE7CisJCQkJCQlub2RlLmFwcGVuZENoaWxkKHRlbHQoInRoIiwg
Ii4uLiIpKTsKKwkJCQkJCWlmICghaW5saW5lKSBub2RlLmFwcGVuZENoaWxkKGN0ZWx0KCJ0ZCIs
ICJza2lwIiwgIiIpKTsKKwkJCQkJCW5vZGUuYXBwZW5kQ2hpbGQodGVsdCgidGgiLCAiLi4uIikp
OworCQkJCQkJbm9kZS5hcHBlbmRDaGlsZChjdGVsdCgidGQiLCAic2tpcCIsICIiKSk7CisJCQkJ
CQkKKwkJCQkJCS8vIHNraXAgbGFzdCBsaW5lcyBpZiB0aGV5J3JlIGFsbCBlcXVhbAorCQkJCQkJ
aWYgKGlkeCArIDEgPT0gb3Bjb2Rlcy5sZW5ndGgpIHsKKwkJCQkJCQlicmVhazsKKwkJCQkJCX0g
ZWxzZSB7CisJCQkJCQkJY29udGludWU7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQkJCisJ
CQkJdG9wcm93cy5wdXNoKG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpKTsKKwkJ
CQlpZiAoaW5saW5lKSB7CisJCQkJCWlmIChjaGFuZ2UgPT0gImluc2VydCIpIHsKKwkJCQkJCWFk
ZENlbGxzSW5saW5lKG5vZGUsIG51bGwsIG4rKywgbmV3VGV4dExpbmVzLCBjaGFuZ2UpOworCQkJ
CQl9IGVsc2UgaWYgKGNoYW5nZSA9PSAicmVwbGFjZSIpIHsKKwkJCQkJCWJvdHJvd3MucHVzaChu
b2RlMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIikpOworCQkJCQkJaWYgKGIgPCBiZSkg
YWRkQ2VsbHNJbmxpbmUobm9kZSwgYisrLCBudWxsLCBiYXNlVGV4dExpbmVzLCAiZGVsZXRlIik7
CisJCQkJCQlpZiAobiA8IG5lKSBhZGRDZWxsc0lubGluZShub2RlMiwgbnVsbCwgbisrLCBuZXdU
ZXh0TGluZXMsICJpbnNlcnQiKTsKKwkJCQkJfSBlbHNlIGlmIChjaGFuZ2UgPT0gImRlbGV0ZSIp
IHsKKwkJCQkJCWFkZENlbGxzSW5saW5lKG5vZGUsIGIrKywgbnVsbCwgYmFzZVRleHRMaW5lcywg
Y2hhbmdlKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCS8vIGVxdWFsCisJCQkJCQlhZGRDZWxsc0lu
bGluZShub2RlLCBiKyssIG4rKywgYmFzZVRleHRMaW5lcywgY2hhbmdlKTsKKwkJCQkJfQorCQkJ
CX0gZWxzZSB7CisJCQkJCWIgPSBhZGRDZWxscyhub2RlLCBiLCBiZSwgYmFzZVRleHRMaW5lcywg
Y2hhbmdlKTsKKwkJCQkJbiA9IGFkZENlbGxzKG5vZGUsIG4sIG5lLCBuZXdUZXh0TGluZXMsIGNo
YW5nZSk7CisJCQkJfQorCQkJfQorCisJCQlmb3IgKHZhciBpID0gMDsgaSA8IHRvcHJvd3MubGVu
Z3RoOyBpKyspIHJvd3MucHVzaCh0b3Byb3dzW2ldKTsKKwkJCWZvciAodmFyIGkgPSAwOyBpIDwg
Ym90cm93cy5sZW5ndGg7IGkrKykgcm93cy5wdXNoKGJvdHJvd3NbaV0pOworCQl9CisJCQorCQly
b3dzLnB1c2gobm9kZSA9IGN0ZWx0KCJ0aCIsICJhdXRob3IiLCAiZGlmZiB2aWV3IGdlbmVyYXRl
ZCBieSAiKSk7CisJCW5vZGUuc2V0QXR0cmlidXRlKCJjb2xzcGFuIiwgaW5saW5lID8gMyA6IDQp
OworCQlub2RlLmFwcGVuZENoaWxkKG5vZGUyID0gdGVsdCgiYSIsICJqc2RpZmZsaWIiKSk7CisJ
CW5vZGUyLnNldEF0dHJpYnV0ZSgiaHJlZiIsICJodHRwOi8vZ2l0aHViLmNvbS9jZW1lcmljay9q
c2RpZmZsaWIiKTsKKwkJCisJCXRkYXRhLnB1c2gobm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInRib2R5IikpOworCQlmb3IgKHZhciBpZHggaW4gcm93cykgbm9kZS5hcHBlbmRDaGlsZChy
b3dzW2lkeF0pOworCQkKKwkJbm9kZSA9IGNlbHQoInRhYmxlIiwgImRpZmYiICsgKGlubGluZSA/
ICIgaW5saW5lZGlmZiIgOiAiIikpOworCQlmb3IgKHZhciBpZHggaW4gdGRhdGEpIG5vZGUuYXBw
ZW5kQ2hpbGQodGRhdGFbaWR4XSk7CisJCXJldHVybiBub2RlOworCX0KK30KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157970</attachid>
            <date>2012-08-13 05:29:43 -0700</date>
            <delta_ts>2012-08-13 06:00:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92429-20120813162909.patch</filename>
            <type>text/plain</type>
            <size>11476</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1Mzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTE0ZGQ0YTc0ZDdhMzM0
OWY1Mjc4ZjQzZmRjNDE4YzJkNTU1MGI1Zi4uYjJmODA4OTNjOTRiMDZmOWRkMDI1NTc3ODE4NTUw
MGExYzU3ODM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA4LTEzICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEFkZCBzdXBwb3J0IGZvciBkZWJ1Z2dpbmcgSW5zcGVjdG9yIExheW91dFRlc3RzIHcvSW5z
cGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MjQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIG1vY2sgdGVzdCBydW5uZXIgdGhhdCBhbGxvd3MgcnVubmluZyBmcm9udC1lbmQgbGF5b3V0
IHRlc3RzLgorICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSSBjYW4gbm93IGRpc3BhdGNoIHdo
YXRldmVyIGl0IHJlY2VpdmVzIGZyb20gaXRzIGVtYmVkZGVyIChvcGVuZXIpLgorCisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qczoKKyAgICAgICAg
KEluc3BlY3RvckZyb250ZW5kQVBJLmV2YWx1YXRlRm9yVGVzdCk6CisgICAgICAgIChJbnNwZWN0
b3JGcm9udGVuZEFQSS5kaXNwYXRjaCk6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5s
b2FkQ29tcGxldGVkKToKKyAgICAgICAgKC5vbk1lc3NhZ2VGcm9tT3BlbmVyKToKKwogMjAxMi0w
OC0xMyAgUGV0ZXIgV2FuZyAgPHBldGVyLndhbmdAdG9yY2htb2JpbGUuY29tLmNuPgogCiAgICAg
ICAgIFJFR1JFU1NJT04gKHIxMjQ3MjMtcjEyNDc0MSk6IDUgaW5zcGVjdG9yL2RlYnVnZ2VyIHRl
c3RzIGZhaWxpbmcgb24gQXBwbGUgTGlvbiBEZWJ1ZyBXSzEgKFRlc3RzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEFQSS5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRB
UEkuanMKaW5kZXggN2VmODQ3OTgwYjU3ZTExNjdiNDQxNzk3OTljOTg1YTNjNzE4ZjI1ZS4uMWJk
NjMzNWFkZGMyYTI1ZTIxZTk1ODQwZTU5MDg2NmJmNDNlMzdjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kQVBJ
LmpzCkBAIC0xMjAsOSArMTIwLDE0IEBAIEluc3BlY3RvckZyb250ZW5kQVBJID0gewogICAgICAg
ICBXZWJJbnNwZWN0b3Iuc2V0VG9vbGJhckNvbG9ycyhiYWNrZ3JvdW5kQ29sb3IsIGNvbG9yKTsK
ICAgICB9LAogCisgICAgZXZhbHVhdGVGb3JUZXN0OiBmdW5jdGlvbihjYWxsSWQsIHNjcmlwdCkK
KyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKGNh
bGxJZCwgc2NyaXB0KTsKKyAgICB9LAorCiAgICAgZGlzcGF0Y2g6IGZ1bmN0aW9uKHNpZ25hdHVy
ZSkKICAgICB7Ci0gICAgICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzKSB7CisgICAgICAgIGlm
IChJbnNwZWN0b3JGcm9udGVuZEFQSS5faXNMb2FkZWQpIHsKICAgICAgICAgICAgIHZhciBtZXRo
b2ROYW1lID0gc2lnbmF0dXJlLnNoaWZ0KCk7CiAgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9y
RnJvbnRlbmRBUElbbWV0aG9kTmFtZV0uYXBwbHkoSW5zcGVjdG9yRnJvbnRlbmRBUEksIHNpZ25h
dHVyZSk7CiAgICAgICAgIH0KQEAgLTEzMSw4ICsxMzYsMTcgQEAgSW5zcGVjdG9yRnJvbnRlbmRB
UEkgPSB7CiAKICAgICBsb2FkQ29tcGxldGVkOiBmdW5jdGlvbigpCiAgICAgeworICAgICAgICBJ
bnNwZWN0b3JGcm9udGVuZEFQSS5faXNMb2FkZWQgPSB0cnVlOwogICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IEluc3BlY3RvckZyb250ZW5kQVBJLl9wZW5kaW5nQ29tbWFuZHMubGVuZ3RoOyAr
K2kpCiAgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaChJbnNwZWN0b3JG
cm9udGVuZEFQSS5fcGVuZGluZ0NvbW1hbmRzW2ldKTsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRl
bmRBUEkuX3BlbmRpbmdDb21tYW5kcyA9IFtdOwogICAgIH0KIH0KKworaWYgKHdpbmRvdy5vcGVu
ZXIpIHsKKyAgICBmdW5jdGlvbiBvbk1lc3NhZ2VGcm9tT3BlbmVyKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2goZXZlbnQuZGF0YSk7CisgICAgfQor
ICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgb25NZXNzYWdlRnJvbU9wZW5l
ciwgdHJ1ZSk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggOThiOTJhNTEzNGYyY2Y0YjEzODBhODM3NTZmOWE2YzcyYmVj
OTNmZS4uM2M1MjY2MzRjZjEyZTMzYjMzYmNmMmZkZjc0ZGU0ZmQ5NWI5NTIyNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDEyLTA4LTEzICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBzdXBwb3J0IGZvciBkZWJ1Z2dp
bmcgSW5zcGVjdG9yIExheW91dFRlc3RzIHcvSW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjQyOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG1vY2sgdGVzdCBydW5uZXIgdGhhdCBh
bGxvd3MgcnVubmluZyBmcm9udC1lbmQgbGF5b3V0IHRlc3RzLgorCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanM6CisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2VzL3Rlc3QtcnVubmVyLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA4LTEy
ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5vdCBy
ZXZpZXdlZDogcmViYXNlbGluZWQgaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS1mb3JtYXQtY29s
bGVjdGlvbnMuaHRtbCBhZnRlciByMTI1Mjg0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwppbmRleCA5NjEzMTBkZTk1ODM0NmI3YzIx
NGMyZDkxYzEzMTYzOWY0ZDA3Nzg2Li4yOTNhYWFiMzFlOTU3NjcyM2IzODZmNmVjZDVlZThhMjg0
MTdiMjJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNw
ZWN0b3ItdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNw
ZWN0b3ItdGVzdC5qcwpAQCAtNTE1LDMgKzUxNSw2IEBAIGZ1bmN0aW9uIGNsZWFyT3V0cHV0KCkK
ICAgICAgICAgb3V0cHV0RWxlbWVudCA9IG51bGw7CiAgICAgfQogfQorCitpZiAoIXdpbmRvdy50
ZXN0UnVubmVyICYmIHdpbmRvdy5vcGVuZXIpCisgICAgd2luZG93LnRlc3RSdW5uZXIgPSB3aW5k
b3cub3BlbmVyLnRlc3RSdW5uZXI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMvdGVzdC1ydW5uZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy90ZXN0LXJ1bm5lci5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRl
ZjEyMjhmMjM4Y2U5YWFiYjYxN2IzOWE0Yjk4YTY3OTZlYzJlOTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvdGVzdC1ydW5uZXIu
aHRtbApAQCAtMCwwICsxLDIyMCBAQAorPGh0bWw+Cis8c2NyaXB0IHNyYz0iaHR0cDovL2xvY2Fs
aG9zdDo4MDAwL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvanNkaWZmbGliLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RPTUV4dGVuc2lvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdHJlZW91dGxp
bmUuanMiPjwvc2NyaXB0PgorCis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3Nz
IiBocmVmPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuY3NzIj4KKzxzdHlsZT4KKzpmb2N1cyB7CisgICAgb3V0bGluZTog
bm9uZTsKK30KKworLmZhaWxlZCB7CisgICAgY29sb3I6IHJlZDsKK30KKworLnRpbWVvdXQgewor
ICAgIGNvbG9yOiBicm93bjsKK30KKzwvc3R5bGU+CisKKzxzY3JpcHQ+CisKK3ZhciB0ZXN0cyA9
IFtdOwordmFyIHNraXBMaXN0ID0gWyJjb25zb2xlLWFwaS1vbi1jYWxsLWZyYW1lLmh0bWwiLCAi
ZGVidWdnZXIvIl07Cit2YXIgdHJlZU91dGxpbmUgPSBudWxsOworCitmdW5jdGlvbiBzdGFydCgp
Cit7CisgICAgc2NhbkZvbGRlcigiaW5zcGVjdG9yL2NvbnNvbGUiKTsKKyAgICBzY2FuRm9sZGVy
KCJpbnNwZWN0b3IvZGVidWdnZXIiKTsKKyAgICBzY2FuRm9sZGVyKCJpbnNwZWN0b3IvZWRpdG9y
Iik7CisgICAgc2NhbkZvbGRlcigiaW5zcGVjdG9yL2VsZW1lbnRzIik7CisgICAgc2NhbkZvbGRl
cigiaW5zcGVjdG9yL3Byb2ZpbGVyIik7CisgICAgc2NhbkZvbGRlcigiaW5zcGVjdG9yL3N0eWxl
cyIpOworICAgIHNjYW5Gb2xkZXIoImluc3BlY3Rvci90aW1lbGluZSIpOworICAgIHNjYW5Gb2xk
ZXIoImluc3BlY3RvciIpOworCisgICAgdHJlZU91dGxpbmUgPSBuZXcgVHJlZU91dGxpbmUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dGxpbmUiKSk7CisgICAgcnVuTmV4dFRlc3QoKTsKK30K
KworZnVuY3Rpb24gc3RvcCgpCit7CisgICAgdGVzdHMgPSBbXTsKK30KKworZnVuY3Rpb24gc2Nh
bkZvbGRlcihmb2xkZXIpCit7CisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwor
ICAgIHhoci5vcGVuKCJHRVQiLCAiL0xheW91dFRlc3RzLyIgKyBmb2xkZXIgKyAiLyIsIGZhbHNl
KTsKKyAgICB4aHIuc2VuZChudWxsKTsKKyAgICB2YXIgdGV4dCA9IHhoci5yZXNwb25zZVRleHQ7
CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBl
bGVtZW50LmlubmVySFRNTCA9IHRleHQ7CisgICAgdmFyIGxpbmtzID0gZWxlbWVudC5xdWVyeVNl
bGVjdG9yQWxsKCJhIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5rcy5sZW5ndGg7ICsr
aSkgeworICAgICAgICB2YXIgbGluayA9IGxpbmtzW2ldLmhyZWY7CisgICAgICAgIHZhciBtYXRj
aCA9IGxpbmsubWF0Y2goL1teXC9dKlwvKFteXC9dK1wuaHRtbCkkLyk7CisgICAgICAgIGlmICht
YXRjaCkKKyAgICAgICAgICAgIHRlc3RzLnB1c2goZm9sZGVyICsgIi8iICsgbWF0Y2hbMV0pOwor
ICAgIH0KK30KKworZnVuY3Rpb24gcnVuTmV4dFRlc3QoKQoreworICAgIHZhciB0ZXN0UGF0aCA9
IHRlc3RzLnNoaWZ0KCk7CisgICAgaWYgKHRlc3RQYXRoKQorICAgICAgICBuZXcgU3RhbmRhbG9u
ZVRlc3RSdW5uZXIoImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9MYXlvdXRUZXN0cy8iICsgdGVzdFBh
dGgsIHJ1bk5leHRUZXN0KTsKK30KKworZnVuY3Rpb24gU3RhbmRhbG9uZVRlc3RSdW5uZXIodGVz
dFBhdGgsIG5leHQpCit7CisgICAgdGhpcy5fdGVzdFBhdGggPSB0ZXN0UGF0aDsKKyAgICB0aGlz
Ll9uZXh0ID0gbmV4dDsKKworICAgIHRoaXMuX3RyZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50
KHRlc3RQYXRoKTsKKyAgICB0cmVlT3V0bGluZS5hcHBlbmRDaGlsZCh0aGlzLl90cmVlRWxlbWVu
dCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNraXBMaXN0Lmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgIGlmICh0ZXN0UGF0aC5pbmRleE9mKHNraXBMaXN0W2ldKSAhPT0gLTEpIHsKKyAgICAg
ICAgICAgIHRoaXMuX3RyZWVFbGVtZW50LnRpdGxlID0gdGVzdFBhdGggKyAiOiBTS0lQUEVEIjsK
KyAgICAgICAgICAgIHRoaXMuX25leHQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHRoaXMuX3Rlc3RQYWdlID0gd2luZG93Lm9wZW4oImFib3V0OmJsYW5r
IiwgImluc3BlY3RlZCIsICJ3aWR0aD04MDAsaGVpZ2h0PTYwMCIpOworCisgICAgd2luZG93LnJl
bW90ZURlYnVnZ2luZ0hhbmRzaGFrZSA9IHRoaXMuX3JlbW90ZURlYnVnZ2luZ0hhbmRzaGFrZS5i
aW5kKHRoaXMpOworICAgIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3Jp
cHQiKTsKKyAgICBzY3JpcHQuc3JjID0gImh0dHA6Ly9sb2NhbGhvc3Q6OTIyMi9qc29uP2pzb25w
PXJlbW90ZURlYnVnZ2luZ0hhbmRzaGFrZSI7CisgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGls
ZChzY3JpcHQpOworfQorCitTdGFuZGFsb25lVGVzdFJ1bm5lci5Gcm9udGVuZExvY2F0aW9uID0g
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
LyI7CisKK1N0YW5kYWxvbmVUZXN0UnVubmVyLnByb3RvdHlwZSA9IHsKKyAgICBfcmVtb3RlRGVi
dWdnaW5nSGFuZHNoYWtlOiBmdW5jdGlvbihkYXRhKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoZGF0YVtpXS51
cmwgIT09ICJhYm91dDpibGFuayIpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB2YXIgZGVidWdnZXJVUkwgPSBkYXRhW2ldLndlYlNvY2tldERlYnVnZ2VyVXJsLnJlcGxh
Y2UoIjovLyIsICI9Iik7CisgICAgICAgICAgICB0aGlzLl9pbnNwZWN0b3JXaW5kb3cgPSB3aW5k
b3cub3BlbihTdGFuZGFsb25lVGVzdFJ1bm5lci5Gcm9udGVuZExvY2F0aW9uICsgImluc3BlY3Rv
ci5odG1sPyIgKyBkZWJ1Z2dlclVSTCwgImluc3BlY3RvciIsICJ3aWR0aD02MDAsaGVpZ2h0PTQw
MCIpOworICAgICAgICAgICAgdGhpcy5faW5zcGVjdG9yV2luZG93Lm9ubG9hZCA9IHRoaXMuX2lu
c3BlY3RvcldpbmRvd0xvYWRlZC5iaW5kKHRoaXMpOworICAgICAgICB9CisgICAgfSwKKworICAg
IF9pbnNwZWN0b3JXaW5kb3dMb2FkZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHdpbmRv
dy50ZXN0UnVubmVyID0gdGhpczsKKyAgICAgICAgdGhpcy5fdGVzdFBhZ2UubG9jYXRpb24uaHJl
ZiA9IHRoaXMuX3Rlc3RQYXRoOworICAgICAgICB0aGlzLl93YXRjaERvZyA9IHNldFRpbWVvdXQo
dGhpcy5fdGltZW91dC5iaW5kKHRoaXMpLCAxMDAwMCk7CisgICAgfSwKKworICAgIGR1bXBBc1Rl
eHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgfSwKKworICAgIHdhaXRVbnRpbERvbmU6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgfSwKKworICAgIGNsb3NlV2ViSW5zcGVjdG9yOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB0aGlzLl9pbnNwZWN0b3JXaW5kb3cuY2xvc2UoKTsKKyAgICB9LAor
CisgICAgbm90aWZ5RG9uZTogZnVuY3Rpb24odGltZW91dCkKKyAgICB7CisgICAgICAgIGlmICh0
aGlzLl9kb25lKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9kb25lID0gdHJ1
ZTsKKworICAgICAgICB2YXIgYWN0dWFsID0gdGhpcy5fdGVzdFBhZ2UuZG9jdW1lbnQuYm9keS5p
bm5lclRleHQgKyAiXG4iOworICAgICAgICB0aGlzLl90ZXN0UGFnZS5jbG9zZSgpOworICAgICAg
ICB0aGlzLl9pbnNwZWN0b3JXaW5kb3cuY2xvc2UoKTsKKyAgICAgICAgY2xlYXJUaW1lb3V0KHRo
aXMuX3dhdGNoRG9nKTsKKworICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7
CisgICAgICAgIHZhciBleHQgPSB0aGlzLl90ZXN0UGF0aC5sYXN0SW5kZXhPZigiLiIpOworICAg
ICAgICB4aHIub3BlbigiR0VUIiwgdGhpcy5fdGVzdFBhdGguc3Vic3RyaW5nKDAsIGV4dCkgKyAi
LWV4cGVjdGVkLnR4dCIsIGZhbHNlKTsKKyAgICAgICAgeGhyLnNlbmQobnVsbCk7CisgICAgICAg
IHZhciBleHBlY3RlZCA9IHhoci5yZXNwb25zZVRleHQ7CisgICAgICAgIGlmIChhY3R1YWwgPT09
IGV4cGVjdGVkKSB7CisgICAgICAgICAgICB0aGlzLl90cmVlRWxlbWVudC50aXRsZSA9IHRoaXMu
X3Rlc3RQYXRoICsgIjogU1VDQ0VTUyI7CisgICAgICAgICAgICB0aGlzLl9uZXh0KCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl90cmVlRWxlbWVudC50
aXRsZSA9IHRoaXMuX3Rlc3RQYXRoICsgIjogRkFJTEVEIjsKKyAgICAgICAgdGhpcy5fdHJlZUVs
ZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFkZFN0eWxlQ2xhc3MoImZhaWxlZCIpOworCisgICAgICAg
IHZhciBiYXNlTGluZXMgPSBkaWZmbGliLnN0cmluZ0FzTGluZXMoZXhwZWN0ZWQpOworICAgICAg
ICB2YXIgbmV3TGluZXMgPSBkaWZmbGliLnN0cmluZ0FzTGluZXMoYWN0dWFsKTsKKyAgICAgICAg
dmFyIHNtID0gbmV3IGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyKGJhc2VMaW5lcywgbmV3TGluZXMp
OworICAgICAgICB2YXIgb3Bjb2RlcyA9IHNtLmdldF9vcGNvZGVzKCk7CisgICAgICAgIHZhciBs
YXN0V2FzU2VwYXJhdG9yID0gZmFsc2U7CisKKyAgICAgICAgZm9yICh2YXIgaWR4ID0gMDsgaWR4
IDwgb3Bjb2Rlcy5sZW5ndGg7IGlkeCsrKSB7CisgICAgICAgICAgICB2YXIgY29kZSA9IG9wY29k
ZXNbaWR4XTsKKyAgICAgICAgICAgIHZhciBjaGFuZ2UgPSBjb2RlWzBdOworICAgICAgICAgICAg
dmFyIGIgPSBjb2RlWzFdOworICAgICAgICAgICAgdmFyIGJlID0gY29kZVsyXTsKKyAgICAgICAg
ICAgIHZhciBuID0gY29kZVszXTsKKyAgICAgICAgICAgIHZhciBuZSA9IGNvZGVbNF07CisgICAg
ICAgICAgICB2YXIgcm93Q291bnQgPSBNYXRoLm1heChiZSAtIGIsIG5lIC0gbik7CisgICAgICAg
ICAgICB2YXIgdG9wUm93cyA9IFtdOworICAgICAgICAgICAgdmFyIGJvdHRvbVJvd3MgPSBbXTsK
KyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm93Q291bnQ7IGkrKykgeworICAgICAg
ICAgICAgICAgIGlmIChjaGFuZ2UgPT09ICJkZWxldGUiIHx8IChjaGFuZ2UgPT09ICJyZXBsYWNl
IiAmJiBiIDwgYmUpKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBsaW5lTnVtYmVyID0gYisr
OworICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmVlRWxlbWVudC5hcHBlbmRDaGlsZChuZXcg
VHJlZUVsZW1lbnQoIi0gWyIgKyBsaW5lTnVtYmVyICsgIl0gIiArIGJhc2VMaW5lc1tsaW5lTnVt
YmVyXSkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChjaGFuZ2Ug
PT09ICJpbnNlcnQiIHx8IChjaGFuZ2UgPT09ICJyZXBsYWNlIiAmJiBuIDwgbmUpKSB7CisgICAg
ICAgICAgICAgICAgICAgIHZhciBsaW5lTnVtYmVyID0gbisrOworICAgICAgICAgICAgICAgICAg
ICB0aGlzLl90cmVlRWxlbWVudC5hcHBlbmRDaGlsZChuZXcgVHJlZUVsZW1lbnQoIisgWyIgKyBs
aW5lTnVtYmVyICsgIl0gIiArIG5ld0xpbmVzW2xpbmVOdW1iZXJdKSk7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGNoYW5nZSA9PT0gImVxdWFsIikgeworICAgICAg
ICAgICAgICAgICAgICBiKys7CisgICAgICAgICAgICAgICAgICAgIG4rKzsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9uZXh0KCk7
CisgICAgfSwKKworICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3I6IGZ1bmN0aW9uKGNhbGxJZCwg
c2NyaXB0KQorICAgIHsKKyAgICAgICAgdGhpcy5faW5zcGVjdG9yV2luZG93LnBvc3RNZXNzYWdl
KFsiZXZhbHVhdGVGb3JUZXN0IiwgY2FsbElkLCBzY3JpcHRdLCAiKiIpOworICAgIH0sCisKKyAg
ICBfdGltZW91dDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgICB0aGlzLl90cmVlRWxlbWVu
dC50aXRsZSA9IHRoaXMuX3Rlc3RQYXRoICsgIjogVElNRU9VVCI7CisgICAgICAgICAgdGhpcy5f
dHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFkZFN0eWxlQ2xhc3MoInRpbWVvdXQiKTsKKyAg
ICAgICAgICB0aGlzLl9kb25lID0gdHJ1ZTsKKyAgICAgICAgICB0aGlzLl90ZXN0UGFnZS5jbG9z
ZSgpOworICAgICAgICAgIHRoaXMuX2luc3BlY3RvcldpbmRvdy5jbG9zZSgpOworICAgICAgICAg
IHRoaXMuX25leHQoKTsKKyAgICB9Cit9CisKKzwvc2NyaXB0PgorPGJvZHk+CitUaGlzIGlzIGEg
c3RhbmRhbG9uZSB0ZXN0IHN1aXRlIGZvciBpbnNwZWN0b3IgZnJvbnQtZW5kLiBIZXJlIGlzIGhv
dyB5b3UgcnVuIGl0Ojxicj4KKzEpIFN0YXJ0IHNlcnZpbmcgV2ViS2l0IGZvbGRlciBvZmYgcG9y
dCA4MDAwIHNvIHRoYXQgdGhpcyBwYWdlIHdvdWxkIGhhdmUgZm9sbG93aW5nIGFkZHJlc3M6Cis8
YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvcmVzb3VyY2VzL3Rlc3QtcnVubmVyLmh0bWwiCis+aHR0cDovL2xvY2FsaG9zdDo4MDAw
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy90ZXN0LXJ1bm5lci5o
dG1sPC9hPjxicj4KKzIpIFJ1biBDaHJvbWUgQ2FuYXJ5IChUb1QgQ2hyb21pdW0pIHdpdGggZm9s
bG93aW5nIGZsYWdzOgorIC0tcmVtb3RlLWRlYnVnZ2luZy1wb3J0PTkyMjIgLS11c2VyLWRhdGEt
ZGlyPXRlc3RQcm9maWxlIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvdGVzdC1ydW5uZXIuaHRtbDxicj48YnI+Cis8YnV0dG9u
IG9uY2xpY2s9InN0YXJ0KCkiPlN0YXJ0PC9idXR0b24+Cis8YnV0dG9uIG9uY2xpY2s9InN0b3Ao
KSI+U3RvcDwvYnV0dG9uPgorPG9sIGlkPSJvdXRsaW5lIiBzdHlsZT0iZm9udC1zaXplOiAxMnB4
ICFpbXBvcnRhbnQiIGNsYXNzPSJzb3VyY2UtY29kZSBvdXRsaW5lLWRpc2Nsb3N1cmUiPjwvb2w+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>