{ "name": "SignaturesContract", "structs": { "AnotherStruct": [ { "name": "one", "type": "uint64" }, { "name": "two", "type": "string" } ], "MyStruct": [ { "name": "another_struct", "type": "AnotherStruct" }, { "name": "another_struct_alias", "type": "AnotherStruct" }, { "name": "three", "type": "uint128" }, { "name": "four", "type": "uint128" } ] }, "methods": [ { "name": "create", "args": [], "returns": { "type": "void" }, "actions": { "create": ["NoOp"], "call": [] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "sink", "args": [ { "type": "string", "name": "value" }, { "type": "uint8[]", "name": "arr" }, { "type": "byte[4]", "name": "fixed_bytes" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "alias", "args": [ { "type": "string", "name": "value" }, { "type": "uint8[]", "name": "arr" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "with_txn", "args": [ { "type": "string", "name": "value" }, { "type": "pay", "name": "pay" }, { "type": "uint8[]", "name": "arr" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "with_asset", "args": [ { "type": "string", "name": "value" }, { "type": "asset", "name": "asset" }, { "type": "uint8[]", "name": "arr" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "with_app", "args": [ { "type": "string", "name": "value" }, { "type": "application", "name": "app" }, { "type": "uint64", "name": "app_id" }, { "type": "uint8[]", "name": "arr" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "with_acc", "args": [ { "type": "string", "name": "value" }, { "type": "account", "name": "acc" }, { "type": "uint8[]", "name": "arr" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "complex_sig", "args": [ { "type": "((uint64,string),(uint64,string),uint128,uint128)", "struct": "MyStruct", "name": "struct1" }, { "type": "txn", "name": "txn" }, { "type": "account", "name": "acc" }, { "type": "uint8[]", "name": "five" } ], "returns": { "type": "((uint64,string),((uint64,string),(uint64,string),uint128,uint128))" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "echo_resource_by_index", "args": [ { "type": "asset", "name": "asset" }, { "type": "application", "name": "app" }, { "type": "account", "name": "acc" } ], "returns": { "type": "(uint64,uint64,address)" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "echo_resource_by_value", "args": [ { "type": "uint64", "name": "asset" }, { "type": "uint64", "name": "app" }, { "type": "address", "name": "acc" } ], "returns": { "type": "(uint64,uint64,address)" }, "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": [], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [348, 353, 547, 552], "errorMessage": "account funded" }, { "pc": [284], "errorMessage": "application exists" }, { "pc": [242], "errorMessage": "asset exists" }, { "pc": [639], "errorMessage": "expected account to be passed by index" }, { "pc": [693], "errorMessage": "expected account to be passed by value" }, { "pc": [280], "errorMessage": "expected app id to match provided app id" }, { "pc": [629], "errorMessage": "expected application to be passed by index" }, { "pc": [687], "errorMessage": "expected application to be passed by value" }, { "pc": [619], "errorMessage": "expected asset to be passed by index" }, { "pc": [679], "errorMessage": "expected asset to be passed by value" }, { "pc": [138], "errorMessage": "expected global to have app address" }, { "pc": [132], "errorMessage": "expected global to have app id" }, { "pc": [288], "errorMessage": "expected other app to have same creator" }, { "pc": [143, 147], "errorMessage": "expected txn to have 0" }, { "pc": [392], "errorMessage": "invalid array length header" }, { "pc": [671], "errorMessage": "invalid number of bytes for account" }, { "pc": [400], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [129, 294], "errorMessage": "transaction type is appl" }, { "pc": [190], "errorMessage": "transaction type is pay" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAxIDAgNiAxMjMKICAgIGJ5dGVjYmxvY2sgMHgwMDAwIDB4MTUxZjdjNzUgMHgwMDAwMDAwMDAwMDAwMDAxIDB4MDAwMTMyCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weToyNQogICAgLy8gY2xhc3MgU2lnbmF0dXJlc0NvbnRyYWN0KEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBieiBtYWluX2NyZWF0ZV9Ob09wQDEzCiAgICBwdXNoYnl0ZXNzIDB4MmUwMTc4MWUgMHgzYjA1Y2YxNyAweDA2NThkY2MzIDB4NWI2NDQ3ZGUgMHgwNjFmNGU3NyAweGVhYTg5MTM5IDB4NTEwZTcyYTQgMHhkNmMyYWM3ZiAweDQ4MTQyZDVlIC8vIG1ldGhvZCAic2luayhzdHJpbmcsdWludDhbXSxieXRlWzRdKXZvaWQiLCBtZXRob2QgImFsaWFzKHN0cmluZyx1aW50OFtdKXZvaWQiLCBtZXRob2QgIndpdGhfdHhuKHN0cmluZyxwYXksdWludDhbXSl2b2lkIiwgbWV0aG9kICJ3aXRoX2Fzc2V0KHN0cmluZyxhc3NldCx1aW50OFtdKXZvaWQiLCBtZXRob2QgIndpdGhfYXBwKHN0cmluZyxhcHBsaWNhdGlvbix1aW50NjQsdWludDhbXSl2b2lkIiwgbWV0aG9kICJ3aXRoX2FjYyhzdHJpbmcsYWNjb3VudCx1aW50OFtdKXZvaWQiLCBtZXRob2QgImNvbXBsZXhfc2lnKCgodWludDY0LHN0cmluZyksKHVpbnQ2NCxzdHJpbmcpLHVpbnQxMjgsdWludDEyOCksdHhuLGFjY291bnQsdWludDhbXSkoKHVpbnQ2NCxzdHJpbmcpLCgodWludDY0LHN0cmluZyksKHVpbnQ2NCxzdHJpbmcpLHVpbnQxMjgsdWludDEyOCkpIiwgbWV0aG9kICJlY2hvX3Jlc291cmNlX2J5X2luZGV4KGFzc2V0LGFwcGxpY2F0aW9uLGFjY291bnQpKHVpbnQ2NCx1aW50NjQsYWRkcmVzcykiLCBtZXRob2QgImVjaG9fcmVzb3VyY2VfYnlfdmFsdWUodWludDY0LHVpbnQ2NCxhZGRyZXNzKSh1aW50NjQsdWludDY0LGFkZHJlc3MpIgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggc2luayBzaW5rMiB3aXRoX3R4biB3aXRoX2Fzc2V0IHdpdGhfYXBwIHdpdGhfYWNjIGNvbXBsZXhfc2lnIGVjaG9fcmVzb3VyY2VfYnlfaW5kZXggZWNob19yZXNvdXJjZV9ieV92YWx1ZQogICAgZXJyCgptYWluX2NyZWF0ZV9Ob09wQDEzOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6MjUKICAgIC8vIGNsYXNzIFNpZ25hdHVyZXNDb250cmFjdChBUkM0Q29udHJhY3QpOgogICAgcHVzaGJ5dGVzIDB4NGM1YzYxYmEgLy8gbWV0aG9kICJjcmVhdGUoKXZvaWQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBjcmVhdGUKICAgIGVycgoKCi8vIHRlc3RzLmFydGlmYWN0cy5BcmM0QUJJTWV0aG9kLmNvbnRyYWN0LlNpZ25hdHVyZXNDb250cmFjdC5jcmVhdGVbcm91dGluZ10oKSAtPiB2b2lkOgpjcmVhdGU6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weToyOAogICAgLy8gYXBwX3R4biA9IGd0eG4uQXBwbGljYXRpb25DYWxsVHJhbnNhY3Rpb24oMCkKICAgIGludGNfMSAvLyAwCiAgICBndHhucyBUeXBlRW51bQogICAgaW50Y18yIC8vIGFwcGwKICAgID09CiAgICBhc3NlcnQgLy8gdHJhbnNhY3Rpb24gdHlwZSBpcyBhcHBsCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weToyOQogICAgLy8gYXNzZXJ0IG9wLkdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2lkICE9IDAsICJleHBlY3RlZCBnbG9iYWwgdG8gaGF2ZSBhcHAgaWQiCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBleHBlY3RlZCBnbG9iYWwgdG8gaGF2ZSBhcHAgaWQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjMxCiAgICAvLyBvcC5HbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzICE9IG9wLkdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgICE9CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weTozMC0zMgogICAgLy8gYXNzZXJ0ICgKICAgIC8vICAgICBvcC5HbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzICE9IG9wLkdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIC8vICksICJleHBlY3RlZCBnbG9iYWwgdG8gaGF2ZSBhcHAgYWRkcmVzcyIKICAgIGFzc2VydCAvLyBleHBlY3RlZCBnbG9iYWwgdG8gaGF2ZSBhcHAgYWRkcmVzcwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6MjgKICAgIC8vIGFwcF90eG4gPSBndHhuLkFwcGxpY2F0aW9uQ2FsbFRyYW5zYWN0aW9uKDApCiAgICBpbnRjXzEgLy8gMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6MzMKICAgIC8vIGFzc2VydCBhcHBfdHhuLmFwcF9pZCA9PSAwLCAiZXhwZWN0ZWQgdHhuIHRvIGhhdmUgMCIKICAgIGd0eG5zIEFwcGxpY2F0aW9uSUQKICAgICEKICAgIGFzc2VydCAvLyBleHBlY3RlZCB0eG4gdG8gaGF2ZSAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weTozNAogICAgLy8gYXNzZXJ0IFR4bi5hcHBsaWNhdGlvbl9pZCA9PSAwLCAiZXhwZWN0ZWQgdHhuIHRvIGhhdmUgMCIKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICAhCiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgdHhuIHRvIGhhdmUgMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6MjYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChjcmVhdGU9InJlcXVpcmUiKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5BcmM0QUJJTWV0aG9kLmNvbnRyYWN0LlNpZ25hdHVyZXNDb250cmFjdC5zaW5rW3JvdXRpbmddKCkgLT4gdm9pZDoKc2luazoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjM2CiAgICAvLyBAYXJjNC5hYmltZXRob2QodmFsaWRhdGVfZW5jb2Rpbmc9InVuc2FmZV9kaXNhYmxlZCIpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weTo0MAogICAgLy8gYXNzZXJ0IHZhbHVlCiAgICBieXRlY18wIC8vIDB4MDAwMAogICAgIT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6NDEKICAgIC8vIGFzc2VydCBhcnIKICAgIGJ5dGVjXzAgLy8gMHgwMDAwCiAgICAhPQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weTozNgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHZhbGlkYXRlX2VuY29kaW5nPSJ1bnNhZmVfZGlzYWJsZWQiKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5BcmM0QUJJTWV0aG9kLmNvbnRyYWN0LlNpZ25hdHVyZXNDb250cmFjdC5zaW5rMltyb3V0aW5nXSgpIC0+IHZvaWQ6CnNpbmsyOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6NDQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChuYW1lPSJhbGlhcyIpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weTo0NgogICAgLy8gYXNzZXJ0IHZhbHVlCiAgICBieXRlY18wIC8vIDB4MDAwMAogICAgIT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6NDcKICAgIC8vIGFzc2VydCBhcnIKICAgIGJ5dGVjXzAgLy8gMHgwMDAwCiAgICAhPQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weTo0NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKG5hbWU9ImFsaWFzIikKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuQXJjNEFCSU1ldGhvZC5jb250cmFjdC5TaWduYXR1cmVzQ29udHJhY3Qud2l0aF90eG5bcm91dGluZ10oKSAtPiB2b2lkOgp3aXRoX3R4bjoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjQ5CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4biBHcm91cEluZGV4CiAgICBpbnRjXzAgLy8gMQogICAgLQogICAgZHVwCiAgICBndHhucyBUeXBlRW51bQogICAgaW50Y18wIC8vIHBheQogICAgPT0KICAgIGFzc2VydCAvLyB0cmFuc2FjdGlvbiB0eXBlIGlzIHBheQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6NTEKICAgIC8vIGFzc2VydCB2YWx1ZQogICAgdW5jb3ZlciAyCiAgICBieXRlY18wIC8vIDB4MDAwMAogICAgIT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6NTIKICAgIC8vIGFzc2VydCBhcnIKICAgIGJ5dGVjXzAgLy8gMHgwMDAwCiAgICAhPQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weTo1MwogICAgLy8gYXNzZXJ0IHBheS5ncm91cF9pbmRleCA9PSAwCiAgICBkdXAKICAgIGd0eG5zIEdyb3VwSW5kZXgKICAgICEKICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6NTQKICAgIC8vIGFzc2VydCBUeG4uZ3JvdXBfaW5kZXggPT0gMQogICAgdHhuIEdyb3VwSW5kZXgKICAgIGludGNfMCAvLyAxCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weTo1NQogICAgLy8gYXNzZXJ0IHBheS5hbW91bnQgPT0gMTIzCiAgICBndHhucyBBbW91bnQKICAgIGludGNfMyAvLyAxMjMKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjQ5CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuQXJjNEFCSU1ldGhvZC5jb250cmFjdC5TaWduYXR1cmVzQ29udHJhY3Qud2l0aF9hc3NldFtyb3V0aW5nXSgpIC0+IHZvaWQ6CndpdGhfYXNzZXQ6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weTo1NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHJlc291cmNlX2VuY29kaW5nPSJpbmRleCIpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICB0eG5hcyBBc3NldHMKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjU5CiAgICAvLyBhc3NlcnQgdmFsdWUKICAgIHVuY292ZXIgMgogICAgYnl0ZWNfMCAvLyAweDAwMDAKICAgICE9CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjYwCiAgICAvLyBhc3NlcnQgYXJyCiAgICBieXRlY18wIC8vIDB4MDAwMAogICAgIT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6NjEKICAgIC8vIGFzc2VydCBhc3NldC50b3RhbCA9PSAxMjMKICAgIGR1cAogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldFRvdGFsCiAgICBhc3NlcnQgLy8gYXNzZXQgZXhpc3RzCiAgICBpbnRjXzMgLy8gMTIzCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weTo2MgogICAgLy8gYXNzZXJ0IFR4bi5hc3NldHMoMCkgPT0gYXNzZXQKICAgIHR4bmEgQXNzZXRzIDAKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjU3CiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVzb3VyY2VfZW5jb2Rpbmc9ImluZGV4IikKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuQXJjNEFCSU1ldGhvZC5jb250cmFjdC5TaWduYXR1cmVzQ29udHJhY3Qud2l0aF9hcHBbcm91dGluZ10oKSAtPiB2b2lkOgp3aXRoX2FwcDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjY0CiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVzb3VyY2VfZW5jb2Rpbmc9ImluZGV4IikKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIHR4bmFzIEFwcGxpY2F0aW9ucwogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6NjgKICAgIC8vIGFzc2VydCB2YWx1ZQogICAgdW5jb3ZlciAzCiAgICBieXRlY18wIC8vIDB4MDAwMAogICAgIT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6NjkKICAgIC8vIGFzc2VydCBhcnIKICAgIGJ5dGVjXzAgLy8gMHgwMDAwCiAgICAhPQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weTo3MAogICAgLy8gYXNzZXJ0IGFwcC5pZCA9PSBhcHBfaWQsICJleHBlY3RlZCBhcHAgaWQgdG8gbWF0Y2ggcHJvdmlkZWQgYXBwIGlkIgogICAgZGlnIDEKICAgIGl0b2IKICAgIGI9PQogICAgYXNzZXJ0IC8vIGV4cGVjdGVkIGFwcCBpZCB0byBtYXRjaCBwcm92aWRlZCBhcHAgaWQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjcxCiAgICAvLyBhc3NlcnQgYXBwLmNyZWF0b3IgPT0gb3AuR2xvYmFsLmNyZWF0b3JfYWRkcmVzcywgImV4cGVjdGVkIG90aGVyIGFwcCB0byBoYXZlIHNhbWUgY3JlYXRvciIKICAgIGR1cAogICAgYXBwX3BhcmFtc19nZXQgQXBwQ3JlYXRvcgogICAgYXNzZXJ0IC8vIGFwcGxpY2F0aW9uIGV4aXN0cwogICAgZ2xvYmFsIENyZWF0b3JBZGRyZXNzCiAgICA9PQogICAgYXNzZXJ0IC8vIGV4cGVjdGVkIG90aGVyIGFwcCB0byBoYXZlIHNhbWUgY3JlYXRvcgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6NzIKICAgIC8vIGFwcF90eG4gPSBndHhuLkFwcGxpY2F0aW9uQ2FsbFRyYW5zYWN0aW9uKDApCiAgICBpbnRjXzEgLy8gMAogICAgZ3R4bnMgVHlwZUVudW0KICAgIGludGNfMiAvLyBhcHBsCiAgICA9PQogICAgYXNzZXJ0IC8vIHRyYW5zYWN0aW9uIHR5cGUgaXMgYXBwbAogICAgaW50Y18xIC8vIDAKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjczCiAgICAvLyBhc3NlcnQgYXBwX3R4bi5hcHBzKDApID09IG9wLkdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2lkCiAgICBkdXAKICAgIGd0eG5zYXMgQXBwbGljYXRpb25zCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uSUQKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5Ojc0CiAgICAvLyBhc3NlcnQgVHhuLmFwcGxpY2F0aW9ucygwKSA9PSBvcC5HbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9pZAogICAgdHhuYSBBcHBsaWNhdGlvbnMgMAogICAgZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbklECiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weTo3MgogICAgLy8gYXBwX3R4biA9IGd0eG4uQXBwbGljYXRpb25DYWxsVHJhbnNhY3Rpb24oMCkKICAgIGludGNfMSAvLyAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weTo3NQogICAgLy8gYXNzZXJ0IGFwcF90eG4uYXBwcygxKSA9PSBhcHAKICAgIGludGNfMCAvLyAxCiAgICBndHhuc2FzIEFwcGxpY2F0aW9ucwogICAgZGlnIDEKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5Ojc2CiAgICAvLyBhc3NlcnQgVHhuLmFwcGxpY2F0aW9ucygxKSA9PSBhcHAKICAgIHR4bmEgQXBwbGljYXRpb25zIDEKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjY0CiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVzb3VyY2VfZW5jb2Rpbmc9ImluZGV4IikKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuQXJjNEFCSU1ldGhvZC5jb250cmFjdC5TaWduYXR1cmVzQ29udHJhY3Qud2l0aF9hY2Nbcm91dGluZ10oKSAtPiB2b2lkOgp3aXRoX2FjYzoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5Ojc4CiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVzb3VyY2VfZW5jb2Rpbmc9ImluZGV4IikKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIHR4bmFzIEFjY291bnRzCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weTo4MAogICAgLy8gYXNzZXJ0IHZhbHVlCiAgICB1bmNvdmVyIDIKICAgIGJ5dGVjXzAgLy8gMHgwMDAwCiAgICAhPQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weTo4MQogICAgLy8gYXNzZXJ0IGFycgogICAgYnl0ZWNfMCAvLyAweDAwMDAKICAgICE9CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjgyCiAgICAvLyBhc3NlcnQgYWNjLmJhbGFuY2UgPT0gYWNjLm1pbl9iYWxhbmNlICsgMTIzNAogICAgZHVwCiAgICBhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IGZ1bmRlZAogICAgZGlnIDEKICAgIGFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgZnVuZGVkCiAgICBwdXNoaW50IDEyMzQKICAgICsKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjgzCiAgICAvLyBhc3NlcnQgVHhuLmFjY291bnRzKDApID09IFR4bi5zZW5kZXIKICAgIHR4bmEgQWNjb3VudHMgMAogICAgdHhuIFNlbmRlcgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6ODQKICAgIC8vIGFzc2VydCBUeG4uYWNjb3VudHMoMSkgPT0gYWNjCiAgICB0eG5hIEFjY291bnRzIDEKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5Ojc4CiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVzb3VyY2VfZW5jb2Rpbmc9ImluZGV4IikKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuQXJjNEFCSU1ldGhvZC5jb250cmFjdC5TaWduYXR1cmVzQ29udHJhY3QuY29tcGxleF9zaWdbcm91dGluZ10oKSAtPiB2b2lkOgpjb21wbGV4X3NpZzoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5Ojg2CiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVzb3VyY2VfZW5jb2Rpbmc9ImluZGV4IikKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4biBHcm91cEluZGV4CiAgICBpbnRjXzAgLy8gMQogICAgLQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgdHhuYXMgQWNjb3VudHMKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjkwCiAgICAvLyBmaXZlLnZhbGlkYXRlKCkKICAgIGR1cAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIHB1c2hpbnQgMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weTo5MQogICAgLy8gYXNzZXJ0IFR4bi5udW1fYXBwX2FyZ3MgPT0gNAogICAgdHhuIE51bUFwcEFyZ3MKICAgIHB1c2hpbnQgNAogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6OTItOTMKICAgIC8vICMgc3RydWN0CiAgICAvLyBhc3NlcnQgc3RydWN0MS5hbm90aGVyX3N0cnVjdC5vbmUgPT0gMQogICAgZGlnIDMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZGlnIDQKICAgIHB1c2hpbnQgMgogICAgZXh0cmFjdF91aW50MTYKICAgIGRpZyA1CiAgICB1bmNvdmVyIDIKICAgIGRpZyAyCiAgICBzdWJzdHJpbmczCiAgICBkdXAKICAgIGV4dHJhY3QgMCA4CiAgICBieXRlY18yIC8vIDB4MDAwMDAwMDAwMDAwMDAwMQogICAgYj09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjkyLTk0CiAgICAvLyAjIHN0cnVjdAogICAgLy8gYXNzZXJ0IHN0cnVjdDEuYW5vdGhlcl9zdHJ1Y3Qub25lID09IDEKICAgIC8vIGFzc2VydCBzdHJ1Y3QxLmFub3RoZXJfc3RydWN0LnR3byA9PSAiMiIKICAgIGR1cAogICAgcHVzaGludCA4CiAgICBleHRyYWN0X3VpbnQxNgogICAgZGlnIDEKICAgIGxlbgogICAgZGlnIDIKICAgIHVuY292ZXIgMgogICAgZGlnIDIKICAgIHN1YnN0cmluZzMKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5Ojk0CiAgICAvLyBhc3NlcnQgc3RydWN0MS5hbm90aGVyX3N0cnVjdC50d28gPT0gIjIiCiAgICBieXRlY18zIC8vIDB4MDAwMTMyCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weTo5NQogICAgLy8gYXNzZXJ0IHN0cnVjdDEuYW5vdGhlcl9zdHJ1Y3RfYWxpYXMub25lID09IDEKICAgIGRpZyA2CiAgICBsZW4KICAgIGRpZyA3CiAgICB1bmNvdmVyIDQKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgZHVwCiAgICBleHRyYWN0IDAgOAogICAgYnl0ZWNfMiAvLyAweDAwMDAwMDAwMDAwMDAwMDEKICAgIGI9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weTo5NS05NgogICAgLy8gYXNzZXJ0IHN0cnVjdDEuYW5vdGhlcl9zdHJ1Y3RfYWxpYXMub25lID09IDEKICAgIC8vIGFzc2VydCBzdHJ1Y3QxLmFub3RoZXJfc3RydWN0X2FsaWFzLnR3byA9PSAiMiIKICAgIGR1cAogICAgcHVzaGludCA4CiAgICBleHRyYWN0X3VpbnQxNgogICAgZGlnIDEKICAgIGxlbgogICAgc3Vic3RyaW5nMwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6OTQKICAgIC8vIGFzc2VydCBzdHJ1Y3QxLmFub3RoZXJfc3RydWN0LnR3byA9PSAiMiIKICAgIGJ5dGVjXzMgLy8gMHgwMDAxMzIKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5Ojk2CiAgICAvLyBhc3NlcnQgc3RydWN0MS5hbm90aGVyX3N0cnVjdF9hbGlhcy50d28gPT0gIjIiCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weTo5NwogICAgLy8gYXNzZXJ0IHN0cnVjdDEudGhyZWUgPT0gMwogICAgZGlnIDUKICAgIGV4dHJhY3QgNCAxNgogICAgcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMKICAgIGI9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weTo5OAogICAgLy8gYXNzZXJ0IHN0cnVjdDEuZm91ciA9PSA0CiAgICBkaWcgNQogICAgZXh0cmFjdCAyMCAxNgogICAgcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQKICAgIGI9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weToxMDAtMTAxCiAgICAvLyAjIHR4bgogICAgLy8gYXNzZXJ0IHR4bi5ncm91cF9pbmRleCA9PSBUeG4uZ3JvdXBfaW5kZXggLSAxCiAgICB1bmNvdmVyIDQKICAgIGd0eG5zIEdyb3VwSW5kZXgKICAgIHR4biBHcm91cEluZGV4CiAgICBpbnRjXzAgLy8gMQogICAgLQogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6MTAzLTEwNAogICAgLy8gIyBhY2MKICAgIC8vIGFzc2VydCBUeG4uYXBwbGljYXRpb25fYXJncygyKSA9PSBhcmM0LlVJbnQ4KDEpLmJ5dGVzICAjIGFjYyBhcnJheSByZWYKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIHB1c2hieXRlcyAweDAxCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weToxMDUKICAgIC8vIGFzc2VydCBhY2MuYmFsYW5jZSA9PSBhY2MubWluX2JhbGFuY2UgKyAxMjM0CiAgICBkaWcgMwogICAgYWNjdF9wYXJhbXNfZ2V0IEFjY3RCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBmdW5kZWQKICAgIHVuY292ZXIgNAogICAgYWNjdF9wYXJhbXNfZ2V0IEFjY3RNaW5CYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBmdW5kZWQKICAgIHB1c2hpbnQgMTIzNAogICAgKwogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6MTA2CiAgICAvLyBhc3NlcnQgZml2ZVswXSA9PSA1CiAgICB1bmNvdmVyIDIKICAgIGV4dHJhY3QgMiAxCiAgICBwdXNoYnl0ZXMgMHgwNQogICAgYj09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5Ojg2CiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVzb3VyY2VfZW5jb2Rpbmc9ImluZGV4IikKICAgIHB1c2hpbnQgNAogICAgKwogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHB1c2hieXRlcyAweDAwMDQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgc3dhcAogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzEgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuQXJjNEFCSU1ldGhvZC5jb250cmFjdC5TaWduYXR1cmVzQ29udHJhY3QuZWNob19yZXNvdXJjZV9ieV9pbmRleFtyb3V0aW5nXSgpIC0+IHZvaWQ6CmVjaG9fcmVzb3VyY2VfYnlfaW5kZXg6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weToxMTAtMTEyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoCiAgICAvLyAgICAgcmVzb3VyY2VfZW5jb2Rpbmc9ImluZGV4IiwKICAgIC8vICkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIHR4bmFzIEFzc2V0cwogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgdHhuYXMgQXBwbGljYXRpb25zCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICBidG9pCiAgICB0eG5hcyBBY2NvdW50cwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6MTE2CiAgICAvLyBhc3NldF9pZHggPSBvcC5idG9pKFR4bi5hcHBsaWNhdGlvbl9hcmdzKDEpKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6MTE3CiAgICAvLyBhc3NlcnQgYXNzZXQgPT0gVHhuLmFzc2V0cyhhc3NldF9pZHgpLCAiZXhwZWN0ZWQgYXNzZXQgdG8gYmUgcGFzc2VkIGJ5IGluZGV4IgogICAgdHhuYXMgQXNzZXRzCiAgICBkaWcgMwogICAgPT0KICAgIGFzc2VydCAvLyBleHBlY3RlZCBhc3NldCB0byBiZSBwYXNzZWQgYnkgaW5kZXgKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjExOAogICAgLy8gYXBwX2lkeCA9IG9wLmJ0b2koVHhuLmFwcGxpY2F0aW9uX2FyZ3MoMikpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weToxMTkKICAgIC8vIGFzc2VydCBhcHAgPT0gVHhuLmFwcGxpY2F0aW9ucyhhcHBfaWR4KSwgImV4cGVjdGVkIGFwcGxpY2F0aW9uIHRvIGJlIHBhc3NlZCBieSBpbmRleCIKICAgIHR4bmFzIEFwcGxpY2F0aW9ucwogICAgZGlnIDIKICAgID09CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgYXBwbGljYXRpb24gdG8gYmUgcGFzc2VkIGJ5IGluZGV4CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weToxMjAKICAgIC8vIGFjY19pZHggPSBvcC5idG9pKFR4bi5hcHBsaWNhdGlvbl9hcmdzKDMpKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6MTIxCiAgICAvLyBhc3NlcnQgYWNjID09IFR4bi5hY2NvdW50cyhhY2NfaWR4KSwgImV4cGVjdGVkIGFjY291bnQgdG8gYmUgcGFzc2VkIGJ5IGluZGV4IgogICAgdHhuYXMgQWNjb3VudHMKICAgIGRpZyAxCiAgICA9PQogICAgYXNzZXJ0IC8vIGV4cGVjdGVkIGFjY291bnQgdG8gYmUgcGFzc2VkIGJ5IGluZGV4CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weToxMTAtMTEyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoCiAgICAvLyAgICAgcmVzb3VyY2VfZW5jb2Rpbmc9ImluZGV4IiwKICAgIC8vICkKICAgIHVuY292ZXIgMgogICAgaXRvYgogICAgdW5jb3ZlciAyCiAgICBpdG9iCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYnl0ZWNfMSAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5BcmM0QUJJTWV0aG9kLmNvbnRyYWN0LlNpZ25hdHVyZXNDb250cmFjdC5lY2hvX3Jlc291cmNlX2J5X3ZhbHVlW3JvdXRpbmddKCkgLT4gdm9pZDoKZWNob19yZXNvdXJjZV9ieV92YWx1ZToKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjEyNC0xMjYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgKICAgIC8vICAgICByZXNvdXJjZV9lbmNvZGluZz0idmFsdWUiLAogICAgLy8gKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6MTMwCiAgICAvLyBhY2MudmFsaWRhdGUoKQogICAgZHVwCiAgICBsZW4KICAgIHB1c2hpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFjY291bnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjEzMQogICAgLy8gYXNzZXRfaWQgPSBvcC5idG9pKFR4bi5hcHBsaWNhdGlvbl9hcmdzKDEpKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6MTMyCiAgICAvLyBhc3NlcnQgYXNzZXQuaWQgPT0gYXNzZXRfaWQsICJleHBlY3RlZCBhc3NldCB0byBiZSBwYXNzZWQgYnkgdmFsdWUiCiAgICBkaWcgMwogICAgPT0KICAgIGFzc2VydCAvLyBleHBlY3RlZCBhc3NldCB0byBiZSBwYXNzZWQgYnkgdmFsdWUKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjEzMwogICAgLy8gYXBwX2lkID0gb3AuYnRvaShUeG4uYXBwbGljYXRpb25fYXJncygyKSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjEzNAogICAgLy8gYXNzZXJ0IGFwcC5pZCA9PSBhcHBfaWQsICJleHBlY3RlZCBhcHBsaWNhdGlvbiB0byBiZSBwYXNzZWQgYnkgdmFsdWUiCiAgICBkaWcgMgogICAgPT0KICAgIGFzc2VydCAvLyBleHBlY3RlZCBhcHBsaWNhdGlvbiB0byBiZSBwYXNzZWQgYnkgdmFsdWUKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjEzNgogICAgLy8gYXNzZXJ0IGFjYy5ieXRlcyA9PSBhZGRyZXNzLCAiZXhwZWN0ZWQgYWNjb3VudCB0byBiZSBwYXNzZWQgYnkgdmFsdWUiCiAgICBkdXAKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcmM0QUJJTWV0aG9kL2NvbnRyYWN0LnB5OjEzNQogICAgLy8gYWRkcmVzcyA9IFR4bi5hcHBsaWNhdGlvbl9hcmdzKDMpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJjNEFCSU1ldGhvZC9jb250cmFjdC5weToxMzYKICAgIC8vIGFzc2VydCBhY2MuYnl0ZXMgPT0gYWRkcmVzcywgImV4cGVjdGVkIGFjY291bnQgdG8gYmUgcGFzc2VkIGJ5IHZhbHVlIgogICAgPT0KICAgIGFzc2VydCAvLyBleHBlY3RlZCBhY2NvdW50IHRvIGJlIHBhc3NlZCBieSB2YWx1ZQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FyYzRBQklNZXRob2QvY29udHJhY3QucHk6MTI0LTEyNgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKAogICAgLy8gICAgIHJlc291cmNlX2VuY29kaW5nPSJ2YWx1ZSIsCiAgICAvLyApCiAgICB1bmNvdmVyIDIKICAgIGl0b2IKICAgIHVuY292ZXIgMgogICAgaXRvYgogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzEgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4K", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyAEAQAGeyYEAgAABBUffHUIAAAAAAAAAAEDAAEyMRkURDEYQQBHggkELgF4HgQ7Bc8XBAZY3MMEW2RH3gQGH053BOqokTkEUQ5ypATWwqx/BEgULV42GgCOCQApADcARQBuAJAA2AEJAeMCIgCABExcYbo2GgCOAQABACM4ECQSRDIIRDIKMgMTRCM4GBREMRgURCJDNhoCNhoBKBNEKBNEIkM2GgI2GgEoE0QoE0QiQzYaATEWIglJOBAiEkQ2GgJPAigTRCgTREk4FhREMRYiEkQ4CCUSRCJDNhoBNhoCF8AwNhoDTwIoE0QoE0RJcQBEJRJENjAAEkQiQzYaATYaAhfAMjYaAzYaBE8DKBNEKBNESwEWqERJcgdEMgkSRCM4ECQSRCNJwjIyCBJENjIAMggSRCMiwjJLARJENjIBEkQiQzYaATYaAhfAHDYaA08CKBNEKBNESXMAREsBcwFEgdIJCBJENhwAMQASRDYcARJEIkM2GgExFiIJNhoCF8AcNhoDSSNZgQIISwEVEkQxG4EEEkRLAyNZSwSBAllLBU8CSwJSSVcACCqoREmBCFlLARVLAk8CSwJSKxJESwYVSwdPBE8CUklXAAgqqERJgQhZSwEVUisSREsFVwQQgBAAAAAAAAAAAAAAAAAAAAADqERLBVcUEIAQAAAAAAAAAAAAAAAAAAAABKhETwQ4FjEWIgkSRDYaAoABARJESwNzAERPBHMBRIHSCQgSRE8CVwIBgAEFqESBBAgWVwYCgAIABExQTFBMUClMULAiQzYaARfAMDYaAhfAMjYaAxfAHDYaARfAMEsDEkQ2GgIXwDJLAhJENhoDF8AcSwESRE8CFk8CFlBMUClMULAiQzYaARc2GgIXNhoDSRWBIBJENhoBF0sDEkQ2GgIXSwISREk2GgMSRE8CFk8CFlBMUClMULAiQw==", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 8, "patch": 1 } }, "events": [], "templateVariables": {} }