- Startseite
- Service
- Händlersuche
Wo kann man die Menzerna Polituren kaufen?
Händler- und Onlineshop- Suche
Sie möchten Menzerna Polituren oder Zubehör erwerben? Unser internationales Händlernetzwerk bietet
zügigen und kompetenten Service weltweit. Mit der Händlersuche finden Sie qualifizierte Menzerna Händler für
Autopolituren, Bootspolituren und feste Polierpasten in Ihrer Nähe.
Finden Sie auch qualifizierte Autopflege Onlineshops mit umfangreichem Menzerna-Sortiment.
CiAgICAgICAgICAgICAgICAgICAgICAKICAgIDxkaXYgaWQ9Im1vYmlsZS1jaGVjayI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJtb2JpbGUtcmVzZXQtc2VhcmNoIj4KICAgICAgICA8YnV0dG9uIGlkPSJyZXNldC1zZWFyY2giIGNsYXNzPSJidG4iPkjDpG5kbGVyc3VjaGUgZXJuZXV0IG51dHplbjwvYnV0dG9uPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJmaWx0ZXJmb3JtLWNvbnRhaW5lciBkZWFsZXItc2VhcmNoLWZvcm0td3JhcCI+CiAgICAgICAgPGZvcm0gZGF0YS1hamF4dXJsPSIvc2VydmljZS9oYWVuZGxlcnN1Y2hlP25vX2NhY2hlPTEmYW1wO3R4X3B4cGRlYWxlcnNfYWpheGNhbGwlNUJhY3Rpb24lNUQ9YWpheENhbGwmYW1wO3R4X3B4cGRlYWxlcnNfYWpheGNhbGwlNUJjb250cm9sbGVyJTVEPURlYWxlciZhbXA7dHlwZT0xMTIyJmFtcDtjSGFzaD1iMTA2OGNkZTAyNzEwNDk1OGRjM2QyMjFjZmNmN2Q0ZCIgbWV0aG9kPSJwb3N0IiBjbGFzcz0iZGVhbGVyLXNlYXJjaC1mb3JtIiBpZD0ic2VsZWN0Rm9ybSIgYWN0aW9uPSIvc2VydmljZS9oYWVuZGxlcnN1Y2hlP3R4X3B4cGRlYWxlcnNfYWpheGNhbGwlNUJhY3Rpb24lNUQ9YWpheENhbGwmYW1wO3R4X3B4cGRlYWxlcnNfYWpheGNhbGwlNUJjb250cm9sbGVyJTVEPURlYWxlciZhbXA7dHlwZT0xMTIyJmFtcDtjSGFzaD1iMTA2OGNkZTAyNzEwNDk1OGRjM2QyMjFjZmNmN2Q0ZCI+CjxkaXY+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InR4X3B4cGRlYWxlcnNfYWpheGNhbGxbX19yZWZlcnJlcl1bQGV4dGVuc2lvbl0iIHZhbHVlPSJQeHBkZWFsZXJzIiAvPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0eF9weHBkZWFsZXJzX2FqYXhjYWxsW19fcmVmZXJyZXJdW0Bjb250cm9sbGVyXSIgdmFsdWU9IkRlYWxlciIgLz4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHhfcHhwZGVhbGVyc19hamF4Y2FsbFtfX3JlZmVycmVyXVtAYWN0aW9uXSIgdmFsdWU9Imxpc3QiIC8+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InR4X3B4cGRlYWxlcnNfYWpheGNhbGxbX19yZWZlcnJlcl1bYXJndW1lbnRzXSIgdmFsdWU9IllUb3dPbnQ5YzMyYWZkMDg5YmJiNzFhMDIwYWQyNmNlNmY1NTBjZjA2MGM0OWUzNSIgLz4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHhfcHhwZGVhbGVyc19hamF4Y2FsbFtfX3JlZmVycmVyXVtAcmVxdWVzdF0iIHZhbHVlPSJ7JnF1b3Q7QGV4dGVuc2lvbiZxdW90OzomcXVvdDtQeHBkZWFsZXJzJnF1b3Q7LCZxdW90O0Bjb250cm9sbGVyJnF1b3Q7OiZxdW90O0RlYWxlciZxdW90OywmcXVvdDtAYWN0aW9uJnF1b3Q7OiZxdW90O2xpc3QmcXVvdDt9MmU0MDkyNmYxNTEwNTg3NTg2YzZkYzBjYmM3OTVjMTNjNDc3YzRhOSIgLz4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idHhfcHhwZGVhbGVyc19hamF4Y2FsbFtfX3RydXN0ZWRQcm9wZXJ0aWVzXSIgdmFsdWU9InsmcXVvdDtjYXRlZ29yaWVzJnF1b3Q7OlsxLDEsMV19NWU4OGJjZjVkMDY0NmExNWFjMGM0OTRhNmE2YjRiNzliMDZmNjU0YiIgLz4KPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2NhdGlvbi1zZWFyY2gtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTEyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iY291bnRyeS1zZWxlY3QiIGNsYXNzPSJzZWxlY3QtbGFiZWwgZm9ybS1iaWctbGFiZWwiPkJpdHRlIGdlYmVuIFNpZSBJaHJlbiBTdGFuZG9ydCBhbjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyBsb2NhdGlvbi1zZWFyY2gtcm93Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT0idHhfcHhwZGVhbGVyc19hamF4Y2FsbFtjb3VudHJ5XSIgaWQ9ImNvdW50cnktc2VsZWN0IiBjbGFzcz0iZm9ybS1jb250cm9sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPkJpdHRlIHfDpGhsZW4gLi4uPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjU0IiBkYXRhLW5hbWU9IkRldXRzY2hsYW5kIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiwzIiBkYXRhLWlzbzI9IkRFIj5EZXV0c2NobGFuZDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI2MiIgZGF0YS1uYW1lPSLDhGd5cHRlbiIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IkVHIj7DhGd5cHRlbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI2IiBkYXRhLW5hbWU9IkFsYmFuaWVuIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iQUwiPkFsYmFuaWVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjExIiBkYXRhLW5hbWU9IkFyZ2VudGluaWVuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiIgZGF0YS1pc28yPSJBUiI+QXJnZW50aW5pZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTMiIGRhdGEtbmFtZT0iw5ZzdGVycmVpY2giIGRhdGEtY2F0ZWdvcmllcz0iMyIgZGF0YS1pc28yPSJBVCI+w5ZzdGVycmVpY2g8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTQiIGRhdGEtbmFtZT0iQXVzdHJhbGllbiIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IkFVIj5BdXN0cmFsaWVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIwIiBkYXRhLW5hbWU9IkJlbGdpZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSwyLDMiIGRhdGEtaXNvMj0iQkUiPkJlbGdpZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMjkiIGRhdGEtbmFtZT0iQnJhc2lsaWVuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMyIgZGF0YS1pc28yPSJCUiI+QnJhc2lsaWVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIyIiBkYXRhLW5hbWU9IkJ1bGdhcmllbiIgZGF0YS1jYXRlZ29yaWVzPSIxLDIsMyIgZGF0YS1pc28yPSJCRyI+QnVsZ2FyaWVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjQ0IiBkYXRhLW5hbWU9IkNoaWxlIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iQ0wiPkNoaWxlPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjU2IiBkYXRhLW5hbWU9IkTDpG5lbWFyayIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IkRLIj5Ew6RuZW1hcms8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNjEiIGRhdGEtbmFtZT0iRXN0bGFuZCIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IkVFIj5Fc3RsYW5kPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjY3IiBkYXRhLW5hbWU9IkZpbm5sYW5kIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiIgZGF0YS1pc28yPSJGSSI+RmlubmxhbmQ8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNzIiIGRhdGEtbmFtZT0iRnJhbmtyZWljaCIgZGF0YS1jYXRlZ29yaWVzPSIxLDIsMyIgZGF0YS1pc28yPSJGUiI+RnJhbmtyZWljaDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI4NSIgZGF0YS1uYW1lPSJHcmllY2hlbmxhbmQiIGRhdGEtY2F0ZWdvcmllcz0iMSwyIiBkYXRhLWlzbzI9IkdSIj5HcmllY2hlbmxhbmQ8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNzQiIGRhdGEtbmFtZT0iR3Jvw59icml0YW5uaWVuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiwzIiBkYXRhLWlzbzI9IkdCIj5Hcm/Dn2JyaXRhbm5pZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iOTYiIGRhdGEtbmFtZT0iSW5kb25lc2llbiIgZGF0YS1jYXRlZ29yaWVzPSIxLDIiIGRhdGEtaXNvMj0iSUQiPkluZG9uZXNpZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTA0IiBkYXRhLW5hbWU9Ikl0YWxpZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSwyLDMiIGRhdGEtaXNvMj0iSVQiPkl0YWxpZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTA3IiBkYXRhLW5hbWU9IkphcGFuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiwzIiBkYXRhLWlzbzI9IkpQIj5KYXBhbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIzNiIgZGF0YS1uYW1lPSJLYW5hZGEiIGRhdGEtY2F0ZWdvcmllcz0iMSwyLDMiIGRhdGEtaXNvMj0iQ0EiPkthbmFkYTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxMTgiIGRhdGEtbmFtZT0iS2FzYWNoc3RhbiIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IktaIj5LYXNhY2hzdGFuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjQ3IiBkYXRhLW5hbWU9IktvbHVtYmllbiIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IkNPIj5Lb2x1bWJpZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iOTMiIGRhdGEtbmFtZT0iS3JvYXRpZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSwyLDMiIGRhdGEtaXNvMj0iSFIiPktyb2F0aWVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjExNiIgZGF0YS1uYW1lPSJLdXdhaXQiIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJLVyI+S3V3YWl0PC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEyOCIgZGF0YS1uYW1lPSJMZXR0bGFuZCIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IkxWIj5MZXR0bGFuZDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxMjAiIGRhdGEtbmFtZT0iTGliYW5vbiIgZGF0YS1jYXRlZ29yaWVzPSIxLDIsMyIgZGF0YS1pc28yPSJMQiI+TGliYW5vbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxMjYiIGRhdGEtbmFtZT0iTGl0YXVlbiIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IkxUIj5MaXRhdWVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEzMCIgZGF0YS1uYW1lPSJNYXJva2tvIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iTUEiPk1hcm9ra288L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTQ4IiBkYXRhLW5hbWU9Ik1leGlrbyIgZGF0YS1jYXRlZ29yaWVzPSIxLDIiIGRhdGEtaXNvMj0iTVgiPk1leGlrbzwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxNTciIGRhdGEtbmFtZT0iTmllZGVybGFuZGUiIGRhdGEtY2F0ZWdvcmllcz0iMSwyLDMiIGRhdGEtaXNvMj0iTkwiPk5pZWRlcmxhbmRlPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEzNSIgZGF0YS1uYW1lPSJOb3JkbWF6ZWRvbmllbiIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9Ik1LIj5Ob3JkbWF6ZWRvbmllbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxNTgiIGRhdGEtbmFtZT0iTm9yd2VnZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSwyIiBkYXRhLWlzbzI9Ik5PIj5Ob3J3ZWdlbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxNjQiIGRhdGEtbmFtZT0iUGFuYW1hIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iUEEiPlBhbmFtYTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxNzAiIGRhdGEtbmFtZT0iUG9sZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJQTCI+UG9sZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTc0IiBkYXRhLW5hbWU9IlBvcnR1Z2FsIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iUFQiPlBvcnR1Z2FsPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE3MyIgZGF0YS1uYW1lPSJQdWVydG8gUmljbyIgZGF0YS1jYXRlZ29yaWVzPSIxLDIsMyIgZGF0YS1pc28yPSJQUiI+UHVlcnRvIFJpY288L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTE1IiBkYXRhLW5hbWU9IlJlcHVibGlrIEtvcmVhIiBkYXRhLWNhdGVnb3JpZXM9IjMiIGRhdGEtaXNvMj0iS1IiPlJlcHVibGlrIEtvcmVhPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE3OSIgZGF0YS1uYW1lPSJSdW3DpG5pZW4iIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJSTyI+UnVtw6RuaWVuPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE4MCIgZGF0YS1uYW1lPSJSdXNzaXNjaGUgRsO2ZGVyYXRpb24iIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJSVSI+UnVzc2lzY2hlIEbDtmRlcmF0aW9uPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIzNSIgZGF0YS1uYW1lPSJTw7xkYWZyaWthIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiIgZGF0YS1pc28yPSJaQSI+U8O8ZGFmcmlrYTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxODIiIGRhdGEtbmFtZT0iU2F1ZGktQXJhYmllbiIgZGF0YS1jYXRlZ29yaWVzPSIxLDIiIGRhdGEtaXNvMj0iU0EiPlNhdWRpLUFyYWJpZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTg2IiBkYXRhLW5hbWU9IlNjaHdlZGVuIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiIgZGF0YS1pc28yPSJTRSI+U2Nod2VkZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNDEiIGRhdGEtbmFtZT0iU2Nod2VpeiIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IkNIIj5TY2h3ZWl6PC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjI0MyIgZGF0YS1uYW1lPSJTZXJiaWVuIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iUlMiPlNlcmJpZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTg5IiBkYXRhLW5hbWU9IlNsb3dlbmllbiIgZGF0YS1jYXRlZ29yaWVzPSIxIiBkYXRhLWlzbzI9IlNJIj5TbG93ZW5pZW48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNjUiIGRhdGEtbmFtZT0iU3BhbmllbiIgZGF0YS1jYXRlZ29yaWVzPSIxLDIsMyIgZGF0YS1pc28yPSJFUyI+U3Bhbmllbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxOTkiIGRhdGEtbmFtZT0iU3lyaWVuIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iU1kiPlN5cmllbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIyMTIiIGRhdGEtbmFtZT0iVMO8cmtlaSIgZGF0YS1jYXRlZ29yaWVzPSIxLDIiIGRhdGEtaXNvMj0iVFIiPlTDvHJrZWk8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMjA1IiBkYXRhLW5hbWU9IlRoYWlsYW5kIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iVEgiPlRoYWlsYW5kPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIxNyIgZGF0YS1uYW1lPSJVa3JhaW5lIiBkYXRhLWNhdGVnb3JpZXM9IjEsMiIgZGF0YS1pc28yPSJVQSI+VWtyYWluZTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI5NSIgZGF0YS1uYW1lPSJVbmdhcm4iIGRhdGEtY2F0ZWdvcmllcz0iMSwyIiBkYXRhLWlzbzI9IkhVIj5Vbmdhcm48L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMjIxIiBkYXRhLW5hbWU9IlVydWd1YXkiIGRhdGEtY2F0ZWdvcmllcz0iMSIgZGF0YS1pc28yPSJVWSI+VXJ1Z3VheTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIyIiBkYXRhLW5hbWU9IlZlcmVpbmlndGUgQXJhYmlzY2hlIEVtaXJhdGUiIGRhdGEtY2F0ZWdvcmllcz0iMSwyIiBkYXRhLWlzbzI9IkFFIj5WZXJlaW5pZ3RlIEFyYWJpc2NoZSBFbWlyYXRlPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIyMCIgZGF0YS1uYW1lPSJWZXJlaW5pZ3RlIFN0YWF0ZW4gdm9uIEFtZXJpa2EiIGRhdGEtY2F0ZWdvcmllcz0iMSwyLDMiIGRhdGEtaXNvMj0iVVMiPlZlcmVpbmlndGUgU3RhYXRlbiB2b24gQW1lcmlrYTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIzNCIgZGF0YS1uYW1lPSJXZWnDn3J1c3NsYW5kIiBkYXRhLWNhdGVnb3JpZXM9IjEiIGRhdGEtaXNvMj0iQlkiPldlacOfcnVzc2xhbmQ8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvY2F0aW9uLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2hlY2tib3gtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iY2ItbG9jYXRpb24iIGNsYXNzPSJjYi1sYWJlbCBjdXN0b20tY2hlY2tib3giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBa3R1ZWxsZW4gU3RhbmRvcnQgdmVyd2VuZGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IiIgdmFsdWU9IiIgLz48aW5wdXQgZGF0YS1hamF4dXJsPSIvc2VydmljZS9oYWVuZGxlcnN1Y2hlP25vX2NhY2hlPTEmYW1wO3R4X3B4cGRlYWxlcnNfYWpheGNhbGwlNUJhY3Rpb24lNUQ9Z2V0Q291bnRyeUNvZGVBamF4JmFtcDt0eF9weHBkZWFsZXJzX2FqYXhjYWxsJTVCY29udHJvbGxlciU1RD1EZWFsZXImYW1wO3R5cGU9MTEyMiZhbXA7Y0hhc2g9MGI2YmQ4ZmZkYmM0YTZiNTQ0ODI4YjMyY2RlNDU2OTgiIGlkPSJjYi1sb2NhdGlvbiIgdHlwZT0iY2hlY2tib3giIG5hbWU9IiIgdmFsdWU9IiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNoZWNrbWFyayI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Imdlb2xvY2F0aW9uLWxvYWQiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij5TdGFuZG9ydCB3aXJkIGVybWl0dGVsdCAuLi48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Imdlb2xvY2F0aW9uLWVycm9yIiBzdHlsZT0iZGlzcGxheTpub25lOyI+Qml0dGUgZXJsYXViZW4gU2llIGRlbiBadWdyaWZmIGF1ZiBJaHJlbiBTdGFuZG9ydDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2F0ZWdvcnktc2VhcmNoLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0xMiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1iaWctbGFiZWwiPlfDpGhsZW4gU2llIElociBQcm9kdWt0IGF1czwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhdGVnb3JpZXMtY2ItY29udGFpbmVyIiBkYXRhLWFsbC1jYXRlZ29yeS11aWRzPSIxLDIsMyI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhdC1jYiBjaGVja2JveC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iY2ItQXV0b3BvbGl0dXJlbiIgY2xhc3M9ImNiLWxhYmVsIGN1c3RvbS1jaGVja2JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRvcG9saXR1cmVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0eF9weHBkZWFsZXJzX2FqYXhjYWxsW2NhdGVnb3JpZXNdIiB2YWx1ZT0iIiAvPjxpbnB1dCBjbGFzcz0iY2F0ZWdvcnktY2IgZW5hYmxlZCIgaWQ9ImNiLUF1dG9wb2xpdHVyZW4iIHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ0eF9weHBkZWFsZXJzX2FqYXhjYWxsW2NhdGVnb3JpZXNdW10iIHZhbHVlPSIxIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNoZWNrbWFyayI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhdC1jYiBjaGVja2JveC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iY2ItQm9vdHNwb2xpdHVyZW4iIGNsYXNzPSJjYi1sYWJlbCBjdXN0b20tY2hlY2tib3giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm9vdHNwb2xpdHVyZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iY2F0ZWdvcnktY2IgZW5hYmxlZCIgaWQ9ImNiLUJvb3RzcG9saXR1cmVuIiB0eXBlPSJjaGVja2JveCIgbmFtZT0idHhfcHhwZGVhbGVyc19hamF4Y2FsbFtjYXRlZ29yaWVzXVtdIiB2YWx1ZT0iMiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGVja21hcmsiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXQtY2IgY2hlY2tib3gtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImNiLUZlc3RwYXN0ZW4iIGNsYXNzPSJjYi1sYWJlbCBjdXN0b20tY2hlY2tib3giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmVzdHBhc3RlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJjYXRlZ29yeS1jYiBlbmFibGVkIiBpZD0iY2ItRmVzdHBhc3RlbiIgdHlwZT0iY2hlY2tib3giIG5hbWU9InR4X3B4cGRlYWxlcnNfYWpheGNhbGxbY2F0ZWdvcmllc11bXSIgdmFsdWU9IjMiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2hlY2ttYXJrIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5vdGlmaWVyLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0xMiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5vdGlmaWVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+JiM0MkhpbndlaXM6IE1lbnplcm5hIFBvbGl0dXJlbiBzaW5kIGbDvHIgZ2V3ZXJibGljaGUgQW53ZW5kZXIga29uenBpZXJ0LjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5NaXQgS2xpY2sgYXVmICZxdW90O0pldHp0IEjDpG5kbGVyIHN1Y2hlbiZxdW90OyBiZXN0w6R0aWdlIGljaCwgZGFzcyBpY2ggenUgZGllc2VyIFZlcmJyYXVjaGVyZ3J1cHBlIGdlaMO2cmUuPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWJtaXQtYnV0dG9uLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0xMiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InN1Ym1pdC1idG4gYnRuIiB0eXBlPSJzdWJtaXQiIG5hbWU9IiIgdmFsdWU9IiI+SmV0enQgSMOkbmRsZXIgc3VjaGVuPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgogICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVhbGVyLXNlYXJjaC1tYXAtd3JhcCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZWFsZXItc2VhcmNoLW1hcCIgaWQ9ImdtYXAiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAoKICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0icmVzdWx0LWNvbnRhaW5lciBkZWFsZXItc2VhcmNoLXJlc3VsdCI+CiAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTEyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hcC1oZWFkbGluZSIgIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+UXVhbGlmaXppZXJ0ZSBIw6RuZGxlciB1bmQgYXV0b3Jpc2llcnRlIE9ubGluZS1TaG9wcyBpbiZuYnNwOzxzcGFuIGlkPSJtYXAtaGVhZGxpbmUtY291bnRyeSI+PC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLXdyYXAgZGVhbGVyLXNlYXJjaC1hY2NvcmRpb25zIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYW5lbC1ncm91cCIgaWQ9ImFjY29yZGlvbiIgcm9sZT0idGFibGlzdCIgYXJpYS1tdWx0aXNlbGVjdGFibGU9InRydWUiPgoKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9ImNvbnRhY3QtaGVhZGxpbmUiIGRhdGEtc3RyaW5nPSJLb250YWt0Ij48L2Rpdj4KICAgIDxkaXYgaWQ9ImNhdGVnb3JpZXMtaGVhZGxpbmUiIGRhdGEtc3RyaW5nPSJEYXMgSMOkbmRsZXItU29ydGltZW50IHVtZmFzc3QgZm9sZ2VuZGUgUHJvZHVrdGthdGVnb3JpZW46Ij48L2Rpdj4KICAgIDxkaXYgaWQ9InRleHQtbGluay1vbmxpbmVzaG9wIiBkYXRhLXN0cmluZz0iWnVtIE9ubGluZS1TaG9wIGRlcyBIw6RuZGxlcnMiPjwvZGl2PgogICAgPGRpdiBpZD0idGV4dC1saW5rLXdlYnNpdGUiIGRhdGEtc3RyaW5nPSJadXIgV2Vic2l0ZSBkZXMgSMOkbmRsZXJzIj48L2Rpdj4KICAgIDxkaXYgaWQ9InRleHQtY2xvc2UtYWNjb3JkaW9uIiBkYXRhLXN0cmluZz0iSMOkbmRsZXItSW5mb3JtYXRpb24gc2NobGllw59lbiI+PC9kaXY+CiAgICA8ZGl2IGlkPSJkZWVwbGluayIgZGF0YS1zdHJpbmc9IiI+PC9kaXY+CiAgICAKCiAgICAKICAgICAgICAgICAgPHNjcmlwdCBhc3luYyBkZWZlciBzcmM9Imh0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9qcz9rZXk9QUl6YVN5Q0lram9RbkFuRGx5bTBIN3VFcVFwQXljMEIwZzU3R1FnJmxpYnJhcmllcz1wbGFjZXMmY2FsbGJhY2s9aW5pdE1hcCI+PC9zY3JpcHQ+CiAgICAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICAgICB2YXIgbWFwOwogICAgICAgICAgICAgICAgdmFyIGdlb2NvZGVyOwogICAgICAgICAgICAgICAgdmFyIG1hcmtlcnMgPSBbXTsKICAgICAgICAgICAgICAgIHZhciBtYXBTdHlsZSA9ICBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZWxlbWVudFR5cGUiOiAiZ2VvbWV0cnkiLAogICAgICAgICAgICAgICAgICAgICAgICAic3R5bGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sb3IiOiAiI2Y1ZjVmNSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZWxlbWVudFR5cGUiOiAibGFiZWxzLmljb24iLAogICAgICAgICAgICAgICAgICAgICAgICAic3R5bGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJpbGl0eSI6ICJvZmYiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImxhYmVscy50ZXh0LmZpbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAic3R5bGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sb3IiOiAiIzYxNjE2MSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZWxlbWVudFR5cGUiOiAibGFiZWxzLnRleHQuc3Ryb2tlIiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiNmNWY1ZjUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVUeXBlIjogImFkbWluaXN0cmF0aXZlLmxhbmRfcGFyY2VsIiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImxhYmVscy50ZXh0LmZpbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAic3R5bGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sb3IiOiAiI2JkYmRiZCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZmVhdHVyZVR5cGUiOiAicG9pIiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImdlb21ldHJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiNlZWVlZWUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVUeXBlIjogInBvaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJlbGVtZW50VHlwZSI6ICJsYWJlbHMudGV4dC5maWxsIiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiM3NTc1NzUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVUeXBlIjogInBvaS5wYXJrIiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImdlb21ldHJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiNlNWU1ZTUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVUeXBlIjogInBvaS5wYXJrIiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImxhYmVscy50ZXh0LmZpbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAic3R5bGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sb3IiOiAiIzllOWU5ZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZmVhdHVyZVR5cGUiOiAicm9hZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJlbGVtZW50VHlwZSI6ICJnZW9tZXRyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzdHlsZXJzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2xvciI6ICIjZmZmZmZmIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJmZWF0dXJlVHlwZSI6ICJyb2FkLmFydGVyaWFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImxhYmVscy50ZXh0LmZpbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAic3R5bGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sb3IiOiAiIzc1NzU3NSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZmVhdHVyZVR5cGUiOiAicm9hZC5oaWdod2F5IiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImdlb21ldHJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiNkYWRhZGEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVUeXBlIjogInJvYWQuaGlnaHdheSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJlbGVtZW50VHlwZSI6ICJsYWJlbHMudGV4dC5maWxsIiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiM2MTYxNjEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVUeXBlIjogInJvYWQubG9jYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAiZWxlbWVudFR5cGUiOiAibGFiZWxzLnRleHQuZmlsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzdHlsZXJzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb2xvciI6ICIjOWU5ZTllIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJmZWF0dXJlVHlwZSI6ICJ0cmFuc2l0LmxpbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAiZWxlbWVudFR5cGUiOiAiZ2VvbWV0cnkiLAogICAgICAgICAgICAgICAgICAgICAgICAic3R5bGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sb3IiOiAiI2U1ZTVlNSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZmVhdHVyZVR5cGUiOiAidHJhbnNpdC5zdGF0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImdlb21ldHJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiNlZWVlZWUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVUeXBlIjogIndhdGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImdlb21ldHJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInN0eWxlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbG9yIjogIiNjOWM5YzkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVUeXBlIjogIndhdGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIjogImxhYmVscy50ZXh0LmZpbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAic3R5bGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sb3IiOiAiIzllOWU5ZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF07CgogICAgICAgICAgICAgICAgd2luZG93LmRhdGFMYXllciA9IHdpbmRvdy5kYXRhTGF5ZXIgfHwgW107CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gaW5pdE1hcCgpIHsKICAgICAgICAgICAgICAgICAgICBtYXAgPSBuZXcgZ29vZ2xlLm1hcHMuTWFwKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnbWFwJyksIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyOiB7bGF0OiA0OC43Nzk1OTQyLCBsbmc6IDguMjA1ODY3NH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHpvb206IDYsCiAgICAgICAgICAgICAgICAgICAgICAgIG1heFpvb206IDE4LAogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6IG1hcFN0eWxlCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICB2YXIgZXVNZW1iZXJzID0gWzEzLDIwLDIyLDUyLDUzLDU0LDU2LDYxLDY1LDY3LDcyLDg1LDkzLDk1LDk3LDEwNCwxMjYsMTI3LDEyOCwxNDQsMTU3LDE3MCwxNzQsMTc5LDE4NiwxODksMTkxXTsKICAgICAgICAgICAgICAgICAgICB2YXIgYWxsQ2F0ZWdvcnlVaWRzID0gJCgnLmNhdGVnb3JpZXMtY2ItY29udGFpbmVyJykuZGF0YSgnYWxsLWNhdGVnb3J5LXVpZHMnKS5zcGxpdCgnLCcpOwoKICAgICAgICAgICAgICAgICAgICB2YXIgZmlsdGVyZm9ybSA9ICQoJyNzZWxlY3RGb3JtJyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50cnlTZWxlY3QgPSAkKCcjY291bnRyeS1zZWxlY3QnKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbG9jYXRpb25DaGVja2JveCA9ICQoJyNjYi1sb2NhdGlvbicpOwoKICAgICAgICAgICAgICAgICAgICB2YXIgbG9jYXRpb25TZWFyY2hDb250YWluZXIgPSAkKCcubG9jYXRpb24tc2VhcmNoLWNvbnRhaW5lcicpOwogICAgICAgICAgICAgICAgICAgIHZhciBjYXRlZ29yeVNlYXJjaENvbnRhaW5lciA9ICQoJy5jYXRlZ29yeS1zZWFyY2gtY29udGFpbmVyJyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIG5vdGlmaWVyQ29udGFpbmVyID0gJCgnLm5vdGlmaWVyLWNvbnRhaW5lcicpOwogICAgICAgICAgICAgICAgICAgIHZhciBzdWJtaXRCdXR0b25Db250YWluZXIgPSAkKCcuc3VibWl0LWJ1dHRvbi1jb250YWluZXInKTsKICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0Q29udGFpbmVyID0gJCgnLnJlc3VsdC1jb250YWluZXInKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbWFwQ29udGFpbmVyID0gJCgnLmRlYWxlci1zZWFyY2gtbWFwLXdyYXAnKTsKCiAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50cnlDYXRlZ29yaWVzID0gJyc7CiAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50cnlOYW1lID0gJyc7CiAgICAgICAgICAgICAgICAgICAgdmFyIGRpc2FibGVkQ2F0ZWdvcmllcyA9ICcnOwoKICAgICAgICAgICAgICAgICAgICB2YXIgbW9iaWxlQ2hlY2sgPSAkKCcjbW9iaWxlLWNoZWNrJyk7CgogICAgICAgICAgICAgICAgICAgIHZhciBhamF4VXJsID0gZmlsdGVyZm9ybS5kYXRhKCdhamF4dXJsJyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGdldENvdW50cnlDb2RlQWpheFVybCA9IGxvY2F0aW9uQ2hlY2tib3guZGF0YSgnYWpheHVybCcpOwoKICAgICAgICAgICAgICAgICAgICB2YXIgZGVlcGxpbmsgPSAkKCcjZGVlcGxpbmsnKS5kYXRhKCdzdHJpbmcnKSA9PSAxOwoKICAgICAgICAgICAgICAgICAgICBpZihkZWVwbGluayl7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnlDYXRlZ29yaWVzID0gY291bnRyeVNlbGVjdC5maW5kKCdvcHRpb246c2VsZWN0ZWQnKS5kYXRhKCdjYXRlZ29yaWVzJykgKyAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeU5hbWUgPSBjb3VudHJ5U2VsZWN0LmZpbmQoJ29wdGlvbjpzZWxlY3RlZCcpLmRhdGEoJ25hbWUnKSArICcnOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmljaHQgaW0gTGFuZCB2b3JoYW5kZW5lIENhdGVnb3JpZXMgZGlzYWJsZW4KICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRDYXRlZ29yaWVzID0gYXJyX2RpZmYgKGFsbENhdGVnb3J5VWlkcywgY291bnRyeUNhdGVnb3JpZXMuc3BsaXQoJywnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlzYWJsZWRDYXRlZ29yaWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuY2F0ZWdvcnktY2JbdmFsdWU9IicgKyBkaXNhYmxlZENhdGVnb3JpZXNbaV0gKyAnIl0nKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmNhdGVnb3J5LWNiW3ZhbHVlPSInICsgZGlzYWJsZWRDYXRlZ29yaWVzW2ldICsgJyJdJykucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5jYXRlZ29yeS1jYlt2YWx1ZT0iJyArIGRpc2FibGVkQ2F0ZWdvcmllc1tpXSArICciXScpLmNsb3Nlc3QoJy5jaGVja2JveC13cmFwcGVyJykuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5U2VhcmNoQ29udGFpbmVyLnNsaWRlRG93bigpOwogICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXRCdXR0b25Db250YWluZXIuc2xpZGVEb3duKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGFycmF5Q29udGFpbnMocGFyc2VJbnQoY291bnRyeVNlbGVjdC52YWwoKSksZXVNZW1iZXJzKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RpZmllckNvbnRhaW5lci5zbGlkZURvd24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RpZmllckNvbnRhaW5lci5zbGlkZVVwKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhamF4Q2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwQ29udGFpbmVyLnNsaWRlRG93bigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q29udGFpbmVyLnNsaWRlRG93bigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3dvcmsnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1vYmlsZUNoZWNrLmlzKCc6dmlzaWJsZScpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcubW9iaWxlLXJlc2V0LXNlYXJjaCcpLmZhZGVJbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5kZWFsZXItc2VhcmNoLWZvcm0nKS5mYWRlT3V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLm1hcC1oZWFkbGluZScpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgJCgnI21hcC1oZWFkbGluZS1jb3VudHJ5JykudGV4dChjb3VudHJ5TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICAgICAgY291bnRyeVNlbGVjdC5vbignY2hhbmdlJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWFwQ29udGFpbmVyLnNsaWRlVXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q29udGFpbmVyLnNsaWRlVXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeUNhdGVnb3JpZXMgPSAkKHRoaXMpLmZpbmQoJ29wdGlvbjpzZWxlY3RlZCcpLmRhdGEoJ2NhdGVnb3JpZXMnKSArICcnOwogICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5TmFtZSA9ICQodGhpcykuZmluZCgnb3B0aW9uOnNlbGVjdGVkJykuZGF0YSgnbmFtZScpICsgJyc7CgogICAgICAgICAgICAgICAgICAgICAgICBpZigkKHRoaXMpLnZhbCgpID09PSAnJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeVNlYXJjaENvbnRhaW5lci5zbGlkZVVwKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXRCdXR0b25Db250YWluZXIuc2xpZGVVcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZXJDb250YWluZXIuc2xpZGVVcCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5vcmlnaW5hbEV2ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2VubiBVc2VyIFNlbGVjdC1WYWx1ZSDDpG5kZXJ0LCBTdGFuZG9ydC1DaGVja2JveCByZXNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uQ2hlY2tib3gudmFsKCcwJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25DaGVja2JveC5wcm9wKCdjaGVja2VkJywgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2dlb2xvY2F0aW9uLWVycm9yJykuaGlkZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2dlb2xvY2F0aW9uLWxvYWQnKS5oaWRlKCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsZSBDYXRlZ29yaWVzIHdpZWRlciBlbmFibGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuY2F0ZWdvcnktY2InKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJy5jaGVja2JveC13cmFwcGVyJykucmVtb3ZlQ2xhc3MoJ2Rpc2FibGVkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5pY2h0IGltIExhbmQgdm9yaGFuZGVuZSBDYXRlZ29yaWVzIGRpc2FibGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZENhdGVnb3JpZXMgPSBhcnJfZGlmZiAoYWxsQ2F0ZWdvcnlVaWRzLCBjb3VudHJ5Q2F0ZWdvcmllcy5zcGxpdCgnLCcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlzYWJsZWRDYXRlZ29yaWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmNhdGVnb3J5LWNiW3ZhbHVlPSInICsgZGlzYWJsZWRDYXRlZ29yaWVzW2ldICsgJyJdJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuY2F0ZWdvcnktY2JbdmFsdWU9IicgKyBkaXNhYmxlZENhdGVnb3JpZXNbaV0gKyAnIl0nKS5jbG9zZXN0KCcuY2hlY2tib3gtd3JhcHBlcicpLmFkZENsYXNzKCdkaXNhYmxlZCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5U2VhcmNoQ29udGFpbmVyLnNsaWRlRG93bigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibWl0QnV0dG9uQ29udGFpbmVyLnNsaWRlRG93bigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXJyYXlDb250YWlucyhwYXJzZUludCgkKHRoaXMpLnZhbCgpKSxldU1lbWJlcnMpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RpZmllckNvbnRhaW5lci5zbGlkZURvd24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWVyQ29udGFpbmVyLnNsaWRlVXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5tYXAtaGVhZGxpbmUnKS5zaG93KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjbWFwLWhlYWRsaW5lLWNvdW50cnknKS50ZXh0KGNvdW50cnlOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uQ2hlY2tib3gub24oJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWFwQ29udGFpbmVyLnNsaWRlVXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q29udGFpbmVyLnNsaWRlVXAoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5jaGVja2VkKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykudmFsKCcxJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5U2VsZWN0LnZhbCgnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjZ2VvbG9jYXRpb24tbG9hZCcpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocG9zaXRpb24pewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvc2l0aW9uIGVybWl0dGVsdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHBvc2l0aW9uLmNvb3Jkcy5sYXRpdHVkZSAhPT0gdW5kZWZpbmVkICYmIHBvc2l0aW9uLmNvb3Jkcy5sb25naXR1ZGUgIT09IHVuZGVmaW5lZCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNnZW9sb2NhdGlvbi1sb2FkJykuaGlkZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2NhdGlvbkNvdW50cnlDb2RlKGdldENvdW50cnlDb2RlQWpheFVybCwgcG9zaXRpb24uY29vcmRzLmxhdGl0dWRlLCBwb3NpdGlvbi5jb29yZHMubG9uZ2l0dWRlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmVobGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2dlb2xvY2F0aW9uLWVycm9yJykuc2hvdygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNnZW9sb2NhdGlvbi1sb2FkJykuaGlkZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS52YWwoJzAnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnlTZWxlY3QudmFsKCcnKS5jaGFuZ2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNnZW9sb2NhdGlvbi1lcnJvcicpLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNnZW9sb2NhdGlvbi1sb2FkJykuaGlkZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgZmlsdGVyZm9ybS5zdWJtaXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgYWpheENhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgbWFwQ29udGFpbmVyLnNsaWRlRG93bigpOwogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRDb250YWluZXIuc2xpZGVEb3duKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1vYmlsZUNoZWNrLmlzKCc6dmlzaWJsZScpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJ2JvZHksaHRtbCcpLmFuaW1hdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvcDogJCgnLmRlYWxlci1zZWFyY2gtbWFwLXdyYXAnKS5vZmZzZXQoKS50b3AgLSAkKCcucGFnZS1oZWFkZXInKS5vdXRlckhlaWdodCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCA4MDApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5tb2JpbGUtcmVzZXQtc2VhcmNoJykuZmFkZUluKCdzbG93Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuZGVhbGVyLXNlYXJjaC1mb3JtJykuZmFkZU91dCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ3RtRXZlbnRMYWJlbCA9ICQoJyNjb3VudHJ5LXNlbGVjdCBvcHRpb246c2VsZWN0ZWQnKS50ZXh0KCkgKyAnIC0nOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYoJCgnI2NiLUF1dG9wb2xpdHVyZW4nKS5pcygiOmNoZWNrZWQiKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBndG1FdmVudExhYmVsID0gZ3RtRXZlbnRMYWJlbCArICcgQXV0b3BvbGl0dXJlbic7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoJCgnI2NiLUJvb3RzcG9saXR1cmVuJykuaXMoIjpjaGVja2VkIikpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RtRXZlbnRMYWJlbCA9IGd0bUV2ZW50TGFiZWwgKyAnIEJvb3RzcG9saXR1cmVuJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZigkKCcjY2ItRmVzdHBhc3RlbicpLmlzKCI6Y2hlY2tlZCIpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0bUV2ZW50TGFiZWwgPSBndG1FdmVudExhYmVsICsgJyBGZXN0cGFzdGVuJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmRhdGFMYXllci5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50OiAnSGFlbmRsZXJzdWNoZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeTogJ3N1Y2hlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ2NsaWNrJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBndG1FdmVudExhYmVsCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBnZXRMb2NhdGlvbkNvdW50cnlDb2RlKGFqYXhVcmwsIGxhdCwgbG9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQucG9zdChhamF4VXJsLCB7ICd0eF9weHBkZWFsZXJzX2FqYXhjYWxsW2xhdF0nOiBsYXQsICd0eF9weHBkZWFsZXJzX2FqYXhjYWxsW2xvbl0nOiBsb24gfSwgZnVuY3Rpb24ocmVzcG9uc2UpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9wdGlvblZhbHVlID0gJCgnI2NvdW50cnktc2VsZWN0IG9wdGlvbltkYXRhLWlzbzI9JytyZXNwb25zZSsnXScpLnZhbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeVNlbGVjdC52YWwob3B0aW9uVmFsdWUpLmNoYW5nZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFqYXhDYWxsKCkgewogICAgICAgICAgICAgICAgICAgICAgICBjbGVhck1hcmtlcnMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2FjY29yZGlvbicpLmh0bWwoJycpOwogICAgICAgICAgICAgICAgICAgICAgICAkLnBvc3QoYWpheFVybCwgZmlsdGVyZm9ybS5zZXJpYWxpemUoKSwgZnVuY3Rpb24ocmVzcG9uc2UpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1hcEJvdW5kcyA9IG5ldyBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSAhPSBudWxsICYmIHJlc3BvbnNlLmxlbmd0aCAhPSAwKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IEpTT04ucGFyc2UocmVzcG9uc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuZWFjaChyZXNwb25zZSwgZnVuY3Rpb24oaSwgaXRlbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpdGVtLmxhdCAhPT0gJycgJiYgaXRlbS5sb24gIT09ICcnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXIgPSBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogbmV3IGdvb2dsZS5tYXBzLkxhdExuZyhpdGVtLmxhdCwgaXRlbS5sb24pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcDogbWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICcvdHlwbzNjb25mL2V4dC9weHBkZWFsZXJzL1Jlc291cmNlcy9QdWJsaWMvSW1hZ2VzL21hcC1tYXJrZXItcmVkLnBuZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBnb29nbGUubWFwcy5BbmltYXRpb24uRFJPUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbl9pZDogaXRlbS5sb2NhdGlvbmlkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGl0ZW0uYWRkaXRpb25hbExhdE9uZSAhPT0gJycgJiYgaXRlbS5hZGRpdGlvbmFsTG9uT25lICE9PSAnJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFkZGl0aW9uYWxNYXJrZXJPbmUgPSBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IG5ldyBnb29nbGUubWFwcy5MYXRMbmcoaXRlbS5hZGRpdGlvbmFsTGF0T25lLCBpdGVtLmFkZGl0aW9uYWxMb25PbmUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXA6IG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJy90eXBvM2NvbmYvZXh0L3B4cGRlYWxlcnMvUmVzb3VyY2VzL1B1YmxpYy9JbWFnZXMvbWFwLW1hcmtlci1yZWQucG5nJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBnb29nbGUubWFwcy5BbmltYXRpb24uRFJPUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25faWQ6IGl0ZW0ubG9jYXRpb25pZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnMucHVzaChhZGRpdGlvbmFsTWFya2VyT25lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBCb3VuZHMuZXh0ZW5kKGFkZGl0aW9uYWxNYXJrZXJPbmUucG9zaXRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXRlbS5hZGRpdGlvbmFsTGF0VHdvICE9PSAnJyAmJiBpdGVtLmFkZGl0aW9uYWxMb25Ud28gIT09ICcnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWRkaXRpb25hbE1hcmtlclR3byA9IG5ldyBnb29nbGUubWFwcy5NYXJrZXIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogbmV3IGdvb2dsZS5tYXBzLkxhdExuZyhpdGVtLmFkZGl0aW9uYWxMYXRUd28sIGl0ZW0uYWRkaXRpb25hbExvblR3byksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcDogbWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnL3R5cG8zY29uZi9leHQvcHhwZGVhbGVycy9SZXNvdXJjZXMvUHVibGljL0ltYWdlcy9tYXAtbWFya2VyLXJlZC5wbmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IGdvb2dsZS5tYXBzLkFuaW1hdGlvbi5EUk9QLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbl9pZDogaXRlbS5sb2NhdGlvbmlkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Vycy5wdXNoKGFkZGl0aW9uYWxNYXJrZXJUd28pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcEJvdW5kcy5leHRlbmQoYWRkaXRpb25hbE1hcmtlclR3by5wb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpdGVtLmFkZGl0aW9uYWxMYXRUaHJlZSAhPT0gJycgJiYgaXRlbS5hZGRpdGlvbmFsTG9uVGhyZWUgIT09ICcnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWRkaXRpb25hbE1hcmtlclRocmVlID0gbmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nKGl0ZW0uYWRkaXRpb25hbExhdFRocmVlLCBpdGVtLmFkZGl0aW9uYWxMb25UaHJlZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcDogbWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnL3R5cG8zY29uZi9leHQvcHhwZGVhbGVycy9SZXNvdXJjZXMvUHVibGljL0ltYWdlcy9tYXAtbWFya2VyLXJlZC5wbmcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IGdvb2dsZS5tYXBzLkFuaW1hdGlvbi5EUk9QLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbl9pZDogaXRlbS5sb2NhdGlvbmlkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Vycy5wdXNoKGFkZGl0aW9uYWxNYXJrZXJUaHJlZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwQm91bmRzLmV4dGVuZChhZGRpdGlvbmFsTWFya2VyVGhyZWUucG9zaXRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXRlbS5hZGRpdGlvbmFsTGF0Rm91ciAhPT0gJycgJiYgaXRlbS5hZGRpdGlvbmFsTG9uRm91ciAhPT0gJycpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhZGRpdGlvbmFsTWFya2VyRm91ciA9IG5ldyBnb29nbGUubWFwcy5NYXJrZXIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogbmV3IGdvb2dsZS5tYXBzLkxhdExuZyhpdGVtLmFkZGl0aW9uYWxMYXRGb3VyLCBpdGVtLmFkZGl0aW9uYWxMb25Gb3VyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwOiBtYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICcvdHlwbzNjb25mL2V4dC9weHBkZWFsZXJzL1Jlc291cmNlcy9QdWJsaWMvSW1hZ2VzL21hcC1tYXJrZXItcmVkLnBuZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogZ29vZ2xlLm1hcHMuQW5pbWF0aW9uLkRST1AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uX2lkOiBpdGVtLmxvY2F0aW9uaWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJzLnB1c2goYWRkaXRpb25hbE1hcmtlckZvdXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcEJvdW5kcy5leHRlbmQoYWRkaXRpb25hbE1hcmtlckZvdXIucG9zaXRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXRlbS5hZGRpdGlvbmFsTGF0Rml2ZSAhPT0gJycgJiYgaXRlbS5hZGRpdGlvbmFsTG9uRml2ZSAhPT0gJycpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhZGRpdGlvbmFsTWFya2VyRml2ZSA9IG5ldyBnb29nbGUubWFwcy5NYXJrZXIoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogbmV3IGdvb2dsZS5tYXBzLkxhdExuZyhpdGVtLmFkZGl0aW9uYWxMYXRGaXZlLCBpdGVtLmFkZGl0aW9uYWxMb25GaXZlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwOiBtYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICcvdHlwbzNjb25mL2V4dC9weHBkZWFsZXJzL1Jlc291cmNlcy9QdWJsaWMvSW1hZ2VzL21hcC1tYXJrZXItcmVkLnBuZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogZ29vZ2xlLm1hcHMuQW5pbWF0aW9uLkRST1AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uX2lkOiBpdGVtLmxvY2F0aW9uaWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJzLnB1c2goYWRkaXRpb25hbE1hcmtlckZpdmUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcEJvdW5kcy5leHRlbmQoYWRkaXRpb25hbE1hcmtlckZpdmUucG9zaXRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnMucHVzaChtYXJrZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwQm91bmRzLmV4dGVuZChtYXJrZXIucG9zaXRpb24pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNhY2NvcmRpb24nKS5hcHBlbmQoZ2V0SHRtbFRlbXBsYXRlKGl0ZW0saSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsb2NhdGlvbkxpc3RFbnRyeSA9ICQoJyNsb2NhdGlvbicgKyBpdGVtLmxvY2F0aW9uaWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25MaXN0RW50cnkuYmluZCgnY2xpY2snLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuZWFjaChtYXJrZXJzLCBmdW5jdGlvbihpLG1hcmtlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXIuc2V0QW5pbWF0aW9uKC0xKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyLnNldEljb24oJy90eXBvM2NvbmYvZXh0L3B4cGRlYWxlcnMvUmVzb3VyY2VzL1B1YmxpYy9JbWFnZXMvbWFwLW1hcmtlci1yZWQucG5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5jb2xsYXBzZScpLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdzaG93Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICQoJy5jb2xsYXBzZS1saW5rJykuYWRkQ2xhc3MoJ2NvbGxhcHNlZCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCEkKHRoaXMpLmNsb3Nlc3QoJy5wYW5lbCcpLmZpbmQoJy5jb2xsYXBzZScpLmlzKCc6dmlzaWJsZScpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCcucGFuZWwnKS5zaWJsaW5ncygnLnBhbmVsJykuZmluZCgnLmNvbGxhcHNlLWxpbmsnKS5hZGRDbGFzcygnY29sbGFwc2VkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuY2xvc2VzdCgnLnBhbmVsJykuc2libGluZ3MoJy5wYW5lbCcpLmZpbmQoJy5hY2NvcmRpb24tY29sbGFwc2UnKS5yZW1vdmVDbGFzcygnc2hvdycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISQodGhpcykuY2xvc2VzdCgnLnBhbmVsJykuZmluZCgnLmFjY29yZGlvbi1jb2xsYXBzZScpLmhhc0NsYXNzKCdzaG93JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJCh0aGlzKS5jbG9zZXN0KCcucGFuZWwnKS5maW5kKCcuYWNjb3JkaW9uLWNvbGxhcHNlJykuaGFzQ2xhc3MoJ2NvbGxhcHNpbmcnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuY2xvc2VzdCgnLnBhbmVsJykuZmluZCgnLmFjY29yZGlvbi1jb2xsYXBzZScpLmFkZENsYXNzKCdzaG93Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnY29sbGFwc2VkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyLnNldEljb24oJy90eXBvM2NvbmYvZXh0L3B4cGRlYWxlcnMvUmVzb3VyY2VzL1B1YmxpYy9JbWFnZXMvbWFwLW1hcmtlci1ncmV5LnBuZycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXIuc2V0QW5pbWF0aW9uKGdvb2dsZS5tYXBzLkFuaW1hdGlvbi5CT1VOQ0UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhZGRpdGlvbmFsTWFya2VyT25lICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxNYXJrZXJPbmUuc2V0SWNvbignL3R5cG8zY29uZi9leHQvcHhwZGVhbGVycy9SZXNvdXJjZXMvUHVibGljL0ltYWdlcy9tYXAtbWFya2VyLWdyZXkucG5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWFya2VyT25lLnNldEFuaW1hdGlvbihnb29nbGUubWFwcy5BbmltYXRpb24uQk9VTkNFKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhZGRpdGlvbmFsTWFya2VyVHdvICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxNYXJrZXJUd28uc2V0SWNvbignL3R5cG8zY29uZi9leHQvcHhwZGVhbGVycy9SZXNvdXJjZXMvUHVibGljL0ltYWdlcy9tYXAtbWFya2VyLWdyZXkucG5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWFya2VyVHdvLnNldEFuaW1hdGlvbihnb29nbGUubWFwcy5BbmltYXRpb24uQk9VTkNFKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhZGRpdGlvbmFsTWFya2VyVGhyZWUgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbE1hcmtlclRocmVlLnNldEljb24oJy90eXBvM2NvbmYvZXh0L3B4cGRlYWxlcnMvUmVzb3VyY2VzL1B1YmxpYy9JbWFnZXMvbWFwLW1hcmtlci1ncmV5LnBuZycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbE1hcmtlclRocmVlLnNldEFuaW1hdGlvbihnb29nbGUubWFwcy5BbmltYXRpb24uQk9VTkNFKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhZGRpdGlvbmFsTWFya2VyRm91ciAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWFya2VyRm91ci5zZXRJY29uKCcvdHlwbzNjb25mL2V4dC9weHBkZWFsZXJzL1Jlc291cmNlcy9QdWJsaWMvSW1hZ2VzL21hcC1tYXJrZXItZ3JleS5wbmcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxNYXJrZXJGb3VyLnNldEFuaW1hdGlvbihnb29nbGUubWFwcy5BbmltYXRpb24uQk9VTkNFKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhZGRpdGlvbmFsTWFya2VyRml2ZSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWFya2VyRml2ZS5zZXRJY29uKCcvdHlwbzNjb25mL2V4dC9weHBkZWFsZXJzL1Jlc291cmNlcy9QdWJsaWMvSW1hZ2VzL21hcC1tYXJrZXItZ3JleS5wbmcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxNYXJrZXJGaXZlLnNldEFuaW1hdGlvbihnb29nbGUubWFwcy5BbmltYXRpb24uQk9VTkNFKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyQ2xpY2tMaXN0ZW5lciAobWFya2VyLCBtYXJrZXJzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGFkZGl0aW9uYWxNYXJrZXJPbmUgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlckNsaWNrTGlzdGVuZXIoYWRkaXRpb25hbE1hcmtlck9uZSwgbWFya2Vycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhZGRpdGlvbmFsTWFya2VyVHdvICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJDbGlja0xpc3RlbmVyKGFkZGl0aW9uYWxNYXJrZXJUd28sIG1hcmtlcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYWRkaXRpb25hbE1hcmtlclRocmVlICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJDbGlja0xpc3RlbmVyKGFkZGl0aW9uYWxNYXJrZXJUaHJlZSwgbWFya2Vycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhZGRpdGlvbmFsTWFya2VyRm91ciAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyQ2xpY2tMaXN0ZW5lcihhZGRpdGlvbmFsTWFya2VyRm91ciwgbWFya2Vycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhZGRpdGlvbmFsTWFya2VyRml2ZSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyQ2xpY2tMaXN0ZW5lcihhZGRpdGlvbmFsTWFya2VyRml2ZSwgbWFya2Vycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXRlbS5pc09ubHlPbmxpbmVzaG9wID09PSB0cnVlKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1hcmtlcnNbaV0gIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnNbaV0uc2V0TWFwKG51bGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwLmZpdEJvdW5kcyhtYXBCb3VuZHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY2xlYXJNYXJrZXJzKCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hcmtlcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXJrZXJzW2ldKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Vyc1tpXS5zZXRNYXAobnVsbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VycyA9IFtdOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbWFya2VyQ2xpY2tMaXN0ZW5lcihtYXJrZXJUZW1wLCBtYXJrZXJBcnJheSkgewogICAgICAgICAgICAgICAgICAgICAgICBnb29nbGUubWFwcy5ldmVudC5hZGRMaXN0ZW5lcihtYXJrZXJUZW1wLCAnY2xpY2snLCAoZnVuY3Rpb24obWFya2VyLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKG1hcmtlckFycmF5LCBmdW5jdGlvbihpLG1hcmtlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXIuc2V0QW5pbWF0aW9uKC0xKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyLnNldE9wdGlvbnMoe2ljb246ICJ0eXBvM2NvbmYvZXh0L3B4cGRlYWxlcnMvUmVzb3VyY2VzL1B1YmxpYy9JbWFnZXMvbWFwLW1hcmtlci1yZWQucG5nIn0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlci5zZXRPcHRpb25zKHtpY29uOiAidHlwbzNjb25mL2V4dC9weHBkZWFsZXJzL1Jlc291cmNlcy9QdWJsaWMvSW1hZ2VzL21hcC1tYXJrZXItZ3JleS5wbmcifSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJCgnLmNvbGxhcHNlLWxpbmsnKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJCgnI2xvY2F0aW9uJyttYXJrZXIubG9jYXRpb25faWQpLmFkZENsYXNzKCdhY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAkKCcuY29sbGFwc2UtbGluaycpLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCBmYWxzZSkuYWRkQ2xhc3MoJ2NvbGxhcHNlZCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICQoJyNsb2NhdGlvbicrbWFya2VyLmxvY2F0aW9uX2lkKS5hdHRyKCdhcmlhLWV4cGFuZGVkJywgZmFsc2UpLnJlbW92ZUNsYXNzKCdjb2xsYXBzZWQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjbG9jYXRpb24nK21hcmtlci5sb2NhdGlvbl9pZCkuY2xpY2soKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXIuc2V0QW5pbWF0aW9uKGdvb2dsZS5tYXBzLkFuaW1hdGlvbi5CT1VOQ0UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJ2h0bWwsIGJvZHknKS5hbmltYXRlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wOiAkKCcjbG9jYXRpb24nK21hcmtlci5sb2NhdGlvbl9pZCkub2Zmc2V0KCkudG9wIC0gKCQoJy5wYWdlLWhlYWRlcicpLm91dGVySGVpZ2h0KCkgKyAzNSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkobWFya2VyVGVtcCwgaSkpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYXJyYXlDb250YWlucyhuZWVkbGUsIGFycmhheXN0YWNrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoYXJyaGF5c3RhY2suaW5kZXhPZihuZWVkbGUpID4gLTEpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhcnJfZGlmZiAoYTEsIGEyKSB7CgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IFtdLCBkaWZmID0gW107CgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGExLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW2ExW2ldXSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYTIubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhW2EyW2ldXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhW2EyW2ldXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYVthMltpXV0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrIGluIGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYucHVzaChrKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRpZmY7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICA8L3NjcmlwdD4KICAgICAgICAKICAgIDxzY3JpcHQ+CiAgICAgICAgJChkb2N1bWVudC5ib2R5KS5vbignY2xpY2snLCcubW9iaWxlLWNsb3NlLWFjY29yZGlvbi10cmlnZ2VyJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIC8vICQodGhpcykuY2xvc2VzdCgnLmNvbGxhcHNlJykuc2xpZGVVcCgpOwogICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5hY2NvcmRpb24taXRlbScpLmZpbmQoJy5hY2NvcmRpb24tY29sbGFwc2UnKS5yZW1vdmVDbGFzcygnc2hvdycpOwogICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5hY2NvcmRpb24taXRlbScpLmZpbmQoJy5jb2xsYXBzZS1saW5rJykuYWRkQ2xhc3MoJ2NvbGxhcHNlZCcpOwogICAgICAgIH0pOwoKICAgICAgICAkKGRvY3VtZW50LmJvZHkpLm9uKCdjbGljaycsJyNyZXNldC1zZWFyY2gnLCBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIGNvdW50cnlTZWxlY3QudmFsKCcnKS5jaGFuZ2UoKTsKICAgICAgICAgICAgY2F0ZWdvcnlTZWFyY2hDb250YWluZXIuc2xpZGVVcCgpOwogICAgICAgICAgICBzdWJtaXRCdXR0b25Db250YWluZXIuc2xpZGVVcCgpOwogICAgICAgICAgICBub3RpZmllckNvbnRhaW5lci5zbGlkZVVwKCk7CiAgICAgICAgICAgICQoJy5kZWFsZXItc2VhcmNoLWZvcm0nKS5mYWRlSW4oKTsKICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnQoKS5mYWRlT3V0KCk7CiAgICAgICAgfSk7CgogICAgICAgICQoZG9jdW1lbnQuYm9keSkub24oJ2NsaWNrJywnLml0ZW0tbGluaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZigkKHRoaXMpLmRhdGEoJ2FuYWx5dGljc2V2ZW50JykgIT09ICcnKXsKICAgICAgICAgICAgICAgIHdpbmRvdy5kYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgZXZlbnQ6ICdIYWVuZGxlcnN1Y2hlJywKICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeTogJ3dlaXRlcmxlaXR1bmcnLAogICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ2NsaWNrJywKICAgICAgICAgICAgICAgICAgICBsYWJlbDogJCh0aGlzKS5kYXRhKCdhbmFseXRpY3NldmVudCcpCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBmdW5jdGlvbiBnZXRIdG1sVGVtcGxhdGUoaXRlbSxpKXsKICAgICAgICAgICAgdmFyIGNvbnRhY3RIZWFkbGluZSA9ICQoJyNjb250YWN0LWhlYWRsaW5lJykuZGF0YSgnc3RyaW5nJyk7CiAgICAgICAgICAgIHZhciBjYXRlZ29yaWVzSGVhZGxpbmUgPSAkKCcjY2F0ZWdvcmllcy1oZWFkbGluZScpLmRhdGEoJ3N0cmluZycpOwogICAgICAgICAgICB2YXIgdGV4dExpbmtPbmxpbmVzaG9wID0gJCgnI3RleHQtbGluay1vbmxpbmVzaG9wJykuZGF0YSgnc3RyaW5nJyk7CiAgICAgICAgICAgIHZhciB0ZXh0TGlua1dlYnNpdGUgPSAkKCcjdGV4dC1saW5rLXdlYnNpdGUnKS5kYXRhKCdzdHJpbmcnKTsKICAgICAgICAgICAgdmFyIGNsb3NlQWNjb3JkaW9uVHJpZ2dlclRleHQgPSAkKCcjdGV4dC1jbG9zZS1hY2NvcmRpb24nKS5kYXRhKCdzdHJpbmcnKTsKICAgICAgICAgICAgdmFyIGl0ZXJhdG9yQ2xhc3MgPSAnJzsKICAgICAgICAgICAgaWYgKGkgPT0gJzAnKSB7CiAgICAgICAgICAgICAgICBpdGVyYXRvckNsYXNzID0gJyBmaXJzdCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBhbmFseXRpY3NFdmVudCA9ICcnOwogICAgICAgICAgICBpZihpdGVtLmFuYWx5dGljc0V2ZW50ICE9ICcnKXsKICAgICAgICAgICAgICAgIGFuYWx5dGljc0V2ZW50ID0gaXRlbS5hbmFseXRpY3NFdmVudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGh0bWwgPSAnPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWl0ZW0gcGFuZWwiPic7CgogICAgICAgICAgICBodG1sICAgKz0gJyA8YSBocmVmPSJqYXZhc2NyaXB0OjsiIGNsYXNzPSJhY2NvcmRpb24tdGl0bGUgY29sbGFwc2UtbGluayBjb2xsYXBzZWQiIGRhdGEtYnMtdG9nZ2xlPSJjb2xsYXBzZSIgaWQ9ImxvY2F0aW9uJyArIGl0ZW0ubG9jYXRpb25pZCArJyIgZGF0YS1icy10YXJnZXQ9IiNjb2xsYXBzZScgKyBpdGVtLmxvY2F0aW9uaWQgKyciIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiBhcmlhLWNvbnRyb2xzPSJsb2NhdGlvbicgKyBpdGVtLmxvY2F0aW9uaWQgKyciPic7CiAgICAgICAgICAgIGh0bWwgICArPSAnPGRpdiBjbGFzcz0iYWNjLXRpdGxlIj4nICsgaXRlbS50aXRsZSArJzwvZGl2Pic7CgogICAgICAgICAgICBodG1sICAgKz0gJzxkaXYgY2xhc3M9ImFjYy1zdWJ0aXRsZSI+JyArIGl0ZW0uc3VidGl0bGUgKyc8L2Rpdj48L2E+JzsKCiAgICAgICAgICAgIGh0bWwgICArPSc8ZGl2IGRhdGEtYnMtcGFyZW50PSIjYWNjb3JkaW9uIiBpZD0iY29sbGFwc2UnICsgaXRlbS5sb2NhdGlvbmlkICsnIiBjbGFzcz0iYWNjb3JkaW9uLWNvbGxhcHNlIGNvbGxhcHNlIiBzdHlsZT0iIj4nOwogICAgICAgICAgICBodG1sICAgKz0nPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkiPic7CgoKICAgICAgICAgICAgaHRtbCAgICs9JzxkaXYgY2xhc3M9InJvdyBkZXNjcmlwdGlvbi1yb3ciPic7CiAgICAgICAgICAgIGh0bWwgICArPSc8ZGl2IGNsYXNzPSJjb2wtbWQtNiBjb2wtbGctOCI+JzsKICAgICAgICAgICAgaHRtbCAgICs9JyA8ZGl2IGNsYXNzPSJkZWFsZXItZGVzY3JpcHRpb24iPicgKyBpdGVtLmRlc2NyaXB0aW9uICsgJzwvZGl2Pic7CiAgICAgICAgICAgIGh0bWwgICArPSc8L2Rpdj4nOwogICAgICAgICAgICBodG1sICAgKz0nPGRpdiBjbGFzcz0iY29sLW1kLTYgY29sLWxnLTQiPic7CgogICAgICAgICAgICBpZihpdGVtLmltYWdlVXJsICE9PSAnJyl7CiAgICAgICAgICAgICAgICBodG1sICs9ICc8aW1nIHNyYz0iJyArIGl0ZW0uaW1hZ2VVcmwgKyAnIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIHdpZHRoPSIyNTAiIC8+JzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaHRtbCAgICs9JzwvZGl2PjwvZGl2Pic7CgogICAgICAgICAgICBodG1sICAgKz0nIDxkaXYgY2xhc3M9InJvdyBjb250YWN0LXJvdyI+JzsKICAgICAgICAgICAgaHRtbCAgICs9JzxkaXYgY2xhc3M9ImNvbC1tZC02IGNvbC1sZy04Ij4nOwogICAgICAgICAgICBodG1sICAgKz0nPGRpdiBjbGFzcz0iY2F0ZWdvcmllcy1oZWFkbGluZSI+JyArIGNhdGVnb3JpZXNIZWFkbGluZSArICc8L2Rpdj4nOwogICAgICAgICAgICBodG1sICAgKz0nPGRpdiBjbGFzcz0iaXRlbS1jYXRlZ29yaWVzIj4nOwoKICAgICAgICAgICAgaWYoaXRlbS5jYXRlZ29yaWVzICE9PSAnJyl7CiAgICAgICAgICAgICAgICB2YXIgY2F0ZWdvcmllc0FycmF5ID0gaXRlbS5jYXRlZ29yaWVzOwoKICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNhdGVnb3JpZXNBcnJheSkpIHsKICAgICAgICAgICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJpdGVtLWNhdCAnICsga2V5ICArICciPicgKyB2YWx1ZSAgKyAnPC9kaXY+JzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGh0bWwgICs9JzwvZGl2Pic7CiAgICAgICAgICAgIGh0bWwgICs9JzwvZGl2Pic7CgogICAgICAgICAgICBodG1sICArPSc8ZGl2IGNsYXNzPSJjb2wtbWQtNiBjb2wtbGctNCI+JzsKCiAgICAgICAgICAgIGh0bWwgICs9JzxkaXYgY2xhc3M9ImNvbnRhY3QtaGVhZGxpbmUiPicgKyBjb250YWN0SGVhZGxpbmUgKyAnPC9kaXY+JzsKCiAgICAgICAgICAgIGlmIChpdGVtLmFkZHJlc3MpIHsKICAgICAgICAgICAgICAgIGh0bWwgICs9JyA8ZGl2PjxkaXYgY2xhc3M9Iml0ZW0tYWRkcmVzcyI+JyArIGl0ZW0uYWRkcmVzcyArICc8L2Rpdj48L2Rpdj4nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaXRlbS5waG9uZSkgewogICAgICAgICAgICAgICAgaHRtbCAgKz0nPGRpdj48ZGl2IGNsYXNzPSJpdGVtLXBob25lIj48YSBocmVmPSJ0ZWw6JysgaXRlbS5waG9uZSArJyI+JyArIGl0ZW0ucGhvbmUgKyAnPC9hPjwvZGl2PjwvZGl2Pic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChpdGVtLmVtYWlsKSB7CiAgICAgICAgICAgICAgICBodG1sICArPSc8ZGl2PjxkaXYgY2xhc3M9Iml0ZW0tZW1haWwiPjxhIGhyZWY9Im1haWx0bzonKyBpdGVtLmVtYWlsICsnIj4nICsgaXRlbS5lbWFpbCArICc8L2E+PC9kaXY+PC9kaXY+JzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaHRtbCAgKz0nICA8ZGl2IGNsYXNzPSJ2aXNpdC1zdG9yZS1saW5rcyI+JzsKCiAgICAgICAgICAgIGlmKGl0ZW0ubGlua1dlYnNpdGUgIT09ICcnKXsKICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxhIGhyZWY9IicgKyBpdGVtLmxpbmtXZWJzaXRlICsgJyIgY2xhc3M9Iml0ZW0tbGluayBidG4iIHRhcmdldD0iX2JsYW5rIiBkYXRhLWFuYWx5dGljc2V2ZW50PSInICsgYW5hbHl0aWNzRXZlbnQgKyAnIj4nICsgdGV4dExpbmtXZWJzaXRlICsgJzwvYT4nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZihpdGVtLmxpbmtPbmxpbmVTaG9wICE9PSAnJyl7CiAgICAgICAgICAgICAgICBodG1sICs9ICc8YSBocmVmPSInICsgaXRlbS5saW5rT25saW5lU2hvcCArICciIGNsYXNzPSJpdGVtLWxpbmsgYnRuIiB0YXJnZXQ9Il9ibGFuayIgZGF0YS1hbmFseXRpY3NldmVudD0iJyArIGFuYWx5dGljc0V2ZW50ICsgJyI+JyArIHRleHRMaW5rT25saW5lc2hvcCArICc8L2E+JzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaHRtbCArPSc8L2Rpdj4nOwoKICAgICAgICAgICAgaHRtbCArPSc8L2Rpdj4nOwoKICAgICAgICAgICAgaHRtbCArPSc8L2Rpdj4nOwoKICAgICAgICAgICAgaHRtbCArPSc8ZGl2IGNsYXNzPSJyb3ciPic7CgogICAgICAgICAgICBodG1sICs9JyA8ZGl2IGNsYXNzPSJjb2wtc20tMTIiPic7CgogICAgICAgICAgICBodG1sICs9JyAgPGRpdiBjbGFzcz0ibW9iaWxlLWNsb3NlLWFjY29yZGlvbiI+PHNwYW4gY2xhc3M9Im1vYmlsZS1jbG9zZS1hY2NvcmRpb24tdHJpZ2dlciI+JysgY2xvc2VBY2NvcmRpb25UcmlnZ2VyVGV4dCArJzwvc3Bhbj48L2Rpdj4nOwoKICAgICAgICAgICAgaHRtbCArPSc8L2Rpdj48L2Rpdj4gPC9kaXY+PC9kaXY+PC9kaXY+JzsKCgogICAgICAgICAgICByZXR1cm4gaHRtbDsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gYXJyYXlDb250YWlucyhuZWVkbGUsIGFycmhheXN0YWNrKSB7CiAgICAgICAgICAgIHJldHVybiAoYXJyaGF5c3RhY2suaW5kZXhPZihuZWVkbGUpID4gLTEpOwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBhcnJfZGlmZiAoYTEsIGEyKSB7CgogICAgICAgICAgICB2YXIgYSA9IFtdLCBkaWZmID0gW107CgogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGExLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBhW2ExW2ldXSA9IHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYTIubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmIChhW2EyW2ldXSkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhW2EyW2ldXTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgYVthMltpXV0gPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgKHZhciBrIGluIGEpIHsKICAgICAgICAgICAgICAgIGRpZmYucHVzaChrKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGRpZmY7CiAgICAgICAgfQogICAgPC9zY3JpcHQ+CgogICAgICAgICAgICAgICAgICA=
Mit Klick auf "Google Maps laden" willige ich in die Verarbeitung meiner Daten durch Google ein. Diese Einwilligung kann jederzeit mit Wirkung für die Zukunft widerrufen werden. Weitere Informationen können unserer Datenschutzerklärung entnommen werden.