<?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>154262</bug_id>
          
          <creation_ts>2016-02-15 15:43:46 -0800</creation_ts>
          <short_desc>v1 UI and v2 UI should share statistics.js</short_desc>
          <delta_ts>2016-02-15 15:57:19 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1164923</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-15 15:43:46 -0800</bug_when>
    <thetext>v1 UI and v2 UI should share statistics.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164925</commentid>
    <comment_count>1</comment_count>
      <attachid>271382</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-15 15:45:07 -0800</bug_when>
    <thetext>Created attachment 271382
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164933</commentid>
    <comment_count>2</comment_count>
      <attachid>271382</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-15 15:51:11 -0800</bug_when>
    <thetext>Comment on attachment 271382
Cleanup

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164934</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-15 15:57:19 -0800</bug_when>
    <thetext>Committed r196605: &lt;http://trac.webkit.org/changeset/196605&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271382</attachid>
            <date>2016-02-15 15:45:07 -0800</date>
            <delta_ts>2016-02-15 15:51:11 -0800</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-154262-20160215154447.patch</filename>
            <type>text/plain</type>
            <size>70200</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMTk2NjA0KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIyIEBACisyMDE2LTAyLTE1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIHYxIFVJIGFuZCB2MiBVSSBzaG91bGQgc2hhcmUgc3RhdGlzdGljcy5qcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MjYyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmUgc3RhdGlz
