Lyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgQ29weXJpZ2h0IChjKSAyMDAxLTIwMTAgSm9lbCBkZSBHdXptYW4KICAgIENvcHlyaWdodCAoYykgMjAwMS0yMDEwIEhhcnRtdXQgS2Fpc2VyCgogICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwogICAgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KCi8vIHRoaXMgZmlsZSBpbnRlbnRpb25hbGx5IGNvbnRhaW5zIG5vbi1hc2NpaSBjaGFyYWN0ZXJzCi8vIGJvb3N0aW5zcGVjdDpub2FzY2lpCgojZGVmaW5lIEJPT1NUX1NQSVJJVF9VTklDT0RFCgojaW5jbHVkZSA8Ym9vc3QvZGV0YWlsL2xpZ2h0d2VpZ2h0X3Rlc3QuaHBwPgojaW5jbHVkZSA8Ym9vc3Qvc3Bpcml0L2luY2x1ZGUvcWlfY2hhci5ocHA+CiNpbmNsdWRlIDxib29zdC9zcGlyaXQvaW5jbHVkZS9xaV9hY3Rpb24uaHBwPgojaW5jbHVkZSA8Ym9vc3Qvc3Bpcml0L2luY2x1ZGUvc3VwcG9ydF9hcmd1bWVudC5ocHA+CiNpbmNsdWRlIDxib29zdC9zcGlyaXQvaW5jbHVkZS9zdXBwb3J0X2F0dHJpYnV0ZXMuaHBwPgojaW5jbHVkZSA8Ym9vc3Qvc3Bpcml0L2luY2x1ZGUvcGhvZW5peF9jb3JlLmhwcD4KI2luY2x1ZGUgPGJvb3N0L3NwaXJpdC9pbmNsdWRlL3Bob2VuaXhfb3BlcmF0b3IuaHBwPgojaW5jbHVkZSA8Ym9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+CiNpbmNsdWRlIDxib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgInRlc3QuaHBwIgoKaW50Cm1haW4oKQp7CiAgICB1c2luZyBzcGlyaXRfdGVzdDo6dGVzdDsKICAgIHVzaW5nIHNwaXJpdF90ZXN0Ojp0ZXN0X2F0dHI7CgogICAgewogICAgICAgIHVzaW5nIG5hbWVzcGFjZSBib29zdDo6c3Bpcml0Ojphc2NpaTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoIjEiLCBhbG51bSkpOwogICAgICAgIEJPT1NUX1RFU1QoIXRlc3QoIiAiLCBhbG51bSkpOwogICAgICAgIEJPT1NUX1RFU1QoIXRlc3QoIjEiLCBhbHBoYSkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdCgieCIsIGFscGhhKSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KCIgIiwgYmxhbmspKTsKICAgICAgICBCT09TVF9URVNUKCF0ZXN0KCJ4IiwgYmxhbmspKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoIjEiLCBkaWdpdCkpOwogICAgICAgIEJPT1NUX1RFU1QoIXRlc3QoIngiLCBkaWdpdCkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdCgiYSIsIGxvd2VyKSk7CiAgICAgICAgQk9PU1RfVEVTVCghdGVzdCgiQSIsIGxvd2VyKSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KCIhIiwgcHVuY3QpKTsKICAgICAgICBCT09TVF9URVNUKCF0ZXN0KCJ4IiwgcHVuY3QpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoIiAiLCBzcGFjZSkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdCgiXG4iLCBzcGFjZSkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdCgiXHIiLCBzcGFjZSkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdCgiXHQiLCBzcGFjZSkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdCgiQSIsIHVwcGVyKSk7CiAgICAgICAgQk9PU1RfVEVTVCghdGVzdCgiYSIsIHVwcGVyKSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KCJBIiwgeGRpZ2l0KSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KCIwIiwgeGRpZ2l0KSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KCJmIiwgeGRpZ2l0KSk7CiAgICAgICAgQk9PU1RfVEVTVCghdGVzdCgiZyIsIHhkaWdpdCkpOwogICAgfQoKICAgIHsKICAgICAgICB1c2luZyBuYW1lc3BhY2UgYm9vc3Q6OnNwaXJpdDo6YXNjaWk7CiAgICAgICAgQk9PU1RfVEVTVCghdGVzdCgiMSIsIH5hbG51bSkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdCgiICIsIH5hbG51bSkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdCgiMSIsIH5hbHBoYSkpOwogICAgICAgIEJPT1NUX1RFU1QoIXRlc3QoIngiLCB+YWxwaGEpKTsKICAgICAgICBCT09TVF9URVNUKCF0ZXN0KCIgIiwgfmJsYW5rKSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KCJ4IiwgfmJsYW5rKSk7CiAgICAgICAgQk9PU1RfVEVTVCghdGVzdCgiMSIsIH5kaWdpdCkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdCgieCIsIH5kaWdpdCkpOwogICAgICAgIEJPT1NUX1RFU1QoIXRlc3QoImEiLCB+bG93ZXIpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoIkEiLCB+bG93ZXIpKTsKICAgICAgICBCT09TVF9URVNUKCF0ZXN0KCIhIiwgfnB1bmN0KSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KCJ4IiwgfnB1bmN0KSk7CiAgICAgICAgQk9PU1RfVEVTVCghdGVzdCgiICIsIH5zcGFjZSkpOwogICAgICAgIEJPT1NUX1RFU1QoIXRlc3QoIlxuIiwgfnNwYWNlKSk7CiAgICAgICAgQk9PU1RfVEVTVCghdGVzdCgiXHIiLCB+c3BhY2UpKTsKICAgICAgICBCT09TVF9URVNUKCF0ZXN0KCJcdCIsIH5zcGFjZSkpOwogICAgICAgIEJPT1NUX1RFU1QoIXRlc3QoIkEiLCB+dXBwZXIpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoImEiLCB+dXBwZXIpKTsKICAgICAgICBCT09TVF9URVNUKCF0ZXN0KCJBIiwgfnhkaWdpdCkpOwogICAgICAgIEJPT1NUX1RFU1QoIXRlc3QoIjAiLCB+eGRpZ2l0KSk7CiAgICAgICAgQk9PU1RfVEVTVCghdGVzdCgiZiIsIH54ZGlnaXQpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoImciLCB+eGRpZ2l0KSk7CiAgICB9CgogICAgewogICAgICAgIC8vIHdlIHVzZSB0aGUgaG9pc3RlZCBxaSBuYW1lc3BhY2UgdGhpcyB0aW1lCiAgICAgICAgdXNpbmcgbmFtZXNwYWNlIGJvb3N0OjpzcGlyaXQ6OnFpOjppc284ODU5XzE7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KCIxIiwgYWxudW0pKTsKICAgICAgICBCT09TVF9URVNUKCF0ZXN0KCIgIiwgYWxudW0pKTsKICAgICAgICBCT09TVF9URVNUKCF0ZXN0KCIxIiwgYWxwaGEpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoIngiLCBhbHBoYSkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdCgiICIsIGJsYW5rKSk7CiAgICAgICAgQk9PU1RfVEVTVCghdGVzdCgieCIsIGJsYW5rKSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KCIxIiwgZGlnaXQpKTsKICAgICAgICBCT09TVF9URVNUKCF0ZXN0KCJ4IiwgZGlnaXQpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoImEiLCBsb3dlcikpOwogICAgICAgIEJPT1NUX1RFU1QoIXRlc3QoIkEiLCBsb3dlcikpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdCgiISIsIHB1bmN0KSk7CiAgICAgICAgQk9PU1RfVEVTVCghdGVzdCgieCIsIHB1bmN0KSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KCIgIiwgc3BhY2UpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoIlxuIiwgc3BhY2UpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoIlxyIiwgc3BhY2UpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoIlx0Iiwgc3BhY2UpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoIkEiLCB1cHBlcikpOwogICAgICAgIEJPT1NUX1RFU1QoIXRlc3QoImEiLCB1cHBlcikpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdCgiQSIsIHhkaWdpdCkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdCgiMCIsIHhkaWdpdCkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdCgiZiIsIHhkaWdpdCkpOwogICAgICAgIEJPT1NUX1RFU1QoIXRlc3QoImciLCB4ZGlnaXQpKTsKCi8vIG5lZWRlZCBmb3IgVkM3LjEgb25seQojaWYgQk9PU1RfV09SS0FST1VORChCT09TVF9NU1ZDLCBCT09TVF9URVNURURfQVQoMTMxMCkpCiNwcmFnbWEgc2V0bG9jYWxlKCJnZXJtYW4iKQojZW5kaWYKICAgICAgICBCT09TVF9URVNUKHRlc3QoIukiLCBhbHBoYSkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdCgi6SIsIGxvd2VyKSk7CiAgICAgICAgQk9PU1RfVEVTVCghdGVzdCgi6SIsIHVwcGVyKSk7CiNpZiBCT09TVF9XT1JLQVJPVU5EKEJPT1NUX01TVkMsIEJPT1NUX1RFU1RFRF9BVCgxMzEwKSkKI3ByYWdtYSBzZXRsb2NhbGUoIiIpCiNlbmRpZgogICAgfQoKICAgIHsKICAgICAgICB1c2luZyBuYW1lc3BhY2UgYm9vc3Q6OnNwaXJpdDo6c3RhbmRhcmQ7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KCIxIiwgYWxudW0pKTsKICAgICAgICBCT09TVF9URVNUKCF0ZXN0KCIgIiwgYWxudW0pKTsKICAgICAgICBCT09TVF9URVNUKCF0ZXN0KCIxIiwgYWxwaGEpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoIngiLCBhbHBoYSkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdCgiICIsIGJsYW5rKSk7CiAgICAgICAgQk9PU1RfVEVTVCghdGVzdCgieCIsIGJsYW5rKSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KCIxIiwgZGlnaXQpKTsKICAgICAgICBCT09TVF9URVNUKCF0ZXN0KCJ4IiwgZGlnaXQpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoImEiLCBsb3dlcikpOwogICAgICAgIEJPT1NUX1RFU1QoIXRlc3QoIkEiLCBsb3dlcikpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdCgiISIsIHB1bmN0KSk7CiAgICAgICAgQk9PU1RfVEVTVCghdGVzdCgieCIsIHB1bmN0KSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KCIgIiwgc3BhY2UpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoIlxuIiwgc3BhY2UpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoIlxyIiwgc3BhY2UpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoIlx0Iiwgc3BhY2UpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoIkEiLCB1cHBlcikpOwogICAgICAgIEJPT1NUX1RFU1QoIXRlc3QoImEiLCB1cHBlcikpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdCgiQSIsIHhkaWdpdCkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdCgiMCIsIHhkaWdpdCkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdCgiZiIsIHhkaWdpdCkpOwogICAgICAgIEJPT1NUX1RFU1QoIXRlc3QoImciLCB4ZGlnaXQpKTsKICAgIH0KCiAgICB7CiAgICAgICAgdXNpbmcgbmFtZXNwYWNlIGJvb3N0OjpzcGlyaXQ6OnN0YW5kYXJkX3dpZGU7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KEwiMSIsIGFsbnVtKSk7CiAgICAgICAgQk9PU1RfVEVTVCghdGVzdChMIiAiLCBhbG51bSkpOwogICAgICAgIEJPT1NUX1RFU1QoIXRlc3QoTCIxIiwgYWxwaGEpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoTCJ4IiwgYWxwaGEpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoTCIgIiwgYmxhbmspKTsKICAgICAgICBCT09TVF9URVNUKCF0ZXN0KEwieCIsIGJsYW5rKSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KEwiMSIsIGRpZ2l0KSk7CiAgICAgICAgQk9PU1RfVEVTVCghdGVzdChMIngiLCBkaWdpdCkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdChMImEiLCBsb3dlcikpOwogICAgICAgIEJPT1NUX1RFU1QoIXRlc3QoTCJBIiwgbG93ZXIpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoTCIhIiwgcHVuY3QpKTsKICAgICAgICBCT09TVF9URVNUKCF0ZXN0KEwieCIsIHB1bmN0KSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KEwiICIsIHNwYWNlKSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KEwiXG4iLCBzcGFjZSkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdChMIlxyIiwgc3BhY2UpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoTCJcdCIsIHNwYWNlKSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KEwiQSIsIHVwcGVyKSk7CiAgICAgICAgQk9PU1RfVEVTVCghdGVzdChMImEiLCB1cHBlcikpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdChMIkEiLCB4ZGlnaXQpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoTCIwIiwgeGRpZ2l0KSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KEwiZiIsIHhkaWdpdCkpOwogICAgICAgIEJPT1NUX1RFU1QoIXRlc3QoTCJnIiwgeGRpZ2l0KSk7CiAgICB9CgogICAgewogICAgICAgIHVzaW5nIG5hbWVzcGFjZSBib29zdDo6c3Bpcml0Ojp1bmljb2RlOwogICAgICAgIEJPT1NUX1RFU1QodGVzdChMIjEiLCBhbG51bSkpOwogICAgICAgIEJPT1NUX1RFU1QoIXRlc3QoTCIgIiwgYWxudW0pKTsKICAgICAgICBCT09TVF9URVNUKCF0ZXN0KEwiMSIsIGFscGhhKSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KEwieCIsIGFscGhhKSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KEwiICIsIGJsYW5rKSk7CiAgICAgICAgQk9PU1RfVEVTVCghdGVzdChMIngiLCBibGFuaykpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdChMIjEiLCBkaWdpdCkpOwogICAgICAgIEJPT1NUX1RFU1QoIXRlc3QoTCJ4IiwgZGlnaXQpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoTCJhIiwgbG93ZXIpKTsKICAgICAgICBCT09TVF9URVNUKCF0ZXN0KEwiQSIsIGxvd2VyKSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KEwiISIsIHB1bmN0KSk7CiAgICAgICAgQk9PU1RfVEVTVCghdGVzdChMIngiLCBwdW5jdCkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdChMIiAiLCBzcGFjZSkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdChMIlxuIiwgc3BhY2UpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoTCJcciIsIHNwYWNlKSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KEwiXHQiLCBzcGFjZSkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdChMIkEiLCB1cHBlcikpOwogICAgICAgIEJPT1NUX1RFU1QoIXRlc3QoTCJhIiwgdXBwZXIpKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoTCJBIiwgeGRpZ2l0KSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KEwiMCIsIHhkaWdpdCkpOwogICAgICAgIEJPT1NUX1RFU1QodGVzdChMImYiLCB4ZGlnaXQpKTsKICAgICAgICBCT09TVF9URVNUKCF0ZXN0KEwiZyIsIHhkaWdpdCkpOwoKLy8gbmVlZGVkIGZvciBWQzcuMSBvbmx5CiNpZiBCT09TVF9XT1JLQVJPVU5EKEJPT1NUX01TVkMsIEJPT1NUX1RFU1RFRF9BVCgxMzEwKSkKI3ByYWdtYSBzZXRsb2NhbGUoImdlcm1hbiIpCiNlbmRpZgogICAgICAgIEJPT1NUX1RFU1QodGVzdCgi6SIsIGFscGhhKSk7CiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KCLpIiwgbG93ZXIpKTsKICAgICAgICBCT09TVF9URVNUKCF0ZXN0KCLpIiwgdXBwZXIpKTsKCiNpZiBCT09TVF9XT1JLQVJPVU5EKEJPT1NUX01TVkMsIEJPT1NUX1RFU1RFRF9BVCgxMzEwKSkKI3ByYWdtYSBzZXRsb2NhbGUoIiIpCiNlbmRpZgogICAgfQoKICAgIHsgICAvLyB0ZXN0IGF0dHJpYnV0ZSBleHRyYWN0aW9uCiAgICAgICAgdXNpbmcgYm9vc3Q6OnNwaXJpdDo6cWk6OmRvbWFpbjsKICAgICAgICB1c2luZyBib29zdDo6c3Bpcml0Ojp0cmFpdHM6OmF0dHJpYnV0ZV9vZjsKICAgICAgICB1c2luZyBib29zdDo6c3Bpcml0Ojppc284ODU5XzE6OmFscGhhOwogICAgICAgIHVzaW5nIGJvb3N0OjpzcGlyaXQ6Omlzbzg4NTlfMTo6YWxwaGFfdHlwZTsKICAgICAgICB1c2luZyBib29zdDo6c3Bpcml0OjpyZXN1bHRfb2Y6OmNvbXBpbGU7CgogICAgICAgIEJPT1NUX1NUQVRJQ19BU1NFUlQoKAogICAgICAgICAgICBib29zdDo6aXNfc2FtZTwKICAgICAgICAgICAgICAgIGF0dHJpYnV0ZV9vZjxjb21waWxlPGRvbWFpbiwgYWxwaGFfdHlwZT46OnR5cGU+Ojp0eXBlCiAgICAgICAgICAgICAgLCB1bnNpZ25lZCBjaGFyPjo6dmFsdWUpKTsKCiAgICAgICAgaW50IGF0dHIgPSAwOwogICAgICAgIEJPT1NUX1RFU1QodGVzdF9hdHRyKCJhIiwgYWxwaGEsIGF0dHIpKTsKICAgICAgICBCT09TVF9URVNUKGF0dHIgPT0gJ2EnKTsKICAgIH0KCiAgICB7ICAgLy8gdGVzdCBhdHRyaWJ1dGUgZXh0cmFjdGlvbgogICAgICAgIHVzaW5nIGJvb3N0OjpzcGlyaXQ6Omlzbzg4NTlfMTo6YWxwaGE7CiAgICAgICAgdXNpbmcgYm9vc3Q6OnNwaXJpdDo6aXNvODg1OV8xOjpzcGFjZTsKICAgICAgICBjaGFyIGF0dHIgPSAwOwogICAgICAgIEJPT1NUX1RFU1QodGVzdF9hdHRyKCIgICAgIGEiLCBhbHBoYSwgYXR0ciwgc3BhY2UpKTsKICAgICAgICBCT09TVF9URVNUKGF0dHIgPT0gJ2EnKTsKICAgIH0KCiAgICB7ICAgLy8gdGVzdCBhY3Rpb24KCiAgICAgICAgdXNpbmcgbmFtZXNwYWNlIGJvb3N0OjpzcGlyaXQ6OmFzY2lpOwogICAgICAgIHVzaW5nIGJvb3N0OjpwaG9lbml4OjpyZWY7CiAgICAgICAgdXNpbmcgYm9vc3Q6OnNwaXJpdDo6XzE7CiAgICAgICAgY2hhciBjaDsKCiAgICAgICAgQk9PU1RfVEVTVCh0ZXN0KCJ4IiwgYWxudW1bcmVmKGNoKSA9IF8xXSkpOwogICAgICAgIEJPT1NUX1RFU1QoY2ggPT0gJ3gnKTsKICAgICAgICBCT09TVF9URVNUKHRlc3QoIiAgIEEiLCBhbG51bVtyZWYoY2gpID0gXzFdLCBzcGFjZSkpOwogICAgICAgIEJPT1NUX1RFU1QoY2ggPT0gJ0EnKTsKICAgIH0KCiAgICByZXR1cm4gYm9vc3Q6OnJlcG9ydF9lcnJvcnMoKTsKfQo=