{ "name": "AbiValidationExhaustive", "structs": { "ARC4DynamicStruct": [ { "name": "foo", "type": "uint64" }, { "name": "bar", "type": "uint8" }, { "name": "baz", "type": "string" } ], "ARC4StaticStruct": [ { "name": "foo", "type": "uint64" }, { "name": "bar", "type": "uint8" } ], "WithABool": [ { "name": "foo", "type": "uint8" }, { "name": "bar", "type": "byte[]" }, { "name": "baz", "type": "bool" } ], "NativeDynamicStruct": [ { "name": "foo", "type": "uint64" }, { "name": "bar", "type": "uint8" }, { "name": "baz", "type": "string" } ], "NativeStaticStruct": [ { "name": "foo", "type": "uint64" }, { "name": "bar", "type": "uint8" } ] }, "methods": [ { "name": "validate_uint64", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_uint8", "args": [ { "type": "uint8", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_uint512", "args": [ { "type": "uint512", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_ufixed64", "args": [ { "type": "ufixed64x2", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_uint8_arr", "args": [ { "type": "uint8[]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_uint8_arr3", "args": [ { "type": "uint8[3]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_bool", "args": [ { "type": "bool", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_byte", "args": [ { "type": "byte", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_string", "args": [ { "type": "string", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_bytes", "args": [ { "type": "byte[]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_address", "args": [ { "type": "address", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_account", "args": [ { "type": "address", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_bool_arr", "args": [ { "type": "bool[]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_bool_arr3", "args": [ { "type": "bool[3]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_static_tuple", "args": [ { "type": "(uint64,uint8)", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_dynamic_tuple", "args": [ { "type": "(uint64,uint8,string)", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_static_struct", "args": [ { "type": "(uint64,uint8)", "struct": "ARC4StaticStruct", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_dynamic_struct", "args": [ { "type": "(uint64,uint8,string)", "struct": "ARC4DynamicStruct", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_static_struct_arr", "args": [ { "type": "(uint64,uint8)[]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_static_struct_arr3", "args": [ { "type": "(uint64,uint8)[3]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_dynamic_struct_arr", "args": [ { "type": "(uint64,uint8,string)[]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_dynamic_struct_arr3", "args": [ { "type": "(uint64,uint8,string)[3]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_dynamic_struct_with_a_bool", "args": [ { "type": "(uint8,byte[],bool)", "struct": "WithABool", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_native_static_struct", "args": [ { "type": "(uint64,uint8)", "struct": "NativeStaticStruct", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_native_dynamic_struct", "args": [ { "type": "(uint64,uint8,string)", "struct": "NativeDynamicStruct", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_native_static_struct_arr", "args": [ { "type": "(uint64,uint8)[]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_native_static_struct_arr3", "args": [ { "type": "(uint64,uint8)[3]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_native_dynamic_struct_arr", "args": [ { "type": "(uint64,uint8,string)[]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_native_dynamic_struct_arr3", "args": [ { "type": "(uint64,uint8,string)[3]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_c2c", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 0, "bytes": 0 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": {}, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 366 ], "errorMessage": "Bytes has valid prefix" }, { "pc": [ 395, 475, 636, 716 ], "errorMessage": "invalid array encoding" }, { "pc": [ 422, 445, 502, 537, 569, 607, 663, 686, 743, 778, 810, 848, 879, 919, 933, 975 ], "errorMessage": "invalid array length header" }, { "pc": [ 815 ], "errorMessage": "invalid number of bytes for ARC4DynamicStruct" }, { "pc": [ 824 ], "errorMessage": "invalid number of bytes for ARC4StaticStruct" }, { "pc": [ 612 ], "errorMessage": "invalid number of bytes for WithABool" }, { "pc": [ 957 ], "errorMessage": "invalid number of bytes for arc4.bool" }, { "pc": [ 760 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 786 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 891 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 925, 939, 981 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 519 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 545 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 678 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 770 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 871 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 371 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 901, 911 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 967 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 437 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 529 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 853 ], "errorMessage": "invalid number of bytes for arc4.tuple>" }, { "pc": [ 862 ], "errorMessage": "invalid number of bytes for arc4.tuple" }, { "pc": [ 991 ], "errorMessage": "invalid number of bytes for arc4.ufixed64x2" }, { "pc": [ 1001 ], "errorMessage": "invalid number of bytes for arc4.uint512" }, { "pc": [ 1011 ], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [ 948 ], "errorMessage": "invalid number of bytes for arc4.uint8" }, { "pc": [ 574 ], "errorMessage": "invalid number of bytes for tests/approvals/abi-validation-exhaustive.algo.ts::NativeDynamicStruct" }, { "pc": [ 583 ], "errorMessage": "invalid number of bytes for tests/approvals/abi-validation-exhaustive.algo.ts::NativeStaticStruct" }, { "pc": [ 599 ], "errorMessage": "invalid tail pointer at index 1 of (uint8,(len+uint8[]),bool1)" }, { "pc": [ 418, 498, 561, 659, 739, 802, 840 ], "errorMessage": "invalid tail pointer at index 2 of (uint64,uint8,(len+utf8[]))" }, { "pc": [ 483, 724 ], "errorMessage": "invalid tail pointer for (len+(uint64,uint8,(len+utf8[]))[])" }, { "pc": [ 403, 644 ], "errorMessage": "invalid tail pointer for (uint64,uint8,(len+utf8[]))[3]" }, { "pc": [ 413, 493, 556, 594, 654, 734, 797, 835 ], "errorMessage": "invalid tuple encoding" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMSAwIDIgOQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxOAogICAgLy8gY2xhc3MgQWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUgZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9fX2FsZ290c19fLmRlZmF1bHRDcmVhdGVAMzcKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydAogICAgcHVzaGJ5dGVzcyAweDRkNzU4YzU5IDB4NmJiN2I5NjMgMHgxODg1MmNkNiAweDViMmVmYmUxIDB4ZWNjYTdhOTggMHg5NGRhNzNjMCAweDI2MjMwZGUxIDB4M2VjNzdmYWMgMHhmMTExYzA3ZSAweDNmNjhiN2QxIDB4Njc0YzBlODcgMHgwOTFhYjg0OCAweGYzMjg5ZmI4IDB4OTFhY2VlNTEgMHg0ZTY0MWU5OSAweDY1MzZlM2MyIDB4OTM1MjJjYjggMHhiZjg4ODgyNSAweDIyYWE5MGQ2IDB4NmVlY2I0OWQgMHgyODM4ODgyOSAweDdlODA0YmJmIDB4Y2UyNmM3MmMgMHhlYzU2MTI2ZiAweGMzNjc0YjU2IDB4ZmI3YjA1MjggMHhiYTUxOTVmZCAweGUzNmIzMjI0IDB4NTc0ZTk0NzkgMHhkMGI1ODJmMSAvLyBtZXRob2QgInZhbGlkYXRlX3VpbnQ2NCh1aW50NjQpdm9pZCIsIG1ldGhvZCAidmFsaWRhdGVfdWludDgodWludDgpdm9pZCIsIG1ldGhvZCAidmFsaWRhdGVfdWludDUxMih1aW50NTEyKXZvaWQiLCBtZXRob2QgInZhbGlkYXRlX3VmaXhlZDY0KHVmaXhlZDY0eDIpdm9pZCIsIG1ldGhvZCAidmFsaWRhdGVfdWludDhfYXJyKHVpbnQ4W10pdm9pZCIsIG1ldGhvZCAidmFsaWRhdGVfdWludDhfYXJyMyh1aW50OFszXSl2b2lkIiwgbWV0aG9kICJ2YWxpZGF0ZV9ib29sKGJvb2wpdm9pZCIsIG1ldGhvZCAidmFsaWRhdGVfYnl0ZShieXRlKXZvaWQiLCBtZXRob2QgInZhbGlkYXRlX3N0cmluZyhzdHJpbmcpdm9pZCIsIG1ldGhvZCAidmFsaWRhdGVfYnl0ZXMoYnl0ZVtdKXZvaWQiLCBtZXRob2QgInZhbGlkYXRlX2FkZHJlc3MoYWRkcmVzcyl2b2lkIiwgbWV0aG9kICJ2YWxpZGF0ZV9hY2NvdW50KGFkZHJlc3Mpdm9pZCIsIG1ldGhvZCAidmFsaWRhdGVfYm9vbF9hcnIoYm9vbFtdKXZvaWQiLCBtZXRob2QgInZhbGlkYXRlX2Jvb2xfYXJyMyhib29sWzNdKXZvaWQiLCBtZXRob2QgInZhbGlkYXRlX3N0YXRpY190dXBsZSgodWludDY0LHVpbnQ4KSl2b2lkIiwgbWV0aG9kICJ2YWxpZGF0ZV9keW5hbWljX3R1cGxlKCh1aW50NjQsdWludDgsc3RyaW5nKSl2b2lkIiwgbWV0aG9kICJ2YWxpZGF0ZV9zdGF0aWNfc3RydWN0KCh1aW50NjQsdWludDgpKXZvaWQiLCBtZXRob2QgInZhbGlkYXRlX2R5bmFtaWNfc3RydWN0KCh1aW50NjQsdWludDgsc3RyaW5nKSl2b2lkIiwgbWV0aG9kICJ2YWxpZGF0ZV9zdGF0aWNfc3RydWN0X2FycigodWludDY0LHVpbnQ4KVtdKXZvaWQiLCBtZXRob2QgInZhbGlkYXRlX3N0YXRpY19zdHJ1Y3RfYXJyMygodWludDY0LHVpbnQ4KVszXSl2b2lkIiwgbWV0aG9kICJ2YWxpZGF0ZV9keW5hbWljX3N0cnVjdF9hcnIoKHVpbnQ2NCx1aW50OCxzdHJpbmcpW10pdm9pZCIsIG1ldGhvZCAidmFsaWRhdGVfZHluYW1pY19zdHJ1Y3RfYXJyMygodWludDY0LHVpbnQ4LHN0cmluZylbM10pdm9pZCIsIG1ldGhvZCAidmFsaWRhdGVfZHluYW1pY19zdHJ1Y3Rfd2l0aF9hX2Jvb2woKHVpbnQ4LGJ5dGVbXSxib29sKSl2b2lkIiwgbWV0aG9kICJ2YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdCgodWludDY0LHVpbnQ4KSl2b2lkIiwgbWV0aG9kICJ2YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3QoKHVpbnQ2NCx1aW50OCxzdHJpbmcpKXZvaWQiLCBtZXRob2QgInZhbGlkYXRlX25hdGl2ZV9zdGF0aWNfc3RydWN0X2FycigodWludDY0LHVpbnQ4KVtdKXZvaWQiLCBtZXRob2QgInZhbGlkYXRlX25hdGl2ZV9zdGF0aWNfc3RydWN0X2FycjMoKHVpbnQ2NCx1aW50OClbM10pdm9pZCIsIG1ldGhvZCAidmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2FycigodWludDY0LHVpbnQ4LHN0cmluZylbXSl2b2lkIiwgbWV0aG9kICJ2YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3RfYXJyMygodWludDY0LHVpbnQ4LHN0cmluZylbM10pdm9pZCIsIG1ldGhvZCAidmFsaWRhdGVfYzJjKCl2b2lkIgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggbWFpbl92YWxpZGF0ZV91aW50NjRfcm91dGVANCBtYWluX3ZhbGlkYXRlX3VpbnQ4X3JvdXRlQDUgbWFpbl92YWxpZGF0ZV91aW50NTEyX3JvdXRlQDYgbWFpbl92YWxpZGF0ZV91Zml4ZWQ2NF9yb3V0ZUA3IG1haW5fdmFsaWRhdGVfdWludDhfYXJyX3JvdXRlQDggbWFpbl92YWxpZGF0ZV91aW50OF9hcnIzX3JvdXRlQDkgbWFpbl92YWxpZGF0ZV9ib29sX3JvdXRlQDEwIG1haW5fdmFsaWRhdGVfdWludDhfcm91dGVANSBtYWluX3ZhbGlkYXRlX3N0cmluZ19yb3V0ZUAxMiBtYWluX3ZhbGlkYXRlX2J5dGVzX3JvdXRlQDEzIG1haW5fdmFsaWRhdGVfYWRkcmVzc19yb3V0ZUAxNCBtYWluX3ZhbGlkYXRlX2FjY291bnRfcm91dGVAMTUgbWFpbl92YWxpZGF0ZV9ib29sX2Fycl9yb3V0ZUAxNiBtYWluX3ZhbGlkYXRlX2Jvb2xfYXJyM19yb3V0ZUAxNyBtYWluX3ZhbGlkYXRlX3N0YXRpY190dXBsZV9yb3V0ZUAxOCBtYWluX3ZhbGlkYXRlX2R5bmFtaWNfdHVwbGVfcm91dGVAMTkgbWFpbl92YWxpZGF0ZV9zdGF0aWNfc3RydWN0X3JvdXRlQDIwIG1haW5fdmFsaWRhdGVfZHluYW1pY19zdHJ1Y3Rfcm91dGVAMjEgbWFpbl92YWxpZGF0ZV9zdGF0aWNfc3RydWN0X2Fycl9yb3V0ZUAyMiBtYWluX3ZhbGlkYXRlX3N0YXRpY19zdHJ1Y3RfYXJyM19yb3V0ZUAyMyBtYWluX3ZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2Fycl9yb3V0ZUAyNCBtYWluX3ZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2FycjNfcm91dGVAMjUgbWFpbl92YWxpZGF0ZV9keW5hbWljX3N0cnVjdF93aXRoX2FfYm9vbF9yb3V0ZUAyNiBtYWluX3ZhbGlkYXRlX25hdGl2ZV9zdGF0aWNfc3RydWN0X3JvdXRlQDI3IG1haW5fdmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X3JvdXRlQDI4IG1haW5fdmFsaWRhdGVfbmF0aXZlX3N0YXRpY19zdHJ1Y3RfYXJyX3JvdXRlQDI5IG1haW5fdmFsaWRhdGVfbmF0aXZlX3N0YXRpY19zdHJ1Y3RfYXJyM19yb3V0ZUAzMCBtYWluX3ZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdF9hcnJfcm91dGVAMzEgbWFpbl92YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3RfYXJyM19yb3V0ZUAzMiBtYWluX3ZhbGlkYXRlX2MyY19yb3V0ZUAzMwogICAgZXJyCgptYWluX3ZhbGlkYXRlX2MyY19yb3V0ZUAzMzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTM5CiAgICAvLyBjb25zdCBhcHAgPSBjb21waWxlZC5jYWxsLmNyZWF0ZSh7fSkuaXR4bi5jcmVhdGVkQXBwCiAgICBpdHhuX2JlZ2luCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEzNwogICAgLy8gY29uc3QgY29tcGlsZWQgPSBjb21waWxlQXJjNChJbnZhbGlkQ29udHJhY3QpCiAgICBwdXNoYnl0ZXMgYmFzZTY0KEM0RUJRdz09KQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICBwdXNoYnl0ZXMgYmFzZTY0KEN6RVpGRVF4R0VFQUg0QUVSYzhGN3pZYUFJNEJBQUVBZ0FzVkgzeDFhVzUyWVd4cFpMQ0JBVU9BQkV4Y1libzJHZ0NPQVFBQkFJRUJRdz09KQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMzkKICAgIC8vIGNvbnN0IGFwcCA9IGNvbXBpbGVkLmNhbGwuY3JlYXRlKHt9KS5pdHhuLmNyZWF0ZWRBcHAKICAgIGludGNfMSAvLyAwCiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgcHVzaGJ5dGVzIDB4NGM1YzYxYmEgLy8gbWV0aG9kICJjcmVhdGUoKXZvaWQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgcHVzaGludCA2IC8vIGFwcGwKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMSAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgaXR4bl9zdWJtaXQKICAgIGdpdHhuIDAgQ3JlYXRlZEFwcGxpY2F0aW9uSUQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTQxLTE0NAogICAgLy8gYWJpQ2FsbCh7CiAgICAvLyAgIG1ldGhvZDogSW52YWxpZENvbnRyYWN0LnByb3RvdHlwZS5pbnZhbGlkVmFsdWUsCiAgICAvLyAgIGFwcElkOiBhcHAsCiAgICAvLyB9KQogICAgaXR4bl9iZWdpbgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECiAgICBwdXNoYnl0ZXMgMHg0NWNmMDVlZiAvLyBtZXRob2QgImludmFsaWRWYWx1ZSgpdWludDY0WzNdIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIHB1c2hpbnQgNiAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzEgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIExhc3RMb2cKICAgIGR1cAogICAgZXh0cmFjdCA0IDAKICAgIHN3YXAKICAgIGV4dHJhY3QgMCA0CiAgICBwdXNoYnl0ZXMgMHgxNTFmN2M3NQogICAgPT0KICAgIGFzc2VydCAvLyBCeXRlcyBoYXMgdmFsaWQgcHJlZml4CiAgICBsZW4KICAgIHB1c2hpbnQgMjQKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDY0LCAzPgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMzYKICAgIC8vIHZhbGlkYXRlX2MyYygpIHsKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fdmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2FycjNfcm91dGVAMzI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEzMwogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIHB1c2hpbnQgNgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMzEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBpbnRjXzEgLy8gMAoKbWFpbl9mb3JfaGVhZGVyQDQzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMzMKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBkdXAKICAgIHB1c2hpbnQgMwogICAgPAogICAgYnogbWFpbl9hZnRlcl9mb3JANDUKICAgIGR1cAogICAgaW50Y18yIC8vIDIKICAgICoKICAgIGRpZyAyCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgZW5jb2RpbmcKICAgIGR1cAogICAgdW5jb3ZlciA1CiAgICBkdXAKICAgIGNvdmVyIDQKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgZm9yICh1aW50NjQsdWludDgsKGxlbit1dGY4W10pKVszXQogICAgZGlnIDEKICAgIGxlbgogICAgc3Vic3RyaW5nMwogICAgZHVwCiAgICBsZW4KICAgIGRpZyAxCiAgICBpbnRjXzMgLy8gOQogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgdHVwbGUgZW5jb2RpbmcKICAgIGR1cAogICAgcHVzaGludCAxMQogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIHRhaWwgcG9pbnRlciBhdCBpbmRleCAyIG9mICh1aW50NjQsdWludDgsKGxlbit1dGY4W10pKQogICAgc3dhcAogICAgc3Vic3RyaW5nMwogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIHB1c2hpbnQgMTMKICAgICsKICAgICsKICAgIGNvdmVyIDIKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBiIG1haW5fZm9yX2hlYWRlckA0MwoKbWFpbl9hZnRlcl9mb3JANDU6CiAgICBwb3AKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTMzCiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTx0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpOYXRpdmVEeW5hbWljU3RydWN0LCAzPgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMzEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX3ZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdF9hcnJfcm91dGVAMzE6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEyNwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTI5CiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgZHVwCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgZHVwCiAgICBjb3ZlciAyCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgc3dhcAogICAgZHVwCiAgICBsZW4KICAgIGNvdmVyIDIKICAgIGV4dHJhY3QgMiAwCiAgICBpbnRjXzEgLy8gMAoKbWFpbl9mb3JfaGVhZGVyQDQ4OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMjkKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBkdXAKICAgIGRpZyA1CiAgICA8CiAgICBieiBtYWluX2FmdGVyX2ZvckA1MAogICAgZHVwCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgZGlnIDIKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBlbmNvZGluZwogICAgZHVwCiAgICB1bmNvdmVyIDUKICAgIGR1cAogICAgY292ZXIgNAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIHRhaWwgcG9pbnRlciBmb3IgKGxlbisodWludDY0LHVpbnQ4LChsZW4rdXRmOFtdKSlbXSkKICAgIGRpZyAxCiAgICBsZW4KICAgIHN1YnN0cmluZzMKICAgIGR1cAogICAgbGVuCiAgICBkaWcgMQogICAgaW50Y18zIC8vIDkKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIHR1cGxlIGVuY29kaW5nCiAgICBkdXAKICAgIHB1c2hpbnQgMTEKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgYXQgaW5kZXggMiBvZiAodWludDY0LHVpbnQ4LChsZW4rdXRmOFtdKSkKICAgIHN3YXAKICAgIHN1YnN0cmluZzMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBwdXNoaW50IDEzCiAgICArCiAgICArCiAgICBjb3ZlciAyCiAgICBpbnRjXzAgLy8gMQogICAgKwogICAgYiBtYWluX2Zvcl9oZWFkZXJANDgKCm1haW5fYWZ0ZXJfZm9yQDUwOgogICAgcG9wbiAyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEyOQogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGludGNfMiAvLyAyCiAgICArCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8dGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6TmF0aXZlRHluYW1pY1N0cnVjdD4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTI3CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl92YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdF9hcnIzX3JvdXRlQDMwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMjMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEyNQogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGxlbgogICAgcHVzaGludCAyNwogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8dGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6TmF0aXZlU3RhdGljU3RydWN0LCAzPgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMjMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX3ZhbGlkYXRlX25hdGl2ZV9zdGF0aWNfc3RydWN0X2Fycl9yb3V0ZUAyOToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTE5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMjEKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBkdXAKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzMgLy8gOQogICAgKgogICAgaW50Y18yIC8vIDIKICAgICsKICAgIHN3YXAKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6Ok5hdGl2ZVN0YXRpY1N0cnVjdD4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTE5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl92YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3Rfcm91dGVAMjg6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjExNQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTE3CiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgZHVwCiAgICBsZW4KICAgIGRpZyAxCiAgICBpbnRjXzMgLy8gOQogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgdHVwbGUgZW5jb2RpbmcKICAgIGR1cAogICAgcHVzaGludCAxMQogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIHRhaWwgcG9pbnRlciBhdCBpbmRleCAyIG9mICh1aW50NjQsdWludDgsKGxlbit1dGY4W10pKQogICAgdW5jb3ZlciAyCiAgICBzd2FwCiAgICBkaWcgMgogICAgc3Vic3RyaW5nMwogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIHB1c2hpbnQgMTMKICAgICsKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6Ok5hdGl2ZUR5bmFtaWNTdHJ1Y3QKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTE1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl92YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdF9yb3V0ZUAyNzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTExCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMTMKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBsZW4KICAgIGludGNfMyAvLyA5CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpOYXRpdmVTdGF0aWNTdHJ1Y3QKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTExCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl92YWxpZGF0ZV9keW5hbWljX3N0cnVjdF93aXRoX2FfYm9vbF9yb3V0ZUAyNjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTA3CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMDkKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBkdXAKICAgIGxlbgogICAgZGlnIDEKICAgIGludGNfMCAvLyAxCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCB0dXBsZSBlbmNvZGluZwogICAgZHVwCiAgICBwdXNoaW50IDQKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgYXQgaW5kZXggMSBvZiAodWludDgsKGxlbit1aW50OFtdKSxib29sMSkKICAgIHVuY292ZXIgMgogICAgc3dhcAogICAgZGlnIDIKICAgIHN1YnN0cmluZzMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBwdXNoaW50IDYKICAgICsKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIFdpdGhBQm9vbAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMDcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX3ZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2FycjNfcm91dGVAMjU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEwNQogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIHB1c2hpbnQgNgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMDMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBpbnRjXzEgLy8gMAoKbWFpbl9mb3JfaGVhZGVyQDYzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMDUKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBkdXAKICAgIHB1c2hpbnQgMwogICAgPAogICAgYnogbWFpbl9hZnRlcl9mb3JANjUKICAgIGR1cAogICAgaW50Y18yIC8vIDIKICAgICoKICAgIGRpZyAyCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgZW5jb2RpbmcKICAgIGR1cAogICAgdW5jb3ZlciA1CiAgICBkdXAKICAgIGNvdmVyIDQKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgZm9yICh1aW50NjQsdWludDgsKGxlbit1dGY4W10pKVszXQogICAgZGlnIDEKICAgIGxlbgogICAgc3Vic3RyaW5nMwogICAgZHVwCiAgICBsZW4KICAgIGRpZyAxCiAgICBpbnRjXzMgLy8gOQogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgdHVwbGUgZW5jb2RpbmcKICAgIGR1cAogICAgcHVzaGludCAxMQogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIHRhaWwgcG9pbnRlciBhdCBpbmRleCAyIG9mICh1aW50NjQsdWludDgsKGxlbit1dGY4W10pKQogICAgc3dhcAogICAgc3Vic3RyaW5nMwogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIHB1c2hpbnQgMTMKICAgICsKICAgICsKICAgIGNvdmVyIDIKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBiIG1haW5fZm9yX2hlYWRlckA2MwoKbWFpbl9hZnRlcl9mb3JANjU6CiAgICBwb3AKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTA1CiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxBUkM0RHluYW1pY1N0cnVjdCwgMz4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTAzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl92YWxpZGF0ZV9keW5hbWljX3N0cnVjdF9hcnJfcm91dGVAMjQ6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjk5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMDEKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBkdXAKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGludGNfMiAvLyAyCiAgICAqCiAgICBzd2FwCiAgICBkdXAKICAgIGxlbgogICAgY292ZXIgMgogICAgZXh0cmFjdCAyIDAKICAgIGludGNfMSAvLyAwCgptYWluX2Zvcl9oZWFkZXJANjg6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEwMQogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGR1cAogICAgZGlnIDUKICAgIDwKICAgIGJ6IG1haW5fYWZ0ZXJfZm9yQDcwCiAgICBkdXAKICAgIGludGNfMiAvLyAyCiAgICAqCiAgICBkaWcgMgogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGVuY29kaW5nCiAgICBkdXAKICAgIHVuY292ZXIgNQogICAgZHVwCiAgICBjb3ZlciA0CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgdGFpbCBwb2ludGVyIGZvciAobGVuKyh1aW50NjQsdWludDgsKGxlbit1dGY4W10pKVtdKQogICAgZGlnIDEKICAgIGxlbgogICAgc3Vic3RyaW5nMwogICAgZHVwCiAgICBsZW4KICAgIGRpZyAxCiAgICBpbnRjXzMgLy8gOQogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgdHVwbGUgZW5jb2RpbmcKICAgIGR1cAogICAgcHVzaGludCAxMQogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIHRhaWwgcG9pbnRlciBhdCBpbmRleCAyIG9mICh1aW50NjQsdWludDgsKGxlbit1dGY4W10pKQogICAgc3dhcAogICAgc3Vic3RyaW5nMwogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIHB1c2hpbnQgMTMKICAgICsKICAgICsKICAgIGNvdmVyIDIKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBiIG1haW5fZm9yX2hlYWRlckA2OAoKbWFpbl9hZnRlcl9mb3JANzA6CiAgICBwb3BuIDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTAxCiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgaW50Y18yIC8vIDIKICAgICsKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxBUkM0RHluYW1pY1N0cnVjdD4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OTkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX3ZhbGlkYXRlX3N0YXRpY19zdHJ1Y3RfYXJyM19yb3V0ZUAyMzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OTUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjk3CiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgbGVuCiAgICBwdXNoaW50IDI3CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxBUkM0U3RhdGljU3RydWN0LCAzPgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo5NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fdmFsaWRhdGVfc3RhdGljX3N0cnVjdF9hcnJfcm91dGVAMjI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjkxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo5MwogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGR1cAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMyAvLyA5CiAgICAqCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgc3dhcAogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8QVJDNFN0YXRpY1N0cnVjdD4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OTEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX3ZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X3JvdXRlQDIxOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo4NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6ODkKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBkdXAKICAgIGxlbgogICAgZGlnIDEKICAgIGludGNfMyAvLyA5CiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCB0dXBsZSBlbmNvZGluZwogICAgZHVwCiAgICBwdXNoaW50IDExCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgdGFpbCBwb2ludGVyIGF0IGluZGV4IDIgb2YgKHVpbnQ2NCx1aW50OCwobGVuK3V0ZjhbXSkpCiAgICB1bmNvdmVyIDIKICAgIHN3YXAKICAgIGRpZyAyCiAgICBzdWJzdHJpbmczCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgcHVzaGludCAxMwogICAgKwogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgQVJDNER5bmFtaWNTdHJ1Y3QKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6ODcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX3ZhbGlkYXRlX3N0YXRpY19zdHJ1Y3Rfcm91dGVAMjA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjgzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo4NQogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGxlbgogICAgaW50Y18zIC8vIDkKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIEFSQzRTdGF0aWNTdHJ1Y3QKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6ODMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX3ZhbGlkYXRlX2R5bmFtaWNfdHVwbGVfcm91dGVAMTk6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjc5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo4MQogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGR1cAogICAgbGVuCiAgICBkaWcgMQogICAgaW50Y18zIC8vIDkKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIHR1cGxlIGVuY29kaW5nCiAgICBkdXAKICAgIHB1c2hpbnQgMTEKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgYXQgaW5kZXggMiBvZiAodWludDY0LHVpbnQ4LChsZW4rdXRmOFtdKSkKICAgIHVuY292ZXIgMgogICAgc3dhcAogICAgZGlnIDIKICAgIHN1YnN0cmluZzMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBwdXNoaW50IDEzCiAgICArCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnR1cGxlPGFyYzQudWludDY0LGFyYzQudWludDgsYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+PgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo3OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fdmFsaWRhdGVfc3RhdGljX3R1cGxlX3JvdXRlQDE4OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo3NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6NzcKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBsZW4KICAgIGludGNfMyAvLyA5CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnR1cGxlPGFyYzQudWludDY0LGFyYzQudWludDg+CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjc1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl92YWxpZGF0ZV9ib29sX2FycjNfcm91dGVAMTc6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjcxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo3MwogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGxlbgogICAgaW50Y18wIC8vIDEKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQuYm9vbCwgMz4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6NzEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX3ZhbGlkYXRlX2Jvb2xfYXJyX3JvdXRlQDE2OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo2NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6NjkKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBkdXAKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBwdXNoaW50IDcKICAgICsKICAgIHB1c2hpbnQgOAogICAgLwogICAgaW50Y18yIC8vIDIKICAgICsKICAgIHN3YXAKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQuYm9vbD4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6NjcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX3ZhbGlkYXRlX2FjY291bnRfcm91dGVAMTU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjYzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo2NQogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGxlbgogICAgcHVzaGludCAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjYzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl92YWxpZGF0ZV9hZGRyZXNzX3JvdXRlQDE0OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo1OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6NjEKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBsZW4KICAgIHB1c2hpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDgsIDMyPgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo1OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fdmFsaWRhdGVfYnl0ZXNfcm91dGVAMTM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjU1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo1NwogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGR1cAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMiAvLyAyCiAgICArCiAgICBzd2FwCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo1NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fdmFsaWRhdGVfc3RyaW5nX3JvdXRlQDEyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo1MQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6NTMKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBkdXAKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgc3dhcAogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6NTEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX3ZhbGlkYXRlX3VpbnQ4X3JvdXRlQDU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjIzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoyNQogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGxlbgogICAgaW50Y18wIC8vIDEKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDgKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MjMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX3ZhbGlkYXRlX2Jvb2xfcm91dGVAMTA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjQzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo0NQogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGxlbgogICAgaW50Y18wIC8vIDEKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuYm9vbAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo0MwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fdmFsaWRhdGVfdWludDhfYXJyM19yb3V0ZUA5OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czozOQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6NDEKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBsZW4KICAgIHB1c2hpbnQgMwogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMz4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MzkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX3ZhbGlkYXRlX3VpbnQ4X2Fycl9yb3V0ZUA4OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czozNQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MzcKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBkdXAKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgc3dhcAogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MzUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX3ZhbGlkYXRlX3VmaXhlZDY0X3JvdXRlQDc6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjMxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czozMwogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGxlbgogICAgcHVzaGludCA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVmaXhlZDY0eDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MzEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX3ZhbGlkYXRlX3VpbnQ1MTJfcm91dGVANjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MjcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjI5CiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgbGVuCiAgICBwdXNoaW50IDY0CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ1MTIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MjcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX3ZhbGlkYXRlX3VpbnQ2NF9yb3V0ZUA0OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxOQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MjEKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBsZW4KICAgIHB1c2hpbnQgOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX19fYWxnb3RzX18uZGVmYXVsdENyZWF0ZUAzNzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTgKICAgIC8vIGNsYXNzIEFiaVZhbGlkYXRpb25FeGhhdXN0aXZlIGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgICYmCiAgICByZXR1cm4K", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEKICAgIHJldHVybgo=" }, "byteCode": { "approval": "CyAEAQACCTEbQQPqMRkURDEYRIIeBE11jFkEa7e5YwQYhSzWBFsu++EE7Mp6mASU2nPABCYjDeEEPsd/rATxEcB+BD9ot9EEZ0wOhwQJGrhIBPMon7gEkazuUQROZB6ZBGU248IEk1IsuAS/iIglBCKqkNYEbuy0nQQoOIgpBH6AS78EzibHLATsVhJvBMNnS1YE+3sFKAS6UZX9BONrMiQEV06UeQTQtYLxNhoAjh4DAALCAvYC7ALeAtQCywLCArQCpgKcApICfgJ1AmwCTwJGAikCGQIPAb0BewFeAVUBOAEoAR4AzACKAAEAsYAEC4EBQ7JCgDoLMRkURDEYQQAfgARFzwXvNhoAjgEAAQCACxUffHVpbnZhbGlksIEBQ4AETFxhujYaAI4BAAEAgQFDskAjshmABExcYbqyGoEGshAjsgGztwA9sbIYgARFzwXvshqBBrIQI7IBs7Q+SVcEAExXAASABBUffHUSRBWBGBJEIkOBBjYaASNJgQMMQQAvSSQLSwJJTwJZSU8FSU4EEkRLARVSSRVLASVZSYELEkRMUiNZgQ0ICE4CIghC/8pIFRJEIkM2GgFJI1lJTgIkC0xJFU4CVwIAI0lLBQxBAC9JJAtLAklPAllJTwVJTgQSREsBFVJJFUsBJVlJgQsSRExSI1mBDQgITgIiCEL/ykYCJAgSRCJDNhoBFYEbEkQiQzYaAUkjWSULJAhMFRJEIkM2GgFJFUsBJVlJgQsSRE8CTEsCUiNZgQ0IEkQiQzYaARUlEkQiQzYaAUkVSwEiWUmBBBJETwJMSwJSI1mBBggSRCJDgQY2GgEjSYEDDEEAL0kkC0sCSU8CWUlPBUlOBBJESwEVUkkVSwElWUmBCxJETFIjWYENCAhOAiIIQv/KSBUSRCJDNhoBSSNZSU4CJAtMSRVOAlcCACNJSwUMQQAvSSQLSwJJTwJZSU8FSU4EEkRLARVSSRVLASVZSYELEkRMUiNZgQ0ICE4CIghC/8pGAiQIEkQiQzYaARWBGxJEIkM2GgFJI1klCyQITBUSRCJDNhoBSRVLASVZSYELEkRPAkxLAlIjWYENCBJEIkM2GgEVJRJEIkM2GgFJFUsBJVlJgQsSRE8CTEsCUiNZgQ0IEkQiQzYaARUlEkQiQzYaARUiEkQiQzYaAUkjWYEHCIEICiQITBUSRCJDNhoBFYEgEkQiQzYaARWBIBJEIkM2GgFJI1kkCEwVEkQiQzYaAUkjWSQITBUSRCJDNhoBFSISRCJDNhoBFSISRCJDNhoBFYEDEkQiQzYaAUkjWSQITBUSRCJDNhoBFYEIEkQiQzYaARWBQBJEIkM2GgEVgQgSRCJDMRkUMRgUEEM=", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 10, "patch": 0 } }, "events": [], "templateVariables": {} }