dGljcy5qcyBiZXR3ZWVuIHYxIGFuZCB2MiBVSS4KKworICAgICAgICAqIHB1YmxpYy9pbmRleC5o
dG1sOgorICAgICAgICAqIHB1YmxpYy9qcy9zaGFyZWQuanM6IERlbGV0ZWQuCisgICAgICAgICog
cHVibGljL2pzL3N0YXRpc3RpY3MuanM6IFJlbW92ZWQuCisgICAgICAgICogcHVibGljL3NoYXJl
ZDogQWRkZWQuCisgICAgICAgICogcHVibGljL3NoYXJlZC9zdGF0aXN0aWNzLmpzOiBNb3ZlZCBm
cm9tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjIvanMvc3RhdGlzdGljcy5qcy4K
KyAgICAgICAgKiBwdWJsaWMvdjIvaW5kZXguaHRtbDoKKyAgICAgICAgKiBwdWJsaWMvdjIvanMv
c3RhdGlzdGljcy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBwdWJsaWMvdjMvaW5kZXguaHRtbDoK
KyAgICAgICAgKiB0b29scy9kZXRlY3QtY2hhbmdlcy5qczoKKwogMjAxNi0wMi0xMyAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICB2MyBVSSBzb21ldGltZXMgc2hv
d3Mgc2FtZSBkYXRlcyB0d2ljZSBvbiB0aGUgeC1heGlzIG9mIHRpbWUgc2VyaWVzIGNoYXJ0cwpJ
bmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmRleC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5kZXguaHRtbAkocmV2aXNp
b24gMTk2NjAzKQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmRleC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw3IEBACiA8c2NyaXB0IHNyYz0ianMvanF1ZXJ5
LmZsb3Quc2VsZWN0aW9uLmpzIiBkZWZlcj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJqcy9qcXVl
cnkuZmxvdC50aW1lLmpzIiBkZWZlcj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJqcy9oZWxwZXIt
Y2xhc3Nlcy5qcyIgZGVmZXI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ianMvc2hhcmVkLmpzIiBk
ZWZlcj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJqcy9zdGF0aXN0aWNzLmpzIiBkZWZlcj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJzaGFyZWQvc3RhdGlzdGljcy5qcyIgZGVmZXI+PC9zY3JpcHQ+
CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImNvbW1vbi5jc3MiPgogPHN0eWxlIHR5cGU9
InRleHQvY3NzIj4KIApAQCAtODMyLDYgKzgzMSwxMCBAQCBmdW5jdGlvbiBmZXRjaFRlc3QocmVw
b3NpdG9yaWVzLCBidWlsZGVyCiAgICAgfSk7CiB9CiAKK2Z1bmN0aW9uIGZpbGVOYW1lRnJvbVBs
YXRmb3JtQW5kVGVzdChwbGF0Zm9ybUlkLCB0ZXN0SWQpIHsKKyAgICByZXR1cm4gcGxhdGZvcm1J
ZCArICctJyArIHRlc3RJZCArICcuanNvbic7Cit9CisKIGZ1bmN0aW9uIGluaXQoKSB7CiAgICAg
dmFyIGFsbFBsYXRmb3JtczsKICAgICB2YXIgdGVzdHMgPSBbXTsKSW5kZXg6IFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvanMvc2hhcmVkLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvanMvc2hhcmVkLmpzCShyZXZpc2lvbiAxOTY2MDMpCisr
KyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2pzL3NoYXJlZC5qcwkod29ya2luZyBj
b3B5KQpAQCAtMSw4ICswLDAgQEAKLQotZnVuY3Rpb24gZmlsZU5hbWVGcm9tUGxhdGZvcm1BbmRU
ZXN0KHBsYXRmb3JtSWQsIHRlc3RJZCkgewotICAgIHJldHVybiBwbGF0Zm9ybUlkICsgJy0nICsg
dGVzdElkICsgJy5qc29uJzsKLX0KLQotaWYgKHR5cGVvZiBtb2R1bGUgIT0gJ3VuZGVmaW5lZCcp
IHsKLSAgICBtb2R1bGUuZXhwb3J0cy5maWxlTmFtZUZyb21QbGF0Zm9ybUFuZFRlc3QgPSBmaWxl
TmFtZUZyb21QbGF0Zm9ybUFuZFRlc3Q7Ci19CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL2pzL3N0YXRpc3RpY3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy9qcy9zdGF0aXN0aWNzLmpzCShyZXZpc2lvbiAxOTY2MDMpCisrKyBX
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2pzL3N0YXRpc3RpY3MuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTA3ICswLDAgQEAKLXZhciBTdGF0aXN0aWNzID0gbmV3IChmdW5jdGlvbiAo
KSB7Ci0KLSAgICB0aGlzLnN1bSA9IGZ1bmN0aW9uICh2YWx1ZXMpIHsKLSAgICAgICAgcmV0dXJu
IHZhbHVlcy5sZW5ndGggPyB2YWx1ZXMucmVkdWNlKGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBh
ICsgYjsgfSkgOiAwOwotICAgIH0KLQotICAgIHRoaXMuc3F1YXJlU3VtID0gZnVuY3Rpb24gKHZh
bHVlcykgewotICAgICAgICByZXR1cm4gdmFsdWVzLmxlbmd0aCA/IHZhbHVlcy5yZWR1Y2UoZnVu
Y3Rpb24gKHN1bSwgdmFsdWUpIHsgcmV0dXJuIHN1bSArIHZhbHVlICogdmFsdWU7fSwgMCkgOiAw
OwotICAgIH0KLQotICAgIC8vIFdpdGggc3VtIGFuZCBzdW0gb2Ygc3F1YXJlcywgd2UgY2FuIGNv
bXB1dGUgdGhlIHNhbXBsZSBzdGFuZGFyZCBkZXZpYXRpb24gaW4gTygxKS4KLSAgICAvLyBTZWUg
aHR0cHM6Ly9ybml3YS5jb20vMjAxMi0xMS0xMC9zYW1wbGUtc3RhbmRhcmQtZGV2aWF0aW9uLWlu
LXRlcm1zLW9mLXN1bS1hbmQtc3F1YXJlLXN1bS1vZi1zYW1wbGVzLwotICAgIHRoaXMuc2FtcGxl
U3RhbmRhcmREZXZpYXRpb24gPSBmdW5jdGlvbiAobnVtYmVyT2ZTYW1wbGVzLCBzdW0sIHNxdWFy
ZVN1bSkgewotICAgICAgICBpZiAobnVtYmVyT2ZTYW1wbGVzIDwgMikKLSAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KHNxdWFyZVN1bSAvIChudW1iZXJPZlNh
bXBsZXMgLSAxKSAtIHN1bSAqIHN1bSAvIChudW1iZXJPZlNhbXBsZXMgLSAxKSAvIG51bWJlck9m
U2FtcGxlcyk7Ci0gICAgfQotCi0gICAgdGhpcy5zdXBwb3J0ZWRDb25maWRlbmNlSW50ZXJ2YWxQ
cm9iYWJpbGl0aWVzID0gZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgc3VwcG9ydGVkUHJvYmFi
aWxpdGllcyA9IFtdOwotICAgICAgICBmb3IgKHZhciBxdWFudGlsZSBpbiB0RGlzdHJpYnV0aW9u
UXVhbnRpbGVzKQotICAgICAgICAgICAgc3VwcG9ydGVkUHJvYmFiaWxpdGllcy5wdXNoKCgxIC0g
KDEgLSBxdWFudGlsZSkgKiAyKS50b0ZpeGVkKDIpKTsKLSAgICAgICAgcmV0dXJuIHN1cHBvcnRl
ZFByb2JhYmlsaXRpZXMKLSAgICB9Ci0KLSAgICAvLyBDb21wdXRlcyB0aGUgZGVsdGEgZCBzLnQu
IChtZWFuIC0gZCwgbWVhbiArIGQpIGlzIHRoZSBjb25maWRlbmNlIGludGVydmFsIHdpdGggdGhl
IHNwZWNpZmllZCBwcm9iYWJpbGl0eSBpbiBPKDEpLgotICAgIHRoaXMuY29uZmlkZW5jZUludGVy
dmFsRGVsdGEgPSBmdW5jdGlvbiAocHJvYmFiaWxpdHksIG51bWJlck9mU2FtcGxlcywgc3VtLCBz
cXVhcmVTdW0pIHsKLSAgICAgICAgdmFyIHF1YW50aWxlID0gKDEgLSAoMSAtIHByb2JhYmlsaXR5
KSAvIDIpOwotICAgICAgICBpZiAoIShxdWFudGlsZSBpbiB0RGlzdHJpYnV0aW9uUXVhbnRpbGVz
KSkgewotICAgICAgICAgICAgdGhyb3cgJ1dlIG9ubHkgc3VwcG9ydCAnICsgdGhpcy5zdXBwb3J0
ZWRDb25maWRlbmNlSW50ZXJ2YWxQcm9iYWJpbGl0aWVzKCkubWFwKGZ1bmN0aW9uIChwcm9iYWJp
bGl0eSkKLSAgICAgICAgICAgIHsgcmV0dXJuIHByb2JhYmlsaXR5ICogMTAwICsgJyUnOyB9ICku
am9pbignLCAnKSArICcgY29uZmlkZW5jZSBpbnRlcnZhbHMuJzsKLSAgICAgICAgfQotICAgICAg
ICBpZiAobnVtYmVyT2ZTYW1wbGVzIC0gMiA8IDApCi0gICAgICAgICAgICByZXR1cm4gTmFOOwot
ICAgICAgICB2YXIgZGVsdGFzID0gdERpc3RyaWJ1dGlvblF1YW50aWxlc1txdWFudGlsZV07Ci0g
ICAgICAgIHZhciBkZWdyZWVzT2ZGcmVlZG9tID0gbnVtYmVyT2ZTYW1wbGVzIC0gMTsKLSAgICAg
ICAgaWYgKGRlZ3JlZXNPZkZyZWVkb20gPiBkZWx0YXMubGVuZ3RoKQotICAgICAgICAgICAgdGhy
b3cgJ1dlIG9ubHkgc3VwcG9ydCB1cCB0byAnICsgZGVsdGFzLmxlbmd0aCArICcgZGVncmVlcyBv
ZiBmcmVlZG9tJzsKLQotICAgICAgICAvLyBkID0gYyAqIFMvc3FydChudW1iZXJPZlNhbXBsZXMp
IHdoZXJlIGMgfiB0LWRpc3RyaWJ1dGlvbihkZWdyZWVzT2ZGcmVlZG9tKSBhbmQgUyBpcyB0aGUg
c2FtcGxlIHN0YW5kYXJkIGRldmlhdGlvbi4KLSAgICAgICAgcmV0dXJuIGRlbHRhc1tkZWdyZWVz
T2ZGcmVlZG9tIC0gMV0gKiB0aGlzLnNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uKG51bWJlck9mU2Ft
cGxlcywgc3VtLCBzcXVhcmVTdW0pIC8gTWF0aC5zcXJ0KG51bWJlck9mU2FtcGxlcyk7Ci0gICAg
fQotCi0gICAgdGhpcy5jb25maWRlbmNlSW50ZXJ2YWwgPSBmdW5jdGlvbiAodmFsdWVzLCBwcm9i
YWJpbGl0eSkgewotICAgICAgICB2YXIgc3VtID0gdGhpcy5zdW0odmFsdWVzKTsKLSAgICAgICAg
dmFyIG1lYW4gPSBzdW0gLyB2YWx1ZXMubGVuZ3RoOwotICAgICAgICB2YXIgZGVsdGEgPSB0aGlz
LmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhKHByb2JhYmlsaXR5IHx8IDAuOTUsIHZhbHVlcy5sZW5n
dGgsIHN1bSwgdGhpcy5zcXVhcmVTdW0odmFsdWVzKSk7Ci0gICAgICAgIHJldHVybiBbbWVhbiAt
IGRlbHRhLCBtZWFuICsgZGVsdGFdOwotICAgIH0KLQotICAgIHZhciB0RGlzdHJpYnV0aW9uUXVh
bnRpbGVzID0gewotICAgICAgICAwLjk6IFsKLSAgICAgICAgICAgIDMuMDc3Njg0LCAxLjg4NTYx
OCwgMS42Mzc3NDQsIDEuNTMzMjA2LCAxLjQ3NTg4NCwgMS40Mzk3NTYsIDEuNDE0OTI0LCAxLjM5
NjgxNSwgMS4zODMwMjksIDEuMzcyMTg0LAotICAgICAgICAgICAgMS4zNjM0MzAsIDEuMzU2MjE3
LCAxLjM1MDE3MSwgMS4zNDUwMzAsIDEuMzQwNjA2LCAxLjMzNjc1NywgMS4zMzMzNzksIDEuMzMw
MzkxLCAxLjMyNzcyOCwgMS4zMjUzNDEsCi0gICAgICAgICAgICAxLjMyMzE4OCwgMS4zMjEyMzcs
IDEuMzE5NDYwLCAxLjMxNzgzNiwgMS4zMTYzNDUsIDEuMzE0OTcyLCAxLjMxMzcwMywgMS4zMTI1
MjcsIDEuMzExNDM0LCAxLjMxMDQxNSwKLSAgICAgICAgICAgIDEuMzA5NDY0LCAxLjMwODU3Mywg
MS4zMDc3MzcsIDEuMzA2OTUyLCAxLjMwNjIxMiwgMS4zMDU1MTQsIDEuMzA0ODU0LCAxLjMwNDIz
MCwgMS4zMDM2MzksIDEuMzAzMDc3LAotICAgICAgICAgICAgMS4zMDI1NDMsIDEuMzAyMDM1LCAx
LjMwMTU1MiwgMS4zMDEwOTAsIDEuMzAwNjQ5LCAxLjMwMDIyOCwgMS4yOTk4MjUsIDEuMjk5NDM5
LCAxLjI5OTA2OSwgMS4yOTg3MTQsCi0KLSAgICAgICAgICAgIDEuMjk4MzczLCAxLjI5ODA0NSwg
MS4yOTc3MzAsIDEuMjk3NDI2LCAxLjI5NzEzNCwgMS4yOTY4NTMsIDEuMjk2NTgxLCAxLjI5NjMx
OSwgMS4yOTYwNjYsIDEuMjk1ODIxLAotICAgICAgICAgICAgMS4yOTU1ODUsIDEuMjk1MzU2LCAx
LjI5NTEzNCwgMS4yOTQ5MjAsIDEuMjk0NzEyLCAxLjI5NDUxMSwgMS4yOTQzMTUsIDEuMjk0MTI2
LCAxLjI5Mzk0MiwgMS4yOTM3NjMsCi0gICAgICAgICAgICAxLjI5MzU4OSwgMS4yOTM0MjEsIDEu
MjkzMjU2LCAxLjI5MzA5NywgMS4yOTI5NDEsIDEuMjkyNzkwLCAxLjI5MjY0MywgMS4yOTI1MDAs
IDEuMjkyMzYwLCAxLjI5MjIyNCwKLSAgICAgICAgICAgIDEuMjkyMDkxLCAxLjI5MTk2MSwgMS4y
OTE4MzUsIDEuMjkxNzExLCAxLjI5MTU5MSwgMS4yOTE0NzMsIDEuMjkxMzU4LCAxLjI5MTI0Niwg
MS4yOTExMzYsIDEuMjkxMDI5LAotICAgICAgICAgICAgMS4yOTA5MjQsIDEuMjkwODIxLCAxLjI5
MDcyMSwgMS4yOTA2MjMsIDEuMjkwNTI3LCAxLjI5MDQzMiwgMS4yOTAzNDAsIDEuMjkwMjUwLCAx
LjI5MDE2MSwgMS4yOTAwNzVdLAotICAgICAgICAwLjk1OiBbCi0gICAgICAgICAgICA2LjMxMzc1
MiwgMi45MTk5ODYsIDIuMzUzMzYzLCAyLjEzMTg0NywgMi4wMTUwNDgsIDEuOTQzMTgwLCAxLjg5
NDU3OSwgMS44NTk1NDgsIDEuODMzMTEzLCAxLjgxMjQ2MSwKLSAgICAgICAgICAgIDEuNzk1ODg1
LCAxLjc4MjI4OCwgMS43NzA5MzMsIDEuNzYxMzEwLCAxLjc1MzA1MCwgMS43NDU4ODQsIDEuNzM5
NjA3LCAxLjczNDA2NCwgMS43MjkxMzMsIDEuNzI0NzE4LAotICAgICAgICAgICAgMS43MjA3NDMs
IDEuNzE3MTQ0LCAxLjcxMzg3MiwgMS43MTA4ODIsIDEuNzA4MTQxLCAxLjcwNTYxOCwgMS43MDMy
ODgsIDEuNzAxMTMxLCAxLjY5OTEyNywgMS42OTcyNjEsCi0gICAgICAgICAgICAxLjY5NTUxOSwg
MS42OTM4ODksIDEuNjkyMzYwLCAxLjY5MDkyNCwgMS42ODk1NzIsIDEuNjg4Mjk4LCAxLjY4NzA5
NCwgMS42ODU5NTQsIDEuNjg0ODc1LCAxLjY4Mzg1MSwKLSAgICAgICAgICAgIDEuNjgyODc4LCAx
LjY4MTk1MiwgMS42ODEwNzEsIDEuNjgwMjMwLCAxLjY3OTQyNywgMS42Nzg2NjAsIDEuNjc3OTI3
LCAxLjY3NzIyNCwgMS42NzY1NTEsIDEuNjc1OTA1LAotCi0gICAgICAgICAgICAxLjY3NTI4NSwg
MS42NzQ2ODksIDEuNjc0MTE2LCAxLjY3MzU2NSwgMS42NzMwMzQsIDEuNjcyNTIyLCAxLjY3MjAy
OSwgMS42NzE1NTMsIDEuNjcxMDkzLCAxLjY3MDY0OSwKLSAgICAgICAgICAgIDEuNjcwMjE5LCAx
LjY2OTgwNCwgMS42Njk0MDIsIDEuNjY5MDEzLCAxLjY2ODYzNiwgMS42NjgyNzEsIDEuNjY3OTE2
LCAxLjY2NzU3MiwgMS42NjcyMzksIDEuNjY2OTE0LAotICAgICAgICAgICAgMS42NjY2MDAsIDEu
NjY2Mjk0LCAxLjY2NTk5NiwgMS42NjU3MDcsIDEuNjY1NDI1LCAxLjY2NTE1MSwgMS42NjQ4ODUs
IDEuNjY0NjI1LCAxLjY2NDM3MSwgMS42NjQxMjUsCi0gICAgICAgICAgICAxLjY2Mzg4NCwgMS42
NjM2NDksIDEuNjYzNDIwLCAxLjY2MzE5NywgMS42NjI5NzgsIDEuNjYyNzY1LCAxLjY2MjU1Nywg
MS42NjIzNTQsIDEuNjYyMTU1LCAxLjY2MTk2MSwKLSAgICAgICAgICAgIDEuNjYxNzcxLCAxLjY2
MTU4NSwgMS42NjE0MDQsIDEuNjYxMjI2LCAxLjY2MTA1MiwgMS42NjA4ODEsIDEuNjYwNzE1LCAx
LjY2MDU1MSwgMS42NjAzOTEsIDEuNjYwMjM0XSwKLSAgICAgICAgMC45NzU6IFsKLSAgICAgICAg
ICAgIDEyLjcwNjIwNSwgNC4zMDI2NTMsIDMuMTgyNDQ2LCAyLjc3NjQ0NSwgMi41NzA1ODIsIDIu
NDQ2OTEyLCAyLjM2NDYyNCwgMi4zMDYwMDQsIDIuMjYyMTU3LCAyLjIyODEzOSwKLSAgICAgICAg
ICAgIDIuMjAwOTg1LCAyLjE3ODgxMywgMi4xNjAzNjksIDIuMTQ0Nzg3LCAyLjEzMTQ1MCwgMi4x
MTk5MDUsIDIuMTA5ODE2LCAyLjEwMDkyMiwgMi4wOTMwMjQsIDIuMDg1OTYzLAotICAgICAgICAg
ICAgMi4wNzk2MTQsIDIuMDczODczLCAyLjA2ODY1OCwgMi4wNjM4OTksIDIuMDU5NTM5LCAyLjA1
NTUyOSwgMi4wNTE4MzEsIDIuMDQ4NDA3LCAyLjA0NTIzMCwgMi4wNDIyNzIsCi0gICAgICAgICAg
ICAyLjAzOTUxMywgMi4wMzY5MzMsIDIuMDM0NTE1LCAyLjAzMjI0NSwgMi4wMzAxMDgsIDIuMDI4
MDk0LCAyLjAyNjE5MiwgMi4wMjQzOTQsIDIuMDIyNjkxLCAyLjAyMTA3NSwKLSAgICAgICAgICAg
IDIuMDE5NTQxLCAyLjAxODA4MiwgMi4wMTY2OTIsIDIuMDE1MzY4LCAyLjAxNDEwMywgMi4wMTI4
OTYsIDIuMDExNzQxLCAyLjAxMDYzNSwgMi4wMDk1NzUsIDIuMDA4NTU5LAotCi0gICAgICAgICAg
ICAyLjAwNzU4NCwgMi4wMDY2NDcsIDIuMDA1NzQ2LCAyLjAwNDg3OSwgMi4wMDQwNDUsIDIuMDAz
MjQxLCAyLjAwMjQ2NSwgMi4wMDE3MTcsIDIuMDAwOTk1LCAyLjAwMDI5OCwKLSAgICAgICAgICAg
IDEuOTk5NjI0LCAxLjk5ODk3MiwgMS45OTgzNDEsIDEuOTk3NzMwLCAxLjk5NzEzOCwgMS45OTY1
NjQsIDEuOTk2MDA4LCAxLjk5NTQ2OSwgMS45OTQ5NDUsIDEuOTk0NDM3LAotICAgICAgICAgICAg
MS45OTM5NDMsIDEuOTkzNDY0LCAxLjk5Mjk5NywgMS45OTI1NDMsIDEuOTkyMTAyLCAxLjk5MTY3
MywgMS45OTEyNTQsIDEuOTkwODQ3LCAxLjk5MDQ1MCwgMS45OTAwNjMsCi0gICAgICAgICAgICAx
Ljk4OTY4NiwgMS45ODkzMTksIDEuOTg4OTYwLCAxLjk4ODYxMCwgMS45ODgyNjgsIDEuOTg3OTM0
LCAxLjk4NzYwOCwgMS45ODcyOTAsIDEuOTg2OTc5LCAxLjk4NjY3NSwKLSAgICAgICAgICAgIDEu
OTg2Mzc3LCAxLjk4NjA4NiwgMS45ODU4MDIsIDEuOTg1NTIzLCAxLjk4NTI1MSwgMS45ODQ5ODQs
IDEuOTg0NzIzLCAxLjk4NDQ2NywgMS45ODQyMTcsIDEuOTgzOTcyXSwKLSAgICAgICAgMC45OTog
WwotICAgICAgICAgICAgMzEuODIwNTE2LCA2Ljk2NDU1NywgNC41NDA3MDMsIDMuNzQ2OTQ3LCAz
LjM2NDkzMCwgMy4xNDI2NjgsIDIuOTk3OTUyLCAyLjg5NjQ1OSwgMi44MjE0MzgsIDIuNzYzNzY5
LAotICAgICAgICAgICAgMi43MTgwNzksIDIuNjgwOTk4LCAyLjY1MDMwOSwgMi42MjQ0OTQsIDIu
NjAyNDgwLCAyLjU4MzQ4NywgMi41NjY5MzQsIDIuNTUyMzgwLCAyLjUzOTQ4MywgMi41Mjc5Nzcs
Ci0gICAgICAgICAgICAyLjUxNzY0OCwgMi41MDgzMjUsIDIuNDk5ODY3LCAyLjQ5MjE1OSwgMi40
ODUxMDcsIDIuNDc4NjMwLCAyLjQ3MjY2MCwgMi40NjcxNDAsIDIuNDYyMDIxLCAyLjQ1NzI2MiwK
LSAgICAgICAgICAgIDIuNDUyODI0LCAyLjQ0ODY3OCwgMi40NDQ3OTQsIDIuNDQxMTUwLCAyLjQz
NzcyMywgMi40MzQ0OTQsIDIuNDMxNDQ3LCAyLjQyODU2OCwgMi40MjU4NDEsIDIuNDIzMjU3LAot
ICAgICAgICAgICAgMi40MjA4MDMsIDIuNDE4NDcwLCAyLjQxNjI1MCwgMi40MTQxMzQsIDIuNDEy
MTE2LCAyLjQxMDE4OCwgMi40MDgzNDUsIDIuNDA2NTgxLCAyLjQwNDg5MiwgMi40MDMyNzIsCi0K
LSAgICAgICAgICAgIDIuNDAxNzE4LCAyLjQwMDIyNSwgMi4zOTg3OTAsIDIuMzk3NDEwLCAyLjM5
NjA4MSwgMi4zOTQ4MDEsIDIuMzkzNTY4LCAyLjM5MjM3NywgMi4zOTEyMjksIDIuMzkwMTE5LAot
ICAgICAgICAgICAgMi4zODkwNDcsIDIuMzg4MDExLCAyLjM4NzAwOCwgMi4zODYwMzcsIDIuMzg1
MDk3LCAyLjM4NDE4NiwgMi4zODMzMDIsIDIuMzgyNDQ2LCAyLjM4MTYxNSwgMi4zODA4MDcsCi0g
ICAgICAgICAgICAyLjM4MDAyNCwgMi4zNzkyNjIsIDIuMzc4NTIyLCAyLjM3NzgwMiwgMi4zNzcx
MDIsIDIuMzc2NDIwLCAyLjM3NTc1NywgMi4zNzUxMTEsIDIuMzc0NDgyLCAyLjM3Mzg2OCwKLSAg
ICAgICAgICAgIDIuMzczMjcwLCAyLjM3MjY4NywgMi4zNzIxMTksIDIuMzcxNTY0LCAyLjM3MTAy
MiwgMi4zNzA0OTMsIDIuMzY5OTc3LCAyLjM2OTQ3MiwgMi4zNjg5NzksIDIuMzY4NDk3LAotICAg
ICAgICAgICAgMi4zNjgwMjYsIDIuMzY3NTY2LCAyLjM2NzExNSwgMi4zNjY2NzQsIDIuMzY2MjQz
LCAyLjM2NTgyMSwgMi4zNjU0MDcsIDIuMzY1MDAyLCAyLjM2NDYwNiwgMi4zNjQyMTddCi0gICAg
fTsKLQotfSkoKTsKLQotaWYgKHR5cGVvZiBtb2R1bGUgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICBm
b3IgKHZhciBrZXkgaW4gU3RhdGlzdGljcykKLSAgICAgICAgbW9kdWxlLmV4cG9ydHNba2V5XSA9
IFN0YXRpc3RpY3Nba2V5XTsKLX0KSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvc2hhcmVkL3N0YXRpc3RpY3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy9zaGFyZWQvc3RhdGlzdGljcy5qcwkocmV2aXNpb24gMTk2NjAzKQkoZnJv
bSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YyL2pzL3N0YXRpc3RpY3MuanM6MTk2
NjAzKQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9zaGFyZWQvc3RhdGlzdGlj
cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4MyBAQAordmFyIFN0YXRpc3RpY3MgPSBu
ZXcgKGZ1bmN0aW9uICgpIHsKKworICAgIHRoaXMubWluID0gZnVuY3Rpb24gKHZhbHVlcykgewor
ICAgICAgICByZXR1cm4gTWF0aC5taW4uYXBwbHkoTWF0aCwgdmFsdWVzKTsKKyAgICB9CisKKyAg
ICB0aGlzLm1heCA9IGZ1bmN0aW9uICh2YWx1ZXMpIHsKKyAgICAgICAgcmV0dXJuIE1hdGgubWF4
LmFwcGx5KE1hdGgsIHZhbHVlcyk7CisgICAgfQorCisgICAgdGhpcy5zdW0gPSBmdW5jdGlvbiAo
dmFsdWVzKSB7CisgICAgICAgIHJldHVybiB2YWx1ZXMubGVuZ3RoID8gdmFsdWVzLnJlZHVjZShm
dW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSArIGI7IH0pIDogMDsKKyAgICB9CisKKyAgICB0aGlz
LnNxdWFyZVN1bSA9IGZ1bmN0aW9uICh2YWx1ZXMpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlcy5s
ZW5ndGggPyB2YWx1ZXMucmVkdWNlKGZ1bmN0aW9uIChzdW0sIHZhbHVlKSB7IHJldHVybiBzdW0g
KyB2YWx1ZSAqIHZhbHVlO30sIDApIDogMDsKKyAgICB9CisKKyAgICAvLyBXaXRoIHN1bSBhbmQg
c3VtIG9mIHNxdWFyZXMsIHdlIGNhbiBjb21wdXRlIHRoZSBzYW1wbGUgc3RhbmRhcmQgZGV2aWF0
aW9uIGluIE8oMSkuCisgICAgLy8gU2VlIGh0dHBzOi8vcm5pd2EuY29tLzIwMTItMTEtMTAvc2Ft
cGxlLXN0YW5kYXJkLWRldmlhdGlvbi1pbi10ZXJtcy1vZi1zdW0tYW5kLXNxdWFyZS1zdW0tb2Yt
c2FtcGxlcy8KKyAgICB0aGlzLnNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uID0gZnVuY3Rpb24gKG51
bWJlck9mU2FtcGxlcywgc3VtLCBzcXVhcmVTdW0pIHsKKyAgICAgICAgaWYgKG51bWJlck9mU2Ft
cGxlcyA8IDIpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIE1hdGguc3Fy
dChzcXVhcmVTdW0gLyAobnVtYmVyT2ZTYW1wbGVzIC0gMSkgLSBzdW0gKiBzdW0gLyAobnVtYmVy
T2ZTYW1wbGVzIC0gMSkgLyBudW1iZXJPZlNhbXBsZXMpOworICAgIH0KKworICAgIHRoaXMuc3Vw
cG9ydGVkQ29uZmlkZW5jZUludGVydmFsUHJvYmFiaWxpdGllcyA9IGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgdmFyIHN1cHBvcnRlZFByb2JhYmlsaXRpZXMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIg
cHJvYmFiaWxpdHkgaW4gdERpc3RyaWJ1dGlvbkJ5T25lU2lkZWRQcm9iYWJpbGl0eSkKKyAgICAg
ICAgICAgIHN1cHBvcnRlZFByb2JhYmlsaXRpZXMucHVzaChvbmVTaWRlZFRvVHdvU2lkZWRQcm9i
YWJpbGl0eShwcm9iYWJpbGl0eSkudG9GaXhlZCgyKSk7CisgICAgICAgIHJldHVybiBzdXBwb3J0
ZWRQcm9iYWJpbGl0aWVzCisgICAgfQorCisgICAgLy8gQ29tcHV0ZXMgdGhlIGRlbHRhIGQgcy50
LiAobWVhbiAtIGQsIG1lYW4gKyBkKSBpcyB0aGUgY29uZmlkZW5jZSBpbnRlcnZhbCB3aXRoIHRo
ZSBzcGVjaWZpZWQgcHJvYmFiaWxpdHkgaW4gTygxKS4KKyAgICB0aGlzLmNvbmZpZGVuY2VJbnRl
cnZhbERlbHRhID0gZnVuY3Rpb24gKHByb2JhYmlsaXR5LCBudW1iZXJPZlNhbXBsZXMsIHN1bSwg
c3F1YXJlU3VtKSB7CisgICAgICAgIHZhciBvbmVTaWRlZFByb2JhYmlsaXR5ID0gdHdvU2lkZWRU
b09uZVNpZGVkUHJvYmFiaWxpdHkocHJvYmFiaWxpdHkpOworICAgICAgICBpZiAoIShvbmVTaWRl
ZFByb2JhYmlsaXR5IGluIHREaXN0cmlidXRpb25CeU9uZVNpZGVkUHJvYmFiaWxpdHkpKSB7Cisg
ICAgICAgICAgICB0aHJvdyAnV2Ugb25seSBzdXBwb3J0ICcgKyB0aGlzLnN1cHBvcnRlZENvbmZp
ZGVuY2VJbnRlcnZhbFByb2JhYmlsaXRpZXMoKS5tYXAoZnVuY3Rpb24gKHByb2JhYmlsaXR5KQor
ICAgICAgICAgICAgeyByZXR1cm4gcHJvYmFiaWxpdHkgKiAxMDAgKyAnJSc7IH0gKS5qb2luKCcs
ICcpICsgJyBjb25maWRlbmNlIGludGVydmFscy4nOworICAgICAgICB9CisgICAgICAgIGlmIChu
dW1iZXJPZlNhbXBsZXMgLSAyIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOYU47CisgICAgICAg
IHZhciBkZWx0YXMgPSB0RGlzdHJpYnV0aW9uQnlPbmVTaWRlZFByb2JhYmlsaXR5W29uZVNpZGVk
UHJvYmFiaWxpdHldOworICAgICAgICB2YXIgZGVncmVlc09mRnJlZWRvbSA9IG51bWJlck9mU2Ft
cGxlcyAtIDE7CisgICAgICAgIGlmIChkZWdyZWVzT2ZGcmVlZG9tID4gZGVsdGFzLmxlbmd0aCkK
KyAgICAgICAgICAgIHRocm93ICdXZSBvbmx5IHN1cHBvcnQgdXAgdG8gJyArIGRlbHRhcy5sZW5n
dGggKyAnIGRlZ3JlZXMgb2YgZnJlZWRvbSc7CisKKyAgICAgICAgLy8gZCA9IGMgKiBTL3NxcnQo
bnVtYmVyT2ZTYW1wbGVzKSB3aGVyZSBjIH4gdC1kaXN0cmlidXRpb24oZGVncmVlc09mRnJlZWRv
bSkgYW5kIFMgaXMgdGhlIHNhbXBsZSBzdGFuZGFyZCBkZXZpYXRpb24uCisgICAgICAgIHJldHVy
biBkZWx0YXNbZGVncmVlc09mRnJlZWRvbSAtIDFdICogdGhpcy5zYW1wbGVTdGFuZGFyZERldmlh
dGlvbihudW1iZXJPZlNhbXBsZXMsIHN1bSwgc3F1YXJlU3VtKSAvIE1hdGguc3FydChudW1iZXJP
ZlNhbXBsZXMpOworICAgIH0KKworICAgIHRoaXMuY29uZmlkZW5jZUludGVydmFsID0gZnVuY3Rp
b24gKHZhbHVlcywgcHJvYmFiaWxpdHkpIHsKKyAgICAgICAgdmFyIHN1bSA9IHRoaXMuc3VtKHZh
bHVlcyk7CisgICAgICAgIHZhciBtZWFuID0gc3VtIC8gdmFsdWVzLmxlbmd0aDsKKyAgICAgICAg
dmFyIGRlbHRhID0gdGhpcy5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YShwcm9iYWJpbGl0eSB8fCAw
Ljk1LCB2YWx1ZXMubGVuZ3RoLCBzdW0sIHRoaXMuc3F1YXJlU3VtKHZhbHVlcykpOworICAgICAg
ICByZXR1cm4gW21lYW4gLSBkZWx0YSwgbWVhbiArIGRlbHRhXTsKKyAgICB9CisKKyAgICAvLyBX
ZWxjaCdzIHQtdGVzdCAoaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XZWxjaCUyN3NfdF90
ZXN0KQorICAgIHRoaXMudGVzdFdlbGNoc1QgPSBmdW5jdGlvbiAodmFsdWVzMSwgdmFsdWVzMiwg
cHJvYmFiaWxpdHkpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuY29tcHV0ZVdlbGNoc1QodmFsdWVz
MSwgMCwgdmFsdWVzMS5sZW5ndGgsIHZhbHVlczIsIDAsIHZhbHVlczIubGVuZ3RoLCBwcm9iYWJp
bGl0eSkuc2lnbmlmaWNhbnRseURpZmZlcmVudDsKKyAgICB9CisKKyAgICB0aGlzLnByb2JhYmls
aXR5UmFuZ2VGb3JXZWxjaHNUID0gZnVuY3Rpb24gKHZhbHVlczEsIHZhbHVlczIpIHsKKyAgICAg
ICAgdmFyIHJlc3VsdCA9IHRoaXMuY29tcHV0ZVdlbGNoc1QodmFsdWVzMSwgMCwgdmFsdWVzMS5s
ZW5ndGgsIHZhbHVlczIsIDAsIHZhbHVlczIubGVuZ3RoKTsKKyAgICAgICAgaWYgKGlzTmFOKHJl
c3VsdC50KSB8fCBpc05hTihyZXN1bHQuZGVncmVlc09mRnJlZWRvbSkpCisgICAgICAgICAgICBy
ZXR1cm4ge3Q6IE5hTiwgZGVncmVlc09mRnJlZWRvbTpOYU4sIHJhbmdlOiBbbnVsbCwgbnVsbF19
OworCisgICAgICAgIHZhciBsb3dlckJvdW5kID0gbnVsbDsKKyAgICAgICAgdmFyIHVwcGVyQm91
bmQgPSBudWxsOworICAgICAgICBmb3IgKHZhciBwcm9iYWJpbGl0eSBpbiB0RGlzdHJpYnV0aW9u
QnlPbmVTaWRlZFByb2JhYmlsaXR5KSB7CisgICAgICAgICAgICB2YXIgdHdvU2lkZWRQcm9iYWJp
bGl0eSA9IG9uZVNpZGVkVG9Ud29TaWRlZFByb2JhYmlsaXR5KHByb2JhYmlsaXR5KTsKKyAgICAg
ICAgICAgIGlmIChyZXN1bHQudCA+IHREaXN0cmlidXRpb25CeU9uZVNpZGVkUHJvYmFiaWxpdHlb
cHJvYmFiaWxpdHldW01hdGgucm91bmQocmVzdWx0LmRlZ3JlZXNPZkZyZWVkb20gLSAxKV0pCisg
ICAgICAgICAgICAgICAgbG93ZXJCb3VuZCA9IHR3b1NpZGVkUHJvYmFiaWxpdHk7CisgICAgICAg
ICAgICBlbHNlIGlmIChsb3dlckJvdW5kKSB7CisgICAgICAgICAgICAgICAgdXBwZXJCb3VuZCA9
IHR3b1NpZGVkUHJvYmFiaWxpdHk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHt0OiByZXN1bHQudCwgZGVncmVlc09mRnJl
ZWRvbTogcmVzdWx0LmRlZ3JlZXNPZkZyZWVkb20sIHJhbmdlOiBbbG93ZXJCb3VuZCwgdXBwZXJC
b3VuZF19OworICAgIH0KKworICAgIHRoaXMuY29tcHV0ZVdlbGNoc1QgPSBmdW5jdGlvbiAodmFs
dWVzMSwgc3RhcnRJbmRleDEsIGxlbmd0aDEsIHZhbHVlczIsIHN0YXJ0SW5kZXgyLCBsZW5ndGgy
LCBwcm9iYWJpbGl0eSkgeworICAgICAgICB2YXIgc3RhdDEgPSBzYW1wbGVNZWFuQW5kVmFyaWFu
Y2VGb3JWYWx1ZXModmFsdWVzMSwgc3RhcnRJbmRleDEsIGxlbmd0aDEpOworICAgICAgICB2YXIg
c3RhdDIgPSBzYW1wbGVNZWFuQW5kVmFyaWFuY2VGb3JWYWx1ZXModmFsdWVzMiwgc3RhcnRJbmRl
eDIsIGxlbmd0aDIpOworICAgICAgICB2YXIgc3VtT2ZTYW1wbGVWYXJpYW5jZU92ZXJTYW1wbGVT
aXplID0gc3RhdDEudmFyaWFuY2UgLyBzdGF0MS5zaXplICsgc3RhdDIudmFyaWFuY2UgLyBzdGF0
Mi5zaXplOworICAgICAgICB2YXIgdCA9IE1hdGguYWJzKChzdGF0MS5tZWFuIC0gc3RhdDIubWVh
bikgLyBNYXRoLnNxcnQoc3VtT2ZTYW1wbGVWYXJpYW5jZU92ZXJTYW1wbGVTaXplKSk7CisKKyAg
ICAgICAgLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XZWxjaOKAk1NhdHRlcnRod2Fp
dGVfZXF1YXRpb24KKyAgICAgICAgdmFyIGRlZ3JlZXNPZkZyZWVkb20gPSBzdW1PZlNhbXBsZVZh
cmlhbmNlT3ZlclNhbXBsZVNpemUgKiBzdW1PZlNhbXBsZVZhcmlhbmNlT3ZlclNhbXBsZVNpemUK
KyAgICAgICAgICAgIC8gKHN0YXQxLnZhcmlhbmNlICogc3RhdDEudmFyaWFuY2UgLyBzdGF0MS5z
aXplIC8gc3RhdDEuc2l6ZSAvIHN0YXQxLmRlZ3JlZXNPZkZyZWVkb20KKyAgICAgICAgICAgICAg
ICArIHN0YXQyLnZhcmlhbmNlICogc3RhdDIudmFyaWFuY2UgLyBzdGF0Mi5zaXplIC8gc3RhdDIu
c2l6ZSAvIHN0YXQyLmRlZ3JlZXNPZkZyZWVkb20pOworICAgICAgICB2YXIgbWluVCA9IHREaXN0
cmlidXRpb25CeU9uZVNpZGVkUHJvYmFiaWxpdHlbdHdvU2lkZWRUb09uZVNpZGVkUHJvYmFiaWxp
dHkocHJvYmFiaWxpdHkgfHwgMC44KV1bTWF0aC5yb3VuZChkZWdyZWVzT2ZGcmVlZG9tIC0gMSld
OworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgdDogdCwKKyAgICAgICAgICAgIGRlZ3Jl
ZXNPZkZyZWVkb206IGRlZ3JlZXNPZkZyZWVkb20sCisgICAgICAgICAgICBzaWduaWZpY2FudGx5
RGlmZmVyZW50OiB0ID4gbWluVCwKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBz
YW1wbGVNZWFuQW5kVmFyaWFuY2VGb3JWYWx1ZXModmFsdWVzLCBzdGFydEluZGV4LCBsZW5ndGgp
IHsKKyAgICAgICAgdmFyIHN1bSA9IDA7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspCisgICAgICAgICAgICBzdW0gKz0gdmFsdWVzW3N0YXJ0SW5kZXggKyBpXTsKKyAg
ICAgICAgdmFyIHNxdWFyZVN1bSA9IDA7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspCisgICAgICAgICAgICBzcXVhcmVTdW0gKz0gdmFsdWVzW3N0YXJ0SW5kZXggKyBp
XSAqIHZhbHVlc1tzdGFydEluZGV4ICsgaV07CisgICAgICAgIHZhciBzYW1wbGVNZWFuID0gc3Vt
IC8gbGVuZ3RoOworICAgICAgICAvLyBGSVhNRTogTWF5YmUgd2Ugc2hvdWxkIGJlIHVzaW5nIHRo
ZSBiaWFzZWQgc2FtcGxlIHZhcmlhbmNlLgorICAgICAgICB2YXIgdW5iaWFzZWRTYW1wbGVWYXJp
YW5jZSA9IChzcXVhcmVTdW0gLSBzdW0gKiBzdW0gLyBsZW5ndGgpIC8gKGxlbmd0aCAtIDEpOwor
ICAgICAgICByZXR1cm4geworICAgICAgICAgICAgbWVhbjogc2FtcGxlTWVhbiwKKyAgICAgICAg
ICAgIHZhcmlhbmNlOiB1bmJpYXNlZFNhbXBsZVZhcmlhbmNlLAorICAgICAgICAgICAgc2l6ZTog
bGVuZ3RoLAorICAgICAgICAgICAgZGVncmVlc09mRnJlZWRvbTogbGVuZ3RoIC0gMSwKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHJlY3Vyc2l2ZWx5U3BsaXRJbnRvVHdvU2VnbWVu
dHNBdE1heFRJZlNpZ25pZmljYW50bHlEaWZmZXJlbnQodmFsdWVzLCBzdGFydEluZGV4LCBsZW5n
dGgsIG1pbkxlbmd0aCwgc2VnbWVudHMpIHsKKyAgICAgICAgdmFyIHRNYXggPSAwOworICAgICAg
ICB2YXIgYXJnVE1heCA9IG51bGw7CisgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuZ3Ro
IC0gMTsgaSsrKSB7CisgICAgICAgICAgICB2YXIgZmlyc3RMZW5ndGggPSBpOworICAgICAgICAg
ICAgdmFyIHNlY29uZExlbmd0aCA9IGxlbmd0aCAtIGk7CisgICAgICAgICAgICBpZiAoZmlyc3RM
ZW5ndGggPCBtaW5MZW5ndGggfHwgc2Vjb25kTGVuZ3RoIDwgbWluTGVuZ3RoKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFN0YXRpc3RpY3MuY29t
cHV0ZVdlbGNoc1QodmFsdWVzLCBzdGFydEluZGV4LCBmaXJzdExlbmd0aCwgdmFsdWVzLCBzdGFy
dEluZGV4ICsgaSwgc2Vjb25kTGVuZ3RoLCAwLjkpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5z
aWduaWZpY2FudGx5RGlmZmVyZW50ICYmIHJlc3VsdC50ID4gdE1heCkgeworICAgICAgICAgICAg
ICAgIHRNYXggPSByZXN1bHQudDsKKyAgICAgICAgICAgICAgICBhcmdUTWF4ID0gaTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIXRNYXgpIHsKKyAgICAgICAgICAgIHNl
Z21lbnRzLnB1c2godmFsdWVzLnNsaWNlKHN0YXJ0SW5kZXgsIHN0YXJ0SW5kZXggKyBsZW5ndGgp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICByZWN1cnNpdmVseVNw
bGl0SW50b1R3b1NlZ21lbnRzQXRNYXhUSWZTaWduaWZpY2FudGx5RGlmZmVyZW50KHZhbHVlcywg
c3RhcnRJbmRleCwgYXJnVE1heCwgbWluTGVuZ3RoLCBzZWdtZW50cyk7CisgICAgICAgIHJlY3Vy
c2l2ZWx5U3BsaXRJbnRvVHdvU2VnbWVudHNBdE1heFRJZlNpZ25pZmljYW50bHlEaWZmZXJlbnQo
dmFsdWVzLCBzdGFydEluZGV4ICsgYXJnVE1heCwgbGVuZ3RoIC0gYXJnVE1heCwgbWluTGVuZ3Ro
LCBzZWdtZW50cyk7CisgICAgfQorCisgICAgdmFyIHREaXN0cmlidXRpb25CeU9uZVNpZGVkUHJv
YmFiaWxpdHkgPSB7CisgICAgICAgIDAuOTogWworICAgICAgICAgICAgMy4wNzc2ODQsIDEuODg1
NjE4LCAxLjYzNzc0NCwgMS41MzMyMDYsIDEuNDc1ODg0LCAxLjQzOTc1NiwgMS40MTQ5MjQsIDEu
Mzk2ODE1LCAxLjM4MzAyOSwgMS4zNzIxODQsCisgICAgICAgICAgICAxLjM2MzQzMCwgMS4zNTYy
MTcsIDEuMzUwMTcxLCAxLjM0NTAzMCwgMS4zNDA2MDYsIDEuMzM2NzU3LCAxLjMzMzM3OSwgMS4z
MzAzOTEsIDEuMzI3NzI4LCAxLjMyNTM0MSwKKyAgICAgICAgICAgIDEuMzIzMTg4LCAxLjMyMTIz
NywgMS4zMTk0NjAsIDEuMzE3ODM2LCAxLjMxNjM0NSwgMS4zMTQ5NzIsIDEuMzEzNzAzLCAxLjMx
MjUyNywgMS4zMTE0MzQsIDEuMzEwNDE1LAorICAgICAgICAgICAgMS4zMDk0NjQsIDEuMzA4NTcz
LCAxLjMwNzczNywgMS4zMDY5NTIsIDEuMzA2MjEyLCAxLjMwNTUxNCwgMS4zMDQ4NTQsIDEuMzA0
MjMwLCAxLjMwMzYzOSwgMS4zMDMwNzcsCisgICAgICAgICAgICAxLjMwMjU0MywgMS4zMDIwMzUs
IDEuMzAxNTUyLCAxLjMwMTA5MCwgMS4zMDA2NDksIDEuMzAwMjI4LCAxLjI5OTgyNSwgMS4yOTk0
MzksIDEuMjk5MDY5LCAxLjI5ODcxNCwKKworICAgICAgICAgICAgMS4yOTgzNzMsIDEuMjk4MDQ1
LCAxLjI5NzczMCwgMS4yOTc0MjYsIDEuMjk3MTM0LCAxLjI5Njg1MywgMS4yOTY1ODEsIDEuMjk2
MzE5LCAxLjI5NjA2NiwgMS4yOTU4MjEsCisgICAgICAgICAgICAxLjI5NTU4NSwgMS4yOTUzNTYs
IDEuMjk1MTM0LCAxLjI5NDkyMCwgMS4yOTQ3MTIsIDEuMjk0NTExLCAxLjI5NDMxNSwgMS4yOTQx
MjYsIDEuMjkzOTQyLCAxLjI5Mzc2MywKKyAgICAgICAgICAgIDEuMjkzNTg5LCAxLjI5MzQyMSwg
MS4yOTMyNTYsIDEuMjkzMDk3LCAxLjI5Mjk0MSwgMS4yOTI3OTAsIDEuMjkyNjQzLCAxLjI5MjUw
MCwgMS4yOTIzNjAsIDEuMjkyMjI0LAorICAgICAgICAgICAgMS4yOTIwOTEsIDEuMjkxOTYxLCAx
LjI5MTgzNSwgMS4yOTE3MTEsIDEuMjkxNTkxLCAxLjI5MTQ3MywgMS4yOTEzNTgsIDEuMjkxMjQ2
LCAxLjI5MTEzNiwgMS4yOTEwMjksCisgICAgICAgICAgICAxLjI5MDkyNCwgMS4yOTA4MjEsIDEu
MjkwNzIxLCAxLjI5MDYyMywgMS4yOTA1MjcsIDEuMjkwNDMyLCAxLjI5MDM0MCwgMS4yOTAyNTAs
IDEuMjkwMTYxLCAxLjI5MDA3NV0sCisgICAgICAgIDAuOTU6IFsKKyAgICAgICAgICAgIDYuMzEz
NzUyLCAyLjkxOTk4NiwgMi4zNTMzNjMsIDIuMTMxODQ3LCAyLjAxNTA0OCwgMS45NDMxODAsIDEu
ODk0NTc5LCAxLjg1OTU0OCwgMS44MzMxMTMsIDEuODEyNDYxLAorICAgICAgICAgICAgMS43OTU4
ODUsIDEuNzgyMjg4LCAxLjc3MDkzMywgMS43NjEzMTAsIDEuNzUzMDUwLCAxLjc0NTg4NCwgMS43
Mzk2MDcsIDEuNzM0MDY0LCAxLjcyOTEzMywgMS43MjQ3MTgsCisgICAgICAgICAgICAxLjcyMDc0
MywgMS43MTcxNDQsIDEuNzEzODcyLCAxLjcxMDg4MiwgMS43MDgxNDEsIDEuNzA1NjE4LCAxLjcw
MzI4OCwgMS43MDExMzEsIDEuNjk5MTI3LCAxLjY5NzI2MSwKKyAgICAgICAgICAgIDEuNjk1NTE5
LCAxLjY5Mzg4OSwgMS42OTIzNjAsIDEuNjkwOTI0LCAxLjY4OTU3MiwgMS42ODgyOTgsIDEuNjg3
MDk0LCAxLjY4NTk1NCwgMS42ODQ4NzUsIDEuNjgzODUxLAorICAgICAgICAgICAgMS42ODI4Nzgs
IDEuNjgxOTUyLCAxLjY4MTA3MSwgMS42ODAyMzAsIDEuNjc5NDI3LCAxLjY3ODY2MCwgMS42Nzc5
MjcsIDEuNjc3MjI0LCAxLjY3NjU1MSwgMS42NzU5MDUsCisKKyAgICAgICAgICAgIDEuNjc1Mjg1
LCAxLjY3NDY4OSwgMS42NzQxMTYsIDEuNjczNTY1LCAxLjY3MzAzNCwgMS42NzI1MjIsIDEuNjcy
MDI5LCAxLjY3MTU1MywgMS42NzEwOTMsIDEuNjcwNjQ5LAorICAgICAgICAgICAgMS42NzAyMTks
IDEuNjY5ODA0LCAxLjY2OTQwMiwgMS42NjkwMTMsIDEuNjY4NjM2LCAxLjY2ODI3MSwgMS42Njc5
MTYsIDEuNjY3NTcyLCAxLjY2NzIzOSwgMS42NjY5MTQsCisgICAgICAgICAgICAxLjY2NjYwMCwg
MS42NjYyOTQsIDEuNjY1OTk2LCAxLjY2NTcwNywgMS42NjU0MjUsIDEuNjY1MTUxLCAxLjY2NDg4
NSwgMS42NjQ2MjUsIDEuNjY0MzcxLCAxLjY2NDEyNSwKKyAgICAgICAgICAgIDEuNjYzODg0LCAx
LjY2MzY0OSwgMS42NjM0MjAsIDEuNjYzMTk3LCAxLjY2Mjk3OCwgMS42NjI3NjUsIDEuNjYyNTU3
LCAxLjY2MjM1NCwgMS42NjIxNTUsIDEuNjYxOTYxLAorICAgICAgICAgICAgMS42NjE3NzEsIDEu
NjYxNTg1LCAxLjY2MTQwNCwgMS42NjEyMjYsIDEuNjYxMDUyLCAxLjY2MDg4MSwgMS42NjA3MTUs
IDEuNjYwNTUxLCAxLjY2MDM5MSwgMS42NjAyMzRdLAorICAgICAgICAwLjk3NTogWworICAgICAg
ICAgICAgMTIuNzA2MjA1LCA0LjMwMjY1MywgMy4xODI0NDYsIDIuNzc2NDQ1LCAyLjU3MDU4Miwg
Mi40NDY5MTIsIDIuMzY0NjI0LCAyLjMwNjAwNCwgMi4yNjIxNTcsIDIuMjI4MTM5LAorICAgICAg
ICAgICAgMi4yMDA5ODUsIDIuMTc4ODEzLCAyLjE2MDM2OSwgMi4xNDQ3ODcsIDIuMTMxNDUwLCAy
LjExOTkwNSwgMi4xMDk4MTYsIDIuMTAwOTIyLCAyLjA5MzAyNCwgMi4wODU5NjMsCisgICAgICAg
ICAgICAyLjA3OTYxNCwgMi4wNzM4NzMsIDIuMDY4NjU4LCAyLjA2Mzg5OSwgMi4wNTk1MzksIDIu
MDU1NTI5LCAyLjA1MTgzMSwgMi4wNDg0MDcsIDIuMDQ1MjMwLCAyLjA0MjI3MiwKKyAgICAgICAg
ICAgIDIuMDM5NTEzLCAyLjAzNjkzMywgMi4wMzQ1MTUsIDIuMDMyMjQ1LCAyLjAzMDEwOCwgMi4w
MjgwOTQsIDIuMDI2MTkyLCAyLjAyNDM5NCwgMi4wMjI2OTEsIDIuMDIxMDc1LAorICAgICAgICAg
ICAgMi4wMTk1NDEsIDIuMDE4MDgyLCAyLjAxNjY5MiwgMi4wMTUzNjgsIDIuMDE0MTAzLCAyLjAx
Mjg5NiwgMi4wMTE3NDEsIDIuMDEwNjM1LCAyLjAwOTU3NSwgMi4wMDg1NTksCisKKyAgICAgICAg
ICAgIDIuMDA3NTg0LCAyLjAwNjY0NywgMi4wMDU3NDYsIDIuMDA0ODc5LCAyLjAwNDA0NSwgMi4w
MDMyNDEsIDIuMDAyNDY1LCAyLjAwMTcxNywgMi4wMDA5OTUsIDIuMDAwMjk4LAorICAgICAgICAg
ICAgMS45OTk2MjQsIDEuOTk4OTcyLCAxLjk5ODM0MSwgMS45OTc3MzAsIDEuOTk3MTM4LCAxLjk5
NjU2NCwgMS45OTYwMDgsIDEuOTk1NDY5LCAxLjk5NDk0NSwgMS45OTQ0MzcsCisgICAgICAgICAg
ICAxLjk5Mzk0MywgMS45OTM0NjQsIDEuOTkyOTk3LCAxLjk5MjU0MywgMS45OTIxMDIsIDEuOTkx
NjczLCAxLjk5MTI1NCwgMS45OTA4NDcsIDEuOTkwNDUwLCAxLjk5MDA2MywKKyAgICAgICAgICAg
IDEuOTg5Njg2LCAxLjk4OTMxOSwgMS45ODg5NjAsIDEuOTg4NjEwLCAxLjk4ODI2OCwgMS45ODc5
MzQsIDEuOTg3NjA4LCAxLjk4NzI5MCwgMS45ODY5NzksIDEuOTg2Njc1LAorICAgICAgICAgICAg
MS45ODYzNzcsIDEuOTg2MDg2LCAxLjk4NTgwMiwgMS45ODU1MjMsIDEuOTg1MjUxLCAxLjk4NDk4
NCwgMS45ODQ3MjMsIDEuOTg0NDY3LCAxLjk4NDIxNywgMS45ODM5NzJdLAorICAgICAgICAwLjk5
OiBbCisgICAgICAgICAgICAzMS44MjA1MTYsIDYuOTY0NTU3LCA0LjU0MDcwMywgMy43NDY5NDcs
IDMuMzY0OTMwLCAzLjE0MjY2OCwgMi45OTc5NTIsIDIuODk2NDU5LCAyLjgyMTQzOCwgMi43NjM3
NjksCisgICAgICAgICAgICAyLjcxODA3OSwgMi42ODA5OTgsIDIuNjUwMzA5LCAyLjYyNDQ5NCwg
Mi42MDI0ODAsIDIuNTgzNDg3LCAyLjU2NjkzNCwgMi41NTIzODAsIDIuNTM5NDgzLCAyLjUyNzk3
NywKKyAgICAgICAgICAgIDIuNTE3NjQ4LCAyLjUwODMyNSwgMi40OTk4NjcsIDIuNDkyMTU5LCAy
LjQ4NTEwNywgMi40Nzg2MzAsIDIuNDcyNjYwLCAyLjQ2NzE0MCwgMi40NjIwMjEsIDIuNDU3MjYy
LAorICAgICAgICAgICAgMi40NTI4MjQsIDIuNDQ4Njc4LCAyLjQ0NDc5NCwgMi40NDExNTAsIDIu
NDM3NzIzLCAyLjQzNDQ5NCwgMi40MzE0NDcsIDIuNDI4NTY4LCAyLjQyNTg0MSwgMi40MjMyNTcs
CisgICAgICAgICAgICAyLjQyMDgwMywgMi40MTg0NzAsIDIuNDE2MjUwLCAyLjQxNDEzNCwgMi40
MTIxMTYsIDIuNDEwMTg4LCAyLjQwODM0NSwgMi40MDY1ODEsIDIuNDA0ODkyLCAyLjQwMzI3MiwK
KworICAgICAgICAgICAgMi40MDE3MTgsIDIuNDAwMjI1LCAyLjM5ODc5MCwgMi4zOTc0MTAsIDIu
Mzk2MDgxLCAyLjM5NDgwMSwgMi4zOTM1NjgsIDIuMzkyMzc3LCAyLjM5MTIyOSwgMi4zOTAxMTks
CisgICAgICAgICAgICAyLjM4OTA0NywgMi4zODgwMTEsIDIuMzg3MDA4LCAyLjM4NjAzNywgMi4z
ODUwOTcsIDIuMzg0MTg2LCAyLjM4MzMwMiwgMi4zODI0NDYsIDIuMzgxNjE1LCAyLjM4MDgwNywK
KyAgICAgICAgICAgIDIuMzgwMDI0LCAyLjM3OTI2MiwgMi4zNzg1MjIsIDIuMzc3ODAyLCAyLjM3
NzEwMiwgMi4zNzY0MjAsIDIuMzc1NzU3LCAyLjM3NTExMSwgMi4zNzQ0ODIsIDIuMzczODY4LAor
ICAgICAgICAgICAgMi4zNzMyNzAsIDIuMzcyNjg3LCAyLjM3MjExOSwgMi4zNzE1NjQsIDIuMzcx
MDIyLCAyLjM3MDQ5MywgMi4zNjk5NzcsIDIuMzY5NDcyLCAyLjM2ODk3OSwgMi4zNjg0OTcsCisg
ICAgICAgICAgICAyLjM2ODAyNiwgMi4zNjc1NjYsIDIuMzY3MTE1LCAyLjM2NjY3NCwgMi4zNjYy
NDMsIDIuMzY1ODIxLCAyLjM2NTQwNywgMi4zNjUwMDIsIDIuMzY0NjA2LCAyLjM2NDIxN10KKyAg
ICB9OworICAgIGZ1bmN0aW9uIG9uZVNpZGVkVG9Ud29TaWRlZFByb2JhYmlsaXR5KHByb2JhYmls
aXR5KSB7IHJldHVybiAyICogcHJvYmFiaWxpdHkgLSAxOyB9CisgICAgZnVuY3Rpb24gdHdvU2lk
ZWRUb09uZVNpZGVkUHJvYmFiaWxpdHkocHJvYmFiaWxpdHkpIHsgcmV0dXJuICgxIC0gKDEgLSBw
cm9iYWJpbGl0eSkgLyAyKTsgfQorCisgICAgdGhpcy5Nb3ZpbmdBdmVyYWdlU3RyYXRlZ2llcyA9
IFsKKyAgICAgICAgeworICAgICAgICAgICAgaWQ6IDEsCisgICAgICAgICAgICBsYWJlbDogJ1Np
bXBsZSBNb3ZpbmcgQXZlcmFnZScsCisgICAgICAgICAgICBwYXJhbWV0ZXJMaXN0OiBbCisgICAg
ICAgICAgICAgICAge2xhYmVsOiAiQmFja3dhcmQgd2luZG93IHNpemUiLCB2YWx1ZTogOCwgbWlu
OiAyLCBzdGVwOiAxfSwKKyAgICAgICAgICAgICAgICB7bGFiZWw6ICJGb3J3YXJkIHdpbmRvdyBz
aXplIiwgdmFsdWU6IDQsIG1pbjogMCwgc3RlcDogMX0KKyAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICBleGVjdXRlOiBmdW5jdGlvbiAoYmFja3dhcmRXaW5kb3dTaXplLCBmb3J3YXJkV2luZG93
U2l6ZSwgdmFsdWVzKSB7CisgICAgICAgICAgICAgICAgdmFyIGF2ZXJhZ2VzID0gbmV3IEFycmF5
KHZhbHVlcy5sZW5ndGgpOworICAgICAgICAgICAgICAgIC8vIFdlIHVzZSBuYWl2ZSBPKG5eMikg
YWxnb3JpdGhtIGZvciBzaW1wbGljeSBhcyB3ZWxsIGFzIHRvIGF2b2lkIGFjY3VtdWxhdGluZyBy
b3VuZC1vZmYgZXJyb3JzLgorICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFs
dWVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBzdW0gPSAwOworICAg
ICAgICAgICAgICAgICAgICB2YXIgY291bnQgPSAwOworICAgICAgICAgICAgICAgICAgICBmb3Ig
KHZhciBqID0gaSAtIGJhY2t3YXJkV2luZG93U2l6ZTsgaiA8IGkgKyBiYWNrd2FyZFdpbmRvd1Np
emU7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogPj0gMCAmJiBqIDwgdmFs
dWVzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bSArPSB2YWx1ZXNb
al07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBh
dmVyYWdlc1tpXSA9IHN1bSAvIGNvdW50OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICByZXR1cm4gYXZlcmFnZXM7CisgICAgICAgICAgICB9LAorCisgICAgICAgIH0sCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlkOiAyLAorICAgICAgICAgICAgbGFiZWw6ICdDdW11bGF0aXZl
IE1vdmluZyBBdmVyYWdlJywKKyAgICAgICAgICAgIGV4ZWN1dGU6IGZ1bmN0aW9uICh2YWx1ZXMp
IHsKKyAgICAgICAgICAgICAgICB2YXIgYXZlcmFnZXMgPSBuZXcgQXJyYXkodmFsdWVzLmxlbmd0
aCk7CisgICAgICAgICAgICAgICAgdmFyIHN1bSA9IDA7CisgICAgICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAg
c3VtICs9IHZhbHVlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgYXZlcmFnZXNbaV0gPSBzdW0g
LyAoaSArIDEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gYXZl
cmFnZXM7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlkOiAzLAorICAgICAgICAgICAgbGFiZWw6ICdFeHBvbmVudGlhbCBNb3ZpbmcgQXZlcmFnZScs
CisgICAgICAgICAgICBwYXJhbWV0ZXJMaXN0OiBbe2xhYmVsOiAiU21vb3RoaW5nIGZhY3RvciIs
IHZhbHVlOiAwLjEsIG1pbjogMC4wMDEsIG1heDogMC45fV0sCisgICAgICAgICAgICBleGVjdXRl
OiBmdW5jdGlvbiAoc21vb3RoaW5nRmFjdG9yLCB2YWx1ZXMpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIXZhbHVlcy5sZW5ndGggfHwgdHlwZW9mKHNtb290aGluZ0ZhY3RvcikgIT09ICJudW1iZXIi
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICAgICAgICAgIHZh
ciBhdmVyYWdlcyA9IG5ldyBBcnJheSh2YWx1ZXMubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB2
YXIgbW92aW5nQXZlcmFnZSA9IDA7CisgICAgICAgICAgICAgICAgYXZlcmFnZXNbMF0gPSB2YWx1
ZXNbMF07CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCB2YWx1ZXMubGVuZ3Ro
OyBpKyspCisgICAgICAgICAgICAgICAgICAgIGF2ZXJhZ2VzW2ldID0gc21vb3RoaW5nRmFjdG9y
ICogdmFsdWVzW2ldICsgKDEgLSBzbW9vdGhpbmdGYWN0b3IpICogYXZlcmFnZXNbaSAtIDFdOwor
ICAgICAgICAgICAgICAgIHJldHVybiBhdmVyYWdlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgeworICAgICAgICAgICAgaWQ6IDQsCisgICAgICAgICAgICBpc1NlZ21lbnRh
dGlvbjogdHJ1ZSwKKyAgICAgICAgICAgIGxhYmVsOiAnU2VnbWVudGF0aW9uOiBSZWN1cnNpdmUg
dC10ZXN0JywKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiUmVjdXJzaXZlbHkgc3BsaXQgdmFs
dWVzIGludG8gdHdvIHNlZ21lbnRzIGlmIFdlbGNoJ3MgdC10ZXN0IGRldGVjdHMgYSBzdGF0aXN0
aWNhbGx5IHNpZ25pZmljYW50IGRpZmZlcmVuY2UuIiwKKyAgICAgICAgICAgIHBhcmFtZXRlckxp
c3Q6IFt7bGFiZWw6ICJNaW5pbXVtIHNlZ21lbnQgbGVuZ3RoIiwgdmFsdWU6IDIwLCBtaW46IDV9
XSwKKyAgICAgICAgICAgIGV4ZWN1dGU6IGZ1bmN0aW9uIChtaW5MZW5ndGgsIHZhbHVlcykgewor
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoIDwgMikKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgICAgICAgICB2YXIgYXZlcmFnZXMgPSBuZXcgQXJy
YXkodmFsdWVzLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgdmFyIHNlZ21lbnRzID0gbmV3IEFy
cmF5OworICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZWx5U3BsaXRJbnRvVHdvU2VnbWVudHNBdE1h
eFRJZlNpZ25pZmljYW50bHlEaWZmZXJlbnQodmFsdWVzLCAwLCB2YWx1ZXMubGVuZ3RoLCBtaW5M
ZW5ndGgsIHNlZ21lbnRzKTsKKyAgICAgICAgICAgICAgICB2YXIgYXZlcmFnZUluZGV4ID0gMDsK
KyAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNlZ21lbnRzLmxlbmd0aDsgaisr
KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSBzZWdtZW50c1tqXTsKKyAgICAg
ICAgICAgICAgICAgICAgdmFyIG1lYW4gPSBTdGF0aXN0aWNzLnN1bSh2YWx1ZXMpIC8gdmFsdWVz
Lmxlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMu
bGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgICAgICAgICBhdmVyYWdlc1thdmVyYWdlSW5k
ZXgrK10gPSBtZWFuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVy
biBhdmVyYWdlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICAgaWQ6IDUsCisgICAgICAgICAgICBpc1NlZ21lbnRhdGlvbjogdHJ1ZSwKKyAgICAgICAg
ICAgIGxhYmVsOiAnU2VnbWVudGF0aW9uOiBTY2h3YXJ6IGNyaXRlcmlvbicsCisgICAgICAgICAg
ICBkZXNjcmlwdGlvbjogJ0FkYXB0aXZlIGFsZ29yaXRobSB0aGF0IG1heGltaXplcyB0aGUgU2No
d2FyeiBjcml0ZXJpb24gKEJJQykuJywKKyAgICAgICAgICAgIC8vIEJhc2VkIG9uIERldGVjdGlv
biBvZiBNdWx0aXBsZSBDaGFuZ2XigJNQb2ludHMgaW4gTXVsdGl2YXJpYXRlIFRpbWUgU2VyaWVz
IGJ5IE1hcmMgTGF2aWVsbGUgKEp1bHkgMjAwNikuCisgICAgICAgICAgICBleGVjdXRlOiBmdW5j
dGlvbiAodmFsdWVzKSB7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPCAyKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICAgICAgICAgIHZhciBh
dmVyYWdlcyA9IG5ldyBBcnJheSh2YWx1ZXMubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB2YXIg
YXZlcmFnZUluZGV4ID0gMDsKKworICAgICAgICAgICAgICAgIC8vIFNwbGl0IHRoZSB0aW1lIHNl
cmllcyBpbnRvIGdyaWRzIHNpbmNlIHNwbGl0SW50b1NlZ21lbnRzVW50aWxHb29kRW5vdWdoIGlz
IE8obl4yKS4KKyAgICAgICAgICAgICAgICB2YXIgZ3JpZExlbmd0aCA9IDUwMDsKKyAgICAgICAg
ICAgICAgICB2YXIgdG90YWxTZWdtZW50YXRpb24gPSBbMF07CisgICAgICAgICAgICAgICAgZm9y
ICh2YXIgZ3JpZENvdW50ID0gMDsgZ3JpZENvdW50IDwgTWF0aC5jZWlsKHZhbHVlcy5sZW5ndGgg
LyBncmlkTGVuZ3RoKTsgZ3JpZENvdW50KyspIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGdy
aWRWYWx1ZXMgPSB2YWx1ZXMuc2xpY2UoZ3JpZENvdW50ICogZ3JpZExlbmd0aCwgKGdyaWRDb3Vu
dCArIDEpICogZ3JpZExlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIHZhciBzZWdtZW50YXRp
b24gPSBzcGxpdEludG9TZWdtZW50c1VudGlsR29vZEVub3VnaChncmlkVmFsdWVzKTsKKworICAg
ICAgICAgICAgICAgICAgICBpZiAoU3RhdGlzdGljcy5kZWJ1Z2dpbmdTZWdtZW50YXRpb24pCisg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZ3JpZD0nICsgZ3JpZENvdW50LCBz
ZWdtZW50YXRpb24pOworCisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
c2VnbWVudGF0aW9uLmxlbmd0aCAtIDE7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgICAgIHRv
dGFsU2VnbWVudGF0aW9uLnB1c2goZ3JpZENvdW50ICogZ3JpZExlbmd0aCArIHNlZ21lbnRhdGlv
bltpXSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKFN0YXRpc3Rp
Y3MuZGVidWdnaW5nU2VnbWVudGF0aW9uKQorICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxv
ZygnRmluYWwgU2VnbWVudGF0aW9uJywgdG90YWxTZWdtZW50YXRpb24pOworCisgICAgICAgICAg
ICAgICAgdG90YWxTZWdtZW50YXRpb24ucHVzaCh2YWx1ZXMubGVuZ3RoKTsKKworICAgICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgdG90YWxTZWdtZW50YXRpb24ubGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHNlZ21lbnQgPSB2YWx1ZXMuc2xpY2UodG90YWxT
ZWdtZW50YXRpb25baSAtIDFdLCB0b3RhbFNlZ21lbnRhdGlvbltpXSk7CisgICAgICAgICAgICAg
ICAgICAgIHZhciBhdmVyYWdlID0gU3RhdGlzdGljcy5zdW0oc2VnbWVudCkgLyBzZWdtZW50Lmxl
bmd0aDsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzZWdtZW50Lmxl
bmd0aDsgaisrKQorICAgICAgICAgICAgICAgICAgICAgICAgYXZlcmFnZXNbYXZlcmFnZUluZGV4
KytdID0gYXZlcmFnZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1
cm4gYXZlcmFnZXM7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgXTsKKworICAgIHRo
aXMuZGVidWdnaW5nU2VnbWVudGF0aW9uID0gZmFsc2U7CisKKyAgICBmdW5jdGlvbiBzcGxpdElu
dG9TZWdtZW50c1VudGlsR29vZEVub3VnaCh2YWx1ZXMpIHsKKyAgICAgICAgaWYgKHZhbHVlcy5s
ZW5ndGggPCAyKQorICAgICAgICAgICAgcmV0dXJuIFswLCB2YWx1ZXMubGVuZ3RoXTsKKworICAg
ICAgICB2YXIgbWF0cml4ID0gbmV3IFNhbXBsZVZhcmlhbmNlVXBwZXJUcmlhbmd1bGFyTWF0cml4
KHZhbHVlcyk7CisKKyAgICAgICAgdmFyIFNjaHdhcnpDcml0ZXJpb25CZXRhID0gTWF0aC5sb2cx
cCh2YWx1ZXMubGVuZ3RoIC0gMSkgLyB2YWx1ZXMubGVuZ3RoOworCisgICAgICAgIHZhciBCaXJn
ZUFuZE1hc3NhcnRDID0gMi41OyAvLyBTdWdnZXN0ZWQgYnkgdGhlIGF1dGhvcnMuCisgICAgICAg
IHZhciBCaXJnZUFuZE1hc3NhcnRQZW5hbGl6YXRpb24gPSBmdW5jdGlvbiAoc2VnbWVudENvdW50
KSB7CisgICAgICAgICAgICByZXR1cm4gc2VnbWVudENvdW50ICogKDEgKyBCaXJnZUFuZE1hc3Nh
cnRDICogTWF0aC5sb2cxcCh2YWx1ZXMubGVuZ3RoIC8gc2VnbWVudENvdW50IC0gMSkpOworICAg
ICAgICB9CisKKyAgICAgICAgdmFyIHNlZ21lbnRhdGlvbjsKKyAgICAgICAgdmFyIG1pblRvdGFs
Q29zdCA9IEluZmluaXR5OworICAgICAgICB2YXIgbWF4SyA9IDUwOworCisgICAgICAgIGZvciAo
dmFyIGsgPSAxOyBrIDwgbWF4SzsgaysrKSB7CisgICAgICAgICAgICB2YXIgc3RhcnQgPSBEYXRl
Lm5vdygpOworICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGZpbmRPcHRpbWFsU2VnbWVudGF0aW9u
KHZhbHVlcywgbWF0cml4LCBrKTsKKyAgICAgICAgICAgIHZhciBjb3N0ID0gcmVzdWx0LmNvc3Qg
LyB2YWx1ZXMubGVuZ3RoOworICAgICAgICAgICAgdmFyIHBlbmFsdHkgPSBTY2h3YXJ6Q3JpdGVy
aW9uQmV0YSAqIEJpcmdlQW5kTWFzc2FydFBlbmFsaXphdGlvbihrKTsKKyAgICAgICAgICAgIGlm
IChjb3N0ICsgcGVuYWx0eSA8IG1pblRvdGFsQ29zdCkgeworICAgICAgICAgICAgICAgIG1pblRv
dGFsQ29zdCA9IGNvc3QgKyBwZW5hbHR5OworICAgICAgICAgICAgICAgIHNlZ21lbnRhdGlvbiA9
IHJlc3VsdC5zZWdtZW50YXRpb247CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBtYXhLID0gTWF0aC5taW4obWF4SywgayArIDMpOworICAgICAgICAgICAgaWYgKFN0YXRpc3Rp
Y3MuZGVidWdnaW5nU2VnbWVudGF0aW9uKQorICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdz
cGxpdEludG9TZWdtZW50c1VudGlsR29vZEVub3VnaCcsIGssIERhdGUubm93KCkgLSBzdGFydCwg
Y29zdCArIHBlbmFsdHkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHNlZ21lbnRhdGlv
bjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5kT3B0aW1hbFNlZ21lbnRhdGlvbih2YWx1ZXMs
IGNvc3RNYXRyaXgsIHNlZ21lbnRDb3VudCkgeworICAgICAgICAvLyBEeW5hbWljIHByb2dyYW1t
aW5nLiBjb3N0W2ldW2tdID0gVGhlIGNvc3QgdG8gc2VnbWVudGluZyB2YWx1ZXMgdXAgdG8gaSBp
bnRvIGsgc2VnbWVudHMuCisgICAgICAgIHZhciBjb3N0ID0gbmV3IEFycmF5KHZhbHVlcy5sZW5n
dGgpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewor
ICAgICAgICAgICAgY29zdFtpXSA9IG5ldyBGbG9hdDMyQXJyYXkoc2VnbWVudENvdW50ICsgMSk7
CisgICAgICAgIH0KKworICAgICAgICB2YXIgcHJldmlvdXNOb2RlID0gbmV3IEFycmF5KHZhbHVl
cy5sZW5ndGgpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkr
KykKKyAgICAgICAgICAgIHByZXZpb3VzTm9kZVtpXSA9IG5ldyBBcnJheShzZWdtZW50Q291bnQg
KyAxKTsKKworICAgICAgICBjb3N0WzBdID0gWzBdOyAvLyBUaGUgY29zdCBvZiBzZWdtZW50aW5n
IHNpbmdsZSB2YWx1ZSBpcyBhbHdheXMgMC4KKyAgICAgICAgcHJldmlvdXNOb2RlWzBdID0gWy0x
XTsKKyAgICAgICAgZm9yICh2YXIgc2VnbWVudFN0YXJ0ID0gMDsgc2VnbWVudFN0YXJ0IDwgdmFs
dWVzLmxlbmd0aDsgc2VnbWVudFN0YXJ0KyspIHsKKyAgICAgICAgICAgIHZhciBjb3N0QnlTZWdt
ZW50ID0gY29zdFtzZWdtZW50U3RhcnRdOworICAgICAgICAgICAgZm9yICh2YXIgY291bnQgPSAw
OyBjb3VudCA8IHNlZ21lbnRDb3VudDsgY291bnQrKykgeworICAgICAgICAgICAgICAgIGlmIChw
cmV2aW91c05vZGVbc2VnbWVudFN0YXJ0XVtjb3VudF0gPT09IHVuZGVmaW5lZCkKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgc2VnbWVudEVu
ZCA9IHNlZ21lbnRTdGFydCArIDE7IHNlZ21lbnRFbmQgPCB2YWx1ZXMubGVuZ3RoOyBzZWdtZW50
RW5kKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG5ld0Nvc3QgPSBjb3N0QnlTZWdtZW50
W2NvdW50XSArIGNvc3RNYXRyaXguY29zdEJldHdlZW4oc2VnbWVudFN0YXJ0LCBzZWdtZW50RW5k
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzTm9kZVtzZWdtZW50RW5kXVtjb3Vu
dCArIDFdID09PSB1bmRlZmluZWQgfHwgbmV3Q29zdCA8IGNvc3Rbc2VnbWVudEVuZF1bY291bnQg
KyAxXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29zdFtzZWdtZW50RW5kXVtjb3VudCAr
IDFdID0gbmV3Q29zdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzTm9kZVtzZWdt
ZW50RW5kXVtjb3VudCArIDFdID0gc2VnbWVudFN0YXJ0OworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
aWYgKFN0YXRpc3RpY3MuZGVidWdnaW5nU2VnbWVudGF0aW9uKSB7CisgICAgICAgICAgICBjb25z
b2xlLmxvZygnZmluZE9wdGltYWxTZWdtZW50YXRpb24gd2l0aCBrPScsIHNlZ21lbnRDb3VudCk7
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvc3QubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICB2YXIgdCA9IGNvc3RbaV07CisgICAgICAgICAgICAgICAgdmFyIHMgPSAn
JzsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHQubGVuZ3RoOyBqKyspIHsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBwcmV2aW91c05vZGVbaV1bal07CisgICAgICAg
ICAgICAgICAgICAgIHMgKz0gJyhrPScgKyBqOworICAgICAgICAgICAgICAgICAgICBpZiAocCAh
PT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgICAgICAgICAgICAgcyArPSAnIGM9JyArIHRbal0g
KyAnIHA9JyArIHAKKyAgICAgICAgICAgICAgICAgICAgcyArPSAnKSc7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGksIHZhbHVlc1tpXSwgcyk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB2YXIgY3VycmVudEluZGV4ID0gdmFsdWVz
Lmxlbmd0aCAtIDE7CisgICAgICAgIHZhciBzZWdtZW50YXRpb24gPSBuZXcgQXJyYXkoc2VnbWVu
dENvdW50KTsKKyAgICAgICAgc2VnbWVudGF0aW9uWzBdID0gdmFsdWVzLmxlbmd0aDsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWdtZW50Q291bnQ7IGkrKykgeworICAgICAgICAgICAg
Y3VycmVudEluZGV4ID0gcHJldmlvdXNOb2RlW2N1cnJlbnRJbmRleF1bc2VnbWVudENvdW50IC0g
aV07CisgICAgICAgICAgICBzZWdtZW50YXRpb25baSArIDFdID0gY3VycmVudEluZGV4OworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIHtzZWdtZW50YXRpb246IHNlZ21lbnRhdGlvbi5yZXZl
cnNlKCksIGNvc3Q6IGNvc3RbdmFsdWVzLmxlbmd0aCAtIDFdW3NlZ21lbnRDb3VudF19OworICAg
IH0KKworICAgIGZ1bmN0aW9uIFNhbXBsZVZhcmlhbmNlVXBwZXJUcmlhbmd1bGFyTWF0cml4KHZh
bHVlcykgeworICAgICAgICAvLyBUaGUgY29zdCBvZiBzZWdtZW50IChpLCBqXS4KKyAgICAgICAg
dmFyIGNvc3RNYXRyaXggPSBuZXcgQXJyYXkodmFsdWVzLmxlbmd0aCAtIDEpOworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGggLSAxOyBpKyspIHsKKyAgICAgICAgICAg
IHZhciByZW1haW5pbmdWYWx1ZUNvdW50ID0gdmFsdWVzLmxlbmd0aCAtIGkgLSAxOworICAgICAg
ICAgICAgY29zdE1hdHJpeFtpXSA9IG5ldyBGbG9hdDMyQXJyYXkocmVtYWluaW5nVmFsdWVDb3Vu
dCk7CisgICAgICAgICAgICB2YXIgc3VtID0gdmFsdWVzW2ldOworICAgICAgICAgICAgdmFyIHNx
dWFyZVN1bSA9IHN1bSAqIHN1bTsKKyAgICAgICAgICAgIGNvc3RNYXRyaXhbaV1bMF0gPSAwOwor
ICAgICAgICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyBqIDwgdmFsdWVzLmxlbmd0aDsgaisrKSB7
CisgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRWYWx1ZSA9IHZhbHVlc1tqXTsKKyAgICAgICAg
ICAgICAgICBzdW0gKz0gY3VycmVudFZhbHVlOworICAgICAgICAgICAgICAgIHNxdWFyZVN1bSAr
PSBjdXJyZW50VmFsdWUgKiBjdXJyZW50VmFsdWU7CisgICAgICAgICAgICAgICAgdmFyIHNhbXBs
ZVNpemUgPSBqIC0gaSArIDE7CisgICAgICAgICAgICAgICAgdmFyIHN0ZGV2ID0gU3RhdGlzdGlj
cy5zYW1wbGVTdGFuZGFyZERldmlhdGlvbihzYW1wbGVTaXplLCBzdW0sIHNxdWFyZVN1bSk7Cisg
ICAgICAgICAgICAgICAgY29zdE1hdHJpeFtpXVtqIC0gaSAtIDFdID0gc2FtcGxlU2l6ZSAqIE1h
dGgubG9nMXAoc3RkZXYgKiBzdGRldiAtIDEpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIHRoaXMuY29zdE1hdHJpeCA9IGNvc3RNYXRyaXg7CisgICAgfQorCisgICAgU2FtcGxl
VmFyaWFuY2VVcHBlclRyaWFuZ3VsYXJNYXRyaXgucHJvdG90eXBlLmNvc3RCZXR3ZWVuID0gZnVu
Y3Rpb24oZnJvbSwgdG8pIHsKKyAgICAgICAgaWYgKGZyb20gPj0gdGhpcy5jb3N0TWF0cml4Lmxl
bmd0aCB8fCBmcm9tID09IHRvKQorICAgICAgICAgICAgcmV0dXJuIDA7IC8vIFRoZSBjb3N0IG9m
IHRoZSBzZWdtZW50IHRoYXQgc3RhcnRzIGF0IHRoZSBsYXN0IGRhdGEgcG9pbnQgaXMgMC4KKyAg
ICAgICAgcmV0dXJuIHRoaXMuY29zdE1hdHJpeFtmcm9tXVt0byAtIGZyb20gLSAxXTsKKyAgICB9
CisKKyAgICB0aGlzLkVudmVsb3BpbmdTdHJhdGVnaWVzID0gWworICAgICAgICB7CisgICAgICAg
ICAgICBpZDogMTAwLAorICAgICAgICAgICAgbGFiZWw6ICdBdmVyYWdlIERpZmZlcmVuY2UnLAor
ICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgYXZlcmFnZSBkaWZmZXJlbmNlIGJldHdlZW4g
Y29uc2VjdXRpdmUgdmFsdWVzLicsCisgICAgICAgICAgICBleGVjdXRlOiBmdW5jdGlvbiAodmFs
dWVzLCBtb3ZpbmdBdmVyYWdlcykgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMubGVuZ3Ro
IDwgMSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5hTjsKKworICAgICAgICAgICAgICAg
IHZhciBkaWZmID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHZhbHVl
cy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgZGlmZiArPSBNYXRoLmFicyh2YWx1
ZXNbaV0gLSB2YWx1ZXNbaSAtIDFdKTsKKworICAgICAgICAgICAgICAgIHJldHVybiBkaWZmIC8g
dmFsdWVzLmxlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgaWQ6IDEwMSwKKyAgICAgICAgICAgIGxhYmVsOiAnTW92aW5nIEF2ZXJhZ2UgU3Rh
bmRhcmQgRGV2aWF0aW9uJywKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIHNxdWFyZSBy
b290IG9mIHRoZSBhdmVyYWdlIGRldmlhdGlvbiBmcm9tIHRoZSBtb3ZpbmcgYXZlcmFnZSB3aXRo
IEJlc3NlbFwncyBjb3JyZWN0aW9uLicsCisgICAgICAgICAgICBleGVjdXRlOiBmdW5jdGlvbiAo
dmFsdWVzLCBtb3ZpbmdBdmVyYWdlcykgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMubGVu
Z3RoIDwgMSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5hTjsKKworICAgICAgICAgICAg
ICAgIHZhciBkaWZmU3F1YXJlU3VtID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0g
MTsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB2YXIgZGlm
ZiA9ICh2YWx1ZXNbaV0gLSBtb3ZpbmdBdmVyYWdlc1tpXSk7CisgICAgICAgICAgICAgICAgICAg
IGRpZmZTcXVhcmVTdW0gKz0gZGlmZiAqIGRpZmY7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgcmV0dXJuIE1hdGguc3FydChkaWZmU3F1YXJlU3VtIC8gKHZhbHVlcy5sZW5n
dGggLSAxKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgXTsKKworICAgIHRoaXMu
ZGVidWdnaW5nVGVzdGluZ1JhbmdlTm9taW5hdGlvbiA9IGZhbHNlOworCisgICAgdGhpcy5UZXN0
UmFuZ2VTZWxlY3Rpb25TdHJhdGVnaWVzID0gWworICAgICAgICB7CisgICAgICAgICAgICBpZDog
MzAxLAorICAgICAgICAgICAgbGFiZWw6ICJ0LXRlc3QgOTklIHNpZ25pZmljYW5jZSIsCisgICAg
ICAgICAgICBleGVjdXRlOiBmdW5jdGlvbiAodmFsdWVzLCBzZWdtZW50ZWRWYWx1ZXMpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIXZhbHVlcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBbXTsKKworICAgICAgICAgICAgICAgIHZhciBwcmV2aW91c01lYW4gPSBzZWdtZW50ZWRW
YWx1ZXNbMF07CisgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkUmFuZ2VzID0gbmV3IEFycmF5
OworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgc2VnbWVudGVkVmFsdWVzLmxl
bmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBjdXJyZW50TWVhbiA9IHNlZ21l
bnRlZFZhbHVlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRNZWFuID09IHBy
ZXZpb3VzTWVhbikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2
YXIgbGVmdEVkZ2UgPSBpIC0gMiwgcmlnaHRFZGdlID0gaSArIDI7IGxlZnRFZGdlID49IDAgJiYg
cmlnaHRFZGdlIDw9IHZhbHVlcy5sZW5ndGg7IGxlZnRFZGdlLS0sIHJpZ2h0RWRnZSsrKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VnbWVudGVkVmFsdWVzW2xlZnRFZGdlXSAhPSBw
cmV2aW91c01lYW4gfHwgc2VnbWVudGVkVmFsdWVzW3JpZ2h0RWRnZSAtIDFdICE9IGN1cnJlbnRN
ZWFuKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHJlc3VsdCA9IFN0YXRpc3RpY3MuY29tcHV0ZVdlbGNoc1QodmFsdWVzLCBs
ZWZ0RWRnZSwgaSAtIGxlZnRFZGdlLCB2YWx1ZXMsIGksIHJpZ2h0RWRnZSAtIGksIDAuOTgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zaWduaWZpY2FudGx5RGlmZmVyZW50
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZXMucHVzaChbbGVm
dEVkZ2UsIHJpZ2h0RWRnZSAtIDFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Vu
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFmb3VuZCAmJiBTdGF0aXN0aWNzLmRlYnVnZ2luZ1Rlc3RpbmdSYW5nZU5vbWluYXRp
b24pCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRmFpbGVkIHRvIGZpbmQg
YSB0ZXN0aW5nIHJhbmdlIGF0JywgaSwgJ2NoYW5naW5nIGZyb20nLCBwcmV2aW91c01lYW4sICd0
bycsIGN1cnJlbnRNZWFuKTsKKyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNNZWFuID0gY3Vy
cmVudE1lYW47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxl
Y3RlZFJhbmdlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF07CisKKyAgICBmdW5j
dGlvbiBjcmVhdGVXZXN0ZXJuRWxlY3RyaWNSdWxlKHdpbmRvd1NpemUsIG1pbk91dGxpbmVyQ291
bnQsIGxpbWl0RmFjdG9yKSB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWVzLCBtb3Zp
bmdBdmVyYWdlcywgZGV2aWF0aW9uKSB7CisgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IG5ldyBB
cnJheSh2YWx1ZXMubGVuZ3RoKTsKKyAgICAgICAgICAgIHZhciBsaW1pdCA9IGxpbWl0RmFjdG9y
ICogZGV2aWF0aW9uOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVu
Z3RoOyBpKyspCisgICAgICAgICAgICAgICAgcmVzdWx0c1tpXSA9IGNvdW50VmFsdWVzT25TYW1l
U2lkZSh2YWx1ZXMsIG1vdmluZ0F2ZXJhZ2VzLCBsaW1pdCwgaSwgd2luZG93U2l6ZSkgPj0gbWlu
T3V0bGluZXJDb3VudCA/IHdpbmRvd1NpemUgOiAwOworICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dHM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBjb3VudFZhbHVlc09uU2FtZVNp
ZGUodmFsdWVzLCBtb3ZpbmdBdmVyYWdlcywgbGltaXQsIHN0YXJ0SW5kZXgsIHdpbmRvd1NpemUp
IHsKKyAgICAgICAgdmFyIHZhbHVlc0Fib3ZlTGltaXQgPSAwOworICAgICAgICB2YXIgdmFsdWVz
QmVsb3dMaW1pdCA9IDA7CisgICAgICAgIHZhciBjZW50ZXIgPSBtb3ZpbmdBdmVyYWdlc1tzdGFy
dEluZGV4XTsKKyAgICAgICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5kZXg7IGkgPCBzdGFydEluZGV4
ICsgd2luZG93U2l6ZSAmJiBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2
YXIgZGlmZiA9IHZhbHVlc1tpXSAtIGNlbnRlcjsKKyAgICAgICAgICAgIHZhbHVlc0Fib3ZlTGlt
aXQgKz0gKGRpZmYgPiBsaW1pdCk7CisgICAgICAgICAgICB2YWx1ZXNCZWxvd0xpbWl0ICs9IChk
aWZmIDwgLWxpbWl0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gTWF0aC5tYXgodmFsdWVz
QWJvdmVMaW1pdCwgdmFsdWVzQmVsb3dMaW1pdCk7CisgICAgfQorCisgICAgdGhpcy5Bbm9tYWx5
RGV0ZWN0aW9uU3RyYXRlZ3kgPSBbCisgICAgICAgIC8vIFdlc3Rlcm4gRWxlY3RyaWMgcnVsZXM6
IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VzdGVybl9FbGVjdHJpY19ydWxlcworICAg
ICAgICB7CisgICAgICAgICAgICBpZDogMjAwLAorICAgICAgICAgICAgbGFiZWw6ICdXZXN0ZXJu
IEVsZWN0cmljOiBhbnkgcG9pbnQgYmV5b25kIDPPgycsCisgICAgICAgICAgICBkZXNjcmlwdGlv
bjogJ0FueSBzaW5nbGUgcG9pbnQgZmFsbHMgb3V0c2lkZSAzz4MgbGltaXQgZnJvbSB0aGUgbW92
aW5nIGF2ZXJhZ2UnLAorICAgICAgICAgICAgZXhlY3V0ZTogY3JlYXRlV2VzdGVybkVsZWN0cmlj
UnVsZSgxLCAxLCAzKSwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgaWQ6IDIw
MSwKKyAgICAgICAgICAgIGxhYmVsOiAnV2VzdGVybiBFbGVjdHJpYzogMi8zIHBvaW50cyBiZXlv
bmQgMs+DJywKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVHdvIG91dCBvZiB0aHJlZSBjb25z
ZWN1dGl2ZSBwb2ludHMgZmFsbCBvdXRzaWRlIDLPgyBsaW1pdCBmcm9tIHRoZSBtb3ZpbmcgYXZl
cmFnZSBvbiB0aGUgc2FtZSBzaWRlJywKKyAgICAgICAgICAgIGV4ZWN1dGU6IGNyZWF0ZVdlc3Rl
cm5FbGVjdHJpY1J1bGUoMywgMiwgMiksCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlkOiAyMDIsCisgICAgICAgICAgICBsYWJlbDogJ1dlc3Rlcm4gRWxlY3RyaWM6IDQvNSBw
b2ludHMgYmV5b25kIM+DJywKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRm91ciBvdXQgb2Yg
Zml2ZSBjb25zZWN1dGl2ZSBwb2ludHMgZmFsbCBvdXRzaWRlIDLPgyBsaW1pdCBmcm9tIHRoZSBt
b3ZpbmcgYXZlcmFnZSBvbiB0aGUgc2FtZSBzaWRlJywKKyAgICAgICAgICAgIGV4ZWN1dGU6IGNy
ZWF0ZVdlc3Rlcm5FbGVjdHJpY1J1bGUoNSwgNCwgMSksCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlkOiAyMDMsCisgICAgICAgICAgICBsYWJlbDogJ1dlc3Rlcm4gRWxlY3Ry
aWM6IDkgcG9pbnRzIG9uIHNhbWUgc2lkZScsCisgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ05p
bmUgY29uc2VjdXRpdmUgcG9pbnRzIG9uIHRoZSBzYW1lIHNpZGUgb2YgdGhlIG1vdmluZyBhdmVy
YWdlJywKKyAgICAgICAgICAgIGV4ZWN1dGU6IGNyZWF0ZVdlc3Rlcm5FbGVjdHJpY1J1bGUoOSwg
OSwgMCksCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIGlkOiAyMTAsCisgICAg
ICAgICAgICBsYWJlbDogJ01vemlsbGE6IHQtdGVzdCA1IHZzLiAyMCBiZWZvcmUgdGhhdCcsCisg
ICAgICAgICAgICBkZXNjcmlwdGlvbjogIlVzZSBzdHVkZW50J3MgdC10ZXN0IHRvIGRldGVybWlu
ZSB3aGV0aGVyIHRoZSBtZWFuIG9mIHRoZSBsYXN0IGZpdmUgZGF0YSBwb2ludHMgZGlmZmVycyBm
cm9tIHRoZSBtZWFuIG9mIHRoZSB0d2VudHkgdmFsdWVzIGJlZm9yZSB0aGF0IiwKKyAgICAgICAg
ICAgIGV4ZWN1dGU6IGZ1bmN0aW9uICh2YWx1ZXMsIG1vdmluZ0F2ZXJhZ2VzLCBkZXZpYXRpb24p
IHsKKyAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IG5ldyBBcnJheSh2YWx1ZXMubGVuZ3Ro
KTsKKyAgICAgICAgICAgICAgICB2YXIgcCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAyMDsgaSA8IHZhbHVlcy5sZW5ndGggLSA1OyBpKyspCisgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdHNbaV0gPSBTdGF0aXN0aWNzLnRlc3RXZWxjaHNUKHZhbHVlcy5zbGljZShpIC0g
MjAsIGkpLCB2YWx1ZXMuc2xpY2UoaSwgaSArIDUpLCAwLjk4KSA/IDUgOiAwOworICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHRzOworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgIF0K
KworICAgIHRoaXMuZXhlY3V0ZVN0cmF0ZWd5ID0gZnVuY3Rpb24gKHN0cmF0ZWd5LCByYXdWYWx1
ZXMsIGFkZGl0aW9uYWxBcmd1bWVudHMpCisgICAgeworICAgICAgICB2YXIgcGFyYW1ldGVycyA9
IChzdHJhdGVneS5wYXJhbWV0ZXJMaXN0IHx8IFtdKS5tYXAoZnVuY3Rpb24gKHBhcmFtKSB7Cisg
ICAgICAgICAgICB2YXIgcGFyc2VkID0gcGFyc2VGbG9hdChwYXJhbS52YWx1ZSk7CisgICAgICAg
ICAgICByZXR1cm4gTWF0aC5taW4ocGFyYW0ubWF4IHx8IEluZmluaXR5LCBNYXRoLm1heChwYXJh
bS5taW4gfHwgLUluZmluaXR5LCBpc05hTihwYXJzZWQpID8gMCA6IHBhcnNlZCkpOworICAgICAg
ICB9KTsKKyAgICAgICAgcGFyYW1ldGVycy5wdXNoKHJhd1ZhbHVlcyk7CisgICAgICAgIHJldHVy
biBzdHJhdGVneS5leGVjdXRlLmFwcGx5KHN0cmF0ZWd5LCBwYXJhbWV0ZXJzLmNvbmNhdChhZGRp
dGlvbmFsQXJndW1lbnRzKSk7CisgICAgfTsKKworfSkoKTsKKworaWYgKHR5cGVvZiBtb2R1bGUg
IT0gJ3VuZGVmaW5lZCcpIHsKKyAgICBmb3IgKHZhciBrZXkgaW4gU3RhdGlzdGljcykKKyAgICAg
ICAgbW9kdWxlLmV4cG9ydHNba2V5XSA9IFN0YXRpc3RpY3Nba2V5XTsKK30KSW5kZXg6IFdlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjIvaW5kZXguaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YyL2luZGV4Lmh0bWwJKHJldmlzaW9uIDE5
NjYwMykKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjIvaW5kZXguaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTYsNyArMTYsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJqcy9lbWJl
ci5qcyIgZGVmZXI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9ImpzL2VtYmVyLWRhdGEuanMi
IGRlZmVyPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJqcy9kMy9kMy5taW4uanMiIGRlZmVy
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJqcy9zdGF0aXN0aWNzLmpzIiBkZWZlcj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vc2hhcmVkL3N0YXRpc3RpY3MuanMiIGRlZmVyPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJkYXRhLmpzIiBkZWZlcj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iYXBwLmpzIiBkZWZlcj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0ibWFu
aWZlc3QuanMiIGRlZmVyPjwvc2NyaXB0PgpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92Mi9qcy9zdGF0aXN0aWNzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9wdWJsaWMvdjIvanMvc3RhdGlzdGljcy5qcwkocmV2aXNpb24gMTk2NjAzKQor
KysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92Mi9qcy9zdGF0aXN0aWNzLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDU4MyArMCwwIEBACi12YXIgU3RhdGlzdGljcyA9IG5ldyAoZnVu
Y3Rpb24gKCkgewotCi0gICAgdGhpcy5taW4gPSBmdW5jdGlvbiAodmFsdWVzKSB7Ci0gICAgICAg
IHJldHVybiBNYXRoLm1pbi5hcHBseShNYXRoLCB2YWx1ZXMpOwotICAgIH0KLQotICAgIHRoaXMu
bWF4ID0gZnVuY3Rpb24gKHZhbHVlcykgewotICAgICAgICByZXR1cm4gTWF0aC5tYXguYXBwbHko
TWF0aCwgdmFsdWVzKTsKLSAgICB9Ci0KLSAgICB0aGlzLnN1bSA9IGZ1bmN0aW9uICh2YWx1ZXMp
IHsKLSAgICAgICAgcmV0dXJuIHZhbHVlcy5sZW5ndGggPyB2YWx1ZXMucmVkdWNlKGZ1bmN0aW9u
IChhLCBiKSB7IHJldHVybiBhICsgYjsgfSkgOiAwOwotICAgIH0KLQotICAgIHRoaXMuc3F1YXJl
U3VtID0gZnVuY3Rpb24gKHZhbHVlcykgewotICAgICAgICByZXR1cm4gdmFsdWVzLmxlbmd0aCA/
IHZhbHVlcy5yZWR1Y2UoZnVuY3Rpb24gKHN1bSwgdmFsdWUpIHsgcmV0dXJuIHN1bSArIHZhbHVl
ICogdmFsdWU7fSwgMCkgOiAwOwotICAgIH0KLQotICAgIC8vIFdpdGggc3VtIGFuZCBzdW0gb2Yg
c3F1YXJlcywgd2UgY2FuIGNvbXB1dGUgdGhlIHNhbXBsZSBzdGFuZGFyZCBkZXZpYXRpb24gaW4g
TygxKS4KLSAgICAvLyBTZWUgaHR0cHM6Ly9ybml3YS5jb20vMjAxMi0xMS0xMC9zYW1wbGUtc3Rh
bmRhcmQtZGV2aWF0aW9uLWluLXRlcm1zLW9mLXN1bS1hbmQtc3F1YXJlLXN1bS1vZi1zYW1wbGVz
LwotICAgIHRoaXMuc2FtcGxlU3RhbmRhcmREZXZpYXRpb24gPSBmdW5jdGlvbiAobnVtYmVyT2ZT
YW1wbGVzLCBzdW0sIHNxdWFyZVN1bSkgewotICAgICAgICBpZiAobnVtYmVyT2ZTYW1wbGVzIDwg
MikKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KHNxdWFy
ZVN1bSAvIChudW1iZXJPZlNhbXBsZXMgLSAxKSAtIHN1bSAqIHN1bSAvIChudW1iZXJPZlNhbXBs
ZXMgLSAxKSAvIG51bWJlck9mU2FtcGxlcyk7Ci0gICAgfQotCi0gICAgdGhpcy5zdXBwb3J0ZWRD
b25maWRlbmNlSW50ZXJ2YWxQcm9iYWJpbGl0aWVzID0gZnVuY3Rpb24gKCkgewotICAgICAgICB2
YXIgc3VwcG9ydGVkUHJvYmFiaWxpdGllcyA9IFtdOwotICAgICAgICBmb3IgKHZhciBwcm9iYWJp
bGl0eSBpbiB0RGlzdHJpYnV0aW9uQnlPbmVTaWRlZFByb2JhYmlsaXR5KQotICAgICAgICAgICAg
c3VwcG9ydGVkUHJvYmFiaWxpdGllcy5wdXNoKG9uZVNpZGVkVG9Ud29TaWRlZFByb2JhYmlsaXR5
KHByb2JhYmlsaXR5KS50b0ZpeGVkKDIpKTsKLSAgICAgICAgcmV0dXJuIHN1cHBvcnRlZFByb2Jh
YmlsaXRpZXMKLSAgICB9Ci0KLSAgICAvLyBDb21wdXRlcyB0aGUgZGVsdGEgZCBzLnQuIChtZWFu
IC0gZCwgbWVhbiArIGQpIGlzIHRoZSBjb25maWRlbmNlIGludGVydmFsIHdpdGggdGhlIHNwZWNp
ZmllZCBwcm9iYWJpbGl0eSBpbiBPKDEpLgotICAgIHRoaXMuY29uZmlkZW5jZUludGVydmFsRGVs
dGEgPSBmdW5jdGlvbiAocHJvYmFiaWxpdHksIG51bWJlck9mU2FtcGxlcywgc3VtLCBzcXVhcmVT
dW0pIHsKLSAgICAgICAgdmFyIG9uZVNpZGVkUHJvYmFiaWxpdHkgPSB0d29TaWRlZFRvT25lU2lk
ZWRQcm9iYWJpbGl0eShwcm9iYWJpbGl0eSk7Ci0gICAgICAgIGlmICghKG9uZVNpZGVkUHJvYmFi
aWxpdHkgaW4gdERpc3RyaWJ1dGlvbkJ5T25lU2lkZWRQcm9iYWJpbGl0eSkpIHsKLSAgICAgICAg
ICAgIHRocm93ICdXZSBvbmx5IHN1cHBvcnQgJyArIHRoaXMuc3VwcG9ydGVkQ29uZmlkZW5jZUlu
dGVydmFsUHJvYmFiaWxpdGllcygpLm1hcChmdW5jdGlvbiAocHJvYmFiaWxpdHkpCi0gICAgICAg
ICAgICB7IHJldHVybiBwcm9iYWJpbGl0eSAqIDEwMCArICclJzsgfSApLmpvaW4oJywgJykgKyAn
IGNvbmZpZGVuY2UgaW50ZXJ2YWxzLic7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG51bWJlck9m
U2FtcGxlcyAtIDIgPCAwKQotICAgICAgICAgICAgcmV0dXJuIE5hTjsKLSAgICAgICAgdmFyIGRl
bHRhcyA9IHREaXN0cmlidXRpb25CeU9uZVNpZGVkUHJvYmFiaWxpdHlbb25lU2lkZWRQcm9iYWJp
bGl0eV07Ci0gICAgICAgIHZhciBkZWdyZWVzT2ZGcmVlZG9tID0gbnVtYmVyT2ZTYW1wbGVzIC0g
MTsKLSAgICAgICAgaWYgKGRlZ3JlZXNPZkZyZWVkb20gPiBkZWx0YXMubGVuZ3RoKQotICAgICAg
ICAgICAgdGhyb3cgJ1dlIG9ubHkgc3VwcG9ydCB1cCB0byAnICsgZGVsdGFzLmxlbmd0aCArICcg
ZGVncmVlcyBvZiBmcmVlZG9tJzsKLQotICAgICAgICAvLyBkID0gYyAqIFMvc3FydChudW1iZXJP
ZlNhbXBsZXMpIHdoZXJlIGMgfiB0LWRpc3RyaWJ1dGlvbihkZWdyZWVzT2ZGcmVlZG9tKSBhbmQg
UyBpcyB0aGUgc2FtcGxlIHN0YW5kYXJkIGRldmlhdGlvbi4KLSAgICAgICAgcmV0dXJuIGRlbHRh
c1tkZWdyZWVzT2ZGcmVlZG9tIC0gMV0gKiB0aGlzLnNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uKG51
bWJlck9mU2FtcGxlcywgc3VtLCBzcXVhcmVTdW0pIC8gTWF0aC5zcXJ0KG51bWJlck9mU2FtcGxl
cyk7Ci0gICAgfQotCi0gICAgdGhpcy5jb25maWRlbmNlSW50ZXJ2YWwgPSBmdW5jdGlvbiAodmFs
dWVzLCBwcm9iYWJpbGl0eSkgewotICAgICAgICB2YXIgc3VtID0gdGhpcy5zdW0odmFsdWVzKTsK
LSAgICAgICAgdmFyIG1lYW4gPSBzdW0gLyB2YWx1ZXMubGVuZ3RoOwotICAgICAgICB2YXIgZGVs
dGEgPSB0aGlzLmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhKHByb2JhYmlsaXR5IHx8IDAuOTUsIHZh
bHVlcy5sZW5ndGgsIHN1bSwgdGhpcy5zcXVhcmVTdW0odmFsdWVzKSk7Ci0gICAgICAgIHJldHVy
biBbbWVhbiAtIGRlbHRhLCBtZWFuICsgZGVsdGFdOwotICAgIH0KLQotICAgIC8vIFdlbGNoJ3Mg
dC10ZXN0IChodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlbGNoJTI3c190X3Rlc3QpCi0g
ICAgdGhpcy50ZXN0V2VsY2hzVCA9IGZ1bmN0aW9uICh2YWx1ZXMxLCB2YWx1ZXMyLCBwcm9iYWJp
bGl0eSkgewotICAgICAgICByZXR1cm4gdGhpcy5jb21wdXRlV2VsY2hzVCh2YWx1ZXMxLCAwLCB2
YWx1ZXMxLmxlbmd0aCwgdmFsdWVzMiwgMCwgdmFsdWVzMi5sZW5ndGgsIHByb2JhYmlsaXR5KS5z
aWduaWZpY2FudGx5RGlmZmVyZW50OwotICAgIH0KLQotICAgIHRoaXMucHJvYmFiaWxpdHlSYW5n
ZUZvcldlbGNoc1QgPSBmdW5jdGlvbiAodmFsdWVzMSwgdmFsdWVzMikgewotICAgICAgICB2YXIg
cmVzdWx0ID0gdGhpcy5jb21wdXRlV2VsY2hzVCh2YWx1ZXMxLCAwLCB2YWx1ZXMxLmxlbmd0aCwg
dmFsdWVzMiwgMCwgdmFsdWVzMi5sZW5ndGgpOwotICAgICAgICBpZiAoaXNOYU4ocmVzdWx0LnQp
IHx8IGlzTmFOKHJlc3VsdC5kZWdyZWVzT2ZGcmVlZG9tKSkKLSAgICAgICAgICAgIHJldHVybiB7
dDogTmFOLCBkZWdyZWVzT2ZGcmVlZG9tOk5hTiwgcmFuZ2U6IFtudWxsLCBudWxsXX07Ci0KLSAg
ICAgICAgdmFyIGxvd2VyQm91bmQgPSBudWxsOwotICAgICAgICB2YXIgdXBwZXJCb3VuZCA9IG51
bGw7Ci0gICAgICAgIGZvciAodmFyIHByb2JhYmlsaXR5IGluIHREaXN0cmlidXRpb25CeU9uZVNp
ZGVkUHJvYmFiaWxpdHkpIHsKLSAgICAgICAgICAgIHZhciB0d29TaWRlZFByb2JhYmlsaXR5ID0g
b25lU2lkZWRUb1R3b1NpZGVkUHJvYmFiaWxpdHkocHJvYmFiaWxpdHkpOwotICAgICAgICAgICAg
aWYgKHJlc3VsdC50ID4gdERpc3RyaWJ1dGlvbkJ5T25lU2lkZWRQcm9iYWJpbGl0eVtwcm9iYWJp
bGl0eV1bTWF0aC5yb3VuZChyZXN1bHQuZGVncmVlc09mRnJlZWRvbSAtIDEpXSkKLSAgICAgICAg
ICAgICAgICBsb3dlckJvdW5kID0gdHdvU2lkZWRQcm9iYWJpbGl0eTsKLSAgICAgICAgICAgIGVs
c2UgaWYgKGxvd2VyQm91bmQpIHsKLSAgICAgICAgICAgICAgICB1cHBlckJvdW5kID0gdHdvU2lk
ZWRQcm9iYWJpbGl0eTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4ge3Q6IHJlc3VsdC50LCBkZWdyZWVzT2ZGcmVlZG9tOiBy
ZXN1bHQuZGVncmVlc09mRnJlZWRvbSwgcmFuZ2U6IFtsb3dlckJvdW5kLCB1cHBlckJvdW5kXX07
Ci0gICAgfQotCi0gICAgdGhpcy5jb21wdXRlV2VsY2hzVCA9IGZ1bmN0aW9uICh2YWx1ZXMxLCBz
dGFydEluZGV4MSwgbGVuZ3RoMSwgdmFsdWVzMiwgc3RhcnRJbmRleDIsIGxlbmd0aDIsIHByb2Jh
YmlsaXR5KSB7Ci0gICAgICAgIHZhciBzdGF0MSA9IHNhbXBsZU1lYW5BbmRWYXJpYW5jZUZvclZh
bHVlcyh2YWx1ZXMxLCBzdGFydEluZGV4MSwgbGVuZ3RoMSk7Ci0gICAgICAgIHZhciBzdGF0MiA9
IHNhbXBsZU1lYW5BbmRWYXJpYW5jZUZvclZhbHVlcyh2YWx1ZXMyLCBzdGFydEluZGV4MiwgbGVu
Z3RoMik7Ci0gICAgICAgIHZhciBzdW1PZlNhbXBsZVZhcmlhbmNlT3ZlclNhbXBsZVNpemUgPSBz
dGF0MS52YXJpYW5jZSAvIHN0YXQxLnNpemUgKyBzdGF0Mi52YXJpYW5jZSAvIHN0YXQyLnNpemU7
Ci0gICAgICAgIHZhciB0ID0gTWF0aC5hYnMoKHN0YXQxLm1lYW4gLSBzdGF0Mi5tZWFuKSAvIE1h
dGguc3FydChzdW1PZlNhbXBsZVZhcmlhbmNlT3ZlclNhbXBsZVNpemUpKTsKLQotICAgICAgICAv
LyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlbGNo4oCTU2F0dGVydGh3YWl0ZV9lcXVh
dGlvbgotICAgICAgICB2YXIgZGVncmVlc09mRnJlZWRvbSA9IHN1bU9mU2FtcGxlVmFyaWFuY2VP
dmVyU2FtcGxlU2l6ZSAqIHN1bU9mU2FtcGxlVmFyaWFuY2VPdmVyU2FtcGxlU2l6ZQotICAgICAg
ICAgICAgLyAoc3RhdDEudmFyaWFuY2UgKiBzdGF0MS52YXJpYW5jZSAvIHN0YXQxLnNpemUgLyBz
dGF0MS5zaXplIC8gc3RhdDEuZGVncmVlc09mRnJlZWRvbQotICAgICAgICAgICAgICAgICsgc3Rh
dDIudmFyaWFuY2UgKiBzdGF0Mi52YXJpYW5jZSAvIHN0YXQyLnNpemUgLyBzdGF0Mi5zaXplIC8g
c3RhdDIuZGVncmVlc09mRnJlZWRvbSk7Ci0gICAgICAgIHZhciBtaW5UID0gdERpc3RyaWJ1dGlv
bkJ5T25lU2lkZWRQcm9iYWJpbGl0eVt0d29TaWRlZFRvT25lU2lkZWRQcm9iYWJpbGl0eShwcm9i
YWJpbGl0eSB8fCAwLjgpXVtNYXRoLnJvdW5kKGRlZ3JlZXNPZkZyZWVkb20gLSAxKV07Ci0gICAg
ICAgIHJldHVybiB7Ci0gICAgICAgICAgICB0OiB0LAotICAgICAgICAgICAgZGVncmVlc09mRnJl
ZWRvbTogZGVncmVlc09mRnJlZWRvbSwKLSAgICAgICAgICAgIHNpZ25pZmljYW50bHlEaWZmZXJl
bnQ6IHQgPiBtaW5ULAotICAgICAgICB9OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHNhbXBsZU1l
YW5BbmRWYXJpYW5jZUZvclZhbHVlcyh2YWx1ZXMsIHN0YXJ0SW5kZXgsIGxlbmd0aCkgewotICAg
ICAgICB2YXIgc3VtID0gMDsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkr
KykKLSAgICAgICAgICAgIHN1bSArPSB2YWx1ZXNbc3RhcnRJbmRleCArIGldOwotICAgICAgICB2
YXIgc3F1YXJlU3VtID0gMDsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkr
KykKLSAgICAgICAgICAgIHNxdWFyZVN1bSArPSB2YWx1ZXNbc3RhcnRJbmRleCArIGldICogdmFs
dWVzW3N0YXJ0SW5kZXggKyBpXTsKLSAgICAgICAgdmFyIHNhbXBsZU1lYW4gPSBzdW0gLyBsZW5n
dGg7Ci0gICAgICAgIC8vIEZJWE1FOiBNYXliZSB3ZSBzaG91bGQgYmUgdXNpbmcgdGhlIGJpYXNl
ZCBzYW1wbGUgdmFyaWFuY2UuCi0gICAgICAgIHZhciB1bmJpYXNlZFNhbXBsZVZhcmlhbmNlID0g
KHNxdWFyZVN1bSAtIHN1bSAqIHN1bSAvIGxlbmd0aCkgLyAobGVuZ3RoIC0gMSk7Ci0gICAgICAg
IHJldHVybiB7Ci0gICAgICAgICAgICBtZWFuOiBzYW1wbGVNZWFuLAotICAgICAgICAgICAgdmFy
aWFuY2U6IHVuYmlhc2VkU2FtcGxlVmFyaWFuY2UsCi0gICAgICAgICAgICBzaXplOiBsZW5ndGgs
Ci0gICAgICAgICAgICBkZWdyZWVzT2ZGcmVlZG9tOiBsZW5ndGggLSAxLAotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gcmVjdXJzaXZlbHlTcGxpdEludG9Ud29TZWdtZW50c0F0TWF4
VElmU2lnbmlmaWNhbnRseURpZmZlcmVudCh2YWx1ZXMsIHN0YXJ0SW5kZXgsIGxlbmd0aCwgbWlu
TGVuZ3RoLCBzZWdtZW50cykgewotICAgICAgICB2YXIgdE1heCA9IDA7Ci0gICAgICAgIHZhciBh
cmdUTWF4ID0gbnVsbDsKLSAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW5ndGggLSAxOyBp
KyspIHsKLSAgICAgICAgICAgIHZhciBmaXJzdExlbmd0aCA9IGk7Ci0gICAgICAgICAgICB2YXIg
c2Vjb25kTGVuZ3RoID0gbGVuZ3RoIC0gaTsKLSAgICAgICAgICAgIGlmIChmaXJzdExlbmd0aCA8
IG1pbkxlbmd0aCB8fCBzZWNvbmRMZW5ndGggPCBtaW5MZW5ndGgpCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gU3RhdGlzdGljcy5jb21wdXRlV2Vs
Y2hzVCh2YWx1ZXMsIHN0YXJ0SW5kZXgsIGZpcnN0TGVuZ3RoLCB2YWx1ZXMsIHN0YXJ0SW5kZXgg
KyBpLCBzZWNvbmRMZW5ndGgsIDAuOSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0LnNpZ25pZmlj
YW50bHlEaWZmZXJlbnQgJiYgcmVzdWx0LnQgPiB0TWF4KSB7Ci0gICAgICAgICAgICAgICAgdE1h
eCA9IHJlc3VsdC50OwotICAgICAgICAgICAgICAgIGFyZ1RNYXggPSBpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIGlmICghdE1heCkgewotICAgICAgICAgICAgc2VnbWVudHMu
cHVzaCh2YWx1ZXMuc2xpY2Uoc3RhcnRJbmRleCwgc3RhcnRJbmRleCArIGxlbmd0aCkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHJlY3Vyc2l2ZWx5U3BsaXRJbnRv
VHdvU2VnbWVudHNBdE1heFRJZlNpZ25pZmljYW50bHlEaWZmZXJlbnQodmFsdWVzLCBzdGFydElu
ZGV4LCBhcmdUTWF4LCBtaW5MZW5ndGgsIHNlZ21lbnRzKTsKLSAgICAgICAgcmVjdXJzaXZlbHlT
cGxpdEludG9Ud29TZWdtZW50c0F0TWF4VElmU2lnbmlmaWNhbnRseURpZmZlcmVudCh2YWx1ZXMs
IHN0YXJ0SW5kZXggKyBhcmdUTWF4LCBsZW5ndGggLSBhcmdUTWF4LCBtaW5MZW5ndGgsIHNlZ21l
bnRzKTsKLSAgICB9Ci0KLSAgICB2YXIgdERpc3RyaWJ1dGlvbkJ5T25lU2lkZWRQcm9iYWJpbGl0
eSA9IHsKLSAgICAgICAgMC45OiBbCi0gICAgICAgICAgICAzLjA3NzY4NCwgMS44ODU2MTgsIDEu
NjM3NzQ0LCAxLjUzMzIwNiwgMS40NzU4ODQsIDEuNDM5NzU2LCAxLjQxNDkyNCwgMS4zOTY4MTUs
IDEuMzgzMDI5LCAxLjM3MjE4NCwKLSAgICAgICAgICAgIDEuMzYzNDMwLCAxLjM1NjIxNywgMS4z
NTAxNzEsIDEuMzQ1MDMwLCAxLjM0MDYwNiwgMS4zMzY3NTcsIDEuMzMzMzc5LCAxLjMzMDM5MSwg
MS4zMjc3MjgsIDEuMzI1MzQxLAotICAgICAgICAgICAgMS4zMjMxODgsIDEuMzIxMjM3LCAxLjMx
OTQ2MCwgMS4zMTc4MzYsIDEuMzE2MzQ1LCAxLjMxNDk3MiwgMS4zMTM3MDMsIDEuMzEyNTI3LCAx
LjMxMTQzNCwgMS4zMTA0MTUsCi0gICAgICAgICAgICAxLjMwOTQ2NCwgMS4zMDg1NzMsIDEuMzA3
NzM3LCAxLjMwNjk1MiwgMS4zMDYyMTIsIDEuMzA1NTE0LCAxLjMwNDg1NCwgMS4zMDQyMzAsIDEu
MzAzNjM5LCAxLjMwMzA3NywKLSAgICAgICAgICAgIDEuMzAyNTQzLCAxLjMwMjAzNSwgMS4zMDE1
NTIsIDEuMzAxMDkwLCAxLjMwMDY0OSwgMS4zMDAyMjgsIDEuMjk5ODI1LCAxLjI5OTQzOSwgMS4y
OTkwNjksIDEuMjk4NzE0LAotCi0gICAgICAgICAgICAxLjI5ODM3MywgMS4yOTgwNDUsIDEuMjk3
NzMwLCAxLjI5NzQyNiwgMS4yOTcxMzQsIDEuMjk2ODUzLCAxLjI5NjU4MSwgMS4yOTYzMTksIDEu
Mjk2MDY2LCAxLjI5NTgyMSwKLSAgICAgICAgICAgIDEuMjk1NTg1LCAxLjI5NTM1NiwgMS4yOTUx
MzQsIDEuMjk0OTIwLCAxLjI5NDcxMiwgMS4yOTQ1MTEsIDEuMjk0MzE1LCAxLjI5NDEyNiwgMS4y
OTM5NDIsIDEuMjkzNzYzLAotICAgICAgICAgICAgMS4yOTM1ODksIDEuMjkzNDIxLCAxLjI5MzI1
NiwgMS4yOTMwOTcsIDEuMjkyOTQxLCAxLjI5Mjc5MCwgMS4yOTI2NDMsIDEuMjkyNTAwLCAxLjI5
MjM2MCwgMS4yOTIyMjQsCi0gICAgICAgICAgICAxLjI5MjA5MSwgMS4yOTE5NjEsIDEuMjkxODM1
LCAxLjI5MTcxMSwgMS4yOTE1OTEsIDEuMjkxNDczLCAxLjI5MTM1OCwgMS4yOTEyNDYsIDEuMjkx
MTM2LCAxLjI5MTAyOSwKLSAgICAgICAgICAgIDEuMjkwOTI0LCAxLjI5MDgyMSwgMS4yOTA3MjEs
IDEuMjkwNjIzLCAxLjI5MDUyNywgMS4yOTA0MzIsIDEuMjkwMzQwLCAxLjI5MDI1MCwgMS4yOTAx
NjEsIDEuMjkwMDc1XSwKLSAgICAgICAgMC45NTogWwotICAgICAgICAgICAgNi4zMTM3NTIsIDIu
OTE5OTg2LCAyLjM1MzM2MywgMi4xMzE4NDcsIDIuMDE1MDQ4LCAxLjk0MzE4MCwgMS44OTQ1Nzks
IDEuODU5NTQ4LCAxLjgzMzExMywgMS44MTI0NjEsCi0gICAgICAgICAgICAxLjc5NTg4NSwgMS43
ODIyODgsIDEuNzcwOTMzLCAxLjc2MTMxMCwgMS43NTMwNTAsIDEuNzQ1ODg0LCAxLjczOTYwNywg
MS43MzQwNjQsIDEuNzI5MTMzLCAxLjcyNDcxOCwKLSAgICAgICAgICAgIDEuNzIwNzQzLCAxLjcx
NzE0NCwgMS43MTM4NzIsIDEuNzEwODgyLCAxLjcwODE0MSwgMS43MDU2MTgsIDEuNzAzMjg4LCAx
LjcwMTEzMSwgMS42OTkxMjcsIDEuNjk3MjYxLAotICAgICAgICAgICAgMS42OTU1MTksIDEuNjkz
ODg5LCAxLjY5MjM2MCwgMS42OTA5MjQsIDEuNjg5NTcyLCAxLjY4ODI5OCwgMS42ODcwOTQsIDEu
Njg1OTU0LCAxLjY4NDg3NSwgMS42ODM4NTEsCi0gICAgICAgICAgICAxLjY4Mjg3OCwgMS42ODE5
NTIsIDEuNjgxMDcxLCAxLjY4MDIzMCwgMS42Nzk0MjcsIDEuNjc4NjYwLCAxLjY3NzkyNywgMS42
NzcyMjQsIDEuNjc2NTUxLCAxLjY3NTkwNSwKLQotICAgICAgICAgICAgMS42NzUyODUsIDEuNjc0
Njg5LCAxLjY3NDExNiwgMS42NzM1NjUsIDEuNjczMDM0LCAxLjY3MjUyMiwgMS42NzIwMjksIDEu
NjcxNTUzLCAxLjY3MTA5MywgMS42NzA2NDksCi0gICAgICAgICAgICAxLjY3MDIxOSwgMS42Njk4
MDQsIDEuNjY5NDAyLCAxLjY2OTAxMywgMS42Njg2MzYsIDEuNjY4MjcxLCAxLjY2NzkxNiwgMS42
Njc1NzIsIDEuNjY3MjM5LCAxLjY2NjkxNCwKLSAgICAgICAgICAgIDEuNjY2NjAwLCAxLjY2NjI5
NCwgMS42NjU5OTYsIDEuNjY1NzA3LCAxLjY2NTQyNSwgMS42NjUxNTEsIDEuNjY0ODg1LCAxLjY2
NDYyNSwgMS42NjQzNzEsIDEuNjY0MTI1LAotICAgICAgICAgICAgMS42NjM4ODQsIDEuNjYzNjQ5
LCAxLjY2MzQyMCwgMS42NjMxOTcsIDEuNjYyOTc4LCAxLjY2Mjc2NSwgMS42NjI1NTcsIDEuNjYy
MzU0LCAxLjY2MjE1NSwgMS42NjE5NjEsCi0gICAgICAgICAgICAxLjY2MTc3MSwgMS42NjE1ODUs
IDEuNjYxNDA0LCAxLjY2MTIyNiwgMS42NjEwNTIsIDEuNjYwODgxLCAxLjY2MDcxNSwgMS42NjA1
NTEsIDEuNjYwMzkxLCAxLjY2MDIzNF0sCi0gICAgICAgIDAuOTc1OiBbCi0gICAgICAgICAgICAx
Mi43MDYyMDUsIDQuMzAyNjUzLCAzLjE4MjQ0NiwgMi43NzY0NDUsIDIuNTcwNTgyLCAyLjQ0Njkx
MiwgMi4zNjQ2MjQsIDIuMzA2MDA0LCAyLjI2MjE1NywgMi4yMjgxMzksCi0gICAgICAgICAgICAy
LjIwMDk4NSwgMi4xNzg4MTMsIDIuMTYwMzY5LCAyLjE0NDc4NywgMi4xMzE0NTAsIDIuMTE5OTA1
LCAyLjEwOTgxNiwgMi4xMDA5MjIsIDIuMDkzMDI0LCAyLjA4NTk2MywKLSAgICAgICAgICAgIDIu
MDc5NjE0LCAyLjA3Mzg3MywgMi4wNjg2NTgsIDIuMDYzODk5LCAyLjA1OTUzOSwgMi4wNTU1Mjks
IDIuMDUxODMxLCAyLjA0ODQwNywgMi4wNDUyMzAsIDIuMDQyMjcyLAotICAgICAgICAgICAgMi4w
Mzk1MTMsIDIuMDM2OTMzLCAyLjAzNDUxNSwgMi4wMzIyNDUsIDIuMDMwMTA4LCAyLjAyODA5NCwg
Mi4wMjYxOTIsIDIuMDI0Mzk0LCAyLjAyMjY5MSwgMi4wMjEwNzUsCi0gICAgICAgICAgICAyLjAx
OTU0MSwgMi4wMTgwODIsIDIuMDE2NjkyLCAyLjAxNTM2OCwgMi4wMTQxMDMsIDIuMDEyODk2LCAy
LjAxMTc0MSwgMi4wMTA2MzUsIDIuMDA5NTc1LCAyLjAwODU1OSwKLQotICAgICAgICAgICAgMi4w
MDc1ODQsIDIuMDA2NjQ3LCAyLjAwNTc0NiwgMi4wMDQ4NzksIDIuMDA0MDQ1LCAyLjAwMzI0MSwg
Mi4wMDI0NjUsIDIuMDAxNzE3LCAyLjAwMDk5NSwgMi4wMDAyOTgsCi0gICAgICAgICAgICAxLjk5
OTYyNCwgMS45OTg5NzIsIDEuOTk4MzQxLCAxLjk5NzczMCwgMS45OTcxMzgsIDEuOTk2NTY0LCAx
Ljk5NjAwOCwgMS45OTU0NjksIDEuOTk0OTQ1LCAxLjk5NDQzNywKLSAgICAgICAgICAgIDEuOTkz
OTQzLCAxLjk5MzQ2NCwgMS45OTI5OTcsIDEuOTkyNTQzLCAxLjk5MjEwMiwgMS45OTE2NzMsIDEu
OTkxMjU0LCAxLjk5MDg0NywgMS45OTA0NTAsIDEuOTkwMDYzLAotICAgICAgICAgICAgMS45ODk2
ODYsIDEuOTg5MzE5LCAxLjk4ODk2MCwgMS45ODg2MTAsIDEuOTg4MjY4LCAxLjk4NzkzNCwgMS45
ODc2MDgsIDEuOTg3MjkwLCAxLjk4Njk3OSwgMS45ODY2NzUsCi0gICAgICAgICAgICAxLjk4NjM3
NywgMS45ODYwODYsIDEuOTg1ODAyLCAxLjk4NTUyMywgMS45ODUyNTEsIDEuOTg0OTg0LCAxLjk4
NDcyMywgMS45ODQ0NjcsIDEuOTg0MjE3LCAxLjk4Mzk3Ml0sCi0gICAgICAgIDAuOTk6IFsKLSAg
ICAgICAgICAgIDMxLjgyMDUxNiwgNi45NjQ1NTcsIDQuNTQwNzAzLCAzLjc0Njk0NywgMy4zNjQ5
MzAsIDMuMTQyNjY4LCAyLjk5Nzk1MiwgMi44OTY0NTksIDIuODIxNDM4LCAyLjc2Mzc2OSwKLSAg
ICAgICAgICAgIDIuNzE4MDc5LCAyLjY4MDk5OCwgMi42NTAzMDksIDIuNjI0NDk0LCAyLjYwMjQ4
MCwgMi41ODM0ODcsIDIuNTY2OTM0LCAyLjU1MjM4MCwgMi41Mzk0ODMsIDIuNTI3OTc3LAotICAg
ICAgICAgICAgMi41MTc2NDgsIDIuNTA4MzI1LCAyLjQ5OTg2NywgMi40OTIxNTksIDIuNDg1MTA3
LCAyLjQ3ODYzMCwgMi40NzI2NjAsIDIuNDY3MTQwLCAyLjQ2MjAyMSwgMi40NTcyNjIsCi0gICAg
ICAgICAgICAyLjQ1MjgyNCwgMi40NDg2NzgsIDIuNDQ0Nzk0LCAyLjQ0MTE1MCwgMi40Mzc3MjMs
IDIuNDM0NDk0LCAyLjQzMTQ0NywgMi40Mjg1NjgsIDIuNDI1ODQxLCAyLjQyMzI1NywKLSAgICAg
ICAgICAgIDIuNDIwODAzLCAyLjQxODQ3MCwgMi40MTYyNTAsIDIuNDE0MTM0LCAyLjQxMjExNiwg
Mi40MTAxODgsIDIuNDA4MzQ1LCAyLjQwNjU4MSwgMi40MDQ4OTIsIDIuNDAzMjcyLAotCi0gICAg
ICAgICAgICAyLjQwMTcxOCwgMi40MDAyMjUsIDIuMzk4NzkwLCAyLjM5NzQxMCwgMi4zOTYwODEs
IDIuMzk0ODAxLCAyLjM5MzU2OCwgMi4zOTIzNzcsIDIuMzkxMjI5LCAyLjM5MDExOSwKLSAgICAg
ICAgICAgIDIuMzg5MDQ3LCAyLjM4ODAxMSwgMi4zODcwMDgsIDIuMzg2MDM3LCAyLjM4NTA5Nywg
Mi4zODQxODYsIDIuMzgzMzAyLCAyLjM4MjQ0NiwgMi4zODE2MTUsIDIuMzgwODA3LAotICAgICAg
ICAgICAgMi4zODAwMjQsIDIuMzc5MjYyLCAyLjM3ODUyMiwgMi4zNzc4MDIsIDIuMzc3MTAyLCAy
LjM3NjQyMCwgMi4zNzU3NTcsIDIuMzc1MTExLCAyLjM3NDQ4MiwgMi4zNzM4NjgsCi0gICAgICAg
ICAgICAyLjM3MzI3MCwgMi4zNzI2ODcsIDIuMzcyMTE5LCAyLjM3MTU2NCwgMi4zNzEwMjIsIDIu
MzcwNDkzLCAyLjM2OTk3NywgMi4zNjk0NzIsIDIuMzY4OTc5LCAyLjM2ODQ5NywKLSAgICAgICAg
ICAgIDIuMzY4MDI2LCAyLjM2NzU2NiwgMi4zNjcxMTUsIDIuMzY2Njc0LCAyLjM2NjI0MywgMi4z
NjU4MjEsIDIuMzY1NDA3LCAyLjM2NTAwMiwgMi4zNjQ2MDYsIDIuMzY0MjE3XQotICAgIH07Ci0g
ICAgZnVuY3Rpb24gb25lU2lkZWRUb1R3b1NpZGVkUHJvYmFiaWxpdHkocHJvYmFiaWxpdHkpIHsg
cmV0dXJuIDIgKiBwcm9iYWJpbGl0eSAtIDE7IH0KLSAgICBmdW5jdGlvbiB0d29TaWRlZFRvT25l
U2lkZWRQcm9iYWJpbGl0eShwcm9iYWJpbGl0eSkgeyByZXR1cm4gKDEgLSAoMSAtIHByb2JhYmls
aXR5KSAvIDIpOyB9Ci0KLSAgICB0aGlzLk1vdmluZ0F2ZXJhZ2VTdHJhdGVnaWVzID0gWwotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZDogMSwKLSAgICAgICAgICAgIGxhYmVsOiAnU2ltcGxlIE1v
dmluZyBBdmVyYWdlJywKLSAgICAgICAgICAgIHBhcmFtZXRlckxpc3Q6IFsKLSAgICAgICAgICAg
ICAgICB7bGFiZWw6ICJCYWNrd2FyZCB3aW5kb3cgc2l6ZSIsIHZhbHVlOiA4LCBtaW46IDIsIHN0
ZXA6IDF9LAotICAgICAgICAgICAgICAgIHtsYWJlbDogIkZvcndhcmQgd2luZG93IHNpemUiLCB2
YWx1ZTogNCwgbWluOiAwLCBzdGVwOiAxfQotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgIGV4
ZWN1dGU6IGZ1bmN0aW9uIChiYWNrd2FyZFdpbmRvd1NpemUsIGZvcndhcmRXaW5kb3dTaXplLCB2
YWx1ZXMpIHsKLSAgICAgICAgICAgICAgICB2YXIgYXZlcmFnZXMgPSBuZXcgQXJyYXkodmFsdWVz
Lmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgLy8gV2UgdXNlIG5haXZlIE8obl4yKSBhbGdvcml0
aG0gZm9yIHNpbXBsaWN5IGFzIHdlbGwgYXMgdG8gYXZvaWQgYWNjdW11bGF0aW5nIHJvdW5kLW9m
ZiBlcnJvcnMuCi0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVu
Z3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN1bSA9IDA7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciBjb3VudCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGog
PSBpIC0gYmFja3dhcmRXaW5kb3dTaXplOyBqIDwgaSArIGJhY2t3YXJkV2luZG93U2l6ZTsgaisr
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaiA+PSAwICYmIGogPCB2YWx1ZXMubGVu
Z3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtICs9IHZhbHVlc1tqXTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCsrOwotICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGF2ZXJhZ2Vz
W2ldID0gc3VtIC8gY291bnQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJl
dHVybiBhdmVyYWdlczsKLSAgICAgICAgICAgIH0sCi0KLSAgICAgICAgfSwKLSAgICAgICAgewot
ICAgICAgICAgICAgaWQ6IDIsCi0gICAgICAgICAgICBsYWJlbDogJ0N1bXVsYXRpdmUgTW92aW5n
IEF2ZXJhZ2UnLAotICAgICAgICAgICAgZXhlY3V0ZTogZnVuY3Rpb24gKHZhbHVlcykgewotICAg
ICAgICAgICAgICAgIHZhciBhdmVyYWdlcyA9IG5ldyBBcnJheSh2YWx1ZXMubGVuZ3RoKTsKLSAg
ICAgICAgICAgICAgICB2YXIgc3VtID0gMDsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBzdW0gKz0g
dmFsdWVzW2ldOwotICAgICAgICAgICAgICAgICAgICBhdmVyYWdlc1tpXSA9IHN1bSAvIChpICsg
MSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBhdmVyYWdlczsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgaWQ6IDMs
Ci0gICAgICAgICAgICBsYWJlbDogJ0V4cG9uZW50aWFsIE1vdmluZyBBdmVyYWdlJywKLSAgICAg
ICAgICAgIHBhcmFtZXRlckxpc3Q6IFt7bGFiZWw6ICJTbW9vdGhpbmcgZmFjdG9yIiwgdmFsdWU6
IDAuMSwgbWluOiAwLjAwMSwgbWF4OiAwLjl9XSwKLSAgICAgICAgICAgIGV4ZWN1dGU6IGZ1bmN0
aW9uIChzbW9vdGhpbmdGYWN0b3IsIHZhbHVlcykgewotICAgICAgICAgICAgICAgIGlmICghdmFs
dWVzLmxlbmd0aCB8fCB0eXBlb2Yoc21vb3RoaW5nRmFjdG9yKSAhPT0gIm51bWJlciIpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAgICAgICAgICAgdmFyIGF2ZXJh
Z2VzID0gbmV3IEFycmF5KHZhbHVlcy5sZW5ndGgpOwotICAgICAgICAgICAgICAgIHZhciBtb3Zp
bmdBdmVyYWdlID0gMDsKLSAgICAgICAgICAgICAgICBhdmVyYWdlc1swXSA9IHZhbHVlc1swXTsK
LSAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykK
LSAgICAgICAgICAgICAgICAgICAgYXZlcmFnZXNbaV0gPSBzbW9vdGhpbmdGYWN0b3IgKiB2YWx1
ZXNbaV0gKyAoMSAtIHNtb290aGluZ0ZhY3RvcikgKiBhdmVyYWdlc1tpIC0gMV07Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGF2ZXJhZ2VzOwotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZDogNCwKLSAgICAgICAgICAgIGlzU2VnbWVudGF0aW9uOiB0
cnVlLAotICAgICAgICAgICAgbGFiZWw6ICdTZWdtZW50YXRpb246IFJlY3Vyc2l2ZSB0LXRlc3Qn
LAotICAgICAgICAgICAgZGVzY3JpcHRpb246ICJSZWN1cnNpdmVseSBzcGxpdCB2YWx1ZXMgaW50
byB0d28gc2VnbWVudHMgaWYgV2VsY2gncyB0LXRlc3QgZGV0ZWN0cyBhIHN0YXRpc3RpY2FsbHkg
c2lnbmlmaWNhbnQgZGlmZmVyZW5jZS4iLAotICAgICAgICAgICAgcGFyYW1ldGVyTGlzdDogW3ts
YWJlbDogIk1pbmltdW0gc2VnbWVudCBsZW5ndGgiLCB2YWx1ZTogMjAsIG1pbjogNX1dLAotICAg
ICAgICAgICAgZXhlY3V0ZTogZnVuY3Rpb24gKG1pbkxlbmd0aCwgdmFsdWVzKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPCAyKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbDsKLQotICAgICAgICAgICAgICAgIHZhciBhdmVyYWdlcyA9IG5ldyBBcnJheSh2YWx1
ZXMubGVuZ3RoKTsKLSAgICAgICAgICAgICAgICB2YXIgc2VnbWVudHMgPSBuZXcgQXJyYXk7Ci0g
ICAgICAgICAgICAgICAgcmVjdXJzaXZlbHlTcGxpdEludG9Ud29TZWdtZW50c0F0TWF4VElmU2ln
bmlmaWNhbnRseURpZmZlcmVudCh2YWx1ZXMsIDAsIHZhbHVlcy5sZW5ndGgsIG1pbkxlbmd0aCwg
c2VnbWVudHMpOwotICAgICAgICAgICAgICAgIHZhciBhdmVyYWdlSW5kZXggPSAwOwotICAgICAg
ICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2VnbWVudHMubGVuZ3RoOyBqKyspIHsKLSAg
ICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlcyA9IHNlZ21lbnRzW2pdOwotICAgICAgICAgICAg
ICAgICAgICB2YXIgbWVhbiA9IFN0YXRpc3RpY3Muc3VtKHZhbHVlcykgLyB2YWx1ZXMubGVuZ3Ro
OwotICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7
IGkrKykKLSAgICAgICAgICAgICAgICAgICAgICAgIGF2ZXJhZ2VzW2F2ZXJhZ2VJbmRleCsrXSA9
IG1lYW47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcmV0dXJuIGF2ZXJh
Z2VzOwotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZDogNSwKLSAgICAgICAgICAgIGlzU2VnbWVudGF0aW9uOiB0cnVlLAotICAgICAgICAgICAgbGFi
ZWw6ICdTZWdtZW50YXRpb246IFNjaHdhcnogY3JpdGVyaW9uJywKLSAgICAgICAgICAgIGRlc2Ny
aXB0aW9uOiAnQWRhcHRpdmUgYWxnb3JpdGhtIHRoYXQgbWF4aW1pemVzIHRoZSBTY2h3YXJ6IGNy
aXRlcmlvbiAoQklDKS4nLAotICAgICAgICAgICAgLy8gQmFzZWQgb24gRGV0ZWN0aW9uIG9mIE11
bHRpcGxlIENoYW5nZeKAk1BvaW50cyBpbiBNdWx0aXZhcmlhdGUgVGltZSBTZXJpZXMgYnkgTWFy
YyBMYXZpZWxsZSAoSnVseSAyMDA2KS4KLSAgICAgICAgICAgIGV4ZWN1dGU6IGZ1bmN0aW9uICh2
YWx1ZXMpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA8IDIpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAgICAgICAgICAgdmFyIGF2ZXJhZ2Vz
ID0gbmV3IEFycmF5KHZhbHVlcy5sZW5ndGgpOwotICAgICAgICAgICAgICAgIHZhciBhdmVyYWdl
SW5kZXggPSAwOwotCi0gICAgICAgICAgICAgICAgLy8gU3BsaXQgdGhlIHRpbWUgc2VyaWVzIGlu
dG8gZ3JpZHMgc2luY2Ugc3BsaXRJbnRvU2VnbWVudHNVbnRpbEdvb2RFbm91Z2ggaXMgTyhuXjIp
LgotICAgICAgICAgICAgICAgIHZhciBncmlkTGVuZ3RoID0gNTAwOwotICAgICAgICAgICAgICAg
IHZhciB0b3RhbFNlZ21lbnRhdGlvbiA9IFswXTsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBn
cmlkQ291bnQgPSAwOyBncmlkQ291bnQgPCBNYXRoLmNlaWwodmFsdWVzLmxlbmd0aCAvIGdyaWRM
ZW5ndGgpOyBncmlkQ291bnQrKykgewotICAgICAgICAgICAgICAgICAgICB2YXIgZ3JpZFZhbHVl
cyA9IHZhbHVlcy5zbGljZShncmlkQ291bnQgKiBncmlkTGVuZ3RoLCAoZ3JpZENvdW50ICsgMSkg
KiBncmlkTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHNlZ21lbnRhdGlvbiA9IHNw
bGl0SW50b1NlZ21lbnRzVW50aWxHb29kRW5vdWdoKGdyaWRWYWx1ZXMpOwotCi0gICAgICAgICAg
ICAgICAgICAgIGlmIChTdGF0aXN0aWNzLmRlYnVnZ2luZ1NlZ21lbnRhdGlvbikKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdncmlkPScgKyBncmlkQ291bnQsIHNlZ21lbnRh
dGlvbik7Ci0KLSAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzZWdtZW50
YXRpb24ubGVuZ3RoIC0gMTsgaSsrKQotICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxTZWdt
ZW50YXRpb24ucHVzaChncmlkQ291bnQgKiBncmlkTGVuZ3RoICsgc2VnbWVudGF0aW9uW2ldKTsK
LSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoU3RhdGlzdGljcy5kZWJ1
Z2dpbmdTZWdtZW50YXRpb24pCi0gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdGaW5h
bCBTZWdtZW50YXRpb24nLCB0b3RhbFNlZ21lbnRhdGlvbik7Ci0KLSAgICAgICAgICAgICAgICB0
b3RhbFNlZ21lbnRhdGlvbi5wdXNoKHZhbHVlcy5sZW5ndGgpOwotCi0gICAgICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCB0b3RhbFNlZ21lbnRhdGlvbi5sZW5ndGg7IGkrKykgewotICAg
ICAgICAgICAgICAgICAgICB2YXIgc2VnbWVudCA9IHZhbHVlcy5zbGljZSh0b3RhbFNlZ21lbnRh
dGlvbltpIC0gMV0sIHRvdGFsU2VnbWVudGF0aW9uW2ldKTsKLSAgICAgICAgICAgICAgICAgICAg
dmFyIGF2ZXJhZ2UgPSBTdGF0aXN0aWNzLnN1bShzZWdtZW50KSAvIHNlZ21lbnQubGVuZ3RoOwot
ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNlZ21lbnQubGVuZ3RoOyBq
KyspCi0gICAgICAgICAgICAgICAgICAgICAgICBhdmVyYWdlc1thdmVyYWdlSW5kZXgrK10gPSBh
dmVyYWdlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVybiBhdmVy
YWdlczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICBdOwotCi0gICAgdGhpcy5kZWJ1
Z2dpbmdTZWdtZW50YXRpb24gPSBmYWxzZTsKLQotICAgIGZ1bmN0aW9uIHNwbGl0SW50b1NlZ21l
bnRzVW50aWxHb29kRW5vdWdoKHZhbHVlcykgewotICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA8
IDIpCi0gICAgICAgICAgICByZXR1cm4gWzAsIHZhbHVlcy5sZW5ndGhdOwotCi0gICAgICAgIHZh
ciBtYXRyaXggPSBuZXcgU2FtcGxlVmFyaWFuY2VVcHBlclRyaWFuZ3VsYXJNYXRyaXgodmFsdWVz
KTsKLQotICAgICAgICB2YXIgU2Nod2FyekNyaXRlcmlvbkJldGEgPSBNYXRoLmxvZzFwKHZhbHVl
cy5sZW5ndGggLSAxKSAvIHZhbHVlcy5sZW5ndGg7Ci0KLSAgICAgICAgdmFyIEJpcmdlQW5kTWFz
c2FydEMgPSAyLjU7IC8vIFN1Z2dlc3RlZCBieSB0aGUgYXV0aG9ycy4KLSAgICAgICAgdmFyIEJp
cmdlQW5kTWFzc2FydFBlbmFsaXphdGlvbiA9IGZ1bmN0aW9uIChzZWdtZW50Q291bnQpIHsKLSAg
ICAgICAgICAgIHJldHVybiBzZWdtZW50Q291bnQgKiAoMSArIEJpcmdlQW5kTWFzc2FydEMgKiBN
YXRoLmxvZzFwKHZhbHVlcy5sZW5ndGggLyBzZWdtZW50Q291bnQgLSAxKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICB2YXIgc2VnbWVudGF0aW9uOwotICAgICAgICB2YXIgbWluVG90YWxDb3N0ID0g
SW5maW5pdHk7Ci0gICAgICAgIHZhciBtYXhLID0gNTA7Ci0KLSAgICAgICAgZm9yICh2YXIgayA9
IDE7IGsgPCBtYXhLOyBrKyspIHsKLSAgICAgICAgICAgIHZhciBzdGFydCA9IERhdGUubm93KCk7
Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gZmluZE9wdGltYWxTZWdtZW50YXRpb24odmFsdWVz
LCBtYXRyaXgsIGspOwotICAgICAgICAgICAgdmFyIGNvc3QgPSByZXN1bHQuY29zdCAvIHZhbHVl
cy5sZW5ndGg7Ci0gICAgICAgICAgICB2YXIgcGVuYWx0eSA9IFNjaHdhcnpDcml0ZXJpb25CZXRh
ICogQmlyZ2VBbmRNYXNzYXJ0UGVuYWxpemF0aW9uKGspOwotICAgICAgICAgICAgaWYgKGNvc3Qg
KyBwZW5hbHR5IDwgbWluVG90YWxDb3N0KSB7Ci0gICAgICAgICAgICAgICAgbWluVG90YWxDb3N0
ID0gY29zdCArIHBlbmFsdHk7Ci0gICAgICAgICAgICAgICAgc2VnbWVudGF0aW9uID0gcmVzdWx0
LnNlZ21lbnRhdGlvbjsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG1heEsg
PSBNYXRoLm1pbihtYXhLLCBrICsgMyk7Ci0gICAgICAgICAgICBpZiAoU3RhdGlzdGljcy5kZWJ1
Z2dpbmdTZWdtZW50YXRpb24pCi0gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3NwbGl0SW50
b1NlZ21lbnRzVW50aWxHb29kRW5vdWdoJywgaywgRGF0ZS5ub3coKSAtIHN0YXJ0LCBjb3N0ICsg
cGVuYWx0eSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gc2VnbWVudGF0aW9uOwotICAg
IH0KLQotICAgIGZ1bmN0aW9uIGZpbmRPcHRpbWFsU2VnbWVudGF0aW9uKHZhbHVlcywgY29zdE1h
dHJpeCwgc2VnbWVudENvdW50KSB7Ci0gICAgICAgIC8vIER5bmFtaWMgcHJvZ3JhbW1pbmcuIGNv
c3RbaV1ba10gPSBUaGUgY29zdCB0byBzZWdtZW50aW5nIHZhbHVlcyB1cCB0byBpIGludG8gayBz
ZWdtZW50cy4KLSAgICAgICAgdmFyIGNvc3QgPSBuZXcgQXJyYXkodmFsdWVzLmxlbmd0aCk7Ci0g
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAg
ICAgICBjb3N0W2ldID0gbmV3IEZsb2F0MzJBcnJheShzZWdtZW50Q291bnQgKyAxKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZhciBwcmV2aW91c05vZGUgPSBuZXcgQXJyYXkodmFsdWVzLmxlbmd0
aCk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKQotICAg
ICAgICAgICAgcHJldmlvdXNOb2RlW2ldID0gbmV3IEFycmF5KHNlZ21lbnRDb3VudCArIDEpOwot
Ci0gICAgICAgIGNvc3RbMF0gPSBbMF07IC8vIFRoZSBjb3N0IG9mIHNlZ21lbnRpbmcgc2luZ2xl
IHZhbHVlIGlzIGFsd2F5cyAwLgotICAgICAgICBwcmV2aW91c05vZGVbMF0gPSBbLTFdOwotICAg
ICAgICBmb3IgKHZhciBzZWdtZW50U3RhcnQgPSAwOyBzZWdtZW50U3RhcnQgPCB2YWx1ZXMubGVu
Z3RoOyBzZWdtZW50U3RhcnQrKykgewotICAgICAgICAgICAgdmFyIGNvc3RCeVNlZ21lbnQgPSBj
b3N0W3NlZ21lbnRTdGFydF07Ci0gICAgICAgICAgICBmb3IgKHZhciBjb3VudCA9IDA7IGNvdW50
IDwgc2VnbWVudENvdW50OyBjb3VudCsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHByZXZpb3Vz
Tm9kZVtzZWdtZW50U3RhcnRdW2NvdW50XSA9PT0gdW5kZWZpbmVkKQotICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBzZWdtZW50RW5kID0gc2Vn
bWVudFN0YXJ0ICsgMTsgc2VnbWVudEVuZCA8IHZhbHVlcy5sZW5ndGg7IHNlZ21lbnRFbmQrKykg
ewotICAgICAgICAgICAgICAgICAgICB2YXIgbmV3Q29zdCA9IGNvc3RCeVNlZ21lbnRbY291bnRd
ICsgY29zdE1hdHJpeC5jb3N0QmV0d2VlbihzZWdtZW50U3RhcnQsIHNlZ21lbnRFbmQpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNOb2RlW3NlZ21lbnRFbmRdW2NvdW50ICsgMV0g
PT09IHVuZGVmaW5lZCB8fCBuZXdDb3N0IDwgY29zdFtzZWdtZW50RW5kXVtjb3VudCArIDFdKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb3N0W3NlZ21lbnRFbmRdW2NvdW50ICsgMV0gPSBu
ZXdDb3N0OwotICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNOb2RlW3NlZ21lbnRFbmRd
W2NvdW50ICsgMV0gPSBzZWdtZW50U3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoU3Rh
dGlzdGljcy5kZWJ1Z2dpbmdTZWdtZW50YXRpb24pIHsKLSAgICAgICAgICAgIGNvbnNvbGUubG9n
KCdmaW5kT3B0aW1hbFNlZ21lbnRhdGlvbiB3aXRoIGs9Jywgc2VnbWVudENvdW50KTsKLSAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29zdC5sZW5ndGg7IGkrKykgewotICAgICAgICAg
ICAgICAgIHZhciB0ID0gY29zdFtpXTsKLSAgICAgICAgICAgICAgICB2YXIgcyA9ICcnOwotICAg
ICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdC5sZW5ndGg7IGorKykgewotICAgICAg
ICAgICAgICAgICAgICB2YXIgcCA9IHByZXZpb3VzTm9kZVtpXVtqXTsKLSAgICAgICAgICAgICAg
ICAgICAgcyArPSAnKGs9JyArIGo7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwICE9PSB1bmRl
ZmluZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBzICs9ICcgYz0nICsgdFtqXSArICcgcD0n
ICsgcAotICAgICAgICAgICAgICAgICAgICBzICs9ICcpJzsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgY29uc29sZS5sb2coaSwgdmFsdWVzW2ldLCBzKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIHZhciBjdXJyZW50SW5kZXggPSB2YWx1ZXMubGVuZ3Ro
IC0gMTsKLSAgICAgICAgdmFyIHNlZ21lbnRhdGlvbiA9IG5ldyBBcnJheShzZWdtZW50Q291bnQp
OwotICAgICAgICBzZWdtZW50YXRpb25bMF0gPSB2YWx1ZXMubGVuZ3RoOwotICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHNlZ21lbnRDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBjdXJyZW50
SW5kZXggPSBwcmV2aW91c05vZGVbY3VycmVudEluZGV4XVtzZWdtZW50Q291bnQgLSBpXTsKLSAg
ICAgICAgICAgIHNlZ21lbnRhdGlvbltpICsgMV0gPSBjdXJyZW50SW5kZXg7Ci0gICAgICAgIH0K
LQotICAgICAgICByZXR1cm4ge3NlZ21lbnRhdGlvbjogc2VnbWVudGF0aW9uLnJldmVyc2UoKSwg
Y29zdDogY29zdFt2YWx1ZXMubGVuZ3RoIC0gMV1bc2VnbWVudENvdW50XX07Ci0gICAgfQotCi0g
ICAgZnVuY3Rpb24gU2FtcGxlVmFyaWFuY2VVcHBlclRyaWFuZ3VsYXJNYXRyaXgodmFsdWVzKSB7
Ci0gICAgICAgIC8vIFRoZSBjb3N0IG9mIHNlZ21lbnQgKGksIGpdLgotICAgICAgICB2YXIgY29z
dE1hdHJpeCA9IG5ldyBBcnJheSh2YWx1ZXMubGVuZ3RoIC0gMSk7Ci0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aCAtIDE7IGkrKykgewotICAgICAgICAgICAgdmFyIHJl
bWFpbmluZ1ZhbHVlQ291bnQgPSB2YWx1ZXMubGVuZ3RoIC0gaSAtIDE7Ci0gICAgICAgICAgICBj
b3N0TWF0cml4W2ldID0gbmV3IEZsb2F0MzJBcnJheShyZW1haW5pbmdWYWx1ZUNvdW50KTsKLSAg
ICAgICAgICAgIHZhciBzdW0gPSB2YWx1ZXNbaV07Ci0gICAgICAgICAgICB2YXIgc3F1YXJlU3Vt
ID0gc3VtICogc3VtOwotICAgICAgICAgICAgY29zdE1hdHJpeFtpXVswXSA9IDA7Ci0gICAgICAg
ICAgICBmb3IgKHZhciBqID0gaSArIDE7IGogPCB2YWx1ZXMubGVuZ3RoOyBqKyspIHsKLSAgICAg
ICAgICAgICAgICB2YXIgY3VycmVudFZhbHVlID0gdmFsdWVzW2pdOwotICAgICAgICAgICAgICAg
IHN1bSArPSBjdXJyZW50VmFsdWU7Ci0gICAgICAgICAgICAgICAgc3F1YXJlU3VtICs9IGN1cnJl
bnRWYWx1ZSAqIGN1cnJlbnRWYWx1ZTsKLSAgICAgICAgICAgICAgICB2YXIgc2FtcGxlU2l6ZSA9
IGogLSBpICsgMTsKLSAgICAgICAgICAgICAgICB2YXIgc3RkZXYgPSBTdGF0aXN0aWNzLnNhbXBs
ZVN0YW5kYXJkRGV2aWF0aW9uKHNhbXBsZVNpemUsIHN1bSwgc3F1YXJlU3VtKTsKLSAgICAgICAg
ICAgICAgICBjb3N0TWF0cml4W2ldW2ogLSBpIC0gMV0gPSBzYW1wbGVTaXplICogTWF0aC5sb2cx
cChzdGRldiAqIHN0ZGV2IC0gMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
dGhpcy5jb3N0TWF0cml4ID0gY29zdE1hdHJpeDsKLSAgICB9Ci0KLSAgICBTYW1wbGVWYXJpYW5j
ZVVwcGVyVHJpYW5ndWxhck1hdHJpeC5wcm90b3R5cGUuY29zdEJldHdlZW4gPSBmdW5jdGlvbihm
cm9tLCB0bykgewotICAgICAgICBpZiAoZnJvbSA+PSB0aGlzLmNvc3RNYXRyaXgubGVuZ3RoIHx8
IGZyb20gPT0gdG8pCi0gICAgICAgICAgICByZXR1cm4gMDsgLy8gVGhlIGNvc3Qgb2YgdGhlIHNl
Z21lbnQgdGhhdCBzdGFydHMgYXQgdGhlIGxhc3QgZGF0YSBwb2ludCBpcyAwLgotICAgICAgICBy
ZXR1cm4gdGhpcy5jb3N0TWF0cml4W2Zyb21dW3RvIC0gZnJvbSAtIDFdOwotICAgIH0KLQotICAg
IHRoaXMuRW52ZWxvcGluZ1N0cmF0ZWdpZXMgPSBbCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlk
OiAxMDAsCi0gICAgICAgICAgICBsYWJlbDogJ0F2ZXJhZ2UgRGlmZmVyZW5jZScsCi0gICAgICAg
ICAgICBkZXNjcmlwdGlvbjogJ1RoZSBhdmVyYWdlIGRpZmZlcmVuY2UgYmV0d2VlbiBjb25zZWN1
dGl2ZSB2YWx1ZXMuJywKLSAgICAgICAgICAgIGV4ZWN1dGU6IGZ1bmN0aW9uICh2YWx1ZXMsIG1v
dmluZ0F2ZXJhZ2VzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPCAxKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gTmFOOwotCi0gICAgICAgICAgICAgICAgdmFyIGRp
ZmYgPSAwOwotICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgdmFsdWVzLmxlbmd0
aDsgaSsrKQotICAgICAgICAgICAgICAgICAgICBkaWZmICs9IE1hdGguYWJzKHZhbHVlc1tpXSAt
IHZhbHVlc1tpIC0gMV0pOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIGRpZmYgLyB2YWx1ZXMu
bGVuZ3RoOwotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZDogMTAxLAotICAgICAgICAgICAgbGFiZWw6ICdNb3ZpbmcgQXZlcmFnZSBTdGFuZGFyZCBE
ZXZpYXRpb24nLAotICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgc3F1YXJlIHJvb3Qgb2Yg
dGhlIGF2ZXJhZ2UgZGV2aWF0aW9uIGZyb20gdGhlIG1vdmluZyBhdmVyYWdlIHdpdGggQmVzc2Vs
XCdzIGNvcnJlY3Rpb24uJywKLSAgICAgICAgICAgIGV4ZWN1dGU6IGZ1bmN0aW9uICh2YWx1ZXMs
IG1vdmluZ0F2ZXJhZ2VzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPCAx
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTmFOOwotCi0gICAgICAgICAgICAgICAgdmFy
IGRpZmZTcXVhcmVTdW0gPSAwOwotICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwg
dmFsdWVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBkaWZmID0gKHZh
bHVlc1tpXSAtIG1vdmluZ0F2ZXJhZ2VzW2ldKTsKLSAgICAgICAgICAgICAgICAgICAgZGlmZlNx
dWFyZVN1bSArPSBkaWZmICogZGlmZjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICByZXR1cm4gTWF0aC5zcXJ0KGRpZmZTcXVhcmVTdW0gLyAodmFsdWVzLmxlbmd0aCAtIDEp
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICBdOwotCi0gICAgdGhpcy5kZWJ1Z2dp
bmdUZXN0aW5nUmFuZ2VOb21pbmF0aW9uID0gZmFsc2U7Ci0KLSAgICB0aGlzLlRlc3RSYW5nZVNl
bGVjdGlvblN0cmF0ZWdpZXMgPSBbCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlkOiAzMDEsCi0g
ICAgICAgICAgICBsYWJlbDogInQtdGVzdCA5OSUgc2lnbmlmaWNhbmNlIiwKLSAgICAgICAgICAg
IGV4ZWN1dGU6IGZ1bmN0aW9uICh2YWx1ZXMsIHNlZ21lbnRlZFZhbHVlcykgewotICAgICAgICAg
ICAgICAgIGlmICghdmFsdWVzLmxlbmd0aCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtd
OwotCi0gICAgICAgICAgICAgICAgdmFyIHByZXZpb3VzTWVhbiA9IHNlZ21lbnRlZFZhbHVlc1sw
XTsKLSAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRSYW5nZXMgPSBuZXcgQXJyYXk7Ci0gICAg
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzZWdtZW50ZWRWYWx1ZXMubGVuZ3RoOyBp
KyspIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRNZWFuID0gc2VnbWVudGVkVmFs
dWVzW2ldOwotICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudE1lYW4gPT0gcHJldmlvdXNN
ZWFuKQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAg
ICAgIHZhciBmb3VuZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsZWZ0
RWRnZSA9IGkgLSAyLCByaWdodEVkZ2UgPSBpICsgMjsgbGVmdEVkZ2UgPj0gMCAmJiByaWdodEVk
Z2UgPD0gdmFsdWVzLmxlbmd0aDsgbGVmdEVkZ2UtLSwgcmlnaHRFZGdlKyspIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChzZWdtZW50ZWRWYWx1ZXNbbGVmdEVkZ2VdICE9IHByZXZpb3Vz
TWVhbiB8fCBzZWdtZW50ZWRWYWx1ZXNbcmlnaHRFZGdlIC0gMV0gIT0gY3VycmVudE1lYW4pCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgcmVzdWx0ID0gU3RhdGlzdGljcy5jb21wdXRlV2VsY2hzVCh2YWx1ZXMsIGxlZnRFZGdl
LCBpIC0gbGVmdEVkZ2UsIHZhbHVlcywgaSwgcmlnaHRFZGdlIC0gaSwgMC45OCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnNpZ25pZmljYW50bHlEaWZmZXJlbnQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFJhbmdlcy5wdXNoKFtsZWZ0RWRnZSwg
cmlnaHRFZGdlIC0gMV0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAo
IWZvdW5kICYmIFN0YXRpc3RpY3MuZGVidWdnaW5nVGVzdGluZ1JhbmdlTm9taW5hdGlvbikKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdGYWlsZWQgdG8gZmluZCBhIHRlc3Rp
bmcgcmFuZ2UgYXQnLCBpLCAnY2hhbmdpbmcgZnJvbScsIHByZXZpb3VzTWVhbiwgJ3RvJywgY3Vy
cmVudE1lYW4pOwotICAgICAgICAgICAgICAgICAgICBwcmV2aW91c01lYW4gPSBjdXJyZW50TWVh
bjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkUmFu
Z2VzOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgXTsKLQotICAgIGZ1bmN0aW9uIGNy
ZWF0ZVdlc3Rlcm5FbGVjdHJpY1J1bGUod2luZG93U2l6ZSwgbWluT3V0bGluZXJDb3VudCwgbGlt
aXRGYWN0b3IpIHsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZXMsIG1vdmluZ0F2ZXJh
Z2VzLCBkZXZpYXRpb24pIHsKLSAgICAgICAgICAgIHZhciByZXN1bHRzID0gbmV3IEFycmF5KHZh
bHVlcy5sZW5ndGgpOwotICAgICAgICAgICAgdmFyIGxpbWl0ID0gbGltaXRGYWN0b3IgKiBkZXZp
YXRpb247Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkr
KykKLSAgICAgICAgICAgICAgICByZXN1bHRzW2ldID0gY291bnRWYWx1ZXNPblNhbWVTaWRlKHZh
bHVlcywgbW92aW5nQXZlcmFnZXMsIGxpbWl0LCBpLCB3aW5kb3dTaXplKSA+PSBtaW5PdXRsaW5l
ckNvdW50ID8gd2luZG93U2l6ZSA6IDA7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIGNvdW50VmFsdWVzT25TYW1lU2lkZSh2YWx1
ZXMsIG1vdmluZ0F2ZXJhZ2VzLCBsaW1pdCwgc3RhcnRJbmRleCwgd2luZG93U2l6ZSkgewotICAg
ICAgICB2YXIgdmFsdWVzQWJvdmVMaW1pdCA9IDA7Ci0gICAgICAgIHZhciB2YWx1ZXNCZWxvd0xp
bWl0ID0gMDsKLSAgICAgICAgdmFyIGNlbnRlciA9IG1vdmluZ0F2ZXJhZ2VzW3N0YXJ0SW5kZXhd
OwotICAgICAgICBmb3IgKHZhciBpID0gc3RhcnRJbmRleDsgaSA8IHN0YXJ0SW5kZXggKyB3aW5k
b3dTaXplICYmIGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIHZhciBkaWZm
ID0gdmFsdWVzW2ldIC0gY2VudGVyOwotICAgICAgICAgICAgdmFsdWVzQWJvdmVMaW1pdCArPSAo
ZGlmZiA+IGxpbWl0KTsKLSAgICAgICAgICAgIHZhbHVlc0JlbG93TGltaXQgKz0gKGRpZmYgPCAt
bGltaXQpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBNYXRoLm1heCh2YWx1ZXNBYm92ZUxp
bWl0LCB2YWx1ZXNCZWxvd0xpbWl0KTsKLSAgICB9Ci0KLSAgICB0aGlzLkFub21hbHlEZXRlY3Rp
b25TdHJhdGVneSA9IFsKLSAgICAgICAgLy8gV2VzdGVybiBFbGVjdHJpYyBydWxlczogaHR0cDov
L2VuLndpa2lwZWRpYS5vcmcvd2lraS9XZXN0ZXJuX0VsZWN0cmljX3J1bGVzCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlkOiAyMDAsCi0gICAgICAgICAgICBsYWJlbDogJ1dlc3Rlcm4gRWxlY3Ry
aWM6IGFueSBwb2ludCBiZXlvbmQgM8+DJywKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQW55
IHNpbmdsZSBwb2ludCBmYWxscyBvdXRzaWRlIDPPgyBsaW1pdCBmcm9tIHRoZSBtb3ZpbmcgYXZl
cmFnZScsCi0gICAgICAgICAgICBleGVjdXRlOiBjcmVhdGVXZXN0ZXJuRWxlY3RyaWNSdWxlKDEs
IDEsIDMpLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICBpZDogMjAxLAotICAg
ICAgICAgICAgbGFiZWw6ICdXZXN0ZXJuIEVsZWN0cmljOiAyLzMgcG9pbnRzIGJleW9uZCAyz4Mn
LAotICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUd28gb3V0IG9mIHRocmVlIGNvbnNlY3V0aXZl
IHBvaW50cyBmYWxsIG91dHNpZGUgMs+DIGxpbWl0IGZyb20gdGhlIG1vdmluZyBhdmVyYWdlIG9u
IHRoZSBzYW1lIHNpZGUnLAotICAgICAgICAgICAgZXhlY3V0ZTogY3JlYXRlV2VzdGVybkVsZWN0
cmljUnVsZSgzLCAyLCAyKSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgaWQ6
IDIwMiwKLSAgICAgICAgICAgIGxhYmVsOiAnV2VzdGVybiBFbGVjdHJpYzogNC81IHBvaW50cyBi
ZXlvbmQgz4MnLAotICAgICAgICAgICAgZGVzY3JpcHRpb246ICdGb3VyIG91dCBvZiBmaXZlIGNv
bnNlY3V0aXZlIHBvaW50cyBmYWxsIG91dHNpZGUgMs+DIGxpbWl0IGZyb20gdGhlIG1vdmluZyBh
dmVyYWdlIG9uIHRoZSBzYW1lIHNpZGUnLAotICAgICAgICAgICAgZXhlY3V0ZTogY3JlYXRlV2Vz
dGVybkVsZWN0cmljUnVsZSg1LCA0LCAxKSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAg
ICAgICAgaWQ6IDIwMywKLSAgICAgICAgICAgIGxhYmVsOiAnV2VzdGVybiBFbGVjdHJpYzogOSBw
b2ludHMgb24gc2FtZSBzaWRlJywKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTmluZSBjb25z
ZWN1dGl2ZSBwb2ludHMgb24gdGhlIHNhbWUgc2lkZSBvZiB0aGUgbW92aW5nIGF2ZXJhZ2UnLAot
ICAgICAgICAgICAgZXhlY3V0ZTogY3JlYXRlV2VzdGVybkVsZWN0cmljUnVsZSg5LCA5LCAwKSwK
LSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgaWQ6IDIxMCwKLSAgICAgICAgICAg
IGxhYmVsOiAnTW96aWxsYTogdC10ZXN0IDUgdnMuIDIwIGJlZm9yZSB0aGF0JywKLSAgICAgICAg
ICAgIGRlc2NyaXB0aW9uOiAiVXNlIHN0dWRlbnQncyB0LXRlc3QgdG8gZGV0ZXJtaW5lIHdoZXRo
ZXIgdGhlIG1lYW4gb2YgdGhlIGxhc3QgZml2ZSBkYXRhIHBvaW50cyBkaWZmZXJzIGZyb20gdGhl
IG1lYW4gb2YgdGhlIHR3ZW50eSB2YWx1ZXMgYmVmb3JlIHRoYXQiLAotICAgICAgICAgICAgZXhl
Y3V0ZTogZnVuY3Rpb24gKHZhbHVlcywgbW92aW5nQXZlcmFnZXMsIGRldmlhdGlvbikgewotICAg
ICAgICAgICAgICAgIHZhciByZXN1bHRzID0gbmV3IEFycmF5KHZhbHVlcy5sZW5ndGgpOwotICAg
ICAgICAgICAgICAgIHZhciBwID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDIwOyBpIDwgdmFsdWVzLmxlbmd0aCAtIDU7IGkrKykKLSAgICAgICAgICAgICAgICAgICAgcmVz
dWx0c1tpXSA9IFN0YXRpc3RpY3MudGVzdFdlbGNoc1QodmFsdWVzLnNsaWNlKGkgLSAyMCwgaSks
IHZhbHVlcy5zbGljZShpLCBpICsgNSksIDAuOTgpID8gNSA6IDA7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdHM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgXQotCi0gICAg
dGhpcy5leGVjdXRlU3RyYXRlZ3kgPSBmdW5jdGlvbiAoc3RyYXRlZ3ksIHJhd1ZhbHVlcywgYWRk
aXRpb25hbEFyZ3VtZW50cykKLSAgICB7Ci0gICAgICAgIHZhciBwYXJhbWV0ZXJzID0gKHN0cmF0
ZWd5LnBhcmFtZXRlckxpc3QgfHwgW10pLm1hcChmdW5jdGlvbiAocGFyYW0pIHsKLSAgICAgICAg
ICAgIHZhciBwYXJzZWQgPSBwYXJzZUZsb2F0KHBhcmFtLnZhbHVlKTsKLSAgICAgICAgICAgIHJl
dHVybiBNYXRoLm1pbihwYXJhbS5tYXggfHwgSW5maW5pdHksIE1hdGgubWF4KHBhcmFtLm1pbiB8
fCAtSW5maW5pdHksIGlzTmFOKHBhcnNlZCkgPyAwIDogcGFyc2VkKSk7Ci0gICAgICAgIH0pOwot
ICAgICAgICBwYXJhbWV0ZXJzLnB1c2gocmF3VmFsdWVzKTsKLSAgICAgICAgcmV0dXJuIHN0cmF0
ZWd5LmV4ZWN1dGUuYXBwbHkoc3RyYXRlZ3ksIHBhcmFtZXRlcnMuY29uY2F0KGFkZGl0aW9uYWxB
cmd1bWVudHMpKTsKLSAgICB9OwotCi19KSgpOwotCi1pZiAodHlwZW9mIG1vZHVsZSAhPSAndW5k
ZWZpbmVkJykgewotICAgIGZvciAodmFyIGtleSBpbiBTdGF0aXN0aWNzKQotICAgICAgICBtb2R1
bGUuZXhwb3J0c1trZXldID0gU3RhdGlzdGljc1trZXldOwotfQpJbmRleDogV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92My9pbmRleC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvaW5kZXguaHRtbAkocmV2aXNpb24gMTk2NjAzKQor
KysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9pbmRleC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIFJ1biB0b29scy9idW5kbGUtdjMtc2NyaXB0cyB0byBz
cGVlZCB1cCAKICAgICA8L3NjcmlwdD4KIAogICAgIDx0ZW1wbGF0ZSBpZD0idW5idW5kbGVkLXNj
cmlwdHMiPgotICAgICAgICA8c2NyaXB0IHNyYz0iLi4vdjIvanMvc3RhdGlzdGljcy5qcyI+PC9z
Y3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi9zaGFyZWQvc3RhdGlzdGljcy5qcyI+PC9z
Y3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSIuLi92Mi9kYXRhLmpzIj48L3NjcmlwdD4KIAog
ICAgICAgICA8c2NyaXB0IHNyYz0iaW5zdHJ1bWVudGF0aW9uLmpzIj48L3NjcmlwdD4KSW5kZXg6
IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9kZXRlY3QtY2hhbmdlcy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvZGV0ZWN0LWNoYW5nZXMuanMJ
KHJldmlzaW9uIDE5NjYwMykKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9kZXRl
Y3QtY2hhbmdlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAgdmFyIGh0dHAgPSBy
ZXF1aXJlKCdodHRwJyk7CiB2YXIgaHR0cHMgPSByZXF1aXJlKCdodHRwcycpOwogdmFyIGRhdGEg
PSByZXF1aXJlKCcuLi9wdWJsaWMvdjIvZGF0YS5qcycpOwogdmFyIFJ1bnNEYXRhID0gZGF0YS5S
dW5zRGF0YTsKLXZhciBTdGF0aXN0aWNzID0gcmVxdWlyZSgnLi4vcHVibGljL3YyL2pzL3N0YXRp
c3RpY3MuanMnKTsKK3ZhciBTdGF0aXN0aWNzID0gcmVxdWlyZSgnLi4vcHVibGljL3NoYXJlZC9z
dGF0aXN0aWNzLmpzJyk7CiAKIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgdXNlIGEgZ2xvYmFsIHZh
cmlhYmxlIGxpa2UgdGhpcy4KIHZhciBzZXR0aW5nczsK
</data>
<flag name="review"
          id="296203"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>