IiBUZXN0cyBmb3IgcmVnZXhwIGluIGxhdGluMSBlbmNvZGluZwpzZXQgZW5jb2Rpbmc9bGF0aW4xCnNjcmlwdGVuY29kaW5nIGxhdGluMQoKZnVuYyBzOmVxdWl2YWxlbmNlX3Rlc3QoKQogIGxldCBzdHIgPSAiQcDBwsPExSBCIEMgRCBFyMnKyyBGIEcgSCBJzM3OzyBKIEsgTCBNIE7RIE/S09TV1tggUCBRIFIgUyBUIFXZ2tvcIFYgVyBYIFndIFogYeDh4uPk5SBiIGMgZCBl6Onq6yBmIGcgaCBp7O3u7yBqIGsgbCBtIG7xIG/y8/T19vggcCBxIHIgcyB0IHX5+vv8IHYgdyB4IHn9/yB6IgogIGxldCBncm91cHMgPSBzcGxpdChzdHIpCiAgZm9yIGdyb3VwMSBpbiBncm91cHMKICAgICAgZm9yIGMgaW4gc3BsaXQoZ3JvdXAxLCAnXHpzJykKCSIgbmV4dCBzdGF0ZW1lbnQgY29uZmlybXMgdGhhdCBlcXVpdmFsZW5jZSBjbGFzcyBtYXRjaGVzIGV2ZXJ5CgkiIGNoYXJhY3RlciBpbiBncm91cAogICAgICAgIGNhbGwgYXNzZXJ0X21hdGNoKCdeW1s9JyAuIGMgLiAnPV1dKiQnLCBncm91cDEpCiAgICAgICAgZm9yIGdyb3VwMiBpbiBncm91cHMKICAgICAgICAgIGlmIGdyb3VwMiAhPSBncm91cDEKCSAgICAiIG5leHQgc3RhdGVtZW50IGNvbnZlcnRzIHRoYXQgZXF1aXZhbGVuY2UgY2xhc3MgZG9lc24ndCBtYXRjaAoJICAgICIgYSBjaGFyYWN0ZXIgaW4gYW55IG90aGVyIGdyb3VwCiAgICAgICAgICAgIGNhbGwgYXNzZXJ0X2VxdWFsKC0xLCBtYXRjaChncm91cDIsICdbWz0nIC4gYyAuICc9XV0nKSkKICAgICAgICAgIGVuZGlmCiAgICAgICAgZW5kZm9yCiAgICAgIGVuZGZvcgogIGVuZGZvcgplbmRmdW5jCgpmdW5jIFRlc3RfZXF1aXZhbGVuY2VfcmUxKCkKICBzZXQgcmU9MQogIGNhbGwgczplcXVpdmFsZW5jZV90ZXN0KCkKZW5kZnVuYwoKZnVuYyBUZXN0X2VxdWl2YWxlbmNlX3JlMigpCiAgc2V0IHJlPTIKICBjYWxsIHM6ZXF1aXZhbGVuY2VfdGVzdCgpCmVuZGZ1bmMKCmZ1bmMgVGVzdF9yZWN1cnNpdmVfc3Vic3RpdHV0ZSgpCiAgbmV3CiAgcy9eL1w9ZXhlY3V0ZSgicyNeIyNnbiIpCiAgIiBjaGVjayB3ZSBhcmUgbm93IG5vdCBpbiB0aGUgc2FuZGJveAogIGNhbGwgc2V0d2ludmFyKDEsICdteXZhcicsIDEpCiAgYndpcGUhCmVuZGZ1bmMKCmZ1bmMgVGVzdF9uZXN0ZWRfYmFja3JlZnMoKQogICIgQ2hlY2sgZXhhbXBsZSBpbiBjaGFuZ2UudHh0LgogIG5ldwogIGZvciByZSBpbiByYW5nZSgwLCAyKQogICAgZXhlICdzZXQgcmU9JyAuIHJlCiAgICBjYWxsIHNldGxpbmUoMSwgJ2FhIGFiIHgnKQogICAgMXMvXChcKGFbYS1kXSBcKSpcKVwoeFwpLy1cMS0gLVwyLSAtXDMtLwogICAgY2FsbCBhc3NlcnRfZXF1YWwoJy1hYSBhYiAtIC1hYiAtIC14LScsIGdldGxpbmUoMSkpCgogICAgY2FsbCBhc3NlcnRfZXF1YWwoJy1hYSBhYiAtIC1hYiAtIC14LScsIHN1YnN0aXR1dGUoJ2FhIGFiIHgnLCAnXChcKGFbYS1kXSBcKSpcKVwoeFwpJywgJy1cMS0gLVwyLSAtXDMtJywgJycpKQogIGVuZGZvcgogIGJ3aXBlIQogIHNldCByZT0wCmVuZGZ1bmMKCmZ1bmMgVGVzdF9lb3dfd2l0aF9vcHRpb25hbCgpCiAgbGV0IGV4cGVjdGVkID0gWydhYmMgZGVmJywgJ2FiYycsICdkZWYnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJ10KICBmb3IgcmUgaW4gcmFuZ2UoMCwgMikKICAgIGV4ZSAnc2V0IHJlPScgLiByZQogICAgbGV0IGFjdHVhbCA9IG1hdGNobGlzdCgnYWJjIGRlZicsICdcKGFiY1w+XClcP1xzKlwoZGVmXCknKQogICAgY2FsbCBhc3NlcnRfZXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKICBlbmRmb3IKZW5kZnVuYwo=