home.svg
Home
About
EV
List
A
About
Album
AnimateOnLoad
AnimateOnScroll
API
B
BIO
Blog
m_blog
C
Category
Church
Contact
CTA
DE
Dev
Email
Events
FG
Google
FAQ
Flash Messages
Footer
Form
HIL
Headings
Home-Page
Integrations
Lesson
MN
Misc
Modules
OP
Pagination
Portfolio
Product
QR
Quote
React
Restaurant
ST
Team
Test
Testimonials
Service
Shopping
Svelte5
U-Z
Vue3
yii2
Contact
Google
DesignA
DesignB
Email
DesignA
EasyAppt
Form
-> Contact ->
Google
DesignA
DesignB
(1) this form module depend on module php_gp1. At the inertMenu, run ",topC,php_gp1"
(2) also use UpdateModuleVar1 to update email server settings
(3) This module will do three thing
a. Send mail to admin email
b. Send mail to submitter email
Title
TBA
Different image
Page,idxx-xx,oneColumn,
oneColumn/id15-41,Click to clipboard
ezE6IHsnZW4nOiB7J1NsaWRlVHlwZSc6ICdUaW55TUNFJywKICAgICAgICAgICAgJ2FJbWFnZSc6ICcnLAogICAgICAgICAgICAnYUxhYmVsJzogJycsCiAgICAgICAgICAgICdhZGRDbGFzcyc6ICcnLAogICAgICAgICAgICAnY29kZSc6ICc8ZGl2IGNsYXNzPSJteS1jb250YWN0LWZvcm0gY3RleHQiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzxmb3JtIHJvbGU9ImZvcm0iIG1ldGhvZD0icG9zdCIgJwogICAgICAgICAgICAgICAgICAgICdhY3Rpb249ImNvbnRhY3RfcHJvYy5waHAiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0iZmxvYXQtcmlnaHQiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgPGxpPigxKSB0aGlzIGZvcm0gbW9kdWxlIGRlcGVuZCBvbiBtb2R1bGUgcGhwX2dwMS4gQXQgJwogICAgICAgICAgICAgICAgICAgICd0aGUgaW5lcnRNZW51LCBydW4gIix0b3BDLHBocF9ncDEiPC9saT5cclxuJwogICAgICAgICAgICAgICAgICAgICcgIDxsaT4oMikgYWxzbyB1c2UgVXBkYXRlTW9kdWxlVmFyMSB0byB1cGRhdGUgZW1haWwgJwogICAgICAgICAgICAgICAgICAgICdzZXJ2ZXIgc2V0dGluZ3M8L2xpPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgPGxpPigzKSBUaGlzIG1vZHVsZSB3aWxsIGRvIHRocmVlIHRoaW5nIDx1bD5cclxuJwogICAgICAgICAgICAgICAgICAgICcgICAgPGxpPiBhLiBTZW5kIG1haWwgdG8gYWRtaW4gZW1haWwgPC9saT5cclxuJwogICAgICAgICAgICAgICAgICAgICcgICAgPGxpPiBiLiBTZW5kIG1haWwgdG8gc3VibWl0dGVyIGVtYWlsIDwvbGk+XHJcbicKICAgICAgICAgICAgICAgICAgICAnICAgIDwvdWw+XHJcbicKICAgICAgICAgICAgICAgICAgICAnICA8L2xpPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgPC91bD5cclxuJwogICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj5cclxuJwogICAgICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0iZW1haWwiIHBsYWNlaG9sZGVyPSIgWW91ciBlbWFpbCIgJwogICAgICAgICAgICAgICAgICAgICdjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJlbWFpbCIgc2l6ZT0iNDUiICcKICAgICAgICAgICAgICAgICAgICAnb25rZXlwcmVzcz0icmV0dXJuIGRpc2FibGVFbnRlcktleShldmVudCkiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzwvZGl2PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCBwbGFjZWhvbGRlcj0iIFlvdXIgbmFtZSIgY2xhc3M9ImZvcm0tY29udHJvbCIgJwogICAgICAgICAgICAgICAgICAgICduYW1lPSJyZXF1c2VybmFtZSIgdHlwZT0idGV4dCIgc2l6ZT0iNDUiICcKICAgICAgICAgICAgICAgICAgICAnb25rZXlwcmVzcz0icmV0dXJuIGRpc2FibGVFbnRlcktleShldmVudCkiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzwvZGl2PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCBwbGFjZWhvbGRlcj0iIFN1YmplY3QiIGNsYXNzPSJmb3JtLWNvbnRyb2wiICcKICAgICAgICAgICAgICAgICAgICAnbmFtZT0ic3ViamVjdCIgdHlwZT0idGV4dCIgc2l6ZT0iNDUiIHZhbHVlPSIiICcKICAgICAgICAgICAgICAgICAgICAnb25rZXlwcmVzcz0icmV0dXJuIGRpc2FibGVFbnRlcktleShldmVudCkiPiBcclxuJwogICAgICAgICAgICAgICAgICAgICc8L2Rpdj5cclxuJwogICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj5cclxuJwogICAgICAgICAgICAgICAgICAgICc8aDQ+VGl0bGU8L2g0PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzx0ZXh0YXJlYSBjbGFzcz0iZm9ybS1jb250cm9sIiByb3dzPSI4IiAnCiAgICAgICAgICAgICAgICAgICAgJ25hbWU9Im1lc3NhZ2UiPlRCQTwvdGV4dGFyZWE+IFxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzwvZGl2PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzwvZGl2PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzx0YWJsZT48dGJvZHk+PHRyPjx0ZD5cclxuJwogICAgICAgICAgICAgICAgICAgICc8aW1nIGlkPSJjYXB0Y2hhIiAnCiAgICAgICAgICAgICAgICAgICAgJ3NyYz0iL3BocC9zZWN1cmltYWdlL3NlY3VyaW1hZ2Vfc2hvdy5waHAiIGFsdD0iQ0FQVENIQSAnCiAgICAgICAgICAgICAgICAgICAgJ0ltYWdlIj5cclxuJwogICAgICAgICAgICAgICAgICAgICc8L3RkPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzx0ZD4gJm5ic3A7Jm5ic3A7ICA8c3BhbiBjbGFzcz0iZmFzICcKICAgICAgICAgICAgICAgICAgICAnZmEtbG9uZy1hcnJvdy1hbHQtcmlnaHQiPjwvc3Bhbj4gICZuYnNwOyZuYnNwO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjYXB0Y2hhX2NvZGUiIHNpemU9IjEwIiAnCiAgICAgICAgICAgICAgICAgICAgJ21heGxlbmd0aD0iNiI+XHJcbicKICAgICAgICAgICAgICAgICAgICAnPGEgaHJlZj0iIyIgJwogICAgICAgICAgICAgICAgICAgICdvbmNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2NhcHRjaGFcJykuc3JjID0gJwogICAgICAgICAgICAgICAgICAgICInL3BocC9zZWN1cmltYWdlL3NlY3VyaW1hZ2Vfc2hvdy5waHA/JyArIE1hdGgucmFuZG9tKCk7ICIKICAgICAgICAgICAgICAgICAgICAncmV0dXJuIGZhbHNlIiBjbGFzcz0iYnRuIGJ0bi13YXJuaW5nIGJ0bi1zbSI+RGlmZmVyZW50ICcKICAgICAgICAgICAgICAgICAgICAnaW1hZ2U8L2E+XHJcbicKICAgICAgICAgICAgICAgICAgICAnPC90ZD5cclxuJwogICAgICAgICAgICAgICAgICAgICc8L3RyPjwvdGJvZHk+PC90YWJsZT5cclxuJwogICAgICAgICAgICAgICAgICAgICc8L2Rpdj5cclxuJwogICAgICAgICAgICAgICAgICAgICc8L2Zvcm0+XHJcbicKICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JywKICAgICAgICAgICAgJ2NvZGVJbmMnOiAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjIGNvbnRlbnQgYmV0d2VlbiBzdHlsZUluYyB0YWcgd2lsbCBiZSBhZGQgdG8gdGhlICcKICAgICAgICAgICAgICAgICAgICAgICAnYmVmb3JlIHRoZSBjbG9zaW5nIGhlYWQgdGFnc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPHN0eWxlSW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwhLS0gc3R5bGVJbmMgSW5jbHVkZWQgZnJvbSBfSURfIC0tPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzxzdHlsZT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8L3N0eWxlPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPC9zdHlsZUluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyMgY29udGVudCBiZXR3ZWVuIHNjcmlwdEluYyB0YWcgd2lsbCBiZSBhZGQgdG8gdGhlICcKICAgICAgICAgICAgICAgICAgICAgICAnYmVmb3JlIHRoZSBjbG9zaW5nIGJvZHkgdGFnc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPHNjcmlwdEluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8IS0tIHNjcmlwdEluYyBJbmNsdWRlZCBmcm9tIF9JRF8gLS0+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPHNjcmlwdD5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbiBkaXNhYmxlRW50ZXJLZXkoZSlcclxuJwogICAgICAgICAgICAgICAgICAgICAgICd7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICB2YXIga2V5OyAgICAgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgaWYod2luZG93LmV2ZW50KVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICBrZXkgPSB3aW5kb3cuZXZlbnQua2V5Q29kZTsgLy9JRVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgZWxzZVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICBrZXkgPSBlLndoaWNoOyAvL2ZpcmVmb3ggICAgICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgIHJldHVybiAoa2V5ICE9IDEzKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICd9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPC9zY3JpcHQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8L3NjcmlwdEluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjIEVuZFxyXG4nLAogICAgICAgICAgICAnY29tcG9zZXJKU09OJzogJycsCiAgICAgICAgICAgICdkeW5hbWljQmxvY2snOiAnJywKICAgICAgICAgICAgJ2tleXdvcmRzJzogJycsCiAgICAgICAgICAgICdwaHBGaWxlJzogJzw/cGhwIC8qIGNvbnRhY3RfcHJvYy5waHAgKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICdzZXNzaW9uX3N0YXJ0KCk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAiJHIgPSBleHBsb2RlKCcvJywgJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgJy8vIHJlbGF0aXZlIHBhdGggdG8gZG9jdW1lbnQgcm9vdFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyRkb2Nyb290ID0gYXJyYXlfcmVkdWNlKGFycmF5X3NsaWNlKCRyLCAyKSwgJwogICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbigkYWNjLCAkaXRlbSkgeyByZXR1cm4gJGFjYy4nLi4vJzt9LCcnKTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlX29uY2UgJGRvY3Jvb3QgLiAnCiAgICAgICAgICAgICAgICAgICAgICAgIicvcGhwL3NlY3VyaW1hZ2Uvc2VjdXJpbWFnZS5waHAnOyAkc2VjdXJpbWFnZSA9IG5ldyAiCiAgICAgICAgICAgICAgICAgICAgICAgJ1NlY3VyaW1hZ2UoKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgImlmIChpc3NldCgkX1JFUVVFU1RbJ2VtYWlsJ10pKSB7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnICAvLyByZWxhdGl2ZSBwYXRoIHRvIGRvY3VtZW50IHJvb3RcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIHJlcXVpcmUgJGRvY3Jvb3QgLiAnCiAgICAgICAgICAgICAgICAgICAgICAgIicvcGhwL1BIUE1haWxlci9QSFBNYWlsZXJBdXRvbG9hZC5waHAnO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgLy9pZiAiZW1haWwiIGlzIGZpbGxlZCBvdXQsIHNlbmQgZW1haWxcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIC8vICRhc29uZUZpbGUtPnNhdmVKU09OKGFycmF5KDEsIDIgKSk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICBlY2hvICI8ZGl2IGNsYXNzPVwncGFuZWwgcGFuZWwtZGVmYXVsdFwnPiA8ZGl2ICcKICAgICAgICAgICAgICAgICAgICAgICAnY2xhc3M9XCdwYW5lbC1ib2R5XCc+IDxkaXYgY2xhc3M9XCdmb3JtLXJlc3BcJz4iO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgaWYgKCRzZWN1cmltYWdlLT5jaGVjaygkX1BPU1RbJ2NhcHRjaGFfY29kZSddKSA9PSAiCiAgICAgICAgICAgICAgICAgICAgICAgJ2ZhbHNlKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAvLyB0aGUgY29kZSB3YXMgaW5jb3JyZWN0XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAvLyB5b3Ugc2hvdWxkIGhhbmRsZSB0aGUgZXJyb3Igc28gdGhhdCB0aGUgZm9ybSAnCiAgICAgICAgICAgICAgICAgICAgICAgInByb2Nlc3NvciBkb2Vzbid0IGNvbnRpbnVlXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAvLyBvciB5b3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGNvZGUgaWYgdGhlcmUgaXMgJwogICAgICAgICAgICAgICAgICAgICAgICdubyB2YWxpZGF0aW9uIG9yIHlvdSBkbyBub3Qga25vdyBob3dcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgIGVjaG8gIjxoMz5UaGUgc2VjdXJpdHkgY29kZSBlbnRlcmVkIHdhcyAnCiAgICAgICAgICAgICAgICAgICAgICAgJ2luY29ycmVjdC48L2gzPiI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICBlY2hvICI8aDM+UGxlYXNlIGdvIDxhICcKICAgICAgICAgICAgICAgICAgICAgICAiaHJlZj0namF2YXNjcmlwdDpoaXN0b3J5LmdvKC0xKSc+YmFjazwvYT4gYW5kIHRyeSAiCiAgICAgICAgICAgICAgICAgICAgICAgJ2FnYWluLjwvaDM+IjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgIGV4aXQ7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAkbWFpbCA9IG5ldyBQSFBNYWlsZXI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnLy9UZWxsIFBIUE1haWxlciB0byB1c2UgU01UUFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJy8vVGVsbCBQSFBNYWlsZXIgdG8gdXNlIFNNVFBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICckbWFpbC0+aXNTTVRQKCk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnLy9FbmFibGUgU01UUCBkZWJ1Z2dpbmdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcvLyAwID0gb2ZmIChmb3IgcHJvZHVjdGlvbiB1c2UpXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnLy8gMSA9IGNsaWVudCBtZXNzYWdlc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJy8vIDIgPSBjbGllbnQgYW5kIHNlcnZlciBtZXNzYWdlc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyRtYWlsLT5TTVRQRGVidWcgPSAwO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJy8vQXNrIGZvciBIVE1MLWZyaWVuZGx5IGRlYnVnIG91dHB1dFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiRtYWlsLT5EZWJ1Z291dHB1dCA9ICdodG1sJztcclxuIgogICAgICAgICAgICAgICAgICAgICAgICcvL1NldCB0aGUgaG9zdG5hbWUgb2YgdGhlIG1haWwgc2VydmVyXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnJG1haWwtPkhvc3QgPSAic210cC5iaXptYWlsLnlhaG9vLmNvbSI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnLy9TZXQgdGhlIFNNVFAgcG9ydCBudW1iZXIgLSBsaWtlbHkgdG8gYmUgMjUsIDQ2NSBvciAnCiAgICAgICAgICAgICAgICAgICAgICAgJzU4N1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyRtYWlsLT5Qb3J0ID0gNDY1O1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiRtYWlsLT5TTVRQU2VjdXJlID0gJ3NzbCc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnLy9XaGV0aGVyIHRvIHVzZSBTTVRQIGF1dGhlbnRpY2F0aW9uXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnJG1haWwtPlNNVFBBdXRoID0gdHJ1ZTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcvL1VzZXJuYW1lIHRvIHVzZSBmb3IgU01UUCBhdXRoZW50aWNhdGlvblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyRtYWlsLT5Vc2VybmFtZSA9ICJuby1yZXBseUBhc29uZWxpc3QuY29tIjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcvL1Bhc3N3b3JkIHRvIHVzZSBmb3IgU01UUCBhdXRoZW50aWNhdGlvblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyRtYWlsLT5QYXNzd29yZCA9ICJjbGVnaXZtYmlwc2pzZ3d0IjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcvL1NldCB3aG8gdGhlIG1lc3NhZ2UgaXMgdG8gYmUgc2VudCBmcm9tXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAiJG1haWwtPnNldEZyb20oJ25vLXJlcGx5QGFzb25lbGlzdC5jb20nLCAiCiAgICAgICAgICAgICAgICAgICAgICAgIiRfU0VSVkVSWydIVFRQX0hPU1QnXS4nIFN1Ym1pdCcpO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgJy8vU2V0IGFuIGFsdGVybmF0aXZlIHJlcGx5LXRvIGFkZHJlc3NcclxuJwogICAgICAgICAgICAgICAgICAgICAgICIkbWFpbC0+YWRkUmVwbHlUbygnRG8gbm90IHJlcGx5JywgJ0RvIG5vdCByZXBseScpO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgJy8vU2V0IHdobyB0aGUgbWVzc2FnZSBpcyB0byBiZSBzZW50IHRvXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAiJG1haWwtPmFkZEFkZHJlc3MoJ21hcmtAd2ViYXNvbmUuY29tJywgJ0RvIG5vdCAiCiAgICAgICAgICAgICAgICAgICAgICAgIlJlcGx5Jyk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAiICAkbWFpbC0+YWRkQWRkcmVzcygkX1JFUVVFU1RbJ2VtYWlsJ10sICdEbyBub3QgIgogICAgICAgICAgICAgICAgICAgICAgICJSZXBseScpO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJy8vU2V0IHRoZSBzdWJqZWN0IGxpbmVcclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIC8vc2VuZCBlbWFpbFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgJG1haWwtPlN1YmplY3QgPSAnKERvIG5vdCByZXBseSkgdmlhICIKICAgICAgICAgICAgICAgICAgICAgICAnbWFya0B3ZWJhc29uZS5jb20gZnJvbSAnCiAgICAgICAgICAgICAgICAgICAgICAgIicuZ2V0aG9zdG5hbWUoKS4nOicuJF9SRVFVRVNUWydlbWFpbCddO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgIiAgJG1zZyA9ICc8cD5XZWJzaXRlOiBGb3J3YXJkIGVtYWlsbCBzdWJqZWN0PC9wPic7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAiICAkbXNnIC49ICc8cD5Gcm9tOiAgIgogICAgICAgICAgICAgICAgICAgICAgICdcJy4kX1JFUVVFU1RbXCdyZXF1c2VybmFtZVwnXS4iPC9wPlxcbiI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAiICAkbXNnIC49ICc8cD5FbWFpbDogIgogICAgICAgICAgICAgICAgICAgICAgICdcJy4kX1JFUVVFU1RbXCdlbWFpbFwnXS4iPC9wPlxcbiI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAiICAkbXNnIC49ICc8cD5TdWJqZWN0OiAiCiAgICAgICAgICAgICAgICAgICAgICAgJ1wnLiRfUkVRVUVTVFtcJ3N1YmplY3RcJ10uIjwvcD5cXG4iO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2Rpc2NvdW50Q29kZScsICRfUkVRVUVTVCkpICIKICAgICAgICAgICAgICAgICAgICAgICAne1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgJG1zZyAuPSAnRGlzY291bnQgY29kZSA6ICIKICAgICAgICAgICAgICAgICAgICAgICAnXCcuJF9SRVFVRVNUW1wnZGlzY291bnRDb2RlXCddLiJcXG4iO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgaWYgKGFycmF5X2tleV9leGlzdHMoJ0hvbWVQYXR0ZXJuJywgJF9SRVFVRVNUKSkge1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgJG1zZyAuPSAnSG9tZSBQYXR0ZXJuOiAiCiAgICAgICAgICAgICAgICAgICAgICAgJ1wnLiRfUkVRVUVTVFtcJ0hvbWVQYXR0ZXJuXCddLiJcXG4iO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgJG1zZyAuPSAiPHByZT5NZXNzYWdlOlxcbiI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAkbXNnIC49ICRfUkVRVUVTVFtcJ21lc3NhZ2VcJ10uIjwvcHJlPlxcbiI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAkbWFpbC0+bXNnSFRNTCgkbXNnKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIGlmICgkbWFpbC0+c2VuZCgpKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICBlY2hvICI8aDM+VGhhbmtzIGZvciB5b3VyIHN1Ym1pdDwvaDM+IjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIH0gZWxzZSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICBlY2hvICI8aDM+IFN5c3RlbSBFcnJvcjogU29ycnkgc3lzdGVtICcKICAgICAgICAgICAgICAgICAgICAgICAnZmFpbHVyZTwvaDM+IjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ31cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc/PlxyXG4nLAogICAgICAgICAgICAncGhwRmlsZUEnOiAnJywKICAgICAgICAgICAgJ3BocEZpbGVCJzogJycsCiAgICAgICAgICAgICd0Y29kZSc6ICcnLAogICAgICAgICAgICAndmNvZGUnOiAnJ30sCiAgICAgJ2VuLVVTJzogeydTbGlkZVR5cGUnOiAnVGlueU1DRScsCiAgICAgICAgICAgICAgICdhSW1hZ2UnOiAnJywKICAgICAgICAgICAgICAgJ2FMYWJlbCc6ICcnLAogICAgICAgICAgICAgICAnYWRkQ2xhc3MnOiAnJywKICAgICAgICAgICAgICAgJ2NvZGUnOiAnPGRpdiBjbGFzcz0ibXktY29udGFjdC1mb3JtIGN0ZXh0Ij5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8Zm9ybSByb2xlPSJmb3JtIiBtZXRob2Q9InBvc3QiICcKICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uPSJjb250YWN0X3Byb2MucGhwIj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8dWwgY2xhc3M9ImZsb2F0LXJpZ2h0Ij5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIDxsaT4oMSkgdGhpcyBmb3JtIG1vZHVsZSBkZXBlbmQgb24gbW9kdWxlIHBocF9ncDEuICcKICAgICAgICAgICAgICAgICAgICAgICAnQXQgdGhlIGluZXJ0TWVudSwgcnVuICIsdG9wQyxwaHBfZ3AxIjwvbGk+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICA8bGk+KDIpIGFsc28gdXNlIFVwZGF0ZU1vZHVsZVZhcjEgdG8gdXBkYXRlIGVtYWlsICcKICAgICAgICAgICAgICAgICAgICAgICAnc2VydmVyIHNldHRpbmdzPC9saT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIDxsaT4oMykgVGhpcyBtb2R1bGUgd2lsbCBkbyB0aHJlZSB0aGluZyA8dWw+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIDxsaT4gYS4gU2VuZCBtYWlsIHRvIGFkbWluIGVtYWlsIDwvbGk+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIDxsaT4gYi4gU2VuZCBtYWlsIHRvIHN1Ym1pdHRlciBlbWFpbCA8L2xpPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICA8L3VsPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgPC9saT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIDwvdWw+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9ImVtYWlsIiBwbGFjZWhvbGRlcj0iIFlvdXIgZW1haWwiICcKICAgICAgICAgICAgICAgICAgICAgICAnY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0iZW1haWwiIHNpemU9IjQ1IiAnCiAgICAgICAgICAgICAgICAgICAgICAgJ29ua2V5cHJlc3M9InJldHVybiBkaXNhYmxlRW50ZXJLZXkoZXZlbnQpIj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8aW5wdXQgcGxhY2Vob2xkZXI9IiBZb3VyIG5hbWUiIGNsYXNzPSJmb3JtLWNvbnRyb2wiICcKICAgICAgICAgICAgICAgICAgICAgICAnbmFtZT0icmVxdXNlcm5hbWUiIHR5cGU9InRleHQiIHNpemU9IjQ1IiAnCiAgICAgICAgICAgICAgICAgICAgICAgJ29ua2V5cHJlc3M9InJldHVybiBkaXNhYmxlRW50ZXJLZXkoZXZlbnQpIj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8aW5wdXQgcGxhY2Vob2xkZXI9IiBTdWJqZWN0IiBjbGFzcz0iZm9ybS1jb250cm9sIiAnCiAgICAgICAgICAgICAgICAgICAgICAgJ25hbWU9InN1YmplY3QiIHR5cGU9InRleHQiIHNpemU9IjQ1IiB2YWx1ZT0iIiAnCiAgICAgICAgICAgICAgICAgICAgICAgJ29ua2V5cHJlc3M9InJldHVybiBkaXNhYmxlRW50ZXJLZXkoZXZlbnQpIj4gXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPGg0PlRpdGxlPC9oND5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8dGV4dGFyZWEgY2xhc3M9ImZvcm0tY29udHJvbCIgcm93cz0iOCIgJwogICAgICAgICAgICAgICAgICAgICAgICduYW1lPSJtZXNzYWdlIj5UQkE8L3RleHRhcmVhPiBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0Ij5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8dGFibGU+PHRib2R5Pjx0cj48dGQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPGltZyBpZD0iY2FwdGNoYSIgJwogICAgICAgICAgICAgICAgICAgICAgICdzcmM9Ii9waHAvc2VjdXJpbWFnZS9zZWN1cmltYWdlX3Nob3cucGhwIiBhbHQ9IkNBUFRDSEEgJwogICAgICAgICAgICAgICAgICAgICAgICdJbWFnZSI+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPC90ZD5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8dGQ+ICZuYnNwOyZuYnNwOyAgPHNwYW4gY2xhc3M9ImZhcyAnCiAgICAgICAgICAgICAgICAgICAgICAgJ2ZhLWxvbmctYXJyb3ctYWx0LXJpZ2h0Ij48L3NwYW4+ICAmbmJzcDsmbmJzcDtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY2FwdGNoYV9jb2RlIiBzaXplPSIxMCIgJwogICAgICAgICAgICAgICAgICAgICAgICdtYXhsZW5ndGg9IjYiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzxhIGhyZWY9IiMiICcKICAgICAgICAgICAgICAgICAgICAgICAnb25jbGljaz0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdjYXB0Y2hhXCcpLnNyYyA9ICcKICAgICAgICAgICAgICAgICAgICAgICAiJy9waHAvc2VjdXJpbWFnZS9zZWN1cmltYWdlX3Nob3cucGhwPycgKyAiCiAgICAgICAgICAgICAgICAgICAgICAgJ01hdGgucmFuZG9tKCk7IHJldHVybiBmYWxzZSIgY2xhc3M9ImJ0biBidG4td2FybmluZyAnCiAgICAgICAgICAgICAgICAgICAgICAgJ2J0bi1zbSI+RGlmZmVyZW50IGltYWdlPC9hPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwvdGQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPC90cj48L3Rib2R5PjwvdGFibGU+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPC9mb3JtPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2PicsCiAgICAgICAgICAgICAgICdjb2RlSW5jJzogJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnIyBjb250ZW50IGJldHdlZW4gc3R5bGVJbmMgdGFnIHdpbGwgYmUgYWRkIHRvIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZSB0aGUgY2xvc2luZyBoZWFkIHRhZ3NcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzdHlsZUluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8IS0tIHN0eWxlSW5jIEluY2x1ZGVkIGZyb20gX0lEXyAtLT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8c3R5bGU+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9zdHlsZT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvc3R5bGVJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjIGNvbnRlbnQgYmV0d2VlbiBzY3JpcHRJbmMgdGFnIHdpbGwgYmUgYWRkIHRvIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZSB0aGUgY2xvc2luZyBib2R5IHRhZ3NcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzY3JpcHRJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPCEtLSBzY3JpcHRJbmMgSW5jbHVkZWQgZnJvbSBfSURfIC0tPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzY3JpcHQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb24gZGlzYWJsZUVudGVyS2V5KGUpXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAne1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgdmFyIGtleTsgICAgICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgIGlmKHdpbmRvdy5ldmVudClcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAga2V5ID0gd2luZG93LmV2ZW50LmtleUNvZGU7IC8vSUVcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgIGVsc2VcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAga2V5ID0gZS53aGljaDsgLy9maXJlZm94ICAgICAgXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICByZXR1cm4gKGtleSAhPSAxMyk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvc2NyaXB0PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9zY3JpcHRJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnIyBFbmRcclxuJywKICAgICAgICAgICAgICAgJ2NvbXBvc2VySlNPTic6ICcnLAogICAgICAgICAgICAgICAnZHluYW1pY0Jsb2NrJzogJycsCiAgICAgICAgICAgICAgICdmaWxlJzogJycsCiAgICAgICAgICAgICAgICdrZXl3b3Jkcyc6ICcnLAogICAgICAgICAgICAgICAncGhwRmlsZSc6ICc8P3BocCAvKiBjb250YWN0X3Byb2MucGhwICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnc2Vzc2lvbl9zdGFydCgpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiRyID0gZXhwbG9kZSgnLycsICRfU0VSVkVSWydSRVFVRVNUX1VSSSddKTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICcvLyByZWxhdGl2ZSBwYXRoIHRvIGRvY3VtZW50IHJvb3RcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICckZG9jcm9vdCA9IGFycmF5X3JlZHVjZShhcnJheV9zbGljZSgkciwgMiksICcKICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24oJGFjYywgJGl0ZW0pIHsgcmV0dXJuICRhY2MuJy4uLyc7fSwnJyk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZV9vbmNlICRkb2Nyb290IC4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICInL3BocC9zZWN1cmltYWdlL3NlY3VyaW1hZ2UucGhwJzsgJHNlY3VyaW1hZ2UgPSBuZXcgIgogICAgICAgICAgICAgICAgICAgICAgICAgICdTZWN1cmltYWdlKCk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICJpZiAoaXNzZXQoJF9SRVFVRVNUWydlbWFpbCddKSkge1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgLy8gcmVsYXRpdmUgcGF0aCB0byBkb2N1bWVudCByb290XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICByZXF1aXJlICRkb2Nyb290IC4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICInL3BocC9QSFBNYWlsZXIvUEhQTWFpbGVyQXV0b2xvYWQucGhwJztcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgIC8vaWYgImVtYWlsIiBpcyBmaWxsZWQgb3V0LCBzZW5kIGVtYWlsXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAvLyAkYXNvbmVGaWxlLT5zYXZlSlNPTihhcnJheSgxLCAyICkpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgZWNobyAiPGRpdiBjbGFzcz1cJ3BhbmVsIHBhbmVsLWRlZmF1bHRcJz4gPGRpdiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgImNsYXNzPSdwYW5lbC1ib2R5Jz4gPGRpdiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzPVwnZm9ybS1yZXNwXCc+IjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICIgIGlmICgkc2VjdXJpbWFnZS0+Y2hlY2soJF9QT1NUWydjYXB0Y2hhX2NvZGUnXSkgPT0gIgogICAgICAgICAgICAgICAgICAgICAgICAgICdmYWxzZSkge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgLy8gdGhlIGNvZGUgd2FzIGluY29ycmVjdFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgLy8geW91IHNob3VsZCBoYW5kbGUgdGhlIGVycm9yIHNvIHRoYXQgdGhlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybSBwcm9jZXNzb3IgZG9lc24ndCBjb250aW51ZVxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgLy8gb3IgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBjb2RlIGlmIHRoZXJlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnaXMgbm8gdmFsaWRhdGlvbiBvciB5b3UgZG8gbm90IGtub3cgaG93XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICBlY2hvICI8aDM+VGhlIHNlY3VyaXR5IGNvZGUgZW50ZXJlZCB3YXMgJwogICAgICAgICAgICAgICAgICAgICAgICAgICdpbmNvcnJlY3QuPC9oMz4iO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgZWNobyAiPGgzPlBsZWFzZSBnbyA8YSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgImhyZWY9J2phdmFzY3JpcHQ6aGlzdG9yeS5nbygtMSknPmJhY2s8L2E+IGFuZCB0cnkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICdhZ2Fpbi48L2gzPiI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICBleGl0O1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgJG1haWwgPSBuZXcgUEhQTWFpbGVyO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJy8vVGVsbCBQSFBNYWlsZXIgdG8gdXNlIFNNVFBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcvL1RlbGwgUEhQTWFpbGVyIHRvIHVzZSBTTVRQXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnJG1haWwtPmlzU01UUCgpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJy8vRW5hYmxlIFNNVFAgZGVidWdnaW5nXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnLy8gMCA9IG9mZiAoZm9yIHByb2R1Y3Rpb24gdXNlKVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJy8vIDEgPSBjbGllbnQgbWVzc2FnZXNcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcvLyAyID0gY2xpZW50IGFuZCBzZXJ2ZXIgbWVzc2FnZXNcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICckbWFpbC0+U01UUERlYnVnID0gMDtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcvL0FzayBmb3IgSFRNTC1mcmllbmRseSBkZWJ1ZyBvdXRwdXRcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICIkbWFpbC0+RGVidWdvdXRwdXQgPSAnaHRtbCc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAnLy9TZXQgdGhlIGhvc3RuYW1lIG9mIHRoZSBtYWlsIHNlcnZlclxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyRtYWlsLT5Ib3N0ID0gInNtdHAuYml6bWFpbC55YWhvby5jb20iO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJy8vU2V0IHRoZSBTTVRQIHBvcnQgbnVtYmVyIC0gbGlrZWx5IHRvIGJlIDI1LCA0NjUgJwogICAgICAgICAgICAgICAgICAgICAgICAgICdvciA1ODdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICckbWFpbC0+UG9ydCA9IDQ2NTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICIkbWFpbC0+U01UUFNlY3VyZSA9ICdzc2wnO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgJy8vV2hldGhlciB0byB1c2UgU01UUCBhdXRoZW50aWNhdGlvblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyRtYWlsLT5TTVRQQXV0aCA9IHRydWU7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnLy9Vc2VybmFtZSB0byB1c2UgZm9yIFNNVFAgYXV0aGVudGljYXRpb25cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICckbWFpbC0+VXNlcm5hbWUgPSAibm8tcmVwbHlAYXNvbmVsaXN0LmNvbSI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnLy9QYXNzd29yZCB0byB1c2UgZm9yIFNNVFAgYXV0aGVudGljYXRpb25cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICckbWFpbC0+UGFzc3dvcmQgPSAiY2xlZ2l2bWJpcHNqc2d3dCI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnLy9TZXQgd2hvIHRoZSBtZXNzYWdlIGlzIHRvIGJlIHNlbnQgZnJvbVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiRtYWlsLT5zZXRGcm9tKCduby1yZXBseUBhc29uZWxpc3QuY29tJywgIgogICAgICAgICAgICAgICAgICAgICAgICAgICIkX1NFUlZFUlsnSFRUUF9IT1NUJ10uJyBTdWJtaXQnKTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICcvL1NldCBhbiBhbHRlcm5hdGl2ZSByZXBseS10byBhZGRyZXNzXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiJG1haWwtPmFkZFJlcGx5VG8oJ0RvIG5vdCByZXBseScsICdEbyBub3QgIgogICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBseScpO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgJy8vU2V0IHdobyB0aGUgbWVzc2FnZSBpcyB0byBiZSBzZW50IHRvXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiJG1haWwtPmFkZEFkZHJlc3MoJ21hcmtAd2ViYXNvbmUuY29tJywgJ0RvIG5vdCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlcGx5Jyk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAkbWFpbC0+YWRkQWRkcmVzcygkX1JFUVVFU1RbJ2VtYWlsJ10sICdEbyBub3QgIgogICAgICAgICAgICAgICAgICAgICAgICAgICJSZXBseScpO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJy8vU2V0IHRoZSBzdWJqZWN0IGxpbmVcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgIC8vc2VuZCBlbWFpbFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgJG1haWwtPlN1YmplY3QgPSAnKERvIG5vdCByZXBseSkgdmlhICIKICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFya0B3ZWJhc29uZS5jb20gZnJvbSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgIicuZ2V0aG9zdG5hbWUoKS4nOicuJF9SRVFVRVNUWydlbWFpbCddO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgJG1zZyA9ICc8cD5XZWJzaXRlOiBGb3J3YXJkIGVtYWlsbCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInN1YmplY3Q8L3A+JztcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICIgICRtc2cgLj0gJzxwPkZyb206ICAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wnLiRfUkVRVUVTVFtcJ3JlcXVzZXJuYW1lXCddLiI8L3A+XFxuIjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICIgICRtc2cgLj0gJzxwPkVtYWlsOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wnLiRfUkVRVUVTVFtcJ2VtYWlsXCddLiI8L3A+XFxuIjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICIgICRtc2cgLj0gJzxwPlN1YmplY3Q6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAnXCcuJF9SRVFVRVNUW1wnc3ViamVjdFwnXS4iPC9wPlxcbiI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnZGlzY291bnRDb2RlJywgJF9SRVFVRVNUKSkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICd7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAkbXNnIC49ICdEaXNjb3VudCBjb2RlIDogIgogICAgICAgICAgICAgICAgICAgICAgICAgICdcJy4kX1JFUVVFU1RbXCdkaXNjb3VudENvZGVcJ10uIlxcbiI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICB9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnSG9tZVBhdHRlcm4nLCAkX1JFUVVFU1QpKSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3tcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICRtc2cgLj0gJ0hvbWUgUGF0dGVybjogIgogICAgICAgICAgICAgICAgICAgICAgICAgICdcJy4kX1JFUVVFU1RbXCdIb21lUGF0dGVyblwnXS4iXFxuIjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICRtc2cgLj0gIjxwcmU+TWVzc2FnZTpcXG4iO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgJG1zZyAuPSAkX1JFUVVFU1RbXCdtZXNzYWdlXCddLiI8L3ByZT5cXG4iO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgJG1haWwtPm1zZ0hUTUwoJG1zZyk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICBpZiAoJG1haWwtPnNlbmQoKSkge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgZWNobyAiPGgzPlRoYW5rcyBmb3IgeW91ciBzdWJtaXQ8L2gzPiI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICB9IGVsc2Uge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgZWNobyAiPGgzPiBTeXN0ZW0gRXJyb3I6IFNvcnJ5IHN5c3RlbSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmU8L2gzPiI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICB9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICd9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPz5cclxuJywKICAgICAgICAgICAgICAgJ3BocEZpbGVBJzogJycsCiAgICAgICAgICAgICAgICdwaHBGaWxlQic6ICcnLAogICAgICAgICAgICAgICAndGNvZGUnOiAnJywKICAgICAgICAgICAgICAgJ3Zjb2RlJzogJyd9fX0K
Questions or comments
Submit
Page,idxx-xx,oneColumn,
oneColumn/id19-56,Click to clipboard
ezE6IHsnZW4nOiB7J05vdGVzJzogJycsCiAgICAgICAgICAgICdTbGlkZVR5cGUnOiAnVGlueU1DRScsCiAgICAgICAgICAgICdhSW1hZ2UnOiAnJywKICAgICAgICAgICAgJ2FMYWJlbCc6ICdodG1sIGZvcm0nLAogICAgICAgICAgICAnYXN2Z2ZpbGUnOiAnPHN2Zz48L3N2Zz4nLAogICAgICAgICAgICAnY29kZSc6ICc8P3BocFxyXG4nCiAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJ3NldF9lcnJvcl9oYW5kbGVyKGZ1bmN0aW9uKCRfZXJybm8sICRlcnJzdHIpIHtcclxuJwogICAgICAgICAgICAgICAgICAgICcgIC8vIENvbnZlcnQgbm90aWNlLCB3YXJuaW5nLCBldGMuIHRvIGVycm9yLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgdGhyb3cgbmV3IEVycm9yKCRlcnJzdHIpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJ30pO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJyRmaWxlbmFtZSA9ICRyZWxfcm9vdCAuICcKICAgICAgICAgICAgICAgICAgICAiJy9waHAvZ29vZ2xlL3JlY2FwdGNoYS1tYXN0ZXIvc3JjL2F1dG9sb2FkLnBocCc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAnaWYgKCFmaWxlX2V4aXN0cygkZmlsZW5hbWUpKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAnICAgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgICBlY2hvICJUaGUgZmlsZSAkZmlsZW5hbWUgZG9lcyBub3QgZXhpc3QuIDxiciAvPiBVc2UgJwogICAgICAgICAgICAgICAgICAgICdJbnNlcnRNZW51IHRvIGFkZCBwaHAgbGlicmFyaWVzOiAsdG9wQyxwaHBfZ3AxIjtcclxuJwogICAgICAgICAgICAgICAgICAgICcgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgJ31cclxuJwogICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICd0cnkge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgcmVxdWlyZSAkcmVsX3Jvb3QgLiAnCiAgICAgICAgICAgICAgICAgICAgIicvcGhwL2dvb2dsZS9yZWNhcHRjaGEtbWFzdGVyL3NyYy9hdXRvbG9hZC5waHAnO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgIiAgcmVxdWlyZSAnX0FyZWFfL3BocC9teWZvcm0ucGhwJztcclxuIgogICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICcgIC8vIFJlZ2lzdGVyIEFQSSBrZXlzIGF0ICcKICAgICAgICAgICAgICAgICAgICAnaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9yZWNhcHRjaGEvYWRtaW5cclxuJwogICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICcgICRzaXRlS2V5ID0gJwogICAgICAgICAgICAgICAgICAgICInNkxmTEdoa3FBQUFBQUk4RjZmYUNUNEdQWHNUcUZyVWppZmwzMmZjbic7XHJcbiIKICAgICAgICAgICAgICAgICAgICAnICAkc2VjcmV0ID0gJwogICAgICAgICAgICAgICAgICAgICInNkxmTEdoa3FBQUFBQUFkZG8wZDhoQzlzT3dDTkZBZEctSnVrLWRoUCc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAiICBpZiAoaXNzZXQoJF9QT1NUWydnLXJlY2FwdGNoYS1yZXNwb25zZSddKSkge1xyXG4iCiAgICAgICAgICAgICAgICAgICAgJyAgICAvLyBUaGUgUE9TVCBkYXRhIGhlcmUgaXMgdW5maWx0ZXJlZCBiZWNhdXNlIHRoaXMgaXMgJwogICAgICAgICAgICAgICAgICAgICdhbiBleGFtcGxlLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgICAvLyBJbiBwcm9kdWN0aW9uLCAqYWx3YXlzKiBzYW5pdGlzZSBhbmQgdmFsaWRhdGUgeW91ciAnCiAgICAgICAgICAgICAgICAgICAgImlucHV0J1xyXG4iCiAgICAgICAgICAgICAgICAgICAgJyAgICAvLyB2YXJfZXhwb3J0KCRfUE9TVCk7XHJcbicKICAgICAgICAgICAgICAgICAgICAnPz5cclxuJwogICAgICAgICAgICAgICAgICAgICc8P3BocFxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgICAvLyBJZiB0aGUgZm9ybSBzdWJtaXNzaW9uIGluY2x1ZGVzIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgJyJnLWNhcHRjaGEtcmVzcG9uc2UiIGZpZWxkXHJcbicKICAgICAgICAgICAgICAgICAgICAnICAgIC8vIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgc2VydmljZSB1c2luZyB5b3VyICcKICAgICAgICAgICAgICAgICAgICAnc2VjcmV0XHJcbicKICAgICAgICAgICAgICAgICAgICAnICAgICRyZWNhcHRjaGEgPSBuZXcgXFxSZUNhcHRjaGFcXFJlQ2FwdGNoYSgkc2VjcmV0KTtcclxuJwogICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICcgICAgLy8gSWYgZmlsZV9nZXRfY29udGVudHMoKSBpcyBsb2NrZWQgZG93biBvbiB5b3VyIFBIUCAnCiAgICAgICAgICAgICAgICAgICAgJ2luc3RhbGxhdGlvbiB0byBkaXNhbGxvd1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgICAvLyBpdHMgdXNlIHdpdGggVVJMcywgdGhlbiB5b3UgY2FuIHVzZSB0aGUgJwogICAgICAgICAgICAgICAgICAgICdhbHRlcm5hdGl2ZSByZXF1ZXN0IG1ldGhvZCBpbnN0ZWFkLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgICAvLyBUaGlzIG1ha2VzIHVzZSBvZiBmc29ja29wZW4oKSBpbnN0ZWFkLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgICAvLyAgJHJlY2FwdGNoYSA9IG5ldyBcXFJlQ2FwdGNoYVxcUmVDYXB0Y2hhKCRzZWNyZXQsICcKICAgICAgICAgICAgICAgICAgICAnbmV3IFxcUmVDYXB0Y2hhXFxSZXF1ZXN0TWV0aG9kXFxTb2NrZXRQb3N0KCkpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgICAvLyBNYWtlIHRoZSBjYWxsIHRvIHZlcmlmeSB0aGUgcmVzcG9uc2UgYW5kIGFsc28gcGFzcyAnCiAgICAgICAgICAgICAgICAgICAgInRoZSB1c2VyJ3MgSVAgYWRkcmVzc1xyXG4iCiAgICAgICAgICAgICAgICAgICAgJyAgICAkcmVzcCA9ICcKICAgICAgICAgICAgICAgICAgICAiJHJlY2FwdGNoYS0+c2V0RXhwZWN0ZWRIb3N0bmFtZSgkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSlcclxuIgogICAgICAgICAgICAgICAgICAgICIgICAgICAtPnZlcmlmeSgkX1BPU1RbJ2ctcmVjYXB0Y2hhLXJlc3BvbnNlJ10sICIKICAgICAgICAgICAgICAgICAgICAiJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgJyAgICBpZiAoJHJlc3AtPmlzU3VjY2VzcygpKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAnICAgICAgLy8gSWYgdGhlIHJlc3BvbnNlIGlzIGEgc3VjY2VzcywgcHJvY2VzcyB0aGUgJwogICAgICAgICAgICAgICAgICAgICdmb3JtXHJcbicKICAgICAgICAgICAgICAgICAgICAnICAgICAgcHJvY19mb3JtKCRyZWxfcm9vdCk7XHJcbicKICAgICAgICAgICAgICAgICAgICAnICAgICAgLy92YXJfZXhwb3J0KCRyZXNwKTtcclxuJwogICAgICAgICAgICAgICAgICAgICc/PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LXN1Y2Nlc3MiIHJvbGU9ImFsZXJ0Ij5cclxuJwogICAgICAgICAgICAgICAgICAgICcgIDxoMT4gU3VjY2VzcyAhIDwvaDE+XHJcbicKICAgICAgICAgICAgICAgICAgICAnPC9kaXY+XHJcbicKICAgICAgICAgICAgICAgICAgICAnPD9waHBcclxuJwogICAgICAgICAgICAgICAgICAgICcgICAgfSBlbHNlIHtcclxuJwogICAgICAgICAgICAgICAgICAgICIgICAgICAvLyBJZiBpdCdzIG5vdCBzdWNjZXNzZnVsLCB0aGVuIG9uZSBvciBtb3JlIGVycm9yICIKICAgICAgICAgICAgICAgICAgICAnY29kZXMgd2lsbCBiZSByZXR1cm5lZC5cclxuJwogICAgICAgICAgICAgICAgICAgICc/PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzxoMj5Tb21ldGhpbmcgd2VudCB3cm9uZzwvaDI+XHJcbicKICAgICAgICAgICAgICAgICAgICAnPGtiZD48cHJlPjw/cGhwIHZhcl9leHBvcnQoJHJlc3ApOz8+PC9wcmU+PC9rYmQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAnPHA+Q2hlY2sgdGhlIGVycm9yIGNvZGUgcmVmZXJlbmNlIGF0IDxrYmQ+PGEgJwogICAgICAgICAgICAgICAgICAgICdocmVmPSJodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9yZWNhcHRjaGEvZG9jcy92ZXJpZnkjZXJyb3ItY29kZS1yZWZlcmVuY2UiPmh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3JlY2FwdGNoYS9kb2NzL3ZlcmlmeSNlcnJvci1jb2RlLXJlZmVyZW5jZTwvYT48L2tiZD4uXHJcbicKICAgICAgICAgICAgICAgICAgICAnPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBFcnJvciBjb2RlICcKICAgICAgICAgICAgICAgICAgICAnPGtiZD5taXNzaW5nLWlucHV0LXJlc3BvbnNlPC9rYmQ+IG1heSBtZWFuIHRoZSB1c2VyIGp1c3QgJwogICAgICAgICAgICAgICAgICAgICJkaWRuJ3QgY29tcGxldGUgdGhlIHJlQ0FQVENIQS48L3A+XHJcbiIKICAgICAgICAgICAgICAgICAgICAnPD9waHBcclxuJwogICAgICAgICAgICAgICAgICAgICcgICAgfSBcclxuJwogICAgICAgICAgICAgICAgICAgICcgIH0gZWxzZSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAnPz5cclxuJwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGlkPSJfTUlEWF9sb2FkZXIiIGNsYXNzPSJteC1hdXRvIj48L2Rpdj5cclxuJwogICAgICAgICAgICAgICAgICAgICc8Zm9ybSBhY3Rpb249IiMiIG1ldGhvZD0icG9zdCIgaWQ9ImRlbW8tZm9ybSI+XHJcbicKICAgICAgICAgICAgICAgICAgICAnICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj5cclxuJwogICAgICAgICAgICAgICAgICAgICcgICAgPGlucHV0IHR5cGU9ImVtYWlsIiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJlbWFpbCIgJwogICAgICAgICAgICAgICAgICAgICdwbGFjZWhvbGRlcj0iWW91ciBlbWFpbCI+XHJcbicKICAgICAgICAgICAgICAgICAgICAnICA8L2Rpdj5cclxuJwogICAgICAgICAgICAgICAgICAgICcgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgJwogICAgICAgICAgICAgICAgICAgICduYW1lPSJzdWJqZWN0IiBwbGFjZWhvbGRlcj0iWW91ciB3ZWJzaXRlIHVybCI+XHJcbicKICAgICAgICAgICAgICAgICAgICAnICA8L2Rpdj5cclxuJwogICAgICAgICAgICAgICAgICAgICcgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgICA8bGFiZWwgZm9yPSJleGFtcGxlRm9ybUNvbnRyb2xUZXh0YXJlYTEiPlF1ZXN0aW9ucyBvciAnCiAgICAgICAgICAgICAgICAgICAgJ2NvbW1lbnRzPC9sYWJlbD5cclxuJwogICAgICAgICAgICAgICAgICAgICcgICAgPHRleHRhcmVhIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9Im1lc3NhZ2UiICcKICAgICAgICAgICAgICAgICAgICAncm93cz0iMyI+PC90ZXh0YXJlYT5cclxuJwogICAgICAgICAgICAgICAgICAgICcgIDwvZGl2PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJnLXJlY2FwdGNoYSBidG4gJwogICAgICAgICAgICAgICAgICAgICdidG4tcHJpbWFyeSBidG4tYmxvY2siIGRhdGEtc2l0ZWtleT0iPD9waHAgZWNobyAkc2l0ZUtleTsgJwogICAgICAgICAgICAgICAgICAgICc/PiIgZGF0YS1jYWxsYmFjaz1cJ29uU3VibWl0XCc+U3VibWl0PC9idXR0b24+XHJcbicKICAgICAgICAgICAgICAgICAgICAnPC9mb3JtPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiAnCiAgICAgICAgICAgICAgICAgICAgJ3NyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9yZWNhcHRjaGEvYXBpLmpzP2hsPTw/cGhwICcKICAgICAgICAgICAgICAgICAgICAnZWNobyAkQ01TX2xjOyA/PiIgYXN5bmMgZGVmZXI+PC9zY3JpcHQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgZnVuY3Rpb24gb25TdWJtaXQodG9rZW4pIHtcclxuJwogICAgICAgICAgICAgICAgICAgICcgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlbW8tZm9ybSIpLnN0eWxlLmRpc3BsYXkgPSAnCiAgICAgICAgICAgICAgICAgICAgJyJub25lIjtcclxuJwogICAgICAgICAgICAgICAgICAgICcgICAgJwogICAgICAgICAgICAgICAgICAgICdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiX01JRFhfbG9hZGVyIikuY2xhc3NMaXN0LmFkZChcJ2xvYWRlclwnKTtcclxuJwogICAgICAgICAgICAgICAgICAgICcgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlbW8tZm9ybSIpLnN1Ym1pdCgpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzwvc2NyaXB0PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzw/cGhwXHJcbicKICAgICAgICAgICAgICAgICAgICAnICB9IFxyXG4nCiAgICAgICAgICAgICAgICAgICAgJ30gY2F0Y2ggKFRocm93YWJsZSAkZSkge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgbXlsb2coJGUpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgZWNobyAkZTtcclxuJwogICAgICAgICAgICAgICAgICAgICd9XHJcbicKICAgICAgICAgICAgICAgICAgICAnPz5cclxuJywKICAgICAgICAgICAgJ2NvZGVJbmMnOiAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjIGNvbnRlbnQgYmV0d2VlbiBzdHlsZUluYyB0YWcgd2lsbCBiZSBhZGQgdG8gdGhlICcKICAgICAgICAgICAgICAgICAgICAgICAnYmVmb3JlIHRoZSBjbG9zaW5nIGhlYWQgdGFnc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPHN0eWxlSW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwhLS0gc3R5bGVJbmMgSW5jbHVkZWQgZnJvbSBfSURfIC0tPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzxzdHlsZT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjX0lEXyAubG9hZGVyIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIGJvcmRlcjogMTZweCBzb2xpZCAjZjNmM2YzOyAvKiBMaWdodCBncmV5ICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICBib3JkZXItdG9wOiAxNnB4IHNvbGlkICMzNDk4ZGI7IC8qIEJsdWUgKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIHdpZHRoOiAxMjBweDtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIGhlaWdodDogMTIwcHg7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICBhbmltYXRpb246IHNwaW4gMnMgbGluZWFyIGluZmluaXRlO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ31cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICdAa2V5ZnJhbWVzIHNwaW4ge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgMTAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICd9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPC9zdHlsZT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwvc3R5bGVJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjIGNvbnRlbnQgYmV0d2VlbiBzY3JpcHRJbmMgdGFnIHdpbGwgYmUgYWRkIHRvIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZSB0aGUgY2xvc2luZyBib2R5IHRhZ3NcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzxzY3JpcHRJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPCEtLSBzY3JpcHRJbmMgSW5jbHVkZWQgZnJvbSBfSURfIC0tPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzxzY3JpcHQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPC9zY3JpcHQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8L3NjcmlwdEluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjIEVuZFxyXG4nLAogICAgICAgICAgICAnY29sQkdJbWFnZSc6ICcnLAogICAgICAgICAgICAnY29sQkdJbWFnZVdyYXAnOiAnJywKICAgICAgICAgICAgJ2NvbXBvc2VySlNPTic6ICcnLAogICAgICAgICAgICAnZHluYW1pY0Jsb2NrJzogJycsCiAgICAgICAgICAgICdrZXl3b3Jkcyc6ICcnLAogICAgICAgICAgICAncGhwRmlsZSc6ICc8P3BocCAvKiBfQXJlYV8vcGhwL215Zm9ybS5waHAgKi8gIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJy8vIGZvciBkZWJ1Z2dpbmdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbiBteWxvZygkbXNnKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAiICAkaCA9IGZvcGVuKCcvaG9tZS9jbXNub3cvYWNjZXNzX2xvZycsICdhJyk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnICBmd3JpdGUoJGgsIHRpbWUoKSk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICBmd3JpdGUoJGgsICRtc2cpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgZmNsb3NlKCRoKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICd9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb24gcHJvY19mb3JtKCRyZWxfcm9vdCkge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgdHJ5IHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9yZXF1aXJlICRyZWxfcm9vdCAuICcKICAgICAgICAgICAgICAgICAgICAgICAiJy8uLi8uLi9waHAvQXNPbmUvbWlzYy5waHAnO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICByZXF1aXJlICRyZWxfcm9vdCAuICcKICAgICAgICAgICAgICAgICAgICAgICAiJy9waHAvUEhQTWFpbGVyL1BIUE1haWxlckF1dG9sb2FkLnBocCc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vIHRvIGRpc2FibGUgYnkgYXNzaWduIGFuIGVtcHR5IHN0cmluZ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAkYnVnemlsbGFTZXJ2ZXIgPSAnYnVnLndlYmNtcy1hLmNvbSc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAiICAgICRlbWFpbFNNVFAgPSAnc210cC5iaXptYWlsLnlhaG9vLmNvbSc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAiICAgICRlbWFpbFVzZXIgPSAnbm8tcmVwbHlAYXNvbmVsaXN0LmNvbSc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAiICAgICRlbWFpbFBhc3N3ZCA9ICd1eXF2Y3ZsY2tuZXBkc2lyJztcclxuIgogICAgICAgICAgICAgICAgICAgICAgICIgICAgJG5vdGlmeUVtYWlsID0gJ2luZm9Ad2ViYXNvbmUuY29tJztcclxuIgogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9teWxvZygiY2FsbCBwcm9jX2Zvcm0iKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICIgICAgLy8kYXNvbmVGaWxlID0gbmV3IEFzT25lRmlsZSgnX0lEWF8nLCAiCiAgICAgICAgICAgICAgICAgICAgICAgJ0Fzb25lUGF0aCk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICRtYWlsID0gbmV3IFBIUE1haWxlcjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9UZWxsIFBIUE1haWxlciB0byB1c2UgU01UUFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvL1RlbGwgUEhQTWFpbGVyIHRvIHVzZSBTTVRQXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICRtYWlsLT5pc1NNVFAoKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9FbmFibGUgU01UUCBkZWJ1Z2dpbmdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy8gMCA9IG9mZiAoZm9yIHByb2R1Y3Rpb24gdXNlKVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvLyAxID0gY2xpZW50IG1lc3NhZ2VzXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vIDIgPSBjbGllbnQgYW5kIHNlcnZlciBtZXNzYWdlc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAkbWFpbC0+U01UUERlYnVnID0gMDtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9Bc2sgZm9yIEhUTUwtZnJpZW5kbHkgZGVidWcgb3V0cHV0XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAiICAgICRtYWlsLT5EZWJ1Z291dHB1dCA9ICdodG1sJztcclxuIgogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9TZXQgdGhlIGhvc3RuYW1lIG9mIHRoZSBtYWlsIHNlcnZlclxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAkbWFpbC0+SG9zdCA9ICRlbWFpbFNNVFA7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vU2V0IHRoZSBTTVRQIHBvcnQgbnVtYmVyIC0gbGlrZWx5IHRvIGJlIDI1LCA0NjUgJwogICAgICAgICAgICAgICAgICAgICAgICdvciA1ODdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgJG1haWwtPlBvcnQgPSA0NjU7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAiICAgICRtYWlsLT5TTVRQU2VjdXJlID0gJ3NzbCc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vV2hldGhlciB0byB1c2UgU01UUCBhdXRoZW50aWNhdGlvblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAkbWFpbC0+U01UUEF1dGggPSB0cnVlO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvL1VzZXJuYW1lIHRvIHVzZSBmb3IgU01UUCBhdXRoZW50aWNhdGlvblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAkbWFpbC0+VXNlcm5hbWUgPSAkZW1haWxVc2VyO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvL1Bhc3N3b3JkIHRvIHVzZSBmb3IgU01UUCBhdXRoZW50aWNhdGlvblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAkbWFpbC0+UGFzc3dvcmQgPSAkZW1haWxQYXNzd2Q7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vU2V0IHdobyB0aGUgbWVzc2FnZSBpcyB0byBiZSBzZW50IGZyb21cclxuJwogICAgICAgICAgICAgICAgICAgICAgICIgICAgJG1haWwtPnNldEZyb20oJGVtYWlsVXNlciwgJF9TRVJWRVJbJ0hUVFBfSE9TVCddLicgIgogICAgICAgICAgICAgICAgICAgICAgICJTdWJtaXQnKTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9TZXQgYW4gYWx0ZXJuYXRpdmUgcmVwbHktdG8gYWRkcmVzc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAkbWFpbC0+YWRkUmVwbHlUbygnRG8gbm90IHJlcGx5JywgJ0RvIG5vdCAiCiAgICAgICAgICAgICAgICAgICAgICAgInJlcGx5Jyk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vU2V0IHdobyB0aGUgbWVzc2FnZSBpcyB0byBiZSBzZW50IHRvXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAiICAgICRtYWlsLT5hZGRBZGRyZXNzKCRub3RpZnlFbWFpbCwgJ0RvIG5vdCAiCiAgICAgICAgICAgICAgICAgICAgICAgIlJlcGx5Jyk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vU2V0IHRoZSBzdWJqZWN0IGxpbmVcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9zZW5kIGVtYWlsXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAiICAgICRtYWlsLT5TdWJqZWN0ID0gJyhEbyBub3QgcmVwbHkpIHZpYSAlcyBmcm9tICIKICAgICAgICAgICAgICAgICAgICAgICAiJy5nZXRob3N0bmFtZSgpO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAvLyRtc2cgPSAnPHA+V2Vic2l0ZTogJXM8L3A+JztcclxuIgogICAgICAgICAgICAgICAgICAgICAgICIgICAgJG1zZyA9ICcnO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWydyZXF1c2VybmFtZSddKSkgJG1zZyAuPSAiCiAgICAgICAgICAgICAgICAgICAgICAgIic8cD5Gcm9tOiAgIgogICAgICAgICAgICAgICAgICAgICAgICdcJy4kX1JFUVVFU1RbXCdyZXF1c2VybmFtZVwnXS4iPC9wPlxcXFxuIjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICIgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFsnZW1haWwnXSkpICRtc2cgLj0gJzxwPkVtYWlsOiAiCiAgICAgICAgICAgICAgICAgICAgICAgJ1wnLiRfUkVRVUVTVFtcJ2VtYWlsXCddLiI8L3A+XFxcXG4iO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWydzdWJqZWN0J10pKSAkbXNnIC49ICIKICAgICAgICAgICAgICAgICAgICAgICAiJzxwPlN1YmplY3Q6ICIKICAgICAgICAgICAgICAgICAgICAgICAnXCcuJF9SRVFVRVNUW1wnc3ViamVjdFwnXS4iPC9wPlxcXFxuIjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgJG1zZyAuPSAiPHByZT5NZXNzYWdlOlxcXFxuIjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICIgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFsnbWVzc2FnZSddKSkgJG1zZyAuPSAiCiAgICAgICAgICAgICAgICAgICAgICAgJyRfUkVRVUVTVFtcJ21lc3NhZ2VcJ10uIjwvcHJlPlxcXFxuIjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgJG1haWwtPm1zZ0hUTUwoJG1zZyk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIGlmICgkbWFpbC0+c2VuZCgpKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgZWNobyAiPGgzPlRoYW5rcyE8L2gzPiI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIH0gZWxzZSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgZWNobyAiPGgzPiBTeXN0ZW0gRXJyb3IuIDwvaDM+IjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAkYm1zZyA9IFwnRnJvbTogYnVnQHdlYmFzb25lLmNvbVwnLiAiXFxuIi5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICIgICAgICAnU3ViamVjdDogVXNlciBTdWJtaXQgZnJvbSAiCiAgICAgICAgICAgICAgICAgICAgICAgJ1wnLmdldGhvc3RuYW1lKCkuIlxcblxcbiIuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgXCdAcHJvZHVjdCA9IFdlYkFzT25lXCcuIlxcbiIuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgXCdAY29tcG9uZW50ID0gVXNlclJlcG9ydFwnLiJcXG4iLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgIFwnQG9wX3N5cyBMaW51eFwnLiJcXG4iLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgIFwnQHJlcF9wbGF0Zm9ybSBBbGxcJy4iXFxuIi5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICBcJ0B2ZXJzaW9uID0gMS4wLjBcJy4iXFxuIi5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICBcJ0BTZXZlcml0eSA9IG5vcm1hbFwnLiJcXG5cXG5cXG4iLiAgICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAkbXNnO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAnCiAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGVfcHV0X2NvbnRlbnRzKCIvaG9tZS9jbXNub3cvZm9ybV9tc2cudHh0IiwkYm1zZyk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIGlmICgkYnVnemlsbGFTZXJ2ZXIpIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAkZGVzY3JpcHRvcnNwZWMgPSBhcnJheShcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIDAgPT4gYXJyYXkoInBpcGUiLCAiciIpLCAgLy8gc3RkaW4gaXMgYSBwaXBlICcKICAgICAgICAgICAgICAgICAgICAgICAndGhhdCB0aGUgY2hpbGQgd2lsbCByZWFkIGZyb21cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIDEgPT4gYXJyYXkoInBpcGUiLCAidyIpLCAgLy8gc3Rkb3V0IGlzIGEgcGlwZSAnCiAgICAgICAgICAgICAgICAgICAgICAgJ3RoYXQgdGhlIGNoaWxkIHdpbGwgd3JpdGUgdG9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIDIgPT4gYXJyYXkoImZpbGUiLCAnCiAgICAgICAgICAgICAgICAgICAgICAgJyIvaG9tZS9jbXNub3cvL2Vycm9yLW91dHB1dC50eHQiLCAidysiKSAvLyBzdGRlcnIgaXMgYSAnCiAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGUgdG8gd3JpdGUgdG9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICApO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICRjbWQgPSAnc3NoICcuJGJ1Z3ppbGxhU2VydmVyLicgIgogICAgICAgICAgICAgICAgICAgICAgICciL2hvbWUvY21zbm93L3d3dy9ob3N0cy9cJy4kYnVnemlsbGFTZXJ2ZXIuXCcvZG9jcy9lbWFpbF9pbi5wbCJcJztcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAkcHJvY2VzcyA9IHByb2Nfb3BlbigkY21kLCAkZGVzY3JpcHRvcnNwZWMsICcKICAgICAgICAgICAgICAgICAgICAgICAnJHBpcGVzKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICBpZiAoaXNfcmVzb3VyY2UoJHByb2Nlc3MpKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAvLyAkcGlwZXMgbm93IGxvb2tzIGxpa2UgdGhpczpcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIC8vIDAgPT4gd3JpdGVhYmxlIGhhbmRsZSBjb25uZWN0ZWQgdG8gY2hpbGQgJwogICAgICAgICAgICAgICAgICAgICAgICdzdGRpblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgLy8gMSA9PiByZWFkYWJsZSBoYW5kbGUgY29ubmVjdGVkIHRvIGNoaWxkICcKICAgICAgICAgICAgICAgICAgICAgICAnc3Rkb3V0XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBmd3JpdGUoJHBpcGVzWzBdLCAkYm1zZyk7IC8vICcKICAgICAgICAgICAgICAgICAgICAgICAiZmlsZV9nZXRfY29udGVudHMoJ3BocDovL3N0ZGluJylcclxuIgogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIGZjbG9zZSgkcGlwZXNbMF0pO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgJG91dHB1dCA9IHN0cmVhbV9nZXRfY29udGVudHMoJHBpcGVzWzFdKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICNlY2hvICRvdXRwdXQ7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBmY2xvc2UoJHBpcGVzWzFdKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIC8vIEl0IGlzIGltcG9ydGFudCB0aGF0IHlvdSBjbG9zZSBhbnkgcGlwZXMgJwogICAgICAgICAgICAgICAgICAgICAgICdiZWZvcmUgY2FsbGluZ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgLy8gcHJvY19jbG9zZSBpbiBvcmRlciB0byBhdm9pZCBhIGRlYWRsb2NrXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAkcmV0dXJuX3ZhbHVlID0gcHJvY19jbG9zZSgkcHJvY2Vzcyk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAjZWNobyAkcmV0dXJuX3ZhbHVlO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgfSAgICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIH0gY2F0Y2ggKFRocm93YWJsZSAkZSkge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICBteWxvZygkZSk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIGVjaG8gJGU7IC8vIEVycm9yOiBVbmRlZmluZWQgdmFyaWFibGU6IHR3Li4uXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICB9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJz8+XHJcbicsCiAgICAgICAgICAgICdwaHBGaWxlQSc6ICcnLAogICAgICAgICAgICAncGhwRmlsZUInOiAnJywKICAgICAgICAgICAgJ3Rjb2RlJzogJycsCiAgICAgICAgICAgICd2Y29kZSc6ICcnfSwKICAgICAnZW4tVVMnOiB7J05vdGVzJzogJycsCiAgICAgICAgICAgICAgICdTbGlkZVR5cGUnOiAnVGlueU1DRScsCiAgICAgICAgICAgICAgICdhSW1hZ2UnOiAnJywKICAgICAgICAgICAgICAgJ2FMYWJlbCc6ICdodG1sIGZvcm0nLAogICAgICAgICAgICAgICAnYXN2Z2ZpbGUnOiAnPHN2Zz48L3N2Zz4nLAogICAgICAgICAgICAgICAnY29kZSc6ICc8P3BocFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ3NldF9lcnJvcl9oYW5kbGVyKGZ1bmN0aW9uKCRfZXJybm8sICRlcnJzdHIpIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIC8vIENvbnZlcnQgbm90aWNlLCB3YXJuaW5nLCBldGMuIHRvIGVycm9yLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgdGhyb3cgbmV3IEVycm9yKCRlcnJzdHIpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ30pO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyRmaWxlbmFtZSA9ICRyZWxfcm9vdCAuICcKICAgICAgICAgICAgICAgICAgICAgICAiJy9waHAvZ29vZ2xlL3JlY2FwdGNoYS1tYXN0ZXIvc3JjL2F1dG9sb2FkLnBocCc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnaWYgKCFmaWxlX2V4aXN0cygkZmlsZW5hbWUpKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICBlY2hvICJUaGUgZmlsZSAkZmlsZW5hbWUgZG9lcyBub3QgZXhpc3QuIDxiciAvPiAnCiAgICAgICAgICAgICAgICAgICAgICAgJ1VzZSBJbnNlcnRNZW51IHRvIGFkZCBwaHAgbGlicmFyaWVzOiAnCiAgICAgICAgICAgICAgICAgICAgICAgJyx0b3BDLHBocF9ncDEiO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ3RyeSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICByZXF1aXJlICRyZWxfcm9vdCAuICcKICAgICAgICAgICAgICAgICAgICAgICAiJy9waHAvZ29vZ2xlL3JlY2FwdGNoYS1tYXN0ZXIvc3JjL2F1dG9sb2FkLnBocCc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAiICByZXF1aXJlICdfQXJlYV8vcGhwL215Zm9ybS5waHAnO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgLy8gUmVnaXN0ZXIgQVBJIGtleXMgYXQgJwogICAgICAgICAgICAgICAgICAgICAgICdodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hZG1pblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgJHNpdGVLZXkgPSAnCiAgICAgICAgICAgICAgICAgICAgICAgIic2TGZMR2hrcUFBQUFBSThGNmZhQ1Q0R1BYc1RxRnJVamlmbDMyZmNuJztcclxuIgogICAgICAgICAgICAgICAgICAgICAgICcgICRzZWNyZXQgPSAnCiAgICAgICAgICAgICAgICAgICAgICAgIic2TGZMR2hrcUFBQUFBQWRkbzBkOGhDOXNPd0NORkFkRy1KdWstZGhQJztcclxuIgogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICIgIGlmIChpc3NldCgkX1BPU1RbJ2ctcmVjYXB0Y2hhLXJlc3BvbnNlJ10pKSB7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vIFRoZSBQT1NUIGRhdGEgaGVyZSBpcyB1bmZpbHRlcmVkIGJlY2F1c2UgdGhpcyAnCiAgICAgICAgICAgICAgICAgICAgICAgJ2lzIGFuIGV4YW1wbGUuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vIEluIHByb2R1Y3Rpb24sICphbHdheXMqIHNhbml0aXNlIGFuZCB2YWxpZGF0ZSAnCiAgICAgICAgICAgICAgICAgICAgICAgInlvdXIgaW5wdXQnXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vIHZhcl9leHBvcnQoJF9QT1NUKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc/PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzw/cGhwXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vIElmIHRoZSBmb3JtIHN1Ym1pc3Npb24gaW5jbHVkZXMgdGhlICcKICAgICAgICAgICAgICAgICAgICAgICAnImctY2FwdGNoYS1yZXNwb25zZSIgZmllbGRcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy8gQ3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBzZXJ2aWNlIHVzaW5nIHlvdXIgJwogICAgICAgICAgICAgICAgICAgICAgICdzZWNyZXRcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgJHJlY2FwdGNoYSA9IG5ldyAnCiAgICAgICAgICAgICAgICAgICAgICAgJ1xcUmVDYXB0Y2hhXFxSZUNhcHRjaGEoJHNlY3JldCk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vIElmIGZpbGVfZ2V0X2NvbnRlbnRzKCkgaXMgbG9ja2VkIGRvd24gb24geW91ciAnCiAgICAgICAgICAgICAgICAgICAgICAgJ1BIUCBpbnN0YWxsYXRpb24gdG8gZGlzYWxsb3dcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy8gaXRzIHVzZSB3aXRoIFVSTHMsIHRoZW4geW91IGNhbiB1c2UgdGhlICcKICAgICAgICAgICAgICAgICAgICAgICAnYWx0ZXJuYXRpdmUgcmVxdWVzdCBtZXRob2QgaW5zdGVhZC5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy8gVGhpcyBtYWtlcyB1c2Ugb2YgZnNvY2tvcGVuKCkgaW5zdGVhZC5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy8gICRyZWNhcHRjaGEgPSBuZXcgJwogICAgICAgICAgICAgICAgICAgICAgICdcXFJlQ2FwdGNoYVxcUmVDYXB0Y2hhKCRzZWNyZXQsIG5ldyAnCiAgICAgICAgICAgICAgICAgICAgICAgJ1xcUmVDYXB0Y2hhXFxSZXF1ZXN0TWV0aG9kXFxTb2NrZXRQb3N0KCkpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvLyBNYWtlIHRoZSBjYWxsIHRvIHZlcmlmeSB0aGUgcmVzcG9uc2UgYW5kIGFsc28gJwogICAgICAgICAgICAgICAgICAgICAgICJwYXNzIHRoZSB1c2VyJ3MgSVAgYWRkcmVzc1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAkcmVzcCA9ICcKICAgICAgICAgICAgICAgICAgICAgICAiJHJlY2FwdGNoYS0+c2V0RXhwZWN0ZWRIb3N0bmFtZSgkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSlcclxuIgogICAgICAgICAgICAgICAgICAgICAgICIgICAgICAtPnZlcmlmeSgkX1BPU1RbJ2ctcmVjYXB0Y2hhLXJlc3BvbnNlJ10sICIKICAgICAgICAgICAgICAgICAgICAgICAiJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpZiAoJHJlc3AtPmlzU3VjY2VzcygpKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgLy8gSWYgdGhlIHJlc3BvbnNlIGlzIGEgc3VjY2VzcywgcHJvY2VzcyB0aGUgJwogICAgICAgICAgICAgICAgICAgICAgICdmb3JtXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgcHJvY19mb3JtKCRyZWxfcm9vdCk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgLy92YXJfZXhwb3J0KCRyZXNwKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc/PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LXN1Y2Nlc3MiIHJvbGU9ImFsZXJ0Ij5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIDxoMT4gU3VjY2VzcyAhIDwvaDE+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPD9waHBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgfSBlbHNlIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICIgICAgICAvLyBJZiBpdCdzIG5vdCBzdWNjZXNzZnVsLCB0aGVuIG9uZSBvciBtb3JlICIKICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3IgY29kZXMgd2lsbCBiZSByZXR1cm5lZC5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc/PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzxoMj5Tb21ldGhpbmcgd2VudCB3cm9uZzwvaDI+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPGtiZD48cHJlPjw/cGhwIHZhcl9leHBvcnQoJHJlc3ApOz8+PC9wcmU+PC9rYmQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPHA+Q2hlY2sgdGhlIGVycm9yIGNvZGUgcmVmZXJlbmNlIGF0IDxrYmQ+PGEgJwogICAgICAgICAgICAgICAgICAgICAgICdocmVmPSJodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9yZWNhcHRjaGEvZG9jcy92ZXJpZnkjZXJyb3ItY29kZS1yZWZlcmVuY2UiPmh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3JlY2FwdGNoYS9kb2NzL3ZlcmlmeSNlcnJvci1jb2RlLXJlZmVyZW5jZTwvYT48L2tiZD4uXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBFcnJvciBjb2RlICcKICAgICAgICAgICAgICAgICAgICAgICAnPGtiZD5taXNzaW5nLWlucHV0LXJlc3BvbnNlPC9rYmQ+IG1heSBtZWFuIHRoZSB1c2VyICcKICAgICAgICAgICAgICAgICAgICAgICAianVzdCBkaWRuJ3QgY29tcGxldGUgdGhlIHJlQ0FQVENIQS48L3A+XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnPD9waHBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgfSBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIH0gZWxzZSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGlkPSJfTUlEWF9sb2FkZXIiIGNsYXNzPSJteC1hdXRvIj48L2Rpdj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8Zm9ybSBhY3Rpb249IiMiIG1ldGhvZD0icG9zdCIgaWQ9ImRlbW8tZm9ybSI+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgPGlucHV0IHR5cGU9ImVtYWlsIiBjbGFzcz0iZm9ybS1jb250cm9sIiAnCiAgICAgICAgICAgICAgICAgICAgICAgJ25hbWU9ImVtYWlsIiBwbGFjZWhvbGRlcj0iWW91ciBlbWFpbCI+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICA8L2Rpdj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgJwogICAgICAgICAgICAgICAgICAgICAgICduYW1lPSJzdWJqZWN0IiBwbGFjZWhvbGRlcj0iWW91ciB3ZWJzaXRlIHVybCI+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICA8L2Rpdj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICA8bGFiZWwgZm9yPSJleGFtcGxlRm9ybUNvbnRyb2xUZXh0YXJlYTEiPlF1ZXN0aW9ucyAnCiAgICAgICAgICAgICAgICAgICAgICAgJ29yIGNvbW1lbnRzPC9sYWJlbD5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgPHRleHRhcmVhIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9Im1lc3NhZ2UiICcKICAgICAgICAgICAgICAgICAgICAgICAncm93cz0iMyI+PC90ZXh0YXJlYT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIDwvZGl2PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJnLXJlY2FwdGNoYSBidG4gJwogICAgICAgICAgICAgICAgICAgICAgICdidG4tcHJpbWFyeSBidG4tYmxvY2siIGRhdGEtc2l0ZWtleT0iPD9waHAgZWNobyAnCiAgICAgICAgICAgICAgICAgICAgICAgJyRzaXRlS2V5OyA/PiIgJwogICAgICAgICAgICAgICAgICAgICAgICJkYXRhLWNhbGxiYWNrPSdvblN1Ym1pdCc+U3VibWl0PC9idXR0b24+XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnPC9mb3JtPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiAnCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9yZWNhcHRjaGEvYXBpLmpzP2hsPTw/cGhwICcKICAgICAgICAgICAgICAgICAgICAgICAnZWNobyAkQ01TX2xjOyA/PiIgYXN5bmMgZGVmZXI+PC9zY3JpcHQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgZnVuY3Rpb24gb25TdWJtaXQodG9rZW4pIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlbW8tZm9ybSIpLnN0eWxlLmRpc3BsYXkgJwogICAgICAgICAgICAgICAgICAgICAgICc9ICJub25lIjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgJwogICAgICAgICAgICAgICAgICAgICAgICdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiX01JRFhfbG9hZGVyIikuY2xhc3NMaXN0LmFkZChcJ2xvYWRlclwnKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlbW8tZm9ybSIpLnN1Ym1pdCgpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwvc2NyaXB0PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzw/cGhwXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICB9IFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ30gY2F0Y2ggKFRocm93YWJsZSAkZSkge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgbXlsb2coJGUpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgZWNobyAkZTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICd9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPz5cclxuJywKICAgICAgICAgICAgICAgJ2NvZGVJbmMnOiAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjIGNvbnRlbnQgYmV0d2VlbiBzdHlsZUluYyB0YWcgd2lsbCBiZSBhZGQgdG8gdGhlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnYmVmb3JlIHRoZSBjbG9zaW5nIGhlYWQgdGFnc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPHN0eWxlSW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzwhLS0gc3R5bGVJbmMgSW5jbHVkZWQgZnJvbSBfSURfIC0tPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzdHlsZT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjX0lEXyAubG9hZGVyIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgIGJvcmRlcjogMTZweCBzb2xpZCAjZjNmM2YzOyAvKiBMaWdodCBncmV5ICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICBib3JkZXItdG9wOiAxNnB4IHNvbGlkICMzNDk4ZGI7IC8qIEJsdWUgKi9cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgIHdpZHRoOiAxMjBweDtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgIGhlaWdodDogMTIwcHg7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICBhbmltYXRpb246IHNwaW4gMnMgbGluZWFyIGluZmluaXRlO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ31cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdAa2V5ZnJhbWVzIHNwaW4ge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgMTAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICd9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9zdHlsZT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvc3R5bGVJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjIGNvbnRlbnQgYmV0d2VlbiBzY3JpcHRJbmMgdGFnIHdpbGwgYmUgYWRkIHRvIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZSB0aGUgY2xvc2luZyBib2R5IHRhZ3NcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzY3JpcHRJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPCEtLSBzY3JpcHRJbmMgSW5jbHVkZWQgZnJvbSBfSURfIC0tPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzY3JpcHQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9zY3JpcHQ+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8L3NjcmlwdEluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjIEVuZFxyXG4nLAogICAgICAgICAgICAgICAnY29sQkdJbWFnZSc6ICcnLAogICAgICAgICAgICAgICAnY29sQkdJbWFnZVdyYXAnOiAnJywKICAgICAgICAgICAgICAgJ2NvbXBvc2VySlNPTic6ICcnLAogICAgICAgICAgICAgICAnZHluYW1pY0Jsb2NrJzogJycsCiAgICAgICAgICAgICAgICdrZXl3b3Jkcyc6ICcnLAogICAgICAgICAgICAgICAncGhwRmlsZSc6ICc8P3BocCAvKiBfQXJlYV8vcGhwL215Zm9ybS5waHAgKi8gIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJy8vIGZvciBkZWJ1Z2dpbmdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbiBteWxvZygkbXNnKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAkaCA9IGZvcGVuKCcvaG9tZS9jbXNub3cvYWNjZXNzX2xvZycsICdhJyk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAnICBmd3JpdGUoJGgsIHRpbWUoKSk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICBmd3JpdGUoJGgsICRtc2cpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgZmNsb3NlKCRoKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICd9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb24gcHJvY19mb3JtKCRyZWxfcm9vdCkge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgdHJ5IHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9yZXF1aXJlICRyZWxfcm9vdCAuICcKICAgICAgICAgICAgICAgICAgICAgICAgICAiJy8uLi8uLi9waHAvQXNPbmUvbWlzYy5waHAnO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICByZXF1aXJlICRyZWxfcm9vdCAuICcKICAgICAgICAgICAgICAgICAgICAgICAgICAiJy9waHAvUEhQTWFpbGVyL1BIUE1haWxlckF1dG9sb2FkLnBocCc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vIHRvIGRpc2FibGUgYnkgYXNzaWduIGFuIGVtcHR5IHN0cmluZ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAkYnVnemlsbGFTZXJ2ZXIgPSAnYnVnLndlYmNtcy1hLmNvbSc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICRlbWFpbFNNVFAgPSAnc210cC5iaXptYWlsLnlhaG9vLmNvbSc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICRlbWFpbFVzZXIgPSAnbm8tcmVwbHlAYXNvbmVsaXN0LmNvbSc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICRlbWFpbFBhc3N3ZCA9ICd1eXF2Y3ZsY2tuZXBkc2lyJztcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgJG5vdGlmeUVtYWlsID0gJ2luZm9Ad2ViYXNvbmUuY29tJztcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9teWxvZygiY2FsbCBwcm9jX2Zvcm0iKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgLy8kYXNvbmVGaWxlID0gbmV3IEFzT25lRmlsZSgnX0lEWF8nLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Fzb25lUGF0aCk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICRtYWlsID0gbmV3IFBIUE1haWxlcjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9UZWxsIFBIUE1haWxlciB0byB1c2UgU01UUFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvL1RlbGwgUEhQTWFpbGVyIHRvIHVzZSBTTVRQXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICRtYWlsLT5pc1NNVFAoKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9FbmFibGUgU01UUCBkZWJ1Z2dpbmdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLy8gMCA9IG9mZiAoZm9yIHByb2R1Y3Rpb24gdXNlKVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvLyAxID0gY2xpZW50IG1lc3NhZ2VzXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vIDIgPSBjbGllbnQgYW5kIHNlcnZlciBtZXNzYWdlc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAkbWFpbC0+U01UUERlYnVnID0gMDtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9Bc2sgZm9yIEhUTUwtZnJpZW5kbHkgZGVidWcgb3V0cHV0XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICRtYWlsLT5EZWJ1Z291dHB1dCA9ICdodG1sJztcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9TZXQgdGhlIGhvc3RuYW1lIG9mIHRoZSBtYWlsIHNlcnZlclxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAkbWFpbC0+SG9zdCA9ICRlbWFpbFNNVFA7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vU2V0IHRoZSBTTVRQIHBvcnQgbnVtYmVyIC0gbGlrZWx5IHRvIGJlIDI1LCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzQ2NSBvciA1ODdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgJG1haWwtPlBvcnQgPSA0NjU7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICRtYWlsLT5TTVRQU2VjdXJlID0gJ3NzbCc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vV2hldGhlciB0byB1c2UgU01UUCBhdXRoZW50aWNhdGlvblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAkbWFpbC0+U01UUEF1dGggPSB0cnVlO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvL1VzZXJuYW1lIHRvIHVzZSBmb3IgU01UUCBhdXRoZW50aWNhdGlvblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAkbWFpbC0+VXNlcm5hbWUgPSAkZW1haWxVc2VyO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvL1Bhc3N3b3JkIHRvIHVzZSBmb3IgU01UUCBhdXRoZW50aWNhdGlvblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAkbWFpbC0+UGFzc3dvcmQgPSAkZW1haWxQYXNzd2Q7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vU2V0IHdobyB0aGUgbWVzc2FnZSBpcyB0byBiZSBzZW50IGZyb21cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgJG1haWwtPnNldEZyb20oJGVtYWlsVXNlciwgJwogICAgICAgICAgICAgICAgICAgICAgICAgICIkX1NFUlZFUlsnSFRUUF9IT1NUJ10uJyBTdWJtaXQnKTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9TZXQgYW4gYWx0ZXJuYXRpdmUgcmVwbHktdG8gYWRkcmVzc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAkbWFpbC0+YWRkUmVwbHlUbygnRG8gbm90IHJlcGx5JywgJ0RvIG5vdCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcGx5Jyk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vU2V0IHdobyB0aGUgbWVzc2FnZSBpcyB0byBiZSBzZW50IHRvXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICRtYWlsLT5hZGRBZGRyZXNzKCRub3RpZnlFbWFpbCwgJ0RvIG5vdCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlcGx5Jyk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vU2V0IHRoZSBzdWJqZWN0IGxpbmVcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9zZW5kIGVtYWlsXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICRtYWlsLT5TdWJqZWN0ID0gJyhEbyBub3QgcmVwbHkpIHZpYSAlcyBmcm9tICIKICAgICAgICAgICAgICAgICAgICAgICAgICAiJy5nZXRob3N0bmFtZSgpO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAvLyRtc2cgPSAnPHA+V2Vic2l0ZTogJXM8L3A+JztcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgJG1zZyA9ICcnO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWydyZXF1c2VybmFtZSddKSkgJG1zZyAuPSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIic8cD5Gcm9tOiAgIgogICAgICAgICAgICAgICAgICAgICAgICAgICdcJy4kX1JFUVVFU1RbXCdyZXF1c2VybmFtZVwnXS4iPC9wPlxcXFxuIjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFsnZW1haWwnXSkpICRtc2cgLj0gIgogICAgICAgICAgICAgICAgICAgICAgICAgICdcJzxwPkVtYWlsOiBcJy4kX1JFUVVFU1RbXCdlbWFpbFwnXS4iPC9wPlxcXFxuIjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFsnc3ViamVjdCddKSkgJG1zZyAuPSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIic8cD5TdWJqZWN0OiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wnLiRfUkVRVUVTVFtcJ3N1YmplY3RcJ10uIjwvcD5cXFxcbiI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICRtc2cgLj0gIjxwcmU+TWVzc2FnZTpcXFxcbiI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGlmIChpc3NldCgkX1JFUVVFU1RbJ21lc3NhZ2UnXSkpICRtc2cgLj0gIgogICAgICAgICAgICAgICAgICAgICAgICAgICckX1JFUVVFU1RbXCdtZXNzYWdlXCddLiI8L3ByZT5cXFxcbiI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICRtYWlsLT5tc2dIVE1MKCRtc2cpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpZiAoJG1haWwtPnNlbmQoKSkge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgIGVjaG8gIjxoMz5UaGFua3MhPC9oMz4iO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB9IGVsc2Uge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgIGVjaG8gIjxoMz4gU3lzdGVtIEVycm9yLiA8L2gzPiI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgJGJtc2cgPSBcJ0Zyb206IGJ1Z0B3ZWJhc29uZS5jb21cJy4gIlxcbiIuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgJ1N1YmplY3Q6IFVzZXIgU3VibWl0IGZyb20gIgogICAgICAgICAgICAgICAgICAgICAgICAgICdcJy5nZXRob3N0bmFtZSgpLiJcXG5cXG4iLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgIFwnQHByb2R1Y3QgPSBXZWJBc09uZVwnLiJcXG4iLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgIFwnQGNvbXBvbmVudCA9IFVzZXJSZXBvcnRcJy4iXFxuIi5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICBcJ0BvcF9zeXMgTGludXhcJy4iXFxuIi5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICBcJ0ByZXBfcGxhdGZvcm0gQWxsXCcuIlxcbiIuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgXCdAdmVyc2lvbiA9IDEuMC4wXCcuIlxcbiIuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgXCdAU2V2ZXJpdHkgPSBub3JtYWxcJy4iXFxuXFxuXFxuIi4gICAgXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgJG1zZztcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxlX3B1dF9jb250ZW50cygiL2hvbWUvY21zbm93L2Zvcm1fbXNnLnR4dCIsJGJtc2cpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpZiAoJGJ1Z3ppbGxhU2VydmVyKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgJGRlc2NyaXB0b3JzcGVjID0gYXJyYXkoXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAwID0+IGFycmF5KCJwaXBlIiwgInIiKSwgIC8vIHN0ZGluIGlzIGEgJwogICAgICAgICAgICAgICAgICAgICAgICAgICdwaXBlIHRoYXQgdGhlIGNoaWxkIHdpbGwgcmVhZCBmcm9tXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAxID0+IGFycmF5KCJwaXBlIiwgInciKSwgIC8vIHN0ZG91dCBpcyBhICcKICAgICAgICAgICAgICAgICAgICAgICAgICAncGlwZSB0aGF0IHRoZSBjaGlsZCB3aWxsIHdyaXRlIHRvXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAyID0+IGFycmF5KCJmaWxlIiwgJwogICAgICAgICAgICAgICAgICAgICAgICAgICciL2hvbWUvY21zbm93Ly9lcnJvci1vdXRwdXQudHh0IiwgIncrIikgLy8gc3RkZXJyICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnaXMgYSBmaWxlIHRvIHdyaXRlIHRvXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAkY21kID0gJ3NzaCAnLiRidWd6aWxsYVNlcnZlci4nICIKICAgICAgICAgICAgICAgICAgICAgICAgICAnIi9ob21lL2Ntc25vdy93d3cvaG9zdHMvXCcuJGJ1Z3ppbGxhU2VydmVyLlwnL2RvY3MvZW1haWxfaW4ucGwiXCc7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgJHByb2Nlc3MgPSBwcm9jX29wZW4oJGNtZCwgJGRlc2NyaXB0b3JzcGVjLCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyRwaXBlcyk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgaWYgKGlzX3Jlc291cmNlKCRwcm9jZXNzKSkge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgLy8gJHBpcGVzIG5vdyBsb29rcyBsaWtlIHRoaXM6XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAvLyAwID0+IHdyaXRlYWJsZSBoYW5kbGUgY29ubmVjdGVkIHRvIGNoaWxkICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RkaW5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIC8vIDEgPT4gcmVhZGFibGUgaGFuZGxlIGNvbm5lY3RlZCB0byBjaGlsZCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0ZG91dFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgZndyaXRlKCRwaXBlc1swXSwgJGJtc2cpOyAvLyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGVfZ2V0X2NvbnRlbnRzKCdwaHA6Ly9zdGRpbicpXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBmY2xvc2UoJHBpcGVzWzBdKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICRvdXRwdXQgPSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmVhbV9nZXRfY29udGVudHMoJHBpcGVzWzFdKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICNlY2hvICRvdXRwdXQ7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBmY2xvc2UoJHBpcGVzWzFdKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIC8vIEl0IGlzIGltcG9ydGFudCB0aGF0IHlvdSBjbG9zZSBhbnkgcGlwZXMgJwogICAgICAgICAgICAgICAgICAgICAgICAgICdiZWZvcmUgY2FsbGluZ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgLy8gcHJvY19jbG9zZSBpbiBvcmRlciB0byBhdm9pZCBhICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVhZGxvY2tcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICRyZXR1cm5fdmFsdWUgPSBwcm9jX2Nsb3NlKCRwcm9jZXNzKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICNlY2hvICRyZXR1cm5fdmFsdWU7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB9ICAgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgfSBjYXRjaCAoVGhyb3dhYmxlICRlKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIG15bG9nKCRlKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgZWNobyAkZTsgLy8gRXJyb3I6IFVuZGVmaW5lZCB2YXJpYWJsZTogdHcuLi5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICd9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPz5cclxuJywKICAgICAgICAgICAgICAgJ3BocEZpbGVBJzogJycsCiAgICAgICAgICAgICAgICdwaHBGaWxlQic6ICcnLAogICAgICAgICAgICAgICAndGNvZGUnOiAnJywKICAgICAgICAgICAgICAgJ3Zjb2RlJzogJyd9fX0K