FORMULARIO DE CONTACTO F1

Programa Visa F1 – Año académico en Estados Unidos

“¡No dudes en consultarnos! Nos encantará resolver todas tus cuestiones, sin el menor compromiso”

PCEtLSBOb3RlIDoKICAgLSBZb3UgY2FuIG1vZGlmeSB0aGUgZm9udCBzdHlsZSBhbmQgZm9ybSBzdHlsZSB0byBzdWl0IHlvdXIgd2Vic2l0ZS4gCiAgIC0gQ29kZSBsaW5lcyB3aXRoIGNvbW1lbnRzIERvIG5vdCByZW1vdmUgdGhpcyBjb2RlIGFyZSByZXF1aXJlZCBmb3IgdGhlIGZvcm0gdG8gd29yayBwcm9wZXJseSwgbWFrZSBzdXJlIHRoYXQgeW91IGRvIG5vdCByZW1vdmUgdGhlc2UgbGluZXMgb2YgY29kZS4gCiAgIC0gVGhlIE1hbmRhdG9yeSBjaGVjayBzY3JpcHQgY2FuIG1vZGlmaWVkIGFzIHRvIHN1aXQgeW91ciBidXNpbmVzcyBuZWVkcy4gCiAgIC0gSXQgaXMgaW1wb3J0YW50IHRoYXQgeW91IHRlc3QgdGhlIG1vZGlmaWVkIGZvcm0gYmVmb3JlIGdvaW5nIGxpdmUuLS0+CjxkaXYgaWQ9J2NybVdlYlRvRW50aXR5Rm9ybScgY2xhc3M9J3pjd2ZfbGJsVG9wQm90dG9tIGNybVdlYlRvRW50aXR5Rm9ybScgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6ICM2NjdCOUE7Y29sb3I6ICNGRkZGRkY7bWF4LXdpZHRoOiA5MDBweDsnPgogIDxtZXRhIG5hbWU9J3ZpZXdwb3J0JyBjb250ZW50PSd3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wJz4KICAgPE1FVEEgSFRUUC1FUVVJViA9J2NvbnRlbnQtdHlwZScgQ09OVEVOVD0ndGV4dC9odG1sO2NoYXJzZXQ9VVRGLTgnPgogICA8Zm9ybSBhY3Rpb249J2h0dHBzOi8vY3JtLnpvaG8uY29tL2NybS9XZWJUb0xlYWRGb3JtJyBuYW1lPVdlYlRvTGVhZHM0OTE4NDMwMDAwNDA2NzE0MzAgbWV0aG9kPSdQT1NUJyBvblN1Ym1pdD0namF2YXNjcmlwdDpkb2N1bWVudC5jaGFyc2V0PSJVVEYtOCI7IHJldHVybiBjaGVja01hbmRhdG9yeTQ5MTg0MzAwMDA0MDY3MTQzMCgpJyBhY2NlcHQtY2hhcnNldD0nVVRGLTgnPgogPGlucHV0IHR5cGU9J3RleHQnIHN0eWxlPSdkaXNwbGF5Om5vbmU7JyBuYW1lPSd4blFzanNkcCcgdmFsdWU9JzczYzFjODA2YzhhYjMxMGM2ZWViMzFjNjI0YmIzMWNhZDkxMzYzYTBhNWFmYmY4ZjkzNGMwNWUwYmI4MDNhODYnPjwvaW5wdXQ+IAogPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nemNfZ2FkJyBpZD0nemNfZ2FkJyB2YWx1ZT0nJz48L2lucHV0PiAKIDxpbnB1dCB0eXBlPSd0ZXh0JyBzdHlsZT0nZGlzcGxheTpub25lOycgbmFtZT0neG1Jd3RMRCcgdmFsdWU9JzE3NjcyYjk1NTdjYWQ3YzE4MzgyMTFmOTA0ZDE0Mzg4YTNiNjdlZjExOWYxZWI2MTlhZWE1NTdkMjhkNGU1MzknPjwvaW5wdXQ+IAogPGlucHV0IHR5cGU9J3RleHQnICBzdHlsZT0nZGlzcGxheTpub25lOycgbmFtZT0nYWN0aW9uVHlwZScgdmFsdWU9J1RHVmhaSE09Jz48L2lucHV0PgogPGlucHV0IHR5cGU9J3RleHQnIHN0eWxlPSdkaXNwbGF5Om5vbmU7JyBuYW1lPSdyZXR1cm5VUkwnIHZhbHVlPSdodHRwcyYjeDNhOyYjeDJmOyYjeDJmO3d3dy5pY2VzLXNwYWluLmNvbSYjeDJmO2dyYWNpYXMtcG9yLWNvbnRhY3RhciYjeDJmOycgPiA8L2lucHV0PgoJIDwhLS0gRG8gbm90IHJlbW92ZSB0aGlzIGNvZGUuIC0tPgo8c3R5bGU+Cmh0bWwsYm9keXsKCW1hcmdpbjogMHB4Owp9CiNjcm1XZWJUb0VudGl0eUZvcm0uemN3Zl9sYmxUb3BCb3R0b20gewoJd2lkdGg6MTAwJTsKCXBhZGRpbmc6IDI1cHg7CgltYXJnaW46IDAgYXV0bzsKCWJveC1zaXppbmc6IGJvcmRlci1ib3g7Cglib3JkZXItcmFkaXVzOiAzMHB4Owp9CiNjcm1XZWJUb0VudGl0eUZvcm0uemN3Zl9sYmxUb3BCb3R0b20gKiB7Cglib3gtc2l6aW5nOiBib3JkZXItYm94Owp9CiNjcm1XZWJUb0VudGl0eUZvcm17dGV4dC1hbGlnbjogbGVmdDt9CiNjcm1XZWJUb0VudGl0eUZvcm0gKiB7CglkaXJlY3Rpb246IGx0cjsKfQouemN3Zl9sYmxUb3BCb3R0b20gLnpjd2ZfdGl0bGUgewoJd29yZC13cmFwOiBicmVhay13b3JkOwoJcGFkZGluZzogMHB4IDZweCAxMHB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KLnpjd2ZfbGJsVG9wQm90dG9tIC56Y3dmX2NvbF9mbGQgaW5wdXRbdHlwZT10ZXh0XSwgLnpjd2ZfbGJsVG9wQm90dG9tIC56Y3dmX2NvbF9mbGQgdGV4dGFyZWEgewoJd2lkdGg6IDEwMCU7Cglib3JkZXI6IDFweCBzb2xpZCAjYzBjNmNjICFpbXBvcnRhbnQ7CglyZXNpemU6IHZlcnRpY2FsOwoJYm9yZGVyLXJhZGl1czogMnB4OwoJZmxvYXQ6IGxlZnQ7CmJhY2tncm91bmQtY29sb3I6ICNGQ0U2N0Y7Cn0KLnpjd2ZfbGJsVG9wQm90dG9tIC56Y3dmX2NvbF9sYWIgewoJd2lkdGg6IDMwJTsKCXdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7CglwYWRkaW5nOiAwcHggNnB4IDBweDsKCW1hcmdpbi1yaWdodDogMTBweDsKCW1hcmdpbi10b3A6IDVweDsKCXBhZGRpbmctYm90dG9tOiA0cHg7Cn0KLnpjd2ZfbGJsVG9wQm90dG9tIC56Y3dmX2NvbF9mbGQgewoJd2lkdGg6IDEwMCU7CglwYWRkaW5nOiAwcHggNnB4IDBweDsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCW1hcmdpbi10b3A6IDVweDsKfQouemN3Zl9sYmxUb3BCb3R0b20gLnpjd2ZfcHJpdmFjeXtwYWRkaW5nOiA2cHg7fQouemN3Zl9sYmxUb3BCb3R0b20gLndmcm1fZmxkX2RwTm57ZGlzcGxheTogbm9uZTt9Ci5kSUJ7ZGlzcGxheTogaW5saW5lLWJsb2NrO30KLnpjd2ZfbGJsVG9wQm90dG9tIC56Y3dmX2NvbF9mbGRfc2x0IHsKCXdpZHRoOiAxMDAlOwoJYm9yZGVyOiAxcHggc29saWQgI2NjYzsKCWJhY2tncm91bmQ6ICNmZmY7Cglib3JkZXItcmFkaXVzOiA0cHg7Cglmb250LXNpemU6IDE1cHg7CglmbG9hdDogbGVmdDsKCXJlc2l6ZTogdmVydGljYWw7CglwYWRkaW5nOiAycHggNXB4Owp9Ci56Y3dmX2xibFRvcEJvdHRvbSAuemN3Zl9yb3c6YWZ0ZXIsIC56Y3dmX2xibFRvcEJvdHRvbSAuemN3Zl9jb2xfZmxkOmFmdGVyIHsKCWNvbnRlbnQ6ICcnOwoJZGlzcGxheTogdGFibGU7CgljbGVhcjogYm90aDsKfQouemN3Zl9sYmxUb3BCb3R0b20gLnpjd2ZfY29sX2hlbHAgewoJZmxvYXQ6IGxlZnQ7CgltYXJnaW4tbGVmdDogN3B4OwoJZm9udC1zaXplOiAxNXB4OwoJbWF4LXdpZHRoOiAzNSU7Cgl3b3JkLWJyZWFrOiBicmVhay13b3JkOwp9Ci56Y3dmX2xibFRvcEJvdHRvbSAuemN3Zl9oZWxwX2ljb24gewoJY3Vyc29yOiBwb2ludGVyOwoJd2lkdGg6IDE2cHg7CgloZWlnaHQ6IDE2cHg7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CgliYWNrZ3JvdW5kOiAjZmZmOwoJYm9yZGVyOiAxcHggc29saWQgI2MwYzZjYzsKCWNvbG9yOiAjYzFjMWMxOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJZm9udC1zaXplOiAxMXB4OwoJbGluZS1oZWlnaHQ6IDE2cHg7Cglmb250LXdlaWdodDogYm9sZDsKCWJvcmRlci1yYWRpdXM6IDUwJTsKfQouemN3Zl9sYmxUb3BCb3R0b20gLnpjd2Zfcm93IHttYXJnaW46IDE1cHggMHB4O30KLnpjd2ZfbGJsVG9wQm90dG9tIC5mb3Jtc3VibWl0IHsKCW1hcmdpbi1yaWdodDogNXB4OwoJY3Vyc29yOiBwb2ludGVyOwoJY29sb3I6IHZhcigtLWJhc2VDb2xvcik7Cglmb250LXNpemU6IDE1cHg7Cn0KLnpjd2ZfbGJsVG9wQm90dG9tIC56Y3dmX3ByaXZhY3lfdHh0IHsKCXdpZHRoOiA5MCU7Cgljb2xvcjogcmdiKDAsIDAsIDApOwoJZm9udC1zaXplOiAxNXB4OwoJZm9udC1mYW1pbHk6IFZlcmRhbmE7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgl2ZXJ0aWNhbC1hbGlnbjogdG9wOwoJY29sb3I6IHZhcigtLWJhc2VDb2xvcik7CglwYWRkaW5nLXRvcDogMnB4OwoJbWFyZ2luLWxlZnQ6IDZweDsKfQouemN3Zl9sYmxUb3BCb3R0b20gLnpjd2ZfYnV0dG9uIHsKCWZvbnQtc2l6ZTogMTVweDsKCWNvbG9yOiAjMzA1QjlBOwoJYm9yZGVyOiAxcHggc29saWQgI2MwYzZjYzsKCXBhZGRpbmc6IDNweCA5cHg7Cglib3JkZXItcmFkaXVzOiA0cHg7CgljdXJzb3I6IHBvaW50ZXI7CgltYXgtd2lkdGg6IDEyMHB4OwoJb3ZlcmZsb3c6IGhpZGRlbjsKCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQouemN3Zl9sYmxUb3BCb3R0b20gLnpjd2ZfdG9vbHRpcF9vdmVyewoJcG9zaXRpb246IHJlbGF0aXZlOwp9Ci56Y3dmX2xibFRvcEJvdHRvbSAuemN3Zl90b29sdGlwX2N0bnsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCWJhY2tncm91bmQ6ICNkZWRlZGU7CglwYWRkaW5nOiAzcHggNnB4OwoJdG9wOiAzcHg7Cglib3JkZXItcmFkaXVzOiA0cHg7d29yZC1icmVhazogYnJlYWstd29yZDsKCW1pbi13aWR0aDogMTAwcHg7CgltYXgtd2lkdGg6IDE1MHB4OwoJY29sb3I6IHZhcigtLWJhc2VDb2xvcik7Cgl6LWluZGV4OiAxMDA7Cn0KLnpjd2ZfbGJsVG9wQm90dG9tIC56Y3dmX2NrYm94ewoJZmxvYXQ6IGxlZnQ7Cn0KLnpjd2ZfbGJsVG9wQm90dG9tIC56Y3dmX2ZpbGV7Cgl3aWR0aDogMzUlOwoJYm94LXNpemluZzogYm9yZGVyLWJveDsKCWZsb2F0OiBsZWZ0Owp9Ci5jbGVhckI6YWZ0ZXJ7Cgljb250ZW50OicnOwoJZGlzcGxheTogYmxvY2s7CgljbGVhcjogYm90aDsKfQpAbWVkaWEgYWxsICB7CgkuemN3Zl9sYmxUb3BCb3R0b20gLnpjd2ZfY29sX2xhYiwgLnpjd2ZfbGJsVG9wQm90dG9tIC56Y3dmX2NvbF9mbGQgewoJCXdpZHRoOiBhdXRvOwoJCWZsb2F0OiBub25lICFpbXBvcnRhbnQ7Cgl9CgkuemN3Zl9sYmxUb3BCb3R0b20gLnpjd2ZfY29sX2hlbHAge3dpZHRoOiA0MCU7fQp9Cjwvc3R5bGU+CjxkaXYgY2xhc3M9J3pjd2Zfcm93Jz48ZGl2IGNsYXNzPSd6Y3dmX2NvbF9sYWInIHN0eWxlPSdmb250LXNpemU6MTVweDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7Jz48bGFiZWwgZm9yPSdDb21wYW55Jz5Ob21icmUgeSBhcGVsbGlkb3MgZGVsIHByb2dlbml0b3IvYTxzcGFuIHN0eWxlPSdjb2xvcjpyZWQ7Jz4qPC9zcGFuPjwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz0nemN3Zl9jb2xfZmxkJz48aW5wdXQgdHlwZT0ndGV4dCcgaWQ9J0NvbXBhbnknIG5hbWU9J0NvbXBhbnknIG1heGxlbmd0aD0nMjAwJz48L2lucHV0PjxkaXYgY2xhc3M9J3pjd2ZfY29sX2hlbHAnPjwvZGl2PjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSd6Y3dmX3Jvdyc+PGRpdiBjbGFzcz0nemN3Zl9jb2xfbGFiJyBzdHlsZT0nZm9udC1zaXplOjE1cHg7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyc+PGxhYmVsIGZvcj0nTGFzdF9OYW1lJz5Ob21icmUgeSBhcGVsbGlkb3MgZGVsIGVzdHVkaWFudGU8c3BhbiBzdHlsZT0nY29sb3I6cmVkOyc+Kjwvc3Bhbj48L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9J3pjd2ZfY29sX2ZsZCc+PGlucHV0IHR5cGU9J3RleHQnIGlkPSdMYXN0X05hbWUnIG5hbWU9J0xhc3QgTmFtZScgbWF4bGVuZ3RoPSc4MCc+PC9pbnB1dD48ZGl2IGNsYXNzPSd6Y3dmX2NvbF9oZWxwJz48L2Rpdj48L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0nemN3Zl9yb3cnPjxkaXYgY2xhc3M9J3pjd2ZfY29sX2xhYicgc3R5bGU9J2ZvbnQtc2l6ZToxNXB4OyBmb250LWZhbWlseTogVmVyZGFuYTsnPjxsYWJlbCBmb3I9J0xFQURDRjgyJz5GZWNoYSBkZSBuYWNpbWllbnRvIGRlbCBlc3R1ZGlhbnRlPHNwYW4gc3R5bGU9J2NvbG9yOnJlZDsnPio8L3NwYW4+PC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPSd6Y3dmX2NvbF9mbGQnPjxpbnB1dCB0eXBlPSd0ZXh0JyBpZD0nTEVBRENGODInIG5hbWU9J0xFQURDRjgyJyBtYXhsZW5ndGg9JzIwJyBmdHlwZT0nZGF0ZScgcGxhY2Vob2xkZXI9J0REL01NL1lZWVknIHRwbGlkPSc0OTE4NDMwMDAwNDA2NzE0MzBMRUFEQ0Y4Micgb25mb2N1cz0nZm9ybUNhbGVuZGVyLnN0RXYoZXZlbnQpO2Zvcm1DYWxlbmRlci5jcmVhdGVDYWxlbmRhcih0aGlzKTsnIGF1dG9jb21wbGV0ZT0nb2ZmJz48L2lucHV0PjxkaXYgaWQ9J3RlbXBsYXRlNDkxODQzMDAwMDQwNjcxNDMwTEVBRENGODInICBvbmNsaWNrPSdmb3JtQ2FsZW5kZXIuc3RFdihldmVudCk7JyAgY2xhc3M9J3RlbXBDYWxEaXYnPjwvZGl2PjxkaXYgY2xhc3M9J3pjd2ZfY29sX2hlbHAnPjwvZGl2PjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSd6Y3dmX3Jvdyc+PGRpdiBjbGFzcz0nemN3Zl9jb2xfbGFiJyBzdHlsZT0nZm9udC1zaXplOjE1cHg7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyc+PGxhYmVsIGZvcj0nTEVBRENGNic+RS1tYWlsPHNwYW4gc3R5bGU9J2NvbG9yOnJlZDsnPio8L3NwYW4+PC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPSd6Y3dmX2NvbF9mbGQnPjxpbnB1dCB0eXBlPSd0ZXh0JyBmdHlwZT0nZW1haWwnIGlkPSdMRUFEQ0Y2JyBuYW1lPSdMRUFEQ0Y2JyBtYXhsZW5ndGg9JzEwMCc+PC9pbnB1dD48ZGl2IGNsYXNzPSd6Y3dmX2NvbF9oZWxwJz48L2Rpdj48L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0nemN3Zl9yb3cnPjxkaXYgY2xhc3M9J3pjd2ZfY29sX2xhYicgc3R5bGU9J2ZvbnQtc2l6ZToxNXB4OyBmb250LWZhbWlseTogVmVyZGFuYTsnPjxsYWJlbCBmb3I9J0xFQURDRjU0Jz5UZWzDqWZvbm88c3BhbiBzdHlsZT0nY29sb3I6cmVkOyc+Kjwvc3Bhbj48L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9J3pjd2ZfY29sX2ZsZCc+PGlucHV0IHR5cGU9J3RleHQnIGlkPSdMRUFEQ0Y1NCcgbmFtZT0nTEVBRENGNTQnIG1heGxlbmd0aD0nOSc+PC9pbnB1dD48ZGl2IGNsYXNzPSd6Y3dmX2NvbF9oZWxwJz48L2Rpdj48L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0nemN3Zl9yb3cnPjxkaXYgY2xhc3M9J3pjd2ZfY29sX2xhYicgc3R5bGU9J2ZvbnQtc2l6ZToxNXB4OyBmb250LWZhbWlseTogVmVyZGFuYTsnPjxsYWJlbCBmb3I9J0xFQURDRjEyMSc+UHJvdmluY2lhPHNwYW4gc3R5bGU9J2NvbG9yOnJlZDsnPio8L3NwYW4+PC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPSd6Y3dmX2NvbF9mbGQnPjxzZWxlY3QgY2xhc3M9J3pjd2ZfY29sX2ZsZF9zbHQnIGlkPSdMRUFEQ0YxMjEnIG5hbWU9J0xFQURDRjEyMScgID4KCQkJPG9wdGlvbiB2YWx1ZT0nLU5vbmUtJz4tTm9uZS08L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nQWxhdmEnPkFsYXZhPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0FsYmFjZXRlJz5BbGJhY2V0ZTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdBbGljYW50ZSc+QWxpY2FudGU8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nQWxtZXImaWFjdXRlO2EnPkFsbWVyJmlhY3V0ZTthPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0FzdHVyaWFzJz5Bc3R1cmlhczwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdBdmlsYSc+QXZpbGE8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nQmFkYWpveic+QmFkYWpvejwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdCYXJjZWxvbmEnPkJhcmNlbG9uYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdCdXJnb3MnPkJ1cmdvczwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdDYWNlcmVzJz5DYWNlcmVzPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0NhZGl6Jz5DYWRpejwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdDYW50YWJyaWEnPkNhbnRhYnJpYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdDYXN0ZWxsb24nPkNhc3RlbGxvbjwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdDZXV0YSc+Q2V1dGE8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nQ2l1ZGFkJiN4MjA7UmVhbCc+Q2l1ZGFkIFJlYWw8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nQ29yZG9iYSc+Q29yZG9iYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdDdWVuY2EnPkN1ZW5jYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdHZXJvbmEnPkdlcm9uYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdHcmFuYWRhJz5HcmFuYWRhPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0d1YWRhbGFqYXJhJz5HdWFkYWxhamFyYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdHdWlwdXpjb2EnPkd1aXB1emNvYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdIdWVsdmEnPkh1ZWx2YTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdIdWVzY2EnPkh1ZXNjYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdJc2xhcyYjeDIwO0JhbGVhcmVzJz5Jc2xhcyBCYWxlYXJlczwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdKYWVuJz5KYWVuPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J0xhJiN4MjA7Q29ydSZudGlsZGU7YSc+TGEgQ29ydSZudGlsZGU7YTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdMYSYjeDIwO1Jpb2phJz5MYSBSaW9qYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdMYXMmI3gyMDtQYWxtYXMnPkxhcyBQYWxtYXM8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nTGVvbic+TGVvbjwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdMbGVpZGEnPkxsZWlkYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdMdWdvJz5MdWdvPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J01hZHJpZCc+TWFkcmlkPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J01hbGFnYSc+TWFsYWdhPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J01lbGlsbGEnPk1lbGlsbGE8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nTXVyY2lhJz5NdXJjaWE8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nTmF2YXJyYSc+TmF2YXJyYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdPcmVuc2UnPk9yZW5zZTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdQYWxlbmNpYSc+UGFsZW5jaWE8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nUG9udGV2ZWRyYSc+UG9udGV2ZWRyYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdTYWxhbWFuY2EnPlNhbGFtYW5jYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdTYW50YSYjeDIwO0NydXomI3gyMDtkZSYjeDIwO1RlbmVyaWZlJz5TYW50YSBDcnV6IGRlIFRlbmVyaWZlPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J1NlZ292aWEnPlNlZ292aWE8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nU2V2aWxsYSc+U2V2aWxsYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdTb3JpYSc+U29yaWE8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nVGFycmFnb25hJz5UYXJyYWdvbmE8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nVGVydWVsJz5UZXJ1ZWw8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nVG9sZWRvJz5Ub2xlZG88L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nVmFsZW5jaWEnPlZhbGVuY2lhPC9vcHRpb24+CgkJCTxvcHRpb24gdmFsdWU9J1ZhbGxhZG9saWQnPlZhbGxhZG9saWQ8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nVml6Y2F5YSc+Vml6Y2F5YTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdaYW1vcmEnPlphbW9yYTwvb3B0aW9uPgoJCQk8b3B0aW9uIHZhbHVlPSdaYXJhZ296YSc+WmFyYWdvemE8L29wdGlvbj4KCQkJPG9wdGlvbiB2YWx1ZT0nT3Ryb3MnPk90cm9zPC9vcHRpb24+CgkJPC9zZWxlY3Q+PGRpdiBjbGFzcz0nemN3Zl9jb2xfaGVscCc+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9J3pjd2Zfcm93Jz48ZGl2IGNsYXNzPSd6Y3dmX2NvbF9sYWInIHN0eWxlPSdmb250LXNpemU6MTVweDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7Jz48bGFiZWwgZm9yPSdEZXNjcmlwdGlvbic+Q29tZW50YXJpbzwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz0nemN3Zl9jb2xfZmxkJz48dGV4dGFyZWEgaWQ9J0Rlc2NyaXB0aW9uJyBuYW1lPSdEZXNjcmlwdGlvbic+PC90ZXh0YXJlYT48ZGl2IGNsYXNzPSd6Y3dmX2NvbF9oZWxwJz48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSd6Y3dmX3Jvdyc+PGRpdiBjbGFzcz0nemN3Zl9wcml2YWN5Jz48ZGl2IGNsYXNzPSdkSUIgdmF0JyBhbGlnbj0nbGVmdCc+PGRpdiBjbGFzcz0nZGlzcGxheVB1cnBvc2UgIGYxMyc+PGxhYmVsIGNsYXNzPSduZXdDdXN0b21jaGtib3gtbWQgZElCIHcxMDBwZXInPjxpbnB1dCBhdXRvY29tcGxldGU9J29mZicgaWQ9J3ByaXZhY3lUb29sNDkxODQzMDAwMDQwNjcxNDMwJyB0eXBlPSdjaGVja2JveCcgbmFtZT0ncHJpdmFjeVRvb2wnIG9uY2xpY2s9J2Rpc2FibGVFcnI0OTE4NDMwMDAwNDA2NzE0MzAoKSc+PC9sYWJlbD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSdkSUIgemN3Zl9wcml2YWN5X3R4dCcgc3R5bGU9J2ZvbnQtc2l6ZTogMTVweDtmb250LWZhbWlseTpWZXJkYW5hO2NvbG9yOiAjRkZGRkZGOyc+QWNlcHRvIGxhIDxhIGhyZWY9J2h0dHBzOi8vd3d3LmljZXMtc3BhaW4uY29tL3BvbGl0aWNhLWRlLXByaXZhY2lkYWQvJyB0aXRsZT0naHR0cHM6Ly93d3cuaWNlcy1zcGFpbi5jb20vcG9saXRpY2EtZGUtcHJpdmFjaWRhZC8nIHRhcmdldD0nX2JsYW5rJz5Qb2zDrXRpY2EgZGUgcHJpdmFjaWRhZDwvYT4uPC9kaXY+IDxkaXYgIGlkPSdwcml2YWN5RXJyNDkxODQzMDAwMDQwNjcxNDMwJyBzdHlsZT0nZm9udC1zaXplOjEycHg7Y29sb3I6cmVkO3BhZGRpbmctbGVmdDogNXB4O3Zpc2liaWxpdHk6aGlkZGVuOyc+QWNlcHRlIHBvciBmYXZvcjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9J3pjd2Zfcm93Jz48ZGl2IGNsYXNzPSd6Y3dmX2NvbF9sYWInPjwvZGl2PjxkaXYgY2xhc3M9J3pjd2ZfY29sX2ZsZCc+PGlucHV0IHR5cGU9J3N1Ym1pdCcgaWQ9J2Zvcm1zdWJtaXQnIGNsYXNzPSdmb3Jtc3VibWl0IHpjd2ZfYnV0dG9uJyB2YWx1ZT0nRW52aWFyJyB0aXRsZT0nRW52aWFyJz48aW5wdXQgdHlwZT0ncmVzZXQnIGNsYXNzPSd6Y3dmX2J1dHRvbicgbmFtZT0ncmVzZXQnIHZhbHVlPSdSZXN0YWJsZWNlcicgdGl0bGU9J1Jlc3RhYmxlY2VyJz48L2Rpdj48L2Rpdj4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPnZhciBmb3JtQ2FsZW5kZXI9e3VzZXJQYXR0ZXJuOidZWVlZLU1NLUREJyxjdXJyRGF0ZU9iajp2b2lkIDAsY3Vyck1vbnRoOnZvaWQgMCxjdXJyWWVhcjp2b2lkIDAsY3VyckRhdGU6dm9pZCAwLGN1cnJNb250aEVuZDpbMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdLG1vbnRoTmFtZTp2b2lkIDAsZGF5czp2b2lkIDAsZGlzcGxheVBhbmVsOnZvaWQgMCxpc0hpZGVUb2RheTp2b2lkIDAsY2FsRGVmQ29sb3I6JyM1MTVDQ0InLHdlZWtkYXlzOnsxOidTdW5kYXknLDI6J01vbmRheScsMzonVHVlc2RheScsNDonV2VkbmVzZGF5Jyw1OidUaHVyc2RheScsNjonRnJpZGF5Jyw3OidTYXR1cmRheSd9LG1vbnRoczp7MTonSmFudWFyeScsMjonRmVicnVhcnknLDM6J01hcmNoJyw0OidBcHJpbCcsNTonTWF5Jyw2OidKdW5lJyw3OidKdWx5Jyw4OidBdWd1c3QnLDk6J1NlcHRlbWJlcicsMTA6J09jdG9iZXInLDExOidOb3ZlbWJlcicsMTI6J0RlY2VtYmVyJ30saW5pdDpmdW5jdGlvbigpe3RoaXMubW9udGhOYW1lPVt7aHRtbDonSmFudWFyeScsdmFsdWU6MH0se2h0bWw6J0ZlYnJ1YXJ5Jyx2YWx1ZToxfSx7aHRtbDonTWFyY2gnLHZhbHVlOjJ9LHtodG1sOidBcHJpbCcsdmFsdWU6M30se2h0bWw6J01heScsdmFsdWU6NH0se2h0bWw6J0p1bmUnLHZhbHVlOjV9LHtodG1sOidKdWx5Jyx2YWx1ZTo2fSx7aHRtbDonQXVndXN0Jyx2YWx1ZTo3fSx7aHRtbDonU2VwdGVtYmVyJyx2YWx1ZTo4fSx7aHRtbDonT2N0b2JlcicsdmFsdWU6OX0se2h0bWw6J05vdmVtYmVyJyx2YWx1ZToxMH0se2h0bWw6J0RlY2VtYmVyJyx2YWx1ZToxMX1dLHRoaXMuZGF5cz1bJ3NzdW5kYXknLCdzbW9uZGF5Jywnc3R1ZXNkYXknLCdzd2VkbmVzZGF5Jywnc3RodXJzZGF5Jywnc2ZyaWRheScsJ3NzYXR1cmRheSddLHRoaXMuZGF5TmFtZXNTaG9ydD1bJ1N1bicsJ01vbicsJ1R1ZScsJ1dlZCcsJ1RodScsJ0ZyaScsJ1NhdCddLHRoaXMuZGF5c0Jhc2VkT25QcmVmZXJuY2U9Wydzc3VuZGF5Jywnc21vbmRheScsJ3N0dWVzZGF5Jywnc3dlZG5lc2RheScsJ3N0aHVyc2RheScsJ3NmcmlkYXknLCdzc2F0dXJkYXknXTt2YXIgZT10aGlzLmRheXNCYXNlZE9uUHJlZmVybmNlWzBdO3RoaXMuZGF5c0Jhc2VkT25QcmVmZXJuY2Uuc2hpZnQoMSksdGhpcy5kYXlzQmFzZWRPblByZWZlcm5jZS5wdXNoKGUpO3ZhciB0PXRoaXMuZGF5TmFtZXNTaG9ydFswXTt0aGlzLmRheU5hbWVzU2hvcnQuc2hpZnQoMSksdGhpcy5kYXlOYW1lc1Nob3J0LnB1c2godCksdGhpcy5jdXJyRGF0ZU9iaj1uZXcgRGF0ZSx0aGlzLmN1cnJNb250aD10aGlzLmN1cnJEYXRlT2JqLmdldE1vbnRoKCksdGhpcy5jdXJyWWVhcj10aGlzLmN1cnJEYXRlT2JqLmdldEZ1bGxZZWFyKCksdGhpcy5jdXJyWWVhcjwxZTMmJih0aGlzLmN1cnJZZWFyKz0xOTAwKSx0aGlzLmN1cnJEYXRlPXRoaXMuY3VyckRhdGVPYmouZ2V0RGF0ZSgpfSxnZXRUaXRsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1vbnRoTmFtZVt0aGlzLmN1cnJNb250aF0uaHRtbCsnICcrdGhpcy5jdXJyWWVhcn0sY3JlYXRlQ2FsZW5kYXI6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RlbXBDYWxEaXYnKSxhPXQubGVuZ3RoLHI9MDtyPGE7cisrKXt2YXIgbj10W3JdLnN0eWxlOydibG9jayc9PT1uLmRpc3BsYXkmJihuLmRpc3BsYXk9J25vbmUnKX10aGlzLmNhbGVuZGFyTm9kZT1lLHRoaXMudXNlclBhdHRlcm49dGhpcy5jYWxlbmRhck5vZGUucGxhY2Vob2xkZXI7dmFyIHM9dGhpcy5jYWxlbmRhck5vZGUudmFsdWUsaT0hMTtpZihzKXt2YXIgbD1kYXRlRm9ybWF0Q29udmVydC52YWxpZGF0ZShzLHRoaXMudXNlclBhdHRlcm4pO2wmJih0aGlzLmN1cnJEYXRlPWwuZ2V0RGF0ZSgpLHRoaXMuY3Vyck1vbnRoPWwuZ2V0TW9udGgoKSx0aGlzLmN1cnJZZWFyPWwuZ2V0RnVsbFllYXIoKSx0aGlzLmN1cnJZZWFyPDFlMyYmKHRoaXMuY3VyclllYXI9TnVtYmVyKHRoaXMuY3VyclllYXIpKzE5MDApKX1lbHNlIGk9ITAsZm9ybUNhbGVuZGVyLmluaXQoKTt0aGlzLm1vbnRoTmFtZXx8Zm9ybUNhbGVuZGVyLmluaXQoKSx0aGlzLmNyZWF0ZURhdGVQaWNrZXIodGhpcy5jdXJyRGF0ZSx0aGlzLmN1cnJNb250aCx0aGlzLmN1cnJZZWFyLGksITEpfSxjcmVhdGVEYXRlUGlja2VyOmZ1bmN0aW9uKGUsdCxhLHIsbil7MT09PXRoaXMuY3Vyck1vbnRoJiYodGhpcy5jdXJyTW9udGhFbmRbMV09dGhpcy5jdXJyWWVhciU0MDA9PTB8fHRoaXMuY3VyclllYXIlND09MCYmdGhpcy5jdXJyWWVhciUxMDAhPTA/Mjk6MjgpO3ZhciBzPW5ldyBEYXRlKGEsdCwxKSxpPTYsbD10aGlzLmRheXNCYXNlZE9uUHJlZmVybmNlLmluZGV4T2YodGhpcy5kYXlzW3MuZ2V0RGF5KCldKSsxO2k9MzE9PT10aGlzLmN1cnJNb250aEVuZFt0XSYmbD49Nnx8MzA9PT10aGlzLmN1cnJNb250aEVuZFt0XSYmNz09PWw/NzoyOD09PXRoaXMuY3Vyck1vbnRoRW5kW3RdJiYxPT09bD81OjY7dmFyIGQ9dGhpcy5nZXRUaXRsZShlLGEsdCksbz10aGlzLmRheU5hbWVzU2hvcnQsaD0nPGRpdiBpZD1cJ2NhbGVuRGl2XCc+PGkgaWQ9XCdjYWxBcnJvd1wnIHN0eWxlPVwnZGlzcGxheTpub25lO1wnIGNsYXNzPVwnZElCIFNvY2lhbEFycm93XCc+PC9pPjxkaXY+PGRpdj4nO2grPSc8ZGl2IGNsYXNzPVwndHh0LWN0clwnPjxzcGFuIGNsYXNzPVwnY2FsTmF2IGRJQiB2YW0geWVhck5hdkxmdFwnIG9uY2xpY2s9XCdmb3JtQ2FsZW5kZXIudXBkYXRlRGF0ZVBpY2tlcihldmVudCx1bmRlZmluZWQsIC0xKVwnPjxpIGNsYXNzPVwnYXJyb3cgbGVmdCBtUk1pbnVzMlwnPjwvaT48aSBjbGFzcz1cJ2Fycm93IGxlZnRcJz48L2k+PC9zcGFuPjxzcGFuIGNsYXNzPVwnY2FsTmF2IGRMZnQgZElCIHZhbVwnIG9uQ2xpY2s9XCdmb3JtQ2FsZW5kZXIudXBkYXRlRGF0ZVBpY2tlcihldmVudCwtMSlcJyBpZD1cJ3BtXCc+PGkgY2xhc3M9XCdhcnJvdyBsZWZ0XCc+PC9pPjwvc3Bhbj48c3BhbiBjbGFzcz1cJ3NDYWxNb25cJz4nK2QrJzwvc3Bhbj48c3BhbiBjbGFzcz1cJ2NhbE5hdiBkUmd0IHZhbVwnIG9uQ2xpY2sgPVwnZm9ybUNhbGVuZGVyLnVwZGF0ZURhdGVQaWNrZXIoZXZlbnQsMSlcJyBpZD1cJ25tXCc+PGkgY2xhc3M9XCdhcnJvdyByaWdodFwnPjwvaT48L3NwYW4+PHNwYW4gY2xhc3M9XCdjYWxOYXYgZElCIHZhbSB5ZWFyTmF2Umd0XCcgb25jbGljaz1cJ2Zvcm1DYWxlbmRlci51cGRhdGVEYXRlUGlja2VyKGV2ZW50LHVuZGVmaW5lZCwgMSlcJz48aSBjbGFzcz1cJ2Fycm93IHJpZ2h0XCc+PC9pPjxpIGNsYXNzPVwnYXJyb3cgcmlnaHQgbUxNaW51czJcJz48L2k+PC9zcGFuPjwvZGl2PicsaCs9Jzx0YWJsZSAgY2xhc3M9XCdjYWxEYXlcJyAgaWQgPVwnd2Vla0RheXNcJyBzdHlsZT1cJ2NvbG9yOiM4YjlhYjk7IGZvbnQtc2l6ZTo4cHg7IG1hcmdpbi1sZWZ0OjBcJz48dHI+IDx0aD4nK29bMF0rJzwvdGg+IDx0aD4nK29bMV0rJzwvdGg+PHRoPicrb1syXSsnPC90aD48dGg+JytvWzNdKyc8L3RoPiA8dGg+JytvWzRdKyc8L3RoPiA8dGg+JytvWzVdKyc8L3RoPiA8dGg+JytvWzZdKyc8L3RoPjwvdHI+PC90YWJsZT4nLGgrPSc8L2Rpdj4nLGgrPSc8dGFibGUgaWQ9XCdjYWxIZWFkZXJcJyBjbGFzcz1cJ2NhbERheVwnIHN0eWxlPVwnbWFyZ2luLWxlZnQ6MDsgbWFyZ2luLXRvcDotNXB4O1wnIHdpZHRoPVwnMTAwJVwnIGNlbGxzcGFjaW5nPVwnMFwnIGNlbGxwYWRkaW5nPVwnMFwnIGJvcmRlcj1cJzBcJyA+Jzt2YXIgYz0nJyx1PW5ldyBEYXRlLHk9YXx8dS5nZXRGdWxsWWVhcigpLHY9ZXx8dS5nZXREYXRlKCksZz12b2lkIDA9PT10P3UuZ2V0TW9udGgoKTp0LG09dS5nZXRNb250aCgpLHA9dS5nZXRGdWxsWWVhcigpO3UuZ2V0RGF0ZSgpO209PT10JiZhPT09cCYmKGM9JyBzdHlsZT1cJ2Rpc3BsYXk6bm9uZVwnJyk7Zm9yKHZhciBmLEQsTSxiPXMuZ2V0RGF5KCk7MSE9PWI7KXMuc2V0RGF0ZShzLmdldERhdGUoKS0xKSxiPXMuZ2V0RGF5KCk7Zm9yKHZhciB4PTE7eDw9aTt4Kyspe2grPSc8dHI+Jztmb3IodmFyIFk9MTtZPDg7WSsrKXtmPXMuZ2V0TW9udGgoKSxEPXMuZ2V0RnVsbFllYXIoKSxNPXMuZ2V0RGF0ZSgpLEQrJy0nKyhwYXJzZUludChmKSsxKSsnLScrTTt2YXIgRj0nY2RhdGUgbHQtZ3JheSc7aWYoTT09PXYmJkQ9PT15JiZmPT09ZyYmKEY9J2NkYXRlIGx0LWdyYXknKSxmPT09ZyYmKEY9J2NkYXRlJyksKHImJk09PT12JiZtPT09ZyYmcD09PXl8fCFuJiZNPT09diYmZj09PWcmJkQ9PT15KSYmKEY9J3NlbCcpLG4pe3ZhciBrPWRhdGVGb3JtYXRDb252ZXJ0LnZhbGlkYXRlKHRoaXMuY2FsZW5kYXJOb2RlLnZhbHVlLGZvcm1DYWxlbmRlci51c2VyUGF0dGVybik7ayYmTT09PWsuZ2V0RGF0ZSgpJiZmPT09ay5nZXRNb250aCgpJiZEPT09ay5nZXRGdWxsWWVhcigpJiYoRj0nc2VsJyl9aCs9Jzx0ZCBjbGFzcz1cJycrRisnXCcgb25DbGljaz1cJ2Zvcm1DYWxlbmRlci5kaXNwbGF5U2VsZWN0ZWREYXRlKFwiJytNKycgJytmKycgJytEKydcIilcJz4nK00rJzwvdGQ+JyxzLnNldERhdGUocy5nZXREYXRlKCkrMSl9aCs9JzwvdHI+J31oKz0nPC90YWJsZT4nLGgrPSc8ZGl2PicsdGhpcy5pc0hpZGVUb2RheXx8KGgrPSc8ZGl2IGlkPVwnY2FsQnRuc1wnIGNsYXNzPVwncFQxNSBwQjE1IGZMXCc+PGEnK2MrJyBjbGFzcz1cJ2NQIGZMXCcgaHJlZj1cJ2phdmFzY3JpcHQ6O1wnIGlkPVwndG9kYXlCdG5cJyBvbmNsaWNrPVwnZm9ybUNhbGVuZGVyLmRpc3BsYXlTZWxlY3RlZERhdGUoXCJ0b2RheVwiKVwnPlRvZGF5PC9hPicpLGgrPSc8L2Rpdj4nLGgrPSc8L2Rpdj4nLGgrPSc8L2Rpdj48L2Rpdj4nO3ZhciBDPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZW1wbGF0ZScrdGhpcy5jYWxlbmRhck5vZGUuZ2V0QXR0cmlidXRlKCd0cGxpZCcpKTtDLmlubmVySFRNTD1oLEMuc3R5bGUuZGlzcGxheT0nYmxvY2snfSxkaXNwbGF5U2VsZWN0ZWREYXRlOmZ1bmN0aW9uKGUsdCl7aWYoIXQpdD10aGlzLmNhbGVuZGFyTm9kZTtpZigndG9kYXknPT09ZSl7dmFyIGE9bmV3IERhdGU7ZT1hLmdldERhdGUoKSsnICcrYS5nZXRNb250aCgpKycgJythLmdldEZ1bGxZZWFyKCl9ZT1lLnNwbGl0KCcgJyk7dmFyIHI9ZGF0ZUZvcm1hdENvbnZlcnQuY29udmVydEZvcm1hdChuZXcgRGF0ZShlWzJdLGVbMV0sZVswXSksdGhpcy51c2VyUGF0dGVybik7dC52YWx1ZT1yLHQuZm9jdXMoKSx0LnBsYWNlaG9sZGVyPXRoaXMudXNlclBhdHRlcm4sZm9ybUNhbGVuZGVyLmNsb3NlRGF0ZVBpY2tlcigpLHQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLGZ1bmN0aW9uKGUpe2Zvcm1DYWxlbmRlci5jYWxlbmRhck5vZGU9dGhpczt2YXIgdD10aGlzLnZhbHVlLGE9ZGF0ZUZvcm1hdENvbnZlcnQudmFsaWRhdGUodCxmb3JtQ2FsZW5kZXIudXNlclBhdHRlcm4pO2lmKGEpe3ZhciByPXt9O3IuZGF0ZT1hLmdldERhdGUoKSxyLm1vbnRoPWEuZ2V0TW9udGgoKSxyLnllYXI9YS5nZXRGdWxsWWVhcigpLGZvcm1DYWxlbmRlci51cGRhdGVEYXRlUGlja2VyKGUsdm9pZCAwLHZvaWQgMCxyKX19KSx0LmJsdXIoKX0sY2xvc2VEYXRlUGlja2VyOmZ1bmN0aW9uKCl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlbXBsYXRlJyt0aGlzLmNhbGVuZGFyTm9kZS5nZXRBdHRyaWJ1dGUoJ3RwbGlkJykpLnN0eWxlLmRpc3BsYXk9J25vbmUnfSx1cGRhdGVEYXRlUGlja2VyOmZ1bmN0aW9uKGUsdCxhLHIpe3ZhciBuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZW1wbGF0ZScrdGhpcy5jYWxlbmRhck5vZGUuZ2V0QXR0cmlidXRlKCd0cGxpZCcpKTtyJiYodGhpcy5jdXJyRGF0ZT1yLmRhdGUsdGhpcy5jdXJyTW9udGg9ci5tb250aCx0aGlzLmN1cnJZZWFyPXIueWVhciksdm9pZCAwIT09dD8xPT09dD8xMT09PXRoaXMuY3Vyck1vbnRoPyh0aGlzLmN1cnJNb250aD0wLHRoaXMuY3VyclllYXIrKyk6dGhpcy5jdXJyTW9udGgrKzowPT09dGhpcy5jdXJyTW9udGg/KHRoaXMuY3Vyck1vbnRoPTExLHRoaXMuY3VyclllYXItLSk6dGhpcy5jdXJyTW9udGgtLTp2b2lkIDAhPT1hJiYodGhpcy5jdXJyWWVhcj1wYXJzZUludCh0aGlzLmN1cnJZZWFyKSthKSx0aGlzLmNyZWF0ZURhdGVQaWNrZXIodGhpcy5jdXJyRGF0ZSx0aGlzLmN1cnJNb250aCx0aGlzLmN1cnJZZWFyLCExLCEwKSxuLnN0eWxlLmRpc3BsYXk9J2Jsb2NrJ30sc3RFdjpmdW5jdGlvbihlKXtlfHwoZT13aW5kb3cuZXZlbnQpLGUmJihlLmNhbmNlbEJ1YmJsZT0hMCxlLnN0b3BQcm9wYWdhdGlvbiYmZS5zdG9wUHJvcGFnYXRpb24oKSl9fTt3aW5kb3cub25jbGljaz1mdW5jdGlvbigpe2Zvcih2YXIgZT1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0ZW1wQ2FsRGl2JyksdD1lLmxlbmd0aCxhPTA7YTx0O2ErKyl7dmFyIHI9ZVthXTtpZihkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXRbdHBsaWQ9XCcnK3IuaWQucmVwbGFjZSgndGVtcGxhdGUnLCcnKSsnXCddJykpcmV0dXJuO3ZhciBuPWVbYV0uc3R5bGU7J2Jsb2NrJz09PW4uZGlzcGxheSYmKG4uZGlzcGxheT0nbm9uZScpfX07dmFyIGRhdGVGb3JtYXRDb252ZXJ0PXtzaG9ydE1vbjpbJ0phbicsJ0ZlYicsJ01hcicsJ0FwcicsJ01heScsJ0p1bicsJ0p1bCcsJ0F1ZycsJ1NlcCcsJ09jdCcsJ05vdicsJ0RlYyddLGxvbmdNb246WydKYW51YXJ5JywnRmVicnVhcnknLCdNYXJjaCcsJ0FwcmlsJywnTWF5JywnSnVuZScsJ0p1bHknLCdBdWd1c3QnLCdTZXB0ZW1iZXInLCdPY3RvYmVyJywnTm92ZW1iZXInLCdEZWNlbWJlciddLGRheUFycjpbMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdLHdvZDoxLGxtOid1c2VyZGF0ZScsX2RhdGVPYmo6dm9pZCAwLGxMaW1pdDo4MCxmb3JtYXRzOlt7dmFsOidZWVlZJyx0eXBlOid5ZWFyJyxyZWdleDovXGR7NH0vLGxlbjo0fSx7dmFsOidHR0dHJyx0eXBlOid5ZWFyJyxyZWdleDovXGR7NH0vLGxlbjo0LGlzV0VHOiEwfSx7dmFsOidnZ2dnJyx0eXBlOid5ZWFyJyxyZWdleDovXGR7NH0vLGxlbjo0LGlzV0VHOiEwfSx7dmFsOidZWScsdHlwZToneWVhcicscmVnZXg6L1xkezJ9LyxsZW46Mn0se3ZhbDonR0cnLHR5cGU6J3llYXInLHJlZ2V4Oi9cZHsyfS8sbGVuOjIsaXNXRUc6ITB9LHt2YWw6J2dnJyx0eXBlOid5ZWFyJyxyZWdleDovXGR7Mn0vLGxlbjoyLGlzV0VHOiEwfSx7dmFsOidNTU1NJyx0eXBlOidtb250aCcscmVnZXg6L1tBLXpdezMsfS8sbG9uZzohMCxzdHI6ITAsYXJyYXk6WydKYW51YXJ5JywnRmVicnVhcnknLCdNYXJjaCcsJ0FwcmlsJywnTWF5JywnSnVuZScsJ0p1bHknLCdBdWd1c3QnLCdTZXB0ZW1iZXInLCdPY3RvYmVyJywnTm92ZW1iZXInLCdEZWNlbWJlciddfSx7dmFsOidNTU0nLHN0cjohMCx0eXBlOidtb250aCcscmVnZXg6L1tBLXpdezMsfS8sYXJyYXk6WydKYW4nLCdGZWInLCdNYXInLCdBcHInLCdNYXknLCdKdW4nLCdKdWwnLCdBdWcnLCdTZXAnLCdPY3QnLCdOb3YnLCdEZWMnXX0se3ZhbDonTW8nLHN1ZmY6ITAsdHlwZTonbW9udGgnLHJlZ2V4Oi9cZHsxLDJ9KD89c3R8bmR8cmR8dGgpLyxtYXg6MTJ9LHt2YWw6J01NJyx0eXBlOidtb250aCcscmVnZXg6L1xkezJ9LyxsZW46MixtYXg6MTIsYWx0OiEwfSx7dmFsOidNJyx0eXBlOidtb250aCcscmVnZXg6L1xkezEsMn0vLG1heDoxMn0se3ZhbDonRERERCcsdHlwZTonZGF0ZScscmVnZXg6L1xkezN9LyxsZW46Myx5ZWFyOiEwfSx7dmFsOidERERvJyx0eXBlOidkYXRlJyxzdWZmOiEwLHJlZ2V4Oi9cZHsxLDN9KD89c3R8bmR8cmR8dGgpLyxsZW46Myx5ZWFyOiEwLGlnbm9yZTovXGR7M30oPz1zdHxuZHxyZHx0aCkvfSx7dmFsOidEREQnLHR5cGU6J2RhdGUnLHJlZ2V4Oi9cZHsxLDN9Lyx5ZWFyOiEwLGlnbm9yZTovXGR7M30vfSx7dmFsOidEbycsdHlwZTonZGF0ZScsc3VmZjohMCxyZWdleDovXGR7MSwyfSg/PXN0fG5kfHJkfHRoKS99LHt2YWw6J0REJyx0eXBlOidkYXRlJyxyZWdleDovXGR7Mn0vLGxlbjoyLGFsdDohMH0se3ZhbDonRCcsdHlwZTonZGF0ZScscmVnZXg6L1xkezEsMn0vfSx7dmFsOidkZGRkJyx0eXBlOidsb25nZGF0ZScscmVnZXg6L1tBLXpdezMsfS8sbG9uZzohMCxzdHI6ITAsYXJyYXk6WydTdW5kYXknLCdNb25kYXknLCdUdWVzZGF5JywnV2VkbmVzZGF5JywnVGh1cnNkYXknLCdGcmlkYXknLCdTYXR1cmRheSddfSx7dmFsOidkZGQnLHR5cGU6J2xvbmdkYXRlJyxyZWdleDovW0Etel17M30vLHN0cjohMCxhcnJheTpbJ1N1bicsJ01vbicsJ1R1ZScsJ1dlZCcsJ1RodScsJ0ZyaScsJ1NhdCddfSx7dmFsOidkZCcsdHlwZTonbG9uZ2RhdGUnLHJlZ2V4Oi9bQS16XXsyfS8sc3RyOiEwLGFycmF5OlsnU3UnLCdNbycsJ1R1JywnV2UnLCdUaCcsJ0ZyJywnU2EnXX0se3ZhbDonZG8nLHR5cGU6J2xvbmdkYXRlJyxyZWdleDovXGR7MX0oPz1zdHxuZHxyZHx0aCkvLHN1ZmY6ITB9LHt2YWw6J2QnLHR5cGU6J2xvbmdkYXRlJyxyZWdleDovXGR7MX0vfV0scGFyc2VGb3JtYXQ6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIGEscj10aGlzLmZvcm1hdHMsbj1bXSxzPXIubGVuZ3RoLGk9MDtpPHM7aSsrKXt2YXIgbD1yW2ldO2lmKCFlLmxlbmd0aClicmVhaztpZihlLmluZGV4T2YobC52YWwpPi0xKXtpZih0JiZsLmFsdCl7YT0hMDtjb250aW51ZX1hJiYobC52YWw9cltpLTFdLnZhbCxsPXJbaS0xXSksYT0hMSxuLnB1c2goe2Zvcm1hdDpsLGluZGV4OmUuaW5kZXhPZihsLnZhbCl9KSxlPWUucmVwbGFjZShsLnZhbCxNYXRoLnBvdygxMCxsLnZhbC5sZW5ndGgtMSkpLGktLX1lbHNlO31yZXR1cm4gbi5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaW5kZXgtdC5pbmRleH0pfSxjb252ZXJ0Rm9ybWF0OmZ1bmN0aW9uKGUsdCl7dGhpcy5fZGF0ZU9iaj1lO3ZhciBhPXRoaXMuX2RhdGVPYmoscj10aGlzLnBhcnNlRm9ybWF0KHQsITApLG49e30scz17ZGF0ZTphLmdldERhdGUoKSxtb250aDphLmdldE1vbnRoKCkseWVhcjphLmdldEZ1bGxZZWFyKCksZGF5OmEuZ2V0RGF5KCl9O3Q9dGhpcy5mbVJlcGxhY2UodC5yZXBsYWNlKC97e3x9fS9nLCcnKSxyKTtmb3IodmFyIGk9ci5sZW5ndGgsbD0wO2w8aTtsKyspe3ZhciBkPXJbbF0uZm9ybWF0O3N3aXRjaChkLnR5cGUpe2Nhc2UnZGF0ZSc6dD10LnJlcGxhY2UoZC52YWwrdGhpcy5sbSx0aGlzLmNyY3RMZW5ndGgoZC55ZWFyP3RoaXMudG90ZGF0ZShzLm1vbnRoLHRoaXMuaXNMZWFwKHMueWVhcikscy5kYXRlKTpzLmRhdGUsZC5sZW4sZC5zdWZmKSk7YnJlYWs7Y2FzZSdtb250aCc6dD1kLnN0cj90LnJlcGxhY2UoZC52YWwrdGhpcy5sbSxkLmFycmF5W3MubW9udGhdKTp0LnJlcGxhY2UoZC52YWwrdGhpcy5sbSx0aGlzLmNyY3RMZW5ndGgocy5tb250aCsxLGQubGVuLGQuc3VmZikpO2JyZWFrO2Nhc2UneWVhcic6dD10LnJlcGxhY2UoZC52YWwrdGhpcy5sbSwyPT09ZC5sZW4/dGhpcy5jcmN0TGVuZ3RoKHMueWVhciUxMDAsMik6ND09PShzLnllYXIrJycpLmxlbmd0aD9zLnllYXI6dGhpcy5jcmN0TGVuZ3RoKHMueWVhciw0KSksbi55ZWFyPW4ueWVhcnx8W10sbi55ZWFyLnB1c2goZCk7YnJlYWs7Y2FzZSdkYXknOmNhc2Und2Vlayc6bi5mbGFnPSEwLG5bZC50eXBlXT1uW2QudHlwZV18fFtdLG5bZC50eXBlXS5wdXNoKGQpO2JyZWFrO2Nhc2UnbG9uZ2RhdGUnOnQ9ZC5zdHI/dC5yZXBsYWNlKGQudmFsK3RoaXMubG0sZC5hcnJheVtzLmRheV0pOnQucmVwbGFjZShkLnZhbCt0aGlzLmxtLHRoaXMuY3JjdExlbmd0aChzLmRheSxudWxsLGQuc3VmZikpfX1yZXR1cm4gdC5yZXBsYWNlKC97e3x9fS9nLCcnKX0sZm1SZXBsYWNlOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBhPTAscj10Lmxlbmd0aCxuPTA7bjxyO24rKyllPWUuc2xpY2UoMCx0W25dLmluZGV4K2EpK3Rbbl0uZm9ybWF0LnZhbCt0aGlzLmxtK2Uuc2xpY2UodFtuXS5pbmRleCthK3Rbbl0uZm9ybWF0LnZhbC5sZW5ndGgpLGErPTg7cmV0dXJuIGV9LHRvdGRhdGU6ZnVuY3Rpb24oZSx0LGEpe2Zvcih2YXIgcj0wLG49MDtuPGU7bisrKXIrPXRoaXMuZGF5QXJyW25dLHQmJjE9PT1uJiYocis9MSk7cmV0dXJuIHIrKGF8fDApfSxjcmN0TGVuZ3RoOmZ1bmN0aW9uKGUsdCxhKXt2YXIgcj0nJztpZihhJiYocj10aGlzLm50aGNvbnYoZSkpLHQpe2U9ZS50b1N0cmluZygpO2Zvcih2YXIgbj0xO248dDtuKyspZS5sZW5ndGg8PW4mJihlPScwJytlKX1yZXR1cm4gZStyfSxudGhjb252OmZ1bmN0aW9uKGUpe2lmKGU+MyYmZTwyMSlyZXR1cm4ndGgnO3N3aXRjaChlJTEwKXtjYXNlIDE6cmV0dXJuJ3N0JztjYXNlIDI6cmV0dXJuJ25kJztjYXNlIDM6cmV0dXJuJ3JkJztkZWZhdWx0OnJldHVybid0aCd9fSxpc0xlYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIDI9PT0oZSs9JycpLmxlbmd0aCYmKGU9dGhpcy5nZXRDb3JyZWN0WWVhcihwYXJzZUludChlKSkpLChlPXBhcnNlSW50KGUpKSU0PT0wJiZlJTEwMCE9MHx8ZSU0MDA9PTB9LGdldENvcnJlY3RZZWFyOmZ1bmN0aW9uKGUpe3ZhciB0PWUrJyc7aWYoZT1wYXJzZUludChlKSwyPT09dC5sZW5ndGgpe3ZhciBhPShuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKSxyPXBhcnNlSW50KGEvMTAwKSxuPWElMTAwLHM9KG4tdGhpcy5sTGltaXQrMTAwKSUxMDA7ZT1uPnM/ZTxzP3IrMSsnJyt0aGlzLmNyY3RMZW5ndGgoZSwyKTpyKycnK3RoaXMuY3JjdExlbmd0aChlLDIpOmU8cz9yKycnK3RoaXMuY3JjdExlbmd0aChlLDIpOnItMSsnJyt0aGlzLmNyY3RMZW5ndGgoZSwyKX1yZXR1cm4gZX0sdmFsRm9ybWF0OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBhPXt9LHI9bmV3IERhdGUoKG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpLDApLG49dGhpcy5wYXJzZUZvcm1hdCh0LCEwKSxzPWUsaT10PXQucmVwbGFjZSgve3t8fX0vZywnJyksbD1uLmxlbmd0aCxkPTA7ZDxsO2QrKyl7dmFyIG8saD1uW2RdLmZvcm1hdDtzd2l0Y2goaC50eXBlKXtjYXNlJ2RhdGUnOmNhc2UneWVhcic6Y2FzZSd3ZWVrJzpjYXNlJ2RheSc6aC5yZWdleC50ZXN0KGUpPyhvPSd5ZWFyJz09PWgudHlwZT9lLm1hdGNoKGgucmVnZXgpW2gubWF0Y2h8fDBdOnBhcnNlSW50KGUubWF0Y2goaC5yZWdleClbaC5tYXRjaHx8MF0pLGFbaC50eXBlXT1vLGU9dGhpcy5yZXBsYWNlVmFsKGUsaC5yZWdleCxoLnN1ZmYpLHM9dGhpcy5yZXBsYWNlVmFsKHMsaC5yZWdleCxoLnN1ZmYsaC52YWwpLGgueWVhciYmKGEuZGF0ZT1nZXREYXkoYS5kYXRlKS5kYXkpKTphLnllYXImJmEud2Vlaz8oYVtoLnR5cGVdPXRoaXMud29kLHQ9dC5yZXBsYWNlKGgudmFsLCcnKSxpPWkucmVwbGFjZShoLnZhbCwnJykpOmFbaC50eXBlXT0nSW52YWxpZCcsL2RhdGUvaS50ZXN0KGgudHlwZSkmJjA9PT1hW2gudHlwZV0mJihhW2gudHlwZV09J0ludmFsaWQnKTticmVhaztjYXNlJ21vbnRoJzpoLnJlZ2V4LnRlc3QoZSk/KG89dGhpcy5nZXRNb250aChlLm1hdGNoKGgucmVnZXgpWzBdLGguc3VmZixoLnN0cixoLmxvbmcpLGEubW9udGg9by52YWwsZT10aGlzLnJlcGxhY2VWYWwoZSxvLm1vbnx8aC5yZWdleCxoLnN1ZmYpLHM9dGhpcy5yZXBsYWNlVmFsKHMsby5tb258fGgucmVnZXgsaC5zdWZmLGgudmFsKSk6YS5tb250aD0nSW52YWxpZCcsYS5tb250aDwwJiYoYS5tb250aD0nSW52YWxpZCcpO2JyZWFrO2Nhc2UnbG9uZ2RhdGUnOmgucmVnZXgudGVzdChlKSYmKG89aC5zdHI/dGhpcy5maW5kVmFsKGguYXJyYXksZS5tYXRjaChoLnJlZ2V4KVswXSk6cGFyc2VJbnQoZS5tYXRjaChoLnJlZ2V4KVswXSksYS5sb25nZGF0ZT10aGlzLmlzRGVmKG8uaW5kZXgpP28uaW5kZXg6byxlPXRoaXMucmVwbGFjZVZhbChlLG8ubW9ufHxvLGguc3VmZikscz10aGlzLnJlcGxhY2VWYWwocyxvLm1vbnx8byxoLnN1ZmYsaC52YWwpKX10PXQucmVwbGFjZShoLnZhbEZvcm18fGgudmFsLCcnKX1pZih0aGlzLmlzRGVmKGEubG9uZ2RhdGUpJiZhLmRheSYmYS5kYXkhPT1hLmxvbmdkYXRlP3Iuc2V0RnVsbFllYXIoJ0ludmFsaWQnKTp0aGlzLmlzRGVmKGEueWVhcikmJnIuc2V0RnVsbFllYXIodGhpcy5nZXRDb3JyZWN0WWVhcihhLnllYXIpKSx0aGlzLmlzRGVmKGEubW9udGgpJiZyLnNldE1vbnRoKGEubW9udGgpLHRoaXMuaXNEZWYoYS5kYXRlKSYmci5zZXREYXRlKGEuZGF0ZTw9dGhpcy5kYXlBcnJbci5nZXRNb250aCgpXSsoMT09PXIuZ2V0TW9udGgoKSYmdGhpcy5pc0xlYXAoci5nZXRGdWxsWWVhcigpKT8xOjApP2EuZGF0ZTonSW52YWxpZCcpLHRoaXMuX2lzQ29ycmVjdEZvcm1hdD1lLmxlbmd0aD09PXQubGVuZ3RoJiZpPT09cyYmdGhpcy52YWxpZGF0ZShyKSlyZXR1cm4gcn0sdmFsaWRhdGU6ZnVuY3Rpb24oZSx0KXt2YXIgYT1lLmNvbnN0cnVjdG9yO2lmKGE9PT1EYXRlKXJldHVybiB0aGlzLl9kYXRlT2JqPWUsJ0ludmFsaWQgRGF0ZSchPT1lLnRvU3RyaW5nKCk7aWYoYT09PVN0cmluZyYmdCl7dmFyIHI9dGhpcy52YWxGb3JtYXQoZSx0KTtyZXR1cm4gciYmdGhpcy5faXNDb3JyZWN0Rm9ybWF0JiYodGhpcy5fZm9ybWF0PXQpLHJ9fSxyZXBsYWNlVmFsOmZ1bmN0aW9uKGUsdCxhLHIpe3JldHVybiBlPWUucmVwbGFjZSh0LHJ8fCcnKSxhJiYoZT1lLnJlcGxhY2UoL3N0fG5kfHJkfHRoLywnJykpLGV9LGdldE1vbnRoOmZ1bmN0aW9uKGUsdCxhLHIpe3ZhciBuO2lmKGEpe3ZhciBzPXRoaXMuZmluZFZhbChyP3RoaXMubG9uZ01vbjp0aGlzLnNob3J0TW9uLGUpO249cy5tb24sZT1zLmluZGV4LCghbnx8ZT4xMSkmJihlPSdJbnZhbGlkJyl9ZWxzZShlPXBhcnNlSW50KGUpLTEpPjExJiYoZT0nSW52YWxpZCcpO3JldHVybnt2YWw6ZSxtb246bn19LGZpbmRWYWw6ZnVuY3Rpb24oZSx0KXt2YXIgYSxyLG49ZS5sZW5ndGg7Zm9yKHI9MDtyPG47cisrKWlmKG5ldyBSZWdFeHAoZVtyXSkudGVzdCh0KSl7YT1lW3JdO2JyZWFrfXJldHVybnttb246YSxpbmRleDpyfX0saXNEZWY6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWV9fTs8L3NjcmlwdD4KPHN0eWxlPgojY2FsZW5EaXZ7cGFkZGluZzoxMHB4O2Rpc3BsYXk6dGFibGU7IHdpZHRoOiAxOTVweDtmb250LWZhbWlseTogaGVsdmV0aWNhLHNhbnMtc2VyaWYgIWltcG9ydGFudDt9Ci5jYWxOYXZ7d2lkdGg6MjBweDsgaGVpZ2h0OjE1cHg7IGRpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlOyB0b3A6NHB4OyBjdXJzb3I6cG9pbnRlcn0KI2NhbGVuRGl2IC5jYWxOYXYge3dpZHRoOjE1cHg7fQojY2FsZW5EaXYgLnllYXJOYXZMZnQge3JpZ2h0OjEwcHg7fQojY2FsZW5EaXYgLnllYXJOYXZSZ3Qge2xlZnQ6MTBweDt9CiNjYWxlbkRpdiAuZExmdCB7cmlnaHQ6NXB4OyB9CiNjYWxlbkRpdiAuZFJndCB7bGVmdDo1cHg7fQouZExmdHtyaWdodDoxMHB4O29wYWNpdHk6MC44OyB9Ci5kUmd0e2xlZnQ6MTBweDtvcGFjaXR5OjAuODt9Ci55ZWFyTmF2TGZ0e3JpZ2h0OjE1cHg7IH0KLnllYXJOYXZSZ3R7bGVmdDoxNXB4O29wYWNpdHk6MC42O30KI2NhbGVuRGl2IHRhYmxlLmNhbERheSB7Ym9yZGVyLXNwYWNpbmc6NnB4OyBtYXJnaW4tdG9wOjB9CiNjYWxlbkRpdiB0YWJsZS5jYWxEYXkgdGR7IHBhZGRpbmc6M3B4IDRweDsgZm9udC1zaXplOjExcHh9CiNjYWxlbkRpdiB0YWJsZS5jYWxEYXkgdGgge3BhZGRpbmc6IDAgM3B4O2ZvbnQtc2l6ZTogMTFweDtwYWRkaW5nLXJpZ2h0OiAwO3BhZGRpbmctbGVmdDogMXB4O2NvbG9yOiAjODg4O3dpZHRoOiAyMnB4O2N1cnNvcjogZGVmYXVsdDtib3JkZXItcmFkaXVzOiAzcHg7dGV4dC1hbGlnbjogY2VudGVyO2ZvbnQtd2VpZ2h0OiBub3JtYWw7fQojY2FsZW5EaXYgI3dlZWtEYXlze21hcmdpbi10b3A6IDEwcHg7bWFyZ2luLWJvdHRvbTogNXB4O2JvcmRlci10b3A6IDFweCBzb2xpZCAjYzBjNmNjO2JvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYzBjNmNjO2JvcmRlci1zcGFjaW5nOiA1cHg7bWFyZ2luLWxlZnQ6IDA7Y29sb3I6ICM4YjlhYjk7fQojY2FsZW5EaXYgLnNDYWxNb24ge2N1cnNvcjogZGVmYXVsdDtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Y29sb3I6ICM4ODg7d2lkdGg6IDExMHB4O2ZvbnQtc2l6ZTogMTJweDt9CnRhYmxlLmNhbERheSB0ZDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7fQp0YWJsZS5jYWxEYXl7IGNvbG9yOiMyMjI7IG1hcmdpbi1sZWZ0Oi0xMHB4OyBib3JkZXItc3BhY2luZzoxMnB4O30KdGFibGUuY2FsRGF5IHRkLCB0YWJsZS5jYWxEYXkgdGh7IGZvbnQtc2l6ZTogdmFyKC0tY3JtLWV4dHJhLW1lZGl1bS1mb250LXNpemUpOyBjdXJzb3I6ZGVmYXVsdDtib3JkZXItcmFkaXVzOjNweDsgdGV4dC1hbGlnbjpjZW50ZXI7ICBwYWRkaW5nOjNweCA1cHg7IGZvbnQtZmFtaWx5OiBoZWx2ZXRpY2Esc2Fucy1zZXJpZiAhaW1wb3J0YW50OyB9CnRhYmxlLmNhbERheSB0ZC5zZWwsdGFibGUuY2FsRGF5IHRkLnNlbDpob3Zlcntjb2xvcjojZmZmOyBiYWNrZ3JvdW5kOiNiM2IzYjM7IGJvcmRlci1yYWRpdXM6M3B4O30KdGFibGUuY2FsRGF5IHRkLm5vTnVtLHRhYmxlLmNhbERheSB0ZC5sdC1ncmF5e2NvbG9yOiNjMWMxYzE7fQoudnB2bCwgLnR4dC1jdHIge3RleHQtYWxpZ246IGNlbnRlcjt9CiNjYWxCdG5zIGEsIC5seXRlQ2FsQnRucyAubHl0ZUNhbEN1cnJlbnREYXRlIGEge2NvbG9yOiB2YXIoLS1saW5rQ29sb3IpO2ZvbnQtc2l6ZTogMTRweDt0ZXh0LWRlY29yYXRpb246IG5vbmU7fQojY2FsZW5EaXYgI2NhbEJ0bnMge3dpZHRoOiAxODNweDttYXJnaW4tbGVmdDogMTBweDtib3JkZXItdG9wOiAwO2ZvbnQtc2l6ZTogMTFweDtwYWRkaW5nOiAzcHggMCAxMnB4IWltcG9ydGFudDt9Ci5hcnJvdyB7Ym9yZGVyOiBzb2xpZCAjNjY2O2JvcmRlci13aWR0aDogMCAxcHggMXB4IDA7ZGlzcGxheTogaW5saW5lLWJsb2NrO2hlaWdodDogNnB4O3dpZHRoOiA2cHg7fQojY2FsZW5EaXYgLnJpZ2h0IHt0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOy13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTt9CiNjYWxlbkRpdiAubGVmdCB7dHJhbnNmb3JtOiByb3RhdGUoMTM1ZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMzVkZWcpO30KLm1MTWludXMye21hcmdpbi1sZWZ0OiAtMnB4O30KLm1STWludXMye21hcmdpbi1yaWdodDogLTJweDt9Ci52YW17dmVydGljYWwtYWxpZ246IG1pZGRsZTt9Ci50ZW1wQ2FsRGl2e2Rpc3BsYXk6IG5vbmU7bWFyZ2luOiAwO3Bvc2l0aW9uOiBhYnNvbHV0ZTt6LWluZGV4OiAxMDAwO2JhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlcjogMXB4IHNvbGlkICNjMGM2Y2M7IC13ZWJraXQtYm94LXNoYWRvdzogMCAycHggMTBweCByZ2JhKDAsMCwwLDAuMyk7Ym94LXNoYWRvdzogMCAycHggMTBweCByZ2JhKDAsMCwwLDAuMyk7IGJvcmRlci10b3A6IDA7dG9wOiAyMHB4O308L3N0eWxlPgoJPHNjcmlwdD4KCQlmdW5jdGlvbiBwcml2YWN5QWxlcnQ0OTE4NDMwMDAwNDA2NzE0MzAoKQoJCXsKCQkJdmFyIHByaXZhY3lUb29sID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByaXZhY3lUb29sNDkxODQzMDAwMDQwNjcxNDMwJyk7CgkJCXZhciBwcml2YWN5RXJyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByaXZhY3lFcnI0OTE4NDMwMDAwNDA2NzE0MzAnKTsKCQkJaWYocHJpdmFjeVRvb2wgIT11bmRlZmluZWQgJiYgIXByaXZhY3lUb29sLmNoZWNrZWQgKQoJCQl7CgkJCQlwcml2YWN5RXJyLnN0eWxlLnZpc2liaWxpdHk9J3Zpc2libGUnOwoJCQkJcHJpdmFjeVRvb2wuZm9jdXMoKTsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJZnVuY3Rpb24gZGlzYWJsZUVycjQ5MTg0MzAwMDA0MDY3MTQzMCgpCgkJewoJCQl2YXIgcHJpdmFjeVRvb2wgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJpdmFjeVRvb2w0OTE4NDMwMDAwNDA2NzE0MzAnKTsKCQkJdmFyIHByaXZhY3lFcnIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJpdmFjeUVycjQ5MTg0MzAwMDA0MDY3MTQzMCcpOwoJCQlpZihwcml2YWN5VG9vbCAhPXVuZGVmaW5lZCAmJiBwcml2YWN5VG9vbC5jaGVja2VkICYmIHByaXZhY3lFcnIgIT11bmRlZmluZWQgKQoJCQl7CgkJCQlwcml2YWN5RXJyLnN0eWxlLnZpc2liaWxpdHk9J2hpZGRlbic7CgkJCX0KCQl9CglmdW5jdGlvbiB2YWxpZGF0ZUVtYWlsNDkxODQzMDAwMDQwNjcxNDMwKCkKCXsKCQl2YXIgZm9ybSA9IGRvY3VtZW50LmZvcm1zWydXZWJUb0xlYWRzNDkxODQzMDAwMDQwNjcxNDMwJ107CgkJdmFyIGVtYWlsRmxkID0gZm9ybS5xdWVyeVNlbGVjdG9yQWxsKCdbZnR5cGU9ZW1haWxdJyk7CgkJdmFyIGk7CgkJZm9yIChpID0gMDsgaSA8IGVtYWlsRmxkLmxlbmd0aDsgaSsrKQoJCXsKCQkJdmFyIGVtYWlsVmFsID0gZW1haWxGbGRbaV0udmFsdWU7CgkJCWlmKChlbWFpbFZhbC5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpKS5sZW5ndGghPTAgKQoJCQl7CgkJCQl2YXIgYXRwb3M9ZW1haWxWYWwuaW5kZXhPZignQCcpOwoJCQkJdmFyIGRvdHBvcz1lbWFpbFZhbC5sYXN0SW5kZXhPZignLicpOwoJCQkJaWYgKGF0cG9zPDEgfHwgZG90cG9zPGF0cG9zKzIgfHwgZG90cG9zKzI+PWVtYWlsVmFsLmxlbmd0aCkKCQkJCXsKCQkJCQlhbGVydCgnSW50cm9kdXpjYSB1bmEgZGlyZWNjacOzbiBkZSBjb3JyZW8gZWxlY3Ryw7NuaWNvIHbDoWxpZGEuICcpOwoJCQkJCWVtYWlsRmxkW2ldLmZvY3VzKCk7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQl9CgkJfQoJCXJldHVybiB0cnVlOwoJfQoJZnVuY3Rpb24gdmFsaWRhdGVEYXRlRm9ybWF0NDkxODQzMDAwMDQwNjcxNDMwKCkKCXsKCQl2YXIgZm9ybSA9IGRvY3VtZW50LmZvcm1zWydXZWJUb0xlYWRzNDkxODQzMDAwMDQwNjcxNDMwJ107CgkJdmFyIGRhdGVGbGRzID0gZm9ybS5xdWVyeVNlbGVjdG9yQWxsKCdbZnR5cGU9ZGF0ZV0nKTsKCQl2YXIgaTsKCQlmb3IgKGkgPSAwOyBpIDwgZGF0ZUZsZHMubGVuZ3RoOyBpKyspCgkJewoJCQl2YXIgZGF0ZUZsZCA9IGRhdGVGbGRzW2ldOwoJCQl2YXIgdXNyUHRybiA9IGRhdGVGbGQucGxhY2Vob2xkZXI7CgkJCXZhciBkYXRlVmFsID0gZGF0ZUZsZC52YWx1ZTsKCQkJaWYoZGF0ZVZhbC50cmltKCkgIT0gJycpewoJCQkJdmFyIHZhbGQgPSBkYXRlRm9ybWF0Q29udmVydC52YWxpZGF0ZShkYXRlVmFsLHVzclB0cm4pOwoJCQkJaWYoIXZhbGQpewoJCQkJCWFsZXJ0KCdFc2NyaWJhIHVuYSBmZWNoYSB2w6FsaWRhICcpOwoJCQkJCWRhdGVGbGQuZm9jdXMoKTsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0KCQl9CgkJcmV0dXJuIHRydWU7Cgl9CgogCSAgZnVuY3Rpb24gY2hlY2tNYW5kYXRvcnk0OTE4NDMwMDAwNDA2NzE0MzAoKSB7CgkJdmFyIG1uZEZpbGVkcyA9IG5ldyBBcnJheSgnQ29tcGFueScsJ0xhc3QgTmFtZScsJ0xFQURDRjYnLCdMRUFEQ0Y1NCcsJ0xFQURDRjgyJywnTEVBRENGMTIxJyk7CgkJdmFyIGZsZExhbmdWYWwgPSBuZXcgQXJyYXkoJ05vbWJyZVx4MjB5XHgyMGFwZWxsaWRvc1x4MjBkZWxceDIwcHJvZ2VuaXRvclx4MkZhJywnTm9tYnJlXHgyMHlceDIwYXBlbGxpZG9zXHgyMGRlbFx4MjBlc3R1ZGlhbnRlJywnRVx4MkRtYWlsJywnVGVsXHhFOWZvbm8nLCdGZWNoYVx4MjBkZVx4MjBuYWNpbWllbnRvXHgyMGRlbFx4MjBlc3R1ZGlhbnRlJywnUHJvdmluY2lhJyk7CgkJZm9yKGk9MDtpPG1uZEZpbGVkcy5sZW5ndGg7aSsrKSB7CgkJICB2YXIgZmllbGRPYmo9ZG9jdW1lbnQuZm9ybXNbJ1dlYlRvTGVhZHM0OTE4NDMwMDAwNDA2NzE0MzAnXVttbmRGaWxlZHNbaV1dOwoJCSAgaWYoZmllbGRPYmopIHsKCQkJaWYgKCgoZmllbGRPYmoudmFsdWUpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykpLmxlbmd0aD09MCkgewoJCQkgaWYoZmllbGRPYmoudHlwZSA9PSdmaWxlJykKCQkJCXsgCgkJCQkgYWxlcnQoJ1NlbGVjY2lvbmUgdW4gYXJjaGl2byBwYXJhIGNhcmdhci4nKTsgCgkJCQkgZmllbGRPYmouZm9jdXMoKTsgCgkJCQkgcmV0dXJuIGZhbHNlOwoJCQkJfSAKCQkJYWxlcnQoZmxkTGFuZ1ZhbFtpXSArJyBubyBwdWVkZSBlc3RhciB2YWPDrW8uJyk7IAogICAJICAgCSAgCSAgZmllbGRPYmouZm9jdXMoKTsKICAgCSAgIAkgIAkgIHJldHVybiBmYWxzZTsKCQkJfSAgZWxzZSBpZihmaWVsZE9iai5ub2RlTmFtZT09J1NFTEVDVCcpIHsKICAJICAgCSAgIAkgaWYoZmllbGRPYmoub3B0aW9uc1tmaWVsZE9iai5zZWxlY3RlZEluZGV4XS52YWx1ZT09Jy1Ob25lLScpIHsKCQkJCWFsZXJ0KGZsZExhbmdWYWxbaV0gKycgbm8gcHVlZGUgc2VyIG51bG8uJyk7IAoJCQkJZmllbGRPYmouZm9jdXMoKTsKCQkJCXJldHVybiBmYWxzZTsKCQkJICAgfQoJCQl9IGVsc2UgaWYoZmllbGRPYmoudHlwZSA9PSdjaGVja2JveCcpewogCSAJIAkgaWYoZmllbGRPYmouY2hlY2tlZCA9PSBmYWxzZSl7CgkJCQlhbGVydCgnUGxlYXNlIGFjY2VwdCAgJytmbGRMYW5nVmFsW2ldKTsKCQkJCWZpZWxkT2JqLmZvY3VzKCk7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCSAgIH0gCgkJCSB9IAoJCQkgdHJ5IHsKCQkJICAgICBpZihmaWVsZE9iai5uYW1lID09ICdMYXN0IE5hbWUnKSB7CgkJCQluYW1lID0gZmllbGRPYmoudmFsdWU7CiAJIAkgCSAgICB9CgkJCX0gY2F0Y2ggKGUpIHt9CgkJICAgIH0KCQl9CgkJaWYoIXZhbGlkYXRlRW1haWw0OTE4NDMwMDAwNDA2NzE0MzAoKSl7cmV0dXJuIGZhbHNlO30KCQkKCQlpZighcHJpdmFjeUFsZXJ0NDkxODQzMDAwMDQwNjcxNDMwKCkpe3JldHVybiBmYWxzZTt9CgkJCgkJaWYoIXZhbGlkYXRlRGF0ZUZvcm1hdDQ5MTg0MzAwMDA0MDY3MTQzMCgpKXtyZXR1cm4gZmFsc2U7fQoJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jcm1XZWJUb0VudGl0eUZvcm0gLmZvcm1zdWJtaXQnKS5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgdHJ1ZSk7Cgl9CgpmdW5jdGlvbiB0b29sdGlwU2hvdzQ5MTg0MzAwMDA0MDY3MTQzMChlbCl7Cgl2YXIgdG9vbHRpcCA9IGVsLm5leHRFbGVtZW50U2libGluZzsKCXZhciB0b29sdGlwRGlzcGxheSA9IHRvb2x0aXAuc3R5bGUuZGlzcGxheTsKCWlmKHRvb2x0aXBEaXNwbGF5ID09ICdub25lJyl7CgkJdmFyIGFsbFRvb2x0aXAgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd6Y3dmX3Rvb2x0aXBfb3ZlcicpOwoJCWZvcihpPTA7IGk8YWxsVG9vbHRpcC5sZW5ndGg7IGkrKyl7CgkJCWFsbFRvb2x0aXBbaV0uc3R5bGUuZGlzcGxheT0nbm9uZSc7CgkJfQoJCXRvb2x0aXAuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7Cgl9ZWxzZXsKCQl0b29sdGlwLnN0eWxlLmRpc3BsYXk9J25vbmUnOwoJfQp9Cjwvc2NyaXB0PgoJPCEtLSBEbyBub3QgcmVtb3ZlIHRoaXMgLS0tIEFuYWx5dGljcyBUcmFja2luZyBjb2RlIHN0YXJ0cyAtLT48c2NyaXB0IGlkPSd3Zl9hbmFsJyBzcmM9J2h0dHBzOi8vY3JtLnpvaG9wdWJsaWMuY29tL2NybS9XZWJGb3JtQW5hbHl0aWNzU2VydmVTZXJ2bGV0P3JpZD0xNzY3MmI5NTU3Y2FkN2MxODM4MjExZjkwNGQxNDM4OGEzYjY3ZWYxMTlmMWViNjE5YWVhNTU3ZDI4ZDRlNTM5Z2lkNzNjMWM4MDZjOGFiMzEwYzZlZWIzMWM2MjRiYjMxY2FkOTEzNjNhMGE1YWZiZjhmOTM0YzA1ZTBiYjgwM2E4NmdpZDg4NWUzYzEwNDViZDliZGNjOTFiZGYzMGY4MmI1Njk2Z2lkMTRmNGVjMTY0MzFlMDY4NjE1MGRhYTQzZjMyMTA1MTMmdHc9NjE2OTBiOTZjMWQwNDcxYjYzOGYzMTQyNmYzOGU2OGFhNjdmYjdlZDZkYTg2ZjMyZGMxMGFkODE3ZmU1NWEwYSc+PC9zY3JpcHQ+PCEtLSBEbyBub3QgcmVtb3ZlIHRoaXMgLS0tIEFuYWx5dGljcyBUcmFja2luZyBjb2RlIGVuZHMuIC0tPjwvZm9ybT4KPC9kaXY+