A/MNClFcrFFjAAAAAAAAAAADAAAAQAAAAHMjAQAAZAAAZAEAbAAAWgAAZAAAZAEAbAEAWgEAZAAAZAEAbAIAWgIAZAAAZAEAbAMAWgMAZAAAZAEAbAQAWgQAZAAAZAEAbAUAWgUAZAAAZAIAbAYAbQcAWgcAAWQAAGQDAGwIAG0JAFoJAAFkBABlAwBqCgBmAQBkBQCEAACDAABZWgsAZAYAZQwAZgEAZAcAhAAAgwAAWVoNAGQIAIQAAFoOAGQJAIQAAFoPAGQKAIQAAFoQAGQLAIQAAFoRAGUAAGoSAGQMAIMBAFoTAGQNAGUTAGoUAARVZA4AhAAAWhUAZA8AhAAAWhYAZBAAZQMAagoAZgEAZBEAhAAAgwAAWVoXAGQSAIQAAFoYAGUZAGQTAGsCAHIfAWUYAIMAAAFuAABkAQBTKBQAAABp/////04oAQAAAHQMAAAAdGVzdF9zdXBwb3J0KAEAAAB0CgAAAF9GYWtlSW5wdXR0CwAAAFBkYlRlc3RDYXNlYwAAAAAAAAAAAQAAAEIAAABzGgAAAGUAAFoBAGQAAIQAAFoCAGQBAIQAAFoDAFJTKAIAAABjAwAAAAkAAAAJAAAAQwAAAHPJAAAAZAEAfQMAdAAAfAMAZAIAgwIAjx0AfQQAfAQAagEAdAIAagMAfAEAgwEAgwEAAVdkAwBRWHwAAGoEAHQFAGoGAHwDAIMCAAF0BwBqCABkBABkBQB8AwBnBAB9BQBkAwAEfQYAfQcAdAoAagsAfAUAZAYAdAoAagwAZAcAdAoAagwAZAgAdAoAag0AgwEDfQgAfAgAag4AfAIAgwEAXAIAfQYAfQcAfAgAag8AahAAgwAAAXwIAGoRAGoQAIMAAAF8BgB8BwBmAgBTKAkAAABzMwAAAFJ1biAnc2NyaXB0JyBsaW5lcyB3aXRoIHBkYiBhbmQgdGhlIHBkYiAnY29tbWFuZHMnLnMHAAAAbWFpbi5weXQBAAAAd05zAgAAAC1tdAMAAABwZGJ0BgAAAHN0ZG91dHQFAAAAc3RkaW50BgAAAHN0ZGVycigSAAAAdAQAAABvcGVudAUAAAB3cml0ZXQIAAAAdGV4dHdyYXB0BgAAAGRlZGVudHQKAAAAYWRkQ2xlYW51cFIAAAAAdAYAAAB1bmxpbmt0AwAAAHN5c3QKAAAAZXhlY3V0YWJsZXQEAAAATm9uZXQKAAAAc3VicHJvY2Vzc3QFAAAAUG9wZW50BAAAAFBJUEV0BgAAAFNURE9VVHQLAAAAY29tbXVuaWNhdGVSBQAAAHQFAAAAY2xvc2VSBgAAACgJAAAAdAQAAABzZWxmdAYAAABzY3JpcHR0CAAAAGNvbW1hbmRzdAgAAABmaWxlbmFtZXQBAAAAZnQDAAAAY21kUgUAAABSBwAAAHQEAAAAcHJvYygAAAAAKAAAAABzVQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF9wZGIucHl0BwAAAHJ1bl9wZGISAAAAcxoAAAAAAgYBEgEcARMBFQEKARUBCQEMAhUBDQENAWMBAAAABwAAAAcAAABDAAAAc5UAAABkAQB9AQBkAgB9AgBkAwB9AwB0AABkBABkBQCDAgCPHQB9BAB8BABqAQB0AgBqAwB8AwCDAQCDAQABV2QAAFFYfAAAagQAdAUAagYAZAQAgwIAAXwAAGoHAHwBAHwCAIMCAFwCAH0FAH0GAHwAAGoIAHQJAGQGAIQAAHwFAGoKAIMAAESDAQCDAQBkBwCDAgABZAAAUygIAAAATnPjAAAACiAgICAgICAgICAgIGZyb20gYmFyIGltcG9ydCBiYXIKCiAgICAgICAgICAgIGRlZiBmb28oKToKICAgICAgICAgICAgICAgIGJhcigpCgogICAgICAgICAgICBkZWYgbm9wZSgpOgogICAgICAgICAgICAgICAgcGFzcwoKICAgICAgICAgICAgZGVmIGZvb2JhcigpOgogICAgICAgICAgICAgICAgZm9vKCkKICAgICAgICAgICAgICAgIG5vcGUoKQoKICAgICAgICAgICAgZm9vYmFyKCkKICAgICAgICBzhwAAAAogICAgICAgICAgICBmcm9tIGJhciBpbXBvcnQgYmFyCiAgICAgICAgICAgIGJyZWFrIGJhcgogICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICBzdGVwCiAgICAgICAgICAgIHN0ZXAKICAgICAgICAgICAgcXVpdAogICAgICAgIHM1AAAACiAgICAgICAgICAgIGRlZiBiYXIoKToKICAgICAg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dGlvbigpOgogICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKCkuc2V0X3RyYWNlKCkKICAgIC4uLiAgICAgcHJpbnQoMSkKICAgIC4uLiAgICAgcHJpbnQoMikKICAgIC4uLiAgICAgcHJpbnQoMykKICAgIC4uLiAgICAgcHJpbnQoNCkKCiAgICBGaXJzdCwgbmVlZCB0byBjbGVhciBiZGIgc3RhdGUgdGhhdCBtaWdodCBiZSBsZWZ0IG92ZXIgZnJvbSBwcmV2aW91cyB0ZXN0cy4KICAgIE90aGVyd2lzZSwgdGhlIG5ldyBicmVha3BvaW50cyBtaWdodCBnZXQgYXNzaWduZWQgZGlmZmVyZW50IG51bWJlcnMuCgogICAgPj4+IGZyb20gYmRiIGltcG9ydCBCcmVha3BvaW50CiAgICA+Pj4gQnJlYWtwb2ludC5uZXh0ID0gMQogICAgPj4+IEJyZWFrcG9pbnQuYnBsaXN0ID0ge30KICAgID4+PiBCcmVha3BvaW50LmJwYnludW1iZXIgPSBbTm9uZV0KCiAgICBOb3cgdGVzdCB0aGUgYnJlYWtwb2ludCBjb21tYW5kcy4gIE5PUk1BTElaRV9XSElURVNQQUNFIGlzIG5lZWRlZCBiZWNhdXNlCiAgICB0aGUgYnJlYWtwb2ludCBsaXN0IG91dHB1dHMgYSB0YWIgZm9yIHRoZSAic3RvcCBvbmx5IiBhbmQgImlnbm9yZSBuZXh0IgogICAgbGluZXMsIHdoaWNoIHdlIGRvbid0IHdhbnQgdG8gcHV0IGluIGhlcmUuCgogICAgPj4+IHdpdGggUGRiVGVzdElucHV0KFsgICMgZG9jdGVzdDogK05PUk1BTElaRV9XSElURVNQQUNFCiAgICAuLi4gICAgICdicmVhayAzJywKICAgIC4uLiAgICAgJ2Rpc2FibGUgMScsCiAgICAuLi4gICAgICdpZ25vcmUgMSAxMCcsCiAgICAuLi4gICAgICdjb25kaXRpb24gMSAxIDwgMicsCiAgICAuLi4gICAgICdicmVhayA0JywKICAgIC4uLiAgICAgJ2JyZWFrIDQnLAogICAgLi4uICAgICAnYnJlYWsnLAogICAgLi4uICAgICAnY2xlYXIgMycsCiAgICAuLi4gICAgICdicmVhaycsCiAgICAuLi4gICAgICdjb25kaXRpb24gMScsCiAgICAuLi4gICAgICdlbmFibGUgMScsCiAgICAuLi4gICAgICdjbGVhciAxJywKICAgIC4uLiAgICAgJ2NvbW1hbmRzIDInLAogICAgLi4uICAgICAncHJpbnQgNDInLAogICAgLi4uICAgICAnZW5kJywKICAgIC4uLiAgICAgJ2NvbnRpbnVlJywgICMgd2lsbCBzdG9wIGF0IGJyZWFrcG9pbnQgMiAobGluZSA0KQogICAgLi4uICAgICAnY2xlYXInLCAgICAgIyBjbGVhciBhbGwhCiAgICAuLi4gICAgICd5JywKICAgIC4uLiAgICAgJ3RicmVhayA1JywKICAgIC4uLiAgICAgJ2NvbnRpbnVlJywgICMgd2lsbCBzdG9wIGF0IHRlbXBvcmFyeSBicmVha3BvaW50CiAgICAuLi4gICAgICdicmVhaycsICAgICAjIG1ha2Ugc3VyZSBicmVha3BvaW50IGlzIGdvbmUKICAgIC4uLiAgICAgJ2NvbnRpbnVlJywKICAgIC4uLiBdKToKICAgIC4uLiAgICB0ZXN0X2Z1bmN0aW9uKCkKICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X3BkYi50ZXN0X3BkYl9icmVha3BvaW50X2NvbW1hbmRzWzBdPigzKXRlc3RfZnVuY3Rpb24oKQogICAgLT4gcHJpbnQoMSkKICAgIChQZGIpIGJyZWFrIDMKICAgIEJyZWFrcG9pbnQgMSBhdCA8ZG9jdGVzdCB0ZXN0LnRlc3RfcGRiLnRlc3RfcGRiX2JyZWFrcG9pbnRfY29tbWFuZHNbMF0+OjMKICAgIChQZGIpIGRpc2FibGUgMQogICAgKFBkYikgaWdub3JlIDEgMTAKICAgIFdpbGwgaWdub3JlIG5leHQgMTAgY3Jvc3NpbmdzIG9mIGJyZWFrcG9pbnQgMS4KICAgIChQZGIpIGNvbmRpdGlvbiAxIDEgPCAyCiAgICAoUGRiKSBicmVhayA0CiAgICBCcmVha3BvaW50IDIgYXQgPGRvY3Rlc3QgdGVzdC50ZXN0X3BkYi50ZXN0X3BkYl9icmVha3BvaW50X2NvbW1hbmRzWzBdPjo0CiAgICAoUGRiKSBicmVhayA0CiAgICBCcmVha3BvaW50IDMgYXQgPGRvY3Rlc3QgdGVzdC50ZXN0X3BkYi50ZXN0X3BkYl9icmVha3BvaW50X2NvbW1hbmRzWzBdPjo0CiAgICAoUGRiKSBicmVhawogICAgTnVtIFR5cGUgICAgICAgICBEaXNwIEVuYiAgIFdoZXJlCiAgICAxICAgYnJlYWtwb2ludCAgIGtlZXAgbm8gICAgYXQgPGRvY3Rlc3QgdGVzdC50ZXN0X3BkYi50ZXN0X3BkYl9icmVha3BvaW50X2NvbW1hbmRzWzBdPjozCiAgICAgICAgICAgIHN0b3Agb25seSBpZiAxIDwgMgogICAgICAgICAgICBpZ25vcmUgbmV4dCAxMCBoaXRzCiAgICAyICAgYnJlYWtwb2ludCAgIGtlZXAgeWVzICAgYXQgPGRvY3Rlc3QgdGVzdC50ZXN0X3BkYi50ZXN0X3BkYl9icmVha3BvaW50X2NvbW1hbmRzWzBdPjo0CiAgICAzICAgYnJlYWtwb2ludCAgIGtlZXAgeWVzICAgYXQgPGRvY3Rlc3QgdGVzdC50ZXN0X3BkYi50ZXN0X3BkYl9icmVha3BvaW50X2NvbW1hbmRzWzBdPjo0CiAgICAoUGRiKSBjbGVhciAzCiAgICBEZWxldGVkIGJyZWFrcG9pbnQgMwogICAgKFBkYikgYnJlYWsKICAgIE51bSBUeXBlICAgICAgICAgRGlzcCBFbmIgICBXaGVyZQogICAgMSAgIGJyZWFrcG9pbnQgICBrZWVwIG5vICAgIGF0IDxkb2N0ZXN0IHRlc3QudGVzdF9wZGIudGVzdF9wZGJfYnJlYWtwb2ludF9jb21tYW5kc1swXT46MwogICAgICAgICAgICBzdG9wIG9ubHkgaWYgMSA8IDIKICAgICAgICAgICAgaWdub3JlIG5leHQgMTAgaGl0cwogICAgMiAgIGJyZWFrcG9pbnQgICBrZWVwIHllcyAgIGF0IDxkb2N0ZXN0IHRlc3QudGVzdF9wZGIudGVzdF9wZGJfYnJlYWtwb2ludF9jb21tYW5kc1swXT46NAogICAgKFBkYikgY29uZGl0aW9uIDEKICAgIEJyZWFrcG9pbnQgMSBpcyBub3cgdW5jb25kaXRpb25hbC4KICAgIChQZGIpIGVuYWJsZSAxCiAgICAoUGRiKSBjbGVhciAxCiAgICBEZWxldGVkIGJyZWFrcG9pbnQgMQogICAgKFBkYikgY29tbWFuZHMgMgogICAgKGNvbSkgcHJpbnQgNDIKICAgIChjb20pIGVuZAogICAgKFBkYikgY29udGludWUKICAgIDEKICAgIDQyCiAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9wZGIudGVzdF9wZGJfYnJlYWtwb2ludF9jb21tYW5kc1swXT4oNCl0ZXN0X2Z1bmN0aW9uKCkKICAgIC0+IHByaW50KDIpCiAgICAoUGRiKSBjbGVhcgogICAgQ2xlYXIgYWxsIGJyZWFrcz8geQogICAgKFBkYikgdGJyZWFrIDUKICAgIEJyZWFrcG9pbnQgNCBhdCA8ZG9jdGVzdCB0ZXN0LnRlc3RfcGRiLnRlc3RfcGRiX2JyZWFrcG9pbnRfY29tbWFuZHNbMF0+OjUKICAgIChQZGIpIGNvbnRpbnVlCiAgICAyCiAgICBEZWxldGVkIGJyZWFrcG9pbnQgNAogICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfcGRiLnRlc3RfcGRiX2JyZWFrcG9pbnRfY29tbWFuZHNbMF0+KDUpdGVzdF9mdW5jdGlvbigpCiAgICAtPiBwcmludCgzKQogICAgKFBkYikgYnJlYWsKICAgIChQZGIpIGNvbnRpbnVlCiAgICAzCiAgICA0CiAgICBOKAAAAAAoAAAAACgAAAAAKAAAAABzVQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF9wZGIucHl0HAAAAHRlc3RfcGRiX2JyZWFrcG9pbnRfY29tbWFuZHN1AAAAcwAAAABjAAAAAAAAAAABAAAAQwAAAHMEAAAAZAEAUygCAAAAczcCAABUaGlzIGlsbHVzdHJhdGVzIHRoZSBzaW1wbGUgY2FzZSBvZiBtb2R1bGUgc2tpcHBpbmcuCgogICAgPj4+IGRlZiBza2lwX21vZHVsZSgpOgogICAgLi4uICAgICBpbXBvcnQgc3RyaW5nCiAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bJ3N0cmluZyonXSkuc2V0X3RyYWNlKCkKICAgIC4uLiAgICAgc3RyaW5nLmxvd2VyKCdGT08nKQoKICAgID4+PiB3aXRoIFBkYlRlc3RJbnB1dChbCiAgICAuLi4gICAgICdzdGVwJywKICAgIC4uLiAgICAgJ2NvbnRpbnVlJywKICAgIC4uLiBdKToKICAgIC4uLiAgICAgc2tpcF9tb2R1bGUoKQogICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfcGRiLnRlc3RfcGRiX3NraXBfbW9kdWxlc1swXT4oNClza2lwX21vZHVsZSgpCiAgICAtPiBzdHJpbmcubG93ZXIoJ0ZPTycpCiAgICAoUGRiKSBzdGVwCiAgICAtLVJldHVybi0tCiAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9wZGIudGVzdF9wZGJfc2tpcF9tb2R1bGVzWzBdPig0KXNraXBfbW9kdWxlKCktPk5vbmUKICAgIC0+IHN0cmluZy5sb3dlcignRk9PJykKICAgIChQZGIpIGNvbnRpbnVlCiAgICBOKAAAAAAoAAAAACgAAAAAKAAAAABzVQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF9wZGIucHl0FQAAAHRlc3RfcGRiX3NraXBfbW9kdWxlc9wAAABzAAAAAHQOAAAAbW9kdWxlX3RvX3NraXBzNgAAAGRlZiBmb29fcG9ueShjYWxsYmFjayk6IHggPSAxOyBjYWxsYmFjaygpOyByZXR1cm4gTm9uZWMAAAAAAAAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABzJAUAAFRoaXMgaWxsdXN0cmF0ZXMgc2tpcHBpbmcgb2YgbW9kdWxlcyB0aGF0IGNhbGwgaW50byBvdGhlciBjb2RlLgoKICAgID4+PiBkZWYgc2tpcF9tb2R1bGUoKToKICAgIC4uLiAgICAgZGVmIGNhbGxiYWNrKCk6CiAgICAuLi4gICAgICAgICByZXR1cm4gTm9uZQogICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHNraXA9Wydtb2R1bGVfdG9fc2tpcConXSkuc2V0X3RyYWNlKCkKICAgIC4uLiAgICAgbW9kLmZvb19wb255KGNhbGxiYWNrKQoKICAgID4+PiB3aXRoIFBkYlRlc3RJbnB1dChbCiAgICAuLi4gICAgICdzdGVwJywKICAgIC4uLiAgICAgJ3N0ZXAnLAogICAgLi4uICAgICAnc3RlcCcsCiAgICAuLi4gICAgICdzdGVwJywKICAgIC4uLiAgICAgJ3N0ZXAnLAogICAgLi4uICAgICAnY29udGludWUnLAogICAgLi4uIF0pOgogICAgLi4uICAgICBza2lwX21vZHVsZSgpCiAgICAuLi4gICAgIHBhc3MgICMgcHJvdmlkZXMgc29tZXRoaW5nIHRvICJzdGVwIiB0bwogICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfcGRiLnRlc3RfcGRiX3NraXBfbW9kdWxlc193aXRoX2NhbGxiYWNrWzBdPig1KXNraXBfbW9kdWxlKCkKICAgIC0+IG1vZC5mb29fcG9ueShjYWxsYmFjaykKICAgIChQZGIpIHN0ZXAKICAgIC0tQ2FsbC0tCiAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9wZGIudGVzdF9wZGJfc2tpcF9tb2R1bGVzX3dpdGhfY2FsbGJhY2tbMF0+KDIpY2FsbGJhY2soKQogICAgLT4gZGVmIGNhbGxiYWNrKCk6CiAgICAoUGRiKSBzdGVwCiAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9wZGIudGVzdF9wZGJfc2tpcF9tb2R1bGVzX3dpdGhfY2FsbGJhY2tbMF0+KDMpY2FsbGJhY2soKQogICAgLT4gcmV0dXJuIE5vbmUKICAgIChQZGIpIHN0ZXAKICAgIC0tUmV0dXJuLS0KICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X3BkYi50ZXN0X3BkYl9za2lwX21vZHVsZXNfd2l0aF9jYWxsYmFja1swXT4oMyljYWxsYmFjaygpLT5Ob25lCiAgICAtPiByZXR1cm4gTm9uZQogICAgKFBkYikgc3RlcAogICAgLS1SZXR1cm4tLQogICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfcGRiLnRlc3RfcGRiX3NraXBfbW9kdWxlc193aXRoX2NhbGxiYWNrWzBdPig1KXNraXBfbW9kdWxlKCktPk5vbmUKICAgIC0+IG1vZC5mb29fcG9ueShjYWxsYmFjaykKICAgIChQZGIpIHN0ZXAKICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X3BkYi50ZXN0X3BkYl9za2lwX21vZHVsZXNfd2l0aF9jYWxsYmFja1sxXT4oMTApPG1vZHVsZT4oKQogICAgLT4gcGFzcyAgIyBwcm92aWRlcyBzb21ldGhpbmcgdG8gInN0ZXAiIHRvCiAgICAoUGRiKSBjb250aW51ZQogICAgTigAAAAAKAAAAAAoAAAAACgAAAAAc1UAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfcGRiLnB5dCMAAAB0ZXN0X3BkYl9za2lwX21vZHVsZXNfd2l0aF9jYWxsYmFja/gAAABzAAAAAGMAAAAAAAAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABz1gUAAFRlc3QgdGhhdCAiY29udGludWUiIGFuZCAibmV4dCIgd29yayBwcm9wZXJseSBpbiBib3R0b20gZnJhbWUgKGlzc3VlICM1Mjk0KS4KCiAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKICAgIC4uLiAgICAgaW1wb3J0IHBkYiwgc3lzOyBpbnN0ID0gcGRiLlBkYigpCiAgICAuLi4gICAgIGluc3Quc2V0X3RyYWNlKCkKICAgIC4uLiAgICAgaW5zdC5ib3RmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoKSAgIyBoYWNrZXJ5IHRvIGdldCB0aGUgcmlnaHQgYm90ZnJhbWUKICAgIC4uLiAgICAgcHJpbnQoMSkKICAgIC4uLiAgICAgcHJpbnQoMikKICAgIC4uLiAgICAgcHJpbnQoMykKICAgIC4uLiAgICAgcHJpbnQoNCkKCiAgICBGaXJzdCwgbmVlZCB0byBjbGVhciBiZGIgc3RhdGUgdGhhdCBtaWdodCBiZSBsZWZ0IG92ZXIgZnJvbSBwcmV2aW91cyB0ZXN0cy4KICAgIE90aGVyd2lzZSwgdGhlIG5ldyBicmVha3BvaW50cyBtaWdodCBnZXQgYXNzaWduZWQgZGlmZmVyZW50IG51bWJlcnMuCgogICAgPj4+IGZyb20gYmRiIGltcG9ydCBCcmVha3BvaW50CiAgICA+Pj4gQnJlYWtwb2ludC5uZXh0ID0gMQogICAgPj4+IEJyZWFrcG9pbnQuYnBsaXN0ID0ge30KICAgID4+PiBCcmVha3BvaW50LmJwYnludW1iZXIgPSBbTm9uZV0KCiAgICA+Pj4gd2l0aCBQZGJUZXN0SW5wdXQoWwogICAgLi4uICAgICAnbmV4dCcsCiAgICAuLi4gICAgICdicmVhayA3JywKICAgIC4uLiAgICAgJ2NvbnRpbnVlJywKICAgIC4uLiAgICAgJ25leHQnLAogICAgLi4uICAgICAnY29udGludWUnLAogICAgLi4uICAgICAnY29udGludWUnLAogICAgLi4uIF0pOgogICAgLi4uICAgIHRlc3RfZnVuY3Rpb24oKQogICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfcGRiLnRlc3RfcGRiX2NvbnRpbnVlX2luX2JvdHRvbWZyYW1lWzBdPig0KXRlc3RfZnVuY3Rpb24oKQogICAgLT4gaW5zdC5ib3RmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoKSAgIyBoYWNrZXJ5IHRvIGdldCB0aGUgcmlnaHQgYm90ZnJhbWUKICAgIChQZGIpIG5leHQKICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X3BkYi50ZXN0X3BkYl9jb250aW51ZV9pbl9ib3R0b21mcmFtZVswXT4oNSl0ZXN0X2Z1bmN0aW9uKCkKICAgIC0+IHByaW50KDEpCiAgICAoUGRiKSBicmVhayA3CiAgICBCcmVha3BvaW50IDEgYXQgPGRvY3Rlc3QgdGVzdC50ZXN0X3BkYi50ZXN0X3BkYl9jb250aW51ZV9pbl9ib3R0b21mcmFtZVswXT46NwogICAgKFBkYikgY29udGludWUKICAgIDEKICAgIDIKICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X3BkYi50ZXN0X3BkYl9jb250aW51ZV9pbl9ib3R0b21mcmFtZVswXT4oNyl0ZXN0X2Z1bmN0aW9uKCkKICAgIC0+IHByaW50KDMpCiAgICAoUGRiKSBuZXh0CiAgICAzCiAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9wZGIudGVzdF9wZGJfY29udGludWVf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