Skip to content

Instantly share code, notes, and snippets.

@h-anima
Last active July 2, 2025 22:45
Show Gist options
  • Save h-anima/01599d8320d36d0690268480246fd70d to your computer and use it in GitHub Desktop.
Save h-anima/01599d8320d36d0690268480246fd70d to your computer and use it in GitHub Desktop.
Bot.b64
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwojIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQoKIyA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdIUCBDSEVDS0VS
IEJPVAojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgRGVzY3JpcHRpb246IAojICAgQWR2YW5jZWQg
Y3JlZGVudGlhbCBjaGVja2VyIHdpdGggY29uZmlndXJhYmxlIHNldHRpbmdzIHZpYSBjb25maWcu
anNvbgojICAgTm93IHN1cHBvcnRzIE1pY3Jvc29mdCwgR29vZ2xlLCBZYWhvbywgQXBwbGUsIEFP
TCwgUHJvdG9uTWFpbCBhbmQgMTArIG90aGVyIHByb3ZpZGVycwojICAgSW5jbHVkZXMgc3BvbnNv
ciBtb2RlIGZvciBub24tcHJlbWl1bSB1c2VycyB3aXRoIGxpbWl0ZWQgZmVhdHVyZXMKIyA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQoKaW1wb3J0IG9zCmltcG9ydCB1dWlkCmltcG9ydCBjb25jdXJyZW50
LmZ1dHVyZXMKZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVkZWx0YQppbXBvcnQg
cmVxdWVzdHMKaW1wb3J0IGFzeW5jaW8KZnJvbSB0aHJlYWRpbmcgaW1wb3J0IExvY2sKaW1wb3J0
IHNodXRpbAppbXBvcnQganNvbgppbXBvcnQgdGltZQppbXBvcnQgaW1hcGxpYgppbXBvcnQgc3Ns
CmltcG9ydCByZQppbXBvcnQgc3lzCmZyb20gdHlwaW5nIGltcG9ydCBBbnksIENhbGxhYmxlLCBM
aXN0LCBEaWN0LCBUdXBsZSwgU2V0LCBPcHRpb25hbAppbXBvcnQgZnVuY3Rvb2xzCmZyb20gY29s
bGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0LCBkZXF1ZQppbXBvcnQgZGlzY29yZApmcm9tIGRp
c2NvcmQuZXh0IGltcG9ydCBjb21tYW5kcwpmcm9tIGRpc2NvcmQgaW1wb3J0IGFwcF9jb21tYW5k
cwppbXBvcnQgc3VicHJvY2VzcwoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICAgICAgICAgICAg
ICAgICAgICAgQ09ORklHVVJBVElPTiBTWVNURU0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojIExv
YWQgY29uZmlndXJhdGlvbiBmcm9tIGNvbmZpZy5qc29uIGZpbGUKIyBDcmVhdGVzIGEgZGVmYXVs
dCBjb25maWcgaWYgZmlsZSBkb2Vzbid0IGV4aXN0CiMgPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KREVG
QVVMVF9DT05GSUcgPSB7CiAgICAiVE9LRU4iOiAiTVRNNE1qUTVNall4TmpNMU1qQTNNVFk0TVEu
R2RHclFRLlVCZ1ZfanlUN1hUVGprbWVHYlk5cXJiYUhaeTh6U2hYZ2FvbndBIiwKICAgICJSRVFV
SVJFRF9HVUlMRF9JRCI6IDEzNjkxNDExMzMwOTkyNzQyOTAsCiAgICAiUkVRVUlSRURfUk9MRV9J
RCI6IDEzODUwMDc4NzU5MSwKICAgICJBTExPV0VEX0NIQU5ORUxfSUQiOiAxMzg0NjMyNjE4NDIy
NjMyNjU5LAogICAgIk9SSUdJTkFMX1NFUlZFUl9JRCI6IDEzNjkxNDExMzMwOTkyNzQyOTAsICAj
IEFkZCBvcmlnaW5hbCBzZXJ2ZXIgSUQKICAgICJPV05FUlMiOiBbMTEwMTg2NTIwNTM3OTYyOTE3
OCwgMTI3NTU5MzkyNjA4MTkwNDY5MV0sCiAgICAiQ09PTERPV05fU0VDT05EUyI6IDUwMCwKICAg
ICJCQU5ORVJfVVJMIjogImh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2F0dGFjaG1lbnRzLzEz
NTM1OTIxODUxNjUwNTgxOTgvMTM4NDI2NDgwNDkxNDU2NTE3MC9tYWlsLWljb24tMjAxOHgyMDQ4
LTBia2R0dWYxLnBuZz9leD02ODUxY2M4ZiZpcz02ODUwN2IwZiZobT05MGVkMzc2NTY4OTNkYjQw
YmE2NTVjZGI5NjcxODQzYTFhZGM5NTRjYTRjZGZkN2JlMTllYmJmZDViNTUyY2YyJiIsCiAgICAi
UkVTVUxUU19GT0xERVIiOiAicmVzdWx0cyIsCiAgICAiVFJJQUxfREJfRklMRSI6ICJ0cmlhbF9k
Yi5qc29uIiwKICAgICJXSElURUxJU1RfREJfRklMRSI6ICJ3aGl0ZWxpc3QuanNvbiIsCiAgICAi
Q09ORklHX0ZJTEUiOiAiY29uZmlnLmpzb24iCn0KCiMgVHJ5IHRvIGxvYWQgZXhpc3RpbmcgY29u
ZmlnIG9yIGNyZWF0ZSBuZXcgb25lCnRyeToKICAgIGlmIG9zLnBhdGguZXhpc3RzKCJjb25maWcu
anNvbiIpOgogICAgICAgIHdpdGggb3BlbigiY29uZmlnLmpzb24iLCAiciIpIGFzIGY6CiAgICAg
ICAgICAgIGNvbmZpZyA9IGpzb24ubG9hZChmKQogICAgZWxzZToKICAgICAgICBjb25maWcgPSBE
RUZBVUxUX0NPTkZJRwogICAgICAgIHdpdGggb3BlbigiY29uZmlnLmpzb24iLCAidyIpIGFzIGY6
CiAgICAgICAgICAgIGpzb24uZHVtcChjb25maWcsIGYsIGluZGVudD00KQpleGNlcHQgRXhjZXB0
aW9uIGFzIGU6CiAgICBwcmludChmIkVycm9yIGxvYWRpbmcgY29uZmlnOiB7ZX0iKQogICAgY29u
ZmlnID0gREVGQVVMVF9DT05GSUcKCiMgU2V0IGdsb2JhbCB2YXJpYWJsZXMgZnJvbSBjb25maWcK
VE9LRU4gPSBjb25maWdbIk1UTTRNalE1TWpZeE5qTTFNakEzTVRZNE1RLkdkR3JRUS5VQmdWX2p5
VDdYVFRqa21lR2JZOXFyYmFIWnk4elNoWGdhb253QSJdClJFUVVJUkVEX0dVSUxEX0lEID0gY29u
ZmlnWyIxMzg5ODM1NjkyNjE5NzI2OTExIl0KUkVRVUlSRURfUk9MRV9JRCA9IGNvbmZpZ1siMTM4
OTg0OTQzOTc3NDE3OTQwOCJdCkFMTE9XRURfQ0hBTk5FTF9JRCA9IGNvbmZpZ1siMTM4OTgzODI3
MTYzNDQ3NzE3NyJdCk9SSUdJTkFMX1NFUlZFUl9JRCA9IGNvbmZpZ1siMTM4OTgzNTY5MjYxOTcy
NjkxMSJdCk9XTkVSUyA9IHNldChjb25maWdbIk9XTkVSUyJdKQpDT09MRE9XTl9TRUNPTkRTID0g
Y29uZmlnWyIzMDAiXQpCQU5ORVJfVVJMID0gY29uZmlnWyJodHRwczovL2Nkbi5kaXNjb3JkYXBw
LmNvbS9hdHRhY2htZW50cy8xMzg4OTcxNjY2Nzc1ODY3NDM1LzEzODk5NDMxNzMwNTIyNDAwMjIv
ZG9lcy1hbnlvbmUtaGF2ZS1hLWNsdWUtd2hpY2gtbWFuZ2Etb3ItbGlnaHQtbm92ZWwtc2VyaWVz
LXYwLTJhaGsyOHJxanFqYzEuanBnP2V4PTY4NjY3NGY0JmlzPTY4NjUyMzc0JmhtPThiNmU1Yjlh
OTRjOGNkNmVhNWI3NGI4YjVmNzM2MTBjZmUyZTI5MDU1YzU5YjkxZTg1NjdhYjk5OTVjODQyNjAm
Il0KUkVTVUxUU19GT0xERVIgPSBjb25maWdbIlJFU1VMVFNfRk9MREVSIl0KVFJJQUxfREJfRklM
RSA9IGNvbmZpZ1siVFJJQUxfREJfRklMRSJdCldISVRFTElTVF9EQl9GSUxFID0gY29uZmlnWyJX
SElURUxJU1RfREJfRklMRSJdCgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgICAgICAgICAgICAg
ICAgICAgICBTRVJWSUNFIE1BUFBJTkdTCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyBGdWxsIHNl
cnZpY2UgbWFwcGluZyBmb3IgcHJlbWl1bSB1c2VycwpBTExfU0VSVklDRV9NQVBQSU5HID0gewog
ICAgIlJvYmxveCI6ICJuby1yZXBseUByb2Jsb3guY29tIiwKICAgICJQb2vDqW1vbiI6ICJub3Jl
cGx5QGFjY291bnRzLm5pYW50aWNsYWJzLmNvbSIsCiAgICAiQU1TIjogImFybXltZW5zdHJpa2VA
Z21haWwuY29tIiwKICAgICJGYWNlYm9vayI6ICJzZWN1cml0eUBmYWNlYm9va21haWwuY29tIiwK
ICAgICJJbnN0YWdyYW0iOiAic2VjdXJpdHlAbWFpbC5pbnN0YWdyYW0uY29tIiwKICAgICJQVUJH
IjogIm5vcmVwbHlAcHViZ21vYmlsZS5jb20iLAogICAgIktvbmFtaSI6ICJuaW50ZW5kby1ub3Jl
cGx5QGNjZy5uaW50ZW5kby5jb20iLAogICAgIlRpa1RvayI6ICJyZWdpc3RlckBhY2NvdW50LnRp
a3Rvay5jb20iLAogICAgIlR3aXR0ZXIiOiAiaW5mb0B4LmNvbSIsCiAgICAiUGF5UGFsIjogInNl
cnZpY2VAcGF5cGFsLmNvbS5iciIsCiAgICAiQmluYW5jZSI6ICJkby1ub3QtcmVwbHlAc2VzLmJp
bmFuY2UuY29tIiwKICAgICJOZXRmbGl4IjogImluZm9AYWNjb3VudC5uZXRmbGl4LmNvbSIsCiAg
ICAiUGxheVN0YXRpb24iOiAicmVwbHlAdHhuLWVtYWlsLnBsYXlzdGF0aW9uLmNvbSIsCiAgICAi
U3VwZXJjZWxsIjogIm5vcmVwbHlAaWQuc3VwZXJjZWxsLmNvbSIsCiAgICAiRXBpY2dhbWVzIjog
ImhlbHBAYWNjdC5lcGljZ2FtZXMuY29tIiwKICAgICJTcG90aWZ5IjogIm5vLXJlcGx5QHNwb3Rp
ZnkuY29tIiwKICAgICJSb2Nrc3RhciI6ICJub3JlcGx5QHJvY2tzdGFyZ2FtZXMuY29tIiwKICAg
ICJYYm94IjogInhib3hyZXBzQGVuZ2FnZS54Ym94LmNvbSIsCiAgICAiTWljcm9zb2Z0IjogImFj
Y291bnQtc2VjdXJpdHktbm9yZXBseUBhY2NvdW50cHJvdGVjdGlvbi5taWNyb3NvZnQuY29tIiwK
ICAgICJTdGVhbSI6ICJub3JlcGx5QHN0ZWFtcG93ZXJlZC5jb20iLAogICAgIkVBIFNwb3J0cyI6
ICJFQUBlLmVhLmNvbSIsCiAgICAiQml0a3ViIjogIm5vLXJlcGx5QGJpdGt1Yi5jb20iLAogICAg
IkRpc2NvcmQiOiAibm9yZXBseUBkaXNjb3JkYXBwLmNvbSIsCiAgICAiT25seUZhbnMiOiAibm9y
ZXBseUBvbmx5ZmFucy5jb20iLAogICAgIk1pbmVjcmFmdCI6ICJub3JlcGx5QG1pbmVjcmFmdC5u
ZXQiLAogICAgIkdtYWlsIjogIm5vLXJlcGx5QGdtYWlsLmNvbSIsCiAgICAiWWFob28iOiAibm8t
cmVwbHlAeWFob28uY29tIiwKICAgICJPdXRsb29rIjogIm5vcmVwbHlAb3V0bG9vay5jb20iLAog
ICAgIkFPTCI6ICJub3JlcGx5QGFvbC5jb20iLAogICAgIkhvdG1haWwiOiAibm9yZXBseUBob3Rt
YWlsLmNvbSIsCiAgICAiWm9obyI6ICJub3JlcGx5QHpvaG8uY29tIiwKICAgICJQcm90b25NYWls
IjogIm5vcmVwbHlAcHJvdG9ubWFpbC5jb20iLAogICAgIllhbmRleCI6ICJub3JlcGx5QHlhbmRl
eC5ydSIsCiAgICAiR01YIjogIm5vcmVwbHlAZ214LmNvbSIsCiAgICAiTWFpbC5jb20iOiAibm9y
ZXBseUBtYWlsLmNvbSIsCiAgICAiaUNsb3VkIjogIm5vcmVwbHlAaWNsb3VkLmNvbSIsCiAgICAi
QW1hem9uIjogIm5vcmVwbHlAYW1hem9uLmNvbSIsCiAgICAiZUJheSI6ICJub3JlcGx5QGViYXku
Y29tIiwKICAgICJXYWxtYXJ0IjogIm5vcmVwbHlAd2FsbWFydC5jb20iLAogICAgIlRhcmdldCI6
ICJub3JlcGx5QHRhcmdldC5jb20iLAogICAgIkJlc3RCdXkiOiAibm9yZXBseUBiZXN0YnV5LmNv
bSIsCiAgICAiQ29zdGNvIjogIm5vcmVwbHlAY29zdGNvLmNvbSIsCiAgICAiSG9tZSBEZXBvdCI6
ICJub3JlcGx5QGhvbWVkZXBvdC5jb20iLAogICAgIkxvd2UncyI6ICJub3JlcGx5QGxvd2VzLmNv
bSIsCiAgICAiSUtFQSI6ICJub3JlcGx5QGlrZWEuY29tIiwKICAgICJXYXlmYWlyIjogIm5vcmVw
bHlAd2F5ZmFpci5jb20iLAogICAgIlViZXIiOiAibm9yZXBseUB1YmVyLmNvbSIsCiAgICAiTHlm
dCI6ICJub3JlcGx5QGx5ZnQuY29tIiwKICAgICJHcmFiIjogIm5vcmVwbHlAZ3JhYi5jb20iLAog
ICAgIk9sYSI6ICJub3JlcGx5QG9sYS5jb20iLAogICAgIkFpcmJuYiI6ICJub3JlcGx5QGFpcmJu
Yi5jb20iLAogICAgIkJvb2tpbmcuY29tIjogIm5vcmVwbHlAYm9va2luZy5jb20iLAogICAgIkV4
cGVkaWEiOiAibm9yZXBseUBleHBlZGlhLmNvbSIsCiAgICAiSG90ZWxzLmNvbSI6ICJub3JlcGx5
QGhvdGVscy5jb20iLAogICAgIlRyaXBBZHZpc29yIjogIm5vcmVwbHlAdHJpcGFkdmlzb3IuY29t
IiwKICAgICJMaW5rZWRJbiI6ICJub3JlcGx5QGxpbmtlZGluLmNvbSIsCiAgICAiUmVkZGl0Ijog
Im5vcmVwbHlAcmVkZGl0LmNvbSIsCiAgICAiUGludGVyZXN0IjogIm5vcmVwbHlAcGludGVyZXN0
LmNvbSIsCiAgICAiVHVtYmxyIjogIm5vcmVwbHlAdHVtYmxyLmNvbSIsCiAgICAiU25hcGNoYXQi
OiAibm9yZXBseUBzbmFwY2hhdC5jb20iLAogICAgIldoYXRzQXBwIjogIm5vcmVwbHlAd2hhdHNh
cHAuY29tIiwKICAgICJXZUNoYXQiOiAibm9yZXBseUB3ZWNoYXQuY29tIiwKICAgICJUZWxlZ3Jh
bSI6ICJub3JlcGx5QHRlbGVncmFtLmNvbSIsCiAgICAiWm9vbSI6ICJub3JlcGx5QHpvb20udXMi
LAogICAgIk1pY3Jvc29mdCBUZWFtcyI6ICJub3JlcGx5QHRlYW1zLm1pY3Jvc29mdC5jb20iLAog
ICAgIlNsYWNrIjogIm5vcmVwbHlAc2xhY2suY29tIiwKICAgICJTa3lwZSI6ICJub3JlcGx5QHNr
eXBlLmNvbSIsCiAgICAiR2l0SHViIjogIm5vcmVwbHlAZ2l0aHViLmNvbSIsCiAgICAiR2l0TGFi
IjogIm5vcmVwbHlAZ2l0bGFiLmNvbSIsCiAgICAiQml0YnVja2V0IjogIm5vcmVwbHlAYml0YnVj
a2V0LmNvbSIsCiAgICAiU3RhY2tPdmVyZmxvdyI6ICJub3JlcGx5QHN0YWNrb3ZlcmZsb3cuY29t
IiwKICAgICJNZWRpdW0iOiAibm9yZXBseUBtZWRpdW0uY29tIiwKICAgICJXb3JkUHJlc3MiOiAi
bm9yZXBseUB3b3JkcHJlc3MuY29tIiwKICAgICJCbG9nZ2VyIjogIm5vcmVwbHlAYmxvZ2dlci5j
b20iLAogICAgIldpeCI6ICJub3JlcGx5QHdpeC5jb20iLAogICAgIlNxdWFyZXNwYWNlIjogIm5v
cmVwbHlAc3F1YXJlc3BhY2UuY29tIiwKICAgICJXZWVibHkiOiAibm9yZXBseUB3ZWVibHkuY29t
IiwKICAgICJBZG9iZSI6ICJub3JlcGx5QGFkb2JlLmNvbSIsCiAgICAiQ2FudmEiOiAibm9yZXBs
eUBjYW52YS5jb20iLAogICAgIkZpZ21hIjogIm5vcmVwbHlAZmlnbWEuY29tIiwKICAgICJTa2V0
Y2giOiAibm9yZXBseUBza2V0Y2guY29tIiwKICAgICJEcm9wYm94IjogIm5vcmVwbHlAZHJvcGJv
eC5jb20iLAogICAgIkdvb2dsZSBEcml2ZSI6ICJub3JlcGx5QGRyaXZlLmdvb2dsZS5jb20iLAog
ICAgIk9uZURyaXZlIjogIm5vcmVwbHlAb25lZHJpdmUuY29tIiwKICAgICJCb3giOiAibm9yZXBs
eUBib3guY29tIiwKICAgICJTYWxlc2ZvcmNlIjogIm5vcmVwbHlAc2FsZXNmb3JjZS5jb20iLAog
ICAgIkh1YlNwb3QiOiAibm9yZXBseUBodWJzcG90LmNvbSIsCiAgICAiWm9obyBDUk0iOiAibm9y
ZXBseUB6b2hvY3JtLmNvbSIsCiAgICAiU0FQIjogIm5vcmVwbHlAc2FwLmNvbSIsCiAgICAiT3Jh
Y2xlIjogIm5vcmVwbHlAb3JhY2xlLmNvbSIsCiAgICAiU3RyaXBlIjogIm5vcmVwbHlAc3RyaXBl
LmNvbSIsCiAgICAiU3F1YXJlIjogIm5vcmVwbHlAc3F1YXJlLmNvbSIsCiAgICAiQnJhaW50cmVl
IjogIm5vcmVwbHlAYnJhaW50cmVlLmNvbSIsCiAgICAiVmlzYSI6ICJub3JlcGx5QHZpc2EuY29t
IiwKICAgICJNYXN0ZXJjYXJkIjogIm5vcmVwbHlAbWFzdGVyY2FyZC5jb20iLAogICAgIkFtZXJp
Y2FuIEV4cHJlc3MiOiAibm9yZXBseUBhbWV4LmNvbSIsCiAgICAiRGlzY292ZXIiOiAibm9yZXBs
eUBkaXNjb3Zlci5jb20iLAogICAgIkNOTiI6ICJub3JlcGx5QGNubi5jb20iLAogICAgIkJCQyI6
ICJub3JlcGx5QGJiYy5jb20iLAogICAgIkZveCBOZXdzIjogIm5vcmVwbHlAZm94bmV3cy5jb20i
LAogICAgIk5CQyI6ICJub3JlcGx5QG5iYy5jb20iLAogICAgIkNCUyI6ICJub3JlcGx5QGNicy5j
b20iLAogICAgIkVTUE4iOiAibm9yZXBseUBlc3BuLmNvbSIsCiAgICAiU2t5IFNwb3J0cyI6ICJu
b3JlcGx5QHNreXNwb3J0cy5jb20iLAogICAgIkV1cm9zcG9ydCI6ICJub3JlcGx5QGV1cm9zcG9y
dC5jb20iLAogICAgIk5ldyBZb3JrIFRpbWVzIjogIm5vcmVwbHlAbnl0aW1lcy5jb20iLAogICAg
Ildhc2hpbmd0b24gUG9zdCI6ICJub3JlcGx5QHdhc2hpbmd0b25wb3N0LmNvbSIsCiAgICAiVGhl
IEd1YXJkaWFuIjogIm5vcmVwbHlAdGhlZ3VhcmRpYW4uY29tIiwKICAgICJIdWx1IjogIm5vcmVw
bHlAaHVsdS5jb20iLAogICAgIkFtYXpvbiBQcmltZSBWaWRlbyI6ICJub3JlcGx5QHByaW1ldmlk
ZW8uY29tIiwKICAgICJEaXNuZXkrIjogIm5vcmVwbHlAZGlzbmV5cGx1cy5jb20iLAogICAgIkhC
TyBNYXgiOiAibm9yZXBseUBoYm9tYXguY29tIiwKICAgICJQZWFjb2NrIjogIm5vcmVwbHlAcGVh
Y29ja3R2LmNvbSIsCiAgICAiT3JpZ2luIjogIm5vcmVwbHlAb3JpZ2luLmNvbSIsCiAgICAiQmxp
enphcmQiOiAibm9yZXBseUBibGl6emFyZC5jb20iLAogICAgIlJpb3QgR2FtZXMiOiAibm9yZXBs
eUByaW90Z2FtZXMuY29tIiwKICAgICJTb3VuZENsb3VkIjogIm5vcmVwbHlAc291bmRjbG91ZC5j
b20iLAogICAgIlBhbmRvcmEiOiAibm9yZXBseUBwYW5kb3JhLmNvbSIsCiAgICAiRXRzeSI6ICJu
b3JlcGx5QGV0c3kuY29tIiwKICAgICJBbGlFeHByZXNzIjogIm5vcmVwbHlAYWxpZXhwcmVzcy5j
b20iLAogICAgIkFsaWJhYmEiOiAibm9yZXBseUBhbGliYWJhLmNvbSIsCiAgICAiVHJlbGxvIjog
Im5vcmVwbHlAdHJlbGxvLmNvbSIsCiAgICAiQXNhbmEiOiAibm9yZXBseUBhc2FuYS5jb20iLAog
ICAgIk1vbmRheS5jb20iOiAibm9yZXBseUBtb25kYXkuY29tIiwKICAgICJKaXJhIjogIm5vcmVw
bHlAamlyYS5jb20iLAogICAgIk5vdGlvbiI6ICJub3JlcGx5QG5vdGlvbi5jb20iLAogICAgIkV2
ZXJub3RlIjogIm5vcmVwbHlAZXZlcm5vdGUuY29tIiwKICAgICJUb2RvaXN0IjogIm5vcmVwbHlA
dG9kb2lzdC5jb20iLAogICAgIkdvRGFkZHkiOiAibm9yZXBseUBnb2RhZGR5LmNvbSIsCiAgICAi
TmFtZWNoZWFwIjogIm5vcmVwbHlAbmFtZWNoZWFwLmNvbSIsCiAgICAiZVRvcm8iOiAibm9yZXBs
eUBldG9yby5jb20iLAogICAgIlJvYmluaG9vZCI6ICJub3JlcGx5QHJvYmluaG9vZC5jb20iLAog
ICAgIkNvaW5iYXNlIjogIm5vcmVwbHlAY29pbmJhc2UuY29tIiwKICAgICJLcmFrZW4iOiAibm9y
ZXBseUBrcmFrZW4uY29tIiwKICAgICJRdW9yYSI6ICJub3JlcGx5QHF1b3JhLmNvbSIsCiAgICAi
U3RhY2tFeGNoYW5nZSI6ICJub3JlcGx5QHN0YWNrZXhjaGFuZ2UuY29tIiwKICAgICJLaGFuIEFj
YWRlbXkiOiAibm9yZXBseUBraGFuYWNhZGVteS5vcmciLAogICAgIkNvdXJzZXJhIjogIm5vcmVw
bHlAY291cnNlcmEub3JnIiwKICAgICJVZGVteSI6ICJub3JlcGx5QHVkZW15LmNvbSIsCiAgICAi
ZWRYIjogIm5vcmVwbHlAZWR4Lm9yZyIsCiAgICAiWmlsbG93IjogIm5vcmVwbHlAemlsbG93LmNv
bSIsCiAgICAiVHJ1bGlhIjogIm5vcmVwbHlAdHJ1bGlhLmNvbSIsCiAgICAiUmVkZmluIjogIm5v
cmVwbHlAcmVkZmluLmNvbSIsCiAgICAiTWludCI6ICJub3JlcGx5QG1pbnQuY29tIiwKICAgICJR
dWlja0Jvb2tzIjogIm5vcmVwbHlAcXVpY2tib29rcy5jb20iLAogICAgIlR1cmJvVGF4IjogIm5v
cmVwbHlAdHVyYm90YXguY29tIiwKICAgICJWZW5tbyI6ICJub3JlcGx5QHZlbm1vLmNvbSIsCiAg
ICAiQ2FzaCBBcHAiOiAibm9yZXBseUBjYXNoYXBwLmNvbSIsCiAgICAiTWFycmlvdHQiOiAibm9y
ZXBseUBtYXJyaW90dC5jb20iLAogICAgIkhpbHRvbiI6ICJub3JlcGx5QGhpbHRvbi5jb20iLAog
ICAgIkh5YXR0IjogIm5vcmVwbHlAaHlhdHQuY29tIiwKICAgICJOYXRpb25hbCBHZW9ncmFwaGlj
IjogIm5vcmVwbHlAbmF0Z2VvLmNvbSIsCiAgICAiTmlrb24iOiAibm9yZXBseUBuaWtvbi5jb20i
LAogICAgIkNhbm9uIjogIm5vcmVwbHlAY2Fub24uY29tIiwKICAgICJTb255IjogIm5vcmVwbHlA
c29ueS5jb20iLAogICAgIkRlbGwiOiAibm9yZXBseUBkZWxsLmNvbSIsCiAgICAiSFAiOiAibm9y
ZXBseUBocC5jb20iLAogICAgIkxlbm92byI6ICJub3JlcGx5QGxlbm92by5jb20iLAogICAgIkFj
ZXIiOiAibm9yZXBseUBhY2VyLmNvbSIsCiAgICAiQXN1cyI6ICJub3JlcGx5QGFzdXMuY29tIiwK
ICAgICJJbnRlbCI6ICJub3JlcGx5QGludGVsLmNvbSIsCiAgICAiQU1EIjogIm5vcmVwbHlAYW1k
LmNvbSIsCiAgICAiSUJNIjogIm5vcmVwbHlAaWJtLmNvbSIsCiAgICAiQ2lzY28iOiAibm9yZXBs
eUBjaXNjby5jb20iLAogICAgIkZlZEV4IjogIm5vcmVwbHlAZmVkZXguY29tIiwKICAgICJVUFMi
OiAibm9yZXBseUB1cHMuY29tIiwKICAgICJESEwiOiAibm9yZXBseUBkaGwuY29tIiwKICAgICJV
U1BTIjogIm5vcmVwbHlAdXNwcy5jb20iLAogICAgIk1hZXJzayI6ICJub3JlcGx5QG1hZXJzay5j
b20iLAogICAgIlNoZWxsIjogIm5vcmVwbHlAc2hlbGwuY29tIiwKICAgICJCUCI6ICJub3JlcGx5
QGJwLmNvbSIsCiAgICAiQ2hldnJvbiI6ICJub3JlcGx5QGNoZXZyb24uY29tIiwKICAgICJFeHhv
bk1vYmlsIjogIm5vcmVwbHlAZXh4b25tb2JpbC5jb20iLAogICAgIlRveW90YSI6ICJub3JlcGx5
QHRveW90YS5jb20iLAogICAgIkZvcmQiOiAibm9yZXBseUBmb3JkLmNvbSIsCiAgICAiR2VuZXJh
bCBNb3RvcnMiOiAibm9yZXBseUBnbS5jb20iLAogICAgIkhvbmRhIjogIm5vcmVwbHlAaG9uZGEu
Y29tIiwKICAgICJCTVciOiAibm9yZXBseUBibXcuY29tIiwKICAgICJNZXJjZWRlcy1CZW56Ijog
Im5vcmVwbHlAbWVyY2VkZXMtYmVuei5jb20iLAogICAgIkF1ZGkiOiAibm9yZXBseUBhdWRpLmNv
bSIsCiAgICAiVm9sa3N3YWdlbiI6ICJub3JlcGx5QHZvbGtzd2FnZW4uY29tIiwKICAgICJOaXNz
YW4iOiAibm9yZXBseUBuaXNzYW4uY29tIiwKICAgICJQYW5hc29uaWMiOiAibm9yZXBseUBwYW5h
c29uaWMuY29tIiwKICAgICJMRyI6ICJub3JlcGx5QGxnLmNvbSIsCiAgICAiU2Ftc3VuZyI6ICJu
b3JlcGx5QHNhbXN1bmcuY29tIiwKICAgICJQaGlsaXBzIjogIm5vcmVwbHlAcGhpbGlwcy5jb20i
LAogICAgIlNpZW1lbnMiOiAibm9yZXBseUBzaWVtZW5zLmNvbSIsCiAgICAiR0UiOiAibm9yZXBs
eUBnZS5jb20iLAogICAgIkNhdGVycGlsbGFyIjogIm5vcmVwbHlAY2F0LmNvbSIsCiAgICAiSm9o
biBEZWVyZSI6ICJub3JlcGx5QGpvaG5kZWVyZS5jb20iLAogICAgIjNNIjogIm5vcmVwbHlAM20u
Y29tIiwKICAgICJIb25leXdlbGwiOiAibm9yZXBseUBob25leXdlbGwuY29tIiwKICAgICJJbnR1
aXQiOiAibm9yZXBseUBpbnR1aXQuY29tIiwKICAgICJXaXNoIjogIm5vcmVwbHlAd2lzaC5jb20i
LAogICAgIkdyb3Vwb24iOiAibm9yZXBseUBncm91cG9uLmNvbSIsCiAgICAiRmFuZGFuZ28iOiAi
bm9yZXBseUBmYW5kYW5nby5jb20iLAogICAgIklNRGIiOiAibm9yZXBseUBpbWRiLmNvbSIsCiAg
ICAiUm90dGVuIFRvbWF0b2VzIjogIm5vcmVwbHlAcm90dGVudG9tYXRvZXMuY29tIiwKICAgICJH
T0ciOiAibm9yZXBseUBnb2cuY29tIiwKICAgICJJdGNoLmlvIjogIm5vcmVwbHlAaXRjaC5pbyIs
CiAgICAiS2lja3N0YXJ0ZXIiOiAibm9yZXBseUBraWNrc3RhcnRlci5jb20iLAogICAgIkluZGll
Z29nbyI6ICJub3JlcGx5QGluZGllZ29nby5jb20iLAogICAgIlR3aXRjaCI6ICJub3JlcGx5QHR3
aXRjaC5jb20iLAogICAgIkNydW5jaHlyb2xsIjogImhlbGxvQGluZm8uY3J1bmNoeXJvbGwuY29t
IiwKfQoKIyBMaW1pdGVkIHNlcnZpY2UgbWFwcGluZyBmb3Igc3BvbnNvciB1c2VycwpTUE9OU09S
X1NFUlZJQ0VfTUFQUElORyA9IHsKICAgICJOZXRmbGl4IjogIm5vLXJlcGx5QG5ldGZsaXguY29t
IiwKICAgICJTcG90aWZ5IjogIm5vLXJlcGx5QHNwb3RpZnkuY29tIiwKICAgICJQYXlQYWwiOiAi
c2VydmljZUBwYXlwYWwuY29tIiwKICAgICJBbWF6b24iOiAiYXV0by1jb25maXJtQGFtYXpvbi5j
b20iLAogICAgIkRpc2NvcmQiOiAibm9yZXBseUBkaXNjb3JkYXBwLmNvbSIsCiAgICAiUm9ibG94
IjogIm5vLXJlcGx5QHJvYmxveC5jb20iLAogICAgIkZhY2Vib29rIjogInNlY3VyaXR5QGZhY2Vi
b29rbWFpbC5jb20iLAogICAgIkluc3RhZ3JhbSI6ICJzZWN1cml0eUBtYWlsLmluc3RhZ3JhbS5j
b20iCn0KCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyAgICAgICAgICAgICAgICAgICAgIERPTUFJ
TiBDTEFTU0lGSUNBVElPTiBTWVNURU0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpNSUNST1NPRlRf
RE9NQUlOUyA9IHsKICAgICdob3RtYWlsLmNvbScsICdvdXRsb29rLmNvbScsICdsaXZlLmNvbScs
ICdtc24uY29tJywKICAgICdwYXNzcG9ydC5jb20nLCAnbWljcm9zb2Z0LmNvbScsICd3aW5kb3dz
bGl2ZS5jb20nLAogICAgJ2hvdG1haWwuY28udWsnLCAnb3V0bG9vay5jby51aycKfQoKR09PR0xF
X0RPTUFJTlMgPSB7CiAgICAnZ21haWwuY29tJywgJ2dvb2dsZW1haWwuY29tJywgJ2dvb2dsZS5j
b20nLAogICAgJ2dtYWlsLmNvLnVrJywgJ2dvb2dsZS5jby5pbicsICdnbWFpbC5kZScKfQoKWUFI
T09fRE9NQUlOUyA9IHsKICAgICd5YWhvby5jb20nLCAneWFob28uY28udWsnLCAneWFob28uY28u
anAnLCAneW1haWwuY29tJywgJ3JvY2tldG1haWwuY29tJwp9CgpBUFBMRV9ET01BSU5TID0gewog
ICAgJ2ljbG91ZC5jb20nLCAnbWUuY29tJywgJ21hYy5jb20nCn0KCkFPTF9ET01BSU5TID0gewog
ICAgJ2FvbC5jb20nCn0KCkdNWF9ET01BSU5TID0gewogICAgJ2dteC5jb20nLCAnZ214LmRlJwp9
CgpNQUlMUlVfRE9NQUlOUyA9IHsKICAgICdtYWlsLnJ1JywgJ2JrLnJ1JywgJ2xpc3QucnUnLCAn
aW5ib3gucnUnCn0KCllBTkRFWF9ET01BSU5TID0gewogICAgJ3lhbmRleC5jb20nLCAneWFuZGV4
LnJ1Jwp9CgpQUk9UT05fRE9NQUlOUyA9IHsKICAgICdwcm90b25tYWlsLmNvbScsICdwcm90b24u
bWUnCn0KClpPSE9fRE9NQUlOUyA9IHsKICAgICd6b2hvLmNvbScsICd6b2hvLmV1Jwp9CgpUVVRB
Tk9UQV9ET01BSU5TID0gewogICAgJ3R1dGFub3RhLmNvbScKfQoKRkFTVE1BSUxfRE9NQUlOUyA9
IHsKICAgICdmYXN0bWFpbC5jb20nCn0KCkRJU1BPU0FCTEVfRE9NQUlOUyA9IHsKICAgICdtYWls
aW5hdG9yLmNvbScsICcxMG1pbnV0ZW1haWwuY29tJywgJ3RlbXBtYWlsLmNvbScsCiAgICAnZ3Vl
cnJpbGxhbWFpbC5jb20nLCAneW9wbWFpbC5jb20nLCAnZ2V0bmFkYS5jb20nLAogICAgJ3RyYXNo
bWFpbC5jb20nLCAnbW9ha3QuY29tJywgJ2Fub255bWJveC5jb20nCn0KCkdFUk1BTl9ET01BSU5T
ID0gewogICAgJ3dlYi5kZScsICdnbXguZGUnLCAndC1vbmxpbmUuZGUnLCAnZnJlZW5ldC5kZScs
ICdwb3N0ZW8uZGUnCn0KCkZSRU5DSF9ET01BSU5TID0gewogICAgJ29yYW5nZS5mcicsICdsYXBv
c3RlLm5ldCcsICdzZnIuZnInLCAnZnJlZS5mcicKfQoKUlVTU0lBTl9ET01BSU5TID0gewogICAg
J21haWwucnUnLCAnYmsucnUnLCAnbGlzdC5ydScsICdpbmJveC5ydScKfQoKQ0hJTkVTRV9ET01B
SU5TID0gewogICAgJ3FxLmNvbScsICcxNjMuY29tJywgJzEyNi5jb20nLCAnc2luYS5jb20nCn0K
CkpBUEFORVNFX0RPTUFJTlMgPSB7CiAgICAneWFob28uY28uanAnLCAnZXp3ZWIubmUuanAnLCAn
ZG9jb21vLm5lLmpwJwp9CgoKZGVmIGNsYXNzaWZ5X2RvbWFpbihlbWFpbDogc3RyKSAtPiBzdHI6
CiAgICAiIiJDbGFzc2lmeSBlbWFpbCBkb21haW4gaW50byBwcm92aWRlciBjYXRlZ29yaWVzLiIi
IgogICAgZG9tYWluID0gZW1haWwuc3BsaXQoJ0AnKVstMV0ubG93ZXIoKSBpZiAnQCcgaW4gZW1h
aWwgZWxzZSAnJwogICAgCiAgICBpZiBkb21haW4gaW4gTUlDUk9TT0ZUX0RPTUFJTlM6CiAgICAg
ICAgcmV0dXJuICdtaWNyb3NvZnQnCiAgICBpZiBkb21haW4gaW4gR09PR0xFX0RPTUFJTlM6CiAg
ICAgICAgcmV0dXJuICdnb29nbGUnCiAgICBpZiBkb21haW4gaW4gWUFIT09fRE9NQUlOUzoKICAg
ICAgICByZXR1cm4gJ3lhaG9vJwogICAgaWYgZG9tYWluIGluIEFQUExFX0RPTUFJTlM6CiAgICAg
ICAgcmV0dXJuICdhcHBsZScKICAgIGlmIGRvbWFpbiBpbiBBT0xfRE9NQUlOUzoKICAgICAgICBy
ZXR1cm4gJ2FvbCcKICAgIGlmIGRvbWFpbiBpbiBHTVhfRE9NQUlOUzoKICAgICAgICByZXR1cm4g
J2dteCcKICAgIGlmIGRvbWFpbiBpbiBNQUlMUlVfRE9NQUlOUzoKICAgICAgICByZXR1cm4gJ21h
aWxydScKICAgIGlmIGRvbWFpbiBpbiBZQU5ERVhfRE9NQUlOUzoKICAgICAgICByZXR1cm4gJ3lh
bmRleCcKICAgIGlmIGRvbWFpbiBpbiBQUk9UT05fRE9NQUlOUzoKICAgICAgICByZXR1cm4gJ3By
b3RvbicKICAgIGlmIGRvbWFpbiBpbiBaT0hPX0RPTUFJTlM6CiAgICAgICAgcmV0dXJuICd6b2hv
JwogICAgaWYgZG9tYWluIGluIFRVVEFOT1RBX0RPTUFJTlM6CiAgICAgICAgcmV0dXJuICd0dXRh
bm90YScKICAgIGlmIGRvbWFpbiBpbiBGQVNUTUFJTF9ET01BSU5TOgogICAgICAgIHJldHVybiAn
ZmFzdG1haWwnCiAgICBpZiBkb21haW4gaW4gRElTUE9TQUJMRV9ET01BSU5TOgogICAgICAgIHJl
dHVybiAnZGlzcG9zYWJsZScKICAgIGlmIGRvbWFpbiBpbiBHRVJNQU5fRE9NQUlOUzoKICAgICAg
ICByZXR1cm4gJ2dlcm1hbicKICAgIGlmIGRvbWFpbiBpbiBGUkVOQ0hfRE9NQUlOUzoKICAgICAg
ICByZXR1cm4gJ2ZyZW5jaCcKICAgIGlmIGRvbWFpbiBpbiBSVVNTSUFOX0RPTUFJTlM6CiAgICAg
ICAgcmV0dXJuICdydXNzaWFuJwogICAgaWYgZG9tYWluIGluIENISU5FU0VfRE9NQUlOUzoKICAg
ICAgICByZXR1cm4gJ2NoaW5lc2UnCiAgICBpZiBkb21haW4gaW4gSkFQQU5FU0VfRE9NQUlOUzoK
ICAgICAgICByZXR1cm4gJ2phcGFuZXNlJwogICAgaWYgZG9tYWluLmVuZHN3aXRoKCgnLmVkdScs
ICcuZWR1LicpKToKICAgICAgICByZXR1cm4gJ2dvb2dsZScgICMgSGFuZGxlIGVkdWNhdGlvbmFs
IGRvbWFpbnMgYXMgR29vZ2xlCiAgICByZXR1cm4gJ3Vua25vd24nCgojID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CiMgICAgICAgICAgICAgICAgICAgICBJTUFQIFNFUlZFUiBNQVBQSU5HCiMgPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KSU1BUF9TRVJWRVJfTUFQID0gewogICAgJ3lhaG9vJzogKCJpbWFwLm1h
aWwueWFob28uY29tIiwgOTkzKSwKICAgICdhcHBsZSc6ICgiaW1hcC5tYWlsLm1lLmNvbSIsIDk5
MyksCiAgICAnYW9sJzogKCJpbWFwLmFvbC5jb20iLCA5OTMpLAogICAgJ2dteCc6ICgiaW1hcC5n
bXgubmV0IiwgOTkzKSwKICAgICdtYWlscnUnOiAoImltYXAubWFpbC5ydSIsIDk5MyksCiAgICAn
eWFuZGV4JzogKCJpbWFwLnlhbmRleC5jb20iLCA5OTMpLAogICAgJ3pvaG8nOiAoImltYXAuem9o
by5jb20iLCA5OTMpLAogICAgJ2Zhc3RtYWlsJzogKCJpbWFwLmZhc3RtYWlsLmNvbSIsIDk5Myks
CiAgICAnZ2VybWFuJzogewogICAgICAgICd3ZWIuZGUnOiAiaW1hcC53ZWIuZGUiLAogICAgICAg
ICd0LW9ubGluZS5kZSc6ICJpbWFwLnQtb25saW5lLmRlIiwKICAgICAgICAnZnJlZW5ldC5kZSc6
ICJpbWFwLmZyZWVuZXQuZGUiLAogICAgICAgICdwb3N0ZW8uZGUnOiAiaW1hcC5wb3N0ZW8uZGUi
CiAgICB9LAogICAgJ2ZyZW5jaCc6IHsKICAgICAgICAnb3JhbmdlLmZyJzogImltYXAub3Jhbmdl
LmZyIiwKICAgICAgICAnbGFwb3N0ZS5uZXQnOiAiaW1hcC5sYXBvc3RlLm5ldCIsCiAgICAgICAg
J3Nmci5mcic6ICJpbWFwLnNmci5mciIsCiAgICAgICAgJ2ZyZWUuZnInOiAiaW1hcC5mcmVlLmZy
IgogICAgfSwKICAgICdydXNzaWFuJzogKCJpbWFwLm1haWwucnUiLCA5OTMpLAogICAgJ2NoaW5l
c2UnOiB7CiAgICAgICAgJ3FxLmNvbSc6ICJpbWFwLnFxLmNvbSIsCiAgICAgICAgJzE2My5jb20n
OiAiaW1hcC4xNjMuY29tIiwKICAgICAgICAnMTI2LmNvbSc6ICJpbWFwLjEyNi5jb20iLAogICAg
ICAgICdzaW5hLmNvbSc6ICJpbWFwLnNpbmEuY29tIgogICAgfSwKICAgICdqYXBhbmVzZSc6IHsK
ICAgICAgICAnZXp3ZWIubmUuanAnOiAiaW1hcC5lendlYi5uZS5qcCIsCiAgICAgICAgJ2RvY29t
by5uZS5qcCc6ICJpbWFwLmRvY29tby5uZS5qcCIKICAgIH0KfQoKZGVmIGdldF9pbWFwX3NlcnZl
cihlbWFpbDogc3RyKSAtPiBPcHRpb25hbFtUdXBsZVtzdHIsIGludF1dOgogICAgIiIiR2V0IElN
QVAgc2VydmVyIGNvbmZpZ3VyYXRpb24gZm9yIGVtYWlsIGRvbWFpbi4iIiIKICAgIGRvbWFpbiA9
IGVtYWlsLnNwbGl0KCdAJylbLTFdLmxvd2VyKCkKICAgIGRvbWFpbl90eXBlID0gY2xhc3NpZnlf
ZG9tYWluKGVtYWlsKQogICAgCiAgICBpZiBkb21haW5fdHlwZSBpbiBJTUFQX1NFUlZFUl9NQVA6
CiAgICAgICAgY29uZmlnID0gSU1BUF9TRVJWRVJfTUFQW2RvbWFpbl90eXBlXQogICAgICAgIGlm
IGlzaW5zdGFuY2UoY29uZmlnLCB0dXBsZSk6CiAgICAgICAgICAgIHJldHVybiBjb25maWcKICAg
ICAgICBlbGlmIGlzaW5zdGFuY2UoY29uZmlnLCBkaWN0KSBhbmQgZG9tYWluIGluIGNvbmZpZzoK
ICAgICAgICAgICAgcmV0dXJuIChjb25maWdbZG9tYWluXSwgOTkzKQogICAgcmV0dXJuIE5vbmUK
CiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KIyAgICAgICAgICAgICAgICAgICAgIFBFUi1VU0VSIFNF
U1NJT05TIEFORCBTVEFUSVNUSUNTCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KdXNlcl9zZXNzaW9u
c19sb2NrID0gTG9jaygpCnVzZXJfc2Vzc2lvbnMgPSB7fQoKZGVmIGdldF91c2VyX3Nlc3Npb24o
dXNlcl9pZDogaW50KSAtPiBkaWN0OgogICAgIiIiR2V0IG9yIGNyZWF0ZSBhIHNlc3Npb24gZm9y
IHRoZSB1c2VyIHdpdGggdGhyZWFkLXNhZmUgbG9ja2luZy4iIiIKICAgIHdpdGggdXNlcl9zZXNz
aW9uc19sb2NrOgogICAgICAgIGlmIHVzZXJfaWQgbm90IGluIHVzZXJfc2Vzc2lvbnM6CiAgICAg
ICAgICAgIHVzZXJfc2Vzc2lvbnNbdXNlcl9pZF0gPSB7CiAgICAgICAgICAgICAgICAic2hvdWxk
X3N0b3AiOiBGYWxzZSwKICAgICAgICAgICAgICAgICJnb29kX2NvdW50IjogMCwKICAgICAgICAg
ICAgICAgICJiYWRfY291bnQiOiAwLAogICAgICAgICAgICAgICAgInRvdGFsX2NoZWNrZWQiOiAw
LAogICAgICAgICAgICAgICAgInNlcnZpY2VfaGl0cyI6IHt9LAogICAgICAgICAgICAgICAgInJl
c3VsdHNfY2FjaGUiOiB7fSwKICAgICAgICAgICAgICAgICJjaGVja190aW1lc3RhbXBzIjogZGVx
dWUobWF4bGVuPTYwMCksCiAgICAgICAgICAgICAgICAidG90YWxfbGluZXMiOiAwLAogICAgICAg
ICAgICAgICAgImlzX3Nwb25zb3JfbW9kZSI6IEZhbHNlICAjIFRyYWNrIGlmIGluIHNwb25zb3Ig
bW9kZQogICAgICAgICAgICB9CiAgICAgICAgcmV0dXJuIHVzZXJfc2Vzc2lvbnNbdXNlcl9pZF0K
CmRlZiByZXNldF91c2VyX3Nlc3Npb24odXNlcl9pZDogaW50KSAtPiBOb25lOgogICAgIiIiUmVz
ZXQgYWxsIHNlc3Npb24gZGF0YSBmb3IgYSB1c2VyLiIiIgogICAgd2l0aCB1c2VyX3Nlc3Npb25z
X2xvY2s6CiAgICAgICAgdXNlcl9zZXNzaW9uc1t1c2VyX2lkXSA9IHsKICAgICAgICAgICAgInNo
b3VsZF9zdG9wIjogRmFsc2UsCiAgICAgICAgICAgICJnb29kX2NvdW50IjogMCwKICAgICAgICAg
ICAgImJhZF9jb3VudCI6IDAsCiAgICAgICAgICAgICJ0b3RhbF9jaGVja2VkIjogMCwKICAgICAg
ICAgICAgInNlcnZpY2VfaGl0cyI6IHt9LAogICAgICAgICAgICAicmVzdWx0c19jYWNoZSI6IHt9
LAogICAgICAgICAgICAiY2hlY2tfdGltZXN0YW1wcyI6IGRlcXVlKG1heGxlbj02MDApLAogICAg
ICAgICAgICAidG90YWxfbGluZXMiOiAwLAogICAgICAgICAgICAiaXNfc3BvbnNvcl9tb2RlIjog
RmFsc2UKICAgICAgICB9CgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgICAgICAgICAgICAgICAg
ICAgICBQUkVNSVVNIFNUQVRVUyBDSEVDSwojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRlZiBpc19w
cmVtaXVtX3VzZXIodXNlcl9pZDogaW50KSAtPiBib29sOgogICAgIiIiQ2hlY2sgaWYgdXNlciBo
YXMgcHJlbWl1bSBzdGF0dXMgKG93bmVyLCB3aGl0ZWxpc3RlZCwgb3IgYWN0aXZlIHRyaWFsKSIi
IgogICAgcmV0dXJuICgKICAgICAgICB1c2VyX2lkIGluIE9XTkVSUyBvciAKICAgICAgICBpc193
aGl0ZWxpc3RlZCh1c2VyX2lkKSBvciAKICAgICAgICBoYXNfdHJpYWxfYWNjZXNzKHVzZXJfaWQp
CiAgICApCgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgICAgICAgICAgICAgICAgICAgICBTRVNT
SU9OIEZPTERFUlMgUEVSIFVTRVIKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkZWYgcHJlcGFyZV91
c2VyX3Nlc3Npb25fZm9sZGVyKHVzZXJfaWQ6IGludCk6CiAgICAiIiJDcmVhdGUgYSBjbGVhbiBz
ZXNzaW9uIGZvbGRlciBmb3IgdXNlciByZXN1bHRzLiIiIgogICAgc2Vzc2lvbl9wYXRoID0gZiJ7
UkVTVUxUU19GT0xERVJ9L3t1c2VyX2lkfSIKICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlc3Npb25f
cGF0aCk6CiAgICAgICAgc2h1dGlsLnJtdHJlZShzZXNzaW9uX3BhdGgsIGlnbm9yZV9lcnJvcnM9
VHJ1ZSkKICAgIG9zLm1ha2VkaXJzKHNlc3Npb25fcGF0aCwgZXhpc3Rfb2s9VHJ1ZSkKCmRlZiBz
YXZlX3Jlc3VsdF9mb3JfdXNlcih1c2VyX2lkOiBpbnQsIHNlcnZpY2VfbmFtZTogc3RyLCBlbWFp
bDogc3RyLCBwYXNzd29yZDogc3RyKToKICAgICIiIlNhdmUgdmFsaWQgYWNjb3VudCB0byBzZXJ2
aWNlLXNwZWNpZmljIHJlc3VsdCBmaWxlLiIiIgogICAgc2Vzc2lvbl9wYXRoID0gZiJ7UkVTVUxU
U19GT0xERVJ9L3t1c2VyX2lkfSIKICAgIG9zLm1ha2VkaXJzKHNlc3Npb25fcGF0aCwgZXhpc3Rf
b2s9VHJ1ZSkKICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKHNlc3Npb25fcGF0aCwgZiJ7c2Vy
dmljZV9uYW1lLmxvd2VyKCl9LnR4dCIpCiAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJhIiwgZW5j
b2Rpbmc9InV0Zi04IikgYXMgZjoKICAgICAgICBmLndyaXRlKGYie2VtYWlsfTp7cGFzc3dvcmR9
XG4iKQoKZGVmIHNhdmVfdmFsaWRfYWNjb3VudCh1c2VyX2lkOiBpbnQsIGVtYWlsOiBzdHIsIHBh
c3N3b3JkOiBzdHIpOgogICAgIiIiU2F2ZSB2YWxpZGF0ZWQgYWNjb3VudCByZWdhcmRsZXNzIG9m
IHNlcnZpY2UgaGl0cy4iIiIKICAgIHNlc3Npb25fcGF0aCA9IGYie1JFU1VMVFNfRk9MREVSfS97
dXNlcl9pZH0iCiAgICBvcy5tYWtlZGlycyhzZXNzaW9uX3BhdGgsIGV4aXN0X29rPVRydWUpCiAg
ICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihzZXNzaW9uX3BhdGgsICJ2YWxpZF9hY2NvdW50cy50
eHQiKQogICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAiYSIsIGVuY29kaW5nPSJ1dGYtOCIpIGFzIGY6
CiAgICAgICAgZi53cml0ZShmIntlbWFpbH06e3Bhc3N3b3JkfVxuIikKCmRlZiBzYXZlX211bHRp
X2hpdCh1c2VyX2lkOiBpbnQsIGxpbmU6IHN0cik6CiAgICAiIiJTYXZlIGFjY291bnRzIHdpdGgg
bXVsdGlwbGUgc2VydmljZSBoaXRzIHRvIGEgc3BlY2lhbCBmaWxlLiIiIgogICAgc2Vzc2lvbl9w
YXRoID0gZiJ7UkVTVUxUU19GT0xERVJ9L3t1c2VyX2lkfSIKICAgIG9zLm1ha2VkaXJzKHNlc3Np
b25fcGF0aCwgZXhpc3Rfb2s9VHJ1ZSkKICAgIG11bHRpX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2Vz
c2lvbl9wYXRoLCAibXVsdGlfaGl0cy50eHQiKQogICAgd2l0aCBvcGVuKG11bHRpX2ZpbGUsICJh
IiwgZW5jb2Rpbmc9InV0Zi04IikgYXMgZjoKICAgICAgICBmLndyaXRlKGxpbmUgKyAiXG4iKQoK
ZGVmIGdldF9yZXN1bHRzX2ZpbGVzKHVzZXJfaWQ6IGludCk6CiAgICAiIiJHZXQgYWxsIHJlc3Vs
dCBmaWxlcyBmb3IgYSB1c2VyIHNlc3Npb24uIiIiCiAgICBzZXNzaW9uX3BhdGggPSBmIntSRVNV
TFRTX0ZPTERFUn0ve3VzZXJfaWR9IgogICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlc3Npb25f
cGF0aCk6CiAgICAgICAgcmV0dXJuIFtdCiAgICByZXR1cm4gW29zLnBhdGguam9pbihzZXNzaW9u
X3BhdGgsIGYpIGZvciBmIGluIG9zLmxpc3RkaXIoc2Vzc2lvbl9wYXRoKV0KCmRlZiBjbGVhcl91
c2VyX3Jlc3VsdHModXNlcl9pZDogaW50KToKICAgICIiIkNsZWFuIHVwIHVzZXIgc2Vzc2lvbiBm
b2xkZXIgYWZ0ZXIgY29tcGxldGlvbi4iIiIKICAgIHNlc3Npb25fcGF0aCA9IGYie1JFU1VMVFNf
Rk9MREVSfS97dXNlcl9pZH0iCiAgICBzaHV0aWwucm10cmVlKHNlc3Npb25fcGF0aCwgaWdub3Jl
X2Vycm9ycz1UcnVlKQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICAgICAgICAgICAgICAgICAg
ICAgRElTQ09SRCBCT1QgR0xPQkFMUwojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CnVzZXJfbGFzdF91
c2VkID0ge30Kc3RhdHNfbG9jayA9IExvY2soKQpzZXJ2aWNlX2hpdHNfbG9jayA9IExvY2soKQps
b2NrZWQgPSBGYWxzZQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICAgICAgICAgICAgICAgICAg
ICAgVFJJQUwgQUNDRVNTIE1BTkFHRU1FTlQKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkZWYgbG9h
ZF90cmlhbF9kYigpIC0+IGRpY3Q6CiAgICAiIiJMb2FkIHRyaWFsIGRhdGFiYXNlIGZyb20gSlNP
TiBmaWxlLiIiIgogICAgaWYgb3MucGF0aC5leGlzdHMoVFJJQUxfREJfRklMRSk6CiAgICAgICAg
dHJ5OgogICAgICAgICAgICB3aXRoIG9wZW4oVFJJQUxfREJfRklMRSwgInIiKSBhcyBmOgogICAg
ICAgICAgICAgICAgcmV0dXJuIGpzb24ubG9hZChmKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZToKICAgICAgICAgICAgcHJpbnQoIkVycm9yIGxvYWRpbmcgdHJpYWwgREI6IiwgZSkKICAg
ICAgICAgICAgcmV0dXJuIHt9CiAgICByZXR1cm4ge30KCmRlZiBzYXZlX3RyaWFsX2RiKGRhdGE6
IGRpY3QpIC0+IE5vbmU6CiAgICAiIiJTYXZlIHRyaWFsIGRhdGFiYXNlIHRvIEpTT04gZmlsZS4i
IiIKICAgIHRyeToKICAgICAgICB3aXRoIG9wZW4oVFJJQUxfREJfRklMRSwgInciKSBhcyBmOgog
ICAgICAgICAgICBqc29uLmR1bXAoZGF0YSwgZikKICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK
ICAgICAgICBwcmludCgiRXJyb3Igc2F2aW5nIHRyaWFsIERCOiIsIGUpCgpkZWYgaGFzX3RyaWFs
X2FjY2Vzcyh1c2VyX2lkOiBpbnQpIC0+IGJvb2w6CiAgICAiIiJDaGVjayBpZiB1c2VyIGhhcyBh
Y3RpdmUgdHJpYWwgYWNjZXNzLiIiIgogICAgZGIgPSBsb2FkX3RyaWFsX2RiKCkKICAgIHJldHVy
biBzdHIodXNlcl9pZCkgaW4gZGIKCmRlZiBncmFudF90cmlhbF9hY2Nlc3ModXNlcl9pZDogaW50
LCBob3VyczogaW50ID0gMjQpIC0+IE5vbmU6CiAgICAiIiJHcmFudCB0cmlhbCBhY2Nlc3MgdG8g
dXNlciB3aXRoIGV4cGlyYXRpb24gdGltZXN0YW1wLiIiIgogICAgZGIgPSBsb2FkX3RyaWFsX2Ri
KCkKICAgIGV4cGlyYXRpb24gPSBkYXRldGltZS5ub3coKS50aW1lc3RhbXAoKSArIGhvdXJzICog
MzYwMAogICAgZGJbc3RyKHVzZXJfaWQpXSA9IGV4cGlyYXRpb24KICAgIHNhdmVfdHJpYWxfZGIo
ZGIpCgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgICAgICAgICAgICAgICAgICAgICBXSElURUxJ
U1QgTUFOQUdFTUVOVCBTWVNURU0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkZWYgbG9hZF93aGl0
ZWxpc3QoKSAtPiBkaWN0OgogICAgIiIiTG9hZCB3aGl0ZWxpc3QgZGF0YWJhc2UgZnJvbSBKU09O
IGZpbGUuIiIiCiAgICBpZiBvcy5wYXRoLmV4aXN0cyhXSElURUxJU1RfREJfRklMRSk6CiAgICAg
ICAgdHJ5OgogICAgICAgICAgICB3aXRoIG9wZW4oV0hJVEVMSVNUX0RCX0ZJTEUsICJyIikgYXMg
ZjoKICAgICAgICAgICAgICAgIHJldHVybiBqc29uLmxvYWQoZikKICAgICAgICBleGNlcHQgRXhj
ZXB0aW9uIGFzIGU6CiAgICAgICAgICAgIHByaW50KCJFcnJvciBsb2FkaW5nIHdoaXRlbGlzdCBE
QjoiLCBlKQogICAgICAgICAgICByZXR1cm4ge30KICAgIHJldHVybiB7fQoKZGVmIHNhdmVfd2hp
dGVsaXN0KHdoaXRlbGlzdDogZGljdCkgLT4gTm9uZToKICAgICIiIlNhdmUgd2hpdGVsaXN0IGRh
dGFiYXNlIHRvIEpTT04gZmlsZS4iIiIKICAgIHRyeToKICAgICAgICB3aXRoIG9wZW4oV0hJVEVM
SVNUX0RCX0ZJTEUsICJ3IikgYXMgZjoKICAgICAgICAgICAganNvbi5kdW1wKHdoaXRlbGlzdCwg
ZikKICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICBwcmludCgiRXJyb3Igc2F2aW5n
IHdoaXRlbGlzdCBEQjoiLCBlKQoKZGVmIGFkZF90b193aGl0ZWxpc3QodXNlcl9pZDogaW50LCBk
dXJhdGlvbjogc3RyKSAtPiBOb25lOgogICAgIiIiQWRkIHVzZXIgdG8gd2hpdGVsaXN0IHdpdGgg
c3BlY2lmaWVkIGR1cmF0aW9uLiIiIgogICAgd2wgPSBsb2FkX3doaXRlbGlzdCgpCiAgICB1aWRf
c3RyID0gc3RyKHVzZXJfaWQpCiAgICBkdXJhdGlvbiA9IGR1cmF0aW9uLmxvd2VyKCkKICAgIAog
ICAgaWYgZHVyYXRpb24gPT0gImxpZmV0aW1lIjoKICAgICAgICB3bFt1aWRfc3RyXSA9IE5vbmUK
ICAgIGVsc2U6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBkdXJhdGlvbi5lbmRzd2l0aCgi
ZCIpOgogICAgICAgICAgICAgICAgZGF5cyA9IGludChkdXJhdGlvbls6LTFdKQogICAgICAgICAg
ICAgICAgZGVsdGEgPSB0aW1lZGVsdGEoZGF5cz1kYXlzKQogICAgICAgICAgICBlbGlmIGR1cmF0
aW9uLmVuZHN3aXRoKCJ3Iik6CiAgICAgICAgICAgICAgICB3ZWVrcyA9IGludChkdXJhdGlvbls6
LTFdKQogICAgICAgICAgICAgICAgZGVsdGEgPSB0aW1lZGVsdGEod2Vla3M9d2Vla3MpCiAgICAg
ICAgICAgIGVsaWYgZHVyYXRpb24uZW5kc3dpdGgoIm0iKToKICAgICAgICAgICAgICAgIG1vbnRo
cyA9IGludChkdXJhdGlvbls6LTFdKQogICAgICAgICAgICAgICAgZGVsdGEgPSB0aW1lZGVsdGEo
ZGF5cz0zMCAqIG1vbnRocykKICAgICAgICAgICAgZWxpZiBkdXJhdGlvbi5lbmRzd2l0aCgieSIp
OgogICAgICAgICAgICAgICAgeWVhcnMgPSBpbnQoZHVyYXRpb25bOi0xXSkKICAgICAgICAgICAg
ICAgIGRlbHRhID0gdGltZWRlbHRhKGRheXM9MzY1ICogeWVhcnMpCiAgICAgICAgICAgIGVsc2U6
CiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgZXhwaXJhdGlvbiA9IChkYXRldGlt
ZS5ub3coKSArIGRlbHRhKS50aW1lc3RhbXAoKQogICAgICAgICAgICB3bFt1aWRfc3RyXSA9IGV4
cGlyYXRpb24KICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgcmV0dXJuCiAg
ICBzYXZlX3doaXRlbGlzdCh3bCkKCmRlZiByZW1vdmVfZnJvbV93aGl0ZWxpc3QodXNlcl9pZDog
aW50KSAtPiBOb25lOgogICAgIiIiUmVtb3ZlIHVzZXIgZnJvbSB3aGl0ZWxpc3QuIiIiCiAgICB3
bCA9IGxvYWRfd2hpdGVsaXN0KCkKICAgIHdsLnBvcChzdHIodXNlcl9pZCksIE5vbmUpCiAgICBz
YXZlX3doaXRlbGlzdCh3bCkKCmRlZiBpc193aGl0ZWxpc3RlZCh1c2VyX2lkOiBpbnQpIC0+IGJv
b2w6CiAgICAiIiJDaGVjayBpZiB1c2VyIGlzIHdoaXRlbGlzdGVkIGFuZCBhY2Nlc3MgaXMgc3Rp
bGwgdmFsaWQuIiIiCiAgICB3bCA9IGxvYWRfd2hpdGVsaXN0KCkKICAgIHVpZF9zdHIgPSBzdHIo
dXNlcl9pZCkKICAgIGlmIHVpZF9zdHIgbm90IGluIHdsOgogICAgICAgIHJldHVybiBGYWxzZQog
ICAgZXhwaXJhdGlvbiA9IHdsW3VpZF9zdHJdCiAgICBpZiBleHBpcmF0aW9uIGlzIE5vbmU6ICAj
IExpZmV0aW1lIGFjY2VzcwogICAgICAgIHJldHVybiBUcnVlCiAgICBpZiBkYXRldGltZS5ub3co
KS50aW1lc3RhbXAoKSA+IGV4cGlyYXRpb246CiAgICAgICAgcmVtb3ZlX2Zyb21fd2hpdGVsaXN0
KHVzZXJfaWQpCiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICByZXR1cm4gVHJ1ZQoKIyA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQojICAgICAgICAgICAgICAgICAgICAgUEVSTUlTU0lPTiBERUNPUkFUT1JT
CiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KZGVmIGNoZWNrX2FsbG93ZWRfd3JhcHBlcihmdW5jOiBD
YWxsYWJsZVsuLi4sIEFueV0pIC0+IENhbGxhYmxlWy4uLiwgQW55XToKICAgICIiIkRlY29yYXRv
ciB0byBlbmZvcmNlIHdoaXRlbGlzdCBhbmQgc2VydmVyIHJlc3RyaWN0aW9ucyIiIgogICAgQGZ1
bmN0b29scy53cmFwcyhmdW5jKQogICAgYXN5bmMgZGVmIHdyYXBwZXIoaW50ZXJhY3Rpb246IGRp
c2NvcmQuSW50ZXJhY3Rpb24sICphcmdzOiBBbnksICoqa3dhcmdzOiBBbnkpIC0+IEFueToKICAg
ICAgICAjIEJsb2NrIHNwb25zb3ItbW9kZSB1c2VycyBmcm9tIHByZW1pdW0gY29tbWFuZHMKICAg
ICAgICBzZXNzaW9uID0gZ2V0X3VzZXJfc2Vzc2lvbihpbnRlcmFjdGlvbi51c2VyLmlkKQogICAg
ICAgIGlmIHNlc3Npb24uZ2V0KCJpc19zcG9uc29yX21vZGUiLCBGYWxzZSk6CiAgICAgICAgICAg
IGF3YWl0IGludGVyYWN0aW9uLnJlc3BvbnNlLnNlbmRfbWVzc2FnZSgKICAgICAgICAgICAgICAg
ICJZb3UgYXJlIGN1cnJlbnRseSBpbiBzcG9uc29yIG1vZGUgYW5kIGNhbm5vdCB1c2UgcHJlbWl1
bSBjb21tYW5kcy4gUGxlYXNlIHVzZSBgL3Nwb25zb3ItY2hlY2tgLiIsCiAgICAgICAgICAgICAg
ICBlcGhlbWVyYWw9VHJ1ZQogICAgICAgICAgICApCiAgICAgICAgICAgIHJldHVybgoKICAgICAg
ICAjIFdISVRFTElTVCBDSEVDSyBGT1IgQUxMIENPTU1BTkRTCiAgICAgICAgaWYgbm90IChpbnRl
cmFjdGlvbi51c2VyLmlkIGluIE9XTkVSUyBvciBpc193aGl0ZWxpc3RlZChpbnRlcmFjdGlvbi51
c2VyLmlkKSk6CiAgICAgICAgICAgIHZpZXcgPSBkaXNjb3JkLnVpLlZpZXcoKQogICAgICAgICAg
ICB2aWV3LmFkZF9pdGVtKGRpc2NvcmQudWkuQnV0dG9uKAogICAgICAgICAgICAgICAgbGFiZWw9
IkpvaW4gT2ZmaWNpYWwgU2VydmVyIiwKICAgICAgICAgICAgICAgIHVybD0iaHR0cHM6Ly9kaXNj
b3JkLmdnLzdxd2ttUkd6UkMiLAogICAgICAgICAgICAgICAgc3R5bGU9ZGlzY29yZC5CdXR0b25T
dHlsZS5saW5rLAogICAgICAgICAgICAgICAgZW1vamk9IvCflJciCiAgICAgICAgICAgICkpCiAg
ICAgICAgICAgIAogICAgICAgICAgICBhd2FpdCBpbnRlcmFjdGlvbi5yZXNwb25zZS5zZW5kX21l
c3NhZ2UoCiAgICAgICAgICAgICAgICBlbWJlZD1kaXNjb3JkLkVtYmVkKAogICAgICAgICAgICAg
ICAgICAgIHRpdGxlPSLwn5SSIFByZW1pdW0gQWNjZXNzIFJlcXVpcmVkIiwKICAgICAgICAgICAg
ICAgICAgICBkZXNjcmlwdGlvbj0oCiAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIGNvbW1h
bmQgcmVxdWlyZXMgKip3aGl0ZWxpc3RlZCBhY2Nlc3MqKlxuXG4iCiAgICAgICAgICAgICAgICAg
ICAgICAgICJUbyBnZXQgYWNjZXNzOlxuIgogICAgICAgICAgICAgICAgICAgICAgICAiMS4gSm9p
biBvdXIgb2ZmaWNpYWwgc2VydmVyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIyLiBSZXF1
ZXN0IHdoaXRlbGlzdCBmcm9tIGFkbWluc1xuIgogICAgICAgICAgICAgICAgICAgICAgICBmIjMu
IEdldCB0aGUgcmVxdWlyZWQgcm9sZSA8QCZ7UkVRVUlSRURfUk9MRV9JRH0+IgogICAgICAgICAg
ICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgY29sb3I9MHg1ODY1RjIKICAgICAgICAg
ICAgICAgICkuc2V0X3RodW1ibmFpbCh1cmw9QkFOTkVSX1VSTCksCiAgICAgICAgICAgICAgICB2
aWV3PXZpZXcsCiAgICAgICAgICAgICAgICBlcGhlbWVyYWw9VHJ1ZQogICAgICAgICAgICApCiAg
ICAgICAgICAgIHJldHVybgoKICAgICAgICAjIFNFUlZFUiBSRVNUUklDVElPTiBGT1IgL2NoZWNr
CiAgICAgICAgaWYgbm90ICJzcG9uc29yIiBpbiBmdW5jLl9fbmFtZV9fIGFuZCBpbnRlcmFjdGlv
bi5ndWlsZC5pZCAhPSBPUklHSU5BTF9TRVJWRVJfSUQ6CiAgICAgICAgICAgIGF3YWl0IGludGVy
YWN0aW9uLnJlc3BvbnNlLnNlbmRfbWVzc2FnZSgKICAgICAgICAgICAgICAgICLinYwgUHJlbWl1
bSBjb21tYW5kcyBjYW4gb25seSBiZSB1c2VkIGluIHRoZSBvZmZpY2lhbCBzZXJ2ZXIuIiwKICAg
ICAgICAgICAgICAgIGVwaGVtZXJhbD1UcnVlCiAgICAgICAgICAgICkKICAgICAgICAgICAgcmV0
dXJuCiAgICAgICAgICAgIAogICAgICAgIHJldHVybiBhd2FpdCBmdW5jKGludGVyYWN0aW9uLCAq
YXJncywgKiprd2FyZ3MpCiAgICByZXR1cm4gd3JhcHBlcgoKZGVmIGNoZWNrZXJfcmVzdHJpY3Rp
b24oZnVuYzogQ2FsbGFibGVbLi4uLCBBbnldKSAtPiBDYWxsYWJsZVsuLi4sIEFueV06CiAgICAi
IiJEZWNvcmF0b3IgdG8gY2hlY2sgaWYgY2hlY2tlciBpcyBsb2NrZWQgb3IgaW4gY29ycmVjdCBj
aGFubmVsLiIiIgogICAgQGZ1bmN0b29scy53cmFwcyhmdW5jKQogICAgYXN5bmMgZGVmIHdyYXBw
ZXIoaW50ZXJhY3Rpb246IGRpc2NvcmQuSW50ZXJhY3Rpb24sICphcmdzOiBBbnksICoqa3dhcmdz
OiBBbnkpIC0+IEFueToKICAgICAgICBpZiAoaW50ZXJhY3Rpb24udXNlci5pZCBpbiBPV05FUlMg
b3IgaXNfd2hpdGVsaXN0ZWQoaW50ZXJhY3Rpb24udXNlci5pZCkpOgogICAgICAgICAgICByZXR1
cm4gYXdhaXQgZnVuYyhpbnRlcmFjdGlvbiwgKmFyZ3MsICoqa3dhcmdzKQogICAgICAgIGlmIGxv
Y2tlZDoKICAgICAgICAgICAgYXdhaXQgaW50ZXJhY3Rpb24ucmVzcG9uc2Uuc2VuZF9tZXNzYWdl
KAogICAgICAgICAgICAgICAgIlRoZSBjaGVja2VyIGlzIGN1cnJlbnRseSBsb2NrZWQuIiwgCiAg
ICAgICAgICAgICAgICBlcGhlbWVyYWw9VHJ1ZQogICAgICAgICAgICApCiAgICAgICAgICAgIHJl
dHVybgogICAgICAgIGlmIGludGVyYWN0aW9uLmNoYW5uZWwgYW5kIGludGVyYWN0aW9uLmNoYW5u
ZWwuaWQgIT0gQUxMT1dFRF9DSEFOTkVMX0lEOgogICAgICAgICAgICBhd2FpdCBpbnRlcmFjdGlv
bi5yZXNwb25zZS5zZW5kX21lc3NhZ2UoCiAgICAgICAgICAgICAgICBmIlRoaXMgY29tbWFuZCBj
YW4gb25seSBiZSB1c2VkIGluIDwje0FMTE9XRURfQ0hBTk5FTF9JRH0+LiIsIAogICAgICAgICAg
ICAgICAgZXBoZW1lcmFsPVRydWUKICAgICAgICAgICAgKQogICAgICAgICAgICByZXR1cm4KICAg
ICAgICByZXR1cm4gYXdhaXQgZnVuYyhpbnRlcmFjdGlvbiwgKmFyZ3MsICoqa3dhcmdzKQogICAg
cmV0dXJuIHdyYXBwZXIKCmRlZiBzcG9uc29yX3Jlc3RyaWN0aW9uKGZ1bmM6IENhbGxhYmxlWy4u
LiwgQW55XSkgLT4gQ2FsbGFibGVbLi4uLCBBbnldOgogICAgIiIiRGVjb3JhdG9yIGZvciBzcG9u
c29yIGNvbW1hbmRzIHdpdGggcmVkdWNlZCByZXN0cmljdGlvbnMuIiIiCiAgICBAZnVuY3Rvb2xz
LndyYXBzKGZ1bmMpCiAgICBhc3luYyBkZWYgd3JhcHBlcihpbnRlcmFjdGlvbjogZGlzY29yZC5J
bnRlcmFjdGlvbiwgKmFyZ3M6IEFueSwgKiprd2FyZ3M6IEFueSkgLT4gQW55OgogICAgICAgICMg
T25seSBjaGVjayBnbG9iYWwgbG9jayBmb3Igc3BvbnNvciBjb21tYW5kcwogICAgICAgIGlmIGxv
Y2tlZDoKICAgICAgICAgICAgYXdhaXQgaW50ZXJhY3Rpb24ucmVzcG9uc2Uuc2VuZF9tZXNzYWdl
KAogICAgICAgICAgICAgICAgIlRoZSBjaGVja2VyIGlzIGN1cnJlbnRseSBsb2NrZWQuIiwgCiAg
ICAgICAgICAgICAgICBlcGhlbWVyYWw9VHJ1ZQogICAgICAgICAgICApCiAgICAgICAgICAgIHJl
dHVybgogICAgICAgIHJldHVybiBhd2FpdCBmdW5jKGludGVyYWN0aW9uLCAqYXJncywgKiprd2Fy
Z3MpCiAgICByZXR1cm4gd3JhcHBlcgoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICAgICAgICAg
ICAgICAgICAgICAgRU1CRUQgSEVMUEVSIEZVTkNUSU9OUwojID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CmRlZiBjcmVhdGVfZW1iZWQodGl0bGU6IHN0ciwgZGVzY3JpcHRpb246IHN0ciA9ICIiLCBjb2xv
cj1kaXNjb3JkLkNvbG9yLmZyb21fcmdiKDgsIDE2OCwgMjU1KSkgLT4gZGlzY29yZC5FbWJlZDoK
ICAgICIiIkNyZWF0ZSBjb25zaXN0ZW50IERpc2NvcmQgZW1iZWRzIHdpdGggYnJhbmRpbmcuIiIi
CiAgICBlbWJlZCA9IGRpc2NvcmQuRW1iZWQodGl0bGU9dGl0bGUsIGRlc2NyaXB0aW9uPWRlc2Ny
aXB0aW9uLCBjb2xvcj1jb2xvcikKICAgIGVtYmVkLnNldF90aHVtYm5haWwodXJsPUJBTk5FUl9V
UkwpCiAgICByZXR1cm4gZW1iZWQKCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyAgICAgICAgICAg
ICAgICAgICAgIFNUQVRJU1RJQ1MgRU1CRUQgR0VORVJBVE9SCiMgPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KZGVmIGJ1aWxkX3N0YXRzX2VtYmVkKHVzZXJfaWQ6IGludCkgLT4gZGlzY29yZC5FbWJlZDoK
ICAgICIiIkJ1aWxkIHJlYWwtdGltZSBzdGF0aXN0aWNzIGVtYmVkIGZvciB1c2VyIHNlc3Npb24u
IiIiCiAgICBzZXNzaW9uID0gZ2V0X3VzZXJfc2Vzc2lvbih1c2VyX2lkKQogICAgdG90YWxfbGlu
ZXMgPSBzZXNzaW9uLmdldCgidG90YWxfbGluZXMiLCAwKQogICAgdG90YWxfY2hlY2tlZCA9IHNl
c3Npb24uZ2V0KCJ0b3RhbF9jaGVja2VkIiwgMCkKICAgIGdvb2RfY291bnQgPSBzZXNzaW9uLmdl
dCgiZ29vZF9jb3VudCIsIDApCiAgICBiYWRfY291bnQgPSBzZXNzaW9uLmdldCgiYmFkX2NvdW50
IiwgMCkKICAgIGNwbSA9IGNhbGN1bGF0ZV9jcG0odXNlcl9pZCkKICAgIGlzX3Nwb25zb3IgPSBz
ZXNzaW9uLmdldCgiaXNfc3BvbnNvcl9tb2RlIiwgRmFsc2UpCgogICAgaGl0X3JhdGUgPSAoZ29v
ZF9jb3VudCAvIHRvdGFsX2NoZWNrZWQgKiAxMDApIGlmIHRvdGFsX2NoZWNrZWQgPiAwIGVsc2Ug
MAoKICAgIGVtYmVkID0gY3JlYXRlX2VtYmVkKAogICAgICAgIHRpdGxlPSJHSFAgQ2hlY2tlciBT
dGF0cyIsCiAgICAgICAgZGVzY3JpcHRpb249ZiIqKkFjY291bnRzOioqIHt0b3RhbF9saW5lc30g
fCAqKkNoZWNrZWQ6Kioge3RvdGFsX2NoZWNrZWR9XG4iCiAgICAgICAgICAgICAgICAgICAgZiIq
KlZhbGlkOioqIHtnb29kX2NvdW50fSB8ICoqSW52YWxpZDoqKiB7YmFkX2NvdW50fVxuIgogICAg
ICAgICAgICAgICAgICAgIGYiKipIaXQgUmF0ZToqKiB7aGl0X3JhdGU6LjJmfSUiCiAgICApCgog
ICAgIyBBZGQgQ1BNIG9ubHkgZm9yIHByZW1pdW0gdXNlcnMKICAgIGlmIG5vdCBpc19zcG9uc29y
OgogICAgICAgIGVtYmVkLmRlc2NyaXB0aW9uICs9IGYiIHwgKipDUE06Kioge2NwbX0iCgogICAg
YnJlYWtkb3duID0gIiIKICAgIGZvciBzZXJ2aWNlLCBlbWFpbHMgaW4gc2Vzc2lvblsic2Vydmlj
ZV9oaXRzIl0uaXRlbXMoKToKICAgICAgICBicmVha2Rvd24gKz0gZiI+IHtzZXJ2aWNlLmNhcGl0
YWxpemUoKX06ICoqe2xlbihlbWFpbHMpfSoqXG4iCiAgICAKICAgIGVtYmVkLmFkZF9maWVsZCgK
ICAgICAgICBuYW1lPSJJbmJveCBIaXRzIiwgCiAgICAgICAgdmFsdWU9YnJlYWtkb3duIGlmIGJy
ZWFrZG93bi5zdHJpcCgpIGVsc2UgIk5vIGluYm94IGhpdHMgZm91bmQgeWV0LiIsCiAgICAgICAg
aW5saW5lPUZhbHNlCiAgICApCiAgICAKICAgICMgQWRkIHNwb25zb3IgbWVzc2FnZSBmb3Igbm9u
LXByZW1pdW0gdXNlcnMKICAgIGlmIGlzX3Nwb25zb3IgYW5kIG5vdCBpc19wcmVtaXVtX3VzZXIo
dXNlcl9pZCk6CiAgICAgICAgZW1iZWQuYWRkX2ZpZWxkKAogICAgICAgICAgICBuYW1lPSLwn5ST
IFVubG9jayBQcmVtaXVtIEZlYXR1cmVzIiwKICAgICAgICAgICAgdmFsdWU9KAogICAgICAgICAg
ICAgICAgIlVwZ3JhZGUgdG8gYWNjZXNzOlxuIgogICAgICAgICAgICAgICAgIuKAoiAyMDArIHNl
cnZpY2UgZGV0ZWN0aW9uc1xuIgogICAgICAgICAgICAgICAgIuKAoiBQcmlvcml0eSBwcm9jZXNz
aW5nXG4iCiAgICAgICAgICAgICAgICAi4oCiIFJlYWwtdGltZSBDUE0gc3RhdHNcbiIKICAgICAg
ICAgICAgICAgICLigKIgbGVzc2VyIGNvb2xkb3duc1xuIgogICAgICAgICAgICAgICAgZiJbSm9p
biBvdXIgc2VydmVyXShodHRwczovL2Rpc2NvcmQuZ2cvN3F3a21SR3pSQykiCiAgICAgICAgICAg
ICksCiAgICAgICAgICAgIGlubGluZT1GYWxzZQogICAgICAgICkKICAgIAogICAgcmV0dXJuIGVt
YmVkCgpkZWYgY2FsY3VsYXRlX2NwbSh1c2VyX2lkOiBpbnQpIC0+IGludDoKICAgICIiIkNhbGN1
bGF0ZSBjaGVja3MgcGVyIG1pbnV0ZSBmb3IgdXNlciBzZXNzaW9uLiIiIgogICAgc2Vzc2lvbiA9
IGdldF91c2VyX3Nlc3Npb24odXNlcl9pZCkKICAgIG5vdyA9IHRpbWUudGltZSgpCiAgICB0aW1l
c3RhbXBzID0gc2Vzc2lvbi5nZXQoImNoZWNrX3RpbWVzdGFtcHMiLCBkZXF1ZSgpKQogICAgcmV0
dXJuIHN1bSgxIGZvciB0IGluIHRpbWVzdGFtcHMgaWYgbm93IC0gdCA8PSA2MCkKCiMgPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KIyAgICAgICAgICAgICAgICAgICAgIFJFU1VMVCBERUxJVkVSWSBTWVNU
RU0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQphc3luYyBkZWYgZG1fcmVzdWx0cyh1c2VyOiBkaXNj
b3JkLlVzZXIpIC0+IE5vbmU6CiAgICAiIiJTZW5kIGFsbCByZXN1bHQgZmlsZXMgdG8gdXNlciB2
aWEgRGlyZWN0IE1lc3NhZ2Ugd2l0aCBzcG9uc29yIG1lc3NhZ2UiIiIKICAgIGRtX2NoYW5uZWwg
PSBhd2FpdCB1c2VyLmNyZWF0ZV9kbSgpCiAgICBmaWxlcyA9IGdldF9yZXN1bHRzX2ZpbGVzKHVz
ZXIuaWQpCiAgICBpZiBub3QgZmlsZXM6CiAgICAgICAgYXdhaXQgZG1fY2hhbm5lbC5zZW5kKCJO
byByZXN1bHRzIGF2YWlsYWJsZS4iKQogICAgICAgIHJldHVybgogICAgCiAgICAjIFNlbmQgZmls
ZXMgaW4gYmF0Y2hlcwogICAgYmF0Y2hfc2l6ZSA9IDEwCiAgICBmb3IgaSBpbiByYW5nZSgwLCBs
ZW4oZmlsZXMpLCBiYXRjaF9zaXplKToKICAgICAgICBiYXRjaCA9IGZpbGVzW2k6aStiYXRjaF9z
aXplXQogICAgICAgIGF3YWl0IGRtX2NoYW5uZWwuc2VuZChmaWxlcz1bZGlzY29yZC5GaWxlKGZw
KSBmb3IgZnAgaW4gYmF0Y2hdKQogICAgCiAgICAjIENoZWNrIGlmIHVzZXIgaXMgaW4gb3JpZ2lu
YWwgc2VydmVyCiAgICBndWlsZCA9IGJvdC5nZXRfZ3VpbGQoT1JJR0lOQUxfU0VSVkVSX0lEKQog
ICAgbWVtYmVyID0gZ3VpbGQuZ2V0X21lbWJlcih1c2VyLmlkKSBpZiBndWlsZCBlbHNlIE5vbmUK
ICAgIAogICAgIyBTZW5kIHNwb25zb3IgbWVzc2FnZSBpZiBub3QgaW4gb3JpZ2luYWwgc2VydmVy
IGFuZCBub3QgcHJlbWl1bQogICAgaWYgbm90IG1lbWJlciBhbmQgbm90IGlzX3ByZW1pdW1fdXNl
cih1c2VyLmlkKToKICAgICAgICBzcG9uc29yX3ZpZXcgPSBkaXNjb3JkLnVpLlZpZXcoKQogICAg
ICAgIHNwb25zb3Jfdmlldy5hZGRfaXRlbShkaXNjb3JkLnVpLkJ1dHRvbigKICAgICAgICAgICAg
bGFiZWw9IkpvaW4gT2ZmaWNpYWwgU2VydmVyIiwgCiAgICAgICAgICAgIHVybD0iaHR0cHM6Ly9k
aXNjb3JkLmdnLzdxd2ttUkd6UkMiLAogICAgICAgICAgICBzdHlsZT1kaXNjb3JkLkJ1dHRvblN0
eWxlLmxpbmssCiAgICAgICAgICAgIGVtb2ppPSLwn5SXIgogICAgICAgICkpCiAgICAgICAgCiAg
ICAgICAgc3BvbnNvcl9lbWJlZCA9IGNyZWF0ZV9lbWJlZCgKICAgICAgICAgICAgdGl0bGU9IuKa
oSBQb3dlcmVkIGJ5IHRoZSBHSFAgTWFpbCBQYXJ0bmVyc2hpcCBQcm9ncmFtIiwKICAgICAgICAg
ICAgZGVzY3JpcHRpb249KAogICAgICAgICAgICAgICAgIlRoYW5rIHlvdSBmb3IgdXNpbmcgb3Vy
IHNlcnZpY2UhXG5cbiIKICAgICAgICAgICAgICAgICLinKggKipQcmVtaXVtIEZlYXR1cmVzOioq
XG4iCiAgICAgICAgICAgICAgICAi4oCiIDIwMCsgc2VydmljZSBkZXRlY3Rpb25zXG4iCiAgICAg
ICAgICAgICAgICAi4oCiIFByaW9yaXR5IHByb2Nlc3NpbmdcbiIKICAgICAgICAgICAgICAgICLi
gKIgUmVhbC10aW1lIENQTSBzdGF0c1xuIgogICAgICAgICAgICAgICAgIuKAoiBObyBjb29sZG93
bnNcbiIKICAgICAgICAgICAgICAgICLigKIgQWR2YW5jZWQgaW5ib3ggc2Nhbm5pbmdcbiIKICAg
ICAgICAgICAgICAgICLigKIgTXVsdGktc2VydmljZSBhY2NvdW50IGRldGVjdGlvblxuXG4iCiAg
ICAgICAgICAgICAgICAiSm9pbiBvdXIgb2ZmaWNpYWwgc2VydmVyIGZvciBmdWxsIGFjY2VzcyEi
CiAgICAgICAgICAgICkKICAgICAgICApCiAgICAgICAgc3BvbnNvcl9lbWJlZC5zZXRfZm9vdGVy
KHRleHQ9IlN1cHBvcnQgdGhlIGRldmVsb3BlcnMgdG8ga2VlcCB0aGlzIHNlcnZpY2UgcnVubmlu
ZyIpCiAgICAgICAgYXdhaXQgZG1fY2hhbm5lbC5zZW5kKGVtYmVkPXNwb25zb3JfZW1iZWQsIHZp
ZXc9c3BvbnNvcl92aWV3KQogICAgZWxzZToKICAgICAgICBhd2FpdCBkbV9jaGFubmVsLnNlbmQo
IuKchSBDaGVjayBjb21wbGV0ZSEgVGhhbmsgeW91IGZvciBiZWluZyBhIHByZW1pdW0gdXNlciEi
KQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQojICAgICAgICAgICAgICAgICAgICAgTUlDUk9TT0ZU
IEFDQ09VTlQgQ0hFQ0tFUgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRlZiBhbGxfY2hlY2tlcl9s
b2dpYyh1c2VyX2lkOiBpbnQsIEVtYWlsOiBzdHIsIFBhc3N3b3JkOiBzdHIsIHNlcnZpY2VfbWFw
cGluZzogZGljdCk6CiAgICAiIiJNYWluIGxvZ2ljIGZvciBNaWNyb3NvZnQgYWNjb3VudCB2YWxp
ZGF0aW9uIGFuZCBpbmJveCBzY2FubmluZy4iIiIKICAgIHNlc3Npb24gPSBnZXRfdXNlcl9zZXNz
aW9uKHVzZXJfaWQpCiAgICBpZiBzZXNzaW9uWyJzaG91bGRfc3RvcCJdOgogICAgICAgIHJldHVy
bgogICAgdHJ5OgogICAgICAgIHIgPSByZXF1ZXN0cy5nZXQoCiAgICAgICAgICAgICJodHRwczov
L2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vY29uc3VtZXJzL29hdXRoMi92Mi4wL2F1dGhvcml6
ZSIKICAgICAgICAgICAgIj9jbGllbnRfaW5mbz0xJmhhc2Nocm9tZT0xIgogICAgICAgICAgICBm
IiZsb2dpbl9oaW50PXtFbWFpbH0iCiAgICAgICAgICAgICImbWt0PWVuIgogICAgICAgICAgICAi
JnJlc3BvbnNlX3R5cGU9Y29kZSIKICAgICAgICAgICAgIiZjbGllbnRfaWQ9ZTliMTU0ZDAtNzY1
OC00MzNiLWJiMjUtNmI4ZTBhOGE3YzU5IgogICAgICAgICAgICAiJnNjb3BlPXByb2ZpbGUlMjBv
cGVuaWQlMjBvZmZsaW5lX2FjY2VzcyUyMGh0dHBzJTNBJTJGJTJGb3V0bG9vay5vZmZpY2UuY29t
JTJGTTM2NS5BY2Nlc3MiCiAgICAgICAgICAgICImcmVkaXJlY3RfdXJpPW1zYXV0aCUzQSUyRiUy
RmNvbS5taWNyb3NvZnQub3V0bG9va2xpdGUlMkZmY2c4MHF2b00xWU1LSlppYmpCd1FjRGZPbm8l
MjUzRCIsCiAgICAgICAgICAgIGhlYWRlcnM9eyJVc2VyLUFnZW50IjogIk1vemlsbGEvNS4wIn0s
CiAgICAgICAgICAgIHRpbWVvdXQ9NQogICAgICAgICkKICAgICAgICBpZiByLnN0YXR1c19jb2Rl
ICE9IDIwMDoKICAgICAgICAgICAgcHJpbnQoZiJDb3VsZCBub3QgZ2V0IE9BdXRoIHBhcmFtcyBm
b3Ige0VtYWlsfSIpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIGNvayA9IHIuY29va2llcy5n
ZXRfZGljdCgpCiAgICAgICAgdGV4dCA9IHIudGV4dAogICAgICAgIGlmICJ1cmxQb3N0OiciIG5v
dCBpbiB0ZXh0OgogICAgICAgICAgICBwcmludChmIkZhaWxlZCBwYXJzaW5nIGZvciB7RW1haWx9
IikKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdXJsX3Bvc3QgPSB0ZXh0LnNwbGl0KCJ1cmxQ
b3N0OiciKVsxXS5zcGxpdCgiJyIpWzBdCiAgICAgICAgUFBGVCA9IHRleHQuc3BsaXQoJ25hbWU9
IlBQRlQiIGlkPSJpMDMyNyIgdmFsdWU9IicpWzFdLnNwbGl0KCInLCIpWzBdCiAgICAgICAgQUQg
PSByLnVybC5zcGxpdCgiaGFzY2hyb21lPTEiKVswXQogICAgICAgIE1TUFJlcXUgPSBjb2suZ2V0
KCJNU1BSZXF1IiwgIiIpCiAgICAgICAgdWFpZCA9IGNvay5nZXQoInVhaWQiLCAiIikKICAgICAg
ICBSZWZyZXNoVG9rZW5Tc28gPSBjb2suZ2V0KCJSZWZyZXNoVG9rZW5Tc28iLCAiIikKICAgICAg
ICBNU1BPSyA9IGNvay5nZXQoIk1TUE9LIiwgIiIpCiAgICAgICAgT1BhcmFtcyA9IGNvay5nZXQo
Ik9QYXJhbXMiLCAiIikKICAgICAgICBkb19sb2dpbl9wcm90b2NvbF9hbGwodXNlcl9pZCwgRW1h
aWwsIFBhc3N3b3JkLCB1cmxfcG9zdCwgUFBGVCwgQUQsIE1TUFJlcXUsIHVhaWQsIFJlZnJlc2hU
b2tlblNzbywgTVNQT0ssIE9QYXJhbXMsIHNlcnZpY2VfbWFwcGluZykKICAgICAgICBzZXNzaW9u
WyJjaGVja190aW1lc3RhbXBzIl0uYXBwZW5kKHRpbWUudGltZSgpKQogICAgZXhjZXB0IEV4Y2Vw
dGlvbiBhcyBlOgogICAgICAgIHByaW50KGYiRXJyb3IgaW4gYWxsX2NoZWNrZXJfbG9naWMgZm9y
IHtFbWFpbH06IHtlfSIpCgpkZWYgZG9fbG9naW5fcHJvdG9jb2xfYWxsKHVzZXJfaWQ6IGludCwg
RW1haWw6IHN0ciwgUGFzc3dvcmQ6IHN0ciwgVVJMOiBzdHIsIFBQRlQ6IHN0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBBRDogc3RyLCBNU1BSZXF1OiBzdHIsIHVhaWQ6IHN0ciwgUmVmcmVz
aFRva2VuU3NvOiBzdHIsIE1TUE9LOiBzdHIsIE9QYXJhbXM6IHN0ciwgc2VydmljZV9tYXBwaW5n
OiBkaWN0KToKICAgIHNlc3Npb24gPSBnZXRfdXNlcl9zZXNzaW9uKHVzZXJfaWQpCiAgICB0cnk6
CiAgICAgICAgZGF0YV9zdHIgPSAoCiAgICAgICAgICAgIGYiaTEzPTEmbG9naW49e0VtYWlsfSZs
b2dpbmZtdD17RW1haWx9JnR5cGU9MTEmTG9naW5PcHRpb25zPTEiCiAgICAgICAgICAgICImbHJ0
PSZscnRQYXJ0aXRpb249Jmhpc1JlZ2lvbj0maGlzU2NhbGVVbml0PSIKICAgICAgICAgICAgZiIm
cGFzc3dkPXtQYXNzd29yZH0iCiAgICAgICAgICAgICImcHM9MiZwc1JOR0NEZWZhdWx0VHlwZT0m
cHNSTkdDRW50cm9weT0mcHNSTkdDU0xLPSZjYW5hcnk9JmN0eD0maHBncmVxdWVzdGlkPSIKICAg
ICAgICAgICAgZiImUFBGVD17UFBGVH0iCiAgICAgICAgICAgICImUFBTWD1QYXNzcG9ydFImTmV3
VXNlcj0xJkZvdW5kTVNBcz0mZnNwb3N0PTAmaTIxPTAmQ29va2llRGlzY2xvc3VyZT0wJklzRmlk
b1N1cHBvcnRlZD0wIgogICAgICAgICAgICAiJmlzU2lnbnVwUG9zdD0wJmlzUmVjb3ZlcnlBdHRl
bXB0UG9zdD0wJmkxOT05OTYwIgogICAgICAgICkKICAgICAgICBoZWFkZXJzID0gewogICAgICAg
ICAgICAiSG9zdCI6ICJsb2dpbi5saXZlLmNvbSIsCiAgICAgICAgICAgICJDb25uZWN0aW9uIjog
ImtlZXAtYWxpdmUiLAogICAgICAgICAgICAiQ29udGVudC1MZW5ndGgiOiBzdHIobGVuKGRhdGFf
c3RyKSksCiAgICAgICAgICAgICJDYWNoZS1Db250cm9sIjogIm1heC1hZ2U9MCIsCiAgICAgICAg
ICAgICJVcGdyYWRlLUluc2VjdXJlLVJlcXVlc3RzIjogIjEiLAogICAgICAgICAgICAiT3JpZ2lu
IjogImh0dHBzOi8vbG9naW4ubGl2ZS5jb20iLAogICAgICAgICAgICAiQ29udGVudC1UeXBlIjog
ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsCiAgICAgICAgICAgICJVc2VyLUFn
ZW50IjogIk1vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCA5KSBBcHBsZVdlYktpdC81MzcuMzYi
LAogICAgICAgICAgICAiQWNjZXB0IjogInRleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWws
YXBwbGljYXRpb24veG1sO3E9MC45LCovKjtxPTAuOCIsCiAgICAgICAgICAgICJYLVJlcXVlc3Rl
ZC1XaXRoIjogImNvbS5taWNyb3NvZnQub3V0bG9va2xpdGUiLAogICAgICAgICAgICAiU2VjLUZl
dGNoLVNpdGUiOiAic2FtZS1vcmlnaW4iLAogICAgICAgICAgICAiU2VjLUZldGNoLU1vZGUiOiAi
bmF2aWdhdGUiLAogICAgICAgICAgICAiU2VjLUZldGNoLVVzZXIiOiAiPzEiLAogICAgICAgICAg
ICAiU2VjLUZldGNoLURlc3QiOiAiZG9jdW1lbnQiLAogICAgICAgICAgICAiUmVmZXJlciI6IGYi
e0FEfWhhc2Nocm9tZT0xIiwKICAgICAgICAgICAgIkFjY2VwdC1FbmNvZGluZyI6ICJnemlwLCBk
ZWZsYXRlIiwKICAgICAgICAgICAgIkFjY2VwdC1MYW5ndWFnZSI6ICJlbi1VUyxlbjtxPTAuOSIs
CiAgICAgICAgICAgICJDb29raWUiOiAoCiAgICAgICAgICAgICAgICBmIk1TUFJlcXU9e01TUFJl
cXV9O3VhaWQ9e3VhaWR9OyBSZWZyZXNoVG9rZW5Tc289e1JlZnJlc2hUb2tlblNzb307ICIKICAg
ICAgICAgICAgICAgIGYiTVNQT0s9e01TUE9LfTsgT1BhcmFtcz17T1BhcmFtc307IE1pY3Jvc29m
dEFwcGxpY2F0aW9uc1RlbGVtZXRyeURldmljZUlkPXt1dWlkLnV1aWQ0KCl9IgogICAgICAgICAg
ICApCiAgICAgICAgfQogICAgICAgIHJlcyA9IHJlcXVlc3RzLnBvc3QoVVJMLCBkYXRhPWRhdGFf
c3RyLCBoZWFkZXJzPWhlYWRlcnMsIGFsbG93X3JlZGlyZWN0cz1GYWxzZSwgdGltZW91dD01KQog
ICAgICAgIGNvb2sgPSByZXMuY29va2llcy5nZXRfZGljdCgpCiAgICAgICAgaGggPSByZXMuaGVh
ZGVycwogICAgICAgIGlmIGFueShrIGluIGNvb2sgZm9yIGsgaW4gWyJKU0giLCAiSlNIUCIsICJB
Tk9OIiwgIldMU1NDIl0pIG9yIHJlcy50ZXh0ID09ICIiOgogICAgICAgICAgICB3aXRoIHVzZXJf
c2Vzc2lvbnNfbG9jazoKICAgICAgICAgICAgICAgIHNlc3Npb25bImdvb2RfY291bnQiXSArPSAx
CiAgICAgICAgICAgICAgICBzZXNzaW9uWyJ0b3RhbF9jaGVja2VkIl0gKz0gMQogICAgICAgICAg
ICBkb19nZXRfdG9rZW5fYWxsKHVzZXJfaWQsIEVtYWlsLCBQYXNzd29yZCwgY29vaywgaGgsIHNl
cnZpY2VfbWFwcGluZykKICAgICAgICBlbHNlOgogICAgICAgICAgICB3aXRoIHVzZXJfc2Vzc2lv
bnNfbG9jazoKICAgICAgICAgICAgICAgIHNlc3Npb25bImJhZF9jb3VudCJdICs9IDEKICAgICAg
ICAgICAgICAgIHNlc3Npb25bInRvdGFsX2NoZWNrZWQiXSArPSAxCiAgICAgICAgICAgIHByaW50
KGYiQmFkIEFjY291bnQgOiB7RW1haWx9IHwge1Bhc3N3b3JkfSIpCiAgICBleGNlcHQgRXhjZXB0
aW9uIGFzIGU6CiAgICAgICAgcHJpbnQoZiJkb19sb2dpbl9wcm90b2NvbF9hbGwgZXJyb3IgZm9y
IHtFbWFpbH06IHtlfSIpCgpkZWYgZG9fZ2V0X3Rva2VuX2FsbCh1c2VyX2lkOiBpbnQsIEVtYWls
OiBzdHIsIFBhc3N3b3JkOiBzdHIsIGNvb2s6IGRpY3QsIGhoOiBkaWN0LCBzZXJ2aWNlX21hcHBp
bmc6IGRpY3QpOgogICAgc2Vzc2lvbiA9IGdldF91c2VyX3Nlc3Npb24odXNlcl9pZCkKICAgIHRy
eToKICAgICAgICBpZiAiTG9jYXRpb24iIG5vdCBpbiBoaDoKICAgICAgICAgICAgcHJpbnQoZiJO
byBsb2NhdGlvbiBoZWFkZXIgZm9yIHtFbWFpbH0iKQogICAgICAgICAgICByZXR1cm4KICAgICAg
ICBsb2MgPSBoaFsiTG9jYXRpb24iXQogICAgICAgIGlmICJjb2RlPSIgbm90IGluIGxvYzoKICAg
ICAgICAgICAgcHJpbnQoZiJObyBjb2RlPSBwYXJhbSBmb3Ige0VtYWlsfSIpCiAgICAgICAgICAg
IHJldHVybgogICAgICAgIGNvZGUgPSBsb2Muc3BsaXQoImNvZGU9IilbMV0uc3BsaXQoIiYiKVsw
XQogICAgICAgIENJRCA9IGNvb2suZ2V0KCJNU1BDSUQiLCAiIikudXBwZXIoKQogICAgICAgIHVy
bCA9ICJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vY29uc3VtZXJzL29hdXRoMi92
Mi4wL3Rva2VuIgogICAgICAgIGRhdGEgPSB7CiAgICAgICAgICAgICJjbGllbnRfaW5mbyI6ICIx
IiwKICAgICAgICAgICAgImNsaWVudF9pZCI6ICJlOWIxNTRkMC03NjU4LTQzM2ItYmIyNS02Yjhl
MGE4YTdjNTkiLAogICAgICAgICAgICAicmVkaXJlY3RfdXJpIjogIm1zYXV0aDovL2NvbS5taWNy
b3NvZnQub3V0bG9va2xpdGUvZmNnODBxdm9NMVlNS0paaWJqQndRY0RmT25vJTNEIiwKICAgICAg
ICAgICAgImdyYW50X3R5cGUiOiAiYXV0aG9yaXphdGlvbl9jb2RlIiwKICAgICAgICAgICAgImNv
ZGUiOiBjb2RlLAogICAgICAgICAgICAic2NvcGUiOiAicHJvZmlsZSBvcGVuaWQgb2ZmbGluZV9h
Y2Nlc3MgaHR0cHM6Ly9vdXRsb29rLm9mZmljZS5jb20vTTM2NS5BY2Nlc3MiCiAgICAgICAgfQog
ICAgICAgIHJlc3AgPSByZXF1ZXN0cy5wb3N0KHVybCwgZGF0YT1kYXRhLCBoZWFkZXJzPXsiQ29u
dGVudC1UeXBlIjogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9LCB0aW1lb3V0
PTUpCiAgICAgICAgdG9rZW4gPSByZXNwLmpzb24oKS5nZXQoImFjY2Vzc190b2tlbiIpCiAgICAg
ICAgaWYgdG9rZW46CiAgICAgICAgICAgIGRvX2dldF9pbmZvX2FsbCh1c2VyX2lkLCBFbWFpbCwg
UGFzc3dvcmQsIHRva2VuLCBDSUQsIHNlcnZpY2VfbWFwcGluZykKICAgICAgICBlbHNlOgogICAg
ICAgICAgICBwcmludChmIk5vIHRva2VuIGluIHJlc3BvbnNlIGZvciB7RW1haWx9IikKICAgIGV4
Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICBwcmludChmImRvX2dldF90b2tlbl9hbGwgZXJy
b3IgZm9yIHtFbWFpbH06IHtlfSIpCgpkZWYgZG9fZ2V0X2luZm9fYWxsKHVzZXJfaWQ6IGludCwg
RW1haWw6IHN0ciwgUGFzc3dvcmQ6IHN0ciwgdG9rZW46IHN0ciwgQ0lEOiBzdHIsIHNlcnZpY2Vf
bWFwcGluZzogZGljdCk6CiAgICBzZXNzaW9uID0gZ2V0X3VzZXJfc2Vzc2lvbih1c2VyX2lkKQog
ICAgdHJ5OgogICAgICAgIGhlYWRlcnMgPSB7CiAgICAgICAgICAgICJVc2VyLUFnZW50IjogIk91
dGxvb2stQW5kcm9pZC8yLjAiLAogICAgICAgICAgICAiUHJhZ21hIjogIm5vLWNhY2hlIiwKICAg
ICAgICAgICAgIkFjY2VwdCI6ICJhcHBsaWNhdGlvbi9qc29uIiwKICAgICAgICAgICAgIkZvcmNl
U3luYyI6ICJmYWxzZSIsCiAgICAgICAgICAgICJBdXRob3JpemF0aW9uIjogZiJCZWFyZXIge3Rv
a2VufSIsCiAgICAgICAgICAgICJYLUFuY2hvck1haWxib3giOiBmIkNJRDp7Q0lEfSIsCiAgICAg
ICAgICAgICJIb3N0IjogInN1YnN0cmF0ZS5vZmZpY2UuY29tIiwKICAgICAgICAgICAgIkNvbm5l
Y3Rpb24iOiAiS2VlcC1BbGl2ZSIsCiAgICAgICAgICAgICJBY2NlcHQtRW5jb2RpbmciOiAiZ3pp
cCIKICAgICAgICB9CiAgICAgICAgciA9IHJlcXVlc3RzLmdldCgiaHR0cHM6Ly9zdWJzdHJhdGUu
b2ZmaWNlLmNvbS9wcm9maWxlYjIvdjIuMC9tZS9WMVByb2ZpbGUiLCBoZWFkZXJzPWhlYWRlcnMs
IHRpbWVvdXQ9NSkuanNvbigpCiAgICAgICAgaW5mb19uYW1lID0gci5nZXQoIm5hbWVzIiwgW10p
CiAgICAgICAgZGlzcGxheV9uYW1lID0gaW5mb19uYW1lWzBdWyJkaXNwbGF5TmFtZSJdIGlmIGlu
Zm9fbmFtZSBlbHNlICJVbmtub3duIgoKICAgICAgICB1cmwgPSBmImh0dHBzOi8vb3V0bG9vay5s
aXZlLmNvbS9vd2Eve0VtYWlsfS9zdGFydHVwZGF0YS5hc2h4P2FwcD1NaW5pJm49MCIKICAgICAg
ICBoZWFkZXJzMiA9IHsKICAgICAgICAgICAgIkhvc3QiOiAib3V0bG9vay5saXZlLmNvbSIsCiAg
ICAgICAgICAgICJjb250ZW50LWxlbmd0aCI6ICIwIiwKICAgICAgICAgICAgIngtb3dhLXNlc3Np
b25pZCI6IGYie0NJRH0iLAogICAgICAgICAgICAieC1yZXEtc291cmNlIjogIk1pbmkiLAogICAg
ICAgICAgICAiYXV0aG9yaXphdGlvbiI6IGYiQmVhcmVyIHt0b2tlbn0iLAogICAgICAgICAgICAi
dXNlci1hZ2VudCI6ICJNb3ppbGxhLzUuMCAoTGludXg7IEFuZHJvaWQgOSkgQXBwbGVXZWJLaXQv
NTM3LjM2IiwKICAgICAgICAgICAgImFjdGlvbiI6ICJTdGFydHVwRGF0YSIsCiAgICAgICAgICAg
ICJ4LW93YS1jb3JyZWxhdGlvbmlkIjogZiJ7Q0lEfSIsCiAgICAgICAgICAgICJtcy1jdiI6ICJZ
aXp4UUs3M3ZlUFN5VlpaWFZlTnIrLjMiLAogICAgICAgICAgICAiY29udGVudC10eXBlIjogImFw
cGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgiLAogICAgICAgICAgICAiYWNjZXB0IjogIiov
KiIsCiAgICAgICAgICAgICJvcmlnaW4iOiAiaHR0cHM6Ly9vdXRsb29rLmxpdmUuY29tIiwKICAg
ICAgICAgICAgIngtcmVxdWVzdGVkLXdpdGgiOiAiY29tLm1pY3Jvc29mdC5vdXRsb29rbGl0ZSIs
CiAgICAgICAgICAgICJzZWMtZmV0Y2gtc2l0ZSI6ICJzYW1lLW9yaWdpbiIsCiAgICAgICAgICAg
ICJzZWMtZmV0Y2gtbW9kZSI6ICJjb3JzIiwKICAgICAgICAgICAgInNlYy1mZXRjaC1kZXN0Ijog
ImVtcHR5IiwKICAgICAgICAgICAgInJlZmVyZXIiOiAiaHR0cHM6Ly9vdXRsb29rLmxpdmUuY29t
LyIsCiAgICAgICAgICAgICJhY2NlcHQtZW5jb2RpbmciOiAiZ3ppcCwgZGVmbGF0ZSIsCiAgICAg
ICAgICAgICJhY2NlcHQtbGFuZ3VhZ2UiOiAiZW4tVVMsZW47cT0wLjkiCiAgICAgICAgfQogICAg
ICAgIHJlc2UgPSByZXF1ZXN0cy5wb3N0KHVybCwgaGVhZGVycz1oZWFkZXJzMiwgZGF0YT0iIiwg
dGltZW91dD01KS50ZXh0CiAgICAgICAgc2F2ZV92YWxpZF9hY2NvdW50KHVzZXJfaWQsIEVtYWls
LCBQYXNzd29yZCkKCiAgICAgICAgc2VydmljZXNfbGlzdCA9IFtdCiAgICAgICAgZm9yIHNlcnZp
Y2UsIG1hcmtlciBpbiBzZXJ2aWNlX21hcHBpbmcuaXRlbXMoKToKICAgICAgICAgICAgaWYgbWFy
a2VyIGluIHJlc2U6CiAgICAgICAgICAgICAgICBzZXJ2aWNlc19saXN0LmFwcGVuZChzZXJ2aWNl
KQoKICAgICAgICBpZiBzZXJ2aWNlc19saXN0OgogICAgICAgICAgICBmb3Igc2VydmljZV9uYW1l
IGluIHNlcnZpY2VzX2xpc3Q6CiAgICAgICAgICAgICAgICBsaW5lID0gZiJ7RW1haWx9OntQYXNz
d29yZH0iCiAgICAgICAgICAgICAgICBpZiBsaW5lIG5vdCBpbiBzZXNzaW9uWyJyZXN1bHRzX2Nh
Y2hlIl0uZ2V0KHNlcnZpY2VfbmFtZS5sb3dlcigpLCBzZXQoKSk6CiAgICAgICAgICAgICAgICAg
ICAgc2Vzc2lvblsicmVzdWx0c19jYWNoZSJdLnNldGRlZmF1bHQoc2VydmljZV9uYW1lLmxvd2Vy
KCksIHNldCgpKS5hZGQobGluZSkKICAgICAgICAgICAgICAgICAgICBzYXZlX3Jlc3VsdF9mb3Jf
dXNlcih1c2VyX2lkLCBzZXJ2aWNlX25hbWUsIEVtYWlsLCBQYXNzd29yZCkKICAgICAgICAgICAg
ICAgICAgICBzZXNzaW9uWyJzZXJ2aWNlX2hpdHMiXS5zZXRkZWZhdWx0KHNlcnZpY2VfbmFtZS5s
b3dlcigpLCBbXSkuYXBwZW5kKGRpc3BsYXlfbmFtZSkKCiAgICAgICAgICAgIHByaW50KGYiR29v
ZCBsb2dpbiB3aXRoIHNlcnZpY2VzOiB7RW1haWx9ID0+IHtzZXJ2aWNlc19saXN0fSIpCiAgICAg
ICAgZWxzZToKICAgICAgICAgICAgcHJpbnQoZiJWYWxpZCBhY2NvdW50IHdpdGggbm8gc2Vydmlj
ZSBoaXQ6IHtFbWFpbH0iKQoKICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICBwcmlu
dChmImRvX2dldF9pbmZvX2FsbCBlcnJvciBmb3Ige0VtYWlsfToge2V9IikKCmRlZiBwcm9jZXNz
X21pY3Jvc29mdF9iYXRjaChiYXRjaDogTGlzdFtzdHJdLCB1c2VyX2lkOiBpbnQsIHNlcnZpY2Vf
bWFwcGluZzogZGljdCkgLT4gTm9uZToKICAgICIiIlByb2Nlc3MgYSBiYXRjaCBvZiBNaWNyb3Nv
ZnQgY3JlZGVudGlhbHMuIiIiCiAgICBzZXNzaW9uID0gZ2V0X3VzZXJfc2Vzc2lvbih1c2VyX2lk
KQogICAgZm9yIGxpbmUgaW4gYmF0Y2g6CiAgICAgICAgaWYgc2Vzc2lvblsic2hvdWxkX3N0b3Ai
XToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBlbWFpbCwgcGFz
c3dvcmQgPSBsaW5lLnNwbGl0KCI6IiwgMSkKICAgICAgICAgICAgZG9tYWluX3R5cGUgPSBjbGFz
c2lmeV9kb21haW4oZW1haWwpCiAgICAgICAgICAgIGlmIGRvbWFpbl90eXBlIG5vdCBpbiAoJ21p
Y3Jvc29mdCcsICd1bmtub3duJyk6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAg
ICBhbGxfY2hlY2tlcl9sb2dpYyh1c2VyX2lkLCBlbWFpbCwgcGFzc3dvcmQsIHNlcnZpY2VfbWFw
cGluZykKICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgIHByaW50KGYi
RXJyb3IgcHJvY2Vzc2luZyBNaWNyb3NvZnQgbGluZToge2V9IikKCiMgPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KIyAgICAgICAgICAgICAgICAgICAgIEdPT0dMRSBBQ0NPVU5UIENIRUNLRVIKIyA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpkZWYgdmFsaWRhdGVfZ21haWwoZW1haWw6IHN0ciwgcGFzc3dvcmQ6
IHN0cikgLT4gYm9vbDoKICAgICIiIlZhbGlkYXRlIEdvb2dsZSBhY2NvdW50IGNyZWRlbnRpYWxz
IHVzaW5nIElNQVAuIiIiCiAgICB0cnk6CiAgICAgICAgY29udGV4dCA9IHNzbC5jcmVhdGVfZGVm
YXVsdF9jb250ZXh0KCkKICAgICAgICBzZXJ2ZXIgPSAiaW1hcC5nbWFpbC5jb20iCiAgICAgICAg
CiAgICAgICAgIyBIYW5kbGUgZWR1Y2F0aW9uYWwgZG9tYWlucwogICAgICAgIGlmIGNsYXNzaWZ5
X2RvbWFpbihlbWFpbCkgPT0gJ2dvb2dsZScgYW5kICdlZHUnIGluIGVtYWlsOgogICAgICAgICAg
ICBzZXJ2ZXIgPSAiaW1hcC4iICsgZW1haWwuc3BsaXQoJ0AnKVstMV0KICAgICAgICAgICAgCiAg
ICAgICAgd2l0aCBpbWFwbGliLklNQVA0X1NTTChzZXJ2ZXIsIDk5Mywgc3NsX2NvbnRleHQ9Y29u
dGV4dCkgYXMgbWFpbDoKICAgICAgICAgICAgbWFpbC5sb2dpbihlbWFpbCwgcGFzc3dvcmQpCiAg
ICAgICAgICAgIG1haWwuc2VsZWN0KCJpbmJveCIpCiAgICAgICAgICAgIHJldHVybiBUcnVlCiAg
ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgcHJpbnQoZiJHb29nbGUgdmFsaWRhdGlv
biBmYWlsZWQgZm9yIHtlbWFpbH06IHtzdHIoZSl9IikKICAgICAgICByZXR1cm4gRmFsc2UKCmRl
ZiBjaGVja19nbWFpbF9pbmJveChlbWFpbDogc3RyLCBwYXNzd29yZDogc3RyLCBzZXJ2aWNlX21h
cHBpbmc6IGRpY3QpIC0+IExpc3Rbc3RyXToKICAgICIiIlNjYW4gR29vZ2xlIGluYm94IGZvciBz
ZXJ2aWNlLXNwZWNpZmljIGVtYWlscy4iIiIKICAgIHRyeToKICAgICAgICBjb250ZXh0ID0gc3Ns
LmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKQogICAgICAgIHNlcnZlciA9ICJpbWFwLmdtYWlsLmNv
bSIKICAgICAgICAKICAgICAgICAjIEhhbmRsZSBlZHVjYXRpb25hbCBkb21haW5zCiAgICAgICAg
aWYgY2xhc3NpZnlfZG9tYWluKGVtYWlsKSA9PSAnZ29vZ2xlJyBhbmQgJ2VkdScgaW4gZW1haWw6
CiAgICAgICAgICAgIHNlcnZlciA9ICJpbWFwLiIgKyBlbWFpbC5zcGxpdCgnQCcpWy0xXQogICAg
ICAgICAgICAKICAgICAgICB3aXRoIGltYXBsaWIuSU1BUDRfU1NMKHNlcnZlciwgOTkzLCBzc2xf
Y29udGV4dD1jb250ZXh0KSBhcyBtYWlsOgogICAgICAgICAgICBtYWlsLmxvZ2luKGVtYWlsLCBw
YXNzd29yZCkKICAgICAgICAgICAgbWFpbC5zZWxlY3QoImluYm94IikKICAgICAgICAgICAgCiAg
ICAgICAgICAgIGZvdW5kX3NlcnZpY2VzID0gW10KICAgICAgICAgICAgZm9yIHNlcnZpY2UsIHNl
cnZpY2VfZW1haWwgaW4gc2VydmljZV9tYXBwaW5nLml0ZW1zKCk6CiAgICAgICAgICAgICAgICBz
dGF0dXMsIG1lc3NhZ2VzID0gbWFpbC5zZWFyY2goTm9uZSwgZicoRlJPTSAie3NlcnZpY2VfZW1h
aWx9IiknKQogICAgICAgICAgICAgICAgaWYgc3RhdHVzID09ICJPSyIgYW5kIG1lc3NhZ2VzWzBd
OgogICAgICAgICAgICAgICAgICAgIGZvdW5kX3NlcnZpY2VzLmFwcGVuZChzZXJ2aWNlKQogICAg
ICAgICAgICAKICAgICAgICAgICAgcmV0dXJuIGZvdW5kX3NlcnZpY2VzCiAgICBleGNlcHQgRXhj
ZXB0aW9uIGFzIGU6CiAgICAgICAgcHJpbnQoZiJHb29nbGUgaW5ib3ggc2NhbiBmYWlsZWQgZm9y
IHtlbWFpbH06IHtzdHIoZSl9IikKICAgICAgICByZXR1cm4gW10KCmRlZiBwcm9jZXNzX2dtYWls
X2JhdGNoKGJhdGNoOiBMaXN0W3N0cl0sIHVzZXJfaWQ6IGludCwgY2hlY2tfaW5ib3g6IGJvb2ws
IHNlcnZpY2VfbWFwcGluZzogZGljdCkgLT4gTm9uZToKICAgICIiIlByb2Nlc3MgYSBiYXRjaCBv
ZiBHb29nbGUgY3JlZGVudGlhbHMuIiIiCiAgICBzZXNzaW9uID0gZ2V0X3VzZXJfc2Vzc2lvbih1
c2VyX2lkKQogICAgZm9yIGxpbmUgaW4gYmF0Y2g6CiAgICAgICAgaWYgc2Vzc2lvblsic2hvdWxk
X3N0b3AiXToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBlbWFp
bCwgcGFzc3dvcmQgPSBsaW5lLnNwbGl0KCI6IiwgMSkKICAgICAgICAgICAgZG9tYWluX3R5cGUg
PSBjbGFzc2lmeV9kb21haW4oZW1haWwpCiAgICAgICAgICAgIGlmIGRvbWFpbl90eXBlIG5vdCBp
biAoJ2dvb2dsZScsICd1bmtub3duJyk6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgIHdpdGggdXNlcl9zZXNzaW9uc19sb2NrOgogICAgICAgICAg
ICAgICAgc2Vzc2lvblsidG90YWxfY2hlY2tlZCJdICs9IDEKICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICBpZiB2YWxpZGF0ZV9nbWFpbChlbWFpbCwgcGFzc3dvcmQpOgogICAgICAgICAgICAg
ICAgd2l0aCB1c2VyX3Nlc3Npb25zX2xvY2s6CiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvblsi
Z29vZF9jb3VudCJdICs9IDEKICAgICAgICAgICAgICAgIHNhdmVfdmFsaWRfYWNjb3VudCh1c2Vy
X2lkLCBlbWFpbCwgcGFzc3dvcmQpCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlm
IGNoZWNrX2luYm94OgogICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzID0gY2hlY2tfZ21haWxf
aW5ib3goZW1haWwsIHBhc3N3b3JkLCBzZXJ2aWNlX21hcHBpbmcpCiAgICAgICAgICAgICAgICAg
ICAgaWYgc2VydmljZXM6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzZXJ2aWNlIGluIHNl
cnZpY2VzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZV9yZXN1bHRfZm9yX3VzZXIo
dXNlcl9pZCwgc2VydmljZSwgZW1haWwsIHBhc3N3b3JkKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2Vzc2lvblsic2VydmljZV9oaXRzIl0uc2V0ZGVmYXVsdChzZXJ2aWNlLmxvd2VyKCks
IFtdKS5hcHBlbmQoZW1haWwpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB3aXRo
IHVzZXJfc2Vzc2lvbnNfbG9jazoKICAgICAgICAgICAgICAgICAgICBzZXNzaW9uWyJiYWRfY291
bnQiXSArPSAxCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBh
cyBlOgogICAgICAgICAgICBwcmludChmIkVycm9yIHByb2Nlc3NpbmcgR29vZ2xlIGxpbmU6IHtl
fSIpCgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgICAgICAgICAgICAgICAgICAgICBHRU5FUklD
IElNQVAgVkFMSURBVElPTgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRlZiB2YWxpZGF0ZV9pbWFw
KGVtYWlsOiBzdHIsIHBhc3N3b3JkOiBzdHIpIC0+IGJvb2w6CiAgICAiIiJHZW5lcmljIElNQVAg
dmFsaWRhdGlvbiBmb3IgdmFyaW91cyBkb21haW5zLiIiIgogICAgc2VydmVyX2NvbmZpZyA9IGdl
dF9pbWFwX3NlcnZlcihlbWFpbCkKICAgIGlmIG5vdCBzZXJ2ZXJfY29uZmlnOgogICAgICAgIHJl
dHVybiBGYWxzZQogICAgICAgIAogICAgc2VydmVyLCBwb3J0ID0gc2VydmVyX2NvbmZpZwogICAg
dHJ5OgogICAgICAgIHdpdGggaW1hcGxpYi5JTUFQNF9TU0woc2VydmVyLCBwb3J0KSBhcyBtYWls
OgogICAgICAgICAgICBtYWlsLmxvZ2luKGVtYWlsLCBwYXNzd29yZCkKICAgICAgICAgICAgcmV0
dXJuIFRydWUKICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgcmV0dXJuIEZhbHNlCgpkZWYg
Y2hlY2tfaW1hcF9pbmJveChlbWFpbDogc3RyLCBwYXNzd29yZDogc3RyLCBzZXJ2aWNlX21hcHBp
bmc6IGRpY3QpIC0+IExpc3Rbc3RyXToKICAgICIiIlNjYW4gaW5ib3ggZm9yIHNlcnZpY2UgbWFy
a2VycyB1c2luZyBJTUFQLiIiIgogICAgc2VydmVyX2NvbmZpZyA9IGdldF9pbWFwX3NlcnZlcihl
bWFpbCkKICAgIGlmIG5vdCBzZXJ2ZXJfY29uZmlnOgogICAgICAgIHJldHVybiBbXQogICAgICAg
IAogICAgc2VydmVyLCBwb3J0ID0gc2VydmVyX2NvbmZpZwogICAgdHJ5OgogICAgICAgIHdpdGgg
aW1hcGxpYi5JTUFQNF9TU0woc2VydmVyLCBwb3J0KSBhcyBtYWlsOgogICAgICAgICAgICBtYWls
LmxvZ2luKGVtYWlsLCBwYXNzd29yZCkKICAgICAgICAgICAgbWFpbC5zZWxlY3QoImluYm94IikK
ICAgICAgICAgICAgCiAgICAgICAgICAgIGZvdW5kX3NlcnZpY2VzID0gW10KICAgICAgICAgICAg
Zm9yIHNlcnZpY2UsIGZyb21fZW1haWwgaW4gc2VydmljZV9tYXBwaW5nLml0ZW1zKCk6CiAgICAg
ICAgICAgICAgICBzdGF0dXMsIG1lc3NhZ2VzID0gbWFpbC5zZWFyY2goTm9uZSwgZicoRlJPTSAi
e2Zyb21fZW1haWx9IiknKQogICAgICAgICAgICAgICAgaWYgc3RhdHVzID09ICJPSyIgYW5kIG1l
c3NhZ2VzWzBdOgogICAgICAgICAgICAgICAgICAgIGZvdW5kX3NlcnZpY2VzLmFwcGVuZChzZXJ2
aWNlKQogICAgICAgICAgICByZXR1cm4gZm91bmRfc2VydmljZXMKICAgIGV4Y2VwdCBFeGNlcHRp
b246CiAgICAgICAgcmV0dXJuIFtdCgpkZWYgcHJvY2Vzc19pbWFwX2JhdGNoKGJhdGNoOiBMaXN0
W3N0cl0sIHVzZXJfaWQ6IGludCwgY2hlY2tfaW5ib3g6IGJvb2wsIHNlcnZpY2VfbWFwcGluZzog
ZGljdCkgLT4gTm9uZToKICAgICIiIlByb2Nlc3MgYSBiYXRjaCBvZiBjcmVkZW50aWFscyBmb3Ig
SU1BUC1iYXNlZCBwcm92aWRlcnMuIiIiCiAgICBzZXNzaW9uID0gZ2V0X3VzZXJfc2Vzc2lvbih1
c2VyX2lkKQogICAgZm9yIGxpbmUgaW4gYmF0Y2g6CiAgICAgICAgaWYgc2Vzc2lvblsic2hvdWxk
X3N0b3AiXToKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgdHJ5OgogICAgICAgICAgICBlbWFp
bCwgcGFzc3dvcmQgPSBsaW5lLnNwbGl0KCI6IiwgMSkKICAgICAgICAgICAgd2l0aCB1c2VyX3Nl
c3Npb25zX2xvY2s6CiAgICAgICAgICAgICAgICBzZXNzaW9uWyJ0b3RhbF9jaGVja2VkIl0gKz0g
MQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIHZhbGlkYXRlX2ltYXAoZW1haWwsIHBh
c3N3b3JkKToKICAgICAgICAgICAgICAgIHdpdGggdXNlcl9zZXNzaW9uc19sb2NrOgogICAgICAg
ICAgICAgICAgICAgIHNlc3Npb25bImdvb2RfY291bnQiXSArPSAxCiAgICAgICAgICAgICAgICBz
YXZlX3ZhbGlkX2FjY291bnQodXNlcl9pZCwgZW1haWwsIHBhc3N3b3JkKQogICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICBpZiBjaGVja19pbmJveDoKICAgICAgICAgICAgICAgICAgICBz
ZXJ2aWNlcyA9IGNoZWNrX2ltYXBfaW5ib3goZW1haWwsIHBhc3N3b3JkLCBzZXJ2aWNlX21hcHBp
bmcpCiAgICAgICAgICAgICAgICAgICAgaWYgc2VydmljZXM6CiAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciBzZXJ2aWNlIGluIHNlcnZpY2VzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2F2ZV9yZXN1bHRfZm9yX3VzZXIodXNlcl9pZCwgc2VydmljZSwgZW1haWwsIHBhc3N3b3JkKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvblsic2VydmljZV9oaXRzIl0uc2V0ZGVm
YXVsdChzZXJ2aWNlLmxvd2VyKCksIFtdKS5hcHBlbmQoZW1haWwpCiAgICAgICAgICAgIGVsc2U6
CiAgICAgICAgICAgICAgICB3aXRoIHVzZXJfc2Vzc2lvbnNfbG9jazoKICAgICAgICAgICAgICAg
ICAgICBzZXNzaW9uWyJiYWRfY291bnQiXSArPSAxCiAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICBwcmludChmIkVycm9yIHByb2Nl
c3NpbmcgSU1BUCBsaW5lOiB7ZX0iKQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICAgICAgICAg
ICAgICAgICAgICAgRklMRSBQUk9DRVNTSU5HIExPR0lDCiMgPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
ZGVmIHByb2Nlc3NfZmlsZV9jb250ZW50KAogICAgZmlsZV9jb250ZW50OiBzdHIsIAogICAgdXNl
cl9pZDogaW50LCAKICAgIGFjY291bnRfdHlwZTogc3RyLCAKICAgIGNoZWNrX2luYm94OiBib29s
LAogICAgc2VydmljZV9tYXBwaW5nOiBkaWN0CikgLT4gTm9uZToKICAgICIiIlByb2Nlc3MgZmls
ZSBjb250ZW50IGJhc2VkIG9uIGFjY291bnQgdHlwZSBjbGFzc2lmaWNhdGlvbi4iIiIKICAgIGxp
bmVzID0gZmlsZV9jb250ZW50LnNwbGl0bGluZXMoKQogICAgdmFsaWRfbGluZXMgPSBbbGluZS5z
dHJpcCgpIGZvciBsaW5lIGluIGxpbmVzIGlmICI6IiBpbiBsaW5lXQogICAgCiAgICAjIENsYXNz
aWZ5IGxpbmVzIGJ5IGRvbWFpbiB0eXBlCiAgICBjbGFzc2lmaWVkX2xpbmVzID0gZGVmYXVsdGRp
Y3QobGlzdCkKICAgIGZvciBsaW5lIGluIHZhbGlkX2xpbmVzOgogICAgICAgIHRyeToKICAgICAg
ICAgICAgZW1haWwgPSBsaW5lLnNwbGl0KCI6IiwgMSlbMF0KICAgICAgICAgICAgZG9tYWluX3R5
cGUgPSBjbGFzc2lmeV9kb21haW4oZW1haWwpCiAgICAgICAgICAgIGNsYXNzaWZpZWRfbGluZXNb
ZG9tYWluX3R5cGVdLmFwcGVuZChsaW5lKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgY29u
dGludWUKICAgIAogICAgIyBNaWNyb3NvZnQgcHJvY2Vzc2luZwogICAgaWYgYWNjb3VudF90eXBl
IGluICgiYXV0byIsICJtaWNyb3NvZnQiKToKICAgICAgICBtaWNyb3NvZnRfbGluZXMgPSBjbGFz
c2lmaWVkX2xpbmVzLmdldCgibWljcm9zb2Z0IiwgW10pICsgKAogICAgICAgICAgICBjbGFzc2lm
aWVkX2xpbmVzLmdldCgidW5rbm93biIsIFtdKSBpZiBhY2NvdW50X3R5cGUgPT0gImF1dG8iIGVs
c2UgW10KICAgICAgICApCiAgICAgICAgaWYgbWljcm9zb2Z0X2xpbmVzOgogICAgICAgICAgICBi
YXRjaGVzID0gW21pY3Jvc29mdF9saW5lc1tpOmkrNTBdIGZvciBpIGluIHJhbmdlKDAsIGxlbiht
aWNyb3NvZnRfbGluZXMpLCA1MCldCiAgICAgICAgICAgIHdpdGggY29uY3VycmVudC5mdXR1cmVz
LlRocmVhZFBvb2xFeGVjdXRvcihtYXhfd29ya2Vycz0xMCkgYXMgZXhlY3V0b3I6CiAgICAgICAg
ICAgICAgICBmdXR1cmVzID0gW2V4ZWN1dG9yLnN1Ym1pdChwcm9jZXNzX21pY3Jvc29mdF9iYXRj
aCwgYmF0Y2gsIHVzZXJfaWQsIHNlcnZpY2VfbWFwcGluZykgCiAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciBiYXRjaCBpbiBiYXRjaGVzXQogICAgICAgICAgICAgICAgY29uY3VycmVudC5mdXR1
cmVzLndhaXQoZnV0dXJlcykKICAgIAogICAgIyBHb29nbGUgcHJvY2Vzc2luZwogICAgaWYgYWNj
b3VudF90eXBlIGluICgiYXV0byIsICJnb29nbGUiKToKICAgICAgICBnb29nbGVfbGluZXMgPSBj
bGFzc2lmaWVkX2xpbmVzLmdldCgiZ29vZ2xlIiwgW10pICsgKAogICAgICAgICAgICBjbGFzc2lm
aWVkX2xpbmVzLmdldCgidW5rbm93biIsIFtdKSBpZiBhY2NvdW50X3R5cGUgPT0gImF1dG8iIGVs
c2UgW10KICAgICAgICApCiAgICAgICAgaWYgZ29vZ2xlX2xpbmVzOgogICAgICAgICAgICBiYXRj
aGVzID0gW2dvb2dsZV9saW5lc1tpOmkrMjBdIGZvciBpIGluIHJhbmdlKDAsIGxlbihnb29nbGVf
bGluZXMpLCAyMCldCiAgICAgICAgICAgIHdpdGggY29uY3VycmVudC5mdXR1cmVzLlRocmVhZFBv
b2xFeGVjdXRvcihtYXhfd29ya2Vycz01KSBhcyBleGVjdXRvcjoKICAgICAgICAgICAgICAgIGZ1
dHVyZXMgPSBbZXhlY3V0b3Iuc3VibWl0KHByb2Nlc3NfZ21haWxfYmF0Y2gsIGJhdGNoLCB1c2Vy
X2lkLCBjaGVja19pbmJveCwgc2VydmljZV9tYXBwaW5nKSAKICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIGJhdGNoIGluIGJhdGNoZXNdCiAgICAgICAgICAgICAgICBjb25jdXJyZW50LmZ1dHVy
ZXMud2FpdChmdXR1cmVzKQogICAgCiAgICAjIFByb2Nlc3Mgb3RoZXIgcHJvdmlkZXJzIGluIGF1
dG8gbW9kZQogICAgaWYgYWNjb3VudF90eXBlID09ICJhdXRvIjoKICAgICAgICAjIElNQVAtYmFz
ZWQgcHJvdmlkZXJzCiAgICAgICAgaW1hcF90eXBlcyA9IFsneWFob28nLCAnYXBwbGUnLCAnYW9s
JywgJ2dteCcsICdtYWlscnUnLCAneWFuZGV4JywgCiAgICAgICAgICAgICAgICAgICAgICd6b2hv
JywgJ2Zhc3RtYWlsJywgJ2dlcm1hbicsICdmcmVuY2gnLCAncnVzc2lhbicsIAogICAgICAgICAg
ICAgICAgICAgICAnY2hpbmVzZScsICdqYXBhbmVzZSddCiAgICAgICAgCiAgICAgICAgZm9yIHBy
b3ZpZGVyIGluIGltYXBfdHlwZXM6CiAgICAgICAgICAgIGxpbmVzID0gY2xhc3NpZmllZF9saW5l
cy5nZXQocHJvdmlkZXIsIFtdKQogICAgICAgICAgICBpZiBsaW5lczoKICAgICAgICAgICAgICAg
IGJhdGNoZXMgPSBbbGluZXNbaTppKzIwXSBmb3IgaSBpbiByYW5nZSgwLCBsZW4obGluZXMpLCAy
MCldCiAgICAgICAgICAgICAgICB3aXRoIGNvbmN1cnJlbnQuZnV0dXJlcy5UaHJlYWRQb29sRXhl
Y3V0b3IobWF4X3dvcmtlcnM9MykgYXMgZXhlY3V0b3I6CiAgICAgICAgICAgICAgICAgICAgZnV0
dXJlcyA9IFtleGVjdXRvci5zdWJtaXQocHJvY2Vzc19pbWFwX2JhdGNoLCBiYXRjaCwgdXNlcl9p
ZCwgY2hlY2tfaW5ib3gsIHNlcnZpY2VfbWFwcGluZykgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgYmF0Y2ggaW4gYmF0Y2hlc10KICAgICAgICAgICAgICAgICAgICBjb25jdXJyZW50
LmZ1dHVyZXMud2FpdChmdXR1cmVzKQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICAgICAgICAg
ICAgICAgICAgICAgU1BPTlNPUiBNT0RFIFBST0NFU1NJTkcKIyA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpkZWYgcHJvY2Vzc19zcG9uc29yX2ZpbGVfY29udGVudCgKICAgIGZpbGVfY29udGVudDogc3Ry
LCAKICAgIHVzZXJfaWQ6IGludCwgCiAgICBhY2NvdW50X3R5cGU6IHN0ciwgCiAgICBjaGVja19p
bmJveDogYm9vbAopIC0+IE5vbmU6CiAgICAiIiJQcm9jZXNzIGZpbGUgY29udGVudCBpbiBzcG9u
c29yIG1vZGUgd2l0aCBsaW1pdGVkIGNhcGFiaWxpdGllcy4iIiIKICAgIGxpbmVzID0gZmlsZV9j
b250ZW50LnNwbGl0bGluZXMoKQogICAgdmFsaWRfbGluZXMgPSBbbGluZS5zdHJpcCgpIGZvciBs
aW5lIGluIGxpbmVzIGlmICI6IiBpbiBsaW5lXQogICAgCiAgICAjIENsYXNzaWZ5IGxpbmVzIGJ5
IGRvbWFpbiB0eXBlCiAgICBjbGFzc2lmaWVkX2xpbmVzID0gZGVmYXVsdGRpY3QobGlzdCkKICAg
IGZvciBsaW5lIGluIHZhbGlkX2xpbmVzOgogICAgICAgIHRyeToKICAgICAgICAgICAgZW1haWwg
PSBsaW5lLnNwbGl0KCI6IiwgMSlbMF0KICAgICAgICAgICAgZG9tYWluX3R5cGUgPSBjbGFzc2lm
eV9kb21haW4oZW1haWwpCiAgICAgICAgICAgIGNsYXNzaWZpZWRfbGluZXNbZG9tYWluX3R5cGVd
LmFwcGVuZChsaW5lKQogICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgY29udGludWUKICAgIAog
ICAgIyBNaWNyb3NvZnQgcHJvY2Vzc2luZwogICAgaWYgYWNjb3VudF90eXBlIGluICgiYXV0byIs
ICJtaWNyb3NvZnQiKToKICAgICAgICBtaWNyb3NvZnRfbGluZXMgPSBjbGFzc2lmaWVkX2xpbmVz
LmdldCgibWljcm9zb2Z0IiwgW10pICsgKAogICAgICAgICAgICBjbGFzc2lmaWVkX2xpbmVzLmdl
dCgidW5rbm93biIsIFtdKSBpZiBhY2NvdW50X3R5cGUgPT0gImF1dG8iIGVsc2UgW10KICAgICAg
ICApCiAgICAgICAgaWYgbWljcm9zb2Z0X2xpbmVzOgogICAgICAgICAgICBiYXRjaGVzID0gW21p
Y3Jvc29mdF9saW5lc1tpOmkrNTBdIGZvciBpIGluIHJhbmdlKDAsIGxlbihtaWNyb3NvZnRfbGlu
ZXMpLCA1MCldCiAgICAgICAgICAgIHdpdGggY29uY3VycmVudC5mdXR1cmVzLlRocmVhZFBvb2xF
eGVjdXRvcihtYXhfd29ya2Vycz01KSBhcyBleGVjdXRvcjoKICAgICAgICAgICAgICAgIGZ1dHVy
ZXMgPSBbZXhlY3V0b3Iuc3VibWl0KHByb2Nlc3NfbWljcm9zb2Z0X2JhdGNoLCBiYXRjaCwgdXNl
cl9pZCwgU1BPTlNPUl9TRVJWSUNFX01BUFBJTkcpIAogICAgICAgICAgICAgICAgICAgICAgICBm
b3IgYmF0Y2ggaW4gYmF0Y2hlc10KICAgICAgICAgICAgICAgIGNvbmN1cnJlbnQuZnV0dXJlcy53
YWl0KGZ1dHVyZXMpCiAgICAKICAgICMgR29vZ2xlIHByb2Nlc3NpbmcKICAgIGlmIGFjY291bnRf
dHlwZSBpbiAoImF1dG8iLCAiZ29vZ2xlIik6CiAgICAgICAgZ29vZ2xlX2xpbmVzID0gY2xhc3Np
ZmllZF9saW5lcy5nZXQoImdvb2dsZSIsIFtdKSArICgKICAgICAgICAgICAgY2xhc3NpZmllZF9s
aW5lcy5nZXQoInVua25vd24iLCBbXSkgaWYgYWNjb3VudF90eXBlID09ICJhdXRvIiBlbHNlIFtd
CiAgICAgICAgKQogICAgICAgIGlmIGdvb2dsZV9saW5lczoKICAgICAgICAgICAgYmF0Y2hlcyA9
IFtnb29nbGVfbGluZXNbaTppKzIwXSBmb3IgaSBpbiByYW5nZSgwLCBsZW4oZ29vZ2xlX2xpbmVz
KSwgMjApXQogICAgICAgICAgICB3aXRoIGNvbmN1cnJlbnQuZnV0dXJlcy5UaHJlYWRQb29sRXhl
Y3V0b3IobWF4X3dvcmtlcnM9MykgYXMgZXhlY3V0b3I6CiAgICAgICAgICAgICAgICBmdXR1cmVz
ID0gW2V4ZWN1dG9yLnN1Ym1pdChwcm9jZXNzX2dtYWlsX2JhdGNoLCBiYXRjaCwgdXNlcl9pZCwg
Y2hlY2tfaW5ib3gsIFNQT05TT1JfU0VSVklDRV9NQVBQSU5HKSAKICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yIGJhdGNoIGluIGJhdGNoZXNdCiAgICAgICAgICAgICAgICBjb25jdXJyZW50LmZ1
dHVyZXMud2FpdChmdXR1cmVzKQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICAgICAgICAgICAg
ICAgICAgICAgRElTQ09SRCBCT1QgU0VUVVAKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQppbnRlbnRz
ID0gZGlzY29yZC5JbnRlbnRzLmRlZmF1bHQoKQppbnRlbnRzLm1lc3NhZ2VfY29udGVudCA9IFRy
dWUKYm90ID0gY29tbWFuZHMuQm90KGNvbW1hbmRfcHJlZml4PSJcXCIsIGludGVudHM9aW50ZW50
cykKCkBib3QuZXZlbnQKYXN5bmMgZGVmIG9uX3JlYWR5KCkgLT4gTm9uZToKICAgICIiIkJvdCBz
dGFydHVwIGhhbmRsZXIgLSBzeW5jcyBjb21tYW5kcyBhbmQgcHJpbnRzIHN0YXR1cy4iIiIKICAg
IHRyeToKICAgICAgICBzeW5jZWQgPSBhd2FpdCBib3QudHJlZS5zeW5jKCkKICAgICAgICBwcmlu
dChmIlN5bmNlZCB7bGVuKHN5bmNlZCl9IGNvbW1hbmRzIikKICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZToKICAgICAgICBwcmludChlKQogICAgcHJpbnQoZiJCb3QgbG9nZ2VkIGluIGFzIHtib3Qu
dXNlcn0iKQoKYXN5bmMgZGVmIHVwZGF0ZV9zdGF0dXModXNlcl9pZDogaW50LCBtZXNzYWdlOiBk
aXNjb3JkLk1lc3NhZ2UsIGRvbmVfZnV0dXJlOiBhc3luY2lvLkZ1dHVyZSkgLT4gTm9uZToKICAg
ICIiIlBlcmlvZGljYWxseSB1cGRhdGUgc3RhdGlzdGljcyBlbWJlZCBkdXJpbmcgY2hlY2tpbmcg
cHJvY2Vzcy4iIiIKICAgIHByZXZpb3VzX2VtYmVkID0gTm9uZQogICAgd2hpbGUgbm90IGRvbmVf
ZnV0dXJlLmRvbmUoKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGN1cnJlbnRfZW1iZWQgPSBi
dWlsZF9zdGF0c19lbWJlZCh1c2VyX2lkKQogICAgICAgICAgICBpZiBzdHIoY3VycmVudF9lbWJl
ZC50b19kaWN0KCkpICE9IHN0cihwcmV2aW91c19lbWJlZCk6CiAgICAgICAgICAgICAgICBhd2Fp
dCBtZXNzYWdlLmVkaXQoZW1iZWQ9Y3VycmVudF9lbWJlZCkKICAgICAgICAgICAgICAgIHByZXZp
b3VzX2VtYmVkID0gY3VycmVudF9lbWJlZAogICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK
ICAgICAgICAgICAgcHJpbnQoZiJFcnJvciB1cGRhdGluZyBzdGF0dXMgZW1iZWQ6IHtlfSIpCiAg
ICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgxKQogICAgdHJ5OgogICAgICAgIGF3YWl0IG1lc3Nh
Z2UuZWRpdChlbWJlZD1idWlsZF9zdGF0c19lbWJlZCh1c2VyX2lkKSkKICAgIGV4Y2VwdCBFeGNl
cHRpb24gYXMgZToKICAgICAgICBwcmludChmIkVycm9yIG9uIGZpbmFsIGVtYmVkIHVwZGF0ZTog
e2V9IikKCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyAgICAgICAgICAgICAgICAgICAgIENPTU1B
TkQ6IFVOSUZJRUQgQ0hFQ0sgKFBSRU1JVU0pCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQGJvdC50
cmVlLmNvbW1hbmQobmFtZT0iY2hlY2siLCBkZXNjcmlwdGlvbj0iUHJlbWl1bSBhY2NvdW50IGNo
ZWNraW5nIHdpdGggZnVsbCBmZWF0dXJlcyIpCkBhcHBfY29tbWFuZHMuZGVzY3JpYmUoCiAgICBm
aWxlPSJUZXh0IGZpbGUgd2l0aCBlbWFpbDpwYXNzd29yZCBwYWlycyIsCiAgICBjaGVja19pbmJv
eD0iQ2hlY2sgaW5ib3ggZm9yIHNlcnZpY2UgZW1haWxzIChyZWNvbW1lbmRlZCkiLAogICAgZm9y
Y2VfdHlwZT0iRm9yY2UgYWNjb3VudCB0eXBlIChhdXRvLWRldGVjdHMgYnkgZGVmYXVsdCkiCikK
QGFwcF9jb21tYW5kcy5jaG9pY2VzKAogICAgZm9yY2VfdHlwZT1bCiAgICAgICAgYXBwX2NvbW1h
bmRzLkNob2ljZShuYW1lPSJBdXRvIERldGVjdCIsIHZhbHVlPSJhdXRvIiksCiAgICAgICAgYXBw
X2NvbW1hbmRzLkNob2ljZShuYW1lPSJNaWNyb3NvZnQgT25seSIsIHZhbHVlPSJtaWNyb3NvZnQi
KSwKICAgICAgICBhcHBfY29tbWFuZHMuQ2hvaWNlKG5hbWU9Ikdvb2dsZSBPbmx5IiwgdmFsdWU9
Imdvb2dsZSIpCiAgICBdCikKQGNoZWNrX2FsbG93ZWRfd3JhcHBlcgpAY2hlY2tlcl9yZXN0cmlj
dGlvbgphc3luYyBkZWYgdW5pZmllZF9jaGVja19jb21tYW5kKAogICAgaW50ZXJhY3Rpb246IGRp
c2NvcmQuSW50ZXJhY3Rpb24sIAogICAgZmlsZTogZGlzY29yZC5BdHRhY2htZW50LAogICAgY2hl
Y2tfaW5ib3g6IGJvb2wgPSBUcnVlLAogICAgZm9yY2VfdHlwZTogYXBwX2NvbW1hbmRzLkNob2lj
ZVtzdHJdID0gTm9uZQopIC0+IE5vbmU6CiAgICAiIiJQcmVtaXVtIGFjY291bnQgY2hlY2tpbmcg
Y29tbWFuZCB3aXRoIGZ1bGwgZmVhdHVyZXMiIiIKICAgIHVzZXJfaWQgPSBpbnRlcmFjdGlvbi51
c2VyLmlkCiAgICByZXNldF91c2VyX3Nlc3Npb24odXNlcl9pZCkKICAgIHByZXBhcmVfdXNlcl9z
ZXNzaW9uX2ZvbGRlcih1c2VyX2lkKQogICAgYWNjb3VudF90eXBlID0gZm9yY2VfdHlwZS52YWx1
ZSBpZiBmb3JjZV90eXBlIGVsc2UgImF1dG8iCgogICAgIyBIYW5kbGUgY29vbGRvd24KICAgIGlm
IHVzZXJfaWQgbm90IGluIE9XTkVSUzoKICAgICAgICBjdXJyZW50X3RpbWUgPSB0aW1lLnRpbWUo
KQogICAgICAgIGxhc3RfdXNlZCA9IHVzZXJfbGFzdF91c2VkLmdldCh1c2VyX2lkLCAwKQogICAg
ICAgIGlmIGN1cnJlbnRfdGltZSAtIGxhc3RfdXNlZCA8IENPT0xET1dOX1NFQ09ORFM6CiAgICAg
ICAgICAgIHJlbWFpbmluZyA9IGludChDT09MRE9XTl9TRUNPTkRTIC0gKGN1cnJlbnRfdGltZSAt
IGxhc3RfdXNlZCkpCiAgICAgICAgICAgIGF3YWl0IGludGVyYWN0aW9uLnJlc3BvbnNlLnNlbmRf
bWVzc2FnZSgKICAgICAgICAgICAgICAgIGYi4o+zIFBsZWFzZSB3YWl0IHtyZW1haW5pbmd9IHNl
Y29uZHMgYmVmb3JlIHVzaW5nIHRoaXMgY29tbWFuZCBhZ2FpbiIsCiAgICAgICAgICAgICAgICBl
cGhlbWVyYWw9VHJ1ZQogICAgICAgICAgICApCiAgICAgICAgICAgIHJldHVybgogICAgICAgIHVz
ZXJfbGFzdF91c2VkW3VzZXJfaWRdID0gY3VycmVudF90aW1lCgogICAgYXdhaXQgaW50ZXJhY3Rp
b24ucmVzcG9uc2UuZGVmZXIoKQogICAgCiAgICB0cnk6CiAgICAgICAgZmlsZV9ieXRlcyA9IGF3
YWl0IGZpbGUucmVhZCgpCiAgICAgICAgZmlsZV9jb250ZW50ID0gZmlsZV9ieXRlcy5kZWNvZGUo
InV0Zi04IiwgZXJyb3JzPSJyZXBsYWNlIikKICAgICAgICB0b3RhbF9saW5lcyA9IGxlbihbbGlu
ZSBmb3IgbGluZSBpbiBmaWxlX2NvbnRlbnQuc3BsaXRsaW5lcygpIGlmICI6IiBpbiBsaW5lXSkK
ICAgICAgICAKICAgICAgICBzZXNzaW9uID0gZ2V0X3VzZXJfc2Vzc2lvbih1c2VyX2lkKQogICAg
ICAgIHNlc3Npb25bInRvdGFsX2xpbmVzIl0gPSB0b3RhbF9saW5lcwogICAgICAgIHNlc3Npb25b
ImNoZWNrX2luYm94Il0gPSBjaGVja19pbmJveAogICAgICAgIHNlc3Npb25bImFjY291bnRfdHlw
ZSJdID0gYWNjb3VudF90eXBlCiAgICAgICAgCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAg
ICAgICAgYXdhaXQgaW50ZXJhY3Rpb24uZm9sbG93dXAuc2VuZChmIkVycm9yIHJlYWRpbmcgZmls
ZToge3N0cihlKX0iLCBlcGhlbWVyYWw9VHJ1ZSkKICAgICAgICByZXR1cm4KCiAgICBzdGF0dXNf
bWVzc2FnZSA9IGF3YWl0IGludGVyYWN0aW9uLmZvbGxvd3VwLnNlbmQoZW1iZWQ9YnVpbGRfc3Rh
dHNfZW1iZWQodXNlcl9pZCkpCiAgICBsb29wID0gYXN5bmNpby5nZXRfcnVubmluZ19sb29wKCkK
ICAgIGRvbmVfZnV0dXJlID0gbG9vcC5jcmVhdGVfZnV0dXJlKCkKCiAgICAjIFN0YXJ0IHN0YXR1
cyB1cGRhdGUgdGFzawogICAgdXBkYXRlX3Rhc2sgPSBhc3luY2lvLmNyZWF0ZV90YXNrKHVwZGF0
ZV9zdGF0dXModXNlcl9pZCwgc3RhdHVzX21lc3NhZ2UsIGRvbmVfZnV0dXJlKSkKICAgIAogICAg
dHJ5OgogICAgICAgICMgUHJvY2VzcyBiYXNlZCBvbiBhY2NvdW50IHR5cGUKICAgICAgICBhd2Fp
dCBsb29wLnJ1bl9pbl9leGVjdXRvcigKICAgICAgICAgICAgTm9uZSwgCiAgICAgICAgICAgIHBy
b2Nlc3NfZmlsZV9jb250ZW50LCAKICAgICAgICAgICAgZmlsZV9jb250ZW50LCAKICAgICAgICAg
ICAgdXNlcl9pZCwgCiAgICAgICAgICAgIGFjY291bnRfdHlwZSwKICAgICAgICAgICAgY2hlY2tf
aW5ib3gsCiAgICAgICAgICAgIEFMTF9TRVJWSUNFX01BUFBJTkcKICAgICAgICApCiAgICBleGNl
cHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgYXdhaXQgaW50ZXJhY3Rpb24uZm9sbG93dXAuc2Vu
ZChmIkNoZWNrZXIgZXJyb3I6IHtzdHIoZSl9IiwgZXBoZW1lcmFsPVRydWUpCiAgICBmaW5hbGx5
OgogICAgICAgIGRvbmVfZnV0dXJlLnNldF9yZXN1bHQoVHJ1ZSkKICAgICAgICBhd2FpdCB1cGRh
dGVfdGFzawogICAgICAgIAogICAgICAgICMgU2VuZCByZXN1bHRzIGFuZCBjbGVhbiB1cAogICAg
ICAgIGF3YWl0IGRtX3Jlc3VsdHMoaW50ZXJhY3Rpb24udXNlcikKICAgICAgICBmaW5hbF9tc2cg
PSAi4pyFIENoZWNrIGNvbXBsZXRlISBSZXN1bHRzIHNlbnQgdG8geW91ciBETXMuIgogICAgICAg
IGF3YWl0IGludGVyYWN0aW9uLmZvbGxvd3VwLnNlbmQoZmluYWxfbXNnKQogICAgICAgIGNsZWFy
X3VzZXJfcmVzdWx0cyh1c2VyX2lkKQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICAgICAgICAg
ICAgICAgICAgICAgQ09NTUFORDogU1BPTlNPUiBDSEVDSyAoTElNSVRFRCkKIyA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpAYm90LnRyZWUuY29tbWFuZChuYW1lPSJzcG9uc29yLWNoZWNrIiwgZGVzY3Jp
cHRpb249IkxpbWl0ZWQgYWNjb3VudCBjaGVja2luZyBmb3Igbm9uLXByZW1pdW0gdXNlcnMiKQpA
YXBwX2NvbW1hbmRzLmRlc2NyaWJlKAogICAgZmlsZT0iVGV4dCBmaWxlIHdpdGggZW1haWw6cGFz
c3dvcmQgcGFpcnMiLAogICAgY2hlY2tfaW5ib3g9IkNoZWNrIGluYm94IGZvciBzZXJ2aWNlIGVt
YWlscyIKKQpAc3BvbnNvcl9yZXN0cmljdGlvbgpAY2hlY2tfYWxsb3dlZF93cmFwcGVyCmFzeW5j
IGRlZiBzcG9uc29yX2NoZWNrX2NvbW1hbmQoCiAgICBpbnRlcmFjdGlvbjogZGlzY29yZC5JbnRl
cmFjdGlvbiwgCiAgICBmaWxlOiBkaXNjb3JkLkF0dGFjaG1lbnQsCiAgICBjaGVja19pbmJveDog
Ym9vbCA9IFRydWUKKSAtPiBOb25lOgogICAgIiIiTGltaXRlZCBhY2NvdW50IGNoZWNraW5nIGZv
ciBub24tcHJlbWl1bSB1c2VycyIiIgogICAgdXNlcl9pZCA9IGludGVyYWN0aW9uLnVzZXIuaWQK
ICAgIHJlc2V0X3VzZXJfc2Vzc2lvbih1c2VyX2lkKQogICAgcHJlcGFyZV91c2VyX3Nlc3Npb25f
Zm9sZGVyKHVzZXJfaWQpCiAgICAKICAgICMgTWFyayBzZXNzaW9uIGFzIHNwb25zb3IgbW9kZQog
ICAgc2Vzc2lvbiA9IGdldF91c2VyX3Nlc3Npb24odXNlcl9pZCkKICAgIHNlc3Npb25bImlzX3Nw
b25zb3JfbW9kZSJdID0gVHJ1ZQoKICAgICMgSGFuZGxlIGNvb2xkb3duCiAgICBjdXJyZW50X3Rp
bWUgPSB0aW1lLnRpbWUoKQogICAgbGFzdF91c2VkID0gdXNlcl9sYXN0X3VzZWQuZ2V0KHVzZXJf
aWQsIDApCiAgICBpZiBjdXJyZW50X3RpbWUgLSBsYXN0X3VzZWQgPCBDT09MRE9XTl9TRUNPTkRT
ICogMjogICMgTG9uZ2VyIGNvb2xkb3duIGZvciBzcG9uc29yCiAgICAgICAgcmVtYWluaW5nID0g
aW50KENPT0xET1dOX1NFQ09ORFMgKiAyIC0gKGN1cnJlbnRfdGltZSAtIGxhc3RfdXNlZCkpCiAg
ICAgICAgYXdhaXQgaW50ZXJhY3Rpb24ucmVzcG9uc2Uuc2VuZF9tZXNzYWdlKAogICAgICAgICAg
ICBmIuKPsyBQbGVhc2Ugd2FpdCB7cmVtYWluaW5nfSBzZWNvbmRzIGJlZm9yZSB1c2luZyB0aGlz
IGNvbW1hbmQgYWdhaW4iLAogICAgICAgICAgICBlcGhlbWVyYWw9VHJ1ZQogICAgICAgICkKICAg
ICAgICByZXR1cm4KICAgIHVzZXJfbGFzdF91c2VkW3VzZXJfaWRdID0gY3VycmVudF90aW1lCgog
ICAgYXdhaXQgaW50ZXJhY3Rpb24ucmVzcG9uc2UuZGVmZXIoKQogICAgCiAgICB0cnk6CiAgICAg
ICAgZmlsZV9ieXRlcyA9IGF3YWl0IGZpbGUucmVhZCgpCiAgICAgICAgZmlsZV9jb250ZW50ID0g
ZmlsZV9ieXRlcy5kZWNvZGUoInV0Zi04IiwgZXJyb3JzPSJyZXBsYWNlIikKICAgICAgICB0b3Rh
bF9saW5lcyA9IGxlbihbbGluZSBmb3IgbGluZSBpbiBmaWxlX2NvbnRlbnQuc3BsaXRsaW5lcygp
IGlmICI6IiBpbiBsaW5lXSkKICAgICAgICAKICAgICAgICBzZXNzaW9uWyJ0b3RhbF9saW5lcyJd
ID0gdG90YWxfbGluZXMKICAgICAgICBzZXNzaW9uWyJjaGVja19pbmJveCJdID0gY2hlY2tfaW5i
b3gKICAgICAgICBzZXNzaW9uWyJhY2NvdW50X3R5cGUiXSA9ICJhdXRvIiAgIyBTcG9uc29yIG9u
bHkgc3VwcG9ydHMgYXV0bwogICAgICAgIAogICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAg
ICAgIGF3YWl0IGludGVyYWN0aW9uLmZvbGxvd3VwLnNlbmQoZiJFcnJvciByZWFkaW5nIGZpbGU6
IHtzdHIoZSl9IiwgZXBoZW1lcmFsPVRydWUpCiAgICAgICAgcmV0dXJuCgogICAgIyBTZW5kIGlu
Zm8gbWVzc2FnZSAoc2VwYXJhdGUgZnJvbSBzY2FubmluZyBzdGF0dXMpCiAgICBpbmZvX2VtYmVk
ID0gY3JlYXRlX2VtYmVkKAogICAgICAgIHRpdGxlPSJTcG9uc29yIENoZWNrZXIgSW5mbyIsCiAg
ICAgICAgZGVzY3JpcHRpb249KAogICAgICAgICAgICAi8J+UkiBZb3UncmUgdXNpbmcgdGhlIGxp
bWl0ZWQgc3BvbnNvciB2ZXJzaW9uXG4iCiAgICAgICAgICAgICJTb21lIGZlYXR1cmVzIGFyZSBy
ZXN0cmljdGVkLiBKb2luIG91ciBzZXJ2ZXIgZm9yIGZ1bGwgYWNjZXNzIVxuXG4iCiAgICAgICAg
ICAgICLinKggKipQcmVtaXVtIEZlYXR1cmVzOioqXG4iCiAgICAgICAgICAgICItIDIwMCsgc2Vy
dmljZSBkZXRlY3Rpb25zXG4iCiAgICAgICAgICAgICItIFByaW9yaXR5IHByb2Nlc3NpbmdcbiIK
ICAgICAgICAgICAgIi0gUmVhbC10aW1lIENQTSBzdGF0c1xuIgogICAgICAgICAgICAiLSBObyBj
b29sZG93bnNcbiIKICAgICAgICAgICAgZiJbSm9pbiBvdXIgc2VydmVyIGZvciBmdWxsIGFjY2Vz
c10oaHR0cHM6Ly9kaXNjb3JkLmdnLzdxd2ttUkd6UkMpIgogICAgICAgICksCiAgICAgICAgY29s
b3I9ZGlzY29yZC5Db2xvci5vcmFuZ2UoKQogICAgKQogICAgYXdhaXQgaW50ZXJhY3Rpb24uZm9s
bG93dXAuc2VuZChlbWJlZD1pbmZvX2VtYmVkLCBlcGhlbWVyYWw9VHJ1ZSkKCiAgICAjIENyZWF0
ZSBzcG9uc29yLXNwZWNpZmljIHN0YXRzIGVtYmVkIChmb3Igc2Nhbm5pbmcgcHJvZ3Jlc3MpCiAg
ICBzcG9uc29yX2VtYmVkID0gY3JlYXRlX2VtYmVkKAogICAgICAgIHRpdGxlPSJTcG9uc29yIENo
ZWNrZXIgU3RhdHMiLAogICAgICAgIGRlc2NyaXB0aW9uPSgKICAgICAgICAgICAgZiIqKkFjY291
bnRzOioqIHt0b3RhbF9saW5lc30gfCAqKkNoZWNrZWQ6KiogMFxuIgogICAgICAgICAgICAiKipW
YWxpZDoqKiAwIHwgKipJbnZhbGlkOioqIDBcbiIKICAgICAgICAgICAgIioqSGl0IFJhdGU6Kiog
MC4wMCUiCiAgICAgICAgKSwKICAgICAgICBjb2xvcj1kaXNjb3JkLkNvbG9yLm9yYW5nZSgpCiAg
ICApCiAgICAKICAgIHN0YXR1c19tZXNzYWdlID0gYXdhaXQgaW50ZXJhY3Rpb24uZm9sbG93dXAu
c2VuZChlbWJlZD1zcG9uc29yX2VtYmVkKQogICAgbG9vcCA9IGFzeW5jaW8uZ2V0X3J1bm5pbmdf
bG9vcCgpCiAgICBkb25lX2Z1dHVyZSA9IGxvb3AuY3JlYXRlX2Z1dHVyZSgpCgogICAgIyBTdGFy
dCBzdGF0dXMgdXBkYXRlIHRhc2sKICAgIHVwZGF0ZV90YXNrID0gYXN5bmNpby5jcmVhdGVfdGFz
ayh1cGRhdGVfc3RhdHVzKHVzZXJfaWQsIHN0YXR1c19tZXNzYWdlLCBkb25lX2Z1dHVyZSkpCiAg
ICAKICAgIHRyeToKICAgICAgICAjIFByb2Nlc3MgaW4gc3BvbnNvciBtb2RlCiAgICAgICAgYXdh
aXQgbG9vcC5ydW5faW5fZXhlY3V0b3IoCiAgICAgICAgICAgIE5vbmUsIAogICAgICAgICAgICBw
cm9jZXNzX3Nwb25zb3JfZmlsZV9jb250ZW50LCAKICAgICAgICAgICAgZmlsZV9jb250ZW50LCAK
ICAgICAgICAgICAgdXNlcl9pZCwgCiAgICAgICAgICAgICJhdXRvIiwKICAgICAgICAgICAgY2hl
Y2tfaW5ib3gKICAgICAgICApCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgYXdh
aXQgaW50ZXJhY3Rpb24uZm9sbG93dXAuc2VuZChmIkNoZWNrZXIgZXJyb3I6IHtzdHIoZSl9Iiwg
ZXBoZW1lcmFsPVRydWUpCiAgICBmaW5hbGx5OgogICAgICAgIGRvbmVfZnV0dXJlLnNldF9yZXN1
bHQoVHJ1ZSkKICAgICAgICBhd2FpdCB1cGRhdGVfdGFzawogICAgICAgIAogICAgICAgICMgU2Vu
ZCByZXN1bHRzIGFuZCBjbGVhbiB1cAogICAgICAgIGF3YWl0IGRtX3Jlc3VsdHMoaW50ZXJhY3Rp
b24udXNlcikKICAgICAgICBmaW5hbF9tc2cgPSAi4pyFIENoZWNrIGNvbXBsZXRlISBSZXN1bHRz
IHNlbnQgdG8geW91ciBETXMuIgogICAgICAgIGF3YWl0IGludGVyYWN0aW9uLmZvbGxvd3VwLnNl
bmQoZmluYWxfbXNnKQogICAgICAgIGNsZWFyX3VzZXJfcmVzdWx0cyh1c2VyX2lkKQoKIyA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQojICAgICAgICAgICAgICAgICAgICAgQ09NTUFORDogU1RPUAojID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CkBib3QudHJlZS5jb21tYW5kKG5hbWU9InN0b3AiLCBkZXNjcmlw
dGlvbj0iU3RvcCB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGFzayIpCkBjaGVja19hbGxvd2VkX3dy
YXBwZXIKYXN5bmMgZGVmIHN0b3BfY29tbWFuZChpbnRlcmFjdGlvbjogZGlzY29yZC5JbnRlcmFj
dGlvbikgLT4gTm9uZToKICAgIHVzZXJfaWQgPSBpbnRlcmFjdGlvbi51c2VyLmlkCiAgICBzZXNz
aW9uID0gZ2V0X3VzZXJfc2Vzc2lvbih1c2VyX2lkKQoKICAgIGlmIHNlc3Npb25bInNob3VsZF9z
dG9wIl06CiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBub3QgaW50ZXJhY3Rpb24ucmVzcG9u
c2UuaXNfZG9uZSgpOgogICAgICAgICAgICAgICAgYXdhaXQgaW50ZXJhY3Rpb24ucmVzcG9uc2Uu
c2VuZF9tZXNzYWdlKAogICAgICAgICAgICAgICAgICAgICJUaGUgcHJvY2VzcyBpcyBhbHJlYWR5
IHN0b3BwaW5nLiBQbGVhc2Ugd2FpdC4iLCAKICAgICAgICAgICAgICAgICAgICBlcGhlbWVyYWw9
VHJ1ZQogICAgICAgICAgICAgICAgKQogICAgICAgIGV4Y2VwdCBkaXNjb3JkLmVycm9ycy5JbnRl
cmFjdGlvblJlc3BvbmRlZDoKICAgICAgICAgICAgcGFzcwogICAgICAgIHJldHVybgoKICAgIHNl
c3Npb25bInNob3VsZF9zdG9wIl0gPSBUcnVlCgogICAgdHJ5OgogICAgICAgIGlmIG5vdCBpbnRl
cmFjdGlvbi5yZXNwb25zZS5pc19kb25lKCk6CiAgICAgICAgICAgIGVtYmVkID0gY3JlYXRlX2Vt
YmVkKAogICAgICAgICAgICAgICAgdGl0bGU9IlN0b3BwaW5nIFByb2Nlc3MiLAogICAgICAgICAg
ICAgICAgZGVzY3JpcHRpb249IlN0b3AgY29tbWFuZCByZWNlaXZlZC4gVGhlIHByb2Nlc3Mgd2ls
bCBoYWx0IHNob3J0bHkuIgogICAgICAgICAgICApCiAgICAgICAgICAgIGF3YWl0IGludGVyYWN0
aW9uLnJlc3BvbnNlLnNlbmRfbWVzc2FnZShlbWJlZD1lbWJlZCwgZXBoZW1lcmFsPVRydWUpCiAg
ICBleGNlcHQgZGlzY29yZC5lcnJvcnMuSW50ZXJhY3Rpb25SZXNwb25kZWQ6CiAgICAgICAgcGFz
cwoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQojICAgICAgICAgICAgICAgICAgICAgQ09NTUFORDog
VFJJQUwKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAYm90LnRyZWUuY29tbWFuZChuYW1lPSJ0cmlh
bCIsIGRlc2NyaXB0aW9uPSJHZXQgMjQrIGhvdXJzIGZyZWUgYWNjZXNzIHRvIGNoZWNrZXIiKQph
c3luYyBkZWYgdHJpYWwoaW50ZXJhY3Rpb246IGRpc2NvcmQuSW50ZXJhY3Rpb24pIC0+IE5vbmU6
CiAgICB1c2VyX2lkID0gaW50ZXJhY3Rpb24udXNlci5pZAogICAgZGIgPSBsb2FkX3RyaWFsX2Ri
KCkKICAgIGlmIHN0cih1c2VyX2lkKSBpbiBkYjoKICAgICAgICBlbWJlZCA9IGNyZWF0ZV9lbWJl
ZCgKICAgICAgICAgICAgdGl0bGU9IlRyaWFsIEFjY2VzcyBEZW5pZWQiLAogICAgICAgICAgICBk
ZXNjcmlwdGlvbj0iWW91IGhhdmUgYWxyZWFkeSB1c2VkIHlvdXIgdHJpYWwgYWNjZXNzLiBZb3Ug
Y2FuIG9ubHkgdXNlIHRoZSB0cmlhbCBvbmNlLiIKICAgICAgICApCiAgICAgICAgYXdhaXQgaW50
ZXJhY3Rpb24ucmVzcG9uc2Uuc2VuZF9tZXNzYWdlKGVtYmVkPWVtYmVkLCBlcGhlbWVyYWw9RmFs
c2UpCiAgICBlbHNlOgogICAgICAgIGdyYW50X3RyaWFsX2FjY2Vzcyh1c2VyX2lkLCAyNCkKICAg
ICAgICBlbWJlZCA9IGNyZWF0ZV9lbWJlZCgKICAgICAgICAgICAgdGl0bGU9IlRyaWFsIEFjY2Vz
cyBHcmFudGVkIiwKICAgICAgICAgICAgZGVzY3JpcHRpb249IlRyaWFsIGFjY2VzcyBncmFudGVk
IGZvciAyNCBob3Vycy4gRW5qb3kgeW91ciBmcmVlIGFjY2VzcyB0byB0aGUgY2hlY2tlciEiCiAg
ICAgICAgKQogICAgICAgIGF3YWl0IGludGVyYWN0aW9uLnJlc3BvbnNlLnNlbmRfbWVzc2FnZShl
bWJlZD1lbWJlZCwgZXBoZW1lcmFsPUZhbHNlKQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICAg
ICAgICAgICAgICAgICAgICAgQ09NTUFORDogV0hJVEVMSVNUIEdST1VQCiMgPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0Kd2hpdGVsaXN0X2dyb3VwID0gYXBwX2NvbW1hbmRzLkdyb3VwKG5hbWU9IndoaXRl
bGlzdCIsIGRlc2NyaXB0aW9uPSJNYW5hZ2Ugd2hpdGVsaXN0IHVzZXJzIikKCkB3aGl0ZWxpc3Rf
Z3JvdXAuY29tbWFuZChuYW1lPSJhZGQiLCBkZXNjcmlwdGlvbj0iQWRkIGEgdXNlciB0byB0aGUg
d2hpdGVsaXN0IChvd25lcnMgb25seSkiKQpAYXBwX2NvbW1hbmRzLmRlc2NyaWJlKAogICAgdXNl
cj0iVXNlciB0byB3aGl0ZWxpc3QiLAogICAgZHVyYXRpb249IkR1cmF0aW9uIG9mIHdoaXRlbGlz
dCAoZXg6IDFkLCAxdywgMW0sIDF5LCBsaWZldGltZSkiCikKYXN5bmMgZGVmIHdoaXRlbGlzdF9h
ZGQoaW50ZXJhY3Rpb246IGRpc2NvcmQuSW50ZXJhY3Rpb24sIHVzZXI6IGRpc2NvcmQuVXNlciwg
ZHVyYXRpb246IHN0cik6CiAgICBpZiBpbnRlcmFjdGlvbi51c2VyLmlkIG5vdCBpbiBPV05FUlM6
CiAgICAgICAgYXdhaXQgaW50ZXJhY3Rpb24ucmVzcG9uc2Uuc2VuZF9tZXNzYWdlKAogICAgICAg
ICAgICAiWW91IGRvIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gdXNlIHRoaXMgY29tbWFuZC4iLAog
ICAgICAgICAgICBlcGhlbWVyYWw9VHJ1ZQogICAgICAgICkKICAgICAgICByZXR1cm4KCiAgICBh
ZGRfdG9fd2hpdGVsaXN0KHVzZXIuaWQsIGR1cmF0aW9uKQogICAgZW1iZWQgPSBjcmVhdGVfZW1i
ZWQoCiAgICAgICAgdGl0bGU9IlVzZXIgV2hpdGVsaXN0ZWQiLAogICAgICAgIGRlc2NyaXB0aW9u
PWYiVXNlciB7dXNlci5tZW50aW9ufSBhZGRlZCB0byB0aGUgd2hpdGVsaXN0IGZvciBkdXJhdGlv
biBge2R1cmF0aW9ufWAuIgogICAgKQogICAgYXdhaXQgaW50ZXJhY3Rpb24ucmVzcG9uc2Uuc2Vu
ZF9tZXNzYWdlKGVtYmVkPWVtYmVkLCBlcGhlbWVyYWw9RmFsc2UpCgpAd2hpdGVsaXN0X2dyb3Vw
LmNvbW1hbmQobmFtZT0icmVtb3ZlIiwgZGVzY3JpcHRpb249IlJlbW92ZSBhIHVzZXIgZnJvbSB0
aGUgd2hpdGVsaXN0IChvd25lcnMgb25seSkiKQpAYXBwX2NvbW1hbmRzLmRlc2NyaWJlKHVzZXI9
IlVzZXIgdG8gcmVtb3ZlIGZyb20gd2hpdGVsaXN0IikKYXN5bmMgZGVmIHdoaXRlbGlzdF9yZW1v
dmUoaW50ZXJhY3Rpb246IGRpc2NvcmQuSW50ZXJhY3Rpb24sIHVzZXI6IGRpc2NvcmQuVXNlcik6
CiAgICBpZiBpbnRlcmFjdGlvbi51c2VyLmlkIG5vdCBpbiBPV05FUlM6CiAgICAgICAgYXdhaXQg
aW50ZXJhY3Rpb24ucmVzcG9uc2Uuc2VuZF9tZXNzYWdlKAogICAgICAgICAgICAiWW91IGRvIG5v
dCBoYXZlIHBlcm1pc3Npb24gdG8gdXNlIHRoaXMgY29tbWFuZC4iLAogICAgICAgICAgICBlcGhl
bWVyYWw9VHJ1ZQogICAgICAgICkKICAgICAgICByZXR1cm4KICAgIHJlbW92ZV9mcm9tX3doaXRl
bGlzdCh1c2VyLmlkKQogICAgZW1iZWQgPSBjcmVhdGVfZW1iZWQoCiAgICAgICAgdGl0bGU9IlVz
ZXIgUmVtb3ZlZCIsCiAgICAgICAgZGVzY3JpcHRpb249ZiJVc2VyIHt1c2VyLm1lbnRpb259IHJl
bW92ZWQgZnJvbSB0aGUgd2hpdGVsaXN0LiIKICAgICkKICAgIGF3YWl0IGludGVyYWN0aW9uLnJl
c3BvbnNlLnNlbmRfbWVzc2FnZShlbWJlZD1lbWJlZCwgZXBoZW1lcmFsPUZhbHNlKQoKYm90LnRy
ZWUuYWRkX2NvbW1hbmQod2hpdGVsaXN0X2dyb3VwKQoKIyA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoj
ICAgICAgICAgICAgICAgICAgICAgQ09NTUFORDogV0hJVEVMSVNUIElORk8KIyA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpAYm90LmNvbW1hbmQobmFtZT0id2hpdGVsaXN0aW5mbyIpCmFzeW5jIGRlZiB3
aGl0ZWxpc3RfaW5mbyhjdHgsIHVzZXI6IGRpc2NvcmQuVXNlciA9IE5vbmUpOgogICAgaWYgdXNl
ciBpcyBOb25lOgogICAgICAgIHVzZXIgPSBjdHguYXV0aG9yCgogICAgd2wgPSBsb2FkX3doaXRl
bGlzdCgpCiAgICB1aWQgPSBzdHIodXNlci5pZCkKCiAgICBpZiB1aWQgbm90IGluIHdsOgogICAg
ICAgIGVtYmVkID0gY3JlYXRlX2VtYmVkKAogICAgICAgICAgICB0aXRsZT0iV2hpdGVsaXN0IElu
Zm9ybWF0aW9uIiwKICAgICAgICAgICAgZGVzY3JpcHRpb249ZiJ7dXNlci5tZW50aW9ufSBpcyBu
b3Qgd2hpdGVsaXN0ZWQuIgogICAgICAgICkKICAgICAgICByZXR1cm4gYXdhaXQgY3R4LnNlbmQo
ZW1iZWQ9ZW1iZWQpCgogICAgZXhwID0gd2xbdWlkXQoKICAgIGlmIGV4cCBpcyBOb25lOgogICAg
ICAgIGV4cF9zdHIgPSAiTGlmZXRpbWUiCiAgICBlbGlmIGV4cCBpcyBOb25lOgogICAgICAgIGlm
IHVzZXIuaWQgaW4gT1dORVJTOgogICAgICAgICAgICBleHBfc3RyID0gIk93bmVyIChXaGl0ZWxp
c3RlZCkiCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZXhwX3N0ciA9ICJMaWZldGltZSIKICAg
IGVsc2U6CiAgICAgICAgbm93X3RzID0gaW50KGRhdGV0aW1lLnV0Y25vdygpLnRpbWVzdGFtcCgp
KQogICAgICAgIGlmIGV4cCA8PSBub3dfdHM6CiAgICAgICAgICAgIGV4cF9zdHIgPSAiRXhwaXJl
ZCIKICAgICAgICBlbHNlOgogICAgICAgICAgICBleHBpcnkgPSBkYXRldGltZS5mcm9tdGltZXN0
YW1wKGV4cCkKICAgICAgICAgICAgZXhwX3N0ciA9IGYiPHQ6e2ludChleHBpcnkudGltZXN0YW1w
KCkpfTpSPiIKCgoKICAgIGVtYmVkID0gY3JlYXRlX2VtYmVkKAogICAgICAgIHRpdGxlPSJXaGl0
ZWxpc3QgSW5mb3JtYXRpb24iLAogICAgICAgIGRlc2NyaXB0aW9uPSIiCiAgICApCiAgICBlbWJl
ZC5hZGRfZmllbGQobmFtZT0iVXNlciIsIHZhbHVlPXVzZXIubWVudGlvbiwgaW5saW5lPUZhbHNl
KQogICAgZW1iZWQuYWRkX2ZpZWxkKG5hbWU9IkV4cGlyZXMiLCB2YWx1ZT1leHBfc3RyLCBpbmxp
bmU9RmFsc2UpCgogICAgYXdhaXQgY3R4LnNlbmQoZW1iZWQ9ZW1iZWQpCgojID09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CiMgICAgICAgICAgICAgICAgICAgICBDT01NQU5EOiBMT0NLL1VOTE9DSwojID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CkBib3QuY29tbWFuZChuYW1lPSJsb2NrIikKYXN5bmMgZGVmIGxv
Y2tfY21kKGN0eCk6CiAgICBpZiBjdHguYXV0aG9yLmlkIG5vdCBpbiBPV05FUlM6CiAgICAgICAg
YXdhaXQgY3R4LnNlbmQoIllvdSBkbyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHVzZSB0aGlzIGNv
bW1hbmQuIikKICAgICAgICByZXR1cm4KICAgIGdsb2JhbCBsb2NrZWQKICAgIGlmIGxvY2tlZDoK
ICAgICAgICBhd2FpdCBjdHguc2VuZCgiVGhlIGNoZWNrZXIgaXMgYWxyZWFkeSBsb2NrZWQuIikK
ICAgICAgICByZXR1cm4KICAgIGxvY2tlZCA9IFRydWUKICAgIGVtYmVkID0gY3JlYXRlX2VtYmVk
KAogICAgICAgIHRpdGxlPSJDaGVja2VyIExvY2tlZCDwn5SSIiwKICAgICAgICBkZXNjcmlwdGlv
bj0iVGhlIGNoZWNrZXIgaGFzIGJlZW4gbG9ja2VkIGFuZCBpcyBub3cgaW5hY2Nlc3NpYmxlLiIK
ICAgICkKICAgIGF3YWl0IGN0eC5zZW5kKGVtYmVkPWVtYmVkKQoKQGJvdC5jb21tYW5kKG5hbWU9
InVubG9jayIpCmFzeW5jIGRlZiB1bmxvY2tfY21kKGN0eCk6CiAgICBpZiBjdHguYXV0aG9yLmlk
IG5vdCBpbiBPV05FUlM6CiAgICAgICAgYXdhaXQgY3R4LnNlbmQoIllvdSBkbyBub3QgaGF2ZSBw
ZXJtaXNzaW9uIHRvIHVzZSB0aGlzIGNvbW1hbmQuIikKICAgICAgICByZXR1cm4KICAgIGdsb2Jh
bCBsb2NrZWQKICAgIGlmIG5vdCBsb2NrZWQ6CiAgICAgICAgYXdhaXQgY3R4LnNlbmQoIlRoZSBj
aGVja2VyIGlzIGFscmVhZHkgdW5sb2NrZWQuIikKICAgICAgICByZXR1cm4KICAgIGxvY2tlZCA9
IEZhbHNlCiAgICBlbWJlZCA9IGNyZWF0ZV9lbWJlZCgKICAgICAgICB0aXRsZT0iQ2hlY2tlciBV
bmxvY2tlZCDwn5STIiwKICAgICAgICBkZXNjcmlwdGlvbj0iVGhlIGNoZWNrZXIgaXMgbm93IHVu
bG9ja2VkIGFuZCBhY2Nlc3NpYmxlLiIKICAgICkKICAgIGF3YWl0IGN0eC5zZW5kKGVtYmVkPWVt
YmVkKQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICAgICAgICAgICAgICAgICAgICAgQ09NTUFO
RDogQ0xFQVIKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAYm90LmNvbW1hbmQobmFtZT0iY2xlYXIi
KQpAY29tbWFuZHMuaGFzX3Blcm1pc3Npb25zKG1hbmFnZV9tZXNzYWdlcz1UcnVlKQphc3luYyBk
ZWYgY2xlYXJfY21kKGN0eCwgYW1vdW50OiBzdHIpOgogICAgaWYgY3R4LmF1dGhvci5pZCBub3Qg
aW4gT1dORVJTOgogICAgICAgIGF3YWl0IGN0eC5zZW5kKCJZb3UgZG8gbm90IGhhdmUgcGVybWlz
c2lvbiB0byB1c2UgdGhpcyBjb21tYW5kLiIsIGRlbGV0ZV9hZnRlcj01KQogICAgICAgIHJldHVy
bgoKICAgIGlmIGFtb3VudC5sb3dlcigpID09ICJhbGwiOgogICAgICAgIGRlbGV0ZWQgPSBhd2Fp
dCBjdHguY2hhbm5lbC5wdXJnZSgpCiAgICAgICAgYXdhaXQgY3R4LnNlbmQoZiJDbGVhcmVkICoq
e2xlbihkZWxldGVkKS0xfSoqIG1lc3NhZ2VzIiwgZGVsZXRlX2FmdGVyPTUpCiAgICBlbHNlOgog
ICAgICAgIHRyeToKICAgICAgICAgICAgbnVtID0gaW50KGFtb3VudCkKICAgICAgICAgICAgaWYg
bnVtIDwgMToKICAgICAgICAgICAgICAgIGF3YWl0IGN0eC5zZW5kKCJQbGVhc2Ugc3BlY2lmeSBh
IHBvc2l0aXZlIG51bWJlci4iLCBkZWxldGVfYWZ0ZXI9NSkKICAgICAgICAgICAgICAgIHJldHVy
bgogICAgICAgICAgICBkZWxldGVkID0gYXdhaXQgY3R4LmNoYW5uZWwucHVyZ2UobGltaXQ9bnVt
ICsgMSkgICMgKzEgdG8gZGVsZXRlIHRoZSBjb21tYW5kIG1lc3NhZ2UKICAgICAgICAgICAgYXdh
aXQgY3R4LnNlbmQoZiJDbGVhcmVkICoqe2xlbihkZWxldGVkKS0xfSoqIG1lc3NhZ2VzLiIsIGRl
bGV0ZV9hZnRlcj01KQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICBhd2Fp
dCBjdHguc2VuZCgiSW52YWxpZCBhbW91bnQhIiwgZGVsZXRlX2FmdGVyPTUpCgojID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CiMgICAgICAgICAgICAgICAgICAgICBDT01NQU5EOiBTRVRVUAojID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CkBib3QuY29tbWFuZChuYW1lPSJzZXR1cCIpCmFzeW5jIGRlZiBzZXR1
cChjdHgpOgogICAgIyBPTkxZIEFMTE9XRUQgSU4gT1JJR0lOQUwgU0VSVkVSCiAgICBpZiBjdHgu
Z3VpbGQuaWQgIT0gT1JJR0lOQUxfU0VSVkVSX0lEOgogICAgICAgIGF3YWl0IGN0eC5zZW5kKCLi
nYwgVGhpcyBjb21tYW5kIGNhbiBvbmx5IGJlIHVzZWQgaW4gdGhlIG9mZmljaWFsIHNlcnZlci4i
KQogICAgICAgIHJldHVybgogICAgICAgIAogICAgIyBPTkxZIEZPUiBPV05FUlMKICAgIGlmIGN0
eC5hdXRob3IuaWQgbm90IGluIE9XTkVSUzoKICAgICAgICBhd2FpdCBjdHguc2VuZCgi8J+UkiBZ
b3UgZG8gbm90IGhhdmUgcGVybWlzc2lvbiB0byB1c2UgdGhpcyBjb21tYW5kLiIpCiAgICAgICAg
cmV0dXJuCgogICAgYXdhaXQgY3R4LnNlbmQoIkxvY2tpbmcgZG93biBwZXJtaXNzaW9ucyBmb3Ig
QGV2ZXJ5b25lIGFjcm9zcyBhbGwgY2hhbm5lbHMuLi4iKQoKICAgIGd1aWxkID0gY3R4Lmd1aWxk
CiAgICBldmVyeW9uZV9yb2xlID0gZ3VpbGQuZGVmYXVsdF9yb2xlCiAgICB1cGRhdGVkID0gMAoK
ICAgIGFsbG93ZWRfcGVybWlzc2lvbnMgPSB7CiAgICAgICAgJ3ZpZXdfY2hhbm5lbCc6IFRydWUs
CiAgICAgICAgJ2NyZWF0ZV9pbnN0YW50X2ludml0ZSc6IFRydWUsCiAgICAgICAgJ2FkZF9yZWFj
dGlvbnMnOiBUcnVlLAogICAgICAgICdyZWFkX21lc3NhZ2VfaGlzdG9yeSc6IFRydWUKICAgIH0K
CiAgICBmb3IgY2hhbm5lbCBpbiBndWlsZC5jaGFubmVsczoKICAgICAgICB0cnk6CiAgICAgICAg
ICAgIG92ZXJ3cml0ZXMgPSBjaGFubmVsLm92ZXJ3cml0ZXNfZm9yKGV2ZXJ5b25lX3JvbGUpCgog
ICAgICAgICAgICBmb3IgcGVybSBpbiBkaXNjb3JkLlBlcm1pc3Npb25zLlZBTElEX0ZMQUdTOgog
ICAgICAgICAgICAgICAgc2V0YXR0cihvdmVyd3JpdGVzLCBwZXJtLCBGYWxzZSkKCiAgICAgICAg
ICAgIGZvciBwZXJtLCB2YWx1ZSBpbiBhbGxvd2VkX3Blcm1pc3Npb25zLml0ZW1zKCk6CiAgICAg
ICAgICAgICAgICBzZXRhdHRyKG92ZXJ3cml0ZXMsIHBlcm0sIHZhbHVlKQoKICAgICAgICAgICAg
YXdhaXQgY2hhbm5lbC5zZXRfcGVybWlzc2lvbnMoZXZlcnlvbmVfcm9sZSwgb3ZlcndyaXRlPW92
ZXJ3cml0ZXMpCiAgICAgICAgICAgIHVwZGF0ZWQgKz0gMQogICAgICAgIGV4Y2VwdCBFeGNlcHRp
b24gYXMgZToKICAgICAgICAgICAgcHJpbnQoZiJGYWlsZWQgdG8gdXBkYXRlIHtjaGFubmVsLm5h
bWV9OiB7ZX0iKQoKICAgIGVtYmVkID0gY3JlYXRlX2VtYmVkKAogICAgICAgICJTZXR1cCBDb21w
bGV0ZSIsCiAgICAgICAgZiJVcGRhdGVkIHBlcm1pc3Npb25zIGluICoqe3VwZGF0ZWR9KiogY2hh
bm5lbHMgZm9yIGBAZXZlcnlvbmVgLiIKICAgICkKICAgIGF3YWl0IGN0eC5zZW5kKGVtYmVkPWVt
YmVkKQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICAgICAgICAgICAgICAgICAgICAgQ09NTUFO
RDogUFJJQ0UgTElTVAojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBib3QuY29tbWFuZChuYW1lPSJw
cmljZWxpc3QiKQphc3luYyBkZWYgcHJpY2VfbGlzdChjdHgpOgogICAgZW1iZWQgPSBjcmVhdGVf
ZW1iZWQoCiAgICAgICAgdGl0bGU9IvCfkrggUHJpY2UgTGlzdCIsCiAgICAgICAgZGVzY3JpcHRp
b249KAogICAgICAgICAgICAi4o+zIDEgRGF5XG4iCiAgICAgICAgICAgICIxJFxuIgogICAgICAg
ICAgICAi8J+ThiAxIFdlZWtcbiIKICAgICAgICAgICAgIjMkXG4iCiAgICAgICAgICAgICLwn5eT
77iPIDEgTW9udGhcbiIKICAgICAgICAgICAgIjckXG4iCiAgICAgICAgICAgICLimb7vuI8gTGlm
ZXRpbWVcbiIKICAgICAgICAgICAgIjE1JCIKICAgICAgICApCiAgICApCiAgICBhd2FpdCBjdHgu
c2VuZChlbWJlZD1lbWJlZCkKCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyAgICAgICAgICAgICAg
ICAgICAgIENPTU1BTkQ6IEJPT1NUIFJFV0FSRFMKIyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAYm90
LmNvbW1hbmQobmFtZT0iYm9vc3QtcmV3YXJkIikKYXN5bmMgZGVmIGJvb3N0X3Jld2FyZChjdHgp
OgogICAgZW1iZWQgPSBjcmVhdGVfZW1iZWQoCiAgICAgICAgdGl0bGU9IuKcqCBCb29zdCBSZXdh
cmRzIiwKICAgICAgICBkZXNjcmlwdGlvbj0oCiAgICAgICAgICAgICLwn5+jICoqMSBCb29zdCoq
ICDihpIgIDcgZGF5cyBvZiBhY2Nlc3MgKG9yIDUgZGF5cyBwcmVtaXVtIGdlbiBhY2Nlc3MpXG4i
CiAgICAgICAgICAgICLwn5+iICoqMiBCb29zdHMqKiDihpIgMSBtb250aCBvZiBhY2Nlc3MgKG9y
IDIgd2Vla3MgcHJlbWl1bSBnZW4gYWNjZXNzKVxuIgogICAgICAgICAgICAi8J+UtSAqKjMgQm9v
c3RzKiog4oaSIDMgbW9udGhzIG9mIGFjY2VzcyAob3IgR2VuIFNjciAtIEdvb2QgU2NyKVxuIgog
ICAgICAgICAgICAi8J+foCAqKjQgQm9vc3RzKiog4oaSIDYgbW9udGhzIG9mIGFjY2VzcyAob3Ig
YW55IGN1c3RvbSBib3QgeW91IHdhbnQsIG5vIEFJLCBhbGwgcmVhbCBjb2RlOyBDaGVja2VyIFNj
ciAtIEdvb2QgU2NyKVxuIgogICAgICAgICAgICAi8J+foSAqKjUgQm9vc3RzKiog4oaSIDEgeWVh
ciBvZiBhY2Nlc3NcbiIKICAgICAgICAgICAgIvCflLQgKio2IEJvb3N0cyoqIOKGkiBMaWZldGlt
ZSBhY2Nlc3NcbiIKICAgICAgICAgICAgIlxuIgogICAgICAgICAgICAiPDpib29zdGVyOjEzODUw
ODU1NjUxMzY5Mjg4NDE+IEJvb3N0IGZvciBwcmVtaXVtIGFjY2VzcyBvciBzcGVjaWFsIHJld2Fy
ZHMhIENvbnRhY3Qgc3RhZmYgZm9yIGRldGFpbHMuIgogICAgICAgICkKICAgICkKICAgIGF3YWl0
IGN0eC5zZW5kKGVtYmVkPWVtYmVkKQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICAgICAgICAg
ICAgICAgICAgICAgQ09NTUFORDogSU5WSVRFIFJFV0FSRFMKIyA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpAYm90LmNvbW1hbmQobmFtZT0iaW52aXRlLXJld2FyZCIpCmFzeW5jIGRlZiBpbnZpdGVfcmV3
YXJkKGN0eCk6CiAgICBlbWJlZCA9IGNyZWF0ZV9lbWJlZCgKICAgICAgICB0aXRsZT0i8J+OiSBJ
bnZpdGUgUmV3YXJkcyIsCiAgICAgICAgZGVzY3JpcHRpb249KAogICAgICAgICAgICAi8J+RpSAq
KjIgSW52aXRlcyoqICDihpIgIDEgZGF5IG9mIGFjY2Vzc1xuIgogICAgICAgICAgICAi8J+RpSAq
KjUgSW52aXRlcyoqICDihpIgIDMgZGF5cyBvZiBhY2Nlc3NcbiIKICAgICAgICAgICAgIvCfkaUg
KioxMCBJbnZpdGVzKiog4oaSIDcgZGF5cyBvZiBhY2Nlc3NcbiIgCiAgICAgICAgICAgICLwn5Gl
ICoqMjAgSW52aXRlcyoqIOKGkiAxNCBkYXlzIG9mIGFjY2Vzc1xuIgogICAgICAgICAgICAi8J+R
pSAqKjUwIEludml0ZXMqKiDihpIgMzAgZGF5cyBvZiBhY2Nlc3NcbiIgCiAgICAgICAgICAgICLw
n5GlICoqMTAwIEludml0ZXMqKiDihpIgNjAgZGF5cyBvZiBhY2Nlc3NcbiIgCiAgICAgICAgICAg
ICLwn5GlICoqMjAwIEludml0ZXMqKiDihpIgOTAgZGF5cyBvZiBhY2Nlc3NcbiIKICAgICAgICAg
ICAgIvCfkaUgKio1MDAgSW52aXRlcyoqIOKGkiAxODAgZGF5cyBvZiBhY2Nlc3NcbiIKICAgICAg
ICAgICAgIvCfkaUgKioxMDAwIEludml0ZXMqKiDihpIgTGlmZXRpbWUgYWNjZXNzXG4iCiAgICAg
ICAgKQogICAgKQogICAgYXdhaXQgY3R4LnNlbmQoZW1iZWQ9ZW1iZWQpCgojID09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CiMgICAgICAgICAgICAgICAgICAgICBDT01NQU5EOiBMRUFERVJCT0FSRAojID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CkBib3QudHJlZS5jb21tYW5kKG5hbWU9ImxlYWRlcmJvYXJkIiwg
ZGVzY3JpcHRpb249IlZpZXcgdGhlIGxlYWRlcmJvYXJkIG9mIHRoZSBtb3N0IGluYm94IGhpdHMg
Zm9yIHlvdXIgQ29tYm9zIikKQGNoZWNrX2FsbG93ZWRfd3JhcHBlcgphc3luYyBkZWYgbGVhZGVy
Ym9hcmRfY29tbWFuZChpbnRlcmFjdGlvbjogZGlzY29yZC5JbnRlcmFjdGlvbikgLT4gTm9uZToK
ICAgIHVzZXJfaWQgPSBpbnRlcmFjdGlvbi51c2VyLmlkCiAgICBzZXNzaW9uID0gZ2V0X3VzZXJf
c2Vzc2lvbih1c2VyX2lkKQoKICAgIGlmIG5vdCBzZXNzaW9uWyJyZXN1bHRzX2NhY2hlIl06CiAg
ICAgICAgZW1iZWQgPSBjcmVhdGVfZW1iZWQoCiAgICAgICAgICAgIHRpdGxlPSJMZWFkZXJib2Fy
ZCIsCiAgICAgICAgICAgIGRlc2NyaXB0aW9uPSJObyByZXN1bHRzIGZvdW5kLiBQbGVhc2UgcnVu
IGEgY2hlY2sgZmlyc3QuIiwKICAgICAgICAgICAgY29sb3I9ZGlzY29yZC5Db2xvci5yZWQoKQog
ICAgICAgICkKICAgICAgICBhd2FpdCBpbnRlcmFjdGlvbi5yZXNwb25zZS5zZW5kX21lc3NhZ2Uo
ZW1iZWQ9ZW1iZWQsIGVwaGVtZXJhbD1UcnVlKQogICAgICAgIHJldHVybgoKICAgIHNvcnRlZF9y
ZXN1bHRzID0gc29ydGVkKHNlc3Npb25bInJlc3VsdHNfY2FjaGUiXS5pdGVtcygpLCBrZXk9bGFt
YmRhIHg6IGxlbih4WzFdKSwgcmV2ZXJzZT1UcnVlKQogICAgbGVhZGVyYm9hcmRfdGV4dCA9ICJc
biIuam9pbihbZiJ7c2VydmljZX06IHtsZW4ocmVzdWx0cyl9IiBmb3Igc2VydmljZSwgcmVzdWx0
cyBpbiBzb3J0ZWRfcmVzdWx0c10pCgogICAgZW1iZWQgPSBjcmVhdGVfZW1iZWQoCiAgICAgICAg
dGl0bGU9IkxlYWRlcmJvYXJkIiwKICAgICAgICBkZXNjcmlwdGlvbj1sZWFkZXJib2FyZF90ZXh0
IG9yICJObyB2YWxpZCBhY2NvdW50cyBmb3VuZC4iLAogICAgICAgIGNvbG9yPWRpc2NvcmQuQ29s
b3IuYmx1ZSgpCiAgICApCiAgICAKICAgIGF3YWl0IGludGVyYWN0aW9uLnJlc3BvbnNlLnNlbmRf
bWVzc2FnZShlbWJlZD1lbWJlZCwgZXBoZW1lcmFsPVRydWUpCgojID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CiMgICAgICAgICAgICAgICAgICAgICBDT01NQU5EOiBMSVNUIEFMTCBDT01NQU5EUwojID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CkBib3QudHJlZS5jb21tYW5kKG5hbWU9Imxpc3QtYWxsLWJvdC1j
b21tYW5kcyIsIGRlc2NyaXB0aW9uPSdMaXN0IG9mIGFsbCBjb21tYW5kcyB0aGlzIGJvdCBoYXMo
d2l0aCAiISIgY29tbWFuZHMgaW5jbHVkZWQpJykKYXN5bmMgZGVmIGxpc3RfYWxsX2JvdF9jb21t
YW5kcyhpbnRlcmFjdGlvbjogZGlzY29yZC5JbnRlcmFjdGlvbikgLT4gTm9uZToKICAgIGNvbW1h
bmRzX2xpc3QgPSBbZiIhe2NvbW1hbmQubmFtZX0iIGZvciBjb21tYW5kIGluIGJvdC5jb21tYW5k
c10KICAgIGNvbW1hbmRzX2xpc3QgKz0gW2YiL3tjb21tYW5kLm5hbWV9IiBmb3IgY29tbWFuZCBp
biBib3QudHJlZS5nZXRfY29tbWFuZHMoKV0KCiAgICBlbWJlZCA9IGNyZWF0ZV9lbWJlZCgKICAg
ICAgICB0aXRsZT0iQWxsIEJvdCBDb21tYW5kcyIsCiAgICAgICAgZGVzY3JpcHRpb249IlxuIi5q
b2luKGNvbW1hbmRzX2xpc3QpIG9yICJObyBjb21tYW5kcyBmb3VuZC4iLAogICAgICAgIGNvbG9y
PWRpc2NvcmQuQ29sb3IuZ3JlZW4oKQogICAgKQogICAgCiAgICBhd2FpdCBpbnRlcmFjdGlvbi5y
ZXNwb25zZS5zZW5kX21lc3NhZ2UoZW1iZWQ9ZW1iZWQsIGVwaGVtZXJhbD1UcnVlKQoKIyA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQojICAgICAgICAgICAgICAgICAgICAgQ09NTUFORDogQ1VTVE9NIFNF
QVJDSAojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBib3QudHJlZS5jb21tYW5kKG5hbWU9ImN1c3Rv
bXNlYXJjaCIsIGRlc2NyaXB0aW9uPSJTZWFyY2ggZm9yIGEgY3VzdG9tIGtleXdvcmQgaW4gdGhl
IGluYm94IikKQGFwcF9jb21tYW5kcy5kZXNjcmliZSgKICAgIGNvbWJvX2ZpbGU9IlRleHQgZmls
ZSB3aXRoIGVtYWlsOnBhc3N3b3JkIHBhaXJzIiwKICAgIGtleXdvcmQ9IktleXdvcmQgdG8gc2Vh
cmNoIGZvciBpbiB0aGUgaW5ib3giCikKQGNoZWNrX2FsbG93ZWRfd3JhcHBlcgpAY2hlY2tlcl9y
ZXN0cmljdGlvbgphc3luYyBkZWYgY3VzdG9tX3NlYXJjaF9jb21tYW5kKGludGVyYWN0aW9uOiBk
aXNjb3JkLkludGVyYWN0aW9uLCBjb21ib19maWxlOiBkaXNjb3JkLkF0dGFjaG1lbnQsIGtleXdv
cmQ6IHN0cikgLT4gTm9uZToKICAgIHVzZXJfaWQgPSBpbnRlcmFjdGlvbi51c2VyLmlkCiAgICBy
ZXNldF91c2VyX3Nlc3Npb24odXNlcl9pZCkKICAgIHByZXBhcmVfdXNlcl9zZXNzaW9uX2ZvbGRl
cih1c2VyX2lkKQoKICAgIGF3YWl0IGludGVyYWN0aW9uLnJlc3BvbnNlLmRlZmVyKCkKICAgIAog
ICAgZmlsZV9ieXRlcyA9IGF3YWl0IGNvbWJvX2ZpbGUucmVhZCgpCiAgICBjb21ib19saW5lcyA9
IFtsaW5lLnN0cmlwKCkgZm9yIGxpbmUgaW4gZmlsZV9ieXRlcy5kZWNvZGUoInV0Zi04IiwgZXJy
b3JzPSJyZXBsYWNlIikuc3BsaXRsaW5lcygpIGlmICI6IiBpbiBsaW5lXQogICAgCiAgICByZXN1
bHRzID0gW10KICAgIHRvdGFsX2NoZWNrZWQgPSAwCiAgICB0b3RhbF9oaXRzID0gMAoKICAgIHN0
YXR1c19tc2cgPSBhd2FpdCBpbnRlcmFjdGlvbi5mb2xsb3d1cC5zZW5kKGVtYmVkPWNyZWF0ZV9l
bWJlZCgKICAgICAgICB0aXRsZT0i8J+UjSBDdXN0b20gU2VhcmNoIiwKICAgICAgICBkZXNjcmlw
dGlvbj1mIlNlYXJjaGluZyBpbmJveGVzIGZvciBrZXl3b3JkOiBge2tleXdvcmR9YFxuQWNjb3Vu
dHM6IHtsZW4oY29tYm9fbGluZXMpfVxuQ2hlY2tlZDogMFxuSGl0czogMCIsCiAgICAgICAgY29s
b3I9ZGlzY29yZC5Db2xvci5vcmFuZ2UoKQogICAgKSwgd2FpdD1UcnVlKQoKICAgIGFzeW5jIGRl
ZiB1cGRhdGVfZW1iZWQoKToKICAgICAgICBlbWJlZCA9IGNyZWF0ZV9lbWJlZCgKICAgICAgICAg
ICAgdGl0bGU9IvCflI0gQ3VzdG9tIFNlYXJjaCIsCiAgICAgICAgICAgIGRlc2NyaXB0aW9uPWYi
U2VhcmNoaW5nIGluYm94ZXMgZm9yIGtleXdvcmQ6IGB7a2V5d29yZH1gXG5BY2NvdW50czoge2xl
bihjb21ib19saW5lcyl9XG5DaGVja2VkOiB7dG90YWxfY2hlY2tlZH1cbkhpdHM6IHt0b3RhbF9o
aXRzfSIsCiAgICAgICAgICAgIGNvbG9yPWRpc2NvcmQuQ29sb3Iub3JhbmdlKCkKICAgICAgICAp
CiAgICAgICAgdHJ5OgogICAgICAgICAgICBhd2FpdCBzdGF0dXNfbXNnLmVkaXQoZW1iZWQ9ZW1i
ZWQpCiAgICAgICAgZXhjZXB0OiBwYXNzCgogICAgYXN5bmMgZGVmIHByb2Nlc3NfbGluZShsaW5l
KToKICAgICAgICBub25sb2NhbCB0b3RhbF9jaGVja2VkLCB0b3RhbF9oaXRzCiAgICAgICAgZW1h
aWwsIHBhc3N3b3JkID0gbGluZS5zcGxpdCgiOiIsIDEpCiAgICAgICAgcmVzdWx0ID0gYXdhaXQg
YXN5bmNpby50b190aHJlYWQoc2VhcmNoX2tleXdvcmRfaW5faW5ib3gsIGVtYWlsLCBwYXNzd29y
ZCwga2V5d29yZCkKICAgICAgICB0b3RhbF9jaGVja2VkICs9IDEKICAgICAgICBpZiByZXN1bHQ6
CiAgICAgICAgICAgIHRvdGFsX2hpdHMgKz0gMQogICAgICAgICAgICByZXN1bHRzLmFwcGVuZChy
ZXN1bHQpCiAgICAgICAgYXdhaXQgdXBkYXRlX2VtYmVkKCkKCiAgICBmb3IgbGluZSBpbiBjb21i
b19saW5lczoKICAgICAgICBpZiBnZXRfdXNlcl9zZXNzaW9uKHVzZXJfaWQpWyJzaG91bGRfc3Rv
cCJdOgogICAgICAgICAgICBicmVhawogICAgICAgIGF3YWl0IHByb2Nlc3NfbGluZShsaW5lKQoK
ICAgIGlmIHJlc3VsdHM6CiAgICAgICAgcGF0aCA9IGYie1JFU1VMVFNfRk9MREVSfS97dXNlcl9p
ZH0vc2VhcmNoX3Jlc3VsdHMudHh0IgogICAgICAgIHdpdGggb3BlbihwYXRoLCAidyIsIGVuY29k
aW5nPSJ1dGYtOCIpIGFzIGY6CiAgICAgICAgICAgIGYud3JpdGUoZiJLZXl3b3JkOiB7a2V5d29y
ZH1cblxuIikKICAgICAgICAgICAgZi53cml0ZSgiXG4iLmpvaW4ocmVzdWx0cykpCgogICAgICAg
IGRtID0gYXdhaXQgaW50ZXJhY3Rpb24udXNlci5jcmVhdGVfZG0oKQogICAgICAgIGF3YWl0IGRt
LnNlbmQoZmlsZT1kaXNjb3JkLkZpbGUocGF0aCkpCgogICAgICAgIGZpbmFsX2VtYmVkID0gY3Jl
YXRlX2VtYmVkKAogICAgICAgICAgICB0aXRsZT0i4pyFIFNlYXJjaCBDb21wbGV0ZSIsCiAgICAg
ICAgICAgIGRlc2NyaXB0aW9uPWYiRm91bmQgYHt0b3RhbF9oaXRzfWAgbWF0Y2hpbmcgaW5ib3hl
cyBmb3Iga2V5d29yZCBge2tleXdvcmR9YC4gUmVzdWx0cyBzZW50IHZpYSBETS4iLAogICAgICAg
ICAgICBjb2xvcj1kaXNjb3JkLkNvbG9yLmdyZWVuKCkKICAgICAgICApCiAgICBlbHNlOgogICAg
ICAgIGZpbmFsX2VtYmVkID0gY3JlYXRlX2VtYmVkKAogICAgICAgICAgICB0aXRsZT0i4p2MIE5v
IE1hdGNoZXMgRm91bmQiLAogICAgICAgICAgICBkZXNjcmlwdGlvbj1mIk5vIGluYm94ZXMgZm91
bmQgY29udGFpbmluZyB0aGUga2V5d29yZCBge2tleXdvcmR9YC4iLAogICAgICAgICAgICBjb2xv
cj1kaXNjb3JkLkNvbG9yLnJlZCgpCiAgICAgICAgKQoKICAgIGF3YWl0IHN0YXR1c19tc2cuZWRp
dChlbWJlZD1maW5hbF9lbWJlZCkKICAgIGNsZWFyX3VzZXJfcmVzdWx0cyh1c2VyX2lkKQoKZGVm
IHNlYXJjaF9rZXl3b3JkX2luX2luYm94KGVtYWlsOiBzdHIsIHBhc3N3b3JkOiBzdHIsIGtleXdv
cmQ6IHN0cikgLT4gc3RyIHwgTm9uZToKICAgIHRyeToKICAgICAgICAjIE9BdXRoIHJlcXVlc3QK
ICAgICAgICByID0gcmVxdWVzdHMuZ2V0KAogICAgICAgICAgICAiaHR0cHM6Ly9sb2dpbi5taWNy
b3NvZnRvbmxpbmUuY29tL2NvbnN1bWVycy9vYXV0aDIvdjIuMC9hdXRob3JpemUiCiAgICAgICAg
ICAgIGYiP2NsaWVudF9pbmZvPTEmaGFzY2hyb21lPTEmbG9naW5faGludD17ZW1haWx9Jm1rdD1l
biIKICAgICAgICAgICAgIiZyZXNwb25zZV90eXBlPWNvZGUmY2xpZW50X2lkPWU5YjE1NGQwLTc2
NTgtNDMzYi1iYjI1LTZiOGUwYThhN2M1OSIKICAgICAgICAgICAgIiZzY29wZT1wcm9maWxlIG9w
ZW5pZCBvZmZsaW5lX2FjY2VzcyBodHRwczovL291dGxvb2sub2ZmaWNlLmNvbS9NMzY1LkFjY2Vz
cyIKICAgICAgICAgICAgIiZyZWRpcmVjdF91cmk9bXNhdXRoOi8vY29tLm1pY3Jvc29mdC5vdXRs
b29rbGl0ZS9mY2c4MHF2b00xWU1LSlppYmpCd1FjRGZPbm8lM0QiLAogICAgICAgICAgICBoZWFk
ZXJzPXsiVXNlci1BZ2VudCI6ICJNb3ppbGxhLzUuMCJ9LAogICAgICAgICAgICB0aW1lb3V0PTgK
ICAgICAgICApCiAgICAgICAgaWYgci5zdGF0dXNfY29kZSAhPSAyMDA6IHJldHVybiBOb25lCiAg
ICAgICAgaHRtbCA9IHIudGV4dAogICAgICAgIGlmICJ1cmxQb3N0OiciIG5vdCBpbiBodG1sOiBy
ZXR1cm4gTm9uZQogICAgICAgIHVybF9wb3N0ID0gaHRtbC5zcGxpdCgidXJsUG9zdDonIilbMV0u
c3BsaXQoIiciKVswXQogICAgICAgIFBQRlQgPSBodG1sLnNwbGl0KCduYW1lPSJQUEZUIiBpZD0i
aTAzMjciIHZhbHVlPSInKVsxXS5zcGxpdCgnIicpWzBdCiAgICAgICAgY29va2llcyA9IHIuY29v
a2llcy5nZXRfZGljdCgpCiAgICAgICAgIyBMb2dpbgogICAgICAgIGRhdGEgPSB7CiAgICAgICAg
ICAgICJsb2dpbiI6IGVtYWlsLCAicGFzc3dkIjogcGFzc3dvcmQsICJQUEZUIjogUFBGVCwgInR5
cGUiOiAiMTEiLAogICAgICAgICAgICAiTmV3VXNlciI6ICIxIiwgIlBQU1giOiAiUGFzc3BvcnRS
IiwgImlzU2lnbnVwUG9zdCI6ICIwIiwgImkxOSI6ICI5OTYwIgogICAgICAgIH0KICAgICAgICBo
ZWFkZXJzID0gewogICAgICAgICAgICAiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL3gtd3d3
LWZvcm0tdXJsZW5jb2RlZCIsCiAgICAgICAgICAgICJVc2VyLUFnZW50IjogIk1vemlsbGEvNS4w
IiwKICAgICAgICAgICAgIkNvb2tpZSI6ICI7ICIuam9pbihmIntrfT17dn0iIGZvciBrLCB2IGlu
IGNvb2tpZXMuaXRlbXMoKSkKICAgICAgICB9CiAgICAgICAgcmVzID0gcmVxdWVzdHMucG9zdCh1
cmxfcG9zdCwgZGF0YT1kYXRhLCBoZWFkZXJzPWhlYWRlcnMsIGFsbG93X3JlZGlyZWN0cz1GYWxz
ZSwgdGltZW91dD04KQogICAgICAgIGxvYyA9IHJlcy5oZWFkZXJzLmdldCgiTG9jYXRpb24iLCAi
IikKICAgICAgICBpZiAiY29kZT0iIG5vdCBpbiBsb2M6IHJldHVybiBOb25lCiAgICAgICAgYXV0
aF9jb2RlID0gbG9jLnNwbGl0KCJjb2RlPSIpWzFdLnNwbGl0KCImIilbMF0KCiAgICAgICAgIyBU
b2tlbgogICAgICAgIHRva2VuX3JlcyA9IHJlcXVlc3RzLnBvc3QoCiAgICAgICAgICAgICJodHRw
czovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vY29uc3VtZXJzL29hdXRoMi92Mi4wL3Rva2Vu
IiwKICAgICAgICAgICAgZGF0YT17CiAgICAgICAgICAgICAgICAiY2xpZW50X2luZm8iOiAiMSIs
CiAgICAgICAgICAgICAgICAiY2xpZW50X2lkIjogImU5YjE1NGQwLTc2NTgtNDMzYi1iYjI1LTZi
OGUwYThhN2M1OSIsCiAgICAgICAgICAgICAgICAicmVkaXJlY3RfdXJpIjogIm1zYXV0aDovL2Nv
bS5taWNyb3NvZnQub3V0bG9va2xpdGUvZmNnODBxdm9NMVlNS0paaWJqQndRY0RmT25vJTNEIiwK
ICAgICAgICAgICAgICAgICJncmFudF90eXBlIjogImF1dGhvcml6YXRpb25fY29kZSIsCiAgICAg
ICAgICAgICAgICAiY29kZSI6IGF1dGhfY29kZSwKICAgICAgICAgICAgICAgICJzY29wZSI6ICJw
cm9maWxlIG9wZW5pZCBvZmZsaW5lX2FjY2VzcyBodHRwczovL291dGxvb2sub2ZmaWNlLmNvbS9N
MzY1LkFjY2VzcyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaGVhZGVycz17IkNvbnRlbnQt
VHlwZSI6ICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifSwKICAgICAgICAgICAg
dGltZW91dD04CiAgICAgICAgKQogICAgICAgIHRva2VuX2RhdGEgPSB0b2tlbl9yZXMuanNvbigp
CiAgICAgICAgdG9rZW4gPSB0b2tlbl9kYXRhLmdldCgiYWNjZXNzX3Rva2VuIiwgTm9uZSkKICAg
ICAgICBpZiBub3QgdG9rZW46IHJldHVybiBOb25lCgogICAgICAgICMgU2VhcmNoIGluYm94CiAg
ICAgICAgc2VhcmNoX3VybCA9IGYiaHR0cHM6Ly9vdXRsb29rLm9mZmljZS5jb20vYXBpL3YyLjAv
bWUvbWVzc2FnZXM/JHNlYXJjaD1cIntrZXl3b3JkfVwiIgogICAgICAgIHNlYXJjaF9yZXMgPSBy
ZXF1ZXN0cy5nZXQoc2VhcmNoX3VybCwgaGVhZGVycz17CiAgICAgICAgICAgICJBdXRob3JpemF0
aW9uIjogZiJCZWFyZXIge3Rva2VufSIsCiAgICAgICAgICAgICJVc2VyLUFnZW50IjogIk1vemls
bGEvNS4wIgogICAgICAgIH0sIHRpbWVvdXQ9OCkKCiAgICAgICAgaWYgc2VhcmNoX3Jlcy5zdGF0
dXNfY29kZSAhPSAyMDA6IHJldHVybiBOb25lCiAgICAgICAgbWVzc2FnZXMgPSBzZWFyY2hfcmVz
Lmpzb24oKS5nZXQoInZhbHVlIiwgW10pCiAgICAgICAgaWYgbm90IG1lc3NhZ2VzOiByZXR1cm4g
Tm9uZQoKICAgICAgICBlbnRyaWVzID0gW10KICAgICAgICBmb3IgbXNnIGluIG1lc3NhZ2VzWzoz
XTogICMgTGltaXQgcmVzdWx0cwogICAgICAgICAgICBzdWJqID0gbXNnLmdldCgiU3ViamVjdCIs
ICJObyBTdWJqZWN0IikKICAgICAgICAgICAgZnJtID0gbXNnLmdldCgiU2VuZGVyIiwge30pLmdl
dCgiRW1haWxBZGRyZXNzIiwge30pLmdldCgiQWRkcmVzcyIsICJVbmtub3duIikKICAgICAgICAg
ICAgZHQgPSBtc2cuZ2V0KCJSZWNlaXZlZERhdGVUaW1lIiwgIlVua25vd24iKQogICAgICAgICAg
ICBlbnRyaWVzLmFwcGVuZChmIntlbWFpbH0gfCBGcm9tOiB7ZnJtfSB8IFN1YmplY3Q6IHtzdWJq
fSB8IERhdGU6IHtkdH0iKQoKICAgICAgICByZXR1cm4gIlxuIi5qb2luKGVudHJpZXMpCgogICAg
ZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgIHByaW50KGYiW1NlYXJjaCBFcnJvcl0ge2Vt
YWlsfSAtIHtlfSIpCiAgICAgICAgcmV0dXJuIE5vbmUKCiMgPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
IyAgICAgICAgICAgICAgICAgICAgIENPTU1BTkQ6IFJFTE9BRCBDT05GSUcKIyA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpAYm90LmNvbW1hbmQobmFtZT0icmVsb2FkY29uZmlnIikKQGNvbW1hbmRzLmlz
X293bmVyKCkKYXN5bmMgZGVmIHJlbG9hZF9jb25maWcoY3R4KToKICAgICIiIlJlbG9hZCB0aGUg
Y29uZmlndXJhdGlvbiBmcm9tIGNvbmZpZy5qc29uIChPd25lciBvbmx5KSIiIgogICAgZ2xvYmFs
IFRPS0VOLCBSRVFVSVJFRF9HVUlMRF9JRCwgUkVRVUlSRURfUk9MRV9JRCwgQUxMT1dFRF9DSEFO
TkVMX0lELCBPV05FUlMsIENPT0xET1dOX1NFQ09ORFMsIEJBTk5FUl9VUkwsIFJFU1VMVFNfRk9M
REVSCiAgICAKICAgIHRyeToKICAgICAgICB3aXRoIG9wZW4oImNvbmZpZy5qc29uIiwgInIiKSBh
cyBmOgogICAgICAgICAgICBuZXdfY29uZmlnID0ganNvbi5sb2FkKGYpCiAgICAgICAgICAgIAog
ICAgICAgICMgVXBkYXRlIGdsb2JhbCB2YXJpYWJsZXMKICAgICAgICBUT0tFTiA9IG5ld19jb25m
aWdbIlRPS0VOIl0KICAgICAgICBSRVFVSVJFRF9HVUlMRF9JRCA9IG5ld19jb25maWdbIlJFUVVJ
UkVEX0dVSUxEX0lEIl0KICAgICAgICBSRVFVSVJFRF9ST0xFX0lEID0gbmV3X2NvbmZpZ1siUkVR
VUlSRURfUk9MRV9JRCJdCiAgICAgICAgQUxMT1dFRF9DSEFOTkVMX0lEID0gbmV3X2NvbmZpZ1si
QUxMT1dFRF9DSEFOTkVMX0lEIl0KICAgICAgICBPV05FUlMgPSBzZXQobmV3X2NvbmZpZ1siT1dO
RVJTIl0pCiAgICAgICAgQ09PTERPV05fU0VDT05EUyA9IG5ld19jb25maWdbIkNPT0xET1dOX1NF
Q09ORFMiXQogICAgICAgIEJBTk5FUl9VUkwgPSBuZXdfY29uZmlnWyJCQU5ORVJfVVJMIl0KICAg
ICAgICBSRVNVTFRTX0ZPTERFUiA9IG5ld19jb25maWdbIlJFU1VMVFNfRk9MREVSIl0KICAgICAg
ICAKICAgICAgICBhd2FpdCBjdHguc2VuZCgi4pyFIENvbmZpZ3VyYXRpb24gcmVsb2FkZWQgc3Vj
Y2Vzc2Z1bGx5ISIpCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgYXdhaXQgY3R4
LnNlbmQoZiLinYwgRXJyb3IgcmVsb2FkaW5nIGNvbmZpZzoge3N0cihlKX0iKQoKIyA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQojICAgICAgICAgICAgICAgICAgICAgQ09NTUFORDogSU5GTyAoV0lUSCBC
VVRUT05TKQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmNsYXNzIEluZm9WaWV3KGRpc2NvcmQudWku
Vmlldyk6CiAgICBkZWYgX19pbml0X18oc2VsZiwgaXNfc3BvbnNvcjogYm9vbCA9IEZhbHNlKToK
ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHRpbWVvdXQ9Tm9uZSkKICAgICAgICBzZWxmLmlzX3Nw
b25zb3IgPSBpc19zcG9uc29yCiAgICAgICAgCiAgICBAZGlzY29yZC51aS5idXR0b24obGFiZWw9
IkFib3V0Iiwgc3R5bGU9ZGlzY29yZC5CdXR0b25TdHlsZS5wcmltYXJ5LCBjdXN0b21faWQ9ImFi
b3V0X2J0biIsIGVtb2ppPSLwn5OdIikKICAgIGFzeW5jIGRlZiBhYm91dF9idXR0b24oc2VsZiwg
aW50ZXJhY3Rpb246IGRpc2NvcmQuSW50ZXJhY3Rpb24sIGJ1dHRvbjogZGlzY29yZC51aS5CdXR0
b24pOgogICAgICAgIGRlc2NyaXB0aW9uID0gKAogICAgICAgICAgICAiKipHSFAgTWFpbCBCb3Qq
KiBpcyBhbiBhZHZhbmNlZCBEaXNjb3JkIHRvb2wgZm9yIHZlcmlmeWluZyBhY2NvdW50IGNyZWRl
bnRpYWxzIGFuZCBzY2FubmluZyBpbmJveGVzIGZvciBzZXJ2aWNlLXJlbGF0ZWQgZW1haWxzLlxu
XG4iCiAgICAgICAgKQogICAgICAgIAogICAgICAgIGlmIHNlbGYuaXNfc3BvbnNvcjoKICAgICAg
ICAgICAgZGVzY3JpcHRpb24gKz0gKAogICAgICAgICAgICAgICAgIvCflJIgKipZb3UncmUgdXNp
bmcgdGhlIGxpbWl0ZWQgc3BvbnNvciB2ZXJzaW9uKipcbiIKICAgICAgICAgICAgICAgICJGZWF0
dXJlczpcbiIKICAgICAgICAgICAgICAgICItIEJhc2ljIE1pY3Jvc29mdC9Hb29nbGUgYWNjb3Vu
dCBjaGVja2luZ1xuIgogICAgICAgICAgICAgICAgIi0gTGltaXRlZCBzZXJ2aWNlIGRldGVjdGlv
biAoOCBzZXJ2aWNlcylcbiIKICAgICAgICAgICAgICAgICItIExvbmdlciBjb29sZG93bnNcblxu
IgogICAgICAgICAgICAgICAgIuKcqCAqKlByZW1pdW0gRmVhdHVyZXM6KipcbiIKICAgICAgICAg
ICAgICAgICItIDIwMCsgc2VydmljZSBkZXRlY3Rpb25zXG4iCiAgICAgICAgICAgICAgICAiLSBQ
cmlvcml0eSBwcm9jZXNzaW5nXG4iCiAgICAgICAgICAgICAgICAiLSBSZWFsLXRpbWUgQ1BNIHN0
YXRzXG4iCiAgICAgICAgICAgICAgICAiLSBObyBjb29sZG93bnNcbiIKICAgICAgICAgICAgICAg
ICItIEFkdmFuY2VkIGluYm94IHNjYW5uaW5nXG4iCiAgICAgICAgICAgICkKICAgICAgICBlbHNl
OgogICAgICAgICAgICBkZXNjcmlwdGlvbiArPSAoCiAgICAgICAgICAgICAgICAiIyMjIPCfmoAg
V2h5IEdIUCBDaGVja2VyP1xuIgogICAgICAgICAgICAgICAgIuKAoiAqKkxpZ2h0bmluZy1GYXN0
IERvbWFpbiBEZXRlY3Rpb246KiogSW5zdGFudGx5IGlkZW50aWZpZXMgYW5kIHNvcnRzIGFjY291
bnRzIGJ5IHByb3ZpZGVyIGZvciBvcHRpbWFsIGNoZWNraW5nLlxuIgogICAgICAgICAgICAgICAg
IuKAoiAqKk11bHRpLVNlcnZpY2UgQ292ZXJhZ2U6KiogU3VwcG9ydHMgKioyMDArKiogcG9wdWxh
ciBwbGF0Zm9ybXMgaW5jbHVkaW5nIGBSb2Jsb3hgLCBgRmFjZWJvb2tgLCBgTmV0ZmxpeGAsIGBN
aWNyb3NvZnRgLCBgR29vZ2xlYCwgYW5kIG1vcmUuXG4iCiAgICAgICAgICAgICAgICAi4oCiICoq
SW5ib3ggS2V5d29yZCBTY2FubmluZzoqKiBBdXRvbWF0aWNhbGx5IHNlYXJjaGVzIGluYm94ZXMg
Zm9yIHZlcmlmaWNhdGlvbiBhbmQgc2VydmljZSBlbWFpbHMgdG8gY29uZmlybSB0cnVlIGFjY2Vz
cy5cbiIKICAgICAgICAgICAgICAgICLigKIgKipSZWFsLVRpbWUgU3RhdHM6KiogTGl2ZSB1cGRh
dGVzIG9uIHByb2dyZXNzLCBoaXRzLCBDUE0sIGFuZCBzZXJ2aWNlIGJyZWFrZG93bnMgZHVyaW5n
IGNoZWNrcy5cbiIKICAgICAgICAgICAgICAgICLigKIgKipVc2VyLUZyaWVuZGx5OioqIFNpbXBs
ZSBjb21tYW5kcywgaW50ZXJhY3RpdmUgYnV0dG9ucywgYW5kIGNsZWFyIHJlc3VsdCBkZWxpdmVy
eSB2aWEgRE0uXG4iCiAgICAgICAgICAgICAgICAi4oCiICoqRmxleGlibGUgQWNjZXNzOioqIEZy
ZWUgMjQtaG91ciB0cmlhbCwgcHJlbWl1bSBvcHRpb25zLCBhbmQgb3duZXIvd2hpdGVsaXN0IGNv
bnRyb2xzLlxuXG4iCiAgICAgICAgICAgICAgICAiPiBXaGV0aGVyIHlvdSdyZSBtYW5hZ2luZyBh
Y2NvdW50cywgdmVyaWZ5aW5nIGNvbWJvcywgb3IganVzdCBjdXJpb3VzLCAqKkdIUCBDaGVja2Vy
KiogbWFrZXMgaXQgZWFzeSwgZmFzdCwgYW5kIHJlbGlhYmxlLiIKICAgICAgICAgICAgKQogICAg
ICAgICAgICAKICAgICAgICBlbWJlZCA9IGNyZWF0ZV9lbWJlZCgKICAgICAgICAgICAgdGl0bGU9
IvCfk50gQWJvdXQgR0hQIENoZWNrZXIgQm90IiwKICAgICAgICAgICAgZGVzY3JpcHRpb249ZGVz
Y3JpcHRpb24KICAgICAgICApCiAgICAgICAgYXdhaXQgaW50ZXJhY3Rpb24ucmVzcG9uc2Uuc2Vu
ZF9tZXNzYWdlKGVtYmVkPWVtYmVkLCBlcGhlbWVyYWw9VHJ1ZSkKCiAgICBAZGlzY29yZC51aS5i
dXR0b24obGFiZWw9IlNlcnZpY2VzICYgRG9tYWlucyIsIHN0eWxlPWRpc2NvcmQuQnV0dG9uU3R5
bGUuc2Vjb25kYXJ5LCBjdXN0b21faWQ9InNlcnZpY2VzX2J0biIsIGVtb2ppPSLwn4yQIikKICAg
IGFzeW5jIGRlZiBzZXJ2aWNlc19idXR0b24oc2VsZiwgaW50ZXJhY3Rpb246IGRpc2NvcmQuSW50
ZXJhY3Rpb24sIGJ1dHRvbjogZGlzY29yZC51aS5CdXR0b24pOgogICAgICAgIGlmIHNlbGYuaXNf
c3BvbnNvcjoKICAgICAgICAgICAgc2VydmljZXNfdGV4dCA9ICLwn5SSIExpbWl0ZWQgdG8gOCBz
ZXJ2aWNlcyBpbiBzcG9uc29yIG1vZGUiCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBCdWls
ZCBkb21haW5zL3NlcnZpY2VzIGluZm8gZHluYW1pY2FsbHkgd2l0aCBpbXByb3ZlZCBmb3JtYXR0
aW5nCiAgICAgICAgICAgIGRlZiBmb3JtYXRfZG9tYWlucyhkb21haW5zX3NldCk6CiAgICAgICAg
ICAgICAgICByZXR1cm4gIiwgIi5qb2luKGYiYHtkfWAiIGZvciBkIGluIHNvcnRlZChkb21haW5z
X3NldCkpCgogICAgICAgICAgICBkb21haW5zID0gKAogICAgICAgICAgICAgICAgIioqTWljcm9z
b2Z0IERvbWFpbnM6KipcbiIKICAgICAgICAgICAgICAgIGYie2Zvcm1hdF9kb21haW5zKE1JQ1JP
U09GVF9ET01BSU5TKX1cbiIKICAgICAgICAgICAgICAgICLilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIBcbiIKICAgICAgICAgICAgICAgICIqKkdvb2dsZSBEb21haW5zOioqXG4iCiAgICAgICAg
ICAgICAgICBmIntmb3JtYXRfZG9tYWlucyhHT09HTEVfRE9NQUlOUyl9XG4iCiAgICAgICAgICAg
ICAgICAi4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4iCiAgICAgICAgICAgICAgICAiKipZ
YWhvbyBEb21haW5zOioqXG4iCiAgICAgICAgICAgICAgICBmIntmb3JtYXRfZG9tYWlucyhZQUhP
T19ET01BSU5TKX1cbiIKICAgICAgICAgICAgICAgICLilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIBcbiIKICAgICAgICAgICAgICAgICIqKkFwcGxlIERvbWFpbnM6KipcbiIKICAgICAgICAgICAg
ICAgIGYie2Zvcm1hdF9kb21haW5zKEFQUExFX0RPTUFJTlMpfVxuIgogICAgICAgICAgICAgICAg
IuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuIgogICAgICAgICAgICAgICAgIioqQU9MIERv
bWFpbnM6KipcbiIKICAgICAgICAgICAgICAgIGYie2Zvcm1hdF9kb21haW5zKEFPTF9ET01BSU5T
KX1cbiIKICAgICAgICAgICAgICAgICLilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiIKICAg
ICAgICAgICAgICAgICIqKkdNWCBEb21haW5zOioqXG4iCiAgICAgICAgICAgICAgICBmIntmb3Jt
YXRfZG9tYWlucyhHTVhfRE9NQUlOUyl9XG4iCiAgICAgICAgICAgICAgICAi4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSAXG4iCiAgICAgICAgICAgICAgICAiKipNYWlsLnJ1IERvbWFpbnM6Kipc
biIKICAgICAgICAgICAgICAgIGYie2Zvcm1hdF9kb21haW5zKE1BSUxSVV9ET01BSU5TKX1cbiIK
ICAgICAgICAgICAgICAgICLilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiIKICAgICAgICAg
ICAgICAgICIqKllhbmRleCBEb21haW5zOioqXG4iCiAgICAgICAgICAgICAgICBmIntmb3JtYXRf
ZG9tYWlucyhZQU5ERVhfRE9NQUlOUyl9XG4iCiAgICAgICAgICAgICAgICAi4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSAXG4iCiAgICAgICAgICAgICAgICAiKipQcm90b25NYWlsIERvbWFpbnM6
KipcbiIKICAgICAgICAgICAgICAgIGYie2Zvcm1hdF9kb21haW5zKFBST1RPTl9ET01BSU5TKX1c
biIKICAgICAgICAgICAgICAgICLilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiIKICAgICAg
ICAgICAgICAgICIqKlpvaG8gRG9tYWluczoqKlxuIgogICAgICAgICAgICAgICAgZiJ7Zm9ybWF0
X2RvbWFpbnMoWk9IT19ET01BSU5TKX1cbiIKICAgICAgICAgICAgICAgICLilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIBcbiIKICAgICAgICAgICAgICAgICIqKlR1dGFub3RhIERvbWFpbnM6Kipc
biIKICAgICAgICAgICAgICAgIGYie2Zvcm1hdF9kb21haW5zKFRVVEFOT1RBX0RPTUFJTlMpfVxu
IgogICAgICAgICAgICAgICAgIuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuIgogICAgICAg
ICAgICAgICAgIioqRmFzdG1haWwgRG9tYWluczoqKlxuIgogICAgICAgICAgICAgICAgZiJ7Zm9y
bWF0X2RvbWFpbnMoRkFTVE1BSUxfRE9NQUlOUyl9XG4iCiAgICAgICAgICAgICAgICAi4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4iCiAgICAgICAgICAgICAgICAiKipEaXNwb3NhYmxlIERv
bWFpbnM6KipcbiIKICAgICAgICAgICAgICAgIGYie2Zvcm1hdF9kb21haW5zKERJU1BPU0FCTEVf
RE9NQUlOUyl9XG4iCiAgICAgICAgICAgICAgICAi4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
XG4iCiAgICAgICAgICAgICAgICAiKipHZXJtYW4gRG9tYWluczoqKlxuIgogICAgICAgICAgICAg
ICAgZiJ7Zm9ybWF0X2RvbWFpbnMoR0VSTUFOX0RPTUFJTlMpfVxuIgogICAgICAgICAgICAgICAg
IuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuIgogICAgICAgICAgICAgICAgIioqRnJlbmNo
IERvbWFpbnM6KipcbiIKICAgICAgICAgICAgICAgIGYie2Zvcm1hdF9kb21haW5zKEZSRU5DSF9E
T01BSU5TKX1cbiIKICAgICAgICAgICAgICAgICLilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBc
biIKICAgICAgICAgICAgICAgICIqKlJ1c3NpYW4gRG9tYWluczoqKlxuIgogICAgICAgICAgICAg
ICAgZiJ7Zm9ybWF0X2RvbWFpbnMoUlVTU0lBTl9ET01BSU5TKX1cbiIKICAgICAgICAgICAgICAg
ICLilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiIKICAgICAgICAgICAgICAgICIqKkNoaW5l
c2UgRG9tYWluczoqKlxuIgogICAgICAgICAgICAgICAgZiJ7Zm9ybWF0X2RvbWFpbnMoQ0hJTkVT
RV9ET01BSU5TKX1cbiIKICAgICAgICAgICAgICAgICLilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIBcbiIKICAgICAgICAgICAgICAgICIqKkphcGFuZXNlIERvbWFpbnM6KipcbiIKICAgICAgICAg
ICAgICAgIGYie2Zvcm1hdF9kb21haW5zKEpBUEFORVNFX0RPTUFJTlMpfVxuIgogICAgICAgICAg
ICAgICAgIuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuIgogICAgICAgICAgICAgICAgIioq
U3VwcG9ydGVkIFNlcnZpY2VzICgyMDArKToqKlxuIgogICAgICAgICAgICAgICAgImBgYFxuIgog
ICAgICAgICAgICAgICAgKyAiLCAiLmpvaW4oc29ydGVkKEFMTF9TRVJWSUNFX01BUFBJTkcua2V5
cygpKSkKICAgICAgICAgICAgICAgICsgIlxuYGBgIgogICAgICAgICAgICApCiAgICAgICAgICAg
IHNlcnZpY2VzX3RleHQgPSBkb21haW5zCiAgICAgICAgICAgIAogICAgICAgIGVtYmVkID0gY3Jl
YXRlX2VtYmVkKAogICAgICAgICAgICB0aXRsZT0i8J+MkCBTdXBwb3J0ZWQgU2VydmljZXMgJiBE
b21haW5zIiwKICAgICAgICAgICAgZGVzY3JpcHRpb249c2VydmljZXNfdGV4dAogICAgICAgICkK
ICAgICAgICBhd2FpdCBpbnRlcmFjdGlvbi5yZXNwb25zZS5zZW5kX21lc3NhZ2UoZW1iZWQ9ZW1i
ZWQsIGVwaGVtZXJhbD1UcnVlKQoKICAgIEBkaXNjb3JkLnVpLmJ1dHRvbihsYWJlbD0iQ29tbWFu
ZHMiLCBzdHlsZT1kaXNjb3JkLkJ1dHRvblN0eWxlLnN1Y2Nlc3MsIGN1c3RvbV9pZD0iY29tbWFu
ZHNfYnRuIiwgZW1vamk9IvCfkrsiKQogICAgYXN5bmMgZGVmIGNvbW1hbmRzX2J1dHRvbihzZWxm
LCBpbnRlcmFjdGlvbjogZGlzY29yZC5JbnRlcmFjdGlvbiwgYnV0dG9uOiBkaXNjb3JkLnVpLkJ1
dHRvbik6CiAgICAgICAgY29tbWFuZHNfbGlzdCA9IFsKICAgICAgICAgICAgImAvY2hlY2tgIC0g
VmVyaWZ5IGFjY291bnRzIGZyb20gZmlsZSIsCiAgICAgICAgICAgICJgL3Nwb25zb3ItY2hlY2tg
IC0gTGltaXRlZCBjaGVja2luZyAoc3BvbnNvcikiLAogICAgICAgICAgICAiYC9zdG9wYCAtIENh
bmNlbCBjdXJyZW50IG9wZXJhdGlvbiIsCiAgICAgICAgICAgICJgL3RyaWFsYCAtIEdldCBmcmVl
IGFjY2VzcyIsCiAgICAgICAgICAgICJgL2xlYWRlcmJvYXJkYCAtIFZpZXcgc2VydmljZSBoaXRz
IiwKICAgICAgICAgICAgImAvY3VzdG9tc2VhcmNoYCAtIFNlYXJjaCBpbmJveGVzIiwKICAgICAg
ICAgICAgImAvaW5mb2AgLSBTaG93IHRoaXMgaW5mb3JtYXRpb24gcGFuZWwiLAogICAgICAgICAg
ICAiYCFsb2NrYC9gIXVubG9ja2AgLSAoT3duZXJzIG9ubHkpIiwKICAgICAgICAgICAgImAhd2hp
dGVsaXN0IGFkZC9yZW1vdmVgIC0gKE93bmVycyBvbmx5KSIKICAgICAgICBdCiAgICAgICAgCiAg
ICAgICAgaWYgc2VsZi5pc19zcG9uc29yOgogICAgICAgICAgICBjb21tYW5kc19saXN0ID0gWwog
ICAgICAgICAgICAgICAgImAvc3BvbnNvci1jaGVja2AgLSBMaW1pdGVkIGFjY291bnQgY2hlY2tp
bmciLAogICAgICAgICAgICAgICAgImAvc3RvcGAgLSBDYW5jZWwgY3VycmVudCBvcGVyYXRpb24i
LAogICAgICAgICAgICAgICAgImAvdHJpYWxgIC0gR2V0IGZyZWUgcHJlbWl1bSBhY2Nlc3MiLAog
ICAgICAgICAgICAgICAgImAvaW5mb2AgLSBTaG93IHRoaXMgaW5mb3JtYXRpb24gcGFuZWwiCiAg
ICAgICAgICAgIF0KICAgICAgICAgICAgCiAgICAgICAgZW1iZWQgPSBjcmVhdGVfZW1iZWQoCiAg
ICAgICAgICAgIHRpdGxlPSLwn5K7IEF2YWlsYWJsZSBDb21tYW5kcyIsCiAgICAgICAgICAgIGRl
c2NyaXB0aW9uPSJcbiIuam9pbihjb21tYW5kc19saXN0KQogICAgICAgICkKICAgICAgICBhd2Fp
dCBpbnRlcmFjdGlvbi5yZXNwb25zZS5zZW5kX21lc3NhZ2UoZW1iZWQ9ZW1iZWQsIGVwaGVtZXJh
bD1UcnVlKQoKQGJvdC50cmVlLmNvbW1hbmQobmFtZT0iaW5mbyIsIGRlc2NyaXB0aW9uPSJHZXQg
aW5mb3JtYXRpb24gYWJvdXQgdGhlIGJvdCBhbmQgaXRzIGZlYXR1cmVzIikKYXN5bmMgZGVmIGlu
Zm9fY29tbWFuZChpbnRlcmFjdGlvbjogZGlzY29yZC5JbnRlcmFjdGlvbik6CiAgICAiIiJEaXNw
bGF5IGluZm9ybWF0aW9uIGFib3V0IHRoZSBib3Qgd2l0aCBpbnRlcmFjdGl2ZSBidXR0b25zIiIi
CiAgICAjIENoZWNrIGlmIHVzZXIgaXMgaW4gb3JpZ2luYWwgc2VydmVyCiAgICBndWlsZCA9IGJv
dC5nZXRfZ3VpbGQoT1JJR0lOQUxfU0VSVkVSX0lEKQogICAgbWVtYmVyID0gZ3VpbGQuZ2V0X21l
bWJlcihpbnRlcmFjdGlvbi51c2VyLmlkKSBpZiBndWlsZCBlbHNlIE5vbmUKICAgIGlzX3Nwb25z
b3IgPSBtZW1iZXIgaXMgTm9uZSBhbmQgbm90IGlzX3ByZW1pdW1fdXNlcihpbnRlcmFjdGlvbi51
c2VyLmlkKQogICAgCiAgICBkZXNjcmlwdGlvbiA9ICgKICAgICAgICAiV2VsY29tZSB0byB0aGUg
R0hQIENoZWNrZXIhIFRoaXMgcG93ZXJmdWwgdG9vbCBhbGxvd3MgeW91IHRvIHZlcmlmeSBhY2Nv
dW50IGNyZWRlbnRpYWxzICIKICAgICAgICAiYW5kIHNjYW4gaW5ib3hlcyBmb3Igc2VydmljZS1z
cGVjaWZpYyBlbWFpbHMuXG5cbiIKICAgICkKICAgIAogICAgaWYgaXNfc3BvbnNvcjoKICAgICAg
ICBkZXNjcmlwdGlvbiArPSAoCiAgICAgICAgICAgICLwn5SSICoqWW91J3JlIHVzaW5nIHRoZSBs
aW1pdGVkIHNwb25zb3IgdmVyc2lvbioqXG4iCiAgICAgICAgICAgICJTb21lIGZlYXR1cmVzIGFy
ZSByZXN0cmljdGVkLiBKb2luIG91ciBzZXJ2ZXIgZm9yIGZ1bGwgYWNjZXNzIVxuXG4iCiAgICAg
ICAgKQogICAgZWxzZToKICAgICAgICB3aGl0ZWxpc3RlZCA9IGlzX3doaXRlbGlzdGVkKGludGVy
YWN0aW9uLnVzZXIuaWQpCiAgICAgICAgZGVzY3JpcHRpb24gKz0gZiLinKggKipZb3UgaGF2ZSBh
Y2Nlc3MgdG8gcHJlbWl1bSBmZWF0dXJlcyEgV2hpdGVsaXN0ZWQ6IHsn4pyFJyBpZiB3aGl0ZWxp
c3RlZCBlbHNlICfinYwnfSoqXG5cbiIKICAgIAogICAgZW1iZWQgPSBjcmVhdGVfZW1iZWQoCiAg
ICAgICAgdGl0bGU9IkdIUCBDaGVja2VyIEluZm9ybWF0aW9uIENlbnRlciIsCiAgICAgICAgZGVz
Y3JpcHRpb249ZGVzY3JpcHRpb24KICAgICkKICAgIGVtYmVkLnNldF9mb290ZXIodGV4dD0icG93
ZXJlZCBieSAqKkxvYXlhbCBBbHRzKioiKQogICAgdmlldyA9IEluZm9WaWV3KGlzX3Nwb25zb3I9
aXNfc3BvbnNvcikKICAgIGF3YWl0IGludGVyYWN0aW9uLnJlc3BvbnNlLnNlbmRfbWVzc2FnZShl
bWJlZD1lbWJlZCwgdmlldz12aWV3KQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICAgICAgICAg
ICAgICAgICAgICAgQ09NTUFORDogSW52aXRlCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQGJvdC50
cmVlLmNvbW1hbmQobmFtZT0iaW52aXRlIiwgZGVzY3JpcHRpb249IkdldCB0aGUgYm90IGludml0
ZSBsaW5rIikKYXN5bmMgZGVmIGludml0ZV9jb21tYW5kKGludGVyYWN0aW9uOiBkaXNjb3JkLklu
dGVyYWN0aW9uKSAtPiBOb25lOgogICAgIiIiU2VuZCB0aGUgYm90IGludml0ZSBsaW5rIiIiCiAg
ICBlbWJlZCA9IGNyZWF0ZV9lbWJlZCgKICAgICAgICB0aXRsZT0iSW52aXRlIEdIUCBDaGVja2Vy
IEJvdCIsCiAgICAgICAgZGVzY3JpcHRpb249KAogICAgICAgICAgICAiQ2xpY2sgdGhlIGJ1dHRv
biBiZWxvdyB0byBpbnZpdGUgdGhlIEdIUCBDaGVja2VyIEJvdCB0byB5b3VyIHNlcnZlciFcbiIK
ICAgICAgICAgICAgIk1ha2Ugc3VyZSB5b3UgaGF2ZSB0aGUgbmVjZXNzYXJ5IHBlcm1pc3Npb25z
IHRvIGFkZCBib3RzLiIKICAgICAgICApLAogICAgICAgIGNvbG9yPWRpc2NvcmQuQ29sb3IuYmx1
ZSgpCiAgICApCiAgICBlbWJlZC5zZXRfZm9vdGVyKHRleHQ9InBvd2VyZWQgYnkgKipMb2F5YWwg
QWx0cyoqIikKICAgIAogICAgdmlldyA9IGRpc2NvcmQudWkuVmlldygpCiAgICB2aWV3LmFkZF9p
dGVtKGRpc2NvcmQudWkuQnV0dG9uKAogICAgICAgIGxhYmVsPSJJbnZpdGUgQm90IiwKICAgICAg
ICB1cmw9Imh0dHBzOi8vZGlzY29yZC5jb20vb2F1dGgyL2F1dGhvcml6ZT9jbGllbnRfaWQ9MTM4
MjQ5MjYxNjM1MjA3MTY4MSZwZXJtaXNzaW9ucz04JmludGVncmF0aW9uX3R5cGU9MCZzY29wZT1i
b3QiLAogICAgICAgIHN0eWxlPWRpc2NvcmQuQnV0dG9uU3R5bGUubGluawogICAgKSkKICAgIAog
ICAgYXdhaXQgaW50ZXJhY3Rpb24ucmVzcG9uc2Uuc2VuZF9tZXNzYWdlKGVtYmVkPWVtYmVkLCB2
aWV3PXZpZXcsIGVwaGVtZXJhbD1UcnVlKQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICAgICAg
ICAgICAgICAgICAgICAgQ09NTUFORCBPd25lciBvbmx5OiBMaXN0IE93bmVyIENvbW1hbmRzCiMg
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KQGJvdC50cmVlLmNvbW1hbmQobmFtZT0ib3duZXItY29tbWFu
ZHMiLCBkZXNjcmlwdGlvbj0iTGlzdCBhbGwgb3duZXItb25seSBjb21tYW5kcyIpCmFzeW5jIGRl
ZiBvd25lcl9jb21tYW5kc19jb21tYW5kKGludGVyYWN0aW9uOiBkaXNjb3JkLkludGVyYWN0aW9u
KSAtPiBOb25lOgogICAgIiIiTGlzdCBhbGwgY29tbWFuZHMgdGhhdCBhcmUgcmVzdHJpY3RlZCB0
byB0aGUgYm90IG93bmVyIiIiCiAgICBpZiBpbnRlcmFjdGlvbi51c2VyLmlkIG5vdCBpbiBPV05F
UlM6CiAgICAgICAgYXdhaXQgaW50ZXJhY3Rpb24ucmVzcG9uc2Uuc2VuZF9tZXNzYWdlKAogICAg
ICAgICAgICAiWW91IGRvIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gdXNlIHRoaXMgY29tbWFuZC4i
LAogICAgICAgICAgICBlcGhlbWVyYWw9VHJ1ZQogICAgICAgICkKICAgICAgICByZXR1cm4KCiAg
ICBvd25lcl9jb21tYW5kcyA9IFsKICAgICAgICAiYC9zZXQtc3RhdHVzIDxzdGF0dXM+YCAtIFNl
dCB0aGUgYm90J3Mgc3RhdHVzIiwKICAgICAgICAiYC9yZW1vdmUtYm90LWV2ZXJ5d2hlcmVgIC0g
UmVtb3ZlIHRoZSBib3QgZnJvbSBhbGwgc2VydmVycyIsCiAgICAgICAgImAvcmVzdGFydGAgLSBS
ZXN0YXJ0IHRoZSBib3QiLAogICAgICAgICJgL3NodXRkb3duYCAtIFNodXRkb3duIHRoZSBib3Qi
LAogICAgICAgICJgL3VwZGF0ZWAgLSBVcGRhdGUgdGhlIGJvdCB0byB0aGUgbGF0ZXN0IHZlcnNp
b24iLAogICAgICAgICJgL2xpc3Qtc2VydmVyc2AgLSBMaXN0IGFsbCBzZXJ2ZXJzIHRoZSBib3Qg
aXMgaW4iLAogICAgICAgICJgL3JlbG9hZGNvbmZpZ2AgLSBSZWxvYWQgdGhlIGNvbmZpZ3VyYXRp
b24gZnJvbSBjb25maWcuanNvbiIKICAgIF0KCiAgICBlbWJlZCA9IGNyZWF0ZV9lbWJlZCgKICAg
ICAgICB0aXRsZT0iT3duZXIgQ29tbWFuZHMiLAogICAgICAgIGRlc2NyaXB0aW9uPSJcbiIuam9p
bihvd25lcl9jb21tYW5kcyksCiAgICAgICAgY29sb3I9ZGlzY29yZC5Db2xvci5yZWQoKQogICAg
KQogICAgCiAgICBhd2FpdCBpbnRlcmFjdGlvbi5yZXNwb25zZS5zZW5kX21lc3NhZ2UoZW1iZWQ9
ZW1iZWQsIGVwaGVtZXJhbD1UcnVlKQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICAgICAgICAg
ICAgICAgICAgICAgQ09NTUFORCBPd25lciBvbmx5OiBTZXQgQm90IFN0YXR1cwojID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CkBib3QuY29tbWFuZChuYW1lPSJzZXQtc3RhdHVzIikKYXN5bmMgZGVmIHNl
dF9zdGF0dXMoY3R4LCAqLCBzdGF0dXM6IHN0cik6CiAgICAiIiJTZXQgdGhlIGJvdCdzIHN0YXR1
cyAoT3duZXIgb25seSkiIiIKICAgIGlmIGN0eC5hdXRob3IuaWQgbm90IGluIE9XTkVSUzoKICAg
ICAgICBhd2FpdCBjdHguc2VuZCgiWW91IGRvIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gdXNlIHRo
aXMgY29tbWFuZC4iLCBkZWxldGVfYWZ0ZXI9NSkKICAgICAgICByZXR1cm4KCiAgICB0cnk6CiAg
ICAgICAgYXdhaXQgYm90LmNoYW5nZV9wcmVzZW5jZShhY3Rpdml0eT1kaXNjb3JkLkdhbWUobmFt
ZT1zdGF0dXMpKQogICAgICAgIGF3YWl0IGN0eC5zZW5kKGYi4pyFIEJvdCBzdGF0dXMgc2V0IHRv
OiB7c3RhdHVzfSIsIGRlbGV0ZV9hZnRlcj01KQogICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgog
ICAgICAgIGF3YWl0IGN0eC5zZW5kKGYi4p2MIEZhaWxlZCB0byBzZXQgc3RhdHVzOiB7c3RyKGUp
fSIsIGRlbGV0ZV9hZnRlcj0xMCkKCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyAgICAgICAgICAg
ICAgICAgICAgIENPTU1BTkQgT3duZXIgb25seTogUmVtb3ZlIEJvdCBmcm9tIGFsbCBTZXJ2ZXJz
CiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KQGJvdC5jb21tYW5kKG5hbWU9InJlbW92ZS1ib3QtZXZl
cnl3aGVyZSIpCmFzeW5jIGRlZiByZW1vdmVfYm90X2V2ZXJ5d2hlcmUoY3R4KToKICAgICIiIlJl
bW92ZSB0aGUgYm90IGZyb20gYWxsIHNlcnZlcnMgKE93bmVyIG9ubHkpIiIiCiAgICBpZiBjdHgu
YXV0aG9yLmlkIG5vdCBpbiBPV05FUlM6CiAgICAgICAgYXdhaXQgY3R4LnNlbmQoIllvdSBkbyBu
b3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHVzZSB0aGlzIGNvbW1hbmQuIiwgZGVsZXRlX2FmdGVyPTUp
CiAgICAgICAgcmV0dXJuCgogICAgZ3VpbGRzID0gYm90Lmd1aWxkcwogICAgaWYgbm90IGd1aWxk
czoKICAgICAgICBhd2FpdCBjdHguc2VuZCgiVGhlIGJvdCBpcyBub3QgaW4gYW55IHNlcnZlcnMu
IiwgZGVsZXRlX2FmdGVyPTUpCiAgICAgICAgcmV0dXJuCgogICAgZm9yIGd1aWxkIGluIGd1aWxk
czoKICAgICAgICB0cnk6CiAgICAgICAgICAgIGF3YWl0IGd1aWxkLmxlYXZlKCkKICAgICAgICAg
ICAgcHJpbnQoZiJMZWZ0IHtndWlsZC5uYW1lfSAoe2d1aWxkLmlkfSkiKQogICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgcHJpbnQoZiJGYWlsZWQgdG8gbGVhdmUge2d1
aWxkLm5hbWV9ICh7Z3VpbGQuaWR9KToge2V9IikKCiAgICBhd2FpdCBjdHguc2VuZCgi4pyFIFRo
ZSBib3QgaGFzIGxlZnQgYWxsIHNlcnZlcnMuIiwgZGVsZXRlX2FmdGVyPTUpCgojID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CiMgICAgICAgICAgICAgICAgICAgICBDT01NQU5EIE93bmVyIG9ubHk6IFJl
c3RhcnQgQm90CiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQGJvdC5jb21tYW5kKG5hbWU9InJlc3Rh
cnQiKQphc3luYyBkZWYgcmVzdGFydF9ib3QoY3R4KToKICAgICIiIlJlc3RhcnQgdGhlIGJvdCAo
T3duZXIgb25seSkiIiIKICAgIGlmIGN0eC5hdXRob3IuaWQgbm90IGluIE9XTkVSUzoKICAgICAg
ICBhd2FpdCBjdHguc2VuZCgiWW91IGRvIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gdXNlIHRoaXMg
Y29tbWFuZC4iLCBkZWxldGVfYWZ0ZXI9NSkKICAgICAgICByZXR1cm4KCiAgICBhd2FpdCBjdHgu
c2VuZCgi8J+UhCBSZXN0YXJ0aW5nIHRoZSBib3QuLi4iLCBkZWxldGVfYWZ0ZXI9NSkKICAgIGF3
YWl0IGJvdC5jbG9zZSgpCiAgICBvcy5leGVjdihzeXMuZXhlY3V0YWJsZSwgW3N5cy5leGVjdXRh
YmxlXSArIHN5cy5hcmd2KQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICAgICAgICAgICAgICAg
ICAgICAgQ09NTUFORCBPd25lciBvbmx5OiBTaHV0ZG93biBCb3QKIyA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpAYm90LmNvbW1hbmQobmFtZT0ic2h1dGRvd24iKQphc3luYyBkZWYgc2h1dGRvd25fYm90
KGN0eCk6CiAgICAiIiJTaHV0ZG93biB0aGUgYm90IChPd25lciBvbmx5KSIiIgogICAgaWYgY3R4
LmF1dGhvci5pZCBub3QgaW4gT1dORVJTOgogICAgICAgIGF3YWl0IGN0eC5zZW5kKCJZb3UgZG8g
bm90IGhhdmUgcGVybWlzc2lvbiB0byB1c2UgdGhpcyBjb21tYW5kLiIsIGRlbGV0ZV9hZnRlcj01
KQogICAgICAgIHJldHVybgoKICAgIGF3YWl0IGN0eC5zZW5kKCLwn5SSIFNodXR0aW5nIGRvd24g
dGhlIGJvdC4uLiIsIGRlbGV0ZV9hZnRlcj01KQogICAgYXdhaXQgYm90LmNsb3NlKCkKICAgIHN5
cy5leGl0KDApCgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgICAgICAgICAgICAgICAgICAgICBD
T01NQU5EIE93bmVyIG9ubHk6IFVwZGF0ZSBCb3QKIyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKQGJv
dC5jb21tYW5kKG5hbWU9InVwZGF0ZSIpCmFzeW5jIGRlZiB1cGRhdGVfYm90KGN0eCk6CiAgICAi
IiJVcGRhdGUgdGhlIGJvdCB0byB0aGUgbGF0ZXN0IHZlcnNpb24gKE93bmVyIG9ubHkpIiIiCiAg
ICBpZiBjdHguYXV0aG9yLmlkIG5vdCBpbiBPV05FUlM6CiAgICAgICAgYXdhaXQgY3R4LnNlbmQo
IllvdSBkbyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHVzZSB0aGlzIGNvbW1hbmQuIiwgZGVsZXRl
X2FmdGVyPTUpCiAgICAgICAgcmV0dXJuCgogICAgYXdhaXQgY3R4LnNlbmQoIvCflIQgVXBkYXRp
bmcgdGhlIGJvdC4uLiIsIGRlbGV0ZV9hZnRlcj01KQogICAgCiAgICB0cnk6CiAgICAgICAgIyBQ
dWxsIGxhdGVzdCBjaGFuZ2VzIGZyb20gdGhlIHJlcG9zaXRvcnkKICAgICAgICByZXN1bHQgPSBz
dWJwcm9jZXNzLnJ1bihbImdpdCIsICJwdWxsIl0sIGNhcHR1cmVfb3V0cHV0PVRydWUsIHRleHQ9
VHJ1ZSkKICAgICAgICBpZiByZXN1bHQucmV0dXJuY29kZSAhPSAwOgogICAgICAgICAgICBhd2Fp
dCBjdHguc2VuZChmIuKdjCBVcGRhdGUgZmFpbGVkOiB7cmVzdWx0LnN0ZGVycn0iLCBkZWxldGVf
YWZ0ZXI9MTApCiAgICAgICAgICAgIHJldHVybgogICAgICAgIAogICAgICAgIGF3YWl0IGN0eC5z
ZW5kKCLinIUgQm90IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5ISBSZXN0YXJ0aW5nLi4uIiwgZGVsZXRl
X2FmdGVyPTUpCiAgICAgICAgYXdhaXQgcmVzdGFydF9ib3QoY3R4KQogICAgZXhjZXB0IEV4Y2Vw
dGlvbiBhcyBlOgogICAgICAgIGF3YWl0IGN0eC5zZW5kKGYi4p2MIEFuIGVycm9yIG9jY3VycmVk
IHdoaWxlIHVwZGF0aW5nOiB7c3RyKGUpfSIsIGRlbGV0ZV9hZnRlcj0xMCkKCiMgPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KIyAgICAgICAgICAgICAgICAgICAgIENPTU1BTkQgT3duZXIgb25seTogbGlz
dCBhbGwgc2VydmVycwojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBib3QuY29tbWFuZChuYW1lPSJs
aXN0LXNlcnZlcnMiLCBkZXNjcmlwdGlvbj0iTGlzdCBhbGwgc2VydmVycyB0aGUgYm90IGlzIGlu
IChPd25lciBvbmx5KSIpCmFzeW5jIGRlZiBsaXN0X3NlcnZlcnMoY3R4KToKICAgIGlmIGN0eC5h
dXRob3IuaWQgbm90IGluIE9XTkVSUzoKICAgICAgICBhd2FpdCBjdHguc2VuZCgiWW91IGRvIG5v
dCBoYXZlIHBlcm1pc3Npb24gdG8gdXNlIHRoaXMgY29tbWFuZC4iLCBkZWxldGVfYWZ0ZXI9NSkK
ICAgICAgICByZXR1cm4KCiAgICBndWlsZHMgPSBib3QuZ3VpbGRzCiAgICBpZiBub3QgZ3VpbGRz
OgogICAgICAgIGF3YWl0IGN0eC5zZW5kKCJUaGUgYm90IGlzIG5vdCBpbiBhbnkgc2VydmVycy4i
LCBkZWxldGVfYWZ0ZXI9NSkKICAgICAgICByZXR1cm4KCiAgICBlbWJlZCA9IGNyZWF0ZV9lbWJl
ZCgKICAgICAgICB0aXRsZT0iQm90IFNlcnZlcnMiLAogICAgICAgIGRlc2NyaXB0aW9uPSJcbiIu
am9pbihbZiJ7Z3VpbGQubmFtZX0gKElEOiB7Z3VpbGQuaWR9KSIgZm9yIGd1aWxkIGluIGd1aWxk
c10pLAogICAgICAgIGNvbG9yPWRpc2NvcmQuQ29sb3IuYmx1ZSgpCiAgICApCiAgICAKICAgIGF3
YWl0IGN0eC5zZW5kKGVtYmVkPWVtYmVkKQoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICAgICAg
ICAgICAgICAgICAgICAgQk9UIEVYRUNVVElPTgojID09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmlmIF9f
bmFtZV9fID09ICJfX21haW5fXyI6CiAgICAjIENyZWF0ZSByZXN1bHRzIGZvbGRlciBpZiBpdCBk
b2Vzbid0IGV4aXN0CiAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoUkVTVUxUU19GT0xERVIpOgog
ICAgICAgIG9zLm1ha2VkaXJzKFJFU1VMVFNfRk9MREVSKQogICAgYm90LnJ1bigiTVRNNE1qUTVN
all4TmpNMU1qQTNNVFk0TVEuR2RHclFRLlVCZ1ZfanlUN1hUVGprbWVHYlk5cXJiYUhaeTh6U2hY
Z2FvbndBIik=
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment