<?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>154277</bug_id>
          
          <creation_ts>2016-02-15 20:39:42 -0800</creation_ts>
          <short_desc>Extract the code specific to v2 UI out of shared statistics.js</short_desc>
          <delta_ts>2016-02-16 15:16:21 -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>Perf Dashboard</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>slewis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1165026</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-15 20:39:42 -0800</bug_when>
    <thetext>Extract the code specific to v2 UI (and the current implementation of detect-changes.js) out of statistics.js

This re-factoring is needed to support statistical tools in v3 UI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165034</commentid>
    <comment_count>1</comment_count>
      <attachid>271412</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-15 20:54:18 -0800</bug_when>
    <thetext>Created attachment 271412
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165298</commentid>
    <comment_count>2</comment_count>
      <attachid>271412</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-16 13:39:15 -0800</bug_when>
    <thetext>Comment on attachment 271412
Cleanup

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

rs=me

&gt; Websites/perf.webkit.org/ChangeLog:8
&gt; +        Extracted statistics-strategies.js out of statistics.js for v2 UI and detect-changes.js. The indent is to

&quot;intent&quot; ?

&gt; Websites/perf.webkit.org/public/shared/statistics.js:136
&gt; +    this.cumultaiveMovingAverage = function (values) {

&quot;cumulative&quot;.

&gt; Websites/perf.webkit.org/public/v2/statistics-strategies.js:21
&gt; +        execute: Statistics.cumultaiveMovingAverage,

&quot;cumulative&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165348</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-16 15:16:21 -0800</bug_when>
    <thetext>Committed r196663: &lt;http://trac.webkit.org/changeset/196663&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271412</attachid>
            <date>2016-02-15 20:54:18 -0800</date>
            <delta_ts>2016-02-16 13:39:15 -0800</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-154277-20160215205358.patch</filename>
            <type>text/plain</type>
            <size>35501</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMTk2NjE0KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQyIEBACisyMDE2LTAyLTE1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIEV4dHJhY3QgdGhlIGNvZGUgc3BlY2lmaWMgdG8gdjIgVUkgb3V0IG9mIHNoYXJl
ZCBzdGF0aXN0aWNzLmpzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTQyNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFeHRyYWN0ZWQgc3RhdGlzdGljcy1zdHJhdGVnaWVzLmpzIG91dCBvZiBzdGF0aXN0
aWNzLmpzIGZvciB2MiBVSSBhbmQgZGV0ZWN0LWNoYW5nZXMuanMuIFRoZSBpbmRlbnQgaXMgdG8K
KyAgICAgICAgZGVwcmVjYXRlIHRoaXMgZmlsZSBvbmNlIHdlIGltcGxlbWVudCByZWZpbmVkIHN0
YXRpc3RpY3MgdG9vbHMgaW4gdjMgVUkgYW5kIGFkb3B0IGl0IGluIGRldGVjdC1jaGFuZ2VzLmpz
LgorCisgICAgICAgICogcHVibGljL3NoYXJlZC9zdGF0aXN0aWNzLmpzOgorICAgICAgICAoU3Rh
dGlzdGljcy5tb3ZpbmdBdmVyYWdlKTogRXh0cmFjdGVkIGZyb20gdGhlICJTaW1wbGUgTW92aW5n
IEF2ZXJhZ2UiIHN0cmF0ZWd5LgorICAgICAgICAoU3RhdGlzdGljcy5jdW11bHRhaXZlTW92aW5n
QXZlcmFnZSk6IEV4dHJhY3RlZCBmcm9tIHRoZSAiQ3VtdWxhdGl2ZSBNb3ZpbmcgQXZlcmFnZSIg
c3RyYXRlZ3kuCisgICAgICAgIChTdGF0aXN0aWNzLmV4cG9uZW50aWFsTW92aW5nQXZlcmFnZSk6
IEV4dHJhY3RlZCBmcm9tIHRoZSAiRXhwb25lbnRpYWwgTW92aW5nIEF2ZXJhZ2UiIHN0cmF0ZWd5
LgorICAgICAgICBVc2UgYSB0ZW1wb3JhcnkgIm1vdmluZ0F2ZXJhZ2UiIHRvIGtlZXAgdGhlIGxh
c3QgbW92aW5nIGF2ZXJhZ2UgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSBwcmV2aW91cworICAg
ICAgICBlbnRyeSBpbiAiYXZlcmFnZXMiIGFycmF5IHRvIGF2b2lkIHNwZWNpYWwgY2FzaW5nIGFu
IGFycmF5IG9mIGxlbmd0aCAxIGFuZCBzdGFydGluZyB0aGUgbG9vcCBhdCBpID0gMS4KKyAgICAg
ICAgKFN0YXRpc3RpY3Muc2VnbWVudFRpbWVTZXJpZXNHcmVlZHlXaXRoU3R1ZGVudHNUVGVzdCk6
IEV4dHJhY3RlZCBmcm9tICJTZWdtZW50YXRpb246IFJlY3Vyc2l2ZSB0LXRlc3QiCisgICAgICAg
IHN0cmF0ZWd5LiBEb24ndCBjcmVhdGUgdGhlIGxpc3Qgb2YgYXZlcmFnZXMgdG8gbWF0Y2ggc2Vn
bWVudFRpbWVTZXJpZXNCeU1heGltaXppbmdTY2h3YXJ6Q3JpdGVyaW9uIGhlcmUuCisgICAgICAg
IEl0J3MgZG9uZSBpbiBuZXdseSBhZGRlZCBhdmVyYWdlc0Zyb21TZWdtZW50cy4KKyAgICAgICAg
KFN0YXRpc3RpY3Muc2VnbWVudFRpbWVTZXJpZXNCeU1heGltaXppbmdTY2h3YXJ6Q3JpdGVyaW9u
KTogRXh0cmFjdGVkIGZyb20KKyAgICAgICAgIlNlZ21lbnRhdGlvbjogU2Nod2FyeiBjcml0ZXJp
b24iIHN0cmF0ZWd5LgorICAgICAgICAoLnJlY3Vyc2l2ZWx5U3BsaXRJbnRvVHdvU2VnbWVudHNB
dE1heFRJZlNpZ25pZmljYW50bHlEaWZmZXJlbnQpOiBKdXN0IHN0b3JlIHRoZSBzdGFydCBpbmRl
eCB0byBtYXRjaAorICAgICAgICAqIHB1YmxpYy92Mi9hcHAuanM6CisgICAgICAgIChBcHAuUGFu
ZS51cGRhdGVTdGF0aXN0aWNzVG9vbHMpOgorICAgICAgICAoQXBwLlBhbmUuX2NvbXB1dGVNb3Zp
bmdBdmVyYWdlQW5kT3V0bGllcnMpOgorICAgICAgICAqIHB1YmxpYy92Mi9kYXRhLmpzOgorICAg
ICAgICAqIHB1YmxpYy92Mi9pbmRleC5odG1sOgorICAgICAgICAqIHB1YmxpYy92Mi9zdGF0aXN0
aWNzLXN0cmF0ZWdpZXMuanM6IEFkZGVkLgorICAgICAgICAoU3RhdGlzdGljc1N0cmF0ZWdpZXMu
TW92aW5nQXZlcmFnZVN0cmF0ZWdpZXMpOiBBZGRlZC4KKyAgICAgICAgKGF2ZXJhZ2VzRnJvbVNl
Z21lbnRzKTogRXh0cmFjdGVkIGZyb20gIlNlZ21lbnRhdGlvbjogU2Nod2FyeiBjcml0ZXJpb24i
IHN0cmF0ZWd5LiBOb3cgdXNlZCBieSBib3RoCisgICAgICAgICJTZWdtZW50YXRpb246IFJlY3Vy
c2l2ZSB0LXRlc3QiIGFuZCAiU2VnbWVudGF0aW9uOiBTY2h3YXJ6IGNyaXRlcmlvbiIgc3RyYXRl
Z2llcy4KKyAgICAgICAgKFN0YXRpc3RpY3NTdHJhdGVnaWVzLkVudmVsb3BpbmdTdHJhdGVnaWVz
KTogTW92ZWQgZnJvbSBTdGF0aXN0aWNzLkVudmVsb3BpbmdTdHJhdGVnaWVzLgorICAgICAgICAo
U3RhdGlzdGljc1N0cmF0ZWdpZXMuVGVzdFJhbmdlU2VsZWN0aW9uU3RyYXRlZ2llcyk6IE1vdmVk
IGZyb20gU3RhdGlzdGljcy5UZXN0UmFuZ2VTZWxlY3Rpb25TdHJhdGVnaWVzLgorICAgICAgICAo
Y3JlYXRlV2VzdGVybkVsZWN0cmljUnVsZSk6IE1vdmVkIGZyb20gc3RhdGlzdGljcy5qcy4KKyAg
ICAgICAgKGNvdW50VmFsdWVzT25TYW1lU2lkZSk6IERpdHRvLgorICAgICAgICAoU3RhdGlzdGlj
c1N0cmF0ZWdpZXMuZXhlY3V0ZVN0cmF0ZWd5KTogTW92ZWQgZnJvbSBTdGF0aXN0aWNzLmV4ZWN1
dGVTdHJhdGVneS4KKyAgICAgICAgKiB0b29scy9kZXRlY3QtY2hhbmdlcy5qczoKKyAgICAgICAg
KGNvbXB1dGVSYW5nZXNGb3JUZXN0aW5nKToKKwogMjAxNi0wMi0xNSAgUnlvc3VrZSBOaXdhICA8
cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICB2MSBVSSBhbmQgdjIgVUkgc2hvdWxkIHNoYXJl
IHN0YXRpc3RpY3MuanMKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvc2hh
cmVkL3N0YXRpc3RpY3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9zaGFyZWQvc3RhdGlzdGljcy5qcwkocmV2aXNpb24gMTk2NjEzKQorKysgV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9zaGFyZWQvc3RhdGlzdGljcy5qcwkod29ya2luZyBj
b3B5KQpAQCAtMTE2LDYgKzExNiw4MCBAQCB2YXIgU3RhdGlzdGljcyA9IG5ldyAoZnVuY3Rpb24g
KCkgewogICAgICAgICB9CiAgICAgfQogCisgICAgdGhpcy5tb3ZpbmdBdmVyYWdlID0gZnVuY3Rp
b24gKHZhbHVlcywgYmFja3dhcmRXaW5kb3dTaXplLCBmb3J3YXJkV2luZG93U2l6ZSkgeworICAg
ICAgICB2YXIgYXZlcmFnZXMgPSBuZXcgQXJyYXkodmFsdWVzLmxlbmd0aCk7CisgICAgICAgIC8v
IFdlIHVzZSBuYWl2ZSBPKG5eMikgYWxnb3JpdGhtIGZvciBzaW1wbGljeSBhcyB3ZWxsIGFzIHRv
IGF2b2lkIGFjY3VtdWxhdGluZyByb3VuZC1vZmYgZXJyb3JzLgorICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdmFyIHN1bSA9IDA7
CisgICAgICAgICAgICB2YXIgY291bnQgPSAwOworICAgICAgICAgICAgZm9yICh2YXIgaiA9IGkg
LSBiYWNrd2FyZFdpbmRvd1NpemU7IGogPCBpICsgYmFja3dhcmRXaW5kb3dTaXplOyBqKyspIHsK
KyAgICAgICAgICAgICAgICBpZiAoaiA+PSAwICYmIGogPCB2YWx1ZXMubGVuZ3RoKSB7CisgICAg
ICAgICAgICAgICAgICAgIHN1bSArPSB2YWx1ZXNbal07CisgICAgICAgICAgICAgICAgICAgIGNv
dW50Kys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYXZl
cmFnZXNbaV0gPSBzdW0gLyBjb3VudDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYXZlcmFn
ZXM7CisgICAgfQorCisgICAgdGhpcy5jdW11bHRhaXZlTW92aW5nQXZlcmFnZSA9IGZ1bmN0aW9u
ICh2YWx1ZXMpIHsKKyAgICAgICAgdmFyIGF2ZXJhZ2VzID0gbmV3IEFycmF5KHZhbHVlcy5sZW5n
dGgpOworICAgICAgICB2YXIgc3VtID0gMDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2
YWx1ZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHN1bSArPSB2YWx1ZXNbaV07CisgICAg
ICAgICAgICBhdmVyYWdlc1tpXSA9IHN1bSAvIChpICsgMSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGF2ZXJhZ2VzOworICAgIH0KKworICAgIHRoaXMuZXhwb25lbnRpYWxNb3ZpbmdBdmVy
YWdlID0gZnVuY3Rpb24gKHZhbHVlcywgc21vb3RoaW5nRmFjdG9yKSB7CisgICAgICAgIHZhciBh
dmVyYWdlcyA9IG5ldyBBcnJheSh2YWx1ZXMubGVuZ3RoKTsKKyAgICAgICAgdmFyIG1vdmluZ0F2
ZXJhZ2UgPSAwOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkr
KykgeworICAgICAgICAgICAgbW92aW5nQXZlcmFnZSA9IHNtb290aGluZ0ZhY3RvciAqIHZhbHVl
c1tpXSArICgxIC0gc21vb3RoaW5nRmFjdG9yKSAqIG1vdmluZ0F2ZXJhZ2U7CisgICAgICAgICAg
ICBhdmVyYWdlc1tpXSA9IG1vdmluZ0F2ZXJhZ2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IGF2ZXJhZ2VzOworICAgIH0KKworICAgIC8vIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIHN0YXJ0
aW5nIGluZGljZXMgb2YgZWFjaCBzZWdtZW50LgorICAgIHRoaXMuc2VnbWVudFRpbWVTZXJpZXNH
cmVlZHlXaXRoU3R1ZGVudHNUVGVzdCA9IGZ1bmN0aW9uICh2YWx1ZXMsIG1pbkxlbmd0aCkgewor
ICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA8IDIpCisgICAgICAgICAgICByZXR1cm4gWzBdOwor
ICAgICAgICB2YXIgc2VnbWVudHMgPSBuZXcgQXJyYXk7CisgICAgICAgIHJlY3Vyc2l2ZWx5U3Bs
aXRJbnRvVHdvU2VnbWVudHNBdE1heFRJZlNpZ25pZmljYW50bHlEaWZmZXJlbnQodmFsdWVzLCAw
LCB2YWx1ZXMubGVuZ3RoLCBtaW5MZW5ndGgsIHNlZ21lbnRzKTsKKyAgICAgICAgc2VnbWVudHMu
cHVzaCh2YWx1ZXMubGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHNlZ21lbnRzOworICAgIH0KKwor
ICAgIHRoaXMuZGVidWdnaW5nU2VnbWVudGF0aW9uID0gZmFsc2U7CisgICAgdGhpcy5zZWdtZW50
VGltZVNlcmllc0J5TWF4aW1pemluZ1NjaHdhcnpDcml0ZXJpb24gPSBmdW5jdGlvbiAodmFsdWVz
KSB7CisgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoIDwgMikKKyAgICAgICAgICAgIHJldHVybiBb
MF07CisKKyAgICAgICAgLy8gU3BsaXQgdGhlIHRpbWUgc2VyaWVzIGludG8gZ3JpZHMgc2luY2Ug
c3BsaXRJbnRvU2VnbWVudHNVbnRpbEdvb2RFbm91Z2ggaXMgTyhuXjIpLgorICAgICAgICB2YXIg
Z3JpZExlbmd0aCA9IDUwMDsKKyAgICAgICAgdmFyIHRvdGFsU2VnbWVudGF0aW9uID0gWzBdOwor
ICAgICAgICBmb3IgKHZhciBncmlkQ291bnQgPSAwOyBncmlkQ291bnQgPCBNYXRoLmNlaWwodmFs
dWVzLmxlbmd0aCAvIGdyaWRMZW5ndGgpOyBncmlkQ291bnQrKykgeworICAgICAgICAgICAgdmFy
IGdyaWRWYWx1ZXMgPSB2YWx1ZXMuc2xpY2UoZ3JpZENvdW50ICogZ3JpZExlbmd0aCwgKGdyaWRD
b3VudCArIDEpICogZ3JpZExlbmd0aCk7CisgICAgICAgICAgICB2YXIgc2VnbWVudGF0aW9uID0g
c3BsaXRJbnRvU2VnbWVudHNVbnRpbEdvb2RFbm91Z2goZ3JpZFZhbHVlcyk7CisKKyAgICAgICAg
ICAgIGlmIChTdGF0aXN0aWNzLmRlYnVnZ2luZ1NlZ21lbnRhdGlvbikKKyAgICAgICAgICAgICAg
ICBjb25zb2xlLmxvZygnZ3JpZD0nICsgZ3JpZENvdW50LCBzZWdtZW50YXRpb24pOworCisgICAg
ICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHNlZ21lbnRhdGlvbi5sZW5ndGggLSAxOyBpKysp
CisgICAgICAgICAgICAgICAgdG90YWxTZWdtZW50YXRpb24ucHVzaChncmlkQ291bnQgKiBncmlk
TGVuZ3RoICsgc2VnbWVudGF0aW9uW2ldKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChTdGF0
aXN0aWNzLmRlYnVnZ2luZ1NlZ21lbnRhdGlvbikKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCdG
aW5hbCBTZWdtZW50YXRpb24nLCB0b3RhbFNlZ21lbnRhdGlvbik7CisKKyAgICAgICAgdG90YWxT
ZWdtZW50YXRpb24ucHVzaCh2YWx1ZXMubGVuZ3RoKTsKKworICAgICAgICByZXR1cm4gdG90YWxT
ZWdtZW50YXRpb247CisgICAgfQorCiAgICAgZnVuY3Rpb24gcmVjdXJzaXZlbHlTcGxpdEludG9U
d29TZWdtZW50c0F0TWF4VElmU2lnbmlmaWNhbnRseURpZmZlcmVudCh2YWx1ZXMsIHN0YXJ0SW5k
ZXgsIGxlbmd0aCwgbWluTGVuZ3RoLCBzZWdtZW50cykgewogICAgICAgICB2YXIgdE1heCA9IDA7
CiAgICAgICAgIHZhciBhcmdUTWF4ID0gbnVsbDsKQEAgLTEzMSw3ICsyMDUsNyBAQCB2YXIgU3Rh
dGlzdGljcyA9IG5ldyAoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIGlmICghdE1heCkgewotICAgICAgICAgICAgc2VnbWVudHMucHVzaCh2YWx1ZXMuc2xp
Y2Uoc3RhcnRJbmRleCwgc3RhcnRJbmRleCArIGxlbmd0aCkpOworICAgICAgICAgICAgc2VnbWVu
dHMucHVzaChzdGFydEluZGV4KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICByZWN1cnNpdmVseVNwbGl0SW50b1R3b1NlZ21lbnRzQXRNYXhUSWZTaWduaWZpY2FudGx5
RGlmZmVyZW50KHZhbHVlcywgc3RhcnRJbmRleCwgYXJnVE1heCwgbWluTGVuZ3RoLCBzZWdtZW50
cyk7CkBAIC0xOTEsMTMxICsyNjUsNiBAQCB2YXIgU3RhdGlzdGljcyA9IG5ldyAoZnVuY3Rpb24g
KCkgewogICAgIGZ1bmN0aW9uIG9uZVNpZGVkVG9Ud29TaWRlZFByb2JhYmlsaXR5KHByb2JhYmls
aXR5KSB7IHJldHVybiAyICogcHJvYmFiaWxpdHkgLSAxOyB9CiAgICAgZnVuY3Rpb24gdHdvU2lk
ZWRUb09uZVNpZGVkUHJvYmFiaWxpdHkocHJvYmFiaWxpdHkpIHsgcmV0dXJuICgxIC0gKDEgLSBw
cm9iYWJpbGl0eSkgLyAyKTsgfQogCi0gICAgdGhpcy5Nb3ZpbmdBdmVyYWdlU3RyYXRlZ2llcyA9
IFsKLSAgICAgICAgewotICAgICAgICAgICAgaWQ6IDEsCi0gICAgICAgICAgICBsYWJlbDogJ1Np
bXBsZSBNb3ZpbmcgQXZlcmFnZScsCi0gICAgICAgICAgICBwYXJhbWV0ZXJMaXN0OiBbCi0gICAg
ICAgICAgICAgICAge2xhYmVsOiAiQmFja3dhcmQgd2luZG93IHNpemUiLCB2YWx1ZTogOCwgbWlu
OiAyLCBzdGVwOiAxfSwKLSAgICAgICAgICAgICAgICB7bGFiZWw6ICJGb3J3YXJkIHdpbmRvdyBz
aXplIiwgdmFsdWU6IDQsIG1pbjogMCwgc3RlcDogMX0KLSAgICAgICAgICAgIF0sCi0gICAgICAg
ICAgICBleGVjdXRlOiBmdW5jdGlvbiAoYmFja3dhcmRXaW5kb3dTaXplLCBmb3J3YXJkV2luZG93
U2l6ZSwgdmFsdWVzKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGF2ZXJhZ2VzID0gbmV3IEFycmF5
KHZhbHVlcy5sZW5ndGgpOwotICAgICAgICAgICAgICAgIC8vIFdlIHVzZSBuYWl2ZSBPKG5eMikg
YWxnb3JpdGhtIGZvciBzaW1wbGljeSBhcyB3ZWxsIGFzIHRvIGF2b2lkIGFjY3VtdWxhdGluZyBy
b3VuZC1vZmYgZXJyb3JzLgotICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFs
dWVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdW0gPSAwOwotICAg
ICAgICAgICAgICAgICAgICB2YXIgY291bnQgPSAwOwotICAgICAgICAgICAgICAgICAgICBmb3Ig
KHZhciBqID0gaSAtIGJhY2t3YXJkV2luZG93U2l6ZTsgaiA8IGkgKyBiYWNrd2FyZFdpbmRvd1Np
emU7IGorKykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogPj0gMCAmJiBqIDwgdmFs
dWVzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bSArPSB2YWx1ZXNb
al07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBh
dmVyYWdlc1tpXSA9IHN1bSAvIGNvdW50OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICByZXR1cm4gYXZlcmFnZXM7Ci0gICAgICAgICAgICB9LAotCi0gICAgICAgIH0sCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlkOiAyLAotICAgICAgICAgICAgbGFiZWw6ICdDdW11bGF0aXZl
IE1vdmluZyBBdmVyYWdlJywKLSAgICAgICAgICAgIGV4ZWN1dGU6IGZ1bmN0aW9uICh2YWx1ZXMp
IHsKLSAgICAgICAgICAgICAgICB2YXIgYXZlcmFnZXMgPSBuZXcgQXJyYXkodmFsdWVzLmxlbmd0
aCk7Ci0gICAgICAgICAgICAgICAgdmFyIHN1bSA9IDA7Ci0gICAgICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAg
c3VtICs9IHZhbHVlc1tpXTsKLSAgICAgICAgICAgICAgICAgICAgYXZlcmFnZXNbaV0gPSBzdW0g
LyAoaSArIDEpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gYXZl
cmFnZXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlkOiAzLAotICAgICAgICAgICAgbGFiZWw6ICdFeHBvbmVudGlhbCBNb3ZpbmcgQXZlcmFnZScs
Ci0gICAgICAgICAgICBwYXJhbWV0ZXJMaXN0OiBbe2xhYmVsOiAiU21vb3RoaW5nIGZhY3RvciIs
IHZhbHVlOiAwLjEsIG1pbjogMC4wMDEsIG1heDogMC45fV0sCi0gICAgICAgICAgICBleGVjdXRl
OiBmdW5jdGlvbiAoc21vb3RoaW5nRmFjdG9yLCB2YWx1ZXMpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoIXZhbHVlcy5sZW5ndGggfHwgdHlwZW9mKHNtb290aGluZ0ZhY3RvcikgIT09ICJudW1iZXIi
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLQotICAgICAgICAgICAgICAgIHZh
ciBhdmVyYWdlcyA9IG5ldyBBcnJheSh2YWx1ZXMubGVuZ3RoKTsKLSAgICAgICAgICAgICAgICB2
YXIgbW92aW5nQXZlcmFnZSA9IDA7Ci0gICAgICAgICAgICAgICAgYXZlcmFnZXNbMF0gPSB2YWx1
ZXNbMF07Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCB2YWx1ZXMubGVuZ3Ro
OyBpKyspCi0gICAgICAgICAgICAgICAgICAgIGF2ZXJhZ2VzW2ldID0gc21vb3RoaW5nRmFjdG9y
ICogdmFsdWVzW2ldICsgKDEgLSBzbW9vdGhpbmdGYWN0b3IpICogYXZlcmFnZXNbaSAtIDFdOwot
ICAgICAgICAgICAgICAgIHJldHVybiBhdmVyYWdlczsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSwKLSAgICAgICAgewotICAgICAgICAgICAgaWQ6IDQsCi0gICAgICAgICAgICBpc1NlZ21lbnRh
dGlvbjogdHJ1ZSwKLSAgICAgICAgICAgIGxhYmVsOiAnU2VnbWVudGF0aW9uOiBSZWN1cnNpdmUg
dC10ZXN0JywKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiUmVjdXJzaXZlbHkgc3BsaXQgdmFs
dWVzIGludG8gdHdvIHNlZ21lbnRzIGlmIFdlbGNoJ3MgdC10ZXN0IGRldGVjdHMgYSBzdGF0aXN0
aWNhbGx5IHNpZ25pZmljYW50IGRpZmZlcmVuY2UuIiwKLSAgICAgICAgICAgIHBhcmFtZXRlckxp
c3Q6IFt7bGFiZWw6ICJNaW5pbXVtIHNlZ21lbnQgbGVuZ3RoIiwgdmFsdWU6IDIwLCBtaW46IDV9
XSwKLSAgICAgICAgICAgIGV4ZWN1dGU6IGZ1bmN0aW9uIChtaW5MZW5ndGgsIHZhbHVlcykgewot
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoIDwgMikKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGw7Ci0KLSAgICAgICAgICAgICAgICB2YXIgYXZlcmFnZXMgPSBuZXcgQXJy
YXkodmFsdWVzLmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgdmFyIHNlZ21lbnRzID0gbmV3IEFy
cmF5OwotICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZWx5U3BsaXRJbnRvVHdvU2VnbWVudHNBdE1h
eFRJZlNpZ25pZmljYW50bHlEaWZmZXJlbnQodmFsdWVzLCAwLCB2YWx1ZXMubGVuZ3RoLCBtaW5M
ZW5ndGgsIHNlZ21lbnRzKTsKLSAgICAgICAgICAgICAgICB2YXIgYXZlcmFnZUluZGV4ID0gMDsK
LSAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNlZ21lbnRzLmxlbmd0aDsgaisr
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSBzZWdtZW50c1tqXTsKLSAgICAg
ICAgICAgICAgICAgICAgdmFyIG1lYW4gPSBTdGF0aXN0aWNzLnN1bSh2YWx1ZXMpIC8gdmFsdWVz
Lmxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMu
bGVuZ3RoOyBpKyspCi0gICAgICAgICAgICAgICAgICAgICAgICBhdmVyYWdlc1thdmVyYWdlSW5k
ZXgrK10gPSBtZWFuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVy
biBhdmVyYWdlczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAg
ICAgICAgaWQ6IDUsCi0gICAgICAgICAgICBpc1NlZ21lbnRhdGlvbjogdHJ1ZSwKLSAgICAgICAg
ICAgIGxhYmVsOiAnU2VnbWVudGF0aW9uOiBTY2h3YXJ6IGNyaXRlcmlvbicsCi0gICAgICAgICAg
ICBkZXNjcmlwdGlvbjogJ0FkYXB0aXZlIGFsZ29yaXRobSB0aGF0IG1heGltaXplcyB0aGUgU2No
d2FyeiBjcml0ZXJpb24gKEJJQykuJywKLSAgICAgICAgICAgIC8vIEJhc2VkIG9uIERldGVjdGlv
biBvZiBNdWx0aXBsZSBDaGFuZ2XigJNQb2ludHMgaW4gTXVsdGl2YXJpYXRlIFRpbWUgU2VyaWVz
IGJ5IE1hcmMgTGF2aWVsbGUgKEp1bHkgMjAwNikuCi0gICAgICAgICAgICBleGVjdXRlOiBmdW5j
dGlvbiAodmFsdWVzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPCAyKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLQotICAgICAgICAgICAgICAgIHZhciBh
dmVyYWdlcyA9IG5ldyBBcnJheSh2YWx1ZXMubGVuZ3RoKTsKLSAgICAgICAgICAgICAgICB2YXIg
YXZlcmFnZUluZGV4ID0gMDsKLQotICAgICAgICAgICAgICAgIC8vIFNwbGl0IHRoZSB0aW1lIHNl
cmllcyBpbnRvIGdyaWRzIHNpbmNlIHNwbGl0SW50b1NlZ21lbnRzVW50aWxHb29kRW5vdWdoIGlz
IE8obl4yKS4KLSAgICAgICAgICAgICAgICB2YXIgZ3JpZExlbmd0aCA9IDUwMDsKLSAgICAgICAg
ICAgICAgICB2YXIgdG90YWxTZWdtZW50YXRpb24gPSBbMF07Ci0gICAgICAgICAgICAgICAgZm9y
ICh2YXIgZ3JpZENvdW50ID0gMDsgZ3JpZENvdW50IDwgTWF0aC5jZWlsKHZhbHVlcy5sZW5ndGgg
LyBncmlkTGVuZ3RoKTsgZ3JpZENvdW50KyspIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGdy
aWRWYWx1ZXMgPSB2YWx1ZXMuc2xpY2UoZ3JpZENvdW50ICogZ3JpZExlbmd0aCwgKGdyaWRDb3Vu
dCArIDEpICogZ3JpZExlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzZWdtZW50YXRp
b24gPSBzcGxpdEludG9TZWdtZW50c1VudGlsR29vZEVub3VnaChncmlkVmFsdWVzKTsKLQotICAg
ICAgICAgICAgICAgICAgICBpZiAoU3RhdGlzdGljcy5kZWJ1Z2dpbmdTZWdtZW50YXRpb24pCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZ3JpZD0nICsgZ3JpZENvdW50LCBz
ZWdtZW50YXRpb24pOwotCi0gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
c2VnbWVudGF0aW9uLmxlbmd0aCAtIDE7IGkrKykKLSAgICAgICAgICAgICAgICAgICAgICAgIHRv
dGFsU2VnbWVudGF0aW9uLnB1c2goZ3JpZENvdW50ICogZ3JpZExlbmd0aCArIHNlZ21lbnRhdGlv
bltpXSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKFN0YXRpc3Rp
Y3MuZGVidWdnaW5nU2VnbWVudGF0aW9uKQotICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxv
ZygnRmluYWwgU2VnbWVudGF0aW9uJywgdG90YWxTZWdtZW50YXRpb24pOwotCi0gICAgICAgICAg
ICAgICAgdG90YWxTZWdtZW50YXRpb24ucHVzaCh2YWx1ZXMubGVuZ3RoKTsKLQotICAgICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgdG90YWxTZWdtZW50YXRpb24ubGVuZ3RoOyBpKysp
IHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHNlZ21lbnQgPSB2YWx1ZXMuc2xpY2UodG90YWxT
ZWdtZW50YXRpb25baSAtIDFdLCB0b3RhbFNlZ21lbnRhdGlvbltpXSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHZhciBhdmVyYWdlID0gU3RhdGlzdGljcy5zdW0oc2VnbWVudCkgLyBzZWdtZW50Lmxl
bmd0aDsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzZWdtZW50Lmxl
bmd0aDsgaisrKQotICAgICAgICAgICAgICAgICAgICAgICAgYXZlcmFnZXNbYXZlcmFnZUluZGV4
KytdID0gYXZlcmFnZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXR1
cm4gYXZlcmFnZXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgXTsKLQotICAgIHRo
aXMuZGVidWdnaW5nU2VnbWVudGF0aW9uID0gZmFsc2U7Ci0KICAgICBmdW5jdGlvbiBzcGxpdElu
dG9TZWdtZW50c1VudGlsR29vZEVub3VnaCh2YWx1ZXMpIHsKICAgICAgICAgaWYgKHZhbHVlcy5s
ZW5ndGggPCAyKQogICAgICAgICAgICAgcmV0dXJuIFswLCB2YWx1ZXMubGVuZ3RoXTsKQEAgLTQz
MiwxNDkgKzM4MSw4IEBAIHZhciBTdGF0aXN0aWNzID0gbmV3IChmdW5jdGlvbiAoKSB7CiAgICAg
ICAgIHJldHVybiB0aGlzLmNvc3RNYXRyaXhbZnJvbV1bdG8gLSBmcm9tIC0gMV07CiAgICAgfQog
Ci0gICAgdGhpcy5FbnZlbG9waW5nU3RyYXRlZ2llcyA9IFsKLSAgICAgICAgewotICAgICAgICAg
ICAgaWQ6IDEwMCwKLSAgICAgICAgICAgIGxhYmVsOiAnQXZlcmFnZSBEaWZmZXJlbmNlJywKLSAg
ICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIGF2ZXJhZ2UgZGlmZmVyZW5jZSBiZXR3ZWVuIGNv
bnNlY3V0aXZlIHZhbHVlcy4nLAotICAgICAgICAgICAgZXhlY3V0ZTogZnVuY3Rpb24gKHZhbHVl
cywgbW92aW5nQXZlcmFnZXMpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA8
IDEpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOYU47Ci0KLSAgICAgICAgICAgICAgICB2
YXIgZGlmZiA9IDA7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCB2YWx1ZXMu
bGVuZ3RoOyBpKyspCi0gICAgICAgICAgICAgICAgICAgIGRpZmYgKz0gTWF0aC5hYnModmFsdWVz
W2ldIC0gdmFsdWVzW2kgLSAxXSk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gZGlmZiAvIHZh
bHVlcy5sZW5ndGg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlkOiAxMDEsCi0gICAgICAgICAgICBsYWJlbDogJ01vdmluZyBBdmVyYWdlIFN0YW5k
YXJkIERldmlhdGlvbicsCi0gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBzcXVhcmUgcm9v
dCBvZiB0aGUgYXZlcmFnZSBkZXZpYXRpb24gZnJvbSB0aGUgbW92aW5nIGF2ZXJhZ2Ugd2l0aCBC
ZXNzZWxcJ3MgY29ycmVjdGlvbi4nLAotICAgICAgICAgICAgZXhlY3V0ZTogZnVuY3Rpb24gKHZh
bHVlcywgbW92aW5nQXZlcmFnZXMpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWVzLmxlbmd0
aCA8IDEpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOYU47Ci0KLSAgICAgICAgICAgICAg
ICB2YXIgZGlmZlNxdWFyZVN1bSA9IDA7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7
IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGRpZmYg
PSAodmFsdWVzW2ldIC0gbW92aW5nQXZlcmFnZXNbaV0pOwotICAgICAgICAgICAgICAgICAgICBk
aWZmU3F1YXJlU3VtICs9IGRpZmYgKiBkaWZmOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQoZGlmZlNxdWFyZVN1bSAvICh2YWx1ZXMubGVuZ3Ro
IC0gMSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgIF07Ci0KICAgICB0aGlzLmRl
YnVnZ2luZ1Rlc3RpbmdSYW5nZU5vbWluYXRpb24gPSBmYWxzZTsKIAotICAgIHRoaXMuVGVzdFJh
bmdlU2VsZWN0aW9uU3RyYXRlZ2llcyA9IFsKLSAgICAgICAgewotICAgICAgICAgICAgaWQ6IDMw
MSwKLSAgICAgICAgICAgIGxhYmVsOiAidC10ZXN0IDk5JSBzaWduaWZpY2FuY2UiLAotICAgICAg
ICAgICAgZXhlY3V0ZTogZnVuY3Rpb24gKHZhbHVlcywgc2VnbWVudGVkVmFsdWVzKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKCF2YWx1ZXMubGVuZ3RoKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gW107Ci0KLSAgICAgICAgICAgICAgICB2YXIgcHJldmlvdXNNZWFuID0gc2VnbWVudGVkVmFs
dWVzWzBdOwotICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZFJhbmdlcyA9IG5ldyBBcnJheTsK
LSAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHNlZ21lbnRlZFZhbHVlcy5sZW5n
dGg7IGkrKykgewotICAgICAgICAgICAgICAgICAgICB2YXIgY3VycmVudE1lYW4gPSBzZWdtZW50
ZWRWYWx1ZXNbaV07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50TWVhbiA9PSBwcmV2
aW91c01lYW4pCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
ICAgICAgICAgdmFyIGZvdW5kID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodmFy
IGxlZnRFZGdlID0gaSAtIDIsIHJpZ2h0RWRnZSA9IGkgKyAyOyBsZWZ0RWRnZSA+PSAwICYmIHJp
Z2h0RWRnZSA8PSB2YWx1ZXMubGVuZ3RoOyBsZWZ0RWRnZS0tLCByaWdodEVkZ2UrKykgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHNlZ21lbnRlZFZhbHVlc1tsZWZ0RWRnZV0gIT0gcHJl
dmlvdXNNZWFuIHx8IHNlZ21lbnRlZFZhbHVlc1tyaWdodEVkZ2UgLSAxXSAhPSBjdXJyZW50TWVh
bikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciByZXN1bHQgPSBTdGF0aXN0aWNzLmNvbXB1dGVXZWxjaHNUKHZhbHVlcywgbGVm
dEVkZ2UsIGkgLSBsZWZ0RWRnZSwgdmFsdWVzLCBpLCByaWdodEVkZ2UgLSBpLCAwLjk4KTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuc2lnbmlmaWNhbnRseURpZmZlcmVudCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2VzLnB1c2goW2xlZnRF
ZGdlLCByaWdodEVkZ2UgLSAxXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQg
PSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghZm91bmQgJiYgU3RhdGlzdGljcy5kZWJ1Z2dpbmdUZXN0aW5nUmFuZ2VOb21pbmF0aW9u
KQotICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0ZhaWxlZCB0byBmaW5kIGEg
dGVzdGluZyByYW5nZSBhdCcsIGksICdjaGFuZ2luZyBmcm9tJywgcHJldmlvdXNNZWFuLCAndG8n
LCBjdXJyZW50TWVhbik7Ci0gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzTWVhbiA9IGN1cnJl
bnRNZWFuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0
ZWRSYW5nZXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICBdOwotCi0gICAgZnVuY3Rp
b24gY3JlYXRlV2VzdGVybkVsZWN0cmljUnVsZSh3aW5kb3dTaXplLCBtaW5PdXRsaW5lckNvdW50
LCBsaW1pdEZhY3RvcikgewotICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlcywgbW92aW5n
QXZlcmFnZXMsIGRldmlhdGlvbikgewotICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBuZXcgQXJy
YXkodmFsdWVzLmxlbmd0aCk7Ci0gICAgICAgICAgICB2YXIgbGltaXQgPSBsaW1pdEZhY3RvciAq
IGRldmlhdGlvbjsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0
aDsgaSsrKQotICAgICAgICAgICAgICAgIHJlc3VsdHNbaV0gPSBjb3VudFZhbHVlc09uU2FtZVNp
ZGUodmFsdWVzLCBtb3ZpbmdBdmVyYWdlcywgbGltaXQsIGksIHdpbmRvd1NpemUpID49IG1pbk91
dGxpbmVyQ291bnQgPyB3aW5kb3dTaXplIDogMDsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHRz
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY291bnRWYWx1ZXNPblNhbWVTaWRl
KHZhbHVlcywgbW92aW5nQXZlcmFnZXMsIGxpbWl0LCBzdGFydEluZGV4LCB3aW5kb3dTaXplKSB7
Ci0gICAgICAgIHZhciB2YWx1ZXNBYm92ZUxpbWl0ID0gMDsKLSAgICAgICAgdmFyIHZhbHVlc0Jl
bG93TGltaXQgPSAwOwotICAgICAgICB2YXIgY2VudGVyID0gbW92aW5nQXZlcmFnZXNbc3RhcnRJ
bmRleF07Ci0gICAgICAgIGZvciAodmFyIGkgPSBzdGFydEluZGV4OyBpIDwgc3RhcnRJbmRleCAr
IHdpbmRvd1NpemUgJiYgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFy
IGRpZmYgPSB2YWx1ZXNbaV0gLSBjZW50ZXI7Ci0gICAgICAgICAgICB2YWx1ZXNBYm92ZUxpbWl0
ICs9IChkaWZmID4gbGltaXQpOwotICAgICAgICAgICAgdmFsdWVzQmVsb3dMaW1pdCArPSAoZGlm
ZiA8IC1saW1pdCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIE1hdGgubWF4KHZhbHVlc0Fi
b3ZlTGltaXQsIHZhbHVlc0JlbG93TGltaXQpOwotICAgIH0KLQotICAgIHRoaXMuQW5vbWFseURl
dGVjdGlvblN0cmF0ZWd5ID0gWwotICAgICAgICAvLyBXZXN0ZXJuIEVsZWN0cmljIHJ1bGVzOiBo
dHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlc3Rlcm5fRWxlY3RyaWNfcnVsZXMKLSAgICAg
ICAgewotICAgICAgICAgICAgaWQ6IDIwMCwKLSAgICAgICAgICAgIGxhYmVsOiAnV2VzdGVybiBF
bGVjdHJpYzogYW55IHBvaW50IGJleW9uZCAzz4MnLAotICAgICAgICAgICAgZGVzY3JpcHRpb246
ICdBbnkgc2luZ2xlIHBvaW50IGZhbGxzIG91dHNpZGUgM8+DIGxpbWl0IGZyb20gdGhlIG1vdmlu
ZyBhdmVyYWdlJywKLSAgICAgICAgICAgIGV4ZWN1dGU6IGNyZWF0ZVdlc3Rlcm5FbGVjdHJpY1J1
bGUoMSwgMSwgMyksCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlkOiAyMDEs
Ci0gICAgICAgICAgICBsYWJlbDogJ1dlc3Rlcm4gRWxlY3RyaWM6IDIvMyBwb2ludHMgYmV5b25k
IDLPgycsCi0gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1R3byBvdXQgb2YgdGhyZWUgY29uc2Vj
dXRpdmUgcG9pbnRzIGZhbGwgb3V0c2lkZSAyz4MgbGltaXQgZnJvbSB0aGUgbW92aW5nIGF2ZXJh
Z2Ugb24gdGhlIHNhbWUgc2lkZScsCi0gICAgICAgICAgICBleGVjdXRlOiBjcmVhdGVXZXN0ZXJu
RWxlY3RyaWNSdWxlKDMsIDIsIDIpLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZDogMjAyLAotICAgICAgICAgICAgbGFiZWw6ICdXZXN0ZXJuIEVsZWN0cmljOiA0LzUgcG9p
bnRzIGJleW9uZCDPgycsCi0gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0ZvdXIgb3V0IG9mIGZp
dmUgY29uc2VjdXRpdmUgcG9pbnRzIGZhbGwgb3V0c2lkZSAyz4MgbGltaXQgZnJvbSB0aGUgbW92
aW5nIGF2ZXJhZ2Ugb24gdGhlIHNhbWUgc2lkZScsCi0gICAgICAgICAgICBleGVjdXRlOiBjcmVh
dGVXZXN0ZXJuRWxlY3RyaWNSdWxlKDUsIDQsIDEpLAotICAgICAgICB9LAotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZDogMjAzLAotICAgICAgICAgICAgbGFiZWw6ICdXZXN0ZXJuIEVsZWN0cmlj
OiA5IHBvaW50cyBvbiBzYW1lIHNpZGUnLAotICAgICAgICAgICAgZGVzY3JpcHRpb246ICdOaW5l
IGNvbnNlY3V0aXZlIHBvaW50cyBvbiB0aGUgc2FtZSBzaWRlIG9mIHRoZSBtb3ZpbmcgYXZlcmFn
ZScsCi0gICAgICAgICAgICBleGVjdXRlOiBjcmVhdGVXZXN0ZXJuRWxlY3RyaWNSdWxlKDksIDks
IDApLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICBpZDogMjEwLAotICAgICAg
ICAgICAgbGFiZWw6ICdNb3ppbGxhOiB0LXRlc3QgNSB2cy4gMjAgYmVmb3JlIHRoYXQnLAotICAg
ICAgICAgICAgZGVzY3JpcHRpb246ICJVc2Ugc3R1ZGVudCdzIHQtdGVzdCB0byBkZXRlcm1pbmUg
d2hldGhlciB0aGUgbWVhbiBvZiB0aGUgbGFzdCBmaXZlIGRhdGEgcG9pbnRzIGRpZmZlcnMgZnJv
bSB0aGUgbWVhbiBvZiB0aGUgdHdlbnR5IHZhbHVlcyBiZWZvcmUgdGhhdCIsCi0gICAgICAgICAg
ICBleGVjdXRlOiBmdW5jdGlvbiAodmFsdWVzLCBtb3ZpbmdBdmVyYWdlcywgZGV2aWF0aW9uKSB7
Ci0gICAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBuZXcgQXJyYXkodmFsdWVzLmxlbmd0aCk7
Ci0gICAgICAgICAgICAgICAgdmFyIHAgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMjA7IGkgPCB2YWx1ZXMubGVuZ3RoIC0gNTsgaSsrKQotICAgICAgICAgICAgICAgICAg
ICByZXN1bHRzW2ldID0gU3RhdGlzdGljcy50ZXN0V2VsY2hzVCh2YWx1ZXMuc2xpY2UoaSAtIDIw
LCBpKSwgdmFsdWVzLnNsaWNlKGksIGkgKyA1KSwgMC45OCkgPyA1IDogMDsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0czsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICBdCi0K
LSAgICB0aGlzLmV4ZWN1dGVTdHJhdGVneSA9IGZ1bmN0aW9uIChzdHJhdGVneSwgcmF3VmFsdWVz
LCBhZGRpdGlvbmFsQXJndW1lbnRzKQotICAgIHsKLSAgICAgICAgdmFyIHBhcmFtZXRlcnMgPSAo
c3RyYXRlZ3kucGFyYW1ldGVyTGlzdCB8fCBbXSkubWFwKGZ1bmN0aW9uIChwYXJhbSkgewotICAg
ICAgICAgICAgdmFyIHBhcnNlZCA9IHBhcnNlRmxvYXQocGFyYW0udmFsdWUpOwotICAgICAgICAg
ICAgcmV0dXJuIE1hdGgubWluKHBhcmFtLm1heCB8fCBJbmZpbml0eSwgTWF0aC5tYXgocGFyYW0u
bWluIHx8IC1JbmZpbml0eSwgaXNOYU4ocGFyc2VkKSA/IDAgOiBwYXJzZWQpKTsKLSAgICAgICAg
fSk7Ci0gICAgICAgIHBhcmFtZXRlcnMucHVzaChyYXdWYWx1ZXMpOwotICAgICAgICByZXR1cm4g
c3RyYXRlZ3kuZXhlY3V0ZS5hcHBseShzdHJhdGVneSwgcGFyYW1ldGVycy5jb25jYXQoYWRkaXRp
b25hbEFyZ3VtZW50cykpOwotICAgIH07Ci0KIH0pKCk7CiAKIGlmICh0eXBlb2YgbW9kdWxlICE9
ICd1bmRlZmluZWQnKSB7CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yy
L2FwcC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yy
L2FwcC5qcwkocmV2aXNpb24gMTk2NjEzKQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92Mi9hcHAuanMJKHdvcmtpbmcgY29weSkKQEAgLTU0NywxOSArNTQ3LDE5IEBAIEFwcC5Q
YW5lID0gRW1iZXIuT2JqZWN0LmV4dGVuZCh7CiAgICAgfS5wcm9wZXJ0eSgnY2hhcnREYXRhJyks
CiAgICAgdXBkYXRlU3RhdGlzdGljc1Rvb2xzOiBmdW5jdGlvbiAoKQogICAgIHsKLSAgICAgICAg
dmFyIG1vdmluZ0F2ZXJhZ2VTdHJhdGVnaWVzID0gU3RhdGlzdGljcy5Nb3ZpbmdBdmVyYWdlU3Ry
YXRlZ2llcy5tYXAodGhpcy5fY2xvbmVTdHJhdGVneS5iaW5kKHRoaXMpKTsKKyAgICAgICAgdmFy
IG1vdmluZ0F2ZXJhZ2VTdHJhdGVnaWVzID0gU3RhdGlzdGljc1N0cmF0ZWdpZXMuTW92aW5nQXZl
cmFnZVN0cmF0ZWdpZXMubWFwKHRoaXMuX2Nsb25lU3RyYXRlZ3kuYmluZCh0aGlzKSk7CiAgICAg
ICAgIHRoaXMuc2V0KCdtb3ZpbmdBdmVyYWdlU3RyYXRlZ2llcycsIFt7bGFiZWw6ICdOb25lJ31d
LmNvbmNhdChtb3ZpbmdBdmVyYWdlU3RyYXRlZ2llcykpOwogICAgICAgICB0aGlzLnNldCgnY2hv
c2VuTW92aW5nQXZlcmFnZVN0cmF0ZWd5JywgdGhpcy5fY29uZmlndXJlU3RyYXRlZ3kobW92aW5n
QXZlcmFnZVN0cmF0ZWdpZXMsIHRoaXMuZ2V0KCdtb3ZpbmdBdmVyYWdlQ29uZmlnJykpKTsKIAot
ICAgICAgICB2YXIgZW52ZWxvcGluZ1N0cmF0ZWdpZXMgPSBTdGF0aXN0aWNzLkVudmVsb3BpbmdT
dHJhdGVnaWVzLm1hcCh0aGlzLl9jbG9uZVN0cmF0ZWd5LmJpbmQodGhpcykpOworICAgICAgICB2
YXIgZW52ZWxvcGluZ1N0cmF0ZWdpZXMgPSBTdGF0aXN0aWNzU3RyYXRlZ2llcy5FbnZlbG9waW5n
U3RyYXRlZ2llcy5tYXAodGhpcy5fY2xvbmVTdHJhdGVneS5iaW5kKHRoaXMpKTsKICAgICAgICAg
dGhpcy5zZXQoJ2VudmVsb3BpbmdTdHJhdGVnaWVzJywgW3tsYWJlbDogJ05vbmUnfV0uY29uY2F0
KGVudmVsb3BpbmdTdHJhdGVnaWVzKSk7CiAgICAgICAgIHRoaXMuc2V0KCdjaG9zZW5FbnZlbG9w
aW5nU3RyYXRlZ3knLCB0aGlzLl9jb25maWd1cmVTdHJhdGVneShlbnZlbG9waW5nU3RyYXRlZ2ll
cywgdGhpcy5nZXQoJ2VudmVsb3BpbmdDb25maWcnKSkpOwogCi0gICAgICAgIHZhciB0ZXN0UmFu
Z2VTZWxlY3Rpb25TdHJhdGVnaWVzID0gU3RhdGlzdGljcy5UZXN0UmFuZ2VTZWxlY3Rpb25TdHJh
dGVnaWVzLm1hcCh0aGlzLl9jbG9uZVN0cmF0ZWd5LmJpbmQodGhpcykpOworICAgICAgICB2YXIg
dGVzdFJhbmdlU2VsZWN0aW9uU3RyYXRlZ2llcyA9IFN0YXRpc3RpY3NTdHJhdGVnaWVzLlRlc3RS
YW5nZVNlbGVjdGlvblN0cmF0ZWdpZXMubWFwKHRoaXMuX2Nsb25lU3RyYXRlZ3kuYmluZCh0aGlz
KSk7CiAgICAgICAgIHRoaXMuc2V0KCd0ZXN0UmFuZ2VTZWxlY3Rpb25TdHJhdGVnaWVzJywgW3ts
YWJlbDogJ05vbmUnfV0uY29uY2F0KHRlc3RSYW5nZVNlbGVjdGlvblN0cmF0ZWdpZXMpKTsKICAg
ICAgICAgdGhpcy5zZXQoJ2Nob3NlblRlc3RSYW5nZVNlbGVjdGlvblN0cmF0ZWd5JywgdGhpcy5f
Y29uZmlndXJlU3RyYXRlZ3kodGVzdFJhbmdlU2VsZWN0aW9uU3RyYXRlZ2llcywgdGhpcy5nZXQo
J3Rlc3RSYW5nZVNlbGVjdGlvbkNvbmZpZycpKSk7CiAKLSAgICAgICAgdmFyIGFub21hbHlEZXRl
Y3Rpb25TdHJhdGVnaWVzID0gU3RhdGlzdGljcy5Bbm9tYWx5RGV0ZWN0aW9uU3RyYXRlZ3kubWFw
KHRoaXMuX2Nsb25lU3RyYXRlZ3kuYmluZCh0aGlzKSk7CisgICAgICAgIHZhciBhbm9tYWx5RGV0
ZWN0aW9uU3RyYXRlZ2llcyA9IFN0YXRpc3RpY3NTdHJhdGVnaWVzLkFub21hbHlEZXRlY3Rpb25T
dHJhdGVneS5tYXAodGhpcy5fY2xvbmVTdHJhdGVneS5iaW5kKHRoaXMpKTsKICAgICAgICAgdGhp
cy5zZXQoJ2Fub21hbHlEZXRlY3Rpb25TdHJhdGVnaWVzJywgYW5vbWFseURldGVjdGlvblN0cmF0
ZWdpZXMpOwogICAgIH0ub24oJ2luaXQnKSwKICAgICBfY2xvbmVTdHJhdGVneTogZnVuY3Rpb24g
KHN0cmF0ZWd5KQpAQCAtNjQwLDIxICs2NDAsMjEgQEAgQXBwLlBhbmUgPSBFbWJlci5PYmplY3Qu
ZXh0ZW5kKHsKICAgICAgICAgaWYgKCFtb3ZpbmdBdmVyYWdlSXNTZXRCeVVzZXIpCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKIAotICAgICAgICB2YXIgbW92aW5nQXZlcmFnZVZhbHVlcyA9IFN0
YXRpc3RpY3MuZXhlY3V0ZVN0cmF0ZWd5KG1vdmluZ0F2ZXJhZ2VTdHJhdGVneSwgcmF3VmFsdWVz
KTsKKyAgICAgICAgdmFyIG1vdmluZ0F2ZXJhZ2VWYWx1ZXMgPSBTdGF0aXN0aWNzU3RyYXRlZ2ll
cy5leGVjdXRlU3RyYXRlZ3kobW92aW5nQXZlcmFnZVN0cmF0ZWd5LCByYXdWYWx1ZXMpOwogICAg
ICAgICBpZiAoIW1vdmluZ0F2ZXJhZ2VWYWx1ZXMpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsK
IAogICAgICAgICB2YXIgdGVzdFJhbmdlQ2FuZGlkYXRlcyA9IFtdOwogICAgICAgICBpZiAobW92
aW5nQXZlcmFnZVN0cmF0ZWd5ICYmIG1vdmluZ0F2ZXJhZ2VTdHJhdGVneS5pc1NlZ21lbnRhdGlv
biAmJiB0ZXN0UmFuZ2VTZWxlY3Rpb25TdHJhdGVneSAmJiB0ZXN0UmFuZ2VTZWxlY3Rpb25TdHJh
dGVneS5leGVjdXRlKQotICAgICAgICAgICAgdGVzdFJhbmdlQ2FuZGlkYXRlcyA9IFN0YXRpc3Rp
Y3MuZXhlY3V0ZVN0cmF0ZWd5KHRlc3RSYW5nZVNlbGVjdGlvblN0cmF0ZWd5LCByYXdWYWx1ZXMs
IFttb3ZpbmdBdmVyYWdlVmFsdWVzXSk7CisgICAgICAgICAgICB0ZXN0UmFuZ2VDYW5kaWRhdGVz
ID0gU3RhdGlzdGljc1N0cmF0ZWdpZXMuZXhlY3V0ZVN0cmF0ZWd5KHRlc3RSYW5nZVNlbGVjdGlv
blN0cmF0ZWd5LCByYXdWYWx1ZXMsIFttb3ZpbmdBdmVyYWdlVmFsdWVzXSk7CiAKICAgICAgICAg
aWYgKGVudmVsb3BpbmdTdHJhdGVneSAmJiBlbnZlbG9waW5nU3RyYXRlZ3kuZXhlY3V0ZSkgewot
ICAgICAgICAgICAgdmFyIGVudmVsb3BlRGVsdGEgPSBTdGF0aXN0aWNzLmV4ZWN1dGVTdHJhdGVn
eShlbnZlbG9waW5nU3RyYXRlZ3ksIHJhd1ZhbHVlcywgW21vdmluZ0F2ZXJhZ2VWYWx1ZXNdKTsK
KyAgICAgICAgICAgIHZhciBlbnZlbG9wZURlbHRhID0gU3RhdGlzdGljc1N0cmF0ZWdpZXMuZXhl
Y3V0ZVN0cmF0ZWd5KGVudmVsb3BpbmdTdHJhdGVneSwgcmF3VmFsdWVzLCBbbW92aW5nQXZlcmFn
ZVZhbHVlc10pOwogICAgICAgICAgICAgdmFyIGFub21hbGllcyA9IHt9OwogICAgICAgICAgICAg
aWYgKGFub21hbHlEZXRlY3Rpb25TdHJhdGVnaWVzLmxlbmd0aCkgewogICAgICAgICAgICAgICAg
IHZhciBpc0Fub21hbHlBcnJheSA9IG5ldyBBcnJheShjdXJyZW50VGltZVNlcmllc0RhdGEubGVu
Z3RoKTsKICAgICAgICAgICAgICAgICBmb3IgKHZhciBzdHJhdGVneSBvZiBhbm9tYWx5RGV0ZWN0
aW9uU3RyYXRlZ2llcykgewotICAgICAgICAgICAgICAgICAgICB2YXIgYW5vbWFseUxlbmd0aHMg
PSBTdGF0aXN0aWNzLmV4ZWN1dGVTdHJhdGVneShzdHJhdGVneSwgcmF3VmFsdWVzLCBbbW92aW5n
QXZlcmFnZVZhbHVlcywgZW52ZWxvcGVEZWx0YV0pOworICAgICAgICAgICAgICAgICAgICB2YXIg
YW5vbWFseUxlbmd0aHMgPSBTdGF0aXN0aWNzU3RyYXRlZ2llcy5leGVjdXRlU3RyYXRlZ3koc3Ry
YXRlZ3ksIHJhd1ZhbHVlcywgW21vdmluZ0F2ZXJhZ2VWYWx1ZXMsIGVudmVsb3BlRGVsdGFdKTsK
ICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjdXJyZW50VGltZVNlcmll
c0RhdGEubGVuZ3RoOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICBpc0Fub21hbHlBcnJh
eVtpXSA9IGlzQW5vbWFseUFycmF5W2ldIHx8IGFub21hbHlMZW5ndGhzW2ldOwogICAgICAgICAg
ICAgICAgIH0KSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjIvZGF0YS5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YyL2RhdGEu
anMJKHJldmlzaW9uIDE5NjYxMykKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djIvZGF0YS5qcwkod29ya2luZyBjb3B5KQpAQCAtNTU3LDcgKzU1Nyw3IEBAIFRpbWVTZXJpZXMu
cHJvdG90eXBlLm5leHRQb2ludCA9IGZ1bmN0aW8KIH0KIAogaWYgKHR5cGVvZiBtb2R1bGUgIT0g
J3VuZGVmaW5lZCcpIHsKLSAgICBTdGF0aXN0aWNzID0gcmVxdWlyZSgnLi9qcy9zdGF0aXN0aWNz
LmpzJyk7CisgICAgU3RhdGlzdGljcyA9IHJlcXVpcmUoJy4uL3NoYXJlZC9zdGF0aXN0aWNzLmpz
Jyk7CiAgICAgbW9kdWxlLmV4cG9ydHMuTWVhc3VyZW1lbnQgPSBNZWFzdXJlbWVudDsKICAgICBt
b2R1bGUuZXhwb3J0cy5SdW5zRGF0YSA9IFJ1bnNEYXRhOwogICAgIG1vZHVsZS5leHBvcnRzLlRp
bWVTZXJpZXMgPSBUaW1lU2VyaWVzOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92Mi9pbmRleC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjIvaW5kZXguaHRtbAkocmV2aXNpb24gMTk2NjEzKQorKysgV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92Mi9pbmRleC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw2
ICsxNyw3IEBACiAgICAgPHNjcmlwdCBzcmM9ImpzL2VtYmVyLWRhdGEuanMiIGRlZmVyPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJqcy9kMy9kMy5taW4uanMiIGRlZmVyPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSIuLi9zaGFyZWQvc3RhdGlzdGljcy5qcyIgZGVmZXI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9InN0YXRpc3RpY3Mtc3RyYXRlZ2llcy5qcyIgZGVmZXI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9ImRhdGEuanMiIGRlZmVyPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJhcHAuanMiIGRlZmVyPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJtYW5pZmVz
dC5qcyIgZGVmZXI+PC9zY3JpcHQ+CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YyL3N0YXRpc3RpY3Mtc3RyYXRlZ2llcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YyL3N0YXRpc3RpY3Mtc3RyYXRlZ2llcy5qcwkocmV2aXNp
b24gMCkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjIvc3RhdGlzdGljcy1z
dHJhdGVnaWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjE3IEBACisKK3ZhciBTdGF0
aXN0aWNzU3RyYXRlZ2llcyA9IHt9OworCisoZnVuY3Rpb24gKCkgeworCitTdGF0aXN0aWNzU3Ry
YXRlZ2llcy5Nb3ZpbmdBdmVyYWdlU3RyYXRlZ2llcyA9IFsKKyAgICB7CisgICAgICAgIGlkOiAx
LAorICAgICAgICBsYWJlbDogJ1NpbXBsZSBNb3ZpbmcgQXZlcmFnZScsCisgICAgICAgIHBhcmFt
ZXRlckxpc3Q6IFsKKyAgICAgICAgICAgIHtsYWJlbDogIkJhY2t3YXJkIHdpbmRvdyBzaXplIiwg
dmFsdWU6IDgsIG1pbjogMiwgc3RlcDogMX0sCisgICAgICAgICAgICB7bGFiZWw6ICJGb3J3YXJk
IHdpbmRvdyBzaXplIiwgdmFsdWU6IDQsIG1pbjogMCwgc3RlcDogMX0KKyAgICAgICAgXSwKKyAg
ICAgICAgZXhlY3V0ZTogZnVuY3Rpb24gKGJhY2t3YXJkV2luZG93U2l6ZSwgZm9yd2FyZFdpbmRv
d1NpemUsIHZhbHVlcykgeworICAgICAgICAgICAgcmV0dXJuIFN0YXRpc3RpY3MubW92aW5nQXZl
cmFnZSh2YWx1ZXMsIGJhY2t3YXJkV2luZG93U2l6ZSwgZm9yd2FyZFdpbmRvd1NpemUpOworICAg
ICAgICB9LAorICAgIH0sCisgICAgeworICAgICAgICBpZDogMiwKKyAgICAgICAgbGFiZWw6ICdD
dW11bGF0aXZlIE1vdmluZyBBdmVyYWdlJywKKyAgICAgICAgZXhlY3V0ZTogU3RhdGlzdGljcy5j
dW11bHRhaXZlTW92aW5nQXZlcmFnZSwKKyAgICB9LAorICAgIHsKKyAgICAgICAgaWQ6IDMsCisg
ICAgICAgIGxhYmVsOiAnRXhwb25lbnRpYWwgTW92aW5nIEF2ZXJhZ2UnLAorICAgICAgICBwYXJh
bWV0ZXJMaXN0OiBbe2xhYmVsOiAiU21vb3RoaW5nIGZhY3RvciIsIHZhbHVlOiAwLjEsIG1pbjog
MC4wMDEsIG1heDogMC45fV0sCisgICAgICAgIGV4ZWN1dGU6IGZ1bmN0aW9uIChzbW9vdGhpbmdG
YWN0b3IsIHZhbHVlcykgeworICAgICAgICAgICAgaWYgKCF2YWx1ZXMubGVuZ3RoIHx8IHR5cGVv
ZihzbW9vdGhpbmdGYWN0b3IpICE9PSAibnVtYmVyIikKKyAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbDsKKyAgICAgICAgICAgIHJldHVybiBTdGF0aXN0aWNzLmV4cG9uZW50aWFsTW92aW5nQXZl
cmFnZSh2YWx1ZXMsIHNtb290aGluZ0ZhY3Rvcik7CisgICAgICAgIH0KKyAgICB9LAorICAgIHsK
KyAgICAgICAgaWQ6IDQsCisgICAgICAgIGlzU2VnbWVudGF0aW9uOiB0cnVlLAorICAgICAgICBs
YWJlbDogJ1NlZ21lbnRhdGlvbjogUmVjdXJzaXZlIHQtdGVzdCcsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiUmVjdXJzaXZlbHkgc3BsaXQgdmFsdWVzIGludG8gdHdvIHNlZ21lbnRzIGlmIFdlbGNo
J3MgdC10ZXN0IGRldGVjdHMgYSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IGRpZmZlcmVuY2Uu
IiwKKyAgICAgICAgcGFyYW1ldGVyTGlzdDogW3tsYWJlbDogIk1pbmltdW0gc2VnbWVudCBsZW5n
dGgiLCB2YWx1ZTogMjAsIG1pbjogNX1dLAorICAgICAgICBleGVjdXRlOiBmdW5jdGlvbiAobWlu
TGVuZ3RoLCB2YWx1ZXMpIHsKKyAgICAgICAgICAgIHJldHVybiBhdmVyYWdlc0Zyb21TZWdtZW50
cyh2YWx1ZXMsIFN0YXRpc3RpY3Muc2VnbWVudFRpbWVTZXJpZXNHcmVlZHlXaXRoU3R1ZGVudHNU
VGVzdCh2YWx1ZXMsIG1pbkxlbmd0aCkpOworICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAg
ICAgIGlkOiA1LAorICAgICAgICBpc1NlZ21lbnRhdGlvbjogdHJ1ZSwKKyAgICAgICAgbGFiZWw6
ICdTZWdtZW50YXRpb246IFNjaHdhcnogY3JpdGVyaW9uJywKKyAgICAgICAgZGVzY3JpcHRpb246
ICdBZGFwdGl2ZSBhbGdvcml0aG0gdGhhdCBtYXhpbWl6ZXMgdGhlIFNjaHdhcnogY3JpdGVyaW9u
IChCSUMpLicsCisgICAgICAgIC8vIEJhc2VkIG9uIERldGVjdGlvbiBvZiBNdWx0aXBsZSBDaGFu
Z2XigJNQb2ludHMgaW4gTXVsdGl2YXJpYXRlIFRpbWUgU2VyaWVzIGJ5IE1hcmMgTGF2aWVsbGUg
KEp1bHkgMjAwNikuCisgICAgICAgIGV4ZWN1dGU6IGZ1bmN0aW9uICh2YWx1ZXMpIHsKKyAgICAg
ICAgICAgIHJldHVybiBhdmVyYWdlc0Zyb21TZWdtZW50cyh2YWx1ZXMsIFN0YXRpc3RpY3Muc2Vn
bWVudFRpbWVTZXJpZXNCeU1heGltaXppbmdTY2h3YXJ6Q3JpdGVyaW9uKHZhbHVlcykpOworICAg
ICAgICB9CisgICAgfSwKK107CisKK2Z1bmN0aW9uIGF2ZXJhZ2VzRnJvbVNlZ21lbnRzKHZhbHVl
cywgc2VnbWVudFN0YXJ0SW5kaWNlcykgeworICAgIHZhciBhdmVyYWdlcyA9IG5ldyBBcnJheSh2
YWx1ZXMubGVuZ3RoKTsKKyAgICB2YXIgYXZlcmFnZUluZGV4ID0gMDsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHNlZ21lbnRTdGFydEluZGljZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFy
IHNlZ21lbnQgPSB2YWx1ZXMuc2xpY2Uoc2VnbWVudFN0YXJ0SW5kaWNlc1tpIC0gMV0sIHNlZ21l
bnRTdGFydEluZGljZXNbaV0pOworICAgICAgICB2YXIgYXZlcmFnZSA9IFN0YXRpc3RpY3Muc3Vt
KHNlZ21lbnQpIC8gc2VnbWVudC5sZW5ndGg7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwg
c2VnbWVudC5sZW5ndGg7IGorKykKKyAgICAgICAgICAgIGF2ZXJhZ2VzW2F2ZXJhZ2VJbmRleCsr
XSA9IGF2ZXJhZ2U7CisgICAgfQorICAgIHJldHVybiBhdmVyYWdlczsKK30KKworCitTdGF0aXN0
aWNzU3RyYXRlZ2llcy5FbnZlbG9waW5nU3RyYXRlZ2llcyA9IFsKKyAgICB7CisgICAgICAgIGlk
OiAxMDAsCisgICAgICAgIGxhYmVsOiAnQXZlcmFnZSBEaWZmZXJlbmNlJywKKyAgICAgICAgZGVz
Y3JpcHRpb246ICdUaGUgYXZlcmFnZSBkaWZmZXJlbmNlIGJldHdlZW4gY29uc2VjdXRpdmUgdmFs
dWVzLicsCisgICAgICAgIGV4ZWN1dGU6IGZ1bmN0aW9uICh2YWx1ZXMsIG1vdmluZ0F2ZXJhZ2Vz
KSB7CisgICAgICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA8IDEpCisgICAgICAgICAgICAgICAg
cmV0dXJuIE5hTjsKKworICAgICAgICAgICAgdmFyIGRpZmYgPSAwOworICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgZGlm
ZiArPSBNYXRoLmFicyh2YWx1ZXNbaV0gLSB2YWx1ZXNbaSAtIDFdKTsKKworICAgICAgICAgICAg
cmV0dXJuIGRpZmYgLyB2YWx1ZXMubGVuZ3RoOworICAgICAgICB9CisgICAgfSwKKyAgICB7Cisg
ICAgICAgIGlkOiAxMDEsCisgICAgICAgIGxhYmVsOiAnTW92aW5nIEF2ZXJhZ2UgU3RhbmRhcmQg
RGV2aWF0aW9uJywKKyAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgc3F1YXJlIHJvb3Qgb2YgdGhl
IGF2ZXJhZ2UgZGV2aWF0aW9uIGZyb20gdGhlIG1vdmluZyBhdmVyYWdlIHdpdGggQmVzc2VsXCdz
IGNvcnJlY3Rpb24uJywKKyAgICAgICAgZXhlY3V0ZTogZnVuY3Rpb24gKHZhbHVlcywgbW92aW5n
QXZlcmFnZXMpIHsKKyAgICAgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoIDwgMSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gTmFOOworCisgICAgICAgICAgICB2YXIgZGlmZlNxdWFyZVN1bSA9IDA7
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewor
ICAgICAgICAgICAgICAgIHZhciBkaWZmID0gKHZhbHVlc1tpXSAtIG1vdmluZ0F2ZXJhZ2VzW2ld
KTsKKyAgICAgICAgICAgICAgICBkaWZmU3F1YXJlU3VtICs9IGRpZmYgKiBkaWZmOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KGRpZmZTcXVhcmVTdW0gLyAo
dmFsdWVzLmxlbmd0aCAtIDEpKTsKKyAgICAgICAgfQorICAgIH0sCitdOworCisKK1N0YXRpc3Rp
Y3NTdHJhdGVnaWVzLlRlc3RSYW5nZVNlbGVjdGlvblN0cmF0ZWdpZXMgPSBbCisgICAgeworICAg
ICAgICBpZDogMzAxLAorICAgICAgICBsYWJlbDogInQtdGVzdCA5OSUgc2lnbmlmaWNhbmNlIiwK
KyAgICAgICAgZXhlY3V0ZTogZnVuY3Rpb24gKHZhbHVlcywgc2VnbWVudGVkVmFsdWVzKSB7Cisg
ICAgICAgICAgICBpZiAoIXZhbHVlcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgcmV0dXJuIFtd
OworCisgICAgICAgICAgICB2YXIgcHJldmlvdXNNZWFuID0gc2VnbWVudGVkVmFsdWVzWzBdOwor
ICAgICAgICAgICAgdmFyIHNlbGVjdGVkUmFuZ2VzID0gbmV3IEFycmF5OworICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCBzZWdtZW50ZWRWYWx1ZXMubGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgICAgICAgICB2YXIgY3VycmVudE1lYW4gPSBzZWdtZW50ZWRWYWx1ZXNbaV07CisgICAgICAg
ICAgICAgICAgaWYgKGN1cnJlbnRNZWFuID09IHByZXZpb3VzTWVhbikKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgdmFyIGZvdW5kID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgZm9yICh2YXIgbGVmdEVkZ2UgPSBpIC0gMiwgcmlnaHRFZGdlID0gaSArIDI7
IGxlZnRFZGdlID49IDAgJiYgcmlnaHRFZGdlIDw9IHZhbHVlcy5sZW5ndGg7IGxlZnRFZGdlLS0s
IHJpZ2h0RWRnZSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzZWdtZW50ZWRWYWx1ZXNb
bGVmdEVkZ2VdICE9IHByZXZpb3VzTWVhbiB8fCBzZWdtZW50ZWRWYWx1ZXNbcmlnaHRFZGdlIC0g
MV0gIT0gY3VycmVudE1lYW4pCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFN0YXRpc3RpY3MuY29tcHV0ZVdlbGNoc1QodmFs
dWVzLCBsZWZ0RWRnZSwgaSAtIGxlZnRFZGdlLCB2YWx1ZXMsIGksIHJpZ2h0RWRnZSAtIGksIDAu
OTgpOworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnNpZ25pZmljYW50bHlEaWZmZXJl
bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2VzLnB1c2goW2xlZnRF
ZGdlLCByaWdodEVkZ2UgLSAxXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIWZvdW5kICYmIFN0YXRp
c3RpY3MuZGVidWdnaW5nVGVzdGluZ1JhbmdlTm9taW5hdGlvbikKKyAgICAgICAgICAgICAgICAg
ICAgY29uc29sZS5sb2coJ0ZhaWxlZCB0byBmaW5kIGEgdGVzdGluZyByYW5nZSBhdCcsIGksICdj
aGFuZ2luZyBmcm9tJywgcHJldmlvdXNNZWFuLCAndG8nLCBjdXJyZW50TWVhbik7CisgICAgICAg
ICAgICAgICAgcHJldmlvdXNNZWFuID0gY3VycmVudE1lYW47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gc2VsZWN0ZWRSYW5nZXM7CisgICAgICAgIH0KKyAgICB9CitdOworCisK
KworZnVuY3Rpb24gY3JlYXRlV2VzdGVybkVsZWN0cmljUnVsZSh3aW5kb3dTaXplLCBtaW5PdXRs
aW5lckNvdW50LCBsaW1pdEZhY3RvcikgeworICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWVzLCBt
b3ZpbmdBdmVyYWdlcywgZGV2aWF0aW9uKSB7CisgICAgICAgIHZhciByZXN1bHRzID0gbmV3IEFy
cmF5KHZhbHVlcy5sZW5ndGgpOworICAgICAgICB2YXIgbGltaXQgPSBsaW1pdEZhY3RvciAqIGRl
dmlhdGlvbjsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKysp
CisgICAgICAgICAgICByZXN1bHRzW2ldID0gY291bnRWYWx1ZXNPblNhbWVTaWRlKHZhbHVlcywg
bW92aW5nQXZlcmFnZXMsIGxpbWl0LCBpLCB3aW5kb3dTaXplKSA+PSBtaW5PdXRsaW5lckNvdW50
ID8gd2luZG93U2l6ZSA6IDA7CisgICAgICAgIHJldHVybiByZXN1bHRzOworICAgIH0KK30KKwor
ZnVuY3Rpb24gY291bnRWYWx1ZXNPblNhbWVTaWRlKHZhbHVlcywgbW92aW5nQXZlcmFnZXMsIGxp
bWl0LCBzdGFydEluZGV4LCB3aW5kb3dTaXplKSB7CisgICAgdmFyIHZhbHVlc0Fib3ZlTGltaXQg
PSAwOworICAgIHZhciB2YWx1ZXNCZWxvd0xpbWl0ID0gMDsKKyAgICB2YXIgY2VudGVyID0gbW92
aW5nQXZlcmFnZXNbc3RhcnRJbmRleF07CisgICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5kZXg7IGkg
PCBzdGFydEluZGV4ICsgd2luZG93U2l6ZSAmJiBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgIHZhciBkaWZmID0gdmFsdWVzW2ldIC0gY2VudGVyOworICAgICAgICB2YWx1ZXNBYm92
ZUxpbWl0ICs9IChkaWZmID4gbGltaXQpOworICAgICAgICB2YWx1ZXNCZWxvd0xpbWl0ICs9IChk
aWZmIDwgLWxpbWl0KTsKKyAgICB9CisgICAgcmV0dXJuIE1hdGgubWF4KHZhbHVlc0Fib3ZlTGlt
aXQsIHZhbHVlc0JlbG93TGltaXQpOworfQorCitTdGF0aXN0aWNzU3RyYXRlZ2llcy5Bbm9tYWx5
RGV0ZWN0aW9uU3RyYXRlZ3kgPSBbCisgICAgLy8gV2VzdGVybiBFbGVjdHJpYyBydWxlczogaHR0
cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XZXN0ZXJuX0VsZWN0cmljX3J1bGVzCisgICAgewor
ICAgICAgICBpZDogMjAwLAorICAgICAgICBsYWJlbDogJ1dlc3Rlcm4gRWxlY3RyaWM6IGFueSBw
b2ludCBiZXlvbmQgM8+DJywKKyAgICAgICAgZGVzY3JpcHRpb246ICdBbnkgc2luZ2xlIHBvaW50
IGZhbGxzIG91dHNpZGUgM8+DIGxpbWl0IGZyb20gdGhlIG1vdmluZyBhdmVyYWdlJywKKyAgICAg
ICAgZXhlY3V0ZTogY3JlYXRlV2VzdGVybkVsZWN0cmljUnVsZSgxLCAxLCAzKSwKKyAgICB9LAor
ICAgIHsKKyAgICAgICAgaWQ6IDIwMSwKKyAgICAgICAgbGFiZWw6ICdXZXN0ZXJuIEVsZWN0cmlj
OiAyLzMgcG9pbnRzIGJleW9uZCAyz4MnLAorICAgICAgICBkZXNjcmlwdGlvbjogJ1R3byBvdXQg
b2YgdGhyZWUgY29uc2VjdXRpdmUgcG9pbnRzIGZhbGwgb3V0c2lkZSAyz4MgbGltaXQgZnJvbSB0
aGUgbW92aW5nIGF2ZXJhZ2Ugb24gdGhlIHNhbWUgc2lkZScsCisgICAgICAgIGV4ZWN1dGU6IGNy
ZWF0ZVdlc3Rlcm5FbGVjdHJpY1J1bGUoMywgMiwgMiksCisgICAgfSwKKyAgICB7CisgICAgICAg
IGlkOiAyMDIsCisgICAgICAgIGxhYmVsOiAnV2VzdGVybiBFbGVjdHJpYzogNC81IHBvaW50cyBi
ZXlvbmQgz4MnLAorICAgICAgICBkZXNjcmlwdGlvbjogJ0ZvdXIgb3V0IG9mIGZpdmUgY29uc2Vj
dXRpdmUgcG9pbnRzIGZhbGwgb3V0c2lkZSAyz4MgbGltaXQgZnJvbSB0aGUgbW92aW5nIGF2ZXJh
Z2Ugb24gdGhlIHNhbWUgc2lkZScsCisgICAgICAgIGV4ZWN1dGU6IGNyZWF0ZVdlc3Rlcm5FbGVj
dHJpY1J1bGUoNSwgNCwgMSksCisgICAgfSwKKyAgICB7CisgICAgICAgIGlkOiAyMDMsCisgICAg
ICAgIGxhYmVsOiAnV2VzdGVybiBFbGVjdHJpYzogOSBwb2ludHMgb24gc2FtZSBzaWRlJywKKyAg
ICAgICAgZGVzY3JpcHRpb246ICdOaW5lIGNvbnNlY3V0aXZlIHBvaW50cyBvbiB0aGUgc2FtZSBz
aWRlIG9mIHRoZSBtb3ZpbmcgYXZlcmFnZScsCisgICAgICAgIGV4ZWN1dGU6IGNyZWF0ZVdlc3Rl
cm5FbGVjdHJpY1J1bGUoOSwgOSwgMCksCisgICAgfSwKKyAgICB7CisgICAgICAgIGlkOiAyMTAs
CisgICAgICAgIGxhYmVsOiAnTW96aWxsYTogdC10ZXN0IDUgdnMuIDIwIGJlZm9yZSB0aGF0JywK
KyAgICAgICAgZGVzY3JpcHRpb246ICJVc2Ugc3R1ZGVudCdzIHQtdGVzdCB0byBkZXRlcm1pbmUg
d2hldGhlciB0aGUgbWVhbiBvZiB0aGUgbGFzdCBmaXZlIGRhdGEgcG9pbnRzIGRpZmZlcnMgZnJv
bSB0aGUgbWVhbiBvZiB0aGUgdHdlbnR5IHZhbHVlcyBiZWZvcmUgdGhhdCIsCisgICAgICAgIGV4
ZWN1dGU6IGZ1bmN0aW9uICh2YWx1ZXMsIG1vdmluZ0F2ZXJhZ2VzLCBkZXZpYXRpb24pIHsKKyAg
ICAgICAgICAgIHZhciByZXN1bHRzID0gbmV3IEFycmF5KHZhbHVlcy5sZW5ndGgpOworICAgICAg
ICAgICAgdmFyIHAgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAyMDsgaSA8IHZh
bHVlcy5sZW5ndGggLSA1OyBpKyspCisgICAgICAgICAgICAgICAgcmVzdWx0c1tpXSA9IFN0YXRp
c3RpY3MudGVzdFdlbGNoc1QodmFsdWVzLnNsaWNlKGkgLSAyMCwgaSksIHZhbHVlcy5zbGljZShp
LCBpICsgNSksIDAuOTgpID8gNSA6IDA7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKKyAg
ICAgICAgfQorICAgIH0sCitdCisKK1N0YXRpc3RpY3NTdHJhdGVnaWVzLmV4ZWN1dGVTdHJhdGVn
eSA9IGZ1bmN0aW9uIChzdHJhdGVneSwgcmF3VmFsdWVzLCBhZGRpdGlvbmFsQXJndW1lbnRzKQor
eworICAgIHZhciBwYXJhbWV0ZXJzID0gKHN0cmF0ZWd5LnBhcmFtZXRlckxpc3QgfHwgW10pLm1h
cChmdW5jdGlvbiAocGFyYW0pIHsKKyAgICAgICAgdmFyIHBhcnNlZCA9IHBhcnNlRmxvYXQocGFy
YW0udmFsdWUpOworICAgICAgICByZXR1cm4gTWF0aC5taW4ocGFyYW0ubWF4IHx8IEluZmluaXR5
LCBNYXRoLm1heChwYXJhbS5taW4gfHwgLUluZmluaXR5LCBpc05hTihwYXJzZWQpID8gMCA6IHBh
cnNlZCkpOworICAgIH0pOworICAgIHBhcmFtZXRlcnMucHVzaChyYXdWYWx1ZXMpOworICAgIHJl
dHVybiBzdHJhdGVneS5leGVjdXRlLmFwcGx5KHN0cmF0ZWd5LCBwYXJhbWV0ZXJzLmNvbmNhdChh
ZGRpdGlvbmFsQXJndW1lbnRzKSk7Cit9OworCit9KSgpOworCitpZiAodHlwZW9mIG1vZHVsZSAh
PSAndW5kZWZpbmVkJykgeworICAgIGZvciAodmFyIGtleSBpbiBTdGF0aXN0aWNzU3RyYXRlZ2ll
cykKKyAgICAgICAgbW9kdWxlLmV4cG9ydHNba2V5XSA9IFN0YXRpc3RpY3NTdHJhdGVnaWVzW2tl
eV07Cit9CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvZGV0ZWN0LWNoYW5n
ZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2RldGVj
dC1jaGFuZ2VzLmpzCShyZXZpc2lvbiAxOTY2MTMpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvdG9vbHMvZGV0ZWN0LWNoYW5nZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTYsNiArNiw3IEBA
IHZhciBodHRwcyA9IHJlcXVpcmUoJ2h0dHBzJyk7CiB2YXIgZGF0YSA9IHJlcXVpcmUoJy4uL3B1
YmxpYy92Mi9kYXRhLmpzJyk7CiB2YXIgUnVuc0RhdGEgPSBkYXRhLlJ1bnNEYXRhOwogdmFyIFN0
YXRpc3RpY3MgPSByZXF1aXJlKCcuLi9wdWJsaWMvc2hhcmVkL3N0YXRpc3RpY3MuanMnKTsKK3Zh
ciBTdGF0aXN0aWNzU3RyYXRlZ2llcyA9IHJlcXVpcmUoJy4uL3B1YmxpYy92Mi9zdGF0aXN0aWNz
LXN0cmF0ZWdpZXMuanMnKTsKIAogLy8gRklYTUU6IFdlIHNob3VsZG4ndCB1c2UgYSBnbG9iYWwg
dmFyaWFibGUgbGlrZSB0aGlzLgogdmFyIHNldHRpbmdzOwpAQCAtMTcyLDEzICsxNzMsMTMgQEAg
ZnVuY3Rpb24gY29tcHV0ZVJhbmdlc0ZvclRlc3Rpbmcoc2VydmVyLAogewogICAgIC8vIEZJWE1F
OiBTdG9yZSB0aGUgc2VnbWVudGF0aW9uIHN0cmF0ZWd5IG9uIHRoZSBzZXJ2ZXIgc2lkZS4KICAg
ICAvLyBGSVhNRTogQ29uZmlndXJlIGVhY2ggc3RyYXRlZ3kuCi0gICAgdmFyIHNlZ21lbnRhdGlv
blN0cmF0ZWd5ID0gZmluZFN0cmF0ZWd5QnlMYWJlbChTdGF0aXN0aWNzLk1vdmluZ0F2ZXJhZ2VT
dHJhdGVnaWVzLCBzdHJhdGVnaWVzLnNlZ21lbnRhdGlvbi5sYWJlbCk7CisgICAgdmFyIHNlZ21l
bnRhdGlvblN0cmF0ZWd5ID0gZmluZFN0cmF0ZWd5QnlMYWJlbChTdGF0aXN0aWNzU3RyYXRlZ2ll
cy5Nb3ZpbmdBdmVyYWdlU3RyYXRlZ2llcywgc3RyYXRlZ2llcy5zZWdtZW50YXRpb24ubGFiZWwp
OwogICAgIGlmICghc2VnbWVudGF0aW9uU3RyYXRlZ3kpIHsKICAgICAgICAgY29uc29sZS5lcnJv
cignRmFpbGVkIHRvIGZpbmQgdGhlIHNlZ21lbnRhdGlvbiBzdHJhdGVneTogJyArIHN0cmF0ZWdp
ZXMuc2VnbWVudGF0aW9uLmxhYmVsKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHZh
ciB0ZXN0UmFuZ2VTdHJhdGVneSA9IGZpbmRTdHJhdGVneUJ5TGFiZWwoU3RhdGlzdGljcy5UZXN0
UmFuZ2VTZWxlY3Rpb25TdHJhdGVnaWVzLCBzdHJhdGVnaWVzLnRlc3RSYW5nZS5sYWJlbCk7Cisg
ICAgdmFyIHRlc3RSYW5nZVN0cmF0ZWd5ID0gZmluZFN0cmF0ZWd5QnlMYWJlbChTdGF0aXN0aWNz
U3RyYXRlZ2llcy5UZXN0UmFuZ2VTZWxlY3Rpb25TdHJhdGVnaWVzLCBzdHJhdGVnaWVzLnRlc3RS
YW5nZS5sYWJlbCk7CiAgICAgaWYgKCF0ZXN0UmFuZ2VTdHJhdGVneSkgewogICAgICAgICBjb25z
b2xlLmVycm9yKCdGYWlsZWQgdG8gZmluZCB0aGUgdGVzdCByYW5nZSBzZWxlY3Rpb24gc3RyYXRl
Z3k6ICcgKyBzdHJhdGVnaWVzLnRlc3RSYW5nZS5sYWJlbCk7CiAgICAgICAgIHJldHVybjsKQEAg
LTIwNCw5ICsyMDUsOSBAQCBmdW5jdGlvbiBjb21wdXRlUmFuZ2VzRm9yVGVzdGluZyhzZXJ2ZXIs
CiAgICAgICAgIHZhciBjdXJyZW50VGltZVNlcmllcyA9IHJlc3VsdHNbMF0udGltZVNlcmllc0J5
Q29tbWl0VGltZSgpOwogICAgICAgICB2YXIgYW5hbHlzaXNUYXNrcyA9IHJlc3VsdHNbMV07CiAg
ICAgICAgIHZhciByYXdWYWx1ZXMgPSBjdXJyZW50VGltZVNlcmllcy5yYXdWYWx1ZXMoKTsKLSAg
ICAgICAgdmFyIHNlZ21lbnRlZFZhbHVlcyA9IFN0YXRpc3RpY3MuZXhlY3V0ZVN0cmF0ZWd5KHNl
Z21lbnRhdGlvblN0cmF0ZWd5LCByYXdWYWx1ZXMpOworICAgICAgICB2YXIgc2VnbWVudGVkVmFs
dWVzID0gU3RhdGlzdGljc1N0cmF0ZWdpZXMuZXhlY3V0ZVN0cmF0ZWd5KHNlZ21lbnRhdGlvblN0
cmF0ZWd5LCByYXdWYWx1ZXMpOwogCi0gICAgICAgIHZhciByYW5nZXMgPSBTdGF0aXN0aWNzLmV4
ZWN1dGVTdHJhdGVneSh0ZXN0UmFuZ2VTdHJhdGVneSwgcmF3VmFsdWVzLCBbc2VnbWVudGVkVmFs
dWVzXSkubWFwKGZ1bmN0aW9uIChyYW5nZSkgeworICAgICAgICB2YXIgcmFuZ2VzID0gU3RhdGlz
dGljc1N0cmF0ZWdpZXMuZXhlY3V0ZVN0cmF0ZWd5KHRlc3RSYW5nZVN0cmF0ZWd5LCByYXdWYWx1
ZXMsIFtzZWdtZW50ZWRWYWx1ZXNdKS5tYXAoZnVuY3Rpb24gKHJhbmdlKSB7CiAgICAgICAgICAg
ICB2YXIgc3RhcnRQb2ludCA9IGN1cnJlbnRUaW1lU2VyaWVzLmZpbmRQb2ludEJ5SW5kZXgocmFu
Z2VbMF0pOwogICAgICAgICAgICAgdmFyIGVuZFBvaW50ID0gY3VycmVudFRpbWVTZXJpZXMuZmlu
ZFBvaW50QnlJbmRleChyYW5nZVsxXSk7CiAgICAgICAgICAgICByZXR1cm4gewo=
</data>
<flag name="review"
          id="296230"
          type_id="1"
          status="+"
          setter="cdumez"
    />
    <flag name="commit-queue"
          id="296297"
          type_id="3"
          status="-"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>