Survey
6.0.8
OTRS AG
https://otrs.com/
GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007
- Code cleanup.
- Fixed: Survey request malfunction when ticket is removed (bug#14080).
- Code cleanup.
- Updated translations, thanks to all translators.
- Follow-up for (bug#12226): SurveyRequestsSend failed.
- Updated license information.
- Updated translations, thanks to all translators.
- Fixed: Survey modul form is not divided in case of NPS question (bug#13742).
- Marked strings as translatable.
- Fixed: Change status dropdown is not modern and not translated in AgentSurveyZoom screen (bug#13741).
- Fixed: Survey statistic does not process timezone (bug#13755).
- Fixed: Survey request is beeing sent ignoring SendInHoursAfterClose (bug#13849).
- Updated translations, thanks to all translators.
- Updated translations, thanks to all translators.
- Fixed bug#13442 - Personal setting is not displayed.
- Updated translations, thanks to all translators.
- Updated documentation (Configuration chapter).
- Updated translations, thanks to all translators.
- Updated translations, thanks to all translators.
- Removed access key for survey overview screen in order to avoid conflicts.
- Updated translations, thanks to all translators.
- Ported to OTRS 6 Framework.
- Fixed bug#[7929](https://bugs.otrs.org/show_bug.cgi?id=7929) - Accessing freetext answers is cumbersome.
- Added tag reference in the Add/Edit survey screens.
A customer survey tool.
Ein Kundenumfragen Werkzeug.
Una herramienta de encuestas a clientes.
Egy ügyfélkérdőív eszköz.
6.0.x
<br>
<strong>WELCOME</strong>
<br>
<br>
You are about to install the OTRS package Survey.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>WILLKOMMEN</strong>
<br>
<br>
Sie sind im Begriff das OTRS-Paket Survey zu installieren.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>BIENVENIDO</strong>
<br>
<br>
Está apunto de instalar el módulo de encuestas de OTRS.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>ÜDVÖZÖLJÜK</strong>
<br>
<br>
Ön a Survey OTRS csomag telepítésére készül.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>ATTENTION</strong>
<br>
<br>
If you uninstall this package, all database tables that were created during installation will be deleted.
All data from these tables will be irrevocably lost!
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>ACHTUNG</strong>
<br>
<br>
Bei der Deinstallation werden die von diesem Paket angelegten Datenbank-Tabellen gelöscht.
Alle darin enthaltenen Daten gehen unwiderruflich verloren!
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>ATENCIÓN</strong>
<br>
<br>
Si usted desinstala este paquete, todas las tablas de la base de datos creadas durante la instalación serán borradas.
¡Todos los datos de esas tablas serán irrevocablemente perdidos!.
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>FIGYELEM</strong>
<br>
<br>
Ha eltávolítja ezt a csomagot, akkor a telepítés során létrehozott összes adatbázistábla törlésre kerül.
Az ezekben a táblákban lévő összes adat visszavonhatatlanul el fog veszni!
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>WELCOME</strong>
<br>
<br>
You are about to upgrade the OTRS package Survey.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>WILLKOMMEN</strong>
<br>
<br>
Sie sind im Begriff das OTRS-Paket Survey zu aktualisieren.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>BIENVENIDO</strong>
<br>
<br>
Esta apunto de actualizar el módulo de encuestas de OTRS.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>ÜDVÖZÖLJÜK</strong>
<br>
<br>
Ön a Survey OTRS csomag frissítésére készül.<br>
<br>
<br>
((enjoy))<br>
<br>
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeFromLowerThan_2_1_5();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeFromLowerThan_2_0_92();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeFromLowerThan_4_0_1();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeFromLowerThan_4_0_91();
2018-11-05 17:57:06
opms.otrs.com
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ra2tPXv2bHNzM5vNTk5Onj17NpQJoh2+79u2PTc3t7GxEXYWdDYKB4C2VCoVTdMsy+rr6wtuZriuq+v65ubmyspKIpEISoamaePj47VabWtra2xsTNf13cNM0xwZGSkWi48ePZJSJhKJsCeH/6VpWqFQuHnzZm9vb9hZ0NnYNAqgLevr69Vq1bKswcHBtbW1WCxWKpUMw/jQKoKVkaGhoUQi8fz5cynlxYsXh4eHbduOxWKfDpNS5nK5yclJTdNc13379m3Yk8PeLMu6fPlyX19f2EFwEmgf7pfu6cGDB2PjXx9ZGgBH5vff5j7jaPNoNOp5XrBWEohEIoZh1Ov1/S/cPUzX9Ugk0mw2D5sBSj1+/Hh+fj6VSl25cmVwcPDA8ZVK5erMT0cQDMff4ouH+7xbhzscAA6h0Wjs+ERKeWDb2HNYq9UKdoTgWDEMY2pqqlAocLAbviwKBwDgo0KhEHYEnEwUWAAAoByFAwAAKEfhAAAAylE4AACAcmwaBbpXpVIJOwKAbkHhALqUJ32nd6yl8U8An0/3vezGYtgp0BlYUgG6VLPpGfLg8zOAfRiy3uDoNrSHwgF0KynjzfWwQ6CzxZurkf1OqwY+onAAXerqzA2jvtYjd54cCrTJkI2e+vr31zjXHG2hcABdKh5P9Og9/VtLEZ/zxXFoEb+V2fr7lBGLRqNhZ0FnoHAA3Wtm5kZjeyvrvorKWthZ0Emisp5zXzW2t7797nrYWdAxKBxAV5udvSU8L+3ame3lU56r+54QrMljT77ue6c8N7NdTLt/ab6cnf0l7EjoJDwRB3S7H378eXW18ucfvyYiVcPo6YloYSfCMeVJv9lsCul/9c21VCoTdhx0GAoHAJFKZa7P3go7BYCTjCUVAACgHIUDAAAoR+EAAADKUTgAAIByFA4AAKAchQMAAChH4QAAAMpROAAAgHIUDgAAoByFAwAAKEfhAAAAylE4AACAchQOAACgHIUDAAAoR+EAAADKUTgAAIByFA4AAKAchQMAACjXc+CIxRcPjyAHAAA4wTTf98POAAAATjiWVAAAgHIUDgAAoByFAwAAKEfhAAAAylE4AACAchQOAACgHIUDAAAoR+EAAADK/QOGSjSEcpJaCwAAAABJRU5ErkJggg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudFN1cnZleU92ZXJ2aWV3IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkFsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5BIFN1cnZleSBNb2R1bGUuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+U3VydmV5PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+U3VydmV5PC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudFN1cnZleU92ZXJ2aWV3IyMjMDAyLVN1cnZleSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPlN1cnZleS5BZ2VudC5EZWZhdWx0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPlN1cnZleS5BZ2VudC5TdXJ2ZXlPdmVydmlldy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRTdXJ2ZXlPdmVydmlldyMjIzAwMi1TdXJ2ZXkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkEgU3VydmV5IE1vZHVsZS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5TdXJ2ZXk8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50U3VydmV5T3ZlcnZpZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGlua09wdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhciI+U3VydmV5PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPk1lbnU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPkl0ZW1BcmVhPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjgwMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPk92ZXJ2aWV3PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+T3ZlcnZpZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50U3VydmV5T3ZlcnZpZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGlua09wdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhciI+U3VydmV5PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjEwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudFN1cnZleUFkZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlN1cnZleSBBZGQgTW9kdWxlLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPlN1cnZleTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPlN1cnZleTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRTdXJ2ZXlBZGQjIyMwMDItU3VydmV5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+U3VydmV5LkFnZW50LkRlZmF1bHQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+U3VydmV5LkFnZW50LkN1c3RvbWVyVXNlckNvbmRpdGlvbnMuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0FnZW50U3VydmV5QWRkIyMjMDAyLVN1cnZleSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+TmV3PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+TmV3PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudFN1cnZleUFkZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj5TdXJ2ZXk8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+MjAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50U3VydmV5RWRpdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5TdXJ2ZXkgRWRpdCBNb2R1bGUuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+U3VydmV5PC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudFN1cnZleUVkaXQjIyMwMDItU3VydmV5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+U3VydmV5LkFnZW50LkRlZmF1bHQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+U3VydmV5LkFnZW50LkN1c3RvbWVyVXNlckNvbmRpdGlvbnMuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0FnZW50U3VydmV5RWRpdCMjIzAwMi1TdXJ2ZXkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRTdXJ2ZXlTdGF0cyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+U3VydmV5IFN0YXRzIE1vZHVsZS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5TdXJ2ZXk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50U3VydmV5U3RhdHMjIyMwMDItU3VydmV5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+U3VydmV5LkFnZW50LkRlZmF1bHQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+U3VydmV5LkFnZW50LlN1cnZleVN0YXRzLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudFN1cnZleVN0YXRzIyMjMDAyLVN1cnZleSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRTdXJ2ZXlab29tIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlN1cnZleSBab29tIE1vZHVsZS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5TdXJ2ZXk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50U3VydmV5Wm9vbSMjIzAwMi1TdXJ2ZXkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5TdXJ2ZXkuQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5TdXJ2ZXkuQWdlbnQuU3VydmV5Wm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRTdXJ2ZXlab29tIyMjMDAyLVN1cnZleSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+QSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zIyMjMDAyLVN1cnZleSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPlN1cnZleS5BZ2VudC5EZWZhdWx0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPlN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI1B1YmxpY1N1cnZleSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+UHVibGljIFN1cnZleS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5TdXJ2ZXk8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5TdXJ2ZXk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OlB1YmxpY1N1cnZleSMjIzAwMi1TdXJ2ZXkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPlN1cnZleS5DdXN0b21lci5EZWZhdWx0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlN1cnZleTo6U2hvd1ZvdGVEYXRhIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN1cnZleTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlN1cnZleTo6U2VuZFBlcmlvZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpTdXJ2ZXk8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjMwMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpEZWxldGVQZXJpb2QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgJ1Rhc2sjIyNTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZScgc2V0dGluZy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN1cnZleTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MzY1PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpTdXJ2ZXk8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN1cnZleTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlN1cnZleTo6Tm90aWZpY2F0aW9uU2VuZGVyIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6U3VydmV5PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cXVhbGl0eUBleGFtcGxlLmNvbTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpOb3RpZmljYXRpb25SZWNpcGllbnRCbGFja2xpc3QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN1cnZleTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT48L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6Ok5vdGlmaWNhdGlvblN1YmplY3QiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6U3VydmV5PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+SGVscCB1cyB3aXRoIHlvdXIgZmVlZGJhY2shPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6Ok5vdGlmaWNhdGlvbkJvZHkiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6U3VydmV5PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJUZXh0YXJlYSI+RGVhciBDdXN0b21lciwKClRoYW5rcyBmb3IgdXNpbmcgb3VyIHNlcnZpY2UuIEhlbHAgdXMgdG8gaW1wcm92ZSB1cyBhbmQgb3VyIHNlcnZpY2VzLgoKUGxlYXNlIGdpdmUgdXMgZmVlZGJhY2sgb24gaG93IHRvIGltcHJvdmUgb3VyIHNlcnZpY2VzOgoKJmx0O09UUlNfQ09ORklHX0h0dHBUeXBlJmd0OzovLyZsdDtPVFJTX0NPTkZJR19GUUROJmd0Oy8mbHQ7T1RSU19DT05GSUdfU2NyaXB0QWxpYXMmZ3Q7cHVibGljLnBsP0FjdGlvbj1QdWJsaWNTdXJ2ZXk7UHVibGljU3VydmV5S2V5PSZsdDtPVFJTX1B1YmxpY1N1cnZleUtleSZndDsKClRoYW5rcyBmb3IgeW91ciBoZWxwIQoKWW91ciBPVFJTLVRlYW0KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OlNlbmROb1N1cnZleVJlZ0V4cCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpTdXJ2ZXk8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj4oTUFJTEVSLURBRU1PTnxwb3N0bWFzdGVyfGFidXNlKUAuKz9cLi4rPzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyM5OS1TdXJ2ZXlTZW5kUmVxdWVzdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpTdXJ2ZXk8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpFdmVudDo6U3VydmV5U2VuZFJlcXVlc3Q8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij4oQXJ0aWNsZUNyZWF0ZXxUaWNrZXRTdGF0ZVVwZGF0ZSk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpGcm9udGVuZDo6T3ZlcnZpZXcjIyNTbWFsbCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlN1cnZleU92ZXJ2aWV3PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlN1cnZleU92ZXJ2aWV3OjpTbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+U21hbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWVTaG9ydCI+UzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGFnZVNob3duIj4yNTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSW1hZ2UiPm92ZXJ2aWV3c21hbGwucG5nPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJbWFnZVNlbGVjdGVkIj5vdmVydmlld3NtYWxsLXNlbGVjdGVkLnBuZzwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OkZyb250ZW5kOjpBZ2VudFN1cnZleU92ZXJ2aWV3IyMjU2hvd0NvbHVtbnMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6U3VydmV5T3ZlcnZpZXc8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTnVtYmVyIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSW50cm9kdWN0aW9uIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTm90aWZpY2F0aW9uU2VuZGVyIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOb3RpZmljYXRpb25TdWJqZWN0Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOb3RpZmljYXRpb25Cb2R5Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0dXMiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNyZWF0ZVRpbWUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNyZWF0ZUJ5Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDaGFuZ2VUaW1lIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDaGFuZ2VCeSI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OkZyb250ZW5kOjpIVE1MUmljaFRleHRIZWlnaHREZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6U3VydmV5Wm9vbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzAtOV17MSw0fSQiPjgwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OkZyb250ZW5kOjpIVE1MUmljaFRleHRIZWlnaHRNYXgiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpTdXJ2ZXlab29tPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDR9JCI+MjUwMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpGcm9udGVuZDo6Q2hhbmdlU3VydmV5U3RhdHVzR3JvdXBzIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6U3VydmV5Wm9vbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiAnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmQnIHNldHRpbmcuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpTdXJ2ZXk8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsNX0kIj4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OkFtb3VudE9mU3VydmV5c1BlcjMwRGF5cyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6U3VydmV5PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDR9JCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpIb29rIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpTdXJ2ZXk8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5TdXJ2ZXkjPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQcmVmZXJlbmNlc0dyb3VwcyMjI1N1cnZleU92ZXJ2aWV3U21hbGxQYWdlU2hvd24iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlByZWZlcmVuY2VzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlByZWZlcmVuY2VzOjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmZXJlbmNlR3JvdXAiPk1pc2NlbGxhbmVvdXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPlN1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjIiBUcmFuc2xhdGFibGU9IjEiPlN1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJLZXkiIFRyYW5zbGF0YWJsZT0iMSI+TGltaXQuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMCI+MTA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTUiPjE1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjIwIj4yMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyNSI+MjU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMzAiPjMwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjM1Ij4zNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGFTZWxlY3RlZCI+MjU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZLZXkiPlVzZXJTdXJ2ZXlPdmVydmlld1NtYWxsUGFnZVNob3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj44MDAwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3RpdmUiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzAwMC1CYWNrIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlN1cnZleVpvb206Ok1lbnVNb2R1bGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6U3VydmV5TWVudTo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5CYWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5CYWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+WyUgRW52KCJMYXN0U2NyZWVuT3ZlcnZpZXciKSB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+QmFjazwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDEwLUVkaXRHZW5lcmFsSW5mbyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlN1cnZleVpvb206Ok1lbnVNb2R1bGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6U3VydmV5TWVudTo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5FZGl0IEdlbmVyYWwgSW5mbzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRTdXJ2ZXlFZGl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRTdXJ2ZXlFZGl0O1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlN1cnZleTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMwMjAtRWRpdFF1ZXN0aW9ucyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6U3VydmV5Wm9vbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpTdXJ2ZXlNZW51OjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkVkaXQgUXVlc3Rpb25zPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5FZGl0IHN1cnZleSBxdWVzdGlvbnMuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50U3VydmV5RWRpdFF1ZXN0aW9uczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucztTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDMwLVN0YXRzRGV0YWlscyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6U3VydmV5Wm9vbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpTdXJ2ZXlNZW51OjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPlN0YXRzIERldGFpbHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlpvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50U3VydmV5U3RhdHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudFN1cnZleVN0YXRzO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkRhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkRhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhc2tOYW1lIj5TdXJ2ZXlSZXF1ZXN0c1NlbmQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNjaGVkdWxlIj4qLzIwICogKiAqICo8L0l0ZW0+IDwhLS0gZGVmYXVsdDogZXZlcnkgMjAgbWluIC0tPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6U3VydmV5OjpSZXF1ZXN0c1NlbmQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZ1bmN0aW9uIj5FeGVjdXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYXhpbXVtUGFyYWxsZWxJbnN0YW5jZXMiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBhcmFtcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT4tLWZvcmNlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpTdXJ2ZXk8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlckN1c3RvbWVySUQiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVzZXJUaXRsZSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlckZpcnN0bmFtZSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlckxhc3RuYW1lIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyTG9naW4iPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVzZXJFbWFpbCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlclBob25lIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyRmF4Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyTW9iaWxlIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyU3RyZWV0Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyWmlwIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyQ2l0eSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlckNvdW50cnkiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVzZXJDb21tZW50Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkRhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2s8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFza05hbWUiPlN1cnZleVJlcXVlc3RzRGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTY2hlZHVsZSI+Ki8yMCAqICogKiAqPC9JdGVtPiA8IS0tIGRlZmF1bHQ6IGV2ZXJ5IDIwIG1pbiAtLT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6TWFpbnQ6OlN1cnZleTo6UmVxdWVzdHNEZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZ1bmN0aW9uIj5FeGVjdXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYXhpbXVtUGFyYWxsZWxJbnN0YW5jZXMiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBhcmFtcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT4tLWZvcmNlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3RhdHM6OkR5bmFtaWNPYmplY3RSZWdpc3RyYXRpb24jIyNTdXJ2ZXlMaXN0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpTdGF0czwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpTdGF0czo6RHluYW1pYzo6U3VydmV5TGlzdDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXlTdGF0czo6U2hvd0RlbGV0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6U3VydmV5U3RhdHM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlN1cnZleTo6U2VuZE9ubHlUb1JlYWxDdXN0b21lciIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN1cnZleTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KPC9vdHJzX2NvbmZpZz4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmJnX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ9Ch0YrQt9C00LDQudGC0LUg0L3QvtCy0L4g0J/RgNC+0YPRh9Cy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ9CS0YrQstC10LTQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAn0JLRitCy0LXQtNC10L3QuNC1INCyINC40LfRgdC70LXQtNCy0LDQvdC10YLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ9Cj0LLQtdC00L7QvNGP0LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAn0KLQuNC/0L7QstC1INC90LAg0LHQuNC70LXRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAn0JLRitGC0YDQtdGI0L3QviDQvtC/0LjRgdCw0L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICfQoNC10LTQsNC60YLQuNGA0LDQvdC1INC90LAg0L7RgdC90L7QstC90LDRgtCwINC40L3RhNC+0YDQvNCw0YbQuNGPJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAn0KDQtdC00LDQutGC0LjRgNCw0L3QtSDQvdCwINCy0YrQv9GA0L7RgdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJ9CS0LjQtSDRgdGC0LUg0YLRg9C6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICfQktGK0L/RgNC+0YHQuCDQt9CwINC/0YDQvtGD0YfQstCw0L3QtdGC0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAn0JTQvtCx0LDQstGP0L3QtSDQvdCwINCy0YrQv9GA0L7RgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ9CS0YrQstC10LTQtdGC0LUg0LLRitC/0YDQvtGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAn0J3QtdC+0LHRhdC+0LTQuNC8INC1INC+0YLQs9C+0LLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAn0J3Rj9C80LAg0LfQsNC/0LjRgdCw0L3QuCDQstGK0L/RgNC+0YHQuCDQt9CwINGC0L7QstCwINC/0YDQvtGD0YfQstCw0L3QtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICfQktGK0L/RgNC+0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAn0J3QtdC+0LHRhdC+0LTQuNC8INC1INC+0YLQs9C+0LLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICfQmtC+0LPQsNGC0L4g0L/RgNC40LrQu9GO0YfQuNGC0LUg0YEg0YDQtdC00LDQutGC0LjRgNCw0L3QtdGC0L4g0L3QsCDQstGK0L/RgNC+0YHQuNGC0LUg0L7RgiDQuNC30YHQu9C10LTQstCw0L3QtdGC0L4sINC/0YDQvtGB0YLQviDQt9Cw0YLQstC+0YDQtdGC0LUg0YLQvtC30Lgg0LXQutGA0LDQvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQsNC90LUg0L3QsCDQstGK0L/RgNC+0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ9CS0YrRgNC90LXRgtC1INGB0LUg0LrRitC8INCy0YrQv9GA0L7RgdC40YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICfQktGK0L/RgNC+0YEgOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ9CS0YrQt9C80L7QttC90Lgg0L7RgtCz0L7QstC+0YDQuCDQt9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICfQlNC+0LHQsNCy0Y/QvdC1INC90LAg0J7RgtCz0L7QstC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICfQndGP0LzQsCDQvtGC0LPQvtCy0L7RgNC4INC30LAg0YLQvtC30Lgg0LLRitC/0YDQvtGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAn0J3Rj9C80LAg0L3Rj9C60L7Qu9C60L4g0L7RgtCz0L7QstC+0YDQsCwg0Lgg0YnQtSDRgdC1INC/0L7QutCw0LbQtSDRgtC10LrRgdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAn0KDQtdC00LDQutGC0LjRgNCw0L3QtSDQvdCwINC+0YLQs9C+0LLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ9CS0YrRgNC90LXRgtC1INGB0LUsINC30LAg0LTQsCDRgNC10LTQsNC60YLQuNGA0LDRgtC1INCy0YrQv9GA0L7RgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICfQntGC0LPQvtCy0L7RgCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJ9Cc0LDQutGBLiDQv9C+0LrQsNC30LDQvdC4INC/0YDQvtGD0YfQstCw0L3QuNGPINC90LAg0YHRgtGA0LDQvdC40YbQsNGC0LAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ9CY0LfQv9GA0LDRidCw0YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICfQo9Cy0LXQtNC+0LzQu9C10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICfQn9GA0L7QvNC10L3QtdC90L4g0L7Rgic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICfQn9GA0LXQs9C70LXQtCDQvdCwINCh0YLQsNGC0LjRgdGC0LjQutCw0YLQsCDQvtGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAn0KLQsNCx0LvQuNGG0LAg0YEg0LjRgdC60LDQvdC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAn0JLRgNC10LzQtSDQt9CwINC40LfQv9GA0LDRidCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICfQktGA0LXQvNC1INC30LAg0LPQu9Cw0YHRg9Cy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICfQlNC10YLQsNC50LvQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ9CU0LDQvdC90Lgg0LfQsCDRgdGK0YHRgtC+0Y/QvdC40LXRgtC+INC90LAg0LjQt9GB0LvQtdC00LLQsNC90LXRgtC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICfQktGK0YDQvdC10YLQtSDRgdC1INC60YrQvCDQvtCx0YnQuNGPINC/0YDQtdCz0LvQtdC0INC90LAg0YHRgtCw0YLQuNGB0YLQuNGH0LXRgdC60LjRgtC1INC00LDQvdC90LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAn0JjQvdGE0L7RgNC80LDRhtC40Y8g0LfQsCDQv9GA0L7Rg9GH0LLQsNC90LjRj9GC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ9CY0LfQv9GA0LDRgtC10L3QuCDQuNGB0LrQsNC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAn0J/QvtC70YPRh9C10L3QuCDQv9GA0L7Rg9GH0LLQsNC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ9CU0LDQvdC90Lgg0LfQsCDQuNC30YHQu9C10LTQstCw0L3QtdGC0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAn0JHQuNC70LXRgtC90Lgg0YPRgdC70YPQs9C4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAn0JPRgNCw0YTQuNC60LAg0L3QsCDRgNC10LfRg9C70YLQsNGC0LjRgtC1INC+0YIg0LjQt9GB0LvQtdC00LLQsNC90LXRgtC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICfQndGP0LzQsCDRgdGC0LDRgtC40YfQtdGB0LrQuCDRgNC10LfRg9C70YLQsNGC0LgnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAn0J/RgNC+0YPRh9Cy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAn0JzQvtC70Y8g0L7RgtCz0L7QstC+0YDQtdGC0LUg0L3QsCDRgdC70LXQtNC90LjRgtC1INCy0YrQv9GA0L7RgdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ9Cc0L7QudGC0LUg0L7RgtCz0L7QstC+0YDQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAn0KLQvtCy0LAg0YHQsCDRgtCy0L7QudGC0LUg0L7RgtCz0L7QstC+0YDQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICfQl9Cw0LPQu9Cw0LLQuNC1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICfQlNC+0LLQsNCy0Y/QvdC1INC90LAg0L3QvtCy0L4g0J/RgNC+0YPRh9Cy0LDQvdC1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJ9Cd0Y/QvNCw0YLQtSDRgNCw0LfRgNC10YjQtdC90LjQtSDQt9CwINGC0L7QstCwINC/0YDQvtGD0YfQstCw0L3QtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtSDQtSDQtNCw0LTQtdC90L4gSUQg0L3QsCDQv9GA0L7Rg9GH0LLQsNC90LXRgtC+ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQsNC90LUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAn0J3Rj9C80LDRgtC1INGA0LDQt9GA0LXRiNC10L3QuNC1INC30LAg0YLQvtCy0LAg0L/RgNC+0YPRh9Cy0LDQvdC1INC40LvQuCDQstGK0L/RgNC+0YEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAn0J3Rj9C80LDRgtC1INGA0LDQt9GA0LXRiNC10L3QuNC1INC30LAg0YLQvtCy0LAg0L/RgNC+0YPRh9Cy0LDQvdC1LCDQstGK0L/RgNC+0YEg0LjQu9C4INC+0YLQs9C+0LLQvtGAISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICfQoNC10LTQsNC60YLQuNGA0LDQvdC1INC90LAg0LLRitC/0YDQvtGB0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAn0JTQkC/QndCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ9Cg0LDQtNC40L4gKNGB0L/QuNGB0YrQuiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAn0JrQstCw0LTRgNCw0YLRh9C1INC30LAg0L7RgtC80LXRgtC60LAgKNGB0L/QuNGB0YrQuiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICfQktGK0L/RgNC+0YEg0YLQuNC/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAn0J/RitC70LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAn0J3QtdC/0YrQu9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQsNC90LUg0L3QsCDQstGK0L/RgNC+0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICfQoNC10LTQsNC60YLQuNGA0LDQvdC1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ9Ce0LHRiSDQv9GA0LXQs9C70LXQtCDQvdCwINGB0YLQsNGC0LjRgdGC0LjRh9C10YHQutC40YLQtSDQtNCw0L3QvdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICfQndGP0LzQsNGC0LUg0YDQsNC30YDQtdGI0LXQvdC40LUg0LfQsCDRgtC+0LLQsCDQv9GA0L7Rg9GH0LLQsNC90LUg0LjQu9C4INGB0YLQsNGC0LjRgdGC0LjRh9C10YHQutC4INC/0L7QtNGA0L7QsdC90L7RgdGC0LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ9Cf0L7QtNGA0L7QsdC90L7RgdGC0LgnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICfQndC1INC80L7QttC1INC00LAg0YHQtSDQt9Cw0LTQsNC00LUg0L3QvtCy0L4g0YHRitGB0YLQvtGP0L3QuNC1ISDQndGP0LzQsCDQtNC10YTQuNC90LjRgNCw0L3QuCDQstGK0L/RgNC+0YHQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICfQndC1INC80L7QttC1INC00LAg0YHQtSDQt9Cw0LTQsNC00LUg0L3QvtCy0L4g0YHRitGB0YLQvtGP0L3QuNC1ISDQktGK0L/RgNC+0YHQuCDQvdC10L/RitC70L3QuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAn0KHRitGB0YLQvtGP0L3QuNC10YLQviDQtSDQv9GA0L7QvNC10L3Qvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSDQndC1INC1INC40LfQsdGA0LDQvdCwINC+0L/QsNGI0LrQsCAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJy0g0J3Rj9C80LAg0LjQt9Cx0YDQsNC9INGC0LjQvyDQsdC40LvQtdGCIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnLSDQndGP0LzQsCDQuNC30LHRgNCw0L3QsCDRg9GB0LvRg9Cz0LAg0LfQsCDQsdC40LvQtdGC0LggLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0g0J/RgNC+0LzRj9C90LAg0L3QsCDRgdGK0YHRgtC+0Y/QvdC40LXRgtC+IC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICfQndC10LLQsNC70LjQtNC10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ9Cd0L7QsiDRgdGC0LDRgtGD0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAn0J7Qv9C40YHQsNC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ9Ce0YLQs9C+0LLQvtGA0LXQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ9Cd0LUg0LUg0L7RgtCz0L7QstC+0YDQtdC90L4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ9CR0LvQsNCz0L7QtNCw0YDQuNC8INCS0Lgg0LfQsCDQvtCx0YDQsNGC0L3QsNGC0LAg0LLRgNGK0LfQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ9Cf0YDQvtGD0YfQstCw0L3QtdGC0L4g0L/RgNC40LrQu9GO0YfQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAn0KHRitC+0LHRidC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICfQnNC+0LTRg9C70YrRgiDQvdC1INC1INCw0LrRgtC40LLQuNGA0LDQvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICfQotCw0LfQuCDRhNGD0L3QutGG0LjRjyDQvdC1INC1INCw0LrRgtC40LLQuNGA0LDQvdCwLCDQvNC+0LvRjywg0YHQstGK0YDQttC10YLQtSDRgdC1INGBINCQ0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGALic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAn0JPRgNC10YjQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICfQndC10LLQsNC70LjQtNC10L0g0LrQu9GO0Ycg0LfQsCDQv9GA0L7Rg9GH0LLQsNC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICfQktGK0LLQtdC00LXQvdC40Y/RgiDQutC70Y7RhyDQtSDQvdC10LLQsNC70LjQtNC10L0sINCw0LrQviDRgdGC0LUg0L/RgNC+0YHQu9C10LTQuNC70Lgg0LLRgNGK0LfQutCw0YLQsCwg0LzQvtC20LUg0LHQuCDRgtC+0LLQsCDQtSDQvtGB0YLQsNGA0Y/Qu9C+INC40LvQuCDQvdC10LLQsNC70LjQtNC90L4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAn0J/RgNC+0YPRh9Cy0LDQvdC1INC90LAg0LPQu9Cw0YHRg9Cy0LDQvdC10YLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAn0JTQsNC90L3QuCDQt9CwINCz0LvQsNGB0YPQstCw0L3QtSDQsiDQv9GA0L7Rg9GH0LLQsNC90LjRj9GC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ9CS0LjQtSDQstC10YfQtSDRgdGC0LUg0L7RgtCz0L7QstC+0YDQuNC70LguJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICfQndCw0LjRgdGC0LjQvdCwINC70Lgg0LjRgdC60LDRgtC1INC00LAg0LjQt9GC0YDQuNC10YLQtSDRgtC+0LfQuCDQstGK0L/RgNC+0YE/INCS0YHQuNGH0LrQuCDRgdCy0YrRgNC30LDQvdC4INC00LDQvdC90Lgg0YnQtSDQsdGK0LTQsNGCINC30LDQs9GD0LHQtdC90LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAn0J3QsNC40YHRgtC40L3QsCDQu9C4INC40YHQutCw0YLQtSDQtNCwINC40LfRgtGA0LjQtdGC0LUg0YLQvtC30Lgg0L7RgtCz0L7QstC+0YA/JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ9Cc0L7QtNGD0Lsg0LfQsCDQv9GA0L7Rg9GH0LLQsNC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICfQnNC+0LTRg9C7INC30LAg0YDQtdC00LDQutGC0LjRgNCw0L3QtSDQvdCwINCy0YrQv9GA0L7RgdC4INC+0YIg0L/RgNC+0YPRh9Cy0LDQvdC10YLQvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQktGB0LjRh9C60Lgg0L/QsNGA0LDQvNC10YLRgNC4INC30LAg0L7QsdC10LrRgtCwINC+0YIg0LjQt9GB0LvQtdC00LLQsNC90LXRgtC+INCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICfQodC70LXQtCDQvdGP0LrQvtC70LrQviDQtNC90Lgg0YHQu9C10LQg0LjQt9C/0YDQsNGJ0LDQvdC1INC90LAg0LXQu9C10LrRgtGA0L7QvdC90L7RgtC+INC/0LjRgdC80L4sINCyINC60L7QtdGC0L4g0L3QtSDRgdC1INC40LfQv9GA0LDRidCw0YIg0L3QvtCy0Lgg0LfQsNGP0LLQutC4INC30LAg0L/RgNC+0YPRh9Cy0LDQvdC1INC90LAg0YHRitGJ0LjRjyDQutC70LjQtdC90YIuINCY0LfQsdC40YDQsNC90LXRgtC+INC90LAgMCDQstC40L3QsNCz0Lgg0YnQtSDQuNC30L/RgNCw0YnQsCDQtdC70LXQutGC0YDQvtC90L3QsNGC0LAg0L/QvtGJ0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ9Cf0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1INC90LAg0LjQvNC10LnQuyDQt9CwINGD0LLQtdC00L7QvNGP0LLQsNC90LUg0L3QsCDQutC70LjQtdC90YLQuNGC0LUg0LfQsCDQvdC+0LLQviDQv9GA0L7Rg9GH0LLQsNC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn0KHRgtCw0L3QtNCw0YDRgtC10L0g0L/QvtC00LDRgtC10Lsg0L3QsCDQuNC80LXQudC70LAg0LfQsCDRg9Cy0LXQtNC+0LzRj9Cy0LDQvdC1INC90LAg0LrQu9C40LXQvdGC0Lgg0LfQsCDQvdC+0LLQviDQv9GA0L7Rg9GH0LLQsNC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ9Ch0YLQsNC90LTQsNGA0YLQvdCwINGC0LXQvNCwINC30LAg0LjQvNC10LnQu9CwINC30LAg0YPQstC10LTQvtC80Y/QstCw0L3QtSDQvdCwINC/0L7RgtGA0LXQsdC40YLQtdC70LjRgtC1INC30LAg0L3QvtCy0L4g0L/RgNC+0YPRh9Cy0LDQvdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0L/RgNC10LPQu9C10LQsINC30LAg0LTQsCDQv9C+0LrQsNC20LUg0LjQt9Cz0LvQtdC0INC90LAg0YHQv9C40YHRitC60LAg0YEg0L/RgNC+0YPRh9Cy0LDQvdC40Y/RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvQvdC40Y8g0LHRgNC+0Lkg0L/RgNC+0YPRh9Cy0LDQvdC40Y8sINC60L7QuNGC0L4g0YHQtSDQuNC30L/RgNCw0YnQsNGCINC90LAg0LrQu9C40LXQvdGC0Lgg0L3QsCDQstGB0LXQutC4IDMwINC00L3QuC4gKDAgLSDQvtC30L3QsNGH0LDQstCwINC90LUg0LzQsNC60YHQuNC80YPQvCwg0LLRgdC40YfQutC4INC30LDRj9Cy0LrQuCDQt9CwINC/0YDQvtGD0YfQstCw0L3QtSDRidC1INCx0YrQtNCw0YIg0LjQt9C/0YDQsNGC0LXQvdC4KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ9Ch0YPQvNCw0YLQsCDQsiDRh9Cw0YHQvtCy0LUsINC30LAg0LrQvtGP0YLQviDQsdC40LvQtdGC0YrRgiDRgtGA0Y/QsdCy0LAg0LTQsCDQsdGK0LTQtSDQt9Cw0YLQstC+0YDQtdC9LCDQt9CwINC00LAg0YHQtSDQt9Cw0LTQtdC50YHRgtCy0LAg0LjQt9C/0YDQsNGJ0LDQvdC10YLQviDQvdCwINC/0YDQvtGD0YfQstCw0L3QtSwgKDAgLSDQvtC30L3QsNGH0LDQstCwINC40LfQv9GA0LDRidCw0L3QtSDQstC10LTQvdCw0LPQsCDRgdC70LXQtCDQt9Cw0YLQstCw0YDRj9C90LUpLiDQl9Cw0LHQtdC70LXQttC60LAgOiDQuNC30L/RgNCw0YnQsNC90LXRgtC+INGB0YrRgSDQt9Cw0LrRitGB0L3QtdC90LjQtSDQvdCwINC40LfRgdC70LXQtNCy0LDQvdC10YLQviDRgdC1INC40LfQstGK0YDRiNCy0LAg0L7RgiBPVFJTIERhZW1vbiwg0L/RgNC10LTQuCDQsNC60YLQuNCy0LjRgNCw0L3QtdGC0L4g0L3QsCDQvdCw0YHRgtGA0L7QudC60LDRgtCwICJEYWVtb24gOjogU2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyIDo6IFRhc2sgIyMjIFN1cnZleVJlcXVlc3RzU2VuZCIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICfQktC40YHQvtGH0LjQvdCw0YLQsCDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSDQt9CwINC40LfQs9C70LXQtNCwINGBINGC0LXQutGB0YIg0LfQsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwIFpvb20gU3VydmV5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9C90LDRgtCwINCy0LjRgdC+0YfQuNC90LAg0LfQsCDQuNC30LPQu9C10LTQsCDRgSDRgtC10LrRgdGCINC30LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCBab29tIFN1cnZleS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ9Ca0L7Qu9C+0L3QuNGC0LUg0LfQsCDQv9C+0LrQsNC30LLQsNC90LUg0LIg0L7QsdGJ0LjRjyDQv9GA0LXQs9C70LXQtCDQvdCwINC40LfRgdC70LXQtNCy0LDQvdC10YLQvi4g0KLQsNC30Lgg0L7Qv9GG0LjRjyDQvdGP0LzQsCDQstC70LjRj9C90LjQtSDQstGK0YDRhdGDINC/0L7Qt9C40YbQuNGP0YLQsCDQvdCwINC60L7Qu9C+0L3QuNGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICfQoNC10LTQsNC60YLQuNGA0LDQvdC1INC90LAg0L7QsdGJ0LDRgtCwINC40L3RhNC+0YDQvNCw0YbQuNGPINC30LAg0L/RgNC+0YPRh9Cy0LDQvdC10YLQvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQsNC50YLQtSDQstGK0L/RgNC+0YHQuNGC0LUg0L3QsCDQuNC30YHQu9C10LTQstCw0L3QtdGC0L4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJ9CQ0LrRgtC40LLQuNGA0LDQvdC1INC40LvQuCDQtNC10LDQutGC0LjQstC40YDQsNC90LUg0L3QsCDQtdC60YDQsNC90LAgItC/0L7QutCw0LfQstCw0L3QtSDQvdCwINC00LDQvdC90LgiINC30LAg0LPQu9Cw0YHRg9Cy0LDQvdC1INCyINC/0YPQsdC70LjRh9C90LjRjyDQuNC90YLQtdGA0YTQtdC50YEsINC30LAg0LTQsCDRgdC1INC/0L7QutCw0LfQstCw0YIg0LTQsNC90L3QuCDQvtGCINC60L7QvdC60YDQtdGC0LXQvSDRgNC10LfRg9C70YLQsNGCINC+0YIg0L/RgNC+0YPRh9Cy0LDQvdC10YLQviwg0LrQvtCz0LDRgtC+INC60LvQuNC10L3RgtGK0YIg0YHQtSDQvtC/0LjRgtCwINC00LAg0L7RgtCz0L7QstC+0YDQuCDQvdCwINC/0YDQvtGD0YfQstCw0L3QtdGC0L4g0LfQsCDQstGC0L7RgNC4INC/0YrRgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICfQkNC60YLQuNCy0LjRgNCw0LnRgtC1INC40LvQuCDQtNC10LDQutGC0LjQstC40YDQsNC50YLQtSDQv9GA0L7QstC10YDQutCw0YLQsCDQvdCwINGB0YrRgdGC0L7Rj9C90LjQtdGC0L4g0L3QsCDQuNC30L/RgNCw0YnQsNC90LUg0LfQsCDRg9GB0LvRg9Cz0LDRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ9CQ0LrRgtC40LLQuNGA0LDQudGC0LUg0LjQu9C4INC00LXQsNC60YLQuNCy0LjRgNCw0LnRgtC1INC/0YDQvtCy0LXRgNC60LDRgtCwINC90LAg0YHRitGB0YLQvtGP0L3QuNC10YLQviDQvdCwINC40LfQv9GA0LDRidCw0L3QtSDQt9CwINGC0LjQv9CwINC90LAg0LHQuNC70LXRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGP0YLQsCDQvdCwIEZyb250ZW5kINC80L7QtNGD0LvQsCDQt9CwINC/0YDQvtGD0YfQstCw0L3QtSDQtNC+0LHQsNCy0Y8g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGPINC90LAg0LzQvtC00YPQuyBGcm9udGVuZCDQt9CwINGA0LXQtNCw0LrRgtC40YDQsNC90LUg0L3QsCDQsNC90LrQtdGC0LDRgtCwINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LDRhtC40Y8g0L3QsCDQvNC+0LTRg9C7IEZyb250ZW5kINC30LAg0YHRgtCw0YLQuNGB0YLQuNGH0LXRgdC60Lgg0LTQsNC90L3QuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LDRhtC40Y8g0L3QsCBGcm9udGVuZCDQvNC+0LTRg9C7INC30LAg0L3QsNCx0LvRjtC00LXQvdC40LUg0YPQstC10LvQuNGH0LXQvdC40LUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGPINC90LAg0LzQvtC00YPQuyBGcm9udGVuZCDQt9CwINC+0LHQtdC60YLQsCDQvdCwINC+0LHRidC10YHRgtCy0LXQvdC+0YLQviDQv9GA0L7Rg9GH0LLQsNC90LUg0LIg0L/Rg9Cx0LvQuNGH0L3QuNGPINGA0LDQudC+0L0g0L3QsCDQv9GA0L7Rg9GH0LLQsNC90LXRgtC+Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAn0JDQutC+INGC0L7Qt9C4INGA0LXQs9C10LrRgSDRgdGK0LLQv9Cw0LTQsCwg0L3Rj9C80LAg0LTQsCDQsdGK0LTQtSDQuNC30L/RgNCw0YLQtdC90L4g0L/RgNC+0YPRh9Cy0LDQvdC1INC90LAg0LrQu9C40LXQvdGC0LjRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0L3QsCDRgdGC0YDQsNC90LjRhtC40YLQtSAo0LIg0LrQvtC40YLQviDRgdCwINC/0L7QutCw0LfQsNC90Lgg0L/RgNC+0YPRh9Cy0LDQvdC40Y/RgtCwKSDQvdCwINC+0LHRidC40Y8g0L/RgNC10LPQu9C10LQg0L3QsCDQuNC30YHQu9C10LTQstCw0L3QtdGC0L4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAn0J/Rg9Cx0LvQuNGH0L3QviDQv9GA0L7Rg9GH0LLQsNC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsNC90LUg0L3QsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+LCDQt9CwINC00LAg0YDQtdC00LDQutGC0LjRgNCwINC/0YDQvtGD0YfQstCw0L3QtSDQsiDQvdC10LPQvtCy0LjRjyDQvNCw0YnQsNCx0LXQvSDQuNC30LPQu9C10LQg0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsNC90LUg0L3QsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+LCDQt9CwINC00LAg0YDQtdC00LDQutGC0LjRgNCwINCy0YrQv9GA0L7RgdC4INC+0YIg0L/RgNC+0YPRh9Cy0LDQvdC10YLQviDQsiDQvdC10LPQvtCy0LjRjyDQuNC30LPQu9C10LQg0LfQsCDRg9Cy0LXQu9C40YfQtdC90LjQtSDQvdCwINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LDQvdC1INC90LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviwg0LfQsCDQtNCwINGB0LUg0LLRitGA0L3QtSDQsiDQuNC30LPQu9C10LTQsCDQt9CwINGD0LLQtdC70LjRh9C10L3QuNC1INC90LAg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LDQvdC1INC90LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviwg0LfQsCDQtNCwINC/0YDQuNCx0LvQuNC20Lgg0L/QvtC00YDQvtCx0L3QvtGB0YLQuNGC0LUg0LIg0YHRgtCw0YLQuNGB0YLQuNGH0LXRgdC60LjRgtC1INC00LDQvdC90Lgg0LfQsCDQv9GA0L7Rg9GH0LLQsNC90LXRgtC+INCyINC10LrRgNCw0L3QsCDQt9CwINGD0LLQtdC70LjRh9C10L3QuNC1INC90LAg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICfQodGC0LDRgtC40YHRgtC40LrQsC/QlNC10YLQsNC50LvQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICfQlNC+0LHQsNCy0Y/QvdC1INC90LAg0LzQvtC00YPQuy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQsNC90LUg0L3QsCDQnNC+0LTRg9C7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ9Cf0YDQtdCz0LvQtdC0INC90LAg0LjQt9GB0LvQtdC00LLQsNC90LXRgtC+INC30LAgItCc0LDQu9GK0LoiINC70LjQvNC40YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICfQnNC+0LTRg9C7ICLQodGC0LDRgtC40YHRgtC40LrQsCDQvdCwINC/0YDQvtGD0YfQstCw0L3QuNGP0YLQsCIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICfQnNC+0LTRg9C7INC30LAg0YPQstC10LvQuNGH0LDQstCw0L3QtSDQvdCwINC90LDQsdC70Y7QtNC10L3QuNC10YLQvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICfQk9GA0LDQvdC40YbQsCDQvdCwINC40LfRgdC70LXQtNCy0LDQvdC10YLQviDQvdCwINGB0YLRgNCw0L3QuNGG0LAg0LfQsCDQv9GA0LXQs9C70LXQtCDQvdCwICLQnNCw0LvQutC4Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICfQn9GA0L7Rg9GH0LLQsNC90LjRj9GC0LAg0L3Rj9C80LAg0LTQsCDQsdGK0LTQsNGCINC40LfQv9GA0LDRgtC10L3QuCDQtNC+INC60L7QvdGE0LjQs9GD0YDQuNGA0LDQvdC40YLQtSDQuNC80LXQudC7INCw0LTRgNC10YHQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ9CY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0YrRgiDQt9CwINC/0YDQvtGD0YfQstCw0L3QtSwg0L3QsNC/0YAuINCf0YDQvtGD0YfQstCw0L3QtSAjLCBNeVN1cnZleSAjLiDQn9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSDQtSAi0J/RgNC+0YPRh9Cy0LDQvdC1ICMiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0Lsg0LfQsCDRgdGK0LHQuNGC0LjQtSDQvdCwINCx0LjQu9C10YLQuCDQt9CwINCw0LLRgtC+0LzQsNGC0LjRh9C90L4g0LjQt9C/0YDQsNGJ0LDQvdC1INC90LAg0LfQsNGP0LLQutC4INC30LAg0LXQu9C10LrRgtGA0L7QvdC90LAg0L/QvtGJ0LAg0LTQviDQutC70LjQtdC90YLQuNGC0LUsINCw0LrQviDQsdC40LvQtdGC0YrRgiDQtSDQt9Cw0YLQstC+0YDQtdC9Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICdUcmlnZ2VyINC40LfQv9GA0LDRidCwINC30LDQutGK0YHQvdC10LvQuCDQt9Cw0Y/QstC60Lgg0LfQsCDQv9GA0L7Rg9GH0LLQsNC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAn0KPQstC10LvQuNGH0LXRgtC1INGB0YLQsNGC0LjRgdGC0LjRh9C10YHQutC40YLQtSDQtNCw0L3QvdC4Lic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRhX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICdTYWdzdHlwZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdEdSBlciBoZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdVbmRlcnPDuGdlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5U3RhdHMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAnS2FuIGlra2Ugc8OmdHRlIG55IHN0YXR1cyEgRGVyIGVyIGlra2UgZGVmaW5lcmV0IG5vZ2VuIHNww7hyZ3Ntw6VsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICdTdGF0dXMgw6ZuZHJldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICdVZ3lsZGlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnYmVzdmFyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnaWtrZSBiZXN2YXJldCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnVGFrIGZvciBkaW4gYmVzdmFyZWxzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnRXQgdW5kZXJzw7hnZWxzZXNtb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHRzIG9sZGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgYW1vdW50IG9mIGRheXMgd2lsbCBiZSBkZWxldGVkLiBOb3RlOiBkZWxldGUgcmVzdWx0cyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ1Rhc2sjIyNTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZVwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRlX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ05ldWUgVW1mcmFnZSBlcnN0ZWxsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnRWlubGVpdHVuZ3N0ZXh0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdVbWZyYWdlIEVpbmxlaXR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdCZW5hY2hyaWNodGlndW5nIFRleHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnVGlja2V0LVR5cGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnSW50ZXJuZSBCZXNjaHJlaWJ1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ0FsbGdlbWVpbmUgQW5nYWJlbiBiZWFyYmVpdGVuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnRnJhZ2VuIGJlYXJiZWl0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAnU2llIHNpbmQgaGllcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnVW1mcmFnZS1GcmFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnRnJhZ2UgaGluenVmw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICdGcmFnZSBlaW5nZWJlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdBbnR3b3J0IGVyZm9yZGVybGljaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ0bDvHIgZGllc2UgVW1mcmFnZSBzaW5kIGtlaW5lIEZyYWdlbiBnZXNwZWljaGVydC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdGcmFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdBbnR3b3J0IGVyZm9yZGVybGljaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnTmFjaCBkZW0gQmVhcmJlaXRlbiBkZXIgVW1mcmFnZSBkaWVzZXMgRmVuc3RlciBlaW5mYWNoIHNjaGxpZXNzZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICdEaWVzZXMgRmVuc3RlciBzY2hsaWXDn2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdGcmFnZSBiZWFyYmVpdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAnWnVyw7xjayB6dSBkZW4gRnJhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJ0ZyYWdlOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ03DtmdsaWNoZSBBbnR3b3J0ZW4gZsO8cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnQW50d29ydCBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ0bDvHIgZGllc2UgRnJhZ2Ugc2luZCBrZWluZSBBbnR3b3J0ZW4gZ2VzcGVpY2hlcnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdEaWVzZSBGcmFnZSBoYXQgbmljaHQgbWVocmVyZSBBbnR3b3J0ZW4sIGVpbiBUZXh0ZWluZ2FiZWZlbGQgd2lyZCBoaW56dWdlZsO8Z3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnQW50d29ydCBiZWFyYmVpdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ1p1csO8Y2sgenVtIEJlYXJiZWl0ZW4gZGVyIEZyYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICdBbnR3b3J0Oic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJ01heGltYWxlIEFuemFobCBhbmdlemVpZ3RlciBVbWZyYWdlbiBwcm8gU2VpdGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ0JlbmFjaHJpY2h0aWd1bmcgQWJzZW5kZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICdCZW5hY2hyaWNodGlndW5nIEJldHJlZmYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ0dlw6RuZGVydCB2b24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnU3RhdGlzdGlrw7xiZXJzaWNodCB2b24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICdBbmZyYWdlbnRhYmVsbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICdTZW5kZXplaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnQWJzdGltbXVuZ3N6ZWl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICdTaWVoZSBEZXRhaWxzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnVW1mcmFnZXN0YXRpc3Rpa2RldGFpbHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ1p1csO8Y2sgenVyIMOcYmVyc2ljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnVW1mcmFnZWluZm9ybWF0aW9uZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ0dlc2VuZGV0ZSBBbmZyYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnRXJoYWx0ZW5lIFVtZnJhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnVW1mcmFnZWRldGFpbHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnVGlja2V0LURpZW5zdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICdHcmFmaWsgVW1mcmFnZWVyZ2Vibmlzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJ0tlaW5lIFN0YXRpc3Rpa2VyZ2Vibmlzc2UuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ1VtZnJhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdCaXR0ZSBiZWFudHdvcnRlbiBTaWUgZGllc2UgRnJhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ1plaWdlIG1laW5lIEFudHdvcnRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnRGllcyBzaW5kIElocmUgQW50d29ydGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ1VtZnJhZ2V0aXRlbCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnTmV1ZSBVbWZyYWdlIGhpbnp1ZsO8Z2VuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJ1NpZSBoYWJlbiBrZWluZSBCZXJlY2h0aWd1bmcgZsO8ciBkaWVzZSBVbWZyYWdlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdVbWZyYWdlIGJlYXJiZWl0ZW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0ZyYWdlbiBkZXIgVW1mcmFnZSBiZWFyYmVpdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ0phL05laW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnT3B0aW9uc3NjaGFsdGVyIChMaXN0ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnS29udHJvbGxrw6RzdGNoZW4gKExpc3RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ0ZyYWdldHlwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnVm9sbHN0w6RuZGlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdVbnZvbGxzdMOkbmRpZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnRnJhZ2UgYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ0FudHdvcnQgYmVhcmJlaXRlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICdTdGF0aXN0aWvDvGJlcnNpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAnU3RhdGlzdGlrZGV0YWlsJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAnU3RhdHVzIGtvbm50ZSBuaWNodCBnZXNldHp0IHdlcmRlbiEgS2VpbmUgRnJhZ2VuIGRlZmluaWVydC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAnU3RhdHVzIGdlw6RuZGVydC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSBLZWluZSBRdWV1ZSBhdXNnZXfDpGhsdCAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJy0gS2VpbiBUaWNrZXR0eXAgYXVzZ2V3w6RobHQgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nfSA9ICctIEtlaW4gVGlja2V0ZGllbnN0IGF1c2dld8OkaGx0IC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctIFN0YXR1cyDDpG5kZXJuIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnTWFzdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICdVbmfDvGx0aWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ05ldWVyIFN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdVbWZyYWdlIEJlc2NocmVpYnVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ2JlYW50d29ydGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ25pY2h0IGJlYW50d29ydGV0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdEYW5rZSBmw7xyIElociBGZWVkYmFjay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICdEaWUgVW1mcmFnZSBpc3QgYmVlbmRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnVW1mcmFnZW5hY2hyaWNodCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJ01vZHVsIG5pY2h0IGFraXZpZXJ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnVW1mcmFnZWZlaGxlciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnVW1mcmFnZXN0aW1tZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdTaWUgaGFiZW4gZGllIFVtZnJhZ2Ugc2Nob24gYmVhbnR3b3J0ZXQuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICdXb2xsZW4gU2llIGRpZXNlIEZyYWdlIHdpcmtsaWNoIGzDtnNjaGVuPyBBbGxlIGRhcmluIGVudGhhbHRlbmVuIERhdGVuIHdlcmRlbiBHRUzDllNDSFQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnV29sbGVuIFNpZSBkaWVzZSBGcmFnZSB3aXJrbGljaCBsw7ZzY2hlbj8nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnRWluIFVtZnJhZ2Vtb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ0VpbiBNb2R1bCwgdW0gVW1mcmFnZW4genUgYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FsbGUgUGFyYW1ldGVyIGbDvHIgZGFzIFVtZnJhZ2Vtb2R1bCBpbiBkZXIgQWdlbnRlbi1PYmVyZmzDpGNoZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnQW56YWhsIGFuIFRhZ2VuIG5hY2ggZGVtIFZlcnNhbmQgZWluZXIgVW1mcmFnZS1FLU1haWwgaW4gZGVuZW4ga2VpbmUgbmV1ZSBVbWZyYWdlLUUtTWFpbCBhbiBkZW4gZ2xlaWNoZW4gS3VuZGVuIHZlcnNlbmRldCB3aXJkLiBXw6RobGVuIHNpZSAwLCB1bSBpbW1lciBVbWZyYWdlLUUtTWFpbHMgenUgdmVyc2VuZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdWb3JlaW5nZXN0ZWxsdGVyIFRleHQgZsO8ciBCZW5hY2hyaWNodGlndW5ncy1FLU1haWxzIGFuIGRlbiBLdW5kZW4gw7xiZXIgbmV1ZSBVbWZyYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdWb3JlaW5nZXN0ZWxsdGVyIEFic2VuZGVyIGbDvHIgQmVuYWNocmljaHRpZ3VuZ3MtRS1NYWlscyBhbiBkZW4gS3VuZGVuIMO8YmVyIG5ldWUgVW1mcmFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1ZvcmVpbmdlc3RlbGx0ZXIgQmV0cmVmZiBmw7xyIEJlbmFjaHJpY2h0aWd1bmdzLUUtTWFpbHMgYW4gZGVuIEt1bmRlbiDDvGJlciBuZXVlIFVtZnJhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICdEZWZpbmllcnQgZWluIMOcYmVyc2ljaHRzbW9kdWwsIGRhc3MgZWluZSBMaXN0ZSBhbGxlciBVbWZyYWdlbiBhbnplaWd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgbWF4aW1hbGUgQW56YWhsIHZvbiBVbWZyYWdlbiBkaWUgZWluIEt1bmRlIGlubmVyaGFsYiB2b24gMzAgVGFnZW4genVnZXNhbmR0IGJla29tbXQuICggMCBzdGVodCBmw7xyIGtlaW4gTWF4aW11bSwgYWxsZSBVbWZyYWdlLUUtTWFpbHMgd2VyZGVuIHZlcnNhbmR0LiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgQW56YWhsIGFuIFN0dW5kZW4gZsO8ciBkaWUgZWluIFRpY2tldCBnZXNjaGxvc3NlbiBzZWluIG11c3MgdW0gZGVuIFZlcnNhbmQgZWluZXIgVW1mcmFnZSBhdXN6dWzDtnNlbiAoIDAgYmVkZXV0ZXQsIHNvZm9ydCBuYWNoIFNjaGxpZcOfZW4gZWluZXMgVGlja2V0cyBzZW5kZW4gKS4gSGlud2VpczogRGFzIGFic2VuZGVuIGRlciB2ZXJ6w7ZnZXJ0ZW4gVW1mcmFnZSB3aXJkIGR1cmNoIGRlbiBPVFJTIERhZW1vbiBlcmxlZGlndCwgdm9yaGVyaWdlIEFrdGl2aWVydW5nIGR1cmNoIGRpZSBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgRWluc3RlbGx1bmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN0YW5kYXJkaMO2aGUgZWluZXMgV1lTSVdZRy1CZXJlaWNocyBmw7xyIGRpZSBVbWZyYWdlZGV0YWlsYW5zaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBhbmdlemVpZ3RlbiBTcGFsdGVuIGRlciBVbWZyYWdlIMOcYmVyc2ljaHQuIERpZXNlIE9wdGlvbiBoYXQga2VpbmUgQXVzd2lya3VuZyBhdWYgZGllIFBvc2l0aW9uIGRlciBTcGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdGcmFnZW4gYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICdBa3RpdmllcmVuIG9kZXIgZGVha3RpdmllcmVuIGRpZSBTaG93Vm90ZURhdGEgQW56ZWlnZW4gaW4gZGVyIMO2ZmZlbnRsaWNoZW4gT2JlcmZsw6RjaGUsIHVtIEFic3RpbW11bmdzZGF0ZW4gYW56dXplaWdlbiwgd2VuIGVpbiBLdW5kZSB2ZXJzdWNodCwgZWluIHp3ZWl0ZXMgbWFsIGFienVzdGltbWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ0FrdGl2aWVyZW4gb2RlciBkZWFrdGl2aWVyZW4gZGVyIFZlcnNhbmRiZWRpbmd1bmdzcHLDvGZ1bmcgZsO8ciBkZW4gRGllbnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ0FrdGl2aWVyZW4gb2RlciBkZWFrdGl2aWVyZW4gZGVyIFZlcnNhbmRiZWRpbmd1bmdzcHLDvGZ1bmcgZsO8ciBkZW4gVGlja2V0dHlwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGcm9udGVuZC1Nb2R1bC1SZWdpc3RyaWVydW5nIGbDvHIgZGFzIEhpbnp1ZsO8Z2VuIGVpbmVyIFVtZnJhZ2UgaW4gZGVyIEFnZW50ZW4tT2JlcmZsw6RjaGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGcm9udGVuZC1Nb2R1bC1SZWdpc3RyaWVydW5nIGbDvHIgZGllIFVtZnJhZ2ViZWFyYmVpdHVuZyBpbiBkZXIgQWdlbnRlbi1PYmVyZmzDpGNoZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGcm9udGVuZC1Nb2R1bC1SZWdpc3RyaWVydW5nIGbDvHIgZGllIFVtZnJhZ2VkZXRhaWxhbnNpY2h0IGluIGRlciBBZ2VudGVuLU9iZXJmbMOkY2hlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRnJvbnRlbmQtTW9kdWwtUmVnaXN0cmllcnVuZyBmw7xyIGRpZSBVbWZyYWdlZGV0YWlsYW5zaWNodCBpbiBkZXIgQWdlbnRlbi1PYmVyZmzDpGNoZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ0Zyb250ZW5kLU1vZHVsLVJlZ2lzdHJpZXJ1bmcgZsO8ciBkaWUgw7ZmZmVudGxpY2hlIFVtZnJhZ2XDvGJlcnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnV2VubiBkaWVzZXIgcmVndWzDpHJlIEF1c2RydWNrIHp1dHJpZmZ0LCB3aXJkIGtlaW5lIFVtZnJhZ2UgYW4gZGVuIEt1bmRlbiBnZXNlbmRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAnTGltaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGVyIGbDvHIgZGllIFNlaXRlbiBkZXIgVW1mcmFnZcO8YmVyc2ljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnw5ZmZmVudGxpY2hlIFVtZnJhZ2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lbiBMaW5rIGltIE1lbsO8IGRlciBab29tLUFuc2ljaHQgZGVyIEFnZW50ZW4tT2JlcmZsw6RjaGUgYW4sIGRlciBlcyBlcm3DtmdsaWNodCBlaW5lIFVtZnJhZ2UgenUgYmVhcmJlaXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lbiBMaW5rIGltIE1lbsO8IGluIFpvb20tQW5zaWNodCBkZXIgQWdlbnRlbi1PYmVyZmzDpGNoZSBhbiwgZGVyIGVzIGVybcO2Z2xpY2h0IGRpZSBGcmFnZW4gZWluZXIgVW1mcmFnZSB6dSBiZWFyYmVpdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZWluZW4gTGluayBpbSBNZW7DvCBpbiBab29tLUFuc2ljaHQgZGVyIEFnZW50ZW4tT2JlcmZsw6RjaGUgYW4sIG1pdCBkZW0genVtIFVtZnJhZ2UtWm9vbSB6dXLDvGNrZ2VnYW5nZW4gd2VyZGVuIGthbm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZWluZW4gTGluayBpbSBNZW7DvCBpbiBab29tLUFuc2ljaHQgZGVyIEFnZW50ZW4tT2JlcmZsw6RjaGUgYW4sIG1pdCBkZW0gZGllIERldGFpbHMgZWluZXIgVW1mcmFnZSBhbmdlemVpZ3Qgd2VyZGVuIGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdTdGF0aXN0aWtkZXRhaWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnVW1mcmFnZSBNb2R1bCBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnVW1mcmFnZSBiZWFyYmVpdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnVW1mcmFnZcO8YmVyc2ljaHQgIktsZWluZXMiIExpbWl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnVW1mcmFnZXN0YXRpc3Rpa21vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnVW1mcmFnZWRldGFpbGFuc2ljaHRtb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICdVbWZyYWdlbiB3ZXJkZW4gbmljaHQgYW4gZGllIGtvbmZpZ3VyaWVydGVuIEUtTWFpbC1BZHJlc3NlbiBnZXNlbmRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ0RpZSBlaW5kZXV0aWdlIEJlemVpY2hudW5nIGbDvHIgZWluZSBVbWZyYWdlLCB6LiBCLiBTdXJ2ZXkjIG9kZXIgTXlTdXJ2ZXkjLiBTdGFuZGFyZCBpc3QgU3VydmV5Iy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICdUaWNrZXQtRXZlbnQtTW9kdWwsIHVtIGF1dG9tYXRpc2NoIFVtZnJhZ2UtRS1NYWlscyBhbiBLdW5kZW4genUgc2VuZGVuLCB3ZW5uIGVpbiBUaWNrZXQgZ2VzY2hsb3NzZW4gd2lyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnQXVzbMO2c2VyIHp1bSBTZW5kZW4gdm9uIHZlcnrDtmdlcnRlbiBBbmZyYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0NyZWFyIG51ZXZhIGVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ0ludHJvZHVjY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ0ludHJvZHVjY2nDs24gZGUgbGEgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdDdWVycG8gZGUgTm90aWZpY2FjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICdUaXBvcyBkZSBUaWNrZXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnRGVzY3JpcGNpw7NuIEludGVybmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJ0NvbmRpY2lvbmVzIGRlbCBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnRWxsaWphIHVuYSBwcm9waWVkYWQgZGVsIGNsaWVudGUgcGFyYSBhZ3JlZ2FyIHVuYSBjb25kaWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJ0NsYXZlIGRlIGVuY3Vlc3RhIHDDumJsaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnRW5jdWVzdGEgZGUgZWplbXBsbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ0VkaXRhciBpbmZvcm1hY2nDs24gR2VuZXJhbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBQcmVndW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAnVXN0ZWQgZXN0w6EgYXF1w60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ1ByZWd1bnRhcyBkZSBsYSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdBZ3JlZ2FyIFByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnRXNjcmliYSBsYSBwcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdSZXNwdWVzdGEgcmVxdWVyaWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnTm8gaGF5IHByZWd1bnRhcyBndWFyZGFkYXMgcGFyYSBlc3RhIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ1ByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ1Jlc3B1ZXN0YSBSZXF1ZXJpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hlbiB5b3UgZmluaXNoIHRvIGVkaXQgdGhlIHN1cnZleSBxdWVzdGlvbnMganVzdCBjbG9zZSB0aGlzIHNjcmVlbi4nfSA9CiAgICAgICAgJ0N1YW5kbyB0ZXJtaW5lIGRlIGVkaXRhciBsYXMgcHJlZ3VudGFzIGRlIGxhIGVuY3Vlc3RhLCBjaWVycmUgZXN0YSB2ZW50YW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9zZSB0aGlzIHdpbmRvdyd9ID0gJ0NlcnJhciDDqXN0YSB2ZW50YW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdFZGl0YXIgUHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICdyZWdyZXNhciBhIHByZWd1bnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICdQcmVndW50YTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICdQb3NpYmxlcyByZXNwdWVzdGFzIHBhcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ0FncmVnYXIgUmVzcHVlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnTm8gaGF5IHJlc3B1ZXN0YXMgYWxtYWNlbmFkYXMgcGFyYSBlc3RhIHByZWd1bnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnRXN0YSBwcmVndW50YSBubyB0aWVuZSB2YXJpYXMgcmVzcHVlc3RhcywgdW4gYXJlYSBkZSB0ZXh0byBzZXLDoSBtb3N0cmFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ0VkaXRhciBSZXNwdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAndm9sdmVyIGEgZWRpdGFyIHByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICdSZXNwdWVzdGE6JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJ09wY2lvbmVzIGRlIHJlc3VtZW4gZGUgZW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnQnVzY2EgZW4gbG9zIGF0cmlidXRvczogTsO6bWVybywgVMOtdHVsbywgSW50cm9kdWNjacOzbiwgRGVzY3JpcGNpw7NuLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgeSBOb3RpZmljYXRpb25Cb2R5LCBhbnVsYW5kbyBvdHJvcyBhdHJpYnV0b3MgY29uIGVsIG1pc21vIG5vbWJyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnRmVjaGEgY3JlYWNpw7NuIGRlIGxhIGVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnU2luIHJlc3RyaWNjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnU29sbyBlbmN1ZXN0YXMgY3JlYWRhcyBlbnRyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICdFbmN1ZXN0YXMgbW9zdHJhZGFzIHBvciBww6FnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdSZW1pdGVudGUgZGUgTm90aWZpY2FjaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnQXN1bnRvIGRlIE5vdGlmaWNhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ01vZGlmaWNhZG8gcG9yJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ1Jlc3VtZW4gZGUgRXN0YWTDrXN0aWNhcyBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ1RhYmxhIGRlIFNvbGljaXR1ZGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICdTZWxlY2Npb25hciB0b2RhcyBsYXMgc29saWNpdHVkZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnVGllbXBvIGRlIEVudsOtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdUaWVtcG8gZGUgVm90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnU2VsZWNjaW9uYXIgZXN0YSBzb2xpY2l0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICdWZXIgRGV0YWxsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAnQm9ycmFyIGVzdGFkw61zdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ0RldGFsbGVzIGRlIEVzdGFkaXN0aWNhcyBkZSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAncmVncmVzYXIgYSByZXPDum1lbiBkZSBlc3RhZGlzdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJ1ZvdG8gYW50ZXJpb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnVm90byBwcsOzeGltbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZGUgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ1NvbGljaXR1ZGVzIGVudmlhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdFbmN1ZXN0YXMgcmVjaWJpZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnRGV0YWxsZXMgZGUgZW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnU2VydmljaW9zIGRlIFRpY2tldHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICdHcsOhZmljYSBkZSBSZXN1bHRhZG9zIGRlIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdObyBoYXkgZ3JhZmljYXMgZGUgcmVzdWx0YWRvcy4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdQb3IgZmF2b3IgY29udGVzdGUgZXN0YXMgcHJlZ3VudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ01vc3RyYXIgbWlzIHJlc3B1ZXN0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0VzdGFzIHNvbiBzdXMgcmVzcHVlc3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdUw610dWxvIGRlIGxhIEVuY3Vlc3RhICc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnQcOxYWRpciBudWV2YSBFbmN1ZXN0YSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICfCoU5vIHRpZW5lIHBlcm1pc28gcGFyYSBlc3RhIGVuY3Vlc3RhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGRhIG5pbmd1bmEgSUQgZGUgbGEgZW5jdWVzdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnRWRpdGFyIEVuY3Vlc3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJ8KhTm8gdGllbmUgcGVybWlzbyBwYXJhIGVzdGEgZW5jdWVzdGEgbyBwcmVndW50YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICfCoU5vIHRpZW5lIHBlcm1pc28gcGFyYSBlc3RhIGVuY3Vlc3RhLCBwcmVndW50YSBvIHJlc3B1ZXN0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnRWRpdGFyIFByZWd1bnRhcyBkZSBsYSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdTaS9Obyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICdPcGNpw7NuIChsaXN0YSkgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ0Nhc2lsbGEgZGUgdmVyaWZpY2FjacOzbiAobGlzdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJ1B1bnR1YWNpw7NuIE5ldCBQcm9tb3Rlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnVGlwbyBkZSBQcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ0NvbXBsZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdJbmNvbXBsZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICdFZGl0YXIgUHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICdFZGl0YXIgUmVzcHVlc3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ1Jlc3VtZW4gZGUgRXN0YWRpc3RpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICfCoU5vIHRpZW5lIHBlcm1pc28gcGFyYSBlc3RhIGVuY3Vlc3RhIG8gZGV0YWxsZSBkZSBlc3RhZMOtc3RpY2FzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICdEZXRhbGxlIGRlIEVzdGFkw61zdGljYXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICfCoU5vIHNlIHB1ZWRlIGVzdGFibGVjZXIgbnVldm8gZXN0YWRvISBObyBoYXkgcHJlZ3VudGFzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICfCoU5vIHNlIHB1ZWRlIGVzdGFibGVjZXIgdW4gbnVldm8gZXN0YWRvISBQcmVndW50YXMgaW5jb21wbGV0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ0VzdGFkbyBjYW1iaWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSBObyBzZSBoYSBzZWxlY2Npb25hZG8gbmluZ3VuYSBjb2xhIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJ30gPSAnLSBObyBzZSBoYSBzZWxlY2Npb25hZG8gbmluZ8O6biB0aXBvIGRlIHRpY2tldCAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHNlcnZpY2Ugc2VsZWN0ZWQgLSd9ID0gJy0gTm8gc2Ugc2VsZWNjaW9uw7MgZWwgc2VydmljaW8gZGUgdGlja2V0LSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gQ2FtYmlhciBFc3RhZG8gLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICdNYWVzdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICdObyB2w6FsaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICdOdWV2byBFc3RhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnRGVzY3JpcGNpw7NuIGRlIGxhIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAncmVzcG9uZGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICdubyByZXNwb25kaWRvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdHcmFjaWFzIHBvciB0dXMgY29tZW50YXJpb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnTGEgZW5jdWVzdGEgaGEgdGVybWluYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICfCoU1lbnNhamUgZGUgRW5jdWVzdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICdNw7NkdWxvIG5vIGhhYmlsaXRhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnRXN0YSBmdW5jacOzbiBubyBlc3TDoSBoYWJpbGl0YWRhLCBww7NuZ2FzZSBlbiBjb250YWN0byBjb24gc3UgYWRtaW5pc3RyYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJ8KhRXJyb3IgZW4gbGEgZW5jdWVzdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICdDbGF2ZSBkZSBlbmN1ZXN0YSBubyB2w6FsaWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnTGEgY2xhdmUgZGUgZW5jdWVzdGEgaW5zZXJ0YWRhIG5vIGVzIHZhbGlkYSwgc2kgc2lndWnDsyB1biB2w61uY3VsbyB0YWwgdmV6IGVzdGUgb2Jzb2xldG8gbyByb3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJ1ZvdG8gZGUgbGEgZW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJ0RhdG9zIGRlIHZvdGFjacOzbiBkZSBsYSBlbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnVXN0ZWQgeWEgaGEgY29udGVzdGFkbyBlc3RhIGVuY3Vlc3RhLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnTGlzdGEgZGUgZW5jdWVzdGFzJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0YSBwcmVndW50YT8gVE9ET1MgbG9zIGRhdG9zIGFzb2NpYWRvcyBzZSBQRVJERVLDgU4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0YSByZXNwdWVzdGE/JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ1VuIE3Ds2R1bG8gZGUgRW5jdWVzdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnVW4gbcOzZHVsbyBwYXJhIGVkaXRhciBsYXMgcHJlZ3VudGFzIGRlIHVuYSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUb2RvcyBsb3MgcGFyYW1ldHJvcyBwYXJhIGVsIG9iamV0byBFbmN1ZXN0YSBlbiBsYSBpbnRlcmZhc2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdDYW50aWRhZCBkZSBkw61hcyBkZXNwdcOpcyBkZSBoYWJlciBtYW5kYW5kbyB1biBjb3JyZW8gZWxlY3Ryw7NuaWNvIGRlIGVuY3Vlc3RhIGVuIGxvcyBxdWUgbm8gc2UgbWFuZGFyw6FuIG51ZXZhcyBlbmN1ZXN0YXMgaGFjaWEgZWwgbWlzbW8gY2xpZW50ZS4gU2VsZWNjaW9uYXIgMCBtYW5kYXLDoSBudWV2b3MgY29ycmVvcyBlbGVjdHLDs25pY29zIGRlIGVuY3Vlc3RhIHNpZW1wcmUuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdDdWVycG8gZGVmYXVsdCBwYXJhIGVsIGVtYWlsIGRlIG5vdGlmaWNhY2nDs24gYSBsb3MgY2xpZW50ZXMgc29icmUgbGEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnUmVtaXRlbnRlIGRlZmF1bHQgcGFyYSBlbCBlbWFpbCBkZSBub3RpZmljYWNpw7NuIGEgbG9zIGNsaWVudGVzIHNvYnJlIGxhIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdBc3VudG8gZGVmYXVsdCBwYXJhIGVsIGVtYWlsIGRlIG5vdGlmaWNhY2nDs24gYSBsb3MgY2xpZW50ZXMgc29icmUgbGEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bmEgbcOzZHVsbyByZXN1bWVuIHBhcmEgbW9zdHJhciBsYSB2aXN0YSBwZXF1ZcOxYSBkZSBsYSBsaXN0YSBkZSBlbmN1ZXN0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgZ3J1cG9zIHF1ZSB0aWVuZW4gcGVybWlzbyBwYXJhIGNhbWJpYXIgZWwgZXN0YWRvIGRlIGxhIGVuY3Vlc3RhLiBMYSBtYXRyaXogZXN0w6EgdmFjw61hIHBvciBkZWZlY3RvIHkgbG9zIGFnZW50ZXMgZGUgdG9kb3MgbG9zIGdydXBvcyBwdWVkZW4gY2FtYmlhciBlbCBlc3RhZG8gZGUgbGEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnRGVmaW5lIHNpIGxhcyBzb2xpY2l0dWRlcyBkZSBlbmN1ZXN0YSBzb2xvIHNlIGVudmlhcsOhbiBhIGNsaWVudGVzIHJlYWxlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYSBjYW50aWRhZCBtw6F4aW1hIGRlIGVuY3Vlc3RhcyBxdWUgc2UgbWFuZGFyw6FuIGEgdW4gY2xpZW50ZSBjYWRhIDMwIGTDrWFzLiAoIDAgc2lnbmlmaWNhIHF1ZSBubyBoYXkgdW4gbcOheGltbywgdG9kYXMgbGFzIGVuY3Vlc3RhcyBzZXLDoW4gZW52aWFkYXMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnRGVmaW5lIGxhIGNhbnRpZGFkIGVuIGhvcmFzIGVuIHF1ZSBzZSBkZWJlIGNlcnJhciB1biB0aWNrZXQgcGFyYSBhY3RpdmFyIGVsIGVudsOtbyBkZSB1bmEgZW5jdWVzdGEsICgwIHNpZ25pZmljYSBlbnZpYXIgaW5tZWRpYXRhbWVudGUgZGVzcHXDqXMgZGVsIGNpZXJyZSkuIE5vdGE6IGVsIGVudsOtbyB0YXJkw61vIGRlIGxhIGVuY3Vlc3RhIGVzIHJlYWxpemFkbyBwb3IgRGFlbW9uIE9UUlMsIHByZXZpYSBhY3RpdmFjacOzbiBkZSBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBwYXJhIGxhIGxpc3RhIGRlc3BsZWdhYmxlIHBhcmEgY3JlYXIgY29uZGljaW9uZXMgIGRlIGVudsOtbyAoMCA9PiBpbmFjdGl2bywgMSA9PiBhY3Rpdm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICdEZWZpbmUgbGEgYWx0dXJhIHByZWRlZmluaWRhIHBhcmEgbGEgdmlzdGEgZGUgdGV4dG8gZW5yaXF1ZWNpZG8gcGFyYSBsb3MgZWxlbWVudG9zIGRlIGxhIHBhbnRhbGwgZGUgZGV0YWxsZSBkZSBlc3RhZGlzdGljYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJ0RlZmluZSBsb3MgZ3J1cG9zIChydykgcXVlIHB1ZWRlbiBlbGltaW5hciBsYXMgZXN0YWTDrXN0aWNhcyBkZSBsYSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5lIGxhIGFsdHVyYSBtw6F4aW1hIHBhcmEgbGFzIHZpc3RhcyBkZSB0ZXh0byBlbnJpcXVlY2lkbyBwYXJhIGxvcyBlbGVtZW50b3MgZGUgem9vbSBkZSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gZWwgcmVzdW1lbiBkZSBlbmN1ZXN0YXMuIEVzdGEgb3BjacOzbiBubyB0aWVuZW4gbmluZ8O6biBlZmVjdG8gZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJ0RldGVybWluYSBzaSBlbCBtw7NkdWxvIGRlIGVzdGFkw61zdGljYXMgcHVlZGUgZ2VuZXJhciBsaXN0YXMgZGUgZW5jdWVzdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJ0VkaXRhciBpbmZvcm1hY2nDs24gZ2VuZXJhbCBkZSBsYSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ0VkaXRhciBwcmVndW50YXMgZGUgbGEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJ0FjdGl2YSBvIGRlc2FjdGl2YSBsYSBwYW50YWxsYSBkZSAiTW9zdHJhciBEYXRvcyBkZSBWb3RvcyIgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhIHBhcmEgbW9zdHJhciBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgZW5jdWVzdGEgZXNwZWPDrWZpY2EgY3VhbmRvIHVuIGNsaWVudGUgcXVpZXJlIHJlc3BvbmRlciB1bmEgZW5jdWVzdGEgcG9yIHNlZ3VuZGEgdmV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ0FjdGl2YSBvIGRlc2FjdGl2YSBsYSBjb21wcm9iYWNpw7NuIGRlIGxhIGNvbmRpY2nDs24gZGUgZW52w61vIHBhcmEgZWwgc2VydmljaW8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnQWN0aXZhIG8gZGVzYWN0aXZhIGxhIGNvbXByb2JhY2nDs24gZGUgbGEgY29uZGljacOzbiBkZSBlbnbDrW8gcGFyYSBlbCB0aXBvIGRlIHRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGUgbcOzZHVsbyBmcm9udGVuZCBTdXJ2ZXlBZGQgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RybyBkZSBtw7NkdWxvIGZyb250ZW5kIFN1cnZleUVkaXQgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGUgbcOzZHVsbyBmcm9udGVuZCBTdXJ2ZXlTdGF0cyBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZnJvbnRlbmQgU3VydmV5Wm9vbSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZnJvbnRlbmQgUHVibGljU3VydmV5IGVuIGxhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ1NpIGVzdGEgZXhwcmVzacOzbiByZWd1bGFyIGNvbmN1ZXJkYSwgbm8gc2UgZW52aWFyw6EgbmluZ3VuYSBlbmN1ZXN0YSBhbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICdMw61taXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyb3MgcGFyYSBsYXMgcMOhZ2luYXMgKGVuIHF1ZSBsYXMgZW5jdWVzdGFzIHNvbiBtb3N0cmFkYXMpIGRlIGxhIHZpc3RhIGRlIHJlc3VtZW4gcGVxdWXDsWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnRW5jdWVzdGEgUMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ0xvcyByZXN1bHRhZG9zIGFudGVyaW9yZXMgYSBsYSBjYW50aWRhZCBjb25maWd1cmFkYSBkZSBkw61hcyBzZXLDoW4gZWxpbWluYWRvcy4gTm90YTogZWxpbWluZSBsb3MgcmVzdWx0YWRvcyByZWFsaXphZG9zIHBvciBEYWVtb24gT1RSUywgYW50ZXMgZGUgbGEgYWN0aXZhY2nDs24gZGUgbGEgY29uZmlndXJhY2nDs24gXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biB2w61uY3VsbyBlbiBlbCBtZW7DuiBkZSBlZGljacOzbiBkZSB1bmEgZW5jdWVzdGEgZW4gc3UgdmlzdGEgZGUgZGV0YWxsZSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIHbDrW5jdWxvIGVuIGVsIG1lbsO6IGRlIGVkaWNpw7NuIHByZWd1bnRhcyBkZSB1bmEgZW5jdWVzdGEgZW4gc3UgdmlzdGEgZGUgZGV0YWxsZSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gdsOtbmN1bG8gZW4gZWwgbWVuw7ogcGFyYSBpciBoYWNpYSBhdHLDoXMgZW4gdmlzdGEgZGUgZGV0YWxsZSBkZSB1bmEgZW5jdWVzdGEgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biB2w61uY3VsbyBlbiBlbCBtZW7DuiBwYXJhIGlyIGRldGFsbGUgZGUgbGFzIGVzdGFkw61zdGljYXMgZGUgdW5hIGVuY3Vlc3RhIGVuIHN1IHZpc3RhIGRlIGRldGFsbGUgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdEZXRhbGxlcyBkZSBFc3RhZMOtc3RpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ0FncmVnYXIgbcOzZHVsbyBkZSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ03Ds2R1bG8gZGUgRWRpY2nDs24gZGUgRW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXRlIGRlIGxhIHZpc3RhIGRlIHJlc3VtZW4gcGVxdWXDsWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnTcOzZHVsbyBkZSBTdGFkw61zdGljYXMgZGUgRW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICdNb2R1bG8gZGUgRGV0YWxsZSBkZSBFbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICdMw61taXRlIGRlIGVuY3Vlc3RhcyBwb3IgcMOhZ2luYSBwYXJhIGxhIHZpc3RhIGdlbmVyYWwgZGUgZW5jdWVzdGEgwqtwZXF1ZcOxYcK7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ0xhcyBlbmN1ZXN0YXMgbm8gZGUgbWFuZGFyw6FuIGEgbGFzIGRpcmVjY2lvbmVzIGRlIGNvcnJlbyBlbGVjdHLDs25pY28gYXF1w60gY29uZmlndXJhZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnRWwgaWRlbnRpZmljYWRvciBwYXJhIHVuYSBlbmN1ZXN0YSwgZWplbXBsbyBTdXJ2ZXkjLCBNeVN1cnZleSMuIFBvciBkZWZlY3RvIGVzIFN1cnZleSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG8gZGUgdGlja2V0IHF1ZSBtYW5kYSBjb3JyZW9zIGVsZWN0csOzbmljb3MgZGUgZW5jdWVzdGFzIGhhY2lhIGxvcyBjbGllbnRlcyBzaSB1biB0aWNrZXQgZXMgY2VycmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJ0Rlc2VuY2FkZW5hciByZXN1bHRhZG9zIGRlIGVsaW1pbmFjacOzbiAoaW5jbHVpZG9zIGRhdG9zIHkgc29saWNpdHVkZXMgZGUgdm90bykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICdEZXNlbmNhZGVuYXIgZWwgZW52w61vIGRlIHNvbGljaXR1ZGVzIGRlIGVuY3Vlc3RhIGNvbiByZXRyYXNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJ0lyIGEgbG9zIGRldGFsbGVzIGRlIGxhIEVzdGFkw61zdGljYS4nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX01YX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0NyZWFyIE51ZXZhIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ0ludHJvZHVjY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ0ludHJvZHVjY2nDs24gZGUgbGEgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdDdWVycG8gZGUgTm90aWZpY2FjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICdUaXBvcyBkZSBUaWNrZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmlwY2nDs24gSW50ZXJuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnQ29uZGljaW9uZXMgZGVsIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICdQb3IgZmF2b3IgZWxpamEgdW5hIHByb3BpZWRhZCBkZWwgQ2xpZW50ZSBwYXJhIGHDsWFkaXIgbGEgY29uZGljacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICdMbGF2ZSBww7piaWNhIGRlIGxhIGVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnRWplbXBsbyBkZSBlbmN1ZXN0YSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ0VkaXRhciBpbmZvcm1hY2nDs24gR2VuZXJhbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBQcmVndW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAnVXN0ZWQgZXN0w6EgYXF1w60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ1ByZWd1bnRhcyBkZSBFc3RhZGlzdGljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdBZ3JlZ2FyIFByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnRXNjcmliYSBsYSBwcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdSZXNwdWVzdGEgcmVxdWVyaWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnTm8gaGF5IHByZWd1bnRhcyBhbG1hY2VuYWRhcyBwYXJhIGVzdGEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnUHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAnUmVzcHVlc3RhIFJlcXVlcmlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnQ3VhbmRvIGhheWEgdGVybWluYWRvIGRlIGVkaXRhciBzdSBlbmN1ZXN0YSBzb2xvIGNpZXJyZSBlc3RhIHBhbnRhbGxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9zZSB0aGlzIHdpbmRvdyd9ID0gJ0NlcnJhciBlc3RhIHZlbnRhbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ0VkaXRhciBQcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ3JlZ3Jlc2FyIGEgcHJlZ3VudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJ1ByZWd1bnRhOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ1Bvc2libGVzIHJlc3B1ZXN0YXMgcGFyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnQWdyZWdhciBSZXNwdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdObyBoYXkgcmVzcHVlc3RhcyBhbG1hY2VuYWRhcyBwYXJhIGVzdGEgcHJlZ3VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdFc3RhIHByZWd1bnRhIG5vIHRpZW5lIHZhcmlhcyByZXNwdWVzdGFzLCB1biBhcmVhIGRlIHRleHRvIHNlcsOhIG1vc3RyYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnRWRpdGFyIFJlc3B1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICd2b2x2ZXIgYSBlZGl0YXIgcHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ1Jlc3B1ZXN0YTonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnT3BjaW9uZXMgZGUgbGEgdmlzdGEgZ2VuZXJhbCBkZSBsYXMgZW5jdWVuc3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICdCdXNjYSBlbiBsb3MgYXRyaWJ1dG9zIE7Dum1lcm8sIFTDrXR1bG8sIEludHJvZHVjY2nDs24sIERlc2NyaXBjacOzbiwgUmVtaXRlbnRlIGRlIE5vdGlmaWNhdGlvbiwgQXN1bnRvIGRlIGxhIE5vdGlmaWNhY2nDs24sIHkgQ3VlcnBvIGRlIGxhIG5vdGlmaWNhY2nDs24sIHNvYnJlIGVzY3JpYmllbmRvIG90cm9zIGF0cmlidXRvcyBjb24gZWwgbWlzbW8gbm9tYnJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICdGZWNoYSBkZSBDcmVhY2nDs24gZGVsIGxhIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnU2luIHJlc3RyaWNjaW9uZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ1NvbG8gZW5jdWVzdGFzIGNyZWFkYXMgZW50cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnTsO6bS4gTcOheGltbyBkZSBlbmN1ZXN0YXMgcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ1JlbWl0ZW50ZSBkZSBOb3RpZmljYWNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICdBc3VudG8gZGUgTm90aWZpY2FjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAnTW9kaWZpY2FjbyBwb3InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnUmVzdW1lbiBkZSBFc3RhZMOtc3RpY2FzIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnVGFibGEgZGUgU29saWNpdHVkZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJ1NlbGVjY2lvbmFyIHRvZGFzIGxhcyBwZXRpY2lvbmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ1RpZW1wbyBkZSBFbnbDrW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnVGllbXBvIGRlIFZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJ1NlbGVjY2lvbmFyIGVzdGEgcGV0aWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnVmVyIERldGFsbGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJ0VsaW1pbmFyIGVzdGFkw61zdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ0RldGFsbGVzIGRlIEVzdGFkaXN0aWNhcyBkZSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAncmVncmVzYXIgYSByZXPDum1lbiBkZSBlc3RhZGlzdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJ1ZvdG8gcHJldmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJ1NpZ3VpZW50ZSB2b3RvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBkZSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnU29saWNpdHVkZXMgZW52aWFkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ1NvbGljaXR1ZGVzIHJlY2liaWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0RldGFsbGVzIGRlIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ1NlcnZpY2lvcyBkZSBUaWNrZXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnR3JhZmljYSBkZSBSZXN1bHRhZG9zIGRlIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdObyBoYXkgZ3JhZmljYXMgZGUgcmVzdWx0YWRvcy4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdQb3IgZmF2b3IgY29udGVzdGUgZXN0YXMgcHJlZ3VudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ01vc3RyYXIgbWlzIHJlc3B1ZXN0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0VzdGFzIHNvbiBzdXMgcmVzcHVlc3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdUw610dWxvIGRlIGxhIEVuY3Vlc3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICdBw7FhZGlyIE51ZXZhIEVuY3Vlc3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJ1VzdGVkIG5vdCB0aWVuZSBwZXJtaXNvcyBlbiBlc3RhIGVuY3Vlc3RhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICdObyBzZSBoYSBkYWRvIGVsIFN1cnZleUlEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnRWRpdGFyIEVuY3Vlc3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJ1VzdGVkIG5vIHRpZW5lIHBlcm1pc29zIGVuIGVzdGEgZW5jdWVzdGEgbyBwcmVndW50YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICdVc3RlZCBubyB0aWVuZSBwZXJtaXNvcyBlbiBlc3RhIGVuY3Vlc3RhLCBwcmVndW50YSBvIHJlc3B1ZXN0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnRWRpdGFyIFByZWd1bnRhcyBkZSBFc3RhZMOtc3RpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnU2kvTm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnT3BjacOzbiAobGlzdGEpICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICdDYXNpbGxhIGRlIHZlcmlmaWNhY2nDs24gKGxpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICdQdW50YWplIFByb21vdG9yIE5ldG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ1RpcG8gZGUgUHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdDb21wbGV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnSW5jb21wbGV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnRWRpdGFyIFByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnRWRpdGFyIFJlc3B1ZXN0YSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICdSZXN1bWVuIGRlIEVzdGFkaXN0aWNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJ30gPSAnVXN0ZWQgbm8gdGllbmUgcGVybWlzb3MgZW4gZXN0YSBlbmN1ZXN0YSBvIGRldGFsbGUgZXN0YWTDrXN0aWNvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICdEZXRhbGxlIGRlIEVzdGFkw61zdGljYXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICdObyBzZSBwdWVkZSBlc3RhYmxlY2VyIG51ZXZvIGVzdGFkbyEgTm8gaGF5IHByZWd1bnRhcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnTm8gcHVlZGUgY2FtYmlhcnNlIGVsIGVzdGFkbyEgUHJlZ3VudGFzIEluY29tcGxldGFzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICdFc3RhZG8gY2FtYmlhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0gTm8gc2UgaGEgc2VsZWNjaW9uYWRvIG5pbmd1bmEgY29sYSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJy0gVGlwbyBkZSB0aWNrZXQgbm8gc2VsZWNjaW9uYWRvIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnLSBTZXJ2aWNpbyBkZSB0aWNrZXQgbm8gc2VsZWNjaW9uYWRvIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctIENhbWJpYXIgRXN0YWRvIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnTWFlc3Rybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAnSW52YWxpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ051ZXZvIEVzdGFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmlwY2nDs24gZGUgbGEgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdyZXNwb25kaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ25vIHJlc3BvbmRpZG8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ0dyYWNpYXMgcG9yIHN1IHJldHJvYWxpbWVudGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0xhIGVuY3Vlc3RhIGhhIHRlcm1pbmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnTWVuc2FqZSBkZSBsYSBFbmN1ZXN0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJ03Ds2R1bG8gbm8gaGFiaWxpdGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICdFc3RhIGZ1bmNpb25hbGlkYWQgbm8gZXN0YSBoYWJpbGl0YWRhLCBwb3IgZmF2b3IgY29udGFjdGUgYWwgYWRtaW5pc3RyYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnRXJyb3IgZW4gbGEgRW5jdWVzdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICdMbGF2ZSBkZSBlbmN1ZXN0YSBpbnbDoWxpZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICdMYSBsbGF2ZSBpbnNlcnRhZGEgZGUgbGEgZW5jdWVzdGEgZXMgaW52w6FsaWRhLCAgc2kgaGEgc2VndWlkbyB1bmEgbGlnYSwgcXVpesOhIGVzdGUgb2Jzb2xldGEgbyByb3RhLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICdWb3RhY2nDs24gZGUgbGEgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJ0RhdG9zIGRlIFZvdGFjacOzbiBkZSBsYSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnVXN0ZWQgeWEgaGEgY29udGVzdGFkbyBlc3RhIGVuY3Vlc3RhLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnTGlzdGEgZGUgRW5jdWVzdGFzJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0YSBwcmVndW50YT8gVE9ET1MgbG9zIGRhdG9zIGFzb2NpYWRvcyBkZSBQRVJERVLDgU4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0YSByZXNwdWVzdGE/JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ1VuIE3Ds2R1bG8gZGUgRW5jdWVzdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnVW4gbcOzZHVsbyBwYXJhIGVkaXRhciBsYXMgcHJlZ3VudGFzIGRlIHVuYSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUb2RvcyBsb3MgcGFyYW1ldHJvcyBwYXJhIGVsIG9iamV0byBFbmN1ZXN0YSBlbiBsYSBpbnRlcmZhc2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdDYW50aWRhZCBkZSBkw61hcyBkZXNwdcOpcyBkZSBoYWJlciBtYW5kYW5kbyB1biBjb3JyZW8gZWxlY3Ryw7NuaWNvIGRlIGVuY3Vlc3RhIGVuIGxvcyBxdWUgbm8gc2UgbWFuZGFyw6FuIG51ZXZhcyBlbmN1ZXN0YXMgaGFjaWEgZWwgbWlzbW8gY2xpZW50ZS4gU2VsZWNjaW9uYXIgMCBtYW5kYXLDoSBudWV2b3MgY29ycmVvcyBlbGVjdHLDs25pY29zIGRlIGVuY3Vlc3RhIHNpZW1wcmUuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdDdWVycG8gZGVmYXVsdCBwYXJhIGVsIGVtYWlsIGRlIG5vdGlmaWNhY2nDs24gYSBsb3MgY2xpZW50ZXMgc29icmUgbGEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnUmVtaXRlbnRlIGRlZmF1bHQgcGFyYSBlbCBlbWFpbCBkZSBub3RpZmljYWNpw7NuIGEgbG9zIGNsaWVudGVzIHNvYnJlIGxhIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdBc3VudG8gZGVmYXVsdCBwYXJhIGVsIGVtYWlsIGRlIG5vdGlmaWNhY2nDs24gYSBsb3MgY2xpZW50ZXMgc29icmUgbGEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bmEgbcOzZHVsbyByZXN1bWVuIHBhcmEgbW9zdHJhciBsYSB2aXN0YSBwZXF1ZcOxYSBkZSBsYSBsaXN0YSBkZSBlbmN1ZXN0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgZ3J1cG9zIHF1ZSB0aWVuZW4gcGVybWlzb3MgcGFyYSBjYW1iaWFyIGVsIGVzdGFkbyBkZSBsYXMgZW5jdWVzdGFzLiBMYSBsaXN0YSBlc3RhIHZhY8OtYSBwb3Igb21pc2nDs24geSBsb3MgYWdlbnRlcyBkZSB0b2RvcyBsb3MgZ3J1cG9zIHB1ZWRlbiBjYW1iaWFyIGVsIGVzdGFkbyBkZSBsYXMgZW5jdWVzdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJ0RlZmluZSBzaSBsYXMgcGV0aWNpb25lcyBkZSBlbmN1ZXN0YXMgc2Vyw6FuIG1hbmRhZGFzIHNvbG8gYSBsb3MgY2xpZW50ZXMgcmVhbGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnRGVmaW5lIGxhIGNhbnRpZGFkIG3DoXhpbWEgZGUgZW5jdWVzdGFzIHF1ZSBzZSBtYW5kYXLDoW4gYSB1biBjbGllbnRlIGNhZGEgMzAgZMOtYXMuICggMCBzaWduaWZpY2EgcXVlIG5vIGhheSB1biBtw6F4aW1vLCB0b2RhcyBsYXMgZW5jdWVzdGFzIHNlcsOhbiBlbnZpYWRhcykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICdEZWZpbmUgbGEgY2FudGlkYWQgZGUgaG9yYXMgcXVlIHRpZW5lIHF1ZSB0ZW5lciBjZXJyYXIgdW4gdGlja2V0IHBhcmEgZGlzcGFyYXIgZWwgZW52w61vIGRlIHVuYSBlbmN1ZXN0YSwgKDAgc2lnbmlmaWNhIG1hbmRhciBpbm1lZGlhdGFtZW50ZSBhbCBjZXJyYXIpLiBOb3RhOiBlbCBlbnbDrW8gcmV0YXJkYWRvIGVzIHJlYWxpemFkbyBwb3IgZWwgIk9UUlMgRGFlbW9uIiB1bmEgdmV6IGFjdGl2YWRvIGVsIGFqdXN0ZSBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgZGUgbGEgbGlzdGEgZGVzcGxlZ2FibGUgcGFyYSBjb25zdHJ1aXIgbGFzIGNvbmRpY2lvbmVzIGRlIGVudsOtbyAoIDAgPT4gaW5hY3Rpdm8sIDEgPT4gYWN0aXZvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5lIGxhIGFsdHVyYSBwcmVkZWZpbmlkYSBwYXJhIGxhIHZpc3RhIGRlIHRleHRvIGVucmlxdWVjaWRvIHBhcmEgbG9zIGVsZW1lbnRvcyBkZSBsYSBwYW50YWxsIGRlIGRldGFsbGUgZGUgZXN0YWRpc3RpY2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICdEZWZpbmUgbG9zIGdydXBvcyAocncpIHF1ZSBwb2Ryw6FuIGVsaW1pbmFyIGxhcyBlc3RhZMOtc3RpY2FzIGRlIGxhcyBlbmN1ZXN0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ0RlZmluZSBsYSBhbHR1cmEgbcOheGltYSBwYXJhIGxhIHZpc3RhIGRlIHRleHRvIGVucmlxdWVjaWRvIHBhcmEgbG9zIGVsZW1lbnRvcyBkZSBsYSBwYW50YWxsYSBkZSBkZXRhbGxlIGRlIGVzdGFkaXN0aWNhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gZWwgcmVzdW1lbiBkZSBlbmN1ZXN0YXMuIEVzdGEgb3BjacOzbiBubyB0aWVuZW4gbmluZ8O6biBlZmVjdG8gZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJ0RldGVybWluYSBzaSBlbCBtw7NkdWxvIGRlIGVzdGFkw61zdGljYXMgcHVlZGEgZ2VuZXJhciBsaXN0YXMgZGUgZW5jdWVzdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJ0VkaXRhciBsYSBpbmZvcm1hY2nDs24gZ2VuZXJhbCBkZSBsYSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ0VkaXRhciBsYXMgcHJlZ3VudGFzIGRlIGxhIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICdBY3RpdmEgbyBkZXNhY3RpdmEgbGEgcGFudGFsbGEgZGUgIk1vc3RyYXIgRGF0b3MgZGUgVm90b3MiIGVuIGxhIGludGVyZmFjZSBww7pibGljYSBwYXJhIG1vc3RyYXIgbG9zIHJlc3VsdGFkb3MgZGUgdW5hIGVuY3Vlc3RhIGVzcGVjw61maWNhIGN1YW5kbyB1biBjbGllbnRlIHF1aWVyZSByZXNwb25kZXIgdW5hIGVuY3Vlc3RhIHBvciBzZWd1bmRhIHZlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICdBY3RpdmEgbyBkZXNhY3RpdmEgbGEgY29tcHJvYmFjacOzbiBkZSBsYSBjb25kaWNpw7NuIGRlIGVudsOtbyBwYXJhIGVsIHNlcnZpY2lvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ0FjdGl2YSBvIGRlc2FjdGl2YSBsYSBjb21wcm9iYWNpw7NuIGRlIGxhIGNvbmRpY2nDs24gZGUgZW52w61vIHBhcmEgZWwgdGlwbyBkZSB0aWNrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZnJvbnRlbmQgU3VydmV5QWRkIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGUgbcOzZHVsbyBmcm9udGVuZCBTdXJ2ZXlFZGl0IGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZnJvbnRlbmQgU3VydmV5U3RhdHMgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RybyBkZSBtw7NkdWxvIGZyb250ZW5kIFN1cnZleVpvb20gZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICdSZWdpc3RybyBkZSBtw7NkdWxvIGZyb250ZW5kIFB1YmxpY1N1cnZleSBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdTaSBlc3RhIGV4cHJlc2nDs24gcmVndWxhciBjb25jdWVyZGEsIGxhIGVuY3Vlc3RhIG5vIHNlcsOhIGVudmlhZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0Lid9ID0gJ0zDrW1pdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0cm9zIHBhcmEgbGFzIHDDoWdpbmFzIChlbiBxdWUgbGFzIGVuY3Vlc3RhcyBzb24gbW9zdHJhZGFzKSBkZSBsYSB2aXN0YSBkZSByZXN1bWVuIHBlcXVlw7FhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ0VuY3Vlc3RhIFDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHRzIG9sZGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgYW1vdW50IG9mIGRheXMgd2lsbCBiZSBkZWxldGVkLiBOb3RlOiBkZWxldGUgcmVzdWx0cyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ1Rhc2sjIyNTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZVwnIHNldHRpbmcuJ30gPQogICAgICAgICdMb3MgcmVzdWx0YWRvcyBtw6FzIGFudGlndW9zIHF1ZSBsYSBjYW50aWRhZCBkZSBkw61hcyBjb25maWd1cmFkb3MsIHNlcsOhbiBlbGltaW5hZG9zLiBOb3RhOiBlbGltaW5hciBsb3MgcmVzdWx0YWRvcyBlcyByZWFsaXphZG8gcG9yIGVsICJPVFJTIERhZW1vbiIgcHJldmlhIGFjdGl2YWNpw7NuIGRlbCBhanVzdGUgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biB2w61uY3VsbyBlbiBlbCBtZW7DuiBkZSBlZGljacOzbiBkZSB1bmEgZW5jdWVzdGEgZW4gc3UgdmlzdGEgZGUgZGV0YWxsZSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIHbDrW5jdWxvIGVuIGVsIG1lbsO6IGRlIGVkaWNpw7NuIHByZWd1bnRhcyBkZSB1bmEgZW5jdWVzdGEgZW4gc3UgdmlzdGEgZGUgZGV0YWxsZSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gdsOtbmN1bG8gZW4gZWwgbWVuw7ogcGFyYSBpciBoYWNpYSBhdHLDoXMgZW4gdmlzdGEgZGUgZGV0YWxsZSBkZSB1bmEgZW5jdWVzdGEgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biB2w61uY3VsbyBlbiBlbCBtZW7DuiBwYXJhIGlyIGRldGFsbGUgZGUgbGFzIGVzdGFkw61zdGljYXMgZGUgdW5hIGVuY3Vlc3RhIGVuIHN1IHZpc3RhIGRlIGRldGFsbGUgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdEZXRhbGxlIGRlIGxhIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ03Ds2R1bG8gcGFyYSBhZ3JlZ2FyIEVuY3Vlc3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnTcOzZHVsbyBkZSBFZGljacOzbiBkZSBFbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdGUgZGUgbGEgdmlzdGEgZGUgcmVzdW1lbiBwZXF1ZcOxYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNw7NkdWxvIGRlIFN0YWTDrXN0aWNhcyBkZSBFbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ01vZHVsbyBkZSBEZXRhbGxlIGRlIEVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJ0zDrW1pdGUgZGUgZW5jdWVudGFzIHBvciBww6FnaW5hIHBhcmEgZWwgUmVzdW1lbiBkZSBFbmN1ZXN0YSAiUGVxdWXDsW8iLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ0xhcyBlbmN1ZXN0YXMgbm8gZGUgbWFuZGFyw6FuIGEgbGFzIGRpcmVjY2lvbmVzIGRlIGNvcnJlbyBlbGVjdHLDs25pY28gYXF1w60gY29uZmlndXJhZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnRWwgaWRlbnRpZmljYWRvciBwYXJhIHVuYSBlbmN1ZXN0YSwgZWplbXBsbyBTdXJ2ZXkjLCBNeVN1cnZleSMuIFBvciBkZWZlY3RvIGVzIFN1cnZleSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG8gZGUgdGlja2V0IHF1ZSBtYW5kYSBjb3JyZW9zIGVsZWN0csOzbmljb3MgZGUgZW5jdWVzdGFzIGhhY2lhIGxvcyBjbGllbnRlcyBzaSB1biB0aWNrZXQgZXMgY2VycmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJ0Rpc3BhcmEgbGEgZWxpbWluYWNpw7NuIGRlIHJlc3VsdGFkb3MgKGluY2x1eWVuZG8gZGF0b3MgZGUgdm90b3MgeSBwZXRpY2lvbmVzKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ0Rpc3BhcmFkb3IgcGFyYSBzb2xpY2l0dWRlcyBkZSBlbnbDrW8gZGUgZW5jdWVzdGFzIHJldHJhc2FkYXMgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnSXIgYSBsb3MgZGV0YWxsZXMgZGUgbGEgZXN0YWTDrXN0aWNhLic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZpX0ZJX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFBQVN1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctIE11dXRhIHRpbGFhIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICdMaXPDpMOkIHV1c2kga3lzZWx5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnTXVva2thYSBreXNlbHnDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICdNdW9ra2FhIGt5c3lteWtzacOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICdLeXN5bXlzdGVuIG11b2trYXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnVmFzdGF1c3RlbiBtdW9ra2F1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ1V1ZGVuIHRpbGFuIGFzZXR0YW1pbmVuIGVpIG9ubmlzdHUhIEV0IG9sZSBtw6TDpHJpdHTDpG55dCBreXN5bXlrc2nDpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAnVGlsYSBtdXV0ZXR0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ0tpaXRvcyBwYWxhdXR0ZWVzdGFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICdLeXNlbHkgb24gdmFsbWlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ1ZhbG1pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnS2Vza2VuZXLDpGluZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnVmFsaXRzZSB5a3NpIHRhaSB1c2VhbXBpYSAoTGlzdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvJ30gPSAnVmFsaXRzZSB5a3NpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ1ZhbGl0c2UgeWtzaSBtb25lc3RhIChMaXN0YSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICdUdWxvc3RlbiB5aHRlZW52ZXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ0t5c2VseW4ga3V2YXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdLeXNlbHluIGVzaXR0ZWx5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ0t5bGzDpCAvIEVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llc05vJ30gPSAnS3lsbMOkIC8gRWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdWYXN0YXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ0VpIHZhc3Rhbm51dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICdZa3NpdHlpc2tvaHRhaXNldCB0dWxva3NldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnT2xldCBqbyB2YXN0YW5udXQgdMOkaMOkbiBreXNlbHl5bi4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0x1byB1dXNpIGt5c2VseSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdFc2l0dGVseSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ1Npc8OkaW5lbiBrdXZhdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdNdW9ra2FhIHRpZXRvamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvJ30gPSAnWWxlaXNldCB0aWVkb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICdUdWxvc3RlbiB5aHRlZW52ZXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ0zDpGhldHlzYWlrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICfDhMOkbmVzdHlzYWlrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnS3lzZWx5biB0dWxvc3RlbiB5a3NpdHlpc2tvaGRhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAnbWVuZSB0YWthaXNpbiB5aHRlZW52ZXRvb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR28gYmFjayd9ID0gJ1Rha2Fpc2luJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnTXVva2thYSBreXN5bXlrc2nDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdMaXPDpMOkIGt5c3lteXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICdTecO2dMOkIGt5c3lteXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ0t5c2VseW4ga3lzeW15a3NldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ0t5c3lteXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICdLeXNlbHl5biBlaSBvbGUgdGFsbGVubmV0dHUga3lzeW15a3Npw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdNdW9ra2FhIGt5c3lteXN0w6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICdtZW5lIHRha2Fpc2luIGt5c3lteWtzaWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnVmFzdGF1c3ZhaWh0b2VoZG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdMaXPDpMOkIHZhc3RhdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICdUw6Rzc8OkIGVpIG9sZSB1c2VpdGEgdmFzdGF1a3NpYSwgbsOkeXRldMOkw6RuIHRla3N0aWFsdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnTXVva2thYSB2YXN0YXVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAnbWVuZSB0YWthaXNpbiBtdW9ra2FhbWFhbiBreXN5bXlzdMOkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gU3VydmV5cyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnTXVpc3R1dHVrc2VuIGzDpGhldHTDpGrDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ011aXN0dXR1a3NlbiBvdHNpa2tvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnTXVpc3R1dHVrc2VuIHZpZXN0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAnTXVva2thYWphJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ0t5c2VseW4gdGllZG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdMw6RoZXRldHR5asOkIGt5c2VseWl0w6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ1Zhc3RhdXN0ZW4gbcOkw6Ryw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ1R1bG9zdGVuIHlrc2l0eWlza29oZGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnS3lzZWx5biB5a3NpdHlpc2tvaGRhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ1R1bG9zdGVuIGdyYWFmaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJ0VpIHR1bG9rc2lhLic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdLeXNlbHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdWYXN0YWEgc2V1cmFhdmlpbiBreXN5bXlrc2lpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICdOw6R5dMOkIHZhc3RhdWtzZW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICdOw6Rtw6Qgb3ZhdCB2YXN0YXVrc2VzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdLeXNlbHluIG90c2lra28nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnS3lzZWx5b21pbmFpc3V1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnTW9kdXVsaSBreXNlbHlpZGVuIGx1b250aWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0gJyc7CgogICAgIwogICAgIyBPQlNPTEVURSBFTlRSSUVTIEZPUiBSRUZFUkVOQ0UsIERPIE5PVCBUUkFOU0xBVEUhCiAgICAjCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBCeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGUgbmV4dCBxdWVzdGlvbnMnfSA9ICcnOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZyX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0Nyw6llciB1biBub3V2ZWF1IHNvbmRhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnUHLDqXNlbnRhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnUHLDqXNlbnRhdGlvbiBkdSBzb25kYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnQ29ycHMgZGUgbGEgbm90aWZpY2F0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ1R5cGVzIGRlIHRpY2tldHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmlwdGlvbiBpbnRlcm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICdFeGVtcGxlIGRlIHNvbmRhZ2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdNb2RpZmllciBsZXMgaW5mb3JtYXRpb25zIGfDqW7DqXJhbGVzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnTW9kaWZpZXIgbGVzIHF1ZXN0aW9ucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdWb3VzIMOqdGVzIGljaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnUXVlc3Rpb25zIGR1IHNvbmRhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnQWpvdXRlciBkZXMgcXVlc3Rpb25zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnw4ljcml2ZXogbGEgcXVlc3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnUsOpcG9uc2UgcmVxdWlzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ0F1Y3VuZSBxdWVzdGlvbiBzYXV2ZWdhcmTDqWUgcG91ciBjZXR0ZSBlbnF1w6p0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ1F1ZXN0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ1LDqXBvbnNlIHJlcXVpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hlbiB5b3UgZmluaXNoIHRvIGVkaXQgdGhlIHN1cnZleSBxdWVzdGlvbnMganVzdCBjbG9zZSB0aGlzIHNjcmVlbi4nfSA9CiAgICAgICAgJ0FwcsOocyBhdm9pciB0ZXJtaW7DqSBsXCfDqWRpdGlvbiBkdSBzb25kYWdlLCBmZXJtZXogY2V0dGUgZmVuw6p0cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnRmVybWVyIGNldHRlIGZlbsOqdHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdNb2RpZmllciBsYSBxdWVzdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ1JldG91ciBhdXggcXVlc3Rpb25zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJ1F1ZXN0aW9uIDonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICdSw6lwb25zZXMgcG9zc2libGVzIHBvdXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ0Fqb3V0ZXIgdW5lIHLDqXBvbnNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnQXVjdW5lIHLDqXBvbnNlIG5cJ2Egw6l0w6kgdHJvdXbDqWUgcG91ciBjZXR0ZSBxdWVzdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ2lsIG5cJ3kgYSBwYXMgZGUgcsOpcG9uc2VzIHBvc3NpYmxlLCB1bmUgem9uZSBkZSB0ZXh0ZSBzZXJhIGFmZmljaMOpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ01vZGlmaWVyIGxhIHLDqXBvbnNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ1JldG91ciDDoCBsYSBtb2RpZmljYXRpb24gZGVzIHF1ZXN0aW9ucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnUsOpcG9uc2UgOic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICdWdWUgZFwnZW5zZW1ibGUgZGVzIG9wdGlvbnMgZGUgc29uZGFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnUGFzIGRlIHJlc3RyaWN0aW9ucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJ1NvbmRhZ2VzIG1heGltdW0gcGFyIHBhZ2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ0V4cMOpZGl0ZXVyIGRlIGxhIG5vdGlmaWNhdGlvbiAgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnU3VqZXQgZGUgbGEgbm90aWZpY2F0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNb2RpZmnDqSBwYXInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnVnVlIGRcJ2Vuc2VtYmxlIGRlcyBzdGF0aXN0aXF1ZXMgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICdUYWJsZWF1IGRlcyBkZW1hbmRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAnU8OpbGVjdGlvbm5lciB0b3V0ZXMgbGVzIGRlbWFuZGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ1RlbXBzIGRlIGxcJ2Vudm9pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ1RlbXBzIGRlIHZvdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJ1PDqWxlY3Rpb25uZXIgY2V0dGUgZGVtYW5kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ1ZvaXIgbGVzIGTDqXRhaWxzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnRMOpdGFpbCBzdGF0aXN0aXF1ZSBzb25kYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICdSZXRvdXIgw6AgbGEgdnVlIGRcJ2Vuc2VtYmxlIGRlcyBzdGF0aXN0aXF1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb24gc29uZGFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnRW52b3nDqSBkZW1hbmRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdTb25kYWdlIHJlw6d1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnRMOpdGFpbHMgc29uZGFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICdTZXJ2aWNlIFRpY2tldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ0dyYXBoaXF1ZSByw6lzdWx0YXQgc29uZGFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnUGFzIGRlIHN0YXRpc3RpcXVlIHNvbmRhZ2UuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ0VucXXDqnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnTWVyY2kgZGUgcsOpcG9uZHJlIMOgIGNlcyBxdWVzdGlvbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnVm9pciBtZXMgcsOpcG9uc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICdWb2ljaSB2b3MgcsOpcG9uc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ1RpdHJlIEVucXXDqnRlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICdBam91dGVyIHVuIHNvbmRhZ2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ01vZGlmaWVyIGxlIHNvbmRhZ2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ01vZGlmaWVyIGxlcyBxdWVzdGlvbnMgZHUgc29uZGFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdPdWkvTm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ0JvdXRvbiBSYWRpbyAoTGlzdGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ0Nhc2Ugw6AgY29jaGVyIChMaXN0ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICdUeXBlIGRlIFF1ZXN0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnVGVybWluw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ0luY29tcGxldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnTW9kaWZpZXIgbGEgcXVlc3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICdNb2RpZmllciBsYSByw6lwb25zZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICdWdWUgZFwnZW5zZW1ibGUgZGVzIHN0YXRpc3RpcXVlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ0TDqXRhaWwgU3RhdHMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICdJbXBvc3NpYmxlIGRlIG1ldHRyZSDDoCBqb3VyICEgYXVjdW5lIHF1ZXN0aW9uIG5cJ2VzdCBkZWZpbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ0xlIHN0YXR1dCBhIMOpdMOpIGNoYW5nw6kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0gQXVjdW5lIGZpbGUgc8OpbGVjdGlvbm7DqWUgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCB0eXBlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gQ2hhbmdlIFN0YXR1cyAtJ30gPSAnLSBDaGFuZ2VyIGxlIHN0YXR1dCAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ01hw650cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCd9ID0gJ05vbiB2YWxpZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ05vdXZlYXUgU3RhdHV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXB0aW9uIGR1IHNvbmRhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdSw6lwb25kdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICdOb24gcsOpcG9uZHUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ01lcmNpIHBvdXIgdm90cmUgcmV0b3VyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0xlIHNvbmRhZ2UgZXN0IHRlcm1pbsOpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdWb3VzIGF2ZXogZMOpasOgIHLDqXBvbmR1IMOgIGNldHRlIEVucXXDqnRlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICdFdGVzIHZvdXMgc3VyIGRlIHZvdWxvaXIgc3VwcHJpbWVyIGNldHRlIHF1ZXN0aW9uID8gVG91dGVzIGxlcyBkb25uw6llcyBhc3NvY2nDqWVzIHNlcm9udCBwZXJkdWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ0V0ZXMgdm91cyBzdXIgZGUgdm91bG9pciBzdXBwcmltZXIgY2V0dGUgcXVlc3Rpb24gPyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdVbiBtb2R1bGUgZFwnRW5xdcOqdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ1VuIG1vZHVsZSBwb3VyIG1vZGlmaWVyIGxlcyBxdWVzdGlvbnMgZFwndW4gc29uZGFnZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUb3VzIGxlcyBwYXJhbcOodHJlcyBwb3VyIGxlIHNvbmRhZ2UgZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ05vbWJyZSBkZSBqb3VycyBhcHLDqHMgYXZvaXIgZW52b3nDqSB1biBtYWlsIGRlIHNvbmRhZ2UsIHBlbmRhbnQgbGVxdWVsIGF1Y3VuIG5vdXZlYXUgc29uZGFnZSBuZSBzZXJhIHJlbnZvecOpIGF1IG3Dqm1lIHV0aWxpc2F0ZXVyLiBFbiBjaG9pc2lzc2FudCAwIHVuIG1haWwgZGUgc29uZGFnZSBzZXJhIGVudm95w6kgw6AgY2hhcXVlIGZvaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NvcnBzIHBhciBkw6lmYXV0IGRlIGxhIG5vdGlmaWNhdGlvbiBDbGllbnQgcGFyIG1haWwgw6AgcHJvcG9zIGRcJ3VuZSBub3V2ZWxsZSBlbnF1w6p0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdFeHDDqWRpdGV1ciBwYXIgZMOpZmF1dCBwb3VyIGxhIG5vdGlmaWNhdGlvbiBDbGllbnQgcGFyIG1haWwgw6AgcHJvcG9zIGRcJ3VuZSBub3V2ZWxsZSBlbnF1w6p0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnU3VqZXQgcGFyIGTDqWZhdXQgcG91ciBsYSBub3RpZmljYXRpb24gQ2xpZW50IHBhciBtYWlsIMOgIHByb3BvcyBkXCd1bmUgbm91dmVsbGUgZW5xdcOqdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIHVuIG1vZHVsZSBk4oCZYXBlcsOndSBvw7kgbW9udHJlciBsYSBsaXN0ZSBkZXMgc29uZGFnZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICdEw6lmaW5pIGxlIG5vbWJyZSBtYXhpbXVtIGRcJ2VucXXDqnRlcyBxdWkgc2Vyb250IGVudm95w6llcyBhIHVuIENsaWVudCBwYXIgcMOpcmlvZGUgZGUgMzAgam91cnMuICgwIHNpZ25pZmllIHBhcyBkZSBtYXhpbXVtLCB0b3V0ZXMgbGVzIGVucXXDqnRlcyBzZXJvbnQgZXhww6lkacOpZXMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICdEw6lmaW5pciBsYSBoYXV0ZXVyIHBhciBkw6lmYXV0IGRlIGxhIHZ1ZSB6b29tw6llIGRlcyDDqWzDqW1lbnRzIGR1IHNvbmRhZ2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIGxlcyBjb2xvbm5lcyB2aXNpYmxlIGRlIGzigJlhcGVyw6d1IGR1IHNvbmRhZ2UuIGNldHRlIG9wdGlvbiBuXCdhIHBhcyBkXCdlZmZldCBzdXIgbGEgcG9zaXRpb24gZGVzIGNvbG9ubmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnYWN0aXZlIG91IGTDqXNhY3RpdmUgbGEgdnVlIGRlcyByw6lzdWx0YXRzIGRcJ3VuIHNvbmRhZ2UgZGFucyBsXCdpbnRlcmZhY2UgcHVibGlxdWUgbG9yc3F1XCd1biBjbGllbnQgZXNzYWllIGRlIHLDqXBvbmRyZSB1bmUgZGV1eGnDqG1lIGZvaXMgYSB1biBzb25kYWdlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ0FjdGl2ZSBvdSBkw6lzYWN0aXZlIGxhIHbDqXJpZmljYXRpb24gZGUgbGEgY29uZGl0aW9uIGRcJ2Vudm9pIHBvdXIgbGUgc2VydmljZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICdBY3RpdmUgb3UgZMOpc2FjdGl2ZSBsYSB2w6lyaWZpY2F0aW9uIGRlIGxhIGNvbmRpdGlvbiBkXCdlbnZvaSBwb3VyIGNlIHR5cGUgZGUgdGlja2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbnRlcmZhY2UgZHUgbW9kdWxlIGRcJ2VucmVnaXN0cmVtZW50IGRcJ3VuIGFqb3V0IGRlIHNvbmRhZ2UgZGFucyBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbnRlcmZhY2UgZHUgbW9kdWxlIGRcJ2VucmVnaXN0cmVtZW50IGRlIGxcJ8OpZGl0aW9uIGRcJ3VuIHNvbmRhZ2UgZGFucyBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnU2kgY2V0dGUgZXhwcmVzc2lvbiByw6lndWxpw6hyZSBlc3QgdsOpcmlmacOpZSwgYXVjdW5lIGVucXXDqnRlIENsaWVudCBuZSBzZXJhIGVudm95w6llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICdMaW1pdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnRW5xdcOqdGUgcHVibGlxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdEw6l0YWlscyBTdGF0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ01vZHVsZSBkXCfDqWRpdGlvbiBkXCdlbnF1w6p0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNb2R1bGUgc3RhdGlzdGlxdWUgZFwnZW5xdcOqdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnTW9kdWxlIGRlIGxhIHZ1ZSBkw6l0YWlsbMOpZSBkXCdlbnF1w6p0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnTGVzIGVucXXDqnRlIG5lIHNlcm9udCBwYXMgZW52b3nDqWVzIGF1eCBhZHJlc3NlcyBlbWFpbCBjb25maWd1csOpZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdMXCdpZGVudGlmaWFudCBwb3VyIHVuZSBlbnF1w6p0ZS4gcGFyIGV4LiBTdXJ2ZXkjLCBNeVN1cnZleSMuIHBhciBkw6lmYXV0IDogU3VydmV5Iy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmdsX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0NyZWFyIHVuaGEgZW5xdWlzYSBub3ZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ0ludHJvZHVjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdWNpw7NuIMOhIGVucXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdUZXh0byBkYSBub3RpZmljYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ1RpcG9zIGRlIHTDrWNrZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmljacOzbiBpbnRlcm5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdFZGl0YXIgYSBpbmZvcm1hY2nDs24geGVyYWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdFZGl0YXIgYXMgcHJlZ3VudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJ1Zvc3RlZGUgZXN0w6EgYXF1w60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ1ByZWd1bnRhcyBkYSBlbnF1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ0VuZ2FkaXIgdW5oYSBwcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ0VzY3JpYmEgYSBwcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdSZXF1w61yZXNlIHVuaGEgcmVzcG9zdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICdOb24gaGFpIHByZWd1bnRhcyBnYXJkYWRhcyBwYXJhIGVzdGEgZW5xdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdQcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdSZXF1w61yZXNlIHVuaGEgcmVzcG9zdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hlbiB5b3UgZmluaXNoIHRvIGVkaXQgdGhlIHN1cnZleSBxdWVzdGlvbnMganVzdCBjbG9zZSB0aGlzIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9zZSB0aGlzIHdpbmRvdyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9uJ30gPSAnRWRpdGFyIHByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAncmV0b3JuYXIgw6FzIHByZWd1bnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICdSZXNwb3N0YXMgcG9zw61iZWlzIGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ0VuZ2FkaXIgdW5oYSByZXNwb3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ05vbiBoYWkgcmVzcG9zdGFzIGdhcmRhZGFzIHBhcmEgZXN0YSBwcmVndW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ0lzdG8gbm9uIHRlbiB2YXJpYXMgcmVzcG9zdGFzOyBtw7NzdHJhc2UgdW4gY2Fkcm8gcGFyYSBlc2NyaWJpciB0ZXh0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICdFZGl0YXIgYSByZXNwb3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICdyZXRvcm5hciDDoSBlZGljacOzbiBkYSBwcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdSZW1pdGVudGUgZGEgbm90aWZpY2FjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ0FzdW50byBkYSBub3RpZmljYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdDYW1iaWFkbyBwb3InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnVmlzdGEgeGVyYWwgZGFzIGVzdGF0w61zdGljYXMgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICdUw6Fib2EgZGUgc29saWNpdHVkZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICdIb3JhIGRlIGVudsOtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdIb3JhIGRlIHZvdGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnVmVyIG9zIGRldGFsbGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnRGV0YWxsZXMgRXN0YXTDrXN0aWNvcyBFbnF1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICd2b2x0ZSBhIHZpc3RhIHhlcmFsIGRhcyBlc3RhdMOtc3RpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBkYSBlbnF1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdFbnZpYXIgc29saWNpdHVkZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ0VucXVpc2FzIHJlY2liaWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0RldGFsbGVzIGRhIGVucXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnU2Vydml6b3MgVGlja2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnR3LDoWZpY28gUmVzdWx0YWRvcyBFbnF1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdObyByZXN1bHRhZG9zIGVzdGF0w61zdGljYSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdFbnF1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnUmVzcG9uZGEgYSBlc3RhcyBwcmVndW50YXMsIHNlIGZhaSBvIGZhdm9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ01vc3RyYXIgYXMgbWnDsWFzIHJlc3Bvc3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnRXN0YXMgc29uIGFzIHPDumFzIHJlc3Bvc3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdUw610dWxvIGRhIGVucXVpc2EnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ0VuZ2FkaXIgdW5oYSBlbnF1aXNhIG5vdmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ0VkaXRhciBlbnF1aXNhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICdFZGl0YXIgUHJlZ3VudGFzIGRhIEVucXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnU2kvTm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ09wY2nDs24gZXhjbHXDrW50ZSAobGlzdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ09wY2nDs24gbm9uIGV4Y2x1w61udGUgKGxpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ1RpcG8gZGUgcHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdDb21wbGV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnSW5jb21wbGV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnRWRpdGFyIFByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnRWRpdGFyIFJlc3Bvc3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ1Zpc3RhIHhlcmFsIGRhcyBlc3RhdMOtc3RpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAnRGV0YWxsZSBkYXMgZXN0YXTDrXN0aWNhcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ05vbiBzZSBwb2RlIGVzdGFibGVjZXIgbyBub3ZvIHN0YXR1cyFOb24gaGFpIHByZWd1bnRhcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ0VzdGFkbyBjYW1iaWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSBOb24gaGFpIG5pbmd1bmhhIGZpbGEgc2VsZWNjaW9uYWRhIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHNlcnZpY2Ugc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gQ2FtYmlhciBvIGVzdGFkbyAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ1ByaW5jaXBhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAnSW5jb3JyZWN0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnTm92byBlc3RhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnRGVzY3JpY2nDs24gZGEgZW5xdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ3Jlc3BvbmRpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnbm9uIHJlc3BvbmRpZGEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ0dyYXphcyBwb2xhIHPDumEgb3BpbmnDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnQSBlbnF1aXNhIGVzdMOhIHJlbWF0YWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdYYSByZXNwb25kZXUgYSBlc3RhIGVucXVpc2EuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICdDb25maXJtYSBxdWUgZGVzZXhhIGVsaW1pbmFyIGVzdGEgcHJlZ3VudGEuIEhhbnNlIFBFUkRFUiBUT0RPUyBvcyBkYXRvcyBhc29jaWFkb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnQ29uZmlybWEgcXVlIGRlc2V4YSBlbGltaW5hciBlc3RhIHByZWd1bnRhPyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdVbiBtw7NkdWxvIGRlIGVucXVpc2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnVW4gbcOzZHVsbyBwYXJhIGVkaXRhciBwcmVndW50YXMgZGUgZW5xdWlzYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVMOzZG9sb3MgcGFyYW1ldHJvcyBwYXJhIMOzIG9ieGV0byBFbnF1aXNhIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ0NhbnRpZGFkZSBkZSBkw61hcyBkZXNwb2lzIGRlIGVudmlhciB1bmhhIGVucXVpc2EgZGUgY29ycmVvIG5vIHF1ZSBub24gc2UgZW52w61hbiBub3ZhcyBwZXRpY2nDs25zIGRlIGVucXVpc2EgYW8gbWVzbW8gY2xpZW50ZS4gU2VsZWNjaW9uYW5kbyAwIGVudmlhcsOhIHNlbXByZSBvIGNvcnJlbyBkZSBlbnF1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdDb3JwbyBwb3IgZGVmZWN0byBwYXJhIG8gY29ycmVvIGVsZWN0csOzbmljbyBkZSBub3RpZmljYWNpw7NuIGEgY2xpZW50ZXMgc29icmUgbm92YSBlbnF1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1JlbWl0ZW50ZSBwb3IgZGVmZWN0byBwYXJhIG8gY29ycmVvIGVsZWN0csOzbmljbyBkZSBub3RpZmljYWNpw7NuIGEgY2xpZW50ZXMgc29icmUgbm92YSBlbnF1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdUZW1hIHBvciBkZWZlY3RvIHBhcmEgbyBjb3JyZW8gZWxlY3Ryw7NuaWNvIGRlIG5vdGlmaWNhY2nDs24gYSBjbGllbnRlcyBzb2JyZSBub3ZhIGVucXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBtw7NkdWxvIGRlIHZpc3RhIHhlcmFsIHBhcmEgbW9zdHJhciBhIHZpc3RhIHBlcXVlbmEgZHVuaGEgbGlzdGEgZGUgZW5xdWlzYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnRGVmaW5lIGEgY2FudGlkYWRlIG3DoXhpbWEgZGUgZW5xdWlzYXMgcXVlIGVudsOtYW5zZSBhb3MgY2xpZW50ZXMgcG9yIDMwIGTDrWFzLiAoMCBzaWduaWZpY2Egbm8gbcOheGltbywgdMOzZGFsYXMgcGV0aWNpw7NucyBkZSBlbnF1aXNhIHNlcsOhbiBlbnZpYWRhcykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ0RlZmluZSBhIGFsdHVyYSBwb3IgZGVmZWN0byBwYXJhIHZpc3RhcyB0ZXh0byBlbnJpcXVlY2lkbyBwYXJhIGVsZW1lbnRvcyBkZSBab29tRW5xdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVtbmFzIG1vc3RyYWRhcyBuYSB2aXNpw7NuIHhlcmFsIGRlIGVucXVpc2EuIEVzdGEgb3BjacOzbiBub24gdGVuIG5pbmfDum4gZWZlY3RvIHNvYnJlIGEgcG9zaWNpw7NuIGRhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJ0FjdGl2ZSBvdSBkZXNhY3RpdmUgYSBwYW50YWxsYSBNb3N0cmFyRGF0b3NWb3RvIG5hIGludGVyZmFjZSBww7pibGljYSBwYXJhIG1vc3RyYXIgZGF0b3MgZHVuIHJlc3VsdGFkbyBkZSBlbnF1aXNhIGVzcGVjaWZpY2EgY2FuZG8gbyBjbGllbnRlIGludGVudGEgcmVzcG9uZGVyIGEgZW5xdWlzYSBwb3Igc2VndW5kYSB2ZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnQWN0aXZlIG91IGRlc2FjdGl2ZSBhIGNvbmRpY2lvbiBkZSBjb21wcm9iYWNpb24gZW52aWFyIHBhcmEgbyBzZXJ2aXpvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ0FjdGl2ZSBvdSBkZXNhY3RpdmUgYSBjb21wcm9iYWNpw7NuIGVudmlhciBjb25kaWNpw7NuIHBhcmEgbyB0aXBvIGRlIHRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmV4aXN0cm8gbcOzZHVsbyBmcm9udGVuZCBwYXJhIGVuZ2FkaXIgZW5xdWlzYSBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmV4aXN0cm8gbcOzZHVsbyBmcm9udGVuZCBwYXJhIGVkaXRhciBlbnF1aXNhIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmV4aXN0cm8gbcOzZHVsbyBmcm9udGVuZCBwYXJhIGVzdGF0w61zdGljYXMgZGUgZW5xdWlzYSBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmV4aXN0cm8gbcOzZHVsbyBmcm9udGVuZCBwYXJhIHpvb20gZGUgZW5xdWlzYSBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnUmV4aXN0cm8gbcOzZHVsbyBmcm9udGVuZCBwYXJhIG9ieGVjdG8gRW5xdWlzYVB1YmxpY2EgbmEgw6FyZWEgRW5xdWlzYSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ1NlIGEgZXhwcmVzacOzbiByZWd1bGFyIGNvaW5jaWRlLCBub24gZW52aWFyw6FzZSBlbnF1aXNhIGFvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgYXMgcMOheGluYXMgKG5hcyBjYWxlcyBhcyBlbnF1aXNhcyBzb24gbW9zdHJhZGFzKSBkYSB2aXN0YSB4ZXJhbCBwZXF1ZW5hIGRhIGVucXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnRW5xdWlzYSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIGVkaXRhciB1bmhhIGVucXVpc2EgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgZWRpdGFyIHByZWd1bnRhcyBkZSBlbnF1aXNhIG5hIHPDumEgdmlzdGEgem9vbSBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgdm9sdGFyIGF0csOhcyBuYSB2aXN0YSB6b29tIGRlIGVucXVpc2EgZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gZW5sYWNlIG5vIG1lbnUgcGFyYSBmYWNlciB6b29tIG5vcyBkZXRhbGxlcyBkYXMgZXN0YXTDrXN0aWNhcyBkYSBlbnF1aXNhIG5hIHPDumEgdmlzdGEgem9vbSBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnRGV0YWxsZXMgZGFzIGVzdGF0w61zdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICdNw7NkdWxvIEVkaXRhciBFbnF1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0zDrW1pdGUgIlBlcXVlbm8iIFZpc3RhIFhlcmFsIEVucXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNw7NkdWxvIEVzdGF0w61zdGljYXMgRW5xdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ03Ds2R1bG8gWm9vbSBFbnF1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ0VucXVpc2FzIG5vbiBzZXLDoW4gZW52aWFkYXMgYW9zIGVuZGVyZXpvcyBkZSBjb3JyZW8gZWxlY3Ryw7NuaWNvIGNvbmZpZ3VyYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ08gaWRlbnRpZmljYWRvciBwYXJhIHVuaGEgZW5xdWlzYSwgZXguIEVucXVpc2EjLCBNacOxYUVucXVpc2EjLCBQb3IgZGVmZWN0byDDqSBFbnF1aXNhIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICdNw7NkdWxvIGV2ZW50byB0aWNrZXQgcGFyYSBlbnZpYXIgYXV0b21hdGljYW1lbnRlIHBldGljacOzbnMgZGUgZW5xdWlzYSBkZSBjb3JyZW8gZWxlY3Ryw7NuaWNvIHNlIHVuIHRpY2tldCDDqSBwZWNoYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmhyX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ1N0dm9yaSBub3Z1IGFua2V0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdVdm9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdVdm9kIGFua2V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ1phYmlsamXFvmJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ1RpcG92aSBrYXJ0aWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnSW50ZXJuaSBvcGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdVcmVkaSBvcMSHZSBpbmZvcm1hY2lqZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ1VyZWRpIHBpdGFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdBbmtldG5hIHBpdGFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnRG9kYWogcGl0YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ1VwacWhaSBwaXRhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ09kZ292b3IgamUgbmVvcGhvZGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnTmVtYSBzcHJlbWxqZW5paCBwaXRhbmphIHphIG92dSBhbmtldHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnUGl0YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdPZGdvdm9yIGplIG9iYXZlemFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ1VyZWRpIHBpdGFuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICd2cmF0aSBzZSBuYXRyYWcgbmEgcGl0YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICdNb2d1xIdpIG9kZ292b3JpIHphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdEb2RhaiBvZGdvdm9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnTmVtYSBzcHJlbWxqZW5paCBvZGdvdm9yYSB6YSBvdm8gcGl0YW5qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ1VyZWRpIG9kZ292b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAndnJhdGkgc2UgbmF0cmFnIG5hIHVyZcSRaXZhbmplIHBpdGFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnWmFiaWxqZcW+YmEgcG/FoWlsamF0ZWxqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ1phYmlsamXFvmJhIG5hc2xvdmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ01pamVuamFvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ1ByZWdsZWQgc3RhdGlzdGlrZSBvZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ1RhYmxpY2EgemFodGpldmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICdWcmlqZW1lIHNsYW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdWcmlqZW1lIGdsYXNvdmFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ1ZpZGkgcG9kcm9ibmlqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ0RldGFsamkgYW5rZXRuZSBzdGF0aXN0aWtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICd2cmF0aSBzZSBuYXRyYWcgbmEgcHJlZ2xlZCBzdGF0aXN0aWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjaWplIG8gYW5rZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdQb3NsYW5pIHphaHRqZXZpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdQcmltbGplbmUgYW5rZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnRGV0YWxqaSBhbmtldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnUmV6dWx0YXRpIGFua2V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnTmVtYSByZXp1bHRhdGEuICc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdBbmtldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdNb2xpbW8gdmFzIGRhIG9kZ292b3JpdGUgbmEgcGl0YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICdQcmlrYcW+aSBtb2plIG9kZ292b3JlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICdPdm8gc3UgdmHFoWkgb2Rnb3ZvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnTmFzbG92IGFua2V0ZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnRG9kYWogbm92dSBhbmtldHUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ1VyZWRpIGFua2V0dSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnVXJlZGkgYW5rZXRuYSBwaXRhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ0RhL25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICcgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnVGlwIHBpdGFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdEb3ZyxaFlbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ05lZG92csWhZW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICdVcmVkaSBwaXRhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnVXJlZGkgb2Rnb3Zvcic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICdQcmVnbGVkIHN0YXRpc3Rpa2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3Igc3RhdHMgZGV0YWlsISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICdTdGF0aXN0aWthIGRldGFsam5vJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAnTmVtb2d1xIdlIHBvc3Rhdml0aSBub3ZpIHN0YXR1cyEgUGl0YW5qYSBuaXN1IHBvc3RhdmxqZW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICdTdGF0dXMgcHJvbWlqZW5qZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCB0eXBlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gQ2hhbmdlIFN0YXR1cyAtJ30gPSAnLSBQcm9taWplbmkgc3RhdHVzIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdPcGlzIGFua2V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ29kZ292b3Jlbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnbmlqZSBvZGdvdm9yZW5vJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdIdmFsYSB2YW0gemEgcG92cmF0bnUgaW5mb3JtYWNpanUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnQW5rZXRhIGplIHphdnLFoWVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnVmXEhyBzdGUgaXNwdW5qYXZhbGkgYW5rZXR1Lic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnxb1lbGl0ZSBsaSB6YWlzdGEgaXpicmlzYXRpIG92byBwaXRhbmplPyBTdmkgcG9kYWNpIHByaSB0b21lIMSHZSBiaXRpIGl6Z3VibGplbmkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnxb1lbGl0ZSBsaSB6YWlzdGEgb2JyaXNhdGkgb3ZhaiBvZGdvdm9yPyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdBbmtldG5pIG1vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnTW9kdWwgemEgdXJlxJFpdmFuamUgYW5rZXRuaWggcGl0YW5qYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGVkaXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICdKYXZuYSBhbmtldGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnU2F0aXN0aWthIGRldGFsam5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omh1X1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ8OaaiBrw6lyZMWRw612IGzDqXRyZWhvesOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnQmV2ZXpldMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnS8OpcmTFkcOtdiBiZXZlemV0w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ8OJcnRlc8OtdMOpcyB0w7ZyenNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ0plZ3l0w61wdXNvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ0JlbHPFkSBsZcOtcsOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnw5xneWbDqWwgZmVsdMOpdGVsZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICdWw6FsYXNzem9uIGVneSDDvGd5ZsOpbHR1bGFqZG9uc8OhZ290IGVneSBmZWx0w6l0ZWxoZXogdmFsw7MgaG96esOhYWTDoXNob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnTnlpbHbDoW5vcyBrw6lyZMWRw612a3VsY3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICdQw6lsZGEga8OpcmTFkcOtdic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ8OBbHRhbMOhbm9zIGluZm9ybcOhY2nDs2sgc3plcmtlc3p0w6lzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ0vDqXJkw6lzZWsgc3plcmtlc3p0w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICfDlm4gaXR0IMOhbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ0vDqXJkxZHDrXYga8OpcmTDqXNlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdLw6lyZMOpcyBob3p6w6FhZMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICdHw6lwZWxqZSBiZSBhIGvDqXJkw6lzdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdWw6FsYXN6IGvDtnRlbGV6xZEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICdOaW5jc2VuZWsga8OpcmTDqXNlayBlbG1lbnR2ZSBlaGhleiBhIGvDqXJkxZHDrXZoZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnS8OpcmTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAnVsOhbGFzeiBrw7Z0ZWxlesWRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICdBbWlrb3IgYmVmZWplenRlIGEga8OpcmTFkcOtdiBrw6lyZMOpc2VpbmVrIHN6ZXJrZXN6dMOpc8OpdCwgYWtrb3IgZWd5c3plcsWxZW4gesOhcmphIGJlIGV6dCBhIGvDqXBlcm55xZF0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9zZSB0aGlzIHdpbmRvdyd9ID0gJ0FibGFrIGJlesOhcsOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ0vDqXJkw6lzIHN6ZXJrZXN6dMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICd2aXNzemEgYSBrw6lyZMOpc2VraGV6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJ0vDqXJkw6lzOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ0xlaGV0c8OpZ2VzIHbDoWxhc3pvayBhIGvDtnZldGtlesWRaMO2eic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnVsOhbGFzeiBob3p6w6FhZMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdOaW5jc2VuZWsgdsOhbGFzem9rIGVsbWVudHZlIGVoaGV6IGEga8OpcmTDqXNoZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdFbm5layBuaW5jcyB0w7ZiYiB2w6FsYXN6YSwgZWd5IHN6w7Z2ZWdkb2JveiBsZXN6IG1lZ2plbGVuw610dmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnVsOhbGFzeiBzemVya2VzenTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ3Zpc3N6YSBhIGvDqXJkw6lzIHN6ZXJrZXN6dMOpc8OpaGV6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICdWw6FsYXN6Oic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICdLw6lyZMWRw612IMOhdHRla2ludMWRIGxlaGV0xZFzw6lnZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnQSBzesOhbSwgY8OtbSwgYmV2ZXpldMOpcywgbGXDrXLDoXMsIMOpcnRlc8OtdMOpcyBrw7xsZMWRamUsIMOpcnRlc8OtdMOpcyB0w6FyZ3lhIMOpcyDDqXJ0ZXPDrXTDqXMgdMO2cnpzZSBhdHRyaWLDunR1bW9rYmFuIGtlcmVzLCBmZWzDvGxiw61yw6FsdmEgYXogdWd5YW5pbHllbiBuZXbFsSBlZ3nDqWIgYXR0cmliw7p0dW1va2F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICdLw6lyZMWRw612IGzDqXRyZWhvesOhc2kgaWRlamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVzdHJpY3Rpb24nfSA9ICdOaW5jcyBtZWdrw7Z0w6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICdDc2FrIGV6ZWsga8O2esO2dHQgbMOpdHJlaG96b3R0IGvDqXJkxZHDrXZlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICdPbGRhbGFua8OpbnQgbWVnamVsZW7DrXRldHQgbGVndMO2YmIga8OpcmTFkcOtdic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnw4lydGVzw610w6lzIGvDvGxkxZFqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ8OJcnRlc8OtdMOpcyB0w6FyZ3lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNw7Nkb3PDrXRvdHRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ0Ega8O2dmV0a2V6xZEgc3RhdGlzenRpa8OhaW5hayDDoXR0ZWtpbnTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnS8OpcsOpc2VrIHTDoWJsw6F6YXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJ0F6IMO2c3N6ZXMga8OpcsOpcyBraWplbMO2bMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnS8O8bGTDqXMgaWRlamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnU3phdmF6w6FzIGlkZWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICdFemVuIGvDqXLDqXMga2lqZWzDtmzDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnUsOpc3psZXRlayBtZWd0ZWtpbnTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJ1N0YXRpc3p0aWvDoWsgdMO2cmzDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdLw6lyZMWRw612IHN0YXRpc3p0aWthIHLDqXN6bGV0ZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ3Zpc3N6YSBhIHN0YXRpc3p0aWvDoWsgw6F0dGVraW50xZFqw6loZXonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJ0VsxZF6xZEgc3phdmF6YXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnS8O2dmV0a2V6xZEgc3phdmF6YXQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnS8OpcmTFkcOtdiBpbmZvcm3DoWNpw7NrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdFbGvDvGxkw7Z0dCBrw6lyw6lzZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ0Jlw6lya2V6ZXR0IGvDqXJkxZHDrXZlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0vDqXJkxZHDrXYgcsOpc3psZXRlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICdKZWd5c3pvbGfDoWx0YXTDoXNvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ0vDqXJkxZHDrXYgZXJlZG3DqW55ZWsgZ3JhZmlrb25qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnTmluY3NlbmVrIHN0YXRpc3p0aWthIGVyZWRtw6lueWVrLic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdLw6lyZMWRw612JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnVsOhbGFzem9sam9uIGV6ZWtyZSBhIGvDqXJkw6lzZWtyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICdTYWrDoXQgdsOhbGFzemFpbSBtZWdqZWxlbsOtdMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0V6ZWsgYXogw5ZuIHbDoWxhc3phaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdLw6lyZMWRw612IGPDrW1lJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICfDmmoga8OpcmTFkcOtdiBob3p6w6FhZMOhc2EnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnTmluY3Mgam9nb3N1bHRzw6FnYSBlaGhleiBhIGvDqXJkxZHDrXZoZXohJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJ05pbmNzIGvDqXJkxZHDrXYtYXpvbm9zw610w7MgbWVnYWR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdLw6lyZMWRw612IHN6ZXJrZXN6dMOpc2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnTmluY3Mgam9nb3N1bHRzw6FnYSBlaGhleiBhIGvDqXJkxZHDrXZoZXogdmFneSBrw6lyZMOpc2hleiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICdOaW5jcyBqb2dvc3VsdHPDoWdhIGVoaGV6IGEga8OpcmTFkcOtdmhleiwga8OpcmTDqXNoZXogdmFneSB2w6FsYXN6aG96ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICdLw6lyZMWRw612IGvDqXJkw6lzZWsgc3plcmtlc3p0w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdJZ2VuL05lbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICdWw6FsYXN6dMOzZ29tYiAobGlzdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ0plbMO2bMWRbsOpZ3l6ZXQgKGxpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICdWYWzDs3Mgw7xneWbDqWx0w6Ftb2dhdG90dHPDoWdpIMOpcnTDqWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ0vDqXJkw6lzIHTDrXB1c2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdLw6lzeic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnQmVmZWplemV0bGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICdLw6lyZMOpcyBzemVya2VzenTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnVsOhbGFzeiBzemVya2VzenTDqXNlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ1N0YXRpc3p0aWvDoWsgw6F0dGVraW50xZFqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJ30gPSAnTmluY3Mgam9nb3N1bHRzw6FnYSBlaGhleiBhIGvDqXJkxZHDrXZoZXogdmFneSBhIHN0YXRpc3p0aWvDoWsgcsOpc3psZXRlaWhleiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAnU3RhdGlzenRpa8OhayByw6lzemxldGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICdOZW0gw6FsbMOtdGhhdMOzIGJlIGF6IMO6aiDDoWxsYXBvdCEgTmluY3NlbmVrIGvDqXJkw6lzZWsgbWVnaGF0w6Fyb3p2YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICdOZW0gw6FsbMOtdGhhdMOzIGJlIMO6aiDDoWxsYXBvdCEgQSBrw6lyZMOpc2VrIG5pbmNzZW5layBiZWZlamV6dmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ8OBbGxhcG90IG3Ds2Rvc8OtdHZhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctIE5pbmNzIHbDoXLDs2xpc3RhIGtpamVsw7ZsdmUgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCB0eXBlIHNlbGVjdGVkIC0nfSA9ICctIE5pbmNzIGplZ3l0w61wdXMga2l2w6FsYXN6dHZhIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnLSBOaW5jcyBqZWd5c3pvbGfDoWx0YXTDoXMga2l2w6FsYXN6dHZhIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctIMOBbGxhcG90IG3Ds2Rvc8OtdMOhc2EgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICdNZXN0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCd9ID0gJ8OJcnbDqW55dGVsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ8OaaiDDoWxsYXBvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdLw6lyZMWRw612IGxlw61yw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ21lZ3bDoWxhc3pvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnbmVtIG1lZ3bDoWxhc3pvbHQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ0vDtnN6w7ZuasO8ayBhIHZpc3N6YWplbHrDqXPDqXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnQSBrw6lyZMWRw612IGJlZmVqZXrFkWTDtnR0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICdLw6lyZMWRw612IMO8emVuZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICdBIG1vZHVsIG5pbmNzIGVuZ2Vkw6lseWV6dmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnRXogYSBmdW5rY2lvbmFsaXTDoXMgbmluY3MgZW5nZWTDqWx5ZXp2ZS4gVmVneWUgZmVsIGEga2FwY3NvbGF0b3QgYSByZW5kc3plcmdhemTDoXZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJ0vDqXJkxZHDrXYgaGliYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJ8OJcnbDqW55dGVsZW4ga8OpcmTFkcOtdmt1bGNzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnQSBiZXN6w7pydCBrw6lyZMWRw612a3VsY3Mgw6lydsOpbnl0ZWxlbi4gSGEgZWd5IGhpdmF0a296w6FzdCBrw7Z2ZXRldHQsIGFra29yIGF6IHRhbMOhbiBlbGF2dWx0IHZhZ3kgc8OpcsO8bHQgbGVoZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnS8OpcmTFkcOtdiBzemF2YXrDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJ0vDqXJkxZHDrXYgc3phdmF6w6FzIGFkYXRvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnTcOhciBraXTDtmx0w7Z0dGUgYSBrw6lyZMWRw612ZXQuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICdLw6lyZMWRw612bGlzdGEnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICdWYWzDs2JhbiB0w7Zyw7Zsbmkgc3plcmV0bsOpIGV6dCBhIGvDqXJkw6lzdD8gTUlOREVOIGthcGNzb2zDs2TDsyBhZGF0IGVsIGZvZyBWRVNaTkkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnVmFsw7NiYW4gdMO2csO2bG5pIHN6ZXJldG7DqSBlenQgYSB2w6FsYXN6dD8nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnRWd5IGvDqXJkxZHDrXYgbW9kdWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdFZ3kgbW9kdWwgYSBrw6lyZMWRw612IGvDqXJkw6lzZWluZWsgc3plcmtlc3p0w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7Zzc3plcyBwYXJhbcOpdGVyIGEga8OpcmTFkcOtdiBvYmpla3R1bWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ0EgbmFwb2sgc3rDoW1hIGVneSBvbHlhbiBrw6lyZMWRw612IGxldsOpbCBraWvDvGxkw6lzZSB1dMOhbiwgYW1lbHliZW4gbmluY3NlbmVrIMO6aiBrw6lyZMWRw612IGvDqXLDqXNlayBlbGvDvGxkdmUgdWd5YW5hbm5hayBheiDDvGd5ZsOpbG5lay4gQSAwIHbDoWxhc3p0w6FzYSBtaW5kaWcgZWwgZm9namEga8O8bGRlbmkgYSBrw6lyZMWRw612IGxldmVsZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lmZWxla25layBheiDDumoga8OpcmTFkcOtdnZlbCBrYXBjc29sYXRiYW4gZWxrw7xsZMO2dHQgw6lydGVzw610xZEgZS1tYWlsIGFsYXDDqXJ0ZWxtZXpldHQgdMO2cnpzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdBeiDDvGd5ZmVsZWtuZWsgYXogw7pqIGvDqXJkxZHDrXZ2ZWwga2FwY3NvbGF0YmFuIGVsa8O8bGTDtnR0IMOpcnRlc8OtdMWRIGUtbWFpbCBhbGFww6lydGVsbWV6ZXR0IGvDvGxkxZFqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnQXogw7xneWZlbGVrbmVrIGF6IMO6aiBrw6lyZMWRw612dmVsIGthcGNzb2xhdGJhbiBlbGvDvGxkw7Z0dCDDqXJ0ZXPDrXTFkSBlLW1haWwgYWxhcMOpcnRlbG1lemV0dCB0w6FyZ3lhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICdFZ3kgw6F0dGVraW50xZEgbW9kdWx0IGhhdMOhcm96IG1lZyBlZ3kga8OpcmTFkcOtdmxpc3RhIGtpcyBuw6l6ZXTDqW5layBtZWdqZWxlbsOtdMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6b2thdCBhIGNzb3BvcnRva2F0LCBhbWVseWVrbmVrIGpvZ29zdWx0c8OhZ2EgdmFuIGEga8OpcmTFkcOtdiDDoWxsYXBvdMOhbmFrIG1lZ3bDoWx0b3p0YXTDoXPDoXJhLiBBbGFww6lydGVsbWV6ZXR0ZW4gYSB0w7ZtYiDDvHJlcywgw6lzIGF6IMO8Z3lpbnTDqXrFkWsgYXogw7Zzc3plcyBjc29wb3J0YsOzbCBtZWd2w6FsdG96dGF0aGF0asOhayBhIGvDqXJkxZHDrXYgw6FsbGFwb3TDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSwgaG9neSBhIGvDqXJkxZHDrXYga8OpcsOpc2VrIGNzYWsgdmFsw7NkaSDDvGd5ZmVsZWtuZWsgbGVneWVuZWsga2lrw7xsZHZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIGvDqXJkxZHDrXZlayBsZWduYWd5b2JiIG1lbm55aXPDqWfDqXQsIGFtZWx5ZXQgMzAgbmFwb250YSBlbGvDvGxkaGV0bmVrIGVneSDDvGd5ZsOpbG5layAoYSAwIGF6dCBqZWxlbnRpLCBob2d5IG5pbmNzIG1heGltdW0sIG1pbmRlbiBrw6lyZMWRw612IGvDqXLDqXMgZWxrw7xsZMOpc3JlIGtlcsO8bCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6dCBhIG1lbm55aXPDqWdldCDDs3LDoWJhbiwgYW3DrWcgYSBqZWd5ZXQgbGUga2VsbCB6w6FybmksIGhvZ3kgYWt0aXbDoWxqYSBhIGvDqXJkxZHDrXYga2lrw7xsZMOpc8OpdCAoYSAwIGplbGVudMOpc2UsIGhvZ3kgYXpvbm5hbCBrw7xsZGplIGEgbGV6w6Fyw6FzIHV0w6FuKS4gTWVnamVneXrDqXM6IGEga8Opc2xlbHRldGV0dCBrw6lyZMWRw612IGtpa8O8bGTDqXPDqXQgYXogT1RSUyBkw6ltb24gdsOpZ3ppIGVsIGEg4oCeRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmTigJ0gYmXDoWxsw610w6FzIGVsxZF6ZXRlcyBiZWthcGNzb2zDoXNhIHV0w6FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IG9zemxvcG9rYXQgYSBsZWfDtnJkw7xsxZEgbGlzdMOhbsOhbCBhIGvDvGxkw6lzaSBmZWx0w6l0ZWxlayDDtnNzemXDoWxsw610w6Fzw6Fob3ogKDAgPT4gaW5ha3TDrXYsIDEgPT4gYWt0w612KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIFJpY2ggVGV4dCBuw6l6ZXRlayBhbGFww6lydGVsbWV6ZXR0IG1hZ2Fzc8OhZ8OhdCBhIGvDqXJkxZHDrXYgbmFnecOtdMOhcyBlbGVtZWtuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICdNZWdoYXTDoXJvenphIGF6b2thdCBhIGNzb3BvcnRva2F0ICjDrXLDoXMsIG9sdmFzw6FzKSwgYW1lbHllayB0w7Zyw7ZsaGV0aWsgYSBrw6lyZMWRw612IHN0YXRpc3p0aWvDoWthdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIFJpY2ggVGV4dCBuw6l6ZXRlayBsZWduYWd5b2JiIG1hZ2Fzc8OhZ8OhdCBhIGvDqXJkxZHDrXYgbmFnecOtdMOhcyBlbGVtZWtuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIG1lZ2plbGVuw610ZXR0IG9zemxvcG9rYXQgYSBrw6lyZMWRw612IMOhdHRla2ludMWRYmVuLiBFbm5layBhIGJlw6FsbMOtdMOhc25hayBuaW5jcyBoYXTDoXNhIGF6IG9zemxvcG9rIGhlbHl6ZXTDqXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSwgaG9neSBhIHN0YXRpc3p0aWthIG1vZHVsIGVsxZHDoWxsw610aGF0LWUga8OpcmTFkcOtdmxpc3TDoWthdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICdLw6lyZMWRw612IMOhbHRhbMOhbm9zIGluZm9ybcOhY2nDs2luYWsgc3plcmtlc3p0w6lzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ0vDqXJkxZHDrXYga8OpcmTDqXNlayBzemVya2VzenTDqXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICdBIHN6YXZhesOhc2kgYWRhdG9rIG1lZ2plbGVuw610w6lzZSBrw6lwZXJuecWRIGVuZ2Vkw6lseWV6w6lzZSB2YWd5IGxldGlsdMOhc2EgYSBueWlsdsOhbm9zIGZlbMO8bGV0ZW4gZWd5IGFkb3R0IGvDqXJkxZHDrXZlcmVkbcOpbnkgYWRhdGFpbmFrIG1lZ2plbGVuw610w6lzw6loZXosIGFtaWtvciBheiDDvGd5ZsOpbCBtw6Fzb2Rzem9yIHByw7Niw6FsIG1lZyB2w6FsYXN6b2xuaSBhIGvDqXJkxZHDrXZyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICdBIGvDvGxkw6lzaSBmZWx0w6l0ZWwgZWxsZW7FkXJ6w6lzw6luZWsgZW5nZWTDqWx5ZXrDqXNlIHZhZ3kgbGV0aWx0w6FzYSBhIHN6b2xnw6FsdGF0w6FzbsOhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICdBIGvDvGxkw6lzaSBmZWx0w6l0ZWwgZWxsZW7FkXJ6w6lzw6luZWsgZW5nZWTDqWx5ZXrDqXNlIHZhZ3kgbGV0aWx0w6FzYSBhIGplZ3l0w61wdXNuw6FsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFbMWRdMOpdHByb2dyYW0gbW9kdWwgcmVnaXN6dHLDoWNpw7MgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGzDqXbFkSBrw6lyZMWRw612IGhvenrDoWFkw6Fzw6Fob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFbMWRdMOpdHByb2dyYW0gbW9kdWwgcmVnaXN6dHLDoWNpw7MgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGzDqXbFkSBrw6lyZMWRw612IHN6ZXJrZXN6dMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VsxZF0w6l0cHJvZ3JhbSBtb2R1bCByZWdpc3p0csOhY2nDsyBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gbMOpdsWRIGvDqXJkxZHDrXYgc3RhdGlzenRpa8Oha2hvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VsxZF0w6l0cHJvZ3JhbSBtb2R1bCByZWdpc3p0csOhY2nDsyBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gbMOpdsWRIGvDqXJkxZHDrXYgbmFnecOtdMOhc8OhaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnRWzFkXTDqXRwcm9ncmFtIG1vZHVsIHJlZ2lzenRyw6FjacOzIGEgbnlpbHbDoW5vcyBrw6lyZMWRw612IG9iamVrdHVtaG96IGEgbnlpbHbDoW5vcyBrw6lyZMWRw612IHRlcsO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdIYSBleiBhIHJlZ3Vsw6FyaXMga2lmZWplesOpcyBpbGxlc3prZWRpaywgYWtrb3IgYXogw7xneWbDqWxrw6lyZMWRw612IG5lbSBrZXLDvGwga2lrw7xsZMOpc3JlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICdLb3Jsw6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtw6l0ZXJlayBhIGtpcyBrw6lyZMWRw612IMOhdHRla2ludMWRIG9sZGFsYWlob3ogKGFtZWx5ZWtiZW4gYSBrw6lyZMWRw612ZWsgbWVnamVsZW5uZWspLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ055aWx2w6Fub3Mga8OpcmTFkcOtdi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnQSBiZcOhbGzDrXRvdHQgbmFwb2sgc3rDoW3DoW7DoWwgcsOpZ2ViYmkgZXJlZG3DqW55ZWsgdMO2cmzDqXNyZSBrZXLDvGxuZWsuIE1lZ2plZ3l6w6lzOiBheiBlcmVkbcOpbnllayB0w7ZybMOpc8OpdCBheiBPVFJTIGTDqW1vbiB2w6lnemkgZWwgYSDigJ5UYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGXigJ0gYmXDoWxsw610w6FzIGFrdGl2w6Fsw6FzYSBlbMWRdHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gZWd5IGvDqXJkxZHDrXYgc3plcmtlc3p0w6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBhIGvDqXJkxZHDrXYga8OpcmTDqXNlaW5layBzemVya2VzenTDqXPDqWhleiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gYXogZWxlbSBuYWd5w610w6FzaSBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrw6lyZMWRw612IG5hZ3nDrXTDoXNpIG7DqXpldMOpYmUgdmFsw7Mgdmlzc3phdMOpcsOpc2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBrw6lyZMWRw612IHN0YXRpc3p0aWthIHLDqXN6bGV0ZWliZSB2YWzDsyBuYWd5w610w6FzaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbiBheiBlbGVtIG5hZ3nDrXTDoXNpIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnU3RhdGlzenRpa8OhayByw6lzemxldGVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ0vDqXJkxZHDrXYgaG96esOhYWTDoXMgbW9kdWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICdLw6lyZMWRw612IHN6ZXJrZXN6dMOpcyBtb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdLw6lyZMWRw612IMOhdHRla2ludMWRIOKAnmtpc+KAnSBrb3Jsw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnS8OpcmTFkcOtdiBzdGF0aXN6dGlrw6FrIG1vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnS8OpcmTFkcOtdiBuYWd5w610w6FzIG1vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJ09sZGFsYW5rw6ludGkga8OpcmTFkcOtdiBrb3Jsw6F0IGEg4oCea2lz4oCdIGvDqXJkxZHDrXYgw6F0dGVraW50xZFuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ0Ega8OpcmTFkcOtdmVrIG5lbSBrZXLDvGxuZWsgZWxrw7xsZMOpc3JlIGEgYmXDoWxsw610b3R0IGUtbWFpbCBjw61tZWtyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ0VneSBrw6lyZMWRw612IGF6b25vc8OtdMOzamEsIHDDqWxkw6F1bCBTdXJ2ZXkjLCBNeVN1cnZleSMuIEF6IGFsYXDDqXJ0ZWxtZXpldHQ6IFN1cnZleSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnSmVneSBlc2Vtw6lueSBtb2R1bCBhdXRvbWF0aWt1cyBrw6lyZMWRw612IGUtbWFpbCBrw6lyw6lzZWsga8O8bGTDqXPDqWhleiBheiDDvGd5ZmVsZWtuZWssIGhhIGVneSBqZWd5IGxlIHZhbiB6w6FydmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICdUw7ZybMOpc2kgZXJlZG3DqW55ZWsgYWt0aXbDoWzDoXNhIChiZWxlw6lydHZlIGEgc3phdmF6YXRpIGFkYXRva2F0IMOpcyBrw6lyw6lzZWtldCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICdLw6lzbGVsdGV0ZXR0IGvDqXJkxZHDrXZrw6lyw6lzZWsga8O8bGTDqXPDqW5layBha3RpdsOhbMOhc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnTmFnecOtdMOhcyBhIHN0YXRpc3p0aWvDoWsgcsOpc3psZXRlaWJlLic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmlkX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0J1YXQgc3VydmV5IGJhcnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnUGVuZ2FudGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdLZXRhIHBlbmdhbnRhciBzdXJ2ZXkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnSXNpIG5vdGlmaWthc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnVGlwZS10aXBlIHRpa2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnRGVza3JpcHNpIGludGVybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdVYmFoIGluZm9ybWFzaSB1bXVtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnVWJhaCBwZXJ0YW55YWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJ0FuZGEgYmVyYWRhIGRpc2luaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnUGVydGFueWFhbiBzdXJ2ZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnVGFtYmFoIHBlcnRhbnlhYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnS2V0aWsgcGVydGFueWFhbm55YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnSmF3YWJhbiBkaWJ1dHVoa2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ1RpZGFrIGFkYSBwZXJ0YW55YWFuIHlhbmcgZGkgc2ltcGFuIHVudHVrIHN1cnZleSBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnUGVydGFueWFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdKYXdhYmFuIGRpYnV0dWhrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hlbiB5b3UgZmluaXNoIHRvIGVkaXQgdGhlIHN1cnZleSBxdWVzdGlvbnMganVzdCBjbG9zZSB0aGlzIHNjcmVlbi4nfSA9CiAgICAgICAgJ0tldGlrYSBhbmRhIHNlbGVzYWkgbWVuZ3ViYWggcGVydGFueWFhbiBzdXJ2ZXkgaW5pLCBzaWxhaGthbiB0dXR1cCB0YW1waWxhbiBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdVYmFoIHBlcnRhbnlhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICdLZW1iYWxpIGtlIHBlcnRhbnlhYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJ1BlcnRhbnlhYW46ICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ0phd2FiYW4geWFuZyBtZW11bmdraW5rYW4gdW50dWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ1RhbWJhaCBqYXdhYmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnVGlkYWsgYWRhIGphd2FiYW4geWFuZyBkaSBzaW1wYW4gdW50dWsgcGVydGFueWFhbiBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ1RpZGFrIG1lbWlsaWtpIGJlYmVyYXBhIGphd2FiYW4sIGJpZGFuZ3Rla3MgYWthbiBkaSB0YW1waWxrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAndWJhaCBqYXdhYmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ0tlbWJhbGkga2UgdWJhaCBwZXJ0YW55YWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICdKYXdhYmFuOic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJ0p1bWxhaCBtYWtzaW1hbCBzdXJ2ZXkgeWFuZyBkaSB0YW1waWxrYW4gcGVyIGhhbGFtYW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdQZW5naXJpbSBub3RpZmlrYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ1N1YmplayBub3RpZmlrYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdkaXViYWggb2xlaCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICdHYW1iYXJhbiBzdGF0dXMgZGFyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ1RhYmVsIHBlcm1pbnRhYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnV2FrdHUgcGVuZ2lyaW1hbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnV2FrdHUgcGVtaWxpaGFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnTGloYXQgcmluY2lhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ1JpbmNpYW4gc3RhdHVzIHN1cnZleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAnS2VtYmFsaSBrZSBnYW1iYXJhbiBzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXNpIHN1cnZleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnUGVybWludGFhbiB5YW5nIHRlbGFoIGRpa2lyaW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ1N1cnZleSB5YW5nIGRpdGVyaW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnUmluY2lhbiBzdXJ2ZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnTGF5YW5hbiB0aWtldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ0dyYWZpayBoYXNpbCBzdXJ2ZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJ1RpZGFrIGFkYSBoYXNpbCBzdGF0JzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ1N1cnZleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ01vaG9uIGphd2FiIHBlcnRhbnlhYW4gYmVyaWt1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnVGFtcGlsa2FuIGphd2FiYW4gc2F5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnQmVyaWt1dCBpbmkgYWRhbGFoIGphd2FiYW4gYW5kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdKdWR1bCBzdXJ2ZXknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ1RhbWJhaGthbiBzdXJ2ZXkgYmFydSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnVWJhaCBzdXJ2ZXknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ1ViYWggcGVydGFueWFhbiBzdXJ2ZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnWWEvVGlkYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnUmFkaW8gKGRhZnRhciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnS290YWsgY2VudGFuZyAoZGFmdGFyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ1RpcGUgcGVydGFueWFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ0xlbmdrYXAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdUaWRhayBsZW5na2FwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnVWJhaCBwZXJ0YW55YWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnVWJhaCBqYXdhYmFuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ0dhbWJhcmFuIHN0YXR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3Igc3RhdHMgZGV0YWlsISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICdSaW5jaWFuIFN0YXR1cyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ1RpZGFrIGRhcGF0IG1lbWJ1YXQgc3RhdHVzIGJhcnUhICBUaWRhayBhZGEgcGVydGFueWFhbiB5YW5nIGRpIGRlZmluaXNpa2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICdTdGF0dXMgZGl1YmFoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0gVGlkYWsgYWRhIGFudHJpYW4geWFuZyBkaXBpbGloIC0gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctIE1lbmd1YmFoIFN0YXR1cyAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ0luZHVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICdUaWRhayB2YWxpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnU3RhdHVzIGJhcnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnRGVza3JpcHNpIHN1cnZleS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdUZXJqYXdhYic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICdCZWx1bSBkaWphd2FiJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdUZXJpbWEga2FzaWggYXRhcyB0YW5nZ2FwYW4gYW5kYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICdTdXJ2ZXkgdGVsYWggc2VsZXNhaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnQW5kYSB0ZWxhaCBtZW5qYXdhYiBzdXJ2ZXkgaW5pLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnQXBha2FoIGFuZGEgeWFraW4gaW5naW4gbWVuZ2hhcHVzIHBlcnRhbnlhYW4gaW5pPyBTRU1VQSBkYXRhIHlhbmcgYmVyaHVidW5nYW4gYWthbiBISUxBTkchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnQXBha2FoIGFuZGEgeWFraW4gaW5naW4gbWVuZ2hhcHVzIGphd2FiYW4gaW5pPyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdTZWJ1YWggbW9kdWwgc3VydmV5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdTZWJ1YWggbW9kdWwgdW50dWsgbWVuZ3ViYWggamF3YWJhbiBzdXJ2ZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZW11YSBwYXJhbWV0ZXIgdW50dWsgb2JqZWsgc3VydmV5IGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdKdW1sYWggaGFyaSBzZXRlbGFoIG1lbmdpcmlta2FuIHN1cmF0IHN1cnZleSBkaW1hbmEgdGlkYWsgYWRhIHBlbmdpcmltYW4gc3VydmV5IGJhcnUga2VwYWRhIHBlbGFuZ2dhbiB5YW5nIHNhbWEuIE1lbWlsaWggMCBha2FuIHNlbGFsdSBtZW5naXJpbWthbiBzdXJhdCBzdXJ2ZXkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0lzaSBkZWZhdWx0IHVudHVrIGVtYWlsIHBlbWJlcml0YWh1YW4gdGVudGFuZyBzdXJ2ZXkgYmFydSBrZXBhZGEgcGVsYW5nZ2FuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1BlbmdpcmltIGRlZmF1bHQgdW50dWsgZW1haWwgcGVtYmVyaXRhaHVhbiB0ZW50YW5nIHN1cnZleSBiYXJ1IGtlcGFkYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1N1YmplY3QgZGVmYXVsdCB1bnR1ayBlbWFpbCBwZW1iZXJpdGFodWFuIHRlbnRhbmcgc3VydmV5IGJhcnUga2VwYWRhIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pc2lrYW4gZ2FtYmFyYW4gbW9kdWwgdW50dWsgbWVuYW1waWxrYW4gdGFtcGlsYW4ga2VjaWwgZGFmdGFyIHN1cnZleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ0RlZmluaXNpa2FuIEp1bWxhaCBzdXJ2ZXkgbWFrc2ltdW0geWFuZyBkaWtpcmlta2FuIGtlcGFkYSBwZWxhbmdnYW4gcGVyIDMwIGhhcmkuICggMCBiZXJhcnRpIHRpZGFrIGFkYSBiYXRhcyBtYWtzaW11bSwgc2VtdWEgcGVybWludGFhbiBzdXJ2ZXkgYWthbiBkaWtpcmltKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5pc2lrYW4gdGluZ2dpIGRlZmF1bHQgdW50dWsgdGFtcGlsYW4gUmljaHRleHQgdW50dWsgZWxlbWVuIFN1cnZleVpvb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnRGVmaW5pc2lrYW4ga29sb20geWFuZyBkaSB0YW1waWxrYW4gcGFkYSBnYW1iYXJhbiBzdXJ2ZXkuIFBpbGloYW4gaW5pIHRpZGFrIG1lbWlsaWtpIGVmZWsgcGFkYSBwb3Npc2kga29sb20gdGVyc2VidXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICdha3RpZiBhdGF1IG5vbi1ha3RpZmthbiBsYXlhciBTaG93Vm90ZURhdGEgcGFkYSBhbnRhcm11a2EgdW11bSB1bnR1ayBtZW5hbXBpbGthbiBkYXRhIGRhcmkgaGFzaWwgc3VydmV5IHNwZXNpZmlrIGtldGlrYSBwZWxhbmdnYW4gbWVuY3ViYSB1bnR1ayBtZW5qYXdhYiBzdXJ2ZXkga2VkdWEga2FsaW55YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICdBa3RpZiBhdGF1IG5vbi1ha3RpZmthbiBwZW1lcmlrc2FhbiBrb25kaXNpIHBlbmdpcmltYW4gdW50dWsgbGF5YW5hbiB0ZXJzZWJ1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICdBa3RpZiBhdGF1IG5vbi1ha3RpZmthbiBwZW1lcmlrc2FhbiBrb25kaXNpIHBlbmdpcmltYW4gdW50dWsgdGlwZSB0aWtldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVuZGFmdGFyYW4gbW9kdWwgZnJvbnRlbmQgIHVudHVrIG1lbmFtYmFoIHN1cnZleSBkaSBhbnRhcm11a2EgYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVuZGFmdGFyYW4gbW9kdWwgZnJvbnRlbmQgIHVudHVrIG1lbmd1YmFoIHN1cnZleSBkaSBhbnRhcm11a2EgYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BlbmRhZnRhcmFuIG1vZHVsIGZyb250ZW5kICB1bnR1ayBzdGF0cyBzdXJ2ZXkgZGkgYW50YXJtdWthIGFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BlbmRhZnRhcmFuIG1vZHVsIGZyb250ZW5kICB1bnR1ayB6b29tIHN1cnZleSBkaSBhbnRhcm11a2EgYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnUGVuZGFmdGFyYW4gbW9kdWwgZnJvbnRlbmQgIHVudHVrIG9iamVrIFB1YmxpY1N1cnZleSBkaSBhcmVhIHN1cnZleS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ0ppa2EgcmVnZXggaW5pIGNvY29rLCBtYWthIHRpZGFrIGFkYSBzdXJ2ZXkgcGVsYW5nZ2FuIHlhbmcgYWthbiBkaSBraXJpbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGhhbGFtYW4gKGRpbWFuYSBzdXJ2ZXkgdGVyc2VidXQgZGkgdGFtcGlsa2FuKSBnYW1iYXJhbiBrZWNpbCBzdXJ2ZXkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnU3VydmV5IHVtdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbXBpbGthbiB0YXV0YW4gcGFkYSBtZW51IHVudHVrIG1lbmd1YmFoIHN1cnZleSBwYWRhIHRhbXBpbGFuIHpvb21ueWEgZGkgYW50YXIgbXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbXBpbGthbiB0YXV0YW4gcGFkYSBtZW51IHVudHVrIG1lbmd1YmFoIHBlcnRhbnlhYW4gc3VydmV5IHBhZGEgdGFtcGlsYW4gem9vbW55YSBkaSBhbnRhciBtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1waWxrYW4gdGF1dGFuIHBhZGEgbWVudSB1bnR1ayBrZW1iYWxpIHBhZGEgdGFtcGlsYW4gem9vbSBzdXJ2ZXkgZGkgYW50YXIgbXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbXBpbGthbiB0YXV0YW4gcGFkYSBtZW51IHVudHVrIHpvb20ga2UgcmluY2lhbiBzdGF0aXN0aWsgc3VydmV5IHBhZGEgdGFtcGlsYW4gem9vbW55YSBkaSBhbnRhciBtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdSaW5jaWFuIFN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICdNb2R1bCBtZW5hbWJhaCBzdXJ2ZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ01vZHVsIG1lbmd1YmFoIHN1cnZleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0dhbWJhcmFuIGJhdGFzICJLZWNpbCIgc3VydmV5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnTW9kdWwgc3RhdGlzdGlrIHN1cnZleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnTW9kdWwgem9vbSBzdXJ2ZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICdTdXJ2ZXkgdGlkYWsgYWthbiBkaSBraXJpbSBrZXBhZGEgYWxhbWF0IGVtYWlsIHlhbmcgdGVsYWggZGkga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ1BlbmdpZGVudGlmaWthc2kgdW50dWsgc3VydmV5LCBtaXNhbG55YSBTdXJ2ZXkjLCBNeVN1cnZleSMuIFNlY2FyYSBkZWZhdWx0bnlhIFN1cnZleSMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICdNb2R1bCB0aWtldCBwZXJpc3Rpd2EgdW50dWsgc2VjYXJhIG90b21hdGlzIG1lbmdpcmlta2FuIHBlcm1pbnRhYW4gZW1haWwgc3VydmV5IGtlcGFkYSBwZWxhbmdnYW4gamlrYSB0aWtldCB0ZWxhaCBkaXR1dHVwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICdNdWxhaSBwZW5naXJpbWFuIHBlcm1pbnRhYW4gc3VydmV5IHlhbmcgeWFuZyBkaXR1bmRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Oml0X1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0NyZWF6aW9uZSBudW92byBzb25kYWdnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1emlvbmUgZGVsIHNvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ0NvcnBvIGRlbCBzb25kYWdnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnVGlwaSB0aWNrZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcml6aW9uZSBhZCB1c28gaW50ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnTW9kaWZpY2EgbGUgaW5mb3JtYXppb25pIGdlbmVyYWxpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnTW9kaWZpY2EgbGUgZG9tYW5kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdTZWkgcXVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdWb2NpIGRlbCBTb25kYWdnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnQWdnaXVuZ2kgZG9tYW5kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ0luc2VyaXNjaSBsYSBkb21hbmRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ1Jpc3Bvc3RhIHJpY2hpZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ05vbiBjaSBzb25vIHZvY2kgcGVyIHF1ZXN0byBzb25kYWdnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdEb21hbmRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ1Jpc3Bvc3RhIHJpY2hpZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnUXVhbmRvIGNvbXBsZXRpIGxhIG1vZGlmaWNhIGRlbGxlIGRvbWFuZGUgZGVsIHNvbmRhZ2dpbywgYmFzdGEgY2hpdWRlcmUgcXVlc3RhIHNjaGVybWF0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ01vZGlmaWNhIGRvbWFuZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICdSaXRvcm5hIGFsbGUgZG9tYW5kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICdEb21hbmRhOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ1Bvc3NpYmlsaSByaXNwb3N0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnQWdnaXVuZ2kgcmlzcG9zdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdOZXNzdW5hIHJpc3Bvc3RhIHNhbHZhdGEgcGVyIHF1ZXN0YSBkb21hbmRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnTm9uIHNvbm8gcHJldmlzdGUgcmlzcG9zdGUgbXVsdGlwbGUsIGlsIGRlc3RpbmF0YXJpbyBpbnNlcmlzY2UgZGVsIHRlc3RvIGxpYmVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ01vZGlmaWNhIHJpc3Bvc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ1JpdG9ybmEgYSBtb2RpZmljYXJlIGxlIGRvbWFuZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ1Jpc3Bvc3RhOic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJ05lc3N1bmEgcmVzdHJpemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICdOdW1lcm8gbWFzc2ltbyBkaSBzb25kYWdnaSBwZXIgcGFnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdNaXR0ZW50ZSBkZWwgc29uZGFnZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnT2dnZXR0byBkZWwgc29uZGFnZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNb2RpZmljYXRvIGRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ1JpZXBpbG9nbyBzdGF0aXN0aWNoZSBkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ1RhYmVsbGEgZGVsbGUgcmljaGllc3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnRGF0YSBlIE9yYSBkaSBpbnZpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdEYXRhIGUgT3JhIGRpIGNvbXBpbGF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnVmVkaSBpIGRldHRhZ2xpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnRGV0dGFnbGkgc3RhdGlzdGljaSBzdWwgU29uZGFnZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICdSaXRvcm5hIGFsbGUgc3RhdGlzdGljaGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXppb25pIHN1bCBzb25kYWdnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ1NvbmRhZ2dpIGludmlhdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ1NvbmRhZ2dpIHJpY2V2dXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnRGV0dGFnbGkgc3VsIHNvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICdTZXJ2aXppIHRpY2tldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ0dyYWZpY2kgc3VsIHNvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnTm9uIGNpIHNvbm8gcmlzdWx0YXRpIGRhIG1vc3RyYXJlJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ1NvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ1RpIGNoaWVkaWFtbywgY29ydGVzZW1lbnRlLCBkaSByaXNwb25kZXJlIGEgcXVlc3RlIGRvbWFuZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnTW9zdHJhIGxlIG1pZSByaXNwb3N0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnUXVlc3RlIHNvbm8gbGUgdHVlIHJpc3Bvc3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ1RpdG9sbyBkZWwgc29uZGFnZ2lvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICdBZ2dpdW5naSBudW92byBzb25kYWdnaW8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnTm9uIGhhaSBpIHBlcm1lc3NpIHBlciBxdWVzdG8gU29uZGFnZ2lvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICdOb24gw6ggc3RhdG8gc3BlY2lmaWNhdG8gdW4gU3VydmV5SUQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdNb2RpZmljYSBTb25kYWdnaW8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ01vZGlmaWNhIGxlIGRvbWFuZGUgZGVsIHNvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdTw6wvTm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnUmFkaW8gKGVsZW5jbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnQ2FzZWxsYSBkaSBzZWxlemlvbmUgKGVsZW5jbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICdUaXBvIGRpIGRvbWFuZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdTb25kYWdnaSBjb21wbGV0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnU29uZGFnZ2kgaW5jb21wbGV0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnTW9kaWZpY2EgZG9tYW5kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ01vZGlmaWNhIHJpc3Bvc3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ1Jpc3VsdGF0aSBzdGF0aXN0aWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAnRGV0dGFnbGlvIHN0YXRpc3RpY2hlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAnSW1wb3NzaWJpbGUgaW1wb3N0YXJlIGlsIG51b3ZvIHN0YXRvISBOZXNzdW5hIGRvbWFuZGEgZGVmaW5pdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ1N0YXRvIGNhbWJpYXRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctIE5lc3N1bmEgY29kYSBzZWxlemlvbmF0YSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJy0gTmVzc3VuYSB0aXBvbG9naWEgZGkgdGlja2V0IHNlbGV6aW9uYXRhIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gQ2hhbmdlIFN0YXR1cyAtJ30gPSAnLSBDYW1iaWEgc3RhdG8gLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICdQcmluY2lwYWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICdOb24gdmFsaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICdOdW92byBzdGF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdEZXNjcml6aW9uZSBkZWwgc29uZGFnZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAncmlzcG9zdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnbm9uIHJpc3Bvc3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdHcmF6aWUgcGVyIGlsIHR1byByaXNjb250cm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnSWwgc29uZGFnZ2lvIMOoIHRlcm1pbmF0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnSGFpIGdpw6AgcmlzcG9zdG8gYWwgc29uZGFnZ2lvLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnVnVvaSBkYXZ2ZXJvIGVsaW1pbmFyZSBxdWVzdGEgZG9tYW5kYT8gVFVUVEkgaSBkYXRpIGFzc29jaWF0aSBzYXJhbm5vIFBFUlNJISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ1Z1b2kgZGF2dmVybyBlbGltaW5hcmUgcXVlc3RhIHJpc3Bvc3RhPyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdVbiBtb2R1bG8gcGVyIGkgc29uZGFnZ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdVbiBtb2R1bG8gcGVyIG1vZGlmaWNhcmUgbGUgZG9tYW5kZSBkZWkgc29uZGFnZ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVHV0dGkgaSBwYXJhbWV0cmkgZGVsIHNvbmRhZ2dpbyBuZWxsXCdpbnRlcmZhY2NpYSBBZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ051bWVybyBkaSBnaW9ybmkgZG9wbyBsXCdpbnZpbyBkaSB1biBzb25nZ2lvIGluIGN1aSBub24gdmVycmFubm8gaW52aWF0ZSBudW92ZSByaWNoaWVzdGUgYWxsbyBzdGVzc28gY2xpZW50ZSAoMCBpbnZpZXLDoCBpIHNvbmRhZ2dpIHNlbXByZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NvcnBvIGRlbCB0ZXN0byBkaSBkZWZhdWx0IHBlciBsYSBub3RpZmljYSB2aWEgZW1haWwgYWwgY2xpZW50ZSByaWd1YXJkbyB1biBudW92byBzb25kYWdnaW8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnTWl0dGVudGUgZGkgZGVmYXVsdCBwZXIgbGEgbm90aWZpY2EgdmlhIGVtYWlsIGFsIGNsaWVudGUgcmlndWFyZG8gdW4gbnVvdm8gc29uZGFnZ2lvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdPZ2dldHRvIGRpIGRlZmF1bHQgcGVyIGxhIG5vdGlmaWNhIHZpYSBlbWFpbCBhbCBjbGllbnRlIHJpZ3VhcmRvIHVuIG51b3ZvIHNvbmRhZ2dpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pc2NlIGlsIG1vZHVsbyBwZXIgbW9zdHJhcmUgbGEgdmlzdWFsaXp6YXppb25lIGNvbXBhdHRhIGRpIHVuYSBsaXN0YSBkaSBzb25kYWdnaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICdEZWZpbmlzY2kgaWwgbnVtZXJvIG1hc3NpbW8gZGkgc29uZGFnZ2kgY2hlIHBvc3Nvbm8gZXNzZXJlIGludmlhdGkgYWwgY2xpZW50ZSBpbiB1biBpbnRlcnZhbGxvIGRpIDMwIGdpb3JuaSAoMCBpbmRpY2EgdW4gbnVtZXJvIGlsbGltaXRhdG8sIHR1dHRpIGkgc29uZGFnZ2kgc2FyYW5ubyBpbnZpYXRpKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ0RlZmluaXNjaSBpbCBudW1lcm8gZGkgb3JlIGRvcG8gbGEgY2hpdXN1cmEgZGVsIHRpY2tldCBwZXIgbFwnaW52aW8gZGVsIHNvbmRhZ2dpbyAoMCBpbmRpY2EgbFwnaW52aW8gaW1tZWRpYXRvIGRvcG8gbGEgY2hpdXN1cmEpLiBOb3RhOiBsXCdpbnZpbyByaXRhcmRhdG8gZGVpIHNvbmRhZ2dpIHZpZW5lIGVzZWd1aXRvIGRhbCBEYWVtb24gT1RSUyBjb24gbFwnYXR0aXZhemlvbmUgZGVsbGEgcHJlZmVyZW56YSAgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ2FsdGV6emEgZGkgZGVmYXVsdCBwZXIgbGEgdmlzdGEgY29tcGxldGEgcGVyIGdsaSBlbGVtZW50aSBTdXJ2ZXlab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ0FiaWxpdGEgbyBkaXNhYmlsaXRhIGlsIGNvbnRyb2xsbyBkZWxsYSBjb25kaXppb25lIGRpIGludmlvIHBlciBpbCBzZXJ2aXppby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICdBYmlsaXRhIG8gZGlzYWJpbGl0YSBpbCBjb250cm9sbG8gZGVsbGEgY29uZGl6aW9uZSBkaSBpbnZpbyBwZXIgaWwgdGlwbyBkaSB0aWNrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bG8gZGkgcmVnaXN0cmF6aW9uZSBwZXIgaWwgc29uZGFnZ2lvIG5lbGxcJ2FyZWEgQWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnTW9kdWxvIGRpIHJlZ2lzdHJhemlvbmUgcGVyIGlsIHNvbmRhZ2dpbyBuZWxsXCdhcmVhIGRpIFNvbmRhZ2dpIFB1YmJsaWNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnU2UgcXVlc3RhIHNvdHRvc3RyaW5nYSB2aWVuZSByaWNvbm9zY2l1dGEsIGlsIHNvbmRhZ2dpbyBub24gdmllbmUgaW52aWF0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBsYSB2aXN1YWxpenphemlvbmUgImNvbXBhdHRhIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICdTb25kYWdnaW8gcHViYmxpY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnRGV0dGFnbGkgc3RhdGlzdGljaGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnTW9kdWxvIGRpIGFnZ2l1bnRhIGRlaSBzb25kYWdnaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ01vZHVsbyBkaSBtb2RpZmljYSBkZWkgc29uZGFnZ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXRlIHBlciB2aXN1YWxpenphemlvbmUgImNvbXBhdHRhIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNb2R1bG8gZGkgc3RhdGlzdGljaGUgZGVpIHNvbmRhZ2dpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnTW9kdWxvIGRpIHpvb20gcGVyIGkgc29uZGFnZ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnSSBzb25kYWdnaSBub24gc2FyYW5ubyBpbnZpYXRpIGFnbGkgaW5kaXJpenppIGVtYWlsIGNvbmZpZ3VyYXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnSWRlbnRpZmljYXRpdm8gcGVyIGlsIHNvbmRhZ2dpbywgcGVyIGVzZW1waW8gU29uZGFnZ2lvIywgSW5jaGllc3RhIy4gSWwgZGVmYXVsdCBTb25kYWdnaW8jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmphX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ+aWsOimj+OCouODs+OCseODvOODiOOBruS9nOaIkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICfntLnku4vmlocnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ+OCouODs+OCseODvOODiOOBrue0ueS7i+aWhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ+mAmuefpeOBruacrOaWhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICfjg4HjgrHjg4Pjg4jjgr/jgqTjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICflhoXpg6jlkJHjgZHoqqzmmI4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJ+OBiuWuouanmOOBruadoeS7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJ+adoeS7tuOCkui/veWKoOOBmeOCi+OBq+OBr+OAgemhp+WuouODl+ODreODkeODhuOCo+OCkumBuOaKnuOBl+OBpuS4i+OBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJ+WFrOmWi+OCouODs+OCseODvOODiOOCreODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJ+OCouODs+OCseODvOODiOS+iyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ+S4gOiIrOaDheWgseOBrue3qOmbhic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ+izquWVj+OBrue3qOmbhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICfjgYLjgarjgZ/jga7nj77lnKjlnLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ+OCouODs+OCseODvOODiOizquWVjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICfos6rllY/jga7ov73liqAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICfos6rllY/jga7lhaXlipsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAn5Zue562U5b+F6aCI44Gn44GZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAn44GT44Gu44Ki44Oz44Kx44O844OI44Gr5a++44GZ44KL6LOq5ZWP44GM5L+d5a2Y44GV44KM44Gm44GE44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAn6LOq5ZWPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ+WbnuetlOOBjOW/hemgiOOBrumgheebruOBp+OBmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAn44GT44Gu44Ki44Oz44Kx44O844OI44Gu6Kit5ZWP44KS57eo6ZuG44GX44Gf44KJ44CB55S76Z2i44KS6ZaJ44GY44Gm5LiL44GV44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAn44GT44Gu44Km44Kk44Oz44OJ44Km44KS6ZaJ44GY44Gm5LiL44GV44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICfos6rllY/nt6jpm4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICfos6rllY/jgbjmiLvjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAn6Kit5ZWPOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ+mBuOaKnuiCoic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAn5Zue562U44Gu6L+95YqgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAn44GT44Gu6LOq5ZWP44G444Gu5Zue562U44Gv44G+44Gg44GC44KK44G+44Gb44KTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICfjgZPjga7os6rllY/jgavjga/pgbjmip7ogqLjgYzjgYLjgorjgb7jgZvjgpPjgILjg4bjgq3jgrnjg4jjgqjjg6rjgqLjgYzooajnpLrjgZXjgozjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICflm57nrZTjga7nt6jpm4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAn6LOq5ZWP44Gu57eo6ZuG44Gr5oi744KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICflm57nrZQ6JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJ+OCouODs+OCseODvOODiOOBruamguimgeOCquODl+OCt+ODp+ODsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICdOdW1iZXLjgIFUaXRsZeOAgUludHJvZHVjdGlvbuOAgURlc2NyaXB0aW9u44CBTm90aWZpY2F0aW9uU2VuZGVy44CBTm90aWZpY2F0aW9uU3ViamVjdOOAgU5vdGlmaWNhdGlvbkJvZHnjga7lkITlsZ7mgKfjgpLmpJzntKLjgZfjgIHlkIzjgZjlkI3liY3jga7ku5bjga7lsZ7mgKfjgpLjgqrjg7zjg5Djg7zjg6njgqTjg4njgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAn44Ki44Oz44Kx44O844OI5L2c5oiQ5pmC6ZaTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAn5Yi26ZmQ44Gq44GXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICfmnJ/plpPjgavkvZzmiJDjgZXjgozjgZ/jgqLjg7PjgrHjg7zjg4jjga7jgb8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAn44Oa44O844K444GC44Gf44KK44Gu5pyA5aSn5pWwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICfpgJrnn6Xjga7pgIHkv6HogIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICfpgJrnn6Xjga7ku7blkI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ+abtOaWsOiAhSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICfntbHoqIjkuIDopqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICflm57nrZTkuIDopqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJ+WFqOOBpuOBruODquOCr+OCqOOCueODiOOCkumBuOaKnuOBl+OBpuS4i+OBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICfpgIHkv6Hml6XmmYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAn6L+U5L+h5pel5pmCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICfjgZPjga7jg6rjgq/jgqjjgrnjg4jjgpLpgbjmip7jgZfjgabkuIvjgZXjgYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICfoqbPntLDjgpLnorroqo0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAn57Wx6KiI44KS5YmK6ZmkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICfjgqLjg7PjgrHjg7zjg4jntbHoqIjjga7oqbPntLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ+e1seioiOS4gOimp+OBq+aIu+OCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAn5YmN44Gu5oqV56WoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJ+asoeOBruaKleelqCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICfjgqLjg7PjgrHjg7zjg4jjga7mg4XloLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ+mAgeS/oeaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAn6L+U5L+h5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAn44Ki44Oz44Kx44O844OI44Gu6Kmz57SwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ+ODgeOCseODg+ODiOODu+OCteODvOODk+OCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ+OCouODs+OCseODvOODiOe1kOaenOOBruOCsOODqeODlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAn57Wx6KiI57WQ5p6c44GM44GC44KK44G+44Gb44KT44CCJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ+OCouODs+OCseODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ+OBk+OCjOOCieOBruizquWVj+OBq+WbnuetlOOBl+OBpuOBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICfpgY7ljrvjga7lm57nrZTjgpLooajnpLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ+OBk+OCjOOCieOBr+mBjuWOu+OBq+WbnuetlOOBleOCjOOBn+OCguOBruOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICfjgqLjg7PjgrHjg7zjg4jjga7jgr/jgqTjg4jjg6snOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ+aWsOimj+OCouODs+OCseODvOODiOOBrui/veWKoCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICfjgYLjgarjgZ/jga/jgZPjga7jgqLjg7PjgrHjg7zjg4jjga7mqKnpmZDjgYzjgYLjgorjgb7jgZvjgpPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnU3VydmV5SUTjgYzmjIflrprjgZXjgozjgabjgYTjgb7jgZvjgpPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICfjgqLjg7PjgrHjg7zjg4jjga7nt6jpm4YnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAn44GC44Gq44Gf44Gv44GT44Gu44Ki44Oz44Kx44O844OI44KE6LOq5ZWP44Gu5qip6ZmQ44GM44GC44KK44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAn44GC44Gq44Gf44Gv44GT44Gu44Ki44Oz44Kx44O844OI44CB6LOq5ZWP44CB44G+44Gf44Gv5Zue562U44Gu5qip6ZmQ44GM44GC44KK44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ+OCouODs+OCseODvOODiOOBruizquWVj+OCkue3qOmbhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICfjga/jgYQv44GE44GE44GIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ+ODqeOCuOOCquODnOOCv+ODsyAo5LiA6KanKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICfjg4Hjgqfjg4Pjgq/jg5zjg4Pjgq/jgrkgKOS4gOimpyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAn44ON44OD44OI44O744OX44Ot44Oi44O844K/44O844O744K544Kz44KiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICfos6rllY/jgr/jgqTjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICflrozmiJAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ+acquWujOaIkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAn6LOq5ZWP44Gu57eo6ZuGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAn5Zue562U44Gu57eo6ZuGJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ+e1seioiOS4gOimpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ+e1seioiOOBruips+e0sCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ+aWsOOBl+OBhOeKtuaFi+OCkuioreWumuOBp+OBjeOBvuOBm+OCkyEg6LOq5ZWP44GM5a6a576p44GV44KM44Gm44GE44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ+eKtuaFi+OBjOWkieabtOOBleOCjOOBvuOBl+OBn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICfjgq3jg6Xjg7zjgYzpgbjmip7jgZXjgozjgabjgYTjgb7jgZvjgpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHNlcnZpY2Ugc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0g44K544OG44O844K/44K55aSJ5pu0IC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAn44Oe44K544K/44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICfnhKHlirknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ+aWsOOBl+OBhOeKtuazgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICfjgqLjg7PjgrHjg7zjg4jjga7oqqzmmI4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICflm57nrZTjgYLjgoonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAn5Zue562U44Gq44GXJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICfjg5XjgqPjg7zjg4njg5Djg4Pjgq/jgYTjgZ/jgaDjgY3jgYLjgorjgYzjgajjgYbjgZTjgZbjgYTjgb7jgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICfjgqLjg7PjgrHjg7zjg4jjgYzlrozkuobjgZfjgb7jgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAn44Ki44Oz44Kx44O844OI44Gu44Oh44OD44K744O844K4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAn44Oi44K444Ol44O844Or44GM5pyJ5Yq544Gr44Gq44Gj44Gm44GE44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAn44GT44Gu5qmf6IO944Gv5pyJ5Yq544Gr44Gq44Gj44Gm44GE44G+44Gb44KT44CC566h55CG6ICF44Gr6YCj57Wh44GX44Gm5LiL44GV44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICfoqr/mn7vjga7jgqjjg6njg7zvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJ+OCouODs+OCseODvOODiOODu+OCreODvOOBjOeEoeWKueOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAn5oy/5YWl44GV44KM44Gf44Ki44Oz44Kx44O844OI44O744Kt44O844Gv54Sh5Yq544Gn44GZ44CC44Oq44Oz44Kv44KS44Gf44Gp44Gj44Gf5aC05ZCI44CB44GT44KM44Gv5pmC5Luj6YGF44KM44Gn44GC44KL44GL56C05pCN44GX44Gm44GE44KL5Y+v6IO95oCn44GM44GC44KK44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAn44Ki44Oz44Kx44O844OI5oqV56WoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICfjgqLjg7PjgrHjg7zjg4jmipXnpajjg4fjg7zjgr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ+OCouODs+OCseODvOODiOOBq+WbnuetlOa4iOOBv+OBp+OBmeOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAn44Ki44Oz44Kx44O844OI44O744Oq44K544OIJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAn44GT44Gu6LOq5ZWP44KS5pys5b2T44Gr5YmK6Zmk44GX44Gm44KC44GE44GE44Gn44GZ44GL77yf44CA6Zai6YCj44GX44Gm44GE44KL44GZ44G544Gm44Gu44OH44O844K/44O844GM5aSx44KP44KM44G+44GZISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ+acrOW9k+OBq+OBk+OBruetlOOBiOOCkuWJiumZpOOBl+OBpuOCguOBhOOBhOOBp+OBmeOBi++8nyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICfjgqLjg7PjgrHjg7zjg4jjg7vjg6Ljgrjjg6Xjg7zjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ+OCouODs+OCseODvOODiOizquWVj+OCkue3qOmbhuOBmeOCi+ODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBq+OBiuOBkeOCi+OCouODs+OCseODvOODiOODu+OCquODluOCuOOCp+OCr+ODiOOBq+WvvuOBmeOCi+WFqOOBpuOBruODkeODqeODoeODvOOCvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICfjgqLjg7PjgrHjg7zjg4jjg6Hjg7zjg6vjgpLpgIHkv6HjgZfjgZ/lvozjgIHlkIzjgZjpoaflrqLjgavmlrDjgZfjgYToqr/mn7vopoHmsYLjgYzpgIHkv6HjgZXjgozjgarjgYTml6XmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn5paw44GX44GE44Ki44Oz44Kx44O844OI44Gr44Gk44GE44Gm6aGn5a6i44Gr6YCa55+l44GZ44KL44Oh44O844Or44Gu5pys5paH44Gu44OH44OV44Kp44Or44OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn5paw44GX44GE44Ki44Oz44Kx44O844OI44KS44Gr44Gk44GE44Gm6aGn5a6i44Gr6YCa55+l44GZ44KL44Oh44O844Or44Gu6YCB5L+h6ICF44Gu44OH44OV44Kp44Or44OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ+aWsOOBl+OBhOOCouODs+OCseODvOODiOOCkuOBq+OBpOOBhOOBpumhp+WuouOBq+mAmuefpeOBmeOCi+ODoeODvOODq+OBruS7tuWQjeOBruODh+ODleOCqeODq+ODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICfjgqLjg7PjgrHjg7zjg4jkuIDopqcoUynjgpLooajnpLrjgZnjgovjgZ/jgoHjga7kuIDopqfjg6Ljgrjjg6Xjg7zjg6vjga7lrprnvqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAn44Ki44Oz44Kx44O844OI44Gu44K544OG44O844K/44K544KS5aSJ5pu044GZ44KL5qip6ZmQ44KS5oyB44Gk44Kw44Or44O844OX44KS5a6a576p44GX44G+44GZ44CCIOOCouODrOOCpOOBr+ODh+ODleOCqeODq+ODiOOBp+OBr+epuuOBp+OAgeWFqOOBpuOBruOCsOODq+ODvOODl+OBruaLheW9k+iAheOBjOOCouODs+OCseODvOODiOOBruOCueODhuODvOOCv+OCueOCkuWkieabtOOBp+OBjeOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJ+OCouODs+OCseODvOODiOOBjOWun+mam+OBrumhp+WuouOBq+mAgeS/oeOBleOCjOOCi+OBi+OBqeOBhuOBi+OCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnMzDml6Xjga7plpPjgavpoaflrqLjgavpgIHkv6HjgZnjgovoqr/mn7vjga7mnIDlpKfmlbDjgpLlrprnvqnjgZfjgb7jgZnjgIIoMOOBr+eEoeWItumZkOOCkuaEj+WRs+OBl+OAgeWFqOOBpuOBruiqv+afu+imgeaxguOBjOmAgeS/oeOBleOCjOOBvuOBmSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ+OCouODs+OCseODvOODiOOBrumAgeS/oeOCkuODiOODquOCrOODvOOBmeOCi+OBn+OCgeOBq+ODgeOCseODg+ODiOOCkuOCr+ODreODvOOCuuOBmeOCi+aZgumWk+aVsOOCkuWumue+qeOBl+OBvuOBme+8iDDjga/jgq/jg63jg7zjgrrnm7TlvozjgavpgIHkv6HjgZXjgozjgb7jgZnvvInjgIIg5rOo77ya6YGF5bu244Ki44Oz44Kx44O844OI6YCB5L+h44Gv44CBT1RSU+ODh+ODvOODouODs+OBq+OCiOOBo+OBpuWun+ihjOOBleOCjOOAgeS6i+WJjeOBqyBcJ0RhZW1vbiA6OiBTY2hlZHVsZXJDcm9uVGFza01hbmFnZXIgOjogVGFzayAjIyMgU3VydmV5UmVxdWVzdHNTZW5kXCfjga7oqK3lrprjgYzmnInlirnjgavjgarjgaPjgabjgYTjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAn6YCB5L+h5p2h5Lu244KS5L2c5oiQ44GZ44KL44Gf44KB44Gu44OJ44Ot44OD44OX44OA44Km44Oz44Oq44K544OI44Gu5YiX44KS5a6a576p44GX44G+44GZ44CC77yIMCA9PueEoeWKueOAgTEgPT7mnInlirnvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAn6Kq/5p+75ouh5aSn55S76Z2i44Gu6KaB57Sg44Gr5a++44GX44Gm44Oq44OD44OB44OG44Kt44K544OI44Gr5a++44GZ44KL44OH44OV44Kp44Or44OI44Gu6auY44GV44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJ+OCouODs+OCseODvOODiOe1seioiOOCkuWJiumZpOOBp+OBjeOCi+OCsOODq+ODvOODl++8iHJ377yJ44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ1N1cnZleVpvb23opoHntKDjga7jg6rjg4Pjg4Hjg4bjgq3jgrnjg4jjg5Pjg6Xjg7zjga7mnIDlpKfpq5jjgZXjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ+OCouODs+OCseODvOODiOS4gOimp+OBp+ihqOekuuOBleOCjOOCi+WIl+aVsOOCkuWumue+qeOBl+OBvuOBmeOAguOBk+OBruOCquODl+OCt+ODp+ODs+OBr+WIl+OBruS9jee9ruOBq+OBr+S9nOeUqOOBl+OBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAn57Wx6KiI44Oi44K444Ol44O844Or44GM6Kq/5p+744Oq44K544OI44KS55Sf5oiQ44GZ44KL44GL44Gp44GG44GL44KS5rG65a6a44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAn44Ki44Oz44Kx44O844OI5LiA6Iis5oOF5aCx44KS57eo6ZuGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICfjgqLjg7PjgrHjg7zjg4jjga7os6rllY/jgpLkv67mraMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAn5YWs6ZaL44Kk44Oz44K/44O844OV44Kn44O844K544Gr44GK44GE44Gm44CB6aGn5a6i44GMMuW6puWbnuetlOOBl+OCiOOBhuOBqOOBl+OBn+mam+OBq+OAgeOBk+OCjOOBvuOBp+OBruWbnuetlOODh+ODvOOCv+OCkuihqOekuuOBmeOCi1Nob3dWb3RlRGF0YeeUu+mdouOCkuacieWKueOBq+OBmeOCi+OBi+WQpuOBiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ+OCteODvOODk+OCueOBrumAgeS/oeadoeS7tuOCkuacieWKueOBvuOBn+OBr+eEoeWKueOBq+OBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ+ODhuOCo+OCseODg+ODiOOCv+OCpOODl+OBrumAgeS/oeadoeS7tuOCkuacieWKueOBvuOBn+OBr+eEoeWKueOBq+OBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7ntbHoqIjjg5Xjg63jg7Pjg4jjgqjjg7Pjg4njg7vjg6Ljgrjjg6Xjg7zjg6vjga7nmbvpjLLjgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGVkaXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBrue1seioiOOBruWkieabtOeUu+mdouODleODreODs+ODiOOCqOODs+ODieODu+ODouOCuOODpeODvOODq+OBrueZu+mMsuOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBrue1seioiOeKtuazgeODleODreODs+ODiOOCqOODs+ODieODu+ODouOCuOODpeODvOODq+OBrueZu+mMsuOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44O844K544Gu6Kq/5p+75ouh5aSn44Gr5a++44GZ44KL44OV44Ot44Oz44OI44Ko44Oz44OJ44O744Oi44K444Ol44O844Or44Gu55m76Yyy44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICflhazplovjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrnjga5QdWJsaWNTdXJ2ZXnjgqrjg5bjgrjjgqfjgq/jg4jjgavlr77jgZnjgovjg5Xjg63jg7Pjg4jjgqjjg7Pjg4njg7vjg6Ljgrjjg6Xjg7zjg6vjga7nmbvpjLLjgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ+OBk+OBruato+imj+ihqOePvuOBq+ODnuODg+ODgeOBmeOCi+WgtOWQiOOAgeiqv+afu+OBr+mhp+WuouOBq+mAgeS/oeOBleOCjOOBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICfjg6rjg5/jg4Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICfjgqLjg7PjgrHjg7zjg4jkuIDopqcgKFNtYWxsKSDjga4gKOOCouODs+OCseODvOODiOOBjOihqOekuuOBleOCjOOCiykg44Oa44O844K444Gr5a++44GZ44KL44OR44Op44Oh44O844K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAn5YWs6ZaL44Kk44Oz44K/44O844OV44Kn44O844K544GuUHVibGljU3VydmV544Kq44OW44K444Kn44Kv44OI44Gr5a++44GZ44KL44OV44Ot44Oz44OI44Ko44Oz44OJ44Oi44K444Ol44O844Or55m76Yyy44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ+ioreWumuOBleOCjOOBn+aXpeaVsOOCiOOCiuWPpOOBhOe1kOaenOOBr+WJiumZpOOBleOCjOOBvuOBmeOAgiDms6jvvJogXCdUYXNrICMjIyBTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZVwn6Kit5a6a44KS5pyJ5Yq544Gr44GZ44KL5YmN44Gr44CBT1RSU+ODh+ODvOODouODs+OBq+OCiOOBo+OBpuihjOOCj+OCjOOBn+e1kOaenOOCkuWJiumZpOOBl+OBpuS4i+OBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7ntbHoqIjjgrrjg7zjg6Djg5Pjg6Xjg7zjgafnt6jpm4bjg6rjg7Pjgq/jgpLjg6Hjg4vjg6Xjg7zjgpLooajnpLrjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7ntbHoqIjos6rllY/jgrrjg7zjg6Djg5Pjg6Xjg7zjgafjga7nt6jpm4bjg6rjg7Pjgq/jgpLjg6Hjg4vjg6Xjg7zjgavooajnpLrjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruOCuuODvOODoOODk+ODpeODvOOBp+ihqOekuuOBl+OBpuOBhOOCi+e1seioiOOBrue3qOmbhuODquODs+OCr+OCkuODoeODi+ODpeODvOOCkuihqOekuuOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruOCuuODvOODoOODk+ODpeODvOOBp+ihqOekuuOBl+OBpuOBhOOCi+e1seioiOOBrue3qOmbhuODquODs+OCr+OCkuODoeODi+ODpeODvOOCkuihqOekuuOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAn57Wx6KiI44Gu6Kmz57SwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ+OCouODs+OCseODvOODiOODouOCuOODpeODvOODq+i/veWKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAn44Ki44Oz44Kx44O844OI57eo6ZuG44Oi44K444Ol44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAn44Ki44Oz44Kx44O844OI5LiA6KanKFMp44Gu6KGo56S65pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAn44Ki44Oz44Kx44O844OI57Wx6KiI44Oi44K444Ol44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICfjgqLjg7PjgrHjg7zjg4jjg7vjgrrjg7zjg6Djg7vjg6Ljgrjjg6Xjg7zjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICfjgqLjg7PjgrHjg7zjg4jjga7kuIDopqfjgIzlsI/jgI3jgavplqLjgZnjgosx44Oa44O844K444GC44Gf44KK44Gu44Ki44Oz44Kx44O844OI44Gu5LiK6ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAn44Ki44Oz44Kx44O844OI44Gv6Kit5a6a44GV44KM44Gf6Zu75a2Q44Oh44O844Or44Ki44OJ44Os44K544Gr44Gv6YCB5L+h44GV44KM44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICfkvovjgYjjgbBTdXJ2ZXkjLCBNeVN1cnZleSPjgarjganjga7jg4HjgrHjg4Pjg4jjga7orZjliKXlrZDjgafjgZnjgILjg4fjg5Xjgqnjg6vjg4jjga9TdXJ2ZXkj44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAn44OB44Kx44OD44OI44GM5a6M5LqG44GX44Gf6Zqb44Gr44CB6aGn5a6i44Gr6Ieq5YuV55qE44Gr6Kq/5p+744Oh44O844Or44KS6YCB5L+h44GZ44KL44OB44Kx44OD44OI44Kk44OZ44Oz44OI44Oi44K444Ol44O844Or44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICfvvIjmipXnpajjg4fjg7zjgr/jgajjg6rjgq/jgqjjgrnjg4jjgpLlkKvjgoDvvInntZDmnpzjgpLliYrpmaTjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ+i/veOBo+OBpuOBruOCouODs+OCseODvOODiOimgeaxguOCkumAgeS/oeOBmeOCi+ODiOODquOCrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJ+e1seioiOaDheWgseOBruips+e0sOOCkuOCuuODvOODoOOCpOODs+OBmeOCi+OAgic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om1zX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0J1YXQgU3VydmV5IEJhcnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnUGVuZ2VuYWxhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnUGVueWlhc2F0YW4gUGVuZ2VuYWxhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ0JhZGFuIFBlbWJlcml0YWh1YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnSmVuaXMgVGlja2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnRGVzY3JpcHRpb24gZGFsYW1hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnRWRpdCBNYWtsdW1hdCBVbXVtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnRWRpdCBTb2FsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAnQW5kYSBkaSBzaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdQZW55aWFzYXRhbiBTb2FsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnVGFtYmFoIFNvYWxhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ1RhaXAgc29hbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ0phd2FwYW4gZGlwZXJsdWthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ1RpYWRhIHNvYWxhbiB5YW5nIGRpc2ltcGFuIHVudHVrIGthamlhbiBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnU29hbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ0phd2FwYW4gZGlwZXJsdWthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnQXBhYmlsYSBhbmRhIHN1ZGFoIHNlbGVzYWkgbWVuZ3ViYWggc29hbGFuIGthamkgc2VsaWRpayBoYW55YSB0dXR1cCBza3JpbiBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdFZGl0IFNvYWxhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ2tlbWJhbGkga2VwYWRhIHNvYWxhbi1zb2FsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnU29hbGFuOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ0phd2FwYW4gS2VtdW5na2luYW4gVW50dWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ1RhbWJhaCBKYXdhYic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ1RpYWRhIGphd2FwYW4geWFuZyBkaXNpbXBhbiB1bnR1ayBzb2FsYW4gaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnSW5pIHRpZGFrIG1lbXB1bnlhaSBiZWJlcmFwYSBqYXdhcGFuLCB0ZXh0YXJlYSBha2FuIGRpcGFwYXJrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnRWRpdCBKYXdhcGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ2tlbWJhbGkgdW50dWsgbWVuZ2VkaXQgc29hbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICdKYXdhcGFuOic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJ01ha3NpbXVtIHNvYWwgc2VsaWRpayBkaXR1bmp1a2thbiBzZXRpYXAgaGFsYW1hbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnUGVtYmVyaXRhaHVhbiBQZW5naXJpbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ1RlcnRha2x1ayBQZW1iZXJpdGFodWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdEaXR1a2FyIGRlbmdhbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICdHYW1iYXJhbiBLZXNlbHVydWhhbiBTdGF0aXN0aWsgZGFyaXBhZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICdKYWR1YWwgcGVybWludGFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ01hc2EgSGFudGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ01hc2EgVW5kaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnTGloYXQgbWFrbHVtYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdQZW55aWFzYXRhbiBEZXRhaWxzIFN0YXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ2tlbWJhbGkga2UgU3RhdGlzdGlrIGdhbWJhcmFuIGtlc2VsdXJ1aGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ01ha2x1bWF0IFVrdXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ21lbmdoYW50YXIgcGVybWludGFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnZGl0ZXJpbWEga2FqaSBzZWxpZGlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnUGVueWlhc2F0YW4gdGVycGVyaW5jaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnUGVya2hpZG1hdGFuIHRpa2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnVWt1ciBLZXB1dHVzYW4gR3JhZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnVGlhZGEgc3RhdCBrZXB1dHVzYW4uJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ1BlbnlpYXNhdGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnU2lsYSBqYXdhYiBzb2FsYW4tc29hbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ1R1bmp1a2thbiBqYXdhcGFuIHNheWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0luaSBhZGFsYWggamF3YXBhbiBhbmRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ1RhanVrIFVrdXInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ1RhbWJhaCBVa3VyIEJhcnUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ1VrdXIgRWRpdCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnUGVueWlhc2F0YW4gRWRpdCBTb2FsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnWWEvVGlkYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnUmFkaW8gKFNlbmFyYWkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ0NoZWNrYm94IChTZW5hcmFpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ0plbmlzIHNvYWxhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ2xlbmdrYXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ3RpZGFrIGxlbmdrYXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0VkaXQgc29hbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnRWRpdCBKYXdhcGFuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ1N0YXRpc3RpayBUaW5qYXVhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ1N0YXRpc3RpayBUZXJwZXJpbmNoaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ1RpZGFrIGJvbGVoIG1lbmV0YXBrYW4gc3RhdHVzIGJhcnUhIFRpYWRhIHNvYWxhbiB5YW5nIGRpdGFrcmlma2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICdzdGF0dXMgYmVydWJhaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLVRpYWRhIGdpbGlyYW4gZGlwaWxpaC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHNlcnZpY2Ugc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gVWJhaCBTdGF0dXMgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICdJbmR1ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAnVGlkYWsgU2FoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICdTdGF0dXMgYmFoYXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ0h1cmFpYW4gcGVueWlhc2F0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdEaWphd2FiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ1RpZGFrIGRpamF3YWInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ1RlcmltYSBrYXNpaCBhdGFzIG1ha2x1bSBiYWxhcyBhbmRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0thamkgc2VsaWRpayBpdHUgc2VsZXNhaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnQW5kYSB0ZWxhaCBtZW5qYXdhYiBrYWppIHNlbGlkaWsuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICdBZGFrYWggYW5kYSBiZW5hci1iZW5hciBpbmdpbiBtZW1hZGFtIHNvYWxhbiBpbmk/IFNFTVVBIGRhdGEgYmVya2FpdGFuIGFrYW4gSElMQU5HISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ0FkYWthaCBhbmRhIGJlbmFyLWJlbmFyIGluZ2luIG1lbWFkYW0gamF3YXBhbiBpbmk/JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ1NhdHUgTW9kdWwgUGVueWlhc2F0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ1NhdHUgbW9kdWwgdW50dWsgbWVuZ2VkaXQgc29hbGFuIHRpbmphdWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2VtdWEgcGFyYW1ldGVyIGJhZ2kgb2JqZWsgVWt1ciBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdKdW1sYWggaGFyaSBzZWxlcGFzIG1lbmdoYW50YXIgbWVsIGthamkgc2VsaWRpayBkaSBtYW5hIHRpYWRhIHBlcm1pbnRhYW4ga2FqaSBzZWxpZGlrIGJhcnUgZGloYW50YXIga2VwYWRhIHBlbGFuZ2dhbiB5YW5nIHNhbWEuIE1lbWlsaWggMCBha2FuIHNlbnRpYXNhIG1lbmdoYW50YXIgbWVsIGthamkgc2VsaWRpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnRGVmYXVsdCBiYWRhbiB1bnR1ayBwZW1iZXJpdGFodWFuIGUtbWVsIGtlcGFkYSBwZWxhbmdnYW4gdGVudGFuZyBrYWppIHNlbGlkaWsgYmFydS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdQZW5naGFudGFyIGxhbGFpIHVudHVrIHBlbWJlcml0YWh1YW4gZS1tZWwga2VwYWRhIHBlbGFuZ2dhbiB0ZW50YW5nIGthamkgc2VsaWRpayBiYXJ1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdUZXJ0YWtsdWsgbGFsYWkgdW50dWsgcGVtYmVyaXRhaHVhbiBlLW1lbCBrZXBhZGEgcGVsYW5nZ2FuIHRlbnRhbmcga2FqaSBzZWxpZGlrIGJhcnUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBtb2R1bCBnYW1iYXJhbiB1bnR1ayBtZW51bmp1a2thbiBwYW5kYW5nYW4geWFuZyBrZWNpbCBzZW5hcmFpIGthamkgc2VsaWRpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4ganVtbGFoIG1ha3NpbXVtIGthamkgc2VsaWRpayB5YW5nIG1lbmRhcGF0IGRpaGFudGFyIGtlcGFkYSBwZWxhbmdnYW4gc2V0aWFwIDMwIGhhcmkuICgwIGJlcm1ha25hIHRpZGFrIG1ha3NpbXVtLCBzZW11YSBwZXJtaW50YWFuIGthamkgc2VsaWRpayBha2FuIGRpaGFudGFyKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBqdW1sYWggamFtIHN1YXR1IHRpa2V0IGFrYW4gZGl0dXR1cCB1bnR1ayBtZW5jZXR1c2thbiBwZW5naGFudGFyYW4gc3VhdHUga2FqaSBzZWxpZGlrLCAoMCBiZXJlcnRpIG1lbmdoYW50YXIgc2VnZXJhIHNlbGVwYXMgcGVudXR1cGFuKS4gTm90YTogcGVuZ2hhbnRhcmFuIGthamkgc2VsaWRpayB0ZXJ0dW5kYSBhZGFsYWggZGlsYWt1YW4gb2xlaCBPVFJTIERhZW1vbiwgcGVuZ2FrdGlmYW4gc2ViZWx1bW55YSB0ZXRhcGFuIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBrZXRpbmdnaWFuIGxhbGFpIHVudHVrIHBlbm9udG9uIFRla3MgS2F5YSB1bnR1ayBlbGVtZW4gWm9vbSBVa3VyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gcnVhbmdhbiBtZW51bmp1a2thbiBkYWxhbSBnYW1iYXJhbiBrYWppYW4uUGlsaWhhbiBpbmkgdGlkYWsgbWVtcHVueWFpIGtlc2FuIGtlIGF0YXMga2VkdWR1a2FuIHRpYW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnRGF5YWthbiBhdGF1IG55YWhkYXlha2FuIFVuZGkgUGFwYXIgRGF0YSBza3JpbiBkYWxhbSBhbnRhcmEgbXVrYSBhd2FtIHVudHVrIG1lbnVuanVra2FuIGRhdGEgaGFzaWwga2FqaWFuIHRlcnRlbnR1IGFwYWJpbGEgcGVsYW5nZ2FuIGN1YmEgdW50dWsgbWVuamF3YWIga2FqaSBzZWxpZGlrIGthbGkga2VkdWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnTWVtYm9sZWhrYW4gYXRhdSBtZWx1bXB1aGthbiBtZW5naGFudGFyIHNlbWFrYW4ga2VhZGFhbiB1bnR1ayBwZXJraGlkbWF0YW4gaXR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ01lbWJvbGVoa2FuIGF0YXUgbWVsdW1wdWhrYW4gbWVuZ2hhbnRhciBzZW1ha2FuIGtlYWRhYW4gdW50dWsgamVuaXMgdGlrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JhaGFnaWFuIGRlcGFuIHBlbmRhZnRhcmFuIG1vZHVsIHVudHVrIG1lbmFtYmFoIGthamkgc2VsaWRpayBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmFoYWdpYW4gZGVwYW4gcGVuZGFmdGFyYW4gbW9kdWwgdW50dWsgbWVueXVudGluZyBrYWppIHNlbGlkaWsgZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCYWhhZ2lhbiBEZXBhbiBwZW5kYWZ0YXJhbiBtb2R1bCBzdGF0aXN0aWsga2FqaWFuIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGcm9udGVuZCBwZW5kYWZ0YXJhbiBtb2R1bCB1bnR1ayB6b29tIGthamkgc2VsaWRpayBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnRnJvbnRlbmQgcGVuZGFmdGFyYW4gbW9kdWwgYmFnaSBvYmplayBVa3VyIEF3YW0gZGkga2F3YXNhbiBVa3VyIGF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdKaWthIHBlcmxhd2FuYW4gcmVnZXggaW5pLCB0aWFkYSBrYWppYW4gcGVsYW5nZ2FuIGFrYW4gZGloYW50YXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBoYWxhbWFuIChkaSBtYW5hIGthamkgc2VsaWRpayBkaXR1bmp1a2thbikgZ2FtYmFyYW4ga2FqaWFuIGtlY2lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ1BlbnlpYXNhdGFuIGF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayBtZW55dW50aW5nIGthamkgc2VsaWRpayBkYWxhbSBwYXBhcmFuIHp1bSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIG1lbnl1bnRpbmcgc29hbGFuIGthamkgc2VsaWRpayBkYWxhbSBwYXBhcmFuIHp1bSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRhbGFtIG1lbnUgdW50dWsga2VtYmFsaSBrZSBwYXBhcmFuIHp1bSBrYWppIHNlbGlkaWsgYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayB6dW0gbWFrbHVtYXQgc3RhdGlzdGlrIGthamkgc2VsaWRpayBkYWxhbSBwYXBhcmFuIHp1bSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnTWFrbHVtYXQgc3RhdGlzdGlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ01vZHVsIFRhbWJhaCBTb2FsIFNlbGlkaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ0thamkgc2VsaWRpayBzdW50aW5nYW4gbW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdVa3VyIFRpbmphdWFuIEhhZCAiS2VjaWwiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnS2FqaSBzZWxpZGlrIE1vZHVsIFN0YXRpc3Rpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnUGVueWlhc2F0YW4gWm9vbSBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ1VrdXIgdGlkYWsgYWthbiBkaWhhbnRhciBrZSBhbGFtYXQgZS1tZWwgeWFuZyBkaWtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnUGVuZ2VjYW0gdW50dWsga2FqaSBzZWxpZGlrLCBtaXNhbG55YSBQZW55aWFzYXRhbiAjIE15U3VydmV5ICMuIExhbGFpIGFkYWxhaCBQZW55aWFzYXRhbiMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnVGlrZXQgbW9kdWwgYWNhcmEgdW50dWsgbWVuZ2hhbnRhciBwZXJtaW50YWFuIGUtbWVsIHNlY2FyYSBhdXRvbWF0aWsga2FqaSBzZWxpZGlrIGtlcGFkYSBwZWxhbmdnYW4gamlrYSB0aWtldCBkaXR1dHVwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICdQZW5jZXR1cyBtZW5naGFudGFyIHBlcm1vaG9uYW4gc29hbCBzZWxpZGlrIGRpdGFuZ2d1aGthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om5iX05PX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0xhZyBueSBzcMO4cnJldW5kZXJzw7hrZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1a3Nqb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ01lbGRpbmcgaSB2YXJzZWwtZS1wb3N0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ1Nha3N0eXBlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ0ludGVybiBiZXNrcml2ZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnUmVkaWdlciBnZW5lcmVsbCBpbmZvcm1hc2pvbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ1JlZGlnZXIgc3DDuHJzbcOlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdEdSBlciBoZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ1Nww7hyc23DpWwgdGlsIHNww7hycmV1bmRlcnPDuGtlbHNlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdMZWdnIHRpbCBzcMO4cnNtw6VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnU2tyaXYgaW5uIHNww7hyc23DpWxldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICdJbmdlbiBzcMO4cnNtw6VsIGxhZ3JldCBmb3IgZGVubmUgc3DDuHJyZXVuZGVyc8O4a2Vsc2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ1Nww7hyc23DpWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ1JlZGlnZXIgc3DDuHJzbcOlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ3RpbGJha2UgdGlsIHNww7hyc23DpWxlbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnTXVsaWdlIHN2YXJhbHRlcm5hdGl2ZXIgZm9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdMZWdnIHRpbCBzdmFyYWx0ZXJuYXRpdmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdEZXR0ZSBzcMO4cnNtw6VsZXQgaGFyIGlra2UgbXVsaWdoZXQgZm9yIHN2YXJhbHRlcm5hdGl2ZXIuIEhlciB2aWwgZGV0IGt1biBibGkgdmlzdCBlbiB0ZWtzdGJva3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnUmVkaWdlciBzdmFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ2fDpSB0aWxiYWtlIGZvciDDpSByZWRpZ2VyZSBzcMO4cnNtw6VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaGVzIGluIHRoZSBhdHRyaWJ1dGVzIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keSwgb3ZlcnJpZGluZyBvdGhlciBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVzdHJpY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ0F2c2VuZGVyIGF2IHZhcnNlbC1lLXBvc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICdUaXR0ZWwgaSB2YXJzZWwtZS1wb3N0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdFbmRyZXQgYXYnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnVGFiZWxsZm9yZXNww7hyc2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnVGlkIHNlbmR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ1RpZCBzdmFydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnRGV0YWxqc3RhdGlzdGlrayBmb3Igc3DDuHJyZXVuZGVyc8O4a2Vsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ2fDpSB0aWxiYWtlIHRpbCBzdGF0aXN0aWtrb3ZlcnNpa3Rlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hc2pvbiBvbSBzcMO4cnJldW5kZXJzw7hrZWxzZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ1NlbmR0ZSBmb3Jlc3DDuHJzbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdNb3R0YXR0ZSBzcMO4cnJldW5kZXJzw7hrZWxzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICdEZXRhbGplciBvbSBzcMO4cnJldW5kZXJzw7hrZWxzZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnR3JhZmlzayBmcmVtc3RpbGxpbmcgYXYgc3ZhcmVuZSBpIHNww7hycmV1bmRlcnPDuGtlbHNlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnSW5nZW4gcmVzdWx0YXRlcic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdTcMO4cnJldW5kZXJzw7hrZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnUmVkaWdlciBzcMO4cnJldW5kZXJzw7hrZWxzZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnUmVkaWdlciBzcMO4cnNtw6VsIHRpbCBzcMO4cnJldW5kZXJzw7hrZWxzZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ1N0YXRpc3Rpa2tvdmVyc2lrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICdVZ3lsZGlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ0VuIG1vZHVsIGZvciBzcMO4cnJldW5kZXJzw7hrZWxzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ0VuIG1vZHVsIGZvciDDpSByZWRpZ2VyZSBzcMO4cnJldW5kZXJzw7hrZWxzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1N0YW5kYXJkIG1lbGRpbmcgaSB2YXJzZWwtZS1wb3N0IHRpbCBrdW5kZXIgb20gZW4gbnkgc3DDuHJyZXVuZGVyc8O4a2Vsc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnU3RhbmRhcmQgYXZzZW5kZXIgaSB2YXJzZWwtZS1wb3N0IHRpbCBrdW5kZXIgb20gZW4gbnkgc3DDuHJyZXVuZGVyc8O4a2Vsc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1N0YW5kYXJkIG92ZXJza3JpZnQgaSB2YXJzZWwtZS1wb3N0IHRpbCBrdW5kZXIgb20gZW4gbnkgc3DDuHJyZXVuZGVyc8O4a2Vsc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdIdmlzIGRlbm5lIHJlZ2V4ZW4gc3RlbW1lciwgdmlsIGRldCBpa2tlIGJsaSBzZW5kdCB1dCBlbiBzcMO4cnJldW5kZXJzw7hrZWxzZSB0aWwga3VuZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnU3RhbmRhcmQgaWRlbnRpZmlrYXRvciBmb3IgZW4gdW5kZXJzw7hrbHNlLCBmLmVrcy4gU3DDuHJyZXVuZGVyc8O4a2Vsc2UjLCBNaW5TcMO4cnJldW5kZXJzw7hrZWxzZSMuIFN0YW5kYXJkIGVyIFN1cnZleSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om5sX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ05pZXV3ZSBlbnF1w6p0ZSBhYW5tYWtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1Y3RpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdWN0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdCb2R5IHRleHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnVGlja2V0IHR5cGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnSW50ZXJuZSBvbXNjaHJpanZpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ0Jld2VyayBhbGdlbWVuZSBpbmZvcm1hdGllJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnQmV3ZXJrIHZyYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdIaWVyIGJlbnQgdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnVnJhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ1ZyYWFnIHRvZXZvZWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ1ZyYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ1ZlcnBsaWNodCBhbnR3b29yZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnRXIgemlqbiBnZWVuIHZyYWdlbiBvcGdlc2xhZ2VuIHZvb3IgZGV6ZSBlbnF1w6p0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ1ZyYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ1ZlcnBsaWNodCBBbnR3b29yZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ0Jld2VyayB2cmFhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ2dhIHRlcnVnIG5hYXIgZGUgdnJhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJ1ZyYWFnOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ01vZ2VsaWprZSBhbnR3b29yZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdBbnR3b29yZCB0b2V2b2VnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdHZWVuIGFudHdvb3JkIG9wZ2VzbGFnZW4gdm9vciBkZXplIHZyYWFnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnRGV6ZSBoZWVmdCBuaWV0IG1lZXJkZXJlIGFudHdvb3JkZW4uIEVyIHphbCBlZW4gdGVrc3R2YWsgZ2V0b29uZCB3b3JkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnQW50d29vcmQgYmV3ZXJrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAnZ2EgdGVydWcgbmFhciBkZSB2cmFhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnQW50d29vcmQ6JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnTWF4LiBnZXRvb25kZSBvbmRlcnpvZWtlbiBwZXIgcGFnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdBZnplbmRlciBub3RpZmljYXRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ09uZGVyd2VycCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAnR2V3aWp6aWdkIGRvb3InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnRGV0YWlsb3ZlcnppY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnVmVyem9la2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnVmVyc3R1dXJkIG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ0luZ2V2dWxkIG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICdaaWUgRGV0YWlscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ0RldGFpbG92ZXJ6aWNodCBzdGF0aXN0aWVrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ2dhIHRlcnVnIG5hYXIgaGV0IG92ZXJ6aWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdEZXRhaWxzIGVucXXDqnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdWZXJzdHV1cmRlIHZlcnpvZWtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnT250dmFuZ2VuIGVucXXDqnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0RldGFpbHMgZW5xdcOqdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnVGlja2V0IFNlcnZpY2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnUmVzdWx0YXRlbiAoZ3JhZmllayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJ0dlZW4gcmVzdWx0YXRlbi4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnRW5xdcOqdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdCZWFudHdvb3JkdCB1IGRlIHZvbGdlbmRlIHZyYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICdUb29uIG1pam4gYW50d29vcmRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnRGl0IHppam4gdXcgYW50d29vcmRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdFbnF1w6p0ZXRpdGVsJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICdOaWV1d2UgZW5xdcOqdGUgdG9ldm9lZ2VuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdCZXdlcmsgZW5xdcOqdGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0Jld2VyayB2cmFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnSmEvTmVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ0tldXplcm9uZGplIChsaWpzdCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnU2VsZWN0aWV2YWsgKGxpanN0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ1ZyYWFndHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ1ZvbGxlZGlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdPbnZvbGxlZGlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICdCZXdlcmsgdnJhYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICdCZXdlcmsgYW50d29vcmQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5U3RhdHMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAnU3RhdGlzdGlla2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAnRGV0YWlsJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAnS2FuIHN0YXR1cyBuaWV0IHdpanppZ2VuLCB2b2VnIGVlcnN0IHZyYWdlbiB0b2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ1N0YXR1cyBiaWpnZXdlcmt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctIEdlZW4gcmlqIGdlc2VsZWN0ZWVyZCAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctIFN0YXR1cyB3aWp6aWdlbiAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ01hc3Rlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAnT25nZWxkaWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ05pZXV3ZSBTdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnT21zY2hyaWp2aW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnYmVhbnR3b29yZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICduaWV0IGJlYW50d29vcmQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ0JlZGFua3Qgdm9vciB1dyBmZWVkYmFjay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICdEZSBlbnF1w6p0ZSBpcyBpbmdlc3R1dXJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdVIGhlZWZ0IGRlemUgZW5xdcOqdGUgYWwgYmVhbnR3b29yZC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vU3RhdHMvRHluYW1pYy9TdXJ2ZXlMaXN0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTGlzdCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJ1dlZXQgdSB6ZWtlciBkYXQgdSBkZXplIHZyYWFnIHdpbHQgdmVyd2lqZGVyZW4/IEFMTEUgZ2Vhc3NvY2llZXJkZSBkYXRhIHphbCB2ZXJsb3JlbiBnYWFuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ1dlZXQgdSB6ZWtlciBkYXQgdSBkaXQgYW50d29vcmQgd2lsdCB2ZXJ3aWpkZXJlbj8nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnRWVuIG1vZHVsZSBvbSBlbnF1w6p0ZXMgdGUgb25kZXJob3VkZW4gZW4gdGUgdmVyc3R1cmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdFZW4gbW9kdWxlIG9tIGVucXXDqnRlcyB0ZSBvbmRlcmhvdWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGVkaXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdTdGF0cyBEZXRhaWxzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnBsX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ1V0d8Ozcnogbm93xIUgYW5raWV0xJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnV3Byb3dhZHplbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdXc3TEmXAgYW5raWV0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ1RyZcWbxIcgcG93aWFkb21pZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICdUeXB5IHpnxYJvc3plxYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdXZXduxJl0cnpueSBvcGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICdXYXJ1bmtpIGtsaWVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICdXeWJpZXJ6IHfFgmHFm2Npd2/Fm2NpIGtsaWVudGEgYWJ5IGRvZGHEhyB3YXJ1bmVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJ0tsdWN6IGFua2lldHkgcHVibGljem5laic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJ1ByenlrxYJhZG93YSBhbmtpZXRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnRWR5dHVqIGluZm9ybWFjamUgb2fDs2xuZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkeXR1aiBweXRhbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJ0plc3RlxZsgdHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ1B5dGFuaWEgYW5raWV0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdEb2RhaiBweXRhbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnV3Byb3dhZMW6IHB5dGFuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnV3ltYWdhbmEgb2Rwb3dpZWTFuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ0JyYWsgcHl0YcWEIHphcGlzYW55Y2ggdyB0ZWogYW5raWVjaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnUHl0YW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdXeW1hZ2FuYSBvZHBvd2llZMW6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICdLaWVkeSB6YWtvxYRjenlzeiBlZHljasSZIHB5dGHFhCBhbmtpZXR5IHBvIHByb3N0dSB6YW1rbmlqIHRvIG9rbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnWmFta25paiB0byBva25vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdFZHl0dWogcHl0YW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ3Bvd3LDs3QgZG8gcHl0YcWEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJ1B5dGFuaWU6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnTW/FvGxpd2Ugb2Rwb3dpZWR6aSBkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnRG9kYWogb2Rwb3dpZWTFuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ0JyYWsgemFwaXNhbnljaCBvZHBvd2llZHppIG5hIHRvIHB5dGFuaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdOaWUgcG9zaWFkYSB3aWVsdSBvZHBvd2llZHppLCBixJlkemllIHd5xZt3aWV0bGFuZSBwb2xlIHRla3N0b3dlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ0VkeXR1aiBvZHBvd2llZMW6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ3Bvd3LDs3QgZG8gZWR5Y2ppIHB5dGFuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ09kcG93aWVkejonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnT3BjamUgcHJ6ZWdsxIVkdSBhbmtpZXR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaGVzIGluIHRoZSBhdHRyaWJ1dGVzIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keSwgb3ZlcnJpZGluZyBvdGhlciBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICdDemFzIHV0d29yemVuaWEgYW5raWV0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJ0JleiBvZ3JhbmljemXFhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnVHlsa28gYW5raWV0eSB1dHdvcnpvbmUgbWnEmWR6eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICdNYWtzLiBsaWN6YmEgd3nFm3dpZXRsYW55Y2ggYW5raWV0IG5hIHN0cm9uxJknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ05hZGF3Y2EgcG93aWFkb21pZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ1RlbWF0IHBvd2lhZG9taWVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ1ptaWVuaW9uZSBwcnpleic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICdQcnplZ2zEhWQgc3RhdHlzdHlraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ1RhYmVsYSDFvMSFZGHFhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAnWmF6bmFjeiB3c3p5c3RraWUgxbzEhWRhbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ0N6YXMgd3lzxYJhbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ0N6YXMgZ8WCb3Nvd2FuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJ1phem5hY3ogdG8gxbzEhWRhbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnWm9iYWN6IHN6Y3plZ8OzxYJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJ1VzdcWEIHN0YXR5c3R5a2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ1N6Y3plZ8OzxYJ5IHN0YXR5c3R5a2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ1dzdGVjeiBkbyBwcnplZ2zEhWR1IHN0YXR5c3R5a2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJ1BvcHJ6ZWRuaSBnxYJvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICdOYXN0xJlwbnkgZ8WCb3MnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNqZSBvIGFua2llY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdXeXPFgmFuZSDFvMSFZGFuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ090cnp5bWFuZSBhbmtpZXR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnU3pjemVnw7PFgnkgYW5raWV0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICdaZ8WCb3N6ZW5pZSBVc8WCdWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICdXeWtyZXMgd3luaWvDs3cgYW5raWV0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnQnJhayB3eW5pa8OzdyBhbmtpZXR5Lic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdBbmtpZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnUHJvc3rEmSBvZHBvd2llZHppZcSHIG5hIHRlIHB5dGFuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnUG9rYcW8IG1vamUgb2Rwb3dpZWR6aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnT3RvIFR3b2plIG9kcG93aWVkemknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnVHl0dcWCIGFua2lldHknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ0RvZGFqIG5vd8SFIGFua2lldMSZJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJ05pZSBtYXN6IHVwcmF3bmllxYQgZG8gdGVqIGFua2lldHkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJ05pZSBwb2Rhbm8gaWRlbnR5ZmlrYXRvcmEgYW5raWV0eSBTdXJ2ZXlJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdFZHljamEgYW5raWV0eSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICdOaWUgbWFzeiB1cHJhd25pZcWEIGRvIHRlaiBhbmtpZXR5IGx1YiBweXRhbmlhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJ05pZSBtYXN6IHVwcmF3bmllxYQgZG8gdGVqIGFua2lldHksIHB5dGFuaWEgbHViIG9kcG93aWVkemkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkeWNqYSBweXRhxYQgYW5raWV0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdUYWsvTmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ1JhZGlvIChMaXN0YSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnUG9sZSB3eWJvcnUgKExpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ1R5cCBweXRhbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnS29tcGxldG5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdOaWVrb21wbGV0bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0VkeWNqYSBweXRhxYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICdFZHljamEgb2Rwb3dpZWR6aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICdTdGF0eXN0eWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICdOaWUgbWFzeiB1cHJhd25pZcWEIGRvIHRlaiBhbmtpZXR5IGx1YiBzemN6ZWfDs8WCw7N3IHN0YXR5c3R5a2khJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ1N6Y3plZ8OzxYJ5IHN0YXR5c3R5a2knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICdOaWUgbW/FvG5hIHptaWVuacSHIHN0YW51ISBCcmFrIHpkZWZpbmlvd2FueWNoIHB5dGHFhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICdOaWUgbW/FvG5hIHptaWVuacSHIHN0YW51ISBQeXRhbmllIG5pZWtvbXBsZXRuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAnWm1pZW5pb25vIHN0YW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0gTmllIHd5YnJhbm8ga29sZWpraSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJy0gTmllIHd5YnJhbm8gdHlwdSB6Z8WCb3N6ZW5pYSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHNlcnZpY2Ugc2VsZWN0ZWQgLSd9ID0gJy0gTmllIHd5YnJhbm8gemfFgm9zemVuaWEgdXPFgnVnIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctIFptaWXFhCBzdGFuIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnTmFkcnrEmWRueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAnTmllYWt0dWFsbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ05vd3kgc3Rhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdPcGlzIGFua2lldHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdvZHBvd2llZHppYW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ25pZSBvZHBvd2llZHppYW5vJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdEemnEmWt1asSZbXkgemEgd3lwZcWCbmllbmllIGFua2lldHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnQW5raWV0YSB6YWtvxYRjem9uYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnV2lhZG9tb8WbxIcgYW5raWV0eSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJ01vZHXFgiBuaWUgd8WCxIVjem9ueS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICdUYSBmdW5rY2pvbmFsbm/Fm8SHIG5pZSBqZXN0IHfFgsSFY3pvbmEuIFByb3N6xJkgc2tvbnRha3R1aiBzacSZwqB6IGFkbWluaXN0cmF0b3JlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJ0LFgsSFZCBhbmtpZXR5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnTmllcHJhd2lkxYJvd3kga2x1Y3ogYW5raWV0eS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJ1dwcm93YWR6b255IGtsdWN6IGFua2lldHkgamVzdCBuaWVwcmF3aWTFgm93eS4gSmXFm2xpIHRyYWZpxYJlxZsgdHV0YWogcHJ6eSBwb21vY3kgbGlua3UsIGJ5xIcgbW/FvGUgamVzdCBvbiBuaWVha3R1YWxueSBsdWIgbmllcHJhd2lkxYJvd3kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnV3luaWsgYW5raWV0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnRGFuZSB3eW5pa293ZSBhbmtpZXR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdKdcW8IG9kcG93aWVkemlhxYJlxZsgbmEgdMSZIGFua2lldMSZLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnTGlzdGEgYW5raWV0JzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnQ3p5IG5hIHBld25vIGNoY2VzeiB1c3VuxIXEhyB0byBweXRhbmllPyBXc3p5c3RraWUgendpxIV6YW5lIGRhbmUgYsSZZMSFIFVTVU5JxJhURSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nfSA9ICdDenkgbmEgcGV3bm8gY2hjZXN6IHVzdW7EhcSHIHTEmSBvZHBvd2llZMW6Pyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdNb2R1xYIgYW5raWV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnTW9kdcWCIGRvIGVkeWNqaSBweXRhxYQgYW5raWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3N6eXN0a2llIHBhcmFtZXRyeSBkbGEgYW5raWV0IHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdMaWN6YmEgZG5pIHBvIGt0w7NyeWNoIG5hc3TEhXBpIHd5c8WCYW5pZSDFvMSFZGFuaWEgd3lwZcWCbmllbmlhIGFua2lldHkuIFdwcm93YWR6ZW5pZSAiMCIgc3Bvd29kdWplIHd5c8WCYW5pZSBlLW1haWxhIHphd3N6ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnRG9tecWbbG5hIGJ1ZG93YSBpbmZvcm1hY2ppIGRsIHXFvHl0a293bmlrYSBvZG5vxZtuaWUgbm93ZWogYW5raWV0eS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdEb215xZtsbnkgbmFkYXdjYSBpbmZvcm1hY2ppIG8gbm93ZWogYW5raWVjaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0RvbXnFm2xueSB0ZW1hdCBpbmZvcm1hY2ppIG8gbm93ZWogYW5raWV0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnRGVmbml1amUgbW9kdcWCIHByemVnbMSFZHUgd3nFm3dpZXRsYW5pYSBsaXN0IGFua2lldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnT2tyZcWbbGEgZ3J1cHksIGt0w7NyZSBtYWrEhSBkb3N0xJlwIGRvIHptaWFueSBzdGF0dXPDs3cgYW5raWV0LiBUYWJlbGEgamVzdCBkb215xZtsbmllIHB1c3RhIGkgYWdlbmNpIHplIHdzenlzdGtpY2ggZ3J1cCBtb2fEhSB6bWllbmlhxIcgc3RhdHVzeS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBtYWtzeW1hbG7EhSBsaWN6YsSZIGFua2lldCB3eXN5xYJhbml1IGRvIEtsaWVudGEgdyBjacSFZ3UgMzAgZG5pLiAoMCBvem5hY3phIGJyYWsgb2dyYW5pY3plbmlhLCB3c3p5c3RraWUgxbzEhWRhbmlhIGLEmWTEhSB3eXN5xYJhbmUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnVXN0YWxhIGxpY3pixJkgZ29kemluIGt0w7NyZSBtdXN6xIUgbWluxIXEhyBvZCB6YW1rbmnEmWNpYSB6Z8WCb3N6ZW5pYSBkbyB3eXPFgmFuaWEgYW5raWV0eSAoMCBvem5hY3phIGJlenp3xYJvY3puxIUgd3lzecWCa8SZIHByenkgemFteWthbml1IHpnxYJvc3plbmlhKS4gVXdhZ2E6IG9ww7PFum5pb25lIHd5c3nFgmFuaWUgYW5raWV0eSBqZXN0IHJlYWxpem93YW5lIHByemV6IERlbW9uYSBPVFJTLCBwbyB1cHJ6ZWRuaWVqIGFrdHl3YWNqaSB3IHVzdGF3aWVuaWFjaDogXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5pdWplIGRvbXnFm2xuxIUgd3lzb2tvxZvEhyB3aWRva8OzdyBSaWNodGV4dCBkbGEgZWxlbWVudMOzdyBTdXJ2ZXlab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5pdWplIG1ha3N5bWFsbsSFIHd5c29rb8WbxIcgd2lkb2vDs3cgUmljaHRleHQgZGxhIGVsZW1lbnTDs3cgU3VydmV5Wm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSB3aWRvY3puZSBrb2x1bW55IHcgcHJ6ZWdsxIVkemllIGFua2lldC4gVGEgb3BjamEgbmllIHdwxYJ5d2EgbmEgcG96eWNqxJkga29sdW1uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnRWR5dHVqIGluZm9ybWFjamUgb2fDs2xuZSBhbmtpZXR5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnRWR5dHVqIHB5dGFuaWEgYW5raWV0eS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnV8WCxIVjeiBsdWIgd3nFgsSFY3ogZWtyYW4gU2hvd1ZvdGVEYXRhIHcgaW50ZXJmZWpzaWUgcHVibGljem55bSBhYnkgcG9rYXphxIcgd3luaWtpIGFua2lldHkgZ2R5IGtsaWVudCBwcsOzYnVqZSBvZHBvd2llZHppZcSHIG5hIGFraWV0xJkgZHJ1Z2kgcmF6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ1fFgsSFY3phIGx1YiB3ecWCxIVjemEgc3ByYXdkemFuaWUgd2FydW5rdSB3eXN5xYJraSBkbGEgdXPFgnVnaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICdXxYLEhWN6YSBsdWIgd3nFgsSFY3phIHNwcmF3ZHphbmllIHdhcnVua3Ugd3lzecWCa2kgZGxhIHR5cHUgemfFgm9zemVuaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHXFgiBmcm9udGVuZCByZWplc3RydWrEhWN5IGRvZGF3YW5pZSBhbmtpZXQgdyBwYW5lbHUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdcWCIGZyb250ZW5kIHJlamVzdHJ1asSFY3kgZWR5Y2rEmSBhbmtpZXQgdyBwYW5lbHUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHXFgiBmcm9udGVuZCByZWplc3RydWrEhWN5IHN0YXR5c3R5a8SZIGFua2lldCB3IHBhbmVsdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1xYIgZnJvbnRlbmQgcmVqZXN0cnVqxIVjeSBwb2RnbMSFZCBhbmtpZXQgdyBwYW5lbHUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnTW9kdcWCIGZyb250ZW5kIHJlamVzdHJ1asSFY3kgb2JpZWt0IFB1YmxpY1N1cnZleSB3IG9ic3phcnplIHB1YmxpY3pueW0gYW5raWV0eS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ0dkeSB0byB3eXJhxbxlbmllIHJlZ3VsYXJuZSBqZXN0IHNwZcWCbmlvbmUsIG5pZSB6b3N0YW5pZSB3eXPFgmFuYSDFvGFkbmEgYW5raWV0YSBkbyBrbGllbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0cnkgZGxhIHN0cm9uIChuYSBrdMOzcnljaCBwb2thenl3YW5lIHPEhSBhbmtpZXR5KSBkbGEgbWHFgmVnbyBwcnplZ2zEhWR1IGFua2lldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICdBbmtpZXRhIHB1YmxpY3puYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bva2F6dWplIGxpbmsgdyBtZW51IGRvIGVkeWNqaSBhbmtpZXR5IHcgamVqIHByenlibGnFvG9ueW0gd2lkb2t1IHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bva2F6dWplIGxpbmsgdyBtZW51IGRvIGVkeWNqaSBweXRhxYQgYW5raWV0eSB3IGplaiBwcnp5YmxpxbxvbnltIHdpZG9rdSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bva2F6dWplIHcgbWVudSBsaW5rIHdzdGVjeiB3IHdpZG9rdSBwcnp5YmxpxbxvbnltIGFua2lldHkgdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG9rYXp1amUgbGluayB3IG1lbnUgZG8gcHJ6eWJsacW8YW5pYSBzemN6ZWfDs8WCw7N3IHN0YXR5c3R5ayBhbmtpZXR5IHcgamVqIHdpZG9rdSBwcnp5YmxpxbxvbnltIHcgaW50ZXJmZWpzaWUgYWdlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdTemN6ZWfDs8WCeSBzdGF0eXN0eWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnTW9kdcWCIGRvZGF3YW5pYSBhbmtpZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICdNb2R1xYIgZWR5Y2ppIGFua2lldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdCAibWHFgmVnbyIgcHJ6ZWdsxIVkdSBhbmtpZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNb2R1xYIgc3RhdHlzdHlrIGFua2lldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ1BvZGdsxIVkIGFua2lldHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAnTGltaXQgaWxvxZtjaSBhbmtpZXQgdyAibWHFgnltIiBwcnplZ2zEhWR6aWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnQW5raWV0eSBuaWUgYsSZZMSFIHd5c3nFgmFuZSBuYSBza29uZmlndXJvd2FuZSBhZHJlc3kgZW1haWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdJZGVudHlmaWthY2phIGRsYSBhbmtpZXR5LCBucC4gU3VydmV5IywgTXlTdXJ2ZXkjLiBEb215xZtsbmllOiBTdXJ2ZXkjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ1pkYXJ6ZW5pZSB6Z8WCb3N6ZW5pYSB3eXN5xYJhIGF1dG9tYXR5Y3puaWUgZS1tYWlsYSB6IHByb8WbYsSFIG8gd3lwZcWCbmllbmllIGFua2lldHkgcG8gemFta25pxJljaXUgemfFgm9zemVuaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ1d5endhbGFjeiBvcMOzxbpuaW9uZWogd3lzecWCa2kgcHLDs8WbYiBvIHd5cGXFgm5pZW5pZSBhbmtpZXR5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJ1BvZGdsxIVkIHN6Y3plZ8OzxYLDs3cgc3RhdHlzdHlrLic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X0JSX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0NyaWFyIE5vdmEgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1w6fDo28gZGEgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdDb3JwbyBkYSBOb3RpZmljYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ1RpcG9zIGRlIENoYW1hZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmnDp8OjbyBJbnRlcm5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICdDb25kacOnw7VlcyBkbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnUG9yIGZhdm9yLCBlc2NvbGhhIHVtYSBwcm9wcmllZGFkZSBkbyBjbGllbnRlIHBhcmEgYWRpY2lvbmFyIHVtYSBjb25kacOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJ0NoYXZlIGRlIHBlc3F1aXNhIHDDumJsaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnRXhlbXBsbyBkZSBwZXNxdWlzYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ0VkaXRhciBJbmZvcm1hw6fDtWVzIEdlcmFpcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBQZXJndW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAnVm9jw6ogZXN0YSBhcXVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdQZXJndW50YXMgZGEgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnQWRpY2lvbmFyIFBlcmd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnRXNjcmV2YSBhIHBlcmd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ1Jlc3Bvc3RhIHJlcXVlcmlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ05lbmh1bWEgcXVlc3TDo28gc2FsdmEgcGFyYSBlc3RhIHBlc3F1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ1Blcmd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ1Jlc3Bvc3RhIFJlcXVlcmlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnUXVhbmRvIHZvY8OqIHRlcm1pbmFyIGRlIGVkaXRhciBhcyBxdWVzdMO1ZXMgZGEgcGVzcXVpc2EsIGFwZW5hcyBmZWNoZSBhIHRlbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnRmVjaGFyIGVzdGEgamFuZWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdFZGl0YXIgUGVyZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICd2b2x0YXIgw6BzIHBlcmd1bnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICdRdWVzdMOjbzonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICdQb3Nzw612ZWlzIFJlc3Bvc3RhcyBQYXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdBZGljaW9uYXIgUmVzcG9zdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdOw6NvIGjDoSByZXNwb3N0YXMgc2FsdmFzIHBhcmEgZXN0YSBxdWVzdMOjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnRXN0YSBwZXJndW50YSBuw6NvIHBvc3N1aSB2w6FyaWFzIHJlc3Bvc3RhcywgdW1hIMOhcmVhIGRlIHRleHRvIHNlcsOhIG1vc3RyYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnRWRpdGFyIFJlc3Bvc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ3ZvbHRhciBwYXJhIGVkaXRhciBwZXJndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnUmVzcG9zdGE6JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJ09ww6fDtWVzIGRlIHZpc8OjbyBnZXJhbCBkYSBwZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICdCdXNjYXMgbm9zIGF0cmlidXRvcyBOw7ptZXJvLCBUw610dWxvLCBJbnRyb2R1w6fDo28sIERlc2NyacOnw6NvLCBFbnZpYWRvciBkZSBOb3RpZmljYcOnw6NvLCBBc3N1bnRvIGRlIE5vdGlmaWNhw6fDo28gZSBDb3JwbyBkZSBOb3RpZmljYcOnw6NvLCBzb2JyZXNjcmV2ZW5kbyBhdHJpYnV0b3MgZGUgbWVzbW8gbm9tZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnSG9yYSBkZSBDcmlhw6fDo28gZGEgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVzdHJpY3Rpb24nfSA9ICdTZW0gcmVzdHJpw6fDtWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICdBcGVuYXMgcGVzcXVpc2FzIGNyaWFkYXMgZW50cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnUXRkLiBtw6F4LiBkZSBwZXNxdWlzYXMgZXhpYmlkYXMgcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ1JlbWV0ZW50ZSBkYSBOb3RpZmljYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnQXNzdW50byBkYSBOb3RpZmljYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNb2RpZmljYWRvIHBvcic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICdSZXN1bW8gZGUgRXN0YXTDrXN0aWNhcyBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ1RhYmVsYSBkZSBSZXF1aXNpw6fDtWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICdTZWxlY2lvbmFyIHRvZG9zIG9zIHBlZGlkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnSG9yYSBkZSBFbnZpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdIb3JhIGRvIFZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJ1NlbGVjaW9uYXIgZXN0ZSBwZWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICdWZXIgZGV0YWxoZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAnRXhjbHVpciBlc3RhdMOtc3RpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdEZXRhbGhlcyBkZSBFc3RhdMOtc3RpY2FzIGRhIFBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICd2b2x0YXIgYW8gcmVzdW1vIGRlIGVzdGF0w61zdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJ1ZvdG8gYW50ZXJpb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnUHLDs3hpbW8gdm90byc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hw6fDo28gZGEgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ1NvbGljaXRhw6fDtWVzIGVudmlhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdTb2xpY2l0YcOnw7VlcyByZWNlYmlkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICdEZXRhbGhlcyBkYSBQZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICdTZXJ2acOnbyBkbyBjaGFtYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnR3LDoWZpY29zIGRlIFJlc3VsdGFkb3MgZGEgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJ1NlbSByZXN1bHRhZG9zIGRlIGVzdGF0w61zdGljYXMuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ1Blc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnUG9yIGZhdm9yLCByZXNwb25kYSBlc3RhcyBxdWVzdMO1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnTW9zdHJhciBtaW5oYXMgcmVzcG9zdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICdFc3RhcyBzw6NvIHN1YXMgcmVzcG9zdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ1TDrXR1bG8gZGEgUGVzcXVpc2EnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ0FkaWNpb25hciBOb3ZhIFBlc3F1aXNhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJ1ZvY8OqIG7Do28gdGVtIHBlcm1pc3PDo28gcGFyYSBlc3RhIHBlc3F1aXNhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICdOZW5odW0gSUQgZGEgUGVzcXVpc2EgaW5mb3JtYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ0VkaXRhciBQZXNxdWlzYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICdWb2PDqiBuw6NvIHRlbSBwZXJtaXNzw6NvIHBhcmEgZXN0YSBwZXNxdWlzYSBvdSBwZXJndW50YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICdWb2PDqiBuw6NvIHRlbSBwZXJtaXNzw6NvIHBhcmEgZXN0YSBwZXNxdWlzYSwgcGVyZ3VudGEgb3UgcmVzcG9zdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBQZXJndW50YXMgZGEgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnU2ltL07Do28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnUmFkaW8gKExpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICdDaGVja2JveCAoTGlzdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnVGlwbyBkZSBxdWVzdMOjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ0NvbXBsZXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdJbmNvbXBsZXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICdFZGnDp8OjbyBkZSBQZXJndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ0VkacOnw6NvIGRlIFJlc3Bvc3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ1Jlc3VtbyBkZSBFc3RhdMOtc3RpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICdWb2PDqiBuw6NvIHRlbSBwZXJtaXNzw6NvIHBhcmEgZXN0YSBwZXNxdWlzYSBvdSBkZXRhbGhlcyBkZSBlc3RhdMOtc3RpY2FzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICdEZXRhbGhlIGRhIGVzdGF0w61zdGljYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ07Do28gw6kgcG9zc8OtdmVsIGNvbmZpZ3VyYXIgbyBub3ZvIGVzdGFkby4gTmVuaHVtYSBxdWVzdMOjbyBkZWZpbmlkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICdOw6NvIMOpIHBvc3PDrXZlbCBkZWZpbmlyIG5vdm8gc3RhdHVzISBQZXJndW50YXMgaW5jb21wbGV0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ0VzdGFkbyBhbHRlcmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnTmVuaHVtYSBmaWxhIHNlbGVjaW9uYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJy0gTmVuaHVtIHRpcG8gZGUgY2hhbWFkbyBzZWxlY2lvbmFkbyAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHNlcnZpY2Ugc2VsZWN0ZWQgLSd9ID0gJy0gTmVuaHVtIHNlcnZpw6dvIGRlIGNoYW1hZG8gc2VsZWNpb25hZG8gLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gQWx0ZXJhciBFc3RhZG8gLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICdNZXN0cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCd9ID0gJ0ludsOhbGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnTm92byBlc3RhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnRGVzY3Jpw6fDo28gZGEgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdSZXNwb25kaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ07Do28gcmVzcG9uZGlkbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnT2JyaWdhZG8gcGVsYSBzdWEgcGFydGljaXBhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnQSBwZXNxdWlzYSBlc3TDoSBmaW5hbGl6YWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICdNZW5zYWdlbSBkYSBQZXNxdWlzYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJ03Ds2R1bG8gbsOjbyBoYWJpbGl0YWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJ0VzdGEgZnVuY2lvbmFsaWRhZGUgbsOjbyBlc3TDoSBhdGl2YSwgcG9yIGZhdm9yIGNvbnRhdGUgc2V1IGFkbWluaXN0cmFkb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICdFcnJvIG5hIFBlc3F1aXNhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnQ2hhdmUgZGEgcGVzcXVpc2EgaW52w6FsaWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnQSBjaGF2ZSBkYSBwZXNxdWlzYSBpbnNlcmlkYSDDqSBpbnbDoWxpZGEsIHNlIHZvY8OqIGFjZXNzb3UgdW0gbGluaywgdGFsdmV6IGVsZSBlc3RlamEgb2Jzb2xldG8gb3UgcXVlYnJhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnVm90byBkYSBQZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnRGFkb3MgZG8gdm90byBkYSBwZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnVm9jw6ogasOhIHJlc3BvbmRldSBhIHBlc3F1aXNhLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnTGlzdGEgZGUgZW5xdWV0ZXMnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICdWb2PDqiByZWFsbWVudGUgZGVzZWphIGV4Y2x1aXIgZXNzYSBxdWVzdMOjbz8gVE9ET1Mgb3MgZGFkb3MgYXNzb2NpYWRvcyBzZXLDo28gUEVSRElET1MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnVm9jw6ogcmVhbG1lbnRlIHF1ZXIgZXhjbHVpciBlc3NhIHJlc3Bvc3RhID8nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnVW0gTcOzZHVsbyBkZSBQZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ1VtIG3Ds2R1bG8gcGFyYSBlZGl0YXIgcGVyZ3VudGFzIGRlIHBlc3F1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RvZG9zIG9zIHBhcsOibWV0cm9zIHBhcmEgYSBQZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdJbnRlcnZhbG8gZGUgZGlhcyBhcMOzcyBlbnZpYXIgdW0gZS1tYWlsIGRlIHBlc3F1aXNhIGRlbnRybyBkbyBxdWFsIG5vdmFzIHJlcXVpc2nDp8O1ZXMgZGUgcGVzcXVpc2EgbsOjbyBzZXLDo28gZW52aWFkYXMgcGFyYSBvIG1lc21vIGNsaWVudGUuIFNlbGVjaW9uYXIgMCBpcsOhIHNlbXByZSBlbnZpYXIgbyBlLW1haWwgZGUgcGVzcXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NvcnBvIHBhZHLDo28gcGFyYSBvIGUtbWFpbCBkZSBub3RpZmljYcOnw6NvIGRlIGNsaWVudGVzIHNvYnJlIG5vdmEgcGVzcXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnUmVtZXRlbnRlIHBhZHLDo28gcGFyYSBvIGUtbWFpbCBkZSBub3RpZmljYcOnw6NvIGRlIGNsaWVudGVzIHNvYnJlIG5vdmEgcGVzcXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0Fzc3VudG8gcGFkcsOjbyBwYXJhIG8gZS1tYWlsIGRlIG5vdGlmaWNhw6fDo28gZGUgY2xpZW50ZXMgc29icmUgbm92YSBwZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIG8gbcOzZHVsbyBkZSB2aXPDo28gZ2VyYWwgcGFyYSBleGliaXIgYSB2aXPDo28gcGVxdWVuYSBkZSB1bWEgbGlzdGEgZGUgcGVzcXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJ0RlZmluZSBncnVwb3MgcXVlIHTDqm0gcGVybWlzc8OjbyBwYXJhIGFsdGVyYXIgbyBzdGF0dXMgZGEgcGVzcXVpc2EuICBBIG1hdHJpeiBlc3TDoSB2YXppYSBwb3IgcGFkcsOjbyBlIGFnZW50ZXMgZGUgdG9kb3Mgb3MgZ3J1cG9zIHBvZGVtIGFsdGVyYXIgbyBzdGF0dXMgZGEgcGVzcXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnRGVmaW5lIHNlIGFzIHNvbGljaXRhw6fDtWVzIGRlIHBlcXVpc2Egc2Vyw6NvIGVudmlhZGFzIGFwZW5hcyBwYXJhIGNsaWVudGVzIHJlYWlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnRGVmaW5lIGEgbcOheGltYSBxdWFudGlkYWRlIGRlIHBlc3F1aXNhcyBxdWUgc8OjbyBlbnZpYWRhcyBwYXJhIHVtIGNsaWVudGUgYSBjYWRhIDMwIGRpYXMgKDAgc2lnbmlmaWNhIHF1ZSBuw6NvIGjDoSBtw6F4aW1vOyB0b2RhcyBhcyByZXF1aXNpw6fDtWVzIGRlIHBlc3F1aXNhIHNlcsOjbyBlbnZpYWRhcykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICdEZWZpbmUgYSBxdWFudGlkYWRlIGRlIGhvcmFzIHF1ZSB1bSBjaGFtYWRvIGRldmUgZXN0YXIgZmVjaGFkbyBwYXJhIGVudmlvIGRlIHVtYSBwZXNxdWlzYSAoMCBzaWduaWZpY2EgZW52aWFyIGltZWRpYXRhbWVudGUgYXDDs3MgZmVjaGFtZW50bykuIE5vdGE6IHVtIGVudmlvIHRhcmRpbyBkZSBwZXNxdWlzYSDDqSBmZWl0byBwZWxvIE9UUlMgRGFlbW9uLCBzb2IgYXRpdmHDp8OjbyBkYSBjb25maWd1cmHDp8OjbyAgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgZGEgbGlzdGEgc3VzcGVuc2EgcGFyYSBjcmlhw6fDo28gZGUgY29uZGnDp8O1ZXMgZGUgZW52aW8gKDA9PiBpbmF0aXZvLCAxPT4gYXRpdm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICdEZWZpbmUgYSBhbHR1cmEgcGFkcsOjbyBwYXJhIFJpY2h0ZXh0IG5vcyBlbGVtZW50b3MgZGEgU3VydmV5Wm9vbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICdEZWZpbmUgb3MgZ3J1cG9zIChydykgcXVlIHBvZGVtIGV4Y2x1aXIgYXMgZXN0YXTDrXN0aWNhcyBkYSBwZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5lIGEgYWx0dXJhIG3DoXhpbWEgcGFyYSB2aXN1YWxpemHDp8O1ZXMgZG8gUmljaHRleHQgbm9zIGVsZW1lbnRvcyBkbyBTdXJ2ZXlab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgZXhpYmlkYXMgbmEgdmlzw6NvIGdlcmFsIGRlIHBlc3F1aXNhLiBFc3RhIG9ww6fDo28gbsOjbyB0ZW0gZWZlaXRvIHNvYnJlIGEgcG9zacOnw6NvIGRhcyBjb2x1bmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnRGV0ZXJtaW5hIHNlIG8gbcOzZHVsbyBkZSBlc3RhdMOtc3RpY2FzIHBvZGUgZ2VyYXIgbGlzdGFzIGRlIHBlc3F1aXNhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICdFZGl0YXIgaW5mb3JtYcOnw6NvIGdlcmFsIGRhIHBlc3F1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnRWRpdGFyIGFzIHF1ZXN0w7VlcyBkYSBwZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnSGFiaWxpdGEgb3UgZGVzYWJpbGl0YSBhIHRlbGEgU2hvd1ZvdGVEYXRhIG5hIGludGVyZmFjZSBww7pibGljYSBwYXJhIGV4aWJpciBkYWRvcyBkbyByZXN1bHRhZG8gZGUgdW1hIHBlc3F1aXNhIGVzcGVjw61maWNhIHF1YW5kbyBvIGNsaWVudGUgdGVudGEgcmVzcG9uZGVyIHVtYSBwZXNxdWlzYSBwZWxhIHNlZ3VuZGEgdmV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ0F0aXZhIG91IGRlc2F0aXZhIHZlcmlmaWNhw6fDo28gZGUgY29uZGnDp8O1ZXMgZGUgc2VydmnDp29zIHBhcmEgZW52aW8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnQXRpdmEgb3UgZGVzYXRpdmEgdmVyaWZpY2HDp8OjbyBkZSBjb25kacOnw7VlcyBkZSB0aXBvcyBwYXJhIGVudmlvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RybyBkZSBtw7NkdWxvIGRlIGludGVyZmFjZSBwYXJhIGFkacOnw6NvIGRlIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RybyBkZSBtw7NkdWxvIGRlIGludGVyZmFjZSBwYXJhIGVkacOnw6NvIGRlIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGUgbcOzZHVsbyBkZSBpbnRlcmZhY2UgcGFyYSBlc3RhdMOtc3RpY2EgZGUgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZGUgaW50ZXJmYWNlIHBhcmEgZGV0YWxoZXMgZGUgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZGUgaW50ZXJmYWNlIHBhcmEgbyBvYmpldG8gUHVibGljU3VydmV5IG5hIMOhcmVhIGRlIHBlc3F1aXNhIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnU2UgZXN0YSByZWdleCBmb3IgZW5jb250cmFkYSwgbmVuaHVtYSBwZXNxdWlzYSBzZXLDoSBlbnZpYWRvIHBhcmEgbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0Lid9ID0gJ0xpbWl0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIGFzIHDDoWdpbmFzIChuYXMgcXVhaXMgYXMgcGVzcXVpc2FzIHPDo28gbW9zdHJhZGFzKSBkYSB2aXPDo28gZ2VyYWwgZGUgcGVzcXVpc2EgcGVxdWVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICdQZXNxdWlzYSBQw7pibGljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHRzIG9sZGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgYW1vdW50IG9mIGRheXMgd2lsbCBiZSBkZWxldGVkLiBOb3RlOiBkZWxldGUgcmVzdWx0cyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ1Rhc2sjIyNTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZVwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXhpYmUgdW0gbGluayBubyBtZW51IHBhcmEgZWRpdGFyIHVtYSBwZXNxdWlzYSBlbSBzdWEgdmlzw6NvIGRlIGRldGFsaGVzIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXhpYmUgdW0gbGluayBubyBtZW51IHBhcmEgZWRpdGFyIHF1ZXN0w7VlcyBkZSBwZXNxdWlzYSBlbSBzdWEgdmlzw6NvIGRlIGRldGFsaGVzIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFeGliZSB1bSBsaW5rIG5vIG1lbnUgcGFyYSB2b2x0YXIgZGEgdmlzw6NvIGRlIGRldGFsaGVzIGRlIHVtYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0V4aWJlIHVtIGxpbmsgbm8gbWVudSBwYXJhIGRldGFsaGFyIGFzIGVzdGF0w61zdGljYXMgZGEgcGVzcXVpc2EgZW0gc3VhIHZpc8OjbyBkZSBkZXRhbGhlcyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnRGV0YWxoZXMgZGEgZXN0YXTDrXN0aWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ03Ds2R1bG8gZGUgYWRpw6fDo28gZGUgcGVzcXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICdNw7NkdWxvIGRlIGVkacOnw6NvIGRlIHBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXRlIGRhIFZpc8OjbyBHZXJhbCBkZSBQZXNxdWlzYSAiUGVxdWVuYSInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNw7NkdWxvIGRlIEVzdGF0w61zdGljYXMgZGUgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ03Ds2R1bG8gZGUgRGV0YWxoZSBkZSBQZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICdMaW1pdGUgZGUgcGVzcXVpc2EgcG9yIHDDoWdpbmEgcGFyYSBWaXPDo28gR2VyYWwgZGEgcGVzcXVpc2EgIlBlcXVlbm8iLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ0FzIHBlc3F1aXNhcyBuw6NvIHNlcsOhIGVudmlhZGFzIHBhcmEgb3MgZW5kZXJlw6dvcyBkZSBlLW1haWwgY29uZmlndXJhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnTyBpZGVudGlmaWNhZG9yIGRlIHVtYSBwZXNxdWlzYSwgZXguIFBlc3F1aXNhIywgTWluaGFQZXNxdWlzYSMuIE8gcGFkcsOjbyDDqSBQZXNxdWlzYSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG8gZGUgY2hhbWFkbyBwYXJhIGVudmlhciByZXF1aXNpw6fDtWVzIGRlIHBlc3F1aXNhIHZpYSBlLW1haWwgYXV0b21hdGljYW1lbnRlIHBhcmEgY2xpZW50ZXMgc2UgdW0gY2hhbWFkbyBmb3IgZmVjaGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJ0FjaW9uYXIgb3MgcmVzdWx0YWRvcyBkYSBleGNsdXPDo28gKCBpbmNsdWluZG8gZGFkb3MgZGUgdm90byBlIHNvbGljaXRhw6fDtWVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnRGlzcGFyYXIgbyBlbnZpbyBkZSBzb2xpY2l0YcOnw7VlcyBkZSBwZXNxdWlzYSBhdHJhc2FkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnWm9vbSBlbSBkZXRhbGhlcyBkZSBlc3RhdMOtc3RpY2FzLic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDEyIEZDQ04gLSBSdWkgRnJhbmNpc2NvIDxydWkuZnJhbmNpc2NvQGZjY24ucHQ+CiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X1BUX1N1cnZleTsKCnVzZSB1dGY4OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnQ3JpYXIgbm92byBpbnF1w6lyaXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ0ludHJvZHXDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyacOnw6NvIGludGVybmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdFZGl0YXIgaW5xdcOpcml0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm8nfSA9ICdJbmZvcm1hw6fDo28gZ2Vuw6lyaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAnVmlzdGEgZGUgZXN0YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnVGFiZWxhIGRlIHBlZGlkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnSG9yYSBkZSBlbnZpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdIb3JhIGRlIHJlc3Bvc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGFpbHMnfSA9ICdEZXRhbGhlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ07Do28gZXhpc3RlbSBwZXJndW50YXMgbm8gaW5xdcOpcml0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnRXN0YXTDrXN0aWNhIGRldGFsaGEgZG8gaW5xdcOpcml0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAndm9sdGFyIMOgIHZpc3RhIGRlIGVzdGF0w61zdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR28gYmFjayd9ID0gJ3ZvbHRhcic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICdFZGl0YXIgcGVyZ3VudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ0FkaWNpb25hciBwZXJndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ0VzY3JldmVyIGEgcGVyZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ1Blcmd1bnRhcyBkbyBpbnF1w6lyaXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnUGVyZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ0VkaXRhciBwZXJndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ3ZvbHRhciDDoHMgcGVyZ3VudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnUmVzcG9zdGFzIHBvc3PDrXZlaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ0FkaWNpb25hciByZXNwb3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ07Do28gZXhpc3RlbSB2w6FyaWFzIHJlc3Bvc3RhcywgdmFpIHNlciBtb3N0cmFkYSB1bWEgw6FyZWEgZGUgdGV4dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICdFZGl0YXIgcmVzcG9zdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAndm9sdGFyIMOgIGVkacOnw6NvIGRhIHBlcmd1bnRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnRGVmaW5pw6fDtWVzIGRlIGNvbnRleHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gU3VydmV5cyBwZXIgcGFnZSd9ID0gJ07Dum1lcm8gZGUgaW5xdcOpcml0b3MgcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ1JlbWV0ZW50ZSBkYSBub3RpZmljYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnQXNzdW50byBkYSBub3RpZmljYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnVGV4dG8gZGEgbm90aWZpY2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIFRpbWUnfSA9ICdDcmlhZG8gZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBCeSd9ID0gJ0NyaWFkbyBwb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBUaW1lJ30gPSAnTW9kaWZpY2FkbyBlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAnTW9kaWZpY2FkbyBwb3InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw6NvIGRlIGlucXXDqXJpdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ1BlZGlkb3MgZW52aWFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ0lucXXDqXJpdG9zIHJlc3BvbmRpZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnRWRpdGFyIGluZm9ybWHDp8OjbyBnZW7DqXJpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdFZGl0YXIgcGVyZ3VudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdEZXRhbGhlcyBkZSBlc3RhdMOtc3RpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnRGV0YWxoZXMgZG8gaW5xdcOpcml0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ0dyw6FmaWNvIGRlIHJlc3VsdGFkb3MgZG8gaW5xdcOpcml0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnTsO6bWVybyBkZSByZXNwb3N0YXMnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnSW5xdcOpcml0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZSBuZXh0IHF1ZXN0aW9ucyd9ID0gJ1BybyBmYXZvciwgcmVzcG9uZGEgw6BzIHNlZ3VpbnRlcyBwZXJndW50YXMnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnTcOzZHVsbyBkZSBpbnF1w6lyaXRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnTcOzZHVsbyBwYXJhIGVkaXRhciBhcyBwZXJndW50YXMgZG9zIGlucXXDqXJpdG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RheXMgc3RhcnRpbmcgZnJvbSB0aGUgbGF0ZXN0IGN1c3RvbWVyIHN1cnZleSBlbWFpbCBiZXR3ZWVuIG5vIGN1c3RvbWVyIHN1cnZleSBlbWFpbCBpcyBzZW50LCAoIDAgbWVhbnMgQWx3YXlzIHNlbmQgaXQgKSAuJ30gPSAnTsO6bWVybyBkZSBkaWFzIGVudHJlIGVudmlvIG5vdGlmaWNhw6fDtWVzIHBvciBjbGllbnRlLCAoMCBzaWduaWZpY2EgZW52aWFyIHNlbXByZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0gJ0NvcnBvIHBvciBvbWlzc8OjbyBkbyBlbWFpbCBkYSBub3RpZmljYcOnw6NvIGRlIGlucXXDqXJpdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPSAnUmVtZXRlbnRlIHBvciBvbWlzc8OjbyBkbyBlbWFpbCBkYSBub3RpZmljYcOnw6NvIGRlIGlucXXDqXJpdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPSAnQXNzdW50byBwb3Igb21pc3PDo28gZG8gZW1haWwgZGEgbm90aWZpY2HDp8OjbyBkZSBpbnF1w6lyaXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9ICdEZWZpbmUgYSB2aXN0YSBwZXF1ZW5hIGNvbSBhIGxpc3RhIGRlIGlucXXDqXJpdG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9ICdEZWZpbmUgYXMgY29sdW5hcyBhIG1vc3RyYXIgbmEgdmlzdGEgZGUgaW5xdcOpcml0b3MuIE7Do28gaW50ZXJmZXJlIGNvbSBhIHBvc2nDp8OjbyBkYXMgY29sdW5hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ03Ds2R1bG8gZGUgYXV0byByZWdpc3RvIGRlIGlucXXDqXJpdG9zIGRlIGNsaWVudGUgbm8gaW50ZXJmYWNlIGRlIGFnZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0gJ03Ds2R1bG8gZGUgYXV0byByZWdpc3RvIGRlIGlucXXDqXJpdG9zIGRlIGNsaWVudGUgbm8gaW50ZXJmYWNlIHDDumJsaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdTZSBhIGV4cHJlc3PDo28gcmVndWxhciBjb2luY2lkaXIsIG7Do28gc2Vyw6EgZW52aWFkbyB1bSBpbnF1w6lyaXRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9ICdQYXJhbWV0cml6YcOnw6NvIGRhcyBww6FnaW5hcyBkYSB2aXN0YSBnZXJhbCBkZSBpbnF1w6lyaXRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ0lucXXDqXJpdG8gcMO6YmxpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdGUgcGVxdWVubyBuYSB2aXN0YSBkZSBpbnF1w6lyaXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICdNw7NkdWxvIGRlIGRldGFsaGUgZGUgaW5xdcOpcml0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiJ30gPSAnTsO6bWVybyBkZSBpbnF1w6lyaXRvcyBwb3IgcMOhZ2luYSBuYSB2aXN0YSBwZXF1ZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPSAnSWRlbnRpZmljYWRvciBwYXJhIG9zIGlucXXDqXJpdG9zLiBleC4gU3VydmV5IywgTXlTdXJ2ZXkjLiBQb3Igb21pc3PDo28gw6kgU3VydmV5IyAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBnZXRzIGNsb3NlZC4nfSA9ICdNw7NkdWxvIGRlIGVudmlvIGRlIG5vdGlmaWNhw6fDtWVzIGF1dG9tw6F0aWNhcyBwYXJhIGNsaWVudGVzIHF1YW5kbyB1bSB0aWNrZXQgw6kgZmVjaGFkbyc7CgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ0ludHJvZHXDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmnDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZpZWxkIGlzIHJlcXVpcmVkJ30gPSAnQ2FtcG8gb2JyaWdhdMOzcmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1w6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnRGVzY3Jpw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdDb21wbGV0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnSW5jb21wbGV0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkjJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUnfSA9ICdWYWxvciBwb3Igb21pc3PDo28nOwoKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIG9uIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGFuIHNwZWNpZmljIHZvdGF0aW9uIHdoZW4gY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IGJ5IHNlY29uZCB0aW1lLid9ID0gJ0F0aXZhIG91IGluYXRpdmEgbyBlY3LDoyBTaG93Vm90ZURhdGEgbm8gaW50ZXJmYWNlIHDDumJsaWNvLCBxdWFuZG8gbyBjbGllbnRlIHRlbnRhIHJlc3BvbmRlciBhbyBpbnF1w6lyaXRvIHBlbGEgc2VndW5kYSB2ZXonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnVG9kb3Mgb3MgcGFyw6JtZXRyb3MgcGFyYSBvIG9iamV0byBJbnF1w6lyaXRvIG5vIGludGVyZmFjZSBkZSBhZ2VudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0gJ0RlZmluZSBhIGFsdHVyYSBwb3Igb21pc3PDo28gcGFyYSBvIGVkaXRvciBydGYgcGFyYSBvcyBlbGVtZW50b3MgZG8gaW5xdcOpcml0byc7CgogICAgIwogICAgIyBPQlNPTEVURSBFTlRSSUVTIEZPUiBSRUZFUkVOQ0UsIERPIE5PVCBUUkFOU0xBVEUhCiAgICAjCgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnJ1X1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ9Ch0L7Qt9C00LDRgtGMINC90L7QstGL0Lkg0L7Qv9GA0L7RgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICfQntC/0LjRgdCw0L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICfQl9C90LDQutC+0LzRgdGC0LLQviDRgSDQvtC/0YDQvtGB0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ9Ci0LXQu9C+INGD0LLQtdC00L7QvNC70LXQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAn0KLQuNC/0Ysg0LfQsNGP0LLQvtC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAn0JLQvdGD0YLRgNC10L3QvdC10LUg0L7Qv9C40YHQsNC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0L7QsdGJ0YPRjiDQuNC90YTQvtGA0LzQsNGG0LjRjic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINCy0L7Qv9GA0L7RgdGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJ9CS0Ysg0LfQtNC10YHRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAn0JLQvtC/0YDQvtGB0Ysg0L7Qv9GA0L7RgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ9CU0L7QsdCw0LLRgtGMINCy0L7Qv9GA0L7RgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ9CS0L7Qv9GA0L7RgSDQuCDRgtC40L8g0LLQvtC/0YDQvtGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAn0KLRgNC10LHRg9GO0YLRgdGPINC+0YLQstC10YLRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ9Ch0L7RhdGA0LDQvdC10L3Ri9GFINCy0L7Qv9GA0L7RgdC+0LIg0L3QtdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ9CS0L7Qv9GA0L7RgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICfQotGA0LXQsdGD0Y7RgtGB0Y8g0J7RgtCy0LXRgtGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICfQn9C+INC+0LrQvtC90YfQsNC90LjQuCDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINCy0L7Qv9GA0L7RgdC+0LIg0L7Qv9GA0L7RgdCwINC/0YDQvtGB0YLQviDQt9Cw0LrRgNC+0LnRgtC1INGN0YLQvtGCINGN0LrRgNCw0L0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAn0JfQsNC60YDRi9GC0Ywg0Y3RgtC+INC+0LrQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICfQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQstC+0L/RgNC+0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICfQvdCw0LfQsNC0INC6INCy0L7Qv9GA0L7RgdCw0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAn0JLQvtC/0YDQvtGBOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ9CS0L7Qt9C80L7QttC90YvQtSDQvtGC0LLQtdGC0Ysg0LTQu9GPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICfQlNC+0LHQsNCy0LjRgtGMINC+0YLQstC10YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICfQndC1INC30LDQtNCw0L3RiyDQstCw0YDQuNCw0L3RgtGLINC+0YLQstC10YLQvtCyINC00LvRjyDRjdGC0L7Qs9C+INCy0L7Qv9GA0L7RgdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAn0K3RgtC+0YIg0LLQvtC/0YDQvtGBINC90LUg0L/RgNC10LTRg9GB0LzQsNGC0YDQuNCy0LDQtdGCINC90LXRgdC60L7Qu9GM0LrQviDQvtGC0LLQtdGC0L7Qsiwg0LHRg9C00LXRgiDQv9C+0LrQsNC30LDQvdC+INGC0LXQutGB0YLQvtCy0L7QtS90ZXh0YXJlYSDQv9C+0LvQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICfQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQvtGC0LLQtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ9C90LDQt9Cw0LQg0Log0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRjiDQstC+0L/RgNC+0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAn0J7RgtCy0LXRgjonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaGVzIGluIHRoZSBhdHRyaWJ1dGVzIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keSwgb3ZlcnJpZGluZyBvdGhlciBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVzdHJpY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICfQnNCw0LrRgS4g0LrQvtC7LdCy0L4g0L7Qv9GA0L7RgdC+0LIg0L3QsCDRgdGC0YDQsNC90LjRhtGDJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICfQntGC0L/RgNCw0LLQuNGC0LXQu9GMINGD0LLQtdC00L7QvNC70LXQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICfQotC10LzQsCDRg9Cy0LXQtNC+0LzQu9C10L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICfQmNC30LzQtdC90LjQstGI0LjQuSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICfQn9C+0LTRgNC+0LHQvdC+0YHRgtC4INC+0L/RgNC+0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ9Ci0LDQsdC70LjRhtCwINC+0YLQstC10YLQvtCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAn0JLRgNC10LzRjyDQvtGC0L/RgNCw0LLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ9CS0YDQtdC80Y8g0L7RgtCy0LXRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICfQodC8LiDQv9C+0LTRgNC+0LHQvdC+0YHRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAn0J/QvtC00YDQvtCx0L3QvtGB0YLQuCDQvtC/0YDQvtGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ9C90LDQt9Cw0LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAn0JjQvdGE0L7RgNC80LDRhtC40Y8g0L/QviDQvtC/0YDQvtGB0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ9Ce0YLQv9GA0LDQstC70LXQvdC90YvQtSDQt9Cw0L/RgNC+0YHRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAn0J/QvtC70YPRh9C10L3QvdGL0LUg0L7Qv9GA0L7RgdGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAn0JjQvdGE0L7RgNC80LDQuNGPINC/0L4g0L7Qv9GA0L7RgdGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ9Ch0LXRgNCy0LjRgdGLINC30LDRj9Cy0L7Quic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ9Cg0LXQt9GD0LvRjNGC0LDRgtGLINC+0L/RgNC+0YHQsCDQsiDQs9GA0LDRhNC40LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAn0KHRgtCw0YLQuNGB0YLQuNC60Lgg0L3QtdGCLic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICfQntC/0YDQvtGB0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICfQntGC0LLQtdGC0YzRgtC1INC90LAg0Y3RgtC4INCy0L7Qv9GA0L7RgdGLOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICfQn9C+0LrQsNC30LDRgtGMINC80L7QuCDQvtGC0LLQtdGC0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ9CS0LDRiNC4INC+0YLQstC10YLRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICfQndCw0LfQstCw0L3QuNC1INC+0L/RgNC+0YHQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAn0JTQvtCx0LDQstC40YLRjCDQvdC+0LLRi9C5INC+0L/RgNC+0YEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAn0KMg0LLQsNGBINC90LXRgiDRgNCw0LfRgNC10YjQtdC90LjRjyDQtNC70Y8g0Y3RgtC+0LPQviDQvtC/0YDQvtGB0LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINC+0L/RgNC+0YEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAn0KMg0LLQsNGBINC90LXRgiDRgNCw0LfRgNC10YjQtdC90LjRjyDQtNC70Y8g0Y3RgtC+0LPQviDQvtC/0YDQvtGB0LAg0LjQu9C4INCy0L7Qv9GA0L7RgdCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJ9CjINCy0LDRgSDQvdC10YIg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LTQu9GPINGN0YLQvtCz0L4g0L7Qv9GA0L7RgdCwLCDQstC+0L/RgNC+0YHQsCDQuNC70Lgg0L7RgtCy0LXRgtCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICfQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQstC+0L/RgNC+0YEg0LIg0L7Qv9GA0L7RgdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ9CU0LAv0J3QtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ9Ci0L7Rh9C60LggKNCh0L/QuNGB0L7QuiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAn0JPQsNC70L7Rh9C60LggKNCh0L/QuNGB0L7QuiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICfQotC40L8g0LLQvtC/0YDQvtGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICfQl9Cw0LLQtdGA0YjQtdC90L3Ri9C5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICfQndC10LfQsNCy0LXRgNGI0LXQvdC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0LLQvtC/0YDQvtGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0L7RgtCy0LXRgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICfQntCx0LfQvtGAINGB0YLQsNGC0LjRgdGC0LjQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICfQoyDQstCw0YEg0L3QtdGCINGA0LDQt9GA0LXRiNC10L3QuNGPINC00LvRjyDRjdGC0L7Qs9C+INC+0L/RgNC+0YHQsCDQuNC70Lgg0YHRgtCw0YLQuNGB0YLQuNC60LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ9Cf0L7QtNGA0L7QsdC90YvQuSDQvtGC0YfQtdGCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAn0J3QtdC70YzQt9GPINC30LDQtNCw0YLRjCDQvdC+0LLQvtC1INGB0L7RgdGC0L7Rj9C90LjQtSEg0J3QuNC60LDQutC40LUg0LLQvtC/0YDQvtGB0Ysg0L3QtSDQstGL0LTQtdC70LXQvdGLLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLid9ID0gJ9Cd0LXQstC+0LfQvNC+0LbQvdC+INC30LDQtNCw0YLRjCDQvdC+0LLRi9C5INGB0YLQsNGC0YPRgSEg0JLQvtC/0YDQvtGB0Ysg0L3QtSDQt9Cw0LLQtdGA0YjQtdC90YsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ9CY0LfQvNC10L3QuNGC0Ywg0YHQvtGB0YLQvtGP0L3QuNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctINCd0Lgg0L7QtNC90L7QuSDQvtGH0LXRgNC10LTQuCDQvdC1INCy0YvQsdGA0LDQvdC+IC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJ30gPSAn0J3QtSDQstGL0LHRgNCw0L0g0YLQuNC/INC30LDRj9Cy0LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nfSA9ICfQndC1INCy0YvQsdGA0LDQvSDRgdC10YDQstC40YEg0LfQsNGP0LLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gQ2hhbmdlIFN0YXR1cyAtJ30gPSAnLSDQmNC30LzQtdC90LjRgtGMINGB0L7RgdGC0L7Rj9C90LjQtSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ9CT0LvQsNCy0L3Ri9C5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICfQndC10LTQtdC50YHRgtCy0LjRgtC10LvRjNC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAn0J3QvtCy0L7QtSDRgdC+0YHRgtC+0Y/QvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAn0J7Qv9C40YHQsNC90LjQtSDQvtC/0YDQvtGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICfQvtGC0LLQtdGC0LjQu9C4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ9C90LUg0L7RgtCy0LXRgtC40LvQuCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAn0KHQv9Cw0YHQuNCx0L4g0LfQsCDQktCw0YjQuCDQvtGC0LLQtdGC0YsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAn0J7Qv9GA0L7RgSDQt9Cw0LLQtdGA0YjQtdC9Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJ9Cc0L7QtNGD0LvRjCDQvdC1INCy0LrQu9GO0YfQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJ9Cd0LXQstC10YDQvdGL0Lkg0LrQvtC0INC+0L/RgNC+0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ9CS0Ysg0YPQttC1INC/0YDQvtGI0LvQuCDQvtC/0YDQvtGBLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAn0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINGN0YLQvtGCINCy0L7Qv9GA0L7RgT8gINCS0KHQlSDRgdCy0Y/Qt9Cw0L3QvdGL0LUg0LTQsNC90L3Ri9C1INCx0YPQtNGD0YIg0J/QntCi0JXQoNCv0J3QqyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nfSA9ICfQktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INC20LXQu9Cw0LXRgtC1INGD0LTQsNC70LjRgtGMICDRjdGC0L7RgiDQvtGC0LLQtdGCPyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICfQnNC+0LTRg9C70Ywg0J7Qv9GA0L7RgdGLLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAn0JzQvtC00YPQu9GMINC00LvRjyDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINCy0L7Qv9GA0L7RgdC+0LIg0LTQu9GPINC+0L/RgNC+0YHQvtCyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0YHQtSDQv9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINC+0LHRitC10LrRgtCwINCe0L/RgNC+0YHRiyDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INC00L3QtdC5LCDQv9C+0YHQu9C1INC+0YLRgdGL0LvQutC4INC/0LjRgdC10Lwg0YEg0L7Qv9GA0L7RgdC+0LwsINCyINGC0LXRh9C10L3QuNC1INC60L7RgtC+0YDRi9GFINC90LjQutCw0LrQuNC1INC90L7QstGL0LUg0L/RgNC10LTQu9C+0LbQtdC90LjRjyDQvtCxINC+0L/RgNC+0YHQtSDQvdC1INC/0L7RgdGL0LvQsNGO0YLRgdGPLCDQvtC00L3QvtC80YMg0Lgg0YLQvtC80YMg0LbQtSDQutC70LjQtdC90YLRgy4g0JLRi9Cx0L7RgCDQt9C90LDRh9C10L3QuNGPIDAg0YPQutCw0LfRi9Cy0LDQtdGCINCy0YHQtdCz0LTQsCDQv9C+0YHRi9C70LDRgtGMINC/0LjRgdGM0LzQviDRgSDQvtC/0YDQvtGB0L7QvC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGC0LXQutGB0YIg0L/QuNGB0YzQvNCwINCyINC/0L7Rh9GC0L7QstC+0Lwg0YPQstC10LTQvtC80LvQtdC90LjQuCwg0L/QvtGB0YvQu9Cw0LXQvNC+0Lwg0LrQu9C40LXQvdGC0LDQvCwg0L4g0L3QvtCy0L7QvCDQvtC/0YDQvtGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn0J7RgtC/0YDQsNCy0LjRgtC10LvRjCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLINCyINC90L7QstC+0Lwg0L7Qv9GA0L7RgdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICfQotC10LzQsCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLINCyINC90L7QstC+0Lwg0L7Qv9GA0L7RgdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LzQvtC00YPQu9GMINC/0YDQvtGB0LzQvtGC0YDQsCDQtNC70Y8g0L7RgtC+0LHRgNCw0LbQtdC90LjRjyDRgdC/0LjRgdC60LAg0L7Qv9GA0L7RgdC+0LIg0LIgc21hbGwg0YTQvtGA0LzQsNGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINC80LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDQvtC/0YDQvtGB0L7QsiDQvtGC0YHRi9C70LDQtdC80YvRhSDQutC70LjQtdC90YLRgyDQt9CwINC60LDQttC00YvQtSAzMCDQtNC90LXQuS4gKCIwIiDQvtC30L3QsNGH0LDQtdGCLCDRh9GC0L4g0LLRgdC1INC30LDQv9GA0L7RgdGLINC+0L/RgNC+0YHQvtCyINCx0YPQtNGD0YIg0L7RgtGB0YvQu9Cw0YLRjNGB0Y8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LLRi9GB0L7RgtGDINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC+0LHQu9Cw0YHRgtC4INGE0L7RgNC80LDRgtC40YDQvtCy0LDQvdC90L7Qs9C+INGC0LXQutGB0YLQsCDQtNC70Y8g0Y3Qu9C10LzQtdC90YLQvtCyINC+0L/RgNC+0YHQsCDQv9GA0Lgg0L/QvtC00YDQvtCx0L3QvtC8INC/0YDQvtGB0LzQvtGC0YDQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINC/0LXRgNC10YfQtdC90Ywg0LrQvtC70L7QvdC+0LosINC+0YLQvtCx0YDQsNC20LDQtdC80YvRhSDQsiDQvtCx0LfQvtGA0LUg0J7Qv9GA0L7RgdC+0LIuINCt0YLQvtGCINC/0LDRgNCw0LzQtdGC0YAg0L3QtSDQstC70LjRj9C10YIg0L3QsCDQv9C+0YDRj9C00L7QuiDQutC+0LvQvtC90L7Qui4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAn0J/RgNCw0LLQutCwINCy0L7Qv9GA0L7RgdC+0LIg0L7Qv9GA0L7RgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJ9CS0LrQu9GO0YfQuNGC0LUg0LjQu9C4INC+0YLQutC70Y7Rh9C40YLRjCDQutC90L7Qv9C60YMgItCf0L7QutCw0LfQsNGC0Ywg0LzQvtC4INC+0YLQstC10YLRiyIsINGH0YLQvtCx0Ysg0L/QvtC60LDQt9Cw0YLRjCDQtNCw0L3QvdGL0LUg0L7Qv9GA0LXQtNC10LvQtdC90L3QvtCz0L4g0YDQtdC30YPQu9GM0YLQsNGC0LAg0L7Qv9GA0L7RgdCwLCDQutC+0LPQtNCwINC60LvQuNC10L3RgiDQv9C+0L/Ri9GC0LDQtdGC0YHRjyDQvtGC0LLQtdGC0LjRgtGMINC90LAg0L7Qv9GA0L7RgSDQstC+INCy0YLQvtGA0L7QuSDRgNCw0LcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAn0JLQutC70Y7Rh9C40YLRjCDQuNC70Lgg0L7RgtC60LvRjtGH0LjRgtGMINC/0YDQvtCy0LXRgNC60YMg0YPRgdC70L7QstC40Y8g0L7RgtC/0YDQsNCy0LrQuCDQtNC70Y8g0YHQtdGA0LLQuNGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9C40YLRjCDQuNC70Lgg0L7RgtC60LvRjtGH0LjRgtGMINC/0YDQvtCy0LXRgNC60YMg0YPRgdC70L7QstC40Y8g0L7RgtC/0YDQsNCy0LrQuCDQtNC70Y8g0YLQuNC/0LAg0LfQsNGP0LLQutC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uINC00LvRjyDQtNC+0LHQsNCy0LvQtdC90LjRjyDQvtC/0YDQvtGB0LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiDQtNC70Y8g0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRjyDQvtC/0YDQvtGB0LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24g0LTQu9GPINC80L7QtNGD0LvRjyDQvtGC0YfQtdGC0L3QvtGB0YLQuCDQvtCxINC+0L/RgNC+0YHQtSDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uINC00LvRjyDQv9C+0LTRgNC+0LHQvdC+0LPQviDQv9GA0L7RgdC80L7RgtGA0LAg0L7Qv9GA0L7RgdCwINCyINC40L3RgtC10YDRhNC10LnRgdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24g0LTQu9GPINC+0LHRitC10LrRgtCwINCf0YPQsdC70LjRh9C90L7Qs9C+INC+0L/RgNC+0YHQsCDQsiDRgNCw0LfQtNC10LvQtSDQv9GD0LHQu9C40YfQvdGL0YUg0L7Qv9GA0L7RgdC+0LIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICfQldGB0LvQuCDRjdGC0L4g0YDQtdCz0YPQu9GP0YDQvdC+0LUg0LLRi9GA0LDQttC10L3QuNC1INCy0LXRgNC90L4sINC+0L/RgNC+0YEg0LrQu9C40LXQvdGC0YMg0L3QtSDQv9C+0YHRi9C70LDQtdGC0YHRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAn0J7Qs9GA0LDQvdC40YfQtdC90LjQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0YHRgtGA0LDQvdC40YbRiyAo0L3QsCDQutC+0YLQvtGA0L7QuSDQvtGC0L7QsdGA0LDQttCw0Y7RgtGB0Y8g0L7Qv9GA0L7RgdGLKSDQv9GA0Lgg0L7QsdC30L7RgNC1INC+0L/RgNC+0YHQvtCyINCyIHNtYWxsINGE0L7RgNC80LDRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ9Ce0LHRidC10LTQvtGB0YLRg9C/0L3Ri9C5INC+0L/RgNC+0YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOLCDQv9C+0LfQstC+0LvRj9GO0YnQuNC5INGA0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINC+0L/RgNC+0YEg0L/RgNC4INC10LPQviDQv9C+0LTRgNC+0LHQvdC+0Lwg0L/RgNC+0YHQvNC+0YLRgNC1INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOLCDQv9C+0LfQstC+0LvRj9GO0YnQuNC5INGA0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINCy0L7Qv9GA0L7RgdGLINC+0L/RgNC+0YHQsCDQv9GA0Lgg0LXQs9C+INC/0L7QtNGA0L7QsdC90L7QvCDQv9GA0L7RgdC80L7RgtGA0LUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3Rjiwg0L/QvtC30LLQvtC70Y/RjtGJ0LjQuSDQstC10YDQvdGD0YLRjNGB0Y8g0L3QsNC30LDQtCDQv9GA0Lgg0L/RgNC+0YHQvNC+0YLRgNC1INC+0L/RgNC+0YHQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3Rjiwg0L/QvtC30LLQvtC70Y/RjtGJ0LjQuSDRg9Cy0LjQtNC10YLRjCDQv9C+0LTRgNC+0LHQvdC+0YHRgtC4INC+0YLRh9C10YLQsCDQvtCxINC+0L/RgNC+0YHQtSDQv9GA0Lgg0LXQs9C+INC00LXRgtCw0LvRjNC90L7QvCDQv9GA0L7RgdC80L7RgtGA0LUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAn0J/QvtC00YDQvtCx0L3QvtGB0YLQuCDQvtGC0YfQtdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAn0JzQvtC00YPQu9GMINCU0L7QsdCw0LLQu9C10L3QuNGPINC+0L/RgNC+0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ9Cc0L7QtNGD0LvRjCDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINC+0L/RgNC+0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICfQmtC+0LvQuNGH0LXRgdGC0LLQviDQt9Cw0L/QuNGB0LXQuSwg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINC/0YDQuCDQv9GA0L7RgdC80L7RgtGA0LUg0L7Qv9GA0L7RgdC+0LIg0LIgIlNtYWxsIiDRhNC+0YDQvNCw0YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJ9Cc0L7QtNGD0LvRjCDQv9C+0YHRgtGA0L7QtdC90LjRjyDQvtGC0YfQtdGC0L7QsiDQvtCxINC+0L/RgNC+0YHQsNGFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAn0JzQvtC00YPQu9GMINC/0L7QtNGA0L7QsdC90L7Qs9C+INC/0YDQvtGB0LzQvtGC0YDQsCDQvtC/0YDQvtGB0L7Qsi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICfQntC/0YDQvtGB0Ysg0L3QtSDQsdGD0LTRg9GCINC+0YLQv9GA0LDQstC70Y/RgtGM0YHRjyDQvdCwINGD0LrQsNC30LDQvdC90YvQtSDQv9C+0YfRgtC+0LLRi9C1INCw0LTRgNC10YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ9Ce0LHQvtC30L3QsNGH0LXQvdC40LUg0LTQu9GPINC40LTQtdC90YLQuNGE0LjQutCw0YbQuNC4INC+0L/RgNC+0YHQsCwg0L3QsNC/0YDQuNC80LXRgCwg0J7Qv9GA0L7RgeKEliwgU3VydmV5IywgTXlTdXJ2ZXkjLiDQn9C+INGD0LzQvtC70YfQsNC90LjRjiBTdXJ2ZXkjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0LvRjCDRg9C/0YDQsNCy0LvQtdC90LjRjyDRgdC+0LHRi9GC0LjQtdC8INC00LvRjyDQt9Cw0Y/QstC60LgsINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC4INC+0YLQv9GA0LDQstC70Y/RjtGJ0LjQuSDQv9C40YHRjNC80L4g0LrQu9C40LXQvdGC0YMg0YEg0L7Qv9GA0L7RgdC+0LwsINC/0YDQuCDQt9Cw0LrRgNGL0YLQuNC4INC30LDRj9Cy0LrQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAn0KLRgNC40LPQs9C10YAg0L7RgtC/0YDQsNCy0LrQuCDQt9Cw0LTQtdGA0LbQsNC90L3Ri9GFINC30LDQv9GA0L7RgdC+0LIg0L3QsCDQvtC/0YDQvtGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0N5cmxfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAn0J3QsNC/0YDQsNCy0Lgg0L3QvtCy0YMg0LDQvdC60LXRgtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ9Cj0LLQvtC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICfQo9Cy0L7QtCDRgyDQsNC90LrQtdGC0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICfQodCw0YDQtNC20LDRmCDQvtCx0LDQstC10YjRgtC10ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICfQotC40L/QvtCy0Lgg0YLQuNC60LXRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAn0JjQvdGC0LXRgNC90Lgg0L7Qv9C40YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJ9Cj0YHQu9C+0LLQuCDQutC70LjRmNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAn0JzQvtC70LjQvNC+INC40LfQsNCx0LXRgNC40YLQtSDQsNGC0YDQuNCx0YPRgiDQutC70LjRmNC10L3RgtCwINC30LAg0LTQvtC00LDQstCw0ZrQtSDRg9GB0LvQvtCy0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAn0IjQsNCy0L3QuCDQutGZ0YPRhyDQsNC90LrQtdGC0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICfQn9GA0LjQvNC10YAg0LDQvdC60LXRgtC1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAn0KPRgNC10LTQuCDQvtC/0YjRgtC1INC40L3RhNC+0YDQvNCw0YbQuNGY0LUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICfQo9GA0LXQtNC4INC/0LjRgtCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICfQktC4INGB0YLQtSDQvtCy0LTQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAn0JDQvdC60LXRgtC90LAg0L/QuNGC0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ9CU0L7QtNCw0Zgg0L/QuNGC0LDRmtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAn0KPQvdC10YHQuCDQv9C40YLQsNGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAn0J7QsdCw0LLQtdC30LDQvSDQvtC00LPQvtCy0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ9CX0LAg0L7QstGDINCw0L3QutC10YLRgyDQvdC40YHRgyDRgdCw0YfRg9Cy0LDQvdCwINC/0LjRgtCw0ZrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICfQn9C40YLQsNGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAn0J7QsdCw0LLQtdC30LDQvSDQvtC00LPQvtCy0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAn0JrQsNC00LAg0LfQsNCy0YDRiNC40YLQtSDRgdCwINGD0YDQtdGS0LjQstCw0ZrQtdC8INCw0L3QutC10YLQvdC40YUg0L/QuNGC0LDRmtCwINGB0LDQvNC+INC30LDRgtCy0L7RgNC40YLQtSDQvtCy0LDRmCDQv9GA0L7Qt9C+0YAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAn0JfQsNGC0LLQvtGA0Lgg0L7QstCw0Zgg0L/RgNC+0LfQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICfQo9GA0LXQtNC4INC/0LjRgtCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ9C90LDQt9Cw0LQg0L3QsCDQv9C40YLQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAn0J/QuNGC0LDRmtC1Oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ9Cc0L7Qs9GD0ZvQuCDQvtC00LPQvtCy0L7RgNC4INC30LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ9CU0L7QtNCw0Zgg0L7QtNCz0L7QstC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICfQl9CwINC+0LLQviDQv9C40YLQsNGa0LUg0L3QuNGB0YMg0YHQsNGH0YPQstCw0L3QuCDQvtC00LPQvtCy0L7RgNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAn0J7QstC+INC90LXQvNCwINCy0LjRiNC1INC+0LTQs9C+0LLQvtGA0LAsINC/0YDQvtGB0YLQvtGAINC30LAg0YLQtdC60YHRgiDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAn0KPRgNC10LTQuCDQvtC00LPQvtCy0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICfQvdCw0LfQsNC0INC90LAg0YPRgNC10ZLQuNCy0LDRmtC1INC/0LjRgtCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAn0J7QtNCz0L7QstC+0YA6JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJ9Cf0L7QtNC10YjQsNCy0LDRmtCwINC/0YDQtdCz0LvQtdC00LAg0LDQvdC60LXRgtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaGVzIGluIHRoZSBhdHRyaWJ1dGVzIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keSwgb3ZlcnJpZGluZyBvdGhlciBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZS4nfSA9CiAgICAgICAgJ9Cf0YDQtdGC0YDQsNCz0LUg0YMg0LDRgtGA0LjQsdGD0YLQuNC80LAgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0INC4IE5vdGlmaWNhdGlvbkJvZHksINGA0LXQtNC10YTQuNC90LjRgyDQtNGA0YPQs9C1INCw0YLRgNC40LHRg9GC0LUg0YHQsCDQuNGB0YLQuNC8INC40LzQtdC90L7QvC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAn0JLRgNC10LzQtSDQutGA0LXQuNGA0LDRmtCwINCw0L3QutC10YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJ9CR0LXQtyDQvtCz0YDQsNC90LjRh9C10ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAn0KHQsNC80L4g0LDQvdC60LXRgtC1INC60YDQtdC40YDQsNC90LUg0LjQt9C80LXRktGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJ9Cc0LDQutGB0LjQvNGD0Lwg0L/RgNC40LrQsNC30LDQvdC40YUg0LDQvdC60LXRgtCwINC/0L4g0YHRgtGA0LDQvdC4JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICfQn9C+0YjQuNGZ0LDQvtGGINC+0LHQsNCy0LXRiNGC0LXRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAn0J/RgNC10LTQvNC10YIg0L7QsdCw0LLQtdGI0YLQtdGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ9Cc0LXRmtCw0L4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAn0J/RgNC10LPQu9C10LQg0YHRgtCw0YLQuNGB0YLQuNC60LUg0LfQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ9Ci0LDQsdC10LvQsCDQt9Cw0YXRgtC10LLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAn0JjQt9Cw0LHQtdGA0Lgg0YHQstC1INC30LDRhdGC0LXQstC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ9CS0YDQtdC80LUg0YHQu9Cw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICfQktGA0LXQvNC1INCz0LvQsNGB0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICfQmNC30LDQsdC10YDQuCDQvtCy0LDRmCDQt9Cw0YXRgtC10LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICfQktC40LTQuCDQtNC10YLQsNGZ0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAn0J7QsdGA0LjRiNC4INGB0YLQsNGC0LjRgdGC0LjQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICfQlNC10YLQsNGZ0Lgg0YHRgtCw0YLQuNGB0YLQuNC60LUg0LDQvdC60LXRgtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICfQuNC00Lgg0L3QsNC30LDQtCDQvdCwINC/0YDQtdCz0LvQtdC0INGB0YLQsNGC0LjRgdGC0LjQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICfQn9GA0LXRgtGF0L7QtNC90Lgg0LPQu9Cw0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAn0KHQu9C10LTQtdGb0Lgg0LPQu9Cw0YEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAn0JjQvdGE0L7RgNC80LDRhtC40ZjQtSDQviDQsNC90LrQtdGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ9Cf0L7RgdC70LDRgtC4INC30LDRhdGC0LXQstC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICfQn9GA0LjQvNGZ0LXQvdC1INCw0L3QutC10YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ9CU0LXRgtCw0ZnQuCDQsNC90LrQtdGC0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAn0KPRgdC70YPQs9C1INC30LAg0YLQuNC60LXRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ9CT0YDQsNGE0LjQutC+0L0g0YDQtdC30YPQu9GC0LDRgtCwINCw0L3QutC10YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAn0J3QtdC80LAg0YHRgtCw0YLQuNGB0YLQuNC60LUg0YDQtdC30YPQu9GC0LDRgtCwLic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICfQkNC90LrQtdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICfQnNC+0LvQuNC80L4g0LTQsCDQvtC00LPQvtCy0L7RgNC40YLQtSDQvdCwINC+0LLQsCDQv9C40YLQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAn0J/QvtC60LDQttC4INC80L7RmNC1INC+0LTQs9C+0LLQvtGA0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ9Ce0LLQviDRgdGDINCy0LDRiNC4INC+0LTQs9C+0LLQvtGA0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAn0J3QsNGB0LvQvtCyINCw0L3QutC10YLQtSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAn0JTQvtC00LDRmCDQvdC+0LLRgyDQsNC90LrQtdGC0YMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAn0J3QtdC80LDRgtC1INC00L7Qt9Cy0L7Qu9GDINC30LAg0L7QstGDINCw0L3QutC10YLRgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAn0J3QuNGY0LUg0LTQsNGCINCY0JQg0JDQvdC60LXRgtC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ9Cj0YDQtdC00Lgg0LDQvdC60LXRgtGDJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJ9Cd0LXQvNCw0YLQtSDQtNC+0LfQstC+0LvRgyDQt9CwINC+0LLRgyDQsNC90LrQtdGC0YMg0LjQu9C4INC/0LjRgtCw0ZrQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICfQndC10LzQsNGC0LUg0LTQvtC30LLQvtC70YMg0LfQsCDQvtCy0YMg0LDQvdC60LXRgtGDLCDQv9C40YLQsNGa0LUg0LjQu9C4INC+0LTQs9C+0LLQvtGAISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICfQo9GA0LXQtNC4INCw0L3QutC10YLQvdCwINC/0LjRgtCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICfQlNCwL9Cd0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAn0JTRg9Cz0LzQtSAo0JvQuNGB0YLQsCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAn0J/QvtGZ0LUg0LfQsCDQv9C+0YLQstGA0LTRgyAo0JvQuNGB0YLQsCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAn0J7RhtC10L3QsCDQv9GA0L7QvNC+0YLQtdGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ9Ci0LjQvyDQv9C40YLQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICfQmtC+0LzQv9C70LXRgtC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ9Cd0LXQutC+0LzQv9C70LXRgtC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ9Cj0YDQtdC00Lgg0L/QuNGC0LDRmtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAn0KPRgNC10LTQuCDQvtC00LPQvtCy0L7RgCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICfQn9GA0LXQs9C70LXQtCDRgdGC0LDRgtC40YHRgtC40LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJ30gPSAn0J3QtdC80LDRgtC1INC00L7Qt9Cy0L7Qu9GDINC30LAg0L7QstGDINCw0L3QutC10YLRgyDQuNC70Lgg0LTQtdGC0LDRmdC1INGB0YLQsNGC0LjRgdGC0LjQutC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICfQlNC10YLQsNGZINGB0YLQsNGC0LjRgdGC0LjQutC1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAn0J3QtSDQvNC+0LbQtSDRgdC1INC/0L7RgdGC0LDQstC40YLQuCDQvdC+0LLQuCDRgdGC0LDRgtGD0YEhINCd0LXQvNCwINC00LXRhNC40L3QuNGB0LDQvdC40YUg0L/QuNGC0LDRmtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLid9ID0gJ9Cd0LUg0LzQvtC20LUg0YHQtSDQv9C+0YHRgtCw0LLQuNGC0Lgg0L3QvtCy0Lgg0YHRgtCw0YLRg9GBISDQn9C40YLQsNGa0LAg0YHRgyDQvdC10L/QvtGC0L/Rg9C90LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ9Ch0YLQsNGC0YPRgSDQv9GA0L7QvNC10ZrQtdC9Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctINCd0LjRmNC1INC40LfQsNCx0YDQsNC9INGA0LXQtCAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJy0g0J3QuNGY0LUg0LjQt9Cw0LHRgNCw0L0g0YLQuNC/INGC0LjQutC10YLQsCAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHNlcnZpY2Ugc2VsZWN0ZWQgLSd9ID0gJy0g0J3QuNGY0LUg0LjQt9Cw0LHRgNCw0L0g0YHQtdGA0LLQuNGBINGC0LjQutC10YLQsCAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gQ2hhbmdlIFN0YXR1cyAtJ30gPSAnLSDQn9GA0L7QvNC10L3QuCDRgdGC0LDRgtGD0YEgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICfQk9C70LDQstC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCd9ID0gJ9Cd0LXQstCw0LbQtdGb0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ9Cd0L7QstC4INGB0YLQsNGC0YPRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICfQntC/0LjRgSDQsNC90LrQtdGC0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICfQvtC00LPQvtCy0L7RgNC10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICfQvdC40ZjQtSDQvtC00LPQvtCy0L7RgNC10L3Qvic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAn0KXQstCw0LvQsCDQvdCwINCy0LDRiNC40Lwg0L7QtNCz0L7QstC+0YDQuNC80LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAn0JDQvdC60LXRgtCwINGY0LUg0LfQsNCy0YDRiNC10L3QsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAn0J/QvtGA0YPQutCwINCw0L3QutC10YLQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJ9Cc0L7QtNGD0Lsg0L3QuNGY0LUg0LDQutGC0LjQstC40YDQsNC9Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJ9Ce0LLQsCDRhNGD0L3RhtC40L7QvdCw0LvQvdC+0YHRgiDQvdC40ZjQtSDQvtC80L7Qs9GD0ZvQtdC90LAsINC80L7Qu9C40LzQviDQutC+0L3RgtCw0LrRgtC40YDQsNGY0YLQtSDQstCw0YjQtdCzINCw0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICfQk9GA0LXRiNC60LAg0YMg0LDQvdC60LXRgtC4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAn0J3QtdC40YHQv9GA0LDQstCw0L0g0LrRmdGD0Ycg0LDQvdC60LXRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAn0KPQvdC10YLQuCDQutGZ0YPRhyDQsNC90LrQtdGC0LUg0ZjQtSDQvdC10LjRgdC/0YDQsNCy0LDQvSwg0LDQutC+INGB0YLQtSDQv9GA0LDRgtC40LvQuCDQstC10LfRgyDQvNC+0LbQtNCwINGY0LUg0L7QvdCwINC90LXQstCw0LbQtdGb0LAg0LjQu9C4INC+0YjRgtC10ZvQtdC90LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAn0JPQu9Cw0YHQsNGa0LUg0YMg0LDQvdC60LXRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICfQn9C+0LTQsNGG0Lgg0L4g0LPQu9Cw0YHQsNGa0YMg0YMg0LDQvdC60LXRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICfQktC10Zsg0YHRgtC1INC+0LTQs9C+0LLQvtGA0LjQu9C4INC90LAg0LDQvdC60LXRgtGDLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAn0JvQuNGB0YLQsCDQsNC90LrQtdGC0LAnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICfQlNCwINC70Lgg0LfQsNC40YHRgtCwINC20LXQu9C40YLQtSDQtNCwINC+0LHRgNC40YjQtdGC0LUg0L7QstC+INC/0LjRgtCw0ZrQtT8g0KHQktCYINC/0L7QstC10LfQsNC90Lgg0L/QvtC00LDRhtC4INGb0LUg0LHQuNGC0Lgg0JjQl9CT0KPQkdCJ0JXQndCYISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ9CU0LAg0LvQuCDQt9Cw0LjRgdGC0LAg0LbQtdC70LjRgtC1INC00LAg0LjQt9Cx0YDQuNGI0LXRgtC1INC+0LLQsNGYINC+0LTQs9C+0LLQvtGAPyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICfQkNC90LrQtdGC0L3QuCDQvNC+0LTRg9C7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAn0JzQvtC00YPQuyDQt9CwINGD0YDQtdGS0LjQstCw0ZrQtSDQsNC90LrQtdGC0L3QuNGFINC/0LjRgtCw0ZrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQodCy0Lgg0L/QsNGA0LDQvNC10YLRgNC4INCe0LHRmNC10LrRgtCwINCw0L3QutC10YLQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ9CR0YDQvtGYINC00LDQvdCwINC/0L7RgdC70LUg0YHQu9Cw0ZrQsCDQuNC80LXRmNC70LAg0L4g0LDQvdC60LXRgtC4INC30LAg0LrQvtGY0LUg0LjRgdGC0L7QvCDQutC+0YDQuNGB0L3QuNC60YMg0L3QtdGb0LUg0LHQuNGC0Lgg0YHQu9Cw0L3QuCDQvdC+0LLQuCDQt9Cw0YXRgtC10LLQuC4g0JDQutC+INC40LfQsNCx0LXRgNC10YLQtSAwINC40LzQtdGY0Lsg0L4g0LDQvdC60LXRgtC4INGB0LUg0YPQstC10Log0YjQsNGZ0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ9Cf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INGB0LDQtNGA0LbQsNGYINC40LzQtdGY0LvQsCDQvtCx0LDQstC10YjRgtC10ZrQsCDQviDQvdC+0LLQvtGYINCw0L3QutC10YLQuCDQt9CwINC60L7RgNC40YHQvdC40LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICfQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQv9C+0YjQuNGZ0LDQvtGGINC40LzQtdGY0LvQsCDQvtCx0LDQstC10YjRgtC10ZrQsCDQviDQvdC+0LLQvtC8INC40YHRgtGA0LDQttC40LLQsNGa0YMg0LfQsCDQutC+0YDQuNGB0L3QuNC60LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ9Cf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INC/0YDQtdC00LzQtdGCINC40LzQtdGY0LvQsCDQvtCx0LDQstC10YjRgtC10ZrQsCDQviDQvdC+0LLQvtGYINCw0L3QutC10YLQuCDQt9CwINC60L7RgNC40YHQvdC40LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQvNC+0LTRg9C7INC/0YDQtdCz0LvQtdC00LAg0LfQsCDQvNCw0LvQuCDQv9GA0LjQutCw0Lcg0LvQuNGB0YLQtSDQsNC90LrQtdGC0LAuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INCz0YDRg9C/0LUg0LrQvtGY0LUg0LjQvNCw0ZjRgyDQtNC+0LfQstC+0LvRgyDQtNCwINC80LXRmtCw0ZjRgyDRgdGC0LDRgtGD0YEg0LDQvdC60LXRgtC1LiDQotCw0LHQtdC70LAg0ZjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QviDQv9GA0LDQt9C90LAg0Lgg0L7Qv9C10YDQsNGC0LXRgNC4INC40Lcg0YHQstC40YUg0LPRgNGD0L/QsCDQvNC+0LPRgyDQtNCwINC80LXRmtCw0ZjRgyDRgdGC0LDRgtGD0YEg0LDQvdC60LXRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LTQsCDQu9C4INGb0LUg0LfQsNGF0YLQtdCy0Lgg0LfQsCDQsNC90LrQtdGC0LUg0LHQuNGC0Lgg0L/QvtGB0LvQsNGC0Lgg0YHQsNC80L4g0L/RgNCw0LLQuNC8INC60LvQuNGY0LXQvdGC0LjQvNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQvNCw0LrRgdC40LzQsNC70L3QuCDQsdGA0L7RmCDQsNC90LrQtdGC0LAg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9C+0YHQu9Cw0YIg0LrQvtGA0LjRgdC90LjQutGDINGC0L7QutC+0LwgMzAg0LTQsNC90LAuICgwINC30L3QsNGH0Lgg0LTQsCDQvdC10LzQsCDQvNCw0LrRgdC40LzRg9C80LAsINGB0LLQuCDQt9Cw0YXRgtC10LLQuCDRm9C1INCx0LjRgtC4INC/0L7RgdC70LDRgtC4KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LHRgNC+0Zgg0YHQsNGC0Lgg0L7QtCDQt9Cw0YLQstCw0YDQsNGa0LAg0YLQuNC60LXRgtCwINC30LAg0L/QvtC60YDQtdGC0LDRmtC1INGB0LvQsNGa0LAg0LDQvdC60LXRgtC1LiAoMCDQt9C90LDRh9C4INC00LAg0YHQtSDRiNCw0ZnQtSDQvtC00LzQsNGFINC/0L4g0LfQsNGC0LLQsNGA0LDRmtGDKS4g0J3QsNC/0L7QvNC10L3QsDog0L7QtNC70LDQs9Cw0ZrQtSDRgdC70LDRmtCwINCw0L3QutC10YLQtSDQvtCx0LDQstGZ0LAg4oCeT1RSUyDigJ0g0YHQtdGA0LLQuNGBINC/0YDQtSDQsNC60YLQuNCy0LjRgNCw0ZrQsCDigJ5EYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZOKAnSDQv9C+0YHRgtCw0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC60L7Qu9C+0L3QtSDQt9CwINC70LjRgdGC0YMg0L/RgNC40LvQuNC60L7QvCDQv9GA0LDQstGZ0LXRmtCwINGD0YHQu9C+0LLQsCDQt9Cw0YXRgtC10LLQsCAoMCA9PiDQuNGB0LrRmdGD0YfQtdC90L4sIDEgPT4g0YPQutGZ0YPRh9C10L3QvikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90YMg0LLQuNGB0LjQvdGDINC+0LrQstC40YDQsCDQt9CwINC/0YDQuNC60LDQtyDRgtC10LrRgdGC0LAgINC30LAg0LTQtdGC0LDRmdC90Lgg0L/RgNC40LrQsNC3INC10LvQtdC80LXQvdCw0YLQsCDQsNC90LrQtdGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJ9CU0LXRhNC40L3QuNGI0LUg0LPRgNGD0L/QtSAocncpINC60L7RmNC1INC80L7Qs9GDINC00LAg0LHRgNC40YjRgyDRgdGC0LDRgtC40YHRgtC40LrQtSDQsNC90LrQtdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0LzQsNC60YHQuNC80LDQu9C90YMg0LLQuNGB0LjQvdGDIOKAnlJpY2h0ZXh04oCdINC/0YDQuNC60LDQt9CwINGC0LXQutGB0YLQsCAg0LfQsCDQtNC10YLQsNGZ0L3QuCDQv9GA0LjQutCw0Lcg0LXQu9C10LzQtdC90LDRgtCwINCw0L3QutC10YLQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/RgNC40LrQsNC30LDQvdC1INC60L7Qu9C+0L3QtSDRgyDQv9GA0LXQs9C70LXQtNGDINCw0L3QutC10YLQtS4g0J7QstCwINC+0L/RhtC40ZjQtSDQvdC10LzQsCDRg9GC0LjRhtCw0Zgg0L3QsCDQv9C+0LfQuNGG0LjRmNC1INC60L7Qu9C+0L3QsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0LTQsCDQu9C4INC80L7QtNGD0Lsg0YHRgtCw0YLQuNGB0YLQuNC60LAg0LzQvtC20LUg0LPQtdC90LXRgNC40YHQsNGC0Lgg0LvQuNGB0YLQtSDQsNC90LrQtdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAn0KPRgNC10LTQuCDQvtC/0YjRgtC1INC40L3RhNC+0YDQvNCw0YbQuNGY0LUg0L4g0LDQvdC60LXRgtC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAn0KPRgNC10LTQuCDQsNC90LrQtdGC0L3QsCDQv9C40YLQsNGa0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJ9Cj0LrRmdGD0YfQuCDQuNC70Lgg0LjRgdC60ZnRg9GH0Lgg0L/RgNC40LrQsNC3INC10LrRgNCw0L3QsCDQt9CwINCz0LvQsNGB0LDRmtC1INC90LAg0ZjQsNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDINGA0LDQtNC4INC/0YDQuNC60LDQt9CwINGA0LXQt9GD0LvRgtCw0YLQsCDQv9C+0ZjQtdC00LjQvdC1INCw0L3QutC10YLQtSDQutCw0LTQsCDQutC+0YDQuNGB0L3QuNC6INC/0L7QutGD0YjQsCDQtNCwINC+0LTQs9C+0LLQvtGA0Lgg0L3QsCDRg9C/0LjRgtC90LjQuiDQv9C+INC00YDRg9Cz0Lgg0L/Rg9GCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ9Cj0LrRmdGD0YfQuCDQuNC70Lgg0LjRgdC60ZnRg9GH0Lgg0L/RgNC+0LLQtdGA0YMg0YHRgtCw0YLRg9GB0LAg0YHQu9Cw0ZrQsCDQt9CwINGD0YHQu9GD0LPRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICfQo9C60ZnRg9GH0Lgg0LjQu9C4INC40YHQutGZ0YPRh9C4INC/0YDQvtCy0LXRgNGDINGB0YLQsNGC0YPRgdCwINGB0LvQsNGa0LAg0LfQsCDRgtC40L8g0YLQuNC60LXRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGY0LAgIkZyb250ZW5kIiDQvNC+0LTRg9C70LAg0LfQsCDQtNC+0LTQsNCy0LDRmtC1INCw0L3QutC10YLQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGY0LAgIkZyb250ZW5kIiDQvNC+0LTRg9C70LAg0LfQsCDQuNC30LzQtdC90LUg0LDQvdC60LXRgtC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGY0LAgIkZyb250ZW5kIiDQvNC+0LTRg9C70LAg0LfQsCDRgdGC0LDRgtC40YHRgtC40LrRgyDQsNC90LrQtdGC0LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRmNCwICJGcm9udGVuZCIg0LzQvtC00YPQu9CwINC30LAg0LTQtdGC0LDRmdC90Lgg0L/RgNC40LrQsNC3INCw0L3QutC10YLQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGY0LAgIkZyb250ZW5kIiDQvNC+0LTRg9C70LAg0LfQsCDRmNCw0LLQvdC1INCw0L3QutC10YLQvdC1INC+0LHRmNC10LrRgtC1INCw0L3QutC10YLQtSDRgyDQv9GA0L7RgdGC0L7RgNGDINGY0LDQstC90LjRhSDQsNC90LrQtdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICfQkNC60L4g0YHQtSDQvtCy0LDRmCDQuNC30YDQsNC3INC/0L7QutC70LDQv9CwLCDQsNC90LrQtdGC0LAg0L3QtdGb0LUg0LHQuNGC0Lgg0L/QvtGB0LvQsNGC0LAg0LrQvtGA0LjRgdC90LjQutGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICfQntCz0YDQsNC90LjRh9C10ZrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0YHRgtGA0LDQvdC40YbQsCAo0L3QsCDQutC+0ZjQuNC80LAg0YHRgyDQsNC90LrQtdGC0LUg0LLQuNC00ZnQuNCy0LUpINC90LAg0LzQsNC70L7QvCDQv9GA0LjQutCw0LfRgyDQv9GA0LXQs9C70LXQtNCwINCw0L3QutC10YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICfQiNCw0LLQvdCwINCw0L3QutC10YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAn0KDQtdC30YPQu9GC0LDRgtC4INGB0YLQsNGA0LjRmNC4INC+0LQg0L/QvtC00LXRiNC10L3QvtCzINCx0YDQvtGY0LAg0LTQsNC90LAg0ZvQtSDQsdC40YLQuCDQvtCx0YDQuNGB0LDQvdC4LiDQndCw0L/QvtC80LXQvdCwOiDRgNC10LfRg9C70YLQsNGC0LUg0LHRgNC40YjQtSBPVFJTINGB0LjRgdGC0LXQvNGB0LrQuCDRgdC10YDQstC40YEsINC/0L4g0LDQutGC0LjQstCw0YbQuNGY0Lgg0L/QvtC00LXRiNCw0LLQsNGa0LAgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINGD0YDQtdGS0LjQstCw0ZrQtSDQsNC90LrQtdGC0LUg0YMg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDQuNC90YLQtdGA0YTQtdGY0YHQsCDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINGD0YDQtdGS0LjQstCw0ZrQtSDQsNC90LrQtdGC0L3QuNGFINC/0LjRgtCw0ZrQsCDRgyDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINC40L3RgtC10YDRhNC10ZjRgdCwINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDQv9C+0LLRgNCw0YLQsNC6INGDINC00LXRgtCw0ZnQvdC4INC/0YDQuNC60LDQtyDQsNC90LrQtdGC0LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDQtNC10YLQsNGZ0L3QuCDQv9GA0LjQutCw0Lcg0YHRgtCw0YLQuNGB0YLQuNC60LUg0LDQvdC60LXRgtC1INGDINC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0L3QsCDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICfQlNC10YLQsNGZ0Lgg0YHRgtCw0YLQuNGB0YLQuNC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAn0JzQvtC00YPQuyDQt9CwINC00L7QtNCw0LLQsNGa0LUg0LDQvdC60LXRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAn0JzQvtC00YPQuyDQt9CwINGD0YDQtdGS0LjQstCw0ZrQtSDQsNC90LrQtdGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAn0J7Qs9GA0LDQvdC40YfQtdGa0LUg0L/RgNC10LPQu9C10LTQsCDQsNC90LrQtdGC0LUgLSDigJ7QvNCw0LvQvuKAnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJ9Cc0L7QtNGD0Lsg0LfQsCDRgdGC0LDRgtC40YHRgtC40LrRgyDQsNC90LrQtdGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICfQnNC+0LTRg9C7INC30LAg0LTQtdGC0LDRmdC90Lgg0L/RgNC40LrQsNC3INCw0L3QutC10YLQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICfQntCz0YDQsNC90LjRh9C10ZrQtSDQsNC90LrQtdGC0LUg0L/QviDRgdGC0YDQsNC90Lgg0LfQsCDQv9GA0LXQs9C70LXQtCDQvNCw0LvQvtCzINGE0L7RgNC80LDRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ9CQ0L3QutC10YLQsCDQvdC10ZvQtSDQsdC40YLQuCDQv9C+0YHQu9Cw0YLQsCDQvdCwINC/0L7QtNC10YjQtdC90YMg0LjQvNC10ZjQuyDQsNC00YDQtdGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICfQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9CwINCw0L3QutC10YLRgywg0L3Qv9GALiBTdXJ2ZXkjLCBNeVN1cnZleSMuINCf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+INGY0LUgU3VydmV5Iy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC00L7Qs9Cw0ZLQsNGY0LAg0L3QsCDRgtC40LrQtdGC0YMg0LfQsCDQsNGD0YLQvtC80LDRgtGB0LrQviDRgdC70LDRmtC1INC40LzQtdGY0LvQsCDQviDQuNGB0YLRgNCw0LbQuNCy0LDRmtGDINC60L7RgNC40YHQvdC40YbQuNC80LAg0LDQutC+INGY0LUg0YLQuNC60LXRgiDQt9Cw0YLQstC+0YDQtdC9Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAn0J7QutC40LTQsCDQsdGA0LjRgdCw0ZrQtSDRgNC10LfRg9C70YLQsNGC0LAgKNGD0LrRmdGD0YfRg9GY0YPRm9C4INC/0L7QtNCw0YLQutC1INC/0YDQuNC80ZnQtdC90LjRhSDQs9C70LDRgdC+0LLQsCDQuCDQv9C+0YHQu9Cw0YLQuNGFINC30LDRhdGC0LXQstCwKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ9Ce0LrQuNC00LDRhyDQvtC00LvQvtC20LXQvdC+0LMg0YHQu9Cw0ZrQsCDQt9Cw0YXRgtC10LLQsCDQt9CwINCw0L3QutC10YLRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICfQo9C70LDQtyDRgyDQtNC10YLQsNGZ0L3QuCDQv9GA0LjQutCw0Lcg0YHRgtCw0YLQuNGB0YLQuNC60LUuJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0xhdG5fU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnTmFwcmF2aSBub3Z1IGFua2V0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdVdm9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdVdm9kIHUgYW5rZXR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnU2FyZMW+YWogb2JhdmXFoXRlbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ1RpcG92aSB0aWtldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdJbnRlcm5pIG9waXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJ1VzbG92aSBrbGlqZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJ01vbGltbyBpemFiZXJpdGUgYXRyaWJ1dCBrbGlqZW50YSB6YSBkb2RhdmFuamUgdXNsb3ZhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJ0phdm5pIGtsanXEjSBhbmtldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICdQcmltZXIgYW5rZXRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnVXJlZGkgb3DFoXRlIGluZm9ybWFjaWplJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnVXJlZGkgcGl0YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdWaSBzdGUgb3ZkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnQW5rZXRuYSBwaXRhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ0RvZGFqIHBpdGFuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICdVbmVzaSBwaXRhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ09iYXZlemFuIG9kZ292b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICdaYSBvdnUgYW5rZXR1IG5pc3Ugc2HEjXV2YW5hIHBpdGFuamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnUGl0YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdPYmF2ZXphbiBvZGdvdm9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICdLYWRhIHphdnLFoWl0ZSBzYSB1cmXEkWl2YW5qZW0gYW5rZXRuaWggcGl0YW5qYSBzYW1vIHphdHZvcml0ZSBvdmFqIHByb3pvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICdaYXR2b3JpIG92YWogcHJvem9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdVcmVkaSBwaXRhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAnbmF6YWQgbmEgcGl0YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICdQaXRhbmplOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ01vZ3XEh2kgb2Rnb3ZvcmkgemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ0RvZGFqIG9kZ292b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdaYSBvdm8gcGl0YW5qZSBuaXN1IHNhxI11dmFuaSBvZGdvdm9yaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ092byBuZW1hIHZpxaFlIG9kZ292b3JhLCBwcm9zdG9yIHphIHRla3N0IMSHZSBiaXRpIHByaWthemFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ1VyZWRpIG9kZ292b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAnbmF6YWQgbmEgdXJlxJFpdmFuamUgcGl0YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnT2Rnb3ZvcjonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnUG9kZcWhYXZhbmphIHByZWdsZWRhIGFua2V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICdQcmV0cmFnZSB1IGF0cmlidXRpbWEgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGkgTm90aWZpY2F0aW9uQm9keSwgcmVkZWZpbml1IGRydWdlIGF0cmlidXRlIHNhIGlzdGltIGltZW5vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnVnJlbWUga3JlaXJhbmphIGFua2V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJ0JleiBvZ3JhbmnEjWVuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ1NhbW8gYW5rZXRlIGtyZWlyYW5lIGl6bWXEkXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnTWFrc2ltdW0gcHJpa2F6YW5paCBhbmtldGEgcG8gc3RyYW5pJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdQb8WhaWxqYW9jIG9iYXZlxaF0ZW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ1ByZWRtZXQgb2JhdmXFoXRlbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNZW5qYW8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnUHJlZ2xlZCBzdGF0aXN0aWtlIHphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnVGFiZWxhIHphaHRldmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJ0l6YWJlcmkgc3ZlIHphaHRldmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnVnJlbWUgc2xhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ1ZyZW1lIGdsYXNhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICdJemFiZXJpIG92YWogemFodGV2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnVmlkaSBkZXRhbGplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJ09icmnFoWkgc3RhdGlzdGlrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnRGV0YWxqaSBzdGF0aXN0aWtlIGFua2V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAnaWRpIG5hemFkIG5hIHByZWdsZWQgc3RhdGlzdGlrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAnUHJldGhvZG5pIGdsYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnU2xlZGXEh2kgZ2xhcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2lqZSBvIGFua2V0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnUG9zbGF0aSB6YWh0ZXZpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdQcmltbGplbmUgYW5rZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnRGV0YWxqaSBhbmtldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnVXNsdWdlIHphIHRpa2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnR3JhZmlrb24gcmV6dWx0YXRhIGFua2V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnTmVtYSBzdGF0aXN0aWtlIHJlenVsdGF0YS4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnQW5rZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnTW9saW1vIGRhIG9kZ292b3JpdGUgbmEgb3ZhIHBpdGFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnUG9rYcW+aSBtb2plIG9kZ292b3JlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICdPdm8gc3UgdmHFoWkgb2Rnb3ZvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnTmFzbG92IGFua2V0ZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnRG9kYWogbm92dSBhbmtldHUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnTmVtYXRlIGRvenZvbHUgemEgb3Z1IGFua2V0dSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnTmlqZSBkYXQgSUQgQW5rZXRlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ1VyZWRpIGFua2V0dSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICdOZW1hdGUgZG96dm9sdSB6YSBvdnUgYW5rZXR1IGlsaSBwaXRhbmplISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJ05lbWF0ZSBkb3p2b2x1IHphIG92dSBhbmtldHUsIHBpdGFuamUgaWxpIG9kZ292b3IhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ1VyZWRpIGFua2V0bmEgcGl0YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdEYS9OZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICdEdWdtZSAoTGlzdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ1BvbGplIHphIHBvdHZyZHUgKExpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICdPY2VuYSBwcm9tb3RlcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ1RpcCBwaXRhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnS29tcGxldG5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdOZWtvbXBsZXRubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnVXJlZGkgcGl0YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ1VyZWRpIG9kZ292b3InOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5U3RhdHMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAnUHJlZ2xlZCBzdGF0aXN0aWtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICdOZW1hdGUgZG96dm9sdSB6YSBvdnUgYW5rZXR1IGlsaSBkZXRhbGplIHN0YXRpc3Rpa2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ0RldGFsaiBzdGF0aXN0aWtlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAnTmUgbW/FvmUgc2UgcG9zdGF2aXRpIG5vdmkgc3RhdHVzISBOZW1hIGRlZmluaXNhbmloIHBpdGFuamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnTmUgbW/FvmUgc2UgcG9zdGF2aXRpIG5vdmkgc3RhdHVzISBQaXRhbmphIHN1IG5lcG90cHVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAnU3RhdHVzIHByb21lbmplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSBOaWplIGl6YWJyYW4gcmVkIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJ30gPSAnLSBOaWplIGl6YWJyYW4gdGlwIHRpa2V0YSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHNlcnZpY2Ugc2VsZWN0ZWQgLSd9ID0gJy0gTmlqZSBpemFicmFuIHNlcnZpcyB0aWtldGEgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gUHJvbWVuaSBzdGF0dXMgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICdHbGF2bm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCd9ID0gJ05ldmHFvmXEh2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ05vdmkgc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ09waXMgYW5rZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnb2Rnb3ZvcmVubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICduaWplIG9kZ292b3Jlbm8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ0h2YWxhIG5hIHZhxaFpbSBvZGdvdm9yaW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0Fua2V0YSBqZSB6YXZyxaFlbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJ1BvcnVrYSBhbmtldGUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICdNb2R1bCBuaWplIGFrdGl2aXJhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICdPdmEgZnVuY2lvbmFsbm9zdCBuaWplIG9tb2d1xIdlbmEsIG1vbGltbyBrb250YWt0aXJhanRlIHZhxaFlZyBhZG1pbmlzdHJhdG9yYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJ0dyZcWha2EgdSBhbmtldGkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICdOZWlzcHJhdmFuIGtsanXEjSBhbmtldGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICdVbmV0aSBrbGp1xI0gYW5rZXRlIGplIG5laXNwcmF2YW4sIGFrbyBzdGUgcHJhdGlsaSB2ZXp1IG1vxb5kYSBqZSBvbmEgbmV2YcW+ZcSHYSBpbGkgb8WhdGXEh2VuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICdHbGFzYW5qZSB1IGFua2V0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnUG9kYWNpIG8gZ2xhc2FuanUgdSBhbmtldGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ1ZlxIcgc3RlIG9kZ292b3JpbGkgbmEgYW5rZXR1Lic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnTGlzdGEgYW5rZXRhJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnRGEgbGkgemFpc3RhIMW+ZWxpdGUgZGEgb2JyacWhZXRlIG92byBwaXRhbmplPyBTVkkgcG92ZXphbmkgcG9kYWNpIMSHZSBiaXRpIElaR1VCTEpFTkkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnRGEgbGkgemFpc3RhIMW+ZWxpdGUgZGEgaXpicmnFoWV0ZSBvdmFqIG9kZ292b3I/JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ0Fua2V0bmkgbW9kdWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdNb2R1bCB6YSB1cmXEkWl2YW5qZSBhbmtldG5paCBwaXRhbmphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1N2aSBwYXJhbWV0cmkgT2JqZWt0YSBhbmtldGUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnQnJvaiBkYW5hIHBvc2xlIHNsYW5qYSBpbWVqbGEgbyBhbmtldGkgemEga29qZSBpc3RvbSBrb3Jpc25pa3UgbmXEh2UgYml0aSBzbGFuaSBub3ZpIHphaHRldmkuIEFrbyBpemFiZXJldGUgMCBpbWVqbCBvIGFua2V0aSBzZSB1dmVrIMWhYWxqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnUG9kcmF6dW1ldmFuaSBzYWRyxb5haiBpbWVqbGEgb2JhdmXFoXRlbmphIG8gbm92b2ogYW5rZXRpIHphIGtvcmlzbmlrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdQb2RyYXp1bWV2YW5pIHBvxaFpbGphb2MgaW1lamxhIG9iYXZlxaF0ZW5qYSBvIG5vdm9tIGlzdHJhxb5pdmFuanUgemEga29yaXNuaWtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdQb2RyYXp1bWV2YW5pIHByZWRtZXQgaW1lamxhIG9iYXZlxaF0ZW5qYSBvIG5vdm9qIGFua2V0aSB6YSBrb3Jpc25pa2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBtb2R1bCBwcmVnbGVkYSB6YSBtYWxpIHByaWtheiBsaXN0ZSBhbmtldGEuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICdPZHJlxJF1amUgZ3J1cGUga29qZSBpbWFqdSBkb3p2b2x1IGRhIG1lbmphanUgc3RhdHVzIGFua2V0ZS4gVGFiZWxhIGplIHBvZHJhenVtZXZhbm8gcHJhem5hIGkgb3BlcmF0ZXJpIGl6IHN2aWggZ3J1cGEgbW9ndSBkYSBtZW5qYWp1IHN0YXR1cyBhbmtldGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnRGVmaW5pxaFlIGRhIGxpIMSHZSB6YWh0ZXZpIHphIGFua2V0ZSBiaXRpIHBvc2xhdGkgc2FtbyBwcmF2aW0ga2xpamVudGltYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBtYWtzaW1hbG5pIGJyb2ogYW5rZXRhIGtvamkgxIdlIGJpdGkgcG9zbGF0IGtvcmlzbmlrdSB0b2tvbSAzMCBkYW5hLiAoMCB6bmHEjWkgZGEgbmVtYSBtYWtzaW11bWEsIHN2aSB6YWh0ZXZpIMSHZSBiaXRpIHBvc2xhdGkpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnRGVmaW5pxaFlIGJyb2ogc2F0aSBvZCB6YXR2YXJhbmphIHRpa2V0YSB6YSBwb2tyZXRhbmplIHNsYW5qYSBhbmtldGUuICgwIHpuYcSNaSBkYSBzZSDFoWFsamUgb2RtYWggcG8gemF0dmFyYW5qdSkuIE5hcG9tZW5hOiBvZGxhZ2FuamUgc2xhbmphIGFua2V0ZSBvYmF2bGphIOKAnk9UUlMg4oCdIHNlcnZpcyBwcmUgYWt0aXZpcmFuamEg4oCeRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmTigJ0gcG9zdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBrb2xvbmUgemEgbGlzdHUgcHJpbGlrb20gcHJhdmxqZW5qYSB1c2xvdmEgemFodGV2YSAoMCA9PiBpc2tsanXEjWVubywgMSA9PiB1a2xqdcSNZW5vKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbnUgdmlzaW51IG9rdmlyYSB6YSBwcmlrYXogdGVrc3RhICB6YSBkZXRhbGpuaSBwcmlrYXogZWxlbWVuYXRhIGFua2V0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnRGVmaW5pxaFlIGdydXBlIChydykga29qZSBtb2d1IGRhIGJyacWhdSBzdGF0aXN0aWtlIGFua2V0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnT2RyZcSRdWplIG1ha3NpbWFsbnUgdmlzaW51IOKAnlJpY2h0ZXh04oCdIHByaWthemEgdGVrc3RhICB6YSBkZXRhbGpuaSBwcmlrYXogZWxlbWVuYXRhIGFua2V0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwcmlrYXphbmUga29sb25lIHUgcHJlZ2xlZHUgYW5rZXRlLiBPdmEgb3BjaWplIG5lbWEgdXRpY2FqIG5hIHBvemljaWplIGtvbG9uYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBkYSBsaSBtb2R1bCBzdGF0aXN0aWthIG1vxb5lIGdlbmVyaXNhdGkgbGlzdGUgYW5rZXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJ1VyZWRpIG9wxaF0ZSBpbmZvcm1hY2lqZSBvIGFua2V0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ1VyZWRpIGFua2V0bmEgcGl0YW5qYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnVWtsanXEjWkgaWxpIGlza2xqdcSNaSBwcmlrYXogZWtyYW5hIHphIGdsYXNhbmplIG5hIGphdm5vbSBpbnRlcmZlanN1IHJhZGkgcHJpa2F6YSByZXp1bHRhdGEgcG9qZWRpbmUgYW5rZXRlIGthZGEga29yaXNuaWsgcG9rdcWhYSBkYSBvZGdvdm9yaSBuYSB1cGl0bmlrIHBvIGRydWdpIHB1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICdVa2xqdcSNaSBpbGkgaXNrbGp1xI1pIHByb3ZlcnUgc3RhdHVzYSBzbGFuamEgemEgdXNsdWd1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ1VrbGp1xI1pIGlsaSBpc2tsanXEjWkgcHJvdmVydSBzdGF0dXNhIHNsYW5qYSB6YSB0aXAgdGlrZXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RyYWNpamEgIkZyb250ZW5kIiBtb2R1bGEgemEgZG9kYXZhbmplIGFua2V0ZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVnaXN0cmFjaWphICJGcm9udGVuZCIgbW9kdWxhIHphIGl6bWVuZSBhbmtldGUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RyYWNpamEgIkZyb250ZW5kIiBtb2R1bGEgemEgc3RhdGlzdGlrdSBhbmtldGUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhY2lqYSAiRnJvbnRlbmQiIG1vZHVsYSB6YSBkZXRhbGpuaSBwcmlrYXogYW5rZXRlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICdSZWdpc3RyYWNpamEgIkZyb250ZW5kIiBtb2R1bGEgemEgamF2bmUgYW5rZXRuZSBvYmpla3RlIGFua2V0ZSB1IHByb3N0b3J1IGphdm5paCBhbmtldGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdBa28gc2Ugb3ZhaiBpenJheiBwb2tsYXBhLCBhbmtldGEgbmXEh2UgYml0aSBwb3NsYXRhIGtvcmlzbmlrdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAnT2dyYW5pxI1lbmplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBzdHJhbmljYSAobmEga29qaW1hIHN1IGFua2V0ZSB2aWRsaml2ZSkgbmEgbWFsb20gcHJpa2F6dSBwcmVnbGVkYSBhbmtldGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnSmF2bmEgYW5rZXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHRzIG9sZGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgYW1vdW50IG9mIGRheXMgd2lsbCBiZSBkZWxldGVkLiBOb3RlOiBkZWxldGUgcmVzdWx0cyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ1Rhc2sjIyNTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZVwnIHNldHRpbmcuJ30gPQogICAgICAgICdSZXp1bHRhdGkgc3RhcmlqaSBvZCBwb2RlxaFlbm9nIGJyb2phIGRhbmEgxIdlIGJpdGkgb2JyaXNhbmkuIE5hcG9tZW5hOiByZXp1bHRhdGUgYnJpxaFlIE9UUlMgc2lzdGVtc2tpIHNlcnZpcywgcG8gYWt0aXZhY2lqaSBwb2RlxaFhdmFuamEgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgdXJlxJFpdmFuamUgYW5rZXRlIHUgZGV0YWxqbm9tIHByaWthenUgaW50ZXJmZWpzYSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgdXJlxJFpdmFuamUgYW5rZXRuaWggcGl0YW5qYSB1IGRldGFsam5vbSBwcmlrYXp1IGludGVyZmVqc2Egb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgcG92cmF0YWsgdSBkZXRhbGpuaSBwcmlrYXogYW5rZXRlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgZGV0YWxqbmkgcHJpa2F6IHN0YXRpc3Rpa2UgYW5rZXRlIHUgZGV0YWxqbm9tIHByaWthenUgbmEgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdEZXRhbGppIHN0YXRpc3Rpa2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnTW9kdWwgemEgZG9kYXZhbmplIGFua2V0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ01vZHVsIHphIHVyZcSRaXZhbmplIGFua2V0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdPZ3JhbmnEjWVuamUgcHJlZ2xlZGEgYW5rZXRlIC0g4oCebWFsb+KAnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJ01vZHVsIHphIHN0YXRpc3Rpa3UgYW5rZXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnTW9kdWwgemEgZGV0YWxqbmkgcHJpa2F6IGFua2V0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICdPZ3JhbmnEjWVuamUgYW5rZXRlIHBvIHN0cmFuaSB6YSBwcmVnbGVkIG1hbG9nIGZvcm1hdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnQW5rZXRhIG5lxIdlIGJpdGkgcG9zbGF0YSBuYSBwb2RlxaFlbnUgaW1lamwgYWRyZXN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnSWRlbnRpZmlrYXRvciB6YSBhbmtldHUsIG5wci4gU3VydmV5IywgTXlTdXJ2ZXkjLiBQb2RyYXp1bWV2YW5vIGplIFN1cnZleSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnTW9kdWwgZG9nYcSRYWphIG5hIHRpa2V0dSB6YSBhdXRvbWF0c2tvIHNsYW5qZSBpbWVqbGEgbyBpc3RyYcW+aXZhbmp1IGtvcmlzbmljaW1hIGFrbyBqZSB0aWtldCB6YXR2b3Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJ09raWRhIGJyaXNhbmplIHJlenVsdGF0YSAodWtsanXEjXVqdcSHaSBwb2RhdGtlIHByaW1samVuaWggZ2xhc292YSBpIHBvc2xhdGloIHphaHRldmEpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnT2tpZGHEjSBvZGxvxb5lbm9nIHNsYW5qYSB6YWh0ZXZhIHphIGFua2V0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICdVbGF6IHUgZGV0YWxqbmkgcHJpa2F6IHN0YXRpc3Rpa2UuJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnN3X1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ1RlbmdlbmV6YSB0YWZpdGkgbXB5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdVdGFuZ3VsaXppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdVdGFuZ3VsaXppIHdhIHRhZml0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ0tpaW5pIGNoYSB0YWFyaWZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ0FpbmEgemEgdGlrZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnTWFlbGV6byB5YSBuZGFuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnSGFyaXJpIHRhYXJpZmEgemEgdWp1bWxhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnSGFyaXJpIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdNYXN3YWxpIHlhIHRhZml0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdPbmdlemEgc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICdDaGFwYSBzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdKaWJ1IGxpbmFoaXRhamlrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ0hha3VuYSBtYXN3YWxpIHlhbGl5byBoaWZhZGhpd2Ega3dhIGhpaSB0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdTd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdKaWJ1IGxpbmFoaXRhamlrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdIYXJpcmkgc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICdydWRpIGt3ZW55ZSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ01hamlidSB5YXdlemVrYW5hIGt3YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnT25nZXphIGppYnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdIYWt1bmEgbWFqaWJ1IHlhbGl5b2hpZmFkaGl3YSBrd2EgaGlsaSBzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnSGlsaSBoYWxpbmEgbWFqaWJ1IG1lbmdpLCBzZWhlbXUgeWEgbmFrYWxhIGl0YW9ueWVzaHdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ0hhcmlyaSBqaWJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ1J1ZGkgbnl1bWEga3VoYXJpcmkgc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnTXR1bWFqaSB0YWFyaWZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnU29tbyBsYSB0YWFmaWZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdJbWViYWRpbGlzaHdhIG5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ01hcGl0aW8geWEgdGFrd2ltdSB5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ0plZHdhbGkgbGEgbWFvbWJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnTXVkYSB3YSBrdXR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnTXVkYSB3YSBrdXBpZ2Ega3VyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnT25hIG1hZWxlem8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdNYWVsZXpvIHlhIHRha3dpbXUgemEgdGFmaXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICdSdWRpIG55dW1hIGt3ZW55ZSBtYXBpdGlvIHlhIHRha3dpbXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnVGFhcmlmYSB6YSB0YWt3aW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdNYW9tYmkgeWFsaXlvdHVtd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ1RhZml0aSB6aWxpem9wb2tlbGV3YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ01hZWxlem8geWEgdGFmaXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ0h1ZHVtYSB6YSB0aWtldGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICdHcmFmdSB5YSBtYXRva2VvIHlhIHRhZml0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnSGFrdW5hIG1hdG9rZW8geWEgdGFrd2ltdSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdUYWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdUYWZhZGhhbGkgamlidSBoYXlhIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnT255ZXNoYSBtYWppYnUgeWFuZ3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0hheWEgbmkgbWFqaWJ1IHlha28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnS2ljaHdhIGNoYSBoYWJhcmkgY2hhIHV0YWZpdGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ09uZ2V6YSB1dGFmaXRpIG1weWEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ0hhcmlyaSB1dGFmaXRpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICdIYXJpcmkgbWFzd2FsaSB5YSB1dGFmaXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ05kaW8vSGFwYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ1JlZGlvIChPcm9kaGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ0NoZWtpIGJva3NpIChvcm9kaGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnQWluYSB5YSBzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ0thbWlsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnSXNpeW8ga2FtaWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICdIYXJpcmkgbWFzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ0hhcmlyaSBtYWppYnUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5U3RhdHMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAnTWFwaXRpbyB5YSB0YWt3aW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAnTWFlbGV6byB5YSB0YWZpdGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICdTaW9uaSBoYWxpIG1weWEhIEhha3VuYSBtYXN3YWxpIHlhbGl5b2ZhZmFudWxpd2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ0hhbGkgaW1lYmFkaWxpa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSBIYWt1bmEgZm9sZW5pIGlsaXlvY2hhZ3VsaXdhLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCB0eXBlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gQ2hhbmdlIFN0YXR1cyAtJ30gPSAnLSBCYWRpbGlzaGEgSGFsaS0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnRnV6dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAnSXNpeW8gaGFsYWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICdIYWxpIG1weWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnTWFlbGV6byB5YSB0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdZYWxpeW9qaWJpd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnWWFzaXlvamliaXdhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdBc2FudGUga3dhIG1hamlidSB5YWtvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ1V0YWZpdGkgdW1lbWFsaXppa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnVW1la3dpc2hhamlidSB0YWZpdGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vU3RhdHMvRHluYW1pYy9TdXJ2ZXlMaXN0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTGlzdCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJ0plIHVuYXRha2Ega3VmdXRhIGhpbGkgc3dhbGk/IERhdGEgem90ZSB6aXRhIFBPVEVBISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ0plIHVuYXRha2Ega3VmdXRhIGhpbGkgamlidT8nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnTW9kdWxpIHlhIHV0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ01vZHVsaSB5YSBrdWhhcmlyaSBtYXN3YWxpIHlhIHV0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0YSB6b3RlIHphIHZpdHUgdnlhIHNhdmVpIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdJZGFkaSB5YSBzaWt1IGJhYWRhIHlhIGt1dHVtYSBiYXJ1YSBwZXBlIHlhIHRhZml0aSBhbWJhcG8gaGFrdW5hIG1hb21iaSBtYXB5YSB5YSB0YWZpdGkga3V0dW13YSBrd2EgbXRlamEgaHV5by4gS3VjaGFndWEgMCBkYWltYSBrdXRhdHVtYSBiYXJ1YSBwZXBlIHlhIHNhdmVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NoYWd1by1tc2luZ2kgbGEga2lpbmkgY2hhIGJhcnVhIHBlcGUgeWEgdGFhcmlmYSBrd2Egd2F0ZWphIGt1aHVzdSBzYXZlaSBtcHlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NoYWd1by1tc2luZ2kgbGEgbXR1bWFqaSB3YSBiYXJ1YSBwZXBlIHlhIHRhYXJpZmEga3VodXN1IHNhdmVpIG1weWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NoYWd1by1tc2luZ2kgbGEgc29tbyBsYSBiYXJ1YSBwZXBlIHlhIHRhYXJpZmEga3dhIHdhdGVqYSBrdWh1c3Ugc2F2ZWkgbXB5YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnSW5hZmFmYW51YSBtYXBpdGlvIHlhIG1vZHVsaSBrdW9ueWVzaGEgbXVvbmVrYW5vIG1kb2dvIHdhIG9yb2RoYSB5YSBzYXZlaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIGtpa29tbyBjaGEganV1IGNoYSBpZGFkaSB5YSBzYXZlaSB6aW5hem90dW13YSBrd2EgbXRlamEga3dhIHNpa3UgMzAuICgwIGluYW1hYW5pc2hhIGhha3VuYSBraWtvbW8sIHNhdmVpIHpvdGUgeml0YXR1bXdhKS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgY2hhZ3VvLW1zaW5naSBsYSB1cmVmdSB3YSBtdW9uZWthbm8gd2EgUmljaHRleHQga3dhIGVsZW1lbnRpIHphIFV0YWZpdGlLdXp3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBzYWZ1IGlsaXlvb255ZXNod2Ega3dlbnllIG1hcGl0aW8geWEgdXRhZml0aS4gSGlsaSBjaGFndW8gaGFsaW5hIGF0aGFyaSBrd2EgbmFmYXNpIHlhIHNhZnUuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnV2V6ZXNoYSBhdSBVc2l3ZXplc2hlIHNrcmluaSB5YSBPbmVzaGFLdXJhRGF0YSBrd2Ega2lvbGVzdXJhIGNoYSB1bW1hIGlsaSBrdW9ueWVzaGEgZGF0YSB6YSB1dGFmaXRpIGZ1bGFuaSBtYWFsdW11IHBhbGUgbXRlamEgYW5hcG9qYXJpYnUga3VqaWJ1IHV0YWZpdGkga3dhIG1hcmEgeWEgcGlsaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICdXZXplc2hhIGF1IFVzaXdlemVzaGUga3VjaGFndWEgaGFsaSB5YSBrdXR1bWEga3dhIGhpaSBodWR1bWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnV2V6ZXNoYSBhdSBVc2l3ZXplc2hlIGt1Y2hhZ3VhIGhhbGkgeWEga3V0dW1hIGt3YSBhaW5hIHlhIHRpa2V0aS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsaSB5YSBGcm9udGVuZCB5YSBrdXNhamlsaSBpbGkga3VvbmdlemEgIHV0YWZpdGkga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWxpIHlhIEZyb250ZW5kIHlhIGt1c2FqaWxpIGlsaSBrdWhhcmlyaSB1dGFmaXRpIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bGkgeWEgRnJvbnRlbmQgeWEga3VzYWppbGkgdGFrd2ltdSB6YSB1dGFmaXRpIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsaSB5YSBGcm9udGVuZCB5YSBrdXNhamlsaSB1dGFmaXRpIGt1emEga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnTW9kdWxpIHlhIEZyb250ZW5kIHlhIGt1c2FqaWxpIGt3YSBhamlsaSB5YSBVdGFmaXRpVW1tYSBrYXRpa2EgZW5lbyBsYSB1dGFmaXRpIHdhIHVtbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdLYW1hIGhpaSByZWdleCBpbmFmYW5hbmEsIHV0YWZpdGkgd2EgbXRlamEgaGF1dGF0dW13YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGEga3dhIGFqaWxpIHlhIGt1cmFzYSAoYW1iYXpvIG5kYW5pIHlha2UgdXRhZml0aSB1bWVvbnllc2h3YSkgemEgbWFwaXRpbyB5YSB1dGFmaXRpIG1kb2dvLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICdTYXZlaSB5YSB1bW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUgaWxpIGt1aGFyaXJpIHV0YWZpdGkga2F0aWthIG11b25la2FubyB1bGlva3V6d2Egd2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBraXVuZ28ga2F0aWthIG1lbnl1IGlsaSBrdWhhcmlyaSBtYXN3YWxpIHlhIHV0YWZpdGkga2F0aWthIG11b25la2FubyB1bGlva3V6d2Egd2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUgaWxpIGt1cnVkaSBrYXRpa2EgbXVvbmVrYW5vIHVsaW9rdXp3YSB3YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUgaWxpIGt1a3V6YSBtYWVsZXpvIHlhIHRha3dpbXUgemEgdXRhZml0aSBrYXRpa2EgbXVvbmVrYW5vIHVsaW9rdXp3YSB3YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ01hZWxlem8geWEgdGFmaXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnTW9kdWxpIHlhIGt1aGFyaXJpIHNhdmVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ01hcGl0aW8geWEgc2F2ZWkga2lrb21vICJjaGEgY2hpbmkiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnTW9kdWxpIHlhIHRha3dpbXUgemEgc2F2ZWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICdNb2R1bGkgeWEga3VrdXphIHNhdmVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnU2F2ZWkgaGF6aXRhdHVtd2Ega3dhIGJhcnVhIHBlcGUgemlsaXpvd2Vrd2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdLaXRhbWJ1bGlzaG8gY2hhIHV0YWZpdGksIG1mLiBVdGFmaXRpIywgVXRhZml0aSB3YW5ndSMuIENoYWd1by1tc2luZ2kgbmkgVXRhZml0aSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnTW9kdWxpIHlhIHR1a2lvIGxhIHRpa2V0aSBrd2EgYWppbGkgeWEga3V0dW1hIGJhcnVhIHBlcGUgemEgbWFvbWJpIHlhIHRhZml0aSBtb2phIGt3YSBtb2phIGt3YSB3YXRlamEga2FtYSB0aWtldGkgaW1lZnVuZ3dhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnRoX1RIX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ+C4quC4o+C5ieC4suC4h+C5geC4muC4muC4quC4reC4muC4luC4suC4oeC5g+C4q+C4oeC5iCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICfguJrguJfguJnguLMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ+C4hOC4s+C4meC4s+C5geC4muC4muC4quC4reC4muC4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ+C4geC4suC4o+C5geC4iOC5ieC4h+C5gOC4leC4t+C4reC4meC4quC5iOC4p+C4meC5gOC4meC4t+C5ieC4reC5gOC4o+C4t+C5iOC4reC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICfguJvguKPguLDguYDguKDguJfguILguK3guIfguJXguLHguYvguKcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICfguKPguLLguKLguKXguLDguYDguK3guLXguKLguJTguKDguLLguKLguYPguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ+C5geC4geC5ieC5hOC4guC4guC5ieC4reC4oeC4ueC4peC4l+C4seC5iOC4p+C5hOC4myc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ+C5geC4geC5ieC5hOC4guC4hOC4s+C4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICfguITguLjguJPguK3guKLguLnguYjguJfguLXguYjguJnguLXguYgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ+C4hOC4s+C4luC4suC4oeC5geC4muC4muC4quC4reC4muC4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICfguYDguJ7guLTguYjguKHguITguLPguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICfguJvguKPguLDguYDguKDguJfguITguLPguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAn4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4LiE4Liz4LiV4Lit4LiaJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAn4LmE4Lih4LmI4Lih4Li14LiE4Liz4LiW4Liy4Lih4Lia4Lix4LiZ4LiX4Li24LiB4LmD4LiZ4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LiZ4Li14LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAn4LiE4Liz4LiW4Liy4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ+C4leC5ieC4reC4h+C4geC4suC4o+C4hOC4s+C4leC4reC4mic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAn4LmA4Lih4Li34LmI4Lit4LiE4Li44LiT4LiB4Liy4Lij4LmB4LiB4LmJ4LmE4LiC4LiE4Liz4LiW4Liy4Lih4LmD4LiZ4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LmA4Liq4Lij4LmH4LiI4Liq4Li04LmJ4LiZ4LmB4Lil4LmJ4Lin4LmA4Lie4Li14Lii4LiH4LmB4LiE4LmI4Lib4Li04LiU4Lir4LiZ4LmJ4Liy4LiI4Lit4LiZ4Li14LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICfguYHguIHguYnguYTguILguITguLPguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICfguIHguKXguLHguJrguYTguJvguJfguLXguYjguITguLPguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAn4LiE4Liz4LiW4Liy4LihOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ+C4hOC4s+C4leC4reC4muC4l+C4teC5iOC5gOC4m+C5h+C4meC5hOC4m+C5hOC4lOC5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAn4LmA4Lie4Li04LmI4Lih4LiE4Liz4LiV4Lit4LiaJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAn4LmE4Lih4LmI4Lih4Li14LiE4Liz4LiV4Lit4Lia4Lia4Lix4LiZ4LiX4Li24LiB4LmD4LiZ4LiE4Liz4LiW4Liy4Lih4LiZ4Li14LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICfguKHguLXguJrguLLguIfguITguLPguJbguLLguKHguJfguLXguYjguKLguLHguIfguYTguKHguYjguJXguK3guJogdGV4dGFyZWEg4LiI4Liw4Lib4Lij4Liy4LiB4LiPICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ+C5geC4geC5ieC5hOC4guC4hOC4s+C4leC4reC4mic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICfguIHguKXguLHguJrguYTguJvguJfguLXguYjguYHguIHguYnguYTguILguITguLPguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ+C4hOC4s+C4leC4reC4mjonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaGVzIGluIHRoZSBhdHRyaWJ1dGVzIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keSwgb3ZlcnJpZGluZyBvdGhlciBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVzdHJpY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICfguIjguLPguJnguKfguJnguKrguLnguIfguKrguLjguJTguJfguLXguYjguIjguLDguYHguKrguJTguIfguYHguJrguJrguKrguK3guJrguJbguLLguKHguYPguJnguYHguJXguYjguKXguLDguKvguJnguYnguLInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ+C4geC4suC4o+C5geC4iOC5ieC4h+C5gOC4leC4t+C4reC4meC4nOC4ueC5ieC4quC5iOC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ+C4geC4suC4o+C5geC4iOC5ieC4h+C5gOC4leC4t+C4reC4meC5gOC4o+C4t+C5iOC4reC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAn4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LmB4Lib4Lil4LiH4LmC4LiU4LiiJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ+C4quC4luC4tOC4leC4tOC4oOC4suC4nuC4o+C4p+C4oeC4guC4reC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ+C4geC4suC4o+C4o+C5ieC4reC4h+C4guC4reC4leC4suC4o+C4suC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ+C5gOC4p+C4peC4suC4quC5iOC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICfguYDguKfguKXguLLguYLguKvguKfguJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ+C4lOC4ueC5gOC4meC4t+C5ieC4reC4q+C4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ+C5gOC4meC4t+C5ieC4reC4q+C4suC4guC4reC4h+C4quC4luC4tOC4leC4tOC5geC4muC4muC4quC4reC4muC4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAn4LiB4Lil4Lix4Lia4LmE4Lib4LiX4Li14LmI4Liq4LiW4Li04LiV4Li04Lig4Liy4Lie4Lij4Lin4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ+C4guC5ieC4reC4oeC4ueC4peC5geC4muC4muC4quC4reC4muC4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAn4Liq4LmI4LiH4LiE4Liz4Lij4LmJ4Lit4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICfguYTguJTguYnguKPguLHguJrguYHguJrguJrguKrguK3guJrguJbguLLguKHguYHguKXguYnguKcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICfguYDguJnguLfguYnguK3guKvguLLguILguK3guIfguYHguJrguJrguKrguK3guJrguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAn4LiB4Liy4Lij4Lia4Lij4Li04LiB4Liy4Lij4LiC4Lit4LiH4LiV4Lix4LmL4LinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAn4LiB4Lij4Liy4Lif4LiE4Liz4LiV4Lit4Lia4LiC4Lit4LiH4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICfguYTguKHguYjguKHguLXguITguLPguJXguK3guJrguILguK3guIfguKrguJbguLTguJXguLQnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAn4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAn4LmC4Lib4Lij4LiU4LiV4Lit4Lia4LiE4Liz4LiW4Liy4Lih4LmA4Lir4Lil4LmI4Liy4LiZ4Li14LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ+C5geC4quC4lOC4h+C4hOC4s+C4leC4reC4muC4guC4reC4h+C4ieC4seC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAn4LiZ4Li14LmI4LiE4Li34Lit4LiE4Liz4LiV4Lit4Lia4LiC4Lit4LiH4LiE4Li44LiTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ+C4q+C4seC4p+C4guC5ieC4reC5geC4muC4muC4quC4reC4muC4luC4suC4oSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAn4LmA4Lie4Li04LmI4Lih4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICfguYHguIHguYnguYTguILguYHguJrguJrguKrguK3guJrguJbguLLguKEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ+C5geC4muC4muC4quC4reC4muC4luC4suC4oeC5geC4geC5ieC5hOC4guC4hOC4s+C4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICfguYPguIrguYgv4LmE4Lih4LmI4LmD4LiK4LmIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ+C5gOC4o+C4lOC4tOC5guC4rSjguKPguLLguKLguIrguLfguYjguK0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ+C4geC4peC5iOC4reC4h+C4leC4o+C4p+C4iOC4quC4reC4miAo4Lij4Liy4Lii4LiK4Li34LmI4LitKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ+C4m+C4o+C4sOC5gOC4oOC4l+C4guC4reC4h+C4hOC4s+C4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ+C5gOC4quC4o+C5h+C4iCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAn4LmE4Lih4LmI4LmA4Liq4Lij4LmH4LiIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICfguYHguIHguYnguYTguILguITguLPguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICfguYHguIHguYnguYTguILguITguLPguJXguK3guJonOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5U3RhdHMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAn4Liq4LiW4Li04LiV4Li04Lig4Liy4Lie4Lij4Lin4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAn4LmA4LiZ4Li34LmJ4Lit4Lir4Liy4Liq4LiW4Li04LiV4Li0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAn4LmE4Lih4LmI4Liq4Liy4Lih4Liy4Lij4LiW4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LmD4Lir4Lih4LmIISDguKLguLHguIfguYTguKHguYjguYTguJTguYnguIHguLPguKvguJnguJTguITguLPguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LmB4Lil4LmJ4LinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0g4LmE4Lih4LmI4Lih4Li14LiE4Li04Lin4LiX4Li14LmI4LiW4Li54LiB4LmA4Lil4Li34Lit4LiBIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHNlcnZpY2Ugc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0g4LmA4Lib4Lil4Li14LmI4Lii4LiZ4Liq4LiW4Liy4LiZ4LiwIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAn4Lih4Liy4Liq4LmA4LiV4Lit4Lij4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICfguYTguKHguYjguJbguLnguIHguJXguYnguK3guIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ+C4quC4luC4suC4meC4sOC5g+C4q+C4oeC5iCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICfguITguLPguK3guJjguLTguJrguLLguKLguYHguJrguJrguKrguK3guJrguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICfguJXguK3guJrguYHguKXguYnguKcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAn4Lii4Lix4LiH4LmE4Lih4LmI4LiV4Lit4LiaJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICfguILguK3guJrguITguLjguJPguKrguLPguKvguKPguLHguJrguITguKfguLLguKHguITguLTguJTguYDguKvguYfguJnguILguK3guIfguITguLjguJMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICfguYHguJrguJrguKrguK3guJrguJbguLLguKHguYDguKrguKPguYfguIjguYDguKPguLXguKLguJrguKPguYnguK3guKLguYHguKXguYnguKcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAn4LiE4Li44LiT4LmE4LiU4LmJ4LiV4Lit4Lia4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LiZ4Li14LmJ4LmB4Lil4LmJ4LinJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICfguITguLjguJPguYHguJnguYjguYPguIjguKvguKPguLfguK3guYTguKHguYjguJfguLXguYjguIjguLDguKXguJrguITguLPguJbguLLguKHguJnguLXguYk/IOC4guC5ieC4reC4oeC4ueC4peC4l+C4teC5iOC5gOC4geC4teC5iOC4ouC4p+C4guC5ieC4reC4h+C4l+C4seC5ieC4h+C4q+C4oeC4lOC4iOC4sOC4q+C4suC4ouC5hOC4myEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nfSA9ICfguITguLjguJPguJXguYnguK3guIfguIHguLLguKPguKXguJrguIHguLLguKPguJXguK3guJrguJnguLXguYnguKvguKPguLfguK3guYTguKHguYg/JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ+C5guC4oeC4lOC4ueC4peC5geC4muC4muC4quC4reC4muC4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAn4LmC4Lih4LiU4Li54Lil4Liq4Liz4Lir4Lij4Lix4Lia4LmB4LiB4LmJ4LmE4LiC4LiE4Liz4LiW4Liy4Lih4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4LiX4Lix4LmJ4LiH4Lir4Lih4LiU4Liq4Liz4Lir4Lij4Lix4Lia4Lit4Lit4Lia4LmA4LiI4LiB4LiV4LmM4LiC4Lit4LiH4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ+C4iOC5jeC4suC4meC4p+C4meC4p+C4seC4meC4q+C4peC4seC4h+C4iOC4suC4geC4quC5iOC4h+C4reC4teC5gOC4oeC4peC5jOC5g+C4meC4geC4suC4o+C4quC4reC4muC4luC4suC4oeC4l+C4teC5iOC5hOC4oeC5iOC4oeC4teC4geC4suC4o+C4o+C5ieC4reC4h+C4guC4reC4geC4suC4o+C4quC4reC4muC4luC4suC4oeC4hOC4o+C4seC5ieC4h+C5g+C4q+C4oeC5iOC4iOC4sOC4luC4ueC4geC4quC5iOC4h+C5hOC4m+C4ouC4seC4h+C4peC4ueC4geC4hOC5ieC4suC4o+C4suC4ouC5gOC4lOC4teC4ouC4p+C4geC4seC4mSDguYDguKXguLfguK3guIEgMCDguYDguJ7guLfguYjguK3guKrguYjguIfguK3guLXguYDguKHguKXguYzguYPguJnguIHguLLguKPguKrguK3guJrguJbguLLguKHguJXguKXguK3guJQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiH4Liq4LmI4Lin4LiZ4LmA4LiZ4Li34LmJ4Lit4LmA4Lij4Li34LmI4Lit4LiH4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LmB4LiI4LmJ4LiH4LmA4LiV4Li34Lit4LiZ4Lit4Li14LmA4Lih4Lil4LmM4LmA4LiB4Li14LmI4Lii4Lin4LiB4Lix4Lia4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LmD4Lir4Lih4LmI4LiW4Li24LiH4Lil4Li54LiB4LiE4LmJ4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiH4Lic4Li54LmJ4Liq4LmI4LiH4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LmB4LiI4LmJ4LiH4LmA4LiV4Li34Lit4LiZ4Lit4Li14LmA4Lih4Lil4LmM4LmA4LiB4Li14LmI4Lii4Lin4LiB4Lix4Lia4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LmD4Lir4Lih4LmI4LiW4Li24LiH4Lil4Li54LiB4LiE4LmJ4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ+C4hOC5iOC4suC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4guC4reC4h+C5gOC4meC4t+C5ieC4reC4q+C4suC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5geC4iOC5ieC4h+C5gOC4leC4t+C4reC4meC4reC4teC5gOC4oeC4peC5jOC5gOC4geC4teC5iOC4ouC4p+C4geC4seC4muC5geC4muC4muC4quC4reC4muC4luC4suC4oeC5g+C4q+C4oeC5iOC4luC4tuC4h+C4peC4ueC4geC4hOC5ieC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguYLguKHguJTguLnguKXguKDguLLguJ7guKPguKfguKHguJfguLXguYjguIjguLDguYHguKrguJTguIfguKHguLjguKHguKHguK3guIfguYDguKXguYfguIEg4LmGIOC4guC4reC4h+C4o+C4suC4ouC4iuC4t+C5iOC4reC5geC4muC4muC4quC4reC4muC4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4iOC4s+C4meC4p+C4meC4quC4ueC4h+C4quC4uOC4lOC4guC4reC4h+C4geC4suC4o+C4quC4s+C4o+C4p+C4iOC4l+C4teC5iOC5hOC4lOC5ieC4o+C4seC4muC4geC4suC4o+C4quC5iOC4h+C5g+C4q+C5ieC4geC4seC4muC4peC4ueC4geC4hOC5ieC4suC4oOC4suC4ouC5g+C4mSAzMCDguKfguLHguJkgKDAg4Lir4Lih4Liy4Lii4LiW4Li24LiH4LmE4Lih4LmI4Lih4Li14LiB4Liy4Lij4LiB4Liz4Lir4LiZ4LiU4LiI4Liz4LiZ4Lin4LiZ4Liq4Li54LiH4Liq4Li44LiUIOC4i+C4tuC5iOC4h+C5geC4muC4muC4quC4s+C4o+C4p+C4iOC4l+C4teC5iOC5gOC4o+C4teC4ouC4geC4guC4reC4l+C4seC5ieC4h+C4q+C4oeC4lOC4iOC4sOC4luC4ueC4geC4quC5iOC4hyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4Lin4Liy4Lih4Liq4Li54LiH4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4Liq4Liz4Lir4Lij4Lix4Lia4Lih4Li44Lih4Lih4Lit4LiHIFJpY2h0ZXh0IOC4quC4s+C4q+C4o+C4seC4muC4reC4h+C4hOC5jOC4m+C4o+C4sOC4geC4reC4muC4guC4reC4hyBTdXJ2ZXlab29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC4reC4peC4seC4oeC4meC5jOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C5g+C4meC4oOC4suC4nuC4o+C4p+C4oeC4guC4reC4h+C5geC4muC4muC4quC4reC4muC4luC4suC4oeC4leC4seC4p+C5gOC4peC4t+C4reC4geC4meC4teC5ieC4iOC4sOC5hOC4oeC5iOC4oeC4teC4nOC4peC4leC5iOC4reC4leC4s+C5geC4q+C4meC5iOC4h+C4guC4reC4h+C4hOC4reC4peC4seC4oeC4meC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAn4LmA4Lib4Li04LiU4Lir4Lij4Li34Lit4Lib4Li04LiU4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4Liq4LiB4Lij4Li14LiZIOC4l+C4teC5iOC5geC4quC4lOC4h+C4guC5ieC4reC4oeC4ueC4peC4geC4suC4o+C5guC4q+C4p+C4leC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4quC4suC4mOC4suC4o+C4k+C4sOC5gOC4nuC4t+C5iOC4reC4iOC4sOC5geC4quC4lOC4h+C4nOC4peC4guC4reC4h+C5geC4muC4muC4quC4reC4muC4luC4suC4oSDguYDguKHguLfguYjguK3guKXguLnguIHguITguYnguLLguJ7guKLguLLguKLguLLguKHguJfguLXguYjguIjguLDguJXguK3guJrguYHguJrguJrguKrguK3guJrguJbguLLguKHguITguKPguLHguYnguIfguJfguLXguYjguKrguK3guIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICfguYDguJvguLTguJTguKvguKPguLfguK3guJvguLTguJTguIHguLLguKPguJXguKPguKfguIjguKrguK3guJrguYDguIfguLfguYjguK3guJnguYTguILguIHguLLguKPguKrguYjguIfguKrguLPguKvguKPguLHguJrguIHguLLguKPguJrguKPguLTguIHguLLguKMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICfguYDguJvguLTguJTguKvguKPguLfguK3guJvguLTguJTguIHguLLguKPguJXguKPguKfguIjguKrguK3guJrguYDguIfguLfguYjguK3guJnguYTguILguIHguLLguKPguKrguYjguIfguKrguLPguKvguKPguLHguJrguJvguKPguLDguYDguKDguJfguILguK3guIfguJXguLHguYvguKcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liy4Lij4Lil4LiH4LiX4Liw4LmA4Lia4Li14Lii4LiZ4LmC4Lih4LiU4Li54LilIEZyb250ZW5kIOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5gOC4nuC4tOC5iOC4oeC5geC4muC4muC4quC4reC4muC4luC4suC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liy4Lij4Lil4LiH4LiX4Liw4LmA4Lia4Li14Lii4LiZ4LmC4Lih4LiU4Li54LilIEZyb250ZW5kIOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5geC4geC5ieC5hOC4guC5geC4muC4muC4quC4reC4muC4luC4suC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4suC4o+C4peC4h+C4l+C4sOC5gOC4muC4teC4ouC4meC5guC4oeC4lOC4ueC4pSBGcm9udGVuZCDguKrguLPguKvguKPguLHguJrguKrguJbguLTguJXguLTguILguK3guIfguYHguJrguJrguKrguK3guJrguJbguLLguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4suC4o+C4peC4h+C4l+C4sOC5gOC4muC4teC4ouC4meC5guC4oeC4lOC4ueC4pSBGcm9udGVuZCDguKrguLPguKvguKPguLHguJrguIHguLLguKPguIvguLnguKHguYHguJrguJrguKrguK3guJrguJbguLLguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ+C4geC4suC4o+C4peC4h+C4l+C4sOC5gOC4muC4teC4ouC4meC5guC4oeC4lOC4ueC4pSBGcm9udGVuZCDguKrguLPguKvguKPguLHguJrguK3guK3guJrguYDguIjguIHguITguYzguYHguJrguJrguKrguK3guJrguJbguLLguKHguJfguLHguYjguKfguYTguJvguYPguJnguJ7guLfguYnguJnguJfguLXguYjguKrguLPguKPguKfguIjguKrguLLguJjguLLguKPguJPguLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ+C4luC5ieC4suC4q+C4suC4gSByZWdleCDguJXguKPguIfguIHguLHguJkg4LiI4Liw4LmE4Lih4LmI4Lih4Li14LiB4Liy4Lij4Liq4LmI4LiH4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LmD4Lir4LmJ4Lil4Li54LiB4LiE4LmJ4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC5gOC4nuC4iCAo4LiL4Li24LmI4LiH4LiI4Liw4LmB4Liq4LiU4LiH4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihKSDguILguK3guIfguKDguLLguJ7guKPguKfguKHguYHguJrguJrguKrguK3guJrguJbguLLguKHguILguJnguLLguJTguYDguKXguYfguIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICfguYHguJrguJrguKrguK3guJrguJbguLLguKHguKrguLLguJjguLLguKPguJPguLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5gOC4nuC4t+C5iOC4reC5geC4geC5ieC5hOC4guC5geC4muC4muC4quC4reC4muC4luC4suC4oeC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5gOC4nuC4t+C5iOC4reC5geC4geC5ieC5hOC4guC4hOC4s+C4luC4suC4oeC5g+C4meC5geC4muC4muC4quC4reC4muC4luC4suC4oeC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmA4Lie4Li34LmI4Lit4Lii4LmJ4Lit4LiZ4LiB4Lil4Lix4Lia4LmD4LiZ4LiB4Liy4Lij4LiL4Li54Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmA4Lie4Li34LmI4Lit4LiL4Li54LiS4LmE4Lib4LiX4Li14LmI4Lij4Liy4Lii4Lil4Liw4LmA4Lit4Li14Lii4LiU4Liq4LiW4Li04LiV4Li04LiC4Lit4LiH4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICfguYDguJnguLfguYnguK3guKvguLLguKrguJbguLTguJXguLQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAn4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LmA4Lie4Li04LmI4Lih4LmC4Lih4LiU4Li54LilJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICfguYHguJrguJrguKrguK3guJrguJbguLLguKHguYHguIHguYnguYTguILguYLguKHguJTguLnguKUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICfguIHguLLguKPguIjguLPguIHguLHguJTguKDguLLguJ7guKPguKfguKHguILguK3guIfguYHguJrguJrguKrguK3guJrguJbguLLguKEgIuC4guC4meC4suC4lOC5gOC4peC5h+C4gSInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICfguIHguLLguKPguKrguLPguKPguKfguIjguKrguJbguLTguJXguLTguYLguKHguJTguLnguKUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ+C5guC4oeC4lOC4ueC4peC4i+C4ueC4oeC5geC4muC4muC4quC4reC4muC4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ+C4iOC4sOC5hOC4oeC5iOC4oeC4teC4geC4suC4o+C4quC5iOC4h+C5geC4muC4muC4quC4reC4muC4luC4suC4oeC4l+C4teC5iOC4reC4teC5gOC4oeC4peC4l+C4teC5iOC4luC4ueC4geC4geC4s+C4q+C4meC4lOC4hOC5iOC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAn4LiV4Lix4Lin4Lia4LmI4LiH4LiK4Li14LmJ4Liq4Liz4Lir4Lij4Lix4Lia4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihLCDguJXguLHguKfguK3guKLguYjguLLguIfguYDguIrguYjguJkg4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihIyDguYHguJrguJrguKrguK3guJrguJbguLLguKHguILguK3guIfguInguLHguJkjLiDguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJnguITguLfguK3guYHguJrguJrguKrguK3guJrguJbguLLguKEjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ+C5guC4oeC4lOC4ueC4peC4leC4seC5i+C4p+C4geC4tOC4iOC4geC4o+C4o+C4oeC4l+C4teC5iOC4iOC4sOC4quC5iOC4h+C4reC4teC5gOC4oeC4peC5geC4muC4muC4quC4reC4muC4luC4suC4oeC4guC4reC4h+C4geC4suC4o+C4o+C5ieC4reC4h+C4guC4reC4reC4seC4leC5guC4meC4oeC4seC4leC4tOC5g+C4q+C5ieC4peC4ueC4geC4hOC5ieC4suC5g+C4meC4geC4o+C4k+C4teC4l+C4teC5iOC4leC4seC5i+C4p+C4luC4ueC4geC4m+C4tOC4lCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICfguIHguLLguKPguIHguKPguLDguJXguLjguYnguJnguIHguLLguKPguKrguYjguIfguIHguLLguKPguKPguYnguK3guIfguILguK3guYHguJrguJrguKrguK3guJrguJfguLXguYjguKXguYjguLLguIrguYnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnVrX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ9Ch0YLQstC+0YDQuNGC0Lgg0L3QvtCy0LUg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAn0J/RgNC10LTRgdGC0LDQstC70LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ9Cf0YDQtdC00YHRgtCw0LLQu9C10L3QvdGPINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAn0KLRltC70L4g0ZbQvdGE0L7RgNC80YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ9Ci0LjQv9C4INC30LDRj9Cy0L7Quic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ9CS0L3Rg9GC0YDRltGI0L3RltC5INC+0L/QuNGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICfQo9C80L7QstC4INC60LvRltGU0L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAn0JHRg9C00Ywg0LvQsNGB0LrQsCDQstC40LHQtdGA0ZbRgtGMINC60L7RgNC10LrRgtC90L4g0LrQu9GW0ZTQvdGC0LAg0YnQvtCxINC00L7QtNCw0YLQuCDRg9C80L7QstGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAn0J/Rg9Cx0LvRltGH0L3QuNC5INC60LvRjtGHINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAn0J/RgNC40LrQu9Cw0LQg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICfQoNC10LTQsNCz0YPQstCw0YLQuCDQt9Cw0LPQsNC70YzQvdGDINGW0L3RhNC+0YDQvNCw0YbRltGOJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAn0KDQtdC00LDQs9GD0LLQsNGC0Lgg0LfQsNC/0LjRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJ9CS0Lgg0YLRg9GCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICfQl9Cw0L/QuNGC0LDQvdC90Y8g0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAn0JTQvtC00LDRgtC4INC30LDQv9C40YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ9Ci0LjQvyDQt9Cw0L/QuNGC0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAn0J3QtdC+0LHRhdGW0LTQvdCwINCy0ZbQtNC/0L7QstGW0LTRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ9Cd0LXQvNCw0ZQg0LfQsdC10YDQtdC20LXQvdC40YUg0LfQsNC/0LjRgtCw0L3RjCDQtNC70Y8g0YbRjNC+0LPQviDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ9CX0LDQv9C40YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICfQndC10L7QsdGF0ZbQtNC90LAg0LLRltC00L/QvtCy0ZbQtNGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICfQodC70ZbQtCDQt9Cw0LrRgNC40YLQuCDRhtC1INCy0ZbQutC90L4g0L/RltGB0LvRjyDQt9Cw0LLQtdGA0YjQtdC90L3RjyDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9zZSB0aGlzIHdpbmRvdyd9ID0gJ9CX0LDQutGA0LjRgtC4INGG0LUg0LLRltC60L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9uJ30gPSAn0KDQtdC00LDQs9GD0LLQsNGC0Lgg0LfQsNC/0LjRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAn0L/QvtCy0LXRgNC90YPRgtC40YHRjCDQtNC+INC30LDQv9C40YLQsNC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAn0JfQsNC/0LjRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAn0JzQvtC20LvQuNCy0ZYg0LLRltC00L/QvtCy0ZbQtNGWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICfQlNC+0LTQsNGC0Lgg0LLRltC00L/QvtCy0ZbQtNGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAn0J3QtdC80LDRlCDQt9Cx0LXRgNC10LbQtdC90LjRhSDQstGW0LTQv9C+0LLRltC00LXQuSDQtNC+INGG0YzQvtCz0L4g0LfQsNC/0LjRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICfQptC1INC30LDQv9C40YLQsNC90L3RjyDQvdC1INC80ZbRgdGC0LjRgtGMINCy0LDRgNGW0LDQvdGC0ZbQsiDQstGW0LTQv9C+0LLRltC00ZYsINCx0YPQtNC1INC/0L7QutCw0LfQsNC90LUg0YLQtdC60YHRgtC+0LLQtSDQv9C+0LvQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ9Cg0LXQtNCw0LPRg9Cy0LDRgtC4INCy0ZbQtNC/0L7QstGW0LTRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICfQv9C+0LLQtdGA0L3Rg9GC0LjRgdGMINC00L4g0YDQtdC00LDQs9GD0LLQsNC90L3RjyDQt9Cw0L/QuNGC0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ9CS0ZbQtNC/0L7QstGW0LTRjCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICfQntC/0YbRltGPINC/0LXRgNC10LPQu9GP0LTRgyDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICfQn9C+0YjRg9C6INC/0L4g0LDRgtGA0LjQsdGD0YLQsNGFICjRgNGW0LfQvdGWKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICfQp9Cw0YEg0YHRgtCy0L7RgNC10L3QvdGPINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAn0JHQtdC3INC+0LHQvNC10LbQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAn0KLRltC70YzQutC4INC+0L/QuNGC0YPQstCw0L3QvdGPINGB0YLQstC+0YDQtdC90ZYg0LzRltC2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvRjNC90LAg0LrRltC70YzQutGW0YHRgtGMINC+0L/QuNGC0YPQstCw0L3RjCDQvdCwINGB0YLQvtGA0ZbQvdC60YMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ9CS0ZbQtNC/0YDQsNCy0L3QuNC6INGW0L3RhNC+0YDQvNGD0LLQsNC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICfQotC10LzQsCDRltC90YTQvtGA0LzRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ9CX0LzRltC90LXQvdC40LknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAn0J7Qs9C70Y/QtCDRgdGC0LDRgtC40YHRgtC40LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ9Ci0LDQsdC70LjRhtGPINC30LDQv9C40YLRltCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICfQktC40LHRgNCw0YLQuCDQstGB0ZYg0LfQsNC/0LjRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ9Cn0LDRgSDQvdCw0LTRgdC40LvQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICfQp9Cw0YEg0LPQvtC70L7RgdGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAn0JLQuNCx0LXRgNGW0YLRjCDRhtC10Lkg0LfQsNC/0LjRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ9Cf0LXRgNC10LPQu9GP0L3Rg9GC0Lgg0LTQtdGC0LDQu9GWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJ9CS0LjQtNCw0LvQuNGC0Lgg0YHRgtCw0YLQuNGB0YLQuNC60YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ9CU0LXRgtCw0LvRliDRgdGC0LDRgtC40YHRgtC40LrQuCDQvtC/0LjRgtGD0LLQsNC90L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICfQv9C+0LLQtdGA0L3Rg9GC0LjRgdGMINC00L4g0L/QtdGA0LXQs9C70Y/QtNGDINGB0YLQsNGC0LjRgdGC0LjQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICfQn9C+0L/QtdGA0LXQtNC90Y8g0L7RhtGW0L3QutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJ9Cd0LDRgdGC0YPQv9C90LAg0L7RhtGW0L3QutCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ9CG0L3RhNC+0YDQvNCw0YbRltGPINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICfQndCw0LTRltGB0LvQsNC90ZYg0LfQsNC/0LjRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICfQntGC0YDQuNC80LDQvdGWINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAn0JTQtdGC0LDQu9GWINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ9Ch0LXRgNCy0ZbRgdC4INC30LDRj9Cy0L7Quic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ9CT0YDQsNGE0ZbQuiDRgNC10LfRg9C70YzRgtCw0YLRltCyINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICfQndC10LzQsNGUINGB0YLQsNGC0LjRgdGC0LjQutC4JzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ9Ce0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAn0JHRg9C00Ywg0LvQsNGB0LrQsCwg0LTQsNC50YLQtSDQstGW0LTQv9C+0LLRltC00Ywg0L3QsCDQvdCw0YHRgtGD0L/QvdGWINC30LDQv9C40YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICfQn9C+0LrQsNC30LDRgtC4INC80L7RlyDQstGW0LTQv9C+0LLRltC00ZYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ9CS0LDRiNGWINCy0ZbQtNC/0L7QstGW0LvRlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICfQl9Cw0LPQvtC70L7QstC+0Log0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ9CU0L7QtNCw0YLQuCDQvdC+0LLQtSDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICfQktC4INC90LUg0LzQsNGU0YLQtSDQv9C+0LLQvdC+0LLQsNC20LXQvdGMINC90LAg0YbQtSDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICfQndC1INC90LDQtNCw0L3QviBTdXJ2ZXlJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICfQoNC10LTQsNCz0YPQstCw0YLQuCDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICfQktC4INC90LUg0LzQsNGU0YLQtSDQv9C+0LLQvdC+0LLQsNC20LXQvdGMINC90LAg0YbQtSDQvtC/0LjRgtGD0LLQsNC90L3RjyDRh9C4INC30LDQv9C40YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJ9CS0Lgg0L3QtSDQvNCw0ZTRgtC1INC/0L7QstC90L7QstCw0LbQtdC90Ywg0L3QsCDRhtC1INC+0L/QuNGC0YPQstCw0L3QvdGPLCDQt9Cw0L/QuNGC0LDQvdC90Y8g0YfQuCDQstGW0LTQv9C+0LLRltC00YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAn0KDQtdC00LDQs9GD0LLQsNGC0Lgg0LfQsNC/0LjRgtCw0L3QvdGPINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ9Ci0LDQui/QndGWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ9Cg0LDQtNGW0L4gKNGB0L/QuNGB0L7QuiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAn0J/RgNCw0L/QvtGA0YbRliAo0YHQv9C40YHQvtC6KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICfQn9C+0LrQsNC30L3QuNC6INC+0YbRltC90LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAn0KLQuNC/INC30LDQv9C40YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ9CX0LDQstC10YDRiNC10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAn0J3QtSDQt9Cw0LLQtdGA0YjQtdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ9Cg0LXQtNCw0LPRg9Cy0LDRgtC4INC30LDQv9C40YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ9Cg0LXQtNCw0LPRg9Cy0LDRgtC4INCy0ZbQtNC/0L7QstGW0LTRjCAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5U3RhdHMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAn0J/QtdGA0LXQs9C70Y/QtCDRgdGC0LDRgtC40YHRgtC40LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJ30gPSAn0JLQuCDQvdC1INC80LDRlNGC0LUg0L/QvtCy0L3QvtCy0LDQttC10L3RjCDQvdCwINGG0LUg0L7Qv9C40YLRg9Cy0LDQvdC90Y8g0YfQuCDRgdGC0LDRgtC40YHRgtC40LrRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICfQlNC10YLQsNC70ZYg0YHRgtCw0YLQuNGB0YLQuNC60LgnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICfQndC1INC80L7QttC70LjQstC+INCy0YHRgtCw0L3QvtCy0LjRgtC4INC90L7QstC40Lkg0YHRgtCw0YLRg9GBLiDQndC1INCy0LjQt9C90LDRh9C10L3RliDQt9Cw0L/QuNGC0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICfQndC1INC80L7QttC70LjQstC+INC+0L3QvtCy0LjRgtC4INGB0YLQsNGC0YPRgSEg0JfQsNC/0LjRgtCw0L3QvdGPINC90LUg0LfQsNCy0LXRgNGI0LXQvdGWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ9Ch0YLQsNGC0YPRgSDQt9C80ZbQvdC40LLRgdGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctINCd0LUg0LLQuNCx0YDQsNC90L4g0YfQtdGA0LPRgyAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJ9Cd0LUg0LLQuNCx0YDQsNC90L4g0YLQuNC/INC30LDRj9Cy0LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nfSA9ICfQndC1INCy0LjQsdGA0LDQvdC+INGB0LXRgNCy0ZbRgSDQt9Cw0Y/QstC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctINCX0LzRltC90LjRgtC4INGB0YLQsNGC0YPRgSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ9CT0L7Qu9C+0LLQvdC40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCd9ID0gJ9Cd0LXQtNGW0LnRgdC90LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAn0J3QvtCy0LjQuSDRgdGC0LDRgtGD0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAn0J7Qv9C40YEg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICfQstGW0LTQv9C+0LLRltC70LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAn0L3QtSDQstGW0LTQv9C+0LLRltC70LgnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ9CU0Y/QutGD0ZTQvNC+INC30LAg0JLQsNGIINCy0ZbQtNCz0YPQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ9Ce0L/QuNGC0YPQstCw0L3QvdGPINC30LDQstC10YDRiNC10L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICfQn9C+0LLRltC00L7QvNC70LXQvdC90Y8g0L7Qv9C40YLRg9Cy0LDQvdC90Y8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICfQnNC+0LTRg9C70Ywg0L3QtSDQtNC+0LfQstC+0LvQtdC90LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJ9Cm0LXQuSDRhNGD0L3QutGG0ZbQvtC90LDQuyDQvdC1INC00L7Qt9Cy0L7Qu9C10L3QuNC5LCDQsdGD0LTRjCDQu9Cw0YHQutCwINC30LLRj9C20ZbRgtGM0YHRjyDQtyDQsNC00LzRltC90ZbRgdGC0YDQsNGC0L7RgNC+0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJ9Cf0L7QvNC40LvQutCwINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICfQndC1INCy0ZbRgNC90LjQuSDQutC70Y7RhyDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAn0JLQutC70LDQtNC10L3QuNC5INC60LvRjtGHINC+0L/QuNGC0YPQstCw0L3QvdGPINC90LUg0LLRltGA0L3QuNC5LCDQsNCx0L4g0JLQuCDQv9C10YDQtdC50YjQu9C4INC30LAg0YXQuNCx0L3QuNC8INGH0Lgg0L/QvtGI0LrQvtC00LbQtdC90LjQvCDQv9C+0YHQuNC70LDQvdC90Y/QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJ9CT0L7Qu9C+0YHRg9Cy0LDQvdC90Y8g0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJ9CU0LDQvdGWINCz0L7Qu9C+0YHRg9Cy0LDQvdC90Y8g0L/QviDQvtC/0LjRgtGD0LLQsNC90L3Rjic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAn0JLQuCDQstC20LUg0LLRltC00L/QvtCy0ZbQu9C4INC90LAg0LLRgdGWINC30LDQv9C40YLQsNC90L3RjyDQsiDQvtC/0LjRgtGD0LLQsNC90L3Rlic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAn0J/QtdGA0LXQu9GW0Log0L7Qv9C40YLRg9Cy0LDQvdGMJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAn0JLQuCDQtNGW0LnRgdC90L4g0YXQvtGH0LXRgtC1INCy0LjQtNCw0LvQuNGC0Lgg0YbQtSDQt9Cw0L/QuNGC0LDQvdC90Y8/INCS0YHRliDQv9C+0LLRj9C30LDQvdGWINC00LDQvdGWINCx0YPQtNGD0YLRjCDQktCi0KDQkNCn0JXQndCGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAn0JLQuCDQtNGW0LnRgdC90L4g0YXQvtGH0LXRgtC1INCy0LjQtNCw0LvQuNGC0Lgg0YbQtSDQt9Cw0L/QuNGC0LDQvdC90Y8/JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ9Cc0L7QtNGD0LvRjCDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAn0JzQvtC00YPQu9GMINC00LvRjyDRgNC10LTQsNCz0YPQstCw0L3QvdGPINC30LDQv9C40YLQsNC90Ywg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQktGB0ZYg0L/QsNGA0LDQvNC10YLRgNC4INC/0L4g0L7Qv9C40YLRg9Cy0LDQvdC90Y4g0ZQg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ9Ca0ZbQu9GM0LrRltGB0YLRjCDQtNC90ZbQsiDQv9GW0YHQu9GPINC90LDQtNGB0LjQu9Cw0L3QvdGPINC+0L/QuNGC0YPQstCw0L3QvdGPINC/0L4g0Y/QutC40YUg0L3QtdC80LDRlCDQstGW0LTQs9GD0LrRgyDRgtC+0LzRgyDRgdCw0LzQvtC80YMg0LrQu9GW0ZTQvdGC0YMgKDAt0LfQsNCy0LbQtNC4INC90LDQtNGB0LjQu9Cw0YLQuCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn0KLRltC70L4g0LvQuNGB0YLQsCDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INC00LvRjyDRltC90YTQvtGA0LzRg9Cy0LDQvdC90Y8g0L/QviDQtdC70LXQutGC0YDQvtC90L3RltC5INC/0L7RiNGC0ZYg0LrQu9GW0ZTQvdGC0LDQvCDQv9GA0L4g0L3QvtCy0LUg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICfQktGW0LTQv9GA0LDQstC90LjQuiDQv9C+INC30LDQvNC+0LLRh9GD0LLQsNC90L3RjiDQtNC70Y8g0ZbQvdGE0L7RgNC80YPQstCw0L3QvdGPINC/0L4g0LXQu9C10LrRgtGA0L7QvdC90ZbQuSDQv9C+0YjRgtGWINC60LvRltGU0L3RgtCw0Lwg0L/RgNC+INC90L7QstC1INC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ9Ci0LXQvNCwINC/0L4g0LfQsNC80L7QstGH0YPQstCw0L3QvdGOINC00LvRjyDRltC90YTQvtGA0LzRg9Cy0LDQvdC90Y8g0L/QviDQtdC70LXQutGC0YDQvtC90L3RltC5INC/0L7RiNGC0ZYg0LrQu9GW0ZTQvdGC0LDQvCDQv9GA0L4g0L3QvtCy0LUg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvNC+0LTRg9C70Ywg0L/QtdGA0LXQs9C70Y/QtNGDLCDRidC+0LEg0L/QvtC60LDQt9Cw0YLQuCDQutC+0YDQvtGC0LrQuNC5INC+0LPQu9GP0LQg0YHQv9C40YHQutGDINC3INC+0L/QuNGC0YPQstCw0L3QvdGP0LzQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINCz0YDRg9C/0Lgg0Y/QutGWINC80LDRjtGC0Ywg0L/QvtCy0L3QvtCy0LDQttC10L3QvdGPINC30LzRltC90LjRgtC4INGB0YLQsNC9INC+0L/QuNGC0YPQstCw0L3QvdGPLiDQnNCw0YHQuNCyINC/0L4g0LfQsNC80L7QstGH0YPQstCw0L3QvdGOINGUINC/0YPRgdGC0LjQuSDRliDQsNCz0LXQvdGC0Lgg0Lcg0YPRgdGW0YUg0LPRgNGD0L8g0LzQvtC20YPRgtGMINC30LzRltC90LjRgtC4INGB0YLQsNGC0YPRgSDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0YfQuCDQt9Cw0L/QuNGC0LDQvdC90Y8g0L7Qv9C40YLRg9Cy0LDQvdC90Y8g0L/QvtCy0LjQvdC90ZYg0LHRg9GC0Lgg0L3QsNC00ZbRgdC70LDQvdGWINC60LvRltGU0L3RgtCw0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0YLQsNC60YHQuNC80LDQu9GM0L3QtSDQt9C90LDRh9C10L3QvdGPINC60ZbQu9GM0LrQvtGB0YLRliDQvtC/0LjRgtGD0LLQsNC90YwsINGJ0L4g0LzQvtC20YPRgtGMINCx0YPRgtC4INC90LDRltGB0LvQsNC90ZYg0LrQvtGA0LjRgdGC0YPQstCw0YfRgyDQv9GA0L7RgtGP0LPQvtC8IDMwINC00L3RltCyICgwLdCy0YHRliknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LfQvdCw0YfQtdC90L3RjyDQt9Cw0YLRgNC40LzQutC4INC90LDQtNGB0LjQu9Cw0L3QvdGPINC+0L/QuNGC0YPQstCw0L3QvdGPINC/0ZbRgdC70Y8g0LfQsNC60YDQuNGC0YLRjyDQt9Cw0Y/QstC60Lgg0LIg0LPQvtC00LjQvdCw0YUgKDAt0L7QtNGA0LDQt9GDKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC60L7Qu9C+0L3QutC4INC00LvRjyDQstC40L/QsNC00LDRjtGH0L7Qs9C+INGB0L/QuNGB0LrRgyDQtNC70Y8g0L/QvtCx0YPQtNC+0LLQuCDRg9C80L7QsiAoMC8xIC0g0L3QtdCw0LrRgtC40LLQvdC40Lkv0LDQutGC0LjQstC90LjQuSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQstC40YHQvtGC0YMgUmljaHRleHQgdmlld3Mg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDQtNC70Y8g0LfQsdGW0LvRjNGI0LXQvdC40YUg0LXQu9C10LzQtdC90YLRltCyINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJ9CX0LDQtNCw0ZQg0LPRgNGD0L/QuCAo0YfQuNGC0LDQvdC90Y8v0LfQsNC/0LjRgdGDKSDRj9C60ZYg0LzQvtC20YPRgtGMINCy0LjQtNCw0LvQuNGC0Lgg0YHRgtCw0YLQuNGB0YLQuNC60YMg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvNCw0LrRgS4g0LLQuNGB0L7RgtGDIFJpY2h0ZXh0IHZpZXdzINC00LvRjyDQt9Cx0ZbQu9GM0YjQtdC90LjRhSDQtdC70LXQvNC10L3RgtGW0LIg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0Y/QutGWINC60L7Qu9C+0L3QutC4INC/0L7QutCw0LfRg9Cy0LDRgtC4INCyINC/0LXRgNC10LPQu9GP0LTRliDQvtC/0LjRgtGD0LLQsNC90L3Rjy4g0J3QtSDQstC/0LvQuNCy0LDRlCDQvdCwINGX0YUg0YDQvtC30YLQsNGI0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINGH0Lgg0LzQvtC00YPQu9GMINGB0YLQsNGC0LjRgdGC0LjQutC4INC80L7QttC1INCz0LXQvdC10YDRg9Cy0LDRgtC4INC70LjRgdGC0Lgg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICfQoNC10LTQsNCz0YPQstCw0YLQuCDQt9Cw0LPQsNC70YzQvdGDINGW0L3RhNC+0YDQvNCw0YbRltGOINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICfQoNC10LTQsNCz0YPQstCw0YLQuCDQt9Cw0L/QuNGC0LDQvdC90Y8g0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAn0JLQstGW0LzQutC90YPRgtC4L9Cy0LjQvNC60L3Rg9GC0Lgg0LLRltC00L7QsdGA0LDQttC10L3QvdGPINC00LDRgtC4INCz0L7Qu9C+0YHRg9Cy0LDQvdC90Y8g0LIg0L/Rg9Cx0LvRltGH0L3QvtC80YMg0ZbQvdGC0LXRgNGE0LXQudGB0ZYo0L/QvtC60LDQt9GD0ZTRgtGM0YHRjyDQutC70ZbRlNC90YLRgyDQv9GA0Lgg0L/QvtCy0YLQvtGA0L3RltC5INGB0L/RgNC+0LHRliDQv9GA0L7QudGC0Lgg0L7Qv9C40YLRg9Cy0LDQvdC90Y8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAn0JLQstGW0LzQutC90YPRgtC4L9Cy0LjQvNC60L3Rg9GC0Lgg0L/QtdGA0LXQstGW0YDQutGDINGD0LzQvtCy0Lgg0LLRltC00L/RgNCw0LLQutC4INC00LvRjyDRgdC10YDQstGW0YHRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ9CS0LLRltC80LrQvdGD0YLQuC/QstC40LzQutC90YPRgtC4INC/0LXRgNC10LLRltGA0LrRgyDRg9C80L7QstC4INCy0ZbQtNC/0YDQsNCy0LrQuCDQtNC70Y8g0YLQuNC/0YMg0LfQsNGP0LLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Zyb250ZW5kINC80L7QtNGD0LvRjCDRgNC10ZTRgdGC0YDQsNGG0ZbRlywg0YnQviDQtNC+0LTQsNGUINC+0L/QuNGC0YPQstCw0L3QvdGPINCyINGW0L3RgtC10YDRhNC10LnRgSDQsNCz0LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGVkaXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Zyb250ZW5kINC80L7QtNGD0LvRjCDRgNC10ZTRgdGC0YDQsNGG0ZbRlywg0YnQviDRgNC10LTQsNCz0YPRlCDQvtC/0LjRgtGD0LLQsNC90L3RjyDQsiDRltC90YLQtdGA0YTQtdC50YEg0LDQs9C10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRnJvbnRlbmQg0LzQvtC00YPQu9GMINGA0LXRlNGB0YLRgNCw0YbRltGXLCDRidC+INC00L7QtNCw0ZQg0YHRgtCw0YLQuNGB0YLQuNC60YMg0L7Qv9C40YLRg9Cy0LDQvdC90Y8g0LIg0ZbQvdGC0LXRgNGE0LXQudGBINCw0LPQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRnJvbnRlbmQg0LzQvtC00YPQu9GMINGA0LXRlNGB0YLRgNCw0YbRltGXLCDRidC+INCy0ZbQtNC60YDQuNCy0LDRlCDQvtC/0LjRgtGD0LLQsNC90L3RjyDQsiDRltC90YLQtdGA0YTQtdC50YEg0LDQs9C10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICdGcm9udGVuZCDQvNC+0LTRg9C70Ywg0YDQtdGU0YHRgtGA0LDRhtGW0ZcsINGJ0L4g0LTQvtC00LDRlCDQn9GD0LHQu9GW0YfQvdC1INC+0L/QuNGC0YPQstCw0L3QvdGPINCyINC/0YPQsdC70ZbRh9C90LjQuSDRltC90YLQtdGA0YTQtdC50YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ9Cv0LrRidC+INGA0LXQs9GD0LvRj9GA0L3QuNC5INCy0LjRgNCw0Lcg0LLQuNC30L3QsNGH0LDRlCwg0LbQvtC00L3QtSDQvtC/0LjRgtGD0LLQsNC90L3RjyDQutC70ZbRlNC90YLRgyDQvdC1INCx0YPQtNC1INCy0ZbQtNC/0YDQsNCy0LvQtdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INGB0YLQvtGA0ZbQvdC60LggKNCyINGP0LrQuNGFINC/0L7QutCw0LfRg9GO0YLRjNGB0Y8g0L7Qv9C40YLRg9Cy0LDQvdC90Y8pINCyINC60L7RgNC+0YLQutC+0LzRgyDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90L3Rlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ9Cf0YPQsdC70ZbRh9C90LUg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAn0KDQtdC30YPQu9GM0YLQsNGC0LgsINGB0YLQsNGA0YjRliDQvdGW0LYg0LLQuNC30L3QsNGH0LXQvdCwINC60ZbQu9GM0LrRltGB0YLRjCDQtNC90ZbQsiDQsdGD0LTRg9GC0Ywg0LLQuNC00LDQu9C10L3Rli4g0JfQsNC80ZbRgtC60LA6INC90LDQu9Cw0YjRgtC+0LLRg9GU0YLRjNGB0Y8gT1RSUyBEYWVtb24gVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINC70ZbQvdC6INCyINC80LXQvdGOINC00LvRjyDRgNC10LTQsNCz0YPQstCw0L3QvdGPINC+0L/QuNGC0YPQstCw0L3QvdGPINCyINGA0L7Qt9GI0LjRgNC10L3QvtC80YMg0L/QtdGA0LXQs9C70Y/QtNGWINCw0LPQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINC70ZbQvdC6INCyINC80LXQvdGOINC00LvRjyDRgNC10LTQsNCz0YPQstCw0L3QvdGPINC30LDQv9C40YLQsNC90Ywg0L7Qv9C40YLRg9Cy0LDQvdC90Y8g0LIg0YDQvtC30YjQuNGA0LXQvdC+0LzRgyDQv9C10YDQtdCz0LvRj9C00ZYg0LDQs9C10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQu9GW0L3QuiDQsiDQvNC10L3RjiDQtNC70Y8g0L/QvtCy0LXRgNC90LXQvdC90Y8g0LIg0L7Qv9C40YLRg9Cy0LDQvdC90Y8g0LIg0YDQvtC30YjQuNGA0LXQvdC+0LzRgyDQv9C10YDQtdCz0LvRj9C00ZYg0LDQs9C10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0LvRltC90Log0LIg0LzQtdC90Y4g0LTQu9GPINGB0YLQsNGC0LjRgdGC0LjQutC4INC+0L/QuNGC0YPQstCw0L3QvdGPINCyINGA0L7Qt9GI0LjRgNC10L3QvtC80YMg0L/QtdGA0LXQs9C70Y/QtNGWINCw0LPQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAn0JTQtdGC0LDQu9GWINGB0YLQsNGC0LjRgdGC0LjQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ9CU0L7QtNCw0YLQuCDQvNC+0LTRg9C70Ywg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ9Cf0L7QtNGD0LvRjCDRgNC10LTQsNCz0YPQstCw0L3QvdGPINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAn0JvRltC80ZbRgiDQv9C10YDQtdCz0LvRj9C00YMg0L7Qv9C40YLRg9Cy0LDQvdGMINCa0L7RgNC+0YLQutC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAn0KHRgtCw0YLQuNGB0YLQuNC60LAg0LzQvtC00YPQu9GOINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICfQl9Cx0ZbQu9GM0YjQuNGC0Lgg0LzQvtC00YPQu9GMINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAn0JvRltC80ZbRgiDQvtC/0LjRgtGD0LLQsNC90Ywg0L3QsCDRgdGC0L7RgNGW0L3QutGDINC00LvRjyDQv9C10YDQtdCz0LvRj9C00YMg0LIg0YDQtdC20LjQvNGWIFNtYWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAn0J7Qv9C40YLRg9Cy0LDQvdC90Y8g0L3QtSDQsdGD0LTRg9GC0Ywg0L3QsNC00YHQuNC70LDRgtC40YHRjCDQvdCwINCy0LrQsNC30LDQvdGWIGVtYWlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICfQhtC00LXRgtC40YTRltC60LDRgtC+0YAg0L7Qv9C40YLRg9Cy0LDQvdC90Y8uINCf0L4g0LfQsNC80L7QstGH0YPQstCw0L3QvdGOINCe0L/QuNGC0YPQstCw0L3QvdGPIyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ9Cf0L7QtNGW0Y8g0LfQsNGP0LLQutC4LCDQtNC70Y8g0LDQstGC0L7QvNCw0YLQuNGH0L3QvtGXINCy0ZbQtNC/0YDQsNCy0LrQuCDQvtC/0LjRgtGD0LLQsNC90L3RjyDQutC70ZbRlNC90YLRgyDRj9C60YnQviDQt9Cw0Y/QstC60LAg0LfQsNC60YDQuNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJ9Ci0YDQuNCz0LXRgNC4INCy0LjQtNCw0LvQtdC90L3RjyDRgNC10LfRg9C70YzRgtCw0YLRltCyICjQstC60LvRjtGH0LDRjtGH0Lgg0L7RhtGW0L3QutC4INGWINC30LDQv9C40YLQuCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ9Ci0YDQuNCz0LXRgCDQstGW0LTQv9GA0LDQstC60Lgg0LLRltC00LrQu9Cw0LTQtdC90LjRhSDQt9Cw0L/QuNGC0ZbQsiDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJ9Cf0LXRgNC10LnRgtC4INCyINC00LXRgtCw0LvRliDRgdGC0LDRgtC40YHRgtC40LrQuCc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnZpX1ZOX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ1ThuqFvIGto4bqjbyBzw6F0IG3hu5tpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ0dp4bubaSB0aGnhu4d1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdHaeG7m2kgdGhp4buHdSBraOG6o28gc8OhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ07hu5lpIGR1bmcgdGjDtG5nIGLDoW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnQ8OhYyBsb+G6oWkgdsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnTcO0IHThuqMgbuG7mWkgYuG7mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnU+G7rWEgdGjDtG5nIHRpbiBjaHVuZyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ1Phu61hIGPDonUgaOG7j2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdDw6J1IGjhu49pIGto4bqjbyBzw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ1Row6ptIGPDonUgaOG7j2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICdOaOG6rXAgY8OidSBo4buPaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdZw6p1IGPhuqd1IHBo4bqjaSB0cuG6oyBs4budaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ0tow7RuZyBjw7MgY8OidSBo4buPaSBuw6BvIMSRxrDhu6NjIGzGsHUgY2hvIGto4bqjbyBzw6F0IG7DoHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnQ8OidSBo4buPaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdZw6p1IGPhuqd1IHBo4bqjaSB0cuG6oyBs4budaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnS2hpIGvhur90IHRow7pjIHZp4buHYyBz4butYSBjw6J1IGjhu49pIGto4bqjbyBzw6F0LCBjaOG7iSBj4bqnbiDEkcOzbmcgbcOgbiBow6xuaCBuw6B5IGzhuqFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9zZSB0aGlzIHdpbmRvdyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9uJ30gPSAnU+G7rWEgY8OidSBo4buPaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ3F1YXkgbOG6oWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnQ8OidSBo4buPaTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICfEkMOhcCDDoW4gY8OzIHRo4buDIGNobyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnVGjDqm0gxJHDoXAgw6FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnS2jDtG5nIGPDsyDEkcOhcCDDoW4gbsOgbyDEkcaw4bujYyBsxrB1IGNobyBjw6J1IGjhu49pIG7DoHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdDw6J1IGjhu49pIG7DoHkga2jDtG5nIGPDsyDEkcOhcCDDoW4sIG3hu5l0IGtodW5nIHNv4bqhbiB0aOG6o28gc+G6vSDEkcaw4bujYyBoaeG7g24gdGjhu4suJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnU+G7rWEgxJHDoXAgw6FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ3F1YXkgduG7gSBz4butYSBjw6J1IGjhu49pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICfEkMOhcCDDoW46JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnU+G7kSBiw6BpIGto4bqjbyBzw6F0IHThu5FpIMSRYSB0csOqbiBt4buZdCB0cmFuZyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnTmfGsOG7nWkgZ+G7rWkgdGjDtG5nIGLDoW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICdDaOG7pyDEkeG7gSB0aMO0bmcgYsOhbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAnVGhheSDEkeG7lWkgYuG7n2knOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnVGjhu5FuZyBrw6ogdOG7lW5nIHF1w6F0IGPhu6dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnQuG6o25nIHnDqnUgY+G6p3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICdUaOG7nWkgZ2lhbiBn4butaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdUaOG7nWkgZ2lhbiBiw6xuaCBjaOG7jW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ1hlbSBjaGkgdGnhur90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnQ2hpIHRp4bq/dCB0aOG7kW5nIGvDqiBraOG6o28gc8OhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAncXVheSBs4bqhaSB0aOG7kW5nIGvDqiB04buVbmcgcXXDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnVGjDtG5nIHRpbiBraOG6o28gc8OhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnR+G7rWkgecOqdSBj4bqndSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnTmjhuq1uIGto4bqjbyBzw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnQ2hpIHRp4bq/dCBraOG6o28gc8OhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICdE4buLY2ggduG7pSBwaGnhur91IHnDqnUgY+G6p3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICfEkOG7kyB0aMOsIGvhur90IHF14bqjIGto4bqjbyBzw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdLaMO0bmcgY8OzIGvhur90IHHhu6dhIHRo4buRbmcga8OqLic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdLaOG6o28gc8OhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ1hpbiB2dWkgbMOybmcgdHLhuqMgbOG7nWkgbmjhu69uZyBjw6J1IGjhu49pIG7DoHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnQ2hvIHTDtGkgeGVtIMSRw6FwIMOhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnxJDDonkgbMOgIMSRw6FwIMOhbiBj4bunYSBi4bqhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdUacOqdSDEkeG7gSBraOG6o28gc8OhdCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnVGjDqm0ga2jhuqNvIHPDoXQgbeG7m2knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ1Phu61hIGLhuqNuIGto4bqjbyBzw6F0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICdT4butYSBjw6J1IGjhu49pIGto4bqjbyBzw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ0PDsy9LaMO0bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnSOG7mXAgY2jhu41uIChkYW5oIHPDoWNoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICdI4buZcCBraeG7g20gKGRhbmggc8OhY2gpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnTG/huqFpIGPDonUgaOG7j2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdIb8OgbiB04bqldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnQ2jGsGEgaG/DoG4gdOG6pXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ1Phu61hIGPDonUgaOG7j2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICdT4butYSDEkcOhcCDDoW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5U3RhdHMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAnVGjhu5FuZyBrw6ogdOG7lW5nIHF1w6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAnVGjhu5FuZyBrw6ogY2hpIHRp4bq/dCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ0tow7RuZyB0aOG7gyDEkeG6t3QgdHLhuqFuZyB0aMOhaSBt4bubaSEgS2jDtG5nIGPDsyBjw6J1IGjhu49pIG7DoG8gxJHGsOG7o2MgxJHhu4tuaCBuZ2jEqWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ1Ry4bqhbmcgdGjDoWkgxJHDoyDEkeG7lWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0gQ2jGsGEgY2jhu41uIGjDoG5nIMSR4bujaSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctIMSQ4buVaSB0cuG6oW5nIHRow6FpIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnQ2jDrW5oJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICdLaMO0bmcgaOG7o3AgbOG7hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnVHLhuqFuZyB0aMOhaSBt4bubaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdNw7QgdOG6oyBraOG6o28gc8OhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ8SRw6MgdHLhuqMgbOG7nWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnY2jGsGEgdHLhuqMgbOG7nWknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ0PhuqNtIMahbiBi4bqhbiDEkcOjIHBo4bqjbiBo4buTaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICdLaOG6o28gc8OhdCDEkcOjIGvhur90IHRow7pjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdC4bqhbiDEkcOjIHRoYW0gZ2lhIHRy4bqjIGzhu51pIGto4bqjbyBzw6F0Lic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnQuG6oW4gY8OzIHRo4bqtdCBz4buxIG114buRbiB4b8OhIGPDonUgaOG7j2kgbsOgeT8gVOG6pFQgQ+G6oiBjw6FjIGThu68gbGnhu4d1IGxpw6puIHF1YW4gc+G6vSBi4buLIE3huqRUISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ0LhuqFuIGPDsyB0aOG6rXQgc+G7sSBtdeG7kW4geG/DoSDEkcOhcCDDoW4/JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ03hu5l0IG3DtC3EkXVuIGto4bqjbyBzw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdN4buZdCBtw7QtxJF1biDEkeG7gyBz4butYSBjw6J1IGjhu49pIGto4bqjbyBzw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVOG6pXQgY+G6oyBjw6FjIHRoYW0gc+G7kSBjaG8gxJHhu5FpIHTGsOG7o25nIGto4bqjbyBzw6F0IHRyb25nIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ1Phu5EgbmfDoHkgc2F1IGtoaSBn4butaSBlbWFpbCBraOG6o28gc8OhdCBtw6AgdHJvbmcgbMO6YyDEkcOzIHPhur0ga2jDtG5nIGPDsyB5w6p1IGPhuqd1IGto4bqjbyBzw6F0IG7DoG8gxJHGsOG7o2MgZ+G7rWkgxJHhur9uIGPDuW5nIGtow6FjaCBow6BuZyDEkcOzLiBOaOG6rXAgMCBz4bq9IGx1w7RuIGfhu61pIGVtYWlsIGto4bqjbyBzw6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdO4buZaSBkdW5nIG5n4bqnbSDEkeG7i25oIGNobyBlbWFpbCB0aMO0bmcgYsOhbyB04bubaSBraMOhY2ggaMOgbmcgduG7gSBraOG6o28gc8OhdCBt4bubaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdOZ8aw4budaSBn4butaSBuZ+G6p20gxJHhu4tuaCBjaG8gZW1haWwgdGjDtG5nIGLDoW8gdOG7m2kga2jDoWNoIGjDoG5nIHbhu4Ega2jhuqNvIHPDoXQgbeG7m2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0No4bunIMSR4buBIG5n4bqnbSDEkeG7i25oIGNobyBlbWFpbCB0aMO0bmcgYsOhbyB04bubaSBraMOhY2ggaMOgbmcgduG7gSBraOG6o28gc8OhdCBt4bubaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnxJDhu4tuaCBuZ2jEqWEgbeG7mXQgbcO0LcSRdW4gdOG7lW5nIHF1w6F0IMSR4buDIGhp4buDbiB0aOG7iyBt4buZdCBkYW5oIHPDoWNoIGto4bqjbyBzw6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ8SQ4buLbmggbmdoxKlhIHPhu5Ega2jhuqNvIHPDoXQgdOG7kWkgxJFhIG3DoCDEkcaw4bujYyBn4butaSDEkeG6v24ga2jDoWNoIGjDoG5nIG3hu5dpIHRow6FuZy4gKDAgbmdoxKlhIGzDoCBraMO0bmcgZ2nhu5tpIGjhuqFuLCB04bqldCBj4bqjIHnDqnUgY+G6p3Uga2jhuqNvIHPDoXQgc+G6vSDEkcaw4bujYyBn4butaSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ8SQ4buLbmggbmdoxKlhIGNoaeG7gXUgY2FvIG5n4bqnbSDEkeG7i25oIGPhu6dhIGtodW5nIFJpY2h0ZXh0IGNobyDEkeG7kWkgdMaw4bujbmcgeGVtIGto4bqjbyBzw6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICfEkOG7i25oIG5naMSpYSBz4buRIGPhu5l0IGhp4buDbiB0aOG7iyB0cm9uZyBtw6BuIGjDrG5oIHThu5VuZyBxdcOhdC4gVHXhu7MgY2jhu41uIG7DoHkga2jDtG5nIOG6o25oIGjGsOG7n25nIMSR4bq/biB24buLIHRyw60gY+G7p2EgY+G7mXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICdLw61jaCBob+G6oXQgaG/hurdjIGdp4bqjaSBob+G6oXQgbcOgbiBow6xuaCBTaG93Vm90ZURhdGEgdHJvbmcgZ2lhbyBkaeG7h24gY8O0bmcgY+G7mW5nIMSR4buDIGhp4buDbiB0aOG7iyBk4buvIGxp4buHdSBj4bunYSBt4buZdCBr4bq/dCBxdeG6oyBraOG6o28gc8OhdCBraGkga2jDoWNoIGjDoG5nIGPhu5EgdGjhu60gdHLhuqMgbOG7nWkgbeG7mXQgYuG6o24ga2jhuqNvIHPDoXQgaGFpIGzhuqduLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ0vDrWNoIGhv4bqhdCBob+G6t2MgZ2nhuqNpIGhv4bqhdCBn4butaSBraeG7g20gdHJhIMSRaeG7gXUga2nhu4duIGNobyBk4buLY2ggduG7pS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICdLw61jaCBob+G6oXQgaG/hurdjIGdp4bqjaSBob+G6oXQgZ+G7rWkga2nhu4NtIHRyYSDEkWnhu4F1IGtp4buHbiBjaG8gbG/huqFpIHBoaeG6v3UgecOqdSBj4bqndS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnxJDEg25nIGvDvSBtw7QtxJF1biB0aMOqbSBraOG6o28gc8OhdCB0cm9uZyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnxJDEg25nIGvDvSBtw7QtxJF1biBz4butYSBraOG6o28gc8OhdCB0cm9uZyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8SQxINuZyBrw70gbcO0LcSRdW4gdGjhu5FuZyBrw6oga2jhuqNvIHPDoXQgdHJvbmcgZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8SQxINuZyBrw70gbcO0LcSRdW4geGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQgdHJvbmcgZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ8SQxINuZyBrw70gbcO0LcSRdW4gY2hvIMSR4buRaSB0xrDhu6NuZyBraOG6o28gc8OhdCBjw7RuZyBj4buZbmcgdHJvbmcgZ2lhbyBkaeG7h24ga2jhuqNvIHPDoXQgY8O0bmcgY+G7mW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnTuG6v3UgxJFp4buBdSBraeG7h24gdMOsbSBwaMO5IGjhu6NwLCBraMO0bmcgY8OzIGto4bqjbyBzw6F0IGtow6FjaCBow6BuZyBuw6BvIMSRxrDhu6NjIGfhu61pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICdUaGFtIHPhu5EgY2hvIHRyYW5nIChtw6AgaGnhu4NuIHRo4buLIGto4bqjbyBzw6F0KSBj4bunYSBkYW5oIHPDoWNoIGto4bqjbyBzw6F0IHThu5VuZyBxdcOhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICdLaOG6o28gc8OhdCBjw7RuZyBj4buZbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdIaeG7g24gdGjhu4sgbGnDqm4ga+G6v3QgdHJvbmcgdHLDrG5oIMSRxqFuIMSR4buDIHPhu61hIGto4bqjbyBzw6F0IHRyb25nIGtoaSB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCDhu58gZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdIaeG7g24gdGjhu4sgbGnDqm4ga+G6v3QgdHJvbmcgdHLDrG5oIMSRxqFuIMSR4buDIHPhu61hIGPDonUgaOG7j2kga2jhuqNvIHPDoXQgdHJvbmcga2hpIHhlbSBjaGkgdGnhur90IGto4bqjbyBzw6F0IOG7nyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBxdWF5IGzhuqFpIHRyb25nIGtoaSB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCDhu58gZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdIaeG7g24gdGjhu4sgbGnDqm4ga+G6v3QgdHJvbmcgdHLDrG5oIMSRxqFuIMSR4buDIHhlbSB0aOG7kW5nIGvDqiBjaGkgdGnhur90IGPhu6dhIGto4bqjbyBzw6F0IHRyb25nIGtoaSB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCDhu58gZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ1Ro4buRbmcga8OqIGNoaSB0aeG6v3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnTcO0IMSRdW4gdGjDqm0gS2jhuqNvIHPDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICdNw7QtxJF1biBz4butYSBLaOG6o28gc8OhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdHaeG7m2kgaOG6oW4gZGFuaCBzw6FjaCBraOG6o28gc8OhdCB04buVbmcgcXXDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNw7QtxJF1biB0aOG7kW5nIGvDqiBraOG6o28gc8OhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ03DtC3EkXVuIHhlbSBraOG6o28gc8OhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICdLaOG6o28gc8OhdCBz4bq9IGtow7RuZyDEkcaw4bujYyBn4butaSDEkeG6v24gxJHhu4thIGNo4buJIGVtYWlsIMSRw6MgdGhp4bq/dCBs4bqtcC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ8SQ4buLbmggZGFuaCBjaG8ga2jhuqNvIHPDoXQsIHbDrSBk4bulOiBLaOG6o28gc8OhdCMsIEto4bqjbyBzw6F0IGPhu6dhIHTDtGkjLiBOZ+G6p20gxJHhu4tuaCBsw6AgS2jhuqNvIHPDoXQjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ03DtC3EkXVuIGLhuq90IHPhu7Ega2nhu4duIGPhu6dhIHBoaeG6v3UgecOqdSBj4bqndSDEkeG7gyBn4butaSBlbWFpbCB5w6p1IGPhuqd1IHThu7EgxJHhu5luZyDEkeG6v24ga2jDoWNoIGjDoG5nIG7hur91IHBoaeG6v3UgecOqdSBj4bqndSDEkcaw4bujYyDEkcOzbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ0Lhuqt5IGfhu61pIHnDqnUgY+G6p3Uga2jhuqNvIHPDoXQgYuG7iyB0cuG7hS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX1RXX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ+WJteW7uuaWsOeahOiqv+afpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICfku4vntLknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ+iqv+afpeS7i+e0uSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ+mAmuefpeato+aWhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICflt6Xllq7poZ7lnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICflhoXpg6jmj4/ov7AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ+e3qOi8r+S4gOiIrOS/oeaBryc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ+e3qOi8r+WVj+mhjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICfmgqjlnKjmraQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ+iqv+afpeWVj+mhjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICfmt7vliqDllY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICfllY/poYzpoZ7lnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAn6ZyA6KaB5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAn6YCZ5YCL6Kq/5p+l5rKh5pyJ5L+d5a2Y55qE5ZWP6aGM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAn5ZWP6aGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ+W/hemgiOWbnuetlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICfnt6jovK/llY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICfov5Tlm57llY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAn5ZWP6aGM77yaJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAn5Y+v6YG455qE5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICfmt7vliqDlm57nrZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ+e3qOi8r+WbnuetlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICfov5Tlm57liLDnt6jovK/llY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ+etlO+8mic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAn6YCa55+l55m86YCB6ICFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAn6YCa55+l5Li76aGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICfkv67mlLnkuronOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAn57Wx6KiI5qaC5rOBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAn6KuL5rGC6KGoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAn55m86YCB5pmC6ZaTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ+aKleelqOaZgumWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAn5p+l55yL6Kmz5oOFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAn6Kq/5p+l57Wx6KiI6Kmz5oOFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICfov5Tlm57ntbHoqIjmpoLms4EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAn6Kq/5p+l5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICflt7LnmbzpgIHnmoToq4vmsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ+W3suaOpeaUtueahOiqv+afpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ+iqv+afpeips+aDhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICflt6Xllq7mnI3li5knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICfoqr/mn6XntZDmnpzlnJYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJ+aykuaciee1seioiOe1kOaenOOAgic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICfoqr/mn6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICfoq4vlm57nrZTpgJnkupvllY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAn6aGv56S65oiR55qE5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICfpgJnkupvmmK/kvaDnmoTlm57nrZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAn6Kq/5p+l5qiZ6aGMJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICflibXlu7rmlrDnmoToqr/mn6UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ+e3qOi8r+iqv+afpSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAn57eo6Lyv6Kq/5p+l5ZWP6aGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ+aYry/lkKYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAn5Zau6YG477yI5YiX6KGo77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ+ikh+mBuOahhu+8iOWIl+ihqO+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ+WVj+mhjOmhnuWIpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ+WujOaVtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAn5LiN5a6M5pW0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICfnt6jovK/llY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICfnt6jovK/lm57nrZQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5U3RhdHMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAn57Wx6KiI5qaC5rOBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAn57Wx6KiI6Kmz5oOFJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAn54Sh5rOV6Kit572u5paw55qE54uA5oWL77yB6YKE5pyq5a6a576p5ZWP6aGM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ+eLgOaFi+W3suabtOaUueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctIOaykuaciemBuOWPluS9h+WIlyAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctIOabtOaUueeLgOaFiyAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAn54Sh5pWIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICfmlrDni4DmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAn6Kq/5p+l5o+P6L+wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAn5bey5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ+acquWbnuetlCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAn5oSf6Kyd5L2g55qE5Y+N6aWL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAn6Kq/5p+l57WQ5p2f44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ+S9oOW3sue2k+WbnuetlOS6huiqv+afpeOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAn5oKo56K65a6a6KaB5Yiq6Zmk5q2k562U5qGI77yfJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ+iqv+afpeaooee1hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAn5YWs6ZaL55qE6Kq/5p+lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ+iqv+afpea3u+WKoOaooee1hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAn6Kq/5p+l57eo6Lyv5qih57WEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICdNb2R1bCBVbWZyYWdlLURldGFpbGFuc2ljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX0NOX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ+WIm+W7uuaWsOeahOiwg+afpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICfku4vnu40nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ+iwg+afpeS7i+e7jSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ+mAmuefpeato+aWhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICflt6XljZXnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICflhoXpg6jmj4/ov7AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJ+WuouaIt+adoeS7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJ+ivt+mAieaLqeS4gOS4quWuouaIt+WxnuaAp+S7pea3u+WKoOadoeS7tuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJ+WFrOWFseiwg+afpeWvhumSpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJ+iwg+afpeekuuS+iyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ+e8lui+keS4gOiIrOS/oeaBryc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ+e8lui+kemXrumimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICfkvaDlnKjov5nph4wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ+iwg+afpemXrumimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICfmt7vliqDpl67popgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICfpl67popjnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAn6ZyA6KaB5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAn6L+Z5Liq6LCD5p+l5rKh5pyJ5L+d5a2Y55qE6Zeu6aKY44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAn6Zeu6aKYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ+mcgOimgeWbnuetlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAn5b2T5oKo5a6M5oiQ57yW6L6R6LCD5p+l6Zeu6aKY5ZCO77yM5YWz6Zet6L+Z5Liq56qX5Y+j5Y2z5Y+v44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAn5YWz6Zet5pys56qX5Y+jJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICfnvJbovpHpl67popgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICfov5Tlm57liLDpl67popgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAn6Zeu6aKYOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ+WPr+iDveeahOWbnuetlCAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ+a3u+WKoOWbnuetlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ+i/meS4qumXrumimOayoeacieS/neWtmOeahOWbnuetlOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAn6L+Z5Liq6Zeu6aKY5LiN6IO95pyJ5aSa5Liq5Zue562U77yM5bCG5pi+56S65LiA5Liq5paH5pys5Yy65Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAn57yW6L6R5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ+i/lOWbnuWIsOe8lui+kemXrumimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAn5Zue562U77yaJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJ+iwg+afpeamguiniOmAiemhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICflnKjnvJblj7fjgIHmoIfpopjjgIHnroDku4vjgIHmj4/ov7DjgIHpgJrnn6Xlj5Hku7bkurrjgIHpgJrnn6XmoIfpopjlkozpgJrnn6XmraPmloflsZ7mgKfkuK3mkJzntKLvvIzopobnm5blhbbku5blhbfmnInnm7jlkIzlkI3np7DnmoTlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAn6LCD5p+l5Yib5bu65pe26Ze0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAn5rKh5pyJ6ZmQ5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICfku4XlnKjmraTmnJ/pl7TliJvlu7rnmoTosIPmn6XvvJonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAn5q+P6aG15pi+56S66LCD5p+l55qE5pyA5aSn5pWwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICfpgJrnn6Xlj5Hku7bkuronOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICfpgJrnn6XkuLvpopgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ+S/ruaUueS6uic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICfnu5/orqHmpoLlhrUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICfor7fmsYLooagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJ+mAieaLqeaJgOacieivt+axgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICflj5HpgIHml7bpl7QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAn5oqV56Wo5pe26Ze0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICfpgInmi6nov5nkuKror7fmsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICfmn6XnnIvor6bmg4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAn5Yig6Zmk57uf6K6h6LWE5paZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICfosIPmn6Xnu5/orqHor6bmg4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ+i/lOWbnue7n+iuoeamguWGtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAn5LiK5LiA5Liq5oqV56WoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJ+S4i+S4gOS4quaKleelqCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICfosIPmn6Xkv6Hmga8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ+W3seWPkemAgeeahOivt+axgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAn5bey5o6l5pS255qE6LCD5p+lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAn6LCD5p+l6K+m5oOFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ+W3peWNleacjeWKoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ+iwg+afpee7k+aenOWbvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAn5rKh5pyJ57uf6K6h57uT5p6c44CCJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ+iwg+afpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ+ivt+WbnuetlOi/meS6m+mXrumimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICfmmL7npLrmiJHnmoTlm57nrZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ+i/meS6m+aYr+S9oOeahOWbnuetlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICfosIPmn6XmoIfpopgnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ+WIm+W7uuaWsOeahOiwg+afpSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICfkvaDmsqHmnInmnYPpmZDkvb/nlKjmraTosIPmn6XvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAn5rKh5pyJ5oyH5a6aU3VydmV5SUQg77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAn57yW6L6R6LCD5p+lJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJ+S9oOayoeacieadg+mZkOS9v+eUqOatpOiwg+afpeaIlumXruWNt++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJ+S9oOayoeacieadg+mZkOS9v+eUqOatpOiwg+afpeOAgemXruWNt+aIluetlOahiO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICfnvJbovpHosIPmn6Xpl67popgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAn5pivL+WQpic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICfljZXpgInvvIjliJfooajvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAn5aSN6YCJ5qGG77yI5YiX6KGo77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJ+WHgOaOqOiNkOWAvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAn6Zeu6aKY57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAn5a6M5pW0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICfkuI3lrozmlbQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ+e8lui+kemXrumimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ+e8lui+keWbnuetlCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICfnu5/orqHmpoLop4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3Igc3RhdHMgZGV0YWlsISd9ID0gJ+S9oOayoeacieadg+mZkOS9v+eUqOatpOiwg+afpeaIluivpue7hue7n+iuoe+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICfnu5/orqHor6bmg4UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICfml6Dms5Xorr7nva7mlrDnmoTnirbmgIHvvIHov5jmnKrlrprkuYnpl67popjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICfml6Dms5Xorr7nva7mlrDnmoTnirbmgIHvvIHpl67popjkuI3lrozmlbTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAn54q25oCB5bey5pu05pS544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0g5rKh5pyJ6YCJ5oup6Zif5YiXIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJ30gPSAnLeayoeaciemAieaLqeW3peWNleexu+Weiy0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnLeayoeaciemAieaLqeW3peWNleacjeWKoS0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctIOabtOaUueeKtuaAgSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ+S4uyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAn5peg5pWIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICfmlrDnmoTnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAn6LCD5p+l5o+P6L+wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAn5bey5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ+acquWbnuetlCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAn5oSf6LCi5L2g55qE5Y+N6aaI44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAn6LCD5p+l57uT5p2f44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJ+iwg+afpeeahOa2iOaBr++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAn5rKh5pyJ5ZCv55So5pys5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAn6L+Z5Liq5Yqf6IO95rKh5pyJ5ZCv55So77yM6K+36IGU57O757O757uf566h55CG5ZGY44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICfosIPmn6XmqKHlnZfplJnor6/vvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJ+aXoOaViOeahOiwg+afpemUruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAn5o+S5YWl55qE6LCD5p+l6ZSu5peg5pWI77yM5aaC5p6c5L2g5piv6YCa6L+H6ZO+5o6l5omT5byA77yM5Y+v6IO96ZO+5o6l5aSx5pWI5oiW5Lit5pat44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAn6LCD5p+l5oqV56WoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICfosIPmn6XmipXnpajmlbDmja4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ+S9oOW3sue7j+WbnuetlOS6hui/meS4quiwg+afpeOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAn6LCD5p+l5YiX6KGoJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAn5oKo55yf55qE6KaB5Yig6Zmk6L+Z5Liq6Zeu6aKY5ZCX77yf5omA5pyJ55u45YWz5pWw5o2u6YO95bCG5Lii5aSx77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAn5oKo55yf55qE6KaB5Yig6Zmk6L+Z5Liq5Zue562U5ZCX77yfJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ+S4gOS4quiwg+afpeaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAn57yW6L6R6LCD5p+l6Zeu6aKY55qE5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i6LCD5p+l5a+56LGh55qE5omA5pyJ5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ+WPkemAgeiwg+afpemCruS7tuWQjueahOWkqeaVsO+8jOWcqOatpOacn+mXtOS4jeS8mue7meWQjOS4gOWuouaIt+WPkemAgeaWsOeahOiwg+afpeivt+axguOAgumAieaLqSDigJww4oCdIOWwhuaAu+aYr+WPkemAgeiwg+afpemCruS7tuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICflj5HpgIHnu5nlrqLmiLfnmoTmlrDosIPmn6XpgJrnn6Xpgq7ku7bnmoTpu5jorqTmraPmlofjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICflj5HpgIHnu5nlrqLmiLfnmoTmlrDosIPmn6XpgJrnn6Xpgq7ku7bnmoTpu5jorqTlj5Hku7bkurrjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn5Y+R6YCB57uZ5a6i5oi355qE5paw6LCD5p+l6YCa55+l6YKu5Lu255qE6buY6K6k5Li76aKY44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ+WumuS5ieS4gOS4quaYvuekuuiwg+afpeWIl+ihqOeugOa0geinhuWbvueahOamguiniOaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICflrprkuYnmnInmnYPmm7TmlLnosIPmn6XnirbmgIHnmoTnu4TjgIIg6buY6K6k5oOF5Ya15LiL77yM5pWw57uE5Li656m677yM5omA5pyJ57uE55qE5pyN5Yqh5Zmo5Lq65ZGY6YO95Y+v5Lul5pu05pS56LCD5p+l54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAn5a6a5LmJ6LCD5p+l6K+35rGC5piv5ZCm5Y+q5Y+R6YCB57uZ55yf5a6e5a6i5oi344CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICflrprkuYnmr48zMOWkqeWPkemAgee7meS4gOS4quWuouaIt+eahOacgOWkp+iwg+afpeaVsO+8iCAwIOS7o+ihqOayoeacieacgOWkp+aVsOmZkOWItu+8jOWwhuWPkemAgeaJgOacieeahOiwg+afpeivt+axgu+8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAn5a6a5LmJ5LiA5Liq5bel5Y2V5YWz6Zet5ZCO6Kem5Y+R5Y+R6YCB5LiA5Liq6LCD5p+l55qE5bCP5pe25pWw77yIIDAg5Luj6KGo5Zyo5bel5Y2V5YWz6Zet5ZCO56uL5Y2z5Y+R6YCB6LCD5p+l6K+35rGC77yJ44CC5rOo5oSP77ya5bu26L+f5Y+R6YCB55qE6LCD5p+l55SxT1RSU+WuiOaKpOeoi+W6j++8iOWNs+WFiOWJjea/gOa0u+eahOiuvue9rlwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJ++8ieWujOaIkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICflrprkuYnlu7rnq4vlj5HpgIHmnaHku7bnmoTkuIvmi4nliJfooajnmoTliJfvvIgwID0+IOS4jea/gOa0u++8jDEgPT4g5r+A5rS777yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ+iwg+afpeivpuaDheeql+WPo+WvjOaWh+acrOafpeeci+eahOm7mOiupOmrmOW6puOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICflrprkuYnlj6/ku6XliKDpmaTnu5/orqHmlbDmja7nmoTnu4TvvIhyd++8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICflrprkuYnosIPmn6Xor6bmg4Xnqpflj6Plr4zmlofmnKzmn6XnnIvop4blm77nmoTpu5jorqTpq5jluqbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ+WumuS5ieiwg+afpeamguiniOS4reaYvuekuueahOWtl+auteOAgui/meS4qumAiemhueS4jeS8muW9seWTjeWtl+auteeahOS9jee9ruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAn56Gu5a6a57uf6K6h5qih5Z2X5piv5ZCm5Y+v5Lul55Sf5oiQ6LCD5p+l5YiX6KGo44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAn57yW6L6R6LCD5p+l5LiA6Iis5L+h5oGv44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICfnvJbovpHosIPmn6Xpl67popjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAn5Zyo5YWs5YWx55WM6Z2i5ZCv55So5oiW56aB55So5pi+56S65oqV56Wo5pWw5o2u56qX5Y+j77yI5b2T5a6i5oi36K+V5Zu+5YaN5qyh5Zue562U5LiA5Liq6LCD5p+l5pe25pi+56S65oyH5a6a6LCD5p+l57uT5p6c55qE5pWw5o2u77yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAn5ZCv55So5oiW56aB55So5pyN5Yqh55qE5Y+R6YCB5p2h5Lu25qOA5p+l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAn5ZCv55So5oiW56aB55So5bel5Y2V57G75Z6L55qE5Y+R6YCB5p2h5Lu25qOA5p+l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdoua3u+WKoOiwg+afpeeahOWJjeerr+aooeWdl+azqOWGjOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i57yW6L6R6LCD5p+l55qE5YmN56uv5qih5Z2X5rOo5YaM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i6LCD5p+l57uf6K6h55qE5YmN56uv5qih5Z2X5rOo5YaM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLosIPmn6Xor6bmg4XnmoTliY3nq6/mqKHlnZfms6jlhozjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdouWFrOWFseiwg+afpeeahOWJjeerr+aooeWdl+azqOWGjOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAn5aaC5p6c5Yy56YWN6L+Z5Liq5q2j5YiZ6KGo6L6+5byP77yM5LiN5Lya57uZ5a6i5oi35Y+R6YCB6LCD5p+l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0Lid9ID0gJ+mZkOWItuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ+iwg+afpeamguiniOeugOa0geaooeW8j+aYvuekuuiwg+afpeeahOmhtemdouWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ+WFrOWFseiwg+afpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHRzIG9sZGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgYW1vdW50IG9mIGRheXMgd2lsbCBiZSBkZWxldGVkLiBOb3RlOiBkZWxldGUgcmVzdWx0cyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ1Rhc2sjIyNTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZVwnIHNldHRpbmcuJ30gPQogICAgICAgICfotoXov4fphY3nva7nmoTlpKnmlbDnmoTosIPmn6Xnu5PmnpzlsIbooqvliKDpmaTjgIIg5rOo5oSP77ya5Yig6Zmk6LCD5p+l57uT5p6c55Sx5YWI5YmN5r+A5rS755qEIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcg6K6+572u55qET1RSU+WuiOaKpOeoi+W6j+WujOaIkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLosIPmn6Xor6bmg4Xnqpflj6PvvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrnvJbovpHosIPmn6XnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLosIPmn6Xor6bmg4Xnqpflj6PvvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrnvJbovpHosIPmn6Xpl67popjnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouiwg+afpeivpuaDheeql+WPo++8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4qui/lOWbnueahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouiwg+afpee7n+iuoeeql+WPo++8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4quiwg+afpee7n+iuoeivpuaDheeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAn57uf6K6h6K+m5oOFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ+a3u+WKoOiwg+afpeaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAn57yW6L6R6LCD5p+l5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAn6LCD5p+l5qaC6KeI566A5rSB5qih5byP6ZmQ5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAn6LCD5p+l57uf6K6h5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICfosIPmn6Xor6bmg4XmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICfosIPmn6XmpoLop4jnroDmtIHmqKHlvI/mr4/pobXmmL7npLrnmoTosIPmn6XmlbDpmZDliLbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICfosIPmn6XkuI3kvJrlj5HpgIHnu5nphY3nva7nmoTpgq7ku7blnLDlnYDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ+iwg+afpeeahOagh+ivhuespu+8jOS+i+Wmgu+8mlN1cnZleSPjgIFNeVN1cnZleSPjgILpu5jorqTkuLpTdXJ2ZXkj44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAn5aaC5p6c5LiA5Liq5bel5Y2V5bey5YWz6Zet5bCx6Ieq5Yqo5Y+R6YCB6LCD5p+l6K+35rGC6YKu5Lu257uZ5a6i5oi355qE5bel5Y2V5LqL5Lu25qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICfop6blj5HliKDpmaTosIPmn6Xnu5PmnpzvvIjljIXmi6zmipXnpajmlbDmja7lkozor7fmsYLvvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ+inpuWPkeWZqOWPkemAgeW7tui/n+eahOiwg+afpeivt+axguOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJ+i/m+WFpeiwg+afpee7n+iuoeivpuaDheOAgic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRTdXJ2ZXlBZGQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBjb21tb24gb2JqZWN0cwogICAgJXskU2VsZn0gPSAlUGFyYW07CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzdXJ2ZXkgYWRkCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICEkU2VsZi0+e1N1YmFjdGlvbn0gKSB7CgogICAgICAgIHJldHVybiAkU2VsZi0+X1N1cnZleUFkZE1hc2soKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHN1cnZleSBuZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTdXJ2ZXlOZXcnICkgewoKICAgICAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgICAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgICAgICMgZ2V0IHBhcmFtcwogICAgICAgIG15ICRTdXJ2ZXlJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICJTdXJ2ZXlJRCIgKTsKCiAgICAgICAgIyBnZXQgcmVxdWlyZWQgZm9ybSBlbGVtZW50cyBhbmQgZXJyb3JzCiAgICAgICAgbXkgJVNlcnZlckVycm9yOwogICAgICAgIG15ICVGb3JtRWxlbWVudHM7CiAgICAgICAgZm9yIG15ICRJdGVtICgKICAgICAgICAgICAgcXcoIFRpdGxlIEludHJvZHVjdGlvbiBEZXNjcmlwdGlvbiBOb3RpZmljYXRpb25TZW5kZXIgTm90aWZpY2F0aW9uU3ViamVjdCBOb3RpZmljYXRpb25Cb2R5ICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEZvcm1FbGVtZW50c3skSXRlbX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiJEl0ZW0iICk7CgogICAgICAgICAgICBpZiAoICEkRm9ybUVsZW1lbnRzeyRJdGVtfSApIHsKICAgICAgICAgICAgICAgICRTZXJ2ZXJFcnJvcnsgIiRJdGVtIiAuICdTZXJ2ZXJFcnJvcicgfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2V0IGFycmF5IHBhcmFtcwogICAgICAgIGZvciBteSAkSXRlbSAocXcoUXVldWVzIFRpY2tldFR5cGVJRHMgU2VydmljZUlEcykpIHsKICAgICAgICAgICAgQHsgJEZvcm1FbGVtZW50c3skSXRlbX0gfSA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICRJdGVtICk7CiAgICAgICAgfQoKICAgICAgICBteSAkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkU3RyZyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oCiAgICAgICAgICAgIFBhcmFtID0+ICdDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRzJywKICAgICAgICApOwogICAgICAgIG15ICVDdXN0b21lclVzZXJDb25kaXRpb25zOwoKICAgICAgICBpZiAoJEN1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZFN0cmcpIHsKCiAgICAgICAgICAgIEZJRUxEOgogICAgICAgICAgICBmb3IgbXkgJEZpZWxkICggc3BsaXQoIC8sLywgJEN1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZFN0cmcgKSApIHsKICAgICAgICAgICAgICAgIG5leHQgRklFTEQgaWYgISRGaWVsZDsKCiAgICAgICAgICAgICAgICBteSAlU2VsZWN0aW9uc0RhdGE7CiAgICAgICAgICAgICAgICAlU2VsZWN0aW9uc0RhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JyktPl9TZW5kQ29uZGl0aW9uR2V0RmllbGRTZWxlY3Rpb25zKAogICAgICAgICAgICAgICAgICAgIEZpZWxkTmFtZSA9PiAkRmllbGQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15IEBDaGVja2JveGVzID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSgKICAgICAgICAgICAgICAgICAgICBQYXJhbSA9PiAiJHtGaWVsZH1DaGVja2JveCIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbXkgQENvbmRpdGlvbnMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KAogICAgICAgICAgICAgICAgICAgIFBhcmFtID0+ICRGaWVsZCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBteSBAQ29uZGl0aW9uQXJyYXk7CgogICAgICAgICAgICAgICAgZm9yIG15ICRDb3VudCAoIDAgLi4gKCBzY2FsYXIgQENvbmRpdGlvbnMgLSAxICkgKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICROZWdhdGlvbjsKICAgICAgICAgICAgICAgICAgICBpZiAoJVNlbGVjdGlvbnNEYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICROZWdhdGlvbiA9ICRDaGVja2JveGVzWzBdICsgMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICROZWdhdGlvbiA9ICRDaGVja2JveGVzWyRDb3VudF0gKyAwOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbXkgJFJlZ0V4cFZhbHVlICAgICAgPSAkQ29uZGl0aW9uc1skQ291bnRdOwogICAgICAgICAgICAgICAgICAgIG15ICVDb25kaXRpb25FbnRyaWVzID0gKAogICAgICAgICAgICAgICAgICAgICAgICBOZWdhdGlvbiAgICA9PiAkTmVnYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIFJlZ0V4cFZhbHVlID0+ICRSZWdFeHBWYWx1ZSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICFldmFsIHsgbXkgJFJlZ2V4ID0gcXIvJFJlZ0V4cFZhbHVlLzsgMTsgfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICRTZXJ2ZXJFcnJvcntDdXN0b21lclVzZXJDb25kaXRpb25FcnJvcnN9LT57JEZpZWxkfS0+eyRDb3VudH0gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ29uZGl0aW9uQXJyYXksIFwlQ29uZGl0aW9uRW50cmllczsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc3skRmllbGR9ID0gXEBDb25kaXRpb25BcnJheTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCVDdXN0b21lclVzZXJDb25kaXRpb25zKSB7CgogICAgICAgICAgICAgICAgJEZvcm1FbGVtZW50c3tDdXN0b21lclVzZXJDb25kaXRpb25zfSA9IFwlQ3VzdG9tZXJVc2VyQ29uZGl0aW9uczsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0Zyb250ZW5kOjpSaWNoVGV4dCcpICkgewogICAgICAgICAgICAkRm9ybUVsZW1lbnRze0ludHJvZHVjdGlvbn0gICAgID0gIlwkaHRtbC90ZXh0XCQgJEZvcm1FbGVtZW50c3tJbnRyb2R1Y3Rpb259IjsKICAgICAgICAgICAgJEZvcm1FbGVtZW50c3tOb3RpZmljYXRpb25Cb2R5fSA9ICJcJGh0bWwvdGV4dFwkICRGb3JtRWxlbWVudHN7Tm90aWZpY2F0aW9uQm9keX0iOwogICAgICAgICAgICAkRm9ybUVsZW1lbnRze0Rlc2NyaXB0aW9ufSAgICAgID0gIlwkaHRtbC90ZXh0XCQgJEZvcm1FbGVtZW50c3tEZXNjcmlwdGlvbn0iOwogICAgICAgIH0KCiAgICAgICAgIyBzYXZlIGlmIG5vIGVycm9ycwogICAgICAgIGlmICggISVTZXJ2ZXJFcnJvciApIHsKICAgICAgICAgICAgbXkgJFN1cnZleUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpLT5TdXJ2ZXlBZGQoCiAgICAgICAgICAgICAgICAlRm9ybUVsZW1lbnRzLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudFN1cnZleVpvb207U3VydmV5SUQ9JFN1cnZleUlEIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgcmVsb2FkIGZvcm0gaWYgZXJyb3IKICAgICAgICByZXR1cm4gJFNlbGYtPl9TdXJ2ZXlBZGRNYXNrKAogICAgICAgICAgICBGb3JtRWxlbWVudHMgPT4gXCVGb3JtRWxlbWVudHMsCiAgICAgICAgICAgIFNlcnZlckVycm9yICA9PiBcJVNlcnZlckVycm9yLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBTdXJ2ZXkgQUpBWCByZXF1ZXN0CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUpBWFJlcXVlc3QnICkgewoKICAgICAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICAgICAgbXkgJEpTT05PYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CgogICAgICAgIG15ICRGaWVsZE5hbWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKAogICAgICAgICAgICBQYXJhbSA9PiAnRmllbGROYW1lJywKICAgICAgICApOwogICAgICAgIG15IEBTZWxlY3RlZFZhbHVlcyA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoCiAgICAgICAgICAgIFBhcmFtID0+ICdTZWxlY3RlZFZhbHVlc1tdJywKICAgICAgICApOwoKICAgICAgICBteSAlU2VsZWN0aW9uc0RhdGE7CiAgICAgICAgJVNlbGVjdGlvbnNEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpLT5fU2VuZENvbmRpdGlvbkdldEZpZWxkU2VsZWN0aW9ucygKICAgICAgICAgICAgRmllbGROYW1lID0+ICRGaWVsZE5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEpTT05TdHJpbmcgPSAkSlNPTk9iamVjdC0+RW5jb2RlKAogICAgICAgICAgICBEYXRhID0+ICcnLAogICAgICAgICk7CgogICAgICAgIGlmICglU2VsZWN0aW9uc0RhdGEpIHsKICAgICAgICAgICAgbXkgJEN1c3RvbWVyVXNlckNvbmRpdGlvbnNTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlU2VsZWN0aW9uc0RhdGEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICIke0ZpZWxkTmFtZX1bXSIsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgID0+IDYsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgID0+ICdNb2Rlcm5pemUgVzUwcGMnLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiBcQFNlbGVjdGVkVmFsdWVzLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJUpTT05EYXRhID0gKAogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgPT4gXDEsCiAgICAgICAgICAgICAgICBTZWxlY3RGaWVsZCA9PiAkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc1N0cmcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkSlNPTlN0cmluZyA9ICRKU09OT2JqZWN0LT5FbmNvZGUoCiAgICAgICAgICAgICAgICBEYXRhID0+IFwlSlNPTkRhdGEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEpTT05TdHJpbmcsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9Cn0KCnN1YiBfU3VydmV5QWRkTWFzayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVKU0RhdGE7CgogICAgbXkgJVNlcnZlckVycm9yOwogICAgaWYgKCAkUGFyYW17U2VydmVyRXJyb3J9ICkgewogICAgICAgICVTZXJ2ZXJFcnJvciA9ICV7ICRQYXJhbXtTZXJ2ZXJFcnJvcn0gfTsKICAgIH0KCiAgICBteSAlRm9ybUVsZW1lbnRzOwogICAgaWYgKCAkUGFyYW17Rm9ybUVsZW1lbnRzfSApIHsKICAgICAgICAlRm9ybUVsZW1lbnRzID0gJXsgJFBhcmFte0Zvcm1FbGVtZW50c30gfTsKICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdBZGQgTmV3IFN1cnZleScpLAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICBteSAlUXVldWVzICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKS0+R2V0QWxsUXVldWVzKCk7CiAgICBteSAkUXVldWVTdHJpbmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVRdWV1ZXMsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdRdWV1ZXMnLAogICAgICAgIFNpemUgICAgICAgICA9PiA2LAogICAgICAgIE11bHRpcGxlICAgICA9PiAxLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgIFNvcnQgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkRm9ybUVsZW1lbnRze1F1ZXVlc30sCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGNoZWNrIGlmIHRoZSBmb3Igc2VuZCBjb25kaXRpb24gdGlja2V0IHR5cGUgY2hlY2sgaXMgZW5hYmxlZAogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uVGlja2V0VHlwZScpICkgewoKICAgICAgICAjIGdldCB0aGUgdmFsaWQgdGlja2V0IHR5cGUgbGlzdAogICAgICAgIG15ICVUaWNrZXRUeXBlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJyktPlR5cGVMaXN0KCk7CgogICAgICAgICMgY2hlY2sgaWYgYSB0aWNrZXQgdHlwZSBpcyBhdmFpbGFibGUKICAgICAgICBpZiAoJVRpY2tldFR5cGVzKSB7CgogICAgICAgICAgICAjIGJ1aWxkIHRpY2tldCB0eXBlIHNlbGVjdGlvbgogICAgICAgICAgICBteSAkVGlja2V0VHlwZVN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVRpY2tldFR5cGVzLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdUaWNrZXRUeXBlSURzJywKICAgICAgICAgICAgICAgIFNpemUgICAgICAgICA9PiA2LAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDEsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMCwKICAgICAgICAgICAgICAgIFNvcnQgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJEZvcm1FbGVtZW50c3tUaWNrZXRUeXBlSURzfSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnVGlja2V0VHlwZXMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGlja2V0VHlwZVN0cmcgPT4gJFRpY2tldFR5cGVTdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiB0aGUgc2VuZCBjb25kaXRpb24gc2VydmljZSBjaGVjayBpcyBlbmFibGVkCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJykgKSB7CgogICAgICAgICMgZ2V0IHRoZSB2YWxpZCBzZXJ2aWNlIGxpc3QKICAgICAgICBteSAlU2VydmljZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpLT5TZXJ2aWNlTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGlmIGEgc2VydmljZSBpcyBhdmFpbGFibGUKICAgICAgICBpZiAoJVNlcnZpY2VzKSB7CgogICAgICAgICAgICAjIGJ1aWxkIHNlcnZpY2Ugc2VsZWN0aW9uCiAgICAgICAgICAgIG15ICRTZXJ2aWNlU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlU2VydmljZXMsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1NlcnZpY2VJRHMnLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDYsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkRm9ybUVsZW1lbnRze1NlcnZpY2VJRHN9LAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdUaWNrZXRTZXJ2aWNlcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlU3RyZyA9PiAkU2VydmljZVN0cmcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIENoZWNrIHNlbmQgY29uZGl0aW9uIGJ5IEN1c3RvbWVyVXNlciBmaWVsZHMuCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycpICkgewoKICAgICAgICBteSAlQ3VzdG9tZXJGaWVsZHNDb25maWcgPSAleyAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uQ3VzdG9tZXJGaWVsZHMnKSB9OwogICAgICAgIG15IEBDdXN0b21lckZpZWxkczsKCiAgICAgICAgbXkgJFN1cnZleU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKCiAgICAgICAgQ1VTVE9NRVJGSUVMRDoKICAgICAgICBmb3IgbXkgJEN1c3RvbWVyRmllbGQgKCBzb3J0IGtleXMgJUN1c3RvbWVyRmllbGRzQ29uZmlnICkgewogICAgICAgICAgICBuZXh0IENVU1RPTUVSRklFTEQgaWYgISRDdXN0b21lckZpZWxkc0NvbmZpZ3skQ3VzdG9tZXJGaWVsZH07CiAgICAgICAgICAgIG5leHQgQ1VTVE9NRVJGSUVMRCBpZiAhJFN1cnZleU9iamVjdC0+X1NlbmRDb25kaXRpb25DaGVja0N1c3RvbWVyRmllbGQoIEZpZWxkTmFtZSA9PiAkQ3VzdG9tZXJGaWVsZCApOwoKICAgICAgICAgICAgcHVzaCBAQ3VzdG9tZXJGaWVsZHMsICRDdXN0b21lckZpZWxkOwogICAgICAgIH0KCiAgICAgICAgaWYgKEBDdXN0b21lckZpZWxkcykgewoKICAgICAgICAgICAgbXkgJEN1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHNTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXEBDdXN0b21lckZpZWxkcywKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucycsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMCwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAxLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICcnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJEpTRGF0YXtDdXN0b21lclVzZXJDb25kaXRpb25zfSA9ICRGb3JtRWxlbWVudHN7Q3VzdG9tZXJVc2VyQ29uZGl0aW9uc30gfHwgJFBhcmFte0N1c3RvbWVyVXNlckNvbmRpdGlvbnN9OwogICAgICAgICAgICAkSlNEYXRhe0N1c3RvbWVyVXNlckNvbmRpdGlvbkVycm9yc30gPSAkU2VydmVyRXJyb3J7Q3VzdG9tZXJVc2VyQ29uZGl0aW9uRXJyb3JzfSB8fCAnJzsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU2VuZEN1c3RvbWVyVXNlckNvbmRpdGlvbnMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkc1N0cmcgPT4gJEN1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHNTdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyByaWNoIHRleHQgZWxlbWVudHMKICAgIG15ICVTdXJ2ZXlFbGVtZW50czsKCiAgICAkU3VydmV5RWxlbWVudHN7SW50cm9kdWN0aW9ufSA9ICRGb3JtRWxlbWVudHN7SW50cm9kdWN0aW9ufSB8fAogICAgICAgICRQYXJhbXtJbnRyb2R1Y3Rpb259OwoKICAgICRTdXJ2ZXlFbGVtZW50c3tOb3RpZmljYXRpb25Cb2R5fSA9ICRGb3JtRWxlbWVudHN7Tm90aWZpY2F0aW9uQm9keX0gfHwKICAgICAgICAkUGFyYW17Tm90aWZpY2F0aW9uQm9keX0gfHwKICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Tm90aWZpY2F0aW9uQm9keScpOwoKICAgICRTdXJ2ZXlFbGVtZW50c3tEZXNjcmlwdGlvbn0gPSAkRm9ybUVsZW1lbnRze0Rlc2NyaXB0aW9ufSB8fAogICAgICAgICRQYXJhbXtEZXNjcmlwdGlvbn0gfHwKICAgICAgICAnJzsKCiAgICAjIGxvYWQgcmljaCB0ZXh0IGVkaXRvcgogICAgbXkgJFJpY2hUZXh0RWRpdG9yID0gJENvbmZpZ09iamVjdC0+R2V0KCdGcm9udGVuZDo6UmljaFRleHQnKTsKICAgIGlmICgkUmljaFRleHRFZGl0b3IpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5TZXRSaWNoVGV4dFBhcmFtZXRlcnMoCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNvbnZlcnQgcmVxdWlyZWQgZWxlbWVudHMgdG8gUlRFCiAgICBGSUVMRDoKICAgIGZvciBteSAkU3VydmV5RmllbGQgKCBzb3J0IGtleXMgJVN1cnZleUVsZW1lbnRzICkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRTdXJ2ZXlFbGVtZW50c3skU3VydmV5RmllbGR9OwoKICAgICAgICAjIGNsZWFuIEhUTUwKICAgICAgICBteSAkSFRNTENvbnRlbnQgPSAkU3VydmV5RWxlbWVudHN7JFN1cnZleUZpZWxkfSA9fiBze1xBXCRodG1sXC90ZXh0XCRccyguKil9eyQxfXhtczsKCiAgICAgICAgaWYgKCAhJEhUTUxDb250ZW50ICYmICRSaWNoVGV4dEVkaXRvciApIHsKICAgICAgICAgICAgJFN1cnZleUVsZW1lbnRzeyRTdXJ2ZXlGaWVsZH0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFN1cnZleUVsZW1lbnRzeyRTdXJ2ZXlGaWVsZH0sCiAgICAgICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRIVE1MQ29udGVudCAmJiAhJFJpY2hUZXh0RWRpdG9yICkgewogICAgICAgICAgICAkU3VydmV5RWxlbWVudHN7JFN1cnZleUZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKS0+VG9Bc2NpaSgKICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkU3VydmV5RWxlbWVudHN7JFN1cnZleUZpZWxkfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnSW50cm9kdWN0aW9uJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgSW50cm9kdWN0aW9uID0+ICRTdXJ2ZXlFbGVtZW50c3tJbnRyb2R1Y3Rpb259LAogICAgICAgIH0sCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ05vdGlmaWNhdGlvbkJvZHknLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBOb3RpZmljYXRpb25Cb2R5ID0+ICRTdXJ2ZXlFbGVtZW50c3tOb3RpZmljYXRpb25Cb2R5fSwKICAgICAgICB9LAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdJbnRlcm5hbERlc2NyaXB0aW9uJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJFN1cnZleUVsZW1lbnRze0Rlc2NyaXB0aW9ufSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdlbmVyYXRlcyBnZW5lcmljIGVycm9ycyBmb3IgSmF2YVNjcmlwdAogICAgZm9yIG15ICROZWVkZWRJdGVtICgKICAgICAgICBxdyggVGl0bGUgSW50cm9kdWN0aW9uIERlc2NyaXB0aW9uIE5vdGlmaWNhdGlvblNlbmRlciBOb3RpZmljYXRpb25TdWJqZWN0IE5vdGlmaWNhdGlvbkJvZHkgKQogICAgICAgICkKICAgIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJpY0Vycm9yJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBJdGVtTmFtZSA9PiAkTmVlZGVkSXRlbSAuICdFcnJvcicsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBmb3IgbXkgJEl0ZW0gKCBzb3J0IGtleXMgJVNlcnZlckVycm9yICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdHZW5lcmljU2VydmVyRXJyb3InLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEl0ZW1OYW1lID0+ICRJdGVtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdKU0RhdGEnLAogICAgICAgIFZhbHVlID0+IFwlSlNEYXRhLAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50U3VydmV5QWRkJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFF1ZXVlU3RyaW5nICAgICAgICA9PiAkUXVldWVTdHJpbmcsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciA9PiAkRm9ybUVsZW1lbnRze05vdGlmaWNhdGlvblNlbmRlcn0KICAgICAgICAgICAgICAgIHx8ICRQYXJhbXtOb3RpZmljYXRpb25TZW5kZXJ9CiAgICAgICAgICAgICAgICB8fCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Tm90aWZpY2F0aW9uU2VuZGVyJyksCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJEZvcm1FbGVtZW50c3tOb3RpZmljYXRpb25TdWJqZWN0fQogICAgICAgICAgICAgICAgfHwgJFBhcmFte05vdGlmaWNhdGlvblN1YmplY3R9CiAgICAgICAgICAgICAgICB8fCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Tm90aWZpY2F0aW9uU3ViamVjdCcpLAogICAgICAgICAgICAlU2VydmVyRXJyb3IsCiAgICAgICAgICAgICVGb3JtRWxlbWVudHMsCiAgICAgICAgfSwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRTdXJ2ZXlFZGl0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgY29tbW9uIG9iamVjdHMKICAgICV7JFNlbGZ9ID0gJVBhcmFtOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJFN1cnZleUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIlN1cnZleUlEIiApOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc3VydmV5IGVkaXQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggISRTZWxmLT57U3ViYWN0aW9ufSApIHsKCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXkgZXhpc3RzCiAgICAgICAgbXkgJFN1cnZleUV4aXN0cyA9ICRTdXJ2ZXlPYmplY3QtPkVsZW1lbnRFeGlzdHMoCiAgICAgICAgICAgIEVsZW1lbnRJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgIEVsZW1lbnQgICA9PiAnU3VydmV5JwogICAgICAgICk7CiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnKSwKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAlU3VydmV5ID0gJFN1cnZleU9iamVjdC0+U3VydmV5R2V0KCBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQgKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fU3VydmV5RWRpdE1hc2soCiAgICAgICAgICAgICVTdXJ2ZXksCiAgICAgICAgKTsKCiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzdXJ2ZXkgc2F2ZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1N1cnZleVNhdmUnICkgewoKICAgICAgICBpZiAoICEkU3VydmV5SUQgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCByZXF1aXJlZCBmb3JtIGVsZW1lbnRzIGFuZCBlcnJvcnMKICAgICAgICBteSAlU2VydmVyRXJyb3I7CiAgICAgICAgbXkgJUZvcm1FbGVtZW50czsKICAgICAgICBmb3IgbXkgJEl0ZW0gKAogICAgICAgICAgICBxdyggVGl0bGUgSW50cm9kdWN0aW9uIERlc2NyaXB0aW9uIE5vdGlmaWNhdGlvblNlbmRlciBOb3RpZmljYXRpb25TdWJqZWN0IE5vdGlmaWNhdGlvbkJvZHkgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRm9ybUVsZW1lbnRzeyRJdGVtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICIkSXRlbSIgKTsKCiAgICAgICAgICAgIGlmICggISRGb3JtRWxlbWVudHN7JEl0ZW19ICkgewogICAgICAgICAgICAgICAgJFNlcnZlckVycm9yeyAiJEl0ZW0iIC4gJ1NlcnZlckVycm9yJyB9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYXJyYXkgcGFyYW1zCiAgICAgICAgZm9yIG15ICRJdGVtIChxdyhRdWV1ZXMgVGlja2V0VHlwZUlEcyBTZXJ2aWNlSURzKSkgewogICAgICAgICAgICBAeyAkRm9ybUVsZW1lbnRzeyRJdGVtfSB9ID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJEl0ZW0gKTsKICAgICAgICB9CgogICAgICAgIGlmICggJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGcm9udGVuZDo6UmljaFRleHQnKSApIHsKICAgICAgICAgICAgJEZvcm1FbGVtZW50c3tJbnRyb2R1Y3Rpb259ID0gKCBsZW5ndGggJEZvcm1FbGVtZW50c3tJbnRyb2R1Y3Rpb259ICkKICAgICAgICAgICAgICAgID8gIlwkaHRtbC90ZXh0XCQgJEZvcm1FbGVtZW50c3tJbnRyb2R1Y3Rpb259IgogICAgICAgICAgICAgICAgOiAnJzsKICAgICAgICAgICAgJEZvcm1FbGVtZW50c3tOb3RpZmljYXRpb25Cb2R5fSA9ICggbGVuZ3RoICRGb3JtRWxlbWVudHN7Tm90aWZpY2F0aW9uQm9keX0gKQogICAgICAgICAgICAgICAgPyAiXCRodG1sL3RleHRcJCAkRm9ybUVsZW1lbnRze05vdGlmaWNhdGlvbkJvZHl9IgogICAgICAgICAgICAgICAgOiAnJzsKICAgICAgICAgICAgJEZvcm1FbGVtZW50c3tEZXNjcmlwdGlvbn0gPSAoIGxlbmd0aCAkRm9ybUVsZW1lbnRze0Rlc2NyaXB0aW9ufSApCiAgICAgICAgICAgICAgICA/ICJcJGh0bWwvdGV4dFwkICRGb3JtRWxlbWVudHN7RGVzY3JpcHRpb259IgogICAgICAgICAgICAgICAgOiAnJzsKICAgICAgICB9CgogICAgICAgIG15ICRDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRTdHJnID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSgKICAgICAgICAgICAgUGFyYW0gPT4gJ0N1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHMnLAogICAgICAgICk7CiAgICAgICAgbXkgJUN1c3RvbWVyVXNlckNvbmRpdGlvbnM7CgogICAgICAgIGlmICgkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkU3RyZykgewoKICAgICAgICAgICAgRklFTEQ6CiAgICAgICAgICAgIGZvciBteSAkRmllbGQgKCBzcGxpdCggLywvLCAkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkU3RyZyApICkgewogICAgICAgICAgICAgICAgbmV4dCBGSUVMRCBpZiAhJEZpZWxkOwoKICAgICAgICAgICAgICAgIG15ICVTZWxlY3Rpb25zRGF0YTsKICAgICAgICAgICAgICAgICVTZWxlY3Rpb25zRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKS0+X1NlbmRDb25kaXRpb25HZXRGaWVsZFNlbGVjdGlvbnMoCiAgICAgICAgICAgICAgICAgICAgRmllbGROYW1lID0+ICRGaWVsZCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgQENoZWNrYm94ZXMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KAogICAgICAgICAgICAgICAgICAgIFBhcmFtID0+ICIke0ZpZWxkfUNoZWNrYm94IiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBteSBAQ29uZGl0aW9ucyA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoCiAgICAgICAgICAgICAgICAgICAgUGFyYW0gPT4gJEZpZWxkLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15IEBDb25kaXRpb25BcnJheTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJENvdW50ICggMCAuLiAoIHNjYWxhciBAQ29uZGl0aW9ucyAtIDEgKSApIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJE5lZ2F0aW9uOwogICAgICAgICAgICAgICAgICAgIGlmICglU2VsZWN0aW9uc0RhdGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE5lZ2F0aW9uID0gJENoZWNrYm94ZXNbMF0gKyAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE5lZ2F0aW9uID0gJENoZWNrYm94ZXNbJENvdW50XSArIDA7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBteSAkUmVnRXhwVmFsdWUgICAgICA9ICRDb25kaXRpb25zWyRDb3VudF07CiAgICAgICAgICAgICAgICAgICAgbXkgJUNvbmRpdGlvbkVudHJpZXMgPSAoCiAgICAgICAgICAgICAgICAgICAgICAgIE5lZ2F0aW9uICAgID0+ICROZWdhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgUmVnRXhwVmFsdWUgPT4gJFJlZ0V4cFZhbHVlLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggIWV2YWwgeyBteSAkUmVnZXggPSBxci8kUmVnRXhwVmFsdWUvOyAxOyB9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgJFNlcnZlckVycm9ye0N1c3RvbWVyVXNlckNvbmRpdGlvbkVycm9yc30tPnskRmllbGR9LT57JENvdW50fSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDb25kaXRpb25BcnJheSwgXCVDb25kaXRpb25FbnRyaWVzOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRDdXN0b21lclVzZXJDb25kaXRpb25zeyRGaWVsZH0gPSBcQENvbmRpdGlvbkFycmF5OwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJUN1c3RvbWVyVXNlckNvbmRpdGlvbnMpIHsKCiAgICAgICAgICAgICAgICAkRm9ybUVsZW1lbnRze0N1c3RvbWVyVXNlckNvbmRpdGlvbnN9ID0gXCVDdXN0b21lclVzZXJDb25kaXRpb25zOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHNhdmUgaWYgbm8gZXJyb3JzCiAgICAgICAgaWYgKCAhJVNlcnZlckVycm9yICkgewogICAgICAgICAgICBteSAkU2F2ZVJlc3VsdCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVVwZGF0ZSgKICAgICAgICAgICAgICAgICVGb3JtRWxlbWVudHMsCiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UG9wdXBDbG9zZSgKICAgICAgICAgICAgICAgIFVSTCA9PiAiQWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD0kU3VydmV5SUQ7IiwKICAgICAgICAgICAgKTsKCiAgICAgICAgfQoKICAgICAgICAjIHJlbG9hZCBmb3JtIGlmIGVycm9yCiAgICAgICAgcmV0dXJuICRTZWxmLT5fU3VydmV5RWRpdE1hc2soCiAgICAgICAgICAgIEZvcm1FbGVtZW50cyA9PiBcJUZvcm1FbGVtZW50cywKICAgICAgICAgICAgU2VydmVyRXJyb3IgID0+IFwlU2VydmVyRXJyb3IsCiAgICAgICAgICAgIFN1cnZleUlEICAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIFN1cnZleSBBSkFYIHJlcXVlc3QKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYUmVxdWVzdCcgKSB7CgogICAgICAgIG15ICRKU09OT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkpTT04nKTsKCiAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oCiAgICAgICAgICAgIFBhcmFtID0+ICdGaWVsZE5hbWUnLAogICAgICAgICk7CiAgICAgICAgbXkgQFNlbGVjdGVkVmFsdWVzID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSgKICAgICAgICAgICAgUGFyYW0gPT4gJ1NlbGVjdGVkVmFsdWVzW10nLAogICAgICAgICk7CgogICAgICAgIG15ICVTZWxlY3Rpb25zRGF0YTsKICAgICAgICAlU2VsZWN0aW9uc0RhdGEgPSAkU3VydmV5T2JqZWN0LT5fU2VuZENvbmRpdGlvbkdldEZpZWxkU2VsZWN0aW9ucygKICAgICAgICAgICAgRmllbGROYW1lID0+ICRGaWVsZE5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEpTT05TdHJpbmcgPSAkSlNPTk9iamVjdC0+RW5jb2RlKAogICAgICAgICAgICBEYXRhID0+ICcnLAogICAgICAgICk7CgogICAgICAgIGlmICglU2VsZWN0aW9uc0RhdGEpIHsKICAgICAgICAgICAgbXkgJEN1c3RvbWVyVXNlckNvbmRpdGlvbnNTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlU2VsZWN0aW9uc0RhdGEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICIke0ZpZWxkTmFtZX1bXSIsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgID0+IDYsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgID0+ICdNb2Rlcm5pemUgVzUwcGMnLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiBcQFNlbGVjdGVkVmFsdWVzLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJUpTT05EYXRhID0gKAogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgPT4gXDEsCiAgICAgICAgICAgICAgICBTZWxlY3RGaWVsZCA9PiAkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc1N0cmcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkSlNPTlN0cmluZyA9ICRKU09OT2JqZWN0LT5FbmNvZGUoCiAgICAgICAgICAgICAgICBEYXRhID0+IFwlSlNPTkRhdGEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEpTT05TdHJpbmcsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9Cn0KCnN1YiBfU3VydmV5RWRpdE1hc2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlSlNEYXRhOwoKICAgIG15ICVTZXJ2ZXJFcnJvcjsKICAgIGlmICggJFBhcmFte1NlcnZlckVycm9yfSApIHsKICAgICAgICAlU2VydmVyRXJyb3IgPSAleyAkUGFyYW17U2VydmVyRXJyb3J9IH07CiAgICB9CgogICAgbXkgJUZvcm1FbGVtZW50czsKICAgIGlmICggJFBhcmFte0Zvcm1FbGVtZW50c30gKSB7CiAgICAgICAgJUZvcm1FbGVtZW50cyA9ICV7ICRQYXJhbXtGb3JtRWxlbWVudHN9IH07CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgIFRpdGxlICAgICA9PiBUcmFuc2xhdGFibGUoJ1N1cnZleSBFZGl0JyksCiAgICAgICAgVHlwZSAgICAgID0+ICdTbWFsbCcsCiAgICAgICAgQm9keUNsYXNzID0+ICdQb3B1cCcsCiAgICApOwoKICAgIG15ICVRdWV1ZXMgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpLT5HZXRBbGxRdWV1ZXMoKTsKICAgIG15ICRRdWV1ZVN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVF1ZXVlcywKICAgICAgICBOYW1lICAgICAgICAgPT4gJ1F1ZXVlcycsCiAgICAgICAgU2l6ZSAgICAgICAgID0+IDYsCiAgICAgICAgTXVsdGlwbGUgICAgID0+IDEsCiAgICAgICAgUG9zc2libGVOb25lID0+IDAsCiAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRGb3JtRWxlbWVudHN7UXVldWVzfSB8fCAkUGFyYW17UXVldWVzfSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgaWYgdGhlIGZvciBzZW5kIGNvbmRpdGlvbiB0aWNrZXQgdHlwZSBjaGVjayBpcyBlbmFibGVkCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJykgKSB7CgogICAgICAgICMgZ2V0IHRoZSB2YWxpZCB0aWNrZXQgdHlwZSBsaXN0CiAgICAgICAgbXkgJVRpY2tldFR5cGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKS0+VHlwZUxpc3QoKTsKCiAgICAgICAgIyBjaGVjayBpZiBhIHRpY2tldCB0eXBlIGlzIGF2YWlsYWJsZQogICAgICAgIGlmICglVGlja2V0VHlwZXMpIHsKCiAgICAgICAgICAgICMgYnVpbGQgdGlja2V0IHR5cGUgc2VsZWN0aW9uCiAgICAgICAgICAgIG15ICRUaWNrZXRUeXBlU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlVGlja2V0VHlwZXMsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1RpY2tldFR5cGVJRHMnLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDYsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkRm9ybUVsZW1lbnRze1RpY2tldFR5cGVJRHN9IHx8ICRQYXJhbXtUaWNrZXRUeXBlSURzfSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnVGlja2V0VHlwZXMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGlja2V0VHlwZVN0cmcgPT4gJFRpY2tldFR5cGVTdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiB0aGUgc2VuZCBjb25kaXRpb24gc2VydmljZSBjaGVjayBpcyBlbmFibGVkCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJykgKSB7CgogICAgICAgICMgZ2V0IHRoZSB2YWxpZCBzZXJ2aWNlIGxpc3QKICAgICAgICBteSAlU2VydmljZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpLT5TZXJ2aWNlTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBhIHNlcnZpY2UgaXMgYXZhaWxhYmxlCiAgICAgICAgaWYgKCVTZXJ2aWNlcykgewoKICAgICAgICAgICAgIyBidWlsZCBzZXJ2aWNlIHNlbGVjdGlvbgogICAgICAgICAgICBteSAkU2VydmljZVN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVNlcnZpY2VzLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdTZXJ2aWNlSURzJywKICAgICAgICAgICAgICAgIFNpemUgICAgICAgICA9PiA2LAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDEsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMCwKICAgICAgICAgICAgICAgIFNvcnQgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJEZvcm1FbGVtZW50c3tTZXJ2aWNlSURzfSB8fCAkUGFyYW17U2VydmljZUlEc30sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1RpY2tldFNlcnZpY2VzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFNlcnZpY2VTdHJnID0+ICRTZXJ2aWNlU3RyZywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgQ2hlY2sgc2VuZCBjb25kaXRpb24gYnkgQ3VzdG9tZXJVc2VyIGZpZWxkcy4KICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJykgKSB7CgogICAgICAgIG15ICVDdXN0b21lckZpZWxkc0NvbmZpZyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycpIH07CiAgICAgICAgbXkgQEN1c3RvbWVyRmllbGRzOwoKICAgICAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKICAgICAgICBDVVNUT01FUkZJRUxEOgogICAgICAgIGZvciBteSAkQ3VzdG9tZXJGaWVsZCAoIHNvcnQga2V5cyAlQ3VzdG9tZXJGaWVsZHNDb25maWcgKSB7CiAgICAgICAgICAgIG5leHQgQ1VTVE9NRVJGSUVMRCBpZiAhJEN1c3RvbWVyRmllbGRzQ29uZmlneyRDdXN0b21lckZpZWxkfTsKICAgICAgICAgICAgbmV4dCBDVVNUT01FUkZJRUxEIGlmICEkU3VydmV5T2JqZWN0LT5fU2VuZENvbmRpdGlvbkNoZWNrQ3VzdG9tZXJGaWVsZCggRmllbGROYW1lID0+ICRDdXN0b21lckZpZWxkICk7CgogICAgICAgICAgICBwdXNoIEBDdXN0b21lckZpZWxkcywgJEN1c3RvbWVyRmllbGQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoQEN1c3RvbWVyRmllbGRzKSB7CgogICAgICAgICAgICBteSAkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkc1N0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcQEN1c3RvbWVyRmllbGRzLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDdXN0b21lclVzZXJDb25kaXRpb25zJywKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkSlNEYXRhe0N1c3RvbWVyVXNlckNvbmRpdGlvbnN9ID0gJEZvcm1FbGVtZW50c3tDdXN0b21lclVzZXJDb25kaXRpb25zfSB8fCAkUGFyYW17Q3VzdG9tZXJVc2VyQ29uZGl0aW9uc307CiAgICAgICAgICAgICRKU0RhdGF7Q3VzdG9tZXJVc2VyQ29uZGl0aW9uRXJyb3JzfSA9ICRTZXJ2ZXJFcnJvcntDdXN0b21lclVzZXJDb25kaXRpb25FcnJvcnN9IHx8ICcnOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTZW5kQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRzU3RyZyA9PiAkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkc1N0cmcsCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyAgICAgICAgICAgPT4gJEZvcm1FbGVtZW50c3tDdXN0b21lclVzZXJDb25kaXRpb25zfQogICAgICAgICAgICAgICAgICAgICAgICB8fCAkUGFyYW17Q3VzdG9tZXJVc2VyQ29uZGl0aW9uc30sCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VyQ29uZGl0aW9uRXJyb3JzID0+ICRTZXJ2ZXJFcnJvcntDdXN0b21lclVzZXJDb25kaXRpb25FcnJvcnN9IHx8ICcnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyByaWNoIHRleHQgZWxlbWVudHMKICAgIG15ICVTdXJ2ZXlFbGVtZW50czsKCiAgICAkU3VydmV5RWxlbWVudHN7SW50cm9kdWN0aW9ufSA9ICRGb3JtRWxlbWVudHN7SW50cm9kdWN0aW9ufSB8fCAkUGFyYW17SW50cm9kdWN0aW9ufTsKCiAgICAkU3VydmV5RWxlbWVudHN7Tm90aWZpY2F0aW9uQm9keX0KICAgICAgICA9ICRGb3JtRWxlbWVudHN7Tm90aWZpY2F0aW9uQm9keX0gfHwgJFBhcmFte05vdGlmaWNhdGlvbkJvZHl9IHx8ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpOb3RpZmljYXRpb25Cb2R5Jyk7CgogICAgJFN1cnZleUVsZW1lbnRze0Rlc2NyaXB0aW9ufSA9ICRGb3JtRWxlbWVudHN7RGVzY3JpcHRpb259IHx8ICRQYXJhbXtEZXNjcmlwdGlvbn0gfHwgJyc7CgogICAgIyBsb2FkIHJpY2ggdGV4dCBlZGl0b3IKICAgIG15ICRSaWNoVGV4dEVkaXRvciA9ICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6OlJpY2hUZXh0Jyk7CiAgICBpZiAoJFJpY2hUZXh0RWRpdG9yKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+U2V0UmljaFRleHRQYXJhbWV0ZXJzKAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICB9CgogICAgIyBjb252ZXJ0IHJlcXVpcmVkIGVsZW1lbnRzIHRvIFJURQogICAgRklFTEQ6CiAgICBmb3IgbXkgJFN1cnZleUZpZWxkICggc29ydCBrZXlzICVTdXJ2ZXlFbGVtZW50cyApIHsKICAgICAgICBuZXh0IEZJRUxEIGlmICEkU3VydmV5RWxlbWVudHN7JFN1cnZleUZpZWxkfTsKCiAgICAgICAgIyBjbGVhbiBIVE1MCiAgICAgICAgbXkgJEhUTUxDb250ZW50ID0KICAgICAgICAgICAgJFN1cnZleUVsZW1lbnRzeyRTdXJ2ZXlGaWVsZH0gPX4gc3tcQVwkaHRtbFwvdGV4dFwkXHMoLiopfXskMX14bXM7CgogICAgICAgIGlmICggISRIVE1MQ29udGVudCAmJiAkUmljaFRleHRFZGl0b3IgKSB7CiAgICAgICAgICAgICRTdXJ2ZXlFbGVtZW50c3skU3VydmV5RmllbGR9ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICAgICAgICAgIFRleHQgICAgICAgICAgID0+ICRTdXJ2ZXlFbGVtZW50c3skU3VydmV5RmllbGR9LAogICAgICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkSFRNTENvbnRlbnQgJiYgISRSaWNoVGV4dEVkaXRvciApIHsKICAgICAgICAgICAgJFN1cnZleUVsZW1lbnRzeyRTdXJ2ZXlGaWVsZH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlRvQXNjaWkoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFN1cnZleUVsZW1lbnRzeyRTdXJ2ZXlGaWVsZH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ludHJvZHVjdGlvbicsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIEludHJvZHVjdGlvbiA9PiAkU3VydmV5RWxlbWVudHN7SW50cm9kdWN0aW9ufSwKICAgICAgICB9LAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdOb3RpZmljYXRpb25Cb2R5JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgTm90aWZpY2F0aW9uQm9keSA9PiAkU3VydmV5RWxlbWVudHN7Tm90aWZpY2F0aW9uQm9keX0sCiAgICAgICAgfSwKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnSW50ZXJuYWxEZXNjcmlwdGlvbicsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICRTdXJ2ZXlFbGVtZW50c3tEZXNjcmlwdGlvbn0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBnZW5lcmF0ZXMgZ2VuZXJpYyBlcnJvcnMgZm9yIEphdmFTY3JpcHQKICAgIGZvciBteSAkTmVlZGVkSXRlbSAoCiAgICAgICAgcXcoIFRpdGxlIEludHJvZHVjdGlvbiBEZXNjcmlwdGlvbiBOb3RpZmljYXRpb25TZW5kZXIgTm90aWZpY2F0aW9uU3ViamVjdCBOb3RpZmljYXRpb25Cb2R5ICkKICAgICAgICApCiAgICB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0dlbmVyaWNFcnJvcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgSXRlbU5hbWUgPT4gJE5lZWRlZEl0ZW0gLiAnRXJyb3InLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgZm9yIG15ICRJdGVtICggc29ydCBrZXlzICVTZXJ2ZXJFcnJvciApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJpY1NlcnZlckVycm9yJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBJdGVtTmFtZSA9PiAkSXRlbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnSlNEYXRhJywKICAgICAgICBWYWx1ZSA9PiBcJUpTRGF0YSwKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudFN1cnZleUVkaXQnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgUXVldWVTdHJpbmcgICAgICAgID0+ICRRdWV1ZVN0cmluZywKICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyID0+ICRGb3JtRWxlbWVudHN7Tm90aWZpY2F0aW9uU2VuZGVyfQogICAgICAgICAgICAgICAgfHwgJFBhcmFte05vdGlmaWNhdGlvblNlbmRlcn0KICAgICAgICAgICAgICAgIHx8ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpOb3RpZmljYXRpb25TZW5kZXInKSwKICAgICAgICAgICAgTm90aWZpY2F0aW9uU3ViamVjdCA9PiAkRm9ybUVsZW1lbnRze05vdGlmaWNhdGlvblN1YmplY3R9CiAgICAgICAgICAgICAgICB8fCAkUGFyYW17Tm90aWZpY2F0aW9uU3ViamVjdH0KICAgICAgICAgICAgICAgIHx8ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpOb3RpZmljYXRpb25TdWJqZWN0JyksCiAgICAgICAgICAgICVTZXJ2ZXJFcnJvciwKICAgICAgICAgICAgJUZvcm1FbGVtZW50cywKICAgICAgICB9LAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgY29tbW9uIG9iamVjdHMKICAgICV7JFNlbGZ9ID0gJVBhcmFtOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKICAgIGZvciBteSAkS2V5IChxdyhTdXJ2ZXlJRCBRdWVzdGlvbklEIEFuc3dlcklEKSkgewogICAgICAgICRHZXRQYXJhbXskS2V5fSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRLZXkgKTsKICAgIH0KCiAgICBteSAkU3VydmV5RXhpc3RzID0gJ25vJzsKICAgIGlmICggJEdldFBhcmFte1N1cnZleUlEfSApIHsKICAgICAgICAkU3VydmV5RXhpc3RzID0gJFN1cnZleU9iamVjdC0+RWxlbWVudEV4aXN0cygKICAgICAgICAgICAgRWxlbWVudElEID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgIEVsZW1lbnQgICA9PiAnU3VydmV5JwogICAgICAgICk7CiAgICB9CgogICAgbXkgJFF1ZXN0aW9uRXhpc3RzID0gJ25vJzsKICAgIGlmICggJEdldFBhcmFte1F1ZXN0aW9uSUR9ICkgewogICAgICAgICRRdWVzdGlvbkV4aXN0cyA9ICRTdXJ2ZXlPYmplY3QtPkVsZW1lbnRFeGlzdHMoCiAgICAgICAgICAgIEVsZW1lbnRJRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgIEVsZW1lbnQgICA9PiAnUXVlc3Rpb24nCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkQW5zd2VyRXhpc3RzID0gJ25vJzsKICAgIGlmICggJEdldFBhcmFte0Fuc3dlcklEfSApIHsKICAgICAgICAkQW5zd2VyRXhpc3RzID0gJFN1cnZleU9iamVjdC0+RWxlbWVudEV4aXN0cygKICAgICAgICAgICAgRWxlbWVudElEID0+ICRHZXRQYXJhbXtBbnN3ZXJJRH0sCiAgICAgICAgICAgIEVsZW1lbnQgICA9PiAnQW5zd2VyJwogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBxdWVzdGlvbiBhZGQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdRdWVzdGlvbkFkZCcgKSB7CgogICAgICAgIG15ICRRdWVzdGlvbiAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICJRdWVzdGlvbiIgKTsKICAgICAgICBteSAkVHlwZSAgICAgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiVHlwZSIgKTsKICAgICAgICBteSAkQW5zd2VyUmVxdWlyZWQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQW5zd2VyUmVxdWlyZWQnICk7CgogICAgICAgIGlmICggJEFuc3dlclJlcXVpcmVkICYmICRBbnN3ZXJSZXF1aXJlZCBlcSAnTm8nICkgewogICAgICAgICAgICAkQW5zd2VyUmVxdWlyZWQgPSAwOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEFuc3dlclJlcXVpcmVkID0gMTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgc3VydmV5IGV4aXN0cwogICAgICAgIGlmICggJFN1cnZleUV4aXN0cyBuZSAnWWVzJyApIHsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJyksCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJVNlcnZlckVycm9yOwogICAgICAgIGlmICgkUXVlc3Rpb24pIHsKICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25BZGQoCiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCAgICAgICA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICAgICAgUXVlc3Rpb24gICAgICAgPT4gJFF1ZXN0aW9uLAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgPT4gJFR5cGUsCiAgICAgICAgICAgICAgICBBbnN3ZXJSZXF1aXJlZCA9PiAkQW5zd2VyUmVxdWlyZWQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uU29ydCgKICAgICAgICAgICAgICAgIFN1cnZleUlEID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VydmVyRXJyb3J7UXVlc3Rpb259ID0gMTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkU2VsZi0+X01hc2tRdWVzdGlvbk92ZXJ2aWV3KAogICAgICAgICAgICBTdXJ2ZXlJRCAgICA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICBTZXJ2ZXJFcnJvciA9PiBcJVNlcnZlckVycm9yLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBxdWVzdGlvbiBkZWxldGUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdRdWVzdGlvbkRlbGV0ZScgKSB7CgogICAgICAgICMgY2hlY2sgaWYgc3VydmV5IGFuZCBxdWVzdGlvbiBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFF1ZXN0aW9uRXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnKSwKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uRGVsZXRlKAogICAgICAgICAgICBTdXJ2ZXlJRCAgID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJEdldFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICk7CiAgICAgICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25Tb3J0KAogICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07U3ViYWN0aW9uPVN1cnZleUVkaXQ7U3VydmV5SUQ9JEdldFBhcmFte1N1cnZleUlEfSNRdWVzdGlvbiIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHF1ZXN0aW9uIHVwCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnUXVlc3Rpb25VcCcgKSB7CgogICAgICAgICMgY2hlY2sgaWYgc3VydmV5IGFuZCBxdWVzdGlvbiBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFF1ZXN0aW9uRXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnKSwKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uU29ydCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICApOwogICAgICAgICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uVXAoCiAgICAgICAgICAgIFN1cnZleUlEICAgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTtTdWJhY3Rpb249U3VydmV5RWRpdDtTdXJ2ZXlJRD0kR2V0UGFyYW17U3VydmV5SUR9I1F1ZXN0aW9uIiwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgcXVlc3Rpb24gZG93bgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1F1ZXN0aW9uRG93bicgKSB7CgogICAgICAgICMgY2hlY2sgaWYgc3VydmV5IGFuZCBxdWVzdGlvbiBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFF1ZXN0aW9uRXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnKSwKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uU29ydCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICApOwogICAgICAgICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uRG93bigKICAgICAgICAgICAgU3VydmV5SUQgICA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259O1N1YmFjdGlvbj1TdXJ2ZXlFZGl0O1N1cnZleUlEPSRHZXRQYXJhbXtTdXJ2ZXlJRH0jUXVlc3Rpb24iLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBxdWVzdGlvbiBlZGl0CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnUXVlc3Rpb25FZGl0JyApIHsKCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXkgYW5kIHF1ZXN0aW9uIGV4aXN0cwogICAgICAgIGlmICggJFN1cnZleUV4aXN0cyBuZSAnWWVzJyB8fCAkUXVlc3Rpb25FeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uIScpLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkU2VsZi0+X01hc2tRdWVzdGlvbkVkaXQoCiAgICAgICAgICAgIFN1cnZleUlEICAgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHF1ZXN0aW9uIHNhdmUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdRdWVzdGlvblNhdmUnICkgewoKICAgICAgICBteSAkUXVlc3Rpb24gICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUXVlc3Rpb24nICk7CiAgICAgICAgbXkgJEFuc3dlclJlcXVpcmVkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Fuc3dlclJlcXVpcmVkJyApOwoKICAgICAgICBpZiAoICRBbnN3ZXJSZXF1aXJlZCAmJiAkQW5zd2VyUmVxdWlyZWQgZXEgJ05vJyApIHsKICAgICAgICAgICAgJEFuc3dlclJlcXVpcmVkID0gMDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRBbnN3ZXJSZXF1aXJlZCA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSBhbmQgcXVlc3Rpb24gZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnIHx8ICRRdWVzdGlvbkV4aXN0cyBuZSAnWWVzJyApIHsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJyksCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJVNlcnZlckVycm9yOwogICAgICAgIGlmICgkUXVlc3Rpb24pIHsKICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25VcGRhdGUoCiAgICAgICAgICAgICAgICBRdWVzdGlvbklEICAgICA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCAgICAgICA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICAgICAgUXVlc3Rpb24gICAgICAgPT4gJFF1ZXN0aW9uLAogICAgICAgICAgICAgICAgQW5zd2VyUmVxdWlyZWQgPT4gJEFuc3dlclJlcXVpcmVkLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5fTWFza1F1ZXN0aW9uRWRpdCgKICAgICAgICAgICAgICAgIFN1cnZleUlEICAgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJEdldFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlcnZlckVycm9ye1F1ZXN0aW9uU2VydmVyRXJyb3J9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkU2VsZi0+X01hc2tRdWVzdGlvbkVkaXQoCiAgICAgICAgICAgIFN1cnZleUlEICAgID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgIFF1ZXN0aW9uSUQgID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgU2VydmVyRXJyb3IgPT4gXCVTZXJ2ZXJFcnJvciwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgYW5zd2VyIGFkZAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Fuc3dlckFkZCcgKSB7CgogICAgICAgIG15ICRBbnN3ZXIgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiQW5zd2VyIiApOwoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSBhbmQgcXVlc3Rpb24gZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnIHx8ICRRdWVzdGlvbkV4aXN0cyBuZSAnWWVzJyApIHsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJyksCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJVNlcnZlckVycm9yOwogICAgICAgIGlmICggJEFuc3dlciB8fCAkQW5zd2VyIGVxICcwJyApIHsKICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+QW5zd2VyQWRkKAogICAgICAgICAgICAgICAgU3VydmV5SUQgICA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICBBbnN3ZXIgICAgID0+ICRBbnN3ZXIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X01hc2tRdWVzdGlvbkVkaXQoCiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCAgID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZXJ2ZXJFcnJvcntBbnN3ZXJTZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRTZWxmLT5fTWFza1F1ZXN0aW9uRWRpdCgKICAgICAgICAgICAgU3VydmV5SUQgICAgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICAgICAgUXVlc3Rpb25JRCAgPT4gJEdldFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICAgICBTZXJ2ZXJFcnJvciA9PiBcJVNlcnZlckVycm9yLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBhbnN3ZXIgZGVsZXRlCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQW5zd2VyRGVsZXRlJyApIHsKCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXksIHF1ZXN0aW9uIGFuZCBhbnN3ZXIgZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnIHx8ICRRdWVzdGlvbkV4aXN0cyBuZSAnWWVzJyB8fCAkQW5zd2VyRXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyIScpLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJFN1cnZleU9iamVjdC0+QW5zd2VyRGVsZXRlKAogICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgQW5zd2VySUQgICA9PiAkR2V0UGFyYW17QW5zd2VySUR9LAogICAgICAgICk7CiAgICAgICAgJFN1cnZleU9iamVjdC0+QW5zd2VyU29ydCgKICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICBPUCA9PgogICAgICAgICAgICAgICAgIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07U3ViYWN0aW9uPVF1ZXN0aW9uRWRpdDtTdXJ2ZXlJRD0kR2V0UGFyYW17U3VydmV5SUR9O1F1ZXN0aW9uSUQ9JEdldFBhcmFte1F1ZXN0aW9uSUR9I0Fuc3dlciIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGFuc3dlciB1cAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Fuc3dlclVwJyApIHsKCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXksIHF1ZXN0aW9uIGFuZCBhbnN3ZXIgZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnIHx8ICRRdWVzdGlvbkV4aXN0cyBuZSAnWWVzJyB8fCAkQW5zd2VyRXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyIScpLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJFN1cnZleU9iamVjdC0+QW5zd2VyU29ydCgKICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgKTsKICAgICAgICAkU3VydmV5T2JqZWN0LT5BbnN3ZXJVcCgKICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgIEFuc3dlcklEICAgPT4gJEdldFBhcmFte0Fuc3dlcklEfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+CiAgICAgICAgICAgICAgICAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTtTdWJhY3Rpb249UXVlc3Rpb25FZGl0O1N1cnZleUlEPSRHZXRQYXJhbXtTdXJ2ZXlJRH07UXVlc3Rpb25JRD0kR2V0UGFyYW17UXVlc3Rpb25JRH0jQW5zd2VyIiwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgYW5zd2VyIGRvd24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBbnN3ZXJEb3duJyApIHsKCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXksIHF1ZXN0aW9uIGFuZCBhbnN3ZXIgZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnIHx8ICRRdWVzdGlvbkV4aXN0cyBuZSAnWWVzJyB8fCAkQW5zd2VyRXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyIScpLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJFN1cnZleU9iamVjdC0+QW5zd2VyU29ydCgKICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgKTsKICAgICAgICAkU3VydmV5T2JqZWN0LT5BbnN3ZXJEb3duKAogICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgQW5zd2VySUQgICA9PiAkR2V0UGFyYW17QW5zd2VySUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4KICAgICAgICAgICAgICAgICJBY3Rpb249JFNlbGYtPntBY3Rpb259O1N1YmFjdGlvbj1RdWVzdGlvbkVkaXQ7U3VydmV5SUQ9JEdldFBhcmFte1N1cnZleUlEfTtRdWVzdGlvbklEPSRHZXRQYXJhbXtRdWVzdGlvbklEfSNBbnN3ZXIiLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBhbnN3ZXIgZWRpdAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Fuc3dlckVkaXQnICkgewoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSwgcXVlc3Rpb24gYW5kIGFuc3dlciBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFF1ZXN0aW9uRXhpc3RzIG5lICdZZXMnIHx8ICRBbnN3ZXJFeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJyksCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRTZWxmLT5fTWFza0Fuc3dlckVkaXQoCiAgICAgICAgICAgIFN1cnZleUlEICAgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgIEFuc3dlcklEICAgPT4gJEdldFBhcmFte0Fuc3dlcklEfSwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgYW5zd2VyIHNhdmUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBbnN3ZXJTYXZlJyApIHsKCiAgICAgICAgbXkgJEFuc3dlciA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICJBbnN3ZXIiICk7CgogICAgICAgICMgY2hlY2sgaWYgc3VydmV5LCBxdWVzdGlvbiBhbmQgYW5zd2VyIGV4aXN0cwogICAgICAgIGlmICggJFN1cnZleUV4aXN0cyBuZSAnWWVzJyB8fCAkUXVlc3Rpb25FeGlzdHMgbmUgJ1llcycgfHwgJEFuc3dlckV4aXN0cyBuZSAnWWVzJyApIHsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnKSwKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAlU2VydmVyRXJyb3I7CiAgICAgICAgaWYgKCAkQW5zd2VyIHx8ICRBbnN3ZXIgZXEgJzAnICkgewogICAgICAgICAgICAkU3VydmV5T2JqZWN0LT5BbnN3ZXJVcGRhdGUoCiAgICAgICAgICAgICAgICBBbnN3ZXJJRCAgID0+ICRHZXRQYXJhbXtBbnN3ZXJJRH0sCiAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgIEFuc3dlciAgICAgPT4gJEFuc3dlciwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4KICAgICAgICAgICAgICAgICAgICAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTtTdWJhY3Rpb249UXVlc3Rpb25FZGl0O1N1cnZleUlEPSRHZXRQYXJhbXtTdXJ2ZXlJRH07UXVlc3Rpb25JRD0kR2V0UGFyYW17UXVlc3Rpb25JRH0jQW5zd2VyIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlcnZlckVycm9ye0Fuc3dlclNlcnZlckVycm9yfSA9ICdTZXZlckVycm9yJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkU2VsZi0+X01hc2tBbnN3ZXJFZGl0KAogICAgICAgICAgICBTdXJ2ZXlJRCAgICA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICBRdWVzdGlvbklEICA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgIEFuc3dlcklEICAgID0+ICRHZXRQYXJhbXtBbnN3ZXJJRH0sCiAgICAgICAgICAgIFNlcnZlckVycm9yID0+IFwlU2VydmVyRXJyb3IsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHF1ZXN0aW9uIG92ZXJ2aWV3CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICEkR2V0UGFyYW17U3VydmV5SUR9ICkgewoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBpZiBzdXJ2ZXkgZXhpc3RzCiAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkU2VsZi0+X01hc2tRdWVzdGlvbk92ZXJ2aWV3KAogICAgICAgIFN1cnZleUlEID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICApOwp9CgpzdWIgX01hc2tRdWVzdGlvbk92ZXJ2aWV3IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJVNlcnZlckVycm9yOwogICAgaWYgKCAkUGFyYW17U2VydmVyRXJyb3J9ICkgewogICAgICAgICVTZXJ2ZXJFcnJvciA9ICV7ICRQYXJhbXtTZXJ2ZXJFcnJvcn0gfTsKICAgIH0KCiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgaWYgKCAhJFBhcmFte1N1cnZleUlEfSApIHsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICBUaXRsZSAgICAgPT4gVHJhbnNsYXRhYmxlKCdTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnKSwKICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICk7CgogICAgIyBnZXQgc3VydmV5IG9iamVjdAogICAgbXkgJFN1cnZleU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKCiAgICAjIGdldCBhbGwgYXR0cmlidXRlcyBvZiB0aGUgc3VydmV5CiAgICBteSAlU3VydmV5ID0gJFN1cnZleU9iamVjdC0+U3VydmV5R2V0KAogICAgICAgIFN1cnZleUlEID0+ICRQYXJhbXtTdXJ2ZXlJRH0sCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1N1cnZleUVkaXRRdWVzdGlvbnMnLAogICAgICAgIERhdGEgPT4gXCVTdXJ2ZXksCiAgICApOwoKICAgIG15IEBMaXN0ID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25MaXN0KAogICAgICAgIFN1cnZleUlEID0+ICRQYXJhbXtTdXJ2ZXlJRH0sCiAgICApOwoKICAgIGlmICggJFN1cnZleXtTdGF0dXN9ICYmICRTdXJ2ZXl7U3RhdHVzfSBlcSAnTmV3JyApIHsKCiAgICAgICAgbXkgJEFycmF5SGFzaFJlZiA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgICAgPT4gJ1llc05vJywKICAgICAgICAgICAgICAgIFZhbHVlICAgID0+IFRyYW5zbGF0YWJsZSgnWWVzL05vJyksCiAgICAgICAgICAgICAgICBTZWxlY3RlZCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAnUmFkaW8nLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdSYWRpbyAoTGlzdCknKSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NoZWNrYm94JywKICAgICAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnQ2hlY2tib3ggKExpc3QpJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICdUZXh0YXJlYScsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ1RleHRhcmVhJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICdOUFMnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdOZXQgUHJvbW90ZXIgU2NvcmUnKSwKICAgICAgICAgICAgfSwKICAgICAgICBdOwoKICAgICAgICBteSAkU2VsZWN0aW9uVHlwZSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+ICRBcnJheUhhc2hSZWYsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJ1R5cGUnLAogICAgICAgICAgICBJRCAgICAgICAgICAgID0+ICdUeXBlJywKICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAnWWVzL05vJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gICA9PiAxLAogICAgICAgICAgICBUaXRsZSAgICAgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUXVlc3Rpb24gVHlwZScpLAogICAgICAgICAgICBDbGFzcyAgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgICRBcnJheUhhc2hSZWYgPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgICAgID0+ICdZZXMnLAogICAgICAgICAgICAgICAgVmFsdWUgICAgPT4gVHJhbnNsYXRhYmxlKCdZZXMnKSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICdObycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ05vJyksCiAgICAgICAgICAgIH0KICAgICAgICBdOwoKICAgICAgICBteSAkQW5zd2VyUmVxdWlyZWRTZWxlY3QgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiAkQXJyYXlIYXNoUmVmLAogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICdBbnN3ZXJSZXF1aXJlZCcsCiAgICAgICAgICAgIElEICAgICAgICAgICAgPT4gJ0Fuc3dlclJlcXVpcmVkJywKICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAnWWVzJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gICA9PiAxLAogICAgICAgICAgICBDbGFzcyAgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgIG15ICRRdWVzdGlvbkVycm9yQ2xhc3MgPSAnJzsKICAgICAgICBpZiAoICRTZXJ2ZXJFcnJvcntRdWVzdGlvbn0gKSB7CiAgICAgICAgICAgICRRdWVzdGlvbkVycm9yQ2xhc3MgPSAnU2VydmVyRXJyb3InOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleUFkZFF1ZXN0aW9uJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCAgICAgICAgICAgICA9PiAkUGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICAgICAgU2VsZWN0aW9uVHlwZSAgICAgICAgPT4gJFNlbGVjdGlvblR5cGUsCiAgICAgICAgICAgICAgICBBbnN3ZXJSZXF1aXJlZFNlbGVjdCA9PiAkQW5zd2VyUmVxdWlyZWRTZWxlY3QsCiAgICAgICAgICAgICAgICBRdWVzdGlvbkVycm9yQ2xhc3MgICA9PiAkUXVlc3Rpb25FcnJvckNsYXNzLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggc2NhbGFyIEBMaXN0ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleVF1ZXN0aW9uc1RhYmxlJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3VydmV5U3RhdHVzQ29sdW1uJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleURlbGV0ZUNvbHVtbicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJENvdW50ZXIgPSAwOwoKICAgICAgICAgICAgZm9yIG15ICRRdWVzdGlvbiAoQExpc3QpIHsKICAgICAgICAgICAgICAgIG15ICRBbnN3ZXJDb3VudCA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlckNvdW50KAogICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRDbGFzczsKICAgICAgICAgICAgICAgIG15ICRDbGFzc1VwOwogICAgICAgICAgICAgICAgbXkgJENsYXNzRG93bjsKCiAgICAgICAgICAgICAgICBpZiAoICEkQ291bnRlciApIHsKICAgICAgICAgICAgICAgICAgICAkQ2xhc3NVcCA9ICdEaXNhYmxlZCc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAkQ291bnRlciA9PSAkI0xpc3QgKSB7CiAgICAgICAgICAgICAgICAgICAgJENsYXNzRG93biA9ICdEaXNhYmxlZCc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJFN0YXR1cyA9IFRyYW5zbGF0YWJsZSgnQ29tcGxldGUnKTsKCiAgICAgICAgICAgICAgICBpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdSYWRpbycgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQW5zd2VyQ291bnQgPCAyICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ2xhc3MgID0gJ1dhcm5pbmcnOwogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHVzID0gVHJhbnNsYXRhYmxlKCdJbmNvbXBsZXRlJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnQ2hlY2tib3gnICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJEFuc3dlckNvdW50IDwgMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENsYXNzICA9ICdXYXJuaW5nJzsKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXR1cyA9IFRyYW5zbGF0YWJsZSgnSW5jb21wbGV0ZScpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ05QUycgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQW5zd2VyQ291bnQgPCAyICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ2xhc3MgID0gJ1dhcm5pbmcnOwogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHVzID0gVHJhbnNsYXRhYmxlKCdJbmNvbXBsZXRlJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRBbnN3ZXJSZXF1aXJlZCA9ICRRdWVzdGlvbi0+e0Fuc3dlclJlcXVpcmVkfSA/ICdZZXMnIDogJ05vJzsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTdXJ2ZXlRdWVzdGlvbnNSb3cnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAleyRRdWVzdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1cyAgICAgICAgID0+ICRTdGF0dXMsCiAgICAgICAgICAgICAgICAgICAgICAgIEFuc3dlclJlcXVpcmVkID0+ICRBbnN3ZXJSZXF1aXJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgPT4gJENsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzc1VwICAgICAgICA9PiAkQ2xhc3NVcCwKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NEb3duICAgICAgPT4gJENsYXNzRG93biwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleVF1ZXN0aW9uc0RlbGV0ZUJ1dHRvbicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiAkUXVlc3Rpb24sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdXJ2ZXlOb1F1ZXN0aW9uc1NhdmVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gNSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgIH0KICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTdXJ2ZXlRdWVzdGlvbnNUYWJsZScsCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKICAgICAgICBteSAkQ291bnRlcjsKICAgICAgICBmb3IgbXkgJFF1ZXN0aW9uIChATGlzdCkgewoKICAgICAgICAgICAgbXkgJENsYXNzVXA7CiAgICAgICAgICAgIG15ICRDbGFzc0Rvd247CgogICAgICAgICAgICBpZiAoICEkQ291bnRlciApIHsKICAgICAgICAgICAgICAgICRDbGFzc1VwID0gJ0Rpc2FibGVkJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkQ291bnRlciAmJiAkQ291bnRlciA9PSAkI0xpc3QgKSB7CiAgICAgICAgICAgICAgICAkQ2xhc3NEb3duID0gJ0Rpc2FibGVkJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJEFuc3dlclJlcXVpcmVkID0gJFF1ZXN0aW9uLT57QW5zd2VyUmVxdWlyZWR9ID8gJ1llcycgOiAnTm8nOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdXJ2ZXlRdWVzdGlvbnNTYXZlZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAleyRRdWVzdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQW5zd2VyUmVxdWlyZWQgPT4gJEFuc3dlclJlcXVpcmVkLAogICAgICAgICAgICAgICAgICAgIENsYXNzVXAgICAgICAgID0+ICRDbGFzc1VwLAogICAgICAgICAgICAgICAgICAgIENsYXNzRG93biAgICAgID0+ICRDbGFzc0Rvd24sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICB9CiAgICB9CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIFN1cnZleUlEID0+ICRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgfSwKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgX01hc2tRdWVzdGlvbkVkaXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlU2VydmVyRXJyb3I7CiAgICBpZiAoICRQYXJhbXtTZXJ2ZXJFcnJvcn0gKSB7CiAgICAgICAgJVNlcnZlckVycm9yID0gJXsgJFBhcmFte1NlcnZlckVycm9yfSB9OwogICAgfQoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIG91dHB1dCBoZWFkZXIKICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgVGl0bGUgICAgID0+IFRyYW5zbGF0YWJsZSgnUXVlc3Rpb24gRWRpdCcpLAogICAgICAgIFR5cGUgICAgICA9PiAnU21hbGwnLAogICAgICAgIEJvZHlDbGFzcyA9PiAnUG9wdXAnLAogICAgKTsKCiAgICAjIGdldCBzdXJ2ZXkgb2JqZWN0CiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoCiAgICAgICAgU3VydmV5SUQgPT4gJFBhcmFte1N1cnZleUlEfSwKICAgICk7CiAgICBteSAlUXVlc3Rpb24gPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkdldCgKICAgICAgICBRdWVzdGlvbklEID0+ICRQYXJhbXtRdWVzdGlvbklEfSwKICAgICk7CgogICAgbXkgJEFycmF5SGFzaFJlZiA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdZZXMnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ1llcycpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnTm8nLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ05vJyksCiAgICAgICAgfQogICAgXTsKCiAgICBpZiAoICRRdWVzdGlvbntBbnN3ZXJSZXF1aXJlZH0gKSB7CiAgICAgICAgJEFycmF5SGFzaFJlZi0+WzBde1NlbGVjdGVkfSA9IDE7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkQXJyYXlIYXNoUmVmLT5bMV17U2VsZWN0ZWR9ID0gMTsKICAgIH0KCiAgICBteSAkQW5zd2VyUmVxdWlyZWRTZWxlY3QgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgID0+ICRBcnJheUhhc2hSZWYsCiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnQW5zd2VyUmVxdWlyZWQnLAogICAgICAgIElEICAgICAgICAgICAgPT4gJ0Fuc3dlclJlcXVpcmVkJywKICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICdZZXMnLAogICAgICAgIFRyYW5zbGF0aW9uICAgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIHByaW50IHRoZSBtYWluIGJvZHkKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1F1ZXN0aW9uRWRpdCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIEFuc3dlclJlcXVpcmVkU2VsZWN0ID0+ICRBbnN3ZXJSZXF1aXJlZFNlbGVjdCwKICAgICAgICAgICAgJVF1ZXN0aW9uLAogICAgICAgICAgICAlU2VydmVyRXJyb3IsCiAgICAgICAgfSwKICAgICk7CgogICAgaWYgKCAkUXVlc3Rpb257VHlwZX0gZXEgJ1llc05vJyApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUXVlc3Rpb25FZGl0VGFibGUnLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1F1ZXN0aW9uRWRpdFllc25vJywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkUXVlc3Rpb257VHlwZX0gZXEgJ1JhZGlvJyB8fCAkUXVlc3Rpb257VHlwZX0gZXEgJ0NoZWNrYm94JyB8fCAkUXVlc3Rpb257VHlwZX0gZXEgJ05QUycgKSB7CgogICAgICAgIG15ICRUeXBlID0gJFF1ZXN0aW9ue1R5cGV9OwogICAgICAgIG15IEBMaXN0ID0gJFN1cnZleU9iamVjdC0+QW5zd2VyTGlzdCgKICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkUGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoIHNjYWxhciBATGlzdCApIHsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUXVlc3Rpb25FZGl0VGFibGUnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAkU3VydmV5e1N0YXR1c30gZXEgJ05ldycgKSB7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUXVlc3Rpb25FZGl0VGFibGVEZWxldGUnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRDb3VudGVyID0gMDsKICAgICAgICAgICAgICAgIGZvciBteSAkQW5zd2VyMiAoQExpc3QpIHsKICAgICAgICAgICAgICAgICAgICAkQW5zd2VyMi0+e1N1cnZleUlEfSA9ICRQYXJhbXtTdXJ2ZXlJRH07CgogICAgICAgICAgICAgICAgICAgIG15ICRDbGFzc1VwOwogICAgICAgICAgICAgICAgICAgIG15ICRDbGFzc0Rvd247CgogICAgICAgICAgICAgICAgICAgICMgZGlzYWJsZSB1cCBhY3Rpb24gb24gZmlyc3Qgcm93CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJENvdW50ZXIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDbGFzc1VwID0gJ0Rpc2FibGVkJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgZGlzYWJsZSBkb3duIGFjdGlvbiBvbiBsYXN0IHJvdwogICAgICAgICAgICAgICAgICAgIGlmICggJENvdW50ZXIgPT0gJCNMaXN0ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ2xhc3NEb3duID0gJ0Rpc2FibGVkJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICJRdWVzdGlvbkVkaXQiIC4gJFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJXskQW5zd2VyMn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc1VwICAgPT4gJENsYXNzVXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc0Rvd24gPT4gJENsYXNzRG93biwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdRdWVzdGlvbkVkaXQnIC4gJFR5cGUgLiAnRGVsZXRlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiAkQW5zd2VyMiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRDb3VudGVyKys7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUXVlc3Rpb25FZGl0QWRkQW5zd2VyJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVF1ZXN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAlU2VydmVyRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBteSAkQ291bnRlcjsKICAgICAgICAgICAgICAgIGZvciBteSAkQW5zd2VyMiAoQExpc3QpIHsKICAgICAgICAgICAgICAgICAgICAkQW5zd2VyMi0+e1N1cnZleUlEfSA9ICRQYXJhbXtTdXJ2ZXlJRH07CgogICAgICAgICAgICAgICAgICAgIG15ICRDbGFzc1VwOwogICAgICAgICAgICAgICAgICAgIG15ICRDbGFzc0Rvd247CgogICAgICAgICAgICAgICAgICAgIGlmICggISRDb3VudGVyICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ2xhc3NVcCA9ICdEaXNhYmxlZCc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoICRDb3VudGVyICYmICRDb3VudGVyID09ICQjTGlzdCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENsYXNzRG93biA9ICdEaXNhYmxlZCc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAiUXVlc3Rpb25FZGl0IiAuICRUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICV7JEFuc3dlcjJ9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NVcCAgID0+ICRDbGFzc1VwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NEb3duID0+ICRDbGFzc0Rvd24sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ05vQW5zd2Vyc1NhdmVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUXVlc3Rpb25FZGl0QWRkQW5zd2VyJywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVRdWVzdGlvbn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkUXVlc3Rpb257VHlwZX0gZXEgJ1RleHRhcmVhJyApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUXVlc3Rpb25FZGl0VGV4dEFyZWEnLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICB9CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHslUGFyYW19LAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfTWFza0Fuc3dlckVkaXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlU2VydmVyRXJyb3I7CiAgICBpZiAoICRQYXJhbXtTZXJ2ZXJFcnJvcn0gKSB7CiAgICAgICAgJVNlcnZlckVycm9yID0gJXsgJFBhcmFte1NlcnZlckVycm9yfSB9OwogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJE91dHB1dDsKICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgVGl0bGUgICAgID0+IFRyYW5zbGF0YWJsZSgnQW5zd2VyIEVkaXQnKSwKICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICk7CgogICAgIyBnZXQgc3VydmV5IG9iamVjdAogICAgbXkgJFN1cnZleU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKCiAgICBteSAlQW5zd2VyID0gJFN1cnZleU9iamVjdC0+QW5zd2VyR2V0KAogICAgICAgIEFuc3dlcklEID0+ICRQYXJhbXtBbnN3ZXJJRH0sCiAgICApOwogICAgJEFuc3dlcntTdXJ2ZXlJRH0gPSAkUGFyYW17U3VydmV5SUR9OwoKICAgIG15ICVRdWVzdGlvbiA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uR2V0KAogICAgICAgIFF1ZXN0aW9uSUQgPT4gJFBhcmFte1F1ZXN0aW9uSUR9LAogICAgKTsKICAgICRQYXJhbXtRdWVzdGlvbn0gPSAkUXVlc3Rpb257UXVlc3Rpb259OwoKICAgICMgcHJpbnQgdGhlIG1haW4gdGFibGUuCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdBbnN3ZXJFZGl0JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJUFuc3dlciwKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlU2VydmVyRXJyb3IsCiAgICAgICAgfSwKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICB9LAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigKICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICApOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRTdXJ2ZXlPdmVydmlldzsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IGNvbW1vbiBvYmplY3RzCiAgICAleyRTZWxmfSA9ICVQYXJhbTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHNob3cgb3ZlcnZpZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiAgICAjIGdldCBzZXNzaW9uIG9iamVjdAogICAgbXkgJFNlc3Npb25PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKTsKCiAgICAjIHN0b3JlIGxhc3Qgc2NyZWVuLCB1c2VkIGZvciBiYWNrLWxpbmtzCiAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuVmlldycsCiAgICAgICAgVmFsdWUgICAgID0+ICRTZWxmLT57UmVxdWVzdGVkVVJMfSwKICAgICk7CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbiBvdmVydmlldwogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICBWYWx1ZSAgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgKTsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICBteSAkQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJTdXJ2ZXk6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBzb3J0aW5nIHBhcmFtZXRlcnMKICAgIG15ICRTb3J0QnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJENvbmZpZy0+eydTb3J0Qnk6OkRlZmF1bHQnfQogICAgICAgIHx8ICdOdW1iZXInOwoKICAgICMgZ2V0IG9yZGVyaW5nIHBhcmFtZXRlcnMKICAgIG15ICRPcmRlckJ5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyQnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CgogICAgIyBpbnZlc3RpZ2F0ZSByZWZyZXNoCiAgICBteSAkUmVmcmVzaCA9ICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfSA/IDYwICogJFNlbGYtPntVc2VyUmVmcmVzaFRpbWV9IDogdW5kZWY7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIG91dHB1dCBoZWFkZXIKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgVGl0bGUgICA9PiBUcmFuc2xhdGFibGUoJ092ZXJ2aWV3JyksCiAgICAgICAgUmVmcmVzaCA9PiAkUmVmcmVzaCwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIENoYW5nZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKICAgICMgaW5pdCBzdXJ2ZXkgc2VhcmNoCiAgICBteSAlU3VydmV5U2VhcmNoOwoKICAgICMgZ2V0IHVzZXIgb2JqZWN0CiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgIyBnZXQgZmlsdGVycyBzdG9yZWQgaW4gdGhlIHVzZXIgcHJlZmVyZW5jZXMKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRVc2VyT2JqZWN0LT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBzdG9yZWQgc3VydmV5IHNlYXJjaAogICAgbXkgJFN0b3JlZFN1cnZleVNlYXJjaCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyktPkRlY29kZSgKICAgICAgICBEYXRhID0+ICRQcmVmZXJlbmNlc3tTdXJ2ZXlTZWFyY2h9LAogICAgKTsKCiAgICAjIG1lcmdlIHN0b3JlZCBzdXJ2ZXkgc2VhcmNoIGlmIHdlIGhhdmUgb25lCiAgICBpZiAoJFN0b3JlZFN1cnZleVNlYXJjaCkgewogICAgICAgICVTdXJ2ZXlTZWFyY2ggPSAleyRTdG9yZWRTdXJ2ZXlTZWFyY2h9OwogICAgfQoKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDaGFuZ2UnICkgewoKICAgICAgICAjIGdldCBmdWxsdGV4dCBzZWFyY2gKICAgICAgICAkU3VydmV5U2VhcmNoe1doYXR9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Z1bGx0ZXh0JyApIHx8ICcnOwoKICAgICAgICAjIGdldCBzdGF0ZXMKICAgICAgICBteSBAU3RhdGVzID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ1N0YXRlcycgKTsKICAgICAgICAkU3VydmV5U2VhcmNoe1N0YXRlc30gPSBcQFN0YXRlczsKCiAgICAgICAgIyBnZXQgY3JlYXRlIHRpbWUKICAgICAgICBpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdUaW1lU2VhcmNoVHlwZScgKSBlcSAnVGltZVNsb3QnICkgewoKICAgICAgICAgICAgJFN1cnZleVNlYXJjaHtUaW1lU2xvdENoZWNrZWR9ICAgICAgPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgICAgICAgICAkU3VydmV5U2VhcmNoe05vUmVzdHJpY3Rpb25DaGVja2VkfSA9ICcnOwoKICAgICAgICAgICAgbXkgJFN1cnZleUNyZWF0ZVRpbWVTdGFydFllYXIgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N1cnZleUNyZWF0ZVRpbWVTdGFydFllYXInICk7CiAgICAgICAgICAgIG15ICRTdXJ2ZXlDcmVhdGVUaW1lU3RhcnRNb250aCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdXJ2ZXlDcmVhdGVUaW1lU3RhcnRNb250aCcgKTsKICAgICAgICAgICAgbXkgJFN1cnZleUNyZWF0ZVRpbWVTdGFydERheSAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N1cnZleUNyZWF0ZVRpbWVTdGFydERheScgKTsKCiAgICAgICAgICAgIG15ICRTdXJ2ZXlDcmVhdGVUaW1lU3RvcFllYXIgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N1cnZleUNyZWF0ZVRpbWVTdG9wWWVhcicgKTsKICAgICAgICAgICAgbXkgJFN1cnZleUNyZWF0ZVRpbWVTdG9wTW9udGggPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3VydmV5Q3JlYXRlVGltZVN0b3BNb250aCcgKTsKICAgICAgICAgICAgbXkgJFN1cnZleUNyZWF0ZVRpbWVTdG9wRGF5ICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3VydmV5Q3JlYXRlVGltZVN0b3BEYXknICk7CgogICAgICAgICAgICAkU3VydmV5U2VhcmNoe0NyZWF0ZVRpbWVOZXdlckRhdGV9CiAgICAgICAgICAgICAgICA9ICIkU3VydmV5Q3JlYXRlVGltZVN0YXJ0WWVhci0kU3VydmV5Q3JlYXRlVGltZVN0YXJ0TW9udGgtJFN1cnZleUNyZWF0ZVRpbWVTdGFydERheSAwMDowMDowMCI7CgogICAgICAgICAgICAkU3VydmV5U2VhcmNoe0NyZWF0ZVRpbWVPbGRlckRhdGV9CiAgICAgICAgICAgICAgICA9ICIkU3VydmV5Q3JlYXRlVGltZVN0b3BZZWFyLSRTdXJ2ZXlDcmVhdGVUaW1lU3RvcE1vbnRoLSRTdXJ2ZXlDcmVhdGVUaW1lU3RvcERheSAyMzo1OTo1OSI7CgogICAgICAgICAgICAkU3VydmV5U2VhcmNoe1N1cnZleUNyZWF0ZVRpbWVTdGFydH0gPSB7CiAgICAgICAgICAgICAgICBTdXJ2ZXlDcmVhdGVUaW1lU3RhcnRZZWFyICA9PiAkU3VydmV5Q3JlYXRlVGltZVN0YXJ0WWVhciwKICAgICAgICAgICAgICAgIFN1cnZleUNyZWF0ZVRpbWVTdGFydE1vbnRoID0+ICRTdXJ2ZXlDcmVhdGVUaW1lU3RhcnRNb250aCwKICAgICAgICAgICAgICAgIFN1cnZleUNyZWF0ZVRpbWVTdGFydERheSAgID0+ICRTdXJ2ZXlDcmVhdGVUaW1lU3RhcnREYXksCiAgICAgICAgICAgIH07CgogICAgICAgICAgICAkU3VydmV5U2VhcmNoe1N1cnZleUNyZWF0ZVRpbWVTdG9wfSA9IHsKICAgICAgICAgICAgICAgIFN1cnZleUNyZWF0ZVRpbWVTdG9wWWVhciAgPT4gJFN1cnZleUNyZWF0ZVRpbWVTdG9wWWVhciwKICAgICAgICAgICAgICAgIFN1cnZleUNyZWF0ZVRpbWVTdG9wTW9udGggPT4gJFN1cnZleUNyZWF0ZVRpbWVTdG9wTW9udGgsCiAgICAgICAgICAgICAgICBTdXJ2ZXlDcmVhdGVUaW1lU3RvcERheSAgID0+ICRTdXJ2ZXlDcmVhdGVUaW1lU3RvcERheSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTdXJ2ZXlTZWFyY2h7VGltZVNsb3RDaGVja2VkfSAgICAgID0gJyc7CiAgICAgICAgICAgICRTdXJ2ZXlTZWFyY2h7Tm9SZXN0cmljdGlvbkNoZWNrZWR9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgICAgICB9CgogICAgICAgICMgc3RvcmUgbGFzdCBvdmVydmlldyBzY3JlZW4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAnQWN0aW9uPUFnZW50U3VydmV5T3ZlcnZpZXcnLAogICAgICAgICk7CgogICAgICAgIG15ICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyktPkVuY29kZSgKICAgICAgICAgICAgRGF0YSA9PiBcJVN1cnZleVNlYXJjaCwKICAgICAgICApOwoKICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIEtleSAgICA9PiAnU3VydmV5U2VhcmNoJywKICAgICAgICAgICAgVmFsdWUgID0+ICRWYWx1ZSwKICAgICAgICApOwoKICAgIH0KCiAgICAjIGdldCBzdXJ2ZXkgbGlzdAogICAgbXkgQFN1cnZleUlEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKS0+U3VydmV5U2VhcmNoKAogICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWyRTb3J0QnldLAogICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWyRPcmRlckJ5XSwKICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAlU3VydmV5U2VhcmNoCiAgICApOwoKICAgICMgZmluZCBvdXQgd2hpY2ggY29sdW1ucyBzaG91bGQgYmUgc2hvd24KICAgIG15IEBTaG93Q29sdW1uczsKICAgIGlmICggJENvbmZpZy0+e1Nob3dDb2x1bW5zfSApIHsKCiAgICAgICAgIyBnZXQgYWxsIHBvc3NpYmxlIGNvbHVtbnMgZnJvbSBjb25maWcKICAgICAgICBteSAlUG9zc2libGVDb2x1bW4gPSAleyAkQ29uZmlnLT57U2hvd0NvbHVtbnN9IH07CgogICAgICAgICMgZ2V0IHRoZSBjb2x1bW4gbmFtZXMgdGhhdCBzaG91bGQgYmUgc2hvd24KICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgIGZvciBteSAkTmFtZSAoIHNvcnQga2V5cyAlUG9zc2libGVDb2x1bW4gKSB7CiAgICAgICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJFBvc3NpYmxlQ29sdW1ueyROYW1lfTsKICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICROYW1lOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkZWZhdWx0IHBhcmFtZXRlcnMKICAgIG15ICRGaWx0ZXIgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRmlsdGVyJyApIHx8ICcnOwogICAgbXkgJFZpZXcgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApICAgfHwgJyc7CgogICAgIyBzaG93IHRoZSBsaXN0CiAgICBteSAkTGlua1BhZ2UgPQogICAgICAgICdGaWx0ZXI9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEZpbHRlciApCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgIC4gJztTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNvcnRCeSApCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJE9yZGVyQnkgKQogICAgICAgIC4gJzsnOwogICAgbXkgJExpbmtTb3J0ID0KICAgICAgICAnRmlsdGVyPScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRGaWx0ZXIgKQogICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRWaWV3ICkKICAgICAgICAuICc7JzsKICAgIG15ICRMaW5rRmlsdGVyID0KICAgICAgICAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICkKICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgLiAnOyc7CgogICAgIyBzaG93IHN1cnZleSBsaXN0CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPlN1cnZleUxpc3RTaG93KAogICAgICAgIFN1cnZleUlEcyAgICA9PiBcQFN1cnZleUlEcywKICAgICAgICBUb3RhbCAgICAgICAgPT4gc2NhbGFyIEBTdXJ2ZXlJRHMsCiAgICAgICAgVmlldyAgICAgICAgID0+ICRWaWV3LAogICAgICAgIEZpbHRlckxpbmsgICA9PiAkTGlua0ZpbHRlciwKICAgICAgICBUaXRsZU5hbWUgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdPdmVydmlldycpLAogICAgICAgIFRpdGxlVmFsdWUgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1N1cnZleScpLAogICAgICAgIEVudiAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICBMaW5rUGFnZSAgICAgPT4gJExpbmtQYWdlLAogICAgICAgIExpbmtTb3J0ICAgICA9PiAkTGlua1NvcnQsCiAgICAgICAgU2hvd0NvbHVtbnMgID0+IFxAU2hvd0NvbHVtbnMsCiAgICAgICAgU29ydEJ5ICAgICAgID0+ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNvcnRCeSApLAogICAgICAgIE9yZGVyQnkgICAgICA9PiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICksCiAgICAgICAgT3V0cHV0ICAgICAgID0+IDEsCiAgICAgICAgU3VydmV5U2VhcmNoID0+IFwlU3VydmV5U2VhcmNoLAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRTdXJ2ZXlTdGF0czsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgY29tbW9uIG9iamVjdHMKICAgICV7JFNlbGZ9ID0gJVBhcmFtOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiU3VydmV5OjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE91dHB1dDsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0CiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkR3JvdXBPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CgogICAgbXkgJFN1cnZleUlEICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICJTdXJ2ZXlJRCIgKSAgfHwgJyc7CiAgICBteSAkUmVxdWVzdElEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIlJlcXVlc3RJRCIgKSB8fCAnJzsKCiAgICBteSAkU3VydmV5RXhpc3RzID0gJ25vJzsKICAgIGlmICgkU3VydmV5SUQpIHsKICAgICAgICAkU3VydmV5RXhpc3RzID0gJFN1cnZleU9iamVjdC0+RWxlbWVudEV4aXN0cygKICAgICAgICAgICAgRWxlbWVudElEID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgRWxlbWVudCAgID0+ICdTdXJ2ZXknCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkUmVxdWVzdEV4aXN0cyA9ICdubyc7CiAgICBpZiAoJFJlcXVlc3RJRCkgewogICAgICAgICRSZXF1ZXN0RXhpc3RzID0gJFN1cnZleU9iamVjdC0+RWxlbWVudEV4aXN0cygKICAgICAgICAgICAgRWxlbWVudElEID0+ICRSZXF1ZXN0SUQsCiAgICAgICAgICAgIEVsZW1lbnQgICA9PiAnUmVxdWVzdCcKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc3RhdHMKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggISRTZWxmLT57U3ViYWN0aW9ufSApIHsKCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXkgZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnKSwKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgIFRpdGxlICAgICA9PiBUcmFuc2xhdGFibGUoJ1N0YXRzIE92ZXJ2aWV3JyksCiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU21hbGwnLAogICAgICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICAgICApOwoKICAgICAgICBteSAlU3VydmV5ID0gJFN1cnZleU9iamVjdC0+U3VydmV5R2V0KAogICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9mIEFnZW50U3VydmV5U3RhdHMKICAgICAgICBteSAkU2hvd0RlbGV0ZUFycmF5ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTdXJ2ZXlTdGF0czo6U2hvd0RlbGV0ZScpOwogICAgICAgIG15ICRTaG93RGVsZXRlICAgICAgPSAwOwoKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkU2hvd0RlbGV0ZUFycmF5KSApIHsKCiAgICAgICAgICAgICMgZ2V0IHVzZXIgZ3JvdXBzLCB3aGVyZSB0aGUgdXNlciBoYXMgdGhlIHJ3IHByaXZpbGVnZQogICAgICAgICAgICBteSAlR3JvdXBzID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uVXNlckdldCgKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ3J3JywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgcmV2ZXJzZSBncm91cHMKICAgICAgICAgICAgJUdyb3VwcyA9IHJldmVyc2UgJUdyb3VwczsKCiAgICAgICAgICAgIGlmICggZ3JlcCB7ICRHcm91cHN7JF99IH0gQHskU2hvd0RlbGV0ZUFycmF5fSApIHsKICAgICAgICAgICAgICAgICRTaG93RGVsZXRlID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBwcmludCB0aGUgbWFpbiB0YWJsZS4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU3RhdHMnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVTdXJ2ZXksCiAgICAgICAgICAgICAgICBTaG93RGVsZXRlID0+ICRTaG93RGVsZXRlLAogICAgICAgICAgICAgICAgfQogICAgICAgICk7CiAgICAgICAgbXkgQExpc3QgPSAkU3VydmV5T2JqZWN0LT5Wb3RlTGlzdCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CgogICAgICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgICAgIG15ICRDb3VudCAgICAgPSAwOwogICAgICAgIG15ICRMYXN0SW5kZXggPSBzY2FsYXIgQExpc3QgLSAxOwoKICAgICAgICBmb3IgbXkgJFZvdGUgKEBMaXN0KSB7CiAgICAgICAgICAgIG15ICRDb3VudFBsdXMgID0gJENvdW50ICsgMTsKICAgICAgICAgICAgbXkgJENvdW50TWludXMgPSAkQ291bnQgLSAxOwogICAgICAgICAgICBpZiAoICRDb3VudCAhPSAwICkgewogICAgICAgICAgICAgICAgJFZvdGUtPntQcmV2fSA9ICRMaXN0WyRDb3VudE1pbnVzXS0+e1JlcXVlc3RJRH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkQ291bnQgIT0gJExhc3RJbmRleCApIHsKICAgICAgICAgICAgICAgICRWb3RlLT57TmV4dH0gPSAkTGlzdFskQ291bnRQbHVzXS0+e1JlcXVlc3RJRH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFZvdGUtPntTdXJ2ZXlJRH0gPSAkU3VydmV5SUQ7CiAgICAgICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVm90ZS0+e1RpY2tldElEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFZvdGUtPntUaWNrZXROdW1iZXJ9ID0gJFRpY2tldHtUaWNrZXROdW1iZXJ9OwogICAgICAgICAgICAkVm90ZS0+e1Nob3dEZWxldGV9ICAgPSAkU2hvd0RlbGV0ZTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdGF0c1ZvdGUnLAogICAgICAgICAgICAgICAgRGF0YSA9PiAkVm90ZSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgfQoKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudFN1cnZleVN0YXRzJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHslUGFyYW19LAogICAgICAgICk7CgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzdGF0cyBkZXRhaWxzCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU3RhdHNEZXRhaWwnICkgewogICAgICAgIG15ICRUaWNrZXROdW1iZXIgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiVGlja2V0TnVtYmVyIiApOwoKICAgICAgICBteSAoICRQcmV2LCAkTmV4dCwgJVJlc3VsdHMgKTsKCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXkgZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnIHx8ICRSZXF1ZXN0RXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJyksCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICBUaXRsZSAgICAgPT4gVHJhbnNsYXRhYmxlKCdTdGF0cyBEZXRhaWwnKSwKICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTbWFsbCcsCiAgICAgICAgICAgIEJvZHlDbGFzcyA9PiAnUG9wdXAnLAogICAgICAgICk7CgogICAgICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoCiAgICAgICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICApOwoKICAgICAgICAjIHByaW50IHRoZSBtYWluIHRhYmxlLgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTdGF0c0RldGFpbCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVN1cnZleSwKICAgICAgICAgICAgICAgIFRpY2tldE51bWJlciA9PiAkVGlja2V0TnVtYmVyLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgR2V0IFN1cnZleSB2b3RlIGxpc3QuCiAgICAgICAgbXkgQExpc3QgPSAkU3VydmV5T2JqZWN0LT5Wb3RlTGlzdCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CgogICAgICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgICAgICMgR2V0IHBhcmFtZXRlcnMgZm9yIHVybCAocHJldmlvdXMgYW5kIG5leHQgdm90ZSBhbmQgdGhlaXIgdGlja2V0IG51bWJlcikuCiAgICAgICAgbXkgJENvdW50ICAgICA9IDA7CiAgICAgICAgbXkgJExhc3RJbmRleCA9IHNjYWxhciBATGlzdCAtIDE7CgogICAgICAgIGZvciBteSAkUmVzdWx0Vm90ZSAoQExpc3QpIHsKCiAgICAgICAgICAgICNGaW5kcyB2b3RlIHRoYXQgaXMgdmlld2VkLgogICAgICAgICAgICBpZiAoICRSZXN1bHRWb3RlLT57UmVxdWVzdElEfSA9PSAkUmVxdWVzdElEICkgewogICAgICAgICAgICAgICAgbXkgJENvdW50UGx1cyAgPSAkQ291bnQgKyAxOwogICAgICAgICAgICAgICAgbXkgJENvdW50TWludXMgPSAkQ291bnQgLSAxOwoKICAgICAgICAgICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFJlc3VsdFZvdGUtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFJlc3VsdHN7VGlja2V0TnVtYmVyfSA9ICRUaWNrZXR7VGlja2V0TnVtYmVyfTsKCiAgICAgICAgICAgICAgICBpZiAoICRDb3VudCAhPSAwICkgewogICAgICAgICAgICAgICAgICAgICRQcmV2ID8gJFJlc3VsdHN7UHJldn0gPSAkUHJldiA6ICRSZXN1bHRze1ByZXZ9ID0gJExpc3RbJENvdW50TWludXNdLT57UmVxdWVzdElEfTsKICAgICAgICAgICAgICAgICAgICAkUmVzdWx0c3tQcmV2VGlja2V0TnVtYmVyfSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldE51bWJlckxvb2t1cCgKICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJExpc3RbJENvdW50TWludXNdLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoICRDb3VudCAhPSAkTGFzdEluZGV4ICkgewogICAgICAgICAgICAgICAgICAgICROZXh0ID8gJFJlc3VsdHN7TmV4dH0gPSAkTmV4dCA6ICRSZXN1bHRze05leHR9ID0gJExpc3RbJENvdW50UGx1c10tPntSZXF1ZXN0SUR9OwogICAgICAgICAgICAgICAgICAgICRSZXN1bHRze05leHRUaWNrZXROdW1iZXJ9ID0gJFRpY2tldE9iamVjdC0+VGlja2V0TnVtYmVyTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkTGlzdFskQ291bnRQbHVzXS0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05hdkFycm93cycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICAgICAgICAgJVJlc3VsdHMsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgQFF1ZXN0aW9uTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uTGlzdCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRRdWVzdGlvbiAoQFF1ZXN0aW9uTGlzdCkgewoKICAgICAgICAgICAgbXkgJENsYXNzID0gJyc7CiAgICAgICAgICAgIGlmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1RleHRhcmVhJyApIHsKICAgICAgICAgICAgICAgICRDbGFzcyA9ICdUZXh0YXJlYSc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRSZXF1aXJlZFRleHQgPSAnJzsKICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb24tPntBbnN3ZXJSZXF1aXJlZH0gKSB7CiAgICAgICAgICAgICAgICAkQ2xhc3MgLj0gJyBNYW5kYXRvcnknOwogICAgICAgICAgICAgICAgJFJlcXVpcmVkVGV4dCA9ICcqICc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3RhdHNEZXRhaWxRdWVzdGlvbicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAleyRRdWVzdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDbGFzcywKICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZFRleHQgPT4gJFJlcXVpcmVkVGV4dCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15IEBBbnN3ZXJzOwogICAgICAgICAgICBpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdSYWRpbycgfHwgJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ0NoZWNrYm94JyB8fCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnTlBTJyApIHsKICAgICAgICAgICAgICAgIG15IEBBbnN3ZXJMaXN0OwogICAgICAgICAgICAgICAgQEFuc3dlckxpc3QgPSAkU3VydmV5T2JqZWN0LT5Wb3RlR2V0KAogICAgICAgICAgICAgICAgICAgIFJlcXVlc3RJRCAgPT4gJFJlcXVlc3RJRCwKICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGZvciBteSAkUm93IChAQW5zd2VyTGlzdCkgewogICAgICAgICAgICAgICAgICAgIG15ICVBbnN3ZXIgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIEFuc3dlcklEID0+ICRSb3ctPntWb3RlVmFsdWV9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgbXkgJURhdGE7CiAgICAgICAgICAgICAgICAgICAgJERhdGF7QW5zd2VyfSA9ICRBbnN3ZXJ7QW5zd2VyfTsKICAgICAgICAgICAgICAgICAgICBwdXNoKCBAQW5zd2VycywgXCVEYXRhICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnWWVzTm8nIHx8ICRRdWVzdGlvbi0+e1R5cGV9IGVxICdUZXh0YXJlYScgKSB7CiAgICAgICAgICAgICAgICBteSBATGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVHZXQoCiAgICAgICAgICAgICAgICAgICAgUmVxdWVzdElEICA9PiAkUmVxdWVzdElELAogICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICVEYXRhOwogICAgICAgICAgICAgICAgJERhdGF7QW5zd2VyfSA9ICRMaXN0WzBdLT57Vm90ZVZhbHVlfTsKCiAgICAgICAgICAgICAgICAjIGNsZWFuIEhUTUwKICAgICAgICAgICAgICAgIGlmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1RleHRhcmVhJyAmJiAkRGF0YXtBbnN3ZXJ9ICkgewogICAgICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlcn0gPX4gc3tcQVwkaHRtbFwvdGV4dFwkXHMoLiopfXskMX14bXM7CiAgICAgICAgICAgICAgICAgICAgJERhdGF7QW5zd2VyfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgICAgICAgICAgICAgIFRleHQgICAgICAgICAgID0+ICREYXRhe0Fuc3dlcn0sCiAgICAgICAgICAgICAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkRGF0YXtBbnN3ZXJ9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Ub0FzY2lpKAogICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJERhdGF7QW5zd2VyfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcHVzaCggQEFuc3dlcnMsIFwlRGF0YSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciBteSAkUm93IChAQW5zd2VycykgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU3RhdHNEZXRhaWxBbnN3ZXInLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAleyRSb3d9LAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRTdXJ2ZXlTdGF0cycsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU3RhdHNWaWV3JyApIHsKCiAgICAgICAgaWYgKCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3VibWl0RGVsZXRlJyApICkgewoKICAgICAgICAgICAgIyBnZXQgc3VydmV5IGlkCiAgICAgICAgICAgIG15ICRTdXJ2ZXlJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdXJ2ZXlJRCcgKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBzdGF0cyBkZWxldGUga2V5cyBhbmQgdGFyZ2V0IG9iamVjdAogICAgICAgICAgICBteSBAUmVxdWVzdERlbGV0ZUlkZW50aWZpZXIgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KAogICAgICAgICAgICAgICAgUGFyYW0gPT4gJ1JlcXVlc3REZWxldGVJZGVudGlmaWVyJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZGVsZXRlIHZvdGUgZGF0YSBhbmQgcmVxdWVzdCBmcm9tIGRhdGFiYXNlCiAgICAgICAgICAgIGZvciBteSAkUmVxdWVzdElEIChAUmVxdWVzdERlbGV0ZUlkZW50aWZpZXIpIHsKCiAgICAgICAgICAgICAgICAjIGRlbGV0ZSB2b3RlIGRhdGEKICAgICAgICAgICAgICAgIG15ICRWb3RlRGVsZXRlID0gJFN1cnZleU9iamVjdC0+Vm90ZURlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBSZXF1ZXN0SUQgPT4gJFJlcXVlc3RJRCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBkZWxldGUgcmVxdWVzdAogICAgICAgICAgICAgICAgbXkgJFJlcXVlc3REZWxldGUgPSAkU3VydmV5T2JqZWN0LT5SZXF1ZXN0RGVsZXRlKAogICAgICAgICAgICAgICAgICAgIFJlcXVlc3RJRCA9PiAkUmVxdWVzdElELAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZWRpcmVjdCB0byBzdXJ2ZXkgc3RhdHMKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07U3VydmV5SUQ9JFN1cnZleUlEIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRTdXJ2ZXlab29tOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBjb21tb24gb2JqZWN0cwogICAgJXskU2VsZn0gPSAlUGFyYW07CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE91dHB1dDsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFN1cnZleU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRTdXJ2ZXlJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICJTdXJ2ZXlJRCIgKSB8fCAnJzsKCiAgICBteSAlSlNEYXRhOwoKICAgIG15ICRTdXJ2ZXlFeGlzdHMgPSAnbm8nOwogICAgaWYgKCRTdXJ2ZXlJRCkgewogICAgICAgICRTdXJ2ZXlFeGlzdHMgPSAkU3VydmV5T2JqZWN0LT5FbGVtZW50RXhpc3RzKAogICAgICAgICAgICBFbGVtZW50SUQgPT4gJFN1cnZleUlELAogICAgICAgICAgICBFbGVtZW50ICAgPT4gJ1N1cnZleScKICAgICAgICApOwogICAgfQoKICAgICMgdmlldyBhdHRhY2htZW50IGZvciBIVE1MIGVtYWlsCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnSFRNTFZpZXcnICkgewoKICAgICAgICAjIGdldCBwYXJhbXMKICAgICAgICBteSAkU3VydmV5RmllbGQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiU3VydmV5RmllbGQiICk7CgogICAgICAgICMgbmVlZGVkIHBhcmFtcwogICAgICAgIGZvciBteSAkTmVlZGVkIChxdyggU3VydmV5SUQgU3VydmV5RmllbGQgKSkgewogICAgICAgICAgICBpZiAoICEkTmVlZGVkICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWRlZCBQYXJhbTogJE5lZWRlZCEiLAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAkU3VydmV5RmllbGQgbmUgJ0ludHJvZHVjdGlvbicgJiYgJFN1cnZleUZpZWxkIG5lICdEZXNjcmlwdGlvbicgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgU3VydmV5RmllbGQgUGFyYW06ICRTdXJ2ZXlGaWVsZCEiLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgc3VydmV5IGV4aXN0cwogICAgICAgIGlmICggJFN1cnZleUV4aXN0cyBuZSAnWWVzJyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCBTdXJ2ZXlJRDogJFN1cnZleUlEISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYWxsIGF0dHJpYnV0ZXMgb2YgdGhlIHN1cnZleQogICAgICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoCiAgICAgICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICApOwoKICAgICAgICBpZiAoICRTdXJ2ZXl7JFN1cnZleUZpZWxkfSApIHsKCiAgICAgICAgICAgICMgY2xlYW4gSFRNTCBhbmQgY29udmVydCB0aGUgRmllbGQgaW4gSFRNTCAoXG4gLS0+PGJyPikKICAgICAgICAgICAgJFN1cnZleXskU3VydmV5RmllbGR9ID1+IHN7XEFcJGh0bWxcL3RleHRcJFxzKC4qKX17JDF9eG1zOwogICAgICAgICAgICAkU3VydmV5eyRTdXJ2ZXlGaWVsZH0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFN1cnZleXskU3VydmV5RmllbGR9LAogICAgICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIGdldCBIVE1MIHV0aWxzIG9iamVjdAogICAgICAgIG15ICRIVE1MVXRpbHNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyk7CgogICAgICAgICMgY29udmVydCB0ZXh0IGFyZWEgZmllbGRzIHRvIEFTQ0lJCiAgICAgICAgJFN1cnZleXskU3VydmV5RmllbGR9ID0gJEhUTUxVdGlsc09iamVjdC0+VG9Bc2NpaSgKICAgICAgICAgICAgU3RyaW5nID0+ICRTdXJ2ZXl7JFN1cnZleUZpZWxkfSwKICAgICAgICApOwoKICAgICAgICAkU3VydmV5eyRTdXJ2ZXlGaWVsZH0gPSAkSFRNTFV0aWxzT2JqZWN0LT5Eb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICBTdHJpbmcgID0+ICRTdXJ2ZXl7JFN1cnZleUZpZWxkfSwKICAgICAgICAgICAgQ2hhcnNldCA9PiAndXRmLTgnLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRTdXJ2ZXl7JFN1cnZleUZpZWxkfSwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc3VydmV5IHN0YXR1cwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1N1cnZleVN0YXR1cycgKSB7CgogICAgICAgICMgQ2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICBteSAkTmV3U3RhdHVzID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIk5ld1N0YXR1cyIgKTsKCiAgICAgICAgbXkgJEFjY2VzcyA9IDA7CiAgICAgICAgbXkgJEdyb3Vwc0ZvckNoYW5nZVN0YXR1cwogICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU3VydmV5OjpGcm9udGVuZDo6Q2hhbmdlU3VydmV5U3RhdHVzR3JvdXBzJyk7CiAgICAgICAgbXkgJVVzZXJHcm91cHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+UGVybWlzc2lvblVzZXJHZXQoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAncncnLAogICAgICAgICk7CiAgICAgICAgJVVzZXJHcm91cHMgPSByZXZlcnNlICVVc2VyR3JvdXBzOwoKICAgICAgICAjIElmIGNvbmZpZyBhcnJheSBpcyBlbXB0eSwgZ3JvdXAgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBPdGhlcndpc2UsIGNoZWNraW5nIHBlcm1pc3Npb25zLgogICAgICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSgkR3JvdXBzRm9yQ2hhbmdlU3RhdHVzKSApIHsKICAgICAgICAgICAgJEFjY2VzcyA9IDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgR1JPVVBTOgogICAgICAgICAgICBmb3IgbXkgJFN1cnZleUdyb3VwICggQHskR3JvdXBzRm9yQ2hhbmdlU3RhdHVzfSApIHsKICAgICAgICAgICAgICAgIGlmICggJFVzZXJHcm91cHN7JFN1cnZleUdyb3VwfSApIHsKICAgICAgICAgICAgICAgICAgICAkQWNjZXNzID0gMTsKICAgICAgICAgICAgICAgICAgICBsYXN0IEdST1VQUzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXkgZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnIHx8ICRBY2Nlc3MgPT0gMCApIHsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJyksCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgYSBuZXcgc3RhdHVzCiAgICAgICAgbXkgJFN0YXR1c1NldCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVN0YXR1c1NldCgKICAgICAgICAgICAgU3VydmV5SUQgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgTmV3U3RhdHVzID0+ICROZXdTdGF0dXMsCiAgICAgICAgKTsKICAgICAgICBteSAkTWVzc2FnZSA9ICcnOwogICAgICAgIGlmICggZGVmaW5lZCgkU3RhdHVzU2V0KSAmJiAkU3RhdHVzU2V0IGVxICdOb1F1ZXN0aW9uJyApIHsKICAgICAgICAgICAgJE1lc3NhZ2UgPSAnO01lc3NhZ2U9Tm9RdWVzdGlvbic7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggZGVmaW5lZCgkU3RhdHVzU2V0KSAmJiAkU3RhdHVzU2V0IGVxICdJbmNvbXBsZXRlUXVlc3Rpb24nICkgewogICAgICAgICAgICAkTWVzc2FnZSA9ICc7TWVzc2FnZT1JbmNvbXBsZXRlUXVlc3Rpb24nOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoIGRlZmluZWQoJFN0YXR1c1NldCkgJiYgJFN0YXR1c1NldCBlcSAnU3RhdHVzU2V0JyApIHsKICAgICAgICAgICAgJE1lc3NhZ2UgPSAnO01lc3NhZ2U9U3RhdHVzU2V0JzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudFN1cnZleVpvb207U3VydmV5SUQ9JFN1cnZleUlEJE1lc3NhZ2UiLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzdXJ2ZXkgem9vbQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKICAgICMgZ2V0IHBhcmFtcwogICAgbXkgJE1lc3NhZ2UgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiTWVzc2FnZSIgKTsKCiAgICAjIGNoZWNrIGlmIHN1cnZleSBleGlzdHMKICAgIGlmICggISRTdXJ2ZXlJRCB8fCAkU3VydmV5RXhpc3RzIG5lICdZZXMnICkgewogICAgICAgICRNZXNzYWdlID0gJztNZXNzYWdlPU5vU3VydmV5SUQnOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+ICJBY3Rpb249QWdlbnRTdXJ2ZXlPdmVydmlldyRNZXNzYWdlIiwKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ1N1cnZleScpLAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICMgb3V0cHV0IG1lc3NhZ2VzIGlmIHN0YXR1cyB3YXMgY2hhbmdlZAogICAgaWYgKCBkZWZpbmVkKCRNZXNzYWdlKSAmJiAkTWVzc2FnZSBlcSAnTm9RdWVzdGlvbicgKSB7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdFcnJvcicsCiAgICAgICAgICAgIEluZm8gICAgID0+IFRyYW5zbGF0YWJsZSgnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nKSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCBkZWZpbmVkKCRNZXNzYWdlKSAmJiAkTWVzc2FnZSBlcSAnSW5jb21wbGV0ZVF1ZXN0aW9uJyApIHsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5vdGlmeSgKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ0Vycm9yJywKICAgICAgICAgICAgSW5mbyAgICAgPT4gVHJhbnNsYXRhYmxlKCdDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLicpLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoIGRlZmluZWQoJE1lc3NhZ2UpICYmICRNZXNzYWdlIGVxICdTdGF0dXNTZXQnICkgewogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICBQcmlvcml0eSA9PiAnTm90aWNlJywKICAgICAgICAgICAgSW5mbyAgICAgPT4gVHJhbnNsYXRhYmxlKCdTdGF0dXMgY2hhbmdlZC4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGFsbCBhdHRyaWJ1dGVzIG9mIHRoZSBzdXJ2ZXkKICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCApOwogICAgbXkgJUhUTUw7CgogICAgIyBjbGVhbiBIVE1MIGFuZCBjb252ZXJ0IHRoZSB0ZXh0LWFyZWFzIGluIEhUTUwgKFxuIC0tPjxicj4pCiAgICBGSUVMRDoKICAgIGZvciBteSAkU3VydmV5RmllbGQgKHF3KCBJbnRyb2R1Y3Rpb24gRGVzY3JpcHRpb24gKSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRTdXJ2ZXl7JFN1cnZleUZpZWxkfTsKCiAgICAgICAgJFN1cnZleXskU3VydmV5RmllbGR9ID1+IHN7XEFcJGh0bWxcL3RleHRcJFxzKC4qKX17JDF9eG1zOwoKICAgICAgICBpZiAoJDEpIHsKICAgICAgICAgICAgJEhUTUx7JFN1cnZleUZpZWxkfSA9IDE7CiAgICAgICAgfQoKICAgICAgICAkU3VydmV5eyRTdXJ2ZXlGaWVsZH0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkU3VydmV5eyRTdXJ2ZXlGaWVsZH0sCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBudW1iZXJzIG9mIHJlcXVlc3RzIGFuZCB2b3RlcwogICAgbXkgJFNlbmRSZXF1ZXN0ID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdENvdW50KAogICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICBWYWxpZElEICA9PiAnYWxsJywKICAgICk7CiAgICBteSAkUmVxdWVzdENvbXBsZXRlID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdENvdW50KAogICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICBWYWxpZElEICA9PiAwLAogICAgKTsKICAgICRTdXJ2ZXl7U2VuZFJlcXVlc3R9ICAgICA9ICRTZW5kUmVxdWVzdDsKICAgICRTdXJ2ZXl7UmVxdWVzdENvbXBsZXRlfSA9ICRSZXF1ZXN0Q29tcGxldGU7CgogICAgIyBnZXQgc2VsZWN0ZWQgcXVldWVzCiAgICBteSAlUXVldWVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyktPkdldEFsbFF1ZXVlcygpOwogICAgbXkgQFF1ZXVlTGlzdCA9IG1hcCB7ICRRdWV1ZXN7JF99IH0gQHsgJFN1cnZleXtRdWV1ZXN9IH07CiAgICBAUXVldWVMaXN0ID0gc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9IEBRdWV1ZUxpc3Q7CiAgICBteSAkUXVldWVMaXN0U3RyaW5nID0gam9pbiBxeywgfSwgQFF1ZXVlTGlzdDsKCiAgICBteSAkTm9RdWV1ZU1lc3NhZ2UgPSAnJzsKICAgIGlmICggISRRdWV1ZUxpc3RTdHJpbmcgKSB7CiAgICAgICAgJFF1ZXVlTGlzdFN0cmluZyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJyk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICAkSlNEYXRhe0hUTUxSaWNoVGV4dEhlaWdodERlZmF1bHR9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkZyb250ZW5kOjpIVE1MUmljaFRleHRIZWlnaHREZWZhdWx0JykgfHwgODA7CiAgICAkSlNEYXRhe0hUTUxSaWNoVGV4dEhlaWdodE1heH0gICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkZyb250ZW5kOjpIVE1MUmljaFRleHRIZWlnaHRNYXgnKSAgICAgfHwgMjUwMDsKCiAgICAjIHByaW50IHRoZSBtYWluIHRhYmxlLgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnU3VydmV5Wm9vbScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVTdXJ2ZXksCiAgICAgICAgICAgIE5vUXVldWVNZXNzYWdlICA9PiAkTm9RdWV1ZU1lc3NhZ2UsCiAgICAgICAgICAgIFF1ZXVlTGlzdFN0cmluZyA9PiAkUXVldWVMaXN0U3RyaW5nLAogICAgICAgIH0sCiAgICApOwoKICAgICMgY2hlY2sgaWYgdGhlIHNlbmQgY29uZGl0aW9uIHRpY2tldCB0eXBlIGNoZWNrIGlzIGVuYWJsZWQKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnKSApIHsKCiAgICAgICAgIyBnZXQgc2VsZWN0ZWQgdGlja2V0IHR5cGVzCiAgICAgICAgbXkgJVRpY2tldFR5cGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKS0+VHlwZUxpc3QoKTsKICAgICAgICBteSBAVGlja2V0VHlwZUxpc3QgPSBtYXAgeyAkVGlja2V0VHlwZXN7JF99ID8gJFRpY2tldFR5cGVzeyRffSA6ICgpIH0gQHsgJFN1cnZleXtUaWNrZXRUeXBlSURzfSB9OwogICAgICAgIEBUaWNrZXRUeXBlTGlzdCA9IHNvcnQgeyBsYyAkYSBjbXAgbGMgJGIgfSBAVGlja2V0VHlwZUxpc3Q7CiAgICAgICAgbXkgJFRpY2tldFR5cGVMaXN0U3RyaW5nID0gam9pbiBxeywgfSwgQFRpY2tldFR5cGVMaXN0OwoKICAgICAgICBpZiAoICEkVGlja2V0VHlwZUxpc3RTdHJpbmcgKSB7CiAgICAgICAgICAgICRUaWNrZXRUeXBlTGlzdFN0cmluZyA9IFRyYW5zbGF0YWJsZSgnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJyk7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnVGlja2V0VHlwZXMnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFRpY2tldFR5cGVMaXN0U3RyaW5nID0+ICRUaWNrZXRUeXBlTGlzdFN0cmluZywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgaWYgdGhlIHNlbmQgY29uZGl0aW9uIHNlcnZpY2UgY2hlY2sgaXMgZW5hYmxlZAogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZScpICkgewoKICAgICAgICAjIGdldCBzZWxlY3RlZCB0aWNrZXQgdHlwZXMKICAgICAgICBteSAlU2VydmljZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpLT5TZXJ2aWNlTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgIG15IEBTZXJ2aWNlTGlzdCA9IG1hcCB7ICRTZXJ2aWNlc3skX30gPyAkU2VydmljZXN7JF99IDogKCkgfSBAeyAkU3VydmV5e1NlcnZpY2VJRHN9IH07CiAgICAgICAgQFNlcnZpY2VMaXN0ID0gc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9IEBTZXJ2aWNlTGlzdDsKICAgICAgICBteSAkU2VydmljZUxpc3RTdHJpbmcgPSBqb2luIHF7LCB9LCBAU2VydmljZUxpc3Q7CgogICAgICAgIGlmICggISRTZXJ2aWNlTGlzdFN0cmluZyApIHsKICAgICAgICAgICAgJFNlcnZpY2VMaXN0U3RyaW5nID0gVHJhbnNsYXRhYmxlKCctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nKTsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdUaWNrZXRTZXJ2aWNlcycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgU2VydmljZUxpc3RTdHJpbmcgPT4gJFNlcnZpY2VMaXN0U3RyaW5nLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBydW4gc3VydmV5IG1lbnUgbW9kdWxlcwogICAgbXkgJE1lbnVNb2R1bGVDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUnKTsKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJE1lbnVNb2R1bGVDb25maWcpICkgewogICAgICAgIG15ICVNZW51cyAgID0gJXskTWVudU1vZHVsZUNvbmZpZ307CiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgIE1FTlU6CiAgICAgICAgZm9yIG15ICRNZW51ICggc29ydCBrZXlzICVNZW51cyApIHsKCiAgICAgICAgICAgICMgbWVudSBTYXRzRGV0YWlscyBuZWVkcyB0byBoYXZlIGEgY29tcGxldGUgcmVxdWVzdAogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICBkZWZpbmVkICRNZW51c3skTWVudX0tPntBY3Rpb259CiAgICAgICAgICAgICAgICAmJiAkTWVudXN7JE1lbnV9LT57QWN0aW9ufSBlcSAnQWdlbnRTdXJ2ZXlTdGF0cycKICAgICAgICAgICAgICAgICYmICEkUmVxdWVzdENvbXBsZXRlCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5leHQgTUVOVTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBsb2FkIG1vZHVsZQogICAgICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoICRNZW51c3skTWVudX0tPntNb2R1bGV9ICkgKSB7CiAgICAgICAgICAgICAgICBteSAkT2JqZWN0ID0gJE1lbnVzeyRNZW51fS0+e01vZHVsZX0tPm5ldygKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNldCBjbGFzc2VzCiAgICAgICAgICAgICAgICBpZiAoICRNZW51c3skTWVudX0tPntUYXJnZXR9ICkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoICRNZW51c3skTWVudX0tPntUYXJnZXR9IGVxICdQb3BVcCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRNZW51c3skTWVudX0tPntDbGFzc30gPSAnQXNQb3B1cCc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gZXEgJ0JhY2snICkgewogICAgICAgICAgICAgICAgICAgICAgICAkTWVudXN7JE1lbnV9LT57Q2xhc3N9ID0gJ0hpc3RvcnlCYWNrJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBydW4gbW9kdWxlCiAgICAgICAgICAgICAgICAkQ291bnRlciA9ICRPYmplY3QtPlJ1bigKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgU3VydmV5ICA9PiB7JVN1cnZleX0sCiAgICAgICAgICAgICAgICAgICAgQ291bnRlciA9PiAkQ291bnRlciwKICAgICAgICAgICAgICAgICAgICBDb25maWcgID0+ICRNZW51c3skTWVudX0sCiAgICAgICAgICAgICAgICAgICAgTWVudUlEICA9PiAnTWVudScgLiAkTWVudSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIG91dHB1dCB0aGUgcG9zc2libGUgc3RhdHVzIG1lbnUKICAgIG15ICVOZXdTdGF0dXMgPSAoCiAgICAgICAgQ2hhbmdlU3RhdHVzID0+IFRyYW5zbGF0YWJsZSgnLSBDaGFuZ2UgU3RhdHVzIC0nKSwKICAgICAgICBNYXN0ZXIgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdNYXN0ZXInKSwKICAgICAgICBWYWxpZCAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdWYWxpZCcpLAogICAgICAgIEludmFsaWQgICAgICA9PiBUcmFuc2xhdGFibGUoJ0ludmFsaWQnKSwKCiAgICApOwoKICAgIGlmICggJFN1cnZleXtTdGF0dXN9IGVxICdOZXcnICkgewogICAgICAgIGRlbGV0ZSAkTmV3U3RhdHVze0ludmFsaWR9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgZGVsZXRlICROZXdTdGF0dXN7ICRTdXJ2ZXl7U3RhdHVzfSB9OwogICAgfQoKICAgIG15ICROZXdTdGF0dXNTdHIgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnTmV3U3RhdHVzJywKICAgICAgICBJRCAgICAgICAgICA9PiAnTmV3U3RhdHVzJywKICAgICAgICBEYXRhICAgICAgICA9PiBcJU5ld1N0YXR1cywKICAgICAgICBTZWxlY3RlZElEICA9PiAnQ2hhbmdlU3RhdHVzJywKICAgICAgICBUaXRsZSAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ05ldyBTdGF0dXMnKSwKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTdXJ2ZXlTdGF0dXMnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBOZXdTdGF0dXNTdHIgPT4gJE5ld1N0YXR1c1N0ciwKICAgICAgICAgICAgU3VydmV5SUQgICAgID0+ICRTdXJ2ZXlJRCwKICAgICAgICB9LAogICAgKTsKCiAgICAjIG91dHB1dCB0aGUgc3VydmV5IGNvbW1vbiBibG9ja3MKICAgIG15ICVUcmFuc2xhdGVkVGl0bGVzID0gKAogICAgICAgIEludHJvZHVjdGlvbiA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1N1cnZleSBJbnRyb2R1Y3Rpb24nKSwKICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdTdXJ2ZXkgRGVzY3JpcHRpb24nKSwKICAgICk7CiAgICBmb3IgbXkgJEZpZWxkIChxdyggSW50cm9kdWN0aW9uIERlc2NyaXB0aW9uKSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTdXJ2ZXlCbG9jaycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJFRyYW5zbGF0ZWRUaXRsZXN7JEZpZWxkfSwKICAgICAgICAgICAgICAgIFN1cnZleUZpZWxkID0+ICRGaWVsZCwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgICAgIGlmICggJEhUTUx7JEZpZWxkfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdCb2R5SFRNTCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBTdXJ2ZXlGaWVsZCA9PiAkRmllbGQsCiAgICAgICAgICAgICAgICAgICAgU3VydmV5SUQgICAgPT4gJFN1cnZleUlELAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQm9keVBsYWluJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIExhYmVsICAgPT4gJEZpZWxkLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJFN1cnZleXskRmllbGR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBzdXJ2ZXkgem9vbSBjb25maWdyYXRpb25zCiAgICBteSAkU3VydmV5UmVzdWx0c0dyYXBoUGVybWlzc2lvbiA9ICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57QWdlbnRTdXJ2ZXlTdGF0c30tPntHcm91cH07CgogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFN1cnZleVJlc3VsdHNHcmFwaFBlcm1pc3Npb24pICkgewoKICAgICAgICAjIGdldCBncm91cCBmcm9tIGdpdmVuIHVzZXIgaWQKICAgICAgICBteSBAR3JvdXBOYW1lcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAncncnLAogICAgICAgICAgICBSZXN1bHQgPT4gJ05hbWUnLAogICAgICAgICAgICBDYWNoZWQgPT4gMSwKICAgICAgICApOwoKICAgICAgICBHUk9VUFM6CiAgICAgICAgZm9yIG15ICRHcm91cE5hbWVzIChAR3JvdXBOYW1lcykgewoKICAgICAgICAgICAgbmV4dCBHUk9VUFMgaWYgIWdyZXAgeyAkXyBlcSAkR3JvdXBOYW1lcyB9IEB7JFN1cnZleVJlc3VsdHNHcmFwaFBlcm1pc3Npb259OwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdQZXJtaXNzaW9uU3RhdFJlc3VsdHMnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbGFzdCBHUk9VUFM7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgZ2V0IGFjY2VzcyBpZiBubyBTdXJ2ZXlSZXN1bHRzR3JhcGhQZXJtaXNzaW9uIGlzIHNldAogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdQZXJtaXNzaW9uU3RhdFJlc3VsdHMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBkaXNwbGF5IHN0YXRzIGlmIHN0YXR1cyBNYXN0ZXIsIFZhbGlkIG9yIEludmFsaWQKICAgIGlmICggJFN1cnZleXtTdGF0dXN9IGVxICdOZXcnICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb1N0YXRSZXN1bHRzJywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKAogICAgICAgICRTdXJ2ZXl7U3RhdHVzfSBlcSAnTWFzdGVyJwogICAgICAgIHx8ICRTdXJ2ZXl7U3RhdHVzfSBlcSAnVmFsaWQnCiAgICAgICAgfHwgJFN1cnZleXtTdGF0dXN9IGVxICdJbnZhbGlkJwogICAgICAgICkKICAgIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU3VydmV5RWRpdFN0YXRzJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgYWxsIHF1ZXN0aW9ucyBvZiB0aGUgc3VydmV5CiAgICAgICAgbXkgQFF1ZXN0aW9uTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uTGlzdCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRRdWVzdGlvbiAoQFF1ZXN0aW9uTGlzdCkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleUVkaXRTdGF0c1F1ZXN0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gJFF1ZXN0aW9uLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSBAQW5zd2VyczsKCiAgICAgICAgICAgICMgZ2VuZXJhdGUgdGhlIGFuc3dlcnMgb2YgdGhlIHF1ZXN0aW9uCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRRdWVzdGlvbi0+e1R5cGV9IGVxICdZZXNObycKICAgICAgICAgICAgICAgIHx8ICRRdWVzdGlvbi0+e1R5cGV9IGVxICdSYWRpbycKICAgICAgICAgICAgICAgIHx8ICRRdWVzdGlvbi0+e1R5cGV9IGVxICdDaGVja2JveCcKICAgICAgICAgICAgICAgIHx8ICRRdWVzdGlvbi0+e1R5cGV9IGVxICdOUFMnCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG15IEBBbnN3ZXJMaXN0OwoKICAgICAgICAgICAgICAgICMgc2V0IGFuc3dlcnMgdG8gWWVzIGFuZCBObyBpZiB0eXBlIHdhcyBZZXNObwogICAgICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnWWVzTm8nICkgewogICAgICAgICAgICAgICAgICAgIG15ICVEYXRhOwogICAgICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlcn0gICA9ICJZZXMiOwogICAgICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlcklEfSA9ICJZZXMiOwogICAgICAgICAgICAgICAgICAgIHB1c2goIEBBbnN3ZXJMaXN0LCBcJURhdGEgKTsKICAgICAgICAgICAgICAgICAgICBteSAlRGF0YTI7CiAgICAgICAgICAgICAgICAgICAgJERhdGEye0Fuc3dlcn0gICA9ICJObyI7CiAgICAgICAgICAgICAgICAgICAgJERhdGEye0Fuc3dlcklEfSA9ICJObyI7CiAgICAgICAgICAgICAgICAgICAgcHVzaCggQEFuc3dlckxpc3QsIFwlRGF0YTIgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBhbGwgYW5zd2VycyBvZiBhIHF1ZXN0aW9uCiAgICAgICAgICAgICAgICAgICAgQEFuc3dlckxpc3QgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJMaXN0KAogICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgbXkgJFJvdyAoQEFuc3dlckxpc3QpIHsKICAgICAgICAgICAgICAgICAgICBteSAkVm90ZUNvdW50ID0gJFN1cnZleU9iamVjdC0+Vm90ZUNvdW50KAogICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBWb3RlVmFsdWUgID0+ICRSb3ctPntBbnN3ZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBteSAkUGVyY2VudCA9IDA7CgogICAgICAgICAgICAgICAgICAgICMgY2FsY3VsYXRlIHRoZSBwZXJjZW50cwogICAgICAgICAgICAgICAgICAgIGlmICgkUmVxdWVzdENvbXBsZXRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRQZXJjZW50ID0gMTAwIC8gJFJlcXVlc3RDb21wbGV0ZSAqICRWb3RlQ291bnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICRQZXJjZW50ID0gc3ByaW50ZiggIiUuMmYiLCAkUGVyY2VudCApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBteSAlRGF0YTsKICAgICAgICAgICAgICAgICAgICAkRGF0YXtBbnN3ZXJ9ICAgICAgICA9ICRSb3ctPntBbnN3ZXJ9OwogICAgICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlclBlcmNlbnR9ID0gJFBlcmNlbnQ7CiAgICAgICAgICAgICAgICAgICAgcHVzaCggQEFuc3dlcnMsIFwlRGF0YSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1RleHRhcmVhJyApIHsKCiAgICAgICAgICAgICAgICBteSAkVm90ZVZhbHVlID0gJyc7CiAgICAgICAgICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT57J0RCOjpUeXBlJ30gZXEgJ29yYWNsZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJFZvdGVWYWx1ZSA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBteSAkQW5zd2VyTm8gPSAkU3VydmV5T2JqZWN0LT5Wb3RlQ291bnQoCiAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgICAgICBWb3RlVmFsdWUgID0+ICRWb3RlVmFsdWUsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbXkgJFBlcmNlbnQgPSAwOwoKICAgICAgICAgICAgICAgICMgY2FsY3VsYXRlIHRoZSBwZXJjZW50cwogICAgICAgICAgICAgICAgaWYgKCRSZXF1ZXN0Q29tcGxldGUpIHsKICAgICAgICAgICAgICAgICAgICAkUGVyY2VudCA9IDEwMCAvICRSZXF1ZXN0Q29tcGxldGUgKiAkQW5zd2VyTm87CiAgICAgICAgICAgICAgICAgICAgJFBlcmNlbnQgPSBzcHJpbnRmKCAiJS4yZiIsICRQZXJjZW50ICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBteSAlRGF0YTsKICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlcn0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ2Fuc3dlcmVkJyk7CiAgICAgICAgICAgICAgICBpZiAoICEkUmVxdWVzdENvbXBsZXRlICkgewogICAgICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlclBlcmNlbnR9ID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlclBlcmNlbnR9ID0gc3ByaW50ZiggIiUuMmYiLCAxMDAgLSAkUGVyY2VudCApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcHVzaCggQEFuc3dlcnMsIFwlRGF0YSApOwogICAgICAgICAgICAgICAgbXkgJURhdGEyOwogICAgICAgICAgICAgICAgJERhdGEye0Fuc3dlcn0gICAgICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdub3QgYW5zd2VyZWQnKTsKICAgICAgICAgICAgICAgICREYXRhMntBbnN3ZXJQZXJjZW50fSA9ICRQZXJjZW50OwogICAgICAgICAgICAgICAgcHVzaCggQEFuc3dlcnMsIFwlRGF0YTIgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdXRwdXQgYWxsIGFuc3dlcnMgb2YgdGhlIHN1cnZleQogICAgICAgICAgICBmb3IgbXkgJFJvdyAoQEFuc3dlcnMpIHsKICAgICAgICAgICAgICAgICRSb3ctPntBbnN3ZXJQZXJjZW50VGFibGV9ID0gJFJvdy0+e0Fuc3dlclBlcmNlbnR9OwogICAgICAgICAgICAgICAgaWYgKCAhJFJvdy0+e0Fuc3dlclBlcmNlbnR9ICkgewogICAgICAgICAgICAgICAgICAgICRSb3ctPntBbnN3ZXJQZXJjZW50VGFibGV9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleUVkaXRTdGF0c0Fuc3dlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiAkUm93LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ1N1cnZleScsCiAgICAgICAgVmFsdWUgPT4gXCVKU0RhdGEsCiAgICApOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRTdXJ2ZXlab29tJywKICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICApOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgY29tbW9uIG9iamVjdHMKICAgICV7JFNlbGZ9ID0gJVBhcmFtOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CgogICAgbXkgJUFuc3dlcnM7CiAgICBteSAlRXJyb3JzOwogICAgbXkgQFF1ZXN0aW9uTGlzdDsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0CiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHB1YmxpYyBzdXJ2ZXkgdm90ZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1B1YmxpY1N1cnZleVZvdGUnICkgewogICAgICAgIG15ICRQdWJsaWNTdXJ2ZXlLZXkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUHVibGljU3VydmV5S2V5JyApOwoKICAgICAgICAjIGdldCBzdXJ2ZXkgZnJvbSBwdWJsaWMga2V5CiAgICAgICAgbXkgJVN1cnZleSA9ICRTdXJ2ZXlPYmplY3QtPlB1YmxpY1N1cnZleUdldCgKICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICAgICAgKTsKICAgICAgICBpZiAoICRTdXJ2ZXl7U3VydmV5SUR9ICkgewogICAgICAgICAgICBAUXVlc3Rpb25MaXN0ID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25MaXN0KAogICAgICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBmb3IgbXkgJFF1ZXN0aW9uIChAUXVlc3Rpb25MaXN0KSB7CiAgICAgICAgICAgICAgICBpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdZZXNObycgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFB1YmxpY1N1cnZleVZvdGUxID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSgKICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW0gPT4gIlB1YmxpY1N1cnZleVZvdGUxWyRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9XSIKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRRdWVzdGlvbi0+e0Fuc3dlclJlcXVpcmVkfQogICAgICAgICAgICAgICAgICAgICAgICAmJiAoICEkUHVibGljU3VydmV5Vm90ZTEgfHwgIWxlbmd0aCAkUHVibGljU3VydmV5Vm90ZTEgKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkRXJyb3JzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9eydBbnN3ZXIgcmVxdWlyZWQnfSA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSA9ICRQdWJsaWNTdXJ2ZXlWb3RlMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1JhZGlvJyApIHsKICAgICAgICAgICAgICAgICAgICBteSAkUHVibGljU3VydmV5Vm90ZTIgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKAogICAgICAgICAgICAgICAgICAgICAgICBQYXJhbSA9PiAiUHVibGljU3VydmV5Vm90ZTJbJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH1dIgogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJFF1ZXN0aW9uLT57QW5zd2VyUmVxdWlyZWR9CiAgICAgICAgICAgICAgICAgICAgICAgICYmICggISRQdWJsaWNTdXJ2ZXlWb3RlMiB8fCAhbGVuZ3RoICRQdWJsaWNTdXJ2ZXlWb3RlMiApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcnJvcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH17J0Fuc3dlciByZXF1aXJlZCd9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9ID0gJFB1YmxpY1N1cnZleVZvdGUyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnQ2hlY2tib3gnICkgewogICAgICAgICAgICAgICAgICAgIG15IEBBbnN3ZXJMaXN0ID0gJFN1cnZleU9iamVjdC0+QW5zd2VyTGlzdCgKICAgICAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfQogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQW5zd2VyIChAQW5zd2VyTGlzdCkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkUHVibGljU3VydmV5Vm90ZTMgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW0gPT4gIlB1YmxpY1N1cnZleVZvdGUzWyRBbnN3ZXItPntBbnN3ZXJJRH1dIgogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRQdWJsaWNTdXJ2ZXlWb3RlMyAmJiAkUHVibGljU3VydmV5Vm90ZTMgZXEgJ1llcycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEB7ICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IH0sICRBbnN3ZXItPntBbnN3ZXJJRH07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkUXVlc3Rpb24tPntBbnN3ZXJSZXF1aXJlZH0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIWRlZmluZWQgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWYgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gbmUgJ0FSUkFZJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICFAeyAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEVycm9yc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfXsnQW5zd2VyIHJlcXVpcmVkJ30gPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1RleHRhcmVhJyApIHsKICAgICAgICAgICAgICAgICAgICBteSAkUHVibGljU3VydmV5Vm90ZTQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKAogICAgICAgICAgICAgICAgICAgICAgICBQYXJhbSA9PiAiUHVibGljU3VydmV5Vm90ZTRbJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH1dIgogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgcmljaCB0ZXh0IGlzIGVuYWJsZWQKICAgICAgICAgICAgICAgICAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkUHVibGljU3VydmV5Vm90ZTQgPSAoIGxlbmd0aCAkUHVibGljU3VydmV5Vm90ZTQgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAiXCRodG1sL3RleHRcJCAkUHVibGljU3VydmV5Vm90ZTQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRRdWVzdGlvbi0+e0Fuc3dlclJlcXVpcmVkfQogICAgICAgICAgICAgICAgICAgICAgICAmJgogICAgICAgICAgICAgICAgICAgICAgICAoICEkUHVibGljU3VydmV5Vm90ZTQgfHwgIWxlbmd0aCAkUHVibGljU3VydmV5Vm90ZTQgKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkRXJyb3JzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9eydBbnN3ZXIgcmVxdWlyZWQnfSA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9ID0gJFB1YmxpY1N1cnZleVZvdGU0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnTlBTJyApIHsKICAgICAgICAgICAgICAgICAgICBteSAkUHVibGljU3VydmV5Vm90ZTUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKAogICAgICAgICAgICAgICAgICAgICAgICBQYXJhbSA9PiAiUHVibGljU3VydmV5Vm90ZTVbJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH1dIgogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJFF1ZXN0aW9uLT57QW5zd2VyUmVxdWlyZWR9CiAgICAgICAgICAgICAgICAgICAgICAgICYmICggISRQdWJsaWNTdXJ2ZXlWb3RlNSB8fCAhbGVuZ3RoICRQdWJsaWNTdXJ2ZXlWb3RlNSApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcnJvcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH17J0Fuc3dlciByZXF1aXJlZCd9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9ID0gJFB1YmxpY1N1cnZleVZvdGU1OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIElmIHdlIGRpZG4ndCBoYXZlIGVycm9ycywganVzdCBzYXZlIHRoZSBhbnN3ZXJzCiAgICAgICAgICAgIGlmICggIXNjYWxhciBrZXlzICVFcnJvcnMgKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFF1ZXN0aW9uIChAUXVlc3Rpb25MaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnWWVzTm8nICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU3VydmV5T2JqZWN0LT5QdWJsaWNBbnN3ZXJTZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJFB1YmxpY1N1cnZleUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgICAgICA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZvdGVWYWx1ZSAgICAgICA9PiAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnUmFkaW8nICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU3VydmV5T2JqZWN0LT5QdWJsaWNBbnN3ZXJTZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJFB1YmxpY1N1cnZleUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgICAgICA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZvdGVWYWx1ZSAgICAgICA9PiAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnQ2hlY2tib3gnICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSBAQW5zd2VyTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlckxpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9CiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiByZWYgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gZXEgJ0FSUkFZJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgQHsgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEFuc3dlciAoIEB7ICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+UHVibGljQW5zd2VyU2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJFB1YmxpY1N1cnZleUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCAgICAgID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWb3RlVmFsdWUgICAgICAgPT4gJEFuc3dlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1RleHRhcmVhJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+UHVibGljQW5zd2VyU2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEICAgICAgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWb3RlVmFsdWUgICAgICAgPT4gJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ05QUycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRTdXJ2ZXlPYmplY3QtPlB1YmxpY0Fuc3dlclNldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUHVibGljU3VydmV5S2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCAgICAgID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVm90ZVZhbHVlICAgICAgID0+ICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHNldCBzdXJ2ZXkgcmVxdWVzdCBhcyBpbnZhbGlkCiAgICAgICAgICAgICAgICAkU3VydmV5T2JqZWN0LT5QdWJsaWNTdXJ2ZXlJbnZhbGlkU2V0KAogICAgICAgICAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUHVibGljU3VydmV5S2V5LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ1N1cnZleScpLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHByaW50IHRoZSBtYWluIHRhYmxlLgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljU3VydmV5TWVzc2FnZScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VUeXBlICAgPT4gVHJhbnNsYXRhYmxlKCdTdXJ2ZXkgSW5mb3JtYXRpb24nKSwKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZUhlYWRlciA9PiBUcmFuc2xhdGFibGUoJ1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nKSwKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJyksCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNTdXJ2ZXknLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzaG93IHN1cnZleSB2b3RlIGRhdGEKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTaG93Vm90ZURhdGEnICkgewogICAgICAgIG15ICRQdWJsaWNTdXJ2ZXlLZXkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUHVibGljU3VydmV5S2V5JyApOwoKICAgICAgICAjIHJldHVybiBpZiBmZWF0dXJlIG5vdCBlbmFibGVkCiAgICAgICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCJTdXJ2ZXk6OlNob3dWb3RlRGF0YSIpICkgewogICAgICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljU3VydmV5TWVzc2FnZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlVHlwZSAgID0+IFRyYW5zbGF0YWJsZSgnU3VydmV5IE1lc3NhZ2UhJyksCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZUhlYWRlciA9PiBUcmFuc2xhdGFibGUoJ01vZHVsZSBub3QgZW5hYmxlZC4nKSwKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICAgICAgID0+IFRyYW5zbGF0YWJsZSgKICAgICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLicKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNTdXJ2ZXknLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIEdldCB0aGUgcmVxdWVzdCBkYXRhIGFuZCBzdGFydCBzaG93aW5nIHRoZSBkYXRhCiAgICAgICAgbXkgJVJlcXVlc3REYXRhID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdEdldCgKICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFN1cnZleUlEICA9ICRSZXF1ZXN0RGF0YXtTdXJ2ZXlJRH07CiAgICAgICAgbXkgJFRpY2tldElEICA9ICRSZXF1ZXN0RGF0YXtUaWNrZXRJRH07CiAgICAgICAgbXkgJFJlcXVlc3RJRCA9ICRSZXF1ZXN0RGF0YXtSZXF1ZXN0SUR9OwoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSBleGlzdHMKICAgICAgICBteSAkU3VydmV5RXhpc3RzID0gJFN1cnZleU9iamVjdC0+RWxlbWVudEV4aXN0cygKICAgICAgICAgICAgRWxlbWVudElEID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgRWxlbWVudCAgID0+ICdTdXJ2ZXknCiAgICAgICAgKTsKICAgICAgICBteSAkUmVxdWVzdEV4aXN0cyA9ICRTdXJ2ZXlPYmplY3QtPkVsZW1lbnRFeGlzdHMoCiAgICAgICAgICAgIEVsZW1lbnRJRCA9PiAkUmVxdWVzdElELAogICAgICAgICAgICBFbGVtZW50ICAgPT4gJ1JlcXVlc3QnCiAgICAgICAgKTsKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFJlcXVlc3RFeGlzdHMgbmUgJ1llcycgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIldyb25nIHB1YmxpYyBzdXJ2ZXkga2V5OiAkUHVibGljU3VydmV5S2V5ISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnaW5mbycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiAnU3VydmV5JywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljU3VydmV5TWVzc2FnZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlVHlwZSAgID0+IFRyYW5zbGF0YWJsZSgnU3VydmV5IEVycm9yIScpLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VIZWFkZXIgPT4gVHJhbnNsYXRhYmxlKCdJbnZhbGlkIHN1cnZleSBrZXkuJyksCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgICAgICA9PiBUcmFuc2xhdGFibGUoCiAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLicKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNTdXJ2ZXknLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdTdXJ2ZXkgVm90ZScpLAogICAgICAgICk7CgogICAgICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoCiAgICAgICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgUHVibGljICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNsZWFuIEhUTUwKICAgICAgICBpZiAoICRTdXJ2ZXl7SW50cm9kdWN0aW9ufSApIHsKICAgICAgICAgICAgJFN1cnZleXtJbnRyb2R1Y3Rpb259ID1+IHN7XEFcJGh0bWxcL3RleHRcJFxzKC4qKX17JDF9eG1zOwoKICAgICAgICAgICAgbXkgJEhUTUxDb250ZW50ID0gJDE7CiAgICAgICAgICAgIGlmICggISRIVE1MQ29udGVudCApIHsKICAgICAgICAgICAgICAgICRTdXJ2ZXl7SW50cm9kdWN0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFN1cnZleXtJbnRyb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHByaW50IHRoZSBtYWluIHRhYmxlLgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdQdWJsaWNTdXJ2ZXlWb3RlRGF0YScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVN1cnZleSwKICAgICAgICAgICAgICAgIE1lc3NhZ2VUeXBlID0+IFRyYW5zbGF0YWJsZSgnU3VydmV5IFZvdGUgRGF0YScpLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgbXkgQFF1ZXN0aW9uTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uTGlzdCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRRdWVzdGlvbiAoQFF1ZXN0aW9uTGlzdCkgewoKICAgICAgICAgICAgbXkgJENsYXNzID0gJyc7CiAgICAgICAgICAgIGlmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1RleHRhcmVhJyApIHsKICAgICAgICAgICAgICAgICRDbGFzcyA9ICdUZXh0YXJlYSc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRSZXF1aXJlZFRleHQgPSAnJzsKICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb24tPntBbnN3ZXJSZXF1aXJlZH0gKSB7CiAgICAgICAgICAgICAgICAkQ2xhc3MgLj0gJyBNYW5kYXRvcnknOwogICAgICAgICAgICAgICAgJFJlcXVpcmVkVGV4dCA9ICcqICc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljU3VydmV5Vm90ZVF1ZXN0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICV7JFF1ZXN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENsYXNzLAogICAgICAgICAgICAgICAgICAgIFJlcXVpcmVkVGV4dCA9PiAkUmVxdWlyZWRUZXh0LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbXkgQEFuc3dlcnM7CiAgICAgICAgICAgIGlmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1JhZGlvJyB8fCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnQ2hlY2tib3gnIHx8ICRRdWVzdGlvbi0+e1R5cGV9IGVxICdOUFMnICkgewogICAgICAgICAgICAgICAgbXkgQEFuc3dlckxpc3Q7CiAgICAgICAgICAgICAgICBAQW5zd2VyTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVHZXQoCiAgICAgICAgICAgICAgICAgICAgUmVxdWVzdElEICA9PiAkUmVxdWVzdElELAogICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgZm9yIG15ICRSb3cgKEBBbnN3ZXJMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJUFuc3dlciA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlckdldCgKICAgICAgICAgICAgICAgICAgICAgICAgQW5zd2VySUQgPT4gJFJvdy0+e1ZvdGVWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBteSAlRGF0YTsKICAgICAgICAgICAgICAgICAgICAkRGF0YXtBbnN3ZXJ9ID0gJEFuc3dlcntBbnN3ZXJ9OwogICAgICAgICAgICAgICAgICAgIHB1c2goIEBBbnN3ZXJzLCBcJURhdGEgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdZZXNObycgfHwgJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1RleHRhcmVhJyApIHsKICAgICAgICAgICAgICAgIG15IEBMaXN0ID0gJFN1cnZleU9iamVjdC0+Vm90ZUdldCgKICAgICAgICAgICAgICAgICAgICBSZXF1ZXN0SUQgID0+ICRSZXF1ZXN0SUQsCiAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJURhdGE7CiAgICAgICAgICAgICAgICAkRGF0YXtBbnN3ZXJ9ID0gJExpc3RbMF0tPntWb3RlVmFsdWV9OwoKICAgICAgICAgICAgICAgICMgY2xlYW4gSFRNTAogICAgICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnVGV4dGFyZWEnICYmICREYXRhe0Fuc3dlcn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJERhdGF7QW5zd2VyfSA9fiBze1xBXCRodG1sXC90ZXh0XCRccyguKil9eyQxfXhtczsKICAgICAgICAgICAgICAgICAgICAkRGF0YXtBbnN3ZXJ9ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJERhdGF7QW5zd2VyfSwKICAgICAgICAgICAgICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7QW5zd2VyfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKS0+VG9Bc2NpaSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkRGF0YXtBbnN3ZXJ9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHB1c2goIEBBbnN3ZXJzLCBcJURhdGEgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IgbXkgJFJvdyAoQEFuc3dlcnMpIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY1N1cnZleVZvdGVBbnN3ZXInLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAleyRSb3d9LAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnUHVibGljU3VydmV5JywKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzaG93IHN1cnZleQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgbXkgJFB1YmxpY1N1cnZleUtleSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdQdWJsaWNTdXJ2ZXlLZXknICk7CiAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdTdXJ2ZXknKSwKICAgICk7CgogICAgbXkgJFVzZWRTdXJ2ZXlLZXkgPSAkU3VydmV5T2JqZWN0LT5QdWJsaWNTdXJ2ZXlHZXQoCiAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICAgICAgSW52YWxpZCAgICAgICAgID0+IDEsCiAgICApOwoKICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5QdWJsaWNTdXJ2ZXlHZXQoCiAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICApOwoKICAgICRTdXJ2ZXl7UHVibGljU3VydmV5S2V5fSA9ICRQdWJsaWNTdXJ2ZXlLZXk7CgogICAgaWYgKCRVc2VkU3VydmV5S2V5KSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY1N1cnZleU1lc3NhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIE1lc3NhZ2VUeXBlICAgPT4gVHJhbnNsYXRhYmxlKCdTdXJ2ZXkgSW5mb3JtYXRpb24nKSwKICAgICAgICAgICAgICAgIE1lc3NhZ2VIZWFkZXIgPT4gVHJhbnNsYXRhYmxlKCdUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJyksCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5LicpLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCJTdXJ2ZXk6OlNob3dWb3RlRGF0YSIpICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1Nob3dBbnN3ZXJzQnV0dG9uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUHVibGljU3VydmV5S2V5LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRTdXJ2ZXl7U3VydmV5SUR9ICkgewoKICAgICAgICAjIGNsZWFuIEhUTUwgYW5kIHByb2Nlc3MgaW50cm9kdWN0aW9uIHRleHQKICAgICAgICAkU3VydmV5e0ludHJvZHVjdGlvbn0gPX4gc3tcQVwkaHRtbFwvdGV4dFwkXHMoLiopfXskMX14bXM7CiAgICAgICAgbXkgJEhUTUxDb250ZW50ID0gJDE7CiAgICAgICAgaWYgKCAhJEhUTUxDb250ZW50ICkgewogICAgICAgICAgICAkU3VydmV5e0ludHJvZHVjdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFN1cnZleXtJbnRyb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY1N1cnZleScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVN1cnZleSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCB0aWNrZXQKICAgICAgICBteSAlUmVxdWVzdERhdGEgPSAkU3VydmV5T2JqZWN0LT5SZXF1ZXN0R2V0KAogICAgICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJFB1YmxpY1N1cnZleUtleSwKICAgICAgICApOwogICAgICAgIG15ICVUaWNrZXQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPlRpY2tldEdldCgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFJlcXVlc3REYXRhe1RpY2tldElEfSwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljVGlja2V0JywKICAgICAgICAgICAgRGF0YSA9PiB7JVRpY2tldH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBJZiB3ZSBoYWQgZXJyb3JzLCBAUXVlc3Rpb25MaXN0IGlzIGFscmVhZHkgZmlsbGVkLCBzbyBsZXQncyBzYXZlIGEgU1FMIHF1ZXJ5CiAgICAgICAgaWYgKCAhQFF1ZXN0aW9uTGlzdCApIHsKICAgICAgICAgICAgQFF1ZXN0aW9uTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uTGlzdCgKICAgICAgICAgICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXl7U3VydmV5SUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgZm9yIG15ICRRdWVzdGlvbiAoQFF1ZXN0aW9uTGlzdCkgewoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdQdWJsaWNRdWVzdGlvbnMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRDbGFzcyAgICAgICAgPSAnJzsKICAgICAgICAgICAgbXkgJFJlcXVpcmVkVGV4dCA9ICcnOwogICAgICAgICAgICBteSAkRXJyb3JUZXh0OwogICAgICAgICAgICBpZiAoICRRdWVzdGlvbi0+e0Fuc3dlclJlcXVpcmVkfSApIHsKICAgICAgICAgICAgICAgICRDbGFzcyAuPSAnTWFuZGF0b3J5JzsKICAgICAgICAgICAgICAgICRSZXF1aXJlZFRleHQgPSAnKiAnOwoKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkRXJyb3JzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9CiAgICAgICAgICAgICAgICAmJiByZWYgJEVycm9yc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSBlcSAnSEFTSCcKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgJUVycm9ycyBob2xkcyBhIGtleSBmb3IgZWFjaCBRdWVzdGlvbklEIHRoYXQgaGFkIGVycm9ycy4KICAgICAgICAgICAgICAgICMgVGhlIHZhbHVlIGlzIGEgaGFzaCByZWZlcmVuY2Ugd2hvJ3Mga2V5cyBhcmUgdGhlIEVycm9yVHlwZQogICAgICAgICAgICAgICAgIyBUaGUgdmFsdWUgaXMgc2V0IHRvIDEKICAgICAgICAgICAgICAgICMgUmVhc29uIGZvciB0aGlzIGlzLCB0aGF0IHRoZSB2YWx1ZSBtYXkgYmUgdXNlZCB0byBkaXNwbGF5CiAgICAgICAgICAgICAgICAjIGEgbW9yZSBzcGVjaWZpYyBFcnJvciBNZXNzYWdlIGNvbnRhaW5pbmcgdGV4dCBxdWVzdGlvbiBzcGVjaWZpYyBlcnJvciBtZXNzYWdlcwogICAgICAgICAgICAgICAgIyBvciBzaW1pbGFyLiBTbyBhIHR5cGUgc3BlY2lmaWMgZXJyb3IgbWVzc2FnZSB0cmVhdG1lbnQgd291bGQgYmUgcG9zc2libGUgaGVyZS4KCiAgICAgICAgICAgICAgICAjIEF0IHRoZSB0aW1lIG9mIGNyZWF0aW9uIHRoZSBvbmx5IGVycm9yIHR5cGUgd2FzICdBbnN3ZXIgcmVxdWlyZWQnLgogICAgICAgICAgICAgICAgIyBTbyBhIGRhdGEgc3RydWN0dXJlIGxvb2tzIGxpa2UgdGhpczoKICAgICAgICAgICAgICAgICMgJUVycm9ycyA9ICgKICAgICAgICAgICAgICAgICMgICAxID0+IHsKICAgICAgICAgICAgICAgICMgICAgICAgICdBbnN3ZXIgcmVxdWlyZWQnID0+IDEsCiAgICAgICAgICAgICAgICAjICAgfSwKICAgICAgICAgICAgICAgICMgICAyID0+IHsKICAgICAgICAgICAgICAgICMgICAgICAgICdBbnN3ZXIgcmVxdWlyZWQnID0+IDEsCiAgICAgICAgICAgICAgICAjICAgIH0sCiAgICAgICAgICAgICAgICAjICk7CgogICAgICAgICAgICAgICAgIyBMYXRlciBvbiBhIERhdGEgc3RydWN0dXJlIGxpa2UgdGhlIGZvbGxvd2luZyB3b3VsZCBiZSBwb3NzaWJsZToKICAgICAgICAgICAgICAgICMgJUVycm9ycyA9ICgKICAgICAgICAgICAgICAgICMgICAxID0+IHsKICAgICAgICAgICAgICAgICMgICAgICAgICdJbnZhbGlkIHRleHQnID0+ICdZb3VyIFRleHQgZGlkIG5vdCBjb250YWluIHRoZSBPcmRlciBudW1iZXInLAogICAgICAgICAgICAgICAgIyAgIH0sCiAgICAgICAgICAgICAgICAjICAgMiA9PiB7CiAgICAgICAgICAgICAgICAjICAgICAgICAnQW5zd2VyIHJlcXVpcmVkJyA9PiAxLAogICAgICAgICAgICAgICAgIyAgICB9LAogICAgICAgICAgICAgICAgIyApOwogICAgICAgICAgICAgICAgIyBBcyBzb29uIGFzIHRoaXMgaXMgbmVlZGVkLCB0aGUgZm9sbG93aW5nICRFcnJvclRleHQgc3RyaW5nIGJ1aWxkaW5nIGhhcyB0byBiZQogICAgICAgICAgICAgICAgIyBjaGFuZ2VkLgoKICAgICAgICAgICAgICAgICMgVGhlIHN0cmluZyBidWlsZGluZyB3b3JrcyBhdCB0aGUgbW9tZW50IHRoaXMgd2F5OgogICAgICAgICAgICAgICAgIyAxLiBHbyB0aHJvdWdoIGFsbCBrZXlzIG9mIHRoZSAleyAkRXJyb3JzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IH0gaGFzaAogICAgICAgICAgICAgICAgIyAyLiBEbyBhIHRyYW5zbGF0aW9uIGZvciBlYWNoIGtleSAoaW5zaWRlIHRoZSAibWFwIHt9Ii1jbGF1c2UpCiAgICAgICAgICAgICAgICAjIDMuIGpvaW4gdGhlIHJlc3VsdGluZyBBcnJheSBieSBwdXR0aW5nICI8L3A+XG48L3A+IiBpbiBiZXR3ZWVuIHRoZSBBcnJheSBrZXlzCiAgICAgICAgICAgICAgICAjIDQuIGFkZCAnPHA+JyBhdCB0aGUgYmVnaW5uaW5nIGFuZCAnPC9wPicgYXQgdGhlIGVuZC4KCiAgICAgICAgICAgICAgICAkRXJyb3JUZXh0ID0gJzxwPicKICAgICAgICAgICAgICAgICAgICAuICgKICAgICAgICAgICAgICAgICAgICBqb2luICI8L3A+XG48cD4iLAogICAgICAgICAgICAgICAgICAgIG1hcCB7ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkXykgfQogICAgICAgICAgICAgICAgICAgICAgICBrZXlzICV7ICRFcnJvcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAuICc8L3A+JzsKCiAgICAgICAgICAgICAgICAkRXJyb3JUZXh0ID0gPDxFTkQ7CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJUb29sdGlwRXJyb3IiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iVG9vbHRpcCBUb25ndWVMZWZ0Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJUb25ndWUiID48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50IiByb2xlPSJ0b29sdGlwIiBzdHlsZT0id29yZC13cmFwOiBicmVhay13b3JkOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRXJyb3JUZXh0CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpFTkQKICAgICAgICAgICAgICAgICRDbGFzcyAuPSAnIEVycm9yJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnWWVzTm8nICkgewoKICAgICAgICAgICAgICAgIG15ICVTZWxlY3RlZCA9ICgKICAgICAgICAgICAgICAgICAgICBZZXNTZWxlY3RlZCA9PiAoCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IGVxICdZZXMnCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICA/ICdjaGVja2VkPSJjaGVja2VkIicKICAgICAgICAgICAgICAgICAgICA6ICcnLAogICAgICAgICAgICAgICAgICAgIE5vU2VsZWN0ZWQgPT4gKAogICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSBlcSAnTm8nCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICA/ICdjaGVja2VkPSJjaGVja2VkIicKICAgICAgICAgICAgICAgICAgICA6ICcnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdQdWJsaWNBbnN3ZXJZZXNObycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICV7JFF1ZXN0aW9ufSwKICAgICAgICAgICAgICAgICAgICAgICAgJVNlbGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvclRleHQgICAgPT4gJEVycm9yVGV4dCB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZWRUZXh0ID0+ICRSZXF1aXJlZFRleHQsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnUmFkaW8nICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljQW5zd2VyUmFkaW8nLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAleyRRdWVzdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yVGV4dCAgICA9PiAkRXJyb3JUZXh0IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZFRleHQgPT4gJFJlcXVpcmVkVGV4dCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15IEBBbnN3ZXJMaXN0ID0gJFN1cnZleU9iamVjdC0+QW5zd2VyTGlzdCgKICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGZvciBteSAkQW5zd2VyIChAQW5zd2VyTGlzdCkgewoKICAgICAgICAgICAgICAgICAgICBteSAkU2VsZWN0ZWQgPSAnJzsKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gZXEgJEFuc3dlci0+e0Fuc3dlcklEfQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZWN0ZWQgPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljQW5zd2VyUmFkaW9iJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAleyRBbnN3ZXJ9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5zd2VyU2VsZWN0ZWQgPT4gJFNlbGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnQ2hlY2tib3gnICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljQW5zd2VyQ2hlY2tib3gnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAleyRRdWVzdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yVGV4dCAgICA9PiAkRXJyb3JUZXh0IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZFRleHQgPT4gJFJlcXVpcmVkVGV4dCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15IEBBbnN3ZXJMaXN0ID0gJFN1cnZleU9iamVjdC0+QW5zd2VyTGlzdCgKICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGZvciBteSAkQW5zd2VyIChAQW5zd2VyTGlzdCkgewogICAgICAgICAgICAgICAgICAgIG15ICRTZWxlY3RlZCA9ICcnOwogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfQogICAgICAgICAgICAgICAgICAgICAgICAmJiByZWYgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gZXEgJ0FSUkFZJwogICAgICAgICAgICAgICAgICAgICAgICAmJiBAeyAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICYmIHNjYWxhciBncmVwIHsgJF8gZXEgJEFuc3dlci0+e0Fuc3dlcklEfSB9CiAgICAgICAgICAgICAgICAgICAgICAgIEB7ICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IH0KICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGVjdGVkID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY0Fuc3dlckNoZWNrYm94YicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJXskQW5zd2VyfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuc3dlclNlbGVjdGVkID0+ICRTZWxlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1RleHRhcmVhJyApIHsKICAgICAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IHx8ICcnOwogICAgICAgICAgICAgICAgJFZhbHVlID1+IHMvXlwkaHRtbFwvdGV4dFwkXHMvLzsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY0Fuc3dlclRleHRhcmVhJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXskUXVlc3Rpb259LAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvclRleHQgICAgPT4gJEVycm9yVGV4dCB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZWRUZXh0ID0+ICRSZXF1aXJlZFRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiByaWNoIHRleHQgaXMgZW5hYmxlZAogICAgICAgICAgICAgICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5DdXN0b21lclNldFJpY2hUZXh0UGFyYW1ldGVycygKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ05QUycgKSB7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljQW5zd2VyTlBTJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXskUXVlc3Rpb259LAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvclRleHQgICAgPT4gJEVycm9yVGV4dCB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZWRUZXh0ID0+ICRSZXF1aXJlZFRleHQsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBteSBAQW5zd2VyTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlckxpc3QoCiAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEFuc3dlciAoQEFuc3dlckxpc3QpIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJFNlbGVjdGVkID0gJyc7CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICYmICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IGVxICRBbnN3ZXItPntBbnN3ZXJJRH0KICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGVjdGVkID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY0Fuc3dlck5QU2InLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICV7JEFuc3dlcn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbnN3ZXJTZWxlY3RlZCA9PiAkU2VsZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdQdWJsaWNTdXJ2ZXlNZXNzYWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBNZXNzYWdlVHlwZSAgID0+IFRyYW5zbGF0YWJsZSgnU3VydmV5IEVycm9yIScpLAogICAgICAgICAgICAgICAgTWVzc2FnZUhlYWRlciA9PiBUcmFuc2xhdGFibGUoJ0ludmFsaWQgc3VydmV5IGtleS4nKSwKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgICAgPT4gVHJhbnNsYXRhYmxlKAogICAgICAgICAgICAgICAgICAgICdUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLicKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnUHVibGljU3VydmV5JywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OlN1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgU3VydmV5TGlzdFNob3coKQoKUmV0dXJucyBhIGxpc3Qgb2Ygc3VydmV5cyBsaXN0IHdpdGggcGFnaW5hdGlvbi4KClRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byBMPEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OlRpY2tldDo6VGlja2V0TGlzdFNob3coKT4KaW4gRjxLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L1RpY2tldC5wbT4uCgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPlN1cnZleUxpc3RTaG93KAogICAgICAgIFN1cnZleUlEcyAgPT4gJFN1cnZleUlEc1JlZiwgICAgICAgICAgICAgICAgICAgICAgIyB0b3RhbCBsaXN0IG9mIHN1cnZleXMgaWRzLCB0aGF0IGNhbiBiZSBsaXN0ZWQKICAgICAgICBUb3RhbCAgICAgID0+IHNjYWxhciBAeyAkU3VydmV5SURzUmVmIH0sICAgICAgICAgICMgdG90YWwgbnVtYmVyIG9mIGxpc3QgaXRlbXMsIGNoYW5nZXMgaW4gdGhpcyBjYXNlCiAgICAgICAgVmlldyAgICAgICA9PiAkU2VsZi0+e1ZpZXd9LCAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyAnU21hbGwnCiAgICAgICAgRmlsdGVyICAgICA9PiAnQWxsJywKICAgICAgICBGaWx0ZXJzICAgID0+IFwlTmF2QmFyRmlsdGVyLAogICAgICAgIEZpbHRlckxpbmsgPT4gJExpbmtGaWx0ZXIsCiAgICAgICAgVGl0bGVOYW1lICA9PiAnT3ZlcnZpZXc6IFN1cnZleScsCiAgICAgICAgVGl0bGVWYWx1ZSA9PiAkU2VsZi0+e0ZpbHRlcn0sCiAgICAgICAgRW52ICAgICAgICA9PiAkU2VsZiwKICAgICAgICBMaW5rUGFnZSAgID0+ICRMaW5rUGFnZSwKICAgICk7Cgo9Y3V0CgpzdWIgU3VydmV5TGlzdFNob3cgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHRha2Ugb2JqZWN0IHJlZiB0byBsb2NhbCwgcmVtb3ZlIGl0IGZyb20gJVBhcmFtIChwcmV2ZW50IG1lbW9yeSBsZWFrKQogICAgbXkgJEVudiA9ICRQYXJhbXtFbnZ9OwogICAgZGVsZXRlICRQYXJhbXtFbnZ9OwoKICAgIG15ICVKU0RhdGE7CgogICAgIyBsb29rdXAgbGF0ZXN0IHVzZWQgdmlldyBtb2RlCiAgICBpZiAoICEkUGFyYW17Vmlld30gJiYgJFNlbGYtPnsgJ1VzZXJTdXJ2ZXlPdmVydmlldycgLiAkRW52LT57QWN0aW9ufSB9ICkgewogICAgICAgICRQYXJhbXtWaWV3fSA9ICRTZWxmLT57ICdVc2VyU3VydmV5T3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0gfTsKICAgIH0KCiAgICAjIHNldCBmcm9udGVuZAogICAgbXkgJEZyb250ZW5kID0gJFBhcmFte0Zyb250ZW5kfSB8fCAnQWdlbnQnOwoKICAgICMgc2V0IGRlZmF1bHQgdmlldyBtb2RlIHRvICdzbWFsbCcKICAgIG15ICRWaWV3ID0gJFBhcmFte1ZpZXd9IHx8ICdTbWFsbCc7CgogICAgIyBzdG9yZSBsYXRlc3QgdmlldyBtb2RlCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdVc2VyU3VydmV5T3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0sCiAgICAgICAgVmFsdWUgICAgID0+ICRWaWV3LAogICAgKTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgYmFja2VuZCBmcm9tIGNvbmZpZwogICAgbXkgJEJhY2tlbmRzID0gJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkZyb250ZW5kOjpPdmVydmlldycpOwogICAgaWYgKCAhJEJhY2tlbmRzICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnTmVlZCBjb25maWcgb3B0aW9uIFN1cnZleTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3JywKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgZm9yIGhhc2gtcmVmCiAgICBpZiAoIHJlZiAkQmFja2VuZHMgbmUgJ0hBU0gnICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnQ29uZmlnIG9wdGlvbiBTdXJ2ZXk6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmIScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBjb25maWcga2V5CiAgICBpZiAoICEkQmFja2VuZHMtPnskVmlld30gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICJObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAnJFZpZXcnISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG5hdmlnYXRpb24gYmFyCiAgICBteSAkU3RhcnRIaXQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKAogICAgICAgIFBhcmFtID0+ICdTdGFydEhpdCcsCiAgICApIHx8IDE7CgogICAgIyBnZXQgcGVyc29uYWwgcGFnZSBzaG93biBjb3VudAogICAgbXkgJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5ID0gJ1VzZXJTdXJ2ZXlPdmVydmlldycgLiAkVmlldyAuICdQYWdlU2hvd24nOwogICAgbXkgJFBhZ2VTaG93biAgICAgICAgICAgICAgID0gJFNlbGYtPnskUGFnZVNob3duUHJlZmVyZW5jZXNLZXl9IHx8IDEwOwogICAgbXkgJEdyb3VwICAgICAgICAgICAgICAgICAgID0gJ1N1cnZleU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CgogICAgIyBjaGVjayBzdGFydCBvcHRpb24sIGlmIGhpZ2hlciB0aGVuIGVsZW1lbnRzIGF2YWlsYWJsZSwgc2V0CiAgICAjIGl0IHRvIHRoZSBsYXN0IG92ZXJ2aWV3IHBhZ2UgKFRoYW5rcyB0byBTdGVmYW4gU2NobWlkdCEpCiAgICBpZiAoICRTdGFydEhpdCA+ICRQYXJhbXtUb3RhbH0gKSB7CiAgICAgICAgbXkgJFBhZ2VzID0gaW50KCAoICRQYXJhbXtUb3RhbH0gLyAkUGFnZVNob3duICkgKyAwLjk5OTk5ICk7CiAgICAgICAgJFN0YXJ0SGl0ID0gKCAoICRQYWdlcyAtIDEgKSAqICRQYWdlU2hvd24gKSArIDE7CiAgICB9CgogICAgIyBnZXQgZGF0YSBzZWxlY3Rpb24KICAgIG15ICVEYXRhOwogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKTsKICAgIGlmICggJENvbmZpZyAmJiAkQ29uZmlnLT57JEdyb3VwfSAmJiAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9ICkgewogICAgICAgICVEYXRhID0gJXsgJENvbmZpZy0+eyRHcm91cH0tPntEYXRhfSB9OwogICAgfQoKICAgICMgc2V0IHBhZ2UgbGltaXQgYW5kIGJ1aWxkIHBhZ2UgbmF2aWdhdGlvbgogICAgbXkgJExpbWl0ID0gJFBhcmFte0xpbWl0fSB8fCAyMF8wMDA7CiAgICBteSAlUGFnZU5hdiA9ICRTZWxmLT5QYWdlTmF2QmFyKAogICAgICAgIExpbWl0ICAgICA9PiAkTGltaXQsCiAgICAgICAgU3RhcnRIaXQgID0+ICRTdGFydEhpdCwKICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICBBbGxIaXRzICAgPT4gJFBhcmFte1RvdGFsfSB8fCAwLAogICAgICAgIEFjdGlvbiAgICA9PiAnQWN0aW9uPScgLiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgTGluayAgICAgID0+ICRQYXJhbXtMaW5rUGFnZX0sCiAgICApOwoKICAgICMgYnVpbGQgc2hvd24gc3VydmV5cyBwZXIgcGFnZQogICAgJFBhcmFte1JlcXVlc3RlZFVSTH0gICAgPSAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSI7CiAgICAkUGFyYW17R3JvdXB9ICAgICAgICAgICA9ICRHcm91cDsKICAgICRQYXJhbXtQcmVmZXJlbmNlc0tleX0gID0gJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5OwogICAgJFBhcmFte1BhZ2VTaG93blN0cmluZ30gPSAkU2VsZi0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5LAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYWdlU2hvd24sCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBEYXRhICAgICAgICA9PiBcJURhdGEsCiAgICApOwoKICAgICMgYnVpbGQgc3RhdHVzIHNlbGVjdGlvbgogICAgJFBhcmFte1N0YXRlU3RyfSA9ICRTZWxmLT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lID0+ICdTdGF0ZXMnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBNYXN0ZXIgID0+ICdNYXN0ZXInLAogICAgICAgICAgICBWYWxpZCAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgIEludmFsaWQgPT4gJ0ludmFsaWQnLAogICAgICAgICAgICBOZXcgICAgID0+ICdOZXcnLAogICAgICAgIH0sCiAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17U3VydmV5U2VhcmNofS0+e1N0YXRlc30sCiAgICApOwoKICAgICRQYXJhbXtGdWxsdGV4dH0gPSAkUGFyYW17U3VydmV5U2VhcmNofS0+e1doYXR9IHx8ICcnOwoKICAgICMgYnVpbGQgY3JlYXRlIHRpbWUgc2xvdHMKICAgICRQYXJhbXtTdXJ2ZXlDcmVhdGVUaW1lU3RhcnR9ID0gJFNlbGYtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICBQcmVmaXggICA9PiAnU3VydmV5Q3JlYXRlVGltZVN0YXJ0JywKICAgICAgICBGb3JtYXQgICA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICBEaWZmVGltZSA9PiAtKCAoIDYwICogNjAgKiAyNCApICogMzAgKSwKICAgICAgICAleyAkUGFyYW17U3VydmV5U2VhcmNofXtTdXJ2ZXlDcmVhdGVUaW1lU3RhcnR9IH0sCiAgICApOwogICAgJFBhcmFte1N1cnZleUNyZWF0ZVRpbWVTdG9wfSA9ICRTZWxmLT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgUHJlZml4ID0+ICdTdXJ2ZXlDcmVhdGVUaW1lU3RvcCcsCiAgICAgICAgRm9ybWF0ID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgICV7ICRQYXJhbXtTdXJ2ZXlTZWFyY2h9e1N1cnZleUNyZWF0ZVRpbWVTdG9wfSB9CiAgICApOwoKICAgICMgbmF2aWdhdGlvbiBiYXIgYXQgdGhlIGJlZ2lubmluZyBvZiBhIG92ZXJ2aWV3CiAgICAkUGFyYW17Vmlld30gPSAkVmlldzsKICAgICRTZWxmLT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhcicsCiAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgKTsKCiAgICAjIGJhY2sgbGluawogICAgaWYgKCAkUGFyYW17TGlua0JhY2t9ICkgewogICAgICAgICRKU0RhdGF7UHJvZmlsZX0gPSAkUGFyYW17UHJvZmlsZX07CgogICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQmFjaycsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGZpbHRlcnMKICAgIGlmICggJFBhcmFte0ZpbHRlcnN9ICkgewoKICAgICAgICAjIGdldCBnaXZlbiBmaWx0ZXJzCiAgICAgICAgbXkgQE5hdkJhckZpbHRlcnM7CiAgICAgICAgZm9yIG15ICRQcmlvICggc29ydCBrZXlzICV7ICRQYXJhbXtGaWx0ZXJzfSB9ICkgewogICAgICAgICAgICBwdXNoIEBOYXZCYXJGaWx0ZXJzLCAkUGFyYW17RmlsdGVyc30tPnskUHJpb307CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIGZpbHRlciBjb250ZW50CiAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhckZpbHRlcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgbG9vcCBvdmVyIGZpbHRlcnMKICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIGZvciBteSAkRmlsdGVyIChATmF2QmFyRmlsdGVycykgewoKICAgICAgICAgICAgIyBpbmNyZW1lbnQgZmlsdGVyIGNvdW50IGFuZCBidWlsZCBmaWx0ZXIgaXRlbQogICAgICAgICAgICAkQ291bnQrKzsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyRGaWx0ZXJ9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZmlsdGVyIGlzIHNlbGVjdGVkCiAgICAgICAgICAgIGlmICggJEZpbHRlci0+e0ZpbHRlcn0gZXEgJFBhcmFte0ZpbHRlcn0gKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkTm90JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAleyRGaWx0ZXJ9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgbG9vcCBvdmVyIGNvbmZpZ3VyZWQgYmFjay1lbmRzCiAgICBmb3IgbXkgJEJhY2tlbmQgKCBzb3J0IGtleXMgJXskQmFja2VuZHN9ICkgewoKICAgICAgICAjIGJ1aWxkIG5hdmlnYXRpb24gYmFyIHZpZXcgbW9kZQogICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJXsgJEJhY2tlbmRzLT57JEJhY2tlbmR9IH0sCiAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjdXJyZW50IHZpZXcgaXMgY29uZmlndXJlZCBpbiBiYWNrZW5kCiAgICAgICAgaWYgKCAkVmlldyBlcSAkQmFja2VuZCApIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZVNlbGVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgVmlldyAgID0+ICRCYWNrZW5kLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyVmlld01vZGVOb3RTZWxlY3RlZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXsgJEJhY2tlbmRzLT57JEJhY2tlbmR9IH0sCiAgICAgICAgICAgICAgICAgICAgRmlsdGVyID0+ICRQYXJhbXtGaWx0ZXJ9LAogICAgICAgICAgICAgICAgICAgIFZpZXcgICA9PiAkQmFja2VuZCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgcGFnZSBuYXZpZ2F0aW9uIGlzIGF2YWlsYWJsZQogICAgaWYgKCVQYWdlTmF2KSB7CiAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VOYXZCYXInLAogICAgICAgICAgICBEYXRhID0+IFwlUGFnZU5hdiwKICAgICAgICApOwoKICAgICAgICAjIGRvbid0IHNob3cgY29udGV4dCBzZXR0aW5ncyBpbiBBSkFYIGNhc2UgKGUuIGcuIGluIGN1c3RvbWVyIHRpY2tldCBoaXN0b3J5KSwKICAgICAgICAjICAgYmVjYXVzZSB0aGUgc3VibWl0IHdpdGggcGFnZSByZWxvYWQgd2lsbCBub3Qgd29yayB0aGVyZQogICAgICAgIGlmICggISRQYXJhbXtBSkFYfSApIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGV4dFNldHRpbmdzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICRTZWxmLT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ0pTRGF0YScsCiAgICAgICAgVmFsdWUgPT4gXCVKU0RhdGEsCiAgICAgICAgLAogICAgKTsKCiAgICAjIGJ1aWxkIEhUTUwgY29udGVudAogICAgbXkgJE91dHB1dE5hdkJhciA9ICRTZWxmLT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyJywKICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICApOwoKICAgICMgY3JlYXRlIG91dHB1dAogICAgbXkgJE91dHB1dFJhdyA9ICcnOwogICAgaWYgKCAhJFBhcmFte091dHB1dH0gKSB7CiAgICAgICAgJFNlbGYtPlByaW50KAogICAgICAgICAgICBPdXRwdXQgPT4gXCRPdXRwdXROYXZCYXIsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRPdXRwdXRSYXcgLj0gJE91dHB1dE5hdkJhcjsKICAgIH0KCiAgICAjIGxvYWQgbW9kdWxlCiAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCAkQmFja2VuZHMtPnskVmlld30tPntNb2R1bGV9ICkgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5GYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgYmFja2VuZCBvYmplY3QKICAgIG15ICRPYmplY3QgPSAkQmFja2VuZHMtPnskVmlld30tPntNb2R1bGV9LT5uZXcoCiAgICAgICAgJXskRW52fSwKICAgICAgICBMYXlvdXRPYmplY3QgPT4gJFNlbGYsCiAgICApOwogICAgcmV0dXJuIGlmICEkT2JqZWN0OwoKICAgICMgcnVuIG1vZHVsZQogICAgbXkgJE91dHB1dCA9ICRPYmplY3QtPlJ1bigKICAgICAgICAlUGFyYW0sCiAgICAgICAgTGltaXQgICAgID0+ICRMaW1pdCwKICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgIFBhZ2VTaG93biA9PiAkUGFnZVNob3duLAogICAgICAgIEFsbEhpdHMgICA9PiAkUGFyYW17VG90YWx9IHx8IDAsCiAgICAgICAgRnJvbnRlbmQgID0+ICRGcm9udGVuZCwKICAgICk7CgogICAgIyBjcmVhdGUgb3V0cHV0CiAgICBpZiAoICEkUGFyYW17T3V0cHV0fSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgIE91dHB1dCA9PiBcJE91dHB1dCwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE91dHB1dFJhdyAuPSAkT3V0cHV0OwogICAgfQoKICAgICMgY3JlYXRlIG92ZXJ2aWV3IG5hdmlnYXRpb24gYmFyCiAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXInLAogICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICApOwoKICAgICMgcmV0dXJuIGNvbnRlbnQgaWYgYXZhaWxhYmxlCiAgICByZXR1cm4gJE91dHB1dFJhdzsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpTdXJ2ZXlNZW51OjpHZW5lcmljOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IFVzZXJJRCBwYXJhbQogICAgJFNlbGYtPntVc2VySUR9ID0gJFBhcmFte1VzZXJJRH0gfHwgZGllICJHb3Qgbm8gVXNlcklEISI7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtTdXJ2ZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTdXJ2ZXkhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdyYW50IGFjY2VzcyBieSBkZWZhdWx0CiAgICBteSAkQWNjZXNzID0gMTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBncm91cHMKICAgIG15ICRBY3Rpb24gICA9ICRQYXJhbXtDb25maWd9LT57QWN0aW9ufTsKICAgIG15ICRHcm91cHNSbyA9ICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57JEFjdGlvbn0tPntHcm91cFJvfSB8fCBbXTsKICAgIG15ICRHcm91cHNSdyA9ICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57JEFjdGlvbn0tPntHcm91cH0gfHwgW107CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIHBlcm1pc3Npb24KICAgIGlmICggJEFjdGlvbiAmJiAoIEB7JEdyb3Vwc1JvfSB8fCBAeyRHcm91cHNSd30gKSApIHsKCiAgICAgICAgIyBkZW55IGFjY2VzcyBieSBkZWZhdWx0LCB3aGVuIHRoZXJlIGFyZSBncm91cHMgdG8gY2hlY2sKICAgICAgICAkQWNjZXNzID0gMDsKCiAgICAgICAgIyBjaGVjayByZWFkIG9ubHkgZ3JvdXBzCiAgICAgICAgUk9HUk9VUDoKICAgICAgICBmb3IgbXkgJEdyb3VwUm8gKCBAeyRHcm91cHNSb30gKSB7CiAgICAgICAgICAgIG15ICRIYXNQZXJtaXNzaW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJEdyb3VwUm8sCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3JvJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgUk9HUk9VUCBpZiAhJEhhc1Blcm1pc3Npb247CgogICAgICAgICAgICAjIHNldCBhY2Nlc3MKICAgICAgICAgICAgJEFjY2VzcyA9IDE7CiAgICAgICAgICAgIGxhc3QgUk9HUk9VUDsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVhZCB3cml0ZSBncm91cHMKICAgICAgICBSV0dST1VQOgogICAgICAgIGZvciBteSAkUndHcm91cCAoIEB7JEdyb3Vwc1J3fSApIHsKCiAgICAgICAgICAgIG15ICRIYXNQZXJtaXNzaW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJFJ3R3JvdXAsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3J3JywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgUldHUk9VUCBpZiAhJEhhc1Blcm1pc3Npb247CgogICAgICAgICAgICAjIHNldCBhY2Nlc3MKICAgICAgICAgICAgJEFjY2VzcyA9IDE7CiAgICAgICAgICAgIGxhc3QgUldHUk9VUDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRQYXJhbXtDb3VudGVyfSBpZiAhJEFjY2VzczsKCiAgICAjIG91dHB1dCBtZW51IGl0ZW0KICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01lbnVJdGVtJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAleyAkUGFyYW17U3VydmV5fSB9LAogICAgICAgICAgICAleyAkUGFyYW17Q29uZmlnfSB9LAogICAgICAgIH0sCiAgICApOwoKICAgICRQYXJhbXtDb3VudGVyfSsrOwoKICAgIHJldHVybiAkUGFyYW17Q291bnRlcn07Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpTdXJ2ZXlPdmVydmlldzo6U21hbGw7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgVXNlcklEIHBhcmFtCiAgICAkU2VsZi0+e1VzZXJJRH0gPSAkUGFyYW17VXNlcklEfSB8fCBkaWUgIkdvdCBubyBVc2VySUQhIjsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VTaG93biBTdGFydEhpdCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIG5lZWQgU3VydmV5SURzCiAgICBpZiAoICEkUGFyYW17U3VydmV5SURzfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgdGhlIFN1cnZleUlEcyEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc3RvcmUgdGhlIFN1cnZleUlEcyBsb2NhbGx5CiAgICBteSBASURzID0gQHsgJFBhcmFte1N1cnZleUlEc30gfTsKCiAgICAjIGNoZWNrIFNob3dDb2x1bW5zIHBhcmFtZXRlcgogICAgbXkgQFNob3dDb2x1bW5zOwogICAgaWYgKCAkUGFyYW17U2hvd0NvbHVtbnN9ICYmIHJlZiAkUGFyYW17U2hvd0NvbHVtbnN9IGVxICdBUlJBWScgKSB7CiAgICAgICAgQFNob3dDb2x1bW5zID0gQHsgJFBhcmFte1Nob3dDb2x1bW5zfSB9OwogICAgfQoKICAgIG15ICRPdXRwdXQgPSAnJzsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgc2hvdyBzdXJ2ZXlzIGlmIHRoZXJlIGFyZSBzb21lCiAgICBpZiAoQElEcykgewoKICAgICAgICAjIGJ1aWxkIGNvbHVtbiBoZWFkZXIgYmxvY2tzCiAgICAgICAgIyBjdXJyZW50bHkgc29ydGluZyBpcyBub3QgaW1wbGVtZW50ZWQgb24gc3VydmV5LCBsZWF2ZSB0aGUgY29kZSBmb3IgZnV0dXJlIGltcGxlbWVudGF0aW9uCiAgICAgICAgaWYgKEBTaG93Q29sdW1ucykgewogICAgICAgICAgICBmb3IgbXkgJENvbHVtbiAoQFNob3dDb2x1bW5zKSB7CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgbmVlZGVkIHZhcmlhYmxlcwogICAgICAgICAgICAgICAgbXkgJENTUyA9ICdPdmVydmlld0hlYWRlcic7CiAgICAgICAgICAgICAgICBteSAkT3JkZXJCeTsKCiAgICAgICAgICAgICAgICAjIHNldCB0aGUgY29ycmVjdCBTZXQgQ1NTIGNsYXNzIGFuZCBvcmRlciBieSBsaW5rCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9ICYmICggJFBhcmFte1NvcnRCeX0gZXEgJENvbHVtbiApICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJFBhcmFte09yZGVyQnl9ICYmICggJFBhcmFte09yZGVyQnl9IGVxICdVcCcgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAnRG93bic7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0RGVzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRPcmRlckJ5ID0gJ1VwJzsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAnVXAnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgb3V0cHV0IGVhY2ggaGVhZGVyCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiAuICdIZWFkZXInLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwoKICAgICAgICAjIGdldCBzdXJ2ZXkgb2JqZWN0CiAgICAgICAgbXkgJFN1cnZleU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKCiAgICAgICAgSUQ6CiAgICAgICAgZm9yIG15ICRJRCAoQElEcykgewogICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkQ291bnRlciA+PSAkUGFyYW17U3RhcnRIaXR9CiAgICAgICAgICAgICAgICAmJiAkQ291bnRlciA8ICggJFBhcmFte1BhZ2VTaG93bn0gKyAkUGFyYW17U3RhcnRIaXR9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgZ2V0IHN1cnZleSBkYXRhCiAgICAgICAgICAgICAgICBteSAlRGF0YSA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUdldCgKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgU3VydmV5SUQgPT4gJElELAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IElEIGlmICElRGF0YTsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIHJlY29yZCBibG9jawogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIGNvbHVtbiByZWNvcmQgYmxvY2tzCiAgICAgICAgICAgICAgICBpZiAoQFNob3dDb2x1bW5zKSB7CiAgICAgICAgICAgICAgICAgICAgQ09MVU1OOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAU2hvd0NvbHVtbnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNob3cgbGlua3MgaWYgYXZhaWxhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4gLiAnTGlua1N0YXJ0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4gLiAnTGlua0VuZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGlmIHRoZXJlIGFyZSBubyBzdXJ2ZXlzIHRvIHNob3csIGEgbm8gZGF0YSBmb3VuZCBtZXNzYWdlIGlzIGRpc3BsYXllZCBpbiB0aGUgdGFibGUKICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0RhdGFGb3VuZE1zZycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgVG90YWxDb2x1bW5zID0+IHNjYWxhciBAU2hvd0NvbHVtbnMsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHVzZSB0ZW1wbGF0ZQogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJFNlbGYtPntWaWV3VHlwZX0sCiAgICAgICAgICAgIENvbHVtbkNvdW50ID0+IHNjYWxhciBAU2hvd0NvbHVtbnMsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBGb3JtU2NyZWVuIE5vU2lkZWJhciI+CgogICAgPGgxPlslIFRyYW5zbGF0ZSgiQ3JlYXRlIE5ldyBTdXJ2ZXkiKSB8IGh0bWwgJV08L2gxPgogICAgPHAgY2xhc3M9IkFzdGVyaXNrRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiQWxsIGZpZWxkcyBtYXJrZWQgd2l0aCBhbiBhc3RlcmlzayAoKikgYXJlIG1hbmRhdG9yeS4iKSB8IGh0bWwgJV08L3A+CgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJTdXJ2ZXkiIGlkPSJTdXJ2ZXkiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iIC8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTdXJ2ZXlOZXciIC8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRzIiBpZD0iQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkcyIgdmFsdWU9IlslIERhdGEuQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkcyAlXSIgLz4KCiAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlRpdGxlIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9IlRpdGxlIiBuYW1lPSJUaXRsZSIgdHlwZT0idGV4dCIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuVGl0bGVTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbnRyb2R1Y3Rpb24iKSAlXQogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkludHJvZHVjdGlvbiI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJJbnRyb2R1Y3Rpb24iKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSaWNoVGV4dEZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJJbnRyb2R1Y3Rpb24iIG5hbWU9IkludHJvZHVjdGlvbiIgbmFtZT0iSW50cm9kdWN0aW9uIiBjbGFzcz0iUmljaFRleHQgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5JbnRyb2R1Y3Rpb25TZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlN1cnZleSBJbnRyb2R1Y3Rpb24iKSB8IGh0bWwgJV0iIHJvd3M9IjE1IiBjb2xzPSJbJSBDb25maWcoIlRpY2tldDo6RnJvbnRlbmQ6OlRleHRBcmVhTm90ZSIpICVdIj5bJSBEYXRhLkludHJvZHVjdGlvbiAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW50cm9kdWN0aW9uIikgJV0KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTm90aWZpY2F0aW9uU2VuZGVyIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIlNlbmRlciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJOb3RpZmljYXRpb25TZW5kZXIiIG5hbWU9Ik5vdGlmaWNhdGlvblNlbmRlciIgdHlwZT0idGV4dCIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuTm90aWZpY2F0aW9uU2VuZGVyU2VydmVyRXJyb3IgfCBodG1sICVdIiB2YWx1ZT0iWyUgRGF0YS5Ob3RpZmljYXRpb25TZW5kZXIgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTm90aWZpY2F0aW9uU3ViamVjdCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJTdWJqZWN0IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9Ik5vdGlmaWNhdGlvblN1YmplY3QiIG5hbWU9Ik5vdGlmaWNhdGlvblN1YmplY3QiIHR5cGU9InRleHQiIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLk5vdGlmaWNhdGlvblN1YmplY3RTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLk5vdGlmaWNhdGlvblN1YmplY3QgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIk5vdGlmaWNhdGlvbkJvZHkiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5vdGlmaWNhdGlvbkJvZHkiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiQm9keSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJpY2hUZXh0RmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9Ik5vdGlmaWNhdGlvbkJvZHkiIG5hbWU9Ik5vdGlmaWNhdGlvbkJvZHkiIGNsYXNzPSJSaWNoVGV4dCBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLk5vdGlmaWNhdGlvbkJvZHlTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5vdGlmaWNhdGlvbiBCb2R5IikgfCBodG1sICVdIiByb3dzPSIxNSIgY29scz0iWyUgQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUiKSAlXSI+WyUgRGF0YS5Ob3RpZmljYXRpb25Cb2R5IHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTm90aWZpY2F0aW9uQm9keSIpICVdCgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlF1ZXVlcyI+WyUgVHJhbnNsYXRlKCJRdWV1ZXMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuUXVldWVTdHJpbmcgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaWNrZXRUeXBlcyIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVGlja2V0VHlwZUlEcyI+WyUgVHJhbnNsYXRlKCJUaWNrZXQgVHlwZXMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVGlja2V0VHlwZVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJUaWNrZXRUeXBlcyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaWNrZXRTZXJ2aWNlcyIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU2VydmljZUlEcyI+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZXJ2aWNlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpY2tldFNlcnZpY2VzIikgJV0KCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbnRlcm5hbERlc2NyaXB0aW9uIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJEZXNjcmlwdGlvbiI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJJbnRlcm5hbCBEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJpY2hUZXh0RmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9IkRlc2NyaXB0aW9uIiBuYW1lPSJEZXNjcmlwdGlvbiIgY2xhc3M9IlJpY2hUZXh0IFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuRGVzY3JpcHRpb25TZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkludGVybmFsIERlc2NyaXB0aW9uIikgfCBodG1sICVdIiByb3dzPSIxNSIgY29scz0iWyUgQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUiKSAlXSI+WyUgRGF0YS5EZXNjcmlwdGlvbiB8IGh0bWwgJV08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkludGVybmFsRGVzY3JpcHRpb24iKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiR2VuZXJpY0Vycm9yIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJbJSBEYXRhLkl0ZW1OYW1lIHwgaHRtbCAlXSIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiR2VuZXJpY0Vycm9yIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkdlbmVyaWNTZXJ2ZXJFcnJvciIpICVdCiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iWyUgRGF0YS5JdGVtTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkdlbmVyaWNTZXJ2ZXJFcnJvciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZW5kQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyI+WyUgVHJhbnNsYXRlKCJDdXN0b21lciBjb25kaXRpb25zIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkN1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHNTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBIaWRkZW4iIGlkPSJUZW1wbGF0ZUxldmVsMSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0xpc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJEYXRhSXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ikljb24gUmVtb3ZlQnV0dG9uQ3VzdG9tZXJGaWVsZCI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+PC9zdHJvbmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkV2ZW4gTGFzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+TmVnYXRlOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iMCIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0NoZWNrYm94IiB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjAiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9Ilc1MHBjIiB2YWx1ZT0iIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGUgZmllbGQgbmVlZHMgdG8gYmUgYSB2YWxpZCByZWd1bGFyIGV4cHJlc3Npb24gb3IgYSBsaXRlcmFsIHdvcmQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSWNvbiBSZW1vdmVCdXR0b25DdXN0b21lckNvbmRpdGlvbiBIaWRkZW4iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJY29uIEFkZEJ1dHRvbkN1c3RvbWVyQ29uZGl0aW9uIj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUtbyI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZW5kQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyIpICVdCgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkNyZWF0ZSIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNoZWNrLXNxdWFyZS1vIj48L2k+IFslIFRyYW5zbGF0ZSgiQ3JlYXRlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBXaWRnZXRTaW1wbGUgQ29sbGFwc2VkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2hvdyBvciBoaWRlIHRoZSBjb250ZW50IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlRhZyBSZWZlcmVuY2UiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJZb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIHRhZ3MiKSB8IGh0bWwgJV06PC9wPgogICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVFJTX1RJQ0tFVF8qJmd0OzwvY29kZT48L2R0PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk9wdGlvbnMgb2YgdGhlIHRpY2tldCBkYXRhIikgfCBodG1sICVdIChbJSBUcmFuc2xhdGUoImUuIGcuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29kZT4mbHQ7T1RSU19USUNLRVRfVGlja2V0TnVtYmVyJmd0OywgJmx0O09UUlNfVElDS0VUX1RpY2tldElEJmd0OywgJmx0O09UUlNfVElDS0VUX1F1ZXVlJmd0OywgJmx0O09UUlNfVElDS0VUX1N0YXRlJmd0OzwvY29kZT4pLgogICAgICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVFJTX0NVU1RPTUVSX0RBVEFfKiZndDs8L2NvZGU+PC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJPcHRpb25zIG9mIHRoZSBjdXJyZW50IGN1c3RvbWVyIHVzZXIgZGF0YSIpIHwgaHRtbCAlXSAoWyUgVHJhbnNsYXRlKCJlLiBnLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvZGU+Jmx0O09UUlNfQ1VTVE9NRVJfREFUQV9Vc2VyRmlyc3RuYW1lJmd0OzwvY29kZT4pLgogICAgICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVFJTX0NPTkZJR18qJmd0OzwvY29kZT48L2R0PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkNvbmZpZyBvcHRpb25zIikgfCBodG1sICVdIChbJSBUcmFuc2xhdGUoImUuIGcuIikgfCBodG1sICVdIDxjb2RlPiZsdDtPVFJTX0NPTkZJR19IdHRwVHlwZSZndDs8L2NvZGU+KS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkdD48Y29kZT4mbHQ7T1RSU19QdWJsaWNTdXJ2ZXlLZXkmZ3Q7PC9jb2RlPjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiUHVibGljIHN1cnZleSBrZXkiKSB8IGh0bWwgJV0gKFslIFRyYW5zbGF0ZSgiZS4gZy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlPiZsdDtPVFJTX1B1YmxpY1N1cnZleUtleSZndDs8L2NvZGU+KS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgICAgICA8L2RsPgoKICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRXhhbXBsZSBzdXJ2ZXkiKSB8IGh0bWwgJV06CiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSByb3dzPSI1IiBjb2xzPSI2MCIgbmFtZT0iVG1wU3VydmV5IiBkaXNhYmxlZD0iZGlzYWJsZWQiPgpbJSBUcmFuc2xhdGUoIlRoZSBjdXJyZW50IHRpY2tldCBzdGF0ZSBpcyIpIHwgaHRtbCAlXTogIiZsdDtPVFJTX1RJQ0tFVF9TdGF0ZSZndDsiCgpbJSBUcmFuc2xhdGUoIllvdXIgZW1haWwgYWRkcmVzcyBpcyIpIHwgaHRtbCAlXTogIiZsdDtPVFJTX0NVU1RPTUVSX1VzZXJFbWFpbCZndDsiCiAgICAgICAgICAgICAgICAgICAgPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbmFtZT0iU3VydmV5IiBpZD0iU3VydmV5IiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU3VydmV5U2F2ZSIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1cnZleUlEIiB2YWx1ZT0iWyUgRGF0YS5TdXJ2ZXlJRCB8IGh0bWwgJV0iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRzIiBpZD0iQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkcyIgdmFsdWU9IlslIERhdGEuQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkcyAlXSIgLz4KCiAgICA8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgogICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoIkVkaXQgR2VuZXJhbCBJbmZvIikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoQ29uZmlnKCJTdXJ2ZXk6Okhvb2siKSkgfCBodG1sICVdWyUgRGF0YS5TdXJ2ZXlOdW1iZXIgfCBodG1sICVdIC0gWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV08L2gxPgogICAgICAgICAgICA8cCBjbGFzcz0iQXN0ZXJpc2tFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKCJBbGwgZmllbGRzIG1hcmtlZCB3aXRoIGFuIGFzdGVyaXNrICgqKSBhcmUgbWFuZGF0b3J5LiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbCI+CgogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iVGl0bGUiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9IlRpdGxlIiBuYW1lPSJUaXRsZSIgdHlwZT0idGV4dCIgY2xhc3M9Ilc3NXBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuVGl0bGVTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSW50cm9kdWN0aW9uIikgJV0KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkludHJvZHVjdGlvbiI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJJbnRyb2R1Y3Rpb24iKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJpY2hUZXh0RmllbGQiPgogICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBpZD0iSW50cm9kdWN0aW9uIiBuYW1lPSJJbnRyb2R1Y3Rpb24iIG5hbWU9IkludHJvZHVjdGlvbiIgY2xhc3M9IlJpY2hUZXh0IFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuSW50cm9kdWN0aW9uU2VydmVyRXJyb3IgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTdXJ2ZXkgSW50cm9kdWN0aW9uIikgfCBodG1sICVdIiByb3dzPSIxNSIgY29scz0iWyUgQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUiKSAlXSI+WyUgRGF0YS5JbnRyb2R1Y3Rpb24gJV08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbnRyb2R1Y3Rpb24iKSAlXQoKICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5vdGlmaWNhdGlvblNlbmRlciI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJTZW5kZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9Ik5vdGlmaWNhdGlvblNlbmRlciIgbmFtZT0iTm90aWZpY2F0aW9uU2VuZGVyIiB0eXBlPSJ0ZXh0IiBjbGFzcz0iVzc1cGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5Ob3RpZmljYXRpb25TZW5kZXJTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLk5vdGlmaWNhdGlvblNlbmRlciB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOb3RpZmljYXRpb25TdWJqZWN0Ij48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIlN1YmplY3QiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9Ik5vdGlmaWNhdGlvblN1YmplY3QiIG5hbWU9Ik5vdGlmaWNhdGlvblN1YmplY3QiIHR5cGU9InRleHQiIGNsYXNzPSJXNzVwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLk5vdGlmaWNhdGlvblN1YmplY3RTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLk5vdGlmaWNhdGlvblN1YmplY3QgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOb3RpZmljYXRpb25Cb2R5IikgJV0KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5vdGlmaWNhdGlvbkJvZHkiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiQm9keSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmljaFRleHRGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJOb3RpZmljYXRpb25Cb2R5IiBuYW1lPSJOb3RpZmljYXRpb25Cb2R5IiBjbGFzcz0iUmljaFRleHQgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5Ob3RpZmljYXRpb25Cb2R5U2VydmVyRXJyb3IgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJOb3RpZmljYXRpb24gQm9keSIpIHwgaHRtbCAlXSIgcm93cz0iMTUiIGNvbHM9IlslIENvbmZpZygiVGlja2V0OjpGcm9udGVuZDo6VGV4dEFyZWFOb3RlIikgJV0iPlslIERhdGEuTm90aWZpY2F0aW9uQm9keSB8IGh0bWwgJV08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOb3RpZmljYXRpb25Cb2R5IikgJV0KCiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJRdWV1ZXMiPlslIFRyYW5zbGF0ZSgiUXVldWVzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5RdWV1ZVN0cmluZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaWNrZXRUeXBlcyIpICVdCiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaWNrZXRUeXBlSURzIj5bJSBUcmFuc2xhdGUoIlRpY2tldCBUeXBlcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuVGlja2V0VHlwZVN0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVGlja2V0VHlwZXMiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiVGlja2V0U2VydmljZXMiKSAlXQogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU2VydmljZUlEcyI+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2VydmljZVN0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVGlja2V0U2VydmljZXMiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSW50ZXJuYWxEZXNjcmlwdGlvbiIpICVdCiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJEZXNjcmlwdGlvbiI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJJbnRlcm5hbCBEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmljaFRleHRGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJEZXNjcmlwdGlvbiIgbmFtZT0iRGVzY3JpcHRpb24iIGNsYXNzPSJSaWNoVGV4dCBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLkRlc2NyaXB0aW9uU2VydmVyRXJyb3IgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJJbnRlcm5hbCBEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXSIgcm93cz0iMTUiIGNvbHM9IlslIENvbmZpZygiVGlja2V0OjpGcm9udGVuZDo6VGV4dEFyZWFOb3RlIikgJV0iPlslIERhdGEuRGVzY3JpcHRpb24gfCBodG1sICVdPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW50ZXJuYWxEZXNjcmlwdGlvbiIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZW5kQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyI+WyUgVHJhbnNsYXRlKCJDdXN0b21lciBjb25kaXRpb25zIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkN1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHNTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBIaWRkZW4iIGlkPSJUZW1wbGF0ZUxldmVsMSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0xpc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJEYXRhSXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ikljb24gUmVtb3ZlQnV0dG9uQ3VzdG9tZXJGaWVsZCI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+PC9zdHJvbmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkV2ZW4gTGFzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+TmVnYXRlOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iMCIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0NoZWNrYm94IiB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjAiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9Ilc1MHBjIiB2YWx1ZT0iIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGUgZmllbGQgbmVlZHMgdG8gYmUgYSB2YWxpZCByZWd1bGFyIGV4cHJlc3Npb24gb3IgYSBsaXRlcmFsIHdvcmQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSWNvbiBSZW1vdmVCdXR0b25DdXN0b21lckNvbmRpdGlvbiBIaWRkZW4iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJY29uIEFkZEJ1dHRvbkN1c3RvbWVyQ29uZGl0aW9uIj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUtbyI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZW5kQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmljRXJyb3IiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBpZD0iWyUgRGF0YS5JdGVtTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJHZW5lcmljRXJyb3IiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VydmVyRXJyb3IiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBpZD0iWyUgRGF0YS5JdGVtTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZXJ2ZXJFcnJvciIpICVdCgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkZvb3RlciI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJVcGRhdGUiKSB8IGh0bWwgJV0iPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jaGVjay1zcXVhcmUtbyI+PC9pPiBbJSBUcmFuc2xhdGUoIlVwZGF0ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Zvcm0+CjxkaXYgY2xhc3M9IkZpZWxkIFdpZGdldFNpbXBsZSBDb2xsYXBzZWQgU3BhY2luZyBXaWRnZXRTcGFjaW5nUmlnaHQiPgogICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj4KICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2hvdyBvciBoaWRlIHRoZSBjb250ZW50IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPgogICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT4KICAgICAgICAgICAgPC9hPgogICAgICAgIDwvZGl2PgogICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlRhZyBSZWZlcmVuY2UiKSB8IGh0bWwgJV08L2gyPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJZb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIHRhZ3MiKSB8IGh0bWwgJV06PC9wPgogICAgICAgIDxkbD4KICAgICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVFJTX1RJQ0tFVF8qJmd0OzwvY29kZT48L2R0PgogICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk9wdGlvbnMgb2YgdGhlIHRpY2tldCBkYXRhIikgfCBodG1sICVdIChbJSBUcmFuc2xhdGUoImUuIGcuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8Y29kZT4mbHQ7T1RSU19USUNLRVRfVGlja2V0TnVtYmVyJmd0OywgJmx0O09UUlNfVElDS0VUX1RpY2tldElEJmd0OywgJmx0O09UUlNfVElDS0VUX1F1ZXVlJmd0OywgJmx0O09UUlNfVElDS0VUX1N0YXRlJmd0OzwvY29kZT4pLgogICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVFJTX0NVU1RPTUVSX0RBVEFfKiZndDs8L2NvZGU+PC9kdD4KICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJPcHRpb25zIG9mIHRoZSBjdXJyZW50IGN1c3RvbWVyIHVzZXIgZGF0YSIpIHwgaHRtbCAlXSAoWyUgVHJhbnNsYXRlKCJlLiBnLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPGNvZGU+Jmx0O09UUlNfQ1VTVE9NRVJfREFUQV9Vc2VyRmlyc3RuYW1lJmd0OzwvY29kZT4pLgogICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVFJTX0NPTkZJR18qJmd0OzwvY29kZT48L2R0PgogICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkNvbmZpZyBvcHRpb25zIikgfCBodG1sICVdIChbJSBUcmFuc2xhdGUoImUuIGcuIikgfCBodG1sICVdIDxjb2RlPiZsdDtPVFJTX0NPTkZJR19IdHRwVHlwZSZndDs8L2NvZGU+KS4KICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgIDxkdD48Y29kZT4mbHQ7T1RSU19QdWJsaWNTdXJ2ZXlLZXkmZ3Q7PC9jb2RlPjwvZHQ+CiAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiUHVibGljIHN1cnZleSBrZXkiKSB8IGh0bWwgJV0gKFslIFRyYW5zbGF0ZSgiZS4gZy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDxjb2RlPiZsdDtPVFJTX1B1YmxpY1N1cnZleUtleSZndDs8L2NvZGU+KS4KICAgICAgICAgICAgPC9kZD4KICAgICAgICA8L2RsPgoKICAgICAgICA8cCBjbGFzcz0iU3BhY2luZ1RvcCI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRXhhbXBsZSBzdXJ2ZXkiKSB8IGh0bWwgJV06CiAgICAgICAgPC9wPgogICAgICAgIDx0ZXh0YXJlYSByb3dzPSI1IiBjb2xzPSI2MCIgbmFtZT0iVG1wU3VydmV5IiBkaXNhYmxlZD0iZGlzYWJsZWQiPgpbJSBUcmFuc2xhdGUoIlRoZSBjdXJyZW50IHRpY2tldCBzdGF0ZSBpcyIpIHwgaHRtbCAlXTogIiZsdDtPVFJTX1RJQ0tFVF9TdGF0ZSZndDsiCgpbJSBUcmFuc2xhdGUoIllvdXIgZW1haWwgYWRkcmVzcyBpcyIpIHwgaHRtbCAlXTogIiZsdDtPVFJTX0NVU1RPTUVSX1VzZXJFbWFpbCZndDsiCiAgICAgICAgPC90ZXh0YXJlYT4KICAgIDwvZGl2Pgo8L2Rpdj4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tClslIFJlbmRlckJsb2NrU3RhcnQoIlN1cnZleUVkaXRRdWVzdGlvbnMiKSAlXQo8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgogICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8aDE+WyUgVHJhbnNsYXRlKCJFZGl0IFF1ZXN0aW9ucyIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKENvbmZpZygiU3VydmV5OjpIb29rIikpIHwgaHRtbCAlXVslIERhdGEuU3VydmV5TnVtYmVyIHwgaHRtbCAlXSAtIFslIERhdGEuVGl0bGUgfCBodG1sICVdPC9oMT4KICAgICAgICA8cCBjbGFzcz0iQXN0ZXJpc2tFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKCJBbGwgZmllbGRzIG1hcmtlZCB3aXRoIGFuIGFzdGVyaXNrICgqKSBhcmUgbWFuZGF0b3J5LiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICA8cD4KICAgICAgICAgICAgPGEgY2xhc3M9IkNhbmNlbENsb3NlUG9wdXAiIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiQ2FuY2VsICYgY2xvc2UiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgPC9wPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPHVsIGNsYXNzPSJCcmVhZENydW1iIj4KICAgICAgICAgICAgPGxpPlslIFRyYW5zbGF0ZSgiWW91IGFyZSBoZXJlIikgfCBodG1sICVdOjwvbGk+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiU3VydmV5IFF1ZXN0aW9ucyIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICA8L3VsPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3VydmV5QWRkUXVlc3Rpb24iKSAlXQoKICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tTWVkaXVtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkFkZCBRdWVzdGlvbiIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbmFtZT0iU3VydmV5UXVlc3Rpb25zIiBpZD0iU3VydmV5UXVlc3Rpb25zIiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJRdWVzdGlvbkFkZCIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdXJ2ZXlJRCIgdmFsdWU9IlslIERhdGEuU3VydmV5SUQgfCBodG1sICVdIiAvPgoKICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJRdWVzdGlvbiI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJUeXBlIHRoZSBxdWVzdGlvbiIpIHwgaHRtbCAlXTombmJzcDs8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9IlF1ZXN0aW9uIiBuYW1lPSJRdWVzdGlvbiIgY2xhc3M9IlZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuUXVlc3Rpb25FcnJvckNsYXNzIHwgaHRtbCAlXSAiIHNpemU9IjYwIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZWxlY3Rpb25UeXBlICVdCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iUXVlc3Rpb25FcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJRdWVzdGlvblNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkFuc3dlclJlcXVpcmVkIj4gWyUgVHJhbnNsYXRlKCJBbnN3ZXIgcmVxdWlyZWQiKSB8IGh0bWwgJV06Jm5ic3A7PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5BbnN3ZXJSZXF1aXJlZFNlbGVjdCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQbHVzIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkFkZCIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLXBsdXMtc3F1YXJlIj48L2k+IFslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleUFkZFF1ZXN0aW9uIikgJV0KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AgU3BhY2luZ0JvdHRvbU1lZGl1bSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJTdXJ2ZXkgUXVlc3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlOb1F1ZXN0aW9uc1NhdmVkIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlN1cnZleUVtcHR5TWVzc2FnZVNtYWxsIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk5vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleU5vUXVlc3Rpb25zU2F2ZWQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3VydmV5UXVlc3Rpb25zVGFibGUiKSAlXQogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiPgogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiUXVlc3Rpb24iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUeXBlIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlTdGF0dXNDb2x1bW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiU3RhdHVzIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5U3RhdHVzQ29sdW1uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkFuc3dlciBSZXF1aXJlZCIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlVwIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRG93biIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU3VydmV5RGVsZXRlQ29sdW1uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleURlbGV0ZUNvbHVtbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlRdWVzdGlvbnNTYXZlZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVF1ZXN0aW9uRWRpdDtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdIiA+WyUgRGF0YS5RdWVzdGlvbiB8IHRydW5jYXRlKDkwKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLlR5cGUpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5BbnN3ZXJSZXF1aXJlZCkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFycm93VXBbJSBEYXRhLkNsYXNzVXAgfCBodG1sICVdIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249UXVlc3Rpb25VcDtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tdXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJVcCIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFycm93RG93blslIERhdGEuQ2xhc3NEb3duIHwgaHRtbCAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVF1ZXN0aW9uRG93bjtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tZG93biI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkRvd24iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleVF1ZXN0aW9uc1NhdmVkIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlN1cnZleVF1ZXN0aW9uc1JvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVF1ZXN0aW9uRWRpdDtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdIj5bJSBEYXRhLlF1ZXN0aW9uIHwgdHJ1bmNhdGUoNzApIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuVHlwZSkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuU3RhdHVzKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuQW5zd2VyUmVxdWlyZWQpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBcnJvd1VwWyUgRGF0YS5DbGFzc1VwIHwgaHRtbCAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVF1ZXN0aW9uVXA7U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXTtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLXVwIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlVwIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQXJyb3dEb3duWyUgRGF0YS5DbGFzc0Rvd24gfCBodG1sICVdIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249UXVlc3Rpb25Eb3duO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2hldnJvbi1kb3duIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRvd24iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU3VydmV5UXVlc3Rpb25zRGVsZXRlQnV0dG9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBRdWVzdGlvbkRlbGV0ZSIgaHJlZj0iIyIgZGF0YS1xdWVyeS1zdHJpbmc9IkFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1RdWVzdGlvbkRlbGV0ZTtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJTdXJ2ZXlRdWVzdGlvbnNEZWxldGVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5UXVlc3Rpb25zUm93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleVF1ZXN0aW9uc1RhYmxlIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIldoZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iRm9vdGVyIj4KICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9IkNhbmNlbENsb3NlUG9wdXAgUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJDbG9zZSB0aGlzIHdpbmRvdyIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLXRpbWVzIj48L2k+IFslIFRyYW5zbGF0ZSgiQ2xvc2UgdGhpcyB3aW5kb3ciKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICA8L2Rpdj4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTdXJ2ZXlFZGl0UXVlc3Rpb25zIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlF1ZXN0aW9uRWRpdCIpICVdCjxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoIkVkaXQgUXVlc3Rpb24iKSB8IGh0bWwgJV06IFslIFRyYW5zbGF0ZShEYXRhLlF1ZXN0aW9uKSB8IGh0bWwgJV08L2gxPgogICAgICAgIDxwIGNsYXNzPSJBc3Rlcmlza0V4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSBtYW5kYXRvcnkuIikgfCBodG1sICVdPC9wPgogICAgICAgIDxwPgogICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdIiA+WyUgVHJhbnNsYXRlKCJnbyBiYWNrIHRvIHF1ZXN0aW9ucyIpIHwgaHRtbCAlXTwvYT4KICAgICAgICA8L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8dWwgY2xhc3M9IkJyZWFkQ3J1bWIiPgogICAgICAgICAgICA8bGk+WyUgVHJhbnNsYXRlKCJZb3UgYXJlIGhlcmUiKSB8IGh0bWwgJV06PC9saT4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucztTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIlN1cnZleSBRdWVzdGlvbnMiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiUXVlc3Rpb246IikgfCBodG1sICVdIFslIERhdGEuUXVlc3Rpb24gfCBodG1sICVdCiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AgU3BhY2luZ0JvdHRvbU1lZGl1bSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJFZGl0IFF1ZXN0aW9uIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJTdXJ2ZXlRdWVzdGlvbiIgaWQ9IlN1cnZleVF1ZXN0aW9uIiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJRdWVzdGlvblNhdmUiIC8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUXVlc3Rpb25JRCIgdmFsdWU9IlslIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3VydmV5SUQiIHZhbHVlPSJbJSBEYXRhLlN1cnZleUlEIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUXVlc3Rpb24iIGNsYXNzPSJNYW5kYXRvcnkiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiUXVlc3Rpb24iKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjYwIiBuYW1lPSJRdWVzdGlvbiIgaWQ9IlF1ZXN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5RdWVzdGlvbiB8IGh0bWwgJV0iIGNsYXNzPSJWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLlF1ZXN0aW9uU2VydmVyRXJyb3IgfCBodG1sICVdIiAvPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlF1ZXN0aW9uRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iUXVlc3Rpb25TZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkFuc3dlclJlcXVpcmVkIj4gWyUgVHJhbnNsYXRlKCJBbnN3ZXIgcmVxdWlyZWQiKSB8IGh0bWwgJV06Jm5ic3A7PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5BbnN3ZXJSZXF1aXJlZFNlbGVjdCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcyA9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24iIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXSI+IDxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jaGVjay1zcXVhcmUtbyI+PC9pPiBbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tTWVkaXVtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlBvc3NpYmxlIEFuc3dlcnMgRm9yIikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoRGF0YS5UeXBlKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlF1ZXN0aW9uRWRpdEFkZEFuc3dlciIpICVdCiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbmFtZT0iQW5zd2VyQWRkIiBpZD0iQW5zd2VyQWRkIiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJBbnN3ZXJBZGQiIC8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUXVlc3Rpb25JRCIgdmFsdWU9IlslIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3VydmV5SUQiIHZhbHVlPSJbJSBEYXRhLlN1cnZleUlEIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQW5zd2VyIiBjbGFzcz0iTWFuZGF0b3J5Ij48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkFkZCBBbnN3ZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJBbnN3ZXIiIG5hbWU9IkFuc3dlciIgc2l6ZT0iNjAiIGNsYXNzPSJWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLkFuc3dlclNlcnZlckVycm9yIHwgaHRtbCAlXSAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUGx1cyIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJBZGQiKSB8IGh0bWwgJV0iPiA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUiPjwvaT4gWyUgVHJhbnNsYXRlKCJBZGQiKSB8IGh0bWwgJV08L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJBbnN3ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJBbnN3ZXJTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+ClslIFJlbmRlckJsb2NrRW5kKCJRdWVzdGlvbkVkaXRBZGRBbnN3ZXIiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9BbnN3ZXJzU2F2ZWQiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCIgaWQ9IlN1cnZleUVtcHR5TWVzc2FnZVNtYWxsIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk5vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vQW5zd2Vyc1NhdmVkIikgJV0KCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJRdWVzdGlvbkVkaXRUYWJsZSIpICVdCiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4gWyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXSA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiBbJSBUcmFuc2xhdGUoIlVwIikgfCBodG1sICVdIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+IFslIFRyYW5zbGF0ZSgiRG93biIpIHwgaHRtbCAlXSA8L3RoPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJRdWVzdGlvbkVkaXRUYWJsZURlbGV0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+IFslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJRdWVzdGlvbkVkaXRUYWJsZURlbGV0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJRdWVzdGlvbkVkaXRSYWRpbyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFuc3dlckVkaXQ7U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXTtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXTtBbnN3ZXJJRD1bJSBEYXRhLkFuc3dlcklEIHwgdXJpICVdIj4gWyUgRGF0YS5BbnN3ZXIgfCB0cnVuY2F0ZSg5MCkgfCBodG1sICVdIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQXJyb3dVcFslIERhdGEuQ2xhc3NVcCB8IGh0bWwgJV0iIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BbnN3ZXJVcDtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdO0Fuc3dlcklEPVslIERhdGEuQW5zd2VySUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2hldnJvbi11cCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJVcCIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFycm93RG93blslIERhdGEuQ2xhc3NEb3duIHwgaHRtbCAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFuc3dlckRvd247U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXTtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXTtBbnN3ZXJJRD1bJSBEYXRhLkFuc3dlcklEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tZG93biI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJEb3duIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIlF1ZXN0aW9uRWRpdFJhZGlvRGVsZXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBbnN3ZXJEZWxldGUiIGhyZWY9IiMiIGRhdGEtcXVlcnktc3RyaW5nPSJBY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QW5zd2VyRGVsZXRlO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV07QW5zd2VySUQ9WyUgRGF0YS5BbnN3ZXJJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVlc3Rpb25FZGl0UmFkaW9EZWxldGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVlc3Rpb25FZGl0UmFkaW8iKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUXVlc3Rpb25FZGl0TlBTIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QW5zd2VyRWRpdDtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdO0Fuc3dlcklEPVslIERhdGEuQW5zd2VySUQgfCB1cmkgJV0iPiBbJSBEYXRhLkFuc3dlciB8IHRydW5jYXRlKDkwKSB8IGh0bWwgJV0gPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBcnJvd1VwWyUgRGF0YS5DbGFzc1VwIHwgaHRtbCAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFuc3dlclVwO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV07QW5zd2VySUQ9WyUgRGF0YS5BbnN3ZXJJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLXVwIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlVwIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQXJyb3dEb3duWyUgRGF0YS5DbGFzc0Rvd24gfCBodG1sICVdIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QW5zd2VyRG93bjtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdO0Fuc3dlcklEPVslIERhdGEuQW5zd2VySUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2hldnJvbi1kb3duIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRvd24iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUXVlc3Rpb25FZGl0TlBTRGVsZXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBbnN3ZXJEZWxldGUiIGhyZWY9IiMiIGRhdGEtcXVlcnktc3RyaW5nPSJBY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QW5zd2VyRGVsZXRlO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV07QW5zd2VySUQ9WyUgRGF0YS5BbnN3ZXJJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVlc3Rpb25FZGl0TlBTRGVsZXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIlF1ZXN0aW9uRWRpdE5QUyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJRdWVzdGlvbkVkaXRDaGVja2JveCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFuc3dlckVkaXQ7U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXTtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXTtBbnN3ZXJJRD1bJSBEYXRhLkFuc3dlcklEIHwgdXJpICVdIj5bJSBEYXRhLkFuc3dlciB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFycm93VXBbJSBEYXRhLkNsYXNzVXAgfCBodG1sICVdIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QW5zd2VyVXA7U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXTtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXTtBbnN3ZXJJRD1bJSBEYXRhLkFuc3dlcklEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tdXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiVXAiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBcnJvd0Rvd25bJSBEYXRhLkNsYXNzRG93biB8IGh0bWwgJV0iIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BbnN3ZXJEb3duO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV07QW5zd2VySUQ9WyUgRGF0YS5BbnN3ZXJJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLWRvd24iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiRG93biIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJRdWVzdGlvbkVkaXRDaGVja2JveERlbGV0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQW5zd2VyRGVsZXRlIiBocmVmPSIjIiBkYXRhLXF1ZXJ5LXN0cmluZz0iQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFuc3dlckRlbGV0ZTtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdO0Fuc3dlcklEPVslIERhdGEuQW5zd2VySUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtdHJhc2gtbyI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlF1ZXN0aW9uRWRpdENoZWNrYm94RGVsZXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIlF1ZXN0aW9uRWRpdENoZWNrYm94IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlF1ZXN0aW9uRWRpdFllc25vIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiBbJSBUcmFuc2xhdGUoIlllcyIpIHwgaHRtbCAlXSA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFycm93VXBEaXNhYmxlZCIgaHJlZj0iIyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLXVwIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlVwIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQXJyb3dEb3duRGlzYWJsZWQiIGhyZWY9IiMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2hldnJvbi1kb3duIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRvd24iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiBbJSBUcmFuc2xhdGUoIk5vIikgfCBodG1sICVdIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQXJyb3dVcERpc2FibGVkIiBocmVmPSIjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tdXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiVXAiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBcnJvd0Rvd25EaXNhYmxlZCIgaHJlZj0iIyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLWRvd24iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiRG93biIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVlc3Rpb25FZGl0WWVzbm8iKSAlXQoKICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KWyUgUmVuZGVyQmxvY2tFbmQoIlF1ZXN0aW9uRWRpdFRhYmxlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlF1ZXN0aW9uRWRpdFRleHRBcmVhIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiIGlkPSJTdXJ2ZXlFbXB0eU1lc3NhZ2VTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGlzIGRvZXNuJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlF1ZXN0aW9uRWRpdFRleHRBcmVhIikgJV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkZvb3RlciI+CiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIiAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdXJ2ZXlJRCIgdmFsdWU9IlslIERhdGEuU3VydmV5SUQgfCBodG1sICVdIiAvPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiR28gYmFjayIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT4gWyUgVHJhbnNsYXRlKCJHbyBiYWNrIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgIDwvZm9ybT4KICAgIDwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlF1ZXN0aW9uRWRpdCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBbnN3ZXJFZGl0IikgJV0KPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9IkFuc3dlckVkaXQiIGlkPSJBbnN3ZXJFZGl0IiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iQW5zd2VyU2F2ZSIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFuc3dlcklEIiB2YWx1ZT0iWyUgRGF0YS5BbnN3ZXJJRCB8IGh0bWwgJV0iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJRdWVzdGlvbklEIiB2YWx1ZT0iWyUgRGF0YS5RdWVzdGlvbklEIHwgaHRtbCAlXSIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1cnZleUlEIiB2YWx1ZT0iWyUgRGF0YS5TdXJ2ZXlJRCB8IGh0bWwgJV0iIC8+CiAgICA8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgoKICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICA8aDE+WyUgVHJhbnNsYXRlKCJFZGl0IEFuc3dlciIpIHwgaHRtbCAlXTogWyUgRGF0YS5BbnN3ZXIgfCBodG1sICVdIDwvaDE+CiAgICAgICAgICAgIDxwIGNsYXNzPSJBc3Rlcmlza0V4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSBtYW5kYXRvcnkuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIiBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCAmIGNsb3NlIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVF1ZXN0aW9uRWRpdDtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXTtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoImdvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbiIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8dWwgY2xhc3M9IkJyZWFkQ3J1bWIiPgogICAgICAgICAgICAgICAgPGxpPlslIFRyYW5zbGF0ZSgiWW91IGFyZSBoZXJlIikgfCBodG1sICVdOjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucztTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIlN1cnZleSBRdWVzdGlvbnMiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1RdWVzdGlvbkVkaXQ7UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV07U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJRdWVzdGlvbjoiKSB8IGh0bWwgJV0gWyUgRGF0YS5RdWVzdGlvbiB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQW5zd2VyOiIpIHwgaHRtbCAlXSBbJSBEYXRhLkFuc3dlciB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AgU3BhY2luZ0JvdHRvbU1lZGl1bSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkVkaXQgQW5zd2VyIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJBbnN3ZXIiIGNsYXNzPSJNYW5kYXRvcnkiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiQW5zd2VyIikgfCBodG1sICVdOjwvbGFiZWw+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iNjAiIGlkPSJBbnN3ZXIiIG5hbWU9IkFuc3dlciIgdmFsdWU9IlslIERhdGEuQW5zd2VyIHwgaHRtbCAlXSIgY2xhc3M9IlZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuQW5zd2VyU2VydmVyRXJyb3IgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iQW5zd2VyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iQW5zd2VyU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iRm9vdGVyIj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jaGVjay1zcXVhcmUtbyI+PC9pPiBbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9mb3JtPgpbJSBSZW5kZXJCbG9ja0VuZCgiQW5zd2VyRWRpdCIpICVdCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyIikgJV0KPGRpdiBjbGFzcz0iT3ZlcnZpZXdCb3ggQVJJQVJvbGVNYWluIFslIERhdGEuVmlldyB8IGh0bWwgJV0iPgogICAgPGgxPlslIERhdGEuVGl0bGVOYW1lIHwgaHRtbCAlXTogWyUgRGF0YS5UaXRsZVZhbHVlIHwgaHRtbCAlXTwvaDE+CgogICAgWyUgRGF0YS5EYXRhSW5UaGVNaWRkbGUgJV0KCiAgICA8ZGl2IGNsYXNzPSJPdmVydmlld0NvbnRyb2wiIGlkPSJPdmVydmlld0NvbnRyb2wiPgogICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRyb2xSb3ciPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhckZpbHRlciIpICVdCiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYnMiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhckZpbHRlckl0ZW0iKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJBY3RpdmUgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5GaWx0ZXJMaW5rICVdRmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV08c3Bhbj5bJSBEYXRhLkNvdW50IHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5GaWx0ZXJMaW5rICVdRmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV08c3Bhbj5bJSBEYXRhLkNvdW50IHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkTm90IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU3BsaXQiKSAlXQogICAgICAgICAgICAgICAgICAgIC0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNwbGl0IikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbSIpICVdCiAgICAgICAgICAgICAgICA8L3VsPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXIiKSAlXQoKICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iVGFicyI+CiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBpZD0iU3VydmV5U2VhcmNoIiBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIlN1cnZleSBvdmVydmlldyBvcHRpb25zIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlN1cnZleU92ZXJ2aWV3U2V0dGluZ3NEaWFsb2dDb250YWluZXIiIGNsYXNzPSJIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBpZD0iU3VydmV5T3ZlcnZpZXdTZXR0aW5nc0RpYWxvZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFnZW50U3VydmV5T3ZlcnZpZXciLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iQ2hhbmdlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJGdWxsdGV4dCIgaWQ9IkxhYmVsRnVsbHRleHQiPlslIFRyYW5zbGF0ZSgiRnVsbHRleHQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSJbJSBEYXRhLkZ1bGx0ZXh0IHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIiBzdHlsZT0id2lkdGg6IDUwMHB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU3RhdGVzIiBpZD0iTGFiZWxTdGF0ZXMiID5bJSBUcmFuc2xhdGUoIlN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TdGF0ZVN0ciAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiU3VydmV5IENyZWF0ZSBUaW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5vIHRpbWUgc2V0dGluZ3MiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiAgaWQ9Ik5vVGltZVNldCIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSIiIFslIERhdGEuU3VydmV5U2VhcmNoLk5vUmVzdHJpY3Rpb25DaGVja2VkIHwgaHRtbCAlXSBbJSBEYXRhLml0ZW0oIlRpbWVTZWFyY2hUeXBlOjpOb25lIikgJV0gLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOb1RpbWVTZXQiPlslIFRyYW5zbGF0ZSgiTm8gcmVzdHJpY3Rpb24iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRhdGUgcmFuZ2UiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiBpZD0iRGF0ZVJhbmdlIiBuYW1lPSJUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiBbJSBEYXRhLlN1cnZleVNlYXJjaC5UaW1lU2xvdENoZWNrZWQgfCBodG1sICVdIFslIERhdGEuaXRlbSgiVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90IikgJV0gLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEYXRlUmFuZ2UiPlslIFRyYW5zbGF0ZSgiT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2VlbiIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TdXJ2ZXlDcmVhdGVUaW1lU3RhcnQgJV0gWyUgVHJhbnNsYXRlKCJhbmQiKSB8IGh0bWwgJV0gWyUgRGF0YS5TdXJ2ZXlDcmVhdGVUaW1lU3RvcCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGV4dFNldHRpbmdzIikgJV0KCiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkNvbnRleHRGdW5jdGlvbnMiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iQ29udGV4dFNldHRpbmdzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgaWQ9IlNob3dDb250ZXh0U2V0dGluZ3NEaWFsb2ciIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNldHRpbmdzIikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY29nIj48L2k+PHNwYW4+WyUgVHJhbnNsYXRlKCJTZXR0aW5ncyIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgPGRpdiBpZD0iQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyIiBjbGFzcz0iSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IkNvbnRleHRTZXR0aW5nc0RpYWxvZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFnZW50UHJlZmVyZW5jZXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iVXBkYXRlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ikdyb3VwIiB2YWx1ZT0iWyUgRGF0YS5Hcm91cCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUmVkaXJlY3RVUkwiIHZhbHVlPSJbJSBEYXRhLlJlcXVlc3RlZFVSTCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5QcmVmZXJlbmNlc0tleSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5QYWdlU2hvd25TdHJpbmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGV4dFNldHRpbmdzIikgJV0KCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iT3ZlcnZpZXdBY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFjdGlvblJvdyAlXQogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iT3ZlcnZpZXdab29tIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyVmlld01vZGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkFjdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07Vmlldz1bJSBEYXRhLlZpZXcgfCB1cmkgJV07WyUgRGF0YS5MaW5rRmlsdGVyICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5OYW1lU2hvcnQpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZVNlbGVjdGVkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO1ZpZXc9WyUgRGF0YS5WaWV3IHwgdXJpICVdO1slIERhdGEuTGlua0ZpbHRlciAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuTmFtZVNob3J0KSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyVmlld01vZGVOb3RTZWxlY3RlZCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclZpZXdNb2RlIikgJV0KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJQYWdpbmF0aW9uIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlTmF2QmFyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5SZXN1bHRMb25nICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2l0ZU5hdkJhckxvbmcgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhciIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyTGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KIyBzb3J0IG9yZGVyIGJhciBpZiBuZWVkZWQKICAgICAgICAgICAgICAgIFslIERhdGEuU29ydE9yZGVyQmFyICVdCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXIiKSAlXQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGlkPSJPdmVydmlld0JvZHkiIGNsYXNzPSJPdmVydmlldyBUaWNrZXRMaXN0Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmRNc2ciKSAlXQogICAgPGRpdiBpZD0iRW1wdHlNZXNzYWdlU21hbGwiPgogICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0KICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9EYXRhRm91bmRNc2ciKSAlXQoKICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJtYXRyaXgiPgogICAgICAgIDx0YWJsZSBjbGFzcz0iVGFibGVTbWFsbCI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgIDx0cj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTnVtYmVySGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ik51bWJlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTb3J0Qnk9TnVtYmVyO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoQ29uZmlnKCJTdXJ2ZXk6Okhvb2siKSkgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROdW1iZXJIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRUaXRsZUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJUaXRsZSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTb3J0Qnk9VGl0bGU7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZFRpdGxlSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkSW50cm9kdWN0aW9uSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkludHJvZHVjdGlvbiBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTb3J0Qnk9SW50cm9kdWN0aW9uO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIkludHJvZHVjdGlvbiIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkSW50cm9kdWN0aW9uSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRGVzY3JpcHRpb25IZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRGVzY3JpcHRpb24gWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U29ydEJ5PURlc2NyaXB0aW9uO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIkRlc2NyaXB0aW9uIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREZXNjcmlwdGlvbkhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE5vdGlmaWNhdGlvblNlbmRlckhlYWRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJOb3RpZmljYXRpb25TZW5kZXIgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U29ydEJ5PU5vdGlmaWNhdGlvblNlbmRlcjtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJOb3RpZmljYXRpb24gU2VuZGVyIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROb3RpZmljYXRpb25TZW5kZXJIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROb3RpZmljYXRpb25TdWJqZWN0SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ik5vdGlmaWNhdGlvblN1YmplY3QgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U29ydEJ5PU5vdGlmaWNhdGlvblN1YmplY3Q7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiTm90aWZpY2F0aW9uIFN1YmplY3QiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE5vdGlmaWNhdGlvblN1YmplY3RIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROb3RpZmljYXRpb25Cb2R5SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ik5vdGlmaWNhdGlvbkJvZHkgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U29ydEJ5PU5vdGlmaWNhdGlvbkJvZHk7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiTm90aWZpY2F0aW9uIEJvZHkiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE5vdGlmaWNhdGlvbkJvZHlIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRTdGF0dXNIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iU3RhdHVzIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1NvcnRCeT1TdGF0dXM7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiU3RhdHVzIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRTdGF0dXNIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDcmVhdGVUaW1lSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNyZWF0ZVRpbWUgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U29ydEJ5PUNyZWF0ZVRpbWU7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3JlYXRlVGltZUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENyZWF0ZUJ5SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNyZWF0ZUJ5IFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1NvcnRCeT1DcmVhdGVCeTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJDcmVhdGVkIGJ5IikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDcmVhdGVCeUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENoYW5nZVRpbWVIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hhbmdlVGltZSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTb3J0Qnk9Q2hhbmdlVGltZTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJDaGFuZ2VkIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDaGFuZ2VUaW1lSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ2hhbmdlQnlIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hhbmdlQnkgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U29ydEJ5PUNoYW5nZUJ5O09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIkNoYW5nZWQgQnkiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENoYW5nZUJ5SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkIikgJV0KICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iTWFzdGVyQWN0aW9uIFslIElGIERhdGEuU3RhdHVzID09ICdJbnZhbGlkJyAlXUludmFsaWRbJSBFTkQgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTnVtYmVyTGlua1N0YXJ0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdIiB0aXRsZT0iWyUgRGF0YS5TdXJ2ZXlOdW1iZXIgfCB1cmkgJV0iIGNsYXNzPSJNYXN0ZXJBY3Rpb25MaW5rIj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlckxpbmtTdGFydCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlN1cnZleU51bWJlciB8IGh0bWwgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTnVtYmVyTGlua0VuZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlckxpbmtFbmQiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROdW1iZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRUaXRsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgRGF0YS5UaXRsZSB8IHRydW5jYXRlKDQwKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkVGl0bGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRJbnRyb2R1Y3Rpb24iKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5JbnRyb2R1Y3Rpb24gfCBodG1sICVdIj5bJSBEYXRhLkludHJvZHVjdGlvbiB8IHRydW5jYXRlKDQwKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkSW50cm9kdWN0aW9uIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRGVzY3JpcHRpb24iKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5EZXNjcmlwdGlvbiB8IGh0bWwgJV0iPlslIERhdGEuRGVzY3JpcHRpb24gfCB0cnVuY2F0ZSg0MCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZERlc2NyaXB0aW9uIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTm90aWZpY2F0aW9uU2VuZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgRGF0YS5Ob3RpZmljYXRpb25TZW5kZXIgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE5vdGlmaWNhdGlvblNlbmRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE5vdGlmaWNhdGlvblN1YmplY3QiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5Ob3RpZmljYXRpb25TdWJqZWN0IHwgaHRtbCAlXSI+WyUgRGF0YS5Ob3RpZmljYXRpb25TdWJqZWN0IHwgdHJ1bmNhdGUoNDApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROb3RpZmljYXRpb25TdWJqZWN0IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTm90aWZpY2F0aW9uQm9keSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLk5vdGlmaWNhdGlvbkJvZHkgfCBodG1sICVdIj5bJSBEYXRhLk5vdGlmaWNhdGlvbkJvZHkgfCB0cnVuY2F0ZSg0MCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE5vdGlmaWNhdGlvbkJvZHkiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRTdGF0dXMiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBUcmFuc2xhdGUoRGF0YS5TdGF0dXMpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRTdGF0dXMiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDcmVhdGVUaW1lIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3JlYXRlVGltZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENyZWF0ZUJ5IikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgRGF0YS5DcmVhdGVVc2VyRnVsbG5hbWUgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENyZWF0ZUJ5IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ2hhbmdlVGltZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlslIERhdGEuQ2hhbmdlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENoYW5nZVRpbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDaGFuZ2VCeSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlslIERhdGEuQ2hhbmdlVXNlckZ1bGxuYW1lIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDaGFuZ2VCeSIpICVdCiAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkIikgJV0KICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICA8L3RhYmxlPgogICAgPC9mb3JtPgo8L2Rpdj4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGF0cyIpICVdCjxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoIlN0YXRzIE92ZXJ2aWV3IG9mIikgfCBodG1sICVdIDogWyUgVHJhbnNsYXRlKENvbmZpZygiU3VydmV5OjpIb29rIikpIHwgaHRtbCAlXVslIERhdGEuU3VydmV5TnVtYmVyICVdIC0gWyUgRGF0YS5UaXRsZSAlXSA8L2gxPgogICAgICAgIDxwPgogICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICA8L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICA8aDI+PC9oMj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tTWVkaXVtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlJlcXVlc3RzIFRhYmxlIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIiAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTdGF0c1ZpZXciIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1cnZleUlEIiB2YWx1ZT0iWyUgRGF0YS5TdXJ2ZXlJRCB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiPgogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5TaG93RGVsZXRlID09IDEgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hlY2tib3ggQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9IkNoZWNrYm94IiB0eXBlPSJjaGVja2JveCIgaWQ9IlNlbGVjdEFsbFJlcXVlc3RzIiBuYW1lPSJTZWxlY3RBbGxSZXF1ZXN0cyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2VsZWN0IGFsbCByZXF1ZXN0cyIpIHwgaHRtbCAlXSIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZXRhaWxzIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiU2VuZCBUaW1lIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVm90ZSBUaW1lIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGlja2V0IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGF0c1ZvdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLlNob3dEZWxldGUgPT0gMSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDaGVja2JveCBOb25UZXh0Q29udGVudCBDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iQ2hlY2tib3giIHR5cGU9ImNoZWNrYm94IiBuYW1lPSJSZXF1ZXN0RGVsZXRlSWRlbnRpZmllciIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2VsZWN0IHRoaXMgcmVxdWVzdCIpIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuUmVxdWVzdElEIHwgaHRtbCAlXSIgIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJTZWVEZXRhaWxzIEFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1TdGF0c0RldGFpbDtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1JlcXVlc3RJRD1bJSBEYXRhLlJlcXVlc3RJRCB8IHVyaSAlXTtUaWNrZXROdW1iZXI9WyUgRGF0YS5UaWNrZXROdW1iZXIgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc2VhcmNoLXBsdXMiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJTZWUgRGV0YWlscyIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2VuZFRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZvdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9Ikxpbmtab29tVmlldyBBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRUaWNrZXRab29tO1RpY2tldElEPVslIERhdGEuVGlja2V0SUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlRpY2tldE51bWJlciB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiU3RhdHNWb3RlIikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgWyUgSUYgRGF0YS5TaG93RGVsZXRlID09IDEgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcFNtYWxsIj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgdHlwZT0ic3VibWl0IiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJEZWxldGUgc3RhdHMiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiRGVsZXRlIHN0YXRzIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3VibWl0RGVsZXRlIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJGb290ZXIiPgogICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCBQcmltYXJ5IENhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkNsb3NlIHRoaXMgd2luZG93IikgfCBodG1sICVdIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtdGltZXMiPjwvaT4gWyUgVHJhbnNsYXRlKCJDbG9zZSB0aGlzIHdpbmRvdyIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgIDwvZGl2Pgo8L2Rpdj4KClslIFJlbmRlckJsb2NrRW5kKCJTdGF0cyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGF0c0RldGFpbCIpICVdCjxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoIlN1cnZleSBTdGF0IERldGFpbHMiKSB8IGh0bWwgJV0gOiBbJSBDb25maWcoIlRpY2tldDo6SG9vayIpICVdWyUgQ29uZmlnKCJUaWNrZXQ6Okhvb2tEaXZpZGVyIikgJV1bJSBEYXRhLlRpY2tldE51bWJlciAlXSA6IFslIENvbmZpZygiU3VydmV5OjpIb29rIikgJV1bJSBEYXRhLlN1cnZleU51bWJlciAlXSAtIFslIERhdGEuVGl0bGUgJV0gOiAgPC9oMT4KICAgICAgICA8cD4KICAgICAgICAgICAgPGEgY2xhc3M9IkNhbmNlbENsb3NlUG9wdXAiIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiQ2FuY2VsICYgY2xvc2UiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgPGEgY2xhc3M9Ikhpc3RvcnlCYWNrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoImdvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXciKSB8IGh0bWwgJV08L2E+CiAgICAgICAgPC9wPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgPGgyPjwvaDI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AgU3BhY2luZ0JvdHRvbU1lZGl1bSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJEZXRhaWxzIikgfCBodG1sICVdPC9oMj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTmF2QXJyb3dzIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Ik5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIFslIElGICFEYXRhLlByZXYgJV1jbGFzcz0iRGlzYWJsZWQiWyUgRU5EICVdWyUgSUYgIURhdGEuTmV4dCAlXXN0eWxlPSJtYXJnaW4tcmlnaHQ6IDE3cHg7IlslIEVORCAlXSBjbGFzcz0iU3VydmV5QXJyb3cgU3VydmV5QXJyb3dMZWZ0IiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJQcmV2aW91cyB2b3RlIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50U3VydmV5U3RhdHM7U3ViYWN0aW9uPVN0YXRzRGV0YWlsO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UmVxdWVzdElEPVslIERhdGEuUHJldiB8IHVyaSAlXTtUaWNrZXROdW1iZXI9WyUgRGF0YS5QcmV2VGlja2V0TnVtYmVyIHwgdXJpICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtbGVmdCI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gWyUgSUYgIURhdGEuTmV4dCAlXWNsYXNzPSJEaXNhYmxlZCJbJSBFTkQgJV0gY2xhc3M9IlN1cnZleUFycm93IFN1cnZleUFycm93UmlnaHQiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5leHQgdm90ZSIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudFN1cnZleVN0YXRzO1N1YmFjdGlvbj1TdGF0c0RldGFpbDtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1JlcXVlc3RJRD1bJSBEYXRhLk5leHQgfCB1cmkgJV07VGlja2V0TnVtYmVyPVslIERhdGEuTmV4dFRpY2tldE51bWJlciB8IHVyaSAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTmF2QXJyb3dzIikgJV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlN0YXRzRGV0YWlsUXVlc3Rpb24iKSAlXQogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iWyUgRGF0YS5DbGFzcyAlXSI+WyUgRGF0YS5SZXF1aXJlZFRleHQgfCBodG1sICVdWyUgRGF0YS5RdWVzdGlvbiB8IGh0bWwgJV06PC9sYWJlbD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU3RhdHNEZXRhaWxBbnN3ZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFslIERhdGEuQ2xhc3MgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFuc3dlciAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN0YXRzRGV0YWlsQW5zd2VyIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTdGF0c0RldGFpbFF1ZXN0aW9uIikgJV0KICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJGb290ZXIiPgogICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3VydmV5SUQiIHZhbHVlPSJbJSBEYXRhLlN1cnZleUlEIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkdvIGJhY2siKSB8IGh0bWwgJV0iPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1sZWZ0Ij48L2k+IFslIFRyYW5zbGF0ZSgiR28gYmFjayIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICA8L2Zvcm0+CiAgICA8L2Rpdj4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTdGF0c0RldGFpbCIpICVdCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlab29tIikgJV0KPGRpdiBjbGFzcz0iTWFpbkJveCBBcmlhUm9sZU1haW4gTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJGaXJzdCI+CiAgICA8ZGl2IGNsYXNzPSJDbGVhckxlZnQiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iSGVhZGxpbmUiPgogICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoQ29uZmlnKCJTdXJ2ZXk6Okhvb2siKSkgfCBodG1sICVdWyUgRGF0YS5TdXJ2ZXlOdW1iZXIgfCBodG1sICVdIC0gWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV08L2gxPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJMYXN0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiU3VydmV5IEluZm9ybWF0aW9uIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQgYnkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLkNyZWF0ZVVzZXJGdWxsbmFtZSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNoYW5nZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiA+WyUgRGF0YS5DaGFuZ2VUaW1lIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpICVdPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ2hhbmdlZCBieSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPlslIERhdGEuQ2hhbmdlVXNlckZ1bGxuYW1lIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiU3RhdHVzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+WyUgVHJhbnNsYXRlKERhdGEuU3RhdHVzKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgoKICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJTZW50IHJlcXVlc3RzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+WyUgRGF0YS5TZW5kUmVxdWVzdCB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlJlY2VpdmVkIHN1cnZleXMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLlJlcXVlc3RDb21wbGV0ZSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udHJvbFJvdyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBZGRpdGlvbmFsSW5mb3JtYXRpb24iPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25zIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTWVudUl0ZW0iKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdWyUgRGF0YS5MaW5rIHwgSW50ZXJwb2xhdGUgJV0iIGlkPSJbJSBEYXRhLk1lbnVJRCB8IGh0bWwgJV0iIGNsYXNzPSJbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSIgWyUgRGF0YS5MaW5rUGFyYW0gJV0gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkRlc2NyaXB0aW9uKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiTWVudUl0ZW0iKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlTdGF0dXMiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGNsYXNzPSJBY3Rpb25Gb3JtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTdXJ2ZXlTdGF0dXMiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdXJ2ZXlJRCIgdmFsdWU9IlslIERhdGEuU3VydmV5SUQgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OZXdTdGF0dXNTdHIgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJTdXJ2ZXlTdGF0dXMiKSAlXQogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlN1cnZleSBEZXRhaWxzIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIk51bWJlciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+WyUgRGF0YS5TdXJ2ZXlOdW1iZXIgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj5bJSBEYXRhLlRpdGxlIHwgdHJ1bmNhdGUoODApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJRdWV1ZXMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiIHRpdGxlPSJbJSBEYXRhLlF1ZXVlTGlzdFN0cmluZyB8IGh0bWwgJV0iPlslIERhdGEuUXVldWVMaXN0U3RyaW5nIHwgdHJ1bmNhdGUoODApIHwgaHRtbCAlXSBbJSBEYXRhLk5vUXVldWVNZXNzYWdlIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaWNrZXRUeXBlcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlRpY2tldCBUeXBlcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCIgdGl0bGU9IlslIERhdGEuVGlja2V0VHlwZUxpc3RTdHJpbmcgfCBodG1sICVdIj5bJSBEYXRhLlRpY2tldFR5cGVMaXN0U3RyaW5nIHwgdHJ1bmNhdGUoODApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJUaWNrZXRUeXBlcyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaWNrZXRTZXJ2aWNlcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlRpY2tldCBTZXJ2aWNlcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCIgdGl0bGU9IlslIERhdGEuU2VydmljZUxpc3RTdHJpbmcgfCBodG1sICVdIj5bJSBEYXRhLlNlcnZpY2VMaXN0U3RyaW5nIHwgdHJ1bmNhdGUoODApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJUaWNrZXRTZXJ2aWNlcyIpICVdCgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlCbG9jayIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIiBpZD0iWyUgRGF0YS5TdXJ2ZXlGaWVsZCAlXUJsb2NrIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudFN1cnZleVpvb207U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2hvdyBvciBoaWRlIHRoZSBjb250ZW50IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJCb2R5SFRNTCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlmcmFtZSB3aWR0aD0iMTAwJSIgZnJhbWVib3JkZXI9IjAiIGlkPSJJZnJhbWVTdXJ2ZXlbJSBEYXRhLlN1cnZleUZpZWxkIHwgaHRtbCAlXSIgb25sb2FkPSJTdXJ2ZXkuQWdlbnQuU3VydmV5Wm9vbS5JZnJhbWVBdXRvSGVpZ2h0KCQoJyNJZnJhbWVTdXJ2ZXlbJSBEYXRhLlN1cnZleUZpZWxkIHwgaHRtbCAlXScpKTsiIHNyYz0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdWJhY3Rpb249SFRNTFZpZXc7U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IGh0bWwgJV07U3VydmV5RmllbGQ9WyUgRGF0YS5TdXJ2ZXlGaWVsZCB8IGh0bWwgJV07Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPC9pZnJhbWU+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJCb2R5SFRNTCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkJvZHlQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9IlRleHRhcmVhIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFRleHRhcmVhIj5bJSBEYXRhLkNvbnRlbnQgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja0VuZCgiQm9keVBsYWluIikgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleUJsb2NrIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUGVybWlzc2lvblN0YXRSZXN1bHRzIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AgU3BhY2luZ0JvdHRvbU1lZGl1bSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTaG93IG9yIGhpZGUgdGhlIGNvbnRlbnQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlN1cnZleSBSZXN1bHRzIEdyYXBoIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOb1N0YXRSZXN1bHRzIikgJV0KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk5vIHN0YXQgcmVzdWx0cy4iKSB8IGh0bWwgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk5vU3RhdFJlc3VsdHMiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3VydmV5RWRpdFN0YXRzIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlN1cnZleUVkaXRTdGF0c1F1ZXN0aW9uIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlNwYWNpbmdUb3AgU3VydmV5R3JhcGhzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUXVlc3Rpb24iIHRpdGxlPSJbJSBEYXRhLlF1ZXN0aW9uICVdIiA+WyUgRGF0YS5RdWVzdGlvbiB8IHRydW5jYXRlKDEwMCkgfCBodG1sICVdOiA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU3VydmV5RWRpdFN0YXRzQW5zd2VyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQW5zd2VyIj5bJSBUcmFuc2xhdGUoRGF0YS5BbnN3ZXIpIHwgaHRtbCAlXTwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3VydmV5R3JhcGgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3VydmV5R3JhcGhDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlN1cnZleUdyYXBoQmFyIiBzdHlsZT0id2lkdGg6WyUgRGF0YS5BbnN3ZXJQZXJjZW50VGFibGUgfCBodG1sICVdJTsiPjwvZGl2ID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlN1cnZleUdyYXBoTGV5ZW5kIj5bJSBEYXRhLkFuc3dlclBlcmNlbnQgfCBodG1sICVdJTwvcD4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleUVkaXRTdGF0c0Fuc3dlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleUVkaXRTdGF0c1F1ZXN0aW9uIikgJV0KClslIFJlbmRlckJsb2NrRW5kKCJTdXJ2ZXlFZGl0U3RhdHMiKSAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUGVybWlzc2lvblN0YXRSZXN1bHRzIikgJV0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleVpvb20iKSAlXQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNTdXJ2ZXkiKSAlXQo8ZGl2IGNsYXNzPSJDb250ZW50IEFSSUFSb2xlTWFpbiIgaWQ9Ik1haW5Cb3giPgogICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJTdXJ2ZXkiKSB8IGh0bWwgJV06IFslIERhdGEuVGl0bGUgfCBodG1sICVdPC9oMj4KICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUHVibGljVGlja2V0IikgJV0KICAgIDxkaXYgY2xhc3M9IlN1cnZleUJsb2NrIj4KICAgICAgICA8ZGl2IGNsYXNzPSJTdXJ2ZXlCbG9ja0hlYWRlciI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGlja2V0IikgfCBodG1sICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgIFslIENvbmZpZygiVGlja2V0OjpIb29rIikgfCBodG1sICVdWyUgQ29uZmlnKCJUaWNrZXQ6Okhvb2tEaXZpZGVyIikgfCBodG1sICVdWyUgRGF0YS5UaWNrZXROdW1iZXIgfCBodG1sICVdIDxzcGFuPiZtZGFzaDs8L3NwYW4+IFslIERhdGEuVGl0bGUgfCB0cnVuY2F0ZSgxMDApICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQdWJsaWNUaWNrZXQiKSAlXQoKICAgIDxkaXYgY2xhc3M9IlN1cnZleUJsb2NrIj4KICAgICAgICA8ZGl2IGNsYXNzPSJTdXJ2ZXlCbG9ja0hlYWRlciI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiSW50cm9kdWN0aW9uIikgfCBodG1sICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgIFslIERhdGEuSW50cm9kdWN0aW9uICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iIC8+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iUHVibGljU3VydmV5Vm90ZSIgLz4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJQdWJsaWNTdXJ2ZXlLZXkiIHZhbHVlPSJbJSBEYXRhLlB1YmxpY1N1cnZleUtleSB8IGh0bWwgJV0iIC8+CiAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJTdXJ2ZXkiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJTdXJ2ZXlCbG9ja0hlYWRlciI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlBsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zIikgfCBodG1sICVdOgogICAgICAgICAgICA8L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlB1YmxpY1F1ZXN0aW9ucyIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IlF1ZXN0aW9uQ29udGFpbmVyIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUHVibGljQW5zd2VyWWVzTm8iKSAlXQoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlF1ZXN0aW9uIFslIERhdGEuQ2xhc3MgfCBodG1sICVdIj4gWyUgRGF0YS5SZXF1aXJlZFRleHQgfCBodG1sICVdWyUgRGF0YS5RdWVzdGlvbiAlXSA8L2Rpdj4KICAgICAgICAgICAgICAgIFslIERhdGEuRXJyb3JUZXh0ICVdCgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBpZD0iUHVibGljU3VydmV5Vm90ZTFbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdWWVzIiBuYW1lPSJQdWJsaWNTdXJ2ZXlWb3RlMVtbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdXSIgdmFsdWU9IlllcyIgWyUgRGF0YS5ZZXNTZWxlY3RlZCB8IGh0bWwgJV0gLz4KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iQW5zd2VyIiBmb3I9IlB1YmxpY1N1cnZleVZvdGUxWyUgRGF0YS5RdWVzdGlvbklEIHwgaHRtbCAlXVllcyI+WyUgVHJhbnNsYXRlKCJZZXMiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9IlB1YmxpY1N1cnZleVZvdGUxWyUgRGF0YS5RdWVzdGlvbklEIHwgaHRtbCAlXU5vIiBuYW1lPSJQdWJsaWNTdXJ2ZXlWb3RlMVtbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdXSIgdmFsdWU9Ik5vIiAgWyUgRGF0YS5Ob1NlbGVjdGVkIHwgaHRtbCAlXSAvPgogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJBbnN3ZXIiIGZvcj0iUHVibGljU3VydmV5Vm90ZTFbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdTm8iPlslIFRyYW5zbGF0ZSgiTm8iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUHVibGljQW5zd2VyWWVzTm8iKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUHVibGljQW5zd2VyUmFkaW8iKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUXVlc3Rpb24gWyUgRGF0YS5DbGFzcyB8IGh0bWwgJV0iPiBbJSBEYXRhLlJlcXVpcmVkVGV4dCB8IGh0bWwgJV1bJSBEYXRhLlF1ZXN0aW9uICVdIDwvZGl2PgogICAgICAgICAgICAgICAgWyUgRGF0YS5FcnJvclRleHQgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUHVibGljQW5zd2VyUmFkaW9iIikgJV0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9IlB1YmxpY1N1cnZleVZvdGUyWyUgRGF0YS5RdWVzdGlvbklEIHwgaHRtbCAlXVslIERhdGEuQW5zd2VySUQgfCBodG1sICVdIiBuYW1lPSJQdWJsaWNTdXJ2ZXlWb3RlMltbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdXSIgdmFsdWU9IlslIERhdGEuQW5zd2VySUQgfCBodG1sICVdIiBbJSBEYXRhLkFuc3dlclNlbGVjdGVkIHwgaHRtbCAlXS8+CiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9IkFuc3dlciIgZm9yPSJQdWJsaWNTdXJ2ZXlWb3RlMlslIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV1bJSBEYXRhLkFuc3dlcklEIHwgaHRtbCAlXSI+WyUgRGF0YS5BbnN3ZXIgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY0Fuc3dlclJhZGlvYiIpICVdClslIFJlbmRlckJsb2NrRW5kKCJQdWJsaWNBbnN3ZXJSYWRpbyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNBbnN3ZXJDaGVja2JveCIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJRdWVzdGlvbiBbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSI+IFslIERhdGEuUmVxdWlyZWRUZXh0IHwgaHRtbCAlXVslIERhdGEuUXVlc3Rpb24gJV0gPC9kaXY+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkVycm9yVGV4dCAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNBbnN3ZXJDaGVja2JveGIiKSAlXQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iUHVibGljU3VydmV5Vm90ZTNbJSBEYXRhLkFuc3dlcklEIHwgaHRtbCAlXSIgbmFtZT0iUHVibGljU3VydmV5Vm90ZTNbWyUgRGF0YS5BbnN3ZXJJRCB8IGh0bWwgJV1dIiB2YWx1ZT0iWWVzIiBbJSBEYXRhLkFuc3dlclNlbGVjdGVkIHwgaHRtbCAlXS8+CiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9IkFuc3dlciIgZm9yPSJQdWJsaWNTdXJ2ZXlWb3RlM1slIERhdGEuQW5zd2VySUQgfCBodG1sICVdIj5bJSBEYXRhLkFuc3dlciB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUHVibGljQW5zd2VyQ2hlY2tib3hiIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY0Fuc3dlckNoZWNrYm94IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlB1YmxpY0Fuc3dlclRleHRhcmVhIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlF1ZXN0aW9uIFslIERhdGEuQ2xhc3MgfCBodG1sICVdIj4gWyUgRGF0YS5SZXF1aXJlZFRleHQgfCBodG1sICVdWyUgRGF0YS5RdWVzdGlvbiAlXSA8L2Rpdj4KICAgICAgICAgICAgICAgIFslIERhdGEuRXJyb3JUZXh0ICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSaWNoVGV4dEFuc3dlclslIERhdGEuQW5zd2VySUQgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgdGl0bGU9IlslIERhdGEuUXVlc3Rpb24gJV0iIGlkPSJSaWNoVGV4dFslIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV0iIG5hbWU9IlB1YmxpY1N1cnZleVZvdGU0W1slIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV1dIiBjbGFzcz0iUmljaFRleHQgRG9udFByaW50IiByb3dzPSIxNSIgY29scz0iWyUgQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUiKSAlXSI+WyUgRGF0YS5WYWx1ZSAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY0Fuc3dlclRleHRhcmVhIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlB1YmxpY0Fuc3dlck5QUyIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJRdWVzdGlvbiBbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSI+IFslIERhdGEuUmVxdWlyZWRUZXh0IHwgaHRtbCAlXVslIERhdGEuUXVlc3Rpb24gJV0gPC9kaXY+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkVycm9yVGV4dCAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNBbnN3ZXJOUFNiIikgJV0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgY2xhc3M9Ik5QUyIgaWQ9IlB1YmxpY1N1cnZleVZvdGU1WyUgRGF0YS5RdWVzdGlvbklEIHwgaHRtbCAlXVslIERhdGEuQW5zd2VySUQgfCBodG1sICVdIiBuYW1lPSJQdWJsaWNTdXJ2ZXlWb3RlNVtbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdXSIgdmFsdWU9IlslIERhdGEuQW5zd2VySUQgfCBodG1sICVdIiBbJSBEYXRhLkFuc3dlclNlbGVjdGVkIHwgaHRtbCAlXS8+CiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9IkFuc3dlciBOUFMiIGZvcj0iUHVibGljU3VydmV5Vm90ZTVbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdWyUgRGF0YS5BbnN3ZXJJRCB8IGh0bWwgJV0iPlslIERhdGEuQW5zd2VyIHwgaHRtbCAlXTwvbGFiZWw+ClslIFJlbmRlckJsb2NrRW5kKCJQdWJsaWNBbnN3ZXJOUFNiIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY0Fuc3dlck5QUyIpICVdCgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY1F1ZXN0aW9ucyIpICVdCiAgICAgICAgPC9maWVsZHNldD4KICAgICAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciIGlkPSJCb3R0b21BY3Rpb25Sb3ciPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkZpbmlzaCIpIHwgaHRtbCAlXSI+IFslIFRyYW5zbGF0ZSgiRmluaXNoIikgfCBodG1sICVdIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgPC9mb3JtPgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY1N1cnZleSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNTdXJ2ZXlNZXNzYWdlIikgJV0KPGRpdiBpZD0iTWFpbkJveCIgY2xhc3M9IlRpY2tldENvbXBvc2UgQVJJQVJvbGVNYWluIj4KICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgPGgyPiBbJSBUcmFuc2xhdGUoRGF0YS5NZXNzYWdlVHlwZSkgfCBodG1sICVdIDwvaDI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgIDxoND4gWyUgVHJhbnNsYXRlKERhdGEuTWVzc2FnZUhlYWRlcikgfCBodG1sICVdIDwvaDQ+CiAgICAgICAgICAgIDxwIGNsYXNzPSJTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLk1lc3NhZ2UpIHwgaHRtbCAlXQogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2hvd0Fuc3dlcnNCdXR0b24iKSAlXQogICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIiAvPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2hvd1ZvdGVEYXRhIiAvPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUHVibGljU3VydmV5S2V5IiB2YWx1ZT0iWyUgRGF0YS5QdWJsaWNTdXJ2ZXlLZXkgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiID5bJSBUcmFuc2xhdGUoIlNob3cgbXkgYW5zd2VycyIpIHwgaHRtbCAlXTwvYnV0dG9uPgogICAgICAgICAgICA8L2Zvcm0+ClslIFJlbmRlckJsb2NrRW5kKCJTaG93QW5zd2Vyc0J1dHRvbiIpICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQdWJsaWNTdXJ2ZXlNZXNzYWdlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlB1YmxpY1N1cnZleVZvdGVEYXRhIikgJV0KPGRpdiBjbGFzcz0iQ29udGVudCBBUklBUm9sZU1haW4iIGlkPSJNYWluQm94Ij4KICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiVGhlc2UgYXJlIHlvdXIgYW5zd2VycyIpIHwgaHRtbCAlXTo8L2gyPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJTdXJ2ZXlCbG9jayI+CiAgICAgICAgPGRpdiBjbGFzcz0iU3VydmV5QmxvY2tIZWFkZXIiPgogICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlN1cnZleSBUaXRsZSIpIHwgaHRtbCAlXQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJTdXJ2ZXkiKSB8IGh0bWwgJV06IFslIERhdGEuVGl0bGUgfCBodG1sICVdPC9oMj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IlN1cnZleUJsb2NrIj4KICAgICAgICA8ZGl2IGNsYXNzPSJTdXJ2ZXlCbG9ja0hlYWRlciI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiSW50cm9kdWN0aW9uIikgfCBodG1sICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgIFslIERhdGEuSW50cm9kdWN0aW9uICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8ZmllbGRzZXQgY2xhc3M9IlN1cnZleSI+CiAgICAgICAgPGRpdiBjbGFzcz0iU3VydmV5QmxvY2tIZWFkZXIiPgogICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoZXNlIGFyZSB5b3VyIGFuc3dlcnMiKSB8IGh0bWwgJV06CiAgICAgICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNTdXJ2ZXlWb3RlUXVlc3Rpb24iKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IlF1ZXN0aW9uQ29udGFpbmVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iUXVlc3Rpb24gWyUgRGF0YS5DbGFzcyB8IGh0bWwgJV0iPiBbJSBEYXRhLlJlcXVpcmVkVGV4dCB8IGh0bWwgJV1bJSBEYXRhLlF1ZXN0aW9uIHwgaHRtbCAlXTo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUHVibGljU3VydmV5Vm90ZUFuc3dlciIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFuc3dlciI+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkFuc3dlciB8IGh0bWwgJV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY1N1cnZleVZvdGVBbnN3ZXIiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQdWJsaWNTdXJ2ZXlWb3RlUXVlc3Rpb24iKSAlXQogICAgPC9maWVsZHNldD4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQdWJsaWNTdXJ2ZXlWb3RlRGF0YSIpICVdCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6U3VydmV5OjpSZXF1ZXN0c0RlbGV0ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlN1cnZleScsCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKCdEZWxldGUgc3VydmV5IHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZvcmNlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiQWN0dWFsbHkgZGVsZXRlIHJlc3VsdHMgbm93LiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBQcmVSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRGVsZXRlUGVyaW9kID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTdXJ2ZXk6OkRlbGV0ZVBlcmlvZCcpOwogICAgaWYgKCAhJERlbGV0ZVBlcmlvZCApIHsKICAgICAgICBkaWUgIk5vIGRheXMgY29uZmlndXJlZCBpbiBTdXJ2ZXk6OkRlbGV0ZVBlcmlvZC5cbiI7CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlByb2Nlc3NpbmcgcGVuZGluZyBzdXJ2ZXkgcmVzdWx0cy4uLjwveWVsbG93PlxuXG4iKTsKCiAgICAjIGdldCBmb3JjZSBvcHRpb24KICAgIG15ICRGb3JjZSA9ICRTZWxmLT5HZXRPcHRpb24oJ2ZvcmNlJyk7CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBzdXJ2ZXkgb2JqZWN0CiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKICAgICMgZ2V0IHN1cnZleSBpZHMKICAgIG15IEBTdXJ2ZXlJRHMgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlTZWFyY2goCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgICMgZ2V0IGRlbGV0ZSBwZXJpb2QgKGluIGRheXMpCiAgICBteSAkRGVsZXRlUGVyaW9kID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTdXJ2ZXk6OkRlbGV0ZVBlcmlvZCcpOwoKICAgIG15ICRPbGRlckRhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICk7CiAgICAkT2xkZXJEYXRlVGltZU9iamVjdC0+U3VidHJhY3QoCiAgICAgICAgRGF5cyA9PiAkRGVsZXRlUGVyaW9kLAogICAgKTsKICAgICRPbGRlckRhdGVUaW1lT2JqZWN0LT5TZXQoCiAgICAgICAgSG91ciAgID0+IDIzLAogICAgICAgIE1pbnV0ZSA9PiA1OSwKICAgICAgICBTZWNvbmQgPT4gNTksCiAgICApOwogICAgbXkgJFJlcXVlc3RDcmVhdGVUaW1lT2xkZXJEYXRlID0gJE9sZGVyRGF0ZVRpbWVPYmplY3QtPlRvU3RyaW5nKCk7CgogICAgbXkgJE5ld2VyRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgKTsKICAgICROZXdlckRhdGVUaW1lT2JqZWN0LT5TdWJ0cmFjdCgKICAgICAgICBEYXlzID0+ICREZWxldGVQZXJpb2QgKyAxLAogICAgKTsKICAgICROZXdlckRhdGVUaW1lT2JqZWN0LT5TZXQoCiAgICAgICAgSG91ciAgID0+IDAsCiAgICAgICAgTWludXRlID0+IDAsCiAgICAgICAgU2Vjb25kID0+IDAsCiAgICApOwogICAgbXkgJFJlcXVlc3RDcmVhdGVUaW1lTmV3ZXJEYXRlID0gJE5ld2VyRGF0ZVRpbWVPYmplY3QtPlRvU3RyaW5nKCk7CgogICAgIyBpbml0IHJlc3VsdCBhcnJheQogICAgbXkgQFJlc3VsdExpc3Q7CgogICAgZm9yIG15ICRTdXJ2ZXlJRCAoQFN1cnZleUlEcykgewoKICAgICAgICAjIGdldCBwdWJsaWMgc3VydmV5IGtleXMKICAgICAgICBteSAkUHVibGljU3VydmV5S2V5cyA9ICRTdXJ2ZXlPYmplY3QtPlB1YmxpY1N1cnZleUtleUdldCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CgogICAgICAgIFJFUVVFU1Q6CiAgICAgICAgZm9yIG15ICRQdWJsaWNLZXkgKCBAeyRQdWJsaWNTdXJ2ZXlLZXlzfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHJlcXVlc3RzCiAgICAgICAgICAgIG15ICVSZXF1ZXN0RGF0YSA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RHZXQoCiAgICAgICAgICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgICAgICAgICAgICA9PiAkUHVibGljS2V5LAogICAgICAgICAgICAgICAgUmVxdWVzdENyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJFJlcXVlc3RDcmVhdGVUaW1lT2xkZXJEYXRlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBza2lwIGlmIHdlIGhhdmUgbm8gcmVxdWVzdCBkYXRhCiAgICAgICAgICAgIG5leHQgUkVRVUVTVCBpZiAhJVJlcXVlc3REYXRhOwoKICAgICAgICAgICAgIyBnZXQgdm90ZSBsaXN0CiAgICAgICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgICAgICBTRUxFQ1Qgcy50aXRsZSwgdC50biAsIHNyLnNlbmRfdGltZSwgc3Iudm90ZV90aW1lLCBzci5jcmVhdGVfdGltZQogICAgICAgICAgICAgICAgICAgIEZST00gc3VydmV5X3JlcXVlc3Qgc3IKICAgICAgICAgICAgICAgICAgICBJTk5FUiBKT0lOIHRpY2tldCB0IE9OIHQuaWQgPSBzci50aWNrZXRfaWQKICAgICAgICAgICAgICAgICAgICBJTk5FUiBKT0lOIHN1cnZleSBzIE9OIHMuaWQgPSBzci5zdXJ2ZXlfaWQKICAgICAgICAgICAgICAgICAgICBXSEVSRSBzci5pZCA9ID8nLAogICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkUmVxdWVzdERhdGF7UmVxdWVzdElEfSBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAgICAgICAgIG15ICRSZXN1bHQgPSBqb2luKAogICAgICAgICAgICAgICAgICAgICcgJywgIlN1cnZleToiIC4gJFJvd1swXSAuICJcdCIsCiAgICAgICAgICAgICAgICAgICAgIlRpY2tldE51bWJlcjoiIC4gJFJvd1sxXSAuICJcdCIsCiAgICAgICAgICAgICAgICAgICAgIlNlbmRUaW1lOiIgLiAkUm93WzJdIC4gIlx0IiwKICAgICAgICAgICAgICAgICAgICAiVm90ZVRpbWU6IiAuICRSb3dbM10gLiAiXHQiLAogICAgICAgICAgICAgICAgICAgICJDcmVhdGVUaW1lOiIgLiAkUm93WzRdIC4gIlx0IgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoIiRSZXN1bHRcbiIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJEZvcmNlKSB7CgogICAgICAgICAgICAgICAgIyBkZWxldGUgdm90ZSBkYXRhCiAgICAgICAgICAgICAgICBteSAkVm90ZURlbGV0ZSA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVEZWxldGUoCiAgICAgICAgICAgICAgICAgICAgUmVxdWVzdElEID0+ICRSZXF1ZXN0RGF0YXtSZXF1ZXN0SUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGRlbGV0ZSByZXF1ZXN0CiAgICAgICAgICAgICAgICBteSAkUmVxdWVzdERlbGV0ZSA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3REZWxldGUoCiAgICAgICAgICAgICAgICAgICAgUmVxdWVzdElEID0+ICRSZXF1ZXN0RGF0YXtSZXF1ZXN0SUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5Eb25lLjwvZ3JlZW4+XG4iKTsKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6U3VydmV5OjpSZXF1ZXN0c1NlbmQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpCYXNlQ29tbWFuZCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknLAopOwoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbignU2VuZCBwZW5kaW5nIHN1cnZleSByZXF1ZXN0cy4nKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZvcmNlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiQWN0dWFsbHkgc2VuZCB0aGUgcmVxdWVzdHMgbm93LiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgKTsKCiAgICAkU2VsZi0+QWRkaXRpb25hbEhlbHAoPDwiRU9GIik7CgogPHllbGxvdz5Db25maWd1cmUgZGVsYXllZCByZXF1ZXN0IHNlbmRpbmc6PC95ZWxsb3c+CgogIDx5ZWxsb3c+MS48L3llbGxvdz4gR28gdG8geW91ciBTeXNDb25maWcgKFN1cnZleS0+Q29yZSkgYW5kIGNvbmZpZ3VyZSA8Z3JlZW4+U3VydmV5OjpTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2U8L2dyZWVuPiB0byBhIGhpZ2hlciB2YWx1ZSB0aGFuIDAKICA8eWVsbG93PjIuPC95ZWxsb3c+IENyZWF0ZSBhIHN1cnZleSwgbWFrZSBpdCBtYXN0ZXIKICA8eWVsbG93PjMuPC95ZWxsb3c+IENyZWF0ZSBhIHRpY2tldCwgY2xvc2UgaXQKICA8eWVsbG93PjQuPC95ZWxsb3c+IFdhaXQgdGhlIG5lY2Vzc2FyeSBhbW91bnQgb2YgaG91cnMgeW91IGhhZCBjb25maWd1cmVkCiAgPHllbGxvdz41LjwveWVsbG93PiBZb3UgY2FuIGRvIGEgZHJ5IHJ1biB0byBnZXQgYSBsaXN0IG9mIHN1cnZleSByZXF1ZXN0cyB0aGF0IHdvdWxkIGJlIHNlbnQgKCBkbyBub3QgdXNlIC0tZm9yY2UgKQogIDx5ZWxsb3c+Ni48L3llbGxvdz4gSWYgeW91J3JlIGZpbmUgd2l0aCBpdCwgZ28gYWdhaW4gdG8gU3lzQ29uZmlnIChTdXJ2ZXktPkRhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrKSBhbmQgYWN0aXZhdGUgZGFlbW9uIHRhc2sgPGdyZWVuPiBEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZDwvZ3JlZW4+CkVPRgoKICAgIHJldHVybjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5Qcm9jZXNzaW5nIHBlbmRpbmcgc3VydmV5IHJlcXVlc3RzLi4uPC95ZWxsb3c+XG5cbiIpOwoKICAgICMgZ2V0IGZvcmNlIG9wdGlvbgogICAgbXkgJEZvcmNlID0gJFNlbGYtPkdldE9wdGlvbignZm9yY2UnKTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZmluZCBzdXJ2ZXlfcmVxdWVzdHMgdGhhdCBoYXZlbid0IGJlZW4gc2VudCB5ZXQKICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAiCiAgICAgICAgICAgIFNFTEVDVCBzcS5pZCwgc3EudGlja2V0X2lkLCBzcS5jcmVhdGVfdGltZSwgc3EucHVibGljX3N1cnZleV9rZXkKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcmVxdWVzdCBzcQogICAgICAgICAgICAgICAgSU5ORVIgSk9JTiB0aWNrZXQgT04gdGlja2V0LmlkID0gc3EudGlja2V0X2lkCiAgICAgICAgICAgIFdIRVJFIHNxLnNlbmRfdGltZSBJUyBOVUxMCiAgICAgICAgICAgIE9SREVSIEJZIHNxLmNyZWF0ZV90aW1lIERFU0MiLAogICAgKTsKCiAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiREIgZXJyb3IgZHVyaW5nIGEgUHJlcGFyZSBmdW5jdGlvbi5cbiIpOwogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgfQoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQFJlcXVlc3RMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBAUmVxdWVzdExpc3QsIHsKICAgICAgICAgICAgSUQgICAgICAgICAgICAgID0+ICRSb3dbMF0sCiAgICAgICAgICAgIFRpY2tldElEICAgICAgICA9PiAkUm93WzFdLAogICAgICAgICAgICBDcmVhdGVUaW1lICAgICAgPT4gJFJvd1syXSwKICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRSb3dbM10sCiAgICAgICAgfTsKICAgIH0KCiAgICBpZiAoICFAUmVxdWVzdExpc3QgKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCJcbjxncmVlbj5Eb25lLjwvZ3JlZW4+XG4iKTsKICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKICAgIH0KCiAgICAjIGdldCBTeXN0ZW1UaW1lIGluIFVuaXhUaW1lCiAgICBteSAkU3lzdGVtVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpLT5Ub0Vwb2NoKCk7CgogICAgUkVRVUVTVDoKICAgIGZvciBteSAkUmVxdWVzdCAoQFJlcXVlc3RMaXN0KSB7CgogICAgICAgIGZvciBteSAkTmVlZGVkIChxdyhJRCBUaWNrZXRJRCBDcmVhdGVUaW1lKSkgewogICAgICAgICAgICBpZiAoICEkUmVxdWVzdC0+eyROZWVkZWR9ICkgewogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPkVycm9yOiAkTmVlZGVkIG1pc3NpbmcgaW4gc2VydmljZV9yZXF1ZXN0IHJvdy48L3JlZD5cbiIpOwogICAgICAgICAgICAgICAgbmV4dCBSRVFVRVNUOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNvbnZlcnQgY3JlYXRlX3RpbWUgdG8gdW5peHRpbWUKICAgICAgICBteSAkQ3JlYXRlVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRSZXF1ZXN0LT57Q3JlYXRlVGltZX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKS0+VG9FcG9jaCgpOwoKICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgICIgIFJlcXVlc3RJRDogPHllbGxvdz4kUmVxdWVzdC0+e0lEfTwveWVsbG93PlxuICAgLUZvciBUaWNrZXRJRDogJFJlcXVlc3QtPntUaWNrZXRJRH1cbiIKICAgICAgICApOwoKICAgICAgICBteSAkU2VuZEluSG91cnNBZnRlckNsb3NlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTdXJ2ZXk6OlNlbmRJbkhvdXJzQWZ0ZXJDbG9zZScpOwoKICAgICAgICAjIGRvbid0IHNlbmQgZm9yIHN1cnZleV9yZXF1ZXN0cyB0aGF0IGFyZSB5b3VuZ2VyIHRoYW4gQ3JlYXRlVGltZSArICRTZW5kSU5Ib3Vyc0FmdGVyQ2xvc2UKICAgICAgICBpZiAoICRTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UgKiAzXzYwMCArICRDcmVhdGVUaW1lID4gJFN5c3RlbVRpbWUgKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgKICAgICAgICAgICAgICAgICIgICAtU2tpcHBlZCBiZWNhdXNlIHNlbmQgdGltZSB3YXNuJ3QgcmVhY2hlZCB5ZXQuXG5cbiIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBSRVFVRVNUOwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPlByaW50KAogICAgICAgICAgICAiICAgLVNlbmRpbmcgcmVxdWVzdC4uLlxuIgogICAgICAgICk7CgogICAgICAgIGlmICgkRm9yY2UpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JyktPlJlcXVlc3RTZW5kKAogICAgICAgICAgICAgICAgVHJpZ2dlclNlbmRSZXF1ZXN0cyA9PiAxLAogICAgICAgICAgICAgICAgU3VydmV5UmVxdWVzdElEICAgICA9PiAkUmVxdWVzdC0+e0lEfSwKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICAgPT4gJFJlcXVlc3QtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgICAgID0+ICRSZXF1ZXN0LT57UHVibGljU3VydmV5S2V5fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoIiAgICA8cmVkPkVycm9yIHNlbmRpbmcgdGhlIHJlcXVlc3Q8L3JlZD5cbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFN1Y2Nlc3MgZXEgJ1F1ZXVlJyB8fCAkU3VjY2VzcyBlcSAnVHlwZScgfHwgJFN1Y2Nlc3MgZXEgJ1NlcnZpY2UnICkgewogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCIgICAgPHJlZD5FcnJvciBzZW5kaW5nIHRoZSByZXF1ZXN0PC9yZWQ+XG4iKTsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiICAgIDxyZWQ+VGlja2V0ICRTdWNjZXNzIGRvZXMgbm90IG1hdGNoIHRvIGFzc2lnbmVkIHN1cnZleSByZXF1ZXN0LjwvcmVkPlxuIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoIiAgICA8Z3JlZW4+UmVxdWVzdCBpcyBzZW50IHN1Y2Nlc3NmdWxseS48L2dyZWVuPlxuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJFNlbGYtPlByaW50KCJcbiIpOwogICAgfQoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUuPC9ncmVlbj5cbiIpOwogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdGF0czo6RHluYW1pYzo6U3VydmV5TGlzdDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBMaXN0OjpVdGlsIHF3KCBmaXJzdCApOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6TGFuZ3VhZ2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvY2snLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTTEEnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlR5cGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QuCiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgR2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgdGlja2V0IG9iamVjdC4KICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ1RpY2tldCddLAogICAgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBHZXRPYmplY3ROYW1lIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICdTdXJ2ZXlMaXN0JzsKfQoKc3ViIEdldE9iamVjdEJlaGF2aW91cnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlQmVoYXZpb3VycyA9ICgKICAgICAgICBQcm92aWRlc0Rhc2hib2FyZFdpZGdldCA9PiAwLAogICAgKTsKCiAgICByZXR1cm4gJUJlaGF2aW91cnM7Cn0KCnN1YiBHZXRPYmplY3RBdHRyaWJ1dGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBHZXQgbmVlZGVkIG9iamVjdHMuCiAgICBteSAkTG9ja09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvY2snKTsKICAgIG15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7CgogICAgbXkgJUxpbWl0ID0gKAogICAgICAgIDUgICAgICAgICA9PiA1LAogICAgICAgIDEwICAgICAgICA9PiAxMCwKICAgICAgICAyMCAgICAgICAgPT4gMjAsCiAgICAgICAgNTAgICAgICAgID0+IDUwLAogICAgICAgIDEwMCAgICAgICA9PiAxMDAsCiAgICAgICAgdW5saW1pdGVkID0+IFRyYW5zbGF0YWJsZSgndW5saW1pdGVkJyksCiAgICApOwoKICAgICMgR2V0IFN1cnZleSBMaXN0LgogICAgbXkgJVN1cnZleUxpc3QgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlMaXN0KCk7CgogICAgbXkgJVN1cnZleUF0dHJpYnV0ZXMgPSAleyAkU2VsZi0+X1N1cnZleUF0dHJpYnV0ZXMoKSB9OwogICAgbXkgJU9yZGVyQnkgPSBtYXAgeyAkXyA9PiAkU3VydmV5QXR0cmlidXRlc3skX30gfSBncmVwIHsgJF8gbmUgJ051bWJlcicgfSBrZXlzICVTdXJ2ZXlBdHRyaWJ1dGVzOwoKICAgICMgR2V0IGR5bmFtaWMgZmllbGQgYmFja2VuZCBvYmplY3QuCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAjIFJlbW92ZSBub24gc29ydGFibGUgKGFuZCBvcmRlcmFibGUpIER5bmFtaWMgRmllbGRzLgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgIyBDaGVjayBpZiBkeW5hbWljIGZpZWxkIGlzIHNvcnRhYmxlLgogICAgICAgIG15ICRJc1NvcnRhYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc1NvcnRhYmxlJywKICAgICAgICApOwoKICAgICAgICAjIFJlbW92ZSBkeW5hbWljIGZpZWxkcyBmcm9tIHRoZSBsaXN0IGlmIGlzIG5vdCBzb3J0YWJsZS4KICAgICAgICBpZiAoICEkSXNTb3J0YWJsZSApIHsKICAgICAgICAgICAgZGVsZXRlICRPcmRlckJ5eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJVNvcnRTZXF1ZW5jZSA9ICgKICAgICAgICBVcCAgID0+IFRyYW5zbGF0YWJsZSgnYXNjZW5kaW5nJyksCiAgICAgICAgRG93biA9PiBUcmFuc2xhdGFibGUoJ2Rlc2NlbmRpbmcnKSwKICAgICk7CgogICAgbXkgQE9iamVjdEF0dHJpYnV0ZXMgPSAoCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnQXR0cmlidXRlcyB0byBiZSBwcmludGVkJyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDAsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ1N1cnZleUF0dHJpYnV0ZXMnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gICAgICA9PiAxLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IFwlU3VydmV5QXR0cmlidXRlcywKICAgICAgICAgICAgU29ydCAgICAgICAgICAgICA9PiAnSW5kaXZpZHVhbEtleScsCiAgICAgICAgICAgIFNvcnRJbmRpdmlkdWFsICAgPT4gJFNlbGYtPl9Tb3J0ZWRBdHRyaWJ1dGVzKCksCgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU29ydCBzZXF1ZW5jZScpLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAwLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdTb3J0U2VxdWVuY2UnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdTZWxlY3RGaWVsZCcsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uICAgICAgPT4gMSwKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiBcJVNvcnRTZXF1ZW5jZSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0xpbWl0JyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ0xpbWl0JywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnU2VsZWN0RmllbGQnLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgICAgID0+IDEsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gXCVMaW1pdCwKICAgICAgICAgICAgU29ydCAgICAgICAgICAgICA9PiAnSW5kaXZpZHVhbEtleScsCiAgICAgICAgICAgIFNvcnRJbmRpdmlkdWFsICAgPT4gWyAnNScsICcxMCcsICcyMCcsICc1MCcsICcxMDAnLCAndW5saW1pdGVkJywgXSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0Nsb3NlIFRpbWUnKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnQ2xvc2VUaW1lJywKICAgICAgICAgICAgVGltZVBlcmlvZEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnVGltZScsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgVGltZVN0YXJ0ID0+ICdUaWNrZXRDbG9zZVRpbWVOZXdlckRhdGUnLAogICAgICAgICAgICAgICAgVGltZVN0b3AgID0+ICdUaWNrZXRDbG9zZVRpbWVPbGRlckRhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnQ3JlYXRlIFRpbWUnKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnQ3JlYXRlVGltZScsCiAgICAgICAgICAgIFRpbWVQZXJpb2RGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ1RpbWUnLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgIFRpbWVTdGFydCA9PiAnVGlja2V0Q3JlYXRlVGltZU5ld2VyRGF0ZScsCiAgICAgICAgICAgICAgICBUaW1lU3RvcCAgPT4gJ1RpY2tldENyZWF0ZVRpbWVPbGRlckRhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU2VuZCBUaW1lJyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ1NlbmRUaW1lJywKICAgICAgICAgICAgVGltZVBlcmlvZEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnVGltZScsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgVGltZVN0YXJ0ID0+ICdSZXF1ZXN0U2VuZFRpbWVOZXdlckRhdGUnLAogICAgICAgICAgICAgICAgVGltZVN0b3AgID0+ICdSZXF1ZXN0U2VuZFRpbWVPbGRlckRhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnVm90ZSBUaW1lJyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ1ZvdGVUaW1lJywKICAgICAgICAgICAgVGltZVBlcmlvZEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnVGltZScsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgVGltZVN0YXJ0ID0+ICdSZXF1ZXN0Vm90ZVRpbWVOZXdlckRhdGUnLAogICAgICAgICAgICAgICAgVGltZVN0b3AgID0+ICdSZXF1ZXN0Vm90ZVRpbWVPbGRlckRhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU3VydmV5IExpc3QnKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnU3VydmV5SURzJywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnU2VsZWN0RmllbGQnLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IFwlU3VydmV5TGlzdCwKICAgICAgICB9LAoKICAgICk7CgogICAgcmV0dXJuIEBPYmplY3RBdHRyaWJ1dGVzOwp9CgpzdWIgR2V0U3RhdFRhYmxlUHJldmlldyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkU2VsZi0+R2V0U3RhdFRhYmxlKAogICAgICAgICVQYXJhbSwKICAgICAgICBQcmV2aWV3ID0+IDEsCiAgICApOwp9CgpzdWIgR2V0U3RhdFRhYmxlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAlU3VydmV5QXR0cmlidXRlcyAgICA9IG1hcCB7ICRfID0+IDEgfSBAeyAkUGFyYW17WFZhbHVlfS0+e1NlbGVjdGVkVmFsdWVzfSB9OwogICAgbXkgJFNvcnRlZEF0dHJpYnV0ZXNSZWYgPSAkU2VsZi0+X1NvcnRlZEF0dHJpYnV0ZXMoKTsKICAgIG15ICRQcmV2aWV3ICAgICAgICAgICAgID0gJFBhcmFte1ByZXZpZXd9OwoKICAgICMgR2V0IG5lZWRlZCBvYmplY3RzLgogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKICAgIG15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7CgogICAgIyBDaGVjayBpZiBhIGVudW1lcmF0aW9uIGlzIHJlcXVlc3RlZC4KICAgIG15ICRBZGRFbnVtZXJhdGlvbiA9IDA7CiAgICBpZiAoICRTdXJ2ZXlBdHRyaWJ1dGVze051bWJlcn0gKSB7CiAgICAgICAgJEFkZEVudW1lcmF0aW9uID0gMTsKICAgICAgICBkZWxldGUgJFN1cnZleUF0dHJpYnV0ZXN7TnVtYmVyfTsKICAgIH0KCiAgICAjIFNldCBkZWZhdWx0IHZhbHVlcyBpZiBubyBzb3J0IG9yIG9yZGVyIGF0dHJpYnV0ZSBpcyBnaXZlbi4KICAgIG15ICRTb3J0UmVmID0gZmlyc3QgeyAkXy0+e0VsZW1lbnR9IGVxICdTb3J0U2VxdWVuY2UnIH0gQHsgJFBhcmFte1ZhbHVlU2VyaWVzfSB9OwogICAgbXkgJFNvcnQgPSAkU29ydFJlZiA/ICRTb3J0UmVmLT57U2VsZWN0ZWRWYWx1ZXN9LT5bMF0gOiAnRG93bic7CiAgICBteSAkTGltaXQgPSAkUGFyYW17UmVzdHJpY3Rpb25zfS0+e0xpbWl0fTsKCiAgICAkUGFyYW17UmVzdHJpY3Rpb25zfS0+e0xpbWl0fSA9ICRMaW1pdCB8fCAxMDBfMDAwXzAwMDsKCiAgICAjIEZpbmQgb3V0IGlmIHRoZSBleHRlbmRlZCB2ZXJzaW9uIG9mIFRpY2tldEdldCBpcyBuZWVkZWQuCiAgICBteSAkRXh0ZW5kZWQgPSAkU2VsZi0+X0V4dGVuZGVkQXR0cmlidXRlc0NoZWNrKAogICAgICAgIFN1cnZleUF0dHJpYnV0ZXMgPT4gXCVTdXJ2ZXlBdHRyaWJ1dGVzLAogICAgKTsKCiAgICAjIEZpbmQgb3V0IGlmIGR5bmFtaWMgZmllbGRzIGFyZSByZXF1aXJlZC4KICAgIG15ICROZWVkRHluYW1pY0ZpZWxkcyA9IDA7CiAgICBEWU5BTUlDRklFTERTTkVFREVEOgogICAgZm9yIG15ICRQYXJhbWV0ZXJOYW1lICggc29ydCBrZXlzICVTdXJ2ZXlBdHRyaWJ1dGVzICkgewogICAgICAgIGlmICggJFBhcmFtZXRlck5hbWUgPX4gbXtcQSBEeW5hbWljRmllbGRfIH14bXMgKSB7CiAgICAgICAgICAgICROZWVkRHluYW1pY0ZpZWxkcyA9IDE7CiAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEU05FRURFRDsKICAgICAgICB9CiAgICB9CgogICAgIyBHZXQgaW52b2x2ZWQgVGlja2V0cy4KICAgIG15IEBUaWNrZXRJRHM7CiAgICBpZiAoJFByZXZpZXcpIHsKICAgICAgICBAVGlja2V0SURzID0gJFRpY2tldE9iamVjdC0+VGlja2V0U2VhcmNoKAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgIFJlc3VsdCAgICAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgUGVybWlzc2lvbiA9PiAncm8nLAogICAgICAgICAgICBMaW1pdCAgICAgID0+IDEwLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBAVGlja2V0SURzID0gJFRpY2tldE9iamVjdC0+VGlja2V0U2VhcmNoKAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgIFJlc3VsdCAgICAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgUGVybWlzc2lvbiA9PiAncm8nLAogICAgICAgICAgICAleyAkUGFyYW17UmVzdHJpY3Rpb25zfSB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBHZXQgdGhlIHN1cnZleSBkYXRhLgogICAgbXkgQFN1cnZleUlEczsKICAgIG15IEBTdGF0QXJyYXk7CgogICAgQFN1cnZleUlEcyA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVNlYXJjaCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAleyAkUGFyYW17UmVzdHJpY3Rpb25zfSB9LAogICAgKTsKCiAgICBteSAkU3RhdHNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnKTsKCiAgICBTVVJWRVk6CiAgICBmb3IgbXkgJFN1cnZleUlEIChAU3VydmV5SURzKSB7CgogICAgICAgICMgQ2hlY2sgc3VydmV5IHJlc3RyaWN0aW9uLgogICAgICAgICMgQ2FuJ3QgZG9uZSBieSBTdXJ2ZXlTZWFyY2guCiAgICAgICAgbmV4dCBTVVJWRVkgaWYgJFBhcmFte1Jlc3RyaWN0aW9uc317U3VydmV5SURzfSAmJiAkUGFyYW17UmVzdHJpY3Rpb25zfXtTdXJ2ZXlJRHN9IG5lICRTdXJ2ZXlJRDsKCiAgICAgICAgIyBHZXQgcHVibGljIHN1cnZleSBrZXlzLgogICAgICAgIG15ICRQdWJsaWNTdXJ2ZXlLZXlzOwogICAgICAgIGlmICgkUHJldmlldykgewogICAgICAgICAgICAkUHVibGljU3VydmV5S2V5cyA9ICRTdXJ2ZXlPYmplY3QtPlB1YmxpY1N1cnZleUtleUdldCgKICAgICAgICAgICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgICAgIExpbWl0ICAgID0+IDEwLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFB1YmxpY1N1cnZleUtleXMgPSAkU3VydmV5T2JqZWN0LT5QdWJsaWNTdXJ2ZXlLZXlHZXQoCiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIEdldCByZXF1ZXN0LgogICAgICAgIFBVQkxJQ0tFWToKICAgICAgICBmb3IgbXkgJFB1YmxpY0tleSAoIEB7JFB1YmxpY1N1cnZleUtleXN9ICkgewoKICAgICAgICAgICAgbXkgJVN1cnZleVJlcXVlc3QgPSAkU3VydmV5T2JqZWN0LT5SZXF1ZXN0R2V0KAogICAgICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNLZXksCiAgICAgICAgICAgICAgICAleyAkUGFyYW17UmVzdHJpY3Rpb25zfSB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBTa2lwIGlmIG5vIHN1cnZleSByZXF1ZXN0IGRhdGEgZm91bmQgKGUuZy4gc2VuZCB0aW1lIGZpbHRlcikuCiAgICAgICAgICAgIG5leHQgUFVCTElDS0VZIGlmICFJc0hhc2hSZWZXaXRoRGF0YSB7JVN1cnZleVJlcXVlc3R9OwoKICAgICAgICAgICAgIyBTa2lwIGlmIHRpY2tldCBzcGVjaWZpYyBmaWx0ZXJzIGFyZSBzZXQuCiAgICAgICAgICAgIG5leHQgUFVCTElDS0VZIGlmICFncmVwIHsgJF8gZXEgJFN1cnZleVJlcXVlc3R7VGlja2V0SUR9IH0gQFRpY2tldElEczsKCiAgICAgICAgICAgICMgR2V0IHF1ZXN0aW9uIGxpc3QuCiAgICAgICAgICAgIG15IEBRdWVzdGlvbkxpc3QgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkxpc3QoCiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5UmVxdWVzdHtTdXJ2ZXlJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAUXVlc3Rpb25zOwogICAgICAgICAgICBteSAlVm90ZVJlc3VsdDsKICAgICAgICAgICAgUVVFU1RJT046CiAgICAgICAgICAgIGZvciBteSAkUXVlc3Rpb25EYXRhIChAUXVlc3Rpb25MaXN0KSB7CgogICAgICAgICAgICAgICAgIyBTa2lwIHF1ZXN0aW9uIGJsb2NrIGlmIG5vIHN1cnZleSBmaWx0ZXIgaXMgc2V0LgogICAgICAgICAgICAgICAgbmV4dCBRVUVTVElPTiBpZiAhJFBhcmFte1Jlc3RyaWN0aW9uc317U3VydmV5SURzfTsKCiAgICAgICAgICAgICAgICAjIEdldCB2b3RlcyBmb3IgcXVlc3Rpb24gYW5kIHJlcXVlc3QuCiAgICAgICAgICAgICAgICBteSBAQW5zd2VyTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVHZXQoCiAgICAgICAgICAgICAgICAgICAgUmVxdWVzdElEICA9PiAkU3VydmV5UmVxdWVzdHtSZXF1ZXN0SUR9LAogICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uRGF0YS0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIFB1c2ggcXVlc3Rpb25zIGludG8gYXJyYXkgZm9yIGxhdGVyIHVzZS4KICAgICAgICAgICAgICAgIHB1c2ggQFF1ZXN0aW9ucywgJFF1ZXN0aW9uRGF0YS0+e1F1ZXN0aW9ufTsKCiAgICAgICAgICAgICAgICAjIExvb3AgdGhyb3VnaCB2b3RlIGRhdGEgdG8gbWVyZ2Ugdm90ZXMgaW50byBzdXJ2ZXkgcmVxdWVzdCBoYXNoLgogICAgICAgICAgICAgICAgaWYgKEBBbnN3ZXJMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRWb3RlRGF0YSAoQEFuc3dlckxpc3QpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRdWVzdGlvbkRhdGEtPntUeXBlfSBlcSAnTlBTJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJFF1ZXN0aW9uRGF0YS0+e1R5cGV9IGVxICdSYWRpbycKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRRdWVzdGlvbkRhdGEtPntUeXBlfSBlcSAnQ2hlY2tib3gnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICVBbnN3ZXIgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5zd2VySUQgPT4gJFZvdGVEYXRhLT57Vm90ZVZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb25EYXRhLT57VHlwZX0gZXEgJ0NoZWNrYm94JyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvdW50QW5zd2VyID0gJFN1cnZleU9iamVjdC0+QW5zd2VyQ291bnQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uRGF0YS0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgd2UgaGF2ZSBvbmx5IG9uZSBhbnN3ZXIgdXNlIENoZWNrZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ291bnRBbnN3ZXIgPT0gMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEFuc3dlcntBbnN3ZXJ9ID0gVHJhbnNsYXRhYmxlKCdDaGVja2VkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc2NhbGFyIEBBbnN3ZXJMaXN0ID4gMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkU3VydmV5UmVxdWVzdHsgJFF1ZXN0aW9uRGF0YS0+e1F1ZXN0aW9ufSB9IC49ICRBbnN3ZXJ7QW5zd2VyfSAuICJcbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkU3VydmV5UmVxdWVzdHsgJFF1ZXN0aW9uRGF0YS0+e1F1ZXN0aW9ufSB9ID0gJEFuc3dlcntBbnN3ZXJ9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uRGF0YS0+e1R5cGV9IGVxICdZZXNObycgfHwgJFF1ZXN0aW9uRGF0YS0+e1R5cGV9IGVxICdUZXh0YXJlYScgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb25EYXRhLT57VHlwZX0gZXEgJ1RleHRhcmVhJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVm90ZURhdGEtPntWb3RlVmFsdWV9ID1+IHN7XEFcJGh0bWxcL3RleHRcJFxzKC4qKX17JDF9eG1zOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRWb3RlRGF0YS0+e1ZvdGVWYWx1ZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlRvQXNjaWkoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkVm90ZURhdGEtPntWb3RlVmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTdXJ2ZXlSZXF1ZXN0eyAkUXVlc3Rpb25EYXRhLT57UXVlc3Rpb259IH0gPSAkVm90ZURhdGEtPntWb3RlVmFsdWV9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN1cnZleVJlcXVlc3R7ICRRdWVzdGlvbkRhdGEtPntRdWVzdGlvbn0gfSA9ICRWb3RlRGF0YS0+e1ZvdGVWYWx1ZX07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkU3VydmV5UmVxdWVzdHsgJFF1ZXN0aW9uRGF0YS0+e1F1ZXN0aW9ufSB9ID0gIiAiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBteSBAUmVzdWx0Um93OwogICAgICAgICAgICBteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkU3VydmV5UmVxdWVzdHtUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBFeHRlbmRlZCAgICAgID0+ICRFeHRlbmRlZCwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gJE5lZWREeW5hbWljRmllbGRzLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBNZXJnZSB0aWNrZXQgYW5kIHN1cnZleSByZXF1ZXN0IGRhdGEuCiAgICAgICAgICAgIG15ICVTdXJ2ZXlEYXRhID0gKCAlU3VydmV5UmVxdWVzdCwgJVRpY2tldCApOwoKICAgICAgICAgICAgIyBHZXQgU3VydmV5IHJhdyBkYXRhLgogICAgICAgICAgICBteSAlU3VydmV5UmF3ID0gJFN1cnZleU9iamVjdC0+U3VydmV5R2V0KAogICAgICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleVJlcXVlc3R7U3VydmV5SUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBNZXJnZSBTdXJ2ZXlUaXRsZSBpbnRvIFN1cnZleURhdGEuCiAgICAgICAgICAgICRTdXJ2ZXlEYXRhe1N1cnZleVRpdGxlfSA9ICRTdXJ2ZXlSYXd7VGl0bGV9OwoKICAgICAgICAgICAgQVRUUklCVVRFOgogICAgICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIEB7JFNvcnRlZEF0dHJpYnV0ZXNSZWZ9ICkgewogICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgaWYgISRTdXJ2ZXlBdHRyaWJ1dGVzeyRBdHRyaWJ1dGV9OwoKICAgICAgICAgICAgICAgICMgQ2xlYW4gU3VydmV5RGF0YS4KICAgICAgICAgICAgICAgIGlmICggISRTdXJ2ZXlEYXRheyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAgICAgICAgICRTdXJ2ZXlEYXRheyRBdHRyaWJ1dGV9ID0gJyc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRQYXJhbXtUaW1lWm9uZX0KICAgICAgICAgICAgICAgICAgICAmJiAkU3VydmV5RGF0YXskQXR0cmlidXRlfQogICAgICAgICAgICAgICAgICAgICYmICRTdXJ2ZXlEYXRheyRBdHRyaWJ1dGV9ID1+IC9cQShcZHs0fSktKFxkezJ9KS0oXGR7Mn0pXHMoXGR7Mn0pOihcZHsyfSk6KFxkezJ9KVx6LwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkU3VydmV5RGF0YXskQXR0cmlidXRlfSA9ICRTdGF0c09iamVjdC0+X0Zyb21PVFJTVGltZVpvbmUoCiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyAgID0+ICRTdXJ2ZXlEYXRheyRBdHRyaWJ1dGV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaW1lWm9uZSA9PiAkUGFyYW17VGltZVpvbmV9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJFN1cnZleURhdGF7JEF0dHJpYnV0ZX0gLj0gIiAoJFBhcmFte1RpbWVab25lfSkiOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHB1c2ggQFJlc3VsdFJvdywgJFN1cnZleURhdGF7JEF0dHJpYnV0ZX07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgTWVyZ2UgcXVlc3Rpb25zIGludG8gcmVzdWx0IHJvdy4KICAgICAgICAgICAgUVVFU1RJT05TOgogICAgICAgICAgICBmb3IgbXkgJFF1ZXN0aW9uIChAUXVlc3Rpb25zKSB7CgogICAgICAgICAgICAgICAgcHVzaCBAUmVzdWx0Um93LCAkU3VydmV5RGF0YXskUXVlc3Rpb259OwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBTdGF0QXJyYXksIFxAUmVzdWx0Um93OwogICAgICAgIH0KICAgIH0KCiAgICBAU3RhdEFycmF5ID0gJFNlbGYtPl9JbmRpdmlkdWFsUmVzdWx0T3JkZXIoCiAgICAgICAgU3RhdEFycmF5ID0+IFxAU3RhdEFycmF5LAogICAgICAgIFNvcnQgICAgICA9PiAkU29ydCwKICAgICAgICBMaW1pdCAgICAgPT4gJExpbWl0LAogICAgKTsKCiAgICByZXR1cm4gQFN0YXRBcnJheTsKfQoKc3ViIEdldEhlYWRlckxpbmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICVTZWxlY3RlZEF0dHJpYnV0ZXMgPSBtYXAgeyAkXyA9PiAxIH0gQHsgJFBhcmFte1hWYWx1ZX0tPntTZWxlY3RlZFZhbHVlc30gfTsKCiAgICBteSAkU3VydmV5QXR0cmlidXRlcyAgICA9ICRTZWxmLT5fU3VydmV5QXR0cmlidXRlcygpOwogICAgbXkgJFNvcnRlZEF0dHJpYnV0ZXNSZWYgPSAkU2VsZi0+X1NvcnRlZEF0dHJpYnV0ZXMoKTsKICAgIG15IEBIZWFkZXJMaW5lOwoKICAgICMgR2V0IGxhbmd1YWdlIG9iamVjdC4KICAgIG15ICRMYW5ndWFnZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6TGFuZ3VhZ2UnKTsKCiAgICAjIEdldCBzdXJ2ZXkgb2JqZWN0LgogICAgbXkgJFN1cnZleU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKCiAgICBBVFRSSUJVVEU6CiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIEB7JFNvcnRlZEF0dHJpYnV0ZXNSZWZ9ICkgewogICAgICAgIG5leHQgQVRUUklCVVRFIGlmICEkU2VsZWN0ZWRBdHRyaWJ1dGVzeyRBdHRyaWJ1dGV9OwogICAgICAgIHB1c2ggQEhlYWRlckxpbmUsICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCAkU3VydmV5QXR0cmlidXRlcy0+eyRBdHRyaWJ1dGV9ICk7CiAgICB9CgogICAgIyBBZGQgcXVlc3Rpb25zLgogICAgIyBPbmx5IGlmIHN1cnZleSByZXN0cmljdGlvbiBpcyBhY3RpdmUuCiAgICAjIEdldCBzdXJ2ZXkgaWRzLgogICAgaWYgKCAkUGFyYW17UmVzdHJpY3Rpb25zfS0+e1N1cnZleUlEc30gKSB7CgogICAgICAgIG15IEBTdXJ2ZXlJRHMgPSAkUGFyYW17UmVzdHJpY3Rpb25zfS0+e1N1cnZleUlEc307CgogICAgICAgICMgR2V0IHF1ZXN0aW9ucy4KICAgICAgICBteSBAUXVlc3Rpb25zOwogICAgICAgIGZvciBteSAkU3VydmV5SUQgKEBTdXJ2ZXlJRHMpIHsKCiAgICAgICAgICAgIG15IEBMaXN0ID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25MaXN0KAogICAgICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgZm9yIG15ICRMaXN0IChATGlzdCkgewogICAgICAgICAgICAgICAgcHVzaCBAUXVlc3Rpb25zLCAkTGlzdC0+e1F1ZXN0aW9ufTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcHVzaCBASGVhZGVyTGluZSwgQFF1ZXN0aW9uczsKICAgIH0KCiAgICByZXR1cm4gXEBIZWFkZXJMaW5lOwp9CgpzdWIgRXhwb3J0V3JhcHBlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBcJVBhcmFtOwp9CgpzdWIgSW1wb3J0V3JhcHBlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBcJVBhcmFtOwp9CgpzdWIgX1N1cnZleUF0dHJpYnV0ZXMgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIEdldCBjb25maWcgb2JqZWN0LgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJVN1cnZleUF0dHJpYnV0ZXMgPSAoCgogICAgICAgIFRpY2tldE51bWJlciA9PiAnVGlja2V0TnVtYmVyJywKICAgICAgICBTdXJ2ZXlUaXRsZSAgPT4gJ1N1cnZleSBUaXRsZScsCiAgICAgICAgQ3JlYXRlZCAgICAgID0+ICdDcmVhdGUgVGltZScsCiAgICAgICAgQ2xvc2VkICAgICAgID0+ICdDbG9zZSBUaW1lJywKICAgICAgICBTZW5kVGltZSAgICAgPT4gJ1N1cnZleSBTZW5kIFRpbWUnLAogICAgICAgIFZvdGVUaW1lICAgICA9PiAnU3VydmV5IFZvdGUgVGltZScsCiAgICAgICAgUXVldWUgICAgICAgID0+ICdRdWV1ZScsCiAgICAgICAgQ3VzdG9tZXJJRCAgID0+ICdDdXN0b21lcklEJywKCiAgICApOwoKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlNlcnZpY2UnKSApIHsKICAgICAgICAkU3VydmV5QXR0cmlidXRlc3tTZXJ2aWNlfSA9ICdTZXJ2aWNlJzsKICAgIH0KCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAkU3VydmV5QXR0cmlidXRlc3sgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwogICAgfQoKICAgIHJldHVybiBcJVN1cnZleUF0dHJpYnV0ZXM7Cn0KCnN1YiBfU29ydGVkQXR0cmlidXRlcyB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgIG15IEBTb3J0ZWRBdHRyaWJ1dGVzID0gcXcoCiAgICAgICAgVGlja2V0TnVtYmVyCiAgICAgICAgU3VydmV5VGl0bGUKICAgICAgICBDcmVhdGVkCiAgICAgICAgQ2xvc2VkCiAgICAgICAgU2VuZFRpbWUKICAgICAgICBWb3RlVGltZQogICAgICAgIFF1ZXVlCiAgICAgICAgU2VydmljZQogICAgICAgIEN1c3RvbWVySUQKICAgICk7CgogICAgIyBDeWNsZSB0cm91Z2h0IHRoZSBEeW5hbWljIEZpZWxkcy4KICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICMgQWRkIGR5bmFtaWMgZmllbGQgYXR0cmlidXRlLgogICAgICAgIHB1c2ggQFNvcnRlZEF0dHJpYnV0ZXMsICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgIH0KCiAgICByZXR1cm4gXEBTb3J0ZWRBdHRyaWJ1dGVzOwp9CgpzdWIgX0V4dGVuZGVkQXR0cmlidXRlc0NoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgQEV4dGVuZGVkQXR0cmlidXRlcyA9IHF3KAogICAgICAgIENsb3NlZAogICAgKTsKCiAgICBBVFRSSUJVVEU6CiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoQEV4dGVuZGVkQXR0cmlidXRlcykgewogICAgICAgIHJldHVybiAxIGlmICRQYXJhbXtTdXJ2ZXlBdHRyaWJ1dGVzfXskQXR0cmlidXRlfTsKICAgIH0KCiAgICByZXR1cm47Cn0KCnN1YiBfSW5kaXZpZHVhbFJlc3VsdE9yZGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSBAVW5zb3J0ZWQgPSBAeyAkUGFyYW17U3RhdEFycmF5fSB9OwoKICAgIG15IEBTb3J0ZWQgPSBzb3J0IHsgJGEgPD0+ICRiIH0gQFVuc29ydGVkOwoKICAgICMgTWFrZSBhIHJldmVyc2Ugc29ydCBpZiBuZWVkZWQuCiAgICBpZiAoICRQYXJhbXtTb3J0fSBlcSAnRG93bicgKSB7CiAgICAgICAgQFNvcnRlZCA9IHJldmVyc2UgQFNvcnRlZDsKICAgIH0KCiAgICAjIFRha2UgY2FyZSBhYm91dCB0aGUgbGltaXQuCiAgICBpZiAoICRQYXJhbXtMaW1pdH0gJiYgJFBhcmFte0xpbWl0fSBuZSAndW5saW1pdGVkJyApIHsKICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIEBTb3J0ZWQgPSBncmVwIHsgKyskQ291bnQgPD0gJFBhcmFte0xpbWl0fSB9IEBTb3J0ZWQ7CiAgICB9CgogICAgcmV0dXJuIEBTb3J0ZWQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRGlnZXN0OjpNRDU7CnVzZSBNYWlsOjpBZGRyZXNzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKdXNlIHBhcmVudCBxdygKICAgIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OkFuc3dlcgogICAgS2VybmVsOjpTeXN0ZW06OlN1cnZleTo6UXVlc3Rpb24KICAgIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OlJlcXVlc3QKICAgIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OlZvdGUKKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6WUFNTCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkVuY29kZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkpTT04nLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpTdXJ2ZXkgLSBzdXJ2ZXkgbGliCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBzdXJ2ZXkgZnVuY3Rpb25zLiBFLiBnLiB0byBhZGQgc3VydmV5IG9yIGFuZCBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBsaWtlIGVzY2FwZSBzdHJpbmcgbmVlZGVkIGZvciBzb21lIGRhdGFiYXNlcyAoZS5nLiBvcmFjbGUpCiAgICAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkdldERhdGFiYXNlRnVuY3Rpb24oJ0xpa2VFc2NhcGVTdHJpbmcnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBTdXJ2ZXlBZGQoKQoKdG8gYWRkIGEgbmV3IHN1cnZleQoKICAgIG15ICRTdXJ2ZXlJRCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUFkZCgKICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgICA9PiAnQSBUaXRsZScsCiAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICAgICA9PiAnVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgc3VydmV5JywKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgID0+ICdUaGUgaW50ZXJuYWwgZGVzY3JpcHRpb24gb2YgdGhlIHN1cnZleScsCiAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICAgICA9PiAncXVhbGl0eUBleGFtcGxlLmNvbScsCiAgICAgICAgTm90aWZpY2F0aW9uU3ViamVjdCAgICA9PiAnSGVscCB1cyB3aXRoIHlvdXIgZmVlZGJhY2shJywKICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgICAgID0+ICdEZWFyIGN1c3RvbWVyLi4uJywKICAgICAgICBRdWV1ZXMgICAgICAgICAgICAgICAgID0+IFsyLCA1LCA5XSwgICMgKG9wdGlvbmFsKSBzdXJ2ZXkgaXMgdmFsaWQgZm9yIHRoZXNlIHF1ZXVlcwogICAgICAgIFRpY2tldFR5cGVJRHMgICAgICAgICAgPT4gWzEsIDIsIDNdLCAgIyAob3B0aW9uYWwpIHN1cnZleSBpcyB2YWxpZCBmb3IgdGhlc2UgdGlja2V0IHR5cGVzCiAgICAgICAgU2VydmljZUlEcyAgICAgICAgICAgICA9PiBbMSwgMiwgM10sICAjIChvcHRpb25hbCkgc3VydmV5IGlzIHZhbGlkIGZvciB0aGVzZSBzZXJ2aWNlcwogICAgICAgIEN1c3RvbWVyVXNlckNvbmRpdGlvbnMgPT4gewogICAgICAgICAgICAnVXNlckZpcnN0bmFtZScgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICdOZWdhdGlvbicgPT4gMCwKICAgICAgICAgICAgICAgICAgICAnUmVnRXhwVmFsdWUnID0+ICdeTWknCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICdOZWdhdGlvbicgPT4gMSwKICAgICAgICAgICAgICAgICAgICAnUmVnRXhwVmFsdWUnID0+ICdeS2EnCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgXSwKICAgICAgICB9LCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgU3VydmV5QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKAogICAgICAgIHF3KAogICAgICAgIFVzZXJJRCBUaXRsZSBJbnRyb2R1Y3Rpb24gRGVzY3JpcHRpb24KICAgICAgICBOb3RpZmljYXRpb25TZW5kZXIgTm90aWZpY2F0aW9uU3ViamVjdCBOb3RpZmljYXRpb25Cb2R5CiAgICAgICAgKQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgYnVpbGQgc2VuZCBjb25kaXRpb24gc3RyaW5nCiAgICBteSAkU2VuZENvbmRpdGlvblN0cmcgPSAkU2VsZi0+X0J1aWxkU2VuZENvbmRpdGlvblN0cmcoJVBhcmFtKTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgaW5zZXJ0IGEgbmV3IHN1cnZleQogICAgbXkgJFN0YXR1cyA9ICdOZXcnOwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIElOU0VSVCBJTlRPIHN1cnZleSAodGl0bGUsIGludHJvZHVjdGlvbiwgZGVzY3JpcHRpb24sIG5vdGlmaWNhdGlvbl9zZW5kZXIsCiAgICAgICAgICAgICAgICBub3RpZmljYXRpb25fc3ViamVjdCwgbm90aWZpY2F0aW9uX2JvZHksIHN0YXR1cywgc2VuZF9jb25kaXRpb25zLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LAogICAgICAgICAgICAgICAgY2hhbmdlX3RpbWUsIGNoYW5nZV9ieSApCiAgICAgICAgICAgIFZBTFVFUyAoID8sID8sID8sID8sID8sID8sID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte1RpdGxlfSwgICAgICAgICAgICAgIFwkUGFyYW17SW50cm9kdWN0aW9ufSwgICAgICAgIFwkUGFyYW17RGVzY3JpcHRpb259LAogICAgICAgICAgICBcJFBhcmFte05vdGlmaWNhdGlvblNlbmRlcn0sIFwkUGFyYW17Tm90aWZpY2F0aW9uU3ViamVjdH0sIFwkUGFyYW17Tm90aWZpY2F0aW9uQm9keX0sCiAgICAgICAgICAgIFwkU3RhdHVzLCBcJFNlbmRDb25kaXRpb25TdHJnLCBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGdldCB0aGUgaWQgb2YgdGhlIHN1cnZleQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgIEZST00gc3VydmV5CiAgICAgICAgICAgIFdIRVJFIHRpdGxlID0gPwogICAgICAgICAgICAgICAgQU5EIGludHJvZHVjdGlvbiA9ID8KICAgICAgICAgICAgICAgIEFORCBkZXNjcmlwdGlvbiA9ID8KICAgICAgICAgICAgT1JERVIgQlkgaWQgREVTQycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1RpdGxlfSwgXCRQYXJhbXtJbnRyb2R1Y3Rpb259LCBcJFBhcmFte0Rlc2NyaXB0aW9ufSwgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRTdXJ2ZXlJRDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRTdXJ2ZXlJRCA9ICRSb3dbMF07CiAgICB9CgogICAgIyBzZXQgdGhlIHN1cnZleSBudW1iZXIKICAgIG15ICRTdXJ2ZXlOdW1iZXIgPSAkU3VydmV5SUQgKyAxMDAwMDsKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgc3VydmV5CiAgICAgICAgICAgIFNFVCBzdXJ2ZXludW1iZXIgPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5TnVtYmVyLCBcJFN1cnZleUlELCBdLAogICAgKTsKCiAgICByZXR1cm4gJFN1cnZleUlEIGlmICEkUGFyYW17UXVldWVzfTsKICAgIHJldHVybiAkU3VydmV5SUQgaWYgcmVmICRQYXJhbXtRdWV1ZXN9IG5lICdBUlJBWSc7CgogICAgIyBpbnNlcnQgbmV3IHN1cnZleS1xdWV1ZSByZWxhdGlvbnMKICAgICRTZWxmLT5TdXJ2ZXlRdWV1ZVNldCgKICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgUXVldWVJRHMgPT4gJFBhcmFte1F1ZXVlc30sCiAgICApOwoKICAgIHJldHVybiAkU3VydmV5SUQ7Cn0KCj1oZWFkMiBTdXJ2ZXlHZXQoKQoKdG8gZ2V0IGFsbCBhdHRyaWJ1dGVzIG9mIGEgc3VydmV5CgogICAgbXkgJVN1cnZleSA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUdldCgKICAgICAgICBTdXJ2ZXlJRCA9PiAxMjMsCiAgICApOwoKUmV0dXJuczoKICAgICVTdXJ2ZXkgPSAoCiAgICAgICAgIkNoYW5nZUJ5IiA9PiAxLAogICAgICAgICJDaGFuZ2VUaW1lIiA9PiAiMjAxNy0wOC0zMCAxMToyNjo0MSIsCiAgICAgICAgIkNoYW5nZVVzZXJGaXJzdG5hbWUiID0+ICJKb2huIiwKICAgICAgICAiQ2hhbmdlVXNlckZ1bGxuYW1lIiA9PiAiSm9obiBEb2UiLAogICAgICAgICJDaGFuZ2VVc2VyTGFzdG5hbWUiID0+ICJEb2UiLAogICAgICAgICJDaGFuZ2VVc2VyTG9naW4iID0+ICJqb2huIiwKICAgICAgICAiQ3JlYXRlQnkiID0+IDEsCiAgICAgICAgIkNyZWF0ZVRpbWUiID0+ICIyMDE3LTA4LTMwIDExOjI2OjQxIiwKICAgICAgICAiQ3JlYXRlVXNlckZpcnN0bmFtZSIgPT4gIkpvaG4iLAogICAgICAgICJDcmVhdGVVc2VyRnVsbG5hbWUiID0+ICJKb2huIERvZSIsCiAgICAgICAgIkNyZWF0ZVVzZXJMYXN0bmFtZSIgPT4gIkRvZSIsCiAgICAgICAgIkNyZWF0ZVVzZXJMb2dpbiIgPT4gImpvaG4iLAogICAgICAgICJDdXN0b21lclVzZXJDb25kaXRpb25zIiA9PiB7CiAgICAgICAgICAgICJVc2VyTG9naW4iID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIk5lZ2F0aW9uIiA9PiAwLAogICAgICAgICAgICAgICAgIlJlZ0V4cFZhbHVlIiA9PiAiIgogICAgICAgICAgICB9CiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgICJDdXN0b21lclVzZXJDb25kaXRpb25zSlNPTiIgPT4gIntcIlVzZXJMb2dpblwiOlt7XCJSZWdFeHBWYWx1ZVwiOlwiXCIsXCJOZWdhdGlvblwiOlwiMFwifV19IiwKICAgICAgICAiRGVzY3JpcHRpb24iID0+ICJTZWxlbml1bSBEZXNjcmlwdGlvbmN1c3RvbWVyIiwKICAgICAgICAiSW50cm9kdWN0aW9uIiA9PiAiU2VsZW5pdW0gSW50cm9kdWN0aW9uIiwKICAgICAgICAiTm90aWZpY2F0aW9uQm9keSIgPT4gIkRlYXIgQ3VzdG9tZXIsXHJcblxyXG5UaGFua3MgZm9yIHVzaW5nIG91ciBzZXJ2aWNlLiBIZWxwIHVzIHRvIGltcHJvdmUgdXMgYW5kIG91ciBzZXJ2aWNlcy5cclxuXHJcblBsZWFzZSBnaXZlIHVzIGZlZWRiYWNrIG9uIGhvdyB0byBpbXByb3ZlIG91ciBzZXJ2aWNlczpcclxuXHJcbmh0dHA6Ly9sb2NhbGhvc3Qvb3Rycy1hbHBoYS9wdWJsaWMucGw/QWN0aW9uPVB1YmxpY1N1cnZleTtQdWJsaWNTdXJ2ZXlLZXk9PE9UUlNfUHVibGljU3VydmV5S2V5PlxyXG5cclxuVGhhbmtzIGZvciB5b3VyIGhlbHAhXHJcblxyXG5Zb3VyIE9UUlMtVGVhbSIsCiAgICAgICAgIk5vdGlmaWNhdGlvblNlbmRlciIgPT4gInF1YWxpdHlcQGV4YW1wbGUuY29tIiwKICAgICAgICAiTm90aWZpY2F0aW9uU3ViamVjdCIgPT4gIkhlbHAgdXMgd2l0aCB5b3VyIGZlZWRiYWNrISIsCiAgICAgICAgIlF1ZXVlcyIgPT4gW10sCiAgICAgICAgIlNlbmRDb25kaXRpb25zUmF3IiA9PiAiLS0tXG5DdXN0b21lclVzZXJDb25kaXRpb25zOlxuICBVc2VyTG9naW46XG4gIC0gTmVnYXRpb246IDBcbiAgICBSZWdFeHBWYWx1ZTogJydcbiIsCiAgICAgICAgIlN0YXR1cyIgPT4gIk5ldyIsCiAgICAgICAgIlN1cnZleUlEIiA9PiA0OSwKICAgICAgICAiU3VydmV5TnVtYmVyIiA9PiAxMDA0OSwKICAgICAgICAiVGl0bGUiID0+ICJTdXJ2ZXkgdGl0bGUiLAogICAgKToKCj1jdXQKCnN1YiBTdXJ2ZXlHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1N1cnZleUlEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgU3VydmV5SUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBhbGwgYXR0cmlidXRlcyBvZiBhIHN1cnZleQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBzdXJ2ZXludW1iZXIsIHRpdGxlLCBpbnRyb2R1Y3Rpb24sIGRlc2NyaXB0aW9uLCBub3RpZmljYXRpb25fc2VuZGVyLAogICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uX3N1YmplY3QsIG5vdGlmaWNhdGlvbl9ib2R5LCBzdGF0dXMsIHNlbmRfY29uZGl0aW9ucywgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSwKICAgICAgICAgICAgICAgIGNoYW5nZV90aW1lLCBjaGFuZ2VfYnkKICAgICAgICAgICAgRlJPTSBzdXJ2ZXkKICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17U3VydmV5SUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAlRGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAkRGF0YXtTdXJ2ZXlJRH0gICAgICAgICAgICA9ICRSb3dbMF07CiAgICAgICAgJERhdGF7U3VydmV5TnVtYmVyfSAgICAgICAgPSAkUm93WzFdOwogICAgICAgICREYXRhe1RpdGxlfSAgICAgICAgICAgICAgID0gJFJvd1syXTsKICAgICAgICAkRGF0YXtJbnRyb2R1Y3Rpb259ICAgICAgICA9ICRSb3dbM107CiAgICAgICAgJERhdGF7RGVzY3JpcHRpb259ICAgICAgICAgPSAkUm93WzRdOwogICAgICAgICREYXRhe05vdGlmaWNhdGlvblNlbmRlcn0gID0gJFJvd1s1XTsKICAgICAgICAkRGF0YXtOb3RpZmljYXRpb25TdWJqZWN0fSA9ICRSb3dbNl07CiAgICAgICAgJERhdGF7Tm90aWZpY2F0aW9uQm9keX0gICAgPSAkUm93WzddOwogICAgICAgICREYXRhe1N0YXR1c30gICAgICAgICAgICAgID0gJFJvd1s4XTsKICAgICAgICAkRGF0YXtTZW5kQ29uZGl0aW9uc1Jhd30gICA9ICRSb3dbOV07CiAgICAgICAgJERhdGF7Q3JlYXRlVGltZX0gICAgICAgICAgPSAkUm93WzEwXTsKICAgICAgICAkRGF0YXtDcmVhdGVCeX0gICAgICAgICAgICA9ICRSb3dbMTFdOwogICAgICAgICREYXRhe0NoYW5nZVRpbWV9ICAgICAgICAgID0gJFJvd1sxMl07CiAgICAgICAgJERhdGF7Q2hhbmdlQnl9ICAgICAgICAgICAgPSAkUm93WzEzXTsKICAgIH0KCiAgICAjIEdldCBTZW5kQ29uZGl0aW9uIGFzIGhhc2guCiAgICBteSAkU2VuZENvbmRpdGlvbnMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKCBEYXRhID0+ICREYXRhe1NlbmRDb25kaXRpb25zUmF3fSApIHx8IHt9OwoKICAgICMgU2V0IGRhdGEgZmllbGRzIGZvciBzZW5kIGNvbmRpdGlvbnMuCiAgICBJVEVNOgogICAgZm9yIG15ICRJdGVtIChxdyhUaWNrZXRUeXBlSURzIFNlcnZpY2VJRHMgQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucykpIHsKCiAgICAgICAgbmV4dCBJVEVNCiAgICAgICAgICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJFNlbmRDb25kaXRpb25zLT57JEl0ZW19ICkgJiYgIUlzSGFzaFJlZldpdGhEYXRhKCAkU2VuZENvbmRpdGlvbnMtPnskSXRlbX0gKSApOwoKICAgICAgICAkRGF0YXskSXRlbX0gPSAkU2VuZENvbmRpdGlvbnMtPnskSXRlbX07CiAgICB9CgogICAgaWYgKCAkRGF0YXtDdXN0b21lclVzZXJDb25kaXRpb25zfSApIHsKICAgICAgICAkRGF0YXtDdXN0b21lclVzZXJDb25kaXRpb25zSlNPTn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5FbmNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gJERhdGF7Q3VzdG9tZXJVc2VyQ29uZGl0aW9uc30sCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICElRGF0YSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggU3VydmV5SUQgJFBhcmFte1N1cnZleUlEfSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIHNldCBkZWZhdWx0IHZhbHVlcwogICAgJERhdGF7Tm90aWZpY2F0aW9uU2VuZGVyfSAgfHw9ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpOb3RpZmljYXRpb25TZW5kZXInKTsKICAgICREYXRhe05vdGlmaWNhdGlvblN1YmplY3R9IHx8PSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Tm90aWZpY2F0aW9uU3ViamVjdCcpOwogICAgJERhdGF7Tm90aWZpY2F0aW9uQm9keX0gICAgfHw9ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpOb3RpZmljYXRpb25Cb2R5Jyk7CgogICAgIyBnZXQgcXVldWVzCiAgICAkRGF0YXtRdWV1ZXN9ID0gJFNlbGYtPlN1cnZleVF1ZXVlR2V0KAogICAgICAgIFN1cnZleUlEID0+ICRQYXJhbXtTdXJ2ZXlJRH0sCiAgICApOwoKICAgICMgYWRkZWQgQ3JlYXRlQnkKICAgIGlmICggISRQYXJhbXtQdWJsaWN9ICkgewoKICAgICAgICAjIGdldCB1c2VyIG9iamVjdAogICAgICAgIG15ICRVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKCiAgICAgICAgbXkgJUNyZWF0ZVVzZXJJbmZvID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgICAgICBVc2VySUQgPT4gJERhdGF7Q3JlYXRlQnl9LAogICAgICAgICAgICBDYWNoZWQgPT4gMSwKICAgICAgICApOwogICAgICAgICREYXRhe0NyZWF0ZVVzZXJMb2dpbn0gICAgID0gJENyZWF0ZVVzZXJJbmZve1VzZXJMb2dpbn07CiAgICAgICAgJERhdGF7Q3JlYXRlVXNlckZpcnN0bmFtZX0gPSAkQ3JlYXRlVXNlckluZm97VXNlckZpcnN0bmFtZX07CiAgICAgICAgJERhdGF7Q3JlYXRlVXNlckxhc3RuYW1lfSAgPSAkQ3JlYXRlVXNlckluZm97VXNlckxhc3RuYW1lfTsKICAgICAgICAkRGF0YXtDcmVhdGVVc2VyRnVsbG5hbWV9ICA9ICRDcmVhdGVVc2VySW5mb3tVc2VyRnVsbG5hbWV9OwoKICAgICAgICAjIGFkZGVkIENoYW5nZUJ5CiAgICAgICAgbXkgJUNoYW5nZVVzZXJJbmZvID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgICAgICBVc2VySUQgPT4gJERhdGF7Q2hhbmdlQnl9LAogICAgICAgICAgICBDYWNoZWQgPT4gMSwKICAgICAgICApOwogICAgICAgICREYXRhe0NoYW5nZVVzZXJMb2dpbn0gICAgID0gJENoYW5nZVVzZXJJbmZve1VzZXJMb2dpbn07CiAgICAgICAgJERhdGF7Q2hhbmdlVXNlckZpcnN0bmFtZX0gPSAkQ2hhbmdlVXNlckluZm97VXNlckZpcnN0bmFtZX07CiAgICAgICAgJERhdGF7Q2hhbmdlVXNlckxhc3RuYW1lfSAgPSAkQ2hhbmdlVXNlckluZm97VXNlckxhc3RuYW1lfTsKICAgICAgICAkRGF0YXtDaGFuZ2VVc2VyRnVsbG5hbWV9ICA9ICRDaGFuZ2VVc2VySW5mb3tVc2VyRnVsbG5hbWV9OwogICAgfQoKICAgIHJldHVybiAlRGF0YTsKfQoKPWhlYWQyIFN1cnZleVVwZGF0ZSgpCgp0byB1cGRhdGUgYW4gZXhpc3Rpbmcgc3VydmV5CgogICAgJFN1cnZleU9iamVjdC0+U3VydmV5VXBkYXRlKAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gMSwKICAgICAgICBTdXJ2ZXlJRCAgICAgICAgICAgID0+IDQsCiAgICAgICAgVGl0bGUgICAgICAgICAgICAgICA9PiAnQSBUaXRsZScsCiAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAnVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgc3VydmV5JywKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgID0+ICdUaGUgaW50ZXJuYWwgZGVzY3JpcHRpb24gb2YgdGhlIHN1cnZleScsCiAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAncXVhbGl0eUBleGFtcGxlLmNvbScsCiAgICAgICAgTm90aWZpY2F0aW9uU3ViamVjdCA9PiAnSGVscCB1cyB3aXRoIHlvdXIgZmVlZGJhY2shJywKICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdEZWFyIGN1c3RvbWVyLi4uJywKICAgICAgICBRdWV1ZXMgICAgICAgICAgICAgID0+IFsyLCA1LCA5XSwgICMgKG9wdGlvbmFsKSBzdXJ2ZXkgaXMgdmFsaWQgZm9yIHRoZXNlIHF1ZXVlcwogICAgICAgIFRpY2tldFR5cGVJRHMgICAgICAgPT4gWzEsIDIsIDNdLCAgIyAob3B0aW9uYWwpIHN1cnZleSBpcyB2YWxpZCBmb3IgdGhlc2UgdGlja2V0IHR5cGVzCiAgICAgICAgU2VydmljZUlEcyAgICAgICAgICA9PiBbMSwgMiwgM10sICAjIChvcHRpb25hbCkgc3VydmV5IGlzIHZhbGlkIGZvciB0aGVzZSBzZXJ2aWNlcwogICAgICAgIEN1c3RvbWVyVXNlckNvbmRpdGlvbnMgPT4gewogICAgICAgICAgICAnVXNlckZpcnN0bmFtZScgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICdOZWdhdGlvbicgPT4gMSwKICAgICAgICAgICAgICAgICAgICAnUmVnRXhwVmFsdWUnID0+ICdeTWknCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICdOZWdhdGlvbicgPT4gMSwKICAgICAgICAgICAgICAgICAgICAnUmVnRXhwVmFsdWUnID0+ICdeS2EnCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgXSwKICAgICAgICB9LCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgU3VydmV5VXBkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKAogICAgICAgIHF3KAogICAgICAgIFVzZXJJRCBTdXJ2ZXlJRCBUaXRsZSBJbnRyb2R1Y3Rpb24gRGVzY3JpcHRpb24KICAgICAgICBOb3RpZmljYXRpb25TZW5kZXIgTm90aWZpY2F0aW9uU3ViamVjdCBOb3RpZmljYXRpb25Cb2R5CiAgICAgICAgKQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgcXVldWVzCiAgICBpZiAoICRQYXJhbXtRdWV1ZXN9ICYmIHJlZiAkUGFyYW17UXVldWVzfSBuZSAnQVJSQVknICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnUXVldWVzIG11c3QgYmUgYW4gYXJyYXkgcmVmZXJlbmNlLicsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgdmFsdWUKICAgICRQYXJhbXtRdWV1ZXN9IHx8PSBbXTsKCiAgICAjIGJ1aWxkIHNlbmQgY29uZGl0aW9uIHN0cmluZwogICAgbXkgJFNlbmRDb25kaXRpb25TdHJnID0gJFNlbGYtPl9CdWlsZFNlbmRDb25kaXRpb25TdHJnKCVQYXJhbSk7CgogICAgIyB1cGRhdGUgdGhlIHN1cnZleQogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgVVBEQVRFIHN1cnZleQogICAgICAgICAgICBTRVQgdGl0bGUgPSA/LCBpbnRyb2R1Y3Rpb24gPSA/LCBkZXNjcmlwdGlvbiA9ID8sIG5vdGlmaWNhdGlvbl9zZW5kZXIgPSA/LAogICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uX3N1YmplY3QgPSA/LCBub3RpZmljYXRpb25fYm9keSA9ID8sIHNlbmRfY29uZGl0aW9ucyA9ID8sIGNoYW5nZV90aW1lID0gY3VycmVudF90aW1lc3RhbXAsCiAgICAgICAgICAgICAgICBjaGFuZ2VfYnkgPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17VGl0bGV9LCAgICAgICAgICAgICAgXCRQYXJhbXtJbnRyb2R1Y3Rpb259LCAgICAgICAgXCRQYXJhbXtEZXNjcmlwdGlvbn0sCiAgICAgICAgICAgIFwkUGFyYW17Tm90aWZpY2F0aW9uU2VuZGVyfSwgXCRQYXJhbXtOb3RpZmljYXRpb25TdWJqZWN0fSwgXCRQYXJhbXtOb3RpZmljYXRpb25Cb2R5fSwKICAgICAgICAgICAgXCRTZW5kQ29uZGl0aW9uU3RyZywgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1N1cnZleUlEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGluc2VydCBuZXcgc3VydmV5LXF1ZXVlIHJlbGF0aW9ucwogICAgcmV0dXJuICRTZWxmLT5TdXJ2ZXlRdWV1ZVNldCgKICAgICAgICBTdXJ2ZXlJRCA9PiAkUGFyYW17U3VydmV5SUR9LAogICAgICAgIFF1ZXVlSURzID0+ICRQYXJhbXtRdWV1ZXN9LAogICAgKTsKfQoKPWhlYWQyIFN1cnZleUxpc3QoKQoKdG8gZ2V0IGEgYXJyYXkgbGlzdCBvZiBhbGwgc3VydmV5IGl0ZW1zCgogICAgbXkgJVN1cnZleUxpc3QgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlMaXN0KCk7CgpSZXN1bHQ6CiAgICAlU3VydmV5TGlzdCA9ICgKICAgICAgICA0NyA9PiAiU3VydmV5IHRpdGxlIiwKICAgICAgICAuLi4KICAgICk7Cgo9Y3V0CgpzdWIgU3VydmV5TGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgc3VydmV5IGxpc3QKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgdGl0bGUKICAgICAgICAgICAgRlJPTSBzdXJ2ZXkKICAgICAgICAgICAgT1JERVIgQlkgaWQgQVNDJywKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0cwogICAgbXkgJVN1cnZleXM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkU3VydmV5c3sgJFJvd1swXSB9ID0gJFJvd1sxXTsKICAgIH0KCiAgICByZXR1cm4gJVN1cnZleXM7Cn0KCj1oZWFkMiBTdXJ2ZXlTZWFyY2goKQoKc2VhcmNoIGluIHN1cnZleXMKCiAgICBteSBASURzID0gJFN1cnZleU9iamVjdC0+U3VydmV5U2VhcmNoKAoKICAgICAgICBOdW1iZXIgICAgICAgICAgICAgID0+ICcxMzQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgVGl0bGUgICAgICAgICAgICAgICA9PiAnc29tZSB0aXRsZScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEludHJvZHVjdGlvbiAgICAgICAgPT4gJ3NvbWUgaW50cm9kdWN0aW9uJywgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgID0+ICdzb21lIGRlc2NyaXB0aW9uJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAndXNlckBkb21haW4nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJ3NvbWUgbm90aWZpY2F0aW9uIHN1YmplY3QnLCAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdzb21lIG5vdGlmaWNhdGlvbiBib2R5JywgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgICMgaXMgc2VhcmNoaW5nIGluIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwKICAgICAgICAjIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHkKICAgICAgICBXaGF0ICAgPT4gJ3NvbWUgdGV4dCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgIFN0YXR1cyA9PiAnc29tZSBzdGF0dXMnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0wMS0wMSAxMjowMDowMCcsCiAgICAgICAgQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0wMS0zMSAxMjowMDowMCcsCiAgICAgICAgQ3JlYXRlQnkgICAgICAgICAgICA9PiAnMTIzJywgICAgICAgICAgICAjVXNlcklECiAgICAgICAgQ2hhbmdlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0wMS0wMSAxMjowMDowMCcsCiAgICAgICAgQ2hhbmdlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0zMSAxMjowMDowMCcsCiAgICAgICAgQ2hhbmdlQnkgICAgICAgICAgICA9PiAnMTIzJywgICAgICAgICAgICAjVXNlcklECgogICAgICAgIE9yZGVyQnkgPT4gWyAnU3VydmV5SUQnLCAnVGl0bGUnIF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICMgZGVmYXVsdDogWyAnU3VydmV5SUQnIF0sCiAgICAgICAgIyAoKVN1cnZleUlELCBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLAogICAgICAgICMgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0LCBOb3RpZmljYXRpb25Cb2R5LAogICAgICAgICMgU3RhdHVzLCBDcmVhdGVUaW1lLCBDcmVhdGVCeSwgQ2hhbmdlVGltZSwgQ2hhbmdlQnkpCgogICAgICAgICMgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmb3IgT3JkZXJCeToKICAgICAgICAjIFRoZSBPcmRlckJ5RGlyZWN0aW9uIGNhbiBiZSBzcGVjaWZpZWQgZm9yIGVhY2ggT3JkZXJCeSBhdHRyaWJ1dGUuCiAgICAgICAgIyBUaGUgcGFpcmluZyBpcyBtYWRlIGJ5IHRoZSBhcnJheSBpbmRleGVzLgoKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsgJ0Rvd24nLCAnVXAnIF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICAjIGRlZmF1bHQ6IFsgJ0Rvd24nIF0KICAgICAgICAjIChEb3duIHwgVXApCgogICAgICAgIExpbWl0ICAgICA9PiAxNTAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBTdXJ2ZXlTZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHZlcmlmeSB0aGF0IGFsbCBwYXNzZWQgYXJyYXkgcGFyYW1ldGVycyBjb250YWluIGFuIGFycmF5IHJlZmVyZW5jZQogICAgQVJHVU1FTlQ6CiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhPcmRlckJ5IE9yZGVyQnlEaXJlY3Rpb24pKSB7CgogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRQYXJhbXskQXJndW1lbnR9IHx8PSBbXTsKCiAgICAgICAgICAgIG5leHQgQVJHVU1FTlQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoIHJlZiAkUGFyYW17JEFyZ3VtZW50fSBuZSAnQVJSQVknICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiJEFyZ3VtZW50IG11c3QgYmUgYW4gYXJyYXkgcmVmZXJlbmNlISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVmaW5lIG9yZGVyIHRhYmxlCiAgICBteSAlT3JkZXJCeVRhYmxlID0gKAoKICAgICAgICAjIFN1cnZleSBpdGVtIGF0dHJpYnV0ZXMKICAgICAgICBTdXJ2ZXlJRCAgICAgICAgICAgID0+ICdzLmlkJywKICAgICAgICBOdW1iZXIgICAgICAgICAgICAgID0+ICdzLnN1cnZleW51bWJlcicsCiAgICAgICAgVGl0bGUgICAgICAgICAgICAgICA9PiAncy50aXRsZScsCiAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAncy5pbnRyb2R1Y3Rpb24nLAogICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJ3MuZGVzY3JpcHRpb24nLAogICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciAgPT4gJ3Mubm90aWZpY2F0aW9uX3NlbmRlcicsCiAgICAgICAgTm90aWZpY2F0aW9uU3ViamVjdCA9PiAncy5ub3RpZmljYXRpb25fc3ViamVjdCcsCiAgICAgICAgTm90aWZpY2F0aW9uQm9keSAgICA9PiAncy5ub3RpZmljYXRpb25fYm9keScsCiAgICAgICAgU3RhdHVzICAgICAgICAgICAgICA9PiAncy5zdGF0dXMnLAogICAgICAgIENyZWF0ZVRpbWUgICAgICAgICAgPT4gJ3MuY3JlYXRlX3RpbWUnLAogICAgICAgIENyZWF0ZUJ5ICAgICAgICAgICAgPT4gJ3MuY3JlYXRlX2J5JywKICAgICAgICBDaGFuZ2VUaW1lICAgICAgICAgID0+ICdzLmNoYW5nZV90aW1lJywKICAgICAgICBDaGFuZ2VCeSAgICAgICAgICAgID0+ICdzLmNoYW5nZV9ieScsCiAgICApOwoKICAgICMgY2hlY2sgaWYgT3JkZXJCeSBjb250YWlucyBvbmx5IHVuaXF1ZSB2YWxpZCB2YWx1ZXMKICAgIG15ICVPcmRlckJ5U2VlbjsKICAgIGZvciBteSAkT3JkZXJCeSAoIEB7ICRQYXJhbXtPcmRlckJ5fSB9ICkgewoKICAgICAgICBpZiAoICEkT3JkZXJCeSB8fCAhJE9yZGVyQnlUYWJsZXskT3JkZXJCeX0gfHwgJE9yZGVyQnlTZWVueyRPcmRlckJ5fSApIHsKCiAgICAgICAgICAgICMgZm91bmQgYW4gZXJyb3IKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk9yZGVyQnkgY29udGFpbnMgaW52YWxpZCB2YWx1ZSAnJE9yZGVyQnknICIKICAgICAgICAgICAgICAgICAgICAuICdvciB0aGUgdmFsdWUgaXMgdXNlZCBtb3JlIHRoYW4gb25jZSEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyByZW1lbWJlciB0aGUgdmFsdWUgdG8gY2hlY2sgaWYgaXQgYXBwZWFycyBtb3JlIHRoYW4gb25jZQogICAgICAgICRPcmRlckJ5U2VlbnskT3JkZXJCeX0gPSAxOwoKICAgIH0KCiAgICAjIGNoZWNrIGlmIE9yZGVyQnlEaXJlY3Rpb24gYXJyYXkgY29udGFpbnMgb25seSAnVXAnIG9yICdEb3duJwogICAgRElSRUNUSU9OOgogICAgZm9yIG15ICREaXJlY3Rpb24gKCBAeyAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0gfSApIHsKCiAgICAgICAgIyBvbmx5ICdVcCcgb3IgJ0Rvd24nIGFsbG93ZWQKICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAkRGlyZWN0aW9uIGVxICdVcCc7CiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgJERpcmVjdGlvbiBlcSAnRG93bic7CgogICAgICAgICMgZm91bmQgYW4gZXJyb3IKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk9yZGVyQnlEaXJlY3Rpb24gY2FuIG9ubHkgY29udGFpbiAnVXAnIG9yICdEb3duJyEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGFzc2VtYmxlIHRoZSBPUkRFUiBCWSBjbGF1c2UKICAgIG15IEBTUUxPcmRlckJ5OwogICAgbXkgQE9yZGVyQnlGaWVsZHM7CiAgICBteSAkQ291bnQgPSAwOwogICAgZm9yIG15ICRPcmRlckJ5ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSB7CgogICAgICAgICMgc2V0IHRoZSBkZWZhdWx0IG9yZGVyIGRpcmVjdGlvbgogICAgICAgIG15ICREaXJlY3Rpb24gPSAnREVTQyc7CgogICAgICAgICMgYWRkIHRoZSBnaXZlbiBvcmRlciBkaXJlY3Rpb24KICAgICAgICBpZiAoICRQYXJhbXtPcmRlckJ5RGlyZWN0aW9ufS0+WyRDb3VudF0gKSB7CiAgICAgICAgICAgIGlmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnVXAnICkgewogICAgICAgICAgICAgICAgJERpcmVjdGlvbiA9ICdBU0MnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAkRGlyZWN0aW9uID0gJ0RFU0MnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBTUUwKICAgICAgICBwdXNoIEBTUUxPcmRlckJ5LCAgICAiJE9yZGVyQnlUYWJsZXskT3JkZXJCeX0gJERpcmVjdGlvbiI7CiAgICAgICAgcHVzaCBAT3JkZXJCeUZpZWxkcywgJE9yZGVyQnlUYWJsZXskT3JkZXJCeX07CgogICAgICAgICRDb3VudCsrOwogICAgfQoKICAgICMgaWYgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSB0aGF0IHRoZSBvcmRlcmluZyBpcyBub3QgZGV0ZXJtaW5lZAogICAgIyB3ZSBhZGQgYW4gZGVzY2VuZGluZyBvcmRlcmluZyBieSBpZAogICAgaWYgKCAhZ3JlcCB7ICRfIGVxICdTdXJ2ZXlJRCcgfSAoIEB7ICRQYXJhbXtPcmRlckJ5fSB9ICkgKSB7CiAgICAgICAgcHVzaCBAU1FMT3JkZXJCeSwgIiRPcmRlckJ5VGFibGV7U3VydmV5SUR9IERFU0MiOwogICAgfQoKICAgICMgU1FMCiAgICBteSAkU1FMID0gJ1NFTEVDVCBzLmlkICc7CgogICAgIyBleHRlbmRlZCBTUUwKICAgIG15ICRFeHQgPSAnJzsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZnVsbC10ZXh0IHNlYXJjaAogICAgaWYgKCAkUGFyYW17V2hhdH0gJiYgJFBhcmFte1doYXR9IG5lICcqJyApIHsKCiAgICAgICAgIyBkZWZpbmUgdGhlIHNlYXJjaCBmaWVsZHMgZm9yIGZ1bGwtdGV4dCBzZWFyY2gKICAgICAgICBteSBAU2VhcmNoRmllbGRzID0gKAogICAgICAgICAgICAncy5zdXJ2ZXludW1iZXInLAogICAgICAgICAgICAncy50aXRsZScsCiAgICAgICAgICAgICdzLmludHJvZHVjdGlvbicsCiAgICAgICAgICAgICdzLmRlc2NyaXB0aW9uJywKICAgICAgICAgICAgJ3Mubm90aWZpY2F0aW9uX3NlbmRlcicsCiAgICAgICAgICAgICdzLm5vdGlmaWNhdGlvbl9zdWJqZWN0JywKICAgICAgICAgICAgJ3Mubm90aWZpY2F0aW9uX2JvZHknLAogICAgICAgICAgICAncy5zdGF0dXMnLAogICAgICAgICk7CgogICAgICAgICMgYWRkIHRoZSBTUUwgZm9yIHRoZSBmdWxsLXRleHQgc2VhcmNoCiAgICAgICAgJEV4dCAuPSAkREJPYmplY3QtPlF1ZXJ5Q29uZGl0aW9uKAogICAgICAgICAgICBLZXkgICAgICAgICAgPT4gXEBTZWFyY2hGaWVsZHMsCiAgICAgICAgICAgIFZhbHVlICAgICAgICA9PiAkUGFyYW17V2hhdH0sCiAgICAgICAgICAgIFNlYXJjaFByZWZpeCA9PiAnKicsCiAgICAgICAgICAgIFNlYXJjaFN1ZmZpeCA9PiAnKicsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgdGhlIG51bWJlcgogICAgaWYgKCAkUGFyYW17TnVtYmVyfSApIHsKICAgICAgICAkUGFyYW17TnVtYmVyfSA9fiBzL1wqLyUvZzsKICAgICAgICAkUGFyYW17TnVtYmVyfSA9fiBzLyUlLyUvZzsKICAgICAgICAkUGFyYW17TnVtYmVyfSA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtOdW1iZXJ9LCAnTGlrZScgKTsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAiIExPV0VSKHMubnVtYmVyKSBMSUtFIExPV0VSKCciIC4gJFBhcmFte051bWJlcn0gLiAiJykgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHRoZSB0aXRsZQogICAgaWYgKCAkUGFyYW17VGl0bGV9ICkgewogICAgICAgICRQYXJhbXtUaXRsZX0gPSAiXCUkUGFyYW17VGl0bGV9XCUiOwogICAgICAgICRQYXJhbXtUaXRsZX0gPX4gcy9cKi8lL2c7CiAgICAgICAgJFBhcmFte1RpdGxlfSA9fiBzLyUlLyUvZzsKICAgICAgICAkUGFyYW17VGl0bGV9ID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFte1RpdGxlfSwgJ0xpa2UnICk7CiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gIiBMT1dFUihzLnRpdGxlKSBMSUtFIExPV0VSKCciIC4gJFBhcmFte1RpdGxlfSAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgdGhlIGludHJvZHVjdGlvbgogICAgaWYgKCAkUGFyYW17SW50cm9kdWN0aW9ufSApIHsKICAgICAgICAkUGFyYW17SW50cm9kdWN0aW9ufSA9ICJcJSRQYXJhbXtJbnRyb2R1Y3Rpb259XCUiOwogICAgICAgICRQYXJhbXtJbnRyb2R1Y3Rpb259ID1+IHMvXCovJS9nOwogICAgICAgICRQYXJhbXtJbnRyb2R1Y3Rpb259ID1+IHMvJSUvJS9nOwogICAgICAgICRQYXJhbXtJbnRyb2R1Y3Rpb259ID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFte0ludHJvZHVjdGlvbn0sICdMaWtlJyApOwogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0CiAgICAgICAgICAgIC49ICIgTE9XRVIocy5pbnRyb2R1Y3Rpb24pIExJS0UgTE9XRVIoJyIKICAgICAgICAgICAgLiAkUGFyYW17SW50cm9kdWN0aW9ufQogICAgICAgICAgICAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgdGhlIGRlc2NyaXB0aW9uCiAgICBpZiAoICRQYXJhbXtEZXNjcmlwdGlvbn0gKSB7CiAgICAgICAgJFBhcmFte0Rlc2NyaXB0aW9ufSA9ICJcJSRQYXJhbXtEZXNjcmlwdGlvbn1cJSI7CiAgICAgICAgJFBhcmFte0Rlc2NyaXB0aW9ufSA9fiBzL1wqLyUvZzsKICAgICAgICAkUGFyYW17RGVzY3JpcHRpb259ID1+IHMvJSUvJS9nOwogICAgICAgICRQYXJhbXtEZXNjcmlwdGlvbn0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17RGVzY3JpcHRpb259LCAnTGlrZScgKTsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dAogICAgICAgICAgICAuPSAiIExPV0VSKHMuZGVzY3JpcHRpb24pIExJS0UgTE9XRVIoJyIKICAgICAgICAgICAgLiAkUGFyYW17RGVzY3JpcHRpb259CiAgICAgICAgICAgIC4gIicpICRTZWxmLT57TGlrZUVzY2FwZVN0cmluZ30iOwogICAgfQoKICAgICMgc2VhcmNoIGZvciB0aGUgbm90aWZpY2F0aW9uIHNlbmRlcgogICAgaWYgKCAkUGFyYW17Tm90aWZpY2F0aW9uU2VuZGVyfSApIHsKICAgICAgICAkUGFyYW17Tm90aWZpY2F0aW9uU2VuZGVyfSA9ICJcJSRQYXJhbXtOb3RpZmljYXRpb25TZW5kZXJ9XCUiOwogICAgICAgICRQYXJhbXtOb3RpZmljYXRpb25TZW5kZXJ9ID1+IHMvXCovJS9nOwogICAgICAgICRQYXJhbXtOb3RpZmljYXRpb25TZW5kZXJ9ID1+IHMvJSUvJS9nOwogICAgICAgICRQYXJhbXtOb3RpZmljYXRpb25TZW5kZXJ9ID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFte05vdGlmaWNhdGlvblNlbmRlcn0sICdMaWtlJyApOwogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0CiAgICAgICAgICAgIC49ICIgTE9XRVIocy5ub3RpZmljYXRpb25fc2VuZGVyKSBMSUtFIExPV0VSKCciCiAgICAgICAgICAgIC4gJFBhcmFte05vdGlmaWNhdGlvblNlbmRlcn0KICAgICAgICAgICAgLiAiJykgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHRoZSBub3RpZmljYXRpb24gc3ViamVjdAogICAgaWYgKCAkUGFyYW17Tm90aWZpY2F0aW9uU3ViamVjdH0gKSB7CiAgICAgICAgJFBhcmFte05vdGlmaWNhdGlvblN1YmplY3R9ID0gIlwlJFBhcmFte05vdGlmaWNhdGlvblN1YmplY3R9XCUiOwogICAgICAgICRQYXJhbXtOb3RpZmljYXRpb25TdWJqZWN0fSA9fiBzL1wqLyUvZzsKICAgICAgICAkUGFyYW17Tm90aWZpY2F0aW9uU3ViamVjdH0gPX4gcy8lJS8lL2c7CiAgICAgICAgJFBhcmFte05vdGlmaWNhdGlvblN1YmplY3R9ID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFte05vdGlmaWNhdGlvblN1YmplY3R9LCAnTGlrZScgKTsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dAogICAgICAgICAgICAuPSAiIExPV0VSKHMubm90aWZpY2F0aW9uX3N1YmplY3QpIExJS0UgTE9XRVIoJyIKICAgICAgICAgICAgLiAkUGFyYW17Tm90aWZpY2F0aW9uU3ViamVjdH0KICAgICAgICAgICAgLiAiJykgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHRoZSBub3RpZmljYXRpb24gYm9keQogICAgaWYgKCAkUGFyYW17Tm90aWZpY2F0aW9uQm9keX0gKSB7CiAgICAgICAgJFBhcmFte05vdGlmaWNhdGlvbkJvZHl9ID0gIlwlJFBhcmFte05vdGlmaWNhdGlvbkJvZHl9XCUiOwogICAgICAgICRQYXJhbXtOb3RpZmljYXRpb25Cb2R5fSA9fiBzL1wqLyUvZzsKICAgICAgICAkUGFyYW17Tm90aWZpY2F0aW9uQm9keX0gPX4gcy8lJS8lL2c7CiAgICAgICAgJFBhcmFte05vdGlmaWNhdGlvbkJvZHl9ID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFte05vdGlmaWNhdGlvbkJvZHl9LCAnTGlrZScgKTsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dAogICAgICAgICAgICAuPSAiIExPV0VSKHMubm90aWZpY2F0aW9uX2JvZHkpIExJS0UgTE9XRVIoJyIKICAgICAgICAgICAgLiAkUGFyYW17Tm90aWZpY2F0aW9uQm9keX0KICAgICAgICAgICAgLiAiJykgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHRoZSBzdGF0dXMKICAgIGlmICggJFBhcmFte1N0YXR1c30gKSB7CiAgICAgICAgJFBhcmFte1N0YXR1c30gPSAiXCUkUGFyYW17U3RhdHVzfVwlIjsKICAgICAgICAkUGFyYW17U3RhdHVzfSA9fiBzL1wqLyUvZzsKICAgICAgICAkUGFyYW17U3RhdHVzfSA9fiBzLyUlLyUvZzsKICAgICAgICAkUGFyYW17U3RhdHVzfSA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtTdGF0dXN9LCAnTGlrZScgKTsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAiIExPV0VSKHMuc3RhdHVzKSBMSUtFIExPV0VSKCciIC4gJFBhcmFte1N0YXR1c30gLiAiJykgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIG11bHRpcGxlIHN0YXR1cwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtTdGF0ZXN9ICkgKSB7CgogICAgICAgIG15ICRTdGF0ZXMgPSBqb2luICcsICcsIG1hcCB7cXEoJyRfJyl9IEB7ICRQYXJhbXtTdGF0ZXN9IH07CgogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICIgcy5zdGF0dXMgSU4gKCRTdGF0ZXMpICI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHRoZSBjcmVhdGUgYnkKICAgIGlmICggJFBhcmFte0NyZWF0ZUJ5fSApIHsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAiIHMuY3JlYXRlX2J5ID0gIiAuICRQYXJhbXtDcmVhdGVCeX07CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHRoZSBjaGFuZ2UgYnkKICAgIGlmICggJFBhcmFte0NoYW5nZUJ5fSApIHsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAiIHMuY2hhbmdlX2J5ID0gIiAuICRQYXJhbXtDaGFuZ2VCeX07CiAgICB9CgogICAgIyBzZXQgdGltZSBwYXJhbXMKICAgIG15ICVUaW1lUGFyYW1zID0gKAoKICAgICAgICAjIHRpbWVzIGluIGNoYW5nZV9pdGVtCiAgICAgICAgQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAncy5jcmVhdGVfdGltZSA+PScsCiAgICAgICAgQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAncy5jcmVhdGVfdGltZSA8PScsCiAgICAgICAgQ2hhbmdlVGltZU5ld2VyRGF0ZSA9PiAncy5jaGFuZ2VfdGltZSA+PScsCiAgICAgICAgQ2hhbmdlVGltZU9sZGVyRGF0ZSA9PiAncy5jaGFuZ2VfdGltZSA8PScsCiAgICApOwoKICAgICMgY2hlY2sgYW5kIGFkZCB0aW1lIHBhcmFtcyB0byBXSEVSRQogICAgVElNRVBBUkFNOgogICAgZm9yIG15ICRUaW1lUGFyYW0gKCBzb3J0IGtleXMgJVRpbWVQYXJhbXMgKSB7CgogICAgICAgIG5leHQgVElNRVBBUkFNIGlmICEkUGFyYW17JFRpbWVQYXJhbX07CgogICAgICAgICMgY2hlY2sgZm9ybWF0CiAgICAgICAgaWYgKCAkUGFyYW17JFRpbWVQYXJhbX0gIX4gL1xkXGRcZFxkLShcZFxkfFxkKS0oXGRcZHxcZCkgKFxkXGR8XGQpOihcZFxkfFxkKTooXGRcZHxcZCkvICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIHBhcmFtZXRlciAkVGltZVBhcmFtIGhhcyBhbiBpbnZhbGlkIGRhdGUgZm9ybWF0ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkUGFyYW17JFRpbWVQYXJhbX0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17JFRpbWVQYXJhbX0gKTsKCiAgICAgICAgIyBhZGQgdGltZSBwYXJhbWV0ZXIgdG8gV0hFUkUKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EICc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gIiRUaW1lUGFyYW1zeyRUaW1lUGFyYW19ICckUGFyYW17JFRpbWVQYXJhbX0nIjsKICAgIH0KCiAgICAjIGFkZCBXSEVSRSBzdGF0ZW1lbnQKICAgIGlmICgkRXh0KSB7CiAgICAgICAgJEV4dCA9ICcgV0hFUkUgJyAuICRFeHQ7CiAgICB9CgogICAgIyBhZGQgdGhlIE9SREVSIEJZIGNsYXVzZQogICAgaWYgKEBTUUxPcmRlckJ5KSB7CiAgICAgICAgJEV4dCAuPSAnT1JERVIgQlkgJzsKICAgICAgICAkRXh0IC49IGpvaW4gJywgJywgQFNRTE9yZGVyQnk7CiAgICAgICAgJEV4dCAuPSAnICc7CiAgICAgICAgaWYgKEBPcmRlckJ5RmllbGRzKSB7CiAgICAgICAgICAgICRTUUwgLj0gJywgJyAuIGpvaW4gJywgJywgQE9yZGVyQnlGaWVsZHM7CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIGV4dGVuZGVkIFNRTAogICAgJFNRTCAuPSAnIEZST00gc3VydmV5IHMgJzsKICAgICRTUUwgLj0gJEV4dDsKCiAgICAjIGFzayBkYXRhYmFzZQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBMaW1pdCA9PiAkUGFyYW17TGltaXR9LAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBATGlzdCwgJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gQExpc3Q7Cn0KCj1oZWFkMiBTdXJ2ZXlTdGF0dXNTZXQoKQoKdG8gc2V0IGEgbmV3IHN1cnZleSBzdGF0dXMgKFZhbGlkLCBJbnZhbGlkLCBNYXN0ZXIpCgogICAgJFN0YXR1c1NldCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVN0YXR1c1NldCgKICAgICAgICBTdXJ2ZXlJRCAgPT4gMTIzLAogICAgICAgIE5ld1N0YXR1cyA9PiAnTWFzdGVyJwogICAgKTsKCj1jdXQKCnN1YiBTdXJ2ZXlTdGF0dXNTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoU3VydmV5SUQgTmV3U3RhdHVzKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBjdXJyZW50IHN0YXR1cwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIHN0YXR1cwogICAgICAgICAgICBGUk9NIHN1cnZleQogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtTdXJ2ZXlJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRTdGF0dXMgPSAnJzsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRTdGF0dXMgPSAkUm93WzBdOwogICAgfQoKICAgICMgdGhlIGN1cnJlbnQgc3RhdHVzCiAgICBpZiAoICRTdGF0dXMgZXEgJ05ldycgfHwgJFN0YXR1cyBlcSAnSW52YWxpZCcgKSB7CgogICAgICAgICMgZ2V0IHRoZSBxdWVzdGlvbiBpZHMKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFNFTEVDVCBpZAogICAgICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgICAgIFdIRVJFIHN1cnZleV9pZCA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17U3VydmV5SUR9IF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgbXkgJFF1ZXN0OwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAkUXVlc3QgPSAkUm93WzBdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICdOb1F1ZXN0aW9uJyBpZiAhJFF1ZXN0OwoKICAgICAgICBteSAlUXVlc3Rpb25UeXBlID0gKAogICAgICAgICAgICBSYWRpbyAgICA9PiAnUmFkaW8nLAogICAgICAgICAgICBDaGVja2JveCA9PiAnQ2hlY2tib3gnLAogICAgICAgICAgICBOUFMgICAgICA9PiAnTlBTJywKICAgICAgICApOwoKICAgICAgICAjIGdldCBhbGwgcXVlc3Rpb25zICh0eXBlIHJhZGlvLCBjaGVjay1ib3ggYW5kIE5QUykKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFNFTEVDVCBpZCwgcXVlc3Rpb25fdHlwZQogICAgICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgICAgIFdIRVJFIHN1cnZleV9pZCA9ID8KICAgICAgICAgICAgICAgICAgICBBTkQgKHF1ZXN0aW9uX3R5cGUgPSA/IE9SIHF1ZXN0aW9uX3R5cGUgPSA/IE9SIHF1ZXN0aW9uX3R5cGUgPSA/KScsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1N1cnZleUlEfSwgXCRRdWVzdGlvblR5cGV7UmFkaW99LCBcJFF1ZXN0aW9uVHlwZXtDaGVja2JveH0sIFwkUXVlc3Rpb25UeXBle05QU30sIF0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgbXkgQFF1ZXN0aW9uSURzOwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICBteSBAUXVlc3Rpb25JRCA9ICgKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJRCAgID0+ICRSb3dbMF0sCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAkUm93WzFdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2goIEBRdWVzdGlvbklEcywgQFF1ZXN0aW9uSUQgKTsKICAgICAgICB9CgogICAgICAgIGZvciBteSAkUXVlc3Rpb25JRCAoQFF1ZXN0aW9uSURzKSB7CgogICAgICAgICAgICAjIGdldCBhbGwgYW5zd2VyIGlkcyBvZiBhIHF1ZXN0aW9uCiAgICAgICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgICAgICBTRUxFQ1QgQ09VTlQoaWQpCiAgICAgICAgICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgICAgICAgICAgV0hFUkUgcXVlc3Rpb25faWQgPSA/JywKICAgICAgICAgICAgICAgIEJpbmQgID0+IFsgXCRRdWVzdGlvbklELT57SUR9IF0sCiAgICAgICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgICAgIG15ICRDb3VudGVyOwogICAgICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgICAgICRDb3VudGVyID0gJFJvd1swXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb25JRC0+e1R5cGV9IGVxICdSYWRpbycgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJ0luY29tcGxldGVRdWVzdGlvbicgaWYgJENvdW50ZXIgPCAyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uSUQtPntUeXBlfSBlcSAnQ2hlY2tib3gnICkgewogICAgICAgICAgICAgICAgcmV0dXJuICdJbmNvbXBsZXRlUXVlc3Rpb24nIGlmICRDb3VudGVyIDwgMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRRdWVzdGlvbklELT57VHlwZX0gZXEgJ05QUycgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJ0luY29tcGxldGVRdWVzdGlvbicgaWYgJENvdW50ZXIgPCAyOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHNldCBuZXcgc3RhdHVzCiAgICAgICAgaWYgKCAkUGFyYW17TmV3U3RhdHVzfSBlcSAnTWFzdGVyJyApIHsKICAgICAgICAgICAgbXkgJFZhbGlkU3RhdHVzID0gJ1ZhbGlkJzsKICAgICAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgICAgICBVUERBVEUgc3VydmV5CiAgICAgICAgICAgICAgICAgICAgU0VUIHN0YXR1cyA9ID8KICAgICAgICAgICAgICAgICAgICBXSEVSRSBzdGF0dXMgPSA/JywKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJFZhbGlkU3RhdHVzLCBcJFBhcmFte05ld1N0YXR1c30sIF0sCiAgICAgICAgICAgICk7CgogICAgICAgIH0KICAgICAgICBpZiAoICRQYXJhbXtOZXdTdGF0dXN9IGVxICdWYWxpZCcgfHwgJFBhcmFte05ld1N0YXR1c30gZXEgJ01hc3RlcicgKSB7CiAgICAgICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICAgICAgVVBEQVRFIHN1cnZleSBTRVQgc3RhdHVzID0gPwogICAgICAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtOZXdTdGF0dXN9LCBcJFBhcmFte1N1cnZleUlEfSwgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAnU3RhdHVzU2V0JzsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRTdGF0dXMgZXEgJ1ZhbGlkJyApIHsKCiAgICAgICAgIyBzZXQgc3RhdHVzIE1hc3RlcgogICAgICAgIGlmICggJFBhcmFte05ld1N0YXR1c30gZXEgJ01hc3RlcicgKSB7CgogICAgICAgICAgICAjIHNldCBhbnkgJ01hc3Rlcicgc3VydmV5IHRvICdWYWxpZCcKICAgICAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgICAgICBVUERBVEUgc3VydmV5CiAgICAgICAgICAgICAgICAgICAgU0VUIHN0YXR1cyA9ID8KICAgICAgICAgICAgICAgICAgICBXSEVSRSBzdGF0dXMgPSA/JywKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJFN0YXR1cywgXCRQYXJhbXtOZXdTdGF0dXN9LCBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZXQgJ01hc3RlcicgdG8gZ2l2ZW4gc3VydmV5CiAgICAgICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICAgICAgVVBEQVRFIHN1cnZleQogICAgICAgICAgICAgICAgICAgIFNFVCBzdGF0dXMgPSA/CiAgICAgICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte05ld1N0YXR1c30sIFwkUGFyYW17U3VydmV5SUR9LCBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICdTdGF0dXNTZXQnOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgc3RhdHVzIEludmFsaWQKICAgICAgICBlbHNpZiAoICRQYXJhbXtOZXdTdGF0dXN9IGVxICdJbnZhbGlkJyApIHsKICAgICAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgICAgICBVUERBVEUgc3VydmV5CiAgICAgICAgICAgICAgICAgICAgU0VUIHN0YXR1cyA9ID8KICAgICAgICAgICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmV3U3RhdHVzfSwgXCRQYXJhbXtTdXJ2ZXlJRH0sIF0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJ1N0YXR1c1NldCc7CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkU3RhdHVzIGVxICdNYXN0ZXInICkgewoKICAgICAgICAjIHNldCBzdGF0dXMgVmFsaWQKICAgICAgICBpZiAoICRQYXJhbXtOZXdTdGF0dXN9IGVxICdWYWxpZCcgfHwgJFBhcmFte05ld1N0YXR1c30gZXEgJ0ludmFsaWQnICkgewogICAgICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgICAgIFVQREFURSBzdXJ2ZXkKICAgICAgICAgICAgICAgICAgICBTRVQgc3RhdHVzID0gPwogICAgICAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtOZXdTdGF0dXN9LCBcJFBhcmFte1N1cnZleUlEfSwgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAnU3RhdHVzU2V0JzsKICAgICAgICB9CiAgICB9Cn0KCj1oZWFkMiBTdXJ2ZXlRdWV1ZUdldCgpCgpnZXQgYSBzdXJ2ZXlfcXVldWUgcmVsYXRpb24gYXMgYW4gYXJyYXkgcmVmZXJlbmNlCgpteSAkUXVldWVzUmVmID0gJFN1cnZleU9iamVjdC0+U3VydmV5UXVldWVHZXQoCiAgICBTdXJ2ZXlJRCA9PiAzLAopOwoKPWN1dAoKc3ViIFN1cnZleVF1ZXVlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtTdXJ2ZXlJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFN1cnZleUlEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgcXVldWUgaWRzIGZyb20gZGF0YWJhc2UKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgcXVldWVfaWQKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcXVldWUKICAgICAgICAgICAgV0hFUkUgc3VydmV5X2lkID0gPwogICAgICAgICAgICBPUkRFUiBCWSBxdWV1ZV9pZCBBU0MnLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1N1cnZleUlEfSBdLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBRdWV1ZUxpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBRdWV1ZUxpc3QsICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIFxAUXVldWVMaXN0Owp9Cgo9aGVhZDIgU3VydmV5UXVldWVTZXQoKQoKYWRkIGEgc3VydmV5X3F1ZXVlIHJlbGF0aW9uCgpteSAkUmVzdWx0ID0gJFN1cnZleU9iamVjdC0+U3VydmV5UXVldWVTZXQoCiAgICBTdXJ2ZXlJRCA9PiAzLAogICAgUXVldWVJRHMgPT4gWzEsIDddLAopOwoKPWN1dAoKc3ViIFN1cnZleVF1ZXVlU2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFN1cnZleUlEIFF1ZXVlSURzKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgcmVtb3ZlIGFsbCBleGlzdGluZyByZWxhdGlvbnMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBzdXJ2ZXlfcXVldWUKICAgICAgICAgICAgV0hFUkUgc3VydmV5X2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17U3VydmV5SUR9IF0sCiAgICApOwoKICAgICMgYWRkIGFsbCBzdXJ2ZXlfcXVldWUgcmVsYXRpb25zIHRvIGRhdGFiYXNlCiAgICBmb3IgbXkgJFF1ZXVlSUQgKCBAeyAkUGFyYW17UXVldWVJRHN9IH0gKSB7CgogICAgICAgICMgYWRkIHN1cnZleV9xdWV1ZSByZWxhdGlvbiB0byBkYXRhYmFzZQogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIElOU0VSVCBJTlRPIHN1cnZleV9xdWV1ZSAoc3VydmV5X2lkLCBxdWV1ZV9pZCkKICAgICAgICAgICAgICAgIFZBTFVFUyAoPywgPyknLAogICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtTdXJ2ZXlJRH0sIFwkUXVldWVJRCwgXSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgUHVibGljU3VydmV5S2V5R2V0KCkKCmdldCBhbGwgcHVibGljIHN1cnZleSBrZXlzIGFzIGFuIGFycmF5IHJlZmVyZW5jZQoKbXkgJFB1YmxpY1N1cnZleUtleXNSZWYgPSAkU3VydmV5T2JqZWN0LT5QdWJsaWNTdXJ2ZXlLZXlHZXQoCiAgICBTdXJ2ZXlJRCA9PiAzLAogICAgTGltaXQgICAgPT4gMSwgIyBvcHRpb25hbAopOwoKPWN1dAoKc3ViIFB1YmxpY1N1cnZleUtleUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17U3VydmV5SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTdXJ2ZXlJRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgcHJlcGFyZSBTUUwKICAgIG15ICRTUUwgICAgICA9ICdTRUxFQ1QgcHVibGljX3N1cnZleV9rZXkgRlJPTSBzdXJ2ZXlfcmVxdWVzdCAnOwogICAgbXkgJFNRTFdoZXJlID0gIldIRVJFIHN1cnZleV9pZCA9ICRQYXJhbXtTdXJ2ZXlJRH0iOwoKICAgICRTUUwgLj0gJFNRTFdoZXJlOwoKICAgICMgZ2V0IHF1ZXVlIGlkcyBmcm9tIGRhdGFiYXNlCiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBMaW1pdCA9PiAkUGFyYW17TGltaXR9LAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBQdWJsaWNTdXJ2ZXlLZXlMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBAUHVibGljU3VydmV5S2V5TGlzdCwgJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gXEBQdWJsaWNTdXJ2ZXlLZXlMaXN0Owp9Cgo9aGVhZDIgUHVibGljU3VydmV5R2V0KCkKCnRvIGdldCBhbGwgcHVibGljIGF0dHJpYnV0ZXMgb2YgYSBzdXJ2ZXkKCiAgICBteSAlUHVibGljU3VydmV5ID0gJFN1cnZleU9iamVjdC0+UHVibGljU3VydmV5R2V0KAogICAgICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJ0F3NWRlM1hmNXFBJywKICAgICAgICAgICAgSW52YWxpZCAgICAgICAgID0+IDEsICMgb3B0aW9uYWwgdG8ga25vdyBpZiBvbmUga2V5IHdhcyBhbHJlYWR5IHVzZWQuCiAgICApOwoKPWN1dAoKc3ViIFB1YmxpY1N1cnZleUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtQdWJsaWNTdXJ2ZXlLZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTdXJ2ZXlJRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkU1FMID0gJwogICAgICAgIFNFTEVDVCBzdXJ2ZXlfaWQKICAgICAgICBGUk9NIHN1cnZleV9yZXF1ZXN0CiAgICAgICAgV0hFUkUgcHVibGljX3N1cnZleV9rZXkgPSA/JzsKCiAgICBteSAkVmFsaWRTdHJnID0gJyBBTkQgdmFsaWRfaWQgPSAxJzsKCiAgICAjIGlmIG5vdCBpbnZhbGlkIHNob3cganVzdCB2YWxpZCBrZXlzCiAgICBpZiAoICRQYXJhbXtJbnZhbGlkfSApIHsKICAgICAgICAkVmFsaWRTdHJnID0gJyBBTkQgdmFsaWRfaWQgPSAwJzsKICAgIH0KICAgICRTUUwgLj0gJFZhbGlkU3RyZzsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IHJlcXVlc3QKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1B1YmxpY1N1cnZleUtleX0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRTdXJ2ZXlJRDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRTdXJ2ZXlJRCA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICgpIGlmICEkU3VydmV5SUQ7CgogICAgIyBnZXQgc3VydmV5CiAgICBteSAkTWFzdGVyU3RhdHVzID0gJ01hc3Rlcic7CiAgICBteSAkVmFsaWRTdGF0dXMgID0gJ1ZhbGlkJzsKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgc3VydmV5bnVtYmVyLCB0aXRsZSwgaW50cm9kdWN0aW9uCiAgICAgICAgICAgIEZST00gc3VydmV5CiAgICAgICAgICAgIFdIRVJFIGlkID0gPwogICAgICAgICAgICAgICAgQU5EIChzdGF0dXMgPSA/IE9SIHN0YXR1cyA9ID8pJywKICAgICAgICBCaW5kICA9PiBbIFwkU3VydmV5SUQsIFwkTWFzdGVyU3RhdHVzLCBcJFZhbGlkU3RhdHVzLCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRGF0YXtTdXJ2ZXlJRH0gICAgID0gJFJvd1swXTsKICAgICAgICAkRGF0YXtTdXJ2ZXlOdW1iZXJ9ID0gJFJvd1sxXTsKICAgICAgICAkRGF0YXtUaXRsZX0gICAgICAgID0gJFJvd1syXTsKICAgICAgICAkRGF0YXtJbnRyb2R1Y3Rpb259ID0gJFJvd1szXTsKICAgIH0KCiAgICByZXR1cm4gJURhdGE7Cn0KCj1oZWFkMiBQdWJsaWNTdXJ2ZXlJbnZhbGlkU2V0KCkKCnRvIHNldCBhIHJlcXVlc3QgaW52YWxpZAoKICAgICRTdXJ2ZXlPYmplY3QtPlB1YmxpY1N1cnZleUludmFsaWRTZXQoCiAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICdhVmtkRTgyRHcycXc2ZXJDZGEnLAogICAgKTsKCj1jdXQKCnN1YiBQdWJsaWNTdXJ2ZXlJbnZhbGlkU2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtQdWJsaWNTdXJ2ZXlLZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTdXJ2ZXlJRCEnCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCByZXF1ZXN0CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcmVxdWVzdAogICAgICAgICAgICBXSEVSRSBwdWJsaWNfc3VydmV5X2tleSA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtQdWJsaWNTdXJ2ZXlLZXl9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkUmVxdWVzdElEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFJlcXVlc3RJRCA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIGlmICEkUmVxdWVzdElEOwoKICAgICMgdXBkYXRlIHJlcXVlc3QKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgc3VydmV5X3JlcXVlc3QKICAgICAgICAgICAgU0VUIHZhbGlkX2lkID0gMCwgdm90ZV90aW1lID0gY3VycmVudF90aW1lc3RhbXAKICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRSZXF1ZXN0SUQgXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBFbGVtZW50RXhpc3RzKCkKCmV4aXN0cyBhbiBzdXJ2ZXktLCBxdWVzdGlvbi0sIGFuc3dlci0gb3IgcmVxdWVzdC1lbGVtZW50CgogICAgbXkgJEVsZW1lbnRFeGlzdHMgPSAkU3VydmV5T2JqZWN0LT5FbGVtZW50RXhpc3RzKAogICAgICAgIElEID0+IDEyMywgICAgICAgICAgICMgU3VydmV5SUQsIFF1ZXN0aW9uSUQsIEFuc3dlcklELCBSZXF1ZXN0SUQKICAgICAgICBFbGVtZW50ID0+ICdTdXJ2ZXknICAjIFN1cnZleSwgUXVlc3Rpb24sIEFuc3dlciwgUmVxdWVzdAogICAgKTsKCj1jdXQKCnN1YiBFbGVtZW50RXhpc3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEVsZW1lbnRJRCBFbGVtZW50KSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlTG9va3VwVGFibGUgPSAoCiAgICAgICAgU3VydmV5ICAgPT4gJ3N1cnZleScsCiAgICAgICAgUXVlc3Rpb24gPT4gJ3N1cnZleV9xdWVzdGlvbicsCiAgICAgICAgQW5zd2VyICAgPT4gJ3N1cnZleV9hbnN3ZXInLAogICAgICAgIFJlcXVlc3QgID0+ICdzdXJ2ZXlfcmVxdWVzdCcsCiAgICApOwoKICAgIG15ICRUYWJsZSA9ICRMb29rdXBUYWJsZXsgJFBhcmFte0VsZW1lbnR9IH07CiAgICBpZiAoICEkVGFibGUgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFbGVtZW50OiAnJFBhcmFte0VsZW1lbnR9JyBpcyBub3QgdmFsaWQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFNRTCA9ICcKICAgICAgICAgICAgU0VMRUNUIENPVU5UKGlkKQogICAgICAgICAgICBGUk9NICc7CiAgICAkU1FMIC49ICRUYWJsZTsKICAgICRTUUwgLj0gJyBXSEVSRSBpZCA9ID8nOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBjb3VudCBlbGVtZW50CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtFbGVtZW50SUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkRWxlbWVudEV4aXN0cyA9ICdObyc7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBpZiAoICRSb3dbMF0gKSB7CiAgICAgICAgICAgICRFbGVtZW50RXhpc3RzID0gJ1llcyc7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkRWxlbWVudEV4aXN0czsKfQoKPWhlYWQyIEdldFJpY2hUZXh0RG9jdW1lbnRDb21wbGV0ZSgpCgpnZXQgc29tZSB0ZXh0IHJlYWR5IHRvIHNob3cgYXMgcmljaC10ZXh0IGF0dGFjaG1lbnQgaW4tbGluZQoKICAgIG15ICRSaWNoVGV4dERvY3VtZW50Q29tcGxldGUgPSAkU3VydmV5T2JqZWN0LT5HZXRSaWNoVGV4dERvY3VtZW50Q29tcGxldGUoCiAgICAgICAgVGV4dCA9PiAkUmljaFRleHQsCiAgICApOwoKPWN1dAoKc3ViIEdldFJpY2hUZXh0RG9jdW1lbnRDb21wbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhUZXh0KSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCBwYXJhbWV0ZXIhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjbGVhbiBIVE1MIHN0cmluZwogICAgbXkgJFRleHQgPSAkUGFyYW17VGV4dH07CiAgICAkVGV4dCA9fiBze1xBXCRodG1sXC90ZXh0XCRccyguKil9eyQxfXhtczsKCiAgICAjIGdldCBkb2N1bWVudCBjb21wbGV0ZQogICAgbXkgJEhUTUxEb2N1bWVudENvbXBsZXRlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Eb2N1bWVudENvbXBsZXRlKAogICAgICAgIFN0cmluZyAgPT4gJFRleHQsCiAgICAgICAgQ2hhcnNldCA9PiAndXRmLTgnLAogICAgKTsKCiAgICByZXR1cm4gJEhUTUxEb2N1bWVudENvbXBsZXRlOwp9Cgo9aGVhZDIgX0J1aWxkU2VuZENvbmRpdGlvblN0cmcoKQoKYnVpbGQgc2VuZCBjb25kaXRpb24gc3RyaW5nIHdpdGggdGhlIHNpbmdsZSBpdGVtcwoKICAgIG15ICVTZW5kQ29uZGl0aW9ucyA9ICRTdXJ2ZXlPYmplY3QtPl9CdWlsZFNlbmRDb25kaXRpb25TdHJnKAogICAgICAgIFRpY2tldFR5cGVJRHMgICAgICAgICAgPT4gWzEsIDIsIDNdLCAjIChvcHRpb25hbCkKICAgICAgICBTZXJ2aWNlSURzICAgICAgICAgICAgID0+IFsxLCAyLCAzXSwgIyAob3B0aW9uYWwpCiAgICAgICAgQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyA9PiB7CiAgICAgICAgICAgICdVc2VyRmlyc3RuYW1lJyA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJ05lZ2F0aW9uJyA9PiAxLAogICAgICAgICAgICAgICAgICAgICdSZWdFeHBWYWx1ZScgPT4gJ15NaScKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJ05lZ2F0aW9uJyA9PiAxLAogICAgICAgICAgICAgICAgICAgICdSZWdFeHBWYWx1ZScgPT4gJ15LYScKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICBdLAogICAgICAgIH0sICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBfQnVpbGRTZW5kQ29uZGl0aW9uU3RyZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYnVpbGQgc2VuZCBjb25kaXRpb24gaGFzaAogICAgbXkgJVNlbmRDb25kaXRpb25zOwoKICAgIElURU06CiAgICBmb3IgbXkgJEl0ZW0gKHF3KFRpY2tldFR5cGVJRHMgU2VydmljZUlEcyBDdXN0b21lclVzZXJDb25kaXRpb25zKSkgewogICAgICAgIG5leHQgSVRFTSBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXskSXRlbX0gKSAmJiAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXskSXRlbX0gKSApOwoKICAgICAgICAkU2VuZENvbmRpdGlvbnN7JEl0ZW19ID0gJFBhcmFteyRJdGVtfTsKICAgIH0KCiAgICAjIGR1bXAgc2VuZCBjb25kaXRpb25zIGFzIHN0cmluZwogICAgbXkgJFNlbmRDb25kaXRpb25TdHJnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+RHVtcCggRGF0YSA9PiBcJVNlbmRDb25kaXRpb25zICk7CgogICAgIyBNYWtlIHN1cmUgdGhlIHJlc3VsdGluZyBzdHJpbmcgaGFzIHRoZSBVVEYtOCBmbGFnLiBZQU1MIG9ubHkgc2V0cyBpdCBpZgogICAgIyAgIHBhcnQgb2YgdGhlIGRhdGEgYWxyZWFkeSBoYWQgaXQuCiAgICB1dGY4Ojp1cGdyYWRlKCRTZW5kQ29uZGl0aW9uU3RyZyk7CgogICAgcmV0dXJuICRTZW5kQ29uZGl0aW9uU3RyZzsKfQoKPWhlYWQyIF9TZW5kQ29uZGl0aW9uQ2hlY2tDdXN0b21lckZpZWxkKCkKClRoaXMgZnVuY3Rpb24gY29sbGVjdHMgc29tZSBmaWVsZCBjb25maWcgaW5mb3JtYXRpb24gZnJvbSB0aGUgY3VzdG9tZXIgdXNlciBtYXAuCkluIE9UUlMgNiwgdGhlcmUgaXMgYSBmdW5jdGlvbiBpbiB0aGUgQ3VzdG9tZXJVc2VyLnBtIHRoYXQgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCEhIQoKICAgIG15ICVGaWVsZENvbmZpZyA9ICRTdXJ2ZXlPYmplY3QtPl9TZW5kQ29uZGl0aW9uQ2hlY2tDdXN0b21lckZpZWxkKAogICAgICAgIEZpZWxkTmFtZSA9PiAnVXNlckVtYWlsJywKICAgICAgICBTb3VyY2UgICAgPT4gJ0N1c3RvbWVyVXNlcicsICMgb3B0aW9uYWwKICAgICk7CgpSZXR1cm5zIG9uZSBmaWVsZCBjb25maWcgaW5mb3JtYXRpb24uCgogICAgJUZpZWxkQ29uZmlnID0gKAogICAgICAgIExhYmVsICAgICAgICAgPT4gJ0VtYWlsJywKICAgICAgICBEYXRhYmFzZUZpZWxkID0+ICdlbWFpbCcsCiAgICAgICAgU3RvcmFnZVR5cGUgICA9PiAndmFyJywKICAgICk7Cgo9Y3V0CgpzdWIgX1NlbmRDb25kaXRpb25DaGVja0N1c3RvbWVyRmllbGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17RmllbGROYW1lfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgRmllbGROYW1lISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkQ3VzdG9tZXJVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpOwoKICAgIFNPVVJDRToKICAgIGZvciBteSAkQ291bnQgKCAnJywgMSAuLiAxMCApIHsKICAgICAgICBuZXh0IFNPVVJDRSBpZiAhJEN1c3RvbWVyVXNlck9iamVjdC0+eyJDdXN0b21lclVzZXIkQ291bnQifTsKICAgICAgICBuZXh0IFNPVVJDRSBpZiAkUGFyYW17U291cmNlfSAmJiAkUGFyYW17U291cmNlfSBuZSAiQ3VzdG9tZXJVc2VyJENvdW50IjsKCiAgICAgICAgIyBTZWFyY2ggdGhlIHJpZ2h0IGZpZWxkIGFuZCByZXR1cm4gdGhlIGxhYmVsLgogICAgICAgIEVOVFJZOgogICAgICAgIGZvciBteSAkRW50cnkgKCBAeyAkQ3VzdG9tZXJVc2VyT2JqZWN0LT57IkN1c3RvbWVyVXNlciRDb3VudCJ9LT57Q3VzdG9tZXJVc2VyTWFwfS0+e01hcH0gfSApIHsKICAgICAgICAgICAgbmV4dCBFTlRSWSBpZiAkUGFyYW17RmllbGROYW1lfSBuZSAkRW50cnktPlswXTsKCiAgICAgICAgICAgIG15ICVGaWVsZENvbmZpZyA9ICgKICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJEVudHJ5LT5bMV0sCiAgICAgICAgICAgICAgICBEYXRhYmFzZUZpZWxkID0+ICRFbnRyeS0+WzJdLAogICAgICAgICAgICAgICAgU3RvcmFnZVR5cGUgICA9PiAkRW50cnktPls1XSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAlRmllbGRDb25maWc7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKPWhlYWQyIF9TZW5kQ29uZGl0aW9uR2V0RmllbGRTZWxlY3Rpb25zKCkKClJldHVybnMgdGhlIHNlbGVjdGlvbnMgZm9yIHRoZSBnaXZlbiBmaWVsZCAobWVyZ2VkIGZyb20gYWxsIHNvdXJjZXMpLgpJbiBPVFJTIDYsIHRoZXJlIGlzIGEgZnVuY3Rpb24gaW4gdGhlIEN1c3RvbWVyVXNlci5wbSB0aGF0IHNob3VsZCBiZSB1c2VkIGluc3RlYWQhISEKCiAgICBteSAlU2VsZWN0aW9uc0RhdGEgPSAkU3VydmV5T2JqZWN0LT5fU2VuZENvbmRpdGlvbkdldEZpZWxkU2VsZWN0aW9ucygKICAgICAgICBGaWVsZE5hbWUgPT4gJ1VzZXJFbWFpbCcsCiAgICApOwoKPWN1dAoKc3ViIF9TZW5kQ29uZGl0aW9uR2V0RmllbGRTZWxlY3Rpb25zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte0ZpZWxkTmFtZX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIEZpZWxkTmFtZSEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJEN1c3RvbWVyVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKTsKCiAgICBteSAlU2VsZWN0aW9uc0RhdGE7CgogICAgQ09VTlQ6CiAgICBmb3IgbXkgJENvdW50ICggJycsIDEgLi4gMTAgKSB7CiAgICAgICAgbmV4dCBDT1VOVCBpZiAhJEN1c3RvbWVyVXNlck9iamVjdC0+eyJDdXN0b21lclVzZXIkQ291bnQifTsKICAgICAgICBuZXh0IENPVU5UCiAgICAgICAgICAgIGlmICEkQ3VzdG9tZXJVc2VyT2JqZWN0LT57IkN1c3RvbWVyVXNlciRDb3VudCJ9LT57Q3VzdG9tZXJVc2VyTWFwfS0+e1NlbGVjdGlvbnN9LT57ICRQYXJhbXtGaWVsZE5hbWV9IH07CgogICAgICAgICVTZWxlY3Rpb25zRGF0YSA9ICgKICAgICAgICAgICAgJVNlbGVjdGlvbnNEYXRhLAogICAgICAgICAgICAleyAkQ3VzdG9tZXJVc2VyT2JqZWN0LT57IkN1c3RvbWVyVXNlciRDb3VudCJ9LT57Q3VzdG9tZXJVc2VyTWFwfS0+e1NlbGVjdGlvbnN9LT57ICRQYXJhbXtGaWVsZE5hbWV9IH0gfQogICAgICAgICk7CiAgICB9CgogICAgIyBNYWtlIHN1cmUgdGhlIGVuY29kaW5nIHN0YW1wIGlzIHNldC4KICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVTZWxlY3Rpb25zRGF0YSApIHsKICAgICAgICAkU2VsZWN0aW9uc0RhdGF7JEtleX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RW5jb2RlJyktPkVuY29kZUlucHV0KCAkU2VsZWN0aW9uc0RhdGF7JEtleX0gKTsKICAgIH0KCiAgICByZXR1cm4gJVNlbGVjdGlvbnNEYXRhOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OkFuc3dlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6U3VydmV5OjpBbnN3ZXIgLSBzdWIgbW9kdWxlIG9mIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXkKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIHN1cnZleSBhbnN3ZXIgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBBbnN3ZXJBZGQoKQoKdG8gYWRkIGEgbmV3IGFuc3dlciB0byBhIHF1ZXN0aW9uCgogICAgbXkgJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJBZGQoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgUXVlc3Rpb25JRCA9PiAxMCwKICAgICAgICBBbnN3ZXIgPT4gJ1RoZSBBbnN3ZXInLAogICAgKTsKCj1jdXQKCnN1YiBBbnN3ZXJBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVXNlcklEIFF1ZXN0aW9uSUQgQW5zd2VyKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGluc2VydCBhbnN3ZXIKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgSU5TRVJUIElOVE8gc3VydmV5X2Fuc3dlciAocXVlc3Rpb25faWQsIGFuc3dlciwgcG9zaXRpb24sIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnksCiAgICAgICAgICAgICAgICBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5KQogICAgICAgICAgICBWQUxVRVMgKCA/LCA/LCAyNTUsIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1F1ZXN0aW9uSUR9LCBcJFBhcmFte0Fuc3dlcn0sIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtVc2VySUR9LCBdLAogICAgKTsKfQoKPWhlYWQyIEFuc3dlckRlbGV0ZSgpCgp0byBkZWxldGUgYSBhbnN3ZXIgZnJvbSBhIHF1ZXN0aW9uCgogICAgbXkgJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJEZWxldGUoCiAgICAgICAgUXVlc3Rpb25JRCA9PiAxMCwKICAgICAgICBBbnN3ZXJJRCA9PiA0LAogICAgKTsKCj1jdXQKCnN1YiBBbnN3ZXJEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoUXVlc3Rpb25JRCBBbnN3ZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVsZXRlIGFuc3dlcgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFdIRVJFIGlkID0gPwogICAgICAgICAgICAgICAgQU5EIHF1ZXN0aW9uX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17QW5zd2VySUR9LCBcJFBhcmFte1F1ZXN0aW9uSUR9LCBdLAogICAgKTsKfQoKPWhlYWQyIEFuc3dlckdldCgpCgp0byBnZXQgYWxsIGF0dHJpYnV0ZXMgb2YgYSBhbnN3ZXIKCiAgICBteSAlQW5zd2VyID0gJFN1cnZleU9iamVjdC0+QW5zd2VyR2V0KAogICAgICAgIEFuc3dlcklEID0+IDEyMwogICAgKTsKCnJldHVybnM6CgogICAgJUFuc3dlciA9ICgKICAgICAgICBBbnN3ZXJJRCAgID0+IDEsCiAgICAgICAgUXVlc3Rpb25JRCA9PiAyLAogICAgICAgIEFuc3dlciAgICAgPT4gQ2hlY2tCb3hPbmUsCiAgICAgICAgUG9zaXRpb24gICA9PiAyNTUsCiAgICAgICAgQ3JlYXRlVGltZSA9PiAnMjAxNy0wMS0wMSAxMjowMDowMCcsCiAgICAgICAgQ3JlYXRlQnkgICA9PiAxLAogICAgICAgIENoYW5nZVRpbWUgPT4gJzIwMTctMDEtMDEgMTI6MDA6MDAnLAogICAgICAgIENoYW5nZUJ5ICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgQW5zd2VyR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtBbnN3ZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFF1ZXN0aW9uSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBhbnN3ZXIKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgcXVlc3Rpb25faWQsIGFuc3dlciwgcG9zaXRpb24sIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnksIGNoYW5nZV90aW1lLCBjaGFuZ2VfYnkKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0Fuc3dlcklEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRGF0YXtBbnN3ZXJJRH0gICA9ICRSb3dbMF07CiAgICAgICAgJERhdGF7UXVlc3Rpb25JRH0gPSAkUm93WzFdOwogICAgICAgICREYXRhe0Fuc3dlcn0gICAgID0gJFJvd1syXTsKICAgICAgICAkRGF0YXtQb3NpdGlvbn0gICA9ICRSb3dbM107CiAgICAgICAgJERhdGF7Q3JlYXRlVGltZX0gPSAkUm93WzRdOwogICAgICAgICREYXRhe0NyZWF0ZUJ5fSAgID0gJFJvd1s1XTsKICAgICAgICAkRGF0YXtDaGFuZ2VUaW1lfSA9ICRSb3dbNl07CiAgICAgICAgJERhdGF7Q2hhbmdlQnl9ICAgPSAkUm93WzddOwogICAgfQoKICAgIHJldHVybiAlRGF0YTsKfQoKPWhlYWQyIEFuc3dlclVwZGF0ZSgpCgp0byB1cGRhdGUgYW4gZXhpc3RpbmcgYW5zd2VyCgogICAgbXkgJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJVcGRhdGUoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgQW5zd2VySUQgPT4gNiwKICAgICAgICBRdWVzdGlvbklEID0+IDQsCiAgICAgICAgQW5zd2VyID0+ICdUaGUgQW5zd2VyJywKICAgICk7Cgo9Y3V0CgpzdWIgQW5zd2VyVXBkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFVzZXJJRCBBbnN3ZXJJRCBRdWVzdGlvbklEIEFuc3dlcikpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyB1cGRhdGUgYW5zd2VyCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFNFVCBhbnN3ZXIgPSA/LCBjaGFuZ2VfdGltZSA9IGN1cnJlbnRfdGltZXN0YW1wLCBjaGFuZ2VfYnkgPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPwogICAgICAgICAgICAgICAgQU5EIHF1ZXN0aW9uX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17QW5zd2VyfSwgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte0Fuc3dlcklEfSwgXCRQYXJhbXtRdWVzdGlvbklEfSwgXSwKICAgICk7Cn0KCj1oZWFkMiBBbnN3ZXJMaXN0KCkKCnRvIGdldCBhIGFycmF5IGxpc3Qgb2YgYWxsIGFuc3dlciBpdGVtcwoKICAgIG15IEBMaXN0ID0gJFN1cnZleU9iamVjdC0+QW5zd2VyTGlzdCgKICAgICAgICBRdWVzdGlvbklEID0+IDEKICAgICk7CgpyZXR1cm5zOgoKICAgIEBMaXN0ID0gKAogICAgICAgIHsKICAgICAgICAgICAgQW5zd2VySUQgICA9PiAxLAogICAgICAgICAgICBRdWVzdGlvbklEID0+IDIsCiAgICAgICAgICAgIEFuc3dlciAgICAgPT4gJ1RoZSBBbnN3ZXInLAogICAgICAgIH0sCiAgICAgICAgLi4uCiAgICApOwoKPWN1dAoKc3ViIEFuc3dlckxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1F1ZXN0aW9uSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBRdWVzdGlvbklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgYW5zd2VyIGxpc3QKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgcXVlc3Rpb25faWQsIGFuc3dlcgogICAgICAgICAgICBGUk9NIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgV0hFUkUgcXVlc3Rpb25faWQgPSA/CiAgICAgICAgICAgIE9SREVSIEJZIHBvc2l0aW9uJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtRdWVzdGlvbklEfSBdLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgbXkgJURhdGE7CiAgICAgICAgJERhdGF7QW5zd2VySUR9ICAgPSAkUm93WzBdOwogICAgICAgICREYXRhe1F1ZXN0aW9uSUR9ID0gJFJvd1sxXTsKICAgICAgICAkRGF0YXtBbnN3ZXJ9ICAgICA9ICRSb3dbMl07CgogICAgICAgIHB1c2ggQExpc3QsIFwlRGF0YTsKICAgIH0KCiAgICByZXR1cm4gQExpc3Q7Cn0KCj1oZWFkMiBBbnN3ZXJTb3J0KCkKCnRvIHNvcnQgYWxsIGFuc3dlcnMgZnJvbSBhIHF1ZXN0aW9uCgogICAgbXkgJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJTb3J0KAogICAgICAgIFF1ZXN0aW9uSUQgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgQW5zd2VyU29ydCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17UXVlc3Rpb25JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFF1ZXN0aW9uSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBhbnN3ZXIgbGlzdAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgIEZST00gc3VydmV5X2Fuc3dlcgogICAgICAgICAgICBXSEVSRSBxdWVzdGlvbl9pZCA9ID8KICAgICAgICAgICAgT1JERVIgQlkgcG9zaXRpb24nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1F1ZXN0aW9uSUR9IF0sCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQExpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBMaXN0LCAkUm93WzBdOwogICAgfQoKICAgIG15ICRDb3VudGVyID0gMTsKICAgIGZvciBteSAkQW5zd2VySUQgKEBMaXN0KSB7CgogICAgICAgICMgdXBkYXRlIHBvc2l0aW9uCiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgVVBEQVRFIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgICAgIFNFVCBwb3NpdGlvbiA9ID8KICAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJENvdW50ZXIsIFwkQW5zd2VySUQgXSwKICAgICAgICApOwoKICAgICAgICAkQ291bnRlcisrOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQW5zd2VyVXAoKQoKdG8gbW92ZSBhIGFuc3dlciB1cAoKICAgIG15ICRTdWNjZXNzID0gJFN1cnZleU9iamVjdC0+QW5zd2VyVXAoCiAgICAgICAgUXVlc3Rpb25JRCA9PiA0LAogICAgICAgIEFuc3dlcklEID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIEFuc3dlclVwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFF1ZXN0aW9uSUQgQW5zd2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IHBvc2l0aW9uCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgcG9zaXRpb24KICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFdIRVJFIGlkID0gPwogICAgICAgICAgICAgICAgQU5EIHF1ZXN0aW9uX2lkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0Fuc3dlcklEfSwgXCRQYXJhbXtRdWVzdGlvbklEfSwgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRQb3NpdGlvbjsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRQb3NpdGlvbiA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIGlmICRQb3NpdGlvbiA8IDI7CgogICAgbXkgJFBvc2l0aW9uVXAgPSAkUG9zaXRpb24gLSAxOwoKICAgICMgZ2V0IGFuc3dlcgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgIEZST00gc3VydmV5X2Fuc3dlcgogICAgICAgICAgICBXSEVSRSBxdWVzdGlvbl9pZCA9ID8gQU5EIHBvc2l0aW9uID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1F1ZXN0aW9uSUR9LCBcJFBvc2l0aW9uVXAsIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkQW5zd2VySUREb3duOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJEFuc3dlcklERG93biA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIGlmICEkQW5zd2VySUREb3duOwoKICAgICMgdXBkYXRlIHBvc2l0aW9uCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgVVBEQVRFIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgU0VUIHBvc2l0aW9uID0gPwogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBvc2l0aW9uLCBcJEFuc3dlcklERG93biwgXSwKICAgICk7CgogICAgIyB1cGRhdGUgcG9zaXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgc3VydmV5X2Fuc3dlcgogICAgICAgICAgICBTRVQgcG9zaXRpb24gPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUG9zaXRpb25VcCwgXCRQYXJhbXtBbnN3ZXJJRH0sIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQW5zd2VyRG93bigpCgp0byBtb3ZlIGEgYW5zd2VyIGRvd24KCiAgICBteSAkU3VjY2VzcyA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlckRvd24oCiAgICAgICAgUXVlc3Rpb25JRCA9PiA0LAogICAgICAgIEFuc3dlcklEID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIEFuc3dlckRvd24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoUXVlc3Rpb25JRCBBbnN3ZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgcG9zaXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBwb3NpdGlvbgogICAgICAgICAgICBGUk9NIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgV0hFUkUgaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgcXVlc3Rpb25faWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17QW5zd2VySUR9LCBcJFBhcmFte1F1ZXN0aW9uSUR9LCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFBvc2l0aW9uOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFBvc2l0aW9uID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gaWYgISRQb3NpdGlvbjsKCiAgICBteSAkUG9zaXRpb25Eb3duID0gJFBvc2l0aW9uICsgMTsKCiAgICAjIGdldCBhbnN3ZXIKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZAogICAgICAgICAgICBGUk9NIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgV0hFUkUgcXVlc3Rpb25faWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgcG9zaXRpb24gPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17UXVlc3Rpb25JRH0sIFwkUG9zaXRpb25Eb3duLCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJEFuc3dlcklEVXA7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQW5zd2VySURVcCA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIGlmICEkQW5zd2VySURVcDsKCiAgICAjIHVwZGF0ZSBwb3NpdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFNFVCBwb3NpdGlvbiA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQb3NpdGlvbiwgXCRBbnN3ZXJJRFVwLCBdLAogICAgKTsKCiAgICAjIHVwZGF0ZSBwb3NpdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFNFVCBwb3NpdGlvbiA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQb3NpdGlvbkRvd24sIFwkUGFyYW17QW5zd2VySUR9LCBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIEFuc3dlckNvdW50KCkKCnRvIGNvdW50IGFsbCBhbnN3ZXJzIG9mIGEgcXVlc3Rpb24KCiAgICBteSAkQ291bnRBbnN3ZXIgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJDb3VudCgKICAgICAgICBRdWVzdGlvbklEID0+IDEyMwogICAgKTsKCj1jdXQKCnN1YiBBbnN3ZXJDb3VudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17UXVlc3Rpb25JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFF1ZXN0aW9uSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGNvdW50IGFuc3dlcnMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBDT1VOVChpZCkKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFdIRVJFIHF1ZXN0aW9uX2lkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1F1ZXN0aW9uSUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkQ291bnRBbnN3ZXI7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ291bnRBbnN3ZXIgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAkQ291bnRBbnN3ZXI7Cn0KCj1oZWFkMiBQdWJsaWNBbnN3ZXJTZXQoKQoKdG8gc2F2ZSBhIHB1YmxpYyB2b3RlCgogICAgbXkgJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5QdWJsaWNBbnN3ZXJTZXQoCiAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICdhVmtkRTgyRHcycXc2ZXJDZGEnLAogICAgICAgIFF1ZXN0aW9uSUQgPT4gNCwKICAgICAgICBWb3RlVmFsdWUgPT4gJ1RoZSBWYWx1ZScsCiAgICApOwoKPWN1dAoKc3ViIFB1YmxpY0Fuc3dlclNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhQdWJsaWNTdXJ2ZXlLZXkgUXVlc3Rpb25JRCBWb3RlVmFsdWUpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgcmVxdWVzdAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgIEZST00gc3VydmV5X3JlcXVlc3QKICAgICAgICAgICAgV0hFUkUgcHVibGljX3N1cnZleV9rZXkgPSA/CiAgICAgICAgICAgICAgICBBTkQgdmFsaWRfaWQgPSAxJywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17UHVibGljU3VydmV5S2V5fSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFJlcXVlc3RJRDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRSZXF1ZXN0SUQgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBpZiAhJFJlcXVlc3RJRDsKCiAgICAjIFByZXZlbnQgdG8gd3JpdGUgc29tZXRoaW5nIHRoYXQgb3JhY2xlIHN0b3JlIGFzIE5VTEwgaW4gZGF0YWJhc2UuCiAgICAjIFNlZSBidWcgIzk1NzUuCiAgICBpZiAoICggJERCT2JqZWN0LT57J0RCOjpUeXBlJ30gZXEgJ29yYWNsZScgKSAmJiAoICRQYXJhbXtWb3RlVmFsdWV9IGVxICcnICkgKSB7CiAgICAgICAgJFBhcmFte1ZvdGVWYWx1ZX0gPSAwOwogICAgfQoKICAgICMgaW5zZXJ0IHZvdGUKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBzdXJ2ZXlfdm90ZSAocmVxdWVzdF9pZCwgcXVlc3Rpb25faWQsIHZvdGVfdmFsdWUsIGNyZWF0ZV90aW1lKQogICAgICAgICAgICBWQUxVRVMgKCA/LCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCknLAogICAgICAgIEJpbmQgPT4gWyBcJFJlcXVlc3RJRCwgXCRQYXJhbXtRdWVzdGlvbklEfSwgXCRQYXJhbXtWb3RlVmFsdWV9LCBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OlF1ZXN0aW9uOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OlF1ZXN0aW9uIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6U3VydmV5Cgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBzdXJ2ZXkgcXVlc3Rpb24gZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBRdWVzdGlvbkFkZCgpCgp0byBhZGQgYSBuZXcgcXVlc3Rpb24gdG8gYSBzdXJ2ZXkKCiAgICBteSAkU3VjY2VzcyA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uQWRkKAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgIFN1cnZleUlEID0+IDEwLAogICAgICAgIFF1ZXN0aW9uID0+ICdUaGUgUXVlc3Rpb24nLAogICAgICAgIEFuc3dlclJlcXVpcmVkID0+IDEsICMgb3IgMAogICAgICAgIFR5cGUgPT4gJ1JhZGlvJywKICAgICk7Cgo9Y3V0CgpzdWIgUXVlc3Rpb25BZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVXNlcklEIFN1cnZleUlEIFF1ZXN0aW9uIFR5cGUpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJFBhcmFte1F1ZXN0aW9ufTsKCiAgICAjIGluc2VydCBhIG5ldyBxdWVzdGlvbgogICAgIyBpZiB3ZSBkaWRuJ3QgZ2V0IGFuIEFuc3dlciBQYXJhbWV0ZXIgKGUuZy4ganVzdCB1bmRlZmluZWQpCiAgICAjIG9yIGl0IHdhcyBzb21ldGhpbmcgZWxzZSB0aGFuIDAgb3IgMQogICAgIyB3ZSBhc3N1bWUgaXQncyBhIHJlcXVpcmVkIGFuc3dlcgogICAgaWYgKAogICAgICAgICFkZWZpbmVkICRQYXJhbXtBbnN3ZXJSZXF1aXJlZH0KICAgICAgICB8fAogICAgICAgICggJFBhcmFte0Fuc3dlclJlcXVpcmVkfSBuZSAnMCcgJiYgJFBhcmFte0Fuc3dlclJlcXVpcmVkfSBuZSAnMScgKQogICAgICAgICkKICAgIHsKICAgICAgICAkUGFyYW17QW5zd2VyUmVxdWlyZWR9ID0gMTsKICAgIH0KCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIElOU0VSVCBJTlRPIHN1cnZleV9xdWVzdGlvbiAoc3VydmV5X2lkLCBxdWVzdGlvbiwgcXVlc3Rpb25fdHlwZSwgcG9zaXRpb24sCiAgICAgICAgICAgICAgICBhbnN3ZXJfcmVxdWlyZWQsIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnksIGNoYW5nZV90aW1lLCBjaGFuZ2VfYnkpCiAgICAgICAgICAgIFZBTFVFUyAoPywgPywgPywgMjU1LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtTdXJ2ZXlJRH0sIFwkUGFyYW17UXVlc3Rpb259LCBcJFBhcmFte1R5cGV9LCBcJFBhcmFte0Fuc3dlclJlcXVpcmVkfSwKICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgXSwKICAgICk7Cn0KCj1oZWFkMiBRdWVzdGlvbkRlbGV0ZSgpCgp0byBkZWxldGUgYSBxdWVzdGlvbiBmcm9tIGEgc3VydmV5CgogICAgbXkgJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkRlbGV0ZSgKICAgICAgICBTdXJ2ZXlJRCA9PiAxLAogICAgICAgIFF1ZXN0aW9uSUQgPT4gMTAsCiAgICApOwoKPWN1dAoKc3ViIFF1ZXN0aW9uRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFN1cnZleUlEIFF1ZXN0aW9uSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZGVsZXRlIGFsbCBhbnN3ZXJzIG9mIGEgcXVlc3Rpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFdIRVJFIHF1ZXN0aW9uX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17UXVlc3Rpb25JRH0gXSwKICAgICk7CgogICAgIyBkZWxldGUgdGhlIHF1ZXN0aW9uCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgREVMRVRFIEZST00gc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFdIRVJFIGlkID0gPwogICAgICAgICAgICAgICAgQU5EIHN1cnZleV9pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1F1ZXN0aW9uSUR9LCBcJFBhcmFte1N1cnZleUlEfSwgXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBRdWVzdGlvbkdldCgpCgp0byBnZXQgYWxsIGF0dHJpYnV0ZXMgb2YgYSBxdWVzdGlvbgoKICAgIG15ICVRdWVzdGlvbiA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uR2V0KAogICAgICAgIFF1ZXN0aW9uSUQgPT4gMTIzCiAgICApOwoKcmV0dXJuczoKCiAgICAlUXVlc3Rpb24gPSAoCiAgICAgICAgUXVlc3Rpb25JRCAgICAgPT4gMSwKICAgICAgICBTdXJ2ZXlJRCAgICAgICA9PiAyLAogICAgICAgIFF1ZXN0aW9uICAgICAgID0+ICdRdWVzdGlvbicsCiAgICAgICAgVHlwZSAgICAgICAgICAgPT4gJ1llc05vJywKICAgICAgICBQb3NpdGlvbiAgICAgICA9PiAxMiwKICAgICAgICBBbnN3ZXJSZXF1aXJlZCA9PiAxLAogICAgICAgIENyZWF0ZVRpbWUgICAgID0+ICcyMDE3LTAxLTAxIDEyOjAwOjAwJywKICAgICAgICBDcmVhdGVCeSAgICAgICA9PiAxLAogICAgICAgIENoYW5nZVRpbWUgICAgID0+ICcyMDE3LTAxLTAxIDEyOjAwOjAwJywKICAgICAgICBDaGFuZ2VCeSAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBRdWVzdGlvbkdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17UXVlc3Rpb25JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFF1ZXN0aW9uSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBxdWVzdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBzdXJ2ZXlfaWQsIHF1ZXN0aW9uLCBxdWVzdGlvbl90eXBlLCBwb3NpdGlvbiwgYW5zd2VyX3JlcXVpcmVkLCBjcmVhdGVfdGltZSwKICAgICAgICAgICAgICAgIGNyZWF0ZV9ieSwgY2hhbmdlX3RpbWUsIGNoYW5nZV9ieQogICAgICAgICAgICBGUk9NIHN1cnZleV9xdWVzdGlvbgogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtRdWVzdGlvbklEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJURhdGE7CgogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJERhdGF7UXVlc3Rpb25JRH0gICAgID0gJFJvd1swXTsKICAgICAgICAkRGF0YXtTdXJ2ZXlJRH0gICAgICAgPSAkUm93WzFdOwogICAgICAgICREYXRhe1F1ZXN0aW9ufSAgICAgICA9ICRSb3dbMl07CiAgICAgICAgJERhdGF7VHlwZX0gICAgICAgICAgID0gJFJvd1szXTsKICAgICAgICAkRGF0YXtQb3NpdGlvbn0gICAgICAgPSAkUm93WzRdOwogICAgICAgICREYXRhe0Fuc3dlclJlcXVpcmVkfSA9ICRSb3dbNV07CiAgICAgICAgJERhdGF7Q3JlYXRlVGltZX0gICAgID0gJFJvd1s2XTsKICAgICAgICAkRGF0YXtDcmVhdGVCeX0gICAgICAgPSAkUm93WzddOwogICAgICAgICREYXRhe0NoYW5nZVRpbWV9ICAgICA9ICRSb3dbOF07CiAgICAgICAgJERhdGF7Q2hhbmdlQnl9ICAgICAgID0gJFJvd1s5XTsKICAgIH0KCiAgICByZXR1cm4gJURhdGE7Cn0KCj1oZWFkMiBRdWVzdGlvblVwZGF0ZSgpCgp0byB1cGRhdGUgYW4gZXhpc3RpbmcgcXVlc3Rpb24KCiAgICBteSAkU3VjY2VzcyA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uVXBkYXRlKAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgIFF1ZXN0aW9uSUQgPT4gNCwKICAgICAgICBTdXJ2ZXlJRCA9PiAzLAogICAgICAgIEFuc3dlclJlcXVpcmVkID0+ICcxJywgIyBvciAnMCcKICAgICAgICBRdWVzdGlvbiA9PiAnVGhlIFF1ZXN0aW9uJywKICAgICk7Cgo9Y3V0CgpzdWIgUXVlc3Rpb25VcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVXNlcklEIFF1ZXN0aW9uSUQgU3VydmV5SUQgUXVlc3Rpb24pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQW5zd2VyUmVxdWlyZWQgPSAxOwogICAgaWYgKAogICAgICAgIGRlZmluZWQgJFBhcmFte0Fuc3dlclJlcXVpcmVkfQogICAgICAgICYmICggJFBhcmFte0Fuc3dlclJlcXVpcmVkfSBlcSAnMScgfHwgJFBhcmFte0Fuc3dlclJlcXVpcmVkfSBlcSAnMCcgKQogICAgICAgICkKICAgIHsKICAgICAgICAkQW5zd2VyUmVxdWlyZWQgPSAkUGFyYW17QW5zd2VyUmVxdWlyZWR9OwogICAgfQoKICAgICMgdXBkYXRlIHF1ZXN0aW9uCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgU0VUIHF1ZXN0aW9uID0gPywgYW5zd2VyX3JlcXVpcmVkID0gPywgY2hhbmdlX3RpbWUgPSBjdXJyZW50X3RpbWVzdGFtcCwKICAgICAgICAgICAgICAgIGNoYW5nZV9ieSA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgc3VydmV5X2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17UXVlc3Rpb259LCBcJEFuc3dlclJlcXVpcmVkLCBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgIFwkUGFyYW17U3VydmV5SUR9LAogICAgICAgIF0sCiAgICApOwp9Cgo9aGVhZDIgUXVlc3Rpb25MaXN0KCkKCnRvIGdldCBhIGFycmF5IGxpc3Qgb2YgYWxsIHF1ZXN0aW9uIGl0ZW1zCgogICAgbXkgQExpc3QgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkxpc3QoCiAgICAgICAgU3VydmV5SUQgPT4gMQogICAgKTsKCnJldHVybnM6CiAgICBATGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIFF1ZXN0aW9uSUQgICAgID0+IDEyMywsCiAgICAgICAgICAgIFN1cnZleUlEICAgICAgID0+IDEyMywKICAgICAgICAgICAgUXVlc3Rpb24gICAgICAgPT4gJ1F1ZXN0aW9uJwogICAgICAgICAgICBUeXBlICAgICAgICAgICA9PiAnWWVzTm8nLAogICAgICAgICAgICBBbnN3ZXJSZXF1aXJlZCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgLi4uCiAgICApOwoKPWN1dAoKc3ViIFF1ZXN0aW9uTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17U3VydmV5SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTdXJ2ZXlJRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IGFsbCBxdWVzdGlvbnMgb2YgYSBzdXJ2ZXkKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgc3VydmV5X2lkLCBxdWVzdGlvbiwgcXVlc3Rpb25fdHlwZSwgYW5zd2VyX3JlcXVpcmVkCiAgICAgICAgICAgIEZST00gc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFdIRVJFIHN1cnZleV9pZCA9ID8KICAgICAgICAgICAgT1JERVIgQlkgcG9zaXRpb24nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1N1cnZleUlEfSBdLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgbXkgJURhdGE7CiAgICAgICAgJERhdGF7UXVlc3Rpb25JRH0gICAgID0gJFJvd1swXTsKICAgICAgICAkRGF0YXtTdXJ2ZXlJRH0gICAgICAgPSAkUm93WzFdOwogICAgICAgICREYXRhe1F1ZXN0aW9ufSAgICAgICA9ICRSb3dbMl07CiAgICAgICAgJERhdGF7VHlwZX0gICAgICAgICAgID0gJFJvd1szXTsKICAgICAgICAkRGF0YXtBbnN3ZXJSZXF1aXJlZH0gPSAkUm93WzRdIHx8IDA7CgogICAgICAgIHB1c2ggQExpc3QsIFwlRGF0YTsKICAgIH0KCiAgICByZXR1cm4gQExpc3Q7Cn0KCj1oZWFkMiBRdWVzdGlvblNvcnQoKQoKdG8gc29ydCBhbGwgcXVlc3Rpb25zIGZyb20gYSBzdXJ2ZXkKCiAgICBteSAkU3VjY2VzcyA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uU29ydCgKICAgICAgICBTdXJ2ZXlJRCA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBRdWVzdGlvblNvcnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1N1cnZleUlEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgU3VydmV5SUQhJwogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IGFsbCBxdWVzdGlvbiBvZiBhIHN1cnZleSAoc29ydGVkIGJ5IHBvc2l0aW9uKQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkIEZST00gc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFdIRVJFIHN1cnZleV9pZCA9ID8KICAgICAgICAgICAgT1JERVIgQlkgcG9zaXRpb24nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1N1cnZleUlEfSBdLAogICAgKTsKCiAgICBteSBATGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQExpc3QsICRSb3dbMF07CiAgICB9CgogICAgbXkgJENvdW50ZXIgPSAxOwogICAgZm9yIG15ICRRdWVzdGlvbklEIChATGlzdCkgewogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgICAgIFNFVCBwb3NpdGlvbiA9ID8KICAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJENvdW50ZXIsIFwkUXVlc3Rpb25JRCBdLAogICAgICAgICk7CgogICAgICAgICRDb3VudGVyKys7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBRdWVzdGlvblVwKCkKCnRvIG1vdmUgYSBxdWVzdGlvbiB1cAoKICAgIG15ICRTdWNjZXNzID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25VcCgKICAgICAgICBTdXJ2ZXlJRCA9PiAxLAogICAgICAgIFF1ZXN0aW9uSUQgPT4gNCwKICAgICk7Cgo9Y3V0CgpzdWIgUXVlc3Rpb25VcCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhTdXJ2ZXlJRCBRdWVzdGlvbklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBwb3NpdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIHBvc2l0aW9uCiAgICAgICAgICAgIEZST00gc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFdIRVJFIGlkID0gPwogICAgICAgICAgICAgICAgQU5EIHN1cnZleV9pZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtRdWVzdGlvbklEfSwgXCRQYXJhbXtTdXJ2ZXlJRH0sIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkUG9zaXRpb24gPSAwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFBvc2l0aW9uID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gaWYgJFBvc2l0aW9uIDwgMjsKCiAgICBteSAkUG9zaXRpb25VcCA9ICRQb3NpdGlvbiAtIDE7CgogICAgIyBnZXQgcXVlc3Rpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZAogICAgICAgICAgICBGUk9NIHN1cnZleV9xdWVzdGlvbgogICAgICAgICAgICBXSEVSRSBzdXJ2ZXlfaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgcG9zaXRpb24gPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17U3VydmV5SUR9LCBcJFBvc2l0aW9uVXAgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRRdWVzdGlvbklERG93bjsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRRdWVzdGlvbklERG93biA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIGlmICEkUXVlc3Rpb25JRERvd247CgogICAgIyB1cGRhdGUgcG9zaXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFNFVCBwb3NpdGlvbiA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQb3NpdGlvbiwgXCRRdWVzdGlvbklERG93biwgXSwKICAgICk7CgogICAgIyB1cGRhdGUgcG9zaXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFNFVCBwb3NpdGlvbiA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQb3NpdGlvblVwLCBcJFBhcmFte1F1ZXN0aW9uSUR9LCBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFF1ZXN0aW9uRG93bigpCgp0byBtb3ZlIGEgcXVlc3Rpb24gZG93bgoKICAgIG15ICRTdWNjZXNzID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25Eb3duKAogICAgICAgIFN1cnZleUlEID0+IDEsCiAgICAgICAgUXVlc3Rpb25JRCA9PiA0LAogICAgKTsKCj1jdXQKCnN1YiBRdWVzdGlvbkRvd24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoU3VydmV5SUQgUXVlc3Rpb25JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgcG9zaXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBwb3NpdGlvbgogICAgICAgICAgICBGUk9NIHN1cnZleV9xdWVzdGlvbgogICAgICAgICAgICBXSEVSRSBpZCA9ID8KICAgICAgICAgICAgICAgIEFORCBzdXJ2ZXlfaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17UXVlc3Rpb25JRH0sIFwkUGFyYW17U3VydmV5SUR9LCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFBvc2l0aW9uOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFBvc2l0aW9uID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gaWYgISRQb3NpdGlvbjsKCiAgICBteSAkUG9zaXRpb25Eb3duID0gJFBvc2l0aW9uICsgMTsKCiAgICAjIGdldCBxdWVzdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgIEZST00gc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFdIRVJFIHN1cnZleV9pZCA9ID8KICAgICAgICAgICAgICAgIEFORCBwb3NpdGlvbiA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtTdXJ2ZXlJRH0sIFwkUG9zaXRpb25Eb3duLCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFF1ZXN0aW9uSURVcDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRRdWVzdGlvbklEVXAgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBpZiAhJFF1ZXN0aW9uSURVcDsKCiAgICAjIHVwZGF0ZSBwb3NpdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgU0VUIHBvc2l0aW9uID0gPwogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBvc2l0aW9uLCBcJFF1ZXN0aW9uSURVcCwgXSwKICAgICk7CgogICAgIyB1cGRhdGUgcG9zaXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFNFVCBwb3NpdGlvbiA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQb3NpdGlvbkRvd24sIFwkUGFyYW17UXVlc3Rpb25JRH0sIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgUXVlc3Rpb25Db3VudCgpCgp0byBjb3VudCBhbGwgcXVlc3Rpb25zIG9mIGEgc3VydmV5CgogICAgbXkgJENvdW50UXVlc3Rpb24gPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkNvdW50KAogICAgICAgIFN1cnZleUlEID0+IDEyMwogICAgKTsKCj1jdXQKCnN1YiBRdWVzdGlvbkNvdW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtTdXJ2ZXlJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFN1cnZleUlEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBjb3VudCBxdWVzdGlvbnMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBDT1VOVChpZCkKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgV0hFUkUgc3VydmV5X2lkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1N1cnZleUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJENvdW50UXVlc3Rpb247CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ291bnRRdWVzdGlvbiA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICRDb3VudFF1ZXN0aW9uOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OlJlcXVlc3Q7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlN1cnZleTo6UmVxdWVzdCAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OlN1cnZleQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgc3VydmV5IHJlcXVlc3QgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBSZXF1ZXN0R2V0KCkKCnRvIGdldCBhbiBhcnJheSBsaXN0IG9mIHJlcXVlc3QgZWxlbWVudHMKCiAgICBteSAlUmVxdWVzdERhdGEgPSAkU3VydmV5T2JqZWN0LT5SZXF1ZXN0R2V0KAogICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAnQXc1ZGUzWGY1cUEnLAoKICAgICAgICBSZXF1ZXN0U2VuZFRpbWVOZXdlckRhdGUgICAgPT4gJzIwMTItMDEtMDEgMTI6MDA6MDAnLCAgICMgKG9wdGlvbmFsKQogICAgICAgIFJlcXVlc3RTZW5kVGltZU9sZGVyRGF0ZSAgICA9PiAnMjAxMi0wMS0zMSAxMjowMDowMCcsICAgIyAob3B0aW9uYWwpCiAgICAgICAgUmVxdWVzdFZvdGVUaW1lTmV3ZXJEYXRlICAgID0+ICcyMDEyLTAxLTAxIDEyOjAwOjAwJywgICAjIChvcHRpb25hbCkKICAgICAgICBSZXF1ZXN0Vm90ZVRpbWVPbGRlckRhdGUgICAgPT4gJzIwMTItMTItMzEgMTI6MDA6MDAnLCAgICMgKG9wdGlvbmFsKQogICAgICAgIFJlcXVlc3RDcmVhdGVUaW1lTmV3ZXJEYXRlICA9PiAnMjAxMi0wMS0wMSAxMjowMDowMCcsICAgIyAob3B0aW9uYWwpCiAgICAgICAgUmVxdWVzdENyZWF0ZVRpbWVPbGRlckRhdGUgID0+ICcyMDEyLTEyLTMxIDEyOjAwOjAwJywgICAjIChvcHRpb25hbCkKICAgICk7CgpyZXR1cm5zOgoKICAgICVSZXF1ZXN0RGF0YSA9ICgKICAgICAgICBSZXF1ZXN0SUQgICAgICAgPT4gMTIzLAogICAgICAgIFRpY2tldElEICAgICAgICA9PiAxMjMsCiAgICAgICAgU3VydmV5SUQgICAgICAgID0+IDEyMywKICAgICAgICBWYWxpZElEICAgICAgICAgPT4gMSwKICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJ2I0YzE0NTUyOTE5MDE4YjUxZWM3OTJjOWI4MTJiNjkxJywKICAgICAgICBTZW5kVG8gICAgICAgICAgPT4gJ21haWxAbG9jYWxob3N0LmNvbScsCiAgICAgICAgU2VuZFRpbWUgICAgICAgID0+ICcyMDE3LTAxLTAxIDEyOjAwOjAwJywKICAgICAgICBWb3RlVGltZSAgICAgICAgPT4gJzIwMTctMDEtMDIgMTI6MDA6MDAnLAogICAgKTsKCj1jdXQKCnN1YiBSZXF1ZXN0R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtQdWJsaWNTdXJ2ZXlLZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBQdWJsaWNTdXJ2ZXlLZXkhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIHByZXBhcmUgc3FsCiAgICBteSAkU1FMU2VsZWN0ID0gJ1NFTEVDVCBpZCwgdGlja2V0X2lkLCBzdXJ2ZXlfaWQsIHZhbGlkX2lkLCBwdWJsaWNfc3VydmV5X2tleSwgc2VuZF90bywgc2VuZF90aW1lLCB2b3RlX3RpbWUnOwogICAgbXkgJFNRTEZyb20gICA9ICcgRlJPTSBzdXJ2ZXlfcmVxdWVzdCc7CiAgICBteSAkU1FMV2hlcmUgID0gIiBXSEVSRSBwdWJsaWNfc3VydmV5X2tleSA9ICckUGFyYW17UHVibGljU3VydmV5S2V5fSciOwoKICAgICMgc2V0IHRpbWUgcGFyYW1zCiAgICBteSAlVGltZVBhcmFtcyA9ICgKCiAgICAgICAgUmVxdWVzdFNlbmRUaW1lTmV3ZXJEYXRlICAgPT4gJ3NlbmRfdGltZSA+PScsCiAgICAgICAgUmVxdWVzdFNlbmRUaW1lT2xkZXJEYXRlICAgPT4gJ3NlbmRfdGltZSA8PScsCiAgICAgICAgUmVxdWVzdFZvdGVUaW1lTmV3ZXJEYXRlICAgPT4gJ3ZvdGVfdGltZSA+PScsCiAgICAgICAgUmVxdWVzdFZvdGVUaW1lT2xkZXJEYXRlICAgPT4gJ3ZvdGVfdGltZSA8PScsCiAgICAgICAgUmVxdWVzdENyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJ2NyZWF0ZV90aW1lID49JywKICAgICAgICBSZXF1ZXN0Q3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnY3JlYXRlX3RpbWUgPD0nLAogICAgKTsKCiAgICAjIGNoZWNrIGFuZCBhZGQgdGltZSBwYXJhbXMgdG8gV0hFUkUKICAgIFRJTUVQQVJBTToKICAgIGZvciBteSAkVGltZVBhcmFtICggc29ydCBrZXlzICVUaW1lUGFyYW1zICkgewoKICAgICAgICBuZXh0IFRJTUVQQVJBTSBpZiAhJFBhcmFteyRUaW1lUGFyYW19OwoKICAgICAgICAjIGNoZWNrIGZvcm1hdAogICAgICAgIGlmICggJFBhcmFteyRUaW1lUGFyYW19ICF+IG17IFxBIFxkXGRcZFxkLVxkXGQtXGRcZCBccyBcZFxkOlxkXGQ6XGRcZCBceiB9eG1zICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIHBhcmFtZXRlciAkVGltZVBhcmFtIGhhcyBhbiBpbnZhbGlkIGRhdGUgZm9ybWF0ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkUGFyYW17JFRpbWVQYXJhbX0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17JFRpbWVQYXJhbX0gKTsKCiAgICAgICAgIyBhZGQgdGltZSBwYXJhbWV0ZXIgdG8gV0hFUkUKICAgICAgICAkU1FMV2hlcmUgLj0gIiBBTkQgJFRpbWVQYXJhbXN7JFRpbWVQYXJhbX0gJyRQYXJhbXskVGltZVBhcmFtfSciOwogICAgfQoKICAgIG15ICRTUUwgPSAkU1FMU2VsZWN0IC49ICRTUUxGcm9tOwogICAgJFNRTCAuPSAkU1FMV2hlcmU7CgogICAgIyBnZXQgcmVxdWVzdCBsaXN0CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJVJlcXVlc3REYXRhOwoKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRSZXF1ZXN0RGF0YXtSZXF1ZXN0SUR9ICAgICAgID0gJFJvd1swXTsKICAgICAgICAkUmVxdWVzdERhdGF7VGlja2V0SUR9ICAgICAgICA9ICRSb3dbMV07CiAgICAgICAgJFJlcXVlc3REYXRhe1N1cnZleUlEfSAgICAgICAgPSAkUm93WzJdOwogICAgICAgICRSZXF1ZXN0RGF0YXtWYWxpZElEfSAgICAgICAgID0gJFJvd1szXTsKICAgICAgICAkUmVxdWVzdERhdGF7UHVibGljU3VydmV5S2V5fSA9ICRSb3dbNF07CiAgICAgICAgJFJlcXVlc3REYXRhe1NlbmRUb30gICAgICAgICAgPSAkUm93WzVdOwogICAgICAgICRSZXF1ZXN0RGF0YXtTZW5kVGltZX0gICAgICAgID0gJFJvd1s2XTsKICAgICAgICAkUmVxdWVzdERhdGF7Vm90ZVRpbWV9ICAgICAgICA9ICRSb3dbN107CiAgICB9CgogICAgcmV0dXJuICVSZXF1ZXN0RGF0YTsKfQoKPWhlYWQyIFJlcXVlc3RTZW5kKCkKCnRvIHNlbmQgYSByZXF1ZXN0IHRvIGEgY3VzdG9tZXIgKGlmIG1hc3RlciBzdXJ2ZXkgaXMgc2V0KQoKICAgIG15ICRTdWNjZXNzID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdFNlbmQoCiAgICAgICAgVGlja2V0SUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBSZXF1ZXN0U2VuZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VGlja2V0SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBUaWNrZXRJRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBzeXN0ZW0gdGltZQogICAgbXkgJFN5c3RlbVRpbWUgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKS0+VG9FcG9jaCgpOwoKICAgICMgY3JlYXRlIFB1YmxpY1N1cnZleUtleQogICAgbXkgJFB1YmxpY1N1cnZleUtleTsKICAgIGlmICggISRQYXJhbXtQdWJsaWNTdXJ2ZXlLZXl9ICkgewogICAgICAgIG15ICRNRDUgPSBEaWdlc3Q6Ok1ENS0+bmV3KCk7CiAgICAgICAgJE1ENS0+YWRkKCAkU3lzdGVtVGltZSAuIGludCggcmFuZCg5OTk5OTk5OTkpICkgKTsKICAgICAgICAkUHVibGljU3VydmV5S2V5ID0gJE1ENS0+aGV4ZGlnZXN0KCk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkUHVibGljU3VydmV5S2V5ID0gJFBhcmFte1B1YmxpY1N1cnZleUtleX07CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGZpbmQgbWFzdGVyIHN1cnZleQogICAgbXkgJFN0YXR1cyA9ICdNYXN0ZXInOwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgIEZST00gc3VydmV5CiAgICAgICAgICAgIFdIRVJFIHN0YXR1cyA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRTdGF0dXMgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRTdXJ2ZXlJRDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRTdXJ2ZXlJRCA9ICRSb3dbMF07CiAgICB9CgogICAgIyByZXR1cm4sIG5vIG1hc3RlciBzdXJ2ZXkgZm91bmQKICAgIHJldHVybiBpZiAhJFN1cnZleUlEOwoKICAgICMgZ2V0IHRoZSBzdXJ2ZXkKICAgIG15ICVTdXJ2ZXkgPSAkU2VsZi0+U3VydmV5R2V0KAogICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICk7CiAgICBteSAkU3ViamVjdCA9ICRTdXJ2ZXl7Tm90aWZpY2F0aW9uU3ViamVjdH07CiAgICBteSAkQm9keSAgICA9ICRTdXJ2ZXl7Tm90aWZpY2F0aW9uQm9keX07CgogICAgIyBmaXggbmV3IGxpbmVzCiAgICAkQm9keSA9fiBzLyhcblxyfFxyXHJcbnxcclxuKS9cbi9nOwoKICAgICMgZ2V0IHRpY2tldCBvYmplY3QKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgIyB0aWNrZXQgZGF0YQogICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKCiAgICAjIGNoZWNrIGlmIHRpY2tldCBpcyBpbiBhIHNlbmQgcXVldWUKICAgIGlmICggJFN1cnZleXtRdWV1ZXN9ICYmIHJlZiAkU3VydmV5e1F1ZXVlc30gZXEgJ0FSUkFZJyAmJiBAeyAkU3VydmV5e1F1ZXVlc30gfSApIHsKICAgICAgICBteSAkRm91bmQ7CgogICAgICAgIFFVRVVFOgogICAgICAgIGZvciBteSAkUXVldWVJRCAoIEB7ICRTdXJ2ZXl7UXVldWVzfSB9ICkgewogICAgICAgICAgICBuZXh0IFFVRVVFIGlmICRUaWNrZXR7UXVldWVJRH0gIT0gJFF1ZXVlSUQ7CiAgICAgICAgICAgICRGb3VuZCA9IDE7CiAgICAgICAgICAgIGxhc3QgUVVFVUU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJ1F1ZXVlJyBpZiAhJEZvdW5kOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgaWYgdGhlIGZvciBzZW5kIGNvbmRpdGlvbiB0aWNrZXQgdHlwZSBjaGVjayBpcyBlbmFibGVkCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJykgKSB7CgogICAgICAgICMgY2hlY2sgaWYgdGlja2V0IGlzIGluIGEgc2VuZCB0aWNrZXQgdHlwZSBpZAogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU3VydmV5e1RpY2tldFR5cGVJRHN9ICkgKSB7CgogICAgICAgICAgICByZXR1cm4gaWYgISRUaWNrZXR7VHlwZUlEfTsKCiAgICAgICAgICAgIG15ICRGb3VuZDsKCiAgICAgICAgICAgIFRJQ0tFVFRZUEU6CiAgICAgICAgICAgIGZvciBteSAkVGlja2V0VHlwZUlEICggQHsgJFN1cnZleXtUaWNrZXRUeXBlSURzfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBUSUNLRVRUWVBFIGlmICRUaWNrZXR7VHlwZUlEfSAhPSAkVGlja2V0VHlwZUlEOwogICAgICAgICAgICAgICAgJEZvdW5kID0gMTsKICAgICAgICAgICAgICAgIGxhc3QgVElDS0VUVFlQRTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICdUeXBlJyBpZiAhJEZvdW5kOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZSBzZW5kIGNvbmRpdGlvbiBzZXJ2aWNlIGNoZWNrIGlzIGVuYWJsZWQKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnKSApIHsKCiAgICAgICAgIyBjaGVjayBpZiB0aWNrZXQgaXMgaW4gYSBzZW5kIHNlcnZpY2UKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFN1cnZleXtTZXJ2aWNlSURzfSApICkgewoKICAgICAgICAgICAgcmV0dXJuIGlmICEkVGlja2V0e1NlcnZpY2VJRH07CgogICAgICAgICAgICBteSAkRm91bmQ7CgogICAgICAgICAgICBTRVJWSUNFOgogICAgICAgICAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIEB7ICRTdXJ2ZXl7U2VydmljZUlEc30gfSApIHsKICAgICAgICAgICAgICAgIG5leHQgU0VSVklDRSBpZiAkVGlja2V0e1NlcnZpY2VJRH0gIT0gJFNlcnZpY2VJRDsKICAgICAgICAgICAgICAgICRGb3VuZCA9IDE7CiAgICAgICAgICAgICAgICBsYXN0IFNFUlZJQ0U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAnU2VydmljZScgaWYgISRGb3VuZDsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUN1c3RvbWVyVXNlcjsKICAgIGlmICggJFRpY2tldHtDdXN0b21lclVzZXJJRH0gKSB7CiAgICAgICAgJUN1c3RvbWVyVXNlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKS0+Q3VzdG9tZXJVc2VyRGF0YUdldCgKICAgICAgICAgICAgVXNlciA9PiAkVGlja2V0e0N1c3RvbWVyVXNlcklEfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gaWYgJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OlNlbmRPbmx5VG9SZWFsQ3VzdG9tZXInKSAmJiAhJEN1c3RvbWVyVXNlcntVc2VyQ3VzdG9tZXJJRH07CiAgICB9CgogICAgIyBDaGVjayBpZiB0aGUgc2VuZCBjb25kaXRpb24gYnkgY3VzdG9tZXJ1c2VyIGZpZWxkcyBjaGVjayBpcyBlbmFibGVkLgogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uQ3VzdG9tZXJGaWVsZHMnKSApIHsKCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFN1cnZleXtDdXN0b21lclVzZXJDb25kaXRpb25zfSApICkgewoKICAgICAgICAgICAgIyBDaGVjayBpcyBhY3RpdmUgKyBkZWZpbmVkLCBidXQgdGhlcmUgaXMgbm8gY3VzdG9tZXIuCiAgICAgICAgICAgIHJldHVybiBpZiAhJFRpY2tldHtDdXN0b21lclVzZXJJRH07CgogICAgICAgICAgICBteSAkUmVzdWx0cyA9ICcnOwoKICAgICAgICAgICAgQVRUUklCVVRFOgogICAgICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIHNvcnQga2V5cyAleyAkU3VydmV5e0N1c3RvbWVyVXNlckNvbmRpdGlvbnN9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAhJEF0dHJpYnV0ZTsKCiAgICAgICAgICAgICAgICBteSBAQ29uZGl0aW9ucyA9IEB7ICRTdXJ2ZXl7Q3VzdG9tZXJVc2VyQ29uZGl0aW9uc30tPnskQXR0cmlidXRlfSB9OwogICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgaWYgIUBDb25kaXRpb25zOwoKICAgICAgICAgICAgICAgIG15ICRSZXN1bHQgPSAnJzsKCiAgICAgICAgICAgICAgICBDT05ESVRJT046CiAgICAgICAgICAgICAgICBmb3IgbXkgJENvbmRpdGlvbiAoQENvbmRpdGlvbnMpIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiAhJENvbmRpdGlvbjsKCiAgICAgICAgICAgICAgICAgICAgbXkgJFJlZ0V4cFZhbHVlID0gJENvbmRpdGlvbi0+e1JlZ0V4cFZhbHVlfTsKICAgICAgICAgICAgICAgICAgICBteSAkTmVnYXRpb24gICAgPSAkQ29uZGl0aW9uLT57TmVnYXRpb259OwoKICAgICAgICAgICAgICAgICAgICBteSAkSXNNYXRjaGVkID0gKCAkQ3VzdG9tZXJVc2VyeyRBdHRyaWJ1dGV9ID1+IG17JFJlZ0V4cFZhbHVlfWkgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCROZWdhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAkSXNNYXRjaGVkID0gISRJc01hdGNoZWQ7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIENvbWJpbmUgY29uZGl0aW9ucyBmb3IgdGhpcyBmaWVsZCBieSBPUi4KICAgICAgICAgICAgICAgICAgICBpZiAoJElzTWF0Y2hlZCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgJFJlc3VsdCAuPSAnMSB8fCAnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFJlc3VsdCAuPSAnMCB8fCAnOwoKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFJlc3VsdCA9IHN1YnN0ciAkUmVzdWx0LCAwLCAtNDsKCiAgICAgICAgICAgICAgICAjIENvbWJpbmUgYWxsIGNvbmRpdGlvbnMgYnkgQU5ELgogICAgICAgICAgICAgICAgJFJlc3VsdHMgLj0gIigke1Jlc3VsdH0pICYmICI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRSZXN1bHRzID0gc3Vic3RyICRSZXN1bHRzLCAwLCAtNDsKCiAgICAgICAgICAgICMgQmxvY2sgc3VydmV5IGVtYWlsIGlmIGNvbmRpdGlvbnMgZXZhbHVhdGVzIHRvIGZhbHNlLgogICAgICAgICAgICByZXR1cm4gaWYgIWV2YWwoJFJlc3VsdHMpOyAgICAjIyBubyBjcml0aWMKICAgICAgICB9CiAgICB9CgogICAgZm9yIG15ICREYXRhICggc29ydCBrZXlzICVUaWNrZXQgKSB7CiAgICAgICAgaWYgKCBkZWZpbmVkICRUaWNrZXR7JERhdGF9ICkgewogICAgICAgICAgICAkU3ViamVjdCA9fiBzLzxPVFJTX1RJQ0tFVF8kRGF0YT4vJFRpY2tldHskRGF0YX0vZ2k7CiAgICAgICAgICAgICRCb2R5ID1+IHMvPE9UUlNfVElDS0VUXyREYXRhPi8kVGlja2V0eyREYXRhfS9naTsKCiAgICAgICAgICAgICMgZmlsdGVyIGZvciBuZXcgcmljaCB0ZXh0IGNvbnRlbnQKICAgICAgICAgICAgJEJvZHkgPX4gcy8mbHQ7T1RSU19USUNLRVRfJERhdGEmZ3Q7LyRUaWNrZXR7JERhdGF9L2c7CiAgICAgICAgfQogICAgfQoKICAgICMgY2xlYW51cAogICAgJFN1YmplY3QgPX4gcy88T1RSU19USUNLRVRfLis/Pi8tL2dpOwogICAgJEJvZHkgPX4gcy88T1RSU19USUNLRVRfLis/Pi8tL2dpOwoKICAgICMgcmVwbGFjZSBjb25maWcgb3B0aW9ucwogICAgJFN1YmplY3QgPX4gc3s8T1RSU19DT05GSUdfKC4rPyk+fXskQ29uZmlnT2JqZWN0LT5HZXQoJDEpfWVneDsKICAgICRCb2R5ID1+IHN7PE9UUlNfQ09ORklHXyguKz8pPn17JENvbmZpZ09iamVjdC0+R2V0KCQxKX1lZ3g7CgogICAgIyBmaWx0ZXIgZm9yIG5ldyByaWNoIHRleHQgY29udGVudAogICAgJEJvZHkgPX4gc3smbHQ7T1RSU19DT05GSUdfKC4rPykmZ3Q7fXskQ29uZmlnT2JqZWN0LT5HZXQoJDEpfWVneDsKCiAgICAjIGNsZWFudXAKICAgICRTdWJqZWN0ID1+IHMvPE9UUlNfQ09ORklHXy4rPz4vLS9naTsKICAgICRCb2R5ID1+IHMvPE9UUlNfQ09ORklHXy4rPz4vLS9naTsKCiAgICAjIGZpbHRlciBmb3IgbmV3IHJpY2ggdGV4dCBjb250ZW50CiAgICAkQm9keSA9fiBzLyZsdDtPVFJTX0NPTkZJR18uKz8mZ3Q7Ly0vZ2k7CgogICAgIyBnZXQgY3VzdG9tZXIgZGF0YSBhbmQgcmVwbGFjZSBpdCB3aXRoIDxPVFJTX0NVU1RPTUVSX0RBVEFfLi4uCiAgICBpZiAoJUN1c3RvbWVyVXNlcikgewoKICAgICAgICAjIHJlcGxhY2UgY3VzdG9tZXIgc3R1ZmYgd2l0aCB0YWdzCiAgICAgICAgQ1VTVE9NRVI6CiAgICAgICAgZm9yIG15ICREYXRhICggc29ydCBrZXlzICVDdXN0b21lclVzZXIgKSB7CiAgICAgICAgICAgIG5leHQgQ1VTVE9NRVIgaWYgISRDdXN0b21lclVzZXJ7JERhdGF9OwoKICAgICAgICAgICAgJFN1YmplY3QgPX4gcy88T1RSU19DVVNUT01FUl9EQVRBXyREYXRhPi8kQ3VzdG9tZXJVc2VyeyREYXRhfS9naTsKICAgICAgICAgICAgJEJvZHkgPX4gcy88T1RSU19DVVNUT01FUl9EQVRBXyREYXRhPi8kQ3VzdG9tZXJVc2VyeyREYXRhfS9naTsKCiAgICAgICAgICAgICMgZmlsdGVyIGZvciBuZXcgcmljaCB0ZXh0IGNvbnRlbnQKICAgICAgICAgICAgJEJvZHkgPX4gcy8mbHQ7T1RSU19DVVNUT01FUl9EQVRBXyREYXRhJmd0Oy8kQ3VzdG9tZXJVc2VyeyREYXRhfS9naTsKICAgICAgICB9CiAgICB9CgogICAgIyBjbGVhbnVwIGFsbCBub3QgbmVlZGVkIDxPVFJTX0NVU1RPTUVSX0RBVEFfIHRhZ3MKICAgICRTdWJqZWN0ID1+IHMvPE9UUlNfQ1VTVE9NRVJfREFUQV8uKz8+Ly0vZ2k7CiAgICAkQm9keSA9fiBzLzxPVFJTX0NVU1RPTUVSX0RBVEFfLis/Pi8tL2dpOwoKICAgICMgZmlsdGVyIGZvciBuZXcgcmljaCB0ZXh0IGNvbnRlbnQKICAgICRCb2R5ID1+IHMvJmx0O09UUlNfQ1VTVE9NRVJfREFUQV8uKz8mZ3Q7Ly0vZ2k7CgogICAgIyByZXBsYWNlIGtleQogICAgJFN1YmplY3QgPX4gcy88T1RSU19QdWJsaWNTdXJ2ZXlLZXk+LyRQdWJsaWNTdXJ2ZXlLZXkvZ2k7CiAgICAkQm9keSA9fiBzLzxPVFJTX1B1YmxpY1N1cnZleUtleT4vJFB1YmxpY1N1cnZleUtleS9naTsKCiAgICAjIGZpbHRlciBmb3IgbmV3IHJpY2ggdGV4dCBjb250ZW50CiAgICAkQm9keSA9fiBzLyZsdDtPVFJTX1B1YmxpY1N1cnZleUtleSZndDsvJFB1YmxpY1N1cnZleUtleS9naTsKCiAgICAjIEdldCByZXF1ZXN0IHJlY2lwaWVudC4KICAgIG15ICRUbyA9ICRTZWxmLT5fR2V0UmVxdWVzdFJlY2lwaWVudCgKICAgICAgICBVc2VyRW1haWwgPT4gJEN1c3RvbWVyVXNlcntVc2VyRW1haWx9IC8vICcnLAogICAgICAgIFRpY2tldElEICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISRUbzsKCiAgICAjIGNoZWNrIGlmIG5vdCBzdXJ2ZXkgc2hvdWxkIGJlIHNlbmQKICAgIG15ICRTZW5kTm9TdXJ2ZXlSZWdFeHAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6U2VuZE5vU3VydmV5UmVnRXhwJyk7CgogICAgcmV0dXJuIGlmICRTZW5kTm9TdXJ2ZXlSZWdFeHAgJiYgJFRvID1+IC8kU2VuZE5vU3VydmV5UmVnRXhwL2k7CgogICAgIyBPbmx5IGlmIHdlIGhhdmVuJ3QgYmVlbiBjYWxsZWQgYnkgQ1JPTgogICAgaWYgKCAhJFBhcmFte1RyaWdnZXJTZW5kUmVxdWVzdHN9ICkgewogICAgICAgIG15ICRBbW91bnRPZlN1cnZleXNQZXIzMERheXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6QW1vdW50T2ZTdXJ2ZXlzUGVyMzBEYXlzJyk7CgogICAgICAgICMgaWYgd2Ugc2hvdWxkIGp1c3Qgc2VuZCBhIGNlcnRhaW4gYW1vdW50IG9mIHN1cnZleXMgcGVyIDMwIGRheXMgJiByZWNpcGllbnQKICAgICAgICBpZiAoJEFtb3VudE9mU3VydmV5c1BlcjMwRGF5cykgewoKICAgICAgICAgICAgIyBDcmVhdGUgYSBuZXcgRGF0ZVRpbWUgb2JqZWN0IChjdXJyZW50IHRpbWUpLgogICAgICAgICAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKCiAgICAgICAgICAgICMgRmluZCBhbGwgc3VydmV5cyB0aGF0IHdlcmUgY3JlYXRlZCBpbiB0aGUgbGFzdCAzMCBkYXlzCiAgICAgICAgICAgICREYXRlVGltZU9iamVjdC0+U3VidHJhY3QoCiAgICAgICAgICAgICAgICBEYXlzID0+IDMwLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkTGFzdFNlbnRUaW1lID0gMDsKCiAgICAgICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgICAgICBTRUxFQ1QgY3JlYXRlX3RpbWUKICAgICAgICAgICAgICAgICAgICBGUk9NIHN1cnZleV9yZXF1ZXN0CiAgICAgICAgICAgICAgICAgICAgV0hFUkUgTE9XRVIoc2VuZF90bykgPSA/CiAgICAgICAgICAgICAgICAgICAgICAgIEFORCBjcmVhdGVfdGltZSA+PSA/CiAgICAgICAgICAgICAgICAgICAgT1JERVIgQlkgY3JlYXRlX3RpbWUgREVTQycsCiAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCRUbywgXCREYXRlVGltZU9iamVjdC0+VG9TdHJpbmcoKSwgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgICAgICAgICBteSBAUm93czsKICAgICAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBSb3dzLCAkUm93WzBdOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIElmIHdlIGhhdmUgcmVhY2hlZCB0aGUgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyBwZXIgbW9udGgKICAgICAgICAgICAgaWYgKCBzY2FsYXIgQFJvd3MgPj0gJEFtb3VudE9mU3VydmV5c1BlcjMwRGF5cyApIHsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBhIHN1cnZleSBpcyBzZW50IGluIHRoZSBsYXN0IHRpbWUKICAgIG15ICRTZW5kUGVyaW9kID0gJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OlNlbmRQZXJpb2QnKTsKICAgIGlmICgkU2VuZFBlcmlvZCkgewogICAgICAgIG15ICRMYXN0U2VudERhdGVUaW1lOwoKICAgICAgICAjIGdldCBzZW5kIHRpbWUKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFNFTEVDVCBzZW5kX3RpbWUKICAgICAgICAgICAgICAgIEZST00gc3VydmV5X3JlcXVlc3QKICAgICAgICAgICAgICAgIFdIRVJFIExPV0VSKHNlbmRfdG8pID0gPwogICAgICAgICAgICAgICAgT1JERVIgQlkgc2VuZF90aW1lIERFU0MnLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkVG8gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgJExhc3RTZW50RGF0ZVRpbWUgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkUm93WzBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICgkTGFzdFNlbnREYXRlVGltZSkgewogICAgICAgICAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGFzdFNlbnREYXRlVGltZS0+QWRkKAogICAgICAgICAgICAgICAgU2Vjb25kcyA9PiAkU2VuZFBlcmlvZCAqIDI0ICogNjAgKiA2MCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiBpZiAkTGFzdFNlbnREYXRlVGltZSA+ICREYXRlVGltZU9iamVjdDsKICAgICAgICB9CiAgICB9CiAgICBteSAkU2VuZEluSG91cnNBZnRlckNsb3NlID0gJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OlNlbmRJbkhvdXJzQWZ0ZXJDbG9zZScpOwoKICAgICMgSWYgbm8gRGVsYXllZCBTZW5kaW5nIGlzIGNvbmZpZ3VyZWQKICAgICMgc2VuZCBpbW1lZGlhdGVseSwgbG9nIGl0IHRvIFRpY2tldCBIaXN0b3J5IGFuZCBpbnNlcnQgaXQgdG8gc3VydmV5X3JlcXVlc3RzCiAgICAjIGluY2x1ZGluZyBzZW50X3RpbWUKICAgIGlmICggISRTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UgJiYgISRQYXJhbXtUcmlnZ2VyU2VuZFJlcXVlc3RzfSApIHsKCiAgICAgICAgIyBpbnNlcnQgcmVxdWVzdAogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIElOU0VSVCBJTlRPIHN1cnZleV9yZXF1ZXN0ICh0aWNrZXRfaWQsIHN1cnZleV9pZCwgdmFsaWRfaWQsIHB1YmxpY19zdXJ2ZXlfa2V5LAogICAgICAgICAgICAgICAgICAgIHNlbmRfdG8sIHNlbmRfdGltZSwgY3JlYXRlX3RpbWUpCiAgICAgICAgICAgICAgICBWQUxVRVMgKD8sID8sIDEsID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCBjdXJyZW50X3RpbWVzdGFtcCknLAogICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtUaWNrZXRJRH0sIFwkU3VydmV5SUQsIFwkUHVibGljU3VydmV5S2V5LCBcJFRvIF0sCiAgICAgICAgKTsKCiAgICAgICAgIyBsb2cgYWN0aW9uIG9uIHRpY2tldAogICAgICAgICRUaWNrZXRPYmplY3QtPkhpc3RvcnlBZGQoCiAgICAgICAgICAgIFRpY2tldElEICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBDcmVhdGVVc2VySUQgPT4gMSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdNaXNjJywKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICJTZW50IGN1c3RvbWVyIHN1cnZleSB0byAnJFRvJy4iLAogICAgICAgICk7CiAgICB9CgogICAgIyBJZiB3ZSBzaG91bGQgc2VuZCBkZWxheWVkIGp1c3QgQ1JPTiBqb2JzIGRlbGl2ZXIgIlRyaWdnZXJTZW5kUmVxdWVzdHMiLAogICAgIyBzbyB3ZSB3ZXJlIGNhbGxlZCBieSBhIGNsb3NlZCB0aWNrZXQKICAgICMgYW5kIGhhdmUgdG8gY3JlYXRlIHRoZSBzdXJ2ZXlfcmVxdWVzdCByZWNvcmQgd2l0aCBubyBzZW5kX3RpbWUKICAgICMgKHdpbGwgYmUgZmlsbGVkIGluIGJ5IENST04gam9iIGFzIHNvb24gYXMgaXQgcmVhbGx5IGdvdCBkZWxpdmVyZWQpCiAgICAjIGFkZGl0aW9uYWxseSBubyBUaWNrZXQgSGlzdG9yeSB5ZXQsIGNhdXNlIG5vIHNlbmQgaGFzIGhhcHBlbmVkCiAgICBlbHNpZiAoICRTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UgJiYgISRQYXJhbXtUcmlnZ2VyU2VuZFJlcXVlc3RzfSApIHsKCiAgICAgICAgIyBpbnNlcnQgcmVxdWVzdAogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIElOU0VSVCBJTlRPIHN1cnZleV9yZXF1ZXN0ICh0aWNrZXRfaWQsIHN1cnZleV9pZCwgdmFsaWRfaWQsIHB1YmxpY19zdXJ2ZXlfa2V5LAogICAgICAgICAgICAgICAgICAgIHNlbmRfdG8sIGNyZWF0ZV90aW1lKQogICAgICAgICAgICAgICAgVkFMVUVTICg/LCA/LCAxLCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCknLAogICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtUaWNrZXRJRH0sIFwkU3VydmV5SUQsIFwkUHVibGljU3VydmV5S2V5LCBcJFRvLCBdLAogICAgICAgICk7CgogICAgfQoKICAgICMgaGVyZSB3ZSBnb3QgY2FsbGVkIGJ5IENST04sIGFuZCBubyBtYXR0ZXIgaWYgU2VuZEluSG91cnNBZnRlckNsb3NlIGlzIGNvbmZpZ3VyZWQKICAgICMgb3Igbm90LCB3ZSBoYXZlIHRvIHNlbmQgdGhlIHN1cnZleSByZXF1ZXN0cyB0aGF0IHdlcmVuJ3Qgc2VudCB5ZXQKICAgICMgdGhpcyB0aW1lIHdlIGhhdmUgdG8gdXBkYXRlIHRoZSBzdXJ2ZXlfcmVxdWVzdCBsaW5lCiAgICAjIHRvIGZpbGwgaW4gdGhlIHNlbmRfdGltZSBhbmQgY3JlYXRlIHRoZSBUaWNrZXQgSGlzdG9yeSBlbnRyeQogICAgZWxzaWYgKAogICAgICAgICRQYXJhbXtUcmlnZ2VyU2VuZFJlcXVlc3RzfQogICAgICAgICYmICRQYXJhbXtTdXJ2ZXlSZXF1ZXN0SUR9CiAgICAgICAgJiYgJFBhcmFte1N1cnZleVJlcXVlc3RJRH0gPX4gL15cZCskLwogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICBVUERBVEUgc3VydmV5X3JlcXVlc3QKICAgICAgICAgICAgICAgIFNFVCBzZW5kX3RpbWUgPSBjdXJyZW50X3RpbWVzdGFtcAogICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17U3VydmV5UmVxdWVzdElEfSBdLAogICAgICAgICk7CgogICAgICAgICMgbG9nIGFjdGlvbiBvbiB0aWNrZXQKICAgICAgICAkVGlja2V0T2JqZWN0LT5IaXN0b3J5QWRkKAogICAgICAgICAgICBUaWNrZXRJRCAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgQ3JlYXRlVXNlcklEID0+IDEsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICA9PiAnTWlzYycsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAiU2VudCBjdXN0b21lciBzdXJ2ZXkgdG8gJyRUbycuIiwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNoYXJzZXQKICAgIG15ICRDaGFyc2V0ID0gJENvbmZpZ09iamVjdC0+R2V0KCdEZWZhdWx0Q2hhcnNldCcpIHx8ICd1dGYtOCc7CgogICAgIyBnZXQgSFRNTFV0aWxzIG9iamVjdAogICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKCiAgICAjIGNsZWFuIEhUTUwgYW5kIGNvbnZlcnQgdGhlIEZpZWxkIGluIEhUTUwgKFxuIC0tPjxicj4pCiAgICAkQm9keSA9fiBze1xBXCRodG1sXC90ZXh0XCRccyguKil9eyQxfXhtczsKICAgIGlmICggISQxICkgewoKICAgICAgICAjIGNvbnZlcnQgYm9keSB0byBIVE1MCiAgICAgICAgJEJvZHkgPSAkSFRNTFV0aWxzT2JqZWN0LT5Ub0hUTUwoCiAgICAgICAgICAgIFN0cmluZyA9PiAkQm9keSwKICAgICAgICApOwogICAgfQoKICAgICMgcHJlcGFyZSBIVE1MIGxpbmtzCiAgICAkSFRNTFV0aWxzT2JqZWN0LT5MaW5rUXVvdGUoCiAgICAgICAgU3RyaW5nID0+IFwkQm9keSwKICAgICk7CgogICAgIyBjb21wbGV0ZSBIVE1MIGRvY3VtZW50CiAgICAkQm9keSA9ICRIVE1MVXRpbHNPYmplY3QtPkRvY3VtZW50Q29tcGxldGUoCiAgICAgICAgU3RyaW5nICA9PiAkQm9keSwKICAgICAgICBDaGFyc2V0ID0+ICRDaGFyc2V0LAogICAgKTsKCiAgICAjIHNlbmQgc3VydmV5CiAgICBpZiAoICEkU2VuZEluSG91cnNBZnRlckNsb3NlIHx8ICRQYXJhbXtUcmlnZ2VyU2VuZFJlcXVlc3RzfSApIHsKICAgICAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkVtYWlsJyktPlNlbmQoCiAgICAgICAgICAgIEZyb20gICAgID0+ICRTdXJ2ZXl7Tm90aWZpY2F0aW9uU2VuZGVyfSwKICAgICAgICAgICAgVG8gICAgICAgPT4gJFRvLAogICAgICAgICAgICBTdWJqZWN0ICA9PiAkU3ViamVjdCwKICAgICAgICAgICAgTWltZVR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENoYXJzZXQgID0+ICRDaGFyc2V0LAogICAgICAgICAgICBCb2R5ICAgICA9PiAkQm9keSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgUmVxdWVzdENvdW50KCkKCnRvIGNvdW50IGFsbCByZXF1ZXN0cyBvZiBhIHN1cnZleQoKICAgIG15ICRSZXF1ZXN0Q291bnQgPSAkU3VydmV5T2JqZWN0LT5SZXF1ZXN0Q291bnQoCiAgICAgICAgUXVlc3Rpb25JRCA9PiAxMjMsCiAgICAgICAgVmFsaWRJRCA9PiAwLCAgICAgICAjICgwfDF8YWxsKQogICAgKTsKCj1jdXQKCnN1YiBSZXF1ZXN0Q291bnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoU3VydmV5SUQgVmFsaWRJRCkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNvdW50IHJlcXVlc3RzCiAgICBteSAkU1FMID0gJwogICAgICAgIFNFTEVDVCBDT1VOVChpZCkKICAgICAgICBGUk9NIHN1cnZleV9yZXF1ZXN0CiAgICAgICAgV0hFUkUgc3VydmV5X2lkID0gPyc7CgogICAgIyBhZGQgdmFsaWQgcGFydAogICAgaWYgKCAhJFBhcmFte1ZhbGlkSUR9ICkgewogICAgICAgICRTUUwgLj0gIiBBTkQgdmFsaWRfaWQgPSAwIjsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte1ZhbGlkSUR9IGVxIDEgKSB7CiAgICAgICAgJFNRTCAuPSAiIEFORCB2YWxpZF9pZCA9IDEiOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBhc2sgZGF0YWJhc2UKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1N1cnZleUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFJlcXVlc3RDb3VudDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRSZXF1ZXN0Q291bnQgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAkUmVxdWVzdENvdW50Owp9Cgo9aGVhZDIgUmVxdWVzdERlbGV0ZSgpCgpkZWxldGUgcmVxdWVzdCBieSBpZAoKICAgIG15ICRWb3RlRGVsZXRlID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdERlbGV0ZSgKICAgICAgICBSZXF1ZXN0SUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBSZXF1ZXN0RGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFJlcXVlc3RJRCkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGNvdW50IHZvdGVzCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMICAgPT4gJ0RFTEVURSBGUk9NIHN1cnZleV9yZXF1ZXN0IFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1JlcXVlc3RJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWJlZ2luIEludGVybmFsOgoKPWhlYWQyIF9HZXRSZXF1ZXN0UmVjaXBpZW50KCkKCkV4dHJhY3RzIGFuZCBjaGVja3MgdGhlIHJlY2lwaWVudCBmb3IgdGhlIHJlcXVlc3QuCgogICAgbXkgJFJlY2lwaWVudCA9ICRTdXJ2ZXlPYmplY3QtPl9HZXRSZXF1ZXN0UmVjaXBpZW50KAogICAgICAgIFVzZXJFbWFpbCA9PiAnVXNlciA8dXNlckBleGFtcGxlLmNvbT4nLCAgICAgIyBvcHRpb25hbAogICAgICAgIFRpY2tldElEICA9PiAxMjMsICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKQoKUmV0dXJuczoKCiAgICAkUmVjaXBpZW50ID0gJ3VzZXJAZXhhbXBsZS5jb20nOyAgICAjIG9yIGZhbHNlIGluIGNhc2Ugb2YgYW4gZXJyb3IuCgo9Y3V0CgpzdWIgX0dldFJlcXVlc3RSZWNpcGllbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJFbWFpbH0gJiYgISRQYXJhbXtUaWNrZXRJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJFbWFpbCBvciBUaWNrZXRJRCIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRUb1N0cmluZyA9ICRQYXJhbXtVc2VyRW1haWx9OwoKICAgIGlmICggISRUb1N0cmluZyApIHsKICAgICAgICBteSAkQXJ0aWNsZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKTsKCiAgICAgICAgIyBTaW5jZSB3ZSBjYW4ndCBmaWx0ZXIgYnkgbXVsdGlwbGUgQ2hhbm5lbHMsIHdlIG5lZWQgdG8gZ2V0IGFsbCBhcnRpY2xlcyB2aXNpYmxlIHRvIHRoZSBjdXN0b21lci4KICAgICAgICBteSBAQXJ0aWNsZXMgPSAkQXJ0aWNsZU9iamVjdC0+QXJ0aWNsZUxpc3QoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJENvbW11bmljYXRpb25DaGFubmVsT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbW11bmljYXRpb25DaGFubmVsJyk7CgogICAgICAgIG15IEBNSU1FQmFzZUNoYW5uZWxJRHM7CiAgICAgICAgZm9yIG15ICRDaGFubmVsIChxdyhFbWFpbCBJbnRlcm5hbCBQaG9uZSkpIHsKICAgICAgICAgICAgbXkgJUNvbW11bmljYXRpb25DaGFubmVsID0gJENvbW11bmljYXRpb25DaGFubmVsT2JqZWN0LT5DaGFubmVsR2V0KAogICAgICAgICAgICAgICAgQ2hhbm5lbE5hbWUgPT4gJENoYW5uZWwsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQE1JTUVCYXNlQ2hhbm5lbElEcywgJENvbW11bmljYXRpb25DaGFubmVse0NoYW5uZWxJRH07CiAgICAgICAgfQoKICAgICAgICAjIEZpbHRlciBhcnRpY2xlcyB0aGF0IGFyZSBNSU1FQmFzZSBvbmx5LgogICAgICAgIG15IEBNSU1FQmFzZUFydGljbGVzOwogICAgICAgIGZvciBteSAkQXJ0aWNsZSAoQEFydGljbGVzKSB7CiAgICAgICAgICAgIGlmICggZ3JlcCB7ICRBcnRpY2xlLT57Q29tbXVuaWNhdGlvbkNoYW5uZWxJRH0gPT0gJF8gfSBATUlNRUJhc2VDaGFubmVsSURzICkgewogICAgICAgICAgICAgICAgcHVzaCBATUlNRUJhc2VBcnRpY2xlcywgJEFydGljbGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRmluZCBsYXN0IGFydGljbGUgdmlzaWJsZSBmb3IgY3VzdG9tZXIgdGhhdCBoYXMgRnJvbS9UbyBmaWVsZC4KICAgICAgICBTRU5ERVJfVFlQRToKICAgICAgICBmb3IgbXkgJFNlbmRlclR5cGUgKHF3KGN1c3RvbWVyIGFnZW50KSkgewoKICAgICAgICAgICAgIyBDaGVjayBmb3IgYXJ0aWNsZXMgY3JlYXRlZCBieSBjdXN0b21lcgogICAgICAgICAgICBteSAkU2VuZGVyVHlwZUlEID0gJEFydGljbGVPYmplY3QtPkFydGljbGVTZW5kZXJUeXBlTG9va3VwKAogICAgICAgICAgICAgICAgU2VuZGVyVHlwZSA9PiAkU2VuZGVyVHlwZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIEFSVElDTEU6CiAgICAgICAgICAgIGZvciBteSAkQXJ0aWNsZSAoIHJldmVyc2UgQE1JTUVCYXNlQXJ0aWNsZXMgKSB7CiAgICAgICAgICAgICAgICBpZiAoICRBcnRpY2xlLT57U2VuZGVyVHlwZUlEfSA9PSAkU2VuZGVyVHlwZUlEICkgewogICAgICAgICAgICAgICAgICAgIG15ICRBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRBcnRpY2xlT2JqZWN0LT5CYWNrZW5kRm9yQXJ0aWNsZSgKICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEFydGljbGVJRCA9PiAkQXJ0aWNsZS0+e0FydGljbGVJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJUFydGljbGVEYXRhID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRBcnRpY2xlLT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZW5kZXJUeXBlIGVxICdjdXN0b21lcicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUb1N0cmluZyA9ICRBcnRpY2xlRGF0YXtGcm9tfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUb1N0cmluZyA9ICRBcnRpY2xlRGF0YXtUb307CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBsYXN0IFNFTkRFUl9UWVBFIGlmICRUb1N0cmluZzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHBhcnNlIHRoZSB0byBzdHJpbmcKICAgIG15ICRUbzsKICAgIGZvciBteSAkVG9QYXJzZXIgKCBNYWlsOjpBZGRyZXNzLT5wYXJzZSgkVG9TdHJpbmcpICkgewogICAgICAgICRUbyA9ICRUb1BhcnNlci0+YWRkcmVzcygpOwogICAgfQoKICAgICMgcmV0dXJuIGlmIG5vIHRvIGlzIGZvdW5kCiAgICByZXR1cm4gaWYgISRUbzsKCiAgICAjIGNoZWNrIGlmIGl0J3MgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIChtaW4gaXMgbmVlZGVkKQogICAgcmV0dXJuIGlmICRUbyAhfiAvQC87CgogICAgbXkgJFZhbGlkRW1haWwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2hlY2tJdGVtJyktPkNoZWNrRW1haWwoCiAgICAgICAgQWRkcmVzcyA9PiAkVG8sCiAgICApOwogICAgcmV0dXJuIGlmICEkVmFsaWRFbWFpbDsKCiAgICAjIGNvbnZlcnQgdG8gbG93ZXIgY2FzZXMKICAgICRUbyA9IGxjICRUbzsKCiAgICAjIGNoZWNrIHJlY2lwaWVudCBibGFja2xpc3QKICAgIG15ICRSZWNpcGllbnRCbGFja2xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1N1cnZleTo6Tm90aWZpY2F0aW9uUmVjaXBpZW50QmxhY2tsaXN0Jyk7CiAgICBpZiAoCiAgICAgICAgZGVmaW5lZCAkUmVjaXBpZW50QmxhY2tsaXN0CiAgICAgICAgJiYgcmVmICRSZWNpcGllbnRCbGFja2xpc3QgZXEgJ0FSUkFZJwogICAgICAgICYmIEB7JFJlY2lwaWVudEJsYWNrbGlzdH0KICAgICAgICApCiAgICB7CiAgICAgICAgZm9yIG15ICRSZWNpcGllbnQgKCBAeyRSZWNpcGllbnRCbGFja2xpc3R9ICkgewogICAgICAgICAgICByZXR1cm4gaWYgZGVmaW5lZCAkUmVjaXBpZW50ICYmIGxlbmd0aCAkUmVjaXBpZW50ICYmICRUbyBlcSBsYyAkUmVjaXBpZW50OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFRvOwp9CgoxOwoKPWVuZCBJbnRlcm5hbDoKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OlZvdGU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlN1cnZleTo6Vm90ZSAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OlN1cnZleQoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgc3VydmV5IHZvdGUgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBWb3RlR2V0KCkKCnRvIGdldCBhbGwgYXR0cmlidXRlcyBvZiBhIHZvdGUKCiAgICBteSBAVm90ZSA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVHZXQoCiAgICAgICAgUmVxdWVzdElEID0+IDEzLAogICAgICAgIFF1ZXN0aW9uSUQgPT4gMjMKICAgICk7CgpyZXR1cm5zOgoKICAgIEBWb3RlID0gKAogICAgICAgIHsKICAgICAgICAgICAgUmVxdWVzdElEID0+IDEyMywKICAgICAgICAgICAgVm90ZVZhbHVlID0+ICdZZXMnLAogICAgICAgIH0sCiAgICAgICAgLi4uCiAgICApOwoKPWN1dAoKc3ViIFZvdGVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoUmVxdWVzdElEIFF1ZXN0aW9uSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IHZvdGUKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgdm90ZV92YWx1ZQogICAgICAgICAgICBGUk9NIHN1cnZleV92b3RlCiAgICAgICAgICAgIFdIRVJFIHJlcXVlc3RfaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgcXVlc3Rpb25faWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtSZXF1ZXN0SUR9LCBcJFBhcmFte1F1ZXN0aW9uSUR9LCBdLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgbXkgJURhdGE7CiAgICAgICAgJERhdGF7UmVxdWVzdElEfSA9ICRSb3dbMF07CiAgICAgICAgJERhdGF7Vm90ZVZhbHVlfSA9ICRSb3dbMV0gfHwgJy0nOwoKICAgICAgICBwdXNoIEBMaXN0LCBcJURhdGE7CiAgICB9CgogICAgcmV0dXJuIEBMaXN0Owp9Cgo9aGVhZDIgVm90ZUxpc3QoKQoKdG8gZ2V0IGEgYXJyYXkgbGlzdCBvZiBhbGwgdm90ZSBpdGVtcwoKICAgIG15IEBMaXN0ID0gJFN1cnZleU9iamVjdC0+Vm90ZUxpc3QoCiAgICAgICAgU3VydmV5SUQgPT4gMQogICAgKTsKCnJldHVybnM6CgogICAgQExpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBSZXF1ZXN0SUQgPT4gMTIzLAogICAgICAgICAgICBUaWNrZXRJRCAgPT4gMTIzLAogICAgICAgICAgICBTZW5kVGltZSAgPT4gJzIwMTctMDEtMDEgMTI6MDA6MDAnLAogICAgICAgICAgICBWb3RlVGltZSAgPT4gJzIwMTctMDEtMDIgMTI6MDA6MDAnLAogICAgICAgIH0sCiAgICAgICAgLi4uCiAgICApOwoKPWN1dAoKc3ViIFZvdGVMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtTdXJ2ZXlJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFN1cnZleUlEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgdm90ZSBsaXN0CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQsIHRpY2tldF9pZCwgc2VuZF90aW1lLCB2b3RlX3RpbWUKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcmVxdWVzdAogICAgICAgICAgICBXSEVSRSBzdXJ2ZXlfaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgdmFsaWRfaWQgPSAwCiAgICAgICAgICAgIE9SREVSIEJZIHZvdGVfdGltZSBERVNDJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtTdXJ2ZXlJRH0gXSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSBATGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIG15ICVEYXRhOwogICAgICAgICREYXRhe1JlcXVlc3RJRH0gPSAkUm93WzBdOwogICAgICAgICREYXRhe1RpY2tldElEfSAgPSAkUm93WzFdOwogICAgICAgICREYXRhe1NlbmRUaW1lfSAgPSAkUm93WzJdOwogICAgICAgICREYXRhe1ZvdGVUaW1lfSAgPSAkUm93WzNdOwoKICAgICAgICBwdXNoIEBMaXN0LCBcJURhdGE7CiAgICB9CgogICAgcmV0dXJuIEBMaXN0Owp9Cgo9aGVhZDIgVm90ZUF0dHJpYnV0ZUdldCgpCgp0byBnZXQgYWxsIGF0dHJpYnV0ZXMgb2YgYSB2b3RlCgogICAgbXkgJFZvdGVBdHRyaWJ1dGVDb250ZW50ID0gJFN1cnZleU9iamVjdC0+Vm90ZUF0dHJpYnV0ZUdldCgKICAgICAgICBWb3RlSUQgPT4gMTMsCiAgICApOwoKcmV0dXJuczoKICAgICRWb3RlQXR0cmlidXRlQ29udGVudCA9ICdZZXMnOwoKPWN1dAoKc3ViIFZvdGVBdHRyaWJ1dGVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVm90ZUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCB2b3RlIGF0dHJpYnV0ZQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIHZvdGVfdmFsdWUKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfdm90ZQogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtWb3RlSUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkVm90ZUF0dHJpYnV0ZUNvbnRlbnQgPSAkeyAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSB9WzBdOwoKICAgIHJldHVybiAkVm90ZUF0dHJpYnV0ZUNvbnRlbnQ7Cn0KCj1oZWFkMiBWb3RlQ291bnQoKQoKdG8gY291bnQgYWxsIHZvdGVzIG9mIGEgc3VydmV5CgogICAgbXkgJFZvdGVDb3VudCA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVDb3VudCgKICAgICAgICBRdWVzdGlvbklEID0+IDEyMywKICAgICAgICBWb3RlVmFsdWUgPT4gJ1RoZSBWYWx1ZScsCiAgICApOwoKPWN1dAoKc3ViIFZvdGVDb3VudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhRdWVzdGlvbklEIFZvdGVWYWx1ZSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGNvdW50IHZvdGVzCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgQ09VTlQodm90ZV92YWx1ZSkKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfdm90ZQogICAgICAgICAgICBXSEVSRSBxdWVzdGlvbl9pZCA9ID8gQU5EIHZvdGVfdmFsdWUgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17UXVlc3Rpb25JRH0sIFwkUGFyYW17Vm90ZVZhbHVlfSwgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRWb3RlQ291bnQ7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkVm90ZUNvdW50ID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gJFZvdGVDb3VudDsKfQoKPWhlYWQyIFZvdGVEZWxldGUoKQoKZGVsZXRlIHZvdGUgYnkgcmVxdWVzdCBpZAoKICAgIG15ICRWb3RlRGVsZXRlID0gJFN1cnZleU9iamVjdC0+Vm90ZURlbGV0ZSgKICAgICAgICBSZXF1ZXN0SUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBWb3RlRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFJlcXVlc3RJRCkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGNvdW50IHZvdGVzCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMICAgPT4gJ0RFTEVURSBGUk9NIHN1cnZleV92b3RlIFdIRVJFIHJlcXVlc3RfaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17UmVxdWVzdElEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpTdXJ2ZXlTZW5kUmVxdWVzdDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoRXZlbnQgQ29uZmlnKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBpZiAoICEkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFRpY2tldElEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgbG9vcCBQcm90ZWN0aW9uLCBSZXF1ZXN0U2VuZCBjYWxscyBIaXN0b3J5QWRkCiAgICAjIHNvIHdlIGNhbid0IGxpc3RlbiBvbiBIaXN0b3J5QWRkIEV2ZW50cyBpbiBvcmRlciB0bwogICAgIyBwcmV2ZW50IGRlZXAgcmVjdXJzaW9uCiAgICByZXR1cm4gMSBpZiAkUGFyYW17RXZlbnR9IGVxICdIaXN0b3J5QWRkJzsKCiAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgICMgZ2V0IHRpY2tldCBkYXRhCiAgICBteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtEYXRhfXtUaWNrZXRJRH0sCiAgICApOwoKICAgIHJldHVybiAxIGlmICRUaWNrZXR7U3RhdGVUeXBlfSBuZSAnY2xvc2VkJzsKCiAgICAjIHNlbmQgYWxzbyBzdXJ2ZXkgcmVxdWVzdCBvbiB0aWNrZXQgY3JlYXRpb24gKG9uIGZpcnN0IGFydGljbGUpCiAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgJ0FydGljbGVDcmVhdGUnICkgewoKICAgICAgICBteSBAQXJ0aWNsZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyktPkFydGljbGVMaXN0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17RGF0YX17VGlja2V0SUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAxIGlmIHNjYWxhciBAQXJ0aWNsZXMgIT0gMTsKICAgIH0KCiAgICAjIHNlbmQgcmVxdWVzdAogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpLT5SZXF1ZXN0U2VuZCgKICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IG5lZWRlZCBvYmplY3RzCm15ICREQk9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKbXkgJFN1cnZleU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7Cm15ICRUaWNrZXRPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpteSAkQ29tbWFuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6U3VydmV5OjpSZXF1ZXN0c0RlbGV0ZScpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBnZXQgcmFuZG9tCm15ICRSYW5kb21OYW1lID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKSAuICdfdGVzdHVzZXInOwoKIyBzZXQgY29uZmlnCiRDb25maWdPYmplY3QtPlNldCgKICAgIFZhbGlkID0+IDEsCiAgICBLZXkgICA9PiAnU3VydmV5OjpEZWxldGVQZXJpb2QnLAogICAgVmFsdWUgPT4gNTAsICAgICAgICAgICAgICAgICAgICAgICAjIG9sZGVyIDUwIGRheXMKKTsKCiMgY3JlYXRlIHRpY2tldApteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0X1RpdGxlJywKICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgU3RhdGUgICAgICAgID0+ICdjbG9zZWQgc3VjY2Vzc2Z1bCcsCiAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICBDdXN0b21lclVzZXIgPT4gJ3VuaXR0ZXN0QG90cnMuY29tJywKICAgIE93bmVySUQgICAgICA9PiAxLAogICAgVXNlcklEICAgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFRpY2tldElELAogICAgJ1RpY2tldENyZWF0ZSgpJywKKTsKCiMgYWRkIHN1cnZleQpteSAkU3VydmV5SUQgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlBZGQoCiAgICBVc2VySUQgICAgICAgICAgICAgID0+IDEsCiAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICdBIFRpdGxlJywKICAgIEludHJvZHVjdGlvbiAgICAgICAgPT4gJ1RoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIHN1cnZleScsCiAgICBEZXNjcmlwdGlvbiAgICAgICAgID0+ICdUaGUgaW50ZXJuYWwgZGVzY3JpcHRpb24gb2YgdGhlIHN1cnZleScsCiAgICBOb3RpZmljYXRpb25TZW5kZXIgID0+ICdxdWFsaXR5QGV4YW1wbGUuY29tJywKICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJ0hlbHAgdXMgd2l0aCB5b3VyIGZlZWRiYWNrIScsCiAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdEZWFyIGN1c3RvbWVyLi4uJywKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VydmV5SUQsCiAgICAnU3VydmV5QWRkKCknLAopOwoKIyBhZGQgcXVlc3Rpb24KbXkgJFF1ZXN0aW9uSUQgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkFkZCgKICAgIFVzZXJJRCAgICAgICAgID0+IDEsCiAgICBTdXJ2ZXlJRCAgICAgICA9PiAkU3VydmV5SUQsCiAgICBRdWVzdGlvbiAgICAgICA9PiAnVGhlIFF1ZXN0aW9uJywKICAgIEFuc3dlclJlcXVpcmVkID0+IDEsCiAgICBUeXBlICAgICAgICAgICA9PiAnUmFkaW8nLAopOwokU2VsZi0+VHJ1ZSgKICAgICRRdWVzdGlvbklELAogICAgJ1F1ZXN0aW9uQWRkKCknLAopOwoKbXkgJE9sZGVyRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKJE9sZGVyRGF0ZVRpbWVPYmplY3QtPlN1YnRyYWN0KAogICAgRGF5cyA9PiA1MCwKKTsKJE9sZGVyRGF0ZVRpbWVPYmplY3QtPlNldCgKICAgIEhvdXIgICA9PiAnMjMnLAogICAgTWludXRlID0+ICc1OScsCiAgICBTZWNvbmQgPT4gJzU5JywKKTsKCm15ICRSZXF1ZXN0Q3JlYXRlVGltZU9sZGVyRGF0ZSA9ICRPbGRlckRhdGVUaW1lT2JqZWN0LT5Ub1N0cmluZygpOwoKIyBhZGQgcmVxdWVzdHMKZm9yICggMSAuLi4gMTAgKSB7CgogICAgIyBpbnNlcnQgZGF0YQogICAgbXkgJEluc2VydFJlcXVlc3RzID0gJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBzdXJ2ZXlfcmVxdWVzdCAodGlja2V0X2lkLCBzdXJ2ZXlfaWQsIHZhbGlkX2lkLCBwdWJsaWNfc3VydmV5X2tleSwKICAgICAgICAgICAgICAgIHNlbmRfdG8sIHNlbmRfdGltZSwgdm90ZV90aW1lLCBjcmVhdGVfdGltZSkKICAgICAgICAgICAgVkFMVUVTICg/LCA/LCAxLCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsgXCRUaWNrZXRJRCwgXCRTdXJ2ZXlJRCwgXCRIZWxwZXItPkdldFJhbmRvbUlEKCksIFwkUmFuZG9tTmFtZSwgXCRSZXF1ZXN0Q3JlYXRlVGltZU9sZGVyRGF0ZSBdLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRJbnNlcnRSZXF1ZXN0cywKICAgICAgICAiU3VydmV5IHJlcXVlc3RzIGFkZGVkLiIsCiAgICApOwp9CgojIGluaXQgcmVxdWVzdCBpZCBhcnJheQojIHNlbGVjdCBsYXRlc3QgcmVxdWVzdCBpZHMKbXkgQFJlcXVlc3RJRHM7CgokREJPYmplY3QtPlByZXBhcmUoCiAgICBTUUwgPT4gIlNFTEVDVCBpZCBGUk9NIHN1cnZleV9yZXF1ZXN0IFdIRVJFIGNyZWF0ZV90aW1lID0gJyRSZXF1ZXN0Q3JlYXRlVGltZU9sZGVyRGF0ZScgIiwKKTsKCndoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgcHVzaCBAUmVxdWVzdElEcywgJFJvd1swXTsKfQoKZm9yIG15ICRSZXF1ZXN0SUQgKEBSZXF1ZXN0SURzKSB7CgogICAgIyBpbnNlcnQgZGF0YQogICAgbXkgJEluc2VydFZvdGVzID0gJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBzdXJ2ZXlfdm90ZSAocmVxdWVzdF9pZCwgcXVlc3Rpb25faWQsIHZvdGVfdmFsdWUsIGNyZWF0ZV90aW1lKQogICAgICAgICAgICBWQUxVRVMgKD8sID8sIDEsID8pJywKICAgICAgICBCaW5kID0+IFsgXCRSZXF1ZXN0SUQsIFwkUXVlc3Rpb25JRCwgXCRSZXF1ZXN0Q3JlYXRlVGltZU9sZGVyRGF0ZSBdLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRJbnNlcnRWb3RlcywKICAgICAgICAiU3VydmV5IHZvdGVzIGFkZGVkLiIsCiAgICApOwp9CgojIGluaXQgdm90ZSBpZCBhcnJheQojIHNlbGVjdCBsYXRlc3Qgdm90ZSBpZHMKbXkgQFZvdGVJRHM7CgokREJPYmplY3QtPlByZXBhcmUoCiAgICBTUUwgPT4gIlNFTEVDVCBpZCBGUk9NIHN1cnZleV92b3RlIFdIRVJFIGNyZWF0ZV90aW1lID0gJyRSZXF1ZXN0Q3JlYXRlVGltZU9sZGVyRGF0ZScgIiwKKTsKCndoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgcHVzaCBAVm90ZUlEcywgJFJvd1swXTsKfQoKIyBzdG9yZSBpZHMKbXkgJURlbGV0ZWRJRHMgPSAoCiAgICBSZXF1ZXN0SURzID0+IFxAUmVxdWVzdElEcywKICAgIFZvdGVJRHMgICAgPT4gXEBWb3RlSURzLAopOwoKIyBleGVjdXRlIGNvbW1hbmQKbXkgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoJy0tZm9yY2UnKTsKCiMgY2hlY2sgaWYgZGVsZXRlIGRvbmUKZm9yIG15ICRDaGVjayAoIHNvcnQga2V5cyAlRGVsZXRlZElEcyApIHsKCiAgICBmb3IgbXkgJERlbGV0ZWRSZXF1ZXN0SUQgKCBAeyAkRGVsZXRlZElEc3tSZXF1ZXN0SURzfSB9ICkgewoKICAgICAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgPT4gIlNFTEVDVCBDT1VOVChpZCkgRlJPTSBzdXJ2ZXlfcmVxdWVzdCBXSEVSRSBpZCA9ID8gIiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkRGVsZXRlZFJlcXVlc3RJRCBdCiAgICAgICAgKTsKCiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRSb3dbMF0sCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgIlJlcXVlc3RzIGRlbGV0ZWQiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgbXkgJERlbGV0ZWRWb3RlSUQgKCBAeyAkRGVsZXRlZElEc3tWb3RlSURzfSB9ICkgewoKICAgICAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgPT4gIlNFTEVDVCBDT1VOVChpZCkgRlJPTSBzdXJ2ZXlfdm90ZSBXSEVSRSBpZCA9ID8gIiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkRGVsZXRlZFZvdGVJRCBdCiAgICAgICAgKTsKCiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRSb3dbMF0sCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgIlZvdGVzIGRlbGV0ZWQiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KfQoKJFNlbGYtPklzKAogICAgJEV4aXRDb2RlLAogICAgMCwKICAgICJSZXF1ZXN0cyBkZWxldGUgLSBFeGl0Q29kZSIsCik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICA9PiAiTm8gUGFyYW1zICdTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UnIGRpc2FibGVkIiwKICAgICAgICBQYXJhbXMgICA9PiBbXSwKICAgICAgICBDb25maWcgICA9PiAwLAogICAgICAgIEV4aXRDb2RlID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgID0+ICJXcm9uZyBQYXJhbSAnU2VuZEluSG91cnNBZnRlckNsb3NlJyBkaXNhYmxlZCIsCiAgICAgICAgUGFyYW1zICAgPT4gWyctLXRlc3QnXSwKICAgICAgICBDb25maWcgICA9PiAwLAogICAgICAgIEV4aXRDb2RlID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgID0+ICJGb3JjZSBwYXJhbSAnU2VuZEluSG91cnNBZnRlckNsb3NlJyBkaXNhYmxlZCIsCiAgICAgICAgUGFyYW1zICAgPT4gWyctLWZvcmNlJ10sCiAgICAgICAgQ29uZmlnICAgPT4gMCwKICAgICAgICBFeGl0Q29kZSA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICA9PiAiTm8gUGFyYW1zICdTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UnIGVuYWJsZWQiLAogICAgICAgIFBhcmFtcyAgID0+IFtdLAogICAgICAgIENvbmZpZyAgID0+IDEsCiAgICAgICAgRXhpdENvZGUgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgPT4gIldyb25nIFBhcmFtICdTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UnIGVuYWJsZWQiLAogICAgICAgIFBhcmFtcyAgID0+IFsnLS10ZXN0J10sCiAgICAgICAgQ29uZmlnICAgPT4gMSwKICAgICAgICBFeGl0Q29kZSA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICA9PiAiRm9yY2UgcGFyYW0gJ1NlbmRJbkhvdXJzQWZ0ZXJDbG9zZScgZW5hYmxlZCIsCiAgICAgICAgUGFyYW1zICAgPT4gWyctLWZvcmNlJ10sCiAgICAgICAgQ29uZmlnICAgPT4gMSwKICAgICAgICBFeGl0Q29kZSA9PiAwLAogICAgfSwKCik7CgojIGdldCBuZWVkZWQgb2JqZWN0cwpteSAkQ29tbWFuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6U3VydmV5OjpSZXF1ZXN0c1NlbmQnKTsKbXkgJENvbmZpZ09iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIHNldCBjb25maWcKICAgICRDb25maWdPYmplY3QtPlNldCgKICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OlNlbmRJbkhvdXJzQWZ0ZXJDbG9zZScsCiAgICAgICAgVmFsdWUgPT4gJFRlc3QtPntDb25maWd9LAogICAgKTsKCiAgICBteSAkRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggQHsgJFRlc3QtPntQYXJhbXN9IH0gKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJEV4aXRDb2RlLAogICAgICAgICRUZXN0LT57RXhpdENvZGV9LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gRXhpdENvZGUiLAogICAgKTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyBxdygkU2VsZik7CgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiMgRG8gbm90IGNoZWNrIGVtYWlscy4KJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ0NoZWNrRW1haWxBZGRyZXNzZXMnLAogICAgVmFsdWUgPT4gMCwKKTsKCiMgR2V0IFRpY2tldCBvYmplY3QuCm15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgojIENyZWF0ZSBzb21lIHRpY2tldHMuCm15ICRUaWNrZXRJRDEgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgU3RhdGUgICAgICAgID0+ICduZXcnLAogICAgQ3VzdG9tZXJJRCAgID0+ICcxMjM0NjUnLAogICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckBleGFtcGxlLmNvbScsCiAgICBPd25lcklEICAgICAgPT4gMSwKICAgIFVzZXJJRCAgICAgICA9PiAxLAopOwokU2VsZi0+SXNOb3QoCiAgICAkVGlja2V0SUQxLAogICAgdW5kZWYsCiAgICAiVGlja2V0Q3JlYXRlKCkgZm9yIFRpY2tldElEICRUaWNrZXRJRDEiLAopOwoKbXkgJFRpY2tldElEMiA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICBTdGF0ZSAgICAgICAgPT4gJ25ldycsCiAgICBDdXN0b21lcklEICAgPT4gJzEyMzQ2NScsCiAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQGV4YW1wbGUuY29tJywKICAgIE93bmVySUQgICAgICA9PiAxLAogICAgVXNlcklEICAgICAgID0+IDEsCik7CiRTZWxmLT5Jc05vdCgKICAgICRUaWNrZXRJRDIsCiAgICB1bmRlZiwKICAgICJUaWNrZXRDcmVhdGUoKSBmb3IgVGlja2V0SUQgJFRpY2tldElEMiIsCik7CgpteSAkVGlja2V0SUQzID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgVGl0bGUgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgIFF1ZXVlICAgID0+ICdSYXcnLAogICAgTG9jayAgICAgPT4gJ3VubG9jaycsCiAgICBQcmlvcml0eSA9PiAnMyBub3JtYWwnLAogICAgU3RhdGUgICAgPT4gJ25ldycsCiAgICBPd25lcklEICA9PiAxLAogICAgVXNlcklEICAgPT4gMSwKKTsKJFNlbGYtPklzTm90KAogICAgJFRpY2tldElEMywKICAgIHVuZGVmLAogICAgIlRpY2tldENyZWF0ZSgpIGZvciBUaWNrZXRJRCAkVGlja2V0SUQzIiwKKTsKCm15ICRBcnRpY2xlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpOwoKbXkgJEFydGljbGVQaG9uZUJhY2tlbmRPYmplY3QgPSAkQXJ0aWNsZU9iamVjdC0+QmFja2VuZEZvckNoYW5uZWwoCiAgICBDaGFubmVsTmFtZSA9PiAnUGhvbmUnLAopOwoKIyBDcmVhdGUgYXJ0aWNsZXMgZm9yIHRoZSB0aWNrZXRzLgpteSAkQXJ0aWNsZUlEMSA9ICRBcnRpY2xlUGhvbmVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQ3JlYXRlKAogICAgVGlja2V0SUQgICAgICAgICAgICAgPT4gJFRpY2tldElEMSwKICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDEsCiAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPGVtYWlsQGV4YW1wbGUuY29tPicsCiAgICBUbyAgICAgICAgICAgICAgICAgICA9PiAnU29tZSBBZ2VudCA8YWdlbnRAZXhhbXBsZS5jb20+JywKICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICdzb21lIHNob3J0IGRlc2NyaXB0aW9uJywKICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdBZGROb3RlJywKICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKKTsKJFNlbGYtPklzTm90KAogICAgJFRpY2tldElEMywKICAgIHVuZGVmLAogICAgIkFydGljbGVDcmVhdGUoKSBmb3IgQXJ0aWNsZUlEICRBcnRpY2xlSUQxIiwKKTsKCm15ICRBcnRpY2xlSW50ZXJuYWxCYWNrZW5kT2JqZWN0ID0gJEFydGljbGVPYmplY3QtPkJhY2tlbmRGb3JDaGFubmVsKAogICAgQ2hhbm5lbE5hbWUgPT4gJ0ludGVybmFsJywKKTsKbXkgJEFydGljbGVJRDIgPSAkQXJ0aWNsZUludGVybmFsQmFja2VuZE9iamVjdC0+QXJ0aWNsZUNyZWF0ZSgKICAgIFRpY2tldElEICAgICAgICAgICAgID0+ICRUaWNrZXRJRDIsCiAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAxLAogICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2FnZW50JywKICAgIEZyb20gICAgICAgICAgICAgICAgID0+ICdTb21lIEFnZW50IDxhZ2VudEBleGFtcGxlLmNvbT4nLAogICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPGVtYWlsQGV4YW1wbGUuY29tPicsCiAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnc29tZSBzaG9ydCBkZXNjcmlwdGlvbicsCiAgICBCb2R5ICAgICAgICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnQWRkTm90ZScsCiAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCik7CiRTZWxmLT5Jc05vdCgKICAgICRUaWNrZXRJRDMsCiAgICB1bmRlZiwKICAgICJBcnRpY2xlQ3JlYXRlKCkgZm9yIEFydGljbGVJRCAkQXJ0aWNsZUlEMiIsCik7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICA9PiAnTm8gUGFyYW1zJywKICAgICAgICBQYXJhbSAgID0+IHt9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ1dyb25nIFVzZXJFTWFpbCcsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBVc2VyRW1haWwgPT4gJ1VzZXInLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICA9PiAnV3JvbmcgVGlja2V0SUQnLAogICAgICAgIFBhcmFtID0+IHsKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElEMywKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ1VzZXJFbWFpbCcsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBVc2VyRW1haWwgPT4gJ1VzZXIgPHVzZXJAaG9tZS5jb20+JywKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiAndXNlckBob21lLmNvbScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgID0+ICdVc2VyRW1haWwgTXVsdGlwbGUnLAogICAgICAgIFBhcmFtID0+IHsKICAgICAgICAgICAgVXNlckVtYWlsID0+ICdVc2VyIDx1c2VyQGV4YW1wbGUuY29tPiwgVXNlcjIgPHVzZXIyQGhvbWUuY29tPicsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gJ3VzZXIyQGhvbWUuY29tJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ1RpY2tldElEIExhc3QgYXJ0aWNsZSBjdXN0b21lcicsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQxLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyAgICAgICAgID0+IDEsCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+ICdlbWFpbEBleGFtcGxlLmNvbScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgID0+ICdUaWNrZXRJRCBMYXN0IGFydGljbGUgYWdlbnQnLAogICAgICAgIFBhcmFtID0+IHsKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElEMiwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiAnZW1haWxAZXhhbXBsZS5jb20nLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICA9PiAnVXNlckVtYWlsIChCbGFja0xpc3QpJywKICAgICAgICBQYXJhbSA9PiB7CiAgICAgICAgICAgIFVzZXJFbWFpbCA9PiAnVXNlciA8dXNlckBleGFtcGxlLmNvbT4nLAogICAgICAgIH0sCiAgICAgICAgQmxhY2tMaXN0ID0+IFsndXNlckBleGFtcGxlLmNvbSddLAogICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICA9PiAnVXNlckVtYWlsIE11bHRpcGxlIChCbGFja0xpc3QpJywKICAgICAgICBQYXJhbSA9PiB7CiAgICAgICAgICAgIFVzZXJFbWFpbCA9PiAnVXNlciA8dXNlckBleGFtcGxlLmNvbT4sIFVzZXIyIDx1c2VyMkBleGFtcGxlLmNvbT4nLAogICAgICAgIH0sCiAgICAgICAgQmxhY2tMaXN0ID0+IFsndXNlcjJAZXhhbXBsZS5jb20nXSwKICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ1RpY2tldElEIExhc3QgYXJ0aWNsZSBjdXN0b21lciAoQmxhY2tMaXN0KScsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQxLAogICAgICAgIH0sCiAgICAgICAgQmxhY2tMaXN0ID0+IFsnZW1haWxAZXhhbXBsZS5jb20nXSwKICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ1RpY2tldElEIExhc3QgYXJ0aWNsZSBhZ2VudCAoQmxhY2tMaXN0KScsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQyLAogICAgICAgIH0sCiAgICAgICAgQmxhY2tMaXN0ID0+IFsnZW1haWxAZXhhbXBsZS5jb20nXSwKICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgID0+ICd1YyBVc2VyRW1haWwgKEJsYWNrTGlzdCknLAogICAgICAgIFBhcmFtID0+IHsKICAgICAgICAgICAgVXNlckVtYWlsID0+ICdVc2VyIDxVc2VyQGV4YW1wbGUuY29tPicsCiAgICAgICAgfSwKICAgICAgICBCbGFja0xpc3QgPT4gWyd1c2VyQGV4YW1wbGUuY29tJ10sCiAgICAgICAgU3VjY2VzcyAgID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgID0+ICd1YyBVc2VyRW1haWwgTXVsdGlwbGUgKEJsYWNrTGlzdCknLAogICAgICAgIFBhcmFtID0+IHsKICAgICAgICAgICAgVXNlckVtYWlsID0+ICdVc2VyIDx1c2VyQGV4YW1wbGUuY29tPiwgVXNlcjIgPFVzZXIyQGV4YW1wbGUuY29tPicsCiAgICAgICAgfSwKICAgICAgICBCbGFja0xpc3QgPT4gWyd1c2VyMkBleGFtcGxlLmNvbSddLAogICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICA9PiAnVXNlckVtYWlsICh1YyBCbGFja0xpc3QpJywKICAgICAgICBQYXJhbSA9PiB7CiAgICAgICAgICAgIFVzZXJFbWFpbCA9PiAnVXNlciA8dXNlckBleGFtcGxlLmNvbT4nLAogICAgICAgIH0sCiAgICAgICAgQmxhY2tMaXN0ID0+IFsnVXNlckBleGFtcGxlLmNvbSddLAogICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICA9PiAnVXNlckVtYWlsIE11bHRpcGxlICh1YyBCbGFja0xpc3QpJywKICAgICAgICBQYXJhbSA9PiB7CiAgICAgICAgICAgIFVzZXJFbWFpbCA9PiAnVXNlciA8dXNlckBleGFtcGxlLmNvbT4sIFVzZXIyIDx1c2VyMkBleGFtcGxlLmNvbT4nLAogICAgICAgIH0sCiAgICAgICAgQmxhY2tMaXN0ID0+IFsnVXNlcjJAZXhhbXBsZS5jb20nXSwKICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ1RpY2tldElEIExhc3QgYXJ0aWNsZSBjdXN0b21lciAodWMgQmxhY2tMaXN0KScsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQxLAogICAgICAgIH0sCiAgICAgICAgQmxhY2tMaXN0ID0+IFsnZW1haWxAZXhhbXBsZS5jb20nXSwKICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ1RpY2tldElEIExhc3QgYXJ0aWNsZSBhZ2VudCAodWMgQmxhY2tMaXN0KScsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQyLAogICAgICAgIH0sCiAgICAgICAgQmxhY2tMaXN0ID0+IFsnZW1haWxAZXhhbXBsZS5jb20nXSwKICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ3VjIFVzZXJFbWFpbCAodWMgQmxhY2tMaXN0KScsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBVc2VyRW1haWwgPT4gJ1VzZXIgPFVzZXJAZXhhbXBsZS5jb20+JywKICAgICAgICB9LAogICAgICAgIEJsYWNrTGlzdCA9PiBbJ1VzZXJAZXhhbXBsZS5jb20nXSwKICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ3VjIFVzZXJFbWFpbCBNdWx0aXBsZSAodWMgQmxhY2tMaXN0KScsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBVc2VyRW1haWwgPT4gJ1VzZXIgPHVzZXJAZXhhbXBsZS5jb20+LCBVc2VyMiA8VXNlcjJAZXhhbXBsZS5jb20+JywKICAgICAgICB9LAogICAgICAgIEJsYWNrTGlzdCA9PiBbJ1VzZXIyQGV4YW1wbGUuY29tJ10sCiAgICAgICAgU3VjY2VzcyAgID0+IDAsCiAgICB9LAopOwoKbXkgJFN1cnZleU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKClRFU1Q6CmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgIyBTZXQgYmxhY2tsaXN0LgogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6Ok5vdGlmaWNhdGlvblJlY2lwaWVudEJsYWNrbGlzdCcsCiAgICAgICAgVmFsdWUgPT4gJFRlc3QtPntCbGFja0xpc3R9IC8vIFtdLAogICAgKTsKCiAgICAjIEV4ZWN1dGUgYWN0dWFsIHRlc3QuCiAgICBteSAkUmVjaXBpZW50ID0gJFN1cnZleU9iamVjdC0+X0dldFJlcXVlc3RSZWNpcGllbnQoICV7ICRUZXN0LT57UGFyYW19IH0gKTsKCiAgICBpZiAoICEkVGVzdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFJlY2lwaWVudCwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gX0dldFJlcXVlc3RSZWNpcGllbnQoKSIsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBURVNUOwogICAgfQogICAgJFNlbGYtPklzKAogICAgICAgICRSZWNpcGllbnQsCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gX0dldFJlcXVlc3RSZWNpcGllbnQoKSIsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyBxdygkU2VsZik7CgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBzZXQgc2VuZCBwZXJpb2QgdG8gYWx3YXlzIHNlbmQgc3VydmV5CiRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICBLZXkgICA9PiAnU3VydmV5OjpTZW5kUGVyaW9kJywKICAgIFZhbHVlID0+IDAsCik7CgojIHNldCBzZW5kIHBlcmlvZCB0byBhbHdheXMgc2VuZCBzdXJ2ZXkKJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgIEtleSAgID0+ICdDaGVja0VtYWlsQWRkcmVzc2VzJywKICAgIFZhbHVlID0+IDAsCik7CgpteSAkUXVldWVSYW5kID0gJ1NvbWVRdWV1ZScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwpteSAkUXVldWVJRCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyktPlF1ZXVlQWRkKAogICAgTmFtZSAgICAgICAgICAgID0+ICRRdWV1ZVJhbmQsCiAgICBWYWxpZElEICAgICAgICAgPT4gMSwKICAgIEdyb3VwSUQgICAgICAgICA9PiAxLAogICAgU3lzdGVtQWRkcmVzc0lEID0+IDEsCiAgICBTYWx1dGF0aW9uSUQgICAgPT4gMSwKICAgIFNpZ25hdHVyZUlEICAgICA9PiAxLAogICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICBDb21tZW50ICAgICAgICAgPT4gJ1NvbWUgQ29tbWVudCcsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRRdWV1ZUlELAogICAgIlF1ZXVlQWRkKCkgLSAkUXVldWVSYW5kLCAkUXVldWVJRCIsCik7CgpteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwpteSAkU3VydmV5VGl0bGUgID0gJ1N1cnZleSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKbXkgJFN1cnZleUlEICAgICA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUFkZCgKICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gMSwKICAgIFRpdGxlICAgICAgICAgICAgICAgPT4gJFN1cnZleVRpdGxlLAogICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAnU3VydmV5IEludHJvZHVjdGlvbicsCiAgICBEZXNjcmlwdGlvbiAgICAgICAgID0+ICdTdXJ2ZXkgRGVzY3JpcHRpb24nLAogICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAnc3Zpa0BleGFtcGxlLmNvbScsCiAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIFN1YmplY3QnLAogICAgTm90aWZpY2F0aW9uQm9keSAgICA9PiAnU3VydmV5IE5vdGlmaWNhdGlvbiBCb2R5JywKICAgIFF1ZXVlcyAgICAgICAgICAgICAgPT4gWyRRdWV1ZUlEXSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VydmV5SUQsCiAgICAiU3VydmV5IElEICRTdXJ2ZXlJRCBpcyBjcmVhdGVkIiwKKTsKCm15ICRTdWNjZXNzID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25BZGQoCiAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgU3VydmV5SUQgICAgICAgPT4gJFN1cnZleUlELAogICAgUXVlc3Rpb24gICAgICAgPT4gJ1RoZSBRdWVzdGlvbicsCiAgICBBbnN3ZXJSZXF1aXJlZCA9PiAwLAogICAgVHlwZSAgICAgICAgICAgPT4gJ1RleHRhcmVhJywKKTsKCiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiUXVlc3Rpb24gaXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkuIiwKKTsKCm15IEBRdWVzdGlvbkxpc3QgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkxpc3QoCiAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQKKTsKCiRTdWNjZXNzID0gJFN1cnZleU9iamVjdC0+U3VydmV5U3RhdHVzU2V0KAogICAgU3VydmV5SUQgID0+ICRTdXJ2ZXlJRCwKICAgIE5ld1N0YXR1cyA9PiAnTWFzdGVyJwopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlN1cnZleSBzdGF0dXMgaXMgc2V0IHRvIE1hc3RlciBzdWNjZXNzZnVsbHkuIiwKKTsKCm15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7Cm15ICREQk9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCm15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgUXVldWVJRCAgICAgID0+ICRRdWV1ZUlELAogICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICBTdGF0ZSAgICAgICAgPT4gJ25ldycsCiAgICBDdXN0b21lcklEICAgPT4gJzEyMzQ2NScsCiAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQGV4YW1wbGUuY29tJywKICAgIE93bmVySUQgICAgICA9PiAxLAogICAgVXNlcklEICAgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFRpY2tldElELAogICAgIlRpY2tldENyZWF0ZSgpIGZvciBUaWNrZXRJRCAkVGlja2V0SUQiLAopOwoKbXkgJEFydGljbGVPYmplY3QgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyk7Cm15ICRBcnRpY2xlSW50ZXJuYWxCYWNrZW5kT2JqZWN0ID0gJEFydGljbGVPYmplY3QtPkJhY2tlbmRGb3JDaGFubmVsKAogICAgQ2hhbm5lbE5hbWUgPT4gJ1Bob25lJywKKTsKCm15ICRBcnRpY2xlSUQgPSAkQXJ0aWNsZUludGVybmFsQmFja2VuZE9iamVjdC0+QXJ0aWNsZUNyZWF0ZSgKICAgIFRpY2tldElEICAgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDEsCiAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPGVtYWlsQGV4YW1wbGUuY29tPicsCiAgICBUbyAgICAgICAgICAgICAgICAgICA9PiAnU29tZSBBZ2VudCA8YWdlbnRAZXhhbXBsZS5jb20+JywKICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICdzb21lIHNob3J0IGRlc2NyaXB0aW9uJywKICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdBZGROb3RlJywKICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkQXJ0aWNsZUlELAogICAgIkFydGljbGVDcmVhdGUoKSBmb3IgQXJ0aWNsZUlEICRBcnRpY2xlSUQiLAopOwoKJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5SZXF1ZXN0U2VuZCgKICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJSZXF1ZXN0IGlzIHNlbnQgc3VjY2Vzc2Z1bGx5LiIsCik7CgokREJPYmplY3QtPlByZXBhcmUoCiAgICBTUUwgPT4gJwogICAgICAgIFNFTEVDVCBwdWJsaWNfc3VydmV5X2tleQogICAgICAgIEZST00gc3VydmV5X3JlcXVlc3QKICAgICAgICBXSEVSRSB0aWNrZXRfaWQgPSA/JywKICAgIEJpbmQgID0+IFsgXCRUaWNrZXRJRCBdLAogICAgTGltaXQgPT4gMSwKKTsKCm15ICRQdWJsaWNTdXJ2ZXlLZXk7CndoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgJFB1YmxpY1N1cnZleUtleSA9ICRSb3dbMF07Cn0KCm15ICRWb3RlcyAgICAgID0gMzsKbXkgJEFuc3dlclRleHQgPSAnU29tZSBhbnN3ZXInOwpmb3IgbXkgJFRlc3QgKCAnJywgJEFuc3dlclRleHQgKSB7CiAgICBmb3IgKCAxIC4uICRWb3RlcyApIHsKICAgICAgICAkU3VjY2VzcyA9ICRTdXJ2ZXlPYmplY3QtPlB1YmxpY0Fuc3dlclNldCgKICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICAgICAgICAgIFF1ZXN0aW9uSUQgICAgICA9PiAkUXVlc3Rpb25MaXN0WzBdLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgIFZvdGVWYWx1ZSAgICAgICA9PiAkVGVzdCwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJQdWJsaWMgYW5zd2VyIGlzIHNldCBzdWNjZXNzZnVsbHkuIiwKICAgICAgICApOwogICAgfQp9CgojCm15ICRWb3RlVmFsdWUgPSAnJzsKaWYgKCAkREJPYmplY3QtPnsnREI6OlR5cGUnfSBlcSAnb3JhY2xlJyApIHsKICAgICRWb3RlVmFsdWUgPSAwOwp9CgpteSAkQW5zd2VyTm8gPSAkU3VydmV5T2JqZWN0LT5Wb3RlQ291bnQoCiAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbkxpc3RbMF0tPntRdWVzdGlvbklEfSwKICAgIFZvdGVWYWx1ZSAgPT4gJFZvdGVWYWx1ZSwKKTsKCiRTZWxmLT5JcygKICAgICRBbnN3ZXJObywKICAgICRWb3RlcywKICAgICJBbnN3ZXJObyBjb3VudCBpcyBhcyBleHBlY3RlZC4iLAopOwoKbXkgJVJlcXVlc3REYXRhID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdEdldCgKICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUHVibGljU3VydmV5S2V5LAopOwoKbXkgQFZvdGUgPSAkU3VydmV5T2JqZWN0LT5Wb3RlR2V0KAogICAgUmVxdWVzdElEICA9PiAkUmVxdWVzdERhdGF7UmVxdWVzdElEfSwKICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uTGlzdFswXS0+e1F1ZXN0aW9uSUR9LAopOwoKbXkgJEFuc3dlclRleHRWb3RlID0gc2NhbGFyIGdyZXAgeyAkXy0+e1ZvdGVWYWx1ZX0gZXEgJEFuc3dlclRleHQgfSBAVm90ZTsKCiRTZWxmLT5JcygKICAgICRBbnN3ZXJUZXh0Vm90ZSwKICAgICRWb3RlcywKICAgICJBbnN3ZXIgY291bnQgd2l0aCBzb21lIHRleHQgaXMgYXMgZXhwZWN0ZWQuIiwKKTsKCiMgY2xlYW51cCBpcyBkb25lIGJ5IFJlc3RvcmVEYXRhYmFzZS4KMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyBxdygkU2VsZik7Cgp1c2UgRGF0YTo6RHVtcGVyOwoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiMgY3JlYXRlIGxvY2FsIGNvbmZpZyBvYmplY3QKbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIHNldCBjb25maWcgdG8gbm90IHNlbmQgZW1haWxzCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdTZW5kbWFpbE1vZHVsZScsCiAgICBWYWx1ZSA9PiAnS2VybmVsOjpTeXN0ZW06OkVtYWlsOjpEb05vdFNlbmRFbWFpbCcsCik7CgojIGRpc2FibGUgZW1haWwgY2hlY2sKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ0NoZWNrRW1haWxBZGRyZXNzZXMnLAogICAgVmFsdWUgPT4gMCwKKTsKCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdTdXJ2ZXk6OlNlbmRJbkhvdXJzQWZ0ZXJDbG9zZScsCiAgICBWYWx1ZSA9PiAwLAopOwoKIyBGcmVlemUgVGltZQokSGVscGVyT2JqZWN0LT5GaXhlZFRpbWVTZXQoKTsKJFNlbGYtPlRydWUoCiAgICAxLAogICAgJy0tIFNldCBGaXhlZCBUaW1lIC0tJywKKTsKCiMgZ2V0IHR5cGUgb2JqZWN0Cm15ICRUeXBlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKTsKCm15ICRSYW5kb20gPSAkSGVscGVyT2JqZWN0LT5HZXRSYW5kb21OdW1iZXIoKTsKCiMgY3JlYXRlIGEgdGVzdCB0eXBlCm15ICRUaWNrZXRUeXBlSUQgPSAkVHlwZU9iamVjdC0+VHlwZUFkZCgKICAgIE5hbWUgICAgPT4gJ1VuaXQgVGVzdCBOZXcgVHlwZScgLiAkUmFuZG9tLAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAxLAopOwoKIyBnZXQgc2VydmljZSBvYmplY3QKbXkgJFNlcnZpY2VPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpOwoKIyBjcmVhdGUgYSB0ZXN0IHNlcnZpY2UKbXkgJFNlcnZpY2VJRCA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlQWRkKAogICAgTmFtZSAgICA9PiAnVW5pdCBUZXN0IE5ldyBTZXJ2aWNlJyAuICRSYW5kb20sCiAgICBWYWxpZElEID0+IDEsCiAgICBDb21tZW50ID0+ICdVbml0IFRlc3QgQ29tbWVudCcsCiAgICBVc2VySUQgID0+IDEsCgogICAgIyBUeXBlSUQgYW5kIENyaXRpY2FsaXR5IGlzIG5lZWRlZCB0byB0ZXN0IFN1cnZleVNlbmQoKSB0b2dldGhlciB3aXRoIElUU00KICAgIFR5cGVJRCAgICAgID0+IDIsCiAgICBDcml0aWNhbGl0eSA9PiAnMyBub3JtYWwnLAopOwoKIyBjcmVhdGUgYSB0ZXN0IGN1c3RvbWVydXNlcgpteSAkVGVzdEN1c3RvbWVyVXNlcjEgPSAkSGVscGVyT2JqZWN0LT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7Cm15ICRUZXN0Q3VzdG9tZXJVc2VyMiA9ICRIZWxwZXJPYmplY3QtPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoKTsKCiMgY3JlYXRlIHN1cnZleQpteSAlU3VydmV5RGF0YSA9ICgKICAgIFRpdGxlICAgICAgICAgICAgICAgICAgPT4gJ0EgVGl0bGUnLAogICAgSW50cm9kdWN0aW9uICAgICAgICAgICA9PiAnVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgc3VydmV5JywKICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgPT4gJ1RoZSBpbnRlcm5hbCBkZXNjcmlwdGlvbiBvZiB0aGUgc3VydmV5JywKICAgIE5vdGlmaWNhdGlvblNlbmRlciAgICAgPT4gJ3F1YWxpdHlAdW5pdHRlc3QuY29tJywKICAgIE5vdGlmaWNhdGlvblN1YmplY3QgICAgPT4gJ0hlbHAgdXMgd2l0aCB5b3VyIGZlZWRiYWNrISDDhMOWw5wnLAogICAgTm90aWZpY2F0aW9uQm9keSAgICAgICA9PiAnRGVhciBjdXN0b21lci4uLiDDpMO2w7wnLAogICAgVGlja2V0VHlwZUlEcyAgICAgICAgICA9PiBbJFRpY2tldFR5cGVJRF0sCiAgICBTZXJ2aWNlSURzICAgICAgICAgICAgID0+IFskU2VydmljZUlEXSwKICAgIEN1c3RvbWVyVXNlckNvbmRpdGlvbnMgPT4gewogICAgICAgIFVzZXJGaXJzdG5hbWUgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOZWdhdGlvbiAgICA9PiAwLAogICAgICAgICAgICAgICAgUmVnRXhwVmFsdWUgPT4gJFRlc3RDdXN0b21lclVzZXIxLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAopOwoKIyBnZXQgU3VydmV5IG9iamVjdApteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKbXkgJFN1cnZleUlEID0gJFN1cnZleU9iamVjdC0+U3VydmV5QWRkKAogICAgVXNlcklEID0+IDEsCiAgICAlU3VydmV5RGF0YSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VydmV5SUQsCiAgICAiU3VydmV5QWRkKCkiLAopOwoKZm9yICggMSAuLiAzICkgewogICAgbXkgJFF1ZXN0aW9uQWRkID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25BZGQoCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgUXVlc3Rpb24gPT4gJ1RoZSBRdWVzdGlvbicsCiAgICAgICAgVHlwZSAgICAgPT4gJ1JhZGlvJywKICAgICk7Cn0KbXkgQExpc3QgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkxpc3QoCiAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCik7CmZvciBteSAkUXVlc3Rpb24gKEBMaXN0KSB7CiAgICBmb3IgKCAxIC4uIDMgKSB7CiAgICAgICAgJFN1cnZleU9iamVjdC0+QW5zd2VyQWRkKAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgICAgICBRdWVzdGlvbklEICAgICA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgQW5zd2VyICAgICAgICAgPT4gJ1RoZSBBbnN3ZXInLAogICAgICAgICAgICBBbnN3ZXJSZXF1aXJlZCA9PiAxLAogICAgICAgICk7CiAgICB9Cn0KCm15ICRTdGF0dXNTZXQgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlTdGF0dXNTZXQoCiAgICBTdXJ2ZXlJRCAgPT4gJFN1cnZleUlELAogICAgTmV3U3RhdHVzID0+ICdNYXN0ZXInCik7CiRTZWxmLT5JcygKICAgICRTdGF0dXNTZXQsCiAgICAnU3RhdHVzU2V0JywKICAgICJTdXJ2ZXlTdGF0dXNTZXQoKSIsCik7CgpteSAlU3VydmV5R2V0ID0gJFN1cnZleU9iamVjdC0+U3VydmV5R2V0KAogICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAopOwoKIyBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlU3VydmV5R2V0ICkgewojICAgICBuZXh0IGlmICFkZWZpbmVkICRTdXJ2ZXlEYXRheyRLZXl9OwojICAgICAkU2VsZi0+SXMoCiMgICAgICAgICAkU3VydmV5R2V0eyRLZXl9LAojICAgICAgICAgJFN1cnZleURhdGF7JEtleX0sCiMgICAgICAgICAiU3VydmV5R2V0KCkiLAojICAgICApOwojIH0KCmZvciBteSAkQXR0cmlidXRlICggc29ydCBrZXlzICVTdXJ2ZXlEYXRhICkgewoKICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAkU3VydmV5R2V0eyRBdHRyaWJ1dGV9LAogICAgICAgICRTdXJ2ZXlEYXRheyRBdHRyaWJ1dGV9LAogICAgICAgICJTdXJ2ZXlHZXQoKSIsCiAgICApOwp9CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJyMxIHRyeScsCiAgICAgICAgJ1N1cnZleTo6U2VuZFBlcmlvZCcgPT4gMTAwLAogICAgICAgIFRpY2tldCAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgICAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBDb21tdW5pY2F0aW9uQ2hhbm5lbCA9PiAnRW1haWwnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAxLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8c29tZUB1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICAgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgUmVzdWx0ID0+IFsKICAgICAgICAgICAgMSwKICAgICAgICAgICAgMCwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnIzIgdHJ5JywKICAgICAgICAnU3VydmV5OjpTZW5kUGVyaW9kJyA9PiAxMDAsCiAgICAgICAgVGlja2V0ICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgQXJ0aWNsZSA9PiB7CiAgICAgICAgICAgIENvbW11bmljYXRpb25DaGFubmVsID0+ICdFbWFpbCcsCiAgICAgICAgICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDEsCiAgICAgICAgICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICdjdXN0b21lcicsCiAgICAgICAgICAgIEZyb20gICAgICAgICAgICAgICAgID0+ICdTb21lIEN1c3RvbWVyIDxTT01FQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICAgICAgICA9PiAnU29tZSBUbyA8dG9AdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICdTb21lIFN1YmplY3QnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICAgICAgICAgIE1lc3NhZ2VJRCAgICAgICAgICAgID0+ICc8YXNkYXNkYXNkLjEyM0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCiAgICAgICAgfSwKICAgICAgICBSZXN1bHQgPT4gWwogICAgICAgICAgICAwLAogICAgICAgICAgICAwLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICcjMyB0cnknLAogICAgICAgICdTdXJ2ZXk6OlNlbmRQZXJpb2QnID0+IDEwMCwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQ29tbXVuaWNhdGlvbkNoYW5uZWwgPT4gJ0VtYWlsJywKICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NPTUVAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICAgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgUmVzdWx0ID0+IFsKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMCwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnIzQgdHJ5JywKICAgICAgICBTbGVlcCAgICAgICAgICAgICAgICA9PiA4MCwKICAgICAgICAnU3VydmV5OjpTZW5kUGVyaW9kJyA9PiAxIC8gMjQgLyA2MCwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQ29tbXVuaWNhdGlvbkNoYW5uZWwgPT4gJ0VtYWlsJywKICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NPTUVAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICAgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgUmVzdWx0ID0+IFsKICAgICAgICAgICAgMSwKICAgICAgICAgICAgMCwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnIzUgdHJ5JywKICAgICAgICBTbGVlcCAgICAgICAgICAgICAgICA9PiAyMCwKICAgICAgICAnU3VydmV5OjpTZW5kUGVyaW9kJyA9PiAxIC8gMjQgLyA2MCwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQ29tbXVuaWNhdGlvbkNoYW5uZWwgPT4gJ0VtYWlsJywKICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NPTUVAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICAgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgUmVzdWx0ID0+IFsKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMCwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJyM2IHRyeScsCiAgICAgICAgVGlja2V0ID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgICAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBDb21tdW5pY2F0aW9uQ2hhbm5lbCA9PiAnRW1haWwnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAxLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnTXkgTmFtZScsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdTb21lIFRvIDx0b0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ1NvbWUgU3ViamVjdCcsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgICAgICAgICAgTWVzc2FnZUlEICAgICAgICAgICAgPT4gJzxhc2Rhc2Rhc2QuMTIzQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdPd25lclVwZGF0ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0FnZW50Tm90aWZ5ICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZW5kIGFnZW50IG5vdGlmaWNhdGlvbnMKICAgICAgICB9LAogICAgICAgIFJlc3VsdCA9PiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDAsCiAgICAgICAgXSwKICAgIH0sCik7CgojIGdldCB0aWNrZXQgb2JqZWN0Cm15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7Cgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgIGlmICggJFRlc3QtPnsnU3VydmV5OjpTZW5kUGVyaW9kJ30gKSB7CiAgICAgICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgICAgICBLZXkgICA9PiAnU3VydmV5OjpTZW5kUGVyaW9kJywKICAgICAgICAgICAgVmFsdWUgPT4gJFRlc3QtPnsnU3VydmV5OjpTZW5kUGVyaW9kJ30sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG5vIHNlbmQgY29uZGl0aW9uIGNoZWNrIGluIG5vcm1hbCB0ZXN0cwogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnLAogICAgICAgIFZhbHVlID0+IDAsCiAgICApOwogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnLAogICAgICAgIFZhbHVlID0+IDAsCiAgICApOwogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJywKICAgICAgICBWYWx1ZSA9PiAwLAogICAgKTsKCiAgICBpZiAoICRUZXN0LT57U2xlZXB9ICkgewogICAgICAgICRIZWxwZXJPYmplY3QtPkZpeGVkVGltZUFkZFNlY29uZHMoICRUZXN0LT57U2xlZXB9ICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDEsCiAgICAgICAgICAgICItLSBBZGRlZCAkVGVzdC0+e1NsZWVwfSBTZWNvbmQocykgdG8gRml4ZWQgVGltZSAtLSIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgJXsgJFRlc3QtPntUaWNrZXR9IH0sCiAgICApOwoKICAgIG15ICRBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKS0+QmFja2VuZEZvckNoYW5uZWwoCiAgICAgICAgQ2hhbm5lbE5hbWUgPT4gJFRlc3QtPntBcnRpY2xlfS0+e0NvbW11bmljYXRpb25DaGFubmVsfSwKICAgICk7CgogICAgbXkgJEFydGljbGVJRCA9ICRBcnRpY2xlQmFja2VuZE9iamVjdC0+QXJ0aWNsZUNyZWF0ZSgKICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgJXsgJFRlc3QtPntBcnRpY2xlfSB9LAogICAgKTsKCiAgICAjIHNlbmQgc3VydmV5IGZpcnN0IHRpbWUKICAgIG15ICRSZXNwb25zZSA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RTZW5kKAogICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICBUZXN0ICAgICA9PiAkVGVzdC0+e05hbWV9LAogICAgKTsKCiAgICAjIGNoZWNrIGlmIHN1cnZleSBnb3Qgc2VudAogICAgaWYgKCAkVGVzdC0+e1Jlc3VsdH0tPlswXSApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRSZXNwb25zZS0+e1N1Y2Nlc3N9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSBSZXF1ZXN0U2VuZCgpIC0gc3VydmV5IGdvdCBzZW50IiwKICAgICAgICApOwoKICAgICAgICAkUmVzcG9uc2UtPntEYXRhfS0+e0hlYWRlcn0gPX4gbXsgXiBTdWJqZWN0OiBbIF0gKCAuKz8gKSBcbiBcUys6IFsgXSB9eG1zOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJDEsCiAgICAgICAgICAgICdIZWxwIHVzIHdpdGggeW91ciBmZWVkYmFjayEgPT9VVEYtOD9RPz1DMz04ND1DMz05Nj1DMz05Qz89JywKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gVGVzdCBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gZW1haWwgc3ViamVjdCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWZpbmUgbWFpbCBib2R5CiAgICAgICAgbXkgJE1haWxib2R5MSA9IDw8J0VORCc7ClRoaXMgaXMgYSBtdWx0aS1wYXJ0IG1lc3NhZ2UgaW4gTUlNRSBmb3JtYXQuLi4KCi0tLS0tLS0tLS0tLT1fTUVTU0FHRUlECkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCkNvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlCgpEZWFyIGN1c3RvbWVyLi4uID1DMz1BND1DMz1CNj1DMz1CQz0KCi0tLS0tLS0tLS0tLT1fTUVTU0FHRUlECkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PSJ1dGYtOCIKQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKCjwhRE9DVFlQRSBodG1sPjxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9M0QiQ29udGVudC1UeXBlIiBjb250ZW50PTNEInRleD0KdC9odG1sOyBjaGFyc2V0PTNEdXRmLTgiLz48L2hlYWQ+PGJvZHkgc3R5bGU9M0QiZm9udC1mYW1pbHk6R2VuZXZhLEhlbHZldGljPQphLEFyaWFsLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsiPkRlYXIgY3VzdG9tZXIuLi4gPUMzPUE0PUMzPUI2PUMzPUJDPC89CmJvZHk+PC9odG1sPj0KCi0tLS0tLS0tLS0tLT1fTUVTU0FHRUlELS0KRU5ECgogICAgICAgICMgY29weSBtYWlsIGJvZHkKICAgICAgICBteSAkTWFpbGJvZHkyID0gJFJlc3BvbnNlLT57RGF0YX0tPntCb2R5fTsKCiAgICAgICAgIyBwcmVwYXJlIG1haWwgYm9keQogICAgICAgICRNYWlsYm9keTIgPX4gc3sgXGR7OCwxMn0gLSBcZHszLDZ9IC0gXGR7MSwzfSB9e01FU1NBR0VJRH14bXNnOwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRNYWlsYm9keTIsCiAgICAgICAgICAgICRNYWlsYm9keTEsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IFRlc3Qgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIGVtYWlsIGJvZHkiLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICRSZXNwb25zZS0+e1N1Y2Nlc3N9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSBSZXF1ZXN0U2VuZCgpIC0gbm8gc3VydmV5IGdvdCBzZW50IiwKICAgICAgICApOwogICAgfQoKICAgICMgc2VuZCBzdXJ2ZXkgc2Vjb25kIHRpbWUKICAgICRSZXNwb25zZSA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RTZW5kKAogICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICk7CgogICAgIyBjaGVjayBpZiBzdXJ2ZXkgZ290IHNlbnQKICAgIGlmICggJFRlc3QtPntSZXN1bHR9LT5bMV0gKSB7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRSZXNwb25zZS0+e1N1Y2Nlc3N9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAyIFJlcXVlc3RTZW5kKCkgLSBzdXJ2ZXkgZ290IHNlbnQiLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICRSZXNwb25zZSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gMiBSZXF1ZXN0U2VuZCgpIC0gbm8gc3VydmV5IGdvdCBzZW50IiwKICAgICAgICApOwogICAgfQoKICAgIG15ICREZWxldGUgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXREZWxldGUoCiAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICApOwp9CgpteSBAU2VuZENvbmRpdGlvblRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgPT4gJ1NlbmRDb25kaXRpb24jMSB3aXRob3V0IHNlbmQgY29uZGl0aW9uIGNoZWNrICh0aWNrZXQgdHlwZSBhbmQgc2VydmljZSknLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnICAgICA9PiAwLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnICAgICAgICA9PiAwLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJyA9PiAwLAogICAgICAgIFRpY2tldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIFR5cGVJRCAgICAgICA9PiAwLAogICAgICAgICAgICBTZXJ2aWNlSUQgICAgPT4gMCwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBDb21tdW5pY2F0aW9uQ2hhbm5lbCA9PiAnRW1haWwnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAxLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8c29tZUB1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICAgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1NlbmRDb25kaXRpb24jMiB0cnkgd2l0aCBjaGVjayBmb3IgdGlja2V0IHR5cGUnLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnICAgICA9PiAxLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnICAgICAgICA9PiAwLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJyA9PiAwLAogICAgICAgIFRpY2tldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIFR5cGVJRCAgICAgICA9PiAkVGlja2V0VHlwZUlELAogICAgICAgIH0sCiAgICAgICAgQXJ0aWNsZSA9PiB7CiAgICAgICAgICAgIENvbW11bmljYXRpb25DaGFubmVsID0+ICdFbWFpbCcsCiAgICAgICAgICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDEsCiAgICAgICAgICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICdjdXN0b21lcicsCiAgICAgICAgICAgIEZyb20gICAgICAgICAgICAgICAgID0+ICdTb21lIEN1c3RvbWVyIDxzb21lQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICAgICAgICA9PiAnU29tZSBUbyA8dG9AdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICdTb21lIFN1YmplY3QnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICAgICAgICAgIE1lc3NhZ2VJRCAgICAgICAgICAgID0+ICc8YXNkYXNkYXNkLjEyM0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnU2VuZENvbmRpdGlvbiMzIHRyeSB3aXRoIGNoZWNrIGZvciB0aWNrZXQgdHlwZSAodmFsdWUgZmFsc2UpJywKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJyAgICAgPT4gMSwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJyAgICAgICAgPT4gMCwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycgPT4gMCwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICBUeXBlSUQgICAgICAgPT4gMCwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBDb21tdW5pY2F0aW9uQ2hhbm5lbCA9PiAnRW1haWwnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAxLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8c29tZUB1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICAgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1NlbmRDb25kaXRpb24jNCB0cnkgd2l0aCBjaGVjayBmb3Igc2VydmljZScsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uVGlja2V0VHlwZScgICAgID0+IDAsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZScgICAgICAgID0+IDEsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uQ3VzdG9tZXJGaWVsZHMnID0+IDAsCiAgICAgICAgVGlja2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgICAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgU2VydmljZUlEICAgID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQ29tbXVuaWNhdGlvbkNoYW5uZWwgPT4gJ0VtYWlsJywKICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPHNvbWVAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdTb21lIFRvIDx0b0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ1NvbWUgU3ViamVjdCcsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgICAgICAgICAgTWVzc2FnZUlEICAgICAgICAgICAgPT4gJzxhc2Rhc2Rhc2QuMTIzQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdPd25lclVwZGF0ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0FnZW50Tm90aWZ5ICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZW5kIGFnZW50IG5vdGlmaWNhdGlvbnMKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdTZW5kQ29uZGl0aW9uIzUgdHJ5IHdpdGggY2hlY2sgZm9yIHNlcnZpY2UgKHZhbHVlIGZhbHNlKScsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uVGlja2V0VHlwZScgICAgID0+IDAsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZScgICAgICAgID0+IDEsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uQ3VzdG9tZXJGaWVsZHMnID0+IDAsCiAgICAgICAgVGlja2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgICAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgU2VydmljZUlEICAgID0+IDAsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQ29tbXVuaWNhdGlvbkNoYW5uZWwgPT4gJ0VtYWlsJywKICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPHNvbWVAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdTb21lIFRvIDx0b0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ1NvbWUgU3ViamVjdCcsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgICAgICAgICAgTWVzc2FnZUlEICAgICAgICAgICAgPT4gJzxhc2Rhc2Rhc2QuMTIzQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdPd25lclVwZGF0ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0FnZW50Tm90aWZ5ICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZW5kIGFnZW50IG5vdGlmaWNhdGlvbnMKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdTZW5kQ29uZGl0aW9uIzYgdHJ5IHdpdGggY2hlY2sgZm9yIHRpY2tldCB0eXBlIGFuZCBzZXJ2aWNlJywKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJyAgICAgPT4gMSwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJyAgICAgICAgPT4gMSwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycgPT4gMCwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICBUeXBlSUQgICAgICAgPT4gJFRpY2tldFR5cGVJRCwKICAgICAgICAgICAgU2VydmljZUlEICAgID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQ29tbXVuaWNhdGlvbkNoYW5uZWwgPT4gJ0VtYWlsJywKICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPHNvbWVAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdTb21lIFRvIDx0b0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ1NvbWUgU3ViamVjdCcsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgICAgICAgICAgTWVzc2FnZUlEICAgICAgICAgICAgPT4gJzxhc2Rhc2Rhc2QuMTIzQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdPd25lclVwZGF0ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0FnZW50Tm90aWZ5ICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZW5kIGFnZW50IG5vdGlmaWNhdGlvbnMKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSA9PiAnU2VuZENvbmRpdGlvbiM3IHRyeSB3aXRoIGNoZWNrIGZvciB0aWNrZXQgdHlwZSBpZCAodmFsdWUgZmFsc2UpIGFuZCBzZXJ2aWNlJywKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJyAgICAgPT4gMSwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJyAgICAgICAgPT4gMSwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycgPT4gMCwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICBUeXBlSUQgICAgICAgPT4gMCwKICAgICAgICAgICAgU2VydmljZUlEICAgID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQ29tbXVuaWNhdGlvbkNoYW5uZWwgPT4gJ0VtYWlsJywKICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPHNvbWVAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdTb21lIFRvIDx0b0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ1NvbWUgU3ViamVjdCcsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgICAgICAgICAgTWVzc2FnZUlEICAgICAgICAgICAgPT4gJzxhc2Rhc2Rhc2QuMTIzQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdPd25lclVwZGF0ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0FnZW50Tm90aWZ5ICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZW5kIGFnZW50IG5vdGlmaWNhdGlvbnMKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSA9PiAnU2VuZENvbmRpdGlvbiM4IHRyeSB3aXRoIGNoZWNrIGZvciB0aWNrZXQgdHlwZSBhbmQgc2VydmljZSAodmFsdWUgZmFsc2UpJywKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJyAgICAgPT4gMSwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJyAgICAgICAgPT4gMSwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycgPT4gMCwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICBUeXBlSUQgICAgICAgPT4gJFRpY2tldFR5cGVJRCwKICAgICAgICAgICAgU2VydmljZUlEICAgID0+IDAsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQ29tbXVuaWNhdGlvbkNoYW5uZWwgPT4gJ0VtYWlsJywKICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPHNvbWVAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdTb21lIFRvIDx0b0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ1NvbWUgU3ViamVjdCcsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgICAgICAgICAgTWVzc2FnZUlEICAgICAgICAgICAgPT4gJzxhc2Rhc2Rhc2QuMTIzQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdPd25lclVwZGF0ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0FnZW50Tm90aWZ5ICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZW5kIGFnZW50IG5vdGlmaWNhdGlvbnMKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSA9PgogICAgICAgICAgICAnU2VuZENvbmRpdGlvbiM5IHRyeSB3aXRoIGNoZWNrIGZvciB0aWNrZXQgdHlwZSAodmFsdWUgZmFsc2UpIGFuZCBzZXJ2aWNlICh2YWx1ZSBmYWxzZSknLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnICAgICA9PiAxLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnICAgICAgICA9PiAxLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJyA9PiAwLAogICAgICAgIFRpY2tldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIFR5cGVJRCAgICAgICA9PiAwLAogICAgICAgICAgICBTZXJ2aWNlSUQgICAgPT4gMCwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBDb21tdW5pY2F0aW9uQ2hhbm5lbCA9PiAnRW1haWwnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAxLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8c29tZUB1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICAgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lID0+CiAgICAgICAgICAgICdTZW5kQ29uZGl0aW9uIzEwIHRyeSB3aXRoIGNoZWNrIGZvciBmaXJzdG5hbWUgb2YgY3VzdG9tZXJ1c2VyIC0gbWF0Y2gnLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnICAgICA9PiAwLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnICAgICAgICA9PiAwLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJyA9PiB7CiAgICAgICAgICAgIFVzZXJGaXJzdG5hbWUgPT4gMSwKICAgICAgICB9LAogICAgICAgIFRpY2tldCA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkVGVzdEN1c3RvbWVyVXNlcjEsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgVHlwZUlEICAgICAgID0+IDAsCiAgICAgICAgICAgIFNlcnZpY2VJRCAgICA9PiAwLAogICAgICAgIH0sCiAgICAgICAgQXJ0aWNsZSA9PiB7CiAgICAgICAgICAgIEFydGljbGVUeXBlICAgID0+ICdlbWFpbC1leHRlcm5hbCcsCiAgICAgICAgICAgIFNlbmRlclR5cGUgICAgID0+ICdjdXN0b21lcicsCiAgICAgICAgICAgIEZyb20gICAgICAgICAgID0+ICdTb21lIEN1c3RvbWVyIDxzb21lQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICA9PiAnU29tZSBUbyA8dG9AdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgID0+ICdTb21lIFN1YmplY3QnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICAgICAgICAgIE1lc3NhZ2VJRCAgICAgID0+ICc8YXNkYXNkYXNkLjEyM0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZW5kIGFnZW50IG5vdGlmaWNhdGlvbnMKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSA9PgogICAgICAgICAgICAnU2VuZENvbmRpdGlvbiMxMSB0cnkgd2l0aCBjaGVjayBmb3IgZmlyc3RuYW1lIG9mIGN1c3RvbWVydXNlciAtIG5vIG1hdGNoJywKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJyAgICAgPT4gMCwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJyAgICAgICAgPT4gMCwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycgPT4gewogICAgICAgICAgICBVc2VyRmlyc3RuYW1lID0+IDEsCiAgICAgICAgfSwKICAgICAgICBUaWNrZXQgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJFRlc3RDdXN0b21lclVzZXIyLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIFR5cGVJRCAgICAgICA9PiAwLAogICAgICAgICAgICBTZXJ2aWNlSUQgICAgPT4gMCwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBBcnRpY2xlVHlwZSAgICA9PiAnZW1haWwtZXh0ZXJuYWwnLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8c29tZUB1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAopOwoKZm9yIG15ICRUZXN0IChAU2VuZENvbmRpdGlvblRlc3RzKSB7CgogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OlNlbmRQZXJpb2QnLAogICAgICAgIFZhbHVlID0+ICcwJywKICAgICk7CgogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnLAogICAgICAgIFZhbHVlID0+ICRUZXN0LT57J1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uVGlja2V0VHlwZSd9LAogICAgKTsKCiAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgS2V5ICAgPT4gJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZScsCiAgICAgICAgVmFsdWUgPT4gJFRlc3QtPnsnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJ30sCiAgICApOwoKICAgICRDb25maWdPYmplY3QtPlNldCgKICAgICAgICBLZXkgICA9PiAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycsCiAgICAgICAgVmFsdWUgPT4gJFRlc3QtPnsnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcyd9LAogICAgKTsKCiAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgJXsgJFRlc3QtPntUaWNrZXR9IH0sCiAgICApOwoKICAgIG15ICRBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKS0+QmFja2VuZEZvckNoYW5uZWwoCiAgICAgICAgQ2hhbm5lbE5hbWUgPT4gJFRlc3QtPntBcnRpY2xlfS0+e0NvbW11bmljYXRpb25DaGFubmVsfSwKICAgICk7CgogICAgbXkgJEFydGljbGVJRCA9ICRBcnRpY2xlQmFja2VuZE9iamVjdC0+QXJ0aWNsZUNyZWF0ZSgKICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgJXsgJFRlc3QtPntBcnRpY2xlfSB9LAogICAgKTsKCiAgICAjIHNlbmQgc3VydmV5IGZpcnN0IHRpbWUKICAgIG15ICRSZXNwb25zZSA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RTZW5kKAogICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICk7CgogICAgIyBjaGVjayBpZiBzdXJ2ZXkgZ290IHNlbnQKICAgIGlmICggJFRlc3QtPntTdWNjZXNzfSApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRSZXNwb25zZS0+e1N1Y2Nlc3N9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSBSZXF1ZXN0U2VuZCgpIC0gc3VydmV5IGdvdCBzZW50IiwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgaWYgKCAkUmVzcG9uc2UgZXEgJ1F1ZXVlJyB8fCAkUmVzcG9uc2UgZXEgJ1NlcnZpY2UnIHx8ICRSZXNwb25zZSBlcSAnVHlwZScgKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFJlc3BvbnNlLAogICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gUmVxdWVzdFNlbmQoKSAtIG5vIHN1cnZleSBnb3Qgc2VudCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICAgICAkUmVzcG9uc2UsCiAgICAgICAgICAgICAgICAiJFRlc3QtPntOYW1lfSBSZXF1ZXN0U2VuZCgpIC0gbm8gc3VydmV5IGdvdCBzZW50IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJERlbGV0ZSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7Cn0KCiMgdGVzdCBHZXRSaWNoVGV4dERvY3VtZW50Q29tcGxldGUKewogICAgbXkgJVRleHQ7CgogICAgI3Rlc3RzIGZvciByaWNoIHRleHQKICAgICRUZXh0e1JpY2hUZXh0fSA9IHsKICAgICAgICBJbnB1dCA9PgogICAgICAgICAgICAnJGh0bWwvdGV4dCQgPGVtPlRoaXMgaXMgdGhlIGludHJvZHVjdGlvbiB0byB0aGlzIHN1cnZleSwgaWYgeW91IHdhbnQgdG8gYW5zd2VyIGl0IHlvdSBoYXZlIHRvPGJyIC8+CnJlYWQgdGhpcyBmaXJzdCwgcGxlYXNlIGxldCB1cyB0ZWxsIHlvdSB0aGFua3MgZm9yIHRoZSBvcHBvcnR1bml0eSB0byBpbnRlcmFjdDxiciAvPgp3aXRoIHlvdS48L2VtPjxiciAvPgo8dWw+CiAgICA8bGk+CiAgICAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMTI4KTsiPlBsZWFzZSByZWFkIGFsbCB0aGUgaW5zdHJ1Y3Rpb25zPC9zcGFuPjwvbGk+CiAgICA8bGk+CiAgICAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMTI4KTsiPlBsZWFzZSB0YWtlIGF0dGVudGlvbiBpbiBldmVyeSBxdWVzdGlvbjwvc3Bhbj48L2xpPgogICAgPGxpPgogICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDEyOCk7Ij5BbnN3ZXIgYXMgY2xlYXIgYXMgcG9zc2libGU8L3NwYW4+PC9saT4KPC91bD4KPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMjU1LCAxNjAsIDEyMik7Ij5UaGlzIGlzIGFsbCB3ZSBoYXZlIHRvIHRlbGwgeW91IGZvciBub3csIHBsZWFzZSB0YWtlIHRoZSBvcHBvcnR1bml0eSBub3cgdG88YnIgLz4KZXhwcmVzcyB5b3VyIGZlZWxpbmdzIGluIG91ciBzdXJ2ZXkuPC9zcGFuPjxiciAvPgo8YnIgLz4KPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMjU1LCAxNjAsIDEyMik7Ij4gZ3JlZXRpbmdzLDxiciAvPgo8YnIgLz4KZGFuaWVseiw8L3NwYW4+PGJyIC8+JywKICAgICAgICBPdXRwdXQgPT4KICAgICAgICAgICAgJzwhRE9DVFlQRSBodG1sPjxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ii8+PC9oZWFkPjxib2R5IHN0eWxlPSJmb250LWZhbWlseTpHZW5ldmEsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsiPjxlbT5UaGlzIGlzIHRoZSBpbnRyb2R1Y3Rpb24gdG8gdGhpcyBzdXJ2ZXksIGlmIHlvdSB3YW50IHRvIGFuc3dlciBpdCB5b3UgaGF2ZSB0bzxiciAvPgpyZWFkIHRoaXMgZmlyc3QsIHBsZWFzZSBsZXQgdXMgdGVsbCB5b3UgdGhhbmtzIGZvciB0aGUgb3Bwb3J0dW5pdHkgdG8gaW50ZXJhY3Q8YnIgLz4Kd2l0aCB5b3UuPC9lbT48YnIgLz4KPHVsPgogICAgPGxpPgogICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDEyOCk7Ij5QbGVhc2UgcmVhZCBhbGwgdGhlIGluc3RydWN0aW9uczwvc3Bhbj48L2xpPgogICAgPGxpPgogICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDEyOCk7Ij5QbGVhc2UgdGFrZSBhdHRlbnRpb24gaW4gZXZlcnkgcXVlc3Rpb248L3NwYW4+PC9saT4KICAgIDxsaT4KICAgICAgICA8c3BhbiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAxMjgpOyI+QW5zd2VyIGFzIGNsZWFyIGFzIHBvc3NpYmxlPC9zcGFuPjwvbGk+CjwvdWw+CjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDI1NSwgMTYwLCAxMjIpOyI+VGhpcyBpcyBhbGwgd2UgaGF2ZSB0byB0ZWxsIHlvdSBmb3Igbm93LCBwbGVhc2UgdGFrZSB0aGUgb3Bwb3J0dW5pdHkgbm93IHRvPGJyIC8+CmV4cHJlc3MgeW91ciBmZWVsaW5ncyBpbiBvdXIgc3VydmV5Ljwvc3Bhbj48YnIgLz4KPGJyIC8+CjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDI1NSwgMTYwLCAxMjIpOyI+IGdyZWV0aW5ncyw8YnIgLz4KPGJyIC8+CmRhbmllbHosPC9zcGFuPjxiciAvPjwvYm9keT48L2h0bWw+JywKICAgIH07CgogICAgIyBjcmVhdGUgdGVzdHMgZm9yIHNpbXBsZSB0ZXh0CiAgICAkVGV4dHtTaW1wbGVUZXh0fSA9IHsKICAgICAgICBJbnB1dCA9PiAiVGhpcyBpcyBhbiBpbnRlcm5hbCBkZXNjcmlwdGlvbiBleGFtcGxlOgoKIC0gT25lCiAtIFR3bwogLSBUaHJlZQogLSBGb3VyCiAtIEZpdmUKClRoYXQncyBpdC4KLWR6CiIsCiAgICAgICAgT3V0cHV0ID0+CiAgICAgICAgICAgICc8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIvPjwvaGVhZD48Ym9keSBzdHlsZT0iZm9udC1mYW1pbHk6R2VuZXZhLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij5UaGlzIGlzIGFuIGludGVybmFsIGRlc2NyaXB0aW9uIGV4YW1wbGU6CgogLSBPbmUKIC0gVHdvCiAtIFRocmVlCiAtIEZvdXIKIC0gRml2ZQoKVGhhdFwncyBpdC4KLWR6CjwvYm9keT48L2h0bWw+JywKICAgIH07CgogICAgbXkgJERvY3VtZW50Q29tcGxldGU7CiAgICBmb3IgbXkgJFRleHRUeXBlICggc29ydCBrZXlzICVUZXh0ICkgewogICAgICAgICREb2N1bWVudENvbXBsZXRlID0gJFN1cnZleU9iamVjdC0+R2V0UmljaFRleHREb2N1bWVudENvbXBsZXRlKCBUZXh0ID0+ICRUZXh0eyRUZXh0VHlwZX0tPntJbnB1dH0gKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRUZXh0eyRUZXh0VHlwZX0tPntPdXRwdXR9LAogICAgICAgICAgICAkRG9jdW1lbnRDb21wbGV0ZSwKICAgICAgICAgICAgIkdldFJpY2hUZXh0RG9jdW1lbnRDb21wbGV0ZSBUZXN0IC0gJFRleHRUeXBlIiwKICAgICAgICApOwogICAgfQp9CgojIGFkZGVkICh2ZXJ5IGxpbWl0ZWQpIFN1cnZleVNlYXJjaCB0ZXN0cwoKbXkgQElEcyA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVNlYXJjaCgKICAgIE5vdGlmaWNhdGlvblNlbmRlciA9PiAncXVhbGl0eUB1bml0dGVzdC5jb20nLAogICAgTGltaXQgICAgICAgICAgICAgID0+IDE1MCwgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgc2NhbGFyIEBJRHMsCiAgICAiU3VydmV5U2VhcmNoKCkiLAopOwoKbXkgQFNvcnRlZElEcyA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVNlYXJjaCgKICAgIE5vdGlmaWNhdGlvblNlbmRlciA9PiAncXVhbGl0eUB1bml0dGVzdC5jb20nLAogICAgT3JkZXJCeSAgICAgICAgICAgID0+IFsgJ1N1cnZleUlEJywgJ1RpdGxlJyBdLCAgICAjIChvcHRpb25hbCkKICAgIE9yZGVyQnlEaXJlY3Rpb24gICA9PiBbICdEb3duJywgJ1VwJyBdLCAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICBMaW1pdCAgICAgICAgICAgICAgPT4gMTUwLCAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgIHNjYWxhciBASURzLAogICAgIlN1cnZleVNlYXJjaCgpIHdpdGggc29ydCIsCik7CgojIGNsZWFudXAgaXMgZG9uZSBieSBSZXN0b3JlRGF0YWJhc2UKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZG8gbm90IGNoZWNrIFJpY2hUZXh0CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0Zyb250ZW5kOjpSaWNoVGV4dCcsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAxLAogICAgICAgICAgICAgICAgVXNlclBob25lID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudFN1cnZleUFkZAogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50U3VydmV5QWRkIik7CgogICAgICAgICMgY2hlY2sgcGFnZQogICAgICAgIGZvciBteSAkSUQgKAogICAgICAgICAgICBxdyhUaXRsZSBJbnRyb2R1Y3Rpb24gTm90aWZpY2F0aW9uU2VuZGVyIE5vdGlmaWNhdGlvblN1YmplY3QgTm90aWZpY2F0aW9uQm9keSBRdWV1ZXMgRGVzY3JpcHRpb24pCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJElEIiwgJ2NzcycgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZCgpOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgdGVzdCBzdXJ2ZXkKICAgICAgICBteSAkU3VydmV5VGl0bGUgPSAnU3VydmV5ICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1RpdGxlIiwgICAgICAgICdjc3MnICktPnNlbmRfa2V5cygkU3VydmV5VGl0bGUpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0ludHJvZHVjdGlvbiIsICdjc3MnICktPnNlbmRfa2V5cygnU2VsZW5pdW0gSW50cm9kdWN0aW9uJyk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNRdWV1ZV9TZWFyY2gnKS52YWwoJzJ8fFJhdycpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7Iik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRGVzY3JpcHRpb24iLCAnY3NzJyApLT5zZW5kX2tleXMoJ1NlbGVuaXVtIERlc2NyaXB0aW9uJyk7CgogICAgICAgICMgc2Nyb2xsCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucycpWzBdLnNjcm9sbEludG9WaWV3KHRydWUpOyIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNDdXN0b21lclVzZXJDb25kaXRpb25zJykudmFsKCdVc2VyTG9naW4nKS5jaGFuZ2UoKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNEZXNjcmlwdGlvbiIsICdjc3MnICktPnNlbmRfa2V5cygnY3VzdG9tZXInKTsKCiAgICAgICAgIyBVc2VyTG9naW4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nQ3JlYXRlJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgY2hlY2sgZm9yIHRlc3QgY3JlYXRlZCBzdXJ2ZXkgdmFsdWVzCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkU3VydmV5VGl0bGUgKSA+IC0xLAogICAgICAgICAgICAiJFN1cnZleVRpdGxlIHRpdGxlIGlzIGZvdW5kIgogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBzdXJ2ZXkKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgbXkgJFN1cnZleVRpdGxlUXVvdGVkID0gJERCT2JqZWN0LT5RdW90ZSgkU3VydmV5VGl0bGUpOwogICAgICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMICA9PiAiU0VMRUNUIGlkIEZST00gc3VydmV5IFdIRVJFIHRpdGxlID0gPyIsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFN1cnZleVRpdGxlUXVvdGVkIF0KICAgICAgICApOwogICAgICAgIG15ICRTdXJ2ZXlJRDsKICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgJFN1cnZleUlEID0gJFJvd1swXTsKICAgICAgICB9CgogICAgICAgIG15ICVTdXJ2ZXkgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JyktPlN1cnZleUdldCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CgojIERlbGV0ZSBrZXlzIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBjb21wYXJlLiBOb3RlIHRoYXQgQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0pTT04gaGFzIHNvbWV0aW1lcyBkaWZmZXJlbnQgb3JkZXIgYW5kIHRoZXJlZm9yZQojIGl0J3Mgbm90IGV2YWx1YXRlZC4gQWxzbywgTm90aWZpY2F0aW9uQm9keSBjb250YWlucyBPVFJTIGxpbmssIHdoaWNoIGlzIGRpZmZlcmVudCBmb3IgZWFjaCBzeXN0ZW0gYW5kIGl0J3Mgbm90IHNvIHJlbGV2YW50IGZvciB0aGUgdGVzdC4KICAgICAgICBmb3IgbXkgJEtleSAoCiAgICAgICAgICAgIHF3KENyZWF0ZVRpbWUgQ3JlYXRlQnkgQ2hhbmdlVGltZSBDaGFuZ2VCeSBTdXJ2ZXlOdW1iZXIgQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0pTT04gTm90aWZpY2F0aW9uQm9keSkKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgIG15ICRWYWx1ZSA9IGRlbGV0ZSAkU3VydmV5eyRLZXl9OwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRWYWx1ZSwKICAgICAgICAgICAgICAgICJNYWtlIHN1cmUgdGhhdCB0aGVyZSB3YXMgJyRLZXknIGRlZmluZWQgaW4gU3VydmV5IGhhc2guIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVFeHBlY3RlZFZhbHVlID0gKAogICAgICAgICAgICAiQ2hhbmdlVXNlckZpcnN0bmFtZSIgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgICJDaGFuZ2VVc2VyRnVsbG5hbWUiICAgICA9PiAiJFRlc3RVc2VyTG9naW4gJFRlc3RVc2VyTG9naW4iLAogICAgICAgICAgICAiQ2hhbmdlVXNlckxhc3RuYW1lIiAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgICJDaGFuZ2VVc2VyTG9naW4iICAgICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgIkNyZWF0ZVVzZXJGaXJzdG5hbWUiICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICAiQ3JlYXRlVXNlckZ1bGxuYW1lIiAgICAgPT4gIiRUZXN0VXNlckxvZ2luICRUZXN0VXNlckxvZ2luIiwKICAgICAgICAgICAgIkNyZWF0ZVVzZXJMYXN0bmFtZSIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICAiQ3JlYXRlVXNlckxvZ2luIiAgICAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgICJDdXN0b21lclVzZXJDb25kaXRpb25zIiA9PiB7CiAgICAgICAgICAgICAgICAiVXNlckxvZ2luIiA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiTmVnYXRpb24iICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICJSZWdFeHBWYWx1ZSIgPT4gIiIsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJEZXNjcmlwdGlvbiIgICAgICAgICA9PiAiU2VsZW5pdW0gRGVzY3JpcHRpb25jdXN0b21lciIsCiAgICAgICAgICAgICJJbnRyb2R1Y3Rpb24iICAgICAgICA9PiAiU2VsZW5pdW0gSW50cm9kdWN0aW9uIiwKICAgICAgICAgICAgIk5vdGlmaWNhdGlvblNlbmRlciIgID0+ICJxdWFsaXR5XEBleGFtcGxlLmNvbSIsCiAgICAgICAgICAgICJOb3RpZmljYXRpb25TdWJqZWN0IiA9PiAiSGVscCB1cyB3aXRoIHlvdXIgZmVlZGJhY2shIiwKICAgICAgICAgICAgIlF1ZXVlcyIgICAgICAgICAgICAgID0+IFtdLAogICAgICAgICAgICAiU2VuZENvbmRpdGlvbnNSYXciID0+ICItLS1cbkN1c3RvbWVyVXNlckNvbmRpdGlvbnM6XG4gIFVzZXJMb2dpbjpcbiAgLSBOZWdhdGlvbjogMFxuICAgIFJlZ0V4cFZhbHVlOiAnJ1xuIiwKICAgICAgICAgICAgIlN0YXR1cyIgICAgICAgICAgICA9PiAiTmV3IiwKICAgICAgICAgICAgIlN1cnZleUlEIiAgICAgICAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgICJUaXRsZSIgICAgICAgICAgICAgPT4gJFN1cnZleVRpdGxlLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgXCVTdXJ2ZXksCiAgICAgICAgICAgIFwlRXhwZWN0ZWRWYWx1ZSwKICAgICAgICAgICAgJ0NoZWNrIFN1cnZleSBoYXNoIGRlZXBseS4nLAogICAgICAgICk7CgogICAgICAgICMgY2xlYW4tdXAgdGVzdCBjcmVhdGVkIHN1cnZleSBkYXRhCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBzdXJ2ZXlfcXVldWUgV0hFUkUgc3VydmV5X2lkID0gPyIsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFN1cnZleUlEIF0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJTdXJ2ZXktUXVldWUgZm9yICRTdXJ2ZXlUaXRsZSBpcyBkZWxldGVkIiwKICAgICAgICApOwoKICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleSBXSEVSRSBpZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAjIERvIG5vdCBjaGVjayBSaWNoVGV4dC4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnRnJvbnRlbmQ6OlJpY2hUZXh0JywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwoKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAxLAogICAgICAgICAgICAgICAgVXNlclBob25lID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCBzdXJ2ZXkuCiAgICAgICAgbXkgJFN1cnZleVRpdGxlICAgICAgICAgPSAnU3VydmV5ICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRJbnRyb2R1Y3Rpb24gICAgICAgID0gJ1N1cnZleSBJbnRyb2R1Y3Rpb24nOwogICAgICAgIG15ICREZXNjcmlwdGlvbiAgICAgICAgID0gJ1N1cnZleSBEZXNjcmlwdGlvbic7CiAgICAgICAgbXkgJE5vdGlmaWNhdGlvblNlbmRlciAgPSAncXVhbGl0eUBleGFtcGxlLmNvbSc7CiAgICAgICAgbXkgJE5vdGlmaWNhdGlvblN1YmplY3QgPSAnU3VydmV5IE5vdGlmaWNhdGlvbiBTdWJqZWN0JzsKICAgICAgICBteSAkTm90aWZpY2F0aW9uQm9keSAgICA9ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIEJvZHknOwoKICAgICAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKICAgICAgICBteSAkU3VydmV5SUQgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlBZGQoCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgICA9PiAkU3VydmV5VGl0bGUsCiAgICAgICAgICAgIEludHJvZHVjdGlvbiAgICAgICAgICAgPT4gJEludHJvZHVjdGlvbiwKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICA9PiAkRGVzY3JpcHRpb24sCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciAgICAgPT4gJE5vdGlmaWNhdGlvblNlbmRlciwKICAgICAgICAgICAgTm90aWZpY2F0aW9uU3ViamVjdCAgICA9PiAkTm90aWZpY2F0aW9uU3ViamVjdCwKICAgICAgICAgICAgTm90aWZpY2F0aW9uQm9keSAgICAgICA9PiAkTm90aWZpY2F0aW9uQm9keSwKICAgICAgICAgICAgUXVldWVzICAgICAgICAgICAgICAgICA9PiBbMl0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlckNvbmRpdGlvbnMgPT4gewogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5lZ2F0aW9uICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIFJlZ0V4cFZhbHVlID0+ICdKb2huJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VydmV5SUQsCiAgICAgICAgICAgICJTdXJ2ZXkgSUQgJFN1cnZleUlEIGlzIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50U3VydmV5Wm9vbSBvZiBjcmVhdGVkIHRlc3Qgc3VydmV5LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD0kU3VydmV5SUQiKTsKCiAgICAgICAgIyBDbGljayBvbiAnRWRpdCBHZW5lcmFsIEluZm8nIGFuZCBzd2l0Y2ggc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI01lbnUwMTAtRWRpdEdlbmVyYWxJbmZvIiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgbXkgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIFdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNUaXRsZSIpLmxlbmd0aCcgKTsKCiAgICAgICAgIyBHZXQgdGVzdCBwYXJhbXMuCiAgICAgICAgbXkgQFRlc3QgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElEICAgICA9PiAnVGl0bGUnLAogICAgICAgICAgICAgICAgU3RvcmVkID0+ICRTdXJ2ZXlUaXRsZSwKICAgICAgICAgICAgICAgIEVkaXRlZCA9PiAkU3VydmV5VGl0bGUgLiAnIGVkaXRlZCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElEICAgICA9PiAnSW50cm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIFN0b3JlZCA9PiAkSW50cm9kdWN0aW9uLAogICAgICAgICAgICAgICAgRWRpdGVkID0+ICRJbnRyb2R1Y3Rpb24gLiAnIGVkaXRlZCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElEICAgICA9PiAnRGVzY3JpcHRpb24nLAogICAgICAgICAgICAgICAgU3RvcmVkID0+ICREZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgIEVkaXRlZCA9PiAkRGVzY3JpcHRpb24gLiAnIGVkaXRlZCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElEICAgICA9PiAnTm90aWZpY2F0aW9uU2VuZGVyJywKICAgICAgICAgICAgICAgIFN0b3JlZCA9PiAkTm90aWZpY2F0aW9uU2VuZGVyLAogICAgICAgICAgICAgICAgRWRpdGVkID0+ICROb3RpZmljYXRpb25TZW5kZXIgLiAnIGVkaXRlZCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElEICAgICA9PiAnTm90aWZpY2F0aW9uU3ViamVjdCcsCiAgICAgICAgICAgICAgICBTdG9yZWQgPT4gJE5vdGlmaWNhdGlvblN1YmplY3QsCiAgICAgICAgICAgICAgICBFZGl0ZWQgPT4gJE5vdGlmaWNhdGlvblN1YmplY3QgLiAnIGVkaXRlZCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElEICAgICA9PiAnTm90aWZpY2F0aW9uQm9keScsCiAgICAgICAgICAgICAgICBTdG9yZWQgPT4gJE5vdGlmaWNhdGlvbkJvZHksCiAgICAgICAgICAgICAgICBFZGl0ZWQgPT4gJE5vdGlmaWNhdGlvbkJvZHkgLiAnIGVkaXRlZCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayB0ZXN0IHN1cnZleSB2YWx1ZXMgYW5kIGVkaXQgdGhlbS4KICAgICAgICBmb3IgbXkgJFN1cnZleVN0b3JlZCAoQFRlc3QpIHsKCiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRTdXJ2ZXlTdG9yZWQtPntJRH0iLCAnY3NzJyApLT5nZXRfdmFsdWUoKSwKICAgICAgICAgICAgICAgICRTdXJ2ZXlTdG9yZWQtPntTdG9yZWR9LAogICAgICAgICAgICAgICAgIiMkU3VydmV5U3RvcmVkLT57SUR9IHN0b3JlZCB2YWx1ZSIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIEVkaXQgdmFsdWUuCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRTdXJ2ZXlTdG9yZWQtPntJRH0iLCAnY3NzJyApLT5zZW5kX2tleXMoJyBlZGl0ZWQnKTsKICAgICAgICB9CgogICAgICAgICMgVXBkYXRlIGN1c3RvbWVyIHVzZXIgY29uZGl0aW9uLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0N1c3RvbWVyVXNlckNvbmRpdGlvbnMnKVswXS5zY3JvbGxJbnRvVmlldyh0cnVlKTsiLAogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjVXNlckxvZ2luSW5wdXQxIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCcgZWRpdGVkJyk7CgogICAgICAgICMgU3VibWl0IHVwZGF0ZXMgYW5kIHN3aXRjaCBiYWNrIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nVXBkYXRlJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5jbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDEgKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMF0gKTsKCiAgICAgICAgIyBDbGljayBvbiAnRWRpdCBHZW5lcmFsIEluZm8nIGFnYWluIGFuZCBzd2l0Y2ggd2luZG93LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRSZWZyZXNoKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTWVudTAxMC1FZGl0R2VuZXJhbEluZm8iLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDIgKTsKICAgICAgICAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CgogICAgICAgICMgV2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI1RpdGxlIikubGVuZ3RoJyApOwoKICAgICAgICAjIENoZWNrIGVkaXRlZCB2YWx1ZXMuCiAgICAgICAgZm9yIG15ICRTdXJ2ZXJ5RWRpdGVkIChAVGVzdCkgewoKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJFN1cnZlcnlFZGl0ZWQtPntJRH0iLCAnY3NzJyApLT5nZXRfdmFsdWUoKSwKICAgICAgICAgICAgICAgICRTdXJ2ZXJ5RWRpdGVkLT57RWRpdGVkfSwKICAgICAgICAgICAgICAgICIjJFN1cnZlcnlFZGl0ZWQtPntJRH0gc3RvcmVkIHZhbHVlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoCiAgICAgICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBrZXlzIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBjb21wYXJlLgogICAgICAgICMgTm90ZSB0aGF0IEN1c3RvbWVyVXNlckNvbmRpdGlvbnNKU09OIGhhcyBzb21ldGltZXMgZGlmZmVyZW50IG9yZGVyIGFuZCB0aGVyZWZvcmUKICAgICAgICAjIGl0J3Mgbm90IGV2YWx1YXRlZC4KICAgICAgICBmb3IgbXkgJEtleSAocXcoQ3JlYXRlVGltZSBDcmVhdGVCeSBDaGFuZ2VUaW1lIENoYW5nZUJ5IFN1cnZleU51bWJlciBDdXN0b21lclVzZXJDb25kaXRpb25zSlNPTikpIHsKCiAgICAgICAgICAgIG15ICRWYWx1ZSA9IGRlbGV0ZSAkU3VydmV5eyRLZXl9OwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRWYWx1ZSwKICAgICAgICAgICAgICAgICJNYWtlIHN1cmUgdGhhdCB0aGVyZSB3YXMgJyRLZXknIGRlZmluZWQgaW4gU3VydmV5IGhhc2guIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVFeHBlY3RlZFZhbHVlID0gKAogICAgICAgICAgICAiQ2hhbmdlVXNlckZpcnN0bmFtZSIgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgICJDaGFuZ2VVc2VyRnVsbG5hbWUiICAgICA9PiAiJFRlc3RVc2VyTG9naW4gJFRlc3RVc2VyTG9naW4iLAogICAgICAgICAgICAiQ2hhbmdlVXNlckxhc3RuYW1lIiAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgICJDaGFuZ2VVc2VyTG9naW4iICAgICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgIkNyZWF0ZVVzZXJGaXJzdG5hbWUiICAgID0+ICdBZG1pbicsCiAgICAgICAgICAgICJDcmVhdGVVc2VyRnVsbG5hbWUiICAgICA9PiAnQWRtaW4gT1RSUycsCiAgICAgICAgICAgICJDcmVhdGVVc2VyTGFzdG5hbWUiICAgICA9PiAnT1RSUycsCiAgICAgICAgICAgICJDcmVhdGVVc2VyTG9naW4iICAgICAgICA9PiAncm9vdEBsb2NhbGhvc3QnLAogICAgICAgICAgICAiQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyIgPT4gewogICAgICAgICAgICAgICAgIlVzZXJMb2dpbiIgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIk5lZ2F0aW9uIiAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgICAgICAiUmVnRXhwVmFsdWUiID0+ICJKb2huIGVkaXRlZCIsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJEZXNjcmlwdGlvbiIgICAgICAgICA9PiAiJERlc2NyaXB0aW9uIGVkaXRlZCIsCiAgICAgICAgICAgICJJbnRyb2R1Y3Rpb24iICAgICAgICA9PiAiJEludHJvZHVjdGlvbiBlZGl0ZWQiLAogICAgICAgICAgICAiTm90aWZpY2F0aW9uQm9keSIgICAgPT4gIiROb3RpZmljYXRpb25Cb2R5IGVkaXRlZCIsCiAgICAgICAgICAgICJOb3RpZmljYXRpb25TZW5kZXIiICA9PiAiJE5vdGlmaWNhdGlvblNlbmRlciBlZGl0ZWQiLAogICAgICAgICAgICAiTm90aWZpY2F0aW9uU3ViamVjdCIgPT4gIiROb3RpZmljYXRpb25TdWJqZWN0IGVkaXRlZCIsCiAgICAgICAgICAgICJRdWV1ZXMiICAgICAgICAgICAgICA9PiBbMl0sCiAgICAgICAgICAgICJTZW5kQ29uZGl0aW9uc1JhdyIgPT4KICAgICAgICAgICAgICAgICItLS1cbkN1c3RvbWVyVXNlckNvbmRpdGlvbnM6XG4gIFVzZXJMb2dpbjpcbiAgLSBOZWdhdGlvbjogMFxuICAgIFJlZ0V4cFZhbHVlOiBKb2huIGVkaXRlZFxuIiwKICAgICAgICAgICAgIlN0YXR1cyIgICA9PiAiTmV3IiwKICAgICAgICAgICAgIlN1cnZleUlEIiA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgICJUaXRsZSIgICAgPT4gIiRTdXJ2ZXlUaXRsZSBlZGl0ZWQiLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgXCVTdXJ2ZXksCiAgICAgICAgICAgIFwlRXhwZWN0ZWRWYWx1ZSwKICAgICAgICAgICAgJ0NoZWNrIFN1cnZleSBoYXNoIGRlZXBseS4nLAogICAgICAgICk7CgogICAgICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICAgICAjIENsZWFuLXVwIHRlc3QgY3JlYXRlZCBzdXJ2ZXkgZGF0YS4KICAgICAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleV9xdWV1ZSBXSEVSRSBzdXJ2ZXlfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlN1cnZleS1RdWV1ZSBmb3IgJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIHRlc3QgY3JlYXRlZCBzdXJ2ZXkuCiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBzdXJ2ZXkgV0hFUkUgaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIiRTdXJ2ZXlUaXRsZSBpcyBkZWxldGVkIiwKICAgICAgICApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7CgogICAgICAgICMgQ3JlYXRlIHRlc3Qgc3VydmV5LgogICAgICAgIG15ICRTdXJ2ZXlUaXRsZSA9ICdTdXJ2ZXkgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJFN1cnZleUlEICAgID0gJFN1cnZleU9iamVjdC0+U3VydmV5QWRkKAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgPT4gJFN1cnZleVRpdGxlLAogICAgICAgICAgICBJbnRyb2R1Y3Rpb24gICAgICAgID0+ICdTdXJ2ZXkgSW50cm9kdWN0aW9uJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICA9PiAnU3VydmV5IERlc2NyaXB0aW9uJywKICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAncXVhbGl0eUBleGFtcGxlLmNvbScsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gU3ViamVjdCcsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgICAgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gQm9keScsCiAgICAgICAgICAgIFF1ZXVlcyAgICAgICAgICAgICAgPT4gWzJdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdXJ2ZXlJRCwKICAgICAgICAgICAgIlN1cnZleSBJRCAkU3VydmV5SUQgaXMgY3JlYXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRTdXJ2ZXlPdmVydmlldyBvZiBjcmVhdGVkIHRlc3Qgc3VydmV5LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50U3VydmV5T3ZlcnZpZXciKTsKCiAgICAgICAgIyBDaGVjayBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSIsICAgICAgICAgICAgICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0aGVhZCB0ciB0aCIsICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICMgQ2hlY2sgZm9yIHRlc3QgY3JlYXRlZCBzdXJ2ZXkuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiJFN1cnZleVRpdGxlIiApID4gLTEsCiAgICAgICAgICAgICIkU3VydmV5VGl0bGUgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgQ2xpY2sgb24gdGVzdCBjcmVhdGVkIHN1cnZleS4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9kaXZbXEB0aXRsZT0nJFN1cnZleVRpdGxlJ10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIFZlcmlmeSB3ZSBhcmUgaW4gQWdlbnRTdXJ2ZXlab29tIHNjcmVlbi4KICAgICAgICBteSAkVVJMQWN0aW9uID0gJFNlbGVuaXVtLT5nZXRfY3VycmVudF91cmwoKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIGluZGV4KCAkVVJMQWN0aW9uLCAiQWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD0kU3VydmV5SUQiICkgPiAtMSwKICAgICAgICAgICAgMSwKICAgICAgICAgICAgIkxpbmsgZnJvbSBPdmVydmlldyB0byBab29tIHZpZXcgLSBzdWNjZXNzIiwKICAgICAgICApOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50U3VydmV5T3ZlcnZpZXcgb2YgY3JlYXRlZCB0ZXN0IHN1cnZleS4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFN1cnZleU92ZXJ2aWV3Iik7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnI1N1cnZleVNlYXJjaCcsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgbXkgJERpYWxvZ0ZvdW5kID0gJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNTdXJ2ZXlPdmVydmlld1NldHRpbmdzRGlhbG9nIikubGVuZ3RoJwogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkRGlhbG9nRm91bmQsCiAgICAgICAgICAgICdEaWFsb2cgZGlzcGxheWVkLicKICAgICAgICApOwoKICAgICAgICAjIFNlbmQgU3VydmV5SUQuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICcjU3VydmV5T3ZlcnZpZXdTZXR0aW5nc0RpYWxvZyBpbnB1dFtuYW1lPSJGdWxsdGV4dCJdJywgJ2NzcycgKS0+c2VuZF9rZXlzKCRTdXJ2ZXlJRCk7CgogICAgICAgICMgTWFrZSBzdXJlIHRoYXQgZm9sbG93aW5nIGZpZWxkcyBhcmUgZGlzcGxheWVkLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnI1N1cnZleU92ZXJ2aWV3U2V0dGluZ3NEaWFsb2cgI1N0YXRlc19TZWFyY2gnLCAnY3NzJyApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnI1N1cnZleU92ZXJ2aWV3U2V0dGluZ3NEaWFsb2cgI05vVGltZVNldCcsICAgICAnY3NzJyApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnI1N1cnZleU92ZXJ2aWV3U2V0dGluZ3NEaWFsb2cgI0RhdGVSYW5nZScsICAgICAnY3NzJyApOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggJyNEaWFsb2dCdXR0b24xJywgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiAhJCgiLkRpYWxvZy5Nb2RhbCIpLmxlbmd0aCcgKTsKCiAgICAgICAgbXkgJExpbmtTdXJ2ZXlJRCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnLk1hc3RlckFjdGlvbkxpbmsnLCAnY3NzJyApLT5nZXRfYXR0cmlidXRlKCdpbm5lckhUTUwnKTsKICAgICAgICBteSAkTGlua0NvbnRlbnQgPSAnJzsKCiAgICAgICAgaWYgKCAkTGlua1N1cnZleUlEID1+IG17XlxzKihcZCspXHMqJH0gKSB7CiAgICAgICAgICAgICRMaW5rQ29udGVudCA9ICQxOwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkTGlua0NvbnRlbnQsCiAgICAgICAgICAgICRTdXJ2ZXlJRCArIDEwMDAwLAogICAgICAgICAgICAnQ3JhdGVkIHN1cnZleSBsaW5rIGZvdW5kLicKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGlmIGNoYW5nZSBzdGF0dXMgZHJvcGRvd24gaXMgbW9kZXJuaXplZC4KICAgICAgICAjIFNlZSBidWcjMTM3NDEgaHR0cHM6Ly9idWdzLm90cnMub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc0MQogICAgICAgIG15ICRRdWVzdGlvbiAgID0gJ1F1ZXN0aW9uICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRRdWVzdGlvbklEID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25BZGQoCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFN1cnZleUlEICAgICAgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgUXVlc3Rpb24gICAgICAgPT4gJFF1ZXN0aW9uLAogICAgICAgICAgICBBbnN3ZXJSZXF1aXJlZCA9PiAxLAogICAgICAgICAgICBUeXBlICAgICAgICAgICA9PiAnWWVzTm8nLAogICAgICAgICk7CgogICAgICAgICMgR28gdG8gQWdlbnRTdXJ2ZXlab29tIHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFN1cnZleVpvb207U3VydmV5SUQ9JFN1cnZleUlEIik7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIFwkKCcjTmV3U3RhdHVzLk1vZGVybml6ZScpLmxlbmd0aCA9PT0gMTsiICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJyNOZXdTdGF0dXMuTW9kZXJuaXplJykubGVuZ3RoID09PSAxOyIpLAogICAgICAgICAgICAiJ0NoYW5nZSBTdGF0dXMnIGRyb3Bkb3duIGlzIG1vZGVybml6ZWQiLAogICAgICAgICk7CgogICAgICAgICMgU3dpdGNoIHN0YXR1cyBvZiBzdXJ2ZXkuCiAgICAgICAgZm9yIG15ICRTdGF0dXMgKHF3KE1hc3RlciBWYWxpZCkpIHsKCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoJ3dpbmRvdy5Db3JlLkFwcC5QYWdlTG9hZENvbXBsZXRlID0gZmFsc2U7Jyk7CiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAiXCQoJyNOZXdTdGF0dXMnKS52YWwoJyRTdGF0dXMnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICAgICAncmV0dXJuIHR5cGVvZihDb3JlKSA9PSAib2JqZWN0IiAmJiB0eXBlb2YoQ29yZS5BcHApID09ICJvYmplY3QiICYmIENvcmUuQXBwLlBhZ2VMb2FkQ29tcGxldGUnCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJ2xhYmVsOmNvbnRhaW5zKFN0YXR1cyknKS5uZXh0KCkudGV4dCgpLnRyaW0oKTsiKSwKICAgICAgICAgICAgICAgICIkU3RhdHVzIiwKICAgICAgICAgICAgICAgICJTdXJ2ZXkgc3RhdHVzIGlzIHNldCB0byAkU3RhdHVzIgogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgICMgRGVsZXRlIHN1cnZleSBxdWVzdGlvbi4KICAgICAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleV9xdWVzdGlvbiBXSEVSRSBzdXJ2ZXlfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlN1cnZleS1RdWV1ZSBmb3IgJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgQ2xlYW4tdXAgdGVzdCBjcmVhdGVkIHN1cnZleSBkYXRhLgogICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gc3VydmV5X3F1ZXVlIFdIRVJFIHN1cnZleV9pZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiU3VydmV5LVF1ZXVlIGZvciAkU3VydmV5VGl0bGUgaXMgZGVsZXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgdGVzdCBjcmVhdGVkIHN1cnZleS4KICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleSBXSEVSRSBpZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZG8gbm90IGNoZWNrIFJpY2hUZXh0CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0Zyb250ZW5kOjpSaWNoVGV4dCcsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBzdXJ2ZXkKICAgICAgICBteSAkU3VydmV5VGl0bGUgICAgICAgICA9ICdTdXJ2ZXkgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEludHJvZHVjdGlvbiAgICAgICAgPSAnU3VydmV5IEludHJvZHVjdGlvbic7CiAgICAgICAgbXkgJERlc2NyaXB0aW9uICAgICAgICAgPSAnU3VydmV5IERlc2NyaXB0aW9uJzsKICAgICAgICBteSAkTm90aWZpY2F0aW9uU2VuZGVyICA9ICdxdWFsaXR5QGV4YW1wbGUuY29tJzsKICAgICAgICBteSAkTm90aWZpY2F0aW9uU3ViamVjdCA9ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIFN1YmplY3QnOwogICAgICAgIG15ICROb3RpZmljYXRpb25Cb2R5ICAgID0gJ1N1cnZleSBOb3RpZmljYXRpb24gQm9keSc7CgogICAgICAgIG15ICRTdXJ2ZXlJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKS0+U3VydmV5QWRkKAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgPT4gJFN1cnZleVRpdGxlLAogICAgICAgICAgICBJbnRyb2R1Y3Rpb24gICAgICAgID0+ICRJbnRyb2R1Y3Rpb24sCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJERlc2NyaXB0aW9uLAogICAgICAgICAgICBOb3RpZmljYXRpb25TZW5kZXIgID0+ICROb3RpZmljYXRpb25TZW5kZXIsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJE5vdGlmaWNhdGlvblN1YmplY3QsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgICAgPT4gJE5vdGlmaWNhdGlvbkJvZHksCiAgICAgICAgICAgIFF1ZXVlcyAgICAgICAgICAgICAgPT4gWzJdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdXJ2ZXlJRCwKICAgICAgICAgICAgIlN1cnZleSBJRCAkU3VydmV5SUQgaXMgY3JlYXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudFN1cnZleVpvb20gb2YgY3JlYXRlZCB0ZXN0IHN1cnZleQogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD0kU3VydmV5SUQiKTsKCiAgICAgICAgIyBjaGVjayBwYWdlCiAgICAgICAgZm9yIG15ICRJRCAoCiAgICAgICAgICAgIHF3KE1lbnUwMDAtQmFjayBNZW51MDEwLUVkaXRHZW5lcmFsSW5mbyBNZW51MDIwLUVkaXRRdWVzdGlvbnMgTmV3U3RhdHVzKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRJRCIsICdjc3MnICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWQoKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgdGVzdCBjcmVhdGVkIHN1cnZleSB2YWx1ZXMKICAgICAgICBteSBAVmFsdWVzID0gKCAkU3VydmV5VGl0bGUsICRJbnRyb2R1Y3Rpb24sICREZXNjcmlwdGlvbiApOwogICAgICAgIGZvciBteSAkU3VydmV5Q2hlY2sgKEBWYWx1ZXMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIiRTdXJ2ZXlDaGVjayIgKSA+IC0xLAogICAgICAgICAgICAgICAgIiRTdXJ2ZXlDaGVjayBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBEQiBvYmplY3QKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgIyBjbGVhbi11cCB0ZXN0IGNyZWF0ZWQgc3VydmV5IGRhdGEKICAgICAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleV9xdWV1ZSBXSEVSRSBzdXJ2ZXlfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlN1cnZleS1RdWV1ZSBmb3IgJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBzdXJ2ZXkKICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleSBXSEVSRSBpZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHN1cnZleS4KICAgICAgICBteSAkU3VydmV5VGl0bGUgPSAnU3VydmV5ICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRTdXJ2ZXlJRCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKS0+U3VydmV5QWRkKAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgPT4gJFN1cnZleVRpdGxlLAogICAgICAgICAgICBJbnRyb2R1Y3Rpb24gICAgICAgID0+ICdTdXJ2ZXkgSW50cm9kdWN0aW9uJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICA9PiAnU3VydmV5IERlc2NyaXB0aW9uJywKICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAnc3Zpa0BleGFtcGxlLmNvbScsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gU3ViamVjdCcsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgICAgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gQm9keScsCiAgICAgICAgICAgIFF1ZXVlcyAgICAgICAgICAgICAgPT4gWzJdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdXJ2ZXlJRCwKICAgICAgICAgICAgIlN1cnZleSBJRCAkU3VydmV5SUQgaXMgY3JlYXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRTdXJ2ZXlab29tIG9mIGNyZWF0ZWQgdGVzdCBzdXJ2ZXkuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRTdXJ2ZXlab29tO1N1cnZleUlEPSRTdXJ2ZXlJRCIpOwoKICAgICAgICAjIENsaWNrIG9uICdFZGl0IFF1ZXN0aW9ucycgYW5kIHN3aXRjaCBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTWVudTAyMC1FZGl0UXVlc3Rpb25zIiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgbXkgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIFdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNBbnN3ZXJSZXF1aXJlZCIpLmxlbmd0aCcgKTsKCiAgICAgICAgIyBDaGVjayBwYWdlLgogICAgICAgIGZvciBteSAkSUQgKAogICAgICAgICAgICBxdyhRdWVzdGlvbiBUeXBlIEFuc3dlclJlcXVpcmVkKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRJRCIsICdjc3MnICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWQoKTsKICAgICAgICB9CgogICAgICAgICMgR2V0IHRlc3QgcGFyYW1zLgogICAgICAgIG15IEBUZXN0ID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdZZXNOb1F1ZXN0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1llc05vJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnUmFkaW9RdWVzdGlvbicsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdSYWRpbycsCiAgICAgICAgICAgICAgICBBbnN3ZXIxID0+ICdTZWxlbml1bSBvbmUnLAogICAgICAgICAgICAgICAgQW5zd2VyMiA9PiAnU2VsZW5pdW0gdHdvJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnQ2hlY2tib3hRdWVzdGlvbicsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdDaGVja2JveCcsCiAgICAgICAgICAgICAgICBBbnN3ZXIxID0+ICdTZWxlbml1bSBvbmUnLAogICAgICAgICAgICAgICAgQW5zd2VyMiA9PiAnU2VsZW5pdW0gdHdvJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnVGV4dGFyZWFRdWVzdGlvbicsCiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXh0YXJlYScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ05QU1F1ZXN0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ05QUycsCiAgICAgICAgICAgICAgICBBbnN3ZXIxID0+ICdTZWxlbml1bSBvbmUnLAogICAgICAgICAgICAgICAgQW5zd2VyMiA9PiAnU2VsZW5pdW0gdHdvJwogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgcXVlc3Rpb25zLgogICAgICAgIG15ICRTdWNjZXNzOwogICAgICAgIGZvciBteSAkUXVlc3Rpb25zIChAVGVzdCkgewoKICAgICAgICAgICAgIyBBZGQgcXVlc3Rpb24uCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1F1ZXN0aW9uIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCAkUXVlc3Rpb25zLT57TmFtZX0gKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJcJCgnI1R5cGUnKS52YWwoJyRRdWVzdGlvbnMtPntUeXBlfScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nQWRkJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAjIEFkZCBhbnN3ZXJzIGZvciByYWRpbywgY2hlY2stYm94IGFuZCBOUFMgcXVlc3Rpb25zLgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkUXVlc3Rpb25zLT57TmFtZX0gZXEgJ1JhZGlvUXVlc3Rpb24nCiAgICAgICAgICAgICAgICB8fCAkUXVlc3Rpb25zLT57TmFtZX0gZXEgJ0NoZWNrYm94UXVlc3Rpb24nCiAgICAgICAgICAgICAgICB8fCAkUXVlc3Rpb25zLT57TmFtZX0gZXEgJ05QU1F1ZXN0aW9uJwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgIyBWZXJpZnkgcXVlc3Rpb24gaXMgaW4gaW5jb21wbGV0ZSBzdGF0ZS4KICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF90ZXh0KCIvL2RpdltcQGNsYXNzPSdDb250ZW50J10iKSwgJ0luY29tcGxldGUnICkgPiAtMSwKICAgICAgICAgICAgICAgICAgICAiJFF1ZXN0aW9ucy0+e05hbWV9IGlzIGluY29tcGxldGUiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIENsaWNrIG9uIHRlc3QgY3JlYXRlZCBxdWVzdGlvbi4KICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAkUXVlc3Rpb25zLT57TmFtZX0sICdsaW5rX3RleHQnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNBbnN3ZXIiLCAnY3NzJyApLT5zZW5kX2tleXMoICRRdWVzdGlvbnMtPntBbnN3ZXIxfSApOwogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J0FkZCddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0Fuc3dlciIsICdjc3MnICktPnNlbmRfa2V5cyggJFF1ZXN0aW9ucy0+e0Fuc3dlcjJ9ICk7CiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nQWRkJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAgICAgIyBSZXR1cm4gYmFjayB0byBhZGQgcXVlc3Rpb24gc2NyZWVuLgogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J0dvIGJhY2snXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgVmVyaWZ5IHF1ZXN0aW9uIGlzIGluIGNvbXBsZXRlIHN0YXRlLgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF90ZXh0KCIvL2RpdltcQGNsYXNzPSdDb250ZW50J10iKSwgJ0NvbXBsZXRlJyApID4gLTEsCiAgICAgICAgICAgICAgICAiJFF1ZXN0aW9ucy0+e05hbWV9IGlzIGNvbXBsZXRlZCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIERlbGV0ZSB0ZXN0IHF1ZXN0aW9uLgogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIi5RdWVzdGlvbkRlbGV0ZSIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggQWxlcnRQcmVzZW50ID0+IDEgKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5hY2NlcHRfYWxlcnQoKTsKCiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgIVwkKCcuRGF0YVRhYmxlIHRyOmNvbnRhaW5zKFwiJFF1ZXN0aW9ucy0+e05hbWV9XCIpJykubGVuZ3RoOyIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuICFcJCgnLkRhdGFUYWJsZSB0cjpjb250YWlucyhcIiRRdWVzdGlvbnMtPntOYW1lfVwiKScpLmxlbmd0aDsiKSwKICAgICAgICAgICAgICAgICIkUXVlc3Rpb25zLT57TmFtZX0gaXMgZGVsZXRlZCIsCiAgICAgICAgICAgICk7CgogICAgICAgIH0KCiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgICMgQ2xlYW4tdXAgdGVzdCBjcmVhdGVkIHN1cnZleSBxdWV1ZS4KICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleV9xdWV1ZSBXSEVSRSBzdXJ2ZXlfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlN1cnZleS1RdWV1ZSBmb3IgJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIHRlc3QgY3JlYXRlZCBzdXJ2ZXkuCiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBzdXJ2ZXkgV0hFUkUgaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIiRTdXJ2ZXlUaXRsZSBpcyBkZWxldGVkIiwKICAgICAgICApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIHZhcnMgKHF3KCRTZWxmKSk7CgpteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAjIERvIG5vdCByZWFsbHkgc2VuZCBlbWFpbHMuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ1NlbmRtYWlsTW9kdWxlJywKICAgICAgICAgICAgVmFsdWUgPT4gJ0tlcm5lbDo6U3lzdGVtOjpFbWFpbDo6RG9Ob3RTZW5kRW1haWwnLAogICAgICAgICk7CgogICAgICAgICMgRG8gbm90IGNoZWNrIGVtYWlsIGFkZHJlc3NlcyBpbiB0aGlzIHRlc3QuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0NoZWNrRW1haWxBZGRyZXNzZXMnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgU2V0IHNlbmQgcGVyaW9kIHRvIHplcm8gdG8gYWx3YXlzIHNlbmQgc3VydmV5LgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OlNlbmRQZXJpb2QnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgU2V0IG5vIHNlbmQgY29uZGl0aW9uIGNoZWNrIGluIG5vcm1hbCB0ZXN0cy4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHN1cnZleS4KICAgICAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwogICAgICAgIG15ICRTdXJ2ZXlUaXRsZSAgPSAnU3VydmV5ICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRTdXJ2ZXlJRCAgICAgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlBZGQoCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICA9PiAkU3VydmV5VGl0bGUsCiAgICAgICAgICAgIEludHJvZHVjdGlvbiAgICAgICAgPT4gJ1N1cnZleSBJbnRyb2R1Y3Rpb24nLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgID0+ICdTdXJ2ZXkgRGVzY3JpcHRpb24nLAogICAgICAgICAgICBOb3RpZmljYXRpb25TZW5kZXIgID0+ICdxdWFsaXR5QHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gU3ViamVjdCcsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgICAgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gQm9keScsCiAgICAgICAgICAgIFF1ZXVlcyAgICAgICAgICAgICAgPT4gWzJdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdXJ2ZXlJRCwKICAgICAgICAgICAgIlN1cnZleSBJRCAkU3VydmV5SUQgaXMgY3JlYXRlZCIKICAgICAgICApOwoKICAgICAgICAjIEFkZCBxdWVzdGlvbiB0byB0ZXN0IHN1cnZleS4KICAgICAgICBteSAkUXVlc3Rpb25OYW1lID0gJ1F1ZXN0aW9uICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uQWRkKAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgICAgICBTdXJ2ZXlJRCAgICAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgIFF1ZXN0aW9uICAgICAgID0+ICRRdWVzdGlvbk5hbWUsCiAgICAgICAgICAgIEFuc3dlclJlcXVpcmVkID0+IDEsCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgID0+ICdZZXNObycsCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgcXVlc3Rpb24gSUQgZnJvbSB0aGUgdGVzdCBzdXJ2ZXkuCiAgICAgICAgbXkgQFF1ZXN0aW9uTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uTGlzdCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CiAgICAgICAgbXkgJFF1ZXN0aW9uSUQgPSAkUXVlc3Rpb25MaXN0WzBdLT57UXVlc3Rpb25JRH07CgogICAgICAgICMgU2V0IHRlc3Qgc3VydmV5IG9uIG1hc3RlciBzdGF0dXMuCiAgICAgICAgbXkgJFN0YXR1c1NldCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVN0YXR1c1NldCgKICAgICAgICAgICAgU3VydmV5SUQgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgTmV3U3RhdHVzID0+ICdNYXN0ZXInLAogICAgICAgICk7CgogICAgICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICAgICAgbXkgJERCT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICAgICBteSAkQXJ0aWNsZUludGVybmFsQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKS0+QmFja2VuZEZvckNoYW5uZWwoCiAgICAgICAgICAgIENoYW5uZWxOYW1lID0+ICdJbnRlcm5hbCcsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICBteSBAVGlja2V0TnVtYmVyczsKICAgICAgICBteSBAVGlja2V0SURzOwogICAgICAgIGZvciBteSAkQ291bnQgKCAxIC4uIDMgKSB7CgogICAgICAgICAgICAjIENyZWF0ZSB0ZXN0IHRpY2tldC4KICAgICAgICAgICAgbXkgJFRpY2tldE51bWJlciA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZU51bWJlcigpOwogICAgICAgICAgICBteSAkVGlja2V0SUQgICAgID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgICAgICAgICAgICAgVE4gICAgICAgICAgID0+ICRUaWNrZXROdW1iZXIsCiAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gIlNlbGVuaXVtIFRlc3QgVGlja2V0IiwKICAgICAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICduZXcnLAogICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCAgID0+ICdTZWxlbml1bUN1c3RvbWVyJywKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAndGVzdEBsb2NhbGhvc3QuY29tJywKICAgICAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFRpY2tldElELAogICAgICAgICAgICAgICAgIlRpY2tldCBJRCAkVGlja2V0SUQgaXMgY3JlYXRlZCIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAVGlja2V0SURzLCAgICAgJFRpY2tldElEOwogICAgICAgICAgICBwdXNoIEBUaWNrZXROdW1iZXJzLCAkVGlja2V0TnVtYmVyOwoKICAgICAgICAgICAgIyBBZGQgYXJ0aWNsZSB0byB0ZXN0IHRpY2tldC4KICAgICAgICAgICAgbXkgJEFydGljbGVJRCA9ICRBcnRpY2xlSW50ZXJuYWxCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQ3JlYXRlKAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMCwKICAgICAgICAgICAgICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICdhZ2VudCcsCiAgICAgICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBBZ2VudCA8ZW1haWxAZXhhbXBsZS5jb20+JywKICAgICAgICAgICAgICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdDdXN0b21lcjxjdXN0b21lci1hQGV4YW1wbGUuY29tPicsCiAgICAgICAgICAgICAgICBDYyAgICAgICAgICAgICAgICAgICA9PiAnQ3VzdG9tZXI8Y3VzdG9tZXItYkBleGFtcGxlLmNvbT4nLAogICAgICAgICAgICAgICAgUmVwbHlUbyAgICAgICAgICAgICAgPT4gJ0N1c3RvbWVyIEIgPGN1c3RvbWVyLWJAZXhhbXBsZS5jb20+JywKICAgICAgICAgICAgICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICdzb21lIHNob3J0IGRlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0IFBlcmwgbW9kdWxlcyBwcm92aWRlIGEgcmFuZ2Ugb2YnLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgICAgICA9PiAndXRmOCcsCiAgICAgICAgICAgICAgICBNaW1lVHlwZSAgICAgICAgICAgICA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICJBcnRpY2xlIElEICRBcnRpY2xlSUQgaXMgY3JlYXRlZCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgU2VuZCBzdXJ2ZXkgcmVxdWVzdC4KICAgICAgICAgICAgbXkgJFJlcXVlc3QgPSAkU3VydmV5T2JqZWN0LT5SZXF1ZXN0U2VuZCgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFJlcXVlc3QsCiAgICAgICAgICAgICAgICAnU3VydmV5IHJlcXVlc3QgaXMgc2VudCcKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgR2V0IHB1YmxpYyBzdXJ2ZXkga2V5IGZyb20gdGVzdCBzdXJ2ZXkgcmVxdWVzdC4KICAgICAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICAgICAgU1FMICA9PiAiU0VMRUNUIHB1YmxpY19zdXJ2ZXlfa2V5IEZST00gc3VydmV5X3JlcXVlc3QgV0hFUkUgc3VydmV5X2lkID0gPyBBTkQgdGlja2V0X2lkID0gPyIsCiAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlJRCwgXCRUaWNrZXRJRCBdLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkUHVibGljU3VydmV5S2V5OwogICAgICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgICAgICRQdWJsaWNTdXJ2ZXlLZXkgPSAkUm93WzBdOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIENyZWF0ZSBwdWJsaWMgYW5zd2VyIHZvdGVzLgogICAgICAgICAgICBpZiAoICRDb3VudCA9PSAnMScgKSB7CgogICAgICAgICAgICAgICAgIyBOYXZpZ2F0ZSB0byBwdWJsaWMgcGFnZSBvZiBjcmVhdGVkIHRlc3Qgc3VydmV5IGFuZCBhZGQgcHVibGljIGFuc3dlciB2aWEgZnJvbnRlbmQuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfXB1YmxpYy5wbD9BY3Rpb249UHVibGljU3VydmV5O1B1YmxpY1N1cnZleUtleT0kUHVibGljU3VydmV5S2V5Iik7CgogICAgICAgICAgICAgICAgIyBTZWxlY3QgJ1llcycgYXMgYW4gYW5zd2VyLgogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEB2YWx1ZT0nWWVzJ11bXEB0eXBlPSdyYWRpbyddIiktPmNsaWNrKCk7CiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJ2lucHV0W3ZhbHVlPVllc11bdHlwZT1yYWRpb106Y2hlY2tlZCcpLmxlbmd0aCIKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J0ZpbmlzaCddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEFkZCBwdWJsaWMgdm90ZSB2aWEgYmFja2VuZC4KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBTbGVlcCBvbmUgc2Vjb25kIGJldHdlZW4gcHVibGljIGFuc3dlci4KICAgICAgICAgICAgICAgIHNsZWVwIDE7CgogICAgICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+UHVibGljQW5zd2VyU2V0KAogICAgICAgICAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUHVibGljU3VydmV5S2V5LAogICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgICAgICA9PiAkUXVlc3Rpb25JRCwKICAgICAgICAgICAgICAgICAgICBWb3RlVmFsdWUgICAgICAgPT4gJ1llcycsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRTdXJ2ZXlPYmplY3QtPlB1YmxpY1N1cnZleUludmFsaWRTZXQoCiAgICAgICAgICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gem9vbSBzY3JlZW4gb2YgY3JlYXRlZCB0ZXN0IHN1cnZleS4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFN1cnZleVpvb207U3VydmV5SUQ9JFN1cnZleUlEIik7CgogICAgICAgICMgQ2xpY2sgb24gc3VydmV5ICdTdGF0cyBEZXRhaWxzJyBhbmQgc3dpdGNoIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNNZW51MDMwLVN0YXRzRGV0YWlscyIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApOwogICAgICAgIG15ICRIYW5kbGVzID0gJFNlbGVuaXVtLT5nZXRfd2luZG93X2hhbmRsZXMoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMV0gKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIGRldGFpbHMgYXJlIHByZXNlbnQuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIi5TZWVEZXRhaWxzIikubGVuZ3RoJyApOwoKICAgICAgICAjIENoZWNrIHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIiwgICAgICAgICAgICAgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRoZWFkIHRyIHRoIiwgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRib2R5IHRyIHRkIiwgJ2NzcycgKTsKCiAgICAgICAgIyBWZXJpZnkgc3RhdHMgYXJlIHByZXNlbnQgZm9yIGFsbCB0aWNrZXRzLgogICAgICAgIGZvciBteSAkVGlja2V0TnVtYmVyIChAVGlja2V0TnVtYmVycykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkVGlja2V0TnVtYmVyICkgPiAtMSwKICAgICAgICAgICAgICAgICJUaWNrZXQgbnVtYmVyICRUaWNrZXROdW1iZXIgaXMgZm91bmQiCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENsaWNrIHRvIHNlZSBkZXRhaWxzIG9mIHN1cnZleS4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgJ1RpY2tldE51bWJlcj0kVGlja2V0TnVtYmVyc1syXScgKV0iKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gInJldHVybiBcJCgnLkhlYWRlciBoMTpjb250YWlucygkVGlja2V0TnVtYmVyc1syXSknKS5sZW5ndGgiICk7CgogICAgICAgICMgVmVyaWZ5IHF1ZXN0aW9uIHZhbHVlcy4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRRdWVzdGlvbk5hbWUgKSA+IC0xLAogICAgICAgICAgICAiJFF1ZXN0aW9uTmFtZSBpcyBmb3VuZCIKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJ1llcycgKSA+IC0xLAogICAgICAgICAgICAiQW5zd2VyICdZZXMnIGlzIGZvdW5kIgogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgaWYgJ1ByZXZpb3VzIFZvdGUnIGV4aXN0cy4KICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnLlN1cnZleUFycm93TGVmdCcpLmxlbmd0aCIpLAogICAgICAgICAgICAiJ1ByZXZpb3VzIFZvdGUnIGlzIG5vdCBmb3VuZCBmb3IgZmlyc3QgYW5zd2VyIgogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgaWYgJ05leHQgVm90ZScgZXhpc3RzLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJy5TdXJ2ZXlBcnJvd1JpZ2h0JykubGVuZ3RoIiksCiAgICAgICAgICAgICInTmV4dCBWb3RlJyBpcyBmb3VuZCBmb3IgZmlyc3QgYW5zd2VyIgogICAgICAgICk7CgogICAgICAgICMgQ2xpY2sgb24gdGhlICdOZXh0IFZvdGUnIGxpbmsuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsICdUaWNrZXROdW1iZXI9JFRpY2tldE51bWJlcnNbMV0nICldIiktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gXCQoJy5IZWFkZXIgaDE6Y29udGFpbnMoJFRpY2tldE51bWJlcnNbMV0pJykubGVuZ3RoIiApOwoKICAgICAgICAjIENoZWNrIGlmIHRpY2tldCBudW1iZXIgaXMgY29ycmVjdCwgYW5kIGxpbmtzIHRvICdQcmV2aW91cyBWb3RlJyBhbmQgJ05leHQgVm90ZScgZXhpc3QuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiJFRpY2tldE51bWJlcnNbMV0iICkgPiAtMSwKICAgICAgICAgICAgIlRpY2tldCBudW1iZXIgJFRpY2tldE51bWJlcnNbMV0gaXMgZm91bmQiCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnLlN1cnZleUFycm93TGVmdCcpLmxlbmd0aCIpLAogICAgICAgICAgICAiJ1ByZXZpb3VzIFZvdGUnIGlzIGZvdW5kIGZvciBzZWNvbmQgYW5zd2VyIgogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnLlN1cnZleUFycm93UmlnaHQnKS5sZW5ndGgiKSwKICAgICAgICAgICAgIidOZXh0IFZvdGUnIGlzIGZvdW5kIGZvciBzZWNvbmQgYW5zd2VyIgogICAgICAgICk7CgogICAgICAgICMgR28gdG8gbmV4dCB2b3RlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCAnVGlja2V0TnVtYmVyPSRUaWNrZXROdW1iZXJzWzBdJyApXSIpLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIFwkKCcuSGVhZGVyIGgxOmNvbnRhaW5zKCRUaWNrZXROdW1iZXJzWzBdKScpLmxlbmd0aCIgKTsKCiAgICAgICAgIyBDaGVjayBpZiB0aWNrZXQgbnVtYmVyIGlzIGNvcnJlY3QsICdQcmV2aW91cyBWb3RlJyBleGlzdHMgYW5kICdOZXh0IFZvdGUnIGRvZXMgbm90IGV4aXN0LgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIiRUaWNrZXROdW1iZXJzWzBdIiApID4gLTEsCiAgICAgICAgICAgICJUaWNrZXQgbnVtYmVyICRUaWNrZXROdW1iZXJzWzBdIGlzIGZvdW5kIgogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnLlN1cnZleUFycm93TGVmdCcpLmxlbmd0aCIpLAogICAgICAgICAgICAiJ1ByZXZpb3VzIFZvdGUnIGlzIGZvdW5kIGZvciB0aGlyZCBhbnN3ZXIiCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnLlN1cnZleUFycm93UmlnaHQnKS5sZW5ndGgiKSwKICAgICAgICAgICAgIidOZXh0IFZvdGUnIGlzIG5vdCBmb3VuZCBmb3IgdGhpcmQgYW5zd2VyIgogICAgICAgICk7CgogICAgICAgICMgRGVmaW5lIGRhdGEgZm9yIGNsZWFudXAuCiAgICAgICAgbXkgQENsZWFuRGF0YSA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJ1F1ZXVlJywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXlfcXVldWUnLAogICAgICAgICAgICAgICAgU1FMSUQgPT4gJ3N1cnZleV9pZCcsCiAgICAgICAgICAgICAgICBJRCAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdBbnN3ZXInLAogICAgICAgICAgICAgICAgVGFibGUgPT4gJ3N1cnZleV9hbnN3ZXInLAogICAgICAgICAgICAgICAgU1FMSUQgPT4gJ3F1ZXN0aW9uX2lkJywKICAgICAgICAgICAgICAgIElEICAgID0+ICRRdWVzdGlvbklELAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnUXVlc3Rpb24nLAogICAgICAgICAgICAgICAgVGFibGUgPT4gJ3N1cnZleV9xdWVzdGlvbicsCiAgICAgICAgICAgICAgICBTUUxJRCA9PiAnc3VydmV5X2lkJywKICAgICAgICAgICAgICAgIElEICAgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJ1JlcXVlc3QnLAogICAgICAgICAgICAgICAgVGFibGUgPT4gJ3N1cnZleV9yZXF1ZXN0JywKICAgICAgICAgICAgICAgIFNRTElEID0+ICdzdXJ2ZXlfaWQnLAogICAgICAgICAgICAgICAgSUQgICAgPT4gJFN1cnZleUlELAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnVm90ZScsCiAgICAgICAgICAgICAgICBUYWJsZSA9PiAnc3VydmV5X3ZvdGUnLAogICAgICAgICAgICAgICAgU1FMSUQgPT4gJ3F1ZXN0aW9uX2lkJywKICAgICAgICAgICAgICAgIElEICAgID0+ICRRdWVzdGlvbklELAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnU3VydmV5JywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXknLAogICAgICAgICAgICAgICAgU1FMSUQgPT4gJ2lkJywKICAgICAgICAgICAgICAgIElEICAgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBjcmVhdGVkIHRlc3QgdGlja2V0cy4KICAgICAgICBteSAkU3VjY2VzczsKICAgICAgICBmb3IgbXkgJFRpY2tldElEIChAVGlja2V0SURzKSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gJFRpY2tldE9iamVjdC0+VGlja2V0RGVsZXRlKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJUaWNrZXRJRCAkVGlja2V0SUQgaXMgZGVsZXRlZCIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIHRlc3Qgc3VydmV5IGRhdGEgZnJvbSBEQi4KICAgICAgICBmb3IgbXkgJERlbGV0ZSAoQENsZWFuRGF0YSkgewogICAgICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSAkRGVsZXRlLT57VGFibGV9IFdIRVJFICREZWxldGUtPntTUUxJRH0gPSA/IiwKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcIiREZWxldGUtPntJRH0iIF0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiJERlbGV0ZS0+e05hbWV9IGZvciAkU3VydmV5VGl0bGUgaXMgZGVsZXRlZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgY3JlYXRlIHRlc3Qgc3VydmV5CiAgICAgICAgbXkgJFN1cnZleVRpdGxlID0gJ1N1cnZleSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkU3VydmV5SUQgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JyktPlN1cnZleUFkZCgKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICRTdXJ2ZXlUaXRsZSwKICAgICAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAnU3VydmV5IEludHJvZHVjdGlvbicsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJ1N1cnZleSBEZXNjcmlwdGlvbicsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciAgPT4gJ3N2aWtAZXhhbXBsZS5jb20nLAogICAgICAgICAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIFN1YmplY3QnLAogICAgICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIEJvZHknLAogICAgICAgICAgICBRdWV1ZXMgICAgICAgICAgICAgID0+IFsyXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VydmV5SUQsCiAgICAgICAgICAgICJTdXJ2ZXkgSUQgJFN1cnZleUlEIGlzIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gQWdlbnRTdXJ2ZXlab29tIG9mIGNyZWF0ZWQgdGVzdCBzdXJ2ZXkKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFN1cnZleVpvb207U3VydmV5SUQ9JFN1cnZleUlEIik7CgogICAgICAgICMgY3JlYXRlIG1lbnUgbW9kdWxlIHRlc3QgcGFyYW1zCiAgICAgICAgbXkgQE1lbnVNb2R1bGUgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gIkJhY2siLAogICAgICAgICAgICAgICAgSUQgICA9PiAiTWVudTAwMC1CYWNrIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAiRWRpdCBHZW5lcmFsIEluZm8iLAogICAgICAgICAgICAgICAgSUQgICA9PiAiTWVudTAxMC1FZGl0R2VuZXJhbEluZm8iLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICJFZGl0IFF1ZXN0aW9ucyIsCiAgICAgICAgICAgICAgICBJRCAgID0+ICJNZW51MDIwLUVkaXRRdWVzdGlvbnMiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICJDaGFuZ2UgU3RhdHVzIiwKICAgICAgICAgICAgICAgIElEICAgPT4gIk5ld1N0YXR1cyIsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBzdXJ2ZXkgbWVudSBtb2R1bGVzCiAgICAgICAgZm9yIG15ICRTdXJ2ZXlNZW51IChATWVudU1vZHVsZSkgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRTdXJ2ZXlNZW51LT57SUR9IiwgJ2NzcycgKSwKICAgICAgICAgICAgICAgICJTdXJ2ZXkgbWVudSAkU3VydmV5TWVudS0+e05hbWV9IGlzIGZvdW5kIgogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgREIgb2JqZWN0CiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgICMgY2xlYW4tdXAgdGVzdCBjcmVhdGVkIHN1cnZleSBkYXRhCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBzdXJ2ZXlfcXVldWUgV0hFUkUgc3VydmV5X2lkID0gPyIsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFN1cnZleUlEIF0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJTdXJ2ZXktUXVldWUgZm9yICRTdXJ2ZXlUaXRsZSBpcyBkZWxldGVkIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgc3VydmV5CiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBzdXJ2ZXkgV0hFUkUgaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIiRTdXJ2ZXlUaXRsZSBpcyBkZWxldGVkIiwKICAgICAgICApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgY3JlYXRlIHRlc3Qgc3VydmV5CiAgICAgICAgbXkgJFN1cnZleVRpdGxlID0gJ1N1cnZleSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkU3VydmV5SUQgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JyktPlN1cnZleUFkZCgKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICRTdXJ2ZXlUaXRsZSwKICAgICAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAnU3VydmV5IEludHJvZHVjdGlvbicsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJ1N1cnZleSBEZXNjcmlwdGlvbicsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciAgPT4gJ3N2aWtAZXhhbXBsZS5jb20nLAogICAgICAgICAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIFN1YmplY3QnLAogICAgICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIEJvZHknLAogICAgICAgICAgICBRdWV1ZXMgICAgICAgICAgICAgID0+IFsyXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VydmV5SUQsCiAgICAgICAgICAgICJTdXJ2ZXkgSUQgJFN1cnZleUlEIGlzIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gQWdlbnRTdXJ2ZXlPdmVydmlldyBvZiBjcmVhdGVkIHRlc3Qgc3VydmV5CiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRTdXJ2ZXlPdmVydmlldztTdXJ2ZXlJRD0kU3VydmV5SUQiKTsKCiAgICAgICAgIyBjaGVjayBvdmVydmlldyBzY3JlZW4KICAgICAgICBmb3IgbXkgJENvbHVtbnMgKCAnU3VydmV5IycsICdUaXRsZScsICdTdGF0dXMnLCAnQ3JlYXRlZCcgKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRDb2x1bW5zICkgPiAtMSwKICAgICAgICAgICAgICAgICJDb2x1bW4gJENvbHVtbnMgaXMgZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBmb3IgdGVzdCBjcmVhdGVkIHN1cnZleQogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIiRTdXJ2ZXlUaXRsZSIgKSA+IC0xLAogICAgICAgICAgICAiJFN1cnZleVRpdGxlIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBEQiBvYmplY3QKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgIyBjbGVhbi11cCB0ZXN0IGNyZWF0ZWQgc3VydmV5IGRhdGEKICAgICAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleV9xdWV1ZSBXSEVSRSBzdXJ2ZXlfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlN1cnZleS1RdWV1ZSBmb3IgJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBzdXJ2ZXkKICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleSBXSEVSRSBpZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSk7CgpteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwogICAgICAgIG15ICREQk9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgICAgICAjIERvIG5vdCByZWFsbHkgc2VuZCBlbWFpbHMuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ1NlbmRtYWlsTW9kdWxlJywKICAgICAgICAgICAgVmFsdWUgPT4gJ0tlcm5lbDo6U3lzdGVtOjpFbWFpbDo6RG9Ob3RTZW5kRW1haWwnLAogICAgICAgICk7CgogICAgICAgICMgRG8gbm90IGNoZWNrIGVtYWlsIGFkcmVzc2VzIGluIHRoaXMgdGVzdC4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnQ2hlY2tFbWFpbEFkZHJlc3NlcycsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBTZXQgc2VuZCBwZXJpb2QgdG8gYWx3YXlzIHNlbmQgc3VydmV5LgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OlNlbmRQZXJpb2QnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgU2V0IG5vIHNlbmQgY29uZGl0aW9uIGNoZWNrIGluIG5vcm1hbCB0ZXN0cy4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIERvIG5vdCBjaGVjayBSaWNoVGV4dC4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnRnJvbnRlbmQ6OlJpY2hUZXh0JywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHN1cnZleS4KICAgICAgICBteSAkU3VydmVyeUludHJvZHVjdGlvbiAgICA9ICdTdXJ2ZXkgSW50cm9kdWN0aW9uJywKICAgICAgICAgICAgbXkgJFN1cnZlcnlEZXNjcmlwdGlvbiA9ICdTdXJ2ZXkgRGVzY3JpcHRpb24nLAogICAgICAgICAgICBteSAkU3VydmV5VGl0bGUgICAgICAgID0gJ1N1cnZleSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkU3VydmV5SUQgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlBZGQoCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICA9PiAkU3VydmV5VGl0bGUsCiAgICAgICAgICAgIEludHJvZHVjdGlvbiAgICAgICAgPT4gJFN1cnZlcnlJbnRyb2R1Y3Rpb24sCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJFN1cnZlcnlEZXNjcmlwdGlvbiwKICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAncXVhbGl0eUB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIFN1YmplY3QnLAogICAgICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIEJvZHknLAogICAgICAgICAgICBRdWV1ZXMgICAgICAgICAgICAgID0+IFsyXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VydmV5SUQsCiAgICAgICAgICAgICJTdXJ2ZXkgSUQgJFN1cnZleUlEIGlzIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgR2V0IHF1ZXN0aW9uIGRhdGEuCiAgICAgICAgbXkgQFF1ZXN0aW9uRGF0YSA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVHlwZSA9PiAnWWVzTm8nLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ1JhZGlvJywKICAgICAgICAgICAgICAgIEFuc3dlciA9PiBbICJSYWRpb09uZSIsICJSYWRpb1R3byIgXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVHlwZSAgID0+ICdDaGVja2JveCcsCiAgICAgICAgICAgICAgICBBbnN3ZXIgPT4gWyAiQ2hlY2tCb3hPbmUiLCAiQ2hlY2tCb3hUd28iIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRhcmVhJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVHlwZSAgID0+ICdOUFMnLAogICAgICAgICAgICAgICAgQW5zd2VyID0+IFsgIk5QU09uZSIsICJOUFNUd28iIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgcXVlc3Rpb24gYW5kIGFuc3dlcnMgdG8gdGVzdCBzdXJ2ZXkuCiAgICAgICAgbXkgQFF1ZXN0aW9uTmFtZXM7CiAgICAgICAgbXkgQFF1ZXN0aW9uSURzOwogICAgICAgIG15IEBBbnN3ZXJOYW1lczsKICAgICAgICBteSBAQW5zd2VySURzOwogICAgICAgIGZvciBteSAkUXVlc3Rpb25zIChAUXVlc3Rpb25EYXRhKSB7CiAgICAgICAgICAgIG15ICRRdWVzdGlvbk5hbWUgPSAkUXVlc3Rpb25zLT57VHlwZX0gLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgICAgICAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkFkZCgKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCAgICAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgICAgICBRdWVzdGlvbiAgICAgICA9PiAkUXVlc3Rpb25OYW1lLAogICAgICAgICAgICAgICAgQW5zd2VyUmVxdWlyZWQgPT4gMSwKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgID0+ICRRdWVzdGlvbnMtPntUeXBlfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgR2V0IHRlc3QgcXVlc3Rpb24gSUQuCiAgICAgICAgICAgIG15ICRRdWVzdGlvblF1b3RlZCA9ICREQk9iamVjdC0+UXVvdGUoJFF1ZXN0aW9uTmFtZSk7CiAgICAgICAgICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgICAgIFNRTCAgPT4gIlNFTEVDVCBpZCBGUk9NIHN1cnZleV9xdWVzdGlvbiBXSEVSRSBxdWVzdGlvbiA9ID8iLAogICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkUXVlc3Rpb25RdW90ZWQgXQogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkUXVlc3Rpb25JRDsKICAgICAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICAgICAkUXVlc3Rpb25JRCA9ICRSb3dbMF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHVzaCBAUXVlc3Rpb25JRHMsICRRdWVzdGlvbklEOwoKICAgICAgICAgICAgIyBBZGQgYW5zd2VyIGZvciByYWRpbyBhbmQgY2hlY2stYm94IHF1ZXN0aW9ucy4KICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJFF1ZXN0aW9ucy0+e1R5cGV9IGVxICdSYWRpbycKICAgICAgICAgICAgICAgIHx8ICRRdWVzdGlvbnMtPntUeXBlfSBlcSAnQ2hlY2tib3gnCiAgICAgICAgICAgICAgICB8fCAkUXVlc3Rpb25zLT57VHlwZX0gZXEgJ05QUycKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIGZvciBteSAkQW5zd2VycyAoIEB7ICRRdWVzdGlvbnMtPntBbnN3ZXJ9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+QW5zd2VyQWRkKAogICAgICAgICAgICAgICAgICAgICAgICBTdXJ2ZXlJRCAgICAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgICAgID0+ICRRdWVzdGlvbklELAogICAgICAgICAgICAgICAgICAgICAgICBBbnN3ZXIgICAgICAgICA9PiAkQW5zd2VycywKICAgICAgICAgICAgICAgICAgICAgICAgQW5zd2VyUmVxdWlyZWQgPT4gMSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIEdldCB0ZXN0IGFuc3dlciBJRC4KICAgICAgICAgICAgICAgICAgICBteSAkQW5zd2VyUXVvdGVkID0gJERCT2JqZWN0LT5RdW90ZSgkQW5zd2Vycyk7CiAgICAgICAgICAgICAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICAgICAgICAgICAgICBTUUwgID0+ICJTRUxFQ1QgaWQgRlJPTSBzdXJ2ZXlfYW5zd2VyIFdIRVJFIGFuc3dlciA9ID8gQU5EIHF1ZXN0aW9uX2lkID0gPyIsCiAgICAgICAgICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJEFuc3dlclF1b3RlZCwgXCRRdWVzdGlvbklEIF0KICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIG15ICRBbnN3ZXJJRDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEFuc3dlcklEID0gJFJvd1swXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQW5zd2VySURzLCAgICRBbnN3ZXJJRDsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBBbnN3ZXJOYW1lcywgJEFuc3dlcnM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHVzaCBAUXVlc3Rpb25OYW1lcywgJFF1ZXN0aW9uTmFtZTsKICAgICAgICB9CgogICAgICAgICMgU2V0IHRlc3Qgc3VydmV5IG9uIG1hc3RlciBzdGF0dXMuCiAgICAgICAgbXkgJFN0YXR1c1NldCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVN0YXR1c1NldCgKICAgICAgICAgICAgU3VydmV5SUQgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgTmV3U3RhdHVzID0+ICdNYXN0ZXInCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN0YXR1c1NldCwKICAgICAgICAgICAgIlN1cnZleSBtYXN0ZXIgc3RhdHVzIGlzIHNldCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB0aWNrZXQuCiAgICAgICAgbXkgJFRpY2tldE51bWJlciA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZU51bWJlcigpOwogICAgICAgIG15ICRUaWNrZXRJRCAgICAgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgICAgIFROICAgICAgICAgICA9PiAkVGlja2V0TnVtYmVyLAogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gIlNlbGVuaXVtIFRlc3QgVGlja2V0IiwKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ25ldycsCiAgICAgICAgICAgIEN1c3RvbWVySUQgICA9PiAnU2VsZW5pdW1DdXN0b21lcicsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAndGVzdEBsb2NhbGhvc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRUaWNrZXRJRCwKICAgICAgICAgICAgIlRpY2tldCBJRCAkVGlja2V0SUQgaXMgY3JlYXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEFydGljbGVJbnRlcm5hbEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyktPkJhY2tlbmRGb3JDaGFubmVsKAogICAgICAgICAgICBDaGFubmVsTmFtZSA9PiAnSW50ZXJuYWwnLAogICAgICAgICk7CgogICAgICAgICMgQWRkIGFydGljbGUgdG8gdGVzdCBjcmVhdGVkIHRpY2tldC4KICAgICAgICBteSAkQXJ0aWNsZUlEID0gJEFydGljbGVJbnRlcm5hbEJhY2tlbmRPYmplY3QtPkFydGljbGVDcmVhdGUoCiAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMCwKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2FnZW50JywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQWdlbnQgPGVtYWlsQGV4YW1wbGUuY29tPicsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdDdXN0b21lciBBIDxjdXN0b21lci1hQGV4YW1wbGUuY29tPicsCiAgICAgICAgICAgIENjICAgICAgICAgICAgICAgICAgID0+ICdDdXN0b21lciBCIDxjdXN0b21lci1iQGV4YW1wbGUuY29tPicsCiAgICAgICAgICAgIFJlcGx5VG8gICAgICAgICAgICAgID0+ICdDdXN0b21lciBCIDxjdXN0b21lci1iQGV4YW1wbGUuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICdzb21lIHNob3J0IGRlc2NyaXB0aW9uJywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQgUGVybCBtb2R1bGVzIHByb3ZpZGUgYSByYW5nZSBvZicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFRpY2tldElELAogICAgICAgICAgICAiQXJ0aWNsZSBJRCAkQXJ0aWNsZUlEIGlzIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgU2VuZCBzdXJ2ZXkgcmVxdWVzdC4KICAgICAgICBteSAkUmVxdWVzdCA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RTZW5kKAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFJlcXVlc3QsCiAgICAgICAgICAgICJTdXJ2ZXkgcmVxdWVzdCBpcyBzZW50IiwKICAgICAgICApOwoKICAgICAgICAjIEdldCBwdWJsaWMgc3VydmV5IGtleSBmcm9tIHRlc3Qgc3VydmV5IHJlcXVlc3QuCiAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgID0+ICJTRUxFQ1QgcHVibGljX3N1cnZleV9rZXkgRlJPTSBzdXJ2ZXlfcmVxdWVzdCBXSEVSRSBzdXJ2ZXlfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgIG15ICRQdWJsaWNTdXJ2ZXlLZXk7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRQdWJsaWNTdXJ2ZXlLZXkgPSAkUm93WzBdOwogICAgICAgIH0KCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIFB1YmxpY1N1cnZleSBvZiBjcmVhdGVkIHRlc3Qgc3VydmV5LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9cHVibGljLnBsP0FjdGlvbj1QdWJsaWNTdXJ2ZXk7UHVibGljU3VydmV5S2V5PSRQdWJsaWNTdXJ2ZXlLZXkiKTsKCiAgICAgICAgIyBHZXQgdGVzdCBkYXRhLgogICAgICAgIG15IEBUZXN0ID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnVGl0bGUnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFN1cnZleVRpdGxlLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnVGlja2V0IE51bWJlcicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVGlja2V0TnVtYmVyLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnJywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRTdXJ2ZXJ5SW50cm9kdWN0aW9uLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnUXVlc3Rpb24nLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gW0BRdWVzdGlvbk5hbWVzXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJ0Fuc3dlcicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBbQEFuc3dlck5hbWVzXSwKICAgICAgICAgICAgfSwKCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayB0ZXN0IHN1cnZleSB2YWx1ZXMuCiAgICAgICAgZm9yIG15ICRDaGVja1ZhbHVlIChAVGVzdCkgewogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJENoZWNrVmFsdWUtPntWYWx1ZX0gKSApIHsKICAgICAgICAgICAgICAgIGZvciAoIEB7ICRDaGVja1ZhbHVlLT57VmFsdWV9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkXyApID4gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICIkQ2hlY2tWYWx1ZS0+e05hbWV9ICRfIGlzIGZvdW5kIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRDaGVja1ZhbHVlLT57VmFsdWV9ICkgPiAtMSwKICAgICAgICAgICAgICAgICAgICAiJENoZWNrVmFsdWUtPntOYW1lfSAkQ2hlY2tWYWx1ZS0+e1ZhbHVlfSBpcyBmb3VuZCIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEdldCB2b3RlIGRhdGEuCiAgICAgICAgbXkgQFZvdGVEYXRhID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJRCAgICA9PiAiMSRRdWVzdGlvbklEc1swXVllcyIsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnWWVzJwogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJRCAgICA9PiAiMiRRdWVzdGlvbklEc1sxXSRBbnN3ZXJJRHNbMF0iLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ1JhZGlvT25lJwogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJRCAgICA9PiAiMyRBbnN3ZXJJRHNbMl0iLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gIkNoZWNrQm94T25lIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJRCAgICAgPT4gIiRRdWVzdGlvbklEc1szXSIsCiAgICAgICAgICAgICAgICBBbnN3ZXIgPT4gJ1NlbGVuaXVtIFN1cnZleSBBbnN3ZXInLAogICAgICAgICAgICAgICAgQ2hlY2sgID0+ICdTZWxlbml1bSBTdXJ2ZXkgQW5zd2VyJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSUQgICAgPT4gIjUkUXVlc3Rpb25JRHNbNF0kQW5zd2VySURzWzRdIiwKICAgICAgICAgICAgICAgIENoZWNrID0+ICdOUFNPbmUnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgRmlsbCBpbiBzdXJ2ZXkgcXVlc3Rpb25zLgogICAgICAgIGZvciBteSAkU3VydmV5Vm90ZSAoQFZvdGVEYXRhKSB7CiAgICAgICAgICAgIGlmICggJFN1cnZleVZvdGUtPntBbnN3ZXJ9ICkgewogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjUmljaFRleHQkU3VydmV5Vm90ZS0+e0lEfSIsICdjc3MnICktPnNlbmRfa2V5cyggJFN1cnZleVZvdGUtPntBbnN3ZXJ9ICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQGlkPSdQdWJsaWNTdXJ2ZXlWb3RlJFN1cnZleVZvdGUtPntJRH0nXSIpLT5jbGljaygpOwogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjUHVibGljU3VydmV5Vm90ZSRTdXJ2ZXlWb3RlLT57SUR9OmNoZWNrZWQnKS5sZW5ndGgiCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFN1Ym1pdCB2b3RlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdGaW5pc2gnXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBWZXJpZnkgcG9zdCB2b3RlIG1lc3NhZ2VzLgogICAgICAgIG15ICRQb3N0Vm90ZSA9IFsgIlN1cnZleSBJbmZvcm1hdGlvbiIsICJUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suIiwgIlRoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuIiBdOwogICAgICAgIGZvciBteSAkUG9zdFZvdGVNZXNzYWdlICggQHskUG9zdFZvdGV9ICkgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkUG9zdFZvdGVNZXNzYWdlICkgPiAtMSwKICAgICAgICAgICAgICAgICInJFBvc3RWb3RlTWVzc2FnZScgbWVzc2FnZSBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRTdXJ2ZXlab29tIG9mIGNyZWF0ZWQgdGVzdCBzdXJ2ZXkuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRTdXJ2ZXlab29tO1N1cnZleUlEPSRTdXJ2ZXlJRCIpOwoKICAgICAgICAjIENsaWNrIG9uICdTdGF0cyBEZXRhaWxzJyBhbmQgc3dpdGNoIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNNZW51MDMwLVN0YXRzRGV0YWlscyIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApOwogICAgICAgIG15ICRIYW5kbGVzID0gJFNlbGVuaXVtLT5nZXRfd2luZG93X2hhbmRsZXMoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMV0gKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIHBhZ2UgaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIuU2VlRGV0YWlscyIpLmxlbmd0aCcgKTsKCiAgICAgICAgIyBDbGljayB0byBzZWUgZGV0YWlscyBvZiBzdGF0cy4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkUmVmcmVzaCgpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiLlNlZURldGFpbHMiLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIFwkKCcuVGFibGVMaWtlJykubGVuZ3RoIiApOwoKICAgICAgICAjIFZlcmlmeSB2b3RlIGRldGFpbHMuCiAgICAgICAgZm9yIG15ICRWb3RlRGV0YWlscyAoQFZvdGVEYXRhKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRWb3RlRGV0YWlscy0+e0NoZWNrfSApID4gLTEsCiAgICAgICAgICAgICAgICAiVm90ZSAkVm90ZURldGFpbHMtPntDaGVja30gaXMgZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBHZXQgY2xlYW4tdXAgZGF0YS4KICAgICAgICBteSBAQ2xlYW5EYXRhID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnUXVldWVzJywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXlfcXVldWUnLAogICAgICAgICAgICAgICAgU1FMSUQgPT4gJ3N1cnZleV9pZCcsCiAgICAgICAgICAgICAgICBJRCAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdBbnN3ZXJzJywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXlfYW5zd2VyJywKICAgICAgICAgICAgICAgIFNRTElEID0+ICdpZCcsCiAgICAgICAgICAgICAgICBJRCAgICA9PiBbQEFuc3dlcklEc10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdRdWVzdGlvbnMnLAogICAgICAgICAgICAgICAgVGFibGUgPT4gJ3N1cnZleV9xdWVzdGlvbicsCiAgICAgICAgICAgICAgICBTUUxJRCA9PiAnc3VydmV5X2lkJywKICAgICAgICAgICAgICAgIElEICAgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJ1JlcXVlc3RzJywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXlfcmVxdWVzdCcsCiAgICAgICAgICAgICAgICBTUUxJRCA9PiAnc3VydmV5X2lkJywKICAgICAgICAgICAgICAgIElEICAgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJ1ZvdGVzJywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXlfdm90ZScsCiAgICAgICAgICAgICAgICBTUUxJRCA9PiAnaWQnLAogICAgICAgICAgICAgICAgSUQgICAgPT4gW0BRdWVzdGlvbklEc10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdTdXJ2ZXknLAogICAgICAgICAgICAgICAgVGFibGUgPT4gJ3N1cnZleScsCiAgICAgICAgICAgICAgICBTUUxJRCA9PiAnaWQnLAogICAgICAgICAgICAgICAgSUQgICAgPT4gJFN1cnZleUlELAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIG15ICRTdWNjZXNzOwoKICAgICAgICAjIERlbGV0ZSB0ZXN0IGRhdGEgZnJvbSBEQi4KICAgICAgICBmb3IgbXkgJERlbGV0ZSAoQENsZWFuRGF0YSkgewogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJERlbGV0ZS0+e0lEfSApICkgewoKICAgICAgICAgICAgICAgIG15ICRJRHMgPSBqb2luICcsICcsIEB7ICREZWxldGUtPntJRH0gfTsKICAgICAgICAgICAgICAgIG15ICRTUUxXaGVyZSA9ICJXSEVSRSAkRGVsZXRlLT57U1FMSUR9IElOICggJElEcyApIjsKCiAgICAgICAgICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSAkRGVsZXRlLT57VGFibGV9ICRTUUxXaGVyZSIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgIiREZWxldGUtPntOYW1lfSBmb3IgJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gJERlbGV0ZS0+e1RhYmxlfSBXSEVSRSAkRGVsZXRlLT57U1FMSUR9ID0gPyIsCiAgICAgICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkRGVsZXRlLT57SUR9IF0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgIiREZWxldGUtPntOYW1lfSBmb3IgJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBEZWxldGUgdGVzdCB0aWNrZXQuCiAgICAgICAgJFN1Y2Nlc3MgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXREZWxldGUoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlRpY2tldCBJRCAkVGlja2V0SUQgaXMgZGVsZXRlZCIsCiAgICAgICAgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyBxdygkU2VsZik7Cgp1c2UgRGF0YTo6RHVtcGVyOwoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiMgQ3JlYXRlIGxvY2FsIGNvbmZpZyBvYmplY3QuCm15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKIyBTZXQgc2VuZCBwZXJpb2QgdG8gYWx3YXlzIHNlbmQgc3VydmV5LgokSGVscGVyT2JqZWN0LT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgS2V5ICAgPT4gJ1N1cnZleTo6U2VuZFBlcmlvZCcsCiAgICBWYWx1ZSA9PiAwLAopOwoKIyBEaXNhYmxlIGVtYWlsIGNoZWNrLgokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnQ2hlY2tFbWFpbEFkZHJlc3NlcycsCiAgICBWYWx1ZSA9PiAwLAopOwoKIyBTZXQgc2VuZCBwZXJpb2QgdG8gc2VuZCBpbW1lZGlhdGVseSBhZnRlciB0aWNrZXQgY2xvc2UuCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdTdXJ2ZXk6OlNlbmRJbkhvdXJzQWZ0ZXJDbG9zZScsCiAgICBWYWx1ZSA9PiAwLAopOwoKIyBGcmVlemUgVGltZS4KJEhlbHBlck9iamVjdC0+Rml4ZWRUaW1lU2V0KAogICAgJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICBTdHJpbmcgPT4gJzIwMTgtMDYtMjAgMTI6MDA6MDAnLAogICAgICAgIH0sCiAgICApLT5Ub0Vwb2NoKCkKKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXJPYmplY3QtPkdldFJhbmRvbUlEKCk7CgojIENyZWF0aW5nIFF1ZXVlLgpteSAkUXVldWVSYW5kID0gIlNvbWVRdWV1ZSRSYW5kb21JRCAiOwpteSAkUXVldWVJRCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyktPlF1ZXVlQWRkKAogICAgTmFtZSAgICAgICAgICAgID0+ICRRdWV1ZVJhbmQsCiAgICBWYWxpZElEICAgICAgICAgPT4gMSwKICAgIEdyb3VwSUQgICAgICAgICA9PiAxLAogICAgU3lzdGVtQWRkcmVzc0lEID0+IDEsCiAgICBTYWx1dGF0aW9uSUQgICAgPT4gMSwKICAgIFNpZ25hdHVyZUlEICAgICA9PiAxLAogICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICBDb21tZW50ICAgICAgICAgPT4gJ1NvbWUgQ29tbWVudCcsCik7CiRTZWxmLT5UcnVlKAogICAgJFF1ZXVlSUQsCiAgICAiUXVldWVBZGQoKSAtICRRdWV1ZVJhbmQsICRRdWV1ZUlEIiwKKTsKCiMgU2V0dXAgc3VydmV5LgpteSAkU3VydmV5VGl0bGUgPSAiQSBUaXRsZSRSYW5kb21JRCAiOwpteSAlU3VydmV5RGF0YSAgPSAoCiAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICRTdXJ2ZXlUaXRsZSwKICAgIEludHJvZHVjdGlvbiAgICAgICAgPT4gJ1RoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIHN1cnZleScsCiAgICBEZXNjcmlwdGlvbiAgICAgICAgID0+ICdUaGUgaW50ZXJuYWwgZGVzY3JpcHRpb24gb2YgdGhlIHN1cnZleScsCiAgICBOb3RpZmljYXRpb25TZW5kZXIgID0+ICdxdWFsaXR5QHVuaXR0ZXN0LmNvbScsCiAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICdIZWxwIHVzIHdpdGggeW91ciBmZWVkYmFjayEnLAogICAgTm90aWZpY2F0aW9uQm9keSAgICA9PiAnRGVhciBjdXN0b21lci4uLicsCiAgICBRdWV1ZXMgICAgICAgICAgICAgID0+IFskUXVldWVJRF0sCik7CgojIEdldCBzdXJ2ZXkgb2JqZWN0LgpteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKIyBDcmVhdGUgc3VydmV5LgpteSAkU3VydmV5SUQgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlBZGQoCiAgICBVc2VySUQgPT4gMSwKICAgICVTdXJ2ZXlEYXRhLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdXJ2ZXlJRCwKICAgICJTdXJ2ZXlBZGQoKSIsCik7CgojIEFkZCBxdWVzdGlvbiB0byBzdXJ2ZXkuCm15ICRRdWVzdGlvbkFkZCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uQWRkKAogICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgIFN1cnZleUlEICAgICAgID0+ICRTdXJ2ZXlJRCwKICAgIFF1ZXN0aW9uICAgICAgID0+ICdUaGUgUXVlc3Rpb24nLAogICAgQW5zd2VyUmVxdWlyZWQgPT4gMCwKICAgIFR5cGUgICAgICAgICAgID0+ICdUZXh0YXJlYScsCik7CgojIFNldHVwIHN1cnZleSB0byBNYXN0ZXIuCm15ICRTdGF0dXNTZXQgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlTdGF0dXNTZXQoCiAgICBTdXJ2ZXlJRCAgPT4gJFN1cnZleUlELAogICAgTmV3U3RhdHVzID0+ICdNYXN0ZXInLAopOwokU2VsZi0+SXMoCiAgICAkU3RhdHVzU2V0LAogICAgJ1N0YXR1c1NldCcsCiAgICAiU3VydmV5U3RhdHVzU2V0KCkiLAopOwoKIyBHZXQgbGlzdCBvZiBxdWVzdGlvbnMuCm15IEBMaXN0ID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25MaXN0KAogICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAopOwoKIyBHZXQgY3JlYXRlZCBzdXJ2ZXkuCm15ICVTdXJ2ZXlHZXQgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoCiAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCik7CgojIEdlbmVyYXRlIER5bmFtaWMgbGlzdCB0ZXN0IHN0YXRpc3RpYy4KbXkgJFN0YXRzT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycpOwpteSAkU3VydmV5U3RhdElEID0gJFN0YXRzT2JqZWN0LT5TdGF0c0FkZCgKICAgIFVzZXJJRCA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdXJ2ZXlTdGF0SUQsCiAgICAnU3RhdHNBZGQoKScsCik7CgojIENyZWF0aW5nIHRpY2tldC4KbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKbXkgJERCT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKbXkgJFRpY2tldElEID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgVGl0bGUgICAgICAgID0+ICJTb21lIFRpY2tldCBUaXRsZSRSYW5kb21JRCIsCiAgICBRdWV1ZUlEICAgICAgPT4gJFF1ZXVlSUQsCiAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgIFN0YXRlICAgICAgICA9PiAnbmV3JywKICAgIEN1c3RvbWVySUQgICA9PiAnMTIzNDY1JywKICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAZXhhbXBsZS5jb20nLAogICAgT3duZXJJRCAgICAgID0+IDEsCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkVGlja2V0SUQsCiAgICAiVGlja2V0Q3JlYXRlKCkgZm9yIFRpY2tldElEICRUaWNrZXRJRCIsCik7CgpteSAkQXJ0aWNsZU9iamVjdCAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKTsKbXkgJEFydGljbGVJbnRlcm5hbEJhY2tlbmRPYmplY3QgPSAkQXJ0aWNsZU9iamVjdC0+QmFja2VuZEZvckNoYW5uZWwoCiAgICBDaGFubmVsTmFtZSA9PiAnUGhvbmUnLAopOwoKbXkgJEFydGljbGVJRCA9ICRBcnRpY2xlSW50ZXJuYWxCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQ3JlYXRlKAogICAgVGlja2V0SUQgICAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICdjdXN0b21lcicsCiAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8ZW1haWxAZXhhbXBsZS5jb20+JywKICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdTb21lIEFnZW50IDxhZ2VudEBleGFtcGxlLmNvbT4nLAogICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ3NvbWUgc2hvcnQgZGVzY3JpcHRpb24nLAogICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ0FkZE5vdGUnLAogICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRBcnRpY2xlSUQsCiAgICAiQXJ0aWNsZUNyZWF0ZSgpIGZvciBBcnRpY2xlSUQgJEFydGljbGVJRCIsCik7CgojIFNldCB0aWNrZXQgc3RhdGUgdG8gY2xvc2UuCm15ICRTdWNjZXNzID0gJFRpY2tldE9iamVjdC0+VGlja2V0U3RhdGVTZXQoCiAgICBTdGF0ZSAgICA9PiAnY2xvc2VkIHN1Y2Nlc3NmdWwnLAogICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJUaWNrZXQgaXMgY2xvc2VkIHN1Y2Nlc3NmdWxseS4iLAopOwoKIyBTZW5kIHN1cnZleSByZXF1ZXN0LgokU3VjY2VzcyA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RTZW5kKAogICAgVGlja2V0SUQgPT4gJFRpY2tldElELAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlJlcXVlc3QgaXMgc2VudCBzdWNjZXNzZnVsbHkuIiwKKTsKCiMgU2V0IHN1cnZleSBwdWJsaWMgYW5zd2VyLgokREJPYmplY3QtPlByZXBhcmUoCiAgICBTUUwgPT4gJwogICAgICAgIFNFTEVDVCBwdWJsaWNfc3VydmV5X2tleQogICAgICAgIEZST00gc3VydmV5X3JlcXVlc3QKICAgICAgICBXSEVSRSB0aWNrZXRfaWQgPSA/JywKICAgIEJpbmQgID0+IFsgXCRUaWNrZXRJRCBdLAogICAgTGltaXQgPT4gMSwKKTsKCm15ICRQdWJsaWNTdXJ2ZXlLZXk7CndoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgJFB1YmxpY1N1cnZleUtleSA9ICRSb3dbMF07Cn0KCiRTdWNjZXNzID0gJFN1cnZleU9iamVjdC0+UHVibGljQW5zd2VyU2V0KAogICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICBRdWVzdGlvbklEICAgICAgPT4gJExpc3RbMF17UXVlc3Rpb25JRH0sCiAgICBWb3RlVmFsdWUgICAgICAgPT4gJ1NvbWUgYW5zd2VyJywKKTsKCiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiUHVibGljIGFuc3dlciBpcyBzZXQgc3VjY2Vzc2Z1bGx5LiIsCik7CgojIFVwZGF0ZSBjcmVhdGVkIHN1cnZleSBzdGF0LgpteSAkVXBkYXRlU3VjY2VzcyA9ICRTdGF0c09iamVjdC0+U3RhdHNVcGRhdGUoCiAgICBTdGF0SUQgPT4gJFN1cnZleVN0YXRJRCwKICAgIEhhc2ggICA9PiB7CiAgICAgICAgVGl0bGUgICAgICAgID0+ICJUaXRsZSBmb3IgcmVzdWx0IHRlc3RzJFJhbmRvbUlEIiwKICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJ3NvbWUgRGVzY3JpcHRpb24nLAogICAgICAgIFRpbWVab25lICAgICA9PiAnVVRDJywKICAgICAgICBUaW1lU3RhbXAgICAgPT4gJzIwMTgtMDYtMjAgMTI6MDA6MDAnLAogICAgICAgIE9iamVjdCAgICAgICA9PiAnU3VydmV5TGlzdCcsCiAgICAgICAgT2JqZWN0TmFtZSAgID0+ICdTdXJ2ZXlMaXN0JywKICAgICAgICBGb3JtYXQgICAgICAgPT4gJ0NTVicsCiAgICAgICAgT2JqZWN0TW9kdWxlID0+ICdLZXJuZWw6OlN5c3RlbTo6U3RhdHM6OkR5bmFtaWM6OlN1cnZleUxpc3QnLAogICAgICAgIFN0YXRUeXBlICAgICA9PiAnZHluYW1pYycsCiAgICAgICAgQ2FjaGUgICAgICAgID0+IDEsCiAgICAgICAgVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgUGVybWlzc2lvbiAgID0+IFsKICAgICAgICAgICAgJzMnCiAgICAgICAgXSwKICAgICAgICBVc2VBc1h2YWx1ZSA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNvcnQgICAgICAgICAgID0+ICdJbmRpdmlkdWFsS2V5JywKICAgICAgICAgICAgICAgIEJsb2NrICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgICAgIFNlbGVjdGVkICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBFbGVtZW50ICAgICAgICA9PiAnU3VydmV5QXR0cmlidXRlcycsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQXR0cmlidXRlcyB0byBiZSBwcmludGVkJywKICAgICAgICAgICAgICAgIFNvcnRJbmRpdmlkdWFsID0+IFsKICAgICAgICAgICAgICAgICAgICAnQ3JlYXRlZCcsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVmFsdWVzID0+IHsKCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlZCA9PiAnQ3JlYXRlIFRpbWUnLAoKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgICA9PiAxLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZXMgPT4gWwogICAgICAgICAgICAgICAgICAgICdDcmVhdGVkJywKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnU29ydCBzZXF1ZW5jZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgICA9PiAxLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZXMgPT4gWwogICAgICAgICAgICAgICAgICAgICdVcCcKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBCbG9jayAgICA9PiAnU2VsZWN0RmllbGQnLAogICAgICAgICAgICAgICAgU2VsZWN0ZWQgPT4gMSwKICAgICAgICAgICAgICAgIEVsZW1lbnQgID0+ICdTb3J0U2VxdWVuY2UnLAogICAgICAgICAgICAgICAgVmFsdWVzICAgPT4gewogICAgICAgICAgICAgICAgICAgICdVcCcgPT4gJ2FzY2VuZGluZycKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZXMgPT4gewogICAgICAgICAgICAgICAgICAgICRTdXJ2ZXlJRCA9PiAkU3VydmV5VGl0bGUsCgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlcyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJFN1cnZleUlECiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICAgICAgICAgIEJsb2NrICAgICAgID0+ICdTZWxlY3RGaWVsZCcsCiAgICAgICAgICAgICAgICBFbGVtZW50ICAgICA9PiAnU3VydmV5SURzJywKICAgICAgICAgICAgICAgIEZpeGVkICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnU3VydmV5IExpc3QnCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgfSwKICAgIFVzZXJJRCA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRVcGRhdGVTdWNjZXNzLAogICAgJ1N0YXRzVXBkYXRlKCknLAopOwoKIyBTZXR1cCBvZiB0ZXN0IGNhc2VzLgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgVGltZVpvbmUgID0+ICdVVEMnLAogICAgICAgIFRpbWVTdGFtcCA9PiAnMjAxOC0wNi0yMCAxMjowMDowMCAoVVRDKScsCiAgICB9LAogICAgewogICAgICAgIFRpbWVab25lICA9PiAnRXVyb3BlL0JlbGdyYWRlJywKICAgICAgICBUaW1lU3RhbXAgPT4gJzIwMTgtMDYtMjAgMTQ6MDA6MDAgKEV1cm9wZS9CZWxncmFkZSknLAogICAgfSwKICAgIHsKICAgICAgICBUaW1lWm9uZSAgPT4gJ0FtZXJpY2EvTmV3X1lvcmsnLAogICAgICAgIFRpbWVTdGFtcCA9PiAnMjAxOC0wNi0yMCAwODowMDowMCAoQW1lcmljYS9OZXdfWW9yayknLAogICAgfSwKKTsKCiMgU2V0dXAgZHluYW1pYyBzdGF0aXN0aWMgd2l0aCBTdXJ2ZXlMaXN0IG9iamVjdC4KZm9yIG15ICRUaW1lIChAVGVzdHMpIHsKICAgIG15ICRVcGRhdGVTdWNjZXNzID0gJFN0YXRzT2JqZWN0LT5TdGF0c1VwZGF0ZSgKICAgICAgICBTdGF0SUQgPT4gJFN1cnZleVN0YXRJRCwKICAgICAgICBIYXNoICAgPT4gewogICAgICAgICAgICBUaW1lWm9uZSA9PiAkVGltZS0+e1RpbWVab25lfSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRVcGRhdGVTdWNjZXNzLAogICAgICAgICdTdGF0c1VwZGF0ZSgpJywKICAgICk7CgogICAgIyBHZXQgYWxsIHRoZSBzdGF0IGRhdGEuCiAgICBteSAkU3RhdCA9ICRTdGF0c09iamVjdC0+U3RhdHNHZXQoCiAgICAgICAgU3RhdElEID0+ICRTdXJ2ZXlTdGF0SUQsCiAgICApOwoKICAgIG15IEBSZXN1bHREYXRhID0gJFN0YXRzT2JqZWN0LT5TdGF0c1J1bigKICAgICAgICBTdGF0SUQgICA9PiAkU3VydmV5U3RhdElELAogICAgICAgIEdldFBhcmFtID0+ICRTdGF0LAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICApOwoKICAgICRTZWxmLT5JcygKICAgICAgICAkUmVzdWx0RGF0YVswXVsyXVswXSwKICAgICAgICAkVGltZS0+e1RpbWVTdGFtcH0sCiAgICAgICAgIlRpbWUgem9uZSBpcyBzZXQgY29ycmVjdGx5IHRvOiAkVGltZS0+e1RpbWVTdGFtcH0iLAogICAgKTsKfQoKMTsK
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTggT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIFN1cnZleSA9IFN1cnZleSB8fCB7fTsKU3VydmV5LkFnZW50ID0gU3VydmV5LkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgU3VydmV5LkFnZW50LkN1c3RvbWVyVXNlckNvbmRpdGlvbnMKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyBpbiBBZ2VudFN1cnZleUFkZCBhbmQgQWdlbnRTdXJ2ZXlFZGl0LgogKi8KU3VydmV5LkFnZW50LkN1c3RvbWVyVXNlckNvbmRpdGlvbnMgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CiAgICB2YXIgQWN0aW9uID0gJCgnaW5wdXRbbmFtZT0iQWN0aW9uIl0nKS52YWwoKTsKICAgIHZhciBEcm9wZG93bklEOwogICAgdmFyIEVycm9yc09iajsKCiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBTdXJ2ZXkuQWdlbnQuQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucwogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgSW5pdGlhbGl6ZSBidWlsZGluZyB0aGUgc2VuZCBjb25kaXRpb25zLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciAkRHJvcGRvd24gPSAkKCcjQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucycpLAogICAgICAgICAgICBDdXN0b21lclVzZXJDb25kaXRpb25zID0gQ29yZS5Db25maWcuR2V0KCJKU0RhdGEuQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyIpLAogICAgICAgICAgICBFcnJvcnMgPSBDb3JlLkNvbmZpZy5HZXQoIkpTRGF0YS5DdXN0b21lclVzZXJDb25kaXRpb25FcnJvcnMiKTsKCiAgICAgICAgaWYgKGlzSlF1ZXJ5T2JqZWN0KCREcm9wZG93bikpIHsKCiAgICAgICAgICAgIERyb3Bkb3duSUQgPSAkRHJvcGRvd24ucHJvcCgnaWQnKTsKCiAgICAgICAgICAgICREcm9wZG93bi5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIEZpZWxkTmFtZSA9ICREcm9wZG93bi52YWwoKTsKCiAgICAgICAgICAgICAgICAvLyBBZGQgbmV3IGZpZWxkIGZvciBGaWVsZE5hbWUuCiAgICAgICAgICAgICAgICBUYXJnZXROUy5BZGRDb25kaXRpb24oRmllbGROYW1lKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnc3Bhbi5SZW1vdmVCdXR0b25DdXN0b21lckZpZWxkJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgLy8gR2V0IHdob2xlICJjb250YWluZXIiIGFuZCByZW1vdmUgaXQuCiAgICAgICAgICAgICAgICB2YXIgJEZpZWxkID0gJCh0aGlzKS5wYXJlbnQoKS5wYXJlbnQoKS5wYXJlbnQoKTsKCiAgICAgICAgICAgICAgICBUYXJnZXROUy5SZW1vdmVDb25kaXRpb24oJEZpZWxkKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnc3Bhbi5BZGRCdXR0b25DdXN0b21lckNvbmRpdGlvbicsIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICAvLyBHZXQgZmlyc3QgY29uZGl0aW9uIHRvIGNsb25lIGl0IChlbXB0eSkuCiAgICAgICAgICAgICAgICB2YXIgJEZpZWxkID0gJCh0aGlzKS5wYXJlbnQoKS5wYXJlbnQoKS5jaGlsZHJlbignbGknKS5maXJzdCgpOwogICAgICAgICAgICAgICAgdmFyIEZpZWxkTmFtZSA9ICQodGhpcykucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkucHJvcCgnaWQnKTsKICAgICAgICAgICAgICAgIFRhcmdldE5TLkFkZENvbmRpdGlvbkxpbmUoJEZpZWxkKTsKICAgICAgICAgICAgICAgIFRhcmdldE5TLlJlc2V0TGlzdEl0ZW1JRHMoRmllbGROYW1lKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnc3Bhbi5SZW1vdmVCdXR0b25DdXN0b21lckNvbmRpdGlvbicsIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICB2YXIgJEZpZWxkID0gJCh0aGlzKS5wYXJlbnQoKTsKICAgICAgICAgICAgICAgIHZhciBGaWVsZE5hbWUgPSAkKHRoaXMpLnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpLnByb3AoJ2lkJyk7CiAgICAgICAgICAgICAgICBUYXJnZXROUy5SZW1vdmVDb25kaXRpb25MaW5lKCRGaWVsZCk7CiAgICAgICAgICAgICAgICBUYXJnZXROUy5SZXNldExpc3RJdGVtSURzKEZpZWxkTmFtZSk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJ2lucHV0LkN1c3RvbWVyVXNlckNvbmRpdGlvbnNDaGVja2JveCcsIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOwogICAgICAgICAgICAgICAgJHRoaXMucHJldignaW5wdXRbdHlwZT0iaGlkZGVuIl0nKS52YWwoKCgkdGhpcy5wcm9wKCdjaGVja2VkJykpID8gMSA6IDApKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBpZiAoQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucykgewoKICAgICAgICAgICAgICAgIGlmIChFcnJvcnMpIHsKCiAgICAgICAgICAgICAgICAgICAgRXJyb3JzT2JqID0gRXJyb3JzOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIFRhcmdldE5TLlJlc3RvcmVDb25kaXRpb25zKEN1c3RvbWVyVXNlckNvbmRpdGlvbnMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICAvKioKICAgICAqIEBuYW1lIEFkZENvbmRpdGlvbgogICAgICogQG1lbWJlcm9mIFN1cnZleS5BZ2VudC5DdXN0b21lclVzZXJDb25kaXRpb25zCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBGaWVsZE5hbWUgLSBUaGUgZmllbGQgdGhhdCBzaG91bGQgYmUgYWRkZWQKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBDb25kaXRpb25zIC0gVGhlIGNvbmRpdGlvbnMgZm9yIHRoZSBmaWVsZCB3aGljaCBzaG91bGQgYmUgaW5zZXJ0ZWQgKGZvciBlZGl0KQogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIEFkZHMgYSBuZXcgZmllbGQgdG8gdGhlIGNvbmRpdGlvbnMgYW5kIGluc2VydHMgc2F2ZWQgY29uZGl0aW9ucy4KICAgICAqLwogICAgVGFyZ2V0TlMuQWRkQ29uZGl0aW9uID0gZnVuY3Rpb24gKEZpZWxkTmFtZSwgQ29uZGl0aW9ucykgewoKICAgICAgICB2YXIgJENsb25lLCAkQ2hlY2tib3gsICRMYWJlbCwgJElucHV0OwogICAgICAgIHZhciBOZXdOYW1lLCBOZXdDaGVja2JveElELCBOZXdJbnB1dElEOwogICAgICAgIHZhciBEYXRhOwogICAgICAgIHZhciBTZWxlY3RlZFZhbHVlczsKCiAgICAgICAgaWYgKCFGaWVsZE5hbWUpIHJldHVybjsKCiAgICAgICAgJCgnI0N1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHMnKS52YWwoJCgnI0N1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHMnKS52YWwoKSArICcsJyArIEZpZWxkTmFtZSk7CgogICAgICAgICRDbG9uZSA9ICQoJyNUZW1wbGF0ZUxldmVsMScpLmNsb25lKCk7CgogICAgICAgIC8vIENoYW5nZSBuZWVkZWQgdGV4dHMsIElEcywgLi4uCiAgICAgICAgJENsb25lLmZpbmQoJ3N0cm9uZycpLnRleHQoRmllbGROYW1lKTsKCiAgICAgICAgJENoZWNrYm94ID0gJENsb25lLmZpbmQoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKTsKICAgICAgICAkTGFiZWwgICAgPSAkQ2xvbmUuZmluZCgnbGFiZWwnKTsKICAgICAgICAkSW5wdXQgICAgPSAkQ2xvbmUuZmluZCgnaW5wdXRbdHlwZT0idGV4dCJdJyk7CgogICAgICAgIE5ld05hbWUgICAgICAgPSBGaWVsZE5hbWU7CiAgICAgICAgTmV3Q2hlY2tib3hJRCA9IEZpZWxkTmFtZSArICdDaGVja2JveDEnOwogICAgICAgIE5ld0lucHV0SUQgICAgPSBGaWVsZE5hbWUgKyAnSW5wdXQxJzsKCiAgICAgICAgLy8gVGhlIGxhYmVsIHNob3VsZCBiZSBhYmxlIHRvIGNoZWNrL3VuY2hlY2sgdGhlIGNoZWNrYm94LgogICAgICAgICRDaGVja2JveAogICAgICAgICAgICAucHJvcCgnaWQnLCBOZXdDaGVja2JveElEKQogICAgICAgICAgICAucHJldignaW5wdXRbdHlwZT0iaGlkZGVuIl0nKS5wcm9wKCduYW1lJywgTmV3TmFtZSArICdDaGVja2JveCcpOwogICAgICAgICRMYWJlbC5wcm9wKCdmb3InLCBOZXdDaGVja2JveElEKTsKCiAgICAgICAgJElucHV0CiAgICAgICAgICAgIC5wcm9wKCduYW1lJywgTmV3TmFtZSkKICAgICAgICAgICAgLnByb3AoJ2lkJywgTmV3SW5wdXRJRCk7CgogICAgICAgICRDbG9uZQogICAgICAgICAgICAucHJvcCgnaWQnLCBGaWVsZE5hbWUpCiAgICAgICAgICAgIC5maW5kKCdkaXYuVG9vbHRpcEVycm9yTWVzc2FnZScpLnByb3AoJ2lkJywgTmV3SW5wdXRJRCArICdTZXJ2ZXJFcnJvcicpLmVuZCgpCiAgICAgICAgICAgIC5pbnNlcnRCZWZvcmUoJyNUZW1wbGF0ZUxldmVsMS5GaWVsZC5IaWRkZW4nKTsKCiAgICAgICAgLy8gUGVyZm9ybSBBSkFYIGNhbGwgdG8gY2hlY2sgd2hldGhlciB0aGUgZmllbGQgaXMgYW4gaW5wdXQgb3Igc2VsZWN0IGZpZWxkLgogICAgICAgIERhdGEgPSB7CiAgICAgICAgICAgIEFjdGlvbjogQWN0aW9uLAogICAgICAgICAgICBTdWJhY3Rpb246ICdBSkFYUmVxdWVzdCcsCiAgICAgICAgICAgIEZpZWxkTmFtZTogRmllbGROYW1lCiAgICAgICAgfTsKCiAgICAgICAgLy8gQWRkIHZhbHVlcyBmcm9tIGNvbmRpdGlvbnMgYXMgc2VsZWN0ZWQgdmFsdWVzIGZvciBzZWxlY3Rpb24uCiAgICAgICAgaWYgKHR5cGVvZiBDb25kaXRpb25zICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICBTZWxlY3RlZFZhbHVlcyA9IFtdOwogICAgICAgICAgICBPYmplY3Qua2V5cyhDb25kaXRpb25zKS5mb3JFYWNoKGZ1bmN0aW9uIChGaWVsZCkgewoKICAgICAgICAgICAgICAgIENvbmRpdGlvbnNbRmllbGRdLmZvckVhY2goZnVuY3Rpb24gKENvbmRpdGlvbikgewoKICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIERhdGEuQ2hlY2tib3hWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YS5DaGVja2JveFZhbHVlID0gQ29uZGl0aW9uLk5lZ2F0aW9uOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlcy5wdXNoKENvbmRpdGlvbi5SZWdFeHBWYWx1ZSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBEYXRhLlNlbGVjdGVkVmFsdWVzID0gU2VsZWN0ZWRWYWx1ZXM7CiAgICAgICAgfQoKICAgICAgICAvLyBDYWxsIHRoZSBBSkFYIGZ1bmN0aW9uCiAgICAgICAgQ29yZS5BSkFYLkZ1bmN0aW9uQ2FsbChDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLCBEYXRhLCBmdW5jdGlvbiAoUmVzcG9uc2UpIHsKCiAgICAgICAgICAgIGlmIChSZXNwb25zZS5TdWNjZXNzKSB7CgogICAgICAgICAgICAgICAgLy8gSW5zZXJ0IGFuZCBtb2Rlcm5pemUgZmllbGQuCiAgICAgICAgICAgICAgICAkKFJlc3BvbnNlLlNlbGVjdEZpZWxkKQogICAgICAgICAgICAgICAgICAgIC5wcm9wKCduYW1lJywgTmV3TmFtZSkKICAgICAgICAgICAgICAgICAgICAucHJvcCgnaWQnLCBOZXdJbnB1dElEKQogICAgICAgICAgICAgICAgICAgIC5pbnNlcnRBZnRlcigkQ2hlY2tib3gpOwoKICAgICAgICAgICAgICAgICRDaGVja2JveAogICAgICAgICAgICAgICAgICAgIC5wcm9wKCdjaGVja2VkJywgRGF0YS5DaGVja2JveFZhbHVlKQogICAgICAgICAgICAgICAgICAgIC5wcmV2KCdpbnB1dFt0eXBlPSJoaWRkZW4iXScpLnZhbCgoKERhdGEuQ2hlY2tib3hWYWx1ZSkgPyAxIDogMCkpOwoKICAgICAgICAgICAgICAgICRJbnB1dC5yZW1vdmUoKTsKCiAgICAgICAgICAgICAgICAkQ2xvbmUuZmluZCgnLkFkZEJ1dHRvbkN1c3RvbWVyQ29uZGl0aW9uJykuYWRkQ2xhc3MoJ0hpZGRlbicpLmVuZCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgLy8gQWRkIGEgbmV3IGxpbmUgZm9yIGVhY2ggY29uZGl0aW9uIChmb3IgaW5wdXQgZmllbGRzKS4KICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgQ29uZGl0aW9ucyAhPT0gJ3VuZGVmaW5lZCcpIHsKCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoQ29uZGl0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAoRmllbGQpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmRpdGlvbnNbRmllbGRdLmZvckVhY2goZnVuY3Rpb24gKENvbmRpdGlvbikgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkRmllbGQgPSAkKCcjJyArIEZpZWxkICsgJyB1bC5DdXN0b21lclVzZXJDb25kaXRpb25zTGlzdCBsaS5EYXRhSXRlbSB1bCBsaScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKENvbmRpdGlvbi5DbG9uZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGaWVsZCA9ICRGaWVsZC5maXJzdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZpZWxkID0gJEZpZWxkLmxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXROUy5BZGRDb25kaXRpb25MaW5lKCRGaWVsZCwgQ29uZGl0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNldCB0aGUgY29ycmVjdCBJRHMgZm9yIHRoZSBlbnRpcmUgZmllbGQuCiAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldE5TLlJlc2V0TGlzdEl0ZW1JRHMoRmllbGQpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkQ2xvbmUucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwoKICAgICAgICAgICAgaWYgKFJlc3BvbnNlLlN1Y2Nlc3MpIHsKICAgICAgICAgICAgICAgIENvcmUuVUkuSW5wdXRGaWVsZHMuQWN0aXZhdGUoJENsb25lKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKEVycm9yc09iaiAmJiBFcnJvcnNPYmpbRmllbGROYW1lXSkgewoKICAgICAgICAgICAgICAgIFRhcmdldE5TLlNob3dFcnJvcnMoRmllbGROYW1lLCBFcnJvcnNPYmpbRmllbGROYW1lXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9LCAnanNvbicpOwoKICAgICAgICAvLyBSZW1vdmUgRmllbGROYW1lIGZyb20gZHJvcGRvd24gdG8gcHJldmVudCBtdWx0aXBsZSBlbnRyaWVzLgogICAgICAgICQoJyMnICsgRHJvcGRvd25JRCkKICAgICAgICAgICAgLmZpbmQoIm9wdGlvblt2YWx1ZT0nIiArIEZpZWxkTmFtZSArICInXSIpLnJlbW92ZSgpLmVuZCgpCiAgICAgICAgICAgIC52YWwoJycpOwogICAgfTsKCiAgICAvKioKICAgICAqIEBuYW1lIFJlbW92ZUNvbmRpdGlvbgogICAgICogQG1lbWJlcm9mIFN1cnZleS5BZ2VudC5DdXN0b21lclVzZXJDb25kaXRpb25zCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRmllbGQgLSBUaGUgZmllbGQgdGhhdCBzaG91bGQgYmUgcmVtb3ZlZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFJlbW92ZXMgdGhlIGZpZWxkIGZyb20gdGhlIGNvbmRpdGlvbnMuCiAgICAgKi8KICAgIFRhcmdldE5TLlJlbW92ZUNvbmRpdGlvbiA9IGZ1bmN0aW9uICgkRmllbGQpIHsKCiAgICAgICAgdmFyIEZpZWxkTmFtZSA9ICRGaWVsZC5maW5kKCdzdHJvbmcnKS50ZXh0KCk7CiAgICAgICAgdmFyIEZpZWxkc1ZhbCA9ICQoJyNDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRzJykudmFsKCk7CiAgICAgICAgRmllbGRzVmFsID0gRmllbGRzVmFsLnJlcGxhY2UoJywnICsgRmllbGROYW1lLCAnJyk7CiAgICAgICAgJCgnI0N1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHMnKS52YWwoRmllbGRzVmFsKTsKCiAgICAgICAgLy8gQWRkIEZpZWxkTmFtZSB0byBkcm9wZG93bi4KICAgICAgICAkKCcjJyArIERyb3Bkb3duSUQpLmFwcGVuZCgKICAgICAgICAgICAgJCgnPG9wdGlvbj48L29wdGlvbj4nKS52YWwoRmllbGROYW1lKS5odG1sKEZpZWxkTmFtZSkKICAgICAgICApOwoKICAgICAgICAkRmllbGQucmVtb3ZlKCk7CiAgICB9OwoKICAgIC8qKgogICAgICogQG5hbWUgQWRkQ29uZGl0aW9uTGluZQogICAgICogQG1lbWJlcm9mIFN1cnZleS5BZ2VudC5DdXN0b21lclVzZXJDb25kaXRpb25zCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRmllbGQgLSBUaGUgZmllbGQgZm9yIHdoaWNoIGEgbGluZSBzaG91bGQgYmUgYWRkZWQKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBDb25kaXRpb24gLSBUaGUgY29uZGl0aW9uIHdoaWNoIHNob3VsZCBiZSBhZGRlZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIEFkZHMgYSBuZXcgY29uZGl0aW9uIGxpbmUgZm9yIHRoZSBzcGVjaWZpZWQgZmllbGQuCiAgICAgKi8KICAgIFRhcmdldE5TLkFkZENvbmRpdGlvbkxpbmUgPSBmdW5jdGlvbiAoJEZpZWxkLCBDb25kaXRpb24pIHsKCiAgICAgICAgdmFyICRDbG9uZTsKICAgICAgICB2YXIgQ2xvbmVGaWVsZCA9IHRydWU7CiAgICAgICAgdmFyIFRleHRWYWx1ZSA9ICcnOwogICAgICAgIHZhciBDaGVja2JveFZhbHVlID0gZmFsc2U7CgogICAgICAgIGlmICh0eXBlb2YgQ29uZGl0aW9uICE9PSAndW5kZWZpbmVkJykgewoKICAgICAgICAgICAgQ2xvbmVGaWVsZCA9IENvbmRpdGlvbi5DbG9uZTsKICAgICAgICAgICAgVGV4dFZhbHVlID0gQ29uZGl0aW9uLlJlZ0V4cFZhbHVlOwogICAgICAgICAgICBDaGVja2JveFZhbHVlID0gQ29uZGl0aW9uLk5lZ2F0aW9uOwogICAgICAgIH0KCiAgICAgICAgaWYgKENsb25lRmllbGQpIHsKICAgICAgICAgICAgJENsb25lID0gJEZpZWxkLmNsb25lKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQ2xvbmUgPSAkRmllbGQ7CiAgICAgICAgfQoKICAgICAgICAvLyBDbGVhciB0aGUgY2xvbmVkIGZpZWxkcyAob3Igc2V0IHRoZSB2YWx1ZXMgZnJvbSB0aGUgZ2l2ZW4gY29uZGl0aW9uKS4KICAgICAgICAkQ2xvbmUKICAgICAgICAgICAgLmZpbmQoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKS5wcm9wKCdjaGVja2VkJywgQ2hlY2tib3hWYWx1ZSkuZW5kKCkKICAgICAgICAgICAgLmZpbmQoJ2lucHV0W3R5cGU9ImhpZGRlbiJdJykudmFsKChDaGVja2JveFZhbHVlID8gMSA6IDApKS5lbmQoKQogICAgICAgICAgICAuZmluZCgnaW5wdXRbdHlwZT0idGV4dCJdJykudmFsKFRleHRWYWx1ZSkuc2hvdygpLmVuZCgpOwoKICAgICAgICBpZiAoQ2xvbmVGaWVsZCkgewogICAgICAgICAgICAkQ2xvbmUuYXBwZW5kVG8oJEZpZWxkLnBhcmVudCgpKTsKICAgICAgICB9CgogICAgICAgIC8vIFRvZ2dsZSBidXR0b25zIHRvIGFkZC9yZW1vdmUgdGhlIGNvbmRpdGlvbi4KICAgICAgICBpZiAoJEZpZWxkLnBhcmVudCgpLmNoaWxkcmVuKCdsaScpLmxlbmd0aCAhPT0gMSkgewoKICAgICAgICAgICAgJENsb25lCiAgICAgICAgICAgICAgICAuZmluZCgnLlJlbW92ZUJ1dHRvbkN1c3RvbWVyQ29uZGl0aW9uJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpLmVuZCgpCiAgICAgICAgICAgICAgICAuZmluZCgnLkFkZEJ1dHRvbkN1c3RvbWVyQ29uZGl0aW9uJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpLmVuZCgpOwoKICAgICAgICAgICAgLy8gSGlkZSB0aGUgYnV0dG9uIHRvIGFkZCBhIGNvbmRpdGlvbiBvbiB0aGUgcHJldmlvdXMgZWxlbWVudC4KICAgICAgICAgICAgJENsb25lLnByZXYoKS5maW5kKCcuQWRkQnV0dG9uQ3VzdG9tZXJDb25kaXRpb24nKS5hZGRDbGFzcygnSGlkZGVuJykuZW5kKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQ2xvbmUKICAgICAgICAgICAgICAgIC5maW5kKCcuUmVtb3ZlQnV0dG9uQ3VzdG9tZXJDb25kaXRpb24nKS5hZGRDbGFzcygnSGlkZGVuJykuZW5kKCkKICAgICAgICAgICAgICAgIC5maW5kKCcuQWRkQnV0dG9uQ3VzdG9tZXJDb25kaXRpb24nKS5yZW1vdmVDbGFzcygnSGlkZGVuJykuZW5kKCk7CiAgICAgICAgfQogICAgfTsKCiAgICAvKioKICAgICAqIEBuYW1lIFJlbW92ZUNvbmRpdGlvbkxpbmUKICAgICAqIEBtZW1iZXJvZiBTdXJ2ZXkuQWdlbnQuQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucwogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJEZpZWxkIC0gVGhlIGZpZWxkIGZvciB3aGljaCB0aGUgbGluZSBzaG91bGQgYmUgcmVtb3ZlZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFJlbW92ZXMgYSBuZXcgY29uZGl0aW9uIGxpbmUgZm9yIHRoZSBzcGVjaWZpZWQgZmllbGQuCiAgICAgKi8KICAgIFRhcmdldE5TLlJlbW92ZUNvbmRpdGlvbkxpbmUgPSBmdW5jdGlvbiAoJEZpZWxkKSB7CgogICAgICAgIC8vIFNob3cgdGhlIGJ1dHRvbiBmb3IgYWRkaW5nIGEgY29uZGl0aW9uIG9uIHRoZSBwcmV2aW91cyBlbGVtZW50LgogICAgICAgIGlmICghJEZpZWxkLmZpbmQoJy5BZGRCdXR0b25DdXN0b21lckNvbmRpdGlvbicpLmhhc0NsYXNzKCdIaWRkZW4nKSkgewogICAgICAgICAgICAkRmllbGQucHJldigpLmZpbmQoJy5BZGRCdXR0b25DdXN0b21lckNvbmRpdGlvbicpLnJlbW92ZUNsYXNzKCdIaWRkZW4nKTsKICAgICAgICB9CgogICAgICAgICRGaWVsZC5yZW1vdmUoKTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBSZXNldExpc3RJdGVtSURzCiAgICAgKiBAbWVtYmVyb2YgU3VydmV5LkFnZW50LkN1c3RvbWVyVXNlckNvbmRpdGlvbnMKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtTdHJpbmd9IEZpZWxkTmFtZSAtIFRoZSBmaWVsZCBmb3Igd2hpY2ggdGhlIGxpc3RpdGVtcyBzaG91bGQgYmUgcmVzZXR0ZWQKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBSZXNldHMgdGhlIElEcyBvZiB0aGUgbGlzdGl0ZW1zLgogICAgICovCiAgICBUYXJnZXROUy5SZXNldExpc3RJdGVtSURzID0gZnVuY3Rpb24gKEZpZWxkTmFtZSkgewoKICAgICAgICB2YXIgJExpc3RJdGVtcyA9ICQoJyMnICsgRmllbGROYW1lICsgJyB1bC5DdXN0b21lclVzZXJDb25kaXRpb25zTGlzdCBsaS5EYXRhSXRlbSB1bCBsaScpCgogICAgICAgIC8vIFNldCBjb3JyZWN0IElEcyBmb3IgdGhlIGxpc3RpdGVtcy4KICAgICAgICB2YXIgaSA9IDE7CiAgICAgICAgJExpc3RJdGVtcy5lYWNoKGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7CiAgICAgICAgICAgIHZhciBDaGVja2JveElEID0gRmllbGROYW1lICsgJ0NoZWNrYm94JyArIGk7CiAgICAgICAgICAgIHZhciBJbnB1dElEID0gRmllbGROYW1lICsgJ0lucHV0JyArIGk7CgogICAgICAgICAgICAkdGhpcwogICAgICAgICAgICAgICAgLmZpbmQoJ2xhYmVsJykucHJvcCgnZm9yJywgQ2hlY2tib3hJRCkuZW5kKCkKICAgICAgICAgICAgICAgIC5maW5kKCdpbnB1dFt0eXBlPSJjaGVja2JveCJdJykucHJvcCgnaWQnLCBDaGVja2JveElEKS5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2lucHV0W3R5cGU9InRleHQiXSwgc2VsZWN0JykucHJvcCgnaWQnLCBJbnB1dElEKS5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2Rpdi5Ub29sdGlwRXJyb3JNZXNzYWdlJykucHJvcCgnaWQnLCBJbnB1dElEICsgJ1NlcnZlckVycm9yJykuZW5kKCk7CgogICAgICAgICAgICBpKys7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIC8qKgogICAgICogQG5hbWUgUmVzdG9yZUNvbmRpdGlvbnMKICAgICAqIEBtZW1iZXJvZiBTdXJ2ZXkuQWdlbnQuQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucwogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge0FycmF5fSBDb25kaXRpb25zIC0gVGhlIGNvbmRpdGlvbnMgdG8gZGlzcGxheQogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFJlc3RvcmVzIHRoZSBjb25kaXRpb25zIGluIGNhc2Ugb2YgYW4gZXJyb3Igb3IgdG8gZWRpdCB0aGVtLgogICAgICovCiAgICBUYXJnZXROUy5SZXN0b3JlQ29uZGl0aW9ucyA9IGZ1bmN0aW9uIChDb25kaXRpb25zKSB7CgogICAgICAgIE9iamVjdC5rZXlzKENvbmRpdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKEZpZWxkKSB7CgogICAgICAgICAgICB2YXIgQ29uZGl0aW9uc09iaiA9IHt9OwogICAgICAgICAgICBDb25kaXRpb25zT2JqW0ZpZWxkXSA9IFtdOwoKICAgICAgICAgICAgQ29uZGl0aW9uc1tGaWVsZF0uZm9yRWFjaChmdW5jdGlvbiAoQ29uZGl0aW9uLCBpZHgpIHsKCiAgICAgICAgICAgICAgICB2YXIgQ29uZGl0aW9uT2JqID0gewogICAgICAgICAgICAgICAgICAgIENsb25lOiAoKGlkeCA9PT0gMCkgPyBmYWxzZSA6IHRydWUpLAogICAgICAgICAgICAgICAgICAgIFJlZ0V4cFZhbHVlOiBDb25kaXRpb24uUmVnRXhwVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgTmVnYXRpb246IEJvb2xlYW4ocGFyc2VJbnQoQ29uZGl0aW9uLk5lZ2F0aW9uLCAxMCkpCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIENvbmRpdGlvbnNPYmpbRmllbGRdLnB1c2goQ29uZGl0aW9uT2JqKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvLyBBZGQgYSBjb25kaXRpb24gY29udGFpbmVyIGZvciB0aGUgZmllbGQgYW5kIGluc2VydCB0aGUgZ2l2ZW4gY29uZGl0aW9ucy4KICAgICAgICAgICAgVGFyZ2V0TlMuQWRkQ29uZGl0aW9uKEZpZWxkLCBDb25kaXRpb25zT2JqKTsKICAgICAgICB9KTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBTaG93RXJyb3JzCiAgICAgKiBAbWVtYmVyb2YgU3VydmV5LkFnZW50LkN1c3RvbWVyVXNlckNvbmRpdGlvbnMKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtTdHJpbmd9IEZpZWxkIC0gVGhlIHNlbGVjdGVkIGZpZWxkIGZyb20gdGhlIGRyb3Bkb3duIHdoaWNoIGhhcyBlcnJvcnMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBFcnJvcnMgLSBDb250YWlucyB0aGUgaW5kZXggb2YgdGhlIGZpZWxkcyB3aGljaCBhcmUgaW52YWxpZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIERpc3BsYXkgZXJyb3IgbWVzc2FnZXMuCiAgICAgKi8KICAgIFRhcmdldE5TLlNob3dFcnJvcnMgPSBmdW5jdGlvbiAoRmllbGQsIEVycm9ycykgewoKICAgICAgICB2YXIgSXRlbTsKCiAgICAgICAgZm9yIChJdGVtIGluIEVycm9ycykgewoKICAgICAgICAgICAgaWYoIUVycm9ycy5oYXNPd25Qcm9wZXJ0eShJdGVtKSkgY29udGludWU7CgogICAgICAgICAgICAkKCcjJyArIEZpZWxkICsgJyB1bC5DdXN0b21lclVzZXJDb25kaXRpb25zTGlzdCBsaS5EYXRhSXRlbSB1bCBsaScpLmVxKEl0ZW0pCiAgICAgICAgICAgICAgICAuZmluZCgnaW5wdXRbdHlwZT0idGV4dCJdLCBzZWxlY3QnKS5hZGRDbGFzcygnU2VydmVyRXJyb3InKTsKICAgICAgICB9CgogICAgICAgIENvcmUuRm9ybS5WYWxpZGF0ZS5Jbml0KCk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oU3VydmV5LkFnZW50LkN1c3RvbWVyVXNlckNvbmRpdGlvbnMgfHwge30pKTsK
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTggT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIFN1cnZleSA9IFN1cnZleSB8fCB7fTsKU3VydmV5LkFnZW50ID0gU3VydmV5LkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgU3VydmV5RWRpdFF1ZXN0aW9ucy4KICovClN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewogICAgLyoqCiAgICAgKiBAbmFtZSBJbml0CiAgICAgKiBAbWVtYmVyb2YgU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIEluaXQgZWRpdCBzdXJ2ZXkgc2NyZWVuLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICQoJy5RdWVzdGlvbkRlbGV0ZScpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewoKICAgICAgICAgICAgaWYod2luZG93LmNvbmZpcm0oQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhIikpKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJykgKyAkKHRoaXMpLmRhdGEoJ3F1ZXJ5LXN0cmluZycpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICBFdmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BbnN3ZXJEZWxldGUnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKCiAgICAgICAgICAgIGlmKHdpbmRvdy5jb25maXJtKENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyIpKSkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpICsgJCh0aGlzKS5kYXRhKCdxdWVyeS1zdHJpbmcnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBFdmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucyB8fCB7fSkpOwo=
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTggT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIFN1cnZleSA9IFN1cnZleSB8fCB7fTsKU3VydmV5LkFnZW50ID0gU3VydmV5LkFnZW50IHx8IHt9OwovKioKICogQG5hbWVzcGFjZQogKiBAZXhwb3J0cyBUYXJnZXROUyBhcyBTdXJ2ZXkuQWdlbnQuU3VydmV5T3ZlcnZpZXcKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgU3VydmV5T3ZlcnZpZXcuCiAqLwpTdXJ2ZXkuQWdlbnQuU3VydmV5T3ZlcnZpZXcgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBTdXJ2ZXkuQWdlbnQuU3VydmV5T3ZlcnZpZXcKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIEluaXQgZWRpdCBzdXJ2ZXkgc2NyZWVuLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICQoJyNTdXJ2ZXlTZWFyY2gnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZygkKCcjU3VydmV5T3ZlcnZpZXdTZXR0aW5nc0RpYWxvZ0NvbnRhaW5lcicpLAogICAgICAgICAgICAgICAgQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIlNldHRpbmdzIiksICcyMCUnLCAnQ2VudGVyJywgdHJ1ZSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsOiBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgiU3VibWl0IiksCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGU6ICdTdWJtaXQnLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzczogJ1ByaW1hcnknCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICApOwoKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gYmluZCB0aGUgQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyCiAgICAgICAgJCgnI1Nob3dDb250ZXh0U2V0dGluZ3NEaWFsb2cnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICAgICAgQ29yZS5VSS5EaWFsb2cuU2hvd0NvbnRlbnREaWFsb2coJCgnI0NvbnRleHRTZXR0aW5nc0RpYWxvZ0NvbnRhaW5lcicpLCBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgiU2V0dGluZ3MiKSwgJzIwJScsICdDZW50ZXInLCB0cnVlLAogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWw6IENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJTdWJtaXQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZTogJ1N1Ym1pdCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzOiAnUHJpbWFyeScKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgIENvcmUuVUkuQWN0aW9uUm93LkluaXQoKTsKCiAgICAgICAgJCgnLk1hc3RlckFjdGlvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICB2YXIgJE1hc3RlckFjdGlvbkxpbmsgPSAkKHRoaXMpLmZpbmQoJy5NYXN0ZXJBY3Rpb25MaW5rJyk7CiAgICAgICAgICAgIC8vIG9ubHkgYWN0IGlmIHRoZSBsaW5rIHdhcyBub3QgY2xpY2tlZCBkaXJlY3RseQogICAgICAgICAgICBpZiAoRXZlbnQudGFyZ2V0ICE9PSAkTWFzdGVyQWN0aW9uTGluay5nZXQoMCkpIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICRNYXN0ZXJBY3Rpb25MaW5rLmF0dHIoJ2hyZWYnKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAvLyBiaW5kIHRoZSBDb250ZXh0U2V0dGluZ3NEaWFsb2dDb250YWluZXIKICAgICAgICAkKCcjU3VydmV5U2VhcmNoJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgICAgIENvcmUuVUkuRGlhbG9nLlNob3dDb250ZW50RGlhbG9nKCQoJyNTdXJ2ZXlPdmVydmlld1NldHRpbmdzRGlhbG9nQ29udGFpbmVyJyksCiAgICAgICAgICAgICAgICBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgiU2V0dGluZ3MiKSwgJzIwJScsICdDZW50ZXInLCB0cnVlLAogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWw6IENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJTdWJtaXQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZTogJ1N1Ym1pdCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzOiAnUHJpbWFyeScKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oU3VydmV5LkFnZW50LlN1cnZleU92ZXJ2aWV3IHx8IHt9KSk7Cg==
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTggT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIFN1cnZleSA9IFN1cnZleSB8fCB7fTsKU3VydmV5LkFnZW50ID0gU3VydmV5LkFnZW50IHx8IHt9OwovKioKICogQG5hbWVzcGFjZQogKiBAZXhwb3J0cyBUYXJnZXROUyBhcyBTdXJ2ZXkuQWdlbnQuU3VydmV5U3RhdHMKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgU3VydmV5U3RhdHMuCiAqLwpTdXJ2ZXkuQWdlbnQuU3VydmV5U3RhdHMgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBTdXJ2ZXkuQWdlbnQuU3VydmV5U3RhdHMKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIEluaXQgZWRpdCBzdXJ2ZXkgc2NyZWVuLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICQoJ2EuTGlua1pvb21WaWV3Jykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgcGFyZW50LkNvcmUuVUkuUG9wdXAuRmlyZVBvcHVwRXZlbnQoJ1VSTCcsIHsgVVJMOiAkKHRoaXMpLmF0dHIoJ2hyZWYnKX0pOwogICAgICAgICAgICBwYXJlbnQuQ29yZS5VSS5Qb3B1cC5DbG9zZSgpOwogICAgICAgIH0pOwoKICAgICAgICAkKCcjU2VsZWN0QWxsUmVxdWVzdHMnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBTdGF0dXMgPSAkKHRoaXMpLnByb3AoJ2NoZWNrZWQnKTsKICAgICAgICAgICAgJCgnOmNoZWNrYm94JykucHJvcCgnY2hlY2tlZCcsIFN0YXR1cyk7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oU3VydmV5LkFnZW50LlN1cnZleVN0YXRzIHx8IHt9KSk7Cg==
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTggT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIFN1cnZleSA9IFN1cnZleSB8fCB7fTsKU3VydmV5LkFnZW50ID0gU3VydmV5LkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgU3VydmV5LkFnZW50LlN1cnZleVpvb20KICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgU3VydmV5Wm9vbS4KICovClN1cnZleS5BZ2VudC5TdXJ2ZXlab29tID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgJCgndWwuQWN0aW9ucyBhLkFzUG9wdXAnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuT3BlblBvcHVwICgkKHRoaXMpLmF0dHIoJ2hyZWYnKSwgJ0FjdGlvbicpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgICQoJyNOZXdTdGF0dXMnKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJ2Zvcm0nKS5zdWJtaXQoKTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBuYW1lIElmcmFtZUF1dG9IZWlnaHQKICAgICAqIEBtZW1iZXJvZiBTdXJ2ZXkuQWdlbnQuU3VydmV5Wm9vbQogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJElmcmFtZSAtIFRoZSBpZnJhbWUgd2hpY2ggc2hvdWxkIGJlIGF1dG8taGVpZ2h0ZWQKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBTZXQgaWZyYW1lIGhlaWdodCBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIHJlYWwgY29udGVudCBoZWlnaHQgYW5kIGRlZmF1bHQgY29uZmlnIHNldHRpbmcuCiAgICAgKi8KICAgIFRhcmdldE5TLklmcmFtZUF1dG9IZWlnaHQgPSBmdW5jdGlvbiAoJElmcmFtZSkgewogICAgICAgIHZhciBOZXdIZWlnaHQ7CgogICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkSWZyYW1lKSkgewogICAgICAgICAgICBOZXdIZWlnaHQgPSAkSWZyYW1lLmNvbnRlbnRzKCkuaGVpZ2h0KCk7CiAgICAgICAgICAgIGlmICghTmV3SGVpZ2h0IHx8IGlzTmFOKE5ld0hlaWdodCkpIHsKICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IENvcmUuQ29uZmlnLkdldCgnU3VydmV5LkhUTUxSaWNoVGV4dEhlaWdodERlZmF1bHQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChOZXdIZWlnaHQgPiBDb3JlLkNvbmZpZy5HZXQoJ1N1cnZleS5IVE1MUmljaFRleHRIZWlnaHRNYXgnKSkgewogICAgICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IENvcmUuQ29uZmlnLkdldCgnU3VydmV5LkhUTUxSaWNoVGV4dEhlaWdodE1heCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRJZnJhbWUuaGVpZ2h0KE5ld0hlaWdodCArICdweCcpOwogICAgICAgIH0KICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShTdXJ2ZXkuQWdlbnQuU3VydmV5Wm9vbSB8fCB7fSkpOwo=
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTggT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIERlZmF1bHQgU2V0dGluZ3MKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKLyoqCiAqIEBzdWJzZWN0aW9uIFN1cnZleSBHcmFwaAogKi8KCmZpZWxkc2V0LlN1cnZleUdyYXBocyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KCmZpZWxkc2V0LlN1cnZleUdyYXBocyAuUXVlc3Rpb24gewogICAgZGlzcGxheTogYmxvY2s7CiAgICBsaW5lLWhlaWdodDogMS41ZW07CiAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgIHdpZHRoOiAyNSU7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KCmZpZWxkc2V0LlN1cnZleUdyYXBocyAuQW5zd2VyIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgbGluZS1oZWlnaHQ6IDEuM2VtOwogICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjRkFGQUZBOwogICAgd2lkdGg6IDI1JTsKICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgIGNsZWFyOiBsZWZ0Owp9CgpkaXYuU3VydmV5R3JhcGggewogICAgZmxvYXQ6IGxlZnQ7CiAgICB3aWR0aDogNTAlOwogICAgaGVpZ2h0OiAyMnB4OwogICAgcGFkZGluZy1sZWZ0OiA1cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogM3B4Owp9CgpkaXYuU3VydmV5R3JhcGhDb250YWluZXIgewogICAgd2lkdGg6IDk1JTsKICAgIGhlaWdodDogMjJweDsKfQoKZGl2LlN1cnZleUdyYXBoQmFyIHsKICAgIGhlaWdodDogMjJweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNGMkIxM0U7Cn0KCnAuU3VydmV5R3JhcGhMZXllbmQgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBsaW5lLWhlaWdodDogMS4zZW07CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0ZBRkFGQTsKICAgIHdpZHRoOiAxMCU7CiAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICBoZWlnaHQ6IDIycHg7Cn0KCi5TdWJMYWJlbCB7CiAgICB3aWR0aDogMzUlOwogICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICBmbG9hdDogbGVmdDsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouU3ViRmllbGQgewogICAgbWFyZ2luLWxlZnQ6IDM1JTsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgphLkFycm93VXAsCmEuQXJyb3dVcERpc2FibGVkLAphLkFycm93RG93biwKYS5BcnJvd0Rvd25EaXNhYmxlZCB7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBwYWRkaW5nOiAxcHg7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgbWFyZ2luLWJvdHRvbTogMXB4OwogICAgYm9yZGVyLXN0eWxlOiBub25lOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKYS5BcnJvd1VwLAphLkFycm93RG93biB7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCmEuQXJyb3dVcERpc2FibGVkLAphLkFycm93RG93bkRpc2FibGVkIHsKICAgIGN1cnNvcjogZGVmYXVsdDsKfQoKYS5BcnJvd1VwOmFjdGl2ZSwKYS5BcnJvd0Rvd246YWN0aXZlIHsKICAgIG1hcmdpbi10b3A6IDFweDsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCmEuQXJyb3dVcERpc2FibGVkOmFjdGl2ZSwKYS5BcnJvd0Rvd25EaXNhYmxlZDphY3RpdmUgewogICAgbWFyZ2luLXRvcDogMHB4OwogICAgbWFyZ2luLWJvdHRvbTogMXB4Owp9CgphLkFycm93VXAgaSwKYS5BcnJvd0Rvd24gaSB7CiAgICBjb2xvcjogIzMzOTlGRjsKfQoKYS5BcnJvd1VwOmhvdmVyIGksCmEuQXJyb3dEb3duOmhvdmVyIGkgewogICAgY29sb3I6ICMzMzk5MDAgIWltcG9ydGFudDsKfQoKYS5BcnJvd1VwRGlzYWJsZWQsCmEuQXJyb3dEb3duRGlzYWJsZWQgewogICAgZGlzcGxheTogaW5saW5lICFJbXBvcnRhbnQ7Cn0KCmEuQXJyb3dVcERpc2FibGVkIGksCmEuQXJyb3dEb3duRGlzYWJsZWQgaSB7CiAgICBjb2xvcjogIzkwOTA5MDsKICAgIGN1cnNvcjogZGVmYXVsdDsKfQoKYS5TZWVEZXRhaWxzIHsKICAgIGhlaWdodDogMTVweDsKICAgIHBhZGRpbmc6IDFweDsKICAgIG1hcmdpbi10b3A6IC02cHg7CiAgICBib3JkZXItc3R5bGU6IG5vbmU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgphLlNlZURldGFpbHMgc3BhbiB7CiAgICBiYWNrZ3JvdW5kOiBub25lOwogICAgZGlzcGxheTogbm9uZTsKfQoKYS5TZWVEZXRhaWxzIGkgewogICAgY29sb3I6ICNGRjk5MjI7Cn0KCmxhYmVsLlRleHRhcmVhLApkaXYuVGV4dGFyZWEgewogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIG1hcmdpbi10b3A6IDEwcHg7Cn0KCi5GaWVsZCB1bCBsaXsKICAgIG1hcmdpbi1sZWZ0OiAzMHB4OwogICAgbGlzdC1zdHlsZTogZGlzYzsKfQoKLkZpZWxkIG9sIGxpewogICAgbWFyZ2luLWxlZnQ6IDMwcHg7CiAgICBsaXN0LXN0eWxlOiBkZWNpbWFsOwp9CgouRmllbGQgdWwuQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0xpc3QgbGkgewogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIG1hcmdpbi1ib3R0b206IDJweDsKfQoKI1N1cnZleUVtcHR5TWVzc2FnZVNtYWxsIHsKICAgIGJvcmRlci1jb2xvcjogI2RkZDsKICAgIGJvcmRlci1pbWFnZTogbm9uZTsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItd2lkdGg6IDFweDsKICAgIHBhZGRpbmc6IDdweDsKICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwp9CgoKLlRhYmxlU21hbGwgdGJvZHkgdHIuSW52YWxpZCB7CiAgICBjb2xvcjogI0NDQzsKfQoKPDw8PDw8PCBIRUFECi5OYXZpZ2F0aW9uIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGJvdHRvbTogMDsKICAgIHJpZ2h0OiAwOwogICAgcGFkZGluZy10b3A6IDNweDsKICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7Cn0KCi5TdXJ2ZXlBcnJvdyB7CiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgZWFzZTsKICAgIGNvbG9yOiAjRkY5OTIyOwp9CgouU3VydmV5QXJyb3dMZWZ0IHsKICAgIGZsb2F0OiBsZWZ0Owp9CgouU3VydmV5QXJyb3dSaWdodCB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5TdXJ2ZXlBcnJvdyBpewogICAgZm9udC1zaXplOiAyMHB4OwogICAgbWFyZ2luOiAwIDVweDsKfQoKLlN1cnZleUFycm93OmhvdmVyewogICAgY29sb3I6ICNGRjg2MDA7Cn0KCi5EaXNhYmxlZCB7CiAgICBkaXNwbGF5OiBub25lOwp9Ci5XaWRnZXRTcGFjaW5nUmlnaHQgewogICAgbWFyZ2luLXJpZ2h0OiAxM3B4Owp9Cgp9Cj09PT09PT0KLlJlbW92ZUJ1dHRvbkN1c3RvbWVyRmllbGQsCi5BZGRCdXR0b25DdXN0b21lckNvbmRpdGlvbiwKLlJlbW92ZUJ1dHRvbkN1c3RvbWVyQ29uZGl0aW9uIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKLlJlbW92ZUJ1dHRvbkN1c3RvbWVyQ29uZGl0aW9uIHsKICAgIG1hcmdpbi1yaWdodDogMnB4Owp9Cgp9Cj4+Pj4+Pj4gb3JpZ2luL2ZlYXR1cmUtc3VydmV5aW1wcm92ZW1lbnRzLW1lcmdlZC1mbGktbWFzdGVyCg==
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTggT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU3VydmV5IC0gU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIEN1c3RvbWVyCiAqLwoKQG1lZGlhIHNjcmVlbixwcm9qZWN0aW9uLHR2LGhhbmRoZWxkIHsKCmRpdi5TdXJ2ZXlCbG9jayB7CiAgICBtYXJnaW46IDhweCAwIDEzcHg7CiAgICBwYWRkaW5nLWJvdHRvbTogNXB4OwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI0ZGRkZGRiAwJSwgI0Y4RjlGOSAxMDAlKSByZXBlYXQgc2Nyb2xsIDAgMCB0cmFuc3BhcmVudDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNFQUVFRUU7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICB3aWR0aDogNzM4cHg7Cn0KCi5TdXJ2ZXlCbG9jayBkaXYuQ29udGVudCB7CiAgICBib3JkZXI6IDBweDsKfQoKLlN1cnZleUJsb2NrSGVhZGVyIHsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRThFOUU5OwogICAgYm9yZGVyLXJhZGl1czogNXB4IDVweCAwIDA7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0ZGRkZGRjsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogNXB4IDhweCA0cHg7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjRkZGRkZGOwp9CgpmaWVsZHNldC5TdXJ2ZXkgewogICAgd2lkdGg6IDczOHB4Owp9CgpkaXYuQWN0aW9uUm93IHsKICAgIHdpZHRoOiA3MjBweDsKfQoKZGl2LkludHJvIC5Db250ZW50ewogICAgYm9yZGVyLXRvcDogMDsKfQoKZGl2LlF1ZXN0aW9uewogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNDOUM5Qzk7CiAgICBjb2xvcjogIzkyOTI5MjsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIG1hcmdpbi1sZWZ0OiA0MHB4OwogICAgbWFyZ2luLXRvcDogMTVweDsKICAgIHdpZHRoOiA1MjBweDsKICAgIHBhZGRpbmc6IDRweCA5cHggM3B4IDlweDsKICAgIHRleHQtc2hhZG93OiAwIDFweCAwICNFQ0VFRUU7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgpkaXYuTWFuZGF0b3J5IHsKICAgIGNvbG9yOiBibGFjazsKfQoKZGl2LkVycm9yIHsKICAgIGNvbG9yOiAjZmY1MDVlICFpbXBvcnRhbnQ7Cn0KCmRpdi5Ub29sdGlwRXJyb3J7CiAgICBtYXJnaW46IC0xMHB4IDAgMHB4IDc1cHg7Cn0KZGl2LlRvb2x0aXBFcnJvciBkaXY6Zmlyc3QtY2hpbGQgewogICAgYm9yZGVyLXRvcDogMHB4ICFpbXBvcnRhbnQ7Cn0KZGl2LlRvbmd1ZSB7CiAgICBib3JkZXI6IDBweDsKICAgIHBhZGRpbmc6IDBweCAhaW1wb3J0YW50Owp9CgpsYWJlbC5BbnN3ZXIgewogICAgYmFja2dyb3VuZDpub25lOwogICAgYm9yZGVyOiBub25lOwogICAgd2lkdGg6IDM2NXB4OwogICAgbWFyZ2luLWxlZnQ6IDhweDsKICAgIG1hcmdpbi10b3A6IDNweDsKICAgIHRleHQtYWxpZ246bGVmdDsKfQoKbGFiZWwuQW5zd2VyLk5QUyB7CiAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50Owp9CgpmaWVsZHNldCBpbnB1dCwKZGl2LkFuc3dlciB7CiAgICBmbG9hdDpsZWZ0Owp9CgpmaWVsZHNldCBpbnB1dCwKZmllbGRzZXQgaW5wdXQuTlBTLApmaWVsZHNldCB0ZXh0YXJlYSwKZGl2LkFuc3dlciB7CiAgICBtYXJnaW46IDdweCAwIDdweCA3NXB4Owp9CgpmaWVsZHNldCBpbnB1dC5OUFM6bm90KDpmaXJzdC1vZi10eXBlKSB7CiAgICBtYXJnaW46IDdweCAwIDdweCA3cHg7Cn0KCi5SaWNoVGV4dEFuc3dlciB7CiAgICBtYXJnaW46IDdweCAwIDdweCA3NXB4Owp9CgpkaXYuQW5zd2VyIHsKICAgIHBhZGRpbmc6MHB4Owp9CgouU3VydmV5QnV0dG9uIHsKICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjVweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDo1cHg7CiAgICAtbW96LWJveC1zaGFkb3c6MCAwIDNweCAjRjZGOUY5OwogICAgYm9yZGVyLWNvbG9yOi1tb3otdXNlLXRleHQtY29sb3IgI0Q2RDZENiAjRDZENkQ2OwogICAgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjRDZENkQ2OwogICAgYm9yZGVyLXN0eWxlOm5vbmUgc29saWQgc29saWQ7CiAgICBib3JkZXItd2lkdGg6bWVkaXVtIDFweCAxcHg7CiAgICBib3R0b206LTIycHg7CiAgICBjb2xvcjojOTk5OTk5OwogICAgZGlzcGxheTpub25lOwogICAgaGVpZ2h0OjEwcHg7CiAgICBtYXJnaW46MCAxM3B4OwogICAgcGFkZGluZzo0cHggOHB4IDdweCAyNHB4OwogICAgcG9zaXRpb246YWJzb2x1dGU7Cn0KfQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE4IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIHZhcjo6cGFja2FnZXNldHVwOjpTdXJ2ZXk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpPdXRwdXQ6OlRlbXBsYXRlOjpQcm92aWRlcjsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnLAopOwoKPWhlYWQxIE5BTUUKCnZhcjo6cGFja2FnZXNldHVwOjpTdXJ2ZXkgLSBjb2RlIHRvIGV4ZWN1dGUgZHVyaW5nIHBhY2thZ2UgaW5zdGFsbGF0aW9uCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBmdW5jdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRDb2RlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgndmFyOjpwYWNrYWdlc2V0dXA6OlN1cnZleScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIEZvcmNlIGEgcmVsb2FkIG9mIFpaWkF1dG8ucG0gYW5kIFpaWkFBdXRvLnBtIHRvIGdldCB0aGUgZnJlc2ggY29uZmlndXJhdGlvbiB2YWx1ZXMuCiAgICBmb3IgbXkgJE1vZHVsZSAoIHNvcnQga2V5cyAlSU5DICkgewogICAgICAgIGlmICggJE1vZHVsZSA9fiBtL1paWkFBP3V0b1wucG0kLyApIHsKICAgICAgICAgICAgZGVsZXRlICRJTkN7JE1vZHVsZX07CiAgICAgICAgfQogICAgfQoKICAgICMgYWx3YXlzIGRpc2NhcmQgdGhlIGNvbmZpZyBvYmplY3QgYmVmb3JlIHBhY2thZ2UgY29kZSBpcyBleGVjdXRlZCwKICAgICMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGNvbmZpZyBvYmplY3Qgd2lsbCBiZSBjcmVhdGVkIG5ld2x5LCBzbyB0aGF0IGl0CiAgICAjIHdpbGwgdXNlIHRoZSByZWNlbnRseSB3cml0dGVuIG5ldyBjb25maWcgZnJvbSB0aGUgcGFja2FnZQogICAgJEtlcm5lbDo6T00tPk9iamVjdHNEaXNjYXJkKAogICAgICAgIE9iamVjdHMgPT4gWydLZXJuZWw6OkNvbmZpZyddLAogICAgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBDb2RlSW5zdGFsbCgpCgpydW4gdGhlIGNvZGUgaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlSW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVJbnN0YWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlUmVpbnN0YWxsKCkKCnJ1biB0aGUgY29kZSByZWluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVJlaW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVSZWluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVVcGdyYWRlKCkKCnJ1biB0aGUgY29kZSB1cGdyYWRlIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlKCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVVbmluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIHVuaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVW5pbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZVVuaW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzJfMF85MigpCgpUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgaWYgdGhlIGluc3RhbGxlZCBtb2R1bGUgdmVyc2lvbiBpcyBzbWFsbGVyIHRoYW4gMi4wLjkyLgoKbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVXBncmFkZUZyb21Mb3dlclRoYW5fMl8wXzkyKCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzJfMF85MiB7ICAgICMjIG5vIGNyaXRpYwogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgU0VMRUNUIGFsbCBmdW5jdGlvbmFsaXR5IHZhbHVlcwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBzZW5kX3RpbWUKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcmVxdWVzdCcsCiAgICApOwoKICAgIG15IEBMaXN0OwogICAgUk9XOgogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgbmV4dCBST1cgaWYgISRSb3dbMV07CgogICAgICAgIHB1c2ggQExpc3QsIFxAUm93OwogICAgfQoKICAgICMgc2F2ZSBlbnRyaWVzIGluIG5ldyB0YWJsZQogICAgZm9yIG15ICRFbnRyeSAoQExpc3QpIHsKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICBVUERBVEUgc3VydmV5X3JlcXVlc3QKICAgICAgICAgICAgICAgIFNFVCBjcmVhdGVfdGltZSA9ID8KICAgICAgICAgICAgICAgIFdIRVJFICBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRFbnRyeS0+WzFdLCBcJEVudHJ5LT5bMF0gXSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzJfMV81KCkKClRoaXMgZnVuY3Rpb24gaXMgb25seSBleGVjdXRlZCBpZiB0aGUgaW5zdGFsbGVkIG1vZHVsZSB2ZXJzaW9uIGlzIHNtYWxsZXIgdGhhbiAyLjEuNS4KCm15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzJfMV81KCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzJfMV81IHsgICAgIyMgbm8gY3JpdGljCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2V0IGFsbCBzdXJ2ZXlfcXVlc3Rpb24gcmVjb3JkcwogICAgIyB0aGF0IGRvbid0IGhhdmUgYW5zd2VyX3JlcXVpcmVkIHNldCB0byBzb21ldGhpbmcKICAgICMgdG8gMAogICAgJFNlbGYtPl9QcmVmaWxsX0Fuc3dlclJlcXVpcmVkRnJvbVN1cnZleVF1ZXN0aW9uXzJfMV81KCk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVXBncmFkZUZyb21Mb3dlclRoYW5fNF8wXzEoKQoKVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGV4ZWN1dGVkIGlmIHRoZSBpbnN0YWxsZWQgbW9kdWxlIHZlcnNpb24gaXMgc21hbGxlciB0aGFuIDQuMC4xLgoKbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVXBncmFkZUZyb21Mb3dlclRoYW5fNF8wXzEoKTsKCj1jdXQKCnN1YiBDb2RlVXBncmFkZUZyb21Mb3dlclRoYW5fNF8wXzEgeyAgICAjIyBubyBjcml0aWMKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBtaWdyYXRlIHRoZSBEVEwgQ29udGVudCBpbiB0aGUgU3lzQ29uZmlnCiAgICAkU2VsZi0+X01pZ3JhdGVEVExJblN5c0NvbmZpZygpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF85MSgpCgpUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgaWYgdGhlIGluc3RhbGxlZCBtb2R1bGUgdmVyc2lvbiBpcyBzbWFsbGVyIHRoYW4gNC4wLjkxLgoKbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVXBncmFkZUZyb21Mb3dlclRoYW5fNF8wXzkxKCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF85MSB7ICAgICMjIG5vIGNyaXRpYwogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoYW5nZSBjb25maWd1cmF0aW9ucyB0byBtYXRjaCB0aGUgbmV3IG1vZHVsZSBsb2NhdGlvbi4KICAgICRTZWxmLT5fTWlncmF0ZUNvbmZpZ3MoKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9QcmVmaWxsX0Fuc3dlclJlcXVpcmVkRnJvbVN1cnZleVF1ZXN0aW9uXzJfMV81KCkKCkluc2VydHMgMCBpbnRvIGFsbCBhbnN3ZXJfcmVxdWlyZWQgcmVjb3JkcyBvZiB0YWJsZSBzdXZleV9xdWVzdGlvbgp3aGVyZSB0aGVyZSBpcyBubyBlbnRyeSBwcmVzZW50LgoKICAgIG15ICRTdWNjZXNzID0gJFBhY2thZ2VTZXR1cC0+X1ByZWZpbGxfQW5zd2VyUmVxdWlyZWRGcm9tU3VydmV5UXVlc3Rpb25fMl8xXzUoKTsKCj1jdXQKCnN1YiBfUHJlZmlsbF9BbnN3ZXJSZXF1aXJlZEZyb21TdXJ2ZXlRdWVzdGlvbl8yXzFfNSB7ICAgICMjIG5vIGNyaXRpYwogICAgbXkgKCRTZWxmKSA9IEBfOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBhbnN3ZXJfcmVxdWlyZWQKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcXVlc3Rpb24nLAogICAgKTsKICAgIG15IEBJZHNUb1VwZGF0ZTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAjIGlmIHdlIGhhZCBhbiBpZAogICAgICAgICMgYnV0IG5vIGFuc3dlcl9yZXF1aXJlZCBvciBhbnN3ZXJfcmVxdWlyZWQgaXNuJ3QgMCBvciAxCiAgICAgICAgIyBjb2xsZWN0IHRoZSBJRCBpbiBASWRzVG9VcGRhdGUKICAgICAgICBpZiAoCiAgICAgICAgICAgIGRlZmluZWQgJFJvd1swXQogICAgICAgICAgICAmJiBsZW5ndGggJFJvd1swXQogICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAhZGVmaW5lZCAkUm93WzFdCiAgICAgICAgICAgICAgICB8fCAoICRSb3dbMV0gbmUgJzAnICYmICRSb3dbMV0gbmUgJzEnICkKICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBwdXNoIEBJZHNUb1VwZGF0ZSwgJFJvd1swXTsKICAgICAgICB9CiAgICB9CgogICAgZm9yIG15ICRRdWVzdGlvbklEIChASWRzVG9VcGRhdGUpIHsKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICBVUERBVEUgc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgICAgICBTRVQgYW5zd2VyX3JlcXVpcmVkID0gMAogICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgICAgICBcJFF1ZXN0aW9uSUQsCiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX01pZ3JhdGVEVExJblN5c0NvbmZpZyB7CgogICAgIyBjcmVhdGUgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKICAgIG15ICRQcm92aWRlck9iamVjdCAgPSBLZXJuZWw6Ok91dHB1dDo6VGVtcGxhdGU6OlByb3ZpZGVyLT5uZXcoKTsKCiAgICAjIGdldCBzZXR0aW5nJ3MgY29udGVudAogICAgbXkgJFNldHRpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUnKTsKICAgIHJldHVybiBpZiAhJFNldHRpbmc7CgogICAgTUVOVU1PRFVMRToKICAgIGZvciBteSAkTWVudU1vZHVsZSAoIHNvcnQga2V5cyAleyRTZXR0aW5nfSApIHsKCiAgICAgICAgbXkgJFNldHRpbmdDb250ZW50ID0gJFNldHRpbmctPnskTWVudU1vZHVsZX0tPntMaW5rfTsKCiAgICAgICAgIyBkbyBub3RoaW5nIG5vIHZhbHVlIGZvciBtaWdyYXRpbmcKICAgICAgICBuZXh0IE1FTlVNT0RVTEUgaWYgISRTZXR0aW5nQ29udGVudDsKCiAgICAgICAgbXkgJFRUQ29udGVudDsKICAgICAgICBldmFsIHsKICAgICAgICAgICAgJFRUQ29udGVudCA9ICRQcm92aWRlck9iamVjdC0+TWlncmF0ZURUTHRvVFQoIENvbnRlbnQgPT4gJFNldHRpbmdDb250ZW50ICk7CiAgICAgICAgfTsKICAgICAgICBpZiAoJEApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIiRNZW51TW9kdWxlLT5MaW5rIDogJEAhIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICBuZXh0IE1FTlVNT0RVTEUgaWYgJFNldHRpbmdDb250ZW50IGVxICRUVENvbnRlbnQ7CgogICAgICAgICAgICAkU2V0dGluZy0+eyRNZW51TW9kdWxlfS0+e0xpbmt9ID0gJFRUQ29udGVudDsKICAgICAgICB9CgogICAgICAgIG15ICRTdWNjZXNzID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ3NTZXQoCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgICAgIENvbW1lbnRzID0+ICdEZXBsb3kgc3VydmV5IG1lbnUgbW9kdWxlLicsCiAgICAgICAgICAgIFNldHRpbmdzID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnU3VydmV5OjpGcm9udGVuZDo6TWVudU1vZHVsZScsCiAgICAgICAgICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gJFNldHRpbmcsCiAgICAgICAgICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKICAgIH0KICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX01pZ3JhdGVDb25maWdzKCkKCmNoYW5nZSBjb25maWd1cmF0aW9ucyB0byBtYXRjaCB0aGUgbmV3IG1vZHVsZSBsb2NhdGlvbi4KCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9NaWdyYXRlQ29uZmlncygpOwoKPWN1dAoKc3ViIF9NaWdyYXRlQ29uZmlncyB7CgogICAgIyBjcmVhdGUgbmVlZGVkIG9iamVjdHMKICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIG1pZ3JhdGUgc3VydmV5IG1lbnUgbW9kdWxlIHN5c2NvbmZpZwogICAgIyBnZXQgc2V0dGluZyBjb250ZW50IGZvciBzdXJ2ZXkgc3lzY29uZmlnCiAgICBteSAkU2V0dGluZyA9ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpGcm9udGVuZDo6TWVudU1vZHVsZScpOwoKICAgIG15IEBTZXR0aW5nc0RlcGxveTsKCiAgICBDT05GSUdJVEVNOgogICAgZm9yIG15ICRNZW51TW9kdWxlICggc29ydCBrZXlzICV7JFNldHRpbmd9ICkgewoKICAgICAgICAjIHVwZGF0ZSBtb2R1bGUgbG9jYXRpb24KICAgICAgICBteSAkTW9kdWxlID0gJFNldHRpbmctPnskTWVudU1vZHVsZX0tPnsnTW9kdWxlJ307CiAgICAgICAgbmV4dCBDT05GSUdJVEVNIGlmICEkTW9kdWxlOwoKICAgICAgICBpZiAoICRNb2R1bGUgIX4gbXtLZXJuZWw6Ok91dHB1dDo6SFRNTDo6U3VydmV5TWVudShcdyspfSApIHsKICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNOwogICAgICAgIH0KCiAgICAgICAgJFNldHRpbmctPnskTWVudU1vZHVsZX0tPntNb2R1bGV9ID0gIktlcm5lbDo6T3V0cHV0OjpIVE1MOjpTdXJ2ZXlNZW51OjokMSI7CgogICAgICAgICMgc2V0IG5ldyBzZXR0aW5nCiAgICAgICAgcHVzaCBAU2V0dGluZ3NEZXBsb3ksIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1N1cnZleTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMnIC4gJE1lbnVNb2R1bGUsCiAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+ICRTZXR0aW5nLT57JE1lbnVNb2R1bGV9LAogICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgIH07CiAgICB9CgogICAgIyBtaWdyYXRlIHN1cnZleSBvdmVydmlldyBzbWFsbCBTeXNDb25maWcKICAgICMgZ2V0IHNldHRpbmcgY29udGVudCBmb3Igc3VydmV5IFN5c0NvbmZpZwogICAgJFNldHRpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3Jyk7CgogICAgaWYgKCAkU2V0dGluZy0+eydTbWFsbCd9LT57TW9kdWxlfSApIHsKCiAgICAgICAgIyB1cGRhdGUgbW9kdWxlIGxvY2F0aW9uCiAgICAgICAgJFNldHRpbmctPnsnU21hbGwnfS0+e01vZHVsZX0gPSAiS2VybmVsOjpPdXRwdXQ6OkhUTUw6OlN1cnZleU92ZXJ2aWV3OjpTbWFsbCI7CgogICAgICAgICMgc2V0IG5ldyBzZXR0aW5nCiAgICAgICAgcHVzaCBAU2V0dGluZ3NEZXBsb3ksIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1N1cnZleTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IyMjU21hbGwnLAogICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiAkU2V0dGluZy0+eydTbWFsbCd9LAogICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgIH07CiAgICB9CgogICAgIyBtaWdyYXRlIHN1cnZleSBwcmVmZXJlbmNlIFN5c0NvbmZpZwogICAgIyBnZXQgc2V0dGluZyBjb250ZW50IGZvciBzdXJ2ZXkgU3lzQ29uZmlnCiAgICAkU2V0dGluZyA9ICRDb25maWdPYmplY3QtPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKTsKCiAgICBpZiAoICRTZXR0aW5nLT57J1N1cnZleU92ZXJ2aWV3U21hbGxQYWdlU2hvd24nfS0+e01vZHVsZX0gKSB7CgogICAgICAgICMgdXBkYXRlIG1vZHVsZSBsb2NhdGlvbgogICAgICAgICRTZXR0aW5nLT57J1N1cnZleU92ZXJ2aWV3U21hbGxQYWdlU2hvd24nfS0+e01vZHVsZX0gPSAiS2VybmVsOjpPdXRwdXQ6OkhUTUw6OlByZWZlcmVuY2VzOjpHZW5lcmljIjsKCiAgICAgICAgIyBzZXQgbmV3IHNldHRpbmcKICAgICAgICBwdXNoIEBTZXR0aW5nc0RlcGxveSwgewogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnUHJlZmVyZW5jZXNHcm91cHMjIyNTdXJ2ZXlPdmVydmlld1NtYWxsUGFnZVNob3duJywKICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gJFNldHRpbmctPnsnU3VydmV5T3ZlcnZpZXdTbWFsbFBhZ2VTaG93bid9LAogICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgIH07CiAgICB9CgogICAgbXkgJFN1Y2Nlc3MgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nc1NldCgKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIENvbW1lbnRzID0+ICdEZXBsb3kgc3VydmV5IHNldHRpbmdzLicsCiAgICAgICAgU2V0dGluZ3MgPT4gWwogICAgICAgICAgICBcQFNldHRpbmdzRGVwbG95LAogICAgICAgIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
JVBERi0xLjQKJaqrrK0KMSAwIG9iago8PAovQ3JlYXRvciAoQXBhY2hlIEZPUCBWZXJzaW9uIDIuMSkKL1Byb2R1Y2VyIChBcGFjaGUgRk9QIFZlcnNpb24gMi4xKQovQ3JlYXRpb25EYXRlIChEOjIwMTgxMTA1MTc1NzA1KzAxJzAwJykKPj4KZW5kb2JqCjIgMCBvYmoKPDwKICAvTiAzCiAgL0xlbmd0aCAzIDAgUgogIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO2ZZ1BUWRaA73uvc6Chu2kyNDlJlNCA5JwkSBYV6G4yLTQ5mJDBERhBRCQpgogCDjg6BBlFRRQDoqCAeRoZBJRxcBRRUVnAH7NVu7VbW7W1f7bPj/e+OufWO+e+ulXvq3oAyJDi2QnJsD4ACbwUvq+zHTMoOISJvQ9wgAxIgAow4ezkRFtvbw+wHCtrwT/E+1EArdzv6fzz+r8MEieBxwEAoi9zLIebzF7mncsczUngrOSnVzg9JTEFANh7men85QGXmbPCEd84Y4WjvnHR6ho/X/tlPgoAjhS1yoRTKxyxytSuFWZH8xMAkO5bXq/CTuQvP196pZfitxlWQ3RlP8woLo/LD0/hcpj/4db+ffxdL3Ty8sv/rzf4H/dZOTvf6K3l6pmAGBV/5baWAcB6DQBS8ldO5TAAlN0AdPT8lYs4DkBnCQCSz9ip/LRvOdTq7IAAKIAOpIA8UAYaQAcYAlNgAWyAI3ADXsAPBIPNgA2iQQLgg3SQA3aBfFAISsBBUAVqQQNoAq3gDOgE58FlcA3cAnfBCHgMBGASvAJz4D1YhCAIC5EhGiQFKUCqkDZkCLEgK8gR8oB8oWAoDIqCeFAqlAPthgqhUqgKqoOaoJ+gc9Bl6AY0BD2ExqEZ6E/oE4zAJJgOy8FqsB7Mgm1hd9gP3gRHwUlwFpwH74Mr4Hr4FNwBX4ZvwSOwAH4FzyMAISIMRBHRQViIPeKFhCCRCB/ZjhQg5Ug90op0I/3IPUSAzCIfURgUDcVE6aAsUC4ofxQblYTajipCVaFOojpQfah7qHHUHOormoyWRWujzdGu6CB0FDodnY8uRzei29FX0SPoSfR7DAbDwKhjTDEumGBMLCYbU4Q5jGnDXMIMYSYw81gsVgqrjbXEemHDsSnYfGwl9hT2InYYO4n9gCPi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YmoKNCAwIG9iagpbL0lDQ0Jhc2VkIDIgMCBSXQplbmRvYmoKNSAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDYgMCBSCj4+CnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgcmRmOmFib3V0PSIiPgo8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0Pgo8ZGM6bGFuZ3VhZ2U+ZW48L2RjOmxhbmd1YWdlPgo8ZGM6ZGF0ZT4yMDE4LTExLTA1VDE3OjU3OjA1KzAxOjAwPC9kYzpkYXRlPgo8L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiB4bWxuczpwZGY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGRmLzEuMy8iIHJkZjphYm91dD0iIj4KPHBkZjpQcm9kdWNlcj5BcGFjaGUgRk9QIFZlcnNpb24gMi4xPC9wZGY6UHJvZHVjZXI+CjxwZGY6UERGVmVyc2lvbj4xLjQ8L3BkZjpQREZWZXJzaW9uPgo8L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHJkZjphYm91dD0iIj4KPHhtcDpDcmVhdG9yVG9vbD5BcGFjaGUgRk9QIFZlcnNpb24gMi4xPC94bXA6Q3JlYXRvclRvb2w+Cjx4bXA6TWV0YWRhdGFEYXRlPjIwMTgtMTEtMDVUMTc6NTc6MDUrMDE6MDA8L3htcDpNZXRhZGF0YURhdGU+Cjx4bXA6Q3JlYXRlRGF0ZT4yMDE4LTExLTA1VDE3OjU3OjA1KzAxOjAwPC94bXA6Q3JlYXRlRGF0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ZW5kb2JqCjU0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNjc5LjYyOSAxMTcuMTkgNjg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MyAwIFIKL0ggL0kKCj4+CmVuZG9iago1NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzEuMzIgNjc5LjYyOSA1NDAuMCA2ODkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjU3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNjY3LjYyOSAxNTMuODU4IDY3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA2NjcuNjI5IDUzOS45OTggNjc3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NiAwIFIKL0ggL0kKCj4+CmVuZG9iago1OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszMSAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago2MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY1NS42MjkgMjA0Ljk3NiA2NjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjU1LjYyOSA1MzkuOTk4IDY2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzEgMCBSIC9YWVogNzIuMCA3MDAuOCBudWxsXQo+PgplbmRvYmoKNjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjQzLjYyOSAxNzMuNDA4IDY1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA2NDMuNjI5IDUzOS45OTggNjUzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MiAwIFIKL0ggL0kKCj4+CmVuZG9iago2NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszMSAwIFIgL1hZWiA3Mi4wIDYyNi40IG51bGxdCj4+CmVuZG9iago2NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MzEuNjI5IDE2NC45MTMgNjQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NSAwIFIKL0ggL0kKCj4+CmVuZG9iago2NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuODA3IDYzMS42MjkgNTQwLjE2NyA2NDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMxIDAgUiAvWFlaIDcyLjAgNTU4LjAgbnVsbF0KPj4KZW5kb2JqCjY5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYxOS42MjkgMjA5LjU1MiA2MjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjE5LjYyOSA1MzkuOTk4IDYyOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjggMCBSCi9IIC9JCgo+PgplbmRvYmoKNzEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzEgMCBSIC9YWVogNzIuMCA0ODkuNiBudWxsXQo+PgplbmRvYmoKNzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjA3LjYyOSAyMjEuNzk0IDYxNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA2MDcuNjI5IDUzOS45OTggNjE3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MSAwIFIKL0ggL0kKCj4+CmVuZG9iago3NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszNyAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago3NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDU5NS42MjkgMTQ5LjM5IDYwNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1OTUuNjI5IDUzOS45OTggNjA1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3NCAwIFIKL0ggL0kKCj4+CmVuZG9iago3NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszNyAwIFIgL1hZWiA3Mi4wIDY3OC44IG51bGxdCj4+CmVuZG9iago3OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1ODMuNjI5IDE5OS4wMDYgNTkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3NyAwIFIKL0ggL0kKCj4+CmVuZG9iago3OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDU4My42MjkgNTM5Ljk5OCA1OTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDc3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjgwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM3IDAgUiAvWFlaIDcyLjAgNjAyLjQgbnVsbF0KPj4KZW5kb2JqCjgxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU3MS42MjkgMTk0LjY0MSA1ODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjgyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTcxLjYyOSA1MzkuOTk4IDU4MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODAgMCBSCi9IIC9JCgo+PgplbmRvYmoKODMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKODQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA1NTkuNjI5IDE2MS43ODQgNTY5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MyAwIFIKL0ggL0kKCj4+CmVuZG9iago4NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDU1OS42MjkgNTM5Ljk5OCA1NjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwIDAgUiAvWFlaIDcyLjAgNjY2LjQ0MiBudWxsXQo+PgplbmRvYmoKODcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTQ3LjYyOSA0NzQuMjA2IDU1Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODYgMCBSCi9IIC9JCgo+PgplbmRvYmoKODggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1NDcuNjI5IDUzOS45OTggNTU3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NiAwIFIKL0ggL0kKCj4+CmVuZG9iago4OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MCAwIFIgL1hZWiA3Mi4wIDU4Ni43MTEgbnVsbF0KPj4KZW5kb2JqCjkwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDUzNS42MjkgNDY2LjU1NyA1NDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjkxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgNTM1LjYyOSA1MzkuOTk3IDU0NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODkgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCA1MDYuOTggbnVsbF0KPj4KZW5kb2JqCjkzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDUyMy42MjkgMzE2LjYyMSA1MzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjk0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgNTIzLjYyOSA1MzkuOTk3IDUzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCA0NDEuNjQ5IG51bGxdCj4+CmVuZG9iago5NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1MTEuNjI5IDMxNi42MTEgNTIxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NSAwIFIKL0ggL0kKCj4+CmVuZG9iago5NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDUxMS42MjkgNTM5Ljk5NyA1MjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjk4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwIDAgUiAvWFlaIDcyLjAgMzc2LjMxOCBudWxsXQo+PgplbmRvYmoKOTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDk5LjYyOSAzNjYuMjk0IDUwOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTAwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgNDk5LjYyOSA1MzkuOTk3IDUwOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTAxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwIDAgUiAvWFlaIDcyLjAgMzEwLjk4NyBudWxsXQo+PgplbmRvYmoKMTAyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ4Ny42MjkgMzQzLjI5NSA0OTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwMSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0ODcuNjI5IDUzOS45OTggNDk3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwIDAgUiAvWFlaIDcyLjAgMjQ1LjY1NiBudWxsXQo+PgplbmRvYmoKMTA1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ3NS42MjkgMzIyLjc0NyA0ODUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwNCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyA0NzUuNjI5IDUzOS45OTcgNDg1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwIDAgUiAvWFlaIDcyLjAgMTgwLjMyNSBudWxsXQo+PgplbmRvYmoKMTA4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ2My42MjkgMzI2LjA0NCA0NzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwNyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyA0NjMuNjI5IDUzOS45OTcgNDczLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTEwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwIDAgUiAvWFlaIDcyLjAgMTE0Ljk5NCBudWxsXQo+PgplbmRvYmoKMTExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ1MS42MjkgNDE0LjkwMSA0NjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExMCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0NTEuNjI5IDUzOS45OTggNDYxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTEzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgNzA4LjAgbnVsbF0KPj4KZW5kb2JqCjExNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0MzkuNjI5IDQyMS4yMjYgNDQ5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNDM5LjYyOSA1MzkuOTk4IDQ0OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTEzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjExNiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDY0NC4zOTggbnVsbF0KPj4KZW5kb2JqCjExNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0MjcuNjI5IDQ0OC44MTcgNDM3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgNDI3LjYyOSA1MzkuOTk3IDQzNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjExOSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDU4MC43OTYgbnVsbF0KPj4KZW5kb2JqCjEyMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0MTUuNjI5IDQyNy4zNjIgNDI1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTIxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgNDE1LjYyOSA1MzkuOTk3IDQyNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDUxNy4xOTQgbnVsbF0KPj4KZW5kb2JqCjEyMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0MDMuNjI5IDQzMC42NTkgNDEzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTI0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgNDAzLjYyOSA1MzkuOTk3IDQxMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTIyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyNSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDQ1My41OTIgbnVsbF0KPj4KZW5kb2JqCjEyNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzOTEuNjI5IDM3NS40MjggNDAxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTI3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMzkxLjYyOSA1MzkuOTk3IDQwMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyOCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDM4OS45OSBudWxsXQo+PgplbmRvYmoKMTI5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDM3OS42MjkgMzc1LjQxOCAzODkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyOCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAzNzkuNjI5IDUzOS45OTcgMzg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTMxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgMzI2LjM4OCBudWxsXQo+PgplbmRvYmoKMTMyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDM2Ny42MjkgNDI1LjEwMSAzNzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzMSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAzNjcuNjI5IDUzOS45OTcgMzc3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTM0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgMjYyLjc4NiBudWxsXQo+PgplbmRvYmoKMTM1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDM1NS42MjkgNDAzLjAwOSAzNjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzNCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAzNTUuNjI5IDUzOS45OTcgMzY1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTM3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgMTk5LjE4NCBudWxsXQo+PgplbmRvYmoKMTM4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDM0My42MjkgMzgxLjU1NCAzNTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzNyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAzNDMuNjI5IDUzOS45OTcgMzUzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgMTM1LjU4MiBudWxsXQo+PgplbmRvYmoKMTQxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDMzMS42MjkgMzg0Ljg1MSAzNDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAzMzEuNjI5IDUzOS45OTcgMzQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ2IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjE0NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzMTkuNjI5IDM1Ni4xMzQgMzI5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQ1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMzE5LjYyOSA1MzkuOTk4IDMyOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDY2MS45MjYgbnVsbF0KPj4KZW5kb2JqCjE0NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzMDcuNjI5IDQxMy40MDggMzE3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQ4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44NDcgMzA3LjYyOSA1NDAuMjA3IDMxNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQ2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDU5Ny45NSBudWxsXQo+PgplbmRvYmoKMTUwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDI5NS42MjkgMzMxLjY5MSAzMDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAyOTUuNjI5IDUzOS45OTcgMzA1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTUyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ2IDAgUiAvWFlaIDcyLjAgNTMzLjk3NCBudWxsXQo+PgplbmRvYmoKMTUzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDI4My42MjkgMzczLjE5NyAyOTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAyODMuNjI5IDUzOS45OTcgMjkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTU1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ2IDAgUiAvWFlaIDcyLjAgNDY5Ljk5OCBudWxsXQo+PgplbmRvYmoKMTU2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDI3MS42MjkgMzEyLjAwOSAyODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAyNzEuNjI5IDUzOS45OTggMjgxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTU4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ2IDAgUiAvWFlaIDcyLjAgMzk0LjAyMiBudWxsXQo+PgplbmRvYmoKMTU5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDI1OS42MjkgMzQ4LjAyNiAyNjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAyNTkuNjI5IDUzOS45OTggMjY5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTYxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ2IDAgUiAvWFlaIDcyLjAgMzE4LjA0NiBudWxsXQo+PgplbmRvYmoKMTYyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDI0Ny42MjkgMzA4LjMwNCAyNTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAyNDcuNjI5IDUzOS45OTcgMjU3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTY0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ2IDAgUiAvWFlaIDcyLjAgMjU0LjA3IG51bGxdCj4+CmVuZG9iagoxNjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMjM1LjYyOSAzMjQuMTkyIDI0NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTY0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuOTg4IDIzNS42MjkgNTQwLjM0OCAyNDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCAxOTAuMDk0IG51bGxdCj4+CmVuZG9iagoxNjggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMjIzLjYyOSAyMzIuMTI2IDIzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTY3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDIyMy42MjkgNTM5Ljk5NyAyMzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCAxMTQuMTE4IG51bGxdCj4+CmVuZG9iagoxNzEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMjExLjYyOSA0MjUuMDgxIDIyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTcwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDIxMS42MjkgNTM5Ljk5NyAyMjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDkgMCBSIC9YWVogNzIuMCA2OTYuMCBudWxsXQo+PgplbmRvYmoKMTc0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDE5OS42MjkgMzU4LjkwMyAyMDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAxOTkuNjI5IDUzOS45OTggMjA5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTc2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ5IDAgUiAvWFlaIDcyLjAgNjIxLjg4OCBudWxsXQo+PgplbmRvYmoKMTc3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDE4Ny42MjkgMzU3LjUzOSAxOTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAxODcuNjI5IDUzOS45OTcgMTk3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTc5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ5IDAgUiAvWFlaIDcyLjAgNTU5Ljc3NiBudWxsXQo+PgplbmRvYmoKMTgwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDE3NS42MjkgMzQxLjc0MSAxODUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAxNzUuNjI5IDUzOS45OTggMTg1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTgyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ5IDAgUiAvWFlaIDcyLjAgNDk3LjY2NCBudWxsXQo+PgplbmRvYmoKMTgzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDE2My42MjkgMzUzLjU3NCAxNzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAxNjMuNjI5IDUzOS45OTggMTczLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTg1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ5IDAgUiAvWFlaIDcyLjAgNDM1LjU1MiBudWxsXQo+PgplbmRvYmoKMTg2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDE1MS42MjkgNDA3LjI0MiAxNjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAxNTEuNjI5IDUzOS45OTcgMTYxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTg4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ5IDAgUiAvWFlaIDcyLjAgMzczLjQ0IG51bGxdCj4+CmVuZG9iagoxODkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMTM5LjYyOSAzOTkuMDU0IDE0OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTg4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDEzOS42MjkgNTM5Ljk5NyAxNDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDkgMCBSIC9YWVogNzIuMCAzMTEuMzI4IG51bGxdCj4+CmVuZG9iagoxOTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMTI3LjYyOSAzOTAuMCAxMzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAxMjcuNjI5IDUzOS45OTcgMTM3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTk0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ5IDAgUiAvWFlaIDcyLjAgMjM3LjIxNiBudWxsXQo+PgplbmRvYmoKMTk1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDExNS42MjkgMzE4LjUwMyAxMjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAxMTUuNjI5IDUzOS45OTggMTI1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTk3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ5IDAgUiAvWFlaIDcyLjAgMTc1LjEwNCBudWxsXQo+PgplbmRvYmoKMTk4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDEwMy42MjkgMTkzLjc5OCAxMTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAxMDMuNjI5IDUzOS45OTcgMTEzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjAwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ5IDAgUiAvWFlaIDcyLjAgMTEyLjk5MiBudWxsXQo+PgplbmRvYmoKMjAxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDkxLjYyOSAyNDkuMTY4IDEwMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjAwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDkxLjYyOSA1MzkuOTk4IDEwMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjAwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwMyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MiAwIFIgL1hZWiA3Mi4wIDcwOC4wIG51bGxdCj4+CmVuZG9iagoyMDQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNzkuNjI5IDMxMy4yMjQgODkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwMyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA3OS42MjkgNTM5Ljk5OCA4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjAzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwNiAwIG9iago8PCAvTGVuZ3RoIDIwNyAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCnic5b3dzixHkhx4f57ie4GpyfiPAAQCzSYp7N4JakAXg7kaQdLFtBZ9pddfN4+MjKxTyZZZb1NNYDHD5uF3wr6qrKy0MPdwN//Lt/B12P/9E/7VRvz6tz9/+8v5s/DV4leq7z8KpX6l49VLPY5gfzWRx/qX/QD/wv/+0/GK5evfHXH/87H+PX90rD/8j6//8u1/fju+/uO3f/lX++l/tZ+Xr//1bf66BfzP3/7Td2/m+N29v/s7TCH+Dt/hX761PF8z1lcYZYzx1eNXbK8439I//19/jl8//T9+Mb484rvw56+SD/zh388/4Pf5X11/sH/jPfzlWy7HfAX8oYevGtcvzusXv33Pmn/1jq///u3HP337519C/Qr2bvqBz+hP/21/S/tXyPbZRfuLmL/+9Oevf/kP9qfjh69g736UkL/sv48f7WfBoMn+7L/D/sn2szj/HNP872PYP38415x/DvGHf/360/+N91C+wvHdiyd7kYbfVtt68SPZizd/2fzDl10m/lSwxP5p5y8v85devyn3V+j2sfeaHn/n+G59Ca+E33fUwK3PrxLx+9vze/5Y3154q/aGK7W+2he44vcP7v3X/PIP/DCKodbjq2i/fxzc+2/HKzVb3uxBoNanV8E9Sge5vr6af3ki9/7beHXc35EGtb6n14HHsBXu8+/15V/ilMj14+Uffyjc/RrxVXB/R+Xe/yivlvD+O/d+Rn8NLEmVWx+O+JpPcucuIBzlRX4XwtFfOeDLbI8xBQjhVXB3a8okIL8aHt8YWIAtwv09Eve8hxhe/rz0TF5DzK+IO1wr+ZaMX3N22iUBtsnVIHBWSOnVmkBaIdXXyP4lJe90Pl4Bd7oE7jEOOdkmhMc4cs9ByPWVq68hLzqPV/XtqJMXXeKrHwJ1hVJskcBdoYxXSAJ5hRpf6RDYK9TyyrjTpZFPc+2vmoV31MKrg69bIq+55deAAiiZfQXbwavCYN228KQwWLc9nFzZXrUqBDZs+04KgQ3bv3GHcyG/1qO9Au5wrNzX2m7WKxWeLOJhOzjucI7cNcejvuoQ+Mv0h2kcgb9isE1cEV0xQH0L/BXDMBko8FeMto8ngb9itI08CPwVYzelI/BXTLaTK9IrJtvJFe0VU38lRXzFbPu5or7sK2RyUOCvmNtLekem9z12YPkrmuCPWeCvaIo/KwosmuQvDRFLIR+4ats5eYurbeQR8VomP0/T+4eiwKIJ/oiHeTTy3Zviz1EhMJP8Elv0aJoQEdTBAmwfVwSYCZdXMNLuJZG3wVR/VARYNNlv8T2eTPIaTPdXRYClI7waWLsX7qLTYRs5nmVTYiTANnJFgCVT/5PlG/eoJVP/WRFgydR/tTttl8DduBRtP1cEWIrpNTpyIYO8BlP/QRBgpnReSRFgycR/xhN9RI4CLPI10SMQWEq2n0eBwFgySqb5QxPYK5nmT4r8Sqb5SxDYK5nmr4r8SsW2cUF+JZP8RxDYK5nkD4r8Sib5UxHYK5nml3JeyTT/+ViS19DazHrR7GWa39NeNHuZ5ve8F81eJv2TIr+SSX/TCAJ7jaSlvtKopnUE9rIPSEt+ZdP+yH7R7JVN+ysBbTbpXxT5lUOc+S+WvXIoWgIsm/Q/FPmVTfqTCbBsoj8r8iub6JcSYDmFmQBjCSwn28YV+ZVN9CvJpmyaPyryK5vml/Jf2TR/VeSXKSkt/5XL+KubLP4r/vh9JvjLdp+PX/0jfj0e8h9sjf2qeYzyxx++Sr7OM/BA/GT//Hx8f9LxjvplvnLA//z0/avj8AbCw8LLp/fxkbfuFlL7Z/L8vj/yysF2GTwmFlxS67MF1La+GrlR65vF0x0nTtz7t7+2PWYmrklAeoGbR0/cFYSj2R6DSyjcJdh9ecWAa0gsINke45vMIAHV4mknq0oChu0xuIaeOICRW4eAjZW8hlhfR8U1NPIa4rA9xgC1kIAUXxl3OjfyolOxTQbXMMiLNoprGQ8P+d0zihszCddIQLGo2gDNKI4DdNtjDFAq+ZZKsJ3GACalSEB+FdzoRt5nHGTiPpdEvkA9XgP3ORXymmu2jUagsICzzCZwmMUSttMIJBZasqhaYLGA40zcaNs1SYAtwo2OhXxLPb0Cju/t5pGAalE1Hp/AvsJ45arQ2IivmhQaG8WiaoXGcKrZBBqLR7SoGs8Puby8Eu5zCtwbijjZ7AKJxRBetQgkFlGNEQUSizjZHDyJWWz2ClUgsRhtS08CicVoe/ohkFjEwWYTSCwm29MzT2LRpNQRBBKLONfsAonFbFu6osNiti1dEWIR55qKEos411SkWCy2pSeBxKLJ5Qjmbp28aJxr4kbTN67alp4FErPo5tXsie7tIJ83HGwqWiw229PtToc0yGtotqcrWiziYNNuczgiedE42KwKjXXb1BUtFodt6vZId5ZYcbypSLFocUA04rZYhnvgksUBWdFiCeebdqMDvd62dEWKpcMWgbnHwV1zwvEmnugwyGu2MCAqWixZGJDtie62o3AACwOqosUSjjftRgcUCnIA29IVLZYsDAjG3cH2dRJQXlHRYsnCgFwEGksWB9Qo0FjC8aaixVK2Tb0KNJYsDgiKFrON7ZUOgcYSzjcVLZYsEKhZoLFUbVdX1FjCKaeixpIFAhbQ0DSWLA5IihhLOOQcCo3hkFNRY6nbrp4EGrMw4FDEWMIhZ1NozMKAlBUaszCgKGos4ZCzCzSWj6BlxbIFAkcUaCzjkFNRYzmg4FigsWyBQFHUmO2GMzPG0ljGIaeixnJE0bFAYxkF8IoayzjlVNRYTqg7Fmgsp6plxjJOORU1li0UOBQ1lnPVMmM5o/iYp7GM005FjeUa/npk/5kDN8RHthyZ9CsHHvorIZuN0oCQVzb78Hx3KB+r6g92mSsfjsNgZMkBec+UOxL/7vO3hfCQFBytWPRqX5CHN/mQFDT+ywaox+AA2fgvGCDHSgLKK3cDWNBIAoz/0N1SOvkKBdWaFS0Z5CsUVGtWNHSQ61Gs6cUCjQNUFGv66XMmAUZ/OMSs7Au0V8V9zp0EmBbouM/pIN9RM/ZDhWrN7Cu0V0DBY67kK3SUbOIuoL+HAqBm048BH5/Ax6RgndU8hQSgZhOPTyLf0jD2w422sJ0EGPvhRqdKvqUxXglnn7bZUQAkBQtqyEvkXgFpwYY7nTL3OCAt2HGnjQY4QEDNph/Rc090DKjZFGgsgkmHQGPIC5Yq0Bjygi0JNIa84DgEGosJRZsCjcWEok2expAXzEGgMeQFSxdoDHnBVngaQ1pwRIHGYjlexxBoLBYUbgo0hrRgTgKNIS1YcU5hF84Bany1JtAY0oLD7nPI5DuqtqcHgcVii69oD3Q4GvkKDYWbAoshK1ijwmIdhZv2qaK3lAPYnl4VFuso3CxooSQft2Gb+qGw2EDhpn2sKZAXPVC4KbAY0oIdT/Qo3EUjLTgUMZYO29UVMZYCKjftY7VYiwSkVxbEGNKC1Zi7l8B9u5EW7IoYQ3WrLTB1PchrRhu0osZStE0dzN3Ju5BQwGkvECJ5zRYHVEWMISvYi8Bi9pi9DkWMpYwKTp7FkoUBSdFiSAqWJLAYkoJN0WJICnZFi6WKAk6BxZLFAVHRYqmigFNgMSQFi6LFkBVsUWAxZAW7osUs9H4dVWGxjgJOhcUsEMiKFkNasDSFxYZt6oIWQ1bQohKBxSwOOBQtlg8UcAoshqxgVsQYsoJl8CyGpGCrAoshKTgULZYDqjgFFssWBkRFiyEpmAUthpxgVbQYcoJN0WLICQ5Fi2ULA4KixbKFAVHRYsgJZkWLISdYFS2GnGBXtBiSgkPRYm9Jwcd038eeDleIz9zhcbxVxvZVGdvi9Pw4vDL2yuyh8v0P8+fh+7xjOLJnQu1F0uOLfSQPTL1dqVAKYOpt1Qhy69OuEeQAbdcIUoAIdxrUpkTyEky9ZZxiBfYFqrHY7CYnAWPXCFIAU29XjSAHqLtGkAOMXSNIAUy9XTWCHKDsGkEO0HeNIAUw+XbVCHKAsmsEOUDfNYIUwJ77q0aQA+RNGhyg7RpBCmDy7aoR5AB51Qhyy9uuEaQAJt6uGkEOkHaNIAeou0aQA4yrRpBaP9KuEeQAddcIcoCxawQZAJK4V40gByhXjSC3fuwaQQoQ4q4R5ABl1whygL5rBCmAiberRpAD5F0jyAH6rhGkAMn05CGQGHK4qQkkhiTuVSNIAUy9tSCQGJK4V40gB7A9vQgkhizuVSPIAdIrDZrEkMO9KgQ5wNgVghSgxqtCkFtfd4UgBxi7QpACtLgrBDlAuSoEufV9VwhSgB52hSAHKLtCkAP0XSFIAUbYFYIcIO8KQQ7QdoUgA0AKdyhKDA4FV4UgB2i7QpACWBBwVQhygLQrBDlA3RWCHGDsCkEKYFFAUJQYcrhXhSAHGLtCkAJYGHBVCHKAsisEOUDfFYIUwMKAVSHIrS+7QpAD9F0hSAEsCqiKFkMSd1UIcuv7rhCkABYEXBWCHCDvCkEO0HaFIAWwIOCqEOQAaVcIcoC2KwQpgIUBQdFiyOFeFYIcoO4KQQ4wdoUgBRhxVwhygLorBDnA2BWCDABJ3KRoMSRxrwpBDtB3hSAFCGFXCHKAsisEOUDfFYIUwAKBLKgxJHGltBiyuE1RY8jiSnkxGBYcghpDEjcqagxJ3KyoMSRxi6LGkMSV8mJI4g5FjWULA6S82FsS9wHwlMSFTdbHsuOWxM1hFm3CuPks2jxtmsOPl5UzUrp/PGZK9/siTT/6SdME4OHVPq7CT36m9SO1PvjJT5weABwAJz9xegBwAJz8pBlTUgA/+knzRnAAHP3EGVNyABz9xMljFMCPftL0AOAAOPrBNTTyGvzsB9cwyGvws580U2McAGc/aRIZB8DZT/LUGLXej37i5DEOgKOfOFNjHABHP3ESGQfA0U+cqTEK4Ec/yVNj3Pr6CrjP4DEOMF4JDzRSYxSgWqyO+wwe4wDlVac5FUkBtb86nmjIMQrQLFjHjUZqjAOUV8CNhhzjAP2VcKORGqMAPbzKkWZqjANYsI4bDTnGAdqrZ4XGRnjNqQAsjQ0L1rtCY6O9UhFoDMa3BXeau2T43lbcZ4gxDlBfHcwNMUYBwvE6kkBi8L2Nh0Bi8L1NjScx2N6WLJAYbG9bEEgMtre9CyRmN+x1FIHEYHsbI09icL1NQyAxuN6WKpAYXG9bEkgMrrfjEEgsZgvVm0BisL2NWSAx2N7mIJAYbG8LmBsxJQWotqXjRtM3rtqWHgUSi9VCdXuiPaakAM32dEWLwfw22532mJID2J6uaDGY3zZ7oj2mpADd9vSs0Fi3TT0oNNYtVLdHurPEOmxPV6QYzG/tezpjSg5gkbqixWB+O+xGB3q9bemKFIP3bQJzI6akABYGZDzRiCk5gG3pihaD9223J9pjSgoQLVJXtFiyMCDYjfbUGAewLV3RYjC/zcbdnhrjALapK1oM5rc9CTSWLA7AV5umsWRxQFC0GFxwUxZoDC64RdFicME1QuJpDC64XdFiyQIBDIeiaQw2uEFRY7DBTYoagw1uSTyNwQW3KWIMLri9CTSWLA44FDUGF1zTiDyNWRiQFDEGE9xSFBobtqlHhcZGenVFjSULA44q0BhMcKOixmCCa//wNAYT3KKoMbjgtizQGFxwh6LGsgUCh6LG4IIbFTUGF9ysqDF44RZFjcELV8qMwQt3KGosWyggZcbghRsVNQYz3KyoMZjhVkWNwQy3CWoMXrhSYixbJBAUNYbUckeatz4DnlLL48FjF54AV2o5pldxPwB0//9yTHfcs0LY+/2P2fvvqeV3xKPPwEM2r2DqTbCP8eHNPGbz2jk8hQSg9wPG7nFwADR0YqRDzZUEoPfDALkmEoDeDwMYk3Lr0fph11wj+QLo54T/dU7kNaOfE2cKsZDXXHECMJ2aOQAaOov765PrcQBg69vRSAAOAAxQYuYA6OfEfU45kAA/AJjPFwfwAwD75nPLB9L/ERPyyEtGN+dpc04CkP6f00ooAFJ5tpOhp4H7qiKZN3CbS+cuOqKbE/c5H9zzjGRexGidlslXCJ7/t7tQ2Vfw/D960smLDp7/50kM2bzRBBKLaOfMAokhm5eCQGLI5uUukBjSebXwJIZsXo8CiSGbN4ZAYjF7/p8nMWTzUhJIDNm8cvAkhmRebQKJIZnX7YkOJGVEdHMGgcNi9ew/z2HI5SW7zX008i01z/7zLIZcXjXi7vUgv0no5qwKi6Gb0+6zCXnyotHNeSgs1pH/t4umnwZ0c+KBNu7gAMMPAAQWg9ezPdC9F/LLPfwAgGexhEN9e/89d+55QzYvKVIM2Ty7XvuGN+6ikc1rihRDNm+AuvtBXkPACYC9wjG4r3eKfgLA0xiyedme6U6SEpJ5RZFiSOY1u9G2oZDXjDN9RYul5AcANI0hlxcVKYZcXlakGHJ59RBoDLm8pogx5PJGFmgs4VBfEWPI5cUu0BhyeVkRY8jl1SjQGHJ5bQg0hmTeUMRYwqF+EmgMybykiDEk83JTaAyH+ooYQzavB4XG4PasiLGEQ/2i0BgO9aNAY8jmZUWNIZtXK09jSOZ1RYzl4AcAPI3lgAMAgcaQzEuCGkMuryhqDLm8qqgx5PK6osYyTvUVNZbh9qyoMeTykqLGkMsrihpDLq8pagy5vK6osYxjfUWNZRzrK2oMybykqLG3OtGnLN1DMi8cn06heKDePEC9GNSCaP9WYC38PGeJaEzfr/uuoBR5v59mVu99nef64BFQr3LTn6ZzwMRtx9CP1JbJWsyArak8vv+HZFixHcQQuTxf8WP6LJjEOGIdJMLHv88xhywC89/nvDwWgQHwCc4J7LvCpASMsS+psoiMk2QjJPvWkYhuGwnux2BfA8MSMKi5BPY1bP/MuOeJBmAa/BwfSyJ8HPwcSMoiMA8et6OzAMyDx92wHZRC+EB43PEcMotItqHYhbdCv4bp3I670ejXGLal4G6MQCJ8Kjyep4P8rOZY+DlqkEVgLrx9Vj2z78oHwydUjLPvCqMTcMtzI59yHw2Pe27ROInAbPis8JsPhw8Kv83p8Aq/zfHwCr/N+fAKv80B8Qq/+Yj4qvCbz4hPCr/5kHjc88A+UD4kXqE3nxJvj3nvB/tlxxiFoPDbnBafDdDZDxfj4ovAb3NcvL1EiOyFt4EWDIXffGK8xG8418QdPzJ7HT4zXuI3HxpvN9CkOYuw3T9L/OZj4+3TTZW8cp8b3xV+m4PjM0QeeeU+OT4q/DZHxyv85rPj7SnvI5Jfdh8eL+m3OT3eXqOwL4Hp8ZJ8m+Pj7cONmb1wjFaQ5NucIG8X3ht74RghXwR6myPkFXpDgzbGTvP05tPkJfk2x8kr9Obz5BX5NufJK/TmA+Ul+TZHyiv05jPlu0Jvc6i8Qm9zqrxCbyioq5J8m3PlJXrDYHlJvs3J8hK9YbS8JN/mbHmJ3jBcPkj0hunyknyb4+UFevPx8pJ6m/PlFXrzCfOSepsj5hV68xnzinqbM+YVevMh85J681nzknqbw+YVevNp84p6m9PmFXpDWu6Q1NscOK/Qm0+cl9TbHDmv0NucOa/QG3q4h6Te3pJzT4iP7Fz35t6PZW+ldml4Ei6fBXVYir9vKGiY/7wV3f0B675/GUxvssfc7uPjC35cCeaXuGcpqIQC1Bdq6I2qWYB9OgfeL0I0BoD5JRXXUMlrwPwScFvr5Fsawx5YXEMlAWhfL3PkPXkR6F9HVoFb2184QxsdtEYhML2ke3Yrs4jycmv0GGhEf3lr+ZECicAAE9y4ntnrwAQT3Ota2XeFESbzUWURRp3+LB2VvQ4MMXHTv/b82D4gmsV//pVl73k+XuehSWQRJixwz1MknwtUvsIL29awV27cOftXOnvlsMHzL8nBXjmKX8FjIbJXjnEmSWE15O/7odCaF8BOx132CcdIk6y8qRZf5/kme+GogQV5lky/Rn/NqWA0tZnuPp082Avv7J1G+WuVeA3zTJLEawNTygyRC/sdRw2s2+BU8juOvH0vAoFYVPLyg7ccyQv3Ktih0BrKYOFDL7yrgFllCq15IexQaM0rYatCaxGTTZJCa6iFjUGhNS+G7QqtIW1fikJrSNufFb3slaMgVhJrEQNOJLWGklh0hfG05jWx0ptCTWxTaA1Ze8RkPK0haz8kxeaFse7/WthHEHNO2Jtdbb+fdffsx4qqWEmxIWE/x0A09goaRpdJzAaLPIlDUBhbUf980Ajb7iXBhoR9PTBVJLG3A7WxkmBDwn4Uf1jZ6xiYYKYwm5fHgtMxHoVEYIYZZkNm8muOhH2VBJtXyPpH1ciHz0tkJcGGGtkzIULeQRTJJkmweZUswmRDsQiMMhOYDQn7Lgk2L5TtnmYjeQGVskESbKiVnS5kLLOhWJa9DyiTbQqxIVXfJcmWLGTwDAZNbF4pK0k2lMomRbIhVT+701hi81pZSbIhVT/HJbHElhomminEhnLZU4Ww14F6WUmyIVV/Fg+wV94x1kwiNpTMSpItwQgrS8RmsUOUJJtXzQ6F2JCq1xJsyNW7kxRNbF45q0g2r5yVJBtKZ8/zA5IXUDurJdm8elaSbMjVs0k2ZOmHJNm8dFaSbKidjZJkQ/FsliQb0vRS2OfVs5JkQ5Zey7GhfjZIks0LaCXJhgraLEm29yz9Y/r9QyJM/0pwFcb5rt/8NjELxrueqK/3ullMy/K0fP9Ydyb0Vw+815XiFp4WrZ81sQmF7XNk8ePb+Uw/pj3sk0Sgsv0cWkwiUNt+Ti3mEDnugZ8kAtXt5/h1EjH2yE8OUVDffg5gJxFlT/0kEahwP0ewc4ga9txPEpH34E8SgSL3cwo7h2hhj/4kEShzP+ewk4i2h39yiA6rm3MSO4lIe/wniYDZzTmLnUOMYw8AJRFpTwAlEfC7Ocexk4hxzQClAJjyNNZAdhJR9xRQEgHLG4HfMOjpGgNKIuB5o/AbRj21qvAbZj1do0BJBGxvFH5DwfE1DJRDJBjfKPyGeU/XPFASAesbhd8w8emaCEoi8h4JSiLaKw6F3zD06RoKSiKSSQqF3zD46RoLSiJQT3DOBeUQ1fb/rPAbKo7TmtJOIsYrd4XfMP6pFoXfMP+pr0HtJKK/xlD4rdv2v0a1kwjb/pPEb922/zWsnUNY7FolAYcpUP0c104CbPdf89opBAqOg6TfUHCc1sR2EmG7v6TfMAmqnjPbSYBt/pJ8Q73xsaa2cwhMhJXkGwqOkyTfMA2qrMHtJMI2f0m+YR5UX6PbSYTt/pJ8Q8VxjAq9oeI4SfINQ6FKVegNU6GaJN8wFmpI8g0lx0dT6A0lx1GRb5gMlYNCbxgNVST5htlQrSj0huFQQ9JvqDg+hkBvKDiOVaI3TImV5BvmQ9VDojdUy0nyDROiRlboDZNiJfWGeuPYJXpDwZyk3jAkqkrqDVOi2lDoDWOihqTeUHAckkJvKDhOknrDpKgsqTeMiqqSesOwqC6pN0yLGpJ6Q8VxkNQbSo6TpN4wMSor6g0To6qk3jAyqkvqDRXHh6TeUHGspd9QcZwU9faeynxAPKYyc/lc9zY3ygSCW3XGdtYTl/mPz4rqd0OAtfL45Zbm/EhcWnxbM/LAPT+++md+Ag21qM50EqYQ8Jrt4YyhOYRF3SWcJMwhOir1zhiaQsBudhwnC3OIjEq9M4bmEA2VeicLUwg01OJ2OQtziAyLlDOG5hDNvsrhZGEKgY5a3HOPoTmEbbyznrOyiIqSvTNHSCHQUYt77izMIRJq9s4cIYeoqNk7WZhD2HOXwsnCFAIttbjnniPkEBZ1455H9qMyjXLMs71GItBROw+I2Md8FJTszRwhB+io2DtJmEFENNTGcxGJyLASPnOEHKLDS1jgt4iG2qTwW0RD7aHwW7QAtzSF36IFuC0r/Ia6zhEUfoumUY6u8JttT/AUFvgtoqM2KvwWLcAtQ+G3aAFuqwq/oa5zJIXfIlpqD4XfYrawuyn8FktE5Z7AbxE9tUHht2gBbusKv6Gwc9hzPlUmhyhwGOb5LdaOwr1TZVKIZtt/VfgtoqXWHvOpMjmEbf+HRHAW4fqRd2fvRs+o2zuDaA7RYDOs8Ns4ULd3BtEcIsFoWOE3dNTaHfcgmgNY1C3Jt3TY5m/f9RlEcwjb/CX5ltBRK8m3ZAFutUUziOYQtvlL8g1z71GcNINoChEt7Jbkm4WRMB0+g2gOYdu/JN+SBRIVxO5BNIew7V+Sbwk9tZJ8S+ipPRR6SxZIJEW+JYsjSlboLaGlVpJvqPHsXaG3ZHHEIek3U9KwH+bpLVkYkYZCb8nCiCLJt1QHqvcEekON55DkW7Iw4mgCvSWLIqKk3pJFETlI9GZRRJHUW+q290vqDSWeI0r0ZmHEIam3ZHFErAq9mfZGo6xAb9niCORfeXrLR3s1Sb2hxnNkhd6yxRFBUm/Z4ogoqbdscUSW1Fu2OKIq6s3U6qtJ6g2FnkNSbxkFd5J6yyi4k9RbtjAiK+oto95OUm8Z9XaSekOh55DUW0a9naTeMurtFPX2nhx9Snp+nxztnrb6ftm7Vapt9vktN4oXqGf2E8OOfj4+ByE9eTKgOeny7Xp42Y/r8d4k+MEkFjAswPGGusIBgrcmwV2xRRZR3LVrVFiWcIh+c+2iEAHzq5YrIYdAa9LyteEQaE1aroQUAq1J6GaKg0bkadsVQmURbdp2DWw6FMJ7k5axDYdIr7FcVzlAu9l2UQi0Jl2uqxwibdsuDoAGpeW6yiHGzbaLQniD0vK14RDVIpzlusohxs22i0KgQ+lyXeUQ5WbbxSE6JqufrqsUAh1KSWG34B1Ky3WVQ/SbbReF8A6lZdvFIbKFOMt1lUO0m20XhUCHUpH4zTuUJH7zDiWF3+BusH27OAQ6lJbrKoeoFuMsV2kK4S1KCr/B3iBmgd+idygp/AZ3g9IVfoveoSTwW/Q2JYXfYG6wfbsohLcpKfwGc4OcFH6L3qak8Bs8iVtT+C16n5LCbzA3CEHhN7gbREm9Re9TUvgN7gY1KvwGU+Ltms8hEgavn7aEHKLdXPMpRDswe33aEnKAdDPN5xC2/V+uqxxi3EzzKUSPFuMsW0IOUTF/fdoScoBx88ynEBZF5Mt1lUOUm2k+h7Dd/3JdZRCwODgU+QaHg3C5rnKIfjPNpxAWRhRJvsHhoF6uqxyi3UzzKYSFEcflusoh8s00n0PY5n+5rlIICyOKJN9gcdAu11UOUW+m+RTC4ohDkm+wOIhBoTc4HSRJvsHpoBSB3uBJ3CT1hgrhPhR6g9HBIak3OB3EpNAbnA4uz3wO0G+e+RSihZtnPofIN898DtFvnvkUwsKIqKg3+Bxsz3wO0W6e+RRiHDfPfA6Rbp75HKLdPPMZBHwOtmc+h0g3z3wOUW+e+RxiiLk3lAhvz3wOUW+e+Rxi3DzzKYSFEVlSb7A70LJvMCXuinpDhbCWfIPbQZDUG9wOkqTeYHeQJfUGu4OqqDdUCGu5N1QID0m9we1AS769Z8Ef09sfcsFNLD9+85vbgYVxngXHL0am+6wQXhlxGFzhH3cN7XOoGNZ45fDPp2vxaXoQ30aBXb/BXibUsmaMeWEo3sEfjqsM2f/9x/WLLteF86V/5RfEP+x/wvlu/F38eF4FPtx6jTfDT9q5qmz35RDOay+3a1lGDp90U25tYE8f7Sei39rAKATU7dUGxiHyrQ2MQ7RbGxiFgLq92sA4RL61gXGIdmsDoxBQt1cbGIdItzYwDlFvbWAUAur2agPjEGm3gXGAemsD4xDj1gZGIaBurzYwCvHGUA+IR4bq4WPdWxODffPa/98ZytHl1rPxJOgKXDoxaPTpI30UdM3Eg08aJRFw2Whz1CiJgMtGnbNGOUSAy8Z0K2MRcNloc9ooiXCXjTlulETAZcOuHPNGOUR0m405cJREwGajzYmjJAI2G3WOHOUQCT4bbY5OJhHw2ahzdjKJcJ+NOTyZQ2T4bLQ5PZlEuM/GHJ9MIuCz0eb8ZA5R4LNR5wBlEgGfjTYnKHMIJ0x7DcwTfkI8EuZ46g67Eab9njmL9Y8/fNkn+h+eKG9JnEUoi8nAeVjzPXneqQxtn4sL1+/6NXp799B6pC7YelwFQA/X9pBOR3J8tadwiHQrAOIQ7VYARCHqcSsA4hBpFwBxgHorAOIQ41YARCFQrXgVAHGIeisA4hBjFwBRAFQrXuXbHALJ8VXfyCH6rfuOQox4677jEMiOr/pGDtFv3XcMAq4e5Srf5hD51n3HIZAdX/WNFCKEW/cdh0B2fNU3coh2676jEPG4dd9xCGTHV30jh6i7+44CwB3wKt/mEOnWfcchkBxX6A2uHrv9jkJkZMcFeoOpR7/KtznEuHXfUYiC5LhCb0jZ7+47DoHsuEBvMPXYzXccAslxhd6Qst/NdxQC5oBFoTek7HNU6A2uHrv5jkLAHLBK9NbTrfmOQyA7LtEbzAGbRG8wB8wSvY16a77jEOPWfMcgYOuxm+84RN3Ndxxg3JrvKATcASX1BlePKqk3uHrs5jsKsfxmWXpDxj5I6g0Z+ySpN6Tss6TeYOpRJfUGU4+uqDfkw4ak3pCxD5J6Q8o+SeoNKfsiqTeYeuzmOwrxFt89IJ7iu3h8Fri/Va7/ruK7P57uyMf5mo/R3WKtp0t7Du8Wa5EI+2TLaYlAItrFWhwAvWiLtUhE2qxFIupmLRIxNmtxCIR3J2uRgLpZi0SMzVocAuHdYi0SUTZrkYh+sRYHQC/aYi0SUTZrkYi+WYtCeHS3WItE5M1aJKLtlmEOgehuxZwkIu+WYRLRdsswh0B0t2JOEpF2yzCJqLtlmEMgvEsKvXl4t2JOElGvlmESMHbLMIdAdLdiThJRdsswiRi7ZZhDILyLAr0hurtahklE3y3DHALhXVLozcO7Q6E3D++aQG8e3a2Yk0Tk3TJMItpuGeYQiO6KRG+I7qJEb7B+HxK9IbqrEr0hulsxJ4mou2WYRIzdMkwhPLrLCr15dCepNw/vJPXm4V1R6M3DO0W9Ibprknrz6E5Sbx7eSerNwztJvXl4p6g3j+4k9ebRnaTePLyT1JuHd5J68/BOUW+I7rKk3jy6k9TbW3T3HLU9RHfhoXDrfnoHg9/fa3QXfz4+yxOO/b78Z58it+1qyKfLfxCgx66GJBFpV0OSiHpVQ5IA1LOc1ZAcIqRdDUki6q6GJBFjV0NyiBivakgSUHY1JInouxqSQ6S4qyFJBFz7z2JvEtGvVmQOkGHafxZ7k4i8W5FJRN+tyByiwLX/LPYmEXm3IpMIuPafxd4coh67FZlEwLb/LPYmEW23InOIBtv+s9ibRKTdikwi6m5FJhGw7ZforcfdikwiYNuv0FsfuxOZQwy49kv0NsruRCYRcO1X6A1mPeMQ6A01vVcjMomAab9Cb6jpvTqRSQRc+xV6Q03v6kTmABGm/Qq9oaT36kQmEW13InOIBNd+hd5Q0nt1IpMIuPYr9AavnqsTmUNk2PYr9Iaa3qsTmUTAtl+hN9T0Xp3IHOJN5D6J1yeRGx9qf3+5iVwMS/+9iNzw8/7v9XcuePH344evMQ9bPtPc2WRtmfNGny74AdFM1uY5b5RDdNtVMeYY80ZJRILFzpw3SiKqLSo+b5QDjAOyds4bJRG2qaJkG/NGSUSFrJ3zRknEMFmb57xRCoHe5m5fHp83SiIKHHbmJGUSMTCNak5S5hAhQtfOScokwnZVfFkxSZlEdAjbOUmZQ8RgwnYOZ2URBeOo5iRlEtHhsTMnKXOIFDCOak5SJhEZHjsITlhAM11b5iRlDpEP6No5SZlE2LaKpxyTlElEg66dk5Q5RDlM17J3oiS0IAnUhgHuLSjUhr7m3hVqQ8BwFIXa4O4Zo0BtMPc0SStQG8w9S1WoDQPcTdIK1Ia+5nFI1Gbxgkkuhdp6gbmOQm29owVJobYRoGkVahvZNK1EbaNB1ArUhoDhGAq1wd0zVoXa0AeTk0Jt6IOph0Jt6INpTaA2tMGMrFAbIoYQFGqDuWfsCrWhDcY0rUBtaIOpkb0TKWIKlUBt6IAZkmpDsBAk1QZnzySpNnTAZEW1oQGmSqoNDTBdUm1ogBmSanvrGHyMGp6ii/zZKANtv6OLPjsGfxfRRTpfa7mIPqbIbcNt6DXKx/PlPSDq7i/jEPXY/WUkIu3+MhJRd38ZiRi7v4xD2I579ZeRiLL7y0jE2P1lHMJ23Ku/jESU3V9GIvruL+MQtuO2bp9uYy/DNtyBNtKDR5hqt1sebDvhEChhsvjONsODvHD7OwucMfSI/FahgmknLSiE7bf9OPtnSQTKOc/+WRLRLHA++2c5hG24KZz9syQiWeB89s+SiGqB89k/SyJMusezf5ZD2K6L++39sySiWuCs8BtKmCxaE/gNJUzlUPgNJUy1KfyG852eFX5DCdMRFH5DDVPoCr+hhslCNoHfUMNUosJvqGGqQ+E3nO/0qvAbiphMWvL8hhqmeCj8hhom+0fht35Y9CzxW7ftPyj81qsFzxK/Ddv9i8RvI8G/Q+G3US16lvhtDPh3CPyGEqaWFH7D+c44FH5DCdPRFH5DCVPMCr+hhClL+g01TEXSb6hhapJ+wwHPkPQbapgOSb+hhilK+g1FTFnSbyhiqpJ+QxFTk/QbDniGpN9QxBQk/YYqpqjoNxQxZUm/vZ/vPCAeI7Dy2cqSwj0Ca7+fIiYTUfM1z/m3D7FU226UT5f2GEtdbpQkIm03ShJRLzdKEjC2GyWHsFDqcqMkEXW7UZKIsd0oOQS6QdYJPgco242SRPTtRskh0A1yneBziLLdKElEv9woKQAiqcuNkkTk7UZJItp2o+QQGEx0neBziLzdKElE226UHAKDia4TfA6RthsliajbjZJEjO1GySEwmeg6wecQ9VZ/ySHGrf6SQmA0UVLozbtBDoHeEEnt+ksKgclEWaE37wYJCr0hktr1lxQCG24R6A2B1K6/5BDtVn9JISyQ2vWXHCLf6i85RNv1lxQA1Q9NojdUP2SJ3tAMEiR6Q/lDl+gN5Q9FojeLpHb9JYcYt/pLBoFIatdfcoh6q7/kEONWf0khUP7QFHpDJFUk9ebdIJJ6QyTVJfWGbpBDUW8IpKKk3hBIJUm9IZAqknpDINUk9ebdIIp6QzPIIak3xFFRUm/eDSKpNwRSRVJv74HUA+IxkKroGpkNPSuOSrc4yrbVv7nVP52z61Y9m8dLH7Ps/p7Wbvff5PUs5bTyjL/2W+w35PhYXgd9sFsgPz+mB8DYHZDMerSKXg2QFKDc+h8pQL+1PzIANIpe3Y8UIN+aHylAv/U+MgC0iV6tjxQg3zofKUC7NT4yAPSI4tnyvkcKkG5tjxSg3boeGQAaRK+mRwqQbj2PFKDulkdq/bh1PBIA7w29Gh4pQL31O1KAcWt3ZABoDF3djtT6cmt2pAD91uvIANAVerU6UoBy63SkAH03OjLr0RE6BBbzjtAqsJg3hCaBxWDnetkicoC8XRE5QNumiBQAXj9BYDFvBu0Ci70XsnwCHjf/1j5+749z17wEgEXi9XcrAL7vDv17bv9u5HC6xz99UI+h+zKP5wB9e8dTALdxOK3jOUDezvEcoG/jeArgJg7TN55bn7dtPAdo2zWeAriBw2kazwHg31DOXYECwL6hzl2BWe/mDeXcFSgAvBvquStQAFg3lHNXoABwbqjnrkAApnFDnbsCtR62DeXcFSgAXBvquSswADdtOCdhcAB4NpyDMDgAPBvOORgUwC0bzjEYHACODecUDA4Aw4ZzCAYFcL8GgcWmX4PAYtOuQWCx6dYgsNg0axBYbHo1CCw2vRp4FptODQKLvW/On4D4/fh4bM59PG3Ob7Nz4v+HOtPfenP+611tf+fN2kdwrjKOhw/uk8NhMr6qOCgAPMZXEQcFgMX4quFgAD5/c5VwUAA4jK8KDgoAg/FVwEEAsg/fXPUbFAD24qt8gwLAXXxVbzAAH725ijcoALzFV+0GBYC1+CrdYAA+d3NVblAAGIuvwg0KAF/xVbfBAHzo5lm2Qa2Hqfiq2qAA8BRfRWkMwAdurpo0CgBL8bMkjVoPQ/GV/aQAYw+soQA+bHPVozGAt4TsJ+CJ9XGi/sD6b/OIbMeNv1vWf+g2+PuGZUYYNUzifvqwnoKmkuIkbg6Q7VkIk7g5gBFGi5O4KQCKRnOYxM0Bsj0LcRI3B2hw15/ETQFQMlriJG4OkOCtP4mbAxhjjDCJmwKgYLTGSdwcwBgjhUncHKC+Mr6EIG4OMOCrP4mbAXixaI6TuDlAga2+Eze3fryOHidxUwAUitqNduLmAOVlO9wkbg7QX2VEJ25qPYpE8USDJTlAfg3U1IG4OUCHm/4kbgqAClE80agj5gAZXvpTf3IAmFILNObloV2gMa8OLQKNeXFoFGjMa0OHQGNeG1oFGnvbQB8Ajxuod8V8bqB3hzs0VP5eN9Dvi0X/rpunV/70WT/x9EE97YXG17N8ggOg8KfP6gkK4HU/YxZPcACU/fRZO8EBUPUzZukEBfCqn+6VE9x61Pz0WTjBAVDyM2bdBAXwip8+yyY4AAp+7JpRNcEBUO/TvWiCW49qnzFrJhjALPbps2SCA6DWZ8yKCQ6AUp8xCyYogFf6dC8H49ajzmfMajAOgDKfPovBKIBX+YxZC8YBUOTTZykYB0CRz5iVYBTAa3z6LATjACjxAdNG8qK9wmfMMjAK4AU+AovNAh+BxWZ9j8Bis7xHYLFZ3SOw2PtW+Al43Arj57Hhj8f7KI9isYvvFb+sWppwDp2N58TXz2Gzv9ofsYbR/n5qeA60g2NAxZEeP45PALrBm/EgZBYDCGgGt1coqZEA7wU3IoTMogBoBYe3bQscIKITvJt6COQ1RDSC20V3SHYKgD5we4WQyYtOaAO3V8iJvOiENnC76NbJi07eBW5M2J6/+B+AjCZwewWjdRLgPeAWmiFapABtJ/0pQEELuH2saZDX4EV+dtG1k19vTJ3J9gr2zHIAzBQN9gopkBeNoTO2yR+1kBddvfvbmJB9R+j99qnb5DU3b/02OdfJxwEDZ+xGG/2T327Mm7EbHdj1HW3f9gKlkl9uDJtpCo1h1kxWaAyTRINCY8NbvgUaw6SZItAYbJFMkvI0BlekOgQagymS6RqexnD4cCSBxnD4EA+BxnD4kJpAY3BEKlmgMRgitSDQGPyQehdoDIcPJkp5GsPpQ4wCjeH0wb5PPI3BEKlUgcbgh9SSQGPZq4V5GsteLCzQWPZqYYHGslcLCzT2LjE/AY8SMz1WkL3NE/iHS8zfskoMAvP6kB8+jEeB2c+9glkPfVnWXkEB7MZdkpcC2DfxkrwMAPrykrwUoKB9/twrKIDpy0vyMgDoy0vyUgDTl5fkpQCmLy/JywCgLy/JSwFMX16SlwJgbP3aKxiAj61fewUFMH15SV4KgKH1a69gAD6zfu0VFAAj69deQQEwsn7tFRQAtSRrr2AAPrB+7RUUwGtJ5l5BrUcpydorGIBPq197BQVAKYlCYz6rXqAxn1Sv0JgPqldozOfUCzTm+jIINOb6sgs05vqyCDTm+jIKNJZ9RL1AY64vq0Bjri+TQGOuLw+BxlxfNoHGXF9mgcZcXwaBxlxfdoHGXF8WgcZcX0aBxrKPphdozAVmFWjMBWYSaMwF5sHT2Lu+/AQ86sv8WAT5ZuWPnfl3pS+JGVV/35KYuofFP31gn4CxZ8VTgBr3qHgOUPbMZQ7Q98hlCtDCnhPPAco1cJlb3/e8ZQrQwx63zAHynrbMAdoetkwBxnGt4dbnPWqZA7Q9aZkBZAxWW/1rHCDtOcscoF5jlrn1Y09ZpgAYqrb61zhA3TOWOcDYI5YpACaqrf41DlD2gGUOMPZ8ZQqAeWqrf40DlD1dmQP0PVyZAmCa2pqtzAHyHq3MAfqerEwBStiDlTlAvuYqU+vf9txPwOOeWx9LUN8MrnM9K2j+QXvu/9HmgpRfx1VA8vDhfAIaYpdZQMKszxYEXwUkFCBZ6LIKSCiABcFXAQkFsCD4KiBhACUhdJkFJNR6Ey1XAQkFGIhczgISBmCipVwFJBSgWOSyCkgogAXBq4CEWd8sCL4KSChAscBlFZBQAAuCrwISBmCipVwFJBQgW+CyCkgoQEPgchaQMIBhQfBVQEIBsgUuq4CEAjQLXFYBCQGAailXAQkFgJ3+KiChAHDTXwUkDCDATH8VkFAAeOkLLAbZkiPPYq5ahsBiUC2tCiwG1TKSwGJQLeEQWAyqJTaexSBaLNDmWQyipQaBxSBaWhdYDKJlFIHFIFpC5FnMNcsQWAyaJVeBxd5FyyfgUbS0x7LfN09Y5Cv+oaLlt+6NCfEybH36PJ6Oii6/Vg7Qt10rBbBH/HJr5QBlm7VygH55tVLrU9hWrRwgb6dWDtC2USsFgF3JcvriAPmyaeXWt+3SSgHgVrJMWjlA2h6tHKBui1YKUI/t0MoB0jZo5QB1+7NygLHtWSkABscsd1YOULY5KwcY25uVAmBqzLJm5QBlO7NygL6NWSmA6b/ly8qttw2vKSyGgTFZYDGcFF2mrBwgb09WDtAuS1ZqPYbFRIHFoP4uQ1YO0LYfKwXApJgksBgOipYbK7e+bjNWDjC2FysFSGlbsXKAup1YOcDYRqwUABNiosBiOCe6bFg5QN8urBQA42GSwGI4J7o8WCnAm/77BDzqv/5Y6/7mZWk69B96UPSbtnaZlutX+vThw/gEjNdxpU8ZgGm5cKVPKUB5pSt9SgH6q1zpUwaAsp8rfUoB8quv9Cm1vr/sDpyHQAwAVT9hHQJRgIxO7fMQiAI0E/nrEIgBoOonzjXc+mQifx0CUYBmIj+ch0AMAMMr0joEogDplZcVKweoaNSeh0DU+mEifx0CMQDU/CwrVg5QTeSvQyAKMEzkh/MQiAGg6GdZsXKAYio/nIdAFKCbyl+HQAwAMyuWFSsHKLejbArQb0fZBABabh9lU4B8O8qmAO12lM0AMK6iCCzmVT/rKJta325H2QwAoyqqwGLQcvsomwLU21E2BdhnV9R6TKnIAot5zc91lE0Bxu0omwFgRMV1lE0Byj7Kptb321E2A8B8iiqwGKTcPspmAG9S7hPwKOXGR2kQVNGbK2n9DVJ5R1oI/C38F7EC98tLkX+t+ufvKOIibJ+vWPnzY/gEDJTPnrEytR7VsytWpgConl2xMgVA9eyKlQlAgrPkFStTAFTPnrEytR7VsytWZgBwlrxiZQqA6tkVK1MAVM+uWJkBII+6YmVqPapnV6xMAVA9u2JlBoA86hUrUwBUz65YmQKgenbFygwAedQrVqYAqJ5dsTIFQPXsipUZABKpV6xMAVA9u2JlCoDq2ZXxYwCYwr2mlXCAtEfNcYC6J81xgLHPLZj1yKNGgcWQR93nFhRg3M4tGADyqElhMeRRD4HFTHvvcwsGgMnbWWEx5FGDwmKmvfe5BQGA9r7OLaj1+XZuQQHa7dyCAZj03ucWFCDdzi0oQLudWzAA09773IICpNu5BQWot3MLCjBu5xYMANO2i8BinkiNAotBfO9zCwZg4nufW1CAcju3oAB9n1sw60u4nVtQgHI7t2AAd9fhB0D85VN8eznsp/h+cx22j3I2dG7BfNlnufSuW4Lvn3p2tB9XWTyMaN9ttyCVwy+f5+J/axEgcD5vtU0p74Lf3nOeoUO7ZW7hO7Kys+N8r09yYfU7PHxMz5m61eJLAZCpWy2+HMDYaHWfcoCGqiFv26LWI1O3uk85QNqGKxygbsMVDjC24QoFQKpudZ9ygLoNVzjA2IYrFACputV9ygHKNlzhAH0brlAApOpW9ykHKNtwhQP0bbjCADxVt7pPOUDefMcB2jZcoQBI1a3uUw6Qt+EKB2jbcIUCIFe3uk85QLoMV7j1dRuucICxDVcoAHJ1VaAxz9Ulnsa8Pe8QaMxTdU2gMU/VZYHGvD0vCDTmubou0Jjn6opAY5ALfXmxPwAe5UL8qM6DXHizq0bj1Xdy4SG/9lsNav9bsnp/JUNX4+4hebj4B0DZPSQcYOweEgpg+9vVQ8IBytVDwq230HMdglKAbqHnOgTlAPnV1yEoB7DQcx2CUgDb3uJ5CMqtz6+0DkE5gIm9dQjKAOyL92rrEJQDpD2PkgO0ax4ltd42t2seJQdIex4lB6h7HiUHGHseJQWIcc+j5AB1z6PkAGPPo6QAFgxf8yg5QNnzKDlA3/MoKUAOex4lByh7HiUH6HseJQWwaPiaR8kB8jWPklvf9jxKCmCxzzWPkgPkPY+SA7Q9j5ICtOOaR8mtT3seJQeoex4lBxh7HiUF6GnPo+QA9ZpHya0fex4lBRhxz6PkAGXPo+QAY8+jZAAwS77mUXKAsudRcoC+51FSgBD2PEoOkHdBGgfouyCNAtiaoGgxDA5IihbD3J2iaDFYk1wFaRwgXQVp3Pq2C9IoQD52QRoHSLsgjQPUXZDGAcZVkEatt8inK1rsrejgAfAYyKSPMlMPZN6M7M5pa499PKsetJ+5yT7/PtyDjTMASWcW9Fj1ovXKSZaZkwRiWYcc+fjfDhj4tQzp8ct3v+tTI95GUT18Bo+i8hpFRQHCHkXFrb+NouIAt1FUFCDeRlFxgD2Kilt/G0XFAW6jqChAuo2i4gA4AW1zogkHwAnoOVGPAmScgJ4T9TiA2wfNiSYcAEeg50Q9ClBwBHpO1OMAOAI9J+pxAByBnhP1KEDFEeg5UY8D4Az0nKjHAXAGurI4DKDhDPScqMcBcAZ6TtTjADgDPSfqUYCOM9Bzoh4HwBmoQmMdZ6AKjXWcgQo0NnAEqtDYwBGoQmMDR6ACjUFV5srTGETl3kYpAE5ABRqDqDQ9ydMYRnCELNAYRGUKAo1BLuQu0BhEZS0CjUFU9ijQGETlGAKNYQRHqAKNQVWmJNAYVGU5BBqDqqxNoDGoyp2MZgDFdvUg0BhGcIQu0Ni7rPwEPMrK/FHyCln5NoIDo2gvWfmQi55Z8beGo3I7MF8iEsj6Vw7LIQHTD7ZlXcf0eepbVKzGJVfXyo/8pt3AY5ngPFzVA8D4rOEa8TWnAGO74FAAiwsK3FFaIN9SKdsFhwP07YJDAWq8XHC49WW74HCAvl1wKEAL2wWHA+TtgsMB2uWCQ63vYbvgcIC8XXA4QNsuOBRgHNsFhwOk7YLDAep2wWEAOB64XHA4QNouOBygbhccDjC2Cw4FgHf5csHhAGW74HCAsV1wKAC8y4tAY+5dfrrgcOv7dsGhAOhhXC44HCBvFxwO0LcLDgVAE2PjWcwLo7LAYu5cHgQW88qoLrCYV0YVgcXcuTzyLOaVUUNgMa+MqgKLuXF5EljMjcsPgcW8MqoJLOaVUVlhMTiXB4XFUBnVFRZDZVRRWAzO5VFhMVRGDYXFUBlVFRaDdXkSWMytyxUx5pVRjWcxL4xStJg7lweBxbwwStFiXhilaDF3Lhe0mNdFKVrMC6MULebG5YoWc+NyRYt5YZSgxbwwStFi7luuaDEvjFK0mBdGKVrMfcsVLeaFUYoWe6ujfgA8Bn7lsYnxbTCOafkqBH5t1iivk4Pw44m8F0a12/nAzZL87dygnYHjeSaw3ChWSLgLsRx91k37b3sMDNEqg6DUD3Q/r/pBncNHos4DXWo9bCTKeaBLAWAjUc8DXQaAVpmjnAe6FAA2EvU80KUA8JEo54EuAcCw6xjqeaBLAeAjUc4DXQoAH4lyHugyAPTK2I2eB7oUAEYS5TzQpQAwkrCL9gNdBoBeGdsU5oEuBYCRRD0PdCkAjCTKeaBLAeAkUeeBLrMerTKhnAe6FABGEuU80KUAMJKo54EuA0CrjAVJ80CXAsBIovoabj18JMp5oMsA0CqDk1MvS6EA8JEoZ1kKBYCPhMBiOMjJmWcxnOPUILAYznFaF1gM5zijCCyGSeohCiyGc5w4FBbr8JFQWKzDR0JhsQ4fCYXFOuqaFRYbMJJQWGzASEJhsQEjCYHFcJBTi8BiOMnpUWAxnOTgilkWwyj1UAUWw0FOSgKL4SCnHAKL4SCnNoHFcJDTM89iGKV+BIHFMEo9dIHFcI5jTMazGM5xiqLFcI5TBS2GY5yuaDFMUj8ULYZjnKhoMRzjJEWLvav5T8Cjmq+PXZFvY4h6npYk/2fVfLjsTm79j6u+6EOGwn7QNT7OZD6v6eFMJm6/EA5QXhU+En4mQwH69guhANACaEZOOHqkAKYF4CNRB/sKfRuGUABogWUYwgHyNgzhAG0bhlCAFi7DEG593oYhHKBtwxAKYFrgMgzhAGkbhnCAug1DKMA4tmEIB0jbMIQD1G0YwgHGNgxhALDPuQxDOEDZhiEcYGzDEApgYuAyDOEAZRuGcIB+GYZQ600LXIYhHCBvwxAO0LdhCAUwMXAZhnCAfBmGcOvbNgyhAPnYhiEcIG3DEA7QtmEIBYAYKDyL4dTnMgzhAHUbhnCAsQ1DKECN2zCEA9RtGMIBxjYMoQAtbsMQDlC2YQgH6NswhAL0sA1DOEDZhiEcoG/DEAowwjYM4QB5G4ZwgHYZhjDrMYVmKGIMpz6XYQgHaNvonAKEYxudc4B0GZ1z6+s2OucAYxudU4CYttE5B6jb6JwDjMvonFqf4jY65wBlG51zgLGNzilAjtvonAOUbXTOAfo2OqcAJWyjcw6Qt9E5BXir9/sEPAaK/bEf/m12HgaL/gOOfeyl03Ed6/hveqsG/GmuCcV/5Pv6L78WRyKkGm5wmZ8u+TmkquGsqmUAFWVr8ayqpQAoWwtnVS0FQNkaGudRVcsAEFIZvcyqWgqAurV4VtVSANSthbOqlgEgpirxrKqlAKhbC2dVLQVA3Vo4q2oZAGKqGs+qWgqAurVwNgdQANStxWM2B1AA1K2FszmAAHhMlePZHEABULcWZnMAtR5la3ioWQBCKrvRszmAAqBsLZzNARQAdWtxNgcw6xFS4Yl2cqQAKFuLZ3MABUDZWjibAxgAQio80d4cQAFQtxbO5gAKgLo1gcY8puoCjXlMVQQaQ0wVokBjHlMNgcY8qKoCjSGoqkmgMQRV/RBozIOqJtCYB1VZoDEEVfbQ8TTmQVUXaMyDqiLQGIKqHhUaw5qh0BiCqirQWEfdmkJjA3VrCo0hpmoKjSGmyjyNoZIOZ0o0jXlM1QUa85iqCDSGmKpEgcY8phoCjXlQpagxlNIdihpDUBUVNeZBlaLGPKhS1BiiqqaoMY+qFDXmUZWixhBVRUWNeVSlqDGPqhQ1hqiqKWoMUdVQ1BiiqnH51X0CHqOq8dic/zbcM4QsVdOdZ2TLMmxZjD20SB03k7HvrybUdKuh+HybD4CKrk377TAEpADjVkPBAGwnqsm7xAYJKLcaCgrQbQ1OgQf5llDyd9VQUAD7ouNsPUfyLdlWtGsoGIBtRbuGggJktG3iK8G+Qts1FMR6e0rRtYmvYCMB+VZDQQGabb+4DeQL2E60SygoQLLdF4f3B/mOUPGHWpmayVewnWjXUFCAZNsv7gJ8TSlAvdVQUIBh2y8en8A90dF2ol1EQQGqbb8GKJl8Syj5u4ooGIDtRLuIggIU234FGsM5fwsCjeGcv3eBxpCUOopAY0hKxauglQHY1pWGQGNISpWroJUCNNt+BRqLKPo7BBpDUuq4ClopQHvFLNAYav6uglYKkF6lKzTW66tdBa0UYLxGVHjM1hyroJVab5v6VdBKAWxTTwKNISVVr4JWClBerQk0llDytwpamfUo+QsCiyElFa+CVgpge3oRWAw5qaqIMeSk2lXQSgFsT1fEGHJS4SpopQC2qStiDDmp3AQWQ06qKmIMOakeBBZLuZrEF1gMOamgiDHkpFIUWAw5qSyIMaSkahVYDCmprogxpKSOQ2AxpKSCosaQkkqZZzFkpEoQWAwZqaqIMWSkelFYzOKAQxFjSEldzUXMegsDkqLFkJHazUUUoN2aiwgAjvm7osWQktrNRRSg3ZqLGIAFAru5iAKkW3MRBai35iIKMG7NRQzAAoFD0WJISUVFiyEllRUthpRUUbQYUlJN0GI59VtzEQOwOOBQtBgyUlHRYshIZUWLISNVBC2GhFRTtNj7Mf8n4CkhVY5HW5+3aeNwXeDzUX+L/b0ye/x/NyvnezfJ+zScVV7gubKfT/uh/iv9oNhpr0HHD5/T41Z7DTqmAPU26JgD3AYdc4DboGMK0MIedMwBboOOOcBt0DEF6LdBxxzgNuiYA9wGHVOAcRt0zAH2oGNu/W3QMQPAXnsNOuYAt0HHHOA26JgD7EIjan24DTrmALdBxxzgNuiYAsTboGMOsAcdc+tvg44pQLoNOuYAt0HHHAD9aQKL2bP5qk1gsZzRnyawGLbaIwgshq02dIHFsNemIrDY2177AHjca8Onk8JP34+DtvfxG++1qwyvnXvfbXLc4377nUf0clz461PvnlNXR5qjxR4+iefUVYtztBgHMJmb0xwtxgGMDkKco8UYAHJXpac5WowDmMwtcY4W4wDGB7hbGC1GAYLp3BHnaDEOYDq34p7mQQJM5xqD+GgxCoDklX3VfLQYBzCh29IcLcYBbI0FKT5ajAIgeYUvMo5qOUB+xR59tBi3vr1ySXO0GAVA7irGOVqMA6RXsxvto8U4QH0Nu9GBXY/UVYpztBgHSBjZfvhoMQ5QXxlPNEaLcYCBHsw5WowCIHdlT7SPFuMABT2Yh48W4wADM9t5GvPcVRRoDILagjeexjx5VRUaQ/IqKTSG5NWh0BiSV02hMWSvskJjyF4FhcZMURsh8TTm2asi0Jhnr6JAY8hehSHQmGevqkBjnr1KPI158uoQaMyTV02gMU9eZYHGPHkVeBpD7ip1gcY8d1UEGvPcVRRoDIq6D4HGPHlVBRrz5FUSaMyTV4oa8+SVosY8e6WosTc3gwdAOh4Udfx0M4BEvc94NkUtmFL/LYoaRniI7THE0eeU1N2aAqXtzSh1zFKsNcMx/WH+QoCPc7QKpLhL8592WZePoD6NzuIq7/oU1317Iz98KA/SN2xvZA6QL29kbn3f3sgMYPqEnX58HCBvb2QO0LY3MgVwn7DTj48DpO2NzAHa9kamAO4TdrqKcoC0vZE5QN3eyBxgbG9kCuBGYaerKAeo2xuZA4ztjUwB3Chsuopy68v2RuYAfXsjUwA3CjtdRTlA2d7IHKBf3sjUevcJO11FOUDe3sgcoG1vZArgRmECi02jMJ7Fpk+YwmLuE6awmPuEKSzmPmEKi7lPmMJi7hOmsJj7hCks5j5hAotNnzCBxaZPmMBi0ydMYLFpFCaw2DQKE1hsGoUJLDaNwngWmz5hAotNozCBxaZRmMBi0yhMYLFpFMaz2PQJE1hsGoUJLDaNwgQWm0ZhAotNozCexd5z1Z+AR2WdP9u/fzq+G4cefutz4d9EWfsva+e6D93a0DG7DmQ+P4QHgHfMngcyFGDcjpUZQI+3Y2UKUG7HyhSg346VGQDCh+tYmQLk27EyBei3Y2UC4PHDdaxMAfLtWJkCtNuxMgNA/HAdK1OAdDtWpgBtHysz6xE+XMfKFCDdjpUpQL0dK1OAcTtWZgApXmu49fV2rEwBxu1YmQEgeriOlSlAuR0rU4C+j5WZ9YgehsBiHj1UgcUQPexjZQYAH4zrWJkC5NuxMgVot2NlBgAfjCCwmIcPXWAxxA/7WJkBwAcjKizWvWVWYDHED1VhMfhgrNHRHAAtswqLIX5oAovBBiMLLIbwoQWBxTx86AKLodblKAKLIXyIkWcxjx6GwGIePVSBxRA9tCSwGMIHj7BYFvPwofEshughKloM0UNWtJhHD4oWQ/jQFC2G8GEoWszDB0WLefigaDGED1nRYu+Z+U/AY/xQPhudfzrep5DXqvgM/y3xg0v9VVP68/zvqwN6JdTLe80oynHWP0dcPdTpxxk0LOOqBw2dt0vlw9U/ANp2qaQAKDpcLpUcIG+XSg7QLpdKZj1G+10ulRwgbZdKDlC3SyUHGNulkgKg6nC5VHKAul0qOcDYLpUUAFWHy6WSA5TtUskB+nappAAoO1wulRygbJdKDtC3SyUFQNnhcqnkAPlyqeTW4wzydKmkAKg6XC6VHCBvl0oO0LZLJQWox+VSya1P26WSA9TtUkkB2rFdKjlA2i6VHKBeLpXc+rFdKilAj9ulkgPU7VLJAcZ2qaQAI26XSg5QtkslB+jbpZIBwJDocqnkAMUCDYHFkLOPh8BimO2XmsBimO1XssBimO3XgsBiMCTqXWAxqO6j8CyGIe0xCiyG2X5pCCyG2X6lCiyG2X4tCSwGP6Jx8CwG0X0oWgwz2qOixTDbLytaDLP9iqLF3kX3J+BRdNfPZi6Ukhw30Y1Kod+n6EbVzhTd9v9/fPd/9WLz9TvXeL82fxe2K/85Dgf+sE4BHgVGXF6YD5/Uo8DIpxcmt97IYnlhcoCG6vBpIkcBLNQbywuTA2RUh7uJHLfeyGJ5YVIA0xd5eWFygPSqywuTAxhZLC9MDmBksbwwKYAJjLC8MDlARXH4NJHjAMYWywuTApjCqMsLkwNYBLC8MDmARQDLC5MCmMIIywuTA5RXWl6YHMAigOWFyQCgMOrywuQAGeXh00SOA1gIsLwwKYApjLC8MDmAhQDLC5MDWAgwBBqDwqiVpzFU6PYk0BgUxnEINAaFEZpAY1AYKfM0BoFRgkBjEBi1CzSGCt1eBBqDwjiiQGNQGGEINAaFcTmTU4C3soBPwKPCaI8tbG/DgFFa/PtUGN7Z/isKI/58/q5y7IHCx34vzy3imIO9xPjnR/OwPt3EOAWoNzFOAcZNjDMAzMG+xDgFKFuMU+vHTYwzAIzBvsQ4BSg3MU4B+k2MMwB7VNpKjFLrswm1lVKgAN2E2kopMIAWTKmtlAIFyGjjO1MKFKCZUlspBQbQD7TxnSkFCmBRzZUYpQDNlNpKKTCAcZhSWykFCpBMqa2UAgWoptRWSoECDFNqK6VAAHB4Oa7EKAWoptRWSoECYJgiz2I4u7xmKXIAzFIUWAyHl9csRQoQ4cUrsBga9UPhWQxnl9coRQqQbqMUOcBtlCIHuI1SpAB5j1Lk1t9GKXKA2yhFClBuoxQ5wG2UIgV4EzmfgEeR0x+7it5mpJbfaRLlMhSIn537kDBXW9H5c6iaWH5N3qDW4PPDeFiHLwpeEDUlFMC+KCCQmjIHSPii4C9QU0IB7IvS0GZYOwnAzE37i0pecz5QCz1Qxk4CMHLTNzvymi1kmD582CkogGk/tFb2Rl5zwchN6GL2RpvS6tVDjMfH5AGAkZv2F155wwBqRDG08TJYkAJg5CYerU5etEmtkvEhYatgAA0zN+fHRAIwc9OJnLxxzdSfe8wV8qI7Zm7i6R3kNfT8wvM2ErseMzc9B0BesymtUxKQFAB/MjzRqZLXPJrFEXbfauEoAA3ckbsBMEPKUSAwaCz0o9AEBo01TWxJAoPImnYPJIGhd9uDWZLA0LptCpEnMJghnWqdvGbTWLN2mCQwiKzWBAKDyBpFIDD0bp+pXu57jd5t349ZAoPIykUgMKis6cdCEhhU1vyQSAKDyhpNIDD0bp/xNHnj3lTWJ+BJZdXjscPkbcCgRZS/sRuS6iYIx8Dr4OlxomD2GZkHLK6frvETUDAk8/TK4AA+JBPX8fgpPgAwJPP0yqAA1YdkTq8MDoAhmadXBgfwIZnTK4MCNAzJPL0yOACGZJ5eGRygYzSQe2VQ67EHL68MDpAxGWh6ZXAA24SXVwYFwCZ8emVw69OrL68MDtCQ7zzcK4MBoEIwLq8MDpBMqJxeGRygYjDQ9MrgALYTL68MCoCdeHllcIC6ncs4wNjOZRQAW/FyLuMAZTuXcYC+ncsoALbiKNAYKgQv5zIO0LdzGQXAVpwEGsMJ/uVcxgHadi6jANiKs0BjOMG/nMs4QLucy6j1OMEvAo35CX4UaMxP8IdAY36CX3ka8wP8JNAYDvAv5zIOMLZzGQXAAX5WaKyX7VzGAfp2LqMAOMAvCo3hAD8qNIYD/CHQmB/gV4HG/AA/CTSGEsHLuYwC4ABfUWN+gJ8FGsMBflHUmB/gK2rMT/AVNeYn+Ioa8xN8RY35Cb6ixvwIX1BjOMFvihrzE3xFjfkJvqLGcIIfBTXmB/iKGnsrEXwAPEZd4bEv530AIVpy+bDLvQ7O9PRja0zw4TQNp3CPb+ABgOE0/YxwGIAPp1mfBAXAcBrPJlUSgOE07XymGIAPpzFAIZdjNE07nygKUPf0SQrgo2kMkBv5Cj6app+PFAXAaBqvlSDXYzRNO58oBuCjaQzQciYBGE3TzkeKAmA0DW5DI9+Sj6axa27kN9VH0/RTGFAAjKbpONUhr9lH0/RTGFAAjKbxjFInARhN005hwAB8Ng0enkh+Sj6bpp3CgAJgNo0BYuHeUvTZNP1M01AAzKbppzCgAJhNI5BY9Nk0AolFn00jkFj02TQCiUWfTUOTWPTJNAKJRZ9MI5BY9Mk0AolFn0wjkFj0yTQ8iUWfTCOQWPTJNAKJRZ9MI5BY9Mk0AolFn0zDk1j0yTQCidnbf9m7OaMbBmDSJhwCiWFAZbT7PKMbCmAbehZIDAMqqz3PM7qhAOnVukBi0cLSAeb26IYBdNvScaPpG9fTKw6FxLpt6fZEz+iGAoybJmUAFpZ2u9MzuqEAqFRVSGwM+Nmd0Q0BgM1/UrQYbP6zosVg81/tke4ksSaLSrsixZJFpZhqPaMbCmB7uqLF4PKf7EYHer1t6YoUQ41IBXN7koYBWFDa8UR7koYC2JauaDG4/Icu0BiKRJKixVAkUqJAYygSqYoWQ5FIrwKNweb/ULQYbP7jIdAYikRSE2gMRSJF0WIoEmlBoDEUiXRFi8Hm/ygCjcHmPypaDEUiaSg0ZoFAUdQYikSaosZQJWI3jacxiwMORYzB5T9mhcYsDsiKGkORSOk8jaFSpCliDJUiIwo0BpP/Ywg0BpP/qKgxVIpkRY2hVKQqagylIk1RYygVGYoag81/UNQYbP6josZQKpIVNYZSkaqoMZSKNEWNoVRkKGoMNv9SXgw2/0lRYygVkfJib6UiD4DHpGV87Gt+G1IZLNxWkpZ5JixXm89xcxa96mWPXT8C/59Vf4vfFnJ87DIOkOSXjvp83w8A2FuscJAC1JuQogDwt1jhIAOAJF85LWp9vekoCgB7i5XTIgARivzSURQA9hYrp0UB+k1HMQBI8iunRQHKTUdRANhbrJwWA4Akv3JaFCDfdBQFgL3FymkxAGjyS0dRANhbrJwWBWg3HcUAoMnPnBa1PN1UFAWoNxVFAeBusXJaDACK/JJRFKDeZBQFGDcZxQCgyJeMotaXm4yiAP0moxgABPkloyhAuckoCtBvMooB9HCTURQg32QUBWg3GcUARrjJKAqQbzKKArSbjCIAKBnbMooCpJuMogD1JqMYQDhuMooCpJuMogD1JqMoAEbjrWiQAcR4O2CkAOV2wEgBMBrvjAaZ9SnezhcpACbjCTSGirGqiDFUjPXE0xh6oQ9Fi8HIOTSBxuApl7JAYygYK4oYQ8FY7QKNoWKsK2IM3dBHFGgMTs5BEWMwlUtVoDGUjBVFjKFkrB0KjTVMxlNorKfbASMFwGQ8hcb6uB0wMoCB0XgKjY1yO2CkABiNJ9AYuqEPRY7BVS4qcgwlY/ngaQwVY0VRY6gYa4oaQ8XYUNQYuqEPQY3BUy4qagwFY1lRYygYK4oaQ8FYU9QYCsaGosZg5RwUNQZXuaioMVSMZUWNoWKsKmoMJWNNUWPvJWOfgMfsS/romkY35NvY8h4Vzxc1+RLqD/bZzCkvc5X/7S+3Vp2zxQdpmni26Cyr5rhmwITjV6Yn5rxdWR6u9gHQ0KQwbN3gAOhzX64sHCChScForiQSUC9XFmq9beKXKwsHSNuVhQPU7crCAcZ2ZaEAmNVzurJw68t2ZeEAY7uyUACM6lmuLBygbFcWDtC3KwsFwKie5crCAfJ2ZeEAfbuyMAAf1bNcWThA3q4sHKBtVxYKgFE9y5WFA6TtysIB2nZloQDxuFxZuPVpu7JwgLpdWTjA2K4sFACjepYrCweolysLt35sVxYKgFE9Q2AxH9VTBRbzUT1JYDGYMCxXFm592a4sHKBvVxYKgFE9QWAxH9XTBRbzUT1FYDEf1RMFFvNRPUNgMR/VUxUWw6iepLCYBXjtUFgMo3qawmIY1ZMVFsOonqCwGEb1dIXFMKun8Czmo3oULeajeobAYj6qR9FiPqonCSwGu6ssaDEf1aNoMR/Vo2gxH9WjaDEf1aNoMZ/VI2gxH9WjaDEf1aNoMR/Vo2gxH9WjaDEYMQRFi/moHkWL+ageRYu9x3efgBQm4Oc/fftP3/5y4gLCs5oxdKR8/dufbz8/vpCf6R8/dWOVf/uz/zf+95/8B//u9dzz7T796PjuP+eCY/3hf3z9l2//89vx9R+//cu/2k//q/28fP2vb/M1vvs1/9ne/v0C5l+L7xYHsqN+/5/H7Y/KO7zB8e6Or//+7cc/ffvnX+wzDcfXn/7b7SaZID+PpoNta8Ptutq6RR6qHo+3KWbbmI21ftc3Bf/3/wL0xWzTCmVuZHN0cmVhbQplbmRvYmoKMjA3IDAgb2JqCjIyODQ0CmVuZG9iagoyMDggMCBvYmoKWwo1NCAwIFIKNTUgMCBSCjU3IDAgUgo1OCAwIFIKNjAgMCBSCjYxIDAgUgo2MyAwIFIKNjQgMCBSCjY2IDAgUgo2NyAwIFIKNjkgMCBSCjcwIDAgUgo3MiAwIFIKNzMgMCBSCjc1IDAgUgo3NiAwIFIKNzggMCBSCjc5IDAgUgo4MSAwIFIKODIgMCBSCjg0IDAgUgo4NSAwIFIKODcgMCBSCjg4IDAgUgo5MCAwIFIKOTEgMCBSCjkzIDAgUgo5NCAwIFIKOTYgMCBSCjk3IDAgUgo5OSAwIFIKMTAwIDAgUgoxMDIgMCBSCjEwMyAwIFIKMTA1IDAgUgoxMDYgMCBSCjEwOCAwIFIKMTA5IDAgUgoxMTEgMCBSCjExMiAwIFIKMTE0IDAgUgoxMTUgMCBSCjExNyAwIFIKMTE4IDAgUgoxMjAgMCBSCjEyMSAwIFIKMTIzIDAgUgoxMjQgMCBSCjEyNiAwIFIKMTI3IDAgUgoxMjkgMCBSCjEzMCAwIFIKMTMyIDAgUgoxMzMgMCBSCjEzNSAwIFIKMTM2IDAgUgoxMzggMCBSCjEzOSAwIFIKMTQxIDAgUgoxNDIgMCBSCjE0NCAwIFIKMTQ1IDAgUgoxNDcgMCBSCjE0OCAwIFIKMTUwIDAgUgoxNTEgMCBSCjE1MyAwIFIKMTU0IDAgUgoxNTYgMCBSCjE1NyAwIFIKMTU5IDAgUgoxNjAgMCBSCjE2MiAwIFIKMTYzIDAgUgoxNjUgMCBSCjE2NiAwIFIKMTY4IDAgUgoxNjkgMCBSCjE3MSAwIFIKMTcyIDAgUgoxNzQgMCBSCjE3NSAwIFIKMTc3IDAgUgoxNzggMCBSCjE4MCAwIFIKMTgxIDAgUgoxODMgMCBSCjE4NCAwIFIKMTg2IDAgUgoxODcgMCBSCjE4OSAwIFIKMTkwIDAgUgoxOTIgMCBSCjE5MyAwIFIKMTk1IDAgUgoxOTYgMCBSCjE5OCAwIFIKMTk5IDAgUgoyMDEgMCBSCjIwMiAwIFIKMjA0IDAgUgoyMDUgMCBSCl0KZW5kb2JqCjIwOSAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Bbm5vdHMgMjA4IDAgUgogIC9Db250ZW50cyAyMDYgMCBSCj4+CmVuZG9iagoyMTAgMCBvYmoKPDwgL0xlbmd0aCAyMTEg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IFsgMCAwIDAgXQovQSAyNDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgNzA5LjAwNSA1MzkuOTk3IDcxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MiAwIFIgL1hZWiA3Mi4wIDU3OS45OTYgbnVsbF0KPj4KZW5kb2JqCjI0NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2OTcuMDA1IDI2Mi42NTUgNzA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQ1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgNjk3LjAwNSA1MzkuOTk3IDcwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MiAwIFIgL1hZWiA3Mi4wIDUxNS45OTQgbnVsbF0KPj4KZW5kb2JqCjI0NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2ODUuMDA1IDI4Mi44NDUgNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQ4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgNjg1LjAwNSA1MzkuOTk3IDY5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQ2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MiAwIFIgL1hZWiA3Mi4wIDQxNS45OTIgbnVsbF0KPj4KZW5kb2JqCjI1MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2NzMuMDA1IDI3OC45OSA2ODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyA2NzMuMDA1IDUzOS45OTcgNjgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjUyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUyIDAgUiAvWFlaIDcyLjAgMzUxLjk5IG51bGxdCj4+CmVuZG9iagoyNTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjYxLjAwNSAyOTUuNjA0IDY3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjUyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI1NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDY2MS4wMDUgNTM5Ljk5OCA2NzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTIgMCBSIC9YWVogNzIuMCAyODcuOTg4IG51bGxdCj4+CmVuZG9iagoyNTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjQ5LjAwNSAyMjQuNDc2IDY1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjU1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI1NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDY0OS4wMDUgNTM5Ljk5OCA2NTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTIgMCBSIC9YWVogNzIuMCAyMTEuOTg2IG51bGxdCj4+CmVuZG9iagoyNTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjM3LjAwNSAyNDEuMTUgNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTggMCBSCi9IIC9JCgo+PgplbmRvYmoKMjYwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjM3LjAwNSA1MzkuOTk4IDY0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjU4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI2MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MiAwIFIgL1hZWiA3Mi4wIDEzNS45ODQgbnVsbF0KPj4KZW5kb2JqCjI2MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MjUuMDA1IDI1NC4wNDkgNjM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjYzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgNjI1LjAwNSA1MzkuOTk3IDYzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjYxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI2NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTIgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMjY1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYxMy4wMDUgMzkxLjE2NyA2MjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjk4NyA2MTMuMDA1IDU0MC4zNDcgNjIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjY3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIxNSAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoyNjggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA2MDEuMDA1IDEyNS4yNzYgNjEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjY5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjAxLjAwNSA1MzkuOTk4IDYxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjY3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTUgMCBSIC9YWVogNzIuMCA3MDAuOCBudWxsXQo+PgplbmRvYmoKMjcxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU4OS4wMDUgMjE1LjIyNiA1OTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA1ODkuMDA1IDUzOS45OTggNTk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjczIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIxNSAwIFIgL1hZWiA3Mi4wIDQ4Ny42MDEgbnVsbF0KPj4KZW5kb2JqCjI3NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NzcuMDA1IDE5MS42NjQgNTg2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjc1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTc3LjAwNSA1MzkuOTk4IDU4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjczIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTUgMCBSIC9YWVogNzIuMCAxMjUuMjc0IG51bGxdCj4+CmVuZG9iagoyNzcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTY1LjAwNSAyNzEuODc2IDU3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjc2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc3IDU2NS4wMDUgNTM5Ljk5NyA1NzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjE4IDAgUiAvWFlaIDcyLjAgNjE1LjY0MiBudWxsXQo+PgplbmRvYmoKMjgwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU1My4wMDUgMjI3LjkxNSA1NjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA1NTMuMDA1IDUzOS45OTggNTYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjgyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIxOCAwIFIgL1hZWiA3Mi4wIDMyNy4yNjkgbnVsbF0KPj4KZW5kb2JqCjI4MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NDEuMDA1IDIwMi42MjcgNTUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjg0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTQxLjAwNSA1MzkuOTk4IDU1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjgyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI4NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTggMCBSIC9YWVogNzIuMCAxOTAuMDQgbnVsbF0KPj4KZW5kb2JqCjI4NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1MjkuMDA1IDIwNS42MTMgNTM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjg3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTI5LjAwNSA1MzkuOTk4IDUzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjg1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI4OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjQgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMjg5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNTE3LjAwNSAyNjEuNzAzIDUyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjg4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDUxNy4wMDUgNTM5Ljk5OCA1MjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI3IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjI5MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDUwNS4wMDUgMTMwLjEyOSA1MTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI5MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA1MDUuMDA1IDUzOS45OTggNTE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjk0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzNiAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoyOTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA0OTMuMDA1IDExOS4wNiA1MDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI5NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA0OTMuMDA1IDUzOS45OTggNTAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjk3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzNiAwIFIgL1hZWiA3Mi4wIDY3OC44IG51bGxdCj4+CmVuZG9iagoyOTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDgxLjAwNSAxNzEuOTIgNDkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjk5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDgxLjAwNSA1MzkuOTk4IDQ5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjk3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwMCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzYgMCBSIC9YWVogNzIuMCA2MjQuNCBudWxsXQo+PgplbmRvYmoKMzAxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ2OS4wMDUgMTY3LjgzMyA0NzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMwMCAwIFIKL0ggL0kKCj4+CmVuZG9iagozMDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA0NjkuMDA1IDUzOS45OTggNDc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzAzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzOSAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagozMDQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA0NTcuMDA1IDE1NC42NjUgNDY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzA1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDU3LjAwNSA1MzkuOTk4IDQ2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzAzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwNiAwIG9iago8PCAvTGVuZ3RoIDMwNyAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCniczZ3LjiXJcW3n9RX5Awr5+wEQDbC72cK9M0ENaCBwJEHSQNQFR/r9a9vj4ZaV0dTeAgQQRLGys2KdE3HixHYzc3v8+Vv8CPa/v8FffaaPf/7Ttz9fv4sfPX3k9vlXsbaPHI5RWwjR/ukkw/2X/QJ/4f//JhypfvzHIvzP4f77/FW4f/j3j3/89p/fwsffffunP9pv/8V+Xz/+69v5cjf4D9/+/ruTCX915+fPMMf0V3iGf/7Wy/meqR1x1jnnx0gfqR/pPKW//T9/Sh8//791MevwhO/Cnz5qCfjhP64f8Hrrn54f7G+cw5+/lRrOd8API360dL9wuV/40/esr69e+Pi3bz/++u1vf4n1I4aPX/91fz1z+hhHnTWEkPrHr3/6+Kff2U/2X+FH+zPtT/zBjgv5aB/2LzHbb/5gf4odhSMMjOUHvA+4ef7J9q/x9/avP9vfeK12/T3sT9+/xzFxXK9az5/T9XOwV50RrxrmD3/8+PX/7nOO0+5zto931PJy9i/Hl8Nec87WucP7EbsdXgZ1vH1aRy52fA7U6ST7MGu0j6QV8vXb0YYdXxr5+vN8DJJ9QZjjYz5CaviXwR1/f7vt60QdP4/c7PieufNJ6ai4vbVw55Pq0XF77U2448cxesM3kXv9nA777O0blLjXz/VIuL+5vD1cL8ePI+P+xjqp40s8asXn3xt3fDl6wuc/ufMp/Ri4vy1w51PjEXB/S+LOp5Yj4f6mkrnj+1EgIXVwr99MoO35HaNzz1fLR8f9TdzH09ph33wTn8h9nXs4wuDVKvVs604LMU7ucns7ShLkqk87yC53cJ/+SEfH3Y2Ju9xRD3sSebUa84j29I5euadrpiN1Qa1mPYrd3Vi405njaJEXqxzi0e3hjaFTr29rxDErL1Y5jCMmXqxyjIdd8hzL+GCOL0dpvFjl2I9mD+9omfr65GRrdeDFKqd82KFmEkTues26ioUXq2w2YoY4z8pdb85HGbxY5WyLdeXFKmdbrBMvVnabDlwsKVa52FrdeLHKxdZqwbTK1dbqwItVrvVogm2Vq63VhRar3GypjrxY2UN4RMG0ys2W6sqLVe62VAumVe7laJMWq9xtpRYsqzxspc6CWA1bqQXLKo9+ZMGyymbI1yKI1bSVWrCs8mzHGLxYmdtyBMGyKmbJp8SLlVkxRxYsq2KWfG28WJVoa7VgWZVoa7VgWRWz5INgWRWz5BNvWZkVcxTBsipmyFfBsirZ1mrBsirZ1mrBsipmyAfesipmxyfBsipmxxfBsipmxzfBsio1HF2wrEq1pZq3rEqLZjk0E5Pydrk5flnZzZO1w4o9jiZvLjQR8X87NGEr0P9yaMJeFZ97HuerrmN/frnEaPrUqp3w6OPt5F8AE6hkB7VZSWDa8m8H1fj68bwGG2Kzg3KaJNBgAdgH0yMJmEjhYymDu+hkKmU2gH2egbvoZDI1Cm5nIi8aOhXXQeRFm1DFYQeZPJBANUMA96FnErCvPO40e0amVQ2PSH9/Dl6AAlvAvqCFfQdTK9zo3Mhrhl6dYTrymk2wcifvsYlVLXh0YucAqBXuccuFBLIZA3ZQqeQXu/YDn+ZMjfxit2DmAB4d8g1aNnOgmPkTWKCZPWBvYJ8sCUwzCOwdaiZvQzf3IggKhuiDmQR4NMlr6NNsAkXBRoJVYKpbyYse1cwCOygW8os9htkFioLNaIaBfay9k8/arGYZKAo2B2wDE7HG3TjEIcxe4RUMgQizDmyxm9w15NDNPOAVLMdg5oGgYAhFRDzRIXH6gliE3WxewRCMKPZEm05yIoNoREvkHUjt6HaPYy7k6Sdby5ugYIhFRCj27OTpZ1vLg6BgiEaUzisYohGtCAqWiy3lUVCwXMYxh6BgiEhExQZDSCInQcEQkyiKDZZh+TZBwXKztTwLCoa4RFBsMAQmYhcUDJGJrNhgiE3UqCjYCEdTbLA8bEGvioINW9AFGwzhiajYYIhP5KYomNn/VbHBstn/PQgKVsw9GqQNhvBEKIKCIT6RFBsMAYo8BAVDhKIqNliJA5tdtIKVFI+h2GAIUgTFBkOUIik2GMIURbHBEKeoig1Wsi3lig1WSsCeF69giFUExQZDsCIpNhiiFUWxwRCuqIoN9ilg8QK8RSxy2u/hIxY/u4jFLErA4vvciFTOn/O8AhnXK8Ro/9Z+sNVp5UzYT+ZI/e4KVNTrXbr9qVdwI16//+o85+1tv1zPC9C3t00B9mE+3jYH5O1tc0B7vG3u+Lm9bQqwgx5vmwPa9rY5YG5vmwLMFoO3zR1bt7fNAWN72xRQ4/a2OaBub5sDxuNtU8fb4/x42xxQtrfNAX172xTQw/a2OaBsb5sD+va2KcCssMfb5oC8vW0OaNvb5oC5vW0KMDPs8bY5oG1vmwPm9rYZIJsZ9njbHFAfb5s7fmxvmwLMFHu8bQ6o29vmgLG9bQowWwzeNnds2d42B/TtbVOAmWGPt80BZXvbHNAfb5s63qywx9vmgLy9bQ5o29umALPCHm+bA/L2tjmgbW+bA+b2timgpe1tc0Db3jYHzO1tU0BP29vmgLq9bQ4Y29umgBG3t80B9fG2uePH9rYpYMbtbXNA2d42B/TtbTMAEggGaYOZi7e9bQ7o29umgBi2t80BeXvbHNAeb5s7fm5vmwLM8g+KDVbM8k+KDVbM9C+KDVZwkGKDlVy3t80BY3vbFGCmf1BssGL2f1JssGL2f1FsMDP790EcUJBnyivYJ/f8BXhzz0t5dc9XvcPjnguFDt8753d2wTttf8wtty/y767f/GT/an8yiF/ezMyA3f5wepkv5/7quyM/aikcB2C3P5xeJgfMo3JHJjN57fYsH5MDqq3D89Q3Dpi2Ds/Tx6QA+5rEPk994wBs84elb9zx2OXHfU/kNRds84dT3zgA2/xBOCV7cu27euobBdiTG+c8c1I4wOxe3GjoGwdgrz+c+kYBLdg6PE994wDs9YdT3zigH+ci0MknrWOvP5wHcQA2+8OpbxzQjjMXsZIX3bHZH04LjQKGGb7zjNtxx2OvP5wWGgdMW4znaaFRwMRev6Jf0+xee6KXhcYB2OunDsWW+kzhNNA4wCzeIQgYnPYzO7hzZ4/s/pIEAcOeuqIW2FLv9iwvA40CEnb5BQGD445v6DLQOMDM3i4IGFL8L9+JvIacjxYFAcO+ep+CgGFf/ayYIwUMnvsyIlgBg+d+qjwpYMj0L10QMGystyIIGDbWRxAEDBvrcwgCBs/93njgjsdWvyBg2FcvQxAw7Ks3xQDDvvpIgoBl9ikY2OFX1GvYMq6YX9hOr1FRrxmOpphf2E8fgvkFfz1EQb3gr0fF/ELG/1keQ6oX9tSrYn5hT/16LMlriNiKEtQLTntQzC947Ukxv5D3nxXzC5vqVTG/sKneFfMLm+pDMb/gtQfF/ILXnhTzC/n/WTC/sKdeFfMLe+pdMb+wpz4V8wtOe1DMr09O+wvw5rTX9u60+z11MzTL/9xtj3+4fr7c9GQvGdtcL/j77732cG2iYzMdb7U20n++jqzhv2tegK3phtPLdsDLpb16ub3jrMLgAPNyZzltMhJoR4z2RRmFPCXsTcNVb5U8pWJ2fTWgmO3NAfVocB3MIyABEwQYoi2T72Bu7oQ9Uyr5DmbORAR4kn0zOGAc2W7zMAGhjrdno1zPKwkU7AfZMYW8ZvNyB250zeQpYYN62DWPTl6zmTMRNzp28vhuFpm9QY2ZA7A/bYpp3j355R5m3F92Kwk0bAfZ8YO8ZjNr8DjPTj4MZtVEe6BjTOQ1z3aYFWdPTySveU6zzOyae+Vuw9qexgNtKzYJmG1fBRXLZtaY1tpKMbgv99qfnoKKYX86242OuZEXHcdRs6Bi2J/uJt0m+ORFm687uqBi2cyaUAQVwyZ1sid6mE1NAmblD0HFsEldK69i2KTuSVCxtUk9BRXLZtbYB8SrGDapUxZUDJvUJfAqhj3q2gUVwx51L4KKwdOdUVCxtUc9BBXDHnWqvIphi7okQcXWFvUUVAxb1L0pKmYu78yKig1b0hVbDHvUqSsqNm1NV2wx7FG3qKgY9qgVWww+76yCimGjOiq22NqoVmwxbFSXJqgYNqqbYovB5x2CLQaXdyq2GDaqo2KLYaM6K7bY2qhWbDFsVDfBFoPHOxRbbO1TK7YY9qmjYothnzorthj2qatgi2Gbuim2GDzeodhip8e7giGvl/Dm8bbx7vH+4jzeiEY8/3OXN+QnVbye7F31vv71+6uI5vyUfvUQezm9F2CYb3K1uqAA+5xGvLqIcUAx3+RqdsEBw3yTq9sFBfRozgkaLgTyHcz7KVdzHu54u4dnuLhzwHCdDzlgtz7kjne9DylguuaHHOC6H3KAa3/IAa7/IQOgR8LTAJEDXAdEDnAtECkguh6IHOCaIHKA64JIAcm1QeQA1weRA1wjRArIrhMiB7hWiBzgeiFSQHHNEDnAdUPkANcOkQIq+iEKMoZOCXdDRO541xGRAppricgBriciB7imiBywuyJSx3fXFpEDXF9EDnCNESlguM6IHLBbI3LHu96IFDBdc0QOcN0ROcC1R2QAJHU8/RE5wDVI5ADXIZEComuRyAGuRyIHuCaJFJBcl0QOcG0SOcD1SeQA1yiRAvLulMgd71olcoDrlUgBxTVL5ADXLZEDdrtE6vjq+iVygGuYyAGuYyIFNNcykQN2z0TueNc0kQK665rIAa5tIge4vokUMFzjRA5wnRM5wLVOpIDpeidygGueyAGueyIHuPaJDIBmCV2xxUpwDRQ5wHVQpIC4Wyhyx7seihzgmihSQHJdFDnAtVHkgN1HkTo+u0aKHOA6KXKAa6VIAcX1UuSA3UyRO96WdMUWQ25HUmwx9Esoii32KdL1ArxFuqBjL5EuhKBcpCtqcS7kZa9sDPR7/MmO6Hcmx90MIbluj+vvr5GZnVn4co4vx7vMQg5AE6FwlnZQwHCZhRyAJkL4DNGOlAIGd5xZ9fEu7OAAl1nIAd0MpauwgwEwguPJLOSAnVnIHY/WQeEs7KCA6DILOQC9g4JwStFlFnIAmlxchR0UkFxmIQegycU8m41yABoIhbPZKAVkl1nIAWggFM5moxzgMgspoKDTxeS1ArlNT2YhB6DTxTzbn1BA3ZmF3PEus5ADXGYhBTSXWcgBLrOQA9BAiDu0o3VQOFOjOQA9LgQBQ+1Ovws7OAA9LhQBM4M+Kmox0OLiSo3mgHmUu7CDAiZaXFyp0RyAFheKgM1xXMdw14C0phgFAUNaU7oLOzgAPS6u1GgKiDCSBAFDBU+/Czs4oB/zLuygADPo413YwQFodCEIGEp4yl3YQQEZnS54AUMFz1DMLwR75hAEDGlNUTG/kNaUkyBgqOAhP/9iC3kX9AthnqEYYEhoCndpBwfMXVlLAS09lbXc8WhwIegXSneaYoAhzDOqoF9IaAqKAYaEpsuyIK9hxF1ZywFlV9ZyQN+VtRSA2XuKAYaEpqeylgP6rqxlACQ0PZW1HJB3ZS0HtF1ZywHzUExC5DMFxQBDPlNSDDAkNBXFAEMNT1UMMNTwdPIGpLEraykAI/gUAwy5TEkxwJDLVBQDDNU7iruG6p2uGGCI8EzFAEMuU1QMMOQyJcUA+xTheQHeIjzzvSNmXqtLuCI8CKP+dozn+v0dq0GtTfztiE+6pnSgRmflNt0NML/GO0y/Ud1ZZ387zbcAiXmr48z9ogB0KELVGTJYOaBAmex8O/sOpt9rrsmMFIBIyUBPEVQTcYDp97WQkoDpt131qiaiAGR/4ulGBisHmH73cVYTcYDpN+40Mlg5wNwxfJmQwUoB6FOEO41qIg4wAcedRgYrB0wI1FrbOWD1xDltXBIwAW8G9EieEvI/caeRwkoByP/Enc41k0CFQtl9mOw7mIwjroocVgpAAugKFLPHm4xfhaQk0FH6f6awUoCJbExjpbByxxdU/p8prBxg3lgTZAzxkpYFGUO8ZOA+IxGfA8wd64qM2eqDT3Ql4nOAuWNRkbHRUPp/JuJzgHllVZExO2jYE70S8TnAlsmpyNiciNTzMoaASbYneiXic0BFpJ6XMQRMmj1ASMSnjo/mlRVBxVAGBjtgJeJzwDjiEFQM8ZIM6UYiPgfYqo4nOnLfJIRL2hREDOESexLORHwOKEfIgoqhCiwFQcUQL8mdVzGES2oRVAzhkq4YY4iaDMUYQxVYqIKKIWqSFGMMURNUvdAqhqhJVYwxhE16FlQMYZOpGGOoAwtdUDGETZJijCFsUhRjDGGTOhQVG7aoK8YYwiYzCSpmjkBQbDFETexkBBUzR6AothiiJi0IKoaoSe+8iiFoMhVTDFVgMQoqhqhJUmwxRE2KYoshatIEWwxBk67YYgiaTMUWQxVYVGwxhE6yYoshdFIUWwyhk6bYYgidDMUWQ+xkKrYYysCiYoshdpIVWwyxk6LYYp86n7wAb7GTGN77la6OnXfwxM585begaUkOK4qCsBS2W378VOP1846ZoOvoE1+5p5n+Puz6rz+4+MlTKfaMDcEr/X7/wemsU0r/TQTnerfVcuVzJ9Srl8r6+XqHF7MI1YP2CZp3/vrRvBAoH7TXru39w3whUD/YTIPMQ+UIDOrs2I2ZlSVQQmjvUUZjiWE2LYKHib1ye8Ti6PZhdvbKMazTbItZGnvlGNmJLjgjsNdRA1J1TYtmZwnzJLHXVTJ75Zjaac/Z6OxlYGrnFXxnCfMl7ZZHW09Yopl1axfeA3vhmNxpj0UM7LfK7LAxLn0hiWb2rV14G4UlJlJ2TfY6e1bDVh/sRufIXjimd9pTPloYLDHMxj23yUgC8zvtlsc02SvHAE+E7+tgrxwTPNFg0exEjigY4RkVfUNlfh2KvqE0v1dF32CVzaTom5kySN8V9K1gkGdT9K1gkmdW9A0F+i0o+oYK/d4VfYNxNouibwUjPaOibyU35PHy+lYw07Mq+oYy/ZYUfUOdfp+KvsFCm03Qt4K5nlnRt4LBnkHRN9hoc/wFJcn5O8Ie7fjSns63poso4oGhk6+NK5wSWr+H+t2LIXxw54y/veyX861I0brKkCmg2Y1FFks0l4wD6irgM/mOJIAULbxDIq8BidYoDpiFvAaED1AF0qF5FDB2AR8FjGWph1WGzAFlF/BxAFK0rjJkCkDKNapAcmeBchbwmT9NAkjROje0OSAigIA0ipHIL1NE0jXudSss0J4SPg5ACOFuqEASeRfxkYQddLVUIAGka+EqyG94RN417nag3wKJ16gGGYO9CsQR7kI+jkAg4W6rQBJ1l/KRBJK2FEWLiCXc1XwkUTGJ8WytQBJj1/NxBMIJd0EfSSBz6+quQBJ9l/RxREPuliJs6LHyFPWRBLK3FGkz62eX9ZFExmDGs8cCSbRd2EcSc1f2ccRADtfVZoEk2lPbRwJI4pLkDZGmIckbsrKrIm/Iyr7L+ygihYT5jGfPGJJAOtfVNIYkxi7x4whkZgdF3xJSsyWDDaNyp2SxJSRnR0XfUiqY0yjoW0J6dlX0LSE/Oyn6lszR6VPRN3QlnpLdlpCjLRluCUnakuVmz+tuhEUSc3fC4gika0dF39Cb+OmFRRJzN8PiCGRs3w0YSKI+7bBIYGB041m8zBFI2pbMN/RhCXcTBpIYuycWRyBv+2rDQAIF4xvPCmaS6LsrFkcgc/vuxEASZffFIol+xKsXAwVk5G5L5ltG8vbdjYEk2m6NRRJz98biCCRw3w0ZSKLt7lgkMTHO8WzJwBHI4ZbMN+yY9LspA0mM3SGLI5DMfbdlIIm6e2SRxNhNsjjCHInaFXnDjklXzDdsmDx9sjjC/IggmW8ZOd1VkTdsmBTJfsOOyd0riwTybpZFEm13y+IIcyOedlkkkcV4G3ZM7oZZJDB3xyyOGGm3zCKJuntmkcTcTbM4wtyIp2sWSVQx6oYNk6dvFkVgw0SLu2HD5OmcRRJjt87iCPMjnt5ZJFF28yyS6Lt7FkeksNtnkUTWgm/F3IgoWW/F3Agt+Ib9kipZb9gvaZL1hg2ToVhv6N0SJOvNRESMvmEzwwxRe5v4G8SP9qx9v6OAHJL00roFiRm7vYot4CuBBHtE5QdzUv2om6d85tOx8SqyiV9e5TfatHwfUWsuSvR2hl9jcNNFiSiiJhcl4ojqokQcMVyUiCJaclEijqg7SsQBw0WJKKJHFyXiiLKjRBzQXZSIIkZ0USKOKC5KxBHdRYkoAjPsnigRR2QXJeKI5qJEDIGqrh0l4ojsokQc0VyUiCOmixJRREwuSsQR1UWJOGK6KBFFYJzdY2dwhGuXThKuXzpHZNcwnSRcx3SScC3TOaK4nukksZumk4Drms4R1bVNJ4ndN50EXON0jmhhB4k4ILsgEUe41ukkMV2QiCK6a55OEm0HiTjAdU/niJFckIgjXP90knAN1DliJhck4gjXQp0khgsSMQQ6Iu8gEUcUFyTiCNdGnSNidEEijnCN1EnCdVLniBRckIgjdi91EnDN1Dkiu27qJOHaqZOE66dOEruhOgcU11GdJFxLdZJwPdU5orqm6iSxu6qTgGurzhHN9VUnCddYnSRcZ3WO6K61Okm43uok4Zqrc8Rw3dVJwrVXJwnXX50jpmuwThKuwzpJuBbrJOF6rFMEOiZPxXhDVdgOEnGEa7POEdH1WScJ12idJHandQ5IrtU6Sbhe6yThmq1zRHbd1klit1snAddvnSOKa7hOEq7jOkm4lusc8SkC9xtRtdcIXPnaKScmH4GzF1sxt9R++IhnMVe+CrE+//sfwpcyqXtsFyJy8fsaMnvHPfz27Ty+xh7sSzeuZr0sMZ/xtxyQk7lK+ey7QxJ1D8AlibEn4HIE+jlhvB5a75BE2TNwSWKYr3SN8uYI9HS6p+CSRDFn6RrmTRJ9z8HlCHNde7jGeZNE3pNwSaLvUbgc0YM5S9dEb5LIexguSTRzls4Oeywx9zxcjjDndWBQKvrwkETbE3FJYpqzlM9OPBxhzmtBUB+teEii7qm4JDHMWSqrGQ8FJPNdn7G4JFHNWVL0DZmE92BcDjDXtSRF35BI+IzGJYm+Z+NyhLmuMyv6hkTCZzouSXRbIhV9QyLhMx+XJLJ5S4q+IZHwmZBLEtO8JUXfkEj4zMglibaH5JLENG9J0TckEj5jcknClv+g6FvCFlhX9A2JhM+oXJKoe1YuSYw9LJcjzHu9p+WSQNnjckmi73m5HDHiHphLEmVPzCWJ/ozM5QBsgd0zc0ki76G5JGGrv2S/IZMwjmv4N0nY6i/Zb8gkrOka/00SmLmg6FuOGLpwDQAnCUxdUPQNmYQpXCPAOQJbYJL9hkzCKtlvyCTs8ZoCzhHYApPsN2QShnrOAScBzF5Q5A2JhHkq8oZEwiqZb8gk7FmRN7RemEGQNyQSBsl6QyKhrYOCvCGRsEjmGzIJ61DkDZmEXTHf0HlhJkXekEgYJPMNiYRJMt+QSViyJG8D8xgkecMeWJfkbdjiL5lvyCSMUZI37IFJ5hsyCUtV5A2ZhE0y35BJ2CXzDa0XzOkQ5A2ZhFEy35BJaMsaL29IJCyS9YZEwiZZb0gkHJL1hs4LU7LekEkYFesNiYRZst6QSFgk6w2JhFr0DZ0XhmS9IZNQir59DmO+Eb8Vxqxfm1ZF3+hg2ufzZADezbrL9fOnA2L43AsqXOHLn95e6aWZ1KeDPqcsvnWS+hIWRQHi3rp/ua6XIEDbw89JYrqte4qIaY8/J4nqtu45YuwB6ByRotu654i6R6CTxHBb9xRhlt/euueIsqegk0TfW/cUUDDk6k5M4ojitu45AmOursQkCqjB7dxzRMZBV+IlRzS3dc8R023dU0TLbuueI3w/FY6Ye+ueAnpyW/ccUd3WPUcMt3VPESO5rXuOqG7rniN8VxWKmNFt3XOE76vCEd1t3TMEsp/21j1HFLd1zxHdbd1TRAxu654jstu65wjXXIUCUnBb9xzhm6twRHNb9xwx3dY9ReS0t+45oLmte47w3VUooiS3dc8RvrsKR4y9dU8B1TdX4Yjqtu45wjdXoYjmm6twRNnj0knCN1ehiB72wHSS8M1VOKLvkekcMXxzFY7Ie2g6SfjmKhzhm6tQxMx7bjpJuOYqHDD35HSKQPJTlaw3zIt/ZqeThO+uQhExPdPTSaDu8ekk4ZurUESKe4A6SfjmKhzRnxHqHJB9bxWOKHuIOkn43ioUUXxvFY5AbxVF3hA1mJL1doYN7maYb8RvhQ3aew9rV3+Y/1Ll4JejPjeOjmE3q777K346Pt9RCHRd/AVy8N05rho+zHrH0Oq3s/3yWawaPkwPx9Rqkqjw2s6piSSBeXT1nFvNESjiuw8iCYyku8askkRHEsE5OZEjsIOJ+Y+YXU0SmEpXhJNCEV+p5/BEjsAOZrSDamHfA0V8uOUYn0gSDW4bIlvkha8ivkTe7VW/NzFXExFPjmhIHzhnKJLERPoAWnOS33OEsAbuNqYokkRFK8w1RpEEJhw2e5QSe+HYu8TdxiBFkqhw2IJwVijfq+UcpcgR2LtMuB2TveUo38MtxzRYkhhIHxCkbZXvZUXaEMKqQZG2Vb/XFWlb9XtFkbZVvxcVaVsFfEORtlXAZ0/4mgpLEmZbJ0HaVgHfVKRtFfDhlmMwLEdg9zIr0oYCvmRP+RoNSxLTXDb2bqN4z+72mg5LEmZWR0naULyHJxzzYTkCxXtVkjZsXCZF2lC7N8s5IpYiVu1eU6Rt1e6Zpq8hsSRha35QpG3V7tkDHjHnmiRszS+KtK3aPYj68r0oArV7eMDXbhxHZDQ5EKRtFe/ZA76GXXMEivckq20V79k9X+OuScJWfslqQ/zK3DVB2lb1nmK1reI9yWpbxXtRkbZVvCdZbat4ryrStqr3WKttFe5NRdpW4Z5kta3CvaxIGwr3smS1rcI9xWpbdXtFkjbU7UlW26rbG5K0oW5PstpW3V6SpA11e5LVtur2miRtqNvLirRhmFuQrLZVuNcVaVuFe5LVtgr3oiJtq3BPstpW4Z5kta3KPcVqW4V7ktW2Cvckq20V7klWG2JXXbLaVuUea7Wtoj3JaltFe5LVtor2JKvtc7bLG4FA048vYav+tcXW57EeyYet/Gz6ED4V561JbPF76p5Sf5M4ALbi1xI+1DskzMaZryf1NfCAcodnFgtHTEQDTaKQxUcRKHd4hrFwRHPDWDhi2hqD4Ubk8Sh2KPeoKY6otsTgw8/sOSFW+AyIoQgUO2CsWsfayhEVHXSuUVMcMdBBZ84S3r+4r7HChrFqvbDvgWqHZ5QeR4xjfbVzZ68cscJnlB5HFFti8OBF9qxQ7fCM0qMIBAtxzxsWV46wh/wZpccRHU105poVxgArVoi5ai2Rb4GAYX4m6XGEHYRbnip54QgY9meUHkXElYnHq1uKKxFPUDcEDFNU1G0FDIeibggY1qqoGwKGPfHqtsKFU1G3hFKHpqgbwoUpK+qGcGEJirqtcGFX1A3hwl4UdUO4cEZF3Va4cCjqhnBhegbpUQSKHZKibitc+AzS4wgk4inqhnjhfAbpUURHIp6ibite+OwdcsRKxLsG6VEEqh2iJG9jZeKdg/Q4AIl4krqh2OEZpMcRSMST5A3FDvcgPQZAzLBJthtihkOy3VbMsN+DQikCtQ6S9YaYYY73oFCOWDPOBH1DzNDcpXAOCuUI5OEp+rZihvMeFEoRObhByByR3SBkjmhuEDJHTDcImSJKcoOQOaK5QcgcMd0gZIqoyQ1C5ojqBiFzxHCDkCmiRTcImSPqHoTMAcMNQqYIBA67om8IHFbJfEPk8BmETAEjuEHIHFHcIGSO6G4QMkUgcCjZbwgc7kHIHNHcIGSOmG4QMkOswKFkvyFwuAchc8R0g5ApAoFDyX5D4LBL9hsCh1Oy31bgULLfEDlMkv2GyGGR7DdEDptkv63IoWS/IXI4JfsN4cMo2W8rfKjYb4geFsl++xw9fCN+K3o4vrYHS798ih6mcyhwQOuu3+86uPC0AFt10TjcV8Y9HNdmH7MPcGRDRdnLOb2GAvswoiAnmSJsEZ8V7cpmZomGXimIdbKAefAzma4h5YcibA0vzYiOzSOOqGYVG1Ebe1a2hg+7avOe2LPCeOluF97fvyGvocBYDKiZfouBTilIxWQv3NbwgjseO3vhtoa3ituBvSOO6GYUGzGwiFOELeKoxp4tsZ+VLeIRt7xk9qxsEc+45amyZ2WLeA24H5N9D1vEG255ifR7NPRKgSKQV45Y4KkHhXzKEQuMA/ejkU85YoEZ97wN8ilHLLDinpPXjUhgwx3PkT0nW8JHU9QNocCQFXVDKDAFRd0QCsxdUDdEAmtR1A2xwB4VdUPq4BiKuiEWGKqibogFpiSoG0KBZuQK6oZQYG2KuiEU2LOibqh+nUFRN4QC7aIFdUMoMNkzHmNhr7xlM4kVdUMosELX+2CvvNnaj1vO38Fua39S1A2hQHMEzGgL7BPYbfFvkrqNhFYpJomTvY5hi3+Q1M0O6vaUxzXUnSKmLf5F0rdpq79kvSEWaFdvbil5UogFFsl4QyzQ1uQ56iAfQcQCu2S9ofp12i2PPGBrv2S8IRSYoeszsBeewlHwlMfJXniytV+y3hAKHPaUm1STTzmqX6dkvSEUGO2Wnz4NR9jaL1lvCAWWqegbQoFNst6QPziyom8IBeKbzusbQoFRst4QCrRrEfQNocAqWW8IBZpQCfqGJMIhWW+IBcIn5fUNscAo2W+IBWbJfkMssGZF38ZqVKzo20CjYknfBhoVS/o20ahY0beJPsWSvk30KZb0baJPsaJvKH8dkv2GUGBoir4hFJgk+w2hwBIUfUMosEr2G0KBXbLfUP86JfsNocAg2W8IBSbJfkMosEj2G0KBVbLfEArskv2GAtgp2W8IBUbJfkMsMEn22+dY4BvxFgscyzv/i6HAWY6z5b/9R2zzmb2J5ljpCv+F879DvypdP3GIE+L1f7n+sZ7/fXfY+pKbeA0L+PwidDriTFtR367tJaBR0fp9OcQkMLegUgT6eaXbISaJuhWVJOyW3w4xR8SIzu/LISaBsgWVJAYav58OMUeYED2CShLFBPVyiEmib0HliGzrdLnCfSSRt6CShK3T4wr3cYQJUapXuI8k8hZUksCuwhXuI4m5BZUjzIxFCegK95FE24JKEnMLKkc0W6hvh5gk6t7OIAlbqC+HmAPMin12M0jCvPTbISaJsbczOGLYOn05xCRQ9m4GSfRj3A4xR5gVO2+HmCTK3s4gCXPTb4eYItAG/NnOIImMxu/nwk4SbW9nkMRE5/fTYOSImPd2BkmYm347xCQxj3o7xByB7ceu6BvagI/bISaJubczOAIDhW6HmCTq3s4giYHW74K+oQ/4s6FBEmVvaJCErf9Z0Dd09EqS+YY+4Lkr+oY+4FWy39AHvEdB39AGfEjmGxp6haroGxp6paToG/qAZ8l+Qx/w2iR9wzghyX5DH/AZJH3DOCHJfkNDr2dDgyMwTkiy39AH/NnQIImxNzQoAn3Ap2S/oaPXs6FBEmNvaHAEBgplRd/QB7xJ9hsagXfJfkMj8CnZb2jpFSX7DS29kmK/oQ94key3surrFH0rq8BO0beyCuwEfSurvk7Rt7Lq6xR9+xTQeCV+tP/8+WtAI35t/oVv885tspM/wxg//fBhT97vdjgh1O+PWUEG/HJVTH73Zi2aaW0va4bQ69t+uaZWDjzuITfy+G52Nd4APj0D2JrQMvqsYU2gAFuowkCbpkgCzazqAU/4/aP+AoxgRvU8Z25xgK1SETcrkddgy0EZ45y4xQHTLOpxTmygAFsMBm50yixQD8wssC9UJYFp5jSuoZNfJRNCM6dxEWOyhC1QeAowroEkhpnTuIxBXka0pWCUcc5rIAlboOI4pwmSxDBzeq6tMpJI0cxpPEeRfPCiLQU14TpyZol+IOEaGdccYEvBwMNNv0MuZkzjKgp7FdmWJzzdGCbIESWYNT3WuAYSyGZMj3OYIEnY8oQbjmk0JDHNmp7nNBqOqNms6XkOEySJZtb0PKfRkMQ8MO+GFzbUWtemKBsSLHtWpA0JljMo2hZ7Mmt6nMMEScJWZtxzTKMhiWHW9Dyn0XDEiGZNz3OYIEkUs6YleRvdrGlJ3mY0a1qSt2lLfpPkbdqij3teWSsBxlHDPcewVJLIZk3Pc1gqSdi6j2Uc82g4ItrCHwV9SzGbMa3oG4qtS1X0DRmWLQn6hgTLPhV9Q4IlFmVe30x3zJpW9C1lW/yDom+oti5d0TdkWDbJcEOG5ZAsN6RYTsl0M905omS7pWqLf1L0DdXWaAXF6xtSLFtT9A0plsOe8jVtiyRs+ZfMt2TugynvmrbFAeY+ZMl6Q7F1tVu+pm2RRDvakOSt2/IPYce0LY4wFyLglkf2eTIXIk5J3cyHyPaUr2lbHGFORJXMNyRYdrvja9oWSYxjKOZbNi8i2EO+hgmShC3+kvmWzYvIkvmGYuuKhxzDBEnCFn/JfEOGJR6/NUyQI8yLCJL5ls2LSHbL1zBBkrDFXzLfUGxdTdjXMEGSsMVfMt+QYTkl8y2bHxGGIm/ZHIkkmW8oti5JkDckWFbJekOCZW+KvCHBckrWmzmmRwyKvGXzI1IX5A2l1kUy3pBf2aIib8iv7JL1hvxKM6sEeTPP9IiK9ZbNi0DATZA38yKKZL0hv7JJ1hvyK1fQjZe3mY8pWW/ZvAh8sLy8FfMitLgbaq3LUOQNCZZa5A0Jlgi98fKGBMspWW/F3IgoWW/my67gGy9vqLXWgm9IsGyK9Yb8Si32VsyNCJL1VsyNiJL1Zq7sGXuj5Q2l1lWx3pBe2STrDemVQ7LePu9GvBE/wlP6uhuRvvZ0zNhL2LsR4yW78jdHg1ZbVzF0JmIL9+W1v5x4zYhroedCIQFbVQPeAcEECpiIasEJnxxgy1dfc1Pa++fzFbA1FR8IeolywDxWPipmW1BAtxW1kodWhLLOwRYcMI4rRkHeAVu01mChFFnAFtK1xZUjCYwj4I6NQl7DtHUU97g18pSmLaPn3G0WsFX0bDBAXoMdjBjW2RyZJDJiWOdIC5KwVRTTgFJniRiOFVIMWH04wlZRTFmbgb0OW6+QejU7+52Ntl6N9QUJLGHr1TwbV7LXkRqiWOdIC5KYiGKdzZE5whasgnuOaT0kUY97hBAJ2CqKW47myBxh69W511fY9yi2ijZF0GyVOJBVwyuaLVQHe69rQfRKkLRYbf3Miqaht0TAvcasHpIoR8S9TuwyEVs/0HKal5BuvjPuNWb1kEQ+rhAAe+G9HZi0KZzVsDU+ScI2MsJXirCNdlydmNhv+ZgIX52zejgCpRiQdMzqIYl6DOgUur6ThK30VRG2VYuRFGE7azEUYTtrMRRhO2sxFGE7izGUk0ItRleEbdViFEXYVi2GZKmtWgzJVFu1GOzNXlUYirKdVRiKsp1VGIqynVUYirKhCkPSkFWE0RVlW0UYksV2FmHMc54FSaAIQ1G2VYRxHsNe+SrCUJRtFWGcu8Dsla8qjHnOsyAJW/GzomxnFcY851lwBKowJJNtlWGUcM6zIAmUYUjKhjKMVSM42etYZRiKsqEKQzLZziqMec6zIAlb+CWT7azCmOc8C46IgT3Q1vuzczZ7+qv4QpG1VXyxAhWdPf1VfKHI2iq+UAy2s/ZinmN6OAK1F5LBdtZeKLJ21l4osobai+tJZa9j1V4osrZqL4oia2fxhSJrq/hCMtjO4gtF1lbxhWSwreqLqcjaWX2hyNqqvsiKrJ3VF4KsreILyWA7iy8kWUPxhWSwncUXkqyh+IK9ESi7SJKyrbILSdlQdtEUZTvLLhRlQ9mFFM06qy4UZVtVF5LBdlZdKMp2Vl0oyraqLiSD7ay6UJRtVV1IBttZdqEo2yq7kAy2s+xCUbZVdiEZbKvuQjLYzroLRdk+73S8EZik/v1OByQq/0YD2merw1bW+Rc2O747aEnf9a/rqC/B2eScu7c3/xrObc654wh0dwtXLJ4i0N/lCcZzhCnYE43nCCjYHY6nCPR3ecSCI9Dd7ZYwjhjOu6MI9Hd5AvIcUZx3xxEdeQlX3Ioi0N8F93zFrTiiOO+OI9DfLVxxK4qowXl3HAEJuy0OjmjOu+MISNgdt6KIlrd3xwHNeXccgfZu4YpbUURPzrvjCLR3C1fciiPYkzGbLDZJ10Z13h1HDKQjXEEripjReXccUbZ3xwFo6hauoBVDpBCdd8cRaOqmyFoK3Xl3FBHD0aYia0h9394dR3QUAwmylhK6uimyllJ23h1HoK2bImvIfd/eHUWYRz+GIms4aHt3HDHPrAla1lJJh6S1qVTn3XHEOPMmaFlD6vv27jiiuswJjhjLu6OObdF5dxxRnHfHEd15dxRhrvz27jiiHJJplHp33h1FjOC8O47IzrvjiOa8O46YzrujiJmdd8cRzXl3HDGdd8cQSHtvksGGtPft3XHEcN4dRZjrsL07jqjOu+OIcZQnHE8R5jo0xWBD1vuQDDZkvc8nHE8R5jlEyWDL5jnkJxzPEf1g74O5DK0rwoZ09yGZbNlchvAE5CnCXIYomWzZXIYng4IDGup/BGFDunuTTDaku4+qCJt9KVwGBUfYgh8UYcvmMmTJZMvmMtQnIM8RAwVAirCN6DIoOKKiAkgRNvMdkmSyZfMd8pSEzXyHKplsSHjvWRE2JLxLdmQx3yFIJlsx3yFlRdiK+Q5FMtmK+Q61K8KGfPdO3ghkuk/JZCvmNWhBtmJeQ5JMtmJeQ5FMNqS6S24fMt27ZLIh012LsRVzGqJkspVSxRhbMa9hZ1BQxKcA8G8EdV8DwOVr1+GVPbsDwP2cDpaR2n43Dv75+39lc+FR7HglRb6+90s0N50d9gc+b46otoSiUVV9v74XYhz5no/EEah2fBoKckQ52j0fiST67rDPEah2xA5naux1YCNn5aF39jrM7svIZB6TvQ5UO94Tkkgiu4bQHNF2Q2gKQLHj01CQI7JrCM0RzTWE5ojpGkJTBKod74bQHFBdQ2iOmK4hNEWg2PFpKMgR1TWE5ojhGkJTBKodn4bQHFFcQ2iOGK4hNEWg3PFpCM0RxTWE5gjziqakbzO4htAckV1DaI7oriE0Q6BpSupr/ht5fHbtoDnCTbckCTfdkiOim25JEnu6JQm46ZYckdx0S5Jw0y1Jwk235Ii8p1uSgJtuSRJuuiVHFDfdkiTcdEuScNMtOaK66ZYk4aZbkkR37aApogXXDpoj3HRLkmiuHTRFdDfdkiSyawfNEW66JUlM1w6aIoabb0kSbr4lSczdDpoCphtvSRLVtYPmiOHaQTMEptI97aA5wI23JInh2kFTRIyuHTRHuPmWJNFdO2iKSG6+JUlk1w6aI9x8S47Ibr4lSbj5liTh5luShJtvyRHFzbckCTffkiTcfEuOqG6+JUm4+ZYk4eZbckRz8y1Jws23JIk935IDuptvSRJuviVJuPmWHDH2fEsScPMtScLNt+SI6eZbkoSbb0kSbr4lSbj5lhSBpinPfEuScPMtScLNt+SI6OZbkoSbb0kSbr4lRyQ335Ik3HxLkhhi9A1T6Zpkv2EqnRZ9Qyw5SPYbuqZEyX5D25Qs2W9om1IV++1zKPmNeAslj9PU/+7QFendkeR7MFw/x9CtTGFElH8Krov7fVT45YePuH5a0+V++v4NbflpgHBDX976y3UNRJ7L1bKBASYCz+Xq2EABiDvXK5GKAhB2vo6hgBgQdr439jkCYedybcpxBMLOuIzMEhFhZxyE9jMcgbBzufrPcATCzriOwZ5VQti5XrtyHIGwMw4a7HVguHIn7zbi4AGp0ytHlCMQci7XthxHIORcrhxRjkDIuVzbchRREHKu57YcByDkXK8cUY5AyLle23IUURFyhh7QZ1URci7XthxHIORcrhxRimgIOZcr4YAjEHIuV44oRyDkXK8cUYroCDnXK+GAIxByVqQtYqzyfRBHYK5yk7RtIOQsadtAyLlcOaIUgbnKuOf0SU3EnOuVcMARiDnXK0eUIxBzVqQNHTRmVaQNkfDIrnwIgqepSBuC4KUp0pYi4s2KtKF7xgiKtKF7xuyCtCEIHosibQiC56hIG4Lg5UnK5wjEmxVpQwuNkRRpQwuNORVpQxQ8NkXaEAXPWZE2RMFrUKQtoeJGstrQQ2NIZhsOwvzkM5eKIxBvVqQNUfBsT/iZS8URiDcL0pZQcTMVaUMLjYFbvnKpOALhZknaBuLN5cql4gjEm9k7gaobu9tnMhVFTISaJWlD1Q2e8JVMxRGINSvShgB4Uqw2BMDzLFcyFUcg1KxIW44INZcrmYojEGpWpA0B8GAPeFzJVBSBqhvJakMAvEDUV5ooRyDUXK40UY5AqFmRNvTRmPaAn2miHIFQsyJtCICnpkgbAuBFstrMRz5aUKQNfTS6YrWhjcaUrDbEv2NUpA3x7yRZbYh/l6pIm7nIR2OtNnTQ6FORNnTQmJLVhth3zIq0IfadJasNse+iWG0ZZTdFkraBKLMkbSi7GZK0oexGstoQ+85JkjaU3UhWW0HZTVOkDX00VqSNljbEvoNktSH2bU6pIG2IfWvBthIRZVakraDsRrLa0EhjSFYbYt9BsdoQ+o6S1YbQd5astoKyG8lqK+Y+dMlqQx8NOtaGqHeQrLbPYe83AmHvK535D79++/tvf75gdKL+aLaqmRP/8c9/cr8PK915fPktmg/a79Z/4///Zv3iP1Yp7llA+Par8N1/ngeE+4d///jHb//5LXz83bd/+qP99l/s9/Xjv76d7/Hdy/yDnb6/gPOfxbPFEMjZvv/P4H5UztDhOLvw8W/ffvz129/+Yp9pDB+//qvTMDNLVy7V/EDgGbcpmPd93aY1+HX9eb1VSN5CH/y/6huD//1/TIFyQwplbmRzdHJlYW0KZW5kb2JqCjMwNyAwIG9iagoxNDE0OAplbmRvYmoKMzA4IDAgb2JqClsKMjQxIDAgUgoyNDIgMCBSCjI0NCAwIFIKMjQ1IDAgUgoyNDcgMCBSCjI0OCAwIFIKMjUwIDAgUgoyNTEgMCBSCjI1MyAwIFIKMjU0IDAgUgoyNTYgMCBSCjI1NyAwIFIKMjU5IDAgUgoyNjAgMCBSCjI2MiAwIFIKMjYzIDAgUgoyNjUgMCBSCjI2NiAwIFIKMjY4IDAgUgoyNjkgMCBSCjI3MSAwIFIKMjcyIDAgUgoyNzQgMCBSCjI3NSAwIFIKMjc3IDAgUgoyNzggMCBSCjI4MCAwIFIKMjgxIDAgUgoyODMgMCBSCjI4NCAwIFIKMjg2IDAgUgoyODcgMCBSCjI4OSAwIFIKMjkwIDAgUgoyOTIgMCBSCjI5MyAwIFIKMjk1IDAgUgoyOTYgMCBSCjI5OCAwIFIKMjk5IDAgUgozMDEgMCBSCjMwMiAwIFIKMzA0IDAgUgozMDUgMCBSCl0KZW5kb2JqCjMwOSAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Bbm5vdHMgMzA4IDAgUgogIC9Db250ZW50cyAzMDYgMCBSCj4+CmVuZG9iagozMTAgMCBvYmoKPDwKICAvVHlwZSAvRm9udERlc2NyaXB0b3IKICAvRm9udE5hbWUgL0VBQUFBQStEZWphVnVTYW5zLUJvbGQKICAvRm9udEJCb3ggWy0xMDY5IC00MTUgMTk3NSAxMTc0XQogIC9GbGFncyAzMwogIC9DYXBIZWlnaHQgNzI5CiAgL0FzY2VudCAxMTc0CiAgL0Rlc2NlbnQgLTQxNQogIC9JdGFsaWNBbmdsZSAwCiAgL1N0ZW1WIDAKICAvTWlzc2luZ1dpZHRoIDUwMAogIC9Gb250RmlsZTIgMzExIDAgUgogIC9DSURTZXQgMzEyIDAgUgo+PgplbmRvYmoKMzExIDAgb2JqCjw8CiAgL0xlbmd0aDEgMzAzMDgKICAvTGVuZ3RoIDMxMyAwIFIKICAvRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJztvQl8FEX2OF7V1d3T03MnmdxHJ2GAQEhCuOSSCeQgEJIYAoKAZpJMDkwyMTMBERBY11sWXAUBUQ5ZRGQxIl8VRESNu4qy4gq6nuhXWF2N6PpjXQ1J83tV3ZNMAF1X3eP///ym6e7q6qpX771690wUYYSQGS1HBLlLpmdmfzXl7vsQyrwDemdWLQgol+4bKkH7FYS48prm2sY53NVfIkQU6NtV27CoxltrCSDEH0No0JN1Xk/1t79+4fcw/yS8H1kHHdZHDHsQyoqH5351jYFr5z6XOAWe3QhhvsFX5UFC3pMAD+BjqdFzbbN4kzgEoaG5MF5p8jR6WxLvBVhDqxEaP6LZ5w+cW4GuQKhpI33f3OJtXuLZ+jE8H0DI8CCuwcNwDTqA/gLQxqOtqJMkIQ6OGuil9124HHXA+0oYuYK/EZfDvZHfhjh4v4w/AjA5PAxVomug5eK34QNoPzoFs1fglcJk4Qo6GtEPhfW18Dz+UhjNjUaz+EZ+PL+HX8HvgRGtfA2/ArXBdTT3Gr+RX8y/yi9GsyhmuIieFA+0AU/BqWgDtwHn4hicyx1BzwLONXgC3oDHCi8LL6Pj6DguhZG70EJOxr/HX+FMPAvvgVlfo69xEjyN4Ebg0/hjwHgdeo3MEmS0Aa3CYfB0AB0BvE+hr5CfB6holXCcGywcR8+jD9Gb0I/QfMzBNYEMEY7D8SXageYDZz7EnHBcjDAk8zXcN6gD38Bt577BqZiDIwwnATevJEf4Cv73/K3wFriDOTKMJJGJcJ1LRwjH8QbA4kOxBi+CcfRYDOt0cM9zTwKNB9F7QBeszs3lFnMb0Ht4N94PGCN0I97NVxgq+Ti0QdzAz0KnKW/Qa9wR4Ecp48ft6HZxKPqaF9GXpAhX8Dsox5BLeBYjnGyYIoahtXiK4QagBJFRaDGKgLcvYSQ8qx0wShIT0Fp+ALkfcOe4pUG+4UXoCDeaVKKN7LgLP4nuQk8iPwIQpP8TBlHgCYdRumJv41yF1W3uy2YpL85OHpJ+3qNiNyhtqLTNskh58ty50ll8nDC7TYhvIy6pjXelfvhdLz8ckj61dJbyJB6Yl6uDzavIhc7ps6BJn6Ab+vNy2Tu6apvggn+FFW1KVZ1ym/221DG32b1jhiDtU6SfS6iOwbkaBLYfnHuBM3eDroLu8S8iJMB7Ed6JoF+SGc5fImSEU+4Cg3AJQhZ4ZwG9tHyDkBW4apsL5wcI2UHXHKD/DriHAYywdoTC4X0ErBWxDSEnLO0E/YzMghPWiQJdjgI40XX6eQhOgBkD68bCevHwPgFsTALYkESYlwTzktrghDHJADMZYKQA3qkANxXu/SbDCe9cuxDqD3T1X4fQwFI4YdwgwGfQLqrx6lq+RtgGVs2Akg4gHveH2SLu/ziWhFs5HmW2H+sYiuzHOo51ZIU7kh2uZEdyDY+6/CSu65S61mD95qsWMY1yEyMfPsB9xJ0AWGFPcA+jnTxGvP1YO0w/A5Nhoo8LdN/BnVDf02wD8EUcDdomoSiU4XaiQ8aV+FCkxEXKSBhiz0CRRhJt7+ro6nCMhs9QlNkBcPaUxmA8DzuGZY8cMbx/Kk5W+KjIMGcEZxD5NMyNv63j228+7/4bXgtGa9rC+pqa+mvVNjjm83u6rvn0xPuf4FRPwKt+8+BD6t+9AQ/FY9a5j4QBoH8mwGOIO1zcEoa2mA+HrYs2TrQVkYnOsRoWQMfJMx3201mPjwqfEFMQTgCNFNEZEamhAqbeYUfJ7Mo9u3Dp0oWtS5a04mScpz6lnlDfV/fhArL44S1bHqYnRuqLagccL+JLcAQcl2g8BFz4EYBLDBrljkWv4GO89RXLMXmLg98SddixLtYw0YIixsbau9qzgwipZ07b/3Y6a+9VccviOMqaDJwaxGuUw4pTNcSyI/kRhXeVrH3wwbXl97jLf3u5+pq6E8/EmbMe5ser72ZnPXLffY9kD1XfSUrCo7ATjlFJGk6bgT8iXwE4jXXH2QjC5ncijkats+PHwkQOhdssjgLOguyAFGxQtiOMbtXJ7DMn2b5l7a2IW07xAumBXQK0ohIx5RgIU/IIwC6l/2Zcx1kdkQUZzctxjbrhsv9pfO5lvJfb1TxH/Tzj5oVxqf13refSzm7eWjnvNMVnJ/iwvcAjF6p3p8U5w4y8ASmiIdr2jnI0lRxOfCw+3IAiwsySRZwcYQmbnBRnSbD3t3dNbbOVz9qHEpD7ktld4+iWjtaQHTfu5JlxJwH10XBEjc7CblvSgKwBpQOaBywfsHrAIwMM8/ClgHSkE5C+FFO5SxEN0GYN2pnsZO/5/blPNT97WF2HcX5xjY9T17nLapvhsW7iw7WBPWR7XePpj7pncpMt8bELr96xqfttbvL+qx+6r/stvmLbVRXNml5QeZR5apnj0CR3MnL+CRtfkY4Jm8z4zehNYYfN6+LjnJzktKBczmIbG8/43s5IoQJxkknEaeB8ZsKEBCoRzmTG8hBhUJCgESHIXU9ZNt5xzedLl6nL1KPqI3gqTsESHq+uXlhR9ws7N6zm+usn5aodWUPxCBwFvmuM+txdNUtbmzTZANsihAGuUWiEO9oCTlR+J+yo87D9MSsGmShwWCw2O1Wf7DMdlNEne6UiZnkMk9bkEcDGAZrM9nJSCFPXWezOySAT6gZcc9njTc+9xO3snunD997ZFJs64LfrGc+YRFA84sBmbxPuR+Go0R1rFSQb2eLAj0lbkCyZjJyRRxZ7mLU8QhOCqW328jlT2xz0ElY+B2TCSmViXHvXuPb2MGZq2jvOjKMCQYUhegKaEE5DGWKz2xylXCkpdVZwFcQ4D1H84YiIHAuNlP4jHKmOYQ5uGL5GXXXp3CfVI8ce3bNHuF997hxSXcWjzqFHj+F3wMNeGtxn/gXgnQySfJ97kFFEMUkm9MeoV8VN1qMO5ZWkl+M3pYLSm1FqFIm2GC2m8UnEEjEWRLmjHTSNosd07UwXmIE/n/769OgwKtFZ7qLMAeOV8ckTBkxTpiXPU+YlNylNydcr1yc3D7hDuSP5PuW+5N8qv01+Wnk62ZmdmJU0KdGdND2xNKkqsSLpxsTlSXclrk7amrg5aU9iW5J9XoidG49dQa0dMbxf8rCgKsCeKTy3tfmaOZd5b8P16j2T967Y/Ra24ZTXb/qV/3cz/J8EIBCz4G+KpuROu7Mx7ebuFdtr5r289YUn42eUZGRgR3zCF4wnIE9cmBjB/FGa2yq+hx7jH+AEDKJll+xdsCe6H3AbS40VxmbjciMPtiWZbUPyLmo/6MlXnN0sRqjvMtm4C/RpCMRuA9CD7kEQr0ZEO2RTYhLvxM/zzuejdzv43a6NjnUDE2VTUpwBxcVYIwwxKQPt73aA86N6xdis2dpT9lNgIRw6n8ub0/DohNGJo5NGK1MSpyRNUWbJ8xLmJl6ZdKVyRfL8eF+CL9GXVKf4gP0BU8AcsCxJWqIsSV5rusd8b+KGpI3KhuTtpu3m7ZadCTsTdybtVHYmD5wXasOTcCJ2RvDJKf0GOCJ5zdNk4gxMuZ/N8y8v/rTutl/Obt327R/Vd9TXf6X+76pV2LTk+pvm3LLmg1exgq2LMS9sV9tHXVJUOm5SdHL2Kwf+/teRI3Be0bTy4vyixOSsP+458aUrqMukA+TRAb4n0mE1igZEDpnuth42PmaQRQuS7GFUf8KpEZXOHbpkdjvbDdDprnYHYwg+X42jSEfmvMzb1tBdyXtsadiggSQz0vnob7q7+Ionm7xEoOuCmxFiwL+I6HX3AJLACzyXAAE2vRFOhGgkAQIFF0fQCUEUIMQUeGSwH9u7CSZy89qjWGSQPToL4kCDXfjcYJf0U/h8dgp2L6FZiB0Ohcvi3NxMroZbzq3mNnNt+nEIjqNwfMCOL+GIESC/sRCZd6JwHE9i+f6oHx5M0viRaDgeTUbzWVI+yseFpJCvkK4Vb8a3kJuFW8S1EFmvJ+v5NcIGcQd5HO8j/cBChCcbIQhIToKkJQpH4lq1QF3IV3R1EvHsZs12xaj5YEMrkA2PdE+yJSCbwJvMFmJNABaczw4bjAJ22FxWmbMLSN4kvU3QY3ab1WSUKG/A0tntx6a2yeXMtE1ti2D2DVH7xlhlB88MJhgE+KIco2fUaIPEWLetl3VurpTzcgHuJmDe3Yx9e0PYd0xnXzSPjUQQYJsMghSJnYJTdBr6Cf3EfoYRaAS+hIwURxpGW0fb8lAenkKm8HlCnljLecWbuJuEm8RbLLdY7+HWCmvF9Zb11h3cTrKTf8j6kO1/8AHyJN9mbJOfMe2z7LO+yL1sedn6ku0N7hQ3uofFVjwYjwANmQCJYg0eAma2Rk0rePreV5vnTI+S+Ypuifvm7Min1nw2ZmoSszUyiNUAiD8N0FLdbpQAaCeIoiAnSDKQYKRtLoEnGE4pgfBETjDKPE9cMo92S/xKkZONkgH2BSOjSEz2Y3uSICbUBHLcyWMdYTqHdc5q/3r4zR4pl5dHy5nyTLlGXoaW4WXSMmNAvk3eJD8Dx6twnJDtYVK8McnskgYZFXMhny8USJONs8hsfqZwuVhH6iGArxUrzAG0GF/HtwqLpYDxVh74Kd1qXM+vFdZIG4yPS/uML6MX8Avcy4bnpCPGt9Ab+A3uLcNx6W1jJnVjySQZs4Pw+d3br1KXcmn4ZS5NXdq9A69/BdvVL4XjnYM5F1emyex88F2VYCsGoHfdbouZs5pGJiYlCqJBMgq8PDIpKdGl2VgWw0a84jwWvcnBb3Id7rWz0+PKwNCWpkwbSP3ZsY6TfS3t32hUGxal89D6OZhd/TY7ZY9kgiTAfaXRaJSNJpPZZDHahNRYc6wl1hptS5cyjBlyhinDnGFJU0ZLY41j5bGmMeYxlqnGKfIU0xTzZMtC80LLfmm/cb+837TfvN/isopWg1WyGq2yxTTKMiHtqjTNvfcaYj6SGeL+AxxaABs0xCNp4Bflf+Oqmqqpngk4/KD6jdrp+3zp1R8G6ucXNk744tCZrqq3Icb+Mitr2IjBGSZj6uaHH9ubmortw4ePGZ2VaZESt/5mz65E3Qbr/i/xCfQAWCFk5+0098hkLk+oEJqF5YLu8pi7EyO+7dD25DWYOxrfAHMdT6AdHIbYvGcuHf4aroNQ9AZ1KYwNyr6Ibjjf5qI+NvfZPjZ31Q+zuemIGY02jjdgiUThaBLNRwlJkiIVoAI8mUwGxZ8iXo5nkVWSo9dGyvgGfAe+Hd/Q/aY6Qjh+dg9f3DlYi4mXgQ9PFU5DjtYPvFNSONoVKe6KN6+1rLHvStkYv85lNsbGEFd4bExUUj8XzddO2k+3M1miwdHpNyAeDs3W9I01UC+FnBF63gZJEnfKC58arxcvuGpH6a5D9okb5pzCMervYFffU5/FrTiv9jnuwxv0D3dE7Rgy+JkDQ4eqZ976Uj2Bb8X1uAU/qADOlYBzJsQdNK9MdYcbd9nILudG27poFGmOEiPDIs7LK7GdBlMOO0URB1NJuJLd9UuWzJ+/ZPF8vEI9pL6tvqUewm48APfHbq4DR586pX6invrkExytrlQb8V3YjwP4LrUR3DlaCjiEMRxSUSYqcA+MNg/YhUQQtrYhu8I2Jq7LinYazaRfrG1QrLO/MTZuAIm19U/ul2XvOtlB8wr76bDRIakFTSz6ctKlBSMK74wQDVqwovQDrQgPDgCauJcaAoGGq1ta1CW33IZjsQMiw9jbb1l3L5DyPrD1zXu/qpp7RWXlFXOruI0LmppaW5t8rcvSdi57+ncvHFy2M23Q06vf/+ij91c/jWfMrqiYPfuqCirvBxDiPwQZNqEsdwR/SDzIHUIrpUMyFowGEomImeYdx9rbtYgRYsbH7ZZSS7OF9AaM9DjA27pbuNru9dy2s+8IxwGdT+HcSasUHJoL/LOCPtpRPLrEHRe1BR21OrYIR6V11sP4ARIBiQXnjp1oGpugZb8sPKVZjv0kpOQliRWJWpKjR810R8FckCBjgItkO1XLKXtaX1W/xvKrgce2+hct8rcsWkQOcLO+7dhaNRcXYgJH4byul3Zs3ryDnojuLdAv3MrqJw6koFK3Kwztsx0U98WuNO6LFpGBhCWabcboOB64kWiOdNoNkTEkmTGl41hHTxg7OsgfCGiNKMWekplSmgIWBjMkB2NHeLChxaJpQA7bbRI258or5xz/30BroPV/uclLblHfVd/oXsFNxKNwVA25q7R42mVqe7e/ssrjURdxMf2eW/mnY8LxA682rmc6fQouxRD30Fg/3m3ldkCsv0MUMMej8D6xfnC3TtHMgp58hbpU3Q6GjNm9rSAHJ0DGo9Ht7jREbRkEWtE0enIJ0ci62mYCSefRI1y0U0BWKdKJ46wkxv7u1DYLDWUJC2W7jtHE1KEZtjMd7KmP69EsW38ualDkoChCkDVKiI6KiopOQSlRKdEQ3kSNiJ6Ipgj5UfnRNuZSAWXcWy1gKRLVEa6Yu/Ps81xyYf7K1iveuO4X6nXYjNOuP4zj1FM4Dn848frc+uXTivDkwUM6Xr/u9UcZjR/DXvOw1zIa6HaS3Ty3W1hpQLuNUrQYS1C0gCH8aO9o16w9w59yTWD1Okfyl7hcfQDPwU24/GwHlskLk7E4+ewI9WsG+36QcQ5gJ6Dx7hTekLAmdpfBvtaxJmKXYY+FewSttKxLJCkIR0XKScieaH8Xlmm3n9bt1p+pp1ZPQrATrof9CjOooY6SMuAt8nT3gvTZWSBGWer/qG8v+3bxde947tiy5Y7pBxpA7U59bLaoX5z5Sj09NBtn5uff2rrglsFDkOarhPksThsGGSFVch5CyUh0iSAFQ10ri3IFGuUyi5oJqpiF97iNvaouCxWqQ12m2qmKny3m92j5JtB+Jei3SdNvcYv5qA1tca6zHY57IPpoDJkY5o42Gy2xdqrf2VoV42QHo7tXv12h6sw8Cqg5pMgDnLAuQVSf/YsXL56yt/VVLKtfv9q6dwpNiD6mmvzQpk0Pcccr56lPqN1wPDGvcqsYocn1AFDylfAQji5zx9sFbJa2iHgTesAqPiZz4QZkMAoWS57NFKGJcpALJlbL6OitZZzM7gIznh3GihnCcsNyiZuHnYBuAtZ4k+oYRsMYsvJ3ReNwtvoHdcOePa+8IUZ8Niq3+Bzq2kwqMCp+4hGKUw3way7oGq0FxprtRhRJLPaYyN3Evtu4kayLDR9iRuLgvvXJdvsLesK8NzPuKloLdIVUJaOYJ+acEWG0RCXMnf/npertahHei1uX/nn+1Uf9f+jo+IP/6NVloy7BW7AXQvstl4xSXy7MVb/55GP1m9zCYC2Z2UIZuDXUHWnebTDtRiuN4RYIQOxDeJME/iBCM33BajJTkj3IiamMUNXkk1MdyT2V5QPcMpyAh6qvqh+p6jK84njzddc1C8e7P/2su7uTP6he1Vhd3dBbA4N9Or8G9sDFa2Ad/7gG5vgHNbD1dwVrYGJE9w6tCAayrM4UroSYnPqqse6EXl912LoOv08eSwA/5WYeK0Sa7SdPnu+uXD35uy7H4SHungujuISI8jYQbT+I+NbuvaK8LUSQySgq28xbab76ZdgfIxrsdvT4agEzRy1rjprtCXPTplJTs6mPm+5x0uqyoIvuvjkkBhBQlNukmYZIgogIAqipqu48DuAVmns/WwyOXfvuATHfGY9udmfHxXLxMQmRUeA2oqIiXTGRcjgYV3G3eWWUHBkeTezxMSLiLYBtlN1oiDSRBA1l2MgoWjKm+0rlaXTY6JCgWNCzleh4mq0kxUXHxcTGxsXFxo90jozMc+ZFznTOjCxN9Dq9kRWJth6HG8MlO3riqajwZAKCwZ1YVF+/aKu6jCuCwC981eqSpe7X1JrHR11zJZlwRW3NLHWF+nU3cPh3b9x9cEjYshXqLOxvLmNyMRfkwsovYjYO5EK3cdEgojGPxb1vW5fALJwbbF1IFBOUixAzFxr1hYdEM1EjAF9uP4QsLSAHi3pCmdY9U2hoQxYGo5buwT3BTMHcqu3ffq3ZuckIGRIgDjDjX7iniAkGyKnBiUuSQR5uksGbG4eDKzcN5wgnDzfKhHC0EGKG4ZCjmF2ywBGRoBMmyWyCfFz7FtJkQJagbzDRMoi5twzyirZdQGXUd5ZAzk9o/uyUFXkEN0LIkgtkNxxXyQ3yMplVQAQ45EPcIeE1+aj8AfeB8IUcFclFQGwYJthFO4AJM0bIkab+uB83WEgTB0mDjf1MLnOmldZEhnNjhTHiGMMo6RLzBGsBV0jy+ck0wzfPJjP5mdIcY7lptvkqaw1XwVcKFWKFoUKqlitMrVwz7xeaxWZDsxSQm00341vEX0LGf5PpdvMq693SvebV1u3cQ2Q7/5DwG+kh43bTTvPjeJ/4uLTP/DvcTg7zL4nHubfIm/zbwinpL8Y/mz41z2GpWBym/3CyCSdPxnMPPI0HwzkXIvVFTx9QF/EVXV2E7+a5rrObCdel6vZvEdg/Gd3hjpBgO8hj6AEjBHK8KNEE1qTpikNj+0ngursihsTwMUKMONZQSAoNV5B54izDVQYfqRWWkQX8AnGx4RZyI3+zcLthE1kjrBXvNewjsZFcpDBGyuUKhCnSTG6eVMtVcF5hIdfMLRCWSDdztwi3S7/m7hHulZzzmPHALK9kiTLeiDd3v8cVq8XqVJo0dz2K7wU7tRW/rg5hOpLPdCQeDURT3f3jbQQ5X4k8FrMpLAHUxXjY8ljqlrC30VHS34wsVrdTmSiOTQvW4amhOalF/RAM0ZAadGZQxSDd06WgEcODemIPDYxI6NeH20FvjqhnsPmIpjcPqwfq26uu3DunbVuHb8m1/uYlSw5WzsWTOs/iHFCeLof6lfqRkoyjRo7YsI2I29Zu2LRtzdptsB+3nvuIPw0+eiAqcg9Gzl3hxrXyo5ZdorI26dH4XeFtqRvFdWmR4TGQ1cRE9rdHkqSIJMWYCOSchMiO1q20rMBOK7t6KYamz3olOiSu0wpu50e4ZP8996m71P3+j69pOF67/oEHH9iw9c5f3Xb9vINXtnzQgFNx8m3ENeDZNe9/7HLhtJGj5lfV1H8zZ97MKwel4VhFeebQDQ8yuwWxhlij58/Z7nBxdxjabd5Iv5cdYhtFhjgHn5c/u00oJircHpMZMyFGoOZKCyrCRoDpCPlyltS0Pfdc26PPPfcorsPrVLBQ6nq1Fq/n31K7Oj5TuzD/WQfmcZRara5R16rVIDnz8dV4o2ZLQdaHgd/gkAVNcis42UIsKJkQiwsRk2G3gMlKIzbLKFaUeHOE1d51bFw7/R6JisgxsDnBmiCvmxYjrbw5hkEIRt0U95V6Bd7uxruOH1fv7p7Pr+teRXZ3lal/Ub/EdjxF83fceFifoPQn0LMcBu/Jh3ypFbRxWtEHP24X3EKpQJgjBRdInSetqDA4Bvrduxn9wT2MjASby43EnERvhDPKRjxSlo0u2cARJBH0rEkwSrQKJItDeXkogpivS0shNUva7ri4KQXfZyPU99UYOZtkMyZxTkOSlGR0yoO5CdxkroQrMhTJl3OzDbPlOs5n8MlruNXSauNDXJuhTY7lMQ95ViSOIXbrIOwiY/AIUoLdpECaKc02llrrcC3xSvONFdYbpduM90jRwVISzbxSMSX5U1yOZ+K/qHerO86oO9S7hONdH5KkzsF8btc7xHWWshPdDrFAmnAQxaEk0P2hIDu/jo8yhNtMv050Ggla5bAkJSbEx8VGR0WGhznsNqvFDI5G+7VLrBih2I/pLuVk9rFx1K9o1yxMksOHkWRnMjtTw9k5IpmddNvJqgosed7zYKf6eB6OV9sq3qtQv6k4UaH+BU/Oh2SwrAKXqt/kY0k4SCNQddlx9fSb6gq8jJ5v4rDjeEX3TvU00xX1ONMVG1BR6Y61RO5G9t2GjWidNd4qY0t4zBB5VPgQfnB88AcVVCTt7UxxwB6nS2aUEGO2JwxAmQkzzdMtNeYKViNttlgM5tmm2ZbZEbOi55vqLdeaJbCtQs/3yI4IzgA2lupapK5rqxLVVWoNXo9rQW3WvHkYD1HvVD9qe+7gXlC6OLwON1B1AsW7s0u9e67aJvKgeF+e0/SO2i+I6U6z2mSeO0qIAb/Px4DXdwmQihJgO8HIYH9X4zmEiyHhFsibgcmbyUBihf5kBMknAoiEk/qzW3lv9371Vm5A91Dh+FtneX4/rEX1+RoWlwLXCI09pARY0CVBKEkOCSD7gJIo24/tTRJtIjev/V3wY8HfovRZGbuTBGKSnCRWcpE0aSQZLU0w5ZPJUolpJrnK5DPZNEQg2MfJfv7jrhPkks7PSHLX18Lxv3SNUt/7C3lJq3XOpzUn4TSK1mqdhphdMlqL1/C7IP/eZd8Yuc4V7zLEhkehlFgLq3W2d3Wd1Kxge9BYj9Js9Kig+9GLiSn9cUiuemTujrJdhxy5G644pX6MR2MD7ofd6m3q/vpDeJm3psYLZzKOGDz4mQPZ2dj09l9xiroAzOWv1NlJ3OkbbvjFL3/5ixtuQLo9Eb5mfFziTjCMpL+EGykaRBc1IM9KgogN3FDeMFSL9VkOplmO0SH2kGf2woDRPPdwWUSmGPESXICniDPxbLHUVIvrxArTfvy4aI3hYg2XcsMMhWBA3IYZ3BWGGq7eYGI+n9XamOrv5pJwo1rW/SHTesQj0HrUhbSYk+axnaAvCaDxrpjYyGAqG7svvieZjU+MixlqHoYyw4eIgxNpZHyyq71Ha+DQ01qa2e65KgnkziXywbyW75vXUgMvdK5WD/+GJbcH8C/WYMeipX9f8udvv3xvXG3aZ9wsX34+S3Dr8f00wS3IV8998bmq2uw4hf4IkTt3QM1n3w2YQMvHu2NMHDJsEqzvoceEt80P2AVJtGCLGdntrHTWzjw4q1ScpqUst7HUUeFodix3aF8eRIi689a/N//TkUcvrSnSvzvf++Hnn829WUT0C/TevTWhS93h3CHpII9WyiLkQoIR95RZWbFu3Jlx9Kt5p43YeJtgE20Gm1RqqQArsskin1d1hYTsEmrTul+kXqn799zozsHcIkjqUPA7YRlyAhNe5M6XE0zIZEyQjIjeZCMIlpRgMIh8Av1yAvRVpDfwFRhxCRgjlxESAp7HJ2QDa2HBgE3mYD5g03/2EfxulNVL2o+193izH54WvI2IzWgnSUaFZBqHkXHGSaTIWEbmGitJg9FPrjOuIMshIFhlvAetJqvJPeJG4ybjZvKIsY3Q4xkjPQ6RQ+RV46vGo+QoOWE8YfyAfEC+MH5h/Dv6kvxdPGfMhmSHN0tEDufi+XgpXE6yQCLBD5b6yZA88GOl4XKWJZebyk+VcmWf5Sa0nFvF3yqukpbL96A13AZ+vbhBWis/KLZxz/DPSDRXeZV/VTokv4mOcif4P4knpKPyx+gD7gv+E/EL6QP5W/S1OAZcqZElAkaWCeDfqw148alP8GK471Bv7PpWvZEbz6Wqe3FR94nuZ3Glej+TFdCr50FWHGiYO8phkjgeCYes64xoZZgUKY+m8hLWE7XRb6KB2Y+7w5vDN4Vr+b4WDzuSde8CYrLo1tsWgaA8p+5Xn1KfA1VesW/Tpn1kWdcK9Xn1MB6Jx8O64xGS7qLxDG48L4ccqeWQI2kOOZLmkCO/M4d89qI5pLGcys2cnyeRfIXITs7ORQh2wS67IKlU5DEQCo0RJgjD5Cw43Oy4krtS8MhPco/KbXDECpwMAZjRKJhEcyQXTaIgd3JKEcZYU6x5ADeQDOAHCi5pEKSUIyF+y+azhSwxy5AlZRuHA/0TrFpSmWecYqKF6Su4K8gMfoZQJpYZyqQrjDNM88w+5MM+ronU8XUGr1RnvFpuMtWbfeaFZKF0rXGB6VrzLYYbpVvNT3D7yeP8k8Kj0kHz1GC4xb68g8t4fA0YfoT9cHK4Sd2s5qp/Vc+oucLxs8/z4+kJNth39k5Nx9G5iVwHi2XDn+DQSp5DmGRqduvMK1l4GE7lrO93//U94fi3jajPB/NruANIYLH4enhM1O7kTVTDhYGpNEmEiDzH8R+jjHN/RH87J/erYD9SLa3Jq0YKUs6dEyPUCLzB0Ig/qkD4HJJ0v0B/vn/dJbtOfHqVbdzfUJLW/dLq8MTg/e8tXbttR4xeGCvpM9jV0KiCKNmT/97ybbbtiN7f+8nhjwBu4OBJGfKJ29ABYRmaxR9Es4Q9aLM0E+0UGll7F3kdxQk1aBZ3EO0Snkd3ka/gPgolwRkjDkUy/zyaT98RGb1Gn4U70TI4K+FcKiwEuPvRXDEGHSDD0Cno2wrnx3DeL7TC2P0wbzEaIJxANcJ7MBbWo30ULzYX5olpGgxDNZoslLH3c2H+rSLgD/e5XCc6YPgaxu1Ft+t9twpH2Jj54h7ovxPoPHjuAG0LaShJXIYOSK+j8VyHzq0cUowGo2sh8+CQHbkpF4XPuWS48/A2Fl/aw7t1OLuHvyb8kd7mwJ5/q7cJsnOK3uahPV1vC8jMXa+3RWTjHtbbEnJwJ/S2if6qX29bwu4beLPetqLhY1fpbTsyjX1XbzsQP/YrRONBcEM4i61O2xhF4pf1Nock/IXeJkjBqt7mkcIN1dsCiuaq9baIErnb9baEUrin9LYJjeH+qrctrjFkqt62orqxLr1tR5Fj2/W2A0ljP0GTkA81o0WoBdWjWlSHAiDpA1EVSoN7NsqCYxi0KmGEgibCmADyw9mCvMiDGlE69BaiJhifAa0c1ACHgsp6YPnZkxfuXpizAK7VMFL+AauO7Fm1HFZaAGvNhzlNMJri4YE5/9yKudCaD/NmolYYUQVjPQyal83wMIoUgNIE12YYUwlw62GcAvN9sLqHvZMRmuRrXtRSX1sXUAZWpSnZWVnDlMpFysT6gD/Q4vU0piuFTVUZSk5Dg1JGR/mVMq/f27LAW50hXzB1JJ1a7lnQON/XVKtM9NR9x8Rc73zPzFalqs7TVOv1K54Wr1LfpDS3VjbUVynVvkZPfRNg1pfE6YxAP3Rrk6d7muBhIhDTACShib6G6u+aovQOC5ms/OgpM9le+IGDPsbfbNiRYXCgmd4Wf72vScnOGDasL+Qg3CHnw6Vgh1wMkxoGXBOAgC6eQVxqfE3AzwBsD2JCEoAtHoMy4ajWYSwAGBkw1wf3Fth2L4PXwgQkA+B6YQ6qCwSax2RmVgPQBa0Zfl9rS5W3xtdS681o8sLr/BAMggIVFOoLVYe+o0LqZYLuBRp9aCGMpWL98wgrhVQAbxbBmDo2sx7eNTO6AkwxKNda2AyqShTqgvM4eT4dvcrY2kcZv4saGY6L0a6JhAdaoVy70CzIIAE//pB/kKn5+Q3cxfe7l+Z6eCOzVoD1UClsZLy+Gvp8sAP/CBdKWSmD18ig9SpXPcOpjr3z6nTVslWa9F1P1/dd2y1tNU3GNHlPZ3j52O43sfnNugJrK/gAakCXsXpdCjwMhsZpWYcZYFicL09VbByVQw16EAIdreGuybKX6b8meykhUpLCdo7OrWZ3P8OrCuZ4dPpkpgVVIKGNDEqAvQnypwZaDbomDezBsXcFatMo/gGQX0366Yq9PKE9zUxrqmGFKjY7iE01oyDAZK0S3gbYW20N+XtWSNe1uQowa2VQNJ4sZDJQx6xSQOdMI+sLpShIQ0sfqdSwbWU8TA/ZHdpuZPup7bUcYkH8MDv9O+hI76Ezk1kQhUHW9EGDXa9zte/ufz/VQc5p2Db3SHSA4dUrdb0ULWT8aPxBKwS1oYZZ9SadQm/IitXsStdIZ3fKifkwoorB08YE96+GeSLNsgV3qIqtXc0wrtcxHcO0s1zHzgMQfcwy9O5BqC3q5cCFlqAJxgd0bfD3GRvUlV6OhdqA0HkKo9nDMJeZbe4raxo3NF/i+Z799DEvqOh738juvfbjh+xFgHki6lk9OkUZfTj1fXMpTxbpvkVbnfK8huFYrUtSA5PTlp4eDVPK0+qQPQ+VuqAH9TCPWM9sRgN7knsoqmaY0v1qCuFGbR+/qq0UtKEeJj2a7AbXOJ8//n9IUxBLWaegV8I8bI9+OAZ91zmfHxfDLV3f7wY2r/47rLncszstzM56mF3phRvs8fdIZFBfzvceXt3OeRkVwZUWMqqq2fyUi/jDlB66z58hw7ugt00JkTJNZ4rO8y+VTN99Ibi26noQlJMF8Lb+IhzzQkoa0H0MHd0Mh+a9PMyientmhO67hnOwR76optQxC6+wu1/H0csk6bvkJGjrLma7q5knaGL7Hsqvi3FVDuFc6B7+WF316/G7olMS1LagJtHIoaEn9mjRZ/SF2Mwk+mq41uo7pvlDKlVyj1X9V1qq76aqUteRgO4Pa3o4NRnlsXVKUDE80XVK4KkcXQ5xZBl7Vwh9CsRxZfBmJjzlQm8u25cc9oa+T2HaeDm0KcQSNIPB0mCUwZXCng09FLbCnunTVBhfDLDo3Dw0i62RB9CmA2Yl0Kawp0FvEdzz9HF0xiTomQHPtF2AaBSqrVcMs8qZ7tB5FBcN03Lo7121L1aFbMUgZtPgqQzgT9bf5gDsQgaP4p/O4iPaLtbx1DhXxqBTHlHIFOYkwKiIPdHeGXAvhXHTGT9zGM0atsWMhnx4r9GSxzDQdkLDaBLcS2FtOqIA8CpnXKArlesj09k+Unpy2Xy66lQ2SsOsRN9l2u6FkqHzUsOD8n9mz8rTGf1FcCiM/nLoKWd7kwPwg3CDslPAIFC8ZcaNGYy+HMaHErbCRDaOcpHys6hH4spCdmUS4xfdN4p5Llsph3Fk+kUpCUIL3Z2LSYfcs0IBoy+PcaqIjZ4OfMyD8YU9PZo8FjJaJ+m81mBqcq/JRFEIdycxGunOXgar5ukylcN415cKuk+XM/x7qdB2IEe/TgrhWe/uF+u7G8SnnK1cfhGuXM50MY+NymF7Pb1HR/KZ/k7TMZ/RI2G9NmCGLp8lPZj15W9Qj4Ljfojt0GAF1+67g7lMnop0DKf3cEMbIX8PXM125YFfq2J5TqDHbvf13KFRY280Ghp3pofY2tBIQLPCBWxs43njenu1bEnzWb25TmjsdrEMO5gda7F8MOrtjT40263lRKFRbzWLz7UY0N8TlfhYHOjriUwWsre9Pr1Zr534+uR5dGUP8/3pPWsFfVEvLC2u9LBoga7mvwg3v9tDyRdkhs3M32urLGTtgB6ZUPpa9bG0/7rzsuFg/efCPVAuugdBWi4WOYTyv4Xtd7OeS9UzDtN4MkOH24KCeVkvTygHtLpb43m73it9FNoYdH5VgfKgNgTzasZrGWk1PLqmzOxVsMb1n686/dwF7v+mepDcpx50fuT1r6sHyRetByn/5nqQ/IPqQX0j+aoQnHprHcGRP6yCerEKi/wfqyspF9SV5P9XVwqpK/VWGP6/WVeS+3jY/1xdSb5ItvbfUFeSL1pX6qXo31NXkr+nXvDvqSvJ6J+tK/V+6/Rz1pV69a1vXem7vO93V5e0/FyLJP7bqksy6ltdunh1499TXZK/h7tKCAf/u6tMMpOxC6OZf3+VSf4vrjLJ51WZenPdf2eVSf6HVSbl31Zlkv+JKpPyL6syyYwHMwHqFIatxu0ceP/vqx3JF93z/1TtSL6gdqT8x2pH8nfWjnprQP/62pH8T9SOvg/uv7Z2FLSs3+1RLqz4yD+i4hNapfk5Kz7yT6r4XJiz/biKjxxS8fm+usPPUaEJXADfjXorDTJbhz5lIJTPfqBFf9dGfxnX82M6ZaDf61UqvQ2+hWkZyg/4FVyGUtCwqLnOr9Q3NvtaAt5qpabF16jktHgX6D8CC67BfnXXqv3qLnQZWe5dfaa3xaNoqPX8dE8e8r0f+cIf+f3g3wcq561c75c9SqDFU+1t9LRcrfhqzociy6XelsZ6P/sNXb1fqfO2eGGt2hZPE5CeDrQDWTANONZS601XAj7F07RIafa2+GGCrzIAHKsHFniUKkBahpGBOm+QT1VVvsZmGE4HBOoAOnDZ2+QH7qUwlqSkAbBqxeP3+6rqPbCeXO2ram30NgU8AYpPTX0DbNJACpFNUKb7agILgf0paQyTFm9zi6+6tcrLwFTXA2H1la0BL8VB7jMhHba5qqG1mmKysD5Q52sNADKN9fpCdIUWjZUAttUP4yk56Uqjl1ItMwHx16WHrJFO18z0tSh+L+wDjK4HVHXyz1uaIgdgmymjA7LGOrbQwjoQrAsm0G2oaW1pggW9bGK1T/H70hV/a+V8b1WA9lD6anwNIGyUoCpfU3U9pcM/RpbLAZyn0rfAyyjQpIgh0CMETb4AbINf66W70twrAdo7xV/naWiQK7061wAN0BJPHzp9TSAXLUqjr8V7UbKVwKJmb40HFsrQkOr7ttGzCLQFplfX19RTQfM0BED0oAFAPdXVjHKNdVRBPS2AV2uDp0WmC1V7/fW1TQyNWk1XYRKVUE8VAPHTGUF8/OevREHKsABjmKfh4gD0OUE8eqEBek0Ni5T6EDGXKTktXvrfwmdjacNPGUn3JageXpA5bwubtNDXUu1XUnr0MIWuHXwhp1C1TWEsg50p0vWl0guaRKG2wh5Qnizw1fcg5r02ABqjeJqbQb08lQ1e+kKjHSDThty7KXWegFLn8QNEb1MfnlCp65XuaqW1qVpHuBdVmSGnUfh9u+r3NVCtZttGN8mjNFDrAboSHNjsqbraUwuEgR42+WQqqv+cUPVZCgwWoOhtqKFITc5T8kuKy5XpJfnll+eU5SmF05XSspKZhbl5uUpKznR4TklXLi8sn1wyo1yBEWU5xeWzlZJ8Jad4tjK1sDg3XcmbVVqWN326XFKmFE4rLSrMg77C4klFM3ILiwuUiTCvuKRcKSqcVlgOQMtL2FQdVGHedApsWl7ZpMnwmDOxsKiwfHa6nF9YXgwwAbkyJUcpzSkrL5w0oyinTCmdUVZaMj0PYOQC2OLC4vwyWCVvWh4QAYAmlZTOLissmFyeDpPKoTNdLi/Lyc2bllM2NV0BYCVAcpnChmQAlgBDyZtJJ0+fnFNUpEwsLJ9eXpaXM42OpdwpKC6Zlifnl8wozs0pLywpVibmASk5E4vyNNyAlElFOYXT0pXcnGk5BZSc4CJ0mEZOLztkOqEgrzivLKcoXZlemjepkDaAj4VleZPK2UjgPXCiiKE7qaR4et5lM6ADxgWXSJcvn5zHlgACcuDfJIYZI78YyKVwykvKyntQubxwel66klNWOJ3uSH5ZCaBL97Mkn0nADOAn3bxiHV+6R7TvQumAUXS2TmBuXk4RAJxO0YAOuc9YkK68a6u8zQEq27pya6aRmVHNdqYzqdWMAIhwQRMortbHmuCWQLOY19GsW6/Dpu44XTO9zHyAdIMn0kxv9QIvWEA/NSW+FtlHjcnCej/TdHCBjT7N5yl+TwMsBrOoFrFRYCs9DTDN34NmH4WSg86wuaUepixsqQ+AMVE8rdDbUn+d7oZbdDfFKFB6KaCr9BoHDf8Wr78ZvFT9Am/DogwY20J9GcOkvqnG19Kok87YVxUYEwwVAkotA17tC8i+ltoMRZZZxPWTQ6cf+vcRP08cJGtxkPJj4iC5Nw5SfmQcJF8YB+lGvopB8gd9xkUC1N6ARf4psZISjJXk/45YSdb24V8WK8mawv6kWEn+GWMluTdWUn5krCT3iQt+RKwkf1espPzwWEkOiZVC1bdPuAT+HIzEzxUuyXq4pPykcEnugy7LG3/ukElu8ik/OWSSf9aQSdZDJuXHh0zy+SGT8mNCJvmiIZPyz4RMcnnOzGlTSijaOZN/VHQk91L+U6IjORgdKT8lOpJDoyPlR0VH8kWjI+WnREdUWPsoSk/gI39n4KP8E4GP/P2Bj/IDAh+ZBT59Y4d/HNAEguPdLGiQM+CW8VP+ZjCT1e2uhjOT1c6q2bd6Gez71Wbo6/tt4ff/hWHmwvqr6zPrwVhdm9Fc15ypW8wf9Yef7C+R2efc9fT/+XbhJ+eX3HLcH6mIYBdywLUfTgYGCLgf6oSnVBQJ1xS9L4WNo22CFfY+CT0F10RYkeAE9jYexcA1DiXCNZb1xLBrNLtGsWskuzpxBLICVCd7om2Cw1k7jF1t2IqWwnsbe6Jtgi3YjO6APgvrs6BDiMdmbEKzoY++IZj+f/h4bMIy6g999A2Bqxv6aA/BRjZTYlcDMrMrnSHuuSdDyAnHIqNLYFeejSKMIo71YHZF7nNLyblLiaqSrrPpQpdKzqaTTpV8+02B8O1S8k0B+Xsn+Volf1PJGZX8n6fIVyr5q0q+VMkXieS0Sj7vkIXPVdIhkw43/9mnsvBZNvlUJn/pJJ/cGSl8opKPO8mfO8kpeDilkpMq+Ugl/6uSD1XygUpOqOT9TvLeu9HCe9Xk3WjyzuZE4Z1q8vZbLuHtTvKWi/zpNZfwp07y5hsRwpuR5I3jduGNCHLcTo69bhKOKeR1E/kjjPhjJ3kN4L/mIkfvNgtHU8mrf4gQXu1P/nAkTPhDBDkSRl6B168kkJcjyOGXnhIOq+SlF+cJLz1FXlrOv+g+93uX8OI88qKb/72L/E4lL1ST9tV2oV0lz8eT51TyrEoOPTNGONRJnvltnPDMGHLw6VjhYDZ5+oBDeDqWHHjKJhxwkKf2m4WnbGS/meyDxfap5EmVPOEkj4eR/1HJXpU8ppI9UeTRGNIWSR4BOI90kt1w291JfgvjfxtHdsFt11LysEp29icPqWSHSh5UyXaV/EYm21TywFar8IBKtlrJVje/BRi1pZNshimbE8kmuG3qJPcD8ffHk/tUsvHep4SNKrl3wzzh3qfIvcv5DatcwoZ5ZIObX6+SdSAd61RyTwZZCxPXJrrPkTUwdY1C7jaTu6Drrqnk13D7tUruBD7cGUlW28kqF/mVSlaq5A6V3K6S21Ryq0puudkl3KKSm13kJpXcqJJfZpMb1pJfqGSFSpbHkGUyuV4lS1WyRCWLO8l1nWSRShYu2C4sVMmC7aQ1ECe0dpJAHPF3kpal5BqVNPvSBV86aeokjZ2koZNcrZL5KqlXSV2VWajLJrUqqckm3mpZ8KqkWibVbr6qUhaqzKRSJp4Kp+BZSyqwQ6hwkqtkcqVK5qlkLjzPVcmcK+KEOSq5Ap6uiCOzVTKrk1yukpnw7D43UyUzVFKeSKZHkLLLYoSyTnIZvLgshpSWxAilnaSk2CGUxJBiB5mWSIqmRghFTjJ1ikOYGkGmFFqFKQ5SaCWTO0lBfoRQ4CT5ESSvk+ROsgq5NjLJSibmuISJnSQHYOa4iHuCTXCrZMKlVmGCjVxqJePHWYTxkWSchYytJmNUMjqCXKKSUeFk5IhYYaSLjBgeIYyIJSMO8cNlizA8ggxfzg/LNgvDIsgwN59tJkOztgtDVZIF8LO2k0wzyQgnQ9LHCEM6SbrTJaSPIYOryaBqkqaSgU4yIMohDEgk/RXiSiT9UoEBg/slklQHSUEWIaWTJNtIsptXIkiSTBITSUJ8jJDgIvG2cCE+hsQ/CTbjTj7OQmJjpgqxS0kMLBozlUSrJMpBImG1yE7ihD6ni0RUk3AHCVOJA54dKrFXE5vVLtjCie0Qb7UT63LeAm8sncScTUxAmimSmJbzsoXIbt6oEkklBpWIgiyIKhFkIrh5vpOQasLBLE4F62URsIMgC8FP4uobV+LB///4oP80Av/CTwL6v0IGsREKZW5kc3RyZWFtCmVuZG9iagozMTMgMCBvYmoKMTQ2OTMKZW5kb2JqCjMxMiAwIG9iago8PCAvTGVuZ3RoIDMxNCAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCnicm8Tw/w//z/9P+P///6EAADo4CJ4KZW5kc3RyZWFtCmVuZG9iagozMTQgMCBvYmoKMjIKZW5kb2JqCjMxNSAwIG9iago8PAogIC9UeXBlIC9Gb250CiAgL1N1YnR5cGUgL1R5cGUwCiAgL0Jhc2VGb250IC9FQUFBQUErRGVqYVZ1U2Fucy1Cb2xkCiAgL0VuY29kaW5nIC9JZGVudGl0eS1ICiAgL1RvVW5pY29kZSAzMTYgMCBSCiAgL0Rlc2NlbmRhbnRGb250cyBbMzE3IDAgUl0KPj4KZW5kb2JqCjMxNyAwIG9iago8PCAvVHlwZSAvRm9udAovQmFzZUZvbnQgL0VBQUFBQStEZWphVnVTYW5zLUJvbGQgCi9DSURUb0dJRE1hcCAvSWRlbnRpdHkgCi9TdWJ0eXBlIC9DSURGb250VHlwZTIKL0NJRFN5c3RlbUluZm8gPDwgL1JlZ2lzdHJ5IChBZG9iZSkgL09yZGVyaW5nIChVQ1MpIC9TdXBwbGVtZW50IDAgPj4KL0ZvbnREZXNjcmlwdG9yIDMxMCAwIFIKL0RXIDAKL1cgWyAwIFs2MDAgMzQ4IDQxNSA4MzAgNjg3IDU5MiA3MTEgMTA0MSA2NzggNzExIDQ3OCA2NzQgMzQyIDcyMCA0OTMgNjUxIDY1MSA3NzMgNTk1IDM0MiAzNzkgNzczIDY5NSA2OTUgNjk1IDY4MyA3MTUgNzYyIDM5OSA2OTUgNjk1IDY5NSA2ODIgNzE1IDQzNSA3MzMgNzMyIDcxMSA3MTUgMzQ4IDY4MyA2MzcgNzcwIDcxNSA5MjMgNjY1IDcxNSA2OTUgODUwIDY5NSAzNzIgOTk1IDgzNyA4NTAgNjk1IDcyNSA2OTUgODM2IDgyMCAzNDIgODM2IDY0NSA4MTIgMTEwMyAzNjUgXSBdCj4+CmVuZG9iagozMTYgMCBvYmoKPDwgL0xlbmd0aCAzMTggMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nF2U246bMBBA3/cr/Lh9WIE9NuxKq0hVqkp56EVN+wEEmxSpAUTIQ/6+4DNKpSLlcrBnPIcxLvaHT4ehX0zxfR7bY1pM1w9xTtfxNrfJnNK5H56sM7FvF6X83V6a6alYg4/365Iuh6EbjTAr3iadaUzxY/1zXea7ef4Yx1P6YGLqtvvf5pjmfjib51/74+Pu8TZNf9IlDYsp8700xPxb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Cjw8CiAgL1R5cGUgL0ZvbnQKICAvU3VidHlwZSAvVHlwZTAKICAvQmFzZUZvbnQgL0VBQUFBQitEZWphVnVTYW5zCiAgL0VuY29kaW5nIC9JZGVudGl0eS1ICiAgL1RvVW5pY29kZSAzMjUgMCBSCiAgL0Rlc2NlbmRhbnRGb250cyBbMzI2IDAgUl0KPj4KZW5kb2JqCjMyNiAwIG9iago8PCAvVHlwZSAvRm9udAovQmFzZUZvbnQgL0VBQUFBQitEZWphVnVTYW5zIAovQ0lEVG9HSURNYXAgL0lkZW50aXR5IAovU3VidHlwZSAvQ0lERm9udFR5cGUyCi9DSURTeXN0ZW1JbmZvIDw8IC9SZWdpc3RyeSAoQWRvYmUpIC9PcmRlcmluZyAoVUNTKSAvU3VwcGxlbWVudCAwID4+Ci9Gb250RGVzY3JpcHRvciAzMTkgMCBSCi9EVyAwCi9XIFsgMCBbNjAwIDMxNyAzNjAgNjAzIDQxMSA2MTUgMzUyIDYxMiA1NDkgMzE3IDg2MiA2MzYgNTc1IDM5MiA2MzMgNTU3IDI3NyA1MjAgNjM2IDYzNCA1OTEgOTc0IDY5NCA2MzQgNjMzIDgxNyA2MTEgNTc5IDYzNCA2MzYgNzg3IDYzNCA2MzYgNjEwIDYzMyA2MzQgMjk0IDI3NyA2ODQgNjk4IDc3MCAzMzYgODM3IDU5MSA2MzEgNjM2IDc4NyA2MzYgNjM2IDYzNiA2ODUgNjM2IDc0OCA2MzYgNjM0IDc3NCAyNzcgNzUxIDU5MSA2ODYgNjg0IDczMSAzMTcgNjEwIDUzMCA1ODkgNTI0IDM5MCA0NTkgMzkwIDMzNiA4MzcgOTg4IDgzNyAyNzQgNTAwIDY1NSA2ODUgMzkwIDM5MCBdIF0KPj4KZW5kb2JqCjMyNSAwIG9iago8PCAvTGVuZ3RoIDMyNyAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCnicXZTbitswFEXf8xV6nD4Mtm7WDAyBklLIQy807Qc4lpwxNLZxnIf8fW2tkwzUkMu2pKO9tuxT7PZf9n03q+LnNDSHNKu26+OULsN1apI6plPXb7RRsWtmUfm7OdfjplgWH26XOZ33fTsoy6x4HWWmUsWv5c9lnm7q6XMcjumTiqld7/+YYpq6/qSe/uwOj7uH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ICAvSW0xIDcgMCBSCiAgL0ltMiA5IDAgUgogIC9JbTMgMTYgMCBSCiAgL0ltNCAxOCAwIFIKPj4KICAvQ29sb3JTcGFjZSA8PCAvRGVmYXVsdFJHQiA0IDAgUiA+Pgo+PgplbmRvYmoKMzM4IDAgb2JqCjw8IC9OdW1zIFswIDw8IC9TIC9EID4+IDEgPDwgL1MgL3IgL1N0IDIgPj4gMiA8PCAvUyAvciAvU3QgMyA+PiAzIDw8IC9TIC9yIC9TdCA0ID4+IDQgPDwgL1MgL0QgPj4gMTIgPDwgL1MgL0QgL1N0IDkgPj5dID4+CmVuZG9iagp4cmVmCjAgMzM5CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDAwMTQ1IDAwMDAwIG4gCjAwMDAwMDI2ODMgMDAwMDAgbiAKMDAwMDAwMjcwMyAwMDAwMCBuIAowMDAwMDAyNzM2IDAwMDAwIG4gCjAwMDAwMDM2ODMgMDAwMDAgbiAKMDAwMDAwMzcwMiAwMDAwMCBuIAowMDAwMDUyMjI3IDAwMDAwIG4gCjAwMDAwNTIyNDggMDAwMDAgbiAKMDAwMDEwNTUwOCAwMDAwMCBuIAowMDAwMTA1NTMwIDAwMDAwIG4gCjAwMDAxMDYwMjEgMDAwMDAgbiAKMDAwMDEwNjA0MSAwMDAwMCBuIAowMDAwMjY1Mzc1IDAwMDAwIG4gCjAwMDAyNjUwNDYgMDAwMDAgbiAKMDAwMDEwNjIzNSAwMDAwMCBuIAowMDAwMTEyNDA2IDAwMDAwIG4gCjAwMDAxMTI0MjcgMDAwMDAgbiAKMDAwMDExOTYwNyAwMDAwMCBuIAowMDAwMTE5NjI4IDAwMDAwIG4gCjAwMDAxMTk3MTMgMDAwMDAgbiAKMDAwMDExOTg1MSAwMDAwMCBuIAowMDAwMTIwNzc4IDAwMDAwIG4gCjAwMDAxMjA3OTggMDAwMDAgbiAKMDAwMDEyMDgyNSAwMDAwMCBuIAowMDAwMTIxMDM2IDAwMDAwIG4gCjAwMDAxMjE3OTcgMDAwMDAgbiAKMDAwMDEyMTgxNyAwMDAwMCBuIAowMDAwMTIyMDExIDAwMDAwIG4gCjAwMDAxMjI4NjIgMDAwMDAgbiAKMDAwMDEyMjg4MiAwMDAwMCBuIAowMDAwMTIzMDc2IDAwMDAwIG4gCjAwMDAxMjMxNzEgMDAwMDAgbiAKMDAwMDEyMzMwNyAwMDAwMCBuIAowMDAwMTI0NTgxIDAwMDAwIG4gCjAwMDAxMjQ2MDIgMDAwMDAgbiAKMDAwMDEyNDYyOSAwMDAwMCBuIAowMDAwMTI0ODQwIDAwMDAwIG4gCjAwMDAxMjYzMDIgMDAwMDAgbiAKMDAwMDEyNjMyMyAwMDAwMCBuIAowMDAwMTI2NTE3IDAwMDAwIG4gCjAwMDAxMjc1OTggMDAwMDAgbiAKMDAwMDEyNzYxOSAwMDAwMCBuIAowMDAwMTI3ODEzIDAwMDAwIG4gCjAwMDAxMjk3NTYgMDAwMDAgbiAKMDAwMDEyOTc3NyAwMDAwMCBuIAowMDAwMTI5OTcxIDAwMDAwIG4gCjAwMDAxMzE2OTkgMDAwMDAgbiAKMDAwMDEzMTcyMCAwMDAwMCBuIAowMDAwMTMxOTE0IDAwMDAwIG4gCjAwMDAxMzM4MTQgMDAwMDAgbiAKMDAwMDEzMzgzNSAwMDAwMCBuIAowMDAwMTM0MDI5IDAwMDAwIG4gCjAwMDAxMzQxMDcgMDAwMDAgbiAKMDAwMDEzNDI0MyAwMDAwMCBuIAowMDAwMTM0MzgwIDAwMDAwIG4gCjAwMDAxMzQ0NTggMDAwMDAgbiAKMDAwMDEzNDU5NSAwMDAwMCBuIAowMDAwMTM0NzM1IDAwMDAwIG4gCjAwMDAxMzQ4MTMgMDAwMDAgbiAKMDAwMDEzNDk1MCAwMDAwMCBuIAowMDAwMTM1MDkwIDAwMDAwIG4gCjAwMDAxMzUxNjggMDAwMDAgbiAKMDAwMDEzNTMwNiAwMDAwMCBuIAowMDAwMTM1NDQ2IDAwMDAwIG4gCjAwMDAxMzU1MjQgMDAwMDAgbiAKMDAwMDEzNTY2MiAwMDAwMCBuIAowMDAwMTM1ODAyIDAwMDAwIG4gCjAwMDAxMzU4ODAgMDAwMDAgbiAKMDAwMDEzNjAxOCAwMDAwMCBuIAowMDAwMTM2MTU4IDAwMDAwIG4gCjAwMDAxMzYyMzYgMDAwMDAgbiAKMDAwMDEzNjM3NCAwMDAwMCBuIAowMDAwMTM2NTE0IDAwMDAwIG4gCjAwMDAxMzY1OTIgMDAwMDAgbiAKMDAwMDEzNjcyOCAwMDAwMCBuIAowMDAwMTM2ODY4IDAwMDAwIG4gCjAwMDAxMzY5NDYgMDAwMDAgbiAKMDAwMDEzNzA4NCAwMDAwMCBuIAowMDAwMTM3MjI0IDAwMDAwIG4gCjAwMDAxMzczMDIgMDAwMDAgbiAKMDAwMDEzNzQ0MCAwMDAwMCBuIAowMDAwMTM3NTgwIDAwMDAwIG4gCjAwMDAxMzc2NTggMDAwMDAgbiAKMDAwMDEzNzc5NSAwMDAwMCBuIAowMDAwMTM3OTM1IDAwMDAwIG4gCjAwMDAxMzgwMTUgMDAwMDAgbiAKMDAwMDEzODE1MyAwMDAwMCBuIAowMDAwMTM4MjkzIDAwMDAwIG4gCjAwMDAxMzgzNzMgMDAwMDAgbiAKMDAwMDEzODUxMSAwMDAwMCBuIAowMDAwMTM4NjUxIDAwMDAwIG4gCjAwMDAxMzg3MzAgMDAwMDAgbiAKMDAwMDEzODg2OCAwMDAwMCBuIAowMDAwMTM5MDA4IDAwMDAwIG4gCjAwMDAxMzkwODggMDAwMDAgbiAKMDAwMDEzOTIyNiAwMDAwMCBuIAowMDAwMTM5MzY2IDAwMDAwIG4gCjAwMDAxMzk0NDYgMDAwMDAgbiAKMDAwMDEzOTU4NCAwMDAwMCBuIAowMDAwMTM5NzI1IDAwMDAwIG4gCjAwMDAxMzk4MDYgMDAwMDAgbiAKMDAwMDEzOTk0NiAwMDAwMCBuIAowMDAwMTQwMDg4IDAwMDAwIG4gCjAwMDAxNDAxNjkgMDAwMDAgbiAKMDAwMDE0MDMwOSAwMDAwMCBuIAowMDAwMTQwNDUxIDAwMDAwIG4gCjAwMDAxNDA1MzIgMDAwMDAgbiAKMDAwMDE0MDY3MiAwMDAwMCBuIAowMDAwMTQwODE0IDAwMDAwIG4gCjAwMDAxNDA4OTUgMDAwMDAgbiAKMDAwMDE0MTAzNSAwMDAwMCBuIAowMDAwMTQxMTc3IDAwMDAwIG4gCjAwMDAxNDEyNTYgMDAwMDAgbiAKMDAwMDE0MTM5NiAwMDAwMCBuIAowMDAwMTQxNTM4IDAwMDAwIG4gCjAwMDAxNDE2MTkgMDAwMDAgbiAKMDAwMDE0MTc1OSAwMDAwMCBuIAowMDAwMTQxOTAxIDAwMDAwIG4gCjAwMDAxNDE5ODIgMDAwMDAgbiAKMDAwMDE0MjEyMiAwMDAwMCBuIAowMDAwMTQyMjY0IDAwMDAwIG4gCjAwMDAxNDIzNDUgMDAwMDAgbiAKMDAwMDE0MjQ4NSAwMDAwMCBuIAowMDAwMTQyNjI3IDAwMDAwIG4gCjAwMDAxNDI3MDggMDAwMDAgbiAKMDAwMDE0Mjg0OCAwMDAwMCBuIAowMDAwMTQyOTkwIDAwMDAwIG4gCjAwMDAxNDMwNzAgMDAwMDAgbiAKMDAwMDE0MzIxMCAwMDAwMCBuIAowMDAwMTQzMzUyIDAwMDAwIG4gCjAwMDAxNDM0MzMgMDAwMDAgbiAKMDAwMDE0MzU3MyAwMDAwMCBuIAowMDAwMTQzNzE1IDAwMDAwIG4gCjAwMDAxNDM3OTYgMDAwMDAgbiAKMDAwMDE0MzkzNiAwMDAwMCBuIAowMDAwMTQ0MDc4IDAwMDAwIG4gCjAwMDAxNDQxNTkgMDAwMDAgbiAKMDAwMDE0NDI5OSAwMDAwMCBuIAowMDAwMTQ0NDQxIDAwMDAwIG4gCjAwMDAxNDQ1MjIgMDAwMDAgbiAKMDAwMDE0NDY2MiAwMDAwMCBuIAowMDAwMTQ0ODA0IDAwMDAwIG4gCjAwMDAxNDQ4ODMgMDAwMDAgbiAKMDAwMDE0NTAyMyAwMDAwMCBuIAowMDAwMTQ1MTY1IDAwMDAwIG4gCjAwMDAxNDUyNDYgMDAwMDAgbiAKMDAwMDE0NTM4NiAwMDAwMCBuIAowMDAwMTQ1NTI4IDAwMDAwIG4gCjAwMDAxNDU2MDggMDAwMDAgbiAKMDAwMDE0NTc0OCAwMDAwMCBuIAowMDAwMTQ1ODkwIDAwMDAwIG4gCjAwMDAxNDU5NzEgMDAwMDAgbiAKMDAwMDE0NjExMSAwMDAwMCBuIAowMDAwMTQ2MjUzIDAwMDAwIG4gCjAwMDAxNDYzMzQgMDAwMDAgbiAKMDAwMDE0NjQ3NCAwMDAwMCBuIAowMDAwMTQ2NjE2IDAwMDAwIG4gCjAwMDAxNDY2OTcgMDAwMDAgbiAKMDAwMDE0NjgzNyAwMDAwMCBuIAowMDAwMTQ2OTc5IDAwMDAwIG4gCjAwMDAxNDcwNjAgMDAwMDAgbiAKMDAwMDE0NzIwMCAwMDAwMCBuIAowMDAwMTQ3MzQyIDAwMDAwIG4gCjAwMDAxNDc0MjIgMDAwMDAgbiAKMDAwMDE0NzU2MiAwMDAwMCBuIAowMDAwMTQ3NzA0IDAwMDAwIG4gCjAwMDAxNDc3ODUgMDAwMDAgbiAKMDAwMDE0NzkyNSAwMDAwMCBuIAowMDAwMTQ4MDY3IDAwMDAwIG4gCjAwMDAxNDgxNDggMDAwMDAgbiAKMDAwMDE0ODI4OCAwMDAwMCBuIAowMDAwMTQ4NDMwIDAwMDAwIG4gCjAwMDAxNDg1MDkgMDAwMDAgbiAKMDAwMDE0ODY0OSAwMDAwMCBuIAowMDAwMTQ4NzkxIDAwMDAwIG4gCjAwMDAxNDg4NzIgMDAwMDAgbiAKMDAwMDE0OTAxMiAwMDAwMCBuIAowMDAwMTQ5MTU0IDAwMDAwIG4gCjAwMDAxNDkyMzUgMDAwMDAgbiAKMDAwMDE0OTM3NSAwMDAwMCBuIAowMDAwMTQ5NTE3IDAwMDAwIG4gCjAwMDAxNDk1OTggMDAwMDAgbiAKMDAwMDE0OTczOCAwMDAwMCBuIAowMDAwMTQ5ODgwIDAwMDAwIG4gCjAwMDAxNDk5NjEgMDAwMDAgbiAKMDAwMDE1MDEwMSAwMDAwMCBuIAowMDAwMTUwMjQzIDAwMDAwIG4gCjAwMDAxNTAzMjMgMDAwMDAgbiAKMDAwMDE1MDQ2MyAwMDAwMCBuIAowMDAwMTUwNjA1IDAwMDAwIG4gCjAwMDAxNTA2ODYgMDAwMDAgbiAKMDAwMDE1MDgyNCAwMDAwMCBuIAowMDAwMTUwOTY2IDAwMDAwIG4gCjAwMDAxNTEwNDcgMDAwMDAgbiAKMDAwMDE1MTE4NyAwMDAwMCBuIAowMDAwMTUxMzI5IDAwMDAwIG4gCjAwMDAxNTE0MTAgMDAwMDAgbiAKMDAwMDE1MTU1MCAwMDAwMCBuIAowMDAwMTUxNjkyIDAwMDAwIG4gCjAwMDAxNTE3NzMgMDAwMDAgbiAKMDAwMDE1MTkxMiAwMDAwMCBuIAowMDAwMTUyMDUzIDAwMDAwIG4gCjAwMDAxNTIxMzIgMDAwMDAgbiAKMDAwMDE1MjI3MCAwMDAwMCBuIAowMDAwMTUyNDEwIDAwMDAwIG4gCjAwMDAxNzUzMzIgMDAwMDAgbiAKMDAwMDE3NTM1NSAwMDAwMCBuIAowMDAwMTc2MTYxIDAwMDAwIG4gCjAwMDAxNzYzNzUgMDAwMDAgbiAKMDAwMDE3NzA1OSAwMDAwMCBuIAowMDAwMTc3MDgwIDAwMDAwIG4gCjAwMDAxNzcyNzYgMDAwMDAgbiAKMDAwMDE4MDI2NCAwMDAwMCBuIAowMDAwMTgwMjg2IDAwMDAwIG4gCjAwMDAxODA0ODIgMDAwMDAgbiAKMDAwMDE4MzI2MiAwMDAwMCBuIAowMDAwMTgzMjg0IDAwMDAwIG4gCjAwMDAxODM0ODAgMDAwMDAgbiAKMDAwMDE4NDYyNyAwMDAwMCBuIAowMDAwMTg0NjQ5IDAwMDAwIG4gCjAwMDAxODQ4NDUgMDAwMDAgbiAKMDAwMDE4NTk3NSAwMDAwMCBuIAowMDAwMTg1OTk3IDAwMDAwIG4gCjAwMDAxODYxOTMgMDAwMDAgbiAKMDAwMDE4NzM4MyAwMDAwMCBuIAowMDAwMTg3NDA1IDAwMDAwIG4gCjAwMDAxODc2MDEgMDAwMDAgbiAKMDAwMDE4ODkwNCAwMDAwMCBuIAowMDAwMTg4OTI2IDAwMDAwIG4gCjAwMDAxODkxMjIgMDAwMDAgbiAKMDAwMDE5MDE2NiAwMDAwMCBuIAowMDAwMTkwMTg3IDAwMDAwIG4gCjAwMDAxOTAzODMgMDAwMDAgbiAKMDAwMDE5MjUzMiAwMDAwMCBuIAowMDAwMTkyNTU0IDAwMDAwIG4gCjAwMDAxOTI3NTAgMDAwMDAgbiAKMDAwMDE5NDkwMCAwMDAwMCBuIAowMDAwMTk0OTIyIDAwMDAwIG4gCjAwMDAxOTUxMTggMDAwMDAgbiAKMDAwMDE5NTE5OSAwMDAwMCBuIAowMDAwMTk1MzM5IDAwMDAwIG4gCjAwMDAxOTU0ODEgMDAwMDAgbiAKMDAwMDE5NTU2MiAwMDAwMCBuIAowMDAwMTk1NzAyIDAwMDAwIG4gCjAwMDAxOTU4NDQgMDAwMDAgbiAKMDAwMDE5NTkyNSAwMDAwMCBuIAowMDAwMTk2MDY1IDAwMDAwIG4gCjAwMDAxOTYyMDcgMDAwMDAgbiAKMDAwMDE5NjI4OCAwMDAwMCBuIAowMDAwMTk2NDI3IDAwMDAwIG4gCjAwMDAxOTY1NjkgMDAwMDAgbiAKMDAwMDE5NjY0OSAwMDAwMCBuIAowMDAwMTk2Nzg5IDAwMDAwIG4gCjAwMDAxOTY5MzEgMDAwMDAgbiAKMDAwMDE5NzAxMiAwMDAwMCBuIAowMDAwMTk3MTUyIDAwMDAwIG4gCjAwMDAxOTcyOTQgMDAwMDAgbiAKMDAwMDE5NzM3NSAwMDAwMCBuIAowMDAwMTk3NTE0IDAwMDAwIG4gCjAwMDAxOTc2NTYgMDAwMDAgbiAKMDAwMDE5NzczNyAwMDAwMCBuIAowMDAwMTk3ODc3IDAwMDAwIG4gCjAwMDAxOTgwMTkgMDAwMDAgbiAKMDAwMDE5ODA5OSAwMDAwMCBuIAowMDAwMTk4MjM5IDAwMDAwIG4gCjAwMDAxOTgzODEgMDAwMDAgbiAKMDAwMDE5ODQ2MSAwMDAwMCBuIAowMDAwMTk4NjAwIDAwMDAwIG4gCjAwMDAxOTg3NDIgMDAwMDAgbiAKMDAwMDE5ODgyMiAwMDAwMCBuIAowMDAwMTk4OTYyIDAwMDAwIG4gCjAwMDAxOTkxMDQgMDAwMDAgbiAKMDAwMDE5OTE4NiAwMDAwMCBuIAowMDAwMTk5MzI2IDAwMDAwIG4gCjAwMDAxOTk0NjggMDAwMDAgbiAKMDAwMDE5OTU1MCAwMDAwMCBuIAowMDAwMTk5NjkwIDAwMDAwIG4gCjAwMDAxOTk4MzIgMDAwMDAgbiAKMDAwMDE5OTkxNCAwMDAwMCBuIAowMDAwMjAwMDU0IDAwMDAwIG4gCjAwMDAyMDAxOTYgMDAwMDAgbiAKMDAwMDIwMDI3OCAwMDAwMCBuIAowMDAwMjAwNDE4IDAwMDAwIG4gCjAwMDAyMDA1NjAgMDAwMDAgbiAKMDAwMDIwMDY0MSAwMDAwMCBuIAowMDAwMjAwNzgxIDAwMDAwIG4gCjAwMDAyMDA5MjMgMDAwMDAgbiAKMDAwMDIwMTAwMyAwMDAwMCBuIAowMDAwMjAxMTQyIDAwMDAwIG4gCjAwMDAyMDEyODQgMDAwMDAgbiAKMDAwMDIwMTM2NCAwMDAwMCBuIAowMDAwMjAxNTAzIDAwMDAwIG4gCjAwMDAyMDE2NDUgMDAwMDAgbiAKMDAwMDIwMTcyNSAwMDAwMCBuIAowMDAwMjAxODYzIDAwMDAwIG4gCjAwMDAyMDIwMDUgMDAwMDAgbiAKMDAwMDIwMjA4NSAwMDAwMCBuIAowMDAwMjAyMjI0IDAwMDAwIG4gCjAwMDAyMDIzNjYgMDAwMDAgbiAKMDAwMDIwMjQ0NiAwMDAwMCBuIAowMDAwMjAyNTg2IDAwMDAwIG4gCjAwMDAyMDI3MjggMDAwMDAgbiAKMDAwMDIwMjgwOCAwMDAwMCBuIAowMDAwMjAyOTQ3IDAwMDAwIG4gCjAwMDAyMDMwODkgMDAwMDAgbiAKMDAwMDIxNzMxNSAwMDAwMCBuIAowMDAwMjE3MzM4IDAwMDAwIG4gCjAwMDAyMTc3MTEgMDAwMDAgbiAKMDAwMDIxNzkyNSAwMDAwMCBuIAowMDAwMjE4MTkwIDAwMDAwIG4gCjAwMDAyMzMwMDUgMDAwMDAgbiAKMDAwMDIzMjk4MiAwMDAwMCBuIAowMDAwMjMzMTA1IDAwMDAwIG4gCjAwMDAyMzMxMjUgMDAwMDAgbiAKMDAwMDIzMzc4MCAwMDAwMCBuIAowMDAwMjMzMjkwIDAwMDAwIG4gCjAwMDAyMzQzNjMgMDAwMDAgbiAKMDAwMDIzNDM4NCAwMDAwMCBuIAowMDAwMjM0NjQ0IDAwMDAwIG4gCjAwMDAyNTA5NjYgMDAwMDAgbiAKMDAwMDI1MDk0MyAwMDAwMCBuIAowMDAwMjUxMDcxIDAwMDAwIG4gCjAwMDAyNTEwOTEgMDAwMDAgbiAKMDAwMDI1MTc5NCAwMDAwMCBuIAowMDAwMjUxMjUxIDAwMDAwIG4gCjAwMDAyNTI0NDAgMDAwMDAgbiAKMDAwMDI1MjQ2MSAwMDAwMCBuIAowMDAwMjUyNzIzIDAwMDAwIG4gCjAwMDAyNjM4MDEgMDAwMDAgbiAKMDAwMDI2Mzc3OCAwMDAwMCBuIAowMDAwMjYzOTAwIDAwMDAwIG4gCjAwMDAyNjM5MjAgMDAwMDAgbiAKMDAwMDI2NDUwMyAwMDAwMCBuIAowMDAwMjY0MDg0IDAwMDAwIG4gCjAwMDAyNjUwMjUgMDAwMDAgbiAKMDAwMDI2NTI2NiAwMDAwMCBuIAowMDAwMjY1NjA1IDAwMDAwIG4gCnRyYWlsZXIKPDwKICAvUm9vdCAzMzcgMCBSCiAgL0luZm8gMSAwIFIKICAvSUQgWzxGRUUxRkJDRDUyNDY1N0YzNUJBQzg0MzM4QzRGRTFERT4gPEZFRTFGQkNENTI0NjU3RjM1QkFDODQzMzhDNEZFMURFPl0KICAvU2l6ZSAzMzkKPj4Kc3RhcnR4cmVmCjI2NTc0NQolJUVPRgo=