IyEgLSotIGNvZGluZzoga29pOC1yIC0qLQ0KIyBUaGlzIGZpbGUgaXMgbWFya2VkIGFzIGJpbmFyeSBpbiB0aGUgQ1ZTLCB0byBwcmV2ZW50IE1hY0NWUyBmcm9tIHJlY29kaW5nIGl0Lg0KDQppbXBvcnQgdW5pdHRlc3QNCmZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydA0KDQpjbGFzcyBQRVAyNjNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToNCg0KICAgIGRlZiB0ZXN0X3BlcDI2MyhzZWxmKToNCiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgNCiAgICAgICAgICAgICLwydTPziIuZW5jb2RlKCJ1dGYtOCIpLA0KICAgICAgICAgICAgYidceGQwXHg5Zlx4ZDBceGI4XHhkMVx4ODJceGQwXHhiZVx4ZDBceGJkJw0KICAgICAgICApDQogICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoDQogICAgICAgICAgICAiXPAiLmVuY29kZSgidXRmLTgiKSwNCiAgICAgICAgICAgIGInXFxceGQwXHg5ZicNCiAgICAgICAgKQ0KDQogICAgZGVmIHRlc3RfY29tcGlsZXN0cmluZyhzZWxmKToNCiAgICAgICAgIyBzZWUgIzE4ODINCiAgICAgICAgYyA9IGNvbXBpbGUoYiJcbiMgY29kaW5nOiB1dGYtOFxudSA9ICdceGMzXHhiMydcbiIsICJkdW1teSIsICJleGVjIikNCiAgICAgICAgZCA9IHt9DQogICAgICAgIGV4ZWMoYywgZCkNCiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWyd1J10sICdceGYzJykNCg0KICAgIGRlZiB0ZXN0X2lzc3VlMjMwMShzZWxmKToNCiAgICAgICAgdHJ5Og0KICAgICAgICAgICAgY29tcGlsZShiIiMgY29kaW5nOiBjcDkzMlxucHJpbnQgJ1x4OTRceDRlJyIsICJkdW1teSIsICJleGVjIikNCiAgICAgICAgZXhjZXB0IFN5bnRheEVycm9yIGFzIHY6DQogICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2LnRleHQsICJwcmludCAnXHU1ZTc0JyIpDQogICAgICAgIGVsc2U6DQogICAgICAgICAgICBzZWxmLmZhaWwoKQ0KDQpkZWYgdGVzdF9tYWluKCk6DQogICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUEVQMjYzVGVzdCkNCg0KaWYgX19uYW1lX189PSJfX21haW5fXyI6DQogICAgdGVzdF9tYWluKCkNCg==