IiBUZXN0IHNwZWxsIGNoZWNraW5nCiIgTm90ZTogdGhpcyBmaWxlIHVzZXMgbGF0aW4xIGVuY29kaW5nLCBidXQgaXMgdXNlZCB3aXRoIHV0Zi04IGVuY29kaW5nLgoKc291cmNlIGNoZWNrLnZpbQpDaGVja0ZlYXR1cmUgc3BlbGwKCnNvdXJjZSBzY3JlZW5kdW1wLnZpbQoKZnVuYyBUZWFyRG93bigpCiAgc2V0IG5vc3BlbGwKICBjYWxsIGRlbGV0ZSgnWHRlc3QuYWZmJykKICBjYWxsIGRlbGV0ZSgnWHRlc3QuZGljJykKICBjYWxsIGRlbGV0ZSgnWHRlc3QubGF0aW4xLmFkZCcpCiAgY2FsbCBkZWxldGUoJ1h0ZXN0LmxhdGluMS5hZGQuc3BsJykKICBjYWxsIGRlbGV0ZSgnWHRlc3QubGF0aW4xLnNwbCcpCiAgY2FsbCBkZWxldGUoJ1h0ZXN0LmxhdGluMS5zdWcnKQogICIgc2V0ICdlbmNvZGluZycgdG8gY2xlYXIgdGhlIHdvcmQgbGlzdAogIHNldCBlbmNvZGluZz11dGYtOAplbmRmdW5jCgpmdW5jIFRlc3Rfd3JhcF9zZWFyY2goKQogIG5ldwogIGNhbGwgc2V0bGluZSgxLCBbJ1RoZScsICcnLCAnQSBwbG9uZyBsaW5lIHdpdGggdHdvIHpwZWxsaW5nIG1pc3Rha2VzJywgJycsICdFbmQnXSkKICBzZXQgc3BlbGwgd3JhcHNjYW4KICBub3JtYWwgXXMKICBjYWxsIGFzc2VydF9lcXVhbCgncGxvbmcnLCBleHBhbmQoJzxjd29yZD4nKSkKICBub3JtYWwgXXMKICBjYWxsIGFzc2VydF9lcXVhbCgnenBlbGxpbmcnLCBleHBhbmQoJzxjd29yZD4nKSkKICBub3JtYWwgXXMKICBjYWxsIGFzc2VydF9lcXVhbCgncGxvbmcnLCBleHBhbmQoJzxjd29yZD4nKSkKICBid2lwZSEKICBzZXQgbm9zcGVsbAplbmRmdW5jCgpmdW5jIFRlc3RfY3Vyc3dhbnQoKQogIG5ldwogIGNhbGwgc2V0bGluZSgxLCBbJ0Fub3RoZXIgcGxvbmcgbGluZScsICdhYmNkZWZnaGlqa2xtbm9wcSddKQogIHNldCBzcGVsbCB3cmFwc2NhbgogIG5vcm1hbCAwXXMKICBjYWxsIGFzc2VydF9lcXVhbCgncGxvbmcnLCBleHBhbmQoJzxjd29yZD4nKSkKICBub3JtYWwgagogIGNhbGwgYXNzZXJ0X2VxdWFsKDksIGdldGN1cnBvcygpWzJdKQogIG5vcm1hbCAwW3MKICBjYWxsIGFzc2VydF9lcXVhbCgncGxvbmcnLCBleHBhbmQoJzxjd29yZD4nKSkKICBub3JtYWwgagogIGNhbGwgYXNzZXJ0X2VxdWFsKDksIGdldGN1cnBvcygpWzJdKQoKICBub3JtYWwgMF1TCiAgY2FsbCBhc3NlcnRfZXF1YWwoJ3Bsb25nJywgZXhwYW5kKCc8Y3dvcmQ+JykpCiAgbm9ybWFsIGoKICBjYWxsIGFzc2VydF9lcXVhbCg5LCBnZXRjdXJwb3MoKVsyXSkKICBub3JtYWwgMFtTCiAgY2FsbCBhc3NlcnRfZXF1YWwoJ3Bsb25nJywgZXhwYW5kKCc8Y3dvcmQ+JykpCiAgbm9ybWFsIGoKICBjYWxsIGFzc2VydF9lcXVhbCg5LCBnZXRjdXJwb3MoKVsyXSkKCiAgbm9ybWFsIDFHMAogIGNhbGwgYXNzZXJ0X2VxdWFsKCdwbG9uZycsIHNwZWxsYmFkd29yZCgpWzBdKQogIG5vcm1hbCBqCiAgY2FsbCBhc3NlcnRfZXF1YWwoOSwgZ2V0Y3VycG9zKClbMl0pCgogIGJ3aXBlIQogIHNldCBub3NwZWxsCmVuZGZ1bmMKCmZ1bmMgVGVzdF96X2VxdWFsX29uX2ludmFsaWRfdXRmOF93b3JkKCkKICBzcGxpdAogIHNldCBzcGVsbAogIGNhbGwgc2V0bGluZSgxLCAiXHhmZiIpCiAgbm9ybSB6PQogIHNldCBub3NwZWxsCiAgYndpcGUhCmVuZGZ1bmMKCmZ1bmMgVGVzdF96X2VxdWFsX29uX3NpbmdsZV9jaGFyYWN0ZXIoKQogICIgdGhpcyB3YXMgZGVjcmVtZW50aW5nIHRoZSBpbmRleCBiZWxvdyB6ZXJvCiAgbmV3CiAgbm9ybSBhMFzKCiAgbm9ybSB6VwogIG5vcm0gFno9CgogIGJ3aXBlIQplbmRmdW5jCgoiIFRlc3Qgc3BlbGxiYWR3b3JkKCkgd2l0aCBhcmd1bWVudApmdW5jIFRlc3Rfc3BlbGxiYWR3b3JkKCkKICBzZXQgc3BlbGwKCiAgY2FsbCBhc3NlcnRfZXF1YWwoWydieWN5Y2xlJywgJ2JhZCddLCAgc3BlbGxiYWR3b3JkKCdNeSBieWN5Y2xlLicpKQogIGNhbGwgYXNzZXJ0X2VxdWFsKFsnYW5vdGhlcicsICdjYXBzJ10sICdBIHNlbnRlbmNlLiBhbm90aGVyIHNlbnRlbmNlJy0+c3BlbGxiYWR3b3JkKCkpCgogIGNhbGwgYXNzZXJ0X2VxdWFsKFsnVGhlQ2FtZWxXb3JkJywgJ2JhZCddLCAnVGhlQ2FtZWxXb3JkIGFzZGYnLT5zcGVsbGJhZHdvcmQoKSkKICBzZXQgc3BlbGxvcHRpb25zPWNhbWVsCiAgY2FsbCBhc3NlcnRfZXF1YWwoWydhc2RmJywgJ2JhZCddLCAnVGhlQ2FtZWxXb3JkIGFzZGYnLT5zcGVsbGJhZHdvcmQoKSkKICBzZXQgc3BlbGxvcHRpb25zPQoKICBzZXQgc3BlbGxsYW5nPWVuCiAgY2FsbCBhc3NlcnRfZXF1YWwoWycnLCAnJ10sICAgICAgICAgICAgc3BlbGxiYWR3b3JkKCdjZW50cmUnKSkKICBjYWxsIGFzc2VydF9lcXVhbChbJycsICcnXSwgICAgICAgICAgICBzcGVsbGJhZHdvcmQoJ2NlbnRlcicpKQogIHNldCBzcGVsbGxhbmc9ZW5fdXMKICBjYWxsIGFzc2VydF9lcXVhbChbJ2NlbnRyZScsICdsb2NhbCddLCBzcGVsbGJhZHdvcmQoJ2NlbnRyZScpKQogIGNhbGwgYXNzZXJ0X2VxdWFsKFsnJywgJyddLCAgICAgICAgICAgIHNwZWxsYmFkd29yZCgnY2VudGVyJykpCiAgc2V0IHNwZWxsbGFuZz1lbl9nYgogIGNhbGwgYXNzZXJ0X2VxdWFsKFsnJywgJyddLCAgICAgICAgICAgIHNwZWxsYmFkd29yZCgnY2VudHJlJykpCiAgY2FsbCBhc3NlcnRfZXF1YWwoWydjZW50ZXInLCAnbG9jYWwnXSwgc3BlbGxiYWR3b3JkKCdjZW50ZXInKSkKCiAgIiBDcmVhdGUgYSBzbWFsbCB3b3JkIGxpc3QgdG8gdGVzdCB0aGF0IHNwZWxsYmFkd29yZCgnLi4uJykKICAiIGNhbiByZXR1cm4gWycuLi4nLCAncmFyZSddLgogIGUgWHdvcmRzCiAgaW5zZXJ0CmZvbwpmb29iYXIvPwouCiAgIHchCiAgIG1rc3BlbGwhIFh3b3Jkcy5zcGwgWHdvcmRzCiAgIHNldCBzcGVsbGxhbmc9WHdvcmRzLnNwbAogICBjYWxsIGFzc2VydF9lcXVhbChbJ2Zvb2JhcicsICdyYXJlJ10sIHNwZWxsYmFkd29yZCgnZm9vIGZvb2JhcicpKQoKICAiIFR5cG8gc2hvdWxkIGJlIGRldGVjdGVkIGV2ZW4gd2l0aG91dCB0aGUgJ3NwZWxsJyBvcHRpb24uCiAgc2V0IHNwZWxsbGFuZz1lbl9nYiBub3NwZWxsCiAgY2FsbCBhc3NlcnRfZXF1YWwoWycnLCAnJ10sIHNwZWxsYmFkd29yZCgnY2VudHJlJykpCiAgY2FsbCBhc3NlcnRfZXF1YWwoWydieWN5Y2xlJywgJ2JhZCddLCBzcGVsbGJhZHdvcmQoJ015IGJ5Y3ljbGUuJykpCiAgY2FsbCBhc3NlcnRfZXF1YWwoWydhbm90aGVyJywgJ2NhcHMnXSwgc3BlbGxiYWR3b3JkKCdBIHNlbnRlbmNlLiBhbm90aGVyIHNlbnRlbmNlJykpCgogIHNldCBzcGVsbGxhbmc9CiAgY2FsbCBhc3NlcnRfZmFpbHMoImNhbGwgc3BlbGxiYWR3b3JkKCdtYXhjaCcpIiwgJ0U3NTY6JykKICBjYWxsIGFzc2VydF9mYWlscygic3BlbGxkdW1wIiwgJ0U3NTY6JykKCiAgY2FsbCBkZWxldGUoJ1h3b3Jkcy5zcGwnKQogIGNhbGwgZGVsZXRlKCdYd29yZHMnKQogIHNldCBzcGVsbGxhbmcmCiAgc2V0IHNwZWxsJgplbmRmdW5jCgpmdW5jIFRlc3Rfc3BlbGxfZmlsZV9taXNzaW5nKCkKICBsZXQgczpzcGVsbF9maWxlX21pc3NpbmcgPSAwCiAgYXVncm91cCBUZXN0U3BlbGxGaWxlTWlzc2luZwogICAgYXV0b2NtZCEgU3BlbGxGaWxlTWlzc2luZyAqIGxldCBzOnNwZWxsX2ZpbGVfbWlzc2luZyArPSAxCiAgYXVncm91cCBFTkQKCiAgc2V0IHNwZWxsIHNwZWxsbGFuZz1hYl9jZAogIGxldCBtZXNzYWdlcyA9IEdldE1lc3NhZ2VzKCkKICBjYWxsIGFzc2VydF9lcXVhbCgnV2FybmluZzogQ2Fubm90IGZpbmQgd29yZCBsaXN0ICJhYi51dGYtOC5zcGwiIG9yICJhYi5hc2NpaS5zcGwiJywgbWVzc2FnZXNbLTFdKQogIGNhbGwgYXNzZXJ0X2VxdWFsKDEsIHM6c3BlbGxfZmlsZV9taXNzaW5nKQoKICBuZXcgWFRlc3RTcGVsbEZpbGVNaXNzaW5nCiAgYXVncm91cCBUZXN0U3BlbGxGaWxlTWlzc2luZwogICAgYXV0b2NtZCEgU3BlbGxGaWxlTWlzc2luZyAqIGJ3aXBlCiAgYXVncm91cCBFTkQKICBjYWxsIGFzc2VydF9mYWlscygnc2V0IHNwZWxsIHNwZWxsbGFuZz1hYl9jZCcsICdFOTM3OicpCgogICIgY2xlYW4gdXAKICBhdWdyb3VwIFRlc3RTcGVsbEZpbGVNaXNzaW5nCiAgICBhdXRvY21kISBTcGVsbEZpbGVNaXNzaW5nCiAgYXVncm91cCBFTkQKICBhdWdyb3VwISBUZXN0U3BlbGxGaWxlTWlzc2luZwogIHVubGV0IHM6c3BlbGxfZmlsZV9taXNzaW5nCiAgc2V0IHNwZWxsJiBzcGVsbGxhbmcmCiAgJWJ3aXBlIQplbmRmdW5jCgpmdW5jIFRlc3Rfc3BlbGxkdW1wKCkKICAiIEluIGNhc2UgdGhlIHNwZWxsIGZpbGUgaXMgbm90IGZvdW5kIGF2b2lkIGdldHRpbmcgdGhlIGRvd25sb2FkIGRpYWxvZywgd2UKICAiIHdvdWxkIGdldCBzdHVjayBhdCB0aGUgcHJvbXB0LgogIGxldCBnOmVuX25vdF9mb3VuZCA9IDAKICBhdWdyb3VwIFRlc3RTcGVsbEZpbGVNaXNzaW5nCiAgICBhdSEgU3BlbGxGaWxlTWlzc2luZyAqIGxldCBnOmVuX25vdF9mb3VuZCA9IDEKICBhdWdyb3VwIEVORAogIHNldCBzcGVsbCBzcGVsbGxhbmc9ZW4KICBzcGVsbHJhcmUhIGVtYWNzCiAgaWYgZzplbl9ub3RfZm91bmQKICAgIGNhbGwgYXNzZXJ0X3JlcG9ydCgiQ291bGQgbm90IGZpbmQgRW5nbGlzaCBzcGVsbCBmaWxlIikKICBlbHNlCiAgICBzcGVsbGR1bXAKCiAgICAiIENoZWNrIGFzc3VtcHRpb24gYWJvdXQgcmVnaW9uOiAxOiB1cywgMjogYXUsIDM6IGNhLCA0OiBnYiwgNTogbnouCiAgICBjYWxsIGFzc2VydF9lcXVhbCgnL3JlZ2lvbnM9dXNhdWNhZ2JueicsIGdldGxpbmUoMSkpCiAgICBjYWxsIGFzc2VydF9ub3RlcXVhbCgwLCBzZWFyY2goJ150aGVhdGVyLzEkJykpICAgICIgVVMgRW5nbGlzaCBvbmx5LgogICAgY2FsbCBhc3NlcnRfbm90ZXF1YWwoMCwgc2VhcmNoKCdedGhlYXRyZS8yMzQ1JCcpKSAiIEFVLCBDQSwgR0Igb3IgTlogRW5nbGlzaC4KCiAgICBjYWxsIGFzc2VydF9ub3RlcXVhbCgwLCBzZWFyY2goJ15lbWFjcy8/JCcpKSAgICAgICIgPyBmb3IgYSByYXJlIHdvcmQuCiAgICBjYWxsIGFzc2VydF9ub3RlcXVhbCgwLCBzZWFyY2goJ150aGUgdGhlLyEkJykpICAgICIgISBmb3IgYSB3cm9uZyB3b3JkLgogIGVuZGlmCgogICIgY2xlYW4gdXAKICB1bmxldCBnOmVuX25vdF9mb3VuZAogIGF1Z3JvdXAgVGVzdFNwZWxsRmlsZU1pc3NpbmcKICAgIGF1dG9jbWQhIFNwZWxsRmlsZU1pc3NpbmcKICBhdWdyb3VwIEVORAogIGF1Z3JvdXAhIFRlc3RTcGVsbEZpbGVNaXNzaW5nCiAgYndpcGUKICBzZXQgc3BlbGwmCmVuZGZ1bmMKCmZ1bmMgVGVzdF9zcGVsbGR1bXBfYmFuZygpCiAgbmV3CiAgY2FsbCBzZXRsaW5lKDEsICdUaGlzIGlzIGEgc2FtcGxlIHNlbnRlbmNlLicpCiAgcmVkcmF3CgogICIgSW4gY2FzZSB0aGUgc3BlbGwgZmlsZSBpcyBub3QgZm91bmQgYXZvaWQgZ2V0dGluZyB0aGUgZG93bmxvYWQgZGlhbG9nLCB3ZQogICIgd291bGQgZ2V0IHN0dWNrIGF0IHRoZSBwcm9tcHQuCiAgbGV0IGc6ZW5fbm90X2ZvdW5kID0gMAogIGF1Z3JvdXAgVGVzdFNwZWxsRmlsZU1pc3NpbmcKICAgIGF1ISBTcGVsbEZpbGVNaXNzaW5nICogbGV0IGc6ZW5fbm90X2ZvdW5kID0gMQogIGF1Z3JvdXAgRU5ECgogIHNldCBzcGVsbAoKICBpZiBnOmVuX25vdF9mb3VuZAogICAgY2FsbCBhc3NlcnRfcmVwb3J0KCJDb3VsZCBub3QgZmluZCBFbmdsaXNoIHNwZWxsIGZpbGUiKQogIGVsc2UKICAgIHJlZHJhdwogICAgc3BlbGxkdW1wIQoKICAgICIgOnNwZWxsZHVtcCEgaW5jbHVkZXMgdGhlIG51bWJlciBvZiB0aW1lcyBhIHdvcmQgd2FzIGZvdW5kIHdoaWxlIHVwZGF0aW5nCiAgICAiIHRoZSBzY3JlZW4uCiAgICAiIENvbW1vbiB3b3JkIGNvdW50IHN0YXJ0cyBhdCAxMCwgcmVndWxhciB3b3JkIGNvdW50IHN0YXJ0cyBhdCAwLgogICAgY2FsbCBhc3NlcnRfbm90ZXF1YWwoMCwgc2VhcmNoKCJeaXNcdDExJCIpKSAgICAiIGNvbW1vbiB3b3JkIGZvdW5kIG9uY2UuCiAgICBjYWxsIGFzc2VydF9ub3RlcXVhbCgwLCBzZWFyY2goIl50aGVcdDEwJCIpKSAgICIgY29tbW9uIHdvcmQgbmV2ZXIgZm91bmQuCiAgICBjYWxsIGFzc2VydF9ub3RlcXVhbCgwLCBzZWFyY2goIl5zYW1wbGVcdDEkIikpICIgcmVndWxhciB3b3JkIGZvdW5kIG9uY2UuCiAgICBjYWxsIGFzc2VydF9lcXVhbCgwLCBzZWFyY2goIl5zY3JlZW5cdCIpKSAgICAgICIgcmVndWxhciB3b3JkIG5ldmVyIGZvdW5kLgogIGVuZGlmCgogICIgY2xlYW4gdXAKICB1bmxldCBnOmVuX25vdF9mb3VuZAogIGF1Z3JvdXAgVGVzdFNwZWxsRmlsZU1pc3NpbmcKICAgIGF1dG9jbWQhIFNwZWxsRmlsZU1pc3NpbmcKICBhdWdyb3VwIEVORAogIGF1Z3JvdXAhIFRlc3RTcGVsbEZpbGVNaXNzaW5nCiAgJWJ3aXBlIQogIHNldCBzcGVsbCYKZW5kZnVuYwoKZnVuYyBUZXN0X3NwZWxsbGFuZ19pbnZfcmVnaW9uKCkKICBzZXQgc3BlbGwgc3BlbGxsYW5nPWVuX3h4CiAgbGV0IG1lc3NhZ2VzID0gR2V0TWVzc2FnZXMoKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCdXYXJuaW5nOiByZWdpb24geHggbm90IHN1cHBvcnRlZCcsIG1lc3NhZ2VzWy0xXSkKICBzZXQgc3BlbGwmIHNwZWxsbGFuZyYKZW5kZnVuYwoKZnVuYyBUZXN0X2NvbXBsX3dpdGhfQ1RSTF9YX0NUUkxfS191c2luZ19zcGVsbCgpCiAgIiBXaGVuIHNwZWxsIGNoZWNraW5nIGlzIGVuYWJsZWQgYW5kICdkaWN0aW9uYXJ5JyBpcyBlbXB0eSwKICAiIENUUkwtWCBDVFJMLUsgaW4gaW5zZXJ0IG1vZGUgY29tcGxldGVzIHVzaW5nIHRoZSBzcGVsbGluZyBkaWN0aW9uYXJ5LgogIG5ldwogIHNldCBzcGVsbCBzcGVsbGxhbmc9ZW4gZGljdGlvbmFyeT0KCiAgc2V0IGlnbm9yZWNhc2UKICBjYWxsIGZlZWRrZXlzKCJTZW5nbGlzXDxjLXg+XDxjLWs+XDxlc2M+IiwgJ3RueCcpCiAgY2FsbCBhc3NlcnRfZXF1YWwoWydFbmdsaXNoJ10sIGdldGxpbmUoMSwgJyQnKSkKICBjYWxsIGZlZWRrZXlzKCJTRW5nbGlzXDxjLXg+XDxjLWs+XDxlc2M+IiwgJ3RueCcpCiAgY2FsbCBhc3NlcnRfZXF1YWwoWydFbmdsaXNoJ10sIGdldGxpbmUoMSwgJyQnKSkKCiAgc2V0IG5vaWdub3JlY2FzZQogIGNhbGwgZmVlZGtleXMoIlNlbmdsaXNcPGMteD5cPGMtaz5cPGVzYz4iLCAndG54JykKICBjYWxsIGFzc2VydF9lcXVhbChbJ2VuZ2xpcyddLCBnZXRsaW5lKDEsICckJykpCiAgY2FsbCBmZWVka2V5cygiU0VuZ2xpc1w8Yy14Plw8Yy1rPlw8ZXNjPiIsICd0bngnKQogIGNhbGwgYXNzZXJ0X2VxdWFsKFsnRW5nbGlzaCddLCBnZXRsaW5lKDEsICckJykpCgogIHNldCBzcGVsbGxhbmc9ZW5fdXMKICBjYWxsIGZlZWRrZXlzKCJTdGhlYXRcPGMteD5cPGMtaz5cPGVzYz4iLCAndG54JykKICBjYWxsIGFzc2VydF9lcXVhbChbJ3RoZWF0ZXInXSwgZ2V0bGluZSgxLCAnJCcpKQogIHNldCBzcGVsbGxhbmc9ZW5fZ2IKICBjYWxsIGZlZWRrZXlzKCJTdGhlYXRcPGMteD5cPGMtaz5cPGVzYz4iLCAndG54JykKICAiIEZJWE1FOiBjb21tZW50ZWQgb3V0LCBleHBlY3RlZCB0aGVhdHJlIGJ1ZyBnb3QgdGhlYXRlci4gU2VlIGlzc3VlICM3MDI1LgogICIgY2FsbCBhc3NlcnRfZXF1YWwoWyd0aGVhdHJlJ10sIGdldGxpbmUoMSwgJyQnKSkKCiAgYndpcGUhCiAgc2V0IHNwZWxsJiBzcGVsbGxhbmcmIGRpY3Rpb25hcnkmIGlnbm9yZWNhc2UmCmVuZGZ1bmMKCmZ1bmMgVGVzdF9zcGVsbHJlYWxsKCkKICBuZXcKICBzZXQgc3BlbGwKICBjYWxsIGFzc2VydF9mYWlscygnc3BlbGxyZXBhbGwnLCAnRTc1MjonKQogIGNhbGwgc2V0bGluZSgxLCBbJ0Egc3BlbGluZyBtaXN0YWtlLiBUaGUgc2FtZSBzcGVsaW5nIG1pc3Rha2UuJywKICAgICAgICBcICAgICAgICAgICAgICAgICdBbm90aGVyIHNwZWxpbmcgbWlzdGFrZS4nXSkKICBjYWxsIGZlZWRrZXlzKCddczF6PScsICd0eCcpCiAgY2FsbCBhc3NlcnRfZXF1YWwoJ0Egc3BlbGxpbmcgbWlzdGFrZS4gVGhlIHNhbWUgc3BlbGluZyBtaXN0YWtlLicsIGdldGxpbmUoMSkpCiAgY2FsbCBhc3NlcnRfZXF1YWwoJ0Fub3RoZXIgc3BlbGluZyBtaXN0YWtlLicsIGdldGxpbmUoMikpCiAgc3BlbGxyZXBhbGwKICBjYWxsIGFzc2VydF9lcXVhbCgnQSBzcGVsbGluZyBtaXN0YWtlLiBUaGUgc2FtZSBzcGVsbGluZyBtaXN0YWtlLicsIGdldGxpbmUoMSkpCiAgY2FsbCBhc3NlcnRfZXF1YWwoJ0Fub3RoZXIgc3BlbGxpbmcgbWlzdGFrZS4nLCBnZXRsaW5lKDIpKQogIGNhbGwgYXNzZXJ0X2ZhaWxzKCdzcGVsbHJlcGFsbCcsICdFNzUzOicpCiAgc2V0IHNwZWxsJgogIGJ3aXBlIQplbmRmdW5jCgpmdW5jIFRlc3Rfc3BlbGxfZHVtcF93b3JkX2xlbmd0aCgpCiAgIiB0aGlzIHdhcyBydW5uaW5nIG92ZXIgTUFYV0xFTgogIG5ldwogIG5vcmVtYXAgMCAwYTB6VzAwMDAwMDAKICBzaWwhIG5vcm0gFjB6PTAYCwogIHNpbCBub3JtIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKICBzaWwhIG5vcm0gFjB6PTAYCwoKICBid2lwZSEKICBudW5tYXAgMAplbmRmdW5jCgoiIFRlc3Qgc3BlbGxzdWdnZXN0KHt3b3JkfSBbLCB7bWF4fSBbLCB7Y2FwaXRhbH1dXSkKZnVuYyBUZXN0X3NwZWxsc3VnZ2VzdCgpCiAgIiBWZXJpZnkgc3VnZ2VzdGlvbnMgYXJlIGdpdmVuIGV2ZW4gd2hlbiBzcGVsbCBjaGVja2luZyBpcyBub3QgZW5hYmxlZC4KICBzZXQgbm9zcGVsbAogIGNhbGwgYXNzZXJ0X2VxdWFsKFsnbWFyY2gnLCAnTWFyY2gnXSwgc3BlbGxzdWdnZXN0KCdtYXJyY2gnLCAyKSkKCiAgc2V0IHNwZWxsCgogICIgV2l0aCAxIGFyZ3VtZW50LgogIGNhbGwgYXNzZXJ0X2VxdWFsKFsnbWFyY2gnLCAnTWFyY2gnXSwgc3BlbGxzdWdnZXN0KCdtYXJyY2gnKVswOjFdKQoKICAiIFdpdGggMiBhcmd1bWVudHMuCiAgY2FsbCBhc3NlcnRfZXF1YWwoWydtYXJjaCcsICdNYXJjaCddLCBzcGVsbHN1Z2dlc3QoJ21hcnJjaCcsIDIpKQoKICAiIFdpdGggMyBhcmd1bWVudHMuCiAgY2FsbCBhc3NlcnRfZXF1YWwoWydtYXJjaCddLCBzcGVsbHN1Z2dlc3QoJ21hcnJjaCcsIDEsIDApKQogIGNhbGwgYXNzZXJ0X2VxdWFsKFsnTWFyY2gnXSwgc3BlbGxzdWdnZXN0KCdtYXJyY2gnLCAxLCAxKSkKCiAgIiBUZXN0IHdpdGggZGlnaXRzIGFuZCBoeXBoZW4uCiAgY2FsbCBhc3NlcnRfZXF1YWwoJ0NhcmJvbi0xNCcsIHNwZWxsc3VnZ2VzdCgnQ2FyYm9uLTE1JylbMF0pCgogICIgQ29tbWVudCB0YWtlbiBmcm9tIHNwZWxsc3VnZ2VzdC5jIGV4cGxhaW5zIHRoZSBmb2xsb3dpbmcgdGVzdCBjYXNlczoKICAiCiAgIiBJZiB0aGVyZSBhcmUgbW9yZSBVUFBFUiB0aGFuIGxvd2VyIGNhc2UgbGV0dGVycyBzdWdnZXN0IGFuCiAgIiBBTExDQVAgd29yZC4gIE90aGVyd2lzZSwgaWYgdGhlIGZpcnN0IGxldHRlciBpcyBVUFBFUiB0aGVuCiAgIiBzdWdnZXN0IE9ORUNBUC4gIEV4Y2VwdGlvbjogIkFMbCIgbW9zdCBsaWtlbHkgc2hvdWxkIGJlICJBbGwiLAogICIgcmVxdWlyZSB0aHJlZSB1cHBlciBjYXNlIGxldHRlcnMuCiAgY2FsbCBhc3NlcnRfZXF1YWwoWydUSElSRCcsICd0aGlyZCddLCBzcGVsbHN1Z2dlc3QoJ3RoSVJEJywgMikpCiAgY2FsbCBhc3NlcnRfZXF1YWwoWyd0aGlyZCcsICdUSElSRCddLCBzcGVsbHN1Z2dlc3QoJ3RISXJkJywgMikpCiAgY2FsbCBhc3NlcnRfZXF1YWwoWydUaGlyZCddLCBzcGVsbHN1Z2dlc3QoJ1RIaXJkJywgMSkpCiAgY2FsbCBhc3NlcnRfZXF1YWwoWydBbGwnXSwgICAgICBzcGVsbHN1Z2dlc3QoJ0FMbCcsIDEpKQoKICAiIFNwZWNpYWwgc3VnZ2VzdGlvbiBmb3IgcmVwZWF0ZWQgJ3RoZSB0aGUnLgogIGNhbGwgYXNzZXJ0X2lucmFuZ2UoMCwgMiwgaW5kZXgoc3BlbGxzdWdnZXN0KCd0aGUgdGhlJywgICAzKSwgJ3RoZScpKQogIGNhbGwgYXNzZXJ0X2lucmFuZ2UoMCwgMiwgaW5kZXgoc3BlbGxzdWdnZXN0KCd0aGUgICB0aGUnLCAzKSwgJ3RoZScpKQogIGNhbGwgYXNzZXJ0X2lucmFuZ2UoMCwgMiwgaW5kZXgoc3BlbGxzdWdnZXN0KCdUaGUgdGhlJywgICAzKSwgJ1RoZScpKQoKICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBzcGVsbHN1Z2dlc3QoJ21heGNoJywgW10pIiwgJ0U3NDU6JykKICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBzcGVsbHN1Z2dlc3QoJ21heGNoJywgMiwgW10pIiwgJ0U3NDU6JykKCiAgc2V0IHNwZWxsbGFuZz0KICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBzcGVsbHN1Z2dlc3QoJ21heGNoJykiLCAnRTc1NjonKQogIHNldCBzcGVsbGxhbmcmCgogIHNldCBzcGVsbCYKZW5kZnVuYwoKIiBUZXN0ICdzcGVsbHN1Z2dlc3QnIG9wdGlvbiB3aXRoIG1ldGhvZHMgZmFzdCwgYmVzdCBhbmQgZG91YmxlLgpmdW5jIFRlc3Rfc3BlbGxzdWdnZXN0X29wdGlvbl9tZXRob2RzKCkKICBzZXQgc3BlbGwKCiAgZm9yIGUgaW4gWydsYXRpbjEnLCAndXRmLTgnXQogICAgZXhlICdzZXQgZW5jb2Rpbmc9JyAuLiBlCgogICAgc2V0IHNwZWxsc3VnZ2VzdD1mYXN0CiAgICBjYWxsIGFzc2VydF9lcXVhbChbJ1N0aWNrJywgJ1N0aXRjaCddLCBzcGVsbHN1Z2dlc3QoJ1N0aWNoJywgMiksIGUpCgogICAgIiBXaXRoIGJlc3Qgb3IgZG91YmxlIG9wdGlvbiwgIlN0aXRjaCIgc2hvdWxkIGJlY29tZSB0aGUgdG9wIHN1Z2dlc3Rpb24KICAgICIgYmVjYXVzZSBvZiBiZXR0ZXIgcGhvbmV0aWMgbWF0Y2hpbmcuCiAgICBzZXQgc3BlbGxzdWdnZXN0PWJlc3QKICAgIGNhbGwgYXNzZXJ0X2VxdWFsKFsnU3RpdGNoJywgJ1N0aWNrJ10sIHNwZWxsc3VnZ2VzdCgnU3RpY2gnLCAyKSwgZSkKCiAgICBzZXQgc3BlbGxzdWdnZXN0PWRvdWJsZQogICAgY2FsbCBhc3NlcnRfZXF1YWwoWydTdGl0Y2gnLCAnU3RpY2snXSwgc3BlbGxzdWdnZXN0KCdTdGljaCcsIDIpLCBlKQogIGVuZGZvcgoKICBzZXQgc3BlbGwmIHNwZWxsc3VnZ2VzdCYgZW5jb2RpbmcmCmVuZGZ1bmMKCiIgVGVzdCAnc3BlbGxzdWdnZXN0JyBvcHRpb24gd2l0aCB2YWx1ZSBmaWxlOntmaWxlbmFtZX0KZnVuYyBUZXN0X3NwZWxsc3VnZ2VzdF9vcHRpb25fZmlsZSgpCiAgc2V0IHNwZWxsIHNwZWxsc3VnZ2VzdD1maWxlOlhzcGVsbHN1Z2dlc3QKICBjYWxsIHdyaXRlZmlsZShbJ2VtYWNzL3ZpbScsCiAgICAgICAgXCAgICAgICAgICd0aGVyaWJhbC90ZXJyaWJsZScsCiAgICAgICAgXCAgICAgICAgICd0ZXJpYmFsL3RlcnJyaWJsZScsCiAgICAgICAgXCAgICAgICAgICd0ZXJyaWJhbCddLAogICAgICAgIFwgICAgICAgICAnWHNwZWxsc3VnZ2VzdCcpCgogIGNhbGwgYXNzZXJ0X2VxdWFsKFsndmltJ10sICAgICAgc3BlbGxzdWdnZXN0KCdlbWFjcycsIDIpKQogIGNhbGwgYXNzZXJ0X2VxdWFsKFsndGVycmlibGUnXSwgc3BlbGxzdWdnZXN0KCd0aGVyaWJhbCcsMikpCgogICIgSWYgdGhlIHN1Z2dlc3Rpb24gaXMgbWlzc3BlbGxlZCAoKnRlcnJyaWJsZSogd2l0aCAzIHIpLAogICIgaXQgc2hvdWxkIG5vdCBiZSBwcm9wb3NlZC4KICAiIFRoZSBlbnRyeSBmb3IgInRlcnJpYmFsIiBzaG91bGQgYmUgaWdub3JlZCBiZWNhdXNlIG9mIG1pc3Npbmcgc2xhc2guCiAgY2FsbCBhc3NlcnRfZXF1YWwoW10sIHNwZWxsc3VnZ2VzdCgndGVyaWJhbCcsIDIpKQogIGNhbGwgYXNzZXJ0X2VxdWFsKFtdLCBzcGVsbHN1Z2dlc3QoJ3RlcnJpYmFsJywgMikpCgogIHNldCBzcGVsbCBzcGVsbHN1Z2dlc3Q9YmVzdCxmaWxlOlhzcGVsbHN1Z2dlc3QKICBjYWxsIGFzc2VydF9lcXVhbChbJ3ZpbScsICdFbWFjcyddLCAgICAgICBzcGVsbHN1Z2dlc3QoJ2VtYWNzJywgMikpCiAgY2FsbCBhc3NlcnRfZXF1YWwoWyd0ZXJyaWJsZScsICd0cmliYWwnXSwgc3BlbGxzdWdnZXN0KCd0aGVyaWJhbCcsIDIpKQogIGNhbGwgYXNzZXJ0X2VxdWFsKFsndHJpYmFsJ10sICAgICAgICAgICAgIHNwZWxsc3VnZ2VzdCgndGVyaWJhbCcsIDEpKQogIGNhbGwgYXNzZXJ0X2VxdWFsKFsndHJpYmFsJ10sICAgICAgICAgICAgIHNwZWxsc3VnZ2VzdCgndGVycmliYWwnLCAxKSkKCiAgY2FsbCBkZWxldGUoJ1hzcGVsbHN1Z2dlc3QnKQogIGNhbGwgYXNzZXJ0X2ZhaWxzKCJjYWxsIHNwZWxsc3VnZ2VzdCgndmltJykiLCAiRTQ4NDogQ2FuJ3Qgb3BlbiBmaWxlIFhzcGVsbHN1Z2dlc3QiKQoKICBzZXQgc3BlbGxzdWdnZXN0JiBzcGVsbCYKZW5kZnVuYwoKIiBUZXN0ICdzcGVsbHN1Z2dlc3QnIG9wdGlvbiB3aXRoIHZhbHVlIHtudW1iZXJ9CiIgdG8gbGltaXQgdGhlIG51bWJlciBvZiBzdWdnZXN0aW9ucwpmdW5jIFRlc3Rfc3BlbGxzdWdnZXN0X29wdGlvbl9udW1iZXIoKQogIHNldCBzcGVsbCBzcGVsbHN1Z2dlc3Q9MixiZXN0CiAgbmV3CgogICIgV2UgbGltaXRlZCB0aGUgbnVtYmVyIG9mIHN1Z2dlc3Rpb25zIHRvIDIsIHNvIHNlbGVjdGluZwogICIgdGhlIDFzdCBhbmQgMm5kIHN1Z2dlc3Rpb24gc2hvdWxkIGNvcnJlY3QgdGhlIHdvcmQsIGJ1dAogICIgc2VsZWN0aW5nIGEgM3JkIHN1Z2dlc3Rpb24gc2hvdWxkIGRvIG5vdGhpbmcuCiAgY2FsbCBzZXRsaW5lKDEsICdBIGJhb3JkJykKICBub3JtICQxej0KICBjYWxsIGFzc2VydF9lcXVhbCgnQSBib2FyZCcsIGdldGxpbmUoMSkpCgogIGNhbGwgc2V0bGluZSgxLCAnQSBiYW9yZCcpCiAgbm9ybSAkMno9CiAgY2FsbCBhc3NlcnRfZXF1YWwoJ0EgYmFyZCcsIGdldGxpbmUoMSkpCgogIGNhbGwgc2V0bGluZSgxLCAnQSBiYW9yZCcpCiAgbm9ybSAkM3o9CiAgY2FsbCBhc3NlcnRfZXF1YWwoJ0EgYmFvcmQnLCBnZXRsaW5lKDEpKQoKICBsZXQgYSA9IGV4ZWN1dGUoJ25vcm0gJHo9JykKICBjYWxsIGFzc2VydF9lcXVhbCgKICBcICAgICJcbiIKICBcIC4uICJDaGFuZ2UgXCJiYW9yZFwiIHRvOlxuIgogIFwgLi4gIiAxIFwiYm9hcmRcIlxuIgogIFwgLi4gIiAyIFwiYmFyZFwiXG4iCiAgXCAuLiAiVHlwZSBudW1iZXIgYW5kIDxFbnRlcj4gb3IgY2xpY2sgd2l0aCB0aGUgbW91c2UgKHEgb3IgZW1wdHkgY2FuY2Vscyk6ICIsIGEpCgogIHNldCBzcGVsbCBzcGVsbHN1Z2dlc3Q9MAogIGNhbGwgYXNzZXJ0X2VxdWFsKCJcblNvcnJ5LCBubyBzdWdnZXN0aW9ucyIsIGV4ZWN1dGUoJ25vcm0gJHo9JykpCgogICIgVW5saWtlIHo9LCBmdW5jdGlvbiBzcGVsbHN1Z2dlc3QoLi4uKSBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IHRoZQogICIgbWF4IG51bWJlciBvZiBzdWdnZXN0aW9ucyAoMikgc2V0IGJ5IHRoZSAnc3BlbGxzdWdnZXN0JyBvcHRpb24uCiAgY2FsbCBhc3NlcnRfZXF1YWwoWydib2FyZCcsICdiYXJkJywgJ2Jyb2FkJ10sIHNwZWxsc3VnZ2VzdCgnYmFvcmQnLCAzKSkKCiAgc2V0IHNwZWxsc3VnZ2VzdCYgc3BlbGwmCiAgYndpcGUhCmVuZGZ1bmMKCiIgVGVzdCAnc3BlbGxzdWdnZXN0JyBvcHRpb24gd2l0aCB2YWx1ZSBleHByOntleHByfQpmdW5jIFRlc3Rfc3BlbGxzdWdnZXN0X29wdGlvbl9leHByKCkKICAiIEEgc2lsbHkgJ3NwZWxsc3VnZ2VzdCcgZnVuY3Rpb24gd2hpY2ggbWFrZXMgc3VnZ2VzdGlvbnMgYWxsIHVwcGVyY2FzZQogICIgYW5kIG1ha2VzIHRoZSBzY29yZSBvZiBlYWNoIHN1Z2dlc3Rpb24gdGhlIGxlbmd0aCBvZiB0aGUgc3VnZ2VzdGVkIHdvcmQuCiAgIiBTbyBzaG9ydGVyIHN1Z2dlc3Rpb25zIGFyZSBwcmVmZXJyZWQuCiAgZnVuYyBNeVN1Z2dlc3QoKQogICAgbGV0IHNwZWxsc3VnZ2VzdF9zYXZlID0gJnNwZWxsc3VnZ2VzdAogICAgc2V0IHNwZWxsc3VnZ2VzdD0zLGJlc3QKICAgIGxldCByZXN1bHQgPSBtYXAoc3BlbGxzdWdnZXN0KHY6dmFsLCAzKSwgIlt0b3VwcGVyKHY6dmFsKSwgbGVuKHY6dmFsKV0iKQogICAgbGV0ICZzcGVsbHN1Z2dlc3QgPSBzcGVsbHN1Z2dlc3Rfc2F2ZQogICAgcmV0dXJuIHJlc3VsdAogIGVuZGZ1bmMKCiAgc2V0IHNwZWxsIHNwZWxsc3VnZ2VzdD1leHByOk15U3VnZ2VzdCgpCiAgY2FsbCBhc3NlcnRfZXF1YWwoWydCQVJEJywgJ0JPQVJEJywgJ0JST0FEJ10sIHNwZWxsc3VnZ2VzdCgnYmFvcmQnLCAzKSkKCiAgbmV3CiAgY2FsbCBzZXRsaW5lKDEsICdiYW9yZCcpCiAgbGV0IGEgPSBleGVjdXRlKCdub3JtIHo9JykKICBjYWxsIGFzc2VydF9lcXVhbCgKICBcICAgICJcbiIKICBcIC4uICJDaGFuZ2UgXCJiYW9yZFwiIHRvOlxuIgogIFwgLi4gIiAxIFwiQkFSRFwiXG4iCiAgXCAuLiAiIDIgXCJCT0FSRFwiXG4iCiAgXCAuLiAiIDMgXCJCUk9BRFwiXG4iCiAgXCAuLiAiVHlwZSBudW1iZXIgYW5kIDxFbnRlcj4gb3IgY2xpY2sgd2l0aCB0aGUgbW91c2UgKHEgb3IgZW1wdHkgY2FuY2Vscyk6ICIsIGEpCgogICIgV2l0aCB2ZXJib3NlLCB6PSBzaG91bGQgc2hvdyB0aGUgc2NvcmUgaS5lLiB3b3JkIGxlbmd0aCB3aXRoCiAgIiBvdXIgU3BlbGxTdWdnZXN0KCkgZnVuY3Rpb24uCiAgc2V0IHZlcmJvc2U9MQogIGxldCBhID0gZXhlY3V0ZSgnbm9ybSB6PScpCiAgY2FsbCBhc3NlcnRfZXF1YWwoCiAgXCAgICAiXG4iCiAgXCAuLiAiQ2hhbmdlIFwiYmFvcmRcIiB0bzpcbiIKICBcIC4uICIgMSBcIkJBUkRcIiAgICAgICAgICAgICAgICAgICAgICAoNCAtIDApXG4iCiAgXCAuLiAiIDIgXCJCT0FSRFwiICAgICAgICAgICAgICAgICAgICAgKDUgLSAwKVxuIgogIFwgLi4gIiAzIFwiQlJPQURcIiAgICAgICAgICAgICAgICAgICAgICg1IC0gMClcbiIKICBcIC4uICJUeXBlIG51bWJlciBhbmQgPEVudGVyPiBvciBjbGljayB3aXRoIHRoZSBtb3VzZSAocSBvciBlbXB0eSBjYW5jZWxzKTogIiwgYSkKCiAgc2V0IHNwZWxsJiBzcGVsbHN1Z2dlc3QmIHZlcmJvc2UmCiAgYndpcGUhCmVuZGZ1bmMKCiIgVGVzdCBmb3IgJ3NwZWxsc3VnZ2VzdCcgZXhwciBlcnJvcnMKZnVuYyBUZXN0X3NwZWxsc3VnZ2VzdF9leHByX2Vycm9ycygpCiAgIiAnc3BlbGxzdWdnZXN0JwogIGZ1bmMgTXlTdWdnZXN0KCkKICAgIHJldHVybiByYW5nZSgzKQogIGVuZGZ1bmMKICBzZXQgc3BlbGwgc3BlbGxzdWdnZXN0PWV4cHI6TXlTdWdnZXN0KCkKICBjYWxsIGFzc2VydF9lcXVhbChbXSwgc3BlbGxzdWdnZXN0KCdiYW9yZCcsIDMpKQoKICAiIFRlc3QgZm9yICdzcGVsbHN1Z2dlc3QnIGV4cHJlc3Npb24gcmV0dXJuaW5nIGEgbm9uLWxpc3QgdmFsdWUKICBmdW5jISBNeVN1Z2dlc3QyKCkKICAgIHJldHVybiAnZ29vZCcKICBlbmRmdW5jCiAgc2V0IHNwZWxsc3VnZ2VzdD1leHByOk15U3VnZ2VzdDIoKQogIGNhbGwgYXNzZXJ0X2VxdWFsKFtdLCBzcGVsbHN1Z2dlc3QoJ2Jhb3JkJykpCgogICIgVGVzdCBmb3IgJ3NwZWxsc3VnZ2VzdCcgZXhwcmVzc2lvbiByZXR1cm5pbmcgYSBsaXN0IHdpdGggZGljdCB2YWx1ZXMKICBmdW5jISBNeVN1Z2dlc3QzKCkKICAgIHJldHVybiBbW3t9LCB7fV1dCiAgZW5kZnVuYwogIHNldCBzcGVsbHN1Z2dlc3Q9ZXhwcjpNeVN1Z2dlc3QzKCkKICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBzcGVsbHN1Z2dlc3QoJ2Jhb3JkJykiLCAnRTczMTonKQoKICBzZXQgbm9zcGVsbCBzcGVsbHN1Z2dlc3QmCiAgZGVsZnVuYyBNeVN1Z2dlc3QKICBkZWxmdW5jIE15U3VnZ2VzdDIKICBkZWxmdW5jIE15U3VnZ2VzdDMKZW5kZnVuYwoKZnVuYyBUZXN0X3NwZWxsc3VnZ2VzdF90aW1lb3V0KCkKICBzZXQgc3BlbGxzdWdnZXN0PXRpbWVvdXQ6MzAKICBzZXQgc3BlbGxzdWdnZXN0PXRpbWVvdXQ6LTEyMwogIHNldCBzcGVsbHN1Z2dlc3Q9dGltZW91dDo5OTk5OTkKICBjYWxsIGFzc2VydF9mYWlscygnc2V0IHNwZWxsc3VnZ2VzdD10aW1lb3V0JywgJ0U0NzQ6JykKICBjYWxsIGFzc2VydF9mYWlscygnc2V0IHNwZWxsc3VnZ2VzdD10aW1lb3V0OngnLCAnRTQ3NDonKQogIGNhbGwgYXNzZXJ0X2ZhaWxzKCdzZXQgc3BlbGxzdWdnZXN0PXRpbWVvdXQ6LXgnLCAnRTQ3NDonKQogIGNhbGwgYXNzZXJ0X2ZhaWxzKCdzZXQgc3BlbGxzdWdnZXN0PXRpbWVvdXQ6LS05JywgJ0U0NzQ6JykKZW5kZnVuYwoKZnVuYyBUZXN0X3NwZWxsc3VnZ2VzdF92aXN1YWxfZW5kX29mX2xpbmUoKQogIGxldCBlbmNfc2F2ZSA9ICZlbmNvZGluZwogIHNldCBlbmNvZGluZz1pc284ODU5CgogICIgVGhpcyB3YXMgcmVhZGluZyBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgbGluZS4KICBub3JtIFIwMDAwMDAwMDAwMAogIHNpbCBub3JtIBYwCiAgc2lsISBub3JtIBZpMDAwMDApCiAgc2lsISBub3JtIBZpMDAwMDApCiAgY2FsbCBmZWVka2V5cygiXDxDUj4iKQogIG5vcm0gej0KCiAgbGV0ICZlbmNvZGluZyA9IGVuY19zYXZlCmVuZGZ1bmMKCmZ1bmMgVGVzdF9zcGVsbGluZm8oKQogIG5ldwogIGxldCBydW50aW1lID0gc3Vic3RpdHV0ZSgkVklNUlVOVElNRSwgJ1xcJywgJy8nLCAnZycpCgogIHNldCBlbmM9bGF0aW4xIHNwZWxsIHNwZWxsbGFuZz1lbgogIGNhbGwgYXNzZXJ0X21hdGNoKCJeXG5maWxlOiAiIC4uIHJ1bnRpbWUgLi4gIi9zcGVsbC9lbi5sYXRpbjEuc3BsXG4kIiwgZXhlY3V0ZSgnc3BlbGxpbmZvJykpCgogIHNldCBlbmM9Y3AxMjUwIHNwZWxsIHNwZWxsbGFuZz1lbgogIGNhbGwgYXNzZXJ0X21hdGNoKCJeXG5maWxlOiAiIC4uIHJ1bnRpbWUgLi4gIi9zcGVsbC9lbi5hc2NpaS5zcGxcbiQiLCBleGVjdXRlKCdzcGVsbGluZm8nKSkKCiAgc2V0IGVuYz11dGYtOCBzcGVsbCBzcGVsbGxhbmc9ZW4KICBjYWxsIGFzc2VydF9tYXRjaCgiXlxuZmlsZTogIiAuLiBydW50aW1lIC4uICIvc3BlbGwvZW4udXRmLTguc3BsXG4kIiwgZXhlY3V0ZSgnc3BlbGxpbmZvJykpCgogIHNldCBlbmM9bGF0aW4xIHNwZWxsIHNwZWxsbGFuZz1lbl91cyxlbl9uegogIGNhbGwgYXNzZXJ0X21hdGNoKCJeXG4iIC4KICAgICAgICAgICAgICAgICBcICAiZmlsZTogIiAuLiBydW50aW1lIC4uICIvc3BlbGwvZW4ubGF0aW4xLnNwbFxuIiAuCiAgICAgICAgICAgICAgICAgXCAgImZpbGU6ICIgLi4gcnVudGltZS4uICIvc3BlbGwvZW4ubGF0aW4xLnNwbFxuJCIsIGV4ZWN1dGUoJ3NwZWxsaW5mbycpKQoKICBzZXQgc3BlbGwgc3BlbGxsYW5nPQogIGNhbGwgYXNzZXJ0X2ZhaWxzKCdzcGVsbGluZm8nLCAnRTc1NjonKQoKICBzZXQgbm9zcGVsbCBzcGVsbGxhbmc9ZW4KICBjYWxsIGFzc2VydF9mYWlscygnc3BlbGxpbmZvJywgJ0U3NTY6JykKCiAgY2FsbCBhc3NlcnRfZmFpbHMoJ3NldCBzcGVsbGxhbmc9Zm9vL2JhcicsICdFNDc0OicpCiAgY2FsbCBhc3NlcnRfZmFpbHMoJ3NldCBzcGVsbGxhbmc9Zm9vXCBiYXInLCAnRTQ3NDonKQogIGNhbGwgYXNzZXJ0X2ZhaWxzKCJzZXQgc3BlbGxsYW5nPWZvb1xcXG5iYXIiLCAnRTQ3NDonKQogIGNhbGwgYXNzZXJ0X2ZhaWxzKCJzZXQgc3BlbGxsYW5nPWZvb1xcXHJiYXIiLCAnRTQ3NDonKQogIGNhbGwgYXNzZXJ0X2ZhaWxzKCJzZXQgc3BlbGxsYW5nPWZvbytiYXIiLCAnRTQ3NDonKQoKICBzZXQgZW5jJiBzcGVsbCYgc3BlbGxsYW5nJgogIGJ3aXBlCmVuZGZ1bmMKCmZ1bmMgVGVzdF96el9iYXNpYygpCiAgY2FsbCBMb2FkQWZmQW5kRGljKGc6dGVzdF9kYXRhX2FmZjEsIGc6dGVzdF9kYXRhX2RpYzEpCiAgY2FsbCBSdW5Hb29kQmFkKCJ3cm9uZyBPSyBwdXRzLiBUZXN0IHRoZSBlbmQiLAogICAgICAgIFwgImJhZDogaW5wdXRzIGNvbW1lbnQgb2sgT2suIHRlc3QgZFx4RTlceEY0bCBlbmQgdGhlIiwKICAgICAgICBcWyJDb21tZW50IiwgImRlb2wiLCAiZFx4RTlceEY0ciIsICJpbnB1dCIsICJPSyIsICJvdXRwdXQiLCAib3V0cHV0cyIsICJvdXR0ZXN0IiwgInB1dCIsICJwdXRzIiwKICAgICAgICBcICAidGVzdCIsICJ0ZXN0ZW4iLCAidGVzdG4iLCAidGhlIGVuZCIsICJ1ayIsICJ3cm9uZyJdLAogICAgICAgIFxbCiAgICAgICAgXCAgIFsiYmFkIiwgWyJwdXQiLCAidWsiLCAiT0siXV0sCiAgICAgICAgXCAgIFsiaW5wdXRzIiwgWyJpbnB1dCIsICJwdXRzIiwgIm91dHB1dHMiXV0sCiAgICAgICAgXCAgIFsiY29tbWVudCIsIFsiQ29tbWVudCIsICJvdXR0ZXN0IiwgInRoZSBlbmQiXV0sCiAgICAgICAgXCAgIFsib2siLCBbIk9LIiwgInVrIiwgInB1dCJdXSwKICAgICAgICBcICAgWyJPayIsIFsiT0siLCAiVWsiLCAiUHV0Il1dLAogICAgICAgIFwgICBbInRlc3QiLCBbIlRlc3QiLCAidGVzdG4iLCAidGVzdGVuIl1dLAogICAgICAgIFwgICBbImRceEU5XHhGNGwiLCBbImRlb2wiLCAiZFx4RTlceEY0ciIsICJ0ZXN0Il1dLAogICAgICAgIFwgICBbImVuZCIsIFsicHV0IiwgInVrIiwgInRlc3QiXV0sCiAgICAgICAgXCAgIFsidGhlIiwgWyJwdXQiLCAidWsiLCAidGVzdCJdXSwKICAgICAgICBcIF0KICAgICAgICBcICkKCiAgY2FsbCBhc3NlcnRfZXF1YWwoImdlYmxldGVnZWsiLCBzb3VuZGZvbGQoJ2dvb2JsZWR5Z29vb2snKSkKICBjYWxsIGFzc2VydF9lcXVhbCgia2VwZXJlbmV2ZW4iLCAna/NvcOty/270dmVuJy0+c291bmRmb2xkKCkpCiAgY2FsbCBhc3NlcnRfZXF1YWwoImV2ZXJsZXMgZ2VzdmV0cyBldGVsZSIsIHNvdW5kZm9sZCgnb2V2ZXJsb29zIGdlendldHMgZWRhbGUnKSkKZW5kZnVuYwoKIiBQb3N0cG9uZWQgcHJlZml4ZXMKZnVuYyBUZXN0X3p6X3ByZWZpeGVzKCkKICBjYWxsIExvYWRBZmZBbmREaWMoZzp0ZXN0X2RhdGFfYWZmMiwgZzp0ZXN0X2RhdGFfZGljMSkKICBjYWxsIFJ1bkdvb2RCYWQoInB1dHMiLAogICAgICAgIFwgImJhZDogaW5wdXRzIGNvbW1lbnQgb2sgT2sgZW5kIHRoZS4gdGVzdCBkXHhFOVx4RjRsIiwKICAgICAgICBcIFsiQ29tbWVudCIsICJkZW9sIiwgImRceEU5XHhGNHIiLCAiT0siLCAicHV0IiwgImlucHV0IiwgIm91dHB1dCIsICJwdXRzIiwgIm91dHB1dHMiLCAidGVzdCIsICJvdXR0ZXN0IiwgInRlc3RlbiIsICJ0ZXN0biIsICJ0aGUgZW5kIiwgInVrIiwgIndyb25nIl0sCiAgICAgICAgXCBbCiAgICAgICAgXCAgIFsiYmFkIiwgWyJwdXQiLCAidWsiLCAiT0siXV0sCiAgICAgICAgXCAgIFsiaW5wdXRzIiwgWyJpbnB1dCIsICJwdXRzIiwgIm91dHB1dHMiXV0sCiAgICAgICAgXCAgIFsiY29tbWVudCIsIFsiQ29tbWVudCJdXSwKICAgICAgICBcICAgWyJvayIsIFsiT0siLCAidWsiLCAicHV0Il1dLAogICAgICAgIFwgICBbIk9rIiwgWyJPSyIsICJVayIsICJQdXQiXV0sCiAgICAgICAgXCAgIFsiZW5kIiwgWyJwdXQiLCAidWsiLCAiZGVvbCJdXSwKICAgICAgICBcICAgWyJ0aGUiLCBbInB1dCIsICJ1ayIsICJ0ZXN0Il1dLAogICAgICAgIFwgICBbInRlc3QiLCBbIlRlc3QiLCAidGVzdG4iLCAidGVzdGVuIl1dLAogICAgICAgIFwgICBbImRceEU5XHhGNGwiLCBbImRlb2wiLCAiZFx4RTlceEY0ciIsICJ0ZXN0Il1dLAogICAgICAgIFwgXSkKZW5kZnVuYwoKIkNvbXBvdW5kIHdvcmRzCmZ1bmMgVGVzdF96el9jb21wb3VuZCgpCiAgY2FsbCBMb2FkQWZmQW5kRGljKGc6dGVzdF9kYXRhX2FmZjMsIGc6dGVzdF9kYXRhX2RpYzMpCiAgY2FsbCBSdW5Hb29kQmFkKCJmb28gbVx4RUYgZm9vYmFyIGZvb2Zvb2JhciBiYXJmb28gYmFyYmFyZm9vIiwKICAgICAgICBcICJiYWQ6IGJhciBsYSBmb29tXHhFRiBiYXJtXHhFRiBtXHhFRmZvbyBtXHhFRmJhciBtXHhFRm1ceEVGIGxhbGEgbVx4RUZsYSBsYW1ceEVGIGZvb2xhIGxhYmFyIiwKICAgICAgICBcIFsiZm9vIiwgIm1ceEVGIl0sCiAgICAgICAgXCBbCiAgICAgICAgXCAgIFsiYmFkIiwgWyJmb28iLCAibVx4RUYiXV0sCiAgICAgICAgXCAgIFsiYmFyIiwgWyJiYXJmb28iLCAiZm9vYmFyIiwgImZvbyJdXSwKICAgICAgICBcICAgWyJsYSIsIFsibVx4RUYiLCAiZm9vIl1dLAogICAgICAgIFwgICBbImZvb21ceEVGIiwgWyJmb28gbVx4RUYiLCAiZm9vIiwgImZvb2ZvbyJdXSwKICAgICAgICBcICAgWyJiYXJtXHhFRiIsIFsiYmFyZm9vIiwgIm1ceEVGIiwgImJhcmJhciJdXSwKICAgICAgICBcICAgWyJtXHhFRmZvbyIsIFsibVx4RUYgZm9vIiwgImZvbyIsICJmb29mb28iXV0sCiAgICAgICAgXCAgIFsibVx4RUZiYXIiLCBbImZvb2JhciIsICJiYXJiYXIiLCAibVx4RUYiXV0sCiAgICAgICAgXCAgIFsibVx4RUZtXHhFRiIsIFsibVx4RUYgbVx4RUYiLCAibVx4RUYiXV0sCiAgICAgICAgXCAgIFsibGFsYSIsIFtdXSwKICAgICAgICBcICAgWyJtXHhFRmxhIiwgWyJtXHhFRiIsICJtXHhFRiBtXHhFRiJdXSwKICAgICAgICBcICAgWyJsYW1ceEVGIiwgWyJtXHhFRiIsICJtXHhFRiBtXHhFRiJdXSwKICAgICAgICBcICAgWyJmb29sYSIsIFsiZm9vIiwgImZvb2JhciIsICJmb29mb28iXV0sCiAgICAgICAgXCAgIFsibGFiYXIiLCBbImJhcmJhciIsICJmb29iYXIiXV0sCiAgICAgICAgXCBdKQoKICBjYWxsIExvYWRBZmZBbmREaWMoZzp0ZXN0X2RhdGFfYWZmNCwgZzp0ZXN0X2RhdGFfZGljNCkKICBjYWxsIFJ1bkdvb2RCYWQoIndvcmQgdXRpbCBib3JrIHByZWJvcmsgc3RhcnQgZW5kIHdvcmR1dGlsIHdvcmR1dGlscyBwcm8tb2sgYm9yayBib3JrYm9yayBib3JrYm9ya2JvcmsgYm9ya2Jvcmtib3JrYm9yayBib3JrYm9ya2Jvcmtib3JrYm9yayB0b21hdG8gdG9tYXRvdG9tYXRvIHN0YXJ0ZW5kIHN0YXJ0d29yZCBzdGFydHdvcmR3b3JkIHN0YXJ0d29yZGVuZCBzdGFydHdvcmR3b3JkZW5kIHN0YXJ0d29yZHdvcmR3b3JkZW5kIHByZWJvcmsgcHJlYm9ya2JvcmsgcHJlYm9ya2Jvcmtib3JrIG5vdXdvcmQiLAogICAgICAgIFwgImJhZDogd29yZHV0aWxpemUgcHJvIGJvcmtib3JrYm9ya2Jvcmtib3JrYm9yayB0b21hdG90b21hdG90b21hdG8gZW5kc3RhcnQgZW5kZW5kIHN0YXJ0c3RhcnQgd29yZGVuZCB3b3Jkc3RhcnQgcHJlYm9ya3ByZWJvcmsgIHByZWJvcmtwcmVib3JrYm9yayBzdGFydHdvcmR3b3Jkd29yZHdvcmRlbmQgYm9ya3ByZWJvcmtwcmVib3JrYm9yayB1dGlsc2JvcmsgIHN0YXJ0bm91d29yZCIsCiAgICAgICAgXCBbImJvcmsiLCAicHJlYm9yayIsICJlbmQiLCAicHJvLW9rIiwgInN0YXJ0IiwgInRvbWF0byIsICJ1dGlsIiwgInV0aWxpemUiLCAidXRpbHMiLCAid29yZCIsICJub3V3b3JkIl0sCiAgICAgICAgXCBbCiAgICAgICAgXCAgIFsiYmFkIiwgWyJlbmQiLCAiYm9yayIsICJ3b3JkIl1dLAogICAgICAgIFwgICBbIndvcmR1dGlsaXplIiwgWyJ3b3JkIHV0aWxpemUiLCAid29yZHV0aWxzIiwgIndvcmR1dGlsIl1dLAogICAgICAgIFwgICBbInBybyIsIFsiYm9yayIsICJ3b3JkIiwgImVuZCJdXSwKICAgICAgICBcICAgWyJib3JrYm9ya2Jvcmtib3JrYm9ya2JvcmsiLCBbImJvcmsgYm9ya2Jvcmtib3JrYm9ya2JvcmsiLCAiYm9ya2JvcmsgYm9ya2Jvcmtib3JrYm9yayIsICJib3JrYm9ya2JvcmsgYm9ya2Jvcmtib3JrIl1dLAogICAgICAgIFwgICBbInRvbWF0b3RvbWF0b3RvbWF0byIsIFsidG9tYXRvIHRvbWF0b3RvbWF0byIsICJ0b21hdG90b21hdG8gdG9tYXRvIiwgInRvbWF0byB0b21hdG8gdG9tYXRvIl1dLAogICAgICAgIFwgICBbImVuZHN0YXJ0IiwgWyJlbmQgc3RhcnQiLCAic3RhcnQiXV0sCiAgICAgICAgXCAgIFsiZW5kZW5kIiwgWyJlbmQgZW5kIiwgImVuZCJdXSwKICAgICAgICBcICAgWyJzdGFydHN0YXJ0IiwgWyJzdGFydCBzdGFydCJdXSwKICAgICAgICBcICAgWyJ3b3JkZW5kIiwgWyJ3b3JkIGVuZCIsICJ3b3JkIiwgIndvcmR3b3JkIl1dLAogICAgICAgIFwgICBbIndvcmRzdGFydCIsIFsid29yZCBzdGFydCIsICJib3JrIHN0YXJ0Il1dLAogICAgICAgIFwgICBbInByZWJvcmtwcmVib3JrIiwgWyJwcmVib3JrIHByZWJvcmsiLCAicHJlYm9ya2JvcmsiLCAicHJlYm9ya2Jvcmtib3JrIl1dLAogICAgICAgIFwgICBbInByZWJvcmtwcmVib3JrYm9yayIsIFsicHJlYm9yayBwcmVib3JrYm9yayIsICJwcmVib3JrYm9ya2JvcmsiLCAicHJlYm9ya2Jvcmtib3JrYm9yayJdXSwKICAgICAgICBcICAgWyJzdGFydHdvcmR3b3Jkd29yZHdvcmRlbmQiLCBbInN0YXJ0d29yZHdvcmR3b3Jkd29yZCBlbmQiLCAic3RhcnR3b3Jkd29yZHdvcmR3b3JkIiwgInN0YXJ0IHdvcmR3b3Jkd29yZHdvcmQgZW5kIl1dLAogICAgICAgIFwgICBbImJvcmtwcmVib3JrcHJlYm9ya2JvcmsiLCBbImJvcmsgcHJlYm9ya3ByZWJvcmtib3JrIiwgImJvcmsgcHJlYm9yayBwcmVib3JrYm9yayIsICJib3JrIHByZWJvcmtwcmVib3JrIGJvcmsiXV0sCiAgICAgICAgXCAgIFsidXRpbHNib3JrIiwgWyJ1dGlsYm9yayIsICJ1dGlscyBib3JrIiwgInV0aWwgYm9yayJdXSwKICAgICAgICBcICAgWyJzdGFydG5vdXdvcmQiLCBbInN0YXJ0IG5vdXdvcmQiLCAic3RhcnR3b3JkIiwgInN0YXJ0Ym9ya3dvcmQiXV0sCiAgICAgICAgXCBdKQoKZW5kZnVuYwoKIlRlc3QgYWZmaXggZmxhZ3Mgd2l0aCB0d28gY2hhcmFjdGVycwpmdW5jIFRlc3RfenpfYWZmaXgoKQogIGNhbGwgTG9hZEFmZkFuZERpYyhnOnRlc3RfZGF0YV9hZmY1LCBnOnRlc3RfZGF0YV9kaWM1KQogIGNhbGwgUnVuR29vZEJhZCgiZm9vYTEgZm9vYVx4RTkgYmFyIHByZWJhciBiYXJib3JrIHByZWJhcmJvcmsgIHN0YXJ0cHJlYmFyIHN0YXJ0IGVuZCBzdGFydGVuZCAgc3RhcnRtaWRkbGVlbmQgbm91ZW5kIiwKICAgICAgICBcICJiYWQ6IGZvbyBmb29hMiBwcmFiYXIgcHJvYmFyYmlyayBtaWRkbGUgc3RhcnRtaWRkbGUgbWlkZGxlZW5kIGVuZHN0YXJ0IHN0YXJ0cHJvYmFyIHN0YXJ0bm91ZW5kIiwKICAgICAgICBcIFsiYmFyIiwgImJhcmJvcmsiLCAiZW5kIiwgImZvb2ExIiwgImZvb2FceEU5IiwgIm5vdWVuZCIsICJwcmViYXIiLCAicHJlYmFyYm9yayIsICJzdGFydCJdLAogICAgICAgIFwgWwogICAgICAgIFwgICBbImJhZCIsIFsiYmFyIiwgImVuZCIsICJmb29hMSJdXSwKICAgICAgICBcICAgWyJmb28iLCBbImZvb2ExIiwgImZvb2FceEU5IiwgImJhciJdXSwKICAgICAgICBcICAgWyJmb29hMiIsIFsiZm9vYTEiLCAiZm9vYVx4RTkiLCAiYmFyIl1dLAogICAgICAgIFwgICBbInByYWJhciIsIFsicHJlYmFyIiwgImJhciIsICJiYXIgYmFyIl1dLAogICAgICAgIFwgICBbInByb2JhcmJpcmsiLCBbInByZWJhcmJvcmsiXV0sCiAgICAgICAgXCAgIFsibWlkZGxlIiwgW11dLAogICAgICAgIFwgICBbInN0YXJ0bWlkZGxlIiwgWyJzdGFydG1pZGRsZWVuZCIsICJzdGFydG1pZGRsZWJhciJdXSwKICAgICAgICBcICAgWyJtaWRkbGVlbmQiLCBbXV0sCiAgICAgICAgXCAgIFsiZW5kc3RhcnQiLCBbImVuZCBzdGFydCIsICJzdGFydCJdXSwKICAgICAgICBcICAgWyJzdGFydHByb2JhciIsIFsic3RhcnRwcmViYXIiLCAic3RhcnQgcHJlYmFyIiwgInN0YXJ0YmFyIl1dLAogICAgICAgIFwgICBbInN0YXJ0bm91ZW5kIiwgWyJzdGFydCBub3VlbmQiLCAic3RhcnRlbmQiXV0sCiAgICAgICAgXCBdKQoKICBjYWxsIExvYWRBZmZBbmREaWMoZzp0ZXN0X2RhdGFfYWZmNiwgZzp0ZXN0X2RhdGFfZGljNikKICBjYWxsIFJ1bkdvb2RCYWQoIm1lZWExIG1lZWFceEU5IGJhciBwcmViYXIgYmFyYm9yayBwcmViYXJib3JrICBsZWFkcHJlYmFyIGxlYWQgZW5kIGxlYWRlbmQgIGxlYWRtaWRkbGVlbmQiLAogICAgICAgIFwgICJiYWQ6IG1lZSBtZWVhMiBwcmFiYXIgcHJvYmFyYmlyayBtaWRkbGUgbGVhZG1pZGRsZSBtaWRkbGVlbmQgZW5kbGVhZCBsZWFkcHJvYmFyIiwKICAgICAgICBcIFsiYmFyIiwgImJhcmJvcmsiLCAiZW5kIiwgImxlYWQiLCAibWVlYTEiLCAibWVlYVx4RTkiLCAicHJlYmFyIiwgInByZWJhcmJvcmsiXSwKICAgICAgICBcIFsKICAgICAgICBcICAgWyJiYWQiLCBbImJhciIsICJlbmQiLCAibGVhZCJdXSwKICAgICAgICBcICAgWyJtZWUiLCBbIm1lZWExIiwgIm1lZWFceEU5IiwgImJhciJdXSwKICAgICAgICBcICAgWyJtZWVhMiIsIFsibWVlYTEiLCAibWVlYVx4RTkiLCAibGVhZCJdXSwKICAgICAgICBcICAgWyJwcmFiYXIiLCBbInByZWJhciIsICJiYXIiLCAibGVhZGJhciJdXSwKICAgICAgICBcICAgWyJwcm9iYXJiaXJrIiwgWyJwcmViYXJib3JrIl1dLAogICAgICAgIFwgICBbIm1pZGRsZSIsIFtdXSwKICAgICAgICBcICAgWyJsZWFkbWlkZGxlIiwgWyJsZWFkbWlkZGxlZW5kIiwgImxlYWRtaWRkbGViYXIiXV0sCiAgICAgICAgXCAgIFsibWlkZGxlZW5kIiwgW11dLAogICAgICAgIFwgICBbImVuZGxlYWQiLCBbImVuZCBsZWFkIiwgImxlYWQiLCAiZW5kIGVuZCJdXSwKICAgICAgICBcICAgWyJsZWFkcHJvYmFyIiwgWyJsZWFkcHJlYmFyIiwgImxlYWQgcHJlYmFyIiwgImxlYWRiYXIiXV0sCiAgICAgICAgXCBdKQoKICBjYWxsIExvYWRBZmZBbmREaWMoZzp0ZXN0X2RhdGFfYWZmNywgZzp0ZXN0X2RhdGFfZGljNykKICBjYWxsIFJ1bkdvb2RCYWQoIm1lZWExIG1lZXplcm8gbWVlYVx4RTkgYmFyIHByZWJhciBiYXJtZWF0IHByZWJhcm1lYXQgIGxlYWRwcmViYXIgbGVhZCB0YWlsIGxlYWR0YWlsICBsZWFkbWlkZGxldGFpbCIsCiAgICAgICAgXCAiYmFkOiBtZWUgbWVlYTIgcHJhYmFyIHByb2Jhcm1hYXQgbWlkZGxlIGxlYWRtaWRkbGUgbWlkZGxldGFpbCB0YWlsbGVhZCBsZWFkcHJvYmFyIiwKICAgICAgICBcIFsiYmFyIiwgImJhcm1lYXQiLCAibGVhZCIsICJtZWVhMSIsICJtZWVhXHhFOSIsICJtZWV6ZXJvIiwgInByZWJhciIsICJwcmViYXJtZWF0IiwgInRhaWwiXSwKICAgICAgICBcIFsKICAgICAgICBcICAgWyJiYWQiLCBbImJhciIsICJsZWFkIiwgInRhaWwiXV0sCiAgICAgICAgXCAgIFsibWVlIiwgWyJtZWVhMSIsICJtZWVhXHhFOSIsICJiYXIiXV0sCiAgICAgICAgXCAgIFsibWVlYTIiLCBbIm1lZWExIiwgIm1lZWFceEU5IiwgImxlYWQiXV0sCiAgICAgICAgXCAgIFsicHJhYmFyIiwgWyJwcmViYXIiLCAiYmFyIiwgImxlYWRiYXIiXV0sCiAgICAgICAgXCAgIFsicHJvYmFybWFhdCIsIFsicHJlYmFybWVhdCJdXSwKICAgICAgICBcICAgWyJtaWRkbGUiLCBbXV0sCiAgICAgICAgXCAgIFsibGVhZG1pZGRsZSIsIFsibGVhZG1pZGRsZWJhciJdXSwKICAgICAgICBcICAgWyJtaWRkbGV0YWlsIiwgW11dLAogICAgICAgIFwgICBbInRhaWxsZWFkIiwgWyJ0YWlsIGxlYWQiLCAidGFpbCJdXSwKICAgICAgICBcICAgWyJsZWFkcHJvYmFyIiwgWyJsZWFkcHJlYmFyIiwgImxlYWQgcHJlYmFyIiwgImxlYWRiYXIiXV0sCiAgICAgICAgXCBdKQplbmRmdW5jCgpmdW5jIFRlc3RfenpfTk9TTElUU1VHUygpCiAgY2FsbCBMb2FkQWZmQW5kRGljKGc6dGVzdF9kYXRhX2FmZjgsIGc6dGVzdF9kYXRhX2RpYzgpCiAgY2FsbCBSdW5Hb29kQmFkKCJmb28gYmFyIGZhYWJhciIsICJiYWQ6IGZvb2JhciBiYXJmb28iLAogICAgICAgIFwgWyJiYXIiLCAiZmFhYmFyIiwgImZvbyJdLAogICAgICAgIFwgWwogICAgICAgIFwgICBbImJhZCIsIFsiYmFyIiwgImZvbyJdXSwKICAgICAgICBcICAgWyJmb29iYXIiLCBbImZhYWJhciIsICJmb28gYmFyIiwgImJhciJdXSwKICAgICAgICBcICAgWyJiYXJmb28iLCBbImJhciBmb28iLCAiYmFyIiwgImZvbyJdXSwKICAgICAgICBcIF0pCmVuZGZ1bmMKCiIgTnVtYmVycwpmdW5jIFRlc3RfenpfTnVtYmVycygpCiAgY2FsbCBMb2FkQWZmQW5kRGljKGc6dGVzdF9kYXRhX2FmZjksIGc6dGVzdF9kYXRhX2RpYzkpCiAgY2FsbCBSdW5Hb29kQmFkKCIwYjEwMTEgMDc3NyAxMjM0IDB4MDFmZiIsICIiLAogICAgICAgIFwgWyJiYXIiLCAiZm9vIl0sCiAgICAgICAgXCBbCiAgICAgICAgXCBdKQplbmRmdW5jCgoiIEFmZml4IGZsYWdzCmZ1bmMgVGVzdF96el9hZmZpeF9mbGFncygpCiAgY2FsbCBMb2FkQWZmQW5kRGljKGc6dGVzdF9kYXRhX2FmZjEwLCBnOnRlc3RfZGF0YV9kaWMxMCkKICBjYWxsIFJ1bkdvb2RCYWQoImRyaW5rIGRyaW5rYWJsZSBkcmlua2FibGVzIGRyaW5rdGFibGUgZHJpbmthYmxldGFibGUiLAoJXCAiYmFkOiBkcmlua3MgZHJpbmtzdGFibGUgZHJpbmthYmxlc3RhYmxlIiwKICAgICAgICBcIFsiZHJpbmsiLCAiZHJpbmthYmxlIiwgImRyaW5rYWJsZXMiLCAidGFibGUiXSwKICAgICAgICBcIFtbJ2JhZCcsIFtdXSwKCVwgWydkcmlua3MnLCBbJ2RyaW5rJ11dLAoJXCBbJ2RyaW5rc3RhYmxlJywgWydkcmlua3RhYmxlJywgJ2RyaW5rYWJsZScsICdkcmluayB0YWJsZSddXSwKICAgICAgICBcIFsnZHJpbmthYmxlc3RhYmxlJywgWydkcmlua2FibGV0YWJsZScsICdkcmlua2FibGVzIHRhYmxlJywgJ2RyaW5rYWJsZSB0YWJsZSddXSwKCVwgXSkKZW5kZnVuYwoKZnVuY3Rpb24gRmlyc3RTcGVsbFdvcmQoKQogIGNhbGwgZmVlZGtleXMoIi9ec3RhcnQ6XG4iLCAndHgnKQogIG5vcm1hbCBdc21tCiAgbGV0IFtzdHIsIGFdID0gc3BlbGxiYWR3b3JkKCkKICByZXR1cm4gc3RyCmVuZGZ1bmMKCmZ1bmN0aW9uIFNlY29uZFNwZWxsV29yZCgpCiAgbm9ybWFsIGBtXXMKICBsZXQgW3N0ciwgYV0gPSBzcGVsbGJhZHdvcmQoKQogIHJldHVybiBzdHIKZW5kZnVuYwoKIlRlc3Qgd2l0aCBTQUwgaW5zdGVhZCBvZiBTT0ZPIGl0ZW1zOyB0ZXN0IGF1dG9tYXRpYyByZWxvYWRpbmcKZnVuYyBUZXN0X3p6X3NhbF9hbmRfYWRkaXRpb24oKQogIHNldCBlbmM9bGF0aW4xCiAgc2V0IHNwZWxsZmlsZT0KICBjYWxsIHdyaXRlZmlsZShnOnRlc3RfZGF0YV9kaWMxLCAiWHRlc3QuZGljIiwgJ0QnKQogIGNhbGwgd3JpdGVmaWxlKGc6dGVzdF9kYXRhX2FmZl9zYWwsICJYdGVzdC5hZmYiLCAnRCcpCiAgbWtzcGVsbCEgWHRlc3QgWHRlc3QKICBzZXQgc3BsPVh0ZXN0LmxhdGluMS5zcGwgc3BlbGwKICBjYWxsIGFzc2VydF9lcXVhbCgna2JsdHlraycsIHNvdW5kZm9sZCgnZ29vYmxlZHlnb29vaycpKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCdrcHJuZm4nLCBzb3VuZGZvbGQoJ2vzb3Drcv9u9HZlbicpKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCcqZmxzIGtzd3RzIHRsJywgc291bmRmb2xkKCdvZXZlcmxvb3MgZ2V6d2V0cyBlZGFsZScpKQoKICAiYWxzbyB1c2UgYW4gYWRkaXRpb24gZmlsZQogIGNhbGwgd3JpdGVmaWxlKFsiL3JlZ2lvbnM9dXNnYm56IiwgImVsZXF1aW50LzIiLCAiZWxla3dpbnQvMyJdLCAiWHRlc3QubGF0aW4xLmFkZCIsICdEJykKICBta3NwZWxsISBYdGVzdC5sYXRpbjEuYWRkLnNwbCBYdGVzdC5sYXRpbjEuYWRkCgogIGJ3aXBlIQogIGNhbGwgc2V0bGluZSgxLCBbInN0YXJ0OiBlbGVxdWludCB0ZXN0IGVsZWt3aW50IHRlc3QgZWxla3dlbnQgYXNkZiJdKQoKICBzZXQgc3BlbGxmaWxlPVh0ZXN0LmxhdGluMS5hZGQKICBjYWxsIGFzc2VydF9lcXVhbCgiZWxla3dlbnQiLCBGaXJzdFNwZWxsV29yZCgpKQoKICBzZXQgc3BsPVh0ZXN0X3VzLmxhdGluMS5zcGwKICBjYWxsIGFzc2VydF9lcXVhbCgiZWxlcXVpbnQiLCBGaXJzdFNwZWxsV29yZCgpKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCJlbGVrd2ludCIsIFNlY29uZFNwZWxsV29yZCgpKQoKICBzZXQgc3BsPVh0ZXN0X2diLmxhdGluMS5zcGwKICBjYWxsIGFzc2VydF9lcXVhbCgiZWxla3dpbnQiLCBGaXJzdFNwZWxsV29yZCgpKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCJlbGVrd2VudCIsIFNlY29uZFNwZWxsV29yZCgpKQoKICBzZXQgc3BsPVh0ZXN0X256LmxhdGluMS5zcGwKICBjYWxsIGFzc2VydF9lcXVhbCgiZWxlcXVpbnQiLCBGaXJzdFNwZWxsV29yZCgpKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCJlbGVrd2VudCIsIFNlY29uZFNwZWxsV29yZCgpKQoKICBzZXQgc3BsPVh0ZXN0X2NhLmxhdGluMS5zcGwKICBjYWxsIGFzc2VydF9lcXVhbCgiZWxlcXVpbnQiLCBGaXJzdFNwZWxsV29yZCgpKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCJlbGVrd2ludCIsIFNlY29uZFNwZWxsV29yZCgpKQoKICBid2lwZSEKICBzZXQgc3BlbGxmaWxlPQogIHNldCBzcGwmCmVuZGZ1bmMKCmZ1bmMgVGVzdF9zcGVsbGZpbGVfdmFsdWUoKQogIHNldCBzcGVsbGZpbGU9WGRpci9YdGVzdC5sYXRpbjEuYWRkCiAgc2V0IHNwZWxsZmlsZT1YZGlyL1h0ZXN0LnV0Zi04LmFkZCxYdGVzdF9vdGhlci5hZGQKZW5kZnVuYwoKZnVuYyBUZXN0X3JlZ2lvbl9lcnJvcigpCiAgbWVzc2FnZXMgY2xlYXIKICBjYWxsIHdyaXRlZmlsZShbIi9yZWdpb25zPXVzZ2JueiIsICJlbGVxdWludC8wIl0sICJYdGVzdC5sYXRpbjEuYWRkIiwgJ0QnKQogIG1rc3BlbGwhIFh0ZXN0LmxhdGluMS5hZGQuc3BsIFh0ZXN0LmxhdGluMS5hZGQKICBjYWxsIGFzc2VydF9tYXRjaCgnSW52YWxpZCByZWdpb24gbnIgaW4gWHRlc3QubGF0aW4xLmFkZCBsaW5lIDI6IDAnLCBleGVjdXRlKCdtZXNzYWdlcycpKQogIGNhbGwgZGVsZXRlKCdYdGVzdC5sYXRpbjEuYWRkLnNwbCcpCmVuZGZ1bmMKCiIgQ2hlY2sgdXNpbmcgej0gaW4gbmV3IGJ1ZmZlciAoY3Jhc2ggZml4ZWQgYnkgcGF0Y2ggNy40YS4wMjgpLgpmdW5jIFRlc3RfemVxX2NyYXNoKCkKICBuZXcKICBzZXQgbWF4bWVtPTUxMiBzcGVsbAogIGNhbGwgZmVlZGtleXMoJ2lhc2Qbej06XCInLCAndHgnKQoKICBid2lwZSEKZW5kZnVuYwoKIiBDaGVjayB0aGF0IHo9IHdvcmtzIGV2ZW4gd2hlbiAnbm9zcGVsbCcgaXMgc2V0LiAgVGhpcyB0ZXN0IHVzZXMgb25lIG9mIHRoZQoiIHRlc3RzIGluIFRlc3Rfc3BlbGxzdWdnZXN0X29wdGlvbl9udW1iZXIoKSBqdXN0IHRvIHZlcmlmeSB0aGF0IHo9IGJhc2ljYWxseQoiIHdvcmtzIGFuZCB0aGF0ICJFNzU2OiBTcGVsbCBjaGVja2luZyBpcyBub3QgZW5hYmxlZCIgaXMgbm90IGdlbmVyYXRlZC4KZnVuYyBUZXN0X3plcV9ub3NwZWxsKCkKICBuZXcKICBzZXQgbm9zcGVsbCBzcGVsbHN1Z2dlc3Q9MSxiZXN0CiAgY2FsbCBzZXRsaW5lKDEsICdBIGJhb3JkJykKICB0cnkKICAgIG5vcm0gJDF6PQogICAgY2FsbCBhc3NlcnRfZXF1YWwoJ0EgYm9hcmQnLCBnZXRsaW5lKDEpKQogIGNhdGNoCiAgICBjYWxsIGFzc2VydF9yZXBvcnQoIkNhdWdodCBleGNlcHRpb246ICIgLiB2OmV4Y2VwdGlvbikKICBlbmR0cnkKICBzZXQgc3BlbGwmIHNwZWxsc3VnZ2VzdCYKICBid2lwZSEKZW5kZnVuYwoKIiBDaGVjayB0aGF0ICJFNzU2OiBTcGVsbCBjaGVja2luZyBpcyBub3QgcG9zc2libGUiIGlzIHJlcG9ydGVkIHdoZW4gej0gaXMKIiBleGVjdXRlZCBhbmQgJ3NwZWxsbGFuZycgaXMgZW1wdHkuCmZ1bmMgVGVzdF96ZXFfbm9fc3BlbGxsYW5nKCkKICBuZXcKICBzZXQgc3BlbGxsYW5nPSBzcGVsbHN1Z2dlc3Q9MSxiZXN0CiAgY2FsbCBzZXRsaW5lKDEsICdBIGJhb3JkJykKICBjYWxsIGFzc2VydF9mYWlscygnbm9ybWFsICQxej0nLCAnRTc1NjonKQogIHNldCBzcGVsbGxhbmcmIHNwZWxsc3VnZ2VzdCYKICBid2lwZSEKZW5kZnVuYwoKIiBDaGVjayBoYW5kbGluZyBhIHdvcmQgbG9uZ2VyIHRoYW4gTUFYV0xFTi4KZnVuYyBUZXN0X3NwZWxsX2xvbmdfd29yZCgpCiAgc2V0IGVuYz11dGYtOAogIG5ldwogIGNhbGwgc2V0bGluZSgxLCAiZFx4Q0NceEI0XHhDQ1x4QkRceENEXHg4OFx4Q0RceDk0YVx4Q0NceEI1XHhDRFx4ODRceENEXHg4NFx4Q0NceEE4XHhDRFx4OUNyXHhDQ1x4QjVceENDXHg4RVx4Q0RceDg1XHhDRFx4ODVrXHhDQ1x4QjZceENDXHg4OVx4Q0NceDlEIFx4Q0NceEI2XHhDQ1x4ODNceENDXHg4Rlx4Q0NceEE0XHhDRFx4OEVmXHhDQ1x4QjdceENDXHg4MVx4Q0NceDgwXHhDQ1x4QTlceENDXHhCMFx4Q0NceEFDXHhDQ1x4QTJceENEXHg5NVx4Q0RceDg3XHhDRFx4OERceENDXHg5RVx4Q0RceDk5XHhDQ1x4QURceENDXHhBQlx4Q0NceDk3XHhDQ1x4QkJvXHhDQ1x4QjZceENDXHg4NFx4Q0NceDk1XHhDQ1x4OENceENDXHg4Qlx4Q0RceDlCXHhDRFx4OUNceENDXHhBRnJceENDXHhCN1x4Q0NceDk0XHhDRFx4ODNceENEXHg5N1x4Q0NceDhDXHhDQ1x4ODJceENEXHg4Mlx4Q0RceDgwXHhDRFx4OTFceENDXHg4MFx4Q0NceEJFXHhDQ1x4ODJceENDXHg4Rlx4Q0NceEEzXHhDRFx4ODVceENDXHhBRVx4Q0RceDhEXHhDRFx4OTlceENDXHhCQ1x4Q0NceEFCXHhDQ1x4QTdceENEXHg4OGNceENDXHhCN1x4Q0RceDgzXHhDQ1x4ODRceENEXHg5Mlx4Q0NceDg2XHhDQ1x4ODNceENDXHg4OFx4Q0NceDkyXHhDQ1x4OTRceENDXHhCRVx4Q0NceDlEXHhDQ1x4QUZceENDXHg5OFx4Q0NceDlEXHhDQ1x4QkJceENEXHg4RVx4Q0NceEJCXHhDQ1x4QjNceENDXHhBM1x4Q0RceDhFXHhDRFx4OTlceENDXHhBNVx4Q0NceEFEXHhDQ1x4OTlceENDXHhCOVx4Q0NceEFFXHhDQ1x4QTVceENDXHg5RVx4Q0RceDg4XHhDQ1x4QUVceENDXHg5RVx4Q0NceEE5XHhDQ1x4OTdceENDXHhCQ1x4Q0NceDk5XHhDQ1x4QTVceENEXHg4N1x4Q0NceDk3XHhDRFx4OEVceENEXHg5NFx4Q0NceDk5XHhDQ1x4OURceENDXHg5Nlx4Q0RceDk0XHhDQ1x4QUJceENDXHhBN1x4Q0NceEE1XHhDQ1x4OThceENDXHhCQlx4Q0NceEFGXHhDQ1x4QUJlXHhDQ1x4QjdceENDXHg4RVx4Q0NceDgyXHhDRFx4ODZceENEXHg5Qlx4Q0NceDk0XHhDRFx4ODNceENDXHg4NVx4Q0RceDhBXHhDRFx4OENceENDXHg4Qlx4Q0RceDkyXHhDRFx4OTFceENDXHg4Rlx4Q0NceDgxXHhDRFx4OTVceENDXHhBMlx4Q0NceEI5XHhDQ1x4QjJceENEXHg5Q1x4Q0NceEIxXHhDQ1x4QTZceENDXHhCM1x4Q0NceEFGXHhDQ1x4QUVceENDXHg5Q1x4Q0RceDk5c1x4Q0NceEI4XHhDQ1x4OENceENDXHg4RVx4Q0NceDg3XHhDRFx4ODFceENEXHg4Mlx4Q0NceDg2XHhDRFx4OENceENEXHg4Q1x4Q0NceDhCXHhDQ1x4ODRceENDXHg4Q1x4Q0RceDg0XHhDRFx4OUJceENEXHg4Nlx4Q0NceDkzXHhDRFx4OTBceENDXHg4NVx4Q0NceDk0XHhDRFx4OThceENEXHg4NFx4Q0RceDkyXHhDRFx4OEJceENDXHg5MFx4Q0NceDgzXHhDQ1x4OEZceENEXHg4NFx4Q0RceDgxXHhDRFx4OUJceENDXHg5MFx4Q0RceDgxXHhDQ1x4OEZceENDXHhCRFx4Q0NceDg4XHhDQ1x4QkZceENDXHg4OFx4Q0NceDg0XHhDQ1x4OEVceENEXHg5OVx4Q0RceDk0XHhDQ1x4OTlceENEXHg5OVx4Q0NceEIwXHhDQ1x4QThceENDXHhBM1x4Q0NceEE4XHhDQ1x4OTZceENDXHg5OVx4Q0NceEFFXHhDQ1x4QkNceENDXHg5OVx4Q0RceDlBXHhDQ1x4QjJceENDXHhCMVx4Q0NceDlGXHhDQ1x4QkJceENDXHhBNlx4Q0RceDg1XHhDQ1x4QUFceENEXHg4OVx4Q0NceDlEXHhDQ1x4OTlceENEXHg5Nlx4Q0NceEIxXHhDQ1x4QjFceENDXHg5OVx4Q0NceEE2XHhDQ1x4QTVceENEXHg5NVx4Q0NceEIyXHhDQ1x4QTBceENEXHg5OSB3aXRoaW4iKQogIHNldCBzcGVsbCBzcGVsbGxhbmc9ZW4KICByZWRyYXcKICByZWRyYXchCiAgYndpcGUhCiAgc2V0IG5vc3BlbGwKZW5kZnVuYwoKZnVuYyBUZXN0X3NwZWxsc3VnZ2VzdF90b29fZGVlcCgpCiAgIiBUaGlzIHdhcyBpbmNyZW1lbnRpbmcgImRlcHRoIiBvdmVyIE1BWFdMRU4uCiAgbmV3CiAgbm9ybSAWczAwMEcwMP0wMDAwMDAwMDAwMDAKICBzaWwgbm9ybSAuLnZ6Ry4uLi4uLi4uLi4uLi4uLi52dnpHMCAgICAgdiB6PQogIGJ3aXBlIQplbmRmdW5jCgpmdW5jIFRlc3Rfc3BlbGxfZ29vZF93b3JkX2ludmFsaWQoKQogICIgVGhpcyB3YXMgYWRkaW5nIGEgd29yZCB3aXRoIGEgMHgwMiBieXRlLCB3aGljaCBjYXVzZXMgaGF2b2MuCiAgZW5ldwogIG5vcm0gbzAKICBzaWwhIG5vcm0gcnp6V3MwMAIvCiAgMgogIHNpbCEgbm9ybSBWekdwcnp6VwogIHNpbCEgbm9ybSB6PQoKICBid2lwZSEKZW5kZnVuYwoKZnVuYyBUZXN0X3NwZWxsX2dvb2Rfd29yZF9zbGFzaCgpCiAgIiBUaGlzIGNhdXNlZCBFMTI4MC4KICBuZXcKICBub3JtIGFmb28gLwogIDEKICBub3JtIHpHCgogIGJ3aXBlIQplbmRmdW5jCgpmdW5jIExvYWRBZmZBbmREaWMoYWZmX2NvbnRlbnRzLCBkaWNfY29udGVudHMpCiAgc2V0IGVuYz1sYXRpbjEKICBzZXQgc3BlbGxmaWxlPQogIGNhbGwgd3JpdGVmaWxlKGE6YWZmX2NvbnRlbnRzLCAiWHRlc3QuYWZmIikKICBjYWxsIHdyaXRlZmlsZShhOmRpY19jb250ZW50cywgIlh0ZXN0LmRpYyIpCiAgIiBHZW5lcmF0ZSBhIC5zcGwgZmlsZSBmcm9tIGEgLmRpYyBhbmQgLmFmZiBmaWxlLgogIG1rc3BlbGwhIFh0ZXN0IFh0ZXN0CiAgIiB1c2UgdGhhdCBzcGVsbCBmaWxlCiAgc2V0IHNwbD1YdGVzdC5sYXRpbjEuc3BsIHNwZWxsCmVuZGZ1bmMKCmZ1bmMgTGlzdFdvcmRzKCkKICBzcGVsbGR1bXAKICAleWFuawogIHF1aXQKICByZXR1cm4gc3BsaXQoQCIsICJcbiIpCmVuZGZ1bmMKCmZ1bmMgVGVzdEdvb2RCYWRCYXNlKCkKICBleGUgJzE7L15nb29kOicKICBub3JtYWwgMGY6XXMKICBsZXQgcHJldmJhZCA9ICcnCiAgbGV0IHJlc3VsdCA9IFtdCiAgd2hpbGUgMQogICAgbGV0IFtiYWQsIGFdID0gc3BlbGxiYWR3b3JkKCkKICAgIGlmIGJhZCA9PSAnJyB8fCBiYWQgPT0gcHJldmJhZCB8fCBiYWQgPT0gJ2JhZGVuZCcKICAgICAgYnJlYWsKICAgIGVuZGlmCiAgICBsZXQgcHJldmJhZCA9IGJhZAogICAgbGV0IGxzdCA9IGJhZC0+c3BlbGxzdWdnZXN0KDMpCiAgICBub3JtYWwgbW0KCiAgICBjYWxsIGFkZChyZXN1bHQsIFtiYWQsIGxzdF0pCiAgICBub3JtYWwgYG1dcwogIGVuZHdoaWxlCiAgcmV0dXJuIHJlc3VsdAplbmRmdW5jCgpmdW5jIFJ1bkdvb2RCYWQoZ29vZCwgYmFkLCBleHBlY3RlZF93b3JkcywgZXhwZWN0ZWRfYmFkX3dvcmRzKQogIGJ3aXBlIQogIGNhbGwgc2V0bGluZSgxLCBbImdvb2Q6ICIsIGE6Z29vZCwgIGE6YmFkLCAiIGJhZGVuZCAiXSkKICBsZXQgd29yZHMgPSBMaXN0V29yZHMoKQogIGNhbGwgYXNzZXJ0X2VxdWFsKGE6ZXhwZWN0ZWRfd29yZHMsIHdvcmRzWzE6LTFdKQogIGxldCBiYWRfd29yZHMgPSBUZXN0R29vZEJhZEJhc2UoKQogIGNhbGwgYXNzZXJ0X2VxdWFsKGE6ZXhwZWN0ZWRfYmFkX3dvcmRzLCBiYWRfd29yZHMpCiAgYndpcGUhCmVuZGZ1bmMKCmZ1bmMgVGVzdF9zcGVsbF9zY3JlZW5kdW1wKCkKICBDaGVja1NjcmVlbmR1bXAKCiAgbGV0IGxpbmVzID08PCB0cmltIEVORAogICAgICAgY2FsbCBzZXRsaW5lKDEsIFsKICAgICAgICAgICAgIFwgIlRoaXMgaXMgc29tZSB0ZXh0IHdpdGhvdXQgYW55IHNwZWxsIGVycm9ycy4gIEV2ZXJ5dGhpbmciLAogICAgICAgICAgICAgXCAic2hvdWxkIGp1c3QgYmUgYmxhY2ssIG5vdGhpbmcgd3JvbmcgaGVyZS4iLAogICAgICAgICAgICAgXCAiIiwKICAgICAgICAgICAgIFwgIlRoaXMgbGluZSBoYXMgYSBzZXBsbCBlcnJvci4gYW5kIG1pc3NpbmcgY2Fwcy4iLAogICAgICAgICAgICAgXCAiQW5kIGFuZCB0aGlzIGlzIHRoZSB0aGUgZHVwbGljYXRpb24uIiwKICAgICAgICAgICAgIFwgIndpdGggbWlzc2luZyBjYXBzIGhlcmUuIiwKICAgICAgICAgICAgIFwgXSkKICAgICAgIHNldCBzcGVsbCBzcGVsbGxhbmc9ZW5fbnoKICBFTkQKICBjYWxsIHdyaXRlZmlsZShsaW5lcywgJ1h0ZXN0U3BlbGwnLCAnRCcpCiAgbGV0IGJ1ZiA9IFJ1blZpbUluVGVybWluYWwoJy1TIFh0ZXN0U3BlbGwnLCB7J3Jvd3MnOiA4fSkKICBjYWxsIFZlcmlmeVNjcmVlbkR1bXAoYnVmLCAnVGVzdF9zcGVsbF8xJywge30pCgogICIgY2xlYW4gdXAKICBjYWxsIFN0b3BWaW1JblRlcm1pbmFsKGJ1ZikKZW5kZnVuYwoKZnVuYyBUZXN0X3NwZWxsX3NjcmVlbmR1bXBfc3BlbGxjYXAoKQogIENoZWNrU2NyZWVuZHVtcAoKICBsZXQgbGluZXMgPTw8IHRyaW0gRU5ECiAgICAgICBjYWxsIHNldGxpbmUoMSwgWwogICAgICAgICAgICAgXCAiICAgVGhpcyBsaW5lIGhhcyBhIHNlcGxsIGVycm9yLiBhbmQgbWlzc2luZyBjYXBzIGFuZCB0cmFpbGluZyBzcGFjZXMuICAgIiwKICAgICAgICAgICAgIFwgImFub3RoZXIgbWlzc2luZyBjYXAgaGVyZS4iLAogICAgICAgICAgICAgXCAiIiwKICAgICAgICAgICAgIFwgImFuZCBoZXJlLiIsCiAgICAgICAgICAgICBcICIgICAgIiwKICAgICAgICAgICAgIFwgImFuZCBoZXJlLiIKICAgICAgICAgICAgIFwgXSkKICAgICAgIHNldCBzcGVsbCBzcGVsbGxhbmc9ZW4KICBFTkQKICBjYWxsIHdyaXRlZmlsZShsaW5lcywgJ1h0ZXN0U3BlbGxDYXAnLCAnRCcpCiAgbGV0IGJ1ZiA9IFJ1blZpbUluVGVybWluYWwoJy1TIFh0ZXN0U3BlbGxDYXAnLCB7J3Jvd3MnOiA4fSkKICBjYWxsIFZlcmlmeVNjcmVlbkR1bXAoYnVmLCAnVGVzdF9zcGVsbF8yJywge30pCgogICIgQWZ0ZXIgYWRkaW5nIHdvcmQgbWlzc2luZyBDYXAgaW4gbmV4dCBsaW5lIGlzIHVwZGF0ZWQKICBjYWxsIHRlcm1fc2VuZGtleXMoYnVmLCAiM0dBTm90XDxFc2M+IikKICBjYWxsIFZlcmlmeVNjcmVlbkR1bXAoYnVmLCAnVGVzdF9zcGVsbF8zJywge30pCgogICIgRGVsZXRpbmcgYSBmdWxsIHN0b3AgcmVtb3ZlcyBtaXNzaW5nIENhcCBpbiBuZXh0IGxpbmUKICBjYWxsIHRlcm1fc2VuZGtleXMoYnVmLCAiNUdkZGskeCIpCiAgY2FsbCBWZXJpZnlTY3JlZW5EdW1wKGJ1ZiwgJ1Rlc3Rfc3BlbGxfNCcsIHt9KQoKICAiIFVuZG8gYWxzbyB1cGRhdGVzIHRoZSBuZXh0IGxpbmUgKGdvIHRvIGNvbW1hbmQgbGluZSB0byByZW1vdmUgbWVzc2FnZSkKICBjYWxsIHRlcm1fc2VuZGtleXMoYnVmLCAidTpcPEVzYz4iKQogIGNhbGwgVmVyaWZ5U2NyZWVuRHVtcChidWYsICdUZXN0X3NwZWxsXzUnLCB7fSkKCiAgIiBjbGVhbiB1cAogIGNhbGwgU3RvcFZpbUluVGVybWluYWwoYnVmKQplbmRmdW5jCgpmdW5jIFRlc3Rfc3BlbGxfY29tcGF0aWJsZSgpCiAgQ2hlY2tTY3JlZW5kdW1wCgogIGxldCBsaW5lcyA9PDwgdHJpbSBFTkQKICAgICAgIGNhbGwgc2V0bGluZSgxLCBbCiAgICAgICAgICAgICBcICJ0ZXN0ICItPnJlcGVhdCgyMCksCiAgICAgICAgICAgICBcICIiLAogICAgICAgICAgICAgXCAiZW5kIiwKICAgICAgICAgICAgIFwgXSkKICAgICAgIHNldCBzcGVsbCBjcG8rPSQKICBFTkQKICBjYWxsIHdyaXRlZmlsZShsaW5lcywgJ1h0ZXN0U3BlbGxDb21wJywgJ0QnKQogIGxldCBidWYgPSBSdW5WaW1JblRlcm1pbmFsKCctUyBYdGVzdFNwZWxsQ29tcCcsIHsncm93cyc6IDh9KQoKICBjYWxsIHRlcm1fc2VuZGtleXMoYnVmLCAiNTF8QyIpCiAgY2FsbCBWZXJpZnlTY3JlZW5EdW1wKGJ1ZiwgJ1Rlc3Rfc3BlbGxfY29tcGF0aWJsZV8xJywge30pCgogIGNhbGwgdGVybV9zZW5ka2V5cyhidWYsICJ4IikKICBjYWxsIFZlcmlmeVNjcmVlbkR1bXAoYnVmLCAnVGVzdF9zcGVsbF9jb21wYXRpYmxlXzInLCB7fSkKCiAgIiBjbGVhbiB1cAogIGNhbGwgU3RvcFZpbUluVGVybWluYWwoYnVmKQplbmRmdW5jCgpsZXQgZzp0ZXN0X2RhdGFfYWZmMSA9IFsKICAgICAgXCJTRVQgSVNPODg1OS0xIiwKICAgICAgXCJUUlkgZXNpYW5ydG9sY2R1Z21waGJ5ZnZrd2prcXh6LVx4RUJceEU5XHhFOFx4RUFceEVGXHhFRVx4RTRceEUwXHhFMlx4RjZceEZDXHhGQidFU0lBTlJUT0xDRFVHTVBIQllGVktXSktRWFoiLAogICAgICBcIiIsCiAgICAgIFwiRk9MICBceEUwXHhFMVx4RTJceEUzXHhFNFx4RTVceEU2XHhFN1x4RThceEU5XHhFQVx4RUJceEVDXHhFRFx4RUVceEVGXHhGMFx4RjFceEYyXHhGM1x4RjRceEY1XHhGNlx4RjhceEY5XHhGQVx4RkJceEZDXHhGRFx4RkVceERGXHhGRiIsCiAgICAgIFwiTE9XICBceEUwXHhFMVx4RTJceEUzXHhFNFx4RTVceEU2XHhFN1x4RThceEU5XHhFQVx4RUJceEVDXHhFRFx4RUVceEVGXHhGMFx4RjFceEYyXHhGM1x4RjRceEY1XHhGNlx4RjhceEY5XHhGQVx4RkJceEZDXHhGRFx4RkVceERGXHhGRiIsCiAgICAgIFwiVVBQICBceEMwXHhDMVx4QzJceEMzXHhDNFx4QzVceEM2XHhDN1x4QzhceEM5XHhDQVx4Q0JceENDXHhDRFx4Q0VceENGXHhEMFx4RDFceEQyXHhEM1x4RDRceEQ1XHhENlx4RDhceEQ5XHhEQVx4REJceERDXHhERFx4REVceERGXHhGRiIsCiAgICAgIFwiIiwKICAgICAgXCJTT0ZPRlJPTSBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXHhFMFx4RTFceEUyXHhFM1x4RTRceEU1XHhFNlx4RTdceEU4XHhFOVx4RUFceEVCXHhFQ1x4RURceEVFXHhFRlx4RjBceEYxXHhGMlx4RjNceEY0XHhGNVx4RjZceEY4XHhGOVx4RkFceEZCXHhGQ1x4RkRceEZFXHhERlx4RkZceEMwXHhDMVx4QzJceEMzXHhDNFx4QzVceEM2XHhDN1x4QzhceEM5XHhDQVx4Q0JceENDXHhDRFx4Q0VceENGXHhEMFx4RDFceEQyXHhEM1x4RDRceEQ1XHhENlx4RDhceEQ5XHhEQVx4REJceERDXHhERFx4REVceEJGIiwKICAgICAgXCJTT0ZPVE8gICBlYmN0ZWZnaGVqa2xubmVwa3JzdGV2dmtlc2ViY3RlZmdoZWprbG5uZXBrcnN0ZXZ2a2VzZWVlZWVlZWNlZWVlZWVlZWRuZWVlZWVlZWVlZWVwc2VlZWVlZWVlY2VlZWVlZWVlZG5lZWVlZWVlZWVlZXA/IiwKICAgICAgXCIiLAogICAgICBcIk1JRFdPUkRcdCctIiwKICAgICAgXCIiLAogICAgICBcIktFUCA9IiwKICAgICAgXCJSQVIgPyIsCiAgICAgIFwiQkFEICEiLAogICAgICBcIiIsCiAgICAgIFwiUEZYIEkgTiAxIiwKICAgICAgXCJQRlggSSAwIGluIC4iLAogICAgICBcIiIsCiAgICAgIFwiUEZYIE8gWSAxIiwKICAgICAgXCJQRlggTyAwIG91dCAuIiwKICAgICAgXCIiLAogICAgICBcIlNGWCBTIFkgMiIsCiAgICAgIFwiU0ZYIFMgMCBzIFtec10iLAogICAgICBcIlNGWCBTIDAgZXMgcyIsCiAgICAgIFwiIiwKICAgICAgXCJTRlggTiBOIDMiLAogICAgICBcIlNGWCBOIDAgZW4gW15uXSIsCiAgICAgIFwiU0ZYIE4gMCBuZW4gbiIsCiAgICAgIFwiU0ZYIE4gMCBuIC4iLAogICAgICBcIiIsCiAgICAgIFwiUkVQIDMiLAogICAgICBcIlJFUCBnIGNoIiwKICAgICAgXCJSRVAgY2ggZyIsCiAgICAgIFwiUkVQIHN2cCBzLnYucC4iLAogICAgICBcIiIsCiAgICAgIFwiTUFQIDkiLAogICAgICBcIk1BUCBhXHhFMFx4RTFceEUyXHhFM1x4RTRceEU1IiwKICAgICAgXCJNQVAgZVx4RThceEU5XHhFQVx4RUIiLAogICAgICBcIk1BUCBpXHhFQ1x4RURceEVFXHhFRiIsCiAgICAgIFwiTUFQIG9ceEYyXHhGM1x4RjRceEY1XHhGNiIsCiAgICAgIFwiTUFQIHVceEY5XHhGQVx4RkJceEZDIiwKICAgICAgXCJNQVAgblx4RjEiLAogICAgICBcIk1BUCBjXHhFNyIsCiAgICAgIFwiTUFQIHlceEZGXHhGRCIsCiAgICAgIFwiTUFQIHNceERGIiwKICAgICAgXCBdCmxldCBnOnRlc3RfZGF0YV9kaWMxID0gWwogICAgICBcIjEyMzQ1NiIsCiAgICAgIFwidGVzdC9OTyIsCiAgICAgIFwiIyBjb21tZW50IiwKICAgICAgXCJ3cm9uZyIsCiAgICAgIFwiQ29tbWVudCIsCiAgICAgIFwiT0siLAogICAgICBcInVrIiwKICAgICAgXCJwdXQvSVNPIiwKICAgICAgXCJ0aGUgZW5kIiwKICAgICAgXCJkZW9sIiwKICAgICAgXCJkXHhFOVx4RjRyIiwKICAgICAgXCBdCmxldCBnOnRlc3RfZGF0YV9hZmYyID0gWwogICAgICBcIlNFVCBJU084ODU5LTEiLAogICAgICBcIiIsCiAgICAgIFwiRk9MICBceEUwXHhFMVx4RTJceEUzXHhFNFx4RTVceEU2XHhFN1x4RThceEU5XHhFQVx4RUJceEVDXHhFRFx4RUVceEVGXHhGMFx4RjFceEYyXHhGM1x4RjRceEY1XHhGNlx4RjhceEY5XHhGQVx4RkJceEZDXHhGRFx4RkVceERGXHhGRiIsCiAgICAgIFwiTE9XICBceEUwXHhFMVx4RTJceEUzXHhFNFx4RTVceEU2XHhFN1x4RThceEU5XHhFQVx4RUJceEVDXHhFRFx4RUVceEVGXHhGMFx4RjFceEYyXHhGM1x4RjRceEY1XHhGNlx4RjhceEY5XHhGQVx4RkJceEZDXHhGRFx4RkVceERGXHhGRiIsCiAgICAgIFwiVVBQICBceEMwXHhDMVx4QzJceEMzXHhDNFx4QzVceEM2XHhDN1x4QzhceEM5XHhDQVx4Q0JceENDXHhDRFx4Q0VceENGXHhEMFx4RDFceEQyXHhEM1x4RDRceEQ1XHhENlx4RDhceEQ5XHhEQVx4REJceERDXHhERFx4REVceERGXHhGRiIsCiAgICAgIFwiIiwKICAgICAgXCJQRlhQT1NUUE9ORSIsCiAgICAgIFwiIiwKICAgICAgXCJNSURXT1JEXHQnLSIsCiAgICAgIFwiIiwKICAgICAgXCJLRVAgPSIsCiAgICAgIFwiUkFSID8iLAogICAgICBcIkJBRCAhIiwKICAgICAgXCIiLAogICAgICBcIlBGWCBJIE4gMSIsCiAgICAgIFwiUEZYIEkgMCBpbiAuIiwKICAgICAgXCIiLAogICAgICBcIlBGWCBPIFkgMSIsCiAgICAgIFwiUEZYIE8gMCBvdXQgW2Etel0iLAogICAgICBcIiIsCiAgICAgIFwiU0ZYIFMgWSAyIiwKICAgICAgXCJTRlggUyAwIHMgW15zXSIsCiAgICAgIFwiU0ZYIFMgMCBlcyBzIiwKICAgICAgXCIiLAogICAgICBcIlNGWCBOIE4gMyIsCiAgICAgIFwiU0ZYIE4gMCBlbiBbXm5dIiwKICAgICAgXCJTRlggTiAwIG5lbiBuIiwKICAgICAgXCJTRlggTiAwIG4gLiIsCiAgICAgIFwiIiwKICAgICAgXCJSRVAgMyIsCiAgICAgIFwiUkVQIGcgY2giLAogICAgICBcIlJFUCBjaCBnIiwKICAgICAgXCJSRVAgc3ZwIHMudi5wLiIsCiAgICAgIFwiIiwKICAgICAgXCJNQVAgOSIsCiAgICAgIFwiTUFQIGFceEUwXHhFMVx4RTJceEUzXHhFNFx4RTUiLAogICAgICBcIk1BUCBlXHhFOFx4RTlceEVBXHhFQiIsCiAgICAgIFwiTUFQIGlceEVDXHhFRFx4RUVceEVGIiwKICAgICAgXCJNQVAgb1x4RjJceEYzXHhGNFx4RjVceEY2IiwKICAgICAgXCJNQVAgdVx4RjlceEZBXHhGQlx4RkMiLAogICAgICBcIk1BUCBuXHhGMSIsCiAgICAgIFwiTUFQIGNceEU3IiwKICAgICAgXCJNQVAgeVx4RkZceEZEIiwKICAgICAgXCJNQVAgc1x4REYiLAogICAgICBcIF0KbGV0IGc6dGVzdF9kYXRhX2FmZjMgPSBbCiAgICAgIFwiU0VUIElTTzg4NTktMSIsCiAgICAgIFwiIiwKICAgICAgXCJDT01QT1VORE1JTiAzIiwKICAgICAgXCJDT01QT1VORFJVTEUgbSoiLAogICAgICBcIk5FRURDT01QT1VORCB4IiwKICAgICAgXCBdCmxldCBnOnRlc3RfZGF0YV9kaWMzID0gWwogICAgICBcIjEyMzQiLAogICAgICBcImZvby9tIiwKICAgICAgXCJiYXIvbXgiLAogICAgICBcIm1ceEVGL20iLAogICAgICBcImxhL214IiwKICAgICAgXCBdCmxldCBnOnRlc3RfZGF0YV9hZmY0ID0gWwogICAgICBcIlNFVCBJU084ODU5LTEiLAogICAgICBcIiIsCiAgICAgIFwiRk9MICBceEUwXHhFMVx4RTJceEUzXHhFNFx4RTVceEU2XHhFN1x4RThceEU5XHhFQVx4RUJceEVDXHhFRFx4RUVceEVGXHhGMFx4RjFceEYyXHhGM1x4RjRceEY1XHhGNlx4RjhceEY5XHhGQVx4RkJceEZDXHhGRFx4RkVceERGXHhGRiIsCiAgICAgIFwiTE9XICBceEUwXHhFMVx4RTJceEUzXHhFNFx4RTVceEU2XHhFN1x4RThceEU5XHhFQVx4RUJceEVDXHhFRFx4RUVceEVGXHhGMFx4RjFceEYyXHhGM1x4RjRceEY1XHhGNlx4RjhceEY5XHhGQVx4RkJceEZDXHhGRFx4RkVceERGXHhGRiIsCiAgICAgIFwiVVBQICBceEMwXHhDMVx4QzJceEMzXHhDNFx4QzVceEM2XHhDN1x4QzhceEM5XHhDQVx4Q0JceENDXHhDRFx4Q0VceENGXHhEMFx4RDFceEQyXHhEM1x4RDRceEQ1XHhENlx4RDhceEQ5XHhEQVx4REJceERDXHhERFx4REVceERGXHhGRiIsCiAgICAgIFwiIiwKICAgICAgXCJDT01QT1VORFJVTEUgbSsiLAogICAgICBcIkNPTVBPVU5EUlVMRSBzbSplIiwKICAgICAgXCJDT01QT1VORFJVTEUgc20rIiwKICAgICAgXCJDT01QT1VORE1JTiAzIiwKICAgICAgXCJDT01QT1VORFdPUkRNQVggMyIsCiAgICAgIFwiQ09NUE9VTkRGT1JCSURGTEFHIHQiLAogICAgICBcIiIsCiAgICAgIFwiQ09NUE9VTkRTWUxNQVggNSIsCiAgICAgIFwiU1lMTEFCTEUgYVx4RTFlXHhFOWlceEVEb1x4RjNceEY2XHhGNXVceEZBXHhGQ1x4RkJ5L2FhL2F1L2VhL2VlL2VpL2llL29hL29lL29vL291L3V1L3VpIiwKICAgICAgXCIiLAogICAgICBcIk1BUCA5IiwKICAgICAgXCJNQVAgYVx4RTBceEUxXHhFMlx4RTNceEU0XHhFNSIsCiAgICAgIFwiTUFQIGVceEU4XHhFOVx4RUFceEVCIiwKICAgICAgXCJNQVAgaVx4RUNceEVEXHhFRVx4RUYiLAogICAgICBcIk1BUCBvXHhGMlx4RjNceEY0XHhGNVx4RjYiLAogICAgICBcIk1BUCB1XHhGOVx4RkFceEZCXHhGQyIsCiAgICAgIFwiTUFQIG5ceEYxIiwKICAgICAgXCJNQVAgY1x4RTciLAogICAgICBcIk1BUCB5XHhGRlx4RkQiLAogICAgICBcIk1BUCBzXHhERiIsCiAgICAgIFwiIiwKICAgICAgXCJORUVEQUZGSVggeCIsCiAgICAgIFwiIiwKICAgICAgXCJQRlhQT1NUUE9ORSIsCiAgICAgIFwiIiwKICAgICAgXCJNSURXT1JEICctIiwKICAgICAgXCIiLAogICAgICBcIlNGWCBxIE4gMSIsCiAgICAgIFwiU0ZYIHEgICAwICAgIC1vayAuIiwKICAgICAgXCIiLAogICAgICBcIlNGWCBhIFkgMiIsCiAgICAgIFwiU0ZYIGEgMCBzIC4iLAogICAgICBcIlNGWCBhIDAgaXplL3QgLiIsCiAgICAgIFwiIiwKICAgICAgXCJQRlggcCBOIDEiLAogICAgICBcIlBGWCBwIDAgcHJlIC4iLAogICAgICBcIiIsCiAgICAgIFwiUEZYIFAgTiAxIiwKICAgICAgXCJQRlggUCAwIG5vdSAuIiwKICAgICAgXCBdCmxldCBnOnRlc3RfZGF0YV9kaWM0ID0gWwogICAgICBcIjEyMzQiLAogICAgICBcIndvcmQvbVAiLAogICAgICBcInV0aWwvYW0iLAogICAgICBcInByby94cSIsCiAgICAgIFwidG9tYXRvL20iLAogICAgICBcImJvcmsvbXAiLAogICAgICBcInN0YXJ0L3MiLAogICAgICBcImVuZC9lIiwKICAgICAgXCBdCmxldCBnOnRlc3RfZGF0YV9hZmY1ID0gWwogICAgICBcIlNFVCBJU084ODU5LTEiLAogICAgICBcIiIsCiAgICAgIFwiRkxBRyBsb25nIiwKICAgICAgXCIiLAogICAgICBcIk5FRURBRkZJWCAhISIsCiAgICAgIFwiIiwKICAgICAgXCJDT01QT1VORFJVTEUgc3NtbSplZSIsCiAgICAgIFwiIiwKICAgICAgXCJORUVEQ09NUE9VTkQgeHgiLAogICAgICBcIkNPTVBPVU5EUEVSTUlURkxBRyBwcCIsCiAgICAgIFwiIiwKICAgICAgXCJTRlggMTMgWSAxIiwKICAgICAgXCJTRlggMTMgMCBib3JrIC4iLAogICAgICBcIiIsCiAgICAgIFwiU0ZYIGExIFkgMSIsCiAgICAgIFwiU0ZYIGExIDAgYTEgLiIsCiAgICAgIFwiIiwKICAgICAgXCJTRlggYVx4RTkgWSAxIiwKICAgICAgXCJTRlggYVx4RTkgMCBhXHhFOSAuIiwKICAgICAgXCIiLAogICAgICBcIlBGWCB6eiBZIDEiLAogICAgICBcIlBGWCB6eiAwIHByZS9wcCAuIiwKICAgICAgXCIiLAogICAgICBcIlBGWCB5eSBZIDEiLAogICAgICBcIlBGWCB5eSAwIG5vdSAuIiwKICAgICAgXCBdCmxldCBnOnRlc3RfZGF0YV9kaWM1ID0gWwogICAgICBcIjEyMzQiLAogICAgICBcImZvby9hMWFceEU5ISEiLAogICAgICBcImJhci96ejEzZWUiLAogICAgICBcInN0YXJ0L3NzIiwKICAgICAgXCJlbmQvZWV5eSIsCiAgICAgIFwibWlkZGxlL21teHgiLAogICAgICBcIF0KbGV0IGc6dGVzdF9kYXRhX2FmZjYgPSBbCiAgICAgIFwiU0VUIElTTzg4NTktMSIsCiAgICAgIFwiIiwKICAgICAgXCJGTEFHIGNhcGxvbmciLAogICAgICBcIiIsCiAgICAgIFwiTkVFREFGRklYIEEhIiwKICAgICAgXCIiLAogICAgICBcIkNPTVBPVU5EUlVMRSBzTW0qRWUiLAogICAgICBcIiIsCiAgICAgIFwiTkVFRENPTVBPVU5EIFh4IiwKICAgICAgXCIiLAogICAgICBcIkNPTVBPVU5EUEVSTUlURkxBRyBwIiwKICAgICAgXCIiLAogICAgICBcIlNGWCBOMyBZIDEiLAogICAgICBcIlNGWCBOMyAwIGJvcmsgLiIsCiAgICAgIFwiIiwKICAgICAgXCJTRlggQTEgWSAxIiwKICAgICAgXCJTRlggQTEgMCBhMSAuIiwKICAgICAgXCIiLAogICAgICBcIlNGWCBBXHhFOSBZIDEiLAogICAgICBcIlNGWCBBXHhFOSAwIGFceEU5IC4iLAogICAgICBcIiIsCiAgICAgIFwiUEZYIFp6IFkgMSIsCiAgICAgIFwiUEZYIFp6IDAgcHJlL3AgLiIsCiAgICAgIFwgXQpsZXQgZzp0ZXN0X2RhdGFfZGljNiA9IFsKICAgICAgXCIxMjM0IiwKICAgICAgXCJtZWUvQTFBXHhFOUEhIiwKICAgICAgXCJiYXIvWnpOM0VlIiwKICAgICAgXCJsZWFkL3MiLAogICAgICBcImVuZC9FZSIsCiAgICAgIFwibWlkZGxlL01tWHgiLAogICAgICBcIF0KbGV0IGc6dGVzdF9kYXRhX2FmZjcgPSBbCiAgICAgIFwiU0VUIElTTzg4NTktMSIsCiAgICAgIFwiIiwKICAgICAgXCJGTEFHIG51bSIsCiAgICAgIFwiIiwKICAgICAgXCJORUVEQUZGSVggOTk5OSIsCiAgICAgIFwiIiwKICAgICAgXCJDT01QT1VORFJVTEUgMiw3NyoxMjMiLAogICAgICBcIiIsCiAgICAgIFwiTkVFRENPTVBPVU5EIDEiLAogICAgICBcIkNPTVBPVU5EUEVSTUlURkxBRyA0MzIiLAogICAgICBcIiIsCiAgICAgIFwiU0ZYIDYxMDAzIFkgMSIsCiAgICAgIFwiU0ZYIDYxMDAzIDAgbWVhdCAuIiwKICAgICAgXCIiLAogICAgICBcIlNGWCAwIFkgMSIsCiAgICAgIFwiU0ZYIDAgMCB6ZXJvIC4iLAogICAgICBcIiIsCiAgICAgIFwiU0ZYIDM5MSBZIDEiLAogICAgICBcIlNGWCAzOTEgMCBhMSAuIiwKICAgICAgXCIiLAogICAgICBcIlNGWCAxMTEgWSAxIiwKICAgICAgXCJTRlggMTExIDAgYVx4RTkgLiIsCiAgICAgIFwiIiwKICAgICAgXCJQRlggMTcgWSAxIiwKICAgICAgXCJQRlggMTcgMCBwcmUvNDMyIC4iLAogICAgICBcIF0KbGV0IGc6dGVzdF9kYXRhX2RpYzcgPSBbCiAgICAgIFwiMTIzNCIsCiAgICAgIFwibWVlLzAsMzkxLDExMSw5OTk5IiwKICAgICAgXCJiYXIvMTcsNjEwMDMsMTIzIiwKICAgICAgXCJsZWFkLzIiLAogICAgICBcInRhaWwvMTIzIiwKICAgICAgXCJtaWRkbGUvNzcsMSIsCiAgICAgIFwgXQpsZXQgZzp0ZXN0X2RhdGFfYWZmOCA9IFsKICAgICAgXCJTRVQgSVNPODg1OS0xIiwKICAgICAgXCIiLAogICAgICBcIk5PU1BMSVRTVUdTIiwKICAgICAgXCBdCmxldCBnOnRlc3RfZGF0YV9kaWM4ID0gWwogICAgICBcIjEyMzQiLAogICAgICBcImZvbyIsCiAgICAgIFwiYmFyIiwKICAgICAgXCJmYWFiYXIiLAogICAgICBcIF0KbGV0IGc6dGVzdF9kYXRhX2FmZjkgPSBbCiAgICAgIFwgXQpsZXQgZzp0ZXN0X2RhdGFfZGljOSA9IFsKICAgICAgXCIxMjM0IiwKICAgICAgXCJmb28iLAogICAgICBcImJhciIsCiAgICAgIFwgXQpsZXQgZzp0ZXN0X2RhdGFfYWZmMTAgPSBbCiAgICAgIFwiQ09NUE9VTkRSVUxFIHNlIiwKICAgICAgXCJDT01QT1VORFBFUk1JVEZMQUcgcCIsCiAgICAgIFwiIiwKICAgICAgXCJTRlggQSBZIDEiLAogICAgICBcIlNGWCBBIDAgYWJsZS9NcCAuIiwKICAgICAgXCIiLAogICAgICBcIlNGWCBNIFkgMSIsCiAgICAgIFwiU0ZYIE0gMCBzIC4iLAogICAgICBcIF0KbGV0IGc6dGVzdF9kYXRhX2RpYzEwID0gWwogICAgICBcIjEyMzQiLAogICAgICBcImRyaW5rL0FzIiwKICAgICAgXCJ0YWJsZS9lIiwKICAgICAgXCBdCmxldCBnOnRlc3RfZGF0YV9hZmZfc2FsID0gWwogICAgICBcIlNFVCBJU084ODU5LTEiLAogICAgICBcIlRSWSBlc2lhbnJ0b2xjZHVnbXBoYnlmdmt3amtxeHotXHhFQlx4RTlceEU4XHhFQVx4RUZceEVFXHhFNFx4RTBceEUyXHhGNlx4RkNceEZCJ0VTSUFOUlRPTENEVUdNUEhCWUZWS1dKS1FYWiIsCiAgICAgIFwiIiwKICAgICAgXCJGT0wgIFx4RTBceEUxXHhFMlx4RTNceEU0XHhFNVx4RTZceEU3XHhFOFx4RTlceEVBXHhFQlx4RUNceEVEXHhFRVx4RUZceEYwXHhGMVx4RjJceEYzXHhGNFx4RjVceEY2XHhGOFx4RjlceEZBXHhGQlx4RkNceEZEXHhGRVx4REZceEZGIiwKICAgICAgXCJMT1cgIFx4RTBceEUxXHhFMlx4RTNceEU0XHhFNVx4RTZceEU3XHhFOFx4RTlceEVBXHhFQlx4RUNceEVEXHhFRVx4RUZceEYwXHhGMVx4RjJceEYzXHhGNFx4RjVceEY2XHhGOFx4RjlceEZBXHhGQlx4RkNceEZEXHhGRVx4REZceEZGIiwKICAgICAgXCJVUFAgIFx4QzBceEMxXHhDMlx4QzNceEM0XHhDNVx4QzZceEM3XHhDOFx4QzlceENBXHhDQlx4Q0NceENEXHhDRVx4Q0ZceEQwXHhEMVx4RDJceEQzXHhENFx4RDVceEQ2XHhEOFx4RDlceERBXHhEQlx4RENceEREXHhERVx4REZceEZGIiwKICAgICAgXCIiLAogICAgICBcIk1JRFdPUkRcdCctIiwKICAgICAgXCIiLAogICAgICBcIktFUCA9IiwKICAgICAgXCJSQVIgPyIsCiAgICAgIFwiQkFEICEiLAogICAgICBcIiIsCiAgICAgIFwiUEZYIEkgTiAxIiwKICAgICAgXCJQRlggSSAwIGluIC4iLAogICAgICBcIiIsCiAgICAgIFwiUEZYIE8gWSAxIiwKICAgICAgXCJQRlggTyAwIG91dCAuIiwKICAgICAgXCIiLAogICAgICBcIlNGWCBTIFkgMiIsCiAgICAgIFwiU0ZYIFMgMCBzIFtec10iLAogICAgICBcIlNGWCBTIDAgZXMgcyIsCiAgICAgIFwiIiwKICAgICAgXCJTRlggTiBOIDMiLAogICAgICBcIlNGWCBOIDAgZW4gW15uXSIsCiAgICAgIFwiU0ZYIE4gMCBuZW4gbiIsCiAgICAgIFwiU0ZYIE4gMCBuIC4iLAogICAgICBcIiIsCiAgICAgIFwiUkVQIDMiLAogICAgICBcIlJFUCBnIGNoIiwKICAgICAgXCJSRVAgY2ggZyIsCiAgICAgIFwiUkVQIHN2cCBzLnYucC4iLAogICAgICBcIiIsCiAgICAgIFwiTUFQIDkiLAogICAgICBcIk1BUCBhXHhFMFx4RTFceEUyXHhFM1x4RTRceEU1IiwKICAgICAgXCJNQVAgZVx4RThceEU5XHhFQVx4RUIiLAogICAgICBcIk1BUCBpXHhFQ1x4RURceEVFXHhFRiIsCiAgICAgIFwiTUFQIG9ceEYyXHhGM1x4RjRceEY1XHhGNiIsCiAgICAgIFwiTUFQIHVceEY5XHhGQVx4RkJceEZDIiwKICAgICAgXCJNQVAgblx4RjEiLAogICAgICBcIk1BUCBjXHhFNyIsCiAgICAgIFwiTUFQIHlceEZGXHhGRCIsCiAgICAgIFwiTUFQIHNceERGIiwKICAgICAgXCIiLAogICAgICBcIlNBTCBBSChBRUlPVVkpLV4gICAgICAgICAqSCIsCiAgICAgIFwiU0FMIEFSKEFFSU9VWSktXiAgICAgICAgICpSIiwKICAgICAgXCJTQUwgQShIUileICAgICAgICAgICAgICAgKiIsCiAgICAgIFwiU0FMIEFeICAgICAgICAgICAgICAgICAgICoiLAogICAgICBcIlNBTCBBSChBRUlPVVkpLSAgICAgICAgICBIIiwKICAgICAgXCJTQUwgQVIoQUVJT1VZKS0gICAgICAgICAgUiIsCiAgICAgIFwiU0FMIEEoSFIpICAgICAgICAgICAgICAgIF8iLAogICAgICBcIlNBTCBceEMwXiAgICAgICAgICAgICAgICAgICAqIiwKICAgICAgXCJTQUwgXHhDNV4gICAgICAgICAgICAgICAgICAgKiIsCiAgICAgIFwiU0FMIEJCLSAgICAgICAgICAgICAgICAgIF8iLAogICAgICBcIlNBTCBCICAgICAgICAgICAgICAgICAgICBCIiwKICAgICAgXCJTQUwgQ1EtICAgICAgICAgICAgICAgICAgXyIsCiAgICAgIFwiU0FMIENJQSAgICAgICAgICAgICAgICAgIFgiLAogICAgICBcIlNBTCBDSCAgICAgICAgICAgICAgICAgICBYIiwKICAgICAgXCJTQUwgQyhFSVkpLSAgICAgICAgICAgICAgUyIsCiAgICAgIFwiU0FMIENLICAgICAgICAgICAgICAgICAgIEsiLAogICAgICBcIlNBTCBDT1VHSF4gICAgICAgICAgICAgICBLRiIsCiAgICAgIFwiU0FMIENDPCAgICAgICAgICAgICAgICAgIEMiLAogICAgICBcIlNBTCBDICAgICAgICAgICAgICAgICAgICBLIiwKICAgICAgXCJTQUwgREcoRUlZKSAgICAgICAgICAgICAgSyIsCiAgICAgIFwiU0FMIERELSAgICAgICAgICAgICAgICAgIF8iLAogICAgICBcIlNBTCBEICAgICAgICAgICAgICAgICAgICBUIiwKICAgICAgXCJTQUwgXHhDOTwgICAgICAgICAgICAgICAgICAgRSIsCiAgICAgIFwiU0FMIEVIKEFFSU9VWSktXiAgICAgICAgICpIIiwKICAgICAgXCJTQUwgRVIoQUVJT1VZKS1eICAgICAgICAgKlIiLAogICAgICBcIlNBTCBFKEhSKV4gICAgICAgICAgICAgICAqIiwKICAgICAgXCJTQUwgRU5PVUdIXiQgICAgICAgICAgICAgKk5GIiwKICAgICAgXCJTQUwgRV4gICAgICAgICAgICAgICAgICAgKiIsCiAgICAgIFwiU0FMIEVIKEFFSU9VWSktICAgICAgICAgIEgiLAogICAgICBcIlNBTCBFUihBRUlPVVkpLSAgICAgICAgICBSIiwKICAgICAgXCJTQUwgRShIUikgICAgICAgICAgICAgICAgXyIsCiAgICAgIFwiU0FMIEZGLSAgICAgICAgICAgICAgICAgIF8iLAogICAgICBcIlNBTCBGICAgICAgICAgICAgICAgICAgICBGIiwKICAgICAgXCJTQUwgR05eICAgICAgICAgICAgICAgICAgTiIsCiAgICAgIFwiU0FMIEdOJCAgICAgICAgICAgICAgICAgIE4iLAogICAgICBcIlNBTCBHTlMkICAgICAgICAgICAgICAgICBOUyIsCiAgICAgIFwiU0FMIEdORUQkICAgICAgICAgICAgICAgIE4iLAogICAgICBcIlNBTCBHSChBRUlPVVkpLSAgICAgICAgICBLIiwKICAgICAgXCJTQUwgR0ggICAgICAgICAgICAgICAgICAgXyIsCiAgICAgIFwiU0FMIEdHOSAgICAgICAgICAgICAgICAgIEsiLAogICAgICBcIlNBTCBHICAgICAgICAgICAgICAgICAgICBLIiwKICAgICAgXCJTQUwgSCAgICAgICAgICAgICAgICAgICAgSCIsCiAgICAgIFwiU0FMIElIKEFFSU9VWSktXiAgICAgICAgICpIIiwKICAgICAgXCJTQUwgSVIoQUVJT1VZKS1eICAgICAgICAgKlIiLAogICAgICBcIlNBTCBJKEhSKV4gICAgICAgICAgICAgICAqIiwKICAgICAgXCJTQUwgSV4gICAgICAgICAgICAgICAgICAgKiIsCiAgICAgIFwiU0FMIElORzYgICAgICAgICAgICAgICAgIE4iLAogICAgICBcIlNBTCBJSChBRUlPVVkpLSAgICAgICAgICBIIiwKICAgICAgXCJTQUwgSVIoQUVJT1VZKS0gICAgICAgICAgUiIsCiAgICAgIFwiU0FMIEkoSFIpICAgICAgICAgICAgICAgIF8iLAogICAgICBcIlNBTCBKICAgICAgICAgICAgICAgICAgICBLIiwKICAgICAgXCJTQUwgS05eICAgICAgICAgICAgICAgICAgTiIsCiAgICAgIFwiU0FMIEtLLSAgICAgICAgICAgICAgICAgIF8iLAogICAgICBcIlNBTCBLICAgICAgICAgICAgICAgICAgICBLIiwKICAgICAgXCJTQUwgTEFVR0heICAgICAgICAgICAgICAgTEYiLAogICAgICBcIlNBTCBMTC0gICAgICAgICAgICAgICAgICBfIiwKICAgICAgXCJTQUwgTCAgICAgICAgICAgICAgICAgICAgTCIsCiAgICAgIFwiU0FMIE1CJCAgICAgICAgICAgICAgICAgIE0iLAogICAgICBcIlNBTCBNTSAgICAgICAgICAgICAgICAgICBNIiwKICAgICAgXCJTQUwgTSAgICAgICAgICAgICAgICAgICAgTSIsCiAgICAgIFwiU0FMIE5OLSAgICAgICAgICAgICAgICAgIF8iLAogICAgICBcIlNBTCBOICAgICAgICAgICAgICAgICAgICBOIiwKICAgICAgXCJTQUwgT0goQUVJT1VZKS1eICAgICAgICAgKkgiLAogICAgICBcIlNBTCBPUihBRUlPVVkpLV4gICAgICAgICAqUiIsCiAgICAgIFwiU0FMIE8oSFIpXiAgICAgICAgICAgICAgICoiLAogICAgICBcIlNBTCBPXiAgICAgICAgICAgICAgICAgICAqIiwKICAgICAgXCJTQUwgT0goQUVJT1VZKS0gICAgICAgICAgSCIsCiAgICAgIFwiU0FMIE9SKEFFSU9VWSktICAgICAgICAgIFIiLAogICAgICBcIlNBTCBPKEhSKSAgICAgICAgICAgICAgICBfIiwKICAgICAgXCJTQUwgUEggICAgICAgICAgICAgICAgICAgRiIsCiAgICAgIFwiU0FMIFBOXiAgICAgICAgICAgICAgICAgIE4iLAogICAgICBcIlNBTCBQUC0gICAgICAgICAgICAgICAgICBfIiwKICAgICAgXCJTQUwgUCAgICAgICAgICAgICAgICAgICAgUCIsCiAgICAgIFwiU0FMIFEgICAgICAgICAgICAgICAgICAgIEsiLAogICAgICBcIlNBTCBSSF4gICAgICAgICAgICAgICAgICBSIiwKICAgICAgXCJTQUwgUk9VR0heICAgICAgICAgICAgICAgUkYiLAogICAgICBcIlNBTCBSUi0gICAgICAgICAgICAgICAgICBfIiwKICAgICAgXCJTQUwgUiAgICAgICAgICAgICAgICAgICAgUiIsCiAgICAgIFwiU0FMIFNDSChFT1UpLSAgICAgICAgICAgIFNLIiwKICAgICAgXCJTQUwgU0MoSUVZKS0gICAgICAgICAgICAgUyIsCiAgICAgIFwiU0FMIFNIICAgICAgICAgICAgICAgICAgIFgiLAogICAgICBcIlNBTCBTSShBTyktICAgICAgICAgICAgICBYIiwKICAgICAgXCJTQUwgU1MtICAgICAgICAgICAgICAgICAgXyIsCiAgICAgIFwiU0FMIFMgICAgICAgICAgICAgICAgICAgIFMiLAogICAgICBcIlNBTCBUSShBTyktICAgICAgICAgICAgICBYIiwKICAgICAgXCJTQUwgVEggICAgICAgICAgICAgICAgICAgQCIsCiAgICAgIFwiU0FMIFRDSC0tICAgICAgICAgICAgICAgIF8iLAogICAgICBcIlNBTCBUT1VHSF4gICAgICAgICAgICAgICBURiIsCiAgICAgIFwiU0FMIFRULSAgICAgICAgICAgICAgICAgIF8iLAogICAgICBcIlNBTCBUICAgICAgICAgICAgICAgICAgICBUIiwKICAgICAgXCJTQUwgVUgoQUVJT1VZKS1eICAgICAgICAgKkgiLAogICAgICBcIlNBTCBVUihBRUlPVVkpLV4gICAgICAgICAqUiIsCiAgICAgIFwiU0FMIFUoSFIpXiAgICAgICAgICAgICAgICoiLAogICAgICBcIlNBTCBVXiAgICAgICAgICAgICAgICAgICAqIiwKICAgICAgXCJTQUwgVUgoQUVJT1VZKS0gICAgICAgICAgSCIsCiAgICAgIFwiU0FMIFVSKEFFSU9VWSktICAgICAgICAgIFIiLAogICAgICBcIlNBTCBVKEhSKSAgICAgICAgICAgICAgICBfIiwKICAgICAgXCJTQUwgVl4gICAgICAgICAgICAgICAgICAgVyIsCiAgICAgIFwiU0FMIFYgICAgICAgICAgICAgICAgICAgIEYiLAogICAgICBcIlNBTCBXUl4gICAgICAgICAgICAgICAgICBSIiwKICAgICAgXCJTQUwgV0heICAgICAgICAgICAgICAgICAgVyIsCiAgICAgIFwiU0FMIFcoQUVJT1UpLSAgICAgICAgICAgIFciLAogICAgICBcIlNBTCBYXiAgICAgICAgICAgICAgICAgICBTIiwKICAgICAgXCJTQUwgWCAgICAgICAgICAgICAgICAgICAgS1MiLAogICAgICBcIlNBTCBZKEFFSU9VKS0gICAgICAgICAgICBZIiwKICAgICAgXCJTQUwgWlotICAgICAgICAgICAgICAgICAgXyIsCiAgICAgIFwiU0FMIFogICAgICAgICAgICAgICAgICAgIFMiLAogICAgICBcIF0KCiIgdmltOiBzaGlmdHdpZHRoPTIgc3RzPTIgZXhwYW5kdGFiCg==