TicketOverviewHooked
5.0.6
5.0.x
Perl-Services.de
http://www.perl-services.de
Ermöglicht unterschiedliche Farben für Zeilen in der Ticketübersicht (Small).
Show rows in ticket overview (small) with different background colors.
GNU AFFERO GENERAL PUBLIC LICENSE Version 3, November 2007
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX2NvbmZpZyB2ZXJz
aW9uPSIxLjAiIGluaXQ9IkNvbmZpZyI+CiAgICA8Q1ZTPiRJZDogVGlja2V0T3ZlcnZpZXdIb29r
ZWQueG1sLHYgMS4xIDIwMTEvMDIvMTIgMjI6NTc6MjIgcmViIEV4cCAkPC9DVlM+CiAgICA8Q29u
ZmlnSXRlbSBOYW1lPSJUaWNrZXRPdmVydmlldzo6SG9va3MiIFJlcXVpcmVkPSIwIiBWYWxpZD0i
MCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIHRoZSBob29r
cyBmb3IgdGhlIHRpY2tldCBvdmVydmlldy4gQXMga2V5cyB0aGUgcHJpb3JpdGllcyBhcmUgdXNl
ZCAtIHRoZSBsb3dlciB0aGUgbnVtYmVyIHRoZSBtb3JlIGltcG9ydGFudC4gVGhlIG1vZHVsZXMg
dGhhdCBpbXBsZW1lbnRzIHRoZSBob29rcyBhcmUgdXNlZCBhcyB2YWx1ZS48L0Rlc2NyaXB0aW9u
PgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5UaWNrZXRP
dmVydmlldzwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgog
ICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMDAxIj5LZXJuZWw6OlN5c3RlbTo6VGlja2V0T3Zl
cnZpZXc6Okhvb2tzOjpRdWV1ZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8
L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJIb29rOjpK
dW5rIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xh
dGFibGU9IjEiPkRlZmluZSB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBqdW5rIHRpY2tldHMuIChJ
dCBoYXMgdG8gYmUgdGhlIGh0bWwgY29sb3JzKTwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3Vw
PlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPlRpY2tldE92ZXJ2aWV3PC9TdWJHcm91
cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXltBLUZhLWYw
LTldezZ9JCI+Y2RjZGNkPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJ
dGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iSG9vazo6UXVldWVzIiBSZXF1aXJlZD0iMCIgVmFs
aWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSB0aGUg
YmFja2dyb3VuZCBjb2xvciBvZiB0aWNrZXRzIGJhc2VkIG9uIHF1ZXVlcy4gKEl0IGhhcyB0byBi
ZSB0aGUgaHRtbCBjb2xvcnMpPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9H
cm91cD4KICAgICAgICA8U3ViR3JvdXA+VGlja2V0T3ZlcnZpZXc8L1N1Ykdyb3VwPgogICAgICAg
IDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0i
SnVuayI+ODA4MDgwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNaXNjIj4wMGZm
MDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0Nv
bmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJIb29rOjpQZW5kaW5nVGltZSIgUmVxdWly
ZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5E
ZWZpbmUgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGlja2V0cyB3aXRoIG5lZ2F0aXZlIHJlbWlu
ZGVyIHRpbWUuIChJdCBoYXMgdG8gYmUgdGhlIGh0bWwgY29sb3JzKTwvRGVzY3JpcHRpb24+CiAg
ICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPlRpY2tldE92ZXJ2
aWV3PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdl
eD0iXltBLUZhLWYwLTldezZ9JCI+ZmYwMDAwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgog
ICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0T3ZlcnZpZXc6Okhv
b2tzQ29uZmlnIyMjUGVuZGluZ1RpbWUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAg
PERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIGZvciBQZW5kaW5nVGltZSBob29r
LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRpY2tldDwvR3JvdXA+CiAgICAgICAgPFN1
Ykdyb3VwPlRpY2tldE92ZXJ2aWV3PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAg
ICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbHVtbiI+U3RhdGU8L0l0
ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0
ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJIb29rOjpUeXBlcyIgUmVxdWlyZWQ9IjAiIFZhbGlk
PSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgdGhlIGJh
Y2tncm91bmQgY29sb3Igb2YgdGlja2V0cyBiYXNlZCBvbiB0eXBlcy4gKEl0IGhhcyB0byBiZSB0
aGUgaHRtbCBjb2xvcnMpPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+VGlja2V0PC9Hcm91
cD4KICAgICAgICA8U3ViR3JvdXA+VGlja2V0T3ZlcnZpZXc8L1N1Ykdyb3VwPgogICAgICAgIDxT
ZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVm
YXVsdCI+ODA4MDgwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJbmNpZGVudCI+
MDBmZjAwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAg
PC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iSG9vazo6VHlwZXM6OkZvbnQiIFJl
cXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0i
MSI+RGVmaW5lIHRoZSBmb250IGNvbG9yIG9mIHRpY2tldHMgYmFzZWQgb24gdHlwZXMuIChJdCBo
YXMgdG8gYmUgdGhlIGh0bWwgY29sb3JzKTwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlRp
Y2tldDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPlRpY2tldE92ZXJ2aWV3PC9TdWJHcm91cD4K
ICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRl
bSBLZXk9IkRlZmF1bHQiPjAwMDAwMDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0i
SW5jaWRlbnQiPmZmZmZmZjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0
dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9Ikhvb2s6OkdlbmVy
aWM6OkF0dHJpYnV0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRp
b24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgdGhlIGF0dHJpYnV0ZSB0aGF0IGlzIHVzZWQgZm9y
IHRoZSBnZW5lcmljIGhvb2s8L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dy
b3VwPgogICAgICAgIDxTdWJHcm91cD5UaWNrZXRPdmVydmlldzwvU3ViR3JvdXA+CiAgICAgICAg
PFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+TG9jazwvU3RyaW5nPgogICAg
ICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9Ikhv
b2s6OkdlbmVyaWMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9u
IFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRpY2tldHMg
YmFzZWQgb24gdGhlIGdlbmVyaWMgYXR0cmlidXRlLiAoSXQgaGFzIHRvIGJlIHRoZSBodG1sIGNv
bG9ycyk8L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAg
IDxTdWJHcm91cD5UaWNrZXRPdmVydmlldzwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAg
ICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJsb2NrIj44MDgwODA8
L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZp
Z0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJIb29rOjpHZW5lcmljOjpGb250IiBSZXF1aXJl
ZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRl
ZmluZSB0aGUgZm9udCBjb2xvciBvZiB0aWNrZXRzIGJhc2VkIG9uIHRoZSBnZW5lcmljIGF0dHJp
YnV0ZS4gKEl0IGhhcyB0byBiZSB0aGUgaHRtbCBjb2xvcnMpPC9EZXNjcmlwdGlvbj4KICAgICAg
ICA8R3JvdXA+VGlja2V0PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+VGlja2V0T3ZlcnZpZXc8
L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAg
ICAgICAgIDxJdGVtIEtleT0ibG9jayI+MDAwMDAwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+
CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgo8L290cnNfY29uZmlnPgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8K
IyBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNiBQZXJsLVNlcnZpY2VzLmRlLCBodHRwOi8vcGVybC1z
ZXJ2aWNlcy5kZQojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8g
V0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZv
ciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRo
aXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoK
cGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RGFzaGJvYXJkOjpUaWNrZXRHZW5lcmljOwoK
dXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNo
ZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3Vy
ICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAl
UGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkg
JFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBu
ZWVkZWQgcGFyYW1ldGVycwogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZyBOYW1lIFVzZXJJ
RCkpIHsKICAgICAgICBkaWUgIkdvdCBubyAkTmVlZGVkISIgaWYgKCAhJFNlbGYtPnskTmVlZGVk
fSApOwogICAgfQoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0g
JEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIG15
ICRSZW1vdmVGaWx0ZXJzID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1JlbW92
ZUZpbHRlcnMnICkKICAgICAgICB8fCAkUGFyYW17UmVtb3ZlRmlsdGVyc30KICAgICAgICB8fCAw
OwoKICAgICMgZ2V0IHNvcnRpbmcgcGFyYW1zCiAgICBmb3IgbXkgJEl0ZW0gKHF3KFNvcnRCeSBP
cmRlckJ5KSkgewogICAgICAgICRTZWxmLT57JEl0ZW19ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJh
bSggUGFyYW0gPT4gJEl0ZW0gKSB8fCAkUGFyYW17JEl0ZW19OwogICAgfQoKICAgICMgc2V0IGZp
bHRlciBzZXR0aW5ncwogICAgZm9yIG15ICRJdGVtIChxdyhDb2x1bW5GaWx0ZXIgR2V0Q29sdW1u
RmlsdGVyIEdldENvbHVtbkZpbHRlclNlbGVjdCkpIHsKICAgICAgICAkU2VsZi0+eyRJdGVtfSA9
ICRQYXJhbXskSXRlbX07CiAgICB9CgogICAgIyBzYXZlIGNvbHVtbiBmaWx0ZXJzCiAgICAkU2Vs
Zi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzfSAgICAgICAgID0gJ1VzZXJEYXNoYm9hcmRUaWNrZXRH
ZW5lcmljQ29sdW1uRmlsdGVycycgLiAkU2VsZi0+e05hbWV9OwogICAgJFNlbGYtPntQcmVmS2V5
Q29sdW1uRmlsdGVyc1JlYWxLZXlzfSA9ICdVc2VyRGFzaGJvYXJkVGlja2V0R2VuZXJpY0NvbHVt
bkZpbHRlcnNSZWFsS2V5cycgLiAkU2VsZi0+e05hbWV9OwoKICAgICMgZ2V0IG5lZWRlZCBvYmpl
Y3RzCiAgICBteSAkSlNPTk9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0
ZW06OkpTT04nKTsKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJu
ZWw6OkNvbmZpZycpOwogICAgbXkgJFVzZXJPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tl
cm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgaWYgKCRSZW1vdmVGaWx0ZXJzKSB7CiAgICAgICAg
JFVzZXJPYmplY3QtPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYt
PntVc2VySUR9LAogICAgICAgICAgICBLZXkgICAgPT4gJFNlbGYtPntQcmVmS2V5Q29sdW1uRmls
dGVyc30sCiAgICAgICAgICAgIFZhbHVlICA9PiAnJywKICAgICAgICApOwogICAgICAgICRVc2Vy
T2JqZWN0LT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNl
cklEfSwKICAgICAgICAgICAgS2V5ICAgID0+ICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnNS
ZWFsS2V5c30sCiAgICAgICAgICAgIFZhbHVlICA9PiAnJywKICAgICAgICApOwogICAgfQoKICAg
ICMganVzdCBpbiBjYXNlIG5ldyBmaWx0ZXIgdmFsdWVzIGFycml2ZQogICAgZWxzaWYgKAogICAg
ICAgIElzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0dldENvbHVtbkZpbHRlcn0gKQogICAgICAg
ICYmIElzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0gKQog
ICAgICAgICYmIElzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0NvbHVtbkZpbHRlcn0gKQogICAg
ICAgICkKICAgIHsKCiAgICAgICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCdEZW1vU3lzdGVt
JykgKSB7CgogICAgICAgICAgICAjIGNoZWNrIGlmIHRoZSB1c2VyIGhhcyBmaWx0ZXIgcHJlZmVy
ZW5jZXMgZm9yIHRoaXMgd2lkZ2V0CiAgICAgICAgICAgIG15ICVQcmVmZXJlbmNlcyA9ICRVc2Vy
T2JqZWN0LT5HZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+
e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRDb2x1bW5QcmVmVmFsdWVz
OwogICAgICAgICAgICBpZiAoICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5Q29sdW1uRmls
dGVyc30gfSApIHsKICAgICAgICAgICAgICAgICRDb2x1bW5QcmVmVmFsdWVzID0gJEpTT05PYmpl
Y3QtPkRlY29kZSgKICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICRQcmVmZXJlbmNlc3sgJFNl
bGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc30gfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgIFBSRUZWQUxVRVM6CiAgICAgICAgICAgIGZvciBteSAkQ29sdW1u
ICggc29ydCBrZXlzICV7ICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fSB9ICkgewogICAg
ICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0tPnskQ29sdW1u
fSBlcSAnRGVsZXRlRmlsdGVyJyApIHsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJENvbHVt
blByZWZWYWx1ZXMtPnskQ29sdW1ufTsKICAgICAgICAgICAgICAgICAgICBuZXh0IFBSRUZWQUxV
RVM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkQ29sdW1uUHJlZlZhbHVlcy0+
eyRDb2x1bW59ID0gJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJTZWxlY3R9LT57JENvbHVtbn07CiAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgICRVc2VyT2JqZWN0LT5TZXRQcmVmZXJlbmNlcygKICAg
ICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBL
ZXkgICAgPT4gJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc30sCiAgICAgICAgICAgICAgICBW
YWx1ZSAgPT4gJEpTT05PYmplY3QtPkVuY29kZSggRGF0YSA9PiAkQ29sdW1uUHJlZlZhbHVlcyAp
LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzYXZlIHJlYWwga2V5J3MgbmFtZQogICAg
ICAgICAgICBteSAkQ29sdW1uUHJlZlJlYWxLZXlzVmFsdWVzOwogICAgICAgICAgICBpZiAoICRQ
cmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc1JlYWxLZXlzfSB9ICkgewog
ICAgICAgICAgICAgICAgJENvbHVtblByZWZSZWFsS2V5c1ZhbHVlcyA9ICRKU09OT2JqZWN0LT5E
ZWNvZGUoCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiAkUHJlZmVyZW5jZXN7ICRTZWxmLT57
UHJlZktleUNvbHVtbkZpbHRlcnNSZWFsS2V5c30gfSwKICAgICAgICAgICAgICAgICk7CiAgICAg
ICAgICAgIH0KICAgICAgICAgICAgUkVBTEtFWVZBTFVFUzoKICAgICAgICAgICAgZm9yIG15ICRD
b2x1bW4gKCBzb3J0IGtleXMgJXsgJFNlbGYtPntDb2x1bW5GaWx0ZXJ9IH0gKSB7CiAgICAgICAg
ICAgICAgICBuZXh0IFJFQUxLRVlWQUxVRVMgaWYgISRDb2x1bW47CgogICAgICAgICAgICAgICAg
bXkgJERlbGV0ZUZpbHRlciA9IDA7CiAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRo
RGF0YSggJFNlbGYtPntDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn0gKSApIHsKICAgICAgICAgICAg
ICAgICAgICBpZiAoIGdyZXAgeyAkXyBlcSAnRGVsZXRlRmlsdGVyJyB9IEB7ICRTZWxmLT57Q29s
dW1uRmlsdGVyfS0+eyRDb2x1bW59IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICREZWxl
dGVGaWx0ZXIgPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgIGVsc2lmICggSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57Q29sdW1uRmls
dGVyfS0+eyRDb2x1bW59ICkgKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAg
ICAgICAgICAgICAgICAgZ3JlcCB7ICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59LT57
JF99IGVxICdEZWxldGVGaWx0ZXInIH0KICAgICAgICAgICAgICAgICAgICAgICAga2V5cyAleyAk
U2VsZi0+e0NvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICREZWxldGVG
aWx0ZXIgPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgICAgICBpZiAoJERlbGV0ZUZpbHRlcikgewogICAgICAgICAgICAgICAgICAgIGRlbGV0
ZSAkQ29sdW1uUHJlZlJlYWxLZXlzVmFsdWVzLT57JENvbHVtbn07CiAgICAgICAgICAgICAgICAg
ICAgZGVsZXRlICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59OwogICAgICAgICAgICAg
ICAgICAgIG5leHQgUkVBTEtFWVZBTFVFUzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICRDb2x1bW5QcmVmUmVhbEtleXNWYWx1ZXMtPnskQ29sdW1ufSA9ICRTZWxmLT57Q29sdW1u
RmlsdGVyfS0+eyRDb2x1bW59OwogICAgICAgICAgICB9CiAgICAgICAgICAgICRVc2VyT2JqZWN0
LT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJ
RH0sCiAgICAgICAgICAgICAgICBLZXkgICAgPT4gJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVy
c1JlYWxLZXlzfSwKICAgICAgICAgICAgICAgIFZhbHVlICA9PiAkSlNPTk9iamVjdC0+RW5jb2Rl
KCBEYXRhID0+ICRDb2x1bW5QcmVmUmVhbEtleXNWYWx1ZXMgKSwKICAgICAgICAgICAgKTsKCiAg
ICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgdGhlIHVzZXIgaGFzIGZpbHRlciBwcmVmZXJl
bmNlcyBmb3IgdGhpcyB3aWRnZXQKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRVc2VyT2JqZWN0LT5H
ZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsK
CiAgICAjIGdldCBjb2x1bW4gbmFtZXMgZnJvbSBQcmVmZXJlbmNlcwogICAgbXkgJFByZWZlcmVu
Y2VzQ29sdW1uRmlsdGVyczsKICAgIGlmICggJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlD
b2x1bW5GaWx0ZXJzfSB9ICkgewogICAgICAgICRQcmVmZXJlbmNlc0NvbHVtbkZpbHRlcnMgPSAk
SlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgICAgICBEYXRhID0+ICRQcmVmZXJlbmNlc3sgJFNl
bGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc30gfSwKICAgICAgICApOwogICAgfQoKICAgIGlmICgk
UHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzKSB7CiAgICAgICAgJFNlbGYtPntHZXRDb2x1bW5GaWx0
ZXJTZWxlY3R9ID0gJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVyczsKICAgICAgICBteSBAQ29sdW1u
RmlsdGVycyA9IGtleXMgJXskUHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzfTsgICAgIyMgbm8gY3Jp
dGljCiAgICAgICAgZm9yIG15ICRGaWVsZCAoQENvbHVtbkZpbHRlcnMpIHsKICAgICAgICAgICAg
JFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJ9LT57ICRGaWVsZCAuICRTZWxmLT57TmFtZX0gfSA9ICRQ
cmVmZXJlbmNlc0NvbHVtbkZpbHRlcnMtPnskRmllbGR9OwogICAgICAgIH0KICAgIH0KCiAgICAj
IGdldCBjb2x1bW4gcmVhbCBuYW1lcyBmcm9tIFByZWZlcmVuY2VzCiAgICBteSAkUHJlZmVyZW5j
ZXNDb2x1bW5GaWx0ZXJzUmVhbEtleXM7CiAgICBpZiAoICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQ
cmVmS2V5Q29sdW1uRmlsdGVyc1JlYWxLZXlzfSB9ICkgewogICAgICAgICRQcmVmZXJlbmNlc0Nv
bHVtbkZpbHRlcnNSZWFsS2V5cyA9ICRKU09OT2JqZWN0LT5EZWNvZGUoCiAgICAgICAgICAgIERh
dGEgPT4gJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzUmVhbEtleXN9
IH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVyc1Jl
YWxLZXlzKSB7CiAgICAgICAgbXkgQENvbHVtbkZpbHRlcnNSZWFsID0ga2V5cyAleyRQcmVmZXJl
bmNlc0NvbHVtbkZpbHRlcnNSZWFsS2V5c307ICAgICMjIG5vIGNyaXRpYwogICAgICAgIGZvciBt
eSAkRmllbGQgKEBDb2x1bW5GaWx0ZXJzUmVhbCkgewogICAgICAgICAgICAkU2VsZi0+e0NvbHVt
bkZpbHRlcn0tPnskRmllbGR9ID0gJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVyc1JlYWxLZXlzLT57
JEZpZWxkfTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgY3VycmVudCBmaWx0ZXIKICAgIG15
ICROYW1lID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05hbWUnICkgfHwgJyc7
CiAgICBteSAkUHJlZmVyZW5jZXNLZXkgPSAnVXNlckRhc2hib2FyZFRpY2tldEdlbmVyaWNGaWx0
ZXInIC4gJFNlbGYtPntOYW1lfTsKICAgIGlmICggJFNlbGYtPntOYW1lfSBlcSAkTmFtZSApIHsK
ICAgICAgICAkU2VsZi0+e0ZpbHRlcn0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9
PiAnRmlsdGVyJyApIHx8ICcnOwogICAgfQoKICAgICMgcmVtZW1iZXIgZmlsdGVyCiAgICBpZiAo
ICRTZWxmLT57RmlsdGVyfSApIHsKCiAgICAgICAgIyB1cGRhdGUgc2Vzc2lvbgogICAgICAgICRL
ZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpLT5VcGRhdGVTZXNz
aW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAg
ICAgICAgIEtleSAgICAgICA9PiAkUHJlZmVyZW5jZXNLZXksCiAgICAgICAgICAgIFZhbHVlICAg
ICA9PiAkU2VsZi0+e0ZpbHRlcn0sCiAgICAgICAgKTsKCiAgICAgICAgIyB1cGRhdGUgcHJlZmVy
ZW5jZXMKICAgICAgICBpZiAoICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0RlbW9TeXN0ZW0nKSApIHsK
ICAgICAgICAgICAgJFVzZXJPYmplY3QtPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAg
VXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIEtleSAgICA9PiAkUHJl
ZmVyZW5jZXNLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gJFNlbGYtPntGaWx0ZXJ9LAog
ICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT57
RmlsdGVyfSA9ICRTZWxmLT57JFByZWZlcmVuY2VzS2V5fSB8fCAkU2VsZi0+e0NvbmZpZ30tPntG
aWx0ZXJ9IHx8ICdBbGwnOwogICAgfQoKICAgICRTZWxmLT57UHJlZktleVNob3dufSAgID0gJ1Vz
ZXJEYXNoYm9hcmRQcmVmJyAuICRTZWxmLT57TmFtZX0gLiAnLVNob3duJzsKICAgICRTZWxmLT57
UHJlZktleUNvbHVtbnN9ID0gJ1VzZXJEYXNoYm9hcmRQcmVmJyAuICRTZWxmLT57TmFtZX0gLiAn
LUNvbHVtbnMnOwogICAgJFNlbGYtPntQYWdlU2hvd259ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0
KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPnsgJFNlbGYtPntQcmVmS2V5U2hvd259
IH0KICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPntMaW1pdH07CiAgICAkU2VsZi0+e1N0YXJ0
SGl0fSA9IGludCggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyAp
IHx8IDEgKTsKCiAgICAjIGRlZmluZSBmaWx0ZXJhYmxlIGNvbHVtbnMKICAgICRTZWxmLT57VmFs
aWRGaWx0ZXJhYmxlQ29sdW1uc30gPSB7CiAgICAgICAgJ093bmVyJyAgICAgICAgICA9PiAxLAog
ICAgICAgICdSZXNwb25zaWJsZScgICAgPT4gMSwKICAgICAgICAnQ3VzdG9tZXJJRCcgICAgID0+
IDEsCiAgICAgICAgJ0N1c3RvbWVyVXNlcklEJyA9PiAxLAogICAgICAgICdTdGF0ZScgICAgICAg
ICAgPT4gMSwKICAgICAgICAnUXVldWUnICAgICAgICAgID0+IDEsCiAgICAgICAgJ1ByaW9yaXR5
JyAgICAgICA9PiAxLAogICAgICAgICdUeXBlJyAgICAgICAgICAgPT4gMSwKICAgICAgICAnTG9j
aycgICAgICAgICAgID0+IDEsCiAgICAgICAgJ1NlcnZpY2UnICAgICAgICA9PiAxLAogICAgICAg
ICdTTEEnICAgICAgICAgICAgPT4gMSwKICAgIH07CgogICAgIyBoYXNoIHdpdGggYWxsIHZhbGlk
IHNvcnRhYmxlIGNvbHVtbnMgKHRha2VuIGZyb20gVGlja2V0U2VhcmNoKQogICAgIyBTb3J0Qnkg
ID0+ICdBZ2UnLCAgICMgQ3JlYXRlZHxPd25lcnxSZXNwb25zaWJsZXxDdXN0b21lcklEfFN0YXRl
fFRpY2tldE51bWJlcnxRdWV1ZQogICAgIyB8UHJpb3JpdHl8VHlwZXxMb2NrfFRpdGxlfFNlcnZp
Y2V8U0xBfENoYW5nZWR8UGVuZGluZ1RpbWV8RXNjYWxhdGlvblRpbWUKICAgICMgfCBFc2NhbGF0
aW9uVXBkYXRlVGltZXxFc2NhbGF0aW9uUmVzcG9uc2VUaW1lfEVzY2FsYXRpb25Tb2x1dGlvblRp
bWUKICAgICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9ID0gewogICAgICAgICdBZ2UnICAg
ICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICdDcmVhdGVkJyAgICAgICAgICAgICAgICA9
PiAxLAogICAgICAgICdPd25lcicgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICdSZXNw
b25zaWJsZScgICAgICAgICAgICA9PiAxLAogICAgICAgICdDdXN0b21lcklEJyAgICAgICAgICAg
ICA9PiAxLAogICAgICAgICdTdGF0ZScgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICdU
aWNrZXROdW1iZXInICAgICAgICAgICA9PiAxLAogICAgICAgICdRdWV1ZScgICAgICAgICAgICAg
ICAgICA9PiAxLAogICAgICAgICdQcmlvcml0eScgICAgICAgICAgICAgICA9PiAxLAogICAgICAg
ICdUeXBlJyAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICdMb2NrJyAgICAgICAgICAg
ICAgICAgICA9PiAxLAogICAgICAgICdUaXRsZScgICAgICAgICAgICAgICAgICA9PiAxLAogICAg
ICAgICdTZXJ2aWNlJyAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICdDaGFuZ2VkJyAgICAg
ICAgICAgICAgICA9PiAxLAogICAgICAgICdTTEEnICAgICAgICAgICAgICAgICAgICA9PiAxLAog
ICAgICAgICdQZW5kaW5nVGltZScgICAgICAgICAgICA9PiAxLAogICAgICAgICdFc2NhbGF0aW9u
VGltZScgICAgICAgICA9PiAxLAogICAgICAgICdFc2NhbGF0aW9uVXBkYXRlVGltZScgICA9PiAx
LAogICAgICAgICdFc2NhbGF0aW9uUmVzcG9uc2VUaW1lJyA9PiAxLAogICAgICAgICdFc2NhbGF0
aW9uU29sdXRpb25UaW1lJyA9PiAxLAogICAgfTsKCiAgICAjIHJlbW92ZSBDdXN0b21lcklEIGlm
IEN1c3RvbWVyIEluZm9ybWF0aW9uIENlbnRlcgogICAgaWYgKCAkU2VsZi0+e0FjdGlvbn0gZXEg
J0FnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcicgKSB7CiAgICAgICAgZGVsZXRlICRTZWxm
LT57Q29sdW1uRmlsdGVyfS0+e0N1c3RvbWVySUR9OwogICAgICAgIGRlbGV0ZSAkU2VsZi0+e0dl
dENvbHVtbkZpbHRlcn0tPntDdXN0b21lcklEfTsKICAgICAgICBkZWxldGUgJFNlbGYtPntHZXRD
b2x1bW5GaWx0ZXJTZWxlY3R9LT57Q3VzdG9tZXJJRH07CiAgICAgICAgZGVsZXRlICRTZWxmLT57
VmFsaWRGaWx0ZXJhYmxlQ29sdW1uc30tPntDdXN0b21lcklEfTsKICAgICAgICBkZWxldGUgJFNl
bGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPntDdXN0b21lcklEfTsKICAgIH0KCiAgICAkU2Vs
Zi0+e1VzZVRpY2tldFNlcnZpY2V9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlNlcnZp
Y2UnKSB8fCAwOwoKICAgIGlmICggJFNlbGYtPntDb25maWd9LT57SXNQcm9jZXNzV2lkZ2V0fSAp
IHsKCiAgICAgICAgIyBnZXQgcHJvY2VzcyBtYW5hZ2VtZW50IGNvbmZpZ3VyYXRpb24KICAgICAg
ICAkU2VsZi0+e1Byb2Nlc3NNYW5hZ2VtZW50UHJvY2Vzc0lEfQogICAgICAgICAgICA9ICRLZXJu
ZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnUHJvY2Vzczo6RHluYW1pY0ZpZWxk
UHJvY2Vzc01hbmFnZW1lbnRQcm9jZXNzSUQnKTsKICAgICAgICAkU2VsZi0+e1Byb2Nlc3NNYW5h
Z2VtZW50QWN0aXZpdHlJRH0KICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6
OkNvbmZpZycpLT5HZXQoJ1Byb2Nlc3M6OkR5bmFtaWNGaWVsZFByb2Nlc3NNYW5hZ2VtZW50QWN0
aXZpdHlJRCcpOwoKICAgICAgICAjIGdldCB0aGUgbGlzdCBvZiBwcm9jZXNzZXMgaW4gdGhlIHN5
c3RlbQogICAgICAgIG15ICRQcm9jZXNzTGlzdEhhc2ggPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJu
ZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OlByb2Nlc3MnKS0+UHJvY2Vzc0xpc3QoCiAg
ICAgICAgICAgIFByb2Nlc3NTdGF0ZSA9PiBbICdBY3RpdmUnLCAnRmFkZUF3YXknLCAnSW5hY3Rp
dmUnIF0sCiAgICAgICAgICAgIEludGVyZmFjZSAgICA9PiAnYWxsJywKICAgICAgICAgICAgU2ls
ZW50ICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyB1c2Ugb25seSB0aGUgcHJvY2Vz
cyBFbnRpdHlJRHMKICAgICAgICBAeyAkU2VsZi0+e1Byb2Nlc3NMaXN0fSB9ID0gc29ydCBrZXlz
ICV7JFByb2Nlc3NMaXN0SGFzaH07CiAgICB9CgojIC0tLQojIFBTCiMgLS0tCiAgICAjIHJ1biBo
b29rcwogICAgbXkgJEhvb2tzID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXRPdmVydmlldzo6
SG9va3MnKSB8fCB7fTsKICAgICRTZWxmLT57SE9PS1N9ID0gJEhvb2tzOwoKICAgIG15ICRNYWlu
T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKCiAgICBQ
UklPUklUWToKICAgIGZvciBteSAkUHJpb3JpdHkgKCBzb3J0IGtleXMgJXskSG9va3N9ICkgewoK
ICAgICAgICBteSAkTW9kdWxlID0gJEhvb2tzLT57JFByaW9yaXR5fTsKCiAgICAgICAgaWYgKCAk
TWFpbk9iamVjdC0+UmVxdWlyZSggJE1vZHVsZSApICkgewogICAgICAgICAgICAkU2VsZi0+e0hv
b2tPYmplY3RzfS0+eyRNb2R1bGV9ID0gJE1vZHVsZS0+bmV3KCAleyRTZWxmfSApOwogICAgICAg
IH0KICAgIH0KIyAtLS0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBQcmVmZXJlbmNlcyB7CiAg
ICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY29uZmlndXJlIGNvbHVtbnMKICAg
IG15IEBDb2x1bW5zRW5hYmxlZDsKICAgIG15IEBDb2x1bW5zQXZhaWxhYmxlOwogICAgbXkgQENv
bHVtbnNBdmFpbGFibGVOb3RFbmFibGVkOwoKICAgICMgY2hlY2sgZm9yIGRlZmF1bHQgc2V0dGlu
Z3MKICAgIGlmICgKICAgICAgICAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30KICAg
ICAgICAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVt
bnN9ICkKICAgICAgICApCiAgICB7CiAgICAgICAgQENvbHVtbnNBdmFpbGFibGUgPSBncmVwIHsg
JFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9LT57JF99IH0KICAgICAgICAgICAga2V5
cyAleyAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gfTsKICAgICAgICBAQ29sdW1u
c0VuYWJsZWQgPSBncmVwIHsgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9LT57JF99
IGVxICcyJyB9CiAgICAgICAgICAgIHNvcnQgeyAkU2VsZi0+X0RlZmF1bHRDb2x1bW5Tb3J0KCkg
fSBrZXlzICV7ICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfSB9OwogICAgfQoKICAg
ICMgY2hlY2sgaWYgdGhlIHVzZXIgaGFzIGZpbHRlciBwcmVmZXJlbmNlcyBmb3IgdGhpcyB3aWRn
ZXQKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVt
OjpVc2VyJyktPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJ
RH0sCiAgICApOwoKICAgICMgZ2V0IEpTT04gb2JqZWN0CiAgICBteSAkSlNPTk9iamVjdCA9ICRL
ZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CgogICAgIyBpZiBwcmVmZXJl
bmNlIHNldHRpbmdzIGFyZSBhdmFpbGFibGUsIHRha2UgdGhlbQogICAgaWYgKCAkUHJlZmVyZW5j
ZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbnN9IH0gKSB7CgogICAgICAgIG15ICRDb2x1bW5zRW5h
YmxlZCA9ICRKU09OT2JqZWN0LT5EZWNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gJEtlcm5lbDo6
T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT57ICRTZWxmLT57UHJlZktl
eUNvbHVtbnN9IH0sCiAgICAgICAgKTsKCiAgICAgICAgQENvbHVtbnNFbmFibGVkID0gZ3JlcCB7
ICRDb2x1bW5zRW5hYmxlZC0+e0NvbHVtbnN9LT57JF99ID09IDEgfQogICAgICAgICAgICBrZXlz
ICV7ICRDb2x1bW5zRW5hYmxlZC0+e0NvbHVtbnN9IH07CgogICAgICAgIGlmICggJENvbHVtbnNF
bmFibGVkLT57T3JkZXJ9ICYmIEB7ICRDb2x1bW5zRW5hYmxlZC0+e09yZGVyfSB9ICkgewogICAg
ICAgICAgICBAQ29sdW1uc0VuYWJsZWQgPSBAeyAkQ29sdW1uc0VuYWJsZWQtPntPcmRlcn0gfTsK
ICAgICAgICB9CgogICAgICAgICMgcmVtb3ZlIGR1cGxpY2F0ZSBjb2x1bW5zCiAgICAgICAgbXkg
JVVuaXF1ZUNvbHVtbnM7CiAgICAgICAgbXkgQENvbHVtbnNFbmFibGVkQXV4OwoKICAgICAgICBm
b3IgbXkgJENvbHVtbiAoQENvbHVtbnNFbmFibGVkKSB7CiAgICAgICAgICAgIGlmICggISRVbmlx
dWVDb2x1bW5zeyRDb2x1bW59ICkgewogICAgICAgICAgICAgICAgcHVzaCBAQ29sdW1uc0VuYWJs
ZWRBdXgsICRDb2x1bW47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFVuaXF1ZUNvbHVtbnN7
JENvbHVtbn0gPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgZmlsdGVyZWQgY29sdW1uIGxp
c3QKICAgICAgICBAQ29sdW1uc0VuYWJsZWQgPSBAQ29sdW1uc0VuYWJsZWRBdXg7CiAgICB9Cgog
ICAgbXkgJUNvbHVtbnM7CiAgICBmb3IgbXkgJENvbHVtbk5hbWUgKCBzb3J0IHsgJGEgY21wICRi
IH0gQENvbHVtbnNBdmFpbGFibGUgKSB7CiAgICAgICAgJENvbHVtbnN7Q29sdW1uc30tPnskQ29s
dW1uTmFtZX0gPSAoIGdyZXAgeyAkQ29sdW1uTmFtZSBlcSAkXyB9IEBDb2x1bW5zRW5hYmxlZCAp
ID8gMSA6IDA7CiAgICAgICAgaWYgKCAhZ3JlcCB7ICRfIGVxICRDb2x1bW5OYW1lIH0gQENvbHVt
bnNFbmFibGVkICkgewogICAgICAgICAgICBwdXNoIEBDb2x1bW5zQXZhaWxhYmxlTm90RW5hYmxl
ZCwgJENvbHVtbk5hbWU7CiAgICAgICAgfQogICAgfQoKICAgICMgcmVtb3ZlIEN1c3RvbWVySUQg
aWYgQ3VzdG9tZXIgSW5mb3JtYXRpb24gQ2VudGVyCiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBl
cSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyJyApIHsKICAgICAgICBkZWxldGUgJENv
bHVtbnN7Q29sdW1uc30tPntDdXN0b21lcklEfTsKICAgICAgICBAQ29sdW1uc0VuYWJsZWQgICAg
ICAgICAgICAgPSBncmVwIHsgJF8gbmUgJ0N1c3RvbWVySUQnIH0gQENvbHVtbnNFbmFibGVkOwog
ICAgICAgIEBDb2x1bW5zQXZhaWxhYmxlTm90RW5hYmxlZCA9IGdyZXAgeyAkXyBuZSAnQ3VzdG9t
ZXJJRCcgfSBAQ29sdW1uc0F2YWlsYWJsZU5vdEVuYWJsZWQ7CiAgICB9CgogICAgbXkgQFBhcmFt
cyA9ICgKICAgICAgICB7CiAgICAgICAgICAgIERlc2MgID0+IFRyYW5zbGF0YWJsZSgnU2hvd24g
VGlja2V0cycpLAogICAgICAgICAgICBOYW1lICA9PiAkU2VsZi0+e1ByZWZLZXlTaG93bn0sCiAg
ICAgICAgICAgIEJsb2NrID0+ICdPcHRpb24nLAogICAgICAgICAgICBEYXRhICA9PiB7CiAgICAg
ICAgICAgICAgICA1ICA9PiAnIDUnLAogICAgICAgICAgICAgICAgMTAgPT4gJzEwJywKICAgICAg
ICAgICAgICAgIDE1ID0+ICcxNScsCiAgICAgICAgICAgICAgICAyMCA9PiAnMjAnLAogICAgICAg
ICAgICAgICAgMjUgPT4gJzI1JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VsZWN0ZWRJ
RCAgPT4gJFNlbGYtPntQYWdlU2hvd259LAogICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAog
ICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBEZXNjICAgICAgICAgICAgID0+IFRyYW5z
bGF0YWJsZSgnU2hvd24gQ29sdW1ucycpLAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+
ICRTZWxmLT57UHJlZktleUNvbHVtbnN9LAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+
ICdBbGxvY2F0aW9uTGlzdCcsCiAgICAgICAgICAgIENvbHVtbnMgICAgICAgICAgPT4gJEpTT05P
YmplY3QtPkVuY29kZSggRGF0YSA9PiBcJUNvbHVtbnMgKSwKICAgICAgICAgICAgQ29sdW1uc0Vu
YWJsZWQgICA9PiAkSlNPTk9iamVjdC0+RW5jb2RlKCBEYXRhID0+IFxAQ29sdW1uc0VuYWJsZWQg
KSwKICAgICAgICAgICAgQ29sdW1uc0F2YWlsYWJsZSA9PiAkSlNPTk9iamVjdC0+RW5jb2RlKCBE
YXRhID0+IFxAQ29sdW1uc0F2YWlsYWJsZU5vdEVuYWJsZWQgKSwKICAgICAgICAgICAgVHJhbnNs
YXRpb24gICAgICA9PiAxLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiBAUGFyYW1zOwp9
CgpzdWIgQ29uZmlnIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVj
ayBpZiBmcm9udGVuZCBtb2R1bGUgb2YgbGluayBpcyB1c2VkCiAgICBpZiAoICRTZWxmLT57Q29u
ZmlnfS0+e0xpbmt9ICYmICRTZWxmLT57Q29uZmlnfS0+e0xpbmt9ID1+IC9BY3Rpb249KC4rPyko
WyY7XS4rP3wpJC8gKSB7CiAgICAgICAgbXkgJEFjdGlvbiA9ICQxOwogICAgICAgIGlmICggISRL
ZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScp
LT57JEFjdGlvbn0gKSB7CiAgICAgICAgICAgICRTZWxmLT57Q29uZmlnfS0+e0xpbmt9ID0gJyc7
CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAoCiAgICAgICAgJXsgJFNlbGYtPntDb25maWd9
IH0sCgogICAgICAgICMgRG9uJ3QgY2FjaGUgdGhpcyBnbG9iYWxseSBhcyBpdCBjb250YWlucyBK
UyB0aGF0IGlzIG5vdCBpbnNpZGUgb2YgdGhlIEhUTUwuCiAgICAgICAgQ2FjaGVUVEwgPT4gdW5k
ZWYsCiAgICAgICAgQ2FjaGVLZXkgPT4gdW5kZWYsCiAgICApOwp9CgpzdWIgRmlsdGVyQ29udGVu
dCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhJFBhcmFt
e0ZpbHRlckNvbHVtbn07CgogICAgbXkgJFRpY2tldElEczsKICAgIG15ICRIZWFkZXJDb2x1bW4g
PSAkUGFyYW17RmlsdGVyQ29sdW1ufTsKICAgIG15IEBPcmlnaW5hbFZpZXdhYmxlVGlja2V0czsK
CiAgICBpZiAoCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0
KCdPbmx5VmFsdWVzT25UaWNrZXQnKQogICAgICAgIHx8ICRIZWFkZXJDb2x1bW4gZXEgJ0N1c3Rv
bWVySUQnCiAgICAgICAgfHwgJEhlYWRlckNvbHVtbiBlcSAnQ3VzdG9tZXJVc2VySUQnCiAgICAg
ICAgKQogICAgewogICAgICAgIG15ICVTZWFyY2hQYXJhbXMgICAgICAgID0gJFNlbGYtPl9TZWFy
Y2hQYXJhbXNHZXQoJVBhcmFtKTsKICAgICAgICBteSAlVGlja2V0U2VhcmNoICAgICAgICA9ICV7
ICRTZWFyY2hQYXJhbXN7VGlja2V0U2VhcmNofSB9OwogICAgICAgIG15ICVUaWNrZXRTZWFyY2hT
dW1tYXJ5ID0gJXsgJFNlYXJjaFBhcmFtc3tUaWNrZXRTZWFyY2hTdW1tYXJ5fSB9OwoKICAgICAg
ICAjIGFkZCBwcm9jZXNzIG1hbmFnZW1lbnQgc2VhcmNoIHRlcm1zCiAgICAgICAgaWYgKCAkU2Vs
Zi0+e0NvbmZpZ30tPntJc1Byb2Nlc3NXaWRnZXR9ICkgewogICAgICAgICAgICAkVGlja2V0U2Vh
cmNoeyAnRHluYW1pY0ZpZWxkXycgLiAkU2VsZi0+e1Byb2Nlc3NNYW5hZ2VtZW50UHJvY2Vzc0lE
fSB9ID0gewogICAgICAgICAgICAgICAgTGlrZSA9PiAkU2VsZi0+e1Byb2Nlc3NMaXN0fSwKICAg
ICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIGlmICgKICAgICAgICAgICAgISRTZWxmLT57
Q29uZmlnfS0+e0lzUHJvY2Vzc1dpZGdldH0KICAgICAgICAgICAgfHwgSXNBcnJheVJlZldpdGhE
YXRhKCAkU2VsZi0+e1Byb2Nlc3NMaXN0fSApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAg
ICAgICAgIEBPcmlnaW5hbFZpZXdhYmxlVGlja2V0cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5l
bDo6U3lzdGVtOjpUaWNrZXQnKS0+VGlja2V0U2VhcmNoKAogICAgICAgICAgICAgICAgJVRpY2tl
dFNlYXJjaCwKICAgICAgICAgICAgICAgICV7ICRUaWNrZXRTZWFyY2hTdW1tYXJ5eyAkU2VsZi0+
e0ZpbHRlcn0gfSB9LAogICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAg
ICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJEhlYWRlckNvbHVtbiA9fiBtL15EeW5h
bWljRmllbGRfLyAmJiAhZGVmaW5lZCAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gKSB7CgogICAgICAg
ICMgZ2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICAkU2VsZi0+
e0R5bmFtaWNGaWVsZH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1p
Y0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgIFZhbGlkICAgICAgPT4g
MCwKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ1RpY2tldCddLAogICAgICAgICk7CiAgICB9
CgogICAgIyBnZXQgY29sdW1uIHZhbHVlcyBmb3IgdG8gYnVpbGQgdGhlIGZpbHRlcnMgbGF0ZXIK
ICAgIG15ICRDb2x1bW5WYWx1ZXMgPSAkU2VsZi0+X0dldENvbHVtblZhbHVlcygKICAgICAgICBP
cmlnaW5hbFRpY2tldElEcyA9PiBcQE9yaWdpbmFsVmlld2FibGVUaWNrZXRzLAogICAgICAgIEhl
YWRlckNvbHVtbiAgICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICApOwoKICAgICMgbWFrZSBzdXJl
IHRoYXQgZXZlbiBhIHZhbHVlIG9mIDAgaXMgcGFzc2VkIGFzIGEgU2VsZWN0ZWQgdmFsdWUsIGUu
Zy4gVW5jaGVja2VkIHZhbHVlIG9mIGEKICAgICMgY2hlY2stYm94IGR5bmFtaWMgZmllbGQuCiAg
ICBteSAkU2VsZWN0ZWRWYWx1ZSA9IGRlZmluZWQgJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJ9LT57
ICRIZWFkZXJDb2x1bW4gLiAkU2VsZi0+e05hbWV9IH0KICAgICAgICA/ICRTZWxmLT57R2V0Q29s
dW1uRmlsdGVyfS0+eyAkSGVhZGVyQ29sdW1uIC4gJFNlbGYtPntOYW1lfSB9CiAgICAgICAgOiAn
JzsKCiAgICBteSAkTGFiZWxDb2x1bW4gPSAkSGVhZGVyQ29sdW1uOwogICAgaWYgKCAkTGFiZWxD
b2x1bW4gPX4gbXsgXEEgRHluYW1pY0ZpZWxkXyB9eG1zICkgewoKICAgICAgICBteSAkRHluYW1p
Y0ZpZWxkQ29uZmlnOwogICAgICAgICRMYWJlbENvbHVtbiA9fiBze1xBIER5bmFtaWNGaWVsZF8g
fXt9eG1zOwoKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICRERkNvbmZpZyAo
IEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNG
SUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgbmV4dCBE
WU5BTUlDRklFTEQgaWYgJERGQ29uZmlnLT57TmFtZX0gbmUgJExhYmVsQ29sdW1uOwoKICAgICAg
ICAgICAgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRERkNvbmZpZzsKICAgICAgICAgICAgbGFzdCBE
WU5BTUlDRklFTEQ7CiAgICAgICAgfQogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJER5
bmFtaWNGaWVsZENvbmZpZykgKSB7CiAgICAgICAgICAgICRMYWJlbENvbHVtbiA9ICREeW5hbWlj
RmllbGRDb25maWctPntMYWJlbH07CiAgICAgICAgfQogICAgfQoKICAgICMgdmFyaWFibGUgdG8g
c2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICBteSAkQ29sdW1uRmlsdGVySlNPTiA9ICRT
ZWxmLT5fQ29sdW1uRmlsdGVySlNPTigKICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRIZWFkZXJD
b2x1bW4sCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAkTGFiZWxDb2x1bW4sCiAgICAgICAgQ29s
dW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JEhlYWRlckNvbHVtbn0sCiAgICAgICAgU2Vs
ZWN0ZWRWYWx1ZSA9PiAkU2VsZWN0ZWRWYWx1ZSwKICAgICAgICBEYXNoYm9hcmROYW1lID0+ICRT
ZWxmLT57TmFtZX0sCiAgICApOwoKICAgIHJldHVybiAkQ29sdW1uRmlsdGVySlNPTjsKCn0KCnN1
YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlU2VhcmNoUGFy
YW1zICAgICAgICA9ICRTZWxmLT5fU2VhcmNoUGFyYW1zR2V0KCVQYXJhbSk7CiAgICBteSBAQ29s
dW1ucyAgICAgICAgICAgICA9IEB7ICRTZWFyY2hQYXJhbXN7Q29sdW1uc30gfTsKICAgIG15ICVU
aWNrZXRTZWFyY2ggICAgICAgID0gJXsgJFNlYXJjaFBhcmFtc3tUaWNrZXRTZWFyY2h9IH07CiAg
ICBteSAlVGlja2V0U2VhcmNoU3VtbWFyeSA9ICV7ICRTZWFyY2hQYXJhbXN7VGlja2V0U2VhcmNo
U3VtbWFyeX0gfTsKCiAgICBteSAkQ2FjaGVLZXkgPSBqb2luICctJywgJFNlbGYtPntOYW1lfSwK
ICAgICAgICAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgJFNlbGYtPntQYWdlU2hvd259LAogICAg
ICAgICRTZWxmLT57U3RhcnRIaXR9LAogICAgICAgICRTZWxmLT57VXNlcklEfTsKICAgIG15ICRD
YWNoZUNvbHVtbnMgPSBqb2luKAogICAgICAgICcsJywKICAgICAgICBtYXAgewogICAgICAgICAg
ICAkXyAuICc9PicgLiAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0tPnskX30KICAgICAg
ICAgICAgfQogICAgICAgICAgICBzb3J0IGtleXMgJXsgJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJT
ZWxlY3R9IH0KICAgICk7CiAgICAkQ2FjaGVLZXkgLj0gJy0nIC4gJENhY2hlQ29sdW1ucyBpZiAk
Q2FjaGVDb2x1bW5zOwoKICAgICRDYWNoZUtleSAuPSAnLScgLiAkU2VsZi0+e1NvcnRCeX0gIGlm
IGRlZmluZWQgJFNlbGYtPntTb3J0Qnl9OwogICAgJENhY2hlS2V5IC49ICctJyAuICRTZWxmLT57
T3JkZXJCeX0gaWYgZGVmaW5lZCAkU2VsZi0+e09yZGVyQnl9OwoKICAgICMgQ3VzdG9tZXJJbmZv
cm1hdGlvbkNlbnRlciBzaG93cyBkYXRhIHBlciBDdXN0b21lcklECiAgICBpZiAoICRQYXJhbXtD
dXN0b21lcklEfSApIHsKICAgICAgICAkQ2FjaGVLZXkgLj0gJy0nIC4gJFBhcmFte0N1c3RvbWVy
SUR9OwogICAgfQoKICAgICMgZ2V0IGNhY2hlIG9iamVjdAogICAgbXkgJENhY2hlT2JqZWN0ID0g
JEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgIyBjaGVjayBj
YWNoZQogICAgbXkgJFRpY2tldElEcyA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgIFR5cGUg
PT4gJ0Rhc2hib2FyZCcsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXkgLiAnLScgLiAkU2VsZi0+
e0ZpbHRlcn0gLiAnLUxpc3QnLAogICAgKTsKCiAgICAjIGZpbmQgYW5kIHNob3cgdGlja2V0IGxp
c3QKICAgIG15ICRDYWNoZVVzZWQgPSAxOwoKICAgICMgZ2V0IHRpY2tldCBvYmplY3QKICAgIG15
ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0
Jyk7CgogICAgaWYgKCAhJFRpY2tldElEcyApIHsKCiAgICAgICAgIyBxdW90ZSBhbGwgQ3VzdG9t
ZXJJRHMKICAgICAgICBpZiAoICRUaWNrZXRTZWFyY2h7Q3VzdG9tZXJJRH0gKSB7CiAgICAgICAg
ICAgICRUaWNrZXRTZWFyY2h7Q3VzdG9tZXJJRH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6
OlN5c3RlbTo6REInKS0+UXVlcnlTdHJpbmdFc2NhcGUoCiAgICAgICAgICAgICAgICBRdWVyeVN0
cmluZyA9PiAkVGlja2V0U2VhcmNoe0N1c3RvbWVySUR9LAogICAgICAgICAgICApOwogICAgICAg
IH0KCiAgICAgICAgIyBhZGQgc29ydCBieSBwYXJhbWV0ZXIgdG8gdGhlIHNlYXJjaAogICAgICAg
IGlmICgKICAgICAgICAgICAgIWRlZmluZWQgJFRpY2tldFNlYXJjaHtTb3J0Qnl9CiAgICAgICAg
ICAgIHx8ICEkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyAkVGlja2V0U2VhcmNoe1Nv
cnRCeX0gfQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBpZiAoICRTZWxmLT57
U29ydEJ5fSAmJiAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyAkU2VsZi0+e1NvcnRC
eX0gfSApIHsKICAgICAgICAgICAgICAgICRUaWNrZXRTZWFyY2h7U29ydEJ5fSA9ICRTZWxmLT57
U29ydEJ5fTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICRUaWNrZXRTZWFyY2h7U29ydEJ5fSA9ICdBZ2UnOwogICAgICAgICAgICB9CiAgICAgICAgfQoK
ICAgICAgICAjIGFkZCBvcmRlciBieSBwYXJhbWV0ZXIgdG8gdGhlIHNlYXJjaAogICAgICAgIGlm
ICggJFNlbGYtPntPcmRlckJ5fSApIHsKICAgICAgICAgICAgJFRpY2tldFNlYXJjaHtPcmRlckJ5
fSA9ICRTZWxmLT57T3JkZXJCeX07CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBwcm9jZXNzIG1h
bmFnZW1lbnQgc2VhcmNoIHRlcm1zCiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ30tPntJc1By
b2Nlc3NXaWRnZXR9ICkgewogICAgICAgICAgICAkVGlja2V0U2VhcmNoeyAnRHluYW1pY0ZpZWxk
XycgLiAkU2VsZi0+e1Byb2Nlc3NNYW5hZ2VtZW50UHJvY2Vzc0lEfSB9ID0gewogICAgICAgICAg
ICAgICAgTGlrZSA9PiAkU2VsZi0+e1Byb2Nlc3NMaXN0fSwKICAgICAgICAgICAgfTsKICAgICAg
ICB9CgogICAgICAgICRDYWNoZVVzZWQgPSAwOwogICAgICAgIG15IEBUaWNrZXRJRHNBcnJheTsK
ICAgICAgICBpZiAoCiAgICAgICAgICAgICEkU2VsZi0+e0NvbmZpZ30tPntJc1Byb2Nlc3NXaWRn
ZXR9CiAgICAgICAgICAgIHx8IElzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntQcm9jZXNzTGlz
dH0gKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBAVGlja2V0SURzQXJyYXkg
PSAkVGlja2V0T2JqZWN0LT5UaWNrZXRTZWFyY2goCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4g
J0FSUkFZJywKICAgICAgICAgICAgICAgICVUaWNrZXRTZWFyY2gsCiAgICAgICAgICAgICAgICAl
eyAkVGlja2V0U2VhcmNoU3VtbWFyeXsgJFNlbGYtPntGaWx0ZXJ9IH0gfSwKICAgICAgICAgICAg
ICAgICV7ICRTZWxmLT57Q29sdW1uRmlsdGVyfSB9LAogICAgICAgICAgICAgICAgTGltaXQgPT4g
JFNlbGYtPntQYWdlU2hvd259ICsgJFNlbGYtPntTdGFydEhpdH0gLSAxLAogICAgICAgICAgICAp
OwogICAgICAgIH0KICAgICAgICAkVGlja2V0SURzID0gXEBUaWNrZXRJRHNBcnJheTsKICAgIH0K
CiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkU3VtbWFyeSA9ICRDYWNoZU9iamVjdC0+R2V0KAog
ICAgICAgIFR5cGUgPT4gJ0Rhc2hib2FyZCcsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXkgLiAn
LVN1bW1hcnknLAogICAgKTsKCiAgICAjIGlmIG5vIGNhY2hlIG9yIG5ldyBsaXN0IHJlc3VsdCwg
ZG8gY291bnQgbG9va3VwCiAgICBpZiAoICEkU3VtbWFyeSB8fCAhJENhY2hlVXNlZCApIHsKICAg
ICAgICBUWVBFOgogICAgICAgIGZvciBteSAkVHlwZSAoIHNvcnQga2V5cyAlVGlja2V0U2VhcmNo
U3VtbWFyeSApIHsKICAgICAgICAgICAgbmV4dCBUWVBFIGlmICEkVGlja2V0U2VhcmNoU3VtbWFy
eXskVHlwZX07CgogICAgICAgICAgICAjIGNvcHkgb3JpZ2luYWwgY29sdW1uIGZpbHRlcgogICAg
ICAgICAgICBteSAlQ29sdW1uRmlsdGVyID0gJXsgJFNlbGYtPntDb2x1bW5GaWx0ZXJ9IHx8IHt9
IH07CgogICAgICAgICAgICAjIGxvb3AgdGhyb3VnaCBhbGwgY29sdW1uIGZpbHRlciBlbGVtZW50
cwogICAgICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCBzb3J0IGtleXMgJUNvbHVtbkZpbHRlciAp
IHsKCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBpZiBjdXJyZW50IGNvbHVtbiBmaWx0ZXIgZWxl
bWVudCBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIHRpY2tldCBzZWFyY2gKICAgICAgICAgICAg
ICAgICMgc3VtbWFyeSwgdG8gZGVsZXRlIGl0IGZyb20gdGhlIGNvbHVtbiBmaWx0ZXIgaGFzaAog
ICAgICAgICAgICAgICAgaWYgKCAkVGlja2V0U2VhcmNoU3VtbWFyeXskVHlwZX0tPnskRWxlbWVu
dH0gKSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRDb2x1bW5GaWx0ZXJ7JEVsZW1lbnR9
OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCBwcm9j
ZXNzIG1hbmFnZW1lbnQgc2VhcmNoIHRlcm1zCiAgICAgICAgICAgIGlmICggJFNlbGYtPntDb25m
aWd9LT57SXNQcm9jZXNzV2lkZ2V0fSApIHsKICAgICAgICAgICAgICAgICRUaWNrZXRTZWFyY2h7
ICdEeW5hbWljRmllbGRfJyAuICRTZWxmLT57UHJvY2Vzc01hbmFnZW1lbnRQcm9jZXNzSUR9IH0g
PSB7CiAgICAgICAgICAgICAgICAgICAgTGlrZSA9PiAkU2VsZi0+e1Byb2Nlc3NMaXN0fSwKICAg
ICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTdW1tYXJ5LT57JFR5
cGV9ID0gMDsKCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICEkU2VsZi0+e0NvbmZp
Z30tPntJc1Byb2Nlc3NXaWRnZXR9CiAgICAgICAgICAgICAgICB8fCBJc0FycmF5UmVmV2l0aERh
dGEoICRTZWxmLT57UHJvY2Vzc0xpc3R9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgJFN1bW1hcnktPnskVHlwZX0gPSAkVGlja2V0T2JqZWN0LT5UaWNr
ZXRTZWFyY2goCiAgICAgICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdDT1VOVCcsCiAgICAgICAg
ICAgICAgICAgICAgJVRpY2tldFNlYXJjaCwKICAgICAgICAgICAgICAgICAgICAleyAkVGlja2V0
U2VhcmNoU3VtbWFyeXskVHlwZX0gfSwKICAgICAgICAgICAgICAgICAgICAleyAkU2VsZi0+e0Nv
bHVtbkZpbHRlcn0gfSwKICAgICAgICAgICAgICAgICAgICAlQ29sdW1uRmlsdGVyLAogICAgICAg
ICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBjYWNo
ZQogICAgaWYgKCAhJENhY2hlVXNlZCAmJiAkU2VsZi0+e0NvbmZpZ30tPntDYWNoZVRUTExvY2Fs
fSApIHsKICAgICAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0Rh
c2hib2FyZCcsCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSAuICctU3VtbWFyeScsCiAg
ICAgICAgICAgIFZhbHVlID0+ICRTdW1tYXJ5LAogICAgICAgICAgICBUVEwgICA9PiAkU2VsZi0+
e0NvbmZpZ30tPntDYWNoZVRUTExvY2FsfSAqIDYwLAogICAgICAgICk7CiAgICAgICAgJENhY2hl
T2JqZWN0LT5TZXQoCiAgICAgICAgICAgIFR5cGUgID0+ICdEYXNoYm9hcmQnLAogICAgICAgICAg
ICBLZXkgICA9PiAkQ2FjaGVLZXkgLiAnLScgLiAkU2VsZi0+e0ZpbHRlcn0gLiAnLUxpc3QnLAog
ICAgICAgICAgICBWYWx1ZSA9PiAkVGlja2V0SURzLAogICAgICAgICAgICBUVEwgICA9PiAkU2Vs
Zi0+e0NvbmZpZ30tPntDYWNoZVRUTExvY2FsfSAqIDYwLAogICAgICAgICk7CiAgICB9CgogICAg
IyBzZXQgY3NzIGNsYXNzCiAgICAkU3VtbWFyeS0+eyAkU2VsZi0+e0ZpbHRlcn0gLiAnOjpTZWxl
Y3RlZCcgfSA9ICdTZWxlY3RlZCc7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExh
eW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlv
dXQnKTsKCiAgICAjIGdldCBmaWx0ZXIgdGlja2V0IGNvdW50cwogICAgJExheW91dE9iamVjdC0+
QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0ZpbHRlcics
CiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJXsgJFNl
bGYtPntDb25maWd9IH0sCiAgICAgICAgICAgIE5hbWUgPT4gJFNlbGYtPntOYW1lfSwKICAgICAg
ICAgICAgJXskU3VtbWFyeX0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBnZXQgY29uZmlnIG9i
amVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29u
ZmlnJyk7CgogICAgIyBzaG93IGFsc28gd2F0Y2hlciBpZiBmZWF0dXJlIGlzIGVuYWJsZWQgYW5k
IHRoZXJlIGlzIGEgd2F0Y2hlciBmaWx0ZXIKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdU
aWNrZXQ6OldhdGNoZXInKSAmJiAkVGlja2V0U2VhcmNoU3VtbWFyeXtXYXRjaGVyfSApIHsKICAg
ICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExh
cmdlVGlja2V0R2VuZXJpY0ZpbHRlcldhdGNoZXInLAogICAgICAgICAgICBEYXRhID0+IHsKICAg
ICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7ICRTZWxmLT57Q29uZmlnfSB9
LAogICAgICAgICAgICAgICAgTmFtZSA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAg
JXskU3VtbWFyeX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cg
YWxzbyByZXNwb25zaWJsZSBpZiBmZWF0dXJlIGlzIGVuYWJsZWQgYW5kIHRoZXJlIGlzIGEgcmVz
cG9uc2libGUgZmlsdGVyCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpSZXNw
b25zaWJsZScpICYmICRUaWNrZXRTZWFyY2hTdW1tYXJ5e1Jlc3BvbnNpYmxlfSApIHsKICAgICAg
ICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdl
VGlja2V0R2VuZXJpY0ZpbHRlclJlc3BvbnNpYmxlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAg
ICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAleyAkU2VsZi0+e0NvbmZpZ30g
fSwKICAgICAgICAgICAgICAgIE5hbWUgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgICAg
ICV7JFN1bW1hcnl9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93
IG9ubHkgbXkgcXVldWVzIGlmIHdlIGhhdmUgdGhlIGZpbHRlcgogICAgaWYgKCAkVGlja2V0U2Vh
cmNoU3VtbWFyeXtNeVF1ZXVlc30gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAg
ICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZVRpY2tldEdlbmVyaWNGaWx0ZXJNeVF1ZXVl
cycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAg
ICAgICAgICAgJXsgJFNlbGYtPntDb25maWd9IH0sCiAgICAgICAgICAgICAgICBOYW1lID0+ICRT
ZWxmLT57TmFtZX0sCiAgICAgICAgICAgICAgICAleyRTdW1tYXJ5fSwKICAgICAgICAgICAgfSwK
ICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBvbmx5IG15IHNlcnZpY2VzIGlmIHdlIGhhdmUg
dGhlIGZpbHRlcgogICAgaWYgKCAkVGlja2V0U2VhcmNoU3VtbWFyeXtNeVNlcnZpY2VzfSApIHsK
ICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVu
dExhcmdlVGlja2V0R2VuZXJpY0ZpbHRlck15U2VydmljZXMnLAogICAgICAgICAgICBEYXRhID0+
IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7ICRTZWxmLT57Q29u
ZmlnfSB9LAogICAgICAgICAgICAgICAgTmFtZSA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAg
ICAgICAgJXskU3VtbWFyeX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAj
IHNob3cgb25seSBsb2NrZWQgaWYgd2UgaGF2ZSB0aGUgZmlsdGVyCiAgICBpZiAoICRUaWNrZXRT
ZWFyY2hTdW1tYXJ5e0xvY2tlZH0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAg
ICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZVRpY2tldEdlbmVyaWNGaWx0ZXJMb2NrZWQn
LAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAg
ICAgICAgICV7ICRTZWxmLT57Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgTmFtZSA9PiAkU2Vs
Zi0+e05hbWV9LAogICAgICAgICAgICAgICAgJXskU3VtbWFyeX0sCiAgICAgICAgICAgIH0sCiAg
ICAgICAgKTsKICAgIH0KCiAgICAjIGFkZCBwYWdlIG5hdiBiYXIKICAgIG15ICRUb3RhbCA9ICRT
dW1tYXJ5LT57ICRTZWxmLT57RmlsdGVyfSB9IHx8IDA7CgogICAgbXkgJUdldENvbHVtbkZpbHRl
ciA9ICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyfSA/ICV7ICRTZWxmLT57R2V0Q29sdW1uRmlsdGVy
fSB9IDogKCk7CgogICAgbXkgJENvbHVtbkZpbHRlckxpbmsgPSAnJzsKICAgIENPTFVNTk5BTUU6
CiAgICBmb3IgbXkgJENvbHVtbk5hbWUgKCBzb3J0IGtleXMgJUdldENvbHVtbkZpbHRlciApIHsK
ICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgISRDb2x1bW5OYW1lOwogICAgICAgIG5leHQgQ09M
VU1OTkFNRSBpZiAhJEdldENvbHVtbkZpbHRlcnskQ29sdW1uTmFtZX07CiAgICAgICAgJENvbHVt
bkZpbHRlckxpbmsKICAgICAgICAgICAgLj0gJzsnIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRt
bCggVGV4dCA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lICkKICAgICAgICAgICAgLiAn
PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRHZXRDb2x1bW5GaWx0ZXJ7
JENvbHVtbk5hbWV9ICkKICAgIH0KCiAgICBteSAkTGlua1BhZ2UgPQogICAgICAgICdTdWJhY3Rp
b249RWxlbWVudDtOYW1lPScgLiAkU2VsZi0+e05hbWV9CiAgICAgICAgLiAnO0ZpbHRlcj0nIC4g
JFNlbGYtPntGaWx0ZXJ9CiAgICAgICAgLiAnO1NvcnRCeT0nIC4gICggJFNlbGYtPntTb3J0Qnl9
ICB8fCAnJyApCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICggJFNlbGYtPntPcmRlckJ5fSB8fCAn
JyApCiAgICAgICAgLiAkQ29sdW1uRmlsdGVyTGluawogICAgICAgIC4gJzsnOwoKICAgIGlmICgg
JFBhcmFte0N1c3RvbWVySUR9ICkgewogICAgICAgICRMaW5rUGFnZSAuPSAiQ3VzdG9tZXJJRD0k
UGFyYW17Q3VzdG9tZXJJRH07IjsKICAgIH0KICAgIG15ICVQYWdlTmF2ID0gJExheW91dE9iamVj
dC0+UGFnZU5hdkJhcigKICAgICAgICBTdGFydEhpdCAgICAgICA9PiAkU2VsZi0+e1N0YXJ0SGl0
fSwKICAgICAgICBQYWdlU2hvd24gICAgICA9PiAkU2VsZi0+e1BhZ2VTaG93bn0sCiAgICAgICAg
QWxsSGl0cyAgICAgICAgPT4gJFRvdGFsIHx8IDEsCiAgICAgICAgQWN0aW9uICAgICAgICAgPT4g
J0FjdGlvbj0nIC4gJExheW91dE9iamVjdC0+e0FjdGlvbn0sCiAgICAgICAgTGluayAgICAgICAg
ICAgPT4gJExpbmtQYWdlLAogICAgICAgIEFKQVhSZXBsYWNlICAgID0+ICdEYXNoYm9hcmQnIC4g
JFNlbGYtPntOYW1lfSwKICAgICAgICBJRFByZWZpeCAgICAgICA9PiAnRGFzaGJvYXJkJyAuICRT
ZWxmLT57TmFtZX0sCiAgICAgICAgS2VlcFNjcmlwdFRhZ3MgPT4gJFBhcmFte0FKQVh9LAogICAg
KTsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJn
ZVRpY2tldEdlbmVyaWNGaWx0ZXJOYXZCYXInLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAg
ICAleyAkU2VsZi0+e0NvbmZpZ30gfSwKICAgICAgICAgICAgTmFtZSA9PiAkU2VsZi0+e05hbWV9
LAogICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNob3cgdGFi
bGUgaGVhZGVyCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdDb250
ZW50TGFyZ2VUaWNrZXRHZW5lcmljSGVhZGVyJywKICAgICAgICBEYXRhID0+IHt9LAogICAgKTsK
CiAgICAjIGRlZmluZSB3aGljaCBtZXRhIGl0ZW1zIHdpbGwgYmUgc2hvd24KICAgIG15IEBNZXRh
SXRlbXMgPSAkTGF5b3V0T2JqZWN0LT5UaWNrZXRNZXRhSXRlbXNDb3VudCgpOwoKICAgICMgc2hv
dyBub24tbGFiZWxlZCB0YWJsZSBoZWFkZXJzCiAgICBteSAkQ1NTID0gJyc7CiAgICBteSAkT3Jk
ZXJCeTsKICAgIGZvciBteSAkSXRlbSAoQE1ldGFJdGVtcykgewogICAgICAgICRDU1MgPSAnJzsK
ICAgICAgICBteSAkVGl0bGUgPSAkSXRlbTsKICAgICAgICBpZiAoICRTZWxmLT57U29ydEJ5fSAm
JiAoICRTZWxmLT57U29ydEJ5fSBlcSAkSXRlbSApICkgewogICAgICAgICAgICBpZiAoICRTZWxm
LT57T3JkZXJCeX0gJiYgKCAkU2VsZi0+e09yZGVyQnl9IGVxICdVcCcgKSApIHsKICAgICAgICAg
ICAgICAgICRPcmRlckJ5ID0gJ0Rvd24nOwogICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRB
c2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICAkT3JkZXJCeSA9ICdVcCc7CiAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERl
c2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2V0IHRpdGxlIGRl
c2NyaXB0aW9uCiAgICAgICAgICAgIG15ICRUaXRsZURlc2MgPSAkT3JkZXJCeSBlcSAnRG93bicg
PyBUcmFuc2xhdGFibGUoJ3NvcnRlZCBhc2NlbmRpbmcnKSA6IFRyYW5zbGF0YWJsZSgnc29ydGVk
IGRlc2NlbmRpbmcnKTsKICAgICAgICAgICAgJFRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntM
YW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVGl0bGVEZXNjKTsKICAgICAgICAgICAgJFRpdGxl
IC49ICcsICcgLiAkVGl0bGVEZXNjOwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgc3Vycm91bmRp
bmcgY29udGFpbmVyCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5h
bWUgPT4gJ0dlbmVyYWxPdmVydmlld0hlYWRlcicsCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0
T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlVGlja2V0R2Vu
ZXJpY0hlYWRlck1ldGEnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENT
UyA9PiAkQ1NTLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggJEl0ZW0g
ZXEgJ05ldyBBcnRpY2xlJyApIHsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAog
ICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0hlYWRlck1l
dGFFbXB0eScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBI
ZWFkZXJDb2x1bW5OYW1lID0+ICRJdGVtLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAg
KTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJs
b2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0hl
YWRlck1ldGFMaW5rJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAg
ICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICRTZWxm
LT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkT3JkZXJC
eSB8fCAnVXAnLAogICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgPT4gJEl0ZW0s
CiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAg
ICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgYWxs
IG5lZWRlZCBoZWFkZXJzCiAgICBIRUFERVJDT0xVTU46CiAgICBmb3IgbXkgJEhlYWRlckNvbHVt
biAoQENvbHVtbnMpIHsKCiAgICAgICAgIyBza2lwIEN1c3RvbWVySUQgaWYgQ3VzdG9tZXIgSW5m
b3JtYXRpb24gQ2VudGVyCiAgICAgICAgaWYgKAogICAgICAgICAgICAkU2VsZi0+e0FjdGlvbn0g
ZXEgJ0FnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcicKICAgICAgICAgICAgJiYgJEhlYWRl
ckNvbHVtbiBlcSAnQ3VzdG9tZXJJRCcKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAg
ICAgbmV4dCBIRUFERVJDT0xVTU47CiAgICAgICAgfQoKICAgICAgICBpZiAoICRIZWFkZXJDb2x1
bW4gIX4gbXtcQSBEeW5hbWljRmllbGRffXhtcyApIHsKCiAgICAgICAgICAgICRDU1MgPSAnJzsK
ICAgICAgICAgICAgbXkgJFRpdGxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+
VHJhbnNsYXRlKCRIZWFkZXJDb2x1bW4pOwoKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1NvcnRC
eX0gJiYgKCAkU2VsZi0+e1NvcnRCeX0gZXEgJEhlYWRlckNvbHVtbiApICkgewogICAgICAgICAg
ICAgICAgaWYgKCAkU2VsZi0+e09yZGVyQnl9ICYmICggJFNlbGYtPntPcmRlckJ5fSBlcSAnVXAn
ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAnRG93bic7CiAgICAgICAgICAg
ICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdV
cCc7CiAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nTGFyZ2UnOwog
ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYWRkIHRpdGxlIGRlc2NyaXB0aW9u
CiAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjCiAgICAgICAgICAgICAgICAgICAgPSAkT3Jk
ZXJCeSBlcSAnRG93bicgPyBUcmFuc2xhdGFibGUoJ3NvcnRlZCBhc2NlbmRpbmcnKSA6IFRyYW5z
bGF0YWJsZSgnc29ydGVkIGRlc2NlbmRpbmcnKTsKICAgICAgICAgICAgICAgICRUaXRsZURlc2Mg
PSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFRpdGxlRGVzYyk7
CiAgICAgICAgICAgICAgICAkVGl0bGUgLj0gJywgJyAuICRUaXRsZURlc2M7CiAgICAgICAgICAg
IH0KCiAgICAgICAgICAgICMgdHJhbnNsYXRlIHRoZSBjb2x1bW4gbmFtZSB0byB3cml0ZSBpdCBp
biB0aGUgY3VycmVudCBsYW5ndWFnZQogICAgICAgICAgICBteSAkVHJhbnNsYXRlZFdvcmQ7CiAg
ICAgICAgICAgIGlmICggJEhlYWRlckNvbHVtbiBlcSAnRXNjYWxhdGlvblRpbWUnICkgewogICAg
ICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2Jq
ZWN0fS0+VHJhbnNsYXRlKCdTZXJ2aWNlIFRpbWUnKTsKICAgICAgICAgICAgfQogICAgICAgICAg
ICBlbHNpZiAoICRIZWFkZXJDb2x1bW4gZXEgJ0VzY2FsYXRpb25SZXNwb25zZVRpbWUnICkgewog
ICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdl
T2JqZWN0fS0+VHJhbnNsYXRlKCdGaXJzdCBSZXNwb25zZSBUaW1lJyk7CiAgICAgICAgICAgIH0K
ICAgICAgICAgICAgZWxzaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdFc2NhbGF0aW9uU29sdXRpb25U
aW1lJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3Qt
PntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnU29sdXRpb24gVGltZScpOwogICAgICAgICAg
ICB9CiAgICAgICAgICAgIGVsc2lmICggJEhlYWRlckNvbHVtbiBlcSAnRXNjYWxhdGlvblVwZGF0
ZVRpbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVj
dC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdVcGRhdGUgVGltZScpOwogICAgICAgICAg
ICB9CiAgICAgICAgICAgIGVsc2lmICggJEhlYWRlckNvbHVtbiBlcSAnUGVuZGluZ1RpbWUnICkg
ewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1
YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdQZW5kaW5nIHRpbGwnKTsKICAgICAgICAgICAgfQogICAg
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRP
YmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkSGVhZGVyQ29sdW1uKTsKICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgIyBhZGQgc3Vycm91bmRpbmcgY29udGFpbmVyCiAgICAgICAg
ICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJh
bE92ZXJ2aWV3SGVhZGVyJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVj
dC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VUaWNrZXRHZW5l
cmljSGVhZGVyVGlja2V0SGVhZGVyJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAg
ICAgICAgICk7CgogICAgICAgICAgICBpZiAoICRIZWFkZXJDb2x1bW4gZXEgJ1RpY2tldE51bWJl
cicgKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAg
ICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljSGVhZGVyVGlja2V0TnVt
YmVyQ29sdW1uJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAg
ICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgPT4gJENTUyB8fCAn
JywKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICA9PiAkU2VsZi0+e05hbWV9LAogICAg
ICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ID0+ICRPcmRlckJ5IHx8ICdVcCcsCiAgICAgICAg
ICAgICAgICAgICAgICAgIEZpbHRlciAgPT4gJFNlbGYtPntGaWx0ZXJ9LAogICAgICAgICAgICAg
ICAgICAgICAgICBUaXRsZSAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAg
ICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG5leHQgSEVBREVSQ09MVU1OOwogICAgICAg
ICAgICB9CgogICAgICAgICAgICBteSAkRmlsdGVyVGl0bGUgICAgID0gJFRyYW5zbGF0ZWRXb3Jk
OwogICAgICAgICAgICBteSAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIg
bm90IGFjdGl2ZScpOwogICAgICAgICAgICBpZiAoICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2Vs
ZWN0fSAmJiAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0tPnskSGVhZGVyQ29sdW1ufSAp
CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRDU1MgLj0gJyBGaWx0ZXJBY3RpdmUnOwog
ICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIGFj
dGl2ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSAkTGF5
b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEZpbHRlclRpdGxlRGVzYyk7
CiAgICAgICAgICAgICRGaWx0ZXJUaXRsZSAuPSAnLCAnIC4gJEZpbHRlclRpdGxlRGVzYzsKCiAg
ICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAn
Q29udGVudExhcmdlVGlja2V0R2VuZXJpY0hlYWRlckNvbHVtbicsCiAgICAgICAgICAgICAgICBE
YXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lICAgICA9PiAkSGVh
ZGVyQ29sdW1uICAgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgSGVhZGVyTmFtZVRyYW5zbGF0
ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAg
ICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUyAgICAgICAgICAgIHx8ICcnLAogICAgICAg
ICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVt
biBpcyBmaWx0ZXJhYmxlIGFuZCBzb3J0YWJsZQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAg
ICAgICAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRIZWFkZXJDb2x1bW59CiAgICAg
ICAgICAgICAgICAmJiAkU2VsZi0+e1ZhbGlkRmlsdGVyYWJsZUNvbHVtbnN9LT57JEhlYWRlckNv
bHVtbn0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIG15
ICRDc3M7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEhlYWRlckNv
bHVtbiBlcSAnQ3VzdG9tZXJJRCcKICAgICAgICAgICAgICAgICAgICB8fCAkSGVhZGVyQ29sdW1u
IGVxICdSZXNwb25zaWJsZScKICAgICAgICAgICAgICAgICAgICB8fCAkSGVhZGVyQ29sdW1uIGVx
ICdPd25lcicKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgJENzcyA9ICdIaWRkZW4nOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAg
ICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRl
cigKICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lID0+ICRIZWFkZXJDb2x1bW4sCiAgICAg
ICAgICAgICAgICAgICAgQ3NzICAgICAgICA9PiAkQ3NzLAogICAgICAgICAgICAgICAgKTsKCiAg
ICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBO
YW1lID0+ICdDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGluaycs
CiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQ
YXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSAgICAgPT4gJEhl
YWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAg
PT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyTmFtZVRyYW5zbGF0ZWQgPT4g
JFRyYW5zbGF0ZWRXb3JkIHx8ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAg
IENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAg
ICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSB8fCAnVXAnLAogICAg
ICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRC
eX0gfHwgJ0FnZScsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAg
ID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAg
ICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAg
ICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAg
ICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJEhlYWRlckNvbHVtbiBlcSAnQ3VzdG9tZXJJ
RCcgKSB7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAg
ICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljSGVhZGVy
Q29sdW1uRmlsdGVyTGlua0N1c3RvbWVySURTZWFyY2gnLAogICAgICAgICAgICAgICAgICAgICAg
ICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pblF1ZXJ5TGVuZ3RoICAg
ICAgPT4gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5RGVsYXkgICAgICAgICAg
PT4gMTAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4UmVzdWx0c0Rpc3BsYXllZCA9
PiAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkSGVhZGVyQ29sdW1uIGVx
ICdSZXNwb25zaWJsZScgfHwgJEhlYWRlckNvbHVtbiBlcSAnT3duZXInICkgewoKICAgICAgICAg
ICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAg
TmFtZSA9PiAnQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtV
c2VyU2VhcmNoJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtaW5RdWVyeUxlbmd0aCAgICAgID0+IDIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBxdWVyeURlbGF5ICAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1heFJlc3VsdHNEaXNwbGF5ZWQgPT4gMjAsCiAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGp1c3QgZmlsdGVyYWJs
ZQogICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRGaWx0ZXJhYmxlQ29sdW1uc30tPnsk
SGVhZGVyQ29sdW1ufSApIHsKCiAgICAgICAgICAgICAgICBteSAkQ3NzOwogICAgICAgICAgICAg
ICAgaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdDdXN0b21lclVzZXJJRCcgKSB7CiAgICAgICAgICAg
ICAgICAgICAgJENzcyA9ICdIaWRkZW4nOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAg
ICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigK
ICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAg
ICAgICAgICAgICAgQ3NzICAgICAgICA9PiAkQ3NzLAogICAgICAgICAgICAgICAgKTsKCiAgICAg
ICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1l
ID0+ICdDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyJywKICAgICAg
ICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAog
ICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lICAgICA9PiAkSGVhZGVyQ29s
dW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NT
LAogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJOYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNs
YXRlZFdvcmQgfHwgJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1u
RmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAg
ICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICAg
ICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAg
ICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJEhl
YWRlckNvbHVtbiBlcSAnQ3VzdG9tZXJVc2VySUQnICkgewoKICAgICAgICAgICAgICAgICAgICAk
TGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29u
dGVudExhcmdlVGlja2V0R2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtDdXN0b21lclVzZXJT
ZWFyY2gnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1pblF1ZXJ5TGVuZ3RoICAgICAgPT4gMiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHF1ZXJ5RGVsYXkgICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWF4UmVzdWx0c0Rpc3BsYXllZCA9PiAyMCwKICAgICAgICAgICAgICAgICAgICAg
ICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICB9CgogICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMganVzdCBzb3J0YWJsZQogICAg
ICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57JEhlYWRlckNv
bHVtbn0gKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAg
ICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljSGVhZGVyQ29sdW1u
TGluaycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSAgICAg
PT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAg
ICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyTmFtZVRyYW5zbGF0
ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAg
ICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5IHx8ICdVcCcsCiAgICAgICAg
ICAgICAgICAgICAgICAgIFNvcnRCeSAgICAgICAgICAgICAgID0+ICRTZWxmLT57U29ydEJ5fSB8
fCAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAg
ICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAg
ICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAg
ICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAk
TGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50
TGFyZ2VUaWNrZXRHZW5lcmljSGVhZGVyQ29sdW1uRW1wdHknLAogICAgICAgICAgICAgICAgICAg
IERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAg
ICAgICAgICAgIEhlYWRlck5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkSGVh
ZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lICAgICA9
PiAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAg
ICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAg
ICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAg
ICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRHluYW1pYyBmaWVsZHMKICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgbXkg
JERGQ29sdW1uID0gJEhlYWRlckNvbHVtbjsKICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHlu
YW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICBmb3Ig
bXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAg
ICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsK
ICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRERkNvbmZpZy0+e05hbWV9IG5l
ICRERkNvbHVtbjsKCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29u
ZmlnOwogICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgIH0KICAg
ICAgICAgICAgbmV4dCBIRUFERVJDT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWlj
RmllbGRDb25maWcpOwoKICAgICAgICAgICAgbXkgJExhYmVsID0gJER5bmFtaWNGaWVsZENvbmZp
Zy0+e0xhYmVsfTsKCiAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkTGFiZWwgPSAkTGF5b3V0T2Jq
ZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJExhYmVsKTsKCiAgICAgICAgICAgIG15
ICREeW5hbWljRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZp
Zy0+e05hbWV9OwoKICAgICAgICAgICAgbXkgJENTUyAgICAgICAgICAgICA9ICcnOwogICAgICAg
ICAgICBteSAkRmlsdGVyVGl0bGUgICAgID0gJExhYmVsOwogICAgICAgICAgICBteSAkRmlsdGVy
VGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgbm90IGFjdGl2ZScpOwogICAgICAgICAg
ICBpZiAoCiAgICAgICAgICAgICAgICAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0KICAg
ICAgICAgICAgICAgICYmIGRlZmluZWQgJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJTZWxlY3R9LT57
JER5bmFtaWNGaWVsZE5hbWV9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICRDU1MgLj0gJ0ZpbHRlckFjdGl2ZSAnOwogICAgICAgICAgICAgICAgJEZpbHRl
clRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIGFjdGl2ZScpOwogICAgICAgICAgICB9
CiAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VP
YmplY3R9LT5UcmFuc2xhdGUoJEZpbHRlclRpdGxlRGVzYyk7CiAgICAgICAgICAgICRGaWx0ZXJU
aXRsZSAuPSAnLCAnIC4gJEZpbHRlclRpdGxlRGVzYzsKCiAgICAgICAgICAgICMgZ2V0IGZpZWxk
IHNvcnRhYmxlIGNvbmRpdGlvbgogICAgICAgICAgICBteSAkSXNTb3J0YWJsZSA9ICRLZXJuZWw6
Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+SGFzQmVo
YXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVs
ZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNTb3J0YWJs
ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNldCB0aXRsZQogICAgICAgICAgICBt
eSAkVGl0bGUgPSAkTGFiZWw7CgogICAgICAgICAgICAjIGFkZCBzdXJyb3VuZGluZyBjb250YWlu
ZXIKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1l
ID0+ICdHZW5lcmFsT3ZlcnZpZXdIZWFkZXInLAogICAgICAgICAgICApOwogICAgICAgICAgICAk
TGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJn
ZVRpY2tldEdlbmVyaWNIZWFkZXJUaWNrZXRIZWFkZXInLAogICAgICAgICAgICAgICAgRGF0YSA9
PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkSXNTb3J0YWJsZSkgewogICAg
ICAgICAgICAgICAgbXkgJE9yZGVyQnk7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAg
ICAgICAgICAgJFNlbGYtPntTb3J0Qnl9CiAgICAgICAgICAgICAgICAgICAgJiYgKCAkU2VsZi0+
e1NvcnRCeX0gZXEgKCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFt
ZX0gKSApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICAgIGlmICggJFNlbGYtPntPcmRlckJ5fSAmJiAoICRTZWxmLT57T3JkZXJCeX0gZXEg
J1VwJyApICkgewogICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdEb3duJzsKICAg
ICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRpbmdMYXJnZSc7CiAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICAkT3JkZXJCeSA9ICdVcCc7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1Mg
Lj0gJyBTb3J0RGVzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAg
ICAgICAgICAgICAgICMgYWRkIHRpdGxlIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICAgICAgICAg
bXkgJFRpdGxlRGVzYwogICAgICAgICAgICAgICAgICAgICAgICA9ICRPcmRlckJ5IGVxICdEb3du
JyA/IFRyYW5zbGF0YWJsZSgnc29ydGVkIGFzY2VuZGluZycpIDogVHJhbnNsYXRhYmxlKCdzb3J0
ZWQgZGVzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSAkTGF5b3V0
T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFRpdGxlRGVzYyk7CiAgICAgICAg
ICAgICAgICAgICAgJFRpdGxlIC49ICcsICcgLiAkVGl0bGVEZXNjOwogICAgICAgICAgICAgICAg
fQoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAg
ICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZVRpY2tldEdlbmVyaWNIZWFkZXJDb2x1bW4nLAogICAg
ICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJD
b2x1bW5OYW1lID0+ICREeW5hbWljRmllbGROYW1lIHx8ICcnLAogICAgICAgICAgICAgICAgICAg
ICAgICBDU1MgPT4gJENTUyB8fCAnJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAg
ICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHRoZSBkeW5hbWljIGZpZWxkIGlz
IHNvcnRhYmxlIGFuZCBmaWx0ZXJhYmxlIChzb3J0YWJsZSBjaGVjayB3YXMgbWFkZSBiZWZvcmUp
CiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57VmFsaWRGaWx0ZXJhYmxlQ29sdW1uc30tPnsk
RHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8g
c2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVt
bkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAg
ICAgICAgICAgIENvbHVtbk5hbWUgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgIExhYmVsICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICk7Cgog
ICAgICAgICAgICAgICAgICAgICMgb3V0cHV0IHNvcnRhYmxlIGFuZCBmaWx0ZXJhYmxlIGR5bmFt
aWMgZmllbGQKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAg
ICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0hlYWRl
ckNvbHVtbkZpbHRlckxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEhlYWRlckNvbHVtbk5hbWUgICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEhlYWRlck5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkTGFi
ZWwgfHwgJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1
bW5GaWx0ZXJTdHJnICAgICA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5IHx8ICdVcCcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1Nv
cnRCeX0gfHwgJ0FnZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAg
ICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0
bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
RmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAg
ICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAg
ICAgICAgICAgIyBvdGhlcndpc2UgdGhlIGR5bmFtaWMgZmllbGQgaXMgb25seSBzb3J0YWJsZSAo
c29ydGFibGUgY2hlY2sgd2FzIG1hZGUgYmVmb3JlKQogICAgICAgICAgICAgICAgZWxzZSB7Cgog
ICAgICAgICAgICAgICAgICAgICMgb3V0cHV0IHNvcnRhYmxlIGR5bmFtaWMgZmllbGQKICAgICAg
ICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAg
ICAgTmFtZSA9PiAnQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0hlYWRlckNvbHVtbkxpbmsnLAog
ICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUg
ICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NT
ICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhl
YWRlck5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkTGFiZWwgfHwgJER5bmFtaWNGaWVsZE5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAk
T3JkZXJCeSB8fCAnVXAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAg
ICAgICAgICAgPT4gJFNlbGYtPntTb3J0Qnl9IHx8ICREeW5hbWljRmllbGROYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1l
fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRU
aXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+
ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAg
ICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGlm
IHRoZSBkeW5hbWljIGZpZWxkIHdhcyBub3Qgc29ydGFibGUgKGNoZWNrIHdhcyBtYWRlIGFuZCBm
YWlsIGJlZm9yZSkKICAgICAgICAgICAgIyBpdCBtaWdodCBiZSBmaWx0ZXJhYmxlCiAgICAgICAg
ICAgIGVsc2lmICggJFNlbGYtPntWYWxpZEZpbHRlcmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmll
bGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAg
ICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljSGVhZGVyQ29s
dW1uJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgSGVhZGVyQ29sdW1uTmFtZSA9PiAkRHluYW1pY0ZpZWxkTmFtZSB8fCAnJywKICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICA9PiAkQ1NTICAgICAgICAgICAgICB8fCAn
JywKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAg
ICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAg
IyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAg
IG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAg
ICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgTGFiZWwgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICApOwoKICAg
ICAgICAgICAgICAgICMgb3V0cHV0IGZpbHRlcmFibGUgKG5vdCBzb3J0YWJsZSkgZHluYW1pYyBm
aWVsZAogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAg
ICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0hlYWRlckNvbHVtbkZpbHRl
cicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSAgICAgPT4g
JER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAg
ICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlck5hbWVUcmFuc2xh
dGVkID0+ICRUcmFuc2xhdGVkTGFiZWwgfHwgJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAog
ICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e05h
bWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0
bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0
ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgIyBvdGhlcndpc2UgdGhlIGZpZWxkIGlzIG5vdCBmaWx0ZXJh
YmxlIGFuZCBub3Qgc29ydGFibGUKICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAg
JExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVu
dExhcmdlVGlja2V0R2VuZXJpY0hlYWRlckNvbHVtbicsCiAgICAgICAgICAgICAgICAgICAgRGF0
YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgPT4gJER5bmFt
aWNGaWVsZE5hbWUgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyA9PiAkQ1NTIHx8
ICcnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAg
ICAgICAgICMgb3V0cHV0IHBsYWluIGR5bmFtaWMgZmllbGQgaGVhZGVyIChub3QgZmlsdGVyYWJs
ZSwgbm90IHNvcnRhYmxlKQogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAg
ICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0hlYWRl
ckNvbHVtbkVtcHR5JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAg
ICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJOYW1lVHJh
bnNsYXRlZCA9PiAkVHJhbnNsYXRlZExhYmVsIHx8ICREeW5hbWljRmllbGROYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lICAgICA9PiAkRHluYW1pY0ZpZWxkTmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywK
ICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAog
ICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAg
ICAgICAgfQogICAgfQoKICAgICMgc2hvdyB0aWNrZXRzCiAgICBteSAkQ291bnQgPSAwOwogICAg
VElDS0VUSUQ6CiAgICBmb3IgbXkgJFRpY2tldElEICggQHskVGlja2V0SURzfSApIHsKICAgICAg
ICAkQ291bnQrKzsKICAgICAgICBuZXh0IFRJQ0tFVElEIGlmICRDb3VudCA8ICRTZWxmLT57U3Rh
cnRIaXR9OwogICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAg
ICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICBVc2VySUQg
ICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAw
LAogICAgICAgICAgICBTaWxlbnQgICAgICAgID0+IDEKICAgICAgICApOwoKICAgICAgICBuZXh0
IFRJQ0tFVElEIGlmICElVGlja2V0OwoKICAgICAgICAjIHNldCBhIGRlZmF1bHQgdGl0bGUgaWYg
dGlja2V0IGhhcyBubyB0aXRsZQogICAgICAgIGlmICggISRUaWNrZXR7VGl0bGV9ICkgewogICAg
ICAgICAgICAkVGlja2V0e1RpdGxlfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0t
PlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICdUaGlzIHRpY2tldCBoYXMgbm8gdGl0bGUgb3Ig
c3ViamVjdCcKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRXaG9sZVRpdGxl
ID0gJFRpY2tldHtUaXRsZX0gfHwgJyc7CiAgICAgICAgJFRpY2tldHtUaXRsZX0gPSAkVGlja2V0
T2JqZWN0LT5UaWNrZXRTdWJqZWN0Q2xlYW4oCiAgICAgICAgICAgIFRpY2tldE51bWJlciA9PiAk
VGlja2V0e1RpY2tldE51bWJlcn0sCiAgICAgICAgICAgIFN1YmplY3QgICAgICA9PiAkVGlja2V0
e1RpdGxlfSwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBodW1hbiBhZ2UKICAgICAgICBp
ZiAoICRTZWxmLT57Q29uZmlnfS0+e1RpbWV9IG5lICdBZ2UnICkgewogICAgICAgICAgICAkVGlj
a2V0e1RpbWV9ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJBZ2VJbkhvdXJzKAogICAgICAgICAg
ICAgICAgQWdlICAgPT4gJFRpY2tldHsgJFNlbGYtPntDb25maWd9LT57VGltZX0gfSwKICAgICAg
ICAgICAgICAgIFNwYWNlID0+ICcgJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICRUaWNrZXR7VGltZX0gPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21l
ckFnZSgKICAgICAgICAgICAgICAgIEFnZSAgID0+ICRUaWNrZXR7ICRTZWxmLT57Q29uZmlnfS0+
e1RpbWV9IH0sCiAgICAgICAgICAgICAgICBTcGFjZSA9PiAnICcsCiAgICAgICAgICAgICk7CiAg
ICAgICAgfQoKICAgICAgICAjIC0tLQogICAgICAgICMgUFMKICAgICAgICAjIC0tLQoKICAgICAg
ICAjIHJ1biBob29rcwogICAgICAgIG15ICRIb29rcyAgICA9ICRTZWxmLT57SE9PS1N9IHx8IHt9
OwogICAgICAgIG15ICRGb250U2VlbiA9IDA7CgogICAgICAgIFBSSU9SSVRZOgogICAgICAgIGZv
ciBteSAkUHJpb3JpdHkgKCBzb3J0IGtleXMgJXskSG9va3N9ICkgewoKICAgICAgICAgICAgbXkg
JE1vZHVsZSA9ICRIb29rcy0+eyRQcmlvcml0eX07CgogICAgICAgICAgICBpZiAoICRTZWxmLT57
SG9va09iamVjdHN9LT57JE1vZHVsZX0gKSB7CiAgICAgICAgICAgICAgICBteSAkT2JqZWN0ID0g
JFNlbGYtPntIb29rT2JqZWN0c30tPnskTW9kdWxlfTsKICAgICAgICAgICAgICAgIG15ICRDb2xv
ciAgPSAkT2JqZWN0LT5SdW4oCiAgICAgICAgICAgICAgICAgICAgJVRpY2tldCwKICAgICAgICAg
ICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBQUklPUklUWSBpZiAhJENvbG9yOwoKICAg
ICAgICAgICAgICAgIGlmICggcmVmICRDb2xvciApIHsKICAgICAgICAgICAgICAgICAgICBteSAk
SG9va2VkID0gJyc7CgogICAgICAgICAgICAgICAgICAgIEtFWToKICAgICAgICAgICAgICAgICAg
ICBmb3IgbXkgJEtleSAoIHF3L0ZvbnQgQmFja2dyb3VuZC8gKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIG5leHQgS0VZIGlmICEkQ29sb3ItPnskS2V5fTsKICAgICAgICAgICAgICAgICAgICAg
ICAgbmV4dCBLRVkgaWYgJEtleSBlcSAnRm9udCcgJiYgJEZvbnRTZWVuKys7CgogICAgICAgICAg
ICAgICAgICAgICAgICBteSAkU3VmZml4ICAgICA9ICRLZXkgZXEgJ0ZvbnQnID8gJ0ZvbnQnIDog
Jyc7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb2xvclZhbHVlID0gJENvbG9yLT57JEtl
eX07CiAgICAgICAgICAgICAgICAgICAgICAgICRDb2xvclZhbHVlICAgID1+IHN7XEEjfXt9OwoK
ICAgICAgICAgICAgICAgICAgICAgICAgJEhvb2tlZCAuPSBzcHJpbnRmICcgSG9va2VkJXNfJXMn
LCAkU3VmZml4LCAkQ29sb3JWYWx1ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAg
ICAgICAgICAgICRUaWNrZXR7SG9va2VkfSAgICAgPSAkSG9va2VkOwogICAgICAgICAgICAgICAg
ICAgICRUaWNrZXR7SG9va2VkTWFpbn0gPSAnSG9va2VkJzsKCiAgICAgICAgICAgICAgICAgICAg
bGFzdCBQUklPUklUWSBpZiAkQ29sb3ItPntCYWNrZ3JvdW5kfTsKICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIGVsc2lmICggJENvbG9yID1+IG17IFxBIFsjXT8gW2EtZkEtRjAtOV17
Nn0gXHogfXhtcyApIHsKICAgICAgICAgICAgICAgICAgICAkQ29sb3IgPX4gc3tcQSN9e307CiAg
ICAgICAgICAgICAgICAgICAgJFRpY2tldHtIb29rZWR9ICAgICA9ICdIb29rZWRfJyAuICRDb2xv
cjsKICAgICAgICAgICAgICAgICAgICAkVGlja2V0e0hvb2tlZE1haW59ID0gJ0hvb2tlZCc7CiAg
ICAgICAgICAgICAgICAgICAgbGFzdCBQUklPUklUWTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyAtLS0KCiAgICAgICAgIyBzaG93IHRpY2tldAog
ICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDb250ZW50
TGFyZ2VUaWNrZXRHZW5lcmljUm93JywKICAgICAgICAgICAgRGF0YSA9PiBcJVRpY2tldCwKICAg
ICAgICApOwoKICAgICAgICAjIHNob3cgdGlja2V0IGZsYWdzCiAgICAgICAgbXkgQFRpY2tldE1l
dGFJdGVtcyA9ICRMYXlvdXRPYmplY3QtPlRpY2tldE1ldGFJdGVtcygKICAgICAgICAgICAgVGlj
a2V0ID0+IFwlVGlja2V0LAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRJdGVtIChAVGlja2V0
TWV0YUl0ZW1zKSB7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAg
ICAgICAgIE5hbWUgPT4gJ0dlbmVyYWxPdmVydmlld1JvdycsCiAgICAgICAgICAgICk7CiAgICAg
ICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29u
dGVudExhcmdlVGlja2V0R2VuZXJpY1Jvd01ldGEnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7
fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCRJdGVtKSB7CiAgICAgICAgICAgICAg
ICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250
ZW50TGFyZ2VUaWNrZXRHZW5lcmljUm93TWV0YUltYWdlJywKICAgICAgICAgICAgICAgICAgICBE
YXRhID0+ICRJdGVtLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0K
CiAgICAgICAgIyBzYXZlIGNvbHVtbiBjb250ZW50CiAgICAgICAgbXkgJERhdGFWYWx1ZTsKCiAg
ICAgICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgICAgICBteSAkQmFja2VuZE9iamVjdCA9ICRL
ZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsK
ICAgICAgICBteSAkVXNlck9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lz
dGVtOjpVc2VyJyk7CgogICAgICAgICMgc2hvdyBhbGwgbmVlZGVkIGNvbHVtbnMKICAgICAgICBD
T0xVTU46CiAgICAgICAgZm9yIG15ICRDb2x1bW4gKEBDb2x1bW5zKSB7CgogICAgICAgICAgICAj
IHNraXAgQ3VzdG9tZXJJRCBpZiBDdXN0b21lciBJbmZvcm1hdGlvbiBDZW50ZXIKICAgICAgICAg
ICAgaWYgKAogICAgICAgICAgICAgICAgJFNlbGYtPntBY3Rpb259IGVxICdBZ2VudEN1c3RvbWVy
SW5mb3JtYXRpb25DZW50ZXInCiAgICAgICAgICAgICAgICAmJiAkQ29sdW1uIGVxICdDdXN0b21l
cklEJwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuZXh0
IENPTFVNTjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkQ29sdW1uICF+IG17XEEg
RHluYW1pY0ZpZWxkX314bXMgKSB7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+Qmxv
Y2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3Um93JywKICAg
ICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAg
ICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljVGlja2V0
Q29sdW1uJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAg
KTsKCiAgICAgICAgICAgICAgICBteSAkQmxvY2tUeXBlID0gJyc7CiAgICAgICAgICAgICAgICBt
eSAkQ1NTQ2xhc3MgID0gJyc7CgogICAgICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdUaWNr
ZXROdW1iZXInICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAog
ICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmlj
VGlja2V0TnVtYmVyJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
VGl0bGUgPT4gJFRpY2tldHtUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAg
ICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTFVNTjsKICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnRXNjYWxhdGlv
blRpbWUnICkgewogICAgICAgICAgICAgICAgICAgIG15ICVFc2NhbGF0aW9uRGF0YTsKICAgICAg
ICAgICAgICAgICAgICAkRXNjYWxhdGlvbkRhdGF7RXNjYWxhdGlvblRpbWV9ICAgICAgICAgICAg
PSAkVGlja2V0e0VzY2FsYXRpb25UaW1lfTsKICAgICAgICAgICAgICAgICAgICAkRXNjYWxhdGlv
bkRhdGF7RXNjYWxhdGlvbkRlc3RpbmF0aW9uRGF0ZX0gPSAkVGlja2V0e0VzY2FsYXRpb25EZXN0
aW5hdGlvbkRhdGV9OwoKICAgICAgICAgICAgICAgICAgICAkRXNjYWxhdGlvbkRhdGF7RXNjYWxh
dGlvblRpbWVIdW1hbn0gPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckFnZUluSG91cnMoCiAgICAg
ICAgICAgICAgICAgICAgICAgIEFnZSAgID0+ICRFc2NhbGF0aW9uRGF0YXtFc2NhbGF0aW9uVGlt
ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNwYWNlID0+ICcgJywKICAgICAgICAgICAgICAg
ICAgICApOwogICAgICAgICAgICAgICAgICAgICRFc2NhbGF0aW9uRGF0YXtFc2NhbGF0aW9uVGlt
ZVdvcmtpbmdUaW1lfSA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyQWdlSW5Ib3VycygKICAgICAg
ICAgICAgICAgICAgICAgICAgQWdlICAgPT4gJEVzY2FsYXRpb25EYXRhe0VzY2FsYXRpb25UaW1l
V29ya2luZ1RpbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBTcGFjZSA9PiAnICcsCiAgICAg
ICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQgJFRpY2tl
dHtFc2NhbGF0aW9uVGltZX0gJiYgJFRpY2tldHtFc2NhbGF0aW9uVGltZX0gPCA2MCAqIDYwICog
MSApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkRXNjYWxh
dGlvbkRhdGF7RXNjYWxhdGlvbkNsYXNzfSA9ICdXYXJuaW5nJzsKICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAg
ICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZVRpY2tldEdlbmVyaWNFc2NhbGF0aW9u
VGltZScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4geyVFc2NhbGF0aW9uRGF0YX0s
CiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTFVNTjsK
CiAgICAgICAgICAgICAgICAgICAgJERhdGFWYWx1ZSA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVy
QWdlKAogICAgICAgICAgICAgICAgICAgICAgICBBZ2UgICA9PiAkVGlja2V0eydFc2NhbGF0aW9u
VGltZSd9LAogICAgICAgICAgICAgICAgICAgICAgICBTcGFjZSA9PiAnICcKICAgICAgICAgICAg
ICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29s
dW1uIGVxICdBZ2UnICkgewogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkTGF5b3V0
T2JqZWN0LT5DdXN0b21lckFnZSgKICAgICAgICAgICAgICAgICAgICAgICAgQWdlICAgPT4gJFRp
Y2tldHtBZ2V9LAogICAgICAgICAgICAgICAgICAgICAgICBTcGFjZSA9PiAnICcsCiAgICAgICAg
ICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICgg
JENvbHVtbiBlcSAnRXNjYWxhdGlvblNvbHV0aW9uVGltZScgKSB7CiAgICAgICAgICAgICAgICAg
ICAgJEJsb2NrVHlwZSA9ICdFc2NhbGF0aW9uJzsKICAgICAgICAgICAgICAgICAgICAkRGF0YVZh
bHVlID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJBZ2VJbkhvdXJzKAogICAgICAgICAgICAgICAg
ICAgICAgICBBZ2UgPT4gJFRpY2tldHtTb2x1dGlvblRpbWV9IHx8IDAsCiAgICAgICAgICAgICAg
ICAgICAgICAgIFNwYWNlID0+ICcgJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAg
ICAgICAgICAgIGlmICggZGVmaW5lZCAkVGlja2V0e1NvbHV0aW9uVGltZX0gJiYgJFRpY2tldHtT
b2x1dGlvblRpbWV9IDwgNjAgKiA2MCAqIDEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRD
U1NDbGFzcyA9ICdXYXJuaW5nJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0VzY2FsYXRpb25SZXNwb25z
ZVRpbWUnICkgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnRXNjYWxhdGlvbic7
CiAgICAgICAgICAgICAgICAgICAgJERhdGFWYWx1ZSA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVy
QWdlSW5Ib3VycygKICAgICAgICAgICAgICAgICAgICAgICAgQWdlID0+ICRUaWNrZXR7Rmlyc3RS
ZXNwb25zZVRpbWV9IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIFNwYWNlID0+ICcgJywK
ICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAg
ICAgICAgICAgICAgICAgZGVmaW5lZCAkVGlja2V0e0ZpcnN0UmVzcG9uc2VUaW1lfQogICAgICAg
ICAgICAgICAgICAgICAgICAmJiAkVGlja2V0e0ZpcnN0UmVzcG9uc2VUaW1lfSA8IDYwICogNjAg
KiAxCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICRDU1NDbGFzcyA9ICdXYXJuaW5nJzsKICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4g
ZXEgJ0VzY2FsYXRpb25VcGRhdGVUaW1lJyApIHsKICAgICAgICAgICAgICAgICAgICAkQmxvY2tU
eXBlID0gJ0VzY2FsYXRpb24nOwogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkTGF5
b3V0T2JqZWN0LT5DdXN0b21lckFnZUluSG91cnMoCiAgICAgICAgICAgICAgICAgICAgICAgIEFn
ZSA9PiAkVGlja2V0e1VwZGF0ZVRpbWV9IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIFNw
YWNlID0+ICcgJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlm
ICggZGVmaW5lZCAkVGlja2V0e1VwZGF0ZVRpbWV9ICYmICRUaWNrZXR7VXBkYXRlVGltZX0gPCA2
MCAqIDYwICogMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENTU0NsYXNzID0gJ1dhcm5p
bmcnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgIGVsc2lmICggJENvbHVtbiBlcSAnUGVuZGluZ1RpbWUnICkgewogICAgICAgICAgICAgICAg
ICAgICRCbG9ja1R5cGUgPSAnRXNjYWxhdGlvbic7CiAgICAgICAgICAgICAgICAgICAgJERhdGFW
YWx1ZSA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyQWdlKAogICAgICAgICAgICAgICAgICAgICAg
ICBBZ2UgICA9PiAkVGlja2V0eydVbnRpbFRpbWUnfSwKICAgICAgICAgICAgICAgICAgICAgICAg
U3BhY2UgPT4gJyAnCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBp
ZiAoIGRlZmluZWQgJFRpY2tldHtVbnRpbFRpbWV9ICYmICRUaWNrZXR7VW50aWxUaW1lfSA8IC0x
ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTQ2xhc3MgPSAnV2FybmluZyc7CiAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYg
KCAkQ29sdW1uIGVxICdPd25lcicgKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IG93bmVy
IGluZm8KICAgICAgICAgICAgICAgICAgICBteSAlT3duZXJJbmZvID0gJFVzZXJPYmplY3QtPkdl
dFVzZXJEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRpY2tldHtPd25l
cklEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICREYXRhVmFs
dWUgPSAkT3duZXJJbmZveydVc2VyRmlyc3RuYW1lJ30gLiAnICcgLiAkT3duZXJJbmZveydVc2Vy
TGFzdG5hbWUnfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENv
bHVtbiBlcSAnUmVzcG9uc2libGUnICkgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCByZXNw
b25zaWJsZSBpbmZvCiAgICAgICAgICAgICAgICAgICAgbXkgJVJlc3BvbnNpYmxlSW5mbyA9ICRV
c2VyT2JqZWN0LT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+
ICRUaWNrZXR7UmVzcG9uc2libGVJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAg
ICAgICAgICAgICAkRGF0YVZhbHVlID0gJFJlc3BvbnNpYmxlSW5mb3snVXNlckZpcnN0bmFtZSd9
IC4gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJFJlc3BvbnNpYmxlSW5mb3snVXNlckxh
c3RuYW1lJ307CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoCiAgICAg
ICAgICAgICAgICAgICAgJENvbHVtbiBlcSAnU3RhdGUnCiAgICAgICAgICAgICAgICAgICAgfHwg
JENvbHVtbiBlcSAnTG9jaycKICAgICAgICAgICAgICAgICAgICB8fCAkQ29sdW1uIGVxICdQcmlv
cml0eScKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICAgJEJsb2NrVHlwZSA9ICdUcmFuc2xhdGFibGUnOwogICAgICAgICAgICAgICAgICAg
ICREYXRhVmFsdWUgPSAkVGlja2V0eyRDb2x1bW59OwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDcmVhdGVkJyB8fCAkQ29sdW1uIGVxICdDaGFu
Z2VkJyApIHsKICAgICAgICAgICAgICAgICAgICAkQmxvY2tUeXBlID0gJ1RpbWUnOwogICAgICAg
ICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkVGlja2V0eyRDb2x1bW59OwogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXN0b21lck5hbWUnICkg
ewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBjdXN0b21lciBuYW1lCiAgICAgICAgICAgICAg
ICAgICAgbXkgJEN1c3RvbWVyTmFtZTsKICAgICAgICAgICAgICAgICAgICBpZiAoICRUaWNrZXR7
Q3VzdG9tZXJVc2VySUR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ3VzdG9tZXJOYW1l
ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpLT5DdXN0
b21lck5hbWUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFRpY2tl
dHtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ3VzdG9tZXJOYW1l
OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdD
dXN0b21lckNvbXBhbnlOYW1lJyApIHsKICAgICAgICAgICAgICAgICAgICBteSAlQ3VzdG9tZXJD
b21wYW55RGF0YTsKICAgICAgICAgICAgICAgICAgICBpZiAoICRUaWNrZXR7Q3VzdG9tZXJJRH0g
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICVDdXN0b21lckNvbXBhbnlEYXRhID0gJEtlcm5l
bDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyQ29tcGFueScpLT5DdXN0b21lckNv
bXBhbnlHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lcklEID0+ICRUaWNr
ZXR7Q3VzdG9tZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ3VzdG9tZXJDb21wYW55
RGF0YXtDdXN0b21lckNvbXBhbnlOYW1lfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkVGlja2V0eyRDb2x1
bW59OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAn
VGl0bGUnICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAg
ICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICJDb250ZW50TGFyZ2VUaWNrZXRUaXRsZSIsCiAg
ICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGl0bGUgPT4gIiREYXRhVmFsdWUgIiB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdob2xlVGl0bGUgPT4gJFdob2xlVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDbGFzcyAgICAgID0+ICRDU1NDbGFzcyB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAg
fSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAg
ICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICJDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljQ29s
dW1uJEJsb2NrVHlwZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR2VuZXJpY1ZhbHVlID0+ICREYXRhVmFsdWUgfHwgJycsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENTU0NsYXNzICB8fCAn
JywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAg
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBEeW5hbWljIGZpZWxk
cwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25m
aWc7CiAgICAgICAgICAgICAgICBteSAkREZDb2x1bW4gPSAkQ29sdW1uOwogICAgICAgICAgICAg
ICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgICAgIERZTkFN
SUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5
bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBp
ZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0
IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAg
ICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAg
ICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICBuZXh0IENPTFVNTiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZp
Zyk7CgogICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgdmFsdWUKICAgICAgICAgICAgICAgIG15
ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgICAgICAgICBE
eW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAg
ICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgKTsK
CiAgICAgICAgICAgICAgICBteSAkVmFsdWVTdHJnID0gJEJhY2tlbmRPYmplY3QtPkRpc3BsYXlW
YWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5
bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAg
PT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgIFZhbHVlTWF4Q2hhcnMgICAgICA9PiAyMCwK
ICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwK
ICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2so
CiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0R5
bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAg
ICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAg
fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkVmFsdWVTdHJnLT57
TGlua30gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAg
ICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZVRpY2tldEdlbmVyaWNEeW5h
bWljRmllbGRMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVl
U3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAg
ICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTGluayAgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntMaW5r
fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntOYW1l
fSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAg
ICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAg
ICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0R5bmFtaWNGaWVs
ZFBsYWluJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGl0bGUgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICB9CgogICAgIyBzaG93ICJub25lIiBpZiBubyB0
aWNrZXQgaXMgYXZhaWxhYmxlCiAgICBpZiAoICEkVGlja2V0SURzIHx8ICFAeyRUaWNrZXRJRHN9
ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdD
b250ZW50TGFyZ2VUaWNrZXRHZW5lcmljTm9uZScsCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAg
ICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciByZWZyZXNoIHRpbWUKICAgIG15ICRSZWZy
ZXNoID0gJyc7CiAgICBpZiAoICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfSApIHsKICAgICAgICAk
UmVmcmVzaCA9IDYwICogJFNlbGYtPntVc2VyUmVmcmVzaFRpbWV9OwogICAgICAgIG15ICROYW1l
SFRNTCA9ICRTZWxmLT57TmFtZX07CiAgICAgICAgJE5hbWVIVE1MID1+IHN7LX17X314bXNnOwog
ICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDb250ZW50
TGFyZ2VUaWNrZXRHZW5lcmljUmVmcmVzaCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAg
ICAgICAgICAgJXsgJFNlbGYtPntDb25maWd9IH0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAg
ICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgTmFtZUhUTUwgICAgPT4gJE5hbWVI
VE1MLAogICAgICAgICAgICAgICAgUmVmcmVzaFRpbWUgPT4gJFJlZnJlc2gsCiAgICAgICAgICAg
ICAgICBDdXN0b21lcklEICA9PiAkUGFyYW17Q3VzdG9tZXJJRH0sCiAgICAgICAgICAgICAgICAl
eyRTdW1tYXJ5fSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sg
Zm9yIGFjdGl2ZSBmaWx0ZXJzIGFuZCBhZGQgYSAncmVtb3ZlIGZpbHRlcnMnIGJ1dHRvbiB0byB0
aGUgd2lkZ2V0IGhlYWRlcgogICAgaWYgKCAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0g
JiYgSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fSApICkg
ewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDb250
ZW50TGFyZ2VUaWNrZXRHZW5lcmljUmVtb3ZlRmlsdGVycycsCiAgICAgICAgICAgIERhdGEgPT4g
ewogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAg
ICAgICAgQ3VzdG9tZXJJRCA9PiAkUGFyYW17Q3VzdG9tZXJJRH0sCiAgICAgICAgICAgIH0sCiAg
ICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAog
ICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljUmVtb3ZlRmlsdGVy
c1JlbW92ZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTmFtZSA9PiAk
U2VsZi0+e05hbWV9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJENv
bnRlbnQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdB
Z2VudERhc2hib2FyZFRpY2tldEdlbmVyaWMnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAg
ICAgICAgICAgICV7ICRTZWxmLT57Q29uZmlnfSB9LAogICAgICAgICAgICBOYW1lID0+ICRTZWxm
LT57TmFtZX0sCiAgICAgICAgICAgICV7JFN1bW1hcnl9LAogICAgICAgICAgICBGaWx0ZXJWYWx1
ZSA9PiAkU2VsZi0+e0ZpbHRlcn0sCiAgICAgICAgICAgIEN1c3RvbWVySUQgID0+ICRTZWxmLT57
Q3VzdG9tZXJJRH0sCiAgICAgICAgfSwKICAgICAgICBLZWVwU2NyaXB0VGFncyA9PiAkUGFyYW17
QUpBWH0sCiAgICApOwoKICAgIHJldHVybiAkQ29udGVudDsKfQoKc3ViIF9Jbml0aWFsQ29sdW1u
RmlsdGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEk
UGFyYW17Q29sdW1uTmFtZX07CiAgICByZXR1cm4gaWYgISRTZWxmLT57VmFsaWRGaWx0ZXJhYmxl
Q29sdW1uc30tPnsgJFBhcmFte0NvbHVtbk5hbWV9IH07CgogICAgIyBnZXQgbGF5b3V0IG9iamVj
dAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0
OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkTGFiZWwgPSAkUGFyYW17TGFiZWx9IHx8ICRQYXJh
bXtDb2x1bW5OYW1lfTsKICAgICRMYWJlbCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVj
dH0tPlRyYW5zbGF0ZSgkTGFiZWwpOwoKICAgICMgc2V0IGZpeGVkIHZhbHVlcwogICAgbXkgJERh
dGEgPSBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnJywKICAgICAgICAgICAgVmFs
dWUgPT4gdWMgJExhYmVsLAogICAgICAgIH0sCiAgICBdOwoKICAgICMgZGVmaW5lIGlmIGNvbHVt
biBmaWx0ZXIgdmFsdWVzIHNob3VsZCBiZSB0cmFuc2xhdGFibGUKICAgIG15ICRUcmFuc2xhdGlv
bk9wdGlvbiA9IDA7CgogICAgaWYgKAogICAgICAgICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnU3Rh
dGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdMb2NrJwogICAgICAgIHx8ICRQ
YXJhbXtDb2x1bW5OYW1lfSBlcSAnUHJpb3JpdHknCiAgICAgICAgKQogICAgewogICAgICAgICRU
cmFuc2xhdGlvbk9wdGlvbiA9IDE7CiAgICB9CgogICAgbXkgJENsYXNzID0gJ0NvbHVtbkZpbHRl
cic7CiAgICBpZiAoICRQYXJhbXtDc3N9ICkgewogICAgICAgICRDbGFzcyAuPSAnICcgLiAkUGFy
YW17Q3NzfTsKICAgIH0KCiAgICAjIGJ1aWxkIHNlbGVjdCBIVE1MCiAgICBteSAkQ29sdW1uRmls
dGVySFRNTCA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIE5hbWUgICAg
ICAgID0+ICdDb2x1bW5GaWx0ZXInIC4gJFBhcmFte0NvbHVtbk5hbWV9IC4gJFNlbGYtPntOYW1l
fSwKICAgICAgICBEYXRhICAgICAgICA9PiAkRGF0YSwKICAgICAgICBDbGFzcyAgICAgICA9PiAk
Q2xhc3MsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gJFRyYW5zbGF0aW9uT3B0aW9uLAogICAgICAg
IFNlbGVjdGVkSUQgID0+ICcnLAogICAgKTsKICAgIHJldHVybiAkQ29sdW1uRmlsdGVySFRNTDsK
fQoKc3ViIF9HZXRDb2x1bW5WYWx1ZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsK
CiAgICByZXR1cm4gaWYgIUlzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtIZWFkZXJDb2x1bW59ICk7
CgogICAgbXkgJEhlYWRlckNvbHVtbiA9ICRQYXJhbXtIZWFkZXJDb2x1bW59OwogICAgbXkgJUNv
bHVtbkZpbHRlclZhbHVlczsKICAgIG15ICRUaWNrZXRJRHM7CgogICAgaWYgKCBJc0FycmF5UmVm
V2l0aERhdGEoICRQYXJhbXtPcmlnaW5hbFRpY2tldElEc30gKSApIHsKICAgICAgICAkVGlja2V0
SURzID0gJFBhcmFte09yaWdpbmFsVGlja2V0SURzfTsKICAgIH0KCiAgICBpZiAoICRIZWFkZXJD
b2x1bW4gIX4gbS9eRHluYW1pY0ZpZWxkXy8gKSB7CiAgICAgICAgbXkgJEZ1bmN0aW9uTmFtZSA9
ICRIZWFkZXJDb2x1bW4gLiAnRmlsdGVyVmFsdWVzR2V0JzsKICAgICAgICBpZiAoICRIZWFkZXJD
b2x1bW4gZXEgJ0N1c3RvbWVySUQnICkgewogICAgICAgICAgICAkRnVuY3Rpb25OYW1lID0gJ0N1
c3RvbWVyRmlsdGVyVmFsdWVzR2V0JzsKICAgICAgICB9CgogICAgICAgICRDb2x1bW5GaWx0ZXJW
YWx1ZXN7JEhlYWRlckNvbHVtbn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6
VGlja2V0OjpDb2x1bW5GaWx0ZXInKS0+JEZ1bmN0aW9uTmFtZSgKICAgICAgICAgICAgVGlja2V0
SURzICAgID0+ICRUaWNrZXRJRHMsCiAgICAgICAgICAgIEhlYWRlckNvbHVtbiA9PiAkSGVhZGVy
Q29sdW1uLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAg
ICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9y
IG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsK
CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHlu
YW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgIG15ICRGaWVsZE5hbWUgPSAnRHluYW1pY0Zp
ZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICBuZXh0IERZ
TkFNSUNGSUVMRCBpZiAkRmllbGROYW1lIG5lICRIZWFkZXJDb2x1bW47CgogICAgICAgICAgICAj
IGdldCBkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0CiAgICAgICAgICAgIG15ICRCYWNrZW5k
T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6
QmFja2VuZCcpOwoKICAgICAgICAgICAgbXkgJElzRmlsdHJhYmxlID0gJEJhY2tlbmRPYmplY3Qt
Pkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5h
bWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lz
RmlsdHJhYmxlJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxE
IGlmICEkSXNGaWx0cmFibGU7CgogICAgICAgICAgICAkU2VsZi0+e1ZhbGlkRmlsdGVyYWJsZUNv
bHVtbnN9LT57JEhlYWRlckNvbHVtbn0gPSAkSXNGaWx0cmFibGU7CiAgICAgICAgICAgIGlmICgg
SXNBcnJheVJlZldpdGhEYXRhKCRUaWNrZXRJRHMpICkgewoKICAgICAgICAgICAgICAgICMgZ2V0
IHRoZSBoaXN0b3JpY2FsIHZhbHVlcyBmb3IgdGhlIGZpZWxkCiAgICAgICAgICAgICAgICAkQ29s
dW1uRmlsdGVyVmFsdWVzeyRIZWFkZXJDb2x1bW59ID0gJEJhY2tlbmRPYmplY3QtPkNvbHVtbkZp
bHRlclZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4g
JER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAg
ICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLAog
ICAgICAgICAgICAgICAgICAgIFRpY2tldElEcyAgICAgICAgICA9PiAkVGlja2V0SURzLAogICAg
ICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAg
ICAgICAgICAjIGdldCBQb3NzaWJsZVZhbHVlcwogICAgICAgICAgICAgICAgJENvbHVtbkZpbHRl
clZhbHVlc3skSGVhZGVyQ29sdW1ufSA9ICRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dl
dCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVs
ZENvbmZpZywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFz
dCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJUNvbHVtbkZpbHRl
clZhbHVlczsKfQoKPW92ZXIKCj1pdGVtIF9Db2x1bW5GaWx0ZXJKU09OKCkKCiAgICBjcmVhdGVz
IGEgSlNPTiBzZWxlY3QgZmlsdGVyIGZvciBjb2x1bW4gaGVhZGVyCgogICAgbXkgJENvbHVtbkZp
bHRlckpTT04gPSAkVGlja2V0T3ZlcnZpZXdTbWFsbE9iamVjdC0+X0NvbHVtbkZpbHRlckpTT04o
CiAgICAgICAgQ29sdW1uTmFtZSA9PiAnUXVldWUnLAogICAgICAgIExhYmVsICAgICAgPT4gJ1F1
ZXVlJywKICAgICAgICBDb2x1bW5WYWx1ZXMgPT4gewogICAgICAgICAgICAxID0+ICdQb3N0TWFz
dGVyJywKICAgICAgICAgICAgMiA9PiAnSnVuaycsCiAgICAgICAgfSwKICAgICAgICBTZWxlY3Rl
ZFZhbHVlICcxJywKICAgICk7Cgo9Y3V0CgpzdWIgX0NvbHVtbkZpbHRlckpTT04gewogICAgbXkg
KCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtDb2x1bW5OYW1l
fTsKICAgIHJldHVybiBpZiAhJFNlbGYtPntWYWxpZEZpbHRlcmFibGVDb2x1bW5zfS0+eyAkUGFy
YW17Q29sdW1uTmFtZX0gfTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0
T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcp
OwoKICAgIG15ICRMYWJlbCA9ICRQYXJhbXtMYWJlbH07CiAgICAkTGFiZWwgPX4gc3sgXEEgRHlu
YW1pY0ZpZWxkXyB9e31neG1zOwogICAgJExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdl
T2JqZWN0fS0+VHJhbnNsYXRlKCRMYWJlbCk7CgogICAgIyBzZXQgZml4ZWQgdmFsdWVzCiAgICBt
eSAkRGF0YSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdEZWxldGVGaWx0ZXIn
LAogICAgICAgICAgICBWYWx1ZSA9PiB1YyAkTGFiZWwsCiAgICAgICAgfSwKICAgICAgICB7CiAg
ICAgICAgICAgIEtleSAgICAgID0+ICctJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJy0nLAog
ICAgICAgICAgICBEaXNhYmxlZCA9PiAxLAogICAgICAgIH0sCiAgICBdOwoKICAgIGlmICggJFBh
cmFte0NvbHVtblZhbHVlc30gJiYgcmVmICRQYXJhbXtDb2x1bW5WYWx1ZXN9IGVxICdIQVNIJyAp
IHsKCiAgICAgICAgbXkgJVZhbHVlcyA9ICV7ICRQYXJhbXtDb2x1bW5WYWx1ZXN9IH07CgogICAg
ICAgICMgc2V0IHBvc3NpYmxlIHZhbHVlcwogICAgICAgIGZvciBteSAkVmFsdWVLZXkgKCBzb3J0
IHsgbGMgJFZhbHVlc3skYX0gY21wIGxjICRWYWx1ZXN7JGJ9IH0ga2V5cyAlVmFsdWVzICkgewog
ICAgICAgICAgICBwdXNoIEB7JERhdGF9LCB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkVmFs
dWVLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVzeyRWYWx1ZUtleX0KICAgICAg
ICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWZpbmUgaWYgY29sdW1uIGZpbHRlciB2
YWx1ZXMgc2hvdWxkIGJlIHRyYW5zbGF0YWJsZQogICAgbXkgJFRyYW5zbGF0aW9uT3B0aW9uID0g
MDsKCiAgICBpZiAoCiAgICAgICAgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdTdGF0ZScKICAgICAg
ICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0xvY2snCiAgICAgICAgfHwgJFBhcmFte0NvbHVt
bk5hbWV9IGVxICdQcmlvcml0eScKICAgICAgICApCiAgICB7CiAgICAgICAgJFRyYW5zbGF0aW9u
T3B0aW9uID0gMTsKICAgIH0KCiAgICAjIGJ1aWxkIHNlbGVjdCBIVE1MCiAgICBteSAkSlNPTiA9
ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uSlNPTigKICAgICAgICBbCiAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnQ29sdW1uRmlsdGVyJyAuICRQYXJh
bXtDb2x1bW5OYW1lfSAuICRQYXJhbXtEYXNoYm9hcmROYW1lfSwKICAgICAgICAgICAgICAgIERh
dGEgICAgICAgICA9PiAkRGF0YSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnQ29s
dW1uRmlsdGVyJywKICAgICAgICAgICAgICAgIFNvcnQgICAgICAgICA9PiAnQWxwaGFudW1lcmlj
S2V5JywKICAgICAgICAgICAgICAgIFRyZWVWaWV3ICAgICA9PiAxLAogICAgICAgICAgICAgICAg
U2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtTZWxlY3RlZFZhbHVlfSwKICAgICAgICAgICAgICAgIFRy
YW5zbGF0aW9uICA9PiAkVHJhbnNsYXRpb25PcHRpb24sCiAgICAgICAgICAgICAgICBBdXRvQ29t
cGxldGUgPT4gJ29mZicsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICk7CgogICAgcmV0
dXJuICRKU09OOwp9CgpzdWIgX1NlYXJjaFBhcmFtc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFy
YW0gKSA9IEBfOwoKICAgICMgZ2V0IGFsbCBzZWFyY2ggYmFzZSBhdHRyaWJ1dGVzCiAgICBteSAl
VGlja2V0U2VhcmNoOwogICAgbXkgJUR5bmFtaWNGaWVsZHNQYXJhbWV0ZXJzOwogICAgbXkgQFBh
cmFtcyA9IHNwbGl0IC87LywgJFNlbGYtPntDb25maWd9LT57QXR0cmlidXRlc307CgogICAgIyBy
ZWFkIHVzZXIgcHJlZmVyZW5jZXMgYW5kIGNvbmZpZyB0byBnZXQgY29sdW1ucyB0aGF0CiAgICAj
IHNob3VsZCBiZSBzaG93biBpbiB0aGUgZGFzaGJvYXJkIHdpZGdldCAodGhlIHByZWZlcmVuY2Vz
CiAgICAjIGhhdmUgcHJlY2VkZW5jZSkKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9N
LT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVz
ZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGNvbHVtbiBuYW1lcyBm
cm9tIFByZWZlcmVuY2VzCiAgICBteSAkUHJlZmVyZW5jZXNDb2x1bW4gPSAkS2VybmVsOjpPTS0+
R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5EZWNvZGUoCiAgICAgICAgRGF0YSA9PiAkUHJl
ZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbnN9IH0sCiAgICApOwoKICAgICMgY2hlY2sg
Zm9yIGRlZmF1bHQgc2V0dGluZ3MKICAgIG15IEBDb2x1bW5zOwogICAgaWYgKAogICAgICAgICRT
ZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfQogICAgICAgICYmIElzSGFzaFJlZldpdGhE
YXRhKCAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gKQogICAgICAgICkKICAgIHsK
ICAgICAgICBAQ29sdW1ucyA9IGdyZXAgeyAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1u
c30tPnskX30gZXEgJzInIH0KICAgICAgICAgICAgc29ydCB7ICRTZWxmLT5fRGVmYXVsdENvbHVt
blNvcnQoKSB9IGtleXMgJXsgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9IH07CiAg
ICB9CiAgICBpZiAoJFByZWZlcmVuY2VzQ29sdW1uKSB7CiAgICAgICAgaWYgKCAkUHJlZmVyZW5j
ZXNDb2x1bW4tPntDb2x1bW5zfSAmJiAleyAkUHJlZmVyZW5jZXNDb2x1bW4tPntDb2x1bW5zfSB9
ICkgewogICAgICAgICAgICBAQ29sdW1ucyA9IGdyZXAgewogICAgICAgICAgICAgICAgZGVmaW5l
ZCAkUHJlZmVyZW5jZXNDb2x1bW4tPntDb2x1bW5zfS0+eyRffQogICAgICAgICAgICAgICAgICAg
ICYmICRQcmVmZXJlbmNlc0NvbHVtbi0+e0NvbHVtbnN9LT57JF99IGVxICcxJwogICAgICAgICAg
ICB9IHNvcnQgeyAkU2VsZi0+X0RlZmF1bHRDb2x1bW5Tb3J0KCkgfSBrZXlzICV7ICRTZWxmLT57
Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfSB9OwogICAgICAgIH0KICAgICAgICBpZiAoICRQcmVm
ZXJlbmNlc0NvbHVtbi0+e09yZGVyfSAmJiBAeyAkUHJlZmVyZW5jZXNDb2x1bW4tPntPcmRlcn0g
fSApIHsKICAgICAgICAgICAgQENvbHVtbnMgPSBAeyAkUHJlZmVyZW5jZXNDb2x1bW4tPntPcmRl
cn0gfTsKICAgICAgICB9CgogICAgICAgICMgcmVtb3ZlIGR1cGxpY2F0ZSBjb2x1bW5zCiAgICAg
ICAgbXkgJVVuaXF1ZUNvbHVtbnM7CiAgICAgICAgbXkgQENvbHVtbnNFbmFibGVkQXV4OwoKICAg
ICAgICBmb3IgbXkgJENvbHVtbiAoQENvbHVtbnMpIHsKICAgICAgICAgICAgaWYgKCAhJFVuaXF1
ZUNvbHVtbnN7JENvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBDb2x1bW5zRW5hYmxl
ZEF1eCwgJENvbHVtbjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkVW5pcXVlQ29sdW1uc3sk
Q29sdW1ufSA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBmaWx0ZXJlZCBjb2x1bW4gbGlz
dAogICAgICAgIEBDb2x1bW5zID0gQENvbHVtbnNFbmFibGVkQXV4OwogICAgfQoKICAgICMgYWx3
YXlzIHNldCBUaWNrZXROdW1iZXIKICAgIGlmICggIWdyZXAgeyAkXyBlcSAnVGlja2V0TnVtYmVy
JyB9IEBDb2x1bW5zICkgewogICAgICAgIHVuc2hpZnQgQENvbHVtbnMsICdUaWNrZXROdW1iZXIn
OwogICAgfQoKICAgICMgYWxzbyBhbHdheXMgc2V0IFByb2Nlc3NJRCBhbmQgQWN0aXZpdHlJRCAo
Zm9yIHByb2Nlc3Mgd2lkZ2V0cykKICAgIGlmICggJFNlbGYtPntDb25maWd9LT57SXNQcm9jZXNz
V2lkZ2V0fSApIHsKCiAgICAgICAgbXkgQEFsd2F5c0NvbHVtbnMgPSAoCiAgICAgICAgICAgICdE
eW5hbWljRmllbGRfJyAuICRTZWxmLT57UHJvY2Vzc01hbmFnZW1lbnRQcm9jZXNzSUR9LAogICAg
ICAgICAgICAnRHluYW1pY0ZpZWxkXycgLiAkU2VsZi0+e1Byb2Nlc3NNYW5hZ2VtZW50QWN0aXZp
dHlJRH0sCiAgICAgICAgKTsKICAgICAgICBteSAkUmVzb3J0OwogICAgICAgIGZvciBteSAkQWx3
YXlzQ29sdW1uIChAQWx3YXlzQ29sdW1ucykgewogICAgICAgICAgICBpZiAoICFncmVwIHsgJF8g
ZXEgJEFsd2F5c0NvbHVtbiB9IEBDb2x1bW5zICkgewogICAgICAgICAgICAgICAgcHVzaCBAQ29s
dW1ucywgJEFsd2F5c0NvbHVtbjsKICAgICAgICAgICAgICAgICRSZXNvcnQgPSAxOwogICAgICAg
ICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICgkUmVzb3J0KSB7CiAgICAgICAgICAgIEBDb2x1
bW5zID0gc29ydCB7ICRTZWxmLT5fRGVmYXVsdENvbHVtblNvcnQoKSB9IEBDb2x1bW5zOwogICAg
ICAgIH0KICAgIH0KCiAgICB7CgogICAgICAgICMgbG9vcCB0aHJvdWdoIGFsbCB0aGUgZHluYW1p
YyBmaWVsZHMgdG8gZ2V0IHRoZSBvbmVzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICAgICAgRFlO
QU1JQ0ZJRUxETkFNRToKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZE5hbWUgKEBDb2x1bW5z
KSB7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRE5BTUUgaWYgJER5bmFtaWNGaWVsZE5h
bWUgIX4gbXsgRHluYW1pY0ZpZWxkXyB9eG1zOwoKICAgICAgICAgICAgIyByZW1vdmUgZHluYW1p
YyBmaWVsZCBwcmVmaXgKICAgICAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICREeW5hbWljRmllbGRO
YW1lOwogICAgICAgICAgICAkRmllbGROYW1lID1+IHMvRHluYW1pY0ZpZWxkXy8vZ2k7CiAgICAg
ICAgICAgICRTZWxmLT57RHluYW1pY0ZpZWxkRmlsdGVyfS0+eyRGaWVsZE5hbWV9ID0gMTsKICAg
ICAgICB9CiAgICB9CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVl
bgogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpT
eXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlk
ICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gWydUaWNrZXQnXSwKICAgICAgICBG
aWVsZEZpbHRlciA9PiAkU2VsZi0+e0R5bmFtaWNGaWVsZEZpbHRlcn0gfHwge30sCiAgICApOwoK
ICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgYmFja2VuZCBvYmplY3QKICAgIG15ICRCYWNrZW5kT2Jq
ZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFj
a2VuZCcpOwoKICAgICMgZ2V0IGZpbHRlcmFibGUgRHluYW1pYyBmaWVsZHMKICAgICMgY3ljbGUg
dHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICBE
WU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57
RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hS
ZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgbXkgJElzRmlsdHJhYmxl
ID0gJEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRD
b25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQmVoYXZpb3IgICAgICAg
ICAgID0+ICdJc0ZpbHRyYWJsZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBpZiB0aGUgZHluYW1p
YyBmaWVsZCBpcyBmaWx0ZXJhYmxlIGFkZCBpdCB0byB0aGUgVmFsaWRGaWx0ZXJhYmxlQ29sdW1u
cyBoYXNoCiAgICAgICAgaWYgKCRJc0ZpbHRyYWJsZSkgewogICAgICAgICAgICAkU2VsZi0+e1Zh
bGlkRmlsdGVyYWJsZUNvbHVtbnN9LT57ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRD
b25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgc29ydGFibGUg
RHluYW1pYyBmaWVsZHMKICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBG
aWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFt
aWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5l
eHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmln
KTsKCiAgICAgICAgbXkgJElzU29ydGFibGUgPSAkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3Io
CiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAog
ICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzU29ydGFibGUnLAogICAgICAgICk7
CgogICAgICAgICMgaWYgdGhlIGR5bmFtaWMgZmllbGQgaXMgc29ydGFibGUgYWRkIGl0IHRvIHRo
ZSBWYWxpZFNvcnRhYmxlQ29sdW1ucyBoYXNoCiAgICAgICAgaWYgKCRJc1NvcnRhYmxlKSB7CiAg
ICAgICAgICAgICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57ICdEeW5hbWljRmllbGRf
JyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICB9CiAgICB9Cgog
ICAgIyBnZXQgcXVldWUgb2JqZWN0CiAgICBteSAkUXVldWVPYmplY3QgPSAkS2VybmVsOjpPTS0+
R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKTsKCiAgICBTVFJJTkc6CiAgICBmb3IgbXkgJFN0
cmluZyAoQFBhcmFtcykgewogICAgICAgIG5leHQgU1RSSU5HIGlmICEkU3RyaW5nOwogICAgICAg
IG15ICggJEtleSwgJFZhbHVlICkgPSBzcGxpdCAvPS8sICRTdHJpbmc7CgogICAgICAgIGlmICgg
JEtleSBlcSAnQ3VzdG9tZXJJRCcgKSB7CiAgICAgICAgICAgICRLZXkgPSAiQ3VzdG9tZXJJRFJh
dyI7CiAgICAgICAgfQoKICAgICAgICAjIHB1c2ggQVJSQVlSRUYgYXR0cmlidXRlcyBkaXJlY3Rs
eSBpbiBhbiBBUlJBWVJFRgogICAgICAgIGlmICgKICAgICAgICAgICAgJEtleQogICAgICAgICAg
ICA9fiAvXihTdGF0ZVR5cGV8U3RhdGVUeXBlSURzfFF1ZXVlc3xRdWV1ZUlEc3xUeXBlc3xUeXBl
SURzfFN0YXRlc3xTdGF0ZUlEc3xQcmlvcml0aWVzfFByaW9yaXR5SURzfFNlcnZpY2VzfFNlcnZp
Y2VJRHN8U0xBc3xTTEFJRHN8TG9ja3N8TG9ja0lEc3xPd25lcklEc3xSZXNwb25zaWJsZUlEc3xX
YXRjaFVzZXJJRHN8QXJjaGl2ZUZsYWdzfENyZWF0ZWRVc2VySURzfENyZWF0ZWRUeXBlc3xDcmVh
dGVkVHlwZUlEc3xDcmVhdGVkUHJpb3JpdGllc3xDcmVhdGVkUHJpb3JpdHlJRHN8Q3JlYXRlZFN0
YXRlc3xDcmVhdGVkU3RhdGVJRHN8Q3JlYXRlZFF1ZXVlc3xDcmVhdGVkUXVldWVJRHMpJC8KICAg
ICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKCAkVmFsdWUgPX4gbXssfXNteCAp
IHsKICAgICAgICAgICAgICAgIHB1c2ggQHsgJFRpY2tldFNlYXJjaHskS2V5fSB9LCBzcGxpdCgg
LywvLCAkVmFsdWUgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgIHB1c2ggQHsgJFRpY2tldFNlYXJjaHskS2V5fSB9LCAkVmFsdWU7CiAgICAgICAgICAg
IH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgcGFyYW1ldGVyIGlzIGEgZHluYW1pYyBm
aWVsZCBhbmQgY2FwdHVyZSBkeW5hbWljIGZpZWxkIG5hbWUgKHdpdGggRHluYW1pY0ZpZWxkXykK
ICAgICAgICAjIGluICQxIGFuZCB0aGUgT3BlcmF0b3IgaW4gJDIKICAgICAgICAjIHBvc3NpYmxl
IER5bmFtaWMgRmllbGRzIG9wdGlvbnMgaW5jbHVkZToKICAgICAgICAjICAgRHluYW1pY0ZpZWxk
X05hbWVYX0VxdWFscz0xMjM7CiAgICAgICAgIyAgIER5bmFtaWNGaWVsZF9OYW1lWF9MaWtlPXZh
bHVlKjsKICAgICAgICAjICAgRHluYW1pY0ZpZWxkX05hbWVYX0dyZWF0ZXJUaGFuPTIwMDEtMDEt
MDEgMDE6MDE6MDE7CiAgICAgICAgIyAgIER5bmFtaWNGaWVsZF9OYW1lWF9HcmVhdGVyVGhhbkVx
dWFscz0yMDAxLTAxLTAxIDAxOjAxOjAxOwogICAgICAgICMgICBEeW5hbWljRmllbGRfTmFtZVhf
U21hbGxlclRoYW49MjAwMi0wMi0wMiAwMjowMjowMjsKICAgICAgICAjICAgRHluYW1pY0ZpZWxk
X05hbWVYX1NtYWxsZXJUaGFuRXF1YWxzPTIwMDItMDItMDIgMDI6MDI6MDI7CiAgICAgICAgZWxz
aWYgKCAkS2V5ID1+IG17XEEgKER5bmFtaWNGaWVsZF8uKz8pIF8gKC4rPykgXHp9c3htICkgewoK
ICAgICAgICAgICAgIyBwcmV2ZW50IGFkZGluZyBQcm9jZXNzTWFuYWdlbWVudCBzZWFyY2ggcGFy
YW1ldGVycyAoZm9yIFByb2Nlc3NXaWRnZXQpCiAgICAgICAgICAgIGlmICggJFNlbGYtPntDb25m
aWd9LT57SXNQcm9jZXNzV2lkZ2V0fSApIHsKICAgICAgICAgICAgICAgIG5leHQgU1RSSU5HIGlm
ICQyIGVxICRTZWxmLT57UHJvY2Vzc01hbmFnZW1lbnRQcm9jZXNzSUR9OwogICAgICAgICAgICAg
ICAgbmV4dCBTVFJJTkcgaWYgJDIgZXEgJFNlbGYtPntQcm9jZXNzTWFuYWdlbWVudEFjdGl2aXR5
SUR9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEB7ICREeW5hbWljRmllbGRzUGFy
YW1ldGVyc3skMX0tPnskMn0gfSwgJFZhbHVlOwogICAgICAgIH0KCiAgICAgICAgZWxzaWYgKCAh
ZGVmaW5lZCAkVGlja2V0U2VhcmNoeyRLZXl9ICkgewoKICAgICAgICAgICAgIyBjaGFuZ2Ugc29y
dCBieSwgaWYgbmVlZGVkCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRLZXkgZXEg
J1NvcnRCeScKICAgICAgICAgICAgICAgICYmICRTZWxmLT57U29ydEJ5fQogICAgICAgICAgICAg
ICAgJiYgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnsgJFNlbGYtPntTb3J0Qnl9IH0K
ICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJFZhbHVlID0g
JFNlbGYtPntTb3J0Qnl9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEtleSBl
cSAnU29ydEJ5JyAmJiAhJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnskVmFsdWV9ICkg
ewogICAgICAgICAgICAgICAgJFZhbHVlID0gJ0FnZSc7CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgJFRpY2tldFNlYXJjaHskS2V5fSA9ICRWYWx1ZTsKICAgICAgICB9CiAgICAgICAgZWxzaWYg
KCAhcmVmICRUaWNrZXRTZWFyY2h7JEtleX0gKSB7CiAgICAgICAgICAgIG15ICRWYWx1ZVRtcCA9
ICRUaWNrZXRTZWFyY2h7JEtleX07CiAgICAgICAgICAgICRUaWNrZXRTZWFyY2h7JEtleX0gPSBb
JFZhbHVlVG1wXTsKICAgICAgICAgICAgcHVzaCBAeyAkVGlja2V0U2VhcmNoeyRLZXl9IH0sICRW
YWx1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHB1c2ggQHsgJFRpY2tl
dFNlYXJjaHskS2V5fSB9LCAkVmFsdWU7CiAgICAgICAgfQogICAgfQogICAgJVRpY2tldFNlYXJj
aCA9ICgKICAgICAgICAlVGlja2V0U2VhcmNoLAogICAgICAgICVEeW5hbWljRmllbGRzUGFyYW1l
dGVycywKICAgICAgICBQZXJtaXNzaW9uID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259
IHx8ICdybycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAg
IyBDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyIHNob3dzIGRhdGEgcGVyIEN1c3RvbWVySUQKICAg
IGlmICggJFBhcmFte0N1c3RvbWVySUR9ICkgewogICAgICAgICRUaWNrZXRTZWFyY2h7Q3VzdG9t
ZXJJRFJhd30gPSAkUGFyYW17Q3VzdG9tZXJJRH07CiAgICB9CgogICAgIyBkZWZpbmUgZmlsdGVy
IGF0dHJpYnV0ZXMKICAgIG15IEBNeVF1ZXVlcyA9ICRRdWV1ZU9iamVjdC0+R2V0QWxsQ3VzdG9t
UXVldWVzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgaWYg
KCAhQE15UXVldWVzICkgewogICAgICAgIEBNeVF1ZXVlcyA9ICg5OTlfOTk5KTsKICAgIH0KCiAg
ICAjIGdldCBhbGwgcXVldWVzIHRoZSBhZ2VudCBpcyBhbGxvd2VkIHRvIHNlZSAoZm9yIG15IHNl
cnZpY2VzKQogICAgbXkgJVZpZXdhYmxlUXVldWVzID0gJFF1ZXVlT2JqZWN0LT5HZXRBbGxRdWV1
ZXMoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBUeXBlICAgPT4g
J3JvJywKICAgICk7CiAgICBteSBAVmlld2FibGVRdWV1ZUlEcyA9IHNvcnQga2V5cyAlVmlld2Fi
bGVRdWV1ZXM7CiAgICBpZiAoICFAVmlld2FibGVRdWV1ZUlEcyApIHsKICAgICAgICBAVmlld2Fi
bGVRdWV1ZUlEcyA9ICg5OTlfOTk5KTsKICAgIH0KCiAgICAjIGdldCB0aGUgY3VzdG9tIHNlcnZp
Y2VzIGZyb20gYWdlbnQgcHJlZmVyZW5jZXMKICAgICMgc2V0IHRoZSBzZXJ2aWNlIGlkcyB0byBh
biBhcnJheSBvZiBub24gZXhpc3Rpbmcgc2VydmljZSBpZHMgKDApCiAgICBteSBATXlTZXJ2aWNl
SURzID0gKDApOwogICAgaWYgKCAkU2VsZi0+e1VzZVRpY2tldFNlcnZpY2V9ICkgewogICAgICAg
IEBNeVNlcnZpY2VJRHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2Vydmlj
ZScpLT5HZXRBbGxDdXN0b21TZXJ2aWNlcygKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57
VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICFkZWZpbmVkICRNeVNlcnZpY2VJRHNb
MF0gKSB7CiAgICAgICAgICAgIEBNeVNlcnZpY2VJRHMgPSAoMCk7CiAgICAgICAgfQogICAgfQoK
ICAgIG15ICVUaWNrZXRTZWFyY2hTdW1tYXJ5ID0gKAogICAgICAgIExvY2tlZCA9PiB7CiAgICAg
ICAgICAgIE93bmVySURzID0+ICRUaWNrZXRTZWFyY2h7T3duZXJJRHN9IC8vIFsgJFNlbGYtPntV
c2VySUR9LCBdLAogICAgICAgICAgICBMb2NrSURzID0+IFsgJzInLCAnMycgXSwgICAgIyAnbG9j
aycgYW5kICd0bXBfbG9jaycKICAgICAgICB9LAogICAgICAgIFdhdGNoZXIgPT4gewogICAgICAg
ICAgICBXYXRjaFVzZXJJRHMgPT4gWyAkU2VsZi0+e1VzZXJJRH0sIF0sCiAgICAgICAgICAgIExv
Y2tJRHMgICAgICA9PiAkVGlja2V0U2VhcmNoe0xvY2tJRHN9IC8vIHVuZGVmLAogICAgICAgIH0s
CiAgICAgICAgUmVzcG9uc2libGUgPT4gewogICAgICAgICAgICBSZXNwb25zaWJsZUlEcyA9PiAk
VGlja2V0U2VhcmNoe1Jlc3BvbnNpYmxlSURzfSAvLyBbICRTZWxmLT57VXNlcklEfSwgXSwKICAg
ICAgICAgICAgTG9ja0lEcyAgICAgICAgPT4gJFRpY2tldFNlYXJjaHtMb2NrSURzfSAgICAgICAg
Ly8gdW5kZWYsCiAgICAgICAgfSwKICAgICAgICBNeVF1ZXVlcyA9PiB7CiAgICAgICAgICAgIFF1
ZXVlSURzID0+IFxATXlRdWV1ZXMsCiAgICAgICAgICAgIExvY2tJRHMgID0+ICRUaWNrZXRTZWFy
Y2h7TG9ja0lEc30gLy8gdW5kZWYsCiAgICAgICAgfSwKICAgICAgICBNeVNlcnZpY2VzID0+IHsK
ICAgICAgICAgICAgUXVldWVJRHMgICA9PiBcQFZpZXdhYmxlUXVldWVJRHMsCiAgICAgICAgICAg
IFNlcnZpY2VJRHMgPT4gXEBNeVNlcnZpY2VJRHMsCiAgICAgICAgICAgIExvY2tJRHMgICAgPT4g
JFRpY2tldFNlYXJjaHtMb2NrSURzfSAvLyB1bmRlZiwKICAgICAgICB9LAogICAgICAgIEFsbCA9
PiB7CiAgICAgICAgICAgIE93bmVySURzID0+ICRUaWNrZXRTZWFyY2h7T3duZXJJRHN9IC8vIHVu
ZGVmLAogICAgICAgICAgICBMb2NrSURzICA9PiAkVGlja2V0U2VhcmNoe0xvY2tJRHN9ICAvLyB1
bmRlZiwKICAgICAgICB9LAogICAgKTsKCiAgICBpZiAoIGRlZmluZWQgJFRpY2tldFNlYXJjaHtM
b2NrSURzfSB8fCBkZWZpbmVkICRUaWNrZXRTZWFyY2h7TG9ja3N9ICkgewogICAgICAgIGRlbGV0
ZSAkVGlja2V0U2VhcmNoU3VtbWFyeXtMb2NrZWR9OwogICAgfQoKICAgIGlmICggZGVmaW5lZCAk
VGlja2V0U2VhcmNoe1dhdGNoVXNlcklEc30gKSB7CiAgICAgICAgZGVsZXRlICRUaWNrZXRTZWFy
Y2hTdW1tYXJ5e1dhdGNoZXJ9OwogICAgfQoKICAgIGlmICggZGVmaW5lZCAkVGlja2V0U2VhcmNo
e1Jlc3BvbnNpYmxlSURzfSApIHsKICAgICAgICBkZWxldGUgJFRpY2tldFNlYXJjaFN1bW1hcnl7
UmVzcG9uc2libGV9OwogICAgfQoKICAgIGlmICggZGVmaW5lZCAkVGlja2V0U2VhcmNoe1F1ZXVl
SURzfSB8fCBkZWZpbmVkICRUaWNrZXRTZWFyY2h7UXVldWVzfSApIHsKICAgICAgICBkZWxldGUg
JFRpY2tldFNlYXJjaFN1bW1hcnl7TXlRdWV1ZXN9OwogICAgICAgIGRlbGV0ZSAkVGlja2V0U2Vh
cmNoU3VtbWFyeXtNeVNlcnZpY2VzfS0+e1F1ZXVlSURzfTsKICAgIH0KCiAgICBpZiAoICEkU2Vs
Zi0+e1VzZVRpY2tldFNlcnZpY2V9ICkgewogICAgICAgIGRlbGV0ZSAkVGlja2V0U2VhcmNoU3Vt
bWFyeXtNeVNlcnZpY2VzfTsKICAgIH0KCiAgICByZXR1cm4gKAogICAgICAgIENvbHVtbnMgICAg
ICAgICAgICAgPT4gXEBDb2x1bW5zLAogICAgICAgIFRpY2tldFNlYXJjaCAgICAgICAgPT4gXCVU
aWNrZXRTZWFyY2gsCiAgICAgICAgVGlja2V0U2VhcmNoU3VtbWFyeSA9PiBcJVRpY2tldFNlYXJj
aFN1bW1hcnksCiAgICApOwp9CgpzdWIgX0RlZmF1bHRDb2x1bW5Tb3J0IHsKICAgIG15ICggJFNl
bGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJURlZmF1bHRDb2x1bW5zID0gKAogICAgICAgIFRp
Y2tldE51bWJlciAgICAgICAgICAgPT4gMTAwLAogICAgICAgIEFnZSAgICAgICAgICAgICAgICAg
ICAgPT4gMTEwLAogICAgICAgIENoYW5nZWQgICAgICAgICAgICAgICAgPT4gMTExLAogICAgICAg
IFBlbmRpbmdUaW1lICAgICAgICAgICAgPT4gMTEyLAogICAgICAgIEVzY2FsYXRpb25UaW1lICAg
ICAgICAgPT4gMTEzLAogICAgICAgIEVzY2FsYXRpb25Tb2x1dGlvblRpbWUgPT4gMTE0LAogICAg
ICAgIEVzY2FsYXRpb25SZXNwb25zZVRpbWUgPT4gMTE1LAogICAgICAgIEVzY2FsYXRpb25VcGRh
dGVUaW1lICAgPT4gMTE2LAogICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgPT4gMTIwLAog
ICAgICAgIFN0YXRlICAgICAgICAgICAgICAgICAgPT4gMTMwLAogICAgICAgIExvY2sgICAgICAg
ICAgICAgICAgICAgPT4gMTQwLAogICAgICAgIFF1ZXVlICAgICAgICAgICAgICAgICAgPT4gMTUw
LAogICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gMTYwLAogICAgICAgIFJlc3BvbnNp
YmxlICAgICAgICAgICAgPT4gMTYxLAogICAgICAgIEN1c3RvbWVySUQgICAgICAgICAgICAgPT4g
MTcwLAogICAgICAgIEN1c3RvbWVyTmFtZSAgICAgICAgICAgPT4gMTcxLAogICAgICAgIEN1c3Rv
bWVyVXNlcklEICAgICAgICAgPT4gMTcyLAogICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAg
PT4gMTgwLAogICAgICAgIFNlcnZpY2UgICAgICAgICAgICAgICAgPT4gMTkxLAogICAgICAgIFNM
QSAgICAgICAgICAgICAgICAgICAgPT4gMTkyLAogICAgICAgIFByaW9yaXR5ICAgICAgICAgICAg
ICAgPT4gMTkzLAogICAgKTsKCiAgICAjIHNldCBkZWZhdWx0IG9yZGVyIG9mIFByb2Nlc3NNYW5h
Z2VtZW50IGNvbHVtbnMgKGZvciBwcm9jZXNzIHdpZGdldHMpCiAgICBpZiAoICRTZWxmLT57Q29u
ZmlnfS0+e0lzUHJvY2Vzc1dpZGdldH0gKSB7CiAgICAgICAgJERlZmF1bHRDb2x1bW5zeyJEeW5h
bWljRmllbGRfJFNlbGYtPntQcm9jZXNzTWFuYWdlbWVudFByb2Nlc3NJRH0ifSAgPSAxMDE7CiAg
ICAgICAgJERlZmF1bHRDb2x1bW5zeyJEeW5hbWljRmllbGRfJFNlbGYtPntQcm9jZXNzTWFuYWdl
bWVudEFjdGl2aXR5SUR9In0gPSAxMDI7CiAgICB9CgogICAgIyBkeW5hbWljIGZpZWxkcyBjYW4g
bm90IGJlIG9uIHRoZSBEZWZhdWx0Q29sdW1ucyBzb3J0aW5nIGhhc2gKICAgICMgd2hlbiBjb21w
YXJpbmcgMiBkeW5hbWljIGZpZWxkcyBzb3J0aW5nIG11c3QgYmUgYWxwaGFiZXRpY2FsCiAgICBp
ZiAoICEkRGVmYXVsdENvbHVtbnN7JGF9ICYmICEkRGVmYXVsdENvbHVtbnN7JGJ9ICkgewogICAg
ICAgIHJldHVybiAkYSBjbXAgJGI7CiAgICB9CgogICAgIyB3aGVuIGEgZHluYW1pYyBmaWVsZCBp
cyBjb21wYXJlZCB0byBhIHRpY2tldCBhdHRyaWJ1dGUgaXQgbXVzdCBiZSBoaWdoZXIKICAgIGVs
c2lmICggISREZWZhdWx0Q29sdW1uc3skYX0gKSB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9Cgog
ICAgIyB3aGVuIGEgdGlja2V0IGF0dHJpYnV0ZSBpcyBjb21wYXJlZCB0byBhIGR5bmFtaWMgZmll
bGQgaXQgbXVzdCBiZSBsb3dlcgogICAgZWxzaWYgKCAhJERlZmF1bHRDb2x1bW5zeyRifSApIHsK
ICAgICAgICByZXR1cm4gLTE7CiAgICB9CgogICAgIyBvdGhlcndpc2UgZG8gYSBudW1lcmljYWwg
Y29tcGFyaXNvbiB3aXRoIHRoZSB0aWNrZXQgYXR0cmlidXRlcwogICAgcmV0dXJuICREZWZhdWx0
Q29sdW1uc3skYX0gPD0+ICREZWZhdWx0Q29sdW1uc3skYn07Cn0KCjE7Cgo9YmFjawo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8K
IyBDaGFuZ2VzIENvcHlyaWdodCAoQykgMjAxMS0yMDE2IFBlcmwtU2VydmljZXMuZGUsIGh0dHA6
Ly9wZXJsLXNlcnZpY2VzLmRlCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xV
VEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENP
UFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJl
Y2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0
LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljRmls
dGVyIikgJV0KPGRpdiBjbGFzcz0iRGFzaGJvYXJkQWN0aW9ucyI+CiAgICA8dWwgY2xhc3M9IlRh
YiBBY3Rpb25zIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJp
Y0ZpbHRlckxvY2tlZCIpICVdCiAgICAgICAgPGxpIGNsYXNzPSJbJSBEYXRhLml0ZW0oIkxvY2tl
ZDo6U2VsZWN0ZWQiKSB8IGh0bWwgJV0iPjxhIGhyZWY9IiMiIGlkPSJEYXNoYm9hcmRbJSBEYXRh
Lk5hbWUgfCBodG1sICVdTG9ja2VkIiBkYXRhLWZpbHRlcj0iTG9ja2VkIj5bJSBUcmFuc2xhdGUo
Ik15IGxvY2tlZCB0aWNrZXRzIikgfCBodG1sICVdIChbJSBEYXRhLkxvY2tlZCB8IGh0bWwgJV0p
PC9hPjwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljRmls
dGVyTG9ja2VkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlVGlja2V0R2Vu
ZXJpY0ZpbHRlcldhdGNoZXIiKSAlXQogICAgICAgIDxsaSBjbGFzcz0iWyUgRGF0YS5pdGVtKCJX
YXRjaGVyOjpTZWxlY3RlZCIpIHwgaHRtbCAlXSI+PGEgaHJlZj0iIyIgaWQ9IkRhc2hib2FyZFsl
IERhdGEuTmFtZSB8IGh0bWwgJV1XYXRjaGVyIiBkYXRhLWZpbHRlcj0iV2F0Y2hlciI+WyUgVHJh
bnNsYXRlKCJNeSB3YXRjaGVkIHRpY2tldHMiKSB8IGh0bWwgJV0gKFslIERhdGEuV2F0Y2hlciB8
IGh0bWwgJV0pPC9hPjwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VUaWNrZXRH
ZW5lcmljRmlsdGVyV2F0Y2hlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJn
ZVRpY2tldEdlbmVyaWNGaWx0ZXJSZXNwb25zaWJsZSIpICVdCiAgICAgICAgPGxpIGNsYXNzPSJb
JSBEYXRhLml0ZW0oIlJlc3BvbnNpYmxlOjpTZWxlY3RlZCIpIHwgaHRtbCAlXSI+PGEgaHJlZj0i
IyIgaWQ9IkRhc2hib2FyZFslIERhdGEuTmFtZSB8IGh0bWwgJV1SZXNwb25zaWJsZSIgZGF0YS1m
aWx0ZXI9IlJlc3BvbnNpYmxlIj5bJSBUcmFuc2xhdGUoIk15IHJlc3BvbnNpYmlsaXRpZXMiKSB8
IGh0bWwgJV0gKFslIERhdGEuUmVzcG9uc2libGUgfCBodG1sICVdKTwvYT48L2xpPgpbJSBSZW5k
ZXJCbG9ja0VuZCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0ZpbHRlclJlc3BvbnNpYmxlIikg
JV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0ZpbHRlck15
UXVldWVzIikgJV0KICAgICAgICA8bGkgY2xhc3M9IlslIERhdGEuaXRlbSgiTXlRdWV1ZXM6OlNl
bGVjdGVkIikgfCBodG1sICVdIj48YSBocmVmPSIjIiBpZD0iRGFzaGJvYXJkWyUgRGF0YS5OYW1l
IHwgaHRtbCAlXU15UXVldWVzIiBkYXRhLWZpbHRlcj0iTXlRdWV1ZXMiPlslIFRyYW5zbGF0ZSgi
VGlja2V0cyBpbiBNeSBRdWV1ZXMiKSB8IGh0bWwgJV0gKFslIERhdGEuTXlRdWV1ZXMgfCBodG1s
ICVdKTwvYT48L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJp
Y0ZpbHRlck15UXVldWVzIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlVGlj
a2V0R2VuZXJpY0ZpbHRlck15U2VydmljZXMiKSAlXQogICAgICAgIDxsaSBjbGFzcz0iWyUgRGF0
YS5pdGVtKCJNeVNlcnZpY2VzOjpTZWxlY3RlZCIpIHwgaHRtbCAlXSI+PGEgaHJlZj0iIyIgaWQ9
IkRhc2hib2FyZFslIERhdGEuTmFtZSB8IGh0bWwgJV1NeVNlcnZpY2VzIiBkYXRhLWZpbHRlcj0i
TXlTZXJ2aWNlcyI+WyUgVHJhbnNsYXRlKCJUaWNrZXRzIGluIE15IFNlcnZpY2VzIikgfCBodG1s
ICVdIChbJSBEYXRhLk15U2VydmljZXMgfCBodG1sICVdKTwvYT48L2xpPgpbJSBSZW5kZXJCbG9j
a0VuZCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0ZpbHRlck15U2VydmljZXMiKSAlXQogICAg
ICAgIDxsaSBjbGFzcz0iWyUgRGF0YS5pdGVtKCJBbGw6OlNlbGVjdGVkIikgfCBodG1sICVdIExh
c3QiPjxhIGhyZWY9IiMiIGlkPSJEYXNoYm9hcmRbJSBEYXRhLk5hbWUgfCBodG1sICVdQWxsIiBk
YXRhLWZpbHRlcj0iQWxsIj5bJSBUcmFuc2xhdGUoIkFsbCB0aWNrZXRzIikgfCBodG1sICVdIChb
JSBEYXRhLkFsbCB8IGh0bWwgJV0pPC9hPjwvbGk+CiAgICA8L3VsPgo8L2Rpdj4KWyUgUmVuZGVy
QmxvY2tTdGFydCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0ZpbHRlck5hdkJhciIpICVdCjxz
cGFuIGNsYXNzPSJQYWdpbmF0aW9uIj4KICAgIFslIERhdGEuU2l0ZU5hdkJhciAlXQo8L3NwYW4+
ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljRmlsdGVyTmF2QmFy
IikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZVRpY2tldEdlbmVyaWNGaWx0ZXIi
KSAlXQoKIzwhLS0gVGhpcyBmb3JtIHdpbGwgbm90IGJlIHN1Ym1pdHRlZCwgd2UgbmVlZCBpdCBm
b3IgdGhlIEFKQVggY2FsbHMuIC0tPgo8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikg
JV0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+CiAgICA8aW5w
dXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDdXN0b21lcklEIiB2YWx1ZT0iWyUgRGF0YS5DdXN0b21l
cklEIHwgaHRtbCAlXSIvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iRmlsdGVyWyUg
RGF0YS5OYW1lIHwgaHRtbCAlXSIgaWQ9IkZpbHRlclslIERhdGEuTmFtZSB8IGh0bWwgJV0iIHZh
bHVlPSJbJSBEYXRhLkZpbHRlclZhbHVlIHwgaHRtbCAlXSIgLz4KICAgIDx0YWJsZSBjbGFzcz0i
RGF0YVRhYmxlIj4KICAgICAgICA8dGhlYWQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRM
YXJnZVRpY2tldEdlbmVyaWNIZWFkZXIiKSAlXQogICAgICAgICAgICA8dHI+CgpbJSBSZW5kZXJC
bG9ja1N0YXJ0KCJHZW5lcmFsT3ZlcnZpZXdIZWFkZXIiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFy
dCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0hlYWRlck1ldGEiKSAlXQogICAgICAgICAgICAg
ICAgPHRoIGNsYXNzPSJEYXNoYm9hcmRIZWFkZXIgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KWyUg
UmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0hlYWRlck1ldGFMaW5r
IikgJV0KICAgICAgICAgICAgICAgICAgICA8YSBpZD0iWyUgRGF0YS5IZWFkZXJDb2x1bW5OYW1l
IHwgaHRtbCAlXUZsYWdPdmVydmlld0NvbnRyb2xbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBuYW1l
PSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdT3ZlcnZpZXdDb250cm9sWyUgRGF0
YS5OYW1lIHwgaHRtbCAlXSIgaHJlZj0iIyIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVd
IiA+PC9hPgoKWyUgV1JBUFBFUiBKU09uRG9jdW1lbnRDb21wbGV0ZSAlXQo8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKICAgICQoJyMnICsgQ29yZS5BcHAuRXNjYXBl
U2VsZWN0b3IoJ1slIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV0nKSArICdGbGFnT3Zl
cnZpZXdDb250cm9sJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCdbJSBEYXRhLk5hbWUgfCBo
dG1sICVdJykpLnVuYmluZCgnY2xpY2snKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkg
ewogICAgICAgIHZhciBGaWx0ZXIsIExpbmtQYWdlLCBDb2x1bW5GaWx0ZXJOYW1lLCBDdXN0b21l
cklEOwoKICAgICAgICBGaWx0ZXIgID0gJCgnI0ZpbHRlcicgKyBDb3JlLkFwcC5Fc2NhcGVTZWxl
Y3RvcignWyUgRGF0YS5OYW1lIHwgaHRtbCAlXScpKS52YWwoKSB8fCAnQWxsJzsKICAgICAgICBM
aW5rUGFnZSA9ICcnOwogICAgICAgIEN1c3RvbWVySUQgPSAkKCdpbnB1dFtuYW1lPUN1c3RvbWVy
SURdJykudmFsKCkgfHwgJyc7CgogICAgICAgIC8vIGdldCBhbGwgY29sdW1uIGZpbHRlcnMKICAg
ICAgICAkKCcuQ29sdW1uRmlsdGVyJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICBDb2x1
bW5GaWx0ZXJOYW1lICA9ICQodGhpcykuYXR0cignbmFtZScpOwoKICAgICAgICAgICAgLy8gZ2V0
IGFsbCBvcHRpb25zIG9mIGN1cnJlbnQgY29sdW1uIGZpbHRlcgogICAgICAgICAgICAkKHRoaXMp
LmNoaWxkcmVuKCkuZWFjaCggZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAoICQodGhp
cykuYXR0cigndmFsdWUnKSAmJiAkKHRoaXMpLmF0dHIoJ3NlbGVjdGVkJykgKSB7CiAgICAgICAg
ICAgICAgICAgICAgTGlua1BhZ2UgPSBMaW5rUGFnZSArIENvbHVtbkZpbHRlck5hbWUgKyAnPScg
KyAkKHRoaXMpLmF0dHIoJ3ZhbHVlJykgKyAnOyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgIH0pOwogICAgICAgIH0pOwoKICAgICAgICAkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVz
Y2FwZVNlbGVjdG9yKCdbJSBEYXRhLk5hbWUgfCBodG1sICVdJykgKyAnLWJveCcpLmFkZENsYXNz
KCdMb2FkaW5nJyk7CiAgICAgICAgQ29yZS5BSkFYLkNvbnRlbnRVcGRhdGUoJCgnI0Rhc2hib2Fy
ZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcignWyUgRGF0YS5OYW1lIHwgaHRtbCAlXScpKSwg
J1slIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlv
bj1FbGVtZW50O05hbWU9WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTtGaWx0ZXI9JyArIEZpbHRlciAr
ICc7JyArIExpbmtQYWdlICsgJztDdXN0b21lcklEPScgKyBDdXN0b21lcklEICsgJztTb3J0Qnk9
WyUgRGF0YS5IZWFkZXJDb2x1bW5OYW1lIHwgaHRtbCAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJC
eSB8IGh0bWwgJV0nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICQoJyNEYXNoYm9hcmQnICsg
Q29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoJ1slIERhdGEuTmFtZSB8IGh0bWwgJV0nKSArICctYm94
JykucmVtb3ZlQ2xhc3MoJ0xvYWRpbmcnKTsKICAgICAgICB9KTsKICAgICAgICBFdmVudC5wcmV2
ZW50RGVmYXVsdCgpOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0pOwovL11dPjwvc2NyaXB0
PgpbJSBFTkQgJV0KClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmlj
SGVhZGVyTWV0YUxpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VUaWNr
ZXRHZW5lcmljSGVhZGVyTWV0YUVtcHR5IikgJV0KICAgICAgICAgICAgICAgICAgICA8c3BhbiB0
aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuSGVhZGVyQ29sdW1uTmFtZSkgfCBodG1sICVdIj48L3Nw
YW4+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljSGVhZGVyTWV0
YUVtcHR5IikgJV0KCiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29u
dGVudExhcmdlVGlja2V0R2VuZXJpY0hlYWRlck1ldGEiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFy
dCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0hlYWRlclRpY2tldEhlYWRlciIpICVdClslIFJl
bmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZVRpY2tldEdlbmVyaWNIZWFkZXJUaWNrZXROdW1i
ZXJDb2x1bW4iKSAlXQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEYXNoYm9hcmRIZWFkZXIg
VGlja2V0TnVtYmVyIFslIERhdGEuQ1NTIHwgaHRtbCAlXSIgZGF0YS1jb2x1bW49IlRpY2tldE51
bWJlciI+CiAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IlRpY2tldE51bWJlck92ZXJ2aWV3Q29u
dHJvbFslIERhdGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9IlRpY2tldE51bWJlck92ZXJ2aWV3Q29u
dHJvbFslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGhyZWY9IiMiIHRpdGxlPSJbJSBEYXRhLlRpdGxl
IHwgaHRtbCAlXSIgPlslIENvbmZpZygiVGlja2V0OjpIb29rIikgJV08L2E+ClslIFdSQVBQRVIg
SlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8v
PCFbQ0RBVEFbCiAgICAkKCcjVGlja2V0TnVtYmVyT3ZlcnZpZXdDb250cm9sJyArIENvcmUuQXBw
LkVzY2FwZVNlbGVjdG9yKCdbJSBEYXRhLk5hbWUgfCBodG1sICVdJykpLnVuYmluZCgnY2xpY2sn
KS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgIHZhciBGaWx0ZXIsIExp
bmtQYWdlLCBDb2x1bW5GaWx0ZXJOYW1lLCBDdXN0b21lcklEOwoKICAgICAgICBGaWx0ZXIgID0g
JCgnI0ZpbHRlcicgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcignWyUgRGF0YS5OYW1lIHwgaHRt
bCAlXScpKS52YWwoKSB8fCAnQWxsJzsKICAgICAgICBMaW5rUGFnZSA9ICcnOwogICAgICAgIEN1
c3RvbWVySUQgPSAkKCdpbnB1dFtuYW1lPUN1c3RvbWVySURdJykudmFsKCkgfHwgJyc7CgogICAg
ICAgIC8vIGdldCBhbGwgY29sdW1uIGZpbHRlcnMKICAgICAgICAkKCcuQ29sdW1uRmlsdGVyJyku
ZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICBDb2x1bW5GaWx0ZXJOYW1lICA9ICQodGhpcyku
YXR0cignbmFtZScpOwoKICAgICAgICAgICAgLy8gZ2V0IGFsbCBvcHRpb25zIG9mIGN1cnJlbnQg
Y29sdW1uIGZpbHRlcgogICAgICAgICAgICAkKHRoaXMpLmNoaWxkcmVuKCkuZWFjaCggZnVuY3Rp
b24oKSB7CiAgICAgICAgICAgICAgICBpZiAoICQodGhpcykuYXR0cigndmFsdWUnKSAmJiAkKHRo
aXMpLmF0dHIoJ3NlbGVjdGVkJykgKSB7CiAgICAgICAgICAgICAgICAgICAgTGlua1BhZ2UgPSBM
aW5rUGFnZSArIENvbHVtbkZpbHRlck5hbWUgKyAnPScgKyAkKHRoaXMpLmF0dHIoJ3ZhbHVlJykg
KyAnOyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwoKICAg
ICAgICAkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCdbJSBEYXRhLk5h
bWUgfCBodG1sICVdJykgKyAnLWJveCcpLmFkZENsYXNzKCdMb2FkaW5nJyk7CiAgICAgICAgQ29y
ZS5BSkFYLkNvbnRlbnRVcGRhdGUoJCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxl
Y3RvcignWyUgRGF0YS5OYW1lIHwgaHRtbCAlXScpICsgJycpLCAnWyUgRW52KCJCYXNlbGluayIp
ICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUVsZW1lbnQ7TmFtZT1bJSBE
YXRhLk5hbWUgfCBodG1sICVdO0ZpbHRlcj0nICsgRmlsdGVyICsgJzsnICsgTGlua1BhZ2UgKyAn
O0N1c3RvbWVySUQ9JyArIEN1c3RvbWVySUQgKyAnO1NvcnRCeT1UaWNrZXROdW1iZXI7T3JkZXJC
eT1bJSBEYXRhLk9yZGVyQnkgfCBodG1sICVdJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAk
KCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCdbJSBEYXRhLk5hbWUgfCBo
dG1sICVdJykgKyAnLWJveCcpLnJlbW92ZUNsYXNzKCdMb2FkaW5nJyk7CiAgICAgICAgfSk7CiAg
ICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9
KTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdCiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5k
ZXJCbG9ja0VuZCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0hlYWRlclRpY2tldE51bWJlckNv
bHVtbiIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmlj
SGVhZGVyQ29sdW1uIikgJV0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRGFzaGJvYXJkSGVh
ZGVyIFslIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV0gWyUgRGF0YS5DU1MgfCBodG1s
ICVdIiBkYXRhLWNvbHVtbj0iWyUgRGF0YS5IZWFkZXJDb2x1bW5OYW1lIHwgaHRtbCAlXSI+Cgpb
JSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljSGVhZGVyQ29sdW1u
RmlsdGVyTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNv
bHVtblNldHRpbmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVd
Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgog
ICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJD
b2x1bW5TZXR0aW5nc0NvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9IkNvbHVtblNldHRpbmdzQm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERh
dGEuQ29sdW1uRmlsdGVyU3RyZyAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VU
aWNrZXRHZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGlua0N1c3RvbWVySURTZWFyY2giKSAlXQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJDdXN0
b21lcklEQXV0b0NvbXBsZXRlIiBhdXRvY29tcGxldGU9Im9mZiIgLz4KWyUgV1JBUFBFUiBKU09u
RG9jdW1lbnRDb21wbGV0ZSAlXQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtD
REFUQVsKQ29yZS5Db25maWcuU2V0KCdDdXN0b21lcklEQXV0b2NvbXBsZXRlLlF1ZXJ5RGVsYXkn
LCAiWyUgRGF0YS5xdWVyeURlbGF5IHwgaHRtbCAlXSIpOwpDb3JlLkNvbmZpZy5TZXQoJ0N1c3Rv
bWVySURBdXRvY29tcGxldGUuTWF4UmVzdWx0c0Rpc3BsYXllZCcsICJbJSBEYXRhLm1heFJlc3Vs
dHNEaXNwbGF5ZWQgfCBodG1sICVdIik7CkNvcmUuQ29uZmlnLlNldCgnQ3VzdG9tZXJJREF1dG9j
b21wbGV0ZS5NaW5RdWVyeUxlbmd0aCcsICJbJSBEYXRhLm1pblF1ZXJ5TGVuZ3RoIHwgaHRtbCAl
XSIpOwpDb3JlLkFnZW50LkRhc2hib2FyZC5Jbml0Q3VzdG9tZXJJREF1dG9jb21wbGV0ZSggJCgi
LkN1c3RvbWVySURBdXRvQ29tcGxldGUiKSApOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0KWyUg
UmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZVRpY2tldEdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0
ZXJMaW5rQ3VzdG9tZXJJRFNlYXJjaCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50
TGFyZ2VUaWNrZXRHZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGlua1VzZXJTZWFyY2giKSAlXQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJVc2Vy
QXV0b0NvbXBsZXRlIiBhdXRvY29tcGxldGU9Im9mZiIgLz4KWyUgV1JBUFBFUiBKU09uRG9jdW1l
bnRDb21wbGV0ZSAlXQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsK
Q29yZS5Db25maWcuU2V0KCdVc2VyQXV0b2NvbXBsZXRlLlF1ZXJ5RGVsYXknLCAiWyUgRGF0YS5x
dWVyeURlbGF5IHwgaHRtbCAlXSIpOwpDb3JlLkNvbmZpZy5TZXQoJ1VzZXJBdXRvY29tcGxldGUu
TWF4UmVzdWx0c0Rpc3BsYXllZCcsICJbJSBEYXRhLm1heFJlc3VsdHNEaXNwbGF5ZWQgfCBodG1s
ICVdIik7CkNvcmUuQ29uZmlnLlNldCgnVXNlckF1dG9jb21wbGV0ZS5NaW5RdWVyeUxlbmd0aCcs
ICJbJSBEYXRhLm1pblF1ZXJ5TGVuZ3RoIHwgaHRtbCAlXSIpOwpDb3JlLkFnZW50LkRhc2hib2Fy
ZC5Jbml0VXNlckF1dG9jb21wbGV0ZSggJCgiLlVzZXJBdXRvQ29tcGxldGUiKSApOwovL11dPjwv
c2NyaXB0PgpbJSBFTkQgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZVRpY2tldEdl
bmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rVXNlclNlYXJjaCIpICVdCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iRGVsZXRlRmlsdGVyIEhpZGRlbiI+PGkg
Y2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwv
ZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8YSBp
ZD0iWyUgRGF0YS5IZWFkZXJDb2x1bW5OYW1lIHwgaHRtbCAlXU92ZXJ2aWV3Q29udHJvbFslIERh
dGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9IlslIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwg
JV1PdmVydmlld0NvbnRyb2xbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBocmVmPSIjIiB0aXRsZT0i
WyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iID5bJSBEYXRhLkhlYWRlck5hbWVUcmFuc2xhdGVkIHwg
aHRtbCAlXTwvYT4KWyUgV1JBUFBFUiBKU09uRG9jdW1lbnRDb21wbGV0ZSAlXQo8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKICAgICQoJyNDb2x1bW5GaWx0ZXInICsg
Q29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoJ1slIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwg
JV0nKSArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCdbJSBEYXRhLk5hbWUgfCBodG1sICVdJykp
LnVuYmluZCgnY2hhbmdlJykuYmluZCgnY2hhbmdlJywgZnVuY3Rpb24oKXsKICAgICAgICB2YXIg
TGlua1BhZ2UsIENvbHVtbkZpbHRlck5hbWUsIEZpbHRlciwgQ29sdW1uRmlsdGVySUQsIEN1c3Rv
bWVySUQ7CgogICAgICAgIExpbmtQYWdlID0gJyc7CiAgICAgICAgRmlsdGVyICAgPSAkKCcjRmls
dGVyJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCdbJSBEYXRhLk5hbWUgfCBodG1sICVdJykp
LnZhbCgpIHx8ICdBbGwnOwogICAgICAgIEN1c3RvbWVySUQgPSAkKCdpbnB1dFtuYW1lPUN1c3Rv
bWVySURdJykudmFsKCkgfHwgJyc7CgogICAgICAgIC8vIHNldCBDb2x1bW5GaWx0ZXIgdmFsdWUg
Zm9yIGN1cnJlbnQgQ29sdW1uRmlsdGVyCiAgICAgICAgQ29sdW1uRmlsdGVyTmFtZSA9ICQodGhp
cykuYXR0cignbmFtZScpOwogICAgICAgIExpbmtQYWdlID0gTGlua1BhZ2UgKyBDb2x1bW5GaWx0
ZXJOYW1lICsgJz0nICsgJCh0aGlzKS52YWwoKSArICc7JzsKCiAgICAgICAgLy8gcmVtZW1iZXIg
dGhlIGN1cnJlbnQgQ29sdW1uRmlsdGVyIElECiAgICAgICAgQ29sdW1uRmlsdGVySUQgPSAkKHRo
aXMpLmF0dHIoJ0lEJyk7CgogICAgICAgIC8vIGdldCBhbGwgY29sdW1uIGZpbHRlcnMKICAgICAg
ICAkKCcuQ29sdW1uRmlsdGVyJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICBDb2x1bW5G
aWx0ZXJOYW1lICA9ICQodGhpcykuYXR0cignbmFtZScpOwoKICAgICAgICAgICAgLy8gZXhjbHVk
ZSBjdXJyZW50IGNvbHVtbiBmaWx0ZXIsIGFwcGFyZW50bHkgdGhlIHNlbGVjdGVkIG9wdGlvbiBp
cyBub3Qgc2V0IHRvCiAgICAgICAgICAgIC8vIHNlbGVjdGVkIGF0IHRoaXMgcG9pbnQgYW5kIHVz
ZXMgdGhlIG9sZCB2YWx1ZQogICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCdJRCcpICE9PSBD
b2x1bW5GaWx0ZXJJRCkgewoKICAgICAgICAgICAgICAgIC8vIGdldCBhbGwgb3B0aW9ucyBvZiBj
dXJyZW50IGNvbHVtbiBmaWx0ZXIKICAgICAgICAgICAgICAgICQodGhpcykuY2hpbGRyZW4oKS5l
YWNoKCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICQodGhpcykuYXR0cign
dmFsdWUnKSAmJiAkKHRoaXMpLmF0dHIoJ3NlbGVjdGVkJykgKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIExpbmtQYWdlID0gTGlua1BhZ2UgKyBDb2x1bW5GaWx0ZXJOYW1lICsgJz0nICsgJCh0
aGlzKS5hdHRyKCd2YWx1ZScpICsgJzsnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgICQoJyNEYXNoYm9h
cmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoJ1slIERhdGEuTmFtZSB8IGh0bWwgJV0nKSAr
ICctYm94JykuYWRkQ2xhc3MoJ0xvYWRpbmcnKTsKICAgICAgICBDb3JlLkFKQVguQ29udGVudFVw
ZGF0ZSgkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCdbJSBEYXRhLk5h
bWUgfCBodG1sICVdJykpLCAnWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0
aW9uIikgJV07U3ViYWN0aW9uPUVsZW1lbnQ7TmFtZT1bJSBEYXRhLk5hbWUgfCBodG1sICVdO0Zp
bHRlcj0nICsgRmlsdGVyICsgJztDdXN0b21lcklEPScgKyBDdXN0b21lcklEICsgJztTb3J0Qnk9
WyUgRGF0YS5Tb3J0QnkgfCBodG1sICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgaHRtbCAl
XTsnICsgTGlua1BhZ2UsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgJCgnI0Rhc2hib2FyZCcg
KyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcignWyUgRGF0YS5OYW1lIHwgaHRtbCAlXScpICsgJy1i
b3gnKS5yZW1vdmVDbGFzcygnTG9hZGluZycpOwogICAgICAgIH0pOwogICAgICAgIHJldHVybiBm
YWxzZTsKICAgIH0pOwoKICAgICQoJyMnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoJ1slIERh
dGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV0nKSArICdPdmVydmlld0NvbnRyb2wnICsgQ29y
ZS5BcHAuRXNjYXBlU2VsZWN0b3IoJ1slIERhdGEuTmFtZSB8IGh0bWwgJV0nKSkudW5iaW5kKCdj
bGljaycpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgdmFyIExpbmtQ
YWdlLCBDb2x1bW5GaWx0ZXJOYW1lLCBGaWx0ZXIsIENvbHVtbkZpbHRlcklELCBDdXN0b21lcklE
OwoKICAgICAgICBMaW5rUGFnZSA9ICcnOwogICAgICAgIEZpbHRlciAgID0gJCgnI0ZpbHRlcicg
KyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcignWyUgRGF0YS5OYW1lIHwgaHRtbCAlXScpKS52YWwo
KSB8fCAnQWxsJzsKICAgICAgICBDdXN0b21lcklEID0gJCgnaW5wdXRbbmFtZT1DdXN0b21lcklE
XScpLnZhbCgpIHx8ICcnOwoKICAgICAgICAvLyBzZXQgQ29sdW1uRmlsdGVyIHZhbHVlIGZvciBj
dXJyZW50IENvbHVtbkZpbHRlcgogICAgICAgIENvbHVtbkZpbHRlck5hbWUgPSAkKHRoaXMpLmF0
dHIoJ25hbWUnKTsKICAgICAgICBMaW5rUGFnZSA9IExpbmtQYWdlICsgQ29sdW1uRmlsdGVyTmFt
ZSArICc9JyArICQodGhpcykudmFsKCkgKyAnOyc7CgogICAgICAgIC8vIHJlbWVtYmVyIHRoZSBj
dXJyZW50IENvbHVtbkZpbHRlciBJRAogICAgICAgIENvbHVtbkZpbHRlcklEID0gJCh0aGlzKS5h
dHRyKCdJRCcpOwoKICAgICAgICAvLyBnZXQgYWxsIGNvbHVtbiBmaWx0ZXJzCiAgICAgICAgJCgn
LkNvbHVtbkZpbHRlcicpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgQ29sdW1uRmlsdGVy
TmFtZSAgPSAkKHRoaXMpLmF0dHIoJ25hbWUnKTsKCiAgICAgICAgICAgIC8vIGV4Y2x1ZGUgY3Vy
cmVudCBjb2x1bW4gZmlsdGVyLCBhcHBhcmVudGx5IHRoZSBzZWxlY3RlZCBvcHRpb24gaXMgbm90
IHNldCB0bwogICAgICAgICAgICAvLyBzZWxlY3RlZCBhdCB0aGlzIHBvaW50IGFuZCB1c2VzIHRo
ZSBvbGQgdmFsdWUKICAgICAgICAgICAgaWYgKCQodGhpcykuYXR0cignSUQnKSAhPT0gQ29sdW1u
RmlsdGVySUQpIHsKCiAgICAgICAgICAgICAgICAvLyBnZXQgYWxsIG9wdGlvbnMgb2YgY3VycmVu
dCBjb2x1bW4gZmlsdGVyCiAgICAgICAgICAgICAgICAkKHRoaXMpLmNoaWxkcmVuKCkuZWFjaCgg
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkKHRoaXMpLmF0dHIoJ3ZhbHVl
JykgJiYgJCh0aGlzKS5hdHRyKCdzZWxlY3RlZCcpICkgewogICAgICAgICAgICAgICAgICAgICAg
ICBMaW5rUGFnZSA9IExpbmtQYWdlICsgQ29sdW1uRmlsdGVyTmFtZSArICc9JyArICQodGhpcyku
YXR0cigndmFsdWUnKSArICc7JzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAkKCcjRGFzaGJvYXJkJyAr
IENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCdbJSBEYXRhLk5hbWUgfCBodG1sICVdJykgKyAnLWJv
eCcpLmFkZENsYXNzKCdMb2FkaW5nJyk7CiAgICAgICAgQ29yZS5BSkFYLkNvbnRlbnRVcGRhdGUo
JCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcignWyUgRGF0YS5OYW1lIHwg
aHRtbCAlXScpKSwgJ1slIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIp
ICVdO1N1YmFjdGlvbj1FbGVtZW50O05hbWU9WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTtGaWx0ZXI9
JyArIEZpbHRlciArICc7Q3VzdG9tZXJJRD0nICsgQ3VzdG9tZXJJRCArICc7U29ydEJ5PVslIERh
dGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCBo
dG1sICVdOycgKyBMaW5rUGFnZSwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAkKCcjRGFzaGJv
YXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCdbJSBEYXRhLk5hbWUgfCBodG1sICVdJykg
KyAnLWJveCcpLnJlbW92ZUNsYXNzKCdMb2FkaW5nJyk7CiAgICAgICAgfSk7CiAgICAgICAgRXZl
bnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9KTsKLy9dXT48
L3NjcmlwdD4KWyUgRU5EICVdClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VUaWNrZXRH
ZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGluayIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJD
b250ZW50TGFyZ2VUaWNrZXRHZW5lcmljSGVhZGVyQ29sdW1uTGluayIpICVdCiAgICAgICAgICAg
ICAgICAgICAgPGEgaWQ9IlslIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV1PdmVydmll
d0NvbnRyb2xbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBuYW1lPSJbJSBEYXRhLkhlYWRlckNvbHVt
bk5hbWUgfCBodG1sICVdT3ZlcnZpZXdDb250cm9sWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgaHJl
Zj0iIyIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiA+WyUgRGF0YS5IZWFkZXJOYW1l
VHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+ClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxldGUg
JV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICAkKCcjJyAr
IENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCdbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1s
ICVdJykgKyAnT3ZlcnZpZXdDb250cm9sJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCdbJSBE
YXRhLk5hbWUgfCBodG1sICVdJykpLnVuYmluZCgnY2xpY2snKS5iaW5kKCdjbGljaycsIGZ1bmN0
aW9uIChFdmVudCkgewogICAgICAgIHZhciBMaW5rUGFnZSwgQ29sdW1uRmlsdGVyTmFtZSwgRmls
dGVyLCBDb2x1bW5GaWx0ZXJJRCwgQ3VzdG9tZXJJRDsKCiAgICAgICAgTGlua1BhZ2UgPSAnJzsK
ICAgICAgICBGaWx0ZXIgICA9ICQoJyNGaWx0ZXInICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3Io
J1slIERhdGEuTmFtZSB8IGh0bWwgJV0nKSkudmFsKCkgfHwgJ0FsbCc7CiAgICAgICAgQ3VzdG9t
ZXJJRCA9ICQoJ2lucHV0W25hbWU9Q3VzdG9tZXJJRF0nKS52YWwoKSB8fCAnJzsKCiAgICAgICAg
Ly8gc2V0IENvbHVtbkZpbHRlciB2YWx1ZSBmb3IgY3VycmVudCBDb2x1bW5GaWx0ZXIKICAgICAg
ICBDb2x1bW5GaWx0ZXJOYW1lID0gJCh0aGlzKS5hdHRyKCduYW1lJyk7CiAgICAgICAgTGlua1Bh
Z2UgPSBMaW5rUGFnZSArIENvbHVtbkZpbHRlck5hbWUgKyAnPScgKyAkKHRoaXMpLnZhbCgpICsg
JzsnOwoKICAgICAgICAvLyByZW1lbWJlciB0aGUgY3VycmVudCBDb2x1bW5GaWx0ZXIgSUQKICAg
ICAgICBDb2x1bW5GaWx0ZXJJRCA9ICQodGhpcykuYXR0cignSUQnKTsKCiAgICAgICAgLy8gZ2V0
IGFsbCBjb2x1bW4gZmlsdGVycwogICAgICAgICQoJy5Db2x1bW5GaWx0ZXInKS5lYWNoKGZ1bmN0
aW9uKCl7CiAgICAgICAgICAgIENvbHVtbkZpbHRlck5hbWUgID0gJCh0aGlzKS5hdHRyKCduYW1l
Jyk7CgogICAgICAgICAgICAvLyBleGNsdWRlIGN1cnJlbnQgY29sdW1uIGZpbHRlciwgYXBwYXJl
bnRseSB0aGUgc2VsZWN0ZWQgb3B0aW9uIGlzIG5vdCBzZXQgdG8KICAgICAgICAgICAgLy8gc2Vs
ZWN0ZWQgYXQgdGhpcyBwb2ludCBhbmQgdXNlcyB0aGUgb2xkIHZhbHVlCiAgICAgICAgICAgIGlm
ICgkKHRoaXMpLmF0dHIoJ0lEJykgIT09IENvbHVtbkZpbHRlcklEKSB7CgogICAgICAgICAgICAg
ICAgLy8gZ2V0IGFsbCBvcHRpb25zIG9mIGN1cnJlbnQgY29sdW1uIGZpbHRlcgogICAgICAgICAg
ICAgICAgJCh0aGlzKS5jaGlsZHJlbigpLmVhY2goIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
ICAgICAgIGlmICggJCh0aGlzKS5hdHRyKCd2YWx1ZScpICYmICQodGhpcykuYXR0cignc2VsZWN0
ZWQnKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgTGlua1BhZ2UgPSBMaW5rUGFnZSArIENv
bHVtbkZpbHRlck5hbWUgKyAnPScgKyAkKHRoaXMpLmF0dHIoJ3ZhbHVlJykgKyAnOyc7CiAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAg
ICB9KTsKCiAgICAgICAgJCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3Rvcign
WyUgRGF0YS5OYW1lIHwgaHRtbCAlXScpICsgJy1ib3gnKS5hZGRDbGFzcygnTG9hZGluZycpOwog
ICAgICAgIENvcmUuQUpBWC5Db250ZW50VXBkYXRlKCQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAu
RXNjYXBlU2VsZWN0b3IoJ1slIERhdGEuTmFtZSB8IGh0bWwgJV0nKSksICdbJSBFbnYoIkJhc2Vs
aW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249RWxlbWVudDtOYW1l
PVslIERhdGEuTmFtZSB8IGh0bWwgJV07RmlsdGVyPScgKyBGaWx0ZXIgKyAnO0N1c3RvbWVySUQ9
JyArIEN1c3RvbWVySUQgKyc7U29ydEJ5PVslIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwg
JV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCBodG1sICVdOycgKyBMaW5rUGFnZSwgZnVuY3Rp
b24gKCkgewogICAgICAgICAgICAkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVj
dG9yKCdbJSBEYXRhLk5hbWUgfCBodG1sICVdJykgKyAnLWJveCcpLnJlbW92ZUNsYXNzKCdMb2Fk
aW5nJyk7CiAgICAgICAgfSk7CiAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdCgpbJSBSZW5k
ZXJCbG9ja0VuZCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0hlYWRlckNvbHVtbkxpbmsiKSAl
XQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0hlYWRlckNv
bHVtbkZpbHRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNv
bHVtblNldHRpbmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVd
Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgog
ICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJD
b2x1bW5TZXR0aW5nc0NvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh
c3M9IkNvbHVtblNldHRpbmdzQm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERh
dGEuQ29sdW1uRmlsdGVyU3RyZyAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VU
aWNrZXRHZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGlua0N1c3RvbWVyVXNlclNlYXJjaCIpICVd
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9IkN1
c3RvbWVyVXNlckF1dG9Db21wbGV0ZSIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+ClslIFdSQVBQRVIg
SlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8v
PCFbQ0RBVEFbCkNvcmUuQ29uZmlnLlNldCgnQ3VzdG9tZXJVc2VyQXV0b2NvbXBsZXRlLlF1ZXJ5
RGVsYXknLCAiWyUgRGF0YS5xdWVyeURlbGF5IHwgaHRtbCAlXSIpOwpDb3JlLkNvbmZpZy5TZXQo
J0N1c3RvbWVyVXNlckF1dG9jb21wbGV0ZS5NYXhSZXN1bHRzRGlzcGxheWVkJywgIlslIERhdGEu
bWF4UmVzdWx0c0Rpc3BsYXllZCB8IGh0bWwgJV0iKTsKQ29yZS5Db25maWcuU2V0KCdDdXN0b21l
clVzZXJBdXRvY29tcGxldGUuTWluUXVlcnlMZW5ndGgnLCAiWyUgRGF0YS5taW5RdWVyeUxlbmd0
aCB8IGh0bWwgJV0iKTsKQ29yZS5BZ2VudC5EYXNoYm9hcmQuSW5pdEN1c3RvbWVyVXNlckF1dG9j
b21wbGV0ZSggJCgiLkN1c3RvbWVyVXNlckF1dG9Db21wbGV0ZSIpICk7Ci8vXV0+PC9zY3JpcHQ+
ClslIEVORCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0hl
YWRlckNvbHVtbkZpbHRlckxpbmtDdXN0b21lclVzZXJTZWFyY2giKSAlXQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkRlbGV0ZUZpbHRlciBIaWRkZW4iPjxp
IGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8
L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KClslIFdSQVBQRVIgSlNPbkRvY3VtZW50
Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAg
ICAkKCcjQ29sdW1uRmlsdGVyJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCdbJSBEYXRhLkhl
YWRlckNvbHVtbk5hbWUgfCBodG1sICVdJykgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcignWyUg
RGF0YS5OYW1lIHwgaHRtbCAlXScpKS51bmJpbmQoJ2NoYW5nZScpLmJpbmQoJ2NoYW5nZScsIGZ1
bmN0aW9uKCl7CiAgICAgICAgdmFyIExpbmtQYWdlLCBDb2x1bW5GaWx0ZXJOYW1lLCBGaWx0ZXIs
IENvbHVtbkZpbHRlcklELCBDdXN0b21lcklEOwoKICAgICAgICBMaW5rUGFnZSA9ICcnOwogICAg
ICAgIEZpbHRlciAgID0gJCgnI0ZpbHRlcicgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcignWyUg
RGF0YS5OYW1lIHwgaHRtbCAlXScpKS52YWwoKSB8fCAnQWxsJzsKICAgICAgICBDdXN0b21lcklE
ID0gJCgnaW5wdXRbbmFtZT1DdXN0b21lcklEXScpLnZhbCgpIHx8ICcnOwoKICAgICAgICAvLyBz
ZXQgQ29sdW1uRmlsdGVyIHZhbHVlIGZvciBjdXJyZW50IENvbHVtbkZpbHRlcgogICAgICAgIENv
bHVtbkZpbHRlck5hbWUgPSAkKHRoaXMpLmF0dHIoJ25hbWUnKTsKICAgICAgICBMaW5rUGFnZSA9
IExpbmtQYWdlICsgQ29sdW1uRmlsdGVyTmFtZSArICc9JyArICQodGhpcykudmFsKCkgKyAnOyc7
CgogICAgICAgIC8vIHJlbWVtYmVyIHRoZSBjdXJyZW50IENvbHVtbkZpbHRlciBJRAogICAgICAg
IENvbHVtbkZpbHRlcklEID0gJCh0aGlzKS5hdHRyKCdJRCcpOwoKICAgICAgICAvLyBnZXQgYWxs
IGNvbHVtbiBmaWx0ZXJzCiAgICAgICAgJCgnLkNvbHVtbkZpbHRlcicpLmVhY2goZnVuY3Rpb24o
KXsKICAgICAgICAgICAgQ29sdW1uRmlsdGVyTmFtZSAgPSAkKHRoaXMpLmF0dHIoJ25hbWUnKTsK
CiAgICAgICAgICAgIC8vIGV4Y2x1ZGUgY3VycmVudCBjb2x1bW4gZmlsdGVyLCBhcHBhcmVudGx5
IHRoZSBzZWxlY3RlZCBvcHRpb24gaXMgbm90IHNldCB0bwogICAgICAgICAgICAvLyBzZWxlY3Rl
ZCBhdCB0aGlzIHBvaW50IGFuZCB1c2VzIHRoZSBvbGQgdmFsdWUKICAgICAgICAgICAgaWYgKCQo
dGhpcykuYXR0cignSUQnKSAhPT0gQ29sdW1uRmlsdGVySUQpIHsKCiAgICAgICAgICAgICAgICAv
LyBnZXQgYWxsIG9wdGlvbnMgb2YgY3VycmVudCBjb2x1bW4gZmlsdGVyCiAgICAgICAgICAgICAg
ICAkKHRoaXMpLmNoaWxkcmVuKCkuZWFjaCggZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAg
ICAgaWYgKCAkKHRoaXMpLmF0dHIoJ3ZhbHVlJykgJiYgJCh0aGlzKS5hdHRyKCdzZWxlY3RlZCcp
ICkgewogICAgICAgICAgICAgICAgICAgICAgICBMaW5rUGFnZSA9IExpbmtQYWdlICsgQ29sdW1u
RmlsdGVyTmFtZSArICc9JyArICQodGhpcykuYXR0cigndmFsdWUnKSArICc7JzsKICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0p
OwoKICAgICAgICAkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCdbJSBE
YXRhLk5hbWUgfCBodG1sICVdJykgKyAnLWJveCcpLmFkZENsYXNzKCdMb2FkaW5nJyk7CiAgICAg
ICAgQ29yZS5BSkFYLkNvbnRlbnRVcGRhdGUoJCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2Nh
cGVTZWxlY3RvcignWyUgRGF0YS5OYW1lIHwgaHRtbCAlXScpKSwgJ1slIEVudigiQmFzZWxpbmsi
KSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1FbGVtZW50O05hbWU9WyUg
RGF0YS5OYW1lIHwgaHRtbCAlXTtGaWx0ZXI9JyArIEZpbHRlciArICc7Q3VzdG9tZXJJRD0nICsg
Q3VzdG9tZXJJRCArICc7U29ydEJ5PVslIERhdGEuU29ydEJ5IHwgaHRtbCAlXTtPcmRlckJ5PVsl
IERhdGEuT3JkZXJCeSB8IGh0bWwgJV07JyArIExpbmtQYWdlLCBmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoJ1slIERhdGEu
TmFtZSB8IGh0bWwgJV0nKSArICctYm94JykucmVtb3ZlQ2xhc3MoJ0xvYWRpbmcnKTsKICAgICAg
ICB9KTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9KTsKLy9dXT48L3NjcmlwdD4KWyUgRU5E
ICVdCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkdyYXkiIHRpdGxlPSJbJSBEYXRh
LlRpdGxlIHwgaHRtbCAlXSIgPlslIERhdGEuSGVhZGVyTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVd
PC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0hlYWRl
ckNvbHVtbkZpbHRlciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VUaWNr
ZXRHZW5lcmljSGVhZGVyQ29sdW1uRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgICAgIDxzcGFu
IGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iID5bJSBEYXRhLkhl
YWRlck5hbWVUcmFuc2xhdGVkICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExh
cmdlVGlja2V0R2VuZXJpY0hlYWRlckNvbHVtbkVtcHR5IikgJV0KICAgICAgICAgICAgICAgIDwv
dGg+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljSGVhZGVyQ29s
dW1uIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZVRpY2tldEdlbmVyaWNIZWFk
ZXJUaWNrZXRIZWFkZXIiKSAlXQoKWyUgUmVuZGVyQmxvY2tFbmQoIkdlbmVyYWxPdmVydmlld0hl
YWRlciIpICVdCgogICAgICAgICAgICA8L3RyPgoKWyUgV1JBUFBFUiBKU09uRG9jdW1lbnRDb21w
bGV0ZSAlXQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKJCgnLkRh
c2hib2FyZEhlYWRlcicpLm9mZignY2xpY2snKS5vbignY2xpY2snLCAnLkNvbHVtblNldHRpbmdz
VHJpZ2dlcicsIGZ1bmN0aW9uKCkgewoKICAgIHZhciAkVHJpZ2dlck9iaiA9ICQodGhpcyksCiAg
ICAgICAgJENvbHVtblNldHRpbmdzQ29udGFpbmVyID0gJFRyaWdnZXJPYmoubmV4dCgnLkNvbHVt
blNldHRpbmdzQ29udGFpbmVyJyksCiAgICAgICAgRmlsdGVyTmFtZTsKCiAgICBpZiAoJFRyaWdn
ZXJPYmouaGFzQ2xhc3MoJ0FjdGl2ZScpKSB7CgogICAgICAgICRUcmlnZ2VyT2JqCiAgICAgICAg
ICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAuZmluZCgn
LkNvbHVtblNldHRpbmdzQm94JykKICAgICAgICAgICAgLmZhZGVPdXQoJ2Zhc3QnLCBmdW5jdGlv
bigpIHsKICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLnJlbW92ZUNsYXNzKCdBY3RpdmUnKTsK
ICAgICAgICAgICAgfSk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgLy8gc2xpZGUgdXAgYWxs
IG9wZW4gc2V0dGluZ3Mgd2lkZ2V0cwogICAgICAgICQoJy5Db2x1bW5TZXR0aW5nc1RyaWdnZXIn
KQogICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAg
ICAgLmZpbmQoJy5Db2x1bW5TZXR0aW5nc0JveCcpCiAgICAgICAgICAgIC5mYWRlT3V0KCdmYXN0
JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudCgpLnByZXYoJy5D
b2x1bW5TZXR0aW5nc1RyaWdnZXInKS5yZW1vdmVDbGFzcygnQWN0aXZlJyk7CiAgICAgICAgICAg
IH0pOwoKICAgICAgICAvLyBzaG93IFRISVMgc2V0dGluZ3Mgd2lkZ2V0CiAgICAgICAgJENvbHVt
blNldHRpbmdzQ29udGFpbmVyCiAgICAgICAgICAgIC5maW5kKCcuQ29sdW1uU2V0dGluZ3NCb3gn
KQogICAgICAgICAgICAuZmFkZUluKCdmYXN0JywgZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAg
ICAgJFRyaWdnZXJPYmouYWRkQ2xhc3MoJ0FjdGl2ZScpOwoKICAgICAgICAgICAgICAgIC8vIG9u
bHkgc2hvdyBhbmQgdXNlIHRoZSBkZWxldGUgZmlsdGVyIGljb24gaW4gY2FzZSBvZiBhdXRvY29t
cGxldGUgZmllbGRzCiAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIGluIHJlZ3VsYXIgZHJvcGRv
d25zIHdlIGhhdmUgYSBkaWZmZXJlbnQgd2F5IHRvIGRlbGV0ZSB0aGUgZmlsdGVyCiAgICAgICAg
ICAgICAgICBpZiAoJFRyaWdnZXJPYmouY2xvc2VzdCgndGgnKS5oYXNDbGFzcygnRmlsdGVyQWN0
aXZlJykgJiYgJENvbHVtblNldHRpbmdzQ29udGFpbmVyLmZpbmQoJ3NlbGVjdC5Db2x1bW5GaWx0
ZXInKS5oYXNDbGFzcygnSGlkZGVuJykpIHsKICAgICAgICAgICAgICAgICAgICAkQ29sdW1uU2V0
dGluZ3NDb250YWluZXIKICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5EZWxldGVGaWx0
ZXInKQogICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpCiAgICAg
ICAgICAgICAgICAgICAgICAgIC5vZmYoKQogICAgICAgICAgICAgICAgICAgICAgICAub24oJ2Ns
aWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5Db2x1bW5TZXR0aW5nc0Nv
bnRhaW5lcicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbCgnRGVsZXRlRmlsdGVyJykKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudHJpZ2dlcignY2hhbmdlJyk7CgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyByZWZyZXNoIGZpbHRl
ciBkcm9wZG93bgogICAgICAgICAgICAgICAgRmlsdGVyTmFtZSA9ICRDb2x1bW5TZXR0aW5nc0Nv
bnRhaW5lcgogICAgICAgICAgICAgICAgICAgIC5maW5kKCdzZWxlY3QnKQogICAgICAgICAgICAg
ICAgICAgIC5hdHRyKCduYW1lJyk7CgogICAgICAgICAgICAgICAgaWYgKCAkVHJpZ2dlck9iai5j
bG9zZXN0KCd0aCcpLmhhc0NsYXNzKCdDdXN0b21lcklEJykgfHwgJFRyaWdnZXJPYmouY2xvc2Vz
dCgndGgnKS5oYXNDbGFzcygnQ3VzdG9tZXJVc2VySUQnKSB8fCAkVHJpZ2dlck9iai5jbG9zZXN0
KCd0aCcpLmhhc0NsYXNzKCdSZXNwb25zaWJsZScpIHx8ICRUcmlnZ2VyT2JqLmNsb3Nlc3QoJ3Ro
JykuaGFzQ2xhc3MoJ093bmVyJykgKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICghJFRyaWdn
ZXJPYmoucGFyZW50KCkuZmluZCgnLlNlbGVjdGVkVmFsdWUnKS5sZW5ndGgpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgQ29yZS5BSkFYLkZvcm1VcGRhdGUoJFRyaWdnZXJPYmoucGFyZW50cygn
Zm9ybScpLCAnQUpBWEZpbHRlclVwZGF0ZScsIEZpbHRlck5hbWUsIFsgRmlsdGVyTmFtZSBdLCBm
dW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBBdXRvQ29tcGxldGVW
YWx1ZSA9ICRDb2x1bW5TZXR0aW5nc0NvbnRhaW5lcgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAuZmluZCgnc2VsZWN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLnZhbCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dG9Db21wbGV0
ZVRleHQgID0gJENvbHVtblNldHRpbmdzQ29udGFpbmVyCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC5maW5kKCdzZWxlY3QnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAuZmluZCgnb3B0aW9uOnNlbGVjdGVkJykKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLnRleHQoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXV0
b0NvbXBsZXRlVmFsdWUgIT09ICdEZWxldGVGaWx0ZXInKSB7CgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICRDb2x1bW5TZXR0aW5nc0NvbnRhaW5lcgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAuZmluZCgnc2VsZWN0JykKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLmFmdGVyKCc8c3BhbiBjbGFzcz0iU2VsZWN0ZWRWYWx1ZSBIaWRkZW4iPjxz
cGFuIHRpdGxlPSInICsgQXV0b0NvbXBsZXRlVGV4dCArICcgKCcgKyBBdXRvQ29tcGxldGVWYWx1
ZSArICcpIj4nICsgQXV0b0NvbXBsZXRlVGV4dCArICcgKCcgKyBBdXRvQ29tcGxldGVWYWx1ZSAr
ICcpPC9zcGFuPjwvc3Bhbj4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgQ29yZS5BSkFY
LkZvcm1VcGRhdGUoJFRyaWdnZXJPYmoucGFyZW50cygnZm9ybScpLCAnQUpBWEZpbHRlclVwZGF0
ZScsIEZpbHRlck5hbWUsIFsgRmlsdGVyTmFtZSBdKTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICB9KTsKICAgIH0KCiAgICByZXR1cm4gZmFsc2U7Cn0pOwoKLy9dXT48L3NjcmlwdD4KWyUgRU5E
ICVdCgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0hlYWRlciIp
ICVdCiAgICAgICAgPC90aGVhZD4KCiAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0
KCJDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljUm93IikgJV0KIyAtLS0KIyBQUwojIC0tLQojICAg
ICAgICAgICAgPHRyIGNsYXNzPSJNYXN0ZXJBY3Rpb24iPgogICAgICAgICAgICAgICAgPHRyIGlk
PSJUaWNrZXRJRF9bJSBEYXRhLlRpY2tldElEIHwgaHRtbCAlXSIgY2xhc3M9Ik1hc3RlckFjdGlv
biBbJSBEYXRhLkhvb2tlZE1haW4gfCBodG1sICVdIFslIERhdGEuSG9va2VkIHwgaHRtbCAlXSI+
CiMgLS0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmFsT3ZlcnZpZXdSb3ciKSAlXQoKWyUg
UmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY1Jvd01ldGEiKSAlXQog
ICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJbJSBEYXRhLkNsYXNzVGFibGUgfCBodG1sICVdIEZs
YWdzIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+ClslIFJlbmRl
ckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZVRpY2tldEdlbmVyaWNSb3dNZXRhSW1hZ2UiKSAlXQog
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlslIERhdGEuQ2xhc3MgfCBodG1sICVdIFNt
YWxsIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+CiAgICAgICAg
ICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkNsYXNzU3BhbiB8IGh0bWwgJV0i
PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXN0YXIiPjwvaT4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zdGFyIj48L2k+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+WyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwg
aHRtbCAlXTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZVRpY2tldEdlbmVy
aWNSb3dNZXRhSW1hZ2UiKSAlXQogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tF
bmQoIkNvbnRlbnRMYXJnZVRpY2tldEdlbmVyaWNSb3dNZXRhIikgJV0KCiMgICAgICAgICAgICA8
dGQgY2xhc3M9IlcxMHBjIj4KIyAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2Vs
aW5rIikgJV1BY3Rpb249QWdlbnRUaWNrZXRab29tO1RpY2tldElEPVslIERhdGEuVGlja2V0SUQg
JV0iIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSIgY2xhc3M9IkFzQmxvY2sgTWFzdGVy
QWN0aW9uTGluayI+WyUgRGF0YS5UaWNrZXROdW1iZXIgJV08L2E+CiMgICAgICAgICAgICA8L3Rk
PgojICAgICAgICAgICAgPHRkIGNsYXNzPSJXNTBwYyI+CiMgICAgICAgICAgICAgICAgPGRpdiB0
aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuVGl0bGUgfCB0cnVuY2F0ZSg3
MCkgfCBodG1sICVdPC9kaXY+CiMgICAgICAgICAgICA8L3RkPgojICAgICAgICAgICAgPHRkPlsl
IERhdGEuVGltZSB8IGh0bWwgJV08L3RkPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExh
cmdlVGlja2V0R2VuZXJpY1RpY2tldENvbHVtbiIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNv
bnRlbnRMYXJnZVRpY2tldEdlbmVyaWNUaWNrZXROdW1iZXIiKSAlXQogICAgICAgICAgICAgICAg
PHRkPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFj
dGlvbj1BZ2VudFRpY2tldFpvb207VGlja2V0SUQ9WyUgRGF0YS5UaWNrZXRJRCAlXSIgdGl0bGU9
IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiBjbGFzcz0iQXNCbG9jayBNYXN0ZXJBY3Rpb25MaW5r
Ij5bJSBEYXRhLlRpY2tldE51bWJlciAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJl
bmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljVGlja2V0TnVtYmVyIikgJV0K
WyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0VzY2FsYXRpb25U
aW1lIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRp
dGxlPSJbJSBUcmFuc2xhdGUoIlNlcnZpY2UgVGltZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5Fc2Nh
bGF0aW9uVGltZVdvcmtpbmdUaW1lIHwgaHRtbCAlXSAtIFslIERhdGEuRXNjYWxhdGlvbkRlc3Rp
bmF0aW9uRGF0ZSB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSAlXSIgY2xhc3M9IlslIERhdGEuRXNj
YWxhdGlvbkNsYXNzIHwgaHRtbCAlXSI+WyUgRGF0YS5Fc2NhbGF0aW9uVGltZUh1bWFuIHwgaHRt
bCAlXTxici8+WyUgRGF0YS5VcGRhdGVUaW1lRGVzdGluYXRpb25EYXRlIHwgTG9jYWxpemUoIlRp
bWVTaG9ydCIpICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0Vu
ZCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0VzY2FsYXRpb25UaW1lIikgJV0KWyUgUmVuZGVy
QmxvY2tTdGFydCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0NvbHVtbiIpICVdCiAgICAgICAg
ICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5HZW5l
cmljVmFsdWUgfCBodG1sICVdIj5bJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IHRydW5jYXRlKDQwKSB8
IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJD
b250ZW50TGFyZ2VUaWNrZXRHZW5lcmljQ29sdW1uIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgi
Q29udGVudExhcmdlVGlja2V0VGl0bGUiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAg
ICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuV2hvbGVUaXRsZSB8IGh0bWwgJV0iPlsl
IERhdGEuVGl0bGUgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5k
ZXJCbG9ja0VuZCgiQ29udGVudExhcmdlVGlja2V0VGl0bGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0
YXJ0KCJDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljQ29sdW1uVHJhbnNsYXRhYmxlIikgJV0KICAg
ICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFu
c2xhdGUoRGF0YS5HZW5lcmljVmFsdWUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuR2Vu
ZXJpY1ZhbHVlKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRl
ckJsb2NrRW5kKCJDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljQ29sdW1uVHJhbnNsYXRhYmxlIikg
JV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0NvbHVtblRp
bWUiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0
bGU9IlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpIHwgaHRtbCAl
XSI+WyUgRGF0YS5HZW5lcmljVmFsdWUgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV08L2Rpdj4K
ICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VUaWNr
ZXRHZW5lcmljQ29sdW1uVGltZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJn
ZVRpY2tldEdlbmVyaWNDb2x1bW5Fc2NhbGF0aW9uIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4K
ICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IGh0
bWwgJV0iIGNsYXNzPSJbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSI+WyUgRGF0YS5HZW5lcmljVmFs
dWUgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0Vu
ZCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0NvbHVtbkVzY2FsYXRpb24iKSAlXQpbJSBSZW5k
ZXJCbG9ja0VuZCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY1RpY2tldENvbHVtbiIpICVdCgpb
JSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljRHluYW1pY0ZpZWxk
IikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxl
PSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRM
YXJnZVRpY2tldEdlbmVyaWNEeW5hbWljRmllbGRMaW5rIikgJV0KICAgICAgICAgICAgICAgICAg
ICAgICAgPGEgaHJlZj0iWyUgRGF0YS5MaW5rIHwgSW50ZXJwb2xhdGUgJV0iICB0YXJnZXQ9Il9i
bGFuayIgY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+ClslIFJl
bmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljRHluYW1pY0ZpZWxkTGluayIp
ICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZVRpY2tldEdlbmVyaWNEeW5hbWlj
RmllbGRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmFsdWUgJV0K
WyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZVRpY2tldEdlbmVyaWNEeW5hbWljRmllbGRQ
bGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3Rk
PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0R5bmFtaWNGaWVs
ZCIpICVdCgpbJSBSZW5kZXJCbG9ja0VuZCgiR2VuZXJhbE92ZXJ2aWV3Um93IikgJV0KCiAgICAg
ICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmlj
Um93IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY05v
bmUiKSAlXQogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkF1dG9D
b2xzcGFuIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIm5vbmUiKSB8IGh0bWwg
JV0KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+ClslIFdSQVBQRVIgSlNP
bkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFb
Q0RBVEFbCiQoJy5BdXRvQ29sc3BhbicpLmVhY2goZnVuY3Rpb24oKSB7CiAgICB2YXIgQ29sc3Bh
bkNvdW50ID0gJCh0aGlzKS5jbG9zZXN0KCd0YWJsZScpLmZpbmQoJ3RoJykubGVuZ3RoOwogICAg
JCh0aGlzKS5hdHRyKCdjb2xzcGFuJywgQ29sc3BhbkNvdW50KTsKfSk7Ci8vXV0+PC9zY3JpcHQ+
ClslIEVORCAlXQoKWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZVRpY2tldEdlbmVyaWNO
b25lIikgJV0KICAgICAgICA8L3Rib2R5PgogICAgPC90YWJsZT4KPC9mb3JtPgoKWyUgUmVuZGVy
QmxvY2tTdGFydCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY1JlZnJlc2giKSAlXQpbJSBXUkFQ
UEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4vLzwhW0NEQVRBWwpDb3JlLkNvbmZpZy5TZXQoJ1JlZnJlc2hTZWNvbmRzX1slIERhdGEuTmFt
ZUhUTUwgfCBodG1sICVdJywgcGFyc2VJbnQoIlslIERhdGEuUmVmcmVzaFRpbWUgfCBodG1sICVd
IiwgMTApIHx8IDApOwppZiAoQ29yZS5Db25maWcuR2V0KCdSZWZyZXNoU2Vjb25kc19bJSBEYXRh
Lk5hbWVIVE1MIHwgaHRtbCAlXScpKSB7CiAgICBDb3JlLkNvbmZpZy5TZXQoJ1RpbWVyX1slIERh
dGEuTmFtZUhUTUwgfCBodG1sICVdJywgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Cgog
ICAgICAgIC8vIGdldCBhY3RpdmUgZmlsdGVyCiAgICAgICAgdmFyIEZpbHRlciAgICAgID0gJCgn
I0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcignWyUgRGF0YS5OYW1lIHwgaHRt
bCAlXScpICsgJy1ib3gnKS5maW5kKCcuVGFiLkFjdGlvbnMgbGkuU2VsZWN0ZWQgYScpLmF0dHIo
J2RhdGEtZmlsdGVyJyksCiAgICAgICAgICAgICRPcmRlckJ5T2JqID0gJCgnI0Rhc2hib2FyZCcg
KyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcignWyUgRGF0YS5OYW1lIHwgaHRtbCAlXScpICsgJy1i
b3gnKS5maW5kKCd0aC5Tb3J0RGVzY2VuZGluZ0xhcmdlLCB0aC5Tb3J0QXNjZW5kaW5nTGFyZ2Un
KSwKICAgICAgICAgICAgU29ydEJ5ICAgICAgPSAkT3JkZXJCeU9iai5hdHRyKCdkYXRhLWNvbHVt
bicpIHx8ICcnLAogICAgICAgICAgICBPcmRlckJ5ICAgICA9ICcnOwoKICAgICAgICBpZiAoJE9y
ZGVyQnlPYmogJiYgJE9yZGVyQnlPYmouaGFzQ2xhc3MoJ1NvcnREZXNjZW5kaW5nTGFyZ2UnKSkg
ewogICAgICAgICAgICBPcmRlckJ5ID0gJ1VwJzsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAo
JE9yZGVyQnlPYmogJiYgJE9yZGVyQnlPYmouaGFzQ2xhc3MoJ1NvcnRBc2NlbmRpbmdMYXJnZScp
KSB7CiAgICAgICAgICAgIE9yZGVyQnkgPSAnRG93bic7CiAgICAgICAgfQoKICAgICAgICAkKCcj
RGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCdbJSBEYXRhLk5hbWUgfCBodG1s
ICVdJykgKyAnLWJveCcpLmFkZENsYXNzKCdMb2FkaW5nJyk7CiAgICAgICAgQ29yZS5BSkFYLkNv
bnRlbnRVcGRhdGUoJCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcignWyUg
RGF0YS5OYW1lIHwgaHRtbCAlXScpKSwgJ1slIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBF
bnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1FbGVtZW50O05hbWU9WyUgRGF0YS5OYW1lIHwgaHRt
bCAlXTtGaWx0ZXI9JyArIEZpbHRlciArICc7Q3VzdG9tZXJJRD1bJSBEYXRhLkN1c3RvbWVySUQg
fCBodG1sICVdO1NvcnRCeT0nICsgU29ydEJ5ICsgJztPcmRlckJ5PScgKyBPcmRlckJ5LCBmdW5j
dGlvbiAoKSB7CiAgICAgICAgICAgICQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2Vs
ZWN0b3IoJ1slIERhdGEuTmFtZSB8IGh0bWwgJV0nKSArICctYm94JykucmVtb3ZlQ2xhc3MoJ0xv
YWRpbmcnKTsKICAgICAgICB9KTsKICAgICAgICBjbGVhclRpbWVvdXQoQ29yZS5Db25maWcuR2V0
KCdUaW1lcl9bJSBEYXRhLk5hbWVIVE1MIHwgaHRtbCAlXScpKTsKICAgIH0sIENvcmUuQ29uZmln
LkdldCgnUmVmcmVzaFNlY29uZHNfWyUgRGF0YS5OYW1lSFRNTCB8IGh0bWwgJV0nKSAqIDEwMDAp
KTsKfQovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRM
YXJnZVRpY2tldEdlbmVyaWNSZWZyZXNoIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRl
bnRMYXJnZVRpY2tldEdlbmVyaWNSZW1vdmVGaWx0ZXJzIikgJV0KWyUgV1JBUFBFUiBKU09uRG9j
dW1lbnRDb21wbGV0ZSAlXQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFU
QVsKaWYgKCEkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCdbJSBEYXRh
Lk5hbWUgfCBodG1sICVdJykgKyAnLWJveCcpLmZpbmQoJy5BY3Rpb25NZW51JykuZmluZCgnLlJl
bW92ZUZpbHRlcnMnKS5sZW5ndGgpIHsKICAgICQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNj
YXBlU2VsZWN0b3IoJ1slIERhdGEuTmFtZSB8IGh0bWwgJV0nKSArICctYm94JykKICAgICAgICAu
ZmluZCgnLkFjdGlvbk1lbnUnKQogICAgICAgIC5wcmVwZW5kKCc8ZGl2IGNsYXNzPSJXaWRnZXRB
Y3Rpb24gUmVtb3ZlRmlsdGVycyI+PGEgaHJlZj0iIyIgaWQ9IkRhc2hib2FyZFslIERhdGEuTmFt
ZSB8IGh0bWwgJV0tcmVtb3ZlLWZpbHRlcnMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSBh
Y3RpdmUgZmlsdGVycyBmb3IgdGhpcyB3aWRnZXQuIikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEg
ZmEtdHJhc2gtbyI+PC9pPjwvYT48L2Rpdj4nKQogICAgICAgIC5maW5kKCcuUmVtb3ZlRmlsdGVy
cycpCiAgICAgICAgLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgLy8gZ2V0
IGFjdGl2ZSBmaWx0ZXIKICAgICAgICAgICAgdmFyIEZpbHRlciA9ICQoJyNEYXNoYm9hcmQnICsg
Q29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoJ1slIERhdGEuTmFtZSB8IGh0bWwgJV0nKSArICctYm94
JykuZmluZCgnLlRhYi5BY3Rpb25zIGxpLlNlbGVjdGVkIGEnKS5hdHRyKCdkYXRhLWZpbHRlcicp
OwogICAgICAgICAgICAkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCdb
JSBEYXRhLk5hbWUgfCBodG1sICVdJykgKyAnLWJveCcpLmFkZENsYXNzKCdMb2FkaW5nJyk7CiAg
ICAgICAgICAgIENvcmUuQUpBWC5Db250ZW50VXBkYXRlKCQoJyNEYXNoYm9hcmQnICsgQ29yZS5B
cHAuRXNjYXBlU2VsZWN0b3IoJ1slIERhdGEuTmFtZSB8IGh0bWwgJV0nKSksICdbJSBFbnYoIkJh
c2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249RWxlbWVudDtO
YW1lPVslIERhdGEuTmFtZSB8IGh0bWwgJV07RmlsdGVyPScgKyBGaWx0ZXIgKyAnO0N1c3RvbWVy
SUQ9WyUgRGF0YS5DdXN0b21lcklEIHwgaHRtbCAlXTtSZW1vdmVGaWx0ZXJzPTEnLCBmdW5jdGlv
biAoKSB7CiAgICAgICAgICAgICAgICAkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNl
bGVjdG9yKCdbJSBEYXRhLk5hbWUgfCBodG1sICVdJykgKyAnLWJveCcpLnJlbW92ZUNsYXNzKCdM
b2FkaW5nJyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgfSk7Cn0KLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdClslIFJlbmRlckJsb2NrRW5kKCJDb250
ZW50TGFyZ2VUaWNrZXRHZW5lcmljUmVtb3ZlRmlsdGVycyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0
YXJ0KCJDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljUmVtb3ZlRmlsdGVyc1JlbW92ZSIpICVdClsl
IFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPi8vPCFbQ0RBVEFbCiQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0
b3IoJ1slIERhdGEuTmFtZSB8IGh0bWwgJV0nKSArICctYm94JykuZmluZCgnLlJlbW92ZUZpbHRl
cnMnKS5yZW1vdmUoKTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdClslIFJlbmRlckJsb2NrRW5k
KCJDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljUmVtb3ZlRmlsdGVyc1JlbW92ZSIpICVdCgpbJSBX
UkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4vLzwhW0NEQVRBWwogICAgJCgnLk1hc3RlckFjdGlvbicpLmJpbmQoJ2NsaWNrJywgZnVu
Y3Rpb24gKEV2ZW50KSB7CiAgICAgICAgdmFyICRNYXN0ZXJBY3Rpb25MaW5rID0gJCh0aGlzKS5m
aW5kKCcuTWFzdGVyQWN0aW9uTGluaycpOwogICAgICAgIC8vIHByZXZlbnQgTWFzdGVyQWN0aW9u
IG9uIER5bmFtaWMgRmllbGRzIGxpbmtzCiAgICAgICAgaWYgKCQoRXZlbnQudGFyZ2V0KS5oYXND
bGFzcygnRHluYW1pY0ZpZWxkTGluaycpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgIH0KICAgICAgICAvLyBvbmx5IGFjdCBpZiB0aGUgbGluayB3YXMgbm90IGNsaWNrZWQgZGly
ZWN0bHkKICAgICAgICBpZiAoRXZlbnQudGFyZ2V0ICE9PSAkTWFzdGVyQWN0aW9uTGluay5nZXQo
MCkpIHsKICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gJE1hc3RlckFjdGlvbkxpbmsuYXR0
cignaHJlZicpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfSk7Cgog
ICAgJCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcignWyUgRGF0YS5OYW1l
IHwgaHRtbCAlXScpICsgJy1ib3gnKS5maW5kKCcuVGFiLkFjdGlvbnMgbGkgYScpLnVuYmluZCgn
Y2xpY2snKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBGaWx0ZXIgPSAk
KHRoaXMpLmF0dHIoJ2RhdGEtZmlsdGVyJyksCiAgICAgICAgQ3VzdG9tZXJJRDsKCiAgICAgICAg
Q3VzdG9tZXJJRCA9ICQoJ2lucHV0W25hbWU9Q3VzdG9tZXJJRF0nKS52YWwoKSB8fCAnJzsKCiAg
ICAgICAgJCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcignWyUgRGF0YS5O
YW1lIHwgaHRtbCAlXScpICsgJy1ib3gnKS5hZGRDbGFzcygnTG9hZGluZycpOwogICAgICAgIENv
cmUuQUpBWC5Db250ZW50VXBkYXRlKCQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2Vs
ZWN0b3IoJ1slIERhdGEuTmFtZSB8IGh0bWwgJV0nKSksICdbJSBFbnYoIkJhc2VsaW5rIikgJV1B
Y3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249RWxlbWVudDtOYW1lPVslIERhdGEu
TmFtZSB8IGh0bWwgJV07RmlsdGVyPScgKyBGaWx0ZXIgKyAnO0N1c3RvbWVySUQ9JyArIGVuY29k
ZVVSSUNvbXBvbmVudChDdXN0b21lcklEKSwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAkKCcj
RGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCdbJSBEYXRhLk5hbWUgfCBodG1s
ICVdJykgKyAnLWJveCcpLnJlbW92ZUNsYXNzKCdMb2FkaW5nJyk7CiAgICAgICAgfSk7CiAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgfSk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVORCAlXQojIC0tLQoj
IFBTCiMgLS0tCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlslIENvbmZpZygi
RnJvbnRlbmQ6OkphdmFTY3JpcHRQYXRoIikgJV1QZXJsU2VydmljZXMuVGlja2V0T3ZlcnZpZXcu
anMiPjwvc2NyaXB0PgpbJSBXUkFQUEVSIEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwogICAgUGVybFNlcnZpY2VzLlRpY2tl
dE92ZXJ2aWV3LkNvbG9yaXplUm93cygpOwogICAgQ29yZS5BcHAuU3Vic2NyaWJlKCdFdmVudC5B
SkFYLkNvbnRlbnRVcGRhdGUuQ2FsbGJhY2snLCBmdW5jdGlvbigpIHsKICAgICAgICBQZXJsU2Vy
dmljZXMuVGlja2V0T3ZlcnZpZXcuQ29sb3JpemVSb3dzKDEpOwogICAgfSk7Ci8vXV0+PC9zY3Jp
cHQ+ClslIEVORCAlXQojIC0tLQoK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8K
IyBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNiBQZXJsLVNlcnZpY2VzLmRlIGh0dHA6Ly9wZXJsLXNl
cnZpY2VzLmRlLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8g
V0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZv
ciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRo
aXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQpb
JSBSZW5kZXJCbG9ja1N0YXJ0KCJEb2N1bWVudEFjdGlvblJvdyIpICVdCjx1bCBjbGFzcz0iQWN0
aW9ucyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkRvY3VtZW50QWN0aW9uUm93QnVsayIpICVdCiAg
ICA8bGkgaWQ9IkJ1bGtBY3Rpb24iIGNsYXNzPSJBbHdheXNQcmVzZW50IEluYWN0aXZlIFslIERh
dGEuQ1NTIHwgaHRtbCAlXSI+PGEgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBo
dG1sICVdPC9hPjwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJEb2N1bWVudEFjdGlvblJvd0J1bGsi
KSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRBY3Rpb25Sb3dMYXN0Q29sdW1uRmls
dGVyIikgJV0KICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1B
Y3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtEZWxldGVGaWx0ZXJzPURlbGV0ZUZpbHRlcnMiPlsl
IFRyYW5zbGF0ZSgiUmVzZXQgb3ZlcnZpZXciKSB8IGh0bWwgJV08L2E+PC9saT4KWyUgUmVuZGVy
QmxvY2tFbmQoIkRvY3VtZW50QWN0aW9uUm93TGFzdENvbHVtbkZpbHRlciIpICVdCgpbJSBSZW5k
ZXJCbG9ja1N0YXJ0KCJEb2N1bWVudEFjdGlvblJvd0l0ZW0iKSAlXQogICAgPGxpIGNsYXNzPSJb
JSBEYXRhLkNTUyB8IGh0bWwgJV0iPjxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUp
IHwgaHRtbCAlXTwvYT48L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRBY3Rpb25Sb3dJ
dGVtIikgJV0KPC91bD4KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50QWN0aW9uUm93IikgJV0K
ClslIFJlbmRlckJsb2NrU3RhcnQoIkRvY3VtZW50Q29udGVudCIpICVdClslIFdSQVBQRVIgSlNP
bkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFb
Q0RBVEFbCiAgICBDb3JlLlVJLkFjdGlvblJvdy5Jbml0KCk7CgogICAgJCgnYS5Bc1BvcHVwJyku
YmluZCgnY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICBDb3JlLlVJLlBvcHVwLk9w
ZW5Qb3B1cCgkKHRoaXMpLmF0dHIoJ2hyZWYnKSwgJ0FjdGlvbicpOwogICAgICAgIHJldHVybiBm
YWxzZTsKICAgIH0pOwoKICAgICQoJy5Db2x1bW5GaWx0ZXInKS5iaW5kKCdjaGFuZ2UnLCBmdW5j
dGlvbiAoRXZlbnQpIHsKICAgICAgICB2YXIgVVJMLCBDb2x1bW5GaWx0ZXIsIE5ld0NvbHVtbkZp
bHRlclN0cmcsIE15UmVnRXgsIFNlc3Npb25JbmZvcm1hdGlvbjsKCiAgICAgICAgLy8gZGVmaW5l
IHZhcmlhYmxlcwogICAgICAgIFVSTCA9IENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSArICdB
Y3Rpb249JyArICdbJSBFbnYoIkFjdGlvbiIpICVdJyArICc7WyUgRGF0YS5MaW5rUGFnZSAlXSc7
CiAgICAgICAgU2Vzc2lvbkluZm9ybWF0aW9uID0gQ29yZS5BcHAuR2V0U2Vzc2lvbkluZm9ybWF0
aW9uKCk7CiAgICAgICAgJC5lYWNoKFNlc3Npb25JbmZvcm1hdGlvbiwgZnVuY3Rpb24gKEtleSwg
VmFsdWUpIHsKICAgICAgICAgICAgVVJMICs9IGVuY29kZVVSSUNvbXBvbmVudChLZXkpICsgJz0n
ICsgZW5jb2RlVVJJQ29tcG9uZW50KFZhbHVlKSArICc7JzsKICAgICAgICB9KTsKICAgICAgICBD
b2x1bW5GaWx0ZXIgPSAkKHRoaXMpWzBdLm5hbWU7CiAgICAgICAgTmV3Q29sdW1uRmlsdGVyU3Ry
ZyA9ICQodGhpcylbMF0ubmFtZSArICc9JyArICQodGhpcykudmFsKCkgKyAnOyc7CiAgICAgICAg
TXlSZWdFeCA9IG5ldyAgUmVnRXhwKENvbHVtbkZpbHRlcisiPVteO10qOyIpOwoKICAgICAgICAv
LyBjaGVjayBmb3IgYWxyZWFkeSBzZXQgcGFyYW1ldGVyIGFuZCByZXBsYWNlCiAgICAgICAgaWYg
KFVSTC5tYXRjaChNeVJlZ0V4KSkgewogICAgICAgICAgICBVUkwgPSBVUkwucmVwbGFjZShNeVJl
Z0V4LCBOZXdDb2x1bW5GaWx0ZXJTdHJnKTsKICAgICAgICB9CgogICAgICAgIC8vIG90aGVyd2lz
ZSBhZGQgdGhlIG5ldyBjb2x1bW4gZmlsdGVyCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIFVS
TCA9IFVSTCArIE5ld0NvbHVtbkZpbHRlclN0cmc7CiAgICAgICAgfQoKICAgICAgICAvLyByZWRp
cmVjdAogICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gIFVSTDsKICAgIH0pOwovL11dPjwv
c2NyaXB0PgpbJSBFTkQgJV0KCjxkaXYgaWQ9Ik92ZXJ2aWV3Qm9keSIgY2xhc3M9Ik92ZXJ2aWV3
IFRpY2tldExpc3QiPgojIC0tLQojIFBTCiMgLS0tCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IlslIENvbmZpZygiRnJvbnRlbmQ6OkphdmFTY3JpcHRQYXRoIikgJV1QZXJsU2Vy
dmljZXMuVGlja2V0T3ZlcnZpZXcuanMiPjwvc2NyaXB0PgojIC0tLQpbJSBSZW5kZXJCbG9ja1N0
YXJ0KCJOb1RpY2tldEZvdW5kIikgJV0KICAgIDxkaXYgaWQ9IkVtcHR5TWVzc2FnZVNtYWxsIj4K
ICAgICAgICBbJSBUcmFuc2xhdGUoIk5vIHRpY2tldCBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQog
ICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOb1RpY2tldEZvdW5kIikgJV0KICAgIDxmb3Jt
IGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJt
dWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJtYXRyaXgiPgogICAgICAgIDxpbnB1dCB0eXBlPSJo
aWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFnZW50VGlja2V0QnVsayIvPgogICAgICAgIDxp
bnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlRpY2tldElEIiB2YWx1ZT0iIi8+CiAgICAgICAgPGlu
cHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTGFzdENvbHVtbkZpbHRlciIgaWQ9Ikxhc3RDb2x1bW5G
aWx0ZXIiIHZhbHVlPSJbJSBEYXRhLkxhc3RDb2x1bW5GaWx0ZXIgfCBodG1sICVdIi8+ClslIFJl
bmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3VGFibGUiKSAlXQogICAgICAgIDx0YWJsZSBjbGFzcz0i
VGFibGVTbWFsbCBOb0NlbGxzcGFjaW5nIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiVGFibGVIZWFk
ZXIiKSAlXQogICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICA8dHI+CgpbJSBSZW5k
ZXJCbG9ja1N0YXJ0KCJHZW5lcmFsT3ZlcnZpZXdIZWFkZXIiKSAlXQoKWyUgUmVuZGVyQmxvY2tT
dGFydCgiQnVsa05hdkJhciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDaGVj
a2JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xh
c3M9IkNoZWNrYm94IiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWxlY3QgYWxsIikgfCBodG1sICVd
IiBpZD0iU2VsZWN0QWxsVGlja2V0cyIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+CiAgICAgICAgICAg
ICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIkJ1bGtOYXZCYXIiKSAlXQpbJSBSZW5k
ZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VGbGFnIikgJV0KICAgICAgICAgICAgICAg
ICAgICA8dGggY2xhc3M9Ik92ZXJ2aWV3SGVhZGVyIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+Clsl
IFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWdMaW5rIikgJV0KICAgICAg
ICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYo
IkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0
ICVdO1NvcnRCeT1bJSBEYXRhLk5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkg
fCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0iUHJpbnRPbmx5Ij5bJSBUcmFuc2xh
dGUoRGF0YS5UaXRsZSkgJV08L2VtPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+ClslIFJl
bmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VGbGFnTGluayIpICVdClslIFJlbmRlckJs
b2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWdFbXB0eSIpICVdCiAgICAgICAgICAgICAg
ICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0i
PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRy
YW5zbGF0ZShEYXRhLk5hbWUpICVdPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFu
PgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZ0VtcHR5IikgJV0KICAg
ICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQ
YWdlRmxhZyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VUaWNr
ZXRIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VUaWNr
ZXROdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iT3ZlcnZpZXdIZWFk
ZXIgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFt
ZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUg
RW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1UaWNrZXROdW1iZXI7
T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0
YS5UaXRsZSkgfCBodG1sICVdIj5bJSBDb25maWcoIlRpY2tldDo6SG9vayIpICVdPC9hPgogICAg
ICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBh
Z2VUaWNrZXROdW1iZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBh
Z2VDb2x1bW4iKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iT3ZlcnZpZXdIZWFk
ZXIgWyUgRGF0YS5IZWFkZXJDb2x1bW5OYW1lIHwgaHRtbCAlXSBbJSBEYXRhLkNTUyB8IGh0bWwg
JV0iPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVy
IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNl
dHRpbmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVdIj4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1maWx0ZXIiPjwvaT4KICAg
ICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJDb2x1bW5TZXR0aW5nc0NvbnRhaW5lciBEb250UHJpbnQiPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NCb3giPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQoKWyUgUmVuZGVy
QmxvY2tTdGFydCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxp
bmtDdXN0b21lclVzZXJTZWFyY2giKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iQ3VzdG9tZXJVc2VyQXV0b0NvbXBsZXRlIiBhdXRv
Y29tcGxldGU9Im9mZiIgLz4KWyUgV1JBUFBFUiBKU09uRG9jdW1lbnRDb21wbGV0ZSAlXQo8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsKQ29yZS5Db25maWcuU2V0KCdD
dXN0b21lclVzZXJBdXRvY29tcGxldGUuUXVlcnlEZWxheScsICJbJSBEYXRhLnF1ZXJ5RGVsYXkg
fCBodG1sICVdIik7CkNvcmUuQ29uZmlnLlNldCgnQ3VzdG9tZXJVc2VyQXV0b2NvbXBsZXRlLk1h
eFJlc3VsdHNEaXNwbGF5ZWQnLCAiWyUgRGF0YS5tYXhSZXN1bHRzRGlzcGxheWVkIHwgaHRtbCAl
XSIpOwpDb3JlLkNvbmZpZy5TZXQoJ0N1c3RvbWVyVXNlckF1dG9jb21wbGV0ZS5NaW5RdWVyeUxl
bmd0aCcsICJbJSBEYXRhLm1pblF1ZXJ5TGVuZ3RoIHwgaHRtbCAlXSIpOwpDb3JlLkFnZW50LlRh
YmxlRmlsdGVycy5Jbml0Q3VzdG9tZXJVc2VyQXV0b2NvbXBsZXRlKCAkKCIuQ3VzdG9tZXJVc2Vy
QXV0b0NvbXBsZXRlIikgKTsKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdClslIFJlbmRlckJsb2Nr
RW5kKCJDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGlua0N1c3Rv
bWVyVXNlclNlYXJjaCIpICVdCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAg
ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bh
biBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLkNv
bHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92
ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJP
dmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5rIikgJV0KICAgICAgICAgICAgICAgICAg
ICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNldHRpbmdzVHJpZ2dlciIgdGl0bGU9Ilsl
IERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxpIGNsYXNzPSJmYSBmYS1maWx0ZXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9h
PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0NvbnRh
aW5lciBEb250UHJpbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
Q29sdW1uU2V0dGluZ3NCb3giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERh
dGEuQ29sdW1uRmlsdGVyU3RyZyAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdl
VGlja2V0R2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtDdXN0b21lcklEU2VhcmNoIikgJV0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9
IkN1c3RvbWVySURBdXRvQ29tcGxldGUiIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgpbJSBXUkFQUEVS
IEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4v
LzwhW0NEQVRBWwpDb3JlLkNvbmZpZy5TZXQoJ0N1c3RvbWVySURBdXRvY29tcGxldGUuUXVlcnlE
ZWxheScsICJbJSBEYXRhLnF1ZXJ5RGVsYXkgfCBodG1sICVdIik7CkNvcmUuQ29uZmlnLlNldCgn
Q3VzdG9tZXJJREF1dG9jb21wbGV0ZS5NYXhSZXN1bHRzRGlzcGxheWVkJywgIlslIERhdGEubWF4
UmVzdWx0c0Rpc3BsYXllZCB8IGh0bWwgJV0iKTsKQ29yZS5Db25maWcuU2V0KCdDdXN0b21lcklE
QXV0b2NvbXBsZXRlLk1pblF1ZXJ5TGVuZ3RoJywgIlslIERhdGEubWluUXVlcnlMZW5ndGggfCBo
dG1sICVdIik7CkNvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLkluaXRDdXN0b21lcklEQXV0b2NvbXBs
ZXRlKCAkKCIuQ3VzdG9tZXJJREF1dG9Db21wbGV0ZSIpICk7Ci8vXV0+PC9zY3JpcHQ+ClslIEVO
RCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY0hlYWRlckNv
bHVtbkZpbHRlckxpbmtDdXN0b21lcklEU2VhcmNoIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQo
IkNvbnRlbnRMYXJnZVRpY2tldEdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rVXNlclNlYXJj
aCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQi
IGNsYXNzPSJVc2VyQXV0b0NvbXBsZXRlIiBhdXRvY29tcGxldGU9Im9mZiIgLz4KWyUgV1JBUFBF
UiBKU09uRG9jdW1lbnRDb21wbGV0ZSAlXQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
Ly88IVtDREFUQVsKQ29yZS5Db25maWcuU2V0KCdVc2VyQXV0b2NvbXBsZXRlLlF1ZXJ5RGVsYXkn
LCAiWyUgRGF0YS5xdWVyeURlbGF5IHwgaHRtbCAlXSIpOwpDb3JlLkNvbmZpZy5TZXQoJ1VzZXJB
dXRvY29tcGxldGUuTWF4UmVzdWx0c0Rpc3BsYXllZCcsICJbJSBEYXRhLm1heFJlc3VsdHNEaXNw
bGF5ZWQgfCBodG1sICVdIik7CkNvcmUuQ29uZmlnLlNldCgnVXNlckF1dG9jb21wbGV0ZS5NaW5R
dWVyeUxlbmd0aCcsICJbJSBEYXRhLm1pblF1ZXJ5TGVuZ3RoIHwgaHRtbCAlXSIpOwpDb3JlLkFn
ZW50LlRhYmxlRmlsdGVycy5Jbml0VXNlckF1dG9jb21wbGV0ZSggJCgiLlVzZXJBdXRvQ29tcGxl
dGUiKSApOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRl
bnRMYXJnZVRpY2tldEdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rVXNlclNlYXJjaCIpICVd
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJv
bCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07
WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9WyUgRGF0YS5Db2x1bW5OYW1lIHwgdXJpICVdO09y
ZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEu
VGl0bGUpIHwgaHRtbCAlXSI+WyUgRGF0YS5Db2x1bW5OYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08
L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5r
IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkxpbmsi
KSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhy
ZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERh
dGEuTGlua1NvcnQgJV07U29ydEJ5PVslIERhdGEuQ29sdW1uTmFtZSB8IHVyaSAlXTtPcmRlckJ5
PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxl
KSB8IGh0bWwgJV0iPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9hPgpb
JSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uTGluayIpICVdCgpbJSBS
ZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5FbXB0eSIpICVdCiAgICAg
ICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRs
ZSB8IGh0bWwgJV0iPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9zcGFu
PgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRW1wdHkiKSAlXQoK
ICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZC
YXJQYWdlQ29sdW1uIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZVRp
Y2tldEhlYWRlciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VE
eW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iT3ZlcnZpZXdI
ZWFkZXIgWyUgRGF0YS5IZWFkZXJDb2x1bW5OYW1lIHwgaHRtbCAlXSBEeW5hbWljRmllbGQgTGFz
dCBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05h
dkJhclBhZ2VEeW5hbWljRmllbGRTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAg
IDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0
aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9RHluYW1p
Y0ZpZWxkX1slIERhdGEuRHluYW1pY0ZpZWxkTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEu
T3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwg
JV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2Nr
RW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRTb3J0YWJsZSIpICVdClslIFJlbmRl
ckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlIikg
JV0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkdyYXkiIHRpdGxlPSJbJSBE
YXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwv
c3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZE5v
dFNvcnRhYmxlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5
bmFtaWNGaWVsZEZpbHRyYWJsZVNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAg
PGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNldHRpbmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEu
RmlsdGVyVGl0bGUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNs
YXNzPSJmYSBmYS1maWx0ZXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0NvbnRhaW5lciBE
b250UHJpbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1u
U2V0dGluZ3NCb3giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29s
dW1uRmlsdGVyU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAg
ICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1l
PSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBF
bnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUR5bmFtaWNGaWVsZF9b
JSBEYXRhLkR5bmFtaWNGaWVsZE5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkg
fCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBE
YXRhLkxhYmVsIHwgaHRtbCAlXTwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFy
UGFnZUR5bmFtaWNGaWVsZEZpbHRyYWJsZVNvcnRhYmxlIikgJV0KClslIFJlbmRlckJsb2NrU3Rh
cnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZEZpbHRyYWJsZU5vdFNvcnRhYmxlIikg
JV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNldHRp
bmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVdIj4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1maWx0ZXIiPjwvaT4KICAgICAg
ICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJDb2x1bW5TZXR0aW5nc0NvbnRhaW5lciBEb250UHJpbnQiPgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NCb3giPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAg
ICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0
bGUgfCBodG1sICVdIj5bJSBEYXRhLkxhYmVsIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxv
Y2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZEZpbHRyYWJsZU5vdFNvcnRhYmxl
IikgJV0KCiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2
aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCIpICVdCgpbJSBSZW5kZXJCbG9ja0VuZCgiR2VuZXJh
bE92ZXJ2aWV3SGVhZGVyIikgJV0KCiMgZXhhbXBsZSBvZiBob3cgdG8gdXNlIGZpeGVkIGR5bmFt
aWMgZmllbGQgYmxvY2tzIGZvciBjdXN0b21pemF0aW9ucwojIE5vdGU6IEZpZWxkMSBhbmQgRmll
bGQyIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGZpZWxkcyBhbmQgaGFkIHRvIGJlIHJlcGxhY2VkIHdp
dGggdGhlIGFjdHVhbAojIGZpZWxkIG5hbWVzCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmll
d05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQxIikgJV0KIyAgICAgICAgICAgICAgICAgICAg
PHRoIGNsYXNzPSJEeW5hbWljRmllbGQgTGFzdCBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgojWyUg
UmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMV9T
b3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0Nv
bnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIp
ICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUR5bmFtaWNGaWVsZF9bJSBEYXRhLkR5bmFt
aWNGaWVsZE5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlsl
IFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+CiNbJSBSZW5kZXJCbG9ja0VuZCgi
T3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMV9Tb3J0YWJsZSIpICVdCiNbJSBS
ZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQxX05v
dFNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5
IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVs
KSB8IGh0bWwgJV08L3NwYW4+CiNbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdl
RHluYW1pY0ZpZWxkX0ZpZWxkMV9Ob3RTb3J0YWJsZSIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0
KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQxX0ZpbHRyYWJsZVNvcnRhYmxl
IikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5T
ZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgoj
ICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgojICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQojICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wi
IGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1sl
IERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUR5bmFtaWNGaWVsZF9bJSBEYXRhLkR5bmFtaWNGaWVs
ZE5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJb
JSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBEYXRhLkxhYmVsIHwgaHRtbCAl
XTwvYT4KI1slIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRf
RmllbGQxX0ZpbHRyYWJsZVNvcnRhYmxlIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2
aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDFfRmlsdHJhYmxlTm90U29ydGFibGUiKSAl
XQojICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNldHRp
bmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVdIj4KIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZmlsdGVyIj48L2k+CiMgICAg
ICAgICAgICAgICAgICAgICAgICA8L2E+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJDb2x1bW5TZXR0aW5nc0NvbnRhaW5lciBEb250UHJpbnQiPgojICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdCiMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4KIyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUg
RGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuTGFiZWwgfCBodG1sICVdPC9zcGFuPgojWyUg
UmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDFfRmls
dHJhYmxlTm90U29ydGFibGUiKSAlXQojICAgICAgICAgICAgICAgICAgICA8L3RoPgojWyUgUmVu
ZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQoj
WyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxk
MiIpICVdCiMgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRHluYW1pY0ZpZWxkIExhc3Qg
WyUgRGF0YS5DU1MgfCBodG1sICVdIj4KI1slIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2
QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDJfU29ydGFibGUiKSAlXQojICAgICAgICAgICAgICAg
ICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5r
IikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRC
eT1EeW5hbWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyQnk9
WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1s
ICVdPC9hPgojWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVs
ZF9GaWVsZDJfU29ydGFibGUiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZC
YXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMl9Ob3RTb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAg
ICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1s
ICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9zcGFuPgojWyUgUmVuZGVy
QmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDJfTm90U29ydGFi
bGUiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0Zp
ZWxkX0ZpZWxkMl9GaWx0cmFibGVTb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgICAg
ICA8YSBocmVmPSIjIiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NUcmlnZ2VyIiB0aXRsZT0iWyUgRGF0
YS5GaWx0ZXJUaXRsZSB8IGh0bWwgJV0iPgojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxp
IGNsYXNzPSJmYSBmYS1maWx0ZXIiPjwvaT4KIyAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4K
IyAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQ29udGFp
bmVyIERvbnRQcmludCI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
Q29sdW1uU2V0dGluZ3NCb3giPgojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBE
YXRhLkNvbHVtbkZpbHRlclN0cmcgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4KIyAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICAg
ICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1B
Y3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1EeW5h
bWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0
YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRt
bCAlXSI+WyUgRGF0YS5MYWJlbCB8IGh0bWwgJV08L2E+CiNbJSBSZW5kZXJCbG9ja0VuZCgiT3Zl
cnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMl9GaWx0cmFibGVTb3J0YWJsZSIpICVd
CiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmll
bGQyX0ZpbHRyYWJsZU5vdFNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDxh
IGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZp
bHRlclRpdGxlIHwgaHRtbCAlXSI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xh
c3M9ImZhIGZhLWZpbHRlciI+PC9pPgojICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgojICAg
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIg
RG9udFByaW50Ij4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1
bW5TZXR0aW5nc0JveCI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEu
Q29sdW1uRmlsdGVyU3RyZyAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgoj
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgICA8
c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRh
LkxhYmVsIHwgaHRtbCAlXTwvc3Bhbj4KI1slIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJh
clBhZ2VEeW5hbWljRmllbGRfRmllbGQyX0ZpbHRyYWJsZU5vdFNvcnRhYmxlIikgJV0KI1slIFJl
bmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQyIikgJV0K
IyAgICAgICAgICAgICAgICAgICAgPC90aD4KClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxl
dGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiQoJy5PdmVy
dmlld0hlYWRlcicpLm9mZignY2xpY2snKS5vbignY2xpY2snLCAnLkNvbHVtblNldHRpbmdzVHJp
Z2dlcicsIGZ1bmN0aW9uKCkgewoKICAgIHZhciAkVHJpZ2dlck9iaiA9ICQodGhpcyksCiAgICAg
ICAgRmlsdGVyTmFtZTsKCiAgICBpZiAoJFRyaWdnZXJPYmouaGFzQ2xhc3MoJ0FjdGl2ZScpKSB7
CgogICAgICAgICRUcmlnZ2VyT2JqCiAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3ND
b250YWluZXInKQogICAgICAgICAgICAuZmluZCgnLkNvbHVtblNldHRpbmdzQm94JykKICAgICAg
ICAgICAgLmZhZGVPdXQoJ2Zhc3QnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICRUcmln
Z2VyT2JqLnJlbW92ZUNsYXNzKCdBY3RpdmUnKTsKICAgICAgICAgICAgfSk7CiAgICB9CiAgICBl
bHNlIHsKCiAgICAgICAgLy8gc2xpZGUgdXAgYWxsIG9wZW4gc2V0dGluZ3Mgd2lkZ2V0cwogICAg
ICAgICQoJy5Db2x1bW5TZXR0aW5nc1RyaWdnZXInKQogICAgICAgICAgICAubmV4dCgnLkNvbHVt
blNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgLmZpbmQoJy5Db2x1bW5TZXR0aW5nc0Jv
eCcpCiAgICAgICAgICAgIC5mYWRlT3V0KCdmYXN0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAg
ICAgICAkKHRoaXMpLnBhcmVudCgpLnByZXYoJy5Db2x1bW5TZXR0aW5nc1RyaWdnZXInKS5yZW1v
dmVDbGFzcygnQWN0aXZlJyk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAvLyBzaG93IFRISVMg
c2V0dGluZ3Mgd2lkZ2V0CiAgICAgICAgJFRyaWdnZXJPYmoKICAgICAgICAgICAgLm5leHQoJy5D
b2x1bW5TZXR0aW5nc0NvbnRhaW5lcicpCiAgICAgICAgICAgIC5maW5kKCcuQ29sdW1uU2V0dGlu
Z3NCb3gnKQogICAgICAgICAgICAuZmFkZUluKCdmYXN0JywgZnVuY3Rpb24oKSB7CgogICAgICAg
ICAgICAgICAgJFRyaWdnZXJPYmouYWRkQ2xhc3MoJ0FjdGl2ZScpOwoKICAgICAgICAgICAgICAg
IC8vIHJlZnJlc2ggZmlsdGVyIGRyb3Bkb3duCiAgICAgICAgICAgICAgICBGaWx0ZXJOYW1lID0g
JFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29u
dGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnc2VsZWN0JykKICAgICAgICAgICAg
ICAgICAgICAuYXR0cignbmFtZScpOwoKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAg
ICAgICAgICAgICAgJFRyaWdnZXJPYmouY2xvc2VzdCgndGgnKS5oYXNDbGFzcygnQ3VzdG9tZXJJ
RCcpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLmNsb3Nlc3QoJ3RoJyku
aGFzQ2xhc3MoJ0N1c3RvbWVyVXNlcklEJykgfHwKICAgICAgICAgICAgICAgICAgICAgICAgJFRy
aWdnZXJPYmouY2xvc2VzdCgndGgnKS5oYXNDbGFzcygnUmVzcG9uc2libGUnKSB8fAogICAgICAg
ICAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5jbG9zZXN0KCd0aCcpLmhhc0NsYXNzKCdPd25l
cicpCiAgICAgICAgICAgICAgICAgICAgKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICghJFRy
aWdnZXJPYmoucGFyZW50KCkuZmluZCgnLlNlbGVjdGVkVmFsdWUnKS5sZW5ndGgpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgQ29yZS5BSkFYLkZvcm1VcGRhdGUoJCgnI05vdGhpbmcnKSwgJ0FK
QVhGaWx0ZXJVcGRhdGUnLCBGaWx0ZXJOYW1lLCBbIEZpbHRlck5hbWUgXSwgZnVuY3Rpb24oKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQXV0b0NvbXBsZXRlVmFsdWUgPSAkVHJp
Z2dlck9iagogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVt
blNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWwo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRvQ29tcGxldGVUZXh0ICA9ICRU
cmlnZ2VyT2JqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29s
dW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAuZmluZCgnc2VsZWN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZp
bmQoJ29wdGlvbjpzZWxlY3RlZCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC50ZXh0KCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEF1dG9Db21wbGV0ZVZh
bHVlICE9PSAnRGVsZXRlRmlsdGVyJykgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAkVHJpZ2dlck9iagogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmV4dCgn
LkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC5hZnRlcignPHNwYW4gY2xhc3M9IlNlbGVjdGVkVmFsdWUgSGlkZGVuIj48YSBocmVmPSIjIj54
PC9hPicgKyBBdXRvQ29tcGxldGVUZXh0ICsgJyAoJyArIEF1dG9Db21wbGV0ZVZhbHVlICsgJyk8
L3NwYW4+JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBhcmVudCgpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCcuU2VsZWN0ZWRWYWx1ZScp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdhJykKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLm9mZigpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC5vbignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnc2VsZWN0JykK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsKCdEZWxldGVG
aWx0ZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50cmln
Z2VyKCdjaGFuZ2UnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICBDb3JlLkFKQVguRm9ybVVwZGF0ZSgkKCcjQ29sdW1uRmls
dGVyQXR0cmlidXRlcycpLCAnQUpBWEZpbHRlclVwZGF0ZScsIEZpbHRlck5hbWUsIFsgRmlsdGVy
TmFtZSBdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0KCiAgICByZXR1cm4g
ZmFsc2U7Cn0pOwoKLy9dXT48L3NjcmlwdD4KWyUgRU5EICVdCiAgICAgICAgICAgICAgICA8L3Ry
PgogICAgICAgICAgICA8L3RoZWFkPgpbJSBSZW5kZXJCbG9ja0VuZCgiVGFibGVIZWFkZXIiKSAl
XQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUYWJsZUJvZHkiKSAlXQogICAgICAgICAgICA8dGJvZHk+
ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZCIpICVdCiMgLS0tCiMgUFMKIyAtLS0KIyAgICAg
ICAgICAgICAgICA8dHIgaWQ9IlRpY2tldElEX1slIERhdGEuVGlja2V0SUQgfCBodG1sICVdIiBj
bGFzcz0iTWFzdGVyQWN0aW9uIj4KICAgICAgICAgICAgICAgIDx0ciBpZD0iVGlja2V0SURfWyUg
RGF0YS5UaWNrZXRJRCB8IGh0bWwgJV0iIGNsYXNzPSJNYXN0ZXJBY3Rpb24gWyUgRGF0YS5Ib29r
ZWRNYWluIHwgaHRtbCAlXSBbJSBEYXRhLkhvb2tlZCB8IGh0bWwgJV0gWyUgRGF0YS5Ib29rZWRD
b2x1bW4gfCBodG1sICVdIj4KIyAtLS0KClslIFJlbmRlckJsb2NrU3RhcnQoIkdlbmVyYWxPdmVy
dmlld1JvdyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJCdWxrIikgJV0KICAgICAgICAgICAg
ICAgICAgICA8dGQgY2xhc3M9IkNoZWNrYm94IE5vblRleHRDb250ZW50Ij4KICAgICAgICAgICAg
ICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJDaGVja2JveCIgdHlwZT0iY2hlY2tib3giIG5hbWU9
IlRpY2tldElEIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWxlY3QgdGhpcyB0aWNrZXQiKSB8IGh0
bWwgJV0iIHZhbHVlPSJbJSBEYXRhLlRpY2tldElEIHwgaHRtbCAlXSIgIGF1dG9jb21wbGV0ZT0i
b2ZmIiAvPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJCdWxr
IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY1Jvd01l
dGEiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iWyUgRGF0YS5DbGFzc1RhYmxl
IHwgaHRtbCAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPgpb
JSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljUm93TWV0YUltYWdl
IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iWyUgRGF0YS5DbGFzcyB8
IGh0bWwgJV0gU21hbGwiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVd
Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkNsYXNz
U3BhbiB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNz
PSJmYSBmYS1zdGFyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xh
c3M9ImZhIGZhLXN0YXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+
WyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXTwvZW0+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5k
ZXJCbG9ja0VuZCgiQ29udGVudExhcmdlVGlja2V0R2VuZXJpY1Jvd01ldGFJbWFnZSIpICVdCiAg
ICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZVRp
Y2tldEdlbmVyaWNSb3dNZXRhIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZFRpY2tl
dERhdGEiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRUaWNrZXROdW1iZXIiKSAlXQog
ICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0i
WyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50VGlja2V0Wm9vbTtUaWNrZXRJRD1bJSBE
YXRhLlRpY2tldElEIHwgdXJpICVdIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iIGNs
YXNzPSJNYXN0ZXJBY3Rpb25MaW5rIj5bJSBEYXRhLlRpY2tldE51bWJlciAlXTwvYT4KICAgICAg
ICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkVGlja2V0TnVtYmVy
IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRXNjYWxhdGlvblRpbWUiKSAlXQogICAg
ICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0i
WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIFRpbWUiKSB8IGh0bWwgJV06IFslIERhdGEuRXNjYWxhdGlv
blRpbWVXb3JraW5nVGltZSB8IGh0bWwgJV0gLSBbJSBEYXRhLkVzY2FsYXRpb25EZXN0aW5hdGlv
bkRhdGUgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV0iIGNsYXNzPSJbJSBEYXRhLkVzY2FsYXRp
b25DbGFzcyB8IGh0bWwgJV0iPlslIERhdGEuRXNjYWxhdGlvblRpbWVIdW1hbiB8IGh0bWwgJV08
YnIvPlslIERhdGEuVXBkYXRlVGltZURlc3RpbmF0aW9uRGF0ZSB8IExvY2FsaXplKCJUaW1lU2hv
cnQiKSAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5k
KCJSZWNvcmRFc2NhbGF0aW9uVGltZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE93
bmVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgdGl0bGU9IlslIERhdGEuVXNlckZpcnN0bmFtZSB8IGh0bWwgJV0gWyUgRGF0YS5Vc2Vy
TGFzdG5hbWUgfCBodG1sICVdIChbJSBEYXRhLk93bmVyIHwgaHRtbCAlXSkiPlslIERhdGEuVXNl
ckZpcnN0bmFtZSBfICIgIiBfIERhdGEuVXNlckxhc3RuYW1lIHwgdHJ1bmNhdGUoMzApIHwgaHRt
bCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJS
ZWNvcmRPd25lciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZEN1c3RvbWVySUQiKSAl
XQogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJl
Zj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50VGlja2V0Q3VzdG9tZXI7VGlja2V0
SUQ9WyUgRGF0YS5UaWNrZXRJRCB8IHVyaSAlXSIgY2xhc3M9IkFzUG9wdXAiPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIERhdGEuQ3VzdG9tZXJJRCB8IGh0bWwg
JV0iPlslIERhdGEuQ3VzdG9tZXJJRCB8IHRydW5jYXRlKDE1KSB8IGh0bWwgJV08L3NwYW4+CiAg
ICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBS
ZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3VzdG9tZXJJRCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQo
IlJlY29yZExhc3RDdXN0b21lclN1YmplY3QiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4K
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5Gcm9tIHwgaHRtbCAl
XSI+WyUgRGF0YS5Gcm9tUmVhbG5hbWUgfCB0cnVuY2F0ZSgzMCkgfCBodG1sICVdPC9kaXY+CiAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuU3ViamVjdExvbmcgfCBo
dG1sICVdIj5bJSBEYXRhLlN1YmplY3QgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAg
ICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZExhc3RDdXN0b21lclN1YmplY3QiKSAl
XQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRUaWNrZXRUaXRsZSIpICVdCiAgICAgICAgICAg
ICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRh
LkZyb20gfCBodG1sICVdIj5bJSBEYXRhLkZyb21SZWFsbmFtZSB8IHRydW5jYXRlKDMwKSB8IGh0
bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5U
aXRsZSB8IGh0bWwgJV0iPlslIERhdGEuVGl0bGUgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAg
ICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZFRpY2tldFRpdGxlIikgJV0K
WyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkVGlja2V0Q29sdW1uIikgJV0KICAgICAgICAgICAg
ICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEu
R2VuZXJpY1ZhbHVlIHwgaHRtbCAlXSI+WyUgRGF0YS5HZW5lcmljVmFsdWUgfCB0cnVuY2F0ZSgz
MCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxv
Y2tFbmQoIlJlY29yZFRpY2tldENvbHVtbiIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29y
ZFRpY2tldENvbHVtblRyYW5zbGF0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgog
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5HZW5l
cmljVmFsdWUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuR2VuZXJpY1ZhbHVlKSB8IGh0
bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgi
UmVjb3JkVGlja2V0Q29sdW1uVHJhbnNsYXRhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgi
UmVjb3JkVGlja2V0Q29sdW1uVGltZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IExv
Y2FsaXplKCJUaW1lU2hvcnQiKSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgTG9j
YWxpemUoIlRpbWVTaG9ydCIpICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUg
UmVuZGVyQmxvY2tFbmQoIlJlY29yZFRpY2tldENvbHVtblRpbWUiKSAlXQpbJSBSZW5kZXJCbG9j
a1N0YXJ0KCJSZWNvcmRUaWNrZXRDb2x1bW5Fc2NhbGF0aW9uIikgJV0KICAgICAgICAgICAgICAg
ICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuR2Vu
ZXJpY1ZhbHVlIHwgaHRtbCAlXSIgY2xhc3M9IlslIERhdGEuQ2xhc3MgfCBodG1sICVdIj5bJSBE
YXRhLkdlbmVyaWNWYWx1ZSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3Rk
PgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkVGlja2V0Q29sdW1uRXNjYWxhdGlvbiIpICVdClsl
IFJlbmRlckJsb2NrRW5kKCJSZWNvcmRUaWNrZXREYXRhIikgJV0KClslIFJlbmRlckJsb2NrU3Rh
cnQoIlJlY29yZER5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+
ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZExpbmsiKSAlXQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRGF0YS5MaW5rIHwgSW50ZXJwb2xhdGUg
JV0iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iRHluYW1pY0ZpZWxkTGluayI+WyUgRGF0YS5WYWx1
ZSAlXTwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZExpbmsiKSAlXQpb
JSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRQbGFpbiIpICVdCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbHVlICVdClslIFJlbmRlckJsb2NrRW5kKCJS
ZWNvcmREeW5hbWljRmllbGRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5h
bWljRmllbGQiKSAlXQoKWyUgUmVuZGVyQmxvY2tFbmQoIkdlbmVyYWxPdmVydmlld1JvdyIpICVd
CgojIGV4YW1wbGUgb2YgaG93IHRvIHVzZSBmaXhlZCBkeW5hbWljIGZpZWxkIGJsb2NrcyBmb3Ig
Y3VzdG9taXphdGlvbnMKIyBOb3RlOiBGaWVsZDEgYW5kIEZpZWxkMiBhcmUgdGhlIG5hbWVzIG9m
IHRoZSBmaWVsZHMgYW5kIGhhZCB0byBiZSByZXBsYWNlZCB3aXRoIHRoZSBhY3R1YWwKIyBmaWVs
ZCBuYW1lcwojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMSIp
ICVdCiMgICAgICAgICAgICAgICAgICAgIDx0ZD4KIyAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj4KI1slIFJlbmRlckJsb2NrU3RhcnQo
IlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDFfTGluayIpICVdCiMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGEgaHJlZj0iWyUgRGF0YS5MaW5rIHwgSW50ZXJwb2xhdGUgJV0iIHRhcmdldD0i
X2JsYW5rIiBjbGFzcz0iRHluYW1pY0ZpZWxkTGluayI+WyUgRGF0YS5WYWx1ZSAlXTwvYT4KI1sl
IFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQxX0xpbmsiKSAlXQojWyUg
UmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMV9QbGFpbiIpICVdCiMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5WYWx1ZSAlXQojWyUgUmVuZGVyQmxv
Y2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDFfUGxhaW4iKSAlXQojICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiNbJSBSZW5kZXJC
bG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMSIpICVdCiNbJSBSZW5kZXJCbG9ja1N0
YXJ0KCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQyIikgJV0KIyAgICAgICAgICAgICAgICAgICAg
PHRkPgojICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8
IGh0bWwgJV0iPgojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxk
Ml9MaW5rIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBEYXRh
LkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJEeW5hbWljRmll
bGRMaW5rIj5bJSBEYXRhLlZhbHVlICVdPC9hPgojWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5
bmFtaWNGaWVsZF9GaWVsZDJfTGluayIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRE
eW5hbWljRmllbGRfRmllbGQyX1BsYWluIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbJSBEYXRhLlZhbHVlICVdCiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxk
X0ZpZWxkMl9QbGFpbiIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAg
ICAgICAgICAgICAgICAgPC90ZD4KI1slIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmll
bGRfRmllbGQyIikgJV0KCiAgICAgICAgICAgICAgICA8L3RyPgoKWyUgUmVuZGVyQmxvY2tTdGFy
dCgiRG9jdW1lbnRSZWFkeUFjdGlvblJvd0FkZCIpICVdClslIEZPUkVBQ0ggTWVudUVsZW1lbnQg
SU4gRGF0YS5EYXRhICVdCiAgICBbJSBNZW51RWxlbWVudC5MaW5rID0gSW50ZXJwb2xhdGUoTWVu
dUVsZW1lbnQuTGluaykgJV0KWyUgRU5EICVdClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29tcGxl
dGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICBDb3Jl
LlVJLkFjdGlvblJvdy5BZGRBY3Rpb25zKCQoJyNUaWNrZXRJRF9bJSBEYXRhLlRpY2tldElEIHwg
aHRtbCAlXScpLCBbJSBKU09OKERhdGEuRGF0YSkgJV0pOwovL11dPjwvc2NyaXB0PgpbJSBFTkQg
JV0KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50UmVhZHlBY3Rpb25Sb3dBZGQiKSAlXQoKWyUg
UmVuZGVyQmxvY2tFbmQoIlJlY29yZCIpICVdCiAgICAgICAgICAgIDwvdGJvZHk+ClslIFJlbmRl
ckJsb2NrRW5kKCJUYWJsZUJvZHkiKSAlXQogICAgICAgIDwvdGFibGU+ClslIFJlbmRlckJsb2Nr
RW5kKCJPdmVydmlld1RhYmxlIikgJV0KICAgIDwvZm9ybT4KPC9kaXY+ClslIFJlbmRlckJsb2Nr
U3RhcnQoIkRvY3VtZW50UmVhZHlTdGFydCIpICVdClslIFdSQVBQRVIgSlNPbkRvY3VtZW50Q29t
cGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbCiAgICBD
b3JlLlVJLkluaXRDaGVja2JveFNlbGVjdGlvbigkKCd0YWJsZSB0ZC5DaGVja2JveCcpKTsKICAg
ICQoJy5NYXN0ZXJBY3Rpb24nKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAg
ICAgIHZhciAkTWFzdGVyQWN0aW9uTGluayA9ICQodGhpcykuZmluZCgnLk1hc3RlckFjdGlvbkxp
bmsnKTsKICAgICAgICAvLyBwcmV2ZW50IE1hc3RlckFjdGlvbiBvbiBEeW5hbWljIEZpZWxkcyBs
aW5rcwogICAgICAgIGlmICgkKEV2ZW50LnRhcmdldCkuaGFzQ2xhc3MoJ0R5bmFtaWNGaWVsZExp
bmsnKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgLy8gb25s
eSBhY3QgaWYgdGhlIGxpbmsgd2FzIG5vdCBjbGlja2VkIGRpcmVjdGx5CiAgICAgICAgaWYgKEV2
ZW50LnRhcmdldCAhPT0gJE1hc3RlckFjdGlvbkxpbmsuZ2V0KDApKSB7CiAgICAgICAgICAgIGlm
IChFdmVudC5jdHJsS2V5IHx8IEV2ZW50Lm1ldGFLZXkpIHsKICAgICAgICAgICAgICAgIHdpbmRv
dy5vcGVuKCRNYXN0ZXJBY3Rpb25MaW5rLmF0dHIoJ2hyZWYnKSk7CiAgICAgICAgICAgIH0KICAg
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAkTWFzdGVy
QWN0aW9uTGluay5hdHRyKCdocmVmJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgIH0KICAgIH0pOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0KWyUgUmVu
ZGVyQmxvY2tFbmQoIkRvY3VtZW50UmVhZHlTdGFydCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJE
b2N1bWVudENvbnRlbnQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRNZW51SXRl
bU1vdmVGb3JtIikgJV0KPGxpIGNsYXNzPSJbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSI+CiAgICA8
Zm9ybSB0aXRsZT0iWyUgVHJhbnNsYXRlKCJNb3ZlIHRpY2tldCB0byBhIGRpZmZlcmVudCBxdWV1
ZSIpIHwgaHRtbCAlXSIgYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBv
c3QiPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFn
ZW50VGlja2V0TW92ZSIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlF1ZXVl
SUQiIHZhbHVlPSJbJSBEYXRhLlF1ZXVlSUQgfCBodG1sICVdIi8+CiAgICAgICAgPGlucHV0IHR5
cGU9ImhpZGRlbiIgbmFtZT0iVGlja2V0SUQiIHZhbHVlPSJbJSBEYXRhLlRpY2tldElEIHwgaHRt
bCAlXSIvPgogICAgICAgIDxsYWJlbCBmb3I9IkRlc3RRdWV1ZUlEIiBjbGFzcz0iSW52aXNpYmxl
VGV4dCI+WyUgVHJhbnNsYXRlKCJDaGFuZ2UgcXVldWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAg
ICAgICBbJSBEYXRhLk1vdmVRdWV1ZXNTdHJnICVdCiAgICA8L2Zvcm0+ClslIFdSQVBQRVIgSlNP
bkRvY3VtZW50Q29tcGxldGUgJV0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFb
Q0RBVEFbCiAgICAkKCcuT3ZlcnZpZXdBY3Rpb25zJykub24oJ2NoYW5nZScsICdzZWxlY3RbbmFt
ZT1EZXN0UXVldWVJRF0nLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICAkKHRoaXMpLmNsb3Nl
c3QoJ2Zvcm0nKS5zdWJtaXQoKTsKICAgIH0pOwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0KPC9s
aT4KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50TWVudUl0ZW1Nb3ZlRm9ybSIpICVdCgpbJSBS
ZW5kZXJCbG9ja1N0YXJ0KCJEb2N1bWVudENvbHVtbkZpbHRlckZvcm0iKSAlXQo8Zm9ybSB0aXRs
ZT0iWyUgVHJhbnNsYXRlKCJDb2x1bW4gRmlsdGVycyBGb3JtIikgfCBodG1sICVdIiBhY3Rpb249
IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgbmFtZT0iQ29sdW1uRmlsdGVy
QXR0cmlidXRlcyIgaWQ9IkNvbHVtbkZpbHRlckF0dHJpYnV0ZXMiPgpbJSBSZW5kZXJCbG9ja1N0
YXJ0KCJEb2N1bWVudENvbHVtbkZpbHRlckZvcm1FbGVtZW50IikgJV0KICAgIDxpbnB1dCB0eXBl
PSJoaWRkZW4iIG5hbWU9IlslIERhdGEuRWxlbWVudE5hbWUgfCBodG1sICVdIiB2YWx1ZT0iWyUg
RGF0YS5FbGVtZW50VmFsdWUgfCBodG1sICVdIi8+ClslIFJlbmRlckJsb2NrRW5kKCJEb2N1bWVu
dENvbHVtbkZpbHRlckZvcm1FbGVtZW50IikgJV0KPC9mb3JtPgpbJSBSZW5kZXJCbG9ja0VuZCgi
RG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtIikgJV0KIyAtLS0KIyBQUwojIC0tLQpbJSBXUkFQUEVS
IEpTT25Eb2N1bWVudENvbXBsZXRlICVdCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4v
LzwhW0NEQVRBWwogICAgUGVybFNlcnZpY2VzLlRpY2tldE92ZXJ2aWV3LkNvbG9yaXplUm93cygp
OwovL11dPjwvc2NyaXB0PgpbJSBFTkQgJV0KIyAtLS0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8K
IyBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNiBQZXJsLVNlcnZpY2VzLmRlIGh0dHA6Ly9wZXJsLXNl
cnZpY2VzLmRlLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8g
V0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZv
ciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRo
aXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoK
cGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6VGlja2V0T3ZlcnZpZXc6OlNtYWxsOwoKdXNl
IHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNr
IHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyIEBP
YmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6
U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tl
cm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywK
ICAgICdLZXJuZWw6OlN5c3RlbTo6SlNPTicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNG
aWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6Q29sdW1uRmlsdGVyJywKICAgICdL
ZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3Rl
bTo6VGlja2V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCik7CgpzdWIgbmV3IHsKICAg
IG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Ig
b2JqZWN0CiAgICBteSAkU2VsZiA9IFwlUGFyYW07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7
CgogICAgIyBnZXQgVXNlcklEIHBhcmFtCiAgICAkU2VsZi0+e1VzZXJJRH0gPSAkUGFyYW17VXNl
cklEfSB8fCBkaWUgIkdvdCBubyBVc2VySUQhIjsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAg
ICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsK
CiAgICAkU2VsZi0+e1NtYWxsVmlld0NvbHVtbkhlYWRlcn0gPSAkQ29uZmlnT2JqZWN0LT5HZXQo
J1RpY2tldDo6RnJvbnRlbmQ6Ok92ZXJ2aWV3U21hbGwnKS0+e0NvbHVtbkhlYWRlcn07CgogICAg
IyBzZXQgcHJlZiBmb3IgY29sdW1ucyBrZXkKICAgICRTZWxmLT57UHJlZktleUNvbHVtbnN9ID0g
J1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZCcgLiAnLScgLiAkU2VsZi0+e0FjdGlvbn07CgogICAg
IyBsb2FkIGJhY2tlbmQgY29uZmlnCiAgICBteSAkQmFja2VuZENvbmZpZ0tleSA9ICdUaWNrZXQ6
OkZyb250ZW5kOjonIC4gJFNlbGYtPntBY3Rpb259OwogICAgJFNlbGYtPntDb25maWd9ID0gJENv
bmZpZ09iamVjdC0+R2V0KCRCYWNrZW5kQ29uZmlnS2V5KTsKCiAgICBteSAlUHJlZmVyZW5jZXMg
PSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRQcmVmZXJlbmNl
cygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBK
U09OIG9iamVjdAogICAgbXkgJEpTT05PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6
OlN5c3RlbTo6SlNPTicpOwoKICAgICMgc2V0IHN0b3JlZCBmaWx0ZXJzIGlmIHByZXNlbnQKICAg
IG15ICRTdG9yZWRGaWx0ZXJzS2V5ID0gJ1VzZXJTdG9yZWRGaWx0ZXJDb2x1bW5zLScgLiAkU2Vs
Zi0+e0FjdGlvbn07CiAgICBpZiAoICRQcmVmZXJlbmNlc3skU3RvcmVkRmlsdGVyc0tleX0gKSB7
CiAgICAgICAgbXkgJFN0b3JlZEZpbHRlcnMgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAg
ICAgICBEYXRhID0+ICRQcmVmZXJlbmNlc3skU3RvcmVkRmlsdGVyc0tleX0sCiAgICAgICAgKTsK
ICAgICAgICAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9ID0gJFN0b3JlZEZpbHRlcnM7CiAgICB9Cgog
ICAgIyBnZXQgdGhlIGNvbmZpZ3VyZWQgZHlhbm1pYyBmaWVsZHMgZnJvbSB0aGUgU21hbGwgT3Zl
cnZpZXcgc2V0dGluZyBhcyBhIGJhc2lzCiAgICBteSAlRGVmYXVsdER5bmFtaWNGaWVsZHMgPSAl
eyAkQ29uZmlnT2JqZWN0LT5HZXQoIlRpY2tldDo6RnJvbnRlbmQ6Ok92ZXJ2aWV3U21hbGwiKS0+
e0R5bmFtaWNGaWVsZH0gfHwge30gfTsKCiAgICBteSAlRGVmYXVsdENvbHVtbnMgPSBtYXAgeyAn
RHluYW1pY0ZpZWxkXycgLiAkXyA9PiAkRGVmYXVsdER5bmFtaWNGaWVsZHN7JF99IH0gc29ydCBr
ZXlzICVEZWZhdWx0RHluYW1pY0ZpZWxkczsKCiAgICAjIHRha2UgZ2VuZXJhbCBzZXR0aW5ncyAo
RnJvbnRlbmQ6OkFnZW50KSBpZiBub3QgZGVmaW5lZCBmb3IgdGhlIHNjcmVlbgogICAgJFNlbGYt
PntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9IC8vPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0RlZmF1
bHRPdmVydmlld0NvbHVtbnMnKTsKCiAgICAjIGNoZWNrIGZvciBkZWZhdWx0IHNldHRpbmdzIHNw
ZWNpZmljIGZvciB0aGlzIHNjcmVlbiwgc2hvdWxkIG92ZXJpZGUgdGhlIGR5bmFtaWMgZmllbGRz
CiAgICAlRGVmYXVsdENvbHVtbnMgPSAoICVEZWZhdWx0Q29sdW1ucywgJXsgJFNlbGYtPntDb25m
aWd9LT57RGVmYXVsdENvbHVtbnN9IHx8IHt9IH0gKTsKCiAgICAjIGNvbmZpZ3VyZSBjb2x1bW5z
CiAgICBteSBAQ29sdW1uc0F2YWlsYWJsZSA9IGdyZXAgeyAkRGVmYXVsdENvbHVtbnN7JF99IG5l
ICcwJyB9IHNvcnQga2V5cyAlRGVmYXVsdENvbHVtbnM7CiAgICBteSBAQ29sdW1uc0VuYWJsZWQg
ICA9IGdyZXAgeyAkRGVmYXVsdENvbHVtbnN7JF99IGVxICcyJyB9IHNvcnQgX0RlZmF1bHRDb2x1
bW5Tb3J0IGtleXMgJURlZmF1bHRDb2x1bW5zOwoKICAgICMgaWYgcHJlZmVyZW5jZSBzZXR0aW5n
cyBhcmUgYXZhaWxhYmxlLCB0YWtlIHRoZW0KICAgIGlmICggJFByZWZlcmVuY2VzeyAkU2VsZi0+
e1ByZWZLZXlDb2x1bW5zfSB9ICkgewoKICAgICAgICBteSAkQ29sdW1uc0VuYWJsZWQgPSAkSlNP
Tk9iamVjdC0+RGVjb2RlKAogICAgICAgICAgICBEYXRhID0+ICRQcmVmZXJlbmNlc3sgJFNlbGYt
PntQcmVmS2V5Q29sdW1uc30gfSwKICAgICAgICApOwoKICAgICAgICAjIHJlbW92ZSBkdXBsaWNh
dGUgY29sdW1ucwogICAgICAgIG15ICVVbmlxdWVDb2x1bW5zOwogICAgICAgIG15IEBDb2x1bW5z
RW5hYmxlZEF1eDsKCiAgICAgICAgZm9yIG15ICRDb2x1bW4gKCBAeyRDb2x1bW5zRW5hYmxlZH0g
KSB7CiAgICAgICAgICAgIGlmICggISRVbmlxdWVDb2x1bW5zeyRDb2x1bW59ICkgewogICAgICAg
ICAgICAgICAgcHVzaCBAQ29sdW1uc0VuYWJsZWRBdXgsICRDb2x1bW47CiAgICAgICAgICAgIH0K
ICAgICAgICAgICAgJFVuaXF1ZUNvbHVtbnN7JENvbHVtbn0gPSAxOwogICAgICAgIH0KCiAgICAg
ICAgIyBzZXQgZmlsdGVyZWQgY29sdW1uIGxpc3QKICAgICAgICBAQ29sdW1uc0VuYWJsZWQgPSBA
Q29sdW1uc0VuYWJsZWRBdXg7CgogICAgfQoKICAgICMgYWx3YXlzIHNldCBUaWNrZXROdW1iZXIK
ICAgIGlmICggIWdyZXAgeyAkXyBlcSAnVGlja2V0TnVtYmVyJyB9IEBDb2x1bW5zRW5hYmxlZCAp
IHsKICAgICAgICB1bnNoaWZ0IEBDb2x1bW5zRW5hYmxlZCwgJ1RpY2tldE51bWJlcic7CiAgICB9
CgogICAgJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0gICA9IFxAQ29sdW1uc0VuYWJsZWQ7CiAgICAk
U2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9ID0gXEBDb2x1bW5zQXZhaWxhYmxlOwoKICAgIHsKCiAg
ICAgICAgIyBsb29wIHRocm91Z2ggYWxsIHRoZSBkeW5hbWljIGZpZWxkcyB0byBnZXQgdGhlIG9u
ZXMgdGhhdCBzaG91bGQgYmUgc2hvd24KICAgICAgICBEWU5BTUlDRklFTEROQU1FOgogICAgICAg
IGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoQENvbHVtbnNFbmFibGVkKSB7CgogICAgICAgICAg
ICBuZXh0IERZTkFNSUNGSUVMRE5BTUUgaWYgJER5bmFtaWNGaWVsZE5hbWUgIX4gbXsgRHluYW1p
Y0ZpZWxkXyB9eG1zOwoKICAgICAgICAgICAgIyByZW1vdmUgZHluYW1pYyBmaWVsZCBwcmVmaXgK
ICAgICAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICREeW5hbWljRmllbGROYW1lOwogICAgICAgICAg
ICAkRmllbGROYW1lID1+IHMvRHluYW1pY0ZpZWxkXy8vZ2k7CiAgICAgICAgICAgICRTZWxmLT57
RHluYW1pY0ZpZWxkRmlsdGVyfS0+eyRGaWVsZE5hbWV9ID0gMTsKICAgICAgICB9CiAgICB9Cgog
ICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgJFNlbGYtPntE
eW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNG
aWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAg
ICAgICAgT2JqZWN0VHlwZSAgPT4gWydUaWNrZXQnXSwKICAgICAgICBGaWVsZEZpbHRlciA9PiAk
U2VsZi0+e0R5bmFtaWNGaWVsZEZpbHRlcn0gfHwge30sCiAgICApOwoKICAgICMgaGFzaCB3aXRo
IGFsbCB2YWxpZCBzb3J0YWJsZSBjb2x1bW5zICh0YWtlbiBmcm9tIFRpY2tldFNlYXJjaCkKICAg
ICMgU29ydEJ5ICA9PiAnQWdlJywgICAjIENyZWF0ZWR8T3duZXJ8UmVzcG9uc2libGV8Q3VzdG9t
ZXJJRHxTdGF0ZXxUaWNrZXROdW1iZXJ8UXVldWUKICAgICMgfFByaW9yaXR5fFR5cGV8TG9ja3xU
aXRsZXxTZXJ2aWNlfENoYW5nZWR8U0xBfFBlbmRpbmdUaW1lfEVzY2FsYXRpb25UaW1lCiAgICAj
IHwgRXNjYWxhdGlvblVwZGF0ZVRpbWV8RXNjYWxhdGlvblJlc3BvbnNlVGltZXxFc2NhbGF0aW9u
U29sdXRpb25UaW1lCiAgICAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfSA9IHsKICAgICAg
ICAnQWdlJyAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAnQ3JlYXRlZCcgICAgICAg
ICAgICAgICAgPT4gMSwKICAgICAgICAnT3duZXInICAgICAgICAgICAgICAgICAgPT4gMSwKICAg
ICAgICAnUmVzcG9uc2libGUnICAgICAgICAgICAgPT4gMSwKICAgICAgICAnQ3VzdG9tZXJJRCcg
ICAgICAgICAgICAgPT4gMSwKICAgICAgICAnU3RhdGUnICAgICAgICAgICAgICAgICAgPT4gMSwK
ICAgICAgICAnVGlja2V0TnVtYmVyJyAgICAgICAgICAgPT4gMSwKICAgICAgICAnUXVldWUnICAg
ICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAnUHJpb3JpdHknICAgICAgICAgICAgICAgPT4g
MSwKICAgICAgICAnVHlwZScgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAnTG9jaycg
ICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAnVGl0bGUnICAgICAgICAgICAgICAgICAg
PT4gMSwKICAgICAgICAnU2VydmljZScgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAnQ2hh
bmdlZCcgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAnU0xBJyAgICAgICAgICAgICAgICAg
ICAgPT4gMSwKICAgICAgICAnUGVuZGluZ1RpbWUnICAgICAgICAgICAgPT4gMSwKICAgICAgICAn
RXNjYWxhdGlvblRpbWUnICAgICAgICAgPT4gMSwKICAgICAgICAnRXNjYWxhdGlvblVwZGF0ZVRp
bWUnICAgPT4gMSwKICAgICAgICAnRXNjYWxhdGlvblJlc3BvbnNlVGltZScgPT4gMSwKICAgICAg
ICAnRXNjYWxhdGlvblNvbHV0aW9uVGltZScgPT4gMSwKICAgIH07CgogICAgJFNlbGYtPntBdmFp
bGFibGVGaWx0ZXJhYmxlQ29sdW1uc30gPSB7CiAgICAgICAgJ093bmVyJyAgICAgICAgICA9PiAx
LAogICAgICAgICdSZXNwb25zaWJsZScgICAgPT4gMSwKICAgICAgICAnQ3VzdG9tZXJJRCcgICAg
ID0+IDEsCiAgICAgICAgJ0N1c3RvbWVyVXNlcklEJyA9PiAxLAogICAgICAgICdTdGF0ZScgICAg
ICAgICAgPT4gMSwKICAgICAgICAnUXVldWUnICAgICAgICAgID0+IDEsCiAgICAgICAgJ1ByaW9y
aXR5JyAgICAgICA9PiAxLAogICAgICAgICdUeXBlJyAgICAgICAgICAgPT4gMSwKICAgICAgICAn
TG9jaycgICAgICAgICAgID0+IDEsCiAgICAgICAgJ1NlcnZpY2UnICAgICAgICA9PiAxLAogICAg
ICAgICdTTEEnICAgICAgICAgICAgPT4gMSwKICAgIH07CgogICAgIyByZW1vdmUgcXVldWUgZnJv
bSBmaWx0ZXJzIG9uIEFnZW50VGlja2V0UXVldWUKICAgIGlmICggJFNlbGYtPntBY3Rpb259IGVx
ICdBZ2VudFRpY2tldFF1ZXVlJyApIHsKICAgICAgICBkZWxldGUgJFNlbGYtPntBdmFpbGFibGVG
aWx0ZXJhYmxlQ29sdW1uc30tPntRdWV1ZX07CiAgICB9CgogICAgIyByZW1vdmUgc2VydmljZSBm
cm9tIGZpbHRlcnMgb24gQWdlbnRUaWNrZXRTZXJ2aWNlCiAgICBpZiAoICRTZWxmLT57QWN0aW9u
fSBlcSAnQWdlbnRUaWNrZXRTZXJ2aWNlJyApIHsKICAgICAgICBkZWxldGUgJFNlbGYtPntBdmFp
bGFibGVGaWx0ZXJhYmxlQ29sdW1uc30tPntTZXJ2aWNlfTsKICAgIH0KCiAgICAjIGdldCBkeW5h
bWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVj
dCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tl
bmQnKTsKCiAgICAjIGdldCBmaWx0ZXJhYmxlIGR5bmFtaWMgZmllbGRzCiAgICAjIGN5Y2xlIHRy
b3VnaCB0aGUgYWN0aXZhdGVkIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgRFlO
QU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5
bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVm
V2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgIG15ICRJc0ZpbHRyYWJsZSA9
ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgRHlu
YW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIEJlaGF2
aW9yICAgICAgICAgICA9PiAnSXNGaWx0cmFibGUnLAogICAgICAgICk7CgogICAgICAgICMgaWYg
dGhlIGR5bmFtaWMgZmllbGQgaXMgZmlsdGVyYWJsZSBhZGQgaXQgdG8gdGhlIEF2YWlsYWJsZUZp
bHRlcmFibGVDb2x1bW5zIGhhc2gKICAgICAgICBpZiAoJElzRmlsdHJhYmxlKSB7CiAgICAgICAg
ICAgICRTZWxmLT57QXZhaWxhYmxlRmlsdGVyYWJsZUNvbHVtbnN9LT57ICdEeW5hbWljRmllbGRf
JyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICB9CiAgICB9Cgog
ICAgIyBnZXQgc29ydGFibGUgZHluYW1pYyBmaWVsZHMKICAgICMgY3ljbGUgdHJvdWdoIHRoZSBh
Y3RpdmF0ZWQgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICBEWU5BTUlDRklFTEQ6
CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxk
fSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgk
RHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgbXkgJElzU29ydGFibGUgPSAkRHluYW1pY0Zp
ZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENv
bmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBCZWhhdmlvciAgICAgICAg
ICAgPT4gJ0lzU29ydGFibGUnLAogICAgICAgICk7CgogICAgICAgICMgaWYgdGhlIGR5bmFtaWMg
ZmllbGQgaXMgc29ydGFibGUgYWRkIGl0IHRvIHRoZSBWYWxpZFNvcnRhYmxlQ29sdW1ucyBoYXNo
CiAgICAgICAgaWYgKCRJc1NvcnRhYmxlKSB7CiAgICAgICAgICAgICRTZWxmLT57VmFsaWRTb3J0
YWJsZUNvbHVtbnN9LT57ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntO
YW1lfSB9ID0gMTsKICAgICAgICB9CiAgICB9CgojIC0tLQojIFBTCiMgLS0tCiAgICAjIHJ1biBo
b29rcwogICAgbXkgJEhvb2tzID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXRPdmVydmlldzo6
SG9va3MnKSB8fCB7fTsKICAgICRTZWxmLT57SE9PS1N9ID0gJEhvb2tzOwoKICAgIG15ICRNYWlu
T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKCiAgICBQ
UklPUklUWToKICAgIGZvciBteSAkUHJpb3JpdHkgKCBzb3J0IGtleXMgJXskSG9va3N9ICkgewoK
ICAgICAgICBteSAkTW9kdWxlID0gJEhvb2tzLT57JFByaW9yaXR5fTsKCiAgICAgICAgaWYgKCAk
TWFpbk9iamVjdC0+UmVxdWlyZSggJE1vZHVsZSApICkgewogICAgICAgICAgICAkU2VsZi0+e0hv
b2tPYmplY3RzfS0+eyRNb2R1bGV9ID0gJE1vZHVsZS0+bmV3KCAleyRTZWxmfSApOwogICAgICAg
IH0KICAgIH0KIyAtLS0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBBY3Rpb25Sb3cgewogICAg
bXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAg
bXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAg
ICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhU
TUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAg
IG15ICRCdWxrRmVhdHVyZSA9IDA7CiAgICBpZiAoICRQYXJhbXtCdWxrfSAmJiAkQ29uZmlnT2Jq
ZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlJykgKSB7CiAgICAgICAgbXkg
QEdyb3VwczsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVu
ZDo6QnVsa0ZlYXR1cmVHcm91cCcpICkgewogICAgICAgICAgICBAR3JvdXBzID0gQHsgJENvbmZp
Z09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpCdWxrRmVhdHVyZUdyb3VwJykgfTsKICAg
ICAgICB9CiAgICAgICAgaWYgKCAhQEdyb3VwcyApIHsKICAgICAgICAgICAgJEJ1bGtGZWF0dXJl
ID0gMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIEdST1VQOgogICAgICAg
ICAgICBmb3IgbXkgJEdyb3VwIChAR3JvdXBzKSB7CiAgICAgICAgICAgICAgICBuZXh0IEdST1VQ
IGlmICEkTGF5b3V0T2JqZWN0LT57IlVzZXJJc0dyb3VwWyRHcm91cF0ifTsKICAgICAgICAgICAg
ICAgIGlmICggJExheW91dE9iamVjdC0+eyJVc2VySXNHcm91cFskR3JvdXBdIn0gZXEgJ1llcycg
KSB7CiAgICAgICAgICAgICAgICAgICAgJEJ1bGtGZWF0dXJlID0gMTsKICAgICAgICAgICAgICAg
ICAgICBsYXN0IEdST1VQOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAg
fQogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0RvY3Vt
ZW50QWN0aW9uUm93JywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgIGlmICgk
QnVsa0ZlYXR1cmUpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAg
TmFtZSA9PiAnRG9jdW1lbnRBY3Rpb25Sb3dCdWxrJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAg
ICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICBOYW1lID0+IFRyYW5zbGF0YWJs
ZSgnQnVsaycpLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBp
ZiB0aGVyZSB3YXMgYSBjb2x1bW4gZmlsdGVyIGFuZCBubyByZXN1bHRzLCBhbmQgcHJpbnQgYSBs
aW5rIHRvIGJhY2sKICAgIGlmICggc2NhbGFyIEB7ICRQYXJhbXtUaWNrZXRJRHN9IH0gPT0gMCAm
JiAkUGFyYW17TGFzdENvbHVtbkZpbHRlcn0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+Qmxv
Y2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50QWN0aW9uUm93TGFzdENvbHVtbkZpbHRl
cicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAg
ICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBhZGQgdHJhbnNsYXRpb25zIGZvciB0aGUg
YWxsb2NhdGlvbiBsaXN0cyBmb3IgcmVndWxhciBjb2x1bW5zCiAgICBteSAkQ29sdW1ucyA9ICRT
ZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfSB8fCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Rl
ZmF1bHRPdmVydmlld0NvbHVtbnMnKSB8fCB7fTsKICAgIGlmICggJENvbHVtbnMgJiYgSXNIYXNo
UmVmV2l0aERhdGEoJENvbHVtbnMpICkgewoKICAgICAgICBDT0xVTU46CiAgICAgICAgZm9yIG15
ICRDb2x1bW4gKCBzb3J0IGtleXMgJXskQ29sdW1uc30gKSB7CgogICAgICAgICAgICAjIGR5bmFt
aWMgZmllbGRzIHdpbGwgYmUgdHJhbnNsYXRlZCBpbiB0aGUgbmV4dCBibG9jawogICAgICAgICAg
ICBuZXh0IENPTFVNTiBpZiAkQ29sdW1uID1+IG17IFxBIER5bmFtaWNGaWVsZF8gfXhtczsKCiAg
ICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZCA9ICRDb2x1bW47CiAgICAgICAgICAgIGlmICgg
JENvbHVtbiBlcSAnRXNjYWxhdGlvblRpbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0
ZWRXb3JkID0gJ1NlcnZpY2UgVGltZSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYg
KCAkQ29sdW1uIGVxICdFc2NhbGF0aW9uUmVzcG9uc2VUaW1lJyApIHsKICAgICAgICAgICAgICAg
ICRUcmFuc2xhdGVkV29yZCA9ICdGaXJzdCBSZXNwb25zZSBUaW1lJzsKICAgICAgICAgICAgfQog
ICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0VzY2FsYXRpb25Tb2x1dGlvblRpbWUnICkg
ewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJ1NvbHV0aW9uIFRpbWUnOwogICAg
ICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnRXNjYWxhdGlvblVwZGF0
ZVRpbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJ1VwZGF0ZSBUaW1l
JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ1BlbmRpbmdU
aW1lJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICdQZW5kaW5nIHRpbGwn
OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAg
ICAgICAgICAgIE5hbWUgPT4gJ0NvbHVtblRyYW5zbGF0aW9uJywKICAgICAgICAgICAgICAgIERh
dGEgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICA9PiAkQ29sdW1uLAog
ICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZVN0cmluZyA9PiAkVHJhbnNsYXRlZFdvcmQsCiAg
ICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0
LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbHVtblRyYW5zbGF0aW9uU2VwYXJh
dG9yJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgdHJhbnNsYXRp
b25zIGZvciB0aGUgYWxsb2NhdGlvbiBsaXN0cyBmb3IgZHluYW1pYyBmaWVsZCBjb2x1bW5zCiAg
ICBteSAkQ29sdW1uc0R5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lz
dGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAg
ICAgID0+IDAsCiAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ1RpY2tldCddLAogICAgKTsKCiAgICBp
ZiAoICRDb2x1bW5zRHluYW1pY0ZpZWxkICYmIElzQXJyYXlSZWZXaXRoRGF0YSgkQ29sdW1uc0R5
bmFtaWNGaWVsZCkgKSB7CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgRFlOQU1J
Q0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkICggc29ydCBAeyRDb2x1bW5zRHlu
YW1pY0ZpZWxkfSApIHsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1p
Y0ZpZWxkOwoKICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICRMYXlvdXRPYmpl
Y3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29sdW1uVHJhbnNsYXRpb24nLAog
ICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAg
ICAgID0+ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQtPntOYW1lfSwKICAgICAgICAg
ICAgICAgICAgICBUcmFuc2xhdGVTdHJpbmcgPT4gJER5bmFtaWNGaWVsZC0+e0xhYmVsfSwKICAg
ICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICRDb3VudGVy
IDwgc2NhbGFyIEB7JENvbHVtbnNEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgJExh
eW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29sdW1uVHJh
bnNsYXRpb25TZXBhcmF0b3InLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAg
ICAgIH0KICAgIH0KCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAg
ICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRUaWNrZXRPdmVydmlld1NtYWxsJywKICAgICAgICBE
YXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1
YiBTb3J0T3JkZXJCYXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1
cm4gJyc7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAj
IElmICRQYXJhbXtFbmFibGVDb2x1bW5GaWx0ZXJzfSBpcyBub3Qgc2VudCwgd2Ugd2FudCB0byBk
aXNhYmxlIGFsbCBmaWx0ZXJzCiAgICAjICAgZm9yIHRoZSBjdXJyZW50IHNjcmVlbi4gV2UgbG9j
YWxpemUgdGhlIHNldHRpbmcgZm9yIHRoaXMgc3ViIGFuZCBjaGFuZ2UgaXQKICAgICMgICBhZnRl
ciB0aGF0LCBpZiBuZWVkZWQuIFRoZSBvcmlnaW5hbCB2YWx1ZSB3aWxsIGJlIHJlc3RvcmVkIGFm
dGVyIHRoaXMgZnVuY3Rpb24uCiAgICBsb2NhbCAkU2VsZi0+e0F2YWlsYWJsZUZpbHRlcmFibGVD
b2x1bW5zfSA9ICRTZWxmLT57QXZhaWxhYmxlRmlsdGVyYWJsZUNvbHVtbnN9OwogICAgaWYgKCAh
JFBhcmFte0VuYWJsZUNvbHVtbkZpbHRlcnN9ICkgewogICAgICAgICRTZWxmLT57QXZhaWxhYmxl
RmlsdGVyYWJsZUNvbHVtbnN9ID0ge307ICAgICMgZGlzYWJsZSBhbGwgY29sdW1uIGZpbHRlcnMK
ICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIChxdyhUaWNrZXRJRHMgUGFn
ZVNob3duIFN0YXJ0SGl0KSkgewogICAgICAgIGlmICggISRQYXJhbXskX30gKSB7CiAgICAgICAg
ICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAg
ICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+
ICJOZWVkICRfISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0K
ICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRL
ZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0g
JEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMg
Y2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIG15ICRCdWxrRmVhdHVyZSA9IDA7
CiAgICBpZiAoICRQYXJhbXtCdWxrfSAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJv
bnRlbmQ6OkJ1bGtGZWF0dXJlJykgKSB7CiAgICAgICAgbXkgQEdyb3VwczsKICAgICAgICBpZiAo
ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCcp
ICkgewogICAgICAgICAgICBAR3JvdXBzID0gQHsgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6
OkZyb250ZW5kOjpCdWxrRmVhdHVyZUdyb3VwJykgfTsKICAgICAgICB9CiAgICAgICAgaWYgKCAh
QEdyb3VwcyApIHsKICAgICAgICAgICAgJEJ1bGtGZWF0dXJlID0gMTsKICAgICAgICB9CiAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgIEdST1VQOgogICAgICAgICAgICBmb3IgbXkgJEdyb3VwIChA
R3JvdXBzKSB7CiAgICAgICAgICAgICAgICBuZXh0IEdST1VQIGlmICEkTGF5b3V0T2JqZWN0LT57
IlVzZXJJc0dyb3VwWyRHcm91cF0ifTsKICAgICAgICAgICAgICAgIGlmICggJExheW91dE9iamVj
dC0+eyJVc2VySXNHcm91cFskR3JvdXBdIn0gZXEgJ1llcycgKSB7CiAgICAgICAgICAgICAgICAg
ICAgJEJ1bGtGZWF0dXJlID0gMTsKICAgICAgICAgICAgICAgICAgICBsYXN0IEdST1VQOwogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKIyAtLS0KIyBQUwoj
IC0tLQoKICAgIG15ICRDb2x1bW5Db3VudGVyICA9IDA7CiAgICBteSAlQ29sdW1uc0VuYWJsZWQg
PSBtYXB7ICRfID0+ICRDb2x1bW5Db3VudGVyKysgfUB7ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9
IHx8IHt9IH07CiAgICBteSAlSG9va0NvbmZpZ3MgICAgPSAleyAkQ29uZmlnT2JqZWN0LT5HZXQo
J1RpY2tldE92ZXJ2aWV3OjpIb29rc0NvbmZpZycpIHx8IHt9IH07CgogICAgbXkgJUhvb2tDb2x1
bW5zOwoKICAgIE5BTUU6CiAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJUhvb2tDb25maWdz
ICkgewogICAgICAgIG15ICRDb2x1bW5OYW1lID0gJEhvb2tDb25maWdzeyROYW1lfS0+e0NvbHVt
bn07CgogICAgICAgIG5leHQgTkFNRSBpZiAhJENvbHVtbk5hbWU7CiAgICAgICAgbmV4dCBOQU1F
IGlmICEkQ29sdW1uc0VuYWJsZWR7JENvbHVtbk5hbWV9OwoKICAgICAgICAkSG9va0NvbHVtbnN7
JE5hbWV9ID0gJENvbHVtbnNFbmFibGVkeyRDb2x1bW5OYW1lfTsKICAgIH0KIyAtLS0KCiAgICBt
eSAkQ291bnRlciA9IDA7CiAgICBteSBAQXJ0aWNsZUJveDsKICAgIGZvciBteSAkVGlja2V0SUQg
KCBAeyAkUGFyYW17VGlja2V0SURzfSB9ICkgewogICAgICAgICRDb3VudGVyKys7CiAgICAgICAg
aWYgKCAkQ291bnRlciA+PSAkUGFyYW17U3RhcnRIaXR9ICYmICRDb3VudGVyIDwgKCAkUGFyYW17
UGFnZVNob3dufSArICRQYXJhbXtTdGFydEhpdH0gKSApIHsKCiAgICAgICAgICAgICMgZ2V0IHRp
Y2tldCBvYmplY3QKICAgICAgICAgICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5H
ZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAgICAgICAgICMgZ2V0IGxhc3QgY3Vz
dG9tZXIgYXJ0aWNsZQogICAgICAgICAgICBteSAlQXJ0aWNsZSA9ICRUaWNrZXRPYmplY3QtPkFy
dGljbGVMYXN0Q3VzdG9tZXJBcnRpY2xlKAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICA9
PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAg
ICAgICk7CgogICAgICAgICAgICAjIGdldCB0aWNrZXQgZGF0YQogICAgICAgICAgICBteSAlVGlj
a2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgICAgICAgICAgVGlja2V0SUQg
ICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAg
ICAgICAgICAgICk7CgogICAgICAgICAgICAjIEZhbGxiYWNrIGZvciB0aWNrZXRzIHdpdGhvdXQg
YXJ0aWNsZXM6IGdldCBhdCBsZWFzdCBiYXNpYyB0aWNrZXQgZGF0YQogICAgICAgICAgICBpZiAo
ICElQXJ0aWNsZSApIHsKICAgICAgICAgICAgICAgICVBcnRpY2xlID0gJFRpY2tldE9iamVjdC0+
VGlja2V0R2V0KAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFRpY2tldElE
LAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAg
ICk7CiAgICAgICAgICAgICAgICBpZiAoICEkQXJ0aWNsZXtUaXRsZX0gKSB7CiAgICAgICAgICAg
ICAgICAgICAgJEFydGljbGV7VGl0bGV9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0
fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyB0aWNrZXQgaGFzIG5v
IHRpdGxlIG9yIHN1YmplY3QnCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICRBcnRpY2xle1N1YmplY3R9ID0gJEFydGljbGV7VGl0bGV9OwoK
ICAgICAgICAgICAgICAgICMgc2hvdyB0aWNrZXQgY3JlYXRlIHRpbWUgaW4gc21hbGwgdmlldwog
ICAgICAgICAgICAgICAgJEFydGljbGV7Q3JlYXRlZH0gPSAkVGlja2V0e0NyZWF0ZWR9OwogICAg
ICAgICAgICB9CgogICAgICAgICAgICAjIC0tLQogICAgICAgICAgICAjIFBTCiAgICAgICAgICAg
ICMgLS0tCgogICAgICAgICAgICAjIHJ1biBob29rcwogICAgICAgICAgICBteSAkSG9va3MgICAg
PSAkU2VsZi0+e0hPT0tTfSB8fCB7fTsKICAgICAgICAgICAgbXkgJE1hdGNoZWQgID0gMDsKICAg
ICAgICAgICAgbXkgJEZvbnRTZWVuID0gMDsKCiAgICAgICAgICAgIFBSSU9SSVRZOgogICAgICAg
ICAgICBmb3IgbXkgJFByaW9yaXR5ICggc29ydCBrZXlzICV7JEhvb2tzfSApIHsKCiAgICAgICAg
ICAgICAgICBteSAkTW9kdWxlID0gJEhvb2tzLT57JFByaW9yaXR5fTsKICAgICAgICAgICAgICAg
IG15ICROYW1lICAgPSAoc3BsaXQgLzo6LywgJE1vZHVsZSlbLTFdOwoKICAgICAgICAgICAgICAg
IG15ICRDb2x1bW4gPSAkSG9va0NvbHVtbnN7JE5hbWV9OwogICAgICAgICAgICAgICAgbmV4dCBQ
UklPUklUWSBpZiAkTWF0Y2hlZCAmJiAhJENvbHVtbjsKCiAgICAgICAgICAgICAgICBpZiAoICRT
ZWxmLT57SG9va09iamVjdHN9LT57JE1vZHVsZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkg
JE9iamVjdCA9ICRTZWxmLT57SG9va09iamVjdHN9LT57JE1vZHVsZX07CiAgICAgICAgICAgICAg
ICAgICAgbXkgJENvbG9yICA9ICRPYmplY3QtPlJ1bigKICAgICAgICAgICAgICAgICAgICAgICAg
JUFydGljbGUsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbmV4
dCBQUklPUklUWSBpZiAhJENvbG9yOwogICAgCiAgICAgICAgICAgICAgICAgICAgaWYgKCByZWYg
JENvbG9yICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkSG9va2VkID0gJyc7CiAgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgS0VZOgogICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
bXkgJEtleSAoIHF3L0ZvbnQgQmFja2dyb3VuZC8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuZXh0IEtFWSBpZiAhJENvbG9yLT57JEtleX07CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuZXh0IEtFWSBpZiAkS2V5IGVxICdGb250JyAmJiAkRm9udFNlZW4rKzsKCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBteSAkU3VmZml4ICAgICA9ICRLZXkgZXEgJ0ZvbnQnID8gJ0Zv
bnQnIDogJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkQ29sb3JWYWx1ZSA9ICRD
b2xvci0+eyRLZXl9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJENvbG9yVmFsdWUgICAg
PX4gc3tcQSN9e307CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEhvb2tlZCAuPSBzcHJp
bnRmICcgSG9va2VkJXNfJXMnLCAkU3VmZml4LCAkQ29sb3JWYWx1ZTsKICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgCiAgICAgICAgICAgICAgICAgICAgICAgICRBcnRpY2xle0hvb2tlZH0g
ICAgID0gJEhvb2tlZDsKICAgICAgICAgICAgICAgICAgICAgICAgJEFydGljbGV7SG9va2VkTWFp
bn0gPSAnSG9va2VkJzsKICAgIAogICAgICAgICAgICAgICAgICAgICAgICBsYXN0IFBSSU9SSVRZ
IGlmICRDb2xvci0+e0JhY2tncm91bmR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICBlbHNpZiAoICRDb2xvciA9fiBteyBcQSBbI10/IFthLWZBLUYwLTldezZ9IFx6
IH14bXMgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDb2xvciA9fiBze1xBI317fTsKCiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggJENvbHVtbiApIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICRBcnRpY2xle0hvb2tlZENvbHVtbn0gPSAnSG9va2VkQ29sdW1uXycgLiAoICRD
b2x1bW4gKyAzICkgLiAnXycgLiAkQ29sb3I7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
QXJ0aWNsZXtIb29rZWR9ID0gJ0hvb2tlZF8nIC4gJENvbG9yOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJE1hdGNoZWQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgICAgICAgICAgICAgJEFydGljbGV7SG9va2VkTWFpbn0gPSAnSG9va2VkJzsKICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAg
ICMgLS0tCgogICAgICAgICAgICAjIHByZXBhcmUgYSAibG9uZyIgdmVyc2lvbiBvZiB0aGUgc3Vi
amVjdCB0byBzaG93IGluIHRoZSB0aXRsZSBhdHRyaWJ1dGUuIFdlIGRvbid0IHRha2UKICAgICAg
ICAgICAgIyB0aGUgd2hvbGUgc3RyaW5nICh3aGljaCBjb3VsZCBiZSBWRVJZIGxvbmcpIHRvIGF2
b2lkIHBvbGx1dGluZyB0aGUgRE9NIGFuZCBoYXZpbmcgdG9vCiAgICAgICAgICAgICMgbXVjaCBk
YXRhIHRvIGJlIHRyYW5zZmVycmVkIG9uIGxhcmdlIHRpY2tldCBsaXN0cwogICAgICAgICAgICAk
QXJ0aWNsZXtTdWJqZWN0TG9uZ30gPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRTdWJqZWN0Q2xlYW4o
CiAgICAgICAgICAgICAgICBUaWNrZXROdW1iZXIgPT4gJEFydGljbGV7VGlja2V0TnVtYmVyfSwK
ICAgICAgICAgICAgICAgIFN1YmplY3QgICAgICA9PiAkQXJ0aWNsZXtTdWJqZWN0fSB8fCAnJywK
ICAgICAgICAgICAgICAgIFNpemUgICAgICAgICA9PiA1MDAsCiAgICAgICAgICAgICk7CgogICAg
ICAgICAgICAjIHByZXBhcmUgc3ViamVjdAogICAgICAgICAgICAkQXJ0aWNsZXtTdWJqZWN0fSA9
ICRUaWNrZXRPYmplY3QtPlRpY2tldFN1YmplY3RDbGVhbigKICAgICAgICAgICAgICAgIFRpY2tl
dE51bWJlciA9PiAkQXJ0aWNsZXtUaWNrZXROdW1iZXJ9LAogICAgICAgICAgICAgICAgU3ViamVj
dCAgICAgID0+ICRBcnRpY2xle1N1YmplY3R9IHx8ICcnLAogICAgICAgICAgICApOwoKICAgICAg
ICAgICAgIyBjcmVhdGUgaHVtYW4gYWdlCiAgICAgICAgICAgICRBcnRpY2xle0FnZX0gPSAkTGF5
b3V0T2JqZWN0LT5DdXN0b21lckFnZSgKICAgICAgICAgICAgICAgIEFnZSAgID0+ICRBcnRpY2xl
e0FnZX0sCiAgICAgICAgICAgICAgICBTcGFjZSA9PiAnICcsCiAgICAgICAgICAgICk7CgogICAg
ICAgICAgICAjIGdldCBBQ0wgcmVzdHJpY3Rpb25zCiAgICAgICAgICAgIG15ICVQb3NzaWJsZUFj
dGlvbnM7CiAgICAgICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgICAgICMgZ2V0IGFs
bCByZWdpc3RlcmVkIEFjdGlvbnMKICAgICAgICAgICAgaWYgKCByZWYgJENvbmZpZ09iamVjdC0+
R2V0KCdGcm9udGVuZDo6TW9kdWxlJykgZXEgJ0hBU0gnICkgewoKICAgICAgICAgICAgICAgIG15
ICVBY3Rpb25zID0gJXsgJENvbmZpZ09iamVjdC0+R2V0KCdGcm9udGVuZDo6TW9kdWxlJykgfTsK
CiAgICAgICAgICAgICAgICAjIG9ubHkgdXNlIHRob3NlIEFjdGlvbnMgdGhhdCBzdGF0cyB3aXRo
IEFnZW50VGlja2V0CiAgICAgICAgICAgICAgICAlUG9zc2libGVBY3Rpb25zID0gbWFwIHsgKysk
Q291bnRlciA9PiAkXyB9CiAgICAgICAgICAgICAgICAgICAgZ3JlcCB7IHN1YnN0ciggJF8sIDAs
IGxlbmd0aCAnQWdlbnRUaWNrZXQnICkgZXEgJ0FnZW50VGlja2V0JyB9CiAgICAgICAgICAgICAg
ICAgICAgc29ydCBrZXlzICVBY3Rpb25zOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAk
QUNMID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsKAogICAgICAgICAgICAgICAgRGF0YSAgICAg
ICAgICA9PiBcJVBvc3NpYmxlQWN0aW9ucywKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAg
PT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkQXJ0
aWNsZXtUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdBY3Rpb24n
LAogICAgICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnLScsCiAgICAgICAgICAgICAgICBV
c2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAg
ICAgbXkgJUFjbEFjdGlvbiA9ICVQb3NzaWJsZUFjdGlvbnM7CiAgICAgICAgICAgIGlmICgkQUNM
KSB7CiAgICAgICAgICAgICAgICAlQWNsQWN0aW9uID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNs
QWN0aW9uRGF0YSgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJ1biB0aWNrZXQgcHJl
IG1lbnUgbW9kdWxlcwogICAgICAgICAgICBteSBAQWN0aW9uSXRlbXM7CiAgICAgICAgICAgIGlm
ICggcmVmICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6UHJlTWVudU1vZHVs
ZScpIGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIG15ICVNZW51cyA9ICV7ICRDb25maWdP
YmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6UHJlTWVudU1vZHVsZScpIH07CiAgICAgICAg
ICAgICAgICBteSBASXRlbXM7CiAgICAgICAgICAgICAgICBNRU5VOgogICAgICAgICAgICAgICAg
Zm9yIG15ICRNZW51ICggc29ydCBrZXlzICVNZW51cyApIHsKCiAgICAgICAgICAgICAgICAgICAg
IyBsb2FkIG1vZHVsZQogICAgICAgICAgICAgICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQo
J0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoICRNZW51c3skTWVudX0tPntNb2R1bGV9
ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRh
bEVycm9yKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG15ICRP
YmplY3QgPSAkTWVudXN7JE1lbnV9LT57TW9kdWxlfS0+bmV3KAogICAgICAgICAgICAgICAgICAg
ICAgICAleyRTZWxmfSwKICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJEFydGlj
bGV7VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAg
ICMgcnVuIG1vZHVsZQogICAgICAgICAgICAgICAgICAgIG15ICRJdGVtID0gJE9iamVjdC0+UnVu
KAogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAg
IFRpY2tldCA9PiBcJUFydGljbGUsCiAgICAgICAgICAgICAgICAgICAgICAgIEFDTCAgICA9PiBc
JUFjbEFjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnID0+ICRNZW51c3skTWVu
dX0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IE1FTlUg
aWYgISRJdGVtOwogICAgICAgICAgICAgICAgICAgIG5leHQgTUVOVSBpZiByZWYgJEl0ZW0gbmUg
J0hBU0gnOwoKICAgICAgICAgICAgICAgICAgICAjIGFkZCBzZXNzaW9uIGlkIGlmIG5lZWRlZAog
ICAgICAgICAgICAgICAgICAgIGlmICggISRMYXlvdXRPYmplY3QtPntTZXNzaW9uSURDb29raWV9
ICYmICRJdGVtLT57TGlua30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRJdGVtLT57TGlu
a30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC49ICc7JwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57U2Vzc2lvbk5hbWV9IC4gJz0nCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntTZXNzaW9uSUR9OwogICAgICAgICAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUgaWQKICAgICAgICAgICAg
ICAgICAgICAkSXRlbS0+e0lEfSA9ICRJdGVtLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAg
JEl0ZW0tPntJRH0gPX4gcy8oXHN8Jnw7KS8vaWc7CgogICAgICAgICAgICAgICAgICAgIG15ICRP
dXRwdXQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkSXRlbS0+e0Jsb2NrfSApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOYW1lID0+ICRJdGVtLT57QmxvY2t9LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRGF0YSA9PiAkSXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRUaWNrZXRPdmVydmlld1Nt
YWxsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkSXRlbSwK
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRPdXRwdXQgPSAnPGxp
IGlkPSInCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRJdGVtLT57SUR9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAuICciPjxhIGhyZWY9IiMiIHRpdGxlPSInCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5z
bGF0ZSggJEl0ZW0tPntEZXNjcmlwdGlvbn0gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
LiAnIj4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5n
dWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEl0ZW0tPntOYW1lfSApCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAuICc8L2E+PC9saT4nOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAg
ICAgICAgICAgICAgJE91dHB1dCA9fiBzL1xuKy8vZzsKICAgICAgICAgICAgICAgICAgICAkT3V0
cHV0ID1+IHMvXHMrLyAvZzsKICAgICAgICAgICAgICAgICAgICAkT3V0cHV0ID1+IHMvPFwhLS0u
Kz8tLT4vL2c7CgogICAgICAgICAgICAgICAgICAgIHB1c2ggQEFjdGlvbkl0ZW1zLCB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIEhUTUwgICAgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgIElEICAgICAgICAgID0+ICRJdGVtLT57SUR9LAogICAgICAgICAgICAgICAgICAg
ICAgICBMaW5rICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57QmFzZWxpbmt9IC4gJEl0ZW0tPntM
aW5rfSwKICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0ICAgICAgPT4gJEl0ZW0tPntUYXJn
ZXR9LAogICAgICAgICAgICAgICAgICAgICAgICBQb3B1cFR5cGUgICA9PiAkSXRlbS0+e1BvcHVw
VHlwZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICRJdGVtLT57RGVz
Y3JpcHRpb259LAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgJEFy
dGljbGV7QWN0aW9uSXRlbXN9ID0gXEBBY3Rpb25JdGVtczsKICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgfQogICAgICAgICAgICBwdXNoIEBBcnRpY2xlQm94LCBcJUFydGljbGU7CiAgICAg
ICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgc3lzY29uZmlnIGlzIGEgaGFzaCByZWZlcmVuY2UK
ICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfSApICkg
ewoKICAgICAgICAjIGNoZWNrIGlmIGNvbHVtbiBpcyByZWFsbHkgZmlsdGVyYWJsZQogICAgICAg
IENPTFVNTk5BTUU6CiAgICAgICAgZm9yIG15ICRDb2x1bW5OYW1lICggQHsgJFNlbGYtPntDb2x1
bW5zRW5hYmxlZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICFncmVwIHsg
JF8gZXEgJENvbHVtbk5hbWUgfSBAeyAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfSB9OwogICAgICAg
ICAgICBuZXh0IENPTFVNTk5BTUUgaWYgISRTZWxmLT57QXZhaWxhYmxlRmlsdGVyYWJsZUNvbHVt
bnN9LT57JENvbHVtbk5hbWV9OwogICAgICAgICAgICAkU2VsZi0+e1ZhbGlkRmlsdGVyYWJsZUNv
bHVtbnN9LT57JENvbHVtbk5hbWV9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbHVt
blZhbHVlcyA9ICRTZWxmLT5fR2V0Q29sdW1uVmFsdWVzKAogICAgICAgIE9yaWdpbmFsVGlja2V0
SURzID0+ICRQYXJhbXtPcmlnaW5hbFRpY2tldElEc30sCiAgICApOwoKICAgICRMYXlvdXRPYmpl
Y3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50Q29udGVudCcsCiAgICAgICAgRGF0
YSA9PiBcJVBhcmFtLAogICAgKTsKCiAgICAjIGFycmF5IHRvIHNhdmUgdGhlIGNvbHVtbiBuYW1l
cyB0byBkbyB0aGUgcXVlcnkKICAgIG15IEBDb2wgPSBAeyAkU2VsZi0+e0NvbHVtbnNFbmFibGVk
fSB9OwoKICAgICMgZGVmaW5lIHNwZWNpYWwgdGlja2V0IGNvbHVtbnMKICAgIG15ICVTcGVjaWFs
Q29sdW1ucyA9ICgKICAgICAgICBUaWNrZXROdW1iZXIgPT4gMSwKICAgICAgICBPd25lciAgICAg
ICAgPT4gMSwKICAgICAgICBDdXN0b21lcklEICAgPT4gMSwKICAgICAgICBUaXRsZSAgICAgICAg
PT4gMSwKICAgICk7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdAogICAg
bXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6
OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgbXkgJFRpY2tldERhdGEgPSBz
Y2FsYXIgQEFydGljbGVCb3g7CiAgICBpZiAoJFRpY2tldERhdGEpIHsKCiAgICAgICAgJExheW91
dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ092ZXJ2aWV3VGFibGUnICk7CiAgICAgICAgJExheW91
dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ1RhYmxlSGVhZGVyJyApOwoKICAgICAgICBpZiAoJEJ1
bGtGZWF0dXJlKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAg
ICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3SGVhZGVyJywKICAgICAgICAgICAgKTsKICAg
ICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdC
dWxrTmF2QmFyJywKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAg
KTsKICAgICAgICB9CgogICAgICAgICMgbWV0YSBpdGVtcwogICAgICAgIG15IEBUaWNrZXRNZXRh
SXRlbXMgPSAkTGF5b3V0T2JqZWN0LT5UaWNrZXRNZXRhSXRlbXNDb3VudCgpOwogICAgICAgIGZv
ciBteSAkSXRlbSAoQFRpY2tldE1ldGFJdGVtcykgewoKICAgICAgICAgICAgJExheW91dE9iamVj
dC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdIZWFkZXIn
LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJENTUyA9ICcnOwogICAgICAgICAgICBt
eSAkT3JkZXJCeTsKICAgICAgICAgICAgbXkgJExpbms7CiAgICAgICAgICAgIG15ICRUaXRsZSA9
ICRJdGVtOwoKICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSAmJiAoICRQYXJhbXtTb3J0
Qnl9IGVxICRJdGVtICkgKSB7CiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtPcmRlckJ5fSAm
JiAoICRQYXJhbXtPcmRlckJ5fSBlcSAnVXAnICkgKSB7CiAgICAgICAgICAgICAgICAgICAgJE9y
ZGVyQnkgPSAnRG93bic7CiAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRp
bmdMYXJnZSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdVcCc7CiAgICAgICAgICAgICAgICAgICAgJENTUyAu
PSAnIFNvcnREZXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgICMgc2V0IHRpdGxlIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNj
CiAgICAgICAgICAgICAgICAgICAgPSAkT3JkZXJCeSBlcSAnRG93bicgPyBUcmFuc2xhdGFibGUo
J3NvcnRlZCBkZXNjZW5kaW5nJykgOiBUcmFuc2xhdGFibGUoJ3NvcnRlZCBhc2NlbmRpbmcnKTsK
ICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmpl
Y3R9LT5UcmFuc2xhdGUoJFRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAkVGl0bGUgLj0gJywg
JyAuICRUaXRsZURlc2M7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRMYXlvdXRPYmplY3Qt
PkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZycs
CiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDU1MgPT4gJENT
UywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICRJ
dGVtIGVxICdOZXcgQXJ0aWNsZScgKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5C
bG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VGbGFn
RW1wdHknLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAg
ICAgICBOYW1lID0+ICRJdGVtLAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAg
JExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZp
ZXdOYXZCYXJQYWdlRmxhZ0xpbmsnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAg
ICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUg
ICAgPT4gJEl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgPT4gJENTUywKICAg
ICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAg
ICAgICAgICAgVGl0bGUgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAg
ICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICBteSAkQ1NTID0g
Jyc7CiAgICAgICAgbXkgJE9yZGVyQnk7CgogICAgICAgICMgc2hvdyBzcGVjaWFsIHRpY2tldCBj
b2x1bW5zLCBpZiBuZWVkZWQKICAgICAgICBDT0xVTU46CiAgICAgICAgZm9yIG15ICRDb2x1bW4g
KEBDb2wpIHsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAg
ICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3SGVhZGVyJywKICAgICAgICAgICAgKTsKCiAgICAg
ICAgICAgICRDU1MgPSAkQ29sdW1uOwogICAgICAgICAgICBteSAkVGl0bGUgPSAkTGF5b3V0T2Jq
ZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENvbHVtbik7CgogICAgICAgICAgICAj
IG91dHB1dCBvdmVyYWxsIGJsb2NrIHNvIFRpY2tldE51bWJlciBhcyB3ZWxsIGFzIG90aGVyIGNv
bHVtbnMgY2FuIGJlIG9yZGVyZWQKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAg
ICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VUaWNrZXRIZWFkZXInLAog
ICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlm
ICggJFNwZWNpYWxDb2x1bW5zeyRDb2x1bW59ICkgewoKICAgICAgICAgICAgICAgIGlmICggJFBh
cmFte1NvcnRCeX0gJiYgKCAkUGFyYW17U29ydEJ5fSBlcSAkQ29sdW1uICkgKSB7CiAgICAgICAg
ICAgICAgICAgICAgaWYgKCAkUGFyYW17T3JkZXJCeX0gJiYgKCAkUGFyYW17T3JkZXJCeX0gZXEg
J1VwJyApICkgewogICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdEb3duJzsKICAg
ICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRpbmdMYXJnZSc7CiAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICAkT3JkZXJCeSA9ICdVcCc7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1Mg
Lj0gJyBTb3J0RGVzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAg
ICAgICAgICAgICAgICMgYWRkIHRpdGxlIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICAgICAgICAg
bXkgJFRpdGxlRGVzYwogICAgICAgICAgICAgICAgICAgICAgICA9ICRPcmRlckJ5IGVxICdEb3du
JyA/IFRyYW5zbGF0YWJsZSgnc29ydGVkIGFzY2VuZGluZycpIDogVHJhbnNsYXRhYmxlKCdzb3J0
ZWQgZGVzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSAkTGF5b3V0
T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFRpdGxlRGVzYyk7CiAgICAgICAg
ICAgICAgICAgICAgJFRpdGxlIC49ICcsICcgLiAkVGl0bGVEZXNjOwogICAgICAgICAgICAgICAg
fQoKICAgICAgICAgICAgICAgICMgdHJhbnNsYXRlIHRoZSBjb2x1bW4gbmFtZSB0byB3cml0ZSBp
dCBpbiB0aGUgY3VycmVudCBsYW5ndWFnZQogICAgICAgICAgICAgICAgbXkgJFRyYW5zbGF0ZWRX
b3JkOwoKICAgICAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnVGl0bGUnICkgewoKICAgICAg
ICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VP
YmplY3R9LT5UcmFuc2xhdGUoJ0Zyb20nKSAuICcgLyAnOwoKICAgICAgICAgICAgICAgICAgICBp
ZiAoICRTZWxmLT57U21hbGxWaWV3Q29sdW1uSGVhZGVyfSBlcSAnTGFzdEN1c3RvbWVyU3ViamVj
dCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLj0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJh
bnNsYXRlKCdTdWJqZWN0Jyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgIGVsc2lmICggJFNlbGYtPntTbWFsbFZpZXdDb2x1bW5IZWFkZXJ9IGVxICdUaWNrZXRUaXRs
ZScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLj0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJh
bnNsYXRlKCdUaXRsZScpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29y
ZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsK
ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGUgICAgID0g
JFRyYW5zbGF0ZWRXb3JkOwogICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlRGVzYyA9IFRy
YW5zbGF0YWJsZSgnZmlsdGVyIG5vdCBhY3RpdmUnKTsKICAgICAgICAgICAgICAgIGlmICgKICAg
ICAgICAgICAgICAgICAgICAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9ICYmCiAgICAgICAgICAgICAg
ICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57
JENvbHVtbn0gfHwKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTdG9yZWRGaWx0ZXJz
fS0+eyAkQ29sdW1uIC4gJ0lEcycgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAg
ICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAn
IEZpbHRlckFjdGl2ZSc7CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9IFRy
YW5zbGF0YWJsZSgnZmlsdGVyIGFjdGl2ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgJEZpbHRlclRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0t
PlRyYW5zbGF0ZSgkRmlsdGVyVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRs
ZSAuPSAnLCAnIC4gJEZpbHRlclRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2Jq
ZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+CiAgICAgICAgICAgICAgICAg
ICAgICAgICRDb2x1bW4gZXEgJ1RpY2tldE51bWJlcicKICAgICAgICAgICAgICAgICAgICA/ICdP
dmVydmlld05hdkJhclBhZ2VUaWNrZXROdW1iZXInCiAgICAgICAgICAgICAgICAgICAgOiAnT3Zl
cnZpZXdOYXZCYXJQYWdlQ29sdW1uJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRl
ckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29s
dW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiB8fCAnJywKICAgICAgICAgICAgICAgICAgICAg
ICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUyB8fCAnJywKICAgICAgICAgICAgICAgICAg
ICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4s
CiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwK
ICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAg
ICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMgZmlsdGVyYWJsZSBhbmQgc29ydGFibGUKICAgICAgICAg
ICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1ZhbGlkRmlsdGVyYWJsZUNv
bHVtbnN9LT57JENvbHVtbn0KICAgICAgICAgICAgICAgICAgICAmJiAkU2VsZi0+e1ZhbGlkU29y
dGFibGVDb2x1bW5zfS0+eyRDb2x1bW59CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgIG15ICRDc3M7CiAgICAgICAgICAgICAgICAgICAg
aWYgKCAkQ29sdW1uIGVxICdDdXN0b21lcklEJyB8fCAkQ29sdW1uIGVxICdPd25lcicgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICRDc3MgLj0gJyBIaWRkZW4nOwogICAgICAgICAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIn
cyBodG1sIGNvZGUKICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRT
ZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1u
TmFtZSAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAg
ID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENv
bHVtblZhbHVlcy0+eyRDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZh
bHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn0gfHwgJycsCiAgICAgICAg
ICAgICAgICAgICAgICAgIENzcyAgICAgICAgICAgPT4gJENzcywKICAgICAgICAgICAgICAgICAg
ICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAg
ICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyTGlu
aycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAg
ICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAg
ICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5O
YW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1M
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9y
ZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9
PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAg
ICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAg
ICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdDdXN0b21l
cklEJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGlu
a0N1c3RvbWVySURTZWFyY2gnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluUXVlcnlMZW5ndGggICAgICA9PiAy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5RGVsYXkgICAgICAgICAgPT4g
MTAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFJlc3VsdHNEaXNwbGF5ZWQg
PT4gMjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAg
ICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAo
ICRDb2x1bW4gZXEgJ093bmVyJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRP
YmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVu
dExhcmdlVGlja2V0R2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtVc2VyU2VhcmNoJywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1pblF1ZXJ5TGVuZ3RoICAgICAgPT4gMiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBxdWVyeURlbGF5ICAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXhSZXN1bHRzRGlzcGxheWVkID0+IDIwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNv
bHVtbiBpcyBmaWx0ZXJhYmxlIGFuZCBzb3J0YWJsZQogICAgICAgICAgICAgICAgZWxzaWYgKCAk
U2VsZi0+e1ZhbGlkRmlsdGVyYWJsZUNvbHVtbnN9LT57JENvbHVtbn0gKSB7CgogICAgICAgICAg
ICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAg
ICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1
bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJENvbHVt
biwKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkQ29sdW1uLAogICAg
ICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskQ29s
dW1ufSwKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0
Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICk7Cgog
ICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAg
ICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXInLAogICAgICAg
ICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQ
YXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+
ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAg
ICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0
ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDb2x1bW5GaWx0ZXJTdHJnICAgICA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRl
clRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7
CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlz
IHNvcnRhYmxlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRTb3J0YWJsZUNv
bHVtbnN9LT57JENvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+
QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFn
ZUNvbHVtbkxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
bHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJC
eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRU
aXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4g
J092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkVtcHR5JywKICAgICAgICAgICAgICAgICAgICAgICAg
RGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVk
V29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAg
ICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAg
ICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPTFVN
TjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gIX4gbXtcQSBEeW5h
bWljRmllbGRffXhtcyApIHsKCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9ICYm
ICggJFBhcmFte1NvcnRCeX0gZXEgJENvbHVtbiApICkgewogICAgICAgICAgICAgICAgICAgIGlm
ICggJFBhcmFte09yZGVyQnl9ICYmICggJFBhcmFte09yZGVyQnl9IGVxICdVcCcgKSApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAnRG93bic7CiAgICAgICAgICAgICAgICAg
ICAgICAgICRDU1MgLj0gJyBTb3J0QXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE9y
ZGVyQnkgPSAnVXAnOwogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2Nl
bmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAj
IGFkZCB0aXRsZSBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICAgICAgIG15ICRUaXRsZURlc2MK
ICAgICAgICAgICAgICAgICAgICAgICAgPSAkT3JkZXJCeSBlcSAnRG93bicgPyBUcmFuc2xhdGFi
bGUoJ3NvcnRlZCBhc2NlbmRpbmcnKSA6IFRyYW5zbGF0YWJsZSgnc29ydGVkIGRlc2NlbmRpbmcn
KTsKICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1
YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICRU
aXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg
ICAgICAjIHRyYW5zbGF0ZSB0aGUgY29sdW1uIG5hbWUgdG8gd3JpdGUgaXQgaW4gdGhlIGN1cnJl
bnQgbGFuZ3VhZ2UKICAgICAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAg
ICAgICAgIGlmICggJENvbHVtbiBlcSAnRXNjYWxhdGlvblRpbWUnICkgewogICAgICAgICAgICAg
ICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0t
PlRyYW5zbGF0ZSgnU2VydmljZSBUaW1lJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0VzY2FsYXRpb25SZXNwb25zZVRpbWUnICkgewogICAg
ICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFn
ZU9iamVjdH0tPlRyYW5zbGF0ZSgnRmlyc3QgUmVzcG9uc2UgVGltZScpOwogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdFc2NhbGF0aW9uU29sdXRp
b25UaW1lJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0
T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1NvbHV0aW9uIFRpbWUnKTsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnRXNjYWxh
dGlvblVwZGF0ZVRpbWUnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9
ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnVXBkYXRlIFRpbWUn
KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAn
UGVuZGluZ1RpbWUnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRM
YXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUGVuZGluZyB0aWxsJyk7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5U
cmFuc2xhdGUoJENvbHVtbik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkg
JEZpbHRlclRpdGxlICAgICA9ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgICAgIG15ICRG
aWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBub3QgYWN0aXZlJyk7CiAgICAg
ICAgICAgICAgICBpZiAoICRTZWxmLT57U3RvcmVkRmlsdGVyc30gJiYgJFNlbGYtPntTdG9yZWRG
aWx0ZXJzfS0+eyAkQ29sdW1uIC4gJ0lEcycgfSApIHsKICAgICAgICAgICAgICAgICAgICAkQ1NT
IC49ICcgRmlsdGVyQWN0aXZlJzsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNj
ID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2Jq
ZWN0fS0+VHJhbnNsYXRlKCRGaWx0ZXJUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgJEZpbHRl
clRpdGxlIC49ICcsICcgLiAkRmlsdGVyVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICRMYXlv
dXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2
QmFyUGFnZUNvbHVtbicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAg
ICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAg
ICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5z
bGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAg
fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1u
IGlzIGZpbHRlcmFibGUgYW5kIHNvcnRhYmxlCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAg
ICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRlcmFibGVDb2x1bW5zfS0+eyRDb2x1bW59CiAg
ICAgICAgICAgICAgICAgICAgJiYgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnskQ29s
dW1ufQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgICBteSAkQ3NzOwogICAgICAgICAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnUmVz
cG9uc2libGUnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ3NzIC49ICcgSGlkZGVuJzsK
ICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8g
c2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVt
bkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAg
ICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgTGFiZWwgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1
bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskQ29sdW1ufSwKICAgICAgICAgICAgICAgICAg
ICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59
IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDc3MgICAgICAgICAgID0+ICRDc3MsCiAg
ICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+
QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFn
ZUNvbHVtbkZpbHRlckxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1
bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnICAgICA9PiAk
Q29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAg
ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUg
ICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmls
dGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAg
ICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggJENv
bHVtbiBlcSAnUmVzcG9uc2libGUnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91
dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250
ZW50TGFyZ2VUaWNrZXRHZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGlua1VzZXJTZWFyY2gnLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWluUXVlcnlMZW5ndGggICAgICA9PiAyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHF1ZXJ5RGVsYXkgICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1heFJlc3VsdHNEaXNwbGF5ZWQgPT4gMjAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAg
ICAgICAgIH0KCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYg
Y29sdW1uIGlzIGp1c3QgZmlsdGVyYWJsZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+
e1ZhbGlkRmlsdGVyYWJsZUNvbHVtbnN9LT57JENvbHVtbn0gKSB7CgogICAgICAgICAgICAgICAg
ICAgIG15ICRDc3M7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdDdXN0b21l
clVzZXJJRCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDc3MgPSAnSGlkZGVuJzsKICAg
ICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2
ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZp
bHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAg
ICAgICAgIENvbHVtbk5hbWUgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAg
TGFiZWwgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5W
YWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskQ29sdW1ufSwKICAgICAgICAgICAgICAgICAgICAg
ICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59IHx8
ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDc3MgICAgICAgICAgID0+ICRDc3MsCiAgICAg
ICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9j
aygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29s
dW1uRmlsdGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1
bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZp
bHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAg
ICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAg
ICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxl
ICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAn
Q3VzdG9tZXJVc2VySUQnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVj
dC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnRMYXJnZVRpY2tldEdlbmVyaWNIZWFkZXJDb2x1
bW5GaWx0ZXJMaW5rQ3VzdG9tZXJVc2VyU2VhcmNoJywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pblF1ZXJ5TGVu
Z3RoICAgICAgPT4gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeURlbGF5
ICAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhSZXN1
bHRzRGlzcGxheWVkID0+IDIwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICB9CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIHNvcnRhYmxlCiAgICAg
ICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57JENvbHVt
bn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAg
ICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkxpbmsnLAog
ICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAg
ICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAg
ICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRy
YW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVj
dC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFy
UGFnZUNvbHVtbkVtcHR5JywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRp
dGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2hvdyB0aGUgREZz
CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25m
aWc7CiAgICAgICAgICAgICAgICBteSAkREZDb2x1bW4gPSAkQ29sdW1uOwogICAgICAgICAgICAg
ICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgICAgIERZTkFN
SUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5
bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBp
ZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0
IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAg
ICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAg
ICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICBuZXh0IENPTFVNTiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZp
Zyk7CgogICAgICAgICAgICAgICAgbXkgJExhYmVsID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xh
YmVsfTsKICAgICAgICAgICAgICAgICRUaXRsZSA9ICRMYWJlbDsKICAgICAgICAgICAgICAgIG15
ICRGaWx0ZXJUaXRsZSA9ICRMYWJlbDsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCBzb3J0
YWJsZSBjb25kaXRpb24KICAgICAgICAgICAgICAgIG15ICRJc1NvcnRhYmxlID0gJER5bmFtaWNG
aWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgICAgIER5bmFt
aWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAg
IEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNTb3J0YWJsZScsCiAgICAgICAgICAgICAgICApOwoK
ICAgICAgICAgICAgICAgIGlmICgkSXNTb3J0YWJsZSkgewogICAgICAgICAgICAgICAgICAgIG15
ICRDU1MgPSAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAg
ICAgICAgICAgICAgICAgICAgbXkgJE9yZGVyQnk7CiAgICAgICAgICAgICAgICAgICAgaWYgKAog
ICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17U29ydEJ5fQogICAgICAgICAgICAgICAgICAg
ICAgICAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICggJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNG
aWVsZENvbmZpZy0+e05hbWV9ICkgKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtPcmRlckJ5
fSAmJiAoICRQYXJhbXtPcmRlckJ5fSBlcSAnVXAnICkgKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkT3JkZXJCeSA9ICdEb3duJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRD
U1MgLj0gJyBTb3J0QXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
JE9yZGVyQnkgPSAnVXAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNv
cnREZXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAg
ICAgICAgICAgICAgICAjIGFkZCB0aXRsZSBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICAgICAg
ICAgICBteSAkVGl0bGVEZXNjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICRPcmRlckJ5
IGVxICdEb3duJyA/IFRyYW5zbGF0YWJsZSgnc29ydGVkIGFzY2VuZGluZycpIDogVHJhbnNsYXRh
YmxlKCdzb3J0ZWQgZGVzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVE
ZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRUaXRsZURl
c2MpOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGUgLj0gJywgJyAuICRUaXRsZURlc2M7
CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0
bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgbm90IGFjdGl2ZScpOwogICAgICAgICAgICAg
ICAgICAgIGlmICggJFNlbGYtPntTdG9yZWRGaWx0ZXJzfSAmJiAkU2VsZi0+e1N0b3JlZEZpbHRl
cnN9LT57JENvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBGaWx0
ZXJBY3RpdmUnOwogICAgICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gVHJh
bnNsYXRhYmxlKCdmaWx0ZXIgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VP
YmplY3R9LT5UcmFuc2xhdGUoJEZpbHRlclRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAgICAg
JEZpbHRlclRpdGxlIC49ICcsICcgLiAkRmlsdGVyVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAg
ICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9
PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICAg
ICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1MgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAg
fSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1p
Y0ZpZWxkTmFtZSA9ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1l
fTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdGVyYWJsZUNvbHVt
bnN9LT57JER5bmFtaWNGaWVsZE5hbWV9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB2
YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAg
ICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICREeW5hbWljRmll
bGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkTGFi
ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5W
YWx1ZXMtPnskRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
ZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JER5bmFtaWNGaWVsZE5h
bWV9IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAg
ICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
YW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVTb3J0YWJsZScs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3Jk
ZXJCeSAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnID0+ICRDb2x1bW5G
aWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAg
ICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAg
ICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVy
VGl0bGUgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmpl
Y3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdO
YXZCYXJQYWdlRHluYW1pY0ZpZWxkU29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJE9yZGVyQnks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFi
ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAk
RHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAg
ICAgICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3Rv
bWl6YXRpb24KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAg
ICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxk
XycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAg
IERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIH0s
CiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+
e1ZhbGlkRmlsdGVyYWJsZUNvbHVtbnN9LT57JER5bmFtaWNGaWVsZE5hbWV9ICkgewoKICAgICAg
ICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNv
ZGUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+
X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5O
YW1lICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
TGFiZWwgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1
bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0
ZXJ9LT57JER5bmFtaWNGaWVsZE5hbWV9IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAp
OwoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmll
bGQnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmln
LT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdfRmlsdHJhYmxlU29y
dGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE9yZGVyQnkgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFt
ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyA9PiAk
Q29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5
ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRp
dGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3Qt
PkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZC
YXJQYWdlRHluYW1pY0ZpZWxkXycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRE
eW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC4gJ19Tb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25m
aWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAg
ICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAg
ICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmll
bGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9Owog
ICAgICAgICAgICAgICAgICAgIG15ICRDU1MgICAgICAgICAgICAgID0gJER5bmFtaWNGaWVsZE5h
bWU7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAg
ICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQnLAog
ICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyA9PiAkQ1NTLAogICAg
ICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAg
ICAgICAgICAgIGlmICggJFNlbGYtPntWYWxpZEZpbHRlcmFibGVDb2x1bW5zfS0+eyREeW5hbWlj
RmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2
ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb2x1
bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JER5bmFt
aWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9
PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyREeW5hbWljRmllbGROYW1lfSB8fCAnJywKICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRP
YmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZp
ZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlTm90U29ydGFibGUnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAg
ICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVs
ZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICA9PiAkRmlsdGVy
VGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAg
ICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRO
b3RTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTGFiZWwgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRpdGxlID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg
ICAgICAjIGV4YW1wbGUgb2YgZHluYW1pYyBmaWVsZHMgb3JkZXIgY3VzdG9taXphdGlvbgogICAg
ICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAg
ICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfJyAuICREeW5hbWlj
RmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAg
IH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2Vs
Zi0+e1ZhbGlkRmlsdGVyYWJsZUNvbHVtbnN9LT57JER5bmFtaWNGaWVsZE5hbWV9ICkgewoKICAg
ICAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1M
IGNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2Vs
Zi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1
bW5OYW1lICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTGFiZWwgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
b2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5G
aWx0ZXJ9LT57JER5bmFtaWNGaWVsZE5hbWV9IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAg
ICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWlj
RmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENv
bmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnX0ZpbHRyYWJs
ZU5vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntO
YW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnID0+
ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxl
ICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJs
b2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQ
YWdlRHluYW1pY0ZpZWxkXycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5h
bWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4g
J19Ob3RTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTGFiZWwgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRpdGxlID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAg
ICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJs
b2NrKCBOYW1lID0+ICdUYWJsZUJvZHknICk7CgogICAgfQogICAgZWxzZSB7CiAgICAgICAgJExh
eW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ05vVGlja2V0Rm91bmQnICk7CiAgICB9CgogICAg
Zm9yIG15ICRBcnRpY2xlUmVmIChAQXJ0aWNsZUJveCkgewoKICAgICAgICAjIGdldCBsYXN0IGN1
c3RvbWVyIGFydGljbGUKICAgICAgICBteSAlQXJ0aWNsZSA9ICV7JEFydGljbGVSZWZ9OwoKICAg
ICAgICAjIGVzY2FsYXRpb24gaHVtYW4gdGltZXMKICAgICAgICBpZiAoICRBcnRpY2xle0VzY2Fs
YXRpb25UaW1lfSApIHsKICAgICAgICAgICAgJEFydGljbGV7RXNjYWxhdGlvblRpbWVIdW1hbn0g
PSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckFnZUluSG91cnMoCiAgICAgICAgICAgICAgICBBZ2Ug
ICA9PiAkQXJ0aWNsZXtFc2NhbGF0aW9uVGltZX0sCiAgICAgICAgICAgICAgICBTcGFjZSA9PiAn
ICcsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRBcnRpY2xle0VzY2FsYXRpb25UaW1lV29y
a2luZ1RpbWV9ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJBZ2VJbkhvdXJzKAogICAgICAgICAg
ICAgICAgQWdlICAgPT4gJEFydGljbGV7RXNjYWxhdGlvblRpbWVXb3JraW5nVGltZX0sCiAgICAg
ICAgICAgICAgICBTcGFjZSA9PiAnICcsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAg
ICAjIGN1c3RvbWVyIGluZm8KICAgICAgICBteSAlQ3VzdG9tZXJJbmZvOwogICAgICAgIGlmICgg
JFBhcmFte0NvbmZpZ30tPntDdXN0b21lckluZm99ICkgewogICAgICAgICAgICBpZiAoICRBcnRp
Y2xle0N1c3RvbWVyVXNlcklEfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBjdXN0b21lciB1
c2VyIG9iamVjdAogICAgICAgICAgICAgICAgbXkgJEN1c3RvbWVyVXNlck9iamVjdCA9ICRLZXJu
ZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKTsKCiAgICAgICAgICAg
ICAgICAkQXJ0aWNsZXtDdXN0b21lck5hbWV9ID0gJEN1c3RvbWVyVXNlck9iamVjdC0+Q3VzdG9t
ZXJOYW1lKAogICAgICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkQXJ0aWNsZXtDdXN0b21l
clVzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICVDdXN0b21lcklu
Zm8gPSAkQ3VzdG9tZXJVc2VyT2JqZWN0LT5DdXN0b21lclVzZXJEYXRhR2V0KAogICAgICAgICAg
ICAgICAgICAgIFVzZXIgPT4gJEFydGljbGV7Q3VzdG9tZXJVc2VySUR9LAogICAgICAgICAgICAg
ICAgKTsKCiAgICAgICAgICAgICAgICBJTkZPS0VZOgogICAgICAgICAgICAgICAgZm9yIG15ICRJ
bmZvS2V5ICggc29ydCBrZXlzICVDdXN0b21lckluZm8gKSB7CiAgICAgICAgICAgICAgICAgICAg
bmV4dCBJTkZPS0VZIGlmICRJbmZvS2V5ID1+IG17XEFDdXN0b21lcn14bXM7CgogICAgICAgICAg
ICAgICAgICAgICRDdXN0b21lckluZm97ICdDdXN0b21lcicgLiAkSW5mb0tleSB9ID0gJEN1c3Rv
bWVySW5mb3skSW5mb0tleX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAg
ICB9CgogICAgICAgICMgZ2V0IHVzZXIgb2JqZWN0CiAgICAgICAgbXkgJFVzZXJPYmplY3QgPSAk
S2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICAgICAjIHVzZXIg
aW5mbwogICAgICAgIG15ICVVc2VySW5mbyA9ICRVc2VyT2JqZWN0LT5HZXRVc2VyRGF0YSgKICAg
ICAgICAgICAgVXNlcklEID0+ICRBcnRpY2xle093bmVySUR9LAogICAgICAgICk7CgogICAgICAg
ICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnLAogICAg
ICAgICAgICBEYXRhID0+IHsgJUFydGljbGUsICVVc2VySW5mbyB9LAogICAgICAgICk7CgogICAg
ICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgICAgICBpZiAoJEJ1bGtG
ZWF0dXJlKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAg
ICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3Um93JywKICAgICAgICAgICAgKTsKICAgICAgICAg
ICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+IFRyYW5zbGF0
YWJsZSgnQnVsaycpLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7ICVBcnRpY2xlLCAlVXNlcklu
Zm8gfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2hvdyB0aWNrZXQgZmxh
Z3MKICAgICAgICBteSBAVGlja2V0TWV0YUl0ZW1zID0gJExheW91dE9iamVjdC0+VGlja2V0TWV0
YUl0ZW1zKAogICAgICAgICAgICBUaWNrZXQgPT4gXCVBcnRpY2xlLAogICAgICAgICk7CiAgICAg
ICAgZm9yIG15ICRJdGVtIChAVGlja2V0TWV0YUl0ZW1zKSB7CiAgICAgICAgICAgICRMYXlvdXRP
YmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3Um93
JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAg
ICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VUaWNrZXRHZW5lcmljUm93TWV0YScsCiAg
ICAgICAgICAgICAgICBEYXRhID0+ICRJdGVtLAogICAgICAgICAgICApOwogICAgICAgICAgICBp
ZiAoJEl0ZW0pIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAg
ICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZVRpY2tldEdlbmVyaWNSb3dNZXRhSW1h
Z2UnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJEl0ZW0sCiAgICAgICAgICAgICAgICAp
OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHNhdmUgY29sdW1uIGNvbnRlbnQK
ICAgICAgICBteSAkRGF0YVZhbHVlOwoKICAgICAgICAjIHNob3cgYWxsIG5lZWRlZCBjb2x1bW5z
CiAgICAgICAgVElDS0VUQ09MVU1OOgogICAgICAgIGZvciBteSAkVGlja2V0Q29sdW1uIChAQ29s
KSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFt
ZSA9PiAnR2VuZXJhbE92ZXJ2aWV3Um93JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYg
KCAkVGlja2V0Q29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CiAgICAgICAgICAg
ICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdS
ZWNvcmRUaWNrZXREYXRhJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAg
ICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICRTcGVjaWFsQ29sdW1uc3skVGlja2V0
Q29sdW1ufSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRUaWNrZXRDb2x1bW4gZXEgJ1Rp
dGxlJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgbGFzdCBjdXN0b21l
ciBzdWJqZWN0IG9yIHRpY2tldCB0aXRsZSBzaG91bGQgYmUgc2hvd24KICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCAkU2VsZi0+e1NtYWxsVmlld0NvbHVtbkhlYWRlcn0gZXEgJ0xhc3RDdXN0
b21lclN1YmplY3QnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVj
dC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3Jk
TGFzdEN1c3RvbWVyU3ViamVjdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0
YSA9PiB7ICVBcnRpY2xlLCAlVXNlckluZm8gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxz
aWYgKCAkU2VsZi0+e1NtYWxsVmlld0NvbHVtbkhlYWRlcn0gZXEgJ1RpY2tldFRpdGxlJyApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZFRpY2tldFRpdGxlJywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsgJUFydGljbGUsICVVc2VySW5m
byB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJFRpY2tldENvbHVtbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERhdGEgPT4geyAlQXJ0aWNsZSwgJVVzZXJJbmZvIH0sCiAgICAg
ICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgIG5leHQgVElDS0VUQ09MVU1OOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgICMgZXNjYWxhdGlvbiBjb2x1bW4KICAgICAgICAgICAgICAgIG15ICVFc2NhbGF0aW9uRGF0
YTsKICAgICAgICAgICAgICAgIGlmICggJFRpY2tldENvbHVtbiBlcSAnRXNjYWxhdGlvblRpbWUn
ICkgewogICAgICAgICAgICAgICAgICAgICRFc2NhbGF0aW9uRGF0YXtFc2NhbGF0aW9uVGltZX0g
ICAgICAgICAgICA9ICRBcnRpY2xle0VzY2FsYXRpb25UaW1lfTsKICAgICAgICAgICAgICAgICAg
ICAkRXNjYWxhdGlvbkRhdGF7RXNjYWxhdGlvbkRlc3RpbmF0aW9uRGF0ZX0gPSAkQXJ0aWNsZXtF
c2NhbGF0aW9uRGVzdGluYXRpb25EYXRlfTsKCiAgICAgICAgICAgICAgICAgICAgJEVzY2FsYXRp
b25EYXRhe0VzY2FsYXRpb25UaW1lSHVtYW59ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJBZ2VJ
bkhvdXJzKAogICAgICAgICAgICAgICAgICAgICAgICBBZ2UgICA9PiAkRXNjYWxhdGlvbkRhdGF7
RXNjYWxhdGlvblRpbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBTcGFjZSA9PiAnICcsCiAg
ICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkRXNjYWxhdGlvbkRhdGF7
RXNjYWxhdGlvblRpbWVXb3JraW5nVGltZX0gPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckFnZUlu
SG91cnMoCiAgICAgICAgICAgICAgICAgICAgICAgIEFnZSAgID0+ICRFc2NhbGF0aW9uRGF0YXtF
c2NhbGF0aW9uVGltZVdvcmtpbmdUaW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgU3BhY2Ug
PT4gJyAnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgaWYgKAog
ICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkICRBcnRpY2xle0VzY2FsYXRpb25UaW1lfQog
ICAgICAgICAgICAgICAgICAgICAgICAmJiAkQXJ0aWNsZXtFc2NhbGF0aW9uVGltZX0gPCA2MCAq
IDYwICogMQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICAgICAkRXNjYWxhdGlvbkRhdGF7RXNjYWxhdGlvbkNsYXNzfSA9
ICdXYXJuaW5nJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJExh
eW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29y
ZEVzY2FsYXRpb25UaW1lJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7JUVzY2Fs
YXRpb25EYXRhfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIG5l
eHQgVElDS0VUQ09MVU1OOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRC
bG9ja1R5cGUgPSAnJzsKICAgICAgICAgICAgICAgIG15ICRDU1NDbGFzcyAgPSAnJzsKICAgICAg
ICAgICAgICAgIGlmICggJFRpY2tldENvbHVtbiBlcSAnRXNjYWxhdGlvblNvbHV0aW9uVGltZScg
KSB7CiAgICAgICAgICAgICAgICAgICAgJEJsb2NrVHlwZSA9ICdFc2NhbGF0aW9uJzsKICAgICAg
ICAgICAgICAgICAgICAkRGF0YVZhbHVlID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJBZ2VJbkhv
dXJzKAogICAgICAgICAgICAgICAgICAgICAgICBBZ2UgPT4gJEFydGljbGV7U29sdXRpb25UaW1l
fSB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgICBTcGFjZSA9PiAnICcsCiAgICAgICAgICAg
ICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQgJEFydGljbGV7U29s
dXRpb25UaW1lfSAmJiAkQXJ0aWNsZXtTb2x1dGlvblRpbWV9IDwgNjAgKiA2MCAqIDEgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICRDU1NDbGFzcyA9ICdXYXJuaW5nJzsKICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRUaWNr
ZXRDb2x1bW4gZXEgJ0VzY2FsYXRpb25SZXNwb25zZVRpbWUnICkgewogICAgICAgICAgICAgICAg
ICAgICRCbG9ja1R5cGUgPSAnRXNjYWxhdGlvbic7CiAgICAgICAgICAgICAgICAgICAgJERhdGFW
YWx1ZSA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyQWdlSW5Ib3VycygKICAgICAgICAgICAgICAg
ICAgICAgICAgQWdlID0+ICRBcnRpY2xle0ZpcnN0UmVzcG9uc2VUaW1lfSB8fCAwLAogICAgICAg
ICAgICAgICAgICAgICAgICBTcGFjZSA9PiAnICcsCiAgICAgICAgICAgICAgICAgICAgKTsKICAg
ICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgJEFy
dGljbGV7Rmlyc3RSZXNwb25zZVRpbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICYmICRBcnRp
Y2xle0ZpcnN0UmVzcG9uc2VUaW1lfSA8IDYwICogNjAgKiAxCiAgICAgICAgICAgICAgICAgICAg
ICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1ND
bGFzcyA9ICdXYXJuaW5nJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICBlbHNpZiAoICRUaWNrZXRDb2x1bW4gZXEgJ0VzY2FsYXRpb25VcGRh
dGVUaW1lJyApIHsKICAgICAgICAgICAgICAgICAgICAkQmxvY2tUeXBlID0gJ0VzY2FsYXRpb24n
OwogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21l
ckFnZUluSG91cnMoCiAgICAgICAgICAgICAgICAgICAgICAgIEFnZSA9PiAkQXJ0aWNsZXtVcGRh
dGVUaW1lfSB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgICBTcGFjZSA9PiAnICcsCiAgICAg
ICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQgJEFydGlj
bGV7VXBkYXRlVGltZX0gJiYgJEFydGljbGV7VXBkYXRlVGltZX0gPCA2MCAqIDYwICogMSApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgJENTU0NsYXNzID0gJ1dhcm5pbmcnOwogICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFRp
Y2tldENvbHVtbiBlcSAnUGVuZGluZ1RpbWUnICkgewogICAgICAgICAgICAgICAgICAgICRCbG9j
a1R5cGUgPSAnRXNjYWxhdGlvbic7CiAgICAgICAgICAgICAgICAgICAgJERhdGFWYWx1ZSA9ICRM
YXlvdXRPYmplY3QtPkN1c3RvbWVyQWdlKAogICAgICAgICAgICAgICAgICAgICAgICBBZ2UgICA9
PiAkQXJ0aWNsZXsnVW50aWxUaW1lJ30sCiAgICAgICAgICAgICAgICAgICAgICAgIFNwYWNlID0+
ICcgJwogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBkZWZp
bmVkICRBcnRpY2xle1VudGlsVGltZX0gJiYgJEFydGljbGV7VW50aWxUaW1lfSA8IC0xICkgewog
ICAgICAgICAgICAgICAgICAgICAgICAkQ1NTQ2xhc3MgPSAnV2FybmluZyc7CiAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKAogICAg
ICAgICAgICAgICAgICAgICRUaWNrZXRDb2x1bW4gZXEgJ1N0YXRlJwogICAgICAgICAgICAgICAg
ICAgIHx8ICRUaWNrZXRDb2x1bW4gZXEgJ0xvY2snCiAgICAgICAgICAgICAgICAgICAgfHwgJFRp
Y2tldENvbHVtbiBlcSAnUHJpb3JpdHknCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVHJhbnNsYXRhYmxlJzsK
ICAgICAgICAgICAgICAgICAgICAkRGF0YVZhbHVlID0gJEFydGljbGV7JFRpY2tldENvbHVtbn0g
fHwgJFVzZXJJbmZveyRUaWNrZXRDb2x1bW59OwogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgZWxzaWYgKCAkVGlja2V0Q29sdW1uIGVxICdDcmVhdGVkJyB8fCAkVGlja2V0Q29sdW1u
IGVxICdDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICAgICAkQmxvY2tUeXBlID0gJ1RpbWUn
OwogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQXJ0aWNsZXskVGlja2V0Q29sdW1u
fSB8fCAkVXNlckluZm97JFRpY2tldENvbHVtbn07CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICBlbHNpZiAoICRUaWNrZXRDb2x1bW4gZXEgJ1Jlc3BvbnNpYmxlJyApIHsKCiAgICAg
ICAgICAgICAgICAgICAgIyBnZXQgcmVzcG9uc2libGUgaW5mbwogICAgICAgICAgICAgICAgICAg
IG15ICVSZXNwb25zaWJsZUluZm8gPSAkVXNlck9iamVjdC0+R2V0VXNlckRhdGEoCiAgICAgICAg
ICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkQXJ0aWNsZXtSZXNwb25zaWJsZUlEfSwKICAgICAg
ICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkUmVzcG9u
c2libGVJbmZveydVc2VyRmlyc3RuYW1lJ30gLiAnICcKICAgICAgICAgICAgICAgICAgICAgICAg
LiAkUmVzcG9uc2libGVJbmZveydVc2VyTGFzdG5hbWUnfTsKICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQXJ0
aWNsZXskVGlja2V0Q29sdW1ufQogICAgICAgICAgICAgICAgICAgICAgICB8fCAkVXNlckluZm97
JFRpY2tldENvbHVtbn0KICAgICAgICAgICAgICAgICAgICAgICAgfHwgJEN1c3RvbWVySW5mb3sk
VGlja2V0Q29sdW1ufTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkTGF5b3V0
T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICJSZWNvcmRUaWNrZXRD
b2x1bW4kQmxvY2tUeXBlIiwKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgR2VuZXJpY1ZhbHVlID0+ICREYXRhVmFsdWUgfHwgJycsCiAgICAgICAg
ICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ1NTQ2xhc3MgIHx8ICcnLAogICAgICAg
ICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAg
ICAgICAjIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAg
ICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2Ny
ZWVuCgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAg
ICAgIG15ICRERkNvbHVtbiA9ICRUaWNrZXRDb2x1bW47CiAgICAgICAgICAgICAgICAkREZDb2x1
bW4gPX4gcy9EeW5hbWljRmllbGRfLy9nOwogICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgog
ICAgICAgICAgICAgICAgZm9yIG15ICRERkNvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxk
fSB9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hS
ZWZXaXRoRGF0YSgkREZDb25maWcpOwogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJ
RUxEIGlmICRERkNvbmZpZy0+e05hbWV9IG5lICRERkNvbHVtbjsKCiAgICAgICAgICAgICAgICAg
ICAgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRERkNvbmZpZzsKICAgICAgICAgICAgICAgICAgICBs
YXN0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG5leHQg
VElDS0VUQ09MVU1OIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsK
CiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCB2YWx1ZQogICAgICAgICAgICAgICAgbXkgJFZh
bHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlR2V0KAogICAgICAgICAgICAg
ICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAg
ICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkQXJ0aWNsZXtUaWNrZXRJRH0sCiAg
ICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1p
Y0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAg
ICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAg
ICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAg
ICAgVmFsdWVNYXhDaGFycyAgICAgID0+IDIwLAogICAgICAgICAgICAgICAgICAgIExheW91dE9i
amVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAg
ICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+
ICdSZWNvcmREeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAg
ICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAg
ICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAg
ICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJFZh
bHVlU3RyZy0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJs
b2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRM
aW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1Zh
bHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAg
ICAgICA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
TGluayAgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntMaW5rfSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSA9PiAkVmFs
dWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAg
ICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAg
ICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkUGxhaW4nLAogICAgICAgICAgICAgICAgICAg
ICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1
ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFs
dWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAg
ICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBleGFtcGxlIG9m
IGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICRMYXlv
dXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFt
aWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAg
ICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJn
LT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57
VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAg
ICAgICAgICAgIGlmICggJFZhbHVlU3RyZy0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAg
ICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdS
ZWNvcmREeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICdfTGlu
aycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntWYWx1
ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICAg
ICAgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp
bmsgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJFZhbHVl
U3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAg
ICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAg
IE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05h
bWV9IC4gJ19QbGFpbicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAg
ICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhZGQgYWN0aW9uIGl0ZW1z
IGFzIGpzCiAgICAgICAgaWYgKCAkQXJ0aWNsZXtBY3Rpb25JdGVtc30gKSB7CgogICAgICAgICAg
ICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50
UmVhZHlBY3Rpb25Sb3dBZGQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAg
ICAgICAgICAgVGlja2V0SUQgPT4gJEFydGljbGV7VGlja2V0SUR9LAogICAgICAgICAgICAgICAg
ICAgIERhdGEgICAgID0+ICRBcnRpY2xle0FjdGlvbkl0ZW1zfSwKICAgICAgICAgICAgICAgIH0s
CiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgaW5pdCBmb3IgdGFibGUgY29u
dHJvbAogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRS
ZWFkeVN0YXJ0JywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgc2V0IGNv
bHVtbiBmaWx0ZXIgZm9ybSwgdG8gY29ycmVjdGx5IGZpbGwgdGhlIGNvbHVtbiBmaWx0ZXJzIGlz
IG5lY2Vzc2FyeSB0byBwYXNzIGVhY2gKICAgICMgICAgb3ZlcnZpZXcgc29tZSBpbmZvcm1hdGlv
biBpbiB0aGUgQUpBWCBjYWxsLCBmb3IgZXhhbXBsZSB0aGUgZml4ZWQgRmlsdGVycyBvciBOYXZC
YXJGaWx0ZXJzCiAgICAjICAgIGFuZCBhbHNvIG90aGVyIHZhbHVlcyBsaWtlIHRoZSBRdWV1ZSBp
biBBZ2VudFRpY2tldFF1ZXVlLCBvdGhlcndpc2UgdGhlIGZpbHRlcnMgd2lsbCBiZQogICAgIyAg
ICBmaWxsZWQgd2l0aCBkZWZhdWx0IHJlc3RyaWN0aW9ucywgcmVzdWx0aW5nIGluIG1vcmUgb3B0
aW9ucyB0aGFuIHRoZSBvbmVzIHRoYXQgdGhlCiAgICAjICAgIGF2YWlsYWJsZSB0aWNrZXRzIHNo
b3VsZCBwcm92aWRlLCBzZWUgQnVnIzk5MDIKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRQ
YXJhbXtDb2x1bW5GaWx0ZXJGb3JtfSApICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2Nr
KAogICAgICAgICAgICBOYW1lID0+ICdEb2N1bWVudENvbHVtbkZpbHRlckZvcm0nLAogICAgICAg
ICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggc29y
dCBrZXlzICV7ICRQYXJhbXtDb2x1bW5GaWx0ZXJGb3JtfSB9ICkgewogICAgICAgICAgICAkTGF5
b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50Q29sdW1u
RmlsdGVyRm9ybUVsZW1lbnQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAg
ICAgICAgICAgRWxlbWVudE5hbWUgID0+ICRFbGVtZW50LAogICAgICAgICAgICAgICAgICAgIEVs
ZW1lbnRWYWx1ZSA9PiAkUGFyYW17Q29sdW1uRmlsdGVyRm9ybX0tPnskRWxlbWVudH0sCiAgICAg
ICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHVzZSB0
ZW1wbGF0ZQogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBU
ZW1wbGF0ZUZpbGUgPT4gJ0FnZW50VGlja2V0T3ZlcnZpZXdTbWFsbCcsCiAgICAgICAgRGF0YSAg
ICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBUeXBlID0+ICRTZWxm
LT57Vmlld1R5cGV9LAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAkT3V0cHV0Owp9Cgpz
dWIgX0dldENvbHVtblZhbHVlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAg
IHJldHVybiBpZiAhSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFte0hlYWRlckNvbHVtbn0gKTsKCiAg
ICBteSAkSGVhZGVyQ29sdW1uID0gJFBhcmFte0hlYWRlckNvbHVtbn07CiAgICBteSAlQ29sdW1u
RmlsdGVyVmFsdWVzOwogICAgbXkgJFRpY2tldElEczsKCiAgICBpZiAoIElzQXJyYXlSZWZXaXRo
RGF0YSggJFBhcmFte09yaWdpbmFsVGlja2V0SURzfSApICkgewogICAgICAgICRUaWNrZXRJRHMg
PSAkUGFyYW17T3JpZ2luYWxUaWNrZXRJRHN9OwogICAgfQoKICAgIGlmICggJEhlYWRlckNvbHVt
biAhfiBtL15EeW5hbWljRmllbGRfLyApIHsKICAgICAgICBteSAkRnVuY3Rpb25OYW1lID0gJEhl
YWRlckNvbHVtbiAuICdGaWx0ZXJWYWx1ZXNHZXQnOwogICAgICAgIGlmICggJEhlYWRlckNvbHVt
biBlcSAnQ3VzdG9tZXJJRCcgKSB7CiAgICAgICAgICAgICRGdW5jdGlvbk5hbWUgPSAnQ3VzdG9t
ZXJGaWx0ZXJWYWx1ZXNHZXQnOwogICAgICAgIH0KICAgICAgICAkQ29sdW1uRmlsdGVyVmFsdWVz
eyRIZWFkZXJDb2x1bW59ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tl
dDo6Q29sdW1uRmlsdGVyJyktPiRGdW5jdGlvbk5hbWUoCiAgICAgICAgICAgIFRpY2tldElEcyAg
ICA9PiAkVGlja2V0SURzLAogICAgICAgICAgICBIZWFkZXJDb2x1bW4gPT4gJEhlYWRlckNvbHVt
biwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAp
OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAk
RHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAg
ICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0Zp
ZWxkQ29uZmlnKTsKICAgICAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICdEeW5hbWljRmllbGRfJyAu
ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklF
TEQgaWYgJEZpZWxkTmFtZSBuZSAkSGVhZGVyQ29sdW1uOwoKICAgICAgICAgICAgIyBnZXQgZHlu
YW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdAogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFj
a2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmll
bGQ6OkJhY2tlbmQnKTsKICAgICAgICAgICAgbXkgJElzRmlsdHJhYmxlICAgICAgICAgICAgICAg
PSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAg
ICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAg
ICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNGaWx0cmFibGUnLAogICAgICAgICAgICApOwog
ICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJElzRmlsdHJhYmxlOwogICAgICAgICAg
ICAkU2VsZi0+e1ZhbGlkRmlsdGVyYWJsZUNvbHVtbnN9LT57JEhlYWRlckNvbHVtbn0gPSAkSXNG
aWx0cmFibGU7CiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCRUaWNrZXRJRHMp
ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBoaXN0b3JpY2FsIHZhbHVlcyBmb3IgdGhl
IGZpZWxkCiAgICAgICAgICAgICAgICAkQ29sdW1uRmlsdGVyVmFsdWVzeyRIZWFkZXJDb2x1bW59
ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkNvbHVtbkZpbHRlclZhbHVlc0dldCgKICAg
ICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZp
ZywKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJEtlcm5lbDo6T00t
PkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLAogICAgICAgICAgICAgICAgICAg
IFRpY2tldElEcyAgICAgICAgICA9PiAkVGlja2V0SURzLAogICAgICAgICAgICAgICAgKTsKICAg
ICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGdldCBQb3Nz
aWJsZVZhbHVlcwogICAgICAgICAgICAgICAgJENvbHVtbkZpbHRlclZhbHVlc3skSGVhZGVyQ29s
dW1ufSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAg
ICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZp
ZywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFzdCBEWU5B
TUlDRklFTEQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJUNvbHVtbkZpbHRlclZhbHVl
czsKfQoKc3ViIF9Jbml0aWFsQ29sdW1uRmlsdGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSAp
ID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17Q29sdW1uTmFtZX07CiAgICByZXR1cm4gaWYg
ISRTZWxmLT57VmFsaWRGaWx0ZXJhYmxlQ29sdW1uc30tPnsgJFBhcmFte0NvbHVtbk5hbWV9IH07
CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6
Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkTGFiZWwg
PSAkUGFyYW17TGFiZWx9IHx8ICRQYXJhbXtDb2x1bW5OYW1lfTsKICAgICRMYWJlbCA9ICRMYXlv
dXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkTGFiZWwpOwoKICAgICMgc2V0
IGZpeGVkIHZhbHVlcwogICAgbXkgJERhdGEgPSBbCiAgICAgICAgewogICAgICAgICAgICBLZXkg
ICA9PiAnJywKICAgICAgICAgICAgVmFsdWUgPT4gdWMgJExhYmVsLAogICAgICAgIH0sCiAgICBd
OwoKICAgICMgZGVmaW5lIGlmIGNvbHVtbiBmaWx0ZXIgdmFsdWVzIHNob3VsZCBiZSB0cmFuc2xh
dGFibGUKICAgIG15ICRUcmFuc2xhdGlvbk9wdGlvbiA9IDA7CgogICAgaWYgKAogICAgICAgICRQ
YXJhbXtDb2x1bW5OYW1lfSBlcSAnU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9
IGVxICdMb2NrJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnUHJpb3JpdHknCiAg
ICAgICAgKQogICAgewogICAgICAgICRUcmFuc2xhdGlvbk9wdGlvbiA9IDE7CiAgICB9CgogICAg
bXkgJENsYXNzID0gJ0NvbHVtbkZpbHRlcic7CiAgICBpZiAoICRQYXJhbXtDc3N9ICkgewogICAg
ICAgICRDbGFzcyAuPSAnICcgLiAkUGFyYW17Q3NzfTsKICAgIH0KCiAgICAjIGJ1aWxkIHNlbGVj
dCBIVE1MCiAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2Vs
ZWN0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdDb2x1bW5GaWx0ZXInIC4gJFBhcmFte0Nv
bHVtbk5hbWV9LAogICAgICAgIERhdGEgICAgICAgID0+ICREYXRhLAogICAgICAgIENsYXNzICAg
ICAgID0+ICRDbGFzcywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAkVHJhbnNsYXRpb25PcHRpb24s
CiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJycsCiAgICApOwogICAgcmV0dXJuICRDb2x1bW5GaWx0
ZXJIVE1MOwp9CgpzdWIgRmlsdGVyQ29udGVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9
IEBfOwoKICAgIHJldHVybiBpZiAhJFBhcmFte0hlYWRlckNvbHVtbn07CgogICAgbXkgJEhlYWRl
ckNvbHVtbiA9ICRQYXJhbXtIZWFkZXJDb2x1bW59OwoKICAgICMgZ2V0IGNvbHVtbiB2YWx1ZXMg
Zm9yIHRvIGJ1aWxkIHRoZSBmaWx0ZXJzIGxhdGVyCiAgICBteSAkQ29sdW1uVmFsdWVzID0gJFNl
bGYtPl9HZXRDb2x1bW5WYWx1ZXMoCiAgICAgICAgT3JpZ2luYWxUaWNrZXRJRHMgPT4gJFBhcmFt
e09yaWdpbmFsVGlja2V0SURzfSwKICAgICAgICBIZWFkZXJDb2x1bW4gICAgICA9PiAkSGVhZGVy
Q29sdW1uLAogICAgKTsKCiAgICBteSAkU2VsZWN0ZWRWYWx1ZSAgPSAnJzsKICAgIG15ICRTZWxl
Y3RlZENvbHVtbiA9ICRIZWFkZXJDb2x1bW47CiAgICBpZiAoICRIZWFkZXJDb2x1bW4gZXEgJ0N1
c3RvbWVyVXNlcklEJyApIHsKICAgICAgICAkU2VsZWN0ZWRDb2x1bW4gPSAnQ3VzdG9tZXJVc2Vy
TG9naW4nOwogICAgfQogICAgaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdDdXN0b21lcklEJyApIHsK
ICAgICAgICAkU2VsZWN0ZWRDb2x1bW4gPSAnQ3VzdG9tZXJJRCc7CiAgICB9CiAgICBlbHNpZiAo
ICRIZWFkZXJDb2x1bW4gIX4gbXsgXEEgRHluYW1pY0ZpZWxkXyB9eG1zICkgewogICAgICAgICRT
ZWxlY3RlZENvbHVtbiAuPSAnSURzJzsKICAgIH0KCiAgICBteSAkTGFiZWxDb2x1bW4gPSAkSGVh
ZGVyQ29sdW1uOwogICAgaWYgKCAkTGFiZWxDb2x1bW4gPX4gbXsgXEEgRHluYW1pY0ZpZWxkXyB9
eG1zICkgewoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnOwogICAgICAgICRMYWJlbENv
bHVtbiA9fiBze1xBIER5bmFtaWNGaWVsZF8gfXt9eG1zOwoKICAgICAgICBEWU5BTUlDRklFTEQ6
CiAgICAgICAgZm9yIG15ICRERkNvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkg
ewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERG
Q29uZmlnKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJERGQ29uZmlnLT57TmFt
ZX0gbmUgJExhYmVsQ29sdW1uOwoKICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRE
RkNvbmZpZzsKICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQogICAgICAg
IGlmICggSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZykgKSB7CiAgICAgICAg
ICAgICRMYWJlbENvbHVtbiA9ICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CiAgICAgICAg
fQogICAgfQoKICAgIGlmICggJFNlbGVjdGVkQ29sdW1uICYmICRTZWxmLT57U3RvcmVkRmlsdGVy
c30tPnskU2VsZWN0ZWRDb2x1bW59ICkgewoKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0
YSggJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0gKSApIHsKICAgICAg
ICAgICAgJFNlbGVjdGVkVmFsdWUgPSAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JFNlbGVjdGVk
Q29sdW1ufS0+WzBdOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoIElzSGFzaFJlZldpdGhEYXRh
KCAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JFNlbGVjdGVkQ29sdW1ufSApICkgewogICAgICAg
ICAgICAkU2VsZWN0ZWRWYWx1ZSA9ICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRD
b2x1bW59LT57RXF1YWxzfTsKICAgICAgICB9CiAgICB9CgogICAgIyB2YXJpYWJsZSB0byBzYXZl
IHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgIG15ICRDb2x1bW5GaWx0ZXJKU09OID0gJFNlbGYt
Pl9Db2x1bW5GaWx0ZXJKU09OKAogICAgICAgIENvbHVtbk5hbWUgICAgPT4gJEhlYWRlckNvbHVt
biwKICAgICAgICBMYWJlbCAgICAgICAgID0+ICRMYWJlbENvbHVtbiwKICAgICAgICBDb2x1bW5W
YWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufSwKICAgICAgICBTZWxlY3Rl
ZFZhbHVlID0+ICRTZWxlY3RlZFZhbHVlLAogICAgKTsKCiAgICByZXR1cm4gJENvbHVtbkZpbHRl
ckpTT047Cn0KCj1vdmVyCgo9aXRlbSBfQ29sdW1uRmlsdGVySlNPTigpCgogICAgY3JlYXRlcyBh
IEpTT04gc2VsZWN0IGZpbHRlciBmb3IgY29sdW1uIGhlYWRlcgoKICAgIG15ICRDb2x1bW5GaWx0
ZXJKU09OID0gJFRpY2tldE92ZXJ2aWV3U21hbGxPYmplY3QtPl9Db2x1bW5GaWx0ZXJKU09OKAog
ICAgICAgIENvbHVtbk5hbWUgPT4gJ1F1ZXVlJywKICAgICAgICBMYWJlbCAgICAgID0+ICdRdWV1
ZScsCiAgICAgICAgQ29sdW1uVmFsdWVzID0+IHsKICAgICAgICAgICAgMSA9PiAnUG9zdE1hc3Rl
cicsCiAgICAgICAgICAgIDIgPT4gJ0p1bmsnLAogICAgICAgIH0sCiAgICAgICAgU2VsZWN0ZWRW
YWx1ZSAnMScsCiAgICApOwoKPWN1dAoKc3ViIF9Db2x1bW5GaWx0ZXJKU09OIHsKICAgIG15ICgg
JFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKAogICAgICAgICEkU2VsZi0+e0F2YWlsYWJs
ZUZpbHRlcmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfSAmJgogICAgICAgICEk
U2VsZi0+e0F2YWlsYWJsZUZpbHRlcmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0g
LiAnSURzJyB9CiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdl
dCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgn
S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRMYWJlbCA9ICRQYXJhbXtM
YWJlbH07CiAgICAkTGFiZWwgPX4gc3sgXEEgRHluYW1pY0ZpZWxkXyB9e31neG1zOwogICAgJExh
YmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMYWJlbCk7
CgogICAgIyBzZXQgZml4ZWQgdmFsdWVzCiAgICBteSAkRGF0YSA9IFsKICAgICAgICB7CiAgICAg
ICAgICAgIEtleSAgID0+ICdEZWxldGVGaWx0ZXInLAogICAgICAgICAgICBWYWx1ZSA9PiB1YyAk
TGFiZWwsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICctJywK
ICAgICAgICAgICAgVmFsdWUgICAgPT4gJy0nLAogICAgICAgICAgICBEaXNhYmxlZCA9PiAxLAog
ICAgICAgIH0sCiAgICBdOwoKICAgIGlmICggJFBhcmFte0NvbHVtblZhbHVlc30gJiYgcmVmICRQ
YXJhbXtDb2x1bW5WYWx1ZXN9IGVxICdIQVNIJyApIHsKCiAgICAgICAgbXkgJVZhbHVlcyA9ICV7
ICRQYXJhbXtDb2x1bW5WYWx1ZXN9IH07CgogICAgICAgICMgc2V0IHBvc3NpYmxlIHZhbHVlcwog
ICAgICAgIGZvciBteSAkVmFsdWVLZXkgKCBzb3J0IHsgbGMgJFZhbHVlc3skYX0gY21wIGxjICRW
YWx1ZXN7JGJ9IH0ga2V5cyAlVmFsdWVzICkgewogICAgICAgICAgICBwdXNoIEB7JERhdGF9LCB7
CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkVmFsdWVLZXksCiAgICAgICAgICAgICAgICBWYWx1
ZSA9PiAkVmFsdWVzeyRWYWx1ZUtleX0KICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9Cgog
ICAgIyBkZWZpbmUgaWYgY29sdW1uIGZpbHRlciB2YWx1ZXMgc2hvdWxkIGJlIHRyYW5zbGF0YWJs
ZQogICAgbXkgJFRyYW5zbGF0aW9uT3B0aW9uID0gMDsKCiAgICBpZiAoCiAgICAgICAgJFBhcmFt
e0NvbHVtbk5hbWV9IGVxICdTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEg
J0xvY2snCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdQcmlvcml0eScKICAgICAg
ICApCiAgICB7CiAgICAgICAgJFRyYW5zbGF0aW9uT3B0aW9uID0gMTsKICAgIH0KCiAgICAjIGJ1
aWxkIHNlbGVjdCBIVE1MCiAgICBteSAkSlNPTiA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0
aW9uSlNPTigKICAgICAgICBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAg
ICAgICA9PiAnQ29sdW1uRmlsdGVyJyAuICRQYXJhbXtDb2x1bW5OYW1lfSwKICAgICAgICAgICAg
ICAgIERhdGEgICAgICAgICA9PiAkRGF0YSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9
PiAnQ29sdW1uRmlsdGVyJywKICAgICAgICAgICAgICAgIFNvcnQgICAgICAgICA9PiAnQWxwaGFu
dW1lcmljS2V5JywKICAgICAgICAgICAgICAgIFRyZWVWaWV3ICAgICA9PiAxLAogICAgICAgICAg
ICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtTZWxlY3RlZFZhbHVlfSwKICAgICAgICAgICAg
ICAgIFRyYW5zbGF0aW9uICA9PiAkVHJhbnNsYXRpb25PcHRpb24sCiAgICAgICAgICAgICAgICBB
dXRvQ29tcGxldGUgPT4gJ29mZicsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICk7Cgog
ICAgcmV0dXJuICRKU09OOwp9CgpzdWIgX0RlZmF1bHRDb2x1bW5Tb3J0IHsKCiAgICBteSAlRGVm
YXVsdENvbHVtbnMgPSAoCiAgICAgICAgVGlja2V0TnVtYmVyICAgICAgICAgICA9PiAxMDAsCiAg
ICAgICAgQWdlICAgICAgICAgICAgICAgICAgICA9PiAxMTAsCiAgICAgICAgQ2hhbmdlZCAgICAg
ICAgICAgICAgICA9PiAxMTEsCiAgICAgICAgUGVuZGluZ1RpbWUgICAgICAgICAgICA9PiAxMTIs
CiAgICAgICAgRXNjYWxhdGlvblRpbWUgICAgICAgICA9PiAxMTMsCiAgICAgICAgRXNjYWxhdGlv
blNvbHV0aW9uVGltZSA9PiAxMTQsCiAgICAgICAgRXNjYWxhdGlvblJlc3BvbnNlVGltZSA9PiAx
MTUsCiAgICAgICAgRXNjYWxhdGlvblVwZGF0ZVRpbWUgICA9PiAxMTYsCiAgICAgICAgVGl0bGUg
ICAgICAgICAgICAgICAgICA9PiAxMjAsCiAgICAgICAgU3RhdGUgICAgICAgICAgICAgICAgICA9
PiAxMzAsCiAgICAgICAgTG9jayAgICAgICAgICAgICAgICAgICA9PiAxNDAsCiAgICAgICAgUXVl
dWUgICAgICAgICAgICAgICAgICA9PiAxNTAsCiAgICAgICAgT3duZXIgICAgICAgICAgICAgICAg
ICA9PiAxNjAsCiAgICAgICAgUmVzcG9uc2libGUgICAgICAgICAgICA9PiAxNjEsCiAgICAgICAg
Q3VzdG9tZXJJRCAgICAgICAgICAgICA9PiAxNzAsCiAgICAgICAgQ3VzdG9tZXJOYW1lICAgICAg
ICAgICA9PiAxNzEsCiAgICAgICAgQ3VzdG9tZXJVc2VySUQgICAgICAgICA9PiAxNzIsCiAgICAg
ICAgVHlwZSAgICAgICAgICAgICAgICAgICA9PiAxODAsCiAgICAgICAgU2VydmljZSAgICAgICAg
ICAgICAgICA9PiAxOTEsCiAgICAgICAgU0xBICAgICAgICAgICAgICAgICAgICA9PiAxOTIsCiAg
ICAgICAgUHJpb3JpdHkgICAgICAgICAgICAgICA9PiAxOTMsCiAgICApOwoKICAgICMgZHluYW1p
YyBmaWVsZHMgY2FuIG5vdCBiZSBvbiB0aGUgRGVmYXVsdENvbHVtbnMgc29ydGluZyBoYXNoCiAg
ICAjIHdoZW4gY29tcGFyaW5nIDIgZHluYW1pYyBmaWVsZHMgc29ydGluZyBtdXN0IGJlIGFscGhh
YmV0aWNhbAogICAgaWYgKCAhJERlZmF1bHRDb2x1bW5zeyRhfSAmJiAhJERlZmF1bHRDb2x1bW5z
eyRifSApIHsKICAgICAgICByZXR1cm4gJGEgY21wICRiOwogICAgfQoKICAgICMgd2hlbiBhIGR5
bmFtaWMgZmllbGQgaXMgY29tcGFyZWQgdG8gYSB0aWNrZXQgYXR0cmlidXRlIGl0IG11c3QgYmUg
aGlnaGVyCiAgICBlbHNpZiAoICEkRGVmYXVsdENvbHVtbnN7JGF9ICkgewogICAgICAgIHJldHVy
biAxOwogICAgfQoKICAgICMgd2hlbiBhIHRpY2tldCBhdHRyaWJ1dGUgaXMgY29tcGFyZWQgdG8g
YSBkeW5hbWljIGZpZWxkIGl0IG11c3QgYmUgbG93ZXIKICAgIGVsc2lmICggISREZWZhdWx0Q29s
dW1uc3skYn0gKSB7CiAgICAgICAgcmV0dXJuIC0xOwogICAgfQoKICAgICMgb3RoZXJ3aXNlIGRv
IGEgbnVtZXJpY2FsIGNvbXBhcmlzb24gd2l0aCB0aGUgdGlja2V0IGF0dHJpYnV0ZXMKICAgIHJl
dHVybiAkRGVmYXVsdENvbHVtbnN7JGF9IDw9PiAkRGVmYXVsdENvbHVtbnN7JGJ9Owp9CgoxOwoK
PWJhY2sK
IyAtLQojIENvcHlyaWdodCAoQykgMjAxNyBQZXJsLVNlcnZpY2VzLmRlLCBodHRwOi8vcGVybC1z
ZXJ2aWNlcy5kZQojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8g
V0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZv
ciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRo
aXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoK
cGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6VGlja2V0T3ZlcnZpZXc6Okhvb2tzOjpHZW5lcmljOwoK
dXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSBxdygK
ICAgIEtlcm5lbDo6Q29uZmlnCiAgICBLZXJuZWw6OlN5c3RlbTo6VGlja2V0Cik7Cgo9aGVhZDEg
TkFNRQoKS2VybmVsOjpTeXN0ZW06OlRpY2tldE92ZXJ2aWV3OjpIb29rczo6VHlwZXMKCj1oZWFk
MSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFu
IG9iamVjdAoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoK
ICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAg
IGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIFJ1bigp
CgpSZXR1cm5zIGEgY29sb3Igd2hlbiB0aGUgdGlja2V0IGJlbG9uZ3MgdG8gdGhlIEp1bmstUXVl
dWUKCiAgICBteSAkSnVua0NvbG9yID0gJEp1bmtPYmplY3QtPlJ1bigKICAgICAgICBUaWNrZXRJ
RCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0g
KSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6
OkNvbmZpZycpOwogICAgbXkgJExvZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5l
bDo6U3lzdGVtOjpMb2cnKTsKCiAgICBteSAkQXR0cmlidXRlID0gJENvbmZpZ09iamVjdC0+R2V0
KCdIb29rOjpHZW5lcmljOjpBdHRyaWJ1dGUnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgog
ICAgZm9yIG15ICROZWVkZWQgKCRBdHRyaWJ1dGUpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5l
ZWRlZH0gKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFBy
aW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVl
ZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9
CgogICAgbXkgJENvbG9ycyAgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnSG9vazo6R2VuZXJp
YycpICAgICAgIHx8IHt9OwogICAgbXkgJEZvbnRDb2xvcnMgICA9ICRDb25maWdPYmplY3QtPkdl
dCgnSG9vazo6R2VuZXJpYzo6Rm9udCcpIHx8IHt9OwoKICAgIG15ICRIb29rZWRDb2xvcnMgPSB7
CiAgICAgICAgRm9udCAgICAgICA9PiAkRm9udENvbG9ycy0+eyAkUGFyYW17JEF0dHJpYnV0ZX0g
fSwKICAgICAgICBCYWNrZ3JvdW5kID0+ICRDb2xvcnMtPnsgJFBhcmFteyRBdHRyaWJ1dGV9IH0s
CiAgICB9OwoKICAgIHJldHVybiAkSG9va2VkQ29sb3JzOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBU
RVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkg
Tk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBm
b3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhp
cyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQ+LgoKPWN1
dAoK
IyAtLQojIEtlcm5lbC9TeXN0ZW0vVGlja2V0T3ZlcnZpZXcvSG9va3MvSnVuay5wbSAtIG1hcmsg
anVuayB0aWNrZXRzIGluIHRpY2tldCBvdmVydmlldwojIENvcHlyaWdodCAoQykgMjAxMS0yMDE0
IFBlcmwtU2VydmljZXMuZGUsIGh0dHA6Ly9wZXJsLXNlcnZpY2VzLmRlCiMgLS0KIyBUaGlzIHNv
ZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNl
ZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFH
UEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5n
bnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpU
aWNrZXRPdmVydmlldzo6SG9va3M6Okp1bms7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgpv
dXIgJFZFUlNJT04gPSAwLjAyOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSBxdygKICAgIEtl
cm5lbDo6Q29uZmlnCiAgICBLZXJuZWw6OlN5c3RlbTo6VGlja2V0Cik7Cgo9aGVhZDEgTkFNRQoK
S2VybmVsOjpTeXN0ZW06OlRpY2tldE92ZXJ2aWV3OjpIb29rczo6SnVuayAtIG1hcmsganVuayB0
aWNrZXRzIGluIHRpY2tldCBvdmVydmlldwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVy
IDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0Cgo9Y3V0CgpzdWIgbmV3IHsK
ICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBm
b3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoK
ICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gUnVuKCkKClJldHVybnMgYSBjb2xvciB3aGVuIHRo
ZSB0aWNrZXQgYmVsb25ncyB0byB0aGUgSnVuay1RdWV1ZQoKICAgIG15ICRKdW5rQ29sb3IgPSAk
SnVua09iamVjdC0+UnVuKAogICAgICAgIFRpY2tldElEID0+IDEyMywKICAgICk7Cgo9Y3V0Cgpz
dWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ09i
amVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBjaGVjayBu
ZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhUaWNrZXRJRCkpIHsKICAgICAgICBp
ZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+
TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAg
IE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgIH0KICAgIH0KCgogICAgaWYgKCAhJFBhcmFte1F1ZXVlfSApIHsKICAg
ICAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06
OlRpY2tldCcpOwogICAgICAgICVQYXJhbSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAg
ICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICApOwogICAgfQoK
ICAgIHJldHVybiBpZiAkUGFyYW17UXVldWV9IG5lICdKdW5rJzsKICAgIHJldHVybiAkQ29uZmln
T2JqZWN0LT5HZXQoJ0hvb2s6Okp1bmsnKTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5E
IENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChM
PGh0dHA6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZ
IE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcg
Zm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRo
aXMgZmlsZSwgc2VlIEw8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Pi4KCj1j
dXQKCj1oZWFkMSBWRVJTSU9OCgokUmV2aXNpb246IDEuODMgJCAkRGF0ZTogMjAxMC8wOS8wMSAw
Nzo1MDoyMiAkCgo9Y3V0Cg==
IyAtLQojIEtlcm5lbC9TeXN0ZW0vVGlja2V0T3ZlcnZpZXcvSG9va3MvUGVuZGluZ1RpbWUucG0g
LSBtYXJrIHRpY2tldHMgYmFzZWQgb24gdGhlIHF1ZXVlIGluIHRpY2tldCBvdmVydmlldwojIENv
cHlyaWdodCAoQykgMjAxMyAtIDIwMTQgUGVybC1TZXJ2aWNlcy5kZSwgaHR0cDovL3Blcmwtc2Vy
dmljZXMuZGUKIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdB
UlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3Ig
bGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlz
IGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBh
Y2thZ2UgS2VybmVsOjpTeXN0ZW06OlRpY2tldE92ZXJ2aWV3OjpIb29rczo6UGVuZGluZ1RpbWU7
Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9IHF3
KAogICAgS2VybmVsOjpDb25maWcKICAgIEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQKKTsKCj1oZWFk
MSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6VGlja2V0T3ZlcnZpZXc6Okhvb2tzOjpKdW5rIC0gbWFy
ayBqdW5rIHRpY2tldHMgaW4gdGlja2V0IG92ZXJ2aWV3Cgo9aGVhZDEgUFVCTElDIElOVEVSRkFD
RQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCj1jdXQKCnN1
YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5l
dyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRU
eXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBSdW4oKQoKUmV0dXJucyBhIGNvbG9y
IHdoZW4gdGhlIHRpY2tldCBiZWxvbmdzIHRvIHRoZSBKdW5rLVF1ZXVlCgogICAgbXkgJFBlbmRp
bmdUaW1lQ29sb3IgPSAkUGVuZGluZ1RpbWVPYmplY3QtPlJ1bigKICAgICAgICBUaWNrZXRJRCAg
PT4gMTIzLAogICAgICAgIFVudGlsVGltZSA9PiAxMzUxLAogICAgKTsKCj1jdXQKCnN1YiBSdW4g
ewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ID0gJEtl
cm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgIHJldHVybiBpZiAhJFBh
cmFte1VudGlsVGltZX07CiAgICByZXR1cm4gaWYgJFBhcmFte1VudGlsVGltZX0gPj0gMDsKICAg
IHJldHVybiBpZiAkUGFyYW17U3RhdGVUeXBlfSAhfiBte1xBcGVuZGluZ307CgogICAgbXkgJENv
bmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAk
Q29sb3IgICAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdIb29rOjpQZW5kaW5nVGltZScpIHx8
ICdmZjAwMDAnOwoKICAgIHJldHVybiAkQ29sb3I7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1T
IEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBX
QVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBs
aWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZp
bGUsIHNlZSBMPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dD4uCgo9Y3V0Cgo=
IyAtLQojIEtlcm5lbC9TeXN0ZW0vVGlja2V0T3ZlcnZpZXcvSG9va3MvUXVldWVzLnBtIC0gbWFy
ayB0aWNrZXRzIGJhc2VkIG9uIHRoZSBxdWV1ZSBpbiB0aWNrZXQgb3ZlcnZpZXcKIyBDb3B5cmln
aHQgKEMpIDIwMTMgLSAyMDE0IFBlcmwtU2VydmljZXMuZGUsIGh0dHA6Ly9wZXJsLXNlcnZpY2Vz
LmRlCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5U
WS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vu
c2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxl
LCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdl
IEtlcm5lbDo6U3lzdGVtOjpUaWNrZXRPdmVydmlldzo6SG9va3M6OlF1ZXVlczsKCnVzZSBzdHJp
Y3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkVkVSU0lPTiA9IDAuMDI7CgpvdXIgQE9iamVjdERlcGVu
ZGVuY2llcyA9IHF3KAogICAgS2VybmVsOjpDb25maWcKICAgIEtlcm5lbDo6U3lzdGVtOjpUaWNr
ZXQKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6VGlja2V0T3ZlcnZpZXc6Okhvb2tz
OjpKdW5rIC0gbWFyayBqdW5rIHRpY2tldHMgaW4gdGlja2V0IG92ZXJ2aWV3Cgo9aGVhZDEgUFVC
TElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmpl
Y3QKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAj
IGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVz
cyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBSdW4oKQoKUmV0
dXJucyBhIGNvbG9yIHdoZW4gdGhlIHRpY2tldCBiZWxvbmdzIHRvIHRoZSBKdW5rLVF1ZXVlCgog
ICAgbXkgJEp1bmtDb2xvciA9ICRKdW5rT2JqZWN0LT5SdW4oCiAgICAgICAgVGlja2V0SUQgPT4g
MTIzLAogICAgKTsKCj1jdXQKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBA
XzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFF1ZXVl
KSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJFNlbGYt
PntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAog
ICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICAp
OwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb25maWdPYmpl
Y3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJENvbG9ycyA9
ICRDb25maWdPYmplY3QtPkdldCgnSG9vazo6UXVldWVzJykgfHwge307CgogICAgcmV0dXJuICRD
b2xvcnMtPnsgJFBhcmFte1F1ZXVlfSB9Owp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQg
Q09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFO
VFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5z
ZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBz
ZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQ+LgoKPWN1dAoK
IyAtLQojIEtlcm5lbC9TeXN0ZW0vVGlja2V0T3ZlcnZpZXcvSG9va3MvVHlwZXMucG0gLSBtYXJr
IHRpY2tldHMgYmFzZWQgb24gdGhlIHR5cGUgaW4gdGlja2V0IG92ZXJ2aWV3CiMgQ29weXJpZ2h0
IChDKSAyMDE3IFBlcmwtU2VydmljZXMuZGUsIGh0dHA6Ly9wZXJsLXNlcnZpY2VzLmRlCiMgLS0K
IyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRl
dGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3Jt
YXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0
cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6
U3lzdGVtOjpUaWNrZXRPdmVydmlldzo6SG9va3M6OlR5cGVzOwoKdXNlIHN0cmljdDsKdXNlIHdh
cm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSBxdygKICAgIEtlcm5lbDo6Q29uZmln
CiAgICBLZXJuZWw6OlN5c3RlbTo6VGlja2V0Cik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0
ZW06OlRpY2tldE92ZXJ2aWV3OjpIb29rczo6VHlwZXMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNF
Cgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKPWN1dAoKc3Vi
IG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3
IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5
cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIFJ1bigpCgpSZXR1cm5zIGEgY29sb3Ig
d2hlbiB0aGUgdGlja2V0IGJlbG9uZ3MgdG8gdGhlIEp1bmstUXVldWUKCiAgICBteSAkSnVua0Nv
bG9yID0gJEp1bmtPYmplY3QtPlJ1bigKICAgICAgICBUaWNrZXRJRCA9PiAxMjMsCiAgICApOwoK
PWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hl
Y2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVHlwZSkpIHsKICAgICAgICBp
ZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+
TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAg
IE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6
T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRDb2xvcnMgICAgICAgPSAkQ29uZmln
T2JqZWN0LT5HZXQoJ0hvb2s6OlR5cGVzJykgICAgICAgfHwge307CiAgICBteSAkRm9udENvbG9y
cyAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdIb29rOjpUeXBlczo6Rm9udCcpIHx8IHt9OwoKICAg
IG15ICRIb29rZWRDb2xvcnMgPSB7CiAgICAgICAgRm9udCAgICAgICA9PiAkRm9udENvbG9ycy0+
eyAkUGFyYW17VHlwZX0gfSwKICAgICAgICBCYWNrZ3JvdW5kID0+ICRDb2xvcnMtPnsgJFBhcmFt
e1R5cGV9IH0sCiAgICB9OwoKICAgIHJldHVybiAkSG9va2VkQ29sb3JzOwp9CgoxOwoKPWJhY2sK
Cj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFC
U09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUg
Q09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJl
Y2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50
eHQ+LgoKPWN1dAoKCg==
ewogICAgIm5hbWUiOiAiVGlja2V0T3ZlcnZpZXdIb29rZWQiLAogICAgInZlcnNpb24iOiAiNS4w
LjYiLAogICAgImZyYW1ld29yayI6IFsKICAgICAgICAiNS4wLngiCiAgICBdLAogICAgInZlbmRv
ciI6IHsKICAgICAgICAibmFtZSI6ICAiUGVybC1TZXJ2aWNlcy5kZSIsCiAgICAgICAgInVybCI6
ICJodHRwOi8vd3d3LnBlcmwtc2VydmljZXMuZGUiCiAgICB9LAogICAgImxpY2Vuc2UiOiAiR05V
IEFGRkVSTyBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIFZlcnNpb24gMywgTm92ZW1iZXIgMjAwNyIs
CiAgICAiZGVzY3JpcHRpb24iIDogewogICAgICAgICJlbiI6ICJTaG93IHJvd3MgaW4gdGlja2V0
IG92ZXJ2aWV3IChzbWFsbCkgd2l0aCBkaWZmZXJlbnQgYmFja2dyb3VuZCBjb2xvcnMuIiwKICAg
ICAgICAiZGUiOiAiRXJtw7ZnbGljaHQgdW50ZXJzY2hpZWRsaWNoZSBGYXJiZW4gZsO8ciBaZWls
ZW4gaW4gZGVyIFRpY2tldMO8YmVyc2ljaHQgKFNtYWxsKS4iCiAgICB9Cn0K
PWhlYWQxIE5BTUUKClRpY2tldE92ZXJ2aWV3SG9va2VkIC0gcHJvdmlkZSBhIHNpbXBsZSBtZWNo
bmlzbSB0byBjb2xvcml6ZSByb3dzIGluIHNtYWxsIHRpY2tldCBvdmVydmlldyBhbmQgaW4gdGhl
IGFnZW50cycgZGFzaGJvYXJkCgo9aGVhZDEgREVTQ1JJUFRJT04KClNvbWV0aW1lcyBpdCBpcyBu
ZWNlc3NhcnkgdG8gaWRlbnRpZnkgInNwZWNpYWwiIHRpY2tldHMgdmVyeSBxdWlja2x5LiAic3Bl
Y2lhbCIgY2FuIG1lYW4KZXZlcnl0aGluZyAtIG1heWJlIHRpY2tldHMgdGhhdCBhcmUgaW4gc29t
ZSB3YXkgaW5jb21wbGV0ZSwgdGlja2V0cyB0aGF0IHJlcHJlc2VudApvcmRlcnMgb2YgeW91ciBn
b29kcyBvciBtYXliZSB0aWNrZXRzIGZyb20gVklQcy4KClRvIGlkZW50aWZ5IHRoZXNlIHRpY2tl
dHMgaW4gdGhlIHRpY2tldCBvdmVydmlldyAoc3RhdHVzIHZpZXcgb3IgcXVldWUgdmlldykgaXQg
d291bGQgYmUgZ3JlYXQKdG8gaGF2ZSB0aGUgcm93cyBvZiB0aGVzZSB0aWNrZXRzIGNvbG9yaXpl
ZC4KClRoaXMgcGFja2FnZSBwcm92aWRlcyBhIHNpbXBsZSBtZWNoYW5pc20gdG8gYWNoaWV2ZSB0
aGlzLgoKPWhlYWQxIEhPVyBJVCBXT1JLUwoKSXQgaXMgcmVhbGx5IHNpbXBsZTogRm9yIGV2ZXJ5
IHJvdyBhIHNvIGNhbGxlZCAiaG9vayIgaXMgY2FsbGVkIHdpdGggdGhlIHRpY2tldCBpZCBhcyBh
IHBhcmFtZXRlci4KSWYgdGhlIHRpY2tldCBtZWV0cyBzb21lIGNyaXRlcmlhLCB0aGUgaG9vayBh
cyB0byByZXR1cm4gYSBjb2xvciBjb2RlICh0aGUgaGV4IGNvZGUgYXMgdXNlZCBpbgpIVE1MKS4K
Cj1oZWFkMiBXaGF0IGhhcHBlbnMgaWYgYSB0aWNrZXQgbWF0Y2hlcyBzZXZlcmFsIGhvb2tzPwoK
VGhlIGhvb2tzIGFyZSBwcmlvcml0aXplZCAodmlhIFN5c0NvbmZpZykgYW5kIHRoZSBob29rcyBh
cmUgY2FsbGVkIGluIHByaW9yaXR5IG9yZGVyIGFuZCBhcyBzb29uCmFzIG9uZSBob29rIG1hdGNo
ZXMsIHRoZSBvdGhlciBob29rcyBhcmUgbm90IGNhbGxlZC4gVGhpcyBpcyB0byBlbnN1cmUgdGhh
dCB0aGUgcm93IGlzIGNvbG9yaXplZAp3aXRoIHRoZSBtb3N0IGltcG9ydGFudCBjb2xvci4KCj1o
ZWFkMSBDT05GSUdVUkFUSU9OCgpUaGVyZSBpcyBvbmx5IG9uZSBjb25maWcgb3B0aW9uIHRoYXQg
aXMgcmVhbGx5IG5lZWRlZDogVGlja2V0T3ZlcnZpZXc6Okhvb2tzIChHcm91cCBUaWNrZXQsIApT
dWJncm91cCBUaWNrZXRPdmVydmlldykuIFRoaXMgaXMgYSBoYXNoIHdoZXJlIHRoZSBrZXlzIHJl
cHJlc2VudCB0aGUgcHJpb3JpdHkuIFRoZSBsb3dlciB0aGUKcHJpb3JpdHkgdGhlIG1vcmUgaW1w
b3J0YW50IGlzIHRoZSBob29rLiBUaGUgdmFsdWUgaXMgdGhlIG1vZHVsZSBuYW1lIHRoYXQgaW1w
bGVtZW50cyB0aGUgaG9vay4KClRoaXMgcGFja2FnZSBjb21lcyB3aXRoIG9uZSBzYW1wbGUgaG9v
ayB0aGF0IGlkZW50aWZpZXMgdGlja2V0cyBpbiB0aGUgcXVldWUgIkp1bmsiLgoKPWhlYWQxIE9X
TiBIT09LUwoKVG8gd3JpdGUgb3duIGhvb2tzIGlzIHJlYWxseSBlYXN5IGZvciBldmVyeW9uZSB3
aG8ga25vd3MgYSBiaXQgb2YgUGVybCBhbmQgT1RSUy4gQSBob29rIGlzIGEKUGVybCBtb2R1bGUg
dGhhdCBtZWV0cyBzb21lIHJlcXVpcmVtZW50czoKCj1vdmVyIDQKCj1pdGVtICogT2JqZWN0IG9y
aWVudGVkCgpUaGUgaG9vayBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZCB3aXRoIG9iamVjdCBvcmll
bnRhdGlvbiBhbmQgYSBtZXRob2QgbmFtZWQgQzxuZXc+ICh0aGF0IGlzCnRoZSBjb25zdHJ1Y3Rv
cikuIEV2ZXJ5Ym9keSB3aG8gaGFzIHdyaXR0ZW4gc29tZSBPVFJTIG1vZHVsZXMgeWV0LCBzaG91
bGQga25vdyB0aGlzLgoKPWl0ZW0gKiBSdW4oKQoKVGhlIFJ1biBtZXRob2QgZ2V0cyB0aGUgdGlj
a2V0IElEIGFzIGEgcGFyYW1ldGVyIGFuZCB0aGlzIG1ldGhvZCBoYXMgdG8gcmV0dXJuIHRoZSBo
ZXggdmFsdWUKb2YgdGhlIGNvbG9yIGlmIHRoZSB0aWNrZXQgbWVldHMgdGhlIGNyaXRlcmlhIC0g
Qzx1bmRlZj4gb3RoZXJ3aXNlLgoKPWJhY2sKCj1oZWFkMiBFeGFtcGxlCgogIHN1YiBSdW4gewog
ICAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogIAogICAgICAjIGNoZWNrIG5lZWRlZCBz
dHVmZgogICAgICBmb3IgbXkgJE5lZWRlZCAocXcoVGlja2V0SUQpKSB7CiAgICAgICAgICBpZiAo
ICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5M
b2coCiAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAg
ICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgICApOwogICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgfQogIAogICAgICBteSAlVGlja2V0RGF0
YSA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+VGlja2V0R2V0KAogICAgICAgICAgVGlja2V0SUQg
PT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgKTsKICAKICAgICAgcmV0dXJuIGlmICRUaWNrZXRE
YXRhe1F1ZXVlfSBuZSAnSnVuayc7CiAgICAgIHJldHVybiAkU2VsZi0+e0NvbmZpZ09iamVjdH0t
PkdldCgnSG9vazo6SnVuaycpOyAjIGNkY2RjZAogIH0KCj1oZWFkMSBMSUNFTlNFIEFORCBBVVRI
T1IKCkF1dGhvcjogUmVuZWUgQmFlY2tlciBFPGx0Pm9wYXJAcGVybC1zZXJ2aWNlcy5kZUU8Z3Q+
CkxpY2Vuc2U6IEFHUEwgMwoK
Ly8gLS0KLy8gUGVybFNlcnZpY2VzLlRpY2tldE92ZXJ2aWV3LmpzIC0gcHJvdmlkZXMgZnVuY3Rp
b25zIGZvciBmb3JtIGhhbmRsaW5nCi8vIENvcHlyaWdodCAoQykgMjAxMC0yMDE0IFBlcmwtU2Vy
dmljZXMuZGUsIGh0dHA6Ly9wZXJsLXNlcnZpY2VzLmRlCi8vIC0tCi8vICRJZDogUGVybFNlcnZp
Y2VzLlRpY2tldE92ZXJ2aWV3LmpzLHYgMS4yIDIwMTEvMDQvMTggMTc6MzE6MDYgcmIgRXhwICQK
Ly8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFku
IEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5z
ZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQovLyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxl
LCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgovLyAtLQoKInVzZSBz
dHJpY3QiOwoKdmFyIFBlcmxTZXJ2aWNlcyA9IFBlcmxTZXJ2aWNlcyB8fCB7fTsKCi8qKgogKiBA
bmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIFBlcmxTZXJ2aWNlcy5UaWNrZXRPdmVy
dmlldwogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyBhbGwg
Zm9ybSBmdW5jdGlvbnMuCiAqLwpQZXJsU2VydmljZXMuVGlja2V0T3ZlcnZpZXcgPSAoZnVuY3Rp
b24gKFRhcmdldE5TKSB7CgogICAgdmFyIENvdW50ZXIgPSAwOwoKICAgIC8qKgogICAgICogQGZ1
bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBmaWxs
cyB0aGUgZm9ybSB3aXRoIHRoZSBpbmZvIGZyb20gdGVtcGxhdGUgCiAgICAgKiBAcGFyYW0gSnNv
bkRhdGEgLSB0aGUgdGlja2V0dGVtcGxhdGUgYXMganNvbmRhdGEKICAgICAqIEByZXR1cm4gbm90
aGluZwogICAgICovCiAgICBUYXJnZXROUy5Db2xvcml6ZVJvd3MgPSBmdW5jdGlvbiAoIEZvcmNl
Q29sb3JpemUgKSB7CiAgICAgICAgaWYgKCBDb3VudGVyKysgPiAwICYmICggIUZvcmNlQ29sb3Jp
emUgfHwgRm9yY2VDb2xvcml6ZSAhPSAxICkgKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICB9CgogICAgICAgICQoICJ0ci5Ib29rZWQiICkuZWFjaChmdW5jdGlvbigpewogICAgICAgICAg
ICB2YXIgcm93ICAgICAgICAgPSAkKHRoaXMpOwogICAgICAgICAgICB2YXIgY2xhc3NfbGlzdCAg
PSByb3cuYXR0ciggJ2NsYXNzJyApOwogICAgICAgICAgICBpZiAoIGNsYXNzX2xpc3QubWF0Y2go
IC9Ib29rZWRfKFtBLUZhLXowLTldKykvICkgKSB7CiAgICAgICAgICAgICAgICB2YXIgY29sb3Ig
PSBSZWdFeHAuJDE7CiAgICAgICAgICAgICAgICByb3cuY2hpbGRyZW4oJ3RkJykuZWFjaCggZnVu
Y3Rpb24oaW5kZXgsIGNlbGwpIHsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNzcyggJ2Jh
Y2tncm91bmQtY29sb3InLCAnIycgKyBjb2xvciApOwogICAgICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgIH0KCiAgICAgICAgICAgIGlmICggY2xhc3NfbGlzdC5tYXRjaCggL0hvb2tlZEZvbnRf
KFtBLUZhLXowLTldKykvICkgKSB7CiAgICAgICAgICAgICAgICB2YXIgY29sb3IgPSBSZWdFeHAu
JDE7CiAgICAgICAgICAgICAgICByb3cuY2hpbGRyZW4oJ3RkJykuZWFjaCggZnVuY3Rpb24oaW5k
ZXgsIGNlbGwpIHsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNzcyggJ2NvbG9yJywgJyMn
ICsgY29sb3IgKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgaWYgKCBjbGFzc19saXN0Lm1hdGNoKCAvSG9va2VkQ29sdW1uXyhbMC05XSspXyhbQS1GYS16
MC05XSspLyApICkgewogICAgICAgICAgICAgICAgdmFyIGNvbG9yID0gUmVnRXhwLiQyOwogICAg
ICAgICAgICAgICAgdmFyIG5lZWRlZF9pbmRleCA9IFJlZ0V4cC4kMTsKCiAgICAgICAgICAgICAg
ICByb3cuY2hpbGRyZW4oJ3RkJykuZWFjaCggZnVuY3Rpb24oaW5kZXgsIGNlbGwpIHsKICAgICAg
ICAgICAgICAgICAgICBpZiAoIGluZGV4ICE9IG5lZWRlZF9pbmRleCApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg
ICAgICAgJCh0aGlzKS5jc3MoICdiYWNrZ3JvdW5kLWNvbG9yJywgJyMnICsgY29sb3IgKTsKICAg
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9OwoKICAgIHJl
dHVybiBUYXJnZXROUzsKfShQZXJsU2VydmljZXMuVGlja2V0T3ZlcnZpZXcgfHwge30pKTsK
2017-09-20 19:47:17reneeb-ThinkPad-E560