{ "name": "Council", "structs": {}, "methods": [ { "name": "create", "args": [ { "type": "uint64", "name": "registry_id", "desc": "The application ID of the XGovRegistry contract." } ], "returns": { "type": "void" }, "actions": { "create": [ "NoOp" ], "call": [] }, "readonly": false, "desc": "Create a new council contract.", "events": [], "recommendations": {} }, { "name": "update_council", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "UpdateApplication" ] }, "readonly": false, "desc": "Update the council contract.", "events": [], "recommendations": {} }, { "name": "add_member", "args": [ { "type": "address", "name": "address", "desc": "The address of the member to add." } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Add a member to the council.", "events": [], "recommendations": {} }, { "name": "remove_member", "args": [ { "type": "address", "name": "address", "desc": "The address of the member to remove." } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Remove a member from the council.", "events": [], "recommendations": {} }, { "name": "vote", "args": [ { "type": "uint64", "name": "proposal_id", "desc": "The ID of the proposal to vote on." }, { "type": "bool", "name": "block", "desc": "Whether or not to block the proposal." } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Cast a vote on a proposal.", "events": [], "recommendations": {} }, { "name": "op_up", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 2, "bytes": 0 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "registry_app_id": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "cmVnaXN0cnlfYXBwX2lk" }, "member_count": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "bWVtYmVyX2NvdW50" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": { "members": { "keyType": "address", "valueType": "byte[0]", "prefix": "TQ==" }, "votes": { "keyType": "uint64", "valueType": "(address,bool)[]", "prefix": "Vg==" } } } }, "bareActions": { "create": [], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 199, 617 ], "errorMessage": "Address length is 32 bytes" }, { "pc": [ 360 ], "errorMessage": "Invalid proposal" }, { "pc": [ 167 ], "errorMessage": "Invalid registry ID" }, { "pc": [ 587 ], "errorMessage": "Missing Config" }, { "pc": [ 201, 215, 250 ], "errorMessage": "Unauthorized" }, { "pc": [ 224 ], "errorMessage": "Voter Already Assigned" }, { "pc": [ 445 ], "errorMessage": "Voter already voted" }, { "pc": [ 258, 307 ], "errorMessage": "Voter not found" }, { "pc": [ 50 ], "errorMessage": "Wrong Global Bytes allocation" }, { "pc": [ 55 ], "errorMessage": "Wrong Global UInts allocation" }, { "pc": [ 59 ], "errorMessage": "Wrong Local Bytes allocation" }, { "pc": [ 63 ], "errorMessage": "Wrong Local UInts allocation" }, { "pc": [ 364 ], "errorMessage": "Wrong Proposal Status or finalized" }, { "pc": [ 231, 264, 393 ], "errorMessage": "check self.member_count exists" }, { "pc": [ 327, 583 ], "errorMessage": "check self.registry_app_id exists" }, { "pc": [ 437 ], "errorMessage": "index out of bounds" }, { "pc": [ 296 ], "errorMessage": "invalid number of bytes for arc4.bool" }, { "pc": [ 211, 246 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 164, 284 ], "errorMessage": "invalid number of bytes for arc4.uint64" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAwIDEgMiAzMgogICAgYnl0ZWNibG9jayAweDZkNjU2ZDYyNjU3MjVmNjM2Zjc1NmU3NCAweDcyNjU2NzY5NzM3NDcyNzk1ZjYxNzA3MDVmNjk2NCAweDRkIDB4MDAKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBibnogbWFpbl9hZnRlcl9pZl9lbHNlQDIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjM5CiAgICAvLyBUeG4uZ2xvYmFsX251bV9ieXRlX3NsaWNlID09IGNvdW5jaWxfY2ZnLkdMT0JBTF9CWVRFUwogICAgdHhuIEdsb2JhbE51bUJ5dGVTbGljZQogICAgIQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6MzgtNDAKICAgIC8vIGFzc2VydCAoCiAgICAvLyAgICAgVHhuLmdsb2JhbF9udW1fYnl0ZV9zbGljZSA9PSBjb3VuY2lsX2NmZy5HTE9CQUxfQllURVMKICAgIC8vICksIGVyci5XUk9OR19HTE9CQUxfQllURVMKICAgIGFzc2VydCAvLyBXcm9uZyBHbG9iYWwgQnl0ZXMgYWxsb2NhdGlvbgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6NDEKICAgIC8vIGFzc2VydCBUeG4uZ2xvYmFsX251bV91aW50ID09IGNvdW5jaWxfY2ZnLkdMT0JBTF9VSU5UUywgZXJyLldST05HX0dMT0JBTF9VSU5UUwogICAgdHhuIEdsb2JhbE51bVVpbnQKICAgIGludGNfMiAvLyAyCiAgICA9PQogICAgYXNzZXJ0IC8vIFdyb25nIEdsb2JhbCBVSW50cyBhbGxvY2F0aW9uCiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weTo0MwogICAgLy8gVHhuLmxvY2FsX251bV9ieXRlX3NsaWNlID09IGNvdW5jaWxfY2ZnLkxPQ0FMX0JZVEVTCiAgICB0eG4gTG9jYWxOdW1CeXRlU2xpY2UKICAgICEKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjQyLTQ0CiAgICAvLyBhc3NlcnQgKAogICAgLy8gICAgIFR4bi5sb2NhbF9udW1fYnl0ZV9zbGljZSA9PSBjb3VuY2lsX2NmZy5MT0NBTF9CWVRFUwogICAgLy8gKSwgZXJyLldST05HX0xPQ0FMX0JZVEVTCiAgICBhc3NlcnQgLy8gV3JvbmcgTG9jYWwgQnl0ZXMgYWxsb2NhdGlvbgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6NDUKICAgIC8vIGFzc2VydCBUeG4ubG9jYWxfbnVtX3VpbnQgPT0gY291bmNpbF9jZmcuTE9DQUxfVUlOVFMsIGVyci5XUk9OR19MT0NBTF9VSU5UUwogICAgdHhuIExvY2FsTnVtVWludAogICAgIQogICAgYXNzZXJ0IC8vIFdyb25nIExvY2FsIFVJbnRzIGFsbG9jYXRpb24KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjQ5CiAgICAvLyBrZXk9Y291bmNpbF9jZmcuR1NfS0VZX1JFR0lTVFJZX0FQUF9JRCwKICAgIGJ5dGVjXzEgLy8gMHg3MjY1Njc2OTczNzQ3Mjc5NWY2MTcwNzA1ZjY5NjQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjQ4CiAgICAvLyBVSW50NjQoKSwKICAgIGludGNfMCAvLyAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weTo0Ny01MAogICAgLy8gc2VsZi5yZWdpc3RyeV9hcHBfaWQgPSBHbG9iYWxTdGF0ZSgKICAgIC8vICAgICBVSW50NjQoKSwKICAgIC8vICAgICBrZXk9Y291bmNpbF9jZmcuR1NfS0VZX1JFR0lTVFJZX0FQUF9JRCwKICAgIC8vICkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weTo1NAogICAgLy8ga2V5PWNvdW5jaWxfY2ZnLkdTX0tFWV9NRU1CRVJfQ09VTlQsCiAgICBieXRlY18wIC8vIDB4NmQ2NTZkNjI2NTcyNWY2MzZmNzU2ZTc0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weTo1MwogICAgLy8gVUludDY0KCksCiAgICBpbnRjXzAgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6NTItNTUKICAgIC8vIHNlbGYubWVtYmVyX2NvdW50ID0gR2xvYmFsU3RhdGUoCiAgICAvLyAgICAgVUludDY0KCksCiAgICAvLyAgICAga2V5PWNvdW5jaWxfY2ZnLkdTX0tFWV9NRU1CRVJfQ09VTlQsCiAgICAvLyApCiAgICBhcHBfZ2xvYmFsX3B1dAoKbWFpbl9hZnRlcl9pZl9lbHNlQDI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToyOC0zNgogICAgLy8gY2xhc3MgQ291bmNpbCgKICAgIC8vICAgICBBUkM0Q29udHJhY3QsCiAgICAvLyAgICAgc3RhdGVfdG90YWxzPVN0YXRlVG90YWxzKAogICAgLy8gICAgICAgICBnbG9iYWxfYnl0ZXM9Y291bmNpbF9jZmcuR0xPQkFMX0JZVEVTLAogICAgLy8gICAgICAgICBnbG9iYWxfdWludHM9Y291bmNpbF9jZmcuR0xPQkFMX1VJTlRTLAogICAgLy8gICAgICAgICBsb2NhbF9ieXRlcz1jb3VuY2lsX2NmZy5MT0NBTF9CWVRFUywKICAgIC8vICAgICAgICAgbG9jYWxfdWludHM9Y291bmNpbF9jZmcuTE9DQUxfVUlOVFMsCiAgICAvLyAgICAgKSwKICAgIC8vICk6CiAgICBwdXNoYnl0ZXMgMHgwNzhlZjI5NSAvLyBtZXRob2QgInVwZGF0ZV9jb3VuY2lsKCl2b2lkIgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggbWFpbl91cGRhdGVfY291bmNpbF9yb3V0ZUA0CgptYWluX3N3aXRjaF9jYXNlX25leHRANToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjI4LTM2CiAgICAvLyBjbGFzcyBDb3VuY2lsKAogICAgLy8gICAgIEFSQzRDb250cmFjdCwKICAgIC8vICAgICBzdGF0ZV90b3RhbHM9U3RhdGVUb3RhbHMoCiAgICAvLyAgICAgICAgIGdsb2JhbF9ieXRlcz1jb3VuY2lsX2NmZy5HTE9CQUxfQllURVMsCiAgICAvLyAgICAgICAgIGdsb2JhbF91aW50cz1jb3VuY2lsX2NmZy5HTE9CQUxfVUlOVFMsCiAgICAvLyAgICAgICAgIGxvY2FsX2J5dGVzPWNvdW5jaWxfY2ZnLkxPQ0FMX0JZVEVTLAogICAgLy8gICAgICAgICBsb2NhbF91aW50cz1jb3VuY2lsX2NmZy5MT0NBTF9VSU5UUywKICAgIC8vICAgICApLAogICAgLy8gKToKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGJ6IG1haW5fY3JlYXRlX05vT3BAMTIKICAgIHB1c2hieXRlc3MgMHgxOWQ3MDJmYSAweDkyZWJmNmRlIDB4ZjdmNDQ4MWYgMHhkYmQ4M2RkOSAvLyBtZXRob2QgImFkZF9tZW1iZXIoYWRkcmVzcyl2b2lkIiwgbWV0aG9kICJyZW1vdmVfbWVtYmVyKGFkZHJlc3Mpdm9pZCIsIG1ldGhvZCAidm90ZSh1aW50NjQsYm9vbCl2b2lkIiwgbWV0aG9kICJvcF91cCgpdm9pZCIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIGFkZF9tZW1iZXIgcmVtb3ZlX21lbWJlciB2b3RlIG1haW5fb3BfdXBfcm91dGVAMTAKICAgIGVycgoKbWFpbl9vcF91cF9yb3V0ZUAxMDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjIyMQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fY3JlYXRlX05vT3BAMTI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToyOC0zNgogICAgLy8gY2xhc3MgQ291bmNpbCgKICAgIC8vICAgICBBUkM0Q29udHJhY3QsCiAgICAvLyAgICAgc3RhdGVfdG90YWxzPVN0YXRlVG90YWxzKAogICAgLy8gICAgICAgICBnbG9iYWxfYnl0ZXM9Y291bmNpbF9jZmcuR0xPQkFMX0JZVEVTLAogICAgLy8gICAgICAgICBnbG9iYWxfdWludHM9Y291bmNpbF9jZmcuR0xPQkFMX1VJTlRTLAogICAgLy8gICAgICAgICBsb2NhbF9ieXRlcz1jb3VuY2lsX2NmZy5MT0NBTF9CWVRFUywKICAgIC8vICAgICAgICAgbG9jYWxfdWludHM9Y291bmNpbF9jZmcuTE9DQUxfVUlOVFMsCiAgICAvLyAgICAgKSwKICAgIC8vICk6CiAgICBwdXNoYnl0ZXMgMHgyNDBkMmY2NyAvLyBtZXRob2QgImNyZWF0ZSh1aW50NjQpdm9pZCIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIGNyZWF0ZQogICAgZXJyCgptYWluX3VwZGF0ZV9jb3VuY2lsX3JvdXRlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weTo5OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKGFsbG93X2FjdGlvbnM9WyJVcGRhdGVBcHBsaWNhdGlvbiJdKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgcHVzaGludCA0IC8vIFVwZGF0ZUFwcGxpY2F0aW9uCiAgICA9PQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICYmCiAgICBhc3NlcnQKICAgIGIgdXBkYXRlX2NvdW5jaWwKCgovLyBzbWFydF9jb250cmFjdHMuY291bmNpbC5jb250cmFjdC5Db3VuY2lsLmNyZWF0ZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CmNyZWF0ZToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjgyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoY3JlYXRlPSJyZXF1aXJlIikKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weTo5NAogICAgLy8gYXNzZXJ0IHJlZ2lzdHJ5X2lkID4gMCwgZXJyLklOVkFMSURfUkVHSVNUUllfSUQKICAgIGR1cAogICAgYXNzZXJ0IC8vIEludmFsaWQgcmVnaXN0cnkgSUQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5Ojk2CiAgICAvLyBzZWxmLnJlZ2lzdHJ5X2FwcF9pZC52YWx1ZSA9IHJlZ2lzdHJ5X2lkCiAgICBieXRlY18xIC8vIDB4NzI2NTY3Njk3Mzc0NzI3OTVmNjE3MDcwNWY2OTY0CiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6OTcKICAgIC8vIHNlbGYubWVtYmVyX2NvdW50LnZhbHVlID0gVUludDY0KDApCiAgICBieXRlY18wIC8vIDB4NmQ2NTZkNjI2NTcyNWY2MzZmNzU2ZTc0CiAgICBpbnRjXzAgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjgyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoY3JlYXRlPSJyZXF1aXJlIikKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMuY291bmNpbC5jb250cmFjdC5Db3VuY2lsLnVwZGF0ZV9jb3VuY2lsW3JvdXRpbmddKCkgLT4gdm9pZDoKdXBkYXRlX2NvdW5jaWw6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weTo3MwogICAgLy8gcmV0dXJuIFR4bi5zZW5kZXIgPT0gQWNjb3VudCgKICAgIHR4biBTZW5kZXIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5Ojc0CiAgICAvLyBzZWxmLmdldF9ieXRlc19mcm9tX3JlZ2lzdHJ5X2NvbmZpZyhCeXRlcyhyZWdfY2ZnLkdTX0tFWV9YR09WX01BTkFHRVIpKQogICAgcHVzaGJ5dGVzIDB4Nzg2NzZmNzY1ZjZkNjE2ZTYxNjc2NTcyCiAgICBjYWxsc3ViIGdldF9ieXRlc19mcm9tX3JlZ2lzdHJ5X2NvbmZpZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6NzMtNzUKICAgIC8vIHJldHVybiBUeG4uc2VuZGVyID09IEFjY291bnQoCiAgICAvLyAgICAgc2VsZi5nZXRfYnl0ZXNfZnJvbV9yZWdpc3RyeV9jb25maWcoQnl0ZXMocmVnX2NmZy5HU19LRVlfWEdPVl9NQU5BR0VSKSkKICAgIC8vICkKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzMgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gQWRkcmVzcyBsZW5ndGggaXMgMzIgYnl0ZXMKICAgID09CiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToxMDgKICAgIC8vIGFzc2VydCBzZWxmLmlzX21hbmFnZXIoKSwgZXJyLlVOQVVUSE9SSVpFRAogICAgYXNzZXJ0IC8vIFVuYXV0aG9yaXplZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6OTkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChhbGxvd19hY3Rpb25zPVsiVXBkYXRlQXBwbGljYXRpb24iXSkKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMuY291bmNpbC5jb250cmFjdC5Db3VuY2lsLmFkZF9tZW1iZXJbcm91dGluZ10oKSAtPiB2b2lkOgphZGRfbWVtYmVyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6MTEwCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMyAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToxMjMKICAgIC8vIGFzc2VydCBzZWxmLmlzX2NvbW1pdHRlZV9tYW5hZ2VyKCksIGVyci5VTkFVVEhPUklaRUQKICAgIGNhbGxzdWIgaXNfY29tbWl0dGVlX21hbmFnZXIKICAgIGFzc2VydCAvLyBVbmF1dGhvcml6ZWQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjEyNAogICAgLy8gYXNzZXJ0IGFkZHJlc3MubmF0aXZlIG5vdCBpbiBzZWxmLm1lbWJlcnMsIGVyci5WT1RFUl9BTFJFQURZX0FTU0lHTkVECiAgICBieXRlY18yIC8vIDB4NGQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZHVwCiAgICBib3hfbGVuCiAgICBidXJ5IDEKICAgICEKICAgIGFzc2VydCAvLyBWb3RlciBBbHJlYWR5IEFzc2lnbmVkCiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToxMjYKICAgIC8vIHNlbGYubWVtYmVyc1thZGRyZXNzLm5hdGl2ZV0gPSB0eXAuRW1wdHkoKQogICAgcHVzaGJ5dGVzIDB4CiAgICBib3hfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToxMjcKICAgIC8vIHNlbGYubWVtYmVyX2NvdW50LnZhbHVlICs9IDEKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18wIC8vIDB4NmQ2NTZkNjI2NTcyNWY2MzZmNzU2ZTc0CiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYubWVtYmVyX2NvdW50IGV4aXN0cwogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGJ5dGVjXzAgLy8gMHg2ZDY1NmQ2MjY1NzI1ZjYzNmY3NTZlNzQKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToxMTAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNvdW5jaWwuY29udHJhY3QuQ291bmNpbC5yZW1vdmVfbWVtYmVyW3JvdXRpbmddKCkgLT4gdm9pZDoKcmVtb3ZlX21lbWJlcjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjEyOQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzMgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDgsIDMyPgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6MTQyCiAgICAvLyBhc3NlcnQgc2VsZi5pc19jb21taXR0ZWVfbWFuYWdlcigpLCBlcnIuVU5BVVRIT1JJWkVECiAgICBjYWxsc3ViIGlzX2NvbW1pdHRlZV9tYW5hZ2VyCiAgICBhc3NlcnQgLy8gVW5hdXRob3JpemVkCiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToxNDMKICAgIC8vIGFzc2VydCBhZGRyZXNzLm5hdGl2ZSBpbiBzZWxmLm1lbWJlcnMsIGVyci5WT1RFUl9OT1RfRk9VTkQKICAgIGJ5dGVjXzIgLy8gMHg0ZAogICAgc3dhcAogICAgY29uY2F0CiAgICBkdXAKICAgIGJveF9sZW4KICAgIGJ1cnkgMQogICAgYXNzZXJ0IC8vIFZvdGVyIG5vdCBmb3VuZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6MTQ1CiAgICAvLyBkZWwgc2VsZi5tZW1iZXJzW2FkZHJlc3MubmF0aXZlXQogICAgYm94X2RlbAogICAgcG9wCiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToxNDYKICAgIC8vIHNlbGYubWVtYmVyX2NvdW50LnZhbHVlIC09IDEKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18wIC8vIDB4NmQ2NTZkNjI2NTcyNWY2MzZmNzU2ZTc0CiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYubWVtYmVyX2NvdW50IGV4aXN0cwogICAgaW50Y18xIC8vIDEKICAgIC0KICAgIGJ5dGVjXzAgLy8gMHg2ZDY1NmQ2MjY1NzI1ZjYzNmY3NTZlNzQKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToxMjkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNvdW5jaWwuY29udHJhY3QuQ291bmNpbC52b3RlW3JvdXRpbmddKCkgLT4gdm9pZDoKdm90ZToKICAgIHB1c2hieXRlcyAiIgogICAgZHVwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToxNDgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXBuIDIKICAgIGxlbgogICAgcHVzaGludCA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgZHVwCiAgICBjb3ZlciAyCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18xIC8vIDEKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuYm9vbAogICAgaW50Y18wIC8vIDAKICAgIGdldGJpdAogICAgc3dhcAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6MTY0CiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciBpbiBzZWxmLm1lbWJlcnMsIGVyci5WT1RFUl9OT1RfRk9VTkQKICAgIGJ5dGVjXzIgLy8gMHg0ZAogICAgdHhuIFNlbmRlcgogICAgY29uY2F0CiAgICBib3hfbGVuCiAgICBidXJ5IDEKICAgIGFzc2VydCAvLyBWb3RlciBub3QgZm91bmQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjE2NgogICAgLy8gaWYgcHJvcG9zYWxfaWQgbm90IGluIHNlbGYudm90ZXM6CiAgICBpdG9iCiAgICBwdXNoYnl0ZXMgMHg1NgogICAgc3dhcAogICAgY29uY2F0CiAgICBkdXAKICAgIGNvdmVyIDMKICAgIGJveF9sZW4KICAgIGJ1cnkgMQogICAgYm56IHZvdGVfZWxzZV9ib2R5QDQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjE2Ny0xNzMKICAgIC8vICMgd2UgZG9udCBuZWVkIGFueSBlcnJvciBoYW5kbGluZyBoZXJlCiAgICAvLyAjIGlmIGl0cyBpbnZhbGlkIHRoZSB0cmFuc2FjdGlvbiB3aWxsIGZhaWwKICAgIC8vIGFyYzQuYWJpX2NhbGwoCiAgICAvLyAgICAgcmVnaXN0cnlfY29udHJhY3QuWEdvdlJlZ2lzdHJ5LmlzX3Byb3Bvc2FsLAogICAgLy8gICAgIGFyYzQuVUludDY0KHByb3Bvc2FsX2lkKSwKICAgIC8vICAgICBhcHBfaWQ9c2VsZi5yZWdpc3RyeV9hcHBfaWQudmFsdWUsCiAgICAvLyApCiAgICBpdHhuX2JlZ2luCiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToxNzIKICAgIC8vIGFwcF9pZD1zZWxmLnJlZ2lzdHJ5X2FwcF9pZC52YWx1ZSwKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18xIC8vIDB4NzI2NTY3Njk3Mzc0NzI3OTVmNjE3MDcwNWY2OTY0CiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYucmVnaXN0cnlfYXBwX2lkIGV4aXN0cwogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToxNzAKICAgIC8vIHJlZ2lzdHJ5X2NvbnRyYWN0LlhHb3ZSZWdpc3RyeS5pc19wcm9wb3NhbCwKICAgIHB1c2hieXRlcyAweDI2OTgzMjAwIC8vIG1ldGhvZCAiaXNfcHJvcG9zYWwodWludDY0KXZvaWQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgc3dhcAogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjE2Ny0xNzMKICAgIC8vICMgd2UgZG9udCBuZWVkIGFueSBlcnJvciBoYW5kbGluZyBoZXJlCiAgICAvLyAjIGlmIGl0cyBpbnZhbGlkIHRoZSB0cmFuc2FjdGlvbiB3aWxsIGZhaWwKICAgIC8vIGFyYzQuYWJpX2NhbGwoCiAgICAvLyAgICAgcmVnaXN0cnlfY29udHJhY3QuWEdvdlJlZ2lzdHJ5LmlzX3Byb3Bvc2FsLAogICAgLy8gICAgIGFyYzQuVUludDY0KHByb3Bvc2FsX2lkKSwKICAgIC8vICAgICBhcHBfaWQ9c2VsZi5yZWdpc3RyeV9hcHBfaWQudmFsdWUsCiAgICAvLyApCiAgICBwdXNoaW50IDYgLy8gYXBwbAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6MTc1LTE3NwogICAgLy8gc3RhdHVzLCBleGlzdHMgPSBBcHBHbG9iYWwuZ2V0X2V4X3VpbnQ2NCgKICAgIC8vICAgICBwcm9wb3NhbF9pZCwgQnl0ZXMocHJvcG9zYWxfY2ZnLkdTX0tFWV9TVEFUVVMpCiAgICAvLyApCiAgICBkaWcgMgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6MTc2CiAgICAvLyBwcm9wb3NhbF9pZCwgQnl0ZXMocHJvcG9zYWxfY2ZnLkdTX0tFWV9TVEFUVVMpCiAgICBwdXNoYnl0ZXMgMHg3Mzc0NjE3NDc1NzMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjE3NS0xNzcKICAgIC8vIHN0YXR1cywgZXhpc3RzID0gQXBwR2xvYmFsLmdldF9leF91aW50NjQoCiAgICAvLyAgICAgcHJvcG9zYWxfaWQsIEJ5dGVzKHByb3Bvc2FsX2NmZy5HU19LRVlfU1RBVFVTKQogICAgLy8gKQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjE3OQogICAgLy8gYXNzZXJ0IGV4aXN0cywgZXJyLklOVkFMSURfUFJPUE9TQUwKICAgIGFzc2VydCAvLyBJbnZhbGlkIHByb3Bvc2FsCiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToxODAKICAgIC8vIGFzc2VydCBzdGF0dXMgPT0gcHJvcG9zYWxfZW5tLlNUQVRVU19BUFBST1ZFRCwgZXJyLldST05HX1BST1BPU0FMX1NUQVRVUwogICAgcHVzaGludCAzMAogICAgPT0KICAgIGFzc2VydCAvLyBXcm9uZyBQcm9wb3NhbCBTdGF0dXMgb3IgZmluYWxpemVkCiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToxODQKICAgIC8vIGFkZHJlc3M9VHhuLnNlbmRlciwKICAgIHR4biBTZW5kZXIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjE4My0xODYKICAgIC8vIHR5cC5Db3VuY2lsVm90ZSgKICAgIC8vICAgICBhZGRyZXNzPVR4bi5zZW5kZXIsCiAgICAvLyAgICAgYmxvY2s9YmxvY2ssCiAgICAvLyApCiAgICBieXRlY18zIC8vIDB4MDAKICAgIGludGNfMCAvLyAwCiAgICB1bmNvdmVyIDMKICAgIHNldGJpdAogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToxODItMTg3CiAgICAvLyBzZWxmLnZvdGVzW3Byb3Bvc2FsX2lkXSA9IGFyYzQuRHluYW1pY0FycmF5KAogICAgLy8gICAgIHR5cC5Db3VuY2lsVm90ZSgKICAgIC8vICAgICAgICAgYWRkcmVzcz1UeG4uc2VuZGVyLAogICAgLy8gICAgICAgICBibG9jaz1ibG9jaywKICAgIC8vICAgICApCiAgICAvLyApCiAgICBwdXNoYnl0ZXMgMHgwMDAxCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGRpZyAxCiAgICBkdXAKICAgIGJveF9kZWwKICAgIHBvcAogICAgc3dhcAogICAgYm94X3B1dAoKdm90ZV9hZnRlcl9pZl9lbHNlQDE2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6MTQ4CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKdm90ZV9lbHNlX2JvZHlANDoKICAgIGJ1cnkgMQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6MTkwCiAgICAvLyBoYWxmX3BsdXNfb25lID0gKHNlbGYubWVtYmVyX2NvdW50LnZhbHVlIC8vIDIpICsgMQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzAgLy8gMHg2ZDY1NmQ2MjY1NzI1ZjYzNmY3NTZlNzQKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5tZW1iZXJfY291bnQgZXhpc3RzCiAgICBpbnRjXzIgLy8gMgogICAgLwogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGJ1cnkgNQogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6MTkxCiAgICAvLyBhcHByb3ZhbHMgPSBVSW50NjQoMCkgaWYgYmxvY2sgZWxzZSBVSW50NjQoMSkKICAgIGR1cAogICAgIQogICAgZHVwCiAgICBjb3ZlciAyCiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToxOTIKICAgIC8vIHJlamVjdGlvbnMgPSBVSW50NjQoMCkgaWYgbm90IGJsb2NrIGVsc2UgVUludDY0KDEpCiAgICAhCiAgICBidXJ5IDUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjE5NAogICAgLy8gZm9yIGkgaW4gdXJhbmdlKHNlbGYudm90ZXNbcHJvcG9zYWxfaWRdLmxlbmd0aCk6CiAgICBkaWcgMgogICAgaW50Y18wIC8vIDAKICAgIGludGNfMiAvLyAyCiAgICBib3hfZXh0cmFjdAogICAgYnRvaQogICAgc3dhcAogICAgaW50Y18wIC8vIDAKCnZvdGVfZm9yX2hlYWRlckA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6MTk0CiAgICAvLyBmb3IgaSBpbiB1cmFuZ2Uoc2VsZi52b3Rlc1twcm9wb3NhbF9pZF0ubGVuZ3RoKToKICAgIGR1cAogICAgZGlnIDMKICAgIDwKICAgIGJ6IHZvdGVfYWZ0ZXJfZm9yQDExCiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToxOTYKICAgIC8vIFR4bi5zZW5kZXIgIT0gc2VsZi52b3Rlc1twcm9wb3NhbF9pZF1baV0uYWRkcmVzcwogICAgdHhuIFNlbmRlcgogICAgZGlnIDEKICAgIHB1c2hpbnQgMzMKICAgICoKICAgIGludGNfMiAvLyAyCiAgICArCiAgICBkaWcgNgogICAgc3dhcAogICAgcHVzaGludCAzMwogICAgYm94X2V4dHJhY3QgLy8gb24gZXJyb3I6IGluZGV4IG91dCBvZiBib3VuZHMKICAgIGR1cAogICAgZXh0cmFjdCAwIDMyCiAgICB1bmNvdmVyIDIKICAgICE9CiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToxOTUtMTk3CiAgICAvLyBhc3NlcnQgKAogICAgLy8gICAgIFR4bi5zZW5kZXIgIT0gc2VsZi52b3Rlc1twcm9wb3NhbF9pZF1baV0uYWRkcmVzcwogICAgLy8gKSwgZXJyLlZPVEVSX0FMUkVBRFlfVk9URUQKICAgIGFzc2VydCAvLyBWb3RlciBhbHJlYWR5IHZvdGVkCiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToxOTkKICAgIC8vIGlmIHNlbGYudm90ZXNbcHJvcG9zYWxfaWRdW2ldLmJsb2NrOgogICAgcHVzaGludCAyNTYKICAgIGdldGJpdAogICAgYnogdm90ZV9lbHNlX2JvZHlAOAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6MjAwCiAgICAvLyByZWplY3Rpb25zICs9IDEKICAgIGRpZyA2CiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgYnVyeSA3Cgp2b3RlX2FmdGVyX2lmX2Vsc2VAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjE5NAogICAgLy8gZm9yIGkgaW4gdXJhbmdlKHNlbGYudm90ZXNbcHJvcG9zYWxfaWRdLmxlbmd0aCk6CiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgYiB2b3RlX2Zvcl9oZWFkZXJANQoKdm90ZV9lbHNlX2JvZHlAODoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjIwMgogICAgLy8gYXBwcm92YWxzICs9IDEKICAgIHVuY292ZXIgMwogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGNvdmVyIDMKICAgIGIgdm90ZV9hZnRlcl9pZl9lbHNlQDkKCnZvdGVfYWZ0ZXJfZm9yQDExOgogICAgcG9wCiAgICBidXJ5IDEKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjIwNgogICAgLy8gYWRkcmVzcz1UeG4uc2VuZGVyLAogICAgdHhuIFNlbmRlcgogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6MjA1LTIwOAogICAgLy8gdHlwLkNvdW5jaWxWb3RlKAogICAgLy8gICAgIGFkZHJlc3M9VHhuLnNlbmRlciwKICAgIC8vICAgICBibG9jaz1ibG9jaywKICAgIC8vICkKICAgIGJ5dGVjXzMgLy8gMHgwMAogICAgaW50Y18wIC8vIDAKICAgIHVuY292ZXIgMwogICAgc2V0Yml0CiAgICBjb25jYXQKICAgIGRpZyAyCiAgICBkdXAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjIwNC0yMDkKICAgIC8vIHNlbGYudm90ZXNbcHJvcG9zYWxfaWRdLmFwcGVuZCgKICAgIC8vICAgICB0eXAuQ291bmNpbFZvdGUoCiAgICAvLyAgICAgICAgIGFkZHJlc3M9VHhuLnNlbmRlciwKICAgIC8vICAgICAgICAgYmxvY2s9YmxvY2ssCiAgICAvLyAgICAgKQogICAgLy8gKQogICAgaW50Y18wIC8vIDAKICAgIGludGNfMiAvLyAyCiAgICBib3hfZXh0cmFjdAogICAgYnRvaQogICAgZGlnIDEKICAgIGJveF9sZW4KICAgIHBvcAogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6MjA0LTIwOQogICAgLy8gc2VsZi52b3Rlc1twcm9wb3NhbF9pZF0uYXBwZW5kKAogICAgLy8gICAgIHR5cC5Db3VuY2lsVm90ZSgKICAgIC8vICAgICAgICAgYWRkcmVzcz1UeG4uc2VuZGVyLAogICAgLy8gICAgICAgICBibG9jaz1ibG9jaywKICAgIC8vICAgICApCiAgICAvLyApCiAgICBwdXNoaW50IDMzCiAgICArCiAgICBkaWcgMgogICAgc3dhcAogICAgYm94X3Jlc2l6ZQogICAgZHVwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToyMDQtMjA5CiAgICAvLyBzZWxmLnZvdGVzW3Byb3Bvc2FsX2lkXS5hcHBlbmQoCiAgICAvLyAgICAgdHlwLkNvdW5jaWxWb3RlKAogICAgLy8gICAgICAgICBhZGRyZXNzPVR4bi5zZW5kZXIsCiAgICAvLyAgICAgICAgIGJsb2NrPWJsb2NrLAogICAgLy8gICAgICkKICAgIC8vICkKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgZGlnIDIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjIwNC0yMDkKICAgIC8vIHNlbGYudm90ZXNbcHJvcG9zYWxfaWRdLmFwcGVuZCgKICAgIC8vICAgICB0eXAuQ291bmNpbFZvdGUoCiAgICAvLyAgICAgICAgIGFkZHJlc3M9VHhuLnNlbmRlciwKICAgIC8vICAgICAgICAgYmxvY2s9YmxvY2ssCiAgICAvLyAgICAgKQogICAgLy8gKQogICAgaW50Y18wIC8vIDAKICAgIHVuY292ZXIgMgogICAgYm94X3JlcGxhY2UKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjIwNC0yMDkKICAgIC8vIHNlbGYudm90ZXNbcHJvcG9zYWxfaWRdLmFwcGVuZCgKICAgIC8vICAgICB0eXAuQ291bmNpbFZvdGUoCiAgICAvLyAgICAgICAgIGFkZHJlc3M9VHhuLnNlbmRlciwKICAgIC8vICAgICAgICAgYmxvY2s9YmxvY2ssCiAgICAvLyAgICAgKQogICAgLy8gKQogICAgcHVzaGludCAzMwogICAgKgogICAgaW50Y18yIC8vIDIKICAgICsKICAgIGludGNfMCAvLyAwCiAgICB1bmNvdmVyIDMKICAgIGJveF9zcGxpY2UKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjIxMQogICAgLy8gaWYgYXBwcm92YWxzID49IGhhbGZfcGx1c19vbmUgb3IgcmVqZWN0aW9ucyA+PSBoYWxmX3BsdXNfb25lOgogICAgZGlnIDQKICAgID49CiAgICBibnogdm90ZV9pZl9ib2R5QDEzCiAgICBkaWcgMgogICAgZGlnIDQKICAgID49CiAgICBieiB2b3RlX2FmdGVyX2lmX2Vsc2VAMTYKCnZvdGVfaWZfYm9keUAxMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjIxMi0yMTMKICAgIC8vICMgdGhpcyB3aWxsIGFsbG93IHRoZSBwcm9wb3NhbCB0byBiZSByZXZpZXdlZAogICAgLy8gYmxvY2sgPSByZWplY3Rpb25zID49IGhhbGZfcGx1c19vbmUKICAgIGRpZyAyCiAgICBkaWcgNAogICAgPj0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjIxNS0yMTcKICAgIC8vIGFyYzQuYWJpX2NhbGwoCiAgICAvLyAgICAgcHJvcG9zYWxfY29udHJhY3QuUHJvcG9zYWwucmV2aWV3LCBibG9jaywgYXBwX2lkPXByb3Bvc2FsX2lkCiAgICAvLyApCiAgICBpdHhuX2JlZ2luCiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToyMTYKICAgIC8vIHByb3Bvc2FsX2NvbnRyYWN0LlByb3Bvc2FsLnJldmlldywgYmxvY2ssIGFwcF9pZD1wcm9wb3NhbF9pZAogICAgYnl0ZWNfMyAvLyAweDAwCiAgICBpbnRjXzAgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGRpZyAyCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIHB1c2hieXRlcyAweDIxMmQ5ZjA3IC8vIG1ldGhvZCAicmV2aWV3KGJvb2wpdm9pZCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6MjE1LTIxNwogICAgLy8gYXJjNC5hYmlfY2FsbCgKICAgIC8vICAgICBwcm9wb3NhbF9jb250cmFjdC5Qcm9wb3NhbC5yZXZpZXcsIGJsb2NrLCBhcHBfaWQ9cHJvcG9zYWxfaWQKICAgIC8vICkKICAgIHB1c2hpbnQgNiAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weToyMTkKICAgIC8vIGRlbCBzZWxmLnZvdGVzW3Byb3Bvc2FsX2lkXQogICAgZHVwCiAgICBib3hfZGVsCiAgICBwb3AKICAgIGIgdm90ZV9hZnRlcl9pZl9lbHNlQDE2CgoKLy8gc21hcnRfY29udHJhY3RzLmNvdW5jaWwuY29udHJhY3QuQ291bmNpbC5nZXRfYnl0ZXNfZnJvbV9yZWdpc3RyeV9jb25maWcoZ2xvYmFsX3N0YXRlX2tleTogYnl0ZXMpIC0+IGJ5dGVzOgpnZXRfYnl0ZXNfZnJvbV9yZWdpc3RyeV9jb25maWc6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weTo2NQogICAgLy8gZGVmIGdldF9ieXRlc19mcm9tX3JlZ2lzdHJ5X2NvbmZpZyhzZWxmLCBnbG9iYWxfc3RhdGVfa2V5OiBCeXRlcykgLT4gQnl0ZXM6CiAgICBwcm90byAxIDEKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBzZWxmLnJlZ2lzdHJ5X2FwcF9pZC52YWx1ZSwgZ2xvYmFsX3N0YXRlX2tleQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzEgLy8gMHg3MjY1Njc2OTczNzQ3Mjc5NWY2MTcwNzA1ZjY5NjQKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5yZWdpc3RyeV9hcHBfaWQgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weTo2Ni02OAogICAgLy8gdmFsdWUsIGV4aXN0cyA9IEFwcEdsb2JhbC5nZXRfZXhfYnl0ZXMoCiAgICAvLyAgICAgc2VsZi5yZWdpc3RyeV9hcHBfaWQudmFsdWUsIGdsb2JhbF9zdGF0ZV9rZXkKICAgIC8vICkKICAgIGZyYW1lX2RpZyAtMQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5OjY5CiAgICAvLyBhc3NlcnQgZXhpc3RzLCBlcnIuTUlTU0lOR19DT05GSUcKICAgIGFzc2VydCAvLyBNaXNzaW5nIENvbmZpZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6NzAKICAgIC8vIHJldHVybiB2YWx1ZQogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLmNvdW5jaWwuY29udHJhY3QuQ291bmNpbC5pc19jb21taXR0ZWVfbWFuYWdlcigpIC0+IHVpbnQ2NDoKaXNfY29tbWl0dGVlX21hbmFnZXI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY291bmNpbC9jb250cmFjdC5weTo3OAogICAgLy8gcmV0dXJuIFR4bi5zZW5kZXIgPT0gQWNjb3VudCgKICAgIHR4biBTZW5kZXIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jb3VuY2lsL2NvbnRyYWN0LnB5Ojc5CiAgICAvLyBzZWxmLmdldF9ieXRlc19mcm9tX3JlZ2lzdHJ5X2NvbmZpZyhCeXRlcyhyZWdfY2ZnLkdTX0tFWV9DT01NSVRURUVfTUFOQUdFUikpCiAgICBwdXNoYnl0ZXMgMHg2MzZmNmQ2ZDY5NzQ3NDY1NjU1ZjZkNjE2ZTYxNjc2NTcyCiAgICBjYWxsc3ViIGdldF9ieXRlc19mcm9tX3JlZ2lzdHJ5X2NvbmZpZwogICAgLy8gc21hcnRfY29udHJhY3RzL2NvdW5jaWwvY29udHJhY3QucHk6NzgtODAKICAgIC8vIHJldHVybiBUeG4uc2VuZGVyID09IEFjY291bnQoCiAgICAvLyAgICAgc2VsZi5nZXRfYnl0ZXNfZnJvbV9yZWdpc3RyeV9jb25maWcoQnl0ZXMocmVnX2NmZy5HU19LRVlfQ09NTUlUVEVFX01BTkFHRVIpKQogICAgLy8gKQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMyAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBBZGRyZXNzIGxlbmd0aCBpcyAzMiBieXRlcwogICAgPT0KICAgIHJldHN1Ygo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CiAEAAECICYEDG1lbWJlcl9jb3VudA9yZWdpc3RyeV9hcHBfaWQBTQEAMRhAABcxNRREMTQkEkQxNxREMTYURCkiZygiZ4AEB47ylTYaAI4BAD0xGRREMRhBACaCBAQZ1wL6BJLr9t4E9/RIHwTb2D3ZNhoAjgQATQBwAJEAAQAjQ4AEJA0vZzYaAI4BAA0AMRmBBBIxGBBEQgAUNhoBSRWBCBJEF0lEKUxnKCJnI0MxAIAMeGdvdl9tYW5hZ2VyiAF+SRUlEkQSRCNDNhoBSRUlEkSIAXZEKkxQSb1FARREgAC/IihlRCMIKExnI0M2GgFJFSUSRIgBU0QqTFBJvUUBRLxIIihlRCMJKExnI0OAAEk2GgFHAhWBCBJEF0lOAjYaAkkVIxJEIlNMKjEAUL1FAUQWgAFWTFBJTgO9RQFAAEGxIillRLIYgAQmmDIAshpMshqBBrIQIrIBs0sCgAZzdGF0dXNlRIEeEkQxACsiTwNUUIACAAFMUEsBSbxITL8jQ0UBIihlRCQKIwhFBUkUSU4CFEUFSwIiJLoXTCJJSwMMQQAyMQBLAYEhCyQISwZMgSG6SVcAIE8CE0SBgAJTQQALSwYjCEUHIwhC/9BPAyMITgNC//JIRQExACsiTwNUUEsCSSIkuhdLAb1IgSEISwJM00kjCBZXBgJLAiJPAruBIQskCCJPA9JLBA9AAAhLAksED0H/aEsCSwQPsSsiTwJUSwKyGIAEIS2fB7IashqBBrIQIrIBs0m8SEL/QYoBASIpZUSL/2VEiTEAgBFjb21taXR0ZWVfbWFuYWdlcoj/3EkVJRJEEok=", "clear": "CoEBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 10, "patch": 1 } }, "events": [], "templateVariables": {} }