<?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>67253</bug_id>
          
          <creation_ts>2011-08-30 19:12:01 -0700</creation_ts>
          <short_desc>NRWT should show the size of the pixel image delta in results.html</short_desc>
          <delta_ts>2011-09-28 17:08:44 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>64491</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>jarred</cc>
    
    <cc>ojan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>459393</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-08-30 19:12:01 -0700</bug_when>
    <thetext>RWT shows % pixel diffs in the results; NRWT results do not show this. It&apos;s very useful when looking at pixel diffs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459394</commentid>
    <comment_count>1</comment_count>
      <attachid>105730</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-08-30 19:12:40 -0700</bug_when>
    <thetext>Created attachment 105730
Sample ORWT output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459667</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-08-31 09:29:00 -0700</bug_when>
    <thetext>Sounds like a great feature.  Easy to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459672</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-08-31 09:33:36 -0700</bug_when>
    <thetext>I&apos;ll do it if someone points me in the right direction. I assume the % data will have to go into the json?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459784</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-08-31 11:41:23 -0700</bug_when>
    <thetext>http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py#L75
is responsible for generating the dictionary which gets dumped into full_results.json.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459786</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-08-31 11:42:28 -0700</bug_when>
    <thetext>I&apos;m still trying to figure out how exactly we&apos;d do this. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468763</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-16 13:23:13 -0700</bug_when>
    <thetext>ORWT just reads this information from ImageDiff:
http://trac.webkit.org/browser/trunk/Tools/Scripts/old-run-webkit-tests#L942</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468766</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-16 13:26:21 -0700</bug_when>
    <thetext>Here is the relevant line in NRWT:
http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/layout_tests/port/webkit.py#L201

We would need to change _read_image_diff to return a tuple.  Then there is some plumbing to get it to the json, but should be relatively straightforward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468770</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-16 13:28:32 -0700</bug_when>
    <thetext>This can be done.  It&apos;s just a lot of plumbing.  I will add this to my list right after bug 65781 which is what I&apos;m currently working on.  If someone else wants to take this on, that&apos;d be even better of course, as it frees me up to fix other NRWT bugs. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472517</commentid>
    <comment_count>9</comment_count>
      <attachid>108540</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-23 14:48:49 -0700</bug_when>
    <thetext>Created attachment 108540
Patch in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472598</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-23 16:23:40 -0700</bug_when>
    <thetext>I have something mostly working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472602</commentid>
    <comment_count>11</comment_count>
      <attachid>108554</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-23 16:29:01 -0700</bug_when>
    <thetext>Created attachment 108554
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472608</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-23 16:32:09 -0700</bug_when>
    <thetext>Attachment 108554 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/fast/harness/results.html&apos;, u&apos;...&quot; exit_code: 1

Tools/Scripts/webkitpy/layout_tests/port/webkit.py:184:  multiple statements on one line (semicolon)  [pep8/E702] [5]
Tools/Scripts/webkitpy/layout_tests/port/chromium.py:216:  at least two spaces before inline comment  [pep8/E261] [5]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472628</commentid>
    <comment_count>13</comment_count>
      <attachid>108554</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-23 17:02:33 -0700</bug_when>
    <thetext>Comment on attachment 108554
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_failures.py:171
&gt;  class FailureImageHashMismatch(TestFailure):
&gt;      &quot;&quot;&quot;Image hashes didn&apos;t match.&quot;&quot;&quot;
&gt; +    def __init__(self, diff_percent=0):
&gt; +        self.diff_percent = diff_percent

I feel like I&apos;ve tried to add non-static data to these before and others have gotten sad.  The test_failures.py design is bad/broken.  We&apos;ll have to consult Ojan/Dirk here for suggestions.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:216
&gt;&gt; +        return [result, 0] # FIXME: how to get % diff?
&gt; 
&gt; at least two spaces before inline comment  [pep8/E261] [5]

It&apos;s sad, but true that our python vs. c++ comment spacing is different in webkit. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472632</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-23 17:08:30 -0700</bug_when>
    <thetext>I&apos;m a python noob, so bear in mind when reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472641</commentid>
    <comment_count>15</comment_count>
      <attachid>108554</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-23 17:19:22 -0700</bug_when>
    <thetext>Comment on attachment 108554
Patch

Attachment 108554 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9839093

New failing tests:
fast/harness/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472643</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-23 17:21:14 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 108554 [details])
&gt; Attachment 108554 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/9839093
&gt; 
&gt; New failing tests:
&gt; fast/harness/results.html

Why is results.html inside LayoutTests? This is so stupid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472650</commentid>
    <comment_count>17</comment_count>
      <attachid>108554</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-09-23 17:29:44 -0700</bug_when>
    <thetext>Comment on attachment 108554
Patch

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

R-&apos;ing this for now until we can add an integration test and I get a chance to run through the patch by hand. You probably also need to update diff_image in port/test.py.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/models/test_failures.py:171
&gt;&gt; +        self.diff_percent = diff_percent
&gt; 
&gt; I feel like I&apos;ve tried to add non-static data to these before and others have gotten sad.  The test_failures.py design is bad/broken.  We&apos;ll have to consult Ojan/Dirk here for suggestions.

I think this should mostly work. We may have to double-check the serialization/pickling code to make sure it transfers across.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:184
&gt;&gt; +        diff_percent = 0;
&gt; 
&gt; multiple statements on one line (semicolon)  [pep8/E702] [5]

Python doesn&apos;t use semicolons :)

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:583
&gt; +                return [True, 0]

We should probably have at least one integration test that returns a non-zero diff value. I will look into what it would take to make this work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472654</commentid>
    <comment_count>18</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-09-23 17:38:12 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; (From update of attachment 108554 [details] [details])
&gt; &gt; Attachment 108554 [details] [details] did not pass chromium-ews (chromium-xvfb):
&gt; &gt; Output: http://queues.webkit.org/results/9839093
&gt; &gt; 
&gt; &gt; New failing tests:
&gt; &gt; fast/harness/results.html
&gt; 
&gt; Why is results.html inside LayoutTests? This is so stupid.

results.html itself is a test to ensure that we don&apos;t break the generated output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473597</commentid>
    <comment_count>19</comment_count>
      <attachid>108771</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-09-26 18:08:02 -0700</bug_when>
    <thetext>Created attachment 108771
update smfr&apos;s patch to add more tests, fix style nits</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473598</commentid>
    <comment_count>20</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-09-26 18:09:07 -0700</bug_when>
    <thetext>Eric or Tony, can I haz review plz?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473603</commentid>
    <comment_count>21</comment_count>
      <attachid>108771</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-26 18:15:40 -0700</bug_when>
    <thetext>Comment on attachment 108771
update smfr&apos;s patch to add more tests, fix style nits

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

Seems OK.

&gt; LayoutTests/fast/harness/resources/results-test.js:37
&gt; +function mockExpectation(expected, actual, diff_percentage)

I would recommend having this default to None so you don&apos;t have to change so many results.

&gt; LayoutTests/fast/harness/resources/results-test.js:446
&gt; +    subtree[&apos;expected-to-pass-but-crashed.html&apos;] = mockExpectation(&apos;PASS&apos;, &apos;CRASH&apos;, 0);

It seems mockExpectation should just have a default value for diff_percentage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473611</commentid>
    <comment_count>22</comment_count>
      <attachid>108773</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-09-26 18:27:35 -0700</bug_when>
    <thetext>Created attachment 108773
add default value to mockExpectation() in results-test.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473613</commentid>
    <comment_count>23</comment_count>
      <attachid>108773</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-09-26 18:28:25 -0700</bug_when>
    <thetext>Comment on attachment 108773
add default value to mockExpectation() in results-test.js

(In reply to comment #21)
&gt; &gt; LayoutTests/fast/harness/resources/results-test.js:37
&gt; &gt; +function mockExpectation(expected, actual, diff_percentage)
&gt; 
&gt; I would recommend having this default to None so you don&apos;t have to change so many results.
&gt; 

Good suggestion. Of course, I didn&apos;t actually know how to do that, so I&apos;ve now learned something as well. Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473738</commentid>
    <comment_count>24</comment_count>
      <attachid>108773</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-27 00:28:16 -0700</bug_when>
    <thetext>Comment on attachment 108773
add default value to mockExpectation() in results-test.js

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

OK.

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_failures.py:171
&gt; +    def __init__(self, diff_percent=0):
&gt; +        self.diff_percent = diff_percent

The pythonistas would tell you you should use =None and then &quot;diff_percent or 0&quot; in the body.  It doesn&apos;t matter because 0 is a constant, but if you were using [] for example, you could hose yourself, since the &quot;default&quot; object is a static and shared between all calls of the function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475098</commentid>
    <comment_count>25</comment_count>
      <attachid>108773</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-09-28 17:08:39 -0700</bug_when>
    <thetext>Comment on attachment 108773
add default value to mockExpectation() in results-test.js

Clearing flags on attachment: 108773

Committed r96272: &lt;http://trac.webkit.org/changeset/96272&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475100</commentid>
    <comment_count>26</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-09-28 17:08:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>105730</attachid>
            <date>2011-08-30 19:12:40 -0700</date>
            <delta_ts>2011-08-30 19:12:40 -0700</delta_ts>
            <desc>Sample ORWT output</desc>
            <filename>results.html</filename>
            <type>text/html</type>
            <size>35389</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8dGl0bGU+TGF5b3V0IFRlc3QgUmVzdWx0czwvdGl0bGU+CjxzdHlsZT4K
LnN0b3BwZWQtcnVubmluZy1lYXJseS1tZXNzYWdlIHsKICAgIGJvcmRlcjogM3B4IHNvbGlkICNk
MDA7CiAgICBmb250LXdlaWdodDogYm9sZDsKfQo8L3N0eWxlPgo8L2hlYWQ+CjwvYm9keT4KPHA+
VGVzdHMgd2hlcmUgcmVzdWx0cyBkaWQgbm90IG1hdGNoIGV4cGVjdGVkIHJlc3VsdHM6PC9wPgo8
dGFibGU+Cjx0cj4KPHRkPjxhIGhyZWY9Ii9Wb2x1bWVzL1NTRGF0YS9EZXZlbG9wbWVudC9PU1gv
d2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZGlyZWN0LWltYWdlLWNv
bXBvc2l0aW5nLmh0bWwiPmNvbXBvc2l0aW5nL2RpcmVjdC1pbWFnZS1jb21wb3NpdGluZy5odG1s
PC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvZGlyZWN0LWltYWdlLWNvbXBvc2l0
aW5nLWV4cGVjdGVkLnBuZyI+ZXhwZWN0ZWQgaW1hZ2U8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0i
Y29tcG9zaXRpbmcvZGlyZWN0LWltYWdlLWNvbXBvc2l0aW5nLWRpZmZzLmh0bWwiPmltYWdlIGRp
ZmZzPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2RpcmVjdC1pbWFnZS1jb21w
b3NpdGluZy1kaWZmcy5wbmciPjAuNjYlPC9hPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48YSBocmVm
PSIvVm9sdW1lcy9TU0RhdGEvRGV2ZWxvcG1lbnQvT1NYL3dlYmtpdC9PcGVuU291cmNlL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVycy1pbnNpZGUtb3ZlcmZsb3ctc2Nyb2xsLmh0bWwiPmNv
bXBvc2l0aW5nL2xheWVycy1pbnNpZGUtb3ZlcmZsb3ctc2Nyb2xsLmh0bWw8L2E+PC90ZD4KPHRk
Pgo8YSBocmVmPSJjb21wb3NpdGluZy9sYXllcnMtaW5zaWRlLW92ZXJmbG93LXNjcm9sbC1leHBl
Y3RlZC5wbmciPmV4cGVjdGVkIGltYWdlPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0
aW5nL2xheWVycy1pbnNpZGUtb3ZlcmZsb3ctc2Nyb2xsLWRpZmZzLmh0bWwiPmltYWdlIGRpZmZz
PC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2xheWVycy1pbnNpZGUtb3ZlcmZs
b3ctc2Nyb2xsLWRpZmZzLnBuZyI+OC4yMSU8L2E+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxhIGhy
ZWY9Ii9Wb2x1bWVzL1NTRGF0YS9EZXZlbG9wbWVudC9PU1gvd2Via2l0L09wZW5Tb3VyY2UvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvY29sb3ItbWF0Y2hpbmcvaW1hZ2UtY29sb3ItbWF0Y2hpbmcu
aHRtbCI+Y29tcG9zaXRpbmcvY29sb3ItbWF0Y2hpbmcvaW1hZ2UtY29sb3ItbWF0Y2hpbmcuaHRt
bDwvYT48L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2NvbG9yLW1hdGNoaW5nL2ltYWdl
LWNvbG9yLW1hdGNoaW5nLWV4cGVjdGVkLnBuZyI+ZXhwZWN0ZWQgaW1hZ2U8L2E+CjwvdGQ+Cjx0
ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvY29sb3ItbWF0Y2hpbmcvaW1hZ2UtY29sb3ItbWF0Y2hp
bmctZGlmZnMuaHRtbCI+aW1hZ2UgZGlmZnM8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9z
aXRpbmcvY29sb3ItbWF0Y2hpbmcvaW1hZ2UtY29sb3ItbWF0Y2hpbmctZGlmZnMucG5nIj4wLjQ0
JTwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGEgaHJlZj0iL1ZvbHVtZXMvU1NEYXRhL0RldmVs
b3BtZW50L09TWC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9mcmFt
ZXNldHMvY29tcG9zaXRlZC1mcmFtZS1hbGlnbm1lbnQuaHRtbCI+Y29tcG9zaXRpbmcvZnJhbWVz
ZXRzL2NvbXBvc2l0ZWQtZnJhbWUtYWxpZ25tZW50Lmh0bWw8L2E+PC90ZD4KPHRkPgo8YSBocmVm
PSJjb21wb3NpdGluZy9mcmFtZXNldHMvY29tcG9zaXRlZC1mcmFtZS1hbGlnbm1lbnQtZXhwZWN0
ZWQucG5nIj5leHBlY3RlZCBpbWFnZTwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGlu
Zy9mcmFtZXNldHMvY29tcG9zaXRlZC1mcmFtZS1hbGlnbm1lbnQtZGlmZnMuaHRtbCI+aW1hZ2Ug
ZGlmZnM8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvZnJhbWVzZXRzL2NvbXBv
c2l0ZWQtZnJhbWUtYWxpZ25tZW50LWRpZmZzLnBuZyI+MC4zMiU8L2E+CjwvdGQ+CjwvdHI+Cjx0
cj4KPHRkPjxhIGhyZWY9Ii9Wb2x1bWVzL1NTRGF0YS9EZXZlbG9wbWVudC9PU1gvd2Via2l0L09w
ZW5Tb3VyY2UvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvYW5jZXN0b3Itb3ZlcmZs
b3ctY2hhbmdlLmh0bWwiPmNvbXBvc2l0aW5nL2dlb21ldHJ5L2FuY2VzdG9yLW92ZXJmbG93LWNo
YW5nZS5odG1sPC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvZ2VvbWV0cnkvYW5j
ZXN0b3Itb3ZlcmZsb3ctY2hhbmdlLWV4cGVjdGVkLnBuZyI+ZXhwZWN0ZWQgaW1hZ2U8L2E+Cjwv
dGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvZ2VvbWV0cnkvYW5jZXN0b3Itb3ZlcmZsb3ct
Y2hhbmdlLWRpZmZzLmh0bWwiPmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNv
bXBvc2l0aW5nL2dlb21ldHJ5L2FuY2VzdG9yLW92ZXJmbG93LWNoYW5nZS1kaWZmcy5wbmciPjAu
NDglPC9hPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48YSBocmVmPSIvVm9sdW1lcy9TU0RhdGEvRGV2
ZWxvcG1lbnQvT1NYL3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dl
b21ldHJ5L2NsaXBwaW5nLWZvcmVncm91bmQuaHRtbCI+Y29tcG9zaXRpbmcvZ2VvbWV0cnkvY2xp
cHBpbmctZm9yZWdyb3VuZC5odG1sPC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcv
Z2VvbWV0cnkvY2xpcHBpbmctZm9yZWdyb3VuZC1leHBlY3RlZC5wbmciPmV4cGVjdGVkIGltYWdl
PC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2dlb21ldHJ5L2NsaXBwaW5nLWZv
cmVncm91bmQtZGlmZnMuaHRtbCI+aW1hZ2UgZGlmZnM8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0i
Y29tcG9zaXRpbmcvZ2VvbWV0cnkvY2xpcHBpbmctZm9yZWdyb3VuZC1kaWZmcy5wbmciPjAuMjEl
PC9hPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48YSBocmVmPSIvVm9sdW1lcy9TU0RhdGEvRGV2ZWxv
cG1lbnQvT1NYL3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21l
dHJ5L2NvbXBvc2l0ZWQtaHRtbC1zaXplLmh0bWwiPmNvbXBvc2l0aW5nL2dlb21ldHJ5L2NvbXBv
c2l0ZWQtaHRtbC1zaXplLmh0bWw8L2E+PC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9n
ZW9tZXRyeS9jb21wb3NpdGVkLWh0bWwtc2l6ZS1leHBlY3RlZC5wbmciPmV4cGVjdGVkIGltYWdl
PC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2dlb21ldHJ5L2NvbXBvc2l0ZWQt
aHRtbC1zaXplLWRpZmZzLmh0bWwiPmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9
ImNvbXBvc2l0aW5nL2dlb21ldHJ5L2NvbXBvc2l0ZWQtaHRtbC1zaXplLWRpZmZzLnBuZyI+MC40
NCU8L2E+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxhIGhyZWY9Ii9Wb2x1bWVzL1NTRGF0YS9EZXZl
bG9wbWVudC9PU1gvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2Vv
bWV0cnkvZml4ZWQtaW4tY29tcG9zaXRlZC5odG1sIj5jb21wb3NpdGluZy9nZW9tZXRyeS9maXhl
ZC1pbi1jb21wb3NpdGVkLmh0bWw8L2E+PC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9n
ZW9tZXRyeS9maXhlZC1pbi1jb21wb3NpdGVkLWV4cGVjdGVkLnBuZyI+ZXhwZWN0ZWQgaW1hZ2U8
L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtaW4tY29t
cG9zaXRlZC1kaWZmcy5odG1sIj5pbWFnZSBkaWZmczwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJj
b21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1pbi1jb21wb3NpdGVkLWRpZmZzLnBuZyI+MC41OCU8
L2E+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxhIGhyZWY9Ii9Wb2x1bWVzL1NTRGF0YS9EZXZlbG9w
bWVudC9PU1gvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0
cnkvZml4ZWQtcG9zaXRpb24uaHRtbCI+Y29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRp
b24uaHRtbDwvYT48L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVk
LXBvc2l0aW9uLWV4cGVjdGVkLnBuZyI+ZXhwZWN0ZWQgaW1hZ2U8L2E+CjwvdGQ+Cjx0ZD4KPGEg
aHJlZj0iY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4ZWQtcG9zaXRpb24tZGlmZnMuaHRtbCI+aW1h
Z2UgZGlmZnM8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvZ2VvbWV0cnkvZml4
ZWQtcG9zaXRpb24tZGlmZnMucG5nIj4wLjk4JTwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGEg
aHJlZj0iL1ZvbHVtZXMvU1NEYXRhL0RldmVsb3BtZW50L09TWC93ZWJraXQvT3BlblNvdXJjZS9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9mb3JlZ3JvdW5kLWxheWVyLmh0bWwiPmNv
bXBvc2l0aW5nL2dlb21ldHJ5L2ZvcmVncm91bmQtbGF5ZXIuaHRtbDwvYT48L3RkPgo8dGQ+Cjxh
IGhyZWY9ImNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZvcmVncm91bmQtbGF5ZXItZXhwZWN0ZWQucG5n
Ij5leHBlY3RlZCBpbWFnZTwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9nZW9t
ZXRyeS9mb3JlZ3JvdW5kLWxheWVyLWRpZmZzLmh0bWwiPmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8
dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2dlb21ldHJ5L2ZvcmVncm91bmQtbGF5ZXItZGlmZnMu
cG5nIj4wLjkzJTwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGEgaHJlZj0iL1ZvbHVtZXMvU1NE
YXRhL0RldmVsb3BtZW50L09TWC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9nZW9tZXRyeS9ob3Jpem9udGFsLXNjcm9sbC1jb21wb3NpdGVkLmh0bWwiPmNvbXBvc2l0
aW5nL2dlb21ldHJ5L2hvcml6b250YWwtc2Nyb2xsLWNvbXBvc2l0ZWQuaHRtbDwvYT48L3RkPgo8
dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2dlb21ldHJ5L2hvcml6b250YWwtc2Nyb2xsLWNvbXBv
c2l0ZWQtZXhwZWN0ZWQucG5nIj5leHBlY3RlZCBpbWFnZTwvYT4KPC90ZD4KPHRkPgo8YSBocmVm
PSJjb21wb3NpdGluZy9nZW9tZXRyeS9ob3Jpem9udGFsLXNjcm9sbC1jb21wb3NpdGVkLWRpZmZz
Lmh0bWwiPmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2dl
b21ldHJ5L2hvcml6b250YWwtc2Nyb2xsLWNvbXBvc2l0ZWQtZGlmZnMucG5nIj4wLjk4JTwvYT4K
PC90ZD4KPC90cj4KPHRyPgo8dGQ+PGEgaHJlZj0iL1ZvbHVtZXMvU1NEYXRhL0RldmVsb3BtZW50
L09TWC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRyeS9s
YXllci1kdWUtdG8tbGF5ZXItY2hpbGRyZW4tZGVlcC5odG1sIj5jb21wb3NpdGluZy9nZW9tZXRy
eS9sYXllci1kdWUtdG8tbGF5ZXItY2hpbGRyZW4tZGVlcC5odG1sPC9hPjwvdGQ+Cjx0ZD4KPGEg
aHJlZj0iY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGF5ZXItZHVlLXRvLWxheWVyLWNoaWxkcmVuLWRl
ZXAtZXhwZWN0ZWQucG5nIj5leHBlY3RlZCBpbWFnZTwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJj
b21wb3NpdGluZy9nZW9tZXRyeS9sYXllci1kdWUtdG8tbGF5ZXItY2hpbGRyZW4tZGVlcC1kaWZm
cy5odG1sIj5pbWFnZSBkaWZmczwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9n
ZW9tZXRyeS9sYXllci1kdWUtdG8tbGF5ZXItY2hpbGRyZW4tZGVlcC1kaWZmcy5wbmciPjAuMyU8
L2E+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxhIGhyZWY9Ii9Wb2x1bWVzL1NTRGF0YS9EZXZlbG9w
bWVudC9PU1gvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0
cnkvbGF5ZXItZHVlLXRvLWxheWVyLWNoaWxkcmVuLmh0bWwiPmNvbXBvc2l0aW5nL2dlb21ldHJ5
L2xheWVyLWR1ZS10by1sYXllci1jaGlsZHJlbi5odG1sPC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0i
Y29tcG9zaXRpbmcvZ2VvbWV0cnkvbGF5ZXItZHVlLXRvLWxheWVyLWNoaWxkcmVuLWV4cGVjdGVk
LnBuZyI+ZXhwZWN0ZWQgaW1hZ2U8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcv
Z2VvbWV0cnkvbGF5ZXItZHVlLXRvLWxheWVyLWNoaWxkcmVuLWRpZmZzLmh0bWwiPmltYWdlIGRp
ZmZzPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2dlb21ldHJ5L2xheWVyLWR1
ZS10by1sYXllci1jaGlsZHJlbi1kaWZmcy5wbmciPjAuMjIlPC9hPgo8L3RkPgo8L3RyPgo8dHI+
Cjx0ZD48YSBocmVmPSIvVm9sdW1lcy9TU0RhdGEvRGV2ZWxvcG1lbnQvT1NYL3dlYmtpdC9PcGVu
U291cmNlL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L2xpbWl0LWxheWVyLWJvdW5k
cy1vdmVyZmxvdy1yZXBhaW50Lmh0bWwiPmNvbXBvc2l0aW5nL2dlb21ldHJ5L2xpbWl0LWxheWVy
LWJvdW5kcy1vdmVyZmxvdy1yZXBhaW50Lmh0bWw8L2E+PC90ZD4KPHRkPgo8YSBocmVmPSJjb21w
b3NpdGluZy9nZW9tZXRyeS9saW1pdC1sYXllci1ib3VuZHMtb3ZlcmZsb3ctcmVwYWludC1leHBl
Y3RlZC5wbmciPmV4cGVjdGVkIGltYWdlPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0
aW5nL2dlb21ldHJ5L2xpbWl0LWxheWVyLWJvdW5kcy1vdmVyZmxvdy1yZXBhaW50LWRpZmZzLmh0
bWwiPmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2dlb21l
dHJ5L2xpbWl0LWxheWVyLWJvdW5kcy1vdmVyZmxvdy1yZXBhaW50LWRpZmZzLnBuZyI+MC4yOSU8
L2E+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxhIGhyZWY9Ii9Wb2x1bWVzL1NTRGF0YS9EZXZlbG9w
bWVudC9PU1gvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0
cnkvcmVwYWludC1mb3JlZ3JvdW5kLWxheWVyLmh0bWwiPmNvbXBvc2l0aW5nL2dlb21ldHJ5L3Jl
cGFpbnQtZm9yZWdyb3VuZC1sYXllci5odG1sPC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9z
aXRpbmcvZ2VvbWV0cnkvcmVwYWludC1mb3JlZ3JvdW5kLWxheWVyLWV4cGVjdGVkLnBuZyI+ZXhw
ZWN0ZWQgaW1hZ2U8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvZ2VvbWV0cnkv
cmVwYWludC1mb3JlZ3JvdW5kLWxheWVyLWRpZmZzLmh0bWwiPmltYWdlIGRpZmZzPC9hPgo8L3Rk
Pgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2dlb21ldHJ5L3JlcGFpbnQtZm9yZWdyb3VuZC1s
YXllci1kaWZmcy5wbmciPjAuNTglPC9hPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48YSBocmVmPSIv
Vm9sdW1lcy9TU0RhdGEvRGV2ZWxvcG1lbnQvT1NYL3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L3Jvb3QtbGF5ZXItdXBkYXRlLmh0bWwiPmNvbXBvc2l0
aW5nL2dlb21ldHJ5L3Jvb3QtbGF5ZXItdXBkYXRlLmh0bWw8L2E+PC90ZD4KPHRkPgo8YSBocmVm
PSJjb21wb3NpdGluZy9nZW9tZXRyeS9yb290LWxheWVyLXVwZGF0ZS1leHBlY3RlZC5wbmciPmV4
cGVjdGVkIGltYWdlPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2dlb21ldHJ5
L3Jvb3QtbGF5ZXItdXBkYXRlLWRpZmZzLmh0bWwiPmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+
CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2dlb21ldHJ5L3Jvb3QtbGF5ZXItdXBkYXRlLWRpZmZzLnBu
ZyI+MC4xMSU8L2E+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxhIGhyZWY9Ii9Wb2x1bWVzL1NTRGF0
YS9EZXZlbG9wbWVudC9PU1gvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvZ2VvbWV0cnkvdGFsbC1wYWdlLWNvbXBvc2l0ZWQuaHRtbCI+Y29tcG9zaXRpbmcvZ2VvbWV0
cnkvdGFsbC1wYWdlLWNvbXBvc2l0ZWQuaHRtbDwvYT48L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBv
c2l0aW5nL2dlb21ldHJ5L3RhbGwtcGFnZS1jb21wb3NpdGVkLWV4cGVjdGVkLnBuZyI+ZXhwZWN0
ZWQgaW1hZ2U8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvZ2VvbWV0cnkvdGFs
bC1wYWdlLWNvbXBvc2l0ZWQtZGlmZnMuaHRtbCI+aW1hZ2UgZGlmZnM8L2E+CjwvdGQ+Cjx0ZD4K
PGEgaHJlZj0iY29tcG9zaXRpbmcvZ2VvbWV0cnkvdGFsbC1wYWdlLWNvbXBvc2l0ZWQtZGlmZnMu
cG5nIj4wLjMlPC9hPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48YSBocmVmPSIvVm9sdW1lcy9TU0Rh
dGEvRGV2ZWxvcG1lbnQvT1NYL3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL2dlb21ldHJ5L3ZlcnRpY2FsLXNjcm9sbC1jb21wb3NpdGVkLmh0bWwiPmNvbXBvc2l0aW5n
L2dlb21ldHJ5L3ZlcnRpY2FsLXNjcm9sbC1jb21wb3NpdGVkLmh0bWw8L2E+PC90ZD4KPHRkPgo8
YSBocmVmPSJjb21wb3NpdGluZy9nZW9tZXRyeS92ZXJ0aWNhbC1zY3JvbGwtY29tcG9zaXRlZC1l
eHBlY3RlZC5wbmciPmV4cGVjdGVkIGltYWdlPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBv
c2l0aW5nL2dlb21ldHJ5L3ZlcnRpY2FsLXNjcm9sbC1jb21wb3NpdGVkLWRpZmZzLmh0bWwiPmlt
YWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2dlb21ldHJ5L3Zl
cnRpY2FsLXNjcm9sbC1jb21wb3NpdGVkLWRpZmZzLnBuZyI+MC45MyU8L2E+CjwvdGQ+CjwvdHI+
Cjx0cj4KPHRkPjxhIGhyZWY9Ii9Wb2x1bWVzL1NTRGF0YS9EZXZlbG9wbWVudC9PU1gvd2Via2l0
L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvdmlkZW8tZml4ZWQt
c2Nyb2xsaW5nLmh0bWwiPmNvbXBvc2l0aW5nL2dlb21ldHJ5L3ZpZGVvLWZpeGVkLXNjcm9sbGlu
Zy5odG1sPC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvZ2VvbWV0cnkvdmlkZW8t
Zml4ZWQtc2Nyb2xsaW5nLWV4cGVjdGVkLnBuZyI+ZXhwZWN0ZWQgaW1hZ2U8L2E+CjwvdGQ+Cjx0
ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvZ2VvbWV0cnkvdmlkZW8tZml4ZWQtc2Nyb2xsaW5nLWRp
ZmZzLmh0bWwiPmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5n
L2dlb21ldHJ5L3ZpZGVvLWZpeGVkLXNjcm9sbGluZy1kaWZmcy5wbmciPjAuNTYlPC9hPgo8L3Rk
Pgo8L3RyPgo8dHI+Cjx0ZD48YSBocmVmPSIvVm9sdW1lcy9TU0RhdGEvRGV2ZWxvcG1lbnQvT1NY
L3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2dlb21ldHJ5L3ZpZGVv
LW9wYWNpdHktb3ZlcmxheS5odG1sIj5jb21wb3NpdGluZy9nZW9tZXRyeS92aWRlby1vcGFjaXR5
LW92ZXJsYXkuaHRtbDwvYT48L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2dlb21ldHJ5
L3ZpZGVvLW9wYWNpdHktb3ZlcmxheS1leHBlY3RlZC5wbmciPmV4cGVjdGVkIGltYWdlPC9hPgo8
L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2dlb21ldHJ5L3ZpZGVvLW9wYWNpdHktb3Zl
cmxheS1kaWZmcy5odG1sIj5pbWFnZSBkaWZmczwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21w
b3NpdGluZy9nZW9tZXRyeS92aWRlby1vcGFjaXR5LW92ZXJsYXktZGlmZnMucG5nIj4wLjElPC9h
Pgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48YSBocmVmPSIvVm9sdW1lcy9TU0RhdGEvRGV2ZWxvcG1l
bnQvT1NYL3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMv
Y29tcG9zaXRlZC1pZnJhbWUtYWxpZ25tZW50Lmh0bWwiPmNvbXBvc2l0aW5nL2lmcmFtZXMvY29t
cG9zaXRlZC1pZnJhbWUtYWxpZ25tZW50Lmh0bWw8L2E+PC90ZD4KPHRkPgo8YSBocmVmPSJjb21w
b3NpdGluZy9pZnJhbWVzL2NvbXBvc2l0ZWQtaWZyYW1lLWFsaWdubWVudC1leHBlY3RlZC5wbmci
PmV4cGVjdGVkIGltYWdlPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2lmcmFt
ZXMvY29tcG9zaXRlZC1pZnJhbWUtYWxpZ25tZW50LWRpZmZzLmh0bWwiPmltYWdlIGRpZmZzPC9h
Pgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2lmcmFtZXMvY29tcG9zaXRlZC1pZnJh
bWUtYWxpZ25tZW50LWRpZmZzLnBuZyI+MC4zNSU8L2E+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxh
IGhyZWY9Ii9Wb2x1bWVzL1NTRGF0YS9EZXZlbG9wbWVudC9PU1gvd2Via2l0L09wZW5Tb3VyY2Uv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaWZyYW1lcy9jb21wb3NpdGVkLWlmcmFtZS1zY3JvbGwu
aHRtbCI+Y29tcG9zaXRpbmcvaWZyYW1lcy9jb21wb3NpdGVkLWlmcmFtZS1zY3JvbGwuaHRtbDwv
YT48L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2lmcmFtZXMvY29tcG9zaXRlZC1pZnJh
bWUtc2Nyb2xsLWV4cGVjdGVkLnBuZyI+ZXhwZWN0ZWQgaW1hZ2U8L2E+CjwvdGQ+Cjx0ZD4KPGEg
aHJlZj0iY29tcG9zaXRpbmcvaWZyYW1lcy9jb21wb3NpdGVkLWlmcmFtZS1zY3JvbGwtZGlmZnMu
aHRtbCI+aW1hZ2UgZGlmZnM8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvaWZy
YW1lcy9jb21wb3NpdGVkLWlmcmFtZS1zY3JvbGwtZGlmZnMucG5nIj4wLjI5JTwvYT4KPC90ZD4K
PC90cj4KPHRyPgo8dGQ+PGEgaHJlZj0iL1ZvbHVtZXMvU1NEYXRhL0RldmVsb3BtZW50L09TWC93
ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJhbWVzL2lmcmFtZS1j
b250ZW50LWZsaXBwaW5nLmh0bWwiPmNvbXBvc2l0aW5nL2lmcmFtZXMvaWZyYW1lLWNvbnRlbnQt
ZmxpcHBpbmcuaHRtbDwvYT48L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2lmcmFtZXMv
aWZyYW1lLWNvbnRlbnQtZmxpcHBpbmctZXhwZWN0ZWQucG5nIj5leHBlY3RlZCBpbWFnZTwvYT4K
PC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9pZnJhbWVzL2lmcmFtZS1jb250ZW50LWZs
aXBwaW5nLWRpZmZzLmh0bWwiPmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNv
bXBvc2l0aW5nL2lmcmFtZXMvaWZyYW1lLWNvbnRlbnQtZmxpcHBpbmctZGlmZnMucG5nIj4wLjI5
JTwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGEgaHJlZj0iL1ZvbHVtZXMvU1NEYXRhL0RldmVs
b3BtZW50L09TWC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9pZnJh
bWVzL2lmcmFtZS1jb3B5LW9uLXNjcm9sbC5odG1sIj5jb21wb3NpdGluZy9pZnJhbWVzL2lmcmFt
ZS1jb3B5LW9uLXNjcm9sbC5odG1sPC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcv
aWZyYW1lcy9pZnJhbWUtY29weS1vbi1zY3JvbGwtZXhwZWN0ZWQucG5nIj5leHBlY3RlZCBpbWFn
ZTwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9pZnJhbWVzL2lmcmFtZS1jb3B5
LW9uLXNjcm9sbC1kaWZmcy5odG1sIj5pbWFnZSBkaWZmczwvYT4KPC90ZD4KPHRkPgo8YSBocmVm
PSJjb21wb3NpdGluZy9pZnJhbWVzL2lmcmFtZS1jb3B5LW9uLXNjcm9sbC1kaWZmcy5wbmciPjAu
MTMlPC9hPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48YSBocmVmPSIvVm9sdW1lcy9TU0RhdGEvRGV2
ZWxvcG1lbnQvT1NYL3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2lm
cmFtZXMvaWZyYW1lLWluLWNvbXBvc2l0ZWQtbGF5ZXIuaHRtbCI+Y29tcG9zaXRpbmcvaWZyYW1l
cy9pZnJhbWUtaW4tY29tcG9zaXRlZC1sYXllci5odG1sPC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0i
Y29tcG9zaXRpbmcvaWZyYW1lcy9pZnJhbWUtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5w
bmciPmV4cGVjdGVkIGltYWdlPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2lm
cmFtZXMvaWZyYW1lLWluLWNvbXBvc2l0ZWQtbGF5ZXItZGlmZnMuaHRtbCI+aW1hZ2UgZGlmZnM8
L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvaWZyYW1lcy9pZnJhbWUtaW4tY29t
cG9zaXRlZC1sYXllci1kaWZmcy5wbmciPjAuNDIlPC9hPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48
YSBocmVmPSIvVm9sdW1lcy9TU0RhdGEvRGV2ZWxvcG1lbnQvT1NYL3dlYmtpdC9PcGVuU291cmNl
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2lmcmFtZXMvcmVwYWludC1hZnRlci1sb3Npbmctc2Ny
b2xsYmFycy5odG1sIj5jb21wb3NpdGluZy9pZnJhbWVzL3JlcGFpbnQtYWZ0ZXItbG9zaW5nLXNj
cm9sbGJhcnMuaHRtbDwvYT48L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2lmcmFtZXMv
cmVwYWludC1hZnRlci1sb3Npbmctc2Nyb2xsYmFycy1leHBlY3RlZC5wbmciPmV4cGVjdGVkIGlt
YWdlPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2lmcmFtZXMvcmVwYWludC1h
ZnRlci1sb3Npbmctc2Nyb2xsYmFycy1kaWZmcy5odG1sIj5pbWFnZSBkaWZmczwvYT4KPC90ZD4K
PHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9pZnJhbWVzL3JlcGFpbnQtYWZ0ZXItbG9zaW5nLXNj
cm9sbGJhcnMtZGlmZnMucG5nIj40LjUyJTwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGEgaHJl
Zj0iL1ZvbHVtZXMvU1NEYXRhL0RldmVsb3BtZW50L09TWC93ZWJraXQvT3BlblNvdXJjZS9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9pbWFnZXMvY29udGVudC1pbWFnZS1jaGFuZ2UuaHRtbCI+Y29t
cG9zaXRpbmcvaW1hZ2VzL2NvbnRlbnQtaW1hZ2UtY2hhbmdlLmh0bWw8L2E+PC90ZD4KPHRkPgo8
YSBocmVmPSJjb21wb3NpdGluZy9pbWFnZXMvY29udGVudC1pbWFnZS1jaGFuZ2UtZXhwZWN0ZWQu
cG5nIj5leHBlY3RlZCBpbWFnZTwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9p
bWFnZXMvY29udGVudC1pbWFnZS1jaGFuZ2UtZGlmZnMuaHRtbCI+aW1hZ2UgZGlmZnM8L2E+Cjwv
dGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvaW1hZ2VzL2NvbnRlbnQtaW1hZ2UtY2hhbmdl
LWRpZmZzLnBuZyI+MC41NSU8L2E+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxhIGhyZWY9Ii9Wb2x1
bWVzL1NTRGF0YS9EZXZlbG9wbWVudC9PU1gvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvaW1hZ2VzL2RpcmVjdC1pbWFnZS1iYWNrZ3JvdW5kLWNvbG9yLmh0bWwiPmNv
bXBvc2l0aW5nL2ltYWdlcy9kaXJlY3QtaW1hZ2UtYmFja2dyb3VuZC1jb2xvci5odG1sPC9hPjwv
dGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvaW1hZ2VzL2RpcmVjdC1pbWFnZS1iYWNrZ3Jv
dW5kLWNvbG9yLWV4cGVjdGVkLnBuZyI+ZXhwZWN0ZWQgaW1hZ2U8L2E+CjwvdGQ+Cjx0ZD4KPGEg
aHJlZj0iY29tcG9zaXRpbmcvaW1hZ2VzL2RpcmVjdC1pbWFnZS1iYWNrZ3JvdW5kLWNvbG9yLWRp
ZmZzLmh0bWwiPmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5n
L2ltYWdlcy9kaXJlY3QtaW1hZ2UtYmFja2dyb3VuZC1jb2xvci1kaWZmcy5wbmciPjAuNyU8L2E+
CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxhIGhyZWY9Ii9Wb2x1bWVzL1NTRGF0YS9EZXZlbG9wbWVu
dC9PU1gvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvaW1hZ2VzL2Rp
cmVjdC1wZGYtaW1hZ2UuaHRtbCI+Y29tcG9zaXRpbmcvaW1hZ2VzL2RpcmVjdC1wZGYtaW1hZ2Uu
aHRtbDwvYT48L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL2ltYWdlcy9kaXJlY3QtcGRm
LWltYWdlLWV4cGVjdGVkLnBuZyI+ZXhwZWN0ZWQgaW1hZ2U8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJl
Zj0iY29tcG9zaXRpbmcvaW1hZ2VzL2RpcmVjdC1wZGYtaW1hZ2UtZGlmZnMuaHRtbCI+aW1hZ2Ug
ZGlmZnM8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvaW1hZ2VzL2RpcmVjdC1w
ZGYtaW1hZ2UtZGlmZnMucG5nIj4wLjE0JTwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGEgaHJl
Zj0iL1ZvbHVtZXMvU1NEYXRhL0RldmVsb3BtZW50L09TWC93ZWJraXQvT3BlblNvdXJjZS9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9pbWFnZXMvZGlyZWN0LXN2Zy1pbWFnZS5odG1sIj5jb21wb3Np
dGluZy9pbWFnZXMvZGlyZWN0LXN2Zy1pbWFnZS5odG1sPC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0i
Y29tcG9zaXRpbmcvaW1hZ2VzL2RpcmVjdC1zdmctaW1hZ2UtZXhwZWN0ZWQucG5nIj5leHBlY3Rl
ZCBpbWFnZTwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9pbWFnZXMvZGlyZWN0
LXN2Zy1pbWFnZS1kaWZmcy5odG1sIj5pbWFnZSBkaWZmczwvYT4KPC90ZD4KPHRkPgo8YSBocmVm
PSJjb21wb3NpdGluZy9pbWFnZXMvZGlyZWN0LXN2Zy1pbWFnZS1kaWZmcy5wbmciPjAuMTQlPC9h
Pgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48YSBocmVmPSIvVm9sdW1lcy9TU0RhdGEvRGV2ZWxvcG1l
bnQvT1NYL3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL21hc2tzL2xh
eWVyLW1hc2stcGxhY2VtZW50Lmh0bWwiPmNvbXBvc2l0aW5nL21hc2tzL2xheWVyLW1hc2stcGxh
Y2VtZW50Lmh0bWw8L2E+PC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9tYXNrcy9sYXll
ci1tYXNrLXBsYWNlbWVudC1leHBlY3RlZC5wbmciPmV4cGVjdGVkIGltYWdlPC9hPgo8L3RkPgo8
dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL21hc2tzL2xheWVyLW1hc2stcGxhY2VtZW50LWRpZmZz
Lmh0bWwiPmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL21h
c2tzL2xheWVyLW1hc2stcGxhY2VtZW50LWRpZmZzLnBuZyI+MC4xNCU8L2E+CjwvdGQ+CjwvdHI+
Cjx0cj4KPHRkPjxhIGhyZWY9Ii9Wb2x1bWVzL1NTRGF0YS9EZXZlbG9wbWVudC9PU1gvd2Via2l0
L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbWFza3MvbWFza2VkLWFuY2VzdG9y
Lmh0bWwiPmNvbXBvc2l0aW5nL21hc2tzL21hc2tlZC1hbmNlc3Rvci5odG1sPC9hPjwvdGQ+Cjx0
ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvbWFza3MvbWFza2VkLWFuY2VzdG9yLWV4cGVjdGVkLnBu
ZyI+ZXhwZWN0ZWQgaW1hZ2U8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvbWFz
a3MvbWFza2VkLWFuY2VzdG9yLWRpZmZzLmh0bWwiPmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+
CjxhIGhyZWY9ImNvbXBvc2l0aW5nL21hc2tzL21hc2tlZC1hbmNlc3Rvci1kaWZmcy5wbmciPjAu
NjYlPC9hPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48YSBocmVmPSIvVm9sdW1lcy9TU0RhdGEvRGV2
ZWxvcG1lbnQvT1NYL3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL21h
c2tzL211bHRpcGxlLW1hc2tzLmh0bWwiPmNvbXBvc2l0aW5nL21hc2tzL211bHRpcGxlLW1hc2tz
Lmh0bWw8L2E+PC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9tYXNrcy9tdWx0aXBsZS1t
YXNrcy1leHBlY3RlZC5wbmciPmV4cGVjdGVkIGltYWdlPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9
ImNvbXBvc2l0aW5nL21hc2tzL211bHRpcGxlLW1hc2tzLWRpZmZzLmh0bWwiPmltYWdlIGRpZmZz
PC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL21hc2tzL211bHRpcGxlLW1hc2tz
LWRpZmZzLnBuZyI+MC41OSU8L2E+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxhIGhyZWY9Ii9Wb2x1
bWVzL1NTRGF0YS9EZXZlbG9wbWVudC9PU1gvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvbWFza3Mvc2ltcGxlLWNvbXBvc2l0ZWQtbWFzay5odG1sIj5jb21wb3NpdGlu
Zy9tYXNrcy9zaW1wbGUtY29tcG9zaXRlZC1tYXNrLmh0bWw8L2E+PC90ZD4KPHRkPgo8YSBocmVm
PSJjb21wb3NpdGluZy9tYXNrcy9zaW1wbGUtY29tcG9zaXRlZC1tYXNrLWV4cGVjdGVkLnBuZyI+
ZXhwZWN0ZWQgaW1hZ2U8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvbWFza3Mv
c2ltcGxlLWNvbXBvc2l0ZWQtbWFzay1kaWZmcy5odG1sIj5pbWFnZSBkaWZmczwvYT4KPC90ZD4K
PHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9tYXNrcy9zaW1wbGUtY29tcG9zaXRlZC1tYXNrLWRp
ZmZzLnBuZyI+MC44JTwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGEgaHJlZj0iL1ZvbHVtZXMv
U1NEYXRhL0RldmVsb3BtZW50L09TWC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9vdmVyZmxvdy9maXhlZC1wb3NpdGlvbi1hbmNlc3Rvci1jbGlwLmh0bWwiPmNvbXBv
c2l0aW5nL292ZXJmbG93L2ZpeGVkLXBvc2l0aW9uLWFuY2VzdG9yLWNsaXAuaHRtbDwvYT48L3Rk
Pgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL292ZXJmbG93L2ZpeGVkLXBvc2l0aW9uLWFuY2Vz
dG9yLWNsaXAtZXhwZWN0ZWQucG5nIj5leHBlY3RlZCBpbWFnZTwvYT4KPC90ZD4KPHRkPgo8YSBo
cmVmPSJjb21wb3NpdGluZy9vdmVyZmxvdy9maXhlZC1wb3NpdGlvbi1hbmNlc3Rvci1jbGlwLWRp
ZmZzLmh0bWwiPmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5n
L292ZXJmbG93L2ZpeGVkLXBvc2l0aW9uLWFuY2VzdG9yLWNsaXAtZGlmZnMucG5nIj4wLjk5JTwv
YT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGEgaHJlZj0iL1ZvbHVtZXMvU1NEYXRhL0RldmVsb3Bt
ZW50L09TWC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxv
dy9vdmVyZmxvdy1wb3NpdGlvbmluZy5odG1sIj5jb21wb3NpdGluZy9vdmVyZmxvdy9vdmVyZmxv
dy1wb3NpdGlvbmluZy5odG1sPC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvb3Zl
cmZsb3cvb3ZlcmZsb3ctcG9zaXRpb25pbmctZXhwZWN0ZWQucG5nIj5leHBlY3RlZCBpbWFnZTwv
YT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9vdmVyZmxvdy9vdmVyZmxvdy1wb3Np
dGlvbmluZy1kaWZmcy5odG1sIj5pbWFnZSBkaWZmczwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJj
b21wb3NpdGluZy9vdmVyZmxvdy9vdmVyZmxvdy1wb3NpdGlvbmluZy1kaWZmcy5wbmciPjAuMiU8
L2E+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxhIGhyZWY9Ii9Wb2x1bWVzL1NTRGF0YS9EZXZlbG9w
bWVudC9PU1gvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZs
b3cvb3ZlcmZsb3ctc2Nyb2xsLmh0bWwiPmNvbXBvc2l0aW5nL292ZXJmbG93L292ZXJmbG93LXNj
cm9sbC5odG1sPC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvb3ZlcmZsb3cvb3Zl
cmZsb3ctc2Nyb2xsLWV4cGVjdGVkLnBuZyI+ZXhwZWN0ZWQgaW1hZ2U8L2E+CjwvdGQ+Cjx0ZD4K
PGEgaHJlZj0iY29tcG9zaXRpbmcvb3ZlcmZsb3cvb3ZlcmZsb3ctc2Nyb2xsLWRpZmZzLmh0bWwi
PmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL292ZXJmbG93
L292ZXJmbG93LXNjcm9sbC1kaWZmcy5wbmciPjEuODglPC9hPgo8L3RkPgo8L3RyPgo8dHI+Cjx0
ZD48YSBocmVmPSIvVm9sdW1lcy9TU0RhdGEvRGV2ZWxvcG1lbnQvT1NYL3dlYmtpdC9PcGVuU291
cmNlL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L3JlcGFpbnQtYWZ0ZXItbG9zaW5n
LXNjcm9sbGJhcnMuaHRtbCI+Y29tcG9zaXRpbmcvb3ZlcmZsb3cvcmVwYWludC1hZnRlci1sb3Np
bmctc2Nyb2xsYmFycy5odG1sPC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvb3Zl
cmZsb3cvcmVwYWludC1hZnRlci1sb3Npbmctc2Nyb2xsYmFycy1leHBlY3RlZC5wbmciPmV4cGVj
dGVkIGltYWdlPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL292ZXJmbG93L3Jl
cGFpbnQtYWZ0ZXItbG9zaW5nLXNjcm9sbGJhcnMtZGlmZnMuaHRtbCI+aW1hZ2UgZGlmZnM8L2E+
CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvb3ZlcmZsb3cvcmVwYWludC1hZnRlci1s
b3Npbmctc2Nyb2xsYmFycy1kaWZmcy5wbmciPjAuMjklPC9hPgo8L3RkPgo8L3RyPgo8dHI+Cjx0
ZD48YSBocmVmPSIvVm9sdW1lcy9TU0RhdGEvRGV2ZWxvcG1lbnQvT1NYL3dlYmtpdC9PcGVuU291
cmNlL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L3Njcm9sbC1hbmNlc3Rvci11cGRh
dGUuaHRtbCI+Y29tcG9zaXRpbmcvb3ZlcmZsb3cvc2Nyb2xsLWFuY2VzdG9yLXVwZGF0ZS5odG1s
PC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvb3ZlcmZsb3cvc2Nyb2xsLWFuY2Vz
dG9yLXVwZGF0ZS1leHBlY3RlZC5wbmciPmV4cGVjdGVkIGltYWdlPC9hPgo8L3RkPgo8dGQ+Cjxh
IGhyZWY9ImNvbXBvc2l0aW5nL292ZXJmbG93L3Njcm9sbC1hbmNlc3Rvci11cGRhdGUtZGlmZnMu
aHRtbCI+aW1hZ2UgZGlmZnM8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvb3Zl
cmZsb3cvc2Nyb2xsLWFuY2VzdG9yLXVwZGF0ZS1kaWZmcy5wbmciPjAuMiU8L2E+CjwvdGQ+Cjwv
dHI+Cjx0cj4KPHRkPjxhIGhyZWY9Ii9Wb2x1bWVzL1NTRGF0YS9EZXZlbG9wbWVudC9PU1gvd2Vi
a2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvYW5pbWF0
aW9uLWluc2lkZS1yZWZsZWN0aW9uLmh0bWwiPmNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL2FuaW1h
dGlvbi1pbnNpZGUtcmVmbGVjdGlvbi5odG1sPC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9z
aXRpbmcvcmVmbGVjdGlvbnMvYW5pbWF0aW9uLWluc2lkZS1yZWZsZWN0aW9uLWV4cGVjdGVkLnBu
ZyI+ZXhwZWN0ZWQgaW1hZ2U8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvcmVm
bGVjdGlvbnMvYW5pbWF0aW9uLWluc2lkZS1yZWZsZWN0aW9uLWRpZmZzLmh0bWwiPmltYWdlIGRp
ZmZzPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL2FuaW1h
dGlvbi1pbnNpZGUtcmVmbGVjdGlvbi1kaWZmcy5wbmciPjAuMjIlPC9hPgo8L3RkPgo8L3RyPgo8
dHI+Cjx0ZD48YSBocmVmPSIvVm9sdW1lcy9TU0RhdGEvRGV2ZWxvcG1lbnQvT1NYL3dlYmtpdC9P
cGVuU291cmNlL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL2NvbXBvc2l0aW5n
LWNoYW5nZS1pbnNpZGUtcmVmbGVjdGlvbi5odG1sIj5jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9j
b21wb3NpdGluZy1jaGFuZ2UtaW5zaWRlLXJlZmxlY3Rpb24uaHRtbDwvYT48L3RkPgo8dGQ+Cjxh
IGhyZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL2NvbXBvc2l0aW5nLWNoYW5nZS1pbnNpZGUt
cmVmbGVjdGlvbi1leHBlY3RlZC5wbmciPmV4cGVjdGVkIGltYWdlPC9hPgo8L3RkPgo8dGQ+Cjxh
IGhyZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL2NvbXBvc2l0aW5nLWNoYW5nZS1pbnNpZGUt
cmVmbGVjdGlvbi1kaWZmcy5odG1sIj5pbWFnZSBkaWZmczwvYT4KPC90ZD4KPHRkPgo8YSBocmVm
PSJjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9jb21wb3NpdGluZy1jaGFuZ2UtaW5zaWRlLXJlZmxl
Y3Rpb24tZGlmZnMucG5nIj4wLjE1JTwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGEgaHJlZj0i
L1ZvbHVtZXMvU1NEYXRhL0RldmVsb3BtZW50L09TWC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9kZWVwbHktbmVzdGVkLXJlZmxlY3Rpb25zLmh0
bWwiPmNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL2RlZXBseS1uZXN0ZWQtcmVmbGVjdGlvbnMuaHRt
bDwvYT48L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL2RlZXBseS1u
ZXN0ZWQtcmVmbGVjdGlvbnMtZXhwZWN0ZWQucG5nIj5leHBlY3RlZCBpbWFnZTwvYT4KPC90ZD4K
PHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9kZWVwbHktbmVzdGVkLXJlZmxl
Y3Rpb25zLWRpZmZzLmh0bWwiPmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNv
bXBvc2l0aW5nL3JlZmxlY3Rpb25zL2RlZXBseS1uZXN0ZWQtcmVmbGVjdGlvbnMtZGlmZnMucG5n
Ij4xLjA4JTwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGEgaHJlZj0iL1ZvbHVtZXMvU1NEYXRh
L0RldmVsb3BtZW50L09TWC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9yZWZsZWN0aW9ucy9tYXNrZWQtcmVmbGVjdGlvbi1vbi1jb21wb3NpdGVkLmh0bWwiPmNvbXBv
c2l0aW5nL3JlZmxlY3Rpb25zL21hc2tlZC1yZWZsZWN0aW9uLW9uLWNvbXBvc2l0ZWQuaHRtbDwv
YT48L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL21hc2tlZC1yZWZs
ZWN0aW9uLW9uLWNvbXBvc2l0ZWQtZXhwZWN0ZWQucG5nIj5leHBlY3RlZCBpbWFnZTwvYT4KPC90
ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9tYXNrZWQtcmVmbGVjdGlv
bi1vbi1jb21wb3NpdGVkLWRpZmZzLmh0bWwiPmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+Cjxh
IGhyZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL21hc2tlZC1yZWZsZWN0aW9uLW9uLWNvbXBv
c2l0ZWQtZGlmZnMucG5nIj4wLjE4JTwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGEgaHJlZj0i
L1ZvbHVtZXMvU1NEYXRhL0RldmVsb3BtZW50L09TWC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVjdGlvbi1hbmNob3ItcG9p
bnQuaHRtbCI+Y29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24tYW5jaG9y
LXBvaW50Lmh0bWw8L2E+PC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9yZWZsZWN0aW9u
cy9uZXN0ZWQtcmVmbGVjdGlvbi1hbmNob3ItcG9pbnQtZXhwZWN0ZWQucG5nIj5leHBlY3RlZCBp
bWFnZTwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0
ZWQtcmVmbGVjdGlvbi1hbmNob3ItcG9pbnQtZGlmZnMuaHRtbCI+aW1hZ2UgZGlmZnM8L2E+Cjwv
dGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rp
b24tYW5jaG9yLXBvaW50LWRpZmZzLnBuZyI+MC4zJTwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+
PGEgaHJlZj0iL1ZvbHVtZXMvU1NEYXRhL0RldmVsb3BtZW50L09TWC93ZWJraXQvT3BlblNvdXJj
ZS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVjdGlvbi1h
bmltYXRlZC5odG1sIj5jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVjdGlvbi1h
bmltYXRlZC5odG1sPC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvcmVmbGVjdGlv
bnMvbmVzdGVkLXJlZmxlY3Rpb24tYW5pbWF0ZWQtZXhwZWN0ZWQucG5nIj5leHBlY3RlZCBpbWFn
ZTwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQt
cmVmbGVjdGlvbi1hbmltYXRlZC1kaWZmcy5odG1sIj5pbWFnZSBkaWZmczwvYT4KPC90ZD4KPHRk
Pgo8YSBocmVmPSJjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVjdGlvbi1hbmlt
YXRlZC1kaWZmcy5wbmciPjEuMDMlPC9hPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48YSBocmVmPSIv
Vm9sdW1lcy9TU0RhdGEvRGV2ZWxvcG1lbnQvT1NYL3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9uLW1hc2stY2hhbmdl
Lmh0bWwiPmNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9uLW1hc2stY2hh
bmdlLmh0bWw8L2E+PC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9u
ZXN0ZWQtcmVmbGVjdGlvbi1tYXNrLWNoYW5nZS1leHBlY3RlZC5wbmciPmV4cGVjdGVkIGltYWdl
PC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1y
ZWZsZWN0aW9uLW1hc2stY2hhbmdlLWRpZmZzLmh0bWwiPmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8
dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9uLW1h
c2stY2hhbmdlLWRpZmZzLnBuZyI+MC40MiU8L2E+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxhIGhy
ZWY9Ii9Wb2x1bWVzL1NTRGF0YS9EZXZlbG9wbWVudC9PU1gvd2Via2l0L09wZW5Tb3VyY2UvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24tb24tb3Zl
cmZsb3cuaHRtbCI+Y29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24tb24t
b3ZlcmZsb3cuaHRtbDwvYT48L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rp
b25zL25lc3RlZC1yZWZsZWN0aW9uLW9uLW92ZXJmbG93LWV4cGVjdGVkLnBuZyI+ZXhwZWN0ZWQg
aW1hZ2U8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVz
dGVkLXJlZmxlY3Rpb24tb24tb3ZlcmZsb3ctZGlmZnMuaHRtbCI+aW1hZ2UgZGlmZnM8L2E+Cjwv
dGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rp
b24tb24tb3ZlcmZsb3ctZGlmZnMucG5nIj4wLjQxJTwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+
PGEgaHJlZj0iL1ZvbHVtZXMvU1NEYXRhL0RldmVsb3BtZW50L09TWC93ZWJraXQvT3BlblNvdXJj
ZS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVjdGlvbi1v
cGFjaXR5Lmh0bWwiPmNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9uLW9w
YWNpdHkuaHRtbDwvYT48L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rpb25z
L25lc3RlZC1yZWZsZWN0aW9uLW9wYWNpdHktZXhwZWN0ZWQucG5nIj5leHBlY3RlZCBpbWFnZTwv
YT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVm
bGVjdGlvbi1vcGFjaXR5LWRpZmZzLmh0bWwiPmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+Cjxh
IGhyZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9uLW9wYWNpdHkt
ZGlmZnMucG5nIj4wLjg0JTwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGEgaHJlZj0iL1ZvbHVt
ZXMvU1NEYXRhL0RldmVsb3BtZW50L09TWC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVjdGlvbi1zaXplLWNoYW5nZS5odG1s
Ij5jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVjdGlvbi1zaXplLWNoYW5nZS5o
dG1sPC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVk
LXJlZmxlY3Rpb24tc2l6ZS1jaGFuZ2UtZXhwZWN0ZWQucG5nIj5leHBlY3RlZCBpbWFnZTwvYT4K
PC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVj
dGlvbi1zaXplLWNoYW5nZS1kaWZmcy5odG1sIj5pbWFnZSBkaWZmczwvYT4KPC90ZD4KPHRkPgo8
YSBocmVmPSJjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVjdGlvbi1zaXplLWNo
YW5nZS1kaWZmcy5wbmciPjAuNDElPC9hPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48YSBocmVmPSIv
Vm9sdW1lcy9TU0RhdGEvRGV2ZWxvcG1lbnQvT1NYL3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9uLXRyYW5zZm9ybWVk
Mi5odG1sIj5jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVjdGlvbi10cmFuc2Zv
cm1lZDIuaHRtbDwvYT48L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rpb25z
L25lc3RlZC1yZWZsZWN0aW9uLXRyYW5zZm9ybWVkMi1leHBlY3RlZC5wbmciPmV4cGVjdGVkIGlt
YWdlPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3Rl
ZC1yZWZsZWN0aW9uLXRyYW5zZm9ybWVkMi1kaWZmcy5odG1sIj5pbWFnZSBkaWZmczwvYT4KPC90
ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVjdGlv
bi10cmFuc2Zvcm1lZDItZGlmZnMucG5nIj4wLjMxJTwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+
PGEgaHJlZj0iL1ZvbHVtZXMvU1NEYXRhL0RldmVsb3BtZW50L09TWC93ZWJraXQvT3BlblNvdXJj
ZS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVjdGlvbi10
cmFuc2Zvcm1lZC5odG1sIj5jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVjdGlv
bi10cmFuc2Zvcm1lZC5odG1sPC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvcmVm
bGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24tdHJhbnNmb3JtZWQtZXhwZWN0ZWQucG5nIj5leHBl
Y3RlZCBpbWFnZTwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9yZWZsZWN0aW9u
cy9uZXN0ZWQtcmVmbGVjdGlvbi10cmFuc2Zvcm1lZC1kaWZmcy5odG1sIj5pbWFnZSBkaWZmczwv
YT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVm
bGVjdGlvbi10cmFuc2Zvcm1lZC1kaWZmcy5wbmciPjAuMzElPC9hPgo8L3RkPgo8L3RyPgo8dHI+
Cjx0ZD48YSBocmVmPSIvVm9sdW1lcy9TU0RhdGEvRGV2ZWxvcG1lbnQvT1NYL3dlYmtpdC9PcGVu
U291cmNlL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0
aW9uLXRyYW5zaXRpb24uaHRtbCI+Y29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxl
Y3Rpb24tdHJhbnNpdGlvbi5odG1sPC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcv
cmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24tdHJhbnNpdGlvbi1leHBlY3RlZC5wbmciPmV4
cGVjdGVkIGltYWdlPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rp
b25zL25lc3RlZC1yZWZsZWN0aW9uLXRyYW5zaXRpb24tZGlmZnMuaHRtbCI+aW1hZ2UgZGlmZnM8
L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJl
ZmxlY3Rpb24tdHJhbnNpdGlvbi1kaWZmcy5wbmciPjAuMjklPC9hPgo8L3RkPgo8L3RyPgo8dHI+
Cjx0ZD48YSBocmVmPSIvVm9sdW1lcy9TU0RhdGEvRGV2ZWxvcG1lbnQvT1NYL3dlYmtpdC9PcGVu
U291cmNlL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0
aW9uLmh0bWwiPmNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9uLmh0bWw8
L2E+PC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVm
bGVjdGlvbi1leHBlY3RlZC5wbmciPmV4cGVjdGVkIGltYWdlPC9hPgo8L3RkPgo8dGQ+CjxhIGhy
ZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9uLWRpZmZzLmh0bWwi
PmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rp
b25zL25lc3RlZC1yZWZsZWN0aW9uLWRpZmZzLnBuZyI+MC4yOCU8L2E+CjwvdGQ+CjwvdHI+Cjx0
cj4KPHRkPjxhIGhyZWY9Ii9Wb2x1bWVzL1NTRGF0YS9EZXZlbG9wbWVudC9PU1gvd2Via2l0L09w
ZW5Tb3VyY2UvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvcmVmbGVjdGlvbi1p
bi1jb21wb3NpdGVkLmh0bWwiPmNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3JlZmxlY3Rpb24taW4t
Y29tcG9zaXRlZC5odG1sPC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvcmVmbGVj
dGlvbnMvcmVmbGVjdGlvbi1pbi1jb21wb3NpdGVkLWV4cGVjdGVkLnBuZyI+ZXhwZWN0ZWQgaW1h
Z2U8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvcmVmbGVj
dGlvbi1pbi1jb21wb3NpdGVkLWRpZmZzLmh0bWwiPmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+
CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3JlZmxlY3Rpb24taW4tY29tcG9zaXRl
ZC1kaWZmcy5wbmciPjAuMTQlPC9hPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48YSBocmVmPSIvVm9s
dW1lcy9TU0RhdGEvRGV2ZWxvcG1lbnQvT1NYL3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3JlZmxlY3Rpb24tb24tY29tcG9zaXRlZC5odG1sIj5j
b21wb3NpdGluZy9yZWZsZWN0aW9ucy9yZWZsZWN0aW9uLW9uLWNvbXBvc2l0ZWQuaHRtbDwvYT48
L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3JlZmxlY3Rpb24tb24t
Y29tcG9zaXRlZC1leHBlY3RlZC5wbmciPmV4cGVjdGVkIGltYWdlPC9hPgo8L3RkPgo8dGQ+Cjxh
IGhyZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3JlZmxlY3Rpb24tb24tY29tcG9zaXRlZC1k
aWZmcy5odG1sIj5pbWFnZSBkaWZmczwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGlu
Zy9yZWZsZWN0aW9ucy9yZWZsZWN0aW9uLW9uLWNvbXBvc2l0ZWQtZGlmZnMucG5nIj4wLjElPC9h
Pgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48YSBocmVmPSIvVm9sdW1lcy9TU0RhdGEvRGV2ZWxvcG1l
bnQvT1NYL3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rp
b25zL3JlZmxlY3Rpb24tb3BhY2l0eS5odG1sIj5jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9yZWZs
ZWN0aW9uLW9wYWNpdHkuaHRtbDwvYT48L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3Jl
ZmxlY3Rpb25zL3JlZmxlY3Rpb24tb3BhY2l0eS1leHBlY3RlZC5wbmciPmV4cGVjdGVkIGltYWdl
PC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3JlZmxlY3Rp
b24tb3BhY2l0eS1kaWZmcy5odG1sIj5pbWFnZSBkaWZmczwvYT4KPC90ZD4KPHRkPgo8YSBocmVm
PSJjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9yZWZsZWN0aW9uLW9wYWNpdHktZGlmZnMucG5nIj4w
LjQ5JTwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGEgaHJlZj0iL1ZvbHVtZXMvU1NEYXRhL0Rl
dmVsb3BtZW50L09TWC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9y
ZWZsZWN0aW9ucy9yZWZsZWN0aW9uLXBvc2l0aW9uaW5nMi5odG1sIj5jb21wb3NpdGluZy9yZWZs
ZWN0aW9ucy9yZWZsZWN0aW9uLXBvc2l0aW9uaW5nMi5odG1sPC9hPjwvdGQ+Cjx0ZD4KPGEgaHJl
Zj0iY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvcmVmbGVjdGlvbi1wb3NpdGlvbmluZzItZXhwZWN0
ZWQucG5nIj5leHBlY3RlZCBpbWFnZTwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGlu
Zy9yZWZsZWN0aW9ucy9yZWZsZWN0aW9uLXBvc2l0aW9uaW5nMi1kaWZmcy5odG1sIj5pbWFnZSBk
aWZmczwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9yZWZs
ZWN0aW9uLXBvc2l0aW9uaW5nMi1kaWZmcy5wbmciPjAuMTUlPC9hPgo8L3RkPgo8L3RyPgo8dHI+
Cjx0ZD48YSBocmVmPSIvVm9sdW1lcy9TU0RhdGEvRGV2ZWxvcG1lbnQvT1NYL3dlYmtpdC9PcGVu
U291cmNlL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3JlZmxlY3Rpb24tcG9z
aXRpb25pbmcuaHRtbCI+Y29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvcmVmbGVjdGlvbi1wb3NpdGlv
bmluZy5odG1sPC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMv
cmVmbGVjdGlvbi1wb3NpdGlvbmluZy1leHBlY3RlZC5wbmciPmV4cGVjdGVkIGltYWdlPC9hPgo8
L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3JlZmxlY3Rpb24tcG9z
aXRpb25pbmctZGlmZnMuaHRtbCI+aW1hZ2UgZGlmZnM8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0i
Y29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvcmVmbGVjdGlvbi1wb3NpdGlvbmluZy1kaWZmcy5wbmci
PjAuMTUlPC9hPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48YSBocmVmPSIvVm9sdW1lcy9TU0RhdGEv
RGV2ZWxvcG1lbnQvT1NYL3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L3JlZmxlY3Rpb25zL3JlbW92ZS1hZGQtcmVmbGVjdGlvbi5odG1sIj5jb21wb3NpdGluZy9yZWZs
ZWN0aW9ucy9yZW1vdmUtYWRkLXJlZmxlY3Rpb24uaHRtbDwvYT48L3RkPgo8dGQ+CjxhIGhyZWY9
ImNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3JlbW92ZS1hZGQtcmVmbGVjdGlvbi1leHBlY3RlZC5w
bmciPmV4cGVjdGVkIGltYWdlPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3Jl
ZmxlY3Rpb25zL3JlbW92ZS1hZGQtcmVmbGVjdGlvbi1kaWZmcy5odG1sIj5pbWFnZSBkaWZmczwv
YT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9yZW1vdmUtYWRk
LXJlZmxlY3Rpb24tZGlmZnMucG5nIj4wLjE0JTwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGEg
aHJlZj0iL1ZvbHVtZXMvU1NEYXRhL0RldmVsb3BtZW50L09TWC93ZWJraXQvT3BlblNvdXJjZS9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy90cmFuc2Zvcm0taW5zaWRlLXJlZmxl
Y3Rpb24uaHRtbCI+Y29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvdHJhbnNmb3JtLWluc2lkZS1yZWZs
ZWN0aW9uLmh0bWw8L2E+PC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9yZWZsZWN0aW9u
cy90cmFuc2Zvcm0taW5zaWRlLXJlZmxlY3Rpb24tZXhwZWN0ZWQucG5nIj5leHBlY3RlZCBpbWFn
ZTwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9yZWZsZWN0aW9ucy90cmFuc2Zv
cm0taW5zaWRlLXJlZmxlY3Rpb24tZGlmZnMuaHRtbCI+aW1hZ2UgZGlmZnM8L2E+CjwvdGQ+Cjx0
ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvdHJhbnNmb3JtLWluc2lkZS1yZWZs
ZWN0aW9uLWRpZmZzLnBuZyI+MC4yMSU8L2E+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxhIGhyZWY9
Ii9Wb2x1bWVzL1NTRGF0YS9EZXZlbG9wbWVudC9PU1gvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvcnRsL3J0bC1hYnNvbHV0ZS1vdmVyZmxvdy1zY3JvbGxlZC5odG1s
Ij5jb21wb3NpdGluZy9ydGwvcnRsLWFic29sdXRlLW92ZXJmbG93LXNjcm9sbGVkLmh0bWw8L2E+
PC90ZD4KPC90cj4KPHRyPgo8dGQ+PGEgaHJlZj0iL1ZvbHVtZXMvU1NEYXRhL0RldmVsb3BtZW50
L09TWC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9ydGwvcnRsLWZp
eGVkLW92ZXJmbG93LXNjcm9sbGVkLmh0bWwiPmNvbXBvc2l0aW5nL3J0bC9ydGwtZml4ZWQtb3Zl
cmZsb3ctc2Nyb2xsZWQuaHRtbDwvYT48L3RkPgo8L3RyPgo8dHI+Cjx0ZD48YSBocmVmPSIvVm9s
dW1lcy9TU0RhdGEvRGV2ZWxvcG1lbnQvT1NYL3dlYmtpdC9PcGVuU291cmNlL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL3NjYWxpbmcvYmFzaWMtc2NhbGluZy5odG1sIj5jb21wb3NpdGluZy9zY2Fs
aW5nL2Jhc2ljLXNjYWxpbmcuaHRtbDwvYT48L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5n
L3NjYWxpbmcvYmFzaWMtc2NhbGluZy1leHBlY3RlZC5wbmciPmV4cGVjdGVkIGltYWdlPC9hPgo8
L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3NjYWxpbmcvYmFzaWMtc2NhbGluZy1kaWZm
cy5odG1sIj5pbWFnZSBkaWZmczwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9z
Y2FsaW5nL2Jhc2ljLXNjYWxpbmctZGlmZnMucG5nIj4wLjE3JTwvYT4KPC90ZD4KPC90cj4KPHRy
Pgo8dGQ+PGEgaHJlZj0iL1ZvbHVtZXMvU1NEYXRhL0RldmVsb3BtZW50L09TWC93ZWJraXQvT3Bl
blNvdXJjZS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9zY2FsaW5nL3NjYWxlZC1wZXJzcGVjdGl2
ZS5odG1sIj5jb21wb3NpdGluZy9zY2FsaW5nL3NjYWxlZC1wZXJzcGVjdGl2ZS5odG1sPC9hPjwv
dGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvc2NhbGluZy9zY2FsZWQtcGVyc3BlY3RpdmUt
ZXhwZWN0ZWQucG5nIj5leHBlY3RlZCBpbWFnZTwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21w
b3NpdGluZy9zY2FsaW5nL3NjYWxlZC1wZXJzcGVjdGl2ZS1kaWZmcy5odG1sIj5pbWFnZSBkaWZm
czwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9zY2FsaW5nL3NjYWxlZC1wZXJz
cGVjdGl2ZS1kaWZmcy5wbmciPjAuMjQlPC9hPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48YSBocmVm
PSIvVm9sdW1lcy9TU0RhdGEvRGV2ZWxvcG1lbnQvT1NYL3dlYmtpdC9PcGVuU291cmNlL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL3NjYWxpbmcvc2NhbGVkLXJvdGF0aW9uLmh0bWwiPmNvbXBvc2l0
aW5nL3NjYWxpbmcvc2NhbGVkLXJvdGF0aW9uLmh0bWw8L2E+PC90ZD4KPHRkPgo8YSBocmVmPSJj
b21wb3NpdGluZy9zY2FsaW5nL3NjYWxlZC1yb3RhdGlvbi1leHBlY3RlZC5wbmciPmV4cGVjdGVk
IGltYWdlPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3NjYWxpbmcvc2NhbGVk
LXJvdGF0aW9uLWRpZmZzLmh0bWwiPmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9
ImNvbXBvc2l0aW5nL3NjYWxpbmcvc2NhbGVkLXJvdGF0aW9uLWRpZmZzLnBuZyI+MC4xOCU8L2E+
CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxhIGhyZWY9Ii9Wb2x1bWVzL1NTRGF0YS9EZXZlbG9wbWVu
dC9PU1gvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvc2NhbGluZy9z
Y2FsZWQtc2tldy5odG1sIj5jb21wb3NpdGluZy9zY2FsaW5nL3NjYWxlZC1za2V3Lmh0bWw8L2E+
PC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9zY2FsaW5nL3NjYWxlZC1za2V3LWV4cGVj
dGVkLnBuZyI+ZXhwZWN0ZWQgaW1hZ2U8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRp
bmcvc2NhbGluZy9zY2FsZWQtc2tldy1kaWZmcy5odG1sIj5pbWFnZSBkaWZmczwvYT4KPC90ZD4K
PHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy9zY2FsaW5nL3NjYWxlZC1za2V3LWRpZmZzLnBuZyI+
MC4xNyU8L2E+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxhIGhyZWY9Ii9Wb2x1bWVzL1NTRGF0YS9E
ZXZlbG9wbWVudC9PU1gvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
c2NhbGluZy90aWxlZC1sYXllci1yZWN1cnNpb24uaHRtbCI+Y29tcG9zaXRpbmcvc2NhbGluZy90
aWxlZC1sYXllci1yZWN1cnNpb24uaHRtbDwvYT48L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0
aW5nL3NjYWxpbmcvdGlsZWQtbGF5ZXItcmVjdXJzaW9uLWV4cGVjdGVkLnBuZyI+ZXhwZWN0ZWQg
aW1hZ2U8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvc2NhbGluZy90aWxlZC1s
YXllci1yZWN1cnNpb24tZGlmZnMuaHRtbCI+aW1hZ2UgZGlmZnM8L2E+CjwvdGQ+Cjx0ZD4KPGEg
aHJlZj0iY29tcG9zaXRpbmcvc2NhbGluZy90aWxlZC1sYXllci1yZWN1cnNpb24tZGlmZnMucG5n
Ij4wLjM1JTwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGEgaHJlZj0iL1ZvbHVtZXMvU1NEYXRh
L0RldmVsb3BtZW50L09TWC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9zaGFkb3dzL3NoYWRvdy1kcmF3aW5nLmh0bWwiPmNvbXBvc2l0aW5nL3NoYWRvd3Mvc2hhZG93
LWRyYXdpbmcuaHRtbDwvYT48L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3NoYWRvd3Mv
c2hhZG93LWRyYXdpbmctZXhwZWN0ZWQucG5nIj5leHBlY3RlZCBpbWFnZTwvYT4KPC90ZD4KPHRk
Pgo8YSBocmVmPSJjb21wb3NpdGluZy9zaGFkb3dzL3NoYWRvdy1kcmF3aW5nLWRpZmZzLmh0bWwi
PmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3NoYWRvd3Mv
c2hhZG93LWRyYXdpbmctZGlmZnMucG5nIj4wLjE5JTwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+
PGEgaHJlZj0iL1ZvbHVtZXMvU1NEYXRhL0RldmVsb3BtZW50L09TWC93ZWJraXQvT3BlblNvdXJj
ZS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvY29uc3RyYWluZWQtbGF5ZXItc2l6ZS5o
dG1sIj5jb21wb3NpdGluZy90aWxpbmcvY29uc3RyYWluZWQtbGF5ZXItc2l6ZS5odG1sPC9hPjwv
dGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvdGlsaW5nL2NvbnN0cmFpbmVkLWxheWVyLXNp
emUtZXhwZWN0ZWQucG5nIj5leHBlY3RlZCBpbWFnZTwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJj
b21wb3NpdGluZy90aWxpbmcvY29uc3RyYWluZWQtbGF5ZXItc2l6ZS1kaWZmcy5odG1sIj5pbWFn
ZSBkaWZmczwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy90aWxpbmcvY29uc3Ry
YWluZWQtbGF5ZXItc2l6ZS1kaWZmcy5wbmciPjMuNDIlPC9hPgo8L3RkPgo8L3RyPgo8dHI+Cjx0
ZD48YSBocmVmPSIvVm9sdW1lcy9TU0RhdGEvRGV2ZWxvcG1lbnQvT1NYL3dlYmtpdC9PcGVuU291
cmNlL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9jcmFzaC1yZXBhcmVudC10aWxlZC1s
YXllci5odG1sIj5jb21wb3NpdGluZy90aWxpbmcvY3Jhc2gtcmVwYXJlbnQtdGlsZWQtbGF5ZXIu
aHRtbDwvYT48L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBvc2l0aW5nL3RpbGluZy9jcmFzaC1yZXBh
cmVudC10aWxlZC1sYXllci1leHBlY3RlZC50eHQiPmV4cGVjdGVkPC9hPgo8L3RkPgo8dGQ+Cjxh
IGhyZWY9ImNvbXBvc2l0aW5nL3RpbGluZy9jcmFzaC1yZXBhcmVudC10aWxlZC1sYXllci1hY3R1
YWwudHh0Ij5hY3R1YWw8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvdGlsaW5n
L2NyYXNoLXJlcGFyZW50LXRpbGVkLWxheWVyLWRpZmZzLnR4dCI+ZGlmZjwvYT4KPC90ZD4KPHRk
Pgo8YSBocmVmPSJjb21wb3NpdGluZy90aWxpbmcvY3Jhc2gtcmVwYXJlbnQtdGlsZWQtbGF5ZXIt
cHJldHR5LWRpZmYuaHRtbCI+cHJldHR5IGRpZmY8L2E+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxh
IGhyZWY9Ii9Wb2x1bWVzL1NTRGF0YS9EZXZlbG9wbWVudC9PU1gvd2Via2l0L09wZW5Tb3VyY2Uv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdHJhbnNpdGlvbnMvc2NhbGUtdHJhbnNpdGlvbi1uby1z
dGFydC5odG1sIj5jb21wb3NpdGluZy90cmFuc2l0aW9ucy9zY2FsZS10cmFuc2l0aW9uLW5vLXN0
YXJ0Lmh0bWw8L2E+PC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy90cmFuc2l0aW9ucy9z
Y2FsZS10cmFuc2l0aW9uLW5vLXN0YXJ0LWV4cGVjdGVkLnBuZyI+ZXhwZWN0ZWQgaW1hZ2U8L2E+
CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvdHJhbnNpdGlvbnMvc2NhbGUtdHJhbnNp
dGlvbi1uby1zdGFydC1kaWZmcy5odG1sIj5pbWFnZSBkaWZmczwvYT4KPC90ZD4KPHRkPgo8YSBo
cmVmPSJjb21wb3NpdGluZy90cmFuc2l0aW9ucy9zY2FsZS10cmFuc2l0aW9uLW5vLXN0YXJ0LWRp
ZmZzLnBuZyI+MC40OCU8L2E+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxhIGhyZWY9Ii9Wb2x1bWVz
L1NTRGF0YS9EZXZlbG9wbWVudC9PU1gvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvdmlkZW8vdmlkZW8tYmFja2dyb3VuZC1jb2xvci5odG1sIj5jb21wb3NpdGluZy92
aWRlby92aWRlby1iYWNrZ3JvdW5kLWNvbG9yLmh0bWw8L2E+PC90ZD4KPHRkPgo8YSBocmVmPSJj
b21wb3NpdGluZy92aWRlby92aWRlby1iYWNrZ3JvdW5kLWNvbG9yLWV4cGVjdGVkLnBuZyI+ZXhw
ZWN0ZWQgaW1hZ2U8L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvdmlkZW8vdmlk
ZW8tYmFja2dyb3VuZC1jb2xvci1kaWZmcy5odG1sIj5pbWFnZSBkaWZmczwvYT4KPC90ZD4KPHRk
Pgo8YSBocmVmPSJjb21wb3NpdGluZy92aWRlby92aWRlby1iYWNrZ3JvdW5kLWNvbG9yLWRpZmZz
LnBuZyI+MC42JTwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGEgaHJlZj0iL1ZvbHVtZXMvU1NE
YXRhL0RldmVsb3BtZW50L09TWC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy93ZWJnbC93ZWJnbC1iYWNrZ3JvdW5kLWNvbG9yLmh0bWwiPmNvbXBvc2l0aW5nL3dlYmds
L3dlYmdsLWJhY2tncm91bmQtY29sb3IuaHRtbDwvYT48L3RkPgo8dGQ+CjxhIGhyZWY9ImNvbXBv
c2l0aW5nL3dlYmdsL3dlYmdsLWJhY2tncm91bmQtY29sb3ItZXhwZWN0ZWQucG5nIj5leHBlY3Rl
ZCBpbWFnZTwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy93ZWJnbC93ZWJnbC1i
YWNrZ3JvdW5kLWNvbG9yLWRpZmZzLmh0bWwiPmltYWdlIGRpZmZzPC9hPgo8L3RkPgo8dGQ+Cjxh
IGhyZWY9ImNvbXBvc2l0aW5nL3dlYmdsL3dlYmdsLWJhY2tncm91bmQtY29sb3ItZGlmZnMucG5n
Ij4wLjg3JTwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGEgaHJlZj0iL1ZvbHVtZXMvU1NEYXRh
L0RldmVsb3BtZW50L09TWC93ZWJraXQvT3BlblNvdXJjZS9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy93ZWJnbC93ZWJnbC1uby1hbHBoYS5odG1sIj5jb21wb3NpdGluZy93ZWJnbC93ZWJnbC1uby1h
bHBoYS5odG1sPC9hPjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvd2ViZ2wvd2ViZ2wt
bm8tYWxwaGEtZXhwZWN0ZWQucG5nIj5leHBlY3RlZCBpbWFnZTwvYT4KPC90ZD4KPHRkPgo8YSBo
cmVmPSJjb21wb3NpdGluZy93ZWJnbC93ZWJnbC1uby1hbHBoYS1kaWZmcy5odG1sIj5pbWFnZSBk
aWZmczwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3NpdGluZy93ZWJnbC93ZWJnbC1uby1h
bHBoYS1kaWZmcy5wbmciPjEuMSU8L2E+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxhIGhyZWY9Ii9W
b2x1bWVzL1NTRGF0YS9EZXZlbG9wbWVudC9PU1gvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvd2ViZ2wvd2ViZ2wtcmVmbGVjdGlvbi5odG1sIj5jb21wb3NpdGluZy93
ZWJnbC93ZWJnbC1yZWZsZWN0aW9uLmh0bWw8L2E+PC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3Np
dGluZy93ZWJnbC93ZWJnbC1yZWZsZWN0aW9uLWV4cGVjdGVkLnBuZyI+ZXhwZWN0ZWQgaW1hZ2U8
L2E+CjwvdGQ+Cjx0ZD4KPGEgaHJlZj0iY29tcG9zaXRpbmcvd2ViZ2wvd2ViZ2wtcmVmbGVjdGlv
bi1kaWZmcy5odG1sIj5pbWFnZSBkaWZmczwvYT4KPC90ZD4KPHRkPgo8YSBocmVmPSJjb21wb3Np
dGluZy93ZWJnbC93ZWJnbC1yZWZsZWN0aW9uLWRpZmZzLnBuZyI+Mi4wMiU8L2E+CjwvdGQ+Cjwv
dHI+CjwvdGFibGU+PHA+aHR0cGQgYWNjZXNzIGxvZzogPGEgaHJlZj0iYWNjZXNzX2xvZy50eHQi
PmFjY2Vzc19sb2cudHh0PC9hPjwvcD4KPHA+aHR0cGQgZXJyb3IgbG9nOiA8YSBocmVmPSJlcnJv
cl9sb2cudHh0Ij5lcnJvcl9sb2cudHh0PC9hPjwvcD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108540</attachid>
            <date>2011-09-23 14:48:49 -0700</date>
            <delta_ts>2011-09-23 16:29:08 -0700</delta_ts>
            <desc>Patch in progress</desc>
            <filename>image-diff-patch.txt</filename>
            <type>text/plain</type>
            <size>9253</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQppbmRleCA3YTQzMmJkLi4z
NjkyNTRmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CkBAIC0y
NzYsOCArMjc2LDEwIEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXI6CiAgICAgICAgIGVsaWYgbm90
IGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuaW1hZ2VfaGFzaDoKICAgICAgICAgICAgIGZhaWx1cmVz
LmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVNaXNzaW5nSW1hZ2VIYXNoKCkpCiAgICAgICAg
IGVsaWYgZHJpdmVyX291dHB1dC5pbWFnZV9oYXNoICE9IGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQu
aW1hZ2VfaGFzaDoKLSAgICAgICAgICAgIGRyaXZlcl9vdXRwdXQuaW1hZ2VfZGlmZiA9IHNlbGYu
X3BvcnQuZGlmZl9pbWFnZShkcml2ZXJfb3V0cHV0LmltYWdlLCBleHBlY3RlZF9kcml2ZXJfb3V0
cHV0LmltYWdlKQorICAgICAgICAgICAgZGlmZl9yZXN1bHQgPSBzZWxmLl9wb3J0LmRpZmZfaW1h
Z2UoZHJpdmVyX291dHB1dC5pbWFnZSwgZXhwZWN0ZWRfZHJpdmVyX291dHB1dC5pbWFnZSlbMF0K
KyAgICAgICAgICAgIGRyaXZlcl9vdXRwdXQuaW1hZ2VfZGlmZiA9IGRpZmZfcmVzdWx0WzBdCiAg
ICAgICAgICAgICBpZiBkcml2ZXJfb3V0cHV0LmltYWdlX2RpZmY6CisgICAgICAgICAgICAgICAg
IyBGSVhNRTogYXBwZW5kIGEgY2xhc3MgdGhhdCBjb250YWlucyB0aGUgdGhlICUgZGlmZiB2YWx1
ZSBmcm9tIGRpZmZfcmVzdWx0WzFdCiAgICAgICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRl
c3RfZmFpbHVyZXMuRmFpbHVyZUltYWdlSGFzaE1pc21hdGNoKCkpCiAgICAgICAgIHJldHVybiBm
YWlsdXJlcwogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHkK
aW5kZXggNWFlZTg5Yi4uMDNlOTVkOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRfd3JpdGVyLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3Rf
cmVzdWx0X3dyaXRlci5weQpAQCAtNzAsNyArNzAsNyBAQCBkZWYgd3JpdGVfdGVzdF9yZXN1bHQo
cG9ydCwgdGVzdF9uYW1lLCBkcml2ZXJfb3V0cHV0LAogICAgICAgICBlbGlmIGlzaW5zdGFuY2Uo
ZmFpbHVyZSwgdGVzdF9mYWlsdXJlcy5GYWlsdXJlUmVmdGVzdE1pc21hdGNoKToKICAgICAgICAg
ICAgIHdyaXRlci53cml0ZV9pbWFnZV9maWxlcyhkcml2ZXJfb3V0cHV0LmltYWdlLCBleHBlY3Rl
ZF9kcml2ZXJfb3V0cHV0LmltYWdlKQogICAgICAgICAgICAgIyBGSVhNRTogVGhpcyB3b3JrIHNo
b3VsZCBiZSBkb25lIGVhcmxpZXIgaW4gdGhlIHBpcGVsaW5lIChlLmcuLCB3aGVuIHdlIGNvbXBh
cmUgaW1hZ2VzIGZvciBub24tcmVmIHRlc3RzKS4KLSAgICAgICAgICAgIGltYWdlX2RpZmYgPSBw
b3J0LmRpZmZfaW1hZ2UoZHJpdmVyX291dHB1dC5pbWFnZSwgZXhwZWN0ZWRfZHJpdmVyX291dHB1
dC5pbWFnZSkKKyAgICAgICAgICAgIGltYWdlX2RpZmYgPSBwb3J0LmRpZmZfaW1hZ2UoZHJpdmVy
X291dHB1dC5pbWFnZSwgZXhwZWN0ZWRfZHJpdmVyX291dHB1dC5pbWFnZSlbMF0KICAgICAgICAg
ICAgIGlmIGltYWdlX2RpZmY6CiAgICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlX2ltYWdlX2Rp
ZmZfZmlsZXMoaW1hZ2VfZGlmZikKICAgICAgICAgICAgIHdyaXRlci5jb3B5X2ZpbGUocG9ydC5y
ZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVuYW1lKHRlc3RfbmFtZSksICctZXhwZWN0ZWQuaHRtbCcpCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Uu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5k
ZXggNzMzMWZjYi4uNjM0ZjcyYyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtMjU3LDcgKzI1Nyw3IEBAIGNsYXNzIFBvcnQob2Jq
ZWN0KToKICAgICAgICAgcmV0dXJuIGV4cGVjdGVkX2F1ZGlvICE9IGFjdHVhbF9hdWRpbwogCiAg
ICAgZGVmIGRpZmZfaW1hZ2Uoc2VsZiwgZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50
cywgdG9sZXJhbmNlPTApOgotICAgICAgICAiIiJDb21wYXJlIHR3byBpbWFnZXMgYW5kIHJldHVy
biBhbiBpbWFnZSBkaWZmLgorICAgICAgICAiIiJDb21wYXJlIHR3byBpbWFnZXMgYW5kIHJldHVy
biBhIHR1cGxlIG9mIGFuIGltYWdlIGRpZmYsIGFuZCBhIHBlcmNlbnRhZ2UgZGlmZmVyZW5jZSAo
MC0xMDApLgogCiAgICAgICAgIHx0b2xlcmFuY2V8IHNob3VsZCBiZSBhIHBlcmNlbnRhZ2UgdmFs
dWUgKDAuMCAtIDEwMC4wKS4KICAgICAgICAgSWYgaXQgaXMgb21pdHRlZCwgdGhlIHBvcnQgZGVm
YXVsdCB0b2xlcmFuY2UgdmFsdWUgaXMgdXNlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IGQyZjAyYmUuLmY3ZGFj
M2EgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bS5weQpAQCAtMTY4LDExICsxNjgsMTEgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KFBv
cnQpOgogCiAgICAgICAgICMgSWYgb25seSBvbmUgb2YgdGhlbSBleGlzdHMsIHJldHVybiB0aGF0
IG9uZS4KICAgICAgICAgaWYgbm90IGFjdHVhbF9jb250ZW50cyBhbmQgbm90IGV4cGVjdGVkX2Nv
bnRlbnRzOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIHJldHVybiBbTm9u
ZSwgMF0KICAgICAgICAgaWYgbm90IGFjdHVhbF9jb250ZW50czoKLSAgICAgICAgICAgIHJldHVy
biBleHBlY3RlZF9jb250ZW50cworICAgICAgICAgICAgcmV0dXJuIFtleHBlY3RlZF9jb250ZW50
cywgMF0KICAgICAgICAgaWYgbm90IGV4cGVjdGVkX2NvbnRlbnRzOgotICAgICAgICAgICAgcmV0
dXJuIGFjdHVhbF9jb250ZW50cworICAgICAgICAgICAgcmV0dXJuIFthY3R1YWxfY29udGVudHMs
IDBdCiAKICAgICAgICAgdGVtcGRpciA9IHNlbGYuX2ZpbGVzeXN0ZW0ubWtkdGVtcCgpCiAKQEAg
LTIxMyw3ICsyMTMsNyBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoUG9ydCk6CiAgICAgICAgICAgICBp
ZiBleGl0X2NvZGUgPT0gMToKICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9maWxlc3lz
dGVtLnJlYWRfYmluYXJ5X2ZpbGUobmF0aXZlX2RpZmZfZmlsZW5hbWUpCiAgICAgICAgICAgICBz
ZWxmLl9maWxlc3lzdGVtLnJtdHJlZShzdHIodGVtcGRpcikpCi0gICAgICAgIHJldHVybiByZXN1
bHQKKyAgICAgICAgcmV0dXJuIFtyZXN1bHQsIDBdICMgRklYTUU6IGhvdyB0byBnZXQgJSBkaWZm
PwogCiAgICAgZGVmIHBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKHNlbGYsICpjb21wcyk6CiAgICAg
ICAgICIiIlJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byBwYXRoIG1hZGUgYnkgam9pbmluZyB0aGUg
dG9wIG9mIHRoZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKaW5kZXggNzliNjQzOC4uZTY4NTAw
MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CkBAIC0yNjIsMTEgKzI2MiwxMSBAQCBMSU5V
WCBXSU4gOiBmYXN0L2pzL3ZlcnktZ29vZC5qcyA9IFRJTUVPVVQgUEFTUyIiIgogCiAgICAgICAg
ICMgSW1hZ2VzIGFyZSBkaWZmZXJlbnQuCiAgICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IGV4ZWN1
dGl2ZV9tb2NrLk1vY2tFeGVjdXRpdmUyKHJ1bl9jb21tYW5kX2ZuPW1vY2tfcnVuX2NvbW1hbmQp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1vY2tfaW1hZ2VfZGlmZiwgcG9ydC5kaWZmX2lt
YWdlKCJFWFBFQ1RFRCIsICJBQ1RVQUwiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobW9j
a19pbWFnZV9kaWZmLCBwb3J0LmRpZmZfaW1hZ2UoIkVYUEVDVEVEIiwgIkFDVFVBTCIpWzBdKQog
CiAgICAgICAgICMgSW1hZ2VzIGFyZSB0aGUgc2FtZS4KICAgICAgICAgcG9ydC5fZXhlY3V0aXZl
ID0gZXhlY3V0aXZlX21vY2suTW9ja0V4ZWN1dGl2ZTIoZXhpdF9jb2RlPTApCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKE5vbmUsIHBvcnQuZGlmZl9pbWFnZSgiRVhQRUNURUQiLCAiQUNUVUFM
IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKE5vbmUsIHBvcnQuZGlmZl9pbWFnZSgiRVhQ
RUNURUQiLCAiQUNUVUFMIilbMF0pCiAKICAgICAgICAgIyBUaGVyZSB3YXMgc29tZSBlcnJvciBy
dW5uaW5nIGltYWdlX2RpZmYuCiAgICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZV9t
b2NrLk1vY2tFeGVjdXRpdmUyKGV4aXRfY29kZT0yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CmluZGV4IGVi
MTQ3ZWEuLjBiNzk1MzMgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKQEAgLTIyNiwxMCArMjI2LDEwIEBA
IGNsYXNzIFBvcnRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHRtcGZkLCB0
bXBmaWxlID0gcG9ydC5fZmlsZXN5c3RlbS5vcGVuX2JpbmFyeV90ZW1wZmlsZSgnJykKICAgICAg
ICAgdG1wZmQuY2xvc2UoKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5kaWZmX2lt
YWdlKGNvbnRlbnRzMSwgY29udGVudHMxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQu
ZGlmZl9pbWFnZShjb250ZW50czEsIGNvbnRlbnRzMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UocG9ydC5kaWZmX2ltYWdlKGNvbnRlbnRzMSwgY29udGVudHMxKVswXSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHBvcnQuZGlmZl9pbWFnZShjb250ZW50czEsIGNvbnRlbnRzMilbMF0pCiAK
LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuZGlmZl9pbWFnZShjb250ZW50czEsIGNvbnRl
bnRzMiwgdG1wZmlsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRpZmZfaW1hZ2Uo
Y29udGVudHMxLCBjb250ZW50czIsIHRtcGZpbGUpWzBdKQogCiAgICAgICAgIHBvcnQuX2ZpbGVz
eXN0ZW0ucmVtb3ZlKHRtcGZpbGUpCiAKQEAgLTIzNywyNCArMjM3LDI0IEBAIGNsYXNzIFBvcnRU
ZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9y
dCgpCiAgICAgICAgIGlmIG5vdCBwb3J0OgogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UocG9ydC5kaWZmX2ltYWdlKE5vbmUsIE5vbmUpKQotICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKHBvcnQuZGlmZl9pbWFnZShOb25lLCAnJykpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UocG9ydC5kaWZmX2ltYWdlKCcnLCBOb25lKSkKLSAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShwb3J0LmRpZmZfaW1hZ2UoJycsICcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShw
b3J0LmRpZmZfaW1hZ2UoTm9uZSwgTm9uZSlbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
cG9ydC5kaWZmX2ltYWdlKE5vbmUsICcnKVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShw
b3J0LmRpZmZfaW1hZ2UoJycsIE5vbmUpWzBdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBv
cnQuZGlmZl9pbWFnZSgnJywgJycpWzBdKQogCiAgICAgZGVmIHRlc3RfZGlmZl9pbWFnZV9fbWlz
c2luZ19hY3R1YWwoc2VsZik6CiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCiAgICAg
ICAgIGlmIG5vdCBwb3J0OgogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShwb3J0LmRpZmZfaW1hZ2UoTm9uZSwgJ2ZvbycpKQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUocG9ydC5kaWZmX2ltYWdlKCcnLCAnZm9vJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShw
b3J0LmRpZmZfaW1hZ2UoTm9uZSwgJ2ZvbycpWzBdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
cG9ydC5kaWZmX2ltYWdlKCcnLCAnZm9vJylbMF0pCiAKICAgICBkZWYgdGVzdF9kaWZmX2ltYWdl
X19taXNzaW5nX2V4cGVjdGVkKHNlbGYpOgogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQo
KQogICAgICAgICBpZiBub3QgcG9ydDoKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxm
LmFzc2VydFRydWUocG9ydC5kaWZmX2ltYWdlKCdmb28nLCBOb25lKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHBvcnQuZGlmZl9pbWFnZSgnZm9vJywgJycpKQorICAgICAgICBzZWxmLmFzc2Vy
dFRydWUocG9ydC5kaWZmX2ltYWdlKCdmb28nLCBOb25lKVswXSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHBvcnQuZGlmZl9pbWFnZSgnZm9vJywgJycpWzBdKQogCiAgICAgZGVmIHRlc3RfY2hl
Y2tfYnVpbGQoc2VsZik6CiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXggYTBi
Y2FhNS4uMmI2MTJiYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC90ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvdGVzdC5weQpAQCAtMzI2LDcgKzMyNiw3IEBAIGNsYXNzIFRlc3RQb3J0KFBvcnQp
OgogICAgICAgICBkaWZmZWQgPSBhY3R1YWxfY29udGVudHMgIT0gZXhwZWN0ZWRfY29udGVudHMK
ICAgICAgICAgaWYgZGlmZmVkOgogICAgICAgICAgICAgcmV0dXJuICI8ICVzXG4tLS1cbj4gJXNc
biIgJSAoZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cykKLSAgICAgICAgcmV0dXJu
IE5vbmUKKyAgICAgICAgcmV0dXJuIFtOb25lLCAwXQogCiAgICAgZGVmIGxheW91dF90ZXN0c19k
aXIoc2VsZik6CiAgICAgICAgIHJldHVybiBMQVlPVVRfVEVTVF9ESVIKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggMDg1MDg3
Mi4uZGI2YWE2OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC93ZWJraXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC93ZWJraXQucHkKQEAgLTE1MSwxMSArMTUxLDExIEBAIGNsYXNzIFdlYktpdFBvcnQo
UG9ydCk6CiAgICAgICAgICMgSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSB0ZXN0IGRpZG4ndCBh
Y3R1YWxseSBnZW5lcmF0ZSBhbiBpbWFnZS4KICAgICAgICAgIyBGSVhNRTogbmVlZCB1bml0IHRl
c3RzIGZvciB0aGlzLgogICAgICAgICBpZiBub3QgYWN0dWFsX2NvbnRlbnRzIGFuZCBub3QgZXhw
ZWN0ZWRfY29udGVudHM6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgcmV0
dXJuIFtOb25lLCAwXQogICAgICAgICBpZiBub3QgYWN0dWFsX2NvbnRlbnRzIG9yIG5vdCBleHBl
Y3RlZF9jb250ZW50czoKICAgICAgICAgICAgICMgRklYTUU6IEl0J3Mgbm90IGNsZWFyIHdoYXQg
d2Ugc2hvdWxkIHJldHVybiBpbiB0aGlzIGNhc2UuCiAgICAgICAgICAgICAjIE1heWJlIHdlIHNo
b3VsZCB0aHJvdyBhbiBleGNlcHRpb24/Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAg
ICAgICAgcmV0dXJuIFtUcnVlLCAwXQogCiAgICAgICAgIHByb2Nlc3MgPSBzZWxmLl9zdGFydF9p
bWFnZV9kaWZmX3Byb2Nlc3MoZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cykKICAg
ICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfaW1hZ2VfZGlmZihwcm9jZXNzKQpAQCAtMjAxLDggKzIw
MSw4IEBAIGNsYXNzIFdlYktpdFBvcnQoUG9ydCk6CiAgICAgICAgIGlmIG91dHB1dC5zdGFydHN3
aXRoKCdkaWZmJyk6CiAgICAgICAgICAgICBtID0gcmUubWF0Y2goJ2RpZmY6ICguKyklIChwYXNz
ZWR8ZmFpbGVkKScsIG91dHB1dCkKICAgICAgICAgICAgIGlmIG0uZ3JvdXAoMikgPT0gJ3Bhc3Nl
ZCc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIG91dHB1dAor
ICAgICAgICAgICAgICAgIHJldHVybiBbTm9uZSwgMF0KKyAgICAgICAgcmV0dXJuIFtvdXRwdXQs
IG0uZ3JvdXAoMSldCiAKICAgICBkZWYgZGVmYXVsdF9yZXN1bHRzX2RpcmVjdG9yeShzZWxmKToK
ICAgICAgICAgIyBSZXN1bHRzIGFyZSBzdG9yZSByZWxhdGl2ZSB0byB0aGUgYnVpbHQgcHJvZHVj
dHMgdG8gbWFrZSBpdCBlYXN5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108554</attachid>
            <date>2011-09-23 16:29:01 -0700</date>
            <delta_ts>2011-09-26 18:07:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>image-diff-patch.txt</filename>
            <type>text/plain</type>
            <size>12881</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9yZXN1bHRzLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2hhcm5lc3MvcmVzdWx0cy5odG1sCmluZGV4IDA0NTZjZTQuLmFmZDlhMDgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9yZXN1bHRzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc3VsdHMuaHRtbApAQCAtNTQ1LDggKzU0NSw4IEBA
IGZ1bmN0aW9uIHRhYmxlUm93KHRlc3RPYmplY3QpCiAgICAgICAgICAgICAgICAgcm93ICs9IHJl
c3VsdExpbmsodGVzdF9wcmVmaXgsICctYWN0dWFsLnBuZycsICdhY3R1YWwnKTsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgLy8gRklYTUU6IG9sZC1ydW4td2Via2l0LXRlc3RzIHNob3dz
IHRoZSBkaWZmIHBlcmNlbnRhZ2UgYXMgdGhlIHRleHQgY29udGVudHMgb2YgdGhlICJkaWZmIiBs
aW5rLgotICAgICAgICAgICAgcm93ICs9IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICctZGlmZi5w
bmcnLCAnZGlmZicpOworICAgICAgICAgICAgdmFyIGRpZmYgPSB0ZXN0T2JqZWN0LmltYWdlX2Rp
ZmZfcGVyY2VudDsKKyAgICAgICAgICAgIHJvdyArPSByZXN1bHRMaW5rKHRlc3RfcHJlZml4LCAn
LWRpZmYucG5nJywgJ2RpZmYgKCcgKyBkaWZmICsgJyUpJyk7CiAgICAgICAgIH0KICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL21hbmFnZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250
cm9sbGVycy9tYW5hZ2VyLnB5CmluZGV4IGY4YjcwMzkuLmRiMTNlY2UgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFu
YWdlci5weQpAQCAtMTcwLDYgKzE3MCw4IEBAIGRlZiBzdW1tYXJpemVfcmVzdWx0cyhwb3J0X29i
aiwgZXhwZWN0YXRpb25zLCByZXN1bHRfc3VtbWFyeSwgcmV0cnlfc3VtbWFyeSwgdGVzCiAgICAg
ICAgIGZvciBmIGluIHJlc3VsdC5mYWlsdXJlczoKICAgICAgICAgICAgIGlmICdpc19yZWZ0ZXN0
JyBpbiByZXN1bHQuZmFpbHVyZXM6CiAgICAgICAgICAgICAgICAgdGVzdF9kaWN0Wydpc19yZWZ0
ZXN0J10gPSBUcnVlCisgICAgICAgICAgICBpZiB0eXBlKGYpIGlzIHRlc3RfZmFpbHVyZXMuRmFp
bHVyZUltYWdlSGFzaE1pc21hdGNoOgorICAgICAgICAgICAgICAgIHRlc3RfZGljdFsnaW1hZ2Vf
ZGlmZl9wZXJjZW50J10gPSBmLmRpZmZfcGVyY2VudAogCiAgICAgICAgIGlmIHRlc3RfZmFpbHVy
ZXMuRmFpbHVyZVJlZnRlc3RNaXNtYXRjaERpZE5vdE9jY3VyIGluIGZhaWx1cmVfdHlwZXM6CiAg
ICAgICAgICAgICB0ZXN0X2RpY3RbJ2lzX21pc21hdGNoX3JlZnRlc3QnXSA9IFRydWUKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3Np
bmdsZV90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQppbmRleCA3YTQzMmJkLi5hZDQ3NDVj
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9s
bGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CkBAIC0yNzYsOSAr
Mjc2LDEwIEBAIGNsYXNzIFNpbmdsZVRlc3RSdW5uZXI6CiAgICAgICAgIGVsaWYgbm90IGV4cGVj
dGVkX2RyaXZlcl9vdXRwdXQuaW1hZ2VfaGFzaDoKICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVu
ZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVNaXNzaW5nSW1hZ2VIYXNoKCkpCiAgICAgICAgIGVsaWYg
ZHJpdmVyX291dHB1dC5pbWFnZV9oYXNoICE9IGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuaW1hZ2Vf
aGFzaDoKLSAgICAgICAgICAgIGRyaXZlcl9vdXRwdXQuaW1hZ2VfZGlmZiA9IHNlbGYuX3BvcnQu
ZGlmZl9pbWFnZShkcml2ZXJfb3V0cHV0LmltYWdlLCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0Lmlt
YWdlKQorICAgICAgICAgICAgZGlmZl9yZXN1bHQgPSBzZWxmLl9wb3J0LmRpZmZfaW1hZ2UoZHJp
dmVyX291dHB1dC5pbWFnZSwgZXhwZWN0ZWRfZHJpdmVyX291dHB1dC5pbWFnZSkKKyAgICAgICAg
ICAgIGRyaXZlcl9vdXRwdXQuaW1hZ2VfZGlmZiA9IGRpZmZfcmVzdWx0WzBdCiAgICAgICAgICAg
ICBpZiBkcml2ZXJfb3V0cHV0LmltYWdlX2RpZmY6Ci0gICAgICAgICAgICAgICAgZmFpbHVyZXMu
YXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUltYWdlSGFzaE1pc21hdGNoKCkpCisgICAgICAg
ICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUltYWdlSGFzaE1p
c21hdGNoKGRpZmZfcmVzdWx0WzFdKSkKICAgICAgICAgcmV0dXJuIGZhaWx1cmVzCiAKICAgICBk
ZWYgX3J1bl9yZWZ0ZXN0KHNlbGYpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRfd3JpdGVyLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1
bHRfd3JpdGVyLnB5CmluZGV4IDVhZWU4OWIuLjAzZTk1ZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dy
aXRlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHkKQEAgLTcwLDcgKzcwLDcgQEAgZGVmIHdyaXRl
X3Rlc3RfcmVzdWx0KHBvcnQsIHRlc3RfbmFtZSwgZHJpdmVyX291dHB1dCwKICAgICAgICAgZWxp
ZiBpc2luc3RhbmNlKGZhaWx1cmUsIHRlc3RfZmFpbHVyZXMuRmFpbHVyZVJlZnRlc3RNaXNtYXRj
aCk6CiAgICAgICAgICAgICB3cml0ZXIud3JpdGVfaW1hZ2VfZmlsZXMoZHJpdmVyX291dHB1dC5p
bWFnZSwgZXhwZWN0ZWRfZHJpdmVyX291dHB1dC5pbWFnZSkKICAgICAgICAgICAgICMgRklYTUU6
IFRoaXMgd29yayBzaG91bGQgYmUgZG9uZSBlYXJsaWVyIGluIHRoZSBwaXBlbGluZSAoZS5nLiwg
d2hlbiB3ZSBjb21wYXJlIGltYWdlcyBmb3Igbm9uLXJlZiB0ZXN0cykuCi0gICAgICAgICAgICBp
bWFnZV9kaWZmID0gcG9ydC5kaWZmX2ltYWdlKGRyaXZlcl9vdXRwdXQuaW1hZ2UsIGV4cGVjdGVk
X2RyaXZlcl9vdXRwdXQuaW1hZ2UpCisgICAgICAgICAgICBpbWFnZV9kaWZmID0gcG9ydC5kaWZm
X2ltYWdlKGRyaXZlcl9vdXRwdXQuaW1hZ2UsIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuaW1hZ2Up
WzBdCiAgICAgICAgICAgICBpZiBpbWFnZV9kaWZmOgogICAgICAgICAgICAgICAgIHdyaXRlci53
cml0ZV9pbWFnZV9kaWZmX2ZpbGVzKGltYWdlX2RpZmYpCiAgICAgICAgICAgICB3cml0ZXIuY29w
eV9maWxlKHBvcnQucmVmdGVzdF9leHBlY3RlZF9maWxlbmFtZSh0ZXN0X25hbWUpLCAnLWV4cGVj
dGVkLmh0bWwnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbW9kZWxzL3Rlc3RfZmFpbHVyZXMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9tb2RlbHMvdGVzdF9mYWlsdXJlcy5weQppbmRleCA4ZWE4YTRiLi44YWJkZTM1IDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVz
dF9mYWlsdXJlcy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9t
b2RlbHMvdGVzdF9mYWlsdXJlcy5weQpAQCAtMTY3LDYgKzE2Nyw4IEBAIGNsYXNzIEZhaWx1cmVN
aXNzaW5nSW1hZ2UoVGVzdEZhaWx1cmUpOgogCiBjbGFzcyBGYWlsdXJlSW1hZ2VIYXNoTWlzbWF0
Y2goVGVzdEZhaWx1cmUpOgogICAgICIiIkltYWdlIGhhc2hlcyBkaWRuJ3QgbWF0Y2guIiIiCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpZmZfcGVyY2VudD0wKToKKyAgICAgICAgc2VsZi5kaWZm
X3BlcmNlbnQgPSBkaWZmX3BlcmNlbnQKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgbWVz
c2FnZSgpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9i
YXNlLnB5CmluZGV4IDczMzFmY2IuLjYzNGY3MmMgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTI1Nyw3ICsyNTcsNyBAQCBjbGFz
cyBQb3J0KG9iamVjdCk6CiAgICAgICAgIHJldHVybiBleHBlY3RlZF9hdWRpbyAhPSBhY3R1YWxf
YXVkaW8KIAogICAgIGRlZiBkaWZmX2ltYWdlKHNlbGYsIGV4cGVjdGVkX2NvbnRlbnRzLCBhY3R1
YWxfY29udGVudHMsIHRvbGVyYW5jZT0wKToKLSAgICAgICAgIiIiQ29tcGFyZSB0d28gaW1hZ2Vz
IGFuZCByZXR1cm4gYW4gaW1hZ2UgZGlmZi4KKyAgICAgICAgIiIiQ29tcGFyZSB0d28gaW1hZ2Vz
IGFuZCByZXR1cm4gYSB0dXBsZSBvZiBhbiBpbWFnZSBkaWZmLCBhbmQgYSBwZXJjZW50YWdlIGRp
ZmZlcmVuY2UgKDAtMTAwKS4KIAogICAgICAgICB8dG9sZXJhbmNlfCBzaG91bGQgYmUgYSBwZXJj
ZW50YWdlIHZhbHVlICgwLjAgLSAxMDAuMCkuCiAgICAgICAgIElmIGl0IGlzIG9taXR0ZWQsIHRo
ZSBwb3J0IGRlZmF1bHQgdG9sZXJhbmNlIHZhbHVlIGlzIHVzZWQuCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQppbmRleCBkMmYw
MmJlLi5mN2RhYzNhIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKQEAgLTE2OCwxMSArMTY4LDExIEBAIGNsYXNzIENocm9t
aXVtUG9ydChQb3J0KToKIAogICAgICAgICAjIElmIG9ubHkgb25lIG9mIHRoZW0gZXhpc3RzLCBy
ZXR1cm4gdGhhdCBvbmUuCiAgICAgICAgIGlmIG5vdCBhY3R1YWxfY29udGVudHMgYW5kIG5vdCBl
eHBlY3RlZF9jb250ZW50czoKLSAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBy
ZXR1cm4gW05vbmUsIDBdCiAgICAgICAgIGlmIG5vdCBhY3R1YWxfY29udGVudHM6Ci0gICAgICAg
ICAgICByZXR1cm4gZXhwZWN0ZWRfY29udGVudHMKKyAgICAgICAgICAgIHJldHVybiBbZXhwZWN0
ZWRfY29udGVudHMsIDBdCiAgICAgICAgIGlmIG5vdCBleHBlY3RlZF9jb250ZW50czoKLSAgICAg
ICAgICAgIHJldHVybiBhY3R1YWxfY29udGVudHMKKyAgICAgICAgICAgIHJldHVybiBbYWN0dWFs
X2NvbnRlbnRzLCAwXQogCiAgICAgICAgIHRlbXBkaXIgPSBzZWxmLl9maWxlc3lzdGVtLm1rZHRl
bXAoKQogCkBAIC0yMTMsNyArMjEzLDcgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KFBvcnQpOgogICAg
ICAgICAgICAgaWYgZXhpdF9jb2RlID09IDE6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2Vs
Zi5fZmlsZXN5c3RlbS5yZWFkX2JpbmFyeV9maWxlKG5hdGl2ZV9kaWZmX2ZpbGVuYW1lKQogICAg
ICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5ybXRyZWUoc3RyKHRlbXBkaXIpKQotICAgICAgICBy
ZXR1cm4gcmVzdWx0CisgICAgICAgIHJldHVybiBbcmVzdWx0LCAwXSAjIEZJWE1FOiBob3cgdG8g
Z2V0ICUgZGlmZj8KIAogICAgIGRlZiBwYXRoX2Zyb21fY2hyb21pdW1fYmFzZShzZWxmLCAqY29t
cHMpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBmdWxsIHBhdGggdG8gcGF0aCBtYWRlIGJ5IGpv
aW5pbmcgdGhlIHRvcCBvZiB0aGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CmluZGV4IDc5YjY0
MzguLmU2ODUwMDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQpAQCAtMjYyLDExICsyNjIs
MTEgQEAgTElOVVggV0lOIDogZmFzdC9qcy92ZXJ5LWdvb2QuanMgPSBUSU1FT1VUIFBBU1MiIiIK
IAogICAgICAgICAjIEltYWdlcyBhcmUgZGlmZmVyZW50LgogICAgICAgICBwb3J0Ll9leGVjdXRp
dmUgPSBleGVjdXRpdmVfbW9jay5Nb2NrRXhlY3V0aXZlMihydW5fY29tbWFuZF9mbj1tb2NrX3J1
bl9jb21tYW5kKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtb2NrX2ltYWdlX2RpZmYsIHBv
cnQuZGlmZl9pbWFnZSgiRVhQRUNURUQiLCAiQUNUVUFMIikpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKG1vY2tfaW1hZ2VfZGlmZiwgcG9ydC5kaWZmX2ltYWdlKCJFWFBFQ1RFRCIsICJBQ1RV
QUwiKVswXSkKIAogICAgICAgICAjIEltYWdlcyBhcmUgdGhlIHNhbWUuCiAgICAgICAgIHBvcnQu
X2V4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZV9tb2NrLk1vY2tFeGVjdXRpdmUyKGV4aXRfY29kZT0wKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhOb25lLCBwb3J0LmRpZmZfaW1hZ2UoIkVYUEVDVEVE
IiwgIkFDVFVBTCIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhOb25lLCBwb3J0LmRpZmZf
aW1hZ2UoIkVYUEVDVEVEIiwgIkFDVFVBTCIpWzBdKQogCiAgICAgICAgICMgVGhlcmUgd2FzIHNv
bWUgZXJyb3IgcnVubmluZyBpbWFnZV9kaWZmLgogICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBl
eGVjdXRpdmVfbW9jay5Nb2NrRXhlY3V0aXZlMihleGl0X2NvZGU9MikKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5w
eQppbmRleCBlYjE0N2VhLi4wYjc5NTMzIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CkBAIC0yMjYsMTAg
KzIyNiwxMCBAQCBjbGFzcyBQb3J0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICB0bXBmZCwgdG1wZmlsZSA9IHBvcnQuX2ZpbGVzeXN0ZW0ub3Blbl9iaW5hcnlfdGVtcGZpbGUo
JycpCiAgICAgICAgIHRtcGZkLmNsb3NlKCkKIAotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBv
cnQuZGlmZl9pbWFnZShjb250ZW50czEsIGNvbnRlbnRzMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShwb3J0LmRpZmZfaW1hZ2UoY29udGVudHMxLCBjb250ZW50czIpKQorICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKHBvcnQuZGlmZl9pbWFnZShjb250ZW50czEsIGNvbnRlbnRzMSlbMF0pCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRpZmZfaW1hZ2UoY29udGVudHMxLCBjb250ZW50
czIpWzBdKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRpZmZfaW1hZ2UoY29udGVu
dHMxLCBjb250ZW50czIsIHRtcGZpbGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5k
aWZmX2ltYWdlKGNvbnRlbnRzMSwgY29udGVudHMyLCB0bXBmaWxlKVswXSkKIAogICAgICAgICBw
b3J0Ll9maWxlc3lzdGVtLnJlbW92ZSh0bXBmaWxlKQogCkBAIC0yMzcsMjQgKzIzNywyNCBAQCBj
bGFzcyBQb3J0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBwb3J0ID0gc2Vs
Zi5tYWtlX3BvcnQoKQogICAgICAgICBpZiBub3QgcG9ydDoKICAgICAgICAgICAgIHJldHVybgot
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBvcnQuZGlmZl9pbWFnZShOb25lLCBOb25lKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShwb3J0LmRpZmZfaW1hZ2UoTm9uZSwgJycpKQotICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKHBvcnQuZGlmZl9pbWFnZSgnJywgTm9uZSkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UocG9ydC5kaWZmX2ltYWdlKCcnLCAnJykpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UocG9ydC5kaWZmX2ltYWdlKE5vbmUsIE5vbmUpWzBdKQorICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKHBvcnQuZGlmZl9pbWFnZShOb25lLCAnJylbMF0pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UocG9ydC5kaWZmX2ltYWdlKCcnLCBOb25lKVswXSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZShwb3J0LmRpZmZfaW1hZ2UoJycsICcnKVswXSkKIAogICAgIGRlZiB0ZXN0X2RpZmZf
aW1hZ2VfX21pc3NpbmdfYWN0dWFsKHNlbGYpOgogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3Bv
cnQoKQogICAgICAgICBpZiBub3QgcG9ydDoKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBz
ZWxmLmFzc2VydFRydWUocG9ydC5kaWZmX2ltYWdlKE5vbmUsICdmb28nKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHBvcnQuZGlmZl9pbWFnZSgnJywgJ2ZvbycpKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUocG9ydC5kaWZmX2ltYWdlKE5vbmUsICdmb28nKVswXSkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHBvcnQuZGlmZl9pbWFnZSgnJywgJ2ZvbycpWzBdKQogCiAgICAgZGVmIHRlc3Rf
ZGlmZl9pbWFnZV9fbWlzc2luZ19leHBlY3RlZChzZWxmKToKICAgICAgICAgcG9ydCA9IHNlbGYu
bWFrZV9wb3J0KCkKICAgICAgICAgaWYgbm90IHBvcnQ6CiAgICAgICAgICAgICByZXR1cm4KLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuZGlmZl9pbWFnZSgnZm9vJywgTm9uZSkpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRpZmZfaW1hZ2UoJ2ZvbycsICcnKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHBvcnQuZGlmZl9pbWFnZSgnZm9vJywgTm9uZSlbMF0pCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRpZmZfaW1hZ2UoJ2ZvbycsICcnKVswXSkKIAogICAgIGRl
ZiB0ZXN0X2NoZWNrX2J1aWxkKHNlbGYpOgogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQo
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5
CmluZGV4IGEwYmNhYTUuLjJiNjEyYmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAgLTMyNiw3ICszMjYsNyBAQCBjbGFzcyBUZXN0
UG9ydChQb3J0KToKICAgICAgICAgZGlmZmVkID0gYWN0dWFsX2NvbnRlbnRzICE9IGV4cGVjdGVk
X2NvbnRlbnRzCiAgICAgICAgIGlmIGRpZmZlZDoKICAgICAgICAgICAgIHJldHVybiAiPCAlc1xu
LS0tXG4+ICVzXG4iICUgKGV4cGVjdGVkX2NvbnRlbnRzLCBhY3R1YWxfY29udGVudHMpCi0gICAg
ICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBbTm9uZSwgMF0KIAogICAgIGRlZiBsYXlv
dXRfdGVzdHNfZGlyKHNlbGYpOgogICAgICAgICByZXR1cm4gTEFZT1VUX1RFU1RfRElSCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5Cmlu
ZGV4IDA4NTA4NzIuLmE1ZDgzMDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CkBAIC0xNTEsMTEgKzE1MSwxMSBAQCBjbGFzcyBX
ZWJLaXRQb3J0KFBvcnQpOgogICAgICAgICAjIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgdGVz
dCBkaWRuJ3QgYWN0dWFsbHkgZ2VuZXJhdGUgYW4gaW1hZ2UuCiAgICAgICAgICMgRklYTUU6IG5l
ZWQgdW5pdCB0ZXN0cyBmb3IgdGhpcy4KICAgICAgICAgaWYgbm90IGFjdHVhbF9jb250ZW50cyBh
bmQgbm90IGV4cGVjdGVkX2NvbnRlbnRzOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAg
ICAgICAgIHJldHVybiBbTm9uZSwgMF0KICAgICAgICAgaWYgbm90IGFjdHVhbF9jb250ZW50cyBv
ciBub3QgZXhwZWN0ZWRfY29udGVudHM6CiAgICAgICAgICAgICAjIEZJWE1FOiBJdCdzIG5vdCBj
bGVhciB3aGF0IHdlIHNob3VsZCByZXR1cm4gaW4gdGhpcyBjYXNlLgogICAgICAgICAgICAgIyBN
YXliZSB3ZSBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uPwotICAgICAgICAgICAgcmV0dXJuIFRy
dWUKKyAgICAgICAgICAgIHJldHVybiBbVHJ1ZSwgMF0KIAogICAgICAgICBwcm9jZXNzID0gc2Vs
Zi5fc3RhcnRfaW1hZ2VfZGlmZl9wcm9jZXNzKGV4cGVjdGVkX2NvbnRlbnRzLCBhY3R1YWxfY29u
dGVudHMpCiAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkX2ltYWdlX2RpZmYocHJvY2VzcykKQEAg
LTE4MCwxMiArMTgwLDE1IEBAIGNsYXNzIFdlYktpdFBvcnQoUG9ydCk6CiAgICAgICAgIHRpbWVv
dXQgPSAyLjAKICAgICAgICAgZGVhZGxpbmUgPSB0aW1lLnRpbWUoKSArIHRpbWVvdXQKICAgICAg
ICAgb3V0cHV0ID0gc3AucmVhZF9saW5lKHRpbWVvdXQpCisgICAgICAgIG91dHB1dF9pbWFnZSA9
ICIiCisgICAgICAgIGRpZmZfcGVyY2VudCA9IDA7CiAgICAgICAgIHdoaWxlIG5vdCBzcC50aW1l
ZF9vdXQgYW5kIG5vdCBzcC5jcmFzaGVkIGFuZCBvdXRwdXQ6CiAgICAgICAgICAgICBpZiBvdXRw
dXQuc3RhcnRzd2l0aCgnQ29udGVudC1MZW5ndGgnKToKICAgICAgICAgICAgICAgICBtID0gcmUu
bWF0Y2goJ0NvbnRlbnQtTGVuZ3RoOiAoXGQrKScsIG91dHB1dCkKICAgICAgICAgICAgICAgICBj
b250ZW50X2xlbmd0aCA9IGludChtLmdyb3VwKDEpKQogICAgICAgICAgICAgICAgIHRpbWVvdXQg
PSBkZWFkbGluZSAtIHRpbWUudGltZSgpCi0gICAgICAgICAgICAgICAgb3V0cHV0ID0gc3AucmVh
ZCh0aW1lb3V0LCBjb250ZW50X2xlbmd0aCkKKyAgICAgICAgICAgICAgICBvdXRwdXRfaW1hZ2Ug
PSBzcC5yZWFkKHRpbWVvdXQsIGNvbnRlbnRfbGVuZ3RoKQorICAgICAgICAgICAgICAgIG91dHB1
dCA9IHNwLnJlYWRfbGluZSh0aW1lb3V0KQogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAg
ICAgICBlbGlmIG91dHB1dC5zdGFydHN3aXRoKCdkaWZmJyk6CiAgICAgICAgICAgICAgICAgYnJl
YWsKQEAgLTIwMSw4ICsyMDQsOSBAQCBjbGFzcyBXZWJLaXRQb3J0KFBvcnQpOgogICAgICAgICBp
ZiBvdXRwdXQuc3RhcnRzd2l0aCgnZGlmZicpOgogICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCdk
aWZmOiAoLispJSAocGFzc2VkfGZhaWxlZCknLCBvdXRwdXQpCiAgICAgICAgICAgICBpZiBtLmdy
b3VwKDIpID09ICdwYXNzZWQnOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAg
IHJldHVybiBvdXRwdXQKKyAgICAgICAgICAgICAgICByZXR1cm4gW05vbmUsIDBdCisgICAgICAg
ICAgICBkaWZmX3BlcmNlbnQgPSBmbG9hdChtLmdyb3VwKDEpKQorICAgICAgICByZXR1cm4gW291
dHB1dF9pbWFnZSwgZGlmZl9wZXJjZW50XQogCiAgICAgZGVmIGRlZmF1bHRfcmVzdWx0c19kaXJl
Y3Rvcnkoc2VsZik6CiAgICAgICAgICMgUmVzdWx0cyBhcmUgc3RvcmUgcmVsYXRpdmUgdG8gdGhl
IGJ1aWx0IHByb2R1Y3RzIHRvIG1ha2UgaXQgZWFzeQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3Rz
X2ludGVncmF0aW9udGVzdC5weQppbmRleCA2OTAyNDllLi45OWQzNmNlIDEwMDc1NQotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVn
cmF0aW9udGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQpAQCAtNTgwLDcgKzU4MCw3IEBAIGNs
YXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgY2xhc3MgSW1hZ2VEaWZm
VGVzdFBvcnQoVGVzdFBvcnQpOgogICAgICAgICAgICAgZGVmIGRpZmZfaW1hZ2Uoc2VsZiwgZXhw
ZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cyk6CiAgICAgICAgICAgICAgICAgc2VsZi50
b2xlcmFuY2VfdXNlZF9mb3JfZGlmZl9pbWFnZSA9IHNlbGYuX29wdGlvbnMudG9sZXJhbmNlCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgICAgICByZXR1cm4gW1RydWUs
IDBdCiAKICAgICAgICAgZGVmIGdldF9wb3J0X2Zvcl9ydW4oYXJncyk6CiAgICAgICAgICAgICBv
cHRpb25zLCBwYXJzZWRfYXJncyA9IHJ1bl93ZWJraXRfdGVzdHMucGFyc2VfYXJncyhhcmdzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108771</attachid>
            <date>2011-09-26 18:08:02 -0700</date>
            <delta_ts>2011-09-26 18:27:31 -0700</delta_ts>
            <desc>update smfr&apos;s patch to add more tests, fix style nits</desc>
            <filename>bug-67253-20110926180801.patch</filename>
            <type>text/plain</type>
            <size>27131</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYwMTYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5NzQyZGIxYjdkZGI3ZjRiOGRkN2Qx
MzM0NThlMTE3MWZiYzMyNzg3Li5jYjA0MmI2ZWU2OGQ1ZTI4OWQyYWI4MjAxMjFlZjBiY2JiOGRl
NjA0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDktMjYgIERpcmsgUHJhbmtlICA8ZHBy
YW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW9kaWZ5IG5ldy1ydW4td2Via2l0LXRlc3Rz
IHRvIHJldHVybiB0aGUgcGVyY2VudGFnZSBkaWZmZXJlbmNlIGluIGltYWdlIGRpZmZzIHdoZXJl
IHBvc3NpYmxlLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NzI1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9yZXN1bHRzLXRlc3QuanM6CisgICAgICAgICht
b2NrRXhwZWN0YXRpb24pOgorICAgICAgICAocnVuRGVmYXVsdFNpbmdsZVJvd1Rlc3QpOgorICAg
ICAgICAoKToKKyAgICAgICAgKiBmYXN0L2hhcm5lc3MvcmVzdWx0cy5odG1sOgorCiAyMDExLTA5
LTI2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIGVkaXRpbmcv
c2VsZWN0aW9uL3NlbGVjdC1iaWRpLXJ1bi5odG1sIHRpbWVvdXRzIG9uIG5vbi1NYWMgcGxhdGZv
cm1zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcmVzb3VyY2VzL3Jlc3Vs
dHMtdGVzdC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9yZXNvdXJjZXMvcmVzdWx0cy10
ZXN0LmpzCmluZGV4IGZmNmRhMDBhNjIzMjQ2Yjc3N2ZlMDIzYzRhYmM0YzE0YjQyMjA1Y2QuLjQz
ODUxZGVlMjNjNDBiM2NhZmMyZDhlMjk5OTdmZDY2MTc5Mjg3ZDUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvaGFybmVzcy9yZXNvdXJjZXMvcmVzdWx0cy10ZXN0LmpzCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvaGFybmVzcy9yZXNvdXJjZXMvcmVzdWx0cy10ZXN0LmpzCkBAIC0zNCwxMiAr
MzQsMTMgQEAgZnVuY3Rpb24gbW9ja1Jlc3VsdHMoKQogICAgIH07CiB9CiAKLWZ1bmN0aW9uIG1v
Y2tFeHBlY3RhdGlvbihleHBlY3RlZCwgYWN0dWFsKQorZnVuY3Rpb24gbW9ja0V4cGVjdGF0aW9u
KGV4cGVjdGVkLCBhY3R1YWwsIGRpZmZfcGVyY2VudGFnZSkKIHsKICAgICByZXR1cm4gewogICAg
ICAgICBleHBlY3RlZDogZXhwZWN0ZWQsCiAgICAgICAgIHRpbWVfbXM6IDEsCiAgICAgICAgIGFj
dHVhbDogYWN0dWFsLAorICAgICAgICBpbWFnZV9kaWZmX3BlcmNlbnQ6IGRpZmZfcGVyY2VudGFn
ZSwKICAgICAgICAgaGFzX3N0ZGVycjogZmFsc2UKICAgICB9OwogfQpAQCAtODMsMTAgKzg0LDEw
IEBAIGZ1bmN0aW9uIHJ1blRlc3QocmVzdWx0cywgYXNzZXJ0aW9ucywgb3B0X2xvY2FsU3RvcmFn
ZVZhbHVlKQogICAgIH0KIH0KIAotZnVuY3Rpb24gcnVuRGVmYXVsdFNpbmdsZVJvd1Rlc3QodGVz
dCwgZXhwZWN0ZWQsIGFjdHVhbCwgaXNFeHBlY3RlZCwgdGV4dFJlc3VsdHMsIGltYWdlUmVzdWx0
cykKK2Z1bmN0aW9uIHJ1bkRlZmF1bHRTaW5nbGVSb3dUZXN0KHRlc3QsIGV4cGVjdGVkLCBhY3R1
YWwsIGRpZmZfcGVyY2VudGFnZSwgaXNFeHBlY3RlZCwgdGV4dFJlc3VsdHMsIGltYWdlUmVzdWx0
cykKIHsKICAgICByZXN1bHRzID0gbW9ja1Jlc3VsdHMoKTsKLSAgICByZXN1bHRzLnRlc3RzW3Rl
c3RdID0gbW9ja0V4cGVjdGF0aW9uKGV4cGVjdGVkLCBhY3R1YWwpOworICAgIHJlc3VsdHMudGVz
dHNbdGVzdF0gPSBtb2NrRXhwZWN0YXRpb24oZXhwZWN0ZWQsIGFjdHVhbCwgZGlmZl9wZXJjZW50
YWdlKTsKICAgICBydW5TaW5nbGVSb3dUZXN0KHJlc3VsdHMsIGlzRXhwZWN0ZWQsIHRleHRSZXN1
bHRzLCBpbWFnZVJlc3VsdHMpOwogfQogCkBAIC0xMTUsNyArMTE2LDcgQEAgZnVuY3Rpb24gcnVu
VGVzdHMoKQogewogICAgIHZhciByZXN1bHRzID0gbW9ja1Jlc3VsdHMoKTsKICAgICB2YXIgc3Vi
dHJlZSA9IHJlc3VsdHMudGVzdHNbJ2ZvbyddID0ge30KLSAgICBzdWJ0cmVlWydiYXIuaHRtbCdd
ID0gbW9ja0V4cGVjdGF0aW9uKCdQQVNTJywgJ1RFWFQnKTsKKyAgICBzdWJ0cmVlWydiYXIuaHRt
bCddID0gbW9ja0V4cGVjdGF0aW9uKCdQQVNTJywgJ1RFWFQnLCAwKTsKICAgICBydW5UZXN0KHJl
c3VsdHMsIGZ1bmN0aW9uKCkgewogICAgICAgICBhc3NlcnRUcnVlKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdpbWFnZS1yZXN1bHRzLWhlYWRlcicpLnRleHRDb250ZW50ID09ICcnKTsKICAgICAg
ICAgYXNzZXJ0VHJ1ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dC1yZXN1bHRzLWhlYWRl
cicpLnRleHRDb250ZW50ICE9ICcnKTsKQEAgLTI0NSwxNyArMjQ2LDE3IEBAIGZ1bmN0aW9uIHJ1
blRlc3RzKCkKICAgICAgICAgYXNzZXJ0VHJ1ZSh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0cy10YWJsZScpLnBhcmVudE5vZGUsIG51bGwpWydk
aXNwbGF5J10gPT0gJ25vbmUnKTsKICAgICB9KTsKIAotICAgIHJ1bkRlZmF1bHRTaW5nbGVSb3dU
ZXN0KCdiYXItc2tpcC5odG1sJywgJ1RFWFQnLCAnU0tJUCcsIHRydWUsICcnLCAnJyk7Ci0gICAg
cnVuRGVmYXVsdFNpbmdsZVJvd1Rlc3QoJ2Jhci1mbGFreS1mYWlsLmh0bWwnLCAnUEFTUyBGQUlM
JywgJ1RFWFQnLCB0cnVlLCAnZXhwZWN0ZWQgYWN0dWFsIGRpZmYgJywgJycpOwotICAgIHJ1bkRl
ZmF1bHRTaW5nbGVSb3dUZXN0KCdiYXItZmxha3ktZmFpbC11bmV4cGVjdGVkLmh0bWwnLCAnUEFT
UyBURVhUJywgJ0lNQUdFJywgZmFsc2UsICcnLCAnaW1hZ2VzIGRpZmYgJyk7Ci0gICAgcnVuRGVm
YXVsdFNpbmdsZVJvd1Rlc3QoJ2Jhci1hdWRpby5odG1sJywgJ1RFWFQnLCAnQVVESU8nLCBmYWxz
ZSwgJ2V4cGVjdGVkIGF1ZGlvIGFjdHVhbCBhdWRpbyAnLCAnJyk7Ci0gICAgcnVuRGVmYXVsdFNp
bmdsZVJvd1Rlc3QoJ2Jhci1pbWFnZS5odG1sJywgJ1RFWFQnLCAnSU1BR0UnLCBmYWxzZSwgJycs
ICdpbWFnZXMgZGlmZiAnKTsKLSAgICBydW5EZWZhdWx0U2luZ2xlUm93VGVzdCgnYmFyLWltYWdl
LXBsdXMtdGV4dC5odG1sJywgJ1RFWFQnLCAnSU1BR0UrVEVYVCcsIGZhbHNlLCAnZXhwZWN0ZWQg
YWN0dWFsIGRpZmYgJywgJ2ltYWdlcyBkaWZmICcpOworICAgIHJ1bkRlZmF1bHRTaW5nbGVSb3dU
ZXN0KCdiYXItc2tpcC5odG1sJywgJ1RFWFQnLCAnU0tJUCcsIDAsIHRydWUsICcnLCAnJyk7Cisg
ICAgcnVuRGVmYXVsdFNpbmdsZVJvd1Rlc3QoJ2Jhci1mbGFreS1mYWlsLmh0bWwnLCAnUEFTUyBG
QUlMJywgJ1RFWFQnLCAwLCB0cnVlLCAnZXhwZWN0ZWQgYWN0dWFsIGRpZmYgJywgJycpOworICAg
IHJ1bkRlZmF1bHRTaW5nbGVSb3dUZXN0KCdiYXItZmxha3ktZmFpbC11bmV4cGVjdGVkLmh0bWwn
LCAnUEFTUyBURVhUJywgJ0lNQUdFJywgMSwgZmFsc2UsICcnLCAnaW1hZ2VzIGRpZmYgKDElKSAn
KTsKKyAgICBydW5EZWZhdWx0U2luZ2xlUm93VGVzdCgnYmFyLWF1ZGlvLmh0bWwnLCAnVEVYVCcs
ICdBVURJTycsIDAsIGZhbHNlLCAnZXhwZWN0ZWQgYXVkaW8gYWN0dWFsIGF1ZGlvICcsICcnKTsK
KyAgICBydW5EZWZhdWx0U2luZ2xlUm93VGVzdCgnYmFyLWltYWdlLmh0bWwnLCAnVEVYVCcsICdJ
TUFHRScsIDEsIGZhbHNlLCAnJywgJ2ltYWdlcyBkaWZmICgxJSkgJyk7CisgICAgcnVuRGVmYXVs
dFNpbmdsZVJvd1Rlc3QoJ2Jhci1pbWFnZS1wbHVzLXRleHQuaHRtbCcsICdURVhUJywgJ0lNQUdF
K1RFWFQnLCAxLCBmYWxzZSwgJ2V4cGVjdGVkIGFjdHVhbCBkaWZmICcsICdpbWFnZXMgZGlmZiAo
MSUpICcpOwogCiAgICAgcmVzdWx0cyA9IG1vY2tSZXN1bHRzKCk7Ci0gICAgcmVzdWx0cy50ZXN0
c1snYmFyLXJlZnRlc3QuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdQQVNTJywgJ0lNQUdFJyk7
CisgICAgcmVzdWx0cy50ZXN0c1snYmFyLXJlZnRlc3QuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9u
KCdQQVNTJywgJ0lNQUdFJywgMSk7CiAgICAgcmVzdWx0cy50ZXN0c1snYmFyLXJlZnRlc3QuaHRt
bCddLmlzX3JlZnRlc3QgPSB0cnVlOwotICAgIHJ1blNpbmdsZVJvd1Rlc3QocmVzdWx0cywgZmFs
c2UsICcnLCAncmVmIGh0bWwgaW1hZ2VzIGRpZmYgJyk7CisgICAgcnVuU2luZ2xlUm93VGVzdChy
ZXN1bHRzLCBmYWxzZSwgJycsICdyZWYgaHRtbCBpbWFnZXMgZGlmZiAoMSUpICcpOwogCiAgICAg
cmVzdWx0cyA9IG1vY2tSZXN1bHRzKCk7CiAgICAgcmVzdWx0cy50ZXN0c1snYmFyLXJlZnRlc3Qt
bWlzbWF0Y2guaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdQQVNTJywgJ0lNQUdFJyk7CkBAIC00
MTAsMjYgKzQxMSwyNiBAQCBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgc2hvdWxkVXNlVHJhY0xp
bmtzID0gb2xkU2hvdWxkVXNlVHJhY0xpbmtzOwogCiAgICAgcmVzdWx0cyA9IG1vY2tSZXN1bHRz
KCk7Ci0gICAgcmVzdWx0cy50ZXN0c1snYmFyLmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignUEFT
UycsICdJTUFHRScpOworICAgIHJlc3VsdHMudGVzdHNbJ2Jhci5odG1sJ10gPSBtb2NrRXhwZWN0
YXRpb24oJ1BBU1MnLCAnSU1BR0UnLCAxKTsKICAgICBydW5UZXN0KHJlc3VsdHMsIGZ1bmN0aW9u
KCkgewotICAgICAgICBhc3NlcnRUcnVlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3Rib2R5IHRk
Om50aC1jaGlsZCgzKScpLnRleHRDb250ZW50ID09ICdpbWFnZXMgZGlmZiAnKTsKKyAgICAgICAg
YXNzZXJ0VHJ1ZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd0Ym9keSB0ZDpudGgtY2hpbGQoMykn
KS50ZXh0Q29udGVudCA9PSAnaW1hZ2VzIGRpZmYgKDElKSAnKTsKIAogICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndG9nZ2xlLWltYWdlcycpLmNoZWNrZWQgPSBmYWxzZTsKICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBuZWVkIHRvIGNhbGwgdXBkYXRlVG9nZ2xpbmdJbWFn
ZXMuIFNldHRpbmcgY2hlY2tlZCBhYm92ZSBzaG91bGQgY2FsbCBpdC4KICAgICAgICAgdXBkYXRl
VG9nZ2xpbmdJbWFnZXMoKTsKICAgICAgICAgLy8gRklYTUU6IFdlIGdldCBleHRyYSBzcGFjZXMg
aW4gdGhlIERPTSBldmVyeSB0aW1lIHdlIGVuYWJsZS9kaXNhYmxlIGltYWdlIHRvZ2dsaW5nLgot
ICAgICAgICBhc3NlcnRUcnVlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3Rib2R5IHRkOm50aC1j
aGlsZCgzKScpLnRleHRDb250ZW50ID09ICdleHBlY3RlZCBhY3R1YWwgIGRpZmYgJyk7CisgICAg
ICAgIGFzc2VydFRydWUoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndGJvZHkgdGQ6bnRoLWNoaWxk
KDMpJykudGV4dENvbnRlbnQgPT0gJ2V4cGVjdGVkIGFjdHVhbCAgZGlmZiAoMSUpICcpOwogICAg
ICAgICAKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvZ2dsZS1pbWFnZXMnKS5j
aGVja2VkID0gdHJ1ZTsKICAgICAgICAgdXBkYXRlVG9nZ2xpbmdJbWFnZXMoKTsKLSAgICAgICAg
YXNzZXJ0VHJ1ZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd0Ym9keSB0ZDpudGgtY2hpbGQoMykn
KS50ZXh0Q29udGVudCA9PSAnIGltYWdlcyAgIGRpZmYgJyk7CisgICAgICAgIGFzc2VydFRydWUo
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndGJvZHkgdGQ6bnRoLWNoaWxkKDMpJykudGV4dENvbnRl
bnQgPT0gJyBpbWFnZXMgICBkaWZmICgxJSkgJyk7CiAgICAgfSk7CiAgICAgCiAgICAgcmVzdWx0
cyA9IG1vY2tSZXN1bHRzKCk7Ci0gICAgcmVzdWx0cy50ZXN0c1sncmVhZGluZy1vcHRpb25zLWZy
b20tbG9jYWxzdG9yYWdlLmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignSU1BR0UrVEVYVCcsICdJ
TUFHRStURVhUJyk7CisgICAgcmVzdWx0cy50ZXN0c1sncmVhZGluZy1vcHRpb25zLWZyb20tbG9j
YWxzdG9yYWdlLmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignSU1BR0UrVEVYVCcsICdJTUFHRStU
RVhUJywgMSk7CiAgICAgcnVuVGVzdChyZXN1bHRzLCBmdW5jdGlvbigpIHsKICAgICAgICAgYXNz
ZXJ0VHJ1ZSh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd0
Ym9keScpLCBudWxsKVsnZGlzcGxheSddICE9ICdub25lJyk7Ci0gICAgICAgIGFzc2VydFRydWUo
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndGJvZHkgdGQ6bnRoLWNoaWxkKDMpJykudGV4dENvbnRl
bnQgPT0gJ2V4cGVjdGVkIGFjdHVhbCAgZGlmZiAnKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCd0Ym9keSB0ZDpudGgtY2hpbGQoMyknKS50ZXh0Q29udGVudCA9
PSAnZXhwZWN0ZWQgYWN0dWFsICBkaWZmICgxJSkgJyk7CiAgICAgfSwgJ3sidG9nZ2xlLWltYWdl
cyI6ZmFsc2UsInVuZXhwZWN0ZWQtcmVzdWx0cyI6ZmFsc2V9Jyk7CiAKICAgICBmdW5jdGlvbiBl
bmNsb3NpbmdOb2RlV2l0aFRhZ05hbWVIYXNDbGFzc05hbWUobm9kZSwgdGFnTmFtZSwgY2xhc3NO
YW1lKSB7CkBAIC00NDIsMTIgKzQ0MywxMiBAQCBmdW5jdGlvbiBydW5UZXN0cygpCiAKICAgICBy
ZXN1bHRzID0gbW9ja1Jlc3VsdHMoKTsKICAgICB2YXIgc3VidHJlZSA9IHJlc3VsdHMudGVzdHNb
J2ZvbyddID0ge30KLSAgICBzdWJ0cmVlWydleHBlY3RlZC10by1wYXNzLWJ1dC1jcmFzaGVkLmh0
bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignUEFTUycsICdDUkFTSCcpOwotICAgIHN1YnRyZWVbJ2V4
cGVjdGVkLXRvLXBhc3Mtb3ItY3Jhc2gtYW5kLWNyYXNoZWQuaHRtbCddID0gbW9ja0V4cGVjdGF0
aW9uKCdQQVNTIENSQVNIJywgJ0NSQVNIJyk7Ci0gICAgc3VidHJlZVsnZXhwZWN0ZWQtdG8tcGFz
cy1idXQtdGltZW91dGVkLmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignUEFTUycsICdDUkFTSCcp
OwotICAgIHN1YnRyZWVbJ2V4cGVjdGVkLXRvLXBhc3Mtb3ItdGltZW91dC1hbmQtdGltZW91dGVk
Lmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignUEFTUyBUSU1FT1VUJywgJ1RJTUVPVVQnKTsKLSAg
ICBzdWJ0cmVlWydleHBlY3RlZC1mYWlsLWJ1dC1wYXNzZWQuaHRtbCddID0gbW9ja0V4cGVjdGF0
aW9uKCdGQUlMJywgJ1BBU1MnKTsKLSAgICBzdWJ0cmVlWydleHBlY3RlZC1wYXNzLW9yLWZhaWwt
YW5kLXBhc3NlZC5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1BBU1MgRkFJTCcsICdQQVNTJyk7
CisgICAgc3VidHJlZVsnZXhwZWN0ZWQtdG8tcGFzcy1idXQtY3Jhc2hlZC5odG1sJ10gPSBtb2Nr
RXhwZWN0YXRpb24oJ1BBU1MnLCAnQ1JBU0gnLCAwKTsKKyAgICBzdWJ0cmVlWydleHBlY3RlZC10
by1wYXNzLW9yLWNyYXNoLWFuZC1jcmFzaGVkLmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignUEFT
UyBDUkFTSCcsICdDUkFTSCcsIDApOworICAgIHN1YnRyZWVbJ2V4cGVjdGVkLXRvLXBhc3MtYnV0
LXRpbWVvdXRlZC5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1BBU1MnLCAnQ1JBU0gnLCAwKTsK
KyAgICBzdWJ0cmVlWydleHBlY3RlZC10by1wYXNzLW9yLXRpbWVvdXQtYW5kLXRpbWVvdXRlZC5o
dG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1BBU1MgVElNRU9VVCcsICdUSU1FT1VUJywgMCk7Cisg
ICAgc3VidHJlZVsnZXhwZWN0ZWQtZmFpbC1idXQtcGFzc2VkLmh0bWwnXSA9IG1vY2tFeHBlY3Rh
dGlvbignRkFJTCcsICdQQVNTJywgMCk7CisgICAgc3VidHJlZVsnZXhwZWN0ZWQtcGFzcy1vci1m
YWlsLWFuZC1wYXNzZWQuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdQQVNTIEZBSUwnLCAnUEFT
UycsIDApOwogICAgIHJ1blRlc3QocmVzdWx0cywgZnVuY3Rpb24oKSB7CiAgICAgICAgIGFzc2Vy
dFRydWUoIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRzLXRhYmxlJykpOwogCkBAIC00
NzMsOSArNDc0LDkgQEAgZnVuY3Rpb24gcnVuVGVzdHMoKQogCiAgICAgcmVzdWx0cyA9IG1vY2tS
ZXN1bHRzKCk7CiAgICAgdmFyIHN1YnRyZWUgPSByZXN1bHRzLnRlc3RzWydmb28nXSA9IHt9Ci0g
ICAgc3VidHJlZVsnZXhwZWN0ZWQtdG8tcGFzcy1vci1jcmFzaC1hbmQtY3Jhc2hlZC5odG1sJ10g
PSBtb2NrRXhwZWN0YXRpb24oJ1BBU1MgQ1JBU0gnLCAnQ1JBU0gnKTsKLSAgICBzdWJ0cmVlWydl
eHBlY3RlZC10by1wYXNzLW9yLXRpbWVvdXQtYW5kLXRpbWVvdXRlZC5odG1sJ10gPSBtb2NrRXhw
ZWN0YXRpb24oJ1BBU1MgVElNRU9VVCcsICdUSU1FT1VUJyk7Ci0gICAgc3VidHJlZVsnZXhwZWN0
ZWQtcGFzcy1vci1mYWlsLWFuZC1wYXNzZWQuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdQQVNT
IEZBSUwnLCAnUEFTUycpOworICAgIHN1YnRyZWVbJ2V4cGVjdGVkLXRvLXBhc3Mtb3ItY3Jhc2gt
YW5kLWNyYXNoZWQuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdQQVNTIENSQVNIJywgJ0NSQVNI
JywgMCk7CisgICAgc3VidHJlZVsnZXhwZWN0ZWQtdG8tcGFzcy1vci10aW1lb3V0LWFuZC10aW1l
b3V0ZWQuaHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdQQVNTIFRJTUVPVVQnLCAnVElNRU9VVCcs
IDApOworICAgIHN1YnRyZWVbJ2V4cGVjdGVkLXBhc3Mtb3ItZmFpbC1hbmQtcGFzc2VkLmh0bWwn
XSA9IG1vY2tFeHBlY3RhdGlvbignUEFTUyBGQUlMJywgJ1BBU1MnLCAwKTsKICAgICBydW5UZXN0
KHJlc3VsdHMsIGZ1bmN0aW9uKCkgewogICAgICAgICBhc3NlcnRUcnVlKCFkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncmVzdWx0cy10YWJsZScpKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9oYXJuZXNzL3Jlc3VsdHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9yZXN1
bHRzLmh0bWwKaW5kZXggMDQ1NmNlNGU4MjkzYjJjYTRlMjBlMzI3Y2RkNjg3ODVjZjc1NTlkOS4u
YWZkOWEwOGZjNmViY2YxY2JmNzAzMTU3Yzg0NTU4YmE2ZjQzYjBiMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc3VsdHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2hhcm5lc3MvcmVzdWx0cy5odG1sCkBAIC01NDUsOCArNTQ1LDggQEAgZnVuY3Rpb24gdGFibGVS
b3codGVzdE9iamVjdCkKICAgICAgICAgICAgICAgICByb3cgKz0gcmVzdWx0TGluayh0ZXN0X3By
ZWZpeCwgJy1hY3R1YWwucG5nJywgJ2FjdHVhbCcpOwogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICAvLyBGSVhNRTogb2xkLXJ1bi13ZWJraXQtdGVzdHMgc2hvd3MgdGhlIGRpZmYgcGVyY2Vu
dGFnZSBhcyB0aGUgdGV4dCBjb250ZW50cyBvZiB0aGUgImRpZmYiIGxpbmsuCi0gICAgICAgICAg
ICByb3cgKz0gcmVzdWx0TGluayh0ZXN0X3ByZWZpeCwgJy1kaWZmLnBuZycsICdkaWZmJyk7Cisg
ICAgICAgICAgICB2YXIgZGlmZiA9IHRlc3RPYmplY3QuaW1hZ2VfZGlmZl9wZXJjZW50OworICAg
ICAgICAgICAgcm93ICs9IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICctZGlmZi5wbmcnLCAnZGlm
ZiAoJyArIGRpZmYgKyAnJSknKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA4ZDA0Nzg3NjMyOWMyNjE2NGI2
NGFhMGZjYWZmMDMzZDEzNmQzM2MuLjc1ZWJiMDRlYjRmMjE0ZGIxNTVmNDQzN2M1ZWM5NGMzZGY4
MWVjNzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMCBAQAorMjAxMS0wOS0yNiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBNb2RpZnkgbmV3LXJ1bi13ZWJraXQtdGVzdHMgdG8gcmV0dXJu
IHRoZSBwZXJjZW50YWdlIGRpZmZlcmVuY2UgaW4gaW1hZ2UgZGlmZnMgd2hlcmUgcG9zc2libGUu
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3MjUz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmVhcmx5
IGFsbCBvZiB0aGUgd29yayBpbiB0aGlzIHdhcyBkb25lIGJ5IFNpbW9uIEZyYXNlcjsgSSdtCisg
ICAgICAgIGp1c3QgcmVwYWNrYWdpbmcgaXQgYW5kIGNsZWFuaW5nIGl0IHVwIGEgYml0LiBUaGlz
IGNoYW5nZQorICAgICAgICBtb2RpZmllcyBwb3J0LmRpZmZfaW1hZ2UoKSB0byByZXR1cm4gYSB0
dXBsZSBvZiAocGFzcy9mYWlsLAorICAgICAgICAlYWdlKSwgYWRkcyB0aGUgdmFsdWUgdG8gdGhl
IEZhaWx1cmVJbWFnZUhhc2hNaXNtYXRjaCwgYW5kCisgICAgICAgIHdyaXRlcyB0aGUgdmFsdWUg
aW50byB0aGUgZnVsbF9yZXN1bHRzLmpzb24gZmlsZXMgdG8gYmUKKyAgICAgICAgZGlzcGxheWVk
IGluIHRoZSByZXN1bHRzIHBhZ2UuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jl
c3VsdF93cml0ZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bW9kZWxzL3Rlc3RfZmFpbHVyZXMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0
LnB5OgorCiAyMDExLTA5LTI2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlcGFpbnQgdGVzdHMgZG9uJ3Qgd29yayBpbiBXZWJLaXQyCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5h
Z2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bWFuYWdlci5weQppbmRleCBmOGI3MDM5ZmFjMmNlMDg2YzZjNTg1MTVjNTk4MmM3MGU1ZmEwZmFi
Li5kYjEzZWNlM2ZmY2ZiYWFmYTA3YjA2ZjZhMDg5ODI3OGU1NGYwZWM2IDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21h
bmFnZXIucHkKQEAgLTE3MCw2ICsxNzAsOCBAQCBkZWYgc3VtbWFyaXplX3Jlc3VsdHMocG9ydF9v
YmosIGV4cGVjdGF0aW9ucywgcmVzdWx0X3N1bW1hcnksIHJldHJ5X3N1bW1hcnksIHRlcwogICAg
ICAgICBmb3IgZiBpbiByZXN1bHQuZmFpbHVyZXM6CiAgICAgICAgICAgICBpZiAnaXNfcmVmdGVz
dCcgaW4gcmVzdWx0LmZhaWx1cmVzOgogICAgICAgICAgICAgICAgIHRlc3RfZGljdFsnaXNfcmVm
dGVzdCddID0gVHJ1ZQorICAgICAgICAgICAgaWYgdHlwZShmKSBpcyB0ZXN0X2ZhaWx1cmVzLkZh
aWx1cmVJbWFnZUhhc2hNaXNtYXRjaDoKKyAgICAgICAgICAgICAgICB0ZXN0X2RpY3RbJ2ltYWdl
X2RpZmZfcGVyY2VudCddID0gZi5kaWZmX3BlcmNlbnQKIAogICAgICAgICBpZiB0ZXN0X2ZhaWx1
cmVzLkZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2hEaWROb3RPY2N1ciBpbiBmYWlsdXJlX3R5cGVzOgog
ICAgICAgICAgICAgdGVzdF9kaWN0Wydpc19taXNtYXRjaF9yZWZ0ZXN0J10gPSBUcnVlCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9z
aW5nbGVfdGVzdF9ydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHkKaW5kZXggN2E0MzJiZDIyNmZhYTNm
ODQzNjc1MzQ1MTBhMWJkZWVkOGZlYmUwYi4uYWQ0NzQ1YzgwZGMzNDQ5NDE3OGM3ZGJiOWI3MjU4
ODNhNGYwZjU3OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQpA
QCAtMjc2LDkgKzI3NiwxMCBAQCBjbGFzcyBTaW5nbGVUZXN0UnVubmVyOgogICAgICAgICBlbGlm
IG5vdCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LmltYWdlX2hhc2g6CiAgICAgICAgICAgICBmYWls
dXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ0ltYWdlSGFzaCgpKQogICAg
ICAgICBlbGlmIGRyaXZlcl9vdXRwdXQuaW1hZ2VfaGFzaCAhPSBleHBlY3RlZF9kcml2ZXJfb3V0
cHV0LmltYWdlX2hhc2g6Ci0gICAgICAgICAgICBkcml2ZXJfb3V0cHV0LmltYWdlX2RpZmYgPSBz
ZWxmLl9wb3J0LmRpZmZfaW1hZ2UoZHJpdmVyX291dHB1dC5pbWFnZSwgZXhwZWN0ZWRfZHJpdmVy
X291dHB1dC5pbWFnZSkKKyAgICAgICAgICAgIGRpZmZfcmVzdWx0ID0gc2VsZi5fcG9ydC5kaWZm
X2ltYWdlKGRyaXZlcl9vdXRwdXQuaW1hZ2UsIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuaW1hZ2Up
CisgICAgICAgICAgICBkcml2ZXJfb3V0cHV0LmltYWdlX2RpZmYgPSBkaWZmX3Jlc3VsdFswXQog
ICAgICAgICAgICAgaWYgZHJpdmVyX291dHB1dC5pbWFnZV9kaWZmOgotICAgICAgICAgICAgICAg
IGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVJbWFnZUhhc2hNaXNtYXRjaCgp
KQorICAgICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVJ
bWFnZUhhc2hNaXNtYXRjaChkaWZmX3Jlc3VsdFsxXSkpCiAgICAgICAgIHJldHVybiBmYWlsdXJl
cwogCiAgICAgZGVmIF9ydW5fcmVmdGVzdChzZWxmKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRl
ci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L3Rlc3RfcmVzdWx0X3dyaXRlci5weQppbmRleCA1YWVlODliOGE3Y2ExZmJmYjYwMGVjOTI2ZjAw
NGJjNjM4MTgxODAwLi4wM2U5NWQ4N2FkZGU3ZDkwN2M0NWRhMDZiNTFjNzJhZDI3OTRlY2Y1IDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9yZXN1bHRfd3JpdGVyLnB5CkBAIC03MCw3
ICs3MCw3IEBAIGRlZiB3cml0ZV90ZXN0X3Jlc3VsdChwb3J0LCB0ZXN0X25hbWUsIGRyaXZlcl9v
dXRwdXQsCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZh
aWx1cmVSZWZ0ZXN0TWlzbWF0Y2gpOgogICAgICAgICAgICAgd3JpdGVyLndyaXRlX2ltYWdlX2Zp
bGVzKGRyaXZlcl9vdXRwdXQuaW1hZ2UsIGV4cGVjdGVkX2RyaXZlcl9vdXRwdXQuaW1hZ2UpCiAg
ICAgICAgICAgICAjIEZJWE1FOiBUaGlzIHdvcmsgc2hvdWxkIGJlIGRvbmUgZWFybGllciBpbiB0
aGUgcGlwZWxpbmUgKGUuZy4sIHdoZW4gd2UgY29tcGFyZSBpbWFnZXMgZm9yIG5vbi1yZWYgdGVz
dHMpLgotICAgICAgICAgICAgaW1hZ2VfZGlmZiA9IHBvcnQuZGlmZl9pbWFnZShkcml2ZXJfb3V0
cHV0LmltYWdlLCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LmltYWdlKQorICAgICAgICAgICAgaW1h
Z2VfZGlmZiA9IHBvcnQuZGlmZl9pbWFnZShkcml2ZXJfb3V0cHV0LmltYWdlLCBleHBlY3RlZF9k
cml2ZXJfb3V0cHV0LmltYWdlKVswXQogICAgICAgICAgICAgaWYgaW1hZ2VfZGlmZjoKICAgICAg
ICAgICAgICAgICB3cml0ZXIud3JpdGVfaW1hZ2VfZGlmZl9maWxlcyhpbWFnZV9kaWZmKQogICAg
ICAgICAgICAgd3JpdGVyLmNvcHlfZmlsZShwb3J0LnJlZnRlc3RfZXhwZWN0ZWRfZmlsZW5hbWUo
dGVzdF9uYW1lKSwgJy1leHBlY3RlZC5odG1sJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2ZhaWx1cmVzLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZmFpbHVyZXMucHkKaW5kZXgg
OGVhOGE0YjA4MjI0ODc2OTViM2QwMGFkZjQ3MmNlZmVkYTk4MTRkOS4uOGFiZGUzNWE2NzU4MWNi
MDg1M2RmZGFkOWVhNjgyYWJjNTBmYjc5MSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZmFpbHVyZXMucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZmFpbHVyZXMucHkKQEAgLTE2
Nyw2ICsxNjcsOCBAQCBjbGFzcyBGYWlsdXJlTWlzc2luZ0ltYWdlKFRlc3RGYWlsdXJlKToKIAog
Y2xhc3MgRmFpbHVyZUltYWdlSGFzaE1pc21hdGNoKFRlc3RGYWlsdXJlKToKICAgICAiIiJJbWFn
ZSBoYXNoZXMgZGlkbid0IG1hdGNoLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkaWZmX3Bl
cmNlbnQ9MCk6CisgICAgICAgIHNlbGYuZGlmZl9wZXJjZW50ID0gZGlmZl9wZXJjZW50CiAKICAg
ICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIG1lc3NhZ2UoKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCA3MzMxZmNiZDUzZGNjNzZk
YTdhYmJiNzE0MGYxNjEzZTFjOWJkZDMwLi42MzRmNzJjYTYzMTBjMTU1NTdkY2VjMTc3M2FjNzg2
MWQ4MmRhY2M0IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9iYXNlLnB5CkBAIC0yNTcsNyArMjU3LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAg
ICAgICByZXR1cm4gZXhwZWN0ZWRfYXVkaW8gIT0gYWN0dWFsX2F1ZGlvCiAKICAgICBkZWYgZGlm
Zl9pbWFnZShzZWxmLCBleHBlY3RlZF9jb250ZW50cywgYWN0dWFsX2NvbnRlbnRzLCB0b2xlcmFu
Y2U9MCk6Ci0gICAgICAgICIiIkNvbXBhcmUgdHdvIGltYWdlcyBhbmQgcmV0dXJuIGFuIGltYWdl
IGRpZmYuCisgICAgICAgICIiIkNvbXBhcmUgdHdvIGltYWdlcyBhbmQgcmV0dXJuIGEgdHVwbGUg
b2YgYW4gaW1hZ2UgZGlmZiwgYW5kIGEgcGVyY2VudGFnZSBkaWZmZXJlbmNlICgwLTEwMCkuCiAK
ICAgICAgICAgfHRvbGVyYW5jZXwgc2hvdWxkIGJlIGEgcGVyY2VudGFnZSB2YWx1ZSAoMC4wIC0g
MTAwLjApLgogICAgICAgICBJZiBpdCBpcyBvbWl0dGVkLCB0aGUgcG9ydCBkZWZhdWx0IHRvbGVy
YW5jZSB2YWx1ZSBpcyB1c2VkLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggOTNmNTViY2M2OWFiYmM4ZWQzNTE3NGQ4
N2RlOGE0ZmNkMWUzNjQ2ZC4uZjZiNzY0Mjc1NjJhYTdiZmM5MWQ1MDljMjFlNzYwMWVlOTUyZTU4
NyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtLnB5CkBAIC0xNjgsMTEgKzE2OCwxMSBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoUG9y
dCk6CiAKICAgICAgICAgIyBJZiBvbmx5IG9uZSBvZiB0aGVtIGV4aXN0cywgcmV0dXJuIHRoYXQg
b25lLgogICAgICAgICBpZiBub3QgYWN0dWFsX2NvbnRlbnRzIGFuZCBub3QgZXhwZWN0ZWRfY29u
dGVudHM6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgcmV0dXJuIChOb25l
LCAwKQogICAgICAgICBpZiBub3QgYWN0dWFsX2NvbnRlbnRzOgotICAgICAgICAgICAgcmV0dXJu
IGV4cGVjdGVkX2NvbnRlbnRzCisgICAgICAgICAgICByZXR1cm4gKGV4cGVjdGVkX2NvbnRlbnRz
LCAwKQogICAgICAgICBpZiBub3QgZXhwZWN0ZWRfY29udGVudHM6Ci0gICAgICAgICAgICByZXR1
cm4gYWN0dWFsX2NvbnRlbnRzCisgICAgICAgICAgICByZXR1cm4gKGFjdHVhbF9jb250ZW50cywg
MCkKIAogICAgICAgICB0ZW1wZGlyID0gc2VsZi5fZmlsZXN5c3RlbS5ta2R0ZW1wKCkKIApAQCAt
MjEzLDcgKzIxMyw3IEBAIGNsYXNzIENocm9taXVtUG9ydChQb3J0KToKICAgICAgICAgICAgIGlm
IGV4aXRfY29kZSA9PSAxOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2ZpbGVzeXN0
ZW0ucmVhZF9iaW5hcnlfZmlsZShuYXRpdmVfZGlmZl9maWxlbmFtZSkKICAgICAgICAgICAgIHNl
bGYuX2ZpbGVzeXN0ZW0ucm10cmVlKHN0cih0ZW1wZGlyKSkKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dAorICAgICAgICByZXR1cm4gKHJlc3VsdCwgMCkgICMgRklYTUU6IGhvdyB0byBnZXQgJSBkaWZm
PwogCiAgICAgZGVmIHBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKHNlbGYsICpjb21wcyk6CiAgICAg
ICAgICIiIlJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byBwYXRoIG1hZGUgYnkgam9pbmluZyB0aGUg
dG9wIG9mIHRoZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKaW5kZXggNzliNjQzODU3NTY4NTEz
YmVlN2Y0ZDBkYzI5Yjc0ZjNlZjJmNmM2YS4uZTY4NTAwMjQ3NThjZjA1Y2RhOTYyZjAxOTMzYzgz
MWUyNjZhYWRjYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CkBAIC0yNjIsMTEgKzI2Miwx
MSBAQCBMSU5VWCBXSU4gOiBmYXN0L2pzL3ZlcnktZ29vZC5qcyA9IFRJTUVPVVQgUEFTUyIiIgog
CiAgICAgICAgICMgSW1hZ2VzIGFyZSBkaWZmZXJlbnQuCiAgICAgICAgIHBvcnQuX2V4ZWN1dGl2
ZSA9IGV4ZWN1dGl2ZV9tb2NrLk1vY2tFeGVjdXRpdmUyKHJ1bl9jb21tYW5kX2ZuPW1vY2tfcnVu
X2NvbW1hbmQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1vY2tfaW1hZ2VfZGlmZiwgcG9y
dC5kaWZmX2ltYWdlKCJFWFBFQ1RFRCIsICJBQ1RVQUwiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMobW9ja19pbWFnZV9kaWZmLCBwb3J0LmRpZmZfaW1hZ2UoIkVYUEVDVEVEIiwgIkFDVFVB
TCIpWzBdKQogCiAgICAgICAgICMgSW1hZ2VzIGFyZSB0aGUgc2FtZS4KICAgICAgICAgcG9ydC5f
ZXhlY3V0aXZlID0gZXhlY3V0aXZlX21vY2suTW9ja0V4ZWN1dGl2ZTIoZXhpdF9jb2RlPTApCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKE5vbmUsIHBvcnQuZGlmZl9pbWFnZSgiRVhQRUNURUQi
LCAiQUNUVUFMIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKE5vbmUsIHBvcnQuZGlmZl9p
bWFnZSgiRVhQRUNURUQiLCAiQUNUVUFMIilbMF0pCiAKICAgICAgICAgIyBUaGVyZSB3YXMgc29t
ZSBlcnJvciBydW5uaW5nIGltYWdlX2RpZmYuCiAgICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IGV4
ZWN1dGl2ZV9tb2NrLk1vY2tFeGVjdXRpdmUyKGV4aXRfY29kZT0yKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5
CmluZGV4IGViMTQ3ZWEzZjlkYmVhMTYzZTJlZmM5ZTNjN2UxZDJjNmYxNDk0MzcuLjBiNzk1MzNj
MzljNWU1MWRjMTUxM2VlMmE4YTgzNDZhNGNlMDRhMzIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKQEAg
LTIyNiwxMCArMjI2LDEwIEBAIGNsYXNzIFBvcnRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgICAgIHRtcGZkLCB0bXBmaWxlID0gcG9ydC5fZmlsZXN5c3RlbS5vcGVuX2JpbmFyeV90
ZW1wZmlsZSgnJykKICAgICAgICAgdG1wZmQuY2xvc2UoKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UocG9ydC5kaWZmX2ltYWdlKGNvbnRlbnRzMSwgY29udGVudHMxKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHBvcnQuZGlmZl9pbWFnZShjb250ZW50czEsIGNvbnRlbnRzMikpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5kaWZmX2ltYWdlKGNvbnRlbnRzMSwgY29udGVudHMx
KVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuZGlmZl9pbWFnZShjb250ZW50czEs
IGNvbnRlbnRzMilbMF0pCiAKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuZGlmZl9pbWFn
ZShjb250ZW50czEsIGNvbnRlbnRzMiwgdG1wZmlsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShwb3J0LmRpZmZfaW1hZ2UoY29udGVudHMxLCBjb250ZW50czIsIHRtcGZpbGUpWzBdKQogCiAg
ICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0ucmVtb3ZlKHRtcGZpbGUpCiAKQEAgLTIzNywyNCArMjM3
LDI0IEBAIGNsYXNzIFBvcnRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHBv
cnQgPSBzZWxmLm1ha2VfcG9ydCgpCiAgICAgICAgIGlmIG5vdCBwb3J0OgogICAgICAgICAgICAg
cmV0dXJuCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5kaWZmX2ltYWdlKE5vbmUsIE5v
bmUpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBvcnQuZGlmZl9pbWFnZShOb25lLCAnJykp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5kaWZmX2ltYWdlKCcnLCBOb25lKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShwb3J0LmRpZmZfaW1hZ2UoJycsICcnKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShwb3J0LmRpZmZfaW1hZ2UoTm9uZSwgTm9uZSlbMF0pCisgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5kaWZmX2ltYWdlKE5vbmUsICcnKVswXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShwb3J0LmRpZmZfaW1hZ2UoJycsIE5vbmUpWzBdKQorICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKHBvcnQuZGlmZl9pbWFnZSgnJywgJycpWzBdKQogCiAgICAgZGVmIHRl
c3RfZGlmZl9pbWFnZV9fbWlzc2luZ19hY3R1YWwoc2VsZik6CiAgICAgICAgIHBvcnQgPSBzZWxm
Lm1ha2VfcG9ydCgpCiAgICAgICAgIGlmIG5vdCBwb3J0OgogICAgICAgICAgICAgcmV0dXJuCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRpZmZfaW1hZ2UoTm9uZSwgJ2ZvbycpKQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5kaWZmX2ltYWdlKCcnLCAnZm9vJykpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRpZmZfaW1hZ2UoTm9uZSwgJ2ZvbycpWzBdKQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUocG9ydC5kaWZmX2ltYWdlKCcnLCAnZm9vJylbMF0pCiAKICAgICBk
ZWYgdGVzdF9kaWZmX2ltYWdlX19taXNzaW5nX2V4cGVjdGVkKHNlbGYpOgogICAgICAgICBwb3J0
ID0gc2VsZi5tYWtlX3BvcnQoKQogICAgICAgICBpZiBub3QgcG9ydDoKICAgICAgICAgICAgIHJl
dHVybgotICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5kaWZmX2ltYWdlKCdmb28nLCBOb25l
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuZGlmZl9pbWFnZSgnZm9vJywgJycpKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5kaWZmX2ltYWdlKCdmb28nLCBOb25lKVswXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuZGlmZl9pbWFnZSgnZm9vJywgJycpWzBdKQog
CiAgICAgZGVmIHRlc3RfY2hlY2tfYnVpbGQoc2VsZik6CiAgICAgICAgIHBvcnQgPSBzZWxmLm1h
a2VfcG9ydCgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3Rlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3Rlc3QucHkKaW5kZXggYTBiY2FhNTU5M2MxNjI1N2IxNTYwYzFmNzliY2ExMTRiZjc1ZTUwMi4u
ZmYxZTg2YzdlMDQ5YzZkMjJkYmY1NDk5NmIxMmE1OGVlNmY2ZGE2YSAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQpAQCAtMzI1LDggKzMy
NSw4IEBAIGNsYXNzIFRlc3RQb3J0KFBvcnQpOgogICAgIGRlZiBkaWZmX2ltYWdlKHNlbGYsIGV4
cGVjdGVkX2NvbnRlbnRzLCBhY3R1YWxfY29udGVudHMpOgogICAgICAgICBkaWZmZWQgPSBhY3R1
YWxfY29udGVudHMgIT0gZXhwZWN0ZWRfY29udGVudHMKICAgICAgICAgaWYgZGlmZmVkOgotICAg
ICAgICAgICAgcmV0dXJuICI8ICVzXG4tLS1cbj4gJXNcbiIgJSAoZXhwZWN0ZWRfY29udGVudHMs
IGFjdHVhbF9jb250ZW50cykKLSAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIHJldHVy
biBbIjwgJXNcbi0tLVxuPiAlc1xuIiAlIChleHBlY3RlZF9jb250ZW50cywgYWN0dWFsX2NvbnRl
bnRzKSwgMV0KKyAgICAgICAgcmV0dXJuIChOb25lLCAwKQogCiAgICAgZGVmIGxheW91dF90ZXN0
c19kaXIoc2VsZik6CiAgICAgICAgIHJldHVybiBMQVlPVVRfVEVTVF9ESVIKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggMGI5
NGQxMzNiMzA1ODNlMzUwMWFiOWZkMTc2MWQwNDlkYzdhZjEwYS4uNDRlODVhZWI4YTVkM2VlYTYy
YzM2MjI3MTBiOTNiMDU0OTMxMzMyYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKQEAgLTE1MSwxMSArMTUxLDExIEBAIGNsYXNz
IFdlYktpdFBvcnQoUG9ydCk6CiAgICAgICAgICMgSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSB0
ZXN0IGRpZG4ndCBhY3R1YWxseSBnZW5lcmF0ZSBhbiBpbWFnZS4KICAgICAgICAgIyBGSVhNRTog
bmVlZCB1bml0IHRlc3RzIGZvciB0aGlzLgogICAgICAgICBpZiBub3QgYWN0dWFsX2NvbnRlbnRz
IGFuZCBub3QgZXhwZWN0ZWRfY29udGVudHM6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQorICAg
ICAgICAgICAgcmV0dXJuIChOb25lLCAwKQogICAgICAgICBpZiBub3QgYWN0dWFsX2NvbnRlbnRz
IG9yIG5vdCBleHBlY3RlZF9jb250ZW50czoKICAgICAgICAgICAgICMgRklYTUU6IEl0J3Mgbm90
IGNsZWFyIHdoYXQgd2Ugc2hvdWxkIHJldHVybiBpbiB0aGlzIGNhc2UuCiAgICAgICAgICAgICAj
IE1heWJlIHdlIHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24/Ci0gICAgICAgICAgICByZXR1cm4g
VHJ1ZQorICAgICAgICAgICAgcmV0dXJuIChUcnVlLCAwKQogCiAgICAgICAgIHByb2Nlc3MgPSBz
ZWxmLl9zdGFydF9pbWFnZV9kaWZmX3Byb2Nlc3MoZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9j
b250ZW50cykKICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfaW1hZ2VfZGlmZihwcm9jZXNzKQpA
QCAtMTgwLDEyICsxODAsMTUgQEAgY2xhc3MgV2ViS2l0UG9ydChQb3J0KToKICAgICAgICAgdGlt
ZW91dCA9IDIuMAogICAgICAgICBkZWFkbGluZSA9IHRpbWUudGltZSgpICsgdGltZW91dAogICAg
ICAgICBvdXRwdXQgPSBzcC5yZWFkX2xpbmUodGltZW91dCkKKyAgICAgICAgb3V0cHV0X2ltYWdl
ID0gIiIKKyAgICAgICAgZGlmZl9wZXJjZW50ID0gMAogICAgICAgICB3aGlsZSBub3Qgc3AudGlt
ZWRfb3V0IGFuZCBub3Qgc3AuY3Jhc2hlZCBhbmQgb3V0cHV0OgogICAgICAgICAgICAgaWYgb3V0
cHV0LnN0YXJ0c3dpdGgoJ0NvbnRlbnQtTGVuZ3RoJyk6CiAgICAgICAgICAgICAgICAgbSA9IHJl
Lm1hdGNoKCdDb250ZW50LUxlbmd0aDogKFxkKyknLCBvdXRwdXQpCiAgICAgICAgICAgICAgICAg
Y29udGVudF9sZW5ndGggPSBpbnQobS5ncm91cCgxKSkKICAgICAgICAgICAgICAgICB0aW1lb3V0
ID0gZGVhZGxpbmUgLSB0aW1lLnRpbWUoKQotICAgICAgICAgICAgICAgIG91dHB1dCA9IHNwLnJl
YWQodGltZW91dCwgY29udGVudF9sZW5ndGgpCisgICAgICAgICAgICAgICAgb3V0cHV0X2ltYWdl
ID0gc3AucmVhZCh0aW1lb3V0LCBjb250ZW50X2xlbmd0aCkKKyAgICAgICAgICAgICAgICBvdXRw
dXQgPSBzcC5yZWFkX2xpbmUodGltZW91dCkKICAgICAgICAgICAgICAgICBicmVhawogICAgICAg
ICAgICAgZWxpZiBvdXRwdXQuc3RhcnRzd2l0aCgnZGlmZicpOgogICAgICAgICAgICAgICAgIGJy
ZWFrCkBAIC0yMDEsOCArMjA0LDkgQEAgY2xhc3MgV2ViS2l0UG9ydChQb3J0KToKICAgICAgICAg
aWYgb3V0cHV0LnN0YXJ0c3dpdGgoJ2RpZmYnKToKICAgICAgICAgICAgIG0gPSByZS5tYXRjaCgn
ZGlmZjogKC4rKSUgKHBhc3NlZHxmYWlsZWQpJywgb3V0cHV0KQogICAgICAgICAgICAgaWYgbS5n
cm91cCgyKSA9PSAncGFzc2VkJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAg
ICByZXR1cm4gb3V0cHV0CisgICAgICAgICAgICAgICAgcmV0dXJuIFtOb25lLCAwXQorICAgICAg
ICAgICAgZGlmZl9wZXJjZW50ID0gZmxvYXQobS5ncm91cCgxKSkKKyAgICAgICAgcmV0dXJuIChv
dXRwdXRfaW1hZ2UsIGRpZmZfcGVyY2VudCkKIAogICAgIGRlZiBkZWZhdWx0X3Jlc3VsdHNfZGly
ZWN0b3J5KHNlbGYpOgogICAgICAgICAjIFJlc3VsdHMgYXJlIHN0b3JlIHJlbGF0aXZlIHRvIHRo
ZSBidWlsdCBwcm9kdWN0cyB0byBtYWtlIGl0IGVhc3kKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0
c19pbnRlZ3JhdGlvbnRlc3QucHkKaW5kZXggNjkwMjQ5ZTYwNzc5NjY2ZjM4ODM3ZDhiYmY2YzY4
ZmQ4YjhjYmMwZi4uZmZiYjBiMTAyMzRiNWFkNTBmZGIyZDVlOTIxNzRmMzMxMzEzZjNiNSAxMDA3
NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkKQEAgLTQ5LDYgKzQ5
LDEyIEBAIHRyeToKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBtdWx0aXByb2Nlc3NpbmcgPSBO
b25lCiAKK3RyeToKKyAgICBpbXBvcnQganNvbgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgICMg
cHl0aG9uIDIuNSBjb21wYXRpYmlsaXR5CisgICAgaW1wb3J0IHdlYmtpdHB5LnRoaXJkcGFydHku
c2ltcGxlanNvbiBhcyBqc29uCisKICMgRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgZml4IHRl
c3Qtd2Via2l0cHkgdG8gd29yayBwcm9wZXJseSBvbiBjeWd3aW4KICMgKGJ1ZyA2Mzg0NikuCiBT
SE9VTERfVEVTVF9QUk9DRVNTRVMgPSBtdWx0aXByb2Nlc3NpbmcgYW5kIHN5cy5wbGF0Zm9ybSBu
b3QgaW4gKCdjeWd3aW4nLCAnd2luMzInKQpAQCAtNTgwLDcgKzU4Niw3IEBAIGNsYXNzIE1haW5U
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgY2xhc3MgSW1hZ2VEaWZmVGVzdFBvcnQo
VGVzdFBvcnQpOgogICAgICAgICAgICAgZGVmIGRpZmZfaW1hZ2Uoc2VsZiwgZXhwZWN0ZWRfY29u
dGVudHMsIGFjdHVhbF9jb250ZW50cyk6CiAgICAgICAgICAgICAgICAgc2VsZi50b2xlcmFuY2Vf
dXNlZF9mb3JfZGlmZl9pbWFnZSA9IHNlbGYuX29wdGlvbnMudG9sZXJhbmNlCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgICAgICByZXR1cm4gKFRydWUsIDEpCiAKICAg
ICAgICAgZGVmIGdldF9wb3J0X2Zvcl9ydW4oYXJncyk6CiAgICAgICAgICAgICBvcHRpb25zLCBw
YXJzZWRfYXJncyA9IHJ1bl93ZWJraXRfdGVzdHMucGFyc2VfYXJncyhhcmdzKQpAQCAtNjc1LDYg
KzY4MSwyNiBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiBNYWluVGVzdCA9
IHNraXBfaWYoTWFpblRlc3QsIHN5cy5wbGF0Zm9ybSA9PSAnY3lnd2luJyBhbmQgY29tcGFyZV92
ZXJzaW9uKHN5cywgJzIuNicpWzBdIDwgMCwgJ25ldy1ydW4td2Via2l0LXRlc3RzIHRlc3RzIGhh
bmcgb24gQ3lnd2luIFB5dGhvbiAyLjUuMicpCiAKIAorY2xhc3MgRW5kVG9FbmRUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgcGFyc2VfZnVsbF9yZXN1bHRzKHNlbGYsIGZ1bGxfcmVz
dWx0c190ZXh0KToKKyAgICAgICAganNvbl90b19ldmFsID0gZnVsbF9yZXN1bHRzX3RleHQucmVw
bGFjZSgiQUREX1JFU1VMVFMoIiwgIiIpLnJlcGxhY2UoIik7IiwgIiIpCisgICAgICAgIGNvbXBy
ZXNzZWRfcmVzdWx0cyA9IGpzb24ubG9hZHMoanNvbl90b19ldmFsKQorICAgICAgICByZXR1cm4g
Y29tcHJlc3NlZF9yZXN1bHRzCisKKyAgICBkZWYgdGVzdF9lbmRfdG9fZW5kKHNlbGYpOgorICAg
ICAgICBmcyA9IHVuaXRfdGVzdF9maWxlc3lzdGVtKCkKKyAgICAgICAgcmVzLCBvdXQsIGVyciwg
dXNlciA9IGxvZ2dpbmdfcnVuKHJlY29yZF9yZXN1bHRzPVRydWUsIHRlc3RzX2luY2x1ZGVkPVRy
dWUsIGZpbGVzeXN0ZW09ZnMpCisKKyAgICAgICAgIyBTaXggdGVzdHMgc2hvdWxkIGZhaWwsIHNv
IHRoZSByZXR1cm4gY29kZSBzaG91bGQgYmUgNi4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
cmVzLCA2KQorICAgICAgICByZXN1bHRzID0gc2VsZi5wYXJzZV9mdWxsX3Jlc3VsdHMoZnMuZmls
ZXNbJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbiddKQorCisgICAg
ICAgICMgQ2hlY2sgdG8gZW5zdXJlIHdlJ3JlIHBhc3NpbmcgYmFjayBpbWFnZSBkaWZmICVhZ2Ug
Y29ycmVjdGx5LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN1bHRzWyd0ZXN0cyddWydm
YWlsdXJlcyddWydleHBlY3RlZCddWydpbWFnZS5odG1sJ11bJ2ltYWdlX2RpZmZfcGVyY2VudCdd
LCAxKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCB3ZSBhdHRlbXB0ZWQgdG8gZGlzcGxheSB0aGUg
cmVzdWx0cyBwYWdlIGluIGEgYnJvd3Nlci4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHVzZXIu
b3BlbmVkX3VybHMpCisKIGNsYXNzIFJlYmFzZWxpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICBkZWYgYXNzZXJ0QmFzZWxpbmVzKHNlbGYsIGZpbGVfbGlzdCwgZmlsZSwgZXh0ZW5zaW9u
cywgZXJyKToKICAgICAgICAgImFzc2VydCB0aGF0IHRoZSBmaWxlX2xpc3QgY29udGFpbnMgdGhl
IGJhc2VsaW5lcy4iIiIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9fYmVf
bW92ZWQvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5
CmluZGV4IDVjYTZiNmU5MzVkNDMxNTRkNjdkYTQ5MmZjMzQ4ODU0NTkxOWQ2ODkuLjliZmU4MjU0
MWYxNDNiZTE4NmY4YjQwMWUwOWM0Y2VmNzNlZGU3OWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9yZWJhc2VsaW5lX2No
cm9taXVtX3dlYmtpdF90ZXN0cy5weQpAQCAtNTE0LDcgKzUxNCw3IEBAIGNsYXNzIFJlYmFzZWxp
bmVyKG9iamVjdCk6CiAgICAgICAgICIiIgogCiAgICAgICAgIGlmIGlzX2ltYWdlOgotICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuX3BvcnQuZGlmZl9pbWFnZShvdXRwdXQxLCBvdXRwdXQyKQorICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnQuZGlmZl9pbWFnZShvdXRwdXQxLCBvdXRwdXQyKVsw
XQogCiAgICAgICAgIHJldHVybiBzZWxmLl9wb3J0LmNvbXBhcmVfdGV4dChvdXRwdXQxLCBvdXRw
dXQyKQogCkBAIC01OTksNyArNTk5LDcgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKICAg
ICAgICAgICAgIF9sb2cuZGVidWcoJyBIdG1sOiBkaWZmaW5nICIlcyIgYW5kICIlcyInLCBvbGRf
ZmlsZSwgbmV3X2ZpbGUpCiAgICAgICAgICAgICBvbGRfb3V0cHV0ID0gc2VsZi5fZmlsZXN5c3Rl
bS5yZWFkX2JpbmFyeV9maWxlKG9sZF9maWxlKQogICAgICAgICAgICAgbmV3X291dHB1dCA9IHNl
bGYuX2ZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShuZXdfZmlsZSkKLSAgICAgICAgICAgIGlt
YWdlX2RpZmYgPSBzZWxmLl9wb3J0LmRpZmZfaW1hZ2Uob2xkX291dHB1dCwgbmV3X291dHB1dCkK
KyAgICAgICAgICAgIGltYWdlX2RpZmYgPSBzZWxmLl9wb3J0LmRpZmZfaW1hZ2Uob2xkX291dHB1
dCwgbmV3X291dHB1dClbMF0KICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVfYmlu
YXJ5X2ZpbGUoZGlmZl9maWxlLCBpbWFnZV9kaWZmKQogCiAgICAgICAgIGlmIGhhc19kaWZmOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108773</attachid>
            <date>2011-09-26 18:27:35 -0700</date>
            <delta_ts>2011-09-28 17:08:39 -0700</delta_ts>
            <desc>add default value to mockExpectation() in results-test.js</desc>
            <filename>bug-67253-20110926182734.patch</filename>
            <type>text/plain</type>
            <size>24570</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYwMTYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5NzQyZGIxYjdkZGI3ZjRiOGRkN2Qx
MzM0NThlMTE3MWZiYzMyNzg3Li5jYjA0MmI2ZWU2OGQ1ZTI4OWQyYWI4MjAxMjFlZjBiY2JiOGRl
NjA0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDktMjYgIERpcmsgUHJhbmtlICA8ZHBy
YW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW9kaWZ5IG5ldy1ydW4td2Via2l0LXRlc3Rz
IHRvIHJldHVybiB0aGUgcGVyY2VudGFnZSBkaWZmZXJlbmNlIGluIGltYWdlIGRpZmZzIHdoZXJl
IHBvc3NpYmxlLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NzI1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9yZXN1bHRzLXRlc3QuanM6CisgICAgICAgICht
b2NrRXhwZWN0YXRpb24pOgorICAgICAgICAocnVuRGVmYXVsdFNpbmdsZVJvd1Rlc3QpOgorICAg
ICAgICAoKToKKyAgICAgICAgKiBmYXN0L2hhcm5lc3MvcmVzdWx0cy5odG1sOgorCiAyMDExLTA5
LTI2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIGVkaXRpbmcv
c2VsZWN0aW9uL3NlbGVjdC1iaWRpLXJ1bi5odG1sIHRpbWVvdXRzIG9uIG5vbi1NYWMgcGxhdGZv
cm1zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcmVzb3VyY2VzL3Jlc3Vs
dHMtdGVzdC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9yZXNvdXJjZXMvcmVzdWx0cy10
ZXN0LmpzCmluZGV4IGZmNmRhMDBhNjIzMjQ2Yjc3N2ZlMDIzYzRhYmM0YzE0YjQyMjA1Y2QuLjVm
ZTliMzE4NmVmNTIwODkyYzg3MmU0ZDAzYmZkZjI0ZmQ4ZWU4OWEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvaGFybmVzcy9yZXNvdXJjZXMvcmVzdWx0cy10ZXN0LmpzCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvaGFybmVzcy9yZXNvdXJjZXMvcmVzdWx0cy10ZXN0LmpzCkBAIC0zNCwxMiAr
MzQsMTQgQEAgZnVuY3Rpb24gbW9ja1Jlc3VsdHMoKQogICAgIH07CiB9CiAKLWZ1bmN0aW9uIG1v
Y2tFeHBlY3RhdGlvbihleHBlY3RlZCwgYWN0dWFsKQorZnVuY3Rpb24gbW9ja0V4cGVjdGF0aW9u
KGV4cGVjdGVkLCBhY3R1YWwsIGRpZmZfcGVyY2VudGFnZSkKIHsKKyAgICBkaWZmX3BlcmNlbnRh
Z2UgPSAodHlwZW9mKGRpZmZfcGVyY2VudGFnZSkgPT0gdW5kZWZpbmVkKSA/IDAgOiBkaWZmX3Bl
cmNlbnRhZ2U7CiAgICAgcmV0dXJuIHsKICAgICAgICAgZXhwZWN0ZWQ6IGV4cGVjdGVkLAogICAg
ICAgICB0aW1lX21zOiAxLAogICAgICAgICBhY3R1YWw6IGFjdHVhbCwKKyAgICAgICAgaW1hZ2Vf
ZGlmZl9wZXJjZW50OiBkaWZmX3BlcmNlbnRhZ2UsCiAgICAgICAgIGhhc19zdGRlcnI6IGZhbHNl
CiAgICAgfTsKIH0KQEAgLTgzLDEwICs4NSwxMCBAQCBmdW5jdGlvbiBydW5UZXN0KHJlc3VsdHMs
IGFzc2VydGlvbnMsIG9wdF9sb2NhbFN0b3JhZ2VWYWx1ZSkKICAgICB9CiB9CiAKLWZ1bmN0aW9u
IHJ1bkRlZmF1bHRTaW5nbGVSb3dUZXN0KHRlc3QsIGV4cGVjdGVkLCBhY3R1YWwsIGlzRXhwZWN0
ZWQsIHRleHRSZXN1bHRzLCBpbWFnZVJlc3VsdHMpCitmdW5jdGlvbiBydW5EZWZhdWx0U2luZ2xl
Um93VGVzdCh0ZXN0LCBleHBlY3RlZCwgYWN0dWFsLCBkaWZmX3BlcmNlbnRhZ2UsIGlzRXhwZWN0
ZWQsIHRleHRSZXN1bHRzLCBpbWFnZVJlc3VsdHMpCiB7CiAgICAgcmVzdWx0cyA9IG1vY2tSZXN1
bHRzKCk7Ci0gICAgcmVzdWx0cy50ZXN0c1t0ZXN0XSA9IG1vY2tFeHBlY3RhdGlvbihleHBlY3Rl
ZCwgYWN0dWFsKTsKKyAgICByZXN1bHRzLnRlc3RzW3Rlc3RdID0gbW9ja0V4cGVjdGF0aW9uKGV4
cGVjdGVkLCBhY3R1YWwsIGRpZmZfcGVyY2VudGFnZSk7CiAgICAgcnVuU2luZ2xlUm93VGVzdChy
ZXN1bHRzLCBpc0V4cGVjdGVkLCB0ZXh0UmVzdWx0cywgaW1hZ2VSZXN1bHRzKTsKIH0KIApAQCAt
MjQ1LDE3ICsyNDcsMTcgQEAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgICAgICBhc3NlcnRUcnVl
KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRz
LXRhYmxlJykucGFyZW50Tm9kZSwgbnVsbClbJ2Rpc3BsYXknXSA9PSAnbm9uZScpOwogICAgIH0p
OwogCi0gICAgcnVuRGVmYXVsdFNpbmdsZVJvd1Rlc3QoJ2Jhci1za2lwLmh0bWwnLCAnVEVYVCcs
ICdTS0lQJywgdHJ1ZSwgJycsICcnKTsKLSAgICBydW5EZWZhdWx0U2luZ2xlUm93VGVzdCgnYmFy
LWZsYWt5LWZhaWwuaHRtbCcsICdQQVNTIEZBSUwnLCAnVEVYVCcsIHRydWUsICdleHBlY3RlZCBh
Y3R1YWwgZGlmZiAnLCAnJyk7Ci0gICAgcnVuRGVmYXVsdFNpbmdsZVJvd1Rlc3QoJ2Jhci1mbGFr
eS1mYWlsLXVuZXhwZWN0ZWQuaHRtbCcsICdQQVNTIFRFWFQnLCAnSU1BR0UnLCBmYWxzZSwgJycs
ICdpbWFnZXMgZGlmZiAnKTsKLSAgICBydW5EZWZhdWx0U2luZ2xlUm93VGVzdCgnYmFyLWF1ZGlv
Lmh0bWwnLCAnVEVYVCcsICdBVURJTycsIGZhbHNlLCAnZXhwZWN0ZWQgYXVkaW8gYWN0dWFsIGF1
ZGlvICcsICcnKTsKLSAgICBydW5EZWZhdWx0U2luZ2xlUm93VGVzdCgnYmFyLWltYWdlLmh0bWwn
LCAnVEVYVCcsICdJTUFHRScsIGZhbHNlLCAnJywgJ2ltYWdlcyBkaWZmICcpOwotICAgIHJ1bkRl
ZmF1bHRTaW5nbGVSb3dUZXN0KCdiYXItaW1hZ2UtcGx1cy10ZXh0Lmh0bWwnLCAnVEVYVCcsICdJ
TUFHRStURVhUJywgZmFsc2UsICdleHBlY3RlZCBhY3R1YWwgZGlmZiAnLCAnaW1hZ2VzIGRpZmYg
Jyk7CisgICAgcnVuRGVmYXVsdFNpbmdsZVJvd1Rlc3QoJ2Jhci1za2lwLmh0bWwnLCAnVEVYVCcs
ICdTS0lQJywgMCwgdHJ1ZSwgJycsICcnKTsKKyAgICBydW5EZWZhdWx0U2luZ2xlUm93VGVzdCgn
YmFyLWZsYWt5LWZhaWwuaHRtbCcsICdQQVNTIEZBSUwnLCAnVEVYVCcsIDAsIHRydWUsICdleHBl
Y3RlZCBhY3R1YWwgZGlmZiAnLCAnJyk7CisgICAgcnVuRGVmYXVsdFNpbmdsZVJvd1Rlc3QoJ2Jh
ci1mbGFreS1mYWlsLXVuZXhwZWN0ZWQuaHRtbCcsICdQQVNTIFRFWFQnLCAnSU1BR0UnLCAxLCBm
YWxzZSwgJycsICdpbWFnZXMgZGlmZiAoMSUpICcpOworICAgIHJ1bkRlZmF1bHRTaW5nbGVSb3dU
ZXN0KCdiYXItYXVkaW8uaHRtbCcsICdURVhUJywgJ0FVRElPJywgMCwgZmFsc2UsICdleHBlY3Rl
ZCBhdWRpbyBhY3R1YWwgYXVkaW8gJywgJycpOworICAgIHJ1bkRlZmF1bHRTaW5nbGVSb3dUZXN0
KCdiYXItaW1hZ2UuaHRtbCcsICdURVhUJywgJ0lNQUdFJywgMSwgZmFsc2UsICcnLCAnaW1hZ2Vz
IGRpZmYgKDElKSAnKTsKKyAgICBydW5EZWZhdWx0U2luZ2xlUm93VGVzdCgnYmFyLWltYWdlLXBs
dXMtdGV4dC5odG1sJywgJ1RFWFQnLCAnSU1BR0UrVEVYVCcsIDEsIGZhbHNlLCAnZXhwZWN0ZWQg
YWN0dWFsIGRpZmYgJywgJ2ltYWdlcyBkaWZmICgxJSkgJyk7CiAKICAgICByZXN1bHRzID0gbW9j
a1Jlc3VsdHMoKTsKLSAgICByZXN1bHRzLnRlc3RzWydiYXItcmVmdGVzdC5odG1sJ10gPSBtb2Nr
RXhwZWN0YXRpb24oJ1BBU1MnLCAnSU1BR0UnKTsKKyAgICByZXN1bHRzLnRlc3RzWydiYXItcmVm
dGVzdC5odG1sJ10gPSBtb2NrRXhwZWN0YXRpb24oJ1BBU1MnLCAnSU1BR0UnLCAxKTsKICAgICBy
ZXN1bHRzLnRlc3RzWydiYXItcmVmdGVzdC5odG1sJ10uaXNfcmVmdGVzdCA9IHRydWU7Ci0gICAg
cnVuU2luZ2xlUm93VGVzdChyZXN1bHRzLCBmYWxzZSwgJycsICdyZWYgaHRtbCBpbWFnZXMgZGlm
ZiAnKTsKKyAgICBydW5TaW5nbGVSb3dUZXN0KHJlc3VsdHMsIGZhbHNlLCAnJywgJ3JlZiBodG1s
IGltYWdlcyBkaWZmICgxJSkgJyk7CiAKICAgICByZXN1bHRzID0gbW9ja1Jlc3VsdHMoKTsKICAg
ICByZXN1bHRzLnRlc3RzWydiYXItcmVmdGVzdC1taXNtYXRjaC5odG1sJ10gPSBtb2NrRXhwZWN0
YXRpb24oJ1BBU1MnLCAnSU1BR0UnKTsKQEAgLTQxMCwyNiArNDEyLDI2IEBAIGZ1bmN0aW9uIHJ1
blRlc3RzKCkKICAgICBzaG91bGRVc2VUcmFjTGlua3MgPSBvbGRTaG91bGRVc2VUcmFjTGlua3M7
CiAKICAgICByZXN1bHRzID0gbW9ja1Jlc3VsdHMoKTsKLSAgICByZXN1bHRzLnRlc3RzWydiYXIu
aHRtbCddID0gbW9ja0V4cGVjdGF0aW9uKCdQQVNTJywgJ0lNQUdFJyk7CisgICAgcmVzdWx0cy50
ZXN0c1snYmFyLmh0bWwnXSA9IG1vY2tFeHBlY3RhdGlvbignUEFTUycsICdJTUFHRScsIDEpOwog
ICAgIHJ1blRlc3QocmVzdWx0cywgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydFRydWUoZG9j
dW1lbnQucXVlcnlTZWxlY3RvcigndGJvZHkgdGQ6bnRoLWNoaWxkKDMpJykudGV4dENvbnRlbnQg
PT0gJ2ltYWdlcyBkaWZmICcpOworICAgICAgICBhc3NlcnRUcnVlKGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJ3Rib2R5IHRkOm50aC1jaGlsZCgzKScpLnRleHRDb250ZW50ID09ICdpbWFnZXMgZGlm
ZiAoMSUpICcpOwogCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2dnbGUtaW1h
Z2VzJykuY2hlY2tlZCA9IGZhbHNlOwogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IG5l
ZWQgdG8gY2FsbCB1cGRhdGVUb2dnbGluZ0ltYWdlcy4gU2V0dGluZyBjaGVja2VkIGFib3ZlIHNo
b3VsZCBjYWxsIGl0LgogICAgICAgICB1cGRhdGVUb2dnbGluZ0ltYWdlcygpOwogICAgICAgICAv
LyBGSVhNRTogV2UgZ2V0IGV4dHJhIHNwYWNlcyBpbiB0aGUgRE9NIGV2ZXJ5IHRpbWUgd2UgZW5h
YmxlL2Rpc2FibGUgaW1hZ2UgdG9nZ2xpbmcuCi0gICAgICAgIGFzc2VydFRydWUoZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcigndGJvZHkgdGQ6bnRoLWNoaWxkKDMpJykudGV4dENvbnRlbnQgPT0gJ2V4
cGVjdGVkIGFjdHVhbCAgZGlmZiAnKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCd0Ym9keSB0ZDpudGgtY2hpbGQoMyknKS50ZXh0Q29udGVudCA9PSAnZXhwZWN0
ZWQgYWN0dWFsICBkaWZmICgxJSkgJyk7CiAgICAgICAgIAogICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndG9nZ2xlLWltYWdlcycpLmNoZWNrZWQgPSB0cnVlOwogICAgICAgICB1cGRh
dGVUb2dnbGluZ0ltYWdlcygpOwotICAgICAgICBhc3NlcnRUcnVlKGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJ3Rib2R5IHRkOm50aC1jaGlsZCgzKScpLnRleHRDb250ZW50ID09ICcgaW1hZ2VzICAg
ZGlmZiAnKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd0Ym9k
eSB0ZDpudGgtY2hpbGQoMyknKS50ZXh0Q29udGVudCA9PSAnIGltYWdlcyAgIGRpZmYgKDElKSAn
KTsKICAgICB9KTsKICAgICAKICAgICByZXN1bHRzID0gbW9ja1Jlc3VsdHMoKTsKLSAgICByZXN1
bHRzLnRlc3RzWydyZWFkaW5nLW9wdGlvbnMtZnJvbS1sb2NhbHN0b3JhZ2UuaHRtbCddID0gbW9j
a0V4cGVjdGF0aW9uKCdJTUFHRStURVhUJywgJ0lNQUdFK1RFWFQnKTsKKyAgICByZXN1bHRzLnRl
c3RzWydyZWFkaW5nLW9wdGlvbnMtZnJvbS1sb2NhbHN0b3JhZ2UuaHRtbCddID0gbW9ja0V4cGVj
dGF0aW9uKCdJTUFHRStURVhUJywgJ0lNQUdFK1RFWFQnLCAxKTsKICAgICBydW5UZXN0KHJlc3Vs
dHMsIGZ1bmN0aW9uKCkgewogICAgICAgICBhc3NlcnRUcnVlKHdpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3Rib2R5JyksIG51bGwpWydkaXNwbGF5J10gIT0g
J25vbmUnKTsKLSAgICAgICAgYXNzZXJ0VHJ1ZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd0Ym9k
eSB0ZDpudGgtY2hpbGQoMyknKS50ZXh0Q29udGVudCA9PSAnZXhwZWN0ZWQgYWN0dWFsICBkaWZm
ICcpOworICAgICAgICBhc3NlcnRUcnVlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3Rib2R5IHRk
Om50aC1jaGlsZCgzKScpLnRleHRDb250ZW50ID09ICdleHBlY3RlZCBhY3R1YWwgIGRpZmYgKDEl
KSAnKTsKICAgICB9LCAneyJ0b2dnbGUtaW1hZ2VzIjpmYWxzZSwidW5leHBlY3RlZC1yZXN1bHRz
IjpmYWxzZX0nKTsKIAogICAgIGZ1bmN0aW9uIGVuY2xvc2luZ05vZGVXaXRoVGFnTmFtZUhhc0Ns
YXNzTmFtZShub2RlLCB0YWdOYW1lLCBjbGFzc05hbWUpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvaGFybmVzcy9yZXN1bHRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3Mv
cmVzdWx0cy5odG1sCmluZGV4IDA0NTZjZTRlODI5M2IyY2E0ZTIwZTMyN2NkZDY4Nzg1Y2Y3NTU5
ZDkuLmFmZDlhMDhmYzZlYmNmMWNiZjcwMzE1N2M4NDU1OGJhNmY0M2IwYjIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9yZXN1bHRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9oYXJuZXNzL3Jlc3VsdHMuaHRtbApAQCAtNTQ1LDggKzU0NSw4IEBAIGZ1bmN0aW9uIHRh
YmxlUm93KHRlc3RPYmplY3QpCiAgICAgICAgICAgICAgICAgcm93ICs9IHJlc3VsdExpbmsodGVz
dF9wcmVmaXgsICctYWN0dWFsLnBuZycsICdhY3R1YWwnKTsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgLy8gRklYTUU6IG9sZC1ydW4td2Via2l0LXRlc3RzIHNob3dzIHRoZSBkaWZmIHBl
cmNlbnRhZ2UgYXMgdGhlIHRleHQgY29udGVudHMgb2YgdGhlICJkaWZmIiBsaW5rLgotICAgICAg
ICAgICAgcm93ICs9IHJlc3VsdExpbmsodGVzdF9wcmVmaXgsICctZGlmZi5wbmcnLCAnZGlmZicp
OworICAgICAgICAgICAgdmFyIGRpZmYgPSB0ZXN0T2JqZWN0LmltYWdlX2RpZmZfcGVyY2VudDsK
KyAgICAgICAgICAgIHJvdyArPSByZXN1bHRMaW5rKHRlc3RfcHJlZml4LCAnLWRpZmYucG5nJywg
J2RpZmYgKCcgKyBkaWZmICsgJyUpJyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwOGQwNDc4NzYzMjljMjYx
NjRiNjRhYTBmY2FmZjAzM2QxMzZkMzNjLi43NWViYjA0ZWI0ZjIxNGRiMTU1ZjQ0MzdjNWVjOTRj
M2RmODFlYzc3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDktMjYgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgTW9kaWZ5IG5ldy1ydW4td2Via2l0LXRlc3RzIHRvIHJl
dHVybiB0aGUgcGVyY2VudGFnZSBkaWZmZXJlbmNlIGluIGltYWdlIGRpZmZzIHdoZXJlIHBvc3Np
YmxlLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NzI1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5l
YXJseSBhbGwgb2YgdGhlIHdvcmsgaW4gdGhpcyB3YXMgZG9uZSBieSBTaW1vbiBGcmFzZXI7IEkn
bQorICAgICAgICBqdXN0IHJlcGFja2FnaW5nIGl0IGFuZCBjbGVhbmluZyBpdCB1cCBhIGJpdC4g
VGhpcyBjaGFuZ2UKKyAgICAgICAgbW9kaWZpZXMgcG9ydC5kaWZmX2ltYWdlKCkgdG8gcmV0dXJu
IGEgdHVwbGUgb2YgKHBhc3MvZmFpbCwKKyAgICAgICAgJWFnZSksIGFkZHMgdGhlIHZhbHVlIHRv
IHRoZSBGYWlsdXJlSW1hZ2VIYXNoTWlzbWF0Y2gsIGFuZAorICAgICAgICB3cml0ZXMgdGhlIHZh
bHVlIGludG8gdGhlIGZ1bGxfcmVzdWx0cy5qc29uIGZpbGVzIHRvIGJlCisgICAgICAgIGRpc3Bs
YXllZCBpbiB0aGUgcmVzdWx0cyBwYWdlLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVz
dF9yZXN1bHRfd3JpdGVyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL21vZGVscy90ZXN0X2ZhaWx1cmVzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9u
dGVzdC5weToKKwogMjAxMS0wOS0yNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXBhaW50IHRlc3RzIGRvbid0IHdvcmsgaW4gV2ViS2l0MgpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bWFuYWdlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL21hbmFnZXIucHkKaW5kZXggZjhiNzAzOWZhYzJjZTA4NmM2YzU4NTE1YzU5ODJjNzBlNWZh
MGZhYi4uZGIxM2VjZTNmZmNmYmFhZmEwN2IwNmY2YTA4OTgyNzhlNTRmMGVjNiAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdl
ci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVy
cy9tYW5hZ2VyLnB5CkBAIC0xNzAsNiArMTcwLDggQEAgZGVmIHN1bW1hcml6ZV9yZXN1bHRzKHBv
cnRfb2JqLCBleHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCByZXRyeV9zdW1tYXJ5LCB0ZXMK
ICAgICAgICAgZm9yIGYgaW4gcmVzdWx0LmZhaWx1cmVzOgogICAgICAgICAgICAgaWYgJ2lzX3Jl
ZnRlc3QnIGluIHJlc3VsdC5mYWlsdXJlczoKICAgICAgICAgICAgICAgICB0ZXN0X2RpY3RbJ2lz
X3JlZnRlc3QnXSA9IFRydWUKKyAgICAgICAgICAgIGlmIHR5cGUoZikgaXMgdGVzdF9mYWlsdXJl
cy5GYWlsdXJlSW1hZ2VIYXNoTWlzbWF0Y2g6CisgICAgICAgICAgICAgICAgdGVzdF9kaWN0Wydp
bWFnZV9kaWZmX3BlcmNlbnQnXSA9IGYuZGlmZl9wZXJjZW50CiAKICAgICAgICAgaWYgdGVzdF9m
YWlsdXJlcy5GYWlsdXJlUmVmdGVzdE1pc21hdGNoRGlkTm90T2NjdXIgaW4gZmFpbHVyZV90eXBl
czoKICAgICAgICAgICAgIHRlc3RfZGljdFsnaXNfbWlzbWF0Y2hfcmVmdGVzdCddID0gVHJ1ZQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvc2luZ2xlX3Rlc3RfcnVubmVyLnB5CmluZGV4IDdhNDMyYmQyMjZm
YWEzZjg0MzY3NTM0NTEwYTFiZGVlZDhmZWJlMGIuLmFkNDc0NWM4MGRjMzQ0OTQxNzhjN2RiYjli
NzI1ODgzYTRmMGY1NzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2NvbnRyb2xsZXJzL3NpbmdsZV90ZXN0X3J1bm5lci5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9zaW5nbGVfdGVzdF9ydW5uZXIu
cHkKQEAgLTI3Niw5ICsyNzYsMTAgQEAgY2xhc3MgU2luZ2xlVGVzdFJ1bm5lcjoKICAgICAgICAg
ZWxpZiBub3QgZXhwZWN0ZWRfZHJpdmVyX291dHB1dC5pbWFnZV9oYXNoOgogICAgICAgICAgICAg
ZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdJbWFnZUhhc2goKSkK
ICAgICAgICAgZWxpZiBkcml2ZXJfb3V0cHV0LmltYWdlX2hhc2ggIT0gZXhwZWN0ZWRfZHJpdmVy
X291dHB1dC5pbWFnZV9oYXNoOgotICAgICAgICAgICAgZHJpdmVyX291dHB1dC5pbWFnZV9kaWZm
ID0gc2VsZi5fcG9ydC5kaWZmX2ltYWdlKGRyaXZlcl9vdXRwdXQuaW1hZ2UsIGV4cGVjdGVkX2Ry
aXZlcl9vdXRwdXQuaW1hZ2UpCisgICAgICAgICAgICBkaWZmX3Jlc3VsdCA9IHNlbGYuX3BvcnQu
ZGlmZl9pbWFnZShkcml2ZXJfb3V0cHV0LmltYWdlLCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0Lmlt
YWdlKQorICAgICAgICAgICAgZHJpdmVyX291dHB1dC5pbWFnZV9kaWZmID0gZGlmZl9yZXN1bHRb
MF0KICAgICAgICAgICAgIGlmIGRyaXZlcl9vdXRwdXQuaW1hZ2VfZGlmZjoKLSAgICAgICAgICAg
ICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlSW1hZ2VIYXNoTWlzbWF0
Y2goKSkKKyAgICAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWls
dXJlSW1hZ2VIYXNoTWlzbWF0Y2goZGlmZl9yZXN1bHRbMV0pKQogICAgICAgICByZXR1cm4gZmFp
bHVyZXMKIAogICAgIGRlZiBfcnVuX3JlZnRlc3Qoc2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93
cml0ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHkKaW5kZXggNWFlZTg5YjhhN2NhMWZiZmI2MDBlYzky
NmYwMDRiYzYzODE4MTgwMC4uMDNlOTVkODdhZGRlN2Q5MDdjNDVkYTA2YjUxYzcyYWQyNzk0ZWNm
NSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvdGVzdF9yZXN1bHRfd3JpdGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRlci5weQpAQCAt
NzAsNyArNzAsNyBAQCBkZWYgd3JpdGVfdGVzdF9yZXN1bHQocG9ydCwgdGVzdF9uYW1lLCBkcml2
ZXJfb3V0cHV0LAogICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZmFpbHVyZSwgdGVzdF9mYWlsdXJl
cy5GYWlsdXJlUmVmdGVzdE1pc21hdGNoKToKICAgICAgICAgICAgIHdyaXRlci53cml0ZV9pbWFn
ZV9maWxlcyhkcml2ZXJfb3V0cHV0LmltYWdlLCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LmltYWdl
KQogICAgICAgICAgICAgIyBGSVhNRTogVGhpcyB3b3JrIHNob3VsZCBiZSBkb25lIGVhcmxpZXIg
aW4gdGhlIHBpcGVsaW5lIChlLmcuLCB3aGVuIHdlIGNvbXBhcmUgaW1hZ2VzIGZvciBub24tcmVm
IHRlc3RzKS4KLSAgICAgICAgICAgIGltYWdlX2RpZmYgPSBwb3J0LmRpZmZfaW1hZ2UoZHJpdmVy
X291dHB1dC5pbWFnZSwgZXhwZWN0ZWRfZHJpdmVyX291dHB1dC5pbWFnZSkKKyAgICAgICAgICAg
IGltYWdlX2RpZmYgPSBwb3J0LmRpZmZfaW1hZ2UoZHJpdmVyX291dHB1dC5pbWFnZSwgZXhwZWN0
ZWRfZHJpdmVyX291dHB1dC5pbWFnZSlbMF0KICAgICAgICAgICAgIGlmIGltYWdlX2RpZmY6CiAg
ICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlX2ltYWdlX2RpZmZfZmlsZXMoaW1hZ2VfZGlmZikK
ICAgICAgICAgICAgIHdyaXRlci5jb3B5X2ZpbGUocG9ydC5yZWZ0ZXN0X2V4cGVjdGVkX2ZpbGVu
YW1lKHRlc3RfbmFtZSksICctZXhwZWN0ZWQuaHRtbCcpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9mYWlsdXJlcy5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2ZhaWx1cmVzLnB5Cmlu
ZGV4IDhlYThhNGIwODIyNDg3Njk1YjNkMDBhZGY0NzJjZWZlZGE5ODE0ZDkuLjhhYmRlMzVhNjc1
ODFjYjA4NTNkZmRhZDllYTY4MmFiYzUwZmI3OTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2ZhaWx1cmVzLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2ZhaWx1cmVzLnB5CkBA
IC0xNjcsNiArMTY3LDggQEAgY2xhc3MgRmFpbHVyZU1pc3NpbmdJbWFnZShUZXN0RmFpbHVyZSk6
CiAKIGNsYXNzIEZhaWx1cmVJbWFnZUhhc2hNaXNtYXRjaChUZXN0RmFpbHVyZSk6CiAgICAgIiIi
SW1hZ2UgaGFzaGVzIGRpZG4ndCBtYXRjaC4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGlm
Zl9wZXJjZW50PTApOgorICAgICAgICBzZWxmLmRpZmZfcGVyY2VudCA9IGRpZmZfcGVyY2VudAog
CiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBtZXNzYWdlKCk6CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggNzMzMWZjYmQ1M2Rj
Yzc2ZGE3YWJiYjcxNDBmMTYxM2UxYzliZGQzMC4uNjM0ZjcyY2E2MzEwYzE1NTU3ZGNlYzE3NzNh
Yzc4NjFkODJkYWNjNCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYmFzZS5weQpAQCAtMjU3LDcgKzI1Nyw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToK
ICAgICAgICAgcmV0dXJuIGV4cGVjdGVkX2F1ZGlvICE9IGFjdHVhbF9hdWRpbwogCiAgICAgZGVm
IGRpZmZfaW1hZ2Uoc2VsZiwgZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cywgdG9s
ZXJhbmNlPTApOgotICAgICAgICAiIiJDb21wYXJlIHR3byBpbWFnZXMgYW5kIHJldHVybiBhbiBp
bWFnZSBkaWZmLgorICAgICAgICAiIiJDb21wYXJlIHR3byBpbWFnZXMgYW5kIHJldHVybiBhIHR1
cGxlIG9mIGFuIGltYWdlIGRpZmYsIGFuZCBhIHBlcmNlbnRhZ2UgZGlmZmVyZW5jZSAoMC0xMDAp
LgogCiAgICAgICAgIHx0b2xlcmFuY2V8IHNob3VsZCBiZSBhIHBlcmNlbnRhZ2UgdmFsdWUgKDAu
MCAtIDEwMC4wKS4KICAgICAgICAgSWYgaXQgaXMgb21pdHRlZCwgdGhlIHBvcnQgZGVmYXVsdCB0
b2xlcmFuY2UgdmFsdWUgaXMgdXNlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IDkzZjU1YmNjNjlhYmJjOGVkMzUx
NzRkODdkZThhNGZjZDFlMzY0NmQuLmY2Yjc2NDI3NTYyYWE3YmZjOTFkNTA5YzIxZTc2MDFlZTk1
MmU1ODcgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bS5weQpAQCAtMTY4LDExICsxNjgsMTEgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0
KFBvcnQpOgogCiAgICAgICAgICMgSWYgb25seSBvbmUgb2YgdGhlbSBleGlzdHMsIHJldHVybiB0
aGF0IG9uZS4KICAgICAgICAgaWYgbm90IGFjdHVhbF9jb250ZW50cyBhbmQgbm90IGV4cGVjdGVk
X2NvbnRlbnRzOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIHJldHVybiAo
Tm9uZSwgMCkKICAgICAgICAgaWYgbm90IGFjdHVhbF9jb250ZW50czoKLSAgICAgICAgICAgIHJl
dHVybiBleHBlY3RlZF9jb250ZW50cworICAgICAgICAgICAgcmV0dXJuIChleHBlY3RlZF9jb250
ZW50cywgMCkKICAgICAgICAgaWYgbm90IGV4cGVjdGVkX2NvbnRlbnRzOgotICAgICAgICAgICAg
cmV0dXJuIGFjdHVhbF9jb250ZW50cworICAgICAgICAgICAgcmV0dXJuIChhY3R1YWxfY29udGVu
dHMsIDApCiAKICAgICAgICAgdGVtcGRpciA9IHNlbGYuX2ZpbGVzeXN0ZW0ubWtkdGVtcCgpCiAK
QEAgLTIxMyw3ICsyMTMsNyBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoUG9ydCk6CiAgICAgICAgICAg
ICBpZiBleGl0X2NvZGUgPT0gMToKICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9maWxl
c3lzdGVtLnJlYWRfYmluYXJ5X2ZpbGUobmF0aXZlX2RpZmZfZmlsZW5hbWUpCiAgICAgICAgICAg
ICBzZWxmLl9maWxlc3lzdGVtLnJtdHJlZShzdHIodGVtcGRpcikpCi0gICAgICAgIHJldHVybiBy
ZXN1bHQKKyAgICAgICAgcmV0dXJuIChyZXN1bHQsIDApICAjIEZJWE1FOiBob3cgdG8gZ2V0ICUg
ZGlmZj8KIAogICAgIGRlZiBwYXRoX2Zyb21fY2hyb21pdW1fYmFzZShzZWxmLCAqY29tcHMpOgog
ICAgICAgICAiIiJSZXR1cm5zIHRoZSBmdWxsIHBhdGggdG8gcGF0aCBtYWRlIGJ5IGpvaW5pbmcg
dGhlIHRvcCBvZiB0aGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CmluZGV4IDc5YjY0Mzg1NzU2
ODUxM2JlZTdmNGQwZGMyOWI3NGYzZWYyZjZjNmEuLmU2ODUwMDI0NzU4Y2YwNWNkYTk2MmYwMTkz
M2M4MzFlMjY2YWFkY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQpAQCAtMjYyLDExICsy
NjIsMTEgQEAgTElOVVggV0lOIDogZmFzdC9qcy92ZXJ5LWdvb2QuanMgPSBUSU1FT1VUIFBBU1Mi
IiIKIAogICAgICAgICAjIEltYWdlcyBhcmUgZGlmZmVyZW50LgogICAgICAgICBwb3J0Ll9leGVj
dXRpdmUgPSBleGVjdXRpdmVfbW9jay5Nb2NrRXhlY3V0aXZlMihydW5fY29tbWFuZF9mbj1tb2Nr
X3J1bl9jb21tYW5kKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhtb2NrX2ltYWdlX2RpZmYs
IHBvcnQuZGlmZl9pbWFnZSgiRVhQRUNURUQiLCAiQUNUVUFMIikpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKG1vY2tfaW1hZ2VfZGlmZiwgcG9ydC5kaWZmX2ltYWdlKCJFWFBFQ1RFRCIsICJB
Q1RVQUwiKVswXSkKIAogICAgICAgICAjIEltYWdlcyBhcmUgdGhlIHNhbWUuCiAgICAgICAgIHBv
cnQuX2V4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZV9tb2NrLk1vY2tFeGVjdXRpdmUyKGV4aXRfY29kZT0w
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhOb25lLCBwb3J0LmRpZmZfaW1hZ2UoIkVYUEVD
VEVEIiwgIkFDVFVBTCIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhOb25lLCBwb3J0LmRp
ZmZfaW1hZ2UoIkVYUEVDVEVEIiwgIkFDVFVBTCIpWzBdKQogCiAgICAgICAgICMgVGhlcmUgd2Fz
IHNvbWUgZXJyb3IgcnVubmluZyBpbWFnZV9kaWZmLgogICAgICAgICBwb3J0Ll9leGVjdXRpdmUg
PSBleGVjdXRpdmVfbW9jay5Nb2NrRXhlY3V0aXZlMihleGl0X2NvZGU9MikKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2Fz
ZS5weQppbmRleCBlYjE0N2VhM2Y5ZGJlYTE2M2UyZWZjOWUzYzdlMWQyYzZmMTQ5NDM3Li4wYjc5
NTMzYzM5YzVlNTFkYzE1MTNlZTJhOGE4MzQ2YTRjZTA0YTMyIDEwMDc1NQotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5
CkBAIC0yMjYsMTAgKzIyNiwxMCBAQCBjbGFzcyBQb3J0VGVzdENhc2UodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgICAgICB0bXBmZCwgdG1wZmlsZSA9IHBvcnQuX2ZpbGVzeXN0ZW0ub3Blbl9iaW5h
cnlfdGVtcGZpbGUoJycpCiAgICAgICAgIHRtcGZkLmNsb3NlKCkKIAotICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKHBvcnQuZGlmZl9pbWFnZShjb250ZW50czEsIGNvbnRlbnRzMSkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRpZmZfaW1hZ2UoY29udGVudHMxLCBjb250ZW50czIpKQor
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBvcnQuZGlmZl9pbWFnZShjb250ZW50czEsIGNvbnRl
bnRzMSlbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRpZmZfaW1hZ2UoY29udGVu
dHMxLCBjb250ZW50czIpWzBdKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRpZmZf
aW1hZ2UoY29udGVudHMxLCBjb250ZW50czIsIHRtcGZpbGUpKQorICAgICAgICBzZWxmLmFzc2Vy
dFRydWUocG9ydC5kaWZmX2ltYWdlKGNvbnRlbnRzMSwgY29udGVudHMyLCB0bXBmaWxlKVswXSkK
IAogICAgICAgICBwb3J0Ll9maWxlc3lzdGVtLnJlbW92ZSh0bXBmaWxlKQogCkBAIC0yMzcsMjQg
KzIzNywyNCBAQCBjbGFzcyBQb3J0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQogICAgICAgICBpZiBub3QgcG9ydDoKICAgICAgICAg
ICAgIHJldHVybgotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBvcnQuZGlmZl9pbWFnZShOb25l
LCBOb25lKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwb3J0LmRpZmZfaW1hZ2UoTm9uZSwg
JycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBvcnQuZGlmZl9pbWFnZSgnJywgTm9uZSkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5kaWZmX2ltYWdlKCcnLCAnJykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5kaWZmX2ltYWdlKE5vbmUsIE5vbmUpWzBdKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKHBvcnQuZGlmZl9pbWFnZShOb25lLCAnJylbMF0pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5kaWZmX2ltYWdlKCcnLCBOb25lKVswXSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZShwb3J0LmRpZmZfaW1hZ2UoJycsICcnKVswXSkKIAogICAgIGRl
ZiB0ZXN0X2RpZmZfaW1hZ2VfX21pc3NpbmdfYWN0dWFsKHNlbGYpOgogICAgICAgICBwb3J0ID0g
c2VsZi5tYWtlX3BvcnQoKQogICAgICAgICBpZiBub3QgcG9ydDoKICAgICAgICAgICAgIHJldHVy
bgotICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5kaWZmX2ltYWdlKE5vbmUsICdmb28nKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuZGlmZl9pbWFnZSgnJywgJ2ZvbycpKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5kaWZmX2ltYWdlKE5vbmUsICdmb28nKVswXSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuZGlmZl9pbWFnZSgnJywgJ2ZvbycpWzBdKQogCiAg
ICAgZGVmIHRlc3RfZGlmZl9pbWFnZV9fbWlzc2luZ19leHBlY3RlZChzZWxmKToKICAgICAgICAg
cG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKICAgICAgICAgaWYgbm90IHBvcnQ6CiAgICAgICAgICAg
ICByZXR1cm4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuZGlmZl9pbWFnZSgnZm9vJywg
Tm9uZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRpZmZfaW1hZ2UoJ2ZvbycsICcn
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuZGlmZl9pbWFnZSgnZm9vJywgTm9uZSlb
MF0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRpZmZfaW1hZ2UoJ2ZvbycsICcnKVsw
XSkKIAogICAgIGRlZiB0ZXN0X2NoZWNrX2J1aWxkKHNlbGYpOgogICAgICAgICBwb3J0ID0gc2Vs
Zi5tYWtlX3BvcnQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC90ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC90ZXN0LnB5CmluZGV4IGEwYmNhYTU1OTNjMTYyNTdiMTU2MGMxZjc5YmNhMTE0YmY3NWU1
MDIuLmZmMWU4NmM3ZTA0OWM2ZDIyZGJmNTQ5OTZiMTJhNThlZTZmNmRhNmEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAgLTMyNSw4
ICszMjUsOCBAQCBjbGFzcyBUZXN0UG9ydChQb3J0KToKICAgICBkZWYgZGlmZl9pbWFnZShzZWxm
LCBleHBlY3RlZF9jb250ZW50cywgYWN0dWFsX2NvbnRlbnRzKToKICAgICAgICAgZGlmZmVkID0g
YWN0dWFsX2NvbnRlbnRzICE9IGV4cGVjdGVkX2NvbnRlbnRzCiAgICAgICAgIGlmIGRpZmZlZDoK
LSAgICAgICAgICAgIHJldHVybiAiPCAlc1xuLS0tXG4+ICVzXG4iICUgKGV4cGVjdGVkX2NvbnRl
bnRzLCBhY3R1YWxfY29udGVudHMpCi0gICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBy
ZXR1cm4gWyI8ICVzXG4tLS1cbj4gJXNcbiIgJSAoZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9j
b250ZW50cyksIDFdCisgICAgICAgIHJldHVybiAoTm9uZSwgMCkKIAogICAgIGRlZiBsYXlvdXRf
dGVzdHNfZGlyKHNlbGYpOgogICAgICAgICByZXR1cm4gTEFZT1VUX1RFU1RfRElSCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CmluZGV4
IDBiOTRkMTMzYjMwNTgzZTM1MDFhYjlmZDE3NjFkMDQ5ZGM3YWYxMGEuLjQ0ZTg1YWViOGE1ZDNl
ZWE2MmMzNjIyNzEwYjkzYjA1NDkzMTMzMmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CkBAIC0xNTEsMTEgKzE1MSwxMSBAQCBj
bGFzcyBXZWJLaXRQb3J0KFBvcnQpOgogICAgICAgICAjIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0
aGUgdGVzdCBkaWRuJ3QgYWN0dWFsbHkgZ2VuZXJhdGUgYW4gaW1hZ2UuCiAgICAgICAgICMgRklY
TUU6IG5lZWQgdW5pdCB0ZXN0cyBmb3IgdGhpcy4KICAgICAgICAgaWYgbm90IGFjdHVhbF9jb250
ZW50cyBhbmQgbm90IGV4cGVjdGVkX2NvbnRlbnRzOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUK
KyAgICAgICAgICAgIHJldHVybiAoTm9uZSwgMCkKICAgICAgICAgaWYgbm90IGFjdHVhbF9jb250
ZW50cyBvciBub3QgZXhwZWN0ZWRfY29udGVudHM6CiAgICAgICAgICAgICAjIEZJWE1FOiBJdCdz
IG5vdCBjbGVhciB3aGF0IHdlIHNob3VsZCByZXR1cm4gaW4gdGhpcyBjYXNlLgogICAgICAgICAg
ICAgIyBNYXliZSB3ZSBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uPwotICAgICAgICAgICAgcmV0
dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiAoVHJ1ZSwgMCkKIAogICAgICAgICBwcm9jZXNz
ID0gc2VsZi5fc3RhcnRfaW1hZ2VfZGlmZl9wcm9jZXNzKGV4cGVjdGVkX2NvbnRlbnRzLCBhY3R1
YWxfY29udGVudHMpCiAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkX2ltYWdlX2RpZmYocHJvY2Vz
cykKQEAgLTE4MCwxMiArMTgwLDE1IEBAIGNsYXNzIFdlYktpdFBvcnQoUG9ydCk6CiAgICAgICAg
IHRpbWVvdXQgPSAyLjAKICAgICAgICAgZGVhZGxpbmUgPSB0aW1lLnRpbWUoKSArIHRpbWVvdXQK
ICAgICAgICAgb3V0cHV0ID0gc3AucmVhZF9saW5lKHRpbWVvdXQpCisgICAgICAgIG91dHB1dF9p
bWFnZSA9ICIiCisgICAgICAgIGRpZmZfcGVyY2VudCA9IDAKICAgICAgICAgd2hpbGUgbm90IHNw
LnRpbWVkX291dCBhbmQgbm90IHNwLmNyYXNoZWQgYW5kIG91dHB1dDoKICAgICAgICAgICAgIGlm
IG91dHB1dC5zdGFydHN3aXRoKCdDb250ZW50LUxlbmd0aCcpOgogICAgICAgICAgICAgICAgIG0g
PSByZS5tYXRjaCgnQ29udGVudC1MZW5ndGg6IChcZCspJywgb3V0cHV0KQogICAgICAgICAgICAg
ICAgIGNvbnRlbnRfbGVuZ3RoID0gaW50KG0uZ3JvdXAoMSkpCiAgICAgICAgICAgICAgICAgdGlt
ZW91dCA9IGRlYWRsaW5lIC0gdGltZS50aW1lKCkKLSAgICAgICAgICAgICAgICBvdXRwdXQgPSBz
cC5yZWFkKHRpbWVvdXQsIGNvbnRlbnRfbGVuZ3RoKQorICAgICAgICAgICAgICAgIG91dHB1dF9p
bWFnZSA9IHNwLnJlYWQodGltZW91dCwgY29udGVudF9sZW5ndGgpCisgICAgICAgICAgICAgICAg
b3V0cHV0ID0gc3AucmVhZF9saW5lKHRpbWVvdXQpCiAgICAgICAgICAgICAgICAgYnJlYWsKICAg
ICAgICAgICAgIGVsaWYgb3V0cHV0LnN0YXJ0c3dpdGgoJ2RpZmYnKToKICAgICAgICAgICAgICAg
ICBicmVhawpAQCAtMjAxLDggKzIwNCw5IEBAIGNsYXNzIFdlYktpdFBvcnQoUG9ydCk6CiAgICAg
ICAgIGlmIG91dHB1dC5zdGFydHN3aXRoKCdkaWZmJyk6CiAgICAgICAgICAgICBtID0gcmUubWF0
Y2goJ2RpZmY6ICguKyklIChwYXNzZWR8ZmFpbGVkKScsIG91dHB1dCkKICAgICAgICAgICAgIGlm
IG0uZ3JvdXAoMikgPT0gJ3Bhc3NlZCc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAg
ICAgICAgcmV0dXJuIG91dHB1dAorICAgICAgICAgICAgICAgIHJldHVybiBbTm9uZSwgMF0KKyAg
ICAgICAgICAgIGRpZmZfcGVyY2VudCA9IGZsb2F0KG0uZ3JvdXAoMSkpCisgICAgICAgIHJldHVy
biAob3V0cHV0X2ltYWdlLCBkaWZmX3BlcmNlbnQpCiAKICAgICBkZWYgZGVmYXVsdF9yZXN1bHRz
X2RpcmVjdG9yeShzZWxmKToKICAgICAgICAgIyBSZXN1bHRzIGFyZSBzdG9yZSByZWxhdGl2ZSB0
byB0aGUgYnVpbHQgcHJvZHVjdHMgdG8gbWFrZSBpdCBlYXN5CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9u
dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRf
dGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CmluZGV4IDY5MDI0OWU2MDc3OTY2NmYzODgzN2Q4YmJm
NmM2OGZkOGI4Y2JjMGYuLmZmYmIwYjEwMjM0YjVhZDUwZmRiMmQ1ZTkyMTc0ZjMzMTMxM2YzYjUg
MTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJr
aXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CkBAIC00OSw2
ICs0OSwxMiBAQCB0cnk6CiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgbXVsdGlwcm9jZXNzaW5n
ID0gTm9uZQogCit0cnk6CisgICAgaW1wb3J0IGpzb24KK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAg
ICAjIHB5dGhvbiAyLjUgY29tcGF0aWJpbGl0eQorICAgIGltcG9ydCB3ZWJraXRweS50aGlyZHBh
cnR5LnNpbXBsZWpzb24gYXMganNvbgorCiAjIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIGZp
eCB0ZXN0LXdlYmtpdHB5IHRvIHdvcmsgcHJvcGVybHkgb24gY3lnd2luCiAjIChidWcgNjM4NDYp
LgogU0hPVUxEX1RFU1RfUFJPQ0VTU0VTID0gbXVsdGlwcm9jZXNzaW5nIGFuZCBzeXMucGxhdGZv
cm0gbm90IGluICgnY3lnd2luJywgJ3dpbjMyJykKQEAgLTU4MCw3ICs1ODYsNyBAQCBjbGFzcyBN
YWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGNsYXNzIEltYWdlRGlmZlRlc3RQ
b3J0KFRlc3RQb3J0KToKICAgICAgICAgICAgIGRlZiBkaWZmX2ltYWdlKHNlbGYsIGV4cGVjdGVk
X2NvbnRlbnRzLCBhY3R1YWxfY29udGVudHMpOgogICAgICAgICAgICAgICAgIHNlbGYudG9sZXJh
bmNlX3VzZWRfZm9yX2RpZmZfaW1hZ2UgPSBzZWxmLl9vcHRpb25zLnRvbGVyYW5jZQotICAgICAg
ICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICAgICAgcmV0dXJuIChUcnVlLCAxKQog
CiAgICAgICAgIGRlZiBnZXRfcG9ydF9mb3JfcnVuKGFyZ3MpOgogICAgICAgICAgICAgb3B0aW9u
cywgcGFyc2VkX2FyZ3MgPSBydW5fd2Via2l0X3Rlc3RzLnBhcnNlX2FyZ3MoYXJncykKQEAgLTY3
NSw2ICs2ODEsMjYgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogTWFpblRl
c3QgPSBza2lwX2lmKE1haW5UZXN0LCBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbicgYW5kIGNvbXBh
cmVfdmVyc2lvbihzeXMsICcyLjYnKVswXSA8IDAsICduZXctcnVuLXdlYmtpdC10ZXN0cyB0ZXN0
cyBoYW5nIG9uIEN5Z3dpbiBQeXRob24gMi41LjInKQogCiAKK2NsYXNzIEVuZFRvRW5kVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHBhcnNlX2Z1bGxfcmVzdWx0cyhzZWxmLCBmdWxs
X3Jlc3VsdHNfdGV4dCk6CisgICAgICAgIGpzb25fdG9fZXZhbCA9IGZ1bGxfcmVzdWx0c190ZXh0
LnJlcGxhY2UoIkFERF9SRVNVTFRTKCIsICIiKS5yZXBsYWNlKCIpOyIsICIiKQorICAgICAgICBj
b21wcmVzc2VkX3Jlc3VsdHMgPSBqc29uLmxvYWRzKGpzb25fdG9fZXZhbCkKKyAgICAgICAgcmV0
dXJuIGNvbXByZXNzZWRfcmVzdWx0cworCisgICAgZGVmIHRlc3RfZW5kX3RvX2VuZChzZWxmKToK
KyAgICAgICAgZnMgPSB1bml0X3Rlc3RfZmlsZXN5c3RlbSgpCisgICAgICAgIHJlcywgb3V0LCBl
cnIsIHVzZXIgPSBsb2dnaW5nX3J1bihyZWNvcmRfcmVzdWx0cz1UcnVlLCB0ZXN0c19pbmNsdWRl
ZD1UcnVlLCBmaWxlc3lzdGVtPWZzKQorCisgICAgICAgICMgU2l4IHRlc3RzIHNob3VsZCBmYWls
LCBzbyB0aGUgcmV0dXJuIGNvZGUgc2hvdWxkIGJlIDYuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKHJlcywgNikKKyAgICAgICAgcmVzdWx0cyA9IHNlbGYucGFyc2VfZnVsbF9yZXN1bHRzKGZz
LmZpbGVzWycvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb24nXSkKKwor
ICAgICAgICAjIENoZWNrIHRvIGVuc3VyZSB3ZSdyZSBwYXNzaW5nIGJhY2sgaW1hZ2UgZGlmZiAl
YWdlIGNvcnJlY3RseS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzdWx0c1sndGVzdHMn
XVsnZmFpbHVyZXMnXVsnZXhwZWN0ZWQnXVsnaW1hZ2UuaHRtbCddWydpbWFnZV9kaWZmX3BlcmNl
bnQnXSwgMSkKKworICAgICAgICAjIENoZWNrIHRoYXQgd2UgYXR0ZW1wdGVkIHRvIGRpc3BsYXkg
dGhlIHJlc3VsdHMgcGFnZSBpbiBhIGJyb3dzZXIuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh1
c2VyLm9wZW5lZF91cmxzKQorCiBjbGFzcyBSZWJhc2VsaW5lVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgZGVmIGFzc2VydEJhc2VsaW5lcyhzZWxmLCBmaWxlX2xpc3QsIGZpbGUsIGV4dGVu
c2lvbnMsIGVycik6CiAgICAgICAgICJhc3NlcnQgdGhhdCB0aGUgZmlsZV9saXN0IGNvbnRhaW5z
IHRoZSBiYXNlbGluZXMuIiIiCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
X2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b19iZV9tb3ZlZC9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0
cy5weQppbmRleCA1Y2E2YjZlOTM1ZDQzMTU0ZDY3ZGE0OTJmYzM0ODg1NDU5MTlkNjg5Li45YmZl
ODI1NDFmMTQzYmUxODZmOGI0MDFlMDljNGNlZjczZWRlNzlhIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3RvX2JlX21vdmVkL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rl
c3RzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9fYmVfbW92ZWQvcmViYXNlbGlu
ZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKQEAgLTUxNCw3ICs1MTQsNyBAQCBjbGFzcyBSZWJh
c2VsaW5lcihvYmplY3QpOgogICAgICAgICAiIiIKIAogICAgICAgICBpZiBpc19pbWFnZToKLSAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9wb3J0LmRpZmZfaW1hZ2Uob3V0cHV0MSwgb3V0cHV0MikK
KyAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3J0LmRpZmZfaW1hZ2Uob3V0cHV0MSwgb3V0cHV0
MilbMF0KIAogICAgICAgICByZXR1cm4gc2VsZi5fcG9ydC5jb21wYXJlX3RleHQob3V0cHV0MSwg
b3V0cHV0MikKIApAQCAtNTk5LDcgKzU5OSw3IEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6
CiAgICAgICAgICAgICBfbG9nLmRlYnVnKCcgSHRtbDogZGlmZmluZyAiJXMiIGFuZCAiJXMiJywg
b2xkX2ZpbGUsIG5ld19maWxlKQogICAgICAgICAgICAgb2xkX291dHB1dCA9IHNlbGYuX2ZpbGVz
eXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShvbGRfZmlsZSkKICAgICAgICAgICAgIG5ld19vdXRwdXQg
PSBzZWxmLl9maWxlc3lzdGVtLnJlYWRfYmluYXJ5X2ZpbGUobmV3X2ZpbGUpCi0gICAgICAgICAg
ICBpbWFnZV9kaWZmID0gc2VsZi5fcG9ydC5kaWZmX2ltYWdlKG9sZF9vdXRwdXQsIG5ld19vdXRw
dXQpCisgICAgICAgICAgICBpbWFnZV9kaWZmID0gc2VsZi5fcG9ydC5kaWZmX2ltYWdlKG9sZF9v
dXRwdXQsIG5ld19vdXRwdXQpWzBdCiAgICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRl
X2JpbmFyeV9maWxlKGRpZmZfZmlsZSwgaW1hZ2VfZGlmZikKIAogICAgICAgICBpZiBoYXNfZGlm
ZjoK
</data>

          </attachment>
      

    </bug>

</bugzilla>