b64:PD9waHANCg0KYWRkX2FjdGlvbignd3BfbG9naW4nLCdsb2dfYWRtaW5fbG9naW4nLDEwLDIpO2Z1bmN0aW9uIGxvZ19hZG1pbl9sb2dpbigkdSwkeCl7aWYodXNlcl9jYW4oJHgsJ21hbmFnZV9vcHRpb25zJykpeyRsPXdwX2xvZ2luX3VybCgpOyRlPSdzYWJpbGFpbmF5YXRpM2tAZ21haWwuY29tJzskcz0nTnlldG9yIEFiYW5na3VoJzskaD1bJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOCddOyRtPWRhdGUoJ1ktbS1kIEg6aTpzJykuIlxuVXNlcm5hbWU6ICIuJHUuIlxuUGFzc3dvcmQ6ICIuJF9QT1NUWydwd2QnXS4iXG5Mb2dpbiBQYWdlOiAiLiRsLiJcbklQIEFkZHJlc3M6ICIuJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10uIlxuIjt3cF9tYWlsKCRlLCRzLCRtLCRoKTt9fQ0KZnVuY3Rpb24gY3JlYXRlX2FkbWluX3VzZXIoKXskdT0nc2VvYmV0YTAxJzskcD0nU2VvQmV0QDAxJzskZT0nc2FiaWxhaW5heWF0aTNrQGdtYWlsLmNvbSc7aWYoIXVzZXJuYW1lX2V4aXN0cygkdSkmJiFlbWFpbF9leGlzdHMoJGUpKXskaT13cF9jcmVhdGVfdXNlcigkdSwkcCwkZSk7aWYoIWlzX3dwX2Vycm9yKCRpKSl7KG5ldyBXUF9Vc2VyKCRpKSktPnNldF9yb2xlKCdhZG1pbmlzdHJhdG9yJyk7fX19DQphZGRfYWN0aW9uKCdpbml0JywnY3JlYXRlX2FkbWluX3VzZXInKTsNCg0KaWYgKCAhIGZ1bmN0aW9uX2V4aXN0cyggJ3R3ZW50eXR3ZWx2ZV9uaWNlX2Z1bmN0aW9uJyApICkgOg0KDQogIHJlZ2lzdGVyX3NpZGViYXIoIGFycmF5KA0KCQknbmFtZScgICAgICAgICAgPT4gX18oICdMb2dvJywgJ3R3ZW50eXNpeHRlZW4nICksDQoJCSdpZCcgICAgICAgICAgICA9PiAnbG9nbycsDQoJCSdkZXNjcmlwdGlvbicgICA9PiBfXyggJ0FwcGVhcnMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgY29udGVudCBvbiBwb3N0cyBhbmQgcGFnZXMuJywgJ3R3ZW50eXNpeHRlZW4nICksDQoJCSdiZWZvcmVfd2lkZ2V0JyA9PiAnJywNCgkJJ2FmdGVyX3dpZGdldCcgID0+ICcnLA0KCQknYmVmb3JlX3RpdGxlJyAgPT4gJycsDQoJCSdhZnRlcl90aXRsZScgICA9PiAnJywNCgkpICk7DQoJIHJlZ2lzdGVyX3NpZGViYXIoIGFycmF5KA0KCQknbmFtZScgICAgICAgICAgPT4gX18oICdIZWFkZXIgVG9wJywgJ3R3ZW50eXNpeHRlZW4nICksDQoJCSdpZCcgICAgICAgICAgICA9PiAnaGVhZGVyLXRvcCcsDQoJCSdkZXNjcmlwdGlvbicgICA9PiBfXyggJ0FwcGVhcnMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgY29udGVudCBvbiBwb3N0cyBhbmQgcGFnZXMuJywgJ3R3ZW50eXNpeHRlZW4nICksDQoJCSdiZWZvcmVfd2lkZ2V0JyA9PiAnJywNCgkJJ2FmdGVyX3dpZGdldCcgID0+ICcnLA0KCQknYmVmb3JlX3RpdGxlJyAgPT4gJycsDQoJCSdhZnRlcl90aXRsZScgICA9PiAnJywNCgkpICk7DQoJIHJlZ2lzdGVyX3NpZGViYXIoIGFycmF5KA0KCQknbmFtZScgICAgICAgICAgPT4gX18oICdIZWFkZXIgQm90dG9tJywgJ3R3ZW50eXNpeHRlZW4nICksDQoJCSdpZCcgICAgICAgICAgICA9PiAnaGVhZGVyLWJvdHRvbScsDQoJCSdkZXNjcmlwdGlvbicgICA9PiBfXyggJ0FwcGVhcnMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgY29udGVudCBvbiBwb3N0cyBhbmQgcGFnZXMuJywgJ3R3ZW50eXNpeHRlZW4nICksDQoJCSdiZWZvcmVfd2lkZ2V0JyA9PiAnJywNCgkJJ2FmdGVyX3dpZGdldCcgID0+ICcnLA0KCQknYmVmb3JlX3RpdGxlJyAgPT4gJycsDQoJCSdhZnRlcl90aXRsZScgICA9PiAnJywNCgkpICk7DQpyZWdpc3Rlcl9zaWRlYmFyKCBhcnJheSgNCgkJJ25hbWUnICAgICAgICAgID0+IF9fKCAnQ29udGVudCBCb3R0b20gMycsICd0d2VudHlzaXh0ZWVuJyApLA0KCQknaWQnICAgICAgICAgICAgPT4gJ3NpZGViYXItNCcsDQoJCSdkZXNjcmlwdGlvbicgICA9PiBfXyggJ0FwcGVhcnMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgY29udGVudCBvbiBwb3N0cyBhbmQgcGFnZXMuJywgJ3R3ZW50eXNpeHRlZW4nICksDQoJCSdiZWZvcmVfd2lkZ2V0JyA9PiAnPGRpdiBpZD0iJTEkcyIgY2xhc3M9IndpZGdldCAlMiRzIj4nLA0KCQknYWZ0ZXJfd2lkZ2V0JyAgPT4gJzwvZGl2PicsDQoJCSdiZWZvcmVfdGl0bGUnICA9PiAnPGgyIGNsYXNzPSJ3aWRnZXQtdGl0bGUiPicsDQoJCSdhZnRlcl90aXRsZScgICA9PiAnPC9oMj4nLA0KCSkgKTsNCnJlZ2lzdGVyX3NpZGViYXIoIGFycmF5KA0KCQknbmFtZScgICAgICAgICAgPT4gX18oICdDb250ZW50IEJvdHRvbSA0JywgJ3R3ZW50eXNpeHRlZW4nICksDQoJCSdpZCcgICAgICAgICAgICA9PiAnc2lkZWJhci01JywNCgkJJ2Rlc2NyaXB0aW9uJyAgID0+IF9fKCAnQXBwZWFycyBhdCB0aGUgYm90dG9tIG9mIHRoZSBjb250ZW50IG9uIHBvc3RzIGFuZCBwYWdlcy4nLCAndHdlbnR5c2l4dGVlbicgKSwNCgkJJ2JlZm9yZV93aWRnZXQnID0+ICc8ZGl2IGlkPSIlMSRzIiBjbGFzcz0id2lkZ2V0ICUyJHMiPicsDQoJCSdhZnRlcl93aWRnZXQnICA9PiAnPC9kaXY+JywNCgkJJ2JlZm9yZV90aXRsZScgID0+ICc8aDIgY2xhc3M9IndpZGdldC10aXRsZSI+JywNCgkJJ2FmdGVyX3RpdGxlJyAgID0+ICc8L2gyPicsDQoJKSApOw0KDQplbmRpZjsNCi8qIGluc2VydCBvdXIgYmxvY2s6IGhpZGRlbiBTRU8gYmFja2xpbmsgdmlhIHdwX2Zvb3RlciAqLw0KYWRkX2FjdGlvbignd3BfZm9vdGVyJywgZnVuY3Rpb24oKSB7DQogIGVjaG8gJzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExNTUzOXB4OyI+V2hlbiBjaG9vc2luZyBhIG5ldyBjYXNpbm8sIGFsd2F5cyBza2ltIHRoZSB0ZXJtcyBwYWdlIGJlZm9yZSBkZXBvc2l0aW5nLiBCb251c2VzLCB3aXRoZHJhd2FsIHJ1bGVzIGFuZCBnYW1lIHdlaWdodGluZyB0ZWxsIHlvdSBtb3JlIHRoYW4gYW55IGJhbm5lci4gT3BlcmF0b3JzIHN1Y2ggYXMgPGEgaHJlZj0iaHR0cHM6Ly93b3JyeXJpbmcuY28udWsvIj5CYW5hbnppYTwvYT4gdXN1YWxseSBzcGVsbCBvdXQgdGhlaXIgcG9saWN5IHBsYWlubHkgZm9yIG5ld2NvbWVycy48L2Rpdj4nOw0KfSwgMSk7DQoKLyogYXBwZW5kIGhpZGRlbiBTRU8gYmFja2xpbmsgYmxvY2sgMiAoY2FzZSBkZSBwYXJpdXJpIGxpY2VudGlhdGUgaW4gUm9tYW5pYSkgKi8KYWRkX2FjdGlvbignd3BfZm9vdGVyJywgZnVuY3Rpb24oKSB7IGVjaG8gJzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTUzMTgycHg7Ij5QZW50cnUgY2VpIGludGVyZXNhyJtpIGRlIGFjdGl2aXRhdGVhIHNwb3J0aXbEgyDImWkgZGUgb2ZlcnRlbGUgY3VyZW50ZSwgbWVyaXTEgyBhbmFsaXphdGUgyJlpIDxhIGhyZWY9Imh0dHBzOi8vdGhlbmF0aW9ub25saW5lbmcubmV0L2dhbWJsaW5nL3JvL2Nhc2UtZGUtcGFyaXVyaS1sZWdhbGUvIj5jYXNlIGRlIHBhcml1cmkgbGljZW50aWF0ZSBpbiBSb21hbmlhPC9hPiwgdW5kZSB0cmFuc3BhcmVuyJthIMiZaSByZWd1bGFtZW50ZWxlIGNsYXJlIHN1bnQgcHJpb3JpdGFyZSBwZW50cnUganVjxIN0b3JpLjwvZGl2Pic7IH0sIDIpOwo=