{ "name": "ImmutableArrayContract", "structs": {}, "methods": [ { "name": "test_uint64_array", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_bool_array", "args": [ { "type": "uint64", "name": "length" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_fixed_size_tuple_array", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_fixed_size_named_tuple_array", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_dynamic_sized_tuple_array", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_dynamic_sized_named_tuple_array", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_implicit_conversion_log", "args": [ { "type": "uint64[]", "name": "arr" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_implicit_conversion_emit", "args": [ { "type": "uint64[]", "name": "arr" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [ { "name": "emit_test", "args": [ { "type": "uint64[]", "name": "field1" } ] } ], "recommendations": {} }, { "name": "test_nested_array", "args": [ { "type": "uint64", "name": "arr_to_add" }, { "type": "uint64[][]", "name": "arr" } ], "returns": { "type": "uint64[]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_bit_packed_tuples", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "sum_uints_and_lengths_and_trues", "args": [ { "type": "uint64[]", "name": "arr1" }, { "type": "bool[]", "name": "arr2" }, { "type": "(uint64,bool,bool)[]", "name": "arr3" }, { "type": "(uint64,string)[]", "name": "arr4" } ], "returns": { "type": "(uint64,uint64,uint64,uint64)" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_uint64_return", "args": [ { "type": "uint64", "name": "append" } ], "returns": { "type": "uint64[]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_bool_return", "args": [ { "type": "uint64", "name": "append" } ], "returns": { "type": "bool[]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_tuple_return", "args": [ { "type": "uint64", "name": "append" } ], "returns": { "type": "(uint64,bool,bool)[]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_dynamic_tuple_return", "args": [ { "type": "uint64", "name": "append" } ], "returns": { "type": "(uint64,string)[]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_convert_to_array_and_back", "args": [ { "type": "(uint64,bool,bool)[]", "name": "arr" }, { "type": "uint64", "name": "append" } ], "returns": { "type": "(uint64,bool,bool)[]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_concat_with_arc4_tuple", "args": [ { "type": "(uint64,uint64)", "name": "arg" } ], "returns": { "type": "uint64[]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_concat_with_native_tuple", "args": [ { "type": "(uint64,uint64)", "name": "arg" } ], "returns": { "type": "uint64[]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_dynamic_concat_with_arc4_tuple", "args": [ { "type": "(string,string)", "name": "arg" } ], "returns": { "type": "string[]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_dynamic_concat_with_native_tuple", "args": [ { "type": "(string,string)", "name": "arg" } ], "returns": { "type": "string[]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_concat_immutable_dynamic", "args": [ { "type": "(uint64,string)[]", "name": "imm1" }, { "type": "(uint64,string)[]", "name": "imm2" } ], "returns": { "type": "(uint64,string)[]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 0, "bytes": 10 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "a": { "keyType": "AVMString", "valueType": "uint64[]", "key": "YQ==" }, "g": { "keyType": "AVMString", "valueType": "bool[]", "key": "Zw==" }, "c": { "keyType": "AVMString", "valueType": "(uint64,uint64)[]", "key": "Yw==" }, "d": { "keyType": "AVMString", "valueType": "(uint64,bool,bool)[]", "key": "ZA==" }, "e": { "keyType": "AVMString", "valueType": "(uint64,byte[])[]", "key": "ZQ==" }, "f": { "keyType": "AVMString", "valueType": "(uint64,string)[]", "key": "Zg==" }, "bool2": { "keyType": "AVMString", "valueType": "(bool,bool)[]", "key": "Ym9vbDI=" }, "bool7": { "keyType": "AVMString", "valueType": "(uint64,bool,bool,bool,bool,bool,bool,bool,uint64)[]", "key": "Ym9vbDc=" }, "bool8": { "keyType": "AVMString", "valueType": "(uint64,bool,bool,bool,bool,bool,bool,bool,bool,uint64)[]", "key": "Ym9vbDg=" }, "bool9": { "keyType": "AVMString", "valueType": "(uint64,bool,bool,bool,bool,bool,bool,bool,bool,bool,uint64)[]", "key": "Ym9vbDk=" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 308, 312, 1436, 1527, 1555, 1583, 1616, 1776, 1840, 2099, 2180, 2245, 2410, 2493, 2556, 3285, 3406 ], "errorMessage": "Index access is out of bounds" }, { "pc": [ 216, 238, 281, 300, 327, 346, 369, 389, 409, 429, 449, 499, 511, 534, 549, 564, 576, 588, 600, 612, 628 ], "errorMessage": "OnCompletion is not NoOp" }, { "pc": [ 645 ], "errorMessage": "can only call when creating" }, { "pc": [ 219, 241, 284, 303, 330, 349, 372, 392, 412, 432, 452, 502, 514, 537, 552, 567, 579, 591, 603, 615, 631 ], "errorMessage": "can only call when not creating" }, { "pc": [ 2228, 2539 ], "errorMessage": "expected 1, 0" }, { "pc": [ 2140, 2451 ], "errorMessage": "expected 1st element to be correct" }, { "pc": [ 2148, 2461 ], "errorMessage": "expected 2nd element to be correct" }, { "pc": [ 2289, 2601 ], "errorMessage": "expected 4, 3" }, { "pc": [ 1538 ], "errorMessage": "expected element 0 to be False" }, { "pc": [ 1566 ], "errorMessage": "expected element 1 to be False" }, { "pc": [ 1593 ], "errorMessage": "expected element 2 to be True" }, { "pc": [ 1627 ], "errorMessage": "expected last element to be False" }, { "pc": [ 3462 ], "errorMessage": "expected string length to match index" }, { "pc": [ 3834 ], "errorMessage": "max array length exceeded" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAwIDEgMiA4CiAgICBieXRlY2Jsb2NrIDB4MDAgMHgxNTFmN2M3NSAweCAweDAwMDAgMHgwMDAyIDB4ODAgMHgwMDBhIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDIgMHgwMDAxNjEwMDAxNjIKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTo3NAogICAgLy8gY2xhc3MgSW1tdXRhYmxlQXJyYXlDb250cmFjdChhcmM0LkFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdAMjYKICAgIHB1c2hieXRlc3MgMHg0NGQ0MmY5OSAweDc0M2Q3MGVkIDB4MWM3ZTA0OTQgMHhhMmQ1ODYwYiAweGUwNWZjNTY0IDB4MWUwOTJiODMgMHgwMTMxMDI2MiAweGM4NjU0YTk4IDB4ODlkMTk2ZjggMHg2Y2I3Yzk5MSAweDk4OThiZjAyIDB4ZjZiNjFlZTggMHg2MGI4NmE3YiAweDczYWQyODNmIDB4NTI5ZGZhZTkgMHgyMDZkNTE0ZiAweGUwNjQ2NWUyIDB4ZWMwMzAwYTIgMHhlY2RmMTRhZiAweDUxMWFjYTY0IDB4Mjk4NTJlNGYgLy8gbWV0aG9kICJ0ZXN0X3VpbnQ2NF9hcnJheSgpdm9pZCIsIG1ldGhvZCAidGVzdF9ib29sX2FycmF5KHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJ0ZXN0X2ZpeGVkX3NpemVfdHVwbGVfYXJyYXkoKXZvaWQiLCBtZXRob2QgInRlc3RfZml4ZWRfc2l6ZV9uYW1lZF90dXBsZV9hcnJheSgpdm9pZCIsIG1ldGhvZCAidGVzdF9keW5hbWljX3NpemVkX3R1cGxlX2FycmF5KCl2b2lkIiwgbWV0aG9kICJ0ZXN0X2R5bmFtaWNfc2l6ZWRfbmFtZWRfdHVwbGVfYXJyYXkoKXZvaWQiLCBtZXRob2QgInRlc3RfaW1wbGljaXRfY29udmVyc2lvbl9sb2codWludDY0W10pdm9pZCIsIG1ldGhvZCAidGVzdF9pbXBsaWNpdF9jb252ZXJzaW9uX2VtaXQodWludDY0W10pdm9pZCIsIG1ldGhvZCAidGVzdF9uZXN0ZWRfYXJyYXkodWludDY0LHVpbnQ2NFtdW10pdWludDY0W10iLCBtZXRob2QgInRlc3RfYml0X3BhY2tlZF90dXBsZXMoKXZvaWQiLCBtZXRob2QgInN1bV91aW50c19hbmRfbGVuZ3Roc19hbmRfdHJ1ZXModWludDY0W10sYm9vbFtdLCh1aW50NjQsYm9vbCxib29sKVtdLCh1aW50NjQsc3RyaW5nKVtdKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpIiwgbWV0aG9kICJ0ZXN0X3VpbnQ2NF9yZXR1cm4odWludDY0KXVpbnQ2NFtdIiwgbWV0aG9kICJ0ZXN0X2Jvb2xfcmV0dXJuKHVpbnQ2NClib29sW10iLCBtZXRob2QgInRlc3RfdHVwbGVfcmV0dXJuKHVpbnQ2NCkodWludDY0LGJvb2wsYm9vbClbXSIsIG1ldGhvZCAidGVzdF9keW5hbWljX3R1cGxlX3JldHVybih1aW50NjQpKHVpbnQ2NCxzdHJpbmcpW10iLCBtZXRob2QgInRlc3RfY29udmVydF90b19hcnJheV9hbmRfYmFjaygodWludDY0LGJvb2wsYm9vbClbXSx1aW50NjQpKHVpbnQ2NCxib29sLGJvb2wpW10iLCBtZXRob2QgInRlc3RfY29uY2F0X3dpdGhfYXJjNF90dXBsZSgodWludDY0LHVpbnQ2NCkpdWludDY0W10iLCBtZXRob2QgInRlc3RfY29uY2F0X3dpdGhfbmF0aXZlX3R1cGxlKCh1aW50NjQsdWludDY0KSl1aW50NjRbXSIsIG1ldGhvZCAidGVzdF9keW5hbWljX2NvbmNhdF93aXRoX2FyYzRfdHVwbGUoKHN0cmluZyxzdHJpbmcpKXN0cmluZ1tdIiwgbWV0aG9kICJ0ZXN0X2R5bmFtaWNfY29uY2F0X3dpdGhfbmF0aXZlX3R1cGxlKChzdHJpbmcsc3RyaW5nKSlzdHJpbmdbXSIsIG1ldGhvZCAidGVzdF9jb25jYXRfaW1tdXRhYmxlX2R5bmFtaWMoKHVpbnQ2NCxzdHJpbmcpW10sKHVpbnQ2NCxzdHJpbmcpW10pKHVpbnQ2NCxzdHJpbmcpW10iCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX3Rlc3RfdWludDY0X2FycmF5X3JvdXRlQDMgbWFpbl90ZXN0X2Jvb2xfYXJyYXlfcm91dGVANCBtYWluX3Rlc3RfZml4ZWRfc2l6ZV90dXBsZV9hcnJheV9yb3V0ZUA1IG1haW5fdGVzdF9maXhlZF9zaXplX25hbWVkX3R1cGxlX2FycmF5X3JvdXRlQDYgbWFpbl90ZXN0X2R5bmFtaWNfc2l6ZWRfdHVwbGVfYXJyYXlfcm91dGVANyBtYWluX3Rlc3RfZHluYW1pY19zaXplZF9uYW1lZF90dXBsZV9hcnJheV9yb3V0ZUA4IG1haW5fdGVzdF9pbXBsaWNpdF9jb252ZXJzaW9uX2xvZ19yb3V0ZUA5IG1haW5fdGVzdF9pbXBsaWNpdF9jb252ZXJzaW9uX2VtaXRfcm91dGVAMTAgbWFpbl90ZXN0X25lc3RlZF9hcnJheV9yb3V0ZUAxMSBtYWluX3Rlc3RfYml0X3BhY2tlZF90dXBsZXNfcm91dGVAMTIgbWFpbl9zdW1fdWludHNfYW5kX2xlbmd0aHNfYW5kX3RydWVzX3JvdXRlQDEzIG1haW5fdGVzdF91aW50NjRfcmV0dXJuX3JvdXRlQDE0IG1haW5fdGVzdF9ib29sX3JldHVybl9yb3V0ZUAxNSBtYWluX3Rlc3RfdHVwbGVfcmV0dXJuX3JvdXRlQDE2IG1haW5fdGVzdF9keW5hbWljX3R1cGxlX3JldHVybl9yb3V0ZUAxNyBtYWluX3Rlc3RfY29udmVydF90b19hcnJheV9hbmRfYmFja19yb3V0ZUAxOCBtYWluX3Rlc3RfY29uY2F0X3dpdGhfYXJjNF90dXBsZV9yb3V0ZUAxOSBtYWluX3Rlc3RfY29uY2F0X3dpdGhfbmF0aXZlX3R1cGxlX3JvdXRlQDIwIG1haW5fdGVzdF9keW5hbWljX2NvbmNhdF93aXRoX2FyYzRfdHVwbGVfcm91dGVAMjEgbWFpbl90ZXN0X2R5bmFtaWNfY29uY2F0X3dpdGhfbmF0aXZlX3R1cGxlX3JvdXRlQDIyIG1haW5fdGVzdF9jb25jYXRfaW1tdXRhYmxlX2R5bmFtaWNfcm91dGVAMjMKCm1haW5fYWZ0ZXJfaWZfZWxzZUAzMDoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTo3NAogICAgLy8gY2xhc3MgSW1tdXRhYmxlQXJyYXlDb250cmFjdChhcmM0LkFSQzRDb250cmFjdCk6CiAgICBpbnRjXzAgLy8gMAogICAgcmV0dXJuCgptYWluX3Rlc3RfY29uY2F0X2ltbXV0YWJsZV9keW5hbWljX3JvdXRlQDIzOgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjM5NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5Ojc0CiAgICAvLyBjbGFzcyBJbW11dGFibGVBcnJheUNvbnRyYWN0KGFyYzQuQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozOTQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBjYWxsc3ViIHRlc3RfY29uY2F0X2ltbXV0YWJsZV9keW5hbWljCiAgICBieXRlY18xIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX3Rlc3RfZHluYW1pY19jb25jYXRfd2l0aF9uYXRpdmVfdHVwbGVfcm91dGVAMjI6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6Mzg2CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6NzQKICAgIC8vIGNsYXNzIEltbXV0YWJsZUFycmF5Q29udHJhY3QoYXJjNC5BUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIGRpZyAxCiAgICBpbnRjXzIgLy8gMgogICAgZXh0cmFjdF91aW50MTYKICAgIGRpZyAyCiAgICB1bmNvdmVyIDIKICAgIGRpZyAyCiAgICBzdWJzdHJpbmczCiAgICBkaWcgMgogICAgbGVuCiAgICB1bmNvdmVyIDMKICAgIHVuY292ZXIgMwogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6Mzg2CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgY2FsbHN1YiB0ZXN0X2R5bmFtaWNfY29uY2F0X3dpdGhfbmF0aXZlX3R1cGxlCiAgICBieXRlY18xIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX3Rlc3RfZHluYW1pY19jb25jYXRfd2l0aF9hcmM0X3R1cGxlX3JvdXRlQDIxOgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjM3OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5Ojc0CiAgICAvLyBjbGFzcyBJbW11dGFibGVBcnJheUNvbnRyYWN0KGFyYzQuQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozNzgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBjYWxsc3ViIHRlc3RfZHluYW1pY19jb25jYXRfd2l0aF9hcmM0X3R1cGxlCiAgICBieXRlY18xIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX3Rlc3RfY29uY2F0X3dpdGhfbmF0aXZlX3R1cGxlX3JvdXRlQDIwOgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjM3MAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5Ojc0CiAgICAvLyBjbGFzcyBJbW11dGFibGVBcnJheUNvbnRyYWN0KGFyYzQuQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgZXh0cmFjdCAwIDggLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBzd2FwCiAgICBleHRyYWN0IDggOCAvLyBvbiBlcnJvcjogSW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozNzAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBjYWxsc3ViIHRlc3RfY29uY2F0X3dpdGhfbmF0aXZlX3R1cGxlCiAgICBieXRlY18xIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX3Rlc3RfY29uY2F0X3dpdGhfYXJjNF90dXBsZV9yb3V0ZUAxOToKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozNjIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTo3NAogICAgLy8gY2xhc3MgSW1tdXRhYmxlQXJyYXlDb250cmFjdChhcmM0LkFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzYyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgY2FsbHN1YiB0ZXN0X2NvbmNhdF93aXRoX2FyYzRfdHVwbGUKICAgIGJ5dGVjXzEgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fdGVzdF9jb252ZXJ0X3RvX2FycmF5X2FuZF9iYWNrX3JvdXRlQDE4OgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjM1MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5Ojc0CiAgICAvLyBjbGFzcyBJbW11dGFibGVBcnJheUNvbnRyYWN0KGFyYzQuQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozNTIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBjYWxsc3ViIHRlc3RfY29udmVydF90b19hcnJheV9hbmRfYmFjawogICAgYnl0ZWNfMSAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl90ZXN0X2R5bmFtaWNfdHVwbGVfcmV0dXJuX3JvdXRlQDE3OgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjM0NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5Ojc0CiAgICAvLyBjbGFzcyBJbW11dGFibGVBcnJheUNvbnRyYWN0KGFyYzQuQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozNDUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBjYWxsc3ViIHRlc3RfZHluYW1pY190dXBsZV9yZXR1cm4KICAgIGJ5dGVjXzEgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fdGVzdF90dXBsZV9yZXR1cm5fcm91dGVAMTY6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzM4CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6NzQKICAgIC8vIGNsYXNzIEltbXV0YWJsZUFycmF5Q29udHJhY3QoYXJjNC5BUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjMzOAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgdGVzdF90dXBsZV9yZXR1cm4KICAgIGJ5dGVjXzEgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fdGVzdF9ib29sX3JldHVybl9yb3V0ZUAxNToKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozMzEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTo3NAogICAgLy8gY2xhc3MgSW1tdXRhYmxlQXJyYXlDb250cmFjdChhcmM0LkFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzMxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgY2FsbHN1YiB0ZXN0X2Jvb2xfcmV0dXJuCiAgICBieXRlY18xIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX3Rlc3RfdWludDY0X3JldHVybl9yb3V0ZUAxNDoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozMjQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTo3NAogICAgLy8gY2xhc3MgSW1tdXRhYmxlQXJyYXlDb250cmFjdChhcmM0LkFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzI0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgY2FsbHN1YiB0ZXN0X3VpbnQ2NF9yZXR1cm4KICAgIGJ5dGVjXzEgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fc3VtX3VpbnRzX2FuZF9sZW5ndGhzX2FuZF90cnVlc19yb3V0ZUAxMzoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyOTcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTo3NAogICAgLy8gY2xhc3MgSW1tdXRhYmxlQXJyYXlDb250cmFjdChhcmM0LkFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA0CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6Mjk3CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgY2FsbHN1YiBzdW1fdWludHNfYW5kX2xlbmd0aHNfYW5kX3RydWVzCiAgICB1bmNvdmVyIDMKICAgIGl0b2IKICAgIHVuY292ZXIgMwogICAgaXRvYgogICAgdW5jb3ZlciAzCiAgICBpdG9iCiAgICB1bmNvdmVyIDMKICAgIGl0b2IKICAgIHVuY292ZXIgMwogICAgdW5jb3ZlciAzCiAgICBjb25jYXQKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzEgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fdGVzdF9iaXRfcGFja2VkX3R1cGxlc19yb3V0ZUAxMjoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyMzIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgdGVzdF9iaXRfcGFja2VkX3R1cGxlcwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl90ZXN0X25lc3RlZF9hcnJheV9yb3V0ZUAxMToKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyMTQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTo3NAogICAgLy8gY2xhc3MgSW1tdXRhYmxlQXJyYXlDb250cmFjdChhcmM0LkFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MjE0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgY2FsbHN1YiB0ZXN0X25lc3RlZF9hcnJheQogICAgYnl0ZWNfMSAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl90ZXN0X2ltcGxpY2l0X2NvbnZlcnNpb25fZW1pdF9yb3V0ZUAxMDoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyMTAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTo3NAogICAgLy8gY2xhc3MgSW1tdXRhYmxlQXJyYXlDb250cmFjdChhcmM0LkFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MjEwCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgY2FsbHN1YiB0ZXN0X2ltcGxpY2l0X2NvbnZlcnNpb25fZW1pdAogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl90ZXN0X2ltcGxpY2l0X2NvbnZlcnNpb25fbG9nX3JvdXRlQDk6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MjA2CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6NzQKICAgIC8vIGNsYXNzIEltbXV0YWJsZUFycmF5Q29udHJhY3QoYXJjNC5BUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjIwNgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgdGVzdF9pbXBsaWNpdF9jb252ZXJzaW9uX2xvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl90ZXN0X2R5bmFtaWNfc2l6ZWRfbmFtZWRfdHVwbGVfYXJyYXlfcm91dGVAODoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxODcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgdGVzdF9keW5hbWljX3NpemVkX25hbWVkX3R1cGxlX2FycmF5CiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX3Rlc3RfZHluYW1pY19zaXplZF90dXBsZV9hcnJheV9yb3V0ZUA3OgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjE2OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgY2FsbHN1YiB0ZXN0X2R5bmFtaWNfc2l6ZWRfdHVwbGVfYXJyYXkKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fdGVzdF9maXhlZF9zaXplX25hbWVkX3R1cGxlX2FycmF5X3JvdXRlQDY6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTUzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICBjYWxsc3ViIHRlc3RfZml4ZWRfc2l6ZV9uYW1lZF90dXBsZV9hcnJheQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl90ZXN0X2ZpeGVkX3NpemVfdHVwbGVfYXJyYXlfcm91dGVANToKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxMzUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgdGVzdF9maXhlZF9zaXplX3R1cGxlX2FycmF5CiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX3Rlc3RfYm9vbF9hcnJheV9yb3V0ZUA0OgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjExMQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5Ojc0CiAgICAvLyBjbGFzcyBJbW11dGFibGVBcnJheUNvbnRyYWN0KGFyYzQuQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxMTEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBjYWxsc3ViIHRlc3RfYm9vbF9hcnJheQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl90ZXN0X3VpbnQ2NF9hcnJheV9yb3V0ZUAzOgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5Ojc1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICBjYWxsc3ViIHRlc3RfdWludDY0X2FycmF5CiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX2JhcmVfcm91dGluZ0AyNjoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTo3NAogICAgLy8gY2xhc3MgSW1tdXRhYmxlQXJyYXlDb250cmFjdChhcmM0LkFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICBibnogbWFpbl9hZnRlcl9pZl9lbHNlQDMwCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBjcmVhdGluZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIF9wdXlhX2xpYi5hcmM0LmR5bmFtaWNfYXJyYXlfcG9wX2ZpeGVkX3NpemUoYXJyYXk6IGJ5dGVzLCBmaXhlZF9ieXRlX3NpemU6IHVpbnQ2NCkgLT4gYnl0ZXMsIGJ5dGVzOgpkeW5hbWljX2FycmF5X3BvcF9maXhlZF9zaXplOgogICAgcHJvdG8gMiAyCiAgICBmcmFtZV9kaWcgLTIKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgaW50Y18xIC8vIDEKICAgIC0KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAwCiAgICBmcmFtZV9kaWcgLTIKICAgIHN3YXAKICAgIHJlcGxhY2UyIDAKICAgIGR1cAogICAgbGVuCiAgICBmcmFtZV9kaWcgLTEKICAgIC0KICAgIGR1cDIKICAgIGZyYW1lX2RpZyAtMQogICAgZXh0cmFjdDMKICAgIHVuY292ZXIgMgogICAgaW50Y18wIC8vIDAKICAgIHVuY292ZXIgMwogICAgc3Vic3RyaW5nMwogICAgcmV0c3ViCgoKLy8gX3B1eWFfbGliLmFyYzQuZHluYW1pY19hcnJheV9wb3BfZHluYW1pY19lbGVtZW50KGFycmF5OiBieXRlcykgLT4gYnl0ZXMsIGJ5dGVzOgpkeW5hbWljX2FycmF5X3BvcF9keW5hbWljX2VsZW1lbnQ6CiAgICBwcm90byAxIDIKICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBpbnRjXzEgLy8gMQogICAgLQogICAgZHVwCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgZHVwCiAgICBmcmFtZV9kaWcgLTEKICAgIGV4dHJhY3QgMiAwCiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBleHRyYWN0X3VpbnQxNgogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGR1cAogICAgbGVuCiAgICBzd2FwCiAgICBjb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBieXRlY18yIC8vIDB4CiAgICBpbnRjXzAgLy8gMAoKZHluYW1pY19hcnJheV9wb3BfZHluYW1pY19lbGVtZW50X2Zvcl9oZWFkZXJAMToKICAgIGZyYW1lX2RpZyA2CiAgICBmcmFtZV9kaWcgMQogICAgPAogICAgYnogZHluYW1pY19hcnJheV9wb3BfZHluYW1pY19lbGVtZW50X2FmdGVyX2ZvckA0CiAgICBmcmFtZV9kaWcgMgogICAgZnJhbWVfZGlnIDYKICAgIGR1cAogICAgY292ZXIgMgogICAgZXh0cmFjdF91aW50MTYKICAgIGludGNfMiAvLyAyCiAgICAtCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgZnJhbWVfZGlnIDUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZnJhbWVfYnVyeSA1CiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZnJhbWVfYnVyeSA2CiAgICBiIGR5bmFtaWNfYXJyYXlfcG9wX2R5bmFtaWNfZWxlbWVudF9mb3JfaGVhZGVyQDEKCmR5bmFtaWNfYXJyYXlfcG9wX2R5bmFtaWNfZWxlbWVudF9hZnRlcl9mb3JANDoKICAgIGZyYW1lX2RpZyAwCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgZnJhbWVfZGlnIDUKICAgIGNvbmNhdAogICAgZnJhbWVfZGlnIDEKICAgIGludGNfMiAvLyAyCiAgICArCiAgICBmcmFtZV9kaWcgMgogICAgc3dhcAogICAgZnJhbWVfZGlnIDMKICAgIHN1YnN0cmluZzMKICAgIGNvbmNhdAogICAgZnJhbWVfZGlnIDQKICAgIGZyYW1lX2J1cnkgMAogICAgZnJhbWVfYnVyeSAxCiAgICByZXRzdWIKCgovLyBfcHV5YV9saWIuYXJjNC5keW5hbWljX2FycmF5X2NvbmNhdF9iaXRzKGFycmF5OiBieXRlcywgbmV3X2l0ZW1zX2J5dGVzOiBieXRlcywgbmV3X2l0ZW1zX2NvdW50OiB1aW50NjQsIHJlYWRfc3RlcDogdWludDY0KSAtPiBieXRlczoKZHluYW1pY19hcnJheV9jb25jYXRfYml0czoKICAgIHByb3RvIDQgMQogICAgYnl0ZWNfMiAvLyAiIgogICAgZHVwbiAyCiAgICBmcmFtZV9kaWcgLTQKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZHVwbiAyCiAgICBmcmFtZV9kaWcgLTIKICAgICsKICAgIGR1cAogICAgaXRvYgogICAgZXh0cmFjdCA2IDAKICAgIGZyYW1lX2RpZyAtNAogICAgc3dhcAogICAgcmVwbGFjZTIgMAogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIHVuY292ZXIgMwogICAgcHVzaGludCA3IC8vIDcKICAgICsKICAgIGludGNfMyAvLyA4CiAgICAvCiAgICBkdXAKICAgIGNvdmVyIDMKICAgIHN3YXAKICAgIHB1c2hpbnQgNyAvLyA3CiAgICArCiAgICBpbnRjXzMgLy8gOAogICAgLwogICAgZHVwCiAgICBjb3ZlciAzCiAgICA8CiAgICBieiBkeW5hbWljX2FycmF5X2NvbmNhdF9iaXRzX2FmdGVyX2lmX2Vsc2VAMgogICAgZnJhbWVfZGlnIDYKICAgIGZyYW1lX2RpZyA1CiAgICAtCiAgICBiemVybwogICAgZnJhbWVfZGlnIDQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZnJhbWVfYnVyeSA3CgpkeW5hbWljX2FycmF5X2NvbmNhdF9iaXRzX2FmdGVyX2lmX2Vsc2VAMjoKICAgIGZyYW1lX2RpZyA3CiAgICBmcmFtZV9idXJ5IDQKICAgIGludGNfMCAvLyAwCiAgICBmcmFtZV9idXJ5IDAKICAgIGZyYW1lX2RpZyAzCiAgICBwdXNoaW50IDE2IC8vIDE2CiAgICArCiAgICBkdXAKICAgIGZyYW1lX2J1cnkgMgogICAgZnJhbWVfZGlnIC0yCiAgICArCiAgICBmcmFtZV9idXJ5IDEKCmR5bmFtaWNfYXJyYXlfY29uY2F0X2JpdHNfd2hpbGVfdG9wQDM6CiAgICBmcmFtZV9kaWcgMgogICAgZnJhbWVfZGlnIDEKICAgIDwKICAgIGJ6IGR5bmFtaWNfYXJyYXlfY29uY2F0X2JpdHNfYWZ0ZXJfd2hpbGVANQogICAgZnJhbWVfZGlnIC0zCiAgICBmcmFtZV9kaWcgMAogICAgZHVwCiAgICBjb3ZlciAyCiAgICBnZXRiaXQKICAgIGZyYW1lX2RpZyA0CiAgICBmcmFtZV9kaWcgMgogICAgZHVwCiAgICBjb3ZlciAzCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgZnJhbWVfYnVyeSA0CiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSAyCiAgICBmcmFtZV9kaWcgLTEKICAgICsKICAgIGZyYW1lX2J1cnkgMAogICAgYiBkeW5hbWljX2FycmF5X2NvbmNhdF9iaXRzX3doaWxlX3RvcEAzCgpkeW5hbWljX2FycmF5X2NvbmNhdF9iaXRzX2FmdGVyX3doaWxlQDU6CiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfYnVyeSAwCiAgICByZXRzdWIKCgovLyBfcHV5YV9saWIuYXJjNC5keW5hbWljX2FycmF5X2NvbmNhdF9ieXRlX2xlbmd0aF9oZWFkKGFycmF5OiBieXRlcywgbmV3X2l0ZW1zX2J5dGVzOiBieXRlcywgbmV3X2l0ZW1zX2NvdW50OiB1aW50NjQpIC0+IGJ5dGVzOgpkeW5hbWljX2FycmF5X2NvbmNhdF9ieXRlX2xlbmd0aF9oZWFkOgogICAgcHJvdG8gMyAxCiAgICBmcmFtZV9kaWcgLTMKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZHVwCiAgICBmcmFtZV9kaWcgLTEKICAgICsKICAgIHN3YXAKICAgIGludGNfMiAvLyAyCiAgICAqCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBjb3ZlciAyCiAgICBmcmFtZV9kaWcgLTMKICAgIGludGNfMiAvLyAyCiAgICBkaWcgMgogICAgc3Vic3RyaW5nMwogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgYnplcm8KICAgIGNvbmNhdAogICAgZnJhbWVfZGlnIC0zCiAgICBsZW4KICAgIGZyYW1lX2RpZyAtMwogICAgdW5jb3ZlciAzCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGNvbmNhdAogICAgZnJhbWVfZGlnIC0yCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGludGNfMiAvLyAyCiAgICAqCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBzd2FwCgpkeW5hbWljX2FycmF5X2NvbmNhdF9ieXRlX2xlbmd0aF9oZWFkX2Zvcl9oZWFkZXJAMjoKICAgIGZyYW1lX2RpZyAzCiAgICBmcmFtZV9kaWcgMgogICAgPAogICAgYnogZHluYW1pY19hcnJheV9jb25jYXRfYnl0ZV9sZW5ndGhfaGVhZF9hZnRlcl9mb3JANQogICAgZnJhbWVfZGlnIDQKICAgIGR1cAogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIGZyYW1lX2RpZyAxCiAgICBmcmFtZV9kaWcgMwogICAgZHVwCiAgICBjb3ZlciA0CiAgICB1bmNvdmVyIDIKICAgIHJlcGxhY2UzCiAgICBkdXAKICAgIGZyYW1lX2J1cnkgMQogICAgZGlnIDEKICAgIGV4dHJhY3RfdWludDE2CiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgKwogICAgZnJhbWVfYnVyeSA0CiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZnJhbWVfYnVyeSAzCiAgICBiIGR5bmFtaWNfYXJyYXlfY29uY2F0X2J5dGVfbGVuZ3RoX2hlYWRfZm9yX2hlYWRlckAyCgpkeW5hbWljX2FycmF5X2NvbmNhdF9ieXRlX2xlbmd0aF9oZWFkX2FmdGVyX2ZvckA1OgogICAgZnJhbWVfZGlnIDAKICAgIGZyYW1lX2RpZyAxCiAgICBjb25jYXQKICAgIGZyYW1lX2J1cnkgMAogICAgcmV0c3ViCgoKLy8gX3B1eWFfbGliLmFyYzQuZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50KGFycmF5X2l0ZW1zX2NvdW50OiB1aW50NjQsIGFycmF5X2hlYWRfYW5kX3RhaWw6IGJ5dGVzLCBuZXdfaXRlbXNfY291bnQ6IHVpbnQ2NCwgbmV3X2hlYWRfYW5kX3RhaWw6IGJ5dGVzKSAtPiBieXRlczoKZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50OgogICAgcHJvdG8gNCAxCiAgICBieXRlY18yIC8vICIiCiAgICBkdXAKICAgIGZyYW1lX2RpZyAtMgogICAgaW50Y18yIC8vIDIKICAgICoKICAgIGZyYW1lX2RpZyAtNAogICAgaW50Y18yIC8vIDIKICAgICoKICAgIGludGNfMCAvLyAwCgpkeW5hbWljX2FycmF5X2NvbmNhdF9keW5hbWljX2VsZW1lbnRfZm9yX2hlYWRlckAxOgogICAgZnJhbWVfZGlnIDQKICAgIGZyYW1lX2RpZyAzCiAgICA8CiAgICBieiBkeW5hbWljX2FycmF5X2NvbmNhdF9keW5hbWljX2VsZW1lbnRfYWZ0ZXJfZm9yQDQKICAgIGZyYW1lX2RpZyAtMwogICAgZnJhbWVfZGlnIDQKICAgIGR1cAogICAgY292ZXIgMgogICAgZXh0cmFjdF91aW50MTYKICAgIGZyYW1lX2RpZyAyCiAgICArCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgZnJhbWVfZGlnIDEKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZnJhbWVfYnVyeSAxCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZnJhbWVfYnVyeSA0CiAgICBiIGR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudF9mb3JfaGVhZGVyQDEKCmR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudF9hZnRlcl9mb3JANDoKICAgIGZyYW1lX2RpZyAtMwogICAgbGVuCiAgICBmcmFtZV9idXJ5IDAKICAgIGludGNfMCAvLyAwCiAgICBmcmFtZV9idXJ5IDQKCmR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudF9mb3JfaGVhZGVyQDU6CiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIDIKICAgIDwKICAgIGJ6IGR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudF9hZnRlcl9mb3JAOAogICAgZnJhbWVfZGlnIC0xCiAgICBmcmFtZV9kaWcgNAogICAgZHVwCiAgICBjb3ZlciAyCiAgICBleHRyYWN0X3VpbnQxNgogICAgZnJhbWVfZGlnIDAKICAgICsKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBmcmFtZV9kaWcgMQogICAgc3dhcAogICAgY29uY2F0CiAgICBmcmFtZV9idXJ5IDEKICAgIGludGNfMiAvLyAyCiAgICArCiAgICBmcmFtZV9idXJ5IDQKICAgIGIgZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50X2Zvcl9oZWFkZXJANQoKZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50X2FmdGVyX2ZvckA4OgogICAgZnJhbWVfZGlnIC00CiAgICBmcmFtZV9kaWcgLTIKICAgICsKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBmcmFtZV9kaWcgMQogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTMKICAgIGZyYW1lX2RpZyAzCiAgICBmcmFtZV9kaWcgMAogICAgc3Vic3RyaW5nMwogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTEKICAgIGxlbgogICAgZnJhbWVfZGlnIC0xCiAgICBmcmFtZV9kaWcgMgogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBjb25jYXQKICAgIGZyYW1lX2J1cnkgMAogICAgcmV0c3ViCgoKLy8gdGVzdF9jYXNlcy5hcnJheS5pbW11dGFibGUudGltZXMobjogdWludDY0KSAtPiBieXRlczoKdGltZXM6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6NDAxLTQwMgogICAgLy8gQHN1YnJvdXRpbmUKICAgIC8vIGRlZiB0aW1lcyhuOiBVSW50NjQpIC0+IFN0cmluZzoKICAgIHByb3RvIDEgMQogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjQwMwogICAgLy8gcmVzdWx0ID0gU3RyaW5nKCkKICAgIGJ5dGVjXzIgLy8gIiIKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTo0MDQKICAgIC8vIGZvciBfaSBpbiB1cmFuZ2Uobik6CiAgICBpbnRjXzAgLy8gMAoKdGltZXNfZm9yX2hlYWRlckAxOgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjQwNAogICAgLy8gZm9yIF9pIGluIHVyYW5nZShuKToKICAgIGZyYW1lX2RpZyAxCiAgICBmcmFtZV9kaWcgLTEKICAgIDwKICAgIGJ6IHRpbWVzX2FmdGVyX2ZvckA0CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6NDA1CiAgICAvLyByZXN1bHQgKz0gU3RyaW5nKCIgIikKICAgIGZyYW1lX2RpZyAwCiAgICBwdXNoYnl0ZXMgIiAiCiAgICBjb25jYXQKICAgIGZyYW1lX2J1cnkgMAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjQwNAogICAgLy8gZm9yIF9pIGluIHVyYW5nZShuKToKICAgIGZyYW1lX2RpZyAxCiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSAxCiAgICBiIHRpbWVzX2Zvcl9oZWFkZXJAMQoKdGltZXNfYWZ0ZXJfZm9yQDQ6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6NDA2CiAgICAvLyByZXR1cm4gcmVzdWx0CiAgICByZXRzdWIKCgovLyB0ZXN0X2Nhc2VzLmFycmF5LmltbXV0YWJsZS5hZGRfeChhcnI6IGJ5dGVzLCB4OiB1aW50NjQpIC0+IGJ5dGVzOgphZGRfeDoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTo0MDktNDEwCiAgICAvLyBAc3Vicm91dGluZQogICAgLy8gZGVmIGFkZF94KGFycjogSW1tdXRhYmxlQXJyYXlbVUludDY0XSwgeDogVUludDY0KSAtPiBJbW11dGFibGVBcnJheVtVSW50NjRdOgogICAgcHJvdG8gMiAxCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6NDExCiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoeCk6CiAgICBpbnRjXzAgLy8gMAoKYWRkX3hfZm9yX2hlYWRlckAxOgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjQxMQogICAgLy8gZm9yIGkgaW4gdXJhbmdlKHgpOgogICAgZnJhbWVfZGlnIDAKICAgIGZyYW1lX2RpZyAtMQogICAgPAogICAgYnogYWRkX3hfYWZ0ZXJfZm9yQDQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTo0MTIKICAgIC8vIGFyciA9IGFyci5hcHBlbmQoaSkKICAgIGZyYW1lX2RpZyAtMgogICAgZXh0cmFjdCAyIDAKICAgIGZyYW1lX2RpZyAwCiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGl0b2IKICAgIGNvbmNhdAogICAgZHVwCiAgICBsZW4KICAgIGludGNfMyAvLyA4CiAgICAvCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBmcmFtZV9idXJ5IC0yCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6NDExCiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoeCk6CiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSAwCiAgICBiIGFkZF94X2Zvcl9oZWFkZXJAMQoKYWRkX3hfYWZ0ZXJfZm9yQDQ6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6NDEzCiAgICAvLyByZXR1cm4gYXJyCiAgICBmcmFtZV9kaWcgLTIKICAgIHN3YXAKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYXJyYXkuaW1tdXRhYmxlLkltbXV0YWJsZUFycmF5Q29udHJhY3QudGVzdF91aW50NjRfYXJyYXkoKSAtPiB2b2lkOgp0ZXN0X3VpbnQ2NF9hcnJheToKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTo3NS03NgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIC8vIGRlZiB0ZXN0X3VpbnQ2NF9hcnJheShzZWxmKSAtPiBOb25lOgogICAgcHJvdG8gMCAwCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6ODAKICAgIC8vIGFyciA9IGFyci5hcHBlbmQoVUludDY0KDQyKSkKICAgIHB1c2hieXRlcyAweDAwMDEwMDAwMDAwMDAwMDAwMDJhCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6ODQKICAgIC8vIGFyciA9IGFkZF94KGFyciwgVUludDY0KDUpKQogICAgcHVzaGludCA1IC8vIDUKICAgIGNhbGxzdWIgYWRkX3gKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTo4NQogICAgLy8gYXNzZXJ0IGFyci5sZW5ndGggPT0gNgogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIGR1cAogICAgcHVzaGludCA2IC8vIDYKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTo4NgogICAgLy8gYXNzZXJ0IGFyclstMV0gPT0gNAogICAgaW50Y18xIC8vIDEKICAgIC0KICAgIHN3YXAKICAgIGV4dHJhY3QgMiAwCiAgICBzd2FwCiAgICBpbnRjXzMgLy8gOAogICAgKgogICAgZGlnIDEKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDY0CiAgICBwdXNoaW50IDQgLy8gNAogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5Ojg4CiAgICAvLyBhcnIgPSBhcnIuYXBwZW5kKFVJbnQ2NCg0MykpCiAgICBwdXNoaW50IDQzIC8vIDQzCiAgICBpdG9iCiAgICBjb25jYXQKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzMgLy8gOAogICAgLwogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZHVwbiAyCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6ODkKICAgIC8vIGFzc2VydCBhcnIubGVuZ3RoID09IDcKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZHVwCiAgICBwdXNoaW50IDcgLy8gNwogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjkwCiAgICAvLyBhc3NlcnQgYXJyWy0xXSA9PSA0MwogICAgaW50Y18xIC8vIDEKICAgIC0KICAgIGRpZyAxCiAgICBleHRyYWN0IDIgMAogICAgc3dhcAogICAgaW50Y18zIC8vIDgKICAgICoKICAgIGV4dHJhY3RfdWludDY0CiAgICBwdXNoaW50IDQzIC8vIDQzCiAgICA9PQogICAgYXNzZXJ0CiAgICBpbnRjXzIgLy8gMgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjkxCiAgICAvLyBhc3NlcnQgYXJyWzBdID09IDQyCiAgICBleHRyYWN0X3VpbnQ2NAogICAgcHVzaGludCA0MiAvLyA0MgogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjQxOAogICAgLy8gZm9yIF9pIGluIHVyYW5nZSh4KToKICAgIGludGNfMCAvLyAwCgp0ZXN0X3VpbnQ2NF9hcnJheV9mb3JfaGVhZGVyQDI6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6NDE4CiAgICAvLyBmb3IgX2kgaW4gdXJhbmdlKHgpOgogICAgZnJhbWVfZGlnIDEKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTo5MwogICAgLy8gYXJyID0gcG9wX3goYXJyLCBVSW50NjQoMykpCiAgICBwdXNoaW50IDMgLy8gMwogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjQxOAogICAgLy8gZm9yIF9pIGluIHVyYW5nZSh4KToKICAgIDwKICAgIGJ6IHRlc3RfdWludDY0X2FycmF5X2FmdGVyX2ZvckA0CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6NDE5CiAgICAvLyBhcnIgPSBhcnIucG9wKCkKICAgIGZyYW1lX2RpZyAwCiAgICBpbnRjXzMgLy8gOAogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X3BvcF9maXhlZF9zaXplCiAgICBmcmFtZV9idXJ5IDAKICAgIHBvcAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjQxOAogICAgLy8gZm9yIF9pIGluIHVyYW5nZSh4KToKICAgIGZyYW1lX2RpZyAxCiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSAxCiAgICBiIHRlc3RfdWludDY0X2FycmF5X2Zvcl9oZWFkZXJAMgoKdGVzdF91aW50NjRfYXJyYXlfYWZ0ZXJfZm9yQDQ6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6OTQKICAgIC8vIGFzc2VydCBhcnIubGVuZ3RoID09IDQKICAgIGZyYW1lX2RpZyAwCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZHVwCiAgICBwdXNoaW50IDQgLy8gNAogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5Ojk1CiAgICAvLyBhc3NlcnQgYXJyWy0xXSA9PSAyCiAgICBpbnRjXzEgLy8gMQogICAgLQogICAgZGlnIDEKICAgIGV4dHJhY3QgMiAwCiAgICBzd2FwCiAgICBpbnRjXzMgLy8gOAogICAgKgogICAgZXh0cmFjdF91aW50NjQKICAgIGludGNfMiAvLyAyCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6OTcKICAgIC8vIGFyciA9IGFkZF94KGFyciwgVUludDY0KDEwKSkKICAgIHB1c2hpbnQgMTAgLy8gMTAKICAgIGNhbGxzdWIgYWRkX3gKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTo5OAogICAgLy8gYXNzZXJ0IGFyci5sZW5ndGggPT0gMTQKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBkdXAKICAgIHB1c2hpbnQgMTQgLy8gMTQKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTo5OQogICAgLy8gYXNzZXJ0IGFyclstMV0gPT0gOQogICAgaW50Y18xIC8vIDEKICAgIC0KICAgIHN3YXAKICAgIGV4dHJhY3QgMiAwCiAgICBzd2FwCiAgICBpbnRjXzMgLy8gOAogICAgKgogICAgZGlnIDEKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDY0CiAgICBwdXNoaW50IDkgLy8gOQogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjEwMQogICAgLy8gYXJyID0gYXJyLmFwcGVuZChVSW50NjQoNDQpKQogICAgcHVzaGludCA0NCAvLyA0NAogICAgaXRvYgogICAgY29uY2F0CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18zIC8vIDgKICAgIC8KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxMDIKICAgIC8vIGFzc2VydCBhcnIubGVuZ3RoID09IDE1CiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZHVwCiAgICBwdXNoaW50IDE1IC8vIDE1CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTAzCiAgICAvLyBhc3NlcnQgYXJyWy0xXSA9PSA0NAogICAgZHVwCiAgICBpbnRjXzEgLy8gMQogICAgLQogICAgZGlnIDIKICAgIGV4dHJhY3QgMiAwCiAgICBzd2FwCiAgICBpbnRjXzMgLy8gOAogICAgKgogICAgZXh0cmFjdF91aW50NjQKICAgIHB1c2hpbnQgNDQgLy8gNDQKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxMDUKICAgIC8vIGFyciA9IGFyci5yZXBsYWNlKDIsIFVJbnQ2NCgyMykpCiAgICBwdXNoaW50IDIzIC8vIDIzCiAgICBpdG9iCiAgICBpbnRjXzIgLy8gMgogICAgdW5jb3ZlciAyCiAgICA8CiAgICBhc3NlcnQgLy8gSW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIHJlcGxhY2UyIDE4CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTA2CiAgICAvLyBhc3NlcnQgYXJyLmxlbmd0aCA9PSAxNQogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIHB1c2hpbnQgMTUgLy8gMTUKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxMDcKICAgIC8vIGFzc2VydCBhcnJbMl0gPT0gMjMKICAgIGR1cAogICAgcHVzaGludCAxOCAvLyAxOAogICAgZXh0cmFjdF91aW50NjQKICAgIHB1c2hpbnQgMjMgLy8gMjMKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxMDkKICAgIC8vIHNlbGYuYSA9IGFycgogICAgcHVzaGJ5dGVzICJhIgogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYXJyYXkuaW1tdXRhYmxlLkltbXV0YWJsZUFycmF5Q29udHJhY3QudGVzdF9ib29sX2FycmF5KGxlbmd0aDogdWludDY0KSAtPiB2b2lkOgp0ZXN0X2Jvb2xfYXJyYXk6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTExLTExMgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIC8vIGRlZiB0ZXN0X2Jvb2xfYXJyYXkoc2VsZiwgbGVuZ3RoOiBVSW50NjQpIC0+IE5vbmU6CiAgICBwcm90byAxIDAKICAgIGJ5dGVjXzIgLy8gIiIKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxMTMKICAgIC8vIGFyciA9IEltbXV0YWJsZUFycmF5W2Jvb2xdKCkKICAgIGJ5dGVjXzMgLy8gMHgwMDAwCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTE2CiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UobGVuZ3RoKToKICAgIGludGNfMCAvLyAwCgp0ZXN0X2Jvb2xfYXJyYXlfZm9yX2hlYWRlckAxOgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjExNgogICAgLy8gZm9yIGkgaW4gdXJhbmdlKGxlbmd0aCk6CiAgICBmcmFtZV9kaWcgMgogICAgZnJhbWVfZGlnIC0xCiAgICA8CiAgICBieiB0ZXN0X2Jvb2xfYXJyYXlfYWZ0ZXJfZm9yQDQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxMTcKICAgIC8vIGFyciA9IGFyci5hcHBlbmQoaSA9PSBUeG4ubnVtX2FwcF9hcmdzKQogICAgdHhuIE51bUFwcEFyZ3MKICAgIGZyYW1lX2RpZyAyCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgPT0KICAgIGJ5dGVjXzAgLy8gMHgwMAogICAgaW50Y18wIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBmcmFtZV9kaWcgMQogICAgc3dhcAogICAgaW50Y18xIC8vIDEKICAgIGludGNfMyAvLyA4CiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfY29uY2F0X2JpdHMKICAgIGZyYW1lX2J1cnkgMQogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjExNgogICAgLy8gZm9yIGkgaW4gdXJhbmdlKGxlbmd0aCk6CiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSAyCiAgICBiIHRlc3RfYm9vbF9hcnJheV9mb3JfaGVhZGVyQDEKCnRlc3RfYm9vbF9hcnJheV9hZnRlcl9mb3JANDoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxMTkKICAgIC8vIGFzc2VydCBhcnIubGVuZ3RoID09IGxlbmd0aAogICAgZnJhbWVfZGlnIDEKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZHVwCiAgICBmcmFtZV9idXJ5IDAKICAgIGZyYW1lX2RpZyAtMQogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjEyMQogICAgLy8gaWYgbGVuZ3RoID4gMDoKICAgIGZyYW1lX2RpZyAtMQogICAgYnogdGVzdF9ib29sX2FycmF5X2FmdGVyX2lmX2Vsc2VANgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjEyMgogICAgLy8gYXNzZXJ0IG5vdCBhcnJbMF0sICJleHBlY3RlZCBlbGVtZW50IDAgdG8gYmUgRmFsc2UiCiAgICBmcmFtZV9kaWcgMQogICAgZXh0cmFjdCAyIDAKICAgIGZyYW1lX2RpZyAwCiAgICBhc3NlcnQgLy8gSW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGludGNfMCAvLyAwCiAgICBnZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgwMAogICAgaW50Y18wIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBpbnRjXzAgLy8gMAogICAgZ2V0Yml0CiAgICAhCiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgZWxlbWVudCAwIHRvIGJlIEZhbHNlCgp0ZXN0X2Jvb2xfYXJyYXlfYWZ0ZXJfaWZfZWxzZUA2OgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjEyMwogICAgLy8gaWYgbGVuZ3RoID4gMToKICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18xIC8vIDEKICAgID4KICAgIGJ6IHRlc3RfYm9vbF9hcnJheV9hZnRlcl9pZl9lbHNlQDgKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxMjQKICAgIC8vIGFzc2VydCBub3QgYXJyWzFdLCAiZXhwZWN0ZWQgZWxlbWVudCAxIHRvIGJlIEZhbHNlIgogICAgZnJhbWVfZGlnIDEKICAgIGV4dHJhY3QgMiAwCiAgICBpbnRjXzEgLy8gMQogICAgZnJhbWVfZGlnIDAKICAgIDwKICAgIGFzc2VydCAvLyBJbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgaW50Y18xIC8vIDEKICAgIGdldGJpdAogICAgYnl0ZWNfMCAvLyAweDAwCiAgICBpbnRjXzAgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGludGNfMCAvLyAwCiAgICBnZXRiaXQKICAgICEKICAgIGFzc2VydCAvLyBleHBlY3RlZCBlbGVtZW50IDEgdG8gYmUgRmFsc2UKCnRlc3RfYm9vbF9hcnJheV9hZnRlcl9pZl9lbHNlQDg6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTI1CiAgICAvLyBpZiBsZW5ndGggPiAyOgogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzIgLy8gMgogICAgPgogICAgYnogdGVzdF9ib29sX2FycmF5X2FmdGVyX2lmX2Vsc2VAMTAKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxMjYKICAgIC8vIGFzc2VydCBhcnJbMl0sICJleHBlY3RlZCBlbGVtZW50IDIgdG8gYmUgVHJ1ZSIKICAgIGZyYW1lX2RpZyAxCiAgICBleHRyYWN0IDIgMAogICAgaW50Y18yIC8vIDIKICAgIGZyYW1lX2RpZyAwCiAgICA8CiAgICBhc3NlcnQgLy8gSW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGludGNfMiAvLyAyCiAgICBnZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgwMAogICAgaW50Y18wIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBpbnRjXzAgLy8gMAogICAgZ2V0Yml0CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgZWxlbWVudCAyIHRvIGJlIFRydWUKCnRlc3RfYm9vbF9hcnJheV9hZnRlcl9pZl9lbHNlQDEwOgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjEyNwogICAgLy8gaWYgbGVuZ3RoID4gMzoKICAgIGZyYW1lX2RpZyAtMQogICAgcHVzaGludCAzIC8vIDMKICAgID4KICAgIGJ6IHRlc3RfYm9vbF9hcnJheV9hZnRlcl9pZl9lbHNlQDEyCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTI4CiAgICAvLyBhc3NlcnQgbm90IGFycltsZW5ndGggLSAxXSwgImV4cGVjdGVkIGxhc3QgZWxlbWVudCB0byBiZSBGYWxzZSIKICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18xIC8vIDEKICAgIC0KICAgIGZyYW1lX2RpZyAxCiAgICBleHRyYWN0IDIgMAogICAgZGlnIDEKICAgIGZyYW1lX2RpZyAwCiAgICA8CiAgICBhc3NlcnQgLy8gSW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIHN3YXAKICAgIGdldGJpdAogICAgYnl0ZWNfMCAvLyAweDAwCiAgICBpbnRjXzAgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGludGNfMCAvLyAwCiAgICBnZXRiaXQKICAgICEKICAgIGFzc2VydCAvLyBleHBlY3RlZCBsYXN0IGVsZW1lbnQgdG8gYmUgRmFsc2UKCnRlc3RfYm9vbF9hcnJheV9hZnRlcl9pZl9lbHNlQDEyOgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjEzMAogICAgLy8gc2VsZi5nID0gYXJyCiAgICBwdXNoYnl0ZXMgImciCiAgICBmcmFtZV9kaWcgMQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxMzEKICAgIC8vIGlmIGxlbmd0aDoKICAgIGZyYW1lX2RpZyAtMQogICAgYnogdGVzdF9ib29sX2FycmF5X2FmdGVyX2lmX2Vsc2VAMTQKICAgIGZyYW1lX2RpZyAwCiAgICBpbnRjXzEgLy8gMQogICAgLQogICAgZHVwCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMAogICAgZnJhbWVfZGlnIDEKICAgIHN3YXAKICAgIHJlcGxhY2UyIDAKICAgIGRpZyAxCiAgICBwdXNoaW50IDE2IC8vIDE2CiAgICArCiAgICBpbnRjXzAgLy8gMAogICAgc2V0Yml0CiAgICBzd2FwCiAgICBwdXNoaW50IDcgLy8gNwogICAgKwogICAgaW50Y18zIC8vIDgKICAgIC8KICAgIGludGNfMiAvLyAyCiAgICArCiAgICBpbnRjXzAgLy8gMAogICAgc3dhcAogICAgc3Vic3RyaW5nMwogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjEzMwogICAgLy8gYXNzZXJ0IGFyci5sZW5ndGggPT0gbGVuZ3RoIC0gMQogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMSAvLyAxCiAgICAtCiAgICA9PQogICAgYXNzZXJ0Cgp0ZXN0X2Jvb2xfYXJyYXlfYWZ0ZXJfaWZfZWxzZUAxNDoKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYXJyYXkuaW1tdXRhYmxlLkltbXV0YWJsZUFycmF5Q29udHJhY3QudGVzdF9maXhlZF9zaXplX3R1cGxlX2FycmF5KCkgLT4gdm9pZDoKdGVzdF9maXhlZF9zaXplX3R1cGxlX2FycmF5OgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjEzNS0xMzYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICAvLyBkZWYgdGVzdF9maXhlZF9zaXplX3R1cGxlX2FycmF5KHNlbGYpIC0+IE5vbmU6CiAgICBwcm90byAwIDAKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxMzcKICAgIC8vIGFyciA9IEltbXV0YWJsZUFycmF5W3R1cGxlW1VJbnQ2NCwgVUludDY0XV0oKQogICAgYnl0ZWNfMyAvLyAweDAwMDAKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxNDAKICAgIC8vIGZvciBpIGluIHVyYW5nZSg1KToKICAgIGludGNfMCAvLyAwCgp0ZXN0X2ZpeGVkX3NpemVfdHVwbGVfYXJyYXlfZm9yX2hlYWRlckAxOgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjE0MAogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDUpOgogICAgZnJhbWVfZGlnIDEKICAgIHB1c2hpbnQgNSAvLyA1CiAgICA8CiAgICBieiB0ZXN0X2ZpeGVkX3NpemVfdHVwbGVfYXJyYXlfYWZ0ZXJfZm9yQDQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxNDEKICAgIC8vIGFyciA9IGFyci5hcHBlbmQoKGkgKyAxLCBpICsgMikpCiAgICBmcmFtZV9kaWcgMAogICAgZXh0cmFjdCAyIDAKICAgIGZyYW1lX2RpZyAxCiAgICBkdXAKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBzd2FwCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGl0b2IKICAgIHN3YXAKICAgIGl0b2IKICAgIGNvbmNhdAogICAgdW5jb3ZlciAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDE2IC8vIDE2CiAgICAvCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBmcmFtZV9idXJ5IDAKICAgIGZyYW1lX2J1cnkgMQogICAgYiB0ZXN0X2ZpeGVkX3NpemVfdHVwbGVfYXJyYXlfZm9yX2hlYWRlckAxCgp0ZXN0X2ZpeGVkX3NpemVfdHVwbGVfYXJyYXlfYWZ0ZXJfZm9yQDQ6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTQzCiAgICAvLyBhc3NlcnQgYXJyLmxlbmd0aCA9PSA1CiAgICBmcmFtZV9kaWcgMAogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIGR1cAogICAgcHVzaGludCA1IC8vIDUKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxNDQKICAgIC8vIGFzc2VydCBhcnJbMF0gPT0gKFVJbnQ2NCgxKSwgVUludDY0KDIpKQogICAgZGlnIDEKICAgIGV4dHJhY3QgMiAwCiAgICBkaWcgMgogICAgZXh0cmFjdCAyIDE2CiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgc3dhcAogICAgaW50Y18zIC8vIDgKICAgIGV4dHJhY3RfdWludDY0CiAgICBzd2FwCiAgICBpbnRjXzEgLy8gMQogICAgPT0KICAgIHN3YXAKICAgIGludGNfMiAvLyAyCiAgICA9PQogICAgJiYKICAgIGFzc2VydAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjE0NQogICAgLy8gYXNzZXJ0IGFyclstMV0gPT0gKFVJbnQ2NCg1KSwgVUludDY0KDYpKQogICAgc3dhcAogICAgaW50Y18xIC8vIDEKICAgIC0KICAgIHB1c2hpbnQgMTYgLy8gMTYKICAgICoKICAgIHB1c2hpbnQgMTYgLy8gMTYKICAgIGV4dHJhY3QzIC8vIG9uIGVycm9yOiBJbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50NjQKICAgIHN3YXAKICAgIGludGNfMyAvLyA4CiAgICBleHRyYWN0X3VpbnQ2NAogICAgc3dhcAogICAgcHVzaGludCA1IC8vIDUKICAgID09CiAgICBzd2FwCiAgICBwdXNoaW50IDYgLy8gNgogICAgPT0KICAgICYmCiAgICBhc3NlcnQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxNDcKICAgIC8vIGFyciA9IGFyci5wb3AoKQogICAgcHVzaGludCAxNiAvLyAxNgogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X3BvcF9maXhlZF9zaXplCiAgICBidXJ5IDEKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxNDgKICAgIC8vIGFzc2VydCBhcnIubGVuZ3RoID09IDQKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBkdXAKICAgIHB1c2hpbnQgNCAvLyA0CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTQ5CiAgICAvLyBhc3NlcnQgYXJyWzBdID09IChVSW50NjQoMSksIFVJbnQ2NCgyKSkKICAgIGRpZyAxCiAgICBleHRyYWN0IDIgMAogICAgZGlnIDIKICAgIGV4dHJhY3QgMiAxNgogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50NjQKICAgIHN3YXAKICAgIGludGNfMyAvLyA4CiAgICBleHRyYWN0X3VpbnQ2NAogICAgc3dhcAogICAgaW50Y18xIC8vIDEKICAgID09CiAgICBzd2FwCiAgICBpbnRjXzIgLy8gMgogICAgPT0KICAgICYmCiAgICBhc3NlcnQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxNTAKICAgIC8vIGFzc2VydCBhcnJbLTFdID09IChVSW50NjQoNCksIFVJbnQ2NCg1KSkKICAgIHN3YXAKICAgIGludGNfMSAvLyAxCiAgICAtCiAgICBwdXNoaW50IDE2IC8vIDE2CiAgICAqCiAgICBwdXNoaW50IDE2IC8vIDE2CiAgICBleHRyYWN0MyAvLyBvbiBlcnJvcjogSW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDY0CiAgICBzd2FwCiAgICBpbnRjXzMgLy8gOAogICAgZXh0cmFjdF91aW50NjQKICAgIHN3YXAKICAgIHB1c2hpbnQgNCAvLyA0CiAgICA9PQogICAgc3dhcAogICAgcHVzaGludCA1IC8vIDUKICAgID09CiAgICAmJgogICAgYXNzZXJ0CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTUxCiAgICAvLyBzZWxmLmMgPSBhcnIKICAgIHB1c2hieXRlcyAiYyIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICByZXRzdWIKCgovLyB0ZXN0X2Nhc2VzLmFycmF5LmltbXV0YWJsZS5JbW11dGFibGVBcnJheUNvbnRyYWN0LnRlc3RfZml4ZWRfc2l6ZV9uYW1lZF90dXBsZV9hcnJheSgpIC0+IHZvaWQ6CnRlc3RfZml4ZWRfc2l6ZV9uYW1lZF90dXBsZV9hcnJheToKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxNTMtMTU0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgLy8gZGVmIHRlc3RfZml4ZWRfc2l6ZV9uYW1lZF90dXBsZV9hcnJheShzZWxmKSAtPiBOb25lOgogICAgcHJvdG8gMCAwCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTU1CiAgICAvLyBhcnIgPSBJbW11dGFibGVBcnJheVtNeVR1cGxlXSgpCiAgICBieXRlY18zIC8vIDB4MDAwMAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjE1OAogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDUpOgogICAgaW50Y18wIC8vIDAKCnRlc3RfZml4ZWRfc2l6ZV9uYW1lZF90dXBsZV9hcnJheV9mb3JfaGVhZGVyQDE6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTU4CiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoNSk6CiAgICBmcmFtZV9kaWcgMQogICAgcHVzaGludCA1IC8vIDUKICAgIDwKICAgIGJ6IHRlc3RfZml4ZWRfc2l6ZV9uYW1lZF90dXBsZV9hcnJheV9hZnRlcl9mb3JANAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjE1OQogICAgLy8gYXJyID0gYXJyLmFwcGVuZChNeVR1cGxlKGZvbz1pLCBiYXI9aSAlIDIgPT0gMCwgYmF6PWkgKiAzICUgMiA9PSAwKSkKICAgIGZyYW1lX2RpZyAwCiAgICBleHRyYWN0IDIgMAogICAgZnJhbWVfZGlnIDEKICAgIGR1cAogICAgaW50Y18yIC8vIDIKICAgICUKICAgICEKICAgIGRpZyAxCiAgICBwdXNoaW50IDMgLy8gMwogICAgKgogICAgaW50Y18yIC8vIDIKICAgICUKICAgICEKICAgIGRpZyAyCiAgICBpdG9iCiAgICBieXRlY18wIC8vIDB4MDAKICAgIGJ5dGVjIDUgLy8gMHg4MAogICAgdW5jb3ZlciA0CiAgICBzZWxlY3QKICAgIGNvbmNhdAogICAgcHVzaGludCA2NSAvLyA2NQogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIHVuY292ZXIgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCA5IC8vIDkKICAgIC8KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGZyYW1lX2J1cnkgMAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjE1OAogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDUpOgogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgMQogICAgYiB0ZXN0X2ZpeGVkX3NpemVfbmFtZWRfdHVwbGVfYXJyYXlfZm9yX2hlYWRlckAxCgp0ZXN0X2ZpeGVkX3NpemVfbmFtZWRfdHVwbGVfYXJyYXlfYWZ0ZXJfZm9yQDQ6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTYxCiAgICAvLyBhc3NlcnQgYXJyLmxlbmd0aCA9PSA1CiAgICBmcmFtZV9kaWcgMAogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIHB1c2hpbnQgNSAvLyA1CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTYyCiAgICAvLyBmb28sIGJhciwgYmF6ID0gYXJyWzBdCiAgICBkdXAKICAgIGV4dHJhY3QgMiA5CiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgZGlnIDEKICAgIHB1c2hpbnQgNjQgLy8gNjQKICAgIGdldGJpdAogICAgYnl0ZWNfMCAvLyAweDAwCiAgICBpbnRjXzAgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGludGNfMCAvLyAwCiAgICBnZXRiaXQKICAgIHVuY292ZXIgMgogICAgcHVzaGludCA2NSAvLyA2NQogICAgZ2V0Yml0CiAgICBieXRlY18wIC8vIDB4MDAKICAgIGludGNfMCAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgaW50Y18wIC8vIDAKICAgIGdldGJpdAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjE2MwogICAgLy8gYXNzZXJ0IGZvbyA9PSAwCiAgICB1bmNvdmVyIDIKICAgICEKICAgIGFzc2VydAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjE2NAogICAgLy8gYXNzZXJ0IGJhcgogICAgc3dhcAogICAgYXNzZXJ0CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTY1CiAgICAvLyBhc3NlcnQgYmF6CiAgICBhc3NlcnQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxNjYKICAgIC8vIHNlbGYuZCA9IGFycgogICAgcHVzaGJ5dGVzICJkIgogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYXJyYXkuaW1tdXRhYmxlLkltbXV0YWJsZUFycmF5Q29udHJhY3QudGVzdF9keW5hbWljX3NpemVkX3R1cGxlX2FycmF5KCkgLT4gdm9pZDoKdGVzdF9keW5hbWljX3NpemVkX3R1cGxlX2FycmF5OgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjE2OC0xNjkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICAvLyBkZWYgdGVzdF9keW5hbWljX3NpemVkX3R1cGxlX2FycmF5KHNlbGYpIC0+IE5vbmU6CiAgICBwcm90byAwIDAKICAgIGJ5dGVjXzIgLy8gIiIKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxNzAKICAgIC8vIGFyciA9IEltbXV0YWJsZUFycmF5W3R1cGxlW1VJbnQ2NCwgQnl0ZXNdXSgpCiAgICBieXRlY18zIC8vIDB4MDAwMAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjE3MwogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDUpOgogICAgaW50Y18wIC8vIDAKCnRlc3RfZHluYW1pY19zaXplZF90dXBsZV9hcnJheV9mb3JfaGVhZGVyQDE6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTczCiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoNSk6CiAgICBmcmFtZV9kaWcgMgogICAgcHVzaGludCA1IC8vIDUKICAgIDwKICAgIGJ6IHRlc3RfZHluYW1pY19zaXplZF90dXBsZV9hcnJheV9hZnRlcl9mb3JANAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjE3NAogICAgLy8gYXJyID0gYXJyLmFwcGVuZCgoaSArIDEsIG9wLmJ6ZXJvKGkpKSkKICAgIGZyYW1lX2RpZyAyCiAgICBkdXAKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBzd2FwCiAgICBiemVybwogICAgZGlnIDEKICAgIGl0b2IKICAgIGRpZyAxCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICB1bmNvdmVyIDIKICAgIGNvbmNhdAogICAgc3dhcAogICAgYnl0ZWMgNiAvLyAweDAwMGEKICAgIGNvbmNhdAogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlYyA0IC8vIDB4MDAwMgogICAgc3dhcAogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgMQogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIHN3YXAKICAgIGV4dHJhY3QgMiAwCiAgICBpbnRjXzEgLy8gMQogICAgdW5jb3ZlciAzCiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudAogICAgZnJhbWVfYnVyeSAxCiAgICBmcmFtZV9idXJ5IDIKICAgIGIgdGVzdF9keW5hbWljX3NpemVkX3R1cGxlX2FycmF5X2Zvcl9oZWFkZXJAMQoKdGVzdF9keW5hbWljX3NpemVkX3R1cGxlX2FycmF5X2FmdGVyX2ZvckA0OgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjE3NgogICAgLy8gYXNzZXJ0IGFyci5sZW5ndGggPT0gNQogICAgZnJhbWVfZGlnIDEKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZHVwCiAgICBmcmFtZV9idXJ5IDAKICAgIHB1c2hpbnQgNSAvLyA1CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTc3CiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoNSk6CiAgICBpbnRjXzAgLy8gMAogICAgZnJhbWVfYnVyeSAyCgp0ZXN0X2R5bmFtaWNfc2l6ZWRfdHVwbGVfYXJyYXlfZm9yX2hlYWRlckA1OgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjE3NwogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDUpOgogICAgZnJhbWVfZGlnIDIKICAgIHB1c2hpbnQgNSAvLyA1CiAgICA8CiAgICBieiB0ZXN0X2R5bmFtaWNfc2l6ZWRfdHVwbGVfYXJyYXlfYWZ0ZXJfZm9yQDgKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxNzgKICAgIC8vIGFzc2VydCBhcnJbaV1bMF0gPT0gaSArIDEsICJleHBlY3RlZCAxc3QgZWxlbWVudCB0byBiZSBjb3JyZWN0IgogICAgZnJhbWVfZGlnIDEKICAgIGV4dHJhY3QgMiAwCiAgICBmcmFtZV9kaWcgMgogICAgZHVwCiAgICBjb3ZlciAyCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgZGlnIDEKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDE2CiAgICBkaWcgMgogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGZyYW1lX2RpZyAwCiAgICBkaWcgMQogICAgLSAvLyBvbiBlcnJvcjogSW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGRpZyAzCiAgICBsZW4KICAgIGRpZyAyCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgZGlnIDUKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDE2CiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgdW5jb3ZlciAzCiAgICB1bmNvdmVyIDMKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50NjQKICAgIGRpZyAxCiAgICBpbnRjXzMgLy8gOAogICAgZXh0cmFjdF91aW50MTYKICAgIGRpZyAyCiAgICBsZW4KICAgIHVuY292ZXIgMwogICAgY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgc3dhcAogICAgZGlnIDIKICAgID09CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgMXN0IGVsZW1lbnQgdG8gYmUgY29ycmVjdAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjE3OQogICAgLy8gYXNzZXJ0IGFycltpXVsxXS5sZW5ndGggPT0gaSwgImV4cGVjdGVkIDJuZCBlbGVtZW50IHRvIGJlIGNvcnJlY3QiCiAgICBleHRyYWN0IDIgMAogICAgbGVuCiAgICB1bmNvdmVyIDIKICAgID09CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgMm5kIGVsZW1lbnQgdG8gYmUgY29ycmVjdAogICAgZnJhbWVfYnVyeSAyCiAgICBiIHRlc3RfZHluYW1pY19zaXplZF90dXBsZV9hcnJheV9mb3JfaGVhZGVyQDUKCnRlc3RfZHluYW1pY19zaXplZF90dXBsZV9hcnJheV9hZnRlcl9mb3JAODoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxODEKICAgIC8vIGFyciA9IGFyci5wb3AoKQogICAgZnJhbWVfZGlnIDEKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9wb3BfZHluYW1pY19lbGVtZW50CiAgICBidXJ5IDEKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxODIKICAgIC8vIGFzc2VydCBhcnIubGVuZ3RoID09IDQKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBkdXAKICAgIHB1c2hpbnQgNCAvLyA0CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTgzCiAgICAvLyBhc3NlcnQgYXJyWzBdID09IChVSW50NjQoMSksIG9wLmJ6ZXJvKDApKSwgImV4cGVjdGVkIDEsIDAiCiAgICBkaWcgMQogICAgZXh0cmFjdCAyIDAKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBkaWcgMgogICAgaW50Y18xIC8vIDEKICAgIC0gLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBkaWcgMgogICAgbGVuCiAgICBkaWcgMwogICAgaW50Y18yIC8vIDIKICAgIGV4dHJhY3RfdWludDE2CiAgICBkaWcgMQogICAgc3dhcAogICAgZGlnIDMKICAgIHNlbGVjdAogICAgZGlnIDQKICAgIHVuY292ZXIgNAogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgZGlnIDEKICAgIGludGNfMyAvLyA4CiAgICBleHRyYWN0X3VpbnQxNgogICAgZGlnIDIKICAgIGxlbgogICAgdW5jb3ZlciAzCiAgICBjb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBleHRyYWN0IDIgMAogICAgc3dhcAogICAgaW50Y18xIC8vIDEKICAgID09CiAgICBpbnRjXzAgLy8gMAogICAgYnplcm8KICAgIHVuY292ZXIgMgogICAgPT0KICAgICYmCiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgMSwgMAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjE4NAogICAgLy8gYXNzZXJ0IGFyclstMV0gPT0gKFVJbnQ2NCg0KSwgb3AuYnplcm8oMykpLCAiZXhwZWN0ZWQgNCwgMyIKICAgIGRpZyAxCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgZGlnIDMKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDE2CiAgICB1bmNvdmVyIDIKICAgIGludGNfMSAvLyAxCiAgICArCiAgICB1bmNvdmVyIDQKICAgIGRpZyAxCiAgICAtIC8vIG9uIGVycm9yOiBJbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgc3dhcAogICAgaW50Y18yIC8vIDIKICAgICoKICAgIGRpZyA0CiAgICBzd2FwCiAgICBleHRyYWN0X3VpbnQxNgogICAgdW5jb3ZlciAzCiAgICBzd2FwCiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgc3Vic3RyaW5nMwogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50NjQKICAgIGRpZyAxCiAgICBpbnRjXzMgLy8gOAogICAgZXh0cmFjdF91aW50MTYKICAgIGRpZyAyCiAgICBsZW4KICAgIHVuY292ZXIgMwogICAgY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgZXh0cmFjdCAyIDAKICAgIHN3YXAKICAgIHB1c2hpbnQgNCAvLyA0CiAgICA9PQogICAgcHVzaGludCAzIC8vIDMKICAgIGJ6ZXJvCiAgICB1bmNvdmVyIDIKICAgID09CiAgICAmJgogICAgYXNzZXJ0IC8vIGV4cGVjdGVkIDQsIDMKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxODUKICAgIC8vIHNlbGYuZSA9IGFycgogICAgcHVzaGJ5dGVzICJlIgogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYXJyYXkuaW1tdXRhYmxlLkltbXV0YWJsZUFycmF5Q29udHJhY3QudGVzdF9keW5hbWljX3NpemVkX25hbWVkX3R1cGxlX2FycmF5KCkgLT4gdm9pZDoKdGVzdF9keW5hbWljX3NpemVkX25hbWVkX3R1cGxlX2FycmF5OgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjE4Ny0xODgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICAvLyBkZWYgdGVzdF9keW5hbWljX3NpemVkX25hbWVkX3R1cGxlX2FycmF5KHNlbGYpIC0+IE5vbmU6CiAgICBwcm90byAwIDAKICAgIGJ5dGVjXzIgLy8gIiIKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxODkKICAgIC8vIGFyciA9IEltbXV0YWJsZUFycmF5W015RHluYW1pY1NpemVkVHVwbGVdKCkKICAgIGJ5dGVjXzMgLy8gMHgwMDAwCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTkyCiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoNSk6CiAgICBpbnRjXzAgLy8gMAoKdGVzdF9keW5hbWljX3NpemVkX25hbWVkX3R1cGxlX2FycmF5X2Zvcl9oZWFkZXJAMToKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxOTIKICAgIC8vIGZvciBpIGluIHVyYW5nZSg1KToKICAgIGZyYW1lX2RpZyAyCiAgICBwdXNoaW50IDUgLy8gNQogICAgPAogICAgYnogdGVzdF9keW5hbWljX3NpemVkX25hbWVkX3R1cGxlX2FycmF5X2FmdGVyX2ZvckA0CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTkzCiAgICAvLyBhcnIgPSBhcnIuYXBwZW5kKE15RHluYW1pY1NpemVkVHVwbGUoZm9vPWkgKyAxLCBiYXI9dGltZXMoaSkpKQogICAgZnJhbWVfZGlnIDIKICAgIGR1cAogICAgaW50Y18xIC8vIDEKICAgICsKICAgIHN3YXAKICAgIGNhbGxzdWIgdGltZXMKICAgIGRpZyAxCiAgICBpdG9iCiAgICBkaWcgMQogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGJ5dGVjIDYgLy8gMHgwMDBhCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYnl0ZWMgNCAvLyAweDAwMDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZnJhbWVfZGlnIDEKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBzd2FwCiAgICBleHRyYWN0IDIgMAogICAgaW50Y18xIC8vIDEKICAgIHVuY292ZXIgMwogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X2NvbmNhdF9keW5hbWljX2VsZW1lbnQKICAgIGZyYW1lX2J1cnkgMQogICAgZnJhbWVfYnVyeSAyCiAgICBiIHRlc3RfZHluYW1pY19zaXplZF9uYW1lZF90dXBsZV9hcnJheV9mb3JfaGVhZGVyQDEKCnRlc3RfZHluYW1pY19zaXplZF9uYW1lZF90dXBsZV9hcnJheV9hZnRlcl9mb3JANDoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxOTUKICAgIC8vIGFzc2VydCBhcnIubGVuZ3RoID09IDUKICAgIGZyYW1lX2RpZyAxCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIGR1cAogICAgZnJhbWVfYnVyeSAwCiAgICBwdXNoaW50IDUgLy8gNQogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjE5NgogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDUpOgogICAgaW50Y18wIC8vIDAKICAgIGZyYW1lX2J1cnkgMgoKdGVzdF9keW5hbWljX3NpemVkX25hbWVkX3R1cGxlX2FycmF5X2Zvcl9oZWFkZXJANToKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxOTYKICAgIC8vIGZvciBpIGluIHVyYW5nZSg1KToKICAgIGZyYW1lX2RpZyAyCiAgICBwdXNoaW50IDUgLy8gNQogICAgPAogICAgYnogdGVzdF9keW5hbWljX3NpemVkX25hbWVkX3R1cGxlX2FycmF5X2FmdGVyX2ZvckA4CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MTk3CiAgICAvLyBhc3NlcnQgYXJyW2ldWzBdID09IGkgKyAxLCAiZXhwZWN0ZWQgMXN0IGVsZW1lbnQgdG8gYmUgY29ycmVjdCIKICAgIGZyYW1lX2RpZyAxCiAgICBleHRyYWN0IDIgMAogICAgZnJhbWVfZGlnIDIKICAgIGR1cAogICAgY292ZXIgMgogICAgaW50Y18yIC8vIDIKICAgICoKICAgIGRpZyAxCiAgICBzd2FwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZGlnIDIKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBmcmFtZV9kaWcgMAogICAgZGlnIDEKICAgIC0gLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBkaWcgMwogICAgbGVuCiAgICBkaWcgMgogICAgaW50Y18yIC8vIDIKICAgICoKICAgIGRpZyA1CiAgICBzd2FwCiAgICBleHRyYWN0X3VpbnQxNgogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIHVuY292ZXIgMwogICAgdW5jb3ZlciAzCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDY0CiAgICBkaWcgMQogICAgaW50Y18zIC8vIDgKICAgIGV4dHJhY3RfdWludDE2CiAgICBkaWcgMgogICAgbGVuCiAgICB1bmNvdmVyIDMKICAgIGNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIHN3YXAKICAgIGRpZyAyCiAgICA9PQogICAgYXNzZXJ0IC8vIGV4cGVjdGVkIDFzdCBlbGVtZW50IHRvIGJlIGNvcnJlY3QKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToxOTgKICAgIC8vIGFzc2VydCBhcnJbaV1bMV0gPT0gdGltZXMoaSksICJleHBlY3RlZCAybmQgZWxlbWVudCB0byBiZSBjb3JyZWN0IgogICAgZXh0cmFjdCAyIDAKICAgIHVuY292ZXIgMgogICAgY2FsbHN1YiB0aW1lcwogICAgPT0KICAgIGFzc2VydCAvLyBleHBlY3RlZCAybmQgZWxlbWVudCB0byBiZSBjb3JyZWN0CiAgICBmcmFtZV9idXJ5IDIKICAgIGIgdGVzdF9keW5hbWljX3NpemVkX25hbWVkX3R1cGxlX2FycmF5X2Zvcl9oZWFkZXJANQoKdGVzdF9keW5hbWljX3NpemVkX25hbWVkX3R1cGxlX2FycmF5X2FmdGVyX2ZvckA4OgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjIwMAogICAgLy8gYXJyID0gYXJyLnBvcCgpCiAgICBmcmFtZV9kaWcgMQogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X3BvcF9keW5hbWljX2VsZW1lbnQKICAgIGJ1cnkgMQogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjIwMQogICAgLy8gYXNzZXJ0IGFyci5sZW5ndGggPT0gNAogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIGR1cAogICAgcHVzaGludCA0IC8vIDQKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyMDIKICAgIC8vIGFzc2VydCBhcnJbMF0gPT0gTXlEeW5hbWljU2l6ZWRUdXBsZShVSW50NjQoMSksIFN0cmluZygpKSwgImV4cGVjdGVkIDEsIDAiCiAgICBkaWcgMQogICAgZXh0cmFjdCAyIDAKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBkaWcgMgogICAgaW50Y18xIC8vIDEKICAgIC0gLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBkaWcgMgogICAgbGVuCiAgICBkaWcgMwogICAgaW50Y18yIC8vIDIKICAgIGV4dHJhY3RfdWludDE2CiAgICBkaWcgMQogICAgc3dhcAogICAgZGlnIDMKICAgIHNlbGVjdAogICAgZGlnIDQKICAgIHVuY292ZXIgNAogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgZGlnIDEKICAgIGludGNfMyAvLyA4CiAgICBleHRyYWN0X3VpbnQxNgogICAgZGlnIDIKICAgIGxlbgogICAgdW5jb3ZlciAzCiAgICBjb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBleHRyYWN0IDIgMAogICAgc3dhcAogICAgaW50Y18xIC8vIDEKICAgID09CiAgICBzd2FwCiAgICBieXRlY18yIC8vICIiCiAgICA9PQogICAgJiYKICAgIGFzc2VydCAvLyBleHBlY3RlZCAxLCAwCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MjAzCiAgICAvLyBhc3NlcnQgYXJyWy0xXSA9PSBNeUR5bmFtaWNTaXplZFR1cGxlKFVJbnQ2NCg0KSwgU3RyaW5nKCIgICAiKSksICJleHBlY3RlZCA0LCAzIgogICAgZGlnIDEKICAgIGludGNfMiAvLyAyCiAgICAqCiAgICBkaWcgMwogICAgc3dhcAogICAgZXh0cmFjdF91aW50MTYKICAgIHVuY292ZXIgMgogICAgaW50Y18xIC8vIDEKICAgICsKICAgIHVuY292ZXIgNAogICAgZGlnIDEKICAgIC0gLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBzd2FwCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgZGlnIDQKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDE2CiAgICB1bmNvdmVyIDMKICAgIHN3YXAKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBzdWJzdHJpbmczCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgZGlnIDEKICAgIGludGNfMyAvLyA4CiAgICBleHRyYWN0X3VpbnQxNgogICAgZGlnIDIKICAgIGxlbgogICAgdW5jb3ZlciAzCiAgICBjb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBleHRyYWN0IDIgMAogICAgc3dhcAogICAgcHVzaGludCA0IC8vIDQKICAgID09CiAgICBzd2FwCiAgICBwdXNoYnl0ZXMgIiAgICIKICAgID09CiAgICAmJgogICAgYXNzZXJ0IC8vIGV4cGVjdGVkIDQsIDMKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyMDQKICAgIC8vIHNlbGYuZiA9IGFycgogICAgcHVzaGJ5dGVzICJmIgogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYXJyYXkuaW1tdXRhYmxlLkltbXV0YWJsZUFycmF5Q29udHJhY3QudGVzdF9pbXBsaWNpdF9jb252ZXJzaW9uX2xvZyhhcnI6IGJ5dGVzKSAtPiB2b2lkOgp0ZXN0X2ltcGxpY2l0X2NvbnZlcnNpb25fbG9nOgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjIwNi0yMDcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICAvLyBkZWYgdGVzdF9pbXBsaWNpdF9jb252ZXJzaW9uX2xvZyhzZWxmLCBhcnI6IEltbXV0YWJsZUFycmF5W1VJbnQ2NF0pIC0+IE5vbmU6CiAgICBwcm90byAxIDAKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyMDgKICAgIC8vIGxvZyhhcnIpCiAgICBmcmFtZV9kaWcgLTEKICAgIGxvZwogICAgcmV0c3ViCgoKLy8gdGVzdF9jYXNlcy5hcnJheS5pbW11dGFibGUuSW1tdXRhYmxlQXJyYXlDb250cmFjdC50ZXN0X2ltcGxpY2l0X2NvbnZlcnNpb25fZW1pdChhcnI6IGJ5dGVzKSAtPiB2b2lkOgp0ZXN0X2ltcGxpY2l0X2NvbnZlcnNpb25fZW1pdDoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyMTAtMjExCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgLy8gZGVmIHRlc3RfaW1wbGljaXRfY29udmVyc2lvbl9lbWl0KHNlbGYsIGFycjogSW1tdXRhYmxlQXJyYXlbVUludDY0XSkgLT4gTm9uZToKICAgIHByb3RvIDEgMAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjIxMgogICAgLy8gYXJjNC5lbWl0KCJlbWl0X3Rlc3QiLCBhcnIpCiAgICBieXRlYyA0IC8vIDB4MDAwMgogICAgZnJhbWVfZGlnIC0xCiAgICBjb25jYXQKICAgIHB1c2hieXRlcyAweGZhNDBjMDUzIC8vIG1ldGhvZCAiZW1pdF90ZXN0KHVpbnQ2NFtdKSIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICByZXRzdWIKCgovLyB0ZXN0X2Nhc2VzLmFycmF5LmltbXV0YWJsZS5JbW11dGFibGVBcnJheUNvbnRyYWN0LnRlc3RfbmVzdGVkX2FycmF5KGFycl90b19hZGQ6IHVpbnQ2NCwgYXJyOiBieXRlcykgLT4gYnl0ZXM6CnRlc3RfbmVzdGVkX2FycmF5OgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjIxNC0yMTcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICAvLyBkZWYgdGVzdF9uZXN0ZWRfYXJyYXkoCiAgICAvLyAgICAgc2VsZiwgYXJyX3RvX2FkZDogVUludDY0LCBhcnI6IEltbXV0YWJsZUFycmF5W0ltbXV0YWJsZUFycmF5W1VJbnQ2NF1dCiAgICAvLyApIC0+IEltbXV0YWJsZUFycmF5W1VJbnQ2NF06CiAgICBwcm90byAyIDEKICAgIGludGNfMCAvLyAwCiAgICBkdXBuIDMKICAgIGJ5dGVjXzIgLy8gIiIKICAgIGR1cG4gNQogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjIxOC0yMTkKICAgIC8vICMgYWRkIG4gbmV3IGFycmF5cwogICAgLy8gZm9yIGkgaW4gdXJhbmdlKGFycl90b19hZGQpOgogICAgaW50Y18wIC8vIDAKCnRlc3RfbmVzdGVkX2FycmF5X2Zvcl9oZWFkZXJAMToKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyMTgtMjE5CiAgICAvLyAjIGFkZCBuIG5ldyBhcnJheXMKICAgIC8vIGZvciBpIGluIHVyYW5nZShhcnJfdG9fYWRkKToKICAgIGZyYW1lX2RpZyAxMAogICAgZnJhbWVfZGlnIC0yCiAgICA8CiAgICBieiB0ZXN0X25lc3RlZF9hcnJheV9hZnRlcl9mb3JAOAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjIyMAogICAgLy8gZXh0cmFfYXJyID0gSW1tdXRhYmxlQXJyYXlbVUludDY0XSgpCiAgICBieXRlY18zIC8vIDB4MDAwMAogICAgZnJhbWVfYnVyeSAxCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MjIxCiAgICAvLyBmb3IgaiBpbiB1cmFuZ2UoaSk6CiAgICBpbnRjXzAgLy8gMAogICAgZnJhbWVfYnVyeSA4Cgp0ZXN0X25lc3RlZF9hcnJheV9mb3JfaGVhZGVyQDM6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MjIxCiAgICAvLyBmb3IgaiBpbiB1cmFuZ2UoaSk6CiAgICBmcmFtZV9kaWcgOAogICAgZnJhbWVfZGlnIDEwCiAgICA8CiAgICBieiB0ZXN0X25lc3RlZF9hcnJheV9hZnRlcl9mb3JANgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjIyMgogICAgLy8gZXh0cmFfYXJyID0gZXh0cmFfYXJyLmFwcGVuZChqKQogICAgZnJhbWVfZGlnIDEKICAgIGV4dHJhY3QgMiAwCiAgICBmcmFtZV9kaWcgOAogICAgZHVwCiAgICBjb3ZlciAyCiAgICBpdG9iCiAgICBjb25jYXQKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzMgLy8gOAogICAgLwogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZnJhbWVfYnVyeSAxCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MjIxCiAgICAvLyBmb3IgaiBpbiB1cmFuZ2UoaSk6CiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSA4CiAgICBiIHRlc3RfbmVzdGVkX2FycmF5X2Zvcl9oZWFkZXJAMwoKdGVzdF9uZXN0ZWRfYXJyYXlfYWZ0ZXJfZm9yQDY6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MjIzCiAgICAvLyBhcnIgPSBhcnIuYXBwZW5kKGV4dHJhX2FycikKICAgIGJ5dGVjIDQgLy8gMHgwMDAyCiAgICBmcmFtZV9kaWcgMQogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZnJhbWVfZGlnIC0xCiAgICBleHRyYWN0IDIgMAogICAgaW50Y18xIC8vIDEKICAgIHVuY292ZXIgMwogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X2NvbmNhdF9keW5hbWljX2VsZW1lbnQKICAgIGZyYW1lX2J1cnkgLTEKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyMTgtMjE5CiAgICAvLyAjIGFkZCBuIG5ldyBhcnJheXMKICAgIC8vIGZvciBpIGluIHVyYW5nZShhcnJfdG9fYWRkKToKICAgIGZyYW1lX2RpZyAxMAogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgMTAKICAgIGIgdGVzdF9uZXN0ZWRfYXJyYXlfZm9yX2hlYWRlckAxCgp0ZXN0X25lc3RlZF9hcnJheV9hZnRlcl9mb3JAODoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyMjUtMjI2CiAgICAvLyAjIHN1bSBpbm5lciBhcnJheXMgYW5kIHJldHVybiBhbiBhcnJheSBjb250YWluaW5nIHN1bXMKICAgIC8vIHRvdGFscyA9IEltbXV0YWJsZUFycmF5W1VJbnQ2NF0oKQogICAgYnl0ZWNfMyAvLyAweDAwMDAKICAgIGZyYW1lX2J1cnkgMwogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjIyNwogICAgLy8gZm9yIGlubmVyX2FyciBpbiBhcnI6CiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZnJhbWVfYnVyeSA0CiAgICBpbnRjXzAgLy8gMAogICAgZnJhbWVfYnVyeSA2Cgp0ZXN0X25lc3RlZF9hcnJheV9mb3JfaGVhZGVyQDk6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MjI3CiAgICAvLyBmb3IgaW5uZXJfYXJyIGluIGFycjoKICAgIGZyYW1lX2RpZyA2CiAgICBmcmFtZV9kaWcgNAogICAgPAogICAgYnogdGVzdF9uZXN0ZWRfYXJyYXlfYWZ0ZXJfZm9yQDEyCiAgICBmcmFtZV9kaWcgLTEKICAgIGV4dHJhY3QgMiAwCiAgICBmcmFtZV9kaWcgNgogICAgaW50Y18yIC8vIDIKICAgICoKICAgIGRpZyAxCiAgICBzd2FwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZHVwMgogICAgZXh0cmFjdF91aW50MTYKICAgIGludGNfMyAvLyA4CiAgICAqCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZXh0cmFjdDMKICAgIGR1cAogICAgZnJhbWVfYnVyeSAyCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MjI4CiAgICAvLyB0b3RhbHMgPSB0b3RhbHMuYXBwZW5kKHN1bV9hcnIoaW5uZXJfYXJyKSkKICAgIGZyYW1lX2RpZyAzCiAgICBleHRyYWN0IDIgMAogICAgZnJhbWVfYnVyeSAwCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6NDI1CiAgICAvLyB0b3RhbCA9IFVJbnQ2NCgpCiAgICBpbnRjXzAgLy8gMAogICAgZnJhbWVfYnVyeSA5CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6NDI2CiAgICAvLyBmb3IgaSBpbiBhcnI6CiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIGZyYW1lX2J1cnkgNQogICAgaW50Y18wIC8vIDAKICAgIGZyYW1lX2J1cnkgNwoKdGVzdF9uZXN0ZWRfYXJyYXlfZm9yX2hlYWRlckAxNDoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTo0MjYKICAgIC8vIGZvciBpIGluIGFycjoKICAgIGZyYW1lX2RpZyA3CiAgICBmcmFtZV9kaWcgNQogICAgPAogICAgYnogdGVzdF9uZXN0ZWRfYXJyYXlfYWZ0ZXJfZm9yQDE2CiAgICBmcmFtZV9kaWcgMgogICAgZXh0cmFjdCAyIDAKICAgIGZyYW1lX2RpZyA3CiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGludGNfMyAvLyA4CiAgICAqCiAgICBleHRyYWN0X3VpbnQ2NAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjQyNwogICAgLy8gdG90YWwgKz0gaQogICAgZnJhbWVfZGlnIDkKICAgICsKICAgIGZyYW1lX2J1cnkgOQogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgNwogICAgYiB0ZXN0X25lc3RlZF9hcnJheV9mb3JfaGVhZGVyQDE0Cgp0ZXN0X25lc3RlZF9hcnJheV9hZnRlcl9mb3JAMTY6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6NDI4CiAgICAvLyByZXR1cm4gdG90YWwKICAgIGZyYW1lX2RpZyA5CiAgICBpdG9iCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MjI4CiAgICAvLyB0b3RhbHMgPSB0b3RhbHMuYXBwZW5kKHN1bV9hcnIoaW5uZXJfYXJyKSkKICAgIGZyYW1lX2RpZyAwCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzMgLy8gOAogICAgLwogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZnJhbWVfYnVyeSAzCiAgICBmcmFtZV9kaWcgNgogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgNgogICAgYiB0ZXN0X25lc3RlZF9hcnJheV9mb3JfaGVhZGVyQDkKCnRlc3RfbmVzdGVkX2FycmF5X2FmdGVyX2ZvckAxMjoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyMzAKICAgIC8vIHJldHVybiB0b3RhbHMKICAgIGZyYW1lX2RpZyAzCiAgICBmcmFtZV9idXJ5IDAKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYXJyYXkuaW1tdXRhYmxlLkltbXV0YWJsZUFycmF5Q29udHJhY3QudGVzdF9iaXRfcGFja2VkX3R1cGxlcygpIC0+IHZvaWQ6CnRlc3RfYml0X3BhY2tlZF90dXBsZXM6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MjMyLTIzMwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIC8vIGRlZiB0ZXN0X2JpdF9wYWNrZWRfdHVwbGVzKHNlbGYpIC0+IE5vbmU6CiAgICBwcm90byAwIDAKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyMzQKICAgIC8vIGFycjIgPSBJbW11dGFibGVBcnJheVtUd29Cb29sVHVwbGVdKCkKICAgIGJ5dGVjXzMgLy8gMHgwMDAwCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MjM1LTIzNwogICAgLy8gYXJyNyA9IEltbXV0YWJsZUFycmF5W1NldmVuQm9vbFR1cGxlXSgpCiAgICAvLyBhcnI4ID0gSW1tdXRhYmxlQXJyYXlbRWlnaHRCb29sVHVwbGVdKCkKICAgIC8vIGFycjkgPSBJbW11dGFibGVBcnJheVtOaW5lQm9vbFR1cGxlXSgpCiAgICBkdXBuIDMKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyNDMKICAgIC8vIGZvciBpIGluIHVyYW5nZSg1KToKICAgIGludGNfMCAvLyAwCgp0ZXN0X2JpdF9wYWNrZWRfdHVwbGVzX2Zvcl9oZWFkZXJAMToKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyNDMKICAgIC8vIGZvciBpIGluIHVyYW5nZSg1KToKICAgIGZyYW1lX2RpZyA0CiAgICBwdXNoaW50IDUgLy8gNQogICAgPAogICAgYnogdGVzdF9iaXRfcGFja2VkX3R1cGxlc19hZnRlcl9mb3JANAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjI0NAogICAgLy8gYXJyMiA9IGFycjIuYXBwZW5kKFR3b0Jvb2xUdXBsZShhPWkgPT0gMCwgYj1pID09IDEpKQogICAgZnJhbWVfZGlnIDAKICAgIGV4dHJhY3QgMiAwCiAgICBmcmFtZV9kaWcgNAogICAgZHVwCiAgICAhCiAgICBkaWcgMQogICAgaW50Y18xIC8vIDEKICAgID09CiAgICBieXRlY18wIC8vIDB4MDAKICAgIGJ5dGVjIDUgLy8gMHg4MAogICAgdW5jb3ZlciAzCiAgICBzZWxlY3QKICAgIGR1cAogICAgaW50Y18xIC8vIDEKICAgIGRpZyAzCiAgICBzZXRiaXQKICAgIHVuY292ZXIgNAogICAgc3dhcAogICAgY29uY2F0CiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZnJhbWVfYnVyeSAwCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MjQ1LTI1NwogICAgLy8gYXJyNyA9IGFycjcuYXBwZW5kKAogICAgLy8gICAgIFNldmVuQm9vbFR1cGxlKAogICAgLy8gICAgICAgICBmb289aSwKICAgIC8vICAgICAgICAgYmFyPWkgKyAxLAogICAgLy8gICAgICAgICBhPWkgPT0gMCwKICAgIC8vICAgICAgICAgYj1pID09IDEsCiAgICAvLyAgICAgICAgIGM9aSA9PSAyLAogICAgLy8gICAgICAgICBkPWkgPT0gMywKICAgIC8vICAgICAgICAgZT1pID09IDQsCiAgICAvLyAgICAgICAgIGY9aSA9PSA1LAogICAgLy8gICAgICAgICBnPWkgPT0gNiwKICAgIC8vICAgICApCiAgICAvLyApCiAgICBmcmFtZV9kaWcgMQogICAgZXh0cmFjdCAyIDAKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyNTEKICAgIC8vIGM9aSA9PSAyLAogICAgZGlnIDMKICAgIGludGNfMiAvLyAyCiAgICA9PQogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjI1MgogICAgLy8gZD1pID09IDMsCiAgICBkaWcgNAogICAgcHVzaGludCAzIC8vIDMKICAgID09CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MjUzCiAgICAvLyBlPWkgPT0gNCwKICAgIGRpZyA1CiAgICBwdXNoaW50IDQgLy8gNAogICAgPT0KICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyNTQKICAgIC8vIGY9aSA9PSA1LAogICAgZGlnIDYKICAgIHB1c2hpbnQgNSAvLyA1CiAgICA9PQogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjI1NQogICAgLy8gZz1pID09IDYsCiAgICBkaWcgNwogICAgcHVzaGludCA2IC8vIDYKICAgID09CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MjQ4CiAgICAvLyBiYXI9aSArIDEsCiAgICBkaWcgOAogICAgaW50Y18xIC8vIDEKICAgICsKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyNDcKICAgIC8vIGZvbz1pLAogICAgZGlnIDkKICAgIGl0b2IKICAgIHVuY292ZXIgOAogICAgY29uY2F0CiAgICBwdXNoaW50IDY1IC8vIDY1CiAgICB1bmNvdmVyIDkKICAgIHNldGJpdAogICAgcHVzaGludCA2NiAvLyA2NgogICAgdW5jb3ZlciA3CiAgICBzZXRiaXQKICAgIHB1c2hpbnQgNjcgLy8gNjcKICAgIHVuY292ZXIgNgogICAgc2V0Yml0CiAgICBwdXNoaW50IDY4IC8vIDY4CiAgICB1bmNvdmVyIDUKICAgIHNldGJpdAogICAgcHVzaGludCA2OSAvLyA2OQogICAgdW5jb3ZlciA0CiAgICBzZXRiaXQKICAgIHB1c2hpbnQgNzAgLy8gNzAKICAgIHVuY292ZXIgMwogICAgc2V0Yml0CiAgICBkaWcgMQogICAgaXRvYgogICAgZHVwMgogICAgY29uY2F0CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MjQ1LTI1NwogICAgLy8gYXJyNyA9IGFycjcuYXBwZW5kKAogICAgLy8gICAgIFNldmVuQm9vbFR1cGxlKAogICAgLy8gICAgICAgICBmb289aSwKICAgIC8vICAgICAgICAgYmFyPWkgKyAxLAogICAgLy8gICAgICAgICBhPWkgPT0gMCwKICAgIC8vICAgICAgICAgYj1pID09IDEsCiAgICAvLyAgICAgICAgIGM9aSA9PSAyLAogICAgLy8gICAgICAgICBkPWkgPT0gMywKICAgIC8vICAgICAgICAgZT1pID09IDQsCiAgICAvLyAgICAgICAgIGY9aSA9PSA1LAogICAgLy8gICAgICAgICBnPWkgPT0gNiwKICAgIC8vICAgICApCiAgICAvLyApCiAgICB1bmNvdmVyIDQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZHVwCiAgICBsZW4KICAgIHB1c2hpbnQgMTcgLy8gMTcKICAgIC8KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGZyYW1lX2J1cnkgMQogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjI1OC0yNzEKICAgIC8vIGFycjggPSBhcnI4LmFwcGVuZCgKICAgIC8vICAgICBFaWdodEJvb2xUdXBsZSgKICAgIC8vICAgICAgICAgZm9vPWksCiAgICAvLyAgICAgICAgIGJhcj1pICsgMSwKICAgIC8vICAgICAgICAgYT1pID09IDAsCiAgICAvLyAgICAgICAgIGI9aSA9PSAxLAogICAgLy8gICAgICAgICBjPWkgPT0gMiwKICAgIC8vICAgICAgICAgZD1pID09IDMsCiAgICAvLyAgICAgICAgIGU9aSA9PSA0LAogICAgLy8gICAgICAgICBmPWkgPT0gNSwKICAgIC8vICAgICAgICAgZz1pID09IDYsCiAgICAvLyAgICAgICAgIGg9aSA9PSA3LAogICAgLy8gICAgICkKICAgIC8vICkKICAgIGZyYW1lX2RpZyAyCiAgICBleHRyYWN0IDIgMAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjI2OQogICAgLy8gaD1pID09IDcsCiAgICBkaWcgNAogICAgcHVzaGludCA3IC8vIDcKICAgID09CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MjYwCiAgICAvLyBmb289aSwKICAgIHVuY292ZXIgMwogICAgcHVzaGludCA3MSAvLyA3MQogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGR1cAogICAgZGlnIDMKICAgIGNvbmNhdAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjI1OC0yNzEKICAgIC8vIGFycjggPSBhcnI4LmFwcGVuZCgKICAgIC8vICAgICBFaWdodEJvb2xUdXBsZSgKICAgIC8vICAgICAgICAgZm9vPWksCiAgICAvLyAgICAgICAgIGJhcj1pICsgMSwKICAgIC8vICAgICAgICAgYT1pID09IDAsCiAgICAvLyAgICAgICAgIGI9aSA9PSAxLAogICAgLy8gICAgICAgICBjPWkgPT0gMiwKICAgIC8vICAgICAgICAgZD1pID09IDMsCiAgICAvLyAgICAgICAgIGU9aSA9PSA0LAogICAgLy8gICAgICAgICBmPWkgPT0gNSwKICAgIC8vICAgICAgICAgZz1pID09IDYsCiAgICAvLyAgICAgICAgIGg9aSA9PSA3LAogICAgLy8gICAgICkKICAgIC8vICkKICAgIHVuY292ZXIgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCAxNyAvLyAxNwogICAgLwogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZnJhbWVfYnVyeSAyCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MjcyLTI4NgogICAgLy8gYXJyOSA9IGFycjkuYXBwZW5kKAogICAgLy8gICAgIE5pbmVCb29sVHVwbGUoCiAgICAvLyAgICAgICAgIGZvbz1pLAogICAgLy8gICAgICAgICBiYXI9aSArIDEsCiAgICAvLyAgICAgICAgIGE9aSA9PSAwLAogICAgLy8gICAgICAgICBiPWkgPT0gMSwKICAgIC8vICAgICAgICAgYz1pID09IDIsCiAgICAvLyAgICAgICAgIGQ9aSA9PSAzLAogICAgLy8gICAgICAgICBlPWkgPT0gNCwKICAgIC8vICAgICAgICAgZj1pID09IDUsCiAgICAvLyAgICAgICAgIGc9aSA9PSA2LAogICAgLy8gICAgICAgICBoPWkgPT0gNywKICAgIC8vICAgICAgICAgaT1pID09IDgsCiAgICAvLyAgICAgKQogICAgLy8gKQogICAgZnJhbWVfZGlnIDMKICAgIGV4dHJhY3QgMiAwCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6Mjg0CiAgICAvLyBpPWkgPT0gOCwKICAgIHVuY292ZXIgNAogICAgaW50Y18zIC8vIDgKICAgID09CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6Mjc0CiAgICAvLyBmb289aSwKICAgIGJ5dGVjXzAgLy8gMHgwMAogICAgaW50Y18wIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICB1bmNvdmVyIDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyNzItMjg2CiAgICAvLyBhcnI5ID0gYXJyOS5hcHBlbmQoCiAgICAvLyAgICAgTmluZUJvb2xUdXBsZSgKICAgIC8vICAgICAgICAgZm9vPWksCiAgICAvLyAgICAgICAgIGJhcj1pICsgMSwKICAgIC8vICAgICAgICAgYT1pID09IDAsCiAgICAvLyAgICAgICAgIGI9aSA9PSAxLAogICAgLy8gICAgICAgICBjPWkgPT0gMiwKICAgIC8vICAgICAgICAgZD1pID09IDMsCiAgICAvLyAgICAgICAgIGU9aSA9PSA0LAogICAgLy8gICAgICAgICBmPWkgPT0gNSwKICAgIC8vICAgICAgICAgZz1pID09IDYsCiAgICAvLyAgICAgICAgIGg9aSA9PSA3LAogICAgLy8gICAgICAgICBpPWkgPT0gOCwKICAgIC8vICAgICApCiAgICAvLyApCiAgICBjb25jYXQKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDE4IC8vIDE4CiAgICAvCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBmcmFtZV9idXJ5IDMKICAgIGZyYW1lX2J1cnkgNAogICAgYiB0ZXN0X2JpdF9wYWNrZWRfdHVwbGVzX2Zvcl9oZWFkZXJAMQoKdGVzdF9iaXRfcGFja2VkX3R1cGxlc19hZnRlcl9mb3JANDoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyODgKICAgIC8vIGFzc2VydCBhcnIyLmxlbmd0aCA9PSA1CiAgICBmcmFtZV9kaWcgMAogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIHB1c2hpbnQgNSAvLyA1CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6Mjg5CiAgICAvLyBhc3NlcnQgYXJyNy5sZW5ndGggPT0gNQogICAgZnJhbWVfZGlnIDEKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBwdXNoaW50IDUgLy8gNQogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjI5MAogICAgLy8gYXNzZXJ0IGFycjgubGVuZ3RoID09IDUKICAgIGZyYW1lX2RpZyAyCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgcHVzaGludCA1IC8vIDUKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyOTEKICAgIC8vIGFzc2VydCBhcnI5Lmxlbmd0aCA9PSA1CiAgICBmcmFtZV9kaWcgMwogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIHB1c2hpbnQgNSAvLyA1CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MjkyCiAgICAvLyBzZWxmLmJvb2wyID0gYXJyMgogICAgcHVzaGJ5dGVzICJib29sMiIKICAgIHVuY292ZXIgNAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyOTMKICAgIC8vIHNlbGYuYm9vbDcgPSBhcnI3CiAgICBwdXNoYnl0ZXMgImJvb2w3IgogICAgdW5jb3ZlciAzCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjI5NAogICAgLy8gc2VsZi5ib29sOCA9IGFycjgKICAgIHB1c2hieXRlcyAiYm9vbDgiCiAgICB1bmNvdmVyIDIKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6Mjk1CiAgICAvLyBzZWxmLmJvb2w5ID0gYXJyOQogICAgcHVzaGJ5dGVzICJib29sOSIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICByZXRzdWIKCgovLyB0ZXN0X2Nhc2VzLmFycmF5LmltbXV0YWJsZS5JbW11dGFibGVBcnJheUNvbnRyYWN0LnN1bV91aW50c19hbmRfbGVuZ3Roc19hbmRfdHJ1ZXMoYXJyMTogYnl0ZXMsIGFycjI6IGJ5dGVzLCBhcnIzOiBieXRlcywgYXJyNDogYnl0ZXMpIC0+IHVpbnQ2NCwgdWludDY0LCB1aW50NjQsIHVpbnQ2NDoKc3VtX3VpbnRzX2FuZF9sZW5ndGhzX2FuZF90cnVlczoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weToyOTctMzA0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgLy8gZGVmIHN1bV91aW50c19hbmRfbGVuZ3Roc19hbmRfdHJ1ZXMoCiAgICAvLyAgICAgc2VsZiwKICAgIC8vICAgICBhcnIxOiBJbW11dGFibGVBcnJheVtVSW50NjRdLAogICAgLy8gICAgIGFycjI6IEltbXV0YWJsZUFycmF5W2Jvb2xdLAogICAgLy8gICAgIGFycjM6IEltbXV0YWJsZUFycmF5W015VHVwbGVdLAogICAgLy8gICAgIGFycjQ6IEltbXV0YWJsZUFycmF5W015RHluYW1pY1NpemVkVHVwbGVdLAogICAgLy8gKSAtPiB0dXBsZVtVSW50NjQsIFVJbnQ2NCwgVUludDY0LCBVSW50NjRdOgogICAgcHJvdG8gNCA0CiAgICBieXRlY18yIC8vICIiCiAgICBkdXBuIDgKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozMDUKICAgIC8vIHN1bTEgPSBzdW0yID0gc3VtMyA9IHN1bTQgPSBVSW50NjQoKQogICAgaW50Y18wIC8vIDAKICAgIGR1cG4gMwogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjMwNgogICAgLy8gZm9yIGkgaW4gYXJyMToKICAgIGZyYW1lX2RpZyAtNAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBpbnRjXzAgLy8gMAoKc3VtX3VpbnRzX2FuZF9sZW5ndGhzX2FuZF90cnVlc19mb3JfaGVhZGVyQDE6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzA2CiAgICAvLyBmb3IgaSBpbiBhcnIxOgogICAgZnJhbWVfZGlnIDE0CiAgICBmcmFtZV9kaWcgMTMKICAgIDwKICAgIGJ6IHN1bV91aW50c19hbmRfbGVuZ3Roc19hbmRfdHJ1ZXNfYWZ0ZXJfZm9yQDQKICAgIGZyYW1lX2RpZyAtNAogICAgZXh0cmFjdCAyIDAKICAgIGZyYW1lX2RpZyAxNAogICAgZHVwCiAgICBjb3ZlciAyCiAgICBpbnRjXzMgLy8gOAogICAgKgogICAgZXh0cmFjdF91aW50NjQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozMDcKICAgIC8vIHN1bTEgKz0gaQogICAgZnJhbWVfZGlnIDEyCiAgICArCiAgICBmcmFtZV9idXJ5IDEyCiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSAxNAogICAgYiBzdW1fdWludHNfYW5kX2xlbmd0aHNfYW5kX3RydWVzX2Zvcl9oZWFkZXJAMQoKc3VtX3VpbnRzX2FuZF9sZW5ndGhzX2FuZF90cnVlc19hZnRlcl9mb3JANDoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozMDgKICAgIC8vIGZvciBiIGluIGFycjI6CiAgICBmcmFtZV9kaWcgLTMKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZnJhbWVfYnVyeSAwCiAgICBpbnRjXzAgLy8gMAogICAgZnJhbWVfYnVyeSA0CgpzdW1fdWludHNfYW5kX2xlbmd0aHNfYW5kX3RydWVzX2Zvcl9oZWFkZXJANToKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozMDgKICAgIC8vIGZvciBiIGluIGFycjI6CiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIDAKICAgIDwKICAgIGJ6IHN1bV91aW50c19hbmRfbGVuZ3Roc19hbmRfdHJ1ZXNfYWZ0ZXJfZm9yQDEwCiAgICBmcmFtZV9kaWcgLTMKICAgIGV4dHJhY3QgMiAwCiAgICBmcmFtZV9kaWcgNAogICAgZ2V0Yml0CiAgICBieXRlY18wIC8vIDB4MDAKICAgIGludGNfMCAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgaW50Y18wIC8vIDAKICAgIGdldGJpdAogICAgZnJhbWVfZGlnIDExCiAgICBmcmFtZV9idXJ5IDYKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozMDkKICAgIC8vIGlmIGI6CiAgICBieiBzdW1fdWludHNfYW5kX2xlbmd0aHNfYW5kX3RydWVzX2FmdGVyX2lmX2Vsc2VAOAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjMxMAogICAgLy8gc3VtMiArPSAxCiAgICBmcmFtZV9kaWcgMTEKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDYKCnN1bV91aW50c19hbmRfbGVuZ3Roc19hbmRfdHJ1ZXNfYWZ0ZXJfaWZfZWxzZUA4OgogICAgZnJhbWVfZGlnIDYKICAgIGZyYW1lX2J1cnkgMTEKICAgIGZyYW1lX2RpZyA0CiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSA0CiAgICBiIHN1bV91aW50c19hbmRfbGVuZ3Roc19hbmRfdHJ1ZXNfZm9yX2hlYWRlckA1CgpzdW1fdWludHNfYW5kX2xlbmd0aHNfYW5kX3RydWVzX2FmdGVyX2ZvckAxMDoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozMTEKICAgIC8vIGZvciB0dXAgaW4gYXJyMzoKICAgIGZyYW1lX2RpZyAtMgogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBmcmFtZV9idXJ5IDEKICAgIGludGNfMCAvLyAwCiAgICBmcmFtZV9idXJ5IDUKCnN1bV91aW50c19hbmRfbGVuZ3Roc19hbmRfdHJ1ZXNfZm9yX2hlYWRlckAxMToKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozMTEKICAgIC8vIGZvciB0dXAgaW4gYXJyMzoKICAgIGZyYW1lX2RpZyA1CiAgICBmcmFtZV9kaWcgMQogICAgPAogICAgYnogc3VtX3VpbnRzX2FuZF9sZW5ndGhzX2FuZF90cnVlc19hZnRlcl9mb3JAMTgKICAgIGZyYW1lX2RpZyAtMgogICAgZXh0cmFjdCAyIDAKICAgIGZyYW1lX2RpZyA1CiAgICBwdXNoaW50IDkgLy8gOQogICAgKgogICAgcHVzaGludCA5IC8vIDkKICAgIGV4dHJhY3QzIC8vIG9uIGVycm9yOiBJbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50NjQKICAgIGRpZyAxCiAgICBwdXNoaW50IDY0IC8vIDY0CiAgICBnZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgwMAogICAgaW50Y18wIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBpbnRjXzAgLy8gMAogICAgZ2V0Yml0CiAgICB1bmNvdmVyIDIKICAgIHB1c2hpbnQgNjUgLy8gNjUKICAgIGdldGJpdAogICAgYnl0ZWNfMCAvLyAweDAwCiAgICBpbnRjXzAgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGludGNfMCAvLyAwCiAgICBnZXRiaXQKICAgIGZyYW1lX2J1cnkgOAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjMxMgogICAgLy8gc3VtMyArPSB0dXAuZm9vCiAgICBmcmFtZV9kaWcgMTAKICAgIHVuY292ZXIgMgogICAgKwogICAgZHVwCiAgICBmcmFtZV9idXJ5IDEwCiAgICBmcmFtZV9idXJ5IDcKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozMTMKICAgIC8vIGlmIHR1cC5iYXI6CiAgICBieiBzdW1fdWludHNfYW5kX2xlbmd0aHNfYW5kX3RydWVzX2FmdGVyX2lmX2Vsc2VAMTQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozMTQKICAgIC8vIHN1bTMgKz0gMQogICAgZnJhbWVfZGlnIDEwCiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSA3CgpzdW1fdWludHNfYW5kX2xlbmd0aHNfYW5kX3RydWVzX2FmdGVyX2lmX2Vsc2VAMTQ6CiAgICBmcmFtZV9kaWcgNwogICAgZHVwCiAgICBmcmFtZV9idXJ5IDEwCiAgICBmcmFtZV9idXJ5IDcKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozMTUKICAgIC8vIGlmIHR1cC5iYXo6CiAgICBmcmFtZV9kaWcgOAogICAgYnogc3VtX3VpbnRzX2FuZF9sZW5ndGhzX2FuZF90cnVlc19hZnRlcl9pZl9lbHNlQDE2CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzE2CiAgICAvLyBzdW0zICs9IDEKICAgIGZyYW1lX2RpZyAxMAogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgNwoKc3VtX3VpbnRzX2FuZF9sZW5ndGhzX2FuZF90cnVlc19hZnRlcl9pZl9lbHNlQDE2OgogICAgZnJhbWVfZGlnIDcKICAgIGZyYW1lX2J1cnkgMTAKICAgIGZyYW1lX2RpZyA1CiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSA1CiAgICBiIHN1bV91aW50c19hbmRfbGVuZ3Roc19hbmRfdHJ1ZXNfZm9yX2hlYWRlckAxMQoKc3VtX3VpbnRzX2FuZF9sZW5ndGhzX2FuZF90cnVlc19hZnRlcl9mb3JAMTg6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzE3CiAgICAvLyBmb3IgaWR4LCBkeW5fdHVwIGluIHVlbnVtZXJhdGUoYXJyNCk6CiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZnJhbWVfYnVyeSAyCiAgICBpbnRjXzAgLy8gMAogICAgZnJhbWVfYnVyeSAzCgpzdW1fdWludHNfYW5kX2xlbmd0aHNfYW5kX3RydWVzX2Zvcl9oZWFkZXJAMTk6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzE3CiAgICAvLyBmb3IgaWR4LCBkeW5fdHVwIGluIHVlbnVtZXJhdGUoYXJyNCk6CiAgICBmcmFtZV9kaWcgMwogICAgZnJhbWVfZGlnIDIKICAgIDwKICAgIGJ6IHN1bV91aW50c19hbmRfbGVuZ3Roc19hbmRfdHJ1ZXNfYWZ0ZXJfZm9yQDIyCiAgICBmcmFtZV9kaWcgLTEKICAgIGV4dHJhY3QgMiAwCiAgICBmcmFtZV9kaWcgMwogICAgZHVwCiAgICBjb3ZlciAyCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgZGlnIDEKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDE2CiAgICBkaWcgMgogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGZyYW1lX2RpZyAyCiAgICBkaWcgMQogICAgLSAvLyBvbiBlcnJvcjogSW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGRpZyAzCiAgICBsZW4KICAgIGRpZyAyCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgZGlnIDUKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDE2CiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgdW5jb3ZlciAzCiAgICB1bmNvdmVyIDMKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50NjQKICAgIGRpZyAxCiAgICBpbnRjXzMgLy8gOAogICAgZXh0cmFjdF91aW50MTYKICAgIGRpZyAyCiAgICBsZW4KICAgIHVuY292ZXIgMwogICAgY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgZXh0cmFjdCAyIDAKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozMTgKICAgIC8vIHN1bTQgKz0gZHluX3R1cC5mb28KICAgIGZyYW1lX2RpZyA5CiAgICB1bmNvdmVyIDIKICAgICsKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozMTkKICAgIC8vIHN1bTQgKz0gZHluX3R1cC5iYXIuYnl0ZXMubGVuZ3RoCiAgICBzd2FwCiAgICBsZW4KICAgIHN3YXAKICAgIGRpZyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDkKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozMjAKICAgIC8vIGFzc2VydCBkeW5fdHVwLmJhci5ieXRlcy5sZW5ndGggPT0gaWR4LCAiZXhwZWN0ZWQgc3RyaW5nIGxlbmd0aCB0byBtYXRjaCBpbmRleCIKICAgIHVuY292ZXIgMgogICAgPT0KICAgIGFzc2VydCAvLyBleHBlY3RlZCBzdHJpbmcgbGVuZ3RoIHRvIG1hdGNoIGluZGV4CiAgICBmcmFtZV9idXJ5IDMKICAgIGIgc3VtX3VpbnRzX2FuZF9sZW5ndGhzX2FuZF90cnVlc19mb3JfaGVhZGVyQDE5CgpzdW1fdWludHNfYW5kX2xlbmd0aHNfYW5kX3RydWVzX2FmdGVyX2ZvckAyMjoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozMjIKICAgIC8vIHJldHVybiBzdW0xLCBzdW0yLCBzdW0zLCBzdW00CiAgICBmcmFtZV9kaWcgMTIKICAgIGZyYW1lX2RpZyAxMQogICAgZnJhbWVfZGlnIDEwCiAgICBmcmFtZV9kaWcgOQogICAgZnJhbWVfYnVyeSAzCiAgICBmcmFtZV9idXJ5IDIKICAgIGZyYW1lX2J1cnkgMQogICAgZnJhbWVfYnVyeSAwCiAgICByZXRzdWIKCgovLyB0ZXN0X2Nhc2VzLmFycmF5LmltbXV0YWJsZS5JbW11dGFibGVBcnJheUNvbnRyYWN0LnRlc3RfdWludDY0X3JldHVybihhcHBlbmQ6IHVpbnQ2NCkgLT4gYnl0ZXM6CnRlc3RfdWludDY0X3JldHVybjoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozMjQtMzI1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgLy8gZGVmIHRlc3RfdWludDY0X3JldHVybihzZWxmLCBhcHBlbmQ6IFVJbnQ2NCkgLT4gSW1tdXRhYmxlQXJyYXlbVUludDY0XToKICAgIHByb3RvIDEgMQogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjMyNgogICAgLy8gYXJyID0gSW1tdXRhYmxlQXJyYXkoVUludDY0KDEpLCBVSW50NjQoMiksIFVJbnQ2NCgzKSkKICAgIHB1c2hieXRlcyAweDAwMDMwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAwMDAwMDAwMDMKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozMjcKICAgIC8vIGZvciBpIGluIHVyYW5nZShhcHBlbmQpOgogICAgaW50Y18wIC8vIDAKCnRlc3RfdWludDY0X3JldHVybl9mb3JfaGVhZGVyQDE6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzI3CiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoYXBwZW5kKToKICAgIGZyYW1lX2RpZyAxCiAgICBmcmFtZV9kaWcgLTEKICAgIDwKICAgIGJ6IHRlc3RfdWludDY0X3JldHVybl9hZnRlcl9mb3JANAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjMyOAogICAgLy8gYXJyID0gYXJyLmFwcGVuZChpKQogICAgZnJhbWVfZGlnIDAKICAgIGV4dHJhY3QgMiAwCiAgICBmcmFtZV9kaWcgMQogICAgZHVwCiAgICBjb3ZlciAyCiAgICBpdG9iCiAgICBjb25jYXQKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzMgLy8gOAogICAgLwogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZnJhbWVfYnVyeSAwCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzI3CiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoYXBwZW5kKToKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDEKICAgIGIgdGVzdF91aW50NjRfcmV0dXJuX2Zvcl9oZWFkZXJAMQoKdGVzdF91aW50NjRfcmV0dXJuX2FmdGVyX2ZvckA0OgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjMyOQogICAgLy8gcmV0dXJuIGFycgogICAgcmV0c3ViCgoKLy8gdGVzdF9jYXNlcy5hcnJheS5pbW11dGFibGUuSW1tdXRhYmxlQXJyYXlDb250cmFjdC50ZXN0X2Jvb2xfcmV0dXJuKGFwcGVuZDogdWludDY0KSAtPiBieXRlczoKdGVzdF9ib29sX3JldHVybjoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozMzEtMzMyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgLy8gZGVmIHRlc3RfYm9vbF9yZXR1cm4oc2VsZiwgYXBwZW5kOiBVSW50NjQpIC0+IEltbXV0YWJsZUFycmF5W2Jvb2xdOgogICAgcHJvdG8gMSAxCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzMzCiAgICAvLyBhcnIgPSBJbW11dGFibGVBcnJheShUcnVlLCBGYWxzZSwgVHJ1ZSwgRmFsc2UsIFRydWUpCiAgICBieXRlY18zIC8vIDB4MDAwMAogICAgcHVzaGJ5dGVzIDB4ODAwMDgwMDA4MAogICAgcHVzaGludCA1IC8vIDUKICAgIGludGNfMyAvLyA4CiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfY29uY2F0X2JpdHMKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozMzQKICAgIC8vIGZvciBpIGluIHVyYW5nZShhcHBlbmQpOgogICAgaW50Y18wIC8vIDAKCnRlc3RfYm9vbF9yZXR1cm5fZm9yX2hlYWRlckAxOgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjMzNAogICAgLy8gZm9yIGkgaW4gdXJhbmdlKGFwcGVuZCk6CiAgICBmcmFtZV9kaWcgMQogICAgZnJhbWVfZGlnIC0xCiAgICA8CiAgICBieiB0ZXN0X2Jvb2xfcmV0dXJuX2FmdGVyX2ZvckA0CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzM1CiAgICAvLyBhcnIgPSBhcnIuYXBwZW5kKGkgJSAyID09IDApCiAgICBmcmFtZV9kaWcgMQogICAgZHVwCiAgICBpbnRjXzIgLy8gMgogICAgJQogICAgIQogICAgYnl0ZWNfMCAvLyAweDAwCiAgICBpbnRjXzAgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGZyYW1lX2RpZyAwCiAgICBzd2FwCiAgICBpbnRjXzEgLy8gMQogICAgaW50Y18zIC8vIDgKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9jb25jYXRfYml0cwogICAgZnJhbWVfYnVyeSAwCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzM0CiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoYXBwZW5kKToKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDEKICAgIGIgdGVzdF9ib29sX3JldHVybl9mb3JfaGVhZGVyQDEKCnRlc3RfYm9vbF9yZXR1cm5fYWZ0ZXJfZm9yQDQ6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzM2CiAgICAvLyByZXR1cm4gYXJyCiAgICByZXRzdWIKCgovLyB0ZXN0X2Nhc2VzLmFycmF5LmltbXV0YWJsZS5JbW11dGFibGVBcnJheUNvbnRyYWN0LnRlc3RfdHVwbGVfcmV0dXJuKGFwcGVuZDogdWludDY0KSAtPiBieXRlczoKdGVzdF90dXBsZV9yZXR1cm46CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzM4LTMzOQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIC8vIGRlZiB0ZXN0X3R1cGxlX3JldHVybihzZWxmLCBhcHBlbmQ6IFVJbnQ2NCkgLT4gSW1tdXRhYmxlQXJyYXlbTXlUdXBsZV06CiAgICBwcm90byAxIDEKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozNDAKICAgIC8vIGFyciA9IEltbXV0YWJsZUFycmF5KE15VHVwbGUoVUludDY0KCksIFRydWUsIEZhbHNlKSkKICAgIHB1c2hieXRlcyAweDAwMDEwMDAwMDAwMDAwMDAwMDAwODAKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozNDEKICAgIC8vIGZvciBpIGluIHVyYW5nZShhcHBlbmQpOgogICAgaW50Y18wIC8vIDAKCnRlc3RfdHVwbGVfcmV0dXJuX2Zvcl9oZWFkZXJAMToKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozNDEKICAgIC8vIGZvciBpIGluIHVyYW5nZShhcHBlbmQpOgogICAgZnJhbWVfZGlnIDEKICAgIGZyYW1lX2RpZyAtMQogICAgPAogICAgYnogdGVzdF90dXBsZV9yZXR1cm5fYWZ0ZXJfZm9yQDQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozNDIKICAgIC8vIGFyciA9IGFyci5hcHBlbmQoTXlUdXBsZShmb289aSwgYmFyPWkgJSAyID09IDAsIGJhej1pICUgMyA9PSAwKSkKICAgIGZyYW1lX2RpZyAwCiAgICBleHRyYWN0IDIgMAogICAgZnJhbWVfZGlnIDEKICAgIGR1cAogICAgaW50Y18yIC8vIDIKICAgICUKICAgICEKICAgIGRpZyAxCiAgICBwdXNoaW50IDMgLy8gMwogICAgJQogICAgIQogICAgZGlnIDIKICAgIGl0b2IKICAgIGJ5dGVjXzAgLy8gMHgwMAogICAgYnl0ZWMgNSAvLyAweDgwCiAgICB1bmNvdmVyIDQKICAgIHNlbGVjdAogICAgY29uY2F0CiAgICBwdXNoaW50IDY1IC8vIDY1CiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgdW5jb3ZlciAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDkgLy8gOQogICAgLwogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZnJhbWVfYnVyeSAwCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzQxCiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoYXBwZW5kKToKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDEKICAgIGIgdGVzdF90dXBsZV9yZXR1cm5fZm9yX2hlYWRlckAxCgp0ZXN0X3R1cGxlX3JldHVybl9hZnRlcl9mb3JANDoKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozNDMKICAgIC8vIHJldHVybiBhcnIKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYXJyYXkuaW1tdXRhYmxlLkltbXV0YWJsZUFycmF5Q29udHJhY3QudGVzdF9keW5hbWljX3R1cGxlX3JldHVybihhcHBlbmQ6IHVpbnQ2NCkgLT4gYnl0ZXM6CnRlc3RfZHluYW1pY190dXBsZV9yZXR1cm46CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzQ1LTM0NgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIC8vIGRlZiB0ZXN0X2R5bmFtaWNfdHVwbGVfcmV0dXJuKHNlbGYsIGFwcGVuZDogVUludDY0KSAtPiBJbW11dGFibGVBcnJheVtNeUR5bmFtaWNTaXplZFR1cGxlXToKICAgIHByb3RvIDEgMQogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjM0NwogICAgLy8gYXJyID0gSW1tdXRhYmxlQXJyYXkoTXlEeW5hbWljU2l6ZWRUdXBsZShVSW50NjQoKSwgU3RyaW5nKCJIZWxsbyIpKSkKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18yIC8vIDB4CiAgICBpbnRjXzEgLy8gMQogICAgcHVzaGJ5dGVzIDB4MDAwMjAwMDAwMDAwMDAwMDAwMDAwMDBhMDAwNTQ4NjU2YzZjNmYKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzQ4CiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoYXBwZW5kKToKICAgIGludGNfMCAvLyAwCgp0ZXN0X2R5bmFtaWNfdHVwbGVfcmV0dXJuX2Zvcl9oZWFkZXJAMToKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozNDgKICAgIC8vIGZvciBpIGluIHVyYW5nZShhcHBlbmQpOgogICAgZnJhbWVfZGlnIDEKICAgIGZyYW1lX2RpZyAtMQogICAgPAogICAgYnogdGVzdF9keW5hbWljX3R1cGxlX3JldHVybl9hZnRlcl9mb3JANAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjM0OQogICAgLy8gYXJyID0gYXJyLmFwcGVuZChNeUR5bmFtaWNTaXplZFR1cGxlKGksIHRpbWVzKGkpKSkKICAgIGZyYW1lX2RpZyAxCiAgICBkdXAKICAgIGNhbGxzdWIgdGltZXMKICAgIGRpZyAxCiAgICBpdG9iCiAgICBkaWcgMQogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGJ5dGVjIDYgLy8gMHgwMDBhCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYnl0ZWMgNCAvLyAweDAwMDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZnJhbWVfZGlnIDAKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBzd2FwCiAgICBleHRyYWN0IDIgMAogICAgaW50Y18xIC8vIDEKICAgIHVuY292ZXIgMwogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X2NvbmNhdF9keW5hbWljX2VsZW1lbnQKICAgIGZyYW1lX2J1cnkgMAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjM0OAogICAgLy8gZm9yIGkgaW4gdXJhbmdlKGFwcGVuZCk6CiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSAxCiAgICBiIHRlc3RfZHluYW1pY190dXBsZV9yZXR1cm5fZm9yX2hlYWRlckAxCgp0ZXN0X2R5bmFtaWNfdHVwbGVfcmV0dXJuX2FmdGVyX2ZvckA0OgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjM1MAogICAgLy8gcmV0dXJuIGFycgogICAgcmV0c3ViCgoKLy8gdGVzdF9jYXNlcy5hcnJheS5pbW11dGFibGUuSW1tdXRhYmxlQXJyYXlDb250cmFjdC50ZXN0X2NvbnZlcnRfdG9fYXJyYXlfYW5kX2JhY2soYXJyOiBieXRlcywgYXBwZW5kOiB1aW50NjQpIC0+IGJ5dGVzOgp0ZXN0X2NvbnZlcnRfdG9fYXJyYXlfYW5kX2JhY2s6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzUyLTM1NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIC8vIGRlZiB0ZXN0X2NvbnZlcnRfdG9fYXJyYXlfYW5kX2JhY2soCiAgICAvLyAgICAgc2VsZiwgYXJyOiBJbW11dGFibGVBcnJheVtNeVR1cGxlXSwgYXBwZW5kOiBVSW50NjQKICAgIC8vICkgLT4gSW1tdXRhYmxlQXJyYXlbTXlUdXBsZV06CiAgICBwcm90byAyIDEKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozNTcKICAgIC8vIG11dGFibGUuZXh0ZW5kKGFycikKICAgIGZyYW1lX2RpZyAtMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozNTgKICAgIC8vIGZvciBpIGluIHVyYW5nZShhcHBlbmQpOgogICAgaW50Y18wIC8vIDAKCnRlc3RfY29udmVydF90b19hcnJheV9hbmRfYmFja19mb3JfaGVhZGVyQDE6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzU4CiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoYXBwZW5kKToKICAgIGZyYW1lX2RpZyAxCiAgICBmcmFtZV9kaWcgLTEKICAgIDwKICAgIGJ6IHRlc3RfY29udmVydF90b19hcnJheV9hbmRfYmFja19hZnRlcl9mb3JANAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjM1OQogICAgLy8gbXV0YWJsZS5hcHBlbmQoTXlUdXBsZShmb289aSwgYmFyPWkgJSAyID09IDAsIGJhej1pICUgMyA9PSAwKSkKICAgIGZyYW1lX2RpZyAxCiAgICBkdXAKICAgIGludGNfMiAvLyAyCiAgICAlCiAgICAhCiAgICBkaWcgMQogICAgcHVzaGludCAzIC8vIDMKICAgICUKICAgICEKICAgIGRpZyAyCiAgICBpdG9iCiAgICBieXRlY18wIC8vIDB4MDAKICAgIGJ5dGVjIDUgLy8gMHg4MAogICAgdW5jb3ZlciA0CiAgICBzZWxlY3QKICAgIGNvbmNhdAogICAgcHVzaGludCA2NSAvLyA2NQogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGZyYW1lX2RpZyAwCiAgICBzd2FwCiAgICBjb25jYXQgLy8gb24gZXJyb3I6IG1heCBhcnJheSBsZW5ndGggZXhjZWVkZWQKICAgIGZyYW1lX2J1cnkgMAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjM1OAogICAgLy8gZm9yIGkgaW4gdXJhbmdlKGFwcGVuZCk6CiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSAxCiAgICBiIHRlc3RfY29udmVydF90b19hcnJheV9hbmRfYmFja19mb3JfaGVhZGVyQDEKCnRlc3RfY29udmVydF90b19hcnJheV9hbmRfYmFja19hZnRlcl9mb3JANDoKICAgIGZyYW1lX2RpZyAwCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzYwCiAgICAvLyByZXR1cm4gbXV0YWJsZS5mcmVlemUoKQogICAgZHVwCiAgICBsZW4KICAgIHB1c2hpbnQgOSAvLyA5CiAgICAvCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBmcmFtZV9idXJ5IDAKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYXJyYXkuaW1tdXRhYmxlLkltbXV0YWJsZUFycmF5Q29udHJhY3QudGVzdF9jb25jYXRfd2l0aF9hcmM0X3R1cGxlKGFyZzogYnl0ZXMpIC0+IGJ5dGVzOgp0ZXN0X2NvbmNhdF93aXRoX2FyYzRfdHVwbGU6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzYyLTM2NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIC8vIGRlZiB0ZXN0X2NvbmNhdF93aXRoX2FyYzRfdHVwbGUoCiAgICAvLyAgICAgc2VsZiwgYXJnOiBhcmM0LlR1cGxlW2FyYzQuVUludDY0LCBhcmM0LlVJbnQ2NF0KICAgIC8vICkgLT4gSW1tdXRhYmxlQXJyYXlbYXJjNC5VSW50NjRdOgogICAgcHJvdG8gMSAxCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzY3CiAgICAvLyByZXN1bHQgPSBwcmVmaXggKyBhcmcKICAgIGJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMgogICAgZnJhbWVfZGlnIC0xCiAgICBjb25jYXQKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzMgLy8gOAogICAgLwogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjM2OAogICAgLy8gcmV0dXJuIHJlc3VsdAogICAgcmV0c3ViCgoKLy8gdGVzdF9jYXNlcy5hcnJheS5pbW11dGFibGUuSW1tdXRhYmxlQXJyYXlDb250cmFjdC50ZXN0X2NvbmNhdF93aXRoX25hdGl2ZV90dXBsZShhcmcuMDogYnl0ZXMsIGFyZy4xOiBieXRlcykgLT4gYnl0ZXM6CnRlc3RfY29uY2F0X3dpdGhfbmF0aXZlX3R1cGxlOgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjM3MC0zNzMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICAvLyBkZWYgdGVzdF9jb25jYXRfd2l0aF9uYXRpdmVfdHVwbGUoCiAgICAvLyAgICAgc2VsZiwgYXJnOiB0dXBsZVthcmM0LlVJbnQ2NCwgYXJjNC5VSW50NjRdCiAgICAvLyApIC0+IEltbXV0YWJsZUFycmF5W2FyYzQuVUludDY0XToKICAgIHByb3RvIDIgMQogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjM3NQogICAgLy8gcmVzdWx0ID0gcHJlZml4ICsgYXJnCiAgICBmcmFtZV9kaWcgLTIKICAgIGZyYW1lX2RpZyAtMQogICAgY29uY2F0CiAgICBieXRlYyA3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZHVwCiAgICBsZW4KICAgIGludGNfMyAvLyA4CiAgICAvCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6Mzc2CiAgICAvLyByZXR1cm4gcmVzdWx0CiAgICByZXRzdWIKCgovLyB0ZXN0X2Nhc2VzLmFycmF5LmltbXV0YWJsZS5JbW11dGFibGVBcnJheUNvbnRyYWN0LnRlc3RfZHluYW1pY19jb25jYXRfd2l0aF9hcmM0X3R1cGxlKGFyZzogYnl0ZXMpIC0+IGJ5dGVzOgp0ZXN0X2R5bmFtaWNfY29uY2F0X3dpdGhfYXJjNF90dXBsZToKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozNzgtMzgxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgLy8gZGVmIHRlc3RfZHluYW1pY19jb25jYXRfd2l0aF9hcmM0X3R1cGxlKAogICAgLy8gICAgIHNlbGYsIGFyZzogYXJjNC5UdXBsZVthcmM0LlN0cmluZywgYXJjNC5TdHJpbmddCiAgICAvLyApIC0+IEltbXV0YWJsZUFycmF5W2FyYzQuU3RyaW5nXToKICAgIHByb3RvIDEgMQogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjM4MgogICAgLy8gcHJlZml4ID0gSW1tdXRhYmxlQXJyYXkoYXJjNC5TdHJpbmcoImEiKSwgYXJjNC5TdHJpbmcoImIiKSkKICAgIGJ5dGVjXzMgLy8gMHgwMDAwCiAgICBieXRlYyA4IC8vIDB4MDAwMTYxMDAwMTYyCiAgICBpbnRjXzIgLy8gMgogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X2NvbmNhdF9ieXRlX2xlbmd0aF9oZWFkCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzgzCiAgICAvLyByZXN1bHQgPSBwcmVmaXggKyBhcmcKICAgIGZyYW1lX2RpZyAtMQogICAgbGVuCiAgICBmcmFtZV9kaWcgLTEKICAgIHB1c2hpbnQgNCAvLyA0CiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGludGNfMiAvLyAyCiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfY29uY2F0X2J5dGVfbGVuZ3RoX2hlYWQKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozODQKICAgIC8vIHJldHVybiByZXN1bHQKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYXJyYXkuaW1tdXRhYmxlLkltbXV0YWJsZUFycmF5Q29udHJhY3QudGVzdF9keW5hbWljX2NvbmNhdF93aXRoX25hdGl2ZV90dXBsZShhcmcuMDogYnl0ZXMsIGFyZy4xOiBieXRlcykgLT4gYnl0ZXM6CnRlc3RfZHluYW1pY19jb25jYXRfd2l0aF9uYXRpdmVfdHVwbGU6CiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6Mzg2LTM4OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIC8vIGRlZiB0ZXN0X2R5bmFtaWNfY29uY2F0X3dpdGhfbmF0aXZlX3R1cGxlKAogICAgLy8gICAgIHNlbGYsIGFyZzogdHVwbGVbYXJjNC5TdHJpbmcsIGFyYzQuU3RyaW5nXQogICAgLy8gKSAtPiBJbW11dGFibGVBcnJheVthcmM0LlN0cmluZ106CiAgICBwcm90byAyIDEKICAgIC8vIGFycmF5L2ltbXV0YWJsZS5weTozOTAKICAgIC8vIHByZWZpeCA9IEltbXV0YWJsZUFycmF5KGFyYzQuU3RyaW5nKCJhIiksIGFyYzQuU3RyaW5nKCJiIikpCiAgICBieXRlY18zIC8vIDB4MDAwMAogICAgYnl0ZWMgOCAvLyAweDAwMDE2MTAwMDE2MgogICAgaW50Y18yIC8vIDIKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9jb25jYXRfYnl0ZV9sZW5ndGhfaGVhZAogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjM5MQogICAgLy8gcmVzdWx0ID0gcHJlZml4ICsgYXJnCiAgICBmcmFtZV9kaWcgLTIKICAgIGZyYW1lX2RpZyAtMQogICAgY29uY2F0CiAgICBpbnRjXzIgLy8gMgogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X2NvbmNhdF9ieXRlX2xlbmd0aF9oZWFkCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6MzkyCiAgICAvLyByZXR1cm4gcmVzdWx0CiAgICByZXRzdWIKCgovLyB0ZXN0X2Nhc2VzLmFycmF5LmltbXV0YWJsZS5JbW11dGFibGVBcnJheUNvbnRyYWN0LnRlc3RfY29uY2F0X2ltbXV0YWJsZV9keW5hbWljKGltbTE6IGJ5dGVzLCBpbW0yOiBieXRlcykgLT4gYnl0ZXM6CnRlc3RfY29uY2F0X2ltbXV0YWJsZV9keW5hbWljOgogICAgLy8gYXJyYXkvaW1tdXRhYmxlLnB5OjM5NC0zOTcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICAvLyBkZWYgdGVzdF9jb25jYXRfaW1tdXRhYmxlX2R5bmFtaWMoCiAgICAvLyAgICAgc2VsZiwgaW1tMTogSW1tdXRhYmxlQXJyYXlbTXlEeW5hbWljU2l6ZWRUdXBsZV0sIGltbTI6IEltbXV0YWJsZUFycmF5W015RHluYW1pY1NpemVkVHVwbGVdCiAgICAvLyApIC0+IEltbXV0YWJsZUFycmF5W015RHluYW1pY1NpemVkVHVwbGVdOgogICAgcHJvdG8gMiAxCiAgICAvLyBhcnJheS9pbW11dGFibGUucHk6Mzk4CiAgICAvLyByZXR1cm4gaW1tMSArIGltbTIKICAgIGZyYW1lX2RpZyAtMgogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBmcmFtZV9kaWcgLTIKICAgIGV4dHJhY3QgMiAwCiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZnJhbWVfZGlnIC0xCiAgICBleHRyYWN0IDIgMAogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X2NvbmNhdF9keW5hbWljX2VsZW1lbnQKICAgIHJldHN1Ygo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4K" }, "byteCode": { "approval": "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", "clear": "CoEBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 99, "minor": 99, "patch": 99 } }, "events": [ { "name": "emit_test", "args": [ { "type": "uint64[]", "name": "field1" } ] } ], "templateVariables": {} }