<?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>178277</bug_id>
          
          <creation_ts>2017-10-13 12:02:18 -0700</creation_ts>
          <short_desc>WPT server is 10x slower than Apache</short_desc>
          <delta_ts>2024-02-07 05:58:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://github.com/web-platform-tests/wpt/issues/8391</see_also>
          <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>268912</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>fred.wang</cc>
    
    <cc>gsnedders</cc>
    
    <cc>lforschler</cc>
    
    <cc>pvollan</cc>
    
    <cc>rbuis</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1360146</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-10-13 12:02:18 -0700</bug_when>
    <thetext>Fetching WPT resources is so slow that it makes WPT tests very slow overall. Furthermore, resources aren&apos;t cacheable, so the harness keeps being fetched over and over.

On my MacBook Pro:

$ time curl http://localhost:8800/FileAPI/url/url_xmlhttprequest.html -o /dev/null
...
real	0m0.231s

$ time curl http://localhost:8000/loading/simple-subframe.html -o /dev/null
...
real	0m0.025s

$ curl -i  http://localhost:8800/FileAPI/url/url_xmlhttprequest.html
HTTP/1.1 200 OK
Content-Type: text/html
Server: BaseHTTP/0.3 Python/2.7.10
Date: Fri, 13 Oct 2017 19:01:37 GMT
# where is Last-Modified?
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360168</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-13 13:08:46 -0700</bug_when>
    <thetext>We should measure how much WPT tests are slower compared to file system for instance through run-webkit-tests.
I did such measurements a year or so ago and it was more like 10/20% slower.

If the bottleneck is related to some specific URLS like testharness.js/testharnessreport.js, is there a way for DRT/WTR to intercept/optimize these fetches?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360170</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-13 13:10:00 -0700</bug_when>
    <thetext>We should bring that to W3C and ask for optimizing WPT server.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360194</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-13 13:32:11 -0700</bug_when>
    <thetext>The results on my machine (using nsurl instead of curl to be more representative) confirm it is slower but not 10x:


==========================================

$ time nscurl http://localhost:8800/FileAPI/url/url_xmlhttprequest.html -o /dev/null

real	0m0.170s
user	0m0.024s
sys	0m0.021s

$ time nscurl http://localhost:8800/FileAPI/url/url_xmlhttprequest.html -o /dev/null

real	0m0.160s
user	0m0.022s
sys	0m0.018s

$ time nscurl http://localhost:8800/FileAPI/url/url_xmlhttprequest.html -o /dev/null

real	0m0.162s
user	0m0.022s
sys	0m0.019s

real AVG: 0m0.164

==========================================

$ time nscurl http://localhost:8000/loading/simple-subframe.html -o /dev/null

real	0m0.068s
user	0m0.021s
sys	0m0.017s

$ time nscurl http://localhost:8000/loading/simple-subframe.html -o /dev/null

real	0m0.058s
user	0m0.021s
sys	0m0.018s

$ time nscurl http://localhost:8000/loading/simple-subframe.html -o /dev/null

real	0m0.055s
user	0m0.020s
sys	0m0.017s

real AVG: 0m0.060s (2.7x faster)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360206</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-13 13:46:22 -0700</bug_when>
    <thetext>Headers are pretty different and I agree this is interesting:
HTTP/1.1 200 OK
Content-Type: text/html
Server: BaseHTTP/0.3 Python/2.7.10
Date: Fri, 13 Oct 2017 20:44:48 GMT

vs

HTTP/1.1 200 OK
Date: Fri, 13 Oct 2017 20:45:07 GMT
Server: Apache/2.4.27 (Unix) PHP/7.1.7 LibreSSL/2.2.7
Last-Modified: Fri, 10 Feb 2017 20:11:59 GMT
ETag: &quot;96-54832b5c981c0&quot;
Accept-Ranges: bytes
Content-Length: 150
Content-Type: text/html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374092</commentid>
    <comment_count>5</comment_count>
      <attachid>327431</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-11-21 14:41:45 -0800</bug_when>
    <thetext>Created attachment 327431
IDB sub test list

Tests used to measure Apache/WPT performance differences</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374093</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-11-21 14:45:14 -0800</bug_when>
    <thetext>I rerun the test list (in attachment) through WPT and Apache.
I observe a 20% slowdown with WPT when using run-webkit-tests.
When using run-webkit-tests with -f option, there is no observable difference in time needed to run the test suite.

This might mean the WPT lack of speed might not have a huge impact on running WPT tests. This should be completed with other tests, typically smaller tests where the difference might still be noticeable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374097</commentid>
    <comment_count>7</comment_count>
      <attachid>327432</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-11-21 15:16:09 -0800</bug_when>
    <thetext>Created attachment 327432
Patch to apply to WPT server to have Content-Length set more often</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374099</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-11-21 15:17:39 -0800</bug_when>
    <thetext>I just tried the patch to compute Content-Length for WPT served files.
I no longer observe any speed difference between Apache and WPT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374983</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-11-27 10:12:45 -0800</bug_when>
    <thetext>&gt; The results on my machine (using nsurl instead of curl to be more representative) confirm it is slower but not 10x:

The results seem to depend on the state of the system. Right now, there is virtually no difference between Apache and WPT on my machine, both take ~35 ms per resource. I&apos;m not sure offhand what could be causing such dramatic changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375005</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-11-27 10:48:39 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #9)
&gt; &gt; The results on my machine (using nsurl instead of curl to be more representative) confirm it is slower but not 10x:
&gt; 
&gt; The results seem to depend on the state of the system. Right now, there is
&gt; virtually no difference between Apache and WPT on my machine, both take ~35
&gt; ms per resource. I&apos;m not sure offhand what could be causing such dramatic
&gt; changes.

There was this issue about TIME_WAIT (https://bugs.webkit.org/show_bug.cgi?id=164822).
Could it be that it would slow down things?
Maybe run some wpt tests on a running WPT server and shortly after do the nsurl check, or repetitively do the nsurl check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375008</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-11-27 10:52:27 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #8)
&gt; I just tried the patch to compute Content-Length for WPT served files.
&gt; I no longer observe any speed difference between Apache and WPT.

Without the patch, the 25% difference is still showing in my MacBook.
I do not see any difference at all on my iMac (different OS versions though).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2011369</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2024-02-07 05:38:57 -0800</bug_when>
    <thetext>On a Mac Studio (2022), running macOS 14.4:

```
gsnedders@gsnedders-marsha WebKit % cp LayoutTests/http/tests/loading/simple-subframe.html LayoutTests/http/wpt/loading/simple-subframe.html
gsnedders@gsnedders-marsha WebKit % hyperfine -w 3 -m 250 &apos;nscurl http://localhost:8800/loading/simple-subframe.html -o /dev/null&apos; &apos;nscurl http://localhost:8000/loading/simple-subframe.html -o /dev/null&apos;
Benchmark 1: nscurl http://localhost:8800/loading/simple-subframe.html -o /dev/null
  Time (mean ± σ):     111.5 ms ±  28.9 ms    [User: 10.9 ms, System: 11.2 ms]
  Range (min … max):    46.2 ms … 165.4 ms    250 runs
 
Benchmark 2: nscurl http://localhost:8000/loading/simple-subframe.html -o /dev/null
  Time (mean ± σ):     117.8 ms ±  26.1 ms    [User: 11.3 ms, System: 11.7 ms]
  Range (min … max):    48.7 ms … 181.3 ms    250 runs
 
Summary
  nscurl http://localhost:8800/loading/simple-subframe.html -o /dev/null ran
    1.06 ± 0.36 times faster than nscurl http://localhost:8000/loading/simple-subframe.html -o /dev/null
```

…which tends to suggest it&apos;s a wash at this point, and largely dominated by noise, at least with a single request being made at a time?

Even what one might expect to be the case that Apache is better tuned for, with concurrent connections, comes back with almost no difference, again dominated by noise:

```
gsnedders@gsnedders-marsha OpenSource % hyperfine -w1 -m 30 &apos;parallel -N0 nscurl http://localhost:8800/loading/simple-subframe.html -o /dev/null ::: {1..30}&apos; &apos;parallel -N0 nscurl http://localhost:8000/loading/simple-subframe.html -o /dev/null ::: {1..30}&apos;
Benchmark 1: parallel -N0 nscurl http://localhost:8800/loading/simple-subframe.html -o /dev/null ::: {1..30}
  Time (mean ± σ):      2.166 s ±  0.027 s    [User: 2.525 s, System: 2.099 s]
  Range (min … max):    2.131 s …  2.255 s    30 runs
 
Benchmark 2: parallel -N0 nscurl http://localhost:8000/loading/simple-subframe.html -o /dev/null ::: {1..30}
  Time (mean ± σ):      2.159 s ±  0.026 s    [User: 2.525 s, System: 2.089 s]
  Range (min … max):    2.116 s …  2.233 s    30 runs
 
Summary
  parallel -N0 nscurl http://localhost:8000/loading/simple-subframe.html -o /dev/null ::: {1..30} ran
    1.00 ± 0.02 times faster than parallel -N0 nscurl http://localhost:8800/loading/simple-subframe.html -o /dev/null ::: {1..30}
```

I suggest we close this and the upstream issue at this point?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>327431</attachid>
            <date>2017-11-21 14:41:45 -0800</date>
            <delta_ts>2017-11-21 14:41:45 -0800</delta_ts>
            <desc>IDB sub test list</desc>
            <filename>test-list</filename>
            <type>text/plain</type>
            <size>4969</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvYWJv
cnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLmh0bWwKTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvYmluZGluZ3MtaW5qZWN0LWtleS5odG1sCkxh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2Nsb25l
LWJlZm9yZS1rZXlwYXRoLWV2YWwuaHRtbApMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL0luZGV4ZWREQi9jbG9zZS1pbi11cGdyYWRlbmVlZGVkLmh0bWwKTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvZGVsZXRlLXJl
cXVlc3QtcXVldWUuaHRtbApMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL0luZGV4ZWREQi9lcnJvci1hdHRyaWJ1dGVzLmh0bWwKTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvZXZlbnQtZGlzcGF0Y2gtYWN0aXZlLWZs
YWcuaHRtbApMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4
ZWREQi9maXJlLXN1Y2Nlc3MtZXZlbnQtZXhjZXB0aW9uLmh0bWwKTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvZmlyZS11cGdyYWRlbmVlZGVkLWV2
ZW50LWV4Y2VwdGlvbi5odG1sCkxheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvSW5kZXhlZERCL2dsb2JhbHNjb3BlLWluZGV4ZWREQi1TYW1lT2JqZWN0Lmh0bWwKTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaGlzdG9y
aWNhbC5odG1sCkxheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5k
ZXhlZERCL2lkYmN1cnNvci1hZHZhbmNlLWV4Y2VwdGlvbi1vcmRlci5odG1sCkxheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYmN1cnNvci1yZXF1
ZXN0LXNvdXJjZS5odG1sCkxheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvSW5kZXhlZERCL2lkYmRhdGFiYXNlLXRyYW5zYWN0aW9uLWV4Y2VwdGlvbi1vcmRlci5odG1s
CkxheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lk
YmZhY3RvcnktZGVsZXRlRGF0YWJhc2Utb3BhcXVlLW9yaWdpbi5odG1sCkxheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYmZhY3RvcnktZGVsZXRl
RGF0YWJhc2UtcmVxdWVzdC1zdWNjZXNzLmh0bWwKTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRiZmFjdG9yeS1vcGVuLWVycm9yLXByb3BlcnRp
ZXMuaHRtbApMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4
ZWREQi9pZGJmYWN0b3J5LW9wZW4tb3BhcXVlLW9yaWdpbi5odG1sCkxheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYmZhY3Rvcnktb3Blbi1yZXF1
ZXN0LWVycm9yLmh0bWwKTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9JbmRleGVkREIvaWRiZmFjdG9yeS1vcGVuLXJlcXVlc3Qtc3VjY2Vzcy5odG1sCkxheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYmluZGV4LWdl
dEFsbC1lbmZvcmNlcmFuZ2UuaHRtbApMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL0luZGV4ZWREQi9pZGJpbmRleC1nZXRBbGxLZXlzLWVuZm9yY2VyYW5nZS5odG1s
CkxheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lk
YmluZGV4LW9iamVjdFN0b3JlLVNhbWVPYmplY3QuaHRtbApMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJpbmRleC1xdWVyeS1leGNlcHRpb24t
b3JkZXIuaHRtbApMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0lu
ZGV4ZWREQi9pZGJpbmRleC1yZW5hbWUtYWJvcnQuaHRtbApMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJpbmRleC1yZW5hbWUtZXJyb3JzLmh0
bWwKTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIv
aWRiaW5kZXgtcmVuYW1lLmh0bWwKTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9JbmRleGVkREIvaWRiaW5kZXgtcmVxdWVzdC1zb3VyY2UuaHRtbApMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJpbmRleF9nZXRB
bGwuaHRtbApMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4
ZWREQi9pZGJpbmRleF9nZXRBbGxLZXlzLmh0bWwKTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmUtYWRkLXB1dC1leGNlcHRp
b24tb3JkZXIuaHRtbApMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L0luZGV4ZWREQi9pZGJvYmplY3RzdG9yZS1jbGVhci1leGNlcHRpb24tb3JkZXIuaHRtbApMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJvYmpl
Y3RzdG9yZS1kZWxldGUtZXhjZXB0aW9uLW9yZGVyLmh0bWwKTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmUtZGVsZXRlSW5k
ZXgtZXhjZXB0aW9uLW9yZGVyLmh0bWwKTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmUtZ2V0QWxsLWVuZm9yY2VyYW5nZS5o
dG1sCkxheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERC
L2lkYm9iamVjdHN0b3JlLWdldEFsbEtleXMtZW5mb3JjZXJhbmdlLmh0bWwKTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmUt
aW5kZXgtZmluaXNoZWQuaHRtbApMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL0luZGV4ZWREQi9pZGJvYmplY3RzdG9yZS1xdWVyeS1leGNlcHRpb24tb3JkZXIuaHRt
bApMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9p
ZGJvYmplY3RzdG9yZS1yZW5hbWUtYWJvcnQuaHRtbApMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJvYmplY3RzdG9yZS1yZW5hbWUtZXJyb3Jz
Lmh0bWwKTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVk
REIvaWRib2JqZWN0c3RvcmUtcmVuYW1lLXN0b3JlLmh0bWwKTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmUtcmVxdWVzdC1z
b3VyY2UuaHRtbApMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0lu
ZGV4ZWREQi9pZGJvYmplY3RzdG9yZS10cmFuc2FjdGlvbi1TYW1lT2JqZWN0Lmh0bWwKTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0
c3RvcmVfZ2V0QWxsLmh0bWwKTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmVfZ2V0QWxsS2V5cy5odG1sCkxheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYm9iamVjdHN0b3Jl
X2dldEtleS5odG1sCkxheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
SW5kZXhlZERCL2lkYnJlcXVlc3RfZXJyb3IuaHRtbApMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJyZXF1ZXN0X3Jlc3VsdC5odG1sCkxheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYnRyYW5z
YWN0aW9uLWRiLVNhbWVPYmplY3QuaHRtbApMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJ0cmFuc2FjdGlvbi1vYmplY3RTdG9yZS1leGNlcHRp
b24tb3JkZXIuaHRtbApMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L0luZGV4ZWREQi9pZGJ0cmFuc2FjdGlvbi1vYmplY3RTdG9yZS1maW5pc2hlZC5odG1sCkxheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYnRyYW5z
YWN0aW9uX29iamVjdFN0b3JlTmFtZXMuaHRtbApMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9rZXlfdmFsaWQuaHRtbApMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9rZXlnZW5lcmF0b3ItZXhwbGlj
aXQuaHRtbApMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4
ZWREQi9rZXlnZW5lcmF0b3ItaW5qZWN0Lmh0bWwKTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvbGFyZ2UtcmVxdWVzdHMtYWJvcnQuaHRtbApMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9uYW1lLXNj
b3Blcy5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>327432</attachid>
            <date>2017-11-21 15:16:09 -0800</date>
            <delta_ts>2017-11-21 15:16:09 -0800</delta_ts>
            <desc>Patch to apply to WPT server to have Content-Length set more often</desc>
            <filename>patch-content-length-wpt-server</filename>
            <type>text/plain</type>
            <size>20812</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">CiMgSEcgY2hhbmdlc2V0IHBhdGNoCiMgVXNlciBKYW1lcyBHcmFoYW0gPGphbWVzQGhvcHBpcG9s
bGEuY28udWs+CiMgRGF0ZSAxNTExMjg5NTk0IDAKIyBOb2RlIElEIDk2NmEyYzI3ZGNjYmE4YjRm
MzdhN2I4MjU3ZDk0ZGRmNDEzNjViMTQKIyBQYXJlbnQgIDdjOWY1NDFiNDcyMmY0NjIyNDAxMTc4
MTI3ZTg2NTk3MGFiNDUxNzUKQWRkIENvbnRlbnQtTGVuZ3RoIGluIG1vcmUgY2FzZXMgb24gd3B0
c2VydmUKCk1velJldmlldy1Db21taXQtSUQ6IDVVVzY2d2U0TzY3CgoKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUv
ZG9jcy9waXBlcy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL2RvY3MvcGlwZXMucnN0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy9waXBlcy5yc3QK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS9kb2NzL3BpcGVzLnJzdApAQCAtODUsMTYgKzg1LDIxIEBAIEZhbHNlKS4gU28sIGZv
ciBleGFtcGxlLCBhIHJlcXVlc3QgZm9yOjoKIGNhdXNlcyBleGFtcGxlLmh0bWwgdG8gYmUgcmV0
dXJuZWQgd2l0aCBhIHRleHQvcGxhaW4gY29udGVudCB0eXBlCiB3aGVyZWFzOjoKIAogICAgIGV4
YW1wbGUuaHRtbD9waXBlPWhlYWRlcihDb250ZW50LVR5cGUsdGV4dC9wbGFpbixUcnVlKQogCiBX
aWxsIGNhdXNlIGV4YW1wbGUuaHRtbCB0byBiZSByZXR1cm5lZCB3aXRoIGJvdGggdGV4dC9odG1s
IGFuZAogdGV4dC9wbGFpbiBjb250ZW50LXR5cGUgaGVhZGVycy4KIAorTm90ZSB0aGF0IGlmIHlv
dXIgaGVhZGVyIHZhbHVlIGluY2x1ZGVzIGEgY29tbWEsIHlvdSBjYW4gZXNjYXBlIGl0CitieSBw
cmVwZW5kaW5nIHRoZSBjaGFyYWN0ZXIgd2l0aCBhIGJhY2tzbGFzaCAnXCc6OgorCisgICAgZXhh
bXBsZS5odG1sP3BpcGU9aGVhZGVyKENhY2hlLUNvbnRyb2wsbm8tY2FjaGVcLG5vLXN0b3JlLFRy
dWUpCisKIHNsaWNlCiB+fn5+fgogCiBVc2VkIHRvIHNlbmQgb25seSBwYXJ0IG9mIGEgcmVzcG9u
c2UgYm9keS4gVGFrZXMgdGhlIHN0YXJ0IGFuZCwKIG9wdGlvbmFsbHksIGVuZCBieXRlcyBhcyBh
cmd1bWVudHMsIGFsdGhvdWdoIGVpdGhlciBjYW4gYmUgbnVsbCB0bwogaW5kaWNhdGUgdGhlIHN0
YXJ0IG9yIGVuZCBvZiB0aGUgZmlsZSwgcmVzcGVjdGl2ZWx5LiBTbyBmb3IgZXhhbXBsZTo6CiAK
ICAgICBleGFtcGxlLnR4dD9waXBlPXNsaWNlKDEwLDIwKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9m
dW5jdGlvbmFsL2Jhc2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvYmFzZS5weQotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rl
c3RzL2Z1bmN0aW9uYWwvYmFzZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvYmFzZS5weQpA
QCAtMzMsMjUgKzMzLDI5IEBAIGNsYXNzIFJlcXVlc3QoQmFzZVJlcXVlc3QpOgogICAgICAgICAg
ICAgZGF0YSA9IHVybGVuY29kZShkYXRhKQogICAgICAgICBwcmludChkYXRhKQogICAgICAgICBz
ZWxmLmFkZF9oZWFkZXIoIkNvbnRlbnQtTGVuZ3RoIiwgc3RyKGxlbihkYXRhKSkpCiAgICAgICAg
IEJhc2VSZXF1ZXN0LmFkZF9kYXRhKHNlbGYsIGRhdGEpCiAKIAogY2xhc3MgVGVzdFVzaW5nU2Vy
dmVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNl
bGYuc3Rhc2ggPSB3cHRzZXJ2ZS5zdGFzaC5TdGFzaFNlcnZlcigoImxvY2FsaG9zdCIsIDApLCBh
dXRoa2V5PXN0cih1dWlkLnV1aWQ0KCkpKQorICAgICAgICBzZWxmLnN0YXNoLnN0YXJ0KCkKKwog
ICAgICAgICBzZWxmLnNlcnZlciA9IHdwdHNlcnZlLnNlcnZlci5XZWJUZXN0SHR0cGQoaG9zdD0i
bG9jYWxob3N0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBvcnQ9MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVzZV9zc2w9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZT1Ob25lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jX3Jvb3Q9ZG9jX3Jvb3QpCiAgICAg
ICAgIHNlbGYuc2VydmVyLnN0YXJ0KEZhbHNlKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgog
ICAgICAgICBzZWxmLnNlcnZlci5zdG9wKCkKKyAgICAgICAgc2VsZi5zdGFzaC5zdG9wKCk7CiAK
ICAgICBkZWYgYWJzX3VybChzZWxmLCBwYXRoLCBxdWVyeT1Ob25lKToKICAgICAgICAgcmV0dXJu
IHVybHVuc3BsaXQoKCJodHRwIiwgIiVzOiVpIiAlIChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNl
cnZlci5wb3J0KSwgcGF0aCwgcXVlcnksIE5vbmUpKQogCiAgICAgZGVmIHJlcXVlc3Qoc2VsZiwg
cGF0aCwgcXVlcnk9Tm9uZSwgbWV0aG9kPSJHRVQiLCBoZWFkZXJzPU5vbmUsIGJvZHk9Tm9uZSwg
YXV0aD1Ob25lKToKICAgICAgICAgcmVxID0gUmVxdWVzdChzZWxmLmFic191cmwocGF0aCwgcXVl
cnkpKQogICAgICAgICByZXEubWV0aG9kID0gbWV0aG9kCiAgICAgICAgIGlmIGhlYWRlcnMgaXMg
Tm9uZToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3N1Yi50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9zdWIudHh0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25h
bC9kb2Nyb290L3N1Yi50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qvc3ViLnR4
dApAQCAtMSwxICsxLDEgQEAKLXt7aG9zdH19IHt7ZG9tYWluc1tdfX0ge3twb3J0c1todHRwXVsw
XX19Cit7e2hvc3R9fSB7e2RvbWFpbnNbXX19IHt7cG9ydHNbaHR0cF1bMF19fQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290
L3N1Yl9oZWFkZXJzLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3N1Yl9oZWFkZXJz
LnR4dAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9zdWJfaGVhZGVycy50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qvc3ViX2hlYWRlcnMudHh0CkBAIC0xLDEgKzEs
MSBAQAote3toZWFkZXJzW1gtVGVzdF19fQore3toZWFkZXJzW1gtVGVzdF19fQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290
L3N1Yl9wYXJhbXMudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qvc3ViX3BhcmFtcy50
eHQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qvc3ViX3BhcmFtcy50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qvc3ViX3BhcmFtcy50eHQKQEAgLTEsMSArMSwxIEBA
Ci17e0dFVFt0ZXN0XX19Cit7e0dFVFt0ZXN0XX19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfaGFuZGxlcnMucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rl
c3RzL2Z1bmN0aW9uYWwvdGVzdF9oYW5kbGVycy5weQotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwv
dGVzdF9oYW5kbGVycy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9oYW5kbGVycy5w
eQpAQCAtOTcsMTYgKzk3LDI3IEBAIGNsYXNzIFRlc3RGaWxlSGFuZGxlcihUZXN0VXNpbmdTZXJ2
ZXIpOgogCiAgICAgZGVmIHRlc3Rfc3ViX3BhcmFtcyhzZWxmKToKICAgICAgICAgcmVzcCA9IHNl
bGYucmVxdWVzdCgiL3N1Yl9wYXJhbXMuc3ViLnR4dCIsIHF1ZXJ5PSJ0ZXN0PVBBU1MiKQogICAg
ICAgICBleHBlY3RlZCA9IGIiUEFTUyIKICAgICAgICAgYXNzZXJ0IHJlc3AucmVhZCgpLnJzdHJp
cCgpID09IGV4cGVjdGVkCiAKIAogY2xhc3MgVGVzdEZ1bmN0aW9uSGFuZGxlcihUZXN0VXNpbmdT
ZXJ2ZXIpOgorICAgIGRlZiB0ZXN0X2VtcHR5KHNlbGYpOgorICAgICAgICBAd3B0c2VydmUuaGFu
ZGxlcnMuaGFuZGxlcgorICAgICAgICBkZWYgaGFuZGxlciAocmVxdWVzdCwgcmVzcG9uc2UpOgor
ICAgICAgICAgICAgcGFzcworCisgICAgICAgIHJvdXRlID0gKCJHRVQiLCAiL3Rlc3QvdGVzdF9l
bXB0eSIsIGhhbmRsZXIpCisgICAgICAgIHNlbGYuc2VydmVyLnJvdXRlci5yZWdpc3Rlcigqcm91
dGUpCisgICAgICAgIHJlc3AgPSBzZWxmLnJlcXVlc3Qocm91dGVbMV0pCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKDIwMCwgcmVzcC5nZXRjb2RlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKHJlc3AuaW5mbygpWyJDb250ZW50LUxlbmd0aCJdLCAiMCIpCisKICAgICBkZWYgdGVzdF9z
dHJpbmdfcnYoc2VsZik6CiAgICAgICAgIEB3cHRzZXJ2ZS5oYW5kbGVycy5oYW5kbGVyCiAgICAg
ICAgIGRlZiBoYW5kbGVyKHJlcXVlc3QsIHJlc3BvbnNlKToKICAgICAgICAgICAgIHJldHVybiAi
dGVzdCBkYXRhIgogCiAgICAgICAgIHJvdXRlID0gKCJHRVQiLCAiL3Rlc3QvdGVzdF9zdHJpbmdf
cnYiLCBoYW5kbGVyKQogICAgICAgICBzZWxmLnNlcnZlci5yb3V0ZXIucmVnaXN0ZXIoKnJvdXRl
KQogICAgICAgICByZXNwID0gc2VsZi5yZXF1ZXN0KHJvdXRlWzFdKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90
ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcGlwZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9w
aXBlcy5weQotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9waXBlcy5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rl
c3RzL2Z1bmN0aW9uYWwvdGVzdF9waXBlcy5weQpAQCAtMSwxMSArMSwxMyBAQAogaW1wb3J0IG9z
CiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0aW1lCitpbXBvcnQgZ3ppcCBhcyBnemlwX21vZHVs
ZQorZnJvbSBjU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCiAKIGltcG9ydCBweXRlc3QKIAogZnJv
bSAuYmFzZSBpbXBvcnQgVGVzdFVzaW5nU2VydmVyLCBkb2Nfcm9vdAogCiAKIGNsYXNzIFRlc3RT
dGF0dXMoVGVzdFVzaW5nU2VydmVyKToKICAgICBkZWYgdGVzdF9zdGF0dXMoc2VsZik6CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3dwdHNlcnZlL2hhbmRsZXJzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9oYW5kbGVycy5weQot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3dwdHNlcnZlL2hhbmRsZXJzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvaGFuZGxlcnMucHkK
QEAgLTQsMTcgKzQsMTcgQEAgaW1wb3J0IG9zCiBpbXBvcnQgdHJhY2ViYWNrCiAKIGZyb20gc2l4
Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgcGFyc2VfcXMsIHF1b3RlLCB1bnF1b3RlLCB1cmxq
b2luCiAKIGZyb20gLmNvbnN0YW50cyBpbXBvcnQgY29udGVudF90eXBlcwogZnJvbSAucGlwZXMg
aW1wb3J0IFBpcGVsaW5lLCB0ZW1wbGF0ZQogZnJvbSAucmFuZ2VzIGltcG9ydCBSYW5nZVBhcnNl
cgogZnJvbSAucmVxdWVzdCBpbXBvcnQgQXV0aGVudGljYXRpb24KLWZyb20gLnJlc3BvbnNlIGlt
cG9ydCBNdWx0aXBhcnRDb250ZW50Citmcm9tIC5yZXNwb25zZSBpbXBvcnQgTXVsdGlwYXJ0Q29u
dGVudCwgRmlsZUNvbnRlbnQKIGZyb20gLnV0aWxzIGltcG9ydCBIVFRQRXhjZXB0aW9uCiAKIF9f
YWxsX18gPSBbImZpbGVfaGFuZGxlciIsICJweXRob25fc2NyaXB0X2hhbmRsZXIiLAogICAgICAg
ICAgICAiRnVuY3Rpb25IYW5kbGVyIiwgImhhbmRsZXIiLCAianNvbl9oYW5kbGVyIiwKICAgICAg
ICAgICAgImFzX2lzX2hhbmRsZXIiLCAiRXJyb3JIYW5kbGVyIiwgIkJhc2ljQXV0aEhhbmRsZXIi
XQogCiAKIGRlZiBndWVzc19jb250ZW50X3R5cGUocGF0aCk6CkBAIC0xNzcsMjAgKzE3NywyMiBA
QCBjbGFzcyBGaWxlSGFuZGxlcihvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICBpZiB1c2Vfc3ViOgogICAgICAgICAgICAgICAgIGRhdGEg
PSB0ZW1wbGF0ZShyZXF1ZXN0LCBkYXRhLCBlc2NhcGVfdHlwZT0ibm9uZSIpCiAgICAgICAgICAg
ICByZXR1cm4gW3R1cGxlKGl0ZW0uc3RyaXAoKSBmb3IgaXRlbSBpbiBsaW5lLnNwbGl0KCI6Iiwg
MSkpCiAgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGRhdGEuc3BsaXRsaW5lcygpIGlm
IGxpbmVdCiAKICAgICBkZWYgZ2V0X2RhdGEoc2VsZiwgcmVzcG9uc2UsIHBhdGgsIGJ5dGVfcmFu
Z2VzKToKLSAgICAgICAgIiIiUmV0dXJuIGVpdGhlciB0aGUgaGFuZGxlIHRvIGEgZmlsZSwgb3Ig
YSBzdHJpbmcgY29udGFpbmluZwotICAgICAgICB0aGUgY29udGVudCBvZiBhIGNodW5rIG9mIHRo
ZSBmaWxlLCBpZiB3ZSBoYXZlIGEgcmFuZ2UgcmVxdWVzdC4iIiIKKyAgICAgICAgIiIiCisgICAg
ICAgIFJldHVybiBlaXRoZXIgYSBGaWxlQ29udGVudCwgYSBNdWx0aXBhcnRDb250ZW50LCBvciBh
IHN0cmluZyBpbiB0aGUKKyAgICAgICAgY2FzZSBvZiBhIHNpbmdsZS1jaHVuayByYW5nZSByZXF1
ZXN0LgorICAgICAgICAiIiIKICAgICAgICAgaWYgYnl0ZV9yYW5nZXMgaXMgTm9uZToKLSAgICAg
ICAgICAgIHJldHVybiBvcGVuKHBhdGgsICdyYicpCisgICAgICAgICAgICByZXR1cm4gRmlsZUNv
bnRlbnQocGF0aCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAn
cmInKSBhcyBmOgogICAgICAgICAgICAgICAgIHJlc3BvbnNlLnN0YXR1cyA9IDIwNgogICAgICAg
ICAgICAgICAgIGlmIGxlbihieXRlX3JhbmdlcykgPiAxOgogICAgICAgICAgICAgICAgICAgICBw
YXJ0c19jb250ZW50X3R5cGUsIGNvbnRlbnQgPSBzZWxmLnNldF9yZXNwb25zZV9tdWx0aXBhcnQo
cmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlX3JhbmdlcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGYpCiAgICAgICAgICAgICAgICAgICAgIGZvciBieXRlX3JhbmdlIGluIGJ5dGVf
cmFuZ2VzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9waXBlcy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcGlw
ZXMucHkKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9waXBlcy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3BpcGVzLnB5
CkBAIC0yMjYsMzQgKzIyNiw0MiBAQCBkZWYgdHJpY2tsZShyZXF1ZXN0LCByZXNwb25zZSwgZGVs
YXlzKToKICAgICAgICAgcmV0dXJuIHJ2CiAKICAgICBkZWxheXMgPSBwYXJzZV9kZWxheXMoKQog
ICAgIGlmIG5vdCBkZWxheXM6CiAgICAgICAgIHJldHVybiByZXNwb25zZQogICAgIGNvbnRlbnQg
PSByZXNvbHZlX2NvbnRlbnQocmVzcG9uc2UpCiAgICAgb2Zmc2V0ID0gWzBdCiAKLSAgICBkZWYg
YWRkX2NvbnRlbnQoZGVsYXlzLCByZXBlYXQ9RmFsc2UpOgotICAgICAgICBmb3IgaSwgKGl0ZW1f
dHlwZSwgdmFsdWUpIGluIGVudW1lcmF0ZShkZWxheXMpOgotICAgICAgICAgICAgaWYgaXRlbV90
eXBlID09ICJieXRlcyI6Ci0gICAgICAgICAgICAgICAgeWllbGQgY29udGVudFtvZmZzZXRbMF06
b2Zmc2V0WzBdICsgdmFsdWVdCi0gICAgICAgICAgICAgICAgb2Zmc2V0WzBdICs9IHZhbHVlCi0g
ICAgICAgICAgICBlbGlmIGl0ZW1fdHlwZSA9PSAiZGVsYXkiOgotICAgICAgICAgICAgICAgIHRp
bWUuc2xlZXAodmFsdWUpCi0gICAgICAgICAgICBlbGlmIGl0ZW1fdHlwZSA9PSAicmVwZWF0IjoK
LSAgICAgICAgICAgICAgICBpZiBpICE9IGxlbihkZWxheXMpIC0gMToKLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICB3aGlsZSBvZmZzZXRbMF0gPCBsZW4oY29u
dGVudCk6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIGFkZF9jb250ZW50KGRlbGF5
c1stKHZhbHVlICsgMSk6LTFdLCBUcnVlKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxk
IGl0ZW0KKyAgICBjbGFzcyBUcmlja2xlQ29udGVudChvYmplY3QpOgorICAgICAgICBkZWYgX19p
bml0X18oc2VsZiwgY29udGVudCwgZGVsYXlzKToKKyAgICAgICAgICAgIHNlbGYuc2l6ZSA9IGxl
bihjb250ZW50KQorICAgICAgICAgICAgc2VsZi5kZWxheXMgPSBkZWxheXMKKworICAgICAgICBk
ZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5hZGRfY29udGVudChz
ZWxmLmRlbGF5cywgRmFsc2UpCiAKLSAgICAgICAgaWYgbm90IHJlcGVhdCBhbmQgb2Zmc2V0WzBd
IDwgbGVuKGNvbnRlbnQpOgotICAgICAgICAgICAgeWllbGQgY29udGVudFtvZmZzZXRbMF06XQor
ICAgICAgICBkZWYgYWRkX2NvbnRlbnQoc2VsZiwgZGVsYXlzLCByZXBlYXQpOgorICAgICAgICAg
ICAgZm9yIGksIChpdGVtX3R5cGUsIHZhbHVlKSBpbiBlbnVtZXJhdGUoZGVsYXlzKToKKyAgICAg
ICAgICAgICAgICBpZiBpdGVtX3R5cGUgPT0gImJ5dGVzIjoKKyAgICAgICAgICAgICAgICAgICAg
eWllbGQgY29udGVudFtvZmZzZXRbMF06b2Zmc2V0WzBdICsgdmFsdWVdCisgICAgICAgICAgICAg
ICAgICAgIG9mZnNldFswXSArPSB2YWx1ZQorICAgICAgICAgICAgICAgIGVsaWYgaXRlbV90eXBl
ID09ICJkZWxheSI6CisgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAodmFsdWUpCisgICAg
ICAgICAgICAgICAgZWxpZiBpdGVtX3R5cGUgPT0gInJlcGVhdCI6CisgICAgICAgICAgICAgICAg
ICAgIGlmIGkgIT0gbGVuKGRlbGF5cykgLSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgb2Zmc2V0WzBdIDwgbGVuKGNvbnRlbnQp
OgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5hZGRfY29udGVudChk
ZWxheXNbLSh2YWx1ZSArIDEpOi0xXSwgVHJ1ZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeWllbGQgaXRlbQogCi0gICAgcmVzcG9uc2UuY29udGVudCA9IGFkZF9jb250ZW50KGRlbGF5
cykKKyAgICAgICAgICAgIGlmIG5vdCByZXBlYXQgYW5kIG9mZnNldFswXSA8IGxlbihjb250ZW50
KToKKyAgICAgICAgICAgICAgICB5aWVsZCBjb250ZW50W29mZnNldFswXTpdCisKKyAgICByZXNw
b25zZS5jb250ZW50ID0gVHJpY2tsZUNvbnRlbnQoY29udGVudCwgZGVsYXlzKQogICAgIHJldHVy
biByZXNwb25zZQogCiAKIEBwaXBlKG51bGxhYmxlKGludCksIG9wdChudWxsYWJsZShpbnQpKSkK
IGRlZiBzbGljZShyZXF1ZXN0LCByZXNwb25zZSwgc3RhcnQsIGVuZD1Ob25lKToKICAgICAiIiJT
ZW5kIGEgYnl0ZSByYW5nZSBvZiB0aGUgcmVzcG9uc2UgYm9keQogCiAgICAgOnBhcmFtIHN0YXJ0
OiBUaGUgc3RhcnRpbmcgb2Zmc2V0LiBGb2xsb3dzIHB5dGhvbiBzZW1hbnRpY3MgaW5jbHVkaW5n
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3Jlc3BvbnNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXNwb25z
ZS5weQotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3dwdHNlcnZlL3Jlc3BvbnNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcmVzcG9u
c2UucHkKQEAgLTEsMTUgKzEsMTYgQEAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWRE
aWN0CiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZWRlbHRhCiBpbXBvcnQgQ29v
a2llCiBpbXBvcnQganNvbgogaW1wb3J0IHR5cGVzCiBpbXBvcnQgdXVpZAogaW1wb3J0IHNvY2tl
dAoraW1wb3J0IG9zCiAKIGZyb20gLmNvbnN0YW50cyBpbXBvcnQgcmVzcG9uc2VfY29kZXMKIGZy
b20gLmxvZ2dlciBpbXBvcnQgZ2V0X2xvZ2dlcgogCiBtaXNzaW5nID0gb2JqZWN0KCkKIAogY2xh
c3MgUmVzcG9uc2Uob2JqZWN0KToKICAgICAiIiJPYmplY3QgcmVwcmVzZW50aW5nIHRoZSByZXNw
b25zZSB0byBhIEhUVFAgcmVxdWVzdApAQCAtMTc3LDIxICsxNzgsMTggQEAgY2xhc3MgUmVzcG9u
c2Uob2JqZWN0KToKICAgICAgICAgOnBhcmFtIHJlYWRfZmlsZTogLSBib29sZWFuIGNvbnRyb2xs
aW5nIHRoZSBiZWhhdmlvdXIgd2hlbiBjb250ZW50CiAgICAgICAgIGlzIGEgZmlsZSBoYW5kbGUu
IFdoZW4gc2V0IHRvIEZhbHNlIHRoZSBoYW5kbGUgd2lsbCBiZSByZXR1cm5lZCBkaXJlY3RseQog
ICAgICAgICBhbGxvd2luZyB0aGUgZmlsZSB0byBiZSBwYXNzZWQgdG8gdGhlIG91dHB1dCBpbiBz
bWFsbCBjaHVua3MuIFdoZW4gc2V0IHRvCiAgICAgICAgIFRydWUsIHRoZSBlbnRpcmUgY29udGVu
dCBvZiB0aGUgZmlsZSB3aWxsIGJlIHJldHVybmVkIGFzIGEgc3RyaW5nIGZhY2lsaXRhdGluZwog
ICAgICAgICBub24tc3RyZWFtaW5nIG9wZXJhdGlvbnMgbGlrZSB0ZW1wbGF0ZSBzdWJzdGl0dXRp
b24uCiAgICAgICAgICIiIgogICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuY29udGVudCwgdHlw
ZXMuU3RyaW5nVHlwZXMpOgogICAgICAgICAgICAgeWllbGQgc2VsZi5jb250ZW50Ci0gICAgICAg
IGVsaWYgaGFzYXR0cihzZWxmLmNvbnRlbnQsICJyZWFkIik6Ci0gICAgICAgICAgICBpZiByZWFk
X2ZpbGU6Ci0gICAgICAgICAgICAgICAgeWllbGQgc2VsZi5jb250ZW50LnJlYWQoKQotICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB5aWVsZCBzZWxmLmNvbnRlbnQKKyAgICAgICAg
ZWxpZiBpc2luc3RhbmNlKHNlbGYuY29udGVudCwgRmlsZUNvbnRlbnQpIGFuZCByZWFkX2ZpbGU6
CisgICAgICAgICAgICB5aWVsZCBzZWxmLmNvbnRlbnQucmVhZCgpCiAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICBmb3IgaXRlbSBpbiBzZWxmLmNvbnRlbnQ6CiAgICAgICAgICAgICAgICAgaWYg
aGFzYXR0cihpdGVtLCAiX19jYWxsX18iKToKICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBp
dGVtKCkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9
IGl0ZW0KICAgICAgICAgICAgICAgICBpZiB2YWx1ZToKICAgICAgICAgICAgICAgICAgICAgeWll
bGQgdmFsdWUKQEAgLTIyMyw0NSArMjIxLDc2IEBAIGNsYXNzIFJlc3BvbnNlKG9iamVjdCk6CiAg
ICAgICAgIHNlbGYuc3RhdHVzID0gY29kZQogICAgICAgICBzZWxmLmhlYWRlcnMgPSBbKCJDb250
ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vanNvbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAg
KCJDb250ZW50LUxlbmd0aCIsIGxlbihkYXRhKSldCiAgICAgICAgIHNlbGYuY29udGVudCA9IGRh
dGEKICAgICAgICAgaWYgY29kZSA9PSA1MDA6CiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJv
cihtZXNzYWdlKQogCiAKK2NsYXNzIEZpbGVDb250ZW50KG9iamVjdCk6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHBhdGgpOgorICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisgICAgICAgIHNlbGYu
c2l6ZSA9IG9zLnN0YXQocGF0aCkuc3Rfc2l6ZQorICAgICAgICBzZWxmLmZpbGVfY2h1bmtfc2l6
ZSA9IDMyICogMTAyNAorCisgICAgZGVmIHJlYWQoc2VsZik6CisgICAgICAgIHdpdGggb3Blbihz
ZWxmLnBhdGgsICJyYiIpIGFzIGY6CisgICAgICAgICAgICByZXR1cm4gZi5yZWFkKCkKKworICAg
IGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYucGF0aCwgInJiIikg
YXMgZjoKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgYnVmID0gZi5y
ZWFkKHNlbGYuZmlsZV9jaHVua19zaXplKQorICAgICAgICAgICAgICAgIGlmIG5vdCBidWY6Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgeWllbGQgYnVmCisKKwog
Y2xhc3MgTXVsdGlwYXJ0Q29udGVudChvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBi
b3VuZGFyeT1Ob25lLCBkZWZhdWx0X2NvbnRlbnRfdHlwZT1Ob25lKToKICAgICAgICAgc2VsZi5p
dGVtcyA9IFtdCiAgICAgICAgIGlmIGJvdW5kYXJ5IGlzIE5vbmU6CiAgICAgICAgICAgICBib3Vu
ZGFyeSA9IHN0cih1dWlkLnV1aWQ0KCkpCiAgICAgICAgIHNlbGYuYm91bmRhcnkgPSBib3VuZGFy
eQogICAgICAgICBzZWxmLmRlZmF1bHRfY29udGVudF90eXBlID0gZGVmYXVsdF9jb250ZW50X3R5
cGUKKyAgICAgICAgc2VsZi5zZXJpYWxpemVkID0gTm9uZQogCi0gICAgZGVmIF9fY2FsbF9fKHNl
bGYpOgorICAgIGRlZiBhcHBlbmRfcGFydChzZWxmLCBkYXRhLCBjb250ZW50X3R5cGU9Tm9uZSwg
aGVhZGVycz1Ob25lKToKKyAgICAgICAgaWYgY29udGVudF90eXBlIGlzIE5vbmU6CisgICAgICAg
ICAgICBjb250ZW50X3R5cGUgPSBzZWxmLmRlZmF1bHRfY29udGVudF90eXBlCisgICAgICAgIHNl
bGYuaXRlbXMuYXBwZW5kKE11bHRpcGFydFBhcnQoZGF0YSwgY29udGVudF90eXBlLCBoZWFkZXJz
KSkKKworICAgIGRlZiBzZXJpYWxpemUoc2VsZik6CiAgICAgICAgIGJvdW5kYXJ5ID0gIi0tIiAr
IHNlbGYuYm91bmRhcnkKICAgICAgICAgcnYgPSBbIiIsIGJvdW5kYXJ5XQogICAgICAgICBmb3Ig
aXRlbSBpbiBzZWxmLml0ZW1zOgogICAgICAgICAgICAgcnYuYXBwZW5kKHN0cihpdGVtKSkKICAg
ICAgICAgICAgIHJ2LmFwcGVuZChib3VuZGFyeSkKICAgICAgICAgcnZbLTFdICs9ICItLSIKLSAg
ICAgICAgcmV0dXJuICJcclxuIi5qb2luKHJ2KQorICAgICAgICBzZWxmLnNlcmlhbGl6ZWQgPSAi
XHJcbiIuam9pbihydikKIAotICAgIGRlZiBhcHBlbmRfcGFydChzZWxmLCBkYXRhLCBjb250ZW50
X3R5cGU9Tm9uZSwgaGVhZGVycz1Ob25lKToKLSAgICAgICAgaWYgY29udGVudF90eXBlIGlzIE5v
bmU6Ci0gICAgICAgICAgICBjb250ZW50X3R5cGUgPSBzZWxmLmRlZmF1bHRfY29udGVudF90eXBl
Ci0gICAgICAgIHNlbGYuaXRlbXMuYXBwZW5kKE11bHRpcGFydFBhcnQoZGF0YSwgY29udGVudF90
eXBlLCBoZWFkZXJzKSkKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2l6ZShzZWxmKToKKyAgICAg
ICAgaWYgbm90IHNlbGYuc2VyaWFsaXplZDoKKyAgICAgICAgICAgIHNlbGYuc2VyaWFsaXplKCkK
KyAgICAgICAgcmV0dXJuIGxlbihzZWxmLnNlcmlhbGl6ZWQpIGlmIHNlbGYuc2VyaWFsaXplZCBl
bHNlIE5vbmUKIAogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICAgI1RoaXMgaXMgaGFj
a2lzaDsgd2hlbiB3cml0aW5nIHRoZSByZXNwb25zZSB3ZSBuZWVkIGFuIGl0ZXJhYmxlCiAgICAg
ICAgICNvciBhIHN0cmluZy4gRm9yIGEgbXVsdGlwYXJ0L2J5dGVyYW5nZSByZXNwb25zZSB3ZSB3
YW50IGFuCiAgICAgICAgICNpdGVyYWJsZSB0aGF0IGNvbnRhaW5zIGEgc2luZ2xlIGNhbGxhYmxl
OyB0aGUgTXVsdGlwYXJ0Q29udGVudAogICAgICAgICAjb2JqZWN0IGl0c2VsZgogICAgICAgICB5
aWVsZCBzZWxmCiAKKyAgICBkZWYgX19jYWxsX18oc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxm
LnNlcmlhbGl6ZWQ6CisgICAgICAgICAgICBzZWxmLnNlcmlhbGl6ZSgpCisgICAgICAgIHJldHVy
biBzZWxmLnNlcmlhbGl6ZWQKKwogCiBjbGFzcyBNdWx0aXBhcnRQYXJ0KG9iamVjdCk6CiAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEsIGNvbnRlbnRfdHlwZT1Ob25lLCBoZWFkZXJzPU5vbmUp
OgogICAgICAgICBzZWxmLmhlYWRlcnMgPSBSZXNwb25zZUhlYWRlcnMoKQogCiAgICAgICAgIGlm
IGNvbnRlbnRfdHlwZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYuaGVhZGVycy5zZXQo
IkNvbnRlbnQtVHlwZSIsIGNvbnRlbnRfdHlwZSkKIApAQCAtMzYyLDE3ICszOTEsMTYgQEAgY2xh
c3MgUmVzcG9uc2VXcml0ZXIob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgaGFuZGxl
ciwgcmVzcG9uc2UpOgogICAgICAgICBzZWxmLl93ZmlsZSA9IGhhbmRsZXIud2ZpbGUKICAgICAg
ICAgc2VsZi5fcmVzcG9uc2UgPSByZXNwb25zZQogICAgICAgICBzZWxmLl9oYW5kbGVyID0gaGFu
ZGxlcgogICAgICAgICBzZWxmLl9oZWFkZXJzX3NlZW4gPSBzZXQoKQogICAgICAgICBzZWxmLl9o
ZWFkZXJzX2NvbXBsZXRlID0gRmFsc2UKICAgICAgICAgc2VsZi5jb250ZW50X3dyaXR0ZW4gPSBG
YWxzZQogICAgICAgICBzZWxmLnJlcXVlc3QgPSByZXNwb25zZS5yZXF1ZXN0Ci0gICAgICAgIHNl
bGYuZmlsZV9jaHVua19zaXplID0gMzIgKiAxMDI0CiAKICAgICBkZWYgd3JpdGVfc3RhdHVzKHNl
bGYsIGNvZGUsIG1lc3NhZ2U9Tm9uZSk6CiAgICAgICAgICIiIldyaXRlIG91dCB0aGUgc3RhdHVz
IGxpbmUgb2YgYSByZXNwb25zZS4KIAogICAgICAgICA6cGFyYW0gY29kZTogVGhlIGludGVnZXIg
c3RhdHVzIGNvZGUgb2YgdGhlIHJlc3BvbnNlLgogICAgICAgICA6cGFyYW0gbWVzc2FnZTogVGhl
IG1lc3NhZ2Ugb2YgdGhlIHJlc3BvbnNlLiBEZWZhdWx0cyB0byB0aGUgbWVzc2FnZSBjb21tb25s
eSB1c2VkCiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBzdGF0dXMgY29kZS4iIiIK
ICAgICAgICAgaWYgbWVzc2FnZSBpcyBOb25lOgpAQCAtMzk1LDIwICs0MjMsMzMgQEAgY2xhc3Mg
UmVzcG9uc2VXcml0ZXIob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYuZmx1c2goKQogCiAgICAg
ZGVmIHdyaXRlX2RlZmF1bHRfaGVhZGVycyhzZWxmKToKICAgICAgICAgZm9yIG5hbWUsIGYgaW4g
WygiU2VydmVyIiwgc2VsZi5faGFuZGxlci52ZXJzaW9uX3N0cmluZyksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAoIkRhdGUiLCBzZWxmLl9oYW5kbGVyLmRhdGVfdGltZV9zdHJpbmcpXToKICAg
ICAgICAgICAgIGlmIG5hbWUubG93ZXIoKSBub3QgaW4gc2VsZi5faGVhZGVyc19zZWVuOgogICAg
ICAgICAgICAgICAgIHNlbGYud3JpdGVfaGVhZGVyKG5hbWUsIGYoKSkKIAotICAgICAgICBpZiAo
dHlwZShzZWxmLl9yZXNwb25zZS5jb250ZW50KSBpbiAoc3RyLCB1bmljb2RlKSBhbmQKLSAgICAg
ICAgICAgICJjb250ZW50LWxlbmd0aCIgbm90IGluIHNlbGYuX2hlYWRlcnNfc2Vlbik6Ci0gICAg
ICAgICAgICAjV291bGQgYmUgbmljZSB0byBhdm9pZCBkb3VibGUtZW5jb2RpbmcgaGVyZQotICAg
ICAgICAgICAgc2VsZi53cml0ZV9oZWFkZXIoIkNvbnRlbnQtTGVuZ3RoIiwgbGVuKHNlbGYuZW5j
b2RlKHNlbGYuX3Jlc3BvbnNlLmNvbnRlbnQpKSkKKyAgICAgICAgaWYgImNvbnRlbnQtbGVuZ3Ro
IiBub3QgaW4gc2VsZi5faGVhZGVyc19zZWVuOgorICAgICAgICAgICAgbGVuZ3RoID0gTm9uZQor
CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuX3Jlc3BvbnNlLmNvbnRlbnQsIHN0cik6
CisgICAgICAgICAgICAgICAgbGVuZ3RoID0gbGVuKHNlbGYuX3Jlc3BvbnNlLmNvbnRlbnQpCisg
ICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc2VsZi5fcmVzcG9uc2UuY29udGVudCwgdW5pY29k
ZSk6CisgICAgICAgICAgICAgICAgI1dvdWxkIGJlIG5pY2UgdG8gYXZvaWQgZG91YmxlLWVuY29k
aW5nIGhlcmUKKyAgICAgICAgICAgICAgICBsZW5ndGggPSBsZW4oc2VsZi5lbmNvZGUoc2VsZi5f
cmVzcG9uc2UuY29udGVudCkpCisgICAgICAgICAgICBlbGlmIGhhc2F0dHIoc2VsZi5fcmVzcG9u
c2UuY29udGVudCwgInNpemUiKToKKyAgICAgICAgICAgICAgICAjRmlsZUNvbnRlbnQsIE11bHRp
cGFydENvbnRlbnQsIGV0Yy4KKyAgICAgICAgICAgICAgICBsZW5ndGggPSBzZWxmLl9yZXNwb25z
ZS5jb250ZW50LnNpemUKKyAgICAgICAgICAgIGVsaWYgbGVuKHNlbGYuX3Jlc3BvbnNlLmNvbnRl
bnQpID09IDA6CisgICAgICAgICAgICAgICAgI2UuZy4gcmVkaXJlY3RzCisgICAgICAgICAgICAg
ICAgbGVuZ3RoID0gMAorCisgICAgICAgICAgICBpZiBsZW5ndGggIT0gTm9uZToKKyAgICAgICAg
ICAgICAgICBzZWxmLndyaXRlX2hlYWRlcigiQ29udGVudC1MZW5ndGgiLCBsZW5ndGgpCiAKICAg
ICBkZWYgZW5kX2hlYWRlcnMoc2VsZik6CiAgICAgICAgICIiIkZpbmlzaCB3cml0aW5nIGhlYWRl
cnMgYW5kIHdyaXRlIHRoZSBzZXBhcmF0b3IuCiAKICAgICAgICAgVW5sZXNzIGFkZF9yZXF1aXJl
ZF9oZWFkZXJzIG9uIHRoZSByZXNwb25zZSBpcyBGYWxzZSwKICAgICAgICAgdGhpcyB3aWxsIGFs
c28gYWRkIEhUVFAtbWFuZGF0ZWQgaGVhZGVycyB0aGF0IGhhdmUgbm90IHlldCBiZWVuIHN1cHBs
aWVkCiAgICAgICAgIHRvIHRoZSByZXNwb25zZSBoZWFkZXJzIiIiCiAKQEAgLTQyMSw0NSArNDYy
LDI5IEBAIGNsYXNzIFJlc3BvbnNlV3JpdGVyKG9iamVjdCk6CiAgICAgICAgIGlmIG5vdCBzZWxm
Ll9yZXNwb25zZS5leHBsaWNpdF9mbHVzaDoKICAgICAgICAgICAgIHNlbGYuZmx1c2goKQogICAg
ICAgICBzZWxmLl9oZWFkZXJzX2NvbXBsZXRlID0gVHJ1ZQogCiAgICAgZGVmIHdyaXRlX2NvbnRl
bnQoc2VsZiwgZGF0YSk6CiAgICAgICAgICIiIldyaXRlIHRoZSBib2R5IG9mIHRoZSByZXNwb25z
ZS4iIiIKICAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCB0eXBlcy5TdHJpbmdUeXBlcyk6CiAg
ICAgICAgICAgICBzZWxmLndyaXRlKGRhdGEpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBz
ZWxmLndyaXRlX2NvbnRlbnRfZmlsZShkYXRhKQogICAgICAgICBpZiBub3Qgc2VsZi5fcmVzcG9u
c2UuZXhwbGljaXRfZmx1c2g6CiAgICAgICAgICAgICBzZWxmLmZsdXNoKCkKIAogICAgIGRlZiB3
cml0ZShzZWxmLCBkYXRhKToKICAgICAgICAgIiIiV3JpdGUgZGlyZWN0bHkgdG8gdGhlIHJlc3Bv
bnNlLCBjb252ZXJ0aW5nIHVuaWNvZGUgdG8gYnl0ZXMKICAgICAgICAgYWNjb3JkaW5nIHRvIHJl
c3BvbnNlLmVuY29kaW5nLiBEb2VzIG5vdCBmbHVzaC4iIiIKICAgICAgICAgc2VsZi5jb250ZW50
X3dyaXR0ZW4gPSBUcnVlCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX3dmaWxlLndy
aXRlKHNlbGYuZW5jb2RlKGRhdGEpKQogICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgogICAg
ICAgICAgICAgIyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHNvY2tldCBnb3QgY2xvc2VkIGJ5IHRo
ZSByZW1vdGUgZW5kCiAgICAgICAgICAgICBwYXNzCiAKLSAgICBkZWYgd3JpdGVfY29udGVudF9m
aWxlKHNlbGYsIGRhdGEpOgotICAgICAgICAiIiJXcml0ZSBhIGZpbGUtbGlrZSBvYmplY3QgZGly
ZWN0bHkgdG8gdGhlIHJlc3BvbnNlIGluIGNodW5rcy4KLSAgICAgICAgRG9lcyBub3QgZmx1c2gu
IiIiCi0gICAgICAgIHNlbGYuY29udGVudF93cml0dGVuID0gVHJ1ZQotICAgICAgICB3aGlsZSBU
cnVlOgotICAgICAgICAgICAgYnVmID0gZGF0YS5yZWFkKHNlbGYuZmlsZV9jaHVua19zaXplKQot
ICAgICAgICAgICAgaWYgbm90IGJ1ZjoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuX3dmaWxlLndyaXRlKGJ1ZikKLSAgICAgICAg
ICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAg
ZGF0YS5jbG9zZSgpCi0KICAgICBkZWYgZW5jb2RlKHNlbGYsIGRhdGEpOgogICAgICAgICAiIiJD
b252ZXJ0IHVuaWNvZGUgdG8gYnl0ZXMgYWNjb3JkaW5nIHRvIHJlc3BvbnNlLmVuY29kaW5nLiIi
IgogICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHN0cik6CiAgICAgICAgICAgICByZXR1cm4g
ZGF0YQogICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZGF0YSwgdW5pY29kZSk6CiAgICAgICAgICAg
ICByZXR1cm4gZGF0YS5lbmNvZGUoc2VsZi5fcmVzcG9uc2UuZW5jb2RpbmcpCiAgICAgICAgIGVs
c2U6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZl
L3N0YXNoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zdGFzaC5weQotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3N0YXNoLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvd3B0c2VydmUvc3Rhc2gucHkKQEAgLTIxLDIwICsyMSwyNiBAQCBDbGllbnREaWN0
TWFuYWdlci5yZWdpc3RlcigiZ2V0X2RpY3QiKQogCiBjbGFzcyBTdGFzaFNlcnZlcihvYmplY3Qp
OgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzPU5vbmUsIGF1dGhrZXk9Tm9uZSk6CiAg
ICAgICAgIHNlbGYuYWRkcmVzcyA9IGFkZHJlc3MKICAgICAgICAgc2VsZi5hdXRoa2V5ID0gYXV0
aGtleQogICAgICAgICBzZWxmLm1hbmFnZXIgPSBOb25lCiAKICAgICBkZWYgX19lbnRlcl9fKHNl
bGYpOgorICAgICAgICBzZWxmLnN0YXJ0KCkKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJn
cywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLnN0b3AoKQorCisgICAgZGVmIHN0YXJ0KHNlbGYp
OgogICAgICAgICBzZWxmLm1hbmFnZXIsIHNlbGYuYWRkcmVzcywgc2VsZi5hdXRoa2V5ID0gc3Rh
cnRfc2VydmVyKHNlbGYuYWRkcmVzcywgc2VsZi5hdXRoa2V5KQogICAgICAgICBzdG9yZV9lbnZf
Y29uZmlnKHNlbGYuYWRkcmVzcywgc2VsZi5hdXRoa2V5KQogCi0gICAgZGVmIF9fZXhpdF9fKHNl
bGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgIGlmIHNl
bGYubWFuYWdlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYubWFuYWdlci5zaHV0ZG93
bigpCiAKIGRlZiBsb2FkX2Vudl9jb25maWcoKToKICAgICBhZGRyZXNzLCBhdXRoa2V5ID0ganNv
bi5sb2Fkcyhvcy5lbnZpcm9uWyJXUFRfU1RBU0hfQ09ORklHIl0pCiAgICAgaWYgaXNpbnN0YW5j
ZShhZGRyZXNzLCBsaXN0KToKICAgICAgICAgYWRkcmVzcyA9IHR1cGxlKGFkZHJlc3MpCiAgICAg
ZWxzZToKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>