IyAtKi0gY29kaW5nOiBrb2k4LXIgLSotCgppbXBvcnQgdW5pdHRlc3QKZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQKCmNsYXNzIFBFUDI2M1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgoKICAgIGRlZiB0ZXN0X3BlcDI2MyhzZWxmKToKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICB1IvDJ1M/OIi5lbmNvZGUoInV0Zi04IiksCiAgICAgICAgICAgICdceGQwXHg5Zlx4ZDBceGI4XHhkMVx4ODJceGQwXHhiZVx4ZDBceGJkJwogICAgICAgICkKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICB1IlzwIi5lbmNvZGUoInV0Zi04IiksCiAgICAgICAgICAgICdcXFx4ZDBceDlmJwogICAgICAgICkKCiAgICBkZWYgdGVzdF9jb21waWxlc3RyaW5nKHNlbGYpOgogICAgICAgICMgc2VlICMxODgyCiAgICAgICAgYyA9IGNvbXBpbGUoIlxuIyBjb2Rpbmc6IHV0Zi04XG51ID0gdSdceGMzXHhiMydcbiIsICJkdW1teSIsICJleGVjIikKICAgICAgICBkID0ge30KICAgICAgICBleGVjIGMgaW4gZAogICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZFsndSddLCB1J1x4ZjMnKQoKCiAgICBkZWYgdGVzdF9pc3N1ZTMyOTcoc2VsZik6CiAgICAgICAgYyA9IGNvbXBpbGUoImEsIGIgPSAnXFUwMDAxMDEwRicsICdcXFUwMDAxMDEwRiciLCAiZHVtbXkiLCAiZXhlYyIpCiAgICAgICAgZCA9IHt9CiAgICAgICAgZXhlYyhjLCBkKQogICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZFsnYSddLCBkWydiJ10pCiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZFsnYSddKSwgbGVuKGRbJ2InXSkpCgogICAgZGVmIHRlc3RfaXNzdWU3ODIwKHNlbGYpOgogICAgICAgICMgRW5zdXJlIHRoYXQgY2hlY2tfYm9tKCkgcmVzdG9yZXMgYWxsIGJ5dGVzIGluIHRoZSByaWdodCBvcmRlciBpZgogICAgICAgICMgY2hlY2tfYm9tKCkgZmFpbHMgaW4gcHlkZWJ1ZyBtb2RlOiBhIGJ1ZmZlciBzdGFydHMgd2l0aCB0aGUgZmlyc3QKICAgICAgICAjIGJ5dGUgb2YgYSB2YWxpZCBCT00sIGJ1dCBuZXh0IGJ5dGVzIGFyZSBkaWZmZXJlbnQKCiAgICAgICAgIyBvbmUgYnl0ZSBpbiBjb21tb24gd2l0aCB0aGUgVVRGLTE2LUxFIEJPTQogICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAnXHhmZlx4MjAnKQoKICAgICAgICAjIHR3byBieXRlcyBpbiBjb21tb24gd2l0aCB0aGUgVVRGLTggQk9NCiAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICdceGVmXHhiYlx4MjAnKQoKZGVmIHRlc3RfbWFpbigpOgogICAgdGVzdF9zdXBwb3J0LnJ1bl91bml0dGVzdChQRVAyNjNUZXN0KQoKaWYgX19uYW1lX189PSJfX21haW5fXyI6CiAgICB0ZXN0X21haW4oKQo